ZGlmZiAtLWdpdCBhL0FHRU5ULnR4dCBiL0FHRU5ULnR4dAppbmRleCA0ZDhkMzIzLi4zN2ViMjc5IDEwMDY0NAotLS0gYS9BR0VOVC50eHQKKysrIGIvQUdFTlQudHh0CkBAIC00MTgsMTQgKzQxOCwxNiBAQAogCiAgICAqIGEgbWFnaWMgbnVtYmVyICh0aGUgI2RlZmluZWQgaW50ZWdlciBjb25zdGFudCBkZXNjcmliZWQgYWJvdmUpCiAgICAqIGEgdHlwZSBpbmRpY2F0b3IgKGZyb20gdGhlIHZhbHVlcyBsaXN0ZWQgaW4gPHNubXBsaWIvc25tcF9pbXBsLmg+KQotICAgKiBhbiBhY2Nlc3MgaW5kaWNhdG9yIChlc3NlbnRpYWxseSBSV1JJVEUgb3IgUk9OTFkpCisgICAqIGFuIGFjY2VzcyBpbmRpY2F0b3IgKGVzc2VudGlhbGx5IE5FVFNOTVBfT0xEQVBJX1JXUklURSBvcgorICAgICBORVRTTk1QX09MREFQSV9ST05MWSkKICAgICogdGhlIG5hbWUgb2YgdGhlIHJvdXRpbmUgdXNlZCB0byBoYW5kbGUgdGhpcyBlbnRyeQogICAgKiB0aGUgbGVuZ3RoIG9mIHRoZSBPSUQgc3VmZml4IHVzZWQsIGFuZAogICAgKiBhbiBhcnJheSBvZiBpbnRlZ2VycyBzcGVjaWZ5aW5nIHRoaXMgc3VmZml4IChtb3JlIG9uIHRoaXMgaW4gYSBtb21lbnQpCiAKIFRodXMgYSB0eXBpY2FsIHZhcmlhYmxlIGVudHJ5IHdvdWxkIGxvb2sgbGlrZToKIAotICAgICAgICB7IEVYQU1QTEVTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXhhbXBsZSwgMSwgezF9fQorICAgICAgICB7IEVYQU1QTEVTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9leGFtcGxlLCAxLCB7MX19CiAKIElmIHRoZSBtYWdpYyBudW1iZXJzIGhhdmUgbm90IGJlZW4gZGVmaW5lZCBpbiB0aGUgaGVhZGVyIGZpbGUsIHRoZW4gdGhleQogc2hvdWxkIGJlIGRlZmluZWQgaGVyZSwgdXN1YWxseSBjb21taW5nIGltbWVkaWF0ZWx5IGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZwpkaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKaW5kZXggOGQ5Njc0Ny4uNzJjNTIzMyAxMDA2NDQKLS0tIGEvQ0hBTkdFUworKysgYi9DSEFOR0VTCkBAIC0xLDEzNyArMSwzMTggQEAKIFRoaXMgZmlsZSBjb250YWlucyBhIGxpc3Qgb2Ygc3BlY2lmaWMgYnVncyB0aGF0IGhhdmUgYmVlbiBmaXhlZCwgYW5kIHBhdGNoZXMKIHRoYXQgaGF2ZSBiZWVuIGFwcGxpZWQgaW4gcmVsZWFzZWQgdmVyc2lvbnMuICBQbGVhc2Ugc2VlIHRoZSBORVdTIGZpbGUgZm9yCiBhIHN1bW1hcnkgb2YgdGhlIG1ham9yIGNoYW5nZXMsIGFuZCB0aGUgQ2hhbmdlTG9nIGZpbGUgZm9yIGEgY29tcHJlaGVuc2l2ZQotbGlzdGluZyBvZiBhbGwgY2hhbmdlcyBtYWRlIHRvIHRoZSBjb2RlLiAKLSAgICAgIAotKiA1LjQuNCAqCitsaXN0aW5nIG9mIGFsbCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvZGUuCisKKworKjUuNS4yKgogCiAgICAgc25tcGxpYjoKLSAgICAgIC0gW0JVRyAzMTM0MzIzXTogRml4IGNyYXNoIHdoZW4gY29tcGFyaW5nIGludmFsaWQgT0lEcwotICAgICAgLSBbQlVHIDMxNzE4NzhdOiBVc2luZyBTTk1QdjMgY29udGV4dCBkb2VzIG5vdCB3b3JrCi0gICAgICAtIFtCVUcgMzE4Mjk4NV06IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKLSAgICAgIC0gW0JVRyAzMjM0NzU0XTogRW5zdXJlIG9sZCBmX2NyZWF0ZV9mcm9tX3RzdHJpbmcgaG9vayBpcyBpbml0aWFsaXplZCB0byBOVUxMCi0gICAgICAtIFtCVUcgMzI2NDg1Ml06IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcwotICAgICAgLSBbUEFUQ0ggMzA1ODY0NV06IFVzZSBNU0dfRE9OVFdBSVQgZm9yIHRoZSB1bml4IGRvbWFpbiBzb2NrZXQKLSAgICAgIC0gW1BBVENIIDMwNjc1NDBdOiBGaXggSVB2NCBPSUQgaW5kZXhlcyBvbiA2NC1iaXQgYmlnLWVuZGlhbiBzeXN0ZW1zCi0gICAgICAtIFtQQVRDSCAzMTY1ODc4XTogQ2F0Y2ggYnVmZmVyIG92ZXJydW4gb24gNjQtYml0IHN5c3RlbXMKKyAgICAgIC0gW1BBVENIIDI4MzU1NzddOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KICAgICAgIC0gW1BBVENIIDMxODMwMDBdOiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRCBwcmVmaXggbGVuZ3RoCi0gICAgICAtIEFkZGVkIHB1YmxpYyBkZWNsYXJhdGlvbiBmb3IgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpCi0gICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkuCi0gICAgICAtIEFkZGVkIGZ1bmN0aW9uIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpCi0gICAgICAtIEFkZGVkIG1hY3JvIG5ldHNubXBfc3RhdGljX2Fzc2VydCgpCi0gICAgICAtIEF2b2lkIFZhbGdyaW5kIGNvbXBsYWludHMgYWJvdXQgdW5pbml0aWFsaXplZCBkYXRhCi0gICAgICAtIENoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2Ygc3RyZHVwIGluIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgLSBGaXggZG91YmxlLWZyZWUgY3Jhc2ggd2hlbiByZWxlYXNpbmcgZHVwbGljYXRlZCBoYW5kbGVycwotICAgICAgLSBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHNubXBfZnJlZV9zZXNzaW9uKCkKLSAgICAgIC0gRml4ZWQgbWVtb3J5IGNvcnJ1cHRpb24gdHJpZ2dlcmVkIGJ5IHNubXBkLmNvbmYgImVudW0iIGtleXdvcmQKLSAgICAgIC0gRml4ZWQgYnVncyBpbiBidWlsZGluZy9wYXJzaW5nIDY0LWJpdCBpbnRlZ2VycwotICAgICAgLSBGaXhlZCBsZWFrcy1hdC1leGl0IHRyaWdnZXJlZCBieSB1c2luZyB0aGUgc25tcF9lbnVtIGNvZGUKLSAgICAgIC0gRml4ZWQgbWVtb3J5IGxlYWsgaW4gbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSgpCi0gICAgICAtIEZpeGVkIG1lbW9yeSBsZWFrIHRyaWdnZXJlZCBieSBkdXBsaWNhdGUgc2VfYWRkX3BhaXJfdG9fbGlzdCgpCi0gICAgICAtIEZpeCBpc3N1ZSB3aXRoIFVTTSB1c2luZyBpbmFjdGl2ZSB1c2VycwotICAgICAgLSBGaXhlZCBwb3RlbnRpYWwgYnVmZmVyIG92ZXJmbG93IHdoZW4gZ2VuZXJhdGluZyB0ZW1wIGZpbGUgbmFtZXMKLSAgICAgIC0gSW52b2tpbmcgc2VfY2xlYXJfc2xpc3QoKSBubyBsb25nZXIgY3JlYXRlcyBhIGRhbmdsaW5nIHBvaW50ZXIKLSAgICAgIC0gVXNlIHJlYWxsb2MraW5pdCBpbnN0ZWFkIG9mIGNhbGxvYworICAgICAgLSBbUEFUQ0ggMzUyNjU5OV06IERvbid0IGhhbmcgb24gcmV0cmllZCBmYWlsaW5nIFNOTVB2MyByZXNwb25zZXMKKyAgICAgIC0gQXZvaWQgdW5uZWNlc3NhcnkgY2FzdHMgd2hlbiB1c2luZyBuZXRzbm1wX3NldF9yb3dfY29sdW1uKCkKKyAgICAgIC0gRGVjbGFyZSAidHlwZSIgYXJndW1lbnQgb2Ygc2Vfc3RvcmVfeHh4KCkgYXMgY29uc3QKKyAgICAgIC0gTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorICAgICAgLSBQcmV2ZW50IGdjYyBwZWQtd2FybmluZyBmb3IgTkVUU05NUF9SRU1PVkVfQ09OU1QKKyAgICAgIC0gU2ltcGxpZnkgaW1wbGVtZW50YXRpb24gb2YgZnVuY3Rpb25zIG1hbmlwdWxhdGluZyA2NC1iaXQgbnVtYmVycy4KKyAgICAgIC0gU2ltcGxpZnkgdGhlIHNlX3N0b3JlX2VudW1fbGlzdCgpIGltcGxlbWVudGF0aW9uCiAKICAgICBzbm1wZDoKLSAgICAgIC0gW0JVRyAxODQwMjMwXTogRG9uJ3QgaW5jbHVkZSBubG1Mb2dWYXJpYWJsZUluZGV4IGFzIChwc2V1ZG8tKWFjY2Vzc2luZyBjb2x1bW4KLSAgICAgIC0gW0JVRyAyOTcyNTc5XTogZml4ZWQgY2hlY2tpbmcgb2Ygc25tcFRhcmdldEFkZHJSb3dTdGF0dXMgU0VUIHJlcXVlc3RzCi0gICAgICAtIFtCVUcgMzAwMzk4MV06IFByb3RlY3QgYWdhaW5zdCBjb25maWcgcGFyc2luZyBidWZmZXIgb3ZlcmZsb3cKLSAgICAgIC0gW0JVRyAzMDE5MjQzXTogUmVnaXN0ZXIgZXhlY0ZpeCBjb21wYXRhYmlsaXR5IGRpcmVjdGl2ZSBjb3JyZWN0bHkKLSAgICAgIC0gW0JVRyAzMDU4MTAxXTogV3JpdGVhYmxlICdpbnQnIGluc3RhbmNlcyBkb24ndCB3b3JrIG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtCVUcgMzQzOTIzNF06IENvcnJlY3QgZGVwZW5kZW5jaWVzIG9mIHVjZC1zbm1wL3twYXNzLHBhc3NfcGVyc2lzdH0KKyAgICAgIC0gW0JVRyAzNDM5MjM0XTogTW92ZSBuZXRzbm1wX3Bhc3Nfc3RyX3RvX2Vycm5vIHRvIHBhc3NfY29tbW9uCisgICAgICAtIFtCVUcgMzQ0MDc1Ml06IFJlcG9ydCBzcGVlZCBjb3JyZWN0bHkgZm9yIHVudXN1YWwgRSduZXQgaW50ZXJmYWNlcworICAgICAgLSBbQlVHIDM0NjM3NjddOiBIYW5kbGUgcGFyc2luZyBzdWJpZGVudGlmaWVycyA+IDJeMzEKKyAgICAgIC0gW0JVRyAzNTI2NTQ5XTogQ1ZFLTIwMTItMjE0MSBBcnJheSBpbmRleCBlcnJvciBsZWFkaW5nIHRvIGNyYXNoCisgICAgICAtIFtCVUcgMzUzMjA5MF06IEZpeCBoaWdoIGlmSW5kZXggdmFsdWVzIGNyYXNoaW5nIGhyRGV2aWNlRGVzY3IKKyAgICAgIC0gW1BBVENIIDMxNzU2NDBdOiBVc2UgSVBfUkVDVkRTVEFERFIgc29ja29wdCB3aGVyZSBhdmFpbGFibGUgKCpCU0QpCisgICAgICAtIFtQQVRDSCAzMTk4NzgxXTogRml4IGNvbXBpbGF0aW9uIG9mIGRpc21hbi97cGluZyx0cmFjZXJvdXRlfSBtb2R1bGVzCisgICAgICAtIFtQQVRDSCAzNDAyMzc2XTogUmVjb2duaXNlIFJlaXNlckZTIHN5c3RlbXMKKyAgICAgIC0gW1BBVENIIDM0MTAwNTBdOiBTa2lwIGFscmVhZHktJ3Byb2Nlc3NlZCcgdmFyYmluZHMKKyAgICAgIC0gW1BBVENIIDM0MTAwNTldOiBGaXggc3BhcnNlbHkgYXVnbWVudGluZyB0cmlnZ2VyIHRhYmxlcworICAgICAgLSBbUEFUQ0ggMzQ0NzQ0NF06IEZpeCBTSUdfUElQRSBoYW5kbGluZworICAgICAgLSBbUEFUQ0ggMzQ0NzY3MV06IEZpeCBvdmVycmlkZSBoYW5kbGluZyBvZiBPSUQgdmFsdWVzCisgICAgICAtIFtQQVRDSCAzNDUzODY4XTogRmFjdG9yIGNvbW1vbiBjb2RlIGludG8gcGFzc19jb21tb24KKyAgICAgIC0gW1BBVENIIDM0Nzk3NDBdOiBGaXggaHJTV1J1blBlcmYgc3RhdGlzdGljcworICAgICAgLSBbUEFUQ0ggMzQ4NzkxOV06IEZpeCBjb21waWxhdGlvbiB3aGVuIGNhY2hpbmcgaXMgZGlzYWJsZWQKKyAgICAgIC0gW1BBVENIIDM0ODc4NjddOiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQorICAgICAgLSBbUEFUQ0ggMzQ5NTY5N106IFN0b3JlIHBlcnNpc3RlbnQgc25tcFRhcmdldCB0YWJsZSBjaGFuZ2VzCisgICAgICAtIEFkZGVkIE9DRlMyIChPcmFjbGUgQ2x1c3RlciBGUykgdG8gaHJTdG9yYWdlVGFibGUgYW5kIGhyRlNUYWJsZQorICAgICAgLSBESVNNQU4tU0NIRURVTEVSLU1JQjogSGFuZGxlIDMyLWNoYXIgY29udGV4dE5hbWUgdmFsdWVzIGNvcnJlY3RseS4KKyAgICAgIC0gSUYtTUlCOjppZlR5cGU6IFJlcG9ydCBJbmZpbmlCYW5kIGludGVyZmFjZXMgY29ycmVjdGx5CisgICAgICAtIFVEUC1NSUI6IFJlcG9ydCBwcm9wZXIgYWRkcmVzcyBpbiB1ZHBMb2NhbEFkZHJlc3MgaW5zdGVhZCBvZiAwLjAuMC4wLgorICAgICAgLSBFbGltaW5hdGUgdmFyaW91cyBkZWFkIHZhcmlhYmxlcworICAgICAgLSBSZXR1cm4gZXJyb3IgaW5zdGVhZCBvZiBleGl0aW5nIG9uIGluaXQgcHJvYmxlbXMKKyAgICAgIC0gTWFrZSB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgZGxtb2QgbW9kdWxlIGZhaWwgcmF0aGVyIHRoYW4KKwlnZW5lcmF0ZSBhIGR1bW15IG1vZHVsZSBpZiB0aGUgZGxvcGVuIGZ1bmN0aW9uIGlzbid0IGF2YWlsYWJsZS4KKyAgICAgIC0gU211eDogc2ltcGxpZnkgc211eF9saXN0X2RldGFjaCgpCisKKyAgICBzbm1wZHg6CisgICAgICAtIFtQQVRDSCAzNDQ1NDM3XTogTG9nIEFnZW50WCBkaXNjb25uZWN0aW9ucyAoaW4gbGluZSB3aXRoIGNvbm5lY3Rpb25zKQorCisgICAgc25tcHRyYXBkOgorICAgICAgLSBBZGQgbWlzc2luZyBuZXdsaW5lIGNoYXJhY3RlciBpbiBhIGxvZyBtZXNzYWdlCisgICAgICAtIEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQorICAgICAgLSBJbnZva2Ugc2h1dGRvd25fcGVybCgpIHdoZW4gc2h1dHRpbmcgZG93bgorICAgICAgLSBEb24ndCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gU0lHVEVSTSBoYW5kbGVyCisgICAgICAtIEhhbmRsZSBjaGFuZ2VzIHRvIGxpYm15c3FsY2xpZW50IEFQSSAoYWZmZWN0cyBGZWRvcmEgMTUvMTYpCisKKyAgICBhcHBzIDoKKyAgICAgIC0gW1BBVENIIDI4MzU1NzddOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KKworICAgIG1pYjJjOgorICAgICAgLSBbUEFUQ0ggMzIxMTQ4NF06IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcworCisgICAgcGVybDoKKyAgICAgIC0gRWxpbWluYXRlIHZhcmlvdXMgZGVhZCB2YXJpYWJsZXMKKyAgICAgIC0gRml4IHNwZWxsaW5nIGluIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBTTk1QIG1vZHVsZQorICAgICAgLSBGaXhlZCBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmYWlscy4KKyAgICAgIC0gTWFrZSBzdXJlIGNvbnN0YW50IFNOTVBfREVGQVVMVF9SRVRSSUVTIGlzIHJlY29nbml6ZWQKKyAgICAgIC0gQWRkIGNvbnN0YW50cyBORVRTTk1QX0NBTExCQUNLX09QX3tSRUNFSVZFRF9NRVNTQUdFLFRJTUVEX09VVH0KKworICAgIHB5dGhvbjoKKyAgICAgIC0gW1BBVENIIDMxODUwODVdOiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKworICAgIEJ1aWxkL2luc3RhbGw6CisgICAgICAtIEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzCisKKyAgICBtYW46CisgICAgICAtIFtCVUcgMzE5MDcyNV06IERvY3VtZW50IHNubXB7LF9zZXNzfXN5bmNoX3Jlc3BvbnNlICYgc25tcF9hc3luY19zZW5kCisKKyAgICB0ZXN0aW5nOgorICAgICAgLSBGaXggUGVybCByZWdyZXNzaW9uIHRlc3QgZmFpbHVyZXMKKyAgICAgIC0gRG9uJ3QgZmFpbCBza2lwcGVkIFBlcmwgdGVzdHMuCisKKyAgICBCU0Q6CisgICAgICAtIFtQQVRDSCAzMzgzOTY1XTogRml4IGlmLW1pYiBhZ2VudCBjb21waWxlIHdhcm5pbmdzIG9uICpCU0QKKworICAgIEZyZWVCU0Q6CisgICAgICAtIFtQQVRDSCAzNDg5Mzg3XTogSW5zdGFsbCBGcmVlQlNEIDEwIGhlYWRlciBmaWxlIChwbHVzIG90aGVyIG1pc3NpbmcgdmVyc2lvbnMpCisgICAgTGludXg6CisgICAgICAtIFtQQVRDSCAzNTI1OTk4XTogRG9uJ3QgdXNlIGFuIHVuaW5pdGlhbGlzZWQgdmFsdWUgaW4gZXJyb3IgbWVzc2FnZQorCisgICAgTWluR1c6CisgICAgICAtIEF2b2lkICJwcmFnbWEgY29tbWVudCIgd2FybmluZ3MgaW4gPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorICAgICAgLSBIZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IG5vdyB1c2FibGUgd2l0aCBNaW5HVworICAgICAgLSBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgV2luZG93cyByZWdpc3RyeSBzZXR0aW5ncworCisgICAgV2luZG93czoKKyAgICAgIC0gQXZvaWQgcHJvYmxlbXMgaWYgTmV0LVNOTVAgUGVybCBtb2R1bGVzIGFyZSBidWlsdCB3aXRoIGEgZGlmZmVyZW50CisgICAgICAgIHZlcnNpb24gb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiB0aGF0IHVzZWQgZm9yIEFjdGl2ZVBlcmwKKyAgICAgIC0gQXZvaWQgcHJvYmxlbXMgd2l0aCBQQUNLQUdFXyogbWFjcm9zLCB3aGVuIHVzaW5nIEdOVSBhdXRvdG9vbHMKKyAgICAgIC0gTm93IGJ1aWxkcyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlcgorICAgICAgLSBidWlsZC5iYXQ6IEdlbmVyYXRlIFBEQiBmaWxlcyBpbiByZWxlYXNlIG1vZGUKKyAgICAgIC0gYnVpbGQuYmF0OiBJbnN0YWxsIG5ldHNubXAuZGxsIGJlZm9yZSBydW5uaW5nIFBlcmwgcmVncmVzc2lvbiB0ZXN0cworICAgICAgLSBNYWtlIGxpbmtpbmcgd2l0aCByZWNlbnQgT3BlblNTTCBiaW5hcmllcyBzdWNjZWVkLgorICAgICAgLSBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHJvYnVzdCBhZ2FpbnN0IG1lbWFsbG9jIGZhaWx1cmVzLgorICAgICAgLSBQZXJsIG1vZHVsZXMgYnVpbGQgbm93IHdpdGggSVB2NiBlbmFibGVkLgorICAgICAgLSBTbm1wZDogUmVtb3ZlIGRsbW9kCisgICAgICAtIFNubXB0cmFwZDogTWFrZSB0aGUgSVAgYWRkcmVzcyB0byBob3N0bmFtZSBjb252ZXJzaW9uIHdvcmsKKworCisqNS41LjEqCisKKyAgICBzbm1wbGliOgorICAgICAgLSBbQlVHIDI4MzgyNDNdOiBDb3JyZWN0IHRoZSBvdXRwdXQgb2YgdW5zaWduZWQgdmFsdWVzCisgICAgICAtIFtCVUcgMjkxOTMyMF06IEF2b2lkIGFjY2Vzc2luZyBmcmVlZCBtZW1vcnkgUmVwb3J0ZWQgYnkgVG9tYXN6IExpcworICAgICAgLSBbQlVHIDI5MjIzOTBdOiBGaXggdGVzdCBmb3IgbWlzc2luZyBjb250ZXh0TmFtZSBwYXJhbWV0ZXIKKyAgICAgIC0gW0JVRyAzMDkzMTk5XTogRml4ZWQgYnVncyBpbiA2NC1iaXQgaW50ZWdlciBwYXJzaW5nCisgICAgICAtIFtCVUcgMzEzNDMyM106IEZpeCBjcmFzaCB3aGVuIGNvbXBhcmluZyBpbnZhbGlkIE9JRHMKKyAgICAgIC0gW0JVRyAzMTcxODc4XTogVXNpbmcgU05NUHYzIGNvbnRleHQgZG9lcyBub3Qgd29yaworICAgICAgLSBbUEFUQ0ggMjg3MTc0N106IHBsdWcgbWVtb3J5IGxlYWsgaW4gT0lEIHByb2Nlc3NpbmcKKyAgICAgIC0gW1BBVENIIDI5NTIxNDBdOiBGaXggb3ZlcmZsb3cgb2YgY291bnRlcjMyIGFuZCBnYXVnZTMyIG9uIDY0Yml0IHN5c3RlbXMKKyAgICAgIC0gW1BBVENIIDI5NzEyNzBdOiByZWZ1c2UgdG8gcGFyc2UgQVNOLjEgdG9rZW5zIHdpdGggd3JvbmcgdHlwZSBmaWVsZAorICAgICAgLSBbUEFUQ0ggMzA2NzU0MF06IEZpeCBJUHY0IE9JRCBpbmRleGVzIG9uIDY0LWJpdCBiaWctZW5kaWFuIHN5c3RlbXMuCisgICAgICAtIFtQQVRDSCAzMDU4NjQ1XTogVXNlIE1TR19ET05UV0FJVCBmb3IgdGhlIHVuaXggZG9tYWluIHNvY2tldAorICAgICAgLSBbUEFUQ0ggMzE2NTg3OF06IENhdGNoIGJ1ZmZlciBvdmVycnVuIG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtQQVRDSCAzMjAzODA2XTogQWRkIGZ1bmN0aW9uIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdCgpCisgICAgICAtIEFkZGVkIGZ1bmN0aW9uIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KCkKKyAgICAgIC0gQWRkZWQgbmV0c25tcF94eHgoKSBtZW1vcnkgYWxsb2NhdGlvbiBmdW5jdGlvbnMKKyAgICAgIC0gQWRkZWQgbWFjcm8gbmV0c25tcF9zdGF0aWNfYXNzZXJ0KCkuCisgICAgICAtIEFkZGVkIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCgpLgorICAgICAgLSBBdm9pZCBWYWxncmluZCBjb21wbGFpbnRzIGFib3V0IHVuaW5pdGlhbGl6ZWQgZGF0YQorICAgICAgLSBDaGFuZ2UgdGhlIHBhcnNpbmcgb2YgcmFuZ2VzIHRvIGFjY2VwdCBhbGwgdmFsaWQgdmFsdWVzLgorICAgICAgLSBGaXggX19jcGx1c3BsdXMgZXh0ZXJuICJDIiB3cmFwcGluZworICAgICAgLSBGaXggYWdlbnQgY3Jhc2ggd2hlbiBzZW5kaW5nIGVuY3J5cHRlZCBTTk1QdjMgdHJhcHMuCisgICAgICAtIEZpeCBkb3VibGUgZnJlZSBjcmFzaCB3aGVuIHJlbGVhc2luZyBkdXBsaWNhdGVkIGhhbmRsZXJzCisgICAgICAtIEZpeCBkdXBsaWNhdGUgc2VfYWRkX3BhaXJfdG9fbGlzdCgpIG1lbW9yeSBsZWFrCisgICAgICAtIEZpeCBpc3N1ZSB3aXRoIFVTTSB1c2luZyBpbmFjdGl2ZSB1c2VycworICAgICAgLSBGaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGdlbmVyYXRpbmcgdGVtcC4gZmlsZSBuYW1lcworICAgICAgLSBGaXggdmFyaW91cyBwcm9ibGVtcyB3aXRoIHNlX2NsZWFyX3NsaXN0KCkKKyAgICAgIC0gRm9yY2UgYSA7IGF0IHRoZSBlbmQgb2YgdGhlIHN0YXRpY19hc3NlcnQgbWFjcm8uCisgICAgICAtIEhhbmRsZSBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcyBpbiBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QKKyAgICAgIC0gTWFrZSBzdXJlIHRoYXQgYSBtYXNrIGlzIGdpdmVuIHRvIG9wZW4gd2hlbiBPX0NSRUFUIGlzIHNwZWNpZmllZAorCisgICAgc25tcGQ6CisgICAgICAtIFtCVUcgMTg0MDIzMF06IERvbid0IGluY2x1ZGUgdGhlIGluZGV4IG9iamVjdCBhcyAocHNldWRvLSlhY2Nlc3NpYmxlIGNvbHVtbgorICAgICAgLSBbQlVHIDI4MjIzNjBdOiBGaXggbWVtb3J5IGxlYWsgd2hlbiBidWlsZGluZyB0YWJsZSBPSURzCisgICAgICAtIFtCVUcgMjg0MTAwOF06IFByb3RlY3QgYWdhaW5zdCBjcmFzaCBmb2xsb3dpbmcgZmFpbGVkIEFnZW50WCByZXNwb25zZQorICAgICAgLSBbQlVHIDI4NzM4NThdOiBGaXggaGFuZGxpbmcgb2Ygc2NoZWRPd25lciBpbmRleAorICAgICAgLSBbQlVHIDI4OTQwNTldOiBIYW5kbGUgZXJyb3JzIHdoZW4gY291bnRpbmcgaW50ZXJmYWNlcworICAgICAgLSBbQlVHIDI4OTcwMDBdOiBTdXBwcmVzcyAzMi1iaXQgY291bnRlciB0cnVuY2F0aW9uIHdhcm5pbmdzCisgICAgICAtIFtCVUcgMjkwMDA3OF06IEFkZCBzdXBwb3J0IGZvciBPSUQgdmFyaWFibGVzIHdpdGggc2l6ZSBpbiBlbGVtZW50cworCSAgICAgICAgICAgICAgIGluc3RlYWQgb2YgYnl0ZXMsIGNvcnJlY3Qgc3lzT2JqZWN0SUQgdG8gdXNlIHRoaXMKKyAgICAgIC0gW0JVRyAyOTI0MTQwXTogRml4IHRlcm1pbmF0aW9uIG9mIENQVS9GUFUgdHlwZXMKKyAgICAgIC0gW0JVRyAyOTcyNTc5XTogRml4IGNoZWNraW5nIG9mIHNubXBUYXJnZXRBZGRyUm93U3RhdHVzIFNFVCByZXF1ZXN0cworICAgICAgLSBbQlVHIDMwMDM5ODFdOiBQcm90ZWN0IGFnYWluc3QgYnVmZmVyIG92ZXJmbG93CisgICAgICAtIFtCVUcgMzA1ODEwMV06IDY0LWJpdCBzeXN0ZW1zIG9ubHkgc3VwcG9ydCB3cml0ZWFibGUgJ2xvbmcnIGluc3RhbmNlcyAobm90IGludCkKICAgICAgIC0gW0JVRyAzMDYyNTM4XTogRml4IGNvbTJzZWMqIGhhbmRsaW5nIG9mIG5vbi1kZWZhdWx0IGNvbnRleHRzCi0gICAgICAtIFtCVUcgMzE1MTg5N106IGZkIGxlYWsgd2l0aCAvcHJvYy9wYXJ0aXRpb25zIHJlYWQgaW4gZGlza2lvCiAgICAgICAtIFtCVUcgMzE3ODM4OV06IEZpeCBpbmNvbnNpc3RlbnQgaGFuZGxpbmcgb2YgVFogb2Zmc2V0cwotICAgICAgLSBbQlVHIDMxODU1MjhdOiBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQgZG9lc24ndCBjbG9zZSBVRFAgc29ja2V0cwotICAgICAgLSBbQlVHIDMzMDUxNTddOiBGaXggaXBBZGRyZXNzUHJlZml4IGhhbmRsaW5nIG9mIElQdjYgYWRkcmVzc2VzCisgICAgICAtIFtCVUcgMzE4NTUyOF06IHNodXRkb3duX21hc3Rlcl9hZ2VudCBkaWRuJ3QgY2xvc2UgVURQIHNvY2tldAogICAgICAgLSBbUEFUQ0ggMjExOTcyNV06IEZpeCBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIGhhbmRsaW5nIG9mIGhyU3RvcmFnZVRhYmxlCiAgICAgICAtIFtQQVRDSCAyODI1NjUzXTogRml4IHNlbmRtYWlsLmNmIHBhcnNpbmcgaW4gY2VydGFpbiBjb25kaXRpb25zCisgICAgICAtIFtQQVRDSCAyODM1NTc2XTogRml4IGVuZGlhbm5lc3MgaXNzdWVzIGluIHBhc3MvcGFzc19wZXJzaXN0CisgICAgICAtIFtQQVRDSCAyODc3NTE4XTogRml4IGhhbmRsaW5nIG9mIHNjb3BlZCBBZ2VudFggdmFyaWFibGVzCisgICAgICAtIFtQQVRDSCAyODgzMTU1XTogRml4IG1lbW9yeSBsZWFrIGluIHByb3h5IGhhbmRsaW5nCisgICAgICAtIFtQQVRDSCAyODgzMjIwXTogRml4IGNvbXBpbGF0aW9uIHByb2JsZW1zIHdoZW4gaWZYVGFibGUgaXMgbm90IGluY2x1ZGVkCisgICAgICAtIFtQQVRDSCAyODg3ODE2XTogUHJvdGVjdCBhZ2FpbnN0IGRpdmlzaW9uLWJ5LXplcm8gY3Jhc2gKKyAgICAgIC0gW1BBVENIIDI5MDEwMjldOiBGaXggY29tcGlsZXIgd2FybmluZyBvbiBDbG9zZUhhbmRsZSgpCisgICAgICAtIFtQQVRDSCAyOTAzMDkyXTogRml4IGJyb2tlbiBoYW5kbGluZyBvZiBicm9hZGNhc3QgZW50cmllcy4KICAgICAgIC0gW1BBVENIIDI5MDQ5MDBdOiBEb2N1bWVudGF0aW9uIHBsdXMgYXNzb3J0ZWQgaGFuZGxlciBjb2RlIGZpeGVzCisgICAgICAtIFtQQVRDSCAyOTExMzIzXTogRml4IGFnZW50IGxvY2t1cCB3aGVuIG1vbml0b3JpbmcgQWdlbnRYLWRlbGVnYXRlZCBpbmZvcm1hdGlvbgogICAgICAgLSBbUEFUQ0ggMjkxMTM2MV06IFJlbW92ZSByZWR1bmRhbnQgdmFyaWFibGVzCisgICAgICAtIFtQQVRDSCAyOTExOTcwXTogUHJvcGVybHkgdGVybWluYXRlIGxpbmtlZCBsaXN0IG9mIHJlZ2lzdHJhdGlvbnMKICAgICAgIC0gW1BBVENIIDI5NDE4MTFdOiBIYW5kbGUgc3VjY2Vzc2Z1bCByZXF1ZXN0cyB3aXRoIHJlcUlEIDAKKyAgICAgIC0gW1BBVENIIDI5Njc0MDBdOiBSZXRyaWV2ZSBlcnJvciBjb3VudGVycyBmb3IgdGhlIEV0aGVyTGlrZS1NSUIKKyAgICAgIC0gW1BBVENIIDI5Njg2NDJdOiBDYXRjaCBvdmVyZmxvdyBvZiBwYXNzLXRocm91Z2ggY29tbWFuZCBidWZmZXIKICAgICAgIC0gW1BBVENIIDI5NzUyNTRdOiBBdm9pZCBjYWxsYmFjayByZS11c2Ugb2YgY2xvc2VkIHNlc3Npb25zCisgICAgICAtIFtQQVRDSCAzMDQ0NTEyXTogRml4IHN5c29iamVjdGlkIGRpcmVjdGl2ZQorICAgICAgLSBbUEFUQ0ggMzA1MzQyOF06IEZpeCBnZXRfcGlkX2Zyb21faW5vZGUgd2hlbiB0aGUgaW5vZGUgaXMgbm90IGZvdW5kCiAgICAgICAtIFtQQVRDSCAzMDUzNDM2XTogRml4IHRjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2VzcyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKLSAgICAgIC0gW1BBVENIIDMwNjI1MjZdOiBGaXggc2VjdXJpdHkgZW5naW5lSUQgc2V0dGluZyBpbiB0aGUgdHJhcHNlc3MgZGlyZWN0aXZlCi0gICAgICAtIFtQQVRDSCAzMDY2ODYyXTogRml4IGNvbXBhcmlzb24gb2YgbGFyZ2UgdW5zaWduZWQgaW5kZXhlcyAoZGlzay9leHRlbmQgdGFibGVzKQorICAgICAgLSBbUEFUQ0ggMzA1ODE0MF06IENoZWNrIHRoYXQgaW5vZGUgaXMgbm9uLXplcm8KKyAgICAgIC0gW1BBVENIIDMwNjI1MjZdOiBGaXggc2VjdXJpdHkgZW5naW5lSUQgc2V0dGluZyBpbiAndHJhcHNlc3MnIGRpcmVjdGl2ZQorICAgICAgLSBbUEFUQ0ggMzA3NDkxOF06IEF2b2lkIG1lbW9yeSBsZWFrcyBmb2xsb3dpbmcgQ09OVEFJTkVSX0lOU0VSVCBmYWlsdXJlcwogICAgICAgLSBbUEFUQ0ggMzA5NjcyNV06IERvbid0IHJlZ2lzdGVyIHYxVHJhcCBjYWxsYmFjaywgaWYgU05NUHYxIG5vdCBzdXBwb3J0ZWQKLSAgICAgIC0gW1BBVENIIDMwOTY3MjVdOiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBOb3RpZmljYXRpb24gTG9nIG1pYgogICAgICAgLSBbUEFUQ0ggMzA5NjcyNV06IEluY2x1ZGUgU05NUHYxIHRyYXAgT0lEcyBpbiBubG1Mb2dOb3RpZmljYXRpb25JRCBjb2x1bW4KLSAgICAgIC0gW1BBVENIIDMxNDE0NjJdOiBGaXggYWdlbnR4IHN1YmFnZW50IGlzc3VlcyB3aXRoIG11bHRpcGxlLW9iamVjdCByZXF1ZXN0cwotICAgICAgLSBbUEFUQ0ggMzE5ODc4MV06IEVuc3VyZSBkaXNtYW4ve3BpbmcsdHJhY2Vyb3V0ZX0gZG8gYXQgbGVhc3QgY29tcGlsZQotICAgICAgLSBbUEFUQ0ggMzI5OTM4NF06IEZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQKKyAgICAgIC0gW1BBVENIIDMwOTY3MjVdOiBzeXNPUlRhYmxlIHJlZ2lzdGF0aW9uIGZvciBub3RpZmljYXRpb24gbG9nIG1pYiAgCisgICAgICAtIFtQQVRDSCAzMTQxNDYyXTogZml4IGFnZW50eCBzdWJhZ2VudCBpc3N1ZXMgd2l0aCBtdWx0aXBsZS1vYmplY3QgcmVxdWVzdHMKKyAgICAgIC0gW1BBVENIIDMxNTI0MTJdOiBIYW5kbGUgKGFuZCByZXBvcnQpIHByb2JsZW1zIHJlYWRpbmcgL3Byb2Mvdm1zdGF0CiAKICAgICAgIC0gQWRkIG5ld2x5IGNyZWF0ZWQvZGVzdHJveWVkIGludGVyZmFjZXMgdG8gaXB2NklmVGFibGUKLSAgICAgIC0gQ2FsbCBzaHV0ZG93bl9tYXN0ZXJfYWdlbnQoKSBhbmQgc2h1dGRvd25fYWdlbnQoKSBkdXJpbmcgc2h1dGRvd24KLSAgICAgIC0gRG9uJ3QgZGVyZWdpc3RlciBjbG9zZWQgc2Vzc2lvbnMKLSAgICAgIC0gRG9uJ3Qgc2Vjb25kLWd1ZXNzIGNhY2hlIGhhbmRsZXIKLSAgICAgIC0gRml4IGNsZWFuX3N1YnRyZWUoKSBtZW1vcnkgaGFuZGxpbmcKLSAgICAgIC0gRml4ZWQgYSBkb3VibGUgZnJlZSwgdHJpZ2dlcmVkIGJ5IGNsZWFuaW5nIHVwIGVtYmVkZGVkIFBlcmwgZGF0YSBzdHJ1Y3R1cmUuCi0gICAgICAtIEZpeGVkIGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvIGlwQWRkcmVzc1RhYmxlCi0gICAgICAtIEZpeGVkIGxvZ2dpbmcgb2YgJ3RydW5jYXRpbmcgaW50ZWdlciB2YWx1ZSA+IDMyIGJpdHMnIGluIHtJUCxUQ1B9LU1JQgotICAgICAgLSBGaXhlZCBJUC1NSUI6OmlwSWZTdGF0c1JlYXNtUmVxZHMgdmFsdWUKLSAgICAgIC0gRml4ZWQgcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBwYXJzaW5nIE9JRHMgaW4gY29uZmlnIGZpbGVzCi0gICAgICAtIEZpeGVkIHJhY2UgY29uZGl0aW9ucyBpbiBoclNXUnVuVGFibGUgYW5kIFVDRCBwclRhYmxlCi0gICAgICAtIEZpeGVkIGFnZW50IGJvZ3VzIDY0LWJpdCB3cmFwIHdhcm5pbmcgKGlwU3lzdGVtU3RhdHMpCi0gICAgICAtIEZpeCBlbmdpbmVpZCBnZW5lcmF0aW9uIG9uIG91dGdvaW5nIHYzIHRyYXBzIGZyb20gdGhlIGFnZW50CisgICAgICAtIERvbid0IGxldCBNSUIgbW9kdWxlcyBzZWNvbmQtZ3Vlc3MgdGhlIGNhY2hlIGhhbmRsZXIKKyAgICAgIC0gRml4IGFkZGluZyBuZXcgYWRkcmVzc2VzIHRvIGlwQWRkcmVzc1RhYmxlCisgICAgICAtIEZpeCBlbmdpbmVJRCBnZW5lcmF0aW9uIG9uIG91dGdvaW5nIHYzIHRyYXBzIGZyb20gdGhlIGFnZW50CisgICAgICAtIEZpeCBlcnJvbmVvdXMgIjY0Yml0IHdyYXAiIHdhcm5pbmdzIHdoZW4gY29tcHV0aW5nIGlwU3lzdGVtU3RhdHMKKyAgICAgIC0gRml4IGludmFsaWQgYWNjZXNzIHRvIG1lbW9yeSBpbiBUQ1AtTUlCCisgICAgICAtIEZpeCBJUC1NSUI6OmlwSWZTdGF0c1JlYXNtUmVxZHMgdmFsdWUgKHR5cG8pCisgICAgICAtIEZpeCBJUHY2IGZvcndhcmRpbmcgTUlCIG9iamVjdCAoYm9vbGVhbiwgbm90IFRydXRoVmFsdWUpCisgICAgICAtIEZpeCByYXJlIHJhY2UgY29uZGl0aW9uIHdoZW4gcmVhZGluZyBSUE0gZGF0YWJhc2UKKyAgICAgIC0gRml4ZWQgcmFjZSBjb25kaXRpb24gaW4gaHJTV1J1blRhYmxlCiAgICAgICAtIEZpeCBWQUNNIHBlcnNpc3RhbnQgc3RvcmFnZS4KLSAgICAgIC0gT3B0aW1pemF0aW9ucyBmb3IgbGFyZ2Ugcm91dGUgdGFibGVzCi0gICAgICAtIFVzZSBjYWNoZS11bmlxdWUgaWQgaW5zdGVhZCBvZiBoYW5kbGVyIG5hbWUgZm9yIHNoYXJlZCBjYWNoZSByZWxvYWQgcHJvdGVjdGlvbgotICAgICAgLSBWYXJpb3VzIE1JQi1zcGVjaWZpYyBsZWFrLWF0LWV4aXQgZml4ZXMuCisgICAgICAtIEZpeCB2YXJpb3VzIG1lbW9yeSAmIGZpbGUtZGVzY3JpcHRvciBsZWFrcworICAgICAgLSBIYW5kbGUgSS9GcyB3aXRob3V0IGJyb2FkY2FzdCBhZGRyZXNzZXMgKElGL0lQLU1JQnMpCisgICAgICAtIEltcHJvdmUgYWdlbnQgc2h1dGRvd24gcHJvY2Vzc2luZworICAgICAgLSBJbXByb3ZlIGVycm9yIGxvZ2dpbmcgd2hlbiBmcmVlaW5nIGFjdGl2ZSBjYWNoZXMKKyAgICAgIC0gTWFrZSBzdXJlIHRoYXQgYSBtYXNrIGlzIGdpdmVuIHRvIG9wZW4gd2hlbiBPX0NSRUFUIGlzIHNwZWNpZmllZAorICAgICAgLSBSZXBvcnQgR0ZTIGZpbGVzeXN0ZW1zIGluIGhyU3RvcmFnZVRhYmxlIGFuZCBockZTVGFibGUKKyAgICAgIC0gUmVwb3J0IHJlYWwgaWZTcGVlZCBvZiAoZG93bikgbmV0d29yayBpbnRlcmZhY2UgKHdoZXJlIHBvc3NpYmxlKQorICAgICAgLSBTa2lwIG5vbi1BRl9JTkVUIGludGVyZmFjZXMgd2hlbiBsb2FkaW5nIGlwdjQgYWRkcnMKKyAgICAgIC0gU3VwcG9ydCBOL1cgaW50ZXJmYWNlcyB3aXRoIEhXIGFkZHJlc3MgPjYgYnl0ZXMgKGUuZy4gSW5maW5pQmFuZCkKKyAgICAgICAgaW4gaXBOZXRUb01lZGlhVGFibGUgYW5kIGlwTmV0VG9QaHlzaWNhbFRhYmxlLgorICAgICAgLSBTdXBwb3J0IHZpZXdzIHdpdGggaW5kZXhlcyB2YWx1ZXM+MjU1CisgICAgICAtIFN1cHByZXNzIDMyLWJpdCB0cnVuY2F0aW9uIHdhcm5pbmdzIChJUC1NSUIgJiBUQ1AtTUlCKQorICAgICAgLSBTdXBwcmVzcyBtaXNzaW5nIGlxdWVyeVNlY05hbWUgd2FybmluZyBpZiBpdCB3b24ndCBiZSBuZWVkZWQKIAotICAgIHNubXB0cmFuc2xhdGU6Ci0gICAgICAtIEZpeGVkIHByaW50aW5nIG9mIHJhbmdlcyB3aXRoIFVOU0lHTkVEIHR5cGUKKyAgICBzbm1wZHg6CisgICAgICAtIGNoYW5nZWQgZGVmYXVsdCBUQ1AgdGFyZ2V0IGZyb20gMC4wLjAuMDo3MDUgdG8gbG9jYWxob3N0OjcwNQogCiAgICAgc25tcHRyYXBkOgogICAgICAgLSBbQlVHIDMxNTEyNTRdOiBGaXggY3Jhc2ggd2l0aCBpbnZhbGlkIHRyYXBoYW5kbGUgZGlyZWN0aXZlCi0gICAgICAtIEZpeGVkIGEgZG91YmxlIGZyZWUsIHRyaWdnZXJlZCBieSBjbGVhbmluZyB1cCBlbWJlZGRlZCBQZXJsIGRhdGEgc3RydWN0dXJlLgorICAgICAgLSBGaXhlZCBhc3NvcnRlZCBkb3VibGUgZnJlZSBhdCBleGl0IHByb2JsZW1zCisKKyAgICBzbm1wdGFibGU6CisgICAgICAtIFtCVUcgMjgzNzk5OF06IEhhbmRsZSBtaXNzaW5nIGluc3RhbmNlIHN1YmlkZW50aWZpZXJzIGluIHJlc3VsdHMKKyAgICAgIC0gW1BBVENIIDI4NTAwNjddOiBTdXBwcmVzcyBleHRyYW5lb3VzICJpbmRleCIgaGVhZGVyIHRva2VuCisKKyAgICBzbm1wdHJhbnNsYXRlOgorICAgICAgLSBmaXhlZCBwcmludGluZyBvZiByYW5nZXMgd2l0aCBVTlNJR05FRCB0eXBlLgogCiAgICAgc25tcHVzbToKLSAgICAgIC0gQ29ycmVjdCBpZmRlZnMsIHJlbW92ZSBkZWFkIHZhcmlhYmxlcworICAgICAgLSBDb3JyZWN0IGlmZGVmcywgcmVtb3ZlIGRlYWQgdmFyaWFibGVzLgorCisgICAgc25tcHdhbGs6CisgICAgICAtIEZpeCBoYW5kbGluZyBvZiBlbmQgT0lEIGJlaW5nIGxvbmdlciB0aGFuIHRoZSBzdGFydGluZyBPSUQKIAogICAgIGJ1aWxkOgotICAgICAgLSBbQlVHIDMxMDI5MDRdOiBDb21waWxlIGFsbCBzb3VyY2UgZmlsZXMgd2l0aCAtZm5vLXN0cmljdC1hbGlhc2luZworICAgICAgLSBbQlVHIDMxMDI5MDRdOiBCdWlsZCB3aXRoIC1mbm8tc3RyaWN0LWFsaWFzaW5nIChpZiBzdXBwb3J0ZWQpCisgICAgICAtIEFkZCBkZXRlY3Rpb24gb2YgbG1fc2Vuc29ycyB2ZXJzaW9uCisgICAgICAtIEF2b2lkIHVzZSBvZiAidGFpbCAtMSIgKG5vbiBQT1NJWC1jb21wbGlhbnQpCiAgICAgICAtIERvIG5vdCBjYWxsIFZBQ00gQVBJcyBpZiBWQUNNIG1vZHVsZSBpcyBub3QgaW5jbHVkZWQKLSAgICAgIC0gRml4IGF1dG9jb25mIGRldGVjdGlvbiBvZiBzdHJjYXNlY21wCi0gICAgICAtIEZpeCBidWlsZGluZyBvZiBzdGF0aWMgYXBwbGljYXRpb25zIHVzaW5nIG5ldC1zbm1wLWNvbmZpZyAtKmxpYnMKLSAgICAgIC0gRml4IGRlZmluaXRpb24gb2YgVkVSU0lPTiAobnVtYmVyLCBub3QgZXhwcmVzc2lvbikKKyAgICAgIC0gRml4IGJ1aWxkaW5nIHN0YXRpYyBhcHBsaWNhdGlvbnMgdXNpbmcgbmV0LXNubXAtY29uZmlnCisgICAgICAtIEZpeCBjb21waWxhdGlvbiB3aXRoIHJwbS00LjYgKHVzaW5nIGxlZ2FjeSBBUEkpCisgICAgICAtIEZpeCAnbWFrZSB0ZXN0IFRFU1RPUFRTPSItUCB0Y3AiJworICAgICAgLSBGaXggb3JkZXIgb2YgcnBtbGliIGRldGVjdGlvbiBhbmQgYWdlbnQgbW9kdWxlIGNvbmZpZ3VyYXRpb24KKyAgICAgIC0gUnVuIHJwbSBjb25maWd1cmUgY2hlY2tzIGZvciAocnBtLWJhc2VkKSBocl9zd2luc3QgcmV3cml0ZQorICAgICAgLSBVc2UgYSBzZW5zaWJsZSBkZWZhdWx0IGZvciBzeXN0ZW0gbG9jYXRpb24gKGlmIG5vIGRvbWFpbiBuYW1lIGZvdW5kKQogCiAgICAgbWFuOgotICAgICAgLSBbQlVHIDMxOTA3MjVdOiBEb2N1bWVudCBzbm1weyxfc2Vzc31zeW5jaF9yZXNwb25zZSBhbmQgc25tcF9hc3luY19zZW5kCi0gICAgICAtIGNsZWFuIHVwIG1hbnVhbCBwYWdlcyAoZnJvbSBEZWJpYW4gcGF0Y2ggNTZfbWFucGFnZSkKKyAgICAgIC0gW0JVRyAyOTcyODYwXTogVXBkYXRlIGJyb2tlbiByZWZlcmVuY2VzCisgICAgICAtIENsZWFuIHVwIG1hbnVhbCBwYWdlcyAoZnJvbSBEZWJpYW4gcGF0Y2ggNTZfbWFucGFnZSkKIAogICAgIG1pYjJjOgotICAgICAgLSBbUEFUQ0ggMzE3NTMyM106IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCi0gICAgICAtIFtQQVRDSCAzMjA0ODgzXTogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCi0gICAgICAtIFtQQVRDSCAzMjExNDg0XTogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCi0gICAgICAtIE1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZAorICAgICAgLSBbQlVHIDI4ODg1NjldOiBGaXggZ2VuZXJhdGlvbiBvZiB0YWJsZSBjb2x1bW5zIGFycmF5CisgICAgICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBjYXN0cyB0byB1X2NoYXIqCisgICAgICAtIG1ha2UgdGhlIG1pYjJjIGZvcmVhY2ggcmFuZ2VzIHdvcmsgYXMgYWR2ZXJ0aXNlZCBpbiB0aGUgY29tbWVudHMKIAogICAgIG1pYnM6CisgICAgICAtIFtCVUcgMjk3Mzg5MF06IEZpeCBpbXBvcnRzLCBEaXNrSU9FbnRyeSBsaXN0IGFuZCByZXZpc2lvbiBoaXN0b3JpZXMKICAgICAgIC0gW1BBVENIIDI5NzQ3MTZdOiBGaXggaXNzdWVzIGluIHRoZSBTTVVYLU1JQgogCisgICAgbWlzYzoKKyAgICAgIC0gW1BBVENIIDI4MzYxMTJdOiBVc2UgdGhlIHJpZ2h0IG1vZGlmaWVyIGZvciBzaXplX3Qvc3NpemVfdCB2YXJpYWJsZXMKKyAgICAgIC0gW1BBVENIIDI5NTIwMzRdOiBSZXR1cm4gb2YgdGhlIEdyZWF0IFN1U0UgJ3NwcmludGYnIEh1bnQuLi4gCisKICAgICBwZXJsOgorICAgICAgLSBbUEFUQ0ggMjg5MDkzMV06IEJldHRlciBoYW5kbGluZyBvZiBDb3VudGVyNjQgdmFsdWVzCisgICAgICAtIFtQQVRDSCAyOTk1MDk4XTogRml4IGNyZWF0aW9uIG9mIFNOTVB2MyBzZXNzaW9ucyB3aXRoIEFQSV9TSU5HTEUKICAgICAgIC0gW1BBVENIIDMwNDYzNzFdOiBGaXggbWVtb3J5IGxlYWsgaW4gU05NUHYxIHRyYXAgaGFuZGxpbmcKLSAgICAgIC0gW1BBVENIIDMwNDkwMjldOiBGaXggYSBtZW1vcnkgbGVhayB3aXRoIHNubXAgYnVsa3dhbGtzCi0gICAgICAtIERvbid0IGFsd2F5cyBvcGVuIHN0ZGVyciBhcyB0aGUgY2FsbHMgdG8gc25tcF9sb2cgYWxyZWFkeSBkbyB0aGlzCi0gICAgICAgICAgIGFuZCBpdCBtZXNzZXMgdXAgdGhlIGFnZW50IHdoZW4gZW1iZWRkZWQKLSAgICAgIC0gSGFuZGxlIGVtYmVkZGVkICUncyBpbiB0aGUgcmVzdWx0IG1lc3NhZ2UuCisgICAgICAtIFtQQVRDSCAzMDQ5MDI5XTogRml4IG1lbW9yeSBsZWFrIHdpdGggc25tcCBidWxrd2Fsa3MKKyAgICAgIC0gRG9uJ3QgYXV0b21hdGljYWxseSBvcGVuIHN0ZGVyciAoYnJlYWtzIGVtYmVkZGVkIHBlcmwgd2l0aGluIHRoZSBhZ2VudCkKKyAgICAgIC0gRml4IHZhcmlvdXMgb3RoZXIgbWVtb3J5IGxlYWtzLCBvdXQtb2YtYm91bmRzIGFycmF5IGFjY2VzcworICAgICAgICAgICAgYW5kIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzIGlzc3VlcworICAgICAgLSBGaXggc2V2ZXJhbCAiRnJlZSB0byB3cm9uZyBwb29sIiBlcnJvcnMKIAogICAgIHB5dGhvbjoKLSAgICAgIC0gW0JVRyAzMDg4MzYwXTogRW5zdXJlIG1vZHVsZXMgYXJlIGJ1aWx0IGFnYWluc3QgdGhlIGNvcnJlY3QgbGlicmFyaWVzCi0gICAgICAtIFtCVUcgMzI5NTQwN106IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKLSAgICAgIC0gW1BBVENIIDMwMzUzMjhdOiBDaGVjayBmb3IgZmFpbHVyZXMgaW4gY3JlYXRpbmcgYSBzZXNzaW9uCi0gICAgICAtIFtQQVRDSCAzMDM1NTc4XTogS2VlcCBlcnJvciBjb2RlcyB1cCB0byBkYXRlCi0gICAgICAtIFtQQVRDSCAzMTg1MDg1XTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCisgICAgICAtIFtCVUcgMjkxOTM3OV06IEluaXRpYWxpc2UgU05NUCBzZXNzaW9ucyBwcm9wZXJseQorICAgICAgLSBbQlVHIDMwODgzNjBdOiBFbnN1cmUgcHl0aG9uIG1vZHVsZXMgYXJlIGJ1aWx0IGFnYWluc3QgdGhlIGNvcnJlY3QgbGlicmFyaWVzCisgICAgICAtIFtQQVRDSCAyMDAxNjU2XTogSGFuZGxlIG51bGwtdGVybWluYXRpb24gb2Ygc3RyaW5nIHZhbHVlcyBwcm9wZXJseS4KKyAgICAgIC0gW1BBVENIIDMwMzUzMjhdOiBEZXRlY3QgZmFpbHVyZXMgaW4gc2Vzc2lvbiBjcmVhdGlvbgorICAgICAgLSBbUEFUQ0ggMzAzNTU3OF06IFVwZGF0ZSBlcnJvciBjb2RlcworICAgICAgLSBTdXBwb3J0IG51bGwtYnl0ZXMgaW4gb2N0ZXQgc3RyaW5ncwogCi0gICAgdGVzdGluZzoKKyAgICB0ZXN0OgorICAgICAgLSBbUEFUQ0ggMjk1MjAyMF06IEV4cGxpY2l0bHkgc2V0IHBlcm1pc3Npb24gb24gb3V0cHV0IGRpcmVjdG9yaWVzCiAgICAgICAtIFN1cHBvcnQgZHluYW1pYyBhbmFseXNpcyBvZiByZWdyZXNzaW9uIHRlc3RzCisgICAgICAtIEZpeCB0ZXN0cyAoVDAzMCkgZm9yIE1pbkdXCisKKyAgICBDeWd3aW46CisgICAgICAtIFtCVUcgMjk5NzQ5Ml06IGJ5dGUgb3JkZXIgb2YgdWRwTG9jYWxQb3J0IGlzIG5vdyBjb3JyZWN0CisgICAgICAtIEVuYWJsZWQgVW5peCB0cmFuc3BvcnQKKyAgICAgIC0gRml4IGJ1aWxkaW5nIHdpdGggSVB2NiwgT3BlblNTTCAmIGVtYmVkZGVkIFBlcmwgc3VwcG9ydAorICAgICAgLSBGaXggYnVpbGRpbmcgd2l0aCByZW1vdGVseSBtb3VudGVkIHNvdXJjZSBmaWxlcworICAgICAgLSBGaXggZnJlZSBVRFAgcG9ydCBkZXRlY3Rpb24gaW4gcmVncmVzc2lvbiB0ZXN0cworICAgICAgLSBGaXggb3V0LW9mLXJhbmdlIGFycmF5IGFjY2VzcyBpbiAnaW50ZXJmYWNlcycgdGFibGUKKyAgICAgIC0gbGlibmV0c25tcCBub3cgYnVpbGRzIGFzIGEgRExMIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZW5hYmxlLXNoYXJlZAorICAgICAgLSBPbWl0IGluZXRfbnRvcC5jIGFuZCBpbmV0X3B0b24uYworICAgICAgLSBwZXJsIG1vZHVsZXMgZG8gbm93IGJ1aWxkICgtLXdpdGgtcGVybC1tb2R1bGVzKS4KKyAgICAgIC0gUmVtb3ZlZCB3aW5waXBlLmMgZnJvbSB0aGUgbGlzdCBvZiBzb3VyY2UgZmlsZXMKKworICAgIEhQLVVYOgorICAgICAgLSBmaXggYnVpbGQgZXJyb3Igb24gSFAtVVggMTAuMjAKIAogICAgIExpbnV4OgotICAgICAgLSBbUEFUQ0ggMzA3NDkxOF06IGNoZWNrIGZvciBDT05UQUlORVJfSU5TRVJUIGZhaWx1cmVzCisgICAgICAtIFtCVUcgMjk4NTkxNV06IEZpeCBidWlsZCB3aXRob3V0IGVtYmVkZGVkIFBlcmwKKyAgICAgIC0gW1BBVENIIDI5MjYzNzRdOiBGaXggcmVhZGluZyBvZiBpcEFkZHJlc3NUYWJsZSBmcm9tIC9wcm9jL25ldC9pZl9pbmV0NgorICAgICAgLSBbUEFUQ0ggMjk1OTgxMV06IFJlaW1wbGVtZW50IE5ldGxpbmsgSVB2NiBwcmVmaXggbGlzdGVuZXIKICAgICAgIC0gW1BBVENIIDMwODMwMjddOiBGaXggUlBNIHNwZWMgZmlsZSB0byBzdXBwb3J0IENlbnRPUwotICAgICAgLSBbUEFUQ0ggMzE1MjQxMl06IEhhbmRsZSAoYW5kIHJlcG9ydCkgcHJvYmxlbXMgcmVhZGluZyAvcHJvYy92bXN0YXQKLSAgICAgIC0gRml4IGEgc3RybGVuIGNhbGN1bGF0aW9uIGluIElGLU1JQiBzdXBwb3J0Ci0gICAgICAtIEZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcwotICAgICAgLSBGaXhlZCB2YWx1ZSBvZiBJUC1NSUI6OmlwdjZJbnRlcmZhY2VGb3J3YXJkaW5nCisgICAgICAtIFtQQVRDSCAzMTA3MDAzXTogU3VwcHJlc3MgaXBOZXRUb1BoeXNpY2FsVGFibGUgZXJyb3IgbWVzc2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdHVubmVsIGFuZCBzaW1pbGFyIChub24tcGh5c2ljYWwpIGludGVyZmFjZXMKKyAgICAgIC0gRml4IGNhbGN1bGF0aW9uIG9mIGlmSENJblVjYXN0UGt0cyBvbiAzMi1iaXQgTGludXgKKyAgICAgIC0gRml4IHVkcFRhYmxlIGluZGV4ZXMgb24gYmlnLWVuZGlhbiA2NGJpdCBMaW51eAorICAgICAgLSBGaXggdmFsdWUgb2YgSVAtTUlCOjppcHY2SW50ZXJmYWNlRm9yd2FyZGluZworICAgICAgLSBGaXhlZCAzMi1iaXQgdHJ1bmNhdGlvbiB3YXJuaW5nIG9uIFVDRC1TTk1QLU1JQjo6c3lzdGVtU3RhdHMKKyAgICAgIC0gSW1wcm92ZWQgRXRoZXJMaWtlLU1JQiBzdXBwb3J0IAorICAgICAgLSBQYXNzIGNvcnJlY3QgcGF0aCB0byBycG1kYk9wZW4sIGFuZCBsb2cgZXJyb3JzCisgICAgICAtIHNubXBkIGlzIGFnYWluIHNpbmdsZS10aHJlYWRlZC4KIAogICAgIE5ldEJTRDoKICAgICAgIC0gRHJhZ29uRmx5IHN1cHBvcnQKQEAgLTEzOSw1NjggKzMyMCw2ODUgQEAKICAgICAgIC0gVXBkYXRlIG1lbW9yeSBhbmQgQ1BVIHN0YXRpc3RpY3MgaGFuZGxpbmcKIAogICAgIE9wZW5CU0Q6Ci0gICAgICAtIFN1cHBvcnQgdXBkYXRpbmcgdGhlIHJvdXRpbmcgdGFibGUgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQotCi0gICAgV2luMzI6Ci0gICAgICAtIFtQQVRDSCAzMjkzODQyXTogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzCi0gICAgICAtIEF2b2lkIE1TVkMgd2FybmluZyBhYm91dCByZWRlZmluaW5nIEVBRERSSU5VU0UKLSAgICAgIC0gRml4IG91dC1vZi1yYW5nZSBhcnJheSBhY2Nlc3NlcyBlcnJvcnMgaW4gbWliSUkgaW50ZXJmYWNlcyB0YWJsZQotICAgICAgLSBGaXggdGVzdCBUMDMwIG9uIE1pbkdXLgotICAgICAgLSBGaXggdGVzdCBUMjAwIGZhaWx1cmVzIG9uIGtub3duIE1pY3Jvc29mdCBTTk1QIGV4dGVuc2lvbiBETEwgYnVncwotICAgICAgLSBGaXhlZCBtZW1vcnkgbGVhayBpbiB0aGUgaW50ZXJuYWwgKG5vbi13aW5FeHRETEwpIGlwTmV0VG9NZWRpYVRhYmxlCi0gICAgICAtIEhhbHQgc25tcGQgcHJvY2VzcyBvbiBrZXkgcHJlc3Mgd2hlbiBydW4gZnJvbSBhIGNvbW1hbmQgcHJvbXB0Ci0gICAgICAgICAgKFRvIGFpZCBkZWJ1Z2dpbmcgc25tcGQuZXhlKQotCi0gICAgTWluR1c6Ci0gICAgICAtIE1ha2UgcmVncmVzc2lvbiB0ZXN0cyBpbmRlcGVuZGVudCBvZiByZWdpc3RyeSBzZXR0aW5ncwotICAgICAgLSBVc2UgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBoZWFkZXIgZmlsZSB1bmRlciBXaW5HVwotCi0gICAgICAKLSogNS40LjMgKgotCi0gICAgc25tcGxpYjoKLSAgICAgIC0gW0JVRyAyODM4MjQzXTogQ29ycmVjdCB0aGUgb3V0cHV0IG9mIHVuc2lnbmVkIHZhbHVlcy4KLSAgICAgIC0gW0JVRyAyOTE5MzIwXTogQXZvaWQgYWNjZXNzaW5nIGZyZWVkIG1lbW9yeQotICAgICAgLSBbQlVHIDI5MjIzOTBdOiBGaXggdGVzdCBmb3IgbWlzc2luZyBjb250ZXh0TmFtZSBwYXJhbWV0ZXIKLSAgICAgIC0gW1BBVENIIDIwNDMwMThdOiBmaXggcmVjdmZyb20gaGFuZ3MKLSAgICAgIC0gW1BBVENIIDIyNTgyMjldOiBSZW1vdmUgbWlzbGVhZGluZyBjb21tZW50Ci0gICAgICAtIFtQQVRDSCAyNDc5NzAwXTogRml4IHpvbmVkIElQIGFkZHJlc3MgdXNlZCBhcyB0YWJsZSBpbmRpY2VzCi0gICAgICAtIFtQQVRDSCAyNDkyMzc3XTogRml4IHR5cG8vYnVnIGluIHNubXBfZW5hYmxlX2NhbGxiYWNrKCkKLSAgICAgIC0gW1BBVENIIDI1MDU0ODhdOiBGaXggYWxhcm0gYmVoYXZpb3VyIG9uIGxhcmdlIGNsb2NrIHNrZXdzCi0gICAgICAtIFtQQVRDSCAyNTM4MTY5XTogUHJldmVudCBpbmZpbml0ZSByZXRyaWVzIGZvciBpbnZhbGlkIGVycm9yLWluZGV4Ci0gICAgICAtIFtQQVRDSCAyNjg4MzQ1XTogRml4IG5ldHNubXBfYXNzZXJ0KCkgZm9yIFZpc3VhbCBTdHVkaW8KLSAgICAgIC0gW1BBVENIIDI2ODkzNjJdOiBGaXggaGFuZGxpbmcgb2YgSVB2NiBob3N0bmFtZXMKLSAgICAgIC0gW1BBVENIIDI3MTM4NDFdOiBGaXggcnVudGltZSBlcnJvcnMgdHJpZ2dlcmVkIGJ5IGhpZ2gtQVNDSUkgY2hhcnMKLSAgICAgIC0gW1BBVENIIDI3ODA0MTFdOiBGaXggY29tcGlsZXIgd2FybmluZ3MKLSAgICAgIC0gW1BBVENIIDI3OTcyNTFdOiBGaXggbWVtb3J5IGxlYWtzCi0gICAgICAtIFtQQVRDSCAyODcxNzQ3XTogRml4IG1lbW9yeSBsZWFrIGluIE9JRCBwcm9jZXNzaW5nCi0gICAgICAtIFtQQVRDSCAyOTUyMTQwXTogT3ZlcmZsb3cgY291bnRlcjMyIGFuZCBnYXVnZTMyCi0gICAgICAtIFtQQVRDSCAyOTUyMDM0XTogUmV0dXJuIG9mIHRoZSBHcmVhdCBTdVNFICdzcHJpbnRmJyBIdW50Ci0gICAgICAtIENoYW5nZSB0aGUgcGFyc2luZyBvZiByYW5nZXMgdG8gYWNjZXB0IGFsbCB2YWxpZCB2YWx1ZXMKLSAgICAgIC0gRW5zdXJlIE9fQ1JFQVRFIG1hc2sgaXMgYWx3YXlzIHNwZWNpZmllZAotICAgICAgLSBGaXggZXh0ZXJuICJDIiB3cmFwcGluZwotICAgICAgLSBNYWtlIC1MTiBzdG9wIGR1bXBpbmcgY29yZS4KLSAgICAgIC0gTWFrZSBiYWQgZGVidWcgbGV2ZWxzIHJlcG9ydCB0aGUgb2ZmZW5kaW5nIHN5bWJvbAotICAgICAgLSBSZW1vdmUgaW5saW5lIGRlY2xhcmF0aW9ucyBmb3Igbm9uLWlubGluZSBkZWZpbmVkIGZ1bmN0aW9ucwotCi0gICAgc25tcGQ6Ci0gICAgICAtIFtCVUcgMTY5MzAzOV06IEJlIHNpbGVudCB3aGVuIGluc2VydCBmYWlscy4KLSAgICAgIC0gW0JVRyAyODIyMzYwXTogRml4IG1lbW9yeSBsZWFrIHdoZW4gYnVpbGRpbmcgdGFibGUgT0lEcwotICAgICAgLSBbQlVHIDI4NDEwMDhdOiBQcm90ZWN0IGFnYWluc3QgY3Jhc2ggZm9sbG93aW5nIGZhaWxlZCBBZ2VudFggcmVzcG9uc2UKLSAgICAgIC0gW0JVRyAyODczODU4XTogRml4IGhhbmRsaW5nIG9mIHNjaGVkT3duZXIgaW5kZXguCi0gICAgICAtIFtCVUcgMjg5NDA1OV06IEhhbmRsZSBlcnJvcnMgd2hlbiBjb3VudGluZyBpbnRlcmZhY2VzCi0gICAgICAtIFtCVUcgMjg5NzAwMF06IFN1cHByZXNzIDMyLWJpdCBjb3VudGVyIHRydW5jYXRpb24gd2FybmluZ3MuCi0gICAgICAtIFtCVUcgMjkxNDQxMF06IEZpeCBjcmFzaCBvbiBlbXB0eSBjb21tYW5kIGxpbmVzCi0gICAgICAtIFtCVUcgMjkyNDE0MF06IEZpeCB0ZXJtaW5hdGlvbiBvZiBDUFUvRlBVIHR5cGVzCi0gICAgICAtIFtQQVRDSCAxMjU3MzQ3XTogTm9uLWZpeGVkIHNpemUgY29ubmVjdGlvbiBidWZmZXIKLSAgICAgIC0gW1BBVENIIDE1NTA3MzBdOiBSZXBvcnQgZXJyb3JzIGZyb20gaXRlcmF0b3ItYmFzZWQgaGFuZGxlcnMKLSAgICAgIC0gW1BBVENIIDE5Nzc0MzldOiBGaXggcGFzcy9fcGVyc2lzdCBidWcgd2l0aCBTRVQgb2lkIHZhbHVlCi0gICAgICAtIFtQQVRDSCAyMDEyNDAyXTogSGFuZGxlIGZhaWx1cmUgdG8gbG9vayB1cCBpbnRlcmZhY2UgZXJyb3IgY291bnRlcnMKLSAgICAgIC0gW1BBVENIIDIwODI3MjZdOiBjb3JyZWN0bHkgcmVwb3J0IE5JQyBzcGVlZHMgaGlnaGVyIHRoYW4gNEdiaXQvcwotICAgICAgLSBbUEFUQ0ggMjEyNDI4OF06IEZpeCBzZXR0aW5nIG9mIHVzbVVzZXJQcml2UHJvdG9jb2wgYXQgY3JlYXRpb24KLSAgICAgIC0gW1BBVENIIDIxNjI2NTJdOiBGaXggc2ltcGxlIGhyZnMgY2hlY2tzIHdoZW4gTkZTIGlzIGluIHVzZQotICAgICAgLSBbUEFUQ0ggMjM4NDc3OV06IEZpeCBoYW5kbGluZyBvZiBHZXRCdWxrIHdpdGggTj4wLE09PTAKLSAgICAgIC0gW1BBVENIIDI2ODYyODBdOiBSZXBvcnQgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbnMgYXMgYW4gZXJyb3IKLSAgICAgIC0gW1BBVENIIDI2OTM2NzBdOiBEb24ndCBvcGVuIEFnZW50WCBzb2NrZXRzIGlmIG90aGVyIHRyYW5zcG9ydHMgZmFpbAotICAgICAgLSBbUEFUQ0ggMjc5MTQxN106IEZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoIC1EQUxMCi0gICAgICAtIFtQQVRDSCAyNzk3MjUxXTogU3VwcG9ydCBtdWx0aXBsZSBpbml0aWFsaXNhdGlvbiBhbmQgc2h1dGRvd24KLSAgICAgIC0gW1BBVENIIDI4MjIzMzddOiBGaXggbWVtb3J5IGxlYWsgaW4gaXBBZGRyZXNzUHJlZml4VGFibGUKLSAgICAgIC0gW1BBVENIIDI4Nzc1MThdOiBGaXggaGFuZGxpbmcgb2Ygc2NvcGVkIEFnZW50WCB2YXJpYWJsZXMKLSAgICAgIC0gW1BBVENIIDI4ODMxNTVdOiBGaXggbWVtb3J5IGxlYWsgaW4gcHJveHkgaGFuZGxpbmcuCi0gICAgICAtIFtQQVRDSCAyODg3ODE2XTogUHJvdGVjdCBhZ2FpbnN0IGRpdmlzaW9uLWJ5LXplcm8gY3Jhc2gKLSAgICAgIC0gW1BBVENIIDI5MDEwMjldOiBGaXggY29tcGlsZXIgd2FybmluZyBvbiBDbG9zZUhhbmRsZSgpCi0gICAgICAtIFtQQVRDSCAyOTExMzIzXTogRml4IGFnZW50IGxvY2t1cCB3aGVuIG1vbml0b3JpbmcgQWdlbnRYLWRlbGVnYXRlZCBpbmZvcm1hdGlvbgotICAgICAgLSBbUEFUQ0ggMjkxMjU4NF06IEZpeCBudWxsIE9JRCBoYW5kbGluZyBpbiBBZ2VudHggb24gNjRiaXQKLSAgICAgIC0gW1BBVENIIDI5NTA4NDVdOiBGaXggaWZIaWdoU3BlZWQgY2FsY3VsYXRpb24KLSAgICAgIC0gW1BBVENIIDI5NTIwMzRdOiBSZXR1cm4gb2YgdGhlIEdyZWF0IFN1U0UgJ3NwcmludGYnIEh1bnQKLSAgICAgIC0gW1BBVENIIDI5NTY2NTddOiBIYW5kbGUgb3Zlci1sZW5ndGggQWdlbnRYIE9JRHMKLSAgICAgIC0gW1BBVENIIDI5Njg2NDJdOiBDYXRjaCBvdmVyZmxvdyBvZiBwYXNzLXRocm91Z2ggY29tbWFuZCBidWZmZXIKLSAgICAgIC0gQWxsb3cgIm1vbml0b3IiIHRvIGhhbmRsZSBuZWdhdGl2ZSB0aHJlc2hvbGQgdmFsdWVzCi0gICAgICAtIENoYW5nZSBkZWZhdWx0IEFnZW50WCB0YXJnZXQgZnJvbSAwLjAuMC4wOjcwNSB0byBsb2NhbGhvc3Q6NzA1Ci0gICAgICAtIENsZWFuIHVwIG5vdGlmaWNhdGlvbgotICAgICAgLSBFbnN1cmUgT19DUkVBVEUgbWFzayBpcyBhbHdheXMgc3BlY2lmaWVkCi0gICAgICAtIEZpeCBhZ2VudCBjcmFzaCB3aGVuIHNlbmRpbmcgZW5jcnlwdGVkIFNOTVB2MyB0cmFwcwotICAgICAgLSBGaXggQ1ZFLTIwMDgtNDMwOSAoR0VUQlVMSyBpc3N1ZSByZXBvcnRlZCBieSBPc2NhciBNaXJhLVNhbmNoZXopCi0gICAgICAtIEZpeCBjcmVhdGlvbiBvZiB2aWV3cyB1c2luZyBzbm1wdXNtCi0gICAgICAtIEZpeCBoYW5kbGluZyBvZiBtdWx0aXBsZSBtYXRjaGluZyBWQUNNIGVudHJpZXMKLSAgICAgIC0gRml4IGludmFsaWQgYWNjZXNzIHRvIG1lbW9yeSBpbiBUQ1AtTUlCCi0gICAgICAtIEZpeCBsb2dnaW5nIG9mICd0cnVuY2F0aW5nIGludGVnZXIgdmFsdWVzJyBpbiBJUC1NSUIgYW5kIFRDUC1NSUIKLSAgICAgIC0gRml4IG1lbW9yeSBsZWFrIHdoZW4gbXVsdGlwbGUgaW50ZXJmYWNlcyBoYXZlIHRoZSBzYW1lIElQdjYgYWRkcmVzcwotICAgICAgLSBGaXggcG9zc2libGUgY3Jhc2ggd2hlbiA2NC1iaXQgY291bnRlcnMgZXhjZWVkIDJeMzIKLSAgICAgIC0gRml4IHR3byBidWdzIHdpdGggc211eCBwYXNzd29yZCBzdXBwb3J0Ci0gICAgICAtIEZpeCB1ZHBUYWJsZSBpbmRleGVzIG9uIGJpZy1lbmRpYW4gNjRiaXQgTGludXguCi0gICAgICAtIEltcHJvdmUgcGFyc2luZyBvZiAtTFMgY29tbWFuZCBsaW5lIGFyZ3VtZW50Ci0gICAgICAtIExhdGNoIGxhcmdlLWRpc2sgc3RhdGlzdGljcyBhdCAyVGIgKHJhdGhlciB0aGFuIHdyYXBwaW5nKQotICAgICAgLSBSZWdpc3RlciBDUFUvbWVtb3J5IGhhcmR3YXJlIG1vZHVsZXMgd2l0aCBuc0NhY2hlVGFibGUKLSAgICAgIC0gUmVtb3ZlIGlubGluZSBkZWNsYXJhdGlvbnMgZm9yIG5vbi1pbmxpbmUgZGVmaW5lZCBmdW5jdGlvbnMKLSAgICAgIC0gUmVwb3J0IGlmU3BlZWQgb2YgZG93biBuZXR3b3JrIGludGVyZmFjZXMKLSAgICAgIC0gU3VwcG9ydCBsYXJnZSBIVyBhZGRyZXNzZXMgKD42Ynl0ZXMpCi0KLSAgICBzbm1wdHJhcGQ6Ci0gICAgICAtIFtQQVRDSCAyNzI2MzAyXTogUGFzcyByZXN1bHRzIG9mIFBlcmwgdHJhcCBoYW5kbGVycyB0byB0cmFwIGRhZW1vbgotICAgICAgLSBSZW1vdmUgZ2xpYmMtc3BlY2lmaWMgcHJpbnRmLWZvcm1hdHRpbmcgdG9rZW5zCi0KLSAgICBzbm1wdGFibGU6Ci0gICAgICAtIFtCVUcgMjgzNzk5OF06IEhhbmRsZSBtaXNzaW5nIGluc3RhbmNlIHN1YmlkZW50aWZpZXJzIGluIHJlc3VsdHMKLSAgICAgIC0gW1BBVENIIDI4NTAwNjddOiBTdXBwcmVzcyBleHRyYW5lb3VzICJpbmRleCIgaGVhZGVyIHRva2VuCi0KLSAgICBhcHBzOgotICAgICAgLSBbQlVHIDI4MTE1NzddOiBGaXggYnVnIGluIEdldEJ1bGsgaGFuZGxpbmcKLSAgICAgIC0gW1BBVENIIDI5Mzc5OTZdOiBBZGQgRGF0ZTogaGVhZGVyIHRvIGVtYWlsIHNlbmQgYnkgdHJhcHRvZW1haWwKLSAgICAgIC0gSW1wcm92ZSBwYXJzaW5nIG9mIC1MUyBjb21tYW5kIGxpbmUgYXJndW1lbnQKLQotICAgIGJ1aWxkOgotICAgICAgLSBbQlVHIDIwOTU5ODNdOiBGaXggZXJyb3JzIGluIGZpbmQtcmVxdWlyZXMgaGVscGVyIHNjcmlwdAotICAgICAgLSBbQlVHIDI3ODI3MDBdOiBCdWlsZCBmYWlsdXJlIHdoZW4gdXNpbmcgLS13aXRoLXBrY3Mgb24gU29sYXJpcwotICAgICAgLSBbUEFUQ0ggMjE4NDAzOV06IE1pc2MgZml4ZXMgZm9yIGZyZWVpbmcgbWVtb3J5Ci0gICAgICAtIFtQQVRDSCAyOTUyMDIwXTogU2V0IHBlcm1pc3Npb24gb24gdGVzdGluZyBkaXJlY3RvcmllcwotICAgICAgLSAnbWFrZSB0ZXN0IFRFU1RPUFRTPSItUCB0Y3AiJyB3b3JrcyBmaW5lIG5vdwotCi0gICAgZG9jczoKLSAgICAgIC0gW1BBVENIIDI3ODgwNzJdOiBEb2N1bWVudCAnbG9nbWF0Y2gnIGZ1bmN0aW9uYWxpdHkuCi0gICAgICAtIFtQQVRDSCAyNzk1NzM5XTogRml4IGluY29ycmVjdCBkaXNrL2ZpbGUgc2l6ZSBkZXNjcmlwdGlvbnMgJiB1bml0IHNwZWNpZmllcnMKLQotICAgIG1pYjJjOgotICAgICAgLSBbQlVHIDI4MjcyNjldOiBTdXBwcmVzcyBub24tb3JkZXJlZCBUT0RPIGNvbW1lbnRzCi0gICAgICAtIFtCVUcgMjg4ODU2OV06IEZpeCBnZW5lcmF0aW9uIG9mIHRhYmxlIGNvbHVtbnMgYXJyYXkKLSAgICAgIC0gW1BBVENIIDIxMzY0MzddOiBJbXByb3ZlIDY0LWJpdCBoYW5kbGluZyBvZiBsYXJnZSB0YWJsZSBGTEFHIGRlZmluZXMgCi0gICAgICAtIFtQQVRDSCAyMzE2MTI3XTogRml4IGJ1ZyBpbiBpdGVyYXRlX2FjY2VzcyBnZW5lcmF0ZWQgY29kZS4KLQotICAgIG1pYnM6Ci0gICAgICAtIFtCVUcgMjk3Mzg5MF06IEZpeCBpbXBvcnRzLCBEaXNrSU9FbnRyeSBsaXN0IGFuZCByZXZpc2lvbiBoaXN0b3JpZXMKLQotICAgIHBlcmw6Ci0gICAgICAtIFtCVUcgMTU1NDgxN106IEZpeCBjbGFzcyBhc3NpZ21lbnQgc28gZ2V0Um9vdE9JRCB3b3JrcyBwcm9wZXJseQotICAgICAgLSBbUEFUQ0ggMjAyMjk0OF06IEZpeCBmb3IgQ291bnRlcjY0IGluIHBlcmwgc3ViYWdlbnQKLSAgICAgIC0gW1BBVENIIDIxODIwNzldOiBGaXggdmFyaW91cyB3YXJuaW5ncyAmIGFsbG93IHVzZSBvZiAidXNlIHN0cmljdCIKLSAgICAgIC0gW1BBVENIIDIzNjE3MTJdOiBGaXggZ2V0YnVsayBvcHRpbWl6YXRpb24gZHVyaW5nIHdhbGtzCi0gICAgICAtIFtQQVRDSCAyNzkzODU3XTogUmVwb3J0IGZhaWxlZCBhc3luY2hyb25vdXMgcmVxdWVzdHMKLSAgICAgIC0gW1BBVENIIDI4OTA5MzFdOiBCZXR0ZXIgaGFuZGxpbmcgb2YgQ291bnRlcjY0IHZhbHVlcy4KLQotICAgIHB5dGhvbjoKLSAgICAgIC0gW0JVRyAyMjU4OTM1XTogUHl0aG9uIEV4dGVuc2lvbiBNb2R1bGUgZmFpbHMgb24gU29sYXJpcwotICAgICAgLSBbQlVHIDI5MTkzNzldOiBJbml0aWFsaXNlIFNOTVAgc2Vzc2lvbnMgcHJvcGVybHkKLSAgICAgIC0gW1BBVENIIDIwNzQ4MTddOiBGaXggcmVnZXhwIGVuZ2luZSBDUFUgcGVyZm9ybWFuY2UgaXNzdWVzCi0gICAgICAtIFtQQVRDSCAyMjYwODI4XTogRml4IHB5dGhvbiBzbm1wd2FsayBtZW1vcnkgbGVhawotICAgICAgLSBbUEFUQ0ggMjU4MDk3OV06IEZpeCBweXRob24gc2Vzc2lvbiBwb2ludGVycyBvbiA2NC1iaXQgc3lzdGVtcwotICAgICAgLSBbUEFUQ0ggMjY2NzQxNV06IFN1cHBvcnQgIlVzZU51bWVyaWMiIG9wdGlvbgotICAgICAgLSBTdXBwb3J0IG51bGwtYnl0ZXMgaW4gb2N0ZXQgc3RyaW5ncwotCi0KLSAgICBBSVg6Ci0gICAgICAtIFtCVUcgMjcxMjY3MF06IEFnZW50IGNyYXNoZXMgb24gQUlYIHdpdGggaHJTdG9yYWdlCi0KLSAgICAqQlNEOgotICAgICAgLSBbUEFUQ0ggMjQzNTc5M106IFN1cHBvcnQgNjQtYml0IElGLU1JQiBjb3VudGVycyBvbiBzeXNjdGwgc3lzdGVtcwotICAgICAgLSBGaXggYSBtYWtlIHRlc3QKLQotICAgIEhQLVVYOgotICAgICAgLSBbQlVHIDI3Nzk0NzJdOiBGaWxlc3lzdGVtcyBtaXNzaW5nIGluIGhyU3RvcmFnZSB0YWJsZSAoSFAtVVggMTEuMzEpCi0gICAgICAtIFtQQVRDSCAyMDg4NzI2XTogRml4IGFuIGlzc3VlIHJlcG9ydGluZyBuZWdhdGl2ZSBtZW1vcnkgdmFsdWVzCi0KLSAgICBMaW51eDoKLSAgICAgIC0gW0JVRyAyODIyMzU1XTogRml4IG1lbW9yeSBsZWFrcyBvbiB1ZHBFbmRwb2ludFRhYmxlCi0gICAgICAtIFtQQVRDSCAyOTI2Mzc0XTogRml4IC9wcm9jL25ldC9pZl9pbmV0NiByZWFkaW5nIG9mIGlwQWRkcmVzc1RhYmxlCi0gICAgICAtIEZpeCBidWlsZCBvbiBtb2Rlcm4gZGlzdHJpYnV0aW9ucyAodXNpbmcgcnBtLTQuNikKLSAgICAgIC0gZml4IHJhcmUgcmFjZSBjb25kaXRpb24gd2hlbiByZWFkaW5nIFJQTSBkYXRhYmFzZQorICAgICAgLSBGaXggb3JkZXIgb2YgaGVhZGVycyB3aGVuIGNoZWNraW5nIDxuZXRpbmV0L2luX3BjYi5oPgorICAgICAgLSBTdXBwb3J0IHVwZGF0aW5nIHRoZSByb3V0aW5nIHRhYmxlCisgICAgICAtIFVwZGF0ZSBTV1J1biBjb2RlIHRvIHVzZSBrdm1fZ2V0cHJvYzIKIAogICAgIFNvbGFyaXM6Ci0gICAgICAtIFtQQVRDSCAyMDEyNDA0XTogRGVhbCB3aXRoIG1vcmUgdGhhbiAxMCBpbnRlcmZhY2VzCi0gICAgICAtIFtQQVRDSCAyNDA2Mzc4XTogRml4IGhyU1dSdW5QZXJmTWVtIG9uIDY0LWJpdCBTb2xhcmlzIHN5c3RlbXMKLSAgICAgIC0gW1BBVENIIDI3NTE1ODhdOiBJbmNvbnNpc3RlbnQgZGF0YSAoZS5nLiBVRFAvVENQIE1JQiBzY2FsYXIgdmFsdWVzCi0Jb2YgemVybykgY2FuIGJlIHJlcG9ydGVkIG9uIFNvbGFyaXMgMTBVNCsKLSAgICAgIC0gUHJvdGVjdCBhZ2FpbnN0IG1pc3NpbmcgcGFja2FnZSB2ZXJzaW9uCisgICAgICAtIEZpeCBjcmFzaCB0cmlnZ2VyZWQgYnkgbWlzc2luZyBwYWNrYWdlIHZlcnNpb24gaW5mb3JtYXRpb24gCiAKICAgICBXaW5kb3dzOgotICAgICAgLSBbQlVHIDI5OTc0OTJdOiBieXRlIG9yZGVyIG9mIHVkcExvY2FsUG9ydCBpcyBub3cgY29ycmVjdAotICAgICAgLSBbQlVHIDI5NzEyNTddOiBGaXhlZCB3aW5FeHRETEwgaGFuZGxpbmcgb2YgbXVsdGktdmFyYmluZCBnZXROZXh0IHJlcXVlc3RzLgotICAgICAgLSBbQlVHIDI3Nzk1NDFdOiBGaXhlZCBoYW5kbGUgbGVhayBpbiBwYXNzX3BlcnNpc3QKLSAgICAgIC0gW1BBVENIIDI2ODYyNDhdOiBBcHBsaWVkIHBhdGNoIGJ5IEJhcnQgVmFuIEFzc2NoZQotICAgICAgLSBbUEFUQ0ggMjY4ODM0Ml06IEZpeCB2YXJpb3VzIFZTMjAwNSBjb21waWxlciB3YXJuaW5ncwotICAgICAgLSBbUEFUQ0ggMjY5MTg3Nl06IEFwcGxpZWQgcGF0Y2ggYnkgcmRpZXogdG8gYWxsb3cKLSAgICAgIC0gW1BBVENIIDI2OTM3NDZdOiBpbXByb3ZlZCBzb2NrZXQgc3RhcnR1cCBzdXBwb3J0Ci0gICAgICAtIERldGVjdCBmcmVlIFVEUCBwb3J0cyBjb3JyZWN0bHkgZm9yIHVzZSBpbiB0ZXN0IGluZnJhc3RydWN0dXJlLgotICAgICAgLSBGaXggYmF0Y2ggYnVpbGQgdXNpbmcgcmVjZW50IHZlcnNpb25zIG9mIFZpc3VhbCBTdHVkaW8uCi0gICAgICAtIEZpeCBidWlsZHMgd2l0aCBJUHY2IHN1cHBvcnQgZW5hYmxlZAorICAgICAgLSBbQlVHIDI5Njk4NzJdOiBFbnN1cmUgU09DS19TVEFSVFVQIGlzIGludm9rZWQgYmVmb3JlIGluaXRfYWdlbnQKKyAgICAgIC0gW0JVRyAyOTcxMjU3XTogRml4ZWQgd2luRXh0RExMIGhhbmRsaW5nIG9mIG11bHRpLXZhcmJpbmQgZ2V0TmV4dAorCSAgICAgICAgICAgICAgIHJlcXVlc3RzIHdpdGggT0lEcyBpbiByZXZlcnNlIGxleGljb2dyYXBoaWNhbCBvcmRlcgorICAgICAgLSBBdm9pZCB0ZXN0IGZhaWx1cmUgKFQyMDApIG9uIGtub3duIE1TIFNOTVAgZXh0ZW5zaW9uIERMTCBidWdzCisgICAgICAtIEZpeCBhbmQgaW1wcm92ZSBiYXRjaCBidWlsZCB1c2luZyByZWNlbnQgdmVyc2lvbnMgb2YgVmlzdWFsIFN0dWRpbwogICAgICAgLSBGaXggYnVpbGQgdW5kZXIgTWluR1cKLSAgICAgIC0gRml4IHdpbkV4dERMTCBidWlsZCBvbiBXaW5kb3dzIFZpc3RhLCBXaW5kb3dzIDcKLSAgICAgIC0gRml4IHdpbkV4dERMTCBidWlsZCB3aXRoIE1pbkdXCi0gICAgICAtIFNpbXBsaWZ5IGJ1aWxkaW5nIE5ldC1TTk1QICsgd2luRXh0RExMIHdpdGggTVNWQwotICAgICAgLSB3aW5FeHRETEw6IEZpeGVkIGEgbWVtb3J5IGxlYWsgd2hlbiBTbm1wRXh0ZW5zaW9uUXVlcnkoRXgpIGZhaWxzCi0gICAgICAtIHdpbkV4dERMTDogTG9nIGVycm9ycyB3aGVuIGxvYWRpbmcgYW4gZXh0ZW5zaW9uIERMTCBmYWlscwotICAgICAgLSB3aW5FeHRETEw6IFVzZSBSRkMtY29tcGxpYW50IGVycm9yIGNvZGVzIGluIFNOTVAgcmVzcG9uc2UgUERVcwotICAgICAgLSB3aW5FeHRETEw6IEZpeCBoYW5kbGluZyBvZiBtdWx0aXBsZSB2YXJiaW5kIFNFVCByZXF1ZXN0cworICAgICAgLSBGaXggYnVpbGQgd2l0aCA2NC1iaXQgY29tcGlsZXIKKyAgICAgIC0gRml4IGJ1aWxkaW5nIHdpdGggSVB2NiBhbmQgT3BlblNTTCBzdXBwb3J0CisgICAgICAtIEZpeCBoYW5kbGluZyBvZiBzdHJ0b3VsbCAoYm90aCBNU1ZDIDYuMCwgYW5kIDIwMDIgJiBhYm92ZSkKKyAgICAgIC0gRml4IGhhbmRsaW5nIG9mIHdpbkV4dERMTCBtdWx0aS12YXJiaW5kIFNFVCByZXF1ZXN0cworICAgICAgLSBGaXggTUlCIG91dHB1dCB0cnVuY2F0aW9uIHdpdGggd2luRXh0RExMIEdFVE5FWFQgcmVxdWVzdHMKKyAgICAgIC0gRml4IG91dC1vZi1yYW5nZSBhcnJheSBhY2Nlc3MgaW4gJ2ludGVyZmFjZXMnIHRhYmxlCisgICAgICAtIEhhbHQgYWdlbnQgb24ga2V5IHByZXNzLCB3aGVuIHJ1biBpbiBjb21tYW5kIHByb21wdCB3aW5kb3cgKHRvIGFpZCBkZWJ1Z2dpbmcpCisgICAgICAtIEltcHJvdmUgTmV0LVNOTVAgRExMIGJ1aWxkCisgICAgICAtIEltcHJvdmUgc3VwcG9ydCBmb3Igd2luRXh0RExMIGJ1aWxkCisgICAgICAtIFN1cHByZXNzL3JlbW92ZSB2YXJpb3VzIGNvbXBpbGF0aW9uIHdhcm5pbmdzCisgICAgICAtIHdpbkV4dERMTDogRG9uJ3QgdHJpZ2dlciBhbiBhc3NlcnRpb24gaWYgbm8gZXh0ZW5zaW9uIERMTHMgbG9hZGVkCisgICAgICAtIHdpbkV4dERMTDogSW1wcm92ZSBSRkMtY29tcGxpYW5jZSBvZiByZXNwb25zZSBlcnJvciBjb2RlcyAKKyAgICAgIC0gd2luRXh0RExMOiBMb2cgdGhlIHJlYXNvbiB3aHkgbG9hZGluZyBhbiBleHRlbnNpb24gRExMIGZhaWxzCisgICAgICAtIHdpbkV4dERMTDogRml4IGEgbWVtb3J5IGxlYWsgd2hlbiBTbm1wRXh0ZW5zaW9uUXVlcnkoRXgpIGZhaWxzCiAKLQotKiA1LjQuMiAqCisqNS41KgogCiAgICAgc25tcGxpYjoKLSAgICAgIC0gW0JVRyAxNzkzNTQ1XTogVGFrZSB0aGUgbmFtZSBmcm9tIHRoZSBzb2NrYWRkcl91bgorICAgICAgLSBbQlVHIDExNzE5MDRdOiBmaXggcmVjdmZyb20gaGFuZ3MgKGFscmVhZHkgY2xvc2VkKQorICAgICAgLSBbQlVHIDEzNDUyOTZdOiBmaXggcmVjdmZyb20gaGFuZ3MgKGFscmVhZHkgY2xvc2VkKQorICAgICAgLSBbQlVHIDE2MDAxNzFdOiBTdXBwb3J0IGxvbmdlciBjb21tdW5pdHkgc3RyaW5ncyBpbiBWQUNNIGNvbmZpZy4KKyAgICAgIC0gW0JVRyAxNjE5ODI3XTogaW1wcm92ZSBoYW5kbGluZyBvZiBsaW5rIGRlcGVuZGVuY2llcworICAgICAgLSBbQlVHIDE2NjAwNjFdOiBWYWxpZGF0ZSBlbmdpbmVJRHMgbW9yZSBzdHJpY3RseS4KICAgICAgIC0gW0JVRyAxNzk1ODQwXTogU2lnbmVkIDMyLWJpdCB0cnVuY2F0aW9uIGxvZ2dlZCBhcyBkZWJ1ZyBtZXNzYWdlCi0gICAgICAtIFtCVUcgMTgwMTgzNV06IFN1cHBvcnQgbXVsdGlwbGUgZGVmYXVsdCB0cmFuc3BvcnRzIGZvciBhbiBhcHAuCiAgICAgICAtIFtCVUcgMTg2NjY1NV06IEhhbmRsZSBwYXJzaW5nIGludmFsaWQgT0lEIHN1YmlkZW50aWZpZXJzCisgICAgICAtIFtCVUcgMTg5ODE5OF06IEF2b2lkIGEgc2VnZmF1bHQgd2hlbiBwYXJzaW5nIGJyb2tlbiBtaWJzLgogICAgICAgLSBbQlVHIDE5NTgwNDFdOiBFbnN1cmUgSURzIGFyZSBub3QgdHJ1bmNhdGVkLgotICAgICAgLSBbQlVHIDIwMjc4MzRdOiBFeHRlbmQgc3RyaW5nIHByaW50IGJ1ZmZlciBieSB0aGUgbWluaW11bSBuZWNlc3NhcnkKKyAgICAgIC0gW0JVRyAxOTc2NzcyXTogQ2hhbmdlZCBtaWIgcGFyc2VyIHRvIGhhbmRsZSBsb25nIGJpbmFyeS9oZXggc3RyaW5ncy4KKyAgICAgIC0gW0JVRyAyMDAxMTI0XTogQWxsb3cgZW1iZWRkZWQgTlVMIGNoYXJhY3RlcnMgaW4gdXNtVXNlclB1YmxpYworICAgICAgLSBbQlVHIDIwMjc4MzRdOiBFeHRlbmQgc3RyaW5nIHByaW50IGJ1ZmZlciBieSB0aGUgbWluaW11bSBuZWNlc3NhcnkuCisgICAgICAtIFtCVUcgMjA5OTk4NV06IEFkZGVkIGNvbnN0IHF1YWxpZmllcnMgdG8gdGltZSBjb252ZXJzaW9uIHJvdXRpbnMKKyAgICAgIC0gW1BBVENIIDI4Mjc3MjJdOiBJbXByb3ZlIHN0cnRvdWxsIHRvIGJlIGxlc3MgTVNWQy1zcGVjaWZpYwogICAgICAgLSBbQlVHIENvdmVyaXR5ICMxODNdOiBmaXggbWVtb3J5IGxlYWsgaWYgSVBfUEtUSU5GTyBmYWlscworICAgICAgLSBbUEFUQ0ggIDcwMDY4MV06IGxpbWl0ZWQgc3VwcG9ydCBmb3IgVURQdjQgYnJvYWRjYXN0IGFkZHJlc3NlcworICAgICAgLSBbUEFUQ0ggMTU0ODY3MF06IEZpeCByYW5nZSBjaGVja3MgZm9yIHVuc2lnbmVkIGludGVnZXJzCisgICAgICAgICAgICAgICAgICAgICAgICAgKERlYmlhbiBidWcgIzM4MzM4MCkKKyAgICAgIC0gW1BBVENIIDE1OTI3MDZdOiBGaXggbWVtb3J5IGxlYWsgd2hlbiBjbG9uaW5nIHZhcmJpbmRzLgorICAgICAgLSBbUEFUQ0ggMTYxNjkxMl06IGZpeCBtZW1vcnkgbGVhayBpbiBzbm1wX3VkcF90cmFuc3BvcnQKKyAgICAgIC0gW1BBVENIIDE2MjA0MjRdOiBIb25vciBORVRTTk1QX0RTX0xJQl9ERUZBVUxUX1BPUlQgb3ZlciB0aGUgZGVmYXVsdCBzeXN0ZW0KKyAgICAgIC0gW1BBVENIIDE2MjcwNDldOiBOZXcgQVBJIHRvIGhhbmRsZSBsYXJnZSBudW1iZXJzIG9mIGZpbGUgZGVzY3JpcHRvcnMuCisgICAgICAtIFtQQVRDSCAxNjM0NjIwXTogRml4IGxlYWtzIGZyb20gY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uIGZhaWx1cmUuCisgICAgICAtIFtQQVRDSCAxNjQwMTE0XTogRG9uJ3Qgc3RvcmUgdHJhaWxpbmcgbnVsbCBjaGFyYWN0ZXIuCisgICAgICAtIFtQQVRDSCAxNjQxODk1XTogRXh0ZW5kIHNob3J0IHZpZXcgbWFza3MgKGFzIHBlciBSRkMgc3BlY3MpCisgICAgICAtIFtQQVRDSCAxNjQxOTcyXTogYWRkIG1pc3NpbmcgY29uc3QKKyAgICAgIC0gW1BBVENIIDE2NDIwNzFdOiBEb24ndCBmaWRkbGUgd2l0aCB0aGUgc3RvcmFnZSBvZiBwcmUtZXhpc3RpbmcgdXNlcnMuCisgICAgICAtIFtQQVRDSCAxNjQ1Njk4XTogZml4IDY0LWJpdCBzaWduZWQgaW50ZWdlciBlbmNvZGluZworICAgICAgLSBbUEFUQ0ggMTY1MzY3MF06IENvbnNpc3RlbnQgU05NUHYzIGJlaGF2aW91ciB3aGVuIG9wZW5pbmcgc2Vzc2lvbnMuCisgICAgICAtIFtQQVRDSCAxNjY1NTQzXTogSGFuZGxlIFZBQ00gY2hlY2tzIGNvcnJlY3RseS4KKyAgICAgIC0gW1BBVENIIDE2ODEwMzBdOiBCZXR0ZXIgaGFuZGxpbmcgb2YgZW1wdHkgYXBwdHlwZSBjb25maWdzLgorICAgICAgLSBbUEFUQ0ggMTY4MTk3N106IEFkZCBjYWxsYmFja3MgcHJpb3IgdG8gcmVhZGluZyBjb25maWcuCisgICAgICAtIFtQQVRDSCAxNjg3MzE2XTogRG9uJ3QgZHJvcCBjb25zdCBmcm9tIGNhc3RzLgorICAgICAgLSBbUEFUQ0ggMTY4NzMxN106IFJlbW92ZSBhbiB1bnVzZWQgbG9jYWwgdmFyaWFibGUKKyAgICAgIC0gW1BBVENIIDE2ODczMThdOiBNYWtlIF9zZXNzX3NlbHBvbF9pbmZvIHN0YXRpYy4KKyAgICAgIC0gW1BBVENIIDE2ODczMTldOiBEZWNsYXJlIHNubXBfc2Vzc19yZWFkX2V4dGQoKQorICAgICAgLSBbUEFUQ0ggMTY4NzMyNV06IEZpeCBwcm9ibGVtIHdpdGggb3BlcmF0b3IgcHJlY2VkZW5jZS4KKyAgICAgIC0gW1BBVENIIDE2ODczMzddOiBJbXBsZW1lbnQgX3Nlc3Nfb3BlbiBpbiB0ZXJtcyBvZiBzbm1wX3Nlc3NfYWRkCisgICAgICAtIFtQQVRDSCAxNzI4MjQ3XTogQ2xlYW4gdXAgaW50NjQgdHlwZSBjaGVja2luZyBhbmQgdXNhZ2UgZm9yIGJ1aWxkaW5nIHBhY2tldHMKKyAgICAgIC0gW1BBVENIIDE3MzcwODVdOiBmaXggdGhlIC1NIHN3aXRjaCBmb3IgbWliIHBhcnNpbmcgdnMgZGVmYXVsdHMKICAgICAgIC0gW1BBVENIIDE3NjgyODVdOiBDb3VudCBNSUIgZmlsZXMgY29ycmVjdGx5IGluIGFkZF9taWJkaXIoKQogICAgICAgLSBbUEFUQ0ggMTc3NTEyNF06IEZpeCBjbGllbnRhZGRyIGZ1bmN0aW9uYWxpdHkKICAgICAgIC0gW1BBVENIIDE4MDYzMzZdOiBmaXggLUxTIG9wdGlvbiBwYXJzaW5nCiAgICAgICAtIFtQQVRDSCAxODA3NDg5XTogZml4IGlnbm9yaW5nIG9mIGRpc3BsYXkgaGludHMuCiAgICAgICAtIFtQQVRDSCAxODExNDY5XTogcmVhZF9jb25maWdfZmlsZXNfaW5fcGF0aCgpIHJlYWRzIHBhc3QgbWFsbG9jJ2QgYnVmZmVyCiAgICAgICAtIFtQQVRDSCAxODc1MDIyXTogaW1wcm92ZSBjYWxsYmFjayBsb2NraW5nIG1lY2hhbmlzbXMKKyAgICAgIC0gW1BBVENIIDE4ODIwNjldOiBBZGQgdG9rZW4gZm9yIHNwZWNpZnlpbmcgYW4gZXhhY3QgU05NUHYzIGVuZ2luZUlECiAgICAgICAtIFtQQVRDSCAxODk1OTI3XTogY2hhbmdlIG9ic29sZXRlIHJlY3Yvc2VuZCB0byByZWN2ZnJvbS9zZW5kdG8KLSAgICAgIC0gW1BBVENIIDE4OTgyMDRdLCBbQlVGIDE4OTgxOThdOiBmaXggc2VnZmF1bHQgd2hlbiBwYXJzaW5nIGJyb2tlbiBtaWJzLgorICAgICAgLSBbUEFUQ0ggMTg5ODIwNF06IEF2b2lkIGEgc2VnZmF1bHQgd2hlbiBwYXJzaW5nIGJyb2tlbiBtaWJzLgorICAgICAgLSBbUEFUQ0ggMTkxNjg0MF06IG5ldyBjb25maWcgb3B0aW9uIHRvIHNldCBTTk1QdjEgdHJhcCBhZ2VudCBhZGRyZXNzCisJW1BBVENIIDE5MTY4NDBdOiBpbnRyb2R1Y2UgbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0CiAgICAgICAtIFtQQVRDSCAxOTIxODYxXTogQXZvaWQgZW5kbGVzcyBsb29wIGFmdGVyIHRydW5jYXRpbmcgNjRiaXQgaW50Ci0gICAgICAtIFtQQVRDSCAyMDAzNDUwXTogRml4IGEgY291cGxlIG9mIDY0LWJpdCBwcm9ibGVtcwotICAgICAgLSBDaGFuZ2UgQ09OVEFJTkVSX0lOU0VSVCB0byBub3QgZG8gcGFydGlhbCBpbnNlcnRzIGluIGNvbnRhaW5lcnMKLQl3aXRoIG11bHRpcGxlIGluZGljZXMgd2hlbiBvbmUgaW5zZXJ0IGZhaWxzLgorICAgICAgLSBbUEFUQ0ggMjAwMzQ1MF06IEZpeCBhIGNvdXBsZSBvZiA2NC1iaXQgcHJvYmxlbXMuCisgICAgICAtIFtQQVRDSCAyMDQzMDE4XTogZml4IHJlY3Zmcm9tIGhhbmdzCisgICAgICAtIFtQQVRDSCAyMjU4MjI5XTogUmVtb3ZlIG1pc2xlYWRpbmcgY29tbWVudAorICAgICAgLSBbUEFUQ0ggMjQ3OTcwMF06IEZpeCB6b25lZCBJUCBhZGRyZXNzIHVzZWQgYXMgdGFibGUgaW5kaWNlcworICAgICAgLSBbUEFUQ0ggMjQ5MjM3N106IEZpeCB0eXBvL2J1ZyBpbiBzbm1wX2VuYWJsZV9jYWxsYmFjaygpCisgICAgICAtIFtQQVRDSCAyNTA1NDg4XTogRml4IGFsYXJtcyBub3QgdHJpZ2dlcmVkIGR1ZSB0byBsYXJnZSBjbG9jayBza2V3cy4KKyAgICAgIC0gW1BBVENIIDI1MzgxNjldOiBQcmV2ZW50IGluZmluaXRlIHJldHJpZXMgZm9yIGFuIGludmFsaWQgZXJyb3ItaW5kZXguCisgICAgICAtIFtQQVRDSCAyNjg5MzYyXTogRml4IGhhbmRsaW5nIG9mIElQdjYgaG9zdG5hbWVzLgorICAgICAgLSBbUEFUQ0ggMjcxMzg0MV06IEZpeCBydW50aW1lIGVycm9ycyB0cmlnZ2VyZWQgYnkgaGlnaC1BU0NJSSBjaGFycworICAgICAgLSBbUEFUQ0ggMjc3Mjc4N106IENsZWFuZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcgbGFyZ2UgZmRfc2V0cy4KKyAgICAgIC0gW1BBVENIIDI3ODA0MTFdOiBGaXggY29tcGlsZXIgd2FybmluZ3MKKyAgICAgIC0gW0ZFQVRVUkVTICA0NTQwMjhdOiBEZXRlY3QgZW1wdHkgTUlCIGluZGV4IGZpbGVzLgorICAgICAgLSBbRkVBVFVSRVMgIDg1MTg4N106IFJlcG9ydCByYW5nZSBpbmZvcm1hdGlvbiBmb3IgaW52YWxpZCBTRVQgcmVxdWVzdHMuCisgICAgICAtIFtGRUFUVVJFUyAxMDQxODg4XTogQ2hlY2sgZGlyZWN0b3J5IHBhdGhzIGZvciBjb25maWcgZmlsZXMuCisgICAgICAtIFtGRUFUVVJFUyAxNDA3NDc2XTogUmVuYW1lICdzdHJpY3RDb21tZW50VGVybScgdG8gcmVmbGVjdCBhY3R1YWwgYmVoYXZpb3VyLgorICAgICAgLSBBZGQgR0NDIGZvcm1hdCBjaGVja2luZyBhdHRyaWJ1dGVzIHRvIHRoZSBkZWJ1ZyBmdW5jdGlvbnMuCisgICAgICAtIEFkZCBpdGVyYXRvciBmb3Igc2luZ2x5IGxpbmtlZCBsaXN0cworICAgICAgLSBDb3JyZWN0IE1BWF9FTkdJTkVJRF9MRU5HVEggdG8gMzIgKGFzIHBlciBTbm1wRW5naW5lSUQgVEMpCisgICAgICAtIENvcnJlY3QgcmVnaXN0cmF0aW9uIG9mIG11bHRpcGxlIHByZW1pYiBjb25maWcgaGFuZGxlcnMuCisgICAgICAtIERlYWxsb2NhdGUgdmFyaW91cyByZXNvdXJjZXMgaW4gc2h1dGRvd25fbWliCiAgICAgICAtIERvIG5vdCBsZWFrIG1lbW9yeSB3aGVuZXZlciBhbiB1ZHAgYWRkcmVzcyBpcyBmb3JtYXR0ZWQuCiAgICAgICAtIERvIG5vdCB0cnkgdG8gbG9vayB1cCBlbXB0eSBzdHJpbmdzIGFzIGhvc3RuYW1lcyBmb3IgSVB2NgotICAgICAgLSBGaXggcmVnaXN0ZXJpbmcgb2YgbXVsdGlwbGUgcHJlbWliIGNvbmZpZyBoYW5kbGVycworICAgICAgLSBGaXggZm9yd2FyZGluZyBlbmNvZGluZwogICAgICAgLSBGaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBzcHJpbnRmIGZvciBVRFAvSVB2NgorICAgICAgLSBIYW5kbGUgbWFwcGluZyBjb21wbGV4IHRyYW5zcG9ydCBzdHJpbmdzIHRvIHNpbXBsZSBuYW1lIGRlZmluaXRpb25zCisgICAgICAtIEhhcmRjb2RlIGRlZmF1bHQgcG9ydCBudW1iZXJzIChyYXRoZXIgdGhhbiB1c2UgZ2V0c2VydmJ5bmFtZSkKKyAgICAgIC0gSW1wbGVtZW50IFJGQzUzNDMgY29udGV4dEVuZ2luZUlEIHByb2JpbmcuCisgICAgICAtIEltcHJvdmUgQ09OVEFJTkVSX0lOU0VSVCBoYW5kbGluZyBvZiBwYXJ0aWFsIGZhaWx1cmUgd2l0aCBtdWx0aXBsZSBpbmRleGVzCisgICAgICAtIEltcHJvdmUgbmV0c25tcF93YXRjaGVyX2luZm8gdG8gaGFuZGxlIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGRhdGEuCisgICAgICAtIEludHJvZHVjZSBwcmludGYtbGlrZSB2ZXJzaW9ucyBvZiBjb25maWdfcGVycm9yIGFuZCBjb25maWdfcHdhcm4KKyAgICAgIC0gTGlicmFyeSBsYXllcmluZyBpbXByb3ZlbWVudHMKKyAgICAgIC0gUmVhZCBkZWZ7VGFyZ2V0LERvbWFpbn0gZnJvbSBzbm1wLmNvbmYgYXMgd2VsbCBhcyA8YXBwPi5jb25mCisgICAgICAtIHJlbmFtZSBNSUIgbWFjcm8gdG8gTkVUU05NUF9NSUIyX09JRCwgTUlCIGlzIHRvbyBnZW5lcmljIGFuZCBtYXkKKwljb25mbGljdCB3aXRoIGFwcGxpY2F0aW9ucy4gICBUaGUgb2xkIE1JQiBtYWNybyBpcyBrZXB0IGZvcgorCWJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHVubGVzcyBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUyBpcworCWRlZmluZWQuCiAKICAgICBzbm1wZDoKLSAgICAgIC0gW0JVRyAxNTU3MzcyXTogUmVhbGlnbiBockZTU3RvcmFnZUluZGV4IHdpdGggaHJTdG9yYWdlVGFibGUKKyAgICAgIC0gW0JVRyAgOTAyNjEwXTogRG9uJ3QgZGlzY2FyZCBwZW5kaW5nIGRhdGEgZm9sbG93aW5nIGEgVFJBUC4KKyAgICAgIC0gW0JVRyAgOTAyODAxXTogRml4IG9yZGVyaW5nIG9mIFNNVVgtcmVnaXN0ZXJlZCBzdWJ0cmVlcy4KKyAgICAgIC0gW0JVRyAxMDQ2MzI3XTogUmVzZXQgImluY2x1ZGVBbGxEaXNrcyIgZmxhZyB3aGVuIHJlbG9hZGluZy4KKyAgICAgIC0gW0JVRyAxMTAyMDU4XTogU2tpcCBub24tbW91bnRlZCBkaXNrcyAoZS5nLiBzd2FwIHBhcnRpdGlvbnMpCisgICAgICAtIFtCVUcgMTM5Nzg5NV06IGluY2x1ZGUgbWlzc2luZyBpbnRlcmZhY2UgZGVjbGFyYXRpb25zCisgICAgICAtIFtCVUcgMTQwMDEwMV06IHJlbW92ZSBkZWxldGVkIGludGVyZmFjZXMgZnJvbSBpZlRhYmxlCisgICAgICAtIFtCVUcgMTQxMzcyOF06IFJlZmVyZW5jZSBpbmRleCB2YWx1ZXMgaW4gZGVidWcgb3V0cHV0IGNvcnJlY3RseS4KKyAgICAgIC0gW0JVRyAxNDE2Mjc2XTogSGFuZGxlIGRlcGVuZGVuY3kgb24gTUlCIHBhcnNpbmcgQVBJLgorICAgICAgLSBbQlVHIDE1NDY4MTddOiBGaXggc25tcEVudGVycHJpc2UgdmFyYmluZCB3aGVuIGZvcndhcmRpbmcgdjEgdHJhcHMuCisgICAgICAtIFtCVUcgMTU1ODgyM106IGZpeCBpcEFkZHJlc3NUYWJsZSBtZW1vcnkgbGVhaworICAgICAgLSBbQlVHIDE2MDAyNjFdOiBIYW5kbGUgbm9uLXg4NiAvcHJvYy9jcHVpbmZvIGZvcm1hdAorICAgICAgLSBbQlVHIDE2MDA0MzJdOiBIYW5kbGUgc2lnbmFscyBwcm9wZXJseSB3aGVuIHJlc3RhcnRpbmcgdGhlIGFnZW50LgorICAgICAgLSBbQlVHIDE2MDIyODZdOiBEb24ndCBsZXQgdGFibGUgaG9sZXMgYmxvY2sgbGF0ZXIgcm93cy4KKyAgICAgIC0gW0JVRyAxNjI4NjEzXTogUmVzdG9yZSBtZW1Ub3RhbEZyZWUuMCBvbiBTb2xhcmlzCisgICAgICAtIFtCVUcgMTYzMzU5NV06IEZpeCBBZ2VudFggaGFuZGxpbmcgb2YgQ291bnRlcjY0IHZhbHVlcworICAgICAgLSBbQlVHIDE2NzcwNjNdOiBDaGVjayBmb3IgZmFpbGVkIG1hbGxvYyBjYWxscy4KKyAgICAgIC0gW0JVRyAxNjg1MDY3XTogTW9yZSBwcmVjaXNlIGhhbmRsaW5nIG9mIFNOTVB2My1hZG1pbiBNSUIgdGFibGVzLgorICAgICAgLSBbQlVHIDE2ODUwODFdOiBDaGVjayBmb3IgdmFsaWQgT0lEIG9uIEZyZWUvVW5kbyBwYXNzZXMuCisgICAgICAtIFtCVUcgMTY5MzAzOV06IGJlIHNpbGVudCB3aGVuIGluc2VydCBmYWlscy4KKyAgICAgIC0gW0JVRyAxNzEyOTg4XTogZGVmYXVsdC9jb25maWd1cmFibGUgbWF4ICMgdmFyYmluZHMgcmV0dXJuZWQgYnkgR0VUQlVMSworICAgICAgLSBbQlVHIDE3NDUxMTNdOiBIYW5kbGUgc2luZ2xlLWxpbmUgb3V0cHV0IGluIFVDRCBjb21wYXRhYmlsaXR5IG1vZGUuCiAgICAgICAtIFtCVUcgMTc0ODIwNl06IFByb3RlY3QgYWdhaW5zdCBmYWlsdXJlcyB0byBvcGVuIC9ldGMvbXRhYiAob3IgZXF1aXYpCi0gICAgICAtIFtCVUcgMTc1ODIxMl06IEhhbmRsaW5nIG1pc3NpbmcgdmFyaWFibGUgdHlwZXMgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKKyAgICAgIC0gW0JVRyAxNzU4MjEyXTogSGFuZGxlIG1pc3NpbmcgdmFyaWFibGUgdHlwZXMgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKKyAgICAgIC0gW0JVRyAxNzYwNjMzXTogZml4IHR5cG8gaW4gZGVidWcgbWVzc2FnZQogICAgICAgLSBbQlVHIDE3NzEyMjFdOiBSZXRhaW4gaWZMYXN0Q2hhbmdlIGluZm9ybWF0aW9uIG9uIGRhdGEgcmVsb2FkLgogICAgICAgLSBbQlVHIDE3OTI4OTBdOiBpbmNsdWRlIENJRlMgbW91bnRzIHdoZW4gc2tpcHBpbmcgcmVtb3RlIGZpbGVzeXN0ZW1zCiAgICAgICAtIFtCVUcgMTgyMjM2MF06IEZpeCBzcGlubG9jayBoZWxwZXIgZXJyb3IgaGFuZGxpbmcuCi0gICAgICAtIFtCVUcgMTg1MTA0N106IERvbid0IG92ZXItcHJvY2VzcyBmYWlsZWQgd2F0Y2hlciByZXF1ZXN0cwotICAgICAgLSBbQlVHIDE5MTI2NDddOiBGaXggbWVtb3J5IGxlYWsgZm9sbG93aW5nIGZhaWxlZCByZXF1ZXN0Ci0gICAgICAtIFtCVUcgMTkzMTM5MV06IEZpeCByZXBvcnRpbmcgb2YgTWVtb3J5IGJ1ZmZlcnMgYW5kIGNhY2hlZCBtZW1vcnkKLSAgICAgIC0gW0JVRyAyMDAzMTQ0XTogSW5jcmVhc2Ugc2l6ZSBvZiBBZ2VudFggcGFja2V0Ci0gICAgICAtIFtCVUcgMjAwNjc4Nl06IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4IGNoYXJhY3RlcnMKLSAgICAgIC0gW0JVRyAyMDE4MDMxXTogRG9uJ3QgcHJvYmUgZW5naW5lSUQgaW4gaW50ZXJuYWwgbW9uaXRvciBzZXNzaW9ucwotICAgICAgLSBbQlVHIDIwMjM4MDNdOiBSZW1vdmUgaXJyZWxldmFudCBjb25maWd1cmUgZGVwZW5kZW5jeSAoSFAtVVggMTEpCi0gICAgICAtIFtQQVRDSCAxNzE2NTQ4XTogRml4IGhlbHAgb3V0cHV0IGZvciAtRAorICAgICAgLSBbQlVHIDE5MTI2NDddOiBGaXggbWVtb3J5IGxlYWsgZm9sbG93aW5nIGZhaWxlZCByZXF1ZXN0cy4KKyAgICAgIC0gW0JVRyAxOTMxMzkxXTogRml4IHJlcG9ydGluZyBvZiBNZW1vcnkgYnVmZmVycyBhbmQgY2FjaGVkIG1lbW9yeS4KKyAgICAgIC0gW0JVRyAyMDAxMTI0XTogQWxsb3cgZW1iZWRkZWQgTlVMIGNoYXJhY3RlcnMgaW4gdXNtVXNlclB1YmxpYworICAgICAgLSBbQlVHIDIwMDMxNDRdOiBJbmNyZWFzZSBzaXplIG9mIEFnZW50WCBwYWNrZXQgYnVpbGQgYnVmZmVyCisgICAgICAtIFtCVUcgMjAwNjc4Nl06IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4IGNoYXJhY3RlcnMuCisgICAgICAtIFtCVUcgMjAxODAzMV06IERvbid0IHByb2JlIGVuZ2luZUlEIGluIGludGVybmFsIG1vbml0b3Igc2Vzc2lvbnMuCisgICAgICAtIFtCVUcgMjY5MzY3MF06IERvbid0IG9wZW4gKCYgY2xvYmJlcikgQWdlbnRYIHNvY2tldCBpZiBvdGhlciB0cmFuc3BvcnRzIGZhaWwKKyAgICAgIC0gW0JVRyAyODIyMzU1XTogRml4IG1lbW9yeSBsZWFrcyBvbiB1ZHBFbmRwb2ludFRhYmxlIChsaW51eCkgUGF0Y2gKKwlzdXBwbGllZCBieSBGcmFuayBMaWNodGVuaGVsZAorICAgICAgLSBbUEFUQ0ggMTIyNTQ0MF06IERlbGF5IHNpZ2h1cCB0aWxsIGl0IGlzIHNhZmUuCisgICAgICAtIFtQQVRDSCAxMjU3MzQ3XTogTm9uLWZpeGVkIHNpemUgY29ubmVjdGlvbiBidWZmZXIKKyAgICAgIC0gW1BBVENIIDE1NTA3MzBdOiBSZXBvcnQgZXJyb3JzIGZyb20gaXRlcmF0b3ItYmFzZWQgaGFuZGxlcnMuCisgICAgICAtIFtQQVRDSCAxNTg1MTQ2XTogRXh0ZW5kIHJhbmdlIG9mIGF2YWlsYWJsZSBlcnJvciBjb2RlcworICAgICAgLSBbUEFUQ0ggMTU5NTU2OF06IGZpeCBkZWxlZ2F0ZWQgU0VUIHJlcXVlc3RzIGZyb20gYWdlbnR4IHN1YmFnZW50cworICAgICAgLSBbUEFUQ0ggMTYwMTE4OF06IEhhbmRsZSBzaWduYWxzIHByb3Blcmx5IHdoZW4gcmVzdGFydGluZyB0aGUgYWdlbnQuCisgICAgICAtIFtQQVRDSCAxNjAxNDUzXTogRHluYW1pYyBNZW1vcnkgZmFpbHVyZSBoYW5kbGluZyBpbXByb3ZlbWVudHMKKyAgICAgIC0gW1BBVENIIDE2MTcyNTVdOiBmaXggbGVuZ3RoIG9mIHRoZSBoaXN0b3J5IGFycmF5IHRvIG1hdGNoIGNvZGUuCisgICAgICAtIFtQQVRDSCAxNjIwNDI0XTogRml4IGRlZmF1bHQgcG9ydCBmb3Igc2VuZGluZyBub3RpZmljYXRpb24KKyAgICAgIC0gW1BBVENIIDE2MjUwNjldOiBzcGVlZCBpbXByb3ZlbWVudHMgZm9yIHNvbGFyaXMgcm91dGluZyB0YWJsZSBhY2Nlc3MKKyAgICAgIC0gW1BBVENIIDE2MzkyODJdOiBTYXZlIHBlcnNpc3RlbnQgc25tcFRhcmdldFBhcmFtc1RhYmxlIHNldHRpbmdzIGNvcnJlY3RseS4KKyAgICAgIC0gW1BBVENIIDE2Mzk3MjZdOiBSZXBvcnQgcGh5c2ljYWwgbWVtb3J5IGNvcnJlY3RseSBvbiAqQlNECisgICAgICAtIFtQQVRDSCAxNjQxMzMyXTogSW5jbHVkZSBtaXNzaW5nIGFnZW50IGNvbmZpZyBkZWZpbml0aW9ucy4KKyAgICAgIC0gW1BBVENIIDE2NDE2ODVdOiBIYW5kbGUgdW5yZXNwb25zaXZlIEFnZW50WCBzdWJhZ2VudHMgbW9yZSByZWxpYWJseS4KKyAgICAgIC0gW1BBVENIIDE2NDE4NjVdOiBEb24ndCBkb3VibGUgY2hlY2sgc25tcFRyYXBPSUQgaW4gdGhlIGZpbHRlciB0YWJsZS4KKyAgICAgIC0gW1BBVENIIDE2NDIyNTVdOiBIYW5kbGUgc2F2aW5nIGxvbmcgc25tcE5vdGlmeUZpbHRlclRhYmxlIGVudHJpZXMuCisgICAgICAtIFtQQVRDSCAxNjQ0MjgwXTogRG9uJ3QgYXV0b21hdGljYWxseSBwcm9iZSBmb3IgdjMgRW5naW5lSURzLgorICAgICAgLSBbUEFUQ0ggMTY0NDI4MF06IFVzZSB0aGUgY29ycmVjdCBlbmdpbmVJRCB3aGVuIHNlbmRpbmcgdjMgdHJhcHMuCisgICAgICAtIFtQQVRDSCAxNjQ0NzE0XTogcmVwbGFjZSBsYXN0IHVzZSBvZiBkZXByZWNhdGVkIGNvcHlfd29yZCBieSBjb3B5X253b3JkCisgICAgICAtIFtQQVRDSCAxNjU0NDI0XTogSGFuZGxlIHJvdyBkZWxldGlvbiBpc3N1ZXMgaW4gZGF0YXNldCB0YWJsZXMKKyAgICAgIC0gW1BBVENIIDE2NTc3NDFdOiBIYW5kbGUgNjQtYml0IHR5cGVzIHZpYSBwYXNzIG1lY2hhbmlzbS4KKyAgICAgIC0gW1BBVENIIDE2NTk2MjNdOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5IHBhc3N3b3JkLgorICAgICAgLSBbUEFUQ0ggMTY2NTU0M106IEhhbmRsZSBWQUNNIGNoZWNrcyBjb3JyZWN0bHkuCisgICAgICAtIFtQQVRDSCAxNjY1NTQ5XTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcyBjb3JyZWN0bHkuCisgICAgICAtIFtQQVRDSCAxNjY1OTg1XTogSW1wbGVtZW50IGlwUmVhc21UaW1lb3V0CisgICAgICAtIFtQQVRDSCAxNjY2NzM3XTogaW5jbHVkZSBJUHY2IHRyYWZmaWMgaW4gdmFyaW91cyBVRFAgY291bnRlcnMuCisgICAgICAtIFtQQVRDSCAxNjY4MTkzXTogRml4IGNoZWNrIGZvciB2NiBSZWFzbU1heFNpemUgc3VwcG9ydC4KKyAgICAgIC0gW1BBVENIIDE2NjgxOTNdOiBVcGRhdGUgcmVnaXN0cmF0aW9uIG9mIFJlYXNtTWF4U2l6ZSBzdXBwb3J0LgorICAgICAgLSBbUEFUQ0ggMTY2ODk1Ml06IElnbm9yZSB6b21iaWUgcHJvY2Vzc2VzLgorICAgICAgLSBbUEFUQ0ggMTY2OTA0OF06IEFkZCBzdXBwb3J0IGZvciBpcHY2SW50ZXJmYWNlSWRlbnRpZmllcgorICAgICAgLSBbUEFUQ0ggMTY3NjQ3OF06IGZpeCB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3MKKyAgICAgIC0gW1BBVENIIDE2NzgzMDFdOiBEZWFsbG9jYXRlIGRvbWFpbiByZWdpc3RyeSBhdCBzaHV0ZG93bgorICAgICAgLSBbUEFUQ0ggMTY3ODMwNV06IERlYWxsb2NhdGUgY2FjaGUgaW4gaGFyZHdhcmUvY3B1L2NwdSBvbiBzaHV0ZG93bgorICAgICAgLSBbUEFUQ0ggMTY3ODMwNl06IERlYWxsb2NhdGUgbG9nIGluIG5vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cKKyAgICAgIC0gW1BBVENIIDE2Nzg3ODhdOiBCZXR0ZXIgaGFuZGxpbmcgb2YgU01VWCBzb2NrZXQgZGVzY3JpcHRvcnMuCisgICAgICAtIFtQQVRDSCAxNjgxMDQzXTogY2xlYW4gdXAgaGVscGVyIGluY2x1ZGVzCisgICAgICAtIFtQQVRDSCAxNjgzMDU0XTogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8gaWRlbnRpZnkgZGlmZmVyZW50IHByb2Nlc3Nlcy4KKyAgICAgIC0gW1BBVENIIDE2ODczMzZdOiBTdGFydCB1c2luZyB0aGUgZW5oYW5jZWQgcmVhZF9jb25maWcgaW50ZXJmYWNlCisgICAgICAtIFtQQVRDSCAxNjkyNzY4XTogRml4IGNvcHlpbmcgb2Ygbm9uLW9jdGV0LWFsaWduZWQgSVAgYWRkcmVzcyBwcmVmaXhlcy4KKyAgICAgIC0gW1BBVENIIDE2OTI4MTddOiBJbXByb3ZlZCBSRkMgNDI5MyBzdXBwb3J0IChpbmMuIG5vbi11bmljYXN0L3JhbmRvbSBJUCBhZGRyZXNzZXMpCisgICAgICAtIFtQQVRDSCAxNjk4MTg0XTogUmVnaXN0ZXIgbm9uLWRlZmF1bHQgY29udGV4dCBpbnRlZ2VycyBhcyB3cml0YWJsZS4KKyAgICAgIC0gW1BBVENIIDE3MDAxNTddOiBGaXggb3JkZXJpbmcgb2YgZXhlYyB0b2tlbnMgaW4gTUlCIG91dHB1dAorICAgICAgLSBbUEFUQ0ggMTcwMDczMF06IFJlbW92ZSB1bnVzZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgorICAgICAgLSBbUEFUQ0ggMTcwMDczMl06IEZpeCBkZWJ1ZyBvdXRwdXQgc3RhdGVtZW50cy4KKyAgICAgIC0gW1BBVENIIDE3MDA3MzddOiBUaWR5IHVwIHNldFNlcmlhbE5vIGltcGxlbWVudGF0aW9ucy4KKyAgICAgIC0gW1BBVENIIDE3MDIzNjFdOiBSZWFkIHN0YXRzIGZyb20gL3Byb2MvbmV0L3NubXA2CisgICAgICAtIFtQQVRDSCAxNzAyMzY2XTogU3VwcG9ydCBmb3IgaWNtcFN0YXRzVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MDMwMDRdOiBDb25zb2xpZGF0ZSBzbm1wNiBoYW5kbGluZy4KKyAgICAgIC0gW1BBVENIIDE3MTA2MzJdOiBmaXggbWVtb3J5IGxlYWsgb24gYnJva2VuIGNvbnRhaW5lciBpbnNlcnRpb25zIGZvciB0aGUgaXBBZGRyZXNzVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTUzOTVdOiBmaXggaWNtcCB0YWJsZSBlcnJvcnMgaW4gbmV3IGljbXAgY29kZQorICAgICAgLSBbUEFUQ0ggMTcxNTQwNl06IHJlZ2lzdHJhdGlvbiBvcmRlcmluZyBmaXhlcyBmb3IgaWNtcFN0YXRzVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTY1NDhdOiBGaXggaGVscCBvdXRwdXQgc28gbm8gc3BhY2UgaXMgcHJpbnRlZCBiZXR3ZWVuIC1EIGFuZCBhcmd1bWVudHMuCisgICAgICAtIFtQQVRDSCAxNzE5MjUzXTogZml4IHNraXBORlNJbkhvc3RSZXNvdXJjZXMgZm9yIG11bHRpcGxlIHdhbGtzCisgICAgICAtIFtQQVRDSCAxNzIxMDk2XTogcmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBzdGF0cyBmcm9tIGtlcm5lbCBleHRyYWN0aW9uIGZvciBiZXR0ZXIgcG9ydGFiaWxpdHkuCisgICAgICAtIFtQQVRDSCAxNzIzNjExXTogTmV3IGltcGxlbWVudGF0aW9uIG9mIHRoZSBSTU9OIGFsYXJtVGFibGUKKyAgICAgIC0gW1BBVENIIDE3Mjk2MjldOiBGaXggbWVtb3J5IGxlYWsgaW4gZGlzbWFuIGFnZW50LgorICAgICAgLSBbUEFUQ0ggMTczNzQzOV06IGF1dG9tYXRpYyBsaW5rIHVwL2Rvd24gdHJhcHMgb24gYSB3YWxrCiAgICAgICAtIFtQQVRDSCAxNzQ0MTU3XTogUmVwb3J0IGR1cGxpY2F0ZSAiZXh0ZW5kL2V4ZWMiIGlkZW50aWZpZXJzLgotICAgICAgLSBbUEFUQ0ggMTc0NjgzMV06IGZpeCBwcm9jZXNzIGNoZWNraW5nIHJhY2UgY29uZGl0aW9uCisgICAgICAtIFtQQVRDSCAxNzQ2ODMxXTogZml4IHByb2Nlc3MgY2hlY2tpbmcgcmFjZSBjb25kaXRpb24gdW5kZXIgTGludXggYW5kIHBsYXRmb3JtICNpZmRlZnMKICAgICAgIC0gW1BBVENIIDE3NTI5MzRdOiBGaXggb2ZmLWJ5LW9uZSBxc29ydCBlcnJvciBpbiB0YWJsZSB1dGlsaXRpZXMuCiAgICAgICAtIFtQQVRDSCAxNzUzNDM3XTogRml4IGVycm9yIGluZGV4IG9uIGZhaWxpbmcgU0VUIHJlcXVlc3RzCiAgICAgICAtIFtQQVRDSCAxNzUzNDQ5XTogRml4IEFnZW50WCBlcnJvciBwcm9wYWdhdGlvbgogICAgICAgLSBbUEFUQ0ggMTc1MzQ2M106IEZpeCBBZ2VudFggc3ViYWdlbnQgcGluZyBhbGFybSBoYW5kbGluZwogICAgICAgLSBbUEFUQ0ggMTc1ODIwOF06IEZpeCBtZW1vcnkgbGVhawotICAgICAgLSBbUEFUQ0ggMTc3NDYxMl06IE1vcmUgcmVzaWxpZW50IHByb2Nlc3Mgc3RhdHVzIGhhbmRsaW5nCi0gICAgICAtIFtQQVRDSCAxNzgzNzMzXTogSW5jbHVkZSB2ZXJzaW9uIGluZm8gaW4gaHJTV0luc3QgdGFibGUgKHNvbGFyaXMpCi0gICAgICAtIFtQQVRDSCAxNzg0NzQ3XTogRml4IGlwIGFkcmVzc2VzIG9uIDY0IGJpdCBzeXN0ZW1zCisgICAgICAtIFtQQVRDSCAxNzgzNzMzXTogUHV0IHRoZSBwYWNrYWdlIHZlcnNpb24gbnVtYmVyIGludG8gdGhlIGhyU1dJbnN0IHRhYmxlIGZvciBzb2xhcmlzLgorICAgICAgLSBbUEFUQ0ggMTc4NDc0N106IEZpeCBsb25nIHVzYWdlIGZvciBpcCBhZHJlc3NlcyBvbiA2NCBiaXQgc3lzdGVtcyBpbiB2YXJpb3VzIE1JQi1JSSB0YWJsZXMuCisgICAgICAtIFtQQVRDSCAxNzk3MTExXTogaW1wbGVtZW50IElQLU1JQjo6aXBJZlN0YXRzVGFibGUKKyAgICAgIC0gW1BBVENIIDE4MDQ0NDVdOiBIaWdoIG9yZGVyIGJpdHMgb2YgSENJbk9jdGV0cyBub3Qgc2V0IG9uIFNvbGFyaXMKKyAgICAgIC0gW1BBVENIIDE4MDY1MDFdOiBBZGQgQVBJIGZvciBzZW5kaW5nIHRyYXBzIHdpdGggYSBzbm1wdjMgY29udGV4dAorICAgICAgLSBbUEFUQ0ggMTgyMzQ2NV06ICBmaXggaWNtcCBjYWNoZSByZWdpc3RyYXRpb24KICAgICAgIC0gW1BBVENIIDE4MjM4MDBdOiByZWxlYXNlIGFuZCByZWxvYWQgYWxsIHRyYXAgZGVzdGluYXRpb25zIG9uIFNJR0hVUAogICAgICAgLSBbUEFUQ0ggMTgyNjA4OF06IFVzZSB0aGUgcmlnaHQgaW50ZXJmYWNlIHRvIHJlYWQgdGhlIG5ldG1hc2sKLSAgICAgIC0gW1BBVENIIDE4MjYxMDJdOiBzdXBwb3J0IGxvbmdlciBpbnRlcmZhY2UgbmFtZXMgb24gbGludXgKLSAgICAgIC0gW1BBVENIIDE4Mjg4MzldOiBoYW5kbGUgb2YgZGlzayBtb3VudCBwYXRocyB3aXRoIGVtYmVkZGVkIHNwYWNlcworICAgICAgLSBbUEFUQ0ggMTgyODgzOV06IHRvIHByb3ZpZGUgYmV0dGVyIGhhbmRsaW5nIG9mIGRpc2tzIG1vdW50ZWQgb24gcGF0aHMgd2l0aCBlbWJlZGRlZCBzcGFjZXMKICAgICAgIC0gW1BBVENIIDE4NDk5MDNdOiBkbyBub3Qgc3BhbSBsb2cgd2l0aCBhc3NlcnRzIHdoZW4gWEVOIGlzIHVzZWQKLSAgICAgIC0gW1BBVENIIDE4NjY4MjNdOiB0cnVuY2F0ZSAzMiBiaXQgY291bnRlciB2YWx1ZXMgb24gNjQgYml0IG1hY2hpbmVzCi0gICAgICAtIFtQQVRDSCAxODc5MjYxXTogQWRkIGluYWN0aXZlIG1lbW9yeSB0byBjYWNoZWQgcmVwb3J0IChmcmVlYnNkKQorICAgICAgLSBbUEFUQ0ggMTg2NjgyM106IHRydW5jYXRlIDMyIGJpdCBjb3VudGVyIHZhbHVlcyBvbiA2NCBiaXQgbWFjaGluZXMgdG8gYXZvaWQgYm9ndXMgd2FybmluZ3MuCisgICAgICAtIFtQQVRDSCAxODc5MjYxXTogQWRkIGluIGluYWN0aXZlIG1lbW9yeSB0byB0aGUgY2FjaGVkIHJlcG9ydCBmb3IgZnJlZWJzZAorICAgICAgLSBbUEFUQ0ggMTg4MjYyMV06IEFkZCBMVk0gc3VwcG9ydCB0byB0aGUgcGFydGl0aW9uIHRhYmxlCiAgICAgICAtIFtQQVRDSCAxODkzNDY4XTogZml4ZWQgcmVnaXN0cmF0aW9uIG9mIE9JRHMgd2l0aCByYW5nZXMKLSAgICAgIC0gW1BBVENIIDE4OTYxMThdOiBmaXggaWZUYWJsZSAzMmJpdCBjb3VudGVycyBvbiBsaW51eAotICAgICAgLSBbUEFUQ0ggMTkwOTgxM106IGZpeCB0YWJsZV9pdGVyYXRvciBoaW50IGZvciBTT1JURUQgdGFibGVzCi0gICAgICAtIFtQQVRDSCAxOTQ0NTgxXTogRG9uJ3QgY29yZSBkdW1wIG9uIGxvbmcgc3RyaW5nIGluZGV4IHZhbHVlcy4KLSAgICAgIC0gW1BBVENIIDE5NTE5OTZdOiBGaXggZm9yIENQVSBzdGF0cyBvbiBGcmVlQlNECisgICAgICAtIFtQQVRDSCAxOTAxNzY0XTogZm9yIHN1cHBvcnRpbmcgbG9nd2F0Y2ggZmlsZXMgdGhhdCBhcmUgZGF0ZSBiYXNlZAorICAgICAgLSBbUEFUQ0ggMTkwOTgxM106IGZpeCB0YWJsZV9pdGVyYXRvciBoYW5kbGluZyBvZiBTT1JURUQgaGludAorICAgICAgLSBbUEFUQ0ggMTkxNjg0MF06IG5ldyBjb25maWcgb3B0aW9uIHRvIHNldCBTTk1QdjEgdHJhcCBhZ2VudCBhZGRyZXNzCisgICAgICAtIFtQQVRDSCAxOTQ0NTgxXTogUHJvdGVjdCBhZ2FpbnN0IGNvcmUgZHVtcHMgd2l0aCBsb25nIHN0cmluZyBpbmRleCB2YWx1ZXMuCiAgICAgICAtIFtQQVRDSCAxOTY3MTk0XTogUmVjb2duaXNlIE5GUzQgbW91bnRzCisgICAgICAtIFtQQVRDSCAxOTc3NDM5XTogRml4IHBhc3MvX3BlcnNpc3QgYnVnIHdpdGggU0VUIG9pZCB2YWx1ZQorICAgICAgLSBbUEFUQ0ggMTk5NTc1M106IG1pbm9yIGNsZWFudXAgYWdlbnQvYXV0b19ubGlzdC5jCisgICAgICAtIFtQQVRDSCAyMDEyNDAyXTogZG9uJ3QgZmFpbCBvbiBmYWlsdXJlIHRvIGxvb2sgdXAgaW50ZXJmYWNlIGVycm9yIGNvdW50ZXJzLgogICAgICAgLSBbUEFUQ0ggMjAxNDIwNF06IFN1cHBvcnQgLWcge2dyb3VwbmFtZX0KICAgICAgIC0gW1BBVENIIDIwMjI5MzZdOiBGaXggQWdlbnRYIENvdW50ZXI2NCBkZWNvZGluZyBvbiA2NC1iaXQgYXJjaGl0ZWN0dXJlcwotICAgICAgLSBbUEFUQ0ggMjAyMzYzM106IGFkZCBTQ1RQLU1JQiBpbXBsZW1lbnRhdGlvbiAoTGludXggb25seSkKKyAgICAgIC0gW1BBVENIIDIwODI3MjZdOiBjb3JyZWN0bHkgcmVwb3J0IE5JQyBzcGVlZHMgaGlnaGVyIHRoYW4gNEdiaXQvcworICAgICAgLSBbUEFUQ0ggMjEwMzQ5Ml06IGltcGxlbWVudCBSTU9OLU1JQjo6ZXRoZXJTdGF0c0phYmJlcnMKKyAgICAgIC0gW1BBVENIIDIxMjQyODhdOiBGaXggc2V0dGluZyBvZiB1c21Vc2VyUHJpdlByb3RvY29sIGF0IGNyZWF0aW9uLgorICAgICAgLSBbUEFUQ0ggMjE2MjY1Ml06IHBhdGNoIHRvIGZpeCBzaW1wbGUgaHJmcyBjaGVja3Mgd2hlbiBORlMgaXMgaW4gdXNlLgorICAgICAgLSBbUEFUQ0ggMjM4NDc3OV06IEZpeCBoYW5kbGluZyBvZiBHZXRCdWxrIHdpdGggTj4wLE09PTAKKyAgICAgIC0gW1BBVENIIDI0MDYzNzhdOiBGaXggaHJTV1J1blBlcmZNZW0gb24gNjQtYml0IFNvbGFyaXMgc3lzdGVtcworICAgICAgLSBbUEFUQ0ggMjQzMTM1M106IE1ha2Ugc29tZSBDKysgY29tcGlsZXJzIGhhcHBpZXIKKyAgICAgIC0gW1BBVENIIDI0MzU2ODFdOiBFbmFibGUgaWYtbWliIHJld3JpdGUgKHdpdGggc3lzY3RsIGJhY2tlbmQpIG9uIE5ldEJTRAorICAgICAgLSBbUEFUQ0ggMjQzNTc5M106IFN1cHBvcnQgNjQtYml0IElGLU1JQiBjb3VudGVycyBvbiBzeXNjdGwgKCpCU0QpIHN5c3RlbS4KKyAgICAgIC0gW1BBVENIIDI0NDkyMTBdOiBhZGQgNjQtYml0IGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyB0byBVQ0QtU05NUC1NSUI6OmRza1RhYmxlCisgICAgICAtIFtQQVRDSCAyNTY0NTUyXTogcHJvdmlkZSBsaWJuZXRsaW5rIHN1cHBvcnQgZm9yIGxvYWRpbmcgdGhlIHRjcCB0YWJsZQorICAgICAgLSBbUEFUQ0ggMjY4NjI4MF06IFJlcG9ydCBkdXBsaWNhdGUgcmVnaXN0cmF0aW9ucyBhcyBhbiBlcnJvcgorICAgICAgLSBbUEFUQ0ggMjc5MTQxN106IGZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoIC1EQUxMIFBhdGNoCisgICAgICAtIFtQQVRDSCAyODIyMzM3XTogRml4IG1lbW9yeSBsZWFrIGluIGlwQWRkcmVzc1ByZWZpeFRhYmxlCisgICAgICAtIFtGRUFUVVJFUyAxMDE5NDI5XTogU2V0IHN1cHBsZW1lbnRhcnkgZ3JvdXBzIHZpYSBpbml0Z3JvdXBzKDMpCisgICAgICAtIEFkZCBtaXNzaW5nIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAmIGluY2x1ZGUgZmlsZXMuCisgICAgICAtIEFkZCBzdXBwb3J0IGZvciBhIHVzZXIgcHJvdmlkZWQgbGVuZ3RoIHZhcmlhYmxlCisJICAgYW5kIEMgc3RyaW5nIHZhbHVlcyB0byB0aGUgd2F0Y2hlciBoZWxwZXIuCisgICAgICAtIEFsbG93ICJtb25pdG9yIiB0byBoYW5kbGUgbmVnYXRpdmUgdGhyZXNob2xkIHZhbHVlcy4KKyAgICAgIC0gQXV0b21hdGljYWxseSByZXJlZ2lzdGVyIHN5c09SVGFibGUgZW50cmllcyBmcm9tIEFnZW50WCBzdWJhZ2VudHMuCisgICAgICAtIENsZWFuIHVwIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25zIGR1cmluZyBFdmVudCBNSUIgY2xlYW51cAogICAgICAgLSBFbmZvcmNlIHRoZSBsb3dlciBsaW1pdCBvbiBzY2FsYXJfZ3JvdXBzCi0gICAgICAtIHN1cHByZXNzIGFubm95aW5nICJyZWdpc3RyYXRpb24gIT0gZHVwbGljYXRlIiB3YXJuaW5nIGZvciByb290IG9pZHMKLSAgICAgIC0gSGFuZGxlIGRldmljZSBuYW1lcyB3aXRoIGVtYmVkZGVkIHNwYWNlcyBpbiBVQ0QtU05NUC1NSUIgKGRza0RldmljZSkKKyAgICAgIC0gRml4IENWRS0yMDA4LTQzMDkgKEdFVEJVTEsgaXNzdWUgcmVwb3J0ZWQgYnkgT3NjYXIgTWlyYS1TYW5jaGV6KQorICAgICAgLSBGaXggbWVtb3J5IGxlYWsgd2hlbiBtdWx0aXBsZSBpbnRlcmZhY2VzIGhhdmUgdGhlIHNhbWUgSVB2NiBhZGRyZXNzCisgICAgICAtIEZpeCB0d28gYnVncyB3aXRoIHNtdXggcGFzc3dvcmQgc3VwcG9ydC4KKyAgICAgIC0gSGFuZGxlIGRldmljZSBuYW1lcyB3aXRoIGVtYmVkZGVkIHNwYWNlcyBpbiBVQ0QtU05NUC1NSUI6OmRza0RldmljZQorICAgICAgLSBJbXBsZW1lbnQgaXBOZXRUb1BoeXNpY2FsTGFzdFVwZGF0ZWQKKyAgICAgIC0gSW1wbGVtZW50IGlwQWRkcmVzc1NwaW5Mb2NrCisgICAgICAtIEltcHJvdmUgZWZmaWNpZW5jeSBvZiBzY2FsYXJfZ3JvdXAgaGVscGVyLgorICAgICAgLSBJbXByb3ZlIHBhcnNpbmcgb2YgLUxTIGNvbW1hbmQgbGluZSBhcmd1bWVudAorICAgICAgLSBSZWdpc3RlciBDUFUvbWVtb3J5IGhhcmR3YXJlIG1vZHVsZXMgd2l0aCBuc0NhY2hlVGFibGUuCisgICAgICAtIFJlaW1wbGVtZW50YXRpb24gb2YgTE0tU0VOU09SUy1NSUIKKyAgICAgIC0gUmVpbXBsZW1lbnRhdGlvbiBvZiBzbm1wTVBEU3RhdHMuCisgICAgICAtIFJlaW1wbGVtZW50YXRpb24gb2YgdXNtU3RhdHMuCisgICAgICAtIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzLgorICAgICAgLSBTdXBwcmVzcyBhbm5veWluZyAicmVnaXN0cmF0aW9uICE9IGR1cGxpY2F0ZSIgd2FybmluZyBmb3Igcm9vdCBvaWRzCisgICAgICAtIFVuaWZ5IGFsbCBzbm1wZCBzdGF0aXN0aWMgdmFyaWFibGVzIHdpdGggYSBjb21tb24gaGFuZGxlci4KKyAgICAgIC0gVXNlIHRoZSB3b3JrZXIgaGVscGVycyBmcm9tIHRoZSByZWdpc3Rlcl8qX2luc3RhbmNlIGhlbHBlcnMgYW5kCisJc2NoZWR1bGUgdGhlIGluc3RhbmNlIGhlbHBlcnMgZm9yIHJlbW92YWwgaW4gNS42CisgICAgICAtIFVzZSBzdGF0aWMgd2F0Y2hlcl9pbmZvIGZvciBhbGwgd2F0Y2hlZCB2YXJpYWJsZXMgYW5kIGluIGludF93YXRjaC4KKyAgICAgIC0gZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4gNjQtYml0IGNvdW50ZXJzIGluIGlwU3lzdGVtU3RhdHNUYWJsZSBnZXQKKwliaWdnZXIgdGhhbiAyXjMyCiAKICAgICBzbm1wdHJhcGQ6CisgICAgICAtIFtCVUcgMTYzODIyNV06IEZpeCBpbnRlcnByZXRhdGlvbiBvZiB0cmFuc3BvcnQgYWRkcmVzcyBkYXRhLgogICAgICAgLSBbQlVHIDE5NTUyMjddOiBNZW1vcnkgbGVhayBmb3IgZW1iZWRkZWQgUGVybCBvbiB4ODZfNjQKICAgICAgIC0gW1BBVENIIDE3NDY5OTJdOiBJbXByb3ZlIHNubXB0cmFwZCBhY2Nlc3MtY29udHJvbCBlcnJvciBtZXNzYWdlcy4KICAgICAgIC0gW1BBVENIIDE3Njc3MjVdOiBDbG9zZSBhbGwgbm9uIHN0YW5kYXJkIGZpbGUgaGFuZGxlcworICAgICAgLSBbUEFUQ0ggMTkwODI4OF06IFJ1biBwZXJsIEVORCBibG9jayBvbiB0ZXJtaW5hdGlvbgorICAgICAgLSBbUEFUQ0ggMjcyNjMwMl06IFBhc3MgcmVzdWx0cyBvZiBQZXJsIHRyYXAgaGFuZGxlcnMgdG8gdHJhcCBkYWVtb24KKyAgICAgIC0gW1BBVENIIDEyMjU0NDBdOiBEZWxheSBzaWdodXAgdGlsbCBpdCBpcyBzYWZlLgorICAgICAgLSBbRkVBVFVSRSAgNzQxMzc1XTogRXh0ZW5kIC1GIGZsYWcgdG8gY292ZXIgc3lzbG9nL2V4ZWN1dGUgZm9ybWF0IHN0cmluZ3MuCisgICAgICAtIFtGRUFUVVJFIDExNTk5NDddOiBBbGxvdyBjb250cm9sIG9mIHRyYXBoYW5kbGUgZGF0YSBmb3JtYXQKKyAgICAgIC0gQWRkIHRyYXAgaGFuZGxlciBmb3IgbG9nZ2luZyB0cmFwcyB0byBhIG15c3FsIGRhdGFiYXNlCisgICAgICAtIFN1cHBvcnQgZm9yIGZvcndhcmRpbmcgdHJhcHMgYnkgT0lEIHN1YnRyZWUuCisgICAgICAtIFN1cHBvcnQgcGVyLXRyYXAgZm9ybWF0IHNwZWNpZmljYXRpb25zCisgICAgICAtIFdpdGhkcmF3IGRlcHJlY2F0ZWQgb3B0aW9ucy4KKworICAgIGFwcHM6CisgICAgICAtIFtCVUcgMTk2NDEzNl06IERyb3AgTlVMTCB0eXBlIGZyb20gc25tcHNldCB1c2FnZSBtZXNzYWdlLgorICAgICAgLSBbQlVHIDI4MTE1NzddOiBGaXggYnVnIGluIEdldEJ1bGsgaGFuZGxpbmcuIERvbid0IGdldCBjb25mdXNlZCBieQorCWluZGV4IHZhbHVlcyB0aGF0IGNvbnRhaW4gYSAnOicgY2hhcmFjdGVyLgorICAgICAgLSBbUEFUQ0ggMTUyOTUyM106IENsb3NlIFNOTVAgc2Vzc2lvbiBvbiBmYWlsdXJlLgorICAgICAgLSBJbXByb3ZlIHBhcnNpbmcgb2YgLUxTIGNvbW1hbmQgbGluZSBhcmd1bWVudAorCisgICAgc25tcG5ldHN0YXQ6CisgICAgICAtIFtQQVRDSCAyNTY0NTM4XTogU3VwcG9ydCBHRVRCVUxLIGluIHYyYysgc25tcCB2ZXJzaW9ucworCisgICAgc25tcHVzbToKKyAgICAgIC0gW1BBVENIIDE1OTEzNTVdOiBBbGxvdyBjbG9uaW5nIHRvIGFyYml0cmFyeSBlbmdpbmVJRHMKKworICAgIHNubXB3YWxrOgorICAgICAgLSBbUEFUQ0ggMTcyMzYyMF06IFNwZWNpZnkgYW4gZXhwbGljaXQgZW5kLXBvaW50IGZvciB0aGUgd2Fsay4KIAogICAgIGJ1aWxkOgorICAgICAgLSBbQlVHIDEwOTYxNjZdOiBIYW5kbGUgLS13aXRob3V0LWxvZ2ZpbGUgY29ycmVjdGx5LgorICAgICAgLSBbQlVHIDE1NjczMjRdOiBDbGFyaWZ5IHByb21wdGluZyBmb3IgdXNlci1zdXBwbGllZCB2YWx1ZXMuCisgICAgICAtIFtCVUcgMTYwMDA5M106IGF1dG9jb25mIDIuNjAgYnJlYWtzIHRoZSBidWlsZAorICAgICAgLSBbQlVHIDE2NDc5NzZdOiBDeWd3aW4vTWluR1cgV2luZG93cyBidWlsZCBmYWlscyBkdWUgdG8gbGlidG9vbCBlcnJvcgorICAgICAgLSBbQlVHIDE3MDc0NjldOiBXaW4zMjogc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmggbm90IGluc3RhbGxlZAogICAgICAgLSBbQlVHIDE4MDI4MzNdOiBFbnN1cmUgc25tcHRyYXBkIGJ1aWxkcyB3aXRoIC0tZGlzYWJsZS1zbm1wdjEvMmMKKyAgICAgIC0gW0JVRyAxODIzMzgxXTogVXNlIGEgc2Vuc2libGUgZGVmYXVsdCBNSUJESVIgcGF0aCBvbiBDeWd3aW4vTWluR1cKICAgICAgIC0gW0JVRyAxODIzMzgxXTogVmFsaWQgTUlCIGRpcmVjdG9yeSBzZWFyY2ggcGF0aCBvbiBXaW5kb3dzCiAgICAgICAtIFtCVUcgMTg3MjI2Nl06IFBFUkxDQyBjaGVjayBmYWlscyBmb3IgQ0Mgd2l0aCBvcHRpb25zCi0gICAgICAtIFtCVUcgMTk5NTE3Ml06IGZpeCAtLXdpdGhvdXQtZWxmIGNvbmZpZ3VyZSB1c2FnZQorICAgICAgLSBbQlVHIDE5OTUxNzJdOiBmaXggLS13aXRob3V0LWVsZiBjb25maWd1cmUgdXNhZ2UgbWVzc2FnZQogICAgICAgLSBbQlVHIDIwMTQ1MjZdOiBXaW4zMjogc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmggbm90IGluc3RhbGxlZAogICAgICAgLSBbQlVHIDIwMjM4MDNdOiBDb21waWxhdGlvbiBwcm9ibGVtcyBvbiBIUC1VWCAxMS4zMQotICAgICAgLSBbUEFUQ0ggMTY4MTAzNV06IGltcHJvdmUgbmV0LXNubXAtY29uZmlnIC9iaW4vc2ggY29tcGF0aWJpbGl0eQorICAgICAgLSBbQlVHIDIwOTU5ODNdOiBmaXggc3ludGF4L3Blcm1pc3NpbmcgZXJyb3IgaW4gZmluZC1yZXF1aXJlcyBoZWxwZXIgc2NyaXB0CisgICAgICAtIFtCVUcgMjE2ODE4MF06IEltcHJvdmUgaGFuZGxpbmcgb2YgdmFyaW91cyAtLWVuYWJsZS8tLWRpc2FibGUgb3B0aW9ucy4KKyAgICAgIC0gW0JVRyAyNzgyNzAwXTogYnVpbGQgZmFpbHVyZSB3aGVuIHVzaW5nIC0td2l0aC1wa2NzIG9uIFNvbGFyaXMKKyAgICAgIC0gW1BBVENIIDE1Nzc5MTddOlNpbXBsaWZ5IG1ha2VmaWxlIHRhcmdldCByZWZlcmVuY2VzIChwYXRjaCBmcm9tIEFwcGxlKQorICAgICAgLSBbUEFUQ0ggMTYwMDQ1M106IEZpeCBjcm9zcy1jb21waWxlIGJ1aWxkcyBpbiBhcHBsZXMgYnVpbGQgZW52aXJvbm1lbnQuCisgICAgICAtIFtQQVRDSCAxNjI0NDA2XTogb3B0aW9uIHRvIGhhcmRjb2RlIGxvY2F0aW9uIG9mIG1vdW50IHRhYmxlCisgICAgICAtIFtQQVRDSCAxNjI1MTM1XTogY29uZmlndXJlIGxvY2F0aW9uIG9mIHB5dGhvbiBpbnRlcnByZXRlciAKKyAgICAgIC0gW1BBVENIIDE2NzgzMDBdOiBjb21waWxlLXN1YmFnZW50IGRvZXNuJ3QgY2FsbCBzaHV0ZG93bl8gbWV0aG9kcworICAgICAgLSBbUEFUQ0ggMTY4MTA3M106ICNpZmRlZiBiYXNlZCBjb25maWdfZXJyb3IgaW5zdGVhZCBvZiBzcGVjaWFsIGNhc2VzCisgICAgICAtIFtQQVRDSCAxNzI4MjQxXTogQWRkIGNvbmZpZ3VyZSBjaGVjayBmb3IgPHN5cy91aW8uaD4KKyAgICAgIC0gW1BBVENIIDE3MjgyMzBdOiBhZGQgY29uZmlndXJlIGNoZWNrIGZvciBnYWlfc3RyZXJyb3IoKQorICAgICAgLSBbUEFUQ0ggMTcyODIzM106IG1ha2Ugc3VyZSB0eXBlIG5mZHNfdCBpcyBkZWZpbmVkCisgICAgICAtIFtQQVRDSCAxNzI4MjM3XTogTW92ZSB2YXJpYWJsZSBkZWNsYXJhdGlvbiBhdCB0aGUgdG9wIG9mIG5ldHNubXBfdWRwX3NlbmR0bworICAgICAgLSBbUEFUQ0ggMTcyODI0NF06IEFkZCBjb25maWd1cmUgY2hlY2sgZm9yIHNpbjZfc2NvcGVfaWQKKyAgICAgIC0gW1BBVENIIDE3MjgyNDddOiBBZGQgdHlwZSBjaGVjayBmb3IgaW50Pz9fdCBhbmQgdWludD8/X3QKICAgICAgIC0gW1BBVENIIDE4OTk3NjJdOiBUd2VhayBlbWJlZGRlZF9wZXJsIGNvbmZpZ3VyZSBjaGVja3MuCi0gICAgICAtIGFkZCAtLXdpdGgtdGVtcC1maWxlLXBhdHRlcm4gY29uZmlndXJlIG9wdGlvbgotICAgICAgLSBBZGQgc3VwcG9ydCBmb3Igd2luRXh0RExMIHRvIGJ1aWxkLmJhdCAod2luMzIpCi0gICAgICAtIERpc2FibGUgYWdlbnQgdGVzdHMgaWYgYnVpbHQgd2l0aG91dCBuZWNlc3NhcnkgbWliIG1vZHVsZXMKLSAgICAgIC0gTGltaXQgdGhlIHVzZSBvZiBfS0VSTkVMIGRlZmluaXRpb25zIGluIGNvbmZpZ3VyZSB0ZXN0cyB0byBtYXRjaAotICAgICAgICB0aGUgdXNlIG9mIF9LRVJORUwgaW4gb3VyIGNvZGViYXNlCi0gICAgICAtIFVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNgotCi0gICAgbWliMmM6Ci0gICAgICAtIFtCVUcgMTg3NDA1OSwxNzM3MDY4XTogSGFuZGxlIE1JQiBvYmplY3RzIHdpdGggZW1iZWRkZWQgaHlwaGVucwotICAgICAgLSBbUEFUQ0ggMTkxNDM5OF06IGluc3RhbGwgbWliMmMucGVybC5jb25mCisgICAgICAtIFtQQVRDSCAyMDAwODc0XTogQ2xlYW51cCB0cmFuc3BvcnQgc2VsZWN0aW9uLgorICAgICAgLSBbUEFUQ0ggMjA5MTE1Nl06IGNvcnJlY3RseSBkZWNsYXJlIGRlcGVuZGVuY2llcyBpbiBNYWtlZmlsZS4gJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCisgICAgICAtIFtQQVRDSCAyMTg0MDM5XTogRml4ZXMgZm9yIGZyZWVpbmcgbWVtb3J5IGR1cmluZyBlcnJvciBjb25kaXRpb25zLgorICAgICAgLSBbUEFUQ0ggMjc5NzI1MV06IFN1cHBvcnQgbXVsdGlwbGUgaW5pdGlhbGlzYXRpb24vc2h1dGRvd24sIGZpeCBtZW1vcnkgbGVha3MKKyAgICAgIC0gQWRkIGEgdmFyaWF0aW9uIG9mIEFDX1NFQVJDSF9MSUJTIHdoZXJlIHRoZSByZXN1bHQgaXMgc2V0dGFibGUuCisgICAgICAtIEFkZCAiQnVpbGRSZXF1aXJlczogcGVybC1FeHRVdGlscy1FbWJlZCIgdG8gdGhlIHNwZWMgZmlsZQorICAgICAgLSBBZGQgJy0td2l0aC10ZW1wLWZpbGUtcGF0dGVybicgY29uZmlndXJlIG9wdGlvbgorICAgICAgLSBBc3N1bWUgdGFyZ2V0IHBsYXRmb3JtIHN1cHBvcnRzIG1lbXtjcHksbW92ZSxzZXR9ICYgc3RyeyxyfWNocgorICAgICAgLSBEaXNhYmxlIGlubGluaW5nIG9uIHNvbGFyaXMgKGR1ZSB0byBsaW5raW5nIGVycm9ycykKKyAgICAgIC0gRGlzYWJsZSBNSUItc3BlY2lmaWMgdGVzdHMgaWYgdGhlIGFnZW50IG9taXRzIHRoZSBuZWNlc3NhcnkgbW9kdWxlcy4KKyAgICAgIC0gJy0tZGlzYWJsZS1hcy1uZWVkZWQnIHJldmVydHMgdG8gbGlua2luZyBzeXN0ZW0gbGlicyBpbnRvIGFwcGxpY2F0aW9ucworICAgICAgLSBEbyBub3QgY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykgaWYgbm90aGluZyBmcm9tIHV0aWxfZnVuY3MgaXMgdXNlZAorICAgICAgLSBEbyBub3QgcmVxdWlyZSB1c2Ugb2YgLS13aXRoLWVuZGlhbm5lc3Mgd2hlbiBjcm9zcy1jb21waWxpbmcuCisgICAgICAtIEZpeCBidWlsZCBpc3N1ZXMgd2l0aCBldGh0b29sIChvbiBSSDkpLgorICAgICAgLSBGaXggY2hlY2tzIGZvciBzdXBwb3J0IG9mIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zCisgICAgICAtIEZpeCBjb21waWxhdGlvbiBvbiBJUklYCisgICAgICAtIEZpeCBtYWNybyBmb3IgJy0td2l0aC1mZWF0dXJlcy1vZicKKyAgICAgIC0gSW1wcm92ZSBsaWJyYXJ5IGxheWVyaW5nICYgZGVwZW5kZW5jeSBoYW5kbGluZyB3aGVuIGxpbmtpbmcgYXBwcworICAgICAgLSBJbXByb3ZlIHJvYnVzdG5lc3Mgb2Ygc2VkL2dyZXAvZXRjIGNvbW1hbnMgKHVzaW5nIGF1dG9jb25mIG1hY3JvcykKKyAgICAgIC0gSW1wcm92ZSBSUE0gc3BlYyBmaWxlcywgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgorICAgICAgLSBNZWNoYW5pc20gZm9yIHNlbGVjdGluZyBidWlsZCBlbnZpcm9ubWVudCBiYXNlZCBvbiB2ZXJzaW9uCisgICAgICAtIE5ldyBORVRTTk1QX0FSR19XSVRIL0VOQUJMRSBtYWNyb3MgdG8gY2F0Y2ggaW5jb3JyZWN0ICd3aXRoL2VuYWJsZScgdXNhZ2UKKyAgICAgIC0gJy0tZW5hYmxlLWlwdjYnIHNob3VsZCBvbmx5IGVuYWJsZSAnbWliSUkvaXB2Nicgb24gc3VwcG9ydGVkIHN5c3RlbXMKKyAgICAgIC0gUmVtb3ZlIE5ldC1TTk1QIHNwZWNpYWwtY2FzZSBoYW5kbGluZyBvZiBzdGFuZGFyZCBmdW5jdGlvbmFsaXR5LgorICAgICAgLSBSZXN0cnVjdHVyZSBjb25maWd1cmUgdGVtcGxhdGUKKyAgICAgIC0gU3RyaWN0ZXIgY2hlY2tzIG9uICctLXdpdGgtcGVyc2lzdGVudC1tYXNrJyB2YWx1ZXMKKyAgICAgIC0gVXBkYXRlIHRvIGF1dG9jb25mIDIuNjMgJiBsaWJ0b29sIDIuMi42CisgICAgICAtIFVzZSAnY29uZmlnX2Vycm9yJyB0byBnZW5lcmF0ZSBlcnJvciBtZXNzYWdlcyBhdCBjb25maWd1cmUgdGltZS4KKyAgICAgIC0gVXNlIExERkxBR1Mgd2hlbiBidWlsZGluZyBhZ2VudCwgaGVscGVycyBhbmQgbWliIGxpYgorICAgICAgLSBVc2UgImxpYnRvb2wgY2xlYW4iIHRvIGVuc3VyZSByZW1vdmFsIG9mIGFsbCBsaWJ0b29sIHRlbXAgZmlsZXMuCisgICAgICAtIGFsbG93IGJ1aWxkaW5nIHdpdGggUGVybCB2ZXJzaW9ucyB0aGF0IGxhY2sgUEVSTF9FWElUX0RFU1RSVUNUX0VORAorICAgICAgLSBidWlsZCBmaXggZm9yIFRydTY0IFVuaXggYW5kIElSSVg6IG1vdmUgX1hPUEVOKiBkZWZpbml0aW9ucyB0bworCXdoZXJlIHRoZXkgYXJlIGluIDUuNC54IGFuZCBlYXJsaWVyCiAKICAgICBkb2N1bWVudGF0aW9uOgorICAgICAgLSBbQlVHIDEyNDcxNjRdOiBEb2N1bWVudCB1c2Ugb2YgT0lEIG1hY3JvcworICAgICAgLSBbQlVHIDE0MDc0NzZdOiBDbGFyaWZ5IE1JQiBwYXJzaW5nIHRvZ2dsZSBvcHRpb25zICYgY29tbWVudCBoYW5kbGluZy4KKyAgICAgIC0gW0JVRyAxNjE0MTA0XTogYnJva2VuIHNubXBkKDgpIG1hbnVhbCBwYWdlIGluIDUuNAogICAgICAgLSBbQlVHIDIwMjcxMjldOiBmaXggdHlwbyBpbiBzbm1wY21kLjEKKyAgICAgIC0gW1BBVENIIDE2MDQ1ODBdOiBTTk1QKDMpIG1hbnVhbCBwYWdlIGNvcnJlY3Rpb25zCisgICAgICAtIFtQQVRDSCAxNjQ0NzM1XTogQWRkIGdjYyBidWlsZCBpbnN0cnVjdGlvbnMgZm9yIElSSVgKKyAgICAgIC0gRml4IG1pbm9yIGRvY3VtZW50YXRpb24gYnVncyAocGF0Y2ggZnJvbSBBcHBsZSkKKworICAgIG1pYjJjOgorICAgICAgLSBbQlVHICA4MzM2NzNdOiBNb3JlIGZvY3VzZWQgc2l6ZSBjaGVja3MuCisgICAgICAtIFtCVUcgMTQyOTQ3Ml06IFByb3RlY3QgYWdhaW5zdCBtaXNzaW5nIGluc3RhbmNlcyAoYW5kIGludmFsaWQgb2JqZWN0cykKKyAgICAgIC0gW0JVRyAxNTgyOTcyXTogSGFuZGxlIEB3aGlsZUAvQGVuZEAgcHJvcGVybHkuCisgICAgICAtIFtCVUcgMTczNzA2OF06IEhhbmRsZSBNSUIgb2JqZWN0cyB3aXRoIGVtYmVkZGVkIGh5cGhlbnMKKyAgICAgIC0gW0JVRyAxODc0MDU5XTogSGFuZGxlIE1JQiBvYmplY3RzIHdpdGggZW1iZWRkZWQgaHlwaGVucworICAgICAgLSBbUEFUQ0ggMTY2ODE3MV06IHNraXAgdW5rbm93biBjb2xzIGluIG1pbi9tYXggcmFuZ2UgZm9yIHRhYmxlcworICAgICAgLSBbUEFUQ0ggMTcxOTI0NF06IEZpeCBtZmQgZ2VuZXJhdGluZyBtYXAgZnVuY3Rpb24KKyAgICAgIC0gW1BBVENIIDE5MTQzOThdOiBpbnN0YWxsIG1pYjJjLnBlcmwuY29uZgorICAgICAgLSBbUEFUQ0ggMjEzNjQzN106IEltcHJvdmUgRkxBRyBkZWZpbmVzIGZvciBodWdlIHRhYmxlcyBvbiA2NGJpdCBzeXN0ZW1zCisgICAgICAtIFtQQVRDSCAyMzE2MTI3XTogRml4IGJ1ZyBpbiBpdGVyYXRlX2FjY2VzcyBnZW5lcmF0ZWQgY29kZS4KIAogICAgIG1pc2M6Ci0gICAgICAtIEF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggdG9vIGZldy9tYW55IGFyZ3VtZW50cy4KLSAgICAgIC0gZW5oYW5jZSBzbm1wbmV0c3RhdCB0ZXN0IHRvIGNoZWNrIHRjcFRhYmxlIGluIFRDUCBtb2RlCisgICAgICAtIFtQQVRDSCAxNzM3NzI3XTogQWRkIGEgTkVUU05NUF9PTERBUElfIHByZWZpeCB0byBvbGQtYXBpIGFjY2VzcyBtYWNyb3MuCisgICAgICAtIFtQQVRDSCAxNzM3NzI3XTogUmVwbGFjZSBORVRTTk1QX0NMRUFOX05BTUVTUEFDRSB3aXRoIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisgICAgICAtIEFkZCBjb25maWcgcmVyZWFkIHN1cHBvcnQgdG8gIm5ldC1zbm1wLWNvbmZpZyAtLWNvbXBpbGUtc3ViYWdlbnQiIGNvZGUuCisgICAgICAtIEF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggd3JvbmcgbnVtYmVyIG9mIGFyZ3VtZW50cy4KKyAgICAgIC0gRG9uJ3QgdXNlIHRoZSBsZWdhY3kgc3ltYm9sIFNOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWAorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBTU0ggYW5kIERUTFMvVURQLgorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwKKyAgICAgIC0gU2VwYXJhdGUgdXNlciBtYW5hZ2VtZW50IGludG8gbmV3IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIHNjcmlwdAorCisgICAgdW5zcGVjaWZpZWQ6CisgICAgICAtIFtCVUcgMTU5NjYzOF06IG1lbW9yeSBsZWFrIGluIGlwQ2lkclJvdXRlVGFibGUsIGluZXRDaWRyUm91dGVUYWJsZQorICAgICAgLSBbQlVHIDE2MTE1MjRdOiBmaXggdGNwIGNvbm5lY3Rpb24gdGFibGUgZmQgbGVhaworICAgICAgLSBbQlVHIDE3OTM1NDVdOiBUYWtlIHRoZSBuYW1lIGZyb20gdGhlIHNvY2thZGRyX3VuIGluIG9yZGVyIHRvIGF2b2lkCisJICAgICAgICAgICAgICAgdHJhbnNwb3J0IHNwZWNpZmllcnMgYW5kIG90aGVyIGRlY29yYXRpb25zLgorICAgICAgLSBbQlVHIDE4MDE4MzVdOiBNdWx0aXBsZSBkZWZhdWx0IHRyYW5zcG9ydHMgZm9yIGFuIGFwcGxpY2F0aW9uLgorICAgICAgLSBbQlVHIDE4NTEwNDddOiBEb24ndCBjb250aW51ZSB0byBwcm9jZXNzIGEgY29ycnVwdCB3YXRjaGVkIHZhbHVlLgorICAgICAgLSBbUEFUQ0ggMTYwMTQ1M106IER5bmFtaWMgTWVtb3J5IGZhaWx1cmUgaGFuZGxpbmcgaW1wcm92ZW1lbnRzCisgICAgICAtIFtQQVRDSCAxNjc0Mjk4XTogUmVtb3ZlIHVudXNlZCBzaW5rcG9ydCB2YXJpYWJsZQorICAgICAgLSBbUEFUQ0ggMTY3NDI5OV06IExlc3NlbiBzY29wZSBvZiB6b25lIHZhcmlhYmxlIGluIGR1bXBfcmVhbGxvY19vaWRfdG9faW5ldGFkZHJlc3MKKyAgICAgIC0gW1BBVENIIDE2NzQzMDJdOiBMZXNzZW4gc2NvcGUgb2YgbGVuIHZhcmlhYmxlIGluIGNvbnZlcnRfdjJwZHVfdG9fdjEKKyAgICAgIC0gW1BBVENIIDE2NzgyOThdOiBjb21waWxlLXN1YmFnZW50IGNoZWNrcyBmb3IgYmFkIEhBVkVfU0lHTkFMX0gKKyAgICAgIC0gW1BBVENIIDE2NzgzMDJdOiBuZXRzbm1wX21pYmluZGV4X2xvYWQgbGVha3MgbWVtb3J5CisgICAgICAtIFtQQVRDSCAxNjgxMDM1XTogSW1wcm92ZSBuZXQtc25tcC1jb25maWcgL2Jpbi9zaCBjb21wYXRpYmlsaXR5CisgICAgICAtIFtQQVRDSCAxOTAyMTA1XTogSGlkZSBhbmQgaW1wcm92ZSBkZWJ1ZyBsb2cgbWVzc2FnZXMKKyAgICAgIC0gW1BBVENIIDE5MDIxMTNdOiBGaXggZXJyb3IgbG9nIGluIGluZXROZXRUb01lZGlhdGFibGUKKyAgICAgIC0gRml4IGZvciByZWZzIHRvIE9CSkVDVC1HUk9VUCBpbiBhbm90aGVyIE1JQgorICAgICAgLSBJbml0YWxpemUgbG9nIHN1YnN5c3RlbQorICAgICAgLSBSZW1vdmUgc3VwcG9ydCBmb3IgdXNlIG9mIHZhcmFyZ3MuaC4KIAogICAgIHBlcmw6CisgICAgICAtIFtCVUcgMTQ1MDY2OV06IGEgcGVybCBhZ2VudHggY29uc3VtZXMgbWVtb3J5CisgICAgICAtIFtCVUcgMTU1NDgxN106IEZpeCBjbGFzcyBhc3NpZ21lbnQgc28gZ2V0Um9vdE9JRCB3b3JrcyBwcm9wZXJseS4KICAgICAgIC0gW0JVRyAxNjA2MDYyXTogcGVybCBidWxrd2FsayAoYXN5bmMpIGNvcmVkdW1wCisgICAgICAtIFtCVUcgMTYxOTgyN106IGltcHJvdmUgaGFuZGxpbmcgb2YgbGluayBkZXBlbmRlbmNpZXMKICAgICAgIC0gW0JVRyAxNzQ3NzMzXTogTW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgdW5kZWZpbmVkIHZhbHVlcy4KLSAgICAgIC0gW0JVRyAxODI2MTc0XTogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHByaW50aW5nIHZhbHVlcy4KICAgICAgIC0gW0JVRyAxODM0NTM5XTogQ29uc2lzdGVudCBoYW5kbGluZyBvZiBPSUQgcGFyc2luZy4KKyAgICAgIC0gW1BBVENIIDE2Mjc5NDldOiBhIHBlcmwgYWdlbnR4IGNvbnN1bWVzIG1lbW9yeQorICAgICAgLSBbUEFUQ0ggMTcyNTA0OV06IEZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIgdXNhZ2UuCiAgICAgICAtIFtQQVRDSCAxODExNDYzXTogcGVybCBhc3luYyBjYWxsYmFjayBjb3JlZHVtcAorICAgICAgLSBbUEFUQ0ggMTgzNDk4M106IENvbnNpc3RlbnQgaGFuZGxpbmcgb2YgT0lEIHBhcnNpbmcuCiAgICAgICAtIFtQQVRDSCAxOTE0MzkzXTogcmVnaXN0ZXJBZ2VudCBjYW4gbm93IGJlIHJ1biBtdWx0aXBsZSB0aW1lcwogICAgICAgLSBbUEFUQ0ggMTkxNDY0M106IGZpeCBpc3N1ZXMgd2l0aCBlbWJlZGRlZCBwZXJsCiAgICAgICAtIFtQQVRDSCAxOTE0NjQ1XTogYmV0dGVyIGVuZCBvZiBtaWIgc3VwcG9ydAogICAgICAgLSBbUEFUQ0ggMTkyMDM5MF06IGZpeCByZWdpc3RyYXRpb24gb2YgdGFibGVzIHdpdGggLjAgYXMgSUlEcwotICAgICAgLSBbUEFUQ0ggMjAyMTQ0NF06IFN1cHBvcnQgU05NUHYyYyBpbiBnZXR0YWJsZQotICAgICAgLSBmaXhlZCBhbiBleHRyYSBicmFjZSBpbiB0aGUgZG9jcyBwb2ludGVkIG91dCBieSBKYXNvbiBNYXJ0aW4KLQotICAgIHB5dGhvbjoKLSAgICAgIC0gW0JVRyAxODI2MTc0XTogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHByaW50aW5nIHZhbHVlcwotICAgICAgLSBbQlVHIDE4NjgyNzhdOiBQeXRob24gc2VnZmF1bHQgKGludHJvZHVjZWQgYnkgcjE2OTYyKQotICAgICAgLSBbUEFUQ0ggMTg2MjE3N106IG1hZGUgY29kZSBtb3JlIHdpbmRvd3MvY3lnd2luIGNvbXBpbGVyIGZyaWVuZGx5Ci0gICAgICAtIFtQQVRDSCAxODc3ODQwXTogZml4IE1JQiBsYWJlbCBhbmQgaW5kZXhpbmcgZHVlIHRvIGJyb2tlbiByZWdleHAKLQotICAgIEFJWDoKLSAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIEFJWCA2LnguCi0KLSAgICBMaW51eDoKLSAgICAgIC0gW1BBVENIIDE5Njk2MjddOiBIYW5kbGUgZW1wdHkgL2V0Yy9zeXNjb25maWcvbmV0d29yayBmaWxlCi0gICAgICAtIEltcHJvdmVkIFJQTSBzcGVjIGZpbGVzLCBmb3IgYmV0dGVyIGNvbnNpc3RlbmN5IHdpdGgKLSAgICAgICAgdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzCi0KLSAgICBTb2xhcmlzOgotICAgICAgLSBbQlVHIDE4MTA4MTRdOiB0Y3BUYWJsZSBtaXNzaW5nIGVudHJpZXMgYW5kIHdyb25nIHBvcnRzCi0gICAgICAtIFtQQVRDSCAxODI0MTk2XToge2lmT3BlclN0YXR1cyxpcEFkRW50SWZJbmRleH0gcmVwb3J0ZWQgaW5jb3JyZWN0bHkKLSAgICAgIC0gW1BBVENIIDE4MzQ2OTldOiBGaXggMTgzMzI5NDogRExQSSBwcm9ibGVtcyBvbiBTb2xhcmlzIDIuNgotICAgICAgLSAjZGVmaW5lIE5FV19NSUJfQ09NUExJQU5UIHRvIHN1cHBvcnQgU29sYXJpcyAxMFU0KwotCi0qIDUuNC4xICoKLQotICAgIHNubXBsaWI6Ci0gICAgICAtIENoYW5nZSBzbm1wX3Nlc3NfYWRkX2V4IHRvIGNvbnNpc3RlbnRseSBjbG9zZSBhbmQKLSAgICAgIC0gRGVhbGxvY2F0ZSB0aGUgY29uZm1pYnMgYW5kIGNvbmZtaWJkaXJzCi0gICAgICAtIEZFQVRVUkVTOiAxMDQxODg4OiBDaGVjayBkaXJlY3RvcnkgcGF0aHMgZm9yCi0gICAgICAtIEZFQVRVUkVTOiA4NTE4ODc6IFJlcG9ydCByYW5nZSBpbmZvcm1hdGlvbiBmb3IKLSAgICAgIC0gUmVhZCB0aGUgY29uZmlnIHBhcmFtZXRlcnMgZGVmVGFyZ2V0IGFuZAotICAgICAgLSBVc2UgdGhlIGRlZmF1bHRfdGFyZ2V0IGFyZ3VtZW50IGlmIGl0IGlzCi0gICAgICAtIFtCVUcgMTYwMDE3MV06IFN1cHBvcnQgbG9uZ2VyIGNvbW11bml0eSBzdHJpbmdzCi0gICAgICAtIFtCVUcgMTYxOTgyN106IGxpbmsgYWdhaW5zdCBuZWVkZWQgZXh0ZXJuYWwKLSAgICAgIC0gW0JVRyAxNjE5ODI3XTogbGluayBuZXQtc25tcCBsaWJyYXJpZXMgYW5kIGJpbmFyaWVzCi0gICAgICAtIFtCVUcgMTY2MDA2MV06IFZhbGlkYXRlIGVuZ2luZUlEcyBtb3JlIHN0cmljdGx5LgotICAgICAgLSBbUEFUQ0ggMTU0ODY3MF06IEZpeCByYW5nZSBjaGVja3MgZm9yIHVuc2lnbmVkCi0gICAgICAtIFtQQVRDSCAxNTkyNzA2XTogRml4IG1lbW9yeSBsZWFrIHdoZW4gY2xvbmluZwotICAgICAgLSBbUEFUQ0ggMTYxNjkxMl06IGZpeAotICAgICAgLSBbUEFUQ0ggMTYyMDQyNF06IEhvbm9yCi0gICAgICAtIFtQQVRDSCAxNjM0NjIwXTogRml4IGxlYWtzIGZyb20KLSAgICAgIC0gW1BBVENIIDE2NDAxMTRdOiBEb24ndCBzdG9yZSB0cmFpbGluZyBudWxsCi0gICAgICAtIFtQQVRDSCAxNjQxODk1XTogRXh0ZW5kIHNob3J0IHZpZXcgbWFza3MgKGFzIHBlcgotICAgICAgLSBbUEFUQ0ggMTY0MTk3Ml06IGFkZCBtaXNzaW5nIGNvbnN0Ci0gICAgICAtIFtQQVRDSCAxNjUzNjcwXTogQ29uc2lzdGVudCBTTk1QdjMgYmVoYXZpb3VyCi0gICAgICAtIFtQQVRDSCAxNjgxMDMwXTogQmV0dGVyIGhhbmRsaW5nIG9mIGVtcHR5Ci0gICAgICAtIFtQQVRDSCAxNjg3MzE2XTogRG9uJ3QgZHJvcCBjb25zdCBmcm9tIGNhc3RzLgotICAgICAgLSBbUEFUQ0ggMTY4NzMyNV06IEZpeCBwcm9ibGVtIHdpdGggb3BlcmF0b3IKLSAgICAgIC0gaW5jcmVtZW50ICJjdXJyZW50IiBhbmQgImFnZSIgYWNjb3JkaW5nIHRvCi0gICAgICAtIGxpYnJhcnkgbGF5ZXJpbmcgaW1wcm92ZW1lbnRzOiBpbnRyb2R1Y2UKLSAgICAgIC0gcGF0Y2g6IDE2NDU2OTg6IGZpeCA2NC1iaXQgc2lnbmVkIGludGVnZXIKLQotICAgIHNubXBhcGk6Ci0gICAgICAtIERvIG5vdCB1c2UgZ2V0c2VydmJ5bmFtZSB0byBmaW5kIGRlZmF1bHQgcG9ydAotCi0gICAgc25tcGQ6Ci0gICAgICAtIENvcnJlY3QgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZm9yCi0gICAgICAtIFtCVUcgMTA0NjMyN106IFJlc2V0ICJpbmNsdWRlQWxsRGlza3MiIGZsYWcgd2hlbgotICAgICAgLSBbQlVHIDEwNzM3ODJdOiBSZXN0b3JlIFBlcmZTdGF0IHZhbHVlcyBmb3IgRnJlZUJTRAotICAgICAgLSBbQlVHIDExMDIwNThdOiBTa2lwIG5vbi1tb3VudGVkIGRpc2tzIChlLmcuIHN3YXAKLSAgICAgIC0gW0JVRyAxMTU5OTA4XTogRml4IG1lbW9yeSBsZWFrCi0gICAgICAtIFtCVUcgMTM5Nzg5NV06IGluY2x1ZGUgbWlzc2luZyBpbnRlcmZhY2UKLSAgICAgIC0gW0JVRyAxNDEzNzI4XTogUmVmZXJlbmNlIGluZGV4IHZhbHVlcyBpbiBkZWJ1ZwotICAgICAgLSBbQlVHIDE0MTYyNzZdOiBIYW5kbGUgZGVwZW5kZW5jeSBvbiBNSUIgcGFyc2luZwotICAgICAgLSBbQlVHIDE1NDY4MTddOiBGaXggc25tcEVudGVycHJpc2UgdmFyYmluZCB3aGVuCi0gICAgICAtIFtCVUcgMTU1ODgyM106IGZpeCBpcEFkZHJlc3NUYWJsZSBtZW1vcnkgbGVhawotICAgICAgLSBbQlVHIDE2MDAyNjFdOiBIYW5kbGUgbm9uLXg4NiAvcHJvYy9jcHVpbmZvIGZvcm1hdAotICAgICAgLSBbQlVHIDE2MDIyODZdOiBEb24ndCBsZXQgdGFibGUgaG9sZXMgYmxvY2sgbGF0ZXIKLSAgICAgIC0gW0JVRyAxNjI4NjEzXTogUmVzdG9yZSBtZW1Ub3RhbEZyZWUuMCBvbiBTb2xhcmlzCi0gICAgICAtIFtCVUcgMTYzMzU5NV06IEZpeCBBZ2VudFggaGFuZGxpbmcgb2YgQ291bnRlcjY0Ci0gICAgICAtIFtCVUcgMTY3NzA2M106IENoZWNrIGZvciBmYWlsZWQgbWFsbG9jIGNhbGxzLgotICAgICAgLSBbQlVHIDE2ODUwNjddOiBNb3JlIHByZWNpc2UgaGFuZGxpbmcgb2YKLSAgICAgIC0gW0JVRyAxNjg1MDgxXTogQ2hlY2sgZm9yIHZhbGlkIE9JRCBvbiBGcmVlL1VuZG8KLSAgICAgIC0gW0JVRyAxNzEyOTg4XTogZGVmYXVsdCBhbmQgY29uZmlndXJhYmxlIG1heGltdW0KLSAgICAgIC0gW0JVRyAxNzQ1MTEzXTogSGFuZGxlIHNpbmdsZS1saW5lIChhbmQgemVyby1saW5lKQotICAgICAgLSBbQlVHIDE3NjA2MzNdOiBmaXggdHlwbyBpbiBkZWJ1ZyBtZXNzYWdlCi0gICAgICAtIFtCVUcgOTAyNjEwXTogRG9uJ3QgZGlzY2FyZCBwZW5kaW5nIGRhdGEgZm9sbG93aW5nCi0gICAgICAtIFtCVUcgOTAyODAxXTogRml4IG9yZGVyaW5nIG9mIFNNVVgtcmVnaXN0ZXJlZAotICAgICAgLSBbUEFUQ0ggMTYwMTE4OCwgXTogQlVHOiAxNjAwNDMyOiBIYW5kbGUgc2lnbmFscwotICAgICAgLSBbUEFUQ0ggMTYyMDQyNF06IEZpeCBub3RpZmljYXRpb24gc2VuZGluZyBzbyB0aGF0Ci0gICAgICAtIFtQQVRDSCAxNjM3Mjg3XTogSGFuZGxlIG11bHRpcGxlIHRhcmdldCB0YWdzCi0gICAgICAtIFtQQVRDSCAxNjM5MjgyXTogU2F2ZSBwZXJzaXN0ZW50Ci0gICAgICAtIFtQQVRDSCAxNjM5MzYwXTogRml4IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUKLSAgICAgIC0gW1BBVENIIDE2Mzk3MjZdOiBSZXBvcnQgcGh5c2ljYWwgbWVtb3J5Ci0gICAgICAtIFtQQVRDSCAxNjQxMzMyXTogSW5jbHVkZSBtaXNzaW5nIGFnZW50IGNvbmZpZwotICAgICAgLSBbUEFUQ0ggMTY0MTY4NV06IEhhbmRsZSB1bnJlc3BvbnNpdmUgQWdlbnRYCi0gICAgICAtIFtQQVRDSCAxNjQxODY1XTogRG9uJ3QgZG91YmxlIGNoZWNrIHNubXBUcmFwT0lECi0gICAgICAtIFtQQVRDSCAxNjQyMjU1XTogSGFuZGxlIHNhdmluZyBsb25nCi0gICAgICAtIFtQQVRDSCAxNjQ0MjgwXTogRG9uJ3QgYXV0b21hdGljYWxseSBwcm9iZSBmb3IKLSAgICAgIC0gW1BBVENIIDE2NDQyODBdOiBVc2UgdGhlIGNvcnJlY3QgZW5naW5lSUQgd2hlbgotICAgICAgLSBbUEFUQ0ggMTY0NDcxNF06IHJlcGxhY2UKLSAgICAgIC0gW1BBVENIIDE2NTk2MjNdOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5Ci0gICAgICAtIFtQQVRDSCAxNjY1NTQ5XTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcwotICAgICAgLSBbUEFUQ0ggMTY2NTk4NV06IEltcGxlbWVudCBpcFJlYXNtVGltZW91dAotICAgICAgLSBbUEFUQ0ggMTY2NjczN106IGluY2x1ZGUgaXB2NiBjb3VudHMgaW4KLSAgICAgIC0gW1BBVENIIDE2NjgxOTNdOiBGaXggY2hlY2sgZm9yIHY2IFJlYXNtTWF4U2l6ZQotICAgICAgLSBbUEFUQ0ggMTY2ODE5M106IFVwZGF0ZSByZWdpc3RyYXRpb24gb2YKLSAgICAgIC0gW1BBVENIIDE2Njg5NTJdOiBJZ25vcmUgem9tYmllIHByb2Nlc3Nlcy4KLSAgICAgIC0gW1BBVENIIDE2NzY0NzhdOiBmaXggdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzCi0gICAgICAtIFtQQVRDSCAxNjc4Nzg4XTogQmV0dGVyIGhhbmRsaW5nIG9mIFNNVVggc29ja2V0Ci0gICAgICAtIFtQQVRDSCAxNjgzMDU0XTogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8KLSAgICAgIC0gW1BBVENIIDE2ODczMzZdOiBTdGFydCB1c2luZyB0aGUgZW5oYW5jZWQKLSAgICAgIC0gW1BBVENIIDE2OTI3NjhdOiBGaXggY29weWluZyBvZiBub24tb2N0ZXQtYWxpZ25lZAotICAgICAgLSBbUEFUQ0ggMTY5ODE4NF06IFJlZ2lzdGVyIG5vbi1kZWZhdWx0IGNvbnRleHQKLSAgICAgIC0gW1BBVENIIDE3MDA3MzBdOiBSZW1vdmUgdW51c2VkIGV4dGVybiBkZWNsYXJhdGlvbi4KLSAgICAgIC0gW1BBVENIIDE3MDA3MzJdOiBGaXggZGVidWcgb3V0cHV0IHN0YXRlbWVudHMuCi0gICAgICAtIFtQQVRDSCAxNzAwNzM3XTogVGlkeSB1cCBzZXRTZXJpYWxObwotICAgICAgLSBbUEFUQ0ggMTcyOTYyOV06IEZpeCBtZW1vcnkgbGVhayBpbiBkaXNtYW4KLSAgICAgIC0gcGF0Y2ggZnJvbSBXb2p0ZWsgSmF3b3IgdG8gaGFuZGxlIHJvdyBkZWxldGlvbgotICAgICAgLSBwYXRjaDogMTIyNTQ0MDogQXBwbHkgaW50ZW50IG9mIHBhdGNoOiB0byBkZWxheQotICAgICAgLSBwYXRjaDogMTU5NTU2ODogZnJvbSBjeXJpbF9tYXJnYXJpYTogZml4Ci0gICAgICAtIHBhdGNoOiAxNjE3MjU1OiBmaXggbGVuZ3RoIG9mIHRoZSBoaXN0b3J5IGFycmF5Ci0gICAgICAtIHBhdGNoOiAxNzAwMTU3OiBmcm9tIGFmcmlrYTogZml4ZXMgb3JkZXJpbmcgb2YgZXhlYwotICAgICAgLSBwYXRjaDogMTcxMDYzMjogZnJvbSBtYXZhcmxleTogZml4IG1lbW9yeSBsZWFrIG9uCi0gICAgICAtIHBhdGNoOiAxNzE5MjUzOiBmcm9tICJDaHJpc3RpYW4gSnVuZyI6IGZpeAotICAgICAgLSBwYXRjaDogMTcxOTI1NDogZnJvbSAiQ2hyaXN0YW4gSnVuZyI6IHVwZGF0ZQotCi0gICAgc25tcHRyYXBkOgotICAgICAgLSBbQlVHIDE2MzgyMjVdOiBGaXggaW50ZXJwcmV0YXRpb24gb2YgdHJhbnNwb3J0Ci0gICAgICAtIFtQQVRDSCAxNjIwNDI0XTogRml4IG5vdGlmaWNhdGlvbiByZWNlcHRpb24gc28KLSAgICAgIC0gcGF0Y2g6IDEyMjU0NDA6IEFwcGx5IGludGVudCBvZiBwYXRjaDogdG8KLSAgICAgIC0gdXBwb3J0IGZvciBmb3J3YXJkaW5nIHRyYXBzIGJ5IE9JRCBzdWJ0cmVlLgotCi0gICAgYXBwczoKLSAgICAgIC0gW0JVRyAxOTY0MTM2XTogRHJvcCBOVUxMIHR5cGUgZnJvbSBzbm1wc2V0IHVzYWdlCi0gICAgICAtIFtQQVRDSCAxNTI5NTIzXTogQ2xvc2UgU05NUCBzZXNzaW9uIG9uIGZhaWx1cmUuCi0KLSAgICBidWlsZDoKLSAgICAgIC0gTGluayBsaWJkbCBhZ2FpbnN0IGxpYm5ldHNubXBtaWJzIGluc3RlYWQgb2YKLSAgICAgIC0gTGluayBsaWJrdm0gYW5kIGxpYndyYXAgdG8gbGlibmV0c25tcGFnZW50Ci0gICAgICAtIFtCVUcgMTA5NjE2Nl06IEhhbmRsZSAtLXdpdGhvdXQtbG9nZmlsZSBjb3JyZWN0bHkuCi0gICAgICAtIFtCVUcgMTY0Nzk3Nl06IEN5Z3dpbi9NaW5HVyBXaW5kb3dzIGJ1aWxkIGZhaWxzCi0gICAgICAtIFtQQVRDSCAxNjI1MTM1XTogY29uZmlndXJlIGxvY2F0aW9uIG9mIHB5dGhvbgotICAgICAgLSBbUEFUQ0ggMTY4MTA3M106ICNpZmRlZiBiYXNlZCBjb25maWdfZXJyb3IgaW5zdGVhZAotICAgICAgLSBbUEFUQ0ggMTcyODIyNl06IG1ha2Ugc3VyZQotICAgICAgLSBbUEFUQ0ggMTcyODIzMF06IGFkZAotICAgICAgLSBbUEFUQ0ggMTcyODIzN106IE1vdmUKLSAgICAgIC0gW1BBVENIIDE3MjgyNDRdOiBBZGQKLSAgICAgIC0gW1BBVENIIDE3MjgyNDddOiBBZGQgdHlwZQotICAgICAgLSBhZGQgIkJ1aWxkUmVxdWlyZXM6IHBlcmwtRXh0VXRpbHMtRW1iZWQiIHRvIHRoZQotICAgICAgLSBhZGQgY29uZmlndXJlIGNoZWNrIGZvciBoYXNtbnRvcHQgdG8gZml4IHRoZQotICAgICAgLSBvbmx5IGVuYWJsZSBtaWJJSS9pcHY2IHRocm91Z2ggLS1lbmFibGUtaXB2NiBvbgotICAgICAgLSBwYXRjaCBmcm9tIGFwcGxlIHRvIHNpbXBsaWZ5IG1ha2VmaWxlIHRhcmdldAotICAgICAgLSB1cGRhdGUgdG8gbGlidG9vbCAxLjUuMjQgKGZyb20gMS41LjIyKQotICAgICAgLSB1c2UgTERGTEFHUyB3aGVuIGJ1aWxkaW5nIGFnZW50LCBoZWxwZXJzIGFuZCBtaWIKLSAgICAgIC0gdXNlIGxpYnRvb2wgY2xlYW4gZm9yIHJlbW92aW5nIGZpbGVzIHRvIGVuc3VyZSB3ZQotICAgICAgLSB3b3JrIGFyb3VuZCBsaWJuZXRzbm1wYWdlbnQvbGlibmV0c25tcGhlbHBlcnMKLSAgICAgIC0geWV0IGFub3RoZXIgZml4IHRvIGFkZHJlc3MgYnVpbGQgaXNzdWVzIHdpdGgKLQotICAgIGJ1aWxkaW5nOgotICAgICAgLSBDaGVjayBmb3Igc3VwcG9ydCBvZiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucwotICAgICAgLSBEaXNhYmxlIGlubGluaW5nIG9uIHNvbGFyaXMgYXMgdGhlcmUgYXJlIHNvbWUKLQotICAgIGNvbmZpZ3VyZToKLSAgICAgIC0gW0JVRyAxNTY3MzI0XTogQ2xhcmlmeSBwcm9tcHRpbmcgZm9yCi0KLSAgICBkb2N1bWVudGF0aW9uOgotICAgICAgLSBbQlVHIDEyNDcxNjRdOiBEb2N1bWVudCB1c2Ugb2YgT0lEIG1hY3JvcwotICAgICAgLSBbQlVHIDE0MDc0NzZdOiBDbGFyaWZ5IE1JQiBwYXJzaW5nIHRvZ2dsZQotICAgICAgLSBbQlVHIDE2MTQxMDRdOiBicm9rZW4gc25tcGQoOCkgbWFudWFsIHBhZ2UKLSAgICAgIC0gW1BBVENIIDE2MDQ1ODBdOiBTTk1QKDMpIG1hbnVhbCBwYWdlCi0KLSAgICBpcml4OgotICAgICAgLSBbUEFUQ0ggMTcwOTc0OF06IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cwotCi0gICAgbGlicmFyeToKLSAgICAgIC0gRkVBVFVSRVM6IDQ1NDAyODogRGV0ZWN0IGFuZCBoYW5kbGUgZW1wdHkgTUlCCi0gICAgICAtIFBhdGNoIGZyb20gIk1pdHN1cnUgQ2hpbmVuIjogY2xlYW5zIHVwIHRoZQotICAgICAgLSBbUEFUQ0ggMTY0MjA3MV06IERvbid0IGZpZGRsZSB3aXRoIHRoZSBzdG9yYWdlCi0gICAgICAtIFtQQVRDSCAxNjY1NTQzXTogSGFuZGxlIFZBQ00gY2hlY2tzIGNvcnJlY3RseS4KLQotICAgIG1pYjJjOgotICAgICAgLSBbQlVHIDE0Mjk0NzJdOiBQcm90ZWN0IGFnYWluc3QgbWlzc2luZyBpbnN0YW5jZXMKLSAgICAgIC0gW0JVRyAxNTgyOTcyXTogSGFuZGxlIEB3aGlsZUAvQGVuZEAgcHJvcGVybHkuCi0gICAgICAtIFtCVUcgODMzNjczXTogTW9yZSBmb2N1c2VkIHNpemUgY2hlY2tzLgotICAgICAgLSBbUEFUQ0ggMTY2ODE3MV06IHNraXAgdW5rbm93biBjb2xzIGluIG1pbi9tYXgKLQotICAgIG1pc2M6Ci0gICAgICAtIERvbid0IHVzZSB0aGUgbGVnYWN5IHN5bWJvbAotCi0gICAgcGF0Y2g6Ci0gICAgICAtIGZpeCB0aGUgLU0gc3dpdGNoIGZvcgotCi0gICAgcGVybDoKLSAgICAgIC0gW0JVRyAxNDUwNjY5XTogUEFUQ0g6IDE2Mjc5NDk6IGZyb20gbWFydGluOTg3OiBhCi0gICAgICAtIFtCVUcgMTYxOTgyN106IGxpbmsgbGlibmV0c25tcGFnZW50L2xpYm5ldHNubXB0cmFwZAorICAgICAgLSBbUEFUQ0ggMTk1NjE5M106IGJldGEgdGhyZWFkYWJsZSBwZXJsIG1vZHVsZSBjb2RlIGZvciBTTk1QdjEvMmMgdXNhZ2UuCisgICAgICAtIFtQQVRDSCAyMDIxNDQ0XTogU3VwcG9ydCBTTk1QdjJjIGluIGdldHRhYmxlIHByb2Nlc3NpbmcKKyAgICAgIC0gW1BBVENIIDIwMjI5NDhdOiBGaXggZm9yIENvdW50ZXI2NCBpbiBwZXJsIHN1YmFnZW50CisgICAgICAtIFtQQVRDSCAyMTgyMDc5XTogRml4IHZhcmlvdXMgcGVybCB3YXJuaW5ncyAmIGFsbG93IHVzZSBvZiAidXNlIHN0cmljdCIKKyAgICAgIC0gW1BBVENIIDIyNzIzNDddOiBJbXBsZW1lbnQgImltcGxpZWQiIGluIE1JQiBoYXNoCisgICAgICAtIFtQQVRDSCAyMzYxNzEyXTogRml4IGdldGJ1bGsgb3B0aW1pemF0aW9uIGR1cmluZyB3YWxrcworICAgICAgLSBbUEFUQ0ggMjcwOTcwNV06IFJldHJpZXZlIHNyYy90YXJnZXQgSVAgYWRkcmVzcyBpbiBQZXJsLWJhc2VkIGFnZW50cworICAgICAgLSBbUEFUQ0ggMjc2MzcxN106IEFsbG93IHBlcmwgdG8gdXNlIE9QQVFVRXMKKyAgICAgIC0gW1BBVENIIDI3OTM4NTddOiBSZXBvcnQgZmFpbGVkIGFzeW5jaHJvbm91cyByZXF1ZXN0cy4KICAgICAgIC0gZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0CiAgICAgICAtIGZpeCBwcmVyZXF1aXNpdGVzIGZvciBOZXRTTk1QOjpUcmFwUmVjZWl2ZXIKICAgICAgIC0gZml4IHN5bnRheCBlcnJvciBpbiBOZXRTTk1QOjphZ2VudDo6U3VwcG9ydAotICAgICAgLSBpbnN0YWxsIGVtYmVkZGVkIHBlcmwgaW5pdCBmaWxlcyBmb3IKLSAgICAgIC0gcGF0Y2g6IDE3MjUwNDk6IGZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIKLQotICAgIHBvcnRzOgotICAgICAgLSBwYXRjaDogMTcwNjM0NDogZnJvbSBuYXlsb3I6IGZpeCBjb21waWxhdGlvbiB3aXRoCisgICAgICAtIGluc3RhbGwgZW1iZWRkZWQgcGVybCBpbml0IGZpbGVzIHdpdGggY29ycmVjdCBwZXJtaXNzaW9ucwogCiAgICAgcHl0aG9uOgotICAgICAgLSBbUEFUQ0ggMTcxNjExNF06IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUKKyAgICAgIC0gW0JVRyAxODI2MTc0XTogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHByaW50aW5nIHZhbHVlcy4KKwkgICAgICAgICAgICAgICBBZGRyZXNzZXMgQ1ZFLTIwMDgtMjI5MgorICAgICAgLSBbQlVHIDE4NjgyNzhdOiBQeXRob24gc2VnZmF1bHQKKyAgICAgIC0gW0JVRyAyMjU4OTM1XTogUHl0aG9uIEV4dGVuc2lvbiBNb2R1bGUgZmFpbHMgb24gU29sYXJpcworICAgICAgLSBbUEFUQ0ggMTcxNjExNF06IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUgIChEZWJpYW4gcGF0Y2gjMzgpCisgICAgICAtIFtQQVRDSCAxODYyMTc3XTogbWFkZSBjb2RlIG1vcmUgd2luZG93cy9jeWd3aW4gY29tcGlsZXIgZnJpZW5kbHkKKyAgICAgIC0gW1BBVENIIDE4Nzc4NDBdOiBGaXggTUlCIGxhYmVsIGFuZCBpbmRleGluZyBkdWUgdG8gc2wsIGJyb2tlbiByZWdleHAKKyAgICAgIC0gW1BBVENIIDIwNzQ4MTddOiBGaXggcmVnZXhwIGVuZ2luZSBDUFUgcGVyZm9ybWFuY2UgaXNzdWVzCisgICAgICAtIFtQQVRDSCAyMjYwODI4XTogRml4IHB5dGhvbiBzbm1wd2FsayBtZW1vcnkgbGVhaworICAgICAgLSBbUEFUQ0ggMjU4MDk3OV06IEZpeCBweXRob24gc2Vzc2lvbiBwb2ludGVycyBvbiA2NC1iaXQgc3lzdGVtcy4KKyAgICAgIC0gW1BBVENIIDI2Njc0MTVdOiBTdXBwb3J0ICJVc2VOdW1lcmljIiBvcHRpb24uCisgICAgICAtIFtQQVRDSCAyNzc1ODAwXTogQWxsb3cgdGhyZWFkaW5nIHRvIGNvbnRpbnVlIHdoZW4gYSByZXF1ZXN0IGlzIHNlbnQKIAogICAgIHRlc3Q6Ci0gICAgICAtIHN1cHBvcnQgYSAtbiBmbGFnIHRvIFJVTlRFU1RTIHRvIHByaW50IHRoZSB0ZXN0CisgICAgICAtIGVuaGFuY2Ugc25tcG5ldHN0YXQgdGVzdCB0byBjaGVjayB0Y3BUYWJsZSBpbiBUQ1AgbW9kZQorICAgICAgLSBzdXBwb3J0IGEgLW4gZmxhZyB0byBSVU5URVNUUyB0byBwcmludCB0aGUgdGVzdCBudW1iZXIgZm91bmQgaW4gdGhlCisJdGVzdCBmaWxlIGFzIG9wcG9zZWQgdG8gdGhlIG51bWVyaWNhbCBjb3VudAorICAgICAgLSBEbyBub3QgdGVybWluYXRlIG9uIFNJR0NITEQgc2luY2UgZGFzaCBhbmQgc291bWUgYm91cm5lIHNoZWxscyB3aWxsCisJZXhpdCB0aGUgbWFpbiBzaGVsbCB3aGVuIGEgc3Vic2hlbGwgdGVybWluYXRlcyBpbiB0aGF0IGNhc2UuCiAKLSAgICB1bnNwZWNpZmllZDoKLSAgICAgIC0gW0JVRyAxNTk2NjM4XTogbWVtb3J5IGxlYWsgaW4gaXBDaWRyUm91dGVUYWJsZSwKLSAgICAgIC0gW0JVRyAxNjAwMDkzXTogYXV0b2NvbmYgMi42MCBicmVha3MgdGhlIGJ1aWxkCi0gICAgICAtIFtCVUcgMTYxMTUyNF06IGZpeCB0Y3AgY29ubmVjdGlvbiB0YWJsZSBmZCBsZWFrCi0gICAgICAtIFtCVUcgMTYzMzQ4M106IFN1cHBvcnQgQ1BVIEhBTCBvbiBGcmVlQlNENC54CisgICAgUG9ydHM6CiAgICAgICAtIFtCVUcgMTcxMDkxMF06IGluaXRpYWwgc3VwcG9ydCBmb3IgRHJhZ29uRmx5IEJTRAotICAgICAgLSBbUEFUQ0ggMTY3ODI5OF06IGZyb20gbWFnZnI6IGNvbXBpbGUtc3ViYWdlbnQgY2hlY2tzIGZvcgotICAgICAgLSBbUEFUQ0ggMTY3ODMwMV06IGZyb20gbWFnZnI6IGRlYWxsb2NhdGUgZG9tYWluIHJlZ2lzdHJ5Ci0gICAgICAtIFtQQVRDSCAxNjc4MzAyXTogZnJvbSBtYWdmcjogbmV0c25tcF9taWJpbmRleF9sb2FkIGxlYWtzCi0gICAgICAtIFtQQVRDSCAxNjc4MzA1XTogZnJvbSBtYWdmcjogRGVhbGxvY2F0ZSB0aGUgY2FjaGUgaW4KLSAgICAgIC0gW1BBVENIIDE2NzgzMDZdOiBmcm9tIG1hZ2ZyOiBEZWFsbG9jYXRlIHRoZSBsb2cgaW4KLSAgICAgIC0gW1BBVENIIDE3MTkyNDRdOiBmaXggbWZkIGdlbmVyYXRpbmcgbWFwIGZ1bmN0aW9uCi0gICAgICAtIFtQQVRDSCAxNzI4MjQxXTogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkIGNvbmZpZ3VyZSBjaGVjawotICAgICAgLSBwYXRjaCBmcm9tIGFwcGxlIHRvIGZpeCBjcm9zcy1jb21waWxlIGJ1aWxkcyBpbiBhcHBsZXMKLSAgICAgIC0gcGF0Y2ggZnJvbSBhcHBsZSB0byBmaXggbWlub3IgZG9jdW1lbnRhdGlvbiBidWdzLgotICAgICAgLSBwYXRjaCBmcm9tIGFwcGxlIHRvIGltcHJvdmUgbWVtb3J5IHJlcG9ydGluZworICAgICAgLSBbUEFUQ0ggMTYyMzg3NF06IGFkZCBHTlUva0ZyZWVCU0Qgc3VwcG9ydAogCiAgICAgQUlYOgotICAgICAgLSBbUEFUQ0ggMTY2NTA3OV06IEFJWCBwYXRjaGVzCi0gICAgICAtIGJ1aWxkIGZpeGVzIGZvciBlbWJlZGRlZCBQZXJsCi0gICAgICAtIGZpeCBkZWZhdWx0IHNoYXJlZCBsaWJyYXJ5IGJ1aWxkaW5nIGluc3RlYWQgb2YgZm9yY2luZwotICAgICAgLSB1c2UgIi1XbCwtYnJ0bCIgd2hlbiBjb21waWxpbmcgd2l0aCBnY2MKKyAgICAgIC0gW1BBVENIIDE2NjUwNzldOiBBSVggcGF0Y2hlcyBmb3IgY3B1IHN0YXRzIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcKKyAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIEFJWCA2LngKKyAgICAgIC0gQnVpbGQgZml4ZXMgZm9yIGVtYmVkZGVkIFBlcmwKKyAgICAgIC0gRml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nIHN0YXRpYworICAgICAgLSBVc2UgIi1XbCwtYnJ0bCIgd2hlbiBjb21waWxpbmcgd2l0aCBnY2MKIAogICAgIEZyZWVCU0Q6Ci0gICAgICAtIGFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHVwY29taW5nIEZyZWVCU0QgNwotICAgICAgLSBmaXggY29uZmlndXJlIHdhcm5pbmcgZm9yIHN5cy9jb25mLmgKKyAgICAgIC0gW0JVRyAxMDczNzgyXTogUmVzdG9yZSBQZXJmU3RhdCB2YWx1ZXMgZm9yIEZyZWVCU0QgNS54IHN5c3RlbXMuCisgICAgICAtIFtCVUcgMTYzMzQ4M106IFN1cHBvcnQgQ1BVIEhBTCBvbiBGcmVlQlNENC54CisgICAgICAtIFtQQVRDSCAxOTUxOTk2XTogRml4IGZvciBDUFUgc3RhdHMgb24gRnJlZUJTRAorICAgICAgLSBbUEFUQ0ggMjUwNzI0OV06IHNjdHAtbWliIHN1cHBvcnQgZm9yIEZyZWVCU0QuCisgICAgICAtIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHVwY29taW5nIEZyZWVCU0QgNworICAgICAgLSBGaXggY29uZmlndXJlIHdhcm5pbmcgZm9yIHN5cy9jb25mLmgKKyAgICAgIC0gcGF0Y2ggZnJvbSBDZXphcnkgTW9yZ2EgdG8gZml4IGEgbWFrZSB0ZXN0IG9uIGZyZWVic2QKIAotICAgIEhQOgotICAgICAgLSBVWDogQlVHOiAxNzQyMjc4OiBjb21waWxlIGVycm9yIG9uIEhQLVVYIDExLjIzIChJQTY0KQotICAgICAgLSBVWDogSFAtVVggbmVlZHMgX1JFRU5UUkFOVCBkZWZpbmVkIHRvIHBpY2sgdXAKKyAgICBIUC1VWDoKKyAgICAgIC0gW0JVRyAyNzc5NDcyXTogRmlsZXN5c3RlbXMgbWlzc2luZyBpbiBoclN0b3JhZ2UgdGFibGUKKyAgICAgIC0gW1BBVENIIDIwODg3MjZdOiBGaXggYW4gaXNzdWUgcmVwb3J0aW5nIG1lbW9yeSBpbiBuZWdhdGl2ZSB2YWx1ZXMuCisgICAgICAtIE5lZWRzIF9SRUVOVFJBTlQgZGVmaW5lZCB0byBwaWNrIHVwIHN0cnRva19yLgogCiAgICAgSVJJWDoKLSAgICAgIC0gW1BBVENIIDE2NzU4NjldOiBDUFUgc3RhdGlzdGljcyBmb3IgSVJJWAorICAgICAgLSBbUEFUQ0ggMTY3NTg2OV06IENQVSBzdGF0aXN0aWNzIGZvciBJUklYIGJhc2VkIG9uIFBDUAorICAgICAgLSBbUEFUQ0ggMTcwOTc0OF06IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cwogCiAgICAgTGludXg6Ci0gICAgICAtIFtCVUcgMTY2NjAwNV06IEZhaWwgdG8gd2FsayBpcHY2SW50ZXJmYWNlVGFibGUgb24KLSAgICAgIC0gW1BBVENIIDE1ODEyOTRdOiAKLSAgICAgIC0gZml4IGV0aHRvb2wgY29uZmlndXJlIGNoZWNrIGZvciByZWNlbnQgc3lzdGVtcworICAgICAgLSBbQlVHIDE2NjYwMDVdOiBGYWlsIHRvIHdhbGsgaXB2NkludGVyZmFjZVRhYmxlIG9uIExpbnV4CisgICAgICAtIFtQQVRDSCAxNTgxMjk0XTogaG9zdC1yZXNvdXJjZXMgaW1wcm92ZW1lbnRzCisgICAgICAtIFtQQVRDSCAxOTY5NjI3XTogSGFuZGxlIGluc3RhbGwgd2l0aCBlbXB0eSAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrIGZpbGUgCisgICAgICAtIFtQQVRDSCAxNzA0MTA1XTogQWRkIElQdjYgc3VwcG9ydCB0byB0aGUgaW5ldE5ldFRvTWVkaWFUYWJsZQorICAgICAgLSBbUEFUQ0ggMTcwNTU5NF06IFZhcmlvdXMgZml4ZXMgdG8gaXBBZGRyZXNzUHJlZml4VGFibGUgcmVwb3J0aW5nCisgICAgICAtIFtQQVRDSCAxNzA4MjQzXTogSW1wbGVtZW50IGlwRGVmYXVsdFJvdXRlVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTU0MDVdOiBJbXBsZW1lbnQgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUKKyAgICAgIC0gW1BBVENIIDE3MTkyNTRdOiB1cGRhdGUgSFJGU19pZ25vcmUgbGlzdCB0byBjdXJyZW50IGxpbnV4IGxpa2VseWhvb2RzCisgICAgICAtIFtQQVRDSCAxNzI0NjAyXTogTWZELWJhc2VkIGlwRGVmYXVsdFJvdXRlclRhYmxlIGltcGxlbWVudGF0aW9uCisgICAgICAtIFtQQVRDSCAxNzgzNDIzXTogcmV0dXJuIGEgY29ycmVjdCBpcHY2SW50ZXJmYWNlSWRlbnRpZmllciBvZiBsb29wYmFjaworICAgICAgLSBbUEFUQ0ggMTgyNjEwMl06IHN1cHBvcnQgbG9uZ2VyIGludGVyZmFjZSBuYW1lcworICAgICAgLSBbUEFUQ0ggMTgyODYwMl06IFN1cHBvcnQgaXBEZWZhdWx0VFRMIGFuZCBpcEZvcndhcmRpbmcgU0VUcworICAgICAgLSBbUEFUQ0ggMTg5NjExOF06IEZpeCBpZlRhYmxlIDMyYml0IGNvdW50ZXJzCisgICAgICAtIFtQQVRDSCAxOTI3NzUxXTogSW1wbGVtZW50IGljbXBNc2dTdGF0c1RhYmxlCisgICAgICAtIFtQQVRDSCAyMDIzNjMzXTogSW1wbGVtZW50IFNDVFAtTUlCCisgICAgICAtIFtQQVRDSCAyMDUzMjczXTogSW1wbGVtZW50IEV0aGVyTGlrZSBNSUIKIAogICAgIE1hY09TWDoKLSAgICAgIC0gW1BBVENIIDE2MDA0NTNdOiBPUyBYCi0gICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhBTAotCi0gICAgUGVybDoKLSAgICAgIC0gbGluayBQZXJsIG1vZHVsZXMgYWdhaW5zdCB0aGUgZXhhY3Qgc2V0IG9mIGxpYnJhcmllcworICAgICAgLSBbUEFUQ0ggMTYwMDQ1M106IE9TIFggY29tcGlsZS10aW1lIGVuZGlhbiBkZXRlcm1pbmF0aW9uCisgICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhBTCBpbXBsZW1lbnRhdGlvbiBmb3IgbWFjaC9kYXJ3aW4KKyAgICAgIC0gSW1wcm92ZSBtZW1vcnkgcmVwb3J0aW5nIChwYXRjaCBmcm9tIEFwcGxlKQogCiAgICAgU29sYXJpczoKLSAgICAgIC0gSUYtTUlCIGZpeDogYWRkIG1pc3NpbmcgcmV0dXJuIGF0IGVuZCBvZgotICAgICAgLSBbQlVHIDE2MjYxNTNdOiBubyBoclNXUnVuIGluZm9ybWF0aW9ucyBvbgotICAgICAgLSBbUEFUQ0ggMTYyMzQ0N106IGhyU1dSdW4KKyAgICAgIC0gW0JVRyAxNjI2MTUzXTogTm8gaHJTV1J1biBpbmZvcm1hdGlvbnMgb24gU29sYXJpcyB6b25lcworICAgICAgLSBbQlVHIDE4MTA4MTRdOiB0Y3BUYWJsZSBtaXNzaW5nIGVudHJpZXMgYW5kIHdyb25nIHBvcnRzCisgICAgICAtIFtCVUcgMTgxOTE4OV06IHtpZk9wZXJTdGF0dXMsaXBBZEVudElmSW5kZXh9IHJlcG9ydGVkIGluY29ycmVjdGx5CisgICAgICAtIFtCVUcgMTgyMjI3NV06IHtpZk9wZXJTdGF0dXMsaXBBZEVudElmSW5kZXh9IHJlcG9ydGVkIGluY29ycmVjdGx5CisgICAgICAtIFtQQVRDSCAxNjIzNDQ3XTogRml4IGhyU1dSdW4gZm9yIHRlcm1pbmF0ZWQgcHJvY2Vzc2VzCisgICAgICAtIFtQQVRDSCAxNzE5NzMwXTogU3VwcG9ydCBmb3IgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcEFkZHJlc3NUYWJsZQorICAgICAgLSBbUEFUQ0ggMTgyNDE5Nl06IHtpZk9wZXJTdGF0dXMsaXBBZEVudElmSW5kZXh9IHJlcG9ydGVkIGluY29ycmVjdGx5CisgICAgICAtIFtQQVRDSCAxODM0Njk5XTogRml4IDE4MzMyOTQ6IERMUEkgcHJvYmxlbXMgb24gU29sYXJpcyAyLjYKKyAgICAgIC0gW1BBVENIIDIwMTI0MDRdOiBEZWFsIHdpdGggbW9yZSB0aGFuIDEwIGludGVyZmFjZXMuCisgICAgICAtIFtQQVRDSCAyNzUxNTg4XTogSW5jb25zaXN0ZW50IGRhdGEgY2FuIGJlIHJlcG9ydGVkIG9uIFNvbGFyaXMgMTBVNCsKKyAgICAgIC0gI2RlZmluZSBORVdfTUlCX0NPTVBMSUFOVCB0byBzdXBwb3J0IFNvbGFyaXMgMTBVNCsKKyAgICAgIC0gSUYtTUlCIGZpeDogYWRkIG1pc3NpbmcgcmV0dXJuIGF0IGVuZCBvZiBnZXRfaWZfc3RhdHMKIAogICAgIFdpbjMyOgogICAgICAgLSBbQlVHIDE2NjI5ODddOiBjb21waWxlIGVycm9yIG9uIEN5Z3dpbgotICAgICAgLSBbUEFUQ0ggMTYyMjA4MF06IEE6IHBhc3MgV2luMzIKKyAgICAgIC0gW0JVRyAyNzc5NTQxXTogRml4ZWQgaGFuZGxlIGxlYWsgaW4gcGFzc19wZXJzaXN0LgorICAgICAgLSBbUEFUQ0ggMTYyMjA4MF06IEE6IHBhc3MgV2luMzIgaGFuZGxlcyByZW1haW4gb3Blbi4KKyAgICAgIC0gW1BBVENIIDE3MDYzNDRdOiBGaXggY29tcGlsYXRpb24gd2l0aCBjeWd3aW4KKyAgICAgIC0gW1BBVENIIDI2ODYyNDhdOiBGaXggc2V2ZXJhbCB3aW5FeHRETEwgYnVncy4KKyAgICAgIC0gW1BBVENIIDI2ODgzNDJdOiBGaXggVlMyMDA1IHZhcmlvdXMgY29tcGlsZXIgd2FybmluZworICAgICAgLSBbUEFUQ0ggMjY5MTg3Nl06IEFsbG93IGNvbXBpbGluZyB0aGUgc2VydmljZXMgdXNpbmcgdW5pY29kZS4KKyAgICAgIC0gW1BBVENIIDI2OTM3NDZdOiBpbXByb3ZlZCBzb2NrZXQgc3RhcnR1cCBzdXBwb3J0CisgICAgICAtIEFkZCBzdXBwb3J0IGZvciB3aW5FeHRETEwgdG8gYnVpbGQuYmF0CisgICAgICAtIEJ1aWxkIGZpeGVzIGZvciBNU1ZDIDIwMDguCiAgICAgICAtIGZpeCBBRVMgc3VwcG9ydAogICAgICAgLSBmaXggd2luMzIvQ29uZmlndXJlIC0td2l0aC1pcHY2CiAKKyo1LjQqCisKKyAgICBidWlsZDoKKyAgICAgIC0gW0JVRyAxNDE2NDgxXTogU3VwcG9ydCBzcGVjaWZ5aW5nIGFuIGV4cGxpY2l0IGxpbmtlci4KKyAgICAgIC0gZW5hYmxlLWFzLW5lZWRlZCB3aWxsIHRyeSB0byBsaW5rIGJ1aWx0IGxpYnJhcmllcyBhZ2FpbnN0IG5lZWRlZAorCWxpYnJhcmllcyBhdCBsaWJyYXJ5IGxpbmsgdGltZSwgcmF0aGVyIHRoYW4gYXBwbGljYXRpb24gbGluayB0aW1lLgorCisgICAgc25tcGxpYjoKKyAgICAgIC0gW1BBVENIIDEyODI1NjZdOiB0byByZXdvcmsgdHJhbnNwb3J0IGNyZWF0aW9uIHRvIGFsbG93IGZvcgorCWFsdGVybmF0aXZlIGludGVycHJldGF0aW9ucyBvZiB0aGUgYWRkcmVzcyBhbmQgYSBtb3JlIGZsZXhpYmxlCisJdHJhbnNwb3J0IHJlZ2lzdHJhdGlvbiBzeXN0ZW0KKyAgICAgIC0gW0JVR1M6IDE1Mzc0NTksIEJVR1M6IDE1NDA3NDVdIEZpeCBtaXNzaW5nIE1JQiBwYXJzaW5nIHRva2VucworICAgICAgLSBbUEFUQ0ggMTU2MjE2OF06IGNoZWNrIGZvciBhIHNvY2sgZmQgbGVzcyB0aGFuIDAuCisgICAgICAtIFtQQVRDSCAxNTcwNjUwXTogY3JlYXRlIGEgbG9nZ2luZyBzaHV0ZG93biBmdW5jdGlvbiB0byBwcm9wZWxyeQorCWNsZWFuIHVwIGxvZyByZWdpc3RyYXRpb25zIGlmIG5lZWRlZC4KKyAgICAgIC0gW1BBVENIIDE1NjUyOTNdOiBVRFBJUHY2IHRyYW5zcG9ydCByZXBvcnRzIHdyb25nIHBvcnQgbnVtYmVyCisgICAgICAtIHJlbmFtZSBpbml0X21pYiB0byBuZXRzbm1wX2luaXRfbWliIHRvIGF2b2lkIHN5bWJvbCBjbGFzaCB3aXRoCisJSFAtVVgncyBsaWJubQorICAgICAgLSBbUEFUQ0ggMTUwOTk0M106IHJlc3BvbnNlcyB3aWxsIGdldCBzZW50IGZyb20gdGhlIG9yaWdpbmFsIGRlc3QgSVAKKwlhZGRyZXNzIHdoZW4gcG9zc2libGUuCisKKyAgICBzbm1wZDoKKyAgICAgIC0gW1BBVENIIDE1NTA3MjVdOiBBIG5ldyB1aW50IGluc3RhbmNlIGhlbHBlciB0byBtYXRjaCB0aGUgZXhpc3RpbmcKKwlpbnQsIGxvbmcgYW5kIHVsb25nIGhlbHBlcnMKKyAgICAgIC0gW0JVRyAxNTI3OTMwXTogZml4IHNtdXggYXV0aGVudGljYXRpb24KKyAgICAgIC0gW1BBVENIIDE1NjEyNzddOiB1c2UgbmV0LmlwdjYubmVpZ2gubG8uYmFzZV9yZWFjaGFibGVfdGltZV9tcworCWluc3RlYWQgb2YgZGVwcmVjYXRlZCBiYXNlX3JlYWNoYWJsZV90aW1lCisgICAgICAtIFtCVUcgMTQ3NDQ2OF06IGlmQ29ubmVjdG9yUHJlc2VudCBhbHdheXMgcmV0dXJucyAwCisgICAgICAtIFtQQVRDSCAxNTI0NzU1XTogdG8gYmV0dGVyIHN1cHBvcnQgdGhlIFVEUFRhYmxlIGZvciB1bmtub3duIGFkZHJlc3MKKwl0eXBlcworICAgICAgLSBbUEFUQ0ggMTUzNDg3N106IHRvIGFkZCBzdXBwb3J0IGZvciBza2lwcGluZyBORlMgZW50cmllcyBpbiB0aGUKKwlob3N0IHJlc291cmNlcyBoclN0b3JhZ2VUYWJsZS4JU2VlIHRoZSBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzCisJdG9rZW4gaW4gdGhlIHNubXBkLmNvbmYgZmlsZSBmb3IgZGV0YWlscy4KKyAgICAgIC0gW1BBVENIIDE1NTc1MTQgXTogRG8gbm90IGF0dGVtcHQgdG8gY29sbGVjdCBkYXRhIGR1cmluZyBTRVQKKwlwcm9jZXNzaW5nLgorICAgICAgLSBbQlVHIDE1MzU5MDNdOiBTdXBwb3J0IHNwYWNlcyB3aXRoaW4gc2VjdXJpdHkgbmFtZXMKKyAgICAgIC0gQWdlbnQgYnVpbGRzIGRlZmF1bHQgbW9kdWxlIGxpc3QgZnJvbSBhIGRlZmF1bHRfbWlicy5oIHJhdGhlciB0aGFuCisJYSBoYXJkIGNvZGVkIGNvbmZpZ3VyZSBsaXN0CisgICAgICAtIFtCVUcgMTU1OTM1OF06IGNoZWNrIHNjYW5mIHJlc3VsdHMgZm9yIGRpc2tpbyBzY2FubmluZworICAgICAgLSBbQlVHIDE1NjQyMzNdOiBIYXZlIGNvbmZpZ3VyZSB0ZXN0IGZvciBycG0gaGVhZGVycyBub3QganVzdCB0aGUKKwlsaWJyYXJpZXMKKyAgICAgIC0gW1BBVENIIDE1NzkzNjRdOiBVcGRhdGVkIGRhcndpbiBwYXRjaCB0byBmaXggY29tcGlsYXRpb24gb24gVGlnZXIKKwlhbmQgTGVhcG9yZAorICAgICAgLSBbUEFUQ0ggMTU2NTcwM106IHBhdGNoIHRvIGZpeCByYXBpZCByZWdpc3RyYXRpb25zL2RlcmVnaXN0cmF0aW9uCisJaXNzdWVzCisgICAgICAtIFtQQVRDSCAxNTYyNjg4XTogZml4IHBpbmcvcmVhdHRhY2ggYWdlbnR4IGNvZGUKKyAgICAgIC0gW1BBVENIIDE1NTE5NDhdOiBNYWtlIHBhc3NfcGVyc2lzdCB1c2FibGUgb24gdUNsaW51eAorICAgICAgLSBbUEFUQ0ggMTU2ODE1MF06IEV4dGVuZCBwYXNzX3BlcnNpc3QgZXJyb3IgbWVzc2FnZXMgdGhhdCBjYW4gYmUKKwlwYXNzZWQgYmFjayBmcm9tIHRoZSBzY3JpcHQKKyAgICAgIC0gW1BBVENIIDE1NzA2NTBdOiBtYWtlIGRlbGV0ZSB0YWJsZSBmdW5jdGlvbiBwdWJsaWMKKyAgICAgIC0gW1BBVENIIDE1NzU5ODRdOiBibG9jayBTSUdIVVAgZHVyaW5nIHJlY29uZmlnCisgICAgICAtIFtQQVRDSCAxNTcwOTgyIF06IFNvbGFyaXMgSUYtTUlCOiBTdXBwb3J0IGZvciBJUHY2LW9ubHkgaW50ZXJmYWNlcworICAgICAgLSBtZW1Ub3RhbEZyZWUgc2hvdWxkIHJlcG9ydCB0b3RhbCB2aXJ0dWFsIGluc3RlYWQgb2YgcGh5c2ljYWwgbWVtb3J5CisgICAgICAtIGJ1aWxkIGZpeCBmb3IgLS13aXRob3V0LWttZW0tdXNhZ2UKKyAgICAgIC0gW0JVRyAxNTg1ODE1XTogZml4IG1mZCBiaXRzIGxlbmd0aCBjYWxjdWxhdGlvbgorICAgICAgLSBbQlVHIDE0Mjc0MTBdOiBTZXQgYXV0aCBlbmdpbmVJRCBmb3IgU05NUHYzIHRyYXBzLgorICAgICAgLSBbQlVHIDE1MDIyNjddOiBCdWlsZCBhY2Nlc3MgbGlzdCBpbiB0aGUgY29ycmVjdCBvcmRlci4KKyAgICAgIC0gW1BBVENIIDE1NTQ4MjddOiBmcm9tIHJ0eWxlOiBmaXggaGFuZGxpbmcgb2YgZmFpbGVkIHByb3h5IFNFVAorCXJlcXVlc3RzCisgICAgICAtIFtQQVRDSCAxNTk4OTY2XTogRml4IGJ1ZyAjMTU5ODkyNzogI2VsaWYgYnVpbGQgZml4CisKKyAgICBzbm1wdHJhcGQ6CisgICAgICAtIHRoZSB0cmFwaGFuZGxlIGRpcmVjdGl2ZSBub3cgc3VwcG9ydHMgYSAtdCBzd2l0Y2ggdG8gaW5kaWNhdGUKKwltYXRjaGluZyBhbnkgT0lEIGluIHRoZSB0cmVlIGJlbG93IHRoZSBzcGVjaWZpZWQgT0lECisgICAgICAtIFtQQVRDSCAxNTM2NzczXTogc3VwcG9ydCBwYXJ0aWFsIG9pZCBtYXRjaGluZworICAgICAgLSBbUEFUQ0ggMTU5ODk2OF06IEZpeCBidWcgIzE1ODc3NTk6IHNubXB0cmFwZCBkb2Vzbid0IHJlY29nbml6ZSAtQQorCW9wdGlvbgorCisgICAgc25tcGRmOgorICAgICAgLSBbQlVHIDE1MTU1MDddOiBIYW5kbGUgZmFpbGVkIHJlcXVlc3RzIGJldHRlcgorCisgICAgcGVybDoKKyAgICAgIC0gRml4ZWQgdGhlIHBlcmwgYnVsa3dhbGsgZnVuY3Rpb24KKyAgICAgIC0gW1BBVENIIDE1NzU5MzddOiBmaXggdXNlbnVtZXJpYyBvdXRwdXQgaW4gYXN5bmMgdmFyYmluZHMgc28gdGhleQorCXJldHVybiBPSURzIGluc3RlYWQgb2YgZW1wdHkgc3RyaW5ncy4KKyAgICAgIC0gdXBkYXRlIGRlZmF1bHRfc3RvcmUgbW9kdWxlIHRvIGxhdGVzdCBkZWZhdWx0X3N0b3JlIGMtYmluZGluZworCXRva2VucworICAgICAgLSBtYWtlIHBlcmx0ZXN0IGZpeGVzIGZvciBTb2xhcmlzIDIuNiBhbmQgZWFybGllcgorICAgICAgLSBmaXhlcyBmb3IgNjQtYml0IHBsYXRmb3JtcworICAgICAgLSBtYWtlIHBlcmx0ZXN0IGZpeGVzIGZvciBIUC1VWAorICAgICAgLSBtYWtlIHBlcmx0ZXN0IGZpeGVzIGZvciBJUklYCisKKyAgICBtaWIyYzoKKyAgICAgIC0gW0JVRyAxNDc5OTE2XTogUmVzdG9yZSBjb25zaXN0ZW5jeSBpbiByb3cgY3JlYXRpb24gY29kZS4KKyAgICAgIC0gW0JVRyAyODI3MjY5XTogU3VwcHJlc3Mgbm9uLW9yZGVyZWQgVE9ETyBjb21tZW50cy4KKworICAgIG1pc2M6CisgICAgICAtIE1vc3QgbmV0LXNubXAgc3BlY2lmaWMgZGVmaW5lcyBhcmUgbm93IChhbHNvKSBhdmFpbGFibGUgdW5kZXIgYQorCXByb3BlciBORVRTTk1QXyBwcmVmaXguIFRoZSBvbGRlciwgcG90ZW50aWFsbHkgY29uZmxpY3RpbmcgbmFtZXMgYXMKKwl3ZWxsIGFzIHRoZSBhdXRvY29uZiB2YXJpYWJsZXMgY2FuIG5vdyBiZSB0dXJuZWQgb2ZmIGJ5IGEgc3BlY2lhbAorCWRlZmluZS4KKyAgICAgIC0gW0JVRyAxNTg1MjUwXTogZG9uJ3QgdXNlIGRlcHJlY2F0ZWQgb3B0aW9ucyBpbiBzdGFydCBzY3JpcHQKKyAgICAgIC0gIm1ha2UgdGVzdCIgZml4ZXMgZm9yIG5vbi1VRFAgdHJhbnNwb3J0cworICAgICAgLSBbQlVHIDE1Nzc5MTNdOiBhZGQgbWlzc2luZyBtYW51YWwgcGFnZXMgZm9yIGV4ZWN1dGFibGVzLCBzdXBwbGllZAorCWJ5IERlYmlhbgorICAgICAgLSBbUEFUQ0ggMTU5NjAyOF06IGZyb20gIlN0ZXBoZW4gSi4gRnJpZWRsIjogY29uc3QgZml4ZXMgZm9yIHRoZQorCW1pYl9hcGkoMykgbWFudWFsIHBhZ2UKKyAgICAgIC0gUlBNIHNwZWMgZmlsZSBmaXhlcyBmb3IgNjQtYml0IHBsYXRmb3JtcworCisgICAgTWFjT1NYOgorICAgICAgLSBbUEFUQ0ggMTU2Njc3N106IGJ1aWxkIGZpeGVzIGZvciBtZW1vcnlfZGFyd2luLmMKKyAgICAgIC0gYnVpbGQgZml4IGZvciBtaWJJSS91ZHBUYWJsZQorCisgICAgVHJ1NjQ6CisgICAgICAtIGZpeCAiYXV0b19ubGlzdCBmYWlsZWQgb24gYXJwdGFiX3NpemUgYXQgbG9jYXRpb24gMCIgZXJyb3JzCisKKyAgICBJUklYOgorICAgICAgLSBwcm9wZXIgaW1wbGVtZW50YXRpb24gZm9yIFVDRC1TTk1QLU1JQjo6bGFUYWJsZSAoYXZvaWRpbmcgbmxpc3QpCisKKyAgICBTb2xhcmlzOgorICAgICAgLSBbUEFUQ0ggMTU2OTUzNywxNTY5NTM5XTogbmV3IFVEUC1NSUIgYW5kIFRDUC1NSUIgaW1wbGVtZW50YXRpb24KKwkoZW5hYmxlIHRocm91Z2ggLS13aXRoLW1pYi1tb2R1bGVzPXVkcC1taWIsdGNwLW1pYikKKworICAgIEFJWDoKKyAgICAgIC0gdXNlIGNvcnJlY3QgQVJQVEFCX1NZTUJPTCBhbmQgQVJQVEFCX1NJWkVfU1lNQk9MCisgICAgICAtIFtCVUcgMTIwNTMwMF06IG5saXN0IGVycjogbmVpdGhlciBucHJvYyBub3IgX25wcm9jIGZvdW5kIChzYW1lIGZvcgorCXJ0X3RhYmxlLCBydGhhc2hzaXplLCBydGhvc3QsIHJ0bmV0KQorCmRpZmYgLS1naXQgYS9DT1BZSU5HIGIvQ09QWUlORwppbmRleCAyNmRiNjA2Li4zZWVmNDQwIDEwMDY0NAotLS0gYS9DT1BZSU5HCisrKyBiL0NPUFlJTkcKQEAgLTIyOSwzICsyMjksOTkgQEAKIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4KIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCistLS0tIFBhcnQgODogQXBwbGUgSW5jLiBjb3B5cmlnaHQgbm90aWNlIChCU0QpIC0tLS0tCisKK0NvcHlyaWdodCAoYykgMjAwNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCAgCittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgIAorYXJlIG1ldDoKKworMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0ICAKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKzIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlICAKK2NvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nICAKK2Rpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCAgCit3aXRoIHRoZSBkaXN0cmlidXRpb24uCiszLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mIGl0cyAgCitjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgIAorZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EICAKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sICAKK1RIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBICAKK1BBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTICAKK0NPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCAgCitTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UICAKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgIAorVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCAgCitPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgIAorT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUICAKK09GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiAgCitTVUNIIERBTUFHRS4KKworLS0tLSBQYXJ0IDk6IFNjaWVuY2VMb2dpYywgTExDIGNvcHlyaWdodCBub3RpY2UgKEJTRCkgLS0tLS0KKworQ29weXJpZ2h0IChjKSAyMDA5LCBTY2llbmNlTG9naWMsIExMQworQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorIAorKiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAKKyogIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIAorKiAgTmVpdGhlciB0aGUgbmFtZSBvZiBTY2llbmNlTG9naWMsIExMQyBub3IgdGhlIG5hbWVzIG9mIGl0cworICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCitgYEFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwKK0lOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCitCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MKK09GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKK09OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUgorVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRQorVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSAorREFNQUdFLgorCistLS0tIFBhcnQgMTA6IElFVEYgY29weXJpZ2h0IG5vdGljZSAoQlNEKSAtLS0tLQorCitDb3B5cmlnaHQgKGMpIDIwMTMgSUVURiBUcnVzdCBhbmQgdGhlIHBlcnNvbnMgaWRlbnRpZmllZCBhcyBhdXRob3JzIG9mCit0aGUgY29kZS4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorbWV0OgorCivCtyBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCit0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCivCtyBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworwrcgTmVpdGhlciB0aGUgbmFtZSBvZiBJbnRlcm5ldCBTb2NpZXR5LCBJRVRGIG9yIElFVEYgVHJ1c3QsIG5vciB0aGUKK25hbWVzIG9mIHNwZWNpZmljIGNvbnRyaWJ1dG9ycywgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlCitwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4KK3Blcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMg4oCcQVMKK0lT4oCdIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECitUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEKK1BBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBPV05FUgorT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCitFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCitQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKK1BST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YKK0xJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HCitORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMKK1NPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgpkaWZmIC0tZ2l0IGEvQ2hhbmdlTG9nIGIvQ2hhbmdlTG9nCmluZGV4IDFkZjAyMGMuLjkwN2NhYTEgMTAwNjQ0Ci0tLSBhL0NoYW5nZUxvZworKysgYi9DaGFuZ2VMb2cKQEAgLTEsMTMyICsxLDQ3ODMgQEAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUNoYW5nZXM6IFY1LjQuMyAtPiBWNS40LjQKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotMjAxMS0wNi0yNCAxMjozOCAgZHRzMTIKK0NoYW5nZXM6IFY1LjUuMSAtPiBWNS41LjIKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKK2NvbW1pdCA0MmI1YWZiM2NkNmQwNmFkYjQyNmYxZGJhYTk4MzU4ZjJiMmU4YTUzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIEp1bCAxOCAxMDo0Njo0NyAyMDEyICswMTAwCiAKLSAgIE1pc3NpbmcgY2hlY2sgZm9yIHJwbXRzLmgKKyAgICBWNS01LXBhdGNoZXMgb3V0IG9mIFJlbGVhc2UgQ2FuZGlkYXRlCiAKLTIwMTEtMDYtMjQgMTI6MjAgIGR0czEyCitjb21taXQgOGJkNDQwYzQzZTM2NWEwYjc3ZDQ3ZjU4MmNhZGU5Zjk3YzdiZmNlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBKdWwgMTggMTA6NDY6MjggMjAxMiArMDEwMAogCi0gICAqIGNvbmZpZ3VyZToKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yCiAKLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorY29tbWl0IDZlMDg1NWEzMTU3MTk4NDk5NDExYWM1MmI0NmQ1ZjMyYWFkNWI5ZmEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSnVsIDE4IDA5OjUxOjMyIDIwMTIgKzAxMDAKIAotMjAxMS0wNi0yNCAxMjowOCAgZHRzMTIKKyAgICBBZGQgbWlzc2luZyByZXR1cm4gdHlwZSBpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbgogCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorY29tbWl0IDA3ZDgyNWU4YmIzNWVlYTlhYzZiMWNiODJjYmIyMzRmZTY2YjFhYjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgSnVsIDE4IDA5OjUxOjMyIDIwMTIgKzAxMDAKIAotICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKyAgICBBZGQgbWlzc2luZyByZXR1cm4gdHlwZSBpbiBmdW5jdGlvbiBkZWNsYXJhdGlvbgogCi0yMDExLTA2LTI0IDEyOjAyICBkdHMxMgorY29tbWl0IDVkYjcwMDM2ZWY2NzU2MzU2NDdlNWI3YzcyNTM0NTY4Mzg4MzY2NDcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMTEgMTQ6NTU6MzggMjAxMiAtMDcwMAogCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAgZG9uJ3QgdXNlIC0tcmViYXNlCiAKLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorY29tbWl0IDE3Mjc3Njg5YjYyOWY0NTg2ZDVkNzE0ZDg3Y2U2YmMxMWY4ODc2NjgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdWwgMTEgMTQ6NTU6MzggMjAxMiAtMDcwMAogCi0yMDExLTA2LTIzIDE1OjQxICBkdHMxMgorICAgIGRvbid0IHVzZSAtLXJlYmFzZQogCi0gICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKLSAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Citjb21taXQgNTIwNmQyNWQ0Y2I5NGQ0YjBkZDMzMWE1YTQxMTNkNGQ4Nzc4MmM0MgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAyIDEyOjE0OjM5IDIwMTIgLTA3MDAKIAotICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45Ci0gICBCYXNlZCBvbiBhIHBhdGNoIGJ5IEphbiBTYWZyYW5laworICAgIGJldHRlciBkZXNjcmlwdGlvbiBvZiAtLWRpc2FibGUtc2V0LXN1cHBvcnQKIAotMjAxMS0wNi0yMiAxNDoyNyAgZHRzMTIKK2NvbW1pdCBmOTI4NTMyODE0NzdlZTcyNGE1MWE5OTY3ZjM3ZDNmMWRkMWIwZjdlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDIgMTI6MDk6NTAgMjAxMiAtMDcwMAogCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CisgICAgcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBjYXVzaW5nIGEgcHJvYmxlbQogCi0gICBQcm92aWRlIGEgZnJhbWV3b3JrIGZvciByZWFkaW5nIFJQTSBwYWNrYWdlIGluZm9ybWF0aW9uIGZyb20KLSAgIGEgY2FjaGUgZGlyZWN0b3J5IChyYXRoZXIgdGhhbiBxdWVyeWluZyB0aGUgUlBNZGIgZGlyZWN0bHkpLgotICAgCi0gICBNeSBhcG9sb2dpZXMgdG8gSmVmZiBKb2huc29uIGZvciB0aGUgZGVsYXkgaW4gYWRkaW5nIHRoaXMKLSAgIGZ1bmN0aW9uYWxpdHkuCitjb21taXQgNWJlMjczNjg3NTE2OTFmYzFhYjU1ZmU2MmI0MTA2ZDhkOTliODcwNAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAyIDEyOjA2OjU4IDIwMTIgLTA3MDAKIAotMjAxMS0wNi0xNyAxOTowNiAgYnZhc3NjaGUKKyAgICBhZnRlciBwdWxsaW5nIGFsbCB0aGUgYnJhbmNoZXMsIHN3aXRjaCBiYWNrIHRvIHRoZSBpbml0aWFsIG9uZQogCi0gICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorY29tbWl0IGU3MmUyMDVmZGNlZjc4N2VmODQwYzhjOTI4ZWQyNzM1MWE2OTU0NGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBGcmkgSnVuIDIyIDEzOjU4OjA3IDIwMTIgKzAxMDAKIAotICAgVXNlICVwIHRvIHByaW50IGEgcG9pbnRlciBpbnN0ZWFkIG9mICVsZAorICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKIAotMjAxMS0wNi0wMSAxNTo1NyAgZHRzMTIKK2NvbW1pdCBmNzlhNTRmMjQ3MjUwOGIxNjdkOTc3ZjM2N2MzODY0YjU2MjFlODlkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMzo0Mjo1MyAyMDEyICswMTAwCiAKLSAgICogQ0hBTkdFUzoKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMzCiAKLSAgIHZlcnNpb24gdXBkYXRlCitjb21taXQgNTZlZjVmMGRiNTFjZmQ1NTIyNmY4MmY5NGYzZjNkMjQ1MGU0ZmViNQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6Mzk6MzIgMjAxMiArMDEwMAogCi0yMDExLTA2LTAxIDE1OjQ4ICBkdHMxMgorICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5yYzMKIAotICAgKiBDaGFuZ2VMb2c6Citjb21taXQgZmUxMDc3OTRlNzQwMGQyMzllOGFmM2RhOGI0YTNmYmVmMDZiNWRhOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTM6Mjg6MzcgMjAxMiArMDEwMAogCi0gICB2ZXJzaW9uIHVwZGF0ZQorICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS01LXBhdGNoZXMKIAotMjAxMS0wNi0wMSAxNTo0NyAgZHRzMTIKK2NvbW1pdCBiNjk1M2I1MmM0ZWM0MjY0OTExNDZlMWNjMGY1NjBiMjE3MzY5NWIwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMzoyODoyNiAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMworCitjb21taXQgMGY4NGZiY2Y3MTk5NWJkZGFmYWI1MDBkODdjOWM1YTZmNDYxYTczNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIEZyaSBKdW4gMjIgMTI6Mjk6MzQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0Nzk3NDA6IEZpeCBoclNXUnVuUGVyZiBzdGF0aXN0aWNzCisKK2NvbW1pdCAxZTNiYjYwNjBiZTYxNTZkM2ZmMzE2YzVhN2U0ZmQ3ZjA1ZTM3Y2ZmCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEp1biAyMiAxMjoxMTo1NiAyMDEyICswMTAwCisKKyAgICBORVdTOiBzbm1wZDogQlVHOiAzNTMyMDkwOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCisKK2NvbW1pdCBlODY2M2ZhYzhiODg2NjMyODI2Njk3MjZhMDhmMTZkYjE2YjVmNGRiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1biAxOCAxMzozMDoyNSAyMDEyICswMjAwCisKKyAgICBSZXZlcnQgIkNITkFHRVM6IHNubXBkOiBmaXhlZCBzbm1wZCBleGl0aW5nIHNob3J0bHkgYWZ0ZXIgc3RhcnQgZHVlIHRvIGluY29taW5nIHNpZ25hbC4iCisgICAgCisgICAgVGhpcyByZXZlcnRzIGNvbW1pdCBiMTFhNGU5M2Y1MGQ4YTU0NGY4MzVmMzc2YzNhNGI4YzA2NDFhMzFhLAorICAgIHdlJ3JlIGluIFJDLXBoYXNlIGFuZCBjb2RlIGlzIGZyb3plbgorICAgIAorICAgIChzb3JyeSBmb3Igbm9pc2UpCisKK2NvbW1pdCBiMTFhNGU5M2Y1MGQ4YTU0NGY4MzVmMzc2YzNhNGI4YzA2NDFhMzFhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1biAxMSAxNjoyNjowOSAyMDEyICswMjAwCisKKyAgICBDSE5BR0VTOiBzbm1wZDogZml4ZWQgc25tcGQgZXhpdGluZyBzaG9ydGx5IGFmdGVyIHN0YXJ0IGR1ZSB0byBpbmNvbWluZyBzaWduYWwuCisKK2NvbW1pdCBhNTcwMjM4ZDU4ZWI1YTk5NmI1NmYwMWEyN2ExOGRmNmYzN2QwZjYwCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1biAxMSAxNDoyMDoyNSAyMDEyICswMjAwCisKKyAgICBNb3JlIHByZWNpc2VseSBkZXNjcmliZSAtYyBvcHRpb24uCisKK2NvbW1pdCBlM2JjZDg3YzcyZmNlYTc3MDZlODY4YjVhY2U3NTI5NjA5M2Y3NDk3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxNDowOTo0MiAyMDEyICswMTAwCisKKyAgICBGaXggZGlzdC9yZWxlYXNlIGZvcm1hdAorCitjb21taXQgZDgxM2NlMmVlZWZjNjgyMjljZmNhZjIwNjAzMjQ0Y2RkNmQwOWQzYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBNYXkgMzEgMTQ6MDc6NTIgMjAxMiArMDEwMAorCisgICAgRml4IGRpc3QvcmVsZWFzZSBmb3JtYXQKKworY29tbWl0IDEzMTQyOWU3MDYyZmJhYTY1YjgyYWZmZWQxZmI5MmRmMmMwY2M4MTMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjM4OjM4IDIwMTIgKzAxMDAKKworICAgIFJlbGVhc2UgQ2FuZGlkYXRlIGZvciBWNS02LXBhdGNoZXMKKworY29tbWl0IDFjODExMGIzM2I4MTA1Y2E2MTkwOTQ1YTM1ZmU3YWU5MDMyNTJkNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWF5IDMxIDEzOjIxOjM4IDIwMTIgKzAxMDAKKworICAgIEF2b2lkIHBlcmwgdmVyc2lvbmluZyBwcm9ibGVtcyB3aGVuIHNldHRpbmcgdXAgdGhlIGJ1aWxkIGVudmlyb25tZW50CisKK2NvbW1pdCA1MDhlY2UxNmU2ZjZmNDk1NjJkYTIwNDc5MmFlMDY0NDI2OTk5NGQxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMzoyMDo1OCAyMDEyICswMTAwCisKKyAgICBGaXggaGFuZGxpbmcgb2YgZGlzdC9yZWxlYXNlIG1lcmdlCisKK2NvbW1pdCA1YjhhODU0N2IxYTQ3ZDJmNWIyMDdmNDhmMjQ5NmU0MjQxZDkwMmM2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMToxMDo0OCAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCA2YzMyOTE0YmYyOGQ2OTVkZjM0OWRjYTI2OWU0ODhiNTAxNzAwMzE2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNzoyMiAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAyNjcwYmE2YTViMDAyN2QxMWVjM2E1ZTE4ZmU4N2RiMzg1ZjVlMGU0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMTowNTozOSAyMDEyICswMTAwCisKKyAgICBtYWtlIGRlcGVuZCBmb3IgNS41LjIucmMyCisKK2NvbW1pdCBlNzllMzg3YjNlMThiNDg3ZWY0MTcyYzlkMjRlYjk1MjM0MDRkMGFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo1NDoyNyAyMDEyICswMTAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZSBmb3IgNS41LjIucmMyCisKK2NvbW1pdCAzZjIxMTFkZTY3MzNhMDRlMTJkOTEwZDMwNmEzNGQ2NzFlMDA4NzYyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NjoxMSAyMDEyICswMTAwCisKKyAgICBSZWxlYXNlIENhbmRpZGF0ZSBmb3IgVjUtNS1wYXRjaGVzCisKK2NvbW1pdCBjZWZjNmY3YmQ0ZmVlMGY1MDU3ZTQ5MzAwYTZiMWQxNWQyZmQ0ZjU4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1heSAzMSAxMDo0NTo1OSAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMgorCitjb21taXQgY2NmOGZmMmM0ZGI2MDEyMmQ0MTMwMmU0YWViNzAwZTBiODY4MTA1ZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgMjggMTA6MTg6NDMgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzUyNjU5OTogRG9uJ3QgaGFuZyBvbiByZXRyaWVkIGZhaWxpbmcgU05NUHYzIHJlc3BvbnNlcworCitjb21taXQgYzU3NTIxNjg1MDE4NWI1NjQ1NGRhZDAyNTNlMzE2NDk3OWUxMzUxMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyNyAxMzo1NjowMSAyMDEyICswMjAwCisKKyAgICBGaXggbWlzc2luZyBpbmNsdWRlLiBGaXhlcyBTSUdTRUdWIG9uIEZyZWVCU0Q5IHg2NAorCitjb21taXQgMWZiZjMzNzExYTE5ZWFjOTczOWFkMjNmNmY2MjUxZWFjYzQxZjFjNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXkgMjIgMTQ6NTQ6NDUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogTGludXg6IFBBVENIOiAzNTI1OTk4OiBEb24ndCB1c2UgYW4gdW5pbml0aWFsaXNlZCB2YWx1ZSBpbiBlcnJvciBtZXNzYWdlCisKK2NvbW1pdCAzMmMxNjg2YjY3ZGM4NWM0YTE4OTU3NjM2MzA2NTYwOWRmZWQ1ZTYxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1heSAyMiAxNDo1Mjo1NiAyMDEyICswMTAwCisKKyAgICBBdHRlbXB0IHRvIG1hcmsgcmVsZWFzZS1jYW5kaWRhdGUgYnJhbmNoZXMgYXMgc3VjaC4KKyAgICBPbWl0IGZpbmFsLXJlbGVhc2Utb25seSBzdGVwcyB3aGVuIHByZXBhcmluZyBwcmVOL3JjTiByZWxlYXNlcworICAgIChSZWxpZXMgb24gYSB0d2VhayB0byB0aGUgTWFrZXJlbGVhc2UgcGVybCBtb2R1bGVzKQorCitjb21taXQgNGM1NjMzZjE2MDNlNGJkMDNlZDA1YzM3ZDc4MmVjODkxMTc1OWM0NworQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CitEYXRlOiAgIE1vbiBNYXkgMTQgMTE6NDA6MDYgMjAxMiAtMDQwMAorCisgICAgTkVXUzogc25tcDogQlVHOiAzNTI2NTQ5OiBDVkUtMjAxMi0yMTQxIEFycmF5IGluZGV4IGVycm9yIGxlYWRpbmcgdG8gY3Jhc2gKKworY29tbWl0IDkxMzUwMDkyYzQ2ZTY2ZDA2ZDc0MTQzZjQ4MTY0NzNkYjRkMjUxNjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTk6NTY6MzMgMjAxMiArMDEwMAorCisgICAgTWFyayB2ZXJzaW9uLXNwZWNpZmljIGNoYW5nZXMgX2JlZm9yZV8gcHVzaGluZyB0byBjZW50cmFsIHJlcG9zaXRvcnkKKworY29tbWl0IDcyNDFhY2NkNzBiODJkMGZjZDQ0ZDVhNTIzOGIyZWU5NDQ1OTAwZGIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6NTM6MTcgMjAxMiArMDEwMAorCisgICAgdmVyc2lvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgN2M3OTZhMTVhMWQxYmI4NWZlZWE5NDBiZDRlMzUxNjg3NzkyMDkxOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzo1MDo0OSAyMDEyICswMTAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZSBmb3IgNS41LjIucmMxCisKK2NvbW1pdCAwN2UyNjhiZmI2NGIwZWM2NDViM2Y3ZTg3MjY2OTg0ZjkyMTdjZjEyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIE1heSA3IDE3OjQ0OjM3IDIwMTIgKzAxMDAKKworICAgIG1ha2UgZGVwZW5kIGZvciA1LjUuMi5yYzEKKworY29tbWl0IDE2ZWFhZjZjM2JhMTQ1OTZjYTllZmFmNGIxMTRmMWI3MDlmNDJiNjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWF5IDcgMTc6Mjk6MDMgMjAxMiArMDEwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUgZm9yIDUuNS4yLnJjMQorCitjb21taXQgYzcyOTQ2OWVmMTIxNTQ5MzBjZjlkMTU5NjdlMTYxODZmYjQ0NWYzMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzoyNzoyMCAyMDEyICswMTAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGU6IDUuNS4yLnJjMQorCitjb21taXQgMTQyNTcxZDNjZWEwOGYwYzA3MmQyNGMxZDM5YTQzYzc0NDZmOGNlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBNYXkgNyAxNzowMTowMyAyMDEyICswMTAwCisKKyAgICBXaGVuIGJ1aWxkaW5nIGEgbmV3IHJlbGVhc2UsIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiB0aGUgcGVybAorICAgIG1vZHVsZXMgbWF5IHdlbGwgYmUgZGlmZmVyZW50IHRvIHRoZSB2ZXJzaW9uIGJlaW5nIGJ1aWx0LgorICAgIFRoYXQgc2hvdWxkIG5vdCBicmVhayB0aGUgYnVpbGQuCisKK2NvbW1pdCA1YzBmNjRkNmRiMmI1OTNmN2NjMGVkMmQ0ZjU1YjdjNTkyYjc3NGE4CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjI1OjE1IDIwMTIgKzAyMDAKKworICAgIE9ubHkgb3V0cHV0IGNwdSB3YXJuaW5ncyBvbmNlLgorCitjb21taXQgZWU1OGU0ODI3YjlmYTE2ZTY2MzVjYTAwM2U4YTRmMTFkY2I1ZmI3YQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEFwciAyMyAyMjoxNzo0MiAyMDEyICswMjAwCisKKyAgICBGaXggc3BlbGluZyBpbiBlcnJvcm1lc3NhZ2UuCisKK2NvbW1pdCAwM2Y0ODVkZjIyZjIwZTE0OWNmYWU5NGM1N2NiODJmZWVjYjVkNzRiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEyOjExIDIwMTIgKzAyMDAKKworICAgIE5vdCBhbGwgTGludXhlcyB1c2UgcnBtIChkZWJpYW4vdWJ1bnR1IGNvbWVzIHRvIG1pbmQpCisKK2NvbW1pdCA5MzA4MzgyMjRmNzgxNjk2YmQzNTIyNWYyMjU2OTM0NzQxNmYxYjE2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXByIDIzIDIyOjEwOjE1IDIwMTIgKzAyMDAKKworICAgIENoZWNrIG5lZWQgZm9yIC1sbSB0byB1c2Ugcm91bmQvZXhwCisKK2NvbW1pdCAxMzdmZTU4MmQ2Y2M1NjExNDMwZGFiNDZlZjE0NGVmZDg0Y2ZjODAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgRnJpIEFwciA2IDIwOjQ2OjU2IDIwMTIgKzAxMDAKKworICAgIFJldmVydCBjb21taXQgMWY0YTgyOWIxODI3NWU0OTU2Y2E5MWU1ZWMzNzBkZjAxNWYwNjEzMworICAgIChzbm1wX3N0b3JlX25lZWRlZCgpIEFQSSBpcyBub3QgYXZhaWxhYmxlIGluIDUuWzQ1XS54KQorCitjb21taXQgMmI3ZTY0Mjg4YzAxYThhMDYyMDI2YzUyMWNhMzFhNWU4ODVmMzBjYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBBcHIgMiAxNjoxMjoxMiAyMDEyICswMTAwCisKKyAgICBGcmVlQlNELTk6IEZpeCBmb3IgJ2NvbnN0J2lmeWVkIG5saXN0IGFyZ3VtZW50cworICAgIEJhY2twb3J0IG9mIGVkNjVlY2E2ZTdmOWNmYTczODBhNzhkNTZjMDFlZDMxNDc0NWIxNjkgZnJvbSBWNS02LXBhdGNoZXMKKworY29tbWl0IDdlOTVkODBiNjk4MDUxMjU5NjQ1YzA3NGE1M2ZmZDI2NGE2ZmE5MTYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTY6MDY6NTYgMjAxMiArMDEwMAorCisgICAgRnJlZUJTRC05OiBGaXggZm9yICdjb25zdCdpZnllZCBubGlzdCBhcmd1bWVudHMKKyAgICBCYWNrcG9ydCBvZiBlZDY1ZWNhNmU3ZjljZmE3MzgwYTc4ZDU2YzAxZWQzMTQ3NDViMTY5IGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAxYTliN2I3YzAyZTJkZWVmZTk5NGQ1OTVhN2NjMWRkMmZmYmVlZTFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDE1OjUxOjIwIDIwMTIgKzAxMDAKKworICAgIEZpeCBjb21waWxhdGlvbiBvbiBGcmVlQlNEIDkueCB3aXRoICdyZWNlbnQnIGhlYWRlciBzaHVmZmxpbmcKKyAgICBCYWNrcG9ydCBvZiBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2IGZyb20gVjUtNS1wYXRjaGVzCisgICAgKFBhdGNoICMzMzYzMzA4IC0gb21pdHRpbmcgdHdlYWtzIHRvIGNvbmZpZ3VyZSkKKworY29tbWl0IDNkOWRkYjQxZTI2M2JjMWE3OGY5Zjk0NDBiOGQ0YWQ0Zjg2YzgyZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMTA6MzY6MTggMjAxMiArMDEwMAorCisgICAgRml4IHR5cG8KKyAgICBCYWNrcG9ydCBvZiA1YjcwMmIwMjRiNjAxNzZkN2Y1Njk5YjkyZTU1ZGE1MGE4ZGVhZTcxIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCAwZDM1YzYwOTU2NGI2NmExZmZlODE1NTZkMzdhZGYwNTAzYzM4OWNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEFwciAyIDEwOjE1OjA4IDIwMTIgKzAxMDAKKworICAgIFByb3ZpZGUgbWlzc2luZyBkZWZpbml0aW9uIG9mIE5FVFNOTVBfUFJJbworICAgICh1c2VkIGluIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIuYykKKworY29tbWl0IGFkZjc0YmY3NTNkMzk3MDM1N2FmZDYzMzgwMzI1NjI0MWQ5YzdiODcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXByIDIgMDg6MjA6NDYgMjAxMiArMDEwMAorCisgICAgRml4IElQdjYgVENQICYgVURQIHRhYmxlcywgKkJTRCBzdXBwb3J0IChpbmNsdWRpbmcgT3BlbkJTRCkKKyAgICBCYWNrcG9ydCBvZiBjb21taXRzIDVjZDE1NzM2MjU0NzFjMDU4M2U5MDg3YWVjNjgwMmI3NzE1N2Q1YTIKKyAgICAgIGFuZCA1MGQ3M2YwZDU2ZmUyMmM1OTA1MzBiM2UzMDVkNDFkY2RhYzNjZTAwIGZyb20gVjUtNi1wYXRjaGVzCisKK2NvbW1pdCBjZWNkNDg2OWRlYjY4ZjNkNGM3MWU3NjhkNWI0MGRkNTc2NDQ2OTI1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWFyIDI5IDIyOjI5OjMxIDIwMTIgKzAyMDAKKworICAgIFJ1bm5pbmcgYXV0b2hlYWRlciAvIGF1dG9jb25mCisKK2NvbW1pdCA5YmRiY2NhMTIyYzM3ZGEzMDRmYzZhYTY5Mzk3Mjk0NzVmOTBmNWZkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIE1hciAyOCAwOTozMDo0OSAyMDEyICswMTAwCisKKyAgICBEb3h5Z2VuLXN0eWxlIGRvY3VtZW50YXRpb24gZml4ZXMgKGJhY2stcG9ydCBvZiBHSVQgY29tbWl0IGMwOTkwM2E0MmU5ZDk3MzMxZmQ5ZTQ4ZWU4MzFhODVhZmRmOWM3MGEpCisKK2NvbW1pdCAxZjRhODI5YjE4Mjc1ZTQ5NTZjYTkxZTVlYzM3MGRmMDE1ZjA2MTMzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIE1hciAyNyAyMTo0MToyNCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ5NTY5NzogU3RvcmUgcGVyc2lzdGVudCBzbm1wVGFyZ2V0IHRhYmxlIGNoYW5nZXMKKworY29tbWl0IDFmNzVmMzc3ZDBkYjAxNzU0YzBjMTYxZGM0NDM3MzA4MWJlZWY1MjAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTWFyIDI3IDIxOjE0OjA2IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IEZyZWVCU0Q6IFBBVENIRVM6IDM0ODkzODc6IEluc3RhbGwgRnJlZUJTRCAxMCBoZWFkZXIgZmlsZSAocGx1cyBvdGhlciBtaXNzaW5nIHZlcnNpb25zKQorCitjb21taXQgM2Q3MmM5ZTc4ZjJhZDgxN2M5ZDFkODI5NzczMjdiYmIyMGQ2M2FiOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjcgMjE6MDY6MzEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzNDg3ODY3OiBEb24ndCBza2lwIG1pc3NpbmcgaWZYVGFibGUgZW50cmllcyAoaWZDb25uZWN0b3JQcmVzZW50IEZBTFNFKQorCitjb21taXQgOGE5YjU3MjkxNDUzY2I4YWVjMjhlNzY2YzU5NDcwMWVkMTljNGZjNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1hciAyNiAyMTowMzo0MSAyMDEyICswMjAwCisKKyAgICBGaXggZm9yIERyYWdvbkZseSAzCisKK2NvbW1pdCBlNWM5YTMyZjc5ZWFjMmU4NTUyN2M5Y2YwNTA4N2NkYWU5YjM1YTZjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWFyIDI2IDIwOjU5OjUzIDIwMTIgKzAyMDAKKworICAgIERyYWdvbkZseSBuZWVkcyBfS0VSTkVMX1NUUlVDVFVSRVMgdG8gY29tcGlsZSBpcHY2IGNvZGUKKworY29tbWl0IGUyZmMxNWY5ZTVhNmUzZTM2YmU1ZjQ4OTYwMWNiZjZiZjczMTkxN2YKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MjE6MzggMjAxMiArMDEwMAorCisgICAgRml4IFRDUCBzdGF0ZSB2YWx1ZXMgZm9yIERyYWdvbkZseQorCitjb21taXQgNDMyZmUzZGRmNTRmMmM5OGY5MzY5NTk0NjljYjliMDE0ZDU5OWYwNgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNToxMDo1MiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIHBlcmwgdG8gZG8gcGFzc19wZXJzaXN0IHRlc3QKKworY29tbWl0IDM3ZDI3NzBjZjUwYzk4MDIzZWViYTkwZTI1ZDM3MmJmZjczMTZhZGEKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2VyLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAyNCAxNTowNjo0MCAyMDEyICswMTAwCisKKyAgICBGaXggVENQIHN0YXRlIHZhbHVlcyBmb3IgRHJhZ29uRmx5CisKK2NvbW1pdCA4NmE5NDhkODY5MWU4ODFkNTU1OTFkY2FiZGRjMjczOWNlNzJiMzBlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAbmJhLWxpbnV4LnNiLnN0YXRzYmlibGlvdGVrZXQuZGs+CitEYXRlOiAgIFNhdCBNYXIgMjQgMTU6MDE6MzcgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgZmluZCBwYXNzIGhlbHBlcnMgZm9yIHRlc3RpbmcuCisKK2NvbW1pdCA1YjM4ZjA2MmI5OWI2ZWYzNjcwOGUyYzdkZTQ5NjVhMzE5MjYxMmU5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjM0OjQ4IDIwMTIgKzAxMDAKKworICAgIEZvciBzYWZldHksIHNpemVvZiB0aGUgcmlnaHQgdmFyaWFibGUgaW4gbWVtY3B5CisKK2NvbW1pdCBlNWY4Mjc4MmRhMDVlZmE3YzBlNmRjMmJmNWE0MWVlMTE4NjhmNDY5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMzOjIxIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3IgaHJTV1J1biBkYXRhIGZvciBGcmVlQlNECisKK2NvbW1pdCA4MzI3NTY1ZTgyMzI3MGQxMGE0NTA0NTY4ZWRiZTViNWFlMzIzYTU1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWFyIDIxIDE4OjMxOjU0IDIwMTIgKzAxMDAKKworICAgIENsZWFuIHVwIHZhcmlhYmxlcyBmb3IgT3BlbkJTRC9OZXRCU0QKKworY29tbWl0IDE3MGY2ZjAyN2JmNGY5MTc0YjcwNzM1MzBkYTRkMDdmNDAwYmJhNTgKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTg6Mjg6NTggMjAxMiArMDEwMAorCisgICAgTW92ZSBkZWNsYXJhdGlvbnMgaW4gZnJvbnQgb2Ygc3RhdGVtZW50cworCitjb21taXQgZGJiNDU3M2I2OWZhZTg1Y2RjOTMxYjI4OTJiNWNlNGU1YjE2YjMyMQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1hciAyMSAxODoyMzozNiAyMDEyICswMTAwCisKKyAgICBSZXF1aXJlIGtlcm5lbF9uZXRic2QgZm9yIE5ldEJTRDYKKworY29tbWl0IGYxMTY4MWYxNWFhZDdkOWE1MmZhMjk4MTJlY2JiNTA3ZjFiN2ZlMjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBXZWQgTWFyIDIxIDEyOjM2OjM4IDIwMTIgKzAwMDAKKworICAgIENoZWNrIGZvciBvbGQgdGFyYmFsbHMgKGFuZCB1bnBhY2tlZCBkaXN0cmlidXRpb25zKSBiZWZvcmUgc3RhcnRpbmcuCisgICAgVGhlc2UgY2FuIGNvbmZ1c2Ugc3RlcHMgc3VjaCBhcyAibWFrZSBkZXBlbmRjaGVjayIsIHRoYXQgZG8gYSAnZmluZCcKKyAgICBvbiB0aGUgY3VycmVudCB0cmVlLCBhbmQgd291bGQgZGVzY2VuZCBpbnRvIHN1Y2ggdW5wYWNrZWQgc291cmNlIHRyZWVzLgorCitjb21taXQgNDcwZGNkNGI2YzNmZjExZmYwYTM1MzJhNzM0MGE1NmNmZmQ2OTA5OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFdlZCBNYXIgMjEgMTI6MzI6MTMgMjAxMiArMDAwMAorCisgICAgRG9uJ3QgcnVuICJtYWtlIGRvY3M7IG1ha2UgbWFuY3AiIGlmIHRoZXJlJ3Mgbm8gTWFrZWZpbGUgcHJlc2VudAorCitjb21taXQgYzlhYzQyMDM0M2UxNmRmMmI3MDY1ZjViZjI3OTBkZjQ0ZTI0N2ZiYQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBNYXIgMjAgMTA6MjY6MTAgMjAxMiArMDAwMAorCisgICAgQWxsb3cgZGlzdHJpYnV0aW9uIGFzIHBhcnQgb2Ygbm9ybWFsIE5ldC1TTk1QIHBhY2thZ2VzLgorCitjb21taXQgYmRjY2M4NzU3MTAyOTVhYWNmNTBmNzFlYjFjMWQyZWU5N2YzMzZmZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAyMDoxMDo1OCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgZGVjbGFyZSB0aGUgbG9jYWwgdmFyaWFibGVzIGZvciBvcGFxdWVfc3BlY2lhbF90eXBlcyB1bmxlc3MgdGhhdCBvcHRpb24gaXMgc2V0LgorCitjb21taXQgYjgwYTY3ZGEwNTJhZGNhMWI1YTY0NGRiODNhNzgyZTE1YzIyMzdjMworQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgRnJpIE1hciAxNiAxOTo1MDowMyAyMDEyICswMTAwCisKKyAgICBDaGVjayB0aGF0IHRoZSBkYXRhIGV4aXN0IGJlZm9yZSB0cnlpbmcgdG8gcmVhZCBpdAorCitjb21taXQgYWFlZGQ1OWNjMmRhNzAxNTI3ZGMyZDI2MWQ0ZTlmODVmMTZlNzUwNAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIE1hciAxMSAyMDo1NzozOCAyMDEyICswMTAwCisKKyAgICBBbGxvdyBtYWtlIHRlc3Qgd2hlcmUgdGhlIHNvdXJjZSBwYXRoIGNvbnRhaW5zIHRoZSBzdHJpbmcgTmV0LVNOTVAgdG8gc3VjY2VlZC4KKworY29tbWl0IGNlODU4MzI5MzJjY2Q5MTZjNDIzMTkxMTRjNDA4ODVhNDY2YTlkMGUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXIgNSAyMDo1Njo0MCAyMDEyICswMTAwCisKKyAgICBNb3JlIGZpeGVzIGZvciBTb2xhcmlzIHNoCisKK2NvbW1pdCAwZGQxZTU0NTU3ZDFiYTQ5OGI1NWQwMTdiMGE5M2U4Y2NmOWJkNTIyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTU6MDg6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFVEUC1NSUI6IFJlcG9ydCB0aGUgcHJvcGVyIGFkZHJlc3MgaW4gdWRwTG9jYWxBZGRyZXNzIGluc3RlYWQgb2YgMC4wLjAuMC4gTWFrZXMgdGVzdCBUMTYwc25tcG5ldHN0YXQgcGFzcyBhZ2Fpbi4gRml4ZXMgYSBidWcgaW50cm9kdWNlZCBpbiBjb21taXQgYzc2ZmI5NmY2NWUzM2JhMmZkMjEyYTkyMWU4YzM4NjE1NWVlNWM3YS4KKworY29tbWl0IDUxODkxN2U5ZjM5ZjdhOWQzYzNiZjNhODY1ZThhYzBlMzAyNmQ2MDAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBNYXIgNSAxNDowNDo1NCAyMDEyICswMTAwCisKKyAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzogRml4IHNvdXJjZSBjb2RlIGluZGVudGF0aW9uCisKK2NvbW1pdCAyNjUxOTA5Y2NjZWFiZmNmYWRhZjk0MmMwMjQ1MGUyOGZlODM3ZGM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTm92IDkgMTI6MDQ6MDQgMjAxMCArMDAwMAorCisgICAgUGFzc2VzIG5vdyBvbiBNaW5HVyB0b28uCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTk2NTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1MTE2ZDQ4Mzc4ZWNmMDNlNzIyZjMwMTBhZDQ3YmYyMmEzZmJjYjhjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MjAgMjAxMiArMDEwMAorCisgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOiBSZWR1Y2Ugc2NvcGUgb2YgcHJlZml4X3ZhbCBzdWNoIHRoYXQgdGhlIGNvbXBpbGVyIGRvZXNuJ3Qgd2FybiBhYm91dCBhbiB1bnNlZCB2YXJpYWJsZSBpZiBpdCBpc24ndCBuZWVkZWQuCisKK2NvbW1pdCA2ZTc0ZDY0Zjg1YTU5ZDUwZTQ2MWRiNGMzNGFjNzZmOWRlNDY4YmZiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MjI6MzEgMjAxMiArMDEwMAorCisgICAgdGVzdGluZy9ldmFsX3Rvb2xzLnNoOiBBdm9pZCB1c2luZyBncmVwIG9wdGlvbnMgLXEgYW5kIC13IGJlY2F1c2UgZ3JlcCBpbiBTb2xhcmlzJyBkZWZhdWx0IHBhdGggZG9lc24ndCB1bmRlcnN0YW5kIHRoZXNlIG9wdGlvbnMuCisKK2NvbW1pdCAxMGY1NjZmNGQ0Y2JiM2UyMDUwMjNjMjM2NjkyODllNGJmZDA4OWNiCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gTWFyIDUgMTA6NDc6MzkgMjAxMiArMDEwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcKKworY29tbWl0IGRhZTRlMTZiZTg2MTE3ODYxZjYzZDFhMmY5ODFhZDM2MTQxOGY1YzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IDI4ZjYyMjZmMmUyMjhiOGNhMjQ4NDg5NzM1Zjg2NTAyYjJjY2UwYTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gTWFyIDUgMDk6MDY6NTIgMjAxMiArMDAwMAorCisgICAgTWFyayB0aGUgY2hhbmdlcyBtYWtlIGFzIHBhcnQgb2YgdGhlIHJlbGVhc2UgcHJvY2VzcyBhcyBzcGVjaWZpYyB0bworICAgIHRoZSBwYXJ0aWN1bGFyIGJyYW5jaCBiZWluZyByZWxlYXNlZC4gIFZlcnNpb24gdGFncywgY2hhbmdlbG9nIGVudHJpZXMKKyAgICBhbmQgdGhlIGxpa2Ugc2hvdWxkbid0IHByb3BhZ2F0ZSB0byBsYXRlciBicmFuY2hlcy4KKworY29tbWl0IGVlNzEwNDljM2UyMWMxZDBlMzQyNDI5NzEzNjY1MmJiZTBlMzlkODUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMyAxNjo0OTo0MSAyMDEyICswMTAwCisKKyAgICBtaWJncm91cC9pY21wLmM6IGFkanVzdCBpZmRlZnMgdG8gbWFrZSBpdCBjb21waWxlIG9uIEJTRCdzCisKK2NvbW1pdCA0NGFjZDZjMjg1ZmI1NjE0YjRjOTYxMWIxYWJkZWNhOWRkMjhlNGJiCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWFyIDIgMjE6MTI6NDcgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxsaW5nIG9mIG1pYiBtb2R1bGUgZnN5c19nZXRmc3N0YXRzCisKK2NvbW1pdCAxZmExZmVlMzY5M2Y2N2I4MjAyMjM4MDZiM2Q3M2FmZDRjNTBlYzE4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBGcmkgTWFyIDIgMDE6Mzc6MjAgMjAxMiArMDEwMAorCisgICAgU2lsZW5jZSBhIGNsYW5nIHdhcm5pbmcuCisKK2NvbW1pdCA5MzI2M2I5OGE1ZGIzNDRjZjJjNGQ0ODljNDM5NzFlN2IyOWNkYjAzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEzOjM3OjIwIDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCA1YTE3NTQyOGI5NzNkMmVhODU1M2UyOWZlY2Y5NGNmMTU2NmFhODU4CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDExOjQ4OjE4IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKKworY29tbWl0IDM2NDI3NmExYzVhYTY2Y2FhMjNlYjViN2YxMTFmZGViNWFmNzFmYTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTE6NDU6MTAgMjAxMiArMDAwMAorCisgICAgbWFrZSBkZXBlbmQgZm9yIDUuNS4yLnByZTEKKworY29tbWl0IDczNTk4MzQwMTcyZWZmNzU3MjlhNmQ1NzE5MmI4MTcxZDViYmYwMGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgTWFyIDEgMTA6NDI6NTYgMjAxMiArMDAwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlOiA1LjUuMi5wcmUxCisKK2NvbW1pdCBmMzIxNDQwMjY3MmNhMTk5ZmQ1MzFlNjYxMjJiZjk2YzRkOWE0ZWI3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IE1hciAxIDEwOjQyOjM5IDIwMTIgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlIGZvciA1LjUuMi5wcmUxCisKK2NvbW1pdCA0MzJjYmI3YTU1MDFhYjkwZDY2ZDBhODNlNzMxZTczNDNiYzA0YjM3CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgRmViIDI1IDEwOjEzOjE1IDIwMTIgKzAxMDAKKworICAgIENvcnJlY3QgdHlwb3MKKworY29tbWl0IDZhNmM5YmJjNzU4NGYxOTZhMTE4NWNjMTkzNTIwNGYxMjA2ODExZWQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFdlZCBGZWIgMjkgMDg6NTU6MzUgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogQnVnIDMxNTI4NDE6IEluc3RhbGwgdXRpbF9mdW5jcyBzdWJoZWFkZXJzCisKK2NvbW1pdCBkNTE1ZTJhNmU0YzJhMWM0ZDg0NzM0Y2M3YjJkMGIyZmM1YTg5NGFkCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAxNTo1NjoyMSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ4NzkxOTogRml4IGNvbXBpbGF0aW9uIHdoZW4gY2FjaGluZyBpcyBkaXNhYmxlZAorCitjb21taXQgYWY4MzY4ZWQ4ODk4YTc4ZDA4NjhiNDdhZjQ2YmM5ZGIwN2QxYzc2NAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBGZWIgMjggMTU6NTA6NTYgMjAxMiArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQxNDc3MzogRW5jb2RlIGludGVnZXIgdmFsdWUgdXNpbmcgQVNOX0lOVEVHRVIKKworY29tbWl0IDE5ZTI3MTU4MDdmZTA2ZmQwYmFlZGY4ODE2NTAxMWFlZTkzM2U3NTUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRmViIDI4IDE0OjA1OjM0IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IG1hbjogQlVHUzogMzQ5MDcwODogQ2xhcmlmeSB1c2Ugb2YgY29tbW9uIGNvbW1hbmQtbGluZSBvcHRpb25zCisKK2NvbW1pdCBlZWQwYmNiYzQzZmVhMTgyNTlmMGY2M2IyMDgxYjZkMTA1MzVhMDUyCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIEZlYiAyOCAwOToyNzoxMSAyMDEyICswMDAwCisKKyAgICBTa2lwIFNFVC1iYXNlZCBiYWJ5LXN0ZXBzIHdoZW4gY29tcGlsZWQgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQuCisgICAgSW5zcGlyZWQgYnkgYnVnICMzNDU0MTY4CisKK2NvbW1pdCBjNDI3NmI2MjMyYzI5MTQ1YzAzOTg4NGU2YjVhNmI2ZGE0YjkzODM3CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEZlYiAyNyAxNTo1NDo0NSAyMDEyICswMDAwCisKKyAgICBPbWl0IFNFVC1yZWxhdGVkIGNvZGUgd2hlbiBjb21waWxpbmcgd2l0aCAtLWRpc2FibGUtc2V0LXN1cHBvcnQgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgMDFjOTMwZWRjYzI1NzAwZDZiNWZiMDM3NmY1NWEyNjQyNWUxM2ZiMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIE1vbiBGZWIgMjcgMTU6MTc6MjIgMjAxMiArMDAwMAorCisgICAgT21pdCBTRVQtcmVsYXRlZCBjb2RlIHdoZW4gY29tcGlsaW5nIHdpdGggLS1kaXNhYmxlLXNldC1zdXBwb3J0CisgICAgKGluc3BpcmVkIGJ5IHBhdGNoICMzNDI0OTMwKQorCitjb21taXQgMmI3ZjEzNDk1MjI4NjM1ZDgxNmU1OGIyMTc0ZGMxMjRkZDBjZjM5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEZlYiAyNCAwNzo0MzoyMiAyMDEyIC0wODAwCisKKyAgICBzZXQgTUVSR0VfQVVUT0VESVQgYmVmb3JlIG1lcmdpbmcgdG8gYXZvaWQgdGhlIGZ1dHVyZSBnaXQgMS43LjEwIGZvcmNlZCBtc2cKKworY29tbWl0IGUxYjkxMGIwYmU5MzQzNTg2YWU5ZWRiYTZmNDYwNDBhZjMxNWZjZGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMTA6Mjc6NTQgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGluaXRfYWdlbnQoKSArIGluaXRfa21lbSgpOiBSZXR1cm4gYW4gZXJyb3IgdmFsdWUgaW5zdGVhZCBvZiBpbnZva2luZyBleGl0KCkgaWYgYWNjZXNzIHRvIGtlcm5lbCB2aXJ0dWFsIG1lbW9yeSBpcyBkZW5pZWQKKworY29tbWl0IDQ2M2VlZDIxMjBmOWQxOTFiYzIyNjczNDk2YTQ5ZTgxNzQ2NjRlNGIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMTA6MDM6MzEgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlIG9ic29sZXRlIHN5bWJvbCBORVRTTk1QX0VYSVRfT05fQkFEX0tMUkVBRAorCitjb21taXQgYWE3NjZkMTk2ZTUyODdmNmNhNzliNThhMzQ1YjAyNDI2MGFiYTM1NAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiAyMCAxNzowNzoxMyAyMDEyICswMTAwCisKKyAgICBJRi1NSUI6IGRvIG5vdCB0cmlnZ2VyIHVuZGVmaW5lZCBiZWhhdmlvciAoPj4gMzIgb2YgYSAzMi1iaXQgdmFyaWFibGUpIHdoZW4gdXBkYXRpbmcgYSBjb3VudGVyIGFuZCBpZmlfaXBhY2tldHMgaXMgYSAzMi1iaXQgdmFyaWFibGUKKworY29tbWl0IGMzZmI2ZGQ5ZTZiOTllOTU0MjQ5MzE4ODk4Nzg3MWZjNTAxN2NiM2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMjMgMDk6NDU6NDUgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBvbiBzeXN0ZW1zIHdoZXJlIG1vZGVfdCBpcyB1bnNpZ25lZAorCitjb21taXQgYTZkYjIzOTk0NWUxOTVkZTVhOTBmYTE4MzcwMGIyN2E2ZWNiMjhkMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEZlYiA3IDAwOjExOjE0IDIwMTIgKzAxMDAKKworICAgIEZpeCBwb3NzaWJsZSBtZW1vcnkgbGVhayBmcm9tIHJlY2VudCBkZWNsYXJhdGlvbnMgcGF0Y2gKKworY29tbWl0IDBmYmJiOWE5ZTI5MDZhN2FmOTU2OTU3MDYxZDQ4NTg3NDQ2MmFlYTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBGZWIgNiAyMDo0MzowNCAyMDEyICswMTAwCisKKyAgICBEbyBub3QgbWl4IGRlY2xhcmF0aW9ucyBhbmQgc3RhdGVtZW50cworCitjb21taXQgZjMwOGQ1YmFmYjA1ZDc4ZWQ0MDMwYzRlY2ZmMzI0YjZjYmRhNjgwZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE1OjI1OjMwIDIwMTIgKzAxMDAKKworICAgIEZpeCB0d28gY29tcGlsZXIgd2FybmluZ3MgaW4gYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMKKworY29tbWl0IGRlYmFjNDk4ZmU4NDEwMTEwMTA3YTJmZTY0ZjhhZmI3NDhlZGFhMDcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gRmViIDYgMTY6NDg6MDkgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogYWRkZWQgT0NGUzIgKE9yYWNsZSBDbHVzdGVyIEZTKSB0byBoclN0b3JhZ2VUYWJsZSBhbmQgaHJGU1RhYmxlCisKK2NvbW1pdCBhMDVjMjdjMjcxMWNiNDE1ODJhM2I0YzMxZTM4YjBlOTM1MzBiNjJkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTQ6NTE6MzMgMjAxMiArMDEwMAorCisgICAgRml4IHNwZWxsaW5nIGluIGEgc291cmNlIGNvZGUgY29tbWVudAorCitjb21taXQgOTEwZDdiMGQ5OTE4MzYwOWI5NTI5YjA0YzNmMjkzMzBlYjY2MTAyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEZlYiA2IDE0OjM4OjEyIDIwMTIgKzAxMDAKKworICAgIFJlcGxhY2UgbmV0c25tcF90aW1ldmFsX3VwdGltZSgpIGJ5IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpCisKK2NvbW1pdCA0M2E4M2Y2YzZhOTZjYzIzMTZiNzBlZWNhY2YxMjdlYjY5MTNjN2E3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gRmViIDYgMTE6MTk6MTUgMjAxMiArMDEwMAorCisgICAgVXNlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yIGluc3RlYWQgb2YgbWVtY3B5KCkgZm9yIGNvcHlpbmcgc3RydWN0IHRpbWV2YWwKKworY29tbWl0IDJmZTU3OWVmYjFjYjNhNzRmODI4MDNjYTMyMzkyOGY2YjhlNGI1YzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxNDowNDowMiAyMDEyICswMTAwCisKKyAgICBNYWtlIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyBidWlsZCBhZ2FpbiBvbiBub24tTGludXggc3lzdGVtcy4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgMzQ1YTFlNDI1NDgxMmNiOWVkYzFkMjc0NDkxYjc2NjgxYTlkYmExZS4KKworY29tbWl0IDg4MWRlNmFiNzM1NTI3N2E1YzExNmEwMDhmYmU1MTMyOTNiMDUwMzkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBGZWIgMyAxMDowODoyMSAyMDEyICswMTAwCisKKyAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBSbW9uIE1JQiBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgNDYyOTkzM2MwZDNiM2Y5ZjRiYTU4MzUzNGY3OWEzN2ZiOTYzMzgxNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDIwOjA1OjMxIDIwMTIgKzAwMDAKKworICAgIE1vcmUgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgZTliNWEzZGVlNmY5YWZhYjhiOTBhMjkzOTIwNDA2MzJiMDc1YWQ3YQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE2OjU2OjU1IDIwMTIgKzAxMDAKKworICAgIFVzZSBTTk1QX01JTigpIGluc3RlYWQgb2YgbWluKCkKKworY29tbWl0IGM3ZDExZmEwMGY5OTk1ZGRiOWZlM2Q0OTk0YTNlOTc5MGRhMmUxODkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNToxODo0MCAyMDEyICswMTAwCisKKyAgICBSZXN0b3JlIGNvbW1pdCBkYmI4Nzk1YTdkZjU5NWYwNjAzZjJlYzYxNzA0Nzk5ZjRjNDgyNjY3IHBhcnRpYWxseS4KKworY29tbWl0IDAwZmQ2MjcyMGVjNDU0ZjVhNjkwZGU0ZmViYTA4MjIzY2ZiMmMzZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxNDo0ODo0NCAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEF2b2lkIGNyYXNoIGR1cmluZyBzaHV0ZG93biBkdWUgdG8gaW52b2tpbmcgcGVybF9kZXN0cnVjdChOVUxMKQorCitjb21taXQgZDllMjI5ZDgxYWJlYWYxOTFlZjJjY2IwNzc4NDI4ODVjMjMwZDYyMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDE0OjQ3OjQxIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZSBhIHN1cGVyZmx1b3VzIGRlY2xhcmF0aW9uCisKK2NvbW1pdCAxZTJlMmFmNmNhZTgzMGYzODFlODdhMjQ0ZDAyOWViODZiZjNmY2NlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTM6MjA6MzcgMjAxMiArMDEwMAorCisgICAgcGVybC9TTk1QL2V4YW1wbGVzL3BpbmdtaWIucGw6IEFkZCBlcnJvciBjaGVja2luZworCitjb21taXQgMjQxYTE0MWUzMWYxNjg0ZmM2Y2Y3MGNjNGEwMGNjZTYzNmZkMzUyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEZlYiAyIDExOjI4OjM3IDIwMTIgKzAxMDAKKworICAgIE1ha2UgY29uZmlndXJlLXRpbWUgRVZQX01EX0NUWF9jcmVhdGUoKSBkZXRlY3Rpb24gd29yayBvbiB0aGUgNS40IGJyYW5jaC4KKyAgICAKKyAgICBTZWUgYWxzbyBjb21taXQgNDZlYWMwMmU5YTI3YmY0ZjMwNjhlNzk1Y2FiODkxZjA1YTg0ODg3MC4KKworY29tbWl0IDZkOWQxNGZlYWFhMmQwZmVjNjhiNGQxNTg5NDRkMzJjYjA0ZmYxYmMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBGZWIgMiAxMToxMjowMCAyMDEyICswMTAwCisKKyAgICBSZXZlcnQgdGhlIGNoYW5nZXMgdGhhdCBicmVhayB0aGUgYnVpbGQgb24gdGhlIDUuNCBicmFuY2ggZnJvbSBjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2Ny4KKworY29tbWl0IDhhYmU0OWUzMGM5N2M4OTgzZTgzYjQ1YTM1YzcxNmZlOTFmNjZiZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBGZWIgMSAxMTo1Njo1OCAyMDEyICswMTAwCisKKyAgICBGaXggc2V2ZXJhbCBjb21waWxlciB3YXJuaW5ncyBpbiB0aGUgRElTTUFOIE1JQiBpbXBsZW1lbnRhdGlvbnMuCisKK2NvbW1pdCBmOWZiMGE1MzMzNzVlMTRkYzM3MDAyNWEwYjJmYmM3NjFiZjI3YmU2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMDk6NTY6MDIgMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJIT1NULVJFU09VUkNFU19NSUI6IGZpeCBhIGNvbXBpbGVyIHdhcm5pbmciIGJlY2F1c2UgaXQncyB3cm9uZy4KKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IGFhNmI3OWJjMTI0YTdiN2E4ODVkN2U1MDM1YWIwNmFhM2VjZWY2MTMuCisKK2NvbW1pdCBjYTRhNGZlMjVlZmQyNzE0ZjhmMTk2MWI5Nzg1NjYxNjU2M2Y0MmM5CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRmViIDIgMTA6MjE6NDkgMjAxMiArMDEwMAorCisgICAgLmdpdGlnbm9yZTogQWRkIHB5dGhvbi9idWlsZAorCitjb21taXQgYWE1MjhiZDIyYzc0OTNjYThkNjdlNjc4ZmJmNjE1Y2EwZjYzZWE2ZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDJmYjk5YmU5YWE4NmE2Y2EzNDliODZkNGVmOGJjNzI2ZWQ5ZjJhODIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE0OjU4OjM1IDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgZTVjMzU1ODllMGJmNDE2YmZkMDM2YmQ0NjhmNDJhYWVhYjI1ZTc4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6NTU6NTYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCAzNDVhMWU0MjU0ODEyY2I5ZWRjMWQyNzQ0OTFiNzY2ODFhOWRiYTFlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNDo1MToyNiAyMDEyICswMTAwCisKKyAgICBGaXhlZCBlcnJvciBoYW5kbGluZyBpbiBpbml0X2ljbXAoKS4KKworY29tbWl0IDNjM2VlYWU4MGQ3OTZmMjc1OTdjOTAxZTdmZjIwNDZjNzY5ZWY0YjgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA4OjA5IDIwMTIgKzAxMDAKKworICAgIE1hcmsgcm93cmVxX2N0eCBhcyBmcmVlZCBzbyBuZXh0IGl0ZXJhdGlvbiBhbGxvY2F0ZXMgbmV3IG9uZSBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlIGZyZWVkIG9uZS4KKworY29tbWl0IGFmOWFiZDUzYzIzMzdjOTBhNjkxYTdiMDQ0ZmYzZjk3YzEwMDMxNjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjA1OjEwIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgY2Y5NDY1ZjU0MTgxZTYyZTIxYTliMTAyMTkxMzExMDdhM2QyZWJmNgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTU6MDQ6MDYgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgdG91Y2ggcmVnaW5mbyB3aGVuIHJlZ2lzdHJhdGlvbiBmYWlscyAtIGl0IGhhcyBiZWVuIGFscmVhZHkgZnJlZWQuCisKK2NvbW1pdCA3ODcxZjJiMDliOGI1MmYzNGE5ZTU3Nzg0MjY2NDU5MDUzMTY1YmNiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEphbiAyMCAxNTowMjo1MCAyMDEyICswMTAwCisKKyAgICBEb24ndCB0b3VjaCByZWdpbmZvIHdoZW4gcmVnaXN0cmF0aW9uIGZhaWxzIC0gaXQgaGFzIGJlZW4gYWxyZWFkeSBmcmVlZC4KKworY29tbWl0IDdhMzdmMzNkMzEwYzk1OTg2MDdiYzMyM2Q5YmRiZjkxYWFmNzJjOTUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDE1OjAwOjUxIDIwMTIgKzAxMDAKKworICAgIERvbid0IHRvdWNoIHJlZ2luZm8gd2hlbiByZWdpc3RyYXRpb24gZmFpbHMgLSBpdCBoYXMgYmVlbiBhbHJlYWR5IGZyZWVkLgorCitjb21taXQgM2U0NWY3MDI2MjQ5ZTQ1MzUwZWRhYWM4NTMzNzQyM2FhMGU5NWQ4YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKYW4gMjAgMTQ6MTM6MTggMjAxMiArMDEwMAorCisgICAgUmV2ZXJ0ICJGaXggZm9ybWF0IHNwZWNpZmllcnMgdG8gYXZvaWQgd2FybmluZ3MiIC0gdGhlcmUgaXMgbm8gTkVUU05NUF9QUklvIGluIFY1LTQgb3IgVjUtNSBicmFuY2hlcworICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMzkwYzAxMTRjOGVjMGJkYjI3YjA4YjZmNzRlM2Y2ZWYzYTYyOTgxYi4KKworY29tbWl0IDYxOTM2NzYyZTY0MWMxOGRiNzVhYTUxMjVhMzNlNzc2YzY3N2FkYzUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSmFuIDIwIDExOjEzOjM5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGZyZWVpbmcgcmVnaW5mbyB0d2ljZSBvbiBlcnJvciBpbiBhIHRlbXBsYXRlIGFuZCBhbGwgaXRzIGluc3RhbmNlcy4KKworY29tbWl0IGNiZjFjOTFiYWY3MTkxYmU1ZmEyN2Q4MWJjZjg3MTQzMzFhMmMxMmYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gMjAgMDk6MjA6NDIgMjAxMiArMDEwMAorCisgICAgVXNlIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2UoKSB0byBmcmVlIGEgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0LgorICAgIAorICAgIEZpeGVzIGEgYnVnIGludHJvZHVjZWQgaW4gY29tbWl0IGRiZjI2YTA1YTA0ZWYyNGM0NzM0NmU1YWRkYTQ4ZTMzODQ5OGU3MWYuCisKK2NvbW1pdCBhYTZiNzliYzEyNGE3YjdhODg1ZDdlNTAzNWFiMDZhYTNlY2VmNjEzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDIwIDA5OjIwOjMxIDIwMTIgKzAxMDAKKworICAgIEhPU1QtUkVTT1VSQ0VTX01JQjogZml4IGEgY29tcGlsZXIgd2FybmluZworCitjb21taXQgM2E3NmI0M2UxMWZmZmFkYTYzMmZjY2I4NDhhYjUwMGU4NzZhZDQ4YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNjoyMTowNSAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEF2b2lkIHRoYXQgYW4gU05NUCBzZXQgd2l0aCBVc2VFbnVtcyBlbmFibGVkIGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdAorCitjb21taXQgODRkZWM5ZmE5MmIwYWEyZDU4ZWI3MDIwMzMwZjRmOThlNTE1NDMyMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiAxOCAxNDozODoyMSAyMDEyICswMTAwCisKKyAgICBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOiBGaXggbW9zdCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgMzhjZjIxOGMzZjFhNzI3Nzg2ZTIyN2E1ZDNmYjE4NmZkMGYxYTE1ZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6NTA6MTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgdHlwbworCitjb21taXQgY2UxZjI4NGE2M2ViODE2NDRiM2UzMjYwNmNiZTM5YjY3ZTFkZmYyYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTQ6Mzc6MDkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgN2UyMTQxM2NhNmYyZWZkN2EzYWZiNjJjNjJiNjQ0ODgxYjhiZDFlNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTkgMTM6NDY6MzAgMjAxMiArMDEwMAorCisgICAgUHJvcGVybHkgYWxsb2NhdGUgYW5kIGZyZWUgZW5naW5lSUQuCisKK2NvbW1pdCAzNGM5NjI4ODI2MDdjMzYzOGEyZmEyNWEyYWM1MzE0OTJkNzFjNzg3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzozNzoyNSAyMDEyICswMTAwCisKKyAgICBGcmVlIGxvY2FsbHkgYWxsb2NhdGVkIHRtU3RhdGVSZWYuCisKK2NvbW1pdCBmNTdhZTUzMWRjNTY1OGFiY2Q2NWIxNjI3NjE1NTI1MjM4ZDE2ZDJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoyMDoyNCAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA1MzZiYzU3NTU2YzMxNDE1NjFlYTRhMTk0ODEwYjE2MjkwYTY5MWVlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzoxNTo0NyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBpZiB0aGUgZnVuY3Rpb24gYWN0dWFsbHkgZG9lcyBzb21ldGhpbmcuCisKK2NvbW1pdCBhMDc3N2QzMDdkYmNhZjIxOWVlMDE4NGEwZmJhYjlkNGU1ZDZhYTBiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMzowMTo0NSAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA4Yjk3YTcxYzhlNzk1OTQyOGViNGQ0ZThkOTBlOTA5NmQ0M2ZmMDlmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1NzoyNiAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCAyYzE1MDdjMjIwMzA1NDlhZTY2MGMwZTIxMWZiZGM1Yzc1ZWM1YzU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1Mzo0NyAyMDEyICswMTAwCisKKyAgICBGcmVlIHByZXZpb3VzbHkgYWxsb2NhdGVkIG1lbW9yeSBvbiBlcnJvcnMuCisKK2NvbW1pdCA2NWYyYjdiY2Q0ZmUwMzkwNmFhMWExMTVhYjYwYTg5YjhhZTkzM2Q1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxOSAxMjo1MTozNiAyMDEyICswMTAwCisKKyAgICBDbG9zZSBvcGVuIGZpbGVzIG9uIGVycm9yLgorCitjb21taXQgMGU1MmU0ZjY2ZDQ0NzY2YmVhMzc0NzM1NTZjNzhlNTIxOWI5NTQ2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDU6MzMgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZGJmMjZhMDVhMDRlZjI0YzQ3MzQ2ZTVhZGRhNDhlMzM4NDk4ZTcxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6NDI6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgNzQ4ZGE4NGIxZmQ2NTRlMzM4YmM3MDFlOGY5ZTVkYTIyOTE4N2YxYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MzI6MDQgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZWIyMTcxNDZmZDU0MDM2ZWE0MjAyYmZlZjc4YmJmNzc0ZDdlMzgyZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MjM6MTAgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgOWJhMzhlZWM2NjEzOGVjMWY2MTNlYThkMDRlMTU4MTMwYzcxMjFiYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTg6NTUgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgZDlkOTM4ZDMwMThjMjdmNTMyNzdiYzVlNTk1Nzg1MDA0OTBjMWQwOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTY6MzggMjAxMiArMDEwMAorCisgICAgQ2xvc2Ugb3BlbiBmaWxlIG9uIGVycm9yLgorCitjb21taXQgZDVlODE3ZDViZDUxOGQ5YWM2YTBkNjBlMGUxNDFkZDY0ZjI3YWQxOQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MTQ6MTIgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgMmFlNjhmMDU5ZGY5ZDc0YjA3NGQxMmY1OWMxODQ3NDY2ZWQ1NzZjZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTU6MDM6MTcgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgYTAwZjNkNDYxMTIxYjU0NWFlZDcyYWMxMmIyNDM4NzkxZGNmYzRiYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gMTggMTQ6NTg6MzkgMjAxMiArMDEwMAorCisgICAgRnJlZSBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkgb24gZXJyb3JzLgorCitjb21taXQgYmE1ZDUyOTJiMDQzOTNiMGM3ZDdkN2VkOTYxMjQxOTI5NDE4YzZlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTc6MDU6MTQgMjAxMiArMDEwMAorCisgICAgRml4ZWQgZGVyZWZlcmVuY2luZyBOVUxMLgorCitjb21taXQgZGEyZDZhNzAyOGExM2I5ZWRmM2E1Yzg0MzE0ZDBmMWZlZWY3NjcxNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTY6NDQ6NTYgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBkZXJlZmVyZW5jaW5nIE5VTEwuCisKK2NvbW1pdCBmODgwNTRhOWI2OWI2ZGUyNzRmN2ExNGE1OWI0NzMyM2U1ZTRlNGM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjozNzozNSAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBjb250ZXh0IGlmIGl0J3MgTlVMTC4KKworY29tbWl0IDVlOTVjYTY3OTAwNzZiNzg4MDcyYTgwMWVlN2M4Mjk2OWQ5OTViY2IKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjE3OjA5IDIwMTIgKzAxMDAKKworICAgIFByZXZlbnQgZGVyZWZlcmVuY2luZyBOVUxMIHdoZW4gYSB0cmFuc3BvcnQgZG9lcyBub3QgaGF2ZSBmX2ZtdGFkZHIuCisKK2NvbW1pdCBlZWQ2ZjVmOWI5YWU1NGQyY2VhYjY3YWQ4NWFkZGUxZjZhOGEyMWQ1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjoxMzoxMyAyMDEyICswMTAwCisKKyAgICBQcmV2ZW50IGRlcmVmZXJlbmNpbmcgTlVMTC4KKworY29tbWl0IDQxY2RlNjhiNWZhNGIzOGQ4MTQ1MGNmOTFlMDgyY2RmYTgyNWU3Y2YKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE2OjEwOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGlmIGEgcmVnaXN0cmF0aW9uIHdhcyByZWFsbHkgZm91bmQuCisKK2NvbW1pdCA1YjcyYTQwODUzODc2YTE4NmVmY2MwMDkwYTRlMzJjMjM1YjljMDVmCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNjowMzo1OCAyMDEyICswMTAwCisKKyAgICBEb24ndCBkZXJlZmVyZW5jZSBOVUxMIHdoZW4gZGlmZmxlbiBpcyBTTVVYX01BWF9QUklPUklUWSAod2hpY2ggaXMgaGlnaGx5IHVubGlrZWx5LCBidXQuLi4pCisKK2NvbW1pdCBmYTZhOTEyZTQxYzVkMGZkMmE2MzY4OTRlODZiNjQyNmMwNzM3NWFiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNTozNzo0NCAyMDEyICswMTAwCisKKyAgICBDaGVjayBmb3IgbWlzc2luZyB2YWx1ZSBpbiBzZXRFdmVudC4KKworY29tbWl0IDQxMGI3MWRhNDI1Mzg5ZmVjYzI1ZDE0ZjQ5ZjIzNzUzNTgxNTc2YWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjI4OjQxIDIwMTIgKzAxMDAKKworICAgIERlcmVmZXJlbmNlIGVyZWcgb25seSBpZiBpdCBpcyBub3QgTlVMTC4KKworY29tbWl0IDE4NTI3MmQxYTBiOTEzNzc0MTg2ZjFiOTEzNWFlYWY2MzdlYmVkNTIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDE1OjE3OjIxIDIwMTIgKzAxMDAKKworICAgIEFzIHBlciBhYm92ZSBjb2RlLCB0ZW1wbGF0ZV92MnBkdSBjYW4gYmUgTlVMTCwgc28gY2hlY2sgaXQgYmVmb3JlIGRlcmVmZXJlbmNpbmcuCisKK2NvbW1pdCA0OGU1ZWFkM2ZkMmMyYjM4NWRmNjk3MmM2NzUyNmZmNmJkYzMwNzY4CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDo0MjoyMiAyMDEyICswMTAwCisKKyAgICBVcGRhdGVkIGxhc3QgZml4IHRvIG5ldyBlcnJvciByZXBvcnRpbmcgc3R5bGUuCisKK2NvbW1pdCBmMzNkMzM2MTVkNmQ4NWQwMDczNzI2NDczYzQxNDZjYmNkZjExY2VkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxNDozMDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBzaWdzZWd2IHdoZW4gZW1wdHkgY29uZmlnIGxpbmUgaXMgcGFyc2VkLgorCitjb21taXQgYjVkZjFlZWI0N2VkMzU1OWI2ZjRkOWVjY2NkYjI0MjEyNmU2Yzk5MgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTcgMTQ6MTE6NTggMjAxMiArMDEwMAorCisgICAgRml4ZWQgKGhpZ2hseSB0aGVvcmV0aWNhbCkgc2lnc2VndiB3aGVuIHNwLT5zZWN1cml0eUVuZ2luZUlEIGlzIE5VTEwuCisKK2NvbW1pdCA2ZmVlZDYyOWE3MTg5OWMxMTMwOTY5NTlkODU0OWRjMTIwMWU4ZjlhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxNyAxMzo0MzozNyAyMDEyICswMTAwCisKKyAgICBBZGRlZCBOVUxMIGFuZCBsZW4gY2hlY2sganVzdCBpbiBjYXNlIHNvbWVvbmUgcHJvdmlkZXMgdmFsdWUgPSBOVUxMIGFuZCBub3plcm8gbGVuICgtPiBOVUxMIGlzIHRoZW4gZGVyZWZlcmVuY2VkKS4KKworY29tbWl0IDM1NWM1YWIyNjRhZjJhNjAyMGExZDhhOTIzZjgwZjExYjk0MjI5NWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDE3IDEzOjM2OjQxIDIwMTIgKzAxMDAKKworICAgIEV4dGVuZCB0aGUgTlVMTCBjaGVjaywgaS5lLiByZXR1cm4gaWYgdGhlcmUgaXMgbm90aGluZyB0byByZW1vdmUuCisKK2NvbW1pdCBkZGQ3OTQ4YWNhZDkzOGNkNDI5NzQ1MDVkZGNhNGYwMzcyMTE2NzA5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDExOjExOjI5IDIwMTIgLTA4MDAKKworICAgIHVwZGF0ZSBzcGFydGEncyBjb3B5cmlnaHQKKworY29tbWl0IDQxMjU2MDg2YTdhNTA0MTQ1MzQxOWNmZDZlNTYyYzdiNTVjNTZiMGEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKYW4gMTYgMTA6MzI6MDQgMjAxMiAtMDgwMAorCisgICAgcHVsbGVkIGZ1bGwgY29weSBvZiBleHRyYWN0bmV3cyBmcm9tIG1hc3RlcgorCitjb21taXQgNjI1YTcwZGJkZmQ5OTAyZGE3OWVmYTI5M2ZlNmQyYWM4Y2NmMmIyZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEphbiAxNiAxMDoyNDoxOSAyMDEyIC0wODAwCisKKyAgICB1cGRhdGUgdG8gY2hhbmdlIHRvIHRoZSBuZXdlciBsb2cgZ2VuZXJhdGluZy9wYXJzaW5nCisKK2NvbW1pdCA2MmUzMmIxMzA4OWIyOWVkY2YyNzZmNjE1ZGE2N2U0NTA4ZmU3YmI1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSmFuIDE2IDA5OjI5OjQyIDIwMTIgLTA4MDAKKworICAgIGNvbmZsaWN0aW5nIG1lcmdlIGZyb20gbWFzdGVyIGZvciBleHRyYWN0bmV3cworCitjb21taXQgNzAwODRkYTYxZDJiY2JkMmNmMWVkODFiZGMzYmY2Nzk0YzJhZmZiNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiAxMyAxMTo0OToxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRElTTUFOLVNDSEVEVUxFUi1NSUI6IEhhbmRsZSAzMi1jaGFyYWN0ZXIgc2NoZWRDb250ZXh0TmFtZSB2YWx1ZXMgY29ycmVjdGx5LgorICAgIAorICAgIFNlZSBhbHNvIGNvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkLgorCitjb21taXQgYzE1MjZmY2NjMDQ3NGMxZGIxOGNhYTlkYmI4MzM4NTNjZGRkZTNjYworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTM6MjEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgYTI3YWExOWRmMjgzMTU2YzAzMmM4MWVhZWU1ZTExNTg1OWQzOGMxNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MTE6MzIgMjAxMiArMDEwMAorCisgICAgRG9uJ3QgcmVwbGFjZSAncmMnIHZhcmlhYmxlLCBpdCdzIHZhbHVlIGlzIG5lZWRlZCBvdXRzaWRlIHRoZSBsb29wLgorCitjb21taXQgOTg1ZGZmMmIwODc2ZDk0ODNjNDE0ZmNjZWEzZWY2YmM2M2UxNDU2MQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTU6MDE6MzIgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCBkdXBsaWNhdGUgY29kZS4KKworY29tbWl0IDJmZDc4MTgzMThlN2E1ZGZlOThmNTJjY2Y3NTBjMmE2M2U4MjVkZWQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDE1OjAwOjIyIDIwMTIgKzAxMDAKKworICAgIFJlbW92ZWQgZHVwbGljYXRlIGNvZGUuCisKK2NvbW1pdCAxNWYyMTEzMGJhMzNkYzlhZmQxNjRlNTJkZmQ3NGM5Y2VjMGU5MjMyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEphbiAxMiAxNDo1ODoxNCAyMDEyICswMTAwCisKKyAgICBSZW1vdmVkIGR1cGxpY2F0ZSBjb2RlLgorCitjb21taXQgMzhmZDYzNzhjYzMyNzUxODBmNjNiOGQ5YjlhNDA3MmIzZGFiZjhlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MjU6MDYgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSB0eXBvLgorCitjb21taXQgZWJkOTJlMTliMTBjMGEzOGUxN2NkZTQwNzg2NGI0NWMyNmUxNzMyNworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTQ6MDc6NDMgMjAxMiArMDEwMAorCisgICAgUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpZiAodmFsdWUpIGNoZWNrIC0gdmFsdWUgaXMgY2hlY2tlZCBmZXcgbGluZXMgYmVmb3JlLgorCitjb21taXQgYWNkY2ViNTBlYTY2ZDZiMzIzYzc0ZWUwMjFmYjc3ZTgxMGU0ZTdhZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKYW4gMTIgMTM6NDM6MTkgMjAxMiArMDEwMAorCisgICAgUHJldmVudCBtZW1vcnkgbGVhayB3aGVuIG1hbGxvYyBmYWlscy4KKworY29tbWl0IDE3MDUzZTM0Y2ZlOWE4YWIzOTVmYjUwZjVjM2YxZGFmYzcyNDdhZWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSmFuIDEyIDEzOjMyOjU3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGRvdWJsZSBmY2xvc2UoKS4KKyAgICBMaW51eCBtYW4gcGFnZSBmb3IgZmNsb3NlKDMpIHNheXM6IEluIGVpdGhlciBjYXNlIGFueSBmdXJ0aGVyIGFjY2VzcyAoaW5jbHVkaW5nIGFub3RoZXIgY2FsbCB0byBmY2xvc2UoKSkgdG8gdGhlIHN0cmVhbSByZXN1bHRzIGluIHVuZGVmaW5lZCBiZWhhdmlvci4KKworY29tbWl0IGE2NjQxZWRiOWNiNzRmYzIyMzZiNDJjZTU1NTRmYzMzMjk5NTY1NTIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTU6MjI6MzQgMjAxMiArMDEwMAorCisgICAgTWluR1c6IFNraXAgdGVzdCBUMDY1IGlmIG5vdCBzdGFydGVkIGZyb20gaW5zaWRlIGFuIE1TWVMgc2hlbGwKKworY29tbWl0IGE4ODNlZjE5ODJmMzAxYjE0ODVkMjI3MzAxNjc0OTI3MzMwZjViNjcKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDExIDE1OjE0OjUzIDIwMTIgKzAxMDAKKworICAgIE1vdmVkIGRlYnVnIG9wdXRwdXQgYmVmb3JlIHJldHVybi4KKworY29tbWl0IDNiNjg2NTY2Mjk2ZGQ4N2JjNDJiN2YxMTY5ZGFhY2RiM2M0NWNjNTgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMTggMDY6MjU6NTYgMjAxMCArMDAwMAorCisgICAgV2luMzI6IGJ1aWxkcyBhZ2FpbiB3aXRob3V0IHdhcm5pbmdzIHdpdGggTVNWQyA2LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTYtcGF0Y2hlc0AxOTQ4OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzYTdkMWIwOTYwOWRhZDY0OWY1OGJiZGI1YjdlMTBkMzliMzk4YzEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBPY3QgMTcgMTE6MDQ6MDYgMjAxMCArMDAwMAorCisgICAgRm9sbG93LXVwIGZvciByMTk0NzY6IGZpeGVkIGEgdHlwby4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyZGU3M2JkMzY1YTM4MWI5YzM1M2NhNTIzMDc2OWVlZmIxYWM3MWVkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDExOjQyOjQyIDIwMTIgKzAxMDAKKworICAgIGxvY2FsL3Bhc3N0ZXN0OiBSZW1vdmUgYW4gaW5jb3JyZWN0IFBBVEg9IHN0YXRlbWVudAorCitjb21taXQgNjk5NTEzZjEyMzhlMGFkY2UxZjFjZWM5OGUwZDE0NzI5M2ZjNTA0NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE9jdCAxNyAwOToyNTo1MSAyMDEwICswMDAwCisKKyAgICBORVRTTk1QX1JFTU9WRV9DT05TVCgpLXJlbGF0ZWQgY2xlYW51cC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS02LXBhdGNoZXNAMTk0NzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2MzU4ZGVlNzJmYjM0N2UyNjAwYTBhN2JkMjFmMjMyNzBkM2EwMGY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDEwOjU4OjE1IDIwMTIgKzAxMDAKKworICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmM6IEFkZCBhIGNvbW1lbnQKKworY29tbWl0IDUzOTZiZmUwMzJjOGNiYzczYzhmZjVkNGIwODVlYmFkYTlmNTk4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MzA6MTYgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGZlYjNhZjI4ZGNhZTIyMDE1YWU4NjVhMmU1ZGQ4YzQxNmU5OTkxZDgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gMTEgMTA6MDI6MDggMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBzdHJuY3B5KCkvc3RybmNhdCgpIGJ5IHN0cmxjcHkoKS9zdHJsY2F0KCkKKworY29tbWl0IGI3ZTFhYTI1NWJhZTRhMzQ1M2Y5ZWNhNjQ0YTg3NjYzNDM1MWYxMWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBNYXIgMjAgMTk6MzY6MjggMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogbGlic25tcDogY2hhbmdlZCB0aGUgdHlwZSBvZiB0aGUgZm91cnRoIGFyZ3VtZW50IG9mIG5ldHNubXBfc2V0X3Jvd19jb2x1bW4oKSBmcm9tIGNvbnN0IGNoYXIqIHRvIGNvbnN0IHZvaWQqIHN1Y2ggdGhhdCBubyBjYXN0IGlzIG5lY2Vzc2FyeSB3aGVuIHBhc3NpbmcgYW5vdGhlciBkYXRhdHlwZSB0aGVuIGNoYXIqIG9yIGNvbnN0IGNoYXIqLgorICAgIENIQU5HRVM6IFdpbjMyOiBjaGFuZ2VkIGluX2FkZHJfdCBmcm9tIHVfaW50IHRvIHVfbG9uZyBzdWNoIHRoYXQgaXQgbWF0Y2hlcyB0aGUgZGF0YXR5cGUgb2Ygc29ja2FkZHJfaW46OnNpbl9hZGRyLgorICAgIEFsc28sIGZpeGVkIHNldmVyYWwgY29tcGlsZXIgd2FybmluZ3MgKG1vc3RseSBjaGFyICogPD4gdV9jaGFyICogbWlzbWF0Y2hlcykgYW5kIHJlbW92ZWQgc29tZSBjYXN0cy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxODM0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCWFnZW50L2FnZW50X3JlZ2lzdHJ5LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisgICAgCWFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYworICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKKyAgICAJYXBwcy9zbm1wdHJhcGQuYworICAgIAlzbm1wbGliL3NubXBJUHY2QmFzZURvbWFpbi5jCisgICAgCXNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYworICAgIAlzbm1wbGliL3N5c3RlbS5jCisKK2NvbW1pdCBmNDdhMzc1Mjg0OWRiMDc1ZTZmMjA1M2I4NTk1YjdiNzkyZmI2NDYyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgT2N0IDE1IDEwOjU2OjA5IDIwMTAgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdCBjb21waWxlci4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxOTQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDAyYjYwNTZkZjk1ZGE4YjY3MzAzNGUzOWMyYzdjMzg2ZWQwZjM2OWMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTE6NDQ6NTMgMjAxMiArMDEwMAorCisgICAgRml4IGEgY29tcGlsZXIgd2FybmluZyBhYm91dCBjYXN0aW5nIGF3YXkgY29uc3QKKworY29tbWl0IGExOTg2NTgzMmZjNzdmNGMwNDgxNDRkOTFhNDMxYjFlOTRkMzI5ZjIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgT2N0IDE0IDIzOjEyOjA1IDIwMDkgKzAwMDAKKworICAgIENIQU5HRVM6IGFwcHMsIHNubXBsaWI6IFBBVENIOiAyODM1NTc3OiBpZGVudGlmaWVkIGJ5ICJCYXJ0IFZhbiBBc3NjaGUiOiBSZXBsYWNlIFNOTVBfWkVSTyBvZiBhcnJheXMgd2l0aCBhIG1lbXNldC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby90cnVua0AxNzc5NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDY3YTNlMmVjY2I5NWY5YzlkMDgwOWVmY2JkZGNkODY2ZWUzMDYyZDUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNiAxNDoyNzoxNSAyMDEwICswMDAwCisKKyAgICBGaXhlZCBhIGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgZGlzY2FyZGluZyB0aGUgY29uc3QgcXVhbGlmaWVyLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL3RydW5rQDE3OTcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgM2RjZGUyZThhNTk1YTUyN2YwNjE0MmMzYjg1MmRlODQzM2ExY2YyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBKYW4gMjQgMTQ6Mjc6NTUgMjAxMCArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUHJldmVudCBnY2MgcGVkLXdhcm5pbmcgZm9yIE5FVFNOTVBfUkVNT1ZFX0NPTlNUCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTgwNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjMmUxNTI1YTg1YmRhNTI5OWEzYjlmMjQxNjE0ZjdlNjUwOWFlZWJhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSmFuIDYgMTM6MzU6MTEgMjAxMCArMDAwMAorCisgICAgQmFja3BvcnQgY29tbWl0IDI5NWY0NzNjODM1NDYyMjFiMmE3MWQ4MTVjNjFlMzNhNjdmOThhZTM6IHJlZmluZSBORVRTTk1QX1JFTU9WRV9DT05TVCgpIGltcGxlbWVudGF0aW9uLgorCitjb21taXQgY2I0MjNiMGFlOWVkMDA1OWFhMTAwZGM0ZTJmZDkzYWQxYjk3ZmFmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA2IDExOjU3OjUxIDIwMTAgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBlMmZiMDllMDA5M2UyZjY0OGZlMjYzOGRhMmYzYWYxOGZkYjMyYmYwIC0gaW50cm9kdWNlIE5FVFNOTVBfUkVNT1ZFX0NPTlNUKCkuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAlhZ2VudC9zbm1wX3BlcmwuYworICAgIAlzbm1wbGliL3NubXBfc2VydmljZS5jCisKK2NvbW1pdCBhZmMzOTZhYjE2MThhODU5NWEyNTE5ZmJjMjVmN2E0OThlMTc0NDExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjQ5OjM0IDIwMTIgKzAxMDAKKworICAgIFVuYnJlYWsgbmV0c25tcF9ta3RlbXAoKSBhbmQgbWFrZV90ZW1wKCkuCisgICAgCisgICAgVGhlc2Ugd2VyZSBicm9rZW4gYnkgY29tbWl0IGJiOGZjYmI4NzQ5OTgwMDBmOTQ1ZjA1OGQxYWE2ZmUxNGU5MjU4OTkuCisgICAgQWxzbyByZXBsYWNlIGEgc3RybmNweSgpIGNhbGwgYnkgYSBjYWxsIHRvIHN0cmxjcHkoKSBhbmQgcmVwbGFjZSB0aGUKKyAgICBtYWtlX3RlbXBmaWxlKCkgaW1wbGVtZW50YXRpb24gYnkgYSBjYWxsIHRvIG5ldHNubXBfbWt0ZW1wKCkuCisKK2NvbW1pdCAyMTAxODVjMTVkMGQ2NWYwZWE5OGI1ZTNjMmUwNzc2ZjYyMjJkMTcwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDExIDA4OjI3OjQzIDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNyYXNoIGR1cmluZyBzdGFydHVwIG9mIHNubXBkIGludHJvZHVjZWQgYnkgY29tbWl0IDg4NTA2MTY4N2Q5Y2FhMzg0NzA5Nzk2NjdkN2Q4YWQ2NTYzY2VkYWQuCisgICAgCisgICAgQWxzbywgbWFrZSBzdXJlIHRoZXJlIGlzIG9ubHkgYSBzaW5nbGUgY29weSBvZiB0aGUgY2xlYW51cCBjb2RlIGluIGZ1bmN0aW9uCisgICAgbWtkaXJoaWVyKCkuCisKK2NvbW1pdCA4YmI0ZTg2YWJjZjk4ZmYyODc0OGFmMGFmODljOThlNjRkNWNkOTYxCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBXZWQgSmFuIDExIDA3OjQ3OjEyIDIwMTIgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIG9sZG1hc2sgdmFyaWFibGUuCisKK2NvbW1pdCAzYWFkMTVhZTU2MGFjODU3ZTczYzkwNzY0ZTkwM2U3Y2EwMmIzMjk1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTo0MDo1OSAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgZm9yIGxhcmdlIE9JRCBuYW1lcworCitjb21taXQgZmJhMTg4ZWU4MjAxMGIyZjJkOGNhMmU0MjZiYTY1NDQ5OWFiM2QwYQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MzE6MzMgMjAxMiArMDEwMAorCisgICAgZml4ZWQgYnVmZmVyIG92ZXJmbG93IGluIF9fY29uY2F0X29pZF9zdHIKKworY29tbWl0IDIxZDI1ZDg2YjhlNDkwNGQ3OThkYzhjOTZkYWRlOWU1MDQ4NDU3YTgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE1OjI2OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHBhcnNpbmcgcG9ydCBudW1iZXJzLgorCitjb21taXQgZDM2OTMxODQxYjJmYzJjZWJjNjM2NGIyOTQ5MTI5YTBhZDQyYWQxZAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTU6MDU6NTEgMjAxMiArMDEwMAorCisgICAgRml4ZWQgYSBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSBTdW1GaWxlIGlzIHVzZWQuCisKK2NvbW1pdCAwZWZkZDAyMmRhMDlhZjFiNWUxNjE3MWZhN2EyYjUyM2M1ZDZlYzU5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNTowMTo1MyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiB0b28gYmlnIHRlbXAgZmlsZSBwYXR0ZXJuIGlzIHVzZWQuCisKK2NvbW1pdCA1NjBiYzZjMDliNzUxNTU2ZWZkNmI0YzQ0OTU3NTFiMTA5YTkzZjkyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo1OToyNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3csIGp1c3QgdG8gYmUgc3VyZS4KKworY29tbWl0IDgyOTFkN2M1YjkyYTMxZGQ0ZjU4MmI0OTdkNGIyYTA4NTMzNjdhNTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjU1OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdy4KKworY29tbWl0IDg4ZTFmMzRkZTczMDA1NzVmYTZkYWI4NTdlY2RkYjI0MmE4N2RlODAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ4OjU1IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGJlMTM3NWE5OTI2ZWJlMGNkNWI3OGE0MDQ1YzNiZDExYzgzNjY0YjEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIGEgc2Vuc29yIG5hbWUgaXMgdG9vIGxvbmcuCisKK2NvbW1pdCAxY2IyNDYyNTM3MjA2MmIxNGM3MWQ3ZGQ1MWUyMGZlZjc3M2UyNzQzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDo0MTowMCAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBhIENQVSBoYXMgdG9vIGxvbmcgbmFtZS4KKworY29tbWl0IDg0YzgwN2VlMDMyNTFlNTQ4NTZlODNkNjJkMDZlYTA4YjhkZjUyN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjM2OjUwIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBsb25nIGludGVyZmFjZSBuYW1lcyBhcmUgdXNlZC4KKworY29tbWl0IGMzMTBlMzkwYjVkZDA1ZjI0YmU3ZWIxOTA0Yzc0ZTQxMjU5YzkzZGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjI0OjU0IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGJ1ZmZlciBvdmVyZmxvdyB3aGVuIHRvbyBiaWcgdGVtcCBmaWxlIHBhdHRlcm4gaXMgdXNlZC4KKworY29tbWl0IDQ2MDBkMTE0MzRlODNiODY1M2NmOWY4MTNhM2Q4YjYzMDQ1NWI0MmQKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDEwIDE0OjE3OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIHBsYXVzaWJsZSBzdHJpbmcgb3ZlcmZsb3cgYmVmb3JlIHBhcnNpbmcgY29tbWFuZCBsaW5lIG9wdGlvbnMuCisKK2NvbW1pdCA4ODUwNjE2ODdkOWNhYTM4NDcwOTc5NjY3ZDdkOGFkNjU2M2NlZGFkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxNDoxMTowMiAyMDEyICswMTAwCisKKyAgICBHZXQgcmlkIG9mIChpbnNlY3VyZSkgU05NUF9NQVhQQVRIIGluIG1rZGlyaGllcigpCisKK2NvbW1pdCA4MDE2ODkwYTQ0NWY2YTdlMmE4NzNhMDQ4NzNkNGUyN2I2ZWU2NGUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMzo0ODozNCAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBpbnRlZ2VyIHNpemUgb24gNjQgYml0IHBsYXRmb3JtLgorCitjb21taXQgYmI4ZmNiYjg3NDk5ODAwMGY5NDVmMDU4ZDFhYTZmZTE0ZTkyNTg5OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMTAgMTM6MzE6MzYgMjAxMiArMDEwMAorCisgICAgU2VjdXJlIG1rc3RlbXAoKSB3aXRoIHVtYXNrKCkgLSBvbiBzb21lIGltcGxlbWVudGF0aW9ucyBpdCBkb2VzIG5vdCBzZXQgMDYwMCBwZXJtaXNzaW9ucyBhdXRvbWF0aWNhbGx5LgorCitjb21taXQgMmY0ZTZhY2Q3MTQxODNmMDE1Yjc2MzY1N2Y4ZjA4NDU5MzM1N2UyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAxMDozODoxNiAyMDEyICswMTAwCisKKyAgICAuZ2l0aWdub3JlOiBJZ25vcmUgcGVybC8qLnltbCBmaWxlcworCitjb21taXQgYzM2NWQ4MGMxNmMyZDE3YjE2MDAxMWU4YzFmOWNiOTU4OTU0ZTlkYgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEphbiAxMCAwODozNDoxNiAyMDEyICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IERvIG5vdCBpbnZva2Ugc2h1dGRvd25fcGVybCgpIGZyb20gaW5zaWRlIHRoZSBTSUdURVJNIGhhbmRsZXIgc2luY2UgdGhhdCBmYWlscyBpZiBTSUdURVJNIGlzIHJlY2VpdmVkIHdoaWxlIGEgUGVybCBoYW5kbGVyIGlzIGFjdGl2ZS4gQmFzZWQgb24gYSBwYXRjaCBwb3N0ZWQgYnkgSm9lbCBBdm5pIDxqYXZuaUBhcnViYW5ldHdvcmtzLmNvbT4KKworY29tbWl0IGQwNTlmYjg3OGIxNDM2NTk5OTUzY2VhNWEwNzc0OTlkZGNkY2JjYjUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNzowMzo1NSAyMDEyICswMDAwCisKKyAgICBDSEFOR0VTOiBCVUc6IDM0NDA3NTI6IElGLU1JQjogUmVwb3J0IGludGVyZmFjZSBzcGVlZCBjb3JyZWN0bHkgZm9yIEV0aGVybmV0IGludGVyZmFjZXMgaWYgb3RoZXIgdGhhbiAxMCBNYnBzLCAxMDAgTWJwcywgMSBHYnBzLCAyLjUgR2JwcyBvciAxMCBHYnBzLiBBZGQgc3VwcG9ydCBmb3IgTklDcyBmYXN0ZXIgdGhhbiA2NSBHYnBzLgorCitjb21taXQgZTMyNWVjYmZjZTc3ZjAwYWM1Y2Y2ZmJkOTU3Zjk1NDk1ZjYxYzU5YgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEphbiA5IDEzOjI1OjEwIDIwMTIgKzAxMDAKKworICAgIFN1cHByZXNzIHVuaW50ZXJlc3RpbmcgRG94eWdlbiB3YXJuaW5ncworCitjb21taXQgYmU5MTYxZDNhNTg5OGU4NjM3NjdmOTI2NjEzNDg2MTI2YzJjYmY2NworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDEyOjM1OjM5IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IGltcGxlbWVudGF0aW9uIG9mIGZ1bmN0aW9ucyBtYW5pcHVsYXRpbmcgNjQtYml0IG51bWJlcnMuCisKK2NvbW1pdCA4NmU0YzJiZTA4NTJhMGExM2IwNjAzMDc1NzIwYjMyNjRlYzcwZGRlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTI6Mjk6MTEgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBpdCBleHBsaWNpdCB0aGF0IE1BWF9TVUJJRCBpcyBhbiB1bnNpZ25lZCBjb25zdGFudAorCitjb21taXQgMzdlMjcyZDhmN2I3MTgwYmExNDBmYTM4NmE1ZmYwNTg5NjhhMDhhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE4OjIxOjQ4IDIwMTIgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBJRi1NSUI6OmlmVHlwZTogUmVwb3J0IHR5cGUgImluZmluaWJhbmQgKDE5OSkiIGZvciBJbmZpbmlCYW5kIGludGVyZmFjZXMgaW5zdGVhZCBvZiB0eXBlICJvdGhlciAoMSkiLgorCitjb21taXQgMGQxYzIxZjk5OTFkMTMwOWQwNTdlM2U0MDU2ZDU0N2RmN2Q0MGVjZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE2OjA2OjMxIDIwMTIgKzAxMDAKKworICAgIE1ha2UgZGVjbGFyYXRpb24gYW5kIGRlZmluaXRpb24gb2Ygc3RybGNhdCgpIGNvbnNpc3RlbnQuCisKK2NvbW1pdCAwYzNkNGRiYjBhOWNmNWIzNTlmNzBiMmYxOTkxNTQ5NTU1NGY4NDBmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSmFuIDYgMTU6MjM6MTYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHNubXBkOiBSZW1vdmUgZGxtb2QKKworY29tbWl0IDg5M2VjYzk3YjU4NzY2MTA0NWJlY2JlMDlhMzIwYzFiY2JjNzFjN2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKYW4gNiAxNDozNjo1OSAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdCgpIHRvIHRoZSBNU1ZDIGJ1aWxkIGluZnJhc3RydWN0dXJlLgorCitjb21taXQgM2QxMjY0MjJlNjI1NzAyYjlkM2ZhMDY3NmE5N2VjNWNiMjBkOWQxMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE1OjAxOjA2IDIwMTIgKzAxMDAKKworICAgIE1ha2Ugd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggY29uc2lzdGVudCB3aXRoIGl0cyAuaW4gZmlsZQorCitjb21taXQgYWY1M2I3NmMyZmZhNzUxZTM5NThkMGZjNWQ4Mjc5Zjc4YzJjMWMyNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEphbiA2IDE0OjQzOjU1IDIwMTIgKzAxMDAKKworICAgIFNraXAgVDA2NnBhc3Nfc2ltcGxlIGFuZCBUMDY3cGFzc3BlcnNpc3Rfc2ltcGxlIG9uIE1pbkdXCisKK2NvbW1pdCBjMzEyNmIxNDM5MjFmYWJlYWM0NDIxNjZlY2E1YjViNzQyZmQ0MmMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSmFuIDUgMTU6MDI6MzkgMjAxMiArMDEwMAorCisgICAgUmVwbGFjZSBtb3N0IHN0cm5jcHkoKSBjYWxscyBpbnRyb2R1Y2VkIGluIHY1LjUKKworY29tbWl0IGIyNGVlN2M5MDk2NTdkYjQzYmQ4YzVkOGMwMTA1NWNhMDg4M2M5Y2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwODo0MDozOSAyMDEyICswMTAwCisKKyAgICBFbGltaW5hdGUgbW9zdCBzdHJuY3B5KCkgYW5kIHN0cm5jYXQoKSBjYWxscworICAgIAorICAgIFVzaW5nIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpIGlzIGVycm9yIHByb25lIC0tIHNlZSBhbHNvCisgICAgaHR0cDovL3d3dy5ncmF0aXNvZnQudXMvdG9kZC9wYXBlcnMvc3RybGNweS5odG1sLiBIZW5jZSByZXBsYWNlCisgICAgYWxsIGludm9jYXRpb25zIG9mIHN0cm5jcHkoKSBhbmQgc3RybmNhdCgpLiBSZXBsYWNlCisgICAgc3RybmNweShkc3QsIHNyYywgbikgY2FsbHMgYnk6CisgICAgKiBzdHJsY3B5KGRzdCwgc3JjLCBuKSBpZiB0aGUgZ29hbCB3YXMgdG8gYXZvaWQgb3V0cHV0IGJ1ZmZlciBvdmVyZmxvdy4KKyAgICAqIHNwcmludGYoZHN0LCAiJS4qcyIsIG4sIHNyYykgdG8gY29weSBhIHByZWZpeCBvZiBzcmMgdG8gZHN0IG9yIGlmIHNyYyBpcworICAgICAgICBub3QgJ1wwJy10ZXJtaW5hdGVkLgorICAgICogbWVtY3B5KGRzdCwgc3JjLCBuKSBpZiBzdHJsZW4oc3JjKSA+PSBuIGFuZCBuIDwgc2l6ZSBvZiBkc3QuCisgICAgKiBzdHJjcHkoZHN0LCBzcmMpIGlmIG4gPiBzdHJsZW4oc3JjKSBhbmQgbiA8IHNpemUgb2YgZHN0LgorCitjb21taXQgNmQ5NWJjNDE0OTQ3MjkzMTAwNTQ3NWMzMGE1NDFmZWQ1NTM0ZGEzOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDExOjE5OjE2IDIwMTIgKzAxMDAKKworICAgIEZpeCB3YXJuaW5ncyB0cmlnZ2VyZWQgZHVyaW5nIGNvbXBpbGF0aW9uIG9mIHRoZSBQZXJsIHhzIHNvdXJjZSBmaWxlcworCitjb21taXQgNGZhZTU4NTIxMDNlYzM4OTNhZDQ4OGJjMGQ5MDVjYTY5MTQ1OTVlZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE3OjE1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNpbXBsaWZ5IHRoZSBzZV9zdG9yZV9lbnVtX2xpc3QoKSBpbXBsZW1lbnRhdGlvbgorCitjb21taXQgYjMyMjJiYjI3NWYyZjIzNDZlMGZkMDQ3OGFmYTJlZmI2MDA3NzNlNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEphbiA1IDA5OjE2OjQ1IDIwMTIgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IERlY2xhcmUgInR5cGUiIGFyZ3VtZW50IG9mIHNlX3N0b3JlX2xpc3QoKSAvIHNlX3N0b3JlX3NsaXN0KCkgLyBzZV9zdG9yZV9lbnVtX2xpc3QoKSBjb25zdAorCitjb21taXQgNjcyYTgwOWMyMjhlOTU1MGI5OWI4OTEwYmU3NWQwYjE2MTk4NTQwMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE3OjMzOjA5IDIwMTIgKzAwMDAKKworICAgIEZpeCBhIDY0LWJpdCBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCAyNGZmMjYwYWQ4OWNlMmFhMzYxYTU1YzdjNzJlOTE2MDMxZGVmZTM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTc6MTE6MjQgMjAxMiArMDEwMAorCisgICAgQ2hhbmdlIHRoZSB0eXBlIG9mIHRoZSBzZWNvbmQgYXJndW1lbnQgb2Ygc25tcF9zZXRfdmFyX3ZhbHVlKCkgYW5kIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSgpIGZyb20gdV9jaGFyKiB0byB2b2lkKiwgbGlrZSBvbiBtb3JlIHJlY2VudCBicmFuY2hlcworCitjb21taXQgYzZjYTczN2ZiNDZmOTBhNGJkYTVkNDM3MzRhYWMzNGU4MzdhMDVmNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1hciAxMyAxOTowNzozNyAyMDEwICswMDAwCisKKyAgICBCYWNrcG9ydCBjb21taXQgZjUwNGNlMmQ3NGE0YmM4OGY2OGNjOTUxNWZhNzA1MzM3M2NiMTViNS4KKyAgICAoRml4ZWQgbW9zdCBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIHNvdXJjZSBjb2RlIGluIHRoZSBwZXJsIHN1YmRpcmVjdG9yeS4gTm90ZTogdGhlc2UgY2hhbmdlcyBtYXkgY29udGFpbiBzb21lIHJlYWwgYnVnIGZpeGVzLikKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCXBlcmwvQVNOL0FTTi54cworICAgIAlwZXJsL09JRC9PSUQueHMKKyAgICAJcGVybC9TTk1QL1NOTVAueHMKKyAgICAJcGVybC9hZ2VudC9hZ2VudC54cworCitjb21taXQgZDIxMmRjOTg0ZWMzNGU0ZDIzMDYyNWU0NmU1OGIwYzYyOGE1MGRmNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE2OjQ2OjQ5IDIwMTIgKzAxMDAKKworICAgIFNOTVAueHMgY29tcGlsZXIgd2FybmluZyBmaXhlcworCitjb21taXQgZjdmOTY2YWJkNmQyODQ5YjEzMzEyNTJhZmU1YzQ3M2U1YzQwYjMyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDE0OjI0OjMzIDIwMTIgKzAxMDAKKworICAgIEZpeCBmb3JtYXQgc3BlY2lmaWNhdGlvbiBtaXNtYXRjaGVzLgorCitjb21taXQgMzAzYzAxNWJjZmU5YWYwYjE1NGU5ODgxYzdiNGY0NDllMDhmMzBiYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSA2IDIyOjA2OjIzIDIwMDkgKzAwMDAKKworICAgIEJhY2twb3J0IGNvbW1pdCBkM2ViMmI1Y2VkMjJhODQ4MDA1M2NlNDNhY2Y5NzM5NzI5MDU1NDA0CisgICAgKFNwcmlua2xlIHNvbWUgY29uc3QtbmVzcyB3aGVyZSByZWxldmFudCAvIGZpeCBmb3JtYXQgc3RyaW5nIG1pc21hdGNoZXMsCisgICAgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KQorICAgIAorICAgIENvbmZsaWN0czoKKyAgICAKKyAgICAJYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jCisgICAgCWFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYworICAgIAlhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYworICAgIAlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKyAgICAJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKworY29tbWl0IGQ5NWI0MDQwNjkxNmJkYTViNDhiNWE2MTMxYmVjMjdiODY2YjBhNzkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgNiAyMTo1OToyMCAyMDA5ICswMDAwCisKKyAgICBCYWNrcG9ydCBhMmE3MzE2YzMxMGYwZmNjMzcyODY3M2ZhMDQ3MDUxYzIzYjcxOTYwCisgICAgKFRyaXZpYWwgd2FybmluZyBmaXhlcywgTmllbHMgQmFnZ2VzZW4sIE1heSAyMDA5KS4KKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYworICAgIAlhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYworICAgIAlhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCisgICAgCWFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYworICAgIAlhZ2VudC9zbm1wZC5jCisgICAgCXNubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jCisKK2NvbW1pdCBkODZjNDdmMDAzZmRjMTkyYmNlN2I0NmFjNGYwNmIwOWUzODdjMTJiCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEzOjI5OjA4IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGEgdHlwbworCitjb21taXQgM2RjMGUwMGEyZmQ4ZTM0ZmUxYWUzM2VjYWJmMzZlMTQ2NDYwYTMxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMjo0MDowNyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBidWZmZXIgb3ZlcmZsb3cgd2hlbiBsYXJnZSAndG9rZW4nIGlzIHVzZWQuCisKK2NvbW1pdCBiM2M0OTgyNTQyZTBhYjE1MWZiMzg4NDc1NGNkZmJjYjQ3MmRhNTJkCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDEyOjI4OjUyIDIwMTIgKzAxMDAKKworICAgIEZpeGVkIG9mZi1ieS1vbmUgbWVtc2V0LgorCitjb21taXQgMGY1MzY5NTA0NGRkM2YwYzM1MDc3NTNlM2Y4YzI5ZDk3ZTk2ODcyZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEF1ZyAzIDIxOjM4OjI2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWIsIHNubXBkLCBwZXJsOiBFbGltaW5hdGUgZGVhZCB2YXJpYWJsZXMKKyAgICAKKyAgICBDb25mbGljdHM6CisgICAgCisgICAgCWFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYworICAgIAlhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfc3RhdHVzLmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKyAgICAJYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0c19saW51eC5jCisgICAgCWFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYworICAgIAlhcHBzL3NubXB0bHMuYworICAgIAlhcHBzL3NubXB0cmFwZF9sb2cuYworICAgIAlzbm1wbGliL2Rpcl91dGlscy5jCisgICAgCXNubXBsaWIvc25tcF9jbGllbnQuYworICAgIAlzbm1wbGliL3NubXBfb3BlbnNzbC5jCisgICAgCXNubXBsaWIvdHJhbnNwb3J0cy9zbm1wVExTVENQRG9tYWluLmMKKworY29tbWl0IDAxNTM4MDVjOTliOTE5NzM2NTkzNWM1ZDExYWU5YzNkNGJmYWEwZjMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0ODo0MSAyMDEyICswMTAwCisKKyAgICBGaXggYSBzZXQtYnV0LW5vdC11c2VkIHdhcm5pbmcKKworY29tbWl0IDNmODg4NWZiZWU5NDA3NzQ4ZmMyZjA1NzM3MjhhMTFiYTJiYzAyM2EKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDI4IDA1OjUxOjEzIDIwMDkgKzAwMDAKKworICAgIFJldHVybiBhIHZhbHVlIGZyb20gc3ByaW50X3JlYWxsb2NfdmFsdWUgZXZlbiBpZiBubyBzdWJ0cmVlIGlzIGxvY2F0ZWQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vdHJ1bmtAMTc1NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhZWU0ZTg5NWZlM2JkNWY0YTYxZTM0Mjc1YmZjYTAzNjhiNTYwNTU1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjMxOjIyIDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIHNubXBfc2Vzc190cmFuc3BvcnQoKSByZXR1cm4gdmFsdWUuCisKK2NvbW1pdCA1ZDFkMGE3NDRhYjMwYzhlNjQ1YzNiODUwNmNiYmQyY2NlYjNkMjc1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEphbiA0IDExOjA0OjQ4IDIwMTIgKzAxMDAKKworICAgIEFkZGVkIGNoZWNrIG9mIG5ldHNubXBfZXh0cmFjdF9pdGVyYXRvcl9jb250ZXh0KCkgcmV0dXJuIHZhbHVlLgorCitjb21taXQgMjk5ZWE5YTg5YzNmMTc1OGE3NzQ4YmI5YjM0MTFmNjJmMmM3MGY4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKYW4gNCAxMDo1NDo1NSAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBvZiBmb3BlbigpIHJldHVybiB2YWx1ZSwganVzdCBpbiBjYXNlIG9mIHNvbWUgcmFjZS4KKworY29tbWl0IDkwZjFhZTY3NTc5MTc0ODE2MzZlZWY3NzEwMGNhZWViNTNlZGZlMDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDowNjo1NiAyMDEyICswMTAwCisKKyAgICBBZGQgc3RybGNhdC5jLiBTb3VyY2U6IGh0dHA6Ly93d3cuZnJlZWJzZC5vcmcvY2dpL2N2c3dlYi5jZ2kvc3JjL2xpYi9saWJjL3N0cmluZy9zdHJsY2F0LmMuCisKK2NvbW1pdCAxOTlhMDUxMWY2ZWIwZWYzZmYxZDlmOTIyYjc5MGFiNjdkZmRlMDFlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgSmFuIDQgMTA6MzE6MjYgMjAxMiArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHNtdXg6IHNpbXBsaWZ5IHNtdXhfbGlzdF9kZXRhY2goKQorCitjb21taXQgZDg4MzU3M2FhNzNlMGY1ZmMxODhhY2VkZWU2NDUxZjk1ZGFlOTAwYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIEphbiA0IDEwOjIzOjA2IDIwMTIgKzAxMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW50cm9kdWNlZCBieSBjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMS4KKworY29tbWl0IDdiN2EzZWIyNTAwNTI3ZWFhMTY5OTI4N2E2Y2E2ZmNjNGNjMmUwOGEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBKYW4gNCAwOTo0MDowMiAyMDEyICswMTAwCisKKyAgICBGaXggYSBidWlsZCBlcnJvciBjYXVzZWQgYnkgY29tbWl0IGE4MDlmZTUwNzVjOWYzNzQ3MTVmN2QxYTY4Mjk0OWEwNzMwMTcyYzEuCisKK2NvbW1pdCAyYjZjMTE5ZmVkNDg0OGRhNjY2M2MxMWYwYzJjYmRjMjk5MjFiNWM2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjUxOjEwIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBuZXRzbm1wX2RzX2dldF9pbnQoKSBlcnJvcnMuCisKK2NvbW1pdCA2Y2U1MzYwY2FhNGM5ZGU1MWFkZTU3ODc5ZTgzZjk2YmQwNGI0YzVhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjQyOjIzIDIwMTIgKzAxMDAKKworICAgIENoZWNrIGZvciBtaXNzaW5nIHZpZXcuCisKK2NvbW1pdCBiM2JjNTRiZWQzMTY5MGE4NWRmMmFjZmJmMzI5NmRhOTNhOWU4OWI0CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjIzOjE3IDIwMTIgKzAxMDAKKworICAgIENoZWNrIHNvY2tldCgpIHJlc3VsdC4KKyAgICBBbHNvIGNsb3NlIHRoZSBzb2NrZXQgb24gZXJyb3IuCisKK2NvbW1pdCA5MjA3NWY1MWNkNDVhMzhjYTM4NzYwYjNmZmU4MmUxNjU1OWU5YzJlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE1OjE4OjI2IDIwMTIgKzAxMDAKKworICAgIENoZWNrIG9wZW4oKSByZXN1bHQuCisKK2NvbW1pdCBkNjhkY2FlMGYxOGQ1NTQ1NzFhZWYzMjE5NDRhNTI5MDU0OGRkZTg2CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE2OjExIDIwMTIgKzAxMDAKKworICAgIEFkZGVkICdmYWxsdGhyb3VnaCcgY29tbWVudCBmb3IgQ292ZXJpdHkuCisKK2NvbW1pdCBmYjZmODBjMGZlM2JhMzZlNTZmNWI5MTFhNDdlM2Y2ZjMyYmEyNjZlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEphbiAzIDE0OjE0OjA3IDIwMTIgKzAxMDAKKworICAgIEZpeGVkIGV4aXQgY29kZSBvZiBlbmNvZGVfa2V5Y2hhbmdlIHdpdGggd3JvbmcgYXJndW1lbnRzLgorICAgIEFsc28gYWRkZWQgYSBjb21tZW50IGZvciBDb3Zlcml0eS4KKworY29tbWl0IDMxMzBlMjRmZGMyMzI0NjRkZDdiYjIxNmY0NmNhZmEyZTBlNzc1YTYKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTQ6MDk6NTQgMjAxMiArMDEwMAorCisgICAgQWRkZWQgbWlzc2luZyBicmVhaworCitjb21taXQgMThjMTI2YTk1NjVjYjRkNjlkNzUxM2I5NDRhMjEwNTU4ODA0NWQzNQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowNzoyOSAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgNmQzMWM4MjA3MGEyYzY4ZmUzYzUxOWU5ZDU2ZmEyNzc5NTU0ZDAxZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxNDowMTo1MyAyMDEyICswMTAwCisKKyAgICBBZGRlZCAnZmFsbHRocm91Z2gnIGNvbW1lbnQgZm9yIENvdmVyaXR5LgorCitjb21taXQgZGFiMzI4NjdlZDBiOTkzMDFlZmQ3YjhkODUyYWQxMjg4YTE4NGJlMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzozMDozMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCBRVUlURlVOIHVzYWdlLgorCitjb21taXQgYjFhMmJjZjY0NjE1ZWI2NmJjMjRkNWJlNDk1MGU0NTAxMjk2MjA0NQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxODowMyAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYjJiMWM4NTFiOTRmZWQzN2MzODZlYWExYmZlYWQ1Yzc3Njk2ZTNlZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMzoxNDo1MiAyMDEyICswMTAwCisKKyAgICBGaXhlZCB3cm9uZyBvcGVyYXRvcgorCitjb21taXQgYTgwOWZlNTA3NWM5ZjM3NDcxNWY3ZDFhNjgyOTQ5YTA3MzAxNzJjMQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKYW4gMyAxMDo1ODo0NiAyMDEyICswMTAwCisKKyAgICBBZGRlZCBjaGVjayBmb3IgZmFpbGVkIHJlZ2lzdGVyX21pYi4KKworY29tbWl0IDU5NDlmMDU1YzE2YWU2NTA2MTVhYWU3YTFmZWUzZjJkN2IxNmQ5NDAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSmFuIDMgMTA6Mjk6NTkgMjAxMiArMDEwMAorCisgICAgTWFrZSBNSUIgZmlsZSBwYXJzaW5nIGFuZCBkZXRlY3Rpb24gbW9yZSBzdHJpY3QgLSBMQUJFTCBpcyByZXF1aXJlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIE1JQiBmaWxlcy4KKworY29tbWl0IGU0YjY3MzY4M2M2OGJhOGIzYWJjMDQwYjkxMjVlYzMwNDY0M2NjN2MKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBKYW4gMSAyMzowMDoyNCAyMDEyICswMTAwCisKKyAgICBBc3N1bWUgdGhhdCBsaWJkbCBtaWdodCBiZSBpbiBBR0VOVExJQlMgb3IgU05NUExJQlMgc28gcHJlYWRkIHRoZW0uCisKK2NvbW1pdCBiMTNjMWU1N2JlZGJhNzliODA2MTAzYzc0ZjE5MjFkNTNhNzA2YjM4CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gSmFuIDEgMjI6NTU6MDYgMjAxMiArMDEwMAorCisgICAgRG8gbm90IHJlcXVpcmUgdWNkLXNubXAvZGxtb2QgdW5sZXNzIGl0IHdpbGwgd29yay4KKworY29tbWl0IDE0YjYwZTg1YTFiNTcwMGU5M2QxMjZlMmYyOTFkNWM0ODVmMzRlMzYKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBEZWMgMzEgMTQ6MTQ6MjkgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IE1ha2UgdGhlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGRsbW9kIG1vZHVsZSBmYWlsIHJhdGhlciB0aGFuIGdlbmVyYXRlIGEgZHVtbXkgbW9kdWxlIGlmIHRoZSBkbG9wZW4gZnVuY3Rpb24gaXNuJ3QgYXZhaWxhYmxlLgorCitjb21taXQgOThhOTc1MzhmYzFlOWZmNDZiNjBkNWQ5NjkzNDc0NDQ1NzgzNzhjMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMzozNToxMyAyMDExICswMTAwCisKKyAgICBBZGp1c3QgdGhlIHBhdGhzIHRvIHN1cHBvcnQgdGVzdGluZyBldmVuIGlmIGJ1aWxkZGlyICE9IHNyY2RpcgorCitjb21taXQgODhmMGFmM2NmYjkxNmFlNTg2M2NjMjk4NjA3MWQ0MzVmMjBjMzA2NAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IERlYyAzMSAxMTozNzo1MiAyMDExICswMTAwCisKKyAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIHRoZSB2YXJpYWJsZXMgJ3AnIGFuZCAnbGVuJy4KKworY29tbWl0IDA4MTVhNzUzNmM3NmY3ZTQ4NDI2Mzg2ODNmNjc0ODk0YTFhOGNlMTQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDI5IDE0OjQyOjU0IDIwMTEgKzAwMDAKKworICAgIFJlcG9ydCBwcm9ibGVtcyB3aXRoIFNldFVuZG8gcHJvY2Vzc2luZworICAgIE1pc3NlZCB3aGVuIGFwcGx5aW5nIHBhdGNoICMzNDQ1NDQwCisKK2NvbW1pdCBlYjJhYjIzNzQyY2E4NmMwYjg5Y2NmZTkxZWI2ZWEzNzRiZjNhY2MxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVGh1IERlYyAyOSAxNDozNzozMSAyMDExICswMDAwCisKKyAgICBDaGVjayBmb3IgdGhlIGV4cGVjdGVkIGVycm9yIChFUElQRSkgb24gY2xvc3VyZS4KKyAgICBNaXNzZWQgd2hlbiBhcHBseWluZyBwYXRjaCAjMzQ0NzQ0NAorCitjb21taXQgYWFjMTBiYzRmMDUzYzAxNGYzODJkNjU5M2ZjMzJhYjk1ZTBiMWE1NworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFRodSBEZWMgMjkgMTI6NTk6NTIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMzQ2Mzc2NzogSGFuZGxlIHBhcnNpbmcgc3ViaWRlbnRpZmllcnMgPiAyXjMxCisKK2NvbW1pdCAzODk4YzA0ZmQ2Zjg5ODY3MDYyZmRmZWJmMzY4NTdhYjYxOWMwNDUwCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgV2VkIERlYyAyOCAxNjo1MzoyNCAyMDExICswMDAwCisKKyAgICBBZGQgdGVzdHMgZm9yIHBhc3MvcGFzc19wZXJzaXN0LCBzdXBwbGllZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZDVlZTNmMGExYTYzYmIxNzUyYzc0Y2JjYTU1YWEzZDQwYmY5YmYxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMjE6NTg6NTEgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDM0NDc0NDQ6IEZpeCBTSUdfUElQRSBoYW5kbGluZworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAyYTE3YjM3NDMwYzE4NTI5OThjMzU4OGU1NDdkN2ViNjFjMDZkYTcxCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAyMTo0NTozOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0NDA6IE1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIEFnZW50WCBlcnJvcnMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgZmU1OGEwZTVmNGQ0ZTJlMmVjYmNiNDczODJiMDhjYjFlNGRmMzUyYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTg6MTY6MjMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzQ1Njc3MDogSGFuZGxlIChvYnNvbGV0ZSkgVUludGVnZXIgdHlwZSBwcm9wZXJseQorICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEJpbGwgRmVubmVyCisKK2NvbW1pdCAxYmU4Y2YwOGE2N2E5MTg1NWZlZTFlYzRhMmQ4ZTA4N2M3ODEyNDU2CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxODowNDoxMCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBhZ2VudHg6IFBBVENIRVM6IDM0NDU0Mzc6IExvZyBBZ2VudFggZGlzY29ubmVjdGlvbnMKKyAgICAoaW4gbGluZSB3aXRoIGNvbm5lY3Rpb25zKSBQYXRjaCBwcm92aWRlZCBieSBCaWxsIEZlbm5lcgorCitjb21taXQgMDY4MDM3Mjg5MTA3ZmFhMmJhM2Y1Y2QyZmIwMGMxOTQ5NGJiOWEwNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6Mjc6NDYgMjAxMSArMDAwMAorCisgICAgSGFuZGxlIGFueSBHRVRORVhUIHJlcXVlc3QgT0lELCBub3QganVzdCBhIHNpbXBsZSB3YWxrLgorCitjb21taXQgYTc0ZmE1Mjg5ODMxMjNkMzU1YThjZGNhYTc3ZGQ0ZWI0YjhjNjk1OQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTc6MDA6MTggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcGFzczogUEFUQ0hFUzogMzQ5Mzk0OiBCcmluZyBwYXNzX3BlcnNpc3R0ZXN0IHNjcmlwdCBpbnRvIGxpbmUgd2l0aCBwYXNzdGVzdCoKKyAgICAoaS5lLiB1c2luZyB0aGUgbGVnaXRpbWF0ZSBzdHJ1Y3R1cmUgb2YgTkVULVNOTVAtUEFTUy1NSUIpCisgICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKworY29tbWl0IGJiZTY0OWViZmE2MWVhMjIzOTkxNzBiMzZiOTlkYjMwYTFkZTgwMTIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDE2OjU0OjM4IDIwMTEgKzAwMDAKKworICAgIFJld29yayAicGFzc3Rlc3QiIGV4YW1wbGUgdG8gZnVsbHkgdmFsaWRhdGUgR0VUTkVYVCByZXF1ZXN0cworICAgIGFuZCB1c2UgYSBsZWdpdGltYXRlIHN0cnVjdHVyZSBmb3Igb3V0cHV0LiAgQmFja3BvcnQgb2YgU1ZOCisgICAgcmV2aXNpb24gMTc2MzIgKHdoaWNoIHVwZGF0ZWQgJ3Bhc3N0ZXN0LnBsJyBidXQgbWlzc2VkICdwYXNzdGVzdCcpCisgICAgQ29ycmVjdCBpbiBicmFuY2hlcyA1LjUgYW5kIGFib3ZlCisKK2NvbW1pdCA4MmQwNmM3MjQ3YjIyYzhiMDFkNDViZjU1MDQxZDJmMWU2NDI3ZDQ5CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgVHVlIERlYyAyNyAxMzo0NToxOCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMzQ0NzY3MTogRml4IG92ZXJyaWRlIGhhbmRsaW5nIG9mIE9JRCB2YWx1ZXMKKyAgICBQYXRjaCBzdXBwbGllZCBieSBQaGlsbGlwIE8nRG9ubmVsbAorCitjb21taXQgODI3YzhiMjg4MzAxNzFmYWE5YzYxZDUzZWZjYTllYjY2MDA1NjFjMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBEZWMgMjcgMTE6MjU6NDMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzNDMzODQ2OiBGaXggZm9yIHVzZSB3aXRoIHB5dGhvbiAyLjQKKworY29tbWl0IGY5OGE1NGE5OWNhZjdiNDZiMTAwYTkyMGRiOTQyY2JjYTljNDM5MjYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgRGVjIDI3IDEwOjEwOjM2IDIwMTEgKzAwMDAKKworICAgIFNraXAgU0VULWJhc2VkIHRlc3RzIHdoZW4gY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zZXQtc3VwcG9ydAorCitjb21taXQgYzEzOWNhMTIzYjQ0YmIzYjliNmJmOTIxZTE2MDljYzQ1ZjYzYTY2MAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6NTU6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1OTogRml4IHNwYXJzZWx5IGF1Z21lbnRpbmcgdHJpZ2dlciB0YWJsZXMKKyAgICBQYXRjaCBwcm92aWRlZCBieSBTdGVwaGVuIFR1cm5lcgorCitjb21taXQgYzRhZTAyMWIyZTYzODQ0MzcwODFjNTYyM2YzNjBjODg5NjM5MDE4OAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFNhdCBEZWMgMjQgMTY6Mjk6NTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVMgMzQxMDA1MDogU2tpcCBhbHJlYWR5LSdwcm9jZXNzZWQnIHZhcmJpbmRzCisgICAgQmFzZWQgb24gbWliMmMgcGF0Y2ggcHJvdmlkZWQgYnkgU3RlcGhlbiBUdXJuZXIKKworY29tbWl0IGM2YWNjZjhjNjYyNTRmYThjNDg3NjdlZDdkZWM3OTVkZGFmYzUyMmUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBTYXQgRGVjIDI0IDE2OjI3OjExIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTIDM0MTAwNTA6IFNraXAgYWxyZWFkeS0ncHJvY2Vzc2VkJyB2YXJiaW5kcworICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gVHVybmVyCisKK2NvbW1pdCBhNjE4MjZhZDhjYTU0NjYxZDFkOTA5NzEyNTAzYmQzYThiMzJlZWQwCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgRGVjIDIyIDE4OjM1OjQ2IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGUuCisgICAgCisgICAgbXlNYXRjaCBpcyB1bnVzZWQgYXMgbm1hdGNoIGlzIHplcm8gYW5kIGFsc28gc2luY2UgcmVnZXhCdWZmZXIgaXMgY3JlYXRlZAorICAgIHdpdGggUkVHX05PU1VCIHNldC4KKworY29tbWl0IGJhNGZjODBmZTJjZmQ1YTVkODkyMzBkOGYzNzAzZTRmZTAxZTYwMTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgRGVjIDIyIDE5OjI0OjQwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBQQVRDSCAzNDAyMzc2OiBmcm9tIExlb25hcmRvIENoaXF1aXR0bzogUmVjb2duaXNlIFJlaXNlckZTCisgICAgQWxzbyBtb3ZlIHZhcmlvdXMgRlNUeXBlIGRlZmluaXRpb25zIHRvIHRoZSBhcHByb3ByaWF0ZSBibG9ja3MKKworY29tbWl0IGI1YWM0YTA0ZGNkNTQ3MGQwOGQwMzMyMWFiY2QxZTk4MjYyMWU2ZTAKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IDJiMzdlNGU4ZjI1MGEwZDg4MjExOTlhNzRhYzNmNGU1YjdiN2JhYmEKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjMxOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVudGVybWluYXRlZCBzdHJpbmdzIGFmdGVyIHN0cm5jcHkKKworY29tbWl0IGNkODU5YWQ1MWM0ZjE4ZDViMGZjNjlkZDY2OWZjYjA1MWM3OTg5NjkKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgRGVjIDIyIDE0OjM5OjMzIDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHdyb25nIG1lbW1vdmUgc2l6ZQorCitjb21taXQgMzBmZjU4ZDA5ZDRjOWQ1NDM4YmI2MjEwNTRmZDdhZDdhMmE1OTdlNAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBEZWMgMjIgMTQ6MDc6MTkgMjAxMSArMDEwMAorCisgICAgRml4ZWQgd3JvbmcgbGVuZ3RoIG9mIGJ1ZmZlciB3aGVuIHByaW50aW5nIEFTTl9CSVRfU1RSCisKK2NvbW1pdCA2YzE0ODdlMWQzNjBkM2QyNjBhMzljYjFmNWIxNWRhOTc4Mzk1MDUzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNTo0NzozNCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwb3RlbnRpYWwgZnJlZSBvZiB1bmluaXRpYWxpemVkIHBvaW50ZXIgaW4gZXJyb3IgY2FzZXMKKworY29tbWl0IGM3NmZiOTZmNjVlMzNiYTJmZDIxMmE5MjFlOGMzODYxNTVlZTVjN2EKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE1OjQ0OjQ2IDIwMTEgKzAxMDAKKworICAgIEZpeGVkIHVuaXRpYWxpemVkIHZhbHVlcyBpbiB1ZHBUYWJsZQorCitjb21taXQgYzQ0NjA4Njc5Yjg5NzUxMTc2ZjI4YTJlNTRkNTI4MmI0NmUyYTA1YworQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBEZWMgMjEgMTQ6NTY6MTMgMjAxMSArMDEwMAorCisgICAgVXNlIGNhbGxvYyBpbnN0ZWFkIG9mIG1hbGxvYyBhbmQgbWFudWFsIGNsZWFyaW5nCisKK2NvbW1pdCBhMDVjNWY5NTEzNDYxODI0ZTc5MDNhZTlhZTlhNmMzMzg2ZTMzODc5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxNDo0MDo1MCAyMDExICswMTAwCisKKyAgICBGaXhlZCBwcmludGluZyBvZiB1bml0aWFsaXplZCB2YXJpYWJsZSB3aGVuIHNlbnNvcnNfZ2V0X2xhYmVsKCkgZmFpbHMKKworY29tbWl0IGU0YTVlZGM3MjM5M2JkM2RlOWJmMTJiY2ViYTlkODNiYmY3ZGU3MGIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgRGVjIDIxIDE0OjMxOjI1IDIwMTEgKzAxMDAKKworICAgIFJlbW92ZWQgdW51c2VkIHZhcmlhYmxlCisKK2NvbW1pdCBmYWUyZTViODM1YjhkZjFlYWU0N2U0Y2ViYjRlYjQwNGQ3MjgyMzc3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzozMToyMSAyMDExICswMTAwCisKKyAgICBGaXhlZCBkZXJlZmVyZW5jaW5nIHVuaXRpYWxpemVkIGlpZCBpbiBlcnJvciBjYXNlcyBhbmQgd2l0aCBkZWJ1ZyBpbmZvIGVuYWJsZWQuCisKK2NvbW1pdCAwYmM4YzA4ZWRlYWU3YWUwOTVmMTE2MjU4YzIwYWU1NzY3ZDYwNjUyCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIERlYyAyMSAxMzoyMDo1MiAyMDExICswMTAwCisKKyAgICBGaXhlZCByZXR1cm5pbmcgdW5pbml0aWFsaXplZCB2YXJpYWJsZSAnc3RhdHVzJyB3aGVuIHNzID09IE5VTEwKKworY29tbWl0IGRlOTI1MGQ5ZGFlOTcyN2E2Y2M3ZjY0NzY4OGRkZGYxYjg1OTcxMjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAxMTo1ODowNCAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTWFrZSBzcHJpbnRfbWliX29pZCgpIHRyZWF0IE9JRCBjb21wb25lbnRzIGFzIHVuc2lnbmVkIGluc3RlYWQgb2Ygc2lnbmVkIGludGVnZXJzCisKK2NvbW1pdCAwZTMzYjNiNmQ1ODU0YTRiYWMxNWQ0ZWE1ZTAxNmM1M2QxNjFkMGNkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDggMTA6MDI6MjggMjAxMSArMDEwMAorCisgICAgRml4IHJlY2VudGx5IGludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MKKworY29tbWl0IDczYzllZTQyZDI4YWZlMmUxMDdhN2Q2NjE2YjZkMDExODkwYzM2ZWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBEZWMgOCAwOTowOTo1OSAyMDExICswMTAwCisKKyAgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcworCitjb21taXQgM2RiOTc5NjJiMzdlYjEyZDI1NGQ2MWU2YmUyMzRiMDZhMzkxYzhiYgorQXV0aG9yOiBCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4KK0RhdGU6ICAgVGh1IERlYyA4IDA3OjQzOjQ1IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzNDUzODY4OiBmcm9tICJCaWxsIEZlbm5lciA8ZmVubmVyQGdtYWlsLmNvbT4iOiBGYWN0b3IgY29tbW9uIGNvZGUgaW50byBwYXNzX2NvbW1vbgorICAgIAorICAgIE1vdmUgdGhlIGNvZGUgZm9yIHBvcm1hdHRpbmcgYW5kIHByaW50aW5nIHZhbHVlcyBmcm9tIHBhc3MgYW5kIHBhc3NfcGVyc2lzdAorICAgIGludG8gcGFzc19jb21tb24uCisKK2NvbW1pdCA3ZjA1ZGFhOGUwZTBmNTMzYjBmMTJhM2UxY2YwNzY0MTUxOTkwOWQ2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTE6NTg6MzIgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogQlVHOiAzNDQ0OTM5OiBCVUc6IDE3OTY4ODY6IHNubXBsaWI6IEF2b2lkIHRoYXQgc3ByaW50X3JlYWxsb2Nfb2N0ZXRfc3RyaW5nKCkgZW1iZWRzIHVucHJpbnRhYmxlIGNvbnRyb2wgY2hhcmFjdGVycyBvciBiaW5hcnkgemVyb2VzIGluIGl0cyBvdXRwdXQuIFRoaXMgYmVoYXZpb3IgY291bGQgY2F1c2UgdHJ1bmNhdGVkIG91dHB1dCBpbiBzbm1wdHJhcGQuCisKK2NvbW1pdCBkYjhmNTU4ZmQyZjNiN2MxMDllYTNhMWMyMTMzYjc1YjZmOGNiMmFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgRGVjIDEgMTA6MDQ6NDEgMjAxMSArMDEwMAorCisgICAgQ29tcGlsZXIgd2FybmluZyBmaXg6IHBhc3MgdW5zaWduZWQgY2hhcnMgdG8gaXNwcmludCgpIGluc3RlYWQgb2Ygc2lnbmVkIGNoYXJzLgorCitjb21taXQgODAwZGMxMDI4ZTdlMGNkOGNjMTRkODRkZDMxNzIzZDQ3YWMwNzNkYgorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgVGh1IERlYyAxIDEwOjE4OjU4IDIwMTEgKzAxMDAKKworICAgIFJlZHVjZSB0aGUgc2NvcGUgb2YgdGhlIGhpbnQgdmFyaWFibGUKKworY29tbWl0IDgzZWE0YTA4MGM5MGE3NGI5NzQzZDNmMjRjZjBkNGI4YTFlOGM4NDkKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBOb3YgMjcgMjE6MTY6NTIgMjAxMSArMDEwMAorCisgICAgUmVkdWNlIHRoZSBzY29wZSBvZiB0aGUgdmFyaWFibGUgcW9zCisKK2NvbW1pdCA3YjllMDM0NDFjM2RjM2EwNzY3MGVkMDFmNWQwNDc5MWE4MmM3NTBjCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjA0OjAxIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSAjZGVmaW5lIHZhbCh4KSBfX1NUUklORyh4KSBhbmQgY2hhbmdlIHZhbCh4KSBpbnRvIF9fU1RSSU5HKHgpLgorCitjb21taXQgMmYzNzliMGU0ZWNhZGZhNGU1NDFlMzAwNWM4ZmM4MjgxODgyYjc0MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNTo1ODo0NyAyMDExICswMTAwCisKKyAgICBGb2xsb3ctdXAgZm9yIGNvbW1pdCAxYWE3MDRlOiB1bmJyZWFrIHRoZSBNU1ZDIGJ1aWxkCisKK2NvbW1pdCA2NGVmMGY3MTEyNzYxNzgzNzAyN2ZiMmNmYWYxNzRiOTViYTc5ZTBkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjE5OjUwIDIwMTEgKzAxMDAKKworICAgIEFkZCBTTk1QOjpyZWdpc3Rlcl9kZWJ1Z190b2tlbnMoKQorCitjb21taXQgN2JlYWQ5Y2E5MTdjNjc1NjZkNWVkOThhYjUwN2JiYzAyODE2MjE3ZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgV2VkIE5vdiAzMCAxNDowODowOCAyMDExICswMTAwCisKKyAgICBBZ2VudFggc3ViYWdlbnQ6IFJlZHVjZSBjb2RlIGR1cGxpY2F0aW9uCisKK2NvbW1pdCAwZWQ3MTU0MWY4N2U3ZDc4YmM5OThlZWJkYTMyMTdjNTllMWRmODMwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAzOjE5IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEFkZCBEb3h5Z2VuLXN0eWxlIGZ1bmN0aW9uIGhlYWRlciBmb3IgbmV0c25tcF9yZWdpc3Rlcl9kZWZhdWx0X3RhcmdldCgpIGFuZCBuZXRzbm1wX2NsZWFyX2RlZmF1bHRfdGFyZ2V0KCkuCisKK2NvbW1pdCA4YzI5NzJiNjFlNDAxNjliNDdjNTA5ODhiNmFlOWU4YzI4NWY4NGY4CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBXZWQgTm92IDMwIDE0OjAyOjU0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHBlcmw6IEZpeCBzcGVsbGluZyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiB0aGUgU05NUCBtb2R1bGUKKworY29tbWl0IDgyZTM5ZmI2NzA2ZGY5MGVjZjJmYzllMTBhZGEyYjk2MmVlMTk2ZjMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUdWUgTm92IDI5IDEyOjI3OjQ2IDIwMTEgKzAwMDAKKworICAgIEZpeCBtdWx0aS1saW5lIGNhc2UgdGVzdGluZyBvZiBpbmNvbWluZyBPSUQKKworY29tbWl0IDg4NjdmZDFkY2ZlNzJiNTlkMDczMjJmZjM4YTY5OWI2NmVjNGYzMjYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBOb3YgMjIgMDk6NDQ6MzggMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogTWFrZSBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoKSByb2J1c3QgYWdhaW5zdCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlcy4KKyAgICAKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIE5FVFNOTVBfTEFSR0VfRkRfWkVSTygpIHVzZSBtZW1zZXQoKSBvbiBVbml4IHN5c3RlbXMgaW5zdGVhZCBvZiBhbiBleHBsaWNpdCBsb29wLgorICAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2Ugc3VyZSB0aGF0IG9uIFVuaXggc3lzdGVtcyBuZXRzbm1wX2xhcmdlX2ZkX2NscigpIGRvZXNuJ3QgdHJ5IHRvIHJlYWQgbWVtb3J5IGl0IGlzbid0IGFsbG93ZWQgdG8gcmVhZCBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBzbm1wbGliOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KCkgcmV0dXJuIGZhbHNlIG9uIFVuaXggc3lzdGVtcyBpZiB0aGUgZmlyc3QgYXJndW1lbnQgZXF1YWxzIC0xIChhIHZhbHVlIHRoYXQgc2hvdWxkbid0IGJlIHBhc3NlZCBieSB0aGUgY2FsbGVyKS4KKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBNYWtlIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZSgpIHNocmluayBiZWhhdmlvciBjb3JyZWN0LgorCitjb21taXQgODBlZTQwMjJlNTM0ZTY0YWFkNWE1ZjI3MTkyODQzYjQyYWNiODVlMAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU2F0IE5vdiAxOSAwOToxNDowMiAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAzNDM5MjM0OiBNb3ZlIG5ldHNubXBfcGFzc19zdHJfdG9fZXJybm8gdG8gcGFzc19jb21tb24gYW5kIHJlbmFtZSBpdCB0byBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vCisKK2NvbW1pdCAwYmFhOTI5NmMwNzJiYjM3MzU3NjBiMGRkOTkyZjJkMWQzY2EyN2ZhCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTYXQgTm92IDE5IDA5OjA1OjI0IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDM0MzkyMzQ6IENvcnJlY3QgdGhlIGRlcGVuZGVuY2llcyBvZiB1Y2Qtc25tcC9wYXNzIGFuZCB1Y2Qtc25tcC9wYXNzX3BlcnNpc3QKKworY29tbWl0IDFhYTcwNGU0YTI5NDQzMGIyOGUzOWI2ZjllNDY4M2I4YTQ4YmNlMDQKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDg6MzU6MjEgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEZhY3RvciBvdXQgYXNjMmJpbiBhbmQgYmluMmFzYy4gQWRkIGEgbmV0c25tcF9pbnRlcm5hbF8gcHJlZml4IHRvIHRoZW0KKworY29tbWl0IGNkYThmZTkxMDEzZjEyY2JmNjRhMDc3NWFiYjU1NzIwMDM1YWY5MzEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBOb3YgMTkgMDA6NTU6MjQgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IENhbGwgc25tcF9vaWR0cmVlX2NvbXBhcmUgaW5zdGVhZCBvZiBzbm1wX29pZF9taW5fY29tcGFyZQorICAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgc25tcF9vaWRfbWluX2NvbXBhcmUgc2luY2UgaXQgaXMgaW50ZXJuYWwgYW5kIHVudXNlZAorCitjb21taXQgYjg4MTg0MWJkMDQ5M2RkNzFkNjMyNTliZGRlZDQ0OWIwNmYwMmMzMgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAyMzozMDozMyAyMDExICswMTAwCisKKyAgICBGaXggc2l6ZV90L2ludCBtaXNtYXRjaGVzCisKK2NvbW1pdCBjYTI5NGNmNzViYmM4ZTkwZGJmNDRlZTQwNDc4OTM1ZTkxZGIxNDg3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE4OjAzIDIwMTEgKzAxMDAKKworICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCisKK2NvbW1pdCA4ODMxMzZjMmIyZmEwNzM5ZjQzN2E4Y2ZiNjYxNGFjY2M3NmUyNjhlCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIzOjE1OjU4IDIwMTEgKzAxMDAKKworICAgIE1vcmUgbmVlZHMgZm9yIE5FVFNOTVBfUFJJbyBmb3JtYXQgc3BlY2lmaWVyCisKK2NvbW1pdCA0YmQwMzUyOTU1YTI1NTFiZmUwMjMwOGRkMTM0YjkxMjhjOThiOWU5CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU5OjM2IDIwMTEgKzAxMDAKKworICAgIEZpeCBwYXJhbnRoZXNpcyBwcm9ibGVtCisKK2NvbW1pdCBmZTYyNjliMTkwMGNmNDRkYzI3YTE5OWE3NjFkMTVhMDFjM2YzMDkyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDIyOjU4OjM0IDIwMTEgKzAxMDAKKworICAgIEZpeCBzaXplX3QvaW50IG1pc21hdGNoZXMKKworY29tbWl0IDM5MGMwMTE0YzhlYzBiZGIyN2IwOGI2Zjc0ZTNmNmVmM2E2Mjk4MWIKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBOb3YgMTYgMTM6Mzc6NDkgMjAxMSArMDEwMAorCisgICAgRml4IGZvcm1hdCBzcGVjaWZpZXJzIHRvIGF2b2lkIHdhcm5pbmdzCisKK2NvbW1pdCAwZTg2Yzc4MWYzOTg5YmYwMjJjODk5M2ExMTg2MTdiNzRhNzU0MjBjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTm92IDE2IDA5OjE3OjE5IDIwMTEgKzAxMDAKKworICAgIG1lbW9yeV9saW51eDogZ2V0IFNobWVtIGZyb20gL3Byb2MvbWVtaW5mbyBmb3IgMi42IChvciBuZXdlcikga2VybmVscworCitjb21taXQgYmYyNjRkMTVkZWQ3YWNiYmYyZTM4NzFiOThmZDFmY2VmNDNkOWVjMworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNjoxNiAyMDExICswMTAwCisKKyAgICBtZW1vcnlfbGludXg6IGNsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucworCitjb21taXQgNTdmZjhhNDBiYWU1ZDliY2FkMTYwODkxNDJhOWNmMzI4YzlmYTFmNQorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiAxNiAwOToxNDo1NyAyMDExICswMTAwCisKKyAgICBkaXNtYW4vcGluZywgZGlzbWFuL3RyYWNlcm91dGU6IENsb3NlIHNvY2tldHMgaW4gZXJyb3Igc2l0dWF0aW9ucworCitjb21taXQgNDM0YmZjMWY3NDU3NTUwYjZmODdkNWJjZDUxMTI3NmIyNzBiNTk2NAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBOb3YgMTQgMTE6MjI6NTMgMjAxMSArMDEwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gTWFydGluIFdpbGNrOiBmaXhlZCBzbm1wZCBjcmFzaGluZyB3aXRoICdzZWxlY3Q6IGJhZCBmaWxlIGRlc2NyaXB0b3InLgorICAgIAorICAgIE9uIDMyLWJpdCBzeXN0ZW1zLCBzbm1wZCBkaWVzIHdpdGggYWZvcmVtZW50aW9uZWQgbWVzc2FnZSB3aGVuIHVzaW5nIGZpbGUgZGVzY3JpcHRpb25zID4gMzIsIGUuZy4gd2hlbiBoYXZpbmcgPjMyIEFnZW50WCBzdWJhZ2VudHMuCisKK2NvbW1pdCBlYWNhNzk4M2UzNjU1YWI2OTZmY2M0NDYxY2EwY2VkYmFjNmNlNjlhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTm92IDExIDE5OjAwOjEyIDIwMTEgKzAxMDAKKworICAgIE5ldEJTRC02OiBPbmUgbW9yZSBpbnN0YW5jZSBvZiB0aW1lc3BlYyByZXBsYWNpbmcgdGltZXZhbAorCitjb21taXQgMzc4ZmZlZDAzYmE3OWE4MzQ2ZDZjNjI3ODFlMmRkZjVjZTkyYTQ3OAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE5vdiAxMSAxODo1NTo0MyAyMDExICswMTAwCisKKyAgICBGaXggYnVnICMzNDM2NTI4OiBzd2luc3RfcGtnaW5mbzogcmVjb3ZlciBmcm9tIE5VTEwgcmV0dXJuIGZyb20gb3BlbmRpcgorCitjb21taXQgYTk0YTE3OWQ5MzQwZjUxZmE3YzIzNDMxNjMwYmMwZmZkNmQ3NTllOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE5vdiA5IDIwOjMwOjUxIDIwMTEgKzAxMDAKKworICAgIEZpeCBidWcgIzM0MzM2MTY6IGRvbnQgdHJlYXQgRGF0ZUFuZFRpbWUgYXMgYSBzdHJpbmcKKworY29tbWl0IDJlN2U5ZWRhMGIwZDYyYTc2NDVhOWE4ZjcwZWYzZmI2ZjNkZDY5NDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBOb3YgMyAxMToxNzo0OCAyMDExICswMTAwCisKKyAgICBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZSB3YXJuaW5ncy4KKworY29tbWl0IDM0NjJlYmNkZDBiN2MyOThjYjE1YzMwOTk3MzZmNGY5NTIyNTc4NDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBPY3QgMjggMTY6MDc6MTUgMjAxMSArMDIwMAorCisgICAgUmVtb3ZlIHRob3NlIHN1cGVyZmx1b3VzIHBhcmVudGhlc2VzIHRoYXQgdHJpZ2dlciBhIGNsYW5nIHdhcm5pbmcuCisKK2NvbW1pdCAzZTVmZWRkM2U3ZDFlZjMxNjgzNjA0YmY3M2RjNTZlOTQ0Y2FkMzQ5CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE5vdiAzIDA5OjQ1OjI3IDIwMTEgKzAxMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBVQ0QtU05NUC1NSUI6OnN5c3RlbVN0YXRzIGFmdGVyIDMwIGRheXMgb2YgdXB0aW1lLgorICAgIAorICAgIEFmdGVyIDMwIGRheXMsIHZhbHVlcyBmcm9tIC9wcm9jL3N0YXQgKG9uIExpbnV4KSBjYW4gZ2V0IGJpZ2dlciB0aGFuIDMyYml0cyBhbmQgc25tcGQgY2FsY3VsYXRpb25zIG1pZ2h0IHJlbmRlciBjb3VudGVycyBsaWtlIHNzQ3B1VXNlciBuZWdhdGl2ZSBvciB6ZXJvLCB3aGlsZSB0aGUgcmVhbCB2YWx1ZSBpcyBoaWdoZXIuIFRoZXJlZm9yZSB0aGUgY291bnRlcnMgc2hvdWxkIGJlIHRyYWNrZWQgYXMgdGhlIGxhcmdlc3QgaW50ZWdlciBhdmFpbGFibGUuCisKK2NvbW1pdCAyODAxYTIxMzlmMjcwMjFlMWFiMTVlMzYyZTJkM2Q2MjRmZmFhNDk0CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gT2N0IDMxIDIyOjU1OjUzIDIwMTEgKzAxMDAKKworICAgIFBhdGNoICMzNDA2MzY0OiBGaXggdW5zdGFibGUgZGF0YSBmb3IgTmV0QlNELgorCitjb21taXQgMzQ5NTkxZDAzZTE3YTU1YjQzZWFjYzZhNjg3YjAyZmQ4ZDRlOTUyOAorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgTW9uIE9jdCAzMSAwODo1OTozNyAyMDExICswMTAwCisKKyAgICBDSEFOR0VTOiBwZXJsOiBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHBlcmwgc3VwcG9ydCB3aXRob3V0IHN1cHBvcnQgZm9yIG9wYXF1ZSB0eXBlcy4KKworY29tbWl0IDZkMjY5MThhZjU1YWEzNjYyYTcyMDU0MmRlNzdiYmYzOWIwYTNlOTEKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMjkgMDg6MzQ6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IERpc2FibGUgdGhlIHN1cHBvcnQgZm9yIGludGVnZXI2NCBpbiBwYXNzIHNjcmlwdHMgaWYgY29tcGlsaW5nIHdpdGhvdXQgb3BhcXVlLXNwZWNpYWwtdHlwZXMuCisKK2NvbW1pdCAyOWJmNjlkNzA0MjRmMzU5ZDljODdmMDdhOTY0YTA5OTQxNTY0OWE1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDEwIDEzOjAyOjI1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZF9zcWw6IEF2b2lkIHRoYXQgYSBsaW5rZXIgZXJyb3IgaXMgdHJpZ2dlcmVkIG9uIHN5c3RlbXMgd2hlcmUgbXlfcHJvZ25hbWUgaXMgbWlzc2luZyBpbiBsaWJteXNxbGNsaWVudCAoZS5nLiBGZWRvcmEgMTUgYW5kIDE2KS4KKyAgICAKKyAgICBUaGlzIGlzIGEgYmFja3BvcnQgb2YgY29tbWl0IDlmNjUzZjcuCisKK2NvbW1pdCAxMzk1MmY2YmVlOWY0MDg4NjdhYjZkMmZkZmRkZTRmMjg0MDc0OTU3CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE9jdCAyNiAxNDowNToxNiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBmcm9tIFNpZGRoZXNoIFBveWFyZWthcjogcHJvcGVybHkgY2xlYW4gdXAgb2xkIHJlcXVlc3RzIGluIGEgc3ViYWdlbnQgd2hlbiB3ZSByZWNvbm5lY3QgdG8gbWFzdGVyLgorICAgIAorICAgIEFuIHNubXAgc3ViYWdlbnQgbGlua2VkIGFnYWluc3QgbmV0LXNubXAtbGlicyBtYXkgY3Jhc2ggaWYgaXQgaGFuZGxlcyBhCisgICAgcmVzcG9uc2Ugd2hpY2ggaGFzIG1hZ2ljIHJlZmVycmluZyB0byBhbiBvbGRlciBkaXNjb25uZWN0ZWQgbWFpbiBzZXNzaW9uLiBUaGlzCisgICAgbWF5IGhhcHBlbiB3aGVuIHRoZSBzdWJhZ2VudAorICAgIGF0dGVtcHRzIHRvIGNsZWFuIHVwIG9sZCByZXF1ZXN0cyBvbiByZWNvbm5lY3Rpb24gb2YgdGhlIGRpc2Nvbm5lY3RlZCBtYXN0ZXIKKyAgICBzZXNzaW9uLgorCitjb21taXQgYWUwNTI0NzJiMjI3MjBkMDgzNjllODUxMjdkYjIxNDI0NWRmMmUzZgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBPY3QgMjUgMTY6MTU6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogZml4ZWQgc2VnbWVudGF0aW9uIGZhdWx0IHdoZW4gaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbHMuCisgICAgCisgICAgV2hlbiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIgZmFpbHMsIGl0IGZyZWVzIGl0cyByZWdpbmZvIC0+IG5zYWhyX0RFU1RST1kgKGFuZCBhbnkgb3RoZXIgZnVuY3Rpb24pIG11c3Qgbm90IGRlcmVmZXJlbmNlIGl0LgorCitjb21taXQgYzE5OWJmOTFiNjIzOWYyNmIyYWFiMzRlODU3NWUwZjBkZjljZGU5YgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBPY3QgMjQgMTQ6MjU6MjggMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHhmcywgamZzIGFuZCB2eGZzIGZpbGVzeXN0ZW1zIGFyZSBub3cgcmVjb2duaXplZCBpbiBoclN0b3JhZ2VUYWJsZQorCitjb21taXQgNzQ3ZmRjNzFlNjRkMDllMDgwOTI4ZWJiYjRkMDRjYmRlMzkwNjc5OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBPY3QgNSAxNTo1Nzo1OSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogTG93ZXJlZCBzZXZlcml0eSBvZiAnZXJyb3IgZmluZGluZyByb3cgaW5kZXggaW4gX2lmWFRhYmxlX2NvbnRhaW5lcl9yb3dfcmVzdG9yZScgbWVzc2FnZS4KKyAgICAKKyAgICBUaGUgbWVzc2FnZSBpcyBzaG93cyB1cCB3aGVuIHNubXBkIGlzIHN0YXJ0ZWQgYW5kIHRoZXJlIGlzIGRpZmZlcmVudCBzZXQgb2YgbmV0d29yayBpbnRlcmZhY2VzIHRoYW4gaXQgd2FzIHdoZW4gc25tcGQgd2FzdCBsYXN0IHN0b3BwZWQuIFRoaXMgaXMgY29tbW9uIG9uIHBwcC1zZXJ2ZXJzIG9yIHZpcnR1YWwgaG9zdHMuCisKK2NvbW1pdCBjMTFhZGFhMTI5MTVhYmZlZTYyOWJiNmMwMjZjMjFmMjE4NWIyMTZlCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gT2N0IDE3IDEwOjI0OjQ2IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBBdm9pZCB0aGF0IGNvbXBpbGluZyB0aGUgaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiB3aXRoIHRoZSBNaW5HVyBnY2MgY29tcGlsZXIgdHJpZ2dlcnMgd2FybmluZ3MgYWJvdXQgInByYWdtYSBjb21tZW50Ii4KKworY29tbWl0IGIxN2E3MmE3OTM0ODNhZWU0YTViYjJmMmUyYzdmNGZkODY5ODE3ZTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTcgMTA6MjI6MjAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEF2b2lkIHRoYXQgdGhlIFBBQ0tBR0VfKiBtYWNyb3MgZGVmaW5lZCBpbiA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhdXNlIHRyb3VibGUgd2hlbiBpbmNsdWRpbmcgdGhpcyBoZWFkZXIgaW4gYSBwYWNrYWdlIHRoYXQgdXNlcyB0aGUgR05VIGF1dG90b29scy4KKworY29tbWl0IDIxMWRjYjQ5MzA2NTYxZTM1YmEzYzIxM2JlN2NmYTI1N2I0MGE4ZTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBPY3QgMTAgMTU6NTI6NDMgMjAxMSArMDIwMAorCisgICAgQXZvaWQgdGhhdCBnY2MgNC42IGNvbXBsYWlucyBhYm91dCBzZXQgYnV0IG5vdCB1c2VkIHZhcmlhYmxlcworCitjb21taXQgNGM4M2I5MjI5YTc0NTRmMzRmNmZmNzVmNjllNjdlNDAzMGM0MTliNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIE9jdCA3IDE1OjU4OjQ1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IFNldCB0aGUgcnBhdGggZm9yIGxpYnBlcmwuc28gaW4gbGlibmV0c25tcG1pYnMuc28gc3VjaCB0aGF0IHRoZSBkeW5hbWljIGxpbmtlciBjYW4gZmluZCBsaWJwZXJsLnNvIHdpdGhvdXQgcmVxdWlyaW5nIHRoZSB1c2VyIHRvIG1vZGlmeSB0aGUgZHluYW1pYyBsaW5rZXIgc2V0dGluZ3MuCisgICAgCisgICAgVGhpcyBjaGFuZ2UgaW4gYWdlbnQvTWFrZWZpbGUuaW4gaXMgbmVjZXNzYXJ5IG9uIHRoZSA1LjUgYnJhbmNoIGFuZAorICAgIGxhdGVyIGJ1dCBub3Qgb24gdGhlIDUuNCBicmFuY2guIFRoYXQgaXMgYmVjYXVzZSB0aGUgNS40IGJyYW5jaCB1c2VzCisgICAgYW4gb2xkZXIgdmVyc2lvbiBvZiBsaWJ0b29sIHRoYXQgcHJvcGFnYXRlcyB0aGUgcnBhdGggb2YgZGVwZW5kZW50CisgICAgbGlicmFyaWVzLiBUaGlzIGlzIGNhbGxlZCBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY3kgdHJhY2tpbmcgaW4gdGhlCisgICAgbGlidG9vbCBtYW51YWwuIFRoaXMgZnVuY3Rpb25hbGl0eSBpcyBwcmVzZW50IGluIGxpYnRvb2wgdmVyc2lvbiAxCisgICAgYnV0IG5vdCBpbiBsaWJ0b29sIHZlcnNpb24gMi4gRm9yIG1vcmUgYmFja2dyb3VuZCBpbmZvcm1hdGlvbiBhYm91dAorICAgIGR5bmFtaWMgbGlicmFyaWVzIGFuZCBycGF0aHMsIHNlZSBhbHNvIHRoZSBkb2N1bWVudCB3aXRoIHRoZSB0aXRsZQorICAgICJScGF0aElzc3VlIiBvbiB0aGUgRGViaWFuIHdpa2kgKGh0dHA6Ly93aWtpLmRlYmlhbi5vcmcvUnBhdGhJc3N1ZSkuCisKK2NvbW1pdCA4NjYwMzNkYjk5MDRmZmIxMjAzZjI4M2Y4MzgwOTJlNGNmNjhkZTZiCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBUaHUgT2N0IDYgMDc6MzM6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFJlbW92ZSBzcHVyaW91cyAjZW5kaWYgdGhhdCBzZWVtcyB0byBiZSB0aGUgcmVzdWx0IG9mIGEgbWlzbWVyZ2UuCisKK2NvbW1pdCA5OTU2NDdjMGNmZTAwNDEyMjYyY2M1Nzk3YmRmYWU5ZDAwYjcwYzc2CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTU6NDQ6MzYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJlbW92ZSB0aGUgdXNlIG9mIC1MIGZsYWdzIGZvciBpbnRlcm5hbCBsaWJyYXJpZXMgYXMgaXQgY29uZnVzZXMgbGlidG9vbC4KKworY29tbWl0IDkzZGMxMjM1YTBkYjU4ZmZkMjk2MTdjZmYwMGRjMTEyNjM3ODAyMDIKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFN1biBPY3QgMiAxMTozMTo0NiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogTWFrZSBtYWtlIGFwcHMgd29yayBhZ2FpbgorICAgIAorICAgIGFwcHMgaW5jbHVkZSBzbm1wdHJhcGQgYW5kIHRoYXQgcmVxdWlyZSB0aGUgYWdlbnQgbGlicmFyaWVzIGFzIHdlbGwuCisKK2NvbW1pdCBiYTQxNDg4ZWQ0NGNkMjNjMjU5NjNkNGZjNTZjNDc2ODUzYjJhYjU5CitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gT2N0IDIgMTE6Mjk6MzMgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IFdoZW4geW91IHNheSBtYWtlIGxpYnMgeW91IGV4cGVjdCBhbGwgdGhlIGxpYnMgdG8gYmUgYnVpbHQuCisgICAgCisgICAgVGhpcyBpcyBkZW1vbnN0cmF0ZWQgYnkgdGhlIHNubXB0cmFwZCB0YXJnZXQgYXQgdGhlIHRvcCBsZXZlbCB3aGljaCBvYnZpb3VzbHkKKyAgICBleHBlY3RlZCBib3RoIGxpYnMgdG8gYmUgYnVpbHQgYW5kIHNvIGZhaWxlZCB0byBjb21waWxlIGJlZm9yZSB0aGlzIHBhdGNoLgorCitjb21taXQgMzA1N2M3M2UwOTM0NzNiZTQ2MjU0YmNkZmI0Y2E3ODhlNDMyZDFiOAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBTZXAgMzAgMDc6MzI6NTIgMjAwOCArMDAwMAorCisgICAgTkVXUzogYnVpbGRpbmc6IFBBVENIOiAyMDkxMTU2OiBjb3JyZWN0bHkgZGVjbGFyZSBkZXBlbmRlbmNpZXMgaW4gTWFrZWZpbGUuCisgICAgJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCisgICAgCisgICAgQmFja3BvcnQgdGhpcyB0byBWNS00IGFzIGl0IGlzIG5lZWRlZCBmb3IgY29ycmVjdCBvcGVyYXRpb24gaW4gdGhlIHNpbmdsZQorICAgIHRocmVhZGVkIGNhc2Ugb2YgbWFrZSBtaWJsaWIgYXMgd2VsbC4KKworY29tbWl0IDZlYWUzNDBmYTJhNjQwODY1OTI5ODJjYzUyNzM1YmMwMTQ4N2Q5NzgKK0F1dGhvcjogTWFnbnVzIEZyb21yZWlkZSA8bWFnZnJAbHlzYXRvci5saXUuc2U+CitEYXRlOiAgIFNhdCBPY3QgMSAxOTozMzo1MCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogU2lsZW5jZSBsaWJic2QgMC4zLjAgbmFnZ2luZworICAgIAorICAgIElmIHlvdSBoYXZlIGxpYmJzZCAwLjMuMCBpbnN0YWxsZWQgdGhlbiB0aGVpciB2ZXJzaW9uIG9mIG5saXN0Lmggd2FybnMgYW5kCisgICAgdHJpZXMgdG8gbWFrZSB5b3UgaW5jbHVkZSBic2Qvbmxpc3QuaCBpbnN0ZWFkLiBUaGUgcHJvYmxlbSBpcyB0aGF0IHdlIGRvbid0CisgICAgbmVlZCB0aGF0IGNvbXBhdGliaWxpdHkgbGlicmFyeSBhcyB3ZSBrbm93IGhvdyB0byBkbyBpdCBvdXJzZWxmIHNvIGl0IGJlY29tZXMKKyAgICBwdXJlIG5hZ2dpbmcuIFRoaXMgcGF0Y2ggYWRkcyBhIGRlZmluZSB0aGF0IGNoYW5nZXMgdGhlIHdhcm5pbmcgaW50byBhbgorICAgIGVycm9yIGFuZCB0aGVuIGZpZ3VyZXMgb3V0IHRoYXQgdGhlcmUgaXMgbm8gdXNhYmxlIG5saXN0LmggYW5kIGlnbm9yZXMgaXQKKyAgICBmb3IgdGhlIGZ1dHVyZS4KKworY29tbWl0IDg0OGY2MzAwZWZlMzg0OTJmYjQ1NDQ1MWEwMzBmMGI3ZTZmZjhjOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBTZXAgMzAgMTA6NDE6NDQgMjAxMSArMDIwMAorCisgICAgcGVybC9TTk1QL1NOTVAueHM6IFVwZGF0ZSBlbWFjcyBtb2RlbGluZQorCitjb21taXQgZDU1YmQ0ZTA1NDlmMDNiNmZkMzI1NjJjMmFhN2ZlMzkyNzJhOWVmNworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIFNlcCAyOCAwNjo1NToxOSAyMDExIC0wNzAwCisKKyAgICByZW1vdmUgdGhlIHY1LjcgZnJvbSB0aGUgZnJvemVuIGxpc3QKKworY29tbWl0IDQ2ZWFjMDJlOWEyN2JmNGYzMDY4ZTc5NWNhYjg5MWYwNWE4NDg4NzAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBTZXAgMjYgMjE6NDk6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IEF2b2lkIHRoYXQgc25tcGQgY3Jhc2hlcyBpZiBzdGFydGVkIG9uIGEgc3lzdGVtIHdpdGggYW5vdGhlciBPcGVuU1NMIGxpYnJhcnkgdmVyc2lvbiB0aGFuIHRoZSBvbmUgaXQgaGFzIGJlZW4gYnVpbHQgd2l0aC4KKworY29tbWl0IGM1NWY2MDhmMTZmMTYwZjVlNzlkYzA1N2Y4ODc4ZGVmNDYyOTczZTEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBUaHUgU2VwIDIyIDEwOjM1OjI0IDIwMTEgKzAxMDAKKworICAgIEZpeCB0aGUgY29kZSBmb3IgcG9wdWxhdGluZyB0aGUgdGFibGVfdGRhdGEgY2FjaGUsCisgICAgYW5kIGNsYXJpZnkgYXJlYXMgbmVlZGluZyBNSUItc3BlY2lmaWMgYWRkaXRpb25zLgorCitjb21taXQgYmJlMmMxOWEwMWVjZWMwMjRmNzQxZTJlNTQ3MDFhZTYyMTJmNGMzZQorQXV0aG9yOiBNYWdudXMgRnJvbXJlaWRlIDxtYWdmckBseXNhdG9yLmxpdS5zZT4KK0RhdGU6ICAgU3VuIFNlcCA0IDE0OjQ0OjM4IDIwMTEgKzAyMDAKKworICAgIFRoaXMgc2hvdWxkIGhhdmUgZ29uZSBvbmx5IHRvIG1hc3Rlci4KKyAgICAKKyAgICBSZXZlcnQgIkNIQU5HRVM6IGJ1aWxkaW5nOiBDb3JyZWN0IGRlcGVuZGVuY2llcyAtIHNpbmNlIGJmNzRmZWE2OWYyNGRjNmU4NWY5MDhmM2Y0MWQxNDI2YjJlMDk2ODggc25tcGNvbmYgaXMgbG9jYXRlZCBpbiBidWlsZGRpciwgbm90IHNyY2RpciIKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDllZmE0NjdhOTcyYmI2ZTFjN2ZiZGFmMmUyNzQyOWQyOWY0YWI4OWUuCisKK2NvbW1pdCA5ZWZhNDY3YTk3MmJiNmUxYzdmYmRhZjJlMjc0MjlkMjlmNGFiODllCitBdXRob3I6IE1hZ251cyBGcm9tcmVpZGUgPG1hZ2ZyQGx5c2F0b3IubGl1LnNlPgorRGF0ZTogICBTdW4gU2VwIDQgMTQ6MDA6MTIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogYnVpbGRpbmc6IENvcnJlY3QgZGVwZW5kZW5jaWVzIC0gc2luY2UgYmY3NGZlYTY5ZjI0ZGM2ZTg1ZjkwOGYzZjQxZDE0MjZiMmUwOTY4OCBzbm1wY29uZiBpcyBsb2NhdGVkIGluIGJ1aWxkZGlyLCBub3Qgc3JjZGlyCisKK2NvbW1pdCA0MjJiMDgyYTk1OTNjYTljNjVhYWM0NDllNmQxMjhhOWU5N2U5NGZiCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE5OjA2OjU2IDIwMTEgLTA3MDAKKworICAgIGFkZGVkIDcgYXMgYSByYyBzZXJpZXMgYnJhbmNoCisKK2NvbW1pdCA3MWMwZDc2NTA0OTM3MTA2MzFmYTA4ZDVkYzRkYWQ1MDFhOWFhNzcxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDE2OjM3OjQxIDIwMTEgLTA3MDAKKworICAgIGRlYWwgcHJvcGVybHkgd2l0aCBpbnZlcnRlZCBlcnJvciBjYXNlcworCitjb21taXQgY2Y0Y2Y3ZjMyYWQ1OGYzMjZmZmVkNTA0OTQ1ODMyMzE2NDhkNzlkMgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAyNiAxMTowODowOSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCAuZnQgYW5kIC5mdC4xIGZvciBmZWF0dXJlIGZpbGVzCisKK2NvbW1pdCA0MWIyY2RlMTlkMjIyMDliNDgzMjA3NjE0ZTAyNzQ4M2MzNzA2ODc3CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDMwIDExOjAzOjE1IDIwMTEgLTA3MDAKKworICAgIGF1dG8tZGV0ZXJtaW5lIHBhdGNoIGFyZ3VtZW50cyBpZiBwb3NzaWJsZSBmb3IgbnNwYXRjaHRyeQorCitjb21taXQgOTZiYjU4OWMyZTUwNTQ4OTBlOTg3MDVhYjVmNDMwOGFlNmExMzBiYgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAzMCAxMDoxMzowNiAyMDExIC0wNzAwCisKKyAgICBtYWtlIGl0IHNvIHRoZSBnaXQgY29tbWl0IGxpbmUgY2FuIGJlIGN1dC9wYXN0ZSB3aXRob3V0IGxpbmVicmVha3MKKworY29tbWl0IDZlNTRjNDEzMWFmNzMxZmY5MDQ2N2E3NWJjYzgxN2M5NTdmOGY3MmEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMDk6NTU6MTQgMjAxMSAtMDcwMAorCisgICAgZGVzY3JpYmUgdGhhdCBuc3JvbGx1cCBuZWVkcyB0byBiZSBydW4gbm93LgorCitjb21taXQgODZlZmVlMjM0MzJjY2IwZDJlMGM3MzZkMzRkYzEwNTExMzBjZGMwZgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8RC5ULlNoaWVsZEBsaXZlcnBvb2wuYWMudWs+CitEYXRlOiAgIFR1ZSBBdWcgMzAgMTA6NTI6MzAgMjAxMSArMDEwMAorCisgICAgQXBwYXJlbnRseSBJUklYIGhhcyBhIGRpZmZlcmVudCBBUEkgZm9yIHN0YXRmcworCitjb21taXQgZjk1YWEzMTM3N2Q1NzJiMDQ5YjBiMzE2ZGJiMTYzYmY3YWNhOTNkNQorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEF1ZyAyOCAyMzoyNTo0MCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBidWlsZGluZzogYnVpbGQgZml4IGZvciBzeXN0ZW1zIGxhY2tpbmcgZmllbGRzIG1zZ19jb250cm9sL21zZ19mbGFncyBpbiBzdHJ1Y3QgbXNnaGRyIChiYWNrcG9ydCkKKworY29tbWl0IGVhOGJlZDc5ZTgxYzQyZTMzY2JmMzdjYTZmM2MwM2M1NDk5ODdiMjIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMjUgMDY6NTY6MjIgMjAxMSAtMDcwMAorCisgICAgaW1wb3J0IHN0ZGVycgorCitjb21taXQgZmQ2ZDgwNGRjM2U3MDNjNDA1OWRiZTc3NTAwMWEzYmU5YjkzMzA5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyAyNSAwNjo1NTozOCAyMDExIC0wNzAwCisKKyAgICB1c2UgPj4gdG8gcHJpbnQgdG8gc3RkZXJyCisKK2NvbW1pdCAxZjA4MmEzMWNkMTM4ZjFmNWUyN2JlNmQ5MGExZDU3OTBkYzBmZmU0CitBdXRob3I6IFRob21hcyBBbmRlcnMgPHRhbmRlcnNAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIzIDIzOjM1OjQyIDIwMTEgKzAyMDAKKworICAgIG1ha2Ugc3VyZSB0aGF0IF9LRVJORUwgaXMgZGVmaW5lZCB0byAxIHNvIHRoYXQgIiNpZiBfS0VSTkVMIiB3b3JrcyBvbiBzeXN0ZW1zIHRoYXQgbmVlZCBpdCAoZS5nLiBJUklYKQorCitjb21taXQgMjZiYjI0NzBjMTA2ZjgzNDQ0MmEyYWRiYzc2MTFiZjE2NjU3ZmJkZgorQXV0aG9yOiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEF1ZyAyMyAyMzoyMjo0NCAyMDExICswMjAwCisKKyAgICBtYWtlIHN1cmUgdGhhdCBfS0VSTkVMIGlzIGRlZmluZWQgdG8gMSBzbyB0aGF0ICIjaWYgX0tFUk5FTCIgd29ya3Mgb24gc3lzdGVtcyB0aGF0IG5lZWQgaXQgKGUuZy4gSVJJWCkKKworY29tbWl0IDk2ZWEyZDFhOGViZmZiMzQ4NjczYTg2NWQ0ODZmMzFlNjM1ZTYyYmQKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBdWcgMjEgMDE6NTE6NDkgMjAxMSArMDIwMAorCisgICAgYXV0b3JlY29uZgorCitjb21taXQgMjhiNTQwNzA1MTQ3NTNlOGQ4YWJiNzE4YjIyNGQ2NTdhYjdhOGFiOAorQXV0aG9yOiBHYXJyZXR0IENvb3BlciA8eWFiZXJhdW5leWFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDE4IDExOjQ5OjU2IDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IEJTRDogUEFUQ0ggMzM4Mzk2NTogZnJvbSB5YWJlcmF1bmV5YTogRml4IGlmLW1pYiBhZ2VudCBjb21waWxlIHdhcm5pbmdzIG9uICpCU0QKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGU2Y2Y4MjA2ZjBjNjc2NTAwMDFlMzRiNTI2YjM3ZjY0ZTRhNTkyOWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMTggMDk6NDY6MzMgMjAxMSAtMDcwMAorCisgICAgUGF0Y2ggZnJvbSBDbGF1cyBLbGVpbiBvbiAtY29kZXJzIGZvciBmaXhpbmcgbWFuIHBhZ2UgdHlwb3MKKworY29tbWl0IDZhODQxZDU2NTE4YTcyNzE5NmU2NmI1OWU3ZTViMzMwNGY1NGIwYTEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgMTggMDg6MzE6MDYgMjAxMSAtMDcwMAorCisgICAgY2hhbmdlZCBjbGllbnRhZGRyIHNvIGl0IHJlZ2lzdGVycyBhcyBwcmUtbWliIHRvIGJlIHBpY2tlZCB1cCBiZWZvcmUgdGhlIHRyYW5zcG9ydHMgZ2V0IGNyZWF0ZWQKKworY29tbWl0IDY1ODA1NTZjYzdiZDgzM2FmNzMxYjYyY2UxZWQyMDE3NTY0ZmU3ZWIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMTcgMTg6MDg6MDEgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogc25tcHRyYXBkOiBNYWtlIHRoZSBJUCBhZGRyZXNzIHRvIGhvc3RuYW1lIGNvbnZlcnNpb24gd29yaworCitjb21taXQgM2NiM2YxZWRlMzg4ZDg0ZTM5MmUxZDgxNWQ1OTk0YTRiZjBmMTBmOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEF1ZyAxNCAwNzo1OToyNSAyMDExICswMjAwCisKKyAgICBXaW5kb3dzLCBidWlsZC5iYXQ6IFJlc3RvcmUgb3JpZ2luYWwgYnVpbGQgYW5kIGluc3RhbGwgb3JkZXIuIEFwcGFyZW50bHkgdGhlIGNvcnJlY3QgbmV0c25tcC5kbGwgaXMgdXNlZCBkdXJpbmcgdGhlIFBlcmwgdGVzdHMgYnkgc2V0dGluZyBQQVRIIHByb3Blcmx5LgorICAgIAorICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYzFiNWEwMzBkOGYwNDg3NmNkNWI5YWYwMDhjODc5Y2M0NjhiMjEyZi4KKworY29tbWl0IDNjNzNiNDgzOGU2MDViMTUwYmMzMTczMTNmMTRlYjMzNDQ0NzI5ZjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMTc6Mzg6MjcgMjAxMSArMDIwMAorCisgICAgUmV2ZXJ0IHRoZSB0d28gbW9zdCByZWNlbnQgU05NUF9GUkVFKCkgY2hhbmdlcyAoY29tbWl0cyA0N2M4ZWYxYjg5YzZjY2I0MjQ3ZDk2MzM0Nzc5MjU5MDhjNjhjMWE1IGFuZCA3ZjQyZDBkOTMzMjA0ODQxNTIyNzE0MjdjYzk4MDhjYmRhNDliYmQwKS4KKworY29tbWl0IDNlNTBjM2UwMGU5ZjMyMWZiNzA4YmM1NzllYjRkYzFhMGYxZTdjNGQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMTE6MzE6NDAgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHBhc3NfcGVyc2lzdDogIEZpeGVzIGEgcmFjZSBjb25kaXRpb24gaW50cm9kdWNlZCBpbiBjb21taXQgMzFmYTA3Y2Q5ZmZkZTQ2ZDQxZDJiNTgzOGMzZmM0ZDAxNTQ4YmZiNS4KKyAgICAKKyAgICBUaGUgZm9sbG93aW5nIHJhY2UgY29uZGl0aW9uIGNvdWxkIGhhcHBlbjoKKyAgICAtIEEgc3lzdGVtIGNhbGwgZmFpbHMgYW5kIGVycm5vIGlzIHNldCBhY2NvcmRpbmdseSBieSB0aGUgQyBsaWJyYXJ5LgorICAgIC0gU0lHQ0hMRCBoYW5kbGVyIGludm9rZXMgYSBzeXN0ZW0gY2FsbCB0aGF0IGZhaWxzIGFuZCBoZW5jZSBvdmVyd3JpdGVzIGVycm5vLgorICAgIC0gU0lHQ0hMRCBoYW5kbGVyIGxlYXZlcy4KKyAgICAtIG9yaWdpbmFsIGNvbnRleHQgY2hlY2tzIGVycm5vIGFuZCBmaW5kcyB0aGUgdmFsdWUgZnJvbSB0aGUgc3lzdGVtIGNhbGwgaW52b2tlZAorICAgICAgYnkgdGhlIFNJR0NITEQgaGFuZGxlciBpbnN0ZWFkIG9mIHRoZSBzeXN0ZW0gY2FsbCB0aGF0IGZhaWxlZCBvcmlnaW5hbGx5LgorICAgIAorICAgIE90aGVyIGZpeGVzIGluY2x1ZGVkIGluIHRoaXMgcGF0Y2g6CisgICAgLSBSZW5hbWVkIGRlaW5pdF9wYXNzX3BlcnNpc3QoKSBpbnRvIHNodXRkb3duX3Bhc3NfcGVyc2lzdCgpIHN1Y2ggdGhhdCB0aGlzCisgICAgICBmdW5jdGlvbiBnZXRzIGNhbGxlZCBkdXJpbmcgYWdlbnQgc2h1dGRvd24uCisgICAgLSBNYWRlIHN1cmUgdGhhdCBzaHV0ZG93bl9wYXNzX3BlcnNpc3QoKSBpcyBjYWxsZWQgYnkgdGhlIFdpbmRvd3Mgc25tcGQuZXhlIHRvby4KKyAgICAtIFdpbmRvd3M6IGF2b2lkIGNhbGxpbmcgQ2xvc2VIYW5kbGUoSU5WQUxJRF9IQU5ETEVfVkFMVUUpLgorICAgIC0gV2luZG93czogYXZvaWQgdGhhdCBjbG9zaW5nIGEgcGFzc19wZXJzaXN0IHBpcGUgdHJpZ2dlcnMgYSBjcmFzaC4KKyAgICAtIFdpbmRvd3M6IHBhc3NfcGVyc2lzdDogY2xvc2UgaGFuZGxlcyBvZiBmaW5pc2hlZCBwcm9jZXNzZXMuCisgICAgCisgICAgQ29uZmxpY3RzOgorICAgIAorICAgIAlhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYworICAgIAl3aW4zMi9taWJfbW9kdWxlX3NodXRkb3duLmgKKworY29tbWl0IGUxNDdlNGI5Njc1NTIwN2RlMWNlMzA5OTBkNjdiNGI3Yzc2ZGQ0ODMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6Mzk6MTQgMjAxMSArMDIwMAorCisgICAgVW5icmVhayB0aGUgV2luZG93cyBidWlsZC4gVGhpcyBpcyBhIGZvbGxvdy11cCBmb3IgY29tbWl0IDFlMTAwMGE4ODE1OTIxYjVlYzJlNzk5N2I1MzU5MmE1NDRiM2RmYzIuCisKK2NvbW1pdCBjMWI1YTAzMGQ4ZjA0ODc2Y2Q1YjlhZjAwOGM4NzljYzQ2OGIyMTJmCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDEzIDA4OjEwOjMzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IGJ1aWxkaW5nIChidWlsZC5iYXQpOiBJbnN0YWxsIG5ldHNubXAuZGxsIGJlZm9yZSBydW5uaW5nIHRoZSBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgc3VjaCB0aGF0IHRoZSByZWdyZXNzaW9uIHRlc3RzIGFyZSBydW4gd2l0aCB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIG5ldHNubXAuZGxsLgorCitjb21taXQgMWU5ZDIwMDNiYWVkMjI3ZjY4YjY4NTI4ZjFlOTdlNmY1ZWE4NmMxYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEF1ZyAxMyAwODoxMDozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBwZXJsIChidWlsZC5iYXQpOiBXaGVuIGluc3RhbGxpbmcgZGV2ZWxvcG1lbnQgZmlsZXMsIGluc3RhbGwgdGhlIFBEQiBmaWxlcyB0b28uCisKK2NvbW1pdCBhOGQ5NDAwN2UzMmQwMzcxMDY5MmM4ZjFiNDE3ZDViZGZlMzY1MGZhCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDEzIDA4OjEwOjMyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHRlc3Rpbmc6IEZpeCBQZXJsIHJlZ3Jlc3Npb24gdGVzdCBmYWlsdXJlcworICAgIAorICAgIEFsbCBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgcGFzcyBub3cgb24gTGludXggYW5kIG9uIFdpbmRvd3MgKE1TVkMpLgorCitjb21taXQgYjZkMGI0OTAxODFjNmRmOGMxMWVjZjE1NWYxZTZlYWYxMWIxZWM1OAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEF1ZyAxMyAwODoxMDozMyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiB0ZXN0aW5nOiBQZXJsIHJlZ3Jlc3Npb24gdGVzdHM6IERvbid0IGZhaWwgc2tpcHBlZCB0ZXN0cy4KKworY29tbWl0IGNhM2FjZjJiMDcwMzlkOTZhMTE3ZjA5MGY3ZWM3NmI2ZThiNTQxZTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6MTA6MzIgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogcGVybDogQWRkIFNOTVA6OmdldGVudigpIGFuZCBTTk1QOjpzZXRlbnYoKS4KKworY29tbWl0IDU2NzU5ZTVhZDUzN2YwMWI0YTUxZTdmZjk5OTRlYzRiNTVjMzIxMzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6MTQ6NDYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQWRkIG5ldHNubXBfc2V0ZW52KCkuCisKK2NvbW1pdCA5ODQzZTViY2Y0NzI4NzdlODViMDMxYjVlNWRhZmFhOWQ1ZmM2M2M1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTYXQgQXVnIDEzIDA4OjEwOjMyIDIwMTEgKzAyMDAKKworICAgIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Q6IGRvY3VtZW50IGhvdyB0byB1c2Ugb24gV2luZG93cworCitjb21taXQgNjA1Nzg2NmI3M2EwMjI3NzFlOTBlOTk2N2RkMjViZGM3MTkyZmJkYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU2F0IEF1ZyAxMyAwODoxMDozMiAyMDExICswMjAwCisKKyAgICBTZXQgZXhlY3V0ZSBmbGFnIG9uIGxvY2FsL3Bhc3NfcGVyc2lzdHRlc3Qgc3VjaCB0aGF0IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhhdCBmaWxlIHdvcmsKKworY29tbWl0IGMyZGFmNTk0MGYyMWExM2U4OTg5ZGQwNTViMTdmMzE4MTExMmY4NTYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFNhdCBBdWcgMTMgMDg6MTA6MzIgMjAxMSArMDIwMAorCisgICAgLmdpdGlnbm9yZTogRml4IGEgc3VwcHJlc3Npb24gcGF0dGVybgorCitjb21taXQgMWYwYTkyOGEyOTEzY2ZhN2Y1Y2VhYWY0Njk2YzY5ZmJkYzY4NzYyMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEF1ZyAxMiAwOTowOToxMSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCB0aGUgbWlzc2luZyAtZSBvcHRpb24gdG8gdGhlIGNyZWF0ZVVzZXIgZG9jcworCitjb21taXQgMWUxMDAwYTg4MTU5MjFiNWVjMmU3OTk3YjUzNTkyYTU0NGIzZGZjMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEF1ZyAxMSAxNTo0NjozMiAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBNaW5HVzogTmV0LVNOTVAgUGVybCBtb2R1bGVzIGJ1aWxkIGFnYWluLgorCitjb21taXQgOTdkNjQzMmY5NWUxY2RjZjZmZDg1ZTdjYTFkMGM1NTU3ZWI2ZDkxOQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVGh1IEF1ZyAxMSAxODoxNjo0NCAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBwZXJsOiBNYWtlIHN1cmUgdGhhdCB0aGUgY29uc3RhbnQgU05NUF9ERUZBVUxUX1JFVFJJRVMgaXMgcmVjb2duaXplZC4KKyAgICAKKyAgICBDSEFOR0VTOiBwZXJsOiBTTk1QIG1vZHVsZTogQWRkIGNvbnN0YW50cyBORVRTTk1QX0NBTExCQUNLX09QX1JFQ0VJVkVEX01FU1NBR0UgYW5kIE5FVFNOTVBfQ0FMTEJBQ0tfT1BfVElNRURfT1VULgorICAgIAorICAgIFdoZW4gdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBhcmUgYnVpbHQgb24gV2luZG93cyB3aXRoIE1TVkMgb3IgTWluR1cgaXQKKyAgICBpcyBwb3NzaWJsZSB0aGF0IGVhY2ggdGhlc2UgYXJlIGxpbmtlZCB3aXRoIGFub3RoZXIgdmVyc2lvbiBvZiB0aGUgTVNWQworICAgIHJ1bnRpbWUgbGlicmFyeSB0aGFuIHRoZSBQZXJsIGludGVycHJldGVyIGl0c2VsZi4gSW4gdGhhdCBjYXNlIHRoZSAiZXJybm8iCisgICAgdmFyaWFibGUgdXNlZCBpbnNpZGUgLnhzIHNvdXJjZSBmaWxlcyBpcyBhbm90aGVyIHZhcmlhYmxlIHRoYW4gdGhlICQhIHZhcmlhYmxlCisgICAgaW4gLnBtIGZpbGVzLiBPcjogYXNzaWdubWVudHMgdG8gImVycm5vIiBpbiBhIC54cyBmaWxlIGRvIG5vdCBtb2RpZnkgdGhlICIkISIKKyAgICBQZXJsIHZhcmlhYmxlIFRoaXMgcGF0Y2ggYXZvaWRzIHVzaW5nICJlcnJubyIgYnkgbW9kaWZ5aW5nIHRoZSBkaWZmZXJlbnQKKyAgICBjb25zdGFudCgpIGZ1bmN0aW9ucyBzdWNoIHRoYXQgdGhlc2UgcmV0dXJuIGEgdHdvLWVsZW1lbnQgYXJyYXkgaW5zdGVhZCBvZgorICAgIHJldHVybmluZyBhIHNjYWxhciBhbmQgc2V0dGluZyBlcnJuby4KKworY29tbWl0IDc2OTA4OTRiN2I4NDY0ZjA1YzdjOTAyYmQ3Y2Y3NTFjYzI2OTk3N2EKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMTAgMDk6MjY6MzcgMjAxMSAtMDcwMAorCisgICAgZG9uJ3QgYXNzZXJ0IG9uIGEgZG91YmxlIGluaXQ7IGp1c3QgZG9uJ3QgZG8gaXQgdHdpY2UKKworY29tbWl0IDQ3YzhlZjFiODljNmNjYjQyNDdkOTYzMzQ3NzkyNTkwOGM2OGMxYTUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMTAgMTY6NDQ6MzYgMjAxMSArMDIwMAorCisgICAgU05NUF9GUkVFKCk6IGNhc3QgYXJndW1lbnQgdG8gKHZvaWQgKikgYmVmb3JlIHBhc3NpbmcgaXQgdG8gbmV0c25tcF9mcmVlKCkKKworY29tbWl0IDAyMjAzOTJkODk5YTljYWI3MDFmNzRhZjEyMDMwYmIxZDRjYzVlMmUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgMSAxMzowMjoxNSAyMDExICswMjAwCisKKyAgICAuZ2l0aWdub3JlOiBJZ25vcmUgKi5leGUgZmlsZXMgZ2VuZXJhdGVkIGJ5IHRoZSBXaW4zMiBidWlsZAorCitjb21taXQgMDlhNjYxZDVkYzYwYzczMGZlMDM4NGIwMmVkNjcyODMwZWY3NGUzMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDE1OjEyOjU1IDIwMTEgLTA3MDAKKworICAgIGZpeCBDKysgY29tbWVudHMKKworY29tbWl0IDY5Y2I0MmE0ZWEwNTgzY2U2ZjVmZjhmODM4MzUxNmQzNGJjNGMzNDQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAxNToxMjo1NSAyMDExIC0wNzAwCisKKyAgICBmaXggQysrIGNvbW1lbnRzCisKK2NvbW1pdCA0NDdkZGM2NmQ5MGRkOWU1YzMxMDViMjY4YjZhNjNiZmM1ODBiOTI0CitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEF1ZyA4IDIyOjAzOjU4IDIwMTEgKzAxMDAKKworICAgIERlZmluZSBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuCisgICAgKGFzIHBlciBBbGV4JyBidWlsZCBpbnN0cnVjdGlvbnMpCisKK2NvbW1pdCBiMGE2MmViMTk3NjNhYjRmMGI3NzY0MzAyNDJhNjExN2NjYWU1ZGQzCitBdXRob3I6IERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGxpdmVycG9vbC5hYy51az4KK0RhdGU6ICAgTW9uIEF1ZyA4IDIxOjU5OjE3IDIwMTEgKzAxMDAKKworICAgIERlZmluZSBfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIHRva2VuCisgICAgKGFzIHBlciBBbGV4JyBidWlsZCBpbnN0cnVjdGlvbnMpCisKK2NvbW1pdCBmZmEwNWIwNTFhYzNlMmIxOTcxOTVhOTk4OWNjN2E5MWZlOGQ5MjgyCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDggMTM6NTU6MzggMjAxMSAtMDcwMAorCisgICAgYSBuZXcgbWFjcm8gbnNhdXRvY29uZiB0byBydW4gdGhlIHJpZ2h0IHZlcnNpb24KKworY29tbWl0IGI0NTE2MDdkY2EwMTVjMTExZTk2ZmRmZWIyZGRiMDY2MWZiNGY3MjQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPEQuVC5TaGllbGRAbGl2ZXJwb29sLmFjLnVrPgorRGF0ZTogICBNb24gQXVnIDggMjE6MjA6MzIgMjAxMSArMDEwMAorCisgICAgRml4IGNhcGl0YWxpc2F0aW9uIG9mIE5ldC1TTk1QCisKK2NvbW1pdCBjOTQ4MTMwNDRhNGM0YTYwOGU5OGU4MDIyMzA3NWM2ZmFmMDRlZTExCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gQXVnIDggMjE6NTY6MTUgMjAxMSArMDIwMAorCisgICAgUmV2ZXJ0ICJDSEFOR0VTOiBXaW5kb3dzOiBBdm9pZCB0aGF0IGlmIHRoZSBOZXQtU05NUCBQZXJsIG1vZHVsZXMgaGF2ZSBiZWVuIGJ1aWx0IHdpdGggYW5vdGhlciB2ZXJzaW9uIG9mIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIHRoYW4gQWN0aXZlUGVybCB0aGF0IHVzaW5nIG9uZSBvZiB0aGVzZSBQZXJsIG1vZHVsZXMgdHJpZ2dlcnMgYSAiRnJlZSB0byB3cm9uZyBwb29sIiBjcmFzaC4gVGhpcyByZWdyZXNzaW9uIHdhcyBjYXVzZWQgYnkgY29tbWl0IDNiMTRjNTljZjgyNzhkNDEwMjA3ZmY0MmRlYmRhMjYzNjQyNmE0NjggKHRoZSBuZXRzbm1wX2ZyZWUoKSBpbnRvIFNOTVBfRlJFRSgpIGNoYW5nZXMgaW4gdGhlICoueHMgZmlsZXMpLiIKKyAgICAKKyAgICBUaGlzIHJldmVydHMgY29tbWl0IDdmNDJkMGQ5MzMyMDQ4NDE1MjI3MTQyN2NjOTgwOGNiZGE0OWJiZDAgYmVjYXVzZSB0aGF0IGNvbW1pdCBpcyBub3Qgc3VpdGFibGUgZm9yIHRoZSA1LjQgYnJhbmNoLgorCitjb21taXQgNThjYTczZDAzNTg5YjA5NzRkOTI2YmRmZGMzOTI3MDk5ZmJhMjExNQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDExOjI0OjA5IDIwMTEgLTA3MDAKKworICAgIGRpc3BsYXkgdGhlIGJyYW5jaCB3ZSdsbCBjb21taXQgdG8KKworY29tbWl0IDFkMWJmZDVmNDUxYzJiYzQyMGI3MTBjOThjNzlkMDRiZGVmNDM5MWIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAxMToxMDo1MiAyMDExIC0wNzAwCisKKyAgICBuc3NmcGF0Y2hhcHBseTogc3BsaXQgdGhlIGRpc3BsYXllZCBnaXQgY29tbWl0IGNvbW1hbmQgaW50byBtdWx0aXBsZSBzZWdtZW50cworCitjb21taXQgZDM3M2M0ZmQ4YzM5MWFmZTBiOWUwMmE2MGI1Y2Q2NjFiYzkwMzlkYworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEF1ZyA4IDE3OjIzOjQzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeCBhIGNyYXNoIHRoYXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGNhbGxpbmcgX21pYmluZGV4X2FkZCgpIHdpdGggdGhlIHNlY29uZCBhcmd1bWVudCBub3QgZXF1YWwgdG8gLTEuCisKK2NvbW1pdCA4Y2E3ZmYxZTY5MmNhZWM0MTg2Yjc4OGM5YWUyZDI3YmUyMTMyOTBmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gQXVnIDggMTA6MzM6NTYgMjAxMSAtMDcwMAorCisgICAgZml4IGFub3RoZXIgZnVuY3Rpb24gdHlwbworCitjb21taXQgNTU2ZTkzOGU4MmE3ZWUyYzEwZmE4YzBiN2M3YTM0ZTllNjVhNmQ1YQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDEwOjA1OjIwIDIwMTEgLTA3MDAKKworICAgIGZpeCBmdW5jdGlvbiBuYW1lIHR5cG8KKworY29tbWl0IDk2OWU4NjZhZjk4M2Q5ODZhMjZiZWJjYTg1ZmVmMGY2YzYyM2NlMjYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAwOTo1Njo0MyAyMDExIC0wNzAwCisKKyAgICBtYWtlIG5zcHVsbC9uc3B1c2ggY2hlY2sgZm9yIGEgY2xlYW4gcmVwbworCitjb21taXQgN2U2ZmRjOGIyYTNkODZhNzk1NDM2NzM0MzUzNzE2MjFhMjg1ODczNworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDA5OjU2OjEzIDIwMTEgLTA3MDAKKworICAgIG5ldyBmdW5jdGlvbiAibnNtYWtlYWxsIiB0byB0ZXN0IGJ1aWxkaW5nIG9uIGV2ZXJ5IGJyYW5jaAorCitjb21taXQgZTI1YmU3YzgyZDU1NDVkODhhYmVhMTBlNGUyNTVjOTJiZWQzZGU2ZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEF1ZyA4IDA5OjUzOjAzIDIwMTEgLTA3MDAKKworICAgIGRlZmF1bHQgdG8gbWVyZ2UKKworY29tbWl0IGJjYjgxYjc5NmRkNmE5MjE5NWQ2ZGIxMzE3N2FkMzBmMDVmYzYzZjcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBBdWcgOCAwOTo1MToyNiAyMDExIC0wNzAwCisKKyAgICBzZXBhcmF0ZSBuc3N5bmMgaW50byBuc3B1bGwgYW5kIG5zcHVzaAorCitjb21taXQgN2Y0MmQwZDkzMzIwNDg0MTUyMjcxNDI3Y2M5ODA4Y2JkYTQ5YmJkMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEF1ZyA4IDA5OjUwOjUxIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IEF2b2lkIHRoYXQgaWYgdGhlIE5ldC1TTk1QIFBlcmwgbW9kdWxlcyBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhbm90aGVyIHZlcnNpb24gb2YgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gdGhhbiBBY3RpdmVQZXJsIHRoYXQgdXNpbmcgb25lIG9mIHRoZXNlIFBlcmwgbW9kdWxlcyB0cmlnZ2VycyBhICJGcmVlIHRvIHdyb25nIHBvb2wiIGNyYXNoLiBUaGlzIHJlZ3Jlc3Npb24gd2FzIGNhdXNlZCBieSBjb21taXQgM2IxNGM1OWNmODI3OGQ0MTAyMDdmZjQyZGViZGEyNjM2NDI2YTQ2OCAodGhlIG5ldHNubXBfZnJlZSgpIGludG8gU05NUF9GUkVFKCkgY2hhbmdlcyBpbiB0aGUgKi54cyBmaWxlcykuCisKK2NvbW1pdCBhM2I4NjU0YTIzMmM1NjNiYzk3Y2M5OTI1Y2Q5ODU5MGEzMGM1YmM1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gQXVnIDggMTc6MjQ6MTggMjAxMSArMDIwMAorCisgICAgRml4IGEgcmVjZW50bHkgaW50cm9kdWNlZCBNaW5HVyBjb21waWxlciB3YXJuaW5nCisKK2NvbW1pdCBhMGRkM2NhZjI1OTI2ZTQzNDY1NzE4YmY0MTdhNDY0YzJmYjM2MzY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBTdW4gQXVnIDcgMTA6MTc6MDEgMjAxMSArMDIwMAorCisgICAgZmluZCBcKCAtbmFtZSAnKi5bY2hdJyAtbyAtbmFtZSAnKi5pbicgLW8gLW5hbWUgJyouZHNwJyBcKSAtcGVybSAtdSt4IHwgeGFyZ3MgLXIgY2htb2QgYS14CisKK2NvbW1pdCBhOWEyNTI1MjJmYmU3ZGMxZWQ3MGZmMjcyMWE0ZjgxNTgzYzBkOTJhCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgQXVnIDUgMTA6MjA6NTEgMjAxMSAtMDcwMAorCisgICAgbWFrZSByb2xsdXAgYW5kIHN5bmMgc3VwcG9ydCAtLXJlYmFzZSBhbmQgY2hhbmdlIHRoZSBkZWZhdWx0IGJhY2sgdG8gbWVyZ2UKKworY29tbWl0IDk2ZjVmNDdhZDQyNzk3MmQ4ZDlhNmNlMDZjNWUxNjE0NzM2MjA4M2IKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBdWcgNSAwOToyNToyNSAyMDExIC0wNzAwCisKKyAgICB0cnkgYSBtdWx0aXBsZSBicmFuY2ggcHVzaAorCitjb21taXQgMGRiYzg2OWZlYzA3ZDhlOTBkYmQxYzk1NDkzZWU3Y2JjNjIzYzk1YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEF1ZyA1IDEyOjQwOjMxIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IFdpbmRvd3M6IGJ1aWxkLmJhdDogR2VuZXJhdGUgUERCIGZpbGVzIGluIHJlbGVhc2UgbW9kZS4KKyAgICAKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBidWlsZC5iYXQ6IFdyaXRlIFBEQiBmaWxlcyB0byB0aGUgb3V0cHV0IGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBpbnRlcm1lZGlhdGUgZGlyZWN0b3J5LgorCitjb21taXQgNWIwMjkxZjkxZWQ5NDgzNWY4YWU3ZDk0MzZiMTVmNDBhZmIxOTQ3MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEF1ZyA1IDEzOjE3OjE5IDIwMTEgKzAyMDAKKworICAgIC5naXRpZ25vcmU6IEFkZCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5kZWYgYW5kIHBlcmwvU05NUC90CisKK2NvbW1pdCAyZjhkNGY1Nzk2Y2JjMWM3ZTk2N2FjZGFhODAxOWIyNGYxNTIwYTM2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgQXVnIDUgMTI6MDI6NTEgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogQXZvaWQgdGhhdCBydW5uaW5nIHRoZSBQZXJsIHJlZ3Jlc3Npb24gdGVzdHMgbWFrZXMgc25tcGQgY3Jhc2gKKworY29tbWl0IDBjNzUwN2ExZTAxMDFmNGIxMzVhM2VkOGE5NjE2MzViODcwOTNmMWEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMDo1NzozMyAyMDExICswMjAwCisKKyAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgLSByZXZlcnQgY29tbWl0IGQyYzQ3NjhiZDJlZmI0ODY2NDQzNGE4MzE0MjVjMmRkYTg1ZDcxMzMgKENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlKS4KKworY29tbWl0IDliN2ZmNGFiZmM5NTI5YmI5ZTE4YTNiODc0MjAxNTIwYmMwZTcxNDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMTowNzo1NSAyMDExICswMjAwCisKKyAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQgYmY3MTc4YjBiMjI1ODdkNDNkMWE4MGMyNjljZDIxNmJkNTkzMDIxNCAoYWdlbnQ6IGNoYW5nZSB0eXBlIG9mIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgdG8gbG9uZykKKworY29tbWl0IDAzMDQ5ZTEwMzZjMmMwNmNiZDZlNWVkNWZlMDg0OTk5ZDU0NjhhNWYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMDo1Njo0OCAyMDExICswMjAwCisKKyAgICBVbmJyZWFrIHRoZSBWNS00LXBhdGNoZXMgYnJhbmNoIC0gd2FzIGJyb2tlbiBieSBjb21taXQgMGU2ODQyZmUwODBjZWM4NTNiMDhjZDIzMjMwMTVhYmFiYzM4MWNlMSAoQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5KS4KKworY29tbWl0IDNhYTk0OWZiZGZjMWE5NGE4MzQwYWQ4YmFmOGIzMTQ3NTZhMGJiOWQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBBdWcgNSAxMDoyNjoxNSAyMDExICswMjAwCisKKyAgICBXaW4zMiBtYWtlZmlsZSB3aGl0ZXNwYWNlIGNsZWFudXAKKworY29tbWl0IDk0MzkzMGUxZTEyNDM4NWZkOTQ3MzhiNmRjZGEzN2QyOWRjN2FjN2YKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAxMDo0MTo0MSAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0ggMzMyNDc2OTogZnJvbSBoYXJkYWtlcjogRml4IC1XdW51c2VkIHdhcm5pbmcKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDkwYzBlNzVmM2UwZGU3M2Q2YWFhYjNlM2Q3MTQ2ZjE4YThmOWUxODcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBBdWcgNCAxOToxMjoyNCAyMDExICswMjAwCisKKyAgICBzbm1wdXNtOiBGaXggcmVjZW50bHkgaW50cm9kdWNlZCBjb21waWxlciB3YXJuaW5ncworCitjb21taXQgMmRkOWVkMDg1OGRhYTk4MmI0MTYwYjRkMmE3ZDVhMmI4MDk0NDE3MQorQXV0aG9yOiBTdHVhcnQgSGVuZGVyc29uIDx0MGp3MmZ1MGttZ0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAxMDowNjo1NyAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBvcGVuYnNkOiBQQVRDSCAzMzU3OTMyOiBmcm9tIHQwancyZnUwa21nOiBDbGVhbmluZyBpbiBtZW1vcnlfbmV0YnNkLmMKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGY4ZjZmNzA3MTY0NGI3ZTc3MWRmOGU2MmE5MzIyN2NmOTYwYTA0ZTcKK0F1dGhvcjogVmxhZGltaXIgS29uZHJhdGlldiA8d3VsZjIwMDFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDk6NTY6MjkgMjAxMSAtMDcwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDMzODYxNDc6IGZyb20gd3VsZjIwMDE6IGZpeCBVQ0QtU05NUC1NSUI6OmRza1VzZWQKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDIxMDFiYjJkN2FkNmRiMDM4Yzc1NWFhOTE5M2M4YWNlMGRiZDRmNTgKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwOToyODowNiAyMDExIC0wNzAwCisKKyAgICBhZGRlZCB0aGUgbWlzc2luZyBmcmVlYnNkOS5oIGZpbGUgZnJvbSB0aGUgZnJlZWJzZDkgcGF0Y2gKKworY29tbWl0IGI2YTQ4MWZhMzA2Mjg5M2U1ODliZjYxNjNjOWQwNmQwZjIwNTMyNDAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwOToyNzowNSAyMDExIC0wNzAwCisKKyAgICBpZ25vcmUgKi5vcmlnIGFuZCAqLnJlagorCitjb21taXQgY2M1MTM0ZTUzZDFjMjMzZGM0MWUzMWZiYjc4ZmFhYjA5OGYwOTM2MQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjI2OjQ0IDIwMTEgLTA3MDAKKworICAgIGhlbHAgb3V0cHV0IGRlc2NyaWJlcyByZWJhc2UgdnMgbWVyZ2UgYmV0dGVyCisKK2NvbW1pdCBiMzcyZTVhYjMwYWExNTU3NDFlOTRkZjIyZTA3NTI1MzVjNTllNGJiCitBdXRob3I6IFN0dWFydCBIZW5kZXJzb24gPHQwancyZnUwa21nQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjIyOjI4IDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IG9wZW5ic2Q6IFBBVENIIDMzNTc5Mjc6IGZyb20gdDBqdzJmdTBrbWc6IFJlY29nbmlzZSBvcGVuYnNkNQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgMDU0OGE0ZTk3YjJhMWYwMzk5ZTU4YzRlZmMwMDRjOTQ5NzM5OGNkNgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjIyOjE1IDIwMTEgLTA3MDAKKworICAgIGZpeCB3aGVyZSBhcmd1bWVudHMgYXJlIHNldAorCitjb21taXQgM2IzNzgwYmNhOWFkZWViZjRlZjc1MDhhZWU2YjhlYmNiOTRmNjU2YworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA5OjIwOjQwIDIwMTEgLTA3MDAKKworICAgIHNwbGl0IG5zc2ZwYXRjaGFwcGx5IGludG8gdHdvIHBhcnRzOiBhcHBseSBhbmQgY29tbWl0aW5nCisKK2NvbW1pdCAwNDIyNTE0YTYyYmNhYWU2MDA1MDE3ZDdlOWVkNDg1MDc1ZmU3MDFjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDk6MTU6MjUgMjAxMSAtMDcwMAorCisgICAgcGF0Y2ggdXNpbmcgLU4KKworY29tbWl0IGRjNzU1YTZhZWI5YjljODg5NzI3ZDlmYzg0MmZjODlmNzI5ZTZlYzAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODozMzoyNSAyMDExIC0wNzAwCisKKyAgICBhZGRlZCBzcGFjaW5nIHRvIG1hdGNoIHRoZSBsYXRlciBicmFuY2hlcworCitjb21taXQgN2I3MjZlMTAzYzE5NjBmNGM4NjAzODU5YzlhOGQ4YWE4YzQwNDUyMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjMyOjIzIDIwMTEgLTA3MDAKKworICAgIHJlbW92ZWQgYWNjaWRlbnRpYWxseSBkdXBsaWNhdGVkIGNvZGUKKworY29tbWl0IGVjYmFiMGE5OGEwMmZkZTZiYmNhN2RkMzcwYmNkOWMzY2E3NmFmZmUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODoyNzo0MSAyMDExIC0wNzAwCisKKyAgICBuc3N5bmMgc3VwcG9ydHMgLS1tZXJnZSBub3cKKworY29tbWl0IGU3ZGQxYzQzN2FmZTZlMjZhNTVhYTc3MmQ0NjgwMTI2NTU3NDFkMzEKK0F1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjIzOjIyIDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IGxpYm5ldHNubXA6IFBBVENIIDMzNjIyMzM6IGZyb20geWFiZXJhdW5leWE6IE11dGUgdW5uZWNlc3NhcnkgY2Fubm90IGZpbmQgbW9kdWxlIG5vaXNlCisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBjNTNkOGMzNTI1ZjU5MGYyMjEzZDM1YjBkYTk0MTIzODYyZjNlMzY2CitBdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODoxOToxNiAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBmcmVlYnNkOiBQQVRDSCAzMzYzMzA4OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggY29tcGlsYXRpb24gb24gRnJlZUJTRCA5Lnggd2l0aCByZWNlbnQgaGVhZGVyIHNodWZmbGluZworICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgM2I4YzhiODUwODVhYWUyZDFhMWM3Y2EzNWU3ZDA2NmQzZDc0ZmE5ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjE1OjE3IDIwMTEgLTA3MDAKKworICAgIGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCitjb21taXQgNzEwMGFlZGZmZDk4Y2RhNGIwNTE2NGJjY2YxNzg3NjAyMDE5NmU3OQorQXV0aG9yOiBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDg6MTI6MDkgMjAxMSAtMDcwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCBkMmM0NzY4YmQyZWZiNDg2NjQ0MzRhODMxNDI1YzJkZGE4NWQ3MTMzCitBdXRob3I6IEdhcnJldHQgQ29vcGVyIDx5YWJlcmF1bmV5YUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwODoyMzoyMiAyMDExIC0wNzAwCisKKyAgICBDSEFOR0VTOiBsaWJuZXRzbm1wOiBQQVRDSCAzMzYyMjMzOiBmcm9tIHlhYmVyYXVuZXlhOiBNdXRlIHVubmVjZXNzYXJ5IGNhbm5vdCBmaW5kIG1vZHVsZSBub2lzZQorICAgIAorICAgIFNpZ25lZC1vZmYtYnk6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCitjb21taXQgZDE5YjhmY2EyMzg0MDc3ZjczMmEzMGYyOTQ2YWIwYzAzYmMwZTczOAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA4OjE1OjE3IDIwMTEgLTA3MDAKKworICAgIGFsbG93IG5zcm9sbHVwIHRvIHRha2UgYSAtLW1lcmdlIGZsYWcgZm9yIG1lcmdpbmcgaW5zdGVhZCBvZiByZWJhc2luZworCitjb21taXQgMGU2ODQyZmUwODBjZWM4NTNiMDhjZDIzMjMwMTVhYmFiYzM4MWNlMQorQXV0aG9yOiBTYWNoaW4gU3VyZW5kcmFuIDxzYWNoaW5zdXJlbmRyYW5AdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDg6MTI6MDkgMjAxMSAtMDcwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSCAzMzgzNDQxOiBmcm9tIHNhY2hpbnN1cmVuZHJhbjogRml4IGNyYXNoIG9uIDUuNC40IGR1ZSB0byBhY2Nlc3Mgb2YgZnJlZWQgbWVtb3J5CisgICAgCisgICAgU2lnbmVkLW9mZi1ieTogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CisKK2NvbW1pdCAyNTk4OGJlODM2OTI0YTMzMDIwMTEzYzk0YWEwMjYxNGQxZGJmMWJlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXVnIDQgMDc6MzY6MzYgMjAxMSAtMDcwMAorCisgICAgYXV0b2NvbmYKKworY29tbWl0IDRkYjZiNjQ1MDlkYzM1MDgzOWQ1OTZlMzI1MDRiMmQ4MGNhMGM3YjAKK0F1dGhvcjogR2FycmV0dCBDb29wZXIgPHlhYmVyYXVuZXlhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA3OjM2OjEwIDIwMTEgLTA3MDAKKworICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBQQVRDSCAzMzgzOTQ5OiBmcm9tIHlhYmVyYXVuZXlhOiBGaXggYXV0b2NvbmYgdGVzdHMgZm9yIHN5cy9tYnVmLmgKKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IGYzYmM1NTE4NGQ5NmM1OGRjZmQ1ODk1Mzc5NmMxMGY3MzU0ZGQ0YTcKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBdWcgNCAwNjo1NDoyMiAyMDExIC0wNzAwCisKKyAgICBwcm9tcHQgZm9yIHBhdGNoIGFuZCBhbiBhcmVhLCBhbmQgdXNlIHRoZSBwcm9wZXIgQ0hBTkdFUyBsaW5lIGZvcm1hdAorCitjb21taXQgYWQ2OTZiYTEyNDlkM2M0YmMxMmMwZWIzODQ4MWZmMGZjNDMzZjhhMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEF1ZyA0IDA2OjQyOjQyIDIwMTEgLTA3MDAKKworICAgIFVzZSBmZXRjaCAtLWFsbCBhbmQgcmViYXNlIGFzIHN1Z2dlc3RlZCBieSBCYXJ0IGZvciBzcGVlZCBpbXByb3ZlbWVudHMKKworY29tbWl0IDQ0OTY5YjRlNTdjMjcxOTRlNWJkMzU3YmM0NTI3NWZlYjg2OTVkMjIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgOCAyMDo1MjoyNSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4IHRoZSBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgdGhlIHdpbkV4dERMTCBzb3VyY2UgY29kZSBhbmQgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IHRoZSBjaGFuZ2Ugb2YgdGhlICJvaWQiIHR5cGVkZWYgZnJvbSB1aW50MzJfdCB0byB1X2xvbmcuCisKK2NvbW1pdCBlYTU4YjY3YjRmMzE4YWNmMWY5ZTg1MjU4MmJjY2FkNDdiNGQ4ZTY3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDggMjA6NTI6MjUgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IHdpbkV4dERMTDogSW52b2tlIFNubXBVdGlsT2lkRnJlZSgpIGJlZm9yZSBTbm1wVXRpbE9pZENweSgpLiBJdCdzIG5vdCBjbGVhciB5ZXQgd2h5IHRoZSBvcmlnaW5hbCBjb2RlIGRpZCBub3QgbWFrZSBzbm1wd2FsayB0cmlnZ2VyIGEgbWVtb3J5IGxlYWsuCisKK2NvbW1pdCA4YTAxZWM2NDIzZDQwMGM0YTEzY2NhYzY4YTM3OTFkMDIxOGEwODg1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgQXVnIDQgMTE6MTk6MTcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogV2luZG93czogTWFrZSBsaW5raW5nIHdpdGggcmVjZW50IE9wZW5TU0wgYmluYXJpZXMgc3VjY2VlZC4KKworY29tbWl0IGUyMWVlZjJmYzVjZmRjMTIwMDQ3OTExOGEyYzViMjlhNzBiMGRmNjAKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFRodSBBdWcgNCAwODo1Mjo0MyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBhIE1JQiB3YWxrIG9uIHRoZSBob3N0IHJlc291cmNlcyBNSUIgdHJpZ2dlcnMgYSBjcmFzaCBvbiBGZWRvcmEgMTUKKworY29tbWl0IGQ4YjIwNTJhMDM1OWFkOWQxYTY4ZDhkNTg3YmM2YmUxNTYxNThkMjAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMTowMDozMSAyMDExIC0wNzAwCisKKyAgICBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0IG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKK2NvbW1pdCA0ZWVhOWVlMzhmMDZlMDAwYTk1ZGMyMDlkMGE3MWNlNjBkYTQ5NGI5CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDMgMTA6NTY6MTQgMjAxMSAtMDcwMAorCisgICAgYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworY29tbWl0IDI4NGY1ZmI3OWUwNTZhMjcyZjczYjkwOTM3ZDdiZjA1N2MyYWYwMjEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMTowNjoyMyAyMDExIC0wNzAwCisKKyAgICBhZGRlZCBhIGNvbW1lbnQKKworY29tbWl0IDhjMDQzMmE3NGZlZGY4YTEzODVjOGFkMGZmMWZiNDI5YTI4ZWFiOTkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMTowMDozMSAyMDExIC0wNzAwCisKKyAgICBhdCBlbmQgb2YgbnNyb2xsdXAgbWVudGlvbiB0aGF0IG5vdyB3b3VsZCBiZSBhIGdvb2QgdGltZSB0byBydW4gbnNzeW5jCisKK2NvbW1pdCBjYTNhZDNhMjhmODFmNTlkZmZhM2RiYjgwOWE3NzAxNDcyNDFlM2U1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDMgMTA6NTY6MTQgMjAxMSAtMDcwMAorCisgICAgYSBuZXcgbnNzeW5jKCkgZnVuY3Rpb24gZm9yIHB1c2gvcHVsbGluZyBhY3RpdmUgYnJhbmNoZXMKKworY29tbWl0IDJmYTdkODdkMzk3OWVjMGZiYjgzNWJjZmZmODk4ZTZiZWMyYWJiZDkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBdWcgMyAxMDoyMzowMCAyMDExIC0wNzAwCisKKyAgICBBIG5ldyBmdW5jdGlvbjogbnNzZnBhdGNoYXBwbHkgdGhhdCBhdXRvLXB1bGxzIGdpdCBjb21tYW5kIGxpbmUgaW5mbyBmcm9tIFNGCisKK2NvbW1pdCA3M2U3NjU3NGFlNzI4YTRhNGEzMDYyMzU5N2VjMGI5NWZhMjc5N2M1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIgMTQ6NDM6NTIgMjAxMSAtMDcwMAorCisgICAgYWRkZWQgdmFyaWFibGVzIG5hbWVzIHRvIHRoZSBnZW5lcmF0ZWQgZXJyb3IgbWVzc2FnZXMuCisKK2NvbW1pdCBiMjRhNGYwYzk1NjUzMzUyMjBlZTIxN2QwYzBiNTEzMjFjYzFhNDRmCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MzggMjAxMSAtMDcwMAorCisgICAgV29yZGluZyBjaGFuZ2VzIHRvIGhlbHAgZGVzY3JpYmUgY29udGV4dHMgYmV0dGVyCisKK2NvbW1pdCBlODM3YzdjYjYyYzY3NmEwMDU5ZDI4NDZlMDJlMzJmNWJiNjNjMWIxCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXVnIDIgMTM6MjI6MjEgMjAxMSAtMDcwMAorCisgICAgQWRkZWQgdGhlIG1pc3NpbmcgVTY0IG0yaSBmaWxlCisKK2NvbW1pdCA5NzM2MjM0YjM3OThiYTU0NjJhMGE3NDk0M2VkZTgwZTkwYTY0ODViCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXVnIDMgMTA6MjM6MDAgMjAxMSAtMDcwMAorCisgICAgQSBuZXcgZnVuY3Rpb246IG5zc2ZwYXRjaGFwcGx5IHRoYXQgYXV0by1wdWxscyBnaXQgY29tbWFuZCBsaW5lIGluZm8gZnJvbSBTRgorCitjb21taXQgYmY3MTc4YjBiMjI1ODdkNDNkMWE4MGMyNjljZDIxNmJkNTkzMDIxNAorQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KK0RhdGU6ICAgTW9uIEp1bCAxOCAwNDozMTowOCAyMDExICswNDAwCisKKyAgICBhZ2VudDogY2hhbmdlIHR5cGUgb2Ygc25tcF9lbmFibGVhdXRoZW50cmFwcyB0byBsb25nCisgICAgCisgICAgVHlwZSBvZiBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIHZhcmlhYmxlIGlzIGNoYW5nZWQgZnJvbSBpbnQgdG8gbG9uZy4KKyAgICBUaGlzIGZpeGVzIHRoZSBidWcgd2l0aCB3cml0aW5nIHRvIHNubXBFbmFibGVBdXRoZW5UcmFwcyBpZiBzZXJ2ZXIgaXMKKyAgICBjb21waWxlZCBmb3IgNjRiaXQgKHNubXBzZXQgcmVwb3J0cyB3cm9uZyBsZW5ndGgpLiBUaGlzIGJ1ZyB3YXMKKyAgICBpbnRyb2R1Y2VkIGEgbG9uZyB0aW1lIGFnbyAoYnkgZmFlZWNkMCBjb21taXQpLgorICAgIAorICAgIEFjdHVhbGx5IHRoaXMgaXMgYSAnbGVzcyBlZmZvcnQnIHR5cGUgb2YgZml4IGJ1dCBJIHdvbmRlciB3aHkgd2UgbmVlZCBhCisgICAgbG9uZyB0byBzdG9yZSBhbiBJTlRFR0VSIGluIHRoZSBmaXJzdCBwbGFjZT8KKyAgICAKKyAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KKyAgICBTaWduZWQtb2ZmLWJ5OiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworY29tbWl0IDE2YzAyZDY5Y2M5Y2U0ZmQ0ZTc3MTBhMGJmOTQzMGY1MjE3NWVkNTAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAxNDo0Mzo1MiAyMDExIC0wNzAwCisKKyAgICBhZGRlZCB2YXJpYWJsZXMgbmFtZXMgdG8gdGhlIGdlbmVyYXRlZCBlcnJvciBtZXNzYWdlcy4KKworY29tbWl0IDdmZWQ2MWJmMGFmMTQ3N2ViNzQwYTA1ODhmNmExMWExMmI3MjM1OTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjozOCAyMDExIC0wNzAwCisKKyAgICBXb3JkaW5nIGNoYW5nZXMgdG8gaGVscCBkZXNjcmliZSBjb250ZXh0cyBiZXR0ZXIKKworY29tbWl0IDkzODA2MTJmZGNiNGY5YmIwODFjNGE0Njc0NjY5MjEyNGFiZWRlNTAKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAxMzoyMjoyMSAyMDExIC0wNzAwCisKKyAgICBBZGRlZCB0aGUgbWlzc2luZyBVNjQgbTJpIGZpbGUKKworY29tbWl0IDYxYjE3OGYxZWU4OTUyYWEwM2FhM2IxYmE1MWY0YTY2NTVlNDdmMDEKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFdlZCBBdWcgMyAxODowOTo0NyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBXaW5kb3dzOiBQZXJsIG1vZHVsZXMgYnVpbGQgbm93IHdpdGggSVB2NiBlbmFibGVkLgorCitjb21taXQgN2ZjYzBiODAzMmY4ZGE1YjdiYzMwMDU5YWYwYmE2NTZlYWU3MTA5MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgTW9uIEF1ZyAxIDE0OjExOjI4IDIwMTEgKzAyMDAKKworICAgIHNtdXg6IEZpeCByZWNlbnRseSByZWludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZ3MgYWJvdXQgc2l6ZV90IDw+IHNzaXplX3QgbWlzbWF0Y2hlcworCitjb21taXQgYjQ4NGI4OGQ2ZTU3YjQyNWE4NDY3ZjVhMzkzMzMzMTJmZWQyYWNmMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEF1ZyAyIDA5OjMxOjUwIDIwMTEgKzAyMDAKKworICAgIEZpeCBhIGNvbXBpbGVyIHdhcm5pbmcgaW4gYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMKKworY29tbWl0IDk0NDYxMmVmNTZhZDI1NjRhYWZlMTRkZjZkMDhlMDQ4YjcyMjhiODYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIE1vbiBBdWcgMSAxNDo0OTo0MSAyMDExICswMjAwCisKKyAgICAuZ2l0aWdub3JlOiBBZGQgZmlsZSBuYW1lcyBhbmQgcGF0dGVybnMgZm9yIG91dHB1dCBmaWxlcyBnZW5lcmF0ZWQgZHVyaW5nIHRoZSBXaW5kb3dzIGJ1aWxkCisKK2NvbW1pdCAyNjAwOTAxMjc4NWY4MjhiYmZjODc1OWFmYmJiZmM1ODcwMGZmMWY2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDI5IDA5OjU5OjMxIDIwMTEgKzAyMDAKKworICAgIC5naXRpZ25vcmU6IFNvcnQgYWxwaGFiZXRpY2FsbHkKKworY29tbWl0IDVlM2ZmNTU5NjY0OGUwOTA3ZDU3MWQ3YTRkM2EzYThjMjQwMmQ4ZWUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgMjkgMDg6NDM6MTkgMjAxMSArMDIwMAorCisgICAgLmdpdGlnbm9yZTogQWRkIGFwcHMvc3NodG9zbm1wCisKK2NvbW1pdCAzMWEzYTJhMDYyNDA0NjUxMWNhMDdlYzFmNTIxYTIyZDc5NjZkYjgwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBNb24gQXVnIDEgMTM6Mzg6MDEgMjAxMSArMDIwMAorCisgICAgUmVtb3ZlIHR3byBnZW5lcmF0ZWQgUGVybCBmaWxlcy4KKworY29tbWl0IGFkYWRjYjk5ZTU3YjkzYmU2NzBhN2M1MTdmYzk4OWRmZmU3Mzk2ZTkKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBdWcgMiAwMDo1Njo0OSAyMDExICswMjAwCisKKyAgICBzdXBwcmVzcyAib2siIHRlc3Qgb3V0cHV0IGluIG5zYgorCitjb21taXQgYWU5YWM2Yzk4MTI4MjRiZjViODQ4ZGMxZjNjY2Y3MjI3YzQzNmQwZAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgU3VuIEp1bCAzMSAwOToxMToyOCAyMDExICswMjAwCisKKyAgICBGaXggYW4gaW5jb3JyZWN0IHNvdXJjZSBjb2RlIGNvbW1lbnQ6IHRoZXJlIGlzIG5vIHJlcXVpcmVtZW50IGluIHRoZSBBTlNJIEMgc3RhbmRhcmQgdGhhdCBzdGFjayB2YXJpYWJsZXMgc2hvdWxkIGJlIGluaXRpYWxpemVkIHRvIHplcm8uCisKK2NvbW1pdCA4MmQ3M2ZiMTFiZTNhZTMxZjM5YzlkNjE4ZDUzODhkYzliMTAwNmQ3CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDI5IDIwOjUxOjI3IDIwMTEgKzAyMDAKKworICAgIFVuYnJlYWsgdGhlIFdpbmRvd3MgYnVpbGQKKworY29tbWl0IDllNDdhYzQzOTMzM2QyYmI3YzgwNjg2MjQxZGI3MzMxYTg4NzcwZmIKK0F1dGhvcjogVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBKdWwgMzAgMDA6MTg6MTQgMjAxMSArMDIwMAorCisgICAgbWlub3IgbnNiIGZpeGVzL2VuaGFuY2VtZW50cyBmcm9tIG15IG9sZCBzdm4gdHJlZQorCitjb21taXQgYzQ4MTczYzA2YTllYWFkYmY4MWU2YjQ5NjJkNTVlZjBhNTRkYjI1MQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEp1bCAyOSAxMDoyNzozOSAyMDExICswMjAwCisKKyAgICBGaXggYSBidWcgaW4gYSBkZWJ1ZyBzdGF0ZW1lbnQKKworY29tbWl0IGVjYTFiOWEyNTQ1MGNkODc1YjIwMTJjNTFjMDkwYmEyYjk3ZTA2MjgKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIEZyaSBKdWwgMjkgMTA6MDQ6MDIgMjAxMSArMDIwMAorCisgICAgUmVydW4gYXV0b3JlY29uZgorCitjb21taXQgNjlhYTllMDMyY2FmNWViNzEzYmIwMDc0NTEzNDY0MGZlOWZkMDIzNQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEp1bCAyOSAwOTo1OTozMSAyMDExICswMjAwCisKKyAgICAuZ2l0aWdub3JlOiBTb3J0IGFscGhhYmV0aWNhbGx5CisKK2NvbW1pdCBjMzg1OTdkZmEwYjFkMzY3ZDUyYmJkYzBhZWFhZGZmMDE1NTg1MGFkCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBGcmkgSnVsIDI5IDA4OjQzOjE5IDIwMTEgKzAyMDAKKworICAgIC5naXRpZ25vcmU6IEFkZCBhcHBzL3NzaHRvc25tcAorCitjb21taXQgNzc0ZDBiNjZlZTBhY2FmZWFmYTIxZmM4ZDk5Mzg2NDc3OWU1MGU2MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgRnJpIEp1bCAyOSAwNzo0Mzo1NCAyMDExICswMjAwCisKKyAgICBGaXggdHdvIGZpbGVuYW1lcyBpbiBob3N0IG1pYiBzb3VyY2UgY29kZSBjb21tZW50cy4KKworY29tbWl0IDM0NTgxMjhiNGEzYzU5NzE5OTg4OTRmOWQ5ZDhjY2M2Yzc2ZDNjOWIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDE2OjE2OjE1IDIwMTEgKzAyMDAKKworICAgIEZpeCBwb3RlbnRpYWwgc2lnc2VndiB3aGVuIGFuIGlmVGFibGUgZW50cnkgaXMgcmVtb3ZlZCBhcyByZXN1bHQgb2YgYm90aCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgYW5kIGludGVyZmFjZV9mYWRlb3V0IGF0IHRoZSBzYW1lIHRpbWUuCisKK2NvbW1pdCBhMmY5ZWNlMDZjZjAwZWU0N2NlN2U4NTY3MjIxMGMxYjU3ODZmMzExCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDE1OjE5OjIyIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBSZXN0b3JlIHN0b3JhZ2UgdGFibGVzIG9uIExpbnV4CisKK2NvbW1pdCBkNjJhMGViOTA3MGI0ZDhkOWZlMmJjZmRiNGQ1M2QzN2VmODE0ZjliCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAyOCAxNDo0OTowOCAyMDExICswMjAwCisKKyAgICBEb2N1bWVudCBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgb3B0aW9uLgorCitjb21taXQgZjY2MGI4YzBkOGMyNzA3YmQ3MzE0MmYwNzYwNzljOTE2OWYzNTk1NgorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMjggMTQ6NDA6MjcgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGFkZGVkICdpbnRlcmZhY2VfcmVwbGFjZV9vbGQnIG9wdGlvbiB0byByZW1vdmUgb2xkIGVudHJpZXMKKyAgICBpbiBpZlRhYmxlIHdoZW4gYW4gaW50ZXJmYWNlIHdpdGggdGhlIHNhbWUgbmFtZSBhcyBhbHJlYWR5IGV4aXNpbmcgb25lCisgICAgYXBwZWFycy4KKyAgICAKKyAgICBFLmcuIHJlbW92ZSBvbGQgcHBwMCBpbnRlcmZhY2Ugd2hlbiBuZXcgcHBwMCBzaG93cyB1cC4KKworY29tbWl0IDQwNmNhYjgxODkyNjQ5OWMzMTIxZGVjZTQzNzdkNjc2Mzg4OTQwNDIKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDE0OjMyOjU3IDIwMTEgKzAyMDAKKworICAgIERvY3VtZW50IHRoZSBpbnRlcmZhY2VfZmFkZW91dCBvcHRpb24uCisKK2NvbW1pdCA0MmI4ODNjZTE4ZTU4Y2E4OWZkZmQ1MTRlYzY5OGUyZjdmZmQxZjYzCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEp1bCAyOCAxNDozMjozOCAyMDExICswMjAwCisKKyAgICBBbGxvdyBpZlRhYmxlIGVudHJpZXMgdG8gYmUgZGVsZXRlZCBpbW1lZGlhdGVseSB3aGVuIGFwcHJvcHJpYXRlIGludGVyZmFjZQorICAgIGRpc2FwcGVhcnMgKGkuZS4gaW50ZXJmYWNlX2ZhZGVvdXQgPSAwIHdvcmtzIGFzIGV4cGVjdGVkKS4KKworY29tbWl0IDQ1MDYyZWE0N2JlMWNkOGRmNDkzM2EwZGU3ZjcyZjhjZjkxODNhYWUKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgSnVsIDI4IDEyOjI0OjEwIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBhZGRlZCAnaW50ZXJmYWNlX2ZhZGVvdXQnIGNvbmZpZ3VyYXRpb24gb3B0aW9uIHRvIHNldCBsaWZldGltZSBvZiBpZlRhYmxlIGVudHJpZXMgb2YgcmVtb3ZlZCBpbnRlcmZhY2VzLgorICAgIAorICAgIFByZXZpb3VzIGxpZmV0aW1lIHdhcyBoYXJkY29kZWQgNSBtaW51dGVzLCBub3cgaXQncyBjb25maWd1cmFibGUuCisKK2NvbW1pdCAzMWZhMDdjZDlmZmRlNDZkNDFkMmI1ODM4YzNmYzRkMDE1NDhiZmI1CitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAyNyAxNDo0NTo0NyAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcHVyZ2Ugem9tYmllcyBvZiBwYXNzX3BlcnNpc3QgY2hpbGQgcHJvY2Vzc2VzLgorICAgIAorICAgIElmIHBhc3NfcGVyc2lzdCBwcm9jZXNzIGVuZHMsIHdlIHNob3VsZCBwcm9jZXNzIGl0cyBzaWdjaGlsZCBzaWduYWwuCisKK2NvbW1pdCAxMWJkNmUwMzJkMTVmZmIxMWQ3MmUzNTJjYTZiYzk1MDIzYzMzNzFhCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1bCAyNyAxNDo0NTowOSAyMDExICswMjAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcnVuIHNpZ25hbCBoYW5kbGVycyB3aGVuIHNlbGVjdCgpIGlzIGludGVycnVwdGVkLgorICAgIAorICAgIFRoaXMgYmVoYXZpb3IgaXMgaW5kaWNhdGVkIGluIGNvbW1lbnQgb24gbGluZSAxMjQ0LCBidXQgaXQgd2FzIG5vdCBhY3R1YWxseSBkb25lLgorCitjb21taXQgY2Q2ZTM4MmJlZGE4ZDQwZWRkMDY2NGU4ZmFlYzhkYjIyNGU1ZDVkNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEp1bCAyNiAxNjoxNjo0NiAyMDExICswMjAwCisKKyAgICBDbGFyaWZ5IGFuIElQdjYgc291cmNlIGNvZGUgY29tbWVudAorCitjb21taXQgMmNlYzYyNDc5MmFmODU0NjUwNWZiYTAyY2EwYTJlMjExNmE1NTllNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YW5hc3NjaGVAYWNtLm9yZz4KK0RhdGU6ICAgVHVlIEp1bCAyNiAxNDo1OTozMyAyMDExICswMjAwCisKKyAgICBTcGVsbGluZyBmaXg6IGRlZmluZWR5IC0+IGRlZmluZWQKKworY29tbWl0IGY5NWExZjM4MGVhMThmZjYzM2YyNzNhOWFhNWU5ZWIyNzYyNzAxMGUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMjYgMTQ6MTk6MTQgMjAxMSArMDIwMAorCisgICAgU3BlbGxpbmcgZml4OiBhbGV2aWF0ZSAtPiBhbGxldmlhdGUKKworY29tbWl0IGM1YTg0NjRjNDJhOTRjMjUwZWUyZGZhMmE0NzMxMDlhNzM0MjAzZDgKK0F1dGhvcjogSmFuIFNhZnJhbmVrIDxqc2FmcmFuZWtAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgSnVsIDI2IDE0OjI0OjU1IDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDMzMTAzNzU6IGZyb20gRXJpbm4gTG9vbmV5LVRyaWdnczogZml4ZWQgcGFyc2luZyBvZiB2YXJiaW5kcyB3aXRoIE1JQiBuYW1lcworCitjb21taXQgZWJkZDIxNmMwNzRiZjQxY2QzYTA4NGJkMTQ2ODljZjAxYzg4N2IzMQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAxOSAxODozNjoxMSAyMDExIC0wNzAwCisKKyAgICByZW1vdmUgYnJva2VuIHdoaXRlc3BhY2UgbGluZXMgdGhhdCBsZWFkcyB0byByZWFkaW5nIGNvbmZ1c2lvbgorCitjb21taXQgZDY1YzdiMTRhMGY5MTU2MGJiZjY1Mjc0ZjYyZTQ4ZGI5N2EzNGIzZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEp1bCAxOSAxODo0NjoxMCAyMDExIC0wNzAwCisKKyAgICB1cGRhdGVkIGdpdGlnbm9yZSB0byBpZ25vcmUgYSBudW1iZXIgb2YgYXV0by1nZW5lcmF0ZWQgZmlsZXMKKworY29tbWl0IGFiMWQ4ODdiYTM4M2MzM2Q4NTNhYTRkMzQ4YmJjZWFiOTgxYWEyNDUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMTg6MzY6MTEgMjAxMSAtMDcwMAorCisgICAgcmVtb3ZlIGJyb2tlbiB3aGl0ZXNwYWNlIGxpbmVzIHRoYXQgbGVhZHMgdG8gcmVhZGluZyBjb25mdXNpb24KKworY29tbWl0IDcwZGVlNGI4ZGQzN2U4YjFkNTlkYjAzY2Q3ZjYzMWZlMzU2ZjE5ZTQKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMDk6Mzg6MTYgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMzY5NjgwOiBmcm9tIElseWEgWWFub2s6IGNoYW5nZSBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzIGZyb20gaW50IHRvIGxvbmcgc3VjaCB0aGF0IG1vZGlmeWluZyB0aGUgY29ycmVzcG9uZGluZyBNSUIgb2JqZWN0IGRvZXMgbm90IG92ZXJ3cml0ZSBtZW1vcnkgaW4gNjQtYml0IGJ1aWxkcy4KKworY29tbWl0IDY5MGVhN2RjNDVjNmZlMWE3YmJmYTE1ODRlZDliZjkyMWYxOWIyOGYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMDg6Mjg6NTkgMjAxMSArMDIwMAorCisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBBZGQgbWlzc2luZyBuZXdsaW5lIGNoYXJhY3RlciBpbiBhIGxvZyBtZXNzYWdlCisKK2NvbW1pdCBkZDJmYzJlZDg4ZDBmOWJiODFkZTM1ZGJlMWY5YmQzYmJiYmIzZDkwCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUdWUgSnVsIDE5IDA4OjI4OjEzIDIwMTEgKzAyMDAKKworICAgIENIQU5HRVM6IHNubXB0cmFwZDogSW52b2tlIHNodXRkb3duX3BlcmwoKSB3aGVuIHNodXR0aW5nIGRvd24KKworY29tbWl0IDZkZWVjMWE4OTA0OGM4ZGIyNjUyMzUxN2FmOThkZGQzOTdmYzc3YzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdWwgMTkgMDg6MjM6MDUgMjAxMSArMDIwMAorCisgICAgU3BlbGxpbmcgZml4OiBicmFua2V0IC0+IGJyYWNrZXQKKworY29tbWl0IDhkOWRjYzgwNmVhYjM3ZmUyZGRmOWNjMzRjZjg2NDY3MjY1YjYyY2YKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFN1biBKdWwgMTcgMTE6Mzg6NTggMjAxMSArMDIwMAorCisgICAgUnVuIGF1dG9yZWNvbmYuIEZpeGVzIGJ1aWxkIGJyZWFrYWdlIGNhdXNlZCBieSBwYXRjaCBkNTg4ZWM4NTNiZDA1MzFmMjEyZmNiZjUxYjk2MmI5NmM2ODI4YjU5IChSUE0gNC45IHN1cHBvcnQpCisKK2NvbW1pdCBhNTY3MjFhM2U3NzU0ZTM4OWRhYTdlOGEzZDU3OTI4OTllZGM5ZGUzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhbmFzc2NoZUBhY20ub3JnPgorRGF0ZTogICBUaHUgSnVsIDE0IDE2OjE4OjMyIDIwMTEgKzAyMDAKKworICAgIEFkZCBhdXRvbTR0ZS5jYWNoZSBhbmQgc3RhbXAtaCB0byAuZ2l0aWdub3JlCisKK2NvbW1pdCA4NTFiY2Y1M2ZjZDEzY2RmMGJhOWYxMmU1ZDYwM2U3M2Y4YmI5NjExCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSnVsIDE1IDE1OjMyOjQ5IDIwMTEgLTA3MDAKKworICAgIG1lbnRpb25lIHRoZSAnYmVmb3JlJyBwYXJ0IG9mIHRoZSBpbmplY3RIYW5kbGVyIGxpbmUKKworY29tbWl0IDlmNzkzNjMwMTYyY2I3NzEzYWM0YjY4YzlhYWJlNTBlNjc1MTQwNzEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdWwgMTQgMDc6MzE6MzAgMjAxMSAtMDcwMAorCisgICAgZml4IGEgdHlwbworCitjb21taXQgZWRjMmM4ODM3NWZlY2NiMTc2YmNhZGViNTg4MTBkZDU3YmQ5N2ZiNworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIEp1bCAxMSAxOTozMzowMyAyMDExIC0wNzAwCisKKyAgICBhZGRlZCBhIGNvcHkgb2YgdGhlIHNoZWxsLWZ1bmN0aW9ucyB0byB0aGUgb2xkZXIgYnJhbmNoCisKK2NvbW1pdCA5NjRkNjM1MTQ5ODJkNmRkOWZhOTUwMjBkMjRhM2U4OGIyMmYyZDBjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDExIDE5OjMwOjI5IDIwMTEgLTA3MDAKKworICAgIGEgY29weSBvZiB0aGUgcmVsZWFzZSBmaWxlIGFwcGxpZWQgdG8gdGhlIG9sZGVyIGJyYW5jaGVzCisKK2NvbW1pdCAxOTZlMTEwYjMxNGUzN2U3M2E3NGVkYjAzYzQzZGEwMjk5ZWE4YjQ0CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDExIDE5OjM0OjA2IDIwMTEgLTA3MDAKKworICAgIGFkZGVkIDUuNyBwYXRjaGVzCisKK2NvbW1pdCBhMmFjMjRkZDRiNWI3MDk3NzNmZTgyNzY4N2M4NTk4Mjc3NWQ5OTk4CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gSnVsIDExIDE5OjMzOjAzIDIwMTEgLTA3MDAKKworICAgIGFkZGVkIGEgY29weSBvZiB0aGUgc2hlbGwtZnVuY3Rpb25zIHRvIHRoZSBvbGRlciBicmFuY2gKKworY29tbWl0IDhhZDMyY2VmYjM3YzYyMDgwYzRmM2Q3NDQ0Mzg4NGJlYzFjNDlhZGQKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBKdWwgMTEgMTk6MzA6MjkgMjAxMSAtMDcwMAorCisgICAgYSBjb3B5IG9mIHRoZSByZWxlYXNlIGZpbGUgYXBwbGllZCB0byB0aGUgb2xkZXIgYnJhbmNoZXMKKworY29tbWl0IDlmZjQ3MTQzOWUzMjYyNTUwNjYzNzdjNzZkOTk1ZTFhYWYyOTZiZDIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjkgMjM6MTU6NDIgMjAxMSAtMDcwMAorCisgICAgZml4IHRhZyBwdXNoaW5nCisKK2NvbW1pdCBmOWE2NTM4NWIyM2QwNmRiYmU5NDMwYTIzYzhlYmNmNjhkMTIxMjdlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI5IDIyOjMyOjEwIDIwMTEgLTA3MDAKKworICAgIG1pc2MgcHVibGljYXRpb24gZml4ZXMgZm91bmQgd2hpbGUgcHVibGlzaGluZworCitjb21taXQgZGY5Y2Y5YTFlMjkzZDA1YTI0Nzg2Njk0ZjY4YzA1YTJiZTEzYTliMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAxNjozNDoxMSAyMDExIC0wNzAwCisKKyAgICB4bWwgZml4ZXMKKworY29tbWl0IGVlOGQxNjA0MTZjMmY3ZDE5NDE4NjNlN2QzNzUxMjY1OGUzZjJmMzYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjkgMTY6MzM6NTAgMjAxMSAtMDcwMAorCisgICAgdXNlIGdpdDJjbCB0byBnZW5lcmF0ZSB0aGUgQ2hhbmdlTG9nIGZpbGU7IG5lZWRzIG11Y2ggbW9yZSB3b3JrLgorCitjb21taXQgNWQ0YmI4MDExM2RkY2NlNWNlZTI5M2E0ZTUzN2IyMDFmYWZjYWI4MworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAxNDo0ODozOSAyMDExIC0wNzAwCisKKyAgICB1c2UgdGhlIG5ldyBydW4tYXV0b2NvbmYgc2NyaXB0CisKK2NvbW1pdCA2MWZmZWY2MjY4Njc1YTkxZTIzMGQ0NGIzNDA3YTNkMGMzZmZjODlkCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI5IDE0OjQ3OjU2IDIwMTEgLTA3MDAKKworICAgIEEgc2NyaXB0IHRvIGludm9rZSB0aGUgY29ycmVjdCB2ZXJzaW9uIG9mIHRoZSBhdXRvY29uZiB0b29sCisKK2NvbW1pdCBkMGY2ZjhkZTM3MjkyYjdmYmM5ZTA1NzkzNjkwYjU3ODRhMDQxZDQ2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDI5IDA4OjQxOjQ1IDIwMTEgLTA3MDAKKworICAgIHJlbWFpbmluZyBjb21tYW5kIGxpbmUgY2hhbmdlcyBmb3Igc3ZuIC0+IGdpdAorCitjb21taXQgMTY1NjA4NDAwMjBkYzVlMGM0YjI4Y2MyZTMwYmIyY2QwMzRjZTBkMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAwNzoyNjo1NSAyMDExIC0wNzAwCisKKyAgICBtYWtlIHRoZSBicmFuY2ggZWNobyBvdXRwdXQgYW5kIHN2biB1cGRhdGUgY29udmVydGVkIHRvIGdpdCBlcXVpdmFsZW50cworCitjb21taXQgZjc3NWJjZDZhN2E1MGYzMzc4MjUyNmVjZGIxYmVlYTU1ZTNmZTgyMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyOSAwNzoxMToyOSAyMDExIC0wNzAwCisKKyAgICBwdWxsIHRoZSBicmFuY2ggaW5mbyBmcm9tIGdpdAorCitjb21taXQgZDU4OGVjODUzYmQwNTMxZjIxMmZjYmY1MWI5NjJiOTZjNjgyOGI1OQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjkgMTY6MDc6MDAgMjAxMSArMDIwMAorCisgICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45CisKK2NvbW1pdCBhZjhiMjM1MjM0ZjcyOTQ0YTY0OWE3NmYwZDMwY2ZmOTVhYzJlODk1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8b3BlbnNvdXJjZUBoYXJkYWtlcnMubmV0PgorRGF0ZTogICBUdWUgSnVuIDI4IDEzOjExOjE5IDIwMTEgLTA3MDAKKworICAgIE1lbnRpb24gdGhlIEdpdCB3aWtpIHBhZ2UKKworY29tbWl0IDliYzgyZTRjYTQ4MzdmMDAwNzJkYmE4NmI5NDk3YTI3MTg2OTA5ZjkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFuYXNzY2hlQGFjbS5vcmc+CitEYXRlOiAgIFR1ZSBKdW4gMjggMTk6MTM6MzUgMjAxMSArMDIwMAorCisgICAgQWRkIC5naXRpZ25vcmUKKworY29tbWl0IGYyZGY4YTJiMDE2NWUwMTM3ZmQwMTdiNDFjN2QwNGUzYTVlMTY4ZTYKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxvcGVuc291cmNlQGhhcmRha2Vycy5uZXQ+CitEYXRlOiAgIFR1ZSBKdW4gMjggMDg6Mjk6MDggMjAxMSAtMDcwMAorCisgICAgV2UncmUgbm93IHVzaW5nIGdpdCEKKworY29tbWl0IDdkOTE3Y2ZjOGY3NDU3NDAzMjU2NDgxNWFiMGZiNDgzYjY5MTg2NGUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMzowMDo1MCAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGExNjJlOTMxZjI5OTMxY2UwM2Q0MGQ3M2RkOTY5ZjYwODYwODNiODAKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMjozODoxNCAyMDExICswMDAwCisKKyAgICBNaXNzaW5nIGNoZWNrIGZvciBycG10cy5oCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTIzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMDc4N2ZmMWY2MzJlMDg0NDBlOGJiMjQwZGFiY2E1YzVlNjNmZDgyZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgSnVuIDI0IDEyOjIwOjIwIDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDQ1MzBkODc3NTMxMDgzYmZmZmQzYmJjYTRhODJjMzAwMDliZWY4ZmQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMjowODoyMyAyMDExICswMDAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDUyMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDQ5NTc1ZjEzNmI0MGQwOGQyMWExNjhhMGQ1NDVkODVmNTljNTg3MDEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAyNCAxMjowMjoxNSAyMDExICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MjAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1OTllM2NkZmY5ZTc4NjIyNTM1NjgzYTY5ZjQyOTc3ZGY0MDg5YmE5CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBKdW4gMjMgMTU6NDE6MzggMjAxMSArMDAwMAorCisgICAgVHdlYWsgUlBNIGhhbmRsaW5nIHRvIHdvcmsgd2l0aCBsaWJyYXJ5IHZlcnNpb24gNC45CisgICAgQmFzZWQgb24gYSBwYXRjaCBieSBKYW4gU2FmcmFuZWsKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA1MTkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1YzJhNjkxYmQyOWVhMzQzMDQ2ZDIxODYyMTUwMmE2NmJjOTZhMWJiCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMjIgMTQ6Mjc6MzkgMjAxMSArMDAwMAorCisgICAgUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tCisgICAgYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuCisgICAgCisgICAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTE4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMjcwNzQzNWVmNWUwMTFjMzYzN2YzNzk4MWNiZTRkNTBmMmU3MjlkYworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDIyIDEzOjI2OjQ1IDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNTE2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMjcyZjk2YWVjOTM3ZWQ3NGNjNGRiOTgwNzQ1ZDJkYmUwMGNhNTNhMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDIyIDEzOjA2OjQ1IDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDUxNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDllNDcxYWRjMmE0MDIxMmI0YzAxN2NiY2VkNmUyNTg4MmUzMDZhNGQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAyMiAxMzowNDoxMiAyMDExICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA1MTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA4YTVhYzc3NWRlNTc1NDE2MDcwNjY1YzMwYmMzZDc3MzM2ZTEyYmNiCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBKdW4gMjEgMTQ6Mjg6NDggMjAxMSArMDAwMAorCisgICAgUHJvdmlkZSBhIGZyYW1ld29yayBmb3IgcmVhZGluZyBSUE0gcGFja2FnZSBpbmZvcm1hdGlvbiBmcm9tCisgICAgYSBjYWNoZSBkaXJlY3RvcnkgKHJhdGhlciB0aGFuIHF1ZXJ5aW5nIHRoZSBSUE1kYiBkaXJlY3RseSkuCisgICAgCisgICAgTXkgYXBvbG9naWVzIHRvIEplZmYgSm9obnNvbiBmb3IgdGhlIGRlbGF5IGluIGFkZGluZyB0aGlzIGZ1bmN0aW9uYWxpdHkuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNDUyNDI1NWJhNjA4M2QyNWMwM2Y2NDM2ZWNiZTM5ODgzNmY0YTBmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIEp1biAxOSAwNzo1MjoyNiAyMDExICswMDAwCisKKyAgICBGb2xsb3ctdXAgZm9yIHIyMDUxMTogcmVhbGx5IHVzZSB0aGUgcHJvcGVyIGZvcm1hdCBzcGVjaWZpY2F0aW9uLgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDUxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDYyMWM5ZWRhMTI4MmI3ZjU2MmIzNzc3YjVmYjU3ZmQzNTVjMWEyMDYKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBKdW4gMTcgMTk6MDk6NTIgMjAxMSArMDAwMAorCisgICAgRml4IGEgYnVnIGluIGEgZGVidWcgc3RhdGVtZW50IGludHJvZHVjZWQgYnkgcGF0Y2ggMzMxMDI1MCAvIHIyMDQ5NDogdXNlICVsZCB0byBwcmludCBhIHZhbHVlIG9mIHR5cGUgb2lkIGluc3RlYWQgb2YgJWQuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTExIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgM2IzZTk3YjMwOWE1MzVkZjFhOTliMDM2OTM4NjkwNTA2NDlkNTNhMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAxNyAxOTowNjo0MiAyMDExICswMDAwCisKKyAgICBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQgb2YgJWxkCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgODc4YmNkODc2NGJlNWQxNThkNjVmNGIyMGE2OGNiM2E5NDhkYmRkZgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAxNyAxOTowNjo0MiAyMDExICswMDAwCisKKyAgICBVc2UgJXAgdG8gcHJpbnQgYSBwb2ludGVyIGluc3RlYWQgb2YgJWxkCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNTEwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMzc0YWYwNzU4NjQ0ZTlhYmNjNDk5OGZiMjkxY2EzNzM4NjkwNDhmOAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEp1biAzIDA2OjMwOjMzIDIwMTEgKzAwMDAKKworICAgIFJldmVydGVkIHIyMDM2MjogdGhhdCBwYXRjaCBtYWtlcyBzZW5zZSBvbiB0aGUgdHJ1bmsgYW5kIHRoZSA1LjYgYnJhbmNoIGJ1dCBub3Qgb24gdGhlIDUuNSBub3Igb24gdGhlIDUuNCBicmFuY2guCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDk1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNzE4OTM1NmQ4OGI0Y2JkOTIwZmQ5MzQxMTFlNGI2ZDY5MDUxM2Y1MAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDIyOjI0OjIzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMzEwMjUwOiBmcm9tIGZlbm5lcjogbWlzYyBmaXhlcyBmb3IgZGVidWdnaW5nIG91dHB1dCBvZiBhZ2VudHgKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0OTQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjOWMzZGIxNTc1MmQ2ZTRiOGI5NjAwY2Q3ZDFhOGQ3OWQ2ZDgzYzNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAxNTo1NzoxOCAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDBlZWZlY2NmNzZkNjMwNzk2YjdjOGM2NGEwZTMzZDAxNzUyNjJmY2IKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDE1OjQ4OjQ5IDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMzVmMGEzODIyYWY4ZjAwODU1MjQyOTA2YjEzMmU3MDJkZTg5OTIxMworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMTU6NDc6MDQgMjAxMSArMDAwMAorCisgICAgbWFrZSBkZXBlbmQKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiMWU1YWNiYjYwNWJlZDMyMTBjN2Y1ZGRhZWVlZjJhMDUwY2Y2YmVhCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAxNTo0MjowMCAyMDExICswMDAwCisKKyAgICBSZWluc3RhdGUgYW4gInVudXNlZCIgbGFiZWwgdGhhdCBpcyBhY3R1YWxseSBzdGlsbCByZXF1aXJlZC4KKyAgICAocmVmZXJlbmNlZCBpbiBsaW5lIDI3MTApCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDg0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMjQ4NzU3OWQxZTk3NzEzN2RjNjQzYWNlZTc2MmFlYWFmYTYwZjRiZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMTU6MzI6MjMgMjAxMSArMDAwMAorCisgICAgRml4IHR5cG8KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0ODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjYWMxMWE5MmMwNGE1Y2M1MWUyMzFiZTBhYjExNmRiODU1MjIxZGUxCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAxNTowODo1MSAyMDExICswMDAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGZhOGVlNGY5N2MyZmE4ZmI2ZTU5Y2YwNTVlMGQ4MWEzYmRlY2ZiOTcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDE0OjUxOjE0IDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ4MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDg2NWNjZmYzMjIwZDAxN2YzZWYzYjYxOWYwZjhmNDQ3ZDMzNTE0ZWIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDEwOjE5OjMzIDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgN2I2MTliMTBlOTEyYmRkMWM3NjMzY2UzYjFlNzI1NzRjMjM0MWNlOQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMTA6MDE6MDEgMjAxMSArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1NWY2ZThjM2EwZjc3NDFiZjhhNjg5YTBmY2YwNmNjNDgwYWQxZWZmCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBKdW4gMSAwOTo1NDowNCAyMDExICswMDAwCisKKyAgICBtYWtlIGRlcGVuZAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGQ3YTI3M2NjYmVlNTY5MDFlODY3OWEwZGUzMmJjNmFhMTZkNDRiZjUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEp1biAxIDA5OjA2OjMyIDIwMTEgKzAwMDAKKworICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMTI2MzUzNTUxZjQ5MzdmN2MwYmMxYWE4YzgwYzJkNDhkMTM0OWM5MworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgSnVuIDEgMDk6MDA6MjQgMjAxMSArMDAwMAorCisgICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgN2ZhMzBmY2UwOGFjNDk0YzM1OGU2YTMxYjk3MDJlMTJmZmViZDQ2MQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzMSAyMjo0OTozMiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0ggMzA2Njg2MjogZnJvbSBmaGV3OiBmaXggdGhlIGFnZW50IGZvciBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NzEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiNDFkNGFhZjdhMDZiNDVhOWVjMDdhNTUxMWJhYzViYWQ2ZmRkYTJhCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTWF5IDMxIDIyOjQ5OjMyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yIGNvbXBhcmluZyB1bnNpZ25lZCBsYXJnZSBpbmRleGVzIG9mIHRoZSBkaXNrIGFuZCBleHRlbmQgdGFibGVzLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ3MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFhODQzODY1MDQwNWFlMzg0OTFmM2E1YzlhMmIxMGZjOTliMWI5YzIKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMzEgMjI6NDk6MzIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDMwNjY4NjI6IGZyb20gZmhldzogZml4IHRoZSBhZ2VudCBmb3IgY29tcGFyaW5nIHVuc2lnbmVkIGxhcmdlIGluZGV4ZXMgb2YgdGhlIGRpc2sgYW5kIGV4dGVuZCB0YWJsZXMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDcxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzA3ZDU5YmQ5MmNjMzRiYzk2OTY0YjVlNzQzY2ZkZWU3OTg3NWI3YQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMzEgMTI6MzA6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4KKyAgICAKKyAgICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjayAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYmE2ODgwNmRkMDY0ZjY1NTUzNmQ2ZjY5MzcxYzY5OWU2MTYyMDU2ZQorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMzEgMTI6MzA6MzAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IGZpeGVkIGhyU1dSdW5QYXRoIG9mIHN3YXBwZWQtb3V0IHByb2Nlc3NlcyBvbiBMaW51eC4KKyAgICAKKyAgICBmZ2V0cygpIHJldHVybnMgTlVMTCBib3RoIHdoZW4gL3Byb2MvUElEL2NtZGxpbmUgaXMgZW1wdHkgKD0gc3dhcHBlZCBvdXQpIGFuZCB3aGVuIHRoZSBwcm9jZXNzIGV4aXRlZCBhZnRlciBmb3BlbigpLCBzbyBjaGVjayAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDcwIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgOTFjZGI4MTViYjM2NTc1N2Y4NGMyMjM0ZDllNWY1NzYzYWM0YjA0ZgorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAyNiAxNjoxMjo0OCAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nIGZvciBhbiBlbmdpbmVJRC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhNWE5ZDFlOGEyNGYwMmRmZTRlOTdhZjA0ZDZmNWUwYjU5MGE1MmFlCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDI2IDE2OjEyOjQ4IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAzMjk5Mzg0OiBmaXggSU5GT1JNcyBzbyB0aGV5IHJldHJ5IHByb2JpbmcgZm9yIGFuIGVuZ2luZUlELgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDRiOTU2YzQ3MGFjN2U0OTM5OWU3ZTEyMzk3OThlMmEwNjBmZTU4YmEKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMjYgMTY6MTI6NDggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoIDMyOTkzODQ6IGZpeCBJTkZPUk1zIHNvIHRoZXkgcmV0cnkgcHJvYmluZyBmb3IgYW4gZW5naW5lSUQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDU4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYTliYzM0ZjZmNDUwYjQ3NTFkZWY4Yjg1NzJiMjVjMGY3OTE4YWQ1ZQorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAyNiAxNjowNjoxMSAyMDExICswMDAwCisKKyAgICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZyBhdXRoa2V5L3ByaXZrZXkvZXRjcworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ1NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFkMzMxMzc1ZDg2MjgyZTIzYjRhZTYwMjA1Mjc1M2FhNGE0Zjg3YWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMjYgMTY6MDY6MTEgMjAxMSArMDAwMAorCisgICAgQXBwbGllZCAocm91Z2hseSkgcGF0Y2ggMzI5OTM3MCB0byBhdm9pZCByZXdyaXRpbmcgZXhpc3RpbmcgYXV0aGtleS9wcml2a2V5L2V0Y3MKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NTcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhYTVlYzhkMTlkZTI5NTE1MTAzMjYzOWUxMzhlOGI3NjU4Nzg2NmJjCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDI2IDE2OjA2OjExIDIwMTEgKzAwMDAKKworICAgIEFwcGxpZWQgKHJvdWdobHkpIHBhdGNoIDMyOTkzNzAgdG8gYXZvaWQgcmV3cml0aW5nIGV4aXN0aW5nIGF1dGhrZXkvcHJpdmtleS9ldGNzCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDU3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgODgwMTMyZGFmMmY1M2RhZGZlNDFiMjJhZDMyMmQ3MDY1MGE4MmNjMQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIE1heSAyNSAxMzowNzoyMyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW86IExpbmsgd2l0aCBnZGkzMi5saWIgaWYgT3BlblNTTCBoYXMgYmVlbiBlbmFibGVkIGJlY2F1c2UgZ2RpMzIubGliIGlzIGEgZGVwZW5kZW5jeSBvZiBPcGVuU1NMLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ1MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDg4NWQxZjU1Y2VmYTgyZDk1MzU2ZTNlMzVlY2FlODExNThhZjNiNTkKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBNYXkgMjUgMDk6MjE6MDUgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFVzZSBwcm9wZXIgZm9ybWF0IHNwZWNpZmllciBpbiBkZWJ1ZyBzdGF0ZW1lbnRzIGZvciBwcmludGluZyB2YWx1ZXMgb2YgdHlwZSAnb2lkJy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0NDkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA3MjNiYzM4NzU3MTc1NzQyNmI4NjFiNmE4ODU0YTRiOGQ4OWRjZDE1CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgTWF5IDI1IDA5OjIxOjA1IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cyBmb3IgcHJpbnRpbmcgdmFsdWVzIG9mIHR5cGUgJ29pZCcuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMGYyZWNkNmYwNWRlZTM3ZjkzZWE5YTlhYzllNzI3NmQ2YjQ3OGRkMAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMjQgMTI6NTE6MzkgMjAxMSArMDAwMAorCisgICAgQWRkZWQgTlVMTC1jaGVja3MgYWZ0ZXIgbWFsbG9jCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzg5Yzk1YmNjZDEzOGJkYWVlM2UwMWYyZDBmNjYzMzI4ZThlN2U4OAorQXV0aG9yOiBKYW4gU2FmcmFuZWsgPGpzYWZyYW5la0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMjQgMTI6NTE6MzkgMjAxMSArMDAwMAorCisgICAgQWRkZWQgTlVMTC1jaGVja3MgYWZ0ZXIgbWFsbG9jCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDQ2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTNiMjBjYWFiYzMxM2Q4ODhjYTRjYzk1NDRlN2VjZjJlMWFiMDlkNAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDIyIDE5OjM0OjEwIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDMzMDUxNTc6IEZpeCBpcEFkZHJlc3NQcmVmaXggaGFuZGxpbmcgb2YgSVB2NiBhZGRyZXNzZXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0NDUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA5YjEyNWM3MTNiZTFlY2NhNjNmMmIxNjlkMmMxMGQxZDI0YTJkNDc2CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjIgMTk6MzQ6MTAgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogYWdlbnQ6IEJVRzogMzMwNTE1NzogRml4IGlwQWRkcmVzc1ByZWZpeCBoYW5kbGluZyBvZiBJUHY2IGFkZHJlc3NlcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDA0MzMxODgyYTBjOWRmNzlkOTEzNTQ1NzM4MmEyNzI1YzMwMzBmODEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyMiAxOTowNzo1NiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDZlMmJmOTFhYmE1NjJjY2FlYjEzMDQxOTg5M2E3MTcwYmIyMzEyZjkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyMiAxOTowNzo1NiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBweXRob246IEJVRzogMzI5NTQwNzogRml4IGhhbmRsaW5nIG9mIHZvaWQgcG9pbnRlcgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGNhYmE2NTFmODRmNzEwMmNiYTE4MWQxOTViNTljNzk3NjhkOTQ1NjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSAyMiAxODo1Nzo1MyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcyAoc25tcHtVbmF2YWlsYWJsZSxVbmtub3dufUNvbnRleHRzLHNubXBVbmtub3duUERVSGFuZGxlcnMpCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzVhNDU4MGI5MjRlZDVjNDljZmZkMWI3ZmQ4ZTkzMmVkMTY4ZWNkYgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTdW4gTWF5IDIyIDE4OjU3OjUzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMzI2NDg1MjogUmVjb2duaXNlIG1pc3NpbmcgcmVwb3J0IHR5cGVzIChzbm1we1VuYXZhaWxhYmxlLFVua25vd259Q29udGV4dHMsc25tcFVua25vd25QRFVIYW5kbGVycykKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA5ODgxNTAwM2YzNDVlY2U5M2ZjZjgzNmZiMGMzZWE1OTk3YzhmOTAwCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBNYXkgMjIgMTg6NTc6NTMgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAzMjY0ODUyOiBSZWNvZ25pc2UgbWlzc2luZyByZXBvcnQgdHlwZXMgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDMwMjQ1ZDAwZDMwY2ZjNTI2OTM5YmIyZmY3MjFiMjA3NjU0NmU4YzcKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSAyMCAxNTo0MTowNiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDU2Yzc0YzVhNDkzODYzMzBhNTgxNTY0YTZlZTE1NzliY2Y2YzUwOWUKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSAyMCAxNTo0MTowNiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nIGhvb2sgaXMgaW5pdGlhbGl6ZWQgdG8gTlVMTAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDQ1YjRiZDUzN2I2Mjc1MzRiMWM2MjE4MjE5ZmQ3NzBlYjVhNGExNTUKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTkgMTk6NDY6MjAgMjAxMSArMDAwMAorCisgICAgdXNlICNpZmRlZiByYXRoZXIgdGhhbiAjaWYgZm9yIGRlZmluZSBjaGVja3MuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwNDQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNWNjNWE0Y2QwZDY0ODkzNWVjNzZlMDk2MTYyMjlkMGNlZWJjNDFhMAorQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxOTo0NjoyMCAyMDExICswMDAwCisKKyAgICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0NDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiNTg4ZDFhMWRhNjgxYjI2ZjM1ZjJiYmYwNDkyMjQyY2Y0ZDgzYzk2CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDE5IDE5OjQ2OjIwIDIwMTEgKzAwMDAKKworICAgIHVzZSAjaWZkZWYgcmF0aGVyIHRoYW4gI2lmIGZvciBkZWZpbmUgY2hlY2tzLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDk4ZDYyMjNlMTBhZjBiMjA3Mzk1YzlhNzExOTBkZmY2ZmE4Nzk1OWMKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMyNmU3YTkzODUxZWQ2Nzg0NDdkYzMyYWI3MmZiYzFhMDA4YTEzNWQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMwMGY4OGYzMzg4OGVkZDQ4MGFjYzllYzkzMTJkNmI2MWUxNzBhNzYKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxOSAxNzoxOTozMSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UgYW5kIHNubXBfYXN5bmNfc2VuZAorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQ0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGNhMDUzOTk2MDIyZTNjMWRlM2UyZDViNTU4ZmFkZjZkNzllOWZkZDMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgMTMgMTI6MDU6MTkgMjAxMSArMDAwMAorCisgICAgRm9sbG93LXVwIGZvciByMjA0MTc6IHJlcGxhY2VkIGEgbWFsbG9jKCkvZnJlZSgpIHBhaXIgYnkgYSBjYWxsIHRvIHJlYWxsb2MoKS4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MjQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwNjg2OTUyMDg1Njk3NmZmNDU5MGEwYmI2MWM0ZTk2ZjE2YzM1ZDZlCitBdXRob3I6IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAxMTo0NzozNiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbWVtb3J5IGxlYWsgaW4gVENQLU1JQiB0YWJsZXMgaW50cm9kdWNlZCBieSBwYXRjaCAjMzA1MzQzNi4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjA0MjEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwNWQzZDNhODIzMTFiZjliNTUzODYyMTZmMTg4MTk4Y2Q4NDlmZmYxCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA5OjAzOjAyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA0ZTk0YWI3ZjBjNjUwOWI2MjgyZWVmYzg4OGFiMGRjZjc4ZTU3NWE2CitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA5OjAzOjAyIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjA0MTggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjYzc4ZDA2MjM5NzU1YzZlYmI4MzE5MDNiNmNlZGQzZTFkYmFiNTgzCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA4OjI1OjMzIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IF9taWJpbmRleF9hZGQoKSBubyBsb25nZXIgcmVhZHMgcGFzdCB0aGUgZW5kIG9mIHRoZSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgYXJyYXkgX21pYmluZGV4ZXMuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYWRjZWQ0YTg0ODc2YTJlM2NiODY4N2I1ZmZhNTgzMGEzYjUwMDNhYQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAwODoxMjo0NyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjAwMTJkZWMyYzk4YmFmMWMwZTI1ZmExN2Q1YmY4OWJhY2QwYTRhNAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAwODoxMjo0NyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaXBOZXRUb01lZGlhVGFibGUuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDE0IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgOGVjZDI5OGRiY2NlZTFlMzI3Y2U2NTg1MmY5ODkyOGQ3YmMwNDFkNworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSAxMiAwODowODo0MSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAgKG5vbi13aW5FeHRETEwpIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNSUItSUkgaWZUYWJsZS4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MTMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkOTYyZmRhNjc3ODE0YjYzNDJhZDFiOWMzZmE4NDIyNWI1NTVjZGEyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgTWF5IDEyIDA4OjA4OjQxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBGaXhlZCBhIG1lbW9yeSBsZWFrIGluIHRoZSBOZXQtU05NUCAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpZlRhYmxlLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGFhMDMyNzY5YmMzZGE4MzAyYzM4ZGQ5ZDYyZDUzZjdmMDU0ZWIyYzcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDc6MzM6MDIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDRmZmE5MDhkMDJjZmFkOWZmMzFhMjAxODE5MmQ0YWQ1Zjk1OTQ2N2MKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDc6MzM6MDIgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDI3MTkxNDUxMmRjODI2OGQ4YmM0OWJhN2VjMzhjYzJhY2VjNjU2YzMKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDY6NTQ6MzMgMjAxMSArMDAwMAorCisgICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMwMDljMTJkNzJiYmMyZTI3OTVkM2E2YjIyY2FiNmJhMDZlNDg1MzUKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBNYXkgMTIgMDY6NTQ6MzMgMjAxMSArMDAwMAorCisgICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+IGV4aXN0ZW50LgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDQxMSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMyZDM1YmQ1YzMyMmQ3YTg1MzZhMWZmMzFkNzNlNDFmNzdjODViOTcKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBNYXkgMTAgMTU6MDI6NTEgMjAxMSArMDAwMAorCisgICAgTWluR1c6IGF2b2lkIHRoYXQgZ2NjIGNvbXBsYWlucyBhYm91dCBwYXNpbmcgYSAoY2hhciAqKSBhcmd1bWVudCB3aGlsZSAodW5zaWduZWQgY2hhciAqKSBpcyBleHBlY3RlZC4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjA0MDIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzZGJlMjc3OTlhM2YwNjViYmYyMTI1OTk0NjY5NjliZWI3MjY5MGQyCitBdXRob3I6IEJhcnQgVmFuIEFzc2NoZSA8YnZhc3NjaGVAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgTWF5IDEwIDE1OjAyOjUxIDIwMTEgKzAwMDAKKworICAgIE1pbkdXOiBhdm9pZCB0aGF0IGdjYyBjb21wbGFpbnMgYWJvdXQgcGFzaW5nIGEgKGNoYXIgKikgYXJndW1lbnQgd2hpbGUgKHVuc2lnbmVkIGNoYXIgKikgaXMgZXhwZWN0ZWQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwNDAyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgOTRiNTIzOGQ4OGEwMjczMDZhYTkxMTU3NTgxMTFjNzg1YTRhYmFkOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSA5IDIwOjUyOjAxIDIwMTEgKzAwMDAKKworICAgIFVzZSBzeW1ib2xpYyBuYW1lZCBmb3IgaWZUeXBlIHZhbHVlcworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDA0YjhlMjc5YTdhNzg1YTc2ZWJmNGI2NTc1ZjQxY2U2Mjk5NDUyYzYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIE1vbiBNYXkgOSAyMDo1MjowMSAyMDExICswMDAwCisKKyAgICBVc2Ugc3ltYm9saWMgbmFtZWQgZm9yIGlmVHlwZSB2YWx1ZXMKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzZGNiZmRkNGYxZmZlYWQ1NTI0MTQ5YjRlZmIwMDEyODY4OGUxNTA1CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBNb24gTWF5IDkgMjA6NTI6MDEgMjAxMSArMDAwMAorCisgICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNWJiMWM5YThmZGM0N2IzZWYzNTVjYjQyZTllMThhZDg4Y2U0OTZmYgorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKKworICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6CisgICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5CisgICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKKyAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCisgICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKKyAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCisgICAgCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZGJiODc5NWE3ZGY1OTVmMDYwM2YyZWM2MTcwNDc5OWY0YzQ4MjY2NworQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKKworICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6CisgICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5CisgICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKKyAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCisgICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKKyAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCisgICAgCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTlhYzg2Mjc4YzM1ODgwMjI5MTQ3NThhMzQ1ZmI5ODJiYjVkNGVjNAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU3VuIE1heSA4IDIwOjAxOjI2IDIwMTEgKzAwMDAKKworICAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCisgICAgVGhlc2UgbW9kdWxlcyB3b3JrLCBidXQ6CisgICAgLSBUaGV5IGFyZSBMaW51eCBvbmx5CisgICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5IGFyZSBwb3B1bGF0ZWQKKyAgICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKKyAgICAtIEFnZW50IGlzIGJsb2NrZWQgd2hpbGUgdGVzdHMgcnVuCisgICAgLSBEYXRhIGZvcm1hdCBmb3IgSW5ldEFkZHJlc3Mgb2JqZWN0cyBpcyB3cm9uZy4gSXQgaXMgQVNDSUksIG5vdCBiaW5hcnkKKyAgICAgIChtYWtpbmcgaXQgZWFzaWVyIHRvIHVzZSBmcm9tIHRoZSBjb21tYW5kIGxpbmUsIGJ1dCAuLi4pCisgICAgCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTNkYjk1ZTE2MTlkZDU3ZGZiNTVhYzc0OTRmNDhkMmFkZDU2ZDk3MworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1heSA3IDE1OjIyOjI3IDIwMTEgKzAwMDAKKworICAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZWE4Y2UwMDc0NGU4MzIzM2Q4NTQzODUyZjg4NGFhMDM3YzExODNhMgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgU2F0IE1heSA3IDE1OjIyOjI3IDIwMTEgKzAwMDAKKworICAgIFJlbW92ZWQgYW4gdW51c2VkIGxhYmVsIGZyb20gcGVybC9TTk1QL1NOTVAueHMuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzYyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYTU4OTY5ZWRkYjNiNjY5ODc3ZDcyMjlmNzE5MDg3YmJkNzI3ZDAzMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDIxOjMyOjAxIDIwMTEgKzAwMDAKKworICAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kIGRpc21hbi90cmFjZXJvdXRlIHRvIGF0IGxlYXN0IGNvbXBpbGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzNTIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyY2NhNjEyNWQ1MzhmYWE5YjUxYjc3MjE0MWYxOTJkN2I2M2NjMGNiCitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMjE6MzI6MDEgMjAxMSArMDAwMAorCisgICAgTkVXUzogUEFUQ0ggMzE5ODc4MTogZnJvbSBmZW5uZXI6IEdldCBkaXNtYW4vcGluZyBhbmQgZGlzbWFuL3RyYWNlcm91dGUgdG8gYXQgbGVhc3QgY29tcGlsZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM1MiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGIxZTc2YmVmODFiZmNlMTZjOGQwYmMwMWU4NTZjYjRjNzU5MzBiNWMKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAyMTozMjowMSAyMDExICswMDAwCisKKyAgICBORVdTOiBQQVRDSCAzMTk4NzgxOiBmcm9tIGZlbm5lcjogR2V0IGRpc21hbi9waW5nIGFuZCBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzUyIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZmNiOGE4ZDI3YzJjYzM3OWRjZTI2M2RiZWU2NzIwZDdiNGUwMmQ3NAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTc6NDY6MjkgMjAxMSArMDAwMAorCisgICAgdmVyc2lvbiB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1MTVhZjk5Y2I5ZTZhM2IwOTIzZTY1MDQ2NmY3NDQ2NGUzYjliNWY2CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNzozNzo1OSAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDM0NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDZmOTI3ZmQ3M2FmMmE0Y2ViNjdmYzQwOTA4MjZhMjg0YTdlNmZjMTkKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDE3OjM1OjUwIDIwMTEgKzAwMDAKKworICAgIG1ha2UgZGVwZW5kCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzQ1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgODA4MGE4MTg5ZWQ3ZWU3M2NhMzIxOGM4MjgwYzY4NzE3ZDQ1MzVkZQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTc6MjI6MTQgMjAxMSArMDAwMAorCisgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2MmZiOTNlMjg3MjhiMGU5M2MxMzRjODhiNjViMWQ0NTNiNmU4OWMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNzoxNzo0NiAyMDExICswMDAwCisKKyAgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAzNDMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA3NGUxM2NjOTViZWU0NjU1ZGYyM2JhNTE0YmQyNjU3ODg2YzllNGI2CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNDoyMzoyNCAyMDExICswMDAwCisKKyAgICB2ZXJzaW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDM0MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDc5MzE4N2FhYTA0Yzg4MWY2YjU3ZmNmMzYxMjk2YjUyYTk0MGUxZjgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDE0OjIxOjQ1IDIwMTEgKzAwMDAKKworICAgIHZlcnNpb24gdXBkYXRlCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMzM5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMTQ2NmUxNWU1MjM4MDk2NWY4NDRjNmQ5OGIzZWIyNTc4OTlhNGNlMgorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTQ6MTk6NTcgMjAxMSArMDAwMAorCisgICAgbWFrZSBkZXBlbmQKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAzMzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkZWM3ZDQ3Y2EzNzY3YzM3ZDE3OTgxZjFjZjllNTgwYWUyZmUwMjE0CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxNDowMjowNCAyMDExICswMDAwCisKKyAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDBlYzFjOTI5MTY3YWRiM2Q5NmI0MWVhYzI0MzUzNDk2YzMzNzFiMDgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEzOjU5OjIwIDIwMTEgKzAwMDAKKworICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFhMDE0NTI5YzVjNGEwN2M4NDA3ZTk1NWE3ZjFmZTY4NmNiN2VlN2MKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEzOjUwOjA2IDIwMTEgKzAwMDAKKworICAgIEZpeCBpbmNvbXBsZXRlIHVuaW5zdGFsbCBjb25maWd1cmF0aW9uOgorICAgIC0gYnJva2VuIHJlbW92YWwgb2YgTWljcm9zb2Z0IERMTAorICAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAzMzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkYWMxMDJiZDViNjNhMjExODFhODAzMGFkYWY1ZmY5NmI5ZjgyNmMzCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBNYXkgNiAxMzo1MDowNiAyMDExICswMDAwCisKKyAgICBGaXggaW5jb21wbGV0ZSB1bmluc3RhbGwgY29uZmlndXJhdGlvbjoKKyAgICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKKyAgICAtIHJlbW92ZSBhc3NvcnRlZCBuZXcgTUlCcyBhbmQgaGVhZGVyIGZpbGVzCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzM1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZmMzYjQxNjc5NGNmNzI5MjJmOGIyZDYzNmJiZWQzNzdjYTFhMzZlZAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBGcmkgTWF5IDYgMTM6NTA6MDYgMjAxMSArMDAwMAorCisgICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246CisgICAgLSBicm9rZW4gcmVtb3ZhbCBvZiBNaWNyb3NvZnQgRExMCisgICAgLSByZW1vdmUgYXNzb3J0ZWQgbmV3IE1JQnMgYW5kIGhlYWRlciBmaWxlcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDMzNSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzYjEzNzI1YjdiZDY0YWM5NDhkOTcwZDlmZTk2NTI5ODhlYTQxMTgKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEyOjU4OjI4IDIwMTEgKzAwMDAKKworICAgIFN1cHBvcnQgVGFyL0daaXAgY29tbWFuZCBwYXRocyBjb250YWluaW5nIHNwYWNlcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDMzNCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGVlYzE3ODc2YTY1M2ZkMDUyZmY2MjQyNGE4Nzk1OGZhOGQwMjk0NDIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIE1heSA2IDEyOjU3OjA3IDIwMTEgKzAwMDAKKworICAgIFJlcG9ydCBHWmlwIGNvbW1hbmQgY29ycmVjdGx5CisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzMzIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzFmYjM3MjI5MTQ3NDFmYTk5OGU2YjdjZWU5Y2U4ZTA3Y2Q0NzAwZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSA1IDA2OjA3OjUxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYmM1MjU4ZGUyMDMwMjI4YjM2OWUxM2QyYTQ3NDhjODU3YTBhNGI1ZQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IE1heSA1IDA2OjA3OjUxIDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlIE5ldC1TTk1QIHZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBXaW5kb3dzIHJlZ2lzdHJ5LiBTb21lIHRlc3RzIHRoYXQgZmFpbGVkIHByZXZpb3VzbHkgYWZ0ZXIgdGhlIE5ldC1TTk1QIGJpbmFyaWVzIChNU1ZDIGJ1aWxkKSBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMzI5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjY3YzE1MGZiMDVlZDM4ZGY0NGY4YjUyNjA5MWQ2ZTliODhkOWYzMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzIDE5OjE1OjI3IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IHNubXBsaWI6IEd1YXJkIG5ldHNubXBfdWRwX3JlY3Zmcm9tKCkgZXRjLiBkZWNsYXJhdGlvbnMgY29uc2lzdGVudGx5LgorICAgIENIQU5HRVM6IFdpbjMyOiBCdWlsZHMgd2l0aCBWaXN1YWwgU3R1ZGlvIDIwMTAuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMDk4MWU2MDBhNjJkNTI0YmJhMGZjODc4NDQzNWQ3NmQyNzVkN2YzMworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzIDE1OjI5OjQ2IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZjNlYTM0MWZiMTk0NGRjNmE2Mzk2YWRkNzJhYzM5ZjU3OTRhMmQ2OQorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIE1heSAzIDE1OjI5OjQ2IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0IG9mIDEyNyBjaGFyYWN0ZXJzICh0aGlzIGxpbWl0YXRpb24gd2FzIHJlcG9ydGVkIGJ5IFN5bHZhaW4gRGVyeSkuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYTI5MDBjNDVkMWQ5MjdlMWQ4OTE4MDBhMTQyMmE5MjJiMzc2ZDg1YworQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSAyIDExOjIyOjM0IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cgZW52aXJvbm1lbnQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNDIwNWY1MzgyOWE3MjViNWI1ZWU4MzVkNzkxOGE3ODM1YjI2YWRjNgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSAyIDExOjIyOjM0IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IFdpbjMyOiBoZWFkZXIgZmlsZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGNhbiBub3cgYmUgdXNlZCBpbiB0aGUgTWluR1cgZW52aXJvbm1lbnQuCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgMmUwMDkxNGQ0MDhiMGVmOWE0NWQyYjMxN2IwMzMyOWU4MTQ1NjU4NgorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgTW9uIE1heSAyIDExOjEzOjIzIDIwMTEgKzAwMDAKKworICAgIFdpbjMyIERMTCBidWlsZCBmaXhlcy4KKyAgICAoQmFja3BvcnRlZCByMjAxODQgZnJvbSB0cnVuay4pCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMjc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZTc4NjQyMDdmODg4MjMwZGU2NzlhY2ZkYTFmZDliNjU3ZDc5MjYxMAorQXV0aG9yOiBCYXJ0IFZhbiBBc3NjaGUgPGJ2YXNzY2hlQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgRnJpIEFwciAyOSAxMToxNzoxMSAyMDExICswMDAwCisKKyAgICBTcGVsbGluZyBhbmQgZ3JhbW1hciBmaXhlcyBmb3IgdGhlIHNvdXJjZSBjb2RlIGNvbW1lbnRzIGluIHNubXBsaWIvd2luc2VydmljZS5jLgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI3NCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGU3YjMzZjQzZDBjMzEyNTE2MmFiYmQyNjRkN2UxZmEzZmE0MDYzMDIKK0F1dGhvcjogQmFydCBWYW4gQXNzY2hlIDxidmFzc2NoZUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMjkgMTE6MTc6MTEgMjAxMSArMDAwMAorCisgICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbiBzbm1wbGliL3dpbnNlcnZpY2UuYy4KKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzMTFhZGUyM2RlNGEwMDE0ZmUwZmMyM2NmODNkMDc3Y2Q2NjNhZDA1CitBdXRob3I6IFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBXZWQgQXByIDI3IDIxOjE2OjIzIDIwMTEgKzAwMDAKKworICAgIERvbid0IGZyZWUgdGhlIGlmWFRhYmxlIHJvdyBmb3VuZCBvbiBsb2FkIGZhaWx1cmUgYXMgd2UgZG9uJ3Qgb3duIGl0CisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMjQxIDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZWRlMjQ2ODk0NjFiNzVjNDQxYTM2YTM4NGE2YzU1OTcyM2RkZTJkMworQXV0aG9yOiBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgV2VkIEFwciAyNyAyMToxNjoyMyAyMDExICswMDAwCisKKyAgICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93biBpdAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDI0MSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDFhZjA4ZTFkNjA4YjdiZDEzMzYxZWFkNWM0MmY0YzQ3YTI4M2I1OTkKK0F1dGhvcjogV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFdlZCBBcHIgMjcgMjE6MTY6MjMgMjAxMSArMDAwMAorCisgICAgRG9uJ3QgZnJlZSB0aGUgaWZYVGFibGUgcm93IGZvdW5kIG9uIGxvYWQgZmFpbHVyZSBhcyB3ZSBkb24ndCBvd24gaXQKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAyNDEgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA0MGFiZDhlNWFiMTFhMDdjNDk2YWIyNWYxYWQ1NGNjM2U1ODMyN2E0CitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFN1biBBcHIgMTcgMjA6NTY6NDggMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNzU2NDA6IFVzZSBJUF9SRUNWRFNUQUREUiBzb2Nrb3B0IHdoZXJlIGF2YWlsYWJsZSAoKkJTRCkKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODMgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBjMDQ4ZjJjZTQzYmZhODJlOGQzYWQ4YTJiZDMxMjI5MGM2YmEyN2YwCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAorICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwZTJkOGU4MzM3YWY3MjU3ZjdlYjcyNzY3OGY4MDM0ZTg0YWU3NGNlCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAorICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAzOTE1OTdjZmZkOWFiZGU1ZmY0NmI3NGM1YjZjN2UzMjFhYjdkM2MxCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIEZyaSBBcHIgMTUgMTM6NDI6MTQgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0hFUzogMzE4MzAwMDogRml4IGNhbGN1bGF0aW9uIG9mIGNvbW1vbiBPSUQgcHJlZml4IGxlbmd0aAorICAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDMxODI5ODU6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lEIHByZWZpeCBsZW5ndGgKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBlNDU3NDM3MmU0NzhkMzdlZmEzOTc1Y2EwZmM3MThmY2RhMzA2MDhmCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjE6MzE6MDkgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2YzA2YTI1OTRmNmU4N2M3MjI1MWZmNzkzZTdkOTE4N2I4OTE1ZmJjCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjE6MzE6MDkgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSEVTOiAzMTg1MDg1OiBGaXggc2VnZmF1bHQgb24gNjQtYml0IHN5c3RlbXMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxODAgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA3ZTg5OWI1Y2YyZGIyMTY0ZTBjMWQ1ODcwNmI5NTAyZTg2NTk2OTcwCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjE6MTA6NTYgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMxNzUzMjM6IEZpeCBoYW5kbGluZyBvZiAnd2hpbGUgKGZhbHNlKScgYmxvY2tzCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNjk2N2Q3ODk5OWI3ZjRjYjUyNzAyMDc1MGNkMzU5MjdmZTRmMmZlNworQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXByIDE0IDIxOjEwOjU2IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknIGJsb2NrcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3OSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDUwMjM5ZjY2NTA1ODZiYjRiOTkyMDU0MjQ1OTJiN2I1MTkxZDU0MDQKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEFwciAxNCAyMToxMDo1NiAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzE3NTMyMzogRml4IGhhbmRsaW5nIG9mICd3aGlsZSAoZmFsc2UpJyBibG9ja3MKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzkgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA1ZDVkNmZkNDgxNTI4YWRmN2NhMDFlYzA3OTA4NDljYTczMTk2ZGMyCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjA6NTI6NTkgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUgb2JqZWN0cyBuYW1lZCBmb29UYWJsZQorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3OCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDNhOGRjYTMxNDNjNWNhMTE0NDNmZWIwN2Y3YWY0YmVkODA4YmRkMzIKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEFwciAxNCAyMDo1Mjo1OSAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIwNDg4MzogRml4IGhhbmRsaW5nIG9mIG5vbi10YWJsZSBvYmplY3RzIG5hbWVkIGZvb1RhYmxlCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc4IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYjRiYzdiMjdjZGE0OTkzOTFiOWVjYjJjYmU1NDFlMTBjMTUxYWJkNQorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXByIDE0IDIwOjUyOjU5IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjA0ODgzOiBGaXggaGFuZGxpbmcgb2Ygbm9uLXRhYmxlIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzggMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCA2YTI5OTY4Y2JkYzAxNjZhNDdhOTNkMWMxNGQzOWEyZTM5ZmE5OGQyCitBdXRob3I6IERhdmUgU2hpZWxkIDxkdHMxMkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFRodSBBcHIgMTQgMjA6NDQ6MzcgMjAxMSArMDAwMAorCisgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluIG5vdGlmaWNhdGlvbiB2YXJiaW5kcworICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDM0MmNhOWRiNTM3MWNiYWQ3ZmE5NmFmMzJhY2VkNzUwYzJkNzdkYjEKK0F1dGhvcjogRGF2ZSBTaGllbGQgPGR0czEyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVGh1IEFwciAxNCAyMDo0NDozNyAyMDExICswMDAwCisKKyAgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0hFUzogMzIxMTQ4NDogU3VwcG9ydCBlbnVtZXJhdGlvbnMgaW4gbm90aWZpY2F0aW9uIHZhcmJpbmRzCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc3IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgYzZhNzFlYWViZWY2YzgzMWRhYTM2ZjU3ZWMxZmYyMzBmMDUyYjMzMAorQXV0aG9yOiBEYXZlIFNoaWVsZCA8ZHRzMTJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUaHUgQXByIDE0IDIwOjQ0OjM3IDIwMTEgKzAwMDAKKworICAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMjExNDg0OiBTdXBwb3J0IGVudW1lcmF0aW9ucyBpbiBub3RpZmljYXRpb24gdmFyYmluZHMKKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzcgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBmMDhhMTk5ODA3MWI2ZDRmNGVjOGQ5ZjVmYmY4YWVmZTU2MjljZTdhCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDIwOjAxOjU1IDIwMTEgKzAwMDAKKworICAgIEFkZCBtaXNzaW5nIHN5c3RlbSBvaWRzIHRvIG1pYgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTMtcGF0Y2hlc0AyMDE3NiAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IDMzMzFlMDliYmVjNzM0MDM0ZGJkYjc2N2U2NmMwM2UxNGE0NTQ4ZDUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBcHIgMTIgMjA6MDE6NTUgMjAxMSArMDAwMAorCisgICAgQWRkIG1pc3Npbmcgc3lzdGVtIG9pZHMgdG8gbWliCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNC1wYXRjaGVzQDIwMTc2IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgZGQ4ODlkNTZhYmM0YTZhMmI3NmIxZjc0ODllYTU1YjA0NjdiZTE4NAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEFwciAxMiAyMDowMTo1NSAyMDExICswMDAwCisKKyAgICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzYgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBkOTQ3NzI1MWQxNTRmYmI1MjZmNTMzNjdiMGI2ZWJjZDFkMjY3NGFjCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUzOjEwIDIwMTEgKzAwMDAKKworICAgIEZpeCBmb3IgZ2FyYmFnZSBvdXRwdXQgd2hlbiBhZ2VudCBwcmVzZW50cyBtb3JlIGNvbHVtbnMgaW4gYnVsaworICAgIHJlc3BvbnNlIHRoYW4gb3VyIGxvY2FsIE1JQiBmaWxlICBzcGVjaWZpZWQuCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtMy1wYXRjaGVzQDIwMTc1IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCitjb21taXQgNzljNjk4YTE0NzRlMTA4NTVmMjEwYTY5OTg3MDgwOTY3MTJiZTYwOAorQXV0aG9yOiBOaWVscyBCYWdnZXNlbiA8bmJhQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6ICAgVHVlIEFwciAxMiAxOTo1MzoxMCAyMDExICswMDAwCisKKyAgICBGaXggZm9yIGdhcmJhZ2Ugb3V0cHV0IHdoZW4gYWdlbnQgcHJlc2VudHMgbW9yZSBjb2x1bW5zIGluIGJ1bGsKKyAgICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSAgc3BlY2lmaWVkLgorICAgIAorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTQtcGF0Y2hlc0AyMDE3NSAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGYzOTRhMjY2NjA0YWY5ZjNlMWI1M2VmNmRhMzc1YmFhNGEzOTAxZmUKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFR1ZSBBcHIgMTIgMTk6NTM6MTAgMjAxMSArMDAwMAorCisgICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCisgICAgcmVzcG9uc2UgdGhhbiBvdXIgbG9jYWwgTUlCIGZpbGUgIHNwZWNpZmllZC4KKyAgICAKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzUgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAwMDdlNzZkNmRjMzhhY2RmYWI3NTZmZTliZDhlMjNkODIwOTViNGM2CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKKworICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS0zLXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBmMWVkY2ZkMDQ5Yjc2MGJjNTAxMDRjZmU4MjgzOGVkMmIzNjMyODYxCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKKworICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS00LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBhZjUwOTI0MDY5YTg4YjViYWRjMDg0MDY1ZTIxYjY5MWYzMWYzMTNkCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBUdWUgQXByIDEyIDE5OjUwOjA4IDIwMTEgKzAwMDAKKworICAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzQgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCAyZmIwYjg5YzIzMjNkYjMwOWIxNjJkNjBhOTQzYzFlM2EwYTE3ZDA3CitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXByIDkgMjE6NTk6MTEgMjAxMSArMDAwMAorCisgICAgUmVtb3ZlIGJvZ3VzIChMaW51eCkgZGVmaW5lcworICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MyAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGMzZGJiZDlmYzU3YWNiY2E5OTkzNTZjZGY5YmU5NThjYzExNzM1ZWYKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBcHIgOSAyMTo1NjozMyAyMDExICswMDAwCisKKyAgICBIQVZFX1RNX1RNX0dNVE9GRiBpcyBIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKKyAgICAKKyAgICBnaXQtc3ZuLWlkOiBmaWxlOi8vL2hvbWUvaGFyZGFrZXIvbGliL3NmLWJrdXBzL25ldC1zbm1wLWNvbnZlcnQtc3ZucmVwby9icmFuY2hlcy9WNS01LXBhdGNoZXNAMjAxNzIgMDY4Mjc4MDktYTUyYS0wNDEwLWIzNjYtZDY2NzE4NjI5ZGVkCisKK2NvbW1pdCBiMWNkMjFhNGQ3MWMxN2MxMjIxMzRhYzMyODQ5MTdmNjUzNjNlNGQyCitBdXRob3I6IE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorRGF0ZTogICBTYXQgQXByIDkgMjA6MDQ6MjkgMjAxMSArMDAwMAorCisgICAgU29sYXJpcyBzdXBwb3J0IGZvciBTQ1RQLU1JQgorICAgIAorICAgIGdpdC1zdm4taWQ6IGZpbGU6Ly8vaG9tZS9oYXJkYWtlci9saWIvc2YtYmt1cHMvbmV0LXNubXAtY29udmVydC1zdm5yZXBvL2JyYW5jaGVzL1Y1LTUtcGF0Y2hlc0AyMDE3MCAwNjgyNzgwOS1hNTJhLTA0MTAtYjM2Ni1kNjY3MTg2MjlkZWQKKworY29tbWl0IGM2NjU5Yzk0YWQ5YmE4MDYwZGRlMTg5NDI3NjFjZTg1ZDFhNWNjMTkKK0F1dGhvcjogTmllbHMgQmFnZ2VzZW4gPG5iYUB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CitEYXRlOiAgIFNhdCBBcHIgOSAxOTo1MDozMCAyMDExICswMDAwCisKKyAgICBUWiBpcyBvbmUgaG91ciBvZmYgaWYgSEFWRV9UTV9UTV9HTVRPRkYgYW5kIFNZU1YgKHN1Y2ggaXMgTGludXgpCisgICAgCisgICAgCisgICAgZ2l0LXN2bi1pZDogZmlsZTovLy9ob21lL2hhcmRha2VyL2xpYi9zZi1ia3Vwcy9uZXQtc25tcC1jb252ZXJ0LXN2bnJlcG8vYnJhbmNoZXMvVjUtNS1wYXRjaGVzQDIwMTY5IDA2ODI3ODA5LWE1MmEtMDQxMC1iMzY2LWQ2NjcxODYyOWRlZAorCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0NoYW5nZXM6IFY1LjUgLT4gVjUuNS4xCisKKzIwMTEtMDMtMTggMTE6MTUgIGR0czEyCiAKICAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAgIAotICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgorICAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgCisgICAgICAgIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgogCiAgICBtYWtlIGRlcGVuZAogCi0yMDExLTA2LTAxIDE1OjQyICBkdHMxMgorMjAxMS0wMy0xOCAxMDozNiAgZHRzMTIKIAotICAgKiBwZXJsL1NOTVAvU05NUC54czoKLQotICAgUmVpbnN0YXRlIGFuICJ1bnVzZWQiIGxhYmVsIHRoYXQgaXMgYWN0dWFsbHkgc3RpbGwgcmVxdWlyZWQuCi0gICAocmVmZXJlbmNlZCBpbiBsaW5lIDI3MTApCi0KLTIwMTEtMDYtMDEgMTU6MzIgIGR0czEyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotCi0gICBGaXggdHlwbwotCi0yMDExLTA2LTAxIDE1OjA4ICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCkBAIC0xNDEsNDM3ICs0NzkyLDUyIEBACiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKICAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsICAKLSAgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CiAKICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCiAKLTIwMTEtMDYtMDEgMTQ6NTEgIGR0czEyCisyMDExLTAzLTE4IDEwOjMyICBkdHMxMgogCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CiAKICAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQogCi0yMDExLTA1LTMxIDIyOjQ5ICBoYXJkYWtlcgorMjAxMS0wMy0xMyAyMDowOSAgZHRzMTIKIAotICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgorICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsIHNubXBsaWIvbGFyZ2VfZmRfc2V0LmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBQQVRDSCAzMDY2ODYyOiBmcm9tIGZoZXc6IGZpeCB0aGUgYWdlbnQgZm9yCi0gICBjb21wYXJpbmcgdW5zaWduZWQgbGFyZ2UgaW5kZXhlcyBvZiB0aGUgZGlzayBhbmQgZXh0ZW5kIHRhYmxlcy4KKyAgIEJyaW5nIHRoZSBuYW1pbmcgb2YgdGhlIGxhcmdlX2ZkX3NldCBzZWxlY3QgY2FsbCBpbnRvCisgICBsaW5lIHdpdGggdGhlIHJlc3Qgb2YgdGhlIEFQSS4KIAotMjAxMS0wNS0zMSAxMjozMCAganNhZnJhbmVrCisyMDExLTAzLTEzIDIwOjA2ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgaHJTV1J1blBhdGggb2Ygc3dhcHBlZC1vdXQgcHJvY2Vzc2VzIG9uCi0gICBMaW51eC4KLSAgIAotICAgZmdldHMoKSByZXR1cm5zIE5VTEwgYm90aCB3aGVuIC9wcm9jL1BJRC9jbWRsaW5lIGlzIGVtcHR5ICg9Ci0gICBzd2FwcGVkIG91dCkgYW5kIHdoZW4gdGhlIHByb2Nlc3MgZXhpdGVkIGFmdGVyIGZvcGVuKCksIHNvIGNoZWNrCi0gICAvcHJvYy9QSUQvc3RhdHVzIGluIGJvdGggY2FzZXMuCi0KLTIwMTEtMDUtMjYgMTY6MTIgIGhhcmRha2VyCi0KLSAgICogc25tcGxpYi9zbm1wX2FwaS5jOgotCi0gICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMzI5OTM4NDogZml4IElORk9STXMgc28gdGhleSByZXRyeSBwcm9iaW5nCi0gICBmb3IgYW4gZW5naW5lSUQuCi0KLTIwMTEtMDUtMjYgMTY6MDYgIGhhcmRha2VyCi0KLSAgICogc25tcGxpYi9zbm1wX2FwaS5jOgotCi0gICBBcHBsaWVkIChyb3VnaGx5KSBwYXRjaCAzMjk5MzcwIHRvIGF2b2lkIHJld3JpdGluZyBleGlzdGluZwotICAgYXV0aGtleS9wcml2a2V5L2V0Y3MKLQotMjAxMS0wNS0yNSAwOToyMSAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBkOiBVc2UgcHJvcGVyIGZvcm1hdCBzcGVjaWZpZXIgaW4gZGVidWcgc3RhdGVtZW50cwotICAgZm9yIHByaW50aW5nIHZhbHVlcyBvZiB0eXBlICdvaWQnLgotCi0yMDExLTA1LTI0IDEyOjUxICBqc2FmcmFuZWsKLQotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jOgotCi0gICBBZGRlZCBOVUxMLWNoZWNrcyBhZnRlciBtYWxsb2MKLQotMjAxMS0wNS0yMiAxOTozNCAgZHRzMTIKLQotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6Ci0KLSAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDMzMDUxNTc6IEZpeCBpcEFkZHJlc3NQcmVmaXggaGFuZGxpbmcgb2YKLSAgIElQdjYgYWRkcmVzc2VzCi0KLTIwMTEtMDUtMjIgMTk6MDcgIGR0czEyCi0KLSAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKLQotICAgQ0hBTkdFUzogcHl0aG9uOiBCVUc6IDMyOTU0MDc6IEZpeCBoYW5kbGluZyBvZiB2b2lkIHBvaW50ZXIKLQotMjAxMS0wNS0yMiAxODo1NyAgZHRzMTIKLQotICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOgotCi0gICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyNjQ4NTI6IFJlY29nbmlzZSBtaXNzaW5nIHJlcG9ydCB0eXBlcwotICAgKHNubXB7VW5hdmFpbGFibGUsVW5rbm93bn1Db250ZXh0cyxzbm1wVW5rbm93blBEVUhhbmRsZXJzKQotCi0yMDExLTA1LTIwIDE1OjQxICBkdHMxMgotCi0gICAqICBzbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMsIHNubXBsaWIvc25tcElQWERvbWFpbi5jLCAgIAotICAgICAgc25tcGxpYi9zbm1wU1RERG9tYWluLmMsIHNubXBsaWIvc25tcFRDUERvbWFpbi5jLCAgIAotICAgICAgc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYywgICAKLSAgICAgIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYywgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jOgotCi0gICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDMyMzQ3NTQ6IEVuc3VyZSBvbGQgZl9jcmVhdGVfZnJvbV90c3RyaW5nCi0gICBob29rIGlzIGluaXRpYWxpemVkIHRvIE5VTEwKLQotMjAxMS0wNS0xOSAxOTo0NiAgaGFyZGFrZXIKLQotICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotCi0gICB1c2UgI2lmZGVmIHJhdGhlciB0aGFuICNpZiBmb3IgZGVmaW5lIGNoZWNrcy4KLQotMjAxMS0wNS0xOSAxNzoxOSAgZHRzMTIKLQotICAgKiBtYW4vc25tcF9hcGkuMy5kZWYsIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmOgotCi0gICBDSEFOR0VTOiBtYW46IEJVRzogMzE5MDcyNTogRG9jdW1lbnQgc25tcHssX3Nlc3N9c3luY2hfcmVzcG9uc2UKLSAgIGFuZCBzbm1wX2FzeW5jX3NlbmQKLQotMjAxMS0wNS0xMiAwOTowMyAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBsaWI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gc25tcF9mcmVlX3Nlc3Npb24oKS4KLQotMjAxMS0wNS0xMiAwODoxMiAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jOgotCi0gICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAKLSAgIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwTmV0VG9NZWRpYVRhYmxlLgotCi0yMDExLTA1LTEyIDA4OjA4ICBidmFzc2NoZQotCi0gICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYzoKLQotICAgQ0hBTkdFUzogV2luMzI6IEZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gdGhlIE5ldC1TTk1QCi0gICAobm9uLXdpbkV4dERMTCkgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1JQi1JSSBpZlRhYmxlLgotCi0yMDExLTA1LTEyIDA3OjMzICBidmFzc2NoZQotCi0gICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jOgotCi0gICBDSEFOR0VTOiBXaW4zMjogRml4ZWQgYSBtZW1vcnkgbGVhayBpbiB0aGUgTmV0LVNOTVAKLSAgIChub24td2luRXh0RExMKSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTUlCLUlJIGlwQWRkclRhYmxlLgotCi0yMDExLTA1LTEyIDA2OjU0ICBidmFzc2NoZQotCi0gICAqIENoYW5nZUxvZzoKLQotICAgRG9jdW1lbnRhdGlvbiAvIHNvdXJjZSBjb2RlIGNvbW1lbnQgc3BlbGxpbmcgZml4OiBleGl0ZW50IC0+Ci0gICBleGlzdGVudC4KLQotMjAxMS0wNS0xMCAxNTowMiAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKLQotICAgTWluR1c6IGF2b2lkIHRoYXQgZ2NjIGNvbXBsYWlucyBhYm91dCBwYXNpbmcgYSAoY2hhciAqKSBhcmd1bWVudAotICAgd2hpbGUgKHVuc2lnbmVkIGNoYXIgKikgaXMgZXhwZWN0ZWQuCi0KLTIwMTEtMDUtMDkgMjA6NTIgIG5iYQotCi0gICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYzoKLQotICAgVXNlIHN5bWJvbGljIG5hbWVkIGZvciBpZlR5cGUgdmFsdWVzCi0KLTIwMTEtMDUtMDggMjA6MDEgIG5iYQotCi0gICAqICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5oLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmM6Ci0KLSAgIEZpeCB3YXJuaW5ncyBhbmQgZGF0YSBmb3JtYXQgZm9yIERhdGVBbmRUaW1lIG9iamVjdHMuCi0gICBUaGVzZSBtb2R1bGVzIHdvcmssIGJ1dDoKLSAgIC0gVGhleSBhcmUgTGludXggb25seQotICAgLSBSb3dzIG11c3QgYmUgY3JlYXRlZCB3aXRoIHJvd1N0YXR1cyBjcmVhdGVBbmRXYWl0IGJlZm9yZSB0aGV5Ci0gICBhcmUgcG9wdWxhdGVkCi0gICAtIEFnZW50IG11c3QgcnVuIGFzIHJvb3QKLSAgIC0gQWdlbnQgaXMgYmxvY2tlZCB3aGlsZSB0ZXN0cyBydW4KLSAgIC0gRGF0YSBmb3JtYXQgZm9yIEluZXRBZGRyZXNzIG9iamVjdHMgaXMgd3JvbmcuIEl0IGlzIEFTQ0lJLCBub3QKLSAgIGJpbmFyeQotICAgKG1ha2luZyBpdCBlYXNpZXIgdG8gdXNlIGZyb20gdGhlIGNvbW1hbmQgbGluZSwgYnV0IC4uLikKLQotMjAxMS0wNS0wNyAxNToyMiAgYnZhc3NjaGUKLQotICAgKiBwZXJsL1NOTVAvU05NUC54czoKLQotICAgUmVtb3ZlZCBhbiB1bnVzZWQgbGFiZWwgZnJvbSBwZXJsL1NOTVAvU05NUC54cy4KLQotMjAxMS0wNS0wNiAyMTozMiAgaGFyZGFrZXIKLQotICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuaCwgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmg6Ci0KLSAgIE5FV1M6IFBBVENIIDMxOTg3ODE6IGZyb20gZmVubmVyOiBHZXQgZGlzbWFuL3BpbmcgYW5kCi0gICBkaXNtYW4vdHJhY2Vyb3V0ZSB0byBhdCBsZWFzdCBjb21waWxlCi0KLTIwMTEtMDUtMDYgMTc6NDYgIGR0czEyCi0KLSAgICogQ0hBTkdFUzoKLQotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMS0wNS0wNiAxNzozNyAgZHRzMTIKLQotICAgKiBDaGFuZ2VMb2c6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTEtMDUtMDYgMTc6MzUgIGR0czEyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOgotCi0gICBtYWtlIGRlcGVuZAotCi0yMDExLTA1LTA2IDE3OjIyICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDExLTA1LTA2IDE3OjE3ICBkdHMxMgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCi0yMDExLTA1LTA2IDEzOjUwICBkdHMxMgotCi0gICAqIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaToKLQotICAgRml4IGluY29tcGxldGUgdW5pbnN0YWxsIGNvbmZpZ3VyYXRpb246Ci0gICAtIGJyb2tlbiByZW1vdmFsIG9mIE1pY3Jvc29mdCBETEwKLSAgIC0gcmVtb3ZlIGFzc29ydGVkIG5ldyBNSUJzIGFuZCBoZWFkZXIgZmlsZXMKLQotMjAxMS0wNS0wNSAwNjowNyAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3Rvb2xzLmMsIHRlc3RpbmcvVEVTVENPTkYuc2g6Ci0KLSAgIENIQU5HRVM6IE1pbkdXOiBNYWRlIHJlZ3Jlc3Npb24gdGVzdCBvdXRwdXQgaW5kZXBlbmRlbnQgb2YgdGhlCi0gICBOZXQtU05NUCB2YXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgV2luZG93cyByZWdpc3RyeS4gU29tZSB0ZXN0cwotICAgdGhhdCBmYWlsZWQgcHJldmlvdXNseSBhZnRlciB0aGUgTmV0LVNOTVAgYmluYXJpZXMgKE1TVkMgYnVpbGQpCi0gICBoYWQgYmVlbiBpbnN0YWxsZWQgZG8gbm93IHBhc3MuCi0KLTIwMTEtMDUtMDMgMTU6MjkgIGJ2YXNzY2hlCi0KLSAgICogc25tcGxpYi93aW5zZXJ2aWNlLmM6Ci0KLSAgIENIQU5HRVM6IFdpbjMyOiBQQVRDSDogMzI5Mzg0MjogRWxpbWluYXRlIHJlZ2lzdHJ5IGFyZ3VtZW50IGxpbWl0Ci0gICBvZiAxMjcgY2hhcmFjdGVycyAodGhpcyBsaW1pdGF0aW9uIHdhcyByZXBvcnRlZCBieSBTeWx2YWluIERlcnkpLgotCi0yMDExLTA1LTAyIDExOjIyICBidmFzc2NoZQotCi0gICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKLSAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotCi0gICBDSEFOR0VTOiBXaW4zMjogaGVhZGVyIGZpbGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPiBjYW4gbm93Ci0gICBiZSB1c2VkIGluIHRoZSBNaW5HVyBlbnZpcm9ubWVudC4KLQotMjAxMS0wNC0yOSAxMToxNyAgYnZhc3NjaGUKLQotICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKLQotICAgU3BlbGxpbmcgYW5kIGdyYW1tYXIgZml4ZXMgZm9yIHRoZSBzb3VyY2UgY29kZSBjb21tZW50cyBpbgotICAgc25tcGxpYi93aW5zZXJ2aWNlLmMuCi0KLTIwMTEtMDQtMjcgMjE6MTYgIGhhcmRha2VyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jOgotCi0gICBEb24ndCBmcmVlIHRoZSBpZlhUYWJsZSByb3cgZm91bmQgb24gbG9hZCBmYWlsdXJlIGFzIHdlIGRvbid0IG93bgotICAgaXQKLQotMjAxMS0wNC0xNSAxMzo0MiAgZHRzMTIKLQotICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0KLSAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIRVM6IDMxODMwMDA6IEZpeCBjYWxjdWxhdGlvbiBvZiBjb21tb24gT0lECi0gICBwcmVmaXggbGVuZ3RoCi0gICBDSEFOR0VTOiBzbm1wbGliOiBCVUdTOiAzMTgyOTg1OiBGaXggY2FsY3VsYXRpb24gb2YgY29tbW9uIE9JRAotICAgcHJlZml4IGxlbmd0aAotCi0yMDExLTA0LTE0IDIxOjMxICBkdHMxMgotCi0gICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6Ci0KLSAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0hFUzogMzE4NTA4NTogRml4IHNlZ2ZhdWx0IG9uIDY0LWJpdCBzeXN0ZW1zCi0KLTIwMTEtMDQtMTQgMjE6MTAgIGR0czEyCi0KLSAgICogbG9jYWwvbWliMmM6Ci0KLSAgIENIQU5HRVM6IG1pYjJjOiBQQVRDSEVTOiAzMTc1MzIzOiBGaXggaGFuZGxpbmcgb2YgJ3doaWxlIChmYWxzZSknCi0gICBibG9ja3MKLQotMjAxMS0wNC0xNCAyMDo1MiAgZHRzMTIKLQotICAgKiBsb2NhbC9taWIyYzoKLQotICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMDQ4ODM6IEZpeCBoYW5kbGluZyBvZiBub24tdGFibGUKLSAgIG9iamVjdHMgbmFtZWQgZm9vVGFibGUKLQotMjAxMS0wNC0xNCAyMDo0NCAgZHRzMTIKLQotICAgKiBsb2NhbC9taWIyYzoKLQotICAgQ0hBTkdFUzogbWliMmM6IFBBVENIRVM6IDMyMTE0ODQ6IFN1cHBvcnQgZW51bWVyYXRpb25zIGluCi0gICBub3RpZmljYXRpb24gdmFyYmluZHMKLQotMjAxMS0wNC0xMiAyMDowMSAgbmJhCi0KLSAgICogbWlicy9VQ0QtU05NUC1NSUIudHh0OgotCi0gICBBZGQgbWlzc2luZyBzeXN0ZW0gb2lkcyB0byBtaWIKLQotMjAxMS0wNC0xMiAxOTo1MyAgbmJhCi0KLSAgICogYXBwcy9zbm1wdGFibGUuYzoKLQotICAgRml4IGZvciBnYXJiYWdlIG91dHB1dCB3aGVuIGFnZW50IHByZXNlbnRzIG1vcmUgY29sdW1ucyBpbiBidWxrCi0gICByZXNwb25zZSB0aGFuIG91ciBsb2NhbCBNSUIgZmlsZSBzcGVjaWZpZWQuCi0KLTIwMTEtMDQtMTIgMTk6NTAgIG5iYQotCi0gICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6Ci0KLSAgIEZpeCB3cm9uZyBuYW1lIGZvciBjb25maWcgdG9rZW4gJ2RvTm90UmV0YWluTm90aWZpY2F0aW9uTG9ncycKLQotMjAxMS0wMy0xNSAxMjozNyAgZHRzMTIKLQotICAgKiBDSEFOR0VTLCBORVdTOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDExLTAzLTE1IDEwOjU3ICBkdHMxMgotCi0gICAqIENoYW5nZUxvZzoKLQotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMS0wMy0xNSAxMDo1NiAgZHRzMTIKLQotICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTEtMDMtMTUgMTA6NDIgIGR0czEyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sICAgCi0gICAgICBwZXJsL1NOTVAvU05NUC5wbSwgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCAgIAotICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIHBlcmwvYWdlbnQvYWdlbnQucG0sICAgCi0gICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKLSAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotCi0gICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLQotMjAxMS0wMy0xNSAxMDo0MSAgZHRzMTIKLQotICAgKiBNYWtlZmlsZS50b3A6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTEtMDMtMTIgMDY6NTkgIHJzdG9yeQotCi0gICAqIHNubXBsaWIvY29udGFpbmVyX2JpbmFyeV9hcnJheS5jOgotCi0gICBDSEFOR0VTOiBzbm1wbGliOiByZWFsbG9jK2luaXQgaW5zdGVhZCBvZiBjYWxsb2MKLSAgIAotICAgaW5zcGlyZWQgYnkgcGF0Y2ggMzE5NTUzMiBmcm9tIFN0ZXBoZW4gSGVtbWluZ2VyCi0KLTIwMTEtMDMtMTIgMDU6NDcgIHJzdG9yeQotCi0gICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMsCi0gICAgICAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAotICAgICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaDoKLQotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiBvcHRpbWl6YXRpb25zIGZvciBsYXJnZSByb3V0ZSB0YWJsZXMgZnJvbQotICAgU3RlcGhlbiBIZW1taW5nZXIKLSAgIAotICAgYXBwbGllZCBwYXJ0cyAxLTMgb2YgNCBmcm9tIGhpbSAobXNncyB0byBjb2RlcnMgb24gMi8yOC8xMTsKLSAgIHN1YmplY3QKLSAgIGlwLWZvcndhcmQtbWliIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50czsgcGFydCA0IG5lZWRzIG1vcmUgd29yaworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDMyMDM4MDY6IEFkZCB0aGUgZnVuY3Rpb24KKyAgIG5ldHNubXBfbGFyZ2Vfc2VsZWN0KCkKKyAgIChwbHVzIHR3ZWFrcyB0byBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUpCiAKIDIwMTEtMDMtMTEgMTE6MTEgIGpzYWZyYW5lawogCkBAIC02MDYsNiArNDg3Miw4NCBAQAogICAgY29tbWFuZCBpcyBub3cgd3JvbmcgZm9yICphbGwqIGJyYW5jaGVzLCByYXRoZXIKICAgIHRoYW4ganVzdCBtb3N0IG9mIHRoZW0hKQogCisyMDExLTAyLTI1IDExOjQ5ICBkdHMxMgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorCisgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCisyMDExLTAyLTI1IDExOjQxICBkdHMxMgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIHBlcmwvQVNOL0FTTi5wbSwgICAKKyAgICAgIHBlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0sIHBlcmwvT0lEL09JRC5wbSwgcGVybC9TTk1QL1NOTVAucG0sIAorICAgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbSwgICAgcGVybC9hZ2VudC9hZ2VudC5wbSwKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAgIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG06CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDExLTAyLTI1IDExOjM5ICBkdHMxMgorCisgICAqIENoYW5nZUxvZzoKKworICAgdmVyc2lvbiB1cGRhdGUKKworMjAxMS0wMi0yNSAxMToxNSAgZHRzMTIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjLCBwZXJsL0FTTi9BU04ucG0sICAgCisgICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sIHBlcmwvU05NUC9TTk1QLnBtLCAKKyAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLAorICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sICAgIHBlcmwvYWdlbnQvYWdlbnQucG0sCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKwogMjAxMS0wMi0yNSAxMToxMCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXB2My5jOgpAQCAtNjE2LDggKzQ5NjAsNyBAQAogCiAgICAqIGFwcHMvc25tcHRhYmxlLmM6CiAKLSAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6Ci0gICBjaGFyYWN0ZXIKKyAgIEZpeCBidWcgMzExODYzMTogc25tcHRhYmxlIHNlZ2ZhdWx0cyBpZiBpbmRleCBjb250YWlucyA6IGNoYXJhY3RlcgogCiAyMDExLTAyLTIzIDA5OjMwICBuYmEKIApAQCAtNjI1LDExICs0OTY4LDc4IEBACiAKICAgIEZyZWVCU0QgOCBzdXBwb3J0CiAKLTIwMTEtMDItMjEgMTk6MDggIGhhcmRha2VyCisyMDExLTAyLTIyIDE1OjI1ICBkdHMxMgogCi0gICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jOgogCi0gICBVcGRhdGVkIGNvbW1lbnQgYWJvdXQgd2hlcmUgbWFrZXJlbGVhc2UgY29tZXMgZnJvbSAobm93IGdpdGh1YikKKyAgIFJldmVydCBhIGJvZ3VzIGNoYW5nZSB0aGF0IGNyZXB0IGludG8gdGhlIGNvZGUuCisKKzIwMTEtMDItMjIgMDg6NTUgIGR0czEyCisKKyAgICoge2V2ZXJ5dGhpbmd9OgorCisgICBGaXggNS41LnggYnJhbmNoIHN0cnVjdHVyZQorCisyMDExLTAyLTIxIDEzOjQ0ICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZToKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMTEtMDItMjEgMTM6MjQgIGR0czEyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMTEtMDItMjEgMTM6MTcgIGR0czEyCisKKyAgICogIEZBUSwgUkVBRE1FLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCiAKIDIwMTEtMDItMjEgMTE6MTQgIGJ2YXNzY2hlCiAKQEAgLTY4OSw2ICs1MDk5LDEyIEBACiAKICAgIHJlcnVuIGF1dG9oZWFkZXIvYXV0b2NvbmYKIAorMjAxMS0wMi0xNSAyMToyNiAgbmJhCisKKyAgICogbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNDoKKworICAgVG9vIG11Y2ggcXVvdGluZyBpcyBiYWQKKwogMjAxMS0wMi0xNSAyMToxMSAgbmJhCiAKICAgICogIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgICAKQEAgLTcxMCw2ICs1MTI2LDI1IEBACiAKICAgIEZpbHRlciBJUHY2IGVudHJpZXMgZnJvbSBJUHY0IHRhYmxlCiAKKzIwMTEtMDItMTUgMjA6NDIgIG5iYQorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6CisKKyAgIFByb3BlciB1c2Ugb2YgZ2V0cHJvYzIgYW5kIGRyYWdvbmZseSBzdXBwb3J0CisKKzIwMTEtMDItMTUgMjA6NDEgIG5iYQorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmM6CisKKyAgIGdldHZmc3N0YXQgaXMgb25seSBmb3IgTmV0QlNECisKKzIwMTEtMDItMTUgMjA6MzkgIG5iYQorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyOgorCisgICBEZXRlY3QgbmVlZCBmb3IgLWxrdm0gaW4gcHJvcGVyIHRpbWUKKwogMjAxMS0wMi0xNCAxNDozOCAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9zbm1wZC5jOgpAQCAtODExLDYgKzUyNDYsMTIgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDMxNTE4OTc6IGZkIGxlYWsgdy8gL3Byb2MvcGFydGl0aW9ucwogICAgcmVhZCBpbiBkaXNraW8KIAorMjAxMS0wMS0yOSAyMzozNiAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmM6CisKKyAgIE5FV1M6IHNubXBkOiBCVUc6IDMxNjY1Njg6IGhyU3lzdGVtUHJvY2Vzc2VzIG1pc3NpbmcgaW4gNS42LzUuNi4xCisKIDIwMTEtMDEtMjcgMDk6MzUgIGR0czEyCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKQEAgLTgzNiwxMiArNTI3Nyw0MyBAQAogICAgZmdldHMoKSBmcm9tIGl0LiBzbm1wZCBzaG91bGQgY29udGludWUgd2l0aCBvdGhlciBwcm9jZXNzZXMgYW5kCiAgICBub3QgdG8gc3RvcC4KIAorMjAxMS0wMS0xOSAxMzo1NyAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgorCisgICBNYWtlIHVzIGNvbXBhdGlibGUgd2l0aCBycG0tNC45LCBycG1HZXRGaWxlc3lzdGVtTGlzdCBkb2VzIG5vdAorICAgZXhpc3QgYW55bW9yZSwgc28gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc2hvdWxkIG5vdCBjaGVjayBpdC4KKworMjAxMS0wMS0xOSAwNjozMSAgbmJhCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxOgorCisgICBkaXNrSU9MQXggcmVxdWlyZXMgZXhwIHdoaWNoIG1heSByZXF1aXJlIC1sbQorCiAyMDExLTAxLTE5IDA2OjIwICBuYmEKIAogICAgKiBhY2NvbmZpZy5oOgogCiAgICBEZWZpbmUgRFJBR09ORkxZSUQKIAorMjAxMS0wMS0xOCAyMjowMSAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorCisgICB0eXBvCisKKzIwMTEtMDEtMTggMjE6NTYgIG5iYQorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMToKKworICAgQ2hlY2sgZm9yIC1sa2luZm8KKworMjAxMS0wMS0xOCAyMTo1NCAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oOgorCisgICBGaW5kIHByb3BlciBpZi1taWIgaW50ZXJmYWNlIGZvciBOZXRCU0QKKwogMjAxMS0wMS0xNCAxMjoyOCAganNhZnJhbmVrCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmM6CkBAIC04NjAsNiArNTMzMiwyMiBAQAogICAgWzFdOgogICAgaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9tYWlsYXJjaGl2ZS9mb3J1bS5waHA/dGhyZWFkX25hbWU9MjAwNjA5MjAxMzQ5MzUuMzViMzZlZDYlNDBkZXYuZnV0ei5vcmcmZm9ydW1fbmFtZT1uZXQtc25tcC1jb2RlcnMKIAorMjAxMS0wMS0xNCAwODozOSAgYnZhc3NjaGUKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsIG5ldC1zbm1wLWNvbmZpZy5pbiwgICAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuaW46CisKKyAgIENIQU5HRVM6IEN5Z3dpbjogbGlibmV0c25tcCBkb2VzIG5vdyBidWlsZCBhcyBhIERMTCB3aGVuCisgICBjb25maWd1cmVkIHdpdGggLS1lbmFibGUtc2hhcmVkLgorICAgQ0hBTkdFUzogQ3lnd2luOiBwZXJsIG1vZHVsZXMgZG8gbm93IGJ1aWxkICgtLXdpdGgtcGVybC1tb2R1bGVzKS4KKyAgIChCYWNrcG9ydGVkIHIxODgyNSBmcm9tIHRoZSB0cnVuay4pCisKKzIwMTEtMDEtMTQgMDg6MjIgIGJ2YXNzY2hlCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUmVnZW5lcmF0ZWQgd2l0aCBhdXRvcmVjb25mIC1pdi4KKwogMjAxMS0wMS0xNCAwNjoyNSAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CkBAIC04NzMsMTUgKzUzNjEsMTAxIEBACiAgICBFbnN1cmUgcmVsZWFzZXMgYXJlIGluc3RhbGxlZCB0byB0aGUgY29ycmVjdCBwYXRoIHdpdGhpbiB0aGUKICAgIC90YWdzIFNWTiB0cmVlCiAKKzIwMTEtMDEtMTMgMTU6NDUgIGR0czEyCisKKyAgICogQ0hBTkdFUywgTkVXUzoKKworICAgdmVyc2lvbiB1cGRhdGUKKworMjAxMS0wMS0xMyAxNTozMyAgZHRzMTIKKworICAgKiBDaGFuZ2VMb2c6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMTEtMDEtMTMgMTU6MjYgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKKworICAgbWFrZSBkZXBlbmQKKwogMjAxMS0wMS0xMyAxNToxNSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbmV0YnNkLmM6CiAKICAgIFJlbW92ZSBDKysgY29tbWVudHMKIAorMjAxMS0wMS0xMyAxNDo1NSAgZHRzMTIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAxMS0wMS0xMyAxNDo0MiAgZHRzMTIKKworICAgKiBjb25maWd1cmU6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDExLTAxLTEzIDE0OjQxICBkdHMxMgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDExLTAxLTEzIDEzOjE3ICBkdHMxMgorCisgICAqIGFnZW50L2F1dG9fbmxpc3QuYzoKKworICAgRml4IGJyb2tlbiBwYXRjaAorCiAyMDExLTAxLTEzIDEyOjE0ICBkdHMxMgogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6CiAKICAgIENvbmZpZ3VyZSBmaXhlcyBmb3IgRHJhZ29uRmx5IHN1cHBvcnQKIApAQCAtOTI5LDcgKzU1MDMsOCBAQAogCiAyMDExLTAxLTEyIDE0OjM3ICByc3RvcnkKIAotICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAorICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMsCiAgICAgICAgIApAQCAtOTM5LDEwICs1NTE0LDE0IEBACiAgICAgICAKICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZS5jLAogICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jLAogICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYzoKIApAQCAtOTg4LDEyICs1NTY3LDEyIEBACiAgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYywgICAKICAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jOgogCi0gICBDSEFOR0VTOiBOZXRCU0Q6IERyYWdvbkZseSBzdXBwb3J0CisgICBORVdTOiBOZXRCU0Q6IERyYWdvbkZseSBzdXBwb3J0CiAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KIAogMjAxMS0wMS0xMSAxNDozNiAgZHRzMTIKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnM6CiAKICAgIE5ldEJTRC9EcmFnb25GbHkgJ3N0cnVjdCBpZm5ldCcgcmVxdWlyZXMgS0VSTkVMLCBidXQgbm90IF9LRVJORUwKICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQpAQCAtMTAyMSw3ICs1NjAwLDcgQEAKIAogMjAxMS0wMS0xMSAxMjoyNCAgZHRzMTIKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKIAogICAgQWRkaXRpb25hbCBoZWFkZXJzIHdoZW4gdGVzdGluZyBmb3IgSVB2NiBoZWFkZXJzCiAgICBbRnJvbSBOZXRCU0QgcGF0Y2ggYXJjaGl2ZV0KQEAgLTEwMzMsOSArNTYxMiwxNiBAQAogICAgTWlzc2luZyB0eXBlIHVuZGVyIGRhcndpbgogICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCiAKKzIwMTEtMDEtMTEgMTI6MTAgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIE5ldEJTRCBzdXBwb3J0IGZvciBEaXNrIEkvTyBzdGF0cworICAgW0Zyb20gTmV0QlNEIHBhdGNoIGFyY2hpdmVdCisKIDIwMTEtMDEtMTEgMTI6MDEgIGR0czEyCiAKLSAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsICAgCiAgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCiAgICBIYW5kbGUgc3lzdGVtcyB3aXRoICdzdHJ1Y3QgdGltZXNwZWMgaWZuZXQuaWZfbGFzdGNoYW5nZScgKHJhdGhlcgpAQCAtMTA5MSw2ICs1Njc3LDIzIEBACiAgICBGaXggZGl2aWRlLWJ5LXplcm8gZXJyb3IgaW4gQ1BVIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MKICAgIFtGcm9tIE5ldEJTRCBwYXRjaCBhcmNoaXZlXQogCisyMDExLTAxLTA5IDIyOjU0ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKworICAgQ0hBTkdFUzogT3BlbkJTRDogVXBkYXRlIFNXUnVuIGNvZGUgdG8gdXNlIGt2bV9nZXRwcm9jMgorICAgW0Zyb20gT3BlbkJTRCBwYXRjaCBhcmNoaXZlXQorCisyMDExLTAxLTA5IDIxOjMwICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBPcGVuQlNEOiBGaXggb3JkZXIgb2YgaGVhZGVycyB3aGVuIGNoZWNraW5nCisgICA8bmV0aW5ldC9pbl9wY2IuaD4KKyAgIFtGcm9tIE9wZW5CU0QgcGF0Y2ggYXJjaGl2ZV0KKwogMjAxMS0wMS0wOSAxOTo0NCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jOgpAQCAtMTExNSwxMyArNTcxOCwxNCBAQAogCiAgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X25saXN0LmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9uZXRic2QuYzoKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbmV0YnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmM6CiAKICAgIHN5c2N0bCB0YWtlcyBhICdzaXplX3QnIHZhcmlhYmxlIGZvciB0aGUgc2l6ZSBwYXJhbWV0ZXIKIAogMjAxMS0wMS0wOCAwMDo0NyAgbWFnZnIKIAotICAgKiBhY2NvbmZpZy5oOgorICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCiAgICBVcGRhdGUgYWNjb25maWcuaCB3aXRoIGNoYW5nZXMgZnJvbSByMTk4MTkuCiAgICBSZXJ1biBhdXRvaGVhZGVyLgpAQCAtMTE3MCw2ICs1Nzc0LDEzIEBACiAgICBVcGRhdGUgcmV0cmlldmFsIG9mIGNhY2hlIHVzYWdlIHN0YXRpc3RpY3Mgb24gRnJlZUJTRAogICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQogCisyMDExLTAxLTA3IDE0OjMxICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYzoKKworICAgRml4IGhhbmRsaW5nIG9mIHN5c09iamVjdElEIGxlbmd0aAorICAgKGJhY2twb3J0IG9mIHJldmlzaW9ucyAxOTM4MiAmIDE5NDA0KQorCiAyMDExLTAxLTA3IDE0OjIwICBkdHMxMgogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CkBAIC0xMTc3LDYgKzU3ODgsMTIgQEAKICAgIEluY3JlYXNlIG1heGltdW0gc2l6ZSBvZiBleGVjdXRlIG91dHB1dCBjYWNoZQogICAgW0Zyb20gRnJlZUJTRCBwYXRjaCBhcmNoaXZlXQogCisyMDExLTAxLTA3IDE0OjEwICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jOgorCisgICBBZGQgbWlzc2luZyBzdGFuZGFyZCBOZXQtU05NUCBoZWFkZXIgZmlsZXMKKwogMjAxMS0wMS0wNyAxNDowOSAgZHRzMTIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCkBAIC0xMjc3LDEyICs1ODk0LDEyIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjk0MTgxMTogSGFuZGxlIHN1Y2Nlc3NmdWwgcmVxdWVzdHMgd2l0aAogICAgcmVxSUQgMAogCi0yMDExLTAxLTA1IDE2OjMxICBkdHMxMgorMjAxMS0wMS0wNiAwOTozOCAgYnZhc3NjaGUKIAotICAgKiBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmM6CiAKLSAgIFVzZSB0aGUgYXBwcm9wcmlhdGUgQVBJIGNhbGwgZm9yIHJlcG9ydGluZyBjb25maWcgZXJyb3JzLgotICAgKCJEb24ndCBiZSBzbyBpbXBhdGllbnQsIERhdmUuLi4uIikKKyAgIFNwZWxsaW5nIGZpeDogSW5pdGlhbHppZXMgLT4gSW5pdGlhbGl6ZXMuCiAKIDIwMTEtMDEtMDUgMTQ6MDYgIGR0czEyCiAKQEAgLTEzMDQsMTggKzU5MjEsNDcgQEAKIAogICAgQ29weXJpZ2h0IHVwZGF0ZSBmb3IgMjAxMQogCisyMDExLTAxLTA0IDEyOjE5ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgorCisgICBGaXggY29tcGlsZXIgd2FybmluZ3MgdHJpZ2dlcmVkIGJ5IHRoZSBXaW4zMiBNSUItSUkKKyAgIGltcGxlbWVudGF0aW9uIChiYWNrcG9ydGVkIHIxOTc5MCBmcm9tIHRoZSB0cnVuaykuCisKKzIwMTEtMDEtMDQgMTI6MTcgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYzoKKworICAgUmVtb3ZlZCB0d28gdW51c2VkIHZhcmlhYmxlcyBmcm9tIHRoZSBzY3RwLW1pYiBpbXBsZW1lbnRhdGlvbgorICAgKGJhY2twb3J0ZWQgcjE5NzgwIGZyb20gdGhlIHRydW5rKS4KKworMjAxMS0wMS0wNCAxMjoxNSAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIEZpeGVkIGEgcmVjZW50bHkgaW50cm9kdWNlZCBtaXNtYXRjaCBiZXR3ZWVuIGZvcm1hdCBzcGVjaWZpY2F0aW9uCisgICBhbmQgYXJndW1lbnQgbGlzdCBpbiB0aGUgaXAtbWliIGltcGxlbWVudGF0aW9uIChiYWNrcG9ydGVkIHIxOTc3OQorICAgZnJvbSB0aGUgdHJ1bmspLgorCisyMDExLTAxLTAyIDA1OjQyICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBza2lwIG5vbi1BRl9JTkVUIGludGVyZmFjZXMgd2hlbiBsb2FkaW5nIGlwdjQKKyAgIGFkZHJzCisKIDIwMTAtMTItMjkgMDE6MzcgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CiAKLSAgIE5FV1M6IHNubXBkOiBQYXRjaCAzMTQxNDYyOiBmcm9tIGZlbm5lcjogZml4IGFnZW50eCBzdWJhZ2VudAorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDMxNDE0NjI6IGZpeCBhZ2VudHggc3ViYWdlbnQKICAgIGlzc3VlcyB3aXRoIG11bHRpcGxlLW9iamVjdCByZXF1ZXN0cwogCiAyMDEwLTEyLTI5IDAxOjMzICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvdmFjbS5jOgogCi0gICBORVdTOiBzbm1wZDogUGF0Y2ggZnJvbSBOaWVscyB0byBmaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCisgICBDSEFOR0VTOiBzbm1wZDogUGF0Y2ggZnJvbSBOaWVscyB0byBmaXggVkFDTSBwZXJzaXN0YW50IHN0b3JhZ2UuCiAKIDIwMTAtMTItMjEgMTE6MjkgIGR0czEyCiAKQEAgLTEzMjMsNiArNTk2OSwxNDYgQEAKIAogICAgQnJpbmcgYWxsIHZlcnNpb25zIG9mIG1ha2VyZWxlYXNlLnhtbCBpbnRvIGxpbmUKIAorMjAxMC0xMi0yMSAwOTo0NCAgZHRzMTIKKworICAgKiBDaGFuZ2VMb2c6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMTAtMTItMjEgMDk6MjUgIGR0czEyCisKKwkqIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLAorCSAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCisJICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsCisJICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAorCSAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAorCSAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLAorCSAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCisJICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsCisJICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCisJICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAorCSAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywKKwkgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAorCSAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKKwkgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywKKwkgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsCisJICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsCisJICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKKwkgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAorCSAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCisJICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCisJICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywKKwkgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywKKwkgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywKKwkgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywKKwkgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsCisJICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsCisJICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywKKwkgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLAorCSAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLAorCSAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsCisJICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywKKwkgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLAorCSAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLAorCSAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsCisJICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCisJICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywKKwkgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsCisJICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisJICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCSAgKHJlLXJ1bm5pbmcgbWFrZXJlbGVhc2UpCisKKzIwMTAtMTItMjEgMDk6MTYgIGR0czEyCisKKwkqIENIQU5HRVMsIE5FV1MsIGNvbmZpZ3VyZToKKwkgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCSAgKHJlLXJ1bm5pbmcgbWFrZXJlbGVhc2UpCisJICBBY3R1YWxseSBsb2cgb2YgcmVjZW50IHNpZ25pZmljYW50IGNoYW5nZXMKKworMjAxMC0xMi0yMCAxNjoxMCAgZHRzMTIKKworCSogQ2hhbmdlTG9nOgorCSAgdmVyc2lvbiB1cGRhdGUKKworMjAxMC0xMi0yMCAxNjowNyAgZHRzMTIKKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMTAtMTItMjAgMTU6NDUgIGR0czEyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMTAtMTItMjAgMTU6MjMgIGR0czEyCisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYywgcGVybC9BU04vQVNOLnBtLCAgIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbSwgcGVybC9PSUQvT0lELnBtLCBwZXJsL1NOTVAvU05NUC5wbSwgCisgICAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSwKKyAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCAgICBwZXJsL2FnZW50L2FnZW50LnBtLAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sICAgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbToKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMTAtMTItMjAgMTQ6MDcgIGR0czEyCisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCiAyMDEwLTEyLTEwIDE1OjUwICBoYXJkYWtlcgogCiAgICAqIGFnZW50L2FnZW50X3RyYXAuYywgc25tcGxpYi9zbm1wdXNtLmM6CkBAIC0xMzQzLDYgKzYxMjksMTMgQEAKICAgIHRoZSBsb2FkaW5nCiAgICBvZiB0aGUgbGlzdCBhIGJpdC4KIAorMjAxMC0xMi0wNiAyMzoyMyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jOgorCisgICBQYXRjaCBmcm9tIE5pZWxzIHRvIHJlbW92ZSBleHRyYSBoZWFkZXJzIGZyb20gdGhlIGxpbnV4IGRvdDNzdGF0cworICAgaW1wbGVtZW50YXRpb24KKwogMjAxMC0xMi0wNiAxNjoyNCAgaGFyZGFrZXIKIAogICAgKiBhcHBzL3NubXB0cmFwLmM6CkBAIC0xMzc5LDYgKzYxNzIsMTUgQEAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzA1MzQzNjogZnJvbTogdGFrZXZvczogZml4OgogICAgdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2VzcyBpbnZhbGlkIG1lbW9yeSBhY2Nlc3MKIAorMjAxMC0xMS0zMCAwNTo1NiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDMwNTcwOTA6IGZyb20gc2hlbW1pbmdlcjogbWFrZSBldGh0b29sCisgICBzdXBwb3J0IG9uIGxpbnV4IHVzZSB0aGUgaGlnaCBzcGVlZCBzdHJ1Y3QgaW5mbyBmb3IgMTAwRysuCisKIDIwMTAtMTEtMzAgMDQ6NTggIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmM6CkBAIC0xNDA2LDYgKzYyMDgsMTUgQEAKICAgIAogICAgbmV0c25tcF9jYWNoZV9pc192YWxpZCgpIGlzIG5vdCBtZWFudCBmb3IgbWliIG1vZHVsZXMKIAorMjAxMC0xMS0xNiAxMDowNCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IExpbnV4OiBhZ2VudDogaXBOZXRUb1BoeXNpY2FsVGFibGU6IERvIG5vdCBsb2cgYW4gZXJyb3IKKyAgIG1lc3NhZ2UgaWYgb25lIG9yIG1vcmUgaW50ZXJmYWNlcyBhcmUgcHJlc2VudCB0aGF0IGRvIG5vdCBoYXZlCisgICBzdWNoIGluZm9ybWF0aW9uIChOVURfTk9BUlApLCBlLmcuIHR1bm5lbHMuIFJlcG9ydGVkIGJ5IFN0ZXBoZW4KKyAgIEhlbW1pbmdlci4gU2VlIGFsc28gcGF0Y2ggIzMxMDcwMDMuCisKIDIwMTAtMTEtMTUgMTQ6MTUgIGJ2YXNzY2hlCiAKICAgICogc25tcGxpYi9hc24xLmM6CkBAIC0xNDE1LDEyICs2MjI2LDYgQEAKICAgIGFzbl9idWlsZF9zaWduZWRfaW50NjQoKS4gTW9zdCBidXQgbm90IGFsbCBvZiB0aGVzZSBidWdzIHdlcmUKICAgIHNwZWNpZmljIHRvIDY0LWJpdCBzeXN0ZW1zLiBGaXhlcyBidWcgIzMwOTMxOTkuCiAKLTIwMTAtMTEtMTUgMTQ6MTIgIGJ2YXNzY2hlCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvc3RydWN0Lmg6Ci0KLSAgIEJ1aWxkcyBhZ2Fpbi4KLQogMjAxMC0xMS0xMSAyMjo0OCAgbmJhCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jOgpAQCAtMTQyOCw5ICs2MjMzLDE3IEBACiAgICBGaXggcjE5NjM2OiBUcmFwT0lEIGlzIG5vdCB0aGUgZmlyc3QgdmFyYmluZCBpbiB0aGUgY29udmVydGVkIHYyCiAgICB0cmFwCiAKKzIwMTAtMTEtMTEgMDg6MzggIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oOgorCisgICBDbGVhbnVwOiBSZW1vdmVkIHN1cGVyZmx1b3VzIHJlZmVyZW5jZXMgdG8gdGhlIFBPU0lYIHRocmVhZHMKKyAgIGxpYnJhcnkuCisKIDIwMTAtMTEtMTAgMTI6MzEgIGJ2YXNzY2hlCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzOgogCiAgICBDSEFOR0VTOiBCVUc6IDMxMDI5MDQ6IEFsbCBOZXQtU05NUCBDIHNvdXJjZSBmaWxlcyBhcmUgbm93CiAgICBjb21waWxlZCB3aXRoIC1mbm8tc3QKQEAgLTE1MDQsMTIgKzYzMTcsNDggQEAKICAgIENIQU5HRVM6IHNubXBsaWI6IGZvcmNlIGEgOyBhdCB0aGUgZW5kIG9mIHRoZSBzdGF0aWNfYXNzZXJ0CiAgICBtYWNyby4KIAotMjAxMC0xMS0wNyAxNjoyMSAgZHRzMTIKKzIwMTAtMTEtMDUgMTU6NDEgIGJ2YXNzY2hlCiAKLSAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnM6CiAKLSAgIEJhY2twb3J0IG9mIHJldmlzaW9uIDE3NTk2Ci0gICBUcml2aWFsIHdhcm5pbmcgZml4ZXMKKyAgIE1hZGUgc3VyZSB0aGF0IHJwbUdldFBhdGgoKSBjYW4gYmUgZm91bmQgYnkgY29uZmlndXJlLgorCisyMDEwLTExLTA1IDE0OjUyICBidmFzc2NoZQorCisgICAqICBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczEsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMjoKKworICAgQ0hBTkdFUzogYWdlbnQ6IEZpeGVkIG9yZGVyIG9mIHJwbWxpYiBkZXRlY3Rpb24gYW5kIGFnZW50IG1vZHVsZQorICAgY29uZmlndXJhdGlvbiAoYmFja3BvcnRlZCByMTk2MjEgZnJvbSB0aGUgdHJ1bmspLgorCisyMDEwLTExLTA1IDE0OjM2ICBidmFzc2NoZQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJldmVydGVkIHIxOTYyMy4KKworMjAxMC0xMS0wNSAxMzo0MiAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBSZWdlbmVyYXRlZCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLgorCisyMDEwLTExLTA1IDEwOjAwICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtOiBGaXhlZCBhIG1lbW9yeSBsZWFrCisgICBpbiBuZXRzbm1fc3dpbnN0X2FyY2hfaW5pdCgpLgorCisyMDEwLTExLTA1IDA5OjIzICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtOiBQYXNzIGNvcnJlY3QgcGF0aCB0bworICAgcnBtZGJPcGVuKCkgc3VjaCB0aGF0IG9wZW5pbmcgdGhlIGRhdGFiYXNlIHN1Y2NlZWRzLgorICAgQ0hBTkdFUzogYWdlbnQ6IGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbTogTG9nIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGlmIHJwbWRiT3BlbigpIGZhaWxzLgogCiAyMDEwLTExLTA1IDA4OjQ4ICBidmFzc2NoZQogCkBAIC0xNTMxLDE4ICs2MzgwLDExIEBACiAgICBCYWNrcG9ydGVkIHIxOTYwMiwgd2hpY2ggZml4ZXMgdGhlIGRvdWJsZSBmcmVlIGF0IGV4aXQgdGhhdCB3YXMKICAgIGludHJvZHVjZWQgYnkgcjE5NDYyLgogCi0yMDEwLTExLTAzIDE0OjU5ICBidmFzc2NoZQotCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotCi0gICBDSEFOR0VTOiBidWlsZGluZzogVkVSU0lPTiBpcyBhZ2FpbiBhIG51bWJlciBpbnN0ZWFkIG9mIGEgQwotICAgZXhwcmVzc2lvbiwgc3VjaCB0aGF0IHRoZSBQZXJsIG1vZHVsZXMgYnVpbGQgYWdhaW4uCi0KLTIwMTAtMTEtMDMgMTQ6NDcgIGJ2YXNzY2hlCisyMDEwLTExLTAzIDE0OjUxICBidmFzc2NoZQogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaDoKIAotICAgRml4ZWQgYW4gaW5jb3JyZWN0IGZpbGUgaGVhZGVyIChhIHNvdXJjZSBjb2RlIGNvbW1lbnQpLgorICAgRm9yd2FyZC1wb3J0ZWQgcjE5NjA4LgogCiAyMDEwLTExLTAxIDE2OjUwICBkdHMxMgogCkBAIC0xNTU5LDEwICs2NDAxLDEwIEBACiAKIDIwMTAtMTEtMDEgMTY6MzAgIGR0czEyCiAKLSAgICogIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmLCBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsICAgCi0gICAgICBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCBtYW4vc25tcGdldC4xLmRlZiwgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCAKLSAgICAgICAgbWFuL3NubXBzZXQuMS5kZWYsIG1hbi9zbm1wdHJhcC4xLmRlZiwgbWFuL3NubXB0cmFwZC44LmRlZiwgICAKLSAgICAgIG1hbi9zbm1wd2Fsay4xLmRlZjoKKyAgICogIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NubXBfc2Vzc19hcGkuMy5kZWYsICAgCisgICAgICBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsIG1hbi9zbm1wZ2V0LjEuZGVmLCAKKyAgICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcHNldC4xLmRlZiwgbWFuL3NubXB0cmFwLjEuZGVmLCAgIAorICAgICAgbWFuL3NubXB0cmFwZC44LmRlZiwgbWFuL3NubXB3YWxrLjEuZGVmOgogCiAgICBSZW1vdmUgQ01VIGNvcHlyaWdodCBub3RpY2UgZnJvbSBtYW4gcGFnZXMgdGhhdAogICAgd2VyZSBub3QgaW5oZXJpdGVkIGZyb20gQ01VLVNOTVAKQEAgLTE1NzAsMjIgKzY0MTIsMjQgQEAKIAogMjAxMC0xMS0wMSAxMzo1NSAgZHRzMTIKIAotICAgKiAgbWFuL2VuY29kZV9rZXljaGFuZ2UuMS5kZWYsIG1hbi9maXhwcm9jLjEuZGVmLCAgIAotICAgICAgbWFuL21pYjJjLXVwZGF0ZS4xLmRlZiwgbWFuL21pYjJjLjEuZGVmLCBtYW4vbWliX2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9uZXQtc25tcC1jb25maWcuMS5kZWYsIG1hbi9yZWFkX2NvbmZpZy4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wX2FsYXJtLjMuZGVmLCBtYW4vc25tcF9hcGkuMy5kZWYsIG1hbi9zbm1wX2NvbmZpZy41LmRlZiwgIAotICAgICAgIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmLCBtYW4vc25tcF90cmFwX2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wYnVsa2dldC4xLmRlZiwgbWFuL3NubXBidWxrd2Fsay4xLmRlZiwgbWFuL3NubXBjbWQuMS5kZWYsIAotICAgICAgICBtYW4vc25tcGNvbmYuMS5kZWYsIG1hbi9zbm1wZC44LmRlZiwgbWFuL3NubXBkLmNvbmYuNS5kZWYsICAgCi0gICAgICBtYW4vc25tcGQuZXhhbXBsZXMuNS5kZWYsIG1hbi9zbm1wZC5pbnRlcm5hbC41LmRlZiwgICAKLSAgICAgIG1hbi9zbm1wZGVsdGEuMS5kZWYsIG1hbi9zbm1wZGYuMS5kZWYsIG1hbi9zbm1wZ2V0LjEuZGVmLCAgIAotICAgICAgbWFuL3NubXBnZXRuZXh0LjEuZGVmLCBtYW4vc25tcG5ldHN0YXQuMS5kZWYsIG1hbi9zbm1wc2V0LjEuZGVmLCAgCi0gICAgICAgbWFuL3NubXBzdGF0dXMuMS5kZWYsIG1hbi9zbm1wdGFibGUuMS5kZWYsIG1hbi9zbm1wdGVzdC4xLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wdHJhbnNsYXRlLjEuZGVmLCBtYW4vc25tcHRyYXAuMS5kZWYsIG1hbi9zbm1wdHJhcGQuOC5kZWYsIAotICAgICAgICBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wdXNtLjEuZGVmLCBtYW4vc25tcHZhY20uMS5kZWYsCi0gICAgICAgICBtYW4vc25tcHdhbGsuMS5kZWYsIG1hbi90a21pYi4xLmRlZiwgbWFuL3RyYXB0b2VtYWlsLjEuZGVmLCAgIAotICAgICAgbWFuL3ZhcmlhYmxlcy41LmRlZjoKKyAgICogIG1hbi9jb25maWdfYXBpLjMuZGVmLCBtYW4vZW5jb2RlX2tleWNoYW5nZS4xLmRlZiwgICAKKyAgICAgIG1hbi9maXhwcm9jLjEuZGVmLCBtYW4vbWliMmMtdXBkYXRlLjEuZGVmLCBtYW4vbWliMmMuMS5kZWYsICAgCisgICAgICBtYW4vbWliX2FwaS4zLmRlZiwgbWFuL25ldC1zbm1wLWNvbmZpZy4xLmRlZiwgICAKKyAgICAgIG1hbi9uZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xLmRlZiwgbWFuL3BkdV9hcGkuMy5kZWYsICAgCisgICAgICBtYW4vc2Vzc2lvbl9hcGkuMy5kZWYsIG1hbi9zbm1wLmNvbmYuNS5kZWYsICAgCisgICAgICBtYW4vc25tcF9hZ2VudF9hcGkuMy5kZWYsIG1hbi9zbm1wX2FsYXJtLjMuZGVmLCAgIAorICAgICAgbWFuL3NubXBfY29uZmlnLjUuZGVmLCBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZiwgICAKKyAgICAgIG1hbi9zbm1wX3RyYXBfYXBpLjMuZGVmLCBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsICAgCisgICAgICBtYW4vc25tcGJ1bGt3YWxrLjEuZGVmLCBtYW4vc25tcGNtZC4xLmRlZiwgbWFuL3NubXBjb25mLjEuZGVmLCAgIAorICAgICAgbWFuL3NubXBkLjguZGVmLCBtYW4vc25tcGQuY29uZi41LmRlZiwgbWFuL3NubXBkLmV4YW1wbGVzLjUuZGVmLCAgCisgICAgICAgbWFuL3NubXBkLmludGVybmFsLjUuZGVmLCBtYW4vc25tcGRlbHRhLjEuZGVmLCBtYW4vc25tcGRmLjEuZGVmLCAKKyAgICAgICAgbWFuL3NubXBnZXQuMS5kZWYsIG1hbi9zbm1wZ2V0bmV4dC4xLmRlZiwgbWFuL3NubXBuZXRzdGF0LjEuZGVmLAorICAgICAgICAgbWFuL3NubXBzZXQuMS5kZWYsIG1hbi9zbm1wc3RhdHVzLjEuZGVmLCBtYW4vc25tcHRhYmxlLjEuZGVmLCAgCisgICAgICAgbWFuL3NubXB0ZXN0LjEuZGVmLCBtYW4vc25tcHRyYW5zbGF0ZS4xLmRlZiwgbWFuL3NubXB0cmFwLjEuZGVmLCAKKyAgICAgICAgbWFuL3NubXB0cmFwZC44LmRlZiwgbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmLAorICAgICAgbWFuL3NubXB1c20uMS5kZWYsICAgIG1hbi9zbm1wdmFjbS4xLmRlZiwgbWFuL3NubXB3YWxrLjEuZGVmLAorICAgICAgbWFuL3RrbWliLjEuZGVmLCAgICBtYW4vdHJhcHRvZW1haWwuMS5kZWYsIG1hbi92YXJiaW5kX2FwaS4zLmRlZiwgCisgICAgICAgIG1hbi92YXJpYWJsZXMuNS5kZWY6CiAKICAgIFN1cHByZXNzIGZvcmNpbmcgb2YgIkJlcmtlbGV5IERpc3RyaWJ1dGlvbiIgZm9vdGVyCiAgICAoQWxsb3dzIE5ldC1TTk1QIHZlcnNpb24gaW5mb3JtYXRpb24gdG8gYmUgZGlzcGxheWVkIGluIHRoZSBtYW4KQEAgLTE1OTMsOSArNjQzNyw5IEBACiAKIDIwMTAtMTEtMDEgMTM6NDIgIGR0czEyCiAKLSAgICogIG1hbi9taWIyYy4xLmRlZiwgbWFuL21pYl9hcGkuMy5kZWYsIG1hbi9yZWFkX2NvbmZpZy4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgICAKLSAgICAgIG1hbi9zbm1wX2FsYXJtLjMuZGVmLCBtYW4vc25tcF9hcGkuMy5kZWYsICAgCisgICAqICBtYW4vY29uZmlnX2FwaS4zLmRlZiwgbWFuL21pYjJjLjEuZGVmLCBtYW4vbWliX2FwaS4zLmRlZiwgICAKKyAgICAgIG1hbi9zZXNzaW9uX2FwaS4zLmRlZiwgbWFuL3NubXAuY29uZi41LmRlZiwgICAKKyAgICAgIG1hbi9zbm1wX2FnZW50X2FwaS4zLmRlZiwgbWFuL3NubXBfYWxhcm0uMy5kZWYsICAgCiAgICAgICBtYW4vc25tcF9zZXNzX2FwaS4zLmRlZiwgbWFuL3NubXBfdHJhcF9hcGkuMy5kZWYsICAgCiAgICAgICBtYW4vc25tcGJ1bGtnZXQuMS5kZWYsIG1hbi9zbm1wYnVsa3dhbGsuMS5kZWYsIG1hbi9zbm1wY21kLjEuZGVmLCAKICAgICAgICAgbWFuL3NubXBjb25mLjEuZGVmLCBtYW4vc25tcGQuOC5kZWYsIG1hbi9zbm1wZC5jb25mLjUuZGVmLCAgIApAQCAtMTYxNSw2ICs2NDU5LDI2IEBACiAKICAgIFNwZWxsaW5nIGZpeCBpbiBsb2cgdGV4dHM6IGNvbnRhaW50ZXIgLT4gY29udGFpbmVyLgogCisyMDEwLTEwLTI5IDExOjM0ICBidmFzc2NoZQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgQmFja3BvcnRlZCByMTk1ODggYW5kIHIxOTU4OSBmcm9tIHRoZSB0cnVuay4KKworMjAxMC0xMC0yOSAwNzo1NiAgYnZhc3NjaGUKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYzoKKworICAgTW9yZSBjb21waWxlciB3YXJuaW5nIGZpeGVzLgorCisyMDEwLTEwLTI5IDA3OjU1ICBidmFzc2NoZQorCisgICAqIHRlc3RpbmcvZXZhbF90b29scy5zaDoKKworICAgQmFja3BvcnRlZCBJU0RFRklORUQgZnJvbSB0aGUgdHJ1bmsuCisKIDIwMTAtMTAtMjggMTQ6MDIgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMuY2hlY2tfdmFsdWVzLmNvbmY6CkBAIC0xNjQ0LDEyICs2NTA4LDYgQEAKICAgIGxvbmdlciBuZWNlc3NhcnkgdG8gY2FzdCB0aGVzZSB0d28gYXJndW1lbnRzIChoYXMgYmVlbiByZXZlcnRlZAogICAgdmlhIHIxOTU2OCkuCiAKLTIwMTAtMTAtMjggMTA6MDYgIGJ2YXNzY2hlCi0KLSAgICogdGVzdGluZy9ldmFsX3Rvb2xzLnNoOgotCi0gICBCYWNrcG9ydGVkIElTREVGSU5FRCBmcm9tIHIxODY3MC4KLQogMjAxMC0xMC0yNSAyMDo1OSAgZHRzMTIKIAogICAgKiBNYWtlZmlsZS5pbjoKQEAgLTE2ODQsNiArNjU0MiwyNiBAQAogICAgQ0hBTkdFUzogV2luMzI6IHRlc3Rpbmc6IEF2b2lkIHRoYXQgVDIwMCBmYWlscyBvbiBrbm93biBNaWNyb3NvZnQKICAgIFNOTVAgZXh0ZW5zaW9uIERMTCBidWdzLgogCisyMDEwLTEwLTI1IDA4OjA2ICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgICAKKyAgICAgIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnM6CisKKyAgIE5FV1M6IExpbnV4OiBzbm1wZCBpcyBhZ2FpbiBzaW5nbGUtdGhyZWFkZWQuCisgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI5NTk4MTE6IGZyb20gSmFuIFNhZnJhbmVrOiBSZWltcGxlbWVudAorICAgTGludXggTmV0bGluayBJUHY2IHByZWZpeCBsaXN0ZW5lci4KKworMjAxMC0xMC0yMiAwOToyMCAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IG5ldHNubXBfY2FjaGVfZnJlZSgpOiBBIG1vcmUgZGV0YWlsZWQgbWVzc2FnZSBpcworICAgbm93IGxvZ2dlZCB3aGVuIGF0dGVtcHRpbmcgdG8gZnJlZSBhIGNhY2hlIHRoYXQgaXMgc3RpbGwgaW4gdGhlCisgICBjYWNoZSBsaXN0LgorICAgKEJhY2twb3J0ZWQgcjE5NTI0LikKKwogMjAxMC0xMC0yMiAwOToxOSAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgpAQCAtMTcwMSw3ICs2NTc5LDcgQEAKIAogICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAgIAogICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wZC5jLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaCwgc25tcGxpYi9zbm1wX2FwaS5jOgogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBBZGRlZCBzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAoKS4KICAgIENIQU5HRVM6IGFnZW50OiBDYWxsIHNodXRkb3duX21hc3Rlcl9hZ2VudCgpIGFuZCBzaHV0ZG93bl9hZ2VudCgpCkBAIC0xNzI2LDYgKzY2MDQsMTMgQEAKICAgIGFuYWx5emVyIHN1cHBvcnRzIGZvbGxvd2luZyBjaGlsZCBwcm9jZXNzZXMuCiAgICAoQmFja3BvcnRlZCByMTkyODMgZnJvbSB0aGUgdHJ1bmsuKQogCisyMDEwLTEwLTE5IDIxOjEzICBuYmEKKworICAgKiBzbm1wbGliL3BhcnNlLmM6CisKKyAgIEJVRyAzMDc5MDcyIGZyb20gRGF2ZSBCZWFsOiBmaXggYnVmZmVyIG92ZXJmbG93IGZyb20gYmFkIHVzZSBvZgorICAgc3RybmNhdAorCiAyMDEwLTEwLTE5IDE4OjA4ICBidmFzc2NoZQogCiAgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKQEAgLTE3ODMsNiArNjY2OCwzMyBAQAogICAgdW5pbml0aWFsaXplZCBkYXRhIGZvciB0aGUgYnVmZmVycyByZXR1cm5lZCBieQogICAgbmV0c25tcF9jYWxsYmFja19yZWN2KCkgYW5kIG5ldHNubXBfY2FsbGJhY2tfaG9va19idWlsZCgpLgogCisyMDEwLTEwLTE3IDE2OjUxICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogQXZvaWQgdGhhdCBoclNXUnVuUGF0aCBjb250YWlucyB0cmFpbGluZyBnYXJiYWdlCisgICBjaGFyYWN0ZXJzIG9uIExpbnV4IHN5c3RlbXMuCisgICBGb3VuZCB0aGlzIGJ5IGFuYWx5emluZyBhIFZhbGdyaW5kIGNvbXBsYWludC4gRm9yIGFueW9uZSB3aG8gaXMKKyAgIHdvbmRlcmluZyB3aHkgdGhpcyBwYXRjaCBtYWtlcyBzZW5zZSwgYSBxdW90ZSBmcm9tIHRoZSBnbGliYworICAgc25wcmludGYoKSBkb2N1bWVudGF0aW9uCisgICAoaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmMvbWFudWFsL2h0bWxfbm9kZS9Gb3JtYXR0ZWQtT3V0cHV0LUZ1bmN0aW9ucy5odG1sKToKKyAgIDxxdW90ZT4KKyAgIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIG51bWJlciBvZiBjaGFyYWN0ZXJzIHdoaWNoIHdvdWxkIGJlCisgICBnZW5lcmF0ZWQgZm9yIHRoZSBnaXZlbiBpbnB1dCwgZXhjbHVkaW5nIHRoZSB0cmFpbGluZyBudWxsLiBJZgorICAgdGhpcyB2YWx1ZSBpcyBncmVhdGVyIG9yIGVxdWFsIHRvIHNpemUsIG5vdCBhbGwgY2hhcmFjdGVycyBmcm9tCisgICB0aGUgcmVzdWx0IGhhdmUgYmVlbiBzdG9yZWQgaW4gcy4KKyAgIDwvcXVvdGU+CisgICBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgZGlmZmVycyBmcm9tIHRoZSBzdGFuZGFyZCBiZWhhdmlvci4gQSBxdW90ZQorICAgZnJvbSBodHRwOi8vb3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwNzkwODc5OS94c2gvc25wcmludGYuaHRtbDoKKyAgIDxxdW90ZT4KKyAgIFJFVFVSTiBWQUxVRQorICAgVXBvbiBzdWNjZXNzZnVsIGNvbXBsZXRpb24sIHRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIG51bWJlciBvZgorICAgYnl0ZXMgdHJhbnNtaXR0ZWQgZXhjbHVkaW5nIHRoZSB0ZXJtaW5hdGluZyBudWxsIGluIHRoZSBjYXNlIG9mCisgICBzcHJpbnRmKCkgb3Igc25wcmludGYoKSBvciBhIG5lZ2F0aXZlIHZhbHVlIGlmIGFuIG91dHB1dCBlcnJvcgorICAgd2FzIGVuY291bnRlcmVkLgorICAgPC9xdW90ZT4KKwogMjAxMC0xMC0xNyAxNDoyNCAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaDoKQEAgLTE3OTIsNyArNjcwNCw3IEBACiAKIDIwMTAtMTAtMTYgMDg6MzcgIGJ2YXNzY2hlCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQ6CiAKICAgIFNwZWxsaW5nIGZpeDogZHVscGljYXRlIC0+IGR1cGxpY2F0ZS4KIApAQCAtMTgyOCw5ICs2NzQwLDE4IEBACiAgICBoYW5kbGVyIG5vIGxvbmdlciBjYXVzZXMgYSBjcmFzaCAoZG91YmxlIGZyZWUpIHdoZW4KICAgIGhhbmRsZXItPm15dm9pZCBvZiB0aGUgb3JpZ2luYWwgaGFuZGxlciB3YXMgbm9uLU5VTEwuCiAKKzIwMTAtMTAtMTUgMTA6NTYgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQnVpbGRzIG5vdyBjb3JyZWN0bHkgd2l0aCBhIDY0LWJpdAorICAgY29tcGlsZXIuCisKIDIwMTAtMTAtMTUgMTA6MDIgIGJ2YXNzY2hlCiAKLSAgICogYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBtYW4vbmV0c25tcF9oYW5kbGVyLjM6CisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zOgogCiAgICBTcGVsbGluZyBmaXg6IGR1bHBpY2F0ZXMgLT4gZHVwbGljYXRlcy4KIApAQCAtMTg0OCwxMyArNjc2OSwyMSBAQAogICAgc2VfYWRkX3BhaXJfdG9fbGlzdCgpIHdpdGggYSB2YWx1ZSB0aGF0IGFscmVhZHkgZXhpc3RlZCBpbiB0aGUKICAgIGxpc3QuCiAKLTIwMTAtMTAtMTMgMTY6NTMgIGhhcmRha2VyCisyMDEwLTEwLTEzIDE2OjU1ICBoYXJkYWtlcgogCiAgICAqIGRpc3QvYXV0b2NvbmYtdmVyc2lvbiwgdGVzdGluZy90ZXN0cy9UMDAwY29uZmlndXJlOgogCiAgICBhZGRlZCBhIGF1dG9jb25mIHZlcnNpb24gY2hlY2tpbmcgdGVzdCB0byBjYXRjaCBkZXZlbG9wZXJzIGFuZAogICAgc2NyaXB0cyB0aGF0IGZhaWwgdG8gdXNlIHRoZSBjb3JyZWN0IGF1dG9jb25mIHZlcnNpb24KIAorMjAxMC0xMC0xMyAxMTo1MyAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBiYXRjaCBidWlsZCB3aXRoIE9wZW5TU0wgZW5hYmxlZCBhbmQKKyAgIHdpdGggcmVjZW50IE9wZW5TU0wgZGV2ZWxvcG1lbnQgZmlsZXMgd29ya3MgYWdhaW4uCisKIDIwMTAtMTAtMTMgMDc6NDMgIGJ2YXNzY2hlCiAKICAgICogbmV0LXNubXAtY29uZmlnLmluOgpAQCAtMTkwMSw2ICs2ODMwLDIwIEBACiAgICB2ZXJzaW9uIG9mIHRoZSBwYXRjaCB0byB1c2UgTVNHX0RPTlRXQUlUIGZvciB0aGUgdW5peCBkb21haW4KICAgIHNvY2tldAogCisyMDEwLTA5LTAzIDIxOjU2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzA1ODE0MDogZnJvbSB0YWtldm9zOiBjaGVjayB0aGF0IGlub2RlIGlzCisgICBub24temVybworCisyMDEwLTA5LTAzIDIxOjUwICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMzA1MzQyODogZnJvbSB0YWtldm9zOiBmaXgKKyAgIGdldF9waWRfZnJvbV9pbm9kZSB3aGVuIHRoZSBpbm9kZSBpcyBub3QgZm91bmQuCisKIDIwMTAtMDgtMjQgMDU6MzcgIG1hZ2ZyCiAKICAgICogYXBwcy9zbm1wdXNtLmM6CkBAIC0xOTI5LDYgKzY4NzIsMTMgQEAKICAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCAyODI1NjUzOiBmcm9tIGJydTVjZTogZml4IHNlbmRtYWlsLmNmCiAgICBwYXJzaW5nIGluIGNlcnRhaW4gY29uZGl0aW9ucwogCisyMDEwLTA4LTE2IDA3OjQyICBkdHMxMgorCisgICAqIHBlcmwvU05NUC9TTk1QLnhzOgorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjk5NTA5ODogRml4IGNyZWF0aW9uIG9mIFNOTVB2MyBzZXNzaW9ucworICAgd2l0aCBBUElfU0lOR0xFCisKIDIwMTAtMDgtMTQgMTY6MzAgIGR0czEyCiAKICAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYzoKQEAgLTE5NDIsNiArNjg5MiwxMyBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyOTA0OTAwOiBEb2N1bWVudGF0aW9uIHBsdXMgYXNzb3J0ZWQKICAgIGhhbmRsZXIgY29kZSBmaXhlcwogCisyMDEwLTA4LTEzIDIzOjQ0ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAzMDQ0NTEyOiBmcm9tIHBoaWx3ZWJzdGVyOiBmaXggc3lzb2JqZWN0aWQKKyAgIGRpcmVjdGl2ZS4KKwogMjAxMC0wOC0xMyAxMjoyMiAgZHRzMTIKIAogICAgKiBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmY6CkBAIC0xOTYwLDYgKzY5MTcsMTMgQEAKIAogICAgVXBkYXRlICJhdXRoKiIgdXNhZ2UgbWVzc2FnZSB3aXRoIGNvbnRleHQgc3VwcG9ydAogCisyMDEwLTA4LTAzIDA3OjI3ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYzoKKworICAgQUlYIGZpbGVzeXN0ZW0gdHlwZXMgYXJlIHRhZ2dlZCBhcyBpbnRlZ2Vycywgbm90IHN0cmluZ3MuCisgICBGaXggYSBzaWxseSBtaXN0YWtlLgorCiAyMDEwLTA4LTAxIDA2OjAwICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvc25tcF9lbnVtLmM6CkBAIC0xOTg5LDcgKzY5NTMsOSBAQAogCiAyMDEwLTA3LTI4IDE0OjM2ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKyAgICogIGFnZW50L21pYmdyb3VwL2RlZmF1bHRfbW9kdWxlcy5oLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgogCiAgICBEb24ndCBtaXggU01JdjEgYW5kIFNNSXYyIE1JQnMgaW4gdGhlIGxpc3Qgb2YgZGVmYXVsdCBNSUJzIHRvCiAgICBsb2FkLgpAQCAtMjAwMyw2ICs2OTY5LDE0IEBACiAgICBDSEFOR0VTOiBtaWJzOiBwYXRjaCAyOTc0NzE2OiBmcm9tIGJ2YXNzY2hlOiBmaXggaXNzdWVzIGluIHRoZQogICAgU01VWC1NSUIKIAorMjAxMC0wNy0yNyAwODoxNCAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IHJlcG9ydCBnZnMgZmlsZXN5c3RlbXMgaW4gaHJTdG9yYWdlVGFibGUgYW5kCisgICBockZTVGFibGUuCisKIDIwMTAtMDctMjQgMTU6MzYgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgpAQCAtMjAxMSw2ICs2OTg1LDEyIEBACiAgICB3aGVuIG9wZW5pbmcgYSBuZXcgU05NUCBzZXNzaW9uLgogICAgRml4ZXMgYSBidWcgd2l0aCByZXBvcnRpbmcgbGF0ZXIgY29uZmlnIGVycm9ycy4KIAorMjAxMC0wNy0yMSAxODowMyAgbmJhCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIHIxNzQ5NSBlcnJvbmVvdXNseSBkaXNhYmxlZCBkaXNrSU9MQXggZm9yIGxpbnV4CisKIDIwMTAtMDctMjAgMTA6MzggIGpzYWZyYW5lawogCiAgICAqIHNubXBsaWIvc3lzdGVtLmM6CkBAIC0yMDQwLDYgKzcwMjAsMTQgQEAKICAgIGludGVyZmFjZXMgdGFibGUgZG9lcyBub3QgdHJpZ2dlciBvdXQtb2YtcmFuZ2UgYXJyYXkgYWNjZXNzZXMKICAgICh3YXMgZGV0ZWN0ZWQgYnkgQm91bmRzQ2hlY2tlcikuCiAKKzIwMTAtMDctMTEgMTE6MTggIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zOgorCisgICBDSEFOR0VTOiBCVUc6IDMwMjc5MDA6IHdoZW4gY3Jvc3MtY29tcGlsaW5nIGl0IGlzIG5vdyBhc3N1bWVkCisgICB0aGF0IG1lbWNtcCgpIGlzIGF2YWlsYWJsZSBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoYXQgaXQgaXMgbm90CisgICBhdmFpbGFibGUuCisKIDIwMTAtMDctMDggMTI6MTcgIGR0czEyCiAKICAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYzoKQEAgLTIwNjQsMjIgKzcwNTIsMjEgQEAKICAgICogIG1hbi9taWJfYXBpLjMuZGVmLCBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9jb250YWluZXIuMywgIAogICAgICAgIG1hbi9uZXRzbm1wX2V4YW1wbGVfc2NhbGFyX2ludC4zLCBtYW4vbmV0c25tcF9oYW5kbGVyLjMsICAgCiAgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9zbm1wY21kLjEuZGVmLCBtYW4vc25tcGQuY29uZi41LmRlZiwgICAKLSAgICAgIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZjoKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9zbm1wY21kLjEuZGVmLCBtYW4vc25tcHRyYXBkLmNvbmYuNS5kZWY6CiAKICAgIENIQU5HRVM6IG1hbjogY2xlYW4gdXAgbWFudWFsIHBhZ2VzCiAgICAoZnJvbSBEZWJpYW4gcGF0Y2ggNTZfbWFucGFnZSkKIAotMjAxMC0wNi0yOCAwMDoyMSAgdGFuZGVycworMjAxMC0wNi0yOCAwMDoyMCAgdGFuZGVycwogCi0gICAqIGFnZW50L29iamVjdF9tb25pdG9yLmM6CisgICAqIG1hbi9jb25maWdfYXBpLjM6CiAKLSAgIGZpeCBjcHAgc3ludGF4IGVycm9yCisgICByZW1vdmUgZ2VuZXJhdGVkIG1hbnVhbCBwYWdlIGZyb20gcmVwb3NpdG9yeSAocGFydGx5IHJldmVydAorICAgcjE3NTU4KQogCiAyMDEwLTA2LTI3IDIzOjI5ICB0YW5kZXJzCiAKLSAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFwcHMvc25tcHRyYXBkLmMsICAgCi0gICAgICBhcHBzL3NubXB0cmFwZF9hdXRoLmM6CisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2F1dGguYzoKIAogICAgQ0hBTkdFUzogYnVpbGQ6IERvIG5vdCBjYWxsIHZhY21fc3RhbmRhcmRfdmlld3MoKSBvcgogICAgaW5pdF92YWNtX2NvbmZpZ190b2tlbnMoKSBpZiB0aGUgY29ycmVzcG9uZGluZyBtb2R1bGUgd2FzIG5vdApAQCAtMjExNywxOSArNzEwNCwzNSBAQAogCiAgICBGaXhlZCBhbiBlcnJvciBpbiBhIGNvbW1lbnQgYmxvY2suCiAKLTIwMTAtMDYtMTYgMTk6MTQgIGR0czEyCisyMDEwLTA2LTIxIDA4OjAxICBkdHMxMgogCi0gICAqIHNubXBsaWIvdmFjbS5jOgorICAgKiBzbm1wbGliL2xhcmdlX2ZkX3NldC5jOgogCi0gICBGaXggcHJvY2Vzc2luZyBvZiB2aWV3IG1hc2tzIChtaXNwbGFjZWQgcGFyZW50aGVzZXMpCisgICBFbnN1cmUgdGhhdCBmZHNldCBzdHJ1Y3R1cmUgaXMgcmVzaXplZCBzdWZmaWNpZW50bHkKKyAgIHRvIGFjY29tb2RhdGUgdGhlIHNwZWNpZmllZCBzb2NrZXQgSUQuCisgICBQcm9ibGVtIHJlcG9ydGVkIGJ5IFNoaXlhbGVpLgogCi0yMDEwLTA2LTA3IDIwOjE4ICBqc2FmcmFuZWsKKzIwMTAtMDYtMjEgMDc6NTYgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmM6CiAKICAgIFJldmVydGluZyByZXYuIDE3NjE2LCB0aGUgbmVjZXNzYXJ5IGNoZWNrIGlzIGFscmVhZHkgaW4gcmV2LgogICAgMTc0MTUuCiAKKzIwMTAtMDYtMTggMTc6MDQgIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgQ0hBTkdFUzogTGludXg6IGJ1aWxkcyBhZ2FpbiB3aXRoIGVtYmVkZGVkIFBlcmwgZGlzYWJsZWQgKGJ1ZworICAgMjk4NTkxNSkuCisgICAoQmFja3BvcnRlZCByMTg3MjEpCisKKzIwMTAtMDYtMTYgMTk6MTQgIGR0czEyCisKKyAgICogc25tcGxpYi92YWNtLmM6CisKKyAgIEZpeCBwcm9jZXNzaW5nIG9mIHZpZXcgbWFza3MgKG1pc3BsYWNlZCBwYXJlbnRoZXNlcykKKwogMjAxMC0wNi0wMiAxMDo1NyAganNhZnJhbmVrCiAKICAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVFdmVudFRhYmxlLmMsICAgCkBAIC0yMTU5LDE1MCArNzE2MiwyMDYgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDI5NzI1Nzk6IGZpeGVkIGNoZWNraW5nIG9mCiAgICBzbm1wVGFyZ2V0QWRkclJvd1N0YXR1cyBTRVQgcmVxdWVzdHMuCiAKLTIwMTAtMDUtMjcgMDY6NDkgIGJ2YXNzY2hlCisyMDEwLTA1LTI3IDExOjE5ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaDoKKworICAgQ0hBTkdFUzogY29ycmVjdGx5IGNhbGN1bGF0ZSBpZlhUYWJsZS5pZkhDSW5VY2FzdFBrdHMgb24gMzItYml0CisgICBMaW51eAorICAgCisgICBMaW51eCBkb2VzIG5vdCBwcm92aWRlIHN0YW5kYWxvbmUgY291bnRlciBmb3IgaW5jb21pbmcgdW5pY2FzdAorICAgcGFja2V0cyAoaXVjYXN0KQorICAgLSBpdCBwcm92aWRlcyBjb3VudGVyIG9mIGFsbCBwYWNrZXRzIChpYWxsKSArIHNlcGFyYXRlIGNvdW50ZXIKKyAgIGZvciB0aGUgbXVsdGljYXN0CisgICBvbmVzIChpbWNhc3QpLiBQcmV2aW91cyBpbXBsZW1lbnRhdGlvbiBvZiBpZlRhYmxlIHJlYWQgdGhlc2UKKyAgIGNvdW50ZXJzIGFuZAorICAgY2FsY3VsYXRlZCBpdWNhc3QgPSBpYWxsIC0gaW1jYXN0ICpiZWZvcmUqIHRoZXNlIHZhbHVlcyB3ZXJlCisgICBleHBhbmRlZCBpbnRvCisgICA2NGJpdHMuIFRoaXMgcHJvZHVjZWQgZXJyb3JzIG9uIDMyYml0IHN5c3RlbXMgd2hlbiBpYWxsCisgICBvdmVyZmxvd2VkIHRvIHplcm8gYW5kCisgICBpbWNhc3Qgd2FzIG5vemVybyAtPiBpdWNhc3QgZ290IG5lZ2F0aXZlIGFuZCAnYzY0IDMyIGJpdCBjaGVjaworICAgZmFpbGVkJyBlcnJvciBpbgorICAgc25tcGQgbG9nLiBOb3cgdGhlIGFnZW50IGV4cGFuZHMgdGhlc2UgdmFsdWVzIHRvIDY0Yml0cyBmaXJzdCBhbmQKKyAgICogICAgICp0aGVuKiBwZXJmb3JtcyAgICB0aGUgY2FsY3VsYXRpb24sIHVzaW5nIGEgbmV3IGZsYWcuIAorICAgICAgMjAxMC0wNS0yNCAxMDoxMCAganNhZnJhbmVrCisKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYzoKKworICAgVXNlIHByb3BlciBzdHJpbmcgc2l6ZXMgYW5kIG1ha2Ugc3VyZSBzdHJpbmdzIGFyZQorICAgemVyby10ZXJtaW5hdGVkLgorCisyMDEwLTA1LTIwIDA4OjQ4ICBidmFzc2NoZQorCisgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgU3dhcHBlZCBsaW5rIG9yZGVyIG9mIC1sbmV0c25tcGhlbHBlcnMgLWxuZXRzbm1wbWliczogbmV0c25tcG1pYnMKKyAgIGRlcGVuZHMgb24gbmV0c25tcGhlbHBlcnMgYW5kIG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KKworMjAxMC0wNS0xOSAxMjowNSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jOgorCisgICBGaXJzdC1kcmFmdCBzdXBwb3J0IGZvciBBSVggZmlsZXN5c3RlbSBIQUwgbW9kdWxlICh1bnRlc3RlZCkKKworMjAxMC0wNS0xOSAxMToyNSAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmM6CisKKyAgIFN1cHBvcnQgZm9yIFNvbGFyaXMtc3R5bGUgJ2dldG1udGVudCcgQVBJLgorCisyMDEwLTA1LTE5IDA5OjU3ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21udHR5cGVzLmg6CisKKyAgIFNpbXBsaWZ5IHRoZSBoYW5kbGluZyBvZiB1bmtub3duL3Vud2FudGVkIGZpbGUgc3lzdGVtcy4KKworMjAxMC0wNS0xOSAwOTozMCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oOgorCisgICBGaXggbWlzc2luZy9icm9rZW4gQVBJIGRlY2xhcmF0aW9ucy4KKworMjAxMC0wNS0xOCAyMzo0NyAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsICAgCisgICAgICBhZ2VudC9vYmplY3RfbW9uaXRvci5jOgorCisgICBmaXggc3ludGF4IGVycm9yczogI2Vsc2lmIC0+ICNlbGlmCisKKzIwMTAtMDUtMTggMTQ6NTYgIGR0czEyCisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKKworICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSDogMjAwMTY1NjogSGFuZGxlIG51bGwtdGVybWluYXRpb24gb2YKKyAgIHN0cmluZyB2YWx1ZXMgcHJvcGVybHkuCisgICBCYXNlZCBvbiB0aGUgcHJpbmNpcGxlcyBvZiB0aGUgcGF0Y2ggZnJvbSBUb21teSBCZWFkbGUuCisKKzIwMTAtMDUtMTggMTQ6MzggIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oLCBhZ2VudC9taWJncm91cC9ob3N0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9zdG9yYWdlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaDoKKworICAgV29ya2luZyg/KSBIQUwtYmFzZWQgdmVyc2lvbiBvZiBockZTVGFibGUuCisKKzIwMTAtMDUtMTcgMTU6MTggIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmg6CisKKyAgIFByb3ZpZGUgbWlzc2luZyBwdWJsaWMgaW50ZXJmYWNlIHRvIEhBTC1iYXNlZCBmaWxlc3RvcmUgbW9kdWxlLgorCisyMDEwLTA1LTE3IDA3OjQ2ICBqc2FmcmFuZWsKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYzoKKworICAgQ2hlY2sgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMgYmVmb3JlCisgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc18qIGFuZCBmaXggbG1fc2Vuc29ycyB2ZXJzaW9uIGRldGVjdGlvbgorCisyMDEwLTA1LTE3IDA2OjUzICBidmFzc2NoZQorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliOgorCisgICBDSEFOR0VTOiBDeWd3aW46IGRvIG5laXRoZXIgY29tcGlsZSBub3IgbGluayBpbmV0X250b3AuYyBhbmQKKyAgIGluZXRfcHRvbi5jLgorCisyMDEwLTA1LTE2IDEwOjA1ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IGRvbid0IHdhcm4gYWJvdXQgc2lnbmVkL3Vuc2lnbmVkCisgICBtaXNtYXRjaGVzIGluIGNvbXBhcmlzb25zLCBqdXN0IGxpa2UgZm9yIHRoZSBVbml4IGJ1aWxkcy4KKyAgIChCYWNrcG9ydGVkIHRoaXMgY2hhbmdlIGZyb20gdGhlIHRydW5rLikKKworMjAxMC0wNS0xNiAwOTo1OSAgYnZhc3NjaGUKIAogICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAotICAgQ0hBTkdFUzogd2luRXh0RExMOiBjb252ZXJ0IGFzc2VydCgpIHN0YXRlbWVudHMgaW50bwotICAgbmV0c25tcF9hc3NlcnQoKSBzdGF0ZW1lbnRzLgorICAgQ0hBTkdFUzogV2luMzI6IHdpbkV4dERMTDogZG9uJ3QgdHJpZ2dlciBhIG5ldHNubXBfYXNzZXJ0KCkgd2hlbgorICAgbm8gZXh0ZW5zaW9uIERMTHMgaGF2ZSBiZWVuIGxvYWRlZC4KIAotMjAxMC0wNS0yMyAyMTowNyAgZHRzMTIKKzIwMTAtMDUtMTQgMTE6MDQgIGJ2YXNzY2hlCiAKLSAgICogQ2hhbmdlTG9nOgorICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAotICAgdmVyc2lvbiB1cGRhdGUKKyAgIENoYW5nZWQgYXNzZXJ0KCkgaW50byBuZXRzbm1wX2Fzc2VydCgpIChiYWNrcG9ydGVkIHIxODM1MworICAgcGFydGlhbGx5KS4KIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQ2hhbmdlczogVjUuNC4yIC0+IFY1LjQuMworMjAxMC0wNS0xNCAxMTowMCAgYnZhc3NjaGUKIAotMjAxMC0wNS0yMyAyMDo0MiAgZHRzMTIKKyAgICogUkVBRE1FLndpbjMyOgogCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorICAgRG9jdW1lbnRhdGlvbjogdXBkYXRlZCBDeWd3aW4gYnVpbGQgaW5zdHJ1Y3Rpb25zLgogCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorMjAxMC0wNS0xNCAwODo1NCAgYnZhc3NjaGUKIAotMjAxMC0wNS0yMyAyMDozOSAgZHRzMTIKKyAgICogbmV0LXNubXAtY29uZmlnLmluOgogCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvcGFyc2UuYywgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKKyAgIFJldmVydGVkIG5ldC1zbm1wLWNvbmZpZy5pbiBjaGFuZ2VzIGZyb20gcjE4Njg4IGJlY2F1c2UgYWx0aG91Z2gKKyAgIHRoZXNlIGNoYW5nZXMgbWFkZSB0aGUgUGVybCBtb2R1bGVzIGJ1aWxkLCB0aGUgUGVybCBtb2R1bGUKKyAgIHJlZ3Jlc3Npb24gdGVzdHMgc3RpbGwgZmFpbGVkLgogCi0gICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKzIwMTAtMDUtMTMgMTQ6MzUgIGpzYWZyYW5lawogCi0yMDEwLTA1LTE0IDEyOjQ2ICBkdHMxMgorICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg6CiAKLSAgICogQ0hBTkdFUywgTkVXUzoKKyAgIGFkZCBORVRTTk1QX0xPR09OQ0UgbWFjcm8gZnJvbSB0cnVuawogCi0gICB2ZXJzaW9uIHVwZGF0ZQorMjAxMC0wNS0xMyAwOToxOCAgYnZhc3NjaGUKIAotMjAxMC0wNS0xNCAxMjo0MSAgZHRzMTIKKyAgICogY29uZmlndXJlLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCi0gICAqIENoYW5nZUxvZzoKKyAgIFJhbiBhdXRvcmVjb25mIC1pLgogCi0gICB2ZXJzaW9uIHVwZGF0ZQorMjAxMC0wNS0xMiAxNDoxNCAganNhZnJhbmVrCiAKLTIwMTAtMDUtMTQgMTI6MjggIGR0czEyCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmM6CiAKLSAgICogc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgYSBtZW1vcnkgbGVhayBpbiBUQ1AtTUlCLgogCi0gICBtYWtlIGRlcGVuZAorMjAxMC0wNS0xMiAxMzowMiAganNhZnJhbmVrCiAKLTIwMTAtMDUtMTQgMTI6MTkgIGR0czEyCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmM6CiAKLSAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsICAKLSAgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisgICBDSEFOR0VTOiBzbm1wZDogZml4ZWQgbWVtb3J5IGxlYWsgd2hlbiByZWFkaW5nIHNlbnNvcnMgZm9yCisgICBMTS1TRU5TT1JTLU1JQi4KIAotICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLQotMjAxMC0wNS0xNCAxMjoxMCAgZHRzMTIKLQotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsICAgCi0gICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotCi0gICBWZXJzaW9uIG51bWJlciB1cGRhdGUKLQotMjAxMC0wNS0xMSAxNzoyNiAgYnZhc3NjaGUKKzIwMTAtMDUtMTIgMTI6NTcgIGR0czEyCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKIAotICAgQnVpbGRzIGFnYWluIHdpdGggdGhlIE1pY3Jvc29mdCBWaXN1YWwgQyBjb21waWxlcnMsIHdoaWNoIGRvIG5vdAotICAgcmVjb2duaXplIHRoZSBDOTkgVUxMIHN1ZmZpeC4KKyAgIFJldmVydCByZXZpc2lvbiAxODY4OQorICAgTGF0ZXN0IFdpbjMyIGJ1aWxkcyBpbmNsdWRlIHN1cHBvcnQgZm9yIHN0cnRvdWxsLgorCisyMDEwLTA1LTEyIDEyOjA1ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IGFkZGVkIGRldGVjdGlvbiBvZiBsbV9zZW5zb3JzIHZlcnNpb24uCisgICBJIGFtIG5vdCBBdXRvY29uZiBndXJ1LCBzbyBJIGhvcGUgSSBnb3QgaXQgcmlnaHQuIFRoZSBnb2FsIGlzIHRvCisgICBkZWZpbmUgTkVUU05NUF9VU0VfU0VOU09SU19WMyAqYmVmb3JlKiBjb25maWdfbW9kdWxlc19hZ2VudAorICAgcHJvY2Vzc2VzIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMuaC4KIAogMjAxMC0wNS0xMSAxNTo0NiAgZHRzMTIKIAotICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW46CisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgogCiAgICBFbnN1cmUgJ25ldHNubXBfcmVhZF9tb2R1bGUnIGlzIGF2YWlsYWJsZSBmb3IgcGVybCBidWlsZC4KIApAQCAtMjMxMiwxMSArNzM3MSw0NyBAQAogCiAgICBGaXggcGVybCBidWlsZCB1bmRlciBXaW5kb3dzIChzdHJ0b3VsbCBub3QgYXZhaWxhYmxlKQogCisyMDEwLTA1LTExIDEwOjE0ICBidmFzc2NoZQorCisgICAqICBuZXQtc25tcC1jb25maWcuaW4sIHBlcmwvQVNOL01ha2VmaWxlLlBMLCBwZXJsL01ha2VmaWxlLlBMLCAgIAorICAgICAgcGVybC9NYWtlZmlsZS5zdWJzLnBsLCBwZXJsL09JRC9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCBwZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6CisKKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyB3aXRoIGVtYmVkZGVkIFBlcmwgc3VwcG9ydCBlbmFibGVkCisgICAoZW1iZWRkZWQgUGVybCByZWdyZXNzaW9uIHRlc3RzIGRvIG5vdCB5ZXQgcGFzcyBob3dldmVyKS4KKworMjAxMC0wNS0xMCAyMDozMSAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYjoKKworICAgQ0hBTkdFUzogQ3lnd2luOiByZW1vdmVkIHdpbnBpcGUuYyBmcm9tIHRoZSBsaXN0IG9mIHNvdXJjZSBmaWxlcy4KKyAgIENIQU5HRVM6IEN5Z3dpbjogZW5hYmxlZCBVbml4IHRyYW5zcG9ydC4KKworMjAxMC0wNS0wOSAxNjo0NiAgYnZhc3NjaGUKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMiwgY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyB3aXRoIE9wZW5TU0wgZW5hYmxlZC4KKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyB3aXRoIElQdjYgc3VwcG9ydCBlbmFibGVkLgorICAgQ0hBTkdFUzogTWluR1c6IGJ1aWxkcyBub3cgd2l0aCBJUHY2IHN1cHBvcnQgZW5hYmxlZC4KKyAgIENIQU5HRVM6IEN5Z3dpbjogYnVpbGRzIG5vdyBhbHNvIHdoZW4gdGhlIHNvdXJjZSBmaWxlcyBhcmUKKyAgIGxvY2F0ZWQgb24gYSBTYW1iYSBmaWxlc3lzdGVtIGluc3RlYWQgb2YgYSBsb2NhbCBmaWxlc3lzdGVtLgorICAgTm90ZTogYWxsIHRoZSBhYm92ZSBjaGFuZ2VzIGFyZSBiYWNrcG9ydHMgZnJvbSB0aGUgdHJ1bmsuCisKIDIwMTAtMDUtMDkgMTY6MzQgIGJ2YXNzY2hlCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vY3lnd2luLmg6CiAKLSAgIENIQU5HRVM6IEN5Z3dpbjogQlVHOiAyOTk3NDkyOiBieXRlIG9yZGVyIG9mIHVkcExvY2FsUG9ydCBpcyBub3cgY29ycmVjdAorICAgTkVXUzogQ3lnd2luOiBCVUc6IDI5OTc0OTI6IGJ5dGUgb3JkZXIgb2YgdWRwTG9jYWxQb3J0IGlzIG5vdworICAgY29ycmVjdC4KICAgIChCYWNrcG9ydGVkIHIxODA3NCBmcm9tIHRydW5rLikKIAogMjAxMC0wNS0wNiAxNDo0OSAgZHRzMTIKQEAgLTIzMjgsODcgKzc0MjMsNzMgQEAKIAogMjAxMC0wNS0wNiAxNDo0NCAgZHRzMTIKIAotICAgKiB3aW4zMi93aW4zMi5kc3csIHdpbjMyL3dpbjMyc2RrLmRzdzoKKyAgICogd2luMzIvd2luMzIuZHN3OgogCiAgICBBZGQgcHJvamVjdCBkZXBlbmRlbmNpZXMgZm9yIE1TVkMgYnVpbGRzLgogCisyMDEwLTA1LTA2IDE0OjQxICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2xvZy5jLCBzbm1wbGliL2NhbGxiYWNrLmM6CisKKyAgIENIQU5HRVM6IFdpbmRvd3M6IEZpeCBidWlsZCB1bmRlciBNaW5HVworICAgYmFjay9mb3J3YXJkIHBvcnQgb2YgcmV2aXNpb24gMTg2MzEKKworMjAxMC0wNS0wNiAwNzoyMSAgYnZhc3NjaGUKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAgIAorICAgICAgc25tcGxpYi9pbmV0X250b3AuYywgc25tcGxpYi9pbmV0X3B0b24uYywgICAKKyAgICAgIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOgorCisgICBDSEFOR0VTOiBDeWd3aW46IGJ1aWxkaW5nOiAtLWVuYWJsZS1pcHY2IGRvZXMgbm93IHdvcmsuCisgICAocG9ydGVkIHRoZSBwYXRjaGVzIHIxODA2MCBhbmQgcjE4NjE5IHRvIHRoZSBWNS41IGJyYW5jaCkuCisKIDIwMTAtMDUtMDYgMDY6MzMgIGJ2YXNzY2hlCiAKICAgICogIG5ldC1zbm1wLWNvbmZpZy5pbiwgdGVzdGluZy9URVNUQ09ORi5zaCwgICAKICAgICAgIHRlc3RpbmcvdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiwgICAKICAgICAgIHRlc3RpbmcvdGVzdHMvVDExNWFnZW50eHBlcmw6CiAKLSAgIENIQU5HRVM6IEN5Z3dpbjogRGV0ZWN0IGZyZWUgVURQIHBvcnRzIGNvcnJlY3RseSBmb3IgdXNlIGluIHRlc3QgaW5mcmFzdHJ1Y3R1cmUuCisgICBDSEFOR0VTOiBDeWd3aW46IGZpeGVkIGJ1ZyBpbiByZWdyZXNzaW9uIHRlc3QgaW5mcmFzdHJ1Y3R1cmUKKyAgIHdoaWNoIG1hZGUgZGV0ZWN0aW9uIG9mIGEgZnJlZSBVRFAgcG9ydCBmYWlsLgogICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE4MDczIGFuZCByMTgwODApLgogCi0yMDEwLTA0LTMwIDE5OjEwICBidmFzc2NoZQotCi0gICAqICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMsIGFwcHMvc25tcHRyYXBkLmMsICAgCi0gICAgICBhcHBzL3NubXB0cmFwZF9sb2cuYywgc25tcGxpYi9jYWxsYmFjay5jOgotCi0gICBDSEFOR0VTOiBXaW5kb3dzOiBGaXggYnVpbGQgdW5kZXIgTWluR1cKLQotMjAxMC0wNC0zMCAxODo0NCAgYnZhc3NjaGUKLQotICAgKiBjb25maWd1cmU6Ci0KLSAgIFNob3VsZCBoYXZlIGJlZW4gaW5jbHVkZWQgaW4gcjE4NjI3LgotCi0yMDEwLTA0LTMwIDE4OjI3ICBidmFzc2NoZQotCi0gICAqIGNvbmZpZ3VyZS5pbjoKLQotICAgbWFkZSBzdXJlIHRoYXQgY3Jvc3MtY29tcGlsaW5nIHdpdGhvdXQgc3BlY2lmeWluZyB0aGUgZW5kaWFubmVzcwotICAgZG9lcyBub3QgdHJpZ2dlciBhIHN5bnRheCBlcnJvciBpbiB0aGUgY29uZmlndXJlIHNjcmlwdC4KLQotMjAxMC0wNC0yOCAxMDo0OCAgYnZhc3NjaGUKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQotICAgbGVmdCBvdXQgaW5ldF9udG9wKCkgYW5kIGluZXRfcHRvbigpIGZyb20gbGlibmV0c25tcCBzaW5jZSB0aGVzZQotICAgZnVuY3Rpb25zIGFyZSBhbHJlYWR5IHByZXNlbnQgaW4gQ3lnd2lucyBDIGxpYnJhcnkuCi0KLTIwMTAtMDQtMjggMTA6MjYgIGJ2YXNzY2hlCi0KLSAgICogUkVBRE1FLndpbjMyOgotCi0gICBGaXhlZCBhIGRvY3VtZW50YXRpb24gYnVnIHdpdGggcmVnYXJkIHRvIHRoZSBDeWd3aW4gYnVpbGQ6Ci0gICBsaW5raW5nIHdpdGggd3MyXzMyIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciByZWFsbHkgYW5jaWVudCBDeWd3aW4gdmVyc2lvbnMuCi0KLTIwMTAtMDQtMjggMDc6MjkgIGJ2YXNzY2hlCi0KLSAgICogIHNubXBsaWIvaW5ldF9udG9wLmMsIHNubXBsaWIvaW5ldF9wdG9uLmMsICAgCi0gICAgICBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKLQotICAgQ0hBTkdFUzogQ3lnd2luOiBidWlsZHMgbm93IHdpdGggSVB2NiBzdXBwb3J0IGVuYWJsZWQuCi0KLTIwMTAtMDQtMjcgMTY6NTUgIGJ2YXNzY2hlCi0KLSAgICogIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAotICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0KLSAgIENIQU5HRVM6IFdpbjMyOiBidWlsZHMgYWdhaW4gd2l0aCBJUHY2IHN1cHBvcnQgZW5hYmxlZC4KLQotMjAxMC0wNC0yNyAxNTo0MiAgZHRzMTIKLQotICAgKiAgd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCwgICAKLSAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL01ha2VmaWxlLmluOgotCi0gICBSZS1pbnN0YXRlIE5vdGlmaWNhdGlvbi1Mb2cgTUlCIHN1cHBvcnQgd2hlbiBidWlsZGluZyB3aXRoCi0gICBXaW5kb3dzIFBsYXRmb3JtIFNESy4KLQogMjAxMC0wNC0yNSAxNzozNyAgYnZhc3NjaGUKIAogICAgKiBSRUFETUUud2luMzI6CiAKICAgIERvY3VtZW50YXRpb24gdXBkYXRlLgogCi0yMDEwLTA0LTIxIDExOjA1ICBidmFzc2NoZQorMjAxMC0wNC0yNSAxNzowMSAgYnZhc3NjaGUKIAotICAgKiBzbm1wbGliL3N0cnRvdWxsLmM6CisgICAqICBzbm1wbGliL3dpbnNlcnZpY2UuYywgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgQ29waWVkIHRoZSBzb3VyY2UgZmlsZSBzbm1wbGliL3N0cnRvdWxsLmMgZnJvbSB0aGUgdHJ1bmsgdG8gdGhlCi0gICBWNS40IGJyYW5jaC4KKyAgIFdpbjMyOiBidWlsZHMgYWdhaW4gd2l0aCBNU1ZDIDYgd2l0aG91dCBQU0RLLgorCisyMDEwLTA0LTI1IDE1OjA2ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluOgorCisgICBXaW4zMjogYnVpbGRzIGFnYWluIHdpdGggSEFWRV9XSU4zMl9QTEFURk9STV9TREsgZGlzYWJsZWQuCisKKzIwMTAtMDQtMjUgMTI6MDUgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIE1hZGUgaXQgYWdhaW4gcG9zc2libGUgdG8gZGlzYWJsZSBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyB3aGVuCisgICBidWlsZGluZyB2aWEgd2luMzIvYnVpbGQuYmF0LgorCisyMDEwLTA0LTIwIDEyOjQ0ICBqc2FmcmFuZWsKKworICAgKiBzbm1wbGliL2FzbjEuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDI5NzEyNzA6IHJlZnVzZSB0byBwYXJzZSBBU04uMSB0b2tlbnMKKyAgIHdpdGggd3JvbmcgdHlwZSBmaWVsZC4KKyAgIFRoaXMgbWF5IHlpZWxkIHRvIHByb2JsZW1zIHdpdGggdGhpcmQtcGFydHkgYXBwbGljYXRpb25zIHdoaWNoCisgICBtYXkgZGVwZW5kIG9uIHBhcnNpbmcgdWdseSBBU04uMSBkYXRhIC0gd2UnbGwgc2VlLi4uCiAKIDIwMTAtMDQtMTggMTM6NDAgIGJ2YXNzY2hlCiAKQEAgLTI0MjAsMTcgKzc1MDEsOSBAQAogICAgaW5jbHVkaW5nIGJvdGgKICAgIDxzdGRhcmdzLmg+IGFuZCA8dmFyYXJncy5oPiBpbiB0aGUgc2FtZSBzb3VyY2UgZmlsZS4KIAotMjAxMC0wNC0xOCAxMzoyNCAgYnZhc3NjaGUKLQotICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCi0gICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLQotICAgUmV2ZXJ0ZWQgYW5vdGhlciBjaGFuZ2UgdGhhdCB3YXMgaW50cm9kdWNlZCBpbiByMTg0OTUgYW5kIHRoYXQncwotICAgb2J2aW91c2x5IGJyb2tlbi4KLQogMjAxMC0wNC0xNSAxNjo1NSAgYnZhc3NjaGUKIAotICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDoKKyAgICogd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaDoKIAogICAgUGFydGlhbGx5IHJldmVydGVkIHIxODQ5NjoKICAgIC0gQ29tbWVudGVkIG91dCAjZGVmaW5lIE5FVFNOTVBfVVNFX0RMTCBhZ2FpbiBpbiBmaWxlCkBAIC0yNDQ0LDYgKzc1MTcsMjAgQEAKICAgIG9yIFY1LjUgYnJhbmNoZXMgYW5kIGhlbmNlIHRoZXJlIHdhcyBubyByZWFzb24gdG8gZGlzYWJsZSB0aGlzCiAgICBwcmVwcm9jZXNzb3Igc3ltYm9sLgogCisyMDEwLTA0LTE1IDEwOjUyICBqc2FmcmFuZWsKKworICAgKiB0ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldCwgdGVzdGluZy90ZXN0cy9UMTIxcHJveHlzZXQ6CisKKyAgIFRlc3RzIG5vdCB3b3JraW5nIGZvciBUQ1Agc2hvdWxkIGJlIHNraXBwZWQgYWxzbyBmb3IgVENQNi4KKworMjAxMC0wNC0xNCAxMzoxMiAganNhZnJhbmVrCisKKyAgICogIHRlc3RpbmcvdGVzdHMvU3ZhY21jb25maWcsIHRlc3RpbmcvdGVzdHMvVDEyMHByb3h5Z2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIxcHJveHlzZXQsIHRlc3RpbmcvdGVzdHMvVDEyMnByb3h5c2V0ZmFpbDoKKworICAgRml4ZWQgdGVzdHMgJ1Byb3h5IEdFVC9TRVQgc3VwcG9ydCcgYW5kICdTTk1QdjIgdmFjbSBkZW5pYWwKKyAgIHN1cHBvcnQnIHdpdGggdWRwNiB0cmFuc3BvcnQuCisKIDIwMTAtMDQtMTQgMDk6NDcgIGR0czEyCiAKICAgICogIHdpbjMyLCB3aW4zMi9iaW4sIHdpbjMyL2Rpc3QsIHdpbjMyL2Rpc3QvaHRtbGhlbHAsICAgCkBAIC0yNDUyLDEwMiArNzUzOSwzMSBAQAogICAgICAgd2luMzIvbGlibmV0c25tcHRyYXBkLCB3aW4zMi9saWJzbm1wLCB3aW4zMi9saWJzbm1wX2RsbCwgICAKICAgICAgIHdpbjMyL2xpYnVjZG1pYnMsIHdpbjMyL2xvY2FsLCB3aW4zMi9uZXQtc25tcCwgICAKICAgICAgIHdpbjMyL25ldC1zbm1wL2FnZW50LCB3aW4zMi9uZXQtc25tcC9saWJyYXJ5LCB3aW4zMi9uZXRzbm1wbWlicywgIAotICAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrLCB3aW4zMi9zbm1wYnVsa2dldCwgd2luMzIvc25tcGJ1bGt3YWxrLCAgIAotICAgICAgd2luMzIvc25tcGQsIHdpbjMyL3NubXBkZWx0YSwgd2luMzIvc25tcGRmLCB3aW4zMi9zbm1wZHNkaywgICAKLSAgICAgIHdpbjMyL3NubXBnZXQsIHdpbjMyL3NubXBnZXRuZXh0LCB3aW4zMi9zbm1wbmV0c3RhdCwgICAKLSAgICAgIHdpbjMyL3NubXBzZXQsIHdpbjMyL3NubXBzdGF0dXMsIHdpbjMyL3NubXB0YWJsZSwgd2luMzIvc25tcHRlc3QsIAotICAgICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlLCB3aW4zMi9zbm1wdHJhcCwgd2luMzIvc25tcHRyYXBkLCAgIAotICAgICAgd2luMzIvc25tcHVzbSwgd2luMzIvc25tcHZhY20sIHdpbjMyL3NubXB3YWxrOgorICAgICAgIHdpbjMyL3NubXBidWxrZ2V0LCB3aW4zMi9zbm1wYnVsa3dhbGssIHdpbjMyL3NubXBkLCAgIAorICAgICAgd2luMzIvc25tcGRlbHRhLCB3aW4zMi9zbm1wZGYsIHdpbjMyL3NubXBnZXQsIHdpbjMyL3NubXBnZXRuZXh0LCAgCisgICAgICAgd2luMzIvc25tcG5ldHN0YXQsIHdpbjMyL3NubXBzZXQsIHdpbjMyL3NubXBzdGF0dXMsICAgCisgICAgICB3aW4zMi9zbm1wdGFibGUsIHdpbjMyL3NubXB0ZXN0LCB3aW4zMi9zbm1wdHJhbnNsYXRlLCAgIAorICAgICAgd2luMzIvc25tcHRyYXAsIHdpbjMyL3NubXB0cmFwZCwgd2luMzIvc25tcHVzbSwgd2luMzIvc25tcHZhY20sICAgCisgICAgICB3aW4zMi9zbm1wd2FsazoKIAogICAgRG9uJ3QgdHJ5IHRvIFNWTi1tYW5hZ2UgdGhlIFdpbmRvd3MgYmF0Y2ggYnVpbGQgaW5mcmFzdHJ1Y3R1cmUKICAgIChhZGQgcmVsZWFzZSwgZGVidWcsIE1ha2VmaWxlIHRvIHRoZSBwcmV2aW91cyBpZ25vcmUgbGlzdCkKIAogMjAxMC0wNC0xNCAwODoxNiAgZHRzMTIKIAotICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW46CisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmOgogCiAgICBGaXggV2luZG93cyBiYXRjaCBidWlsZCB1c2luZyBWaXN1YWwgU3R1ZGlvIHdpdGggZHluYW1pYyBsaW5raW5nLgogICAgVW5yZWZlcmVuY2VkIHN5bWJvbCBpbnRyb2R1Y2VkIGJ5IFNWTiByZXZpc2lvbiAxODM5MwogCi0yMDEwLTA0LTE0IDA4OjExICBkdHMxMgotCi0gICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmg6Ci0KLSAgIEZpeCBXaW5kb3dzIGJhdGNoIGJ1aWxkIHVzaW5nIFZpc3VhbCBTdHVkaW8gMjAwOCB3aXRoIFBsYXRmb3JtCi0gICBTREsgZW5hYmxlZC4KLQogMjAxMC0wNC0xNCAwODowOCAgZHRzMTIKIAotICAgKiAgd2luMzIvYnVpbGQucGwsIHdpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgsICAgCi0gICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKLSAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorICAgKiB3aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oOgogCi0gICBDSEFOR0VTOiBXaW4zMjogRml4IGJhdGNoIGJ1aWxkIHVzaW5nIHJlY2VudCB2ZXJzaW9ucyBvZiBWaXN1YWwgU3R1ZGlvLgorICAgQ0hBTkdFUzogV2luMzI6IEZpeCBiYXRjaCBidWlsZCB1c2luZyByZWNlbnQgdmVyc2lvbnMgb2YgVmlzdWFsCisgICBTdHVkaW8uCiAgICBQYXJ0aWFsIGJhY2sgcG9ydCBvZiBTVk4gcmV2aXNpb25zIDE3NTczIGFuZCAxNzY5Ni4KIAotMjAxMC0wNC0wNyAxNDozNyAgZHRzMTIKLQotICAgKiBDSEFOR0VTLCBORVdTOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDEwLTA0LTA3IDE0OjIyICBkdHMxMgotCi0gICAqIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOgotCi0gICBtYWtlIGRlcGVuZAotCi0yMDEwLTA0LTA3IDE0OjEyICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDEwLTA0LTA3IDE0OjA4ICBkdHMxMgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCiAyMDEwLTA0LTA3IDE0OjA1ICBkdHMxMgogCiAgICAqIGxvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZjoKQEAgLTI1NjAsMTIgKzc1NzYsMjYgQEAKIAogICAgUHl0aG9uIGlzIGFwcGFyZW50bHkgY2xpZW50LXNpZGUgb25seS4KIAotMjAxMC0wNC0wNiAwODo1NiAgZHRzMTIKKzIwMTAtMDQtMDYgMTA6MDYgIGR0czEyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jLCBtaWJzL1VDRC1TTk1QLU1JQi50eHQ6CisgICAqIGFnZW50L3NubXBkLmM6CiAKLSAgIE5FV1M6IHNubXBkOiBMYXRjaCBsYXJnZS1kaXNrIHN0YXRpc3RpY3MgYXQgMlRiIChyYXRoZXIgdGhhbgotICAgd3JhcHBpbmcuCisgICBTZXQgc3VwcGxlbWVudGFyeSBncm91cHMgYmVmb3JlIGNoYW5naW5nIFVJRAorICAgKHdoaWNoIHByb2JhYmx5IGludm9sdmVzIGdpdmluZyB1cCBwcml2aWxlZ2VzKQorCisyMDEwLTA0LTA2IDA4OjU3ICBkdHMxMgorCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgRG9jdW1lbnQgbGFyZ2UtZGlzayBzdGF0aXN0aWNzIGFzIGxhdGNoaW5nIGF0IDJUYiAocmF0aGVyIHRoYW4KKyAgIHdyYXBwaW5nKS4KKworMjAxMC0wMy0yOSAxNzoxNyAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9nczoKKworICAgUmVtb3ZlZCAtV2lubGluZSBhbmQgLVduby1jaGFyLXN1YnNjcmlwdHMgKGJhY2twb3J0ZWQgcjE4Mjg2IGZyb20KKyAgIHRoZSB0cnVuaykuCiAKIDIwMTAtMDMtMjkgMTU6MjYgIGR0czEyCiAKQEAgLTI1ODYsNiArNzYxNiwxOSBAQAogICAgTm90ZSB0aGF0IHRoaXMgY291bGQgcG90ZW50aWFsbHkgYWZmZWN0IHRoZSBiZWhhdmlvdXIgb2YKICAgIGV4aXN0aW5nIGFjY2VzcyBjb250cm9sIGNvbmZpZ3VyYXRpb25zLgogCisyMDEwLTAzLTI5IDE1OjE2ICBidmFzc2NoZQorCisgICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IHBlcmw6CisgICBOZXRTTk1QOjphZ2VudDo6bmV0c25tcF9yZXF1ZXN0X2luZm9QdHI6OmdldFZhbHVlKCk6IGRvbid0IHJldHVybgorICAgYSBwb2ludGVyIHRvIGEgYnVmZmVyIG9uIHRoZSBzdGFjay4gSG93IGNhbiB0aGlzIGhhdmUgd29ya2VkCisgICByZWxpYWJseSA/PworICAgQ0hBTkdFUzogcGVybDoKKyAgIE5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX3JlcXVlc3RfaW5mb1B0cjo6c2V0VmFsdWUoKSwKKyAgIEFTTl9DT1VOVEVSNjQ6IGZpeGVkIGJ1ZyB0aGF0IGNvdWxkIGNhdXNlIHRoaXMgbWV0aG9kIHRvIGZhaWwKKyAgIGV2ZW4gd2hlbiBhIHZhbGlkIG51bWJlciB3YXMgcHJvdmlkZWQuCisKIDIwMTAtMDMtMjkgMTU6MTUgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wdXNtLmM6CkBAIC0yNTk0LDYgKzc2MzcsMTUyIEBACiAgICB0cmFwcy4KICAgIFJlcG9ydGVkIGJ5IFNyaWthcGlsYW4gR2FuZGhpCiAKKzIwMTAtMDMtMjkgMTI6NDYgIGJ2YXNzY2hlCisKKyAgICogcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbDoKKworICAgQ2F0Y2ggc3RkZXJyIG9uIFdpbmRvd3MgdG9vLgorCisyMDEwLTAzLTI5IDExOjQ4ICBidmFzc2NoZQorCisgICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIEJ1aWxkcyBhZ2FpbiB3aXRoIHByZS1DOTAgY29tcGlsZXJzLgorCisyMDEwLTAzLTI5IDExOjE5ICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgcGVybC9PSUQvT0lELnhzLCAgIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIGEgbWVtb3J5IGxlYWsgdHJpZ2dlcmVkIGJ5IGRlc3Ryb3lpbmcgYQorICAgTmV0U05NUDo6YWdlbnQ6Om5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gb2JqZWN0LgorICAgQ0hBTkdFUzogcGVybDogZml4ZWQgYSBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkgZmFpbHVyZSBvZgorICAgY3JlYXRpbmcgYSBOZXRTTk1QOjpPSUQgb2JqZWN0LgorICAgQ0hBTkdFUzogcGVybDogZml4ZWQgYSBtZW1vcnkgbGVhayB0cmlnZ2VyZWQgYnkgdGhlCisgICBOZXRTTk1QOjpPSUQ6OmdldHRhYmxlKCkgc3Vicm91dGluZS4KKyAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIGFuIG91dC1vZi1ib3VuZHMgYXJyYXkgYWNjZXNzIHRyaWdnZXJlZCBieQorICAgdGhlIGltcGxlbWVudGF0aW9uIG9mIE5ldFNOTVA6OlNOTVAuCisgICBDSEFOR0VTOiBwZXJsOiBmaXhlZCBhIG1lbW9yeSBsZWFrIHRyaWdnZXJlZCBieSBhIFBEVSBwcm9jZXNzaW5nCisgICBlcnJvciBpbiBOZXRTTk1QOjpTTk1QLgorICAgQ0hBTkdFUzogcGVybDogZml4ZWQgbWVtb3J5IGxlYWtzIHRyaWdnZXJlZCBieSBjcmVhdGluZyBhbiBTTk1QdjMKKyAgIHNlc3Npb24gdmlhIE5ldFNOTVA6OlNOTVAuCisgICAKKyAgIEFsc28gZml4ZWQgdGhlIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgYWNjZXNzZXMgdHJpZ2dlcmVkIGJ5CisgICBhZGRpbmcgYSB2YXJiaW5kIHRvIGEgUERVIHZpYSBOZXRTTk1QOjpTTk1QIGludHJvZHVjZWQgYSBmZXcgZGF5cworICAgYWdvLgorICAgCisgICBUaGUgYnVncyBtZW50aW9uZWQgYWJvdmUgaGF2ZSBiZWVuIGZvdW5kIGJ5IGluc3BlY3RpbmcgdGhlIG91dHB1dAorICAgb2YgdGhlIGZvbGxvd2luZyBzaGVsbCBjb21tYW5kOgorICAgY2QgcGVybCAmJiB2YWxncmluZCAtLXRyYWNlLWNoaWxkcmVuPXllcyAtLWxlYWstY2hlY2s9ZnVsbCBtYWtlCisgICB0ZXN0CisKKzIwMTAtMDMtMjkgMTA6NTkgIGJ2YXNzY2hlCisKKyAgICogcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbDoKKworICAgU3dpdGNoZWQgYmFjayB0byB0aGUgcHJldmlvdXMgd2F5IG9mIHN0YXJ0aW5nIHByb2Nlc3NlcworICAgYXN5bmNocm9ub3VzbHkgYmVjYXVzZSBpdCBpcyBtb3JlIHJlbGlhYmxlLgorCisyMDEwLTAzLTI5IDA5OjI3ICBidmFzc2NoZQorCisgICAqIHBlcmwvU05NUC90L3N0YXJ0YWdlbnQucGw6CisKKyAgIERvIG5vdCBvbmx5IHNhdmUgc25tcGQgLyBzbm1wdHJhcGQgbG9ncyBidXQgYWxzbyB0aGUgc3Rkb3V0IC8KKyAgIHN0ZGVyciBvdXRwdXQgZ2VuZXJhdGVkIGJ5IHRoZXNlIHByb2Nlc3Nlcy4KKworMjAxMC0wMy0yOCAxODowMCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUGFydGlhbGx5IHJldmVydGVkIHIxODM4MiBvbiB0aGUgNS41IGJyYW5jaCBpbiBvcmRlciB0byBwcmVzZXJ2ZQorICAgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBhbHJlYWR5IHJlbGVhc2VkIFdpbmRvd3MtaGVhZGVycy4KKworMjAxMC0wMy0yOCAxNjowOSAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsOgorCisgICBDaGFuZ2VzIGluIHBlcmwvU05NUC90L3N0YXJ0YWdlbnQucGw6CisgICAtIEFkZGVkIGNvbW1hbmQtbGluZSBvcHRpb24gLWQgZm9yIHNubXBkIGFuZCBzbm1wdHJhcGQuCisgICAtIHNubXBkIGFuZCBzbm1wdHJhcGQgb3V0cHV0IGlzIG5vdyBzYXZlZCB0byBhIGxvZyBmaWxlIChvbmUgcGVyCisgICB0ZXN0KS4KKyAgIC0gUmV3cm90ZSBQZXJsIGNvZGUgZm9yIHN0YXJ0aW5nIHRoZSBzbm1wZC9zbm1wdHJhcGQgcHJvY2Vzc2VzCisgICBzdWNoIHRoYXQgdGhlIHNhbWUgY29kZSB3b3JrcyBvbiBVbml4IGFuZCBvbiBXaW5kb3dzLgorCisyMDEwLTAzLTI4IDEzOjM3ICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi90b29scy5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogc25tcGxpYjogYWRkZWQgdGhlIGZ1bmN0aW9ucyBuZXRzbm1wX21hbGxvYygpLAorICAgbmV0c25tcF9jYWxsb2MoKSwgbmV0c25tcF9yZWFsbG9jKCksIG5ldHNubXBfc3RyZHVwKCkgYW5kCisgICBuZXRzbm1wX2ZyZWUoKS4KKyAgIENIQU5HRVM6IFdpbjMyOiBzbm1wbGliOiByZW1vdmVkIHRoZSB0cm91Ymxlc29tZSAjZGVmaW5lIG1hbGxvYworICAgbmV0c25tcF9tYWxsb2MgZXRjLiBUaGlzIG1lYW5zIHRoYXQgd2hlbiBjYWxsaW5nIGZ1bmN0aW9ucyBmcm9tCisgICB0aGUgTmV0LVNOTVAgRExMIGZyb20gQyBvciBDKysgY29kZSB0aGF0IGlzIGJlaW5nIGxpbmtlZCBhZ2FpbnN0CisgICBhbm90aGVyIHZlcnNpb24gb2YgdGhlIE1TVkMgcnVudGltZSBETEwgdGhhbiB0aGUgTmV0LVNOTVAgRExMLAorICAgYW5kIHdoZW4gYWxsb2NhdGluZyBtZW1vcnkgdGhhdCB3aWxsIGJlIGZyZWVkIGJ5IHRoZSBOZXQtU05NUAorICAgRExMLCB5b3Ugd2lsbCBlaXRoZXIgaGF2ZSB0byBjYWxsIHRoZSBOZXQtU05NUCBtZW1vcnkgYWxsb2NhdGlvbgorICAgZnVuY3Rpb25zIGV4cGxpY2l0bHkgb3IgcmVkZWZpbmUgbWFsbG9jKCkgZXRjLiB5b3Vyc2VsZi4KKworMjAxMC0wMy0yOCAxMjo0NiAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgRml4ZWQgYSByZWNlbnRseSByZWludHJvZHVjZWQgY29tcGlsZXIgd2FybmluZy4KKworMjAxMC0wMy0yOCAxMjowNCAgYnZhc3NjaGUKKworICAgKiBwZXJsL2RlZmF1bHRfc3RvcmUvdGVzdC5wbDoKKworICAgQmFja3BvcnRlZCByMTgyODcgZnJvbSB0aGUgdHJ1bmsuCisKKzIwMTAtMDMtMjcgMTk6MTkgIGJ2YXNzY2hlCisKKyAgICogcGVybC9PSUQvT0lELnhzLCBwZXJsL1NOTVAvU05NUC54czoKKworICAgQnVpbGRzIGFnYWluLgorCisyMDEwLTAzLTI3IDE4OjU3ICBidmFzc2NoZQorCisgICAqICBwZXJsL0FTTi9BU04ueHMsIHBlcmwvT0lEL09JRC54cywgcGVybC9TTk1QL1NOTVAueHMsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvVHJhcFJlY2VpdmVyL3BwcG9ydC5oLCAgIAorICAgICAgcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgQmFja3BvcnRlZCByMTgyODIsIHIxODI4MyBhbmQgcjE4MzEyIGZyb20gdHJ1bmssIHdoaWNoIGZpeCBtb3N0CisgICBjb21waWxlciB3YXJuaW5ncyB0cmlnZ2VyZWQgYnkgY29tcGlsYXRpb24gb2YgdGhlIFhTVUJzLgorCisyMDEwLTAzLTI3IDE4OjUyICBidmFzc2NoZQorCisgICAqICBwZXJsL0FTTi9BU04ueHMsIHBlcmwvQVNOL01ha2VmaWxlLlBMLCBwZXJsL09JRC9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvT0lEL09JRC54cywgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvYWdlbnQvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvYWdlbnQueHMsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS54cywgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnhzOgorCisgICBCYWNrcG9ydGVkIHIxODI0OCwgd2hpY2ggbWFrZXMgY29tcGlsYXRpb24gb2YgdGhlIFBlcmwgWFNVQnMgbW9yZQorICAgc2lsZW50LgorCisyMDEwLTAzLTI2IDE5OjE2ICBidmFzc2NoZQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgcGVybC9PSUQvT0lELnhzLCAgIAorICAgICAgcGVybC9TTk1QL1NOTVAueHMsIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54czoKKworICAgRm9sbG93LXVwIGZvciByMTgzNjggYW5kIHIxODM2OTogbWFkZSBzdXJlIHRoYXQgdGhlIE5ldC1TTk1QIFBlcmwKKyAgIGV4dGVuc2lvbnMgY29tcGlsZSB3aXRob3V0IHRyaWdnZXJpbmcgcHJlcHJvY2Vzc29yIHdhcm5pbmdzIGFib3V0CisgICByZWRlZmluaW5nIG1hbGxvYyBldGMuIG5vciB0cmlnZ2VyICJGcmVlIHRvIHdyb25nIHBvb2wiIGVycm9ycyBvbgorICAgV2luZG93cy4KKworMjAxMC0wMy0yNiAxMjowNCAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3N0cnRvdWxsLmM6CisKKyAgIFJlbW92ZWQgYSBzdXBlcmZsdW91cyAjaW5jbHVkZSBkaXJlY3RpdmUuCisKIDIwMTAtMDMtMjUgMjA6MDcgIGJ2YXNzY2hlCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYzoKQEAgLTI2MDQsNiArNzc5Myw1MyBAQAogICAgY29ubmVjdCB0byBhbiBBZ2VudFggbWFzdGVyIGFnZW50IHJ1bm5pbmcgb24gdGhlIHNhbWUgc3lzdGVtCiAgICB3aXRob3V0IGhhdmluZyB0byBzZXQgdGhlIHZhcmlhYmxlIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLRVQuCiAKKzIwMTAtMDMtMjUgMTY6MTEgIGJ2YXNzY2hlCisKKyAgICogIHBlcmwvT0lEL09JRC54cywgcGVybC9TTk1QL1NOTVAueHMsICAgCisgICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBwZXJsOiBmaXhlZCBzZXZlcmFsICJGcmVlIHRvIHdyb25nIHBvb2wiIGVycm9ycy4KKyAgIE5vdGU6IHNpbmNlIGNhbGxvYygpIGlzIG5vdCByZWRlZmluZWQgaW4gPENPUkUvWFNVQi5oPiB1c2luZworICAgY2FsbG9jKCkgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBsZWFkcyB0byAiRnJlZSB0byB3cm9uZyBwb29sIgorICAgZXJyb3JzLCBhdCBsZWFzdCBvbiBXaW5kb3dzLgorCisyMDEwLTAzLTI1IDE2OjA0ICBidmFzc2NoZQorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IG1hZGUgYnVpbGRpbmcgbW9yZSBzaWxlbnQgYnkgbm90CisgICByZWRlZmluaW5nIG1hbGxvYygpIG9yIGZyZWUoKSBkdXJpbmcgY29tcGlsYXRpb24gb2YgUGVybAorICAgZXh0ZW5zaW9ucyAocmVzdWx0ZWQgaW4gd2FybmluZ3MgYWJvdXQgbWFsbG9jKCkgLyBmcmVlKCkKKyAgIHJlZGVmaW5pdGlvbiBpbiB0aGUgUGVybCBoZWFkZXIgQ09SRS9YU1VCLmgpLgorCisyMDEwLTAzLTI1IDE1OjA2ICBidmFzc2NoZQorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBwZXJsL1NOTVAvU05NUC54cywgICAKKyAgICAgIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIENIQU5HRVM6IEJVRzogMjk2OTg3MjogbWFkZSBzdXJlIHRoYXQgU09DS19TVEFSVFVQIGlzIGludm9rZWQKKyAgIGJlZm9yZSBpbml0X2FnZW50KCkgb24gV2luZG93cy4KKworMjAxMC0wMy0yNSAxMzozMCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IHNpbXBsaWZpZWQgdGhlIGJ1aWxkIHByb2Nlc3MgYnkKKyAgIHJlbW92aW5nIHRoZSBmaWxlIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluLiBXaGljaCBJUHY2CisgICBmdW5jdGlvbnMgYXJlIGV4cG9ydGVkIGZyb20gbmV0c25tcC5kbGwgaXMgbm93IGRldGVybWluZWQgYnkKKyAgIHdoaWNoIG9mIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBETEwgaGF2ZSBiZWVuIGRlY2xhcmVkIGFzCisgICBORVRTTk1QX0lNUE9SVC4KKworMjAxMC0wMy0yNSAxMzoyNyAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaDoKKworICAgV2luZG93cyBETEwgYnVpbGQgZml4LgorCiAyMDEwLTAzLTIyIDE2OjEwICBkdHMxMgogCiAgICAqIG1pYnMvTkVULVNOTVAtUEFTUy1NSUIudHh0OgpAQCAtMjYxOCw2ICs3ODU0LDE1IEBACiAgICBGb2xsb3ctdXAgZm9yIHIxODM0OTogYWRkZWQgbWlzc2luZyBjb21tYSBzdWNoIHRoYXQgaXQgaXMgYWdhaW4KICAgIHBvc3NpYmxlIHRvIGNvbXBpbGUgVUNELURJU0tJTy1NSUIuCiAKKzIwMTAtMDMtMjIgMTM6NTkgIGR0czEyCisKKyAgICogIG1hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMywgbWFuL3NubXBfY2xvc2UuMywgbWFuL3NubXBfZXJyb3IuMywgICAKKyAgICAgIG1hbi9zbm1wX2ZyZWVfcGR1LjMsIG1hbi9zbm1wX29wZW4uMywgbWFuL3NubXBfcGVycm9yLjMsICAgCisgICAgICBtYW4vc25tcF9yZWFkLjMsIG1hbi9zbm1wX3NlbGVjdF9pbmZvLjMsIG1hbi9zbm1wX3NlbmQuMywgICAKKyAgICAgIG1hbi9zbm1wX3Nlc3NfcGVycm9yLjMsIG1hbi9zbm1wX3RpbWVvdXQuMzoKKworICAgQ0hBTkdFUzogbWFuOiBCVUc6IDI5NzI4NjA6IFVwZGF0ZSBicm9rZW4gcmVmZXJlbmNlcworCiAyMDEwLTAzLTIyIDEzOjQ5ICBkdHMxMgogCiAgICAqICBtaWJzL1VDRC1ESVNLSU8tTUlCLnR4dCwgbWlicy9VQ0QtRExNT0QtTUlCLnR4dCwgICAKQEAgLTI2NDEsNiArNzg4NiwyOSBAQAogCiAgICBGaXhlZCB0aGUgY29tcGlsZXIgd2FybmluZ3MgcmVwb3J0ZWQgYnkgZ2NjIChNaW5HVykuCiAKKzIwMTAtMDMtMjAgMDk6MTQgIGJ2YXNzY2hlCisKKyAgICogYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmM6CisKKyAgIFJlZmFjdG9yaW5nOiBtb3ZlZCBkdXBsaWNhdGVkIGNvZGUgaW50byBhIG5ldyBmdW5jdGlvbi4KKworMjAxMC0wMy0xOSAxMzoxMiAgYnZhc3NjaGUKKworICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogbWFkZSB0aGUgZXJyb3IgbWVzc2FnZSB0aGF0IGlzIGxvZ2dlZCB3aGVuCisgICBkdXBsaWNhdGUgcmVnaXN0cmF0aW9uIGlzIGF0dGVtcHRlZCBtb3JlIGRldGFpbGVkLgorICAgCisgICBBbiBleGFtcGxlOgorICAgKGJlZm9yZSkKKyAgIGR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKG1pYklJL3NubXAsCisgICBDOlxXSU5ET1dTXFN5c3RlbTMyXHNubXBtaWIuZGxsKQorICAgaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbGVkLgorICAgKGFmdGVyKQorICAgZHVwbGljYXRlIHJlZ2lzdHJhdGlvbjogTUlCIG1vZHVsZXMgbWliSUkvc25tcCBhbmQKKyAgIEM6XFdJTkRPV1NcU3lzdGVtMzJcc25tcG1pYi5kbGwgKG9pZCAuMS4zLjYuMS4yLjEuMTEpLgorICAgaGFuZGxlciByZWdpc3RyYXRpb24gZmFpbGVkLgorCiAyMDEwLTAzLTE5IDEyOjQwICBidmFzc2NoZQogCiAgICAqICBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYsICAgCkBAIC0yNjU5LDEzICs3OTI3LDYgQEAKICAgIGJ5IGV2ZXJ5IHJlcXVlc3QgZm9yIHdoaWNoIGEgcmVzcG9uc2Ugd2l0aCBub24temVybyBlcnJvciBzdGF0dXMKICAgIGlzIHNlbnQgYmFjay4KIAotMjAxMC0wMy0xOSAxMTo0MSAgYnZhc3NjaGUKLQotICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0KLSAgIFJldmVydGVkIHIxODMyNCBzaW5jZSB0aGUgNS40IGJyYW5jaCBpcyBpbiBSQyBzdGFnZSBhbmQgYQotICAgbGVhay1hdC1leGl0IGlzIG5vdCBhIHNob3dzdG9wcGVyLgotCiAyMDEwLTAzLTE3IDEzOjQxICBidmFzc2NoZQogCiAgICAqIG1pYnMvTkVULVNOTVAtQUdFTlQtTUlCLnR4dCwgbWlicy9ORVQtU05NUC1FWFRFTkQtTUlCLnR4dDoKQEAgLTI2ODUsODUgKzc5NDYsMTIgQEAKICAgIENIQU5HRVM6IEJVRzogMjk3MTI1NzogRml4ZWQgd2luRXh0RExMIGhhbmRsaW5nIG9mIG11bHRpLXZhcmJpbmQKICAgIGdldE5leHQgcmVxdWVzdHMgd2l0aCBPSURzIGluIHJldmVyc2UgbGV4aWNvZ3JhcGhpY2FsIG9yZGVyLgogCi0yMDEwLTAzLTE0IDIyOjU2ICBkdHMxMgorMjAxMC0wMy0xNiAxOToxOCAgYnZhc3NjaGUKIAotICAgKiBDSEFOR0VTLCBORVdTOgorICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMC0wMy0xNCAyMjozMSAgZHRzMTIKLQotICAgKiBDaGFuZ2VMb2c6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMTAtMDMtMTQgMjI6MjggIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDMtMTQgMjI6MTkgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDMtMTQgMjI6MTkgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDMtMTQgMjI6MTAgIGR0czEyCi0KLSAgICogIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAotICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsICAKLSAgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6Ci0KLSAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0KLTIwMTAtMDMtMTQgMjI6MDcgIGR0czEyCi0KLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLQotICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisgICBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiBmaXhlZCBhIGJ1ZyBpbiBnZXROZXh0IGhhbmRsaW5nIHRoYXQKKyAgIGNvdWxkIGNhdXNlIHRoZSBNSUIgb3V0cHV0IHRvIGJlIHRydW5jYXRlZC4KIAogMjAxMC0wMy0xMiAxMTo1MyAgZHRzMTIKIApAQCAtMjc3MywxMSArNzk2MSwxMiBAQAogICAgaGVhZGVyIHRva2VuCiAgICBQYXRjaCBzdXBwbGllZCBieSBEYW4gTmVsc29uCiAKLTIwMTAtMDMtMTEgMTY6NTIgIGR0czEyCisyMDEwLTAzLTEyIDExOjQzICBkdHMxMgogCi0gICAqIG1hbi9zbm1wY21kLjEuZGVmOgorICAgKiBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jOgogCi0gICBEb2N1bWVudCB0aGUgZm9ybWF0IG9mIHRoZSAtZS8tRSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKyAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbiBvZgorICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKCkKIAogMjAxMC0wMy0xMSAxNjo0NyAgZHRzMTIKIApAQCAtMjgwOCw2ICs3OTk3LDE1IEBACiAgICBDSEFOR0VTOiBQQVRDSDogMjkzNzk5NjogQWRkIERhdGU6IGhlYWRlciB0byBlbWFpbCBzZW5kIGJ5CiAgICB0cmFwdG9lbWFpbAogCisyMDEwLTAzLTExIDE0OjUwICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI5Njc0MDA6IFJldHJpZXZlIGVycm9yIGNvdW50ZXJzIGZvciB0aGUKKyAgIEV0aGVyTGlrZS1NSUIKKyAgIFBhdGNoIHN1cHBsaWVkIGJ5IEpvc2VmIE1vZWxsZXJzLgorCiAyMDEwLTAzLTExIDE0OjIzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYzoKQEAgLTI4MjMsNiArODAyMSwyMSBAQAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyOTU2NjU3OiBIYW5kbGUgb3Zlci1sZW5ndGggQWdlbnRYIE9JRHMuCiAgICBQYXRjaCBwcm92aWRlZCBieSBSb2IgV2VzdAogCisyMDEwLTAzLTExIDEyOjIzICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2NvbW1vbi5jOgorCisgICBQcm92aWRlIG1pc3NpbmcgZGVidWcgcGFyYW1ldGVyLgorICAgUGF0Y2ggcHJvdmlkZWQgYnkgQW5kcmVhcyBKYWVnZXIuCisKKzIwMTAtMDMtMTEgMTI6MjEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmM6CisKKyAgIFByb3ZpZGUgbWlzc2luZyAoZHVtbXkpIHJldHVybiB2YWx1ZSwgdG8gc3VwcHJlc3MgY29tcGlsZXIKKyAgIHdhcm5pbmcuCisgICBQYXRjaCBwcm92aWRlZCBieSBBbmRyZWFzIEphZWdlci4KKwogMjAxMC0wMy0xMSAxMjoxOSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmM6CkBAIC0yODM3LDcgKzgwNTAsNyBAQAogCiAyMDEwLTAzLTExIDExOjU3ICBkdHMxMgogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNDoKIAogICAgUmVwbGFjZSBiYWNrcXVvdGUgd2l0aCBzaW5nbGUgcXVvdGUgaW4gY29uZmlndXJlIG91dHB1dCBtZXNzYWdlLgogICAgV2hpbGUgdGhpcyBjaGFuZ2UgaXMgcHJvYmFibHkgbm90IHN0cmljdGx5IG5lY2Vzc2FyeSwgaXQgZmVlbHMKQEAgLTI4NjgsMjEgKzgwODEsMzEwIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI5NTA4NDU6IEZpeCBpZkhpZ2hTcGVlZCBjYWxjdWxhdGlvbgogICAgUGF0Y2ggcHJvdmlkZWQgYnkgTGVvbmFyZG8gQ2hpcXVpdHRvCiAKLTIwMTAtMDMtMDMgMTY6MTEgIGpzYWZyYW5laworMjAxMC0wMy0wOSAxNzo0OCAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaDoKKworICAgQ0hBTkdFUzogV2luMzI6IGV4cG9ydGVkIG5ldHNubXBfcmVhZF9tb2R1bGUoKSBmcm9tIG5ldHNubXAuZGxsCisgICBzdWNoIHRoYXQgTmV0U05NUC5wbSBidWlsZHMgYWdhaW4uCisKKzIwMTAtMDMtMDkgMTc6NDcgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluOgorCisgICBTaW1wbGlmaWVkIHR3byBtYWtlZmlsZXMgdXNlZCBieSBidWlsZC5iYXQgKFdpbjMyKS4KKworMjAxMC0wMy0wOSAxNzo0NCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBsaWJzbm1wLmRsbCBidWlsZHMgbm93IHdpdGggTVNWQyAyMDAyCisgICBhbmQgYWJvdmUgd2l0aG91dCB0cmlnZ2VyaW5nIGEgbGlua2VyIGVycm9yIGFib3V0IHN0cnRvdWxsLgorICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE3ODg2LikKKworMjAxMC0wMy0wOSAxNzoyNCAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBidWlsZGluZyBOZXRTTk1QLnBtIGRvZXMgbm8gbG9uZ2VyCisgICB0cmlnZ2VyIGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IHJlZGVmaW5pbmcgX1dJTjMyX1dJTk5UIG5vcgorICAgTlRERElfVkVSU0lPTi4KKworMjAxMC0wMy0wOSAxNzoyMiAgYnZhc3NjaGUKKworICAgKiBwZXJsL1NOTVAvTWFrZWZpbGUuUEw6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogbWFkZSBidWlsZGluZyBOZXRTTk1QLnBtIG1vcmUgc2lsZW50IGJ5CisgICBhZGRpbmcgdGhlIE1TVkMgY29tcGlsZXIgZmxhZ3MgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUworICAgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MuCisKKzIwMTAtMDMtMDIgMTY6NTQgIGJ2YXNzY2hlCisKKyAgICogIHdpbjMyL0NvbmZpZ3VyZSwgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbjoKKworICAgRm9sbG93LXVwIGZvciByMTgxNjcgKG1lcmdlIG9mIHNubXBkIGFuZCBzbm1wZHNkayBhbmQgYWxzbyBvZgorICAgbmV0c25tcG1pYnMgYW5kIG5ldHNubXBtaWJzc2RrKTogdGhlIGJhdGNoIGZpbGUgd2luMzIvYnVpbGQuYmF0CisgICB3b3JrcyBhZ2FpbiB3aXRoIHRoZSBQbGF0Zm9ybSBTREsgZW5hYmxlZC4KKworMjAxMC0wMy0wMiAxNjo1MiAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9NYWtlZmlsZS1hcHBzLmluOgorCisgICBGb2xsb3ctdXAgZm9yIHIxODIxNSAocmVwbGFjZWQgdGhlIG9ic29sZXRlIGNsLmV4ZSBvcHRpb24gL0dYIGJ5CisgICB0aGUgZXF1aXZhbGVudCAvRUhzYzsgYWRkZWQgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiwgYWRkZWQKKyAgIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIGFuZCByZW1vdmVkIC9GcC4uLiBhbmQgL1lYKS4KKworMjAxMC0wMi0yOCAxNTo1NiAgYnZhc3NjaGUKKworICAgKiBzbm1wbGliL3dpbnNlcnZpY2UuYzoKKworICAgV2luMzI6IGZpeGVkIGEgY29tcGlsZXIgd2FybmluZyBhYm91dCByZWRlZmluaXRpb24gb2YKKyAgIF9XSU4zMl9XSU5OVCBieSBtYWtpbmcgc3VyZSB0aGF0IDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gaXMKKyAgIGluY2x1ZGVkIGJlZm9yZSA8d2luZG93cy5oPi4KKworMjAxMC0wMi0yOCAxNToyNCAgYnZhc3NjaGUKKworICAgKiAgd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYmhlbHBlcnMvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBiYXRjaCBidWlsZDogcmVwbGFjZWQgdGhlIG9ic29sZXRlIC9HWCBieSB0aGUKKyAgIGVxdWl2YWxlbnQgL0VIc2MuCisgICBDSEFOR0VTOiBXaW4zMjogYmF0Y2ggYnVpbGQ6IGFkZGVkIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIKKyAgIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIHRvIG1ha2UgYnVpbGRpbmcgd2l0aCBNU1ZDIDIwMDgKKyAgIG1vcmUgc2lsZW50LgorICAgQ0hBTkdFUzogV2luMzI6IGJhdGNoIGJ1aWxkOiByZW1vdmVkIC9GcC4uLiBhbmQgL1lYLiBUaGVzZQorICAgb3B0aW9ucyBpbmZsdWVuY2UgaG93IHByZWNvbXBpbGVkIGhlYWRlciBmaWxlcyBhcmUgZ2VuZXJhdGVkLAorICAgd2hpY2ggYXJlIG5vdCB1c2VkIGluc2lkZSB0aGUgTmV0LVNOTVAgcHJvamVjdC4gL1lYIGlzIG5vdAorICAgc3VwcG9ydGVkIGJ5IE1TVkMgMjAwOC4KKyAgIENIQU5HRVM6IFdpbjMyOiBiYXRjaCBidWlsZDogcmVtb3ZlZCBhIGR1cGxpY2F0ZSBvY2N1cnJlbmNlIG9mCisgICBzdHJ0b3VsbC5vYmouCisKKzIwMTAtMDItMjggMTQ6MTEgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvQ29uZmlndXJlLCB3aW4zMi9NYWtlZmlsZS5pbjoKKworICAgRm9sbG93LXVwIGZvciByMTgxNjcgKG1lcmdlIG9mIHNubXBkIGFuZCBzbm1wZHNkayBhbmQgYWxzbyBvZgorICAgbmV0c25tcG1pYnMgYW5kIG5ldHNubXBtaWJzc2RrKTogYXBwbGllZCB0aGUgbmVjZXNzYXJ5IGNoYW5nZXMgdG8KKyAgIHRoZSB3aW4zMi9Db25maWd1cmUgc2NyaXB0IGFuZCB3aW4zMi9NYWtlZmlsZS5pbi4KKworMjAxMC0wMi0yOCAxMTo0MCAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgRm9sbG93LXVwIGZvciByMTgxODE6IHN5bmNocm9uaXplZCBuZXQtc25tcC1jb25maWcuaC5pbiB3aXRoCisgICBuZXQtc25tcC1jb25maWcuaC4KKworMjAxMC0wMi0yMyAxOTowMyAgYnZhc3NjaGUKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X21hbnVhbDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IHdoZW4gZ2VuZXJhdGluZyBhIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBzeXN0ZW0KKyAgIGxvY2F0aW9uIGFuZCBubyBkb21haW4gbmFtZSBpcyBmb3VuZCBpbiAvZXRjL3Jlc29sdi5jb25mLCB1c2UKKyAgICJAbm8ud2hlcmUiIGluc3RlYWQgb2YgIiIuCisKKzIwMTAtMDItMjMgMTg6NTAgIGJ2YXNzY2hlCisKKyAgICogY29uZmlndXJlLCBtNC9hY19wcm9tcHRfdXNlci5tNDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IG1hZGUgc3VyZSB0aGF0IHRoZSBjb25maWd1cmUgc2NyaXB0IGRvZXMgbm8KKyAgIGxvbmdlciBpbnZva2UgInRhaWwgLTEiLCB3aGljaCBpcyBub3QgUE9TSVgtY29tcGxpYW50LgorCisyMDEwLTAyLTIzIDE3OjQzICBidmFzc2NoZQogCiAgICAqIGNvbmZpZ3VyZSwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgUmVnZXJhdGUgY29uZmlndXJlIHNjcmlwdCBhZnRlciByZXYuIDE4MTkzIChhdXRvbWF0aWMgUlBNIHZlcnNpb24KLSAgIGRldGVjdGlvbikuCi0gICBOZXQtU05NUCBzaG91bGQgY29tcGlsZSB3aXRoIHJwbS00LjYgYXV0b21hdGljYWxseS4KKyAgIEZvbGxvdy11cCBmb3IgcjE4MTkzIChqc2FmcmFuZWspOiByZXJhbiBhdXRvcmVjb25mIGZvciB0aGUgdHJ1bmsKKyAgIGFuZCB0aGUgNS41IGJyYW5jaC4KIAogMjAxMC0wMi0yMyAxMjoyNyAganNhZnJhbmVrCiAKLSAgICogY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKIAogICAgQ0hBTkdFUzogYnVpbGRpbmc6IEZpeGVkIGNvbXBpbGF0aW9uIHdpdGggcnBtLTQuNi4KICAgIFR1cm4gb24gdGhlIGxlZ2FjeSBBUEkgd2hlbiBycG0tNC42IGlzIGRldGVjdGVkLgogCisyMDEwLTAyLTIyIDE5OjMzICBidmFzc2NoZQorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogbWFkZSBzdXJlIHRoYXQgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZG9lcyBubworICAgbG9uZ2VyIGludm9rZSAidGFpbCAtMSIsIHdoaWNoIGlzIG5vdCBQT1NJWC1jb21wbGlhbnQuCisKKzIwMTAtMDItMjEgMTk6MjMgIGJ2YXNzY2hlCisKKyAgICogIHNubXBsaWIvdG9vbHMuYywgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IG1hZGUgc3VyZSB0aGF0IHJlZGVmaW5pbmcgbWFsbG9jKCkgZXRjLiBpbgorICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmggZG9lcyBub3QgdHJpZ2dlciBzdHJhbmdlCisgICBjb21waWxlciBhbmQgbGlua2VyIGVycm9ycy4KKyAgIAorICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE3OTEwIGFuZCByMTgxNjUpLgorCisyMDEwLTAyLTIxIDE5OjIwICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGV4cG9ydGVkCisgICBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkKCkgZnJvbSBuZXRzbm1wLmRsbC4KKyAgIAorICAgKEJhY2twb3J0ZWQgdHJ1bmsgcjE3OTE4LikKKworMjAxMC0wMi0yMSAxODo1OCAgYnZhc3NjaGUKKworICAgKiAgUkVBRE1FLndpbjMyLCB3aW4zMi9saWJzZGxsLmRzdywgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHdpbjMyL3dpbjMyZGxsLmRzdzoKKworICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiByZW5hbWVkIGxpYnNkbGwuZHN3IGludG8gd2luMzJkbGwuZHN3LgorICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBzaW1wbGlmaWVkIGxpbmtpbmcgdGhlIE5ldC1TTk1QCisgICBhcHBsaWNhdGlvbnMgd2l0aCBuZXRzbm1wLmRsbCBieSBhZGRpbmcgYWxsIGFwcGxpY2F0aW9uIHByb2plY3RzCisgICB0byB0aGUgc2FtZSB3b3Jrc3BhY2UgdGhhdCBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRExMLgorICAgQ0hBTkdFUzogV2luMzI6IGJ1aWxkaW5nOiBtYWRlIGJ1aWxkaW5nIG5ldHNubXAuZGxsIGxlc3MgZXJyb3IKKyAgIHByb25lIGJ5IGxldHRpbmcgdGhlIGNvbXBpbGVyIHByaW50IGFuIGVycm9yIG1lc3NhZ2UgaWYgdGhlCisgICBwcmVwcm9jZXNzb3Igc3ltYm9sIE5FVFNOTVBfVVNFX0RMTCBoYXMgbm90IGJlZW4gZGVmaW5lZC4KKworMjAxMC0wMi0yMSAxODo1MSAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3A6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogQWRkZWQgbGlic25tcC5kZWYgdG8gdGhlIGxpc3Qgb2YKKyAgIGxpYnNubXBfZGxsLmRzcCBzb3VyY2UgZmlsZXMgc3VjaCB0aGF0IHRoZSBETEwgaXMgcmVidWlsdCB3aGVuCisgICB0aGUgLmRlZiBmaWxlIGhhcyBiZWVuIG1vZGlmaWVkLgorCisyMDEwLTAyLTIxIDE4OjQ1ICBidmFzc2NoZQorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IGV4cG9ydGVkIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKCkgZnJvbQorICAgbmV0c25tcC5kbGwuCisKKzIwMTAtMDItMjEgMTc6MzkgIGJ2YXNzY2hlCisKKyAgICogIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYywgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTW9yZSBXaW4zMiBJUHY2IHNvdXJjZSBjb2RlIGNvbnNpc3RlbmN5IGltcHJvdmVtZW50czoKKyAgIC0gTW92ZWQgI3VuZGVmIEhBVkVfSUZfTkFNRVRPSU5ERVggZnJvbSBzbm1wbGliLyouYyB0bworICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguCisgICAtIENoYW5nZWQgdGhlIGdsb2JhbCBpbjZhZGRyX2FueSB2YXJpYWJsZSBpbnRvIGEgc3RhdGljIHZhcmlhYmxlCisgICBzdWNoIHRoYXQKKyAgIG11bHRpcGxlIGRlZmluaXRpb25zIGRvIG5vdCB0cmlnZ2VyIGEgbGlua2VyIGVycm9yLgorICAgLSBBZGRlZCB0eXBlZGVmcyBmb3IgdWludDhfdCwgaW50OF90LCB1aW50MTZfdCBhbmQgaW50MTZfdC4KKyAgIC0gUmVwbGFjZWQgJyNpZiBORVRTTk1QX0VOQUJMRV9JUFY2JyBieSAnI2lmZGVmCisgICBORVRTTk1QX0VOQUJMRV9JUFY2Jy4KKworMjAxMC0wMi0yMCAwOToxMCAgYnZhc3NjaGUKKworICAgKiBhcHBzL3NubXB0YWJsZS5jOgorCisgICBCYWNrcG9ydGVkIHRydW5rIHIxNzg4Mywgd2hpY2ggZml4ZXMgYSB0eXBvIGludHJvZHVjZWQgaW4gcjE3ODgxLgorCisyMDEwLTAyLTE5IDIwOjIzICBidmFzc2NoZQorCisgICAqICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogZG8gbm90IGNvbXBsYWluIHRoYXQgaXF1ZXJ5U2VjTmFtZSBpcyBtaXNzaW5nIGluCisgICBzbm1wZC5jb25mIHdoZW4gaXRzIHZhbHVlIHdvbid0IGJlIHVzZWQuCisgICAKKyAgIChCYWNrcG9ydGVkIHRydW5rIHIxNzkxNy4pCisKKzIwMTAtMDItMTkgMTk6NDQgIGJ2YXNzY2hlCisKKyAgICogd2luMzIvYmluLCB3aW4zMi9saWI6CisKKyAgIFVwZGF0ZWQgU3VidmVyc2lvbiBpZ25vcmUgbGlzdC4KKworMjAxMC0wMi0xOSAxOTozOSAgYnZhc3NjaGUKKworICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgU3luY2hyb25pemVkIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGFuZAorICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4uCisKKzIwMTAtMDItMTkgMTk6MzYgIGJ2YXNzY2hlCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvc25tcGQuYywgYXBwcy9zbm1wdGFibGUuYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCwgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYzoKKworICAgQ0hBTkdFUzogV2luMzI6IGxpbmUgYnVmZmVyaW5nIGRvZXMgbm93IHdvcmsgd2hlbiBOZXQtU05NUCBpcworICAgYnVpbHQgd2l0aCBNU1ZDLiBUaGlzIG1ha2VzIGl0IGEgbG90IGVhc2llciB0byBkZWJ1ZyBOZXQtU05NUCBvbgorICAgV2luMzIgc2luY2UgZWFjaCBsaW5lIGRvZXMgbm93IGFwcGVhciBpbiB0aGUgb3V0cHV0IGFzIHNvb24gYXMgaXQKKyAgIGhhcyBiZWVuIGdlbmVyYXRlZC4KKyAgIAorICAgVGhpcyBpcyBhIGJhY2twb3J0IG9mIHIxNzg4MSBmcm9tIHRoZSB0cnVuay4KKworMjAxMC0wMi0xOSAxNDoxOCAgYnZhc3NjaGUKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgCisgICAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgorCisgICBDSEFOR0VTOiBXaW4zMjogbGlic25tcCBidWlsZHMgYWdhaW4gYXMgYSBETEwgd2hlbiBJUHY2IGlzCisgICBlbmFibGVkLgorCisyMDEwLTAyLTE5IDEzOjAyICBidmFzc2NoZQorCisgICAqICBSRUFETUUud2luMzIsIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jLCBzbm1wbGliL3dpbnNlcnZpY2UuYywgICAKKyAgICAgIHdpbjMyL01nbXRBcGktd2luRXh0RExMLmgsIHdpbjMyL1NubXAtd2luRXh0RExMLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcCwgd2luMzIvbmV0c25tcG1pYnNzZGssICAgCisgICAgICB3aW4zMi9zbm1wZHNkaywgd2luMzIvd2luMzIuZHN3LCB3aW4zMi93aW4zMnNkay5kc3c6CisKKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogd2luRXh0RExMIG1vZHVsZSBpcyBvbmx5IGJ1aWx0IGlmCisgICBVU0lOR19XSU5FWFRETExfTU9EVUxFIGlzIGRlZmluZWQuCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IHNpbXBsaWZpZWQgYnVpbGRpbmcgd2luRXh0RExMIGJ5CisgICBpbmNsdWRpbmcgYSBjb3B5IG9mIHRoZSBNaW5HVyBoZWFkZXJzIDxzbm1wLmg+IGFuZCA8bWdtdGFwaS5oPi4KKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogZHJvcHBlZCBzdXBwb3J0IGZvciBidWlsZGluZyBOZXQtU05NUAorICAgd2l0aCBNU1ZDIDYuMCB3aXRob3V0IFBsYXRmb3JtIFNESy4KKyAgIENIQU5HRVM6IFdpbjMyOiBidWlsZGluZzogYWRkZWQgcHJvamVjdCBkZXBlbmRlbmNpZXMgaW4gd2luMzIuZHN3CisgICBzdWNoIHRoYXQgdGhlIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIElERSBjYW4gZmlndXJlIG91dCB0aGUKKyAgIHByb3BlciBwcm9qZWN0IGJ1aWxkIG9yZGVyLgorICAgCisgICAodGhlc2UgY2hhbmdlcyBoYXZlIGJlZW4gYmFja3BvcnRlZCBmcm9tIHRydW5rIHJldmlzaW9ucyAxNzg4NCwKKyAgIDE4MTU3IGFuZCAxODE2MykuCisKKzIwMTAtMDItMTkgMTI6MzUgIGJ2YXNzY2hlCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oOgorCisgICBDSEFOR0VTOiBXaW4zMjogYnVpbGRpbmc6IGJ1aWxkcyBhZ2FpbiB3aXRoIE1TVkMgNi4wLgorICAgCisgICBCYWNrcG9ydGVkIHIxNzg2OTogY2hhbmdlZCB0aGUgcmV0dXJuIHR5cGUgb2Ygc3RydG91bGwoKSBmcm9tCisgICAndW5zaWduZWQKKyAgIGxvbmcgbG9uZycgKHdoaWNoIGlzIG5vdCB2YWxpZCBDODkpIHRvICd1aW50NjRfdCcgKGRlY2xhcmVkIGluCisgICA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+KS4KKworMjAxMC0wMi0xOCAwOTo0NSAgYnZhc3NjaGUKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaDoKKworICAgU291cmNlIGNvZGUgY2xlYW51cDoKKyAgIC0gTW92ZWQgZG9jdW1lbnRhdGlvbiBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldCBtZW1iZXJzIHRvIHRoZQorICAgY29tbWVudAorICAgYmxvY2sganVzdCBhYm92ZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIHR5cGUuCisgICAtIFJlbW92ZWQgc3VwZXJmbHVvdXMgJ2V4dGVybiAiQyInIHNwZWNpZmllcjogdGhpcyBsaW5rYWdlCisgICBzcGVjaWZpZXIKKyAgIG9ubHkgaGFzIGFuIGVmZmVjdCBvbiBkZWNsYXJhdGlvbnMgb2YgdmFyaWFibGVzIG9mIGZ1bmN0aW9ucyBhbmQKKyAgIG5vdAorICAgb24gdHlwZWRlZnMgb3Igc3RydWN0IGRlZmluaXRpb25zLgorICAgLSBSYW4gdGhpcyBoZWFkZXIgZmlsZSB0aHJvdWdoIGluZGVudC4KKworMjAxMC0wMi0xMCAxNjozOSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogTGludXg6IEltcHJvdmVkIEV0aGVyTGlrZS1NSUIgc3VwcG9ydAorICAgUGF0Y2ggc3VwcGxpZWQgYnkgSm9zZWYgTW9lbGxlcnMKKwogMjAxMC0wMi0xMCAxMDowNCAgZHRzMTIKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOgpAQCAtMjg5MCw0OSArODM5MiwxNSBAQAogICAgQ0hBTkdFUzogcHl0aG9uOiBTdXBwb3J0IG51bGwtYnl0ZXMgaW4gb2N0ZXQgc3RyaW5ncwogICAgUGF0Y2ggc3VwcGxpZWQgYnkgVG9tbXkgQmVhZGxlCiAKLTIwMTAtMDItMDkgMTU6MDUgIGJ2YXNzY2hlCisyMDEwLTAyLTA1IDA5OjUyICBqc2FmcmFuZWsKIAotICAgKiAgLiwgUkVBRE1FLndpbjMyLCBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5oLCB3aW4zMi9NZ210QXBpLXdpbkV4dERMTC5oLCAgIAotICAgICAgd2luMzIvU25tcC13aW5FeHRETEwuaDoKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jOgogCi0gICBDSEFOR0VTOiBXaW4zMjogd2luRXh0RExMOiB3b3JrcyBub3cgb24gV2luZG93cyBWaXN0YSwgV2luZG93cyA3Ci0gICBhbmQgV2luZG93cyAyMDA4IHRvby4KLSAgIENIQU5HRVM6IFdpbjMyOiBzaW1wbGlmaWVkIGJ1aWxkaW5nIE5ldC1TTk1QICsgd2luRXh0RExMIHdpdGgKLSAgIE1TVkMuCi0gICBDSEFOR0VTOiBNaW5HVzogd2luRXh0RExMOiBidWlsZHMgbm93LgotICAgTm90ZTogYWxsIHRoZXNlIGNoYW5nZXMgaGF2ZSBiZWVuIGJhY2twb3J0ZWQgZnJvbSB0aGUgdHJ1bmsuCi0KLTIwMTAtMDItMDkgMTQ6MjkgIGJ2YXNzY2hlCi0KLSAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oOgotCi0gICBDSEFOR0VTOiBXaW4zMjogYWRkZWQgI2luY2x1ZGUgPHN0ZGlvLmg+IGluCi0gICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmggc3VjaCB0aGF0IE5ldC1TTk1QIDUuNQotICAgYnVpbGRzIGFnYWluIHdpdGggTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gNi4KLQotMjAxMC0wMi0wOCAxOTo0NyAgYnZhc3NjaGUKLQotICAgKiAgLiwgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgICAKLSAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgsICAgCi0gICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaCwgICAKLSAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oLCAgIAotICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oOgotCi0gICBDSEFOR0VTOiBzbm1wZCwgc25tcGxpYjogUmVtb3ZlIHRoZSBpbmxpbmUgZGVjbGFyYXRpb25zIGZvcgotICAgZnVuY3Rpb25zIHRoYXQgbGFjayBhbiBpbmxpbmUgZGVmaW5pdGlvbi4KLSAgIAotICAgQmFja3BvcnRlZCByMTY5MjYgZnJvbSB0aGUgdHJ1bmsgdG8gdGhlIDUuNCBicmFuY2ggYmVjYXVzZSBNYXJpbwotICAgR2FydG5lciBwb3N0ZWQKLSAgIHBhdGNoIDI5NDUyMDIgaW4gd2hpY2ggaGUgcmVwb3J0ZWQgdGhhdCBnY2MgcHJpbnRlZCBzZXZlcmFsCi0gICB3YXJuaW5ncyBsaWtlIHRoZQotICAgZm9sbG93aW5nIGZvciB0aGUgY29kZSBvbiB0aGUgNS40IGJyYW5jaDoKLSAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oOjI0MTogd2FybmluZzogaW5saW5lCi0gICBmdW5jdGlvbiAndm9pZCoKLSAgIG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKG5ldHNubXBfcmVxdWVzdF9pbmZvKiwgY29uc3QKLSAgIGNoYXIqKScgdXNlZCBidXQKLSAgIG5ldmVyIGRlZmluZWQKKyAgIENIQU5HRVM6IHNubXBkOiBmaXhlZCBmaWxlZGVzY3JpcHRpb3IgbGVhayBpbiBFdGhlcmxpa2UtTUlCIGFuZAorICAgUk1PTi1NSUIKIAogMjAxMC0wMi0wNSAwOTo0OCAganNhZnJhbmVrCiAKQEAgLTI5NTgsMTQgKzg0MjYsNiBAQAogCiAgICBDSEFOR0VTOiBidWlsZGluZzogJ21ha2UgdGVzdCBURVNUT1BUUz0iLVAgdGNwIicgd29ya3MgZmluZSBub3cKIAotMjAxMC0wMS0zMSAwMTo0MiAgdGFuZGVycwotCi0gICAqIG1hbi9NYWtlZmlsZS5pbjoKLQotICAgRm9sbG93LXVwIGZvciByMTc3MTAgLyBiYWNrcG9ydCBvZiByMTc3MTI6IHJlbW92ZSBhbiBvYnNvbGV0ZQotICAgbWFudWFsCi0gICBwYWdlIGZyb20gdGhlIHNldCBvZiBmaWxlcyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQKLQogMjAxMC0wMS0yOSAyMDowNyAganNhZnJhbmVrCiAKICAgICogdGVzdGluZy90ZXN0cy9UMDU5dHJhcGR0cmFwaGFuZGxlOgpAQCAtMzAxNyw5MiArODQ3Nyw0MSBAQAogCiAgICBGaXggbWlub3IgdHlwbyBpbiBtYW4gcGFnZSwgaXQncyBzbm1wbmV0c3RhdCAtQ3AsIG5vdCAtQ1AuCiAKKzIwMTAtMDEtMTQgMTI6MzQgIGpzYWZyYW5laworCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogZml4ZWQgbWVtb3J5IGxlYWsgaW4gUk1PTi1NSUIgYW5kIEVUSEVSTElLRS1NSUIgd2hlbgorICAgdGhlcmUgYXJlIG11bHRpcGxlIGFsaWFzZXMgb2YgYW4gbmV0d29yayBpbnRlcmZhY2UKKyAgIFJhdGlvbmFsZTogdGhlIGFsaWFzZWQgaW50ZXJmYWNlcyBoYXZlIHRoZSBzYW1lIGlmSW5kZXggLT4KKyAgIENPTlRBSU5FUl9JTlNFUlQgZmFpbHMsIGJ1dCB0aGUgcmVqZWN0ZWQgZW50cnkgd2FzIG5vdCBmcmVlZC4KKworMjAxMC0wMS0xMyAxMToyMSAganNhZnJhbmVrCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogZml4IG1lbW9yeSBsZWFrIGluIGlwQWRkcmVzc1ByZWZpeFRhYmxlCisgICAtIG5ldF9zbm1wX3NlYXJjaF91cGRhdGVfcHJlZml4X2luZm8gcmV0dXJucyBkaWZmZXJlbnQgY29kZSwgd2hlbgorICAgdGhlIGVudHJ5IHdhcyBub3QgaW5zZXJ0ZWQgdG8gbGlzdCBhbmQgY2FuIGJlIGZyZWVkLgorCisyMDEwLTAxLTEyIDAwOjUyICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgQ0hBTkdFUzogYnVpbGQ6IHJ1biBycG0gY29uZmlndXJlIGNoZWNrcyBmb3IgaHJfc3dpbnN0IHJld3JpdGUKKyAgIChycG0KKyAgIHZlcnNpb24gb25seSkKKwogMjAxMC0wMS0wNyAxOTo0MiAgaGFyZGFrZXIKIAotICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYywgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6CiAKICAgIFBhdGNoIGZyb20gU3RlcGhlbiBIZW1taW5nZXIgdG8gZml4IGEgbWlub3IgbWVtbGVhayBpbiBjcHUKICAgIHN5c2N0cmwgZmV0Y2hpbmcKIAotMjAxMC0wMS0wNiAxNzo1NiAgZHRzMTIKLQotICAgKiBDSEFOR0VTOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDEwLTAxLTA2IDE3OjI1ICBkdHMxMgotCi0gICAqIENoYW5nZUxvZzoKLQotICAgdmVyc2lvbiB1cGRhdGUKLQotMjAxMC0wMS0wNiAxNzowNiAgZHRzMTIKLQotICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKLSAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0KLSAgIG1ha2UgZGVwZW5kCi0KLTIwMTAtMDEtMDYgMTc6MDYgIGR0czEyCi0KLSAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAgIAotICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgotCi0gICBtYWtlIGRlcGVuZAotCi0yMDEwLTAxLTA2IDE2OjU1ICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDEwLTAxLTA2IDE2OjQzICBkdHMxMgotCi0gICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywgICAKLSAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0KLSAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQotCiAyMDEwLTAxLTA2IDEzOjMzICBqc2FmcmFuZWsKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9hdC5oOgpAQCAtMzEyMSw3ICs4NTMwLDggQEAKIAogICAgKiBzbm1wbGliL3NubXBVbml4RG9tYWluLmM6CiAKLSAgIENIQU5HRVM6IHNubXBsaWI6IEJVR1M6IDI5MjIzOTA6IEZpeCB0ZXN0IGZvciBtaXNzaW5nIGNvbnRleHROYW1lIHBhcmFtZXRlcgorICAgQ0hBTkdFUzogc25tcGxpYjogQlVHUzogMjkyMjM5MDogRml4IHRlc3QgZm9yIG1pc3NpbmcgY29udGV4dE5hbWUKKyAgIHBhcmFtZXRlcgogCiAyMDEwLTAxLTA1IDIyOjMzICBkdHMxMgogCkBAIC0zMTQ3LDkgKzg1NTcsMzkgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyOTEyNTg0OiBGaXggbnVsbCBPSUQgaGFuZGxpbmcgaW4gQWdlbnR4IG9uIDY0Yml0CisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI5MTI1ODQ6IEZpeCBudWxsIE9JRCBoYW5kbGluZyBpbiBBZ2VudHgKKyAgIG9uIDY0Yml0CiAgICBQYXRjaCBzdXBwbGllZCBieSBMdXR6IEphZW5pY2tlCiAKKzIwMTAtMDEtMDUgMTA6MTEgIHRhbmRlcnMKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4Lmg6CisKKyAgIENIQU5HRVM6IGhwdXg6IGZpeCBidWlsZCBlcnJvciBvbiBIUC1VWCAxMC4yMAorCisyMDEwLTAxLTA1IDA4OjQyICBqc2FmcmFuZWsKKworICAgKiBtYW4sIG1hbi9wZHVfYXBpLjMsIG1hbi9zZXNzaW9uX2FwaS4zLCBtYW4vdmFyYmluZF9hcGkuMzoKKworICAgUmVtb3ZlIGdlbmVyYXRlZCBtYW4gcGFnZXMgZnJvbSByZXBvc2l0b3J5LgorCisyMDA5LTEyLTIzIDA5OjQ5ICBqc2FmcmFuZWsKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jOgorCisgICBGaXggaW52YWxpZCByZWFkIHJlcG9ydGVkIGJ5IHZhbGdyaW5kOgorICAgSW52YWxpZCByZWFkIG9mIHNpemUgMQorICAgbWVtY3B5IChtY19yZXBsYWNlX3N0cm1lbS5jOjQwMikKKyAgIF9uZXRzbm1wX2lvY3RsX2lwYWRkcmVzc19jb250YWluZXJfbG9hZF92NAorICAgKGlwYWRkcmVzc19pb2N0bC5jOjI0MCkKKyAgIG5ldHNubXBfYXJjaF9pcGFkZHJlc3NfY29udGFpbmVyX2xvYWQgKGlwYWRkcmVzc19saW51eC5jOjE1OCkKKyAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19jb250YWluZXJfbG9hZCAoaXBhZGRyZXNzX2NvbW1vbi5jOjExMikKKyAgIAorICAgUmV0dXJuaW5nIHN0cnVjdHVyZSB3aXRoIHBvaW50ZXJzIGluc2lkZSBpcyBub3QgdGhlIGJlc3QgdGhpbmcgdG8KKyAgIGRvLgorCiAyMDA5LTEyLTIyIDA3OjU5ICBidmFzc2NoZQogCiAgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKQEAgLTMxNjMsNiArODYwMywyNSBAQAogICAgc3RyaW5nCiAgICByZWFkIGJ5IHRoaXMgZnVuY3Rpb24uCiAKKzIwMDktMTItMjEgMTQ6MjkgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IGZpeCBjcmFzaCBpbiBJRi1NSUIgYW5kIElQLU1JQiB3aGVuIHRoZXJlIGFyZQorICAgc29tZSBpbnRlcmZhY2VzIHdpdGggYnJvYWRjYXN0IElQIGFkZHJlc3MgYW5kIHNvbWUgd2l0aG91dC4KKyAgIAorICAgUmVzZXQgdGhlIGJjYXN0ZW50cnkgaW4gdGhlIGxvb3AsIHNvIGl0IGNhbm5vdCBiZSBpbnNlcnRlZCB0byB0aGUKKyAgIGNvbnRhaW5lcgorICAgdHdpY2UuCisgICAKKyAgIFdpdGhvdXQgdGhpcyBwYXRjaCwgd2hlbiBhbiBpbnRlcmZhY2Ugd2l0aG91dCBicm9hZGNhc3QgYWRkcmVzcworICAgaXMgcHJvY2Vzc2VkLAorICAgdGhlIGJjYXN0YWRkcmVzcyBmcm9tIHByZXZpb3VzIGxvb3AgaXMgaW5zZXJ0ZWQgaW50byB0aGUKKyAgIGNvbnRhaW5lci4gVGhpcworICAgb2J2aW91c2x5IGZhaWxzIGFuZCB0aGUgYmNhc3RlbnRyeSBpcyBmcmVlZCwgYnV0IHRoZSBjb250YWluZXIKKyAgIHN0aWxsIGNvbnRhaW5zCisgICByZWZlcmVuY2UgdG8gaXQgLT4gU0lHU0VHVi4KKwogMjAwOS0xMi0yMSAxMzo1MiAgYnZhc3NjaGUKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CkBAIC0zMjE3LDcgKzg2NzYsOCBAQAogICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmM6CiAKICAgIEFwcGxpZWQgcGF0Y2ggIzI5MTIwNjgsIHdoaWNoIGZpeGVzIGEgbWVtb3J5IGxlYWsgZHVyaW5nIHN0YXJ0dXAuCi0gICBUaGUgZnVuY3Rpb24gbG9nX25vdGlmaWNhdGlvbigpIGFkZHMgYSByb3cgdG8gdGhlIHRhYmxlCisgICBUaGUKKyAgIGZ1bmN0aW9uIGxvZ19ub3RpZmljYXRpb24oKSBhZGRzIGEgcm93IHRvIHRoZSB0YWJsZQogICAgbmxtTG9nVmFyVGFibGUsIGJ1dAogICAgdGhpcyBmdW5jdGlvbiBjYW4gYmUgY2FsbGVkIGJlZm9yZSB0aGF0IHRhYmxlIGhhcyBiZWVuCiAgICBpbml0aWFsaXplZC4gSWYKQEAgLTMyNDYsNyArODcwNiw4IEBACiAKICAgICogUkVBRE1FLndpbjMyOgogCi0gICBCYWNrcG9ydGVkIHIxNzkwMSAoc3BlbGxpbmcgZml4ZXMgYW5kIGhyU3lzdGVtVXB0aW1lIGRvY3VtZW50YXRpb24pLgorICAgQmFja3BvcnRlZCByMTc5MDEgKHNwZWxsaW5nIGZpeGVzIGFuZCBoclN5c3RlbVVwdGltZQorICAgZG9jdW1lbnRhdGlvbikuCiAKIDIwMDktMTItMTcgMTA6MDMgIGR0czEyCiAKQEAgLTMyNjcsMTIgKzg3MjgsMjggQEAKICAgIHRyYXBzIGlzIG5vdwogICAgY29ycmVjdC4KIAorMjAwOS0xMi0xMCAxNTo1MiAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIRVM6IDI5MTE5NzA6IFByb3Blcmx5IHRlcm1pbmF0ZSBsaW5rZWQgbGlzdAorICAgb2YgcmVnaXN0cmF0aW9ucy4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IE1pcmtvIERlY2tlcnQuCisKIDIwMDktMTItMTAgMTU6NDMgIGR0czEyCiAKICAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYywgICAKICAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDI5MTEzMjM6IEZpeCBhZ2VudCBsb2NrdXAgd2hlbiBtb25pdG9yaW5nIEFnZW50WC1kZWxlZ2F0ZWQgaW5mb3JtYXRpb24KKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAyOTExMzIzOiBGaXggYWdlbnQgbG9ja3VwIHdoZW4KKyAgIG1vbml0b3JpbmcgQWdlbnRYLWRlbGVnYXRlZCBpbmZvcm1hdGlvbgorCisyMDA5LTEyLTEwIDE0OjUzICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgICBCYWNrcG9ydCBvZiBTVk4gcmV2aXNpb25zIDE3ODcwLzE3ODk0LAorICAgdG8gaGFuZGxlIGNvbnN0IHdhcm5pbmdzLgogCiAyMDA5LTEyLTEwIDEyOjU0ICBidmFzc2NoZQogCkBAIC0zMjkyLDcgKzg3NjksOSBAQAogICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAgIAogICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaDoKIAotICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBzdXBwb3J0IG9mIG5ldHdvcmsgaW50ZXJmYWNlcyB3aXRoIEhXIGFkZHJlc3MgYmlnZ2VyIHRoYW4gNiBieXRlcyB0byBpcE5ldFRvTWVkaWFUYWJsZSBhbmQgaXBOZXRUb1BoeXNpY2FsVGFibGUuCisgICBDSEFOR0VTOiBzbm1wZDogQWRkIHN1cHBvcnQgb2YgbmV0d29yayBpbnRlcmZhY2VzIHdpdGggSFcgYWRkcmVzcworICAgYmlnZ2VyIHRoYW4gNiBieXRlcyB0byBpcE5ldFRvTWVkaWFUYWJsZSBhbmQKKyAgIGlwTmV0VG9QaHlzaWNhbFRhYmxlLgogICAgU29tZSBIVywgbGlrZSBJbmZpbmlCYW5kLCB1c2VzIEhXIGFkZHJlc3NlcyB3aXRoIDkgYW5kIG1vcmUKICAgIGJ5dGVzLiBTbm1wZCBvbiBMaW51eCB3YXMgbm90IGFibGUgdG8gcGFyc2UgL3Byb2MvbmV0L2FycCB0aGVuCiAgICBhbmQgcHJvZHVjZWQgdWdseSAnaW9jdGwgMzUxMjMgcmV0dXJuZWQgLTEnIHRvIGxvZy4KQEAgLTMzMDEsNyArODc4MCw4IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBzbm1wbGliL3N5c3RlbS5jOgogCi0gICBDSEFOR0VTOiBzbm1wbGliLCBzbm1wZDogTWFrZSBzdXJlIHRoYXQgYSBtYXNrIGlzIGdpdmVuIHRvIG9wZW4gd2hlbiBPX0NSRUFUIGlzIHNwZWNpZmllZAorICAgQ0hBTkdFUzogc25tcGxpYiwgc25tcGQ6IE1ha2Ugc3VyZSB0aGF0IGEgbWFzayBpcyBnaXZlbiB0byBvcGVuCisgICB3aGVuIE9fQ1JFQVQgaXMgc3BlY2lmaWVkCiAKIDIwMDktMTItMDcgMTA6NDYgIGR0czEyCiAKQEAgLTMzMTAsMTIgKzg3OTAsMTkgQEAKICAgIFR3ZWFrIG1pc3Npbmcgc3ViaWRlbnRpZmllciBwcm9jZXNzaW5nIHRvIGJlIG1vcmUgdHlwZS1hd2FyZS4KICAgIChBbiBpc3N1ZSB3aXRoIEFJWCwgYXQgbGVhc3QpCiAKKzIwMDktMTItMDUgMjA6MTkgIHRhbmRlcnMKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmg6CisKKyAgIGZpeCBkZWNsYXJhdGlvbiBvZiBzdHJ0b3VsbAorCiAyMDA5LTEyLTA1IDE3OjQyICB0YW5kZXJzCiAKICAgICogcGVybC9TTk1QL1NOTVAueHM6CiAKICAgIGNhbGwgbmV0c25tcF9yZWFkX21vZHVsZSBpbnN0ZWFkIG9mIHJlYWRfbW9kdWxlIHRvIG1ha2UgaXQKLSAgIGNvbXBpbGUgd2l0aCBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQorICAgY29tcGlsZSB3aXRoCisgICBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQogCiAyMDA5LTEyLTA1IDE3OjE5ICB0YW5kZXJzCiAKQEAgLTMzNDQsNyArODgzMSw3IEBACiAKIDIwMDktMTItMDEgMTI6MzYgIGR0czEyCiAKLSAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CisgICAqIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKIAogICAgVXBkYXRlIGEgcmVkdW5kYW50IChhbmQgcHJvYmFibHkgaW5hY2N1cmF0ZSkgY29tbWVudC4KIApAQCAtMzM1MiwxOSArODgzOSwyMiBAQAogCiAgICAqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKIAotICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4MjIzNjA6IEZpeCBtZW1vcnkgbGVhayB3aGVuIGJ1aWxkaW5nIHRhYmxlIE9JRHMKKyAgIENIQU5HRVM6IGFnZW50OiBCVUdTOiAyODIyMzYwOiBGaXggbWVtb3J5IGxlYWsgd2hlbiBidWlsZGluZworICAgdGFibGUgT0lEcwogCiAyMDA5LTEyLTAxIDEyOjA4ICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRhYmxlLmM6CiAKLSAgIENIQU5HRVM6IHNubXB0YWJsZTogQlVHUzogMjgzNzk5ODogSGFuZGxlIG1pc3NpbmcgaW5zdGFuY2Ugc3ViaWRlbnRpZmllcnMgaW4gcmVzdWx0cworICAgQ0hBTkdFUzogc25tcHRhYmxlOiBCVUdTOiAyODM3OTk4OiBIYW5kbGUgbWlzc2luZyBpbnN0YW5jZQorICAgc3ViaWRlbnRpZmllcnMgaW4gcmVzdWx0cwogCiAyMDA5LTEyLTAxIDExOjU2ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9jbGllbnQuYzoKIAotICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4NDEwMDg6IFByb3RlY3QgYWdhaW5zdCBjcmFzaCBmb2xsb3dpbmcgZmFpbGVkIEFnZW50WCByZXNwb25zZQorICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4NDEwMDg6IFByb3RlY3QgYWdhaW5zdCBjcmFzaCBmb2xsb3dpbmcKKyAgIGZhaWxlZCBBZ2VudFggcmVzcG9uc2UKIAogMjAwOS0xMS0zMCAxNjo1NSAgZHRzMTIKIApAQCAtMzM3Nyw1MiArODg2Nyw4MiBAQAogCiAgICAqIGxvY2FsL21pYjJjLm9sZC1hcGkuY29uZjoKIAotICAgQ0hBTkdFUzogbWliMmM6IEJVR1M6IDI4ODg1Njk6IEZpeCBnZW5lcmF0aW9uIG9mIHRhYmxlIGNvbHVtbnMgYXJyYXkKKyAgIENIQU5HRVM6IG1pYjJjOiBCVUdTOiAyODg4NTY5OiBGaXggZ2VuZXJhdGlvbiBvZiB0YWJsZSBjb2x1bW5zCisgICBhcnJheQogCiAyMDA5LTExLTMwIDE2OjMwICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKIAotICAgQ0hBTkdFUzogYWdlbnQ6IEJVR1M6IDI4OTQwNTk6IEhhbmRsZSBlcnJvcnMgd2hlbiBjb3VudGluZyBpbnRlcmZhY2VzCisgICBDSEFOR0VTOiBhZ2VudDogQlVHUzogMjg5NDA1OTogSGFuZGxlIGVycm9ycyB3aGVuIGNvdW50aW5nCisgICBpbnRlcmZhY2VzCiAKIDIwMDktMTEtMzAgMTY6MDcgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmM6CiAKLSAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDI4OTcwMDA6IFN1cHByZXNzIDMyLWJpdCBjb3VudGVyIHRydW5jYXRpb24gd2FybmluZ3MuCisgICBDSEFOR0VTOiBhZ2VudDogQlVHOiAyODk3MDAwOiBTdXBwcmVzcyAzMi1iaXQgY291bnRlciB0cnVuY2F0aW9uCisgICB3YXJuaW5ncy4KKworMjAwOS0xMS0zMCAxNTozNCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6CisKKyAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjkwMzA5MjogRml4IGJyb2tlbiBoYW5kbGluZyBvZiBicm9hZGNhc3QKKyAgIGVudHJpZXMuCiAKIDIwMDktMTEtMzAgMTU6MTkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmM6CiAKLSAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjkwMTAyOTogRml4IGNvbXBpbGVyIHdhcm5pbmcgb24gQ2xvc2VIYW5kbGUoKQorICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyOTAxMDI5OiBGaXggY29tcGlsZXIgd2FybmluZyBvbgorICAgQ2xvc2VIYW5kbGUoKQogICAgRW5kaWFuIHByb2JsZW1zIGFscmVhZHkgYWRkcmVzc2VkIGJ5IHBhdGNoICMyODM1NTc2CiAKIDIwMDktMTEtMzAgMTU6MTMgIGR0czEyCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKIAotICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI4OTA5MzE6IEJldHRlciBoYW5kbGluZyBvZiBDb3VudGVyNjQgdmFsdWVzLgorICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI4OTA5MzE6IEJldHRlciBoYW5kbGluZyBvZiBDb3VudGVyNjQKKyAgIHZhbHVlcy4KICAgIFBhdGNoIHByb3ZpZGVkIGJ5IE1heCBSb21hbm92LgogCiAyMDA5LTExLTMwIDE1OjA3ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jOgogCi0gICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4ODc4MTY6IFByb3RlY3QgYWdhaW5zdCBkaXZpc2lvbi1ieS16ZXJvIGNyYXNoCisgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4ODc4MTY6IFByb3RlY3QgYWdhaW5zdCBkaXZpc2lvbi1ieS16ZXJvCisgICBjcmFzaAorCisyMDA5LTExLTMwIDE1OjAzICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyODgzMjIwOiBGaXggY29tcGlsYXRpb24gcHJvYmxlbXMgd2hlbgorICAgaWZYVGFibGUgaXMgbm90IGluY2x1ZGVkLgogCiAyMDA5LTExLTMwIDE0OjQ5ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmM6CiAKLSAgIENIQU5HRVM6IGFnZW50OiBQQVRDSDogMjg4MzE1NTogRml4IG1lbW9yeSBsZWFrIGluIHByb3h5IGhhbmRsaW5nLgorICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyODgzMTU1OiBGaXggbWVtb3J5IGxlYWsgaW4gcHJveHkKKyAgIGhhbmRsaW5nLgogICAgUGF0Y2ggc3VwcGxpZWQgYnkgR293dGhhbSBUaG9tbWFuZHJhLgogCiAyMDA5LTExLTMwIDE0OjEyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgogCi0gICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4Nzc1MTg6IEZpeCBoYW5kbGluZyBvZiBzY29wZWQgQWdlbnRYIHZhcmlhYmxlcworICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAyODc3NTE4OiBGaXggaGFuZGxpbmcgb2Ygc2NvcGVkIEFnZW50WAorICAgdmFyaWFibGVzCisKKzIwMDktMTEtMzAgMTQ6MDEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jOgorCisgICBDSEFOR0VTOiBhZ2VudDogUEFUQ0g6IDI4MzU1NzY6IEZpeCBlbmRpYW5uZXNzIGlzc3VlcyBpbgorICAgcGFzcy9wYXNzX3BlcnNpc3QKIAogMjAwOS0xMS0yNyAwODo1NCAganNhZnJhbmVrCiAKQEAgLTM0MzAsMTEgKzg5NTAsMjEgQEAKIAogICAgUmVtb3ZlIGV4ZWN1dGFibGUgYXR0cmlidXRlIGZyb20gc291cmNlIGZpbGVzLgogCisyMDA5LTExLTE5IDIyOjUyICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDI5MDAwNzg6IEFkZCBzdXBwb3J0IGZvciBPSUQgdmFyaWFibGVzIHdpdGgKKyAgIHNpemUgaW4gZWxlbWVudHMgaW5zdGVhZCBvZiBieXRlcywgY29ycmVjdCBzeXNPYmplY3RJRCB0byB1c2UKKyAgIHRoaXMuCisKIDIwMDktMTEtMTMgMTI6NTkgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbG9nZ2luZyBvZiAndHJ1bmNhdGluZyBpbnRlZ2VyIHZhbHVlID4gMzIgYml0cycgaW4gSVAtTUlCIGFuZCBUQ1AtTUlCCisgICBDSEFOR0VTOiBzbm1wZDogRml4ZWQgbG9nZ2luZyBvZiAndHJ1bmNhdGluZyBpbnRlZ2VyIHZhbHVlID4gMzIKKyAgIGJpdHMnIGluIElQLU1JQiBhbmQgVENQLU1JQgogICAgVGhlIGNvdW50ZXJzLCB3aGljaCBncm93IGZhc3QgYXJlIG5vdyBjdXQgdG8gMzJiaXRzLgogCiAyMDA5LTExLTExIDA5OjAwICBkdHMxMgpAQCAtMzQ0NSw5MCArODk3NSwyMiBAQAogICAgUmV0dXJuIHN1Y2Nlc3MvZmFpbHVyZSB2YWx1ZXMgZnJvbSBjYWNoZSBsb2FkIHJvdXRpbmUuCiAgICBQcm9ibGVtIGlkZW50aWZpZWQgYnkgWHVhbi4KIAotMjAwOS0xMC0yOSAxNjowNSAgZHRzMTIKKzIwMDktMTAtMjcgMDY6NDQgIG1hZ2ZyCiAKLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sICAgCi0gICAgICBwZXJsL1NOTVAvU05NUC5wbSwgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtLCAgIAotICAgICAgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0sIHBlcmwvYWdlbnQvYWdlbnQucG0sICAgCi0gICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwgICAKLSAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBzZWRzY3JpcHQuaW4sICAgCi0gICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgorICAgKiAgbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpLCAgIAorICAgICAgbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mLCBsb2NhbC9taWIyYy5jb250YWluZXIuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZiwgbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLnJvdy5jb25mLCBsb2NhbC9taWIyYy5zY2FsYXIuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZjoKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4zLnByZTEgKQotCi0yMDA5LTEwLTI5IDE0OjI0ICBkdHMxMgotCi0gICAqIENIQU5HRVMsIE5FV1M6Ci0KLSAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDktMTAtMjkgMTE6NDYgIGR0czEyCi0KLSAgICogQ2hhbmdlTG9nOgotCi0gICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA5LTEwLTI5IDEwOjMwICBkdHMxMgotCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA5LTEwLTI5IDEwOjI4ICBkdHMxMgotCi0gICAqIGRveHlnZW4uY29uZjoKLQotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4zLnByZTEgKQotCi0yMDA5LTEwLTI5IDA5OjU1ICBkdHMxMgotCi0gICAqIE1ha2VmaWxlLnRvcDoKLQotICAgdmVyc2lvbiB1cGRhdGUKKyAgIENIQU5HRVM6IG1pYjJjOiBSZW1vdmUgdW5uZWNlc3NhcnkgY2FzdHMgdG8gdV9jaGFyKgogCiAyMDA5LTEwLTA5IDEyOjM4ICBqc2FmcmFuZWsKIAogICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CiAKLSAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAyODcxNzQ3OiBwbHVnIG1lbW9yeSBsZWFrIGluIE9JRCBwcm9jZXNzaW5nLgorICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6Mjg3MTc0NzogcGx1ZyBtZW1vcnkgbGVhayBpbiBPSUQKKyAgIHByb2Nlc3NpbmcuCiAgICBUaGUgbWVtb3J5IGxlYWtlZCB3aGVuIHNtYWxsIE9JRCwgd2hpY2ggY291bGQgZml0IHByZS1hbGxvY2F0ZWQKICAgIHZwLT5uYW1lX2xvYywgd2FzIHBsYWNlZCBpbiBkaWZmZXJlbnQgKGFsbG9jYXRlZCkgb25lLgogCkBAIC0zNTQ2LDYgKzkwMDgsMTggQEAKICAgIENIQU5HRVM6IHNubXBsaWI6IENoYW5nZSB0aGUgcGFyc2luZyBvZiByYW5nZXMgdG8gYWNjZXB0IGFsbAogICAgdmFsaWQgdmFsdWVzLgogCisyMDA5LTEwLTA3IDIyOjI0ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogbWlzYzogUEFUQ0g6IDI4MzYxMTI6IFVzZSB0aGUgcmlnaHQgbW9kaWZpZXIgd2hlbgorICAgcHJpbnRpbmcgc2l6ZV90IGFuZCBzc2l6ZV90IHZhcmlhYmxlcy4KKwogMjAwOS0xMC0wNyAxMjo1MCAganNhZnJhbmVrCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmM6CkBAIC0zNTU2LDEyICs5MDMwLDIwIEBACiAKIDIwMDktMTAtMDUgMTk6MTkgIG1hZ2ZyCiAKLSAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9maWxlX3V0aWxzLmgsICAgCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmlsZV91dGlscy5oLCAgIAogICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RleHRfdXRpbHMuaDoKIAogICAgQ0hBTkdFUzogc25tcGxpYjogQ29ycmVjdCB0aGUgc3BlbGxpbmcgb2YgX19jcGx1c3BsdXMgd2hlbgogICAgY2hlY2tpbmcgaWYgdGhlIGZpbGUgc2hvdWxkIGJlIHdyYXBwZWQgaW4gZXh0ZXJuICJDIi4KIAorMjAwOS0xMC0wNSAwNjoxMyAgbWFnZnIKKworICAgKiBhcHBzL3NubXB3YWxrLmM6CisKKyAgIENIQU5HRVM6IHNubXB3YWxrOiBIYW5kbGUgdGhlIGNhc2Ugd2hlbiB0aGUgZW5kIG9pZCBpcyBsb25nZXIKKyAgIHRoYW4gdGhlIGN1cnJlbnQgb2lkIGNvcnJlY3RseQorCiAyMDA5LTA5LTMwIDEwOjEyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CkBAIC0zNTcwLDE4ICs5MDUyLDM4NiBAQAogICAgaW5mb3JtYXRpb24gY3Jhc2hpbmcgdGhlIGFnZW50LgogICAgUHJvYmxlbSByZXBvcnRlZCBieSBJbnlhdmVuIFNha2FyYWkuCiAKKzIwMDktMDktMjQgMDM6NDkgIGhhcmRha2VyCisKKyAgICogLjoKKworICAgNS41IGJyYW5jaGVkCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDaGFuZ2VzOiBWNS40IC0+IFY1LjUKKworMjAwOS0wOS0yMyAyMzo0MiAgaGFyZGFrZXIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKwogMjAwOS0wOS0yMyAyMzo0MCAgaGFyZGFrZXIKIAogICAgKiBGQVE6CiAKKyAgIHJlbW92ZSBTVk4gYnJhbmNoIHdvcmRpbmcKKworMjAwOS0wOS0yMyAyMzozNiAgaGFyZGFrZXIKKworICAgKiBGQVE6CisKICAgIHByb3BlciBwcm9qZWN0IGNhcGl0YWxpemF0aW9uCiAKKzIwMDktMDktMjMgMjM6MzUgIGhhcmRha2VyCisKKyAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMDktMDktMjMgMjM6MzAgIGhhcmRha2VyCisKKyAgICogbWFuL3BkdV9hcGkuMywgbWFuL3Nlc3Npb25fYXBpLjMsIG1hbi92YXJiaW5kX2FwaS4zOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCiAyMDA5LTA5LTIyIDIxOjUxICB0YW5kZXJzCiAKICAgICogUkVBRE1FLnNvbGFyaXM6CiAKICAgIGZpeCB0eXBvcwogCisyMDA5LTA5LTE0IDIyOjM5ICBoYXJkYWtlcgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorCisgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCisyMDA5LTA5LTE0IDIyOjM2ICBoYXJkYWtlcgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWMsIG1hbi9wZHVfYXBpLjMsIG1hbi9zZXNzaW9uX2FwaS4zLCAgIAorICAgICAgbWFuL3ZhcmJpbmRfYXBpLjM6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCisyMDA5LTA5LTE0IDIyOjE4ICBoYXJkYWtlcgorCisgICAqIFJFQURNRS5haXgsIGFwcHMvc25tcG5ldHN0YXQvaWYuYywgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vYWl4Lmg6CisKKyAgIFBhdGNoIGZyb20gbWFnZnIgZm9yIDUuNSBzcGVjaWZpYyBhaXggYnVpbGQgZml4ZXMKKworMjAwOS0wOS0wMiAwNzoxMiAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuYywgYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX29zcGYuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogcmVuYW1lIE1JQiBtYWNybyB0byBORVRTTk1QX01JQjJfT0lELCBNSUIgaXMKKyAgIHRvbyBnZW5lcmljIGFuZCBtYXkgY29uZmxpY3Qgd2l0aCBhcHBsaWNhdGlvbnMuCisgICAKKyAgIFRoZSBvbGQgTUlCIG1hY3JvIGlzIGtlcHQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHVubGVzcworICAgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMgaXMgZGVmaW5lZC4KKworMjAwOS0wOC0zMSAxOTozOCAgbmJhCisKKyAgICogbWlicy9yZmNsaXN0OgorCisgICBBZGRpdGlvbmFsIFJGQyBtaWJzCisKKzIwMDktMDgtMzEgMTk6MzcgIG5iYQorCisgICAqIG1pYnMvSUFOQWlmVHlwZS1NSUIudHh0OgorCisgICBJQU5BIGZpeGVkIGEgYnVnCisKKzIwMDktMDgtMjkgMDc6MjkgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBSZW1vdmUgdW5uZWVkZWQgY2FzdHMuCisKKzIwMDktMDgtMjkgMDc6MjggIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiByZXQgaXMgb25seSB1c2VkIGluIHNldHRhYmxlIHRhYmxlcyBzbyBvbmx5IGRlY2xhcmUgaXQKKyAgIHRoZW4uCisKKzIwMDktMDgtMjkgMDc6MjQgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBSZXBsYWNlIHRoZSBfb2lkX2xlbiB2YXJpYWJsZSB3aXRoIGFuIGV4cGxpY2l0IGNhbGwgb2YKKyAgIE9JRF9MRU5HVEguCisKKzIwMDktMDgtMjkgMDc6MjEgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBNYWtlIGV2ZXJ5IGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHN0YXRpYyBzdGF0aWMuIFJlbW92ZSB0aGUKKyAgIGRlY2xhcmF0aW9ucyBvZiB0aGUgc3RhdGljIGZ1bmN0aW9ucyBhbmQgdGhlIHByaXZhdGUgZGVmaW5lcyBmcm9tCisgICB0aGUgaGVhZGVyLgorCisyMDA5LTA4LTI5IDA3OjE5ICBtYWdmcgorCisgICAqIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mOgorCisgICBtaWIyYzogUmVvcmRlciB0aGUgZnVuY3Rpb25zIGluIG9yZGVyIHRvIGF2b2lkIHRoZSBuZWVkIGZvcgorICAgZm9yd2FyZCBkZWNsYXJhdGlvbnMuCisKKzIwMDktMDgtMjkgMDc6MTYgIG1hZ2ZyCisKKyAgICogbG9jYWwvbWliMmMucmF3LXRhYmxlLmNvbmY6CisKKyAgIG1pYjJjOiBuZXRzbm1wX3RhYmxlX3JlZ2lzdGVyIHNob3VsZCBiZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlCisgICBhbmQgdGFrZSBvbmx5IHR3byBhcmdtZW50cy4KKworMjAwOS0wOC0yOSAwNzoxNCAgbWFnZnIKKworICAgKiBsb2NhbC9taWIyYy5yYXctdGFibGUuY29uZjoKKworICAgbWliMmM6IGJ1aWxkX29pZCBleHBlY3RzIGEgcG9pbnRlciB0byBhbGxvY2F0ZWQgb2lkLiBDaGFuZ2UgdG8KKyAgIHVzZSBidWlsZF9vaWRfbm9hbGxvYyBhbmQgcmVtb3ZlIG9uZSBjb3B5IG9mIHRoZSBpbmRpY2VzLgorCisyMDA5LTA4LTI5IDA3OjEwICBtYWdmcgorCisgICAqIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mOgorCisgICBtaWIyYzogVGhlcmUgaXMgbm8gaW5kZXhfb2lkX2xlbiBtZW1iZXIgaW4gc3RydWN0IGVudHJ5LiBVc2UgdGhlCisgICBpbnRlbmRlZCBsb2NhbCB2YXJpYWJsZSBpbmRleF9vaWRfbGVuLgorCisyMDA5LTA4LTI5IDA3OjA2ICBtYWdmcgorCisgICAqIGxvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mOgorCisgICBtaWIyYzogQ29ycmVjdCB0aGUgcmV0dXJuIHR5cGUgb2YgJHtpfV9nZXQqZW50cnkgdG8gbWF0Y2ggdGhlCisgICByZXR1cm5lZCB0eXBlLgorCisyMDA5LTA4LTI2IDIyOjM3ICBoYXJkYWtlcgorCisgICAqIENoYW5nZUxvZzoKKworICAgd2h3b29wczsgYmxldyB0aGUgY2hhbmdlbG9nIGZvciByYzIKKworMjAwOS0wOC0yNiAxNzozOCAgaGFyZGFrZXIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzoyOSAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzozOCAgaGFyZGFrZXIKKworICAgKiAgbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMsIG1hbi9uZXRzbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzoyOSAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9uZXQtc25tcC5zcGVjOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAwOS0wOC0yNiAxNzoyOCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgdXBkYXRlZCBiYXNlZCBvbiBuZXcgU0YgdXBsb2FkIG1ldGhvZHM7IG5vIGxvbmdlciBhcyBhdXRvbWF0YWJsZQorCisyMDA5LTA4LTI2IDE3OjI2ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaCBmcm9tIEphbiB0byBlbmRsZXNzIGxvb3AgaW4gZGVmYXVsdCByb3V0ZXMKKyAgIG9uIGxpbnV4CisKKzIwMDktMDgtMjYgMTc6MjUgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmg6CisKKyAgIGFwcGx5IHBhdGNoIGZyb20gSmFuIHRvIGZpeCBDKysgd3JhcHBlcgorCisyMDA5LTA4LTI2IDE0OjUzICBkdHMxMgorCisgICAqIGxvY2FsL01ha2VmaWxlLmluLCBsb2NhbC9taWIyYy5yYXctdGFibGUuY29uZjoKKworICAgSW5pdGlhbCBzdGFiIGF0IGEgbWluaW1hbC1oZWxwZXIgKHJhdykgdGFibGUgdGVtcGxhdGUsCisgICBsZWF2aW5nIG1vc3Qgb2YgdGhlIHdvcmsgdG8gdGhlIHVzZXItcHJvdmlkZWQgTUlCIGhhbmRsZXIuCisKIDIwMDktMDgtMjYgMTQ6NTAgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wX2FwaS5jOgpAQCAtMzU5MSw2ICs5NDQxLDE3MyBAQAogICAgZHVlIHRvIDE1LS8zMS1iaXQgbWFza2luZyB3aGVuIHNlbGVjdGluZyByZXF1ZXN0IElEcy4gSWRlbnRpZmllZAogICAgYnkga3JvbWVza3kuCiAKKzIwMDktMDgtMjAgMTM6MzAgIGpzYWZyYW5laworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGx1ZyBsZWFrcyBpbiBpcElmU3RhdHNUYWJsZSwKKyAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlLCBpcFN5c3RlbVN0YXRzVGFibGUgYW5kCisgICBpcERlZmF1bHRSb3V0ZXJUYWJsZS4KKyAgIAorICAgSXQgc2VlbXMgdG8gbWUgdGhlIHRhYmxlcyB3ZXJlIHdyb25nbHkgZ2VuZXJhdGVkIHdpdGgKKyAgIG0yY19kYXRhX2FsbG9jYXRlIG9yCisgICBzb21lb25lIGZvcmdvdCB0byByZWxlYXNlIHRoZSB1c2VyIHByb3ZpZGVkIGRhdGEuCisKKzIwMDktMDgtMTIgMTU6MDAgIHRhbmRlcnMKKworICAgKiBORVdTOgorCisgICBmaXggbGlidG9vbCB2ZXJzaW9uIGluIE5FV1MKKworMjAwOS0wOC0xMSAwMDo0MiAgaGFyZGFrZXIKKworICAgKiBDSEFOR0VTLCBDaGFuZ2VMb2c6CisKKyAgIHdob29wczsgYWRkIHJlYWwgY2hhbmdlbG9nIGVudGVyaWVzIGZvciAucmMxCisKKzIwMDktMDgtMTAgMjM6MTAgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZpeCB0eXBvIGluIHN2bjJjbCBsaW5lCisKKzIwMDktMDgtMTAgMjM6MDUgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMDktMDgtMTAgMjE6MzIgIGhhcmRha2VyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMDktMDgtMTAgMjM6MTAgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZpeCB0eXBvIGluIHN2bjJjbCBsaW5lCisKKzIwMDktMDgtMTAgMjM6MDUgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMDktMDgtMTAgMjE6MzIgIGhhcmRha2VyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMDktMDgtMTAgMjE6MjEgIGhhcmRha2VyCisKKyAgICogIGRpc3QvbWFrZXJlbGVhc2UueG1sLCBtYW4vcGR1X2FwaS4zLCBtYW4vc2Vzc2lvbl9hcGkuMywgICAKKyAgICAgIG1hbi92YXJiaW5kX2FwaS4zOgorCisgICBWZXJzaW9uIG51bWJlciB1cGRhdGUKKworMjAwOS0wOC0wNyAxMDozMiAgZHRzMTIKKworICAgKiBDSEFOR0VTLCBORVdTOgorCisgICBDb3JyZWN0LCBjb25zb2xpZGF0ZSwgY2xhcmlmeSBhbmQgY2xlYW51cCB0aGUgY2F0YWxvZyBvZiBjdXJyZW50CisgICBjaGFuZ2VzLgorCisyMDA5LTA4LTA2IDA3OjU3ICBkdHMxMgorCisgICAqIEZBUToKKworICAgRXhwYW5kIG9uIGV4ZWMgdnMgZXh0ZW5kLgorCiAyMDA5LTA4LTA1IDIwOjA3ICBkdHMxMgogCiAgICAqICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAgIApAQCAtMzYwOCw2ICs5NjI1LDIyIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMjgyMjMzNzogRml4IG1lbW9yeSBsZWFrIGluCiAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZQogCisyMDA5LTA4LTA1IDE1OjE2ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmM6CisKKyAgIEZpeCBtZW1vcnkgbGVhayBpbiBOZXRUb01lZGlhVGFibGUuCisgICBXaGVuIGRlbGV0aW5nIHJvdyBjb250ZXh0LCBkZWxldGUgYWxzbyBhc3NvY2lhdGVkIGRhdGEuCisKKzIwMDktMDgtMDUgMTU6MTUgIGpzYWZyYW5laworCisgICAqIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jOgorCisgICBGaXggbWVtb3J5IGxlYWsgaW4gTmV0VG9NZWRpYVRhYmxlLgorICAgVGhlIGNvbnRhaW5lciB1c2VkIHRvIHRyYWNrIGVudHJpZXMgdG8gZGVsZXRlIGZyb20gY2FjaGUgc2hvdWxkCisgICBiZSByZWxlYXNlZCB3aGVuIGl0J3Mgbm90IG5lZWRlZC4KKwogMjAwOS0wOC0wNSAxNToxMiAganNhZnJhbmVrCiAKICAgICogCkBAIC0zNjQyLDMyICs5Njc1LDE5MiBAQAogICAgYXMgd2VsbCBhcyBhIGxhcmdlciBncm91cC4KICAgIEFsc28gYWRkcmVzc2VzIGJ1ZyAyMTUwMjg1CiAKKzIwMDktMDgtMDQgMjE6MTYgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zdHJ0b3VsbC5jOgorCisgICBzbm1wbGliOiBmcm9tICJCYXJ0IHZhbiBBc3NjaGUgJiBNYWdudXMgRnJvbXJlaWRlIjogTW9yZSB1cGRhdGVzCisgICB0byBzdHJ0b3VsbC5jCisKIDIwMDktMDgtMDQgMTA6NTcgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IGZyb20gIk1hcmN1cyBS/GNrZXJ0IjogZml4IHBvc3NpYmxlIGNyYXNoIHdoZW4KKyAgIENIQU5HRVM6IHNubXBkOiBmcm9tICJNYXJjdXMgUsO8Y2tlcnQiOiBmaXggcG9zc2libGUgY3Jhc2ggd2hlbgogICAgNjQtYml0IGNvdW50ZXJzIGluIGlwU3lzdGVtU3RhdHNUYWJsZSBnZXQgYmlnZ2VyIHRoYW4gMl4zMgogCi0yMDA5LTA3LTI3IDEyOjEzICBoYXJkYWtlcgorMjAwOS0wOC0wMyAxOToyNyAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHNubXBsaWIvc3RydG91bGwuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDI4Mjc3MjI6IGZyb20gIkJhcnQgVmFuIEFzc2NoZSI6IEltcHJvdmUKKyAgIHN0cnRvdWxsIHRvIGJlIGxlc3MgTVNWQy1zcGVjaWZpYworCisyMDA5LTA4LTAzIDE4OjM4ICBtYWdmcgorCisgICAqIG1hbi9NYWtlZmlsZS5pbjoKKworICAgcmVtb3ZlIGFuIG9ic29sZXRlIG1hbnVhbCBwYWdlIGZyb20gdGhlIHNldCBvZiBmaWxlcyB0aGF0IHNob3VsZAorICAgYmUgaW5zdGFsbGVkCisKKzIwMDktMDctMjcgMTI6NDEgIGhhcmRha2VyCisKKyAgICogIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgorCisgICBtYWtlIGRlcGVuZAorCisyMDA5LTA3LTI3IDEyOjExICBoYXJkYWtlcgogCiAgICAqIG1hbi9uZXRzbm1wX0NvbnRhaW5lcl9pdGVyYXRvci4zOgogCi0gICByZW1vdmUgb3V0ZGF0ZSBjYXNlLWNvbmZsaWN0aW5nIG1hbnVhbCBwYWdlCisgICByZW1vdmUgYW4gb2Jzb2xldGUgbWFudWFsIHBhZ2UKIAotMjAwOS0wNy0yNyAxMjowNiAgaGFyZGFrZXIKKzIwMDktMDctMjcgMTI6MDMgIGhhcmRha2VyCiAKICAgICogcGVybC9TTk1QL3QvYnVsa3dhbGsudDoKIAogICAgQ0hBTkdFUzogZnJlZWJzZDogcGF0Y2ggZnJvbSBDZXphcnkgTW9yZ2EgdG8gZml4IGEgbWFrZSB0ZXN0IG9uCiAgICBmcmVlYnNkCiAKKzIwMDktMDctMjcgMTI6MDIgIGhhcmRha2VyCisKKyAgICogIG1hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zLCBtYW4vbmV0c25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfaGFuZGxlci5oLjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9udWxsX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NjYWxhci4zLCBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgbWFuL25ldHNubXBfc25tcF9wZHUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF90YWJsZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgbWFuL25ldHNubXBfdGFibGVfcm93LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90b29scy5oLjMsIG1hbi9uZXRzbm1wX3V0aWwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF93YXRjaGVyLjM6CisKKyAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisKKzIwMDktMDctMjcgMTE6NTIgIGhhcmRha2VyCisKKyAgICogIEZBUSwgTkVXUywgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgZGlzdC9NYWtlZmlsZSwgICAKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMDktMDctMjcgMDg6MzkgIGhhcmRha2VyCisKKyAgICogdGVzdGluZy90ZXN0cy9UMzUwdW5peDoKKworICAgcmV2ZXJ0IGFjY2lkZW50aWFsbHkgYXBwbGllZCBwYXRjaAorCisyMDA5LTA3LTI3IDA4OjM3ICBoYXJkYWtlcgorCisgICAqICB0ZXN0aW5nL3Rlc3RzL1QzNTB1bml4LCB0ZXN0aW5nL3Rlc3RzL1QzNjBkdGxzdWRwLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5jZXJ0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5wcml2LCB0ZXN0aW5nL3Rlc3RzL3Rlc3QtdXNlci5jZXJ0LCAgCisgICAgICAgdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIucHJpdjoKKworICAgYWRkZWQgYSB0ZXN0IGNhc2UgZm9yIHVkcC9kdGxzCisKKzIwMDktMDctMjcgMDg6MzYgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBkb24ndCByZXF1aXJlIGEgc2Vzc2lvbiB0byBjYXJyeSBhIHNlY05hbWUKKworMjAwOS0wNy0yNiAyMTozNCAgYWxleF9iCisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWY6CisKKyAgIFdpbjMyOiBNU1ZDIDYgY29tcGlsZSBmaXhlcyBmb3IgV29ya3NwYWNlIGJ1aWxkLgorCisyMDA5LTA3LTI2IDE4OjIwICBhbGV4X2IKKworICAgKiAgUkVBRE1FLndpbjMyLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N0cnRvdWxsLmMsICAgCisgICAgICB3aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQsIHdpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsLCAgIAorICAgICAgd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpLCB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvbGlic25tcC9saWJzbm1wLmRzcCwgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIC1BZGRlZCBzdHJ0b3VsbCBmdW5jdGlvbiBhbmQgY29uZmlndXJlIGNoZWNrIGZvciBzeXN0ZW1zIHdpdGhvdXQKKyAgIGl0IHN1Y2ggYXMgV2luMzIgTVNWQyA2CisgICAtV2luMzI6IE1TVkMgNiBjb21waWxlIGZpeGVzIC0gcmVxdWlyZXMgbmV3IHN0cnRvdWxsLmMgZmlsZQorICAgLVdpbjMyOiBOZXcgYnVpbGQtYmluYXJ5IHNjcmlwdCB0byBzaW1wbGlmeSBidWlsZGluZyB0aGUgV2luZG93cworICAgYmluYXJ5IHBhY2thZ2UuCisKKzIwMDktMDctMjUgMDU6MzEgIG1hZ2ZyCisKKyAgICogdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQ6CisKKyAgIE1ha2Ugc3VyZSBhIG1lc3NhZ2UgaXMgd3JpdHRlbiBpZiB0aGUgcmVsZXZhbnQgdGFibGUgaXMgbWlzc2luZy4KKwogMjAwOS0wNy0yMyAyMToyOSAgYWxleF9iCiAKICAgICogUkVBRE1FOgogCiAgICBVcGRhdGUgZW1haWwgYWRkcmVzcyBpbiBSRUFETUUuCiAKKzIwMDktMDctMjMgMDE6MDcgIGFsZXhfYgorCisgICAqICB3aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AsICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3A6CisKKyAgIFdpbjMyIE1TVkMgMjAwOCsgZml4ZXMuCisKKzIwMDktMDctMjMgMDA6NTUgIGFsZXhfYgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgsICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL25ldHNubXBtaWJzc2RrLmRzcDoKKworICAgV2luMzIgTVNWQyAyMDA1KyBidWlsZCBmaXhlcy4gVGhhbmtzIHRvIEJhcnQgVmFuIEFzc2NoZS4KKworMjAwOS0wNy0yMSAxMjoyMiAgZHRzMTIKKworICAgKiAgbG9jYWwvbWliMmMuY29udGFpbmVyLmNvbmYsIGxvY2FsL21pYjJjLml0ZXJhdGUuY29uZiwgICAKKyAgICAgIGxvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYsIGxvY2FsL21pYjJjLnJvdy5jb25mLCAgIAorICAgICAgbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgorCisgICBBZGQgc2ltcGxlIGRlYnVnIG91dHB1dCB0byBtaWIyYyB0ZW1wbGF0ZXMuCisKIDIwMDktMDctMjEgMTI6MTMgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgpAQCAtMzY4NiwxMiArOTg3OSw1MiBAQAogCiAgICBVcGRhdGVzIHRvIENPRElORyBzZWN0aW9uLgogCisyMDA5LTA3LTIwIDExOjA5ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliLmg6CisKKyAgIEFkZCBtaXNzaW5nIGhlYWRlciBmaWxlIGZyb20gcGF0Y2ggIzIwNTMyNzMuCisKIDIwMDktMDctMTkgMTU6MDkgIGR0czEyCiAKICAgICogRkFROgogCiAgICBVcGRhdGVzIHRvIENPTVBJTElORyBzZWN0aW9uLgogCisyMDA5LTA3LTE2IDEyOjM4ICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYzoKKworICAgQWRkIElQdjYgb2N0ZXQgY291bnRlcnMuCisgICBOZXcgTGludXgga2VybmVscyAoZS5nLiAyLjYuMzEtcmMyLCBtYXliZSBzb21lIGVhcmxpZXIpIHByb3ZpZGUKKyAgIGNvdW50ZXJzIGZvcgorICAgaW5jb21pbmcvb3V0Z29pbmcgSVB2NiB0cmFmZmljIGZvciBpcFN5c3RlbVN0YXRzVGFibGUgYW5kCisgICBpcElmU3RhdHNUYWJsZS4KKworMjAwOS0wNy0xNSAyMjo0NiAgdGFuZGVycworCisgICAqIHRlc3RpbmcvdGVzdHMvVDM1MHVuaXg6CisKKyAgIHB1dCB0ZW1wb3JhcnkgZGF0YSB0byB3aGVyZSB0aGV5IGJlbG9uZworCisyMDA5LTA3LTExIDIxOjUwICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlOgorCisgICByZWdlbmVyYXRlIGNvbmZpZ3VyZQorCisyMDA5LTA3LTExIDIxOjA0ICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnM6CisKKyAgIGJ1aWxkIGZpeCAoZS5nLiBmb3IgRnJlZUJTRCk6IGFkanVzdCBrdm0gY29uZmlndXJlIHRlc3RzCisKKzIwMDktMDctMTAgMTI6MzUgIGpzYWZyYW5laworCisgICAqIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgQ2hlY2sgSVB2NiBwb3J0IHJhbmdlcyBpbiB0aGUgc2FtZSB3YXkgYXMgSVB2NCBwb3J0cyBhcmUgY2hlY2tlZC4KKwogMjAwOS0wNy0xMCAwNzo0NiAganNhZnJhbmVrCiAKICAgICogCkBAIC0zNzAyLDYgKzk5MzUsNDMgQEAKICAgIEFsc28gZml4IHRoZSBkZWZhdWx0IHR5cGUgZm9eQ0FTTl9JUEFERFJFU1MgaW4gbWliMmMsIHNvIHRoZQogICAgaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYyBjYW4gYmUgc2FmZWx5IHJlZ2VuZXJhdGVkLgogCisyMDA5LTA3LTA5IDIzOjQyICBoYXJkYWtlcgorCisgICAqICB0ZXN0aW5nL3Rlc3RzL1QzMDB1ZHAsIHRlc3RpbmcvdGVzdHMvVDMxMHRjcCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDMyMHVkcHY2LCB0ZXN0aW5nL3Rlc3RzL1QzMzB0Y3B2NiwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDM1MHVuaXg6CisKKyAgIGNsZWFudXAgb2YgdGVzdGluZyBjYXNlcyB0byByZW1vdmUgZG91YmxlIGluY2x1ZGUgYW5kIGRvdWJsZQorICAgZXhwb3J0cworCisyMDA5LTA3LTA5IDIzOjA3ICB0YW5kZXJzCisKKyAgICogdGVzdGluZy90ZXN0cy9UMzAwdWRwOgorCisgICBiZSBjb25zaXN0ZW50IHdpdGggdGhlIFRDUC9JUHY0IHRlc3QKKworMjAwOS0wNy0wOSAyMjoxOCAgaGFyZGFrZXIKKworICAgKiAgdGVzdGluZy90ZXN0cy9TdHJhbnNwb3J0LCB0ZXN0aW5nL3Rlc3RzL1QzMDB1ZHAsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QzMTB0Y3AsIHRlc3RpbmcvdGVzdHMvVDMyMHVkcHY2LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMzMwdGNwdjYsIHRlc3RpbmcvdGVzdHMvVDM1MHVuaXgsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QzOTlhbGlhczoKKworICAgbmV3IHRlc3RzIGZvciB0ZXN0aW5nIGRlZmluZWQgdHJhbnNwb3J0cworCisyMDA5LTA3LTA5IDIyOjE3ICBoYXJkYWtlcgorCisgICAqIHRlc3RpbmcvVEVTVENPTkYuc2gsIHRlc3RpbmcvZXZhbF90b29scy5zaDoKKworICAgYSBDT05GSUdBUFAgbWFjcm8gZm9yIGFkZGluZyBzdHVmZiB0byBzbm1wLmNvbmYKKworMjAwOS0wNy0wOCAxNToxMiAganNhZnJhbmVrCisKKyAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CisKKyAgIEZpeCBnZXRob3N0YnlhZGRyIHBhcmFtZXRlciwgbmV0c25tcF91ZHBfZm10YWRkciBuZXZlciByZXR1cm5lZCBhCisgICBob3N0bmFtZS4KKwogMjAwOS0wNy0wNyAxNTo0NiAganNhZnJhbmVrCiAKICAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmMsICAgCkBAIC0zNzE5LDIzICs5OTg5LDg1IEBACiAgICBwcm9jZXNzaW5nIC0gdV9sb25nIGNhbiBtYWtlIHByb2JsZW1zIG9uIGJpbiBlbmRpYW4gNjQgYml0CiAgICBzeXN0ZW1zCiAKLTIwMDktMDYtMTYgMTU6MTkgIHJzdG9yeQorMjAwOS0wNi0yOSAxMzo1MiAgaGFyZGFrZXIKKworICAgKiBDSEFOR0VTOgorCisgICByZW1vdmUgZW50cnkgZm9yIGEgcGF0Y2ggdGhhdCBnb3QgcmV2ZXJ0ZWQKKworMjAwOS0wNi0yNSAxNToyNCAgZHRzMTIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuaW46CisKKyAgIE1vdmUgbm9uLWNvcmUgZGF0YSB0eXBlcyBpbnRvIGEgc2VwYXJhdGUgKGxpYnJhcnkgaW50ZXJuYWxzKQorICAgaGVhZGVyIGZpbGUuCisgICBNb3ZlIHRoZSBsYXJnZV9mZF9zZXQgZGF0YSBzdHJ1Y3R1cmUgaW50byB0aGlzIGhlYWRlciBmaWxlLgorCisyMDA5LTA2LTE4IDIyOjI5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvc25tcF9wZXJsLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBhbGxvdyBidWlsZGluZyB3aXRoIFBlcmwgdmVyc2lvbnMgdGhhdCBsYWNrCisgICBQRVJMX0VYSVRfREVTVFJVQ1RfRU5ECisKKzIwMDktMDYtMTggMjI6MTMgIHRhbmRlcnMKKworICAgKiBhcHBzL3NubXBuZXRzdGF0L2lmLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBidWlsZCBmaXggZm9yIFRydTY0IFVuaXggYW5kIElSSVg6IG1vdmUgX1hPUEVOKgorICAgZGVmaW5pdGlvbnMgdG8gd2hlcmUgdGhleSBhcmUgaW4gNS40LnggYW5kIGVhcmxpZXIKKworMjAwOS0wNi0xOCAwNjowMiAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ2xlYW4gdXAgLS13aXRoLW5sIGNvbmZpZ3VyYXRpb24KKyAgICogIE1vdmUgdGhlIF9BUkdfV0lUSCB0byBjb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSAgMjAwOS0wNi0xNiAxNToxNworICAgICAgIHJzdG9yeQorCiAKICAgICogc25tcGxpYi9jb250YWluZXIuYzoKIAogICAgY2hlY2sgZm9yIG51bGwgcG9pbnRlciBiZWZvcmUgZGVyZWYKIAorMjAwOS0wNi0xNSAyMzo1MiAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBhZGQgY29tbWVudCBleHBsYWluaW5nIG5vdCBxdWl0ZSBvYnZpb3VzIGxhY2sgb2YgbWVtbW92ZQorCisyMDA5LTA2LTE1IDE5OjMyICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKKworICAgUmVtb3ZlICNpZiAwIGNvbW1lbnRlZCBjb2RlCisKIDIwMDktMDYtMTUgMTU6MjUgIGR0czEyCiAKICAgICogRkFROgogCiAgICBVcGRhdGVzIHRvIEFHRU5UIHNlY3Rpb24uCiAKLTIwMDktMDYtMTQgMjI6MDEgIHRhbmRlcnMKKzIwMDktMDYtMTMgMDE6MTIgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCi0gICBwb3J0YWJpbGl0eSBmaXggKHN5bmMgd2l0aCA1LjUpCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI1NjQ1NTI6IGZyb20gYWhtYWtlOiBwcm92aWRlIGxpYm5ldGxpbmsKKyAgIHN1cHBvcnQgZm9yIGxvYWRpbmcgdGhlIHRjcCB0YWJsZQorCisyMDA5LTA2LTEyIDE5OjAyICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNDAwMTAxOiByZW1vdmUgZGVsZXRlZCBpbnRlcmZhY2VzIGZyb20KKyAgIGlmVGFibGUKIAogMjAwOS0wNi0xMSAyMzowOSAgaGFyZGFrZXIKIApAQCAtMzc0NCwxOSArMTAwNzYsMzYgQEAKICAgICAgIHdpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgsICAgCiAgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3A6CiAKLSAgIENIQU5HRVM6IHdpbjMyOiBQQVRDSDogMjY5Mzc0NjogZnJvbSBidmFzc2NoZTogaW1wcm92ZWQgc29ja2V0IHN0YXJ0dXAgc3VwcG9ydAorICAgQ0hBTkdFUzogd2luMzI6IFBBVENIOiAyNjkzNzQ2OiBmcm9tIGJ2YXNzY2hlOiBpbXByb3ZlZCBzb2NrZXQKKyAgIHN0YXJ0dXAgc3VwcG9ydAogCiAyMDA5LTA2LTExIDIyOjU3ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMDEyNDAyOiBkb24ndCBmYWlsIG9uIGZhaWx1cmUgdG8gbG9vayB1cCBpbnRlcmZhY2UgZXJyb3IgY291bnRlcnMuCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIwMTI0MDI6IGRvbid0IGZhaWwgb24gZmFpbHVyZSB0byBsb29rIHVwCisgICBpbnRlcmZhY2UgZXJyb3IgY291bnRlcnMuCisKKzIwMDktMDYtMTEgMjI6MDMgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgorCisgICByZXZlcnQgcHJldmlvdXMgY29tbWl0IHRvIG1ha2UgY2lyY3VsYXIgZGVwZW5kZW5jaWVzIGJhY2sgdG8KKyAgIHRoZWlyIHJlZ3VsYXIgaW5zYW5lIG9yZGVyaW5nOyBJIGRvbid0IGxpa2UgdGhpcyBzaXR1YXRpb24gYXQgYWxsCisKKzIwMDktMDYtMTEgMjE6NDIgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgorCisgICBpbmNsdWRlIGxhcmdlX2ZkX3NldC5oIGJlZm9yZSB0eXBlZGVmaW5nIHNvbWV0aGluZyBiYXNlZCBvbiB0aGUKKyAgIHN0cnVjdHVyZQogCiAyMDA5LTA2LTAzIDEyOjM1ICBkdHMxMgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnhzOgogCi0gICBDSEFOR0VTOiBwZXJsOiBQQVRDSEVTOiAyNzkzODU3OiBSZXBvcnQgZmFpbGVkIGFzeW5jaHJvbm91cyByZXF1ZXN0cy4KKyAgIENIQU5HRVM6IHBlcmw6IFBBVENIRVM6IDI3OTM4NTc6IFJlcG9ydCBmYWlsZWQgYXN5bmNocm9ub3VzCisgICByZXF1ZXN0cy4KIAogMjAwOS0wNi0wMyAxMTo0NiAgZHRzMTIKIApAQCAtMzc2OSw3ICsxMDExOCw4IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jOgogCi0gICBQQVRDSDogMjE4MjU5MjogQ2xlYW4gdXAgdmFjbUNvbnRleHRUYWJsZSBhZnRlciB1bnJlZ2lzdHJhdGlvbnMKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjE4MjU5MjogQ2xlYW4gdXAgdmFjbUNvbnRleHRUYWJsZSBhZnRlcgorICAgdW5yZWdpc3RyYXRpb25zCiAgICBQYXRjaCBzdXBwbGllZCBieSBKb2huIEZvcnN5dGgKIAogMjAwOS0wNi0wMyAxMDoxMiAgZHRzMTIKQEAgLTM3ODAsMTggKzEwMTMwLDIxIEBACiAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsICAgCiAgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcHYzLmM6CiAKLSAgIENIQU5HRVM6IFBBVENIOiAyNzk3MjUxOiBTdXBwb3J0IG11bHRpcGxlIGluaXRpYWxpc2F0aW9uIGFuZCBzaHV0ZG93biwgZml4IG1lbW9yeSBsZWFrcworICAgQ0hBTkdFUzogUEFUQ0g6IDI3OTcyNTE6IFN1cHBvcnQgbXVsdGlwbGUgaW5pdGlhbGlzYXRpb24gYW5kCisgICBzaHV0ZG93biwgZml4IG1lbW9yeSBsZWFrcwogICAgUGF0Y2ggc3VwcGxpZWQgYnkgSXZvc2gKIAogMjAwOS0wNi0wMSAxNTo1MyAgZHRzMTIKIAogICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKIAotICAgQ0hBTkdFUzogZG9jczogUEFUQ0hFUzogMjc4ODA3MjogRG9jdW1lbnQgJ2xvZ21hdGNoJyBmdW5jdGlvbmFsaXR5LgorICAgQ0hBTkVHUzogZG9jczogUEFUQ0hFUzogMjc4ODA3MjogRG9jdW1lbnQgJ2xvZ21hdGNoJworICAgZnVuY3Rpb25hbGl0eS4KIAogMjAwOS0wNi0wMSAxNTo1MCAgZHRzMTIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLCBzbm1wbGliL21pYi5jLCAgIAorICAgICAgc25tcGxpYi9wYXJzZS5jLCBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMsICAgCiAgICAgICBzbm1wbGliL3N5c3RlbS5jLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKICAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCkBAIC0zNzk5LDE3ICsxMDE1MiwzMiBAQAogCiAyMDA5LTA2LTAxIDE1OjM3ICBkdHMxMgogCi0gICAqICBhY2xvY2FsLm00LCBjb25maWd1cmUsIGxvY2FsL3NubXBjb25mLmRpci9zbm1wZC1kYXRhL21vbml0b3IsICAgCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2t2bV9wcm9jLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jLCBjb25maWd1cmUsICAgCisgICAgICBsb2NhbC9zbm1wY29uZi5kaXIvc25tcGQtZGF0YS9tb25pdG9yLCBtNC9saWJ0b29sLm00LCAgIAogICAgICAgbWFuL3NubXBkLmNvbmYuNS5kZWYsIG1hbi9zbm1wZC5leGFtcGxlcy41LmRlZjoKIAotICAgQ0hBTkdFUzogZG9jczogUEFUQ0g6IDI3OTU3Mzk6IEZpeCBpbmNvcnJlY3QgZGlzay9maWxlIHNpemUgZGVzY3JpcHRpb25zICYgdW5pdCBzcGVjaWZpZXJzCisgICBDSEFOR0VTOiBkb2NzOiBQQVRDSDogMjc5NTczOTogRml4IGluY29ycmVjdCBkaXNrL2ZpbGUgc2l6ZQorICAgZGVzY3JpcHRpb25zICYgdW5pdCBzcGVjaWZpZXJzCiAKIDIwMDktMDYtMDEgMTM6MTEgIGR0czEyCiAKICAgICogRVhBTVBMRS5jb25mLmRlZjoKIAogICAgUmV3b3JrIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIHRvIG1hdGNoIGN1cnJlbnQgc25tcGQuY29uZig1KQotICAgc3RydWN0dXJlLCBhbmQgbW9yZSBjbGVhcmx5IGlsbHVzdHJhdGUgY3VycmVudCBiZXN0IHByYWN0aXNlLgorICAgc3RydWN0dXJlLAorICAgYW5kIG1vcmUgY2xlYXJseSBpbGx1c3RyYXRlIGN1cnJlbnQgYmVzdCBwcmFjdGlzZS4KKworMjAwOS0wNS0zMCAwNjo1OCAgbWFnZnIKKworICAgKiBhZ2VudC9taWJfbW9kdWxlcy5jOgorCisgICBSZW1vdmUgdW51c2VkIGluY2x1ZGUuCiAKIDIwMDktMDUtMjkgMDk6MTQgIGR0czEyCiAKQEAgLTM4MTksMTggKzEwMTg3LDQyIEBACiAKIDIwMDktMDUtMjkgMDk6MDggIGR0czEyCiAKLSAgICogbG9jYWwvcGFzc3Rlc3QucGwsIG1pYnMvTWFrZWZpbGUuaW4sIG1pYnMvTkVULVNOTVAtUEFTUy1NSUIudHh0OgorICAgKiAgbG9jYWwvcGFzc3Rlc3QsIGxvY2FsL3Bhc3N0ZXN0LnBsLCBtaWJzL01ha2VmaWxlLmluLCAgIAorICAgICAgbWlicy9ORVQtU05NUC1QQVNTLU1JQi50eHQ6CiAKICAgIFJld29yayAicGFzc3Rlc3QiIGV4YW1wbGVzIHRvIGZ1bGx5IHZhbGlkYXRlIEdFVE5FWFQgcmVxdWVzdHMsCiAgICBhbmQgdXNlIGEgbGVnaXRpbWF0ZSBNSUIgc3RydWN0dXJlIGZvciBvdXRwdXQuCiAgICBBZGQgYW4gZXhhbXBsZSBNSUIgdG8gZGVmaW5lIHRoYXQgc3RydWN0dXJlLgogCi0yMDA5LTA1LTI4IDEyOjU1ICBkdHMxMgorMjAwOS0wNS0yOCAxMjo0MSAgZHRzMTIKIAogICAgKiBGQVE6CiAKLSAgIFN5bmNocm9uaXNlIHdpdGggbGF0ZXN0IEZBUQotICAgKGluY2x1ZGluZyA1LjUgcmV2aXNpb25zIHVwIHRvIE1JQnMgc2VjdGlvbikKKyAgIFVwZGF0ZXMgdG8gTUlCcyBzZWN0aW9uCisKKzIwMDktMDUtMjggMTE6NTYgIGR0czEyCisKKyAgICogRkFROgorCisgICBUd2VhayBwaHJhc2luZyBvZiBhbiAob3ZlcmxvbmcpIHF1ZXN0aW9uIGluIHRoZSBQZXJsIHNlY3Rpb24KKworMjAwOS0wNS0yOCAxMTozMSAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIE5ldyBlbnRyeSBpbiB0aGUgQXBwbGljYXRpb25zIHNlY3Rpb24KKworMjAwOS0wNS0yOCAxMDo0MSAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIFVwZGF0ZXMgdG8gQXBwbGljYXRpb25zIHNlY3Rpb24KKworMjAwOS0wNS0yNyAxNToyNiAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIFVwZGF0ZXMgdG8gR0VORVJBTCBzZWN0aW9uLgogCiAyMDA5LTA1LTE5IDE3OjUwICBhbGV4X2IKIApAQCAtMzg0OSw3ICsxMDI0MSw5IEBACiAKICAgICogc25tcGxpYi9zY2FwaS5jOgogCi0gICBDSEFOR0VTOiBidWlsZDogQlVHOiAyNzgyNzAwOiBidWlsZCBmYWlsdXJlIHdoZW4gdXNpbmcgLS13aXRoLXBrY3Mgb24gU29sYXJpcworICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMjc4MjcwMDogYnVpbGQgZmFpbHVyZSB3aGVuIHVzaW5nCisgICAtLXdpdGgtcGtjcyBvbgorICAgU29sYXJpcwogCiAyMDA5LTA1LTE1IDE0OjU5ICBqc2FmcmFuZWsKIApAQCAtMzg3MSwyOSArMTAyNjUsNTAgQEAKIAogICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckNvbmYuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IEFsbG93ICJtb25pdG9yIiB0byBoYW5kbGUgbmVnYXRpdmUgdGhyZXNob2xkIHZhbHVlcy4KKyAgIENIQU5HRVM6IHNubXBkOiBBbGxvdyAibW9uaXRvciIgdG8gaGFuZGxlIG5lZ2F0aXZlIHRocmVzaG9sZAorICAgdmFsdWVzLgogICAgUmVwb3J0ZWQgYnkgUmljaGFyZCBHaXBwcy4KIAogMjAwOS0wNS0xMyAyMjozMiAgdGFuZGVycwogCiAgICAqIHNubXBsaWIvdmFjbS5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI3OTE0MTc6IGZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoIC1EQUxMCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI3OTE0MTc6IGZpeCBzbm1wZCBzZWdmYXVsdCB3aGVuIHJ1biB3aXRoCisgICAtREFMTAogICAgUGF0Y2ggc3VwcGxpZWQgYnkgUm9uIFJvc2tlbnMuCiAKIDIwMDktMDUtMTMgMDg6MDIgIGR0czEyCiAKICAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CiAKLSAgIEJyaW5nIGRvY3VtZW50YXRpb24gb2Ygbm90aWZpY2F0aW9uRXZlbnQgc3ludGF4IGludG8gbGluZSB3aXRoIHJlYWxpdHkuCi0gICAoVXNlcyAiLW0iIHJhdGhlciB0aGFuICItbiIgdG8gcmVnaXN0ZXIgc3RhbmRhcmQgTUlCIHBheWxvYWQgb2JqZWN0cykKKyAgIEJyaW5nIGRvY3VtZW50YXRpb24gb2Ygbm90aWZpY2F0aW9uRXZlbnQgc3ludGF4IGludG8gbGluZSB3aXRoCisgICByZWFsaXR5LgorICAgKFVzZXMgIi1tIiByYXRoZXIgdGhhbiAiLW4iIHRvIHJlZ2lzdGVyIHN0YW5kYXJkIE1JQiBwYXlsb2FkCisgICBvYmplY3RzKQogICAgSW5jb25zaXN0ZW5jeSByZXBvcnRlZCBieSBSaWNoYXJkIEdpcHBzLgogCi0yMDA5LTA1LTEyIDIzOjI2ICBhbGV4X2IKKzIwMDktMDUtMTAgMjE6MTIgIGFsZXhfYgogCi0gICAqIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgsIHBlcmwvYWdlbnQvYWdlbnQueHM6CisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wZC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXBkc2RrL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbjoKIAotICAgV2luMzI6IEJ1aWxkIGZpeGVzIC0gY2hhbmdlIHVuc2lnbmVkIGxvbmcgbG9uZyB0byB1aW50NjRfdC4KKyAgIFdpbjMyOiBBZGRlZCBhdXRvbWF0aWMgbWFuaWZlc3QgbWVyZ2luZyB3aXRoIG10LmV4ZSBmb3IgTVNWQyAyMDA4CisgICBldGMuCisKKzIwMDktMDUtMDggMTM6MTIgIGFsZXhfYgorCisgICAqIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jOgorCisgICBDaGFuZ2VzOiBXaW4zMjogQWRkIHN1cHBvcnQgZm9yIFdpbmRvd3MgNywgVmlzdGEgYW5kIDIwMDggZm9yCisgICB3aW5FeHRETEwuCisKKzIwMDktMDUtMDggMDI6MDcgIGFsZXhfYgorCisgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKKworICAgV2luMzI6IEJ1aWxkIGZpeGVzIGZvciBETEwuCiAKIDIwMDktMDUtMDcgMjM6MDAgIHRhbmRlcnMKIApAQCAtMzkwMSwxNyArMTAzMTYsMzE1IEBACiAKICAgIGJ1aWxkIGZpeCBmb3IgSFAtVVg6IGluY2x1ZGUgPHN5cy9wYXJhbS5oPiBmb3IgREVWX0JTSVpFCiAKKzIwMDktMDUtMDcgMDU6MTEgIG5iYQorCisgICAqIGFnZW50L3NubXBfcGVybC5oOgorCisgICBVcHMsIG1pc3NlZCBhIG5ldyBwcm90b3R5cGUgaGVhZGVyCisKKzIwMDktMDUtMDYgMjI6MjYgIG5iYQorCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgorCisgICBBIG1hbiBsaW5lIGNhbm5vdCBzdGFydCB3aXRoIGEgJworCisyMDA5LTA1LTA2IDIyOjA3ICBuYmEKKworICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIElQdjYgYWRyZXNzZXMgYXJlIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQgdGhlbiAzMmJpdHMKKworMjAwOS0wNS0wNiAyMjowNiAgbmJhCisKKyAgICogIGFnZW50L2FnZW50X3N5c09SVGFibGUuYywgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oLCBzbm1wbGliL29pZF9zdGFzaC5jOgorCisgICBTcHJpbmtsZSBzb21lIGNvbnN0LW5lc3Mgd2hlcmUgcmVsZXZhbnQKKworMjAwOS0wNS0wNiAyMjowMiAgbmJhCisKKyAgICogc25tcGxpYi9zY2FwaS5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKKworICAgVHJpdmlhbCB3YXJuaW5nIGZpeGVzCisKKzIwMDktMDUtMDYgMjI6MDAgIG5iYQorCisgICAqIG1pYnMvcmZjbWlicy5kaWZmOgorCisgICBIbW1tLCBJQU5BIGZpeGVkIHRoZWlyIGJ1ZyB0b28KKworMjAwOS0wNS0wNiAyMTo1OSAgbmJhCisKKyAgICogUkVBRE1FOgorCisgICBVcGRhdGUgZW1haWwgdG8gY3VycmVudAorCisyMDA5LTA1LTA2IDIxOjU5ICBuYmEKKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5jLCAgIAorICAgICAgYWdlbnQvc25tcF9hZ2VudC5jLCBhZ2VudC9zbm1wX3BlcmwuYywgYWdlbnQvc25tcF92YXJzLmMsICAgCisgICAgICBhZ2VudC9zbm1wZC5jLCBwZXJsL1NOTVAvU05NUC54cywgICAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54cywgc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMsIAorICAgICAgICBzbm1wbGliL3NubXBfc2VydmljZS5jOgorCisgICBUcml2aWFsIHdhcm5pbmcgZml4ZXMKKworMjAwOS0wNS0wNiAyMTo0OSAgbmJhCisKKyAgICogYXBwcy9zbm1wdHJhcGRfbG9nLmM6CisKKyAgIGNvbnRleHRFbmdpbmVJRCBpcyBhIGhleHN0cmluZywgbm90IGFuIG9iamVjdCBpZGVudGlmaWVyCisKKzIwMDktMDUtMDYgMjE6NDUgIG5iYQorCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYywgYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMsICAgCisgICAgICBzbm1wbGliL2FzbjEuYywgc25tcGxpYi9kaXJfdXRpbHMuYywgc25tcGxpYi9pbnQ2NC5jLCAgIAorICAgICAgc25tcGxpYi9taWIuYywgc25tcGxpYi9yZWFkX2NvbmZpZy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYywgc25tcGxpYi9zbm1wX2FsYXJtLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi9zbm1wdXNtLmMsICAgCisgICAgICBzbm1wbGliL3NubXB2My5jOgorCisgICBGaXggZm9ybWF0IHdhcm5pbmdzIGZyb20gZGVidWcgb3V0cHV0CisKKzIwMDktMDUtMDYgMjA6NDUgIG5iYQorCisgICAqIG1pYnMvc21pc3RyaXA6CisKKyAgIFByb3Blcmx5IHJlY29nbml6ZSBtZXNzYWdlIHN5bnRheCBtb2R1bGVzICh0byBiZSBhYmxlIHRvIGlnbm9yZQorICAgdGhlbSkKKworMjAwOS0wNS0wNiAyMDozNiAgbmJhCisKKyAgICogbWlicy9yZmNsaXN0OgorCisgICBSRkMgdXBkYXRlcworCisyMDA5LTA1LTA2IDIwOjM1ICBuYmEKKworICAgKiBtaWJzL3JmY21pYnMuZGlmZjoKKworICAgU3ludGF4IGZpeCBmb3IgY3VycmVudCBJQU5BLVBSSU5URVItTUlCCisKKzIwMDktMDUtMDYgMjA6MzQgIG5iYQorCisgICAqIG1pYnMvSUFOQWlmVHlwZS1NSUIudHh0OgorCisgICBVcGRhdGUgdG8gY3VycmVudCBJQU5BIHZlcnNpb24KKworMjAwOS0wNS0wNCAxMzo0NyAgYWxleF9iCisKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgorCisgICBXaW4zMjogQnVpbGQgZml4ZXMgZm9yIERMTC4KKworMjAwOS0wNS0wMSAxNTo0MyAgbWFnZnIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oLCBzbm1wbGliL3NubXBfZGVidWcuYzoKKworICAgTkVXUzogc25tcGxpYjogU3RvcCB1c2luZyBhIGZpeGVkIHN0cmluZyBmb3IgaW5kZW50YXRpb24uIFJlbW92ZQorICAgdGhlIERFQlVHSU5ERU5UKCkgbWFjcm8gKHRoYXQgZGlkIG5vdGhpbmcpLiBDaGFuZ2UgdGhlIG1lYW5pbmcgb2YKKyAgIHRoZSBpbnRlcm5hbCBfX0RCR0lOREVOVCgpIG1hY3JvIHRvIHJldHVybiB0aGUgbnVtYmVyIG9mIHNwYWNlcworICAgdG8gaW5kZW50IGluc3RlYWQgb2YgYSBzdHJpbmcgdGhhdCByZXByZXNlbnQgdGhlIGluZGVudGF0aW9uCisgICBsZXZlbC4gRGVwcmVjYXRlIHRoZSBkZWJ1Z19pbmRlbnQgZnVuY3Rpb24uCisKKzIwMDktMDQtMzAgMDY6NTcgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmY6CisKKyAgIENIQU5HRVM6IHNubXBkOiBVc2Ugc3RhdGljIHdhdGNoZXJfaW5mbyBmb3IgYWxsIHdhdGNoZWQgdmFyaWFibGVzCisgICBhbmQgaW4gaW50X3dhdGNoLgorCisyMDA5LTA0LTMwIDA2OjQxICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogU2VwYXJhdGUgaW5pdGlhbGl6YXRpb24gZnJvbSBhbGxvY2F0aW9uIGZvcgorICAgbmV0c25tcF93YXRjaGVyX2luZm8gc3RydWN0dXJlcyB0byBtYWtlIGl0IHBvc3NpYmxlIHRvIHVzZQorICAgc3RhdGljYWxseSBhbGxvY2F0ZWQgZGF0YS4KKworMjAwOS0wNC0zMCAwNjozNCAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXBEVExTVURQRG9tYWluLmM6CisKKyAgIEFkZCBtaXNzaW5nIHJldHVybiB2YWx1ZS4KKworMjAwOS0wNC0zMCAwMDoxOCAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgZG9jdW1lbnQgdGhlIERUTFMgc3VwcG9ydDsgc2VtaSBkb2N1bWVudCB0aGUgU1NIIHN1cHBvcnQgYW5kCisgICBkb2N1bWVudCB0aGUgLXMgc3dpdGNoIHRvIG1hbnkgVkFDTSBzZXR0aW5ncworCisyMDA5LTA0LTI5IDIzOjU0ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYzoKKworICAgcHJvdGVjdCBhZ2FpbnN0IGNvbm5lY3Rpb24gb3BlbmluZyBlcnJvcnMgYW5kIGZyZWUgbWVtb3J5IG9uCisgICBmYWlsdXJlcworCisyMDA5LTA0LTI5IDEyOjE5ICBhbGV4X2IKKworICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgV2luMzI6IFVwZGF0ZSBkZWZpbmVzIGZvciBfV0lOMzJfV0lOTlQgYW5kIE5URERJX1ZFUlNJT04gdG8KKyAgIHN1cHBvcnQgV2luZG93cyAyMDAwIGFuZCBoaWdoZXIgYW5kIGFkZCBJUFY2IGRlZmluZSB0byBhbGxvdyBJUFY2CisgICBjb2RlIHRvIGNvbXBpbGUuCisKKzIwMDktMDQtMjggMDY6MzQgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2xpbnV4LmM6CisKKyAgIHNubXBkLCBMaW51eDogUmVtb3ZlIHNvbWUgdW51c2VkIHZhcmlhYmxlcy4KKworMjAwOS0wNC0yOCAwNjowNyAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jOgorCisgICBzbm1wZDogQWRkIG1pc3NpbmcgYXJndW1lbnQgdG8gcHJpbnRmLWxpa2UgY2FsbC4KKworMjAwOS0wNC0yOCAwNTo1MyAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmM6CisKKyAgIHNubXBkOiBNYXJrIG1vcmUgb2lkcyBhcyBjb25zdC4KKworMjAwOS0wNC0yOCAwNTo1MSAgbWFnZnIKKworICAgKiBzbm1wbGliL21pYi5jOgorCisgICBSZXR1cm4gYSB2YWx1ZSBmcm9tIHNwcmludF9yZWFsbG9jX3ZhbHVlIGV2ZW4gaWYgbm8gc3VidHJlZSBpcworICAgbG9jYXRlZC4KKworMjAwOS0wNC0yOCAwMToxMiAgYWxleF9iCisKKyAgICogIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5jLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBXaW4zMjogTVNWQzogT25seSB1c2UgV2luZG93cyBBUEkgZnVuY3Rpb25zIGF2YWlsYWJsZSBvbiBXaW5YUCBvcgorICAgYmVmb3JlIChJUFY2KSBvciAyMDAwIG9yIGJlZm9yZSAobm8gSVBWNikuCisKKzIwMDktMDQtMjYgMjM6MzAgIGFsZXhfYgorCisgICAqICB3aW4zMi9NYWtlZmlsZS1hcHBzLmluLCB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXBkL01ha2VmaWxlLmluLCB3aW4zMi9zbm1wZHNkay9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHdpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluLCB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46CisKKyAgIFdpbjMyOiBSZW1vdmUgbWFjaGluZSB0eXBlIG9mIEkzODYgZnJvbSBMSU5LMzJfRkxBR1MgdG8gYWxsb3cKKyAgIGNvbXBpbGluZyB3aXRoIE1TVkMgMjAwOCBhcyBlaXRoZXIgMzIgb3IgNjQtYml0LgorCisyMDA5LTA0LTI2IDE3OjM4ICBhbGV4X2IKKworICAgKiAgd2luMzIvTWFrZWZpbGUtYXBwcy5pbiwgd2luMzIvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwgd2luMzIvc25tcGQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wZHNkay9NYWtlZmlsZS5pbiwgd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW46CisKKyAgIENIQU5HRVM6IFdpbjMyOiBCdWlsZCBmaXhlcyBmb3IgTVNWQyAyMDA4LiBDb3B5IGFuZCBjbGVhbnVwCisgICBtYW5pZmVzdCBmaWxlcy4KKworMjAwOS0wNC0yNiAxNToyMSAgYWxleF9iCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgV2luMzI6IFJlLWVuYWJsZSBwYXNzIGFuZCBwYXNzX3BlcnNpc3QgQ291bnRlcjY0IGZvciBNU1ZDLgorCisyMDA5LTA0LTI2IDE0OjM0ICBhbGV4X2IKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oLCBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsIHdpbjMyL2J1aWxkLnBsLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogV2luMzI6IEJ1aWxkIGZpeGVzIGZvciBNU1ZDIDIwMDguIElGVFlQRSBpcyBkZWZpbmVkIGJ5CisgICBNU1ZDIDIwMDgsIHNvIGludGVyZmFjZXMuYyB2YXJpYWJsZXMgd2VyZSBjaGFuZ2VkIHRvIE5FVFNOTVBfLgorCiAyMDA5LTA0LTI2IDEzOjA2ICBhbGV4X2IKIAogICAgKiBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYzoKIAogICAgV2luMzI6IFVwZGF0ZSBidWlsZCBpbnN0cnVjdGlvbnMgaW4gY29tbWVudHMuCiAKKzIwMDktMDQtMjQgMTM6MjggIGhhcmRha2VyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgZml4IHRoZSBBU05fT1BBUVVFIHBhdGNoIHRoYXQgd2FzIGNvbW1pdGVkIHdpdGhvdXQgcHJvcGVyIGRpZmYKKyAgIGNvbnRleHQKKwogMjAwOS0wNC0yNCAwNzozMSAgdGFuZGVycwogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNDoKIAotICAgQ0hBTkdFUzogSFAtVVg6IEJVRzogMjc3OTQ3MjogRmlsZXN5c3RlbXMgbWlzc2luZyBpbiBoclN0b3JhZ2UgdGFibGUgb24gSFAtVVggMTEuMzEKKyAgIENIQU5HRVM6IEhQLVVYOiBCVUc6IDI3Nzk0NzI6IEZpbGVzeXN0ZW1zIG1pc3NpbmcgaW4gaHJTdG9yYWdlCisgICB0YWJsZSBvbiBIUC1VWCAxMS4zMQogICAgKGFsbG93IGZvciBtbnR0YWIgdGhhdCBpcyBhIGNoYXJhY3RlciBzcGVjaWFsIGRldmljZSkKIAogMjAwOS0wNC0yNCAwMTozNiAgYWxleF9iCkBAIC0zOTIxLDE4ICsxMDYzNCw3NCBAQAogCiAgICBDSEFOR0VTOiBXaW4zMjogQlVHOiAyNzc5NTQxIEZpeGVkIGhhbmRsZSBsZWFrIGluIHBhc3NfcGVyc2lzdC4KIAotMjAwOS0wNC0yMyAyMzoxNCAgdGFuZGVycwotCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgotCi0gICBDSEFOR0VTOiBBSVg6IEJVRzogMjcxMjY3MDogQWdlbnQgY3Jhc2hlcyBvbiBBSVggd2l0aCBoclN0b3JhZ2UKLQogMjAwOS0wNC0yMyAyMjo1MyAgaGFyZGFrZXIKIAotICAgKiBzbm1wbGliL3NubXBfYWxhcm0uYzoKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oLCBzbm1wbGliL3NubXBfYWxhcm0uYzoKIAogICAgZml4IEMrKyBzdHlsZSBjb21tZW50cwogCisyMDA5LTA0LTIzIDIyOjI1ICBoYXJkYWtlcgorCisgICAqICBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgbWFuL25ldHNubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMywgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9vbGRfYXBpLjMsIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywgbWFuL25ldHNubXBfcm93X21lcmdlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zY2FsYXIuMywgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLCBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdG9vbHMuaC4zLCBtYW4vbmV0c25tcF91dGlsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorCisgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorCisyMDA5LTA0LTIzIDIyOjIzICBoYXJkYWtlcgorCisgICAqICBtYW4vY29uZmlnX2FwaS4zLCBtYW4vcGR1X2FwaS4zLCBtYW4vc2Vzc2lvbl9hcGkuMywgICAKKyAgICAgIG1hbi92YXJiaW5kX2FwaS4zOgorCisgICBpbml0aWFsIGRveHlnZW4gZXh0cmFjdHMgZm9yIHRoZSBuZXcgaGVhZGVycworCisyMDA5LTA0LTIzIDIyOjE5ICBoYXJkYWtlcgorCisgICAqICBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuYWMsIGRpc3QvTWFrZWZpbGUsICAgCisgICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CisKKyAgIFZlcnNpb24gbnVtYmVyIHVwZGF0ZQorCiAyMDA5LTA0LTIzIDIyOjE2ICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmM6CkBAIC0zOTQxLDI4ICsxMDcxMCw5MSBAQAogCiAyMDA5LTA0LTIzIDIyOjEwICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0OgogCi0gICBDSEFOR0VTOiBIUC1VWDogQlVHOiAyNzc5NDcyOiBGaWxlc3lzdGVtcyBtaXNzaW5nIGluIGhyU3RvcmFnZSB0YWJsZSBvbiBIUC1VWCAxMS4zMQorICAgQ0hBTkdFUzogSFAtVVg6IEJVRzogMjc3OTQ3MjogRmlsZXN5c3RlbXMgbWlzc2luZyBpbiBoclN0b3JhZ2UKKyAgIHRhYmxlIG9uCisgICBIUC1VWCAxMS4zMQogCiAyMDA5LTA0LTIzIDIxOjQ4ICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jOgogCi0gICBDSEFOR0VTOiBTb2xhcmlzOiBQQVRDSDogMjc1MTU4ODogSW5jb25zaXN0ZW50IGRhdGEgKGUuZy4gVURQL1RDUCBNSUIgc2NhbGFyIHZhbHVlcyBvZiB6ZXJvKSBjYW4gYmUgcmVwb3J0ZWQgb24gU29sYXJpcyAxMFU0KworICAgQ0hBTkdFUzogU29sYXJpczogUEFUQ0g6IDI3NTE1ODg6IEluY29uc2lzdGVudCBkYXRhIChlLmcuIFVEUC9UQ1AKKyAgIE1JQgorICAgc2NhbGFyIHZhbHVlcyBvZiB6ZXJvKSBjYW4gYmUgcmVwb3J0ZWQgb24gU29sYXJpcyAxMFU0KwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgQW5kZXJzIFBlcnNzb24KIAorMjAwOS0wNC0yMyAxNzozMCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmg6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkwMTc2NDogZnJvbSBrcmlzenRvZm9ybyBmb3Igc3VwcG9ydGluZworICAgbG9nd2F0Y2ggZmlsZXMgdGhhdCBhcmUgZGF0ZSBiYXNlZAorCisyMDA5LTA0LTIzIDE3OjIyICBoYXJkYWtlcgorCisgICAqIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1NOTVAvU05NUC54czoKKworICAgTkVXUzogcGVybDogUEFUQ0ggMTk1NjE5MzogZnJvbSBjYWNveWxlOiBiZXRhIHRocmVhZGFibGUgcGVybAorICAgbW9kdWxlIGNvZGUgZm9yIFNOTVB2MS9TTk1QdjJjIHVzYWdlLgorCiAyMDA5LTA0LTIzIDE2OjU3ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKIAotICAgQ0hBTkdFUzogc29sYXJpczogUEFUQ0g6IDIwMTI0MDQ6IGRlYWwgd2l0aCBtb3JlIHRoYW4gMTAgaW50ZXJmYWNlcy4gTmV3IGhhcmRjb2RlZCBsaW1pdCBpcyA1MC4gQSBiZXR0ZXIgc2NhbGluZyBwYXRjaCB3b3VsZCBiZSBhcHByZWNpYXRlZCA6LSkKKyAgIENIQU5HRVM6IHNvbGFyaXM6IFBBVENIOiAyMDEyNDA0OiBkZWFsIHdpdGggbW9yZSB0aGFuIDEwCisgICBpbnRlcmZhY2VzLiBOZXcgaGFyZGNvZGVkIGxpbWl0IGlzIDUwLiBBIGJldHRlciBzY2FsaW5nIHBhdGNoCisgICB3b3VsZCBiZSBhcHByZWNpYXRlZCA6LSkKKworMjAwOS0wNC0yMyAxNjo0NyAgaGFyZGFrZXIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBkb2N1bWVudCB0aGF0IHRoZSBldGhlcmxpa2UtbWliIGhhcyBhbiBpbXBsZW1lbnRhdGlvbgorCisyMDA5LTA0LTIzIDE2OjQwICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2VzcywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX3NldC5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZW51bXMuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9vaWRzLmgsCisgICAgICAgICBhZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaDoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAyMDUzMjczOiBmcm9tIG5hcmVuZHJhX2tfZGVsbCB0byBpbWxwZW1lbnQKKyAgIHRoZSBldGhlcmxpa2UgbWliIChhdCBsZWFzdCBvbiBsaW51eCkKIAogMjAwOS0wNC0yMyAxNjozNSAgaGFyZGFrZXIKIAogICAgKiBsb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1vaWRzLm0yYzoKIAotICAgQ0hBTkdFUzogbWliMmM6IFBBVENIOiAyMTM2NDM3OiBtYWtlIEZMQUcgZGVmaW5lcyBtb3JlIDY0Yml0IGZyaWVuZGx5IHdoZW4gaHVnZSB0YWJsZXMgYXJlIGVuY291bnRlcmVkCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0g6IDIxMzY0Mzc6IG1ha2UgRkxBRyBkZWZpbmVzIG1vcmUgNjRiaXQKKyAgIGZyaWVuZGx5IHdoZW4gaHVnZSB0YWJsZXMgYXJlIGVuY291bnRlcmVkCiAKIDIwMDktMDQtMjMgMTY6MjcgIGhhcmRha2VyCiAKQEAgLTM5NzUsMTMgKzEwODA3LDE1IEBACiAKICAgICogcHl0aG9uL25ldHNubXAvY2xpZW50LnB5OgogCi0gICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyMDc0ODE3OiBmcm9tIGZlbm5lciB0byBmaXggcmVnZXhwIGVuZ2luZSBDUFUgcGVyZm9ybWFuY2UgaXNzdWVzCisgICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyMDc0ODE3OiBmcm9tIGZlbm5lciB0byBmaXggcmVnZXhwIGVuZ2luZQorICAgQ1BVIHBlcmZvcm1hbmNlIGlzc3VlcwogCiAyMDA5LTA0LTIzIDE2OjE0ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIxNjI2NTI6IHBhdGNoIHRvIGZpeCBzaW1wbGUgaHJmcyBjaGVja3Mgd2hlbiBORlMgaXMgaW4gdXNlLgorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMTYyNjUyOiBwYXRjaCB0byBmaXggc2ltcGxlIGhyZnMgY2hlY2tzCisgICB3aGVuIE5GUyBpcyBpbiB1c2UuCiAKIDIwMDktMDQtMjMgMTY6MTEgIGhhcmRha2VyCiAKQEAgLTQwMzMsNiArMTA4NjcsNTggQEAKIAogICAgRml4IG1lbW9yeSBsZWFrIGluIFNDVFAgY29udGFpbmVycy4KIAorMjAwOS0wNC0yMyAwODoyOSAgZHRzMTIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgorCisgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCBpcyBwcm9iYWJseSBiZXN0IHJlZ2FyZGVkIGFzIGFuICJvcGFxdWUiCisgICBkYXRhCisgICBzdHJ1Y3R1cmUsIGFuZCBpc24ndCByZWFsbHkgaW50ZW5kZWQgZm9yIGRpcmVjdCBtYW5pcHVsYXRpb24uCisgICBNb3ZlIGl0IGJhY2sgaW50byB0aGUgPGxpYnJhcnkvbGFyZ2VfZmRfc2V0Lmg+IGhlYWRlciBmaWxlLgorICAgKExpa2UgaXQgd2FzIGJlZm9yZSBEYXZlIHN0dWNrIGhpcyBvYXIgaW4uLi4uKQorCisyMDA5LTA0LTIzIDA4OjE5ICBkdHMxMgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBGdWVydGhlciBpbXByb3ZlbWVudHMgdG8gdGhlIGxhcmdlIEZEIHNldCBzdXBwb3J0CisgICAoU2VlIHBhdGNoICMyNzcyNzg3KQorCisyMDA5LTA0LTIzIDA2OjQ1ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaDoKKworICAgYnVpbGRpbmc6IFVzZSBjb25maWdfZXJyb3IoLi4uKSBpbnN0ZWFkIG9mCisgICBjb25maWdfcmVxdWlyZShub24tZXhpc3RpbmcpIHRvIGdldCBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMuCisKKzIwMDktMDQtMjMgMDY6NDEgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmg6CisKKyAgIHNubXBsaWIsIExpbnV4OiBNb3ZlIGdldF9waWRfZnJvbV9pbm9kZSB0byBpdCdzIG93biBmaWxlIGFuZCBvbmx5CisgICBjb21waWxlIGl0IGlmIG5lZWRlZCwgYWxzbyByZW5hbWUgaXQgdG8KKyAgIG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlLgorCisyMDA5LTA0LTIzIDA0OjMzICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgsIGFnZW50L3NubXBkLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjQzMTM1MyBmcm9tIGhucm9zZSB0byBtYWtlIHNvbWUgQysrCisgICBjb21waWxlcnMgaGFwcGllcgorCiAyMDA5LTA0LTIzIDAzOjI3ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvc25tcF9hbGFybS5jOgpAQCAtNDA0MCwyNyArMTA5MjYsMjY0IEBACiAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjUwNTQ4ODogZnJvbSBkYWJva2V5IHRvIGZpeCBhbGFybXMgbm90CiAgICBiZWluZyB0cmlnZ2VyZWQgYXQgdGhlIHJpZ2h0IHRpbWVzIGR1ZSB0byBsYXJnZSBjbG9jayBza2V3cy4KIAorMjAwOS0wNC0yMyAwMDowMSAgaGFyZGFrZXIKKworICAgKiAgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMsIGFwcHMvc25tcG5ldHN0YXQvbWFpbi5jLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgsIG1hbi9zbm1wbmV0c3RhdC4xLmRlZjoKKworICAgTkVXUzogc25tcG5ldHN0YXQ6IFBBVENIOiAyNTY0NTM4OiBmcm9tIGFobWFrZSB0byBzdXBwb3J0IEdFVEJVTEsKKyAgIGluIHYyYysgc25tcCB2ZXJzaW9ucworCiAyMDA5LTA0LTIyIDIzOjQ5ICBoYXJkYWtlcgogCiAgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYXBwcy9zbm1wbmV0c3RhdC9pbmV0LmMsICAgCi0gICAgICBhcHBzL3NubXBuZXRzdGF0L3JvdXRlLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMsICAgCi0gICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oLCBzbm1wbGliL3N5c3RlbS5jOgorICAgICAgYXBwcy9zbm1wbmV0c3RhdC9yb3V0ZS5jLCBzbm1wbGliL3N5c3RlbS5jOgogCiAgICBDSEFOR0VTOiBwb3J0czogUEFUQ0g6IDI2ODgzNDI6IGZyb20gYWhtYWtlIHRvIGZpeCB2YXJpb3VzCiAgICBjb21waWxlciB3YXJuaW5nCiAKKzIwMDktMDQtMjIgMjM6MjMgIGhhcmRha2VyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI3NjM3MTogZnJvbSBmaGV3IHRvIGFsbG93IHBlcmwgdG8gdXNlCisgICBPUEFRVUVzCisKKzIwMDktMDQtMjIgMjM6MTcgIGhhcmRha2VyCisKKyAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKKworICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSDogMjc3NTgwMDogZnJvbSBBZGFtIFJvbWFuZWsgdG8gYWxsb3cKKyAgIHB5dGhvbiB0aHJlYWRpbmcgdG8gY29udGludWUgd2hlbiBhIHJlcXVlc3QgaXMgc2VudAorCiAyMDA5LTA0LTIyIDIyOjExICBhbGV4X2IKIAogICAgKiBSRUFETUUsIFJFQURNRS53aW4zMjoKIAogICAgVXBkYXRlIFRIQU5LUyBzZWN0aW9uLgogCisyMDA5LTA0LTIyIDIxOjIxICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKKworICAgRm9sZCB0aGUgZnVuY3Rpb24gZXh0cmFjdF9pbm9kZS4gd2l0aCBvbmx5IG9uZSB1c2VyLCBpbnRvIGl0J3MKKyAgIHVzZXIuCisgICBSZW1vdmUgdGhlICNkZWZpbmUgRklMRV9ESVNQLCB3aXRoIG9ubHkgb25lIHVzZXIsIHdpdGggdGhlIGFjdHVhbAorICAgdmFsdWUuCisKKzIwMDktMDQtMjIgMjE6MDMgIG1hZ2ZyCisKKyAgICogYWdlbnQvc25tcGQuYzoKKworICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCB3aXRoIFNNVVggZW5hYmxlZC4KKworMjAwOS0wNC0yMiAxMzo0MyAganNhZnJhbmVrCisKKyAgICogUkVBRE1FLmFnZW50LW1pYnM6CisKKyAgIEFkZCBhIG5vdGUgaG93IHRoZSBuZXcgUk1PTi1NSUIgaW1wbGVtZW50YWlvbiB3b3JrcworCisyMDA5LTA0LTIyIDEzOjQxICBkdHMxMgorCisgICAqIG1hbi92YXJiaW5kX2FwaS4zLmRlZjoKKworICAgRmlsbCBvdXQgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIFZhcmJpbmQtcmVsYXRlZCBBUEkgY2FsbHMuCisKKzIwMDktMDQtMjIgMTM6MzcgIGpzYWZyYW5laworCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi5oLCBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2VzcywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9lbnVtcy5oLCAgCisgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfb2lkcy5oLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaDoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAyMTAzNDkyOiBpbXBsZW1lbnQKKyAgIFJNT04tTUlCOjpldGhlclN0YXRzSmFiYmVycworICAgUGF0Y2ggZnJvbSBOYXJlbmRyYSBLLiwgU2FuZGVlcCBLLiBTaGFuZGlseWEgYW5kIFNoeWFtIEl5ZXIKKwogMjAwOS0wNC0yMiAxMDowOCAgZHRzMTIKIAogICAgKiBtYW4vbWliX2FwaS4zLmRlZjoKIAogICAgQ29ycmVjdCBhIHNlcmlvdXNseSBtaXNsZWFkaW5nIChpLmUuIHdyb25nKSBkZXNjcmlwdGlvbiBvZiB0aGUKLSAgIHB1cnBvc2UgYW5kIGJlaGF2aW91ciBvZiB0aGUgcHJpbnRfZGVzY3JpcHRpb24gZmFtaWx5IG9mIGNhbGxzLgorICAgcHVycG9zZQorICAgYW5kIGJlaGF2aW91ciBvZiB0aGUgcHJpbnRfZGVzY3JpcHRpb24gZmFtaWx5IG9mIGNhbGxzLgorCisyMDA5LTA0LTIyIDA5OjMyICBkdHMxMgorCisgICAqIG1hbi9taWJfYXBpLjMuZGVmOgorCisgICBGdXJ0aGVyIHBvbGlzaGluZyBvZiB0aGUgZGVzY3JpcHRpb25zIG9mIE1JQi1yZWxhdGVkIEFQSSBjYWxscy4KKworMjAwOS0wNC0yMiAwNzozOSAgZHRzMTIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIFJlbW92ZSB1bm5lY2Vzc2FyeSByYW5nZSBjaGVja3MuCisgICAoVGhlc2UgYXJlIGhhbmRsZWQgd2l0aGluIHRoZSBsYXJnZV9mZF9zZXQgcm91dGluZXMgdGhlbXNlbHZlcykuCisKKzIwMDktMDQtMjEgMjM6MjcgIGFsZXhfYgorCisgICAqICB3aW4zMi9saWJzbm1wL01ha2VmaWxlLmluLCB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvTWFrZWZpbGUuaW4sIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCAgIAorICAgICAgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW4sICAgCisgICAgICB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3A6CisKKyAgIHdpbjMyOiBGaXggV2luZG93cyBidWlsZCBlbnZpcm9ubWVudCB0byBzdXBwb3J0IHBhdGNoIDI3NzI3ODcuCisKKzIwMDktMDQtMjEgMTU6MzMgIGR0czEyCisKKyAgICogIGFnZW50L3NubXBkLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIHNubXBsaWIvTWFrZWZpbGUuaW4sIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jLCAgIAorICAgICAgc25tcGxpYi9sYXJnZV9mZF9zZXQuYywgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBSZXZpc2VkIHZlcnNpb24gb2YgcGF0Y2ggIzI3NzI3ODcKKworMjAwOS0wNC0yMSAxNToxNSAgZHRzMTIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oLCBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgsICAgCisgICAgICBzbm1wbGliL01ha2VmaWxlLmluLCBzbm1wbGliL2xhcmdlX2ZkX3NldC5jLCBzbm1wbGliL3NubXBfYXBpLmMsICAKKyAgICAgICB3aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwOgorCisgICBVbmRvIHJldmlzaW9uIDE3NTE1CisgICAoYnJva2VuL2luY29tcGxldGUgcGF0Y2gpCisKKzIwMDktMDQtMjEgMTQ6MzcgIGR0czEyCisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oLCAgIAorICAgICAgc25tcGxpYi9NYWtlZmlsZS5pbiwgc25tcGxpYi9sYXJnZV9mZF9zZXQuYywgc25tcGxpYi9zbm1wX2FwaS5jLCAgCisgICAgICAgd2luMzIvbGlic25tcC9saWJzbm1wLmRzcDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDI3NzI3ODc6IENsZWFuZXIgYXBwcm9hY2ggdG8gaGFuZGxpbmcKKyAgIGxhcmdlIGZkX3NldHMuCisgICBCYXNlZCBvbiBwYXRjaCBzdXBwbGllZCBieSBCYXJ0IFZhbiBBc3NjaGUuCisKKzIwMDktMDQtMjEgMTQ6MzQgIGR0czEyCisKKyAgICogbWFuL01ha2VmaWxlLmluOgorCisgICBQcm9wZXJseSBnZW5lcmF0ZSBuZXcgY29yZSBBUEkgbWFuIHBhZ2VzLgorCisyMDA5LTA0LTIxIDA5OjM4ICBkdHMxMgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaCwgaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgsIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaDoKKworICAgRmlyc3QtY3V0IGF0IGlkZW50aWZ5aW5nIHRoZSBjb3JlIE5ldC1TTk1QIEFQSSBjYWxscy4KKyAgIE1vdmUgdGhlc2UgaW50byB0aGUgYXBwcm9wcmlhdGUgdG9wLWxldmVsIGhlYWRlciBmaWxlcy4KKworMjAwOS0wNC0yMSAwOTozNiAgZHRzMTIKKworICAgKiAgbWFuL01ha2VmaWxlLmluLCBtYW4vY29uZmlnX2FwaS4zLmRlZiwgbWFuL3JlYWRfY29uZmlnLjMuZGVmLCAgIAorICAgICAgbWFuL3Nlc3Npb25fYXBpLjMuZGVmLCBtYW4vc25tcF9hcGkuMy5kZWY6CisKKyAgIFJlbmFtZSBjb25maWcvc2Vzc2lvbiBBUEkgbWFuIHBhZ2VzLCBpbiBsaW5lIHdpdGggb3RoZXIgY29yZSBBUEkKKyAgIHN0cnVjdHVyZS4KKworMjAwOS0wNC0yMSAwOTozMiAgZHRzMTIKKworICAgKiAgbWFuL01ha2VmaWxlLmluLCBtYW4vbWliX2FwaS4zLmRlZiwgbWFuL3BkdV9hcGkuMy5kZWYsICAgCisgICAgICBtYW4vcmVhZF9jb25maWcuMy5kZWYsIG1hbi9zbm1wX2FwaS4zLmRlZiwgbWFuL3ZhcmJpbmRfYXBpLjMuZGVmOgorCisgICBEb2N1bWVudCAob3IgcmVzdHJ1Y3R1cmUpIHRoZSBjb3JlIEFQSSBlbGVtZW50cy4KKyAgIEFsaWduIHRoaXMgb3JnYW5pc2F0aW9uIHdpdGggdGhlIGZpcnN0LWN1dCByZXN0cnVjdHVyaW5nCisgICBvZiB0aGUgbWFpbiBoZWFkZXIgZmlsZXMuCisKKzIwMDktMDQtMjAgMTA6MjMgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBTa2lwIGZpbGUgaGFuZGxlcyB0aGF0IGFyZSB0b28gbGFyZ2UgZm9yIGZkX3NldCB0byBjb3BlIHdpdGguCisgICBBIHNpbXBsZSBmaXggZm9yIHRoZSBpbW1lZGlhdGUgcHJvYmxlbSBhZGRyZXNzZWQgYnkgcGF0Y2gKKyAgICMxNjI3MDQ5LgorCisyMDA5LTA0LTIwIDEwOjE5ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIFJldmVydCBwYXRjaCAjMTYyNzA0OSAoZXh0ZW5zaW9uIHRvIGRlYWwgd2l0aCBsYXJnZSBmaWxlCisgICBoYW5kbGVycykuCisgICBTZWUgdGhlIGRpc2N1c3Npb24gb24gdGhhdCB0cmFja2VyIGVudHJ5IGZvciBiYWNrZ3JvdW5kIGFzIHRvCisgICB3aHkuCisKKzIwMDktMDQtMjAgMDA6NTkgIGFsZXhfYgorCisgICAqICBSRUFETUUud2luMzIsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgsIHBlcmwvYWdlbnQvYWdlbnQueHMsICAgCisgICAgICB3aW4zMi9Db25maWd1cmUsIHdpbjMyL2xpYmFnZW50L01ha2VmaWxlLmluLCAgIAorICAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlicy9NYWtlZmlsZS5pbiwgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwLCAKKyAgICAgICAgd2luMzIvbmV0c25tcG1pYnNzZGsvTWFrZWZpbGUuaW4sICAgCisgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3A6CisKKyAgIHdpbjMyOiBCdWlsZCBmaXhlcyBmb3IgV2luZG93cy4gcGFzcyBhbmQgcGFzc19wZXJzaXN0IHN0aWxsIG5lZWQKKyAgIHRvIGJlIGZpeGVkIHRvIHN1cHBvcnQgQ291bnRlcjY0IG9uIFdpbmRvd3MuCisKKzIwMDktMDQtMjAgMDA6NDggIGFsZXhfYgorCisgICAqICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICB3aW4zMjogU3luYyBuZXQtc25tcC1jb25maWcuaC5pbiBhbmQgbmV0LXNubXAtY29uZmlnLmgKKworMjAwOS0wNC0xNyAyMToyMSAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsIGx0bWFpbi5zaCwgbTQvbGlidG9vbC5tNCwgCisgICAgICAgIG00L2x0b3B0aW9ucy5tNCwgbTQvbHRzdWdhci5tNCwgbTQvbHR2ZXJzaW9uLm00OgorCisgICBDSEFOR0VTOiBidWlsZDogVXBncmFkZSBsaWJ0b29sIHZlcnNpb24gdG8gMi4yLjYgaW4gb3JkZXIgdG8gd29yaworICAgYXJvdW5kIGEgYnVnbGV0IHRoYXQgbWFkZSBhdXRvcmVjb25mIC12aWYgZXJhc2UgY29uZmlnLnN1YiBhbmQKKyAgIGNvbmZpZy5ndWVzcy4KKworMjAwOS0wNC0xNCAyMTo1OSAgbWFnZnIKKworICAgKiBzbm1wbGliL3BhcnNlLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMTk3Njc3MjogQ2hhbmdlZCB0aGUgbWliIHBhcnNlciB0byBoYW5kbGUKKyAgIGxvbmcgYmluYXJ5IGFuZCBoZXggc3RyaW5ncy4KKworMjAwOS0wNC0xMSAxMjo1MiAgcnN0b3J5CisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHN1Z2dlc3QgdHJ1bmNhdGlvbiBvZiBDaGFuZ2VMb2cucmVhbGx5YWRkCiAKIDIwMDktMDQtMTAgMjM6MTggIGFsZXhfYgogCkBAIC00MDk1LDcgKzExMjE4LDggQEAKIAogMjAwOS0wNC0xMCAyMTo0NSAgYWxleF9iCiAKLSAgICogd2luMzIvQ29uZmlndXJlOgorICAgKiAgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQsICAgCisgICAgICB3aW4zMi9kaXN0L1JFQURNRS50eHQ6CiAKICAgIFdpbjMyOiBNaW5vciBidWlsZCBhbmQgcmVhZG1lIHVwZGF0ZXMuCiAKQEAgLTQxMDcsMjQgKzExMjMxLDI3IEBACiAgICBORVdTOiBXaW4zMjogUEFUQ0ggMjY4NjI0ODogQXBwbGllZCBwYXRjaCBieSBCYXJ0IFZhbiBBc3NjaGUKICAgIHdoaWNoIGZpeGVzIHNldmVyYWwgd2luRXh0RExMIGJ1Z3MuCiAKLTIwMDktMDQtMTAgMjA6MTQgIHJzdG9yeQorMjAwOS0wNC0xMCAyMDoxNyAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CiAKLSAgIHJlc3RvcmUgYW5ub3lpbmcgbG9nIG1lc3NhZ2UsIGJ1dCBmaXggY2F1c2Ugb2YgaXQgb24gIWZyZWVic2Qgc3lzdGVtcworICAgcmVzdG9yZSBhbm5veWluZyBsb2cgbWVzc2FnZSwgYnV0IGZpeCBjYXVzZSBvZiBpdCBvbiAhZnJlZWJzZAorICAgc3lzdGVtcwogCiAyMDA5LTA0LTA5IDEyOjI4ICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNTUwNzMwOiBSZXBvcnQgZXJyb3JzIGZyb20gaXRlcmF0b3ItYmFzZWQgaGFuZGxlcnMuCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE1NTA3MzA6IFJlcG9ydCBlcnJvcnMgZnJvbSBpdGVyYXRvci1iYXNlZAorICAgaGFuZGxlcnMuCiAgICBCYXNlZCBvbiBhIHBhdGNoIHByb3ZpZGVkIGJ5IFdheW5lIEdsYW50egogCiAyMDA5LTA0LTA5IDExOjQxICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjEyNDI4ODogRml4IHNldHRpbmcgb2YgdXNtVXNlclByaXZQcm90b2NvbCBhdCBjcmVhdGlvbi4KKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjEyNDI4ODogRml4IHNldHRpbmcgb2YKKyAgIHVzbVVzZXJQcml2UHJvdG9jb2wgYXQgY3JlYXRpb24uCiAgICBMb2dpYyBidWcsIHJlcG9ydGVkIGJ5IFJhbWVzaCBLb3RhYmFnaQogCiAyMDA5LTA0LTA5IDA5OjEyICBkdHMxMgpAQCAtNDE0MSw0NyArMTEyNjgsOTggQEAKICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDIyNjA4Mjg6IEZpeCBweXRob24gc25tcHdhbGsgbWVtb3J5IGxlYWsKICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEdhYnJpZWxlIE1lc3NpbmVvCiAKKzIwMDktMDQtMDkgMDg6NTggIGR0czEyCisKKyAgICogcGVybC9TTk1QL1NOTVAucG0sIHBlcmwvU05NUC9TTk1QLnhzOgorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjI3MjM0NzogSW1wbGVtZW50ICJpbXBsaWVkIiBpbiBNSUIgaGFzaAorICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmlsbCBGZW5uZXIKKwogMjAwOS0wNC0wOSAwODo1NCAgZHRzMTIKIAogICAgKiBsb2NhbC9taWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mOgogCi0gICBDSEFOR0VTOiBtaWIyYzogUEFUQ0g6IDIzMTYxMjc6IEZpeCBidWcgaW4gaXRlcmF0ZV9hY2Nlc3MgZ2VuZXJhdGVkIGNvZGUuCisgICBDSEFOR0VTOiBtaWIyYzogUEFUQ0g6IDIzMTYxMjc6IEZpeCBidWcgaW4gaXRlcmF0ZV9hY2Nlc3MKKyAgIGdlbmVyYXRlZCBjb2RlLgorCisyMDA5LTA0LTA5IDA4OjQ4ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI0MzU2ODE6IEVuYWJsZSBpZi1taWIgcmV3cml0ZSAod2l0aAorICAgc3lzY3RsIGJhY2tlbmQpIG9uIE5ldEJTRAogCiAyMDA5LTA0LTA5IDA4OjQ0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6CiAKLSAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjQzNTc5MzogU3VwcG9ydCA2NC1iaXQgSUYtTUlCIGNvdW50ZXJzIG9uIHN5c2N0bCAoKkJTRCkgc3lzdGVtcy4KKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjQzNTc5MzogU3VwcG9ydCA2NC1iaXQgSUYtTUlCIGNvdW50ZXJzIG9uCisgICBzeXNjdGwgKCpCU0QpIHN5c3RlbXMuCiAgICBQYXRjaCBwcm92aWRlZCBieSBKYW4gQW5kcmVzCiAKKzIwMDktMDQtMDkgMDg6MDAgIHRhbmRlcnMKKworICAgKiBwZXJsL2FnZW50L2FnZW50LnhzOgorCisgICBmaXggY29tcGlsYXRpb24gd2FybmluZ3MKKworMjAwOS0wNC0wOCAyMzoxNyAgdGFuZGVycworCisgICAqIHBlcmwvYWdlbnQvYWdlbnQueHM6CisKKyAgIG1vdmUgY29tbWVudHMgdG8gYSBwbGFjZSB3aGVyZSB0aGV5IGFyZSBsZWdhbAorCisyMDA5LTA0LTA4IDIzOjAzICB0YW5kZXJzCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgLSByZW5hbWUgbmV3IGdldFJlcXVlc3RvcklwIHRvIGdldFNvdXJjZUlQIGFuZCBnZXRUYXJnZXRJcCB0bworICAgZ2V0RGVzdElwCisgICAtIHJlbWluZCB0aGF0IHRoaXMgaXMgZnVsbHkgdHJhbnNwb3J0LXNwZWNpZmljLCBpLmUuIFVEUC9JUHY0CisgICBvbmx5IQorCiAyMDA5LTA0LTA4IDE2OjAwICBkdHMxMgogCiAgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKIAotICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMzg0Nzc5OiBGaXggaGFuZGxpbmcgb2YgR2V0QnVsayB3aXRoIE4+MCxNPT0wCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIzODQ3Nzk6IEZpeCBoYW5kbGluZyBvZiBHZXRCdWxrIHdpdGgKKyAgIE4+MCxNPT0wCiAgICBQYXRjaCBwcm92aWRlZCBieSBBbmd1cyBTYWxrZWxkCiAKIDIwMDktMDQtMDggMTU6NTIgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgogCi0gICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI0MDYzNzg6IEZpeCBoclNXUnVuUGVyZk1lbSBvbiA2NC1iaXQgU29sYXJpcyBzeXN0ZW1zCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDI0MDYzNzg6IEZpeCBoclNXUnVuUGVyZk1lbSBvbiA2NC1iaXQKKyAgIFNvbGFyaXMgc3lzdGVtcwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgTlR3b08KIAogMjAwOS0wNC0wOCAxNTo0OCAgZHRzMTIKIAogICAgKiBzbm1wbGliL21pYi5jOgogCi0gICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjQ3OTcwMDogRml4IHpvbmVkIElQIGFkZHJlc3MgdXNlZCBhcyB0YWJsZSBpbmRpY2VzCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjQ3OTcwMDogRml4IHpvbmVkIElQIGFkZHJlc3MgdXNlZCBhcworICAgdGFibGUgaW5kaWNlcwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgQnJpYW4gUmV0Zm9yZC4KIAogMjAwOS0wNC0wOCAxNTozMyAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgogCi0gICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjQ5MjM3NzogRml4IHR5cG8vYnVnIGluIHNubXBfZW5hYmxlX2NhbGxiYWNrKCkKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAyNDkyMzc3OiBGaXggdHlwby9idWcgaW4KKyAgIHNubXBfZW5hYmxlX2NhbGxiYWNrKCkKICAgIFJlcG9ydGVkIGJ5IGpveWNlYW5tYWNoaW5lCiAKKzIwMDktMDQtMDggMTU6MjkgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjUwNzI0OTogc2N0cC1taWIgc3VwcG9ydCBmb3IgRnJlZUJTRC4KKwogMjAwOS0wNC0wOCAxNToxNiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CkBAIC00MTk0LDcgKzExMzcyLDggQEAKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOgogCi0gICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyNTgwOTc5OiBGaXggcHl0aG9uIHNlc3Npb24gcG9pbnRlcnMgb24gNjQtYml0IHN5c3RlbXMuCisgICBDSEFOR0VTOiBweXRob246IFBBVENIOiAyNTgwOTc5OiBGaXggcHl0aG9uIHNlc3Npb24gcG9pbnRlcnMgb24KKyAgIDY0LWJpdCBzeXN0ZW1zLgogICAgUGF0Y2ggcHJvdmlkZWQgYnkgSm9obiBLaHZhdG92LgogCiAyMDA5LTA0LTA4IDE0OjQ5ICBkdHMxMgpAQCAtNDIwOCw4ICsxMTM4Nyw3IEBACiAyMDA5LTA0LTA4IDE0OjM0ICBkdHMxMgogCiAgICAqICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sICAgCi0gICAgICBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMsIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCAKLSAgICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvY29uc3QteHMuaW5jOgorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnhzOgogCiAgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIOiAyNzI2MzAyOiBQYXNzIHJlc3VsdHMgb2YgUGVybCB0cmFwCiAgICBoYW5kbGVycyB0byB0cmFwIGRhZW1vbgpAQCAtNDIyMyw2ICsxMTQwMSwxNCBAQAogICAgaGlnaC1BU0NJSSBjaGFycwogICAgUGF0Y2ggcHJvdmlkZWQgYnkgQmFydCBWYW4gQXNzY2hlCiAKKzIwMDktMDQtMDggMTQ6MjQgIGR0czEyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDI3MDk3MDU6IFJldHJpZXZlIHNyYy90YXJnZXQgSVAgYWRkcmVzcyBpbgorICAgUGVybC1iYXNlZCBhZ2VudHMKKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IGZoZXcKKwogMjAwOS0wNC0wOCAxNDoxNiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CkBAIC00MjQ5LDYgKzExNDM1LDI4IEBACiAgICBRbjogRG9lcyB0aGlzIGV2ZW4gcXVhbGlmeSBhcyBhbiBlcnJvcj8gV291bGRuJ3QgYSB3YXJuaW5nIGJlCiAgICBzdWZmaWNpZW50PwogCisyMDA5LTA0LTA2IDE5OjMzICBtYWdmcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oLCBzbm1wbGliL3BhcnNlLmM6CisKKyAgIHNubXBsaWI6IE1ha2UgdGhlIG5vZGUgc3RydWN0IHByaXZhdGUuIEhpZGUgdGhlIG9yaGFuX25vZGVzCisgICB2YXJpYWJsZS4KKworMjAwOS0wNC0wNiAxODo0NSAgbWFnZnIKKworICAgKiBhZ2VudC9zbm1wX3BlcmwuYzoKKworICAgc25tcGQscGVybDogSWYgbXlfcGVybCBpcyBOVUxMIHdoZW4gcGFzc2VkIHRvIHBlcmxfZGVzdHJ1Y3QgdGhlbgorICAgdGhhdCBmdW5jdGlvbiBjcmFzaGVzIGZvciBzb21lIHBlcmwgdmVyc2lvbnMgc28gY2hlY2sgdGhhdCBpdCBpcworICAgbm9uLW51bGwgYmVmb3JlIGRlc3Ryb3lpbmcgaXQuCisKKzIwMDktMDQtMDYgMTg6NDIgIG1hZ2ZyCisKKyAgICogcGVybC9hZ2VudC9hZ2VudC54czoKKworICAgcGVybDogQXZvaWQgc3VycHJpc2VzIGlmIHRoZSBwZXJsIHN0cmluZyBjb250YWlucyBwcmludGYgZXNjYXBlCisgICBjaGFyYWN0ZXJzLgorCiAyMDA5LTA0LTA2IDE4OjIyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKQEAgLTQyNTcsNyArMTE0NjUsNyBAQAogICAgKEF2b2lkcyB0cnVuY2F0ZWQgd2FsayBvZiBoclNXUnVuUGF0aCBvbiBTdVNFIHN5c3RlbXMpCiAgICBSZXBvcnRlZCBieSBLYW1pbCBLaXNpZWwuCiAKLTIwMDktMDQtMDYgMTI6MDUgIHRhbmRlcnMKKzIwMDktMDQtMDYgMTE6NTggIHRhbmRlcnMKIAogICAgKiBwZXJsL2FnZW50L2FnZW50LnhzLCBwZXJsL2FnZW50L3R5cGVtYXA6CiAKQEAgLTQyNjYsMTEgKzExNDc0LDEwOSBAQAogICAgZ2V0Um9vdE9JRCB3b3JrcyBwcm9wZXJseS4gTm93IHBhc3NlcyAibWFrZSB0ZXN0IiBhbmQgIm1ha2UKICAgIHBlcmx0ZXN0Ii4KIAotMjAwOS0wNC0wNiAxMjowMiAgZHRzMTIKKzIwMDktMDQtMDUgMTA6MDUgIG1hZ2ZyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eC5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgogCi0gICBGaXggdHlwbworICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCisKKzIwMDktMDQtMDUgMDk6NTMgIG1hZ2ZyCisKKyAgICogIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYywgICAKKyAgICAgIGxvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYsIGxvY2FsL21pYjJjLm5vdGlmeS5jb25mOgorCisgICBNYWtlIGV2ZW4gbW9yZSB2YXJpYWJsZXMgYW5kIHRlbXBsYXRlcyBjb25zdC4KKworMjAwOS0wNC0wNCAyMjoxMyAgbWFnZnIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaCwgCisgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmgsCisgICAgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaDoKKworICAgc25tcGQ6IE1ha2UgbW9yZSBsb2NhbCB2YXJpYWJsZXMgY29uc3QgYW5kIGxvY2FsLgorCisyMDA5LTA0LTA0IDEwOjA3ICBtYWdmcgorCisgICAqIGFnZW50L3NubXBkLmMsIGFwcHMvc25tcHRyYXBkLmMsIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgTWFyayB0aGUgcmVjb25maWcgdmFyaWFibGUgYXMgc3RhdGljIHNpbmNlIGl0IGlzIHByaXZhdGUgdG8gdGhlCisgICBtb2R1bGUuCisKKzIwMDktMDQtMDQgMTA6MDMgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmM6CisKKyAgIE1hcmsgdGhlIGZpbGUgc2NvcGUgcHJpdmF0ZSB2YXJpYWJsZSBtaW5pbXVtX3N3YXAgYXMgc3RhdGljLgorCisyMDA5LTA0LTA0IDA5OjU4ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5jOgorCisgICBzbm1wbGliOiBNYWtlIG1vcmUgc3ltYm9scyBjb25zdCBpbiBvcmRlciB0byBtb3ZlIHRoZW0gdG8KKyAgIHJlYWRvbmx5IG1lbW9yeS4KIAogMjAwOS0wNC0wMiAyMToyNCAgaGFyZGFrZXIKIApAQCAtNDI3OSw2ICsxMTU4NSwxMjcgQEAKICAgIENIQU5HRVM6IEJVRyAxMTI2OTQ6IFBhdGNoIGZyb20gQmlsbCBGZW5uZXI6IGRvbid0IG9wZW4gKGFuZAogICAgY2xvYmJlcikgYW4gYWdlbnR4IHNvY2tldCBpZiB0aGUgb3RoZXIgdHJhbnNwb3J0cyBmYWlsIHRvIG9wZW4KIAorMjAwOS0wNC0wMSAyMzo0MSAgaGFyZGFrZXIKKworICAgKiBDSEFOR0VTLCBORVdTOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCisyMDA5LTA0LTAxIDIzOjE5ICBoYXJkYWtlcgorCisgICAqIENoYW5nZUxvZzoKKworICAgdmVyc2lvbiB1cGRhdGUKKworMjAwOS0wNC0wMSAyMzowNCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6CisKKyAgIG1ha2UgZGVwZW5kCisKKzIwMDktMDQtMDEgMjM6MDMgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9wYXJzZS5jLCBzbm1wbGliL3NubXBEVExTVURQRG9tYWluLmMsIHNubXBsaWIvc25tcHRzbS5jOgorCisgICBjb252ZXJ0IGNvbW1lbnRzIHRvIEFOU0kgY29tbWVudHMKKworMjAwOS0wNC0wMSAyMjoyMSAgaGFyZGFrZXIKKworICAgKiAgbWFuL01ha2VmaWxlLmluLCBtYW4vbmV0c25tcF9hY2Nlc3NfbXVsdGlwbGV4ZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfb2xkX2FwaS4zLCBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCAgIAorICAgICAgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2NhbGFyLjMsIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCAgIAorICAgICAgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsIG1hbi9uZXRzbm1wX3RhYmxlLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsICAgCisgICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3cuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3Rvb2xzLmguMywgbWFuL25ldHNubXBfdXRpbC4zLCAgIAorICAgICAgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgICAKKyAgICAgIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKworICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKworMjAwOS0wNC0wMSAyMjowMyAgaGFyZGFrZXIKKworICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCBkaXN0L01ha2VmaWxlLCAgIAorICAgICAgZGlzdC9tYWtlcmVsZWFzZS54bWwsIGRpc3QvbmV0LXNubXAuc3BlYzoKKworICAgVmVyc2lvbiBudW1iZXIgdXBkYXRlCisKKzIwMDktMDQtMDEgMjE6NTggIGhhcmRha2VyCisKKyAgICogbWFuL3NubXAuY29uZi41LmRlZiwgbWFuL3NubXBkLjguZGVmOgorCisgICB1cGRhdGVzIGZvciBTU0gKKworMjAwOS0wNC0wMSAxOTozOSAgbWFnZnIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBNYWtlIHRoZSBzcmMgcG9pbnRlciBvZiBzbm1wX2Nsb25lX21lbSBhIHBvaW50ZXIgdG8gY29uc3RhbnQuCisKKzIwMDktMDQtMDEgMTg6MjMgIGhhcmRha2VyCisKKyAgICogYXBwczoKKworICAgaWdub3JlICdzc2h0b3NubXAnCisKKzIwMDktMDQtMDEgMTc6MzEgIGhhcmRha2VyCisKKyAgICogIGFwcHMvc3NodG9zbm1wLmMsIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgsICAgCisgICAgICBtYW4vc25tcGQuOC5kZWYsIHNubXBsaWIvc25tcFNTSERvbWFpbi5jOgorCisgICBNYWtlIHNzaCB0cmFuc3BvcnQgc3VwcG9ydCB1c2UgYSB1bml4IHNvY2tldCB3aXRoIHByb3BlcgorICAgY3JlZGVudGlhbCBwYXNzaW5nCisKKzIwMDktMDQtMDEgMTc6MjkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOgorCisgICBtYWtlIHRoZSBleGVjIGNhY2hlIHJlYWRhYmxlIG9ubHkgYnkgdGhlIHVzZXIKKworMjAwOS0wNC0wMSAxNzoyOCAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaCwgc25tcGxpYi9zeXN0ZW0uYzoKKworICAgbW92ZSBzdHJpbmcgdG8gdWlkL2dpZCBmdW5jdGlvbmFsaXR5IHRvIHNubXBsaWIgZm9yIHJldXNlCisKIDIwMDktMDMtMzEgMTU6MTIgIGR0czEyCiAKICAgICogbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgpAQCAtNDMwMCw2ICsxMTcyNyw5MyBAQAogCiAgICBDIGNvbW1lbnRzIHVzZSAvKiAuLi4gKi8sIG5vdCAjCiAKKzIwMDktMDMtMzEgMDg6MDUgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYzoKKworICAgRml4IGNvbXBpbGF0aW9uIHdpdGggZ2xpYmMgPCAyLjQsIElDTVB2NiBtZXNzYWdlIHR5cGVzIHN0YXJ0aW5nCisgICB3aXRoIE1MRF8qIGhhdmUgZGlmZmVyZW50IG5hbWUgdGhlcmUuCisKKzIwMDktMDMtMjQgMDY6MDQgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX29wZW5zc2wuYzoKKworICAgRG8gbm90IGNvbXBpbGUgdGhlIHBhcnRzIHRoYXQgZGVwZW5kIG9uIGxpYnNzbCBpZiBsaWJzc2wgaXMKKyAgIG1pc3NpbmcuCisKKzIwMDktMDMtMjMgMDk6MjEgIGpzYWZyYW5laworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oLCAKKyAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmg6CisKKyAgIE5FV1M6IHNubXBkOiBpcE5ldFRvUGh5c2ljYWxMYXN0VXBkYXRlZCBPSUQgaW1wbGVtZW50ZWQKKyAgIAorICAgVGhlIHZhbHVlIGlzIGVzdGltYXRlZCB3aXRoIGV2ZXJ5IGNhY2hlIHJlbG9hZCwgd2hpY2ggaXMgb25jZSBpbgorICAgNjAgc2Vjb25kcyBieSBkZWZhdWx0LgorICAgVGhhdCBtZWFucyB0aGUgdmFsdWUgcmVwb3J0ZWQgYnkgc25tcGQgbWF5IGRpZmZlciBmcm9tIHJlYWxpdHkgYnkKKyAgIG9uZSBtaW51dGUuCisgICBJZiBhbnlib2R5IG5lZWRzIGJldHRlciBwcmVjaXNpb24sIHRoZSBjYWNoZSB0aW1lb3V0IGNhbiBiZQorICAgY29uZmlndXJlZCBieSBzZXR0aW5nCisgICBORVQtU05NUC1BR0VOVC1NSUI6Om5zQ2FjaGVUaW1lb3V0LjEuMy42LjEuMi4xLjQuMzUgdG8KKyAgIGFwcHJvcHJpYXRlIHZhbHVlIGJ5IHNubXBzZXQuCisKKzIwMDktMDMtMjAgMTk6MzggIGhhcmRha2VyCisKKyAgICogZGlzdC9leHRyYWN0bmV3czoKKworICAgZml4IGxhY2sgb2Ygd3JhcHBpbmcgbGluZXMgcHJvYmxlbQorCisyMDA5LTAzLTIwIDE4OjMxICBoYXJkYWtlcgorCisgICAqIE5FV1MsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIGNvbmZpZyBvcHRpb25zLCBldGMsIGZvciBTU0ggYW5kIERUTFMKKworMjAwOS0wMy0yMCAxODoyNCAgaGFyZGFrZXIKKworICAgKiBtYW4vc25tcGNtZC4xLmRlZiwgbWFuL3NubXBkLjguZGVmOgorCisgICBjdXJyZW50bHkgbWluaW1hbCBkb2N1bWVudGF0aW9uIG9uIGR0bHMgYW5kIHNzaAorCisyMDA5LTAzLTIwIDE2OjUwICBoYXJkYWtlcgorCisgICAqICBhcHBzL01ha2VmaWxlLmluLCBhcHBzL3NzaHRvc25tcC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3NubXBTU0hEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvc25tcF90cmFuc3BvcnQuYzoKKworICAgQWRkZWQgYWxwaGEgc25tcCBvdmVyIHNzaCBzdXBwb3J0CisKKzIwMDktMDMtMjAgMTY6MTYgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jOgorCisgICBjaGVjayB0aGUgc2VjIG5hbWUgbGVuZ3RoLCBub3QganVzdCB0aGUgY29udGVudHMKKworMjAwOS0wMy0yMCAxNjowMSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXB0c20uYzoKKworICAgc2VxdWVuY2UgcGFyc2luZyBmaXgKKworMjAwOS0wMy0yMCAxNTo1MyAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaCwgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBhZGRlZCBhIG5ldyBmbGFnIHRvIGFsbG93IGZvciBzaWduYWxsaW5nIG9mIGxlZ2FsIGVtcHR5IHBhY2tldHMKKyAgIGZyb20gYSB0cmFuc3BvcnQKKworMjAwOS0wMy0xOCAxOTo0MiAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2xpbnV4LmM6CisKKyAgIE1ha2UgaXQgcG9zc2libGUgdG8gY29tcGlsZSBhZ2Fpbi4KKwogMjAwOS0wMy0xOCAxMDo1MiAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmM6CkBAIC00MzI5LDYgKzExODQzLDIwIEBACiAgICBGaXggdmFsZ3JpbmQgd2FybmluZy4KICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFN0ZXBoZW4gSGVtbWluZ2VyCiAKKzIwMDktMDMtMTcgMjI6NTcgIG1hZ2ZyCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuaDoKKworICAgUEFUQ0g6IDI2ODgzNDI6IGZyb20gIkJhcnQgVmFuIEFzc2NoZSI6IFVzZSBwcm9wZXIgZnVuY3Rpb24KKyAgIHBvaW50ZXJzCisKKzIwMDktMDMtMTMgMjE6MjYgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmM6CisKKyAgIFByb2Nlc3MgaHJNZW1vcnlTaXplIChzY2FsYXIpIHNlcGFyYXRlbHkgZnJvbSBoclN0b3JhZ2VUYWJsZS4KKyAgIFRoaXMgc2ltcGxpZmllcyB0aGUgaGFuZGxlciBjb2RlIHN0cnVjdHVyZS4KKwogMjAwOS0wMy0xMyAyMToyMyAgZHRzMTIKIAogICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jLCAgIApAQCAtNDM1Myw2ICsxMTg4MSwyNyBAQAogICAgKEFuIGFsdGVybmF0aXZlIG1pZ2h0IGJlIHRvIGNyZWF0ZSBhIG5ldyBlbnRyeSBpbnN0ZWFkKS4KICAgIFByb2JsZW0gcmVwb3J0ZWQgYnkgTmljayBIaW5kbGV5CiAKKzIwMDktMDMtMTAgMTU6MjUgIGpzYWZyYW5laworCisgICAqIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgorCisgICBORVdTOiBzbm1wZDogaXBBZGRyZXNzU3BpbkxvY2sgaW1wbGVtZW50ZWQKKworMjAwOS0wMy0wMiAxMToyMyAgZHRzMTIKKworICAgKiBDT1BZSU5HOgorCisgICBGaXggYXR0cmlidXRpb24gb2YgbGF0ZXN0IGNvcHlyaWdodCBub3RpY2UuCisKKzIwMDktMDItMjggMTg6MjEgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBNb3ZlIHRoZSAjZGVmaW5lIGNvbmZpZ18qKC4uLikgZnJvbSBhY2NvbmZpZy5oIHRvIHRoZSBjb25maWd1cmUKKyAgIHNjcmlwdCBzbyB0aGF0IHRoZXkgYXJlIG5leHQgdG8gdGhlIGNvZGUgdGhhdCBoYW5kbGUgdGhlCisgICBjb3JyZXNwb25kaW5nIGNvbmZpZ18qIHRva2VuLgorCiAyMDA5LTAyLTI3IDEzOjIwICBqc2FmcmFuZWsKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYzoKQEAgLTQzNjIsNiArMTE5MTEsMjAgQEAKICAgIEl0J3MgYmVpbmcgd3JpdHRlbiB0byBsb2cgZXZlcnl0aW1lIHNvbWVvbmUgcXVlcmllcwogICAgVUNELVNOTVAtRElTS0lPIE1JQi4KIAorMjAwOS0wMi0yNSAwNjo0MSAgbWFnZnIKKworICAgKiBhcHBzL3NubXBuZXRzdGF0L2lmLmM6CisKKyAgIFVzZSB0aGUgZmVhdHVyZSB0ZXN0IG1hY3JvcyB0byBzZXQgd2hhdCBpcyBuZWVkZWQuCisgICBEbyBub3QgdXNlIHRoZSBpbnRlcm5hbCBHTlUgbGliYyBtYWNyb3MgdGhhdCBhcmUgc2V0IGJ5IHNldHRpbmcKKyAgIHRoZSBmZWF0dXJlIHRlc3QgbWFjcm9zLgorCisyMDA5LTAyLTI1IDA2OjM4ICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcFVuaXhEb21haW4uYzoKKworICAgQWRkIG1pc3NpbmcgaW5jbHVkZS4KKwogMjAwOS0wMi0yNCAwNzoyNiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgpAQCAtNDM2OSwyNyArMTE5MzIsOTQgQEAKICAgIENIQU5HRVM6IE1ha2UgLUxOIHN0b3AgZHVtcGluZyBjb3JlLiBNYWtlIGJhZCBkZWJ1ZyBsZXZlbHMgcmVwb3J0CiAgICB0aGUgb2ZmZW5kaW5nIHN5bWJvbC4KIAotMjAwOS0wMi0xOCAxNToyNyAganNhZnJhbmVrCisyMDA5LTAyLTI0IDA2OjUwICBtYWdmcgogCi0gICAqICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jLCAgIAotICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMsICAgCi0gICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5jLCAgIAorICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgsICAgCisgICAgICBzbm1wbGliL3NubXBVbml4RG9tYWluLmM6CisKKyAgIE1vdmUgdGhlIGRpcmVjdG9yeSBjcmVhdGlvbiBjb2RlIHRvIGhhcHBlbiBhZnRlciB0aGUgZG9tYWluCisgICBzZWxlY3Rpb24gY29kZSBzbyB0aGF0IHRoZSBkaXJlY3RvcnkgY3JlYXRpb24gY29kZSBrbm93cyB3aGF0CisgICBkaXJlY3RvcnkgdG8gY3JlYXRlLgorCisyMDA5LTAyLTI0IDA2OjQ3ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIENoYW5nZSB0aGUgZXJyb3IgY2hlY2tpbmcgb3B0aW9uIC0tZW5hYmxlLW15c3FsIHRvIHN1Z2dlc3QgdGhhdAorICAgdGhhdCAtLXdpdGgtbXlzcWwgaXMgdXNlZCByYXRoZXIgdGhhdCAtLXdpdGgtb3BlbnNzbC4KKworMjAwOS0wMi0yNCAwNjo0NCAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlZ2VuZXJhdGUgYXV0b2NvbmYgYXJ0aWZhY3RzLgorCisyMDA5LTAyLTIzIDE4OjQzICByc3RvcnkKKworICAgKiBhcHBzL3NubXB0cmFwZF9zcWwuYzoKKworICAgYWRkIGZvcmdvdHRlbiBmaWxlCisKKzIwMDktMDItMjAgMDQ6NDEgIGhhcmRha2VyCisKKyAgICogIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50LCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIsIAorICAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wZXJsX3B5dGhvbiwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIGFkZGVkIGVtYWNzIGF1dG9jb25mIG1vZGUgc3BlY2lmaWVyCisKKzIwMDktMDItMTkgMTg6MzIgIHJzdG9yeQorCisgICAqIFJFQURNRS5zcWwsIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZjoKKworICAgZG9jdW1lbnQgbmV3IHNxbCB0cmFwIGxvZ2dpbmcKKworMjAwOS0wMi0xOSAxODoyMCAgcnN0b3J5CisKKyAgICogIENPUFlJTkcsIE5FV1MsIGFwcHMvTWFrZWZpbGUuaW4sIGFwcHMvc25tcHRyYXBkLmMsICAgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oLCBjb25maWd1cmUsICAKKyAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgZGlzdC9zY2hlbWEtc25tcHRyYXBkLnNxbCwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTkVXUzogc25tcHRyYXBkOiBhZGQgdHJhcCBoYW5kbGVyIGZvciBsb2dnaW5nIHRyYXBzIHRvIGEgbXlzcWwKKyAgIGRhdGFiYXNlCisKKzIwMDktMDItMTkgMTc6NTggIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgsIHNubXBsaWIvY29udGFpbmVyLmMsICAgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9saXN0X3NzbGwuYzoKKworICAgTkVXUzogc25tcGxpYjogYWRkZWQgaXRlcmF0b3IgZm9yIHNpbmdseSBsaW5rZWQgbGlzdHM7IGFkZAorICAgY29udGFpbmVyIG5hbWUgaW4gbW9yZSBlcnJvciBtc2dzCisKKzIwMDktMDItMTggMTg6NTIgIHJzdG9yeQorCisgICAqIGFwcHMvc25tcHVzbS5jLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmg6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IGNoYW5nZSBNQVhfRU5HSU5FSURfTEVOR1RIIHRvIDMyLCBwZXIKKyAgIFNOTVAtRlJBTUVXT1JLLU1JQiBTbm1wRW5naW5lSUQgVEMKKworMjAwOS0wMi0xOCAxNDo0MSAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMsICAgCiAgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAgIAogICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jOgogCi0gICBGaXggc2N0cC1taWIgY29tcGlsYXRpb24gcHJvYmxlbXMKLQotMjAwOS0wMi0xOCAxNToyNyAganNhZnJhbmVrCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmg6Ci0KLSAgIEJhY2twb3J0IGdldF9waWRfZnJvbV9pbm9kZSBmcm9tIHRydW5rLCBpdCdzIG5lZWRlZCBieSBzY3RwLW1pYgorICAgQ29uZmlndXJlIHNjcmlwdCBkb2VzIG5vdCBsaWtlIG5ldC1zbm1wLWNvbmZpZy5oIGJlaW5nIGluY2x1ZGVkCisgICBmcm9tIGhlYWRlcgorICAgZmlsZXMsIHdoaWNoIGFyZSBhZGRlZCBieSAtLXdpdGgtbWliLW1vZHVsZXM9LCBsZXQncyByZW1vdmUgaXQKKyAgIGZyb20gdGhlcmUuCiAKIDIwMDktMDItMTYgMjE6MjQgIGhhcmRha2VyCiAKQEAgLTQzOTgsNiArMTIwMjgsMTAxIEBACiAgICBDSEFOR0VTOiBwZXJsOiBCVUcgMTU1NDgxNzogUGF0Y2ggZnJvbSB4YW5jbzogZml4IHRoZSBjbGFzcwogICAgYXNzaWdtZW50IHNvIGdldFJvb3RPSUQgd29ya3MgcHJvcGVybHkuCiAKKzIwMDktMDItMTUgMDc6MjAgIG1hZ2ZyCisKKyAgICogYWNjb25maWcuaDoKKworICAgQ29ycmVjdCBjb3B5L3Bhc3RlIG1pc3Rha2UKKworMjAwOS0wMi0xMiAwMDoyNSAgaGFyZGFrZXIKKworICAgKiAgYWNjb25maWcuaCwgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wRFRMU1VEUERvbWFpbi5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBtaWJzL05FVC1TTk1QLVRDLnR4dCwgICAKKyAgICAgIHNubXBsaWIvc25tcERUTFNVRFBEb21haW4uYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wdHNtLmM6CisKKyAgIEFuIGVhcmx5IGV4cGVyaW1lbnRhbCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgRFRMUyBvdmVyIFVEUAorICAgdHJhbnNwb3J0IGZyb20gdGhlIElFVEYgSVNNUyB3b3JraW5nIGdyb3VwCisKKzIwMDktMDItMTEgMjM6MzAgIGhhcmRha2VyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgdXBkYXRlZCByZWxlYXNlIGluc3RydWN0aW9ucworCisyMDA5LTAyLTA2IDIxOjM2ICBtYWdmcgorCisgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKKworICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCBhcyBDKysgYWdhaW4uCisKKzIwMDktMDItMDUgMjI6NTYgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYywgY29uZmlndXJlLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1Lmg6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBBc3N1bWUgdGhhdCB0aGUgdGFyZ2V0IHBsYXRmb3JtIHN1cHBvcnRzIG1lbWNweSwKKyAgIG1lbW1vdmUsIG1lbXNldCwgc3RyY2hyIGFuZCBzdHJyY2hyLgorCisyMDA5LTAyLTA0IDA2OjU3ICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIHNubXBsaWIvc25tcF9kZWJ1Zy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2xvZ2dpbmcuYywgc25tcGxpYi9zbnByaW50Zi5jLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTkVXUzogUmVtb3ZlIHN1cHBvcnQgZm9yIHVzZSBvZiB2YXJhcmdzLmguIE5vdyBhc3N1bWVzIHRoYXQKKyAgIHN0ZGFyZy5oIGlzIGF2YWlsYWJsZS4KKworMjAwOS0wMi0wNCAwNjo0OSAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oLCBzbm1wbGliL3JlYWRfY29uZmlnLmMsICAgCisgICAgICBzbm1wbGliL3NubXB2My5jOgorCisgICBORVdTOiBzbm1wbGliOiBJbnRyb2R1Y2UgcHJpbnRmLWxpa2UgdmVyc2lvbnMgb2YgY29uZmlnX3BlcnJvcgorICAgYW5kIGNvbmZpZ19wd2FybiAobmV0c25tcF9jb25maWdfZXJyb3IgYW5kIG5ldHNubXBfY29uZmlnX3dhcm4pLgorICAgUmVwbGFjZSBtYW55IGluc3RhbmNlcyBvZiB7IHRtcGJ1ZlsuLi5dOyBzcHJpbnRmKHRtcGJ1ZiwgLi4uKTsKKyAgIGNvbmZpZ19wKih0bXBidWYpOyB9IHdpdGggbmV0c25tcF9jb25maWdfKiguLi4pOworCisyMDA5LTAyLTAzIDE2OjE0ICBoYXJkYWtlcgorCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaDoKKworICAgYWRkIHRoZSByZWdpbmZvIGFuZCBhbmQgc2Vzc2lvbiBwb2ludGVyIHRvIHRoZSBSRUdJU1RFUl9PSUQKKyAgIGNhbGxiYWNrCisKKzIwMDktMDItMDMgMDA6MTggIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgZml4ZWQgLWxzc2wgY2hlY2sKKwogMjAwOS0wMS0yOSAwODozOCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CkBAIC00NDA5LDE0ICsxMjEzNCwxNCBAQAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKIAogICAgRml4IHNyYy9kc3QgY29uZnVzaW9uCi0gICBQYXRjaCBwcm92aWRlZCBieSBLcnp5c3p0b2YgT2y/ZHpraQorICAgUGF0Y2ggcHJvdmlkZWQgYnkgS3J6eXN6dG9mIE9sxJlkemtpCiAKIDIwMDktMDEtMjggMDk6MjkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CiAKICAgIENIQU5HRVM6IEZpeCB0d28gYnVncyB3aXRoIHNtdXggcGFzc3dvcmQgc3VwcG9ydC4KLSAgIFBhdGNoIHN1cHBsaWVkIGJ5IEtyenlzenRvZiBPbL9kemtpCisgICBQYXRjaCBzdXBwbGllZCBieSBLcnp5c3p0b2YgT2zEmWR6a2kKIAogMjAwOS0wMS0yMyAxNDo1MyAganNhZnJhbmVrCiAKQEAgLTQ0MjQsNiArMTIxNDksNTEgQEAKIAogICAgRml4IHBhcnNpbmcgb2YgbGV2ZWwgcmFuZ2VzIGluICctTDxjYXBpdGFsPicuCiAKKzIwMDktMDEtMjAgMTQ6NTEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzOgorCisgICBDaGVjayBmb3IgdGhlIGV4aXN0ZW5jZSBvZiA8cnBtL3JwbWZpbGV1dGlsLmg+IGJlZm9yZSBpbmNsdWRpbmcKKyAgIGl0LgorCisyMDA5LTAxLTE5IDIwOjUwICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYzoKKworICAgTWFrZSBpdCBwb3NzaWJsZSB0byBidWlsZCB3aXRob3V0IElQdjYgYWdhaW4uCisKKzIwMDktMDEtMTkgMTU6MDEgIGpzYWZyYW5laworCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmgsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE5Mjc3NTE6IGZyb20gTWl0c3VydSBDaGluZW46IGltcGxlbWVudAorICAgaWNtcE1zZ1N0YXRzVGFibGUgb24gTGludXgKKworMjAwOS0wMS0xOSAwOTo0MSAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oLCAgIAorICAgICAgbWlicy9VQ0QtU05NUC1NSUIudHh0OgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDI0NDkyMTA6IGFkZCA2NC1iaXQgZGlzayB1c2FnZSBzdGF0aXN0aWNzIHRvCisgICBVQ0QtU05NUC1NSUI6OmRza1RhYmxlCisKKzIwMDktMDEtMTggMDc6NDAgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgQ0hBTkdFUzogQlVHOiAyMTY4MTgwOiBDaGFuZ2VkIC0tZGlzYWJsZS1yZWVudHJhbnQgdG8gbm90CisgICBhY3RpdmF0ZSB0aGUgcmVlbnRyYW50IGNvZGUgYW5kIG1hZGUgLS1lbmFibGUtcmVlbnRyYW50IGFjY2VwdCBubworICAgdmFsdWVzIG90aGVyIHRoYW4geWVzIGFuZCBuby4gRGlkIHRoZSBzYW1lIGZvcgorICAgLS1lbmFibGUtbWliLWNvbmZpZy1jaGVja3MsIC0tZW5hYmxlLW1pYi1jb25maWctZGVidWcsCisgICAtLXdpdGgtZGVmYXVsdHMsIC0tZW5hYmxlLWRldmVsb3BlciBhbmQgLS1lbmFibGUtdGVzdGluZy1jb2RlIGFzCisgICB3ZWxsLgorCiAyMDA5LTAxLTEzIDA5OjE3ICBqc2FmcmFuZWsKIAogICAgKiBzbm1wbGliL2FzbjEuYzoKQEAgLTQ0MzQsNiArMTIyMDQsNjMgQEAKICAgIGVhY2ggc3ViaWRlbnRpZmllci4gVGhpcyBpcyBub3cgY2hlY2tlZCBhbmQgcGFyc2luZyBvZiBPSUQgZmFpbHMsCiAgICBpZiB0aGlzIGNvbmRpdGlvbiBpcyBub3QgbWV0LgogCisyMDA5LTAxLTExIDIxOjU0ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGU6CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBDaGVjayB0aGF0IHRoZSB0ZW1wLWZpbGUtcGF0dGVybiBlbmRzIGluIDYgWCdzCisgICBhcyBta3N0ZW1wIGFuZCBta3RlbXAgcmVxdWlyZSB0aGF0LgorCisyMDA5LTAxLTExIDIxOjM4ICBtYWdmcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEJlIGEgbG90IG1vcmUgc3RyaWN0IG9uIHRoZSB2YWx1ZXMgdGhhdCBhcmUKKyAgIGFjY2VwdGFibGUgZm9yIC0td2l0aC1wZXJzaXN0ZW50LW1hc2sgKG9ubHkgYWxsb3cgdGhyZWUgb2N0YWwKKyAgIGRpZ2l0cykKKworMjAwOS0wMS0xMSAyMDo0MiAgbWFnZnIKKworICAgKiAgYWNsb2NhbC5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZSwgICAKKyAgICAgIG00L25ldHNubXBfYXJnLm00OgorCisgICBDSEFOR0VTOiBidWlsZGluZzogV2UgYXJlIGN1cnJlbnRseSB1c2luZyB0aGUgcHJhY3RpY2Ugb2YgYWRkaW5nCisgICBhIG1pcnJvcmluZyBBQ19BUkdfV0lUSC9FTkFCTEUgdG8gZWFjaCBBQ19BUkdfRU5BQkxFL1dJVEguIFRoaXMKKyAgIHBhdGNoIGFkZHMgTkVUU05NUF9BUkdfV0lUSC9FTkFCTEUgbWFjcm9zIHRoYXQgYXV0b21hdGljYWxseSBhZGRzCisgICB0aGUgbWlycm9yIHZhcmlhYmxlIGFuZCB0aGVuIGNvbnZlcnRzIHRoZSBjb25maWd1cmUgbWFjaGluZXJ5IHRvCisgICB1c2UgdGhlbS4KKworMjAwOS0wMS0xMSAyMDozNiAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgorCisgICBNb3ZlIEFDX0RFRklORVMgaW4gY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUgdG8gYmUgbG9jYXRlZCBuZXh0CisgICB0byB0aGUgQUNfQVJHXy4uLiB0aGV5IGRlcGVuZCBvbi4KKworMjAwOS0wMS0xMSAyMDozNCAgbWFnZnIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgQ2hhbmdlIHRoZSBkZWZhdWx0IHZlcnNpb24gbnVtYmVyIGNoZWNraW5nIHRvIGJlIGVhc2llciB0byByZWFkCisKKzIwMDktMDEtMTEgMTk6MTkgIG1hZ2ZyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgTW92ZSB0aGUgbGFzdCBBQ19BUkdfLi4uJ3MgdG8gY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUuCisKKzIwMDktMDEtMTEgMTk6MDggIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IENoYW5nZSB0aGUgbWFjcm8gZm9yIC0td2l0aC1mZWF0dXJlcy1vZiBmcm9tCisgICBBQ19BUkdfRU5BQkxFIHRvIEFDX0FSR19XSVRIIGluIG9yZGVyIHRvIG1ha2UgdGhlIG9wdGlvbiBiZQorICAgLS13aXRoLWZlYXR1cmVzLW9mLgorCiAyMDA5LTAxLTA4IDEwOjQ1ICBqc2FmcmFuZWsKIAogICAgKiBzbm1wbGliL3NubXBfbG9nZ2luZy5jOgpAQCAtNDQ0OCwxMiArMTIyNzUsMjA5IEBACiAgICBpbiBzdGFibGUKICAgIGJyYW5jaGVzLiBXZSBub3cgc3VwcG9ydCBib3RoIG9mIHRoZW0uCiAKKzIwMDktMDEtMDggMDM6NTEgIG1hZ2ZyCisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICBEbyBub3QgZGVwZW5kIG9uIHRoZSBleGlzdGFuY2Ugb2YgL2Jpbi9zaC4gQWxzbyBmb2xsb3cgdGhlIGFkdmljZQorICAgb2YgdGhlIGF1dG9jb25mIG1hbnVhbCBhbmQgZmluYWxseSBhbGxvdyBmb3IgbGlidG9vbCB0aGF0IGFkb3B0cworICAgdGhlIGdlbmVyYXRlZCBzY3JpcHQgYWZ0ZXIgdGhlIGNhcGFiaWxpdGllcyBvZiBTSEVMTC4KKworMjAwOS0wMS0wNyAxNjowMiAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVyczoKKworICAgUmVvcmRlciB0aGUgbmV0aW5ldC9pY21wX3Zhci5oIGFuZCBuZXRpbmV0L2lwX2ljbXAuaCwgdGhlIGxhdGVyCisgICBvbmUgbXVzdCBiZSBjaGVja2VkIGZpcnN0IG9uIEZyZWVCU0QgNworCiAyMDA5LTAxLTA2IDIyOjIzICBoYXJkYWtlcgogCiAgICAqIENPUFlJTkc6CiAKICAgIHVwZGF0ZSBTUEFSVEEgZm9yIDIwMDkKIAorMjAwOS0wMS0wMyAyMDoyMyAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIG00L2FjX3Byb21wdF91c2VyLm00OgorCisgICBVcGdyYWRlIHRoZSBBQ19QUk9NUFRfVVNFUiBtYWNyb3MgdG8gYXV0b2NvbmYgMi42MyB3aGVyZQorICAgQUNfRkRfTVNHIGlzIGRlcHJlY2F0ZWQgYW5kIEFTX01FU1NBR0VfRkQgaXMgcmVjb21tZW5kZWQuCisKKzIwMDktMDEtMDMgMTQ6MjAgIG1hZ2ZyCisKKyAgICogIGFjaW5jbHVkZS5tNCwgYWNsb2NhbC5tNCwgY29uZmlndXJlLCBtNC9hY19hZGRfc2VhcmNoX3BhdGgubTQsICAgCisgICAgICBtNC9hY19tc2dfY2FjaGUubTQsIG00L2FjX21zZ19tb2R1bGVfZGJnLm00LCAgIAorICAgICAgbTQvYWNfcHJvbXB0X3VzZXIubTQsIG00L25ldHNubXBfc2VhcmNoX2xpYnMubTQ6CisKKyAgIFNwbGl0IGFjaW5jbHVkZS5tNCBpbnRvIHNtYWxsZXIgcGFydHMgYnkgZnVuY3Rpb24uCisKKzIwMDktMDEtMDMgMTQ6MTUgIG1hZ2ZyCisKKyAgICogTWFrZWZpbGUuYW06CisKKyAgIE1ha2UgYXV0b3JlY29uZiB3b3JrIGFnYWluLgorCisyMDA5LTAxLTAzIDE0OjExICBtYWdmcgorCisgICAqICBhY2xvY2FsLm00LCBjb25maWcuZ3Vlc3MsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgaW5zdGFsbC1zaCwgbHRtYWluLnNoLCBtNCwgCisgICAgICAgIG00L2xpYnRvb2wubTQsIG00L2x0b3B0aW9ucy5tNCwgbTQvbHRzdWdhci5tNCwgbTQvbHR2ZXJzaW9uLm00LCAKKyAgICAgICAgbTQvbHR+b2Jzb2xldGUubTQ6CisKKyAgIFVwZGF0ZSB0byBsaWJ0b29sLTIuMi40CisKKzIwMDktMDEtMDMgMTM6MjggIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGliczoKKworICAgY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnM6IENoZWNrIGZvciBhIGZ1bmN0aW9uLCBub3QgYSBtYWNyby4KKyAgIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZQorCisyMDA5LTAxLTAzIDAxOjAzICBoYXJkYWtlcgorCisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzOgorCisgICByZXF1aXJlIC1sc3NsOyB3aWxsIGJlIGNoYW5nZWQgbGF0ZXIgdG8gZG8gJ2lmIG5lZWRlZCcKKworMjAwOS0wMS0wMyAwMDoxOSAgbWFnZnIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGFnZW50L21pYmdyb3VwL21pYklJLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5oLCBhZ2VudC9taWJncm91cC90YXJnZXQuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogVW5pZnkgYWxsIHNubXBkIHN0YXRpc3RpYyB2YXJpYWJsZXMgYW5kIG1ha2UgdGhlCisgICBoYW5kbGVycyBpbnN0YW5jZXMgb2YgYSBjb21tb24gaGFuZGxlci4KKworMjAwOS0wMS0wMSAxNzoyNiAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXB0c20uYzoKKworICAgY2xlYW4gdXAgYSBmZXcgY29tbWVudHMgYW5kIHJlbW92ZSB1bnVzZWQgZnVuY3Rpb24KKworMjAwOS0wMS0wMSAxNzoyNSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXB0c20uYzoKKworICAgZml4IHZhcmlvdXMgbWlub3IgbWVtb3J5IGxlYWsgaXNzdWVzCisKKzIwMDktMDEtMDEgMTQ6MjggIG1hZ2ZyCisKKyAgICogIGFnZW50L2FnZW50X2hhbmRsZXIuYywgYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMsIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oLCBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMsIAorICAgICAgICBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYsIGxvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mLCAgIAorICAgICAgbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZiwgbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYsICAgCisgICAgICBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYsIGxvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYsICAgCisgICAgICBsb2NhbC9taWIyYy5yb3cuY29uZiwgbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYsICAgCisgICAgICBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmY6CisKKyAgIE5FV1M6IHNubXBsaWI6IENoYW5nZSB0aGUgdHlwZSBvZiB0aGUgb2lkIGFyZ3VtZW50cyBmcm9tIG9pZCogdG8KKyAgIGNvbnN0IG9pZCouIFVwZGF0ZSBtaWIyYyB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgY2hhbmdlLgorCisyMDA5LTAxLTAxIDEzOjU2ICBtYWdmcgorCisgICAqIGFnZW50L2FnZW50X2hhbmRsZXIuYzoKKworICAgQ2hlY2sgcmV0dXJuIHZhbHVlcyBhbmQgZnJlZSBhbGxvY2F0ZWQgcmVzb3VyY2VzIG9uIGVycm9yLgorCisyMDA5LTAxLTAxIDEyOjU0ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgRG8gbm90IGxlYWsgYWxpYXNfbGlzdCBvbiByZXR1cm4gZnJvbSBfbmV4dF9hbGlhcy4KKworMjAwOS0wMS0wMSAxMToyNiAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmM6CisKKyAgIE1ha2UgdmFyaWFibGUgY29uc3QgYXMgaXQgbmV2ZXIgaXMgY2hhbmdlZC4KKworMjAwOS0wMS0wMSAxMToyNSAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYzoKKworICAgUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KKworMjAwOC0xMi0zMSAyMTo0MSAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBkb24ndCB1c2UgdGhlIGZ1bmN0aW9ucyBpZiB3ZSdyZSBub3QgbGlua2VkIHdpdGggb3BlbnNzbAorCisyMDA4LTEyLTMxIDIwOjU2ICBoYXJkYWtlcgorCisgICAqIHBlcmwvVHJhcFJlY2VpdmVyL2NvbnN0LWMuaW5jLCBwZXJsL1RyYXBSZWNlaXZlci9jb25zdC14cy5pbmM6CisKKyAgIG5ld2VyIHBlcmwgZ2VuZXJhdGVkIHVwZGF0ZXMKKworMjAwOC0xMi0zMSAxODowMiAgaGFyZGFrZXIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIGFkZGVkIGEgZmV3IG1vcmUgcmVjdi9zZW5kIGRlYnVnZ2luZyBzdGF0ZW1lbnRzCisKKzIwMDgtMTItMzEgMTg6MDIgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmM6CisKKyAgIEFsbG93IHF1b3RlZCBzZWN1cml0eSBuYW1lcyBmb3Igb25lcyBjb250YWluaW5nIHNwYWNlcworCisyMDA4LTEyLTMxIDE4OjAxICBoYXJkYWtlcgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9vcGVuc3NsLmgsIHNubXBsaWIvTWFrZWZpbGUuaW4sICAgCisgICAgICBzbm1wbGliL3NubXBfb3BlbnNzbC5jOgorCisgICBhbiBvcGVuc3NsIGluaXRpYWxpemF0aW9uIHdyYXBwZXIKKworMjAwOC0xMi0zMCAwMDowMyAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0ZXN0LmMsIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6CisKKyAgIFVzZSBzbm1wX2R1cGxpY2F0ZV9vYmppZCBpbnN0ZWFkIG9mIHZhcmlvdXMgbWFsbG9jK21lbWNweQorICAgdmFyaWFudHMgaW4gb3JkZXIgdG8gbWFrZSBjbGVhcmVyIGNvZGUuCisKKzIwMDgtMTItMjkgMjM6MzQgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCwgc25tcGxpYi9hc24xLmM6CisKKyAgIFVzZSBmb3JtYXQgc3RyaW5ncyBmb3IgcHJpbnRmLWxpa2UgZnVuY3Rpb25zLgorICAgUHJlZmVyIHN0cmNweSBvdmVyIHNwcmludGYoZGVzdCwgIiVzIiwgc3JjKQorICAgUHJlZmVyIERFQlVHTVNHVEwoKGZvcm1hdCwgYXJncykpIG92ZXIgc3ByaW50Zihsb2NhbCwgZm9ybWF0LAorICAgYXJncyk7IERFQlVHTVNHVEwoKCIlcyIsIGxvY2FsKSkKKworMjAwOC0xMi0xOCAxNzowNCAgaGFyZGFrZXIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCwgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOgorCisgICBleHBvcnQgb3V0IG9mIHRoZSBmaWxlIHNvbWUgaGVscGZ1bCBnZW5lcmljIHVkcCBmdW5jdGlvbnMKKworMjAwOC0xMi0xNiAwMDoxMyAgaGFyZGFrZXIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaDoKKworICAgY2hhbmdlIGxvY2Fsc20gc2VjdXJpdHkgbW9kZWwgdG8gdHNtIChhbmQgYWRkIDEpCisKIDIwMDgtMTItMTUgMjM6MjUgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jOgpAQCAtNDQ2MSwxMiArMTI0ODUsNjEgQEAKICAgIFBhdGNoIHRvIGNoYW5nZSBhIHR5cGVkZWYgbmFtZSBmcm9tIGxpbmsgdG8gbm9kZWxpbmsgdG8gYXZvaWQKICAgIG5hbWluZyBjb25mbGljdCBpc3N1ZXMuCiAKLTIwMDgtMTItMDkgMDE6MDEgIGhhcmRha2VyCisyMDA4LTEyLTA5IDAxOjQxICBoYXJkYWtlcgogCi0gICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wbG9jYWxzbS5oLCBzbm1wbGliL3NubXBsb2NhbHNtLmM6CisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmM6CiAKLSAgIEFzIGFncmVlZCBpbiB0aGUgYWRtaW4gbWVldGluZywgcmVtb3ZlIHRoZSBvbGRlciBzbm1wbG9jYWxzbQotICAgc2VjdXJpdHkgbW9kZWwKKyAgIHVzZSBpbnQzMl90IGluc3RlYWQgb2YgaW50XzMyIHdoaWNoIGRvZXNuJ3Qgd29yayBhdCBhbGwgb24gRjEwCisKKzIwMDgtMTItMDkgMDE6MDcgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgcmVtb3ZlIHRoZSBub3RlIHRoYXQgd2UgbW92ZWQgdG8gc3ZuLi4uIG9ic29sZXRlIGF0IHRoaXMgcG9pbnQsCisgICB0byBzYXkgdGhlIGxlYXN0CisKKzIwMDgtMTItMDkgMDE6MDUgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgbWVudGlvbiB0aGUgVFNNIGltcGxlbWVudGF0aW9uCisKKzIwMDgtMTItMDkgMDA6NTggIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZsYWcgc29tZSBzdGVwcyBhbmQgbWFuZGF0b3J5CisKKzIwMDgtMTItMDkgMDA6NTcgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaDoKKworICAgcmVtb3ZlIGFjY2lkZW50aWFsIG5ldyBkZWZpbmVzIHRoYXQgYXJlbid0IG5lZWRlZCB5ZXQKKworMjAwOC0xMi0wOSAwMDo1NiAgaGFyZGFrZXIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBsb2NhbHNtLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oLCBzbm1wbGliL3NubXBsb2NhbHNtLmMsICAgCisgICAgICBzbm1wbGliL3NubXB0c20uYzoKKworICAgcmVtb3ZlIG9sZGVyIGxvY2Fsc20gc2VjdXJpdHkgbW9kZWwgYW5kIHJlcGxhY2Ugd2l0aCBhIG5ld2VyIFRTTQorICAgYmFzZWQgb24gdGhlIHVwY29taW5nIElFVEYgc3BlYworCisyMDA4LTEyLTA5IDAwOjUwICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgZml4IGlzc3VlIHdpdGggY29udGV4dCBwcm9iaW5nCisKKzIwMDgtMTItMDQgMTI6MzMgIGpzYWZyYW5laworCisgICAqIGFnZW50L3NubXBkLmMsIGFwcHMvc25tcHRyYXBkLmM6CisKKyAgIERhZW1vbml6ZSBhZnRlciB0cmFuc3BvcnRzIGFyZSBjcmVhdGVkIGFuZCBsaXN0ZW5pbmcgc29ja2V0cyBhcmUKKyAgIGJvdW5kIHRvIGFwcHJvcHJpYXRlIHBvcnRzLiBUaGlzIGFsbG93cyB0byBleGl0IHdpdGggbm96ZXJvIGV4aXQKKyAgIGNvZGUgd2hlbiB0aGUgYmluZGluZyBmYWlscy4KIAogMjAwOC0xMi0wNCAxMTo0NCAganNhZnJhbmVrCiAKQEAgLTQ0NzUsNiArMTI1NDgsNDAgQEAKIAogICAgUHJpbnQgcG9ydHMgYXMgdW5zaWduZWQgbnVtYmVycy4KIAorMjAwOC0xMS0yNCAxOTowOSAgdGFuZGVycworCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaDoKKworICAgX19FWFRFTlNJT05TX18gaXMgbm93IGhhbmRsZWQgYnkgY29uZmlndXJlCisKKzIwMDgtMTEtMjIgMTg6MzYgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudDoKKworICAgRG8gbm90IHRyeSB0byB1c2UgdGhlIG1vZHVsZSBsaXN0IGFzIGEgZmlsZSB0aGF0IHNob3VsZCBiZQorICAgaW5jbHVkZWQgaW4gdGhlIGJ1aWxkLCB0aHVzIG1ha2luZyBpdCBwb3NzaWJsZSB0byBidWlsZCBvbgorICAgU29sYXJpcy4KKworMjAwOC0xMS0yMCAyMjozMCAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfaGFuZGxlci5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGEuYywgYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMsIAorICAgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBSZXBsYWNlIG1lbWR1cCgodV9jaGFyKiopJngsICh1X2NoYXIqKXksIHogKiBzaXplb2Yob2lkKSkgd2l0aCB4CisgICA9IHNubXBfZHVwbGljYXQKKyAgIGVfb2JqaWQoeSwgeikgc2luY2UgdGhlIGxhdGVyIGlzIGVhc2llciB0byByZWFkIGFuZCBleHByZXNzZXMgdGhlCisgICBpbnRlbnRpb24gb2YgdAorICAgaGUgY29kZSBjbGVhcmVyLgorCisyMDA4LTExLTIwIDIyOjAxICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgVXNlIG1lbWNweSBpbnN0ZWFkIG9mIG1lbW1vdmUgdG8gY29weSBvaWRzIGFzIGl0IGlzIGtub3duIHRoYXQKKyAgIHRoZSBhcmVhcyBhcmUgbm9ub3ZlcmxhcHBpbmcuCisKIDIwMDgtMTEtMjAgMjA6NTEgIG1hZ2ZyCiAKICAgICogc25tcGxpYi9zbm1wU1RERG9tYWluLmM6CkBAIC00NDg4LDYgKzEyNTk1LDM1IEBACiAgICBDSEFOR0VTOiBEbyBub3QgdXNlICVtIGluIHByaW50Zi1mb3JtYXR0ZWQgc3RyaW5ncyBzaW5jZSAlbSBpbgogICAgcHJpbnRmIGlzIGEgZ2xpYmMgZXh0ZW5zaW9uLgogCisyMDA4LTExLTE2IDIyOjAxICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZS5hYzoKKworICAgQnVtcCB0aGUgcmVxdWlyZWQgYXV0b2NvbmYgdmVyc2lvbiB0byAyLjYzIGFzIHBlciAxNzMwMS4KKworMjAwOC0xMS0xNiAyMTo1NSAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnM6CisKKyAgIFJlbW92ZSBhbiB1bnVzZWQgZnVuY3Rpb24gZnJvbSB0aGUgY29uZmlndXJlIHRlc3QgZm9yIF9fZnVuY19fLgorCisyMDA4LTExLTE2IDIxOjUxICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfaGVhZGVycywgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0LCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTTQgdXNlcyBkbmwsIG5vdCBcIGZvciBsaW5lIGNvbmNhdGVuYXRpb24uCisgICBcIGludHJvZHVjZWQgYSBzcHVyaW91cyBkZWZpbmUgaW4gbmV0LXNubXAtY29uZmlnLmguaW4sIHRodXMgdGhpcworICAgY2hhbmdlLgorICAgUmVyYW4gYXV0b2NvbmYgYW5kIGF1dG9oZWFkZXIuCisKKzIwMDgtMTEtMTMgMjI6MTQgIHRhbmRlcnMKKworICAgKiBjb25maWd1cmU6CisKKyAgIE5FV1M6IGJ1aWxkOiB1cGRhdGUgdG8gYXV0b2NvbmYgMi42MworCiAyMDA4LTExLTEzIDAwOjMwICB0YW5kZXJzCiAKICAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKQEAgLTQ0OTcsMTEgKzEyNjMzLDE3IEBACiAKIDIwMDgtMTEtMTMgMDA6MjYgIHRhbmRlcnMKIAotICAgKiBjb25maWd1cmUuaW46CisgICAqIGNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50OgogCiAgICBmaXggdHlwbwogCi0yMDA4LTExLTEzIDAwOjI0ICB0YW5kZXJzCisyMDA4LTExLTEzIDAwOjI2ICB0YW5kZXJzCisKKyAgICogY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfYWdlbnQ6CisKKyAgIGZpeCB0eXBvCisKKzIwMDgtMTEtMTMgMDA6MTkgIHRhbmRlcnMKIAogICAgKiBkaXN0L2V4dHJhY3RuZXdzOgogCkBAIC00NTI3LDEyICsxMjY2OSwxMTcgQEAKICAgIE5FV1M6IHNubXBkOiBBcHBseWluZyBwYXRjaCBmcm9tIE1hZ251cyBGcm9tcmVpZGUgdG8gZml4IHRoZQogICAgZ2V0YnVsayBpc3N1ZSByZXBvcnRlZCBieSBPc2NhciBNaXJhLVNhbmNoZXoKIAorMjAwOC0xMC0zMCAyMjozNCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlOgorCisgICByZW1vdmUgdGhlIG9sZGVyIChvYnNvbGV0ZSkgbWFrZXJlbGVhc2Ugc2NyaXB0CisKKzIwMDgtMTAtMjIgMTc6MjQgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jLCBzbm1wbGliL3NubXBfY2xpZW50LmM6CisKKyAgIE1ha2UgaXQgcG9zc2libGUgdG8gYnVpbGQgdGhlIGxpYiB1c2luZyBhIEMrKyBjb21waWxlciBvbmNlIG1vcmUuCisKIDIwMDgtMTAtMjIgMDc6MjkgIGR0czEyCiAKICAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgogCiAgICBEb24ndCBjbGVhciBzZXNzaW9uIGZsYWdzIHdoZW4gdGVzdGluZyBvbmUgYml0LgogCisyMDA4LTEwLTIxIDIxOjEwICBtYWdmcgorCisgICAqICBBR0VOVC50eHQsIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlQ3RsVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsIGFnZW50L21pYmdyb3VwL21pYklJL210YV9zZW5kbWFpbC5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMsIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NubXBfcmlwMi5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaCwgbG9jYWwvbWliMmMub2xkLWFwaS5jb25mLCAgIAorICAgICAgd2luMzIvZGlzdC9odG1saGVscC9GQVEuaHRtbDoKKworICAgTkVXUzogbWlzYzogUEFUQ0g6IDE3Mzc3Mjc6IGZyb20gam95Y2Vhbm1hY2hpbmU6IEFkZCBhCisgICBORVRTTk1QX09MREFQSV8gcHJlZml4IHRvIHRoZSBhY2Nlc3MgbWFjcm9zIHRoYXQgYXJlIHVzZWQgaW4gdGhlCisgICBvbGQtYXBpIGhlbHBlci4KKyAgIEkgZGlkIGFkZCB0aGUgcHJlZml4IHRvIGFsbCB1c2VycyBpbiBvdXIgY29kZS4KKworMjAwOC0xMC0yMSAyMTowMCAgbWFnZnIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oLCBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaCwgCisgICAgICAgIHNubXBsaWIvbWliLmMsIHNubXBsaWIvcGFyc2UuYzoKKworICAgTkVXUzogbWlzYzogUEFUQ0g6IDE3Mzc3Mjc6IGZyb20gam95Y2Vhbm1hY2hpbmU6IFJlcGxhY2UgYWxsIHVzZXMKKyAgIG9mIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFIHdpdGggTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKKwogMjAwOC0xMC0xNiAwOTo1NiAganNhZnJhbmVrCiAKICAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKQEAgLTQ1NDIsNiArMTI3ODksNTEgQEAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjA4MjcyNjogY29ycmVjdGx5IHJlcG9ydCBOSUMgc3BlZWRzCiAgICBoaWdoZXIgdGhhbiA0R2JpdC9zCiAKKzIwMDgtMTAtMTYgMDg6MDAgIGpzYWZyYW5laworCisgICAqIG1hbjoKKworICAgU2NyYXRjaCBwcmV2aW91cyBjb21taXQsIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEgdG8gYmUgaWdub3JlZC4KKworMjAwOC0xMC0xNiAwNzozNyAganNhZnJhbmVrCisKKyAgICogbWFuOgorCisgICBBZGQgY29tcGlsZWQgbmV0LXNubXAtY29uZmlnLjEgdG8gc3ZuOmlnbm9yZSBsaXN0CisKKzIwMDgtMTAtMTUgMTI6NTcgIGpzYWZyYW5laworCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgsCisgICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuYywKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgsIAorICAgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIIDE3OTcxMTE6IGltcGxlbWVudCBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlCisKKzIwMDgtMTAtMTUgMDk6MjcgIHRhbmRlcnMKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIHBvcnRhYmlsaXR5IGZpeDogYXZvaWQgdmFyaWFibGUgZGVjbGFyYXRpb25zIGluIHRoZSBtaWRkbGUgb2YKKyAgIGNvZGUKKwogMjAwOC0xMC0xNCAxODo1NSAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKQEAgLTQ1NzAsNiArMTI4NjIsMjMgQEAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTk3NzQzOTogRml4IHBhc3MvX3BlcnNpc3QgYnVnIHdpdGggU0VUCiAgICBvaWQgdmFsdWUKIAorMjAwOC0xMC0xMiAxNzoyNCAgbWFnZnIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogUmVpbXBsZW1lbnRhdGlvbiBvZiBzbm1wTVBEU3RhdHMuCisKKzIwMDgtMTAtMTAgMjE6MTMgIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQ6CisKKyAgIENvbnNvbGlkYXRlIGNoZWNrcyBvbiBnZW5lcmFsIE8vUyBjaGFyYWN0ZXJpc3RpY3MKKwogMjAwOC0xMC0wNyAwODo1MCAganNhZnJhbmVrCiAKICAgICogZGlzdC9maW5kLXJlcXVpcmVzOgpAQCAtNDU3NywxOCArMTI4ODYsNzggQEAKICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBCVUc6IDIwOTU5ODM6IGZpeCBzeW50YXggZXJyb3IgaW4KICAgIGZpbmQtcmVxdWlyZXMgaGVscGVyIHNjcmlwdCBhbmQgbWFrZSBpdCBleGVjdXRhYmxlCiAKKzIwMDgtMTAtMDYgMTk6MzEgIGhhcmRha2VyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg6CisKKyAgIGlmZGVmIHN5cy9wb2xsCisKKzIwMDgtMTAtMDMgMTQ6MTYgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CisKKyAgIHBhdGNoIGZyb20gU2hhY2hhciBTY2hlbWVzaCB0byBmaXggYSBxdW90ZSBlc2NhcGluZworCisyMDA4LTA5LTMwIDIyOjE5ICBoYXJkYWtlcgorCisgICAqIGFwcHMvc25tcHRyYXBkLmM6CisKKyAgIGFkZGVkIGEgbmVlZGVkIHRyYWlsaW5nIG5ld2xpbmUKKwogMjAwOC0wOS0zMCAyMjoxMSAgZHRzMTIKIAogICAgKiBwZXJsL2FnZW50L2FnZW50LnhzOgogCiAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjAyMjk0ODogRml4IGZvciBDb3VudGVyNjQgaW4gcGVybCBzdWJhZ2VudAogCisyMDA4LTA5LTMwIDIxOjQwICBoYXJkYWtlcgorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgLSBORVdTOiBzbm1wbGliOiBJbXBsZW1lbnRlZCBSRkM1MzQzIGNvbnRleHRFbmdpbmVJRCBwcm9iaW5nLgorICAgVGhpcyBhbGxvd3MgZm9yIHByb2Jpbmcgb2YgdGhlIGNvbnRleHRFbmdpbmVJRCB3aXRob3V0IHJlcXVpcmluZworICAgdGhlIFVTTSBzZWN1cml0eSBtb2RlbC4KKyAgIC0gaW1wbGVtZW50ZWQgZW50aXJlbHkgd2l0aGluIHRoZSBsaWJyYXJ5IGZvciBib3RoIGNsaWVudHMgYW5kCisgICBzZXJ2ZXJzLgorCisyMDA4LTA5LTMwIDIxOjMzICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oOgorCisgICBBZGQgYSBsb2NhbCBkZWZpbml0aW9uIGZvciBoYXZpbmcgc2VjdXJpdHkgbW9kZWxzIGRlZmluZSB0aGVpcgorICAgb3duCisgICBjb250ZXh0RW5naW5lSUQgcHJvYmUKKworMjAwOC0wOS0zMCAyMTozMSAgaGFyZGFrZXIKKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBBZGQgYSBkZWZpbml0aW9uIGZvciB0aGUgU1NIIGRvbWFpbgorCiAyMDA4LTA5LTMwIDIxOjA4ICBkdHMxMgogCiAgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKIAogICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIOiAxMjU3MzQ3OiBOb24tZml4ZWQgc2l6ZSBjb25uZWN0aW9uIGJ1ZmZlcgogCisyMDA4LTA5LTMwIDA3OjMyICBqc2FmcmFuZWsKKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKKworICAgTkVXUzogYnVpbGRpbmc6IFBBVENIOiAyMDkxMTU2OiBjb3JyZWN0bHkgZGVjbGFyZSBkZXBlbmRlbmNpZXMgaW4KKyAgIE1ha2VmaWxlLgorICAgJ21ha2UgLWogPE4+JyBzaG91bGQgd29yayBub3cuCisKKzIwMDgtMDktMjQgMjA6NTggIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVyczoKKworICAgSWRlbnRpZnkgd2hlcmUgcGFydGljdWxhciBjaGVja3MgYXJlIGFjdHVhbGx5IHVzZWQKKyAgIChsaWJyYXJ5LCBhZ2VudCwgYXBwbGljYXRpb25zIG9yIG5vdCBhdCBhbGwpCisKIDIwMDgtMDktMjQgMTI6NTMgIGpzYWZyYW5lawogCiAgICAqICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5jLCAgIApAQCAtNDU5Nyw3NyArMTI5NjYsMTMyIEBACiAgICBVc2UgdGhlIGxvbmdlc3QgaW50ZWdlciBmb3IgaW5vZGUgbnVtYmVycyBhbmQgKHBvc3NpYmx5IDY0IGJpdCkKICAgIGNvdW50ZXJzLgogCi0yMDA4LTA5LTA1IDA5OjI3ICBkdHMxMgorMjAwOC0wOS0yMCAwOTowMSAgbWFnZnIKIAotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsICAgCi0gICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzOgogCi0gICAtIHZlcnNpb24gdGFnICggNS40LjIgKQorICAgTkVXUzogYnVpbGQ6IERvIG5vdCByZXF1aXJlIHVzZSBvZiAtLXdpdGgtZW5kaWFubmVzcyB3aGVuCisgICBjcm9zcy1jb21waWxpbmcuCiAKLTIwMDgtMDktMDUgMDk6MjcgIGR0czEyCisyMDA4LTA5LTE5IDE1OjE5ICBkdHMxMgogCi0gICAqIENIQU5HRVM6CisgICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBDb3JyZWN0IGxvY2F0aW9uIG9mIGRvY3VtZW50YXRpb24gZmlsZXMuCiAKLTIwMDgtMDktMDUgMDk6MjUgIGR0czEyCisyMDA4LTA5LTE5IDA1OjI4ICBtYWdmcgogCi0gICAqIENoYW5nZUxvZzoKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgdmVyc2lvbiB1cGRhdGUKKyAgIEFuZCBhZGQgdGhlIGNodW5rIHRoYXQgSSBsb3N0LgogCi0yMDA4LTA5LTA1IDA5OjIwICBkdHMxMgorMjAwOC0wOS0xOSAwNToyMyAgbWFnZnIKIAotICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgIAotICAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmFjLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgogCi0gICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgTW92ZSBtb3JlIHRoaW5ncyBmcm9tIGFjY29uZmlnLmggdG8gdGhlIHRlbXBsYXRlcyBpbiB0aGUKKyAgIGNvbmZpZ3VyZSBpbnB1dCBmaWxlcy4KIAotMjAwOC0wOS0wNSAwOToxNiAgZHRzMTIKKzIwMDgtMDktMTcgMTM6MzEgIGpzYWZyYW5lawogCi0gICAqIGRveHlnZW4uY29uZjoKKyAgICogZGlzdC9maW5kLXJlcXVpcmVzOgogCi0gICAtIHZlcnNpb24gdGFnICggNS40LjIgKQorICAgbWFrZSBmaW5kLXJlcXVpcmVzIGV4ZWN1dGFibGUgc28gaXQncyBhY3R1YWxseSB1c2FibGUgYnkgdGhlCisgICBuZXQtc25tcC5zcGVjCiAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzIwMDgtMDktMTcgMTI6MDggIGpzYWZyYW5lawogCi1DaGFuZ2VzOiBWNS40LjEgLT4gVjUuNC4yCisgICAqIG1hbi9NYWtlZmlsZS5pbiwgbWFuL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmOgorCisgICBhZGQgbWFuIHBhZ2UgZm9yIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyCisKKzIwMDgtMDktMTYgMTg6MDIgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjNCwgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgRnVydGhlciBtaW5pbWl6YXRpb24gb2YgYWNjb25maWcuaAorCisyMDA4LTA5LTExIDIyOjI4ICBtYWdmcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIE1vdmUgYSBmZXcgbW9yZSB2YXJpYWJsZXMgb3V0IG9mIGFjY29uZmlnLmgKKworMjAwOC0wOS0xMSAyMDozNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTczNzQzOTogZnJvbSBlbWl5OiBhdXRvbWF0aWMgbGluayB1cC9kb3duCisgICB0cmFwcyBvbiBhIHdhbGs7IHN0aWxsIG5lZWQgYSBiZXR0ZXIgaW50ZXJmYWNlIGZvciBtYW51YWxseSBkb2luZworICAgdGhpbmdzIG9uIGFuIG9jY2FzaW9uYWwgYmFzaXMKKworMjAwOC0wOS0xMSAyMDoyNSAgaGFyZGFrZXIKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBORVdTOiBzbm1wbGliOiBQQVRDSDogNzAwNjgxOiBsaW1pdGVkIHN1cHBvcnQgZm9yIFVEUHY0IGJyb2FkY2FzdAorICAgYWRkcmVzc2VzCisKKzIwMDgtMDktMTAgMDY6MzkgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfdHlwZXMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogVXNlIEFDX0NIRUNLX1RZUEVTIGluc3RlYWQgb2YgYSBob21lZ3Jvd24KKyAgIGFsdGVybmF0aXZlIHRvIGNoZWNrIGZvciB0eXBlcworCisyMDA4LTA5LTA5IDIwOjI3ICBtYWdmcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICBBZGQgYWxsIHRoZSBwYXJ0cyBvZiBjb25maWd1cmUuYWMgdG8gdGhlIGRlcGVuZGVuY3kgbGlzdAorCisyMDA4LTA5LTA5IDE4OjEzICBoYXJkYWtlcgorCisgICAqIE1ha2VmaWxlLmluOgorCisgICB1cGRhdGUgdG8gcmVmbGVjdCBjb25maWd1cmUuaW4gLT4gY29uZmlndXJlLmFjIGNoYW5nZQorCisyMDA4LTA5LTA5IDE2OjE1ICBoYXJkYWtlcgorCisgICAqIGRpc3QvcGF0bWU6CisKKyAgIGRlZmF1bHQgdG8gLXAwCisKKzIwMDgtMDktMDggMjM6NDEgIGhhcmRha2VyCisKKyAgICogc25tcGxpYi9zbm1wbG9jYWxzbS5jOgorCisgICBjaGVjayBmb3IgYSBzZXNzaW9uIHR1bm5lbGVkIGZsYWcgYmVmb3JlIHJldHVybmluZyBhbgorICAgYXV0aGVudGljYXRpb24gZmFpbHVyZQorCisyMDA4LTA5LTA4IDIzOjM5ICBoYXJkYWtlcgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgU2V0IHRoZSB0dW5uZWxlZCBmbGFnIHdoZW4gZGVhbGluZyB3aXRoIGEgdHVubmVsLWJhc2VkIHRyYW5zcG9ydDsKKyAgIGRvbid0IHJlcXVpcmUgYSBzZWN1cml0eUVuZ2luZUlEIGlmIHRoZSBzZWN1cml0eSBtb2RlbCBkb2Vzbid0CisgICBoYXZlIG9uZSAoanVzdCBVU00gbmVlZHMgaXQpCisKKzIwMDgtMDktMDggMjA6MjQgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCwgc25tcGxpYi9zbm1wLXRjLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMjA5OTk4NTogQWRkZWQgY29uc3QgcXVhbGlmaWVycyB0byB0aW1lCisgICBjb252ZXJzaW9uIHJvdXRpbnMKIAogMjAwOC0wOS0wNSAwNzo1MSAgZHRzMTIKIApAQCAtNDY4MCw3NiArMTMxMDQsNzUgQEAKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jOgogCi0gICBDSEFOR0VTOiBweXRob246IEJVRzogMTg2ODI3ODogUHl0aG9uIHNlZ2ZhdWx0IChpbnRyb2R1Y2VkIGJ5IHIxNjk2MikKKyAgIENIQU5HRVM6IHB5dGhvbjogQlVHOiAxODY4Mjc4OiBQeXRob24gc2VnZmF1bHQgKGludHJvZHVjZWQgYnkKKyAgIHIxNjk2MikKIAotMjAwOC0wOC0yOSAyMToxOSAgZHRzMTIKKzIwMDgtMDktMDMgMTM6NDMgIGR0czEyCiAKLSAgICogIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAotICAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnJjMyApCisgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDIwMDA4NzQ6IENsZWFudXAgdHJhbnNwb3J0IHNlbGVjdGlvbi4KIAotMjAwOC0wOC0yOSAyMToxOCAgZHRzMTIKKzIwMDgtMDktMDMgMTM6MjkgIGR0czEyCiAKLSAgICogQ0hBTkdFUywgTkVXUzoKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX3N0cnVjdF9tZW1iZXJzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob246CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBUaWR5IHVwIHBlcmwvcHl0aG9uIGFuZCBPL1MgZGF0YSBzdHJ1Y3R1cmUgdGVzdHMuCiAKLTIwMDgtMDgtMjkgMjE6MTUgIGR0czEyCisyMDA4LTA4LTMxIDE4OjE0ICBkdHMxMgogCi0gICAqIENoYW5nZUxvZzoKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMSwgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MzLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9pcHY2X3R5cGVzLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3dpdGhfZW5hYmxlOgogCi0gICB2ZXJzaW9uIHVwZGF0ZQorICAgVGlkeSB1cCAobW9zdCBvZikgdGhlIGluZGl2aWR1YWwgY29tcG9uZW50cyBvZiB0aGUgY29uZmlndXJlCisgICBmcmFtZXdvcmsuCisgICBUaGlzIGlzIG1vc3RseSByZS1pbmRlbnRhdGlvbiwgcmUtY29tbWVudGluZywgYW5kIGEgY2VydGFpbgorICAgYW1vdW50CisgICBvZiBqdWRpY2lvdXMgcmUtb3JkZXJpbmcgb2YgdGhlIHRlc3RzIHdpdGhpbiBpbmRpdmlkdWFsCisgICBzdWItc2NyaXB0LgogCi0yMDA4LTA4LTI5IDIxOjA4ICBkdHMxMgorMjAwOC0wOC0zMSAxNzozMCAgZHRzMTIKIAotICAgKiAgbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywgIAotICAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuYWM6CiAKLSAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisgICBBbm5vdGF0ZSBjb25maWd1cmUgdGVtcGxhdGUgd2l0aCBzdWdnZXN0ZWQgYmVzdCBwcmFjdGljZQorICAgc3RydWN0dXJlLgorICAgTm90ZSB0aGF0IG5vbmUgb2YgdGhlc2UgY2hhbmdlcyBoYXMgYWx0ZXJlZCB0aGUgY29kZSB3aXRoaW4KKyAgICdjb25maWd1cmUnIGl0c2VsZiAob3RoZXIgdGhhbiBhZmZlY3RpbmcgbGluZSBudW1iZXJzKQogCi0yMDA4LTA4LTI5IDIxOjA0ICBkdHMxMgorMjAwOC0wOC0zMSAxNzoyNiAgZHRzMTIKIAotICAgKiBkb3h5Z2VuLmNvbmY6CisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlLmQsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCwgY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliLCAKKyAgICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX2Z1bmN0aW9ucywgY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMsIAorICAgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbGlicywgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MxLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyLCBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQsIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X2lwdjZfdHlwZXMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRocywgICAKKyAgICAgIGNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uLCAgIAorICAgICAgY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfdHlwZXMsICAgCisgICAgICBjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZToKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnJjMyApCisgICBORVdTOiBidWlsZDogc3BsaXQgY29uZmlndXJlIHRlbXBsYXRlIGludG8gc2VwYXJhdGUgcGllY2VzLgorICAgKE1vc3RseSkgc2VsZi1jb250YWluZWQsIGFuZCBzaWduaWZpY2FudGx5IGxlc3MgY29uZnVzaW5nIQogCisyMDA4LTA4LTMxIDE3OjIzICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZS5hYywgY29uZmlndXJlLmluOgorCisgICBSZW5hbWUgY29uZmlndXJlIHRlbXBsYXRlIGluIGxpbmUgd2l0aCBjdXJyZW50IGJlc3QgcHJhY3RpY2UuCiAKIDIwMDgtMDgtMjkgMTk6NTQgIGR0czEyCiAKQEAgLTQ3NTcsMTIgKzEzMTgwLDIwIEBACiAKICAgIFJldGFpbiBmaWxlbmFtZXMgd2hpY2ggZG9uJ3QgaW5jbHVkZSB0aGUgZXhwZWN0ZWQgcHJlZml4LgogCisyMDA4LTA4LTI3IDIxOjU1ICB0YW5kZXJzCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3M6CisKKyAgIGlnbm9yZSAubGlicyBkaXJlY3RvcmllcworCiAyMDA4LTA4LTI3IDEzOjM5ICBqc2FmcmFuZWsKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmM6CiAKICAgIFMvMzkwIHVzZXMgc2xpZ2h0bHkgZGlmZmVyZW50IGZvcm1hdCBvZiB0aGUgL3Byb2MvY3B1aW5mbyBmaWxlOgotICAgcHJvY2Vzc29yIDA6IHZlcnNpb24gPSBGRiwgaWRlbnRpZmljYXRpb24gPSAwNjBBRkUsIG1hY2hpbmUgPSAyMDk0CisgICBwcm9jZXNzb3IgMDogdmVyc2lvbiA9IEZGLCBpZGVudGlmaWNhdGlvbiA9IDA2MEFGRSwgbWFjaGluZSA9CisgICAyMDk0CiAKIDIwMDgtMDgtMjIgMjM6NDcgIHRhbmRlcnMKIApAQCAtNDc3NiwxNCArMTMyMDcsMTggQEAKIAogICAgTkVXUzogYnVpbGQ6IEJVRzogMjAyMzgwMzogQ29tcGlsYXRpb24gcHJvYmxlbXMgb24gSFAtVVggMTEuMzEKICAgIENIQU5HRVM6IGJ1aWxkOiBMaW1pdCB0aGUgdXNlIG9mIF9LRVJORUwgZGVmaW5pdGlvbnMgaW4gY29uZmlndXJlCi0gICB0ZXN0cyB0byBtYXRjaCB0aGUgdXNlIG9mIF9LRVJORUwgaW4gb3VyIGNvZGViYXNlCisgICB0ZXN0cyB0byBtYXRjaCB0aGUgdXNlCisgICBvZiBfS0VSTkVMIGluIG91ciBjb2RlYmFzZQogCiAyMDA4LTA4LTIyIDAwOjE4ICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgogCi0gICBGaXggYnVpbGQgZmFpbHVyZSBvbiBIUC1VWCAxMS4zMTogdXNlIGdldHBhZ2VzaXplKCkgaW5zdGVhZCBvZiBQR1NISUZULgotICAgU3VjY2Vzc2Z1bGx5IHRlc3RlZCBvbiBIUC1VWCAxMC4yMCwgMTEuMDAsIDExLjExLCAxMS4yMyBhbmQgMTEuMzEuCisgICBGaXggYnVpbGQgZmFpbHVyZSBvbiBIUC1VWCAxMS4zMTogdXNlIGdldHBhZ2VzaXplKCkgaW5zdGVhZCBvZgorICAgUEdTSElGVC4KKyAgIFN1Y2Nlc3NmdWxseSB0ZXN0ZWQgb24gSFAtVVggMTAuMjAsIDExLjAwLCAxMS4xMSwgMTEuMjMgYW5kCisgICAxMS4zMS4KIAogMjAwOC0wOC0yMSAxMDowMyAganNhZnJhbmVrCiAKQEAgLTQ3OTEsMzU0NyArMTMyMjYsNTMyOCBAQAogCiAgICBhZGQgU0NUUC1NSUIKIAorMjAwOC0wOC0yMCAxNzozNyAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKKworICAgSGF2ZSBvbmx5IG9uZSB2YXJpYWJsZSBuYW1lZCBwYXNzd2QgaW4gc211eF9hdXRoX3BlZXIuCisKIDIwMDgtMDgtMTkgMjM6MjIgIHRhbmRlcnMKIAogICAgKiBSRUFETUUudHJ1NjQ6CiAKICAgIHVwZGF0ZSBSRUFETUUgZm9yIFRydTY0IGFmdGVyIHRoZSBzZW5kdG8vcmVjdmZyb20gZml4ZXMKIAotMjAwOC0wOC0xOSAyMDozNiAgZHRzMTIKKzIwMDgtMDgtMTkgMjA6MjcgIHRhbmRlcnMKIAotICAgKiAgRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsICAgCi0gICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaDoKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnJjMiApCisgICBmaXggc2lnbmlmaWNhbnQgdHlwbwogCi0yMDA4LTA4LTE5IDIwOjM2ICBkdHMxMgorMjAwOC0wOC0xOSAxMzoyNSAgZHRzMTIKIAotICAgKiBDSEFOR0VTLCBORVdTOgorICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmg6CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBGb3JjZSB1c2Ugb2YgL3Byb2MvJWQvcHNpbmZvIGludGVyZmFjZSBvbiBTb2xhcmlzLgorICAgVGVtcG9yYXJ5IGhhY2sgd2hpbGUgd2UgaW52ZXN0aWdhdGUgdGhlIGlzc3VlcyB3aXRoCisgICB0aGUga3ZtX3Byb2MoKSBjb2RlLgorICAgCisgICBUaGUgJ2NvbmZpZ19yZXF1aXJlJyBwcm9jZXNzaW5nIGRvZXNuJ3QgY3VycmVudGx5CisgICBwaWNrIHVwIHRoZSBmdWxsICNpZmRlZiBlbnZpcm9ubWVudCwgc28gZGVmYXVsdHMKKyAgIHRvIHVzaW5nIGt2bV9wcm9jKCkuIEknbSBub3QgY29udmluY2VkIHRoaXMgd2FzCisgICB3b3JraW5nIGJlZm9yZSBhbnl3YXksCiAKLTIwMDgtMDgtMTkgMjA6MjYgIGR0czEyCisyMDA4LTA4LTE5IDEzOjE3ICBkdHMxMgogCi0gICAqIENoYW5nZUxvZzoKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jZnNfcHNpbmZvLmM6CiAKLSAgIHZlcnNpb24gdXBkYXRlCisgICBGaXggcHJvYmxlbXMgaW4gL3Byb2MvJWQvcHNpbmZvIGludGVyZmFjZSBwcm9jZXNzaW5nLgogCi0yMDA4LTA4LTE5IDIwOjA4ICBkdHMxMgorMjAwOC0wOC0xOSAwODo0NyAgZHRzMTIKIAotICAgKiBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQ6CisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMsIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3M6CiAKLSAgIG1ha2UgZGVwZW5kCisgICBJZ25vcmUgbGlicmFyeSBhbmQgb2JqZWN0IGZpbGVzCiAKLTIwMDgtMDgtMTkgMjA6MDMgIGR0czEyCisyMDA4LTA4LTE5IDA4OjM2ICBkdHMxMgogCi0gICAqICBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsICAgCi0gICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsICAgCi0gICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCAgCi0gICAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLCAgIAotICAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgICAKLSAgICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgorICAgKiAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmM6CiAKLSAgIGRvY3VtZW50YXRpb24gdXBkYXRlCisgICBBY3RpdmF0ZSBzdGF0aXN0aWNzIHRoYXQgYXJlIHN1cHBvcnRlZCBvbiBTb2xhcmlzIGFuZC9vciBMaW51eAorICAgSVB2NgogCi0yMDA4LTA4LTE5IDE5OjU1ICBkdHMxMgorMjAwOC0wOC0xOSAwODoxMSAgZHRzMTIKIAotICAgKiBkb3h5Z2VuLmNvbmY6CisgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgogCi0gICAtIHZlcnNpb24gdGFnICggNS40LjIucmMyICkKLQorICAgSW1wcm92ZWQgdHJhY2luZyBvZiBTTVVYIGF1dGhlbnRpY2F0aW9uIHByb2JsZW1zLgogCiAyMDA4LTA4LTE5IDA4OjA4ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmM6Ci0gICAgIEJldHRlciB0cmFjaW5nIG9mIERpc01hbiBvYmplY3QgcHJvY2Vzc2luZy4KKworICAgQmV0dGVyIHRyYWNpbmcgb2YgRGlzTWFuIG9iamVjdCBwcm9jZXNzaW5nLgogCiAyMDA4LTA4LTE4IDIyOjQzICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaDoKLSAgICAgcmVtb3ZlIGJvZ3VzIHdoaXRlIHNwYWNlCiAKLTIwMDgtMDgtMTggMjI6MzggIHRhbmRlcnMKLQotICAgKiBSRUFETUUuYWdlbnQtbWliczoKLSAgICAgZG9jdW1lbnQgU0NUUC1NSUIgYWRkaXRpb24KKyAgIHJlbW92ZSBib2d1cyB3aGl0ZSBzcGFjZQogCiAyMDA4LTA4LTE4IDIyOjAxICBkdHMxMgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMjAyMTQ0NDogU3VwcG9ydCBTTk1QdjJjIGluIGdldHRhYmxlIHByb2Nlc3NpbmcKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDIwMjE0NDQ6IFN1cHBvcnQgU05NUHYyYyBpbiBnZXR0YWJsZQorICAgcHJvY2Vzc2luZwogCiAyMDA4LTA4LTE4IDIxOjQ0ICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcGtzbS5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMjAwMzQ1MDogRml4IGEgY291cGxlIG9mIDY0LWJpdCBwcm9ibGVtcy4KIAotMjAwOC0wOC0xOCAxOTowNSAgdGFuZGVycworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDIwMDM0NTA6IEZpeCBhIGNvdXBsZSBvZiA2NC1iaXQKKyAgIHByb2JsZW1zLgogCi0gICAqIG1pYnMvTWFrZWZpbGUuaW46Ci0gICAgIGZpeCBTQ1RQLU1JQiBpbnN0YWxsCisyMDA4LTA4LTE4IDE0OjMwICBoYXJkYWtlcgogCi0yMDA4LTA4LTE3IDIxOjI5ICBkdHMxMgorICAgKiBhcHBzL3NubXB1c20uYzoKIAotICAgKiBhZ2VudC9taWJncm91cC9zY3RwLW1pYiwgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oLAotICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jLCBtaWJzL01ha2VmaWxlLmluLAotICAgICBtaWJzL01ha2VmaWxlLm1pYiwgbWlicy9TQ1RQLU1JQi50eHQ6Ci0gICAgIE5FV1M6IHNubXBkOiBQQVRDSDogMjAyMzYzMzogYWRkIFNDVFAtTUlCIGltcGxlbWVudGF0aW9uIChMaW51eCBvbmx5KQorICAgcmV2ZXJ0IDE3MTU3IHNpbmNlIGl0IGJyb2tlIHNvbWV0aGluZworCisyMDA4LTA4LTE4IDA3OjA2ICBqc2FmcmFuZWsKKworICAgKiBSRUFETUUuYWdlbnQtbWliczoKKworICAgYWRkIFNDVFAtTUlCIGltcGxlbWVudGF0aW9uIChMaW51eCBvbmx5KQogCiAyMDA4LTA4LTE3IDIxOjA4ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDIwMjI5MzY6IEZpeCBBZ2VudFggQ291bnRlcjY0IGRlY29kaW5nIG9uCi0gICAgIDY0LWJpdCBhcmNoaXRlY3R1cmVzCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjAyMjkzNjogRml4IEFnZW50WCBDb3VudGVyNjQgZGVjb2Rpbmcgb24KKyAgIDY0LWJpdCBhcmNoaXRlY3R1cmVzCiAKIDIwMDgtMDgtMTcgMjA6NTAgIGR0czEyCiAKICAgICogYWdlbnQvc25tcGQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAyMDE0MjA0OiBTdXBwb3J0IC1nIHtncm91cG5hbWV9CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMjAxNDIwNDogU3VwcG9ydCAtZyB7Z3JvdXBuYW1lfQorCisyMDA4LTA4LTE1IDEzOjQ1ICBoYXJkYWtlcgorCisgICAqIGFwcHMvc25tcHVzbS5jOgorCisgICBORVdTOiBzbm1wdXNtOiBQQVRDSDogMTU5MTM1NTogZnJvbSBwcGFzc2VyYTogQWxsb3cgY2xvbmluZyB0bworICAgZW5naW5lSURzIHRoYXQgYXJlIGRpZmZlcmVudCBmcm9tIHRoZSBhZ2VudCdzIGVuZ2luZUlECisKKzIwMDgtMDgtMTQgMTU6NTQgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9rdm1fcHJvYy5jOgorCisgICBTV1J1biBwcm9jZXNzaW5nIG5lZWRzIGFjY2VzcyB0byB0aGUgaW50ZXJuYWxzIG9mICdzdHJ1Y3QgdXNlcicKKyAgIChTb2xhcmlzKQogCiAyMDA4LTA4LTEzIDEzOjAyICBqc2FmcmFuZWsKIAotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmM6Ci0gICAgIENvcnJlY3RseSBwYXJzZSBpbnRlcmZhY2UgaW5kZXhlcyBoaWdoZXIgdGhhbiAweGZmLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfbGludXguYzoKKworICAgQ29ycmVjdGx5IHBhcnNlIGludGVyZmFjZSBpbmRleGVzIGhpZ2hlciB0aGFuIDB4ZmYuCiAKIDIwMDgtMDgtMTIgMDg6MjcgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYzoKLSAgICAgQ2xvc2UgZmlsZSB3aGVuIHBhcnNpbmcgb2YgL3Byb2MvWFhYL3N0YXR1cyBmYWlscy4KKworICAgQ2xvc2UgZmlsZSB3aGVuIHBhcnNpbmcgb2YgL3Byb2MvWFhYL3N0YXR1cyBmYWlscy4KKworMjAwOC0wOC0xMiAwNzoyNyAganNhZnJhbmVrCisKKyAgICogIGFnZW50L21pYmdyb3VwL3NjdHAtbWliLCBhZ2VudC9taWJncm91cC9zY3RwLW1pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jLCBtaWJzL01ha2VmaWxlLmluLCAgIAorICAgICAgbWlicy9NYWtlZmlsZS5taWIsIG1pYnMvU0NUUC1NSUIudHh0OgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDIwMjM2MzM6IGFkZCBTQ1RQLU1JQiBpbXBsZW1lbnRhdGlvbiAoTGludXgKKyAgIG9ubHkpCisKKzIwMDgtMDgtMDcgMTA6MDMgIGpzYWZyYW5laworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgRml4IGluZXROZXRUb01lZGlhVGFibGUgdGFibGUgcHJvY2Vzc2luZyAtIGNvbnRpbnVlIHdpdGggbmV4dAorICAgZW50cnkgd2hlbiBmaWxsdXBfZW50cnlfaW5mbygpIGZhaWxzLgogCiAyMDA4LTA4LTA3IDA5OjAwICBqc2FmcmFuZWsKIAogICAgKiBtYW4vc25tcGQuY29uZi41LmRlZjoKLSAgICAgRml4IGRvY3VtZW50YXRpb24gb2YgZXhlYyBzdGF0YW1lbnQgLSBpdCBkb2VzIG5vdCBjYWNoZSByZXN1bHRzIGFueW1vcmUuCi0gICAgIFJlbGF0ZWQgdG8gYnVnIDg4MzEzNAogCi0yMDA4LTA3LTMxIDE2OjQ4ICBkdHMxMgorICAgRml4IGRvY3VtZW50YXRpb24gb2YgZXhlYyBzdGF0YW1lbnQgLSBpdCBkb2VzIG5vdCBjYWNoZSByZXN1bHRzCisgICBhbnltb3JlLiBSZWxhdGVkIHRvIGJ1ZyA4ODMxMzQKIAotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjIucmMxICkKKzIwMDgtMDctMzEgMjM6MzkgIGR0czEyCiAKLTIwMDgtMDctMzEgMTY6NDcgIGR0czEyCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2luZm8uYzoKIAotICAgKiBDSEFOR0VTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorICAgRml4IGEgdHlwbywgYW5kIGEgYm9ndXMgZmllbGQgbmFtZSBpbiB0aGUgQUlYIHByb2NpbmZvIHN0cnVjdHVyZS4KIAotMjAwOC0wNy0zMSAxNjoxNCAgZHRzMTIKKzIwMDgtMDctMzEgMjM6MzUgIGR0czEyCiAKLSAgICogQ2hhbmdlTG9nOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2t2bV9wcm9jLmM6CiAKLTIwMDgtMDctMzEgMTY6MDUgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwKLSAgICAgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0gICAgIG1ha2UgZGVwZW5kCi0KLTIwMDgtMDctMzEgMTY6MDMgIGR0czEyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgSW5jbHVkZSBtaXNzaW5nIGhlYWRlcnMsIGFuZCBmaXggb25lIGJvZ3VzIGZpZWxkIG5hbWUgaW4gU29sYXJpcworICAgcHJvYyBzdHJ1Y3R1cmUuCiAKIDIwMDgtMDctMzAgMTc6NDAgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6Ci0gICAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDIwMDMxNDQ6IEluY3JlYXNlIHNpemUgb2YgQWdlbnRYIHBhY2tldCBidWlsZCBidWZmZXIKIAotMjAwOC0wNy0zMCAxNzoyOCAgZHRzMTIKLQotICAgKiBuZXQtc25tcC1jb25maWcuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY4MTAzNTogZnJvbSBtYWdmcjogaW1wcm92ZSBuZXQtc25tcC1jb25maWcgL2Jpbi9zaCBjb21wYXRpYmlsaXR5Ci0gICAgIEJhY2stcG9ydCBvZiBTVk4gcmV2aXNpb24gMTU5NjEKLQotMjAwOC0wNy0zMCAwOTo1OCAgZHRzMTIKLQotICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYzoKLSAgICAgQ0hBTkdFUzogYWdlbnQ6IEJVRzogMTU1NzM3MjogUmVhbGlnbiBockZTU3RvcmFnZUluZGV4IHdpdGggaHJTdG9yYWdlVGFibGUKKyAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDIwMDMxNDQ6IEluY3JlYXNlIHNpemUgb2YgQWdlbnRYIHBhY2tldAorICAgYnVpbGQgYnVmZmVyCiAKIDIwMDgtMDctMzAgMDc6NTcgIGR0czEyCiAKICAgICogc25tcGxpYi9taWIuYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAyMDI3ODM0OiBFeHRlbmQgc3RyaW5nIHByaW50IGJ1ZmZlciBieSB0aGUgbWluaW11bSBuZWNlc3NhcnkuCisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMjAyNzgzNDogRXh0ZW5kIHN0cmluZyBwcmludCBidWZmZXIgYnkgdGhlCisgICBtaW5pbXVtIG5lY2Vzc2FyeS4KKworMjAwOC0wNy0yOSAyMzozNCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbmxpc3QuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3BzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jOgorCisgICBGaXggYXNzb3J0ZWQgc2lsbHkgdHlwb3MgLSB1bmJhbGFuY2VkIHBhcmVudGhlc2VzCisgICBhbmQgdGhlIHdyb25nIHR5cGUgZW51bWVyYXRpb24gdmFsdWUgbmFtZXMuCisKKzIwMDgtMDctMjkgMjM6MzEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5jOgorCisgICBFbnN1cmUgc3dydW4gZGF0YSBpcyBhdmFpbGFibGUgZm9yIHRoZSBwclRhYmxlIGNhbGxzLAorICAgcmF0aGVyIHRoYW4gcmVseWluZyBvbiBoclNXUnVuVGFibGUgdG8gdHJpZ2dlciB0aGlzLgogCiAyMDA4LTA3LTI5IDE2OjE5ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jOgotICAgICBhKSBGaXggdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBqdXN0IG9uZSBwbGFjZQotICAgICAobWFrZXMgaXQgZWFzaWVyIHRvIGNoYW5nZSBpZiBuZWNlc3NhcnkpCi0gICAgIGIpIEZpeCB2YXJpb3VzIHVuZm9ydHVuYXRlIGxpbmUtYnJlYWtzICh3aXRoaW4gInBkdS0+ZmxhZ3MiKQorCisgICBhKSBGaXggdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciBpbiBqdXN0IG9uZSBwbGFjZQorICAgKG1ha2VzIGl0IGVhc2llciB0byBjaGFuZ2UgaWYgbmVjZXNzYXJ5KQorICAgYikgRml4IHZhcmlvdXMgdW5mb3J0dW5hdGUgbGluZS1icmVha3MgKHdpdGhpbiAicGR1LT5mbGFncyIpCisKKzIwMDgtMDctMjkgMTY6MDUgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaDoKKworICAgSWYgdGhlIHJlLXdyaXR0ZW4gU1dSdW4gbW9kdWxlIGlmIGF2YWlsYWJsZSwgdGhlbiB1c2UgaXQgZm9yCisgICB0aGUgVUNELXNwZWNpZmljIHByVGFibGUgYXMgd2VsbCBhcyB0aGUgaHJTV1J1blRhYmxlLgorICAgQ29uc2lzdGVuY3kgaXMgZ29vZC4uLi4KKworMjAwOC0wNy0yOSAxNToyMyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYzoKKworICAgU3VwcHJlc3MganVuayBpbiBoclNXUnVuTmFtZSAmIGhyU1dSdW5QYXJhbWV0ZXJzIHZhbHVlcworCisyMDA4LTA3LTI5IDEwOjI3ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmM6CisKKyAgIFRoZSBjYWNoZS9jb250YWluZXIgcmVsYXRlIHRvIHRoZSBkYXRhIGl0c2VsZiwgc28gc2hvdWxkCisgICBtb3JlIG5hdHVyYWxseSBiZSBoYW5kbGVkIGJ5IHRoZSBkYXRhX2FjY2VzcyBtb2R1bGUsCisgICByYXRoZXIgdGhhbiBhIHBhcnRpY3VsYXIgTUlCIHRhYmxlIG1vZHVsZS4KKworMjAwOC0wNy0yOCAyMToxOCAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmM6CisKKyAgICd1c2VkJyBhbmQgJ2ZyZWUnIGFyZSBub3QgdGhlIHNhbWUgdGhpbmcsIERhdmUuIFBheSBhdHRlbnRpb24gYXQKKyAgIHRoZSBiYWNrLi4uLgogCiAyMDA4LTA3LTI4IDE0OjM5ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgotICAgICBDSEFOR0VTOiBhZ2VudDogQlVHOiAyMDIzODAzOiBFbnN1cmUgY29tcGlsYXRpb24gaXMgbm90IGRlcGVuZGVudAotICAgICBvbiBhbiBpcnJlbGV2YW50IGNvbmZpZ3VyZSBjaGFyYWN0ZXJpc3RpYyBmb3IgSFAtVVggMTEKIAotMjAwOC0wNy0yOCAxMTo0MSAgZHRzMTIKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLSAgICAgTkVXUzogYnVpbGRpbmc6IGFkZCAtLXdpdGgtdGVtcC1maWxlLXBhdHRlcm4gY29uZmlndXJlIG9wdGlvbgotICAgICBCYWNrcG9ydCBvZiBTVk4gcmV2aXNpb24gMTcxMjEKKyAgIENIQU5HRVM6IGFnZW50OiBCVUc6IDIwMjM4MDM6IEVuc3VyZSBjb21waWxhdGlvbiBpcyBub3QgZGVwZW5kZW50CisgICBvbiBhbiBpcnJlbGV2YW50IGNvbmZpZ3VyZSBjaGFyYWN0ZXJpc3RpYyBmb3IgSFAtVVggMTEKIAogMjAwOC0wNy0yOCAxMDo1NiAgZHRzMTIKIAogICAgKiBhcHBzL3NubXBzZXQuYzoKLSAgICAgQ0hBTkdFUzogYXBwczogQlVHOiAxOTY0MTM2OiBEcm9wIE5VTEwgdHlwZSBmcm9tIHNubXBzZXQgdXNhZ2UgbWVzc2FnZS4KKworICAgQ0hBTkdFUzogYXBwczogQlVHOiAxOTY0MTM2OiBEcm9wIE5VTEwgdHlwZSBmcm9tIHNubXBzZXQgdXNhZ2UKKyAgIG1lc3NhZ2UuCisKKzIwMDgtMDctMjUgMTQ6MTkgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC5oLCBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oOgorCisgICBVc2UgJy0tZW5hYmxlLW5ldy1mZWF0dXJlcycgbWVjaGFuaXNtIHRvIGluY2x1ZGUgaHJTVyogcmUtd3JpdGVzCisKKzIwMDgtMDctMjUgMTQ6MTMgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9udWxsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9wa2dpbmZvLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fY3lnd2luLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2Rhcndpbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9raW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9rdm1fcHJvYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9ubGlzdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jOgorCisgICBQcmVsaW1pbmFyeSBPUy1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgUnVubmluZyBhbmQgSW5zdGFsbGVkCisgICBTb2Z0d2FyZSBkYXRhIGFjY2Vzcy4KIAogMjAwOC0wNy0yNCAyMzoyMiAgdGFuZGVycwogCiAgICAqIG1hbi9zbm1wY21kLjEuZGVmOgotICAgICBDSEFOR0VTOiBkb2N1bWVudGF0aW9uOiBCVUc6IDIwMjcxMjk6IGZpeCB0eXBvIGluIHNubXBjbWQuMQorCisgICBDSEFOR0VTOiBkb2N1bWVudGF0aW9uOiBCVUc6IDIwMjcxMjk6IGZpeCB0eXBvIGluIHNubXBjbWQuMQorCisyMDA4LTA3LTI0IDEwOjAwICBqc2FmcmFuZWsKKworICAgKiBtYW4vc25tcC5jb25mLjUuZGVmLCBzZWRzY3JpcHQuaW46CisKKyAgIHJlZmxlY3QgZGVmYXVsdCB0ZW1wIGZpbGUgcGF0dGVybiBpbiBtYW4gcGFnZSBpZiBpdCdzIG1vZGlmaWVkIGJ5CisgICAuL2NvbmZpZ3VyZSBzY3JpcHQKKworMjAwOC0wNy0yNCAwODozNiAganNhZnJhbmVrCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIE5FV1M6IGJ1aWxkaW5nOiBhZGQgLS13aXRoLXRlbXAtZmlsZS1wYXR0ZXJuIGNvbmZpZ3VyZSBvcHRpb24KIAogMjAwOC0wNy0yNCAwNjo1MyAganNhZnJhbmVrCiAKICAgICogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODIzODAwOiByZWxlYXNlIGFuZCByZWxvYWQgYWxsIHRyYXAgZGVzdGluYXRpb25zIG9uIFNJR0hVUAorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4MjM4MDA6IHJlbGVhc2UgYW5kIHJlbG9hZCBhbGwgdHJhcAorICAgZGVzdGluYXRpb25zIG9uIFNJR0hVUAorCisyMDA4LTA3LTIyIDE0OjMzICBqc2FmcmFuZWsKKworICAgKiBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci5pbjoKKworICAgZml4IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIHRvIHJ1biB3aXRob3V0IGFyZ3VtZW50cworCisyMDA4LTA3LTIyIDE0OjIxICBqc2FmcmFuZWsKKworICAgKiAgLiwgTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBuZXQtc25tcC1jb25maWcuaW4sICAgCisgICAgICBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci5pbjoKKworICAgTkVXUzogbWlzYzogc2VwYXJhdGUgdXNlciBtYW5hZ2VtZW50IGZyb20gbmV0LXNubXAtY29uZmlnIGludG8KKyAgIG5ldyBuZXQtc25tcC1jcmVhdGUtdjMtdXNlciBzY3JpcHQKIAogMjAwOC0wNy0yMSAxMzo0NCAgZHRzMTIKIAogICAgKiBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYzoKLSAgICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDE5NDQ1ODE6IFByb3RlY3QgYWdhaW5zdCBjb3JlIGR1bXBzIHdpdGggbG9uZyBzdHJpbmcgaW5kZXggdmFsdWVzLgogCi0yMDA4LTA3LTE3IDE1OjA3ICBkdHMxMgorICAgQ0hBTkdFUzogYWdlbnQ6IFBBVENIIDE5NDQ1ODE6IFByb3RlY3QgYWdhaW5zdCBjb3JlIGR1bXBzIHdpdGgKKyAgIGxvbmcgc3RyaW5nIGluZGV4IHZhbHVlcy4KIAotICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQsIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kLAotICAgICBhZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQsIGFwcHMvTWFrZWZpbGUuZGVwZW5kLAotICAgICBhcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZCwgc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQ6Ci0gICAgIG1ha2UgZGVwZW5kCisyMDA4LTA3LTE4IDE1OjE5ICBoYXJkYWtlcgogCi0yMDA4LTA3LTE3IDE0OjQyICBkdHMxMgorICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKIAotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMi5yYzEgKQorICAgbmV3IHNpZ25pbmcga2V5CiAKIDIwMDgtMDctMTcgMTA6MDUgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMjAxODAzMTogRG9uJ3QgcHJvYmUgZW5naW5lSUQgaW4gaW50ZXJuYWwgbW9uaXRvciBzZXNzaW9ucy4KKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMjAxODAzMTogRG9uJ3QgcHJvYmUgZW5naW5lSUQgaW4gaW50ZXJuYWwKKyAgIG1vbml0b3Igc2Vzc2lvbnMuCisKKzIwMDgtMDctMTAgMTk6MzMgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGZpeCBhIHJlZ2V4cCBxdW90ZQorCisyMDA4LTA3LTEwIDE0OjEyICB0YW5kZXJzCisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzoKKworICAgYnVpbGQgZml4IGZvciBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZSBnZXRhZGRyaW5mbyAoZS5nLiBIUC1VWAorICAgMTEuMCBhbmQgZWFybGllciwgU29sYXJpcyA3IGFuZCBlYXJsaWVyKQogCiAyMDA4LTA3LTEwIDEzOjUwICBhbGV4X2IKIAogICAgKiB3aW4zMi9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGRpbmc6IEJVRzogMjAxNDUyNjogV2luMzI6IHNubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIG5vdCBpbnN0YWxsZWQKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEJVRzogMjAxNDUyNjogV2luMzI6CisgICBzbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCBub3QgaW5zdGFsbGVkCiAKIDIwMDgtMDctMDYgMTU6MDUgIGFsZXhfYgogCi0gICAqIFJFQURNRS53aW4zMiwgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9idWlsZC5wbCwKLSAgICAgd2luMzIvbmV0c25tcG1pYnNzZGsvTWFrZWZpbGUuaW46Ci0gICAgIENIQU5HRVM6IGJ1bGRpbmc6IEFkZCBzdXBwb3J0IGZvciB3aW5FeHRETEwgdG8gYnVpbGQuYmF0ICh3aW4zMikKKyAgICogIFJFQURNRS53aW4zMiwgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9idWlsZC5wbCwgICAKKyAgICAgIHdpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL01ha2VmaWxlLmluOgorCisgICBDSEFOR0VTOiBidWxkaW5nOiBBZGQgc3VwcG9ydCBmb3Igd2luRXh0RExMIHRvIGJ1aWxkLmJhdCAod2luMzIpCiAKIDIwMDgtMDctMDYgMTI6MzggIGFsZXhfYgogCiAgICAqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKLSAgICAgV2luMzIgYnVpbGQgZml4ZXMgLSBhZGQgbWlzc2luZyBmdW5jdGlvbiBmb3IgRExMIGJ1aWxkLgorCisgICBXaW4zMiBidWlsZCBmaXhlcyAtIGFkZCBtaXNzaW5nIGZ1bmN0aW9uIGZvciBETEwgYnVpbGQuCiAKIDIwMDgtMDctMDIgMTI6MzkgIGpzYWZyYW5lawogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDIwMDY3ODY6IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4IGNoYXJhY3RlcnMuCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDIwMDY3ODY6IEludGVyZmFjZSBuYW1lIGNhbiBoYXZlIG1vcmUgdGhhbiA4CisgICBjaGFyYWN0ZXJzLgorCisyMDA4LTA2LTI1IDE3OjM5ICB0YW5kZXJzCisKKyAgICogIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2FnZW50X3RyYXAuYywgYXBwcy9zbm1wdHJhcC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oLCBtYW4vc25tcGQuY29uZi41LmRlZiwgICAKKyAgICAgIHBlcmwvU05NUC9TTk1QLnhzLCBweXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsIHNubXBsaWIvc3lzdGVtLmM6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkxNjg0MDogbmV3IGNvbmZpZyBvcHRpb24gdG8gc2V0IFNOTVB2MSB0cmFwCisgICBhZ2VudCBhZGRyZXNzCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTkxNjg0MDogaW50cm9kdWNlCisgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQKIAogMjAwOC0wNi0yNSAxNToxNiAganNhZnJhbmVrCiAKICAgICogcGVybC9TTk1QL1NOTVAueHM6Ci0gICAgIGZpeCBhc3NlcnRpb24gd2hlbiB1c2VkIHdpdGggcGVybCA1LjEwCiAKLTIwMDgtMDYtMjQgMjI6MzYgIHRhbmRlcnMKKyAgIGZpeCBhc3NlcnRpb24gd2hlbiB1c2VkIHdpdGggcGVybCA1LjEwCiAKLSAgICogdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCB0ZXN0aW5nL3Rlc3RzL1QwMTRzbm1wdjJjZ2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTVzbm1wdjJjZ2V0bmV4dCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE2MHNubXB2MmNidWxrZ2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE3c25tcHYyY3RvdjFnZXRmYWlsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMThzbm1wdjF0b3YyY2dldGZhaWwsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMHNubXB2M2dldCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDIxc25tcHYzZ2V0bmV4dCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDIyMHNubXB2M2J1bGtnZXQ6Ci0gICAgIENIQU5HRVM6IGJ1aWxkaW5nOiBEaXNhYmxlIHRlc3RzIGlmIHRoZSBhZ2VudCBpcyBidWlsdCB3aXRob3V0IHRoZSBtaWIgbW9kdWxlIHRoZXkgZGVwZW5kIG9uLgotICAgICBCYWNrcG9ydCBvZiByMTcwODcuCisyMDA4LTA2LTI0IDA1OjAxICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCwgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWIsIHNubXBkOiBCVUc6IDIwMDExMjQ6IEFsbG93IGVtYmVkZGVkIE5VTAorICAgY2hhcmFjdGVycyBpbiB1c21Vc2VyUHVibGljCisKKzIwMDgtMDYtMjMgMTk6NTcgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBPbmx5IHJlc2VydmUgc3BhY2UgZm9yIHRoZSBleHRyYSBcMCBhZnRlciB0aGUgZGF0YSBmb3IgT0NURVQKKyAgIFNUUklORyB2YWx1ZWQgZW50aXRpZXMKKworMjAwOC0wNi0yMyAxOToxMyAgbWFnZnIKKworICAgKiAgdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCB0ZXN0aW5nL3Rlc3RzL1QwMTRzbm1wdjJjZ2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE1c25tcHYyY2dldG5leHQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTYwc25tcHYyY2J1bGtnZXQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOHNubXB2MXRvdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMHNubXB2M2dldCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyMXNubXB2M2dldG5leHQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjIwc25tcHYzYnVsa2dldDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IERpc2FibGUgdGVzdHMgaWYgdGhlIGFnZW50IGlzIGJ1aWx0IHdpdGhvdXQKKyAgIHRoZSBtaWIgbW9kdWxlIHRoZXkgZGVwZW5kIG9uLgorCisyMDA4LTA2LTIxIDEyOjE0ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBSZW1vdmUgc3B1cmlvdXMgQUNfTVNHX1JFU1VMVCBpbnNpZGUgYW4gQUNfQ0FDSEVfQ0hFQ0sKKworMjAwOC0wNi0xOCAwNTowNyAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgSGFuZGxlIHNvbGFyaXMgYXdrIGFzIHdlbGwuCisKKzIwMDgtMDYtMTcgMTY6MDEgIHRhbmRlcnMKKworICAgKiBhZ2VudC9hdXRvX25saXN0LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTk5NTc1MzogZnJvbSB2b2xrb3ZfcGV0ZXI6IG1pbm9yIGNsZWFudXAKKyAgIGFnZW50L2F1dG9fbmxpc3QuYwogCiAyMDA4LTA2LTE3IDA4OjU3ICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYzoKLSAgICAgRml4IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gc3ByaW50ZiBmb3IgVENQL0lQdjYKLSAgICAgQ3Jvc3MtcG9ydCBvZiByZXZpc2lvbiAxNjY2OAorCisgICBGaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBzcHJpbnRmIGZvciBUQ1AvSVB2NgorICAgQ3Jvc3MtcG9ydCBvZiByZXZpc2lvbiAxNjY2OAogCiAyMDA4LTA2LTE2IDIzOjU1ICB0YW5kZXJzCiAKICAgICogY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogQlVHOiAxOTk1MTcyOiBmaXggLS13aXRob3V0LWVsZiBjb25maWd1cmUgdXNhZ2UgbWVzc2FnZQogCi0yMDA4LTA2LTE1IDIyOjE1ICBkdHMxMgorICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTk5NTE3MjogZml4IC0td2l0aG91dC1lbGYgY29uZmlndXJlIHVzYWdlCisgICBtZXNzYWdlCiAKLSAgICogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsCi0gICAgIHNlZHNjcmlwdC5pbiwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTIgKQotCi0yMDA4LTA2LTE1IDIyOjE0ICBkdHMxMgotCi0gICAqIENIQU5HRVMsIE5FV1M6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDgtMDYtMTUgMjE6NTUgIGR0czEyCi0KLSAgICogQ2hhbmdlTG9nOgotICAgICBWZXJzaW9uIHVwZGF0ZQotICAgICAKLSAgICAgQWxzbyBmaXggYWxsIENoYW5nZUxvZyBlbnRyaWVzIHNpbmNlIHRoZSBDVlMtPlNWTiBtb3ZlLAotICAgICB3aGljaCBoYXZlIGJlZW4gb21pdHRpbmcgaW5mb3JtYXRpb24gYWJvdXQgd2hhdCBmaWxlcwotICAgICB3ZXJlIGFmZmVjdGVkIGJ5IGFueSBnaXZlbiBjaGFuZ2UuCi0KLTIwMDgtMDYtMTUgMjE6MzIgIGR0czEyCi0KLSAgICogYWdlbnQvTWFrZWZpbGUuZGVwZW5kLCBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kLCBhcHBzL01ha2VmaWxlLmRlcGVuZCwKLSAgICAgYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQsIHNubXBsaWIvTWFrZWZpbGUuZGVwZW5kOgotICAgICBtYWtlIGRlcGVuZAotCi0yMDA4LTA2LTE1IDIxOjA2ICBkdHMxMgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTIgKQogMjAwOC0wNi0xMyAyMjoxNiAgZHRzMTIKIAogICAgKiBkaXN0L2ZpbmQtcmVxdWlyZXMsIGRpc3QvbmV0LXNubXAuc3BlYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IEltcHJvdmVkIFJQTSBzcGVjIGZpbGVzLCBmb3IgYmV0dGVyIGNvbnNpc3RlbmN5IHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgotICAgICBQcm92aWRlZCBieSBKYW4gU2FmcmFuZWsKIAotMjAwOC0wNi0xMyAyMTo1NCAgZHRzMTIKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgUmVzdG9yZSBlbWJlZGRlZCBwZXJsIHRvIGRlZmF1bHQgTWFjIE9TL1ggYnVpbGQuCi0gICAgIChyZXZlcnNpbmcgcmV2aXNpb24gMTY5ODgpCisgICBDSEFOR0VTOiBidWlsZDogSW1wcm92ZWQgUlBNIHNwZWMgZmlsZXMsIGZvciBiZXR0ZXIgY29uc2lzdGVuY3kKKyAgIHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgorICAgUHJvdmlkZWQgYnkgSmFuIFNhZnJhbmVrCiAKIDIwMDgtMDYtMTMgMjE6MDMgIGR0czEyCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTg5OTc2MjogVHdlYWsgZW1iZWRkZWRfcGVybCBjb25maWd1cmUgY2hlY2tzLgorCisgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE4OTk3NjI6IFR3ZWFrIGVtYmVkZGVkX3BlcmwgY29uZmlndXJlCisgICBjaGVja3MuCisKKzIwMDgtMDYtMTMgMDU6NDMgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGFnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIAorICAgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBORVdTOiBidWlsZGluZzogUmV0aXJlIHRoZSBjb25maWdfb2xkL25ld19yZXF1aXJlIGZlYXR1cmUgYW5kCisgICByZXBsYWNlIGl0IHdpdGggY29uZmlnX3ZlcnNpb25fcmVxdWlyZSB0aGF0IGNvbXBhcmVzIHZlcnNpb24KKyAgIG51bWJlcnMgdG8gYWNoaWV2ZSBhIHNpbWlsYXIgdGhpbmcKIAogMjAwOC0wNi0xMiAxMjo1MCAgZHRzMTIKIAogICAgKiBkaXN0L21ha2VyZWxlYXNlOgotICAgICBPbmx5IGFkZCBub24tZGVmYXVsdCBNSUIgbW9kdWxlcyB0byB0aGUgdGVzdCBidWlsZHMuCi0gICAgIFNwZWNpZnlpbmcgdGhlIGhvc3QgbW9kdWxlIGlzIG5vdCBuZWVkZWQgb24gTGludXggc3lzdGVtcywKLSAgICAgYW5kIG1heSBicmVhayBvbiBvdGhlciBPL1NzLiBTcGVjaWZ5aW5nIHRoZSBkaXNtYW4vZXZlbnQKLSAgICAgTUlCIGlzIHVubmVjZXNzYXJ5IG9uIGFueSBzeXN0ZW0uCiAKLTIwMDgtMDYtMTIgMTI6NDUgIGR0czEyCi0KLSAgICogZGlzdC9tYWtlcmVsZWFzZToKLSAgICAgTWlzc2luZyBNRDUgc2lnbmF0dXJlIGZpbGUgZm9yIHppcCByZWxlYXNlCi0KLTIwMDgtMDYtMTIgMTI6NDQgIGR0czEyCi0KLSAgICogZGlzdC9tYWtlcmVsZWFzZToKLSAgICAgQmFzaWMgZG9jdW1lbnRhdGlvbiBhbmQgaGVscC91c2FnZSBtZXNzYWdlcy4KKyAgIE9ubHkgYWRkIG5vbi1kZWZhdWx0IE1JQiBtb2R1bGVzIHRvIHRoZSB0ZXN0IGJ1aWxkcy4KKyAgIFNwZWNpZnlpbmcgdGhlIGhvc3QgbW9kdWxlIGlzIG5vdCBuZWVkZWQgb24gTGludXggc3lzdGVtcywKKyAgIGFuZCBtYXkgYnJlYWsgb24gb3RoZXIgTy9Tcy4gU3BlY2lmeWluZyB0aGUgZGlzbWFuL2V2ZW50CisgICBNSUIgaXMgdW5uZWNlc3Nhcnkgb24gYW55IHN5c3RlbS4KIAogMjAwOC0wNi0xMSAxMDoxNiAgZHRzMTIKIAogICAgKiBkaXN0L21ha2VyZWxlYXNlOgotICAgICBPbmx5IGVuYWJsZSBJUFggdHJhbnNwb3J0IG9uIExpbnV4IHN5c3RlbXMKKworICAgT25seSBlbmFibGUgSVBYIHRyYW5zcG9ydCBvbiBMaW51eCBzeXN0ZW1zCiAKIDIwMDgtMDYtMTAgMTQ6MzcgIGR0czEyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgotICAgICBzbm1wZDogUEFUQ0g6IDE5MTgzODM6IEZpeCBEaXNNYW4gbW9uaXRvcmluZyBvZiBBZ2VudFggc3ViYWdlbnRzCi0gICAgIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgYWN0dWFsbHkgdXNlIHRoZSBjb2RlIHN1Ym1pdHRlZCBpbiB0aGF0Ci0gICAgIHBhdGNoLgotICAgICBJbnN0ZWFkIGl0IGluc2VydHMgYSBjYWxsYmFjayBob29rIGludG8gdGhlCi0gICAgIHNubXBfc3luY2hfcmVzcG9uc2VfY2IKLSAgICAgcm91dGluZSAodXNpbmcgdGhlIG15dm9pZCBwb2ludGVyIGFuZCBhIG5ldyBzZXNzaW9uIGZsYWcpLCB3aGljaAotICAgICBoYXMKLSAgICAgdGhlIHNhbWUgZWZmZWN0IHdpdGhvdXQgbmVlZGluZyB0byBkdXBsaWNhdGUgYW55IGNvZGUuCisgICAqICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBzbm1wZDogUEFUQ0g6IDE5MTgzODM6IEZpeCBEaXNNYW4gbW9uaXRvcmluZyBvZiBBZ2VudFggc3ViYWdlbnRzCisgICBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IGFjdHVhbGx5IHVzZSB0aGUgY29kZSBzdWJtaXR0ZWQgaW4gdGhhdAorICAgcGF0Y2guCisgICBJbnN0ZWFkIGl0IGluc2VydHMgYSBjYWxsYmFjayBob29rIGludG8gdGhlCisgICBzbm1wX3N5bmNoX3Jlc3BvbnNlX2NiCisgICByb3V0aW5lICh1c2luZyB0aGUgbXl2b2lkIHBvaW50ZXIgYW5kIGEgbmV3IHNlc3Npb24gZmxhZyksIHdoaWNoCisgICBoYXMKKyAgIHRoZSBzYW1lIGVmZmVjdCB3aXRob3V0IG5lZWRpbmcgdG8gZHVwbGljYXRlIGFueSBjb2RlLgogCiAyMDA4LTA2LTEwIDEyOjUyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmM6Ci0gICAgIEZpeCBsb2dpYyBlcnJvcnMgaW4gaGFuZGxpbmcgb2Ygb2xkL2N1cnJlbnQgdmFyYmluZCBsaXN0cy4KLSAgICAgUmVwb3J0ZWQgYnkgRnJlZCBHYW8gaW4gcGF0Y2ggIzE5MTgzODMKIAotMjAwOC0wNi0xMCAxMDo1MSAgZHRzMTIKKyAgIEZpeCBsb2dpYyBlcnJvcnMgaW4gaGFuZGxpbmcgb2Ygb2xkL2N1cnJlbnQgdmFyYmluZCBsaXN0cy4KKyAgIFJlcG9ydGVkIGJ5IEZyZWQgR2FvIGluIHBhdGNoICMxOTE4MzgzCisKKzIwMDgtMDYtMDkgMTk6MDggIGhhcmRha2VyCiAKICAgICogc25tcGxpYi9zY2FwaS5jOgotICAgICB1cGRhdGUgdG8gbWF0Y2ggcHVibGlzaGVkIHJlbGVhc2UKKworICAgdXBkYXRlIHRvIG1hdGNoIHB1Ymxpc2hlZCByZWxlYXNlCisKKzIwMDgtMDYtMDkgMTY6NTggIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGFkZGVkIHNubXBfdmVyc2lvbi5jCiAKIDIwMDgtMDYtMDkgMDk6MDUgIGR0czEyCiAKICAgICogYXBwcy9zbm1wdHJhcC5jLCBhcHBzL3NubXB1c20uYzoKLSAgICAgQSBjb3VwbGUgbW9yZSBtaXNzaW5nIGVycm9yIGNoZWNrcy4KLSAgICAgQmFzZWQgb24gdGhvc2UgcmVwb3J0ZWQgYnkgQm95YSBTdW4KKworICAgQSBjb3VwbGUgbW9yZSBtaXNzaW5nIGVycm9yIGNoZWNrcy4KKyAgIEJhc2VkIG9uIHRob3NlIHJlcG9ydGVkIGJ5IEJveWEgU3VuCiAKIDIwMDgtMDYtMDYgMTI6MDIgIGR0czEyCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIEJldHRlciBoYW5kbGluZyBvZiBlbWJlZGRlZCBwZXJsIG9uIE1hYyBPUy9YCi0gICAgIChuZWFybHkgd29ya2luZyBvbiBMZW9wYXJkIG5vdykKIAotMjAwOC0wNi0wNSAyMzowNyAgdGFuZGVycworICAgQmV0dGVyIGhhbmRsaW5nIG9mIGVtYmVkZGVkIHBlcmwgb24gTWFjIE9TL1gKKyAgIChuZWFybHkgd29ya2luZyBvbiBMZW9wYXJkIG5vdykKIAotICAgKiBkaXN0L25ldC1zbm1wLnNwZWM6Ci0gICAgIHN5bmMgd2l0aCB0cnVuaworMjAwOC0wNi0wMyAyMzoxNCAgdGFuZGVycwogCi0yMDA4LTA2LTA1IDIxOjEyICB0YW5kZXJzCisgICAqICBhY2NvbmZpZy5oLCBhZ2VudC9hdXRvX25saXN0LmMsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jLCBjb25maWd1cmUuaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N5c3RlbS5jOgogCi0gICAqIGNvbmZpZ3VyZToKLSAgICAgcnVuIGF1dG9jb25mCisgICBORVdTOiBhaXg6IEFkZCBzdXBwb3J0IGZvciBBSVggNi54CiAKLTIwMDgtMDYtMDUgMjE6MTEgIHRhbmRlcnMKLQotICAgKiBhY2NvbmZpZy5oLCBhZ2VudC9hdXRvX25saXN0LmMsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oLAotICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jLAotICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLAotICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYywgY29uZmlndXJlLmluLAotICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCBzbm1wbGliL3N5c3RlbS5jOgotICAgICBORVdTOiBBSVg6IEFkZCBzdXBwb3J0IGZvciBBSVggNi54LgotICAgICBTdWNjZXNzZnVsbHkgdGVzdGVkIG9uIHRydW5rIChwYXNzZWQgZXh0ZW5zaXZlIHJlZ3Jlc3Npb24KLSAgICAgdGVzdGluZykuCi0KLTIwMDgtMDYtMDUgMjE6MDQgIHRhbmRlcnMKKzIwMDgtMDYtMDMgMjI6NDYgIHRhbmRlcnMKIAogICAgKiBhY2xvY2FsLm00LCBjb25maWcuZ3Vlc3MsIGNvbmZpZy5zdWIsIGNvbmZpZ3VyZSwgbHRtYWluLnNoOgotICAgICBORVdTOiBidWlsZDogVXBkYXRlIHRvIGxpYnRvb2wgMS41LjI2IChmcm9tIDEuNS4yNCksIGUuZy4gdG8KLSAgICAgYmV0dGVyIHN1cHBvcnQgQUlYIDYuMSBhbmQgTWFjIE9TIFggTGVvcGFyZC4KLSAgICAgU3VjY2Vzc2Z1bGx5IHRlc3RlZCBvbiB0cnVuayAocGFzc2VkIGV4dGVuc2l2ZSByZWdyZXNzaW9uCi0gICAgIHRlc3RpbmcpLgogCi0yMDA4LTA2LTAzIDA5OjM3ICBkdHMxMgorICAgTkVXUzogYnVpbGQ6IFVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNiAoZnJvbSAxLjUuMjQpLCBlLmcuIHRvCisgICBiZXR0ZXIgc3VwcG9ydCBBSVggNi4xIGFuZCBNYWMgT1MgWCBMZW9wYXJkCiAKLSAgICogUkVBRE1FLm9zWDoKLSAgICAgRG9jdW1lbnQgd2h5IGVtYmVkZGVkIHBlcmwgd2FzIGRpc2FibGVkLgorMjAwOC0wNi0wMyAyMjozOSAgdGFuZGVycwogCi0yMDA4LTA2LTAzIDA4OjU3ICBkdHMxMgorICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICB3aHkgYWRkIGxlZ2FjeSBkZWZpbml0aW9ucyBmb3IgbmV3IHN0dWZmPworCisyMDA4LTA2LTAzIDA5OjAzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYzoKLSAgICAgRW5zdXJlIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24gaGFzIGEgdmFsaWQgZW5naW5lSUQsCi0gICAgIHRvIGF2b2lkIGhhdmluZyB0byBwcm9iZSBmb3IgaXQgb24gdGhlIGZpcnN0IHVzZS4KIAotMjAwOC0wNi0wMiAxNToxOCAgZHRzMTIKKyAgIEVuc3VyZSB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uIGhhcyBhIHZhbGlkIGVuZ2luZUlELAorICAgdG8gYXZvaWQgaGF2aW5nIHRvIHByb2JlIGZvciBpdCBvbiB0aGUgZmlyc3QgdXNlLgogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBEcm9wIGVtYmVkZGVkIHBlcmwgZnJvbSB0aGUgZGVmYXVsdCBidWlsZCBvbiBNYWMgT1MvWAotICAgICBUaCBkdWFsLWFyY2hpdGVjdHVyZSBuYXR1cmUgb2YgdGhlIGRlZmF1bHQgcGVybCBiaW5hcnkKLSAgICAgY29uZnVzZXMgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgc3VmZmljaWVudGx5IHRoYXQgdGhlCi0gICAgIGNvZGUgd29uJ3QgYWN0dWFsbHkgY29tcGlsZS4KKzIwMDgtMDYtMDIgMjI6MTcgIG1hZ2ZyCiAKLTIwMDgtMDYtMDIgMTM6MjcgIGR0czEyCisgICAqICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgsIHNubXBsaWIvc25tcF9hcGkuYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi90b29scy5jOgorCisgICBORVdTOiBzbm1wbGliOiBDb252ZXJ0IGdlbmVyaWMgc291cmNlIGFyZ3VtZW50cyBmcm9tIGNvbnN0CisgICB1X2NoYXIqIHRvIGNvbnN0IHZvaWQqIGZvciBzbm1wX3BkdV9hZGRfdmFyaWFibGUsCisgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlLCBzbm1wX3NldF92YXJfdmFsdWUsCisgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUgYW5kIG1lbWR1cC4KKworMjAwOC0wNi0wMiAxMzoyOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jOgotICAgICBFbnN1cmUgdGhhdCB0aGUgInRyaWdnZXIgYXJtZWQiIGZsYWcgaXMgY2xlYXJlZCB3aGVuZXZlciB0aGUKLSAgICAgbWF0Y2hpbmcKLSAgICAgZXhwcmVzc2lvbiBpcyBmb3VuZCB0byBob2xkIC0gZXZlbiBpZiB0aGUgdHJpZ2dlciBkb2Vzbid0Ci0gICAgIGFjdHVhbGx5IGZpcmUuCi0gICAgIFRoaXMgYWZmZWN0cyB0aGUgYmVoYXZpb3VyIG9mIGluaXRpYWxseS10cnVlIGV4cHJlc3Npb25zLCB3aGVuCi0gICAgIHRoaXMKLSAgICAgaW5pdGlhbCBmaXJpbmcgaXMgc3VwcHJlc3NlZCB1c2luZyB0aGUgbXRlVHJpZ2dlcipTdGFydHVwIG9iamVjdC4KLSAgICAgV2l0aG91dCB0aGlzIHR3ZWFrLCB0aGUgdHJpZ2dlciB3aWxsIGZpcmUgb24gdGhlIHNlY29uZCBzYW1wbGluZwotICAgICAoYXMgaWYgdGhlIGV4cHJlc3Npb24gaGFkIGV2YWx1YXRlZCBmYWxzZSBmaXJzdCB0aW1lIHJvdW5kKS4KKworICAgRW5zdXJlIHRoYXQgdGhlICJ0cmlnZ2VyIGFybWVkIiBmbGFnIGlzIGNsZWFyZWQgd2hlbmV2ZXIgdGhlCisgICBtYXRjaGluZworICAgZXhwcmVzc2lvbiBpcyBmb3VuZCB0byBob2xkIC0gZXZlbiBpZiB0aGUgdHJpZ2dlciBkb2Vzbid0CisgICBhY3R1YWxseSBmaXJlLgorICAgVGhpcyBhZmZlY3RzIHRoZSBiZWhhdmlvdXIgb2YgaW5pdGlhbGx5LXRydWUgZXhwcmVzc2lvbnMsIHdoZW4KKyAgIHRoaXMKKyAgIGluaXRpYWwgZmlyaW5nIGlzIHN1cHByZXNzZWQgdXNpbmcgdGhlIG10ZVRyaWdnZXIqU3RhcnR1cCBvYmplY3QuCisgICBXaXRob3V0IHRoaXMgdHdlYWssIHRoZSB0cmlnZ2VyIHdpbGwgZmlyZSBvbiB0aGUgc2Vjb25kIHNhbXBsaW5nCisgICAoYXMgaWYgdGhlIGV4cHJlc3Npb24gaGFkIGV2YWx1YXRlZCBmYWxzZSBmaXJzdCB0aW1lIHJvdW5kKS4KIAogMjAwOC0wNi0wMSAyMDowMiAgZHRzMTIKIAotICAgKiBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaDoKLSAgICAgSGFuZGxlIHZhcmJpbmQgcGF5bG9hZCBmb3IgaW50ZXJuYWwgbGlua1VwL0Rvd24gbm90aWZpY2F0aW9ucy4KKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmg6CisKKyAgIEhhbmRsZSB2YXJiaW5kIHBheWxvYWQgZm9yIGludGVybmFsIGxpbmtVcC9Eb3duIG5vdGlmaWNhdGlvbnMuCiAKIDIwMDgtMDYtMDEgMDY6NDUgIHRhbmRlcnMKIAogICAgKiBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHM6Ci0gICAgIE5FV1M6IHNubXB0cmFwZDogQlVHOiAxOTU1MjI3OiBNZW1vcnkgbGVhayBmb3IgZW1iZWRkZWQgUGVybCBvbgotICAgICB4ODZfNjQKIAotMjAwOC0wNS0yOSAxNjoxMSAgZHRzMTIKKyAgIE5FV1M6IHNubXB0cmFwZDogQlVHOiAxOTU1MjI3OiBNZW1vcnkgbGVhayBmb3IgZW1iZWRkZWQgUGVybCBvbgorICAgeDg2XzY0CiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9saW51eC5jOgotICAgICBTaWxseSB0eXBvCisyMDA4LTA1LTMxIDEyOjA4ICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBUaGUgc2NhbGFyIGhlbHBlciB0aGF0IHdhcyBjYWxsZWQgZnJvbSB0aGUKKyAgIHNjYWxhcl9ncm91cCBoZWxwZXIgZGlkIG5vdGhpbmcgc2F2ZSBhZGRpbmcgYSB0cmFpbGluZyAwIHRvIHRoZQorICAgYXJndW1lbnQuIFJlbW92ZSB0aGUgdXNlIG9mIHRoZSBzY2FsYXIgaGVscGVyIGZyb20gdGhlCisgICBzY2FsYXJfZ3JvdXAgYW5kIGFkZCB0aGUgdHJhaWxpbmcgMCBpbiB0aGUgc2NhbGFyX2dyb3VwIGhlbHBlci4KKworMjAwOC0wNS0zMCAxMzo1NiAgZHRzMTIKKworICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgorCisgICBUd2VhayBsaXN0IG9mIG9uLWxpbmUgc29mdHdhcmUgZGlyZWN0b3JpZXMgdG8gYmUgdXBkYXRlZC4KIAogMjAwOC0wNS0yOSAwOTo1OSAgZHRzMTIKIAotICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsIGFwcHMvc25tcHRlc3QuYywKLSAgICAgYXBwcy9zbm1wdHJhcC5jLCBhcHBzL3NubXB1c20uYywgc25tcGxpYi9zbm1wdXNtLmM6Ci0gICAgIFZhcmlvdXMgbWlzc2luZyBlcnJvciBjaGVja3MsIGV0Yy4KLSAgICAgUmVwb3J0ZWQgYnkgQm95YSBTdW4uCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2NsaWVudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYywgYXBwcy9zbm1wdGVzdC5jLCAgIAorICAgICAgYXBwcy9zbm1wdHJhcC5jLCBhcHBzL3NubXB1c20uYywgc25tcGxpYi9zbm1wdXNtLmM6CisKKyAgIFZhcmlvdXMgbWlzc2luZyBlcnJvciBjaGVja3MsIGV0Yy4KKyAgIFJlcG9ydGVkIGJ5IEJveWEgU3VuLgogCiAyMDA4LTA1LTI4IDExOjQ4ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfZnJlZWJzZC5jLAotICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYzoKLSAgICAgUmVwb3J0IGNhY2hlZCBtZW1vcnkgc2l6ZS91c2FnZSBwcm9wZXJseSAocGFydGljdWxhcmx5IG9uCi0gICAgIEZyZWVCU0QpLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9mcmVlYnNkLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYzoKKworICAgUmVwb3J0IGNhY2hlZCBtZW1vcnkgc2l6ZS91c2FnZSBwcm9wZXJseSAocGFydGljdWxhcmx5IG9uCisgICBGcmVlQlNEKS4KIAogMjAwOC0wNS0yOCAxMToyMSAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnkuYzoKLSAgICAgQnJpbmcgbWVtQnVmZmVyIGNvZGUgaW50byBsaW5lIHdpdGggcmV2aXNpb24gMTY5NzUuCisKKyAgIEJyaW5nIG1lbUJ1ZmZlciBjb2RlIGludG8gbGluZSB3aXRoIHJldmlzaW9uIDE2OTc1LgogCiAyMDA4LTA1LTI4IDExOjEwICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS9tZW1vcnlfbGludXguYzoKLSAgICAgTGludXggMi42IGtlcm5lbCBkb2VzIG5vdCByZXBvcnQgc2hhcmVkIG1lbW9yeSBpbmZvcm1hdGlvbi4KKworICAgTGludXggMi42IGtlcm5lbCBkb2VzIG5vdCByZXBvcnQgc2hhcmVkIG1lbW9yeSBpbmZvcm1hdGlvbi4KIAogMjAwOC0wNS0yOCAwOToxOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2xpbnV4LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE5MzEzOTE6IEZpeCByZXBvcnRpbmcgb2YgTWVtb3J5IGJ1ZmZlcnMgYW5kCi0gICAgIGNhY2hlZCBtZW1vcnkuCi0gICAgIFByb2JsZW0gcmVwb3J0ZWQgYnkgZG9jb25laWxsLgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxOTMxMzkxOiBGaXggcmVwb3J0aW5nIG9mIE1lbW9yeSBidWZmZXJzIGFuZAorICAgY2FjaGVkIG1lbW9yeS4KKyAgIFByb2JsZW0gcmVwb3J0ZWQgYnkgZG9jb25laWxsLgorCisyMDA4LTA1LTI4IDA4OjMwICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jOgorCisgICBUd2VhayB0aGUgZml4IGZvciBidWcgIzE5MTI2NDcKIAogMjAwOC0wNS0yOCAwNjo1NiAgbWFnZnIKIAogICAgKiBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogRW5mb3JjZSB0aGUgbG93ZXIgbGltaXQgb24gc2NhbGFyX2dyb3VwcwotICAgICBUaGlzIGZpeGVzIHRoZSBjYXNlIG9mIGdldG5leHQgaWNtcC4wIHJldHVybmluZyBpY21wLjAuMCBpbnN0ZWFkCi0gICAgIG9mIHRoZQotICAgICBleHBlY3RlZCBpY21wSW5Nc2dzLjAKKworICAgQ0hBTkdFUzogc25tcGQ6IEVuZm9yY2UgdGhlIGxvd2VyIGxpbWl0IG9uIHNjYWxhcl9ncm91cHMKKyAgIFRoaXMgZml4ZXMgdGhlIGNhc2Ugb2YgZ2V0bmV4dCBpY21wLjAgcmV0dXJuaW5nIGljbXAuMC4wIGluc3RlYWQKKyAgIG9mIHRoZQorICAgZXhwZWN0ZWQgaWNtcEluTXNncy4wCiAKIDIwMDgtMDUtMjcgMjI6MDMgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTkxMjY0NzogRml4IG1lbW9yeSBsZWFrIGZvbGxvd2luZyBmYWlsZWQKLSAgICAgcmVxdWVzdHMuCi0gICAgIEZpeCBwcm92aWRlZCBieSBBbnRvbiBQYWsKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTkxMjY0NzogRml4IG1lbW9yeSBsZWFrIGZvbGxvd2luZyBmYWlsZWQKKyAgIHJlcXVlc3RzLgorICAgRml4IHByb3ZpZGVkIGJ5IEFudG9uIFBhawogCiAyMDA4LTA1LTI3IDIxOjIyICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAxOTU4MDQxOiBFbnN1cmUgSURzIGFyZSBub3QgdHJ1bmNhdGVkLgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE5NTgwNDE6IEVuc3VyZSBJRHMgYXJlIG5vdCB0cnVuY2F0ZWQuCiAKIDIwMDgtMDUtMjcgMTQ6MTggIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9mcmVlYnNkLmM6Ci0gICAgIE1vbml0b3IgbWVtb3J5IGJ1ZmZlcnMgb24gRnJlZUJTRCBzeXN0ZW1zLgotICAgICBBUEkgc3VnZ2VzdGVkIGJ5IENocmlzCisKKyAgIE1vbml0b3IgbWVtb3J5IGJ1ZmZlcnMgb24gRnJlZUJTRCBzeXN0ZW1zLgorICAgQVBJIHN1Z2dlc3RlZCBieSBDaHJpcwogCiAyMDA4LTA1LTI3IDEyOjQ3ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6Ci0gICAgIEZpeCBjYXJlbGVzcyB0eXBvIHdoZW4gYXBwbHlpbmcgTWF4aW0ncyBwYXRjaC4KKworICAgRml4IGNhcmVsZXNzIHR5cG8gd2hlbiBhcHBseWluZyBNYXhpbSdzIHBhdGNoLgorCisyMDA4LTA1LTI1IDIxOjM3ICBtYWdmcgorCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBSZWltcGxlbWVudGF0aW9uIG9mIHVzbVN0YXRzLgogCiAyMDA4LTA1LTI1IDA3OjI0ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudENvbmYuYzoKLSAgICAgUmVtb3ZlIGEgbG9jYWwgdmFyaWFibGUgb25seSB1c2VkIHRvIHRyYWNrIGEgbG9jYWwgc3RyaW5nCi0gICAgIGNvbnN0YW50IGFuZCByZXBsYWNlIHQgd2l0aCBhIGRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIHN0cmluZwotICAgICBjb25zdGFudC4KLSAgICAgTWFyayB0d28gbG9jYWwgZnVuY3Rpb25zIHN0YXRpYyBhcyB3ZWxsLgorCisgICBSZW1vdmUgYSBsb2NhbCB2YXJpYWJsZSBvbmx5IHVzZWQgdG8gdHJhY2sgYSBsb2NhbCBzdHJpbmcKKyAgIGNvbnN0YW50IGFuZCByZXBsYWNlIHQgd2l0aCBhIGRpcmVjdCByZWZlcmVuY2UgdG8gdGhlIHN0cmluZworICAgY29uc3RhbnQuCisgICBNYXJrIHR3byBsb2NhbCBmdW5jdGlvbnMgc3RhdGljIGFzIHdlbGwuCiAKIDIwMDgtMDUtMjUgMDc6MTcgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jOgotICAgICBSZW9yZGVyIHRvIGF2b2lkIG9uZSBzdHJsZW4gY2FsbC4KLSAgICAgQWRkIG1pc3NpbmcgY2FzdC4KKworICAgUmVvcmRlciB0byBhdm9pZCBvbmUgc3RybGVuIGNhbGwuCisgICBBZGQgbWlzc2luZyBjYXN0LgogCiAyMDA4LTA1LTI1IDA3OjE0ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmM6Ci0gICAgIE1ha2UgaXBmd19uYW1lIGEgc3RhdGljIGFycmF5IGluc3RlYWQgb2YgYSBwb2ludGVyIGFzIGl0IGlzCi0gICAgIHByaXZhdGUgdG8gdGhpcyBtb2R1bGUuCisKKyAgIE1ha2UgaXBmd19uYW1lIGEgc3RhdGljIGFycmF5IGluc3RlYWQgb2YgYSBwb2ludGVyIGFzIGl0IGlzCisgICBwcml2YXRlIHRvIHRoaXMgbW9kdWxlLgogCiAyMDA4LTA1LTI1IDA3OjA1ICBtYWdmcgogCiAgICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzoKLSAgICAgV2hlbiBjYXN0aW5nLCBjYXN0IHRvIHRoZSByaWdodCB0eXBlLgorCisgICBXaGVuIGNhc3RpbmcsIGNhc3QgdG8gdGhlIHJpZ2h0IHR5cGUuCisKKzIwMDgtMDUtMjUgMDY6MDggIG1hZ2ZyCisKKyAgICogIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMsCisgICAgICAgICBhZ2VudC9zbm1wX2FnZW50LmMsIGFwcHMvc25tcHRlc3QuYywgc25tcGxpYi9yZWFkX2NvbmZpZy5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX2NsaWVudC5jOgorCisgICBSZW1vdmUgd2FybmluZ3MgYWJvdXQgdW5yZWFjaGFibGUgY29kZSBvbiBzb2xhcmlzLgogCiAyMDA4LTA1LTI0IDIwOjMwICBkdHMxMgogCiAgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6Ci0gICAgIENIQU5HRVM6IHB5dGhvbjogQlVHOiAxODI2MTc0OiBDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IHdoZW4KLSAgICAgcHJpbnRpbmcgdmFsdWVzLgotICAgICBBZGRyZXNzZXMgQ1ZFLTIwMDgtMjI5MgorCisgICBDSEFOR0VTOiBweXRob246IEJVRzogMTgyNjE3NDogQ2hlY2sgZm9yIGJ1ZmZlciBvdmVyZmxvdyB3aGVuCisgICBwcmludGluZyB2YWx1ZXMuCisgICBBZGRyZXNzZXMgQ1ZFLTIwMDgtMjI5MgorCisyMDA4LTA1LTI0IDEzOjExICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBPbiBBSVggbmV0aW5ldC9pbl9wY2IuaCBkZXBlbmRzIG9uIG5ldC9yb3V0ZS5oLiBBZGQgdGhlIGluY2x1ZGUKKyAgIGZvciBjb25maWd1cmUuCisKKzIwMDgtMDUtMjQgMDk6MDYgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgTWFrZSB0aGUgY2hlY2tzIGZvciBuZXRpbmV0L2luX3BjYi5oIGFuZCBzeXMvZGlza2xhYmVsLmggdXNlIHRoZQorICAgbm9ybWFsCisgICBtYWNoaW5lcnkuCisgICBBZGQgYSBuZXRzbm1wIHByZWZpeCB0byB0aGUgY2FjaGUgdmFyaWFibGUKKyAgIGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUiB0bworICAgcGFjaWZ5IGFjbG9jYWwuCiAKIDIwMDgtMDUtMjMgMjA6MjcgIGR0czEyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsCi0gICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogRml4IGZvciBDUFUgc3RhdHMgb24gRnJlZUJTRAotICAgICBQcm92aWRlZCBieSBNYXhpbSBTb2JvbGV2CisgICAqICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogRml4IGZvciBDUFUgc3RhdHMgb24gRnJlZUJTRAorICAgUHJvdmlkZWQgYnkgTWF4aW0gU29ib2xldgogCiAyMDA4LTA1LTIzIDIwOjEyICBkdHMxMgogCiAgICAqIGRpc3Qvc25tcGQtaW5pdC5kLCBkaXN0L3NubXB0cmFwZC1pbml0LmQ6Ci0gICAgIENIQU5HRVM6IGluc3RhbGw6IFBBVENIOiAxOTY5NjI3OiBIYW5kbGUgZW1wdHkKLSAgICAgL2V0Yy9zeXNjb25maWcvbmV0d29yayBmaWxlCi0gICAgIEZpeCBwcm92aWRlZCBieSBKb3NoIFdpbG1lcworCisgICBDSEFOR0VTOiBpbnN0YWxsOiBQQVRDSDogMTk2OTYyNzogSGFuZGxlIGVtcHR5CisgICAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrIGZpbGUKKyAgIEZpeCBwcm92aWRlZCBieSBKb3NoIFdpbG1lcwogCiAyMDA4LTA1LTIzIDIwOjA3ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE5NjcxOTQ6IFJlY29nbmlzZSBORlM0IG1vdW50cwotICAgICBTdWJtaXR0ZWQgYnkgRmFicmljZSBCYWNjaGVsbGEKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxOTY3MTk0OiBSZWNvZ25pc2UgTkZTNCBtb3VudHMKKyAgIFN1Ym1pdHRlZCBieSBGYWJyaWNlIEJhY2NoZWxsYQogCiAyMDA4LTA1LTIyIDIwOjU1ICBkdHMxMgogCiAgICAqIHNubXBsaWIvYXNuMS5jOgotICAgICBEb24ndCBjaGFuZ2UgbGVuZ3RoIG9mIE9JRCBidWZmZXIgaWYgcGFyc2luZyB0aGUgT0lEIGZhaWxzLgotICAgICBSZXBvcnRlZCBieSBzYWlmdWxsYSBNb2hkIEFiZHVsLgorCisgICBEb24ndCBjaGFuZ2UgbGVuZ3RoIG9mIE9JRCBidWZmZXIgaWYgcGFyc2luZyB0aGUgT0lEIGZhaWxzLgorICAgUmVwb3J0ZWQgYnkgc2FpZnVsbGEgTW9oZCBBYmR1bC4KKworMjAwOC0wNS0yMiAxMzozNCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgdXBkYXRlIHRoZSBhZHZlcnRpc2luZyBzZWN0aW9uIGFuZCBjaGFuZ2Ugbm90ZSBhYm91dCBob3cgdG8KKyAgIHVwbG9hZCBmaWxlcyAoYWRkaW5nIGFuIGF1dG9tYXR0ZWQgcnN5bmMgY29tbWFuZCkKKworMjAwOC0wNS0yMiAwNDowOCAgbWFnZnIKKworICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuYzoKKworICAgQWRkIG1pc3NpbmcgaW5jbHVkZS4KKworMjAwOC0wNS0yMSAyMDoyNyAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jOgorCisgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHRoZSBhbGlhcyBtb2R1bGUgd2l0aCBhIEMrKyBjb21waWxlci4KKworMjAwOC0wNS0yMSAxMzo0MCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgYWRkZWQgRlNGIGRpcmVjdG9yeSBpbmZvCisKKzIwMDgtMDUtMjEgMDk6MjEgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgQWRkIEZyZWUgU29mdHdhcmUgRGlyZWN0b3J5IHRvIHRoZSBsaXN0IG9mIHBsYWNlcyB0byBiZSB1cGRhdGVkLgorCisyMDA4LTA1LTIwIDIzOjAwICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYywgYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmgsIGFnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jLCBhZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMsIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYywgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcywgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFRoZSBtYWpvcml0eSBvZiB0aGUgZGVwZW5kZW5jaWVzIG9uIHV0aWxfZnVuY3MgaXMKKyAgIGZvciB0aGUgaGVhZGVyXyogZnVuY3Rpb25zLiBGYWN0b3Igb3V0IHRoZSBoZWFkZXJfKiBmdW5jdGlvbnMgYW5kCisgICBhZGp1c3QgdGhlIHJlcXVpcmVtZW50cy4KKworMjAwOC0wNS0yMCAyMjo0MCAgbWFnZnIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hZ3V0aWwuYywgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5oLCBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmgsIGFnZW50L21pYmdyb3VwL1Jtb24vaGlzdG9yeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmgsIGFnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuaCwgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCAKKyAgICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jLAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jLCBhZ2VudC9taWJncm91cC93aW5FeHRETEwuYywgIAorICAgICAgIGFnZW50L21pYmdyb3VwL3dpbkV4dERMTC5oLCBhZ2VudC9zbm1wX2FnZW50LmM6CisKKyAgIENIQU5HRVM6IERvIG5vdCBjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKSBpZiBub3RoaW5nIGZyb20KKyAgIHV0aWxfZnVuY3MgaXMgdXNlZAogCiAyMDA4LTA1LTE0IDEzOjM1ICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgotICAgICBmaXggYnVpbGQgZmFpbHVyZXMgd2l0aCBlYXJsaWVyIExpbnV4IGtlcm5lbHMgKGUuZy4gd2l0aCBSSDcuMSkKLSAgICAgaW50cm9kdWNlZCBieSByMTY5MDkKIAotMjAwOC0wNS0wOSAxOTowNCAgZHRzMTIKKyAgIGZpeCBidWlsZCBmYWlsdXJlcyB3aXRoIGVhcmxpZXIgTGludXgga2VybmVscyAoZS5nLiB3aXRoIFJINy4xKQorICAgaW50cm9kdWNlZCBieSByMTY5MDkKIAotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sCi0gICAgIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sCi0gICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCBwZXJsL2FnZW50L2FnZW50LnBtLAotICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIHNlZHNjcmlwdC5pbiwKLSAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTEgKQorMjAwOC0wNS0xMyAxODo1NiAgaGFyZGFrZXIKIAotMjAwOC0wNS0wOSAxOTowNCAgZHRzMTIKKyAgICogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotICAgKiBDSEFOR0VTLCBORVdTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorICAgZml4IGNvbW1lbnQgdHlwbwogCi0yMDA4LTA1LTA5IDE4OjQ3ICBkdHMxMgorMjAwOC0wNS0xMyAxNTo0NiAgaGFyZGFrZXIKIAotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICAqIE5FV1M6CiAKLTIwMDgtMDUtMDkgMTU6MjQgIGR0czEyCisgICBkb2N1bWVudCB0aGUgLXQgc3dpdGNoIGNoYW5nZQogCi0gICAqIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKLSAgICAgbWFrZSBkZXBlbmQKKzIwMDgtMDUtMTMgMTU6NDUgIGhhcmRha2VyCiAKLTIwMDgtMDUtMDkgMTU6MTQgIGR0czEyCisgICAqIG1hbi9zbm1wY21kLjEuZGVmOgogCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4yLnByZTEgKQorICAgZG9jdW1lbnQgdGhlIGFsaWFzIGtleXdvcmQKIAotMjAwOC0wNS0wOSAxNDo1MSAgZHRzMTIKKzIwMDgtMDUtMTMgMTU6NDEgIGhhcmRha2VyCiAKLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQorICAgKiBtYW4vc25tcGNtZC4xLmRlZiwgc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYzoKIAotMjAwOC0wNS0wOSAxNDo0NyAgZHRzMTIKKyAgIGFsbG93IGZsb2F0aW5nIHBvaW50IG51bWJlcnMgdG8gYmUgdXNlZCBmb3IgdGltZW91dCB2YWx1ZXMKIAotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMiApCisyMDA4LTA1LTEyIDIxOjExICBoYXJkYWtlcgogCi0yMDA4LTA1LTA5IDE0OjIzICBkdHMxMgorICAgKiBtaWJzL05FVC1TTk1QLVRDLnR4dCwgc25tcGxpYi9zbm1wQWxpYXNEb21haW4uYzoKIAotICAgKiBNYWtlZmlsZS50b3A6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICBBZGRlZCBhIHJlYWwgc25tcEFsaWFzRG9tYWluIE9JRCBkZWZpbml0aW9uCiAKLTIwMDgtMDUtMDkgMTM6NTggIGR0czEyCisyMDA4LTA1LTEyIDIxOjA3ICBoYXJkYWtlcgogCi0gICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgotICAgICBEZWJ1Z2dpbmcgbWVzc2FnZXMuCisgICAqIE5FV1M6CisKKyAgIHVwZGF0ZWQgTkVXUyB3aXRoIG5ldyBhbGlhcyBibHVyYgorCisyMDA4LTA1LTEyIDIxOjA3ICBoYXJkYWtlcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sIG1hbi9zbm1wLmNvbmYuNS5kZWYsICAgCisgICAgICBzbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jLCBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmM6CisKKyAgIE5FV1M6IHNubXBsaWI6IEFkZGVkIGEgYWxpYXMgdHJhbnNwb3J0IGZvciBtYXBwaW5nIGNvbXBsZXgKKyAgIHRyYW5zcG9ydCBzdHJpbmdzIHRvIHNpbXBsZSBuYW1lIGRlZmluaXRpb25zCisKKzIwMDgtMDUtMTIgMTk6MzggIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHN0cmlwIG9mZiB0cmFpbGluZyBtb2R1bGUgbmFtZQorCisyMDA4LTA1LTEyIDA2OjAzICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmM6CisKKyAgIE1ha2UgbWliSUkvc25tcCB3b3JrIGFnYWluLgorCisyMDA4LTA1LTEwIDIxOjQ3ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcy4KKworMjAwOC0wNS0xMCAwOTo1NSAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfaW5kZXguYywgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYywgYWdlbnQvc25tcF9hZ2VudC5jLCAgIAorICAgICAgc25tcGxpYi9hc24xLmM6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbGliOiBSZXBsYWNlIHRoZSBpbnZhbGlkICUwOHAgZm9ybWF0CisgICBzcGVjaWZpZXIgd2l0aCB0aGUgY29ycmVjdCAlOHAuCisKKzIwMDgtMDUtMTAgMDk6NTEgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2F0LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgCisgICAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYywgYXBwcy9zbm1wZGVsdGEuYywgICAKKyAgICAgIGFwcHMvc25tcG5ldHN0YXQvaW5ldC5jLCBhcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMsICAgCisgICAgICBhcHBzL3NubXBuZXRzdGF0L21haW4uYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbmV0c3RhdCwgc25tcHRyYXBkLCBzbm1wZGVsdGE6IFVzZSBOVUxMCisgICBpbnN0ZWFkIG9mIDAgZm9yIE5VTEwgcG9pbnRlcnMuIFVzZSBjYXN0ZWQgMCdzIGluc3RlYWQgb2YgMCBmb3IKKyAgIE5VTEwgZnVuY3Rpb24gcG9pbnRlcnMuCisKKzIwMDgtMDUtMTAgMDk6NDAgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBBZGQgbWlzc2luZyBmdW5jdGlvbiBkZWNsYXJhdGlvbnMuCisKKzIwMDgtMDUtMTAgMDk6MzkgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jLCBhZ2VudC9zbm1wX3ZhcnMuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEFkZCBtaXNzaW5nIGluY2x1ZGUgZmlsZXMuCisKKzIwMDgtMDUtMTAgMDk6MzMgIG1hZ2ZyCisKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYywgIAorICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYywKKyAgICAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjLCAgIAorICAgICAgc25tcGxpYi9kYXRhX2xpc3QuYzoKKworICAgQ0hBTkdFUzogc25tcGQsIHNubXBsaWIsIG1pYjJjOiBNb3ZlIHRoZSBkZWZpbml0aW9uIG9mIGlubGluZQorICAgZnVuY3Rpb25zIHNvIHRoYXQgdGhlIGNvbXBpbGVyIHNlZXMgdGhlbSBiZWZvcmUgaXQgc2VlcyB1c2VzIG9mCisgICB0aGVtLgorCisyMDA4LTA1LTEwIDA5OjMwICBtYWdmcgorCisgICAqICBhZ2VudC9hZ2VudF9oYW5kbGVyLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0Lmg6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbGliOiBSZW1vdmUgdGhlIGlubGluZSBkZWNsYXJhdGlvbnMgZm9yCisgICBmdW5jdGlvbnMgdGhhdCBsYWNrIGFuIGlubGluZSBkZWZpbml0aW9uLgorCisyMDA4LTA1LTA5IDIxOjM1ICBtYWdmcgorCisgICAqICBhZ2VudC9hZ2VudF9pbmRleC5jLCBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCBhZ2VudC9hZ2VudF90cmFwLmMsICAKKyAgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jLCBhZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYywgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYywgIAorICAgICAgIGFnZW50L3NubXBfYWdlbnQuYywgc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMsICAgCisgICAgICBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsIHNubXBsaWIvbGNkX3RpbWUuYywgc25tcGxpYi9tZDUuYywgICAKKyAgICAgIHNubXBsaWIvbWliLmMsIHNubXBsaWIvcGFyc2UuYywgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi9zbm1wX2FsYXJtLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9jbGllbnQuYywgc25tcGxpYi9zbm1wX2RlYnVnLmMsICAKKyAgICAgICBzbm1wbGliL3NubXBfbG9nZ2luZy5jLCBzbm1wbGliL3NubXB1c20uYywgc25tcGxpYi90b29scy5jOgorCisgICBDSEFOR0VTOiBzbm1wZCwgc25tcGxpYjogVXNlIE5VTEwgaW5zdGVhZCBvZiAwIGZvciBOVUxMIHBvaW50ZXJzLgorICAgVXNlIGNhc3RlZCAwJ3MgaW5zdGVhZCBvZiAwIGZvciBOVUxMIGZ1bmN0aW9uIHBvaW50ZXJzLgorCisyMDA4LTA1LTA5IDIxOjI3ICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L3NubXBfYWdlbnQuYywgICAKKyAgICAgIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLCBzbm1wbGliL3BhcnNlLmMsIHNubXBsaWIvcmVhZF9jb25maWcuYywgIAorICAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisKKyAgIENIQU5HRVM6IHNubXBkLCBzbm1wbGliOiBmaXh1cHMgZm9yIHByb3RvdHlwZSBbKHZvaWQpIHJlcGxhY2luZworICAgKCldLgorCisyMDA4LTA1LTA5IDIxOjIzICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jOgorCisgICBSZW1vdmUgZGVhZCBjb2RlLgorCisyMDA4LTA1LTA5IDE5OjE2ICBkdHMxMgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2U6CisKKyAgIE1pc3NpbmcgTUQ1IHNpZ25hdHVyZSBmaWxlIGZvciB6aXAgcmVsZWFzZQorCisyMDA4LTA1LTA5IDE5OjE1ICBkdHMxMgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2U6CisKKyAgIEJhc2ljIGRvY3VtZW50YXRpb24gYW5kIGhlbHAvdXNhZ2UgbWVzc2FnZXMuCiAKIDIwMDgtMDUtMDggMTQ6MDAgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jOgotICAgICBEcm9wIHN1cHBvcnQgZm9yIHRoZSBpbnRlcmltIFNJT0NERVZQUklWQVRFLWJhc2VkIGlvY3RsIGNhbGxzLgotICAgICBTSU9DR01JSVBIWS9TSU9DR01JSVJFRyBoYXZlIGJlZW4gZGVmaW5lZCBzaW5jZSBhdCBsZWFzdCBTZXB0Ci0gICAgIDIwMDEgKGtlcm5lbCAyLjQuMTApLAotICAgICBzbyB0aGUgcmlzayBvZiBjYWxsaW5nIGFuIGluYXBwcm9wcmlhdGUgcHJpdmF0ZSBpb2N0bCBpcyBwcm9iYWJseQotICAgICBncmVhdGVyIHRoYW4KLSAgICAgdGhhdCBvZiBtaXNzaW5nIGluZm9ybWF0aW9uIGZyb20gYW4gYW5jaWVudCBzeXN0ZW0uCisKKyAgIERyb3Agc3VwcG9ydCBmb3IgdGhlIGludGVyaW0gU0lPQ0RFVlBSSVZBVEUtYmFzZWQgaW9jdGwgY2FsbHMuCisgICBTSU9DR01JSVBIWS9TSU9DR01JSVJFRyBoYXZlIGJlZW4gZGVmaW5lZCBzaW5jZSBhdCBsZWFzdCBTZXB0CisgICAyMDAxIChrZXJuZWwgMi40LjEwKSwKKyAgIHNvIHRoZSByaXNrIG9mIGNhbGxpbmcgYW4gaW5hcHByb3ByaWF0ZSBwcml2YXRlIGlvY3RsIGlzIHByb2JhYmx5CisgICBncmVhdGVyIHRoYW4KKyAgIHRoYXQgb2YgbWlzc2luZyBpbmZvcm1hdGlvbiBmcm9tIGFuIGFuY2llbnQgc3lzdGVtLgogCiAyMDA4LTA1LTA4IDA5OjAyICBkdHMxMgogCiAgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKLSAgICAgRG9uJ3QgdHJ5IHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGFub255bW91cyB1c2Vycy4KLSAgICAgKEFuIGludmFsaWQgdHJhcHNlc3MgZGlyZWN0aXZlIG1heSBjcmFzaCB0aGUgYWdlbnQpCisKKyAgIERvbid0IHRyeSB0byBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbm9ueW1vdXMgdXNlcnMuCisgICAoQW4gaW52YWxpZCB0cmFwc2VzcyBkaXJlY3RpdmUgbWF5IGNyYXNoIHRoZSBhZ2VudCkKKworMjAwOC0wNS0wNiAwODozOCAganNhZnJhbmVrCisKKyAgICogZGlzdC9uZXQtc25tcC5zcGVjOgorCisgICAtIHJlbW92ZSAle2xpYmN1cnJlbnR9CisgICAtIGFkZCBvcGVuc3NsLWRldmVsIHRvIGJ1aWxkIHJlcXVpcmVtZW50cworICAgLSBkb24ndCB1c2UgUHJvdmlkZXM6IHVubGVzcyBuZWNlc3NhcnksIGxldCBycG1idWlsZCBjb21wdXRlIHRoZQorICAgcHJvdmlkZWQgbGlicmFyaWVzCisgICAtIGRvbid0IHNwZWNpZnkgUFJFRklYIGZvciBwZXJsCisKKzIwMDgtMDUtMDYgMDg6MzggIGpzYWZyYW5laworCisgICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2FnZW50X3RyYXAuYzoKKworICAgcmV2ZXJ0aW5nIGFjY2lkZW50YWx5IGNvbW1pdGVkIGZpbGVzCisKKzIwMDgtMDUtMDYgMDg6MzQgIGpzYWZyYW5laworCisgICAqIGFnZW50L2FnZW50X3JlYWRfY29uZmlnLmMsIGFnZW50L2FnZW50X3RyYXAuYzoKKworICAgLSByZW1vdmUgJXtsaWJjdXJyZW50fQorICAgLSBhZGQgb3BlbnNzbC1kZXZlbCB0byBidWlsZCByZXF1aXJlbWVudHMKKyAgIC0gZG9uJ3QgdXNlIFByb3ZpZGVzOiB1bmxlc3MgbmVjZXNzYXJ5LCBsZXQgcnBtYnVpbGQgY29tcHV0ZSB0aGUKKyAgIHByb3ZpZGVkIGxpYnJhcmllcworICAgLSBkb24ndCBzcGVjaWZ5IFBSRUZJWCBmb3IgcGVybAorCisyMDA4LTA1LTA1IDIxOjQzICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBNZWNoYW5pc20gdG8gc2VsZWN0IHVwY29taW5nIG1vZHVsZSByZS13cml0ZXMgYW5kL29yCisgICByZWNlbnRseS1kZXByZWNhdGVkIG1vZHVsZXMuCiAKIDIwMDgtMDUtMDIgMTA6MTkgIGR0czEyCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oOgotICAgICBIYW5kbGUgdWRwVGFibGUgaW5kZXhpbmcgb24gYm90aCBQUEMgYW5kIEludGVsIGhhcmR3YXJlLgorCisgICBIYW5kbGUgdWRwVGFibGUgaW5kZXhpbmcgb24gYm90aCBQUEMgYW5kIEludGVsIGhhcmR3YXJlLgorCisyMDA4LTA0LTMwIDE5OjQ1ICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcF9kZWJ1Zy5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBSZW1vdmUgdGhlIHN1cHBvcnQgZm9yIGdlbmVyYXRpb24gb2Ygc3RhdGlzdGljcworICAgb2YgaG93IG9mdGVuIGEgY2VydGFpbiBkZWJ1ZyBsb2cgbGV2ZWwgaXMgdHJpZ2dlcmVkLgorCisyMDA4LTA0LTMwIDE5OjQxICBtYWdmcgorCisgICAqIHNubXBsaWIvc25tcF9kZWJ1Zy5jOgorCisgICBORVdTOiBzbm1wbGliOiBSZW1vdmUgdGhlIHZhcmlhYmxlIGRlYnVnX251bV9leGNsdWRlZC4KKyAgIFRoZXJlIGlzIG5vdGhpbmcgdGhhdCBzZXRzIGRlYnVnX251bV9leGNsdWRlZCBhbmQgdGhlcmUgaXMgbm8gd2F5CisgICB0byBmb3IgaXQKKyAgIHRvIGFmZmVjdCB0aGUgcmVzdWx0IG9mIGFueSBmdW5jdGlvbi4KIAogMjAwOC0wNC0zMCAwNToyOCAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfZGVidWcuYzoKLSAgICAgUmVtb3ZlIHVubmNlc3NhcnkgcHJvdG90eXBlcworCisgICBSZW1vdmUgdW5uY2Vzc2FyeSBwcm90b3R5cGVzCisKKzIwMDgtMDQtMjMgMTY6MzkgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIGFjdHVhbGx5IHVzZSB0aGUgYnJhbmNoIHBhdGgsIGRvbid0IGp1c3Qgc2F5IHlvdSdyZSBnb2luZyB0bwogCiAyMDA4LTA0LTE5IDIyOjIwICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmM6Ci0gICAgIGRvbid0IGRlcGVuZCBvbiBPSUQgcmVzb2x1dGlvbiBmb3IgZGlzbWFuIGxpbmtVcERvd25Ob3RpZmljYXRpb25zCisKKyAgIGRvbid0IGRlcGVuZCBvbiBPSUQgcmVzb2x1dGlvbiBmb3IgZGlzbWFuIGxpbmtVcERvd25Ob3RpZmljYXRpb25zCisKKzIwMDgtMDQtMDggMjA6NDMgIG1hZ2ZyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg6CisKKyAgIEFjY2VwdCB0aGF0IHBlb3BsZSB3aWxsIHRyeSB0byBjb21waWxlIHRoaXMgY29kZSB3aXRoIHByZS1BTlNJCisgICBjb21waWxlcnMgYW5kIGNoYW5nZSBpdCB0byBoYW5kbGUgdGhhdCBjYXNlLgogCiAyMDA4LTA0LTA4IDIwOjM4ICBoYXJkYWtlcgogCiAgICAqIHBlcmwvYWdlbnQvYWdlbnQucG06Ci0gICAgIENIQU5HRVM6IHBlcmw6IGZpeGVkIGFuIGV4dHJhIGJyYWNlIGluIHRoZSBkb2NzIHBvaW50ZWQgb3V0IGJ5Ci0gICAgIEphc29uIE1hcnRpbgorCisgICBDSEFOR0VTOiBwZXJsOiBmaXhlZCBhbiBleHRyYSBicmFjZSBpbiB0aGUgZG9jcyBwb2ludGVkIG91dCBieQorICAgSmFzb24gTWFydGluCisKKzIwMDgtMDQtMDggMjA6MzQgIGhhcmRha2VyCisKKyAgICogZGlzdC9tYWtlcmVsZWFzZS54bWw6CisKKyAgIHVwZGF0ZSBhbmQgcmVzdHJ1Y3R1cmUgYSBiaXQgdG8gZml4IGEgZmV3IHByb2JsZW1zCisKKzIwMDgtMDQtMDcgMjA6MDYgIG1hZ2ZyCisKKyAgICogYWdlbnQvaGVscGVycy9udWxsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBBcyB0aGUgbnVsbCBoYW5kbGVyIGlzIHBlcmZlY3RseSBjYXBhYmxlIG9mCisgICBoYW5kbGluZyBHRVRfQlVMSyByZXF1ZXN0cyBpdCBpcyBub3cgbWFya2VkIGFzIHN1Y2ggaW4gdGhlCisgICByZWdpc3RyYXRpb24uCiAKIDIwMDgtMDQtMDcgMTQ6MDAgIGR0czEyCiAKICAgICogc25tcGxpYi9wYXJzZS5jOgotICAgICBBbm90aGVyIG92ZXItc2hvcnQgREVTQ1JJUFRJT04gYnVmZmVyLgorCisgICBBbm90aGVyIG92ZXItc2hvcnQgREVTQ1JJUFRJT04gYnVmZmVyLgogCiAyMDA4LTA0LTA3IDEzOjU3ICBkdHMxMgogCiAgICAqIHNubXBsaWIvcGFyc2UuYzoKLSAgICAgSGFuZGxlIGxvbmdlciBERVNDUklQVElPTi9SRUZFUkVOQ0Ugc3RyaW5ncyBpbiBDYXBhYmlsaXRpZXMKLSAgICAgc3RhdGVtZW50cy4KLSAgICAgKENvbnNpc3RlbnQgcHJvY2Vzc2luZyB3aXRoIG90aGVyIE1JQiBkZWZpbml0aW9uIG1hY3JvcykuCi0gICAgIEZpeCBwcm92aWRlZCBieSBBbGVrc2FuZHIgTG9tYW5vdi4KKworICAgSGFuZGxlIGxvbmdlciBERVNDUklQVElPTi9SRUZFUkVOQ0Ugc3RyaW5ncyBpbiBDYXBhYmlsaXRpZXMKKyAgIHN0YXRlbWVudHMuCisgICAoQ29uc2lzdGVudCBwcm9jZXNzaW5nIHdpdGggb3RoZXIgTUlCIGRlZmluaXRpb24gbWFjcm9zKS4KKyAgIEZpeCBwcm92aWRlZCBieSBBbGVrc2FuZHIgTG9tYW5vdi4KKworMjAwOC0wNC0wMiAxOTozNSAgaGFyZGFrZXIKKworICAgKiBGQVE6CisKKyAgIG1lbnRpb24gbGliZWxmIHBhY2thZ2UgcmVuYW1lCisKKzIwMDgtMDMtMjkgMDk6MjkgIG1hZ2ZyCisKKyAgICogIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9NYWtlZmlsZS5pbiwgYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5jLCBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMsIGFnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYywgCisgICAgICAgIGFnZW50L3NubXBfdmFycy5jLCBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oOgorCisgICBORVdTOiBzbm1wZDogRW5hYmxlIGF1dG9tYXRpYyByZXJlZ2lzdGVyaW5nIG9mIHN5c09SVGFibGUgZW50cmllcworICAgZnJvbSBBZ2VudFggc3ViYWdlbnRzLiBBZGQgdGhlIHN5c09SVGFibGUgaW50ZXJmYWNlIHRvIHRoZQorICAgaW5jbHVkZSBkaXJlY3RvcnkuIFJld3JpdGUgdGhlIHN5c09SVGFibGUgbW9kdWxlIHRvIHVzZSB0aGUKKyAgIHRhYmxlX2NvbnRhaW5lciBoYW5kbGVyLgorCisyMDA4LTAzLTI3IDAzOjIxICBoYXJkYWtlcgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UsIGRpc3QvbmV0LXNubXAuc3BlYywgZGlzdC9wYXRtZToKKworICAgdW5jb21taXQgMyBhY2NpZGVudGFsIG11bHRpcGxlIGZpbGUgY29tbWl0cworCisyMDA4LTAzLTI3IDAzOjE4ICBoYXJkYWtlcgorCisgICAqICBkaXN0L21ha2VyZWxlYXNlLCBkaXN0L21ha2VyZWxlYXNlLnhtbCwgZGlzdC9uZXQtc25tcC5zcGVjLCAgIAorICAgICAgZGlzdC9wYXRtZToKKworICAgdmFyaW91cyByZXdvcmRpbmcsIHJlc3RydWN0dXJpbmcgYW5kIHByb3BlciBmaWxlIHJlcGxhY2VtZW50CisgICBzY2hlbWUKIAogMjAwOC0wMy0yNiAwNzo1MiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6Ci0gICAgIE5FV1M6IHNubXBsaWI6IGZyb20gIkFsZWtzYW5kciBMb21hbm92IjogQ29ycmVjdGVkIHJlZ2lzdGVyaW5nIG9mCi0gICAgIG11bHRpcGxlIHByZW1pYiBjb25maWcgaGFuZGxlcnMgc28gdGhhdCBhbGwgb2YgdGhlbSBnZXQKLSAgICAgcmVnaXN0ZXJlZCBhcyBwcmVtaWIgaGFuZGxlcnMgYXMgb3Bwb3NlZCB0byB0aGUgZWFybGllciBiZWhhdmlvdXIKLSAgICAgd2hlcmUgdGhleSBhbHdheXMgZ290IHJlZ2lzdGVyZWQgYXMgbm9ybWFsIGNvbmZpZyBpdGVtcy4KKworICAgTkVXUzogc25tcGxpYjogZnJvbSAiQWxla3NhbmRyIExvbWFub3YiOiBDb3JyZWN0ZWQgcmVnaXN0ZXJpbmcgb2YKKyAgIG11bHRpcGxlIHByZW1pYiBjb25maWcgaGFuZGxlcnMgc28gdGhhdCBhbGwgb2YgdGhlbSBnZXQKKyAgIHJlZ2lzdGVyZWQgYXMgcHJlbWliIGhhbmRsZXJzIGFzIG9wcG9zZWQgdG8gdGhlIGVhcmxpZXIgYmVoYXZpb3VyCisgICB3aGVyZSB0aGV5IGFsd2F5cyBnb3QgcmVnaXN0ZXJlZCBhcyBub3JtYWwgY29uZmlnIGl0ZW1zLgorCisyMDA4LTAzLTI2IDA3OjE2ICBtYWdmcgorCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBHZXQgdGhlIHRhYmxlX2NvbnRhaW5lciBkYXRhIGZyb20gdGhlIHJpZ2h0CisgICBoYW5kbGVyIHdoZW4gdW5yZWdpc3RlcmluZyBhIHRhYmxlX2NvbnRhaW5lci4KIAogMjAwOC0wMy0yNSAwNjowNyAgbWFnZnIKIAogICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgotICAgICBSZW1vdmUgc3B1cmlvdXMgcHJpbnRmIGZyb20gdW5yZWdpc3Rlcl9taWJfY29udGV4dAorCisgICBSZW1vdmUgc3B1cmlvdXMgcHJpbnRmIGZyb20gdW5yZWdpc3Rlcl9taWJfY29udGV4dAogCiAyMDA4LTAzLTI0IDE3OjU0ICBkdHMxMgogCiAgICAqIGxvY2FsL21pYjJjOgotICAgICBDSEFOR0VTOiBtaWIyYzogQlVHOiAxODc0MDU5LDE3MzcwNjg6IEhhbmRsZSBNSUIgb2JqZWN0cyB3aXRoCi0gICAgIGVtYmVkZGVkIGh5cGhlbnMKKworICAgQ0hBTkdFUzogbWliMmM6IEJVRzogMTg3NDA1OSwxNzM3MDY4OiBIYW5kbGUgTUlCIG9iamVjdHMgd2l0aAorICAgZW1iZWRkZWQgaHlwaGVucwogCiAyMDA4LTAzLTI0IDE3OjI5ICBkdHMxMgogCiAgICAqIHNubXBsaWIvYXNuMS5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE4NjY2NTU6IEhhbmRsZSBwYXJzaW5nIGludmFsaWQgT0lECi0gICAgIHN1YmlkZW50aWZpZXJzCisKKyAgIENIQU5HRVM6IHNubXBsaWI6IEJVRzogMTg2NjY1NTogSGFuZGxlIHBhcnNpbmcgaW52YWxpZCBPSUQKKyAgIHN1YmlkZW50aWZpZXJzCiAKIDIwMDgtMDMtMjQgMTY6NTMgIGR0czEyCiAKICAgICogc25tcGxpYi9hc24xLmM6Ci0gICAgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIOiAxOTIxODYxOiBBdm9pZCBlbmRsZXNzIGxvb3AgYWZ0ZXIKLSAgICAgdHJ1bmNhdGluZyA2NGJpdCBpbnQKKworICAgQ0hBTkdFUzogbGlicmFyeTogUEFUQ0g6IDE5MjE4NjE6IEF2b2lkIGVuZGxlc3MgbG9vcCBhZnRlcgorICAgdHJ1bmNhdGluZyA2NGJpdCBpbnQKIAogMjAwOC0wMy0yNCAxNTowMCAgZHRzMTIKIAogICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTgyMzM4MTogVmFsaWQgTUlCIGRpcmVjdG9yeSBzZWFyY2ggcGF0aCBvbgotICAgICBXaW5kb3dzCisKKyAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDE4MjMzODE6IFZhbGlkIE1JQiBkaXJlY3Rvcnkgc2VhcmNoIHBhdGggb24KKyAgIFdpbmRvd3MKKworMjAwOC0wMy0yMiAwODo0MiAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0cmFwZC5jOgorCisgICBNYWtlIGl0IHBvc3NpYmxlIHRvIGJ1aWxkIHNubXB0cmFwZCB3aXRob3V0IGVtYmVkZGVkIHBlcmwgYWdhaW4uCiAKIDIwMDgtMDMtMjEgMTc6NTUgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIHNubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYywKLSAgICAgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYywgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsCi0gICAgIHNubXBsaWIvc25tcFRDUElQdjZEb21haW4uYywgc25tcGxpYi9zbm1wVW5peERvbWFpbi5jLAotICAgICBzbm1wbGliL3dpbnBpcGUuYzoKLSAgICAgTkVXUzogbGlic25tcDogUEFUQ0g6IDE4OTU5Mjc6IGZyb20gamh1bTgxMTE6IGNoYW5nZSBvYnNvbGV0ZQotICAgICByZWN2L3NlbmQgdG8gcmVjdmZyb20vc2VuZHRvCisgICAqICBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYywgc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYywgc25tcGxpYi9zbm1wVENQRG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMsIHNubXBsaWIvc25tcFVuaXhEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvd2lucGlwZS5jOgorCisgICBORVdTOiBsaWJzbm1wOiBQQVRDSDogMTg5NTkyNzogZnJvbSBqaHVtODExMTogY2hhbmdlIG9ic29sZXRlCisgICByZWN2L3NlbmQgdG8gcmVjdmZyb20vc2VuZHRvCiAKIDIwMDgtMDMtMjEgMTc6NDkgIGhhcmRha2VyCiAKICAgICogcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYzoKLSAgICAgQ0hBTkdFUzogcHl0aG9uOiBQQVRDSDogMTg2MjE3NzogZnJvbSB3YWZmbGVzb3VmZmxlOiBtYWRlIGNvZGUKLSAgICAgbW9yZSB3aW5kb3dzL2N5Z3dpbiBjb21waWxlciBmcmllbmRsCisKKyAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDE4NjIxNzc6IGZyb20gd2FmZmxlc291ZmZsZTogbWFkZSBjb2RlCisgICBtb3JlIHdpbmRvd3MvY3lnd2luIGNvbXBpbGVyIGZyaWVuZGwKIAogMjAwOC0wMy0yMSAxNzo0NSAgaGFyZGFrZXIKIAogICAgKiBweXRob24vbmV0c25tcC9jbGllbnQucHk6Ci0gICAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDE4Nzc4NDA6IGZpeCBNSUIgbGFiZWwgYW5kIGluZGV4aW5nIGR1ZQotICAgICB0byBzbGlnaHRseSBicm9rZW4gcmVnZXhwCisKKyAgIENIQU5HRVM6IHB5dGhvbjogUEFUQ0g6IDE4Nzc4NDA6IGZpeCBNSUIgbGFiZWwgYW5kIGluZGV4aW5nIGR1ZQorICAgdG8gc2xpZ2h0bHkgYnJva2VuIHJlZ2V4cAogCiAyMDA4LTAzLTIxIDE3OjM5ICBoYXJkYWtlcgogCiAgICAqIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTkyMDM5MDogZnJvbSB3aWxtZXNqOiBmaXggcmVnaXN0cmF0aW9uIG9mCi0gICAgIHRhYmxlcyB3aXRoIC4wIGFzIElJRHMKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDE5MjAzOTA6IGZyb20gd2lsbWVzajogZml4IHJlZ2lzdHJhdGlvbiBvZgorICAgdGFibGVzIHdpdGggLjAgYXMgSUlEcwogCiAyMDA4LTAzLTIxIDE3OjMyICBoYXJkYWtlcgogCiAgICAqIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTkxNDY0NTogZnJvbSB3aWxtZXNqOiBiZXR0ZXIgZW5kIG9mIG1pYgotICAgICBzdXBwb3J0CisKKyAgIENIQU5HRVM6IHBlcmw6IFBBVENIOiAxOTE0NjQ1OiBmcm9tIHdpbG1lc2o6IGJldHRlciBlbmQgb2YgbWliCisgICBzdXBwb3J0CiAKIDIwMDgtMDMtMjEgMTc6MjggIGhhcmRha2VyCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKLSAgICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDE5MTQ2NDM6IGZyb20gd2lsbWVzajogZml4IGlzc3VlcyB3aXRoCi0gICAgIGVtYmVkZGVkIHBlcmwgcmV0dXJuaW5nIDAgYmVpbmcgcmVjbGFzc2lmaWVkIGFzIGEgd3JvbmcgZGF0YSB0eXBlCi0gICAgIHdoZW4gYW4gaW50IHdvcmtzLgorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTkxNDY0MzogZnJvbSB3aWxtZXNqOiBmaXggaXNzdWVzIHdpdGgKKyAgIGVtYmVkZGVkIHBlcmwgcmV0dXJuaW5nIDAgYmVpbmcgcmVjbGFzc2lmaWVkIGFzIGEgd3JvbmcgZGF0YSB0eXBlCisgICB3aGVuIGFuIGludCB3b3Jrcy4KIAogMjAwOC0wMy0yMSAxNzoyMiAgaGFyZGFrZXIKIAogICAgKiBsb2NhbC9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogbWliMmM6IFBBVENIIDE5MTQzOTg6IGZyb20gd2lsbWVzajogaW5zdGFsbAotICAgICBtaWIyYy5wZXJsLmNvbmYKKworICAgQ0hBTkdFUzogbWliMmM6IFBBVENIIDE5MTQzOTg6IGZyb20gd2lsbWVzajogaW5zdGFsbAorICAgbWliMmMucGVybC5jb25mCiAKIDIwMDgtMDMtMjEgMTc6MDIgIGhhcmRha2VyCiAKICAgICogcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG06Ci0gICAgIENIQU5HRVM6IHBlcmw6IFBBVENIOiAxOTE0MzkzOiBmcm9tIHdpbG1lc2o6IHJlZ2lzdGVyQWdlbnQgY2FuCi0gICAgIG5vdyBiZSBydW4gbXVsdGlwbGUgdGltZXMKKworICAgQ0hBTkdFUzogcGVybDogUEFUQ0g6IDE5MTQzOTM6IGZyb20gd2lsbWVzajogcmVnaXN0ZXJBZ2VudCBjYW4KKyAgIG5vdyBiZSBydW4gbXVsdGlwbGUgdGltZXMKIAogMjAwOC0wMy0yMSAxNjozNSAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmM6Ci0gICAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkwOTgxMzogZml4IHRhYmxlX2l0ZXJhdG9yIGhpbnQgdG8gZ2V0X2ZpcnN0Ci0gICAgIHdoZW4gU09SVEVEIGZsYWcgaXMgc2V0CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTkwOTgxMzogZml4IHRhYmxlX2l0ZXJhdG9yIGhpbnQgdG8gZ2V0X2ZpcnN0CisgICB3aGVuIFNPUlRFRCBmbGFnIGlzIHNldAorCisyMDA4LTAzLTIxIDE2OjI0ICBoYXJkYWtlcgorCisgICAqIGFnZW50L3NubXBfcGVybC5jLCBhcHBzL3NubXB0cmFwZC5jOgorCisgICBORVdTOiBzbm1wdHJhcGQ6IFBBVENIOiAxOTA4Mjg4OiBmcm9tIGFuZWRlbDogSWYgc25tcHRyYXBkIC1mCisgICBpbnRlcnJ1cHRlZCB3aXRoIGN0cmwtQyBydW4gcGVybCBFTkQgYmxvY2sKKworMjAwOC0wMy0yMSAxNjoxNiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxOTAyMTEzOiBmcm9tIGpzYWZyYW5lazogZml4IGVycm9yIGxvZyBpbgorICAgaW5ldE5ldFRvTWVkaWF0YWJsZQorCisyMDA4LTAzLTIxIDE2OjEyICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmM6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxOTAyMTA1OiBmcm9tIGpzYWZyYW5lazogaGlkZSBhbmQgaW1wcm92ZSBkZWJ1ZworICAgbG9nIG1lc3NhZ2VzIGNyZWF0ZWQgYnkgcGF0Y2ggMTcwNTU5NAorCisyMDA4LTAzLTA3IDE1OjQyICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaDoKKworICAgSEFMLWJhc2VkIGltcGxlbWVudGF0aW9uIG9mIHRoZSBockZTVGFibGUuCisKKzIwMDgtMDMtMDcgMTU6NDAgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMsIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19nZXRmc3N0YXRzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2h3X2ZzeXMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tb3VudHMuaDoKKworICAgSW5pdGlhbCBIQUwgaW1wbGVtZW50YXRpb24gb2YgRmlsZVN5c3RlbSBpbmZvcm1hdGlvbgorCisyMDA4LTAzLTA3IDE1OjM1ICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDaGVjayBmb3IgZ2V0dmZzc3RhdCgpCisKKzIwMDgtMDMtMDcgMTU6MzQgIGR0czEyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDE4MjMzODE6IFVzZSBhIHNlbnNpYmxlIGRlZmF1bHQgTUlCRElSIHBhdGgKKyAgIG9uIEN5Z3dpbi9NaW5HVworICAgKFNob3VsZCB0aGlzIGJlIGFwcGxpZWQgdG8gb3RoZXIgYnJhbmNoZXM/IElmIHNvLCB3aGljaD8pCiAKIDIwMDgtMDItMjcgMjI6MTIgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzoKLSAgICAgRml4IEMrKyBzdHlsZSBjb21tZW50CisKKyAgIEZpeCBDKysgc3R5bGUgY29tbWVudAorCisyMDA4LTAyLTI3IDA3OjQ5ICBtYWdmcgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jOgorCisgICBUaGUgTFZNIGRpc2sgcGF0Y2ggaW50cm9kdWNlZCBhIG1lbW9yeSBsZWFrLiBUaGlzIHJlbW92ZXMgdGhlCisgICBsZWFrLgorCisyMDA4LTAyLTI2IDIzOjI3ICBoYXJkYWtlcgorCisgICAqIGRpc3QvbWFrZXJlbGVhc2UueG1sOgorCisgICBtYWtlIHRoZSBzY3JpcHQgbW9yZSBoaWVyYXJjaGlhbC9zdHJ1Y3R1cmVkCisKKzIwMDgtMDItMjYgMjE6MzYgIG5iYQorCisgICAqIGFwcHMvc25tcHRyYW5zbGF0ZS5jOgorCisgICBDSEFOR0VTOiBJbml0YWxpemUgbG9nIHN1YnN5c3RlbQorCisyMDA4LTAyLTI2IDIxOjM0ICBuYmEKKworICAgKiBzbm1wbGliL3BhcnNlLmM6CisKKyAgIENIQU5HRVM6IEZpeCBmb3IgcmVmcyB0byBPQkpFQ1QtR1JPVVAgaW4gYW5vdGhlciBNSUIKKworMjAwOC0wMi0yNiAyMToyMyAgbmJhCisKKyAgICogIG1pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQsIG1pYnMvRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dCwgICAKKyAgICAgIG1pYnMvSVAtRk9SV0FSRC1NSUIudHh0LCBtaWJzL0lQLU1JQi50eHQsICAgCisgICAgICBtaWJzL0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0LCBtaWJzL05PVElGSUNBVElPTi1MT0ctTUlCLnR4dCwgICAKKyAgICAgIG1pYnMvU05NUC1VU00tQUVTLU1JQi50eHQsIG1pYnMvU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0LCAgIAorICAgICAgbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0LCBtaWJzL1RVTk5FTC1NSUIudHh0OgorCisgICBVcGRhdGUgdG8gYXV0b2V4dHJhY3RlZCBtaWIgZmlsZXMgKGJsYW5rIGxpbmUgY2hhbm1nZXMpCisKKzIwMDgtMDItMjYgMjA6NDYgIG5iYQorCisgICAqIG1pYnMvTWFrZWZpbGUubWliLCBtaWJzL2lhbmFsaXN0LCBtaWJzL3JmY2xpc3Q6CisKKyAgIFVwZGF0ZSBmb3IgY3VycmVudGx5IHJlbGVhc2VkIFJGQyBNSUJTCisKKzIwMDgtMDItMjYgMjA6NDUgIG5iYQorCisgICAqICBtaWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0LCAgIAorICAgICAgbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQsIG1pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQsICAgCisgICAgICBtaWJzL0lBTkFpZlR5cGUtTUlCLnR4dDoKKworICAgVXBkYXRlIElBTkEgTUlCUyB0byBjdXJyZW50IHZlcnNpb24KKworMjAwOC0wMi0yNSAyMjoyMSAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaDoKKworICAgYWRkIG1pc3NpbmcgI2luY2x1ZGU8cHRocmVhZC5oPiBmb3IgcHRocmVhZF9tdXRleF90CisKKzIwMDgtMDItMjUgMjI6MDYgIHRhbmRlcnMKKworICAgKiBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYzoKKworICAgYSBiZXR0ZXIgcG9ydGFiaWxpdHkgZml4CisKKzIwMDgtMDItMjMgMDA6NTkgIGhhcmRha2VyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTcwNTU5NDogZnJvbSBjX3ZhcnVuOiBGaXggdmFyaW91cyBhc3BlY3RzIG9mCisgICBsaW51eCBpcEFkZHJlc3NQcmVmaXhUYWJsZSByZXBvcnRpbmcuCiAKIDIwMDgtMDItMjIgMjM6NTIgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4OTYxMTg6IHBhdGNoIGZyb20ganNhZnJhbmVrOiBmaXggaWZUYWJsZQotICAgICAzMmJpdCBjb3VudGVycyBvbiBsaW51eAorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4OTYxMTg6IHBhdGNoIGZyb20ganNhZnJhbmVrOiBmaXggaWZUYWJsZQorICAgMzJiaXQgY291bnRlcnMgb24gbGludXgKKworMjAwOC0wMi0yMiAyMzo0OSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jOgorCisgICBwYXRjaCBmcm9tIGpzYWZyYW5lazogQ3JlYXRlIGlwdjZTY29wZVpvbmVFbnRyeSBvbmx5IGZvcgorICAgbGluay1sb2NhbCBhZGRyZXNzZXMgYW5kIG9ubHkgb25jZSBwZXIgaW50ZXJmYWNlLgogCiAyMDA4LTAyLTIyIDIzOjQ0ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvcGFyc2UuYzoKLSAgICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4OTgyMDQ6IGZyb20gTWlrZSBXZXNjb3R0OiBmaXggYnVnCi0gICAgIDE4OTgxOTggaW4gcGFyc2UuYyB0byBhdm9pZCBhIHNlZ2ZhdWx0IHdoZW4gcGFyc2luZyBicm9rZW4gbWlicy4KKworICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4OTgyMDQ6IGZyb20gTWlrZSBXZXNjb3R0OiBmaXggYnVnCisgICAxODk4MTk4IGluIHBhcnNlLmMgdG8gYXZvaWQgYSBzZWdmYXVsdCB3aGVuIHBhcnNpbmcgYnJva2VuIG1pYnMuCiAKIDIwMDgtMDItMTggMTI6MTEgIGR0czEyCiAKICAgICogbWFuL21pYl9hcGkuMy5kZWY6Ci0gICAgIENsYXJpZnkgdGhlIG5lZWQgdG8gcmVzZXQgYnVmZmVyIGxlbmd0aCB3aGVuIGNhbGxpbmcgJ3JlYWRfb2JqaWQnCi0gICAgIHJlcGVhdGVkbHkuCisKKyAgIENsYXJpZnkgdGhlIG5lZWQgdG8gcmVzZXQgYnVmZmVyIGxlbmd0aCB3aGVuIGNhbGxpbmcgJ3JlYWRfb2JqaWQnCisgICByZXBlYXRlZGx5LgorCisyMDA4LTAyLTE4IDEwOjMyICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmM6CisKKyAgIHBvcnRhYmlsaXR5IGZpeAorCisyMDA4LTAyLTE4IDA3OjM5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmM6CisKKyAgIG1ha2Ugc3VyZSB0aGF0IG5ldHNubXBfaXF1ZXJ5X3VzZXJfc2Vzc2lvbiBldCBhbC4gYXJlIHByb3Blcmx5CisgICBkZWNsYXJlZAogCiAyMDA4LTAyLTE3IDE4OjAxICB0YW5kZXJzCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6Ci0gICAgIGZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUKKworICAgZml4IHR5cG8gaW4gdmFyaWFibGUgbmFtZQogCiAyMDA4LTAyLTE3IDA4OjM4ICB0YW5kZXJzCiAKICAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKLSAgICAgcG9ydGFiaWxpdHkgZml4CisKKyAgIHBvcnRhYmlsaXR5IGZpeAorCisyMDA4LTAyLTE1IDE3OjQ1ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgbG93ZXJlZCBmYWlsdXJlIG1lc3NhZ2UgdG8gaW5zZXJ0IHRvIGRlYnVnOyByZW1vdmVkIENWUyBJRCBmcm9tCisgICB0b3Agb2YgbGluZQorCisyMDA4LTAyLTE1IDE3OjM5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYzoKKworICAgZG9uJ3QgaW5zZXJ0IGVtcHR5IGVudHJpZXMKKworMjAwOC0wMi0xNSAxNzozMSAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmM6CisKKyAgIHBhdGNoIGZyb20ganNhZnJhbmUgb24gaXJjOiBtYWtlIGlwdjYgZW50cmllcyB3b3JrIG9uIDY0IGJpdAorICAgbWFjaGluZXMKKworMjAwOC0wMi0xNSAxNjoyNCAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlLnhtbDoKKworICAgcGFzcyAxIGF0IGEgbmV3IG1ha2VyZWxlYXNlIHNjcmlwdDsgY3VycmVudGx5IGp1c3QgY29udmVydGVkIGNvZGUKKyAgIG1vc3RseQorCisyMDA4LTAyLTE1IDE2OjIyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jOgorCisgICByZW1vdmUgbGludXggY2hlY2tzCisKKzIwMDgtMDItMTUgMTU6NDUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICByZW1vdmUgcmVmZXJlbmNlcyB0byBSREFfUlRBCisKKzIwMDgtMDItMTUgMTU6MzcgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICBkb24ndCBjb21waWxlIGluIHRoZSBpcHY2IGNvZGUgaWYgTkRBX1JUQSBpc24ndCBkZWZpbmVkCiAKIDIwMDgtMDItMTUgMTM6MDAgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jOgotICAgICBwb3J0YWJpbGl0eSBmaXgKKworICAgcG9ydGFiaWxpdHkgZml4CisKKzIwMDgtMDItMTUgMDY6MTkgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jOgorCisgICBtaW5vciBidWcgdXBkYXRlIGZyb20gY192YXJ1bgorCisyMDA4LTAyLTE1IDA1OjEzICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMsCisgICAgICAgICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAxNzA0MTA1OiBmcm9tIGNfdmFydW46IEFkZCBJUHY2IHN1cHBvcnQgdG8KKyAgIHRoZSBpbmV0TmV0VG9NZWRpYVRhYmxlIGZvciBsaW51eAorCisyMDA4LTAyLTE1IDA1OjEyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi5oOgorCisgICByZXF1aXJlIG5ldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSB0YWJsZQorCisyMDA4LTAyLTE1IDA1OjAwICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmVfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgsCisgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE3MTU0MDU6IGZyb20gY192YXJ1bjogSW1wbGVtZW50IHRoZQorICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgb24gbGludXgKIAogMjAwOC0wMi0xNSAwNDozOSAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9zbm1wZC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MTY1NDg6IGZyb20gbXlhbWF0bzogRml4IGhlbHAgb3V0cHV0IHNvCi0gICAgIG5vIHNwYWNlIGlzIHByaW50ZWQgYmV0d2VlbiAtRCBhbmQgYXJndW1lbnRzLgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MTY1NDg6IGZyb20gbXlhbWF0bzogRml4IGhlbHAgb3V0cHV0IHNvCisgICBubyBzcGFjZSBpcyBwcmludGVkIGJldHdlZW4gLUQgYW5kIGFyZ3VtZW50cy4KKworMjAwOC0wMi0xNSAwNDoyNyAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvUm1vbi5oLCBhZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE3MjM2MTE6IGZyb20gRW1pIFlhbmFnaTogTmV3IGltcGxlbWVudGF0aW9uCisgICBvZiB0aGUgcm1vbiBhbGFybVRhYmxlCiAKIDIwMDgtMDItMTUgMDM6NDQgIGhhcmRha2VyCiAKICAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYzoKLSAgICAgTkVXUzogc25tcGQ6IFBBVENIOiAxODkzNDY4OiBmcm9tIGdrb2VuaWc6IGZpeGVkIHJlZ2lzdHJhdGlvbiBvZgotICAgICBPSURzIHdpdGggcmFuZ2VzCisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTg5MzQ2ODogZnJvbSBna29lbmlnOiBmaXhlZCByZWdpc3RyYXRpb24gb2YKKyAgIE9JRHMgd2l0aCByYW5nZXMKIAogMjAwOC0wMi0xNCAyMTo0MCAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgotICAgICBmaXggdHlwbyBpbiB2YXJpYWJsZSBkZWNsYXJhdGlvbiAodW5icmVha3MgdGhlIGJ1aWxkIG9uIGEgZmV3Ci0gICAgIHN5c3RlbXMpCisKKyAgIGZpeCB0eXBvIGluIHZhcmlhYmxlIGRlY2xhcmF0aW9uICh1bmJyZWFrcyB0aGUgYnVpbGQgb24gYSBmZXcKKyAgIHN5c3RlbXMpCiAKIDIwMDgtMDItMTQgMDA6MjkgIGhhcmRha2VyCiAKICAgICogQ09QWUlORzoKLSAgICAgeWVhciB1cGRhdGUgZm9yIHNwYXJ0YQorCisgICB5ZWFyIHVwZGF0ZSBmb3Igc3BhcnRhCiAKIDIwMDgtMDItMTMgMjM6MzcgIG1hZ2ZyCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oLCBzbm1wbGliL2NvbnRhaW5lci5jOgotICAgICBORVdTOiBzbm1wbGliOiBDaGFuZ2UgQ09OVEFJTkVSX0lOU0VSVCB0byBub3QgZG8gcGFydGlhbCBpbnNlcnRzCi0gICAgIGluIGNvbnRhaW5lcnMgd2l0aCBtdWx0aXBsZSBpbmRpY2VzIHdoZW4gb25lIGluc2VydCBmYWlscy4KKworICAgTkVXUzogc25tcGxpYjogQ2hhbmdlIENPTlRBSU5FUl9JTlNFUlQgdG8gbm90IGRvIHBhcnRpYWwgaW5zZXJ0cworICAgaW4gY29udGFpbmVycyB3aXRoIG11bHRpcGxlIGluZGljZXMgd2hlbiBvbmUgaW5zZXJ0IGZhaWxzLgogCiAyMDA4LTAyLTEzIDIzOjExICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvc25tcHVzbS5jOgotICAgICBGaXhlZCB0aGUgY3JlYXRlVXNlciBsaW5lIHRvIHNwZWNpZnkgdGhlIC1lIGZsYWcgKHJlc3BvbmRpbmcgdG8gYQotICAgICBjb21wbGFpbnQgYWJvdXQgaXQgYmUgbWlzc2luZykKKworICAgRml4ZWQgdGhlIGNyZWF0ZVVzZXIgbGluZSB0byBzcGVjaWZ5IHRoZSAtZSBmbGFnIChyZXNwb25kaW5nIHRvIGEKKyAgIGNvbXBsYWludCBhYm91dCBpdCBiZSBtaXNzaW5nKQorCisyMDA4LTAyLTEzIDE3OjQyICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE3Nzk1NTg6IGZyb20gYnJ1bWJzOiBJbXBsZW1lbnQgdGhlCisgICBkaXNrSU9MQTEsNSwxMCBvYmplY3Rpb25zIGluIHRoZSBkaXNraW8tbWliIHVuZGVyIGxpbnV4CiAKIDIwMDgtMDItMTMgMTc6MTUgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzgzNzMzOiBQdXQgdGhlIHBhY2thZ2UgdmVyc2lvbiBudW1iZXIKLSAgICAgaW50byB0aGUgaHJTV0luc3QgdGFibGUgZm9yIHNvbGFyaXMuCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc4MzczMzogUHV0IHRoZSBwYWNrYWdlIHZlcnNpb24gbnVtYmVyCisgICBpbnRvIHRoZSBoclNXSW5zdCB0YWJsZSBmb3Igc29sYXJpcy4KKworMjAwOC0wMi0xMyAxNjo1OCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc4MzQyMzogZnJvbSBqc2FmcmFuZWs6IHJldHVybiBhIGNvcnJlY3QKKyAgIGlwdjZJbnRlcmZhY2VJZGVudGlmaWVyIG9mIGxvb3BiYWNrIG9uIGxpbnV4CiAKIDIwMDgtMDItMTMgMTY6MTIgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3ODQ3NDc6IGZyb20ganNhZnJhbmVrOiBGaXggbG9uZyB1c2FnZQotICAgICBmb3IgaXAgYWRyZXNzZXMgb24gNjQgYml0IHN5c3RlbXMgaW4gdmFyaW91cyBNSUItSUkgdGFibGVzLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc4NDc0NzogZnJvbSBqc2FmcmFuZWs6IEZpeCBsb25nIHVzYWdlCisgICBmb3IgaXAgYWRyZXNzZXMgb24gNjQgYml0IHN5c3RlbXMgaW4gdmFyaW91cyBNSUItSUkgdGFibGVzLgorCisyMDA4LTAyLTEzIDE2OjA3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmg6CisKKyAgIE5FV1M6IHNubXBkOiBQQVRDSDogMTgwNjUwMTogZnJvbSBqbWFnZGVyOiBBZGQgYSBzbm1wX3YzdHJhcAorICAgZnVuY3Rpb24gZm9yIHNlbmRpbmcgdHJhcHMgd2l0aCBhIHNubXB2MyBjb250ZXh0CiAKIDIwMDgtMDItMTMgMTY6MDIgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODI2MTAyOiBmcm9tIGpzYWZyYW5lazogc3VwcG9ydCBsb25nZXIKLSAgICAgaW50ZXJmYWNlIG5hbWVzIG9uIGxpbnV4CisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaDoKIAotMjAwOC0wMi0xMyAwOToyMiAgdGFuZGVycwotCi0gICAqIGNvbmZpZ3VyZToKLSAgICAgcmV2ZXJ0IHRvIGF1dG9jb25mIDIuNTkgcGVyIGV4aXN0aW5nIHBvbGljeQorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODI2MTAyOiBmcm9tIGpzYWZyYW5lazogc3VwcG9ydCBsb25nZXIKKyAgIGludGVyZmFjZSBuYW1lcyBvbiBsaW51eAogCiAyMDA4LTAyLTEyIDIzOjIzICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvbWliLmM6Ci0gICAgIENIQU5HRVM6IGxpYnNubXA6IFBBVENIOiAxODA3NDg5OiBmaXggaWdub3Jpbmcgb2YgZGlzcGxheSBoaW50cy4KKworICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4MDc0ODk6IGZpeCBpZ25vcmluZyBvZiBkaXNwbGF5IGhpbnRzLgorCisyMDA4LTAyLTEyIDIzOjE5ICBoYXJkYWtlcgorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYzoKKworICAgCisKKzIwMDgtMDItMTIgMjM6MTYgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2ggMTgyMzQ2NSBmcm9tIGpzYWZyYW5lazogZml4IGljbXAgY2FjaGUKKyAgIHJlZ2lzdHJhdGlvbgorCisyMDA4LTAyLTEyIDIyOjE2ICBoYXJkYWtlcgorCisgICAqICBSRUFETUUuYWdlbnQtbWlicywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgorCisgICBORVdTOiBzbm1wZDogUEFUQ0g6IDE4Mjg2MDI6IGZyb20gdGdvaGFkOiBTdXBwb3J0IGlwRGVmYXVsdFRUTAorICAgYW5kIGlwRm9yd2FyZGluZyBTRVRzIG9uIGxpbnV4CiAKIDIwMDgtMDItMTIgMjI6MDkgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTg2NjgyMzogZnJvbSBqc2FmcmFuZWs6IHRydW5jYXRlIDMyIGJpdAotICAgICBjb3VudGVyIHZhbHVlcyBvbiA2NCBiaXQgbWFjaGluZXMgdG8gYXZvaWQgYm9ndXMgd2FybmluZ3MuCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTg2NjgyMzogZnJvbSBqc2FmcmFuZWs6IHRydW5jYXRlIDMyIGJpdAorICAgY291bnRlciB2YWx1ZXMgb24gNjQgYml0IG1hY2hpbmVzIHRvIGF2b2lkIGJvZ3VzIHdhcm5pbmdzLgogCiAyMDA4LTAyLTEyIDE5OjA1ICBoYXJkYWtlcgogCi0gICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4NDk5MDM6IGZyb20ganNhZnJhbmVrOiBkbyBub3Qgc3BhbSBsb2cKLSAgICAgd2l0aCBhc3NlcnRzIHdoZW4gWEVOIGlzIHVzZWQKKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODQ5OTAzOiBmcm9tIGpzYWZyYW5lazogZG8gbm90IHNwYW0gbG9nCisgICB3aXRoIGFzc2VydHMgd2hlbiBYRU4gaXMgdXNlZAogCiAyMDA4LTAyLTEyIDE4OjUwICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvY2FsbGJhY2suYzoKLSAgICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4NzUwMjI6IGZyb20gc2VtX3ByZzogaW1wcm92ZSBjYWxsYmFjawotICAgICBsb2NraW5nIG1lY2hhbmlzbXMKKworICAgQ0hBTkdFUzogbGlic25tcDogUEFUQ0g6IDE4NzUwMjI6IGZyb20gc2VtX3ByZzogaW1wcm92ZSBjYWxsYmFjaworICAgbG9ja2luZyBtZWNoYW5pc21zCiAKIDIwMDgtMDItMTIgMTc6NDAgIGhhcmRha2VyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTg3OTI2MTogZnJvbSBhbWVzYnVyeTogQWRkIGluIGluYWN0aXZlCi0gICAgIG1lbW9yeSB0byB0aGUgY2FjaGVkIHJlcG9ydCBmb3IgZnJlZWJzZAogCi0yMDA4LTAyLTEyIDE1OjIyICBoYXJkYWtlcgorICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODc5MjYxOiBmcm9tIGFtZXNidXJ5OiBBZGQgaW4gaW5hY3RpdmUKKyAgIG1lbW9yeSB0byB0aGUgY2FjaGVkIHJlcG9ydCBmb3IgZnJlZWJzZAorCisyMDA4LTAyLTEyIDE1OjMyICBoYXJkYWtlcgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaCwgc25tcGxpYi9zbm1wdjMuYzoKKworICAgTkVXUzogbGlic25tcDogUGF0Y2g6IDE4ODIwNjk6IGZyb20gbnNjaHJlbms6IEFkZCBhIGV4YWN0RW5naW5lSUQKKyAgIHRva2VuIGZvciBzcGVjaWZ5aW5nIGFuIGV4YWN0IFNOTVB2MyBlbmdpbmVJRCB0byB1c2UKKworMjAwOC0wMi0xMiAxNToxOCAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYzoKLSAgICAgQ2hhbmdlIHNucHJpbnRmIHByaW50IGxlbmd0aHMgdG8gbGVuLTEgdG8gbGVhdmUgMCBpbiBmaW5hbAotICAgICBwb3NpdGlvbiBmb3IgcHJpbnRpbmcKKworICAgbWlub3IgY2xlYW51cHMgZnJvbSByZXZpZXdpbmcgcGFydHMgb2YgdGhlIGNvZGUKKworMjAwOC0wMi0xMiAxNToxNyAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYzoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAxODgyNjIxOiBmcm9tIGpzYWZyYW5lazogQWRkIExWTSBzdXBwb3J0IHRvCisgICB0aGUgcGFydGl0aW9uIHRhYmxlCiAKIDIwMDgtMDItMTEgMjI6MjYgIGhhcmRha2VyCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIGZpeCBxdW90ZWQgc3RyaW5ncyBpbiBoZWxwIG91dHB1dAorCisgICBmaXggcXVvdGVkIHN0cmluZ3MgaW4gaGVscCBvdXRwdXQKIAogMjAwOC0wMS0zMCAxNzoyOSAgaGFyZGFrZXIKIAogICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgYWRkZWQgdmFjbV9jb25mIHRvIGV4aXN0aW5nIGNvbmZpZ3VyZSBmaWxlcyAoZm9yIHRyYXBkIHRvbykKKworICAgYWRkZWQgdmFjbV9jb25mIHRvIGV4aXN0aW5nIGNvbmZpZ3VyZSBmaWxlcyAoZm9yIHRyYXBkIHRvbykKIAogMjAwOC0wMS0yMCAwNzo1NSAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogQlVHOiAxODcyMjY2OiBQRVJMQ0MgY2hlY2sgZmFpbHMgZm9yIENDIHdpdGgKLSAgICAgb3B0aW9ucworCisgICBDSEFOR0VTOiBidWlsZDogQlVHOiAxODcyMjY2OiBQRVJMQ0MgY2hlY2sgZmFpbHMgZm9yIENDIHdpdGgKKyAgIG9wdGlvbnMKIAogMjAwOC0wMS0xNyAwMToxMyAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9kZWZhdWx0X21vZHVsZXMuaDoKLSAgICAgZml4IGRlZmF1bHQgbWlicyB0byBpbmNsdWRlIHZhY21fY29uZiB0b28KKworICAgZml4IGRlZmF1bHQgbWlicyB0byBpbmNsdWRlIHZhY21fY29uZiB0b28KIAogMjAwOC0wMS0xNyAwMDowOSAgbWFnZnIKIAogICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTgyNjA4ODogZnJvbSBKYW4gU2FmcmFuZWs6IFVzZSB0aGUgcmlnaHQKLSAgICAgaW50ZXJmYWNlIHQgcmVhZCB0aGUgbmV0bWFzaworCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4MjYwODg6IGZyb20gSmFuIFNhZnJhbmVrOiBVc2UgdGhlIHJpZ2h0CisgICBpbnRlcmZhY2UgdCByZWFkIHRoZSBuZXRtYXNrCiAKIDIwMDgtMDEtMTYgMjE6NTQgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotICAgICBDSEFOR0VTOiBIYW5kbGUgZGV2aWNlIG5hbWVzIHdpdGggZW1iZWRkZWQgc3BhY2VzIGluCi0gICAgIFVDRC1TTk1QLU1JQjo6ZHNrRGV2aWNlCisKKyAgIENIQU5HRVM6IEhhbmRsZSBkZXZpY2UgbmFtZXMgd2l0aCBlbWJlZGRlZCBzcGFjZXMgaW4KKyAgIFVDRC1TTk1QLU1JQjo6ZHNrRGV2aWNlCiAKIDIwMDgtMDEtMTYgMDA6NDcgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4Mjg4Mzk6IGZyb20ganNhZnJhbmVrIHRvIHByb3ZpZGUgYmV0dGVyCi0gICAgIGhhbmRsaW5nIG9mIGRpc2tzIG1vdW50ZWQgb24gcGF0aHMgd2l0aCBlbWJlZGRlZCBzcGFjZXMKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxODI4ODM5OiBmcm9tIGpzYWZyYW5layB0byBwcm92aWRlIGJldHRlcgorICAgaGFuZGxpbmcgb2YgZGlza3MgbW91bnRlZCBvbiBwYXRocyB3aXRoIGVtYmVkZGVkIHNwYWNlcwogCiAyMDA4LTAxLTE1IDE2OjQ3ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jOgotICAgICBjb3Zlcml0eSBidWcgMjA1OiBkb3VibGUgY2hlY2sgcG9pbnRlciB0aGF0IHNob3VsZCBuZXZlciBiZSBudWxsCisKKyAgIGNvdmVyaXR5IGJ1ZyAyMDU6IGRvdWJsZSBjaGVjayBwb2ludGVyIHRoYXQgc2hvdWxkIG5ldmVyIGJlIG51bGwKKworMjAwOC0wMS0xNCAyMzo1NSAgbWFnZnIKKworICAgKiAgUkVBRE1FLmFnZW50LW1pYnMsIGFnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jLCBhZ2VudC9taWJncm91cC9taWJJSS91cGRhdGVzLmg6CisKKyAgIFVwZGF0ZSB0aGUgc25tcCBhbmQgc3lzdGVtIG1pYnMgdG8gYmUgaGFuZGxlciBiYXNlZAorCisyMDA4LTAxLTEzIDAwOjAwICBtYWdmcgorCisgICAqICBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlMsICAKKyAgICAgICBkb3h5Z2VuLmNvbmYsIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwsIHNlZHNjcmlwdC5pbiwgICAKKyAgICAgIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6CisKKyAgIExlc3NlbiB0aGUgbnVtYmVyIG9mIHBsYWNlcyB0aGF0IG5lZWQgdG8gYmUgY2hhbmdlZCBpbiBvcmRlciB0bworICAgZG8gYSByZWxlYXNlLgorICAgQ2hhbmdlIHRvIHVzZSB0aGUgY29uZmlndXJlIHZlcnNpb24gbnVtYmVyIGFzIHRoZSBwYWNrYWdlIHZlcnNpb24KKyAgIG51bWJlci4KIAogMjAwOC0wMS0wOSAyMTo1OCAgbWFnZnIKIAogICAgKiBzbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYzoKLSAgICAgRGVsZXRlIHVudXNlZCBzdGF0aWMgZnVuY3Rpb25zCisKKyAgIERlbGV0ZSB1bnVzZWQgc3RhdGljIGZ1bmN0aW9ucwogCiAyMDA4LTAxLTA2IDEzOjAxICBtYWdmcgogCiAgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzoKLSAgICAgTWFrZSBlcnJvcl9zdHJpbmcgcHJpdmF0ZSBhbmQgcmVhZG9ubHkKKworICAgTWFrZSBlcnJvcl9zdHJpbmcgcHJpdmF0ZSBhbmQgcmVhZG9ubHkKIAogMjAwNy0xMi0yMiAxOToyMiAgZHRzMTIKIAogICAgKiBwZXJsL1NOTVAvU05NUC54czoKLSAgICAgQ0hBTkdFUzogcGVybDogQlVHOiAxODI2MTc0OiBDaGVjayBmb3IgYnVmZmVyIG92ZXJmbG93IHdoZW4KLSAgICAgcHJpbnRpbmcgdmFsdWVzLgorCisgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE4MjYxNzQ6IENoZWNrIGZvciBidWZmZXIgb3ZlcmZsb3cgd2hlbgorICAgcHJpbnRpbmcgdmFsdWVzLgogCiAyMDA3LTEyLTIxIDIzOjE5ICBkdHMxMgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnBtOgotICAgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE3NDc3MzM6IE1vcmUgcm9idXN0IGhhbmRsaW5nIG9mIHVuZGVmaW5lZAotICAgICB2YWx1ZXMuCi0gICAgIFBhdGNoIHN1cHBsaWVkIGJ5IE1hdHRpIExpbm5hbnZ1b3JpCisKKyAgIENIQU5HRVM6IHBlcmw6IEJVRzogMTc0NzczMzogTW9yZSByb2J1c3QgaGFuZGxpbmcgb2YgdW5kZWZpbmVkCisgICB2YWx1ZXMuCisgICBQYXRjaCBzdXBwbGllZCBieSBNYXR0aSBMaW5uYW52dW9yaQogCiAyMDA3LTEyLTIxIDIxOjMzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3NDgyMDY6IFByb3RlY3QgYWdhaW5zdCBmYWlsdXJlcyB0byBvcGVuCi0gICAgIC9ldGMvbXRhYiAob3IgZXF1aXYpCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3NDgyMDY6IFByb3RlY3QgYWdhaW5zdCBmYWlsdXJlcyB0byBvcGVuCisgICAvZXRjL210YWIgKG9yIGVxdWl2KQogCiAyMDA3LTEyLTIxIDE4OjQyICBkdHMxMgogCiAgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKLSAgICAgQnJpbmcgb3JkZXIgb2YgYWdlbnQgbGlicmFyeSBsaW5raW5nIGludG8gbGluZSB3aXRoIGFnZW50Ci0gICAgIE1ha2VmaWxlLgotICAgICBQcm9ibGVtIHJlcG9ydGVkIGJ5IFN0ZXZlIE1jQ2FydGh5LgotICAgICBRbjogU2hvdWxkIDUuMi54IGFuZCA1LjMueCBhbHNvIHVzZSB0aGUgc2FtZSBvcmRlcj8KLSAgICAgKGZvciBib3RoIGFnZW50IE1ha2VmaWxlIGFuZCBuZXQtc25tcC1jb25maWcpCisKKyAgIEJyaW5nIG9yZGVyIG9mIGFnZW50IGxpYnJhcnkgbGlua2luZyBpbnRvIGxpbmUgd2l0aCBhZ2VudAorICAgTWFrZWZpbGUuCisgICBQcm9ibGVtIHJlcG9ydGVkIGJ5IFN0ZXZlIE1jQ2FydGh5LgorICAgUW46IFNob3VsZCA1LjIueCBhbmQgNS4zLnggYWxzbyB1c2UgdGhlIHNhbWUgb3JkZXI/CisgICAoZm9yIGJvdGggYWdlbnQgTWFrZWZpbGUgYW5kIG5ldC1zbm1wLWNvbmZpZykKIAogMjAwNy0xMi0yMSAxMzoxMSAgZHRzMTIKIAogICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTgwMjgzMzogRW5zdXJlIHNubXB0cmFwZCBidWlsZHMgd2l0aAotICAgICAtLWRpc2FibGUtc25tcHYxLzJjCisKKyAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDE4MDI4MzM6IEVuc3VyZSBzbm1wdHJhcGQgYnVpbGRzIHdpdGgKKyAgIC0tZGlzYWJsZS1zbm1wdjEvMmMKIAogMjAwNy0xMi0yMCAxNjoyNiAgZHRzMTIKIAogICAgKiBwZXJsL1NOTVAvU05NUC54czoKLSAgICAgQ0hBTkdFUzogcGVybDogQlVHOiAxODM0NTM5OiBDb25zaXN0ZW50IGhhbmRsaW5nIG9mIE9JRCBwYXJzaW5nLgotICAgICBBcHBsaWVzIHBhdGNoICMxODM0OTgzLCBwcm92aWRlZCBieSBEbWl0cnkgS2FyYXNpaworCisgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE4MzQ1Mzk6IENvbnNpc3RlbnQgaGFuZGxpbmcgb2YgT0lEIHBhcnNpbmcuCisgICBBcHBsaWVzIHBhdGNoICMxODM0OTgzLCBwcm92aWRlZCBieSBEbWl0cnkgS2FyYXNpaworCisyMDA3LTEyLTIwIDE2OjA1ICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9jbGllbnQuYzoKKworICAgTW9yZSBpbnRlcm5hbCBxdWVyeSBkZWJ1Z2dpbmcgb3V0cHV0LgogCiAyMDA3LTEyLTIwIDE0OjIwICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvd2F0Y2hlci5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxODIyMzYwOiBGaXggc3BpbmxvY2sgaGVscGVyIGVycm9yIGhhbmRsaW5nLgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxODIyMzYwOiBGaXggc3BpbmxvY2sgaGVscGVyIGVycm9yIGhhbmRsaW5nLgogCiAyMDA3LTEyLTIwIDE0OjE4ICBkdHMxMgogCiAgICAqIHNubXBsaWIvYXNuMS5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE3OTU4NDA6IFNpZ25lZCAzMi1iaXQgdHJ1bmNhdGlvbiBsb2dnZWQKLSAgICAgYXMgZGVidWcgbWVzc2FnZSByYXRoZXIgdGhlbiBlcnJvci4KKworICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiAxNzk1ODQwOiBTaWduZWQgMzItYml0IHRydW5jYXRpb24gbG9nZ2VkCisgICBhcyBkZWJ1ZyBtZXNzYWdlIHJhdGhlciB0aGVuIGVycm9yLgogCiAyMDA3LTEyLTIwIDE0OjE0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzkyODkwOiBpbmNsdWRlIENJRlMgbW91bnRzIHdoZW4gc2tpcHBpbmcKLSAgICAgcmVtb3RlIGZpbGVzeXN0ZW1zCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3OTI4OTA6IGluY2x1ZGUgQ0lGUyBtb3VudHMgd2hlbiBza2lwcGluZworICAgcmVtb3RlIGZpbGVzeXN0ZW1zCiAKIDIwMDctMTItMjAgMTQ6MTIgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzcxMjIxOiBSZXRhaW4gaWZMYXN0Q2hhbmdlIGluZm9ybWF0aW9uIG9uCi0gICAgIGRhdGEgcmVsb2FkLgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzcxMjIxOiBSZXRhaW4gaWZMYXN0Q2hhbmdlIGluZm9ybWF0aW9uIG9uCisgICBkYXRhIHJlbG9hZC4KIAogMjAwNy0xMi0yMCAxNDowOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE3NTgyMTI6IEhhbmRsaW5nIG1pc3NpbmcgdmFyaWFibGUgdHlwZXMKLSAgICAgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTc1ODIxMjogSGFuZGxpbmcgbWlzc2luZyB2YXJpYWJsZSB0eXBlcworICAgKElwQWRkcmVzcyxDb3VudGVyLE9wYXF1ZSkKIAogMjAwNy0xMi0xOSAyMjozOSAgbWFnZnIKIAotICAgKiBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLAotICAgICBzbm1wbGliL2NvbnRhaW5lcl9udWxsLmMsIHNubXBsaWIvZGF0YV9saXN0LmMsCi0gICAgIHNubXBsaWIvcmVhZF9jb25maWcuYzoKLSAgICAgQ29ycmVjdCBkb3h5Z2VuIHdhcm5pbmdzCisgICAqICBzbm1wbGliL2NvbnRhaW5lci5jLCBzbm1wbGliL2NvbnRhaW5lcl9pdGVyYXRvci5jLCAgIAorICAgICAgc25tcGxpYi9jb250YWluZXJfbnVsbC5jLCBzbm1wbGliL2RhdGFfbGlzdC5jLCAgIAorICAgICAgc25tcGxpYi9yZWFkX2NvbmZpZy5jOgorCisgICBDb3JyZWN0IGRveHlnZW4gd2FybmluZ3MKIAogMjAwNy0xMi0xOSAyMjozMSAgbWFnZnIKIAotICAgKiB0ZXN0aW5nL3Rlc3RzL1N2M3ZhY21jb25maWcsIHRlc3RpbmcvdGVzdHMvVDAwMXNubXB2MWdldCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE0c25tcHYyY2dldCwgdGVzdGluZy90ZXN0cy9UMDE1c25tcHYyY2dldG5leHQsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAxNjBzbm1wdjJjYnVsa2dldCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE2c25tcHYyY2dldGZhaWwsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDE4c25tcHYxdG92MmNnZXRmYWlsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTlzbm1wdjJjbm9zdWNoLCB0ZXN0aW5nL3Rlc3RzL1QwMjJzbm1wdjNnZXRNRDUsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAyM3NubXB2M2dldE1ENUFFUywKLSAgICAgdGVzdGluZy90ZXN0cy9UMDIzc25tcHYzZ2V0TUQ1REVTLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMjVzbm1wdjNnZXRTSEFERVMsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiwKLSAgICAgdGVzdGluZy90ZXN0cy9UMDUxc25tcHYyY3RyYXAsIHRlc3RpbmcvdGVzdHMvVDA1MnNubXB2MmNpbmZvcm0sCi0gICAgIHRlc3RpbmcvdGVzdHMvVDA1OGFnZW50YXV0aHRyYXAsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDA1OXRyYXBkdHJhcGhhbmRsZSwgdGVzdGluZy90ZXN0cy9UMDYwdHJhcGRwZXJsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwNjFhZ2VudHBlcmwsIHRlc3RpbmcvdGVzdHMvVDA2NWFnZW50ZXh0ZW5kLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxMDBhZ2VudGh1cCwgdGVzdGluZy90ZXN0cy9UMTE1YWdlbnR4cGVybCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMTIwcHJveHlnZXQsIHRlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxMjJwcm94eXNldGZhaWwsIHRlc3RpbmcvdGVzdHMvVDEzMHNubXB2MXZhY21nZXQsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDEzMXNubXB2MmN2YWNtZ2V0LAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxNDBzbm1wdjF2YWNtZ2V0ZmFpbCwKLSAgICAgdGVzdGluZy90ZXN0cy9UMTQxc25tcHYyY3ZhY21nZXRmYWlsLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxNTBzb2xhcmlzaG9zdGNwdSwKLSAgICAgdGVzdGluZy90ZXN0cy9UMTUxc29sYXJpc2hvc3RkaXNrLCB0ZXN0aW5nL3Rlc3RzL1QxNTJob3N0dXB0aW1lLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QxNTNzb2xhcmlzc3dhcCwgdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQsCi0gICAgIHRlc3RpbmcvdGVzdHMvVDIwMHNubXB2MmN3YWxrYWxsOgotICAgICBVc2UgTkVUU05NUF8tcHJlZml4ZWQgc3ltYm9scyB3aGVuIGRlY2lkaW5nIHdoYXQgdGVzdHMgdG8gcnVuIGFzCi0gICAgIHRoZSBjb21wYXQgc3ltYm9scyBhcmVuJ3QgZGVmaW5lZC4KKyAgICogIHRlc3RpbmcvdGVzdHMvU3YzdmFjbWNvbmZpZywgdGVzdGluZy90ZXN0cy9UMDAxc25tcHYxZ2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDE0c25tcHYyY2dldCwgdGVzdGluZy90ZXN0cy9UMDE1c25tcHYyY2dldG5leHQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTYwc25tcHYyY2J1bGtnZXQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QwMTZzbm1wdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxN3NubXB2MmN0b3YxZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOHNubXB2MXRvdjJjZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAxOXNubXB2MmNub3N1Y2gsIHRlc3RpbmcvdGVzdHMvVDAyMnNubXB2M2dldE1ENSwgIAorICAgICAgIHRlc3RpbmcvdGVzdHMvVDAyM3NubXB2M2dldE1ENUFFUywgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyM3NubXB2M2dldE1ENURFUywgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAyNXNubXB2M2dldFNIQURFUywgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDAzMHNubXB2M3VzZXJjcmVhdGlvbiwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1MXNubXB2MmN0cmFwLCB0ZXN0aW5nL3Rlc3RzL1QwNTJzbm1wdjJjaW5mb3JtLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDU4YWdlbnRhdXRodHJhcCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDA1OXRyYXBkdHJhcGhhbmRsZSwgdGVzdGluZy90ZXN0cy9UMDYwdHJhcGRwZXJsLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDYxYWdlbnRwZXJsLCB0ZXN0aW5nL3Rlc3RzL1QwNjVhZ2VudGV4dGVuZCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDEwMGFnZW50aHVwLCB0ZXN0aW5nL3Rlc3RzL1QxMTVhZ2VudHhwZXJsLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIwcHJveHlnZXQsIHRlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTIycHJveHlzZXRmYWlsLCB0ZXN0aW5nL3Rlc3RzL1QxMzBzbm1wdjF2YWNtZ2V0LCAgCisgICAgICAgdGVzdGluZy90ZXN0cy9UMTMxc25tcHYyY3ZhY21nZXQsICAgCisgICAgICB0ZXN0aW5nL3Rlc3RzL1QxNDBzbm1wdjF2YWNtZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE0MXNubXB2MmN2YWNtZ2V0ZmFpbCwgICAKKyAgICAgIHRlc3RpbmcvdGVzdHMvVDE1MHNvbGFyaXNob3N0Y3B1LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMTUxc29sYXJpc2hvc3RkaXNrLCB0ZXN0aW5nL3Rlc3RzL1QxNTJob3N0dXB0aW1lLCAgCisgICAgICAgdGVzdGluZy90ZXN0cy9UMTUzc29sYXJpc3N3YXAsIHRlc3RpbmcvdGVzdHMvVDE2MHNubXBuZXRzdGF0LCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMjAwc25tcHYyY3dhbGthbGw6CisKKyAgIFVzZSBORVRTTk1QXy1wcmVmaXhlZCBzeW1ib2xzIHdoZW4gZGVjaWRpbmcgd2hhdCB0ZXN0cyB0byBydW4gYXMKKyAgIHRoZSBjb21wYXQgc3ltYm9scyBhcmVuJ3QgZGVmaW5lZC4KIAogMjAwNy0xMi0xOSAyMjowNiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIEJVRyAxODMxNTY4OiBzdHJkdXAgbWlnaHQgZmFpbCBhbmQgcmV0dXJuIE5VTEwgLSB0YWtlIGNhcmUgb2YgaXQKLSAgICAgaW4gdGhpcyBjYXNlIGF0IGxlYXN0LgorCisgICBCVUcgMTgzMTU2ODogc3RyZHVwIG1pZ2h0IGZhaWwgYW5kIHJldHVybiBOVUxMIC0gdGFrZSBjYXJlIG9mIGl0CisgICBpbiB0aGlzIGNhc2UgYXQgbGVhc3QuCiAKIDIwMDctMTItMTkgMjE6NDkgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmMsIHNubXBsaWIvc25tcF9hcGkuYzoKLSAgICAgQlVHIDE4MjQ4ODM6IFJlbW92ZSBtZW1vcnkgbGVhaworCisgICBCVUcgMTgyNDg4MzogUmVtb3ZlIG1lbW9yeSBsZWFrCiAKIDIwMDctMTItMTkgMjA6NDYgIG1hZ2ZyCiAKICAgICogYWdlbnQvaGVscGVycy93YXRjaGVyLmM6Ci0gICAgIENIQU5HRVM6IEJVRzogMTg1MTA0NzogRG8gbm90IHRyeSB0byBkbyBtb3JlIGhhbmRsaW5nIG9mIGEgdmFsdWUKLSAgICAgb25jZSBpdCBpcyBmb3VuZCB0byBiZSBjb3JydXB0IGJ5IHRoZSB3YXRjaGVyIGhlbHBlciwgdGh1cwotICAgICBhdm9pZGluZyBjb2RlIHRoYXQgY291bnRzIG9uIGdldHRpbmcgdGhlIHJpZ2h0IHR5cGUuIFRoaXMgYnVnIHdhcwotICAgICBmb3VuZCBieSBDaGFybGllIE1pbGxlciwgSW5kZXBlbmRlbnQgU2VjdXJpdHkgRXZhbHVhdG9ycy4KKworICAgQ0hBTkdFUzogQlVHOiAxODUxMDQ3OiBEbyBub3QgdHJ5IHRvIGRvIG1vcmUgaGFuZGxpbmcgb2YgYSB2YWx1ZQorICAgb25jZSBpdCBpcyBmb3VuZCB0byBiZSBjb3JydXB0IGJ5IHRoZSB3YXRjaGVyIGhlbHBlciwgdGh1cworICAgYXZvaWRpbmcgY29kZSB0aGF0IGNvdW50cyBvbiBnZXR0aW5nIHRoZSByaWdodCB0eXBlLiBUaGlzIGJ1ZyB3YXMKKyAgIGZvdW5kIGJ5IENoYXJsaWUgTWlsbGVyLCBJbmRlcGVuZGVudCBTZWN1cml0eSBFdmFsdWF0b3JzLgogCiAyMDA3LTExLTI3IDA5OjU2ICBkdHMxMgogCiAgICAqIG1hbi9zbm1wdHJhcGQuOC5kZWY6Ci0gICAgIENsYXJpZnkgdXNlIG9mIHRoZSAtQSAobG9nIGFwcGVuZCkgb3B0aW9uLgorCisgICBDbGFyaWZ5IHVzZSBvZiB0aGUgLUEgKGxvZyBhcHBlbmQpIG9wdGlvbi4KIAogMjAwNy0xMS0yMiAxNTo0MiAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jLCBhZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmM6Ci0gICAgIGNoZWNrIHJlcXVlc3QsIG5vdCByZXF1ZXN0cy4gcmVwb3J0ZWQgYnkgdWxpbSBvbiBpcmMKIAotMjAwNy0xMS0yMiAxNToxNiAgcnN0b3J5CisgICBjaGVjayByZXF1ZXN0LCBub3QgcmVxdWVzdHMuIHJlcG9ydGVkIGJ5IHVsaW0gb24gaXJjCisKKzIwMDctMTEtMjIgMTU6MTcgIHJzdG9yeQogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5jOgotICAgICBjaGVjayByZXF1ZXN0LCBub3QgcmVxdWVzdHMuIHJlcG9ydGVkIGJ5IHVsaW0gb24gaXJjCisKKyAgIGNoZWNrIHJlcXVlc3QsIG5vdCByZXF1ZXN0cy4gcmVwb3J0ZWQgYnkgdWxpbSBvbiBpcmMKIAogMjAwNy0xMS0xOSAyMTozNCAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYzoKLSAgICAgQ0hBTkdFUzogU29sYXJpczogUEFUQ0g6IDE4MzQ2OTk6IGZyb20gYXBlcnNzb246IEZpeCAxODMzMjk0OgotICAgICBETFBJIHByb2JsZW1zIG9uIFNvbGFyaXMgMi42CisKKyAgIENIQU5HRVM6IFNvbGFyaXM6IFBBVENIOiAxODM0Njk5OiBmcm9tIGFwZXJzc29uOiBGaXggMTgzMzI5NDoKKyAgIERMUEkgcHJvYmxlbXMgb24gU29sYXJpcyAyLjYKKworMjAwNy0xMS0xNyAxNjoyNiAgbWFnZnIKKworICAgKiAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IHNubXBkOiBVc2UgdGhlIHdvcmtlciBoZWxwZXJzIGZyb20gdGhlCisgICByZWdpc3Rlcl8qX2luc3RhbmNlIGhlbHBlcnMgYW5kIHNjaGVkdWxlIHRoZSBpbnN0YW5jZSBoZWxwZXJzIGZvcgorICAgcmVtb3ZhbCBpbiA1LjYKKworMjAwNy0xMS0xNCAxMjoyMSAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmg6CisKKyAgIFN1cHBvcnQgdjMgbG1zZW5zb3JzIEFQSS4KKworMjAwNy0xMS0xNCAxMjoxOSAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuYzoKKworICAgRml4IG1pc2xlYWRpbmcgZGVidWcgb3V0cHV0IG1lc3NhZ2UuCisKKzIwMDctMTEtMTMgMTM6NTkgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvZHVtbXlfc2Vuc29ycy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMva3N0YXRfc2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgIAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oOgorCisgICBQcmVsaW1pbmFyeSByZS13b3JraW5nIG9mIHRoZSBMTS1TRU5TT1JTLU1JQiwgdG8gc2VwYXJhdGUgb3V0CisgICB0aGUgc2Vuc29yIGhhcmR3YXJlIHByb2Nlc3NpbmcgZnJvbSB0aGUgTUlCIHRhYmxlcyB0aGVtc2VsdmVzLgogCiAyMDA3LTExLTA4IDIzOjE3ICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLAotICAgICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgotICAgICBDSEFOR0VTOiBTb2xhcmlzOiBQQVRDSDogMTgyNDE5Njoge2lmT3BlclN0YXR1cyxpcEFkRW50SWZJbmRleH0KLSAgICAgcmVwb3J0ZWQgaW5jb3JyZWN0bHkKLSAgICAgUGF0Y2ggc3VwcGxpZWQgYnkgQW5kZXJzIFBlcnNzb24uIEZpeGVzIEJ1Z3MgMTgyMjI3NSBhbmQgMTgxOTE4OS4KKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYywgYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jOgorCisgICBDSEFOR0VTOiBTb2xhcmlzOiBQQVRDSDogMTgyNDE5Njoge2lmT3BlclN0YXR1cyxpcEFkRW50SWZJbmRleH0KKyAgIHJlcG9ydGVkIGluY29ycmVjdGx5CisgICBQYXRjaCBzdXBwbGllZCBieSBBbmRlcnMgUGVyc3Nvbi4gRml4ZXMgQnVncyAxODIyMjc1IGFuZCAxODE5MTg5LgorCisyMDA3LTEwLTI2IDIxOjIyICBtYWdmcgorCisgICAqICBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYywgYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmg6CisKKyAgIE5FV1M6IHNubXBkOiBBZGRlZCBzdXBwb3J0IGZvciBhIHVzZXIgcHJvdmlkZWQgbGVuZ3RoIHZhcmlhYmxlCisgICBhbmQgQyBzdHJpbmcgdmFsdWVzIHRvIHRoZSB3YXRjaGVyIGhlbHBlci4KKworMjAwNy0xMC0xNiAyMjozOSAgbWFnZnIKKworICAgKiAgYWdlbnQvYWdlbnRfdHJhcC5jLCBhZ2VudC9oZWxwZXJzL2RlYnVnX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYywgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsICAgCisgICAgICBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCBzbm1wbGliL2RlZmF1bHRfc3RvcmUuYywgICAKKyAgICAgIHNubXBsaWIvc25tcFNURERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBEb21haW4uYywgICAKKyAgICAgIHNubXBsaWIvc25tcF9jbGllbnQuYzoKKworICAgVXNlICVwIHRvIHByaW50IHBvaW50ZXJzLiBEbyBub3QgdXNlICVwIHRvIHByaW50IG51bWJlcnMuCisKKzIwMDctMTAtMTYgMDc6MzEgIG1hZ2ZyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBNYWtlIHRoZSBsaWJyYXJ5IGJ1aWxkYWJsZSBhcyBDIGFnYWluLgogCiAyMDA3LTEwLTE2IDA3OjE3ICBtYWdmcgogCi0gICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgYWdlbnQvaGVscGVycy9zY2FsYXIuYywKLSAgICAgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6Ci0gICAgIENIQU5HRVM6IG1pc2M6IGF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggdG9vIG1hbnkKLSAgICAgYXJndW1lbnRzLgorICAgKiAgYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jLCBhZ2VudC9oZWxwZXJzL3NjYWxhci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy93YXRjaGVyLmMsIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgorCisgICBDSEFOR0VTOiBtaXNjOiBhdm9pZCBjYWxsaW5nIGRlYnVnIG1hY3JvcyB3aXRoIHRvbyBtYW55CisgICBhcmd1bWVudHMuCiAKIDIwMDctMTAtMTYgMDY6MTggIG1hZ2ZyCiAKLSAgICogc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgotICAgICBNYWtlIHRoZSBsaWJyYXJ5IGJ1aWxkYWJsZSBhcyBDKysgYWdhaW4uCisgICAqICBzbm1wbGliL3NubXBfYXBpLmMsIHNubXBsaWIvc25tcF9zZXJ2aWNlLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfdHJhbnNwb3J0LmM6CisKKyAgIE1ha2UgdGhlIGxpYnJhcnkgYnVpbGRhYmxlIGFzIEMrKyBhZ2Fpbi4KKworMjAwNy0xMC0xNSAyMDo1MiAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgsICAgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jOgorCisgICBkZWNsYXJlIG5ldHNubXBfYmluYXJ5X2FycmF5X29wdGlvbnNfc2V0OyBpbmNsdWRlIGhlYWRlciBmb3IgaXQKKyAgIGFzIG5lZWRlZAogCiAyMDA3LTEwLTE1IDIwOjM5ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYzoKLSAgICAgQ29udmVydCBhbiBpbmZpbml0ZSBsb29wIHRvIGEgZmluaXRlIG9uZS4KLSAgICAgUmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KKworICAgQ29udmVydCBhbiBpbmZpbml0ZSBsb29wIHRvIGEgZmluaXRlIG9uZS4KKyAgIFJlbW92ZSBhbiB1bnVzZWQgdmFyaWFibGUuCiAKIDIwMDctMTAtMTQgMjI6MTAgIG1hZ2ZyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9jb21tb24uYzoKLSAgICAgQ0hBTkdFUzogbWlzYzogQXZvaWQgY2FsbGluZyBkZWJ1ZyBtYWNyb3Mgd2l0aCB0b28gZmV3IGFyZ3VtZW50cy4KKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fY29tbW9uLmM6CisKKyAgIENIQU5HRVM6IG1pc2M6IEF2b2lkIGNhbGxpbmcgZGVidWcgbWFjcm9zIHdpdGggdG9vIGZldyBhcmd1bWVudHMuCiAKIDIwMDctMTAtMTQgMjA6NTEgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxODExNDY5OiByZWFkX2NvbmZpZ19maWxlc19pbl9wYXRoKCkKLSAgICAgcmVhZHMgcGFzdCBtYWxsb2MnZCBidWZmZXIKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE4MTE0Njk6IHJlYWRfY29uZmlnX2ZpbGVzX2luX3BhdGgoKQorICAgcmVhZHMgcGFzdCBtYWxsb2MnZCBidWZmZXIKIAogMjAwNy0xMC0xNCAyMDo0MSAgdGFuZGVycwogCiAgICAqIHBlcmwvU05NUC9TTk1QLnhzOgotICAgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTgxMTQ2MzogcGVybCBhc3luYyBjYWxsYmFjayBjb3JlZHVtcAotICAgICBDSEFOR0VTOiBwZXJsOiBCVUc6IDE2MDYwNjI6IHBlcmwgYnVsa3dhbGsgKGFzeW5jKSBjb3JlZHVtcAorCisgICBDSEFOR0VTOiBwZXJsOiBQQVRDSDogMTgxMTQ2MzogcGVybCBhc3luYyBjYWxsYmFjayBjb3JlZHVtcAorICAgQ0hBTkdFUzogcGVybDogQlVHOiAxNjA2MDYyOiBwZXJsIGJ1bGt3YWxrIChhc3luYykgY29yZWR1bXAKIAogMjAwNy0xMC0xNCAxOTowNyAgdGFuZGVycwogCiAgICAqIHNubXBsaWIvc25tcF9sb2dnaW5nLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxODA2MzM2OiBmaXggLUxTIG9wdGlvbiBwYXJzaW5nCisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxODA2MzM2OiBmaXggLUxTIG9wdGlvbiBwYXJzaW5nCiAKIDIwMDctMTAtMTQgMTI6MTIgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jOgotICAgICBmaXggY29tbWVudAorCisgICBmaXggY29tbWVudAogCiAyMDA3LTEwLTEzIDIzOjI4ICB0YW5kZXJzCiAKICAgICogdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQ6Ci0gICAgIENIQU5HRVM6IHRlc3Q6IGVuaGFuY2Ugc25tcG5ldHN0YXQgdGVzdCB0byBjaGVjayB0Y3BUYWJsZSBpbiBUQ1AKLSAgICAgbW9kZQorCisgICBDSEFOR0VTOiB0ZXN0OiBlbmhhbmNlIHNubXBuZXRzdGF0IHRlc3QgdG8gY2hlY2sgdGNwVGFibGUgaW4gVENQCisgICBtb2RlCiAKIDIwMDctMTAtMTMgMjI6MjggIHRhbmRlcnMKIAotICAgKiBhZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmg6Ci0gICAgIENIQU5HRVM6IFNvbGFyaXM6IEJVRzogMTgxMDgxNDogdGNwVGFibGUgbWlzc2luZyBlbnRyaWVzIGFuZAotICAgICB3cm9uZyBwb3J0cworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaDoKKworICAgQ0hBTkdFUzogU29sYXJpczogQlVHOiAxODEwODE0OiB0Y3BUYWJsZSBtaXNzaW5nIGVudHJpZXMgYW5kCisgICB3cm9uZyBwb3J0cwogCiAyMDA3LTEwLTEyIDIxOjQ2ICB0YW5kZXJzCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oOgotICAgICBDSEFOR0VTOiBTb2xhcmlzOiAjZGVmaW5lIE5FV19NSUJfQ09NUExJQU5UIHRvIHN1cHBvcnQgU29sYXJpcwotICAgICAxMFU0KworCisgICBDSEFOR0VTOiBTb2xhcmlzOiAjZGVmaW5lIE5FV19NSUJfQ09NUExJQU5UIHRvIHN1cHBvcnQgU29sYXJpcworICAgMTBVNCsKIAogMjAwNy0xMC0xMSAyMDo0NiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IGxlYWsgbWVtb3J5IHdoZW5ldmVyIGFuIHVkcCBhZGRyZXNzIGlzCi0gICAgIGZvcm1hdHRlZC4KKworICAgQ0hBTkdFUzogc25tcGxpYjogRG8gbm90IGxlYWsgbWVtb3J5IHdoZW5ldmVyIGFuIHVkcCBhZGRyZXNzIGlzCisgICBmb3JtYXR0ZWQuCisKKzIwMDctMTAtMDMgMDE6MDIgIGFsZXhfYgorCisgICAqICB3aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQsIHdpbjMyL2Rpc3QvUkVBRE1FLnR4dCwgICAKKyAgICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL0FkZDJQYXRoLm5zaSwgICAKKyAgICAgIHdpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaToKKworICAgLUZpeCBmb3IgYnVnIDE3Njg3OTcuIE5TSVMgSW5zdGFsbGVyIHNjcmlwdCBub3cgd2FybnMgdGhlIHVzZXIgaWYKKyAgIHRoZSBQQVRICisgICBpcyA+IDEwMjQgYXMgTlNJUyBjYW4gbm90IGhhbmRsZSB2YXJpYWJsZXMgbGFyZ2VyIHRoYW4gMTAyNC4KKyAgIC1VcGRhdGVzIHRvIGJ1aWxkIGluc3RydWN0aW9ucy4KIAogMjAwNy0wOS0zMCAyMDo1OSAgbWFnZnIKIAotICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgsIHNubXBsaWIvc25tcF9hcGkuYywKLSAgICAgc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgotICAgICBDSEFOR0VTOiBCVUc6IDE4MDE4MzU6IEFkZGVkIHRoZSBhYmlsaXR5IHRvIGhhdmUgbXVsdGlwbGUgZGVmYXVsdAotICAgICB0cmFuc3BvcnRzIGZvciBhbiBhcHBsaWNhdGlvbi4gT24gb3BlbiB0aGUgZGlmZmVyZW50IHRyYW5zcG9ydHMKLSAgICAgd2lsbCBiZSB0cmllZCBpbiBvcmRlci4gQXMgYSBjb25zZXF1ZW5jZSBzbm1wIGFuZCBzbm1wdHJhcCBub3cKLSAgICAgd2lsbCB0cnkgZmlyc3QgdWRwIGFuZCB0aGVuIHVkcDYgYW5kIGFnZW50eCB3aWwgdHJ5IGZpcnN0IHVuaXgKLSAgICAgYW5kIHRoZW4gdGNwLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaCwgc25tcGxpYi9zbm1wX2FwaS5jLCAgIAorICAgICAgc25tcGxpYi9zbm1wX3NlcnZpY2UuYywgc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jOgorCisgICBDSEFOR0VTOiBCVUc6IDE4MDE4MzU6IEFkZGVkIHRoZSBhYmlsaXR5IHRvIGhhdmUgbXVsdGlwbGUgZGVmYXVsdAorICAgdHJhbnNwb3J0cyBmb3IgYW4gYXBwbGljYXRpb24uIE9uIG9wZW4gdGhlIGRpZmZlcmVudCB0cmFuc3BvcnRzCisgICB3aWxsIGJlIHRyaWVkIGluIG9yZGVyLiBBcyBhIGNvbnNlcXVlbmNlIHNubXAgYW5kIHNubXB0cmFwIG5vdworICAgd2lsbCB0cnkgZmlyc3QgdWRwIGFuZCB0aGVuIHVkcDYgYW5kIGFnZW50eCB3aWwgdHJ5IGZpcnN0IHVuaXgKKyAgIGFuZCB0aGVuIHRjcC4KIAogMjAwNy0wOS0yOSAxMzoxMCAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IERvIG5vdCB0cnkgdG8gbG9vayB1cCBlbXB0eSBzdHJpbmdzIGFzCi0gICAgIGhvc3RuYW1lcyBmb3IgSVB2NgotICAgICBBZGRpdGluYWxseSwgcHJpbnQgd2hhdCBzdHJpbmcgZmlsZWQgdG8gcmVzb2x2ZSB1c2luZyBnZXRhZGRyaW5mbwotICAgICBmb3IgSVB2NgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBEbyBub3QgdHJ5IHRvIGxvb2sgdXAgZW1wdHkgc3RyaW5ncyBhcworICAgaG9zdG5hbWVzIGZvciBJUHY2CisgICBBZGRpdGluYWxseSwgcHJpbnQgd2hhdCBzdHJpbmcgZmlsZWQgdG8gcmVzb2x2ZSB1c2luZyBnZXRhZGRyaW5mbworICAgZm9yIElQdjYKKworMjAwNy0wOS0yOSAwNjoyNiAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE4MDQ0NDU6IGZyb20gYXBlcnNzb246IEhpZ2ggb3JkZXIgYml0cyBvZgorICAgSENJbk9jdGV0cyBub3Qgc2V0IG9uIFNvbGFyaXMKIAogMjAwNy0wOS0yNCAyMDo0MyAgaGFyZGFrZXIKIAogICAgKiBDT1BZSU5HOgotICAgICB5ZWFyIHVwZGF0ZQorCisgICB5ZWFyIHVwZGF0ZQorCisyMDA3LTA5LTIzIDA2OjAzICB0YW5kZXJzCisKKyAgICogc25tcGxpYi9kaXJfdXRpbHMuYzoKKworICAgZml4ICNlbGlmCisKKzIwMDctMDktMjEgMjI6MDQgIHRhbmRlcnMKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBzbm1wbGliL2Rpcl91dGlscy5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBhdHRlbXB0IHRvIGZpeCBidWlsZCBmb3IgU29sYXJpcy9BSVgvSFAtVVgKKyAgIGJyb2tlbiBieSByMTY2ODQKIAogMjAwNy0wOS0yMCAyMTo1NSAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzQ2ODMxOiBmcm9tIGN1bm5pamQ6IGZpeCBwcm9jZXNzCi0gICAgIGNoZWNraW5nIHJhY2UKLSAgICAgY29uZGl0aW9uIHVuZGVyIExpbnV4IGFuZCBwbGF0Zm9ybSAjaWZkZWZzCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc0NjgzMTogZnJvbSBjdW5uaWpkOiBmaXggcHJvY2VzcworICAgY2hlY2tpbmcgcmFjZQorICAgY29uZGl0aW9uIHVuZGVyIExpbnV4IGFuZCBwbGF0Zm9ybSAjaWZkZWZzCiAKIDIwMDctMDktMTkgMjE6MDkgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogQlVHOiBDb3Zlcml0eSAjMTgzOiBmaXggbWVtb3J5IGxlYWsgaWYKLSAgICAgSVBfUEtUSU5GTyBmYWlscworCisgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IENvdmVyaXR5ICMxODM6IGZpeCBtZW1vcnkgbGVhayBpZgorICAgSVBfUEtUSU5GTyBmYWlscworCisyMDA3LTA5LTE5IDE5OjU3ICBkdHMxMgorCisgICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CisKKyAgIEZpeCBtaXNudW1iZXJpbmdzIG9mIHN0ZXBzLgorICAgSXQgaXMgKnNvKiBkaWZmaWN1bHQgdG8gZmluZCBwcm9wZXJseSBudW1lcmF0ZSBzdGFmZiB0aGVzZQorICAgZGF5cy4uLi4KIAogMjAwNy0wOS0xNiAwOTo1MSAgbWFnZnIKIAogICAgKiBsb2NhbC9taWIyYy11cGRhdGU6Ci0gICAgIFJlbW92ZSBiYXNoaXNtcy4gVGhpcyBpcyBuZXRic2QgcGF0Y2gtZXQgZnJvbSBidWcgMTc0NTQwNC4KKworICAgUmVtb3ZlIGJhc2hpc21zLiBUaGlzIGlzIG5ldGJzZCBwYXRjaC1ldCBmcm9tIGJ1ZyAxNzQ1NDA0LgogCiAyMDA3LTA5LTE2IDA5OjQ1ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmM6Ci0gICAgIFVzZSBjb25zdCBjaGFyKiBmb3IgdGVtcG9yYXJ5IGNvbnN0YW50IHN0cmluZyB2YXJpYWJsZS4gVGhpcyBpcwotICAgICBuZXRic2QgcGF0Y2gtZWEgZnJvbSBidWcgMTc0NTQwNC4KKworICAgVXNlIGNvbnN0IGNoYXIqIGZvciB0ZW1wb3JhcnkgY29uc3RhbnQgc3RyaW5nIHZhcmlhYmxlLiBUaGlzIGlzCisgICBuZXRic2QgcGF0Y2gtZWEgZnJvbSBidWcgMTc0NTQwNC4KIAogMjAwNy0wOS0xNiAwOTo0MCAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIFVzZSB0aGUgbmF0dXJhbCB0eXBlIG9mIGluX2FkZHJfdCdzIGZvciBjb21wYXJpc2lvbnMuIFRoaXMgaXMKLSAgICAgbmV0YnNkIHBhdGNoLWVhIGZyb20gYnVnIDE3NDU0MDQuCisKKyAgIFVzZSB0aGUgbmF0dXJhbCB0eXBlIG9mIGluX2FkZHJfdCdzIGZvciBjb21wYXJpc2lvbnMuIFRoaXMgaXMKKyAgIG5ldGJzZCBwYXRjaC1lYSBmcm9tIGJ1ZyAxNzQ1NDA0LgogCiAyMDA3LTA5LTE2IDA3OjA2ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYzoKLSAgICAgQ0hBTkdFUzogQlVHOiAxNzkzNTQ1OiBUYWtlIHRoZSBuYW1lIGZyb20gdGhlIHNvY2thZGRyX3VuIGluCi0gICAgIG9yZGVyIHRvIGF2b2lkIHRyYW5zcG9ydCBzcGVjaWZpZXJzIGFuZCBvdGhlciBkZWNvcmF0aW9ucy4KIAotMjAwNy0wOS0xNCAxNDo0NCAgZHRzMTIKKyAgIENIQU5HRVM6IEJVRzogMTc5MzU0NTogVGFrZSB0aGUgbmFtZSBmcm9tIHRoZSBzb2NrYWRkcl91biBpbgorICAgb3JkZXIgdG8gYXZvaWQgdHJhbnNwb3J0IHNwZWNpZmllcnMgYW5kIG90aGVyIGRlY29yYXRpb25zLgorCisyMDA3LTA5LTE0IDEzOjE4ICByc3RvcnkKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gaGVhZGVyIGZvciBzd3J1biByZXdyaXRlCisKKzIwMDctMDktMTQgMTM6MTYgIHJzdG9yeQorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaDoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBhZGQgdXRpbGl0eSBtYWNybworICAgLSBhY3RpdmF0ZSBuZXcgaG9zdCByZXNvdXJjZSByZXdyaXRlcworCisyMDA3LTA5LTE0IDEzOjEzICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9ob3N0Lmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gY29uZmlnX3JlcXVpcmUgZm9yIG5ldyByZXdyaXRlcywgaWYgZW5hYmxlZAorCisyMDA3LTA5LTE0IDEzOjExICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMsIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jLCAgCisgICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYzoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBhZGQvZml4IGRpc2svcGFydGl0aW9uIHRhYmxlcyBvbiBkYXJ3aW4KKworMjAwNy0wOS0xNCAxMzowOSAgcnN0b3J5CisKKyAgICogIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gYWRkIGhyU1dJbnN0YWxsZWRUYWJsZSBmb3IgZGFyd2luCisKKzIwMDctMDktMTQgMDg6NDQgIGR0czEyCiAKICAgICogZGlzdC9tYWtlcmVsZWFzZToKLSAgICAgU3luY2ggd2l0aCBtYWluIHRydW5rIHJlbGVhc2Ugc2NyaXB0LgorCisgICBQcm90ZWN0IGFnYWluc3QgdW5leHBlY3RlZCBjb21tYW5kIGFyZ3VtZW50cy4KKworMjAwNy0wOS0xNCAwODowMCAgZHRzMTIKKworICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgorCisgICBEb2N1bWVudCB1c2Ugb2YgInN2biBleHBvcnQiIHJhdGhlciB0aGFuICJzdm4gY2hlY2tvdXQiLgorICAgQ292ZXIgZ2VuZXJhdGlvbiBvZiB0aGUgemlwIGFyY2hpdmUgYXMgd2VsbCBhcyB0aGUgdGFyYmFsbC4KIAogMjAwNy0wOS0xMyAyMToyNSAgdGFuZGVycwogCiAgICAqIFJFQURNRToKLSAgICAgZHJvcCBvYnNvbGV0ZSBtaXJyb3JzCisKKyAgIGRyb3Agb2Jzb2xldGUgbWlycm9ycworCisyMDA3LTA5LTEzIDE3OjI5ICByc3RvcnkKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2VzcywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5QZXJmVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmg6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gaG9zdCByZXNvdXJjZXMgU1dSdW4gYW5kIFNXUnVuUGVyZiBUYWJsZSBmb3IgZGFyd2luOQorCisyMDA3LTA5LTEzIDE3OjIyICByc3RvcnkKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaDoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBpbXByb3ZlIGVycm9yIGhhbmRsaW5nIGFuZCBjbGVhbnVwIGluIHJlZ2lzdHJhdGlvbiBmdW5jdGlvbnMKKworMjAwNy0wOS0xMyAxNzoxOSAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzoKKworICAgQXBwbGUgcGF0Y2hlcworICAgLSBmb3IgZGFyd2luOSwgcmV4ZWMgYWZ0ZXIgZm9yayB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIHNvbWUgbWFjaAorICAgY2FsbHMKKworMjAwNy0wOS0xMiAxODo1MSAgcnN0b3J5CisKKyAgICogIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaCwgc25tcGxpYi9NYWtlZmlsZS5pbiwgICAKKyAgICAgIHNubXBsaWIvZGlyX3V0aWxzLmM6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gbmV3IHV0aWxpdHkgZnVuY3Rpb24gdG8gcmVhZCBhIGRpcmVjdG9yeSBoaWVyYXJjeSBpbnRvIGEKKyAgIGNvbnRhaW5lcgorCisyMDA3LTA5LTEyIDE3OjU1ICByc3RvcnkKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgsIHNubXBsaWIvY29udGFpbmVyLmM6CisKKyAgIEFwcGxlIHBhdGNoZXMKKyAgIC0gbmV3IHN0cmluZyBjb21wYXJlIGNhbGxiYWNrCisKKzIwMDctMDktMTIgMTc6NTMgIHJzdG9yeQorCisgICAqICBhZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oOgorCisgICBBcHBsZSBwYXRjaGVzCisgICAtIG5ldyBuZXRzbm1wX2NhY2hlX2ZyZWUgZnVuY3Rpb24KKworMjAwNy0wOS0xMiAxNzo0NiAgcnN0b3J5CisKKyAgICogc25tcGxpYi9zbm1wVURQRG9tYWluLmM6CisKKyAgIGFkZCBtaXNzaW5nIG5ld2xpbmUgaW4gZGVidWcgbXNnCisKKzIwMDctMDktMTIgMTc6NDIgIHJzdG9yeQorCisgICAqIGxvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mOgorCisgICBQYXRjaGVzIGZyb20gQXBwbGUKKyAgIC0gYWRkIG9wdGlvbmFsIGNhY2hlCisgICAtIGNoZWNrL2hhbmRsZSBlcnJvcnMgZm9yIGFsbCBmdW5jdGlvbnMgaW4gaW5pdCBmdW5jCisgICAtIHR5cGVkZWYgZ2VuZXJhdGVkIHN0cnVjdAorICAgLSBza2lwIHByb2Nlc3NlZCByZXF1ZXN0cworICAgLSBjaGVjayBmb3IgbnVsbCB3aGVuIGV4dHJhY3Rpbmcgcm93CisKKzIwMDctMDktMTIgMTc6MzUgIHJzdG9yeQorCisgICAqIENPUFlJTkc6CisKKyAgIGFkZCBuZXcgY29weXJpZ2h0L2NvbnRyaWJ1dG9yCisKKzIwMDctMDktMDUgMjA6MTIgIG1hZ2ZyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jOgorCisgICBDb21iaW5lIHN5c3RlbV9wYXJzZV9jb25maWdfc3lze2xvYyxjb24sbmFtZX0gaW50byBvbmUgZnVuY3Rpb24KKyAgIHNpbmNlIHRoZXkgYWxsIGRvIHRoZSBzYW1lIHRoaW5nCiAKIDIwMDctMDgtMjUgMTQ6MjQgIG1hZ2ZyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLAotICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmg6Ci0gICAgIE1ha2UgbW9zdCBvZiBub3RpZmljYXRpb25fbG9nIHN0YXRpYy4gTWluaW1pemUgdGhlIGhlYWRlciBmaWxlLgorICAgKiAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oOgorCisgICBNYWtlIG1vc3Qgb2Ygbm90aWZpY2F0aW9uX2xvZyBzdGF0aWMuIE1pbmltaXplIHRoZSBoZWFkZXIgZmlsZS4KIAogMjAwNy0wOC0yMiAyMTo1NiAgdGFuZGVycwogCiAgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6Ci0gICAgIE5FV1M6IGFnZW50OiBzdXBwcmVzcyBhbm5veWluZyAicmVnaXN0cmF0aW9uICE9IGR1cGxpY2F0ZSIKLSAgICAgd2FybmluZyBmb3Igcm9vdCBvaWRzCi0gICAgIChvdGhlcndpc2UsIHlvdSdsbCBnZXQgdGhpcyBtZXNzYWdlIG9uIGFsbW9zdCBldmVyeSBzdGFydHVwKQorCisgICBORVdTOiBhZ2VudDogc3VwcHJlc3MgYW5ub3lpbmcgInJlZ2lzdHJhdGlvbiAhPSBkdXBsaWNhdGUiCisgICB3YXJuaW5nIGZvciByb290IG9pZHMKKyAgIChvdGhlcndpc2UsIHlvdSdsbCBnZXQgdGhpcyBtZXNzYWdlIG9uIGFsbW9zdCBldmVyeSBzdGFydHVwKQogCiAyMDA3LTA4LTIwIDA4OjA2ICB0YW5kZXJzCiAKICAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOgotICAgICBORVdTOiBzbm1wbGliOiBmaXggcG90ZW50aWFsIGJ1ZmZlciBvdmVyZmxvdyBpbiBzcHJpbnRmIGZvcgotICAgICBVRFAvSVB2NgogCi0yMDA3LTA4LTE3IDA5OjA4ICBkdHMxMgorICAgTkVXUzogc25tcGxpYjogZml4IHBvdGVudGlhbCBidWZmZXIgb3ZlcmZsb3cgaW4gc3ByaW50ZiBmb3IKKyAgIFVEUC9JUHY2CisKKzIwMDctMDgtMTcgMDk6MTAgIGR0czEyCiAKICAgICogRkFROgotICAgICBTeW5jaCB3aXRoIG1haW4gZGV2ZWxvcG1lbnQgKGFuZCBvbi1saW5lKSBGQVEgdGV4dC4KKworICAgU3VidmVyc2lvbiwgbm90IENWUy4KIAogMjAwNy0wOC0xNyAwODo1OSAgZHRzMTIKIAogICAgKiBGQVE6Ci0gICAgIENsYXJpZnkgaGFuZGxpbmcgb2YgdW5rbm93biBjb21tdW5pdGllcworCisgICBDbGFyaWZ5IGhhbmRsaW5nIG9mIHVua25vd24gY29tbXVuaXRpZXMKIAogMjAwNy0wOC0xNiAxNTozNiAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKLSAgICAgRG9uJ3QganVzdCByZXBvcnQgdGhlIHByb2JsZW0gLSBpdCBtaWdodCBiZSBzZW5zaWJsZSB0byBhdm9pZAotICAgICBjcmFzaGluZyB0aGUgYWdlbnQgYXMgd2VsbCEKKworICAgRG9uJ3QganVzdCByZXBvcnQgdGhlIHByb2JsZW0gLSBpdCBtaWdodCBiZSBzZW5zaWJsZSB0byBhdm9pZAorICAgY3Jhc2hpbmcgdGhlIGFnZW50IGFzIHdlbGwhCiAKIDIwMDctMDgtMTYgMTU6MzUgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc0NDE1NzogUmVwb3J0IGR1cGxpY2F0ZSAiZXh0ZW5kL2V4ZWMiCi0gICAgIGlkZW50aWZpZXJzLgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3NDQxNTc6IFJlcG9ydCBkdXBsaWNhdGUgImV4dGVuZC9leGVjIgorICAgaWRlbnRpZmllcnMuCiAKIDIwMDctMDgtMTYgMTU6MjQgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMsIGFwcHMvc25tcHRyYXBkX2RzLmg6Ci0gICAgIENIQU5HRVM6IHNubXB0cmFwZDogUEFUQ0g6IDE3NDY5OTI6IEltcHJvdmUgc25tcHRyYXBkCi0gICAgIGFjY2Vzcy1jb250cm9sIGVycm9yIG1lc3NhZ2VzLgorCisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIOiAxNzQ2OTkyOiBJbXByb3ZlIHNubXB0cmFwZAorICAgYWNjZXNzLWNvbnRyb2wgZXJyb3IgbWVzc2FnZXMuCiAKIDIwMDctMDgtMTYgMTQ6MTIgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3NTI5MzQ6IEZpeCBvZmYtYnktb25lIHFzb3J0IGVycm9yIGluCi0gICAgIHRhYmxlIHV0aWxpdGllcy4KKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUyOTM0OiBGaXggb2ZmLWJ5LW9uZSBxc29ydCBlcnJvciBpbgorICAgdGFibGUgdXRpbGl0aWVzLgogCiAyMDA3LTA4LTE2IDEzOjMxICBkdHMxMgogCiAgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUzNDM3OiBGaXggZXJyb3IgaW5kZXggb24gZmFpbGluZyBTRVQKLSAgICAgcmVxdWVzdHMKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUzNDM3OiBGaXggZXJyb3IgaW5kZXggb24gZmFpbGluZyBTRVQKKyAgIHJlcXVlc3RzCiAKIDIwMDctMDgtMTYgMTM6MjUgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3NTM0NDk6IEZpeCBBZ2VudFggZXJyb3IgcHJvcGFnYXRpb24KKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzUzNDQ5OiBGaXggQWdlbnRYIGVycm9yIHByb3BhZ2F0aW9uCiAKIDIwMDctMDgtMTYgMTI6MzQgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3N1YmFnZW50LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc1MzQ2MzogRml4IEFnZW50WCBzdWJhZ2VudCBwaW5nIGFsYXJtCi0gICAgIGhhbmRsaW5nCisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc1MzQ2MzogRml4IEFnZW50WCBzdWJhZ2VudCBwaW5nIGFsYXJtCisgICBoYW5kbGluZwogCiAyMDA3LTA4LTE2IDEyOjEzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzU4MjA4OiBGaXggbWVtb3J5IGxlYWsKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzU4MjA4OiBGaXggbWVtb3J5IGxlYWsKIAogMjAwNy0wOC0xNiAxMjowMyAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTc3NDYxMjogTW9yZSByZXNpbGllbnQgcHJvY2VzcyBzdGF0dXMKLSAgICAgaGFuZGxpbmcKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzc0NjEyOiBNb3JlIHJlc2lsaWVudCBwcm9jZXNzIHN0YXR1cworICAgaGFuZGxpbmcKIAogMjAwNy0wOC0xNiAxMTo1OCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE3NzUxMjQ6IEZpeCBjbGllbnRhZGRyIGZ1bmN0aW9uYWxpdHkKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE3NzUxMjQ6IEZpeCBjbGllbnRhZGRyIGZ1bmN0aW9uYWxpdHkKIAogMjAwNy0wOC0xNiAwOTozOCAgZHRzMTIKIAogICAgKiBzbm1wbGliL3BhcnNlLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNzY4Mjg1OiBDb3VudCBNSUIgZmlsZXMgY29ycmVjdGx5IGluCi0gICAgIGFkZF9taWJkaXIoKQorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTc2ODI4NTogQ291bnQgTUlCIGZpbGVzIGNvcnJlY3RseSBpbgorICAgYWRkX21pYmRpcigpCiAKIDIwMDctMDgtMTYgMDk6MzUgIGR0czEyCiAKICAgICogYXBwcy9zbm1wdHJhcGQuYzoKLSAgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSDogMTc2NzcyNTogQ2xvc2UgYWxsIG5vbiBzdGFuZGFyZCBmaWxlCi0gICAgIGhhbmRsZXMKKworICAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSDogMTc2NzcyNTogQ2xvc2UgYWxsIG5vbiBzdGFuZGFyZCBmaWxlCisgICBoYW5kbGVzCiAKIDIwMDctMDgtMTYgMDk6MDAgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWUuYzoKLSAgICAgRGVjbGFyZSBpbml0aWFsaXNhdGlvbiByb3V0aW5lIGNvcnJlY3RseSwgYW5kIG9taXQgdW51c2VkCi0gICAgIHZhcmlhYmxlcy4KLSAgICAgUGF0Y2ggZnJvbSBNYWdudXMgRnJvbXJlaWRlLgorCisgICBEZWNsYXJlIGluaXRpYWxpc2F0aW9uIHJvdXRpbmUgY29ycmVjdGx5LCBhbmQgb21pdCB1bnVzZWQKKyAgIHZhcmlhYmxlcy4KKyAgIFBhdGNoIGZyb20gTWFnbnVzIEZyb21yZWlkZS4KIAogMjAwNy0wOC0xNiAwODo1NSAgZHRzMTIKIAogICAgKiBpbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg6Ci0gICAgIFJlYWQgaW4gYWdlbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyAqYmVmb3JlKiB0aGUgaGVhZGVyCi0gICAgIGZpbGVzIHRoYXQgbWlnaHQgcmVseSBvbiB0aGVtLgorCisgICBSZWFkIGluIGFnZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgKmJlZm9yZSogdGhlIGhlYWRlcgorICAgZmlsZXMgdGhhdCBtaWdodCByZWx5IG9uIHRoZW0uCisKKzIwMDctMDgtMDUgMTY6MTYgIGFsZXhfYgorCisgICAqIHdpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dCwgd2luMzIvZGlzdC9SRUFETUUudHh0OgorCisgICBDaGFuZ2Ugd2luMzIgYnVpbGQgcmVhZG1lIGZpbGVzIHRvIENSTEYuCisKKzIwMDctMDgtMDUgMTQ6MTYgIGFsZXhfYgorCisgICAqIHdpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dDoKKworICAgV2luMzI6IENoYW5nZSBidWlsZCBkb2NzIHRvIHVzZSBkeW5hbWljIChETEwpIGluc3RlYWQgb2Ygc3RhdGljLgogCiAyMDA3LTA4LTAyIDEzOjQ2ICBkdHMxMgogCiAgICAqIG1pYnMvTkVULVNOTVAtRVhBTVBMRVMtTUlCLnR4dDoKLSAgICAgSXQgbWlnaHQgYmUgc2xpZ2h0bHkgbGVzcyBjb25mdXNpbmcgaWYgdGhlIG5ldFNubXBFeGFtcGxlU3RyaW5nCi0gICAgIE1JQiBvYmplY3QgZGlkIGFjdHVhbGx5IHRha2Ugc3RyaW5nIHZhbHVlcy4gUGlja3ksIEkga25vdy4uLi4KIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgSXQgbWlnaHQgYmUgc2xpZ2h0bHkgbGVzcyBjb25mdXNpbmcgaWYgdGhlIG5ldFNubXBFeGFtcGxlU3RyaW5nCisgICBNSUIgb2JqZWN0IGRpZCBhY3R1YWxseSB0YWtlIHN0cmluZyB2YWx1ZXMuIFBpY2t5LCBJIGtub3cuLi4uCiAKLUNoYW5nZXM6IFY1LTQtcGF0Y2hlcyBicmFuY2ggY3JlYXRlZCAtPiBWNS40LjEKKzIwMDctMDctMjggMTM6MDIgIHJzdG9yeQogCi0yMDA3LTA3LTI3IDE3OjAyICBoYXJkYWtlcgorICAgKiBkaXN0L3N2bnVwOgogCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMSApCi0KLTIwMDctMDctMjcgMTc6MDEgIGhhcmRha2VyCi0KLSAgICogQ0hBTkdFUywgTkVXUzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0yNyAxNjo1OCAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHJlbW92ZSBib2d1cyBlbXB0eSAqIGxpbmVzIGZyb20gdGhlIENoYW5nZUxvZwotCi0yMDA3LTA3LTI3IDE2OjU0ICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgZml4IHZlcnNpb24gbnVtYmVycyBpbiBDaGFuZ2VMb2cKLQotMjAwNy0wNy0yNyAxNjo1NCAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDctMDctMjcgMTY6MTUgIGhhcmRha2VyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA3LTA3LTI3IDE2OjEzICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xICkKKyAgIGZpeCB0YWcgZXh0cmFjdGlvbjsgY2hlY2sgZm9yIGVtcHR5IHRhZyBlYXJsaWVyCiAKIDIwMDctMDctMjUgMjI6NDEgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYzoKLSAgICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTc2MDYzMzogZml4IHR5cG8gaW4gZGVidWcgbWVzc2FnZQogCi0yMDA3LTA3LTIyIDAwOjU1ICB0YW5kZXJzCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNzYwNjMzOiBmaXggdHlwbyBpbiBkZWJ1ZyBtZXNzYWdlCiAKLSAgICogTkVXUzoKLSAgICAgcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyeQotCi0yMDA3LTA3LTIyIDAwOjUyICB0YW5kZXJzCi0KLSAgICogTkVXUzoKLSAgICAgaW1wcm92ZSBORVdTIHNlY3Rpb24gZm9yIDUuNC4xCi0KLTIwMDctMDctMjEgMTY6MTcgIGhhcmRha2VyCi0KLSAgICogRkFRLCBSRUFETUUsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBkaXN0L25ldC1zbm1wLnNwZWMsCi0gICAgIHNlZHNjcmlwdC5pbiwgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnJjNCApCi0KLTIwMDctMDctMjEgMTY6MTYgIGhhcmRha2VyCi0KLSAgICogQ0hBTkdFUywgTkVXUzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0yMSAxNjoxMyAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDctMDctMjEgMTU6MDcgIGhhcmRha2VyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA3LTA3LTIxIDE1OjA2ICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnJjNCApCi0KLTIwMDctMDctMjEgMTQ6NTEgIGhhcmRha2VyCisyMDA3LTA3LTIxIDIxOjM2ICB0YW5kZXJzCiAKICAgICogc25tcGxpYi9zbm1wX2FwaS5jOgotICAgICBwYXRjaCB0byBmaXggZm9yd2FyZGluZyBlbmNvZGluZworCisgICBDSEFOR0VTOiBzbm1wbGliOiBmaXggZm9yd2FyZGluZyBlbmNvZGluZwogCiAyMDA3LTA3LTIwIDA4OjIxICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzoKLSAgICAgVHdlYWsgd2FybmluZyBtZXNzYWdlIGZvciAob2xkLXN0eWxlLCBpbnZhbGlkIGZvcm1hdCkgImV4ZWMgT0lEIgotICAgICBkaXJlY3RpdmVzLgogCi0yMDA3LTA3LTE5IDIxOjE2ICB0YW5kZXJzCi0KLSAgICogYWNsb2NhbC5tNCwgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViLCBjb25maWd1cmUsIGx0bWFpbi5zaDoKLSAgICAgTkVXUzogYnVpbGQ6IHVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNCAoZnJvbSAxLjUuMjIpCi0gICAgIENIQU5HRVM6IEhQLVVYOiBCVUc6IDE3NDIyNzg6IGNvbXBpbGUgZXJyb3Igb24gSFAtVVggMTEuMjMgKElBNjQpCi0KLTIwMDctMDctMTkgMjE6MDEgIGR0czEyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jLCBhZ2VudC9zbm1wZC5jOgotICAgICBDaGVjayBmb3IgcHJlc2VuY2Ugb2YgJ2Nob3duJyBhbmQgJ2xvY2FsdGltZV9yJyByb3V0aW5lcyBiZWZvcmUKLSAgICAgdXNpbmcgdGhlbS4KLQotMjAwNy0wNy0xOSAyMTowMCAgZHRzMTIKLQotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBDb25maWd1cmUgY2hlY2tzIGZvciAnY2hvd24nIGFuZCAnbG9jYWx0aW1lX3InIGZ1bmN0aW9ucwotCi0yMDA3LTA3LTE3IDAwOjIwICBoYXJkYWtlcgotCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5yYzMgKQotCi0yMDA3LTA3LTE3IDAwOjE5ICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0xNyAwMDoxNyAgaGFyZGFrZXIKLQotICAgKiBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLAotICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywKLSAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLAotICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywKLSAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsCi0gICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsCi0gICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLAotICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywKLSAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywKLSAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6Ci0gICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0KLTIwMDctMDctMTcgMDA6MTYgIGhhcmRha2VyCi0KLSAgICogZG94eWdlbi5jb25mOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucmMzICkKKyAgIFR3ZWFrIHdhcm5pbmcgbWVzc2FnZSBmb3IgKG9sZC1zdHlsZSwgaW52YWxpZCBmb3JtYXQpICJleGVjIE9JRCIKKyAgIGRpcmVjdGl2ZXMuCiAKIDIwMDctMDctMTYgMjM6NTkgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLAotICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgotICAgICBBcHBseSAoY29ycmVjdCkgcGF0Y2ggZnJvbSBNYXJjdXMgUnVlY2tlcnQgdG8gcmVtb3ZlIGFzc2VydHMKLSAgICAgdXNpbmcgc29ydC1vLWlsbGVnYWwgQyBzdHJpbmcgY29tcGFyZXMKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgorCisgICBBcHBseSAoY29ycmVjdCkgcGF0Y2ggZnJvbSBNYXJjdXMgUnVlY2tlcnQgdG8gcmVtb3ZlIGFzc2VydHMKKyAgIHVzaW5nIHNvcnQtby1pbGxlZ2FsIEMgc3RyaW5nIGNvbXBhcmVzCiAKIDIwMDctMDctMTYgMjM6NTkgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvYWdlbnRfcmVnaXN0cnkuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywKLSAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLAotICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgotICAgICBSZW1vdmUgcHJldmlvdXMgcGF0Y2ggd2hpY2ggd2FzIHRoZSB3cm9uZyB2ZXJzaW9uCisgICAqICBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pcC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCAgIAorICAgICAgc25tcGxpYi9kYXRhX2xpc3QuYzoKKworICAgUmVtb3ZlIHByZXZpb3VzIHBhdGNoIHdoaWNoIHdhcyB0aGUgd3JvbmcgdmVyc2lvbgogCiAyMDA3LTA3LTE2IDIzOjU3ICBoYXJkYWtlcgogCi0gICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jLAotICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsCi0gICAgIGFnZW50L21pYmdyb3VwL21pYklJL3RjcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS91ZHAuYywKLSAgICAgc25tcGxpYi9kYXRhX2xpc3QuYzoKLSAgICAgQXBwbHkgcGF0Y2ggZnJvbSBNYXJjdXMgUnVlY2tlcnQgdG8gcmVtb3ZlIGFzc2VydHMgdXNpbmcKLSAgICAgc29ydC1vLWlsbGVnYWwgQyBzdHJpbmcgY29tcGFyZXMKKyAgICogIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9jb21tb24uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmMsICAgCisgICAgICBzbm1wbGliL2RhdGFfbGlzdC5jOgorCisgICBBcHBseSBwYXRjaCBmcm9tIE1hcmN1cyBSdWVja2VydCB0byByZW1vdmUgYXNzZXJ0cyB1c2luZworICAgc29ydC1vLWlsbGVnYWwgQyBzdHJpbmcgY29tcGFyZXMKKworMjAwNy0wNy0xMyAxOToyNyAgaGFyZGFrZXIKKworICAgKiBkaXN0L21ha2VyZWxlYXNlOgorCisgICBnZW5lcmF0ZSB6aXAgZmlsZXMKIAogMjAwNy0wNy0xMiAyMTo1MSAgdGFuZGVycwogCiAgICAqIHBlcmwvYWdlbnQvYWdlbnQucG06Ci0gICAgIGZpeCBzdWJhZ2VudCBleGFtcGxlIChkb2N1bWVudGF0aW9uKQorCisgICBmaXggc3ViYWdlbnQgZXhhbXBsZSAoZG9jdW1lbnRhdGlvbikKIAogMjAwNy0wNy0xMiAyMToyNyAgdGFuZGVycwogCiAgICAqIG1hbi9zbm1wX3Nlc3NfYXBpLjMuZGVmOgotICAgICBzbm1wX3Nlc3NfcmVhZCByZXR1cm5zIGludCwgbm90IHZvaWQKIAotMjAwNy0wNy0wNyAwMDoxNyAgaGFyZGFrZXIKLQotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucmMyICkKLQotMjAwNy0wNy0wNyAwMDoxNyAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA3LTA3LTA3IDAwOjEzICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNy0wNyAwMDoxMSAgaGFyZGFrZXIKLQotICAgKiBtYW4vbmV0c25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zLAotICAgICBtYW4vbmV0c25tcF9hZ2VudF90cmFwLjMsIG1hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMywgbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMywgbWFuL25ldHNubXBfY2FsbGJhY2suMywKLSAgICAgbWFuL25ldHNubXBfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX2RhdGFfbGlzdC4zLAotICAgICBtYW4vbmV0c25tcF9kZWJ1Zy4zLCBtYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2hhbmRsZXIuMywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywKLSAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zLCBtYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMsCi0gICAgIG1hbi9uZXRzbm1wX211bHRpcGxleGVyLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9jb2x1bW5faW5mb190LjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX29pZF9zdGFzaC4zLCBtYW4vbmV0c25tcF9vbGRfYXBpLjMsCi0gICAgIG1hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMsIG1hbi9uZXRzbm1wX3JlYWRfb25seS4zLAotICAgICBtYW4vbmV0c25tcF9yb3dfbWVyZ2UuMywgbWFuL25ldHNubXBfc2NhbGFyLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cC4zLCBtYW4vbmV0c25tcF9zZXJpYWxpemUuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfbG9nZ2luZy4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX3BkdS4zLCBtYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMywKLSAgICAgbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMywgbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZS4zLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMsIG1hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zLCBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMsIG1hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMywgbWFuL25ldHNubXBfdGRhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdXRpbC4zLCBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywKLSAgICAgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zLCBtYW4vbmV0c25tcF93YXRjaGVyLjM6Ci0gICAgIGRvY3VtZW50YXRpb24gdXBkYXRlCi0KLTIwMDctMDctMDcgMDA6MTAgIGhhcmRha2VyCi0KLSAgICogZG94eWdlbi5jb25mOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucmMyICkKKyAgIHNubXBfc2Vzc19yZWFkIHJldHVybnMgaW50LCBub3Qgdm9pZAogCiAyMDA3LTA3LTA2IDIzOjM5ICBoYXJkYWtlcgogCiAgICAqIE1ha2VmaWxlLnJ1bGVzLCBNYWtlZmlsZS50b3A6Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiB1c2UgbGlidG9vbCBjbGVhbiBmb3IgcmVtb3ZpbmcgZmlsZXMgdG8gZW5zdXJlIHdlCi0gICAgIGRlbGV0ZSBhbGwgbGlidG9vbCB0ZW1wb3JhcnkgZmlsZXMuCisKKyAgIENIQU5HRVM6IGJ1aWxkOiB1c2UgbGlidG9vbCBjbGVhbiBmb3IgcmVtb3ZpbmcgZmlsZXMgdG8gZW5zdXJlIHdlCisgICBkZWxldGUgYWxsIGxpYnRvb2wgdGVtcG9yYXJ5IGZpbGVzLgorCisyMDA3LTA3LTA2IDIzOjM0ICBoYXJkYWtlcgorCisgICAqIGRpc3QvcGF0bWU6CisKKyAgIHVzZSBhIHJlY3Vyc2l2ZSByZXZlcnQgaW5zdGVhZCBvZiBybS91cGRhdGU7IHJlbW92ZSBkb3VibGUgLyBmcm9tCisgICBlZGl0aW5nIGNhbGxzCiAKIDIwMDctMDctMDYgMjE6MjIgIHJzdG9yeQogCiAgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKLSAgICAgc3RvcCBzZWFyY2hpbmcgcGF0aHMgd2hlbiBkb25lCisKKyAgIHN0b3Agc2VhcmNoaW5nIHBhdGhzIHdoZW4gZG9uZQogCiAyMDA3LTA3LTA2IDIxOjE0ICByc3RvcnkKIAogICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6Ci0gICAgIGRvIG5vdCBmcmVlIGludGVyZmFjZSBlbnRyeSBqdXN0IGJlY2F1c2Ugd2UgY2FuIG5vdCBnZXQgc3RhdHMgZm9yCi0gICAgIGl0CisKKyAgIGRvIG5vdCBmcmVlIGludGVyZmFjZSBlbnRyeSBqdXN0IGJlY2F1c2Ugd2UgY2FuIG5vdCBnZXQgc3RhdHMgZm9yCisgICBpdAogCiAyMDA3LTA3LTA2IDE1OjMyICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOgotICAgICBDSEFOR0VTOiBzbm1wZDogQlVHIDE3NDUxMTM6IEhhbmRsZSBzaW5nbGUtbGluZSAoYW5kIHplcm8tbGluZSkKLSAgICAgb3V0cHV0IGluIFVDRCBjb21wYXRhYmlsaXR5IG1vZGUuCisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUcgMTc0NTExMzogSGFuZGxlIHNpbmdsZS1saW5lIChhbmQgemVyby1saW5lKQorICAgb3V0cHV0IGluIFVDRCBjb21wYXRhYmlsaXR5IG1vZGUuCisKKzIwMDctMDctMDYgMDk6MDggIGR0czEyCisKKyAgICogIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBzbm1wbGliL3NubXBfY2xpZW50LmMsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBsaWJyYXJ5OiBQQVRDSCAxNzI4MjQ3OiBmcm9tIE1pdHN1cnUgQ2hpbmVuOiBjbGVhbnMgdXAKKyAgIHRoZSBpbnQ2NCB0eXBlIGNoZWNraW5nIGFuZCB1c2FnZSBmb3IgYnVpbGRpbmcgcGFja2V0cyBlc3BlY2lhbGx5CisgICB1bmRlciBNU1ZDLgogCiAyMDA3LTA3LTA1IDE0OjQ1ICByc3RvcnkKIAogICAgKiAuLCBSRUFETUUub3NYOgotICAgICByMjAwNDRAZGhjcDIxMTogcnN0b3J5IHwgMjAwNy0wNy0wNSAxMDo0NDowMSAtMDQwMAotICAgICByZW1vdmUgZGlzYWJsZS1zdGF0aWMgZnJvbSByZWNvbW1lbmRlZCBvcHRpb25zCisKKyAgIHIyMDA0NEBkaGNwMjExOiByc3RvcnkgfCAyMDA3LTA3LTA1IDEwOjQ0OjAxIC0wNDAwCisgICByZW1vdmUgZGlzYWJsZS1zdGF0aWMgZnJvbSByZWNvbW1lbmRlZCBvcHRpb25zCiAKIDIwMDctMDctMDUgMTE6MDUgIHJzdG9yeQogCiAgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYzoKLSAgICAgc2tpcCBzdGF0cyBwYXJzaW5nIG9uIGludGVyZmFjZXMgd2l0aCBubyBzdGF0aXN0aWNzCisKKyAgIHNraXAgc3RhdHMgcGFyc2luZyBvbiBpbnRlcmZhY2VzIHdpdGggbm8gc3RhdGlzdGljcworCisyMDA3LTA3LTA1IDExOjAxICByc3RvcnkKKworICAgKiBkaXN0L2NoZWNrLWFwaS1jaGFuZ2U6CisKKyAgIGNoZWNrIGZvciBkaXIgZXhpc3RlbmNlCiAKIDIwMDctMDctMDQgMjM6MjYgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogcGVybDogaW5zdGFsbCBlbWJlZGRlZCBwZXJsIGluaXQgZmlsZXMgZm9yCi0gICAgIHNubXBkL3NubXB0cmFwZCB3aXRoIG1vZGUgNjQ0IGluc3RlYWQgb2YgNzU1CisKKyAgIENIQU5HRVM6IHBlcmw6IGluc3RhbGwgZW1iZWRkZWQgcGVybCBpbml0IGZpbGVzIGZvcgorICAgc25tcGQvc25tcHRyYXBkIHdpdGggbW9kZSA2NDQgaW5zdGVhZCBvZiA3NTUKIAogMjAwNy0wNy0wNCAyMTo0MiAgdGFuZGVycwogCiAgICAqIFJFQURNRS5vc1g6Ci0gICAgIFBlcmwgcHJvYmxlbXMgKGJlbGlldmVkIHRvIGJlKSBmaXhlZAogCi0yMDA3LTA3LTAzIDIyOjM2ICBoYXJkYWtlcgotCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAotICAgICBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYywKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBDSEFOR0VTOiBsaWJyYXJ5OiBQYXRjaCBmcm9tICJNaXRzdXJ1IENoaW5lbiI6IGNsZWFucyB1cCB0aGUKLSAgICAgaW50NjQgdHlwZSBjaGVja2luZyBhbmQgdXNhZ2UgZm9yIGJ1aWxkaW5nIHBhY2tldHMgZXNwZWNpYWxseQotICAgICB1bmRlciBNU1ZDLgorICAgUGVybCBwcm9ibGVtcyAoYmVsaWV2ZWQgdG8gYmUpIGZpeGVkCiAKIDIwMDctMDctMDMgMTI6NTYgIHRhbmRlcnMKIAogICAgKiBwZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbToKLSAgICAgcmVtb3ZlIGV4ZWN1dGFibGUgZmxhZyBmcm9tIFNWTiBwcm9wZXJ0aWVzCisKKyAgIHJlbW92ZSBleGVjdXRhYmxlIGZsYWcgZnJvbSBTVk4gcHJvcGVydGllcworCisyMDA3LTA3LTAyIDA2OjUzICBtYWdmcgorCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHZhY20uYzoKKworICAgUmVtb3ZlIHVudXNlZCBvaWQgZGVjbGFyYXRpb25zCiAKIDIwMDctMDctMDIgMDY6MDIgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmM6Ci0gICAgIEFkZCBtaXNzaW5nIHJldHVybiB2YWx1ZSB0byBfbXRlRXZlbnRfZmlyZV9ub3RpZnkuCisKKyAgIEFkZCBtaXNzaW5nIHJldHVybiB2YWx1ZSB0byBfbXRlRXZlbnRfZmlyZV9ub3RpZnkuCiAKIDIwMDctMDctMDIgMDU6MzEgIG1hZ2ZyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbi5jOgotICAgICBSZW1vdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGFuIHVuZGVmaW5lZCBzdGF0aWMgZnVuY3Rpb24uCiAKLTIwMDctMDctMDEgMTk6NTkgIHRhbmRlcnMKKyAgIFJlbW92ZSB0aGUgZGVjbGFyYXRpb24gb2YgYW4gdW5kZWZpbmVkIHN0YXRpYyBmdW5jdGlvbi4KIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLSAgICAgbWlub3IgaGVscCB0ZXh0IGZvcm1hdHRpbmcgZml4CisyMDA3LTA3LTAxIDIwOjMyICB0YW5kZXJzCiAKLTIwMDctMDYtMzAgMDU6MzQgIHRhbmRlcnMKKyAgICogZGlzdC9uc2ItbmlnaHRseSwgZGlzdC9uc2ItcGFja2FnZToKIAotICAgKiBkaXN0L25ldC1zbm1wLnNwZWM6Ci0gICAgIGFkZCAtLWVuYWJsZS1hcy1uZWVkZWQgaWYgYnVpbGRpbmcgd2l0aCBlbWJlZGRlZCBQZXJsIHN1cHBvcnQKKyAgIG1ha2UgZ2V0b3B0cyB3b3JrIG9uIFRydTY0IGJ5IHJlc3Bhd25pbmcgaW4gUG9zaXggbW9kZQogCi0yMDA3LTA2LTMwIDA0OjM3ICBoYXJkYWtlcgorMjAwNy0wNy0wMSAxOTo1NiAgdGFuZGVycwogCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5yYzEgKQorICAgKiAgYWdlbnQvTWFrZWZpbGUuaW4sIGFwcHMvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgbmV0LXNubXAtY29uZmlnLmluOgogCi0yMDA3LTA2LTMwIDA0OjM3ICBoYXJkYWtlcgorICAgQ0hBTkdFUzogYnVpbGQ6IC0tZGlzYWJsZS1hcy1uZWVkZWQgbm93IGFsbG93cyB0byByZXZlcnQgdG8gdGhlCisgICBmb3JtZXIgZGVmYXVsdCBiZWhhdmlvdXIgb2YgbGlua2luZyBsaWJwZXJsIHRvIGFwcGxpY2F0aW9ucworICAgcmF0aGVyIHRoYW4gTmV0LVNOTVAgTGlicmFyaWVzIChpbiBjYXNlIG9mIGFueSBwcm9ibGVtcykKIAotICAgKiBDSEFOR0VTLCBORVdTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQorMjAwNy0wNi0zMCAwNjoxNyAgaGFyZGFrZXIKIAotMjAwNy0wNi0zMCAwNDozNiAgaGFyZGFrZXIKKyAgICogZGlzdC9tYWtlcmVsZWFzZToKIAotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICBhY3R1YWxseSBjYWxsIHJlbW92ZWZpbGVzCiAKLTIwMDctMDYtMzAgMDQ6MzQgIGhhcmRha2VyCisyMDA3LTA2LTI4IDIzOjUwICBtYWdmcgogCi0gICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCi0gICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKLSAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAotICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywKLSAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAotICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywKLSAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKLSAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywKLSAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAotICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLAotICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKLSAgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaDoKIAotMjAwNy0wNi0zMCAwNDozMiAgaGFyZGFrZXIKKyAgIE5FV1M6IHNubXBsaWI6IEFkZGVkIEdDQyBmb3JtYXQgY2hlY2tpbmcgYXR0cmlidXRlcyB0byB0aGUgZGVidWcKKyAgIGZ1bmN0aW9ucy4KIAotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5yYzEgKQorMjAwNy0wNi0yOCAyMzozNyAgbWFnZnIKIAotMjAwNy0wNi0yOSAyMjoxOCAgdGFuZGVycworICAgKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suYywgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYzoKIAotICAgKiBSRUFETUUuYWl4LCBSRUFETUUuaXJpeCwgUkVBRE1FLnNvbGFyaXMsIGFnZW50L01ha2VmaWxlLmluLAotICAgICBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgbmV0LXNubXAtY29uZmlnLmluOgotICAgICBORVdTOiBwZXJsOiBCVUc6IDE2MTk4Mjc6IGxpbmsgbGlibmV0c25tcGFnZW50L2xpYm5ldHNubXB0cmFwZAotICAgICAocmF0aGVyIHRoYW4gc25tcGQvc25tcHRyYXBkKSBhZ2FpbnN0IGxpYnBlcmwgd2hlbiBjb25maWd1cmVkCi0gICAgIHdpdGggLS1lbmFibGUtYXMtbmVlZGVkCisgICBSZW1vdmUgY2FzdHMgb2YgdW51c2VkIHZhbHVlcworCisyMDA3LTA2LTI4IDIzOjM2ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgorCisgICBSZW1vdmUgdW51c2VkIHZhcmlhYmxlcwogCiAyMDA3LTA2LTI4IDIyOjA5ICB0YW5kZXJzCiAKICAgICogbmV0LXNubXAtY29uZmlnLmluOgotICAgICByZW5hbWUgbGFzdCBvY2N1cmVuY2Ugb2YgREVGQVVMVF9NSUJbRElSXVMgdG8KLSAgICAgTkVUU05NUF9ERUZBVUxUX01JQltESVJdUworCisgICByZW5hbWUgbGFzdCBvY2N1cmVuY2Ugb2YgREVGQVVMVF9NSUJbRElSXVMgdG8KKyAgIE5FVFNOTVBfREVGQVVMVF9NSUJbRElSXVMKKworMjAwNy0wNi0yOCAwODoxNSAgbWFnZnIKKworICAgKiBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBEbyBub3QgdHJhbnNmb3JtIHRoZSBpZ25vcmVkIHJlc3VsdCBvZiByZWFsbG9jX2Zvcm1hdF90cmFwCiAKIDIwMDctMDYtMjYgMjI6MTIgIHRhbmRlcnMKIAogICAgKiBhcHBzL01ha2VmaWxlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogd29yayBhcm91bmQgbGlibmV0c25tcGFnZW50L2xpYm5ldHNubXBoZWxwZXJzCi0gICAgIGRlcGVuZGVuY3kgaXNzdWVzIHdoZW4gbGlua2luZyBzbm1wdHJhcGQKKworICAgQ0hBTkdFUzogYnVpbGQ6IHdvcmsgYXJvdW5kIGxpYm5ldHNubXBhZ2VudC9saWJuZXRzbm1waGVscGVycworICAgZGVwZW5kZW5jeSBpc3N1ZXMgd2hlbiBsaW5raW5nIHNubXB0cmFwZAogCiAyMDA3LTA2LTI2IDIxOjQ1ICB0YW5kZXJzCiAKICAgICogYWdlbnQvTWFrZWZpbGUuaW4sIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiB1c2UgTERGTEFHUyB3aGVuIGJ1aWxkaW5nIGFnZW50LCBoZWxwZXJzIGFuZCBtaWIKLSAgICAgbGliIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBsaWJuZXRubXAKKworICAgQ0hBTkdFUzogYnVpbGQ6IHVzZSBMREZMQUdTIHdoZW4gYnVpbGRpbmcgYWdlbnQsIGhlbHBlcnMgYW5kIG1pYgorICAgbGliIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCBsaWJuZXRubXAKIAogMjAwNy0wNi0yNiAyMToyOCAgdGFuZGVycwogCiAgICAqIElOU1RBTEw6Ci0gICAgIG1pbm9yIHVwZGF0ZXMKKworICAgbWlub3IgdXBkYXRlcworCisyMDA3LTA2LTI2IDE1OjEwICByc3RvcnkKKworICAgKiBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBkb24ndCBpbml0aWFsaXplIHZhciBpbiBleHRlcm4gZGVjbDsgaW5zdGVhZCwgaW5pdGlhbGl6ZSBhY3R1YWwKKyAgIHZhcgorCisyMDA3LTA2LTI1IDIxOjI5ICB0YW5kZXJzCisKKyAgICogYWNsb2NhbC5tNCwgY29uZmlnLmd1ZXNzLCBjb25maWcuc3ViLCBjb25maWd1cmUsIGx0bWFpbi5zaDoKKworICAgTkVXUzogYnVpbGQ6IHVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNCAoZnJvbSAxLjUuMjIpCiAKIDIwMDctMDYtMjQgMTI6NTcgIHRhbmRlcnMKIAotICAgKiBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKLSAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKLSAgICAgSEFWRV9TU0laRV9UIGNsZWFudXAKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgSEFWRV9TU0laRV9UIGNsZWFudXAKIAogMjAwNy0wNi0yMyAyMjo1NiAgdGFuZGVycwogCiAgICAqIFJFQURNRS5ocHV4MTE6Ci0gICAgIGRvbid0IHN1Z2dlc3QgLS13aXRoLWxpYnM9LWxubQogCi0yMDA3LTA2LTIyIDE1OjA5ICBkdHMxMgorICAgZG9uJ3Qgc3VnZ2VzdCAtLXdpdGgtbGlicz0tbG5tCiAKLSAgICogd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcCwKLSAgICAgd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwLCB3aW4zMi9saWJoZWxwZXJzL2xpYmhlbHBlcnMuZHNwLAotICAgICB3aW4zMi9saWJuZXRzbm1wdHJhcGQvbGlibmV0c25tcHRyYXBkLmRzcCwgd2luMzIvbGlic2RsbC5kc3csCi0gICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC5kc3AsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwKLSAgICAgd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwLAotICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3AsCi0gICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCwKLSAgICAgd2luMzIvc25tcGJ1bGt3YWxrL3NubXBidWxrd2Fsay5kc3AsIHdpbjMyL3NubXBkL3NubXBkLmRzcCwKLSAgICAgd2luMzIvc25tcGRlbHRhL3NubXBkZWx0YS5kc3AsIHdpbjMyL3NubXBkZi9zbm1wZGYuZHNwLAotICAgICB3aW4zMi9zbm1wZHNkay9zbm1wZC5kc3AsIHdpbjMyL3NubXBnZXQvc25tcGdldC5kc3AsCi0gICAgIHdpbjMyL3NubXBnZXRuZXh0L3NubXBnZXRuZXh0LmRzcCwKLSAgICAgd2luMzIvc25tcG5ldHN0YXQvc25tcG5ldHN0YXQuZHNwLCB3aW4zMi9zbm1wc2V0L3NubXBzZXQuZHNwLAotICAgICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwLCB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcCwKLSAgICAgd2luMzIvc25tcHRlc3Qvc25tcHRlc3QuZHNwLAotICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlL3NubXB0cmFuc2xhdGUuZHNwLAotICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AsIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwLAotICAgICB3aW4zMi9zbm1wdXNtL3NubXB1c20uZHNwLCB3aW4zMi9zbm1wdmFjbS9zbm1wdmFjbS5kc3AsCi0gICAgIHdpbjMyL3NubXB3YWxrL3NubXB3YWxrLmRzcCwgd2luMzIvd2luMzIuZHN3LCB3aW4zMi93aW4zMnNkay5kc3c6Ci0gICAgIEVuZm9yY2UgRE9TLXN0eWxlIGxpbmUgZW5kaW5ncywgdG8ga2VlcCBWaXN1YWwgU3R1ZGlvIGhhcHB5LgorMjAwNy0wNi0yMiAxNTowNSAgZHRzMTIKKworICAgKiAgd2luMzIvZW5jb2RlX2tleWNoYW5nZS9lbmNvZGVfa2V5Y2hhbmdlLmRzcCwgICAKKyAgICAgIHdpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcCwgd2luMzIvbGliaGVscGVycy9saWJoZWxwZXJzLmRzcCwgICAKKyAgICAgIHdpbjMyL2xpYm5ldHNubXB0cmFwZC9saWJuZXRzbm1wdHJhcGQuZHNwLCB3aW4zMi9saWJzZGxsLmRzdywgICAKKyAgICAgIHdpbjMyL2xpYnNubXAvbGlic25tcC5kc3AsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcCwgICAKKyAgICAgIHdpbjMyL25ldHNubXBtaWJzc2RrL25ldHNubXBtaWJzc2RrLmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrZ2V0L3NubXBidWxrZ2V0LmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXBidWxrd2Fsay9zbm1wYnVsa3dhbGsuZHNwLCB3aW4zMi9zbm1wZC9zbm1wZC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvc25tcGRlbHRhLmRzcCwgd2luMzIvc25tcGRmL3NubXBkZi5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wZHNkay9zbm1wZC5kc3AsIHdpbjMyL3NubXBnZXQvc25tcGdldC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC9zbm1wZ2V0bmV4dC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wbmV0c3RhdC9zbm1wbmV0c3RhdC5kc3AsIHdpbjMyL3NubXBzZXQvc25tcHNldC5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wc3RhdHVzL3NubXBzdGF0dXMuZHNwLCB3aW4zMi9zbm1wdGFibGUvc25tcHRhYmxlLmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXB0ZXN0L3NubXB0ZXN0LmRzcCwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvc25tcHRyYW5zbGF0ZS5kc3AsICAgCisgICAgICB3aW4zMi9zbm1wdHJhcC9zbm1wdHJhcC5kc3AsIHdpbjMyL3NubXB0cmFwZC9zbm1wdHJhcGQuZHNwLCAgIAorICAgICAgd2luMzIvc25tcHVzbS9zbm1wdXNtLmRzcCwgd2luMzIvc25tcHZhY20vc25tcHZhY20uZHNwLCAgIAorICAgICAgd2luMzIvc25tcHdhbGsvc25tcHdhbGsuZHNwLCB3aW4zMi93aW4zMi5kc3csIHdpbjMyL3dpbjMyc2RrLmRzdzoKKworICAgRW5mb3JjZSBET1Mtc3R5bGUgbGluZSBlbmRpbmdzLCB0byBrZWVwIFZpc3VhbCBTdHVkaW8gaGFwcHkuCisKKzIwMDctMDYtMjEgMTQ6MDEgIHJzdG9yeQorCisgICAqICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmg6CisKKyAgIGRlZmF1bHQgdG8gdXNpbmcgaWZUYWJsZSByZXdyaXRlcwogCiAyMDA3LTA2LTIwIDIxOjM0ICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKLSAgICAgZml4IHR5cG8KKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfb3BlbmJzZC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKKworICAgZml4IHR5cG8KIAogMjAwNy0wNi0xOSAyMjoyMyAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBmaXggUGVybC1yZWxhdGVkIGF1dG9jb25mIG1lc3NhZ2VzCisKKyAgIGZpeCBQZXJsLXJlbGF0ZWQgYXV0b2NvbmYgbWVzc2FnZXMKIAogMjAwNy0wNi0xOSAxNTowOCAgdGFuZGVycwogCiAgICAqIGRpc3QvbmV0LXNubXAuc3BlYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IGFkZCAiQnVpbGRSZXF1aXJlczogcGVybC1FeHRVdGlscy1FbWJlZCIgdG8gdGhlCi0gICAgIHNwZWMgZmlsZSwgZS5nLiBmb3IgRmVkb3JhIDcKKworICAgQ0hBTkdFUzogYnVpbGQ6IGFkZCAiQnVpbGRSZXF1aXJlczogcGVybC1FeHRVdGlscy1FbWJlZCIgdG8gdGhlCisgICBzcGVjIGZpbGUsIGUuZy4gZm9yIEZlZG9yYSA3CiAKIDIwMDctMDYtMTggMjI6MjggIGhhcmRha2VyCiAKICAgICogcGVybC9TTk1QL1NOTVAueHM6Ci0gICAgIGZpeCBicm9rZW4gY29tbWVudC4KIAotMjAwNy0wNi0xOCAyMjowNCAgaGFyZGFrZXIKLQotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jOgotICAgICAtIHZlcnNpb24gdGFnICggNS40LjEucHJlMyApCi0KLTIwMDctMDYtMTggMjI6MDMgIGhhcmRha2VyCi0KLSAgICogQ0hBTkdFUywgTkVXUzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNi0xOCAyMTo1NyAgaGFyZGFrZXIKLQotICAgKiBDaGFuZ2VMb2c6Ci0gICAgIHZlcnNpb24gdXBkYXRlCisgICBmaXggYnJva2VuIGNvbW1lbnQuCiAKIDIwMDctMDYtMTggMjE6NTQgIGhhcmRha2VyCiAKICAgICogYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbjoKLSAgICAgcmV2ZXJ0IGRvdWJsZSBsaW5raW5nIG9mIGxpYm5ldHNtbnAgcGFydCBvZiBwYXRjaCB0aGF0IHdhcwotICAgICBzdXBwb3NlZCB0byBiZSBwdWxsZWQgYm9mZXIgYXBwbHlpbmcgaW4gcjE2NTM4ICh0aGFua3MgdGFuZGVycwotICAgICBmb3IgY2F0Y2hpbmcgaXQpCiAKLTIwMDctMDYtMTggMjE6NDggIGhhcmRha2VyCi0KLSAgICogYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kOgotICAgICBtYWtlIGRlcGVuZAotCi0yMDA3LTA2LTE4IDIxOjQ3ICBoYXJkYWtlcgotCi0gICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCi0gICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKLSAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAotICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywKLSAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAotICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywKLSAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKLSAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywKLSAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAotICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLAotICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKLSAgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLQotMjAwNy0wNi0xOCAyMTo0NiAgaGFyZGFrZXIKLQotICAgKiBkb3h5Z2VuLmNvbmY6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5wcmUzICkKKyAgIHJldmVydCBkb3VibGUgbGlua2luZyBvZiBsaWJuZXRzbW5wIHBhcnQgb2YgcGF0Y2ggdGhhdCB3YXMKKyAgIHN1cHBvc2VkIHRvIGJlIHB1bGxlZCBib2ZlciBhcHBseWluZyBpbiByMTY1MzggKHRoYW5rcyB0YW5kZXJzCisgICBmb3IgY2F0Y2hpbmcgaXQpCiAKIDIwMDctMDYtMTggMjE6MzQgIGhhcmRha2VyCiAKICAgICogYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgc25tcGxpYi9NYWtlZmlsZS5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IHBhdGNoIGZyb20gYXBwbGUgdG8gc2ltcGxpZnkgbWFrZWZpbGUgdGFyZ2V0Ci0gICAgIHJlZmVyZW5jZXMgaW4gc29tZSBydWxlcy4KKworICAgQ0hBTkdFUzogYnVpbGQ6IHBhdGNoIGZyb20gYXBwbGUgdG8gc2ltcGxpZnkgbWFrZWZpbGUgdGFyZ2V0CisgICByZWZlcmVuY2VzIGluIHNvbWUgcnVsZXMuCiAKIDIwMDctMDYtMTggMjE6MTcgIGhhcmRha2VyCiAKICAgICogbWFuL3NubXBfY29uZmlnLjUuZGVmLCBtYW4vc25tcGdldC4xLmRlZjoKLSAgICAgQ0hBTkdFUzogcGF0Y2ggZnJvbSBhcHBsZSB0byBmaXggbWlub3IgZG9jdW1lbnRhdGlvbiBidWdzLgorCisgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGZpeCBtaW5vciBkb2N1bWVudGF0aW9uIGJ1Z3MuCiAKIDIwMDctMDYtMTggMjE6MTMgIGhhcmRha2VyCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLAotICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45Lmg6Ci0gICAgIAorICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oOgorCisgICAKIAogMjAwNy0wNi0xOCAyMToxMiAgaGFyZGFrZXIKIAogICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X2Rhcndpbi5jOgotICAgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGltcHJvdmUgbWVtb3J5IHJlcG9ydGluZworCisgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGltcHJvdmUgbWVtb3J5IHJlcG9ydGluZwogCiAyMDA3LTA2LTE4IDIxOjA5ICBoYXJkYWtlcgogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaDoKLSAgICAgQ0hBTkdFUzogcGF0Y2ggZnJvbSBhcHBsZSB0byBmaXggY3Jvc3MtY29tcGlsZSBidWlsZHMgaW4gYXBwbGVzCi0gICAgIGJ1aWxkIGVudmlyb25tZW50LgorCisgICBDSEFOR0VTOiBwYXRjaCBmcm9tIGFwcGxlIHRvIGZpeCBjcm9zcy1jb21waWxlIGJ1aWxkcyBpbiBhcHBsZXMKKyAgIGJ1aWxkIGVudmlyb25tZW50LgogCiAyMDA3LTA2LTE4IDIwOjU0ICBoYXJkYWtlcgogCiAgICAqIHNubXBsaWIvc25tcF9wYXJzZV9hcmdzLmM6Ci0gICAgIENIQU5HRVM6IHBhdGNoOiAxNzM3MDg1OiBmcm9tIGpzYWZyYW5lazogZml4IHRoZSAtTSBzd2l0Y2ggZm9yCi0gICAgIG1pYiBwYXJzaW5nIGJ5IGxvYWRpbmcgZGVmYXVsdHMgZmlyc3QgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIHNldAotICAgICBzbyBpdCBkb2VzIG5vdCBnZXQgb3ZlcndyaXR0ZW4gYnkgdGhlIGRlZmF1bHRzIGxhdGVyLgorCisgICBDSEFOR0VTOiBwYXRjaDogMTczNzA4NTogZnJvbSBqc2FmcmFuZWs6IGZpeCB0aGUgLU0gc3dpdGNoIGZvcgorICAgbWliIHBhcnNpbmcgYnkgbG9hZGluZyBkZWZhdWx0cyBmaXJzdCBiZWZvcmUgcGVyZm9ybWluZyB0aGUgc2V0CisgICBzbyBpdCBkb2VzIG5vdCBnZXQgb3ZlcndyaXR0ZW4gYnkgdGhlIGRlZmF1bHRzIGxhdGVyLgogCiAyMDA3LTA2LTE4IDIwOjUwICBoYXJkYWtlcgogCiAgICAqIHBlcmwvU05NUC9TTk1QLnhzOgotICAgICBORVdTOiBwZXJsOiBwYXRjaDogMTcyNTA0OTogZml4IGJ1bGt3YWxrIGluIGNhc2VzIG9mIG5vbi1yZXBlYXRlcgotICAgICB1c2FnZS4KKworICAgTkVXUzogcGVybDogcGF0Y2g6IDE3MjUwNDk6IGZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIKKyAgIHVzYWdlLgogCiAyMDA3LTA2LTE4IDE0OjEwICB0YW5kZXJzCiAKICAgICogcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEw6Ci0gICAgIENIQU5HRVM6IHBlcmw6IGZpeCBwcmVyZXF1aXNpdGVzIGZvciBOZXRTTk1QOjpUcmFwUmVjZWl2ZXIKKworICAgQ0hBTkdFUzogcGVybDogZml4IHByZXJlcXVpc2l0ZXMgZm9yIE5ldFNOTVA6OlRyYXBSZWNlaXZlcgogCiAyMDA3LTA2LTE4IDEzOjM5ICB0YW5kZXJzCiAKICAgICogcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG06Ci0gICAgIENIQU5HRVM6IHBlcmw6IGZpeCBzeW50YXggZXJyb3IgaW4gTmV0U05NUDo6YWdlbnQ6OlN1cHBvcnQKKworICAgQ0hBTkdFUzogcGVybDogZml4IHN5bnRheCBlcnJvciBpbiBOZXRTTk1QOjphZ2VudDo6U3VwcG9ydAorCisyMDA3LTA2LTE2IDIzOjAxICB0YW5kZXJzCisKKyAgICogIGFnZW50L01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgTkVXUzogcGVybDogQlVHOiAxNjE5ODI3OiBsaW5rIGxpYm5ldHNubXBhZ2VudC9saWJuZXRzbm1wdHJhcGQKKyAgIChyYXRoZXIgdGhhbiBzbm1wZC9zbm1wdHJhcGQpIGFnYWluc3QgbGlicGVybC4KIAogMjAwNy0wNi0xNCAxNTo0MSAgcnN0b3J5CiAKICAgICogbG9jYWwvbWliMmMuY29uZjoKLSAgICAgZml4IHR5cG8gaW4gdXNlciBvdXRwdXQsIGFzIG5vdGVkIG9uIGNvZGVycworCisgICBmaXggdHlwbyBpbiB1c2VyIG91dHB1dCwgYXMgbm90ZWQgb24gY29kZXJzCisKKzIwMDctMDYtMTQgMTU6MzYgIHJzdG9yeQorCisgICAqIGRpc3QvY3Zzc2hvdzoKKworICAgdXNlICdzdm4gaW5mbycgdG8gcXVlcnkgZm9yIHVybAogCiAyMDA3LTA2LTE0IDA0OjM3ICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5oOgotICAgICBBZGQgbWlzc2luZyBhcmd1bWVudCB0eXBlIGluIG9yZGVyIHRvIHNpbGVuY2UgYSBnY2Mgd2FybmluZworCisgICBBZGQgbWlzc2luZyBhcmd1bWVudCB0eXBlIGluIG9yZGVyIHRvIHNpbGVuY2UgYSBnY2Mgd2FybmluZworCisyMDA3LTA2LTEzIDA2OjM3ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBEbyBub3QgdHJ5IHRvIGJlIGNsZXZlciBpbiB0aGUgaGFuZGluZyBvZiAtbGt2bSBpbiBMQUdFTlRMSUJTLgorICAgSW5jbHVkZSBpdCBpZiBhbnkgc291Z2h0IGZ1bmN0aW9uIGlzIGluIGl0LgogCiAyMDA3LTA2LTExIDEwOjExICB0YW5kZXJzCiAKICAgICogUkVBRE1FLmFpeDoKLSAgICAgZG9jdW1lbnQgeGxjPC0+Y2NfciBjb21waWxlciBpc3N1ZXMgd2l0aCBQZXJsIG9uIEFJWCAoc2VlIGJ1ZwotICAgICAjMTYwMDA5OSkKKworICAgZG9jdW1lbnQgeGxjPC0+Y2NfciBjb21waWxlciBpc3N1ZXMgd2l0aCBQZXJsIG9uIEFJWCAoc2VlIGJ1ZworICAgIzE2MDAwOTkpCiAKIDIwMDctMDYtMTAgMjI6MjkgIHRhbmRlcnMKIAotICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKLSAgICAgaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oOgotICAgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE3MjgyNDc6IGZyb20gbWl0c3VydV9jaGluZW46IEFkZCB0eXBlCi0gICAgIGNoZWNrIGZvciBpbnQ/P190IGFuZCB1aW50Pz9fdAorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3R5cGVzLmg6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODI0NzogZnJvbSBtaXRzdXJ1X2NoaW5lbjogQWRkIHR5cGUKKyAgIGNoZWNrIGZvciBpbnQ/P190IGFuZCB1aW50Pz9fdAogCiAyMDA3LTA2LTEwIDIyOjIyICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sCi0gICAgIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjQ0OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBBZGQKLSAgICAgY29uZmlndXJlIGNoZWNrIGZvciBzaW42X3Njb3BlX2lkCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKKworICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjQ0OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBBZGQKKyAgIGNvbmZpZ3VyZSBjaGVjayBmb3Igc2luNl9zY29wZV9pZAogCiAyMDA3LTA2LTEwIDIyOjE1ICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sCi0gICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jOgotICAgICBDSEFOR0VTOiBQQVRDSDogMTcyODI0MTogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkIGNvbmZpZ3VyZSBjaGVjawotICAgICBmb3IgPHN5cy91aW8uaD4gKG1ha2Ugc3VyZSBpb3Ygc3RydWN0dXJlIGlzIGRlY2xhcmVkKQorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE3MjgyNDE6IGZyb20gbWl0c3VydV9jaGluZW46IGFkZCBjb25maWd1cmUgY2hlY2sKKyAgIGZvciA8c3lzL3Vpby5oPiAobWFrZSBzdXJlIGlvdiBzdHJ1Y3R1cmUgaXMgZGVjbGFyZWQpCisKKzIwMDctMDYtMTAgMDY6MzMgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgVXNlIE5FVFNOTVBfU0VBUkNIX0xJQlMgdG8gc2ltcGxpZnkgc2VhcmNoaW5nIGZvciBzeXN0ZW0gc3BlY2lmaWMKKyAgIGxpYnJhcmllcworCisyMDA3LTA2LTEwIDA2OjI2ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBVc2UgTkVUU05NUF9TRUFSQ0hfTElCUyB0byBzaW1wbGlmeSBzZWFyY2hpbmcgZm9yIC1sc2Vuc29ycworCisyMDA3LTA2LTEwIDA2OjE4ICBtYWdmcgorCisgICAqICBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxkZXZzdGF0CisKKzIwMDctMDYtMTAgMDY6MTMgIG1hZ2ZyCisKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxkbAorCisyMDA3LTA2LTA5IDA4OjU4ICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL2NvbmZpZy5oLmJvcmxhbmQsIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxrdm0KIAogMjAwNy0wNi0wOCAyMDozMiAgdGFuZGVycwogCi0gICAqIE1ha2VmaWxlLmluOgotICAgICBGaXggcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IHIxNjQ3OTogJ21ha2UgdGVzdCBURVNUT1BUUz0iLVQKLSAgICAgdGNwIicgbm93Ci0gICAgIHdvcmtzIGFnYWluLiBtYWtlcmVsZWFzZSBub3cgdXNlcyB0aGUgcmlnaHQgb3B0aW9uLgorICAgKiBNYWtlZmlsZS5pbiwgZGlzdC9tYWtlcmVsZWFzZToKKworICAgRml4IHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBieSByMTY0Nzk6ICdtYWtlIHRlc3QgVEVTVE9QVFM9Ii1UCisgICB0Y3AiJyBub3cKKyAgIHdvcmtzIGFnYWluLiBtYWtlcmVsZWFzZSBub3cgdXNlcyB0aGUgcmlnaHQgb3B0aW9uLgorCisyMDA3LTA2LTA4IDEwOjQ2ICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIENIQU5HRVM6IHNubXB0cmFwZDogRkVBVFVSRTogNzQxMzc1OiBFeHRlbmQgLUYgZmxhZyB0byBjb3ZlcgorICAgc3lzbG9nL2V4ZWN1dGUgZm9ybWF0IHN0cmluZ3MuCiAKIDIwMDctMDYtMDggMTA6NDQgIGR0czEyCiAKLSAgICogYXBwcy9zbm1wdHJhcGQuYywgYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKLSAgICAgSW1wcm92ZSBtZW1vcnkgaGFuZGxpbmcgb2Ygc3R5bGUtc3BlY2lmaWMgZm9ybWF0IHN0cmluZ3MuCisgICAqIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIEltcHJvdmUgbWVtb3J5IGhhbmRsaW5nIG9mIHN0eWxlLXNwZWNpZmljIGZvcm1hdCBzdHJpbmdzLgogCiAyMDA3LTA2LTA4IDEwOjMzICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgotICAgICBEZWZhdWx0IHRvIHJlcG9ydGluZyBORlMgbW91bnRzIGFzIE5ldHdvcmtEaXNrLgorCisgICBEZWZhdWx0IHRvIHJlcG9ydGluZyBORlMgbW91bnRzIGFzIE5ldHdvcmtEaXNrLgorCisyMDA3LTA2LTA4IDA2OjAyICBtYWdmcgorCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxycG0gYW5kCisgICB0aGluZ3MgaXQgZGVwZW5kcworICAgb24KKworMjAwNy0wNi0wOCAwNTo1OSAgbWFnZnIKKworICAgKiBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOgorCisgICBBZGQgbWlzc2luZyBcCisKKzIwMDctMDYtMDggMDU6MzEgIG1hZ2ZyCisKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIFVzZSBORVRTTk1QX1NFQVJDSF9MSUJTIHRvIHNpbXBsaWZ5IHNlYXJjaGluZyBmb3IgLWxrc3RhdAorCisyMDA3LTA2LTA4IDA1OjI4ICBtYWdmcgorCisgICAqIGFjaW5jbHVkZS5tNDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEFkZCBhIHZhcmlhdGlvbiBvZiBBQ19TRUFSQ0hfTElCUyB3aGVyZSB0aGUKKyAgIHJlc3VsdCB2YXJpYWJsZSBpcyBzZXR0YWJsZS4KIAogMjAwNy0wNi0wOCAwNToxNiAgbWFnZnIKIAotICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAotICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0gICAgIFJlbW92ZSB0aGUgdW51c2VkIHVuZGVmIEhBVkVfUEVSTF9FVkFMX1BWLgotICAgICBUaGUgUGVybF9ldmFsX3B2IGZ1bmN0aW9ucyBhcmUgaGFuZGxlZCBieSB0aGUKLSAgICAgSEFWRV9QRVJMX0VWQUxfUFZfW1VMXUMgZGVmaW5lcywKLSAgICAgdGhpcyBvbmUgaXMgbmV2ZXIgc2V0IGJ5IG91ciBjb25maWd1cmUgc2NyaXB0LgorICAgKiAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgUmVtb3ZlIHRoZSB1bnVzZWQgdW5kZWYgSEFWRV9QRVJMX0VWQUxfUFYuCisgICBUaGUgUGVybF9ldmFsX3B2IGZ1bmN0aW9ucyBhcmUgaGFuZGxlZCBieSB0aGUKKyAgIEhBVkVfUEVSTF9FVkFMX1BWX1tVTF1DIGRlZmluZXMsCisgICB0aGlzIG9uZSBpcyBuZXZlciBzZXQgYnkgb3VyIGNvbmZpZ3VyZSBzY3JpcHQuCiAKIDIwMDctMDYtMDcgMTY6MDIgIGR0czEyCiAKLSAgICogLmN2c2lnbm9yZSwgYWdlbnQvLmN2c2lnbm9yZSwgYWdlbnQvaGVscGVycy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC8uY3ZzaWdub3JlLCBhZ2VudC9taWJncm91cC9SbW9uLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2FnZW50Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9leGFtcGxlcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2hvc3QvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvaXBmd2NoYWlucy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9taWJJSS8uY3ZzaWdub3JlLCBhZ2VudC9taWJncm91cC9taXNjLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC9zbXV4Ly5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlLy5jdnNpZ25vcmUsCi0gICAgIGFnZW50L21pYmdyb3VwL3NubXB2My8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC90YXJnZXQvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLAotICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvLmN2c2lnbm9yZSwKLSAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzLy5jdnNpZ25vcmUsIGFwcHMvLmN2c2lnbm9yZSwKLSAgICAgYXBwcy9zbm1wbmV0c3RhdC8uY3ZzaWdub3JlLCBkaXN0Ly5jdnNpZ25vcmUsCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvLmN2c2lnbm9yZSwgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8uY3ZzaWdub3JlLAotICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvLmN2c2lnbm9yZSwgaW5jbHVkZS91Y2Qtc25tcC8uY3ZzaWdub3JlLAotICAgICBsb2NhbC8uY3ZzaWdub3JlLCBtYW4vLmN2c2lnbm9yZSwgbWlicy8uY3ZzaWdub3JlLCBvdi8uY3ZzaWdub3JlLAotICAgICBwZXJsLy5jdnNpZ25vcmUsIHBlcmwvQVNOLy5jdnNpZ25vcmUsCi0gICAgIHBlcmwvQW55RGF0YV9TTk1QLy5jdnNpZ25vcmUsIHBlcmwvT0lELy5jdnNpZ25vcmUsCi0gICAgIHBlcmwvU05NUC8uY3ZzaWdub3JlLCBwZXJsL1NOTVAvdC8uY3ZzaWdub3JlLAotICAgICBwZXJsL1RyYXBSZWNlaXZlci8uY3ZzaWdub3JlLCBwZXJsL2FnZW50Ly5jdnNpZ25vcmUsCi0gICAgIHBlcmwvYWdlbnQvU3VwcG9ydC8uY3ZzaWdub3JlLAotICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvLmN2c2lnbm9yZSwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlLy5jdnNpZ25vcmUsIHBlcmwvbWFuYWdlci8uY3ZzaWdub3JlLAotICAgICBzbm1wbGliLy5jdnNpZ25vcmUsIHRlc3RpbmcvLmN2c2lnbm9yZSwgd2luMzIvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvYmluLy5jdnNpZ25vcmUsIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvbGliLy5jdnNpZ25vcmUsIHdpbjMyL2xpYmFnZW50Ly5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL2xpYmhlbHBlcnMvLmN2c2lnbm9yZSwgd2luMzIvbGlibmV0c25tcHRyYXBkLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL2xpYnNubXAvLmN2c2lnbm9yZSwgd2luMzIvbGlic25tcF9kbGwvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvbGlidWNkbWlicy8uY3ZzaWdub3JlLCB3aW4zMi9uZXQtc25tcC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9uZXQtc25tcC9hZ2VudC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9uZXQtc25tcC9saWJyYXJ5Ly5jdnNpZ25vcmUsIHdpbjMyL25ldHNubXBtaWJzLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL25ldHNubXBtaWJzc2RrLy5jdnNpZ25vcmUsIHdpbjMyL3NubXBidWxrZ2V0Ly5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXBidWxrd2Fsay8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wZC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9zbm1wZGVsdGEvLmN2c2lnbm9yZSwgd2luMzIvc25tcGRmLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXBkc2RrLy5jdnNpZ25vcmUsIHdpbjMyL3NubXBnZXQvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvc25tcGdldG5leHQvLmN2c2lnbm9yZSwgd2luMzIvc25tcG5ldHN0YXQvLmN2c2lnbm9yZSwKLSAgICAgd2luMzIvc25tcHNldC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wc3RhdHVzLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXB0YWJsZS8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wdGVzdC8uY3ZzaWdub3JlLAotICAgICB3aW4zMi9zbm1wdHJhbnNsYXRlLy5jdnNpZ25vcmUsIHdpbjMyL3NubXB0cmFwLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXB0cmFwZC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wdXNtLy5jdnNpZ25vcmUsCi0gICAgIHdpbjMyL3NubXB2YWNtLy5jdnNpZ25vcmUsIHdpbjMyL3NubXB3YWxrLy5jdnNpZ25vcmU6Ci0gICAgIFJlbW92ZSByZWR1bmRhbnQgQ1ZTLWFkbWluIGZpbGVzLgorICAgKiAgLmN2c2lnbm9yZSwgYWdlbnQvLmN2c2lnbm9yZSwgYWdlbnQvaGVscGVycy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvLmN2c2lnbm9yZSwgYWdlbnQvbWliZ3JvdXAvUm1vbi8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvYWdlbnQvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2FnZW50eC8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9leHByLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2V4YW1wbGVzLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL21lbW9yeS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvLmN2c2lnbm9yZSwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcGZ3Y2hhaW5zLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS8uY3ZzaWdub3JlLCBhZ2VudC9taWJncm91cC9taXNjLy5jdnNpZ25vcmUsICAKKyAgICAgICBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbXV4Ly5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlLy5jdnNpZ25vcmUsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhQYXJhbWV0ZXJzLy5jdnNpZ25vcmUsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvLmN2c2lnbm9yZSwKKyAgICAgICAgIGFnZW50L21pYmdyb3VwL3NubXB2My8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGFyZ2V0Ly5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC91Y2Qtc25tcC8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlLy5jdnNpZ25vcmUsICAgCisgICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvLmN2c2lnbm9yZSwgYXBwcy8uY3ZzaWdub3JlLCAgIAorICAgICAgYXBwcy9zbm1wbmV0c3RhdC8uY3ZzaWdub3JlLCBkaXN0Ly5jdnNpZ25vcmUsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wLy5jdnNpZ25vcmUsIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvLmN2c2lnbm9yZSwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS8uY3ZzaWdub3JlLCBpbmNsdWRlL3VjZC1zbm1wLy5jdnNpZ25vcmUsIAorICAgICAgICBsb2NhbC8uY3ZzaWdub3JlLCBtYW4vLmN2c2lnbm9yZSwgbWlicy8uY3ZzaWdub3JlLAorICAgICAgb3YvLmN2c2lnbm9yZSwgICAgcGVybC8uY3ZzaWdub3JlLCBwZXJsL0FTTi8uY3ZzaWdub3JlLCAgIAorICAgICAgcGVybC9BbnlEYXRhX1NOTVAvLmN2c2lnbm9yZSwgcGVybC9PSUQvLmN2c2lnbm9yZSwgICAKKyAgICAgIHBlcmwvU05NUC8uY3ZzaWdub3JlLCBwZXJsL1NOTVAvdC8uY3ZzaWdub3JlLCAgIAorICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvLmN2c2lnbm9yZSwgcGVybC9hZ2VudC8uY3ZzaWdub3JlLCAgIAorICAgICAgcGVybC9hZ2VudC9TdXBwb3J0Ly5jdnNpZ25vcmUsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvLmN2c2lnbm9yZSwgICAKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS8uY3ZzaWdub3JlLCBwZXJsL21hbmFnZXIvLmN2c2lnbm9yZSwgICAKKyAgICAgIHNubXBsaWIvLmN2c2lnbm9yZSwgdGVzdGluZy8uY3ZzaWdub3JlLCB3aW4zMi8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvYmluLy5jdnNpZ25vcmUsIHdpbjMyL2VuY29kZV9rZXljaGFuZ2UvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL2xpYi8uY3ZzaWdub3JlLCB3aW4zMi9saWJhZ2VudC8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvbGliaGVscGVycy8uY3ZzaWdub3JlLCB3aW4zMi9saWJuZXRzbm1wdHJhcGQvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL2xpYnNubXAvLmN2c2lnbm9yZSwgd2luMzIvbGlic25tcF9kbGwvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL2xpYnVjZG1pYnMvLmN2c2lnbm9yZSwgd2luMzIvbmV0LXNubXAvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL2FnZW50Ly5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9saWJyYXJ5Ly5jdnNpZ25vcmUsIHdpbjMyL25ldHNubXBtaWJzLy5jdnNpZ25vcmUsICAKKyAgICAgICB3aW4zMi9uZXRzbm1wbWlic3Nkay8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wYnVsa2dldC8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvc25tcGJ1bGt3YWxrLy5jdnNpZ25vcmUsIHdpbjMyL3NubXBkLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wZGVsdGEvLmN2c2lnbm9yZSwgd2luMzIvc25tcGRmLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wZHNkay8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wZ2V0Ly5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wZ2V0bmV4dC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wbmV0c3RhdC8uY3ZzaWdub3JlLCAgIAorICAgICAgd2luMzIvc25tcHNldC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wc3RhdHVzLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wdGFibGUvLmN2c2lnbm9yZSwgd2luMzIvc25tcHRlc3QvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFuc2xhdGUvLmN2c2lnbm9yZSwgd2luMzIvc25tcHRyYXAvLmN2c2lnbm9yZSwgICAKKyAgICAgIHdpbjMyL3NubXB0cmFwZC8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wdXNtLy5jdnNpZ25vcmUsICAgCisgICAgICB3aW4zMi9zbm1wdmFjbS8uY3ZzaWdub3JlLCB3aW4zMi9zbm1wd2Fsay8uY3ZzaWdub3JlOgorCisgICBSZW1vdmUgcmVkdW5kYW50IENWUy1hZG1pbiBmaWxlcy4KIAogMjAwNy0wNi0wNyAxMjo1NiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfc2VjbW9kLmM6Ci0gICAgIEhhbmRsZSB1bnJlZ2lzdGVyaW5nIHRoZSBmaXJzdCBTZWN1cml0eSBNb2RlbCBpbiB0aGUgbGlzdC4KLSAgICAgUmVwb3J0ZWQgYnkgQWxla3NhbmRyIExvbWFub3YuCisKKyAgIEhhbmRsZSB1bnJlZ2lzdGVyaW5nIHRoZSBmaXJzdCBTZWN1cml0eSBNb2RlbCBpbiB0aGUgbGlzdC4KKyAgIFJlcG9ydGVkIGJ5IEFsZWtzYW5kciBMb21hbm92LgogCiAyMDA3LTA2LTA3IDA5OjEzICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46Ci0gICAgIEluc3RhbGwgaGVhZGVyIGZpbGVzIGZvciBzdGFzaF9jYWNoZSBhbmQgc3Rhc2hfdG9fbmV4dCBoZWxwZXJzLgorCisgICBJbnN0YWxsIGhlYWRlciBmaWxlcyBmb3Igc3Rhc2hfY2FjaGUgYW5kIHN0YXNoX3RvX25leHQgaGVscGVycy4KIAogMjAwNy0wNi0wNyAwOTowNyAgZHRzMTIKIAogICAgKiBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOgotICAgICBTZXBhcmF0ZSBvdXQgaGVhZGVyIGZpbGVzIHRoYXQgZG9uJ3QgaGF2ZSBhIGNvcnJlc3BvbmRpbmcgQwotICAgICBzb3VyY2UgZmlsZS4KKworICAgU2VwYXJhdGUgb3V0IGhlYWRlciBmaWxlcyB0aGF0IGRvbid0IGhhdmUgYSBjb3JyZXNwb25kaW5nIEMKKyAgIHNvdXJjZSBmaWxlLgogCiAyMDA3LTA2LTA3IDA4OjU5ICBkdHMxMgogCiAgICAqIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW46Ci0gICAgIFNvcnQgbGlzdHMgb2YgaGVscGVycyAoc291cmNlIGNvZGUsIG9iamVjdCBmaWxlcyBhbmQgaGVhZGVycykuCi0gICAgIFRoaXMgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgZmlsZXMgdGhhdCBoYXZlIGJlZW4gb21pdHRlZC4KKworICAgU29ydCBsaXN0cyBvZiBoZWxwZXJzIChzb3VyY2UgY29kZSwgb2JqZWN0IGZpbGVzIGFuZCBoZWFkZXJzKS4KKyAgIFRoaXMgc2hvdWxkIG1ha2UgaXQgZWFzaWVyIHRvIHNwb3QgZmlsZXMgdGhhdCBoYXZlIGJlZW4gb21pdHRlZC4KIAogMjAwNy0wNi0wNyAwODo0MiAgZHRzMTIKIAogICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6Ci0gICAgIFByb3RlY3QgYWdhaW5zdCBzeXN0ZW1zIHdpdGhvdXQgU19JU0RJUi4KKworICAgUHJvdGVjdCBhZ2FpbnN0IHN5c3RlbXMgd2l0aG91dCBTX0lTRElSLgorCisyMDA3LTA2LTA2IDIyOjM2ICBtYWdmcgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBXZSBhcmVuJ3QgdXNpbmcgbGlidG9vbHMgZGxvcGVuIHN1cHBvcnQsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8KKyAgIGNvbmZpZ3VyZSBmb3IgaXQKIAogMjAwNy0wNi0wNiAxMjozNyAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBBSVg6IHVzZSAiLVdsLC1icnRsIiB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYworCisgICBDSEFOR0VTOiBBSVg6IHVzZSAiLVdsLC1icnRsIiB3aGVuIGNvbXBpbGluZyB3aXRoIGdjYworCisyMDA3LTA2LTA2IDEwOjI2ICBtYWdmcgorCisgICAqIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlbW92ZSB0aGUgdW51c2VkIHVuZGVmIEhBVkVfUEVSTF9FVkFMX1BWLgorICAgVGhlIFBlcmxfZXZhbF9wdiBmdW5jdGlvbnMgYXJlIGhhbmRsZWQgYnkgdGhlCisgICBIQVZFX1BFUkxfRVZBTF9QVl9bVUxdQyBkZWZpbmVzLAorICAgdGhpcyBvbmUgaXMgbmV2ZXIgc2V0IGJ5IG91ciBjb25maWd1cmUgc2NyaXB0LgogCiAyMDA3LTA2LTA2IDEwOjIwICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRyYXBkLmM6Ci0gICAgIEVuc3VyZSBvdXRwdXQgaXMgcHJvcGVybHkgZGlyZWN0ZWQgdG8gc3lzbG9nLgotICAgICBPdGhlcndpc2UsIHByb2JsZW1zIGluIHRoZSBjb25maWcgZW52aXJvbm1lbnQgY2FuIHRyaWdnZXIKLSAgICAgZXJyb3JzIGJlaW5nIGRpcmVjdGVkIHRvIHN0ZGVyciwgYW5kIHN1YnNlcXVlbnQgbG9nZ2luZwotICAgICBvdXRwdXQgZ2V0cyBsb3N0LgorCisgICBFbnN1cmUgb3V0cHV0IGlzIHByb3Blcmx5IGRpcmVjdGVkIHRvIHN5c2xvZy4KKyAgIE90aGVyd2lzZSwgcHJvYmxlbXMgaW4gdGhlIGNvbmZpZyBlbnZpcm9ubWVudCBjYW4gdHJpZ2dlcgorICAgZXJyb3JzIGJlaW5nIGRpcmVjdGVkIHRvIHN0ZGVyciwgYW5kIHN1YnNlcXVlbnQgbG9nZ2luZworICAgb3V0cHV0IGdldHMgbG9zdC4KIAogMjAwNy0wNi0wNiAxMDoxMyAgZHRzMTIKIAogICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6Ci0gICAgIE1vcmUgaGVscGZ1bCBkZWJ1Z2dpbmcgb3V0cHV0LgorCisgICBNb3JlIGhlbHBmdWwgZGVidWdnaW5nIG91dHB1dC4KIAogMjAwNy0wNi0wNiAwNTo1MyAgbWFnZnIKIAotICAgKiBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLAotICAgICB0ZXN0aW5nL3Rlc3RzL1QwMzVzbm1wdjN0cmFwZHVzZXJtZ210OgotICAgICBDSEFOR0VTOiBtaXNjOiBEb24ndCB1c2UgdGhlIGxlZ2FjeSBzeW1ib2wKLSAgICAgU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYCisgICAqICBhcHBzL3NubXB0cmFwZC5jLCBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jLCAgIAorICAgICAgdGVzdGluZy90ZXN0cy9UMDM1c25tcHYzdHJhcGR1c2VybWdtdDoKKworICAgQ0hBTkdFUzogbWlzYzogRG9uJ3QgdXNlIHRoZSBsZWdhY3kgc3ltYm9sCisgICBTTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKKworMjAwNy0wNi0wNSAxNzo0OSAgbWFnZnIKKworICAgKiBhY2NvbmZpZy5oLCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogUmVtb3ZlIGV4cGxpY2l0IGRlZmluaXRpb25zIG9mIGl0ZW1zIHRoYXQKKyAgIGF1dG9oZWFkZXIgYWxzbyBkZWZpbmVzCiAKIDIwMDctMDYtMDUgMTU6NTkgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmM6Ci0gICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNzI5NjI5OiBGaXggbWVtb3J5IGxlYWsgaW4gZGlzbWFuCi0gICAgIGFnZW50LgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTcyOTYyOTogRml4IG1lbW9yeSBsZWFrIGluIGRpc21hbgorICAgYWdlbnQuCisKKzIwMDctMDYtMDUgMTQ6NTIgIGR0czEyCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKKworICAgQ0hBTkdFUzogc25tcHRyYXBkOiBTdXBwb3J0IHBlci10cmFwIGZvcm1hdCBzcGVjaWZpY2F0aW9ucworCisyMDA3LTA2LTA1IDA2OjU3ICBtYWdmcgorCisgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgTkVXUzogbWlzYzogQWRkIGNvbmZpZyByZXJlYWRpbmcgc3VwcG9ydCB0byB0aGUgc3ViYWdlbnQKKyAgIGdlbmVyYXRlZCBieSBuZXQtc25tcC1jb25maWcgLS1jb21waWxlLXN1YmFnZW50CisKKzIwMDctMDYtMDQgMjI6MjkgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IFNpbXBsaWZ5IHRoZSBkZXRlY3Rpb24gb2YgbGlicmFyaWVzIG5lZWRlZCBmb3IKKyAgIGdldGhvc3RieW5hbWUKIAogMjAwNy0wNi0wNCAyMjowNiAgbWFnZnIKIAogICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIE5FV1M6IHNubXBsaWI6IENoYW5nZSBzbm1wX3Nlc3NfYWRkX2V4IHRvIGNvbnNpc3RlbnRseSBjbG9zZSBhbmQKLSAgICAgZGVsZXRlIHRoZSB0cmFuc3BvcnQgYXJndW1lbnQgb24gZmFpbHVyZSwgZWFybGllciB0aGUgbGl2ZW5lc3Mgb2YKLSAgICAgdGhlIHRyYW5zcG9ydCBhcmd1bWVudCB3YXMgdW5kZWNpZGVkLgogCi0yMDA3LTA2LTA0IDE1OjUwICBoYXJkYWtlcgotCi0gICAqIEZBUSwgUkVBRE1FLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGlzdC9uZXQtc25tcC5zcGVjLAotICAgICBzZWRzY3JpcHQuaW4sIHNubXBsaWIvc25tcF92ZXJzaW9uLmM6Ci0gICAgIC0gdmVyc2lvbiB0YWcgKCA1LjQuMS5wcmUyICkKLQotMjAwNy0wNi0wNCAxNTo1MCAgaGFyZGFrZXIKLQotICAgKiBDSEFOR0VTLCBORVdTOgotICAgICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA3LTA2LTA0IDE1OjQ0ICBoYXJkYWtlcgotCi0gICAqIENoYW5nZUxvZzoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNi0wNCAxNTo0MiAgaGFyZGFrZXIKLQotICAgKiBhZ2VudC9NYWtlZmlsZS5kZXBlbmQ6Ci0gICAgIG1ha2UgZGVwZW5kCi0KLTIwMDctMDYtMDQgMTU6NDEgIGhhcmRha2VyCi0KLSAgICogbWFuL25ldHNubXBfYWdlbnQuMywgbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMywKLSAgICAgbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zLCBtYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zLAotICAgICBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLAotICAgICBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2NhbGxiYWNrLjMsCi0gICAgIG1hbi9uZXRzbm1wX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF9kYXRhX2xpc3QuMywKLSAgICAgbWFuL25ldHNubXBfZGVidWcuMywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLAotICAgICBtYW4vbmV0c25tcF9oYW5kbGVyLjMsIG1hbi9uZXRzbm1wX2luc3RhbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLCBtYW4vbmV0c25tcF9sZWFmLjMsCi0gICAgIG1hbi9uZXRzbm1wX2xpYnJhcnkuMywgbWFuL25ldHNubXBfbWliX21haW50ZW5hbmNlLjMsCi0gICAgIG1hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zLAotICAgICBtYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAotICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKLSAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAotICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfYWdlbnQuMywgbWFuL25ldHNubXBfc25tcF9hbGFybS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zLCBtYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9wZHUuMywgbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMsCi0gICAgIG1hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMsIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGUuMywgbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfY29udGFpbmVyLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zLCBtYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLCBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMsIG1hbi9uZXRzbm1wX3RkYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3V0aWwuMywgbWFuL25ldHNubXBfdXRpbGl0aWVzLjMsCi0gICAgIG1hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMywgbWFuL25ldHNubXBfd2F0Y2hlci4zOgotICAgICBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0yMDA3LTA2LTA0IDE1OjM5ICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnByZTIgKQorICAgTkVXUzogc25tcGxpYjogQ2hhbmdlIHNubXBfc2Vzc19hZGRfZXggdG8gY29uc2lzdGVudGx5IGNsb3NlIGFuZAorICAgZGVsZXRlIHRoZSB0cmFuc3BvcnQgYXJndW1lbnQgb24gZmFpbHVyZSwgZWFybGllciB0aGUgbGl2ZW5lc3Mgb2YKKyAgIHRoZSB0cmFuc3BvcnQgYXJndW1lbnQgd2FzIHVuZGVjaWRlZC4KIAogMjAwNy0wNi0wNCAxNDozNiAgaGFyZGFrZXIKIAotICAgKiBNYWtlZmlsZS5pbiwgdGVzdGluZy9SVU5URVNUUzoKLSAgICAgQ0hBTkdFUzogdGVzdDogc3VwcG9ydCBhIC1uIGZsYWcgdG8gUlVOVEVTVFMgdG8gcHJpbnQgdGhlIHRlc3QKLSAgICAgbnVtYmVyIGZvdW5kIGluIHRoZSB0ZXN0IGZpbGUgYXMgb3Bwb3NlZCB0byB0aGUgbnVtZXJpY2FsIGNvdW50CisgICAqIE1ha2VmaWxlLmluLCBkaXN0L21ha2VyZWxlYXNlLCB0ZXN0aW5nL1JVTlRFU1RTOgorCisgICBDSEFOR0VTOiB0ZXN0OiBzdXBwb3J0IGEgLW4gZmxhZyB0byBSVU5URVNUUyB0byBwcmludCB0aGUgdGVzdAorICAgbnVtYmVyIGZvdW5kIGluIHRoZSB0ZXN0IGZpbGUgYXMgb3Bwb3NlZCB0byB0aGUgbnVtZXJpY2FsIGNvdW50CiAKIDIwMDctMDYtMDQgMTM6MDkgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjM3OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBNb3ZlCi0gICAgIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGF0IHRoZSB0b3Agb2YgbmV0c25tcF91ZHBfc2VuZHRvCisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIzNzogZnJvbSBtaXRzdXJ1X2NoaW5lbjogTW92ZQorICAgdmFyaWFibGUgZGVjbGFyYXRpb24gYXQgdGhlIHRvcCBvZiBuZXRzbm1wX3VkcF9zZW5kdG8KKworMjAwNy0wNi0wNCAxMjo1MiAgdGFuZGVycworCisgICAqICBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvdHlwZXMuaDoKKworICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjMzOiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBtYWtlIHN1cmUKKyAgIHR5cGUgbmZkc190IGlzIGRlZmluZWQKIAogMjAwNy0wNi0wNCAxMjoxMyAgdGFuZGVycwogCi0gICAqIGFnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdDdGxUYWJsZS5jLCBjb25maWd1cmUsCi0gICAgIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwKLSAgICAgc25tcGxpYi9zbm1wVURQRG9tYWluLmMsIHNubXBsaWIvc25tcFVEUElQdjZEb21haW4uYzoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjMwOiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBhZGQKLSAgICAgY29uZmlndXJlIGNoZWNrIGZvciBnYWlfc3RyZXJyb3IoKQorICAgKiAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMsIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIzMDogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkCisgICBjb25maWd1cmUgY2hlY2sgZm9yIGdhaV9zdHJlcnJvcigpCiAKIDIwMDctMDYtMDQgMTA6MzUgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIyNjogZnJvbSBtaXRzdXJ1X2NoaW5lbjogbWFrZSBzdXJlCi0gICAgIElGX05BTUVTSVpFIGlzIGRlZmluZWQKKworICAgQ0hBTkdFUzogYnVpbGQ6IFBBVENIOiAxNzI4MjI2OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiBtYWtlIHN1cmUKKyAgIElGX05BTUVTSVpFIGlzIGRlZmluZWQKKworMjAwNy0wNi0wNCAxMDoyOCAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jLCBjb25maWd1cmUsICAgCisgICAgICBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTcyODIyMzogZnJvbSBtaXRzdXJ1X2NoaW5lbjogYWRkCisgICBjb25maWd1cmUgY2hlY2sgZm9yIG5ldGxpbmsgc29ja2V0CiAKIDIwMDctMDYtMDQgMDk6NDcgIHRhbmRlcnMKIAogICAgKiB0ZXN0aW5nL3Rlc3RzL1QxNjBzbm1wbmV0c3RhdDoKLSAgICAgYWxzbyBza2lwIHRoaXMgdGVzdCBvbiBJUklYNjQKKworICAgYWxzbyBza2lwIHRoaXMgdGVzdCBvbiBJUklYNjQKKworMjAwNy0wNi0wMiAxNjoxMyAgbWFnZnIKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IEZpeCBjb21waWxhdGlvbiBvbiBJUklYCiAKIDIwMDctMDYtMDIgMDg6MjQgIG1hZ2ZyCiAKLSAgICogYWNjb25maWcuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4LmgsCi0gICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzIuaCwgc25tcGxpYi9zbm1wX2FwaS5jLAotICAgICB3aW4zMi9jb25maWcuaC5ib3JsYW5kLCB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0gICAgIENIQU5HRVM6IHNubXBhcGk6IERvIG5vdCB1c2UgZ2V0c2VydmJ5bmFtZSB0byBmaW5kIGRlZmF1bHQgcG9ydAotICAgICBudW1iZXJzLCBqdXN0IGhhcmRjb2RlIHRoZW0gYW5kIGxldCB0aGUgdXNlciBvdmVycmlkZSB0aGVtIGlmCi0gICAgIG5lZWRlZC4KKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9taW5ndzMyLmgsIHNubXBsaWIvc25tcF9hcGkuYywgICAKKyAgICAgIHdpbjMyL2NvbmZpZy5oLmJvcmxhbmQsIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IHNubXBhcGk6IERvIG5vdCB1c2UgZ2V0c2VydmJ5bmFtZSB0byBmaW5kIGRlZmF1bHQgcG9ydAorICAgbnVtYmVycywganVzdCBoYXJkY29kZSB0aGVtIGFuZCBsZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlbSBpZgorICAgbmVlZGVkLgogCiAyMDA3LTA2LTAxIDIyOjU1ICB0YW5kZXJzCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0gICAgIENIQU5HRVM6IGJ1aWxkOiBMaW5rIGxpYmRsIGFnYWluc3QgbGlibmV0c25tcG1pYnMgaW5zdGVhZCBvZgotICAgICBzbm1wZC4KLSAgICAgRml4ZXMgdGhlIGJ1aWxkIG9uIChzb21lKSBTb2xhcmlzIHN5c3RlbXMuCiAKLTIwMDctMDYtMDEgMjE6MzYgIGR0czEyCisgICBDSEFOR0VTOiBidWlsZDogTGluayBsaWJkbCBhZ2FpbnN0IGxpYm5ldHNubXBtaWJzIGluc3RlYWQgb2YKKyAgIHNubXBkLgorICAgRml4ZXMgdGhlIGJ1aWxkIG9uIChzb21lKSBTb2xhcmlzIHN5c3RlbXMuCiAKLSAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBGRUFUVVJFUzogMTA0MTg4ODogQ2hlY2sgZGlyZWN0b3J5IHBhdGhzIGZvcgotICAgICBjb25maWcgZmlsZXMuCi0gICAgIEJhY2twb3J0IGZyb20gbWFpbiBkZXZlbG9wbWVudCB0cnVuayBvZiBidWcgZml4LgorMjAwNy0wNi0wMSAyMjozNCAgdGFuZGVycwogCi0yMDA3LTA2LTAxIDIxOjIzICBkdHMxMgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKIAotICAgKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IEZFQVRVUkVTOiA4NTE4ODc6IFJlcG9ydCByYW5nZSBpbmZvcm1hdGlvbiBmb3IKLSAgICAgaW52YWxpZCBTRVQgcmVxdWVzdHMuCi0gICAgIEJhY2twb3J0IGZyb20gbWFpbiB0cnVuayBvZiBidWcgZml4LgorICAgZml4IE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMIGNvbmZpZ3VyZSBjaGVjayBvbiBJUklYCisgICAocmVncmVzc2lvbiBmcm9tIHIxNjQ1MSkKKworMjAwNy0wNi0wMSAxNDozMyAgZHRzMTIKKworICAgKiBhcHBzL3NubXB0cmFwZC5jOgorCisgICBORVdTOiBzbm1wdHJhcGQ6IFdpdGhkcmF3IGRlcHJlY2F0ZWQgb3B0aW9ucy4KKyAgIChUaHJlZSBhbmQgYSBoYWxmIHllYXJzJyB3YXJuaW5nIHNob3VsZCBiZSBlbm91Z2ggZm9yIGFueW9uZSEpCiAKIDIwMDctMDUtMzEgMjM6NTEgIHRhbmRlcnMKIAotICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sCi0gICAgIG5ldC1zbm1wLWNvbmZpZy5pbjoKLSAgICAgQ0hBTkdFUzogYnVpbGQ6IExpbmsgbGlia3ZtIGFuZCBsaWJ3cmFwIHRvIGxpYm5ldHNubXBhZ2VudAotICAgICBpbnN0ZWFkIG9mIHNubXBkLgotICAgICBGaXhlcyB0ZXN0ICM0NCAoUGVybCBzdWJhZ2VudCkgb24gc3lzdGVtcyB1c2luZyBvbmUgb2YgdGhvc2UKLSAgICAgbGlicmFyaWVzLgorICAgKiAgYWdlbnQvTWFrZWZpbGUuaW4sIGFwcHMvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgbmV0LXNubXAtY29uZmlnLmluOgorCisgICBDSEFOR0VTOiBidWlsZDogTGluayBsaWJrdm0gYW5kIGxpYndyYXAgdG8gbGlibmV0c25tcGFnZW50CisgICBpbnN0ZWFkIG9mIHNubXBkLgorICAgRml4ZXMgdGVzdCAjNDQgKFBlcmwgc3ViYWdlbnQpIG9uIHN5c3RlbXMgdXNpbmcgb25lIG9mIHRob3NlCisgICBsaWJyYXJpZXMuCisKKzIwMDctMDUtMzEgMjM6NDIgIG1hZ2ZyCisKKyAgICogIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBNb3ZlIHN5c09STGFzdENoYW5nZSBmcm9tIG1pYklJL3N5c3RlbV9taWIgdG8KKyAgIG1pYklJL3N5c09SVGFibGUgaW4gb3JkZXIgdG8ga2VlcCB0aGUgZGF0YSBhbmQgdGhlIHVzZSB0b2dldGhlci4KIAogMjAwNy0wNS0zMSAxNDozOSAgZHRzMTIKIAogICAgKiBhcHBzL3NubXB0cmFwZF9sb2cuYzoKLSAgICAgRml4IGxvZ2dpbmcgb2YgYXV0aGVudGljYXRpb24gaW5mb3JtYXRpb24uCisKKyAgIEZpeCBsb2dnaW5nIG9mIGF1dGhlbnRpY2F0aW9uIGluZm9ybWF0aW9uLgogCiAyMDA3LTA1LTMxIDEwOjEwICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgotICAgICBSZW1vdmUgYm9ndXMgZGVidWcgb3V0cHV0LgorCisgICBSZW1vdmUgYm9ndXMgZGVidWcgb3V0cHV0LgorCisyMDA3LTA1LTMxIDA5OjQ4ICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIFJlbW92ZSByZWR1bmRhbnQgY29kZS4KKworMjAwNy0wNS0zMSAwOTo0MyAgZHRzMTIKKworICAgKiBhcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jOgorCisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IEZFQVRVUkU6IDExNTk5NDc6IEFsbG93IGNvbnRyb2wgb2YgdHJhcGhhbmRsZQorICAgZGF0YSBmb3JtYXQKIAogMjAwNy0wNS0zMCAyMjo1MyAgdGFuZGVycwogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCBwZXJsL0FTTi9NYWtlZmlsZS5QTCwKLSAgICAgcGVybC9PSUQvTWFrZWZpbGUuUEwsIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwKLSAgICAgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvTWFrZWZpbGUuUEwsCi0gICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTDoKLSAgICAgQ0hBTkdFUzogQUlYOiBidWlsZCBmaXhlcyBmb3IgZW1iZWRkZWQgUGVybAorICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIHBlcmwvQVNOL01ha2VmaWxlLlBMLCAgIAorICAgICAgcGVybC9PSUQvTWFrZWZpbGUuUEwsIHBlcmwvU05NUC9NYWtlZmlsZS5QTCwgICAKKyAgICAgIHBlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMLCBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCAgIAorICAgICAgcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMOgorCisgICBDSEFOR0VTOiBBSVg6IGJ1aWxkIGZpeGVzIGZvciBlbWJlZGRlZCBQZXJsCisKKzIwMDctMDUtMzAgMjI6MzQgIHRhbmRlcnMKKworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgSFAtVVggMTEueCBhbmQgSVJJWCA2LjUgYnVpbGQgZml4IChyZWdyZXNzaW9uIGludHJvZHVjZWQgYnkKKyAgIHIxNjQ1MSkKKworMjAwNy0wNS0yOSAyMzowNCAgdGFuZGVycworCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBDSEFOR0VTOiBidWlsZDogbWFrZSB1c2Ugb2YgQUNfUFJPR19TRUQvQUNfUFJPR19HUkVQIGFuZCAvIHRvCisgICBmdXJ0aGVyIG1pbmltaXplIHNlZC9ncmVwIHByb2JsZW1zCiAKIDIwMDctMDUtMjkgMjI6NDIgIG1hZ2ZyCiAKICAgICogc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jOgotICAgICBDSEFOR0VTOiBzbm1wbGliOiBVc2UgdGhlIGRlZmF1bHRfdGFyZ2V0IGFyZ3VtZW50IGlmIGl0IGlzCi0gICAgIG5vbi1OVUxMLCBub3QgaWYgaXQgaXMgTlVMTC4KKworICAgQ0hBTkdFUzogc25tcGxpYjogVXNlIHRoZSBkZWZhdWx0X3RhcmdldCBhcmd1bWVudCBpZiBpdCBpcworICAgbm9uLU5VTEwsIG5vdCBpZiBpdCBpcyBOVUxMLgorCisyMDA3LTA1LTI5IDEwOjMwICB0YW5kZXJzCisKKyAgICogd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBSZW1vdmUgbW9yZSBuZXQtc25tcCBzcGVjaWFscyBpbiB0aGUgY29uZmlndXJlCisgICBzY3JpcHRzIHRvIGVhc2UgbWFpbnRlbmFuY2UuCisgICBBbHNvIGNoYW5nZSByZWNlbnRseSBhZGRlZCBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfU1NfRkFNSUxZLgogCiAyMDA3LTA1LTI5IDEwOjI3ICB0YW5kZXJzCiAKICAgICogUkVBRE1FLmFnZW50LW1pYnM6Ci0gICAgIGFkZCByZWNlbnQgbWZkIHJld3JpdGVzCisKKyAgIGFkZCByZWNlbnQgbWZkIHJld3JpdGVzCisKKzIwMDctMDUtMjkgMTA6MjIgIHRhbmRlcnMKKworICAgKiB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaDoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IFJlbW92ZSBtb3JlIG5ldC1zbm1wIHNwZWNpYWxzIGluIHRoZSBjb25maWd1cmUKKyAgIHNjcmlwdHMgdG8gZWFzZSBtYWludGVuYW5jZS4KKyAgIEFsc28gY2hhbmdlIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIGZvciBjb25zaXN0ZW5jeS4KKworMjAwNy0wNS0yOCAyMzozMCAgbWFnZnIKKworICAgKiAgUE9SVElORywgYWNjb25maWcuaCwgYWNpbmNsdWRlLm00LCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYywgYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9hdC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jLCBhZ2VudC9taWJncm91cC9taWJJSS90Y3AuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3VkcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgIAorICAgICAgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oLCBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1LmgsICAgCisgICAgICBzbm1wbGliL3NjYXBpLmMsIHNubXBsaWIvc25tcC10Yy5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsICAKKyAgICAgICBzbm1wbGliL3N5c3RlbS5jOgorCisgICBDSEFOR0VTOiBidWlsZGluZzogUmVtb3ZlIG1vcmUgbmV0LXNubXAgc3BlY2lhbHMgaW4gdGhlIGNvbmZpZ3VyZQorICAgc2NyaXB0cyB0byBlYXNlIG1haW50ZW5hbmNlLgorCisyMDA3LTA1LTI4IDE2OjMxICBkdHMxMgorCisgICAqIG1hbi9zbm1wLmNvbmYuNS5kZWYsIG1hbi9zbm1wY21kLjEuZGVmLCBzbm1wbGliL21pYi5jOgorCisgICBDSEFOR0VTOiBsaWJyYXJ5OiBGRUFUVVJFUzogMTQwNzQ3NjogUmVuYW1lICdzdHJpY3RDb21tZW50VGVybScKKyAgIHRvIHJlZmxlY3QgdGhlIGFjdHVhbCBiZWhhdmlvdXIuCisKKzIwMDctMDUtMjggMTU6MjUgIGR0czEyCisKKyAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgorCisgICBDSEFOR0VTOiBsaWJyYXJ5OiBGRUFUVVJFUzogMTA0MTg4ODogQ2hlY2sgZGlyZWN0b3J5IHBhdGhzIGZvcgorICAgY29uZmlnIGZpbGVzLgorCisyMDA3LTA1LTI4IDEzOjEzICBkdHMxMgorCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogbGlicmFyeTogRkVBVFVSRVM6IDg1MTg4NzogUmVwb3J0IHJhbmdlIGluZm9ybWF0aW9uIGZvcgorICAgaW52YWxpZCBTRVQgcmVxdWVzdHMuCisKKzIwMDctMDUtMjggMTI6MDggIHRhbmRlcnMKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX3NvbGFyaXMyLmM6CisKKyAgIE5FV1M6IFNvbGFyaXM6IFBBVENIOiAxNzE5NzMwOiBmcm9tIGFwZXJzc29uOiBzdXBwb3J0IGZvcgorICAgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcEFkZHJlc3NUYWJsZQorICAgUGFydCAyIChTb2xhcmlzLXNwZWNpZmljIG5ldyBmaWxlcykKKworMjAwNy0wNS0yOCAxMjowMiAgdGFuZGVycworCisgICAqIGluY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oOgorCisgICBORVdTOiBMaW51eDogUEFUQ0g6IDE3MjQ2MDI6IGZyb20gbWl0c3VydV9jaGluZW46IG1mZC1iYXNlZAorICAgaXBEZWZhdWx0Um91dGVyVGFibGUgaW1wbGVtZW50YXRpb24KKworMjAwNy0wNS0yOCAxMjowMCAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuYywKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZW51bXMuaCwKKyAgICAgICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmMsCisgICAgICAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oLAorICAgICAgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmg6CisKKyAgIE5FV1M6IExpbnV4OiBQQVRDSDogMTcyNDYwMjogZnJvbSBtaXRzdXJ1X2NoaW5lbjogbWZkLWJhc2VkCisgICBpcERlZmF1bHRSb3V0ZXJUYWJsZSBpbXBsZW1lbnRhdGlvbgorCisyMDA3LTA1LTI4IDExOjU5ICB0YW5kZXJzCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmMsIGFnZW50L21pYmdyb3VwL21pYklJL2lwLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oOgorCisgICBORVdTOiBMaW51eDogUEFUQ0g6IDE3MjQ2MDI6IGZyb20gbWl0c3VydV9jaGluZW46IG1mZC1iYXNlZAorICAgaXBEZWZhdWx0Um91dGVyVGFibGUgaW1wbGVtZW50YXRpb24KKworMjAwNy0wNS0yOCAxMDowOSAgZHRzMTIKKworICAgKiBhcHBzL3NubXB3YWxrLmMsIG1hbi9zbm1wd2Fsay4xLmRlZjoKKworICAgRG9jdW1lbnQgdGhlIC1DRSBvcHRpb24uCiAKIDIwMDctMDUtMjcgMjE6NDIgIHRhbmRlcnMKIAogICAgKiBwZXJsL1RyYXBSZWNlaXZlci9NYWtlZmlsZS5QTCwgcGVybC9hZ2VudC9NYWtlZmlsZS5QTDoKLSAgICAgU29tZSBsYW1lIGxpbmtlcnMgKGUuZy4gb24gSFAtVVggMTEuMjMvSUE2NCkgbmVlZCBxdWl0ZSBhIGJpdCBvZgotICAgICBoZWxwIHRvIHN1Y2Nlc3NmdWxseSBsaW5rIHRoZSBQZXJsIG1vZHVsZXMuCisKKyAgIFNvbWUgbGFtZSBsaW5rZXJzIChlLmcuIG9uIEhQLVVYIDExLjIzL0lBNjQpIG5lZWQgcXVpdGUgYSBiaXQgb2YKKyAgIGhlbHAgdG8gc3VjY2Vzc2Z1bGx5IGxpbmsgdGhlIFBlcmwgbW9kdWxlcy4KKworMjAwNy0wNS0yNyAyMTozMyAgZHRzMTIKKworICAgKiBhcHBzL3NubXB3YWxrLmM6CisKKyAgIENIQU5HRVM6IHNubXB3YWxrOiBQQVRDSDogMTcyMzYyMDogU3BlY2lmeSBhbiBleHBsaWNpdCBlbmQtcG9pbnQKKyAgIGZvciB0aGUgd2Fsay4KKyAgIEFuIGFsdGVybmF0aXZlIChtb3JlIGZsZXhpYmxlKSBhcHByb2FjaCB0byB0aGUgcHJvcG9zZWQgcGF0Y2gsCisgICBidXQgb25lIHRoYXQKKyAgIHByb3ZpZGVzIGVxdWl2YWxlbnQgZnVuY3Rpb25hbGl0eS4gQWxzbyBhZGRyZXNzZXMgRmVhdHVyZSBSZXF1ZXN0CisgICAjNzIyNzg0LgogCiAyMDA3LTA1LTI3IDIwOjUyICB0YW5kZXJzCiAKICAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0gICAgIEFkZCBkZXNjcmlwdGlvbnMgdG8gQUNfREVGSU5FOyBkcm9wIG9ic29sZXRlIEFDX0NIRUNLX0xJQihtLAotICAgICBhc2luKS4KIAotMjAwNy0wNS0yNyAxOTo1NCAgZHRzMTIKKyAgIEFkZCBkZXNjcmlwdGlvbnMgdG8gQUNfREVGSU5FOyBkcm9wIG9ic29sZXRlIEFDX0NIRUNLX0xJQihtLAorICAgYXNpbikuCiAKLSAgICogc25tcGxpYi9wYXJzZS5jOgotICAgICBDSEFOR0VTOiBsaWJyYXJ5OiBGRUFUVVJFUzogNDU0MDI4OiBEZXRlY3QgYW5kIGhhbmRsZSBlbXB0eSBNSUIKLSAgICAgaW5kZXggZmlsZXMuCisyMDA3LTA1LTI3IDE5OjI4ICBkdHMxMgorCisgICAqIHNubXBsaWIvbWliLmM6CisKKyAgIENIQU5HRVM6IGxpYnJhcnk6IEZFQVRVUkVTOiA0NTQwMjg6IERldGVjdCBlbXB0eSBNSUIgaW5kZXggZmlsZXMuCisKKzIwMDctMDUtMjcgMTk6MDYgIGR0czEyCisKKyAgICogIGFnZW50L3NubXBkLmMsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogc25tcGQ6IEZFQVRVUkVTOiAxMDE5NDI5OiBTZXQgc3VwcGxlbWVudGFyeSBncm91cHMgdmlhCisgICBpbml0Z3JvdXBzKDMpCisKKzIwMDctMDUtMjcgMDY6MjcgIHRhbmRlcnMKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsIGFnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oOgorCisgICBORVdTOiBTb2xhcmlzOiBQQVRDSDogMTcxOTczMDogZnJvbSBhcGVyc3Nvbjogc3VwcG9ydCBmb3IKKyAgIGlwU3lzdGVtU3RhdHNUYWJsZSBhbmQgaXBBZGRyZXNzVGFibGUKIAogMjAwNy0wNS0yNyAwNjoyMCAgdGFuZGVycwogCiAgICAqIFJFQURNRS5haXg6Ci0gICAgIGdyYW1tYXIgZml4CisKKyAgIGdyYW1tYXIgZml4CiAKIDIwMDctMDUtMjYgMTY6NDEgIGFsZXhfYgogCi0gICAqIFJFQURNRS53aW4zMiwgd2luMzIvQ29uZmlndXJlLCB3aW4zMi9idWlsZC5wbCwKLSAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBXaW4zMiBJUHY2IGJ1aWxkIGZpeGVzLiBJUHY2IG5vdyByZXF1aXJlcyBQU0RLLgorICAgKiAgUkVBRE1FLndpbjMyLCB3aW4zMi9Db25maWd1cmUsIHdpbjMyL2J1aWxkLnBsLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKIAotMjAwNy0wNS0yNiAxNToxNCAgYWxleF9iCisgICBXaW4zMiBJUHY2IGJ1aWxkIGZpeGVzLiBJUHY2IG5vdyByZXF1aXJlcyBQU0RLLgogCi0gICAqIFJFQURNRS53aW4zMiwgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsCi0gICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgotICAgICBJUHY2IGJ1aWxkIGZpeGVzIGZvciBidWlsZC5iYXQsIENvbmZpZ3VyZSBhbmQgUkVBRE1FLndpbjMyLgorMjAwNy0wNS0yNiAxNToxNiAgYWxleF9iCisKKyAgICogIFJFQURNRS53aW4zMiwgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgSVB2NiBidWlsZCBmaXhlcyBmb3IgYnVpbGQuYmF0LCBDb25maWd1cmUgYW5kIFJFQURNRS53aW4zMi4KIAogMjAwNy0wNS0yNSAyMzowMyAgdGFuZGVycwogCiAgICAqIFJFQURNRS5haXgsIFJFQURNRS5zb2xhcmlzLCBSRUFETUUudHJ1NjQ6Ci0gICAgIERvY3VtZW50YXRpb24gdXBkYXRlIHcuci50LiByZWNlbnQgY2hhbmdlcyAobWliSUkvaXB2NiBhbmQgQUlYCi0gICAgIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkaW5nKS4KKworICAgRG9jdW1lbnRhdGlvbiB1cGRhdGUgdy5yLnQuIHJlY2VudCBjaGFuZ2VzIChtaWJJSS9pcHY2IGFuZCBBSVgKKyAgIHNoYXJlZCBsaWJyYXJ5IGJ1aWxkaW5nKS4KKworMjAwNy0wNS0yNSAxODo1NCAgcnN0b3J5CisKKyAgICogZGlzdC9jdnNzaG93OgorCisgICB1cGRhdGUgZm9yIG5ldyB1cmwgZm9ybWF0IGluIHN2biBlbnRyaWVzCiAKIDIwMDctMDUtMjUgMTU6MjggIHRhbmRlcnMKIAogICAgKiBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6Ci0gICAgIFNvbWUgc3lzdGVtcyAoZS5nLiBIUC1VWCAxMS4yMy9JQTY0KSBjdXJyZW50bHkgc3RpbGwgbmVlZAotICAgICAibmV0LXNubXAtY29uZmlnIC0tbGlicyIgKGluc3RlYWQgb2YganVzdCAtLW5ldHNubXAtbGlicykgZm9yCi0gICAgIGxpbmtpbmcKLSAgICAgbGlibmV0c25tcCB0byBhIFBlcmwgbW9kdWxlLgorCisgICBTb21lIHN5c3RlbXMgKGUuZy4gSFAtVVggMTEuMjMvSUE2NCkgY3VycmVudGx5IHN0aWxsIG5lZWQKKyAgICJuZXQtc25tcC1jb25maWcgLS1saWJzIiAoaW5zdGVhZCBvZiBqdXN0IC0tbmV0c25tcC1saWJzKSBmb3IKKyAgIGxpbmtpbmcKKyAgIGxpYm5ldHNubXAgdG8gYSBQZXJsIG1vZHVsZS4KIAogMjAwNy0wNS0yNCAyMzo1NSAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZDogb25seSBlbmFibGUgbWliSUkvaXB2NiB0aHJvdWdoIC0tZW5hYmxlLWlwdjYgb24KLSAgICAgc3lzdGVtcyBpdCBidWlsZHMgcHJvcGVybHkgb24gKExpbnV4IGFuZCAqQlNEKQorCisgICBDSEFOR0VTOiBidWlsZDogb25seSBlbmFibGUgbWliSUkvaXB2NiB0aHJvdWdoIC0tZW5hYmxlLWlwdjYgb24KKyAgIHN5c3RlbXMgaXQgYnVpbGRzIHByb3Blcmx5IG9uIChMaW51eCBhbmQgKkJTRCkKIAogMjAwNy0wNS0yNCAyMzoxNSAgdGFuZGVycwogCiAgICAqIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTDoKLSAgICAgU29tZSBzeXN0ZW1zIChlLmcuIEhQLVVYIDExLjIzL0lBNjQpIGN1cnJlbnRseSBzdGlsbCBuZWVkCi0gICAgICJuZXQtc25tcC1jb25maWcgLS1saWJzIiAoaW5zdGVhZCBvZiBqdXN0IC0tbmV0c25tcC1saWJzKSBmb3IKLSAgICAgbGlua2luZyBsaWJzbm1wYWdlbnQgdG8gYSBQZXJsIG1vZHVsZS4KKworICAgU29tZSBzeXN0ZW1zIChlLmcuIEhQLVVYIDExLjIzL0lBNjQpIGN1cnJlbnRseSBzdGlsbCBuZWVkCisgICAibmV0LXNubXAtY29uZmlnIC0tbGlicyIgKGluc3RlYWQgb2YganVzdCAtLW5ldHNubXAtbGlicykgZm9yCisgICBsaW5raW5nIGxpYnNubXBhZ2VudCB0byBhIFBlcmwgbW9kdWxlLgogCiAyMDA3LTA1LTI0IDIyOjAxICBtYWdmcgogCiAgICAqIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYzoKLSAgICAgQ29ycmVjdCBvYnZpb3VzbHkgYnJva2VuIHVzZSBvZiB0aGUgS0xPT0tVUCBtYWNybyB0byBiZQotICAgICBjb25zaXN0ZW50IGF0IGxlYXN0CisKKyAgIENvcnJlY3Qgb2J2aW91c2x5IGJyb2tlbiB1c2Ugb2YgdGhlIEtMT09LVVAgbWFjcm8gdG8gYmUKKyAgIGNvbnNpc3RlbnQgYXQgbGVhc3QKIAogMjAwNy0wNS0yNCAyMDo1MSAgdGFuZGVycwogCiAgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q3Lmg6Ci0gICAgIENIQU5HRVM6IEZyZWVCU0Q6IGFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHVwY29taW5nIEZyZWVCU0QgNworCisgICBDSEFOR0VTOiBGcmVlQlNEOiBhZGQgaW5pdGlhbCBzdXBwb3J0IGZvciB1cGNvbWluZyBGcmVlQlNEIDcKKworMjAwNy0wNS0yNCAxNDowNiAgcnN0b3J5CisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICBidW1wIGxpYmN1cnJlbnQgdG8gMjAgdG8gbGVhdmUgc3BhY2UgZm9yIDUuNC54IHJlbGVhc2VzCiAKIDIwMDctMDUtMjQgMTI6NDggIHRhbmRlcnMKIAogICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgYXBwcy9NYWtlZmlsZS5pbjoKLSAgICAgZml4IGxpYnJhcnkgbGlua2luZyBvbiBIUC1VWCAxMS4yMy9JQTY0CiAKLTIwMDctMDUtMjQgMDg6MzYgIHRhbmRlcnMKLQotICAgKiBNYWtlZmlsZS50b3A6Ci0gICAgIENIQU5HRVM6IHNubXBsaWI6IGluY3JlbWVudCAiY3VycmVudCIgYW5kICJhZ2UiIGFjY29yZGluZyB0bwotICAgICBsaWJ0b29sCi0gICAgIHZlcnNpb25pbmcgcG9saWN5LCBzaW5jZSBpbnRlcmZhY2VzIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSA1LjQuCi0gICAgIFdlIG5vdyBidWlsZCBsaWJuZXRzbm1wLnNvLjE1LjEuMC4KLSAgICAgNS40LjEucHJlMSB3YXMgYnJva2VuIGluIHRoaXMgcmVnYXJkLgorICAgZml4IGxpYnJhcnkgbGlua2luZyBvbiBIUC1VWCAxMS4yMy9JQTY0CiAKIDIwMDctMDUtMjMgMTk6MDUgIHRhbmRlcnMKIAotICAgKiBNYWtlZmlsZS5pbiwgTWFrZWZpbGUucnVsZXMsIGFnZW50L01ha2VmaWxlLmluLAotICAgICBhZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluLCBhcHBzL01ha2VmaWxlLmluLCBjb25maWd1cmUsCi0gICAgIGNvbmZpZ3VyZS5pbiwgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsCi0gICAgIHBlcmwvYWdlbnQvTWFrZWZpbGUuUEwsIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTCwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMLCBzbm1wbGliL01ha2VmaWxlLmluOgotICAgICBORVdTOiBzbm1wbGliOiBCVUc6IDE2MTk4Mjc6IGxpbmsgbmV0LXNubXAgbGlicmFyaWVzIGFuZCBiaW5hcmllcwotICAgICBhZ2FpbnN0IHRoZSBuZXQtc25tcCBsaWJyYXJpZXMgdGhleSByZWFsbHkgZGVwZW5kIG9uCi0gICAgIC0gcmVmbGVjdCBsaWJyYXJ5IGludGVyZGVwZW5kZW5jaWVzIGF0IGxpbmsgdGltZQotICAgICAtIGZpeCBkZXBlbmRlbmNpZXMgb24gbGliY3J5cHRvLCBsaWJwa2NzMTEgYW5kIGxpYmtzdGF0Ci0gICAgIC0gaW5zdGFsbCBsaWJyYXJpZXMgaW4gY29ycmVjdCBvcmRlciAoaW1wb3J0YW50IGZvciBsaWJ0b29sCi0gICAgIHJlbGlua2luZykKLSAgICAgTkVXUzogUGVybDogbGluayBQZXJsIG1vZHVsZXMgYWdhaW5zdCB0aGUgZXhhY3Qgc2V0IG9mIGxpYnJhcmllcwotICAgICB0aGV5IGRlcGVuZCBvbgorICAgKiAgTWFrZWZpbGUuaW4sIE1ha2VmaWxlLnJ1bGVzLCBhZ2VudC9NYWtlZmlsZS5pbiwgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW4sIGFwcHMvTWFrZWZpbGUuaW4sIGNvbmZpZ3VyZSwgICAKKyAgICAgIGNvbmZpZ3VyZS5pbiwgcGVybC9UcmFwUmVjZWl2ZXIvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2FnZW50L01ha2VmaWxlLlBMLCBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsICAgCisgICAgICBwZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsIHNubXBsaWIvTWFrZWZpbGUuaW46CiAKLTIwMDctMDUtMjIgMTQ6NDAgIGhhcmRha2VyCisgICBORVdTOiBzbm1wbGliOiBCVUc6IDE2MTk4Mjc6IGxpbmsgbmV0LXNubXAgbGlicmFyaWVzIGFuZCBiaW5hcmllcworICAgYWdhaW5zdCB0aGUgbmV0LXNubXAgbGlicmFyaWVzIHRoZXkgcmVhbGx5IGRlcGVuZCBvbgorICAgLSByZWZsZWN0IGxpYnJhcnkgaW50ZXJkZXBlbmRlbmNpZXMgYXQgbGluayB0aW1lCisgICAtIGZpeCBkZXBlbmRlbmNpZXMgb24gbGliY3J5cHRvLCBsaWJwa2NzMTEgYW5kIGxpYmtzdGF0CisgICAtIGluc3RhbGwgbGlicmFyaWVzIGluIGNvcnJlY3Qgb3JkZXIgKGltcG9ydGFudCBmb3IgbGlidG9vbAorICAgcmVsaW5raW5nKQorICAgTkVXUzogUGVybDogbGluayBQZXJsIG1vZHVsZXMgYWdhaW5zdCB0aGUgZXhhY3Qgc2V0IG9mIGxpYnJhcmllcworICAgdGhleSBkZXBlbmQgb24KIAotICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGRpc3QvbmV0LXNubXAuc3BlYywKLSAgICAgcGVybC9BU04vQVNOLnBtLCBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sCi0gICAgIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0sCi0gICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtLCBwZXJsL2FnZW50L2FnZW50LnBtLAotICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSwKLSAgICAgcGVybC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sIHNlZHNjcmlwdC5pbiwKLSAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYzoKLSAgICAgdmVyc2lvbiBzdGFtcCA1LjQuMS5wcmUxCisyMDA3LTA1LTIyIDE2OjI2ICBoYXJkYWtlcgogCi0yMDA3LTA1LTIyIDAwOjI0ICBoYXJkYWtlcgorICAgKiBkaXN0L21ha2VyZWxlYXNlOgogCi0gICAqIENIQU5HRVMsIE5FV1M6Ci0gICAgIHZlcnNpb24gdXBkYXRlCi0KLTIwMDctMDUtMjIgMDA6MTkgIGhhcmRha2VyCi0KLSAgICogQ2hhbmdlTG9nOgotICAgICB2ZXJzaW9uIHVwZGF0ZQotCi0yMDA3LTA1LTIyIDAwOjAxICBoYXJkYWtlcgotCi0gICAqIGFnZW50L01ha2VmaWxlLmRlcGVuZCwgYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCwgYXBwcy9NYWtlZmlsZS5kZXBlbmQsCi0gICAgIGFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kLCBzbm1wbGliL01ha2VmaWxlLmRlcGVuZDoKLSAgICAgbWFrZSBkZXBlbmQKKyAgIHVzZSBzdm4gZXhwb3J0IGluc3RlYWQgb2YgY2hlY2tvdXQKIAogMjAwNy0wNS0yMiAwMDowMCAgaGFyZGFrZXIKIAogICAgKiBNYWtlZmlsZS5pbjoKLSAgICAgaWdub3JlIHdpbkV4dERMTCBpbiBjb21tZW50IGNoZWNrCisKKyAgIGlnbm9yZSB3aW5FeHRETEwgaW4gY29tbWVudCBjaGVjawogCiAyMDA3LTA1LTIxIDIzOjU0ICBoYXJkYWtlcgogCiAgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5jOgotICAgICAvLyAtPiBDIGNvbW1lbnQKIAotMjAwNy0wNS0yMSAyMzo1MSAgaGFyZGFrZXIKKyAgIC8vIC0+IEMgY29tbWVudAogCi0gICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCi0gICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMywKLSAgICAgbWFuL25ldHNubXBfYmFieV9zdGVwcy4zLCBtYW4vbmV0c25tcF9idWxrX3RvX25leHQuMywKLSAgICAgbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9jYWxsYmFjay4zLAotICAgICBtYW4vbmV0c25tcF9jb250YWluZXIuMywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsCi0gICAgIG1hbi9uZXRzbm1wX2RlYnVnLjMsIG1hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMywKLSAgICAgbWFuL25ldHNubXBfaGFuZGxlci4zLCBtYW4vbmV0c25tcF9pbnN0YW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywgbWFuL25ldHNubXBfbGVhZi4zLAotICAgICBtYW4vbmV0c25tcF9saWJyYXJ5LjMsIG1hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zLAotICAgICBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywKLSAgICAgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zLAotICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMsCi0gICAgIG1hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMywKLSAgICAgbWFuL25ldHNubXBfb2lkX3N0YXNoLjMsIG1hbi9uZXRzbm1wX29sZF9hcGkuMywKLSAgICAgbWFuL25ldHNubXBfcmVhZF9jb25maWcuMywgbWFuL25ldHNubXBfcmVhZF9vbmx5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3Jvd19tZXJnZS4zLCBtYW4vbmV0c25tcF9zY2FsYXIuMywKLSAgICAgbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMsIG1hbi9uZXRzbm1wX3NlcmlhbGl6ZS4zLAotICAgICBtYW4vbmV0c25tcF9zbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX3NubXBfYWxhcm0uMywKLSAgICAgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsCi0gICAgIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLAotICAgICBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zLCBtYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zLCBtYW4vbmV0c25tcF90YWJsZV9kYXRhLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLAotICAgICBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMsIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMsCi0gICAgIG1hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMywgbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMywKLSAgICAgbWFuL25ldHNubXBfdGFibGVfcm93cy4zLCBtYW4vbmV0c25tcF90ZGF0YS4zLAotICAgICBtYW4vbmV0c25tcF91dGlsLjMsIG1hbi9uZXRzbm1wX3V0aWxpdGllcy4zLAotICAgICBtYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMsIG1hbi9uZXRzbm1wX3dhdGNoZXIuMzoKLSAgICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKKzIwMDctMDUtMjEgMjM6MzMgIHRhbmRlcnMKKworICAgKiAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpczIuMTAuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjcuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjguaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMyLjkuaDoKKworICAgc3luYyB3aXRoIDUuNCwgdGhlc2UgYXJlIG9ic29sZXRlIG5vdwogCiAyMDA3LTA1LTIxIDIzOjExICBtYWdmcgogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgotICAgICBDSEFOR0VTOiBidWlsZGluZzogRGlzYWJsZSBpbmxpbmluZyBvbiBzb2xhcmlzIGFzIHRoZXJlIGFyZSBzb21lCi0gICAgIGxpbmtpbmcgZXJyb3JzIHRoYXQgc2hvdyB1cCBpZiB0aGUgaW5saW5lIHN1cHBvcnQgaXMgbGVmdAotICAgICBlbmFibGVkLgotCi0yMDA3LTA1LTIxIDIyOjQ2ICBoYXJkYWtlcgotCi0gICAqIGRveHlnZW4uY29uZjoKLSAgICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnByZTEgKQotCi0yMDA3LTA1LTIxIDIyOjIyICBoYXJkYWtlcgotCi0gICAqIE1ha2VmaWxlLnRvcDoKLSAgICAgdmVyc2lvbiB1cGRhdGUKLQotMjAwNy0wNS0yMSAyMzo1MSAgaGFyZGFrZXIKLQotICAgZG9jdW1lbnRhdGlvbiB1cGRhdGUKLQotMjAwNy0wNS0yMSAyMzoxMSAgbWFnZnIKIAogICAgQ0hBTkdFUzogYnVpbGRpbmc6IERpc2FibGUgaW5saW5pbmcgb24gc29sYXJpcyBhcyB0aGVyZSBhcmUgc29tZQogICAgbGlua2luZyBlcnJvcnMgdGhhdCBzaG93IHVwIGlmIHRoZSBpbmxpbmUgc3VwcG9ydCBpcyBsZWZ0CiAgICBlbmFibGVkLgogCi0yMDA3LTA1LTIxIDIyOjQ2ICBoYXJkYWtlcgorMjAwNy0wNS0yMSAwNjowNSAgbWFnZnIKIAotICAgLSB2ZXJzaW9uIHRhZyAoIDUuNC4xLnByZTEgKQorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKIAotMjAwNy0wNS0yMSAyMjoyMiAgaGFyZGFrZXIKLQotICAgdmVyc2lvbiB1cGRhdGUKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBBdCBsZWFzdCBTdW4gQyA1LjcgZmFpbHMgaWYgb25lIHRyaWVzIHRvCisgICBhY2Nlc3MgX19mdW5jX18gaW4gYSBleHRlcm4gaW5saW5lIGZ1bmN0aW9uLCBzbyB0ZXN0IGZvciB0aGF0CisgICBjYXNlLgogCiAyMDA3LTA1LTIwIDIxOjM0ICB0YW5kZXJzCiAKLQkqIGFnZW50L01ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQkgIE5FV1M6IHNubXBsaWI6IEJVRzogMTYxOTgyNzogbGluayBhZ2FpbnN0IG5lZWRlZCBleHRlcm5hbAotCSAgbGlicmFyaWVzIGF0IGxpYnJhcnkgbGluayB0aW1lICh3aGVyZSB0aGV5IGFyZSByZWZlcmVuY2VkKSwKLQkgIHJhdGhlciB0aGFuIGFwcGxpY2F0aW9uIGxpbmsgdGltZS4KLQkgIEFscmVhZHkgY292ZXJzIG1vc3Qgb2YgbGlibmV0c25tcG1pYnMnIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KLQkgIEZpeGVzIGJ1aWxkIGlzc3VlcyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiBidWlsZGluZyB3aXRoIHNoYXJlZAotCSAgbGlicmFyaWVzIG9uIEFJWCkuIFRlc3RlZCBvbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgTGludXgsCi0JICBTb2xhcmlzLCBIUC1VWCwgQUlYIGFuZCBJUklYLgorICAgKiBhZ2VudC9NYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIE5FV1M6IHNubXBsaWI6IEJVRzogMTYxOTgyNzogbGluayBhZ2FpbnN0IG5lZWRlZCBleHRlcm5hbAorICAgbGlicmFyaWVzIGF0IGxpYnJhcnkgbGluayB0aW1lICh3aGVyZSB0aGV5IGFyZSByZWZlcmVuY2VkKSwKKyAgIHJhdGhlciB0aGFuIGFwcGxpY2F0aW9uIGxpbmsgdGltZS4KKyAgIEFscmVhZHkgY292ZXJzIG1vc3Qgb2YgbGlibmV0c25tcG1pYnMnIGV4dGVybmFsIGRlcGVuZGVuY2llcy4KKyAgIEZpeGVzIGJ1aWxkIGlzc3VlcyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiBidWlsZGluZyB3aXRoIHNoYXJlZAorICAgbGlicmFyaWVzIG9uIEFJWCkuIFRlc3RlZCBvbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgTGludXgsCisgICBTb2xhcmlzLCBIUC1VWCwgQUlYIGFuZCBJUklYLgogCiAyMDA3LTA1LTE5IDE1OjI3ICBtYWdmcgogCi0JKiBhY2NvbmZpZy5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwKLQkgIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46Ci0JICBDSEFOR0VTOiBidWlsZGluZzogQ2hlY2sgZm9yIHN1cHBvcnQgb2Ygc3RhdGljIGlubGluZSBmdW5jdGlvbnMKLQkgIGluc3RlYWQgb2YgbmVzdGVkIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIHdoZW4gZGV0ZXJtaW5pbmcgaWYKLQkgIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIHdvcmsKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IENoZWNrIGZvciBzdXBwb3J0IG9mIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zCisgICBpbnN0ZWFkIG9mIG5lc3RlZCBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyB3aGVuIGRldGVybWluaW5nIGlmCisgICBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyB3b3JrCisKKzIwMDctMDUtMTkgMDg6NDAgIG1hZ2ZyCisKKyAgICogIGFjY29uZmlnLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgd2luMzIvY29uZmlnLmguYm9ybGFuZCwgICAKKyAgICAgIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IE1ha2UgdXNlIG9mIHRoZSBDOTkgcHJlZGVmaW5lZCB2YXJpYWJsZQorICAgX19mdW5jX18gaW4gYWRkaXRpb24gdG8gdGhlIEdDQyBzeW1ib2wgX19GVU5DVElPTl9fIHRvIGdldCB0aGUKKyAgIG5hbWUgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24KKworMjAwNy0wNS0xOCAxODoxMiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNzIxMDk2OiBmcm9tIG1pdHN1cnVfY2hpbmVuOiByZW1vdmUKKyAgIHVudXNlZCB2YXJpYWJsZSBzdGF0cyBmcm9tIGtlcm5lbCBleHRyYWN0aW9uIGZvciBiZXR0ZXIKKyAgIHBvcnRhYmlsaXR5LgogCiAyMDA3LTA1LTE4IDE4OjA4ICBoYXJkYWtlcgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxOTI1NDogZnJvbSAiQ2hyaXN0YW4gSnVuZyI6IHVwZGF0ZQotCSAgSFJGU19pZ25vcmUgbGlzdCB0byBjdXJyZW50IGxpbnV4IGxpa2VseWhvb2RzCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE3MTkyNTQ6IGZyb20gIkNocmlzdGFuIEp1bmciOiB1cGRhdGUKKyAgIEhSRlNfaWdub3JlIGxpc3QgdG8gY3VycmVudCBsaW51eCBsaWtlbHlob29kcwogCiAyMDA3LTA1LTE4IDE4OjAyICBoYXJkYWtlcgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKLQkgIE5FV1M6IHNubXBkOiBwYXRjaDogMTcxOTI1MzogZnJvbSAiQ2hyaXN0aWFuIEp1bmciOiBmaXgKLQkgIHNraXBORlNJbkhvc3RSZXNvdXJjZXMgc28gaXQgZG9lcyBub3QgYnJlYWsgb24gdGhlIHNlY29uZCB3YWxrIG9mCi0JICB0aGUgdGFibGUuCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgorCisgICBORVdTOiBzbm1wZDogcGF0Y2g6IDE3MTkyNTM6IGZyb20gIkNocmlzdGlhbiBKdW5nIjogZml4CisgICBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIHNvIGl0IGRvZXMgbm90IGJyZWFrIG9uIHRoZSBzZWNvbmQgd2FsayBvZgorICAgdGhlIHRhYmxlLgorCisyMDA3LTA1LTE4IDE3OjU1ICBtYWdmcgorCisgICAqIGFjY29uZmlnLmgsIGluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW46CisKKyAgIFJlcmFuIGF1dG9oZWFkZXIgYW5kIGFkanVzdGVkIGFjY29uZmlnLmggYWZ0ZXIgY2hhbmdlcyBpbiByMTYzODcKKworMjAwNy0wNS0xOCAxNzo1NCAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxNTQwNjogZnJvbSBtaXRzdXJ1X2NoaW5lbjogcmVnaXN0cmF0aW9uCisgICBvcmRlcmluZyBmaXhlcyBmb3IgaWNtcFN0YXRzVGFibGUKKworMjAwNy0wNS0xOCAxNzo0NiAgaGFyZGFrZXIKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxNTM5NTogZml4IGljbXAgdGFibGUgZXJyb3JzIGluIG5ldyBpY21wCisgICBjb2RlCisKKzIwMDctMDUtMTggMTc6NDUgIGhhcmRha2VyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICAKIAogMjAwNy0wNS0xOCAxNTowNSAgdGFuZGVycwogCi0JKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQkgIE5FV1M6IEFJWDogZml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nCi0JICBzdGF0aWMKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIE5FV1M6IEFJWDogZml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nCisgICBzdGF0aWMKKworMjAwNy0wNS0xOCAxNDoxOCAgbWFnZnIKKworICAgKiAgYWNjb25maWcuaCwgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLCAgIAorICAgICAgd2luMzIvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgsICAgCisgICAgICB3aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgQ0hBTkdFUzogYnVpbGRpbmc6IFVzZSBBQ19DSEVDS19NRU1CRVJTIGluc3RlYWQgb2YKKyAgIEFDX0NIRUNLX1NUUlVDVF9GT1Igd2hlbiBjaGVja2luZyBmb3Igc3RydWN0IGlwc3RhdCBtZW1iZXJzIGluCisgICBvcmRlciB0byBtYWtlIGNvbmZpZ3VyZS5pbiBzbWFsbGVyCiAKIDIwMDctMDUtMTggMTA6MjIgIG1hZ2ZyCiAKLQkqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oOgotCSAgQ0hBTkdFUzogc25tcGQ6IENvcnJlY3QgdGhlIGRlcGVuZGVuY3kgaW5mb3JtYXRpb24gZm9yCi0JICBob3N0L2hyX3N0b3JhZ2UKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBDb3JyZWN0IHRoZSBkZXBlbmRlbmN5IGluZm9ybWF0aW9uIGZvcgorICAgaG9zdC9ocl9zdG9yYWdlCisKKzIwMDctMDUtMTggMDk6NTcgIG1hZ2ZyCisKKyAgICogdGVzdGluZy9SVU5URVNUUzoKKworICAgQ0hBTkdFUzogdGVzdGluZzogRG8gbm90IHRlcm1pbmF0ZSBvbiBTSUdDSExEIHNpbmNlIGRhc2ggYW5kCisgICBzb3VtZSBib3VybmUgc2hlbGxzIHdpbGwgZXhpdCB0aGUgbWFpbiBzaGVsbCB3aGVuIGEgc3Vic2hlbGwKKyAgIHRlcm1pbmF0ZXMgaW4gdGhhdCBjYXNlLgorCisyMDA3LTA1LTE4IDA5OjIyICB0YW5kZXJzCisKKyAgICogYXBwcy9zbm1wdXNtLmM6CisKKyAgIFVuZG9pbmcgYWNjaWRlbnRhbCBjaGFuZ2UgY29tbWl0dGVkIGluIHIxNjM3My4KKworMjAwNy0wNS0xNyAyMzoyMSAgbWFnZnIKKworICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjg3MzM3OiBJbXBsZW1lbnQgX3Nlc3Nfb3BlbiBpbiB0ZXJtcworICAgb2Ygc25tcF9zZXNzX2FkZAogCiAyMDA3LTA1LTE3IDIyOjE2ICBtYWdmcgogCi0JKiBhZ2VudC9hZ2VudF90cmFwLmMsIGFwcHMvc25tcHRyYXAuYywgYXBwcy9zbm1wdHJhcGQuYywKLQkgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsCi0JICBzbm1wbGliL3NubXBfYXBpLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2MjA0MjQ6IEZpeCBub3RpZmljYXRpb24gc2VuZGluZyBzbyB0aGF0Ci0JICBleHBsaWNpdCBzcGVjaWZpY2F0aW9uIG9mIHBvcnQgMTYyIHNob3VsZCBiZSB1bm5lY2Vzc2FyeQotCSAgQ0hBTkdFUzogc25tcHRyYXBkOiBQQVRDSDogMTYyMDQyNDogRml4IG5vdGlmaWNhdGlvbiByZWNlcHRpb24gc28KLQkgIHRoYXQgZXhwbGljaXQgc3BlY2lmaWNhdGlvbiBvZiBwb3J0IDE2MiBzaG91bGQgYmUgdW5uZWNlc3NhcnkKLQkgIENIQU5HRVM6IGFwcHM6IFBBVENIOiAxNjIwNDI0OiBGaXggbm90aWZpY2F0aW9uIHNlbmRpbmcgc28gdGhhdAotCSAgZXhwbGljaXQgc3BlY2lmaWNhdGlvbiBvZiBwb3J0IDE2MiBzaG91bGQgYmUgdW5uZWNlc3NhcnkKLQkgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjIwNDI0OiBIb25vcgotCSAgTkVUU05NUF9EU19MSUJfREVGQVVMVF9QT1JUIG92ZXIgdGhlIGRlZmF1bHQgc3lzdGVtCisgICAqICBhZ2VudC9hZ2VudF90cmFwLmMsIGFwcHMvc25tcHRyYXAuYywgYXBwcy9zbm1wdHJhcGQuYywgICAKKyAgICAgIHNubXBsaWIvc25tcFVEUERvbWFpbi5jLCBzbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMsICAgCisgICAgICBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTYyMDQyNDogRml4IG5vdGlmaWNhdGlvbiBzZW5kaW5nIHNvIHRoYXQKKyAgIGV4cGxpY2l0IHNwZWNpZmljYXRpb24gb2YgcG9ydCAxNjIgc2hvdWxkIGJlIHVubmVjZXNzYXJ5CisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IFBBVENIOiAxNjIwNDI0OiBGaXggbm90aWZpY2F0aW9uIHJlY2VwdGlvbiBzbworICAgdGhhdCBleHBsaWNpdCBzcGVjaWZpY2F0aW9uIG9mIHBvcnQgMTYyIHNob3VsZCBiZSB1bm5lY2Vzc2FyeQorICAgQ0hBTkdFUzogYXBwczogUEFUQ0g6IDE2MjA0MjQ6IEZpeCBub3RpZmljYXRpb24gc2VuZGluZyBzbyB0aGF0CisgICBleHBsaWNpdCBzcGVjaWZpY2F0aW9uIG9mIHBvcnQgMTYyIHNob3VsZCBiZSB1bm5lY2Vzc2FyeQorICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2MjA0MjQ6IEhvbm9yCisgICBORVRTTk1QX0RTX0xJQl9ERUZBVUxUX1BPUlQgb3ZlciB0aGUgZGVmYXVsdCBzeXN0ZW0KIAogMjAwNy0wNS0xNyAyMTo1MyAgaGFyZGFrZXIKIAotCSogYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYywKLQkgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYywKLQkgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYywKLQkgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNzEwNjMyOiBmcm9tIG1hdmFybGV5OiBmaXggbWVtb3J5IGxlYWsgb24KLQkgIGJyb2tlbiBjb250YWluZXIgaW5zZXJ0aW9ucyBmb3IgdGhlIGlwQWRkcmVzc1RhYmxlCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBwYXRjaDogMTcxMDYzMjogZnJvbSBtYXZhcmxleTogZml4IG1lbW9yeSBsZWFrIG9uCisgICBicm9rZW4gY29udGFpbmVyIGluc2VydGlvbnMgZm9yIHRoZSBpcEFkZHJlc3NUYWJsZQogCiAyMDA3LTA1LTE3IDE4OjA2ICByc3RvcnkKIAotCSogbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmFjdGl2ZS1zZXR1cC5tMmM6Ci0JICBDSEFOR0VTOiBQQVRDSDogMTcxOTI0NDogZml4IG1mZCBnZW5lcmF0aW5nIG1hcCBmdW5jdGlvbgorICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyYWN0aXZlLXNldHVwLm0yYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE3MTkyNDQ6IGZpeCBtZmQgZ2VuZXJhdGluZyBtYXAgZnVuY3Rpb24KKworMjAwNy0wNS0xNyAxNzo0NiAgaGFyZGFrZXIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFyX3JvdXRlLmg6CisKKyAgIE5FV1M6IHNubXBkOiBwYXRjaDogMTcwODI0MzogZnJvbSBuaG9ybWFuOiBpbXBsZW1lbnQgdGhlCisgICBpcERlZmF1bHRSb3V0ZVRhYmxlIG9uIGxpbnV4CiAKIDIwMDctMDUtMTcgMTY6MzEgIGhhcmRha2VyCiAKLQkqIGNvbmZpZ3VyZS5pbjoKLQkgIE5FV1M6IHBvcnRzOiBwYXRjaDogMTcwNjM0NDogZnJvbSBuYXlsb3I6IGZpeCBjb21waWxhdGlvbiB3aXRoCi0JICBjeWd3aW4KKyAgICogY29uZmlndXJlLmluOgorCisgICBORVdTOiBwb3J0czogcGF0Y2g6IDE3MDYzNDQ6IGZyb20gbmF5bG9yOiBmaXggY29tcGlsYXRpb24gd2l0aAorICAgY3lnd2luCiAKIDIwMDctMDUtMTcgMTY6MjIgIGhhcmRha2VyCiAKLQkqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzoKLQkgIE5FV1M6IHNubXBkOiBwYXRjaDogMTcwMDE1NzogZnJvbSBhZnJpa2E6IGZpeGVzIG9yZGVyaW5nIG9mIGV4ZWMKLQkgIHRva2VucyBpbiB0aGUgcmVzdWx0aW5nIG1pYiB0cmVlCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYzoKKworICAgTkVXUzogc25tcGQ6IHBhdGNoOiAxNzAwMTU3OiBmcm9tIGFmcmlrYTogZml4ZXMgb3JkZXJpbmcgb2YgZXhlYworICAgdG9rZW5zIGluIHRoZSByZXN1bHRpbmcgbWliIHRyZWUKIAogMjAwNy0wNS0xNyAxNTo1MyAgaGFyZGFrZXIKIAotCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE2MTcyNTU6IGZpeCBsZW5ndGggb2YgdGhlIGhpc3RvcnkgYXJyYXkKLQkgIHRvIG1hdGNoIGNvZGUuCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE2MTcyNTU6IGZpeCBsZW5ndGggb2YgdGhlIGhpc3RvcnkgYXJyYXkKKyAgIHRvIG1hdGNoIGNvZGUuCiAKIDIwMDctMDUtMTcgMTM6NTMgIGhhcmRha2VyCiAKLQkqIGFnZW50L3NubXBkLmMsIGFwcHMvc25tcHRyYXBkLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDEyMjU0NDA6IEFwcGx5IGludGVudCBvZiBwYXRjaDogdG8gZGVsYXkKLQkgIHNpZ2h1cCB0aWxsIGl0IGlzIHNhZmUuCi0JICBDSEFOR0VTOiBzbm1wdHJhcGQ6IHBhdGNoOiAxMjI1NDQwOiBBcHBseSBpbnRlbnQgb2YgcGF0Y2g6IHRvCi0JICBkZWxheSBzaWdodXAgdGlsbCBpdCBpcyBzYWZlLgorICAgKiBhZ2VudC9zbm1wZC5jLCBhcHBzL3NubXB0cmFwZC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDEyMjU0NDA6IEFwcGx5IGludGVudCBvZiBwYXRjaDogdG8gZGVsYXkKKyAgIHNpZ2h1cCB0aWxsIGl0IGlzIHNhZmUuCisgICBDSEFOR0VTOiBzbm1wdHJhcGQ6IHBhdGNoOiAxMjI1NDQwOiBBcHBseSBpbnRlbnQgb2YgcGF0Y2g6IHRvCisgICBkZWxheSBzaWdodXAgdGlsbCBpdCBpcyBzYWZlLgorCisyMDA3LTA1LTE3IDEzOjM1ICBtYWdmcgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmg6CisKKyAgIENIQU5HRVM6IGJ1aWxkaW5nOiBVc2UgY29uZmlnX2Vycm9yIGluc3RlYWQgb2YgY29uZmlnX3JlcXVpcmUgb2YKKyAgIGEgYm9ndXMgZmlsZS8jZXJyb3IgdG8gZ2VuZXJhdGUgZXJyb3IgbWVzc2FnZXMgYXQgY29uZmlndXJlIHRpbWUuCiAKIDIwMDctMDUtMTcgMDQ6MzkgIGhhcmRha2VyCiAKLQkqIHNubXBsaWIvYXNuMS5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogcGF0Y2g6IDE2NDU2OTg6IGZpeCA2NC1iaXQgc2lnbmVkIGludGVnZXIKLQkgIGVuY29kaW5nCisgICAqIGFwcHMvc25tcHVzbS5jLCBzbm1wbGliL2FzbjEuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogcGF0Y2g6IDE2NDU2OTg6IGZpeCA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgIGVuY29kaW5nCiAKIDIwMDctMDUtMTYgMjM6NTMgIHRhbmRlcnMKIAotCSogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oOgotCSAgQ0hBTkdFUzogSFAtVVg6IEhQLVVYIG5lZWRzIF9SRUVOVFJBTlQgZGVmaW5lZCB0byBwaWNrIHVwCi0JICBzdHJ0b2tfci4KLQkgIE90aGVyd2lzZSwgYXQgbGVhc3QgZm9yIDY0LWJpdCBjb2RlLCBzdHJ0b2tfciB3aWxsIG5vdCB3b3JrCi0JICBhbmQgd2lsbCBtYWtlIG5ldC1zbm1wIHNlZ2ZhdWx0LgorICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4Lmg6CisKKyAgIENIQU5HRVM6IEhQLVVYOiBIUC1VWCBuZWVkcyBfUkVFTlRSQU5UIGRlZmluZWQgdG8gcGljayB1cAorICAgc3RydG9rX3IuCisgICBPdGhlcndpc2UsIGF0IGxlYXN0IGZvciA2NC1iaXQgY29kZSwgc3RydG9rX3Igd2lsbCBub3Qgd29yaworICAgYW5kIHdpbGwgbWFrZSBuZXQtc25tcCBzZWdmYXVsdC4KKworMjAwNy0wNS0xNiAyMzozOSAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjoKKworICAgZml4IHBhdGNoIDE2MjUwNjkgKHIxNjM2NSkgdG8gbm90IGJyZWFrIHRoZSBidWlsZCBvbiBTb2xhcmlzCisgICAyLjYvNworCisyMDA3LTA1LTE1IDE3OjMzICByc3RvcnkKKworICAgKiBkaXN0L3N2bnVwOgorCisgICAtIGFkZCB3YXJuaW5nIGlmIHN0YXIgbm90IGF2YWlsYWJsZQorICAgLSBmaXggcGF0dGVybiB0byBleGNsdWRlIC5zdm4gZGlycyBmcm9tIHRhcmJhbGxzCisKKzIwMDctMDUtMTUgMTU6NTUgIHJzdG9yeQorCisgICAqIGRpc3QvY3ZzdXA6CisKKyAgIHdhcm4gaWYgc3RhciBub3QgYXZhaWxhYmxlCiAKIDIwMDctMDUtMTUgMTQ6MzYgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L21lbW9yeV9zb2xhcmlzLmM6Ci0JICBmaXggdHlwbworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3NvbGFyaXMuYzoKKworICAgZml4IHR5cG8KIAogMjAwNy0wNS0xNCAyMTo0OSAgdGFuZGVycwogCi0JKiBhcHBzL01ha2VmaWxlLmluOgotCSAgYWRkIG1pc3NpbmcgQ0ZMQUdTIHRvIGxpbmsgbGluZQorICAgKiBhcHBzL01ha2VmaWxlLmluOgorCisgICBhZGQgbWlzc2luZyBDRkxBR1MgdG8gbGluayBsaW5lCiAKIDIwMDctMDUtMTQgMjE6NDggIHRhbmRlcnMKIAotCSogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjoKLQkgIGFkZCBtaXNzaW5nIENGTEFHUyB0byBsaW5rIGxpbmUKKyAgICogYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjoKKworICAgYWRkIG1pc3NpbmcgQ0ZMQUdTIHRvIGxpbmsgbGluZQorCisyMDA3LTA1LTE0IDE1OjU3ICBoYXJkYWtlcgorCisgICAqICBhZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluOgorCisgICBDSEFOR0VTOiBzbm1wZDogcGF0Y2g6IDE2MjUwNjk6IHNwZWVkIGltcHJvdmVtZW50cyBmb3Igc29sYXJpcworICAgcm91dGluZyB0YWJsZSBhY2Nlc3MKIAogMjAwNy0wNS0xNCAxNDo1MCAgaGFyZGFrZXIKIAotCSogYWdlbnQvc25tcF9hZ2VudC5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNTk1NTY4OiBmcm9tIGN5cmlsX21hcmdhcmlhOiBmaXgKLQkgIGRlbGVnYXRlZCBTRVQgcmVxdWVzdHMgZnJvbSBhZ2VudHggc3ViYWdlbnRzCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IHBhdGNoOiAxNTk1NTY4OiBmcm9tIGN5cmlsX21hcmdhcmlhOiBmaXgKKyAgIGRlbGVnYXRlZCBTRVQgcmVxdWVzdHMgZnJvbSBhZ2VudHggc3ViYWdlbnRzCisKKzIwMDctMDUtMTQgMTQ6MDQgIGhhcmRha2VyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgdXBkYXRlIHRvIHBvaW50IHRvIHdpa2kgYW5kIGEgZmV3IG1vcmUgY3ZzIC0+IHN2biBjaGFuZ2VzCiAKIDIwMDctMDUtMTMgMTQ6MjcgIG1hZ2ZyCiAKLQkqIHNubXBsaWIvc25tcF9zZXJ2aWNlLmM6Ci0JICBDSEFOR0VTOiBzbm1wbGliOiBSZWFkIHRoZSBjb25maWcgcGFyYW1ldGVycyBkZWZUYXJnZXQgYW5kCi0JICBkZWZEb21haW4gZnJvbSBzbm1wLmNvbmYgYXMgd2VsbCBhcyBmcm9tIDxhcHBsaWNhdGlvbj4uY29uZgorICAgKiBzbm1wbGliL3NubXBfc2VydmljZS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBSZWFkIHRoZSBjb25maWcgcGFyYW1ldGVycyBkZWZUYXJnZXQgYW5kCisgICBkZWZEb21haW4gZnJvbSBzbm1wLmNvbmYgYXMgd2VsbCBhcyBmcm9tIDxhcHBsaWNhdGlvbj4uY29uZgorCisyMDA3LTA1LTEyIDExOjE3ICBtYWdmcgorCisgICAqIHNubXBsaWIvbWliLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IERlYWxsb2NhdGUgdGhlIF9taWJpbmRleGVzIGNhY2hlIGluCisgICBzaHV0ZG93bl9taWIgdG8gbWFrZSBmb3IgYSBjbGVhbmVyIGV4aXQgb2YgdGhlIGxpYnJhcnkKIAogMjAwNy0wNS0xMiAxMToxNCAgbWFnZnIKIAotCSogc25tcGxpYi9taWIuYzoKLQkgIENIQU5HRVM6IHNubXBsaWI6IERlYWxsb2NhdGUgdGhlIGNvbmZtaWJzIGFuZCBjb25mbWliZGlycwotCSAgdmFyaWFibGVzIGluIHNodXRkb3duX21pYiB0byBtYWtlIGZvciBhIGNsZWFuZXIgZXhpdCBvZiB0aGUKLQkgIGxpYnJhcnkKKyAgICogc25tcGxpYi9taWIuYzoKKworICAgQ0hBTkdFUzogc25tcGxpYjogRGVhbGxvY2F0ZSB0aGUgY29uZm1pYnMgYW5kIGNvbmZtaWJkaXJzCisgICB2YXJpYWJsZXMgaW4gc2h1dGRvd25fbWliIHRvIG1ha2UgZm9yIGEgY2xlYW5lciBleGl0IG9mIHRoZQorICAgbGlicmFyeQogCiAyMDA3LTA1LTExIDIxOjA2ICBtYWdmcgogCi0JKiBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjg3MzM2OiBTdGFydCB1c2luZyB0aGUgZW5oYW5jZWQKLQkgIHJlYWRfY29uZmlnIGludGVyZmFjZQorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2ODczMzY6IFN0YXJ0IHVzaW5nIHRoZSBlbmhhbmNlZAorICAgcmVhZF9jb25maWcgaW50ZXJmYWNlCiAKIDIwMDctMDUtMTEgMjA6MzMgIG1hZ2ZyCiAKLQkqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKLQkgIFBBVENIIDE2ODczMjk6IEFwcGxpZWQgcGFydCAyIG9mIHRoZSBwYXRjaCAtIFdoZW4gcmVnaXN0ZXJpbmcKLQkgIG11bHRpcGxlIHByZW1pYiBoYW5kbGVycyBvbmx5IHRoZSBsYXN0IG9uZSB3YXMgcmVnaXN0ZXJlZCBwcmVtaWIsCi0JICB0aGUgb3RoZXJzIHdlcmUgcmVnaXN0ZXJkIGF0IHRoZSBub3JtYWwgdGltZS4gVGhpcyBwYXRjaCBwdXRzIGFsbAotCSAgcmVnaXN0cmF0aW9uIGluIG9uZSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBwcm9ibGVtYXRpYyB2YWx1ZSBhcwotCSAgYW4gYXJndW1lbnQgYW5kIG1ha2VzIHRoZSBvbGQgZnVuY3Rpb25zIHRoaW4gd3JhcHBlcnMgb2YgdGhlIG5ldwotCSAgb25lCisgICAqIHNubXBsaWIvcmVhZF9jb25maWcuYzoKKworICAgUEFUQ0ggMTY4NzMyOTogQXBwbGllZCBwYXJ0IDIgb2YgdGhlIHBhdGNoIC0gV2hlbiByZWdpc3RlcmluZworICAgbXVsdGlwbGUgcHJlbWliIGhhbmRsZXJzIG9ubHkgdGhlIGxhc3Qgb25lIHdhcyByZWdpc3RlcmVkIHByZW1pYiwKKyAgIHRoZSBvdGhlcnMgd2VyZSByZWdpc3RlcmQgYXQgdGhlIG5vcm1hbCB0aW1lLiBUaGlzIHBhdGNoIHB1dHMgYWxsCisgICByZWdpc3RyYXRpb24gaW4gb25lIGZ1bmN0aW9uIHRoYXQgdGFrZXMgdGhlIHByb2JsZW1hdGljIHZhbHVlIGFzCisgICBhbiBhcmd1bWVudCBhbmQgbWFrZXMgdGhlIG9sZCBmdW5jdGlvbnMgdGhpbiB3cmFwcGVycyBvZiB0aGUgbmV3CisgICBvbmUKIAogMjAwNy0wNS0xMSAyMDoyNCAgbWFnZnIKIAotCSogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotCSAgQ0hBTkdFOiBzbm1wbGliOiBQQVRDSCAxNjg3MzI5OiBBcHBsaWVkIHBhcnQgMyBvZiB0aGUgcGF0Y2ggLSB1c2UKLQkgIHRoZSBzYW1lIGFsZ29yaXRobSB0byBkZXRlcm1pbmUgd2hhdCB0byB1bnJlZ2lzdGVyIGFzIGlzIHVzZWQgdG8KLQkgIGRldGVybWluZSB3aGF0IHRvIHJlZ3N0ZXIKKyAgICogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgorCisgICBDSEFOR0U6IHNubXBsaWI6IFBBVENIIDE2ODczMjk6IEFwcGxpZWQgcGFydCAzIG9mIHRoZSBwYXRjaCAtIHVzZQorICAgdGhlIHNhbWUgYWxnb3JpdGhtIHRvIGRldGVybWluZSB3aGF0IHRvIHVucmVnaXN0ZXIgYXMgaXMgdXNlZCB0bworICAgZGV0ZXJtaW5lIHdoYXQgdG8gcmVnc3RlcgogCiAyMDA3LTA1LTExIDE2OjMyICBtYWdmcgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuYzoKLQkgIERvbid0IGxvZyBob3N0L2hyX3Byb2MgZXZlbnRzIGluIHRoZSBzbm1wZCBkb21haW4KKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmM6CisKKyAgIERvbid0IGxvZyBob3N0L2hyX3Byb2MgZXZlbnRzIGluIHRoZSBzbm1wZCBkb21haW4KIAogMjAwNy0wNS0xMSAxNjoyNyAgbWFnZnIKIAotCSogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6Ci0JICBEZWNvcmF0ZSBtb3JlIGRlYnVnIGxpbmVzIHdpdGggdGhlIHRhZyB0aGF0IGNvbnRyb2xzIHRoZSBsb2cKKyAgICogYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmM6CisKKyAgIERlY29yYXRlIG1vcmUgZGVidWcgbGluZXMgd2l0aCB0aGUgdGFnIHRoYXQgY29udHJvbHMgdGhlIGxvZwogCiAyMDA3LTA1LTExIDE1OjA3ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3NvbGFyaXMuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2Mjg2MTM6IFJlc3RvcmUgbWVtVG90YWxGcmVlLjAgb24gU29sYXJpcworICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9tZW1vcnkvbWVtb3J5X3NvbGFyaXMuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTYyODYxMzogUmVzdG9yZSBtZW1Ub3RhbEZyZWUuMCBvbiBTb2xhcmlzCiAKIDIwMDctMDUtMTAgMjE6NTIgIHRhbmRlcnMKIAotCSogTWFrZWZpbGUuaW4sIHB5dGhvbi9zZXR1cC5weToKLQkgIE5FV1M6IHB5dGhvbjogUEFUQ0g6IDE3MTYxMTQ6IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUKLQkgIFBhdGNoIHByb3ZpZGVkIGJ5IEpvY2hlbiBGcmllZHJpY2ggKERlYmlhbiBwYXRjaCAjMzgpLgorICAgKiBNYWtlZmlsZS5pbiwgcHl0aG9uL3NldHVwLnB5OgorCisgICBORVdTOiBweXRob246IFBBVENIOiAxNzE2MTE0OiBMZXQgcHl0aG9uIGJ1aWxkIGluIHNvdXJjZSB0cmVlCisgICBQYXRjaCBwcm92aWRlZCBieSBKb2NoZW4gRnJpZWRyaWNoIChEZWJpYW4gcGF0Y2ggIzM4KS4KIAogMjAwNy0wNS0xMCAwNToxOCAgbWFnZnIKIAotCSogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotCSAgUEFUQ0ggMTY4NzMyOTogQXBwbGllZCBwYXJ0IDEgb2YgdGhlIHBhdGNoIC0gbGVzc2VucyB0aGUgc2NvcGUgb2YKLQkgIHRoZSBsdG1wMiB2YXJpYWJsZQorICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CisKKyAgIFBBVENIIDE2ODczMjk6IEFwcGxpZWQgcGFydCAxIG9mIHRoZSBwYXRjaCAtIGxlc3NlbnMgdGhlIHNjb3BlIG9mCisgICB0aGUgbHRtcDIgdmFyaWFibGUKIAogMjAwNy0wNS0wOSAyMzo1NyAgdGFuZGVycwogCi0JKiBSRUFETUUuaXJpeDoKLQkgIGRvY3VtZW50IG9wdGltaXplZCBJUklYIGNwdSBzdGF0cworICAgKiBSRUFETUUuaXJpeDoKKworICAgZG9jdW1lbnQgb3B0aW1pemVkIElSSVggY3B1IHN0YXRzCiAKIDIwMDctMDUtMDkgMjM6NDkgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsCi0JICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uYywKLQkgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5oOgotCSAgTkVXUzogaXJpeDogUEFUQ0g6IDE3MDk3NDg6IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cworICAgKiAgYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1LmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2luZm8uYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzaW5mby5oOgogCi0yMDA3LTA1LTA5IDIyOjE2ICB0YW5kZXJzCisgICBORVdTOiBpcml4OiBQQVRDSDogMTcwOTc0ODogT3B0aW1pemVkIElSSVggY3B1IHN0YXRzCiAKLQkqIGFnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5jOgotCSAgRml4IHByb2JsZW1zIHdpdGggc2luZ2xlLWxpbmUgZXh0ZW5kIHNjcmlwdHMuCi0JICAoZml4IHR5cG8gaW4gcjE2MzMyIGZvciA1LjQueCkKKzIwMDctMDUtMDkgMjE6MjMgIHJzdG9yeQogCi0yMDA3LTA1LTA5IDAxOjEwICBhbGV4X2IKKyAgICogZGlzdC9jdnNzaG93OgogCi0JKiB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZiwgd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYuaW46Ci0JICBXaW4zMiBidWlsZCBmaXhlcy4KKyAgIHVwZGF0ZSB0byBzaG93IHN2biByZXBvIHRvbworCisyMDA3LTA1LTA5IDE1OjM5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICBpY21wU3RhdHNUYWJsZSBpcyBvbmx5IGltcGxlbWVudGVkIGZvciBMaW51eAogCiAyMDA3LTA1LTA4IDE5OjQ4ICBtYWdmcgogCi0JKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0JICBSZXZlcnQgbWlzdGFrZW5seSBjb21taXR0ZWQgZXh0cmEgdHJhY2UgbG9ncworICAgKiBhZ2VudC9zbm1wX2FnZW50LmM6CisKKyAgIFJldmVydCBtaXN0YWtlbmx5IGNvbW1pdHRlZCBleHRyYSB0cmFjZSBsb2dzCiAKIDIwMDctMDUtMDcgMjA6NDYgIGhhcmRha2VyCiAKLQkqIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLAotCSAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUueHMsCi0JICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvdGVzdC5wbDoKLQkgIHVwZGF0ZSBhZ2VudDo6ZGVmYXVsdF9zdG9yZSBwZXJsIG1vZHVsZSBmb3IgbmV3IGRlZnMKKyAgICogIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCAgIAorICAgICAgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUueHMsICAgCisgICAgICBwZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvdGVzdC5wbDoKKworICAgdXBkYXRlIGFnZW50OjpkZWZhdWx0X3N0b3JlIHBlcmwgbW9kdWxlIGZvciBuZXcgZGVmcworCisyMDA3LTA1LTA3IDIwOjI0ICBoYXJkYWtlcgorCisgICAqIGRpc3QvcGF0bWU6CisKKyAgIG1vcmUgc3ZuIGNvbnZlcnNpb24gZml4ZXMKIAogMjAwNy0wNS0wNyAyMDoyMyAgaGFyZGFrZXIKIAotCSogYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF9hZ2VudC5jLAotCSAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKLQkgIE5FV1M6IHNubXBkOiBCVUc6IDE3MTI5ODg6IGRlZmF1bHQgYW5kIGNvbmZpZ3VyYWJsZSBtYXhpbXVtCi0JICBudW1iZXIgb2YgdmFyYmluZHMgcmV0dXJuYWJsZSB0byBhIEdFVEJVTEsgcmVxdWVzdAorICAgKiAgYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYywgYWdlbnQvc25tcF9hZ2VudC5jLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oLCBtYW4vc25tcGQuY29uZi41LmRlZjoKKworICAgTkVXUzogc25tcGQ6IEJVRzogMTcxMjk4ODogZGVmYXVsdCBhbmQgY29uZmlndXJhYmxlIG1heGltdW0KKyAgIG51bWJlciBvZiB2YXJiaW5kcyByZXR1cm5hYmxlIHRvIGEgR0VUQlVMSyByZXF1ZXN0CisKKzIwMDctMDUtMDcgMjA6MDUgIGhhcmRha2VyCisKKyAgICogZGlzdC9wYXRtZToKKworICAgcmVuYW1lIG9mIGJyYW5jaCBkaXJzCisKKzIwMDctMDUtMDcgMTY6MTQgIGhhcmRha2VyCisKKyAgICogZGlzdC9wYXRtZToKKworICAgYXR0ZW1wdGVkICh1bnRlc3RlZCkgdXBkYXRlCisKKzIwMDctMDUtMDcgMTM6NTUgIHJzdG9yeQorCisgICAqIGRpc3Qvc3ZudXA6CisKKyAgIGRvbid0IGRlbGV0ZSB0YXJiYWxsIGlmIHNjcCBmYWlscwogCiAyMDA3LTA1LTA0IDIwOjI3ICB0YW5kZXJzCiAKLQkqIHBlcmwvU05NUC9TTk1QLnhzOgotCSAgQ0hBTkdFUzogcGVybDogZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0CisgICAqIHBlcmwvU05NUC9TTk1QLnhzOgorCisgICBDSEFOR0VTOiBwZXJsOiBmaXggU05NUCBTRVQgZm9yIElQIGFkZHJlc3NlcyBvbiA2NC1iaXQKIAogMjAwNy0wNS0wNCAxMDoyMiAgdGFuZGVycwogCi0JKiBNYWtlZmlsZS5pbjoKLQkgIGluc3RhbGwgZHJhZ29uZmx5LmgKKyAgICogTWFrZWZpbGUuaW46CisKKyAgIGluc3RhbGwgZHJhZ29uZmx5LmgKIAogMjAwNy0wNS0wMyAyMzowMSAgdGFuZGVycwogCi0JKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kcmFnb25mbHkuaDoKLQkgIENIQU5HRVM6IEJVRzogMTcxMDkxMDogaW5pdGlhbCBzdXBwb3J0IGZvciBEcmFnb25GbHkgQlNECisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RyYWdvbmZseS5oOgorCisgICBDSEFOR0VTOiBCVUc6IDE3MTA5MTA6IGluaXRpYWwgc3VwcG9ydCBmb3IgRHJhZ29uRmx5IEJTRAogCiAyMDA3LTA1LTAzIDIyOjEwICB0YW5kZXJzCiAKLQkqIHBlcmwvU05NUC9TTk1QLnhzOgotCSAgQ0hBTkdFUzogcGVybDogZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0Ci0JICBQYXRjaCBwcm9wb3NlZCBieSBKZWZmIExhbmdlLgorICAgKiBwZXJsL1NOTVAvU05NUC54czoKKworICAgQ0hBTkdFUzogcGVybDogZml4IFNOTVAgU0VUIGZvciBJUCBhZGRyZXNzZXMgb24gNjQtYml0CisgICBQYXRjaCBwcm9wb3NlZCBieSBKZWZmIExhbmdlLgorCisyMDA3LTA1LTAzIDE2OjAwICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jOgorCisgICBidWlsZCBmaXggKGUuZy4gZm9yIGVhcmx5IEFJWCk6IHVzZSB1aW50MzJfdCBpLnMuby4gX191aW50MzJfdAogCiAyMDA3LTA1LTAyIDEzOjEzICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKLQkgIEZpeCBwcm9ibGVtcyB3aXRoIHNpbmdsZS1saW5lIGV4dGVuZCBzY3JpcHRzLgorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKKworICAgRml4IHByb2JsZW1zIHdpdGggc2luZ2xlLWxpbmUgZXh0ZW5kIHNjcmlwdHMuCisKKzIwMDctMDUtMDEgMTk6NTEgIHJzdG9yeQorCisgICAqIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzoKKworICAgLSB0ZXN0IGZvciBJRkFfRl9URU1QT1JBUlkgYmVmb3JlIHVzaW5nCisgICAtIHJlbW92ZSByZWR1bmRhbnQgaWZkZWYKIAogMjAwNy0wNS0wMSAxMTozNCAgZHRzMTIKIAotCSogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKLQkgIENIQU5HRVM6IHNubXB0cmFwZDogU3VwcG9ydCBmb3IgZm9yd2FyZGluZyB0cmFwcyBieSBPSUQgc3VidHJlZS4KLQkgIChDb25zaXN0ZW50IHdpdGggc3VidHJlZS1iYXNlZCBzY3JpcHQgcHJvY2Vzc2luZykuCisgICAqIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmM6CisKKyAgIENIQU5HRVM6IHNubXB0cmFwZDogU3VwcG9ydCBmb3IgZm9yd2FyZGluZyB0cmFwcyBieSBPSUQgc3VidHJlZS4KKyAgIChDb25zaXN0ZW50IHdpdGggc3VidHJlZS1iYXNlZCBzY3JpcHQgcHJvY2Vzc2luZykuCisKKzIwMDctMDQtMzAgMTQ6NTEgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTcwMzAwNDogQ29uc29saWRhdGUgc25tcDYgaGFuZGxpbmcuCisgICBQYXRjaCBzdXBwbGllZCBieSBOZWlsIEhvcm1hbiwgcGx1cyBzb21lIGV4dHJhIHRpZHlpbmcgdXAuCisKKzIwMDctMDQtMzAgMTQ6MzMgIGR0czEyCisKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jLCBhZ2VudC9taWJncm91cC9taWJJSS9pY21wLmg6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTcwMjM2NjogU3VwcG9ydCBmb3IgaWNtcFN0YXRzVGFibGUKKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IE5laWwgSG9ybWFuCisKKzIwMDctMDQtMzAgMTQ6MzEgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYywgYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMsIAorICAgICAgICBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAyMzYxOiBSZWFkIHN0YXRzIGZyb20gL3Byb2MvbmV0L3NubXA2CisKKzIwMDctMDQtMzAgMTQ6MTQgIGR0czEyCisKKyAgICogIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYzoKKworICAgRml4IGNvbXBpbGF0aW9uIHByb2JsZW1zIHdoZW4gSVB2NiBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLgogCiAyMDA3LTA0LTMwIDEzOjI2ICBkdHMxMgogCi0JKiBSRUFETUUuYWdlbnQtbWlicywgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uYywKLQkgIGFnZW50L21pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmg6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MDA3Mzc6IFRpZHkgdXAgc2V0U2VyaWFsTm8KLQkgIGltcGxlbWVudGF0aW9ucy4KKyAgICogIFJFQURNRS5hZ2VudC1taWJzLCBhZ2VudC9taWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaDoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAwNzM3OiBUaWR5IHVwIHNldFNlcmlhbE5vCisgICBpbXBsZW1lbnRhdGlvbnMuCiAKIDIwMDctMDQtMzAgMTM6MDYgIGR0czEyCiAKLQkqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAwNzMyOiBGaXggZGVidWcgb3V0cHV0IHN0YXRlbWVudHMuCisgICAqIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MDA3MzI6IEZpeCBkZWJ1ZyBvdXRwdXQgc3RhdGVtZW50cy4KIAogMjAwNy0wNC0zMCAxMzowMiAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNzAwNzMwOiBSZW1vdmUgdW51c2VkIGV4dGVybiBkZWNsYXJhdGlvbi4KKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE3MDA3MzA6IFJlbW92ZSB1bnVzZWQgZXh0ZXJuIGRlY2xhcmF0aW9uLgogCiAyMDA3LTA0LTMwIDExOjMyICBkdHMxMgogCi0JKiBhZ2VudC9oZWxwZXJzL2luc3RhbmNlLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2OTgxODQ6IFJlZ2lzdGVyIG5vbi1kZWZhdWx0IGNvbnRleHQKLQkgIGludGVnZXJzIGFzIHdyaXRhYmxlLgotCSAgUGF0Y2ggcHJvdmlkZWQgYnkgTWFyayBOYXlsb3IuCisgICAqIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjk4MTg0OiBSZWdpc3RlciBub24tZGVmYXVsdCBjb250ZXh0CisgICBpbnRlZ2VycyBhcyB3cml0YWJsZS4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IE1hcmsgTmF5bG9yLgorCisyMDA3LTA0LTMwIDExOjI2ICBkdHMxMgorCisgICAqICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjk4MTc6IEltcHJvdmVkIFJGQyA0MjkzIHN1cHBvcnQuCisgICBJbmNsdWRlcyBub24tdW5pY2FzdCBhbmQgcmFuZG9tbHkgY2hvc2VuIElQIGFkZHJlc3Nlcy4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IFZhcnVuIENoYW5kcmFtb2hhbgogCiAyMDA3LTA0LTMwIDExOjA0ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjkyNzY4OiBGaXggY29weWluZyBvZiBub24tb2N0ZXQtYWxpZ25lZAotCSAgSVAgYWRkcmVzcyBwcmVmaXhlcy4KKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjkyNzY4OiBGaXggY29weWluZyBvZiBub24tb2N0ZXQtYWxpZ25lZAorICAgSVAgYWRkcmVzcyBwcmVmaXhlcy4KKworMjAwNy0wNC0zMCAxMDo1MCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2xpbnV4LmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgsICAgCisgICAgICBhZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jLAorICAgICAgICAgYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jLCBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgsICAgCisgICAgICBpbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2NzA1MTE6IEltcGxlbWVudCBuZXR3b3JrIGNvbm5lY3Rpb24KKyAgIHByb2Nlc3MgSUQgb2JqZWN0cy4KKyAgIFBhdGNoIHByb3ZpZGVkIGJ5IFZhcnVuIENoYW5kcmFtb2hhbgorCisyMDA3LTA0LTMwIDEwOjQ2ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgorCisgICBGaXggZGVjbGFyYXRpb24gb2Ygc25tcF9zZXNzX3JlYWRfZXh0ZCgpCiAKIDIwMDctMDQtMzAgMTA6MjUgIGR0czEyCiAKLQkqIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2ODczMjU6IEZpeCBwcm9ibGVtIHdpdGggb3BlcmF0b3IKLQkgIHByZWNlZGVuY2UuCisgICAqIHNubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMyNTogRml4IHByb2JsZW0gd2l0aCBvcGVyYXRvcgorICAgcHJlY2VkZW5jZS4KKworMjAwNy0wNC0zMCAxMDoyMSAgZHRzMTIKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaDoKKworICAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2ODczMTk6IERlY2xhcmUgc25tcF9zZXNzX3JlYWRfZXh0ZCgpCisKKzIwMDctMDQtMzAgMTA6MTQgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMxODogTWFrZSBfc2Vzc19zZWxwb2xfaW5mbyBzdGF0aWMuCisKKzIwMDctMDQtMzAgMTA6MDkgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMxNzogUmVtb3ZlIGFuIHVudXNlZCBsb2NhbCB2YXJpYWJsZQogCiAyMDA3LTA0LTMwIDEwOjA3ICBkdHMxMgogCi0JKiBzbm1wbGliL3NubXBVbml4RG9tYWluLmMsIHNubXBsaWIvc25tcF9hcGkuYzoKLQkgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjg3MzE2OiBEb24ndCBkcm9wIGNvbnN0IGZyb20gY2FzdHMuCisgICAqIHNubXBsaWIvc25tcFVuaXhEb21haW4uYywgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTY4NzMxNjogRG9uJ3QgZHJvcCBjb25zdCBmcm9tIGNhc3RzLgorCisyMDA3LTA0LTI3IDEwOjIxICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmM6CisKKyAgIEJyaW5nIGR5bmFtaWMgbW9kdWxlIHVubG9hZCBwcm9jZXNzaW5nIG1vcmUgaW50byBsaW5lIHdpdGgKKyAgICJub3JtYWwiIE1JQiBtb2R1bGVzLiBTdWdnZXN0ZWQgYnkgTWFnbnVzIEZyb21yZWlkZS4KKyAgIFNlZSBjb2RlcnMgdGhyZWFkICJzaHV0ZG93bl9mb28gb3IgZGVpbml0X2ZvbyIuCisKKzIwMDctMDQtMjcgMTA6MTcgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgVXBkYXRlIHBvc3QtcmVsZWFzZSBhbm5vdW5jZW1lbnQgaW5zdHJ1Y3Rpb25zLgogCiAyMDA3LTA0LTI0IDEyOjM1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKLQkgIEZpeCBpbmNvbXBsZXRlIE9JRCBoYW5kbGluZyBvZiBzaW5nbGUtbGluZSBleHRlbmQgc2NyaXB0cy4KLQkgIFJlcG9ydGVkIGJ5IE1heCBvbiBjb2RlcnMgbGlzdCwgN3RoIEFwcmlsLiBTZWUgdGhyZWFkCi0JICAiLi4uIHNlZ2ZhdWx0IC4uIHdoZW4gYXR0ZW1wdGluZyBTTk1QIEdFVCBvbiBleHRlbmQgb3IgZXhlYyBpdGVtIgorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYzoKKworICAgRml4IGluY29tcGxldGUgT0lEIGhhbmRsaW5nIG9mIHNpbmdsZS1saW5lIGV4dGVuZCBzY3JpcHRzLgorICAgUmVwb3J0ZWQgYnkgTWF4IG9uIGNvZGVycyBsaXN0LCA3dGggQXByaWwuIFNlZSB0aHJlYWQKKyAgICIuLi4gc2VnZmF1bHQgLi4gd2hlbiBhdHRlbXB0aW5nIFNOTVAgR0VUIG9uIGV4dGVuZCBvciBleGVjIGl0ZW0iCiAKIDIwMDctMDQtMjAgMDg6MzAgIGR0czEyCiAKLQkqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgotCSAgRG9jdW1lbnQgdGhlIGJlaGF2aW91ciBvZiBhIGxvYWQgdGhyZXNob2xkIG9mIDAuCi0JICBSZXBvcnRlZCBieSBGb25nIFRzdWkuCisgICAqIG1hbi9zbm1wZC5jb25mLjUuZGVmOgorCisgICBEb2N1bWVudCB0aGUgYmVoYXZpb3VyIG9mIGEgbG9hZCB0aHJlc2hvbGQgb2YgMC4KKyAgIFJlcG9ydGVkIGJ5IEZvbmcgVHN1aS4KIAogMjAwNy0wNC0yMCAwODoyMSAgZHRzMTIKIAotCSogbWlicy9VQ0QtU05NUC1NSUIudHh0OgotCSAgTG9uZy10ZXJtIGxvYWQgYXZlcmFnZSBpcyBjYWxjdWxhdGVkIG92ZXIgMTUgbWludXRlcywgbm90IDEwLgotCSAgUmVwb3J0ZWQgYnkgRm9uZyBUc3VpCisgICAqIG1pYnMvVUNELVNOTVAtTUlCLnR4dDoKKworICAgTG9uZy10ZXJtIGxvYWQgYXZlcmFnZSBpcyBjYWxjdWxhdGVkIG92ZXIgMTUgbWludXRlcywgbm90IDEwLgorICAgUmVwb3J0ZWQgYnkgRm9uZyBUc3VpCisKKzIwMDctMDQtMTkgMTI6NTMgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgVHdlYWsgQ2hhbmdlTG9nIGluc3RydWN0aW9ucyBmb3IgU1ZOCiAKIDIwMDctMDQtMTAgMTQ6MTYgIGR0czEyCiAKLQkqIHBlcmwvU05NUC9TTk1QLnhzOgotCSAgRGV0ZWN0IE9JRCByZXRyYWNraW5nIChhcyB3ZWxsIGFzIHNpbXBsZSByZXBldGl0aW9ucykgd2hlbgotCSAgYnVsa3dhbGtpbmcgYW4gT0lEIHRyZWUuCi0JICBTZWUgdXNlcnMgdGhyZWFkICJtaXNzaW5nIGluZGljZXMgaW4gYnVsa3dhbGsgcmVzdWx0Ii4KKyAgICogcGVybC9TTk1QL1NOTVAueHM6CisKKyAgIERldGVjdCBPSUQgcmV0cmFja2luZyAoYXMgd2VsbCBhcyBzaW1wbGUgcmVwZXRpdGlvbnMpIHdoZW4KKyAgIGJ1bGt3YWxraW5nIGFuIE9JRCB0cmVlLgorICAgU2VlIHVzZXJzIHRocmVhZCAibWlzc2luZyBpbmRpY2VzIGluIGJ1bGt3YWxrIHJlc3VsdCIuCiAKIDIwMDctMDQtMTAgMTE6NDkgIGR0czEyCiAKLQkqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzIuaDoKLQkgIENsYXJpZnkgY29weXJpZ2h0IHN0YXR1cyBvZiBXaW4zMiBBUEkgZGVmaW5pdGlvbnMuCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL21pbmd3MzIuaDoKKworICAgQ2xhcmlmeSBjb3B5cmlnaHQgc3RhdHVzIG9mIFdpbjMyIEFQSSBkZWZpbml0aW9ucy4KIAogMjAwNy0wNC0xMCAxMToyNyAgZHRzMTIKIAotCSogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZHluaXguaDoKLQkgIENsYXJpZnkgY29weXJpZ2h0IHN0YXR1cyBvZiBCU0QtZGVyaXZlZCBUQ1BUViogZGVmaW5pdGlvbnMuCisgICAqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2R5bml4Lmg6CiAKLTIwMDctMDQtMDMgMDg6NTkgIHRhbmRlcnMKKyAgIENsYXJpZnkgY29weXJpZ2h0IHN0YXR1cyBvZiBCU0QtZGVyaXZlZCBUQ1BUViogZGVmaW5pdGlvbnMuCiAKLQkqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgotCSAgZml4IHN5bnRheCBlcnJvciBpbnRyb2R1Y2VkIGJ5IGxhc3QgcGF0Y2gKKzIwMDctMDQtMDkgMTQ6MDIgIHJzdG9yeQorCisgICAqIGRpc3Qvc3ZudXA6CisKKyAgIC0gcmVtb3ZlIGRlYnVnZ2luZworICAgLSBjaGVjayByYyBmb3IgdGFyLCBnemlwIGFuZCBzY3Agc3RlcHMKKworMjAwNy0wNC0wNiAxODozOCAgcnN0b3J5CisKKyAgICogZGlzdC9zdm51cDoKKworICAgc3ZuIGVxdWl2YWxlbnQgb2YgY3ZzdXAKIAogMjAwNy0wNC0wMyAwODo1NCAgZHRzMTIKIAotCSogbWFuL3NubXBkLmNvbmYuNS5kZWY6Ci0JICBFbXBoYXNpc2UgdGhlIHVzZSBvZiBTTk1QdjMgaW4gRGlzTWFuIG1vbml0b3JpbmcuCi0JICBGaXggdGhlIHN5bnRheCBvZiBub24tZXhpc3RhbmNlL3ZhbHVlLWNoYW5nZSB0ZXN0cy4KKyAgICogbWFuL3NubXBkLmNvbmYuNS5kZWY6CisKKyAgIEVtcGhhc2lzZSB0aGUgdXNlIG9mIFNOTVB2MyBpbiBEaXNNYW4gbW9uaXRvcmluZy4KKyAgIEZpeCB0aGUgc3ludGF4IG9mIG5vbi1leGlzdGFuY2UvdmFsdWUtY2hhbmdlIHRlc3RzLgogCiAyMDA3LTA0LTAyIDE0OjU1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMDQ2MzI3OiBSZXNldCAiaW5jbHVkZUFsbERpc2tzIiBmbGFnIHdoZW4KLQkgIHJlbG9hZGluZy4KKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMDQ2MzI3OiBSZXNldCAiaW5jbHVkZUFsbERpc2tzIiBmbGFnIHdoZW4KKyAgIHJlbG9hZGluZy4KIAogMjAwNy0wNC0wMiAxNDo0NSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTYwMjI4NjogRG9uJ3QgbGV0IHRhYmxlIGhvbGVzIGJsb2NrIGxhdGVyCi0JICByb3dzLgorICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2MDIyODY6IERvbid0IGxldCB0YWJsZSBob2xlcyBibG9jayBsYXRlcgorICAgcm93cy4KIAogMjAwNy0wNC0wMiAxMzo1MSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTA3Mzc4MjogUmVzdG9yZSBQZXJmU3RhdCB2YWx1ZXMgZm9yIEZyZWVCU0QKLQkgIDUueCBzeXN0ZW1zLgotCSAgSXQncyB1bmNsZWFyIHdoeSB0aGUgIm5ldyIgY2FsY3VsYXRpb24gd2FzIGEpIHByb3Bvc2VkLCBiKQotCSAgd2l0aGRyYXduLAotCSAgYW5kIGMpIHdoYXQgd2FzIHdyb25nIHdpdGggdGhlIHByZXZpb3VzIGNhbGN1bGF0aW9uICh3aGljaCBzZWVtcwotCSAgdG8KLQkgIG1hdGNoIHRoZSBvdXRwdXQgb2YgJ3BzJykKKyAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMDczNzgyOiBSZXN0b3JlIFBlcmZTdGF0IHZhbHVlcyBmb3IgRnJlZUJTRAorICAgNS54IHN5c3RlbXMuCisgICBJdCdzIHVuY2xlYXIgd2h5IHRoZSAibmV3IiBjYWxjdWxhdGlvbiB3YXMgYSkgcHJvcG9zZWQsIGIpCisgICB3aXRoZHJhd24sCisgICBhbmQgYykgd2hhdCB3YXMgd3Jvbmcgd2l0aCB0aGUgcHJldmlvdXMgY2FsY3VsYXRpb24gKHdoaWNoIHNlZW1zCisgICB0bworICAgbWF0Y2ggdGhlIG91dHB1dCBvZiAncHMnKQogCiAyMDA3LTA0LTAyIDEzOjA2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDkwMjYxMDogRG9uJ3QgZGlzY2FyZCBwZW5kaW5nIGRhdGEgZm9sbG93aW5nCi0JICBhIFRSQVAuCisgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiA5MDI2MTA6IERvbid0IGRpc2NhcmQgcGVuZGluZyBkYXRhIGZvbGxvd2luZworICAgYSBUUkFQLgogCiAyMDA3LTA0LTAyIDEyOjU2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDkwMjgwMTogRml4IG9yZGVyaW5nIG9mIFNNVVgtcmVnaXN0ZXJlZAotCSAgc3VidHJlZXMuCisgICAqIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiA5MDI4MDE6IEZpeCBvcmRlcmluZyBvZiBTTVVYLXJlZ2lzdGVyZWQKKyAgIHN1YnRyZWVzLgogCiAyMDA3LTA0LTAyIDEyOjM1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2ODUwNjc6IE1vcmUgcHJlY2lzZSBoYW5kbGluZyBvZgotCSAgU05NUHYzLWFkbWluIE1JQiB0YWJsZXMuCi0JICBUaGlzIGFjdHVhbGx5IGZpeGVzIHRocmVlIHNlcGFyYXRlIHByb2JsZW1zOgotCSAgKiBBIEdFVCByZXF1ZXN0IGZvciAndmFjbUdyb3VwTmFtZS57Z3JvdXB9LjAue2FueXRoaW5nfScgd2lsbAotCSAgc3VjY2VlZAotCSAgKHNpbmNlIHRoZSAwIHN1YmlkIGFjdHMgYXMgYSBudWxsLXRlcm1pbmF0b3IgZm9yIHRoZSBncm91cCBuYW1lKS4KLQkgICogQSBHRVQgcmVxdWVzdCBmb3IgJ3ZhY21WaWV3VHJlZUZhbWlseVR5cGUuIl9ub25lIi4xJyB3aWxsCi0JICBzdWNjZWVkCi0JICAoaW1wbGljaXRseSBhZGRpbmcgdGhlIHN1YmlkIDAgdG8gdGhlIGluY29tcGxldGUgT0lEIGluZGV4IHZhbHVlKQotCSAgKiBBIEdFVCByZXF1ZXN0IGZvciAndmFjbUFjY2Vzc1N0YXR1cy4iZ3JvdXAiLiIiLjMuNCcgd2lsbAotCSAgc3VjY2VlZAotCSAgKHNpbmNlIFZBQ00gY2hlY2tzIGFjY2VwdCB0aGUgZ2l2ZW4gc2VjdXJpdHkgbGV2ZWwgKm9yKmhpZ2hlciopCisgICAqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jOgogCi0yMDA3LTA0LTAyIDEyOjI2ICBkdHMxMgorICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTY4NTA2NzogTW9yZSBwcmVjaXNlIGhhbmRsaW5nIG9mCisgICBTTk1QdjMtYWRtaW4gTUlCIHRhYmxlcy4KKyAgIFRoaXMgYWN0dWFsbHkgZml4ZXMgdGhyZWUgc2VwYXJhdGUgcHJvYmxlbXM6CisgICAqICBBIEdFVCByZXF1ZXN0IGZvciAndmFjbUFjY2Vzc1N0YXR1cy4iZ3JvdXAiLiIiLjMuNCcgd2lsbCAgIAorICAgICAgc3VjY2VlZCAgICAoc2luY2UgVkFDTSBjaGVja3MgYWNjZXB0IHRoZSBnaXZlbiBzZWN1cml0eSBsZXZlbAorICAgICAgKm9yKmhpZ2hlciopICAyMDA3LTA0LTAyIDEyOjI2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuYzoKLQkgIENoZWNrIHRoYXQgR0VUIHJlcXVlc3RzIG1hdGNoIGEgdmFsaWQgT0lELgotCSAgKE90aGVyd2lzZSBhIHJlcXVlc3QgZm9yIGhyU3RvcmFnZXtDb2x1bW59LntpbmRleH0ue2FueXRoaW5nfQotCSAgd2lsbCBpZ25vcmUgdGhlIGV4dHJhIHN1YmlkcywgYW5kIHJldHVybiBzdWNjZXNzKQorCisgICAqIGFnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jOgorCisgICBDaGVjayB0aGF0IEdFVCByZXF1ZXN0cyBtYXRjaCBhIHZhbGlkIE9JRC4KKyAgIChPdGhlcndpc2UgYSByZXF1ZXN0IGZvciBoclN0b3JhZ2V7Q29sdW1ufS57aW5kZXh9Lnthbnl0aGluZ30KKyAgIHdpbGwgaWdub3JlIHRoZSBleHRyYSBzdWJpZHMsIGFuZCByZXR1cm4gc3VjY2VzcykKIAogMjAwNy0wNC0wMiAxMjoyMSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jOgotCSAgUHJldmVudCBjcmFzaCB3aGVuIHdhbGtpbmcgKGludmFsaWQ/KSBFdmVudC1NSUIgT2JqZWN0cyBUYWJsZS4KKyAgICogYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5jOgorCisgICBQcmV2ZW50IGNyYXNoIHdoZW4gd2Fsa2luZyAoaW52YWxpZD8pIEV2ZW50LU1JQiBPYmplY3RzIFRhYmxlLgogCiAyMDA3LTA0LTAyIDExOjMwICBkdHMxMgogCi0JKiBkaXN0L21ha2VyZWxlYXNlOgotCSAgRml4IGEgY291cGxlIG9mIHR5cG9zIGluIHRoZSByZS13b3JrZWQgbWFrZXJlbGVhc2Ugc2NyaXB0LgorICAgKiBkaXN0L21ha2VyZWxlYXNlOgorCisgICBGaXggYSBjb3VwbGUgb2YgdHlwb3MgaW4gdGhlIHJlLXdvcmtlZCBtYWtlcmVsZWFzZSBzY3JpcHQuCiAKIDIwMDctMDMtMjkgMTI6MTQgIHRhbmRlcnMKIAotCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0JICBmaXggc3ludGF4IGVycm9yICgiPT0iIGlzIGJhZCkKKyAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIGZpeCBzeW50YXggZXJyb3IgKCI9PSIgaXMgYmFkKQorCisyMDA3LTAzLTI3IDA4OjU1ICBkdHMxMgorCisgICAqIGFjaW5jbHVkZS5tNCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIFJlYWQgdXNlci1wcm9tcHRlZCB2YWx1ZXMgZnJvbSBvcmlnaW5hbCBzdGRpbiAobm90IC9kZXYvbnVsbCkKIAogMjAwNy0wMy0yNyAwODozOCAgZHRzMTIKIAotCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0JICBBY2NlcHQgJzJjJyBhcyBhIHZhbGlkIHJlc3BvbnNlIHdoZW4gY2hvb3NpbmcgdGhlIGRlZmF1bHQgdmVyc2lvbgorICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKKworICAgQWNjZXB0ICcyYycgYXMgYSB2YWxpZCByZXNwb25zZSB3aGVuIGNob29zaW5nIHRoZSBkZWZhdWx0IHZlcnNpb24KIAogMjAwNy0wMy0yNyAwODoyOSAgZHRzMTIKIAotCSogY29uZmlndXJlLCBjb25maWd1cmUuaW46Ci0JICBDSEFOR0VTOiBjb25maWd1cmU6IEJVRzogMTU2NzMyNDogQ2xhcmlmeSBwcm9tcHRpbmcgZm9yCi0JICB1c2VyLXN1cHBsaWVkIHZhbHVlcy4KLQkgIE5vdyBvbmx5IHJlbWVtYmVycyAoYW5kIHVzZXMpIHByZXZpb3VzIHZhbHVlcyB3aGVuIGV4cGxpY2l0bHkKLQkgIHRvbGQgdG8gZG8gc28sCi0JICBlLmcuIGNvbmZpZ3VyZSAtQworICAgKiBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKIAotMjAwNy0wMy0yNSAyMjozMiAgZHRzMTIKKyAgIENIQU5HRVM6IGNvbmZpZ3VyZTogQlVHOiAxNTY3MzI0OiBDbGFyaWZ5IHByb21wdGluZyBmb3IKKyAgIHVzZXItc3VwcGxpZWQgdmFsdWVzLgorICAgTm93IG9ubHkgcmVtZW1iZXJzIChhbmQgdXNlcykgcHJldmlvdXMgdmFsdWVzIHdoZW4gZXhwbGljaXRseQorICAgdG9sZCB0byBkbyBzbywKKyAgIGUuZy4gY29uZmlndXJlIC1DCiAKLQkqIGxvY2FsL21pYjJjLmNvbnRhaW5lci5jb25mLCBsb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYsCi0JICBsb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmY6Ci0JICBWYXJpYWJsZS1sZW5ndGggc3RyaW5nIHZhbHVlcyBhcmUgbW9yZSBsaWtlbHkgdGhhbiBmaXhlZCBsZW5ndGguCisyMDA3LTAzLTI3IDA4OjIzICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorCisgICBGaXggaW5jb25zaXN0ZW5jeSBpbiBwYXRjaCAjMTYyNzA0OSAtIDxwb2xsLmg+IHZzIDxzeXMvcG9sbC5oPgorCisyMDA3LTAzLTI1IDIyOjMxICBkdHMxMgorCisgICAqICBsb2NhbC9taWIyYy5jb250YWluZXIuY29uZiwgbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mLCAgIAorICAgICAgbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mOgorCisgICBWYXJpYWJsZS1sZW5ndGggc3RyaW5nIHZhbHVlcyBhcmUgbW9yZSBsaWtlbHkgdGhhbiBmaXhlZCBsZW5ndGguCiAKIDIwMDctMDMtMjUgMjI6MjggIGR0czEyCiAKLQkqIGxvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZjoKLQkgIENIQU5HRVM6IG1pYjJjOiBCVUc6IDgzMzY3MzogTW9yZSBmb2N1c2VkIHNpemUgY2hlY2tzLgorICAgKiBsb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmY6CisKKyAgIENIQU5HRVM6IG1pYjJjOiBCVUc6IDgzMzY3MzogTW9yZSBmb2N1c2VkIHNpemUgY2hlY2tzLgogCiAyMDA3LTAzLTI1IDIxOjI1ICBkdHMxMgogCi0JKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNjc3MDYzOiBDaGVjayBmb3IgZmFpbGVkIG1hbGxvYyBjYWxscy4KKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxNjc3MDYzOiBDaGVjayBmb3IgZmFpbGVkIG1hbGxvYyBjYWxscy4KIAogMjAwNy0wMy0yNSAxOTowMyAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYzoKLQkgIENoZWNrIFNFVCByZXF1ZXN0cyBhZ2FpbnN0IHRoZSBjb3JyZWN0IHR5cGUgKElQIEFkZHJlc3MgIT0gT2N0ZXQKLQkgIFN0cikKKyAgICogYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYzoKIAotMjAwNy0wMy0yNSAxODo1OCAgZHRzMTIKKyAgIENoZWNrIFNFVCByZXF1ZXN0cyBhZ2FpbnN0IHRoZSBjb3JyZWN0IHR5cGUgKElQIEFkZHJlc3MgIT0gT2N0ZXQKKyAgIFN0cikKIAotCSogYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2ODUwODE6IENoZWNrIGZvciB2YWxpZCBPSUQgb24gRnJlZS9VbmRvCi0JICBwYXNzZXMuCisyMDA3LTAzLTI1IDE4OjU1ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2ODUwODE6IENoZWNrIGZvciB2YWxpZCBPSUQgb24gRnJlZS9VbmRvCisgICBwYXNzZXMuCiAKIDIwMDctMDMtMjMgMDk6NDQgIGR0czEyCiAKLQkqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oOgotCSAgQ0hBTkVHUzogc25tcGxpYjogQlVHOiAxNjg2Mzg0OiBEb2N1bWVudCBub24tdXNlIG9mICdyZW1vdGVfcG9ydCcKLQkgIGZpZWxkLgorICAgKiBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaDoKKworICAgQ0hBTkVHUzogc25tcGxpYjogQlVHOiAxNjg2Mzg0OiBEb2N1bWVudCBub24tdXNlIG9mICdyZW1vdGVfcG9ydCcKKyAgIGZpZWxkLgogCiAyMDA3LTAzLTIzIDA5OjE5ICBkdHMxMgogCi0JKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXBlcnNpc3RlbmNlLm0yaToKLQkgIEFsbG93IHNwYWNlIGZvciBleHRlcm5hbCBpbmRleGVzIHdoZW4gc2F2aW5nIHRhYmxlIGVudHJpZXMuCi0JICAoU2VlIHBhdGNoICMxNjQyMjU1KQorICAgKiBsb2NhbC9taWIyYy1jb25mLmQvbWZkLXBlcnNpc3RlbmNlLm0yaToKIAotMjAwNy0wMy0yMyAwOToxNSAgZHRzMTIKKyAgIEFsbG93IHNwYWNlIGZvciBleHRlcm5hbCBpbmRleGVzIHdoZW4gc2F2aW5nIHRhYmxlIGVudHJpZXMuCisgICAoU2VlIHBhdGNoICMxNjQyMjU1KQogCi0JKiBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY0MjI1NTogSGFuZGxlIHNhdmluZyBsb25nCi0JICBzbm1wTm90aWZ5RmlsdGVyVGFibGUgZW50cmllcy4KKzIwMDctMDMtMjMgMDk6MTQgIGR0czEyCisKKyAgICogCisgICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjQyMjU1OiBIYW5kbGUgc2F2aW5nIGxvbmcKKyAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZSBlbnRyaWVzLgorCisyMDA3LTAzLTIzIDA5OjA5ICBkdHMxMgorCisgICAqICBhZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jLCBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYywgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oLCBzbm1wbGliL3JlYWRfY29uZmlnLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjgxOTc3OiBBZGQgY2FsbGJhY2tzIHByaW9yIHRvIHJlYWRpbmcKKyAgIGNvbmZpZy4KIAogMjAwNy0wMy0yMyAwOTowNiAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY3NjQ3ODogZml4IHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzcwotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTY3NjQ3NjogZml4IHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzcworICAgKiBhZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2NzY0Nzg6IGZpeCB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3MKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE2NzY0NzY6IGZpeCB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3MKIAogMjAwNy0wMy0yMyAwOTowMSAgZHRzMTIKIAotCSogc25tcGxpYi9zbm1wX2FwaS5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2NTM2NzA6IENvbnNpc3RlbnQgU05NUHYzIGJlaGF2aW91cgotCSAgd2hlbiBvcGVuaW5nIHNlc3Npb25zLgorICAgKiBzbm1wbGliL3NubXBfYXBpLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjUzNjcwOiBDb25zaXN0ZW50IFNOTVB2MyBiZWhhdmlvdXIKKyAgIHdoZW4gb3BlbmluZyBzZXNzaW9ucy4KKworMjAwNy0wMy0yMyAwODo1NyAgZHRzMTIKKworICAgKiAgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oLCAgIAorICAgICAgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiwgc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTYyNzA0OTogTmV3IEFQSSB0byBoYW5kbGUgbGFyZ2UgbnVtYmVycworICAgb2YgZmlsZSBkZXNjcmlwdG9ycy4KIAogMjAwNy0wMy0yMiAxOToxNCAgZHRzMTIKIAotCSogc25tcGxpYi9yZWFkX2NvbmZpZy5jOgotCSAgQ0hBTkdFUzogc25tcGxpYjogUEFUQ0g6IDE2ODEwMzA6IEJldHRlciBoYW5kbGluZyBvZiBlbXB0eQotCSAgYXBwdHlwZSBjb25maWdzLgorICAgKiBzbm1wbGliL3JlYWRfY29uZmlnLmM6CisKKyAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjgxMDMwOiBCZXR0ZXIgaGFuZGxpbmcgb2YgZW1wdHkKKyAgIGFwcHR5cGUgY29uZmlncy4KIAogMjAwNy0wMy0yMiAxOToxMiAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMsIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5oLAotCSAgYWdlbnQvc25tcGQuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY3ODc4ODogQmV0dGVyIGhhbmRsaW5nIG9mIFNNVVggc29ja2V0Ci0JICBkZXNjcmlwdG9ycy4KKyAgICogIGFnZW50L21pYmdyb3VwL3NtdXgvc211eC5jLCBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguaCwgICAKKyAgICAgIGFnZW50L3NubXBkLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY3ODc4ODogQmV0dGVyIGhhbmRsaW5nIG9mIFNNVVggc29ja2V0CisgICBkZXNjcmlwdG9ycy4KIAogMjAwNy0wMy0yMiAxOTowOSAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY4MzA1NDogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8KLQkgIGlkZW50aWZ5IGRpZmZlcmVudCBwcm9jZXNzZXMuCisgICAqIGFnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY4MzA1NDogc2V0IHVkcEVuZHBvaW50SW5zdGFuY2UgdG8KKyAgIGlkZW50aWZ5IGRpZmZlcmVudCBwcm9jZXNzZXMuCiAKIDIwMDctMDMtMjEgMTI6MzUgIGR0czEyCiAKLQkqIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLCB3aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wLmRlZi5pbjoKLQkgIERlY2xhcmUgT0lEIGNvbnN0YW50cyBhcyBzdWNoIChyYXRoZXIgdGhhbiBBUEkgY2FsbHMpLgotCSAgUHJvcG9zZWQgYnkgQWxleCBCdXJnZXIKKyAgICogd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYsIHdpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmLmluOgogCi0yMDA3LTAzLTIwIDIwOjA4ICByc3RvcnkKKyAgIERlY2xhcmUgT0lEIGNvbnN0YW50cyBhcyBzdWNoIChyYXRoZXIgdGhhbiBBUEkgY2FsbHMpLgorICAgUHJvcG9zZWQgYnkgQWxleCBCdXJnZXIKIAotCSogYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmM6Ci0JICBORVdTOiBzbm1wZDogUEFUQ0g6IDE2NjY3Mzc6IGluY2x1ZGUgaXB2NiBjb3VudHMgaW4KLQkgIHVkcEluRGF0YWdyYW1zLCB1ZHBOb1BvcnRzLCB1ZHBJbkVycm9ycywgdWRwT3V0RGF0YWdyYW1zCisyMDA3LTAzLTIwIDIwOjA3ICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguYzoKKworICAgTkVXUzogc25tcGQ6IFBBVENIOiAxNjY2NzM3OiBpbmNsdWRlIGlwdjYgY291bnRzIGluCisgICB1ZHBJbkRhdGFncmFtcywgdWRwTm9Qb3J0cywgdWRwSW5FcnJvcnMsIHVkcE91dERhdGFncmFtcwogCiAyMDA3LTAzLTE5IDIyOjA5ICB0YW5kZXJzCiAKLQkqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmM6Ci0JICB1c2UgcG1GcmVlUmVzdWx0KCkgaW5zdGVhZCBvZiBmcmVlKCkKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9wY3AuYzoKIAotMjAwNy0wMy0xNyAwMDoyNSAgdGFuZGVycworICAgdXNlIHBtRnJlZVJlc3VsdCgpIGluc3RlYWQgb2YgZnJlZSgpCiAKLQkqIGFnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oLAotCSAgYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5oLAotCSAgYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbjoKLQkgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY4MTA3MzogI2lmZGVmIGJhc2VkIGNvbmZpZ19lcnJvciBpbnN0ZWFkCi0JICBvZiBzcGVjaWFsIGNhc2VzIGluIGNvbmZpZ3VyZQotCSAgQmFja3BvcnQgZnJvbSBNQUlOLgorMjAwNy0wMy0xOSAwOTozOSAgdGFuZGVycworCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jOgorCisgICBnZXQgcmlkIG9mIEMrKyBjb21tZW50cwogCiAyMDA3LTAzLTE2IDE0OjA0ICBkdHMxMgogCi0JKiBkaXN0L2NoYW5nZWxvZ2ZpeCwgZGlzdC9tYWtlcmVsZWFzZSwgbG9jYWwvVmVyc2lvbi1NdW5nZS5wbDoKLQkgIENvbnZlcnQgYnVpbGQgc3lzdGVtIHRvIFNWTiB2ZXJzaW9uLgorICAgKiAgZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUywgZGlzdC9jaGFuZ2Vsb2dmaXgsIGRpc3QvbWFrZXJlbGVhc2UsICAgCisgICAgICBsb2NhbC9WZXJzaW9uLU11bmdlLnBsOgorCisgICBDb252ZXJ0IGJ1aWxkIHN5c3RlbSB0byBTVk4gdmVyc2lvbi4KKworMjAwNy0wMy0xNSAxMDo1OSAgdGFuZGVycworCisgICAqICBhZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuaCwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY4MTA3MzogI2lmZGVmIGJhc2VkIGNvbmZpZ19lcnJvciBpbnN0ZWFkCisgICBvZiBzcGVjaWFsIGNhc2VzIGluIGNvbmZpZ3VyZQorCisyMDA3LTAzLTE1IDEwOjQ3ICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jOgorCisgICBnZXQgcmlkIG9mIEMrKyBjb21tZW50cwogCiAyMDA3LTAzLTE0IDIzOjMxICB0YW5kZXJzCiAKLQkqIFJFQURNRS5pcml4LCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwKLQkgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmMsCi0JICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BjcC5oOgotCSAgTkVXUzogSVJJWDogUEFUQ0g6IDE2NzU4Njk6IGZyb20gYmJpY2U6IENQVSBzdGF0aXN0aWNzIGZvciBJUklYCi0JICBiYXNlZCBvbiBQQ1AKKyAgICogIFJFQURNRS5pcml4LCBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCwgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfcGNwLmMsICAgCisgICAgICBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3BjcC5oOgorCisgICBORVdTOiBJUklYOiBQQVRDSDogMTY3NTg2OTogZnJvbSBiYmljZTogQ1BVIHN0YXRpc3RpY3MgZm9yIElSSVgKKyAgIGJhc2VkIG9uIFBDUAorCisyMDA3LTAzLTE0IDIyOjA5ICB0YW5kZXJzCisKKyAgICogIGFnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYywgYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvY2FjaGVfaGFuZGxlci5jLCBhZ2VudC9oZWxwZXJzL2RlYnVnX2hhbmRsZXIuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvaW5zdGFuY2UuYywgYWdlbnQvaGVscGVycy9udWxsLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvcm93X21lcmdlLmMsIGFnZW50L2hlbHBlcnMvc2NhbGFyLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jLCBhZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jLCBhZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYywgICAKKyAgICAgIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsICAgCisgICAgICBhZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYywgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCAgIAorICAgICAgYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjgxMDQzOiBmcm9tIG1hZ2ZyOiBjbGVhbiB1cCBoZWxwZXIKKyAgIGluY2x1ZGVzCisKKzIwMDctMDMtMTQgMjE6NTQgIHRhbmRlcnMKKworICAgKiBuZXQtc25tcC1jb25maWcuaW46CisKKyAgIENIQU5HRVM6IFBBVENIOiAxNjgxMDM1OiBmcm9tIG1hZ2ZyOiBpbXByb3ZlIG5ldC1zbm1wLWNvbmZpZworICAgL2Jpbi9zaCBjb21wYXRpYmlsaXR5CisKKzIwMDctMDMtMTQgMTg6MzEgIHRhbmRlcnMKKworICAgKiBuZXQtc25tcC1jb25maWcuaW46CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBQQVRDSDogMTY3ODMwMDogZnJvbSBtYWdmcjogY29tcGlsZS1zdWJhZ2VudAorICAgZG9lc24ndCBjYWxsIHNodXRkb3duXyBtZXRob2RzCiAKIDIwMDctMDMtMTQgMTY6MTIgIGR0czEyCiAKLQkqIGFnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjQ0MjgwOiBEb24ndCBhdXRvbWF0aWNhbGx5IHByb2JlIGZvcgotCSAgdjMgRW5naW5lSURzLgorICAgKiBhZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjQ0MjgwOiBEb24ndCBhdXRvbWF0aWNhbGx5IHByb2JlIGZvcgorICAgdjMgRW5naW5lSURzLgogCiAyMDA3LTAzLTEzIDEwOjI2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6Ci0JICBDaGVjayBmb3IgemVyby1zaXplIHBzZXVkby1maWxlc3lzdGVtcy4gUmVwb3J0IHRoZW0gYXMgZW1wdHkKLQkgIHJhdGhlciB0aGFuIGZ1bGwsIHNvIHRoZXkgd29uJ3QgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4KKyAgICogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgogCi0yMDA3LTAzLTEzIDA5OjExICB0YW5kZXJzCi0KLQkqIHNubXBsaWIvbWliLmM6Ci0JICBCYWNrIG91dCBjaGFuZ2VzIHRvIGJyYW5jaGVzIGRvbmUgaW4gU1ZOIDE1OTUzIChwYXRjaCAxNjc4MzAyKQotCSAgYmVjYXVzZSB0aGV5IGFyZSBvbmx5IGFwcHJvcHJpYXRlIGZvciBNQUlOCisgICBDaGVjayBmb3IgemVyby1zaXplIHBzZXVkby1maWxlc3lzdGVtcy4gUmVwb3J0IHRoZW0gYXMgZW1wdHkKKyAgIHJhdGhlciB0aGFuIGZ1bGwsIHNvIHRoZXkgd29uJ3QgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4KIAogMjAwNy0wMy0xMyAwNTo1OSAgdGFuZGVycwogCi0JKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1Lmg6Ci0JICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwNTogZnJvbSBtYWdmcjogRGVhbGxvY2F0ZSB0aGUgY2FjaGUgaW4KLQkgIGhhcmR3YXJlL2NwdS9jcHUgb24gc2h1dGRvd24gKGhlYWRlciBwYXJ0KQorICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1Lmg6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxNjc4MzA1OiBmcm9tIG1hZ2ZyOiBEZWFsbG9jYXRlIHRoZSBjYWNoZSBpbgorICAgaGFyZHdhcmUvY3B1L2NwdSBvbiBzaHV0ZG93biAoaGVhZGVyIHBhcnQpCiAKIDIwMDctMDMtMTIgMjM6MDkgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLAotCSAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oOgotCSAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDY6IGZyb20gbWFnZnI6IERlYWxsb2NhdGUgdGhlIGxvZyBpbgotCSAgbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZworICAgKiAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwNjogZnJvbSBtYWdmcjogRGVhbGxvY2F0ZSB0aGUgbG9nIGluCisgICBub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nCiAKIDIwMDctMDMtMTIgMjM6MDQgIHRhbmRlcnMKIAotCSogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdS5jOgotCSAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDU6IGZyb20gbWFnZnI6IERlYWxsb2NhdGUgdGhlIGNhY2hlIGluCi0JICBoYXJkd2FyZS9jcHUvY3B1IG9uIHNodXRkb3duCisgICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDU6IGZyb20gbWFnZnI6IERlYWxsb2NhdGUgdGhlIGNhY2hlIGluCisgICBoYXJkd2FyZS9jcHUvY3B1IG9uIHNodXRkb3duCiAKIDIwMDctMDMtMTIgMjI6NTcgIHRhbmRlcnMKIAotCSogc25tcGxpYi9taWIuYzoKLQkgIENIQU5HRVM6IFBBVENIOiAxNjc4MzAyOiBmcm9tIG1hZ2ZyOiBuZXRzbm1wX21pYmluZGV4X2xvYWQgbGVha3MKLQkgIG1lbW9yeQorICAgKiBzbm1wbGliL21pYi5jOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwMjogZnJvbSBtYWdmcjogbmV0c25tcF9taWJpbmRleF9sb2FkIGxlYWtzCisgICBtZW1vcnkKIAogMjAwNy0wMy0xMiAyMjo1MCAgdGFuZGVycwogCi0JKiBzbm1wbGliL3NubXBfYXBpLmM6Ci0JICBDSEFOR0VTOiBQQVRDSDogMTY3ODMwMTogZnJvbSBtYWdmcjogZGVhbGxvY2F0ZSBkb21haW4gcmVnaXN0cnkKLQkgIGF0IHNodXRkb3duCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgzMDE6IGZyb20gbWFnZnI6IGRlYWxsb2NhdGUgZG9tYWluIHJlZ2lzdHJ5CisgICBhdCBzaHV0ZG93bgogCiAyMDA3LTAzLTEyIDIyOjMxICB0YW5kZXJzCiAKLQkqIG5ldC1zbm1wLWNvbmZpZy5pbjoKLQkgIENIQU5HRVM6IFBBVENIOiAxNjc4Mjk4OiBmcm9tIG1hZ2ZyOiBjb21waWxlLXN1YmFnZW50IGNoZWNrcyBmb3IKLQkgIGJhZCBIQVZFX1NJR05BTF9ICisgICAqIG5ldC1zbm1wLWNvbmZpZy5pbjoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2NzgyOTg6IGZyb20gbWFnZnI6IGNvbXBpbGUtc3ViYWdlbnQgY2hlY2tzIGZvcgorICAgYmFkIEhBVkVfU0lHTkFMX0gKKworMjAwNy0wMy0xMiAyMTo0NyAgZHRzMTIKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY5MDQ4OiBBZGQgc3VwcG9ydCBmb3IKKyAgIGlwdjZJbnRlcmZhY2VJZGVudGlmaWVyCiAKIDIwMDctMDMtMTIgMjE6MzcgIGR0czEyCiAKLQkqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE0MTM3Mjg6IFJlZmVyZW5jZSBpbmRleCB2YWx1ZXMgaW4gZGVidWcKLQkgIG91dHB1dCBjb3JyZWN0bHkuCisgICAqIGFnZW50L2hlbHBlcnMvdGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTQxMzcyODogUmVmZXJlbmNlIGluZGV4IHZhbHVlcyBpbiBkZWJ1ZworICAgb3V0cHV0IGNvcnJlY3RseS4KIAogMjAwNy0wMy0xMiAyMTozNCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IEJVRzogMTEwMjA1ODogU2tpcCBub24tbW91bnRlZCBkaXNrcyAoZS5nLiBzd2FwCi0JICBwYXJ0aXRpb25zKQorICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDExMDIwNTg6IFNraXAgbm9uLW1vdW50ZWQgZGlza3MgKGUuZy4gc3dhcAorICAgcGFydGl0aW9ucykKIAogMjAwNy0wMy0xMiAyMTozMCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jLAotCSAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jLAotCSAgYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zeXNjdGwuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY4MTkzOiBVcGRhdGUgcmVnaXN0cmF0aW9uIG9mCi0JICBSZWFzbU1heFNpemUgc3VwcG9ydC4KKyAgICogIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYywgICAKKyAgICAgIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc3lzY3RsLmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY4MTkzOiBVcGRhdGUgcmVnaXN0cmF0aW9uIG9mCisgICBSZWFzbU1heFNpemUgc3VwcG9ydC4KIAogMjAwNy0wMy0xMiAyMToyOCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjY4MTkzOiBGaXggY2hlY2sgZm9yIHY2IFJlYXNtTWF4U2l6ZQotCSAgc3VwcG9ydC4KKyAgICogYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2NjgxOTM6IEZpeCBjaGVjayBmb3IgdjYgUmVhc21NYXhTaXplCisgICBzdXBwb3J0LgogCiAyMDA3LTAzLTEyIDE5OjU2ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2ODk1MjogSWdub3JlIHpvbWJpZSBwcm9jZXNzZXMuCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2Njg5NTI6IElnbm9yZSB6b21iaWUgcHJvY2Vzc2VzLgogCiAyMDA3LTAzLTEyIDE5OjU0ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2NjU5ODU6IEltcGxlbWVudCBpcFJlYXNtVGltZW91dAotCSAgVGhvdWdoIHRoaXMgcmVnaXN0ZXJzIGFuIGluc3RhbmNlLCByYXRoZXIgdGhhbiB0aGUgZnVsbCBzY2FsYXIKLQkgIG9iamVjdAorICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2NTk4NTogSW1wbGVtZW50IGlwUmVhc21UaW1lb3V0CisgICBUaG91Z2ggdGhpcyByZWdpc3RlcnMgYW4gaW5zdGFuY2UsIHJhdGhlciB0aGFuIHRoZSBmdWxsIHNjYWxhcgorICAgb2JqZWN0CiAKIDIwMDctMDMtMTIgMTk6NTEgIGR0czEyCiAKLQkqIGFnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jLCBzbm1wbGliL3ZhY20uYzoKLQkgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIRVM6IDE2NjU1NDM6IEhhbmRsZSBWQUNNIGNoZWNrcyBjb3JyZWN0bHkuCi0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2NTU0OTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcwotCSAgY29ycmVjdGx5LgotCSAgW0JvdGggcGF0Y2hlcyBhcmUgcmVxdWlyZWQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uXQorICAgKiBhZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYywgc25tcGxpYi92YWNtLmM6CisKKyAgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIRVM6IDE2NjU1NDM6IEhhbmRsZSBWQUNNIGNoZWNrcyBjb3JyZWN0bHkuCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY2NTU0OTogSGFuZGxlIGNyZWF0aW5nIFZBQ00gZW50cmllcworICAgY29ycmVjdGx5LgorICAgW0JvdGggcGF0Y2hlcyBhcmUgcmVxdWlyZWQgZm9yIGNvcnJlY3Qgb3BlcmF0aW9uXQogCiAyMDA3LTAzLTEyIDE5OjQ3ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC9zbXV4L3NtdXguYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjU5NjIzOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5Ci0JICBwYXNzd29yZC4KKyAgICogYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjU5NjIzOiBIYW5kbGUgU01VWCBwZWVycyB3aXRoIGFuIGVtcHR5CisgICBwYXNzd29yZC4KKworMjAwNy0wMy0xMiAxOTo0NCAgZHRzMTIKKworICAgKiAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmM6CisKKyAgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjU3NzQxOiBIYW5kbGUgNjQtYml0IHR5cGVzIHZpYSBwYXNzCisgICBtZWNoYW5pc20uCiAKIDIwMDctMDMtMTIgMTk6NDAgIGR0czEyCiAKLQkqIGFnZW50L2FnZW50X3RyYXAuYzoKLQkgIENIQU5HRVM6IHNubXBkOiBQQVRDSEVTOiAxNjQ0MjgwOiBVc2UgdGhlIGNvcnJlY3QgZW5naW5lSUQgd2hlbgotCSAgc2VuZGluZyB2MyB0cmFwcy4KKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY0NDI4MDogVXNlIHRoZSBjb3JyZWN0IGVuZ2luZUlEIHdoZW4KKyAgIHNlbmRpbmcgdjMgdHJhcHMuCiAKIDIwMDctMDMtMTIgMTk6MzIgIGR0czEyCiAKLQkqIHNubXBsaWIvc25tcF9hcGkuYzoKLQkgIENIQU5HRVM6IGxpYnJhcnk6IFBBVENIRVM6IDE2NDIwNzE6IERvbid0IGZpZGRsZSB3aXRoIHRoZSBzdG9yYWdlCi0JICBvZiBwcmUtZXhpc3RpbmcgdXNlcnMuCisgICAqIHNubXBsaWIvc25tcF9hcGkuYzoKKworICAgQ0hBTkdFUzogbGlicmFyeTogUEFUQ0hFUzogMTY0MjA3MTogRG9uJ3QgZmlkZGxlIHdpdGggdGhlIHN0b3JhZ2UKKyAgIG9mIHByZS1leGlzdGluZyB1c2Vycy4KIAogMjAwNy0wMy0xMiAxOTozMCAgZHRzMTIKIAotCSogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgotCSAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2NDE4NjU6IERvbid0IGRvdWJsZSBjaGVjayBzbm1wVHJhcE9JRAotCSAgaW4gdGhlIGZpbHRlciB0YWJsZS4KKyAgICogYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jOgorCisgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTY0MTg2NTogRG9uJ3QgZG91YmxlIGNoZWNrIHNubXBUcmFwT0lECisgICBpbiB0aGUgZmlsdGVyIHRhYmxlLgogCiAyMDA3LTAzLTEyIDE5OjI1ICBkdHMxMgogCi0JKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuYywKLQkgIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogUEFUQ0hFUzogMTYzOTcyNjogUmVwb3J0IHBoeXNpY2FsIG1lbW9yeQotCSAgY29ycmVjdGx5IG9uICpCU0QKKyAgICogIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jLCAgIAorICAgICAgYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIRVM6IDE2Mzk3MjY6IFJlcG9ydCBwaHlzaWNhbCBtZW1vcnkKKyAgIGNvcnJlY3RseSBvbiAqQlNECisKKzIwMDctMDMtMDkgMjE6MzEgIHRhbmRlcnMKKworICAgKiBzbm1wbGliL21pYi5jOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3NDI5OTogZnJvbSBtYWdmcjogTGVzc2VuIHRoZSBzY29wZSBvZiB0aGUgem9uZQorICAgdmFyaWFibGUgaW4gZHVtcF9yZWFsbG9jX29pZF90b19pbmV0YWRkcmVzcworCisyMDA3LTAzLTA5IDIxOjI5ICB0YW5kZXJzCisKKyAgICogYWdlbnQvYWdlbnRfdHJhcC5jOgorCisgICBDSEFOR0VTOiBQQVRDSDogMTY3NDMwMjogZnJvbSBtYWdmcjogTGVzc2VuIHRoZSBzY29wZSBvZiB0aGUgbGVuCisgICB2YXJpYWJsZSBpbiBjb252ZXJ0X3YycGR1X3RvX3YxCiAKIDIwMDctMDMtMDggMTU6NTIgIGR0czEyCiAKLQkqIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL25ldGJzZC5oLAotCSAgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oOgotCSAgSW5jbHVkZSBIb3N0IFJlc291cmNlcyBNSUIgb24gTmV0QlNEIGFuZCBPcGVuQlNECisgICAqICBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaCwgICAKKyAgICAgIGluY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaDoKKworICAgSW5jbHVkZSBIb3N0IFJlc291cmNlcyBNSUIgb24gTmV0QlNEIGFuZCBPcGVuQlNECisKKzIwMDctMDMtMDcgMDk6NDMgIHRhbmRlcnMKKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CisKKyAgIENIQU5HRVM6IFBBVENIOiAxNjc0Mjk4OiBmcm9tIG1hZ2ZyOiBSZW1vdmUgdW51c2VkIHNpbmtwb3J0CisgICB2YXJpYWJsZQogCiAyMDA3LTAzLTA2IDEzOjUxICBkdHMxMgogCi0JKiBhZ2VudC9zbm1wX2FnZW50LmM6Ci0JICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMTU5OTA4OiBGaXggbWVtb3J5IGxlYWsKKyAgICogYWdlbnQvc25tcF9hZ2VudC5jOgogCi0yMDA3LTAzLTAyIDIyOjU4ICB0YW5kZXJzCisgICBDSEFOR0VTOiBzbm1wZDogQlVHOiAxMTU5OTA4OiBGaXggbWVtb3J5IGxlYWsKIAotCSogc25tcGxpYi9NU0cwMDAwMS5iaW46Ci0JICBkZS1tYW5nZSBiaW5hcnkgZmlsZQorMjAwNy0wMy0wMiAyMjo0MCAgdGFuZGVycworCisgICAqIHNubXBsaWIvTVNHMDAwMDEuYmluOgorCisgICBubyBlb2wtc3R5bGUgZm9yIGJpbmFyeSBmaWxlcworCisyMDA3LTAzLTAyIDIyOjI2ICB0YW5kZXJzCisKKyAgICogZG9jL3JmYy9zbWlWMi9yZmMyNTc5LmVycmF0YX46CisKKyAgIGRvbid0IHNoaXAgZWRpdG9yIGJhY2t1cCBjb3BpZXMKKworMjAwNy0wMy0wMiAxNjoyMCAgdGFuZGVycworCisgICAqIHNubXBsaWIvTVNHMDAwMDEuYmluOgorCisgICBmbGFnIGFzIGJpbmFyeQogCiAyMDA3LTAzLTAyIDEyOjQ0ICB0YW5kZXJzCiAKLQkqIENvZGluZ1N0eWxlOgotCSAgZml4IHR5cG8KKyAgICogQ29kaW5nU3R5bGU6CisKKyAgIGZpeCB0eXBvCisKKzIwMDctMDMtMDIgMDk6NTcgIGR0czEyCisKKyAgICogVE9ETzoKKworICAgTWlub3IgdHdlYWsgLSBwbGF5aW5nIHdpdGggU1ZOIGFzIG11Y2ggYXMgYW55dGhpbmcuLi4uCisKKzIwMDctMDMtMDEgMjM6NTcgIGhhcmRha2VyCisKKyAgICogTkVXUzoKKworICAgbWVudGlvbiB0aGF0IHdlIG1vdmVkIHRvIFNWTgogCiAyMDA3LTAyLTI4IDE1OjI3ICBkdHMxMgogCi0JKiBDSEFOR0VTLCBDaGFuZ2VMb2csIE5FV1M6Ci0JICBDaGVja3BvaW50IHN1bW1hcnkgb2YgQ1ZTIGNoYW5nZXMsIHByZXBhcmF0b3J5IGZvciB0aGUgU1ZOCi0JICBzd2l0Y2guCisgICAqIENIQU5HRVMsIENoYW5nZUxvZywgTkVXUzoKIAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1DaGFuZ2VzOiBWNS40IC0+IFNWTiBjaGVja3BvaW50IChWNS00LXBhdGNoZXMgYnJhbmNoKQorICAgQ2hlY2twb2ludCBzdW1tYXJ5IG9mIENWUyBjaGFuZ2VzLCBwcmVwYXJhdG9yeSBmb3IgdGhlIFNWTgorICAgc3dpdGNoLgogCiAyMDA3LTAyLTI3IDEzOjM2ICByc3RvcnkKIApAQCAtODM1MSwxNyArMTg1NjcsMTIgQEAKIAogICAgYWRkIGhlYWRlciBmb3IgZWFzaWVyIGNvbmZpZ3VyZSAtLXdpdGgtbWliLW1vZHVsZQogCi0yMDA3LTAyLTI3IDEyOjM0ICByc3RvcnkKLQotICAgKiBhZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUuaDoKLQotICAgZmlsZSBpcEFkZHJlc3NQcmVmaXhUYWJsZS5oIHdhcyBhZGRlZCBvbiBicmFuY2ggVjUtNC1wYXRjaGVzIG9uIDIwMDctMDItMjcgMTI6MzQ6NTkgKzAwMDAKLQotMjAwNy0wMi0yNiAxNDo1NSAgZHRzMTIKKzIwMDctMDItMjYgMTQ6NTQgIGR0czEyCiAKICAgICogYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmM6CiAKICAgIFJlLWNvcnJlY3QgaW50ZXJwcmV0YXRpb24gb2YgIm51bGwgT0lEIiBpbiB0aGUgQWdlbnRYIHNwZWNzLgorICAgKGZvciB0aGUgbGFzdCB0aW1lLCBJIHRydXN0ISkKIAogMjAwNy0wMi0yNiAxNDozNyAgZHRzMTIKIApAQCAtODM3MywxNSArMTg1ODQsMTUgQEAKIAogICAgKiBwZXJsLzogQVNOL01ha2VmaWxlLlBMLCBPSUQvTWFrZWZpbGUuUEwsCiAgICAgIFNOTVAvTWFrZWZpbGUuUEwsIFRyYXBSZWNlaXZlci9NYWtlZmlsZS5QTCwKLSAgICAgYWdlbnQvTWFrZWZpbGUuUEwsIGFnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKLSwgZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTDoKKyAgICAgYWdlbnQvTWFrZWZpbGUuUEwsIGFnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwsCisgICAgIGRlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEw6CiAKICAgIFByb21wdGluZyBmb3IgYSBzaW5nbGUgZGlyZWN0b3J5LCBub3QgYW4gYXJyYXkuCiAKIDIwMDctMDItMjYgMTE6MzIgIGR0czEyCiAKLSAgICogbG9jYWwvOiBtaWIyYy5jb250YWluZXIuY29uZiwgbWliMmMuaXRlcmF0ZS5jb25mCi0sIG1pYjJjLnRhYmxlX2RhdGEuY29uZjoKKyAgICogbG9jYWwvOiBtaWIyYy5jb250YWluZXIuY29uZiwgbWliMmMuaXRlcmF0ZS5jb25mLAorICAgICBtaWIyYy50YWJsZV9kYXRhLmNvbmY6CiAKICAgIENIQU5HRVM6IG1pYjJjOiBCVUc6IDE0Mjk0NzI6IFByb3RlY3QgYWdhaW5zdCBtaXNzaW5nIGluc3RhbmNlcyAoYW5kIGludmFsaWQgb2JqZWN0cykKIApAQCAtODM5OSwxNSArMTg2MTAsMTUgQEAKIAogMjAwNy0wMi0yMyAyMTo1MyAgdGFuZGVycwogCi0gICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgorICAgKiBjb25maWd1cmUuaW4sIGNvbmZpZ3VyZToKIAogICAgYWRkIHF1b3RlcyB0byBmaXggc2hlbGwgc3ludGF4IGVycm9yIHdoZW4gZW1wdHkKIAotMjAwNy0wMi0yMiAyMjo0NyAgdGFuZGVycworMjAwNy0wMi0yMiAyMjozNSAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgogCi0gICBMYXN0IGNvbW1pdCBicm9rZSB0aGUgYnVpbGQuIE5vdyBlc2NhcGUgYmFja3NsYXNoZXMgcHJvcGVybHkuIFBsZWFzZSByZW1lbWJlciB0byB1c2UgYXV0b2NvbmYgMi41OSBmb3IgdGhlIHBhdGNoZXMgYnJhbmNoZXMhCisgICBMYXN0IGNvbW1pdCBicm9rZSB0aGUgYnVpbGQuIE5vdyBlc2NhcGUgYmFja3NsYXNoZXMgcHJvcGVybHkuCiAKIDIwMDctMDItMjIgMTU6MzggIGR0czEyCiAKQEAgLTg0NTIsMjAgKzE4NjYzLDE3IEBACiAKICAgIENIQU5HRVM6IGJ1aWxkOiBCVUc6IDEwOTYxNjY6IEhhbmRsZSAtLXdpdGhvdXQtbG9nZmlsZSBjb3JyZWN0bHkuCiAKLTIwMDctMDItMTkgMTY6MzYgIGR0czEyCi0KLSAgICogZGlzdC86IE1ha2VmaWxlLCBuc2ItY29uZmlnLCBuc2ItZnVuY3Rpb25zCi0sIG5zYi1uaWdodGx5LCBuc2ItcGFja2FnZSwKLSAgICAgbnNiLXBsYXRmb3JtLCBwYXRtZSwgUkVBRE1FLmJ1aWxkLXNjcmlwdHMKLToKLQotICAgcmVtb3ZlZCBkaXN0IGZpbGVzIG9ubHkgdG8gYmUgZGlzdHJpYnV0ZWQgaW4gdGhlIG1haW4gQ1ZTIGJyYW5jaAotCi0yMDA3LTAyLTE5IDE2OjMwICBkdHMxMgorMjAwNy0wMi0xOSAxNjozNCAgZHRzMTIKIAogICAgKiBkaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TOgogCi0gICBSZWxlYXNlIEluc3RydWN0aW9ucyBvbmx5IHRvIGJlIGRpc3RyaWJ1dGVkIGluIHRoZSBtYWluIENWUyBicmFuY2gKKyAgIE1lbnRpb24gcmVtb3ZhbCBmcm9tIENWUyBvZiBkZWxldGVkIGZpbGVzCisKKzIwMDctMDItMTkgMTU6NTYgIGR0czEyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgUmV3b3JrIHJlbGVhc2UgaW5zdHJ1Y3Rpb25zIHRvIHRha2UgYWNjb3VudCBvZiAibWFrZXJlbGVhc2UiIHNjcmlwdAogCiAyMDA3LTAyLTE5IDEwOjQ5ICBkdHMxMgogCkBAIC04NDg0LDcgKzE4NjkyLDcgQEAKICAgICogTWFrZWZpbGUuaW46CiAKICAgIERvbid0IGludm9rZSAndmVyc2lvbnRhZycgZm9yIHRhZ2dpbmcgdGhlIENWUyB0cmVlLgotICAgSXQgZG9lc24ndCBoYW5kbGUgdGhpcyBhbnkgbW9yZS4gKFVzZSAnbWFrZXJlbGVhc2UnIGluc3RlYWQpCisgICBJdCBkb2Vzbid0IGhhbmRsZSB0aGlzIGFueSBtb3JlLiAgKFVzZSAnbWFrZXJlbGVhc2UnIGluc3RlYWQpCiAKIDIwMDctMDItMTkgMTA6MDIgIGR0czEyCiAKQEAgLTg1NDUsMTEgKzE4NzUzLDQ4IEBACiAKICAgIGFkZGVkIHRoZSBmbG93IGxhYmxlIG1pYiwgd2hpY2ggdGhlIHR1bm5lbC1taWIgcmVmZXJzIHRvCiAKLTIwMDctMDItMDcgMTc6MTcgIGhhcmRha2VyCisyMDA3LTAyLTA1IDIzOjAyICB0YW5kZXJzCiAKLSAgICogbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dDoKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zOgogCi0gICBmaWxlIElQVjYtRkxPVy1MQUJFTC1NSUIudHh0IHdhcyBhZGRlZCBvbiBicmFuY2ggVjUtNC1wYXRjaGVzIG9uIDIwMDctMDItMDcgMTc6MTk6MTAgKzAwMDAKKyAgIG1vcmUgcG9ydGFiaWxpdHkgZml4ZXMKKworMjAwNy0wMi0wNSAyMjo1MCAgdGFuZGVycworCisgICAqIGRpc3QvY2hlY2stYXBpLWNoYW5nZToKKworICAgdXNlIC9iaW4vc2ggdW5sZXNzIGJhc2ggZmVhdHVyZXMgYXJlIHJlYWxseSBuZWVkZWQKKworMjAwNy0wMi0wNSAyMTo1MiAgcnN0b3J5CisKKyAgICogTWFrZWZpbGUudG9wOgorCisgICBub3RlIHRoYXQgY3VycmVudCBzaG91bGQgYmUgYnVtcGVkIGJ5IDUgd2hlbiBidW1wZWQKKworMjAwNy0wMi0wNSAyMTo0OSAgcnN0b3J5CisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgLSBub3RlIHRoYXQgY3VycmVudCBzaG91bGQgYmUgYnVtcGVkIGJ5IDUgd2hlbiB1cGRhdGVkCisgICAtIGFkZCBwb2ludGVyIHRvIG5ldyBjaGVjay1hcGktY2hhbmdlcyBzY3JpcHQKKworMjAwNy0wMi0wNSAyMTo0NiAgcnN0b3J5CisKKyAgICogZGlzdC9jaGVjay1hcGktY2hhbmdlOgorCisgICBzaW1wbGlzdGljIG5ldyBzY3JpcHQgdG8gaGVscCBjaGVjayBmb3IgYXBpIGNoYW5nZXMgYmV0d2VlbiByZWxlYXNlcworCisyMDA3LTAyLTA1IDIxOjM4ICByc3RvcnkKKworICAgKiBhZ2VudC9taWJncm91cC9zdHJ1Y3QuaDoKKworICAgbWFrZSBuZXcgc3RydWN0IG1lbWJlciBjb25kaXRpb25hbCwgc2luY2UgdXNlIGlzIGNvbmRpdGlvbmFsCisKKzIwMDctMDItMDUgMjE6MjAgIHRhbmRlcnMKKworICAgKiBhZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmM6CisKKyAgIG1vdmUgZnVuY3Rpb24gY2FsbCBvdXQgb2YgYXNzZXJ0CiAKIDIwMDctMDItMDUgMTU6MTYgIGR0czEyCiAKQEAgLTg1NTgsMTYgKzE4ODAzLDkgQEAKICAgIENIQU5HRVM6IHNubXBsaWI6IFBBVENIOiAxNjQxODk1OiBFeHRlbmQgc2hvcnQgdmlldyBtYXNrcyAoYXMgcGVyIFJGQyBzcGVjcykKICAgIFBhdGNoIHN1cHBsaWVkIGJ5IE1pY2hhZWwgS2lya2hhbS4KIAotMjAwNy0wMi0wNSAxNToxMCAgcnN0b3J5CisyMDA3LTAyLTA1IDE0OjMxICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYzoKLQotICAgbW92ZSBmdW5jdGlvbiBjYWxsIG91dCBvZiBhc3NlcnQKLQotMjAwNy0wMi0wNSAxNDozOCAgZHRzMTIKLQotICAgKiBhZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCi06CisgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmM6CiAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTYzOTM2MDogRml4IHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUgcm93IGNyZWF0aW9uLgogICAgUGF0Y2ggc3VwcGxpZWQgYnkgTWljaGFlbCBLaXJraGFtLgpAQCAtODU3OSwyNiArMTg4MTcsODMgQEAKICAgIEZpeCBjb21waWxhdGlvbiBpZiBMT0NLX1BFUl9DQUxMQkFDS19TVUJJRCBub3QgZGVmaW5lZC4KICAgIFJlcG9ydGVkIGJ5IEVtaSBZYW5hZ2kKIAorMjAwNy0wMi0wNSAwOTo0OCAgZHRzMTIKKworICAgKiBGQVE6CisKKyAgIFNwZWxsaW5nIGNvcnJlY3Rpb246ICdzdXBlcmNlZGVkJyAtPiAnc3VwZXJzZWRlZCcKKyAgIChPaCwgdGhlIHNoYW1lIG9mIGl0ISkKKwogMjAwNy0wMS0zMSAxMzo1MSAgdGFuZGVycwogCiAgICAqIE1ha2VmaWxlLnRvcDoKIAogICAgQ0hBTkdFUzogYnVpbGQ6IEJVRzogMTY0Nzk3NjogQ3lnd2luL01pbkdXIFdpbmRvd3MgYnVpbGQgZmFpbHMgZHVlIHRvIGxpYnRvb2wgZXJyb3IKIAotMjAwNy0wMS0zMCAxMzo0MyAgdGFuZGVycworMjAwNy0wMS0zMCAxMzozOSAgdGFuZGVycwogCiAgICAqIGFnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYzoKIAogICAgQ0hBTkdFUzogYnVpbGQ6IHlldCBhbm90aGVyIGZpeCB0byBhZGRyZXNzIGJ1aWxkIGlzc3VlcyB3aXRoIGV0aHRvb2wgKG9uIFJIOSkuCiAgICBQYXRjaCBwcm92aWRlZCBieSBNYWdudXMgRnJvbXJlaWRlLgogCisyMDA3LTAxLTMwIDA5OjEwICBkdHMxMgorCisgICAqIEZBUToKKworICAgQ2xhcmlmeSB3aGVuIHN5bWxpbmsgZml4IGlzL2lzbid0IGFwcHJvcHJpYXRlLiAgU3luY2ggd2l0aCBXaWtpLgorCisyMDA3LTAxLTI5IDExOjEyICBkdHMxMgorCisgICAqIEZBUToKKworICAgQXV0aGVudGljYXRlZCBTTk1QdjMgcmVxdWVzdHMgc3RpbGwgbmVlZCBhIHVzZXJuYW1lLiAgKFN5bmNoIHdpdGggV2lraSkKKwogMjAwNy0wMS0yOSAxMTowMyAgdGFuZGVycwogCi0gICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmM6CisgICAqIHB5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMsIGFnZW50L2hlbHBlcnMvdGFibGUuYworOgogCiAgICBnZXQgcmlkIG9mIEMrKyBjb21tZW50cwogCi0yMDA3LTAxLTI1IDIyOjQ1ICB0YW5kZXJzCisyMDA3LTAxLTI4IDEzOjM2ICB0YW5kZXJzCisKKyAgICogZGlzdC9uc2ItZnVuY3Rpb25zOgorCisgICBmaXggYmFkIHRlc3QKKworMjAwNy0wMS0yOCAxMzowNiAgdGFuZGVycworCisgICAqIGRpc3QvbnNiLWZ1bmN0aW9uczoKKworICAgcmVuYW1lIHZhcmlhYmxlIHRvIHJlc29sdmUgbmFtZSBjbGFzaCBhbmQgdG8gdW5icmVhayBuaWdodGx5IGJ1aWxkcyBvbiBTb2xhcmlzCisKKzIwMDctMDEtMjggMTI6NTIgIHRhbmRlcnMKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmM6CisKKyAgIGdldCByaWQgb2YgQysrIGNvbW1lbnRzCisKKzIwMDctMDEtMjcgMTQ6NDAgIHRhbmRlcnMKKworICAgKiBkaXN0L25zYi1uaWdodGx5OgorCisgICBmaXggdHlwbworCisyMDA3LTAxLTI3IDE0OjIzICB0YW5kZXJzCisKKyAgICogYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmM6CisKKyAgIGdldCByaWQgb2YgQysrIGNvbW1lbnRzCisKKzIwMDctMDEtMjYgMTE6MTUgIHRhbmRlcnMKKworICAgKiBkaXN0LzogbnNiLWNvbmZpZywgbnNiLWZ1bmN0aW9ucywgbnNiLW5pZ2h0bHkKKywgbnNiLXBhY2thZ2U6CisKKyAgIG1vcmUgQm91cm5lIHNoZWxsIGNvbXBhdGliaWxpdHkgZml4ZXMKKworMjAwNy0wMS0yNSAyMjo0MSAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgogCkBAIC04NjEyLDYgKzE4OTA3LDcgQEAKIAogMjAwNy0wMS0yNSAyMjowNSAgdGFuZGVycwogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX3N1YmFnZW50LmMKICwgbG9jYWwvbWliMmMtY29uZi5kL3N1YmFnZW50Lm0yYzoKIApAQCAtODYyOSwxMiArMTg5MjUsNzAgQEAKIAogICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjQ0NzE0OiBmcm9tICJMZWxhbmQgV2FsbGFjZSI6IHJlcGxhY2UgbGFzdCByZW1haW5pbmcgaW5zdGFuY2Ugb2YgZGVwcmVjYXRlZCBjb3B5X3dvcmQgYnkgY29weV9ud29yZAogCisyMDA3LTAxLTI1IDE1OjMwICB0YW5kZXJzCisKKyAgICogZGlzdC86IG5zYi1jb25maWcsIG5zYi1mdW5jdGlvbnMsIG5zYi1uaWdodGx5CissIG5zYi1wYWNrYWdlLCBuc2ItcGxhdGZvcm06CisKKyAgIG1hbnkgQm91cm5lIHNoZWxsIHBvcnRhYmlsaXR5IGZpeGVzCisKKzIwMDctMDEtMjQgMTY6MzkgIGR0czEyCisKKyAgICogZGlzdC86IG5zYi1jb25maWcsIG5zYi1mdW5jdGlvbnMsIG5zYi1uaWdodGx5CissIG5zYi1wYWNrYWdlLCBuc2ItcGxhdGZvcm06CisKKyAgIFByZS1Qb3NpeCBCb3VybmUgc2hlbGwgY29tcGF0YWJpbGl0eS4KKwogMjAwNy0wMS0yNCAxNDowMiAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CiAKICAgIFR3ZWFrIGRlYnVnIG91dHB1dAogCisyMDA3LTAxLTI0IDEzOjU4ICBkdHMxMgorCisgICAqIGxvY2FsL21pYjJjLXVwZGF0ZToKKworICAgU2hlbGxzY3JpcHQgcG9ydGFiaWxpdHkuICAoRXZlcnl0aGluZyBoYXMgL2Jpbi9zaCkKKworMjAwNy0wMS0yNCAxMzo0OSAgZHRzMTIKKworICAgKiBkaXN0LzogY3Zzc2hvdywgY3ZzdXAsIG5zYi1jb25maWcsCisgICAgIG5zYi1mdW5jdGlvbnMsIG5zYi1uaWdodGx5LCBuc2ItcGFja2FnZSwKKyAgICAgbnNiLXBsYXRmb3JtOgorCisgICBJbXByb3ZlIHNoZWxsLXNjcmlwdCBwb3J0YWJpbGl0eS4gKEV2ZXJ5dGhpbmcgaGFzIC9iaW4vc2ghKQorCisyMDA3LTAxLTI0IDEzOjQwICBkdHMxMgorCisgICAqIHNubXBsaWIvOiBzbm1wVURQRG9tYWluLmMsIHNubXBfY2xpZW50LmM6CisKKyAgIEV4dHJhIGRlYnVnZ2luZyBvdXRwdXQKKworMjAwNy0wMS0yNCAxMzozOCAgZHRzMTIKKworICAgKiBhZ2VudC9oZWxwZXJzL3RhYmxlLmMsIGFnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMKKywgYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMsCisgICAgIGFnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYywgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCissIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgsCisgICAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaDoKKworICAgUHJlbGltaW5hcnkgdGFibGUgdW5yZWdpc3RyYXRpb24gQVBJLgorCisyMDA3LTAxLTI0IDEzOjExICBkdHMxMgorCisgICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgorCisgICBNb3ZlIGhvc3RuYW1lIHRyYW5zbGF0aW9uIGludG8gdGhlIHRyYW5zcG9ydC1zcGVjaWZpYyBsaWJyYXJ5IHJvdXRpbmVzLgorICAgKFdoZXJlIGl0IGJlbG9uZ3MhKQorCisyMDA3LTAxLTI0IDEzOjA0ICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oLAorICAgICBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKKworICAgQmFzaWMgZnJhbWV3b3JrIGZvciB0cmFuc3BvcnQtc3BlY2lmaWMgdHJhbnNsYXRpb24gb2YgaG9zdG5hbWVzLgorCiAyMDA3LTAxLTI0IDEyOjI3ICBkdHMxMgogCiAgICAqIGFwcHMvc25tcHRyYXBkX2xvZy5jOgpAQCAtODY1MSw4ICsxOTAwNSw3IEBACiAKICAgICogYWdlbnQvbWliZ3JvdXAvOgogICAgICBpcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCi0sIGlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYwotLAorLCBpcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMsCiAgICAgIGlwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKICwKICAgICAgaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCkBAIC04NzAyLDYgKzE5MDU1LDcgQEAKIAogICAgQ0hBTkdFUzogc25tcHRyYXBkOiBCVUc6IDE2MzgyMjU6IEZpeCBpbnRlcnByZXRhdGlvbiBvZiB0cmFuc3BvcnQgYWRkcmVzcyBkYXRhLgogICAgKEtlZXAgdGhpcyBjb25zaXN0ZW50IHdpdGggc25tcFVEUERvbWFpbi5jKQorICAgVGhpcyBkb2VzIG5vdCBmZWVsIHRoZSByaWdodCB3YXkgdG8gaGFuZGxlIHRoaXMhCiAKIDIwMDctMDEtMjMgMTQ6MTAgIGR0czEyCiAKQEAgLTg3MzAsOCArMTkwODQsNyBAQAogCiAyMDA3LTAxLTIyIDE2OjE2ICBkdHMxMgogCi0gICAqIGFnZW50L21pYmdyb3VwL2FnZW50eC86IG1hc3Rlcl9hZG1pbi5jLCBtYXN0ZXIuYwotOgorICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvOiBtYXN0ZXIuYywgbWFzdGVyX2FkbWluLmM6CiAKICAgIENIQU5HRVM6IHNubXBkOiBQQVRDSDogMTY0MTY4NTogSGFuZGxlIHVucmVzcG9uc2l2ZSBBZ2VudFggc3ViYWdlbnRzIG1vcmUgcmVsaWFibHkuCiAgICBGaXggcHJvdmlkZWQgYnkgSm9zZWYgTW9lbGxlcnMKQEAgLTg3NTgsNyArMTkxMTEsMTQgQEAKICAgIENIQU5HRVM6IEZyZWVCU0Q6IEJVRzogMTYzMzQ4MzogU3VwcG9ydCBDUFUgSEFMIG9uIEZyZWVCU0Q0LngKICAgIChiZWZvcmUgQ1BVIGRlZmluaXRpb25zIHdlcmUgbW92ZWQgdG8gPHN5cy9yZXNvdXJjZS5oPikKIAotMjAwNy0wMS0xOSAxNDoyMiAgdGFuZGVycworMjAwNy0wMS0xOSAxNjoxNSAgZHRzMTIKKworICAgKiBhcHBzL3NubXB0cmFwZC5jOgorCisgICBsaWJyYXJ5IGxheWVyaW5nIGltcHJvdmVtZW50czogKm1vdmUqIChyYXRoZXIgdGhhbiBjb3B5KSBnbG9iYWwgdmFyaWFibGVzCisgICBmcm9tIHNubXB0cmFwZCB0byBsaWJuZXRzbm1wdHJhcGQKKworMjAwNy0wMS0xOSAxNDoxOCAgdGFuZGVycwogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluLAogICAgICBhZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmM6CkBAIC04NzY4LDEzICsxOTEyOCwyNiBAQAogCiAyMDA3LTAxLTE5IDExOjI1ICB0YW5kZXJzCiAKLSAgICogY29uZmlndXJlLCBjb25maWd1cmUuaW4sCisgICAqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlLAogICAgICBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLAogICAgICBhZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYywKICAgICAgYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmM6CiAKICAgIENIQU5HRVM6IGJ1aWxkOiBhZGQgY29uZmlndXJlIGNoZWNrIGZvciBoYXNtbnRvcHQgdG8gZml4IHRoZSBidWlsZCBvbiBzeXN0ZW1zIHRoYXQgbGFjayBpdAogCisyMDA3LTAxLTE4IDEyOjUwICB0YW5kZXJzCisKKyAgICogYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYzoKKworICAgbGlicmFyeSBsYXllcmluZyBpbXByb3ZlbWVudHM6IG1vdmUgZ2xvYmFsIHZhcmlhYmxlcyBmcm9tIHNubXB0cmFwZCB0byBsaWJuZXRzbm1wdHJhcGQKKworMjAwNy0wMS0xOCAxMToxMyAgdGFuZGVycworCisgICAqIGFwcHMvc25tcHRyYXBkLmMsIGFwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMsCisgICAgIG1hbi9zbm1wdHJhcGQuOC5kZWYsIG1hbi9zbm1wdHJhcGQuY29uZi41LmRlZjoKKworICAgZHJvcCAiLWUiL3ByaW50RXZlbnROdW1iZXJzIHN1cHBvcnQgZm9yIHNubXB0cmFwZCAob2Jzb2xldGUsIGRlcHJlY2F0ZWQgYW5kIGJyZWFrcyBsaWJyYXJ5IGxheWVyaW5nKQorCiAyMDA3LTAxLTE2IDEwOjA0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYzoKQEAgLTg3OTUsNiArMTkxNjgsMTIgQEAKIAogICAgRG9uJ3QgaGFyZGNvZGUgdGhlIHNpemUgb2YgY291bnRlcjY0IHN0cnVjdHVyZSAobWF5IGJlIHdyb25nIG9uIDY0LWJpdCBib3hlcykKIAorMjAwNy0wMS0xNiAwOTowMCAgZHRzMTIKKworICAgKiBhZ2VudC9hZ2VudF90cmFwLmM6CisKKyAgIEV4dHJhIGRlYnVnZ2luZyBvdXRwdXQuCisKIDIwMDctMDEtMTEgMjI6MTMgIHRhbmRlcnMKIAogICAgKiBhZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMsCkBAIC04ODA0LDEwICsxOTE4MywxNiBAQAogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBsaWJyYXJ5IGxheWVyaW5nIGltcHJvdmVtZW50czogaW50cm9kdWNlIG5ldHNubXBfbWt0ZW1wIHRvIHByZXZlbnQgbGlibmV0c25tcGFnZW50IGZyb20gZGVwZW5kaW5nIG9uIGxpYm5ldHNubXBtaWJzCiAKKzIwMDctMDEtMTEgMjE6MzUgIGhhcmRha2VyCisKKyAgICogY29uZmlndXJlLmluOgorCisgICBjaGFuZ2VkIGF1dG9jb25mIHJlcSB0byAyLjYxCisKIDIwMDctMDEtMTEgMjE6MjggIGhhcmRha2VyCiAKLSAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMsIHNubXBJUFhEb21haW4uYwotLCBzbm1wU1RERG9tYWluLmMsIHNubXBUQ1BEb21haW4uYywKKyAgICogc25tcGxpYi86IHNubXBBQUw1UFZDRG9tYWluLmMsIHNubXBJUFhEb21haW4uYywKKyAgICAgc25tcFNURERvbWFpbi5jLCBzbm1wVENQRG9tYWluLmMsCiAgICAgIHNubXBUQ1BJUHY2RG9tYWluLmMsIHNubXBVRFBEb21haW4uYywKICAgICAgc25tcFVEUElQdjZEb21haW4uYywgc25tcF9zZXJ2aWNlLmMsCiAgICAgIHNubXBfdHJhbnNwb3J0LmM6CkBAIC04ODMyLDYgKzE5MjE3LDEyIEBACiAKICAgIENIQU5HRVM6IFNvbGFyaXM6IElGLU1JQiBmaXg6IGFkZCBtaXNzaW5nIHJldHVybiBhdCBlbmQgb2YgZ2V0X2lmX3N0YXRzCiAKKzIwMDctMDEtMDggMDg6MzAgIHRhbmRlcnMKKworICAgKiBhZ2VudC9NYWtlZmlsZS5pbjoKKworICAgQ0hBTkdFUzogYnVpbGQ6IGxpYnJhcnkgbGF5ZXJpbmcgaW1wcm92ZW1lbnRzOiBidWlsZCBsaWJyYXJpZXMgaW4gdGhlIGNvcnJlY3Qgb3JkZXIgKGxpYm5ldHNubXBhZ2VudCBiZWZvcmUgbGlibmV0c25tcGhlbHBlcnMgYmVmb3JlIGxpYm5ldHNubXBtaWJzKQorCiAyMDA3LTAxLTA3IDE5OjQ3ICB0YW5kZXJzCiAKICAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oOgpAQCAtODg0NSw3ICsxOTIzNiw3IEBACiAgICBDSEFOR0VTOiBTb2xhcmlzOiBCVUc6IDE2MjYxNTM6IG5vIGhyU1dSdW4gaW5mb3JtYXRpb25zIG9uIFNvbGFyaXMgem9uZXMKICAgIFBhdGNoIHByb3ZpZGVkIGJ5IEtsYXVzIE11ZWhsZmVsZAogCi0yMDA3LTAxLTA2IDAwOjM0ICB0YW5kZXJzCisyMDA3LTAxLTA2IDAwOjMwICB0YW5kZXJzCiAKICAgICogcGVybC9hZ2VudC9hZ2VudC54czoKIApAQCAtODg1NywxMiArMTkyNDgsMTcgQEAKIAogICAgZ2V0IHJpZCBvZiBDKysgY29tbWVudHMKIAotMjAwNy0wMS0wMyAyMjoyMyAgdGFuZGVycworMjAwNy0wMS0wMiAyMzozMyAgdGFuZGVycwogCi0gICAqIHBlcmwvU05NUC86IFNOTVAueHMsIHQvY29uZi50OgorICAgKiBhZ2VudC9hZ2VudF9yZWdpc3RyeS5jOgogCi0gICBjbGVhbiB1cCBjb21waWxlIGFuZCBmaXggdGVzdHMuCi0gICBCYWNrcG9ydCBmcm9tIDUuNS5kZXYKKyAgIEJVRzogQ292ZXJpdHkgIzE3MzogcmVtb3ZlIHN1cGVyZmx1b3VzIE5VTEwgY2hlY2sgKGFscmVhZHkgZGVyZWZlcmVuY2VkIGVhcmxpZXIgYW55d2F5KQorCisyMDA3LTAxLTAyIDIzOjA4ICB0YW5kZXJzCisKKyAgICogc25tcGxpYi9zeXN0ZW0uYzoKKworICAgb25seSBsb2cgYSBtZXNzYWdlIHdoZW4gdGhlIG1pYl9pbmRleGVzIGRpcmVjdG9yeSBpcyAqcmVhbGx5KiBjcmVhdGVkCiAKIDIwMDctMDEtMDIgMjI6NTMgIHRhbmRlcnMKIApAQCAtODg3Niw2ICsxOTI3Miw2MiBAQAogCiAgICBCVUc6IENvdmVyaXR5ICMxOTM6IHByb3Blcmx5IGluaXRpYWxpemUgc2Vzc2lvbiBwb2ludGVyIGJlZm9yZSB1c2UKIAorMjAwNy0wMS0wMiAyMDoxMyAgdGFuZGVycworCisgICAqIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmM6CisKKyAgIGJhY2sgb3V0IHByZXZpb3VzIGJhZCBjaGFuZ2UgdG8gYWdlbnQgcmVnaXN0cnkKKworMjAwNy0wMS0wMiAxOTo1MiAgdGFuZGVycworCisgICAqIGFnZW50L3NubXBfYWdlbnQuYzoKKworICAgQ0hBTkdFUzogc25tcGQ6IFBBVENIOiAxNjAxNDUzOiBmcm9tICJSb2JlcnQgV2lsY294IjogRHluYW1pYyBNZW1vcnkgZmFpbHVyZSBoYW5kbGluZyBpbXByb3ZlbWVudHMKKworMjAwNy0wMS0wMiAxOTo1MiAgdGFuZGVycworCisgICAqIHNubXBsaWIvZGVmYXVsdF9zdG9yZS5jLCBzbm1wbGliL3JlYWRfY29uZmlnLmMsCisgICAgIGFnZW50L2FnZW50X3JlZ2lzdHJ5LmMsIGFnZW50L2hlbHBlcnMvbnVsbC5jLAorICAgICBhZ2VudC9oZWxwZXJzL29sZF9hcGkuYywgYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jCissIGFnZW50L2hlbHBlcnMvdGFibGUuYywgYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jCissIGFnZW50L2hlbHBlcnMvdGFibGVfZGF0YXNldC5jLAorICAgICBzbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jLCBzbm1wbGliL3NubXB1c20uYywKKyAgICAgYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jLCBhZ2VudC9oZWxwZXJzL3dhdGNoZXIuYworLCBhZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jLAorICAgICBhZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jLAorICAgICBhZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMsCisgICAgIGFnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYywKKyAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYywKKyAgICAgYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jLAorICAgICBhZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYzoKKworICAgQ0hBTkdFUzogUEFUQ0g6IDE2MDE0NTM6IGZyb20gIlJvYmVydCBXaWxjb3giOiBEeW5hbWljIE1lbW9yeSBmYWlsdXJlIGhhbmRsaW5nIGltcHJvdmVtZW50cworCisyMDA3LTAxLTAyIDE3OjU2ICB0YW5kZXJzCisKKyAgICogTWFrZWZpbGUuaW46CisKKyAgIHJlbW92ZSBMRF9SVU5fUEFUSCBjb21tZW50IGZvciBweXRob24KKworMjAwNy0wMS0wMiAxNzozOCAgdGFuZGVycworCisgICAqIE1ha2VmaWxlLnRvcCwgY29uZmlndXJlLCBuZXQtc25tcC1jb25maWcuaW4KKzoKKworICAgQ0hBTkdFUzogYnVpbGQ6IHVwZGF0ZSB0byBhdXRvY29uZiAyLjYxCisKKzIwMDctMDEtMDIgMTc6MjMgIHRhbmRlcnMKKworICAgKiBNYWtlZmlsZS5pbiwgaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaDoKKworICAgTkVXUzogUG9ydHM6IFBBVENIOiAxNjIzODc0OiBmcm9tICJQZXRyIFNhbGluZ2VyIjogYWRkIEdOVS9rRnJlZUJTRCBzdXBwb3J0CisKKzIwMDctMDEtMDIgMTc6MTcgIHRhbmRlcnMKKworICAgKiBhZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmM6CisKKyAgIENIQU5HRVM6IGJ1aWxkOiBhZGQgd29ya2Fyb3VuZCBmb3IgQUNfRlVOQ19HRVRNTlRFTlQoKSBidWcgaW4gYXV0b2NvbmYgMi42MGIgYW5kIDIuNjEgKHNlZSBEZWJpYW4gYnVncyAjNDAzMjQzLCAjNDAzMDc5KQorCiAyMDA3LTAxLTAyIDE2OjQ4ICBkdHMxMgogCiAgICAqIGxvY2FsL21pYjJjOgpAQCAtODg4NSw4ICsxOTMzNyw4IEBACiAKIDIwMDctMDEtMDIgMTY6MDAgIGR0czEyCiAKLSAgICogc25tcGxpYi86IHNubXBVRFBEb21haW4uYywgc25tcFVEUElQdjZEb21haW4uYwotLCBzbm1wVW5peERvbWFpbi5jOgorICAgKiBzbm1wbGliLzogc25tcFVEUERvbWFpbi5jLCBzbm1wVURQSVB2NkRvbWFpbi5jLAorICAgICBzbm1wVW5peERvbWFpbi5jOgogCiAgICBDSEFOR0VTOiBzbm1wbGliOiBCVUc6IDE2MDAxNzE6IFN1cHBvcnQgbG9uZ2VyIGNvbW11bml0eSBzdHJpbmdzIGluIFZBQ00gY29uZmlnLgogICAgUGF0Y2ggcHJvdmlkZWQgYnkgUm9iZXJ0IFdpbGNveApAQCAtODg5OCwyMCArMTkzNTAsMjcgQEAKICAgIENIQU5HRVM6IHNubXBkOiBCVUc6IDE1NDY4MTc6IEZpeCBzbm1wRW50ZXJwcmlzZSB2YXJiaW5kIHdoZW4gZm9yd2FyZGluZyB2MSB0cmFwcy4KICAgIFBhdGNoIHByb3ZpZGVkIGJ5IFBhYmxvIFBhc3NlcmEuCiAKLTIwMDctMDEtMDIgMTA6MzggIGR0czEyCisyMDA3LTAxLTAyIDEwOjM0ICBkdHMxMgogCiAgICAqIGNvbmZpZ3VyZSwgY29uZmlndXJlLmluOgogCiAgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE2MjUxMzU6IGNvbmZpZ3VyZSBsb2NhdGlvbiBvZiBweXRob24gaW50ZXJwcmV0ZXIKICAgIFByb3ZpZGVkIGJ5IEFuZHJldyBMYW5nbWVhZAogCi0yMDA3LTAxLTAyIDEwOjM4ICBkdHMxMgorMjAwNy0wMS0wMiAxMDozNCAgZHRzMTIKIAogICAgKiBNYWtlZmlsZS5pbiwgTWFrZWZpbGUudG9wOgogCiAgICBORVdTOiBjb25maWd1cmU6IFBBVENIIDE2MjUxMzU6IGNvbmZpZ3VyZSBsb2NhdGlvbiBvZiBweXRob24gaW50ZXJwcmV0ZXIKICAgIFByb3ZpZGVkIGJ5IEFuZHJldyBMYW5nbWVhZAogCisyMDA3LTAxLTAyIDEwOjIyICBkdHMxMgorCisgICAqIGNvbmZpZ3VyZS5pbiwgY29uZmlndXJlOgorCisgICBDSEFOR0VTOiBidWlsZDogUEFUQ0g6IDE2MjQ0MDY6IG9wdGlvbiB0byBoYXJkY29kZSBsb2NhdGlvbiBvZiBtb3VudCB0YWJsZQorICAgU3VibWl0dGVkIGJ5IEpvY2hlbgorCiAyMDA3LTAxLTAxIDE3OjQ0ICBkdHMxMgogCiAgICAqIGFnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYzoKQEAgLTg5MTksMTIgKzE5Mzc4LDMzIEBACiAgICBDSEFOR0VTOiBzbm1wZDogUEFUQ0g6IDE2MDExODgsIEJVRzogMTYwMDQzMjogSGFuZGxlIHNpZ25hbHMgcHJvcGVybHkgd2hlbiByZXN0YXJ0aW5nIHRoZSBhZ2VudC4KICAgIEZpeCBwcm92aWRlZCBieSBMb2ljIERvbWFpZ25lLgogCi0yMDA3LTAxLTAxIDE2OjEyICBkdHMxMgorMjAwNy0wMS0wMSAxNzozNSAgZHRzMTIKIAotICAgKiBzbm1wbGliL3NubXBfY2xpZW50LmM6CisgICAqIHNubXBsaWIvbWliLmM6CisKKyAgIEhhbmRsZSBub24td3JpdGFibGUgTUlCIGluZGV4ZXMgKGUuZy4gcnVuIGFzIG5vbi1wcml2aWxlZ2VkIHVzZXIpCisKKzIwMDctMDEtMDEgMTY6MDkgIGR0czEyCisKKyAgICogaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgsIHNubXBsaWIvc25tcF9jbGllbnQuYworOgogCiAgICBORVdTOiBzbm1wbGliOiBQQVRDSEVTIDE1OTI3MDY6IEZpeCBtZW1vcnkgbGVhayB3aGVuIGNsb25pbmcgdmFyYmluZHMuCi0gICBQYXRjaCBieSBTdGV2ZW4gRG9yaWdvdHRpLgorICAgQmFzZWQgb24gYSBzdWdnZXN0aW9uIGJ5IFN0ZXZlbiBEb3JpZ290dGkuCisKKzIwMDctMDEtMDEgMTY6MDkgIGR0czEyCisKKyAgICogc25tcGxpYi9zbm1wX2FwaS5jOgorCisgICBDSEFOR0VTOiBzbm1wbGliOiBQQVRDSDogMTU5MjcwNjogRml4IG1lbW9yeSBsZWFrIHdoZW4gY2xvbmluZyB2YXJiaW5kcy4KKyAgIEJhc2VkIG9uIGEgc3VnZ2VzdGlvbiBieSBTdGV2ZW4gRG9yaWdvdHRpLgorCisyMDA3LTAxLTAxIDE1OjQ4ICBkdHMxMgorCisgICAqIGFnZW50L21pYmdyb3VwL3VjZC1zbm1wLzogcGFzcy5jLCBwYXNzX3BlcnNpc3QuYzoKKworICAgTkVXUzogYWdlbnQ6IFBBVENIIDE1ODUxNDY6IEV4dGVuZCByYW5nZSBvZiBhdmFpbGFibGUgZXJyb3IgY29kZXMKKyAgIFN1Ym1pdHRlZCBieSBBbnRob255IE5vdmF0c2lzLgogCiAyMDA3LTAxLTAxIDE1OjI5ICBkdHMxMgogCkBAIC04OTM1LDggKzE5NDE1LDggQEAKIAogMjAwNy0wMS0wMSAxNToxNiAgZHRzMTIKIAotICAgKiBhcHBzLzogc25tcGRmLmMsIHNubXBnZXQuYywgc25tcGdldG5leHQuYwotLCBzbm1wc2V0LmM6CisgICAqIGFwcHMvOiBzbm1wZGYuYywgc25tcGdldC5jLCBzbm1wZ2V0bmV4dC5jLAorICAgICBzbm1wc2V0LmM6CiAKICAgIE1vdmUgZ2xvYmFsICdmYWlsdXJlcycgdmFyaWFibGUgY2xvc2VyIHRvIHdoZXJlIGl0IGlzIHVzZWQuCiAgICBDSEFOR0VTOiBhcHBzOiBQQVRDSDogMTUyOTUyMzogQ2xvc2UgU05NUCBzZXNzaW9uIG9uIGZhaWx1cmUuCkBAIC04OTQ4LDYgKzE5NDI4LDE2IEBACiAgICBQcm90ZWN0IGFnYWluc3QgcG90ZW50aWFsIGRvdWJsZSBkZWxldGUuCiAgICBQYXRjaCBwcm92aWRlZCBieSBNYWdudXMgRnJvbXJlaWRlLgogCisyMDA3LTAxLTAxIDE0OjIyICBkdHMxMgorCisgICAqIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCwgc25tcGxpYi9taWIuYywKKyAgICAgc25tcGxpYi9wYXJzZS5jOgorCisgICBNYWludGFpbiBNSUIgZGlyZWN0b3J5IGluZGV4IGZpbGVzIHVuZGVyIC92YXIvbmV0LXNubXAKKyAgIChpbiBsaW5lIHdpdGggRmlsZSBIaWVyYXJjaHkgU3RhbmRhcmQgc3BlY2lmaWNhdGlvbnMpCisgICBTZWUgaHR0cDovL2J1Z3MuZGViaWFuLm9yZy9jZ2ktYmluL2J1Z3JlcG9ydC5jZ2k/YnVnPTM4OTQzNAorICAgYW5kIGRpc2N1c3Npb24gIk1JQnMgaW4gbmV0LXNubXAiIG9uIGNvZGVycyBsaXN0IChPY3QgMjAwNikKKwogMjAwNy0wMS0wMSAxMToyOCAgZHRzMTIKIAogICAgKiBhZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmM6CkBAIC04OTU1LDYgKzE5NDQ1LDEyIEBACiAgICBFbnN1cmUgc3lzT1JEZXNjcmlwdGlvbnMgYXJlIG51bGwtdGVybWluYXRlZCwgc28gdGhleSBjYW4gYmUKICAgIHNhZmVseSBwYXNzZWQgdG8gJ3N0cmR1cCgpJy4gIFJlcG9ydGVkIGJ5IFdvbGZnYW5nIFBlZG90LgogCisyMDA2LTEyLTI5IDE3OjI1ICBkdHMxMgorCisgICAqIEZBUToKKworICAgU3luY2hyb25pc2Ugd2l0aCBXaWtpIHZlcnNpb24uCisKIDIwMDYtMTItMjggMjM6MjkgIHRhbmRlcnMKIAogICAgKiBzbm1wbGliL3NubXBVRFBEb21haW4uYzoKQEAgLTg5ODQsMTAgKzE5NDgwLDkgQEAKIAogMjAwNi0xMi0xNyAxODowMSAgYWxleF9iCiAKLSAgICogd2luMzIvOiBNYWtlZmlsZS1hcHBzLmluLCBsaWJzbm1wX2RsbC9NYWtlZmlsZS5pbgotLCBzbm1wZC9NYWtlZmlsZS5pbiwgc25tcGRzZGsvTWFrZWZpbGUuaW4KLSwgc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4sCi0gICAgIHNubXB0cmFwZC9NYWtlZmlsZS5pbjoKKyAgICogd2luMzIvOiBNYWtlZmlsZS1hcHBzLmluLCBsaWJzbm1wX2RsbC9NYWtlZmlsZS5pbiwKKyAgICAgc25tcGQvTWFrZWZpbGUuaW4sIHNubXBkc2RrL01ha2VmaWxlLmluLAorICAgICBzbm1wbmV0c3RhdC9NYWtlZmlsZS5pbiwgc25tcHRyYXBkL01ha2VmaWxlLmluOgogCiAgICBBZGQgZ2RpMzIubGliIHRvIGZpeCBsaW5raW5nIHByb2JsZW0gd2hlbiB1c2luZyB0aGUgc3RhdGljIHZlcnNpb24gb2YgdGhlCiAgICBTU0wgbGlicmFyaWVzLiAgVGhhbmtzIHRvIFNpbW9uIEVkd2FyZHMgZm9yIHRoZSBmaXguCkBAIC05MDAwLDE1ICsxOTQ5NSwxNSBAQAogCiAyMDA2LTEyLTEyIDIzOjUzICB0YW5kZXJzCiAKLSAgICogYWdlbnQvbWliZ3JvdXAvaG9zdC86IGhyX2ZpbGVzeXMuYywgaHJfc3RvcmFnZS5jCi0sIGhyX3N3aW5zdC5jOgorICAgKiBhZ2VudC9taWJncm91cC9ob3N0LzogaHJfZmlsZXN5cy5jLCBocl9zdG9yYWdlLmMsCisgICAgIGhyX3N3aW5zdC5jOgogCiAgICBDSEFOR0VTOiBMaW51eDogUEFUQ0g6IDE1ODEyOTQ6IGZyb20gIk1pY2hhZWwgVGF0YXJpbm92IjogaG9zdC1yZXNvdXJjZXMgaW1wcm92ZW1lbnRzCiAKIDIwMDYtMTItMTIgMjE6MjcgIHRhbmRlcnMKIAotICAgKiB3aW4zMi9uZXQtc25tcC86IG5ldC1zbm1wLWNvbmZpZy5oLAotICAgICBuZXQtc25tcC1jb25maWcuaC5pbjoKKyAgICogd2luMzIvbmV0LXNubXAvOiBuZXQtc25tcC1jb25maWcuaCwgbmV0LXNubXAtY29uZmlnLmguaW4KKzoKIAogICAgcmUtYWRkIFVEUF9BRERSRVNTRVNfSU5fSE9TVF9PUkRFUgogCkBAIC05MDI0LDcgKzE5NTE5LDcgQEAKIAogICAgQ0hBTkdFUzogV2luMzI6IGZpeCB3aW4zMi9Db25maWd1cmUgLS13aXRoLWlwdjYKIAotMjAwNi0xMi0xMiAxODoyMSAgdGFuZGVycworMjAwNi0xMi0xMiAxODoxMCAgdGFuZGVycwogCiAgICAqIHdpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oOgogCkBAIC05MDM2LDEzICsxOTUzMSw4OCBAQAogCiAgICBBZGQgdmVyc2lvbiB0byBGQVEuaHRtbC4KIAotMjAwNi0xMi0wOSAwMDoxNiAgdGFuZGVycworMjAwNi0xMi0wOSAxNzoxMSAgYWxleF9iCiAKLSAgICogaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vOiBkYXJ3aW44LmgsIGRhcndpbjkuaAorICAgKiBtYW4vOiBNYWtlZmlsZS5pbiwgbWFrZV9pbmRleC5wbCwgbWFuX3NlY3Rpb25zLnR4dAogOgogCisgICAtQ3JlYXRlIGh0bWwgcGFnZXMgZm9yIEFMTCBtYW4gcGFnZXMuCisgICAtSW1wcm92ZSBlcnJvciBtZXNzYWdlIHdoZW4gY3JlYXRpbmcgdGhlIGluZGV4Lmh0bWwgZmlsZS4KKworMjAwNi0xMi0wOSAxNzowNiAgYWxleF9iCisKKyAgICogbG9jYWwvOiBodG1sLWFkZC1oZWFkZXItZm9vdGVyLnBsLCBodG1sLXRleHRmaWxlLWZpeC5wbAorOgorCisgICBBZGQgdGlkeSBjb21tYW5kIGxpbmUgb3B0aW9uIGFuZCBhZGQgbWlzc2luZyBSRUFETUUgZmlsZXMuCisKKzIwMDYtMTItMDkgMDA6MTYgIHRhbmRlcnMKKworICAgKiBpbmNsdWRlL25ldC1zbm1wL3N5c3RlbS86IGRhcndpbjguaCwgZGFyd2luOS5oOgorCiAgICBDSEFOR0VTOiBNYWNPU1g6IFBBVENIOiAxNjAwNDUzOiBmcm9tICJDaHJpcyBKYWxiZXJ0IjogT1MgWCBjb21waWxlLXRpbWUgZW5kaWFuIGRldGVybWluYXRpb24KIAorMjAwNi0xMi0wOCAyMjo0NyAgdGFuZGVycworCisgICAqIGRpc3QvUkVMRUFTRS1JTlNUUlVDVElPTlM6CisKKyAgIGRvY3VtZW50IHNvbWUgbW9yZSBwb3N0LXJlbGVhc2UgdGFza3MKKworMjAwNi0xMi0wOCAyMjoyNiAgdGFuZGVycworCisgICAqIG1hbi9uZXRzbm1wX2FnZW50LjMsIG1hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMsCisgICAgIG1hbi9uZXRzbm1wX2FnZW50X3RyYXAuMywgbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMworLCBtYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMsCisgICAgIG1hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zLCBtYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMKKywgbWFuL25ldHNubXBfY2FsbGJhY2suMywgbWFuL25ldHNubXBfY29udGFpbmVyLjMKKywgbWFuL25ldHNubXBfZGF0YV9saXN0LjMsIG1hbi9uZXRzbm1wX2RlYnVnLjMKKywgbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zLCBtYW4vbmV0c25tcF9oYW5kbGVyLjMKKywgbWFuL25ldHNubXBfaW5zdGFuY2UuMywKKyAgICAgbWFuL25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMsIG1hbi9uZXRzbm1wX2xlYWYuMywKKyAgICAgbWFuL25ldHNubXBfbGlicmFyeS4zLCBtYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMworLCBtYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMsCisgICAgIG1hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMywgbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMworLCBtYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMsCisgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMsCisgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMsCisgICAgIG1hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX3MuMywKKyAgICAgbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zLAorICAgICBtYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMywKKyAgICAgbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zLAorICAgICBtYW4vbmV0c25tcF9vaWRfc3Rhc2guMywgbWFuL25ldHNubXBfb2xkX2FwaS4zLAorICAgICBtYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zLCBtYW4vbmV0c25tcF9yZWFkX29ubHkuMywKKyAgICAgbWFuL25ldHNubXBfcm93X21lcmdlLjMsIG1hbi9uZXRzbm1wX3NjYWxhci4zLAorICAgICBtYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMywgbWFuL25ldHNubXBfc2VyaWFsaXplLjMKKywgbWFuL25ldHNubXBfc25tcF9hZ2VudC4zLCBtYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMKKywgbWFuL25ldHNubXBfc25tcF9jbGllbnQuMywKKyAgICAgbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMsIG1hbi9uZXRzbm1wX3NubXBfcGR1LjMsCisgICAgIG1hbi9uZXRzbm1wX3NubXBfc2Vzc2lvbi4zLCBtYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zCissIG1hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMywgbWFuL25ldHNubXBfdGFibGUuMworLCBtYW4vbmV0c25tcF90YWJsZV9hcnJheS4zLAorICAgICBtYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMywgbWFuL25ldHNubXBfdGFibGVfZGF0YS4zCissIG1hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMywKKyAgICAgbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zLCBtYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMKKywgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMywKKyAgICAgbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zLAorICAgICBtYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zLCBtYW4vbmV0c25tcF90YWJsZV9yb3dzLjMKKywgbWFuL25ldHNubXBfdGRhdGEuMywgbWFuL25ldHNubXBfdXRpbC4zLAorICAgICBtYW4vbmV0c25tcF91dGlsaXRpZXMuMywgbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zCissIG1hbi9uZXRzbm1wX3dhdGNoZXIuMywgcGVybC9BU04vQVNOLnBtLAorICAgICBwZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtLCBwZXJsL09JRC9PSUQucG0sCisgICAgIHBlcmwvU05NUC9TTk1QLnBtLCBwZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KKywgcGVybC9hZ2VudC9hZ2VudC5wbSwgcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0KKywgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL2RlZmF1bHRfc3RvcmUucG0sCisgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtLCBjb25maWd1cmUsCisgICAgIGNvbmZpZ3VyZS5pbiwgZG94eWdlbi5jb25mLCBzZWRzY3JpcHQuaW4sCisgICAgIGRpc3QvTWFrZWZpbGUsIGRpc3QvbmV0LXNubXAuc3BlYywKKyAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYywgRkFRLCBSRUFETUU6CisKKyAgIC0gdmVyc2lvbiB0YWcgKCA1LjUuZGV2ICkKKwogMjAwNi0xMi0wOCAyMjoyMCAgdGFuZGVycwogCiAgICAqIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGw6CkBAIC05MDU1LDMxICsxOTYyNSw0NCBAQAogCiAgICBORVdTOiBCVUc6IDE2MTE1MjQ6IGZpeCB0Y3AgY29ubmVjdGlvbiB0YWJsZSBmZCBsZWFrCiAKLTIwMDYtMTItMDcgMTU6NTYgIHRhbmRlcnMKKzIwMDYtMTItMDggMTM6MTcgIG1hcnoKIAotICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS86IGNwdS5oLCBjcHUvY3B1X21hY2guYwotLCBjcHUvY3B1X21hY2guaDoKKyAgICogcGVybC9TTk1QLzogTWFrZWZpbGUuUEwsIFNOTVAucG06CisKKyAgIHJldmVydCB1bmluZm9ybWVkIHZlcnNpb24gY2hhbmdlCisKKzIwMDYtMTItMDcgMjE6NTAgIHVpZDM5MDM5CisKKyAgICogcGVybC9TTk1QLzogTWFrZWZpbGUuUEwsIFNOTVAucG0sIFNOTVAueHMsCisgICAgIHQvY29uZi50OgorCisgICBjbGVhbiB1cCBjb21waWxlIGFuZCBmaXggdGVzdHMKKworMjAwNi0xMi0wNyAxNjo0OCAgbWFyegorCisgICAqIHBlcmwvU05NUC9TTk1QLnBtOgorCisgICBjb21tZW50IGZpeAorCisyMDA2LTEyLTA3IDE1OjUyICB0YW5kZXJzCisKKyAgICogYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvOiBjcHUuaCwgY3B1L2NwdV9tYWNoLmMsCisgICAgIGNwdS9jcHVfbWFjaC5oOgogCiAgICBORVdTOiBNYWNPU1g6IFBBVENIOiAxNjAwNTIyOiBmcm9tICJCaWxsIEZlbm5lciI6IENQVSBIQUwgaW1wbGVtZW50YXRpb24gZm9yIG1hY2gvZGFyd2luCiAKLTIwMDYtMTItMDcgMTU6NTQgIHRhbmRlcnMKLQotICAgKiBhZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X21hY2guYzoKLQotICAgZmlsZSBjcHVfbWFjaC5jIHdhcyBhZGRlZCBvbiBicmFuY2ggVjUtNC1wYXRjaGVzIG9uIDIwMDYtMTItMDcgMTU6NTY6MzggKzAwMDAKLQotMjAwNi0xMi0wNyAxNTo1NCAgdGFuZGVycwotCi0gICAqIGFnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbWFjaC5oOgotCi0gICBmaWxlIGNwdV9tYWNoLmggd2FzIGFkZGVkIG9uIGJyYW5jaCBWNS00LXBhdGNoZXMgb24gMjAwNi0xMi0wNyAxNTo1NjozOCArMDAwMAotCiAyMDA2LTEyLTA3IDEzOjEwICB0YW5kZXJzCiAKICAgICogcGVybC9TTk1QL1NOTVAucG06CiAKICAgIENIQU5HRVM6IGRvY3VtZW50YXRpb246IFBBVENIOiAxNjA0NTgwOiBTTk1QKDMpIG1hbnVhbCBwYWdlIGNvcnJlY3Rpb25zIChzcG90dGVkIGJ5IHRlay1vcHMpCiAKKzIwMDYtMTItMDYgMjA6MzAgIGhhcmRha2VyCisKKyAgICogZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUzoKKworICAgZG9jdW1lbnQgdmFyaW91cyBhc3BlY3RzIG9mIHBvc3QtcmVsZWFzZSB0aGluZ3MgdG8gZG8KKwogMjAwNi0xMi0wNiAxNTozNCAgcnN0b3J5CiAKICAgICogYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jOgpAQCAtOTExOCw2ICsxOTcwMSwzOSBAQAogCiAgICBDSEFOR0VTOiBCVUc6IDE2MDAwOTM6IGF1dG9jb25mIDIuNjAgYnJlYWtzIHRoZSBidWlsZAogCisyMDA2LTEyLTA0IDE3OjQ5ICBoYXJkYWtlcgorCisgICAqIENPUFlJTkc6CisKKyAgIGNoYW5nZSB0b3AgdGV4dCB0byByZW1vdmUgaGlzdG9yeSBzZWN0aW9uIHdoaWNoIHdhcyBvdXQgb2YgZGF0ZQorCisyMDA2LTEyLTAzIDIzOjIwICBhbGV4X2IKKworICAgKiB3aW4zMi86IGRpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dCwKKyAgICAgbmV0c25tcG1pYnNzZGsvbmV0c25tcG1pYnNzZGsuZHNwOgorCisgICBXaW4zMjogIFdvcmtzcGFjZSBjb21waWxlIGZpeCwgYnVpbGQgaW5zdHJ1Y3Rpb25zIHVwZGF0ZS4KKworMjAwNi0xMS0yNCAxNzo1MyAgaGFyZGFrZXIKKworICAgKiBGQVEsIFJFQURNRSwgY29uZmlndXJlLCBjb25maWd1cmUuaW4KKywgc2Vkc2NyaXB0LmluLCBzbm1wbGliL3NubXBfdmVyc2lvbi5jLAorICAgICBkaXN0L25ldC1zbm1wLnNwZWM6CisKKyAgIC0gdmVyc2lvbiB0YWcgKCA1LjQgKQorCisyMDA2LTExLTI0IDE3OjUyICBoYXJkYWtlcgorCisgICAqIENIQU5HRVMsIE5FV1M6CisKKyAgIHZlcnNpb24gdXBkYXRlCisKKzIwMDYtMTEtMjQgMTc6NDggIGhhcmRha2VyCisKKyAgICogQ2hhbmdlTG9nOgorCisgICB2ZXJzaW9uIHVwZGF0ZQorCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIENoYW5nZXM6IFY1LjQucmMzIC0+IFY1LjQKQEAgLTEyOTQzLDYgKzIzNTU5LDcgQEAKIAogMjAwNi0wOC0xNyAwNzo1MCAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYwogLCBsb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmM6CiAKQEAgLTEzOTQ1LDYgKzI0NTYyLDcgQEAKIAogMjAwNi0wNi0xMiAxMzowNSAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCiA6CiAKQEAgLTE1OTM3LDYgKzI2NTU1LDcgQEAKIAogMjAwNi0wMS0xMCAwMzowNyAgdGFuZGVycwogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMTU5NDQsNiArMjY1NjMsNyBAQAogCiAyMDA2LTAxLTA5IDE3OjQxICB0YW5kZXJzCiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYwogOgogCkBAIC0xNjk1NSw2ICsyNzU3NSw3IEBACiAKIDIwMDUtMTItMDkgMjA6NTggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMTY5NzcsNiArMjc1OTgsNyBAQAogCiAyMDA1LTEyLTA5IDIwOjU3ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0xODI1Nyw2ICsyODg3OSw3IEBACiAKIDIwMDUtMTEtMTYgMTU6MTggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKIDoKIApAQCAtMTgzOTYsNiArMjkwMTksNyBAQAogCiAyMDA1LTExLTE1IDIxOjE0ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0xODQwOSw2ICsyOTAzMyw3IEBACiAKIDIwMDUtMTEtMTUgMjE6MDggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwogOgogCkBAIC0xODQzOCw2ICsyOTA2Myw3IEBACiAKIDIwMDUtMTEtMTUgMTk6MjQgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYwogOgogCkBAIC0xODU1NCw2ICsyOTE4MCw3IEBACiAKIDIwMDUtMTEtMTQgMTc6MjggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTE5ODM1LDYgKzMwNDYyLDcgQEAKIAogMjAwNS0xMC0yOCAyMzoyNyAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmgKIDoKIApAQCAtMTk4NDIsNiArMzA0NzAsNyBAQAogCiAyMDA1LTEwLTI4IDIzOjI2ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0yMTkxMCw2ICszMjUzOSw3IEBACiAKIDIwMDUtMDktMjcgMTk6MjUgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwogOgogCkBAIC0yMjYyMiw2ICszMzI1Miw3IEBACiAKIDIwMDUtMDktMDYgMTk6MTcgIHRhbmRlcnMKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlLy5jdnNpZ25vcmUKIDoKIApAQCAtMjI3MzQsNiArMzMzNjUsNyBAQAogCiAyMDA1LTA4LTMwIDA4OjA2ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb25zdGFudHMuaAogOgogCkBAIC0yNTU3MCw2ICszNjIwMiw3IEBACiAKIDIwMDUtMDMtMjggMTQ6MjkgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYwogOgogCkBAIC0yNTYxMCw2ICszNjI0Myw3IEBACiAKIDIwMDUtMDMtMjQgMTY6NDggIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMjYzNDcsNiArMzY5ODEsNyBAQAogCiAyMDA1LTAxLTI3IDIyOjUyICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTI4MTAyLDYgKzM4NzM3LDcgQEAKIAogMjAwNC0xMC0xNyAyMDo1NiAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTI4NTIyLDYgKzM5MTU4LDcgQEAKIAogMjAwNC0xMC0xNCAxODoxNSAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCiA6CiAKQEAgLTI4ODcwLDYgKzM5NTA3LDcgQEAKIAogMjAwNC0xMC0wOCAxOToyNyAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGVfaW50ZXJmYWNlLmMKIDoKIApAQCAtMjg4NzcsNiArMzk1MTUsNyBAQAogCiAyMDA0LTEwLTA4IDE5OjI1ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0yOTkzMCw2ICs0MDU2OSw3IEBACiAKIDIwMDQtMDktMjQgMDk6MTUgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMjk5ODksNiArNDA2MjksNyBAQAogCiAyMDA0LTA5LTIzIDEzOjI0ICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9kYXRhX3NldC5jCiA6CiAKQEAgLTMwMTY1LDYgKzQwODA2LDcgQEAKIAogMjAwNC0wOS0yMSAwNjo0MyAgaGFyZGFrZXIKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZV9kYXRhX2dldC5jCiA6CiAKQEAgLTMxMzU3LDYgKzQxOTk5LDcgQEAKIAogMjAwNC0wOC0yNyAyMzoyMiAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jCiA6CiAKQEAgLTMyMjE3LDYgKzQyODYwLDcgQEAKIAogMjAwNC0wNy0xMCAxOTo1MSAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKIDoKIApAQCAtMzIzMDEsNiArNDI5NDUsNyBAQAogCiAyMDA0LTA3LTA5IDIyOjU4ICBoYXJkYWtlcgogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlX2RhdGFfc2V0LmMKIDoKIApAQCAtMzIzNzksNiArNDMwMjQsNyBAQAogCiAyMDA0LTA3LTA5IDA5OjU3ICBoYXJkYWtlcgogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlLy5jdnNpZ25vcmUKIDoKIApAQCAtMzI1MjIsNiArNDMxNjgsNyBAQAogCiAyMDA0LTA3LTA3IDEzOjQxICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKIDoKIApAQCAtMzMzNDksNiArNDM5OTYsNyBAQAogCiAyMDA0LTA2LTI4IDE1OjExICByc3RvcnkKIAorICAgKgogICAgICBhZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnN0YW50cy5oCiA6CiAKQEAgLTM2MDE5LDYgKzQ2NjY3LDcgQEAKIAogMjAwNC0wNC0xMyAxMTo0NCAgcnN0b3J5CiAKKyAgICoKICAgICAgYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwogOgogCkBAIC0zNjAyNiw2ICs0NjY3NSw3IEBACiAKIDIwMDQtMDQtMTMgMTE6NDMgIHJzdG9yeQogCisgICAqCiAgICAgIGFnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwogOgogCkBAIC01MzE5OCw3ICs2Mzg0OCw3IEBACiAKICAgICogYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jOgogCi0gICBSZXBvcnQgbm9uLWV4aXN0ZW50IHN1Ymluc3RhbmNlcyBhcyAnbm9TdWNoSW5zdGFuY2UnIHJhdGhlciB0aGFuICdub1N1Y2hPYmplY3QnLgorICAgUmVwb3J0IG5vbi1leGl0ZW50IHN1Ymluc3RhbmNlcyBhcyAnbm9TdWNoSW5zdGFuY2UnIHJhdGhlciB0aGFuICdub1N1Y2hPYmplY3QnLgogICAgInNubXBnZXQgLi4uLiAuMS4zLjYuMS42LjMuMTIuMS41LjAuOTkiIG5vdyByZXNwb25kcyBjb3JyZWN0bHkuCiAgICAodGhvdWdoICJzbm1wZ2V0IC4uLi4gLjEuMy42LjEuNi4zLjEyLjEuNS4xIiBzdGlsbCByZXR1cm5zICdub1N1Y2hPYmplY3QnKQogICAgCmRpZmYgLS1naXQgYS9GQVEgYi9GQVEKaW5kZXggZjRmNzc1NS4uMGYwNmI1OCAxMDA2NDQKLS0tIGEvRkFRCisrKyBiL0ZBUQpAQCAtMSw3ICsxLDcgQEAKICAgICAgIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIChGQVEpIGZvciB0aGUgVUNEL05ldC1TTk1QIHBhY2thZ2UKICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAkJICAgICAgIEZBUSBBdXRob3I6IERhdmUgU2hpZWxkCi0JICAgICAgICBOZXQtU05NUCBWZXJzaW9uOiA1LjQuNCBTVk4gYnJhbmNoCisJCQlOZXQtU05NUCBWZXJzaW9uOiA1LjUuMgogCSAgICBOZXQtU05NUC9VQ0QtU05NUCBQcm9qZWN0IExlYWRlcjogV2VzIEhhcmRha2VyCiAJICAgICBFbWFpbDogbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldAogCkBAIC0yMTU4LDYgKzIxNTgsMTUgQEAKICAgb3V0cHV0IGlzIHJldHVybmVkIGluIGEgZml4ZWQgZm9ybWF0LCBhbmQgaXQgaXMgdXAgdG8gdGhlIHJlY2VpdmluZwogICBhcHBsaWNhdGlvbiB0byBpbnRlcnByZXQgdGhpcyBhcHByb3ByaWF0ZWx5LgogCisgIE5vdGUgdGhhdCB0aGUgInJlbG9jYXRhYmxlIiBmb3JtIG9mIHRoZSAnZXhlYycgZGlyZWN0aXZlICgnZXhlYyBPSUQgLi4uLicpCisgIHByb2R1Y2VzIE1JQiBvdXRwdXQgdGhhdCBpcyBub3Qgc3RyaWN0bHkgdmFsaWQuIEZvciB0aGlzIHJlYXNvbiwgc3VwcG9ydAorICBmb3IgdGhpcyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZiAnZXh0ZW5kIE9JRCAuLi4nLCB3aGljaCBwcm9kdWNlcworICB3ZWxsLWZvcm1lZCBNSUIgcmVzdWx0cyAoYXMgd2VsbCBhcyBwcm92aWRpbmcgZnVsbGVyIGZ1bmN0aW9uYWxpdHkpLgorICBUaGUgbW9zdCByZWNlbnQgcmVsZWFzZXMgb2YgdGhlIGFnZW50IGRvbid0IGluY2x1ZGUgc3VwcG9ydCBmb3IgInJlbG9jYXRhYmxlCisgIGV4ZWMiIGJ5IGRlZmF1bHQuIFRoaXMgbmVlZHMgdG8gYmUgZXhwbGljaXRseSBpbmNsdWRlZCB3aGVuIHRoZSBhZ2VudCBpcworICBmaXJzdCBjb21waWxlZCwgYnkgaW5jbHVkaW5nIHRoZSBtb2R1bGUgJ3VjZC1zbm1wL2V4dGVuc2libGUnIGluc3RlYWQgb2YKKyAgJ2FnZW50L2V4dGVuZCcuCisKIAogICAncGFzcycgaXMgYSBtb3JlIGdlbmVyYWwgbWVjaGFuaXNtIGZvciBpbXBsZW1lbnRpbmcgYXJiaXRyYXJ5IE1JQgogICBvYmplY3RzLiAgVGhlIHNwZWNpZmllZCBjb21tYW5kIHdpbGwgYmUgaW52b2tlZCBmb3IgYW55IHJlcXVlc3Qgd2l0aGluCkBAIC0yNTk0LDcgKzI2MDMsNyBAQAogCiAKIFdoeSBkb2VzIHRoZSBhZ2VudCBjb21wbGFpbiBhYm91dCAnbm8gYWNjZXNzIGNvbnRyb2wgaW5mb3JtYXRpb24nPwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgIEFsdGhvdWdoIGFuIFNOTVAgYWdlbnQgbWF5IHN1cHBvcnQgYSB3aWRlIHJhbmdlIG9mIG1hbmFnZW1lbnQKICAgaW5mb3JtYXRpb24sIGl0IGlzIG5vdCBuZWNlc3NhcmlseSBhcHByb3ByaWF0ZSB0byByZXBvcnQgdGhlIHdob2xlCmRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkOGMxZmEKLS0tIC9kZXYvbnVsbAorKysgYi9NYWtlZmlsZS5hbQpAQCAtMCwwICsxIEBACitBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCAwZWE0MWFhLi41NDJmNGFiIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtMTYsMTkgKzE2LDE5IEBACiBJTlNUQUxMSEVBREVSUz12ZXJzaW9uLmgKIElOQ0xVREVTVUJESVI9c3lzdGVtCiBJTkNMVURFU1VCRElSSEVBREVSUz0gYWl4LmggYnNkLmggYnNkaTMuaCBic2RpNC5oIGJzZGkuaCBjeWd3aW4uaCBcCi0JZGFyd2luLmggZGFyd2luNy5oIGRhcndpbjguaCBkYXJ3aW45LmggZHluaXguaCBcCisJZGFyd2luLmggZGFyd2luNy5oIGRhcndpbjguaCBkYXJ3aW45LmggZHJhZ29uZmx5LmggZHluaXguaCBcCiAJZnJlZWJzZDIuaCBmcmVlYnNkMy5oIGZyZWVic2Q0LmggZnJlZWJzZDUuaCBmcmVlYnNkNi5oIFwKIAlmcmVlYnNkNy5oIGZyZWVic2Q4LmggZnJlZWJzZDkuaCBmcmVlYnNkMTAuaCBmcmVlYnNkMTEuaCBcCiAJZnJlZWJzZDEyLmggZnJlZWJzZC5oIFwKLSAgICAgICAgZ2VuZXJpYy5oIGhwdXguaCBcCi0JaXJpeC5oIGxpbnV4LmggbWluZ3czMi5oIG1pcHMuaCBuZXRic2QuaCBvc2Y1LmggXAorICAgICAgICBnZW5lcmljLmggXAorCWhwdXguaCBpcml4LmggbGludXguaCBtaW5ndzMyLmggbWlwcy5oIG5ldGJzZC5oIG9zZjUuaCBcCiAJb3BlbmJzZC5oIG9wZW5ic2Q1Lmggb3BlbmJzZDQuaCBcCiAJc29sYXJpczIuMy5oIHNvbGFyaXMyLjQuaCBzb2xhcmlzMi41Lmggc29sYXJpczIuNi5oIFwKLQlzb2xhcmlzLmggc3Vub3MuaCBzdnI1Lmggc3lzdi5oIHVsdHJpeDQuaCBkcmFnb25mbHkuaAorCXNvbGFyaXMuaCBzdW5vcy5oIHN2cjUuaCBzeXN2LmggdWx0cml4NC5oCiBJTkNMVURFU1VCRElSMj1tYWNoaW5lCiBJTkNMVURFU1VCRElSSEVBREVSUzI9Z2VuZXJpYy5oCiBJTlNUQUxMQlVJTFRIRUFERVJTPWluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLUlOU1RBTExCSU5TQ1JJUFRTPW5ldC1zbm1wLWNvbmZpZworSU5TVEFMTEJJTlNDUklQVFM9bmV0LXNubXAtY29uZmlnIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyCiBJTlNUQUxMVUNESEVBREVSUz11Y2Qtc25tcC1jb25maWcuaCB2ZXJzaW9uLmggbWliX21vZHVsZV9jb25maWcuaAogCiAjCkBAIC02MCw3ICs2MCw3IEBACiAjCiAjIHRhcmdldHMKICMKLWFsbDogICAgc2Vkc2NyaXB0IEVYQU1QTEUuY29uZiBzdGFuZGFyZGFsbCBuZXQtc25tcC1jb25maWcteCBAUEVSTFRBUkdTQCBAUFlUSE9OVEFSR1NACithbGw6ICAgIHNlZHNjcmlwdCBFWEFNUExFLmNvbmYgc3RhbmRhcmRhbGwgbmV0LXNubXAtY29uZmlnLXggbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgQFBFUkxUQVJHU0AgQFBZVEhPTlRBUkdTQAogCiBzdGFydC1mbGFnOgogCUB0b3VjaCBidWlsZC1pbi1wcm9ncmVzcy1mbGFnCkBAIC05OCw2ICs5OCw3IEBACiAjCiBzZWRzY3JpcHQ6IHNlZHNjcmlwdC5pbiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oICQoc3JjZGlyKS9hZ2VudC9taWJncm91cC9taWJkZWZzLmgKIAkkKENQUCkgJChzcmNkaXIpL3NlZHNjcmlwdC5pbiB8IGVncmVwICdec1svI10nIHwgc2VkICdzL1JFTU9WRU1FLy9nO3MjICovIy8jZztzLyAqIy8jL2c7cyMvICojLyNnO3MvIyBnLyNnLzsnID4gc2Vkc2NyaXB0CisJZWNobyAncy9WRVJTSU9OSU5GTy8kKFZFUlNJT04pL2cnID4+IHNlZHNjcmlwdAogCWVjaG8gJ3MjREFUQURJUiMkKGRhdGFkaXIpI2cnID4+IHNlZHNjcmlwdAogCWVjaG8gJ3MjTElCRElSIyQobGliZGlyKSNnJyA+PiBzZWRzY3JpcHQKIAllY2hvICdzI0JJTkRJUiMkKGJpbmRpcikjZycgPj4gc2Vkc2NyaXB0CkBAIC0xMTIsNyArMTEzLDcgQEAKIGRvY3NkaXI6IGRvY3Nkb3gKIAogZG9jc2RveDogZG94eWdlbi5jb25mCi0Jc3JjZGlyPSQoc3JjZGlyKSBkb3h5Z2VuICQoc3JjZGlyKS9kb3h5Z2VuLmNvbmYKKwlzcmNkaXI9JChzcmNkaXIpIFZFUlNJT049JChWRVJTSU9OKSBkb3h5Z2VuICQoc3JjZGlyKS9kb3h5Z2VuLmNvbmYKIAktcm0gZG9jcy9tYW4vbWFuMy90b2RvLjMKIAktcm0gZG9jcy9tYW4vbWFuMy9kZXByZWNhdGVkLjMKIApAQCAtMTI1LDYgKzEyNiwxMCBAQAogCWNobW9kIGEreCBuZXQtc25tcC1jb25maWcKIAl0b3VjaCBuZXQtc25tcC1jb25maWcteAogCituZXQtc25tcC1jcmVhdGUtdjMtdXNlci14OiBuZXQtc25tcC1jcmVhdGUtdjMtdXNlcgorCWNobW9kIGEreCBuZXQtc25tcC1jcmVhdGUtdjMtdXNlcgorCXRvdWNoIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyLXgKKwogIwogIyBleHRyYSBpbnN0YWxsIHJ1bGVzCiAjCkBAIC0yNDcsNyArMjUyLDggQEAKIGNvbmZpZ2NsZWFuOiBtYWtlZmlsZWNsZWFuCiAJcm0gLWYgY29uZmlnLmNhY2hlIGNvbmZpZy5zdGF0dXMgY29uZmlnLmxvZyBcCiAJCWxpYnRvb2wgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCBcCi0JCW5ldC1zbm1wLWNvbmZpZyBuZXQtc25tcC1jb25maWcteCBjb25maWd1cmUtc3VtbWFyeQorCQluZXQtc25tcC1jb25maWcgbmV0LXNubXAtY29uZmlnLXggY29uZmlndXJlLXN1bW1hcnkgXAorCQluZXQtc25tcC1jcmVhdGUtdjMtdXNlciBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci14CiAJcm0gLWYgbWlicy8uaW5kZXgKIAlybSAtZiBpbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgJCVwKIAkJaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgJCVwKQEAgLTI4MSw4ICsyODcsMjggQEAKIAkgICAgZWNobyAiV0FSTklORzogbm90IHJ1bm5pbmcgY29uZmlnLnN0YXR1cyI7IFwKIAlmaQogCitjb25maWd1cmVfYWMgPSBjb25maWd1cmUuYWMgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50IFwKKwljb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWIgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzIFwKKwljb25maWd1cmUuZC9jb25maWdfb3NfbGliczEgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19saWJzMiBcCisJY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MxIFwKKwljb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMyBcCisJY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0IFwKKwljb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3MgXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycyBcCisJY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcyBcCisJY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsIFwKKwljb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9wYXRocyBcCisJY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24gXAorCWNvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzIFwKKwljb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQorCiAkKHNyY2RpcikvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbjogc3RhbXAtaC5pbgotJChzcmNkaXIpL3N0YW1wLWguaW46IGNvbmZpZ3VyZS5pbiBhY2NvbmZpZy5oCiskKHNyY2Rpcikvc3RhbXAtaC5pbjogJChjb25maWd1cmVfYWMpIGFjY29uZmlnLmgKIAlAaWYgdGVzdCAieCQoTk9BVVRPREVQUykiID0gIngiIC1hICJ4JChBVVRPSEVBREVSKSIgIT0gIng6IjsgdGhlbiBcCiAJICAgIGNkICR7c3JjZGlyfSAmJiBMQ19DT0xMQVRFPUMgJChBVVRPSEVBREVSKTsgXAogCSAgICBlY2hvIHRpbWVzdGFtcCA+ICR7c3JjZGlyfS9zdGFtcC1oLmluOyBcCkBAIC0zMDEsNyArMzI3LDcgQEAKIAkgICAgZWNobyAiV0FSTklORzogbm90IHJ1bm5pbmcgY29uZmlnLnN0YXR1cyI7IFwKIAlmaQogCi0kKHNyY2RpcikvY29uZmlndXJlOiBjb25maWd1cmUuaW4gYWNsb2NhbC5tNAorJChzcmNkaXIpL2NvbmZpZ3VyZTogJChjb25maWd1cmVfYWMpIGFjbG9jYWwubTQKIAlAaWYgdGVzdCAieCQoTk9BVVRPREVQUykiID0gIngiIC1hICJ4JChBVVRPQ09ORikiICE9ICJ4OiI7IHRoZW4gXAogCSAgICBjZCAke3NyY2Rpcn0gJiYgJChBVVRPQ09ORik7IFwKIAkgICAgZWNobyAiUGxlYXNlIHJ1biBjb25maWd1cmUgbm93LiI7IFwKZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRvcCBiL01ha2VmaWxlLnRvcAppbmRleCBjNGM0NGVlLi5mNGZhNGE4IDEwMDY0NAotLS0gYS9NYWtlZmlsZS50b3AKKysrIGIvTWFrZWZpbGUudG9wCkBAIC0xLDcgKzEsNyBAQAogIwogIyBNaW5pbXVtIGVudmlyb25tZW50IGFuZCB2aXJ0dWFsIHBhdGggc2V0dXAKICMKLVNIRUxMCQk9IC9iaW4vc2gKK1NIRUxMCQk9IEBTSEVMTEAKIHNyY2RpcgkJPSBAc3JjZGlyQAogdG9wX3NyY2Rpcgk9IEB0b3Bfc3JjZGlyQAogVkVSU0lPTgkJPSBAVkVSU0lPTkAKQEAgLTE1LDYgKzE1LDcgQEAKIGJpbmRpcgkJPSBAYmluZGlyQAogc2JpbmRpcgkJPSBAc2JpbmRpckAKIGxpYmRpcgkJPSBAbGliZGlyQAorZGF0YXJvb3RkaXIJPSBAZGF0YXJvb3RkaXJACiBkYXRhZGlyCQk9IEBkYXRhZGlyQAogaW5jbHVkZWRpcgk9IEBpbmNsdWRlZGlyQC9uZXQtc25tcAogdWNkaW5jbHVkZWRpcgk9IEBpbmNsdWRlZGlyQC91Y2Qtc25tcApAQCAtNjEsNyArNjIsNyBAQAogIyBUaGUgKHNsaWdodGx5IGNsYXJpZmllZCkgcnVsZXM6CiAjCiAjIC0gSWYgYW55IGludGVyZmFjZXMvc3RydWN0dXJlcyBoYXZlIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkIHNpbmNlIHRoZQotIyAgIGxhc3QgdXBkYXRlLCBpbmNyZW1lbnQgY3VycmVudCwgYW5kIHNldCBhZ2UgYW5kIHJldmlzaW9uIHRvIDAuIFN0b3AuCisjICAgbGFzdCB1cGRhdGUsIGluY3JlbWVudCBjdXJyZW50ICgrNSksIGFuZCBzZXQgYWdlIGFuZCByZXZpc2lvbiB0byAwLiBTdG9wLgogIwogIyAtIElmIGFueSBpbnRlcmZhY2VzIGhhdmUgYmVlbiBhZGRlZCBzaW5jZSB0aGUgbGFzdCBwdWJsaWMgcmVsZWFzZSwgdGhlbgogIyAgIGluY3JlbWVudCBjdXJyZW50IGFuZCBhZ2UsIGFuZCBzZXQgcmV2aXNpb24gdG8gMC4gU3RvcC4KQEAgLTc2LDkgKzc3LDkgQEAKICMgNS4zIHdhcyBhdCAxMCwgNS40IGlzIGF0IDE1LCAuLi4gIFRoaXMgbGVhdmVzIHNvbWUgcm9vbSBmb3IgbmVlZGVkCiAjIGNoYW5nZXMgZm9yIHBhc3QgcmVsZWFzZXMgaWYgYWJzb2x1dGVseSBuZWNlc3NhcnkuCiAjIAotTElCQ1VSUkVOVCAgPSAxNgotTElCQUdFICAgICAgPSAxCi1MSUJSRVZJU0lPTiA9IDMKK0xJQkNVUlJFTlQgID0gMjAKK0xJQkFHRSAgICAgID0gMAorTElCUkVWSVNJT04gPSAyCiAKIExJQl9MRF9DTUQgICAgICA9ICQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChMSU5LQ0MpICQoQ0ZMQUdTKSAtcnBhdGggJChsaWJkaXIpIC12ZXJzaW9uLWluZm8gJChMSUJDVVJSRU5UKTokKExJQlJFVklTSU9OKTokKExJQkFHRSkgLW8KIExJQl9FWFRFTlNJT04gICA9IGxhCmRpZmYgLS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCAzOGI2MmNmLi5hNjcxM2ZjIDEwMDY0NAotLS0gYS9ORVdTCisrKyBiL05FV1MKQEAgLTMsMTA2ICszLDEzNyBAQAogdGhhdCBoYXZlIGJlZW4gZml4ZWQvYXBwbGllZCwgYW5kIHRoZSBDaGFuZ2VMb2cgZmlsZSBmb3IgYSBjb21wcmVoZW5zaXZlCiBsaXN0aW5nIG9mIGFsbCBjaGFuZ2VzIG1hZGUgdG8gdGhlIGNvZGUuCiAKLSo1LjQuNCoKIAotICAgIHNubXBsaWI6Ci0gICAgICAtIFtCVUcgMzE3MTg3OF06IFVzaW5nIFNOTVB2MyBjb250ZXh0IGRvZXMgbm90IHdvcmsKKyogNS41LjIgKgogCiAgICAgc25tcGQ6Ci0gICAgICAtIFZhcmlvdXMgNjQtYml0IGZpeGVzCisgICAgICAtIFtQQVRDSCAzMTk4NzgxXTogRml4IGNvbXBpbGF0aW9uIG9mIGRpc21hbi97cGluZyx0cmFjZXJvdXRlfSBtb2R1bGVzCisgICAgICAtIFtCVUcgMzUyNjU0OV06IENWRS0yMDEyLTIxNDEgQXJyYXkgaW5kZXggZXJyb3IgbGVhZGluZyB0byBjcmFzaAorICAgICAgLSBbQlVHIDM1MzIwOTBdOiBGaXggaGlnaCBpZkluZGV4IHZhbHVlcyBjcmFzaGluZyBockRldmljZURlc2NyCisgICAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgd2lsbCBhZmZlY3QgdGhlIGluZGV4aW5nIG9mICphbGwqIGVudHJpZXMgaW4KKyAgICAgICAgICAgICB0aGUgaHJEZXZpY2VUYWJsZS4gIEFzc3VtcHRpb25zIGFzIHRvIHdoYXQgaW5kZXggYSBnaXZlbiBkZXZpY2UKKyAgICAgICAgICAgICB3aWxsIHVzZSwgYXJlIG5vIGxvbmdlciB2YWxpZC4KKworICAgIGJ1aWxkaW5nOgorICAgICAgLSBbUEFUQ0ggMjA5MTE1Nl06IEZpeCBwYXJhbGxlbCBidWlsZHMgKHVzaW5nICdtYWtlIC1qIDxOPicpCisKKyogNS41LjEgKgorCisgICAgc25tcGQ6CisgICAgICAtIEZpeCBoYW5kbGluZyBvZiBtdWx0aXBsZSBtYXRjaGluZyBWQUNNIGVudHJpZXMuCisgICAgICAgIChVc2UgdGhlICJiZXN0IiBtYXRjaCwgcmF0aGVyIHRoYW4gdGhlIGZpcnN0IG9uZSkuCisJTm90ZSB0aGF0IHRoaXMgY291bGQgcG90ZW50aWFsbHkgYWZmZWN0IHRoZSBiZWhhdmlvdXIKKwlvZiBleGlzdGluZyBhY2Nlc3MgY29udHJvbCBjb25maWd1cmF0aW9ucy4KIAogICAgIEZyZWVCU0QsTmV0QlNELE9wZW5CU0Q6CiAgICAgICAgIEluY29ycG9yYXRlIGZpeGVzIGZyb20gdGhlc2UgTy9TIHBhdGNoIGFyY2hpdmVzCiAKKyogNS41ICoKIAotKjUuNC4zKgorICAgIEFsbCBhcHBsaWNhdGlvbnM6CisgICAgICAtIEFkZGVkIHRoZSBhYmlsaXR5IHRvICJhbGlhcyIgdHJhbnNwb3J0cyB0byBhIG1vcmUgc2ltcGxlIG5hbWUKKyAgICAgICAgIChzZWUgdGhlICJhbGlhcyIga2V5d29yZCBpbiB0aGUgc25tcC5jb25mIG1hbnVhbCBwYWdlKQorICAgICAgLSBUaGUgLXQgKHRpbWVvdXQpIHN3aXRjaCB3aWxsIGFjY2VwdCBmbG9hdGluZyBwb2ludCBudW1iZXJzIChlZzogLjEpCiAKICAgICBzbm1wZDoKLSAgICAgIC0gQ2hhbmdlIGRlZmF1bHQgQWdlbnRYIHRhcmdldCBmcm9tIDAuMC4wLjA6NzA1IHRvIGxvY2FsaG9zdDo3MDUKLSAgICAgIC0gRml4IENWRS0yMDA4LTQzMDkgKEdFVEJVTEsgaXNzdWUgcmVwb3J0ZWQgYnkgT3NjYXIgTWlyYS1TYW5jaGV6KQotICAgICAgLSBGaXggaGFuZGxpbmcgb2YgbXVsdGlwbGUgbWF0Y2hpbmcgVkFDTSBlbnRyaWVzCi0gICAgICAgIChVc2UgdGhlICJiZXN0IiBtYXRjaCwgcmF0aGVyIHRoYW4gdGhlIGZpcnN0IG9uZSkuCi0gICAgICAgICAgICBOb3RlIHRoYXQgdGhpcyBjb3VsZCBwb3RlbnRpYWxseSBhZmZlY3QgdGhlIGJlaGF2aW91ciBvZgotICAgICAgICAgICAgZXhpc3RpbmcgYWNjZXNzIGNvbnRyb2wgY29uZmlndXJhdGlvbnMuCi0gICAgICAtIExhdGNoIGxhcmdlLWRpc2sgc3RhdGlzdGljcyBhdCAyVGIgKHJhdGhlciB0aGFuIHdyYXBwaW5nKQorICAgICAgLSBbQlVHIDE3MTI5ODhdOiBkZWZhdWx0L2NvbmZpZ3VyYWJsZSBtYXggIyB2YXJiaW5kcyByZXR1cm5lZCBieSBHRVRCVUxLCisgICAgICAtIFtQQVRDSCAxNTg1MTQ2XTogRXh0ZW5kIHJhbmdlIG9mIGF2YWlsYWJsZSBlcnJvciBjb2RlcworICAgICAgLSBbUEFUQ0ggMTY1NDQyNF06IEhhbmRsZSByb3cgZGVsZXRpb24gaXNzdWVzIGluIGRhdGFzZXQgdGFibGVzCisgICAgICAtIFtQQVRDSCAxNjY2NzM3XTogSW5jbHVkZSBJUHY2IHRyYWZmaWMgaW4gdmFyaW91cyBVRFAgY291bnRlcnMKKyAgICAgIC0gW1BBVENIIDE3MDAxNTddOiBGaXggb3JkZXJpbmcgb2YgZXhlYyB0b2tlbnMgaW4gTUlCIG91dHB1dAorICAgICAgLSBbUEFUQ0ggMTcxOTI1M106IGZpeCBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIGZvciBtdWx0aXBsZSB3YWxrcworICAgICAgLSBbUEFUQ0ggMTcyMzYxMV06IE5ldyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUk1PTiBhbGFybVRhYmxlCisgICAgICAtIFtQQVRDSCAxNzM3NDM5XTogYXV0b21hdGljIGxpbmsgdXAvZG93biB0cmFwcyBvbiBhIHdhbGsKKyAgICAgIC0gW1BBVENIIDE4MDY1MDFdOiBBZGQgQVBJIGZvciBzZW5kaW5nIHRyYXBzIHdpdGggYSBzbm1wdjMgY29udGV4dAorICAgICAgLSBbUEFUQ0ggMTg4MjYyMV06IEFkZCBMVk0gc3VwcG9ydCB0byB0aGUgcGFydGl0aW9uIHRhYmxlCisgICAgICAtIFtQQVRDSCAxODkzNDY4XTogZml4ZWQgcmVnaXN0cmF0aW9uIG9mIE9JRHMgd2l0aCByYW5nZXMKKyAgICAgIC0gW1BBVENIIDE5MDE3NjRdOiBTdXBwb3J0IGRhdGUtYmFzZWQgbG9nd2F0Y2ggZmlsZXMKKyAgICAgIC0gW1BBVENIIDE5MDk4MTNdOiBmaXggdGFibGVfaXRlcmF0b3IgaGFuZGxpbmcgb2YgU09SVEVEIGhpbnQKKyAgICAgIC0gW1BBVENIIDE5MTY4NDBdOiBuZXcgY29uZmlnIG9wdGlvbiB0byBzZXQgU05NUHYxIHRyYXAgYWdlbnQgYWRkcmVzcworICAgICAgLSBbUEFUQ0ggMjEwMzQ5Ml06IGltcGxlbWVudCBSTU9OLU1JQjo6ZXRoZXJTdGF0c0phYmJlcnMKKyAgICAgIC0gW1BBVENIIDI0NDkyMTBdOiBhZGQgNjQtYml0IHVzYWdlIHN0YXRpc3RpY3MgdG8gVUNELVNOTVAtTUlCOjpkc2tUYWJsZQorICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgYSB1c2VyIHByb3ZpZGVkIGxlbmd0aCB2YXJpYWJsZQorCSAgIGFuZCBDIHN0cmluZyB2YWx1ZXMgdG8gdGhlIHdhdGNoZXIgaGVscGVyLgorICAgICAgLSBBdXRvbWF0aWNhbGx5IHJlcmVnaXN0ZXIgc3lzT1JUYWJsZSBlbnRyaWVzIGZyb20gQWdlbnRYIHN1YmFnZW50cy4KKyAgICAgIC0gRml4IHZhcmlvdXMgbWVtb3J5IGxlYWtzCisgICAgICAtIEltcGxlbWVudCBpcEFkZHJlc3NTcGluTG9jaworICAgICAgLSBJbXBsZW1lbnQgaXBOZXRUb1BoeXNpY2FsTGFzdFVwZGF0ZWQKKyAgICAgIC0gU3VwcHJlc3MgYW5ub3lpbmcgInJlZ2lzdHJhdGlvbiAhPSBkdXBsaWNhdGUiIHdhcm5pbmcgZm9yIHJvb3Qgb2lkcwogCi0gICAgTGludXg6Ci0gICAgICAtIEZpeCBidWlsZCBvbiBtb2Rlcm4gZGlzdHJpYnV0aW9ucyAodXNpbmcgcnBtLTQuNikKKyAgICBzbm1wdHJhcGQ6CisgICAgICAtIFtQQVRDSCAxOTA4Mjg4XTogUnVuIHBlcmwgRU5EIGJsb2NrIG9uIHRlcm1pbmF0aW9uCisgICAgICAtIEFkZCB0cmFwIGhhbmRsZXIgZm9yIGxvZ2dpbmcgdHJhcHMgdG8gYSBteXNxbCBkYXRhYmFzZQorICAgICAgLSBXaXRoZHJhdyBkZXByZWNhdGVkIG9wdGlvbnMuCiAKLSAgICBXaW5kb3dzOgotICAgICAgLSBGaXggdmFyaW91cyBidWlsZHMgKHJlY2VudCBNU1ZDLCBNaW5HVywgSVB2Niwgd2luRXh0RExMKQorICAgIHNubXBuZXRzdGF0OgorICAgICAgLSBbUEFUQ0ggMjU2NDUzOF06IFN1cHBvcnQgR0VUQlVMSyBpbiB2MmMrIHNubXAgdmVyc2lvbnMKIAotCi0qNS40LjIqCisgICAgc25tcHVzbToKKyAgICAgIC0gW1BBVENIIDE1OTEzNTVdOiBBbGxvdyBjbG9uaW5nIHRvIGFyYml0cmFyeSBlbmdpbmVJRHMKIAogICAgIHNubXBsaWI6Ci0gICAgICAtIFtQQVRDSCAxOTIxODYxXTogQXZvaWQgZW5kbGVzcyBsb29wIGFmdGVyIHRydW5jYXRpbmcgNjRiaXQgaW50Ci0gICAgICAtIEJldHRlciBoYW5kbGluZyBvZiBDT05UQUlORVJfSU5TRVJUIGZhaWx1cmVzIHdpdGggbXVsdGlwbGUgaW5kaWNlcworICAgICAgLSBbQlVHIDE2MTk4MjddOiBJbXByb3ZlIGhhbmRsaW5nIG9mIGxpbmsgZGVwZW5kZW5jaWVzCisgICAgICAtIFtQQVRDSCAgNzAwNjgxXTogbGltaXRlZCBzdXBwb3J0IGZvciBVRFB2NCBicm9hZGNhc3QgYWRkcmVzc2VzCisgICAgICAtIFtQQVRDSCAxODgyMDY5XTogQWRkIHRva2VuIGZvciBzcGVjaWZ5aW5nIGFuIGV4YWN0IFNOTVB2MyBlbmdpbmVJRAorICAgICAgLSBGaXggYXNzb3J0ZWQgbWVtb3J5IGxlYWtzCisgICAgICAtIEltcGxlbWVudGVkIFJGQzUzNDMgY29udGV4dEVuZ2luZUlEIHByb2JpbmcuCisgICAgICAtIFN1cHBvcnQgZm9yIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwgZm9yIHVzZSB3aXRoIHR1bm5lbGluZwogCi0gICAgc25tcGQ6Ci0gICAgICAtIFtQQVRDSCAyMDIzNjMzXTogYWRkIFNDVFAtTUlCIGltcGxlbWVudGF0aW9uIChMaW51eCBvbmx5KQotICAgICAgLSBzdXBwcmVzcyBhbm5veWluZyAicmVnaXN0cmF0aW9uICE9IGR1cGxpY2F0ZSIgd2FybmluZyBmb3Igcm9vdCBvaWRzCisgICAgbWlzYzoKKyAgICAgIC0gQWRkIGNvbmZpZyByZXJlYWQgc3VwcG9ydCB0byAibmV0LXNubXAtY29uZmlnIC0tY29tcGlsZS1zdWJhZ2VudCIgY29kZQorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBTU0ggYW5kIERUTFMvVURQLgorICAgICAgLSBQcmVsaW1pbmFyeSAoYWxwaGEpIHN1cHBvcnQgZm9yIHRoZSBUU00gc2VjdXJpdHkgbW9kZWwKKyAgICAgIC0gU2VwYXJhdGUgdXNlciBtYW5hZ2VtZW50IGludG8gbmV3IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIHNjcmlwdAogCi0gICAgYnVpbGQ6Ci0gICAgICAtIFtCVUcgMjAyMzgwM106IENvbXBpbGF0aW9uIHByb2JsZW1zIG9uIEhQLVVYIDExLjMxCi0gICAgICAtIFVwZGF0ZSB0byBsaWJ0b29sIDEuNS4yNgotCi0gICAgQUlYOgotICAgICAgLSBBZGQgc3VwcG9ydCBmb3IgQUlYIDYueC4KLQotCi0qNS40LjEqCi0KLSAgICBzbm1wbGliOgotICAgICAgLSBbQlVHIDE2MTk4MjddOiBsaW5rIGxpYnJhcmllcyBhZ2FpbnN0IG5lZWRlZCBleHRlcm5hbCBsaWJyYXJpZXMKLSAgICAgIC0gW1BBVENIIDE2MTY5MTJdOiBmaXggbWVtb3J5IGxlYWsgaW4gVURQIHRyYW5zcG9ydCBjb2RlCi0gICAgICAtIFtQQVRDSCAxNTkyNzA2XTogZml4IG1lbW9yeSBsZWFrIHdoZW4gY2xvbmluZyB2YXJiaW5kcwotICAgICAgLSBDaGFuZ2Ugc25tcF9zZXNzX2FkZF9leCB0byBjb25zaXN0ZW50bHkgY2xvc2UgYW5kIGRlbGV0ZSB0aGUKLSAgICAgICAgdHJhbnNwb3J0IGFyZ3VtZW50IG9uIGZhaWx1cmUsIGVhcmxpZXIgdGhlIGxpdmVuZXNzIG9mIHRoZQotICAgICAgICB0cmFuc3BvcnQgYXJndW1lbnQgd2FzIHVuZGVjaWRlZC4KLQotICAgIHNubXBkOgotICAgICAgLSBbQlVHIDE1NTg4MjNdOiBmaXggaXBBZGRyZXNzVGFibGUgbWVtb3J5IGxlYWsKLSAgICAgIC0gW0JVRyAxNTk2NjM4XTogZml4IG1lbW9yeSBsZWFrIGluIGlwQ2lkclJvdXRlVGFibGUsIGluZXRDaWRyUm91dGVUYWJsZQotICAgICAgLSBbQlVHIDE2MTE1MjRdOiBmaXggdGNwIGNvbm5lY3Rpb24gdGFibGUgZmlsZSBkZXNjcmlwdG9yIGxlYWsKLSAgICAgIC0gaGFuZGxlIHJvdyBkZWxldGlvbiBpc3N1ZXMgaW4gZGF0YXNldCB0YWJsZXMKLSAgICAgIC0gW0JVRyAxNzEyOTg4XTogZGVmYXVsdCBhbmQgY29uZmlndXJhYmxlIG1heGltdW0gbnVtYmVyIG9mCi0gICAgICAgIHZhcmJpbmRzIHJldHVybmFibGUgdG8gYSBHRVRCVUxLIHJlcXVlc3QuCi0gICAgICAtIFtQQVRDSCAxNjY2NzM3XTogaW5jbHVkZSBpcHY2IGNvdW50cyBpbgotCXVkcEluRGF0YWdyYW1zLCB1ZHBOb1BvcnRzLCB1ZHBJbkVycm9ycywgdWRwT3V0RGF0YWdyYW1zCi0gICAgICAtIFtQQVRDSCAxNzAwMTU3XTogZml4ZXMgb3JkZXJpbmcgb2YgZXhlYyB0b2tlbnMgaW4gdGhlIHJlc3VsdGluZyBtaWIgdHJlZQotICAgICAgLSBbUEFUQ0ggMTcxOTI1M106IGZpeCBza2lwTkZTSW5Ib3N0UmVzb3VyY2VzIHNvIGl0IGRvZXMgbm90IGJyZWFrIG9uIHRoZQotCXNlY29uZCB3YWxrIG9mIHRoZSB0YWJsZS4KKyAgICBidWlsZGluZzoKKyAgICAgIC0gSW1wcm92ZWQgY3Jvc3MtY29tcGlsYXRpb24gc3VwcG9ydAorICAgICAgLSBJbXByb3ZlZCBsaWJyYXJ5IGxheWVyaW5nICYgZGVwZW5kZW5jeSBoYW5kbGluZyB3aGVuIGxpbmtpbmcgYXBwcworICAgICAgLSBJbXByb3ZlZCBSUE0gc3BlYyBmaWxlcywgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVuZG9yLXByb3ZpZGVkIHBhY2thZ2VzLgorICAgICAgLSBNZWNoYW5pc20gZm9yIHNlbGVjdGluZyBidWlsZCBlbnZpcm9ubWVudCBiYXNlZCBvbiB2ZXJzaW9uCisgICAgICAtIE5ldyB0ZXN0IHNjcmlwdHMgdG8gdGVzdCBOZXQtU05NUCB0cmFuc3BvcnQgZnVuY3Rpb25hbGl0eQorICAgICAgLSBSZXN0cnVjdHVyZSBjb25maWd1cmUgdGVtcGxhdGUKKyAgICAgIC0gVXBkYXRlIHRvIGF1dG9jb25mIDIuNjMgJiBsaWJ0b29sIDIuMi42CiAKICAgICBwZXJsOgotICAgICAgLSBsaW5rIFBlcmwgbW9kdWxlcyBhZ2FpbnN0IHRoZSBleGFjdCBzZXQgb2YgbGlicmFyaWVzIG5lZWRlZAotICAgICAgLSBbQlVHIDE2MTk4MjddOiBwcm9wZXJseSBsaW5rIGFnYWluc3QgbGlicGVybCB3aGVuIGNvbmZpZ3VyZWQgd2l0aAotCS0tZW5hYmxlLWFzLW5lZWRlZAotICAgICAgLSBbUEFUQ0ggMTcyNTA0OV06IGZpeCBidWxrd2FsayBpbiBjYXNlcyBvZiBub24tcmVwZWF0ZXIKLQotICAgIGJ1aWxkOgotICAgICAgLSB1cGRhdGUgdG8gbGlidG9vbCAxLjUuMjQgKGZyb20gMS41LjIyKQorICAgICAgLSBbQlVHIDE2MTk4MjddOiBpbXByb3ZlIGhhbmRsaW5nIG9mIGxpbmsgZGVwZW5kZW5jaWVzCisgICAgICAtIFtQQVRDSCAxOTU2MTkzXTogYmV0YSB0aHJlYWRhYmxlIHBlcmwgbW9kdWxlIGNvZGUgZm9yIFNOTVB2MS8yYyB1c2FnZS4KIAogICAgIHB5dGhvbjoKLSAgICAgIC0gW1BBVENIIDE3MTYxMTRdOiBMZXQgcHl0aG9uIGJ1aWxkIGluIHRoZSBOZXQtU05NUCBzb3VyY2UgdHJlZQorICAgICAgLSBbUEFUQ0ggMTcxNjExNF06IExldCBweXRob24gYnVpbGQgaW4gc291cmNlIHRyZWUgKERlYmlhbiBwYXRjaCAjMzgpCiAKLSAgICBNYWNPU1g6Ci0gICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhhcmR3YXJlIEFic3RyYWN0aW9uIExheWVyIChIQUwpCi0gICAgICAgIGltcGxlbWVudGF0aW9uIGZvciBtYWNoL2RhcndpbgotICAgICAgLSBJRi1NSUIgcmV3cml0ZSBub3cgZW5hYmxlZCBieSBkZWZhdWx0Ci0KLSAgICBXaW4zMjoKLSAgICAgIC0gZml4IEFFUyBzdXBwb3J0Ci0gICAgICAtIFtQQVRDSCAxNzA2MzQ0XTogZml4IGNvbXBpbGF0aW9uIHdpdGggY3lnd2luCi0KLSAgICBJUklYOgotICAgICAgLSBbUEFUQ0ggMTcwOTc0OF06IE9wdGltaXplZCBJUklYIGNwdSBzdGF0cworICAgIExpbnV4OgorICAgICAgLSBbUEFUQ0ggMTcwNDEwNV06IEFkZCBJUHY2IHN1cHBvcnQgdG8gdGhlIGluZXROZXRUb01lZGlhVGFibGUKKyAgICAgIC0gW1BBVENIIDE3MDU1OTRdOiBWYXJpb3VzIGZpeGVzIHRvIGlwQWRkcmVzc1ByZWZpeFRhYmxlIHJlcG9ydGluZworICAgICAgLSBbUEFUQ0ggMTcwODI0M106IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZVRhYmxlCisgICAgICAtIFtQQVRDSCAxNzE1NDA1XTogSW1wbGVtZW50IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgICAgICAtIFtQQVRDSCAxNzI0NjAyXTogTWZELWJhc2VkIGlwRGVmYXVsdFJvdXRlclRhYmxlIGltcGxlbWVudGF0aW9uCisgICAgICAtIFtQQVRDSCAxODI4NjAyXTogU3VwcG9ydCBpcERlZmF1bHRUVEwgYW5kIGlwRm9yd2FyZGluZyBTRVRzCisgICAgICAtIFtQQVRDSCAxOTI3NzUxXTogSW1wbGVtZW50IGljbXBNc2dTdGF0c1RhYmxlCisgICAgICAtIFtQQVRDSCAyMDIzNjMzXTogSW1wbGVtZW50IFNDVFAtTUlCCisgICAgICAtIFtQQVRDSCAyMDUzMjczXTogSW1wbGVtZW50IEV0aGVyTGlrZSBNSUIKIAogICAgIEFJWDoKLSAgICAgIC0gRml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nIHN0YXRpYyB1c2UKKyAgICAgIC0gQWRkIHN1cHBvcnQgZm9yIEFJWCA2LngKKyAgICAgIC0gRml4IGRlZmF1bHQgc2hhcmVkIGxpYnJhcnkgYnVpbGRpbmcgaW5zdGVhZCBvZiBmb3JjaW5nIHN0YXRpYwogCiAgICAgRnJlZUJTRDoKICAgICAgIC0gW0JVRyAxNjMzNDgzXTogU3VwcG9ydCBDUFUgSEFMIG9uIEZyZWVCU0Q0LngKKyAgICAgIC0gW1BBVENIIDE2MjM4NzRdOiBhZGQgR05VL2tGcmVlQlNEIHN1cHBvcnQKKworICAgIElSSVg6CisgICAgICAtIFtQQVRDSCAxNzA5NzQ4XTogT3B0aW1pemVkIElSSVggY3B1IHN0YXRzCisgICAgICAtIFtQQVRDSCAxNjc1ODY5XTogQ1BVIHN0YXRpc3RpY3MgZm9yIElSSVggYmFzZWQgb24gUENQCisKKyAgICBNYWNPU1g6CisgICAgICAtIFtQQVRDSCAxNjAwNTIyXTogQ1BVIEhBTCBpbXBsZW1lbnRhdGlvbiBmb3IgbWFjaC9kYXJ3aW4KKworICAgIFNvbGFyaXM6CisgICAgICAtIFtQQVRDSCAxNzE5NzMwXTogc3VwcG9ydCBmb3IgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcEFkZHJlc3NUYWJsZQorCisgICAgV2luMzI6CisgICAgICAtIFtQQVRDSCAyNjg2MjQ4XTogRml4IHNldmVyYWwgd2luRXh0RExMIGJ1Z3MuCisgICAgICAtIFtQQVRDSCAxNzA2MzQ0XTogRml4IGNvbXBpbGF0aW9uIHdpdGggY3lnd2luCisgICAgICAtIEZpeCBBRVMgc3VwcG9ydAogCiAKICo1LjQqCmRpZmYgLS1naXQgYS9QT1JUSU5HIGIvUE9SVElORwppbmRleCBkYWNiMTVhLi4wMWUwOTU0IDEwMDY0NAotLS0gYS9QT1JUSU5HCisrKyBiL1BPUlRJTkcKQEAgLTc1LDE3ICs3NSwxMyBAQAogLS0tIFNUUlVDVFVSRSBNRU1CRVIgQ0hFQ0tTCiAKIEluIGNvbmZpZ3VyZS5pbjoKLSAgQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCisgIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBTVFJVQ1RVUkUuTUVNQkVSXSwsLFtbCiAjaW5jbHVkZSBsaW5lcwotXSwgU1RSVUNUVVJFLCBNRU1CRVIpCi0gICBeXl5eXl5eXl4gIF5eXl5eXiAgKGNoYW5nZSkKLQotSW4gYWNjb25maWcuaDoKLSAgI3VuZGVmIFNUUlVDVF9TVFJVQ1RVUkVfSEFTX01FTUJFUgotICAgICAgICAgICAgICAgIF5eXl5eXl5eXiAgICAgXl5eXl5eICAoY2hhbmdlKQorXV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICBeXl5eXl5eXl4gXl5eXl5eICAoY2hhbmdlKQogCiBJbiBzb3VyY2UgY29kZToKLSAgI2lmZGVmIFNUUlVDVF9TVFJVQ1RVUkVfSEFTX01FTUJFUgorICAjaWZkZWYgSEFWRV9TVFJVQ1RfU1RSVUNUVVJFX01FTUJFUgogICAgIC8qIHVzZSBpdCAqLwogICAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDYyOWFmMzEuLmQyNzljZTIgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi0JICAgICAgIFJFQURNRSBmaWxlIGZvciBuZXQtc25tcCBWZXJzaW9uOiA1LjQuNAorCSAgICAgICBSRUFETUUgZmlsZSBmb3IgbmV0LXNubXAgVmVyc2lvbjogNS41LjIKIAogRElTQ0xBSU1FUgogCkBAIC0yNTYsNyArMjU2LDcgQEAKICAgICBEYW4gQS4gRGlja2V5IDxkZGlja2V5QHRyYW5zaXRpb24uY29tPgogICAgIERhdmUgU2hpZWxkIDxELlQuU2hpZWxkQGNzYy5saXYuYWMudWs+CiAgICAgR2lvdmFubmkgUy4gTWFyem90IDxnbWFyem90QG5vcnRlbG5ldHdvcmtzLmNvbT4KLSAgICBOaWVscyBCYWdnZXNlbiA8cmVjbmJhQG1lZGlhdG9yLnVuaS1jLmRrPgorICAgIE5pZWxzIEJhZ2dlc2VuIDxuYmFAdXNlcnMuc291cmNlZm9yZ2UubmV0PgogICAgIFNpbW9uIExlaW5lbiA8c2ltb25AbGltbWF0LnN3aXRjaC5jaD4KICAgICBEYXZpZCBULiBQZXJraW5zIDxkcGVya2luc0Bkc3BlcmtpbnMuY29tPgogICAgIE1pa2UgUGVyaWsgPG1pa2VwQGNydC5jb20+CmRpZmYgLS1naXQgYS9SRUFETUUuYWdlbnQtbWlicyBiL1JFQURNRS5hZ2VudC1taWJzCmluZGV4IDg3MTZmOGQuLjQyODAyNGYgMTAwNjQ0Ci0tLSBhL1JFQURNRS5hZ2VudC1taWJzCisrKyBiL1JFQURNRS5hZ2VudC1taWJzCkBAIC00MCw2ICs0MCw3IEBACiAgIEcgIHNjYWxhciBncm91cCBoZWxwZXIKICAgVyAgd2F0Y2hlZCBzY2FsYXIgCiAgIE0gIG1mZAorICBDICBjb250YWluZXIgdGFibGUKIAogUGxhdGZvcm0gS2V5cwogLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02Myw5ICs2NCwxMCBAQAogIHRhYmxlL29iamVjdCBncm91cCAgICAgICAgICAgT1MgICAgICAgUmVsICAgU3R5bCBGaWxlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIFNOTVB2Mi1NSUIKLSBzeXN0ZW0uKi4wICAgICAgICAgICAgICAgICAgIEEgICAgICAgICAzLjIgICAgIE8gbWliSUkvc3lzdGVtX21pYi5jCi0gc3lzT1JUYWJsZSAgICAgICAgICAgICAgICAgICBBICAgICAgICAgMy40ICAgICBPIG1pYklJL3N5c09SVGFibGUuYwotIHNubXAuKi4wICAgICAgICAgICAgICAgICAgICAgQSAgICAgICAgIDMuMiAgICAgTyBtaWJJSS9zbm1wX21pYi5jCisgc3lzdGVtLj8uMCAgICAgICAgICAgICAgICAgICBBICAgICAgICAgNS41ICAgICBXIG1pYklJL3N5c3RlbV9taWIuYworIC5zeXNPUkxhc3RDaGFuZ2UuMCAgICAgICAgICAgQSAgICAgICAgIDUuNSAgICAgVyBtaWJJSS9zeXNPUlRhYmxlLmMKKyBzeXNPUlRhYmxlICAgICAgICAgICAgICAgICAgIEEgICAgICAgICA1LjUgICAgIEMgbWliSUkvc3lzT1JUYWJsZS5jCisgc25tcC4qLjAgICAgICAgICAgICAgICAgICAgICBBICAgICAgICAgNS41ICAgICBHIG1pYklJL3NubXBfbWliXzVfNS5jCiAgc2V0U2VyaWFsTm8uMCAgICAgICAgICAgICAgICBBICAgICAgICAgNS4wICAgICBXIG1pYklJL3NldFNlcmlhbE5vLmMKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC03NCwxNSArNzYsMTUgQEAKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBTTk1QLU1QRC1NSUIKLSBzbm1wTVBEU3RhdHMuKi4wICAgICAgICAgICAgIEEgICAgICAgICB+NC4wPyAgIE8gc25tcHYzL3NubXBNUERTdGF0cy5jCisgc25tcE1QRFN0YXRzLiouMCAgICAgICAgICAgICBBICAgICAgICAgfjQuMD8gICBHIHNubXB2My9zbm1wTVBEU3RhdHNfNV81LmMKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBTTk1QLVRBUkdFVC1NSUIKICBzbm1wVGFyZ2V0U3BpbkxvY2suMCAgICAgICAgIEEgICAgICAgICAzLjYgICAgIE8gdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwogIHNubXBUYXJnZXRBZGRyVGFibGUgICAgICAgICAgQSAgICAgICAgIDMuNiAgICAgTyB0YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCiAgc25tcFRhcmdldFBhcmFtc1RhYmxlICAgICAgICBBICAgICAgICAgMy42ICAgICBPIHRhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYwotIHNubXBVbmF2YWlsYWJsZUNvbnRleHRzLjAgICAgQSAgICAgICAgIDUuMCAgICAgTyB0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKLSBzbm1wVW5rbm93bkNvbnRleHRzLjAgICAgICAgIEEgICAgICAgICA1LjAgICAgIE8gdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCisgc25tcFVuYXZhaWxhYmxlQ29udGV4dHMuMCAgICBBICAgICAgICAgNS41ICAgICBHIHRhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmMKKyBzbm1wVW5rbm93bkNvbnRleHRzLjAgICAgICAgIEEgICAgICAgICA1LjUgICAgIEcgdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNOTVAtTk9USUZJQ0FUSU9OLU1JQgpAQCAtMTAzLDYgKzEwNSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIKICB1c21TdGF0cy4qLjAgICAgICAgICAgICAgICAgIEEgICAgICAgICB+NC4wICAgIE8gc25tcHYzL3VzbVN0YXRzLmMKKyB1c21TdGF0cy4qLjAgICAgICAgICAgICAgICAgIEEgICAgICAgICA1LjUgICAgIEcgc25tcHYzL3VzbVN0YXRzXzVfNS5jCiAgdXNtVXNlclRhYmxlICAgICAgICAgICAgICAgICBBICAgICAgICAgfjQuMD8gICBPIHNubXB2My91c21Vc2VyLmMKIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTEsMTkgKzE1NCwyMSBAQAogIGljbXAuKi4wICAgICAgICAgICAgICAgICAgICAgVSAkMiAgICAgIH4zLjIgICAgRyBtaWJJSS9pY21wLmMKIAogIGlwU3lzdGVtU3RhdHNUYWJsZSAgICAgICAgICAgTCAgICAgICAgIDUuMiAgICAgTSBpcC1taWIvPS8qCisgaXBTeXN0ZW1TdGF0c1RhYmxlICAgICAgICAgICAgUyAgICAgICAgNS41ICAgICBNIGlwLW1pYi89LyoKICBpcElmU3RhdHNUYWJsZUxhc3RDaGFuZ2UuMCAgIC0tLQotIGlwSWZTdGF0c1RhYmxlICAgICAgICAgICAgICAgLS0tCisgaXBJZlN0YXRzVGFibGUgICAgICAgICAgICAgICBMLS0gICAgICAgNS41ICAgICBNIGlwLW1pYi89LyoKIAogIGlwQWRkclRhYmxlIChEKSAgICAgICAgICAgICAgVSAkMiAgICAgIDQuMiAgICAgTyBtaWJJSS9pcEFkZHIuYwotIGlwQWRkcmVzc1NwaW5Mb2NrLjAgICAgICAgICAgLS0tCisgaXBBZGRyZXNzU3BpbkxvY2suMCAgICAgICAgICBBICAgICAgICAgNS41ICAgICBPIG1pYklJL2lwQWRkci5jCiAgaXBBZGRyZXNzVGFibGUgICAgICAgICAgICAgICBMICAgICAgICAgNS4yICAgICBNIGlwLW1pYi89LyoKKyBpcEFkZHJlc3NUYWJsZSAgICAgICAgICAgICAgICBTICAgICAgICA1LjUgICAgIE0gaXAtbWliLz0vKgogIGlwQWRkcmVzc1ByZWZpeFRhYmxlICAgICAgICAgTCAgICAgICAgIDUuMyAgICAgTSBpcC1taWIvPS8qCiAKICBpcFJvdXRlVGFibGUgKEQpICAgICAgICAgICAgIFUgJDIgICAgICB+My41ICAgIE8gbWliSUkvKnJvdXRlKi5jCiAgaXBOZXRUb01lZGlhVGFibGUgKEQpICAgICAgICBVICQyICAgICAgfjMuNSAgICBPIG1pYklJL2F0LmMKICBpcE5ldFRvUGh5c2ljYWxUYWJsZSAgICAgICAgIChpbXBsZW1lbnRlZCBhcyBpbmV0TmV0VG9NZWRpYVRhYmxlKQogIGluZXROZXRUb01lZGlhVGFibGUgICAgICAgICAgTCAgICAgICAgIDUuMiAgICAgTSBpcC1taWIvPS8qCi0gaXBEZWZhdWx0Um91dGVyVGFibGUgICAgICAgICAtLS0KKyBpcERlZmF1bHRSb3V0ZXJUYWJsZSAgICAgICAgIEwgICAgICAgICA1LjUgICAgIE0gaXAtbWliLz0vKgogCiAgaWNtcFN0YXRzVGFibGUgICAgICAgICAgICAgICAtLS0KICBpY21wTXNnU3RhdHNUYWJsZSAgICAgICAgICAgIC0tLQpAQCAtMTc5LDYgKzE4NCw5IEBACiAgaXB2NlJvdXRlckFkdmVydFNwaW5Mb2NrLjAgICAtLS0KICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAgICAgIC0tLQogCisgaXBGb3J3YXJkaW5nLjAgICAgICAgICAgICAgICBMICAgICAgICAgIDUuNCAgICBTIGlwLW1pYi9pcF9zY2FsYXJzLmMKKyBpcERlZmF1bHRUVEwuMCAgICAgICAgICAgICAgIEwgICAgICAgICAgNS40ICAgIFMgaXAtbWliL2lwX3NjYWxhcnMuYworCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIElQVjYtTUlCCiAgaXB2Nk1JQk9iamVjdHMuPy4wICAgICAgICAgICBVICAgICAgICAgNC4xICAgICBPIG1pYklJL2lwdjYuYwpAQCAtMjM2LDYgKzI0NCw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFJNT04tTUlCCiAgZXRoZXJTdGF0c1RhYmxlICAgICAgICAgICAgICBVICAgICAgICAgNS4wICAgICBPIFJtb24vc3RhdGlzdGljcy5jCisgLmV0aGVyU3RhdHNKYWJiZXJzICAgICAgICAgICBMMyAgICAgICAgNS41ICAgICBNIHJtb24tbWliLz0vKgogIGV0aGVySGlzdG9yeUNvbnRyb2xUYWJsZSAgICAgVSAgICAgICAgIDUuMCAgICAgTyBSbW9uL2hpc3RvcnkuYwogIGV0aGVySGlzdG9yeVRhYmxlICAgICAgICAgICAgVSAgICAgICAgIDUuMCAgICAgTyBSbW9uL2hpc3RvcnkuYwogIGFsYXJtVGFibGUgICAgICAgICAgICAgICAgICAgVSAgICAgICAgIDMuMiAgICAgTyBSbW9uL2FsYXJtLmMKQEAgLTMyMyw3ICszMzIsNyBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIEV0aGVyTGlrZS1NSUIKLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLQorIGRvdDNTdGF0c1RhYmxlICAgICAgICAgICAgICAgTCAgICAgICAgNS41ICAgICAgTSBldGhlcmxpa2UtbWliLz0KIAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiBBR0VOVFgtTUlCCkBAIC00MDgsMTYgKzQxNywxNiBAQAogCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIFNDVFAtTUlCCi0gc2N0cFN0YXRzICAgICAgICAgICAgICAgICAgICBMICAgICAgICAgNS40LjIgICBTIHNjdHAtbWliL3NjdHBTY2FsYXJzKgotIHNjdHBQYXJhbWV0ZXJzICAgICAgICAgICAgICAgTCAgICAgICAgIDUuNC4yICAgUyBzY3RwLW1pYi9zY3RwU2NhbGFycyoKLSBzY3RwQXNzb2NUYWJsZSAgICAgICAgICAgICAgIEwgICAgICAgICA1LjQuMiAgIEMgc2N0cC1taWIvPQotIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlICAgICAgTCAgICAgICAgIDUuNC4yICAgQyBzY3RwLW1pYi89Ci0gc2N0cEFzc29jUmVtQWRkclRhYmxlICAgICAgICBMICAgICAgICAgNS40LjIgICBDIHNjdHAtbWliLz0KLSBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUgICAgIEwgICAgICAgICA1LjQuMiAgIEMgc2N0cC1taWIvPQotIHNjdHBMb29rdXBSZW1Qb3J0VGFibGUgICAgICAgTCAgICAgICAgIDUuNC4yICAgQyBzY3RwLW1pYi89Ci0gc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUgICBMICAgICAgICAgNS40LjIgICBDIHNjdHAtbWliLz0KLSBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlIEwgICAgICAgICA1LjQuMiAgIEMgc2N0cC1taWIvPQotIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSAgICAgTCAgICAgICAgIDUuNC4yICAgQyBzY3RwLW1pYi89Cisgc2N0cFN0YXRzICAgICAgICAgICAgICAgICAgICBMICAgICAgICAgNS41ICAgICBTIHNjdHAtbWliL3NjdHBTY2FsYXJzKgorIHNjdHBQYXJhbWV0ZXJzICAgICAgICAgICAgICAgTCAgICAgICAgIDUuNSAgICAgUyBzY3RwLW1pYi9zY3RwU2NhbGFycyoKKyBzY3RwQXNzb2NUYWJsZSAgICAgICAgICAgICAgIEwgICAgICAgICA1LjUgICAgIEMgc2N0cC1taWIvPQorIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlICAgICAgTCAgICAgICAgIDUuNSAgICAgQyBzY3RwLW1pYi89Cisgc2N0cEFzc29jUmVtQWRkclRhYmxlICAgICAgICBMICAgICAgICAgNS41ICAgICBDIHNjdHAtbWliLz0KKyBzY3RwTG9va3VwTG9jYWxQb3J0VGFibGUgICAgIEwgICAgICAgICA1LjUgICAgIEMgc2N0cC1taWIvPQorIHNjdHBMb29rdXBSZW1Qb3J0VGFibGUgICAgICAgTCAgICAgICAgIDUuNSAgICAgQyBzY3RwLW1pYi89Cisgc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUgICBMICAgICAgICAgNS41ICAgICBDIHNjdHAtbWliLz0KKyBzY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlIEwgICAgICAgICA1LjUgICAgIEMgc2N0cC1taWIvPQorIHNjdHBMb29rdXBSZW1JUEFkZHJUYWJsZSAgICAgTCAgICAgICAgIDUuNSAgICAgQyBzY3RwLW1pYi89CiAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC00MjUsNiArNDM0LDcgQEAKIC0tLS0tLS0tLS0KICAxOiBhdmFpbGFibGUgZm9yIHN5c3RlbXMgdXNpbmcgS0FNRSBpcHY2CiAgMjogd2l0aCBwbGF0Zm9ybSBTREsuIFNlZSBSRUFETUUud2luMzIKKyAzOiB3b3JrcyBvbmx5IHdpdGggSW50ZWwgYW5kIEJyb2FkY29tIG5ldHdvcmsgY2FyZHMgYW5kIG11c3QgcnVuIGFzIHJvb3Qgb25seQogCiBPdGhlciBmZWF0dXJlIGluZm8KIC0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvUkVBRE1FLmFpeCBiL1JFQURNRS5haXgKaW5kZXggMTZmNzI1ZS4uZTI1ZTliNiAxMDA2NDQKLS0tIGEvUkVBRE1FLmFpeAorKysgYi9SRUFETUUuYWl4CkBAIC02LDcgKzYsNiBAQAogCiBUaGVyZSBhcmUgdGhlIGZvbGxvd2luZyBrbm93biBwcm9ibGVtcyBvbiBBSVg6CiAKLQogMSkgU2hhcmVkIGxpYnJhcmllcyAvIGVtYmVkZGVkIHBlcmwKIAogVXAgdG8gKGFuZCBpbmNsdWRpbmcpIG5ldC1zbm1wIDUuNCwgY29uZmlndXJlIGZvcmNlZCBhIHN0YXRpYyBidWlsZApAQCAtMTQsMTEgKzEzLDEwIEBACiAKIFN0YXJ0aW5nIHdpdGggbmV0LXNubXAgNS40LjEsIHdlIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMgYnkgZGVmYXVsdCBvbiBBSVgKIChsaWtlIG9uIGFueSBvdGhlciBwbGF0Zm9ybSkgdXNpbmcgcnVuLXRpbWUgbGlua2luZy4gY29uZmlndXJlIGZvcmNlcyB0aGUKLXVzZSBvZiB0aGUgcmVxdWlyZWQgIi1icnRsIiBsaW5rZXIgZmxhZy4gV2UgYWxzbyByZWNvbW1lbmQKK3VzZSBvZiB0aGUgcmVxdWlyZWQgIi1icnRsIiBsaW5rZXIgZmxhZy4KIAotICAgLi9jb25maWd1cmUgLS1lbmFibGUtYXMtbmVlZGVkIC4uLgotCi1mb3IgcHJvcGVyIGxpYnBlcmwgbGlua2luZy4KK1dpdGggbmV0LXNubXAgNS41IHRoZSBzaGFyZWQgbGlicmFyeSBidWlsZCBpcyBicm9rZW4gYWdhaW4gYnV0IHRoZSB0aGVyZSBpcworbm8gZm9yY2VkIHN0YXRpYyBidWlsZCAtIHVzZSAtLWRpc2FibGUtc2hhcmVkIHdoZW4gYnVpbGRpbmcuCiAKIDIpICJncmVwOiBjYXBhY2l0eSBleGNlZWRlZCIgb3IgInNlZDogQ29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIiBkdXJpbmcgY29uZmlndXJlCiAKZGlmZiAtLWdpdCBhL1JFQURNRS5pcml4IGIvUkVBRE1FLmlyaXgKaW5kZXggNzliZjdlYy4uYzc5NzdlOSAxMDA2NDQKLS0tIGEvUkVBRE1FLmlyaXgKKysrIGIvUkVBRE1FLmlyaXgKQEAgLTM0LDE3ICszNCw3IEBACiAgIGh0dHA6Ly9zZi5uZXQvc3VwcG9ydC90cmFja2VyLnBocD9haWQ9MTY3NTg2OQogCiAKLTMuIFBlcmwKLS0tLS0tLS0KLQotV2hlbiBjb21waWxpbmcgd2l0aCBQZXJsIHN1cHBvcnQsIGl0J3MgcmVjb21tZW5kZWQgdG8gc3BlY2lmeQotCi0gIC4vY29uZmlndXJlIC0tZW5hYmxlLWFzLW5lZWRlZAotCi1mb3IgcHJvcGVyIGxpYnBlcmwgbGlua2luZy4KLQotCi00LiBLbm93biBJc3N1ZXMKKzMuIEtub3duIElzc3VlcwogLS0tLS0tLS0tLS0tLS0tCiAKIEFjY2Vzc2luZyBjZXJ0YWluIE1JQiBvYmplY3RzIG9uIElSSVg2NCBtYWNoaW5lcyAoaS5lLiB3aGVuIHJ1bm5pbmcgYSA2NC1iaXQgCkBAIC01Niw3ICs0Niw3IEBACiAgICAuL2NvbmZpZ3VyZSAtLXdpdGhvdXQta21lbS11c2FnZSAuLi4KIAogCi01LiBGZWVkYmFjaworMy4gRmVlZGJhY2sKIC0tLS0tLS0tLS0tCiAKIFBsZWFzZSBhbHNvIHNlZSBSRUFETUUgYW5kIFBPUlRJTkcuCmRpZmYgLS1naXQgYS9SRUFETUUub3NYIGIvUkVBRE1FLm9zWAppbmRleCBiMTVhZmE3Li40OWI1OGU3IDEwMDY0NAotLS0gYS9SRUFETUUub3NYCisrKyBiL1JFQURNRS5vc1gKQEAgLTcsMTAgKzcsNiBAQAogCiAgIC0gQUxMCiAKLSAgICAtIFRlc3QgNDQgKFBlcmwgQWdlbnRYIFN1YmFnZW50KSBmYWlscy4KLQotICAgICAgIC0gY29uZmlndXJlIHdpdGggLS1lbmFibGUtYXMtbmVlZGVkIGZvciBwcm9wZXIgbGlicGVybCBsaW5raW5nCi0KICAgICAtIG5saXN0IGRvZXNuJ3Qgc3VwcG9ydCBpY21wc3RhdAogCiAgICAgICAgLSBkaXNhYmxlIHRoZSBpY21wIG1vZHVsZSBkdXJpbmcgY29uZmlndXJlIGJ5IHNwZWNpZnlpbmcKQEAgLTE5LDcgKzE1LDcgQEAKIAogCiAgIC0gMTAuNC43IChVbml2ZXJzYWwpIGFuZCBMZW9wYXJkIHdpdGggNS40IHNvdXJjZXM6Ci0gICAgICAgIFtTdXBwbGllZCBieSBDaHJpcyBKYWxiZXJ0LCBzbGlnaHRseSB1cGRhdGVkXQorICAgICAgICBbU3VwcGxpZWQgYnkgQ2hyaXMgSmFsYmVydF0KIAogICAgICAgIC0gYnVpbGQgdXNpbmcgZ2NjIDQuMCAoc2VlIGJlbG93KSBhbmQgY29uZmlndXJlIHVzaW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PS92YXIvZGIvbmV0LXNubXAgXApAQCAtMjcsNyArMjMsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXJwbSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtbWliLW1vZHVsZXM9Imhvc3QgdWNkLXNubXAvZGlza2lvIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzPSJtaWJJSS9pY21wIGhvc3QvaHJfc3dydW4iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWFzLW5lZWRlZCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQta21lbS11c2FnZQogCiAgICAgICAgVGhlIGZpcnN0IGxpbmUgc2V0cyB1cCBwZXJzaXN0ZW50IHN0b3JhZ2UgaW4gdGhlIE9TIFggc3RhbmRhcmQgbG9jYXRpb24uCkBAIC02NCwyMCArNTksMyBAQAogICAgICAgICAgICAgICAgICAgIC0tcHJlZml4PS91c3IgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PS92YXIvZGIvdWNkLXNubXAKICAgICAgICAgICAgICAgICAgICAtLXdpdGgtbWliLW1vZHVsZXM9aG9zdAogCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVdpdGggTWFjIE9TIFggMTAuNS4yLCBhbmQgTmV0LVNOTVAgNS40LjIsIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KLXNlZW1zIHRvIGJ1aWxkIGFuZCBydW4gc3VjY2Vzc2Z1bGx5LiAgIFRoZSBtYWluIHR3ZWFrIG5lZWRlZCB0byBnZXQKLXRoaW5ncyB3b3JraW5nIHdhcyB0byBkaXNhYmxlICJlbWJlZGRlZCBwZXJsIiAod2hpY2ggaXMgYWN0aXZlIGJ5Ci1kZWZhdWx0IGluIDUuNCBhbmQgYWJvdmUpLgotCi0gIFRoZSBpc3N1ZSBoZXJlIGlzIHRoYXQgZW5hYmxpbmcgZW1iZWRkZWQgcGVybCB3aWxsIHRyeSB0byB1c2UgdGhlCi1zYW1lIENGTEFHUyB1c2VkIGZvciBjb21waWxpbmcgcGVybCwgd2hlbiBjb21waWxpbmcgdGhlIE5ldC1TTk1QIGNvZGUKLSh3aGljaCBpcyBwcm9iYWJseSByZWFzb25hYmxlKS4gIFVuZm9ydHVuYXRlbHksIHRoZSBkZWZhdWx0IHBlcmwgYmluYXJ5Ci10aGF0IGNvbWVzIHdpdGggTWFjIE9TL1ggMTAuNSAoYXQgbGVhc3QpIGlzIGEgInVuaXZlcnNhbCBiaW5hcnkiLAotc28gdGhlIENGTEFHUyB0aGF0IGl0IHVzZXMgaW5jbHVkZSAiLWFyY2ggaTM4NiAtYXJjaCBwcGMiLiAgVGhpcwotZHVhbC1hcmNoaXRlY3R1cmUgb3B0aW9uIGNvbmZ1c2VzIHRoZSBjb25maWd1cmUgc2NyaXB0LCBhbmQgbWVhbnMKLXRoYXQgaXQgY2Fubm90IGRldGVjdCB0aGUgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBob3N0IHN5c3RlbSBjb3JyZWN0bHkuCi0KLURhdmUKLUp1bmUgMjAwOApkaWZmIC0tZ2l0IGEvUkVBRE1FLnNvbGFyaXMgYi9SRUFETUUuc29sYXJpcwppbmRleCBhZWJjZTZmLi42MjVhYWUyIDEwMDY0NAotLS0gYS9SRUFETUUuc29sYXJpcworKysgYi9SRUFETUUuc29sYXJpcwpAQCAtOTk0LDEwICs5OTQsOCBAQAogCiAgICAuL2NvbmZpZ3VyZSAtZW5hYmxlLWVtYmVkZGVkLXBlcmwgLi4uCiAKLUl0J3MgcmVjb21tZW5kZWQgdG8gYWRkIC0tZW5hYmxlLWFzLW5lZWRlZCBmb3IgcHJvcGVyIGxpYnBlcmwgbGlua2luZy4KLQotRW5hYmxpbmcgUGVybCBzdXBwb3J0IHNob3VsZCBvbmx5IGJlIGRvbmUgaWYgeW91IGFyZSBzdXJlIHlvdSByZWFsbHkgCi1uZWVkIFBlcmwsIGZvciB0aGUgZm9sbG93aW5nIHJlYXNvbnM6CitUaGlzIHNob3VsZCBvbmx5IGJlIGRvbmUgaWYgeW91IGFyZSBzdXJlIHlvdSByZWFsbHkgbmVlZCBQZXJsLCAKK2ZvciB0aGUgZm9sbG93aW5nIHJlYXNvbnM6CiAKIFNvbGFyaXMgOCBhbmQgbGF0ZXIgc2hpcCB3aXRoIGEgdmVyc2lvbiBvZiBQZXJsIGNvbXBpbGVkIHVzaW5nIFN1bidzIGNjLiAKIApkaWZmIC0tZ2l0IGEvUkVBRE1FLnNxbCBiL1JFQURNRS5zcWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTJmNzAzOAotLS0gL2Rldi9udWxsCisrKyBiL1JFQURNRS5zcWwKQEAgLTAsMCArMSwyOSBAQAorc25tcHRyYXBkIE15U1FMIExvZ2dpbmcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0EgdHJhcCBoYW5kbGVyIGZvciBsb2dnaW5nIHRyYXBzIHRvIGEgTXlTUUwgZGF0YWJhc2Ugd2FzIGFkZGVkCitpbiByZWxlYXNlIDUuNS4wLgorCitUaGUgTXlTUUwgZGF0YWJhc2UgbG9jYXRpb24gYW5kIHBhc3N3b3JkIG11c3QgYmUgY29uZmlndXJlZCBpbgorL3Jvb3QvLm15LmNuZjoKKworCVtzbm1wdHJhcGRdCisJaG9zdD1sb2NhbGhvc3QKKwlwYXNzd29yZD1zcWwKKworVXNlciBtYXkgYWxzbyBiZSBjb25maWd1cmVkLCBpZiB1c2luZyBhIE15U1FMIHVzZXIgYmVzaWRlcyByb290LgorCitzbm1wdHJhcGQuY29uZiBtdXN0IGJlIGNvbmZpZ3VyZWQgdG8gZm9yIHRoZSBxdWV1ZSBzaXplIGFuZAorcGVyaW9kaWMgZmx1c2ggaW50ZXJ2YWw6CisKKwkjIG1heGltdW0gbnVtYmVyIG9mIHRyYXBzIHRvIHF1ZXVlIGJlZm9yZSBmb3JjZWQgZmx1c2gKKwlzcWxNYXhRdWV1ZSAxNDAKKworCSMgc2Vjb25kcyBiZXR3ZWVuIHBlcmlvZGljIHF1ZXVlIGZsdXNoZXMKKwlzcWxTYXZlSW50ZXJ2YWwgOQorCitBIHZhbHVlIG9mIDAgZm9yIHNxbFNhdmVJbnRlcnZhbCB3aWxsIGNvbXBsZXRlbHkgZGlzYWJsZSBNeVNRTAorbG9nZ2luZyBvZiB0cmFwcy4KKworVGhlIHNjaGVtYSBtdXN0IGJlIGxvYWRlZCBpbnRvIE15U1FMIGJlZm9yZSBydW5uaW5nIHNubXB0cmFwZC4KK1RoZSBzY2hlbWEgY2FuIGJlIGZvdW5kIGluIGRpc3Qvc2NoZW1hLXNubXB0cmFwZC5zcWwKZGlmZiAtLWdpdCBhL1JFQURNRS53aW4zMiBiL1JFQURNRS53aW4zMgppbmRleCBkOTQyYjhhLi5lOTU0YWVhIDEwMDY0NAotLS0gYS9SRUFETUUud2luMzIKKysrIGIvUkVBRE1FLndpbjMyCkBAIC00NiwxNSArNDYsMTMgQEAKIEFsbCBhcHBsaWNhdGlvbnMgYnVpbGQgd2l0aCBNaWNyb3NvZnQgVmlzdWFsIEMrKyA2LjAsIE1pY3Jvc29mdCBEZXZlbG9wbWVudAogRW52aXJvbm1lbnQgMjAwMyAoTVNWQyA3LjAvNy4xKSwgZ2NjIHVuZGVyIEN5Z3dpbiwgYW5kIGdjYyB1bmRlciBNaW5HVy4gIAogCi0gIC0gIEFsbCBvZiB0aGUgYXBwbGljYXRpb25zIHdvcmsKLSAgICAgKHNubXB3YWxrLCBzbm1wZ2V0LCBzbm1wc2V0LCBzbm1wdHJhcCwgZXRjLi4uKS4KLSAgLSAgVGhlIHN5c3RlbSwgc25tcCwgaXAsIHRjcCwgdWRwLCBpY21wIG1pYmdyb3VwcyBmdW5jdGlvbgotICAgICAgICAgKHdoZW4gYWdlbnQgaXMgYnVpbHQgdXNpbmcgdGhlIHNubXBkc2RrIHByb2plY3QpLgorICAtICBBbGwgb2YgdGhlIGFwcGxpY2F0aW9ucyB3b3JrIChzbm1wd2Fsaywgc25tcGdldCwgc25tcHNldCwgc25tcHRyYXAsIC4uLikuCisgIC0gIFRoZSBzeXN0ZW0sIHNubXAsIGlwLCB0Y3AsIHVkcCBhbmQgaWNtcCBNSUItZ3JvdXBzIHdvcmsgKHJlcXVpcmVzIHRoZQorICAgICBQbGF0Zm9ybSBTREspLgogICAtICBUaGUgTmV0LVNOTVAgYWdlbnQgcnVucyBhcyBhbiBBZ2VudFggbWFzdGVyIGFnZW50IG9yIGFzIHN1YmFnZW50LgogICAtICBzbXV4IGlzIHdvcmtpbmcuCiAgIC0gIFRoZSB0YXJnZXQsIG5vdGlmaWNhdGlvbiwgZGlzbWFuL210ZSBncm91cHMgY29tcGlsZSBidXQgYXJlIG5vdCB0ZXN0ZWQuCiAgIC0gIFRoZSBUQ1AvSVB2NiBhbmQgVURQL0lQdjYgdHJhbnNwb3J0cyBjb21waWxlIGJ1dCBhcmUgbm90IHRlc3RlZC4KLSAgICAgICAgIAogICAtICBFeHRlbmRpbmcgdGhlIGFnZW50IHRvIHN1cHBvcnQgZW50ZXJwcmlzZS1zcGVjaWZpYyBNSUJzIHdvcmtzLgogICAtICBSdW5uaW5nIHRoZSBhZ2VudCBvbiBhIG5vbi1zdGFuZGFyZCBVRFAgb3IgVENQIHBvcnQgd29ya3MuCiAgIC0gIFNubXBkIGNhbiBiZSByZWdpc3RlcmVkIGFzIGEgV2luZG93cyBOVC8yMDAwL1hQIHNlcnZpY2UuCkBAIC03OCw4ICs3Niw4IEBACiAgIC0gIEFsbCBEZWJ1ZyBhbmQgUmVsZWFzZSB0YXJnZXRzIGxpbmtlZCB3aXRoIGxpYnNubXAgcHJvamVjdCB0YXJnZXRzCiAgICAgIGJ1aWxkIHdpdGhvdXQgZXJyb3JzLCBhbmQgYXJlIGZ1bGx5IGZ1bmN0aW9uYWwuCiAKLSAgLSAgQm90aCB0aGUgV29ya3NwYWNlIGdyYXBoaWNhbCBlbnZpcm9ubWVudCBhbmQgY29tbWFuZCBsaW5lIG5tYWtlIGlzIAotICAgICBzdXBwb3J0ZWQgZm9yIGJ1aWxkaW5nIHVuZGVyIE1TVkMuCisgIC0gIEJvdGggYnVpbGRpbmcgdmlhIHRoZSBpbnRlcmFjdGl2ZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBhbmQgdmlhIHRoZQorICAgICBjb21tYW5kIGxpbmUgKG5tYWtlKSBpcyBzdXBwb3J0ZWQuCiAKIAogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCkBAIC00MDUsMzMgKzQwMywyMiBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLUlmIHlvdSBhcmUgY29tcGlsaW5nIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQysrIDYuMCwgaXQgaXMgcmVjb21tZW5kZWQgdGhhdAoteW91IGluc3RhbGwgdGhlIENvcmUgUGxhdGZvcm0gU0RLIChQU0RLKS4gIFdpdGhvdXQgdGhlIFBTREssIHNvbWUgZnVuY3Rpb25hbGl0eQotd2lsbCBiZSBkaXNhYmxlZCBzdWNoIGFzIHRoZSBjb3JlIGVsZW1lbnRzIG9mIHRoZSBtaWJJSSBncm91cCBvZiB0aGUgYWdlbnQgCi13aGljaCB1c2UgdGhlICJJUCBIZWxwZXIgQVBJIiAoSVBITFBBUEkpLgorSWYgeW91IGFyZSB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA2LjAsIHlvdSB3aWxsIGhhdmUgdG8gaW5zdGFsbCB0aGUKK1BsYXRmb3JtIFNESyAoUFNESykgZmlyc3QuCiAKLVRvIGRldGVybWluZSB3aGF0IGNvZGUgaXMgZGlzYWJsZWQgd2hlbiB0aGUgUFNESyBpcyBub3QgdXNlZCwgc2VhcmNoIHRoZQotc291cmNlIGNvZGUgZm9yIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLLgorVGhlIFdpbmRvd3MgU2VydmVyIDIwMDMgUGxhdGZvcm0gU0RLIGNhbiBiZSBkb3dubG9hZGVkIHZpYSB0aGUgZm9sbG93aW5nIFVSTAorKHRoaXMgaXMgdGhlIG1vc3QgcmVjZW50IHZlcnNpb24gb2YgdGhlIFBTREsgdGhhdCBpcyBzdGlsbCBjb21wYXRpYmxlIHdpdGgKK01TVkMgNi4wKTogaHR0cDovL3d3dy5taWNyb3NvZnQuY29tL2Rvd25sb2Fkcy9kZXRhaWxzLmFzcHg/RmFtaWx5SWQ9QTU1QjZCNDMtRTI0Ri00RUEzLUE5M0UtNDBDMEVDNEY2OEU1JmRpc3BsYXlsYW5nPWVuCiAKLVRoZSBQU0RLIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gdGhlIE1TRE4gc2l0ZS4gIEdvIHRvIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20gCi1hbmQgZG8gYSBzZWFyY2ggZm9yICdwc2RrIGRvd25sb2FkJyAod2l0aG91dCB0aGUgcXVvdGVzKS4gIFlvdSBzaG91bGQgZmluZCBib3RoCi1hIHdlYiBpbnN0YWxsIGFuZCBhIGZ1bGwgaW5zdGFsbC4gIAorT25jZSB0aGUgUFNESyBoYXMgYmVlbiBpbnN0YWxsZWQsIHNlbGVjdCB0aGUgZm9sbG93aW5nIGFjdGlvbiBmcm9tIHRoZSBTdGFydAorTWVudTogUHJvZ3JhbXMgLyBNaWNyb3NvZnQgV2luZG93cyBTREsgLyBWaXN1YWwgU3R1ZGlvIFJlZ2lzdHJhdGlvbiAvIFdpbmRvd3MKK1NESyBDb25maWd1cmF0aW9uIFRvb2wuCiAKLVdoZW4gaW5zdGFsbGluZyB0aGUgU0RLLCBhbGwgdGhhdCBpcyByZXF1aXJlZCBpcyB0aGUgJ0NvcmUnLgotCi1PbmNlIHRoaXMgcGFja2FnZSBoYXMgaW5zdGFsbGVkLCBmcm9tIHRoZSBTdGFydCBNZW51IHJ1biAKLSAgIlByb2dyYW1zIC0+TWljcm9zb2Z0IFBsYXRmb3JtIFNESy4uLiAtPiAKLSAgIFZpc3VhbCBTdHVkaW8gUmVnaXN0cmF0aW9uIC0+Ci0gICBSZWdpc3RlciBQU0RLIERpcmVjdG9yaWVzIHdpdGggVmlzdWFsIFN0dWRpbyIKLQotSWYgeW91IGFyZSBjb21waWxpbmcgdXNpbmcgYW55IG9mIHRoZSBmb2xsb3dpbmcgc3lzdGVtcywgdGhlIFBTREsgZG93bmxvYWQKLWlzIG5vdCBuZWNlc3NhcnksIGFzIHRoZSByZXF1aXJlZCBwYXJ0cyBvZiB0aGUgUFNESyBhcmUgaW5jbHVkZWQgd2l0aCB0aGUgCi1pbnN0YWxsYXRpb24gb2YgdGhlIGNvbXBpbGVyOgotCi0gICAgLSBNaWNyb3NvZnQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgMjAwMiAoTVNWQyA3LjApCi0gICAgLSBNaWNyb3NvZnQgRGV2ZWxvcG1lbnQgRW52aXJvbm1lbnQgMjAwMyAoTVNWQyA3LjEpCi0gICAgLSBDeWd3aW4gKGdjYykKLSAgICAtIE1pbkdXIChnY2MpCitJZiB5b3UgYXJlIHVzaW5nIGFueSBvZiB0aGUgZm9sbG93aW5nIGVudmlyb25tZW50cywgdGhlIFBTREsgZG93bmxvYWQgaXMgbm90CituZWNlc3NhcnkgYXMgdGhlIHJlcXVpcmVkIHBhcnRzIG9mIHRoZSBQU0RLIGFyZSBpbmNsdWRlZDoKKyAgICAtIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIDIwMDIgb3IgbGF0ZXIuCisgICAgLSBDeWd3aW4uCisgICAgLSBNaW5HVy4KIAogSW4gb3JkZXIgZm9yIHRoZSBwcm9jZXNzIHBhcnQgb2YgdGhlIGhvc3QgcmVzb3VyY2VzIE1JQiB0byB3b3JrIHVuZGVyIFdpbmRvd3MKIE5UIHlvdSB3aWxsIG5lZWQgdG8gb2J0YWluIFBTQVBJLkRMTC4gVGhpcyBpcyBhdmFpbGFibGUgdW5kZXIgdGhlIGRvd25sb2FkIApAQCAtNDUxLDEyICs0MzgsMTMgQEAKIAogVGhlcmUgYXJlIHR3byB3YXlzIHRvIGJ1aWxkIE5ldC1TTk1QIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgQysrLiAgVGhlIGZpcnN0CiBhbmQgZWFzaWVzdCBtZXRob2QgaXMgdXNpbmcgQ29uZmlndXJlIGFuZCBubWFrZSBvbiB0aGUgY29tbWFuZCBsaW5lLCBhbmQgdGhlIAotc2Vjb25kIGlzIHVzaW5nIHRoZSBXb3Jrc3BhY2UgZmlsZXMgd2l0aCB0aGUgZ3JhcGhpY2FsIGludGVyZmFjZS4KK3NlY29uZCBpcyB1c2luZyB0aGUgV29ya3NwYWNlIGZpbGVzIGluc2lkZSB0aGUgaW50ZXJhY3RpdmUgZGV2ZWxvcG1lbnQKK2Vudmlyb25tZW50LgogCiBUbyB1c2Ugbm1ha2Ugb24gdGhlIGNvbW1hbmQgbGluZSwgdGhlIENvbmZpZ3VyZSBzY3JpcHQgaXMgcnVuIGZpcnN0IHRvIGNyZWF0ZQotdGhlIHZhcmlvdXMgbWFrZSBmaWxlcy4gIE9uY2UgdGhleSBhcmUgY3JlYXRlZCwgbm1ha2UgaXMgdXNlZCB0byBidWlsZCB0aGUgCi1hcHBsaWNhdGlvbnMuICBQZXJsIGlzIHJlcXVpcmVkIHRvIHVzZSB0aGlzIG1ldGhvZCwgYXMgdGhlIENvbmZpZ3VyZSBzY3JpcHQKLWlzIHdyaXR0ZW4gaW4gUGVybC4gIEFjdGl2ZVN0YXRlIEFjdGl2ZVBlcmwgaXMgYXZhaWxhYmxlIGF0OgordGhlIHZhcmlvdXMgbWFrZWZpbGVzLiAgT25jZSB0aGVzZSBoYXZlIGJlZW4gY3JlYXRlZCwgbm1ha2UgaXMgdXNlZCB0byBidWlsZAordGhlIGFwcGxpY2F0aW9ucy4gIFBlcmwgaXMgcmVxdWlyZWQgdG8gdXNlIHRoaXMgbWV0aG9kLCBhcyB0aGUgQ29uZmlndXJlCitzY3JpcHQgaXMgd3JpdHRlbiBpbiBQZXJsLiAgQWN0aXZlU3RhdGUgQWN0aXZlUGVybCBpcyBhdmFpbGFibGUgYXQ6CiAKICAgICAgICAgaHR0cDovL3d3dy5hY3RpdmVzdGF0ZS5jb20vUHJvZHVjdHMvQWN0aXZlUGVybC8KIApAQCAtNDY1LDM1ICs0NTMsMjYgQEAKIHJlY29tbWVuZGVkIHRoYXQgeW91IHJlYWQgYW5kIHVuZGVyc3RhbmQgaG93IHRoZSB3b3Jrc3BhY2VzIGFyZSBjb25maWd1cmVkCiBldmVuIGlmIHlvdSB3aWxsIG9ubHkgYmUgdXNpbmcgdGhlIGNvbW1hbmQgbGluZSBDb25maWd1cmUgLyBubWFrZSBzeXN0ZW0uCiAKLUZvciB0aGUgZ3JhcGhpY2FsIGludGVyZmFjZSwgdGhlcmUgYXJlIHR3byBtYWluIFdpbjMyIHdvcmtzcGFjZXMgCi0oJ3dpbjMyLmRzdycgYW5kICd3aW4zMnNkay5kc3cnKSwgY29udGFpbmluZyBtb3JlIG9yIGxlc3MgdGhlIHNhbWUgc2V0IAotb2YgcHJvamVjdHMsIHBsdXMgJ2xpYmRsbC5kc3cnIHdoaWNoIGNvbnRhaW5zIGEgbWluaW1hbCBzZXQgb2YgcHJvamVjdHMgCi1mb3IgdXNlIHdpdGggdGhlIFBlcmwgbW9kdWxlIG9ubHkuICAKLQotV2luMzIuZHN3IGlzIGZvciBkZXZlbG9wZXJzIHdobyBoYXZlIG5vdCBpbnN0YWxsZWQgdGhlIFBsYXRmb3JtIFNESyBmcm9tIAotTWljcm9zb2Z0J3MgTVNETiBTREsgVXBkYXRlIHNpdGUgd2hlbiB1c2luZyBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyA2LjAuCi1XaW4zMnNkay5kc3cgaXMgZm9yIHRob3NlIHdobyBoYXZlIG9yIHdobyBhcmUgdXNpbmcgdGhlIE1pY3Jvc29mdCBEZXZlbG9wbWVudCAKLUVudmlyb25tZW50IDIwMDIvMjAwMyAoTVNWQyA3LjAvNy4xKSwgQ3lnd2luIChnY2MpIG9yIE1pbkdXIChnY2MpLgotCi1MaWJkbGwuZHN3IGNvbXBpbGVzIGEgRExMIHZlcnNpb24gb2Ygc25tcGxpYiAobmV0c25tcC5kbGwpLgorRm9yIGJ1aWxkaW5nIHZpYSB0aGUgaW50ZXJhY3RpdmUgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIHRoZXJlIGFyZSB0aGUgV2luMzIKK3dvcmtzcGFjZXMgd2luMzIuZHN3IGFuZCBsaWJkbGwuZHN3LiBUaGUgbGFzdCB3b3Jrc3BhY2UgYWxsb3dzIHRvIGJ1aWxkIGEgRExMCit2ZXJzaW9uIG9mIHNubXBsaWIgKG5ldHNubXAuZGxsKS4KIAogVGhlcmUgaXMgb25lIGNvcmUgZGV2ZWxvcG1lbnQgbGlicmFyeSAoJ2xpYnNubXAnKSwgdG9nZXRoZXIgd2l0aCBhIG51bWJlciAKIG9mIHV0aWxpdHkgcHJvamVjdHMgZm9yIHRoZSBpbmRpdmlkdWFsIGV4ZWN1dGFibGUgY29tbWFuZHMgKCdzbm1wZ2V0JywgCiAnc25tcHdhbGsnLCBldGMuLi4pLiAgQWxsIG9mIHRoZXNlIHByb2plY3RzIHJlcXVpcmUgdGhlIC5saWIgY3JlYXRlZCBieSAKIHRoZSBsaWJzbm1wIHByb2plY3QuCiAKLVRoZSBhZ2VudCByZXF1aXJlcyB0aGUgY29yZSBsaWJyYXJ5IHBsdXMgdGhlIG90aGVyIHRocmVlIGxpYnJhcnkgcHJvamVjdHMgCi0oJ2xpYmFnZW50JywgbGliaGVscGVycycgYW5kIGVpdGhlciAnbmV0c25tcG1pYnMnIG9yICduZXRzbm1wbWlic3NkaycgCi1kZXBlbmRpbmcgb24gd2hpY2ggd29ya3NwYWNlIGlzIGJlaW5nIHVzZWQpIHRvZ2V0aGVyIHdpdGggdGhlIG1haW4gYWdlbnQgCi1wcm9qZWN0IChlaXRoZXIgJ3NubXBkJyBvciAnc25tcGRzZGsnKS4KK1RoZSBhZ2VudCByZXF1aXJlcyB0aGUgY29yZSBsaWJyYXJ5IHBsdXMgdGhlIG90aGVyIHRocmVlIGxpYnJhcnkgcHJvamVjdHMKKygnbGliYWdlbnQnLCBsaWJoZWxwZXJzJyBhbmQgJ25ldHNubXBtaWJzJykgdG9nZXRoZXIgd2l0aCB0aGUgbWFpbiBhZ2VudAorcHJvamVjdCAoJ3NubXBkJykuCiAKIFRoZSBmaW5hbCBhcHBsaWNhdGlvbiBwcm9qZWN0IGlzIHRoZSB0cmFwIGhhbmRsZXIgJ3NubXB0cmFwZCcuICBUaGlzIGFsc28KIHJlcXVpcmVzIHRoZSBhZ2VudCBsaWJyYXJpZXMgKCdsaWJhZ2VudCcsICdsaWJoZWxwZXJzJyBhbmQgJ25ldHNubXBtaWJzJykKIGFzIHdlbGwgYXMgdGhlIGNvcmUgZGV2ZWxvcG1lbnQgbGlicmFyeS4KIAotVGhlcmUgaXMgYSBEZWJ1ZyB2ZXJzaW9uIGFuZCBSZWxlYXNlIHZlcnNpb24gZm9yIGVhY2ggc3VicHJvamVjdC4KLVRoaXMgaXMgc28gdGhlIERlYnVnIGFuZCBSZWxlYXNlIHZlcnNpb25zIG9mIGFuIGFwcGxpY2F0aW9uIGNhbiBiZSBidWlsdCBhbmQgCi10ZXN0ZWQgc2VwYXJhdGVseS4KK1RoZXJlIGlzIGEgRGVidWcgdmVyc2lvbiBhbmQgUmVsZWFzZSB2ZXJzaW9uIGZvciBlYWNoIHN1YnByb2plY3QuICBUaGlzIGlzIHNvCit0aGUgRGVidWcgYW5kIFJlbGVhc2UgdmVyc2lvbnMgb2YgYW4gYXBwbGljYXRpb24gY2FuIGJlIGJ1aWx0IGFuZCB0ZXN0ZWQKK3NlcGFyYXRlbHkuCiAKIEJvdGggVkMrKyA2LjAgYW5kIDcuMSBoYXZlIGJlZW4gdGVzdGVkLiAgQnVpbGRpbmcgd2l0aCBlYXJsaWVyIE1pY3Jvc29mdAogY29tcGlsZXIgdmVyc2lvbnMgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KQEAgLTUwOCw5ICs0ODcsOSBAQAogCiBTaW5jZSB0aGUgTVNWQyBidWlsZCBlbnZpcm9ubWVudCBkb2VzIG5vdCBuYXRpdmVseSB1c2UgImNvbmZpZ3VyZSIgbm9yICJtYWtlIgogdG8gZ2VuZXJhdGUgdGhlIHZhcmlvdXMgcGF0aG5hbWVzIHRoYXQgdGhlIHByb2dyYW1zIHJlcXVpcmUsIHRoZSBoZWFkZXIgZmlsZXMgCi1uZWVkIHRvIGJlIG1hbnVhbGx5IG1vZGlmaWVkIHdoZW4gdXNpbmcgdGhlIGdyYXBoaWNhbCBidWlsZCBzeXN0ZW0sIGFuZCBhbiAKLWluc3RhbGwgc2NyaXB0IGlzIHByb3ZpZGVkLiAgV2hlbiB1c2luZyB0aGUgUGVybCBDb25maWd1cmUgLyBubWFrZSBzeXN0ZW0sIAotdGhlIGhlYWRlciBmaWxlcyBhcmUgYXV0b21hdGljYWxseSBtb2RpZmllZCBhbmQgcmVxdWlyZSBubyBtYW51YWwgZWRpdGluZy4KK25lZWQgdG8gYmUgbWFudWFsbHkgbW9kaWZpZWQgd2hlbiB1c2luZyB0aGUgSURFLCBhbmQgYW4gaW5zdGFsbCBzY3JpcHQgaXMKK3Byb3ZpZGVkLiAgV2hlbiB1c2luZyB0aGUgUGVybCBDb25maWd1cmUgLyBubWFrZSBzeXN0ZW0sIHRoZSBoZWFkZXIgZmlsZXMgYXJlCithdXRvbWF0aWNhbGx5IG1vZGlmaWVkIGFuZCByZXF1aXJlIG5vIG1hbnVhbCBlZGl0aW5nLgogCiBUaGUgcHJvamVjdHMgYXJlIGFycmFuZ2VkIHNvIHRoYXQgQUxMIG9mIHRoZSB1c2FibGUgcHJvZHVjdHMsIHRoZSAuZXhlIGZpbGVzLAogYXJlIHdyaXR0ZW4gdG8gdGhlIHdpbjMyXGJpbiBkaXJlY3RvcnkuICBUaGUgd2luMzJcbGliIGRpcmVjdG9yeSBpcyB1c2VkIG9ubHkgCkBAIC03MTUsMTkgKzY5NCwyMCBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLVRoZSB3aW4zMnNkay5kc3cgd29ya3NwYWNlIHdpbGwgYnVpbGQgdGhlIGFnZW50IHRoYXQgcHJvdmlkZXMgbWliLUlJIG9iamVjdHMKLWZvciBuZXR3b3JrIGludGVyZmFjZSBsYXllcnMsIGFuZCB0aGUgSVAsIElDTVAsIFRDUCBhbmQgVURQIHRhYmxlcy4gIFRoaXMKLXdvcmtzcGFjZSByZXF1aXJlcyB0aGUgUGxhdGZvcm0gU0RLIHRvIGJlIGluc3RhbGxlZC4gIFVzZSB0aGUgd2luMzIuZHN3IAotd29ya3NwYWNlIGlmIHlvdSBkb24ndCBoYXZlIG9yIGRvbid0IG5lZWQgdGhlc2UgZmVhdHVyZXMuICBOb3RlOiAgT3RoZXIgCi1mZWF0dXJlcyBtYXkgYmUgZGlzYWJsZWQgaWYgdGhlIFBsYXRmb3JtIFNESyBpcyBub3QgdXNlZC4gIFNlZSB0aGUgc2VjdGlvbgotJ0luc3RhbGxpbmcgUGxhdGZvcm0gU0RLJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KK1RoZSB3aW4zMi5kc3cgd29ya3NwYWNlIGFsbG93cyB0byBidWlsZCB0aGUgYWdlbnQgdGhhdCBwcm92aWRlcyBtaWItSUkgb2JqZWN0cworZm9yIG5ldHdvcmsgaW50ZXJmYWNlIGxheWVycywgYW5kIHRoZSBJUCwgSUNNUCwgVENQIGFuZCBVRFAgdGFibGVzLiBQcm9jZWVkIGFzCitmb2xsb3dzOgogCi0xLiBJZiBTTk1QdjMgZW5jcnlwdGlvbiBjYXBhYmlsaXRpZXMgb3IgU0hBIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLAorMS4gVXBkYXRlIHRoZSB2ZXJzaW9uIHN0YW1wIGluIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oLiAgVGhlIGN1cnJlbnQKKyAgIHZlcnNpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBVbml4IGNvbmZpZ3VyZSBzY3JpcHQgKHRvcCBsZXZlbCBmb2xkZXIpIGJ5IAorICAgbG9va2luZyBmb3IgdGhlIFBBQ0tBR0VfVkVSU0lPTiB2YXJpYWJsZS4KKworMi4gSWYgU05NUHYzIGVuY3J5cHRpb24gY2FwYWJpbGl0aWVzIG9yIFNIQSBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZCwKICAgIGluc3RhbGwgdGhlIE9wZW5TU0wgRExMIGFuZCBsaWJyYXJ5IGZpbGUgYXMgZGVzY3JpYmVkIGluIHRoZSBzZWN0aW9uIAogICAgJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmcgd2l0aCBPcGVuU1NMIiBhbmQgdGhlbiBjb250aW51ZSB3aXRoIAogICAgc3RlcCAyLgogCi0yLiBUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gcGF0aCBpcyBjOlx1c3IuICBUaGlzIGZvbGRlciB3aWxsIGNvbnRhaW4gYWxsCiszLiBUaGUgZGVmYXVsdCBpbnN0YWxsYXRpb24gcGF0aCBpcyBjOlx1c3IuICBUaGlzIGZvbGRlciB3aWxsIGNvbnRhaW4gYWxsCiAgICB0aGUgYmluYXJpZXMsIE1JQiBmaWxlcywgY29uZmlndXJhdGlvbiBmaWxlcyBldGMuICBUbyBjaGFuZ2UgdGhlIGxvY2F0aW9uLAogICAgdGhlIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oIGZpbGUgbmVlZHMgdG8gYmUgbW9kaWZpZWQgYnkgY2hhbmdpbmcKICAgIHRoZSBJTlNUQUxMX0JBU0UgdmFyaWFibGUuIApAQCAtNzM5LDE1ICs3MTksNiBAQAogCiAgICAgIEZvciBleGFtcGxlOiAjZGVmaW5lIElOU1RBTExfQkFTRSAiYzovdXNyIi4gIAogCi0zLiBJZiB5b3UgYXJlIHVzaW5nIHdpbjMyc2RrLCB0aGUgUGxhdGZvcm0gU0RLIG11c3QgYmUgZW5hYmxlZC4gIEVkaXQgdGhlIAotICAgdGhlIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oIGZpbGUgYW5kICpjaGFuZ2UqOgotCi0gICAgICAgIC8qICN1bmRlZiBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyAqLwotCi0gICB0bzoKLQotICAgICAgICAjZGVmaW5lIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIDEKLQogNC4gQnVpbGQgdGhlIGFwcGxpY2F0aW9ucwogCiAgICBTdGF0aWMgYnVpbGQgKGRvZXMgbm90IHVzZSBOZXRTTk1QLkRMTCkKQEAgLTc1NSw3ICs3MjYsNyBAQAogCiAgICBNUyBWQysrIDYuMDoKICAgIC0tLS0tLS0tLS0tLQotICAgYS4gT3BlbiB3aW4zMi5kc3cgb3Igd2luMzJzZGsuZHN3LgorICAgYS4gT3BlbiB3aW4zMi5kc3cuCiAgICBiLiBDbGljayAiQnVpbGQtPkJhdGNoIEJ1aWxkLi4uIiAgCiAgICBjLiBTZXQgUmVsZWFzZSBhbmQvb3IgRGVidWcgaW4gJ1Byb2plY3QgY29uZmlndXJhdGlvbnMnIHRvIHN1aXQuCiAgICBkLiBDbGljayAiUmVCdWlsZCBBbGwiLgpAQCAtNzY1LDcgKzczNiw3IEBACiAKICAgIE1TIFZDKysgNy4wKzoKICAgIC0tLS0tLS0tLS0tLS0KLSAgIGEuICBPcGVuIHdpbjMyLmRzdyBvciB3aW4zMnNkay5kc3cuCisgICBhLiAgT3BlbiB3aW4zMi5kc3cuCiAgICBiLiAgQ2xpY2sgIlllcyB0byBBbGwiIHRvIGNvbnZlcnQgdGhlIHdvcmtzcGFjZQogICAgYy4gIENsaWNrICJCdWlsZC0+Q29uZmlndXJhdGlvbiBNYW5hZ2VyIiBhbmQgc2VsZWN0IGVpdGhlciBSZWxlYXNlIG9yIERlYnVnIGZvciAKICAgICAgICAnQWN0aXZlIFNvbHV0aW9uIENvbmZpZ3VyYXRpb24nIGFuZCBjbGljayAiQ2xvc2UiCkBAIC03OTIsNyArNzYzLDcgQEAKIAogICAgTVMgVkMrKyA2LjA6CiAgICAtLS0tLS0tLS0tLS0KLSAgIGEuIE9wZW4gd2luMzIuZHN3IG9yIHdpbjMyc2RrLmRzdy4KKyAgIGEuIE9wZW4gd2luMzIuZHN3LgogICAgYi4gQ2xpY2sgIkJ1aWxkLT5CYXRjaCBCdWlsZC4uLiIgIAogICAgYy4gU2V0IFJlbGVhc2UgYW5kL29yIERlYnVnIGluICdQcm9qZWN0IGNvbmZpZ3VyYXRpb25zJyB0byBzdWl0IGZvciB0aGUgCiAgICAgICBhcHBsaWNhdGlvbnMuICBNYWtlIHN1cmUgdGhlIGZvbGxvd2luZyBhcmUgTk9UIHNlbGVjdGVkOgpAQCAtODEwLDcgKzc4MSw3IEBACiAKICAgIE1TIFZDKysgNy4wKzoKICAgIC0tLS0tLS0tLS0tLS0KLSAgIGEuIE9wZW4gd2luMzIuZHN3IG9yIHdpbjMyc2RrLmRzdy4KKyAgIGEuIE9wZW4gd2luMzIuZHN3LgogICAgYi4gQ2xpY2sgIlllcyB0byBBbGwiIHRvIGNvbnZlcnQgdGhlIHdvcmtzcGFjZQogICAgYy4gQ2xpY2sgIkJ1aWxkLT5Db25maWd1cmF0aW9uIE1hbmFnZXIiIGFuZCBzZWxlY3QgZWl0aGVyIFJlbGVhc2Ugb3IgRGVidWcgZm9yIAogICAgICAgJ0FjdGl2ZSBTb2x1dGlvbiBDb25maWd1cmF0aW9uJyBhbmQgY2xpY2sgIkNsb3NlIgpAQCAtODI5LDcgKzgwMCw3IEBACiAgICAgICBzYXZlIHRvIGEgdGV4dCBmaWxlIGlmIHRoZXJlIGlzIHNvbWUgaW5mb3JtYXRpb24gdG8gc2hhcmUuCiAgICBoLiBDbGljayAiRmlsZS0+Q2xvc2UgU29sdXRpb24iLgogICAKLTUuICBJZiB0aGUgUGVybCBtb2R1bGVzIGFyZSByZXF1aXJlZCwgY29udGludWUgd2l0aCB0aGUgbmV4dCBzZWN0aW9uOgorNi4gIElmIHRoZSBQZXJsIG1vZHVsZXMgYXJlIHJlcXVpcmVkLCBjb250aW51ZSB3aXRoIHRoZSBuZXh0IHNlY3Rpb246CiAgICAgJ01pY3Jvc29mdCBWaXN1YWwgQysrIC0gQnVpbGRpbmcgdGhlIFBlcmwgU05NUCBtb2R1bGVzJy4KIAogICAgIE90aGVyd2lzZSwgY29udGludWUgd2l0aCB0aGUgc2VjdGlvbjogCkBAIC04NDIsMTUgKzgxMywxOSBAQAogKgogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAKLTEuICBPcHRpb25hbDogTWFrZSBhIGJhY2t1cCBvZiB0aGUgZXhpc3RpbmcgbmV0LXNubXAtY29uZmlnLmggd2hpY2ggY29udGFpbnMgCisxLiAgVXBkYXRlIHRoZSB2ZXJzaW9uIHN0YW1wIGluIHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oLiAgVGhlIGN1cnJlbnQKKyAgICB2ZXJzaW9uIGNhbiBiZSBmb3VuZCBpbiB0aGUgVW5peCBjb25maWd1cmUgc2NyaXB0ICh0b3AgbGV2ZWwgZm9sZGVyKSBieSAKKyAgICBsb29raW5nIGZvciB0aGUgUEFDS0FHRV9WRVJTSU9OIHZhcmlhYmxlLgorCisyLiAgT3B0aW9uYWw6IE1ha2UgYSBiYWNrdXAgb2YgdGhlIGV4aXN0aW5nIG5ldC1zbm1wLWNvbmZpZy5oIHdoaWNoIGNvbnRhaW5zIAogICAgIHNldHRpbmdzIGZvciBhIHN0YXRpYyBidWlsZCBvZiBOZXQtU05NUDoKIAogICAgIENvcHkgd2luMzJcbmV0LXNubXBcbmV0LXNubXAtY29uZmlnLmggdG8gCiAgICAgd2luMzJcbmV0LXNubXBcc3RhdGljLWNvbmZpZy5oLgogCi0yLiAgT3BlbiB3aW4zMlxuZXQtc25tcFxuZXQtc25tcC1jb25maWcuaCB1c2luZyBhIHRleHQgZWRpdG9yLgorMy4gIE9wZW4gd2luMzJcbmV0LXNubXBcbmV0LXNubXAtY29uZmlnLmggdXNpbmcgYSB0ZXh0IGVkaXRvci4KIAotMy4gICpDaGFuZ2UqIHRoZSBmb2xsb3dpbmcgbGluZSB3aGljaCBpcyBsb2NhdGVkIG5lYXIgdGhlIHRvcCBvZiB0aGUgZmlsZToKKzQuICAqQ2hhbmdlKiB0aGUgZm9sbG93aW5nIGxpbmUgd2hpY2ggaXMgbG9jYXRlZCBuZWFyIHRoZSB0b3Agb2YgdGhlIGZpbGU6CiAKICAgICAgICAgLyogI3VuZGVmIE5FVFNOTVBfVVNFX0RMTCAqLwogCkBAIC04NTgsMTMgKzgzMywxMyBAQAogCiAgICAgICAgICNkZWZpbmUgTkVUU05NUF9VU0VfRExMIDEKIAotNC4gIE9wdGlvbmFsOiBNYWtlIGEgYmFja3VwIG9mIHRoZSBuZXcgbmV0LXNubXAtY29uZmlnLmggd2hpY2ggY29udGFpbnMgCis1LiAgT3B0aW9uYWw6IE1ha2UgYSBiYWNrdXAgb2YgdGhlIG5ldyBuZXQtc25tcC1jb25maWcuaCB3aGljaCBjb250YWlucyAKICAgICBzZXR0aW5ncyBmb3IgYSBETEwgYnVpbGQgb2YgTmV0LVNOTVA6CiAKICAgICBDb3B5IHdpbjMyXG5ldC1zbm1wXG5ldC1zbm1wLWNvbmZpZy5oIHRvIAogICAgIHdpbjMyXG5ldC1zbm1wXGRsbC1jb25maWcuaC4KIAotNS4gQnVpbGQgdGhlIERMTAorNi4gQnVpbGQgdGhlIERMTCBhbmQgdGhlIGFwcGxpY2F0aW9ucwogCiAgICBNUyBWQysrIDYuMDoKICAgIC0tLS0tLS0tLS0tLQpAQCAtODgwLDcgKzg1NSw3IEBACiAKICAgIE1TIFZDKysgNy4wKzoKICAgIC0tLS0tLS0tLS0tLS0KLSAgIGEuIE9wZW4gbGlic2RsbC5kc3cuCisgICBhLiBPcGVuIHdpbjMyZGxsLmRzdy4KICAgIGIuIENsaWNrICJZZXMgdG8gQWxsIiB0byBjb252ZXJ0IHRoZSB3b3Jrc3BhY2UKICAgIGMuIENsaWNrICJCdWlsZC0+QmF0Y2ggQnVpbGQuLi4iIAogICAgZC4gU2V0IFJlbGVhc2UgYW5kL29yIERlYnVnIGluICdQcm9qZWN0IGNvbmZpZ3VyYXRpb25zJyB0byBzdWl0LgpAQCAtMTI3NywxNSArMTI1MiwxNiBAQAogVGhlIGZvbGxvd2luZyBjb25maWd1cmUgb3B0aW9ucyBjcmVhdGVzIGEgd29ya2luZyBzZXQgb2YgcHJvZ3JhbXM6CiAKIC4vY29uZmlndXJlIFwKKwktLWRpc2FibGUtc2hhcmVkIFwKIAktLXdpdGgtbWliLW1vZHVsZXM9Imhvc3QgYWdlbnR4IGRpc21hbi9ldmVudC1taWIgZXhhbXBsZXMvZXhhbXBsZSIgXAogCS0td2l0aC1vdXQtbWliLW1vZHVsZXM9aG9zdC9ocl9uZXR3b3JrIFwKICAgICAgICAgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgLS13aXRob3V0LXBlcmwtbW9kdWxlcyBcCiAKLUlmIHlvdSB3YW50IHRvIHVzZSBTTk1QdjMgYXV0aCBhbmQgcHJpdmFjeSBmZWF0dXJlcywgYWRkOgotCS0td2l0aC1vcGVuc3NsPSIvdXNyIiBcCitJZiB5b3Ugd2FudCB0byBkaXNhYmxlIFNOTVB2MyBhdXRoIGFuZCBwcml2YWN5IGZlYXR1cmVzLCBhZGQ6CisJLS13aXRob3V0LW9wZW5zc2wgXAogCiBJZiB5b3Ugd2FudCB0byB1c2UgSVB2NiB0cmFuc3BvcnRzLCBhZGQ6Ci0JLS1lbmFibGUtaXB2NiAtLXdpdGgtdHJhbnNwb3J0cz0iVENQSVB2NiBVRFBJUHY2IgorCS0tZW5hYmxlLWlwdjYKIAogTm90ZTogIFRoZSBzb3VyY2UgY29kZSBzaG91bGQgKm5vdCogYmUgaW4gYSBmb2xkZXIgdGhhdCBjb250YWlucyBhIHNwYWNlLiAgRm9yCiAgICAgICAgZXhhbXBsZSwgY29tcGlsaW5nIGluIHlvdXIgJ015IERvY3VtZW50cycgb3IgeW91ciBEZXNrdG9wICh1c3VhbGx5CkBAIC0xMzIwLDE3ICsxMjk2LDE2IEBACiBNaW5HVyB0b29scyB3aXRoIHRoZSBNU3lTIGVudmlyb25tZW50LiBNaW5HVywgTVN5UyBhbmQgdGhlIGFzc29jaWF0ZWQKIGRvY3VtZW50YXRpb24gY2FuIGJlIGRvd25sb2FkZWQgZnJvbTogaHR0cDovL3d3dy5taW5ndy5vcmcuCiAKLUNvbXBpbGluZyBuZXQtc25tcCB3aXRoIE1pbkdXIHJlcXVpcmVzIEdOVSByZWdleC4gQSBHTlUgcmVnZXggcGFja2FnZSB0aGF0Ci1idWlsZHMgdW5kZXIgTWluR1cgd2l0aCBNU3lTIGlzIGF2YWlsYWJsZSBhdDogCitDb21waWxpbmcgbmV0LXNubXAgd2l0aCBNaW5HVyByZXF1aXJlcyBHTlUgcmVnZXggYW5kIGxpYmludGwuIEJpbmFyaWVzIGFuZAorZGV2ZWxvcGVyIGhlYWRlciBmaWxlcyBmb3IgdGhlc2UgbGlicmFyaWVzIGFyZSBhdmFpbGFibGUgYXQ6IAogCi0gICAgICAgIGh0dHA6Ly93d3cuYm9lZG9nLmNvbS9uZXQtc25tcC9nbnVfcmVnZXgvcmVnZXgtMC0xMi1taW5ndy1yMi50YXIuZ3oKKyAgICAgICAgaHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy9yZWdleC5odG0KKyAgICAgICAgaHR0cDovL2dudXdpbjMyLnNvdXJjZWZvcmdlLm5ldC9wYWNrYWdlcy9saWJpbnRsLmh0bQogCi1Ob3RlOiAgVGhlIHNvdXJjZSBjb2RlIHNob3VsZCAqbm90KiBiZSBpbiBhIGZvbGRlciB0aGF0IGNvbnRhaW5zIGEgc3BhY2UuICBGb3IKLSAgICAgICBleGFtcGxlLCBjb21waWxpbmcgaW4geW91ciAnTXkgRG9jdW1lbnRzJyBvciB5b3VyIERlc2t0b3AgKHVzdWFsbHkKLSAgICAgICBjOlxEb2N1bWVudHMgYW5kIFNldHRpbmdzXHh4eHhcRGVza3RvcCkgaXMgbm90IHN1cHBvcnRlZC4KLSAgICAgICAKLTEuICBCdWlsZCBhbmQgaW5zdGFsbCBHTlUgcmVnZXggZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIAotICAgIHJlZ2V4LTAtMTItbWluZ3ctcjIgUkVBRE1FLgorUHJvY2VlZCBhcyBmb2xsb3dzIHRvIGJ1aWxkIE5ldC1TTk1QOgorCisxLiAgSW5zdGFsbCBHTlUgcmVnZXggYW5kIEdOVSBsaWJpbnRsIGJpbmFyaWVzIGFuZCBkZXZlbG9wZXIgZmlsZXMgaW4gdGhlCisgICAgTWluR1cgdHJlZS4KIAogMi4gIElmIFNOTVB2MyBlbmNyeXB0aW9uIGNhcGFiaWxpdGllcyBvciBTSEEgYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQsCiAgICAgaW5zdGFsbCB0aGUgT3BlblNTTCBETEwgYW5kIGxpYnJhcnkgZmlsZSBhcyBkZXNjcmliZWQgaW4gdGhlIHNlY3Rpb24gCkBAIC0xMzU3LDcgKzEzMzIsNyBAQAogCiAJLi9jb25maWd1cmUgLS1wcmVmaXg9IiRCQVNFRElSIiBcCiAJCS0td2l0aC1taWJkaXJzPSIkQkFTRURJUi9zaGFyZS9zbm1wL21pYnMiIFwKLQktLXdpdGgtbWliLW1vZHVsZXM9ImFnZW50eCBkaXNtYW4vZXZlbnQtbWliIGV4YW1wbGVzL2V4YW1wbGUiIFwKKwktLXdpdGgtbWliLW1vZHVsZXM9ImFnZW50eCBkaXNtYW4vZXZlbnQtbWliIHdpbkV4dERMTCBleGFtcGxlcy9leGFtcGxlIlwKICAgICAgICAgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgLS13aXRob3V0LXBlcmwtbW9kdWxlcyBcCiAKICAgICBOb3RlOiB3aGlsZSB0aGUgTmV0LVNOTVAgaW1wbGVtZW50YXRpb24gb2YgdGhlIGhvc3QgcmVzb3VyY2VzIE1JQiBpcyBub3QKZGlmZiAtLWdpdCBhL1RPRE8gYi9UT0RPCmluZGV4IDIyMTBiNmUuLjQ5ZDkxM2UgMTAwNjQ0Ci0tLSBhL1RPRE8KKysrIGIvVE9ETwpAQCAtMjQsOCArMjQsOCBAQAogICBUdW5uZWwKICAgV1dXLU1JQgogICBIYXJkd2FyZSBBYnN0cmFjdGlvbiBMYXllcjoKLSAgICBIb3N0UmVzCShjb252ZXJ0IHRvIHVzZSBIQUwgYW5kIGNsZWFuIHVwKQotICAgIFVDRGF2aXMJKGNvbnZlcnQgdG8gdXNlIEhBTCBhbmQgdXBkYXRlIHN0cnVjdHVyZXMpCisgICAgSG9zdFJlcwkoY29udmVydCB0byB1c2UgSEFMIGFuZCBjbGVhbiB1cCAtIGluIHByb2dyZXNzKQorICAgIFVDRGF2aXMJKGNvbnZlcnQgdG8gdXNlIEhBTCBhbmQgdXBkYXRlIHN0cnVjdHVyZXMgLSBpbiBwcm9ncmVzcykKIAogRXh0ZW5zaWJpbGl0eToKICAgQWdlbnRYCShyZWFzb25hYmx5IHN0YWJsZSBub3cpCmRpZmYgLS1naXQgYS9hY2NvbmZpZy5oIGIvYWNjb25maWcuaAppbmRleCAwZWQwNmI5Li41NDkxOTQxIDEwMDY0NAotLS0gYS9hY2NvbmZpZy5oCisrKyBiL2FjY29uZmlnLmgKQEAgLTIzLDIzNiArMjMsNyBAQAogICovCiAjaWZuZGVmIE5FVFNOTVBfTk9fQVVUT0NPTkZfREVGSU5JVElPTlMKIAotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50MzJfdCAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAogCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50MzJfdCAqLwotI3VuZGVmIEhBVkVfVUlOVDMyX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdV9pbnQzMl90ICovCi0jdW5kZWYgSEFWRV9VX0lOVDMyX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50NjRfdCAqLwotI3VuZGVmIEhBVkVfSU5UNjRfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50NjRfdCAqLwotI3VuZGVmIEhBVkVfVUlOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdV9pbnQ2NF90ICovCi0jdW5kZWYgSEFWRV9VX0lOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgaW50cHRyX3QgKi8KLSN1bmRlZiBIQVZFX0lOVFBUUl9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVpbnRwdHJfdCAqLwotI3VuZGVmIEhBVkVfVUlOVFBUUl9UCi0KLS8qIGdvdCBzb2NrbGVuX3Q/ICovCi0jdW5kZWYgSEFWRV9TT0NLTEVOX1QKLQotLyogZ290IGluX2FkZHJfdD8gKi8KLSN1bmRlZiBIQVZFX0lOX0FERFJfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgZ2V0ZGV2cygpICovCi0jdW5kZWYgSEFWRV9HRVRERVZTCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBkZXZzdGF0X2dldGRldnMoKSAqLwotI3VuZGVmIEhBVkVfREVWU1RBVF9HRVRERVZTCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSA8bmV0aW5ldC9pbl9wY2IuaD4gKi8KLSN1bmRlZiBIQVZFX05FVElORVRfSU5fUENCX0gKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIDxzeXMvZGlza2xhYmVsLmg+ICovCi0jdW5kZWYgSEFWRV9TWVNfRElTS0xBQkVMX0gKLQotLyogZGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgKHByb2Nlc3NvcikgZGVmaW5lcyBfX0ZVTkNUSU9OX18gZm9yIHlvdSAqLwotI3VuZGVmIEhBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQKLQotLyogb24gYWl4LCBpZiB5b3UgaGF2ZSBwZXJmc3RhdCAqLwotI3VuZGVmIEhBVkVfUEVSRlNUQVQKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGxpYmRiLCBsaWJubSBvciBsaWJycG0sIHJlc3BlY3RpdmVseSAqLwotI3VuZGVmIEhBVkVfTElCREIKLSN1bmRlZiBIQVZFX0xJQk5NCi0jdW5kZWYgSEFWRV9MSUJSUE0KLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHBrZ2luZm8gKi8KLSN1bmRlZiBIQVZFX1BLR0lORk8KLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGhvc3RieW5hbWUgKi8KLSN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBwZXJsX2V2YWxfcHYoKSBmdW5jdGlvbiAqLwotI3VuZGVmIEhBVkVfUEVSTF9FVkFMX1BWX0xDCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0aGUgUGVybF9ldmFsX3B2KCkgZnVuY3Rpb24gKi8KLSN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9VQwotCi0vKiBwcmludGluZyBzeXN0ZW0gKi8KLSN1bmRlZiBIQVZFX0xQU1RBVAotI3VuZGVmIExQU1RBVF9QQVRICi0jdW5kZWYgSEFWRV9QUklOVENBUAotLyogVXNlIGRtYWxsb2MgdG8gZG8gbWFsbG9jIGRlYnVnZ2luZz8gKi8KLSN1bmRlZiBIQVZFX0RNQUxMT0NfSAotCi0vKiBsb2NhdGlvbiBvZiBVTklYIGtlcm5lbCAqLwotI2RlZmluZSBLRVJORUxfTE9DICIvdm11bml4IgotCi0vKiBsb2NhdGlvbiBvZiBtb3VudCB0YWJsZSBsaXN0ICovCi0jZGVmaW5lIEVUQ19NTlRUQUIgIi9ldGMvbW50dGFiIgotCi0vKiBsb2NhdGlvbiBvZiBzd2FwIGRldmljZSAob2sgaWYgbm90IGZvdW5kKSAqLwotI3VuZGVmIERNRU1fTE9DCi0KLS8qIENvbW1hbmQgdG8gZ2VuZXJhdGUgcHMgb3V0cHV0LCB0aGUgZmluYWwgY29sdW1uIG11c3QgYmUgdGhlIHByb2Nlc3MKLSAgIG5hbWUgd2l0aE9VVCBhcmd1bWVudHMgKi8KLSNkZWZpbmUgUFNDTUQgIi9iaW4vcHMiCi0KLS8qIFdoZXJlIGlzIHRoZSB1bmFtZSBjb21tYW5kICovCi0jZGVmaW5lIFVOQU1FUFJPRyAiL2Jpbi91bmFtZSIKLQotLyogZGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgbGludXggYW5kIC9wcm9jL25ldC9kZXYgaGFzIHRoZSBjb21wcmVzc2VkCi0gICBmaWVsZCwgd2hpY2ggZXhpc3RzIGluIGxpbnV4IGtlcm5lbHMgMi4yIGFuZCBncmVhdGVyLiAqLwotI3VuZGVmIFBST0NfTkVUX0RFVl9IQVNfQ09NUFJFU1NFRAotCi0vKiBkZWZpbmUgcnRlbnRyeSB0byBvcnRlbnRyeSBvbiBTWVNWIG1hY2hpbmVzIChhbHBoYXMpICovCi0jdW5kZWYgUlRFTlRSWQotCi0vKiBVc2UgQlNEIDQuNCByb3V0aW5nIHRhYmxlIGVudHJpZXM/ICovCi0jdW5kZWYgUlRFTlRSWV80XzQKLQotLyogRG9lcyBzdHJ1Y3Qgc2lnYWN0aW9uIGhhdmUgYSBzYV9zaWdhY3Rpb24gZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NJR0FDVElPTl9IQVNfU0FfU0lHQUNUSU9OCi0KLS8qIERvZXMgc3RydWN0IHRtIGhhdmUgYSB0bV9nbXRvZmYgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1RNX0hBU19UTV9HTVRPRkZGCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9sZW4gZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9MRU4KLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHIgaGF2ZSBhIHNhX2ZhbWlseTIgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIKLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBoYXZlIGEgc3NfZmFtaWx5IGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19TU19GQU1JTFkKLQotLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSBoYXZlIGEgX19zc19mYW1pbHkgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfSEFTX19fU1NfRkFNSUxZCi0KLS8qIERvZXMgc3RydWN0IGluNl9hZGRyIGhhdmUgYSBzNl91bi5zYTZfbGFkZCBmaWVsZD8gKi8KLSN1bmRlZiBTVFJVQ1RfSU42X0FERFJfSEFTX1M2X1VOX1NBNl9MQUREUgotCi0vKiBydGVudHJ5IHN0cnVjdHVyZSB0ZXN0cyAqLwotI3VuZGVmIFJURU5UUllfUlRfTkVYVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVU5JVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VU0UKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfUkVGQ05UCi0jdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0hBU0gKLQotLyogaWZuZXQgc3RydWN0dXJlIHRlc3RzICovCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEVfSUZTX1ZBTFVFCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9TUEVFRAotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfVFlQRQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSU1DQVNUUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSVFEUk9QUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfTlNFQwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTk9QUk9UTwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfT01DQVNUUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09CWVRFUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSUJZVEVTCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9BRERSTElTVAotCi0vKiB0Y3BzdGF0LnRjcHNfcmN2bWVtZHJvcCAqLwotI3VuZGVmIFNUUlVDVF9UQ1BTVEFUX0hBU19UQ1BTX1JDVk1FTURST1AKLQotLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLSN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19ESVNDQVJECi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUCi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUQkNBU1QKLQotLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLSN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19GVUxMU09DSwotCi0vKiBhcnBoZC5hdF9uZXh0ICovCi0jdW5kZWYgU1RSVUNUX0FSUEhEX0hBU19BVF9ORVhUCi0KLS8qIGlmYWRkci5pZmFfbmV4dCAqLwotI3VuZGVmIFNUUlVDVF9JRkFERFJfSEFTX0lGQV9ORVhUCi0KLS8qIGlmbmV0LmlmX210dSAqLwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTVRVCi0KLS8qIHN3ZGV2dC5zd19uYmxrc2VuYWJsZWQgKi8KLSN1bmRlZiBTVFJVQ1RfU1dERVZUX0hBU19TV19OQkxLU0VOQUJMRUQKLQotLyogbmxpc3Qubl92YWx1ZSAqLwotI3VuZGVmIFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRQotCi0vKiBubGlzdDY0Lm5fdmFsdWUgKi8KLSN1bmRlZiBTVFJVQ1RfTkxJU1Q2NF9IQVNfTl9WQUxVRQotCi0vKiBpcHN0YXQgc3RydWN0dXJlIHRlc3RzICovCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGT1JXQVJECi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGUkFHCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0RFTElWRVJFRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHRFJPUFBFRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHVElNRU9VVAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19MT0NBTE9VVAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1BST1RPCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUk9VVEUKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0RST1BQRUQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0ZSQUdNRU5UUwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19SRUFTU0VNQkxFRAotCi0vKiB2ZnNzdGF0LmZfZnJzaXplICovCi0jdW5kZWYgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRlJTSVpFCi0KLS8qIHZmc3N0YXQuZl9maWxlcyAqLwotI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTCi0KLS8qIHN0YXRmcyBpbm9kZSBzdHJ1Y3R1cmUgdGVzdHMqLwotI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRklMRVMKLSN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZGUkVFCi0jdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GQVZBSUwKLQotLyogZGVzX2tzX3N0cnVjdC53ZWFrX2tleSAqLwotI3VuZGVmIFNUUlVDVF9ERVNfS1NfU1RSVUNUX0hBU19XRUFLX0tFWQotCi0vKiBpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUwgZGVmaW5lZCAqLwotI3VuZGVmIElGTkVUX05FRURTX0tFUk5FTAotCi0vKiBzeXNjdGwgd29ya3MgdG8gZ2V0IGJvb3R0aW1lLCBldGMuLi4gKi8KLSN1bmRlZiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMCi0KLS8qIGRlZmluZSBpZiBTSU9DR0lGQUREUiBleGlzdHMgaW4gc3lzL2lvY3RsLmggKi8KLSN1bmRlZiBTWVNfSU9DVExfSF9IQVNfU0lPQ0dJRkFERFIKLQotLyogRGVmaW5lIGlmIHN0YXRmcyB0YWtlcyAyIGFyZ3MgYW5kIHRoZSBzZWNvbmQgYXJndW1lbnQgaGFzCi0gICB0eXBlIHN0cnVjdCBmc19kYXRhLiBbVWx0cml4XSAqLwotI3VuZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKLQotLyogRGVmaW5lIGlmIHRoZSBUQ1AgdGltZXIgY29uc3RhbnRzIGluIDxuZXRpbmV0L3RjcF90aW1lci5oPgotICAgZGVwZW5kIG9uIHRoZSBpbnRlZ2VyIHZhcmlhYmxlIGBoeicuICBbRnJlZUJTRCA0LnhdICovCi0jdW5kZWYgVENQVFZfTkVFRFNfSFoKLQotLyogTm90LXRvLWJlLWNvbXBpbGVkIG1hY3JvcyBmb3IgdXNlIGJ5IGNvbmZpZ3VyZSBvbmx5ICovCi0jZGVmaW5lIGNvbmZpZ19yZXF1aXJlKHgpCi0jZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpCi0jZGVmaW5lIGNvbmZpZ19hcmNoX3JlcXVpcmUoeCx5KQotI2RlZmluZSBjb25maWdfcGFyc2VfZG90X2NvbmYodyx4LHkseikKLSNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCkKLSNkZWZpbmUgY29uZmlnX2JlbG9uZ3NfaW4oeCkKLSNkZWZpbmUgY29uZmlnX2Vycm9yKHgpCi0jZGVmaW5lIGNvbmZpZ193YXJuaW5nKHgpCi0gIAogI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChtaW5ndzMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCiAjZGVmaW5lIEVOVl9TRVBBUkFUT1IgIjsiCiAjZGVmaW5lIEVOVl9TRVBBUkFUT1JfQ0hBUiAnOycKQEAgLTI2Nyw0NyArMzgsNiBAQAogCiAvKiBlbmQgb2YgZGVmaW5pdGlvbnMgYWRkZWQgYnkgY29uZmlndXJlIG9uLXRoZS1mbHkgKi8KIAotI2lmbmRlZiBIQVZFX1NUUkNIUgotI2lmZGVmIEhBVkVfSU5ERVgKLSMgZGVmaW5lIHN0cmNociBpbmRleAotIyBkZWZpbmUgc3RycmNociByaW5kZXgKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9JTkRFWAotI2lmZGVmIEhBVkVfU1RSQ0hSCi0jaWZkZWYgbWluZ3czMgotIyBkZWZpbmUgaW5kZXgoYSxiKSBzdHJjaHIoYSxiKQotIyBkZWZpbmUgcmluZGV4KGEsYikgc3RycmNocihhLGIpCi0jZWxzZQotIyBkZWZpbmUgaW5kZXggc3RyY2hyCi0jIGRlZmluZSByaW5kZXggc3RycmNocgotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNQ1BZCi0jaWZkZWYgSEFWRV9CQ09QWQotIyBkZWZpbmUgbWVtY3B5KGQsIHMsIG4pIGJjb3B5ICgocyksIChkKSwgKG4pKQotIyBkZWZpbmUgbWVtbW92ZShkLCBzLCBuKSBiY29weSAoKHMpLCAoZCksIChuKSkKLSMgZGVmaW5lIG1lbWNtcCBiY21wCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNTU9WRQotI2lmZGVmIEhBVkVfTUVNQ1BZCi0jIGRlZmluZSBtZW1tb3ZlIG1lbWNweQotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0JDT1BZCi0jaWZkZWYgSEFWRV9NRU1DUFkKLSMgZGVmaW5lIGJjb3B5KHMsIGQsIG4pIG1lbWNweSAoKGQpLCAocyksIChuKSkKLSMgZGVmaW5lIGJ6ZXJvKHAsbikgbWVtc2V0KChwKSwoMCksKG4pKQotIyBkZWZpbmUgYmNtcCBtZW1jbXAKLSNlbmRpZgotI2VuZGlmCi0KIC8qIElmIHlvdSBoYXZlIG9wZW5zc2wgMC45Ljcgb3IgYWJvdmUsIHlvdSBsaWtlbHkgaGF2ZSBBRVMgc3VwcG9ydC4gKi8KICN1bmRlZiBORVRTTk1QX1VTRV9PUEVOU1NMCiAjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9BRVNfSCkgJiYgZGVmaW5lZChIQVZFX0FFU19DRkIxMjhfRU5DUllQVCkKQEAgLTM2NCwyNyArOTQsNiBAQAogLyogZGVmYXVsdCBsaXN0IG9mIG1pYnMgdG8gbG9hZCAqLwogI2RlZmluZSBORVRTTk1QX0RFRkFVTFRfTUlCUyAiSVAtTUlCOklGLU1JQjpUQ1AtTUlCOlVEUC1NSUI6U05NUHYyLU1JQjpSRkMxMjEzLU1JQiIKIAotLyogZGVmYXVsdCBsb2NhdGlvbiB0byBsb29rIGZvciBtaWJzIHRvIGxvYWQgdXNpbmcgdGhlIGFib3ZlIHRva2VucwotICAgYW5kL29yIHRob3NlIGluIHRoZSBNSUJTIGVudnJpb25tZW50IHZhcmlhYmxlKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRElSUwotCi0vKiBkZWZhdWx0IG1pYiBmaWxlcyB0byBsb2FkLCBzcGVjaWZpZWQgYnkgcGF0aC4gKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRklMRVMKLQotLyogc2hvdWxkIHdlIGNvbXBpbGUgdG8gdXNlIHNwZWNpYWwgb3BhcXVlIHR5cGVzOiBmbG9hdCwgZG91YmxlLAotICAgY291bnRlcjY0LCBpNjQsIHVpNjQsIHVuaW9uPyAqLwotI3VuZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwotCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBzdXBwb3J0IGZvciBib3RoIGF1dGhlbnRpY2F0aW9uIGFuZAotICAgcHJpdmFjeSBzdXBwb3J0LiAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCi0KLS8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNRDUgY29kZSAuLi4qLwotI3VuZGVmIE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENQotCi0vKiBkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgY29kZVMxMSBsaWJyYXJ5IC4uLiovCi0jdW5kZWYgTkVUU05NUF9VU0VfUEtDUzExCi0KIC8qIGRlYnVnZ2luZyBzdHVmZiAqLwogLyogaWYgZGVmaW5lZCwgd2Ugb3B0aW1pemUgdGhlIGNvZGUgdG8gZXhjbHVkZSBhbGwgZGVidWdnaW5nIGNhbGxzLiAqLwogI3VuZGVmIE5FVFNOTVBfTk9fREVCVUdHSU5HCkBAIC00MDAsOSArMTA5LDYgQEAKICAgIGxpbmVzOiBQRVJTSVNURU5UX0RJUkVDVE9SWS9OQU1FLnBlcnNpc3RlbnQuY29uZiAqLwogI2RlZmluZSBORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZICIvdmFyL3NubXAiCiAKLS8qIFBFUlNJU1RFTlRfTUFTSzogdGhlIHVtYXNrIHBlcm1pc3Npb25zIHRvIHNldCB1cCBwZXJzaXN0ZW50IGZpbGVzIHdpdGggKi8KLSNkZWZpbmUgTkVUU05NUF9QRVJTSVNURU5UX01BU0sgMDc3Ci0KIC8qIEFHRU5UX0RJUkVDVE9SWV9NT0RFOiB0aGUgbW9kZSB0aGUgYWdlbnRzIHNob3VsZCB1c2UgdG8gY3JlYXRlCiAgICBkaXJlY3RvcmllcyB3aXRoLiBTaW5jZSB0aGUgZGF0YSBzdG9yZWQgaGVyZSBpcyBwcm9iYWJseSBzZW5zaXRpdmUsIGl0CiAgICBwcm9iYWJseSBzaG91bGQgYmUgcmVhZC1vbmx5IGJ5IHJvb3QvYWRtaW5pc3RyYXRvci4gKi8KQEAgLTQ0NywxOSArMTUzLDYgQEAKIC8qIFVzZSBsaWJ3cmFwIHRvIGhhbmRsZSBhbGxvdy9kZW55IGhvc3RzPyAqLwogI3VuZGVmIE5FVFNOTVBfVVNFX0xJQldSQVAKIAotLyogdGVzdGluZyBjb2RlIHNlY3Rpb25zLiAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERSAKLQotLyogSWYgeW91IGRvbid0IGhhdmUgcm9vdCBhY2Nlc3MgZG9uJ3QgZXhpdCB1cG9uIGttZW0gZXJyb3JzICovCi0jdW5kZWYgTkVUU05NUF9OT19ST09UX0FDQ0VTUwotCi0vKiBJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLiAqLwotI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQotCi0vKiBJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgYWdlbnQgdG8gcmVwb3J0IG9uIHZhcmlhYmxlcyBpdCBkb2Vzbid0IGhhdmUgZGF0YSBmb3IgKi8KLSN1bmRlZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwotCi0KIC8qIE1pYi0yIHRyZWUgSW5mbyAqLwogLyogVGhlc2UgYXJlIHRoZSBzeXN0ZW0gaW5mb3JtYXRpb24gdmFyaWFibGVzLiAqLwogCkBAIC02NTQsOSArMzQ3LDYgQEAKIC8qIGludGVybmFsIGRlZmluZSAqLwogI2RlZmluZSBORVRTTk1QX0xBU1RGSUVMRCAtMQogCi0vKiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWQgKi8KLSNkZWZpbmUgTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUyAiIgotCiAvKiAgUGx1Z2dhYmxlIHRyYW5zcG9ydHMuICAqLwogCiAvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBVRFAvSVAgdHJhbnNwb3J0IGRvbWFpbiBpcwpAQCAtNjkxLDEwICszODEsMjIgQEAKICAgICBhdmFpbGFibGUuICAqLwogI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1RDUElQVjZfRE9NQUlOCiAKLS8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFVEUC9JUCB0cmFuc3BvcnQgZG9tYWluIGlzCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBUTFMgdHJhbnNwb3J0IGRvbWFpbiBpcwogICAgIGF2YWlsYWJsZS4gICAqLwogI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1RMU19ET01BSU4KIAorLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgQWxpYXMgdHJhbnNwb3J0IGRvbWFpbiBpcworICAgIGF2YWlsYWJsZS4gICAqLworI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0FMSUFTX0RPTUFJTgorCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBTU0ggdHJhbnNwb3J0IGRvbWFpbiBpcworICAgIGF2YWlsYWJsZS4gICAqLworI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1NTSF9ET01BSU4KKworLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgRFRMUy9VRFAgdHJhbnNwb3J0IGRvbWFpbiBpcworICAgIGF2YWlsYWJsZS4gICAqLworI3VuZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0RUTFNVRFBfRE9NQUlOCisKIC8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3Igc3RkaW4vb3V0IHRyYW5zcG9ydCBkb21haW4gaXMgYXZhaWxhYmxlLiAgICovCiAjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfU1REX0RPTUFJTgogCkBAIC03MDcsMTggKzQwOSw5IEBACiAvKiBkZWZpbmUgdGhpcyBpZiB0aGUgbG9jYWwgc2VjdXJpdHkgbW9kdWxlIGlzIGF2YWlsYWJsZSAqLwogI3VuZGVmIE5FVFNOTVBfU0VDTU9EX0xPQ0FMU00KIAotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIHdpdGggcmVlbnRyYW50L3RocmVhZGVkIGNvZGUgKGluY29tcGxldGUpKi8KLSN1bmRlZiBORVRTTk1QX1JFRU5UUkFOVAotCiAvKiBkZWZpbmUgaWYgY29uZmlndXJlZCBhcyBhICJtaW5pLWFnZW50IiAqLwogI3VuZGVmIE5FVFNOTVBfTUlOSV9BR0VOVAogCi0vKiBkZWZpbmUgaWYgeW91IGFyZSBlbWJlZGRpbmcgcGVybCBpbiB0aGUgbWFpbiBhZ2VudCAqLwotI3VuZGVmIE5FVFNOTVBfRU1CRURERURfUEVSTAotCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gYnVpbGQgTUZEIG1vZHVsZSByZXdyaXRlcyovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTCi0KIC8qIHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBuZXQtc25tcCBtaWIgdHJlZS4gIEl0IHNob3VsZG4ndCBiZQogICAgY2hhbmdlZCwgYXMgdGhlIHBsYWNlcyBpdCBpcyB1c2VkIGFyZSBleHBlY3RlZCB0byBiZSBjb25zdGFudAogICAgdmFsdWVzIG9yIGFyZSBkaXJlY3RseSB0aWVkIHRvIHRoZSBVQ0QtU05NUC1NSUIuICovCkBAIC03ODYsMjQgKzQ3OSw2IEBACiAjICBkZWZpbmUgTkVUU05NUF9JTVBPUlQgZXh0ZXJuCiAjZW5kaWYKIAotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBJUHY2IHN1cHBvcnQgKi8KLSN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0KLS8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byByZXN0cmljdCBTTVVYIGNvbm5lY3Rpb25zIHRvIGxvY2FsaG9zdCBieSBkZWZhdWx0ICovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWAotCi0vKiBkZWZpbmUgaWYgYWdlbnR4IHRyYW5zcG9ydCBpcyB0byB1c2UgZG9tYWluIHNvY2tldHMgb25seSAqLwotI3VuZGVmIE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFkKLQotLyogZGVmaW5lIGlmIHlvdSBkbyBub3Qgd2FudCBzbm1wdHJhcGQgdG8gcmVnaXN0ZXIgYXMgYW4gQWdlbnRYIHN1YmFnZW50ICovCi0jdW5kZWYgTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKLQotLyogZGVmaW5lIHRoaXMgaWYgd2UncmUgdXNpbmcgdGhlIG5ldyBNSVQgY3J5cHRvIEFQSSAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVAotCi0vKiBkZWZpbmUgdGhpcyBpZiB5b3UncmUgdXNpbmcgSGVpbWRhbCBLZXJiZXJvcyAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwKLQogLyogY29tbWVudCB0aGUgbmV4dCBsaW5lIGlmIHlvdSBhcmUgY29tcGlsaW5nIHdpdGggbGlic25tcC5oIAogICAgYW5kIGFyZSBub3QgdXNpbmcgdGhlIFVDLURhdmlzIFNOTVAgbGlicmFyeS4gKi8KICNkZWZpbmUgVUNEX1NOTVBfTElCUkFSWSAxCkBAIC04MTIsNyArNDg3LDcgQEAKICN1bmRlZiBDTVVfQ09NUEFUSUJMRQogCiAvKiBmaW5hbCBjb25jbHVzaW9uIG9uIG5saXN0IHVzYWdlICovCi0jaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRSkgJiYgIWRlZmluZWQoTkVUU05NUF9ET05UX1VTRV9OTElTVCkgJiYgIWRlZmluZWQoTkVUU05NUF9OT19LTUVNX1VTQUdFKQorI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCiAjZGVmaW5lIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWMxMjk4MC4uMDAwMDAwMAotLS0gYS9hY2luY2x1ZGUubTQKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotZG5sIEBzeW5vcHNpcyBBQ19QUk9NUFRfVVNFUl9OT19ERUZJTkUoVkFSSUFCTEVOQU1FLFFVRVNUSU9OLFtERUZBVUxUXSkKLWRubAotZG5sIEFza3MgYSBRVUVTVElPTiBhbmQgcHV0cyB0aGUgcmVzdWx0cyBpbiBWQVJJQUJMRU5BTUUgd2l0aCBhbiBvcHRpb25hbAotZG5sIERFRkFVTFQgdmFsdWUgaWYgdGhlIHVzZXIgbWVyZWx5IGhpdHMgcmV0dXJuLgotZG5sCi1kbmwgQHZlcnNpb24gMS4xNQotZG5sIEBhdXRob3IgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1kbmwKLUFDX0RFRlVOKFtBQ19QUk9NUFRfVVNFUl9OT19ERUZJTkVdLAotZG5sIGNoYW5nZXF1b3RlKDw8LCA+PikgZG5sCi1kbmwgPDwKLVsKLWlmIHRlc3QgIngkZGVmYXVsdHMiID0gInhubyI7IHRoZW4KLWVjaG8gJEVDSE9fTiAiJDIgKCQzKTogJEVDSE9fQyIKLXJlYWQgdG1waW5wdXQKLWlmIHRlc3QgIiR0bXBpbnB1dCIgPSAiIiAtYSAiJDMiICE9ICIiOyB0aGVuCi0gIHRtcGlucHV0PSIkMyIKLWZpCi1ldmFsICQxPVwiJHRtcGlucHV0XCIKLWVsc2UKLXRtcGlucHV0PSIkMyIKLWV2YWwgJDE9XCIkdG1waW5wdXRcIgotZmkKLV0KLWRubCA+PgotZG5sIGNoYW5nZXF1b3RlKFssIF0pCi0pIGRubCBkb25lIEFDX1BST01QVF9VU0VSCi0KLWRubCBAc3lub3BzaXMgQUNfUFJPTVBUX1VTRVIoVkFSSUFCTEVOQU1FLFFVRVNUSU9OLFtERUZBVUxUXSxRVU9URUQpCi1kbmwKLWRubCBBc2tzIGEgUVVFU1RJT04gYW5kIHB1dHMgdGhlIHJlc3VsdHMgaW4gVkFSSUFCTEVOQU1FIHdpdGggYW4gb3B0aW9uYWwKLWRubCBERUZBVUxUIHZhbHVlIGlmIHRoZSB1c2VyIG1lcmVseSBoaXRzIHJldHVybi4gIEFsc28gY2FsbHMgCi1kbmwgQUNfREVGSU5FX1VOUVVPVEVEKCkgb24gdGhlIFZBUklBQkxFTkFNRSBmb3IgVkFSSUFCTEVOQU1FcyB0aGF0IHNob3VsZAotZG5sIGJlIGVudGVyZWQgaW50byB0aGUgY29uZmlnLmggZmlsZSBhcyB3ZWxsLiAgSWYgUVVPVEVEIGlzICJxdW90ZWQiIHRoZW4KLWRubCB0aGUgcmVzdWx0IHdpbGwgYmUgZGVmaW5lZCB3aXRoaW4gcXVvdGVzLgotZG5sCi1kbmwgQHZlcnNpb24gMS4xNQotZG5sIEBhdXRob3IgV2VzIEhhcmRha2VyIDxoYXJkYWtlckB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1kbmwKLUFDX0RFRlVOKFtBQ19QUk9NUFRfVVNFUl0sCi1bCi1NU0dfQ0hFQ0s9YGVjaG8gIiQyIiB8IHRhaWwgLTFgCi1BQ19DQUNIRV9DSEVDSygkTVNHX0NIRUNLLCBhY19jdl91c2VyX3Byb21wdF8kMSwKLVtlY2hvICIiID4mQUNfRkRfTVNHCi1BQ19QUk9NUFRfVVNFUl9OT19ERUZJTkUoJDEsWyQyXSwkMykKLWV2YWwgYWNfY3ZfdXNlcl9wcm9tcHRfJDE9XCQkMQotZWNobyAkRUNIT19OICJzZXR0aW5nICRNU0dfQ0hFQ0sgdG8uLi4gICRFQ0hPX0MiID4mQUNfRkRfTVNHCi1dKQotaWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0XyQxIiAhPSAibm9uZSI7IHRoZW4KLSAgaWYgdGVzdCAieCQ0IiA9ICJ4cXVvdGVkIiAtbyAieCQ0IiA9ICJ4UVVPVEVEIjsgdGhlbgotICAgIEFDX0RFRklORV9VTlFVT1RFRCgkMSwiJGFjX2N2X3VzZXJfcHJvbXB0XyQxIikKLSAgZWxzZQotICAgIEFDX0RFRklORV9VTlFVT1RFRCgkMSwkYWNfY3ZfdXNlcl9wcm9tcHRfJDEpCi0gIGZpCi1maQotXSkgZG5sCi0KLWRubCBAc3lub3BzaXMgQUNfQ0hFQ0tfU1RSVUNUX0ZPUihJTkNMVURFUyxTVFJVQ1QsTUVNQkVSLERFRklORSxbbm9dKQotZG5sCi1kbmwgQ2hlY2tzIFNUUlVDVCBmb3IgTUVNQkVSIGFuZCBkZWZpbmVzIERFRklORSBpZiBmb3VuZC4KLWRubAotZG5sIEB2ZXJzaW9uIDEuMTUKLWRubCBAYXV0aG9yIFdlcyBIYXJkYWtlciA8aGFyZGFrZXJAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotZG5sCi1BQ19ERUZVTihbQUNfQ0hFQ0tfU1RSVUNUX0ZPUl0sWwotCi1hY19zYWZlX3N0cnVjdD1gZWNobyAiJDIiIHwgc2VkICd5JS4vKy0lX19wXyUnYAotYWNfc2FmZV9tZW1iZXI9YGVjaG8gIiQzIiB8IHNlZCAneSUuLystJV9fcF8lJ2AKLWFjX3NhZmVfYWxsPSJhY19jdl9zdHJ1Y3RfJHthY19zYWZlX3N0cnVjdH1faGFzXyR7YWNfc2FmZV9tZW1iZXJ9IgotY2hhbmdlcXVvdGUoLCApZG5sCi0gIGFjX3VjX2RlZmluZT1TVFJVQ1RfYGVjaG8gIiR7YWNfc2FmZV9zdHJ1Y3R9X0hBU18ke2FjX3NhZmVfbWVtYmVyfSIgfCBzZWQgJ3klYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy0lQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX18lJ2AKLWNoYW5nZXF1b3RlKFssIF0pZG5sCi0KLUFDX01TR19DSEVDS0lORyhbZm9yICQyLiQzXSkKLUFDX0NBQ0hFX1ZBTCgkYWNfc2FmZV9hbGwsCi1bCi1pZiB0ZXN0ICJ4JDQiID0gIngiOyB0aGVuCi0gIGRlZmluZWl0PSI9IDAiCi1lbGlmIHRlc3QgIngkNCIgPSAieG5vIjsgdGhlbgotICBkZWZpbmVpdD0iIgotZWxzZQotICBkZWZpbmVpdD0iJDQiCi1maQotQUNfVFJZX0NPTVBJTEUoWwotJDEKLV0sWwotc3RydWN0ICQyIHRlc3RpdDsgCi10ZXN0aXQuJDMgJGRlZmluZWl0OwotXSwgZXZhbCAiJHthY19zYWZlX2FsbH09eWVzIiwgZXZhbCAiJHthY19zYWZlX2FsbH09bm8iICkKLV0pCi0KLWlmIGV2YWwgInRlc3QgXCJ4JGBlY2hvICR7YWNfc2FmZV9hbGx9YFwiID0gXCJ4eWVzXCIiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoeWVzKQotICBBQ19ERUZJTkVfVU5RVU9URUQoJGFjX3VjX2RlZmluZSkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLWZpCi0KLV0pCi0KLWRubCBBQ19DSEVDS19JRk5FVF9GT1IoU1VCU1RSVUNULFtub10pCi1BQ19ERUZVTihbQUNfQ0hFQ0tfSUZORVRfRk9SXSxbCi1kbmwgY2hlY2sgZm9yICQxIGluIHN0cnVjdCBpZm5ldAotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2lmZGVmIEhBVkVfU1lTX1RJTUVfSAotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxuZXQvaWYuaD4KLSNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAotI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1FVRVVFX0gKLSNpbmNsdWRlIDxzeXMvcXVldWUuaD4KLSNlbmRpZgotI2lmZGVmIGxpbnV4Ci1zdHJ1Y3QgaWZuZXQgewotCWNoYXIJKmlmX25hbWU7CQkvKiBuYW1lLCBlLmcuICJlbiIgb3IgImxvIiAqLwotCXNob3J0CWlmX3VuaXQ7CQkvKiBzdWItdW5pdCBmb3IgbG93ZXIgbGV2ZWwgZHJpdmVyICovCi0Jc2hvcnQJaWZfbXR1OwkJCS8qIG1heGltdW0gdHJhbnNtaXNzaW9uIHVuaXQgKi8KLQlzaG9ydAlpZl9mbGFnczsJCS8qIHVwL2Rvd24sIGJyb2FkY2FzdCwgZXRjLiAqLwotCWludAlpZl9tZXRyaWM7CQkvKiByb3V0aW5nIG1ldHJpYyAoZXh0ZXJuYWwgb25seSkgKi8KLQljaGFyICAgIGlmX2h3YWRkciBbNl07CQkvKiBldGhlcm5ldCBhZGRyZXNzICovCi0JaW50CWlmX3R5cGU7CQkvKiBpbnRlcmZhY2UgdHlwZTogMT1nZW5lcmljLAotCQkJCQkgICAyOD1zbGlwLCBldGhlcj02LCBsb29wYmFjaz0yNCAqLwotCWludAlpZl9zcGVlZDsJCS8qIGludGVyZmFjZSBzcGVlZDogaW4gYml0cy9zZWMgKi8KLQotCXN0cnVjdCBzb2NrYWRkciBpZl9hZGRyOwkvKiBpbnRlcmZhY2UncyBhZGRyZXNzICovCi0Jc3RydWN0IHNvY2thZGRyIGlmdV9icm9hZGFkZHI7CS8qIGJyb2FkY2FzdCBhZGRyZXNzICovCi0Jc3RydWN0IHNvY2thZGRyIGlhX3N1Ym5ldG1hc2s7IAkvKiBpbnRlcmZhY2UncyBtYXNrICovCi0KLQlzdHJ1Y3QJaWZxdWV1ZSB7Ci0JCWludAlpZnFfbGVuOwotCQlpbnQJaWZxX2Ryb3BzOwotCX0gaWZfc25kOwkJCS8qIG91dHB1dCBxdWV1ZSAqLwotCWludAlpZl9pYnl0ZXM7CQkvKiBvY3RldHMgcmVjZWl2ZWQgb24gaW50ZXJmYWNlICovCi0JaW50CWlmX2lwYWNrZXRzOwkJLyogcGFja2V0cyByZWNlaXZlZCBvbiBpbnRlcmZhY2UgKi8KLQlpbnQJaWZfaWVycm9yczsJCS8qIGlucHV0IGVycm9ycyBvbiBpbnRlcmZhY2UgKi8KLSAgICAgICAgaW50ICAgICBpZl9pcWRyb3BzOyAgICAgICAgICAgICAvKiBpbnB1dCBxdWV1ZSBvdmVycnVucyAqLwotCWludAlpZl9vYnl0ZXM7CQkvKiBvY3RldHMgc2VudCBvbiBpbnRlcmZhY2UgKi8KLQlpbnQJaWZfb3BhY2tldHM7CQkvKiBwYWNrZXRzIHNlbnQgb24gaW50ZXJmYWNlICovCi0JaW50CWlmX29lcnJvcnM7CQkvKiBvdXRwdXQgZXJyb3JzIG9uIGludGVyZmFjZSAqLwotCWludAlpZl9jb2xsaXNpb25zOwkJLyogY29sbGlzaW9ucyBvbiBjc21hIGludGVyZmFjZXMgKi8KLS8qIGVuZCBzdGF0aXN0aWNzICovCi0Jc3RydWN0CWlmbmV0ICppZl9uZXh0OwotfTsKLSNlbmRpZgotXSwgaWZuZXQsICQxLCAkMikKLV0pCi0KLWRubAotZG5sIEFkZCBhIHNlYXJjaCBwYXRoIHRvIHRoZSBMSUJTIGFuZCBDRkxBR1MgdmFyaWFibGVzCi1kbmwKLUFDX0RFRlVOKFtBQ19BRERfU0VBUkNIX1BBVEhdLFsKLSAgaWYgdGVzdCAieCQxIiAhPSB4IC1hIC1kICQxOyB0aGVuCi0gICAgIGlmIHRlc3QgLWQgJDEvbGliOyB0aGVuCi0gICAgICAgTERGTEFHUz0iLUwkMS9saWIgJExERkxBR1MiCi0gICAgIGZpCi0gICAgIGlmIHRlc3QgLWQgJDEvaW5jbHVkZTsgdGhlbgotCUNQUEZMQUdTPSItSSQxL2luY2x1ZGUgJENQUEZMQUdTIgotICAgICBmaQotICBmaQotXSkKLQotZG5sCi1kbmwgU3RvcmUgaW5mb3JtYXRpb24gZm9yIGRpc3BsYXlpbmcgbGF0ZXIuCi1kbmwKLUFDX0RFRlVOKFtBQ19NU0dfQ0FDSEVfSU5JVF0sWwotICBybSAtZiBjb25maWd1cmUtc3VtbWFyeQotXSkKLQotQUNfREVGVU4oW0FDX01TR19DQUNIRV9BRERdLFsKLSAgY2F0ID4+IGNvbmZpZ3VyZS1zdW1tYXJ5IDw8IEVPRgotICAkMQotRU9GCi1dKQotCi1BQ19ERUZVTihbQUNfTVNHX0NBQ0hFX0RJU1BMQVldLFsKLSAgZWNobyAiIgotICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gIGVjaG8gIiAgICAgICAgICAgIE5ldC1TTk1QIGNvbmZpZ3VyYXRpb24gc3VtbWFyeToiCi0gIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSAgZWNobyAiIgotICBjYXQgY29uZmlndXJlLXN1bW1hcnkKLSAgZWNobyAiIgotICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0gIGVjaG8gIiIKLV0pCi0KLUFDX0RFRlVOKFtBQ19NU0dfTU9EVUxFX0RCR10sCi1bCi0gIGlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyA9IDE7IHRoZW4KLSAgICBlY2hvICQxICQyICQzICQ0Ci0gIGZpCi1dCi0pCmRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAppbmRleCA0NDFjNzUyLi5kZTU5NGI4IDEwMDY0NAotLS0gYS9hY2xvY2FsLm00CisrKyBiL2FjbG9jYWwubTQKQEAgLTExLDY2NDAgKzExLDE0IEBACiAjIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKICMgUEFSVElDVUxBUiBQVVJQT1NFLgogCi0jIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQotCi0jIHNlcmlhbCA1MiBBQ19QUk9HX0xJQlRPT0wKLQotCi0jIEFDX1BST1ZJREVfSUZFTFNFKE1BQ1JPLU5BTUUsIElGLVBST1ZJREVELCBJRi1OT1QtUFJPVklERUQpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIElmIHRoaXMgbWFjcm8gaXMgbm90IGRlZmluZWQgYnkgQXV0b2NvbmYsIGRlZmluZSBpdCBoZXJlLgotbTRfaWZkZWYoW0FDX1BST1ZJREVfSUZFTFNFXSwKLSAgICAgICAgIFtdLAotICAgICAgICAgW200X2RlZmluZShbQUNfUFJPVklERV9JRkVMU0VdLAotCSAgICAgICAgIFttNF9pZmRlZihbQUNfUFJPVklERV8kMV0sCi0JCSAgICAgICAgICAgWyQyXSwgWyQzXSldKV0pCi0KLQotIyBBQ19QUk9HX0xJQlRPT0wKLSMgLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfUFJPR19MSUJUT09MXSwKLVtBQ19SRVFVSVJFKFtfQUNfUFJPR19MSUJUT09MXSlkbmwKLWRubCBJZiBBQ19QUk9HX0NYWCBoYXMgYWxyZWFkeSBiZWVuIGV4cGFuZGVkLCBydW4gQUNfTElCVE9PTF9DWFgKLWRubCBpbW1lZGlhdGVseSwgb3RoZXJ3aXNlLCBob29rIGl0IGluIGF0IHRoZSBlbmQgb2YgQUNfUFJPR19DWFguCi0gIEFDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sCi0gICAgW0FDX0xJQlRPT0xfQ1hYXSwKLSAgICBbZGVmaW5lKFtBQ19QUk9HX0NYWF0sIGRlZm4oW0FDX1BST0dfQ1hYXSlbQUNfTElCVE9PTF9DWFgKLSAgXSldKQotZG5sIEFuZCBhIHNpbWlsYXIgc2V0dXAgZm9yIEZvcnRyYW4gNzcgc3VwcG9ydAotICBBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19GNzddLAotICAgIFtBQ19MSUJUT09MX0Y3N10sCi0gICAgW2RlZmluZShbQUNfUFJPR19GNzddLCBkZWZuKFtBQ19QUk9HX0Y3N10pW0FDX0xJQlRPT0xfRjc3Ci1dKV0pCi0KLWRubCBRdW90ZSBBXVtNX1BST0dfR0NKIHNvIHRoYXQgYWNsb2NhbCBkb2Vzbid0IGJyaW5nIGl0IGluIG5lZWRsZXNzbHkuCi1kbmwgSWYgZWl0aGVyIEFDX1BST0dfR0NKIG9yIEFdW01fUFJPR19HQ0ogaGF2ZSBhbHJlYWR5IGJlZW4gZXhwYW5kZWQsIHJ1bgotZG5sIEFDX0xJQlRPT0xfR0NKIGltbWVkaWF0ZWx5LCBvdGhlcndpc2UsIGhvb2sgaXQgaW4gYXQgdGhlIGVuZCBvZiBib3RoLgotICBBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19HQ0pdLAotICAgIFtBQ19MSUJUT09MX0dDSl0sCi0gICAgW0FDX1BST1ZJREVfSUZFTFNFKFtBXVtNX1BST0dfR0NKXSwKLSAgICAgIFtBQ19MSUJUT09MX0dDSl0sCi0gICAgICBbQUNfUFJPVklERV9JRkVMU0UoW0xUX0FDX1BST0dfR0NKXSwKLQlbQUNfTElCVE9PTF9HQ0pdLAotICAgICAgW2lmZGVmKFtBQ19QUk9HX0dDSl0sCi0JICAgICBbZGVmaW5lKFtBQ19QUk9HX0dDSl0sIGRlZm4oW0FDX1BST0dfR0NKXSlbQUNfTElCVE9PTF9HQ0pdKV0pCi0gICAgICAgaWZkZWYoW0FdW01fUFJPR19HQ0pdLAotCSAgICAgW2RlZmluZShbQV1bTV9QUk9HX0dDSl0sIGRlZm4oW0FdW01fUFJPR19HQ0pdKVtBQ19MSUJUT09MX0dDSl0pXSkKLSAgICAgICBpZmRlZihbTFRfQUNfUFJPR19HQ0pdLAotCSAgICAgW2RlZmluZShbTFRfQUNfUFJPR19HQ0pdLAotCQlkZWZuKFtMVF9BQ19QUk9HX0dDSl0pW0FDX0xJQlRPT0xfR0NKXSldKV0pXSkKLV0pXSkjIEFDX1BST0dfTElCVE9PTAotCi0KLSMgX0FDX1BST0dfTElCVE9PTAotIyAtLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0FDX1BST0dfTElCVE9PTF0sCi1bQUNfUkVRVUlSRShbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9DWFhdKWRubAotQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfRjc3XSlkbmwKLUFDX0JFRk9SRShbJDBdLFtBQ19MSUJUT09MX0dDSl0pZG5sCi0KLSMgVGhpcyBjYW4gYmUgdXNlZCB0byByZWJ1aWxkIGxpYnRvb2wgd2hlbiBuZWVkZWQKLUxJQlRPT0xfREVQUz0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotCi0jIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi1BQ19TVUJTVChMSUJUT09MKWRubAotCi0jIFByZXZlbnQgbXVsdGlwbGUgZXhwYW5zaW9uCi1kZWZpbmUoW0FDX1BST0dfTElCVE9PTF0sIFtdKQotXSkjIF9BQ19QUk9HX0xJQlRPT0wKLQotCi0jIEFDX0xJQlRPT0xfU0VUVVAKLSMgLS0tLS0tLS0tLS0tLS0tLQotQUNfREVGVU4oW0FDX0xJQlRPT0xfU0VUVVBdLAotW0FDX1BSRVJFUSgyLjUwKWRubAotQUNfUkVRVUlSRShbQUNfRU5BQkxFX1NIQVJFRF0pZG5sCi1BQ19SRVFVSVJFKFtBQ19FTkFCTEVfU1RBVElDXSlkbmwKLUFDX1JFUVVJUkUoW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKLUFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotQUNfUkVRVUlSRShbQUNfUFJPR19MRF0pZG5sCi1BQ19SRVFVSVJFKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSlkbmwKLUFDX1JFUVVJUkUoW0FDX1BST0dfTk1dKWRubAotCi1BQ19SRVFVSVJFKFtBQ19QUk9HX0xOX1NdKWRubAotQUNfUkVRVUlSRShbQUNfREVQTElCU19DSEVDS19NRVRIT0RdKWRubAotIyBBdXRvY29uZiAyLjEzJ3MgQUNfT0JKRVhUIGFuZCBBQ19FWEVFWFQgbWFjcm9zIG9ubHkgd29ya3MgZm9yIEMgY29tcGlsZXJzIQotQUNfUkVRVUlSRShbQUNfT0JKRVhUXSlkbmwKLUFDX1JFUVVJUkUoW0FDX0VYRUVYVF0pZG5sCi1kbmwKLUFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOCi1BQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEUKLUFDX0xJQlRPT0xfT0JKRElSCi0KLUFDX1JFUVVJUkUoW19MVF9BQ19TWVNfQ09NUElMRVJdKWRubAotX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gKLQotY2FzZSAkaG9zdF9vcyBpbgotYWl4MyopCi0gICMgQUlYIHNvbWV0aW1lcyBoYXMgcHJvYmxlbXMgd2l0aCB0aGUgR0NDIGNvbGxlY3QyIHByb2dyYW0uICBGb3Igc29tZQotICAjIHJlYXNvbiwgaWYgd2Ugc2V0IHRoZSBDT0xMRUNUX05BTUVTIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgcHJvYmxlbXMKLSAgIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgotICBpZiB0ZXN0ICJYJHtDT0xMRUNUX05BTUVTK3NldH0iICE9IFhzZXQ7IHRoZW4KLSAgICBDT0xMRUNUX05BTUVTPQotICAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCi0gIGZpCi0gIDs7Ci1lc2FjCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGhlbHBzIHVzIGRvIHJvYnVzdCBxdW90aW5nLiAgSXQgYmFja3NsYXNoaWZpZXMKLSMgbWV0YWNoYXJhY3RlcnMgdGhhdCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUtcXVvdGVkIHN0cmluZ3MuCi1Yc2VkPSdzZWQgLWUgMXMvXlgvLycKLVtzZWRfcXVvdGVfc3Vic3Q9J3MvXChbXFwiXFxgJFxcXFxdXCkvXFxcMS9nJ10KLQotIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi1bZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woW1xcIlxcYFxcXFxdXCkvXFxcMS9nJ10KLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNoZWxsIHZhcmlhYmxlIGluIGEKLSMgZG91YmxlX3F1b3RlX3N1YnN0J2VkIHN0cmluZy4KLWRlbGF5X3ZhcmlhYmxlX3N1YnN0PSdzL1xcXFxcXFxcXFxcJC9cXFxcXFwkL2cnCi0KLSMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucwotbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCi0KLSMgQ29uc3RhbnRzOgotcm09InJtIC1mIgotCi0jIEdsb2JhbCB2YXJpYWJsZXM6Ci1kZWZhdWx0X29maWxlPWxpYnRvb2wKLWNhbl9idWlsZF9zaGFyZWQ9eWVzCi0KLSMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotIyB3aGljaCBuZWVkcyAnLmxpYicpLgotbGliZXh0PWEKLWx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotb2ZpbGU9IiRkZWZhdWx0X29maWxlIgotd2l0aF9nbnVfbGQ9IiRsdF9jdl9wcm9nX2dudV9sZCIKLQotQUNfQ0hFQ0tfVE9PTChBUiwgYXIsIGZhbHNlKQotQUNfQ0hFQ0tfVE9PTChSQU5MSUIsIHJhbmxpYiwgOikKLUFDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQotCi1vbGRfQ0M9IiRDQyIKLW9sZF9DRkxBR1M9IiRDRkxBR1MiCi0KLSMgU2V0IHNhbmUgZGVmYXVsdHMgZm9yIHZhcmlvdXMgdmFyaWFibGVzCi10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotdGVzdCAteiAiJEFTIiAmJiBBUz1hcwotdGVzdCAteiAiJENDIiAmJiBDQz1jYwotdGVzdCAteiAiJExUQ0MiICYmIExUQ0M9JENDCi10ZXN0IC16ICIkTFRDRkxBR1MiICYmIExUQ0ZMQUdTPSRDRkxBR1MKLXRlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLXRlc3QgLXogIiRMRCIgJiYgTEQ9bGQKLXRlc3QgLXogIiRMTl9TIiAmJiBMTl9TPSJsbiAtcyIKLXRlc3QgLXogIiRNQUdJQ19DTUQiICYmIE1BR0lDX0NNRD1maWxlCi10ZXN0IC16ICIkTk0iICYmIE5NPW5tCi10ZXN0IC16ICIkU0VEIiAmJiBTRUQ9c2VkCi10ZXN0IC16ICIkT0JKRFVNUCIgJiYgT0JKRFVNUD1vYmpkdW1wCi10ZXN0IC16ICIkUkFOTElCIiAmJiBSQU5MSUI9OgotdGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06Ci10ZXN0IC16ICIkYWNfb2JqZXh0IiAmJiBhY19vYmpleHQ9bwotCi0jIERldGVybWluZSBjb21tYW5kcyB0byBjcmVhdGUgb2xkLXN0eWxlIHN0YXRpYyBhcmNoaXZlcy4KLW9sZF9hcmNoaXZlX2NtZHM9JyRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJwotb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0KLQotaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KLSAgY2FzZSAkaG9zdF9vcyBpbgotICBvcGVuYnNkKikKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgotICAgIDs7Ci0gICopCi0gICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKLSAgICA7OwotICBlc2FjCi0gIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgotZmkKLQotX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotCi0jIE9ubHkgcGVyZm9ybSB0aGUgY2hlY2sgZm9yIGZpbGUsIGlmIHRoZSBjaGVjayBtZXRob2QgcmVxdWlyZXMgaXQKLWNhc2UgJGRlcGxpYnNfY2hlY2tfbWV0aG9kIGluCi1maWxlX21hZ2ljKikKLSAgaWYgdGVzdCAiJGZpbGVfbWFnaWNfY21kIiA9ICckTUFHSUNfQ01EJzsgdGhlbgotICAgIEFDX1BBVEhfTUFHSUMKLSAgZmkKLSAgOzsKLWVzYWMKLQotX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1MKLQotQUNfUFJPVklERV9JRkVMU0UoW0FDX0xJQlRPT0xfRExPUEVOXSwgZW5hYmxlX2Rsb3Blbj15ZXMsIGVuYWJsZV9kbG9wZW49bm8pCi1BQ19QUk9WSURFX0lGRUxTRShbQUNfTElCVE9PTF9XSU4zMl9ETExdLAotZW5hYmxlX3dpbjMyX2RsbD15ZXMsIGVuYWJsZV93aW4zMl9kbGw9bm8pCi0KLUFDX0FSR19FTkFCTEUoW2xpYnRvb2wtbG9ja10sCi0gICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKLQlbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKLXRlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCi0KLUFDX0FSR19XSVRIKFtwaWNdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLXBpY10sCi0JW3RyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIEA8OkBkZWZhdWx0PXVzZSBib3RoQDo+QF0pXSwKLSAgICBbcGljX21vZGU9IiR3aXRodmFsIl0sCi0gICAgW3BpY19tb2RlPWRlZmF1bHRdKQotdGVzdCAteiAiJHBpY19tb2RlIiAmJiBwaWNfbW9kZT1kZWZhdWx0Ci0KLSMgVXNlIEMgZm9yIHRoZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaW4gdGhlIGxpYnRvb2wgc2NyaXB0Ci10YWduYW1lPQotQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHCi1fTFRfQUNfVEFHQ09ORklHCi1dKSMgQUNfTElCVE9PTF9TRVRVUAotCi0KLSMgX0xUX0FDX1NZU19DT01QSUxFUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1NZU19DT01QSUxFUl0sCi1bQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0KLSMgSWYgbm8gQyBjb21waWxlciB3YXMgc3BlY2lmaWVkLCB1c2UgQ0MuCi1MVENDPSR7TFRDQy0iJENDIn0KLQotIyBJZiBubyBDIGNvbXBpbGVyIGZsYWdzIHdlcmUgc3BlY2lmaWVkLCB1c2UgQ0ZMQUdTLgotTFRDRkxBR1M9JHtMVENGTEFHUy0iJENGTEFHUyJ9Ci0KLSMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi1jb21waWxlcj0kQ0MKLV0pIyBfTFRfQUNfU1lTX0NPTVBJTEVSCi0KLQotIyBfTFRfQ0NfQkFTRU5BTUUoQ0MpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ2FsY3VsYXRlIGNjX2Jhc2VuYW1lLiAgU2tpcCBrbm93biBjb21waWxlciB3cmFwcGVycyBhbmQgY3Jvc3MtcHJlZml4LgotQUNfREVGVU4oW19MVF9DQ19CQVNFTkFNRV0sCi1bZm9yIGNjX3RlbXAgaW4gJDEiIjsgZG8KLSAgY2FzZSAkY2NfdGVtcCBpbgotICAgIGNvbXBpbGUgfCAqW1tcXC9dXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1tcXC9dXWNjYWNoZSApIDs7Ci0gICAgZGlzdGNjIHwgKltbXFwvXV1kaXN0Y2MgfCBwdXJpZnkgfCAqW1tcXC9dXXB1cmlmeSApIDs7Ci0gICAgXC0qKSA7OwotICAgICopIGJyZWFrOzsKLSAgZXNhYwotZG9uZQotY2NfYmFzZW5hbWU9YCRlY2hvICJYJGNjX3RlbXAiIHwgJFhzZWQgLWUgJ3MlLiovJSUnIC1lICJzJV4kaG9zdF9hbGlhcy0lJSJgCi1dKQotCi0KLSMgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBmb3IgY29tcGlsZXIgYm9pbGVycGxhdGUgb3V0cHV0IG9yIHdhcm5pbmdzIHdpdGgKLSMgdGhlIHNpbXBsZSBjb21waWxlciB0ZXN0IGNvZGUuCi1BQ19ERUZVTihbX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFXSwKLVtBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1NFRF0pZG5sCi1hY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHQKLWVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID5jb25mdGVzdC4kYWNfZXh0Ci1ldmFsICIkYWNfY29tcGlsZSIgMj4mMSA+L2Rldi9udWxsIHwgJFNFRCAnL14kL2Q7IC9eICorL2QnID5jb25mdGVzdC5lcnIKLV9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZT1gY2F0IGNvbmZ0ZXN0LmVycmAKLSRybSBjb25mdGVzdCoKLV0pIyBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKLQotCi0jIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBmb3IgbGlua2VyIGJvaWxlcnBsYXRlIG91dHB1dCBvciB3YXJuaW5ncyB3aXRoCi0jIHRoZSBzaW1wbGUgbGluayB0ZXN0IGNvZGUuCi1BQ19ERUZVTihbX0xUX0xJTktFUl9CT0lMRVJQTEFURV0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotYWNfb3V0ZmlsZT1jb25mdGVzdC4kYWNfb2JqZXh0Ci1lY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+Y29uZnRlc3QuJGFjX2V4dAotZXZhbCAiJGFjX2xpbmsiIDI+JjEgPi9kZXYvbnVsbCB8ICRTRUQgJy9eJC9kOyAvXiAqKy9kJyA+Y29uZnRlc3QuZXJyCi1fbHRfbGlua2VyX2JvaWxlcnBsYXRlPWBjYXQgY29uZnRlc3QuZXJyYAotJHJtIC1yIGNvbmZ0ZXN0KgotXSkjIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLQotIyBfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBmb3Igc29tZSB0aGluZ3Mgb24gZGFyd2luCi1BQ19ERUZVTihbX0xUX1JFUVVJUkVEX0RBUldJTl9DSEVDS1NdLFsKLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi0gICAgQUNfQ0hFQ0tfVE9PTChbRFNZTVVUSUxdLCBbZHN5bXV0aWxdLCBbOl0pCi0gICAgQUNfQ0hFQ0tfVE9PTChbTk1FRElUXSwgW25tZWRpdF0sIFs6XSkKLQotICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLXNpbmdsZV9tb2R1bGUgbGlua2VyIGZsYWddLFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kXSwKLSAgICAgIFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPW5vCi0gICAgICBpZiB0ZXN0IC16ICIke0xUX01VTFRJX01PRFVMRX0iOyB0aGVuCi0gICAjIEJ5IGRlZmF1bHQgd2Ugd2lsbCBhZGQgdGhlIC1zaW5nbGVfbW9kdWxlIGZsYWcuIFlvdSBjYW4gb3ZlcnJpZGUKLSAgICMgYnkgZWl0aGVyIHNldHRpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExUX01VTFRJX01PRFVMRQotICAgIyBub24tZW1wdHkgYXQgY29uZmlndXJlIHRpbWUsIG9yIGJ5IGFkZGluZyAtbXVsdGlfbW9kdWxlIHRvIHRoZQotICAgIyBsaW5rIGZsYWdzLgotICAgZWNobyAiaW50IGZvbyh2b2lkKXtyZXR1cm4gMTt9IiA+IGNvbmZ0ZXN0LmMKLSAgICRMVENDICRMVENGTEFHUyAkTERGTEFHUyAtbyBsaWJjb25mdGVzdC5keWxpYiBcCi0gICAgIC1keW5hbWljbGliICR7d2x9LXNpbmdsZV9tb2R1bGUgY29uZnRlc3QuYwotICAgaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYjsgdGhlbgotICAgICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcwotICAgICBybSAtcmYgbGliY29uZnRlc3QuZHlsaWIqCi0gICBmaQotICAgcm0gY29uZnRlc3QuYwotICAgICAgZmldKQotICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCBsaW5rZXIgZmxhZ10sCi0gICAgICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0XSwKLSAgICAgIFtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9bm8KLSAgICAgIHNhdmVfTERGTEFHUz0kTERGTEFHUwotICAgICAgZWNobyAiX21haW4iID4gY29uZnRlc3Quc3ltCi0gICAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCxjb25mdGVzdC5zeW0iCi0gICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCi0gICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PXllc10sCi0gICBbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vXSkKLSAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0gICAgXSkKLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bWzAxMjNdXSkKLSAgICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKLSAgICBkYXJ3aW4xLiopCi0gICAgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKLSAgICBkYXJ3aW4qKQotICAgICAgIyBpZiBydW5uaW5nIG9uIDEwLjUgb3IgbGF0ZXIsIHRoZSBkZXBsb3ltZW50IHRhcmdldCBkZWZhdWx0cwotICAgICAgIyB0byB0aGUgT1MgdmVyc2lvbiwgaWYgb24geDg2LCBhbmQgMTAuNCwgdGhlIGRlcGxveW1lbnQKLSAgICAgICMgdGFyZ2V0IGRlZmF1bHRzIHRvIDEwLjQuIERvbid0IHlvdSBsb3ZlIGl0PwotICAgICAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSwkaG9zdCBpbgotICAgMTAuMCwqODYqLWRhcndpbjgqfDEwLjAsKi1kYXJ3aW5bWzkxXV0qKQotICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7Ci0gICAxMC5bWzAxMl1dKikKLSAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LWZsYXRfbmFtZXNwYWNlICR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwotICAgMTAuKikKLSAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OwotICAgICAgZXNhYwotICAgIDs7Ci0gIGVzYWMKLSAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPSAieWVzIjsgdGhlbgotICAgICAgX2x0X2Rhcl9zaW5nbGVfbW9kPSckc2luZ2xlX21vZHVsZScKLSAgICBmaQotICAgIGlmIHRlc3QgIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID0gInllcyI7IHRoZW4KLSAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9JyAke3dsfS1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bScKLSAgICBlbHNlCi0gICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSJ+JE5NRURJVCAtcyBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gXCR7bGlifSIKLSAgICBmaQotICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiOyB0aGVuCi0gICAgICBfbHRfZHN5bXV0aWw9In4kRFNZTVVUSUwgXCRsaWIgfHwgOiIKLSAgICBlbHNlCi0gICAgICBfbHRfZHN5bXV0aWw9Ci0gICAgZmkKLSAgICA7OwotICBlc2FjCi1dKQotCi0jIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBMaW5rcyBhIG1pbmltYWwgcHJvZ3JhbSBhbmQgY2hlY2tzIHRoZSBleGVjdXRhYmxlCi0jIGZvciB0aGUgc3lzdGVtIGRlZmF1bHQgaGFyZGNvZGVkIGxpYnJhcnkgcGF0aC4gSW4gbW9zdCBjYXNlcywKLSMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAotIyB0aGUgbG9jYXRpb24gb2YgdGhlIGNvbW11bmljYXRpb24gYW5kIE1QSSBsaWJzIGFyZSBpbmNsdWRlZCB0b28uCi0jIElmIHdlIGRvbid0IGZpbmQgYW55dGhpbmcsIHVzZSB0aGUgZGVmYXVsdCBsaWJyYXJ5IHBhdGggYWNjb3JkaW5nCi0jIHRvIHRoZSBhaXggbGQgbWFudWFsLgotQUNfREVGVU4oW19MVF9BQ19TWVNfTElCUEFUSF9BSVhdLAotW0FDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX0xJTktfSUZFTFNFKEFDX0xBTkdfUFJPR1JBTSxbCi1sdF9haXhfbGlicGF0aF9zZWQ9JwotICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLQkvXjAvIHsKLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0JICAgIHAKLQl9Ci0gICAgfScKLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLWZpXSxbXSkKLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotXSkjIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKLQotCi0jIF9MVF9BQ19TSEVMTF9JTklUKEFSRykKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotQUNfREVGVU4oW19MVF9BQ19TSEVMTF9JTklUXSwKLVtpZmRlZihbQUNfRElWRVJTSU9OX05PVElDRV0sCi0JICAgICBbQUNfRElWRVJUX1BVU0goQUNfRElWRVJTSU9OX05PVElDRSldLAotCSBbQUNfRElWRVJUX1BVU0goTk9USUNFKV0pCi0kMQotQUNfRElWRVJUX1BPUAotXSkjIF9MVF9BQ19TSEVMTF9JTklUCi0KLQotIyBfTFRfQUNfUFJPR19FQ0hPX0JBQ0tTTEFTSAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBBZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydCBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2gKLSMgd2lsbCBmaW5kIGFuIGVjaG8gY29tbWFuZCB3aGljaCBkb2Vzbid0IGludGVycHJldCBiYWNrc2xhc2hlcy4KLUFDX0RFRlVOKFtfTFRfQUNfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCi1bX0xUX0FDX1NIRUxMX0lOSVQoWwotIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgotU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KLQotY2FzZSBYJEVDSE8gaW4KLVgqLS1mYWxsYmFjay1lY2hvKQotICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgotICBFQ0hPPWBlY2hvICIkRUNITyIgfCBzZWQgJ3MsXFxcXFxbJF1cXFskXTAsJ1skXTAnLCdgCi0gIDs7Ci1lc2FjCi0KLWVjaG89JHtFQ0hPLWVjaG99Ci1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KLSAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gIHNoaWZ0Ci1lbGlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KLSAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgotICA6Ci1lbGlmIHRlc3QgIlhgKCRlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KLSAgIyBZaXBwZWUsICRlY2hvIHdvcmtzIQotICA6Ci1lbHNlCi0gICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KLSAgZXhlYyAkU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci1maQotCi1pZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCi0gICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCi0gIHNoaWZ0Ci0gIGNhdCA8PEVPRgotWyRdKgotRU9GCi0gIGV4aXQgMAotZmkKLQotIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKLSMgaWYgQ0RQQVRIIGlzIHNldC4KLSh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKLQotaWYgdGVzdCAteiAiJEVDSE8iOyB0aGVuCi1pZiB0ZXN0ICJYJHtlY2hvX3Rlc3Rfc3RyaW5nK3NldH0iICE9IFhzZXQ7IHRoZW4KLSMgZmluZCBhIHN0cmluZyBhcyBsYXJnZSBhcyBwb3NzaWJsZSwgYXMgbG9uZyBhcyB0aGUgc2hlbGwgY2FuIGNvcGUgd2l0aCBpdAotICBmb3IgY21kIGluICdzZWQgNTBxICJbJF0wIicgJ3NlZCAyMHEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMnEgIlskXTAiJyAnZWNobyB0ZXN0JzsgZG8KLSAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMmtCLCAxa0IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgotICAgIGlmIChlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgKSAyPi9kZXYvbnVsbCAmJgotICAgICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJGNtZGAgJiYKLSAgICAgICAodGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbAotICAgIHRoZW4KLSAgICAgIGJyZWFrCi0gICAgZmkKLSAgZG9uZQotZmkKLQotaWYgdGVzdCAiWGAoJGVjaG8gJ1x0JykgMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCi0gICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGVjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCi0gICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgOgotZWxzZQotICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKLSAgIyBiYWNrc2xhc2hlcy4gIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBxdW90ZSBiYWNrc2xhc2hlcyB1c2luZwotICAjICAgZWNobyAiJHNvbWV0aGluZyIgfCBzZWQgJ3MvXFwvXFxcXC9nJwotICAjCi0gICMgU28sIGZpcnN0IHdlIGxvb2sgZm9yIGEgd29ya2luZyBlY2hvIGluIHRoZSB1c2VyJ3MgUEFUSC4KLQotICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICBpZiAodGVzdCAtZiAkZGlyL2VjaG8gfHwgdGVzdCAtZiAkZGlyL2VjaG8kYWNfZXhlZXh0KSAmJgotICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLSAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJGRpci9lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotICAgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotICAgICAgZWNobz0iJGRpci9lY2hvIgotICAgICAgYnJlYWsKLSAgICBmaQotICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgotCi0gIGlmIHRlc3QgIlgkZWNobyIgPSBYZWNobzsgdGhlbgotICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgotICAgIGlmIHRlc3QgIlhgKHByaW50IC1yICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JyAmJgotICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YChwcmludCAtciAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLSAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLSAgICAgICMgVGhpcyBzaGVsbCBoYXMgYSBidWlsdGluIHByaW50IC1yIHRoYXQgZG9lcyB0aGUgdHJpY2suCi0gICAgICBlY2hvPSdwcmludCAtcicKLSAgICBlbGlmICh0ZXN0IC1mIC9iaW4va3NoIHx8IHRlc3QgLWYgL2Jpbi9rc2gkYWNfZXhlZXh0KSAmJgotCSB0ZXN0ICJYJENPTkZJR19TSEVMTCIgIT0gWC9iaW4va3NoOyB0aGVuCi0gICAgICAjIElmIHdlIGhhdmUga3NoLCB0cnkgcnVubmluZyBjb25maWd1cmUgYWdhaW4gd2l0aCBpdC4KLSAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQotICAgICAgZXhwb3J0IE9SSUdJTkFMX0NPTkZJR19TSEVMTAotICAgICAgQ09ORklHX1NIRUxMPS9iaW4va3NoCi0gICAgICBleHBvcnQgQ09ORklHX1NIRUxMCi0gICAgICBleGVjICRDT05GSUdfU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9Ci0gICAgZWxzZQotICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgotICAgICAgZWNobz0ncHJpbnRmICVzXG4nCi0gICAgICBpZiB0ZXN0ICJYYCgkZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKLQkgZWNob190ZXN0aW5nX3N0cmluZz1gKCRlY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQkjIENvb2wsIHByaW50ZiB3b3JrcwotCToKLSAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRPUklHSU5BTF9DT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gJ1hcdCcgJiYKLQkgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgotCUNPTkZJR19TSEVMTD0kT1JJR0lOQUxfQ09ORklHX1NIRUxMCi0JZXhwb3J0IENPTkZJR19TSEVMTAotCVNIRUxMPSIkQ09ORklHX1NIRUxMIgotCWV4cG9ydCBTSEVMTAotCWVjaG89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi0gICAgICBlbGlmIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkQ09ORklHX1NIRUxMICJbJF0wIiAtLWZhbGxiYWNrLWVjaG8gJ1x0JykgMj4vZGV2L251bGxgICYmCi0JICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCi0JICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKLQkgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KLQllY2hvPSIkQ09ORklHX1NIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvIgotICAgICAgZWxzZQotCSMgbWF5YmUgd2l0aCBhIHNtYWxsZXIgc3RyaW5nLi4uCi0JcHJldj06Ci0KLQlmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KLQkgIGlmICh0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCIpIDI+L2Rldi9udWxsCi0JICB0aGVuCi0JICAgIGJyZWFrCi0JICBmaQotCSAgcHJldj0iJGNtZCIKLQlkb25lCi0KLQlpZiB0ZXN0ICIkcHJldiIgIT0gJ3NlZCA1MHEgIlskXTAiJzsgdGhlbgotCSAgZWNob190ZXN0X3N0cmluZz1gZXZhbCAkcHJldmAKLQkgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCi0JICBleGVjICR7T1JJR0lOQUxfQ09ORklHX1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fSAiWyRdMCIgJHsxKyJbJF1AIn0KLQllbHNlCi0JICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgotCSAgZWNobz1lY2hvCi0JZmkKLSAgICAgIGZpCi0gICAgZmkKLSAgZmkKLWZpCi1maQotCi0jIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCi0jIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KLUVDSE89JGVjaG8KLWlmIHRlc3QgIlgkRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCi0gICBFQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCi1maQotCi1BQ19TVUJTVChFQ0hPKQotXSldKSMgX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0gKLQotCi0jIF9MVF9BQ19MT0NLCi0jIC0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX0xPQ0tdLAotW0FDX0FSR19FTkFCTEUoW2xpYnRvb2wtbG9ja10sCi0gICAgW0FDX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKLQlbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKLXRlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCi0KLSMgU29tZSBmbGFncyBuZWVkIHRvIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIGNvbXBpbGVyIG9yIGxpbmtlciBmb3IgZ29vZAotIyBsaWJ0b29sIHN1cHBvcnQuCi1jYXNlICRob3N0IGluCi1pYTY0LSotaHB1eCopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCi0gICAgKkVMRi0zMiopCi0gICAgICBIUFVYX0lBNjRfTU9ERT0iMzIiCi0gICAgICA7OwotICAgICpFTEYtNjQqKQotICAgICAgSFBVWF9JQTY0X01PREU9IjY0IgotICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi0gIHJtIC1yZiBjb25mdGVzdCoKLSAgOzsKLSotKi1pcml4NiopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnWyNdbGluZSBfX29saW5lX18gImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAotICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgotICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KLSAgICAqMzItYml0KikKLSAgICAgIExEPSIke0xELWxkfSAtbWVsZjMyYnNtaXAiCi0gICAgICA7OwotICAgICpOMzIqKQotICAgICAgTEQ9IiR7TEQtbGR9IC1tZWxmMzJibWlwbjMyIgotICAgICAgOzsKLSAgICAqNjQtYml0KikKLSAgICAgIExEPSIke0xELWxkfSAtbWVsZjY0Ym1pcCIKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgZWxzZQotICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KLSAgICAqMzItYml0KikKLSAgICAgIExEPSIke0xELWxkfSAtMzIiCi0gICAgICA7OwotICAgICpOMzIqKQotICAgICAgTEQ9IiR7TEQtbGR9IC1uMzIiCi0gICAgICA7OwotICAgICo2NC1iaXQqKQotICAgICAgTEQ9IiR7TEQtbGR9IC02NCIKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgZmkKLSAgZmkKLSAgcm0gLXJmIGNvbmZ0ZXN0KgotICA7OwotCi14ODZfNjQtKmtmcmVlYnNkKi1nbnV8eDg2XzY0LSpsaW51eCp8cHBjKi0qbGludXgqfHBvd2VycGMqLSpsaW51eCp8IFwKLXMzOTAqLSpsaW51eCp8c3BhcmMqLSpsaW51eCopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0Lm9gIGluCi0gICAgKjMyLWJpdCopCi0gICAgICBjYXNlICRob3N0IGluCi0gICAgICAgIHg4Nl82NC0qa2ZyZWVic2QqLWdudSkKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX2kzODZfZmJzZCIKLSAgICAgICAgICA7OwotICAgICAgICB4ODZfNjQtKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX2kzODYiCi0gICAgICAgICAgOzsKLSAgICAgICAgcHBjNjQtKmxpbnV4Knxwb3dlcnBjNjQtKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmMzJwcGNsaW51eCIKLSAgICAgICAgICA7OwotICAgICAgICBzMzkweC0qbGludXgqKQotICAgICAgICAgIExEPSIke0xELWxkfSAtbSBlbGZfczM5MCIKLSAgICAgICAgICA7OwotICAgICAgICBzcGFyYzY0LSpsaW51eCopCi0gICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjMyX3NwYXJjIgotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgICo2NC1iaXQqKQotICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICB4ODZfNjQtKmtmcmVlYnNkKi1nbnUpCi0gICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl94ODZfNjRfZmJzZCIKLSAgICAgICAgICA7OwotICAgICAgICB4ODZfNjQtKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKLSAgICAgICAgICA7OwotICAgICAgICBwcGMqLSpsaW51eCp8cG93ZXJwYyotKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRwcGMiCi0gICAgICAgICAgOzsKLSAgICAgICAgczM5MCotKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfczM5MCIKLSAgICAgICAgICA7OwotICAgICAgICBzcGFyYyotKmxpbnV4KikKLSAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotICBybSAtcmYgY29uZnRlc3QqCi0gIDs7Ci0KLSotKi1zY28zLjJ2NSopCi0gICMgT24gU0NPIE9wZW5TZXJ2ZXIgNSwgd2UgbmVlZCAtYmVsZiB0byBnZXQgZnVsbC1mZWF0dXJlZCBiaW5hcmllcy4KLSAgU0FWRV9DRkxBR1M9IiRDRkxBR1MiCi0gIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKLSAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGZdLCBsdF9jdl9jY19uZWVkc19iZWxmLAotICAgIFtBQ19MQU5HX1BVU0goQykKLSAgICAgQUNfVFJZX0xJTksoW10sW10sW2x0X2N2X2NjX25lZWRzX2JlbGY9eWVzXSxbbHRfY3ZfY2NfbmVlZHNfYmVsZj1ub10pCi0gICAgIEFDX0xBTkdfUE9QXSkKLSAgaWYgdGVzdCB4IiRsdF9jdl9jY19uZWVkc19iZWxmIiAhPSB4InllcyI7IHRoZW4KLSAgICAjIHRoaXMgaXMgcHJvYmFibHkgZ2NjIDIuOC4wLCBlZ2NzIDEuMCBvciBuZXdlcjsgbm8gbmVlZCBmb3IgLWJlbGYKLSAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKLSAgZmkKLSAgOzsKLXNwYXJjKi0qc29sYXJpcyopCi0gICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KLSAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0Lm9gIGluCi0gICAgKjY0LWJpdCopCi0gICAgICBjYXNlICRsdF9jdl9wcm9nX2dudV9sZCBpbgotICAgICAgeWVzKikgTEQ9IiR7TEQtbGR9IC1tIGVsZjY0X3NwYXJjIiA7OwotICAgICAgKikKLSAgICAgICAgaWYgJHtMRC1sZH0gLTY0IC1yIC1vIGNvbmZ0ZXN0Mi5vIGNvbmZ0ZXN0Lm8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICBMRD0iJHtMRC1sZH0gLTY0IgotCWZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotICBybSAtcmYgY29uZnRlc3QqCi0gIDs7Ci0KLUFDX1BST1ZJREVfSUZFTFNFKFtBQ19MSUJUT09MX1dJTjMyX0RMTF0sCi1bKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqKQotICBBQ19DSEVDS19UT09MKERMTFRPT0wsIGRsbHRvb2wsIGZhbHNlKQotICBBQ19DSEVDS19UT09MKEFTLCBhcywgZmFsc2UpCi0gIEFDX0NIRUNLX1RPT0woT0JKRFVNUCwgb2JqZHVtcCwgZmFsc2UpCi0gIDs7Ci0gIF0pCi1lc2FjCi0KLW5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotCi1dKSMgX0xUX0FDX0xPQ0sKLQotCi0jIEFDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OKE1FU1NBR0UsIFZBUklBQkxFLU5BTUUsIEZMQUdTLAotIwkJW09VVFBVVC1GSUxFXSwgW0FDVElPTi1TVUNDRVNTXSwgW0FDVElPTi1GQUlMVVJFXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBjb21waWxlciBvcHRpb24gd29ya3MKLUFDX0RFRlVOKFtBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTl0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKQotQUNfQ0FDSEVfQ0hFQ0soWyQxXSwgWyQyXSwKLSAgWyQyPW5vCi0gIGlmZWxzZShbJDRdLCAsIFthY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHRdLCBbYWNfb3V0ZmlsZT0kNF0pCi0gICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgIGx0X2NvbXBpbGVyX2ZsYWc9IiQzIgotICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKLSAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCi0gICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCi0gICAjIHdpdGggYSBkb2xsYXIgc2lnbiAobm90IGEgaHlwaGVuKSwgc28gdGhlIGVjaG8gc2hvdWxkIHdvcmsgY29ycmVjdGx5LgotICAgIyBUaGUgb3B0aW9uIGlzIHJlZmVyZW5jZWQgdmlhIGEgdmFyaWFibGUgdG8gYXZvaWQgY29uZnVzaW5nIHNlZC4KLSAgIGx0X2NvbXBpbGU9YGVjaG8gIiRhY19jb21waWxlIiB8ICRTRUQgXAotICAgLWUgJ3M6LipGTEFHU31cezAsMVx9IDomJGx0X2NvbXBpbGVyX2ZsYWcgOjsgdCcgXAotICAgLWUgJ3M6IFtbXiBdXSpjb25mdGVzdFwuOiAkbHRfY29tcGlsZXJfZmxhZyY6OyB0JyBcCi0gICAtZSAnczokOiAkbHRfY29tcGlsZXJfZmxhZzonYAotICAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJGx0X2NvbXBpbGVcIiIgPiZBU19NRVNTQUdFX0xPR19GRCkKLSAgIChldmFsICIkbHRfY29tcGlsZSIgMj5jb25mdGVzdC5lcnIpCi0gICBhY19zdGF0dXM9JD8KLSAgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyAiJGFjX291dGZpbGUiOyB0aGVuCi0gICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCi0gICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncyBvdGhlciB0aGFuIHRoZSB1c3VhbCBvdXRwdXQuCi0gICAgICRlY2hvICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID5jb25mdGVzdC5leHAKLSAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCi0gICAgIGlmIHRlc3QgISAtcyBjb25mdGVzdC5lcjIgfHwgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KLSAgICAgICAkMj15ZXMKLSAgICAgZmkKLSAgIGZpCi0gICAkcm0gY29uZnRlc3QqCi1dKQotCi1pZiB0ZXN0IHgiWyRdJDIiID0geHllczsgdGhlbgotICAgIGlmZWxzZShbJDVdLCAsIDosIFskNV0pCi1lbHNlCi0gICAgaWZlbHNlKFskNl0sICwgOiwgWyQ2XSkKLWZpCi1dKSMgQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT04KLQotCi0jIEFDX0xJQlRPT0xfTElOS0VSX09QVElPTihNRVNTQUdFLCBWQVJJQUJMRS1OQU1FLCBGTEFHUywKLSMgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQ1RJT04tU1VDQ0VTU10sIFtBQ1RJT04tRkFJTFVSRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB3aGV0aGVyIHRoZSBnaXZlbiBjb21waWxlciBvcHRpb24gd29ya3MKLUFDX0RFRlVOKFtBQ19MSUJUT09MX0xJTktFUl9PUFRJT05dLAotW0FDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX0NBQ0hFX0NIRUNLKFskMV0sIFskMl0sCi0gIFskMj1ubwotICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSAgIExERkxBR1M9IiRMREZMQUdTICQzIgotICAgZWNobyAiJGx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gICBpZiAoZXZhbCAkYWNfbGluayAyPmNvbmZ0ZXN0LmVycikgJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQ7IHRoZW4KLSAgICAgIyBUaGUgbGlua2VyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCi0gICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncwotICAgICBpZiB0ZXN0IC1zIGNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICMgQXBwZW5kIGFueSBlcnJvcnMgdG8gdGhlIGNvbmZpZy5sb2cuCi0gICAgICAgY2F0IGNvbmZ0ZXN0LmVyciAxPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgICRlY2hvICJYJF9sdF9saW5rZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IGNvbmZ0ZXN0LmV4cAotICAgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgotICAgICAgIGlmIGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAkMj15ZXMKLSAgICAgICBmaQotICAgICBlbHNlCi0gICAgICAgJDI9eWVzCi0gICAgIGZpCi0gICBmaQotICAgJHJtIC1yIGNvbmZ0ZXN0KgotICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLV0pCi0KLWlmIHRlc3QgeCJbJF0kMiIgPSB4eWVzOyB0aGVuCi0gICAgaWZlbHNlKFskNF0sICwgOiwgWyQ0XSkKLWVsc2UKLSAgICBpZmVsc2UoWyQ1XSwgLCA6LCBbJDVdKQotZmkKLV0pIyBBQ19MSUJUT09MX0xJTktFUl9PUFRJT04KLQotCi0jIEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfTUFYX0NNRF9MRU5dLAotWyMgZmluZCB0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cwotQUNfTVNHX0NIRUNLSU5HKFt0aGUgbWF4aW11bSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50c10pCi1BQ19DQUNIRV9WQUwoW2x0X2N2X3N5c19tYXhfY21kX2xlbl0sIFtkbmwKLSAgaT0wCi0gIHRlc3RzdHJpbmc9IkFCQ0QiCi0KLSAgY2FzZSAkYnVpbGRfb3MgaW4KLSAgbXNkb3NkamdwcCopCi0gICAgIyBPbiBESkdQUCwgdGhpcyB0ZXN0IGNhbiBibG93IHVwIHByZXR0eSBiYWRseSBkdWUgdG8gcHJvYmxlbXMgaW4gbGliYwotICAgICMgKGFueSBzaW5nbGUgYXJndW1lbnQgZXhjZWVkaW5nIDIwMDAgYnl0ZXMgY2F1c2VzIGEgYnVmZmVyIG92ZXJydW4KLSAgICAjIGR1cmluZyBnbG9iIGV4cGFuc2lvbikuICBFdmVuIGlmIGl0IHdlcmUgZml4ZWQsIHRoZSByZXN1bHQgb2YgdGhpcwotICAgICMgY2hlY2sgd291bGQgYmUgbGFyZ2VyIHRoYW4gaXQgc2hvdWxkIGJlLgotICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xMjI4ODsgICAgIyAxMksgaXMgYWJvdXQgcmlnaHQKLSAgICA7OwotCi0gIGdudSopCi0gICAgIyBVbmRlciBHTlUgSHVyZCwgdGhpcyB0ZXN0IGlzIG5vdCByZXF1aXJlZCBiZWNhdXNlIHRoZXJlIGlzCi0gICAgIyBubyBsaW1pdCB0byB0aGUgbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAgIyBMaWJ0b29sIHdpbGwgaW50ZXJwcmV0IC0xIGFzIG5vIGxpbWl0IHdoYXRzb2V2ZXIKLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49LTE7Ci0gICAgOzsKLQotICBjeWd3aW4qIHwgbWluZ3cqKQotICAgICMgT24gV2luOXgvTUUsIHRoaXMgdGVzdCBibG93cyB1cCAtLSBpdCBzdWNjZWVkcywgYnV0IHRha2VzCi0gICAgIyBhYm91dCA1IG1pbnV0ZXMgYXMgdGhlIHRlc3RzdHJpbmcgZ3Jvd3MgZXhwb25lbnRpYWxseS4KLSAgICAjIFdvcnNlLCBzaW5jZSA5eC9NRSBhcmUgbm90IHByZS1lbXB0aXZlbHkgbXVsdGl0YXNraW5nLAotICAgICMgeW91IGVuZCB1cCB3aXRoIGEgImZyb3plbiIgY29tcHV0ZXIsIGV2ZW4gdGhvdWdoIHdpdGggcGF0aWVuY2UKLSAgICAjIHRoZSB0ZXN0IGV2ZW50dWFsbHkgc3VjY2VlZHMgKHdpdGggYSBtYXggbGluZSBsZW5ndGggb2YgMjU2aykuCi0gICAgIyBJbnN0ZWFkLCBsZXQncyBqdXN0IHB1bnQ6IHVzZSB0aGUgbWluaW11bSBsaW5lbGVuZ3RoIHJlcG9ydGVkIGJ5Ci0gICAgIyBhbGwgb2YgdGhlIHN1cHBvcnRlZCBwbGF0Zm9ybXM6IDgxOTIgKG9uIE5ULzJLL1hQKS4KLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49ODE5MjsKLSAgICA7OwotCi0gIGFtaWdhb3MqKQotICAgICMgT24gQW1pZ2FPUyB3aXRoIHBka3NoLCB0aGlzIHRlc3QgdGFrZXMgaG91cnMsIGxpdGVyYWxseS4KLSAgICAjIFNvIHdlIGp1c3QgcHVudCBhbmQgdXNlIGEgbWluaW11bSBsaW5lIGxlbmd0aCBvZiA4MTkyLgotICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOwotICAgIDs7Ci0KLSAgbmV0YnNkKiB8IGZyZWVic2QqIHwgb3BlbmJzZCogfCBkYXJ3aW4qIHwgZHJhZ29uZmx5KikKLSAgICAjIFRoaXMgaGFzIGJlZW4gYXJvdW5kIHNpbmNlIDM4NkJTRCwgYXQgbGVhc3QuICBMaWtlbHkgZnVydGhlci4KLSAgICBpZiB0ZXN0IC14IC9zYmluL3N5c2N0bDsgdGhlbgotICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAvc2Jpbi9zeXNjdGwgLW4ga2Vybi5hcmdtYXhgCi0gICAgZWxpZiB0ZXN0IC14IC91c3Ivc2Jpbi9zeXNjdGw7IHRoZW4KLSAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gL3Vzci9zYmluL3N5c2N0bCAtbiBrZXJuLmFyZ21heGAKLSAgICBlbHNlCi0gICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49NjU1MzYJIyB1c2FibGUgZGVmYXVsdCBmb3IgYWxsIEJTRHMKLSAgICBmaQotICAgICMgQW5kIGFkZCBhIHNhZmV0eSB6b25lCi0gICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gNGAKLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcKiAzYAotICAgIDs7Ci0KLSAgaW50ZXJpeCopCi0gICAgIyBXZSBrbm93IHRoZSB2YWx1ZSAyNjIxNDQgYW5kIGhhcmRjb2RlIGl0IHdpdGggYSBzYWZldHkgem9uZSAobGlrZSBCU0QpCi0gICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTE5NjYwOAotICAgIDs7Ci0KLSAgb3NmKikKLSAgICAjIERyLiBIYW5zIEVra2VoYXJkIFBsZXNzZXIgcmVwb3J0cyBzZWVpbmcgYSBrZXJuZWwgcGFuaWMgcnVubmluZyBjb25maWd1cmUKLSAgICAjIGR1ZSB0byB0aGlzIHRlc3Qgd2hlbiBleGVjX2Rpc2FibGVfYXJnX2xpbWl0IGlzIDEgb24gVHJ1NjQuIEl0IGlzIG5vdAotICAgICMgbmljZSB0byBjYXVzZSBrZXJuZWwgcGFuaWNzIHNvIGxldHMgYXZvaWQgdGhlIGxvb3AgYmVsb3cuCi0gICAgIyBGaXJzdCBzZXQgYSByZWFzb25hYmxlIGRlZmF1bHQuCi0gICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTE2Mzg0Ci0gICAgIwotICAgIGlmIHRlc3QgLXggL3NiaW4vc3lzY29uZmlnOyB0aGVuCi0gICAgICBjYXNlIGAvc2Jpbi9zeXNjb25maWcgLXEgcHJvYyBleGVjX2Rpc2FibGVfYXJnX2xpbWl0YCBpbgotICAgICAgICAqMSopIGx0X2N2X3N5c19tYXhfY21kX2xlbj0tMSA7OwotICAgICAgZXNhYwotICAgIGZpCi0gICAgOzsKLSAgc2NvMy4ydjUqKQotICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0xMDI0MDAKLSAgICA7OwotICBzeXN2NSogfCBzY281djYqIHwgc3lzdjQuMnV3MiopCi0gICAga2FyZ21heD1gZ3JlcCBBUkdfTUFYIC9ldGMvY29uZi9jZi5kL3N0dW5lIDI+L2Rldi9udWxsYAotICAgIGlmIHRlc3QgLW4gIiRrYXJnbWF4IjsgdGhlbgotICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBlY2hvICRrYXJnbWF4IHwgc2VkICdzLy4qW1sgCV1dLy8nYAotICAgIGVsc2UKLSAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0zMjc2OAotICAgIGZpCi0gICAgOzsKLSAgKikKLSAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YChnZXRjb25mIEFSR19NQVgpIDI+IC9kZXYvbnVsbGAKLSAgICBpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgotICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gNGAKLSAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwqIDNgCi0gICAgZWxzZQotICAgICAgU0hFTEw9JHtTSEVMTC0ke0NPTkZJR19TSEVMTC0vYmluL3NofX0KLSAgICAgIHdoaWxlICh0ZXN0ICJYImAkU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8gIlgkdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKLQkgICAgICAgPSAiWFgkdGVzdHN0cmluZyIpID4vZGV2L251bGwgMj4mMSAmJgotCSAgICAgIG5ld19yZXN1bHQ9YGV4cHIgIlgkdGVzdHN0cmluZyIgOiAiLioiIDI+JjFgICYmCi0JICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPSRuZXdfcmVzdWx0ICYmCi0JICAgICAgdGVzdCAkaSAhPSAxNyAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCi0gICAgICBkbwotICAgICAgICBpPWBleHByICRpICsgMWAKLSAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCi0gICAgICBkb25lCi0gICAgICB0ZXN0c3RyaW5nPQotICAgICAgIyBBZGQgYSBzaWduaWZpY2FudCBzYWZldHkgZmFjdG9yIGJlY2F1c2UgQysrIGNvbXBpbGVycyBjYW4gdGFjayBvbiBtYXNzaXZlCi0gICAgICAjIGFtb3VudHMgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUgbGlua2VyLgotICAgICAgIyBJdCBhcHBlYXJzIGFzIHRob3VnaCAxLzIgaXMgYSB1c2FibGUgdmFsdWUuCi0gICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyAyYAotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotXSkKLWlmIHRlc3QgLW4gJGx0X2N2X3N5c19tYXhfY21kX2xlbiA7IHRoZW4KLSAgQUNfTVNHX1JFU1VMVCgkbHRfY3Zfc3lzX21heF9jbWRfbGVuKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vbmUpCi1maQotXSkjIEFDX0xJQlRPT0xfU1lTX01BWF9DTURfTEVOCi0KLQotIyBfTFRfQUNfQ0hFQ0tfRExGQ04KLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX0NIRUNLX0RMRkNOXSwKLVtBQ19DSEVDS19IRUFERVJTKGRsZmNuLmgpZG5sCi1dKSMgX0xUX0FDX0NIRUNLX0RMRkNOCi0KLQotIyBfTFRfQUNfVFJZX0RMT1BFTl9TRUxGIChBQ1RJT04tSUYtVFJVRSwgQUNUSU9OLUlGLVRSVUUtVy1VU0NPUkUsCi0jICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNUSU9OLUlGLUZBTFNFLCBBQ1RJT04tSUYtQ1JPU1MtQ09NUElMSU5HKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtfTFRfQUNfVFJZX0RMT1BFTl9TRUxGXSwKLVtBQ19SRVFVSVJFKFtfTFRfQUNfQ0hFQ0tfRExGQ05dKWRubAotaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgotICBbJDRdCi1lbHNlCi0gIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgotI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0KLSNpZiBIQVZFX0RMRkNOX0gKLSNpbmNsdWRlIDxkbGZjbi5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaWZkZWYgUlRMRF9HTE9CQUwKLSMgIGRlZmluZSBMVF9ETEdMT0JBTAkJUlRMRF9HTE9CQUwKLSNlbHNlCi0jICBpZmRlZiBETF9HTE9CQUwKLSMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQlETF9HTE9CQUwKLSMgIGVsc2UKLSMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQkwCi0jICBlbmRpZgotI2VuZGlmCi0KLS8qIFdlIG1heSBoYXZlIHRvIGRlZmluZSBMVF9ETExBWllfT1JfTk9XIGluIHRoZSBjb21tYW5kIGxpbmUgaWYgd2UKLSAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsgaW4gc29tZSBwbGF0Zm9ybS4gKi8KLSNpZm5kZWYgTFRfRExMQVpZX09SX05PVwotIyAgaWZkZWYgUlRMRF9MQVpZCi0jICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlSVExEX0xBWlkKLSMgIGVsc2UKLSMgICAgaWZkZWYgRExfTEFaWQotIyAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlETF9MQVpZCi0jICAgIGVsc2UKLSMgICAgICBpZmRlZiBSVExEX05PVwotIyAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJUlRMRF9OT1cKLSMgICAgICBlbHNlCi0jICAgICAgICBpZmRlZiBETF9OT1cKLSMgICAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJRExfTk9XCi0jICAgICAgICBlbHNlCi0jICAgICAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCTAKLSMgICAgICAgIGVuZGlmCi0jICAgICAgZW5kaWYKLSMgICAgZW5kaWYKLSMgIGVuZGlmCi0jZW5kaWYKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHZvaWQgZXhpdCAoaW50KTsKLSNlbmRpZgotCi12b2lkIGZub3JkKCkgeyBpbnQgaT00Mjt9Ci1pbnQgbWFpbiAoKQotewotICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLSAgaW50IHN0YXR1cyA9ICRsdF9kbHVua25vd247Ci0KLSAgaWYgKHNlbGYpCi0gICAgewotICAgICAgaWYgKGRsc3ltIChzZWxmLCJmbm9yZCIpKSAgICAgICBzdGF0dXMgPSAkbHRfZGxub191c2NvcmU7Ci0gICAgICBlbHNlIGlmIChkbHN5bSggc2VsZiwiX2Zub3JkIikpIHN0YXR1cyA9ICRsdF9kbG5lZWRfdXNjb3JlOwotICAgICAgLyogZGxjbG9zZSAoc2VsZik7ICovCi0gICAgfQotICBlbHNlCi0gICAgcHV0cyAoZGxlcnJvciAoKSk7Ci0KLSAgICBleGl0IChzdGF0dXMpOwotfV0KLUVPRgotICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCi0gICAgKC4vY29uZnRlc3Q7IGV4aXQ7ICkgPiZBU19NRVNTQUdFX0xPR19GRCAyPi9kZXYvbnVsbAotICAgIGx0X3N0YXR1cz0kPwotICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KLSAgICAgIHgkbHRfZGxub191c2NvcmUpICQxIDs7Ci0gICAgICB4JGx0X2RsbmVlZF91c2NvcmUpICQyIDs7Ci0gICAgICB4JGx0X2RsdW5rbm93bnx4KikgJDMgOzsKLSAgICBlc2FjCi0gIGVsc2UgOgotICAgICMgY29tcGlsYXRpb24gZmFpbGVkCi0gICAgJDMKLSAgZmkKLWZpCi1ybSAtZnIgY29uZnRlc3QqCi1dKSMgX0xUX0FDX1RSWV9ETE9QRU5fU0VMRgotCi0KLSMgQUNfTElCVE9PTF9ETE9QRU5fU0VMRgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5fU0VMRl0sCi1bQUNfUkVRVUlSRShbX0xUX0FDX0NIRUNLX0RMRkNOXSlkbmwKLWlmIHRlc3QgIngkZW5hYmxlX2Rsb3BlbiIgIT0geHllczsgdGhlbgotICBlbmFibGVfZGxvcGVuPXVua25vd24KLSAgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24KLSAgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duCi1lbHNlCi0gIGx0X2N2X2Rsb3Blbj1ubwotICBsdF9jdl9kbG9wZW5fbGlicz0KLQotICBjYXNlICRob3N0X29zIGluCi0gIGJlb3MqKQotICAgIGx0X2N2X2Rsb3Blbj0ibG9hZF9hZGRfb24iCi0gICAgbHRfY3ZfZGxvcGVuX2xpYnM9Ci0gICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCi0gICAgOzsKLQotICBtaW5ndyogfCBwdzMyKikKLSAgICBsdF9jdl9kbG9wZW49IkxvYWRMaWJyYXJ5IgotICAgIGx0X2N2X2Rsb3Blbl9saWJzPQotICAgOzsKLQotICBjeWd3aW4qKQotICAgIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIgotICAgIGx0X2N2X2Rsb3Blbl9saWJzPQotICAgOzsKLQotICBkYXJ3aW4qKQotICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAotICAgIEFDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKLQkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLFsKLSAgICBsdF9jdl9kbG9wZW49ImR5bGQiCi0gICAgbHRfY3ZfZGxvcGVuX2xpYnM9Ci0gICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCi0gICAgXSkKLSAgIDs7Ci0KLSAgKikKLSAgICBBQ19DSEVDS19GVU5DKFtzaGxfbG9hZF0sCi0JICBbbHRfY3ZfZGxvcGVuPSJzaGxfbG9hZCJdLAotICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW3NobF9sb2FkXSwKLQkgICAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCJdLAotCVtBQ19DSEVDS19GVU5DKFtkbG9wZW5dLAotCSAgICAgIFtsdF9jdl9kbG9wZW49ImRsb3BlbiJdLAotCSAgW0FDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKLQkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLAotCSAgICBbQUNfQ0hFQ0tfTElCKFtzdmxkXSwgW2Rsb3Blbl0sCi0JCSAgW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIl0sCi0JICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW2RsZF9saW5rXSwKLQkJICAgIFtsdF9jdl9kbG9wZW49ImRsZF9saW5rIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiXSkKLQkgICAgICBdKQotCSAgICBdKQotCSAgXSkKLQldKQotICAgICAgXSkKLSAgICA7OwotICBlc2FjCi0KLSAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW4iICE9IHhubzsgdGhlbgotICAgIGVuYWJsZV9kbG9wZW49eWVzCi0gIGVsc2UKLSAgICBlbmFibGVfZGxvcGVuPW5vCi0gIGZpCi0KLSAgY2FzZSAkbHRfY3ZfZGxvcGVuIGluCi0gIGRsb3BlbikKLSAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gICAgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4eWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURIQVZFX0RMRkNOX0giCi0KLSAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKLQotICAgIHNhdmVfTElCUz0iJExJQlMiCi0gICAgTElCUz0iJGx0X2N2X2Rsb3Blbl9saWJzICRMSUJTIgotCi0gICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYSBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmXSwKLQkgIGx0X2N2X2Rsb3Blbl9zZWxmLCBbZG5sCi0JICBfTFRfQUNfVFJZX0RMT1BFTl9TRUxGKAotCSAgICBsdF9jdl9kbG9wZW5fc2VsZj15ZXMsIGx0X2N2X2Rsb3Blbl9zZWxmPXllcywKLQkgICAgbHRfY3ZfZGxvcGVuX3NlbGY9bm8sIGx0X2N2X2Rsb3Blbl9zZWxmPWNyb3NzKQotICAgIF0pCi0KLSAgICBpZiB0ZXN0ICJ4JGx0X2N2X2Rsb3Blbl9zZWxmIiA9IHh5ZXM7IHRoZW4KLSAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgotICAgICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgYSBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtIGNhbiBkbG9wZW4gaXRzZWxmXSwKLSAgICAJICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMsIFtkbmwKLQkgIF9MVF9BQ19UUllfRExPUEVOX1NFTEYoCi0JICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsCi0JICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1ubywgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1jcm9zcykKLSAgICAgIF0pCi0gICAgZmkKLQotICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLSAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotICAgIExJQlM9IiRzYXZlX0xJQlMiCi0gICAgOzsKLSAgZXNhYwotCi0gIGNhc2UgJGx0X2N2X2Rsb3Blbl9zZWxmIGluCi0gIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmPSRsdF9jdl9kbG9wZW5fc2VsZiA7OwotICAqKSBlbmFibGVfZGxvcGVuX3NlbGY9dW5rbm93biA7OwotICBlc2FjCi0KLSAgY2FzZSAkbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIGluCi0gIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0kbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIDs7Ci0gICopIGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9dW5rbm93biA7OwotICBlc2FjCi1maQotXSkjIEFDX0xJQlRPT0xfRExPUEVOX1NFTEYKLQotCi0jIEFDX0xJQlRPT0xfUFJPR19DQ19DX08oW1RBR05BTUVdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgQ2hlY2sgdG8gc2VlIGlmIG9wdGlvbnMgLWMgYW5kIC1vIGFyZSBzaW11bHRhbmVvdXNseSBzdXBwb3J0ZWQgYnkgY29tcGlsZXIKLUFDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfQ0NfQ19PXSwKLVtBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1NFRF0pZG5sCi1BQ19SRVFVSVJFKFtfTFRfQUNfU1lTX0NPTVBJTEVSXSlkbmwKLUFDX0NBQ0hFX0NIRUNLKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWMgLW8gZmlsZS4kYWNfb2JqZXh0XSwKLSAgW19MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKV0sCi0gIFtfTFRfQUNfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSk9bm8KLSAgICRybSAtciBjb25mdGVzdCAyPi9kZXYvbnVsbAotICAgbWtkaXIgY29uZnRlc3QKLSAgIGNkIGNvbmZ0ZXN0Ci0gICBta2RpciBvdXQKLSAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAotCi0gICBsdF9jb21waWxlcl9mbGFnPSItbyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQiCi0gICAjIEluc2VydCB0aGUgb3B0aW9uIGVpdGhlciAoMSkgYWZ0ZXIgdGhlIGxhc3QgKkZMQUdTIHZhcmlhYmxlLCBvcgotICAgIyAoMikgYmVmb3JlIGEgd29yZCBjb250YWluaW5nICJjb25mdGVzdC4iLCBvciAoMykgYXQgdGhlIGVuZC4KLSAgICMgTm90ZSB0aGF0ICRhY19jb21waWxlIGl0c2VsZiBkb2VzIG5vdCBjb250YWluIGJhY2tzbGFzaGVzIGFuZCBiZWdpbnMKLSAgICMgd2l0aCBhIGRvbGxhciBzaWduIChub3QgYSBoeXBoZW4pLCBzbyB0aGUgZWNobyBzaG91bGQgd29yayBjb3JyZWN0bHkuCi0gICBsdF9jb21waWxlPWBlY2hvICIkYWNfY29tcGlsZSIgfCAkU0VEIFwKLSAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKLSAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAotICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKLSAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCi0gICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+b3V0L2NvbmZ0ZXN0LmVycikKLSAgIGFjX3N0YXR1cz0kPwotICAgY2F0IG91dC9jb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgZWNobyAiJGFzX21lOl9fb2xpbmVfXzogXCQ/ID0gJGFjX3N0YXR1cyIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgaWYgKGV4aXQgJGFjX3N0YXR1cykgJiYgdGVzdCAtcyBvdXQvY29uZnRlc3QyLiRhY19vYmpleHQKLSAgIHRoZW4KLSAgICAgIyBUaGUgY29tcGlsZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKLSAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCi0gICAgICRlY2hvICJYJF9sdF9jb21waWxlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gb3V0L2NvbmZ0ZXN0LmV4cAotICAgICAkU0VEICcvXiQvZDsgL14gKisvZCcgb3V0L2NvbmZ0ZXN0LmVyciA+b3V0L2NvbmZ0ZXN0LmVyMgotICAgICBpZiB0ZXN0ICEgLXMgb3V0L2NvbmZ0ZXN0LmVyMiB8fCBkaWZmIG91dC9jb25mdGVzdC5leHAgb3V0L2NvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCi0gICAgICAgX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPXllcwotICAgICBmaQotICAgZmkKLSAgIGNobW9kIHUrdyAuIDI+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAkcm0gY29uZnRlc3QqCi0gICAjIFNHSSBDKysgY29tcGlsZXIgd2lsbCBjcmVhdGUgZGlyZWN0b3J5IG91dC9paV9maWxlcy8gZm9yCi0gICAjIHRlbXBsYXRlIGluc3RhbnRpYXRpb24KLSAgIHRlc3QgLWQgb3V0L2lpX2ZpbGVzICYmICRybSBvdXQvaWlfZmlsZXMvKiAmJiBybWRpciBvdXQvaWlfZmlsZXMKLSAgICRybSBvdXQvKiAmJiBybWRpciBvdXQKLSAgIGNkIC4uCi0gICBybWRpciBjb25mdGVzdAotICAgJHJtIGNvbmZ0ZXN0KgotXSkKLV0pIyBBQ19MSUJUT09MX1BST0dfQ0NfQ19PCi0KLQotIyBBQ19MSUJUT09MX1NZU19IQVJEX0xJTktfTE9DS1MoW1RBR05BTUVdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB0byBzZWUgaWYgd2UgY2FuIGRvIGhhcmQgbGlua3MgdG8gbG9jayBzb21lIGZpbGVzIGlmIG5lZWRlZAotQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLU10sCi1bQUNfUkVRVUlSRShbX0xUX0FDX0xPQ0tdKWRubAotCi1oYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCi1pZiB0ZXN0ICIkX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpIiA9IG5vICYmIHRlc3QgIiRuZWVkX2xvY2tzIiAhPSBubzsgdGhlbgotICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9mIG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKLSAgQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3NdKQotICBoYXJkX2xpbmtzPXllcwotICAkcm0gY29uZnRlc3QqCi0gIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPi9kZXYvbnVsbCAmJiBoYXJkX2xpbmtzPW5vCi0gIHRvdWNoIGNvbmZ0ZXN0LmEKLSAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+JjUgfHwgaGFyZF9saW5rcz1ubwotICBsbiBjb25mdGVzdC5hIGNvbmZ0ZXN0LmIgMj4vZGV2L251bGwgJiYgaGFyZF9saW5rcz1ubwotICBBQ19NU0dfUkVTVUxUKFskaGFyZF9saW5rc10pCi0gIGlmIHRlc3QgIiRoYXJkX2xpbmtzIiA9IG5vOyB0aGVuCi0gICAgQUNfTVNHX1dBUk4oW2AkQ0MnIGRvZXMgbm90IHN1cHBvcnQgYC1jIC1vJywgc28gYG1ha2UgLWonIG1heSBiZSB1bnNhZmVdKQotICAgIG5lZWRfbG9ja3M9d2FybgotICBmaQotZWxzZQotICBuZWVkX2xvY2tzPW5vCi1maQotXSkjIEFDX0xJQlRPT0xfU1lTX0hBUkRfTElOS19MT0NLUwotCi0KLSMgQUNfTElCVE9PTF9PQkpESVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtBQ19MSUJUT09MX09CSkRJUl0sCi1bQUNfQ0FDSEVfQ0hFQ0soW2ZvciBvYmpkaXJdLCBbbHRfY3Zfb2JqZGlyXSwKLVtybSAtZiAubGlicyAyPi9kZXYvbnVsbAotbWtkaXIgLmxpYnMgMj4vZGV2L251bGwKLWlmIHRlc3QgLWQgLmxpYnM7IHRoZW4KLSAgbHRfY3Zfb2JqZGlyPS5saWJzCi1lbHNlCi0gICMgTVMtRE9TIGRvZXMgbm90IGFsbG93IGZpbGVuYW1lcyB0aGF0IGJlZ2luIHdpdGggYSBkb3QuCi0gIGx0X2N2X29iamRpcj1fbGlicwotZmkKLXJtZGlyIC5saWJzIDI+L2Rldi9udWxsXSkKLW9iamRpcj0kbHRfY3Zfb2JqZGlyCi1dKSMgQUNfTElCVE9PTF9PQkpESVIKLQotCi0jIEFDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRIKFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayBoYXJkY29kaW5nIGF0dHJpYnV0ZXMuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEhdLAotW0FDX01TR19DSEVDS0lORyhbaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtc10pCi1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPQotaWYgdGVzdCAtbiAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIiB8fCBcCi0gICB0ZXN0IC1uICIkX0xUX0FDX1RBR1ZBUihydW5wYXRoX3ZhciwgJDEpIiB8fCBcCi0gICB0ZXN0ICJYJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSkiID0gIlh5ZXMiIDsgdGhlbgotCi0gICMgV2UgY2FuIGhhcmRjb2RlIG5vbi1leGlzdGFudCBkaXJlY3Rvcmllcy4KLSAgaWYgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSkiICE9IG5vICYmCi0gICAgICMgSWYgdGhlIG9ubHkgbWVjaGFuaXNtIHRvIGF2b2lkIGhhcmRjb2RpbmcgaXMgc2hsaWJwYXRoX3Zhciwgd2UKLSAgICAgIyBoYXZlIHRvIHJlbGluaywgb3RoZXJ3aXNlIHdlIG1pZ2h0IGxpbmsgd2l0aCBhbiBpbnN0YWxsZWQgbGlicmFyeQotICAgICAjIHdoZW4gd2Ugc2hvdWxkIGJlIGxpbmtpbmcgd2l0aCBhIHlldC10by1iZS1pbnN0YWxsZWQgb25lCi0gICAgICMjIHRlc3QgIiRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKSIgIT0gbm8gJiYKLSAgICAgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpIiAhPSBubzsgdGhlbgotICAgICMgTGlua2luZyBhbHdheXMgaGFyZGNvZGVzIHRoZSB0ZW1wb3JhcnkgbGlicmFyeSBkaXJlY3RvcnkuCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT1yZWxpbmsKLSAgZWxzZQotICAgICMgV2UgY2FuIGxpbmsgd2l0aG91dCBoYXJkY29kaW5nLCBhbmQgd2UgY2FuIGhhcmRjb2RlIG5vbmV4aXN0aW5nIGRpcnMuCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT1pbW1lZGlhdGUKLSAgZmkKLWVsc2UKLSAgIyBXZSBjYW5ub3QgaGFyZGNvZGUgYW55dGhpbmcsIG9yIGVsc2Ugd2UgY2FuIG9ubHkgaGFyZGNvZGUgZXhpc3RpbmcKLSAgIyBkaXJlY3Rvcmllcy4KLSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT11bnN1cHBvcnRlZAotZmkKLUFDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpXSkKLQotaWYgdGVzdCAiJF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSkiID0gcmVsaW5rOyB0aGVuCi0gICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IHN1cHBvcnRlZAotICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCi1lbGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzIHx8Ci0gICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IG5vOyB0aGVuCi0gICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IG5lY2Vzc2FyeQotICBlbmFibGVfZmFzdF9pbnN0YWxsPW5lZWRsZXNzCi1maQotXSkjIEFDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRICi0KLQotIyBBQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9TWVNfTElCX1NUUklQXSwKLVtzdHJpcGxpYj0KLW9sZF9zdHJpcGxpYj0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciBzdHJpcHBpbmcgbGlicmFyaWVzIGlzIHBvc3NpYmxlXSkKLWlmIHRlc3QgLW4gIiRTVFJJUCIgJiYgJFNUUklQIC1WIDI+JjEgfCBncmVwICJHTlUgc3RyaXAiID4vZGV2L251bGw7IHRoZW4KLSAgdGVzdCAteiAiJG9sZF9zdHJpcGxpYiIgJiYgb2xkX3N0cmlwbGliPSIkU1RSSVAgLS1zdHJpcC1kZWJ1ZyIKLSAgdGVzdCAteiAiJHN0cmlwbGliIiAmJiBzdHJpcGxpYj0iJFNUUklQIC0tc3RyaXAtdW5uZWVkZWQiCi0gIEFDX01TR19SRVNVTFQoW3llc10pCi1lbHNlCi0jIEZJWE1FIC0gaW5zZXJ0IHNvbWUgcmVhbCB0ZXN0cywgaG9zdF9vcyBpc24ndCByZWFsbHkgZ29vZCBlbm91Z2gKLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgZGFyd2luKikKLSAgICAgICBpZiB0ZXN0IC1uICIkU1RSSVAiIDsgdGhlbgotICAgICAgICAgc3RyaXBsaWI9IiRTVFJJUCAteCIKLSAgICAgICAgIG9sZF9zdHJpcGxpYj0iJFNUUklQIC1TIgotICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgICBlbHNlCi0gIEFDX01TR19SRVNVTFQoW25vXSkKLWZpCi0gICAgICAgOzsKLSAgICopCi0gIEFDX01TR19SRVNVTFQoW25vXSkKLSAgICA7OwotICBlc2FjCi1maQotXSkjIEFDX0xJQlRPT0xfU1lTX0xJQl9TVFJJUAotCi0KLSMgQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUE9SVE1FIEZpbGwgaW4geW91ciBsZC5zbyBjaGFyYWN0ZXJpc3RpY3MKLUFDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUl0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotQUNfTVNHX0NIRUNLSU5HKFtkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3NdKQotbGlicmFyeV9uYW1lc19zcGVjPQotbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKLXNvbmFtZV9zcGVjPQotc2hyZXh0X2NtZHM9Ii5zbyIKLXBvc3RpbnN0YWxsX2NtZHM9Ci1wb3N0dW5pbnN0YWxsX2NtZHM9Ci1maW5pc2hfY21kcz0KLWZpbmlzaF9ldmFsPQotc2hsaWJwYXRoX3Zhcj0KLXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD11bmtub3duCi12ZXJzaW9uX3R5cGU9bm9uZQotZHluYW1pY19saW5rZXI9IiRob3N0X29zIGxkLnNvIgotc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIiCi1tNF9pZigkMSxbXSxbCi1pZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICBjYXNlICRob3N0X29zIGluCi0gICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwotICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7Ci0gIGVzYWMKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgaWYgZWNobyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgZ3JlcCAnOycgPi9kZXYvbnVsbCA7IHRoZW4KLSAgICAjIGlmIHRoZSBwYXRoIGNvbnRhaW5zICI7IiB0aGVuIHdlIGFzc3VtZSBpdCB0byBiZSB0aGUgc2VwYXJhdG9yCi0gICAgIyBvdGhlcndpc2UgZGVmYXVsdCB0byB0aGUgc3RhbmRhcmQgcGF0aCBzZXBhcmF0b3IgKGkuZS4gIjoiKSAtIGl0IGlzCi0gICAgIyBhc3N1bWVkIHRoYXQgbm8gcGFydCBvZiBhIG5vcm1hbCBwYXRobmFtZSBjb250YWlucyAiOyIgYnV0IHRoYXQgc2hvdWxkCi0gICAgIyBva2F5IGluIHRoZSByZWFsIHdvcmxkIHdoZXJlICI7IiBpbiBkaXJwYXRocyBpcyBpdHNlbGYgcHJvYmxlbWF0aWMuCi0gICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0gIGVsc2UKLSAgICBsdF9zZWFyY2hfcGF0aF9zcGVjPWBlY2hvICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSAgZmkKLSAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKLSAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCi0gIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQotICBsdF9tdWx0aV9vc19kaXI9YCRDQyAkQ1BQRkxBR1MgJENGTEFHUyAkTERGTEFHUyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IDI+L2Rldi9udWxsYAotICBmb3IgbHRfc3lzX3BhdGggaW4gJGx0X3NlYXJjaF9wYXRoX3NwZWM7IGRvCi0gICAgaWYgdGVzdCAtZCAiJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCi0gICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aC8kbHRfbXVsdGlfb3NfZGlyIgotICAgIGVsc2UKLSAgICAgIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCIgJiYgXAotCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgotICAgIGZpCi0gIGRvbmUKLSAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgfCBhd2sgJwotQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewotICBsdF9mb289IiI7Ci0gIGx0X2NvdW50PTA7Ci0gIGZvciAobHRfaSA9IE5GOyBsdF9pID4gMDsgbHRfaS0tKSB7Ci0gICAgaWYgKCRsdF9pICE9ICIiICYmICRsdF9pICE9ICIuIikgewotICAgICAgaWYgKCRsdF9pID09ICIuLiIpIHsKLSAgICAgICAgbHRfY291bnQrKzsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmIChsdF9jb3VudCA9PSAwKSB7Ci0gICAgICAgICAgbHRfZm9vPSIvIiAkbHRfaSBsdF9mb287Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgbHRfY291bnQtLTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLSAgfQotICBpZiAobHRfZm9vICE9ICIiKSB7IGx0X2ZyZXFbW2x0X2Zvb11dKys7IH0KLSAgaWYgKGx0X2ZyZXFbW2x0X2Zvb11dID09IDEpIHsgcHJpbnQgbHRfZm9vOyB9Ci19J2AKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBlY2hvICRsdF9zZWFyY2hfcGF0aF9zcGVjYAotZWxzZQotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIiCi1maV0pCi1uZWVkX2xpYl9wcmVmaXg9dW5rbm93bgotaGFyZGNvZGVfaW50b19saWJzPW5vCi0KLSMgd2hlbiB5b3Ugc2V0IG5lZWRfdmVyc2lvbiB0byBubywgbWFrZSBzdXJlIGl0IGRvZXMgbm90IGNhdXNlIC1zZXRfdmVyc2lvbgotIyBmbGFncyB0byBiZSBsZWZ0IHdpdGhvdXQgYXJndW1lbnRzCi1uZWVkX3ZlcnNpb249dW5rbm93bgotCi1jYXNlICRob3N0X29zIGluCi1haXgzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZS5hJwotICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKLQotICAjIEFJWCAzIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIHdlIGFwcGVuZCBhIG1ham9yIHZlcnNpb24gdG8gdGhlIG5hbWUuCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIDs7Ci0KLWFpeFtbNC05XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gICAgIyBBSVggNSBzdXBwb3J0cyBJQTY0Ci0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgZWxzZQotICAgICMgV2l0aCBHQ0MgdXAgdG8gMi45NS54LCBjb2xsZWN0MiB3b3VsZCBjcmVhdGUgYW4gaW1wb3J0IGZpbGUKLSAgICAjIGZvciBkZXBlbmRlbmNlIGxpYnJhcmllcy4gIFRoZSBpbXBvcnQgZmlsZSB3b3VsZCBzdGFydCB3aXRoCi0gICAgIyB0aGUgbGluZSBgIyEgLicuICBUaGlzIHdvdWxkIGNhdXNlIHRoZSBnZW5lcmF0ZWQgbGlicmFyeSB0bwotICAgICMgZGVwZW5kIG9uIGAuJywgYWx3YXlzIGFuIGludmFsaWQgbGlicmFyeS4gIFRoaXMgd2FzIGZpeGVkIGluCi0gICAgIyBkZXZlbG9wbWVudCBzbmFwc2hvdHMgb2YgR0NDIHByaW9yIHRvIDMuMC4KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBhaXg0IHwgYWl4NC5bWzAxXV0gfCBhaXg0LltbMDFdXS4qKQotICAgICAgaWYgeyBlY2hvICcjaWYgX19HTlVDX18gPiAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDk3KScKLQkgICBlY2hvICcgeWVzICcKLQkgICBlY2hvICcjZW5kaWYnOyB9IHwgJHtDQ30gLUUgLSB8IGdyZXAgeWVzID4gL2Rldi9udWxsOyB0aGVuCi0JOgotICAgICAgZWxzZQotCWNhbl9idWlsZF9zaGFyZWQ9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGVzYWMKLSAgICAjIEFJWCAob24gUG93ZXIqKSBoYXMgbm8gdmVyc2lvbmluZyBzdXBwb3J0LCBzbyBjdXJyZW50bHkgd2UgY2FuIG5vdCBoYXJkY29kZSBjb3JyZWN0Ci0gICAgIyBzb25hbWUgaW50byBleGVjdXRhYmxlLiBQcm9iYWJseSB3ZSBjYW4gYWRkIHZlcnNpb25pbmcgc3VwcG9ydCB0bwotICAgICMgY29sbGVjdDIsIHNvIGFkZGl0aW9uYWwgbGlua3MgY2FuIGJlIHVzZWZ1bCBpbiBmdXR1cmUuCi0gICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0gICAgICAjIElmIHVzaW5nIHJ1biB0aW1lIGxpbmtpbmcgKG9uIEFJWCA0LjIgb3IgbGF0ZXIpIHVzZSBsaWI8bmFtZT4uc28KLSAgICAgICMgaW5zdGVhZCBvZiBsaWI8bmFtZT4uYSB0byBsZXQgcGVvcGxlIGtub3cgdGhhdCB0aGVzZSBhcmUgbm90Ci0gICAgICAjIHR5cGljYWwgQUlYIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBlbHNlCi0gICAgICAjIFdlIHByZXNlcnZlIC5hIGFzIGV4dGVuc2lvbiBmb3Igc2hhcmVkIGxpYnJhcmllcyB0aHJvdWdoIEFJWDQuMgotICAgICAgIyBhbmQgbGF0ZXIgd2hlbiB3ZSBhcmUgbm90IGRvaW5nIHJ1biB0aW1lIGxpbmtpbmcuCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9LmEgJGxpYm5hbWUuYScKLSAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgZmkKLSAgICBzaGxpYnBhdGhfdmFyPUxJQlBBVEgKLSAgZmkKLSAgOzsKLQotYW1pZ2FvcyopCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCi0gICMgQ3JlYXRlICR7bGlibmFtZX1faXhsaWJyYXJ5LmEgZW50cmllcyBpbiAvc3lzL2xpYnMuCi0gIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkcm0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCi0gIDs7Ci0KLWJlb3MqKQotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCi0gIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gIDs7Ci0KLWJzZGlbWzQ1XV0qKQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAkbGliZGlyJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii9zaGxpYiAvdXNyL2xpYiAvdXNyL1gxMS9saWIgL3Vzci9jb250cmliL2xpYiAvbGliIC91c3IvbG9jYWwvbGliIgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvbG9jYWwvbGliIgotICAjIHRoZSBkZWZhdWx0IGxkLnNvLmNvbmYgYWxzbyBjb250YWlucyAvdXNyL2NvbnRyaWIvbGliIGFuZAotICAjIC91c3IvWDExUjYvbGliICgvdXNyL1gxMSBpcyBhIGxpbmsgdG8gL3Vzci9YMTFSNiksIGJ1dCBsZXQgdXMgYWxsb3cKLSAgIyBsaWJ0b29sIHRvIGhhcmQtY29kZSB0aGVzZSBpbnRvIHByb2dyYW1zCi0gIDs7Ci0KLWN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSAgdmVyc2lvbl90eXBlPXdpbmRvd3MKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gIG5lZWRfdmVyc2lvbj1ubwotICBuZWVkX2xpYl9wcmVmaXg9bm8KLQotICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7ZWNobyBcJGRsbmFtZSdcJydgfgotICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0gICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+Ci0gICAgICBjaG1vZCBhK3ggXCRkbGRpci8kZGxuYW1lJwotICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0gICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotICAgICAgICRybSBcJGRscGF0aCcKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgY3lnd2luKikKLSAgICAgICMgQ3lnd2luIERMTHMgdXNlICdjeWcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwotICAgICAgc29uYW1lX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIC9saWIvdzMyYXBpIC9saWIgL3Vzci9sb2NhbC9saWIiCi0gICAgICA7OwotICAgIG1pbmd3KikKLSAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4Ci0gICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGdyZXAgIl5saWJyYXJpZXM6IiB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgInMsPS8sLyxnImAKLSAgICAgIGlmIGVjaG8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgW2dyZXAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsXTsgdGhlbgotICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRIIHByaW50ZWQgYnkKLSAgICAgICAgIyBtaW5ndyBnY2MsIGJ1dCB3ZSBhcmUgcnVubmluZyBvbiBDeWd3aW4uIEdjYyBwcmludHMgaXRzIHNlYXJjaAotICAgICAgICAjIHBhdGggd2l0aCA7IHNlcGFyYXRvcnMsIGFuZCB3aXRoIGRyaXZlIGxldHRlcnMuIFdlIGNhbiBoYW5kbGUgdGhlCi0gICAgICAgICMgZHJpdmUgbGV0dGVycyAoY3lnd2luIGZpbGV1dGlscyB1bmRlcnN0YW5kcyB0aGVtKSwgc28gbGVhdmUgdGhlbSwKLSAgICAgICAgIyBlc3BlY2lhbGx5IGFzIHdlIG1pZ2h0IHBhc3MgZmlsZXMgZm91bmQgdGhlcmUgdG8gYSBtaW5ndyBvYmpkdW1wLAotICAgICAgICAjIHdoaWNoIHdvdWxkbid0IHVuZGVyc3RhbmQgYSBjeWd3aW5pZmllZCBwYXRoLiBBaGguCi0gICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gZWNobyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSAgICAgIGVsc2UKLSAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBlY2hvICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgcHczMiopCi0gICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgOzsKLSAgICBlc2FjCi0gICAgOzsKLQotICAqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0gICAgOzsKLSAgZXNhYwotICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gIDs7Ci0KLWRhcndpbiogfCByaGFwc29keSopCi0gIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkeWxkIgotICB2ZXJzaW9uX3R5cGU9ZGFyd2luCi0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7dmVyc3VmZml4fSRzaGFyZWRfZXh0ICR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0kc2hhcmVkX2V4dCAke2xpYm5hbWV9JHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQnCi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgc2hsaWJwYXRoX3Zhcj1EWUxEX0xJQlJBUllfUEFUSAotICBzaHJleHRfY21kcz0nYHRlc3QgLiRtb2R1bGUgPSAueWVzICYmIGVjaG8gLnNvIHx8IGVjaG8gLmR5bGliYCcKLSAgbTRfaWYoWyQxXSwgW10sWwotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9sb2NhbC9saWIiXSkgCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvbGliIC91c3IvbGliJwotICA7OwotCi1kZ3V4KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICA7OwotCi1mcmVlYnNkMSopCi0gIGR5bmFtaWNfbGlua2VyPW5vCi0gIDs7Ci0KLWZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgIyBEcmFnb25GbHkgZG9lcyBub3QgaGF2ZSBhb3V0LiAgV2hlbi9pZiB0aGV5IGltcGxlbWVudCBhIG5ldwotICAjIHZlcnNpb25pbmcgbWVjaGFuaXNtLCBhZGp1c3QgdGhpcy4KLSAgaWYgdGVzdCAteCAvdXNyL2Jpbi9vYmpmb3JtYXQ7IHRoZW4KLSAgICBvYmpmb3JtYXQ9YC91c3IvYmluL29iamZvcm1hdGAKLSAgZWxzZQotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBmcmVlYnNkW1sxMjNdXSopIG9iamZvcm1hdD1hb3V0IDs7Ci0gICAgKikgb2JqZm9ybWF0PWVsZiA7OwotICAgIGVzYWMKLSAgZmkKLSAgdmVyc2lvbl90eXBlPWZyZWVic2QtJG9iamZvcm1hdAotICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KLSAgICBmcmVlYnNkLWVsZiopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICAgIG5lZWRfdmVyc2lvbj1ubwotICAgICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICAgICA7OwotICAgIGZyZWVic2QtKikKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JwotICAgICAgbmVlZF92ZXJzaW9uPXllcwotICAgICAgOzsKLSAgZXNhYwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBjYXNlICRob3N0X29zIGluCi0gIGZyZWVic2QyKikKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gICAgOzsKLSAgZnJlZWJzZDMuW1swMV1dKiB8IGZyZWVic2RlbGYzLltbMDFdXSopCi0gICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgICA7OwotICBmcmVlYnNkMy5bWzItOV1dKiB8IGZyZWVic2RlbGYzLltbMi05XV0qIHwgXAotICBmcmVlYnNkNC5bWzAtNV1dIHwgZnJlZWJzZGVsZjQuW1swLTVdXSB8IGZyZWVic2Q0LjEuMSB8IGZyZWVic2RlbGY0LjEuMSkKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLSAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICAgOzsKLSAgKikgIyBmcm9tIDQuNiBvbiwgYW5kIERyYWdvbkZseQotICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1nbnUqKQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHttYWpvcn0gJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgOzsKLQotaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0gICMgR2l2ZSBhIHNvbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBtYWpvciB2ZXJzaW9uIHNvIHRoYXQgZGxkLnNsIHJlZnVzZXMgdG8KLSAgIyBsaW5rIGFnYWluc3Qgb3RoZXIgdmVyc2lvbnMuCi0gIHZlcnNpb25fdHlwZT1zdW5vcwotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGNhc2UgJGhvc3RfY3B1IGluCi0gIGlhNjQqKQotICAgIHNocmV4dF9jbWRzPScuc28nCi0gICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc28iCi0gICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgICBpZiB0ZXN0ICJYJEhQVVhfSUE2NF9NT0RFIiA9IFgzMjsgdGhlbgotICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYi9ocHV4MzIgL3Vzci9sb2NhbC9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliIgotICAgIGVsc2UKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDY0IC91c3IvbG9jYWwvbGliL2hwdXg2NCIKLSAgICBmaQotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKLSAgICA7OwotICAgaHBwYSo2NCopCi0gICAgIHNocmV4dF9jbWRzPScuc2wnCi0gICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKLSAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEggIyBIb3cgc2hvdWxkIHdlIGhhbmRsZSBTSExJQl9QQVRICi0gICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMgIyBVbmxlc3MgK25vZW52dmFyIGlzIHNwZWNpZmllZC4KLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvcGEyMF82NCAvdXNyL2Njcy9saWIvcGEyMF82NCIKLSAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwotICAgICA7OwotICAgKikKLSAgICBzaHJleHRfY21kcz0nLnNsJwotICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCi0gICAgc2hsaWJwYXRoX3Zhcj1TSExJQl9QQVRICi0gICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vICMgK3MgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFNITElCX1BBVEgKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgIDs7Ci0gIGVzYWMKLSAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUuCi0gIHBvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDU1NSAkbGliJwotICA7OwotCi1pbnRlcml4W1szLTldXSopCi0gIHZlcnNpb25fdHlwZT1saW51eAotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIGR5bmFtaWNfbGlua2VyPSdJbnRlcml4IDMueCBsZC5zby4xIChQRSwgbGlrZSBFTEYpJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICA7OwotCi1pcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICBjYXNlICRob3N0X29zIGluCi0gICAgbm9uc3RvcHV4KikgdmVyc2lvbl90eXBlPW5vbnN0b3B1eCA7OwotICAgICopCi0JaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgotCQl2ZXJzaW9uX3R5cGU9bGludXgKLQllbHNlCi0JCXZlcnNpb25fdHlwZT1pcml4Ci0JZmkgOzsKLSAgZXNhYwotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgY2FzZSAkaG9zdF9vcyBpbgotICBpcml4NSogfCBub25zdG9wdXgqKQotICAgIGxpYnN1ZmY9IHNobGlic3VmZj0KLSAgICA7OwotICAqKQotICAgIGNhc2UgJExEIGluICMgbGlidG9vbC5tNCB3aWxsIGFkZCBvbmUgb2YgdGhlc2Ugc3dpdGNoZXMgdG8gTEQKLSAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKQotICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPSBsaWJtYWdpYz0zMi1iaXQ7OwotICAgICotbjMyfCoiLW4zMiAifCotbWVsZjMyYm1pcG4zMnwqIi1tZWxmMzJibWlwbjMyICIpCi0gICAgICBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgbGlibWFnaWM9TjMyOzsKLSAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikKLSAgICAgIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IGxpYm1hZ2ljPTY0LWJpdDs7Ci0gICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGVzYWMKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZJHtzaGxpYnN1ZmZ9X1BBVEgKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIke2xpYnN1ZmZ9IC9saWIke2xpYnN1ZmZ9IC91c3IvbG9jYWwvbGliJHtsaWJzdWZmfSIKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSIKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICA7OwotCi0jIE5vIHNoYXJlZCBsaWIgc3VwcG9ydCBmb3IgTGludXggb2xkbGQsIGFvdXQsIG9yIGNvZmYuCi1saW51eCpvbGRsZCogfCBsaW51eCphb3V0KiB8IGxpbnV4KmNvZmYqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCi0jIFRoaXMgbXVzdCBiZSBMaW51eCBFTEYuCi1saW51eCogfCBrKmJzZCotZ251KQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgotICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKLSAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotCi0gICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCi0gIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCi0gICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXFskXTIpKTsgc2tpcCA9IDE7IH0geyBpZiAoIXNraXApIHByaW50IFxbJF0wOyBza2lwID0gMDsgfScgPCAvZXRjL2xkLnNvLmNvbmYgfCAkU0VEIC1lICdzLyMuKi8vOy9eWyAJXSpod2NhcFsgCV0vZDtzL1s6LAldLyAvZztzLz1bXj1dKiQvLztzLz1bXj0gXSogLyAvZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKLSAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCi0gIGZpCi0KLSAgIyBXZSB1c2VkIHRvIHRlc3QgZm9yIC9saWIvbGQuc28uMSBhbmQgZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIG9uCi0gICMgcG93ZXJwYywgYmVjYXVzZSBNa0xpbnV4IG9ubHkgc3VwcG9ydGVkIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCB0aGUKLSAgIyBHTlUgZHluYW1pYyBsaW5rZXIuICBTaW5jZSB0aGlzIHdhcyBicm9rZW4gd2l0aCBjcm9zcyBjb21waWxlcnMsCi0gICMgbW9zdCBwb3dlcnBjLWxpbnV4IGJveGVzIHN1cHBvcnQgZHluYW1pYyBsaW5raW5nIHRoZXNlIGRheXMgYW5kCi0gICMgcGVvcGxlIGNhbiBhbHdheXMgLS1kaXNhYmxlLXNoYXJlZCwgdGhlIHRlc3Qgd2FzIHJlbW92ZWQsIGFuZCB3ZQotICAjIGFzc3VtZSB0aGUgR05VL0xpbnV4IGR5bmFtaWMgbGlua2VyIGlzIGluIHVzZS4KLSAgZHluYW1pY19saW5rZXI9J0dOVS9MaW51eCBsZC5zbycKLSAgOzsKLQotbmV0YnNkKikKLSAgdmVyc2lvbl90eXBlPXN1bm9zCi0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCi0gICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKLSAgICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIChhLm91dCkgbGQuc28nCi0gIGVsc2UKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgZHluYW1pY19saW5rZXI9J05ldEJTRCBsZC5lbGZfc28nCi0gIGZpCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICA7OwotCi1uZXdzb3M2KQotICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgOzsKLQotbnRvLXFueCopCi0gIHZlcnNpb25fdHlwZT1saW51eAotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIDs7Ci0KLW9wZW5ic2QqKQotICB2ZXJzaW9uX3R5cGU9c3Vub3MKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIgotICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIE9wZW5CU0QgKDMuMyBhdCBsZWFzdCkgKmRvKiBuZWVkIHZlcnNpb25lZCBsaWJzLgotICBjYXNlICRob3N0X29zIGluCi0gICAgb3BlbmJzZDMuMyB8IG9wZW5ic2QzLjMuKikgbmVlZF92ZXJzaW9uPXllcyA7OwotICAgICopICAgICAgICAgICAgICAgICAgICAgICAgIG5lZWRfdmVyc2lvbj1ubyAgOzsKLSAgZXNhYwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JwotICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbSAkbGliZGlyJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBvcGVuYnNkMi5bWzg5XV0gfCBvcGVuYnNkMi5bWzg5XV0uKikKLQlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLQk7OwotICAgICAgKikKLQlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0JOzsKLSAgICAgIGVzYWMKLSAgZWxzZQotICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgZmkKLSAgOzsKLQotb3MyKikKLSAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJwotICBkeW5hbWljX2xpbmtlcj0nT1MvMiBsZC5leGUnCi0gIHNobGlicGF0aF92YXI9TElCUEFUSAotICA7OwotCi1vc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0gIHZlcnNpb25fdHlwZT1vc2YKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL3NobGliIC91c3IvY2NzL2xpYiAvdXNyL2xpYi9jbXBscnMvY2MgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIgL3Zhci9zaGxpYiIKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCi0gIDs7Ci0KLXJkb3MqKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotCi1zb2xhcmlzKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIG5lZWRfbGliX3ByZWZpeD1ubwotICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAjIGxkZCBjb21wbGFpbnMgdW5sZXNzIGxpYnJhcmllcyBhcmUgZXhlY3V0YWJsZQotICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCAreCAkbGliJwotICA7OwotCi1zdW5vczQqKQotICB2ZXJzaW9uX3R5cGU9c3Vub3MKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKLSAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovdXNyL2V0YyIgbGRjb25maWcgJGxpYmRpcicKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgbmVlZF9saWJfcHJlZml4PW5vCi0gIGZpCi0gIG5lZWRfdmVyc2lvbj15ZXMKLSAgOzsKLQotc3lzdjQgfCBzeXN2NC4zKikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBjYXNlICRob3N0X3ZlbmRvciBpbgotICAgIHNuaSkKLSAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwotICAgICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LUJsYXJnZWR5bnN5bScKLSAgICAgIHJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICi0gICAgICA7OwotICAgIHNpZW1lbnMpCi0gICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgICAgIDs7Ci0gICAgbW90b3JvbGEpCi0gICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgICAgIG5lZWRfdmVyc2lvbj1ubwotICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy9saWIgL3Vzci9saWIgL3Vzci9jY3MvbGliJwotICAgICAgOzsKLSAgZXNhYwotICA7OwotCi1zeXN2NCpNUCopCi0gIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KLSAgICB2ZXJzaW9uX3R5cGU9bGludXgKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJwotICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICi0gIGZpCi0gIDs7Ci0KLXN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKLSAgbmVlZF9saWJfcHJlZml4PW5vCi0gIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvdXNyL2dudS9saWIgL3Vzci9jY3MvbGliIC91c3IvbGliIC9saWInCi0gICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gIGVsc2UKLSAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvY2NzL2xpYiAvdXNyL2xpYicKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICAgc2NvMy4ydjUqKQotICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL2xpYiIKLQk7OwotICAgIGVzYWMKLSAgZmkKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbGliJwotICA7OwotCi11dHM0KikKLSAgdmVyc2lvbl90eXBlPWxpbnV4Ci0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICA7OwotCi0qKQotICBkeW5hbWljX2xpbmtlcj1ubwotICA7OwotZXNhYwotQUNfTVNHX1JFU1VMVChbJGR5bmFtaWNfbGlua2VyXSkKLXRlc3QgIiRkeW5hbWljX2xpbmtlciIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCi0KLUFDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXSwKLVtsdF9jdl9zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiXSkKLXN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKLUFDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNdLAotW2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiXSkKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIkbHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMiCi0KLXZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQQVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsgR0NDX0VYRUNfUFJFRklYIENPTVBJTEVSX1BBVEggTElCUkFSWV9QQVRIIgotZmkKLV0pIyBBQ19MSUJUT09MX1NZU19EWU5BTUlDX0xJTktFUgotCi0KLSMgX0xUX0FDX1RBR0NPTkZJRwotIyAtLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1RBR0NPTkZJR10sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotQUNfQVJHX1dJVEgoW3RhZ3NdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLXRhZ3NAPDpAPVRBR1NAOj5AXSwKLSAgICAgICAgW2luY2x1ZGUgYWRkaXRpb25hbCBjb25maWd1cmF0aW9ucyBAPDpAYXV0b21hdGljQDo+QF0pXSwKLSAgICBbdGFnbmFtZXM9IiR3aXRodmFsIl0pCi0KLWlmIHRlc3QgLWYgIiRsdG1haW4iICYmIHRlc3QgLW4gIiR0YWduYW1lcyI7IHRoZW4KLSAgaWYgdGVzdCAhIC1mICIke29maWxlfSI7IHRoZW4KLSAgICBBQ19NU0dfV0FSTihbb3V0cHV0IGZpbGUgYCRvZmlsZScgZG9lcyBub3QgZXhpc3RdKQotICBmaQotCi0gIGlmIHRlc3QgLXogIiRMVENDIjsgdGhlbgotICAgIGV2YWwgImAkU0hFTEwgJHtvZmlsZX0gLS1jb25maWcgfCBncmVwICdeTFRDQz0nYCIKLSAgICBpZiB0ZXN0IC16ICIkTFRDQyI7IHRoZW4KLSAgICAgIEFDX01TR19XQVJOKFtvdXRwdXQgZmlsZSBgJG9maWxlJyBkb2VzIG5vdCBsb29rIGxpa2UgYSBsaWJ0b29sIHNjcmlwdF0pCi0gICAgZWxzZQotICAgICAgQUNfTVNHX1dBUk4oW3VzaW5nIGBMVENDPSRMVENDJywgZXh0cmFjdGVkIGZyb20gYCRvZmlsZSddKQotICAgIGZpCi0gIGZpCi0gIGlmIHRlc3QgLXogIiRMVENGTEFHUyI7IHRoZW4KLSAgICBldmFsICJgJFNIRUxMICR7b2ZpbGV9IC0tY29uZmlnIHwgZ3JlcCAnXkxUQ0ZMQUdTPSdgIgotICBmaQotCi0gICMgRXh0cmFjdCBsaXN0IG9mIGF2YWlsYWJsZSB0YWdnZWQgY29uZmlndXJhdGlvbnMgaW4gJG9maWxlLgotICAjIE5vdGUgdGhhdCB0aGlzIGFzc3VtZXMgdGhlIGVudGlyZSBsaXN0IGlzIG9uIG9uZSBsaW5lLgotICBhdmFpbGFibGVfdGFncz1gZ3JlcCAiXmF2YWlsYWJsZV90YWdzPSIgIiR7b2ZpbGV9IiB8ICRTRUQgLWUgJ3MvYXZhaWxhYmxlX3RhZ3M9XCguKiRcKS9cMS8nIC1lICdzL1wiLy9nJ2AKLQotICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKLSAgZm9yIHRhZ25hbWUgaW4gJHRhZ25hbWVzOyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICMgQ2hlY2sgd2hldGhlciB0YWduYW1lIGNvbnRhaW5zIG9ubHkgdmFsaWQgY2hhcmFjdGVycwotICAgIGNhc2UgYCRlY2hvICJYJHRhZ25hbWUiIHwgJFhzZWQgLWUgJ3M6W1stX0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoxMjM0NTY3ODkwLC9dXTo6ZydgIGluCi0gICAgIiIpIDs7Ci0gICAgKikgIEFDX01TR19FUlJPUihbaW52YWxpZCB0YWcgbmFtZTogJHRhZ25hbWVdKQotCTs7Ci0gICAgZXNhYwotCi0gICAgaWYgZ3JlcCAiXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWUkIiA8ICIke29maWxlfSIgPiAvZGV2L251bGwKLSAgICB0aGVuCi0gICAgICBBQ19NU0dfRVJST1IoW3RhZyBuYW1lIFwiJHRhZ25hbWVcIiBhbHJlYWR5IGV4aXN0c10pCi0gICAgZmkKLQotICAgICMgVXBkYXRlIHRoZSBsaXN0IG9mIGF2YWlsYWJsZSB0YWdzLgotICAgIGlmIHRlc3QgLW4gIiR0YWduYW1lIjsgdGhlbgotICAgICAgZWNobyBhcHBlbmRpbmcgY29uZmlndXJhdGlvbiB0YWcgXCIkdGFnbmFtZVwiIHRvICRvZmlsZQotCi0gICAgICBjYXNlICR0YWduYW1lIGluCi0gICAgICBDWFgpCi0JaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLQkgICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0JICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgotCSAgQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUcKLQllbHNlCi0JICB0YWduYW1lPSIiCi0JZmkKLQk7OwotCi0gICAgICBGNzcpCi0JaWYgdGVzdCAtbiAiJEY3NyIgJiYgdGVzdCAiWCRGNzciICE9ICJYbm8iOyB0aGVuCi0JICBBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJRwotCWVsc2UKLQkgIHRhZ25hbWU9IiIKLQlmaQotCTs7Ci0KLSAgICAgIEdDSikKLQlpZiB0ZXN0IC1uICIkR0NKIiAmJiB0ZXN0ICJYJEdDSiIgIT0gIlhubyI7IHRoZW4KLQkgIEFDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHCi0JZWxzZQotCSAgdGFnbmFtZT0iIgotCWZpCi0JOzsKLQotICAgICAgUkMpCi0JQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJRwotCTs7Ci0KLSAgICAgICopCi0JQUNfTVNHX0VSUk9SKFtVbnN1cHBvcnRlZCB0YWcgbmFtZTogJHRhZ25hbWVdKQotCTs7Ci0gICAgICBlc2FjCi0KLSAgICAgICMgQXBwZW5kIHRoZSBuZXcgdGFnIG5hbWUgdG8gdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIHRhZ3MuCi0gICAgICBpZiB0ZXN0IC1uICIkdGFnbmFtZSIgOyB0aGVuCi0gICAgICBhdmFpbGFibGVfdGFncz0iJGF2YWlsYWJsZV90YWdzICR0YWduYW1lIgotICAgIGZpCi0gICAgZmkKLSAgZG9uZQotICBJRlM9IiRsdF9zYXZlX2lmcyIKLQotICAjIE5vdyBzdWJzdGl0dXRlIHRoZSB1cGRhdGVkIGxpc3Qgb2YgYXZhaWxhYmxlIHRhZ3MuCi0gIGlmIGV2YWwgInNlZCAtZSAncy9eYXZhaWxhYmxlX3RhZ3M9LipcJC9hdmFpbGFibGVfdGFncz1cIiRhdmFpbGFibGVfdGFnc1wiLycgXCIkb2ZpbGVcIiA+IFwiJHtvZmlsZX1UXCIiOyB0aGVuCi0gICAgbXYgIiR7b2ZpbGV9VCIgIiRvZmlsZSIKLSAgICBjaG1vZCAreCAiJG9maWxlIgotICBlbHNlCi0gICAgcm0gLWYgIiR7b2ZpbGV9VCIKLSAgICBBQ19NU0dfRVJST1IoW3VuYWJsZSB0byB1cGRhdGUgbGlzdCBvZiBhdmFpbGFibGUgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zLl0pCi0gIGZpCi1maQotXSkjIF9MVF9BQ19UQUdDT05GSUcKLQotCi0jIEFDX0xJQlRPT0xfRExPUEVOCi0jIC0tLS0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBjaGVja3MgZm9yIGRsb3BlbiBzdXBwb3J0Ci1BQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5dLAotIFtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pCi1dKSMgQUNfTElCVE9PTF9ETE9QRU4KLQotCi0jIEFDX0xJQlRPT0xfV0lOMzJfRExMCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGRlY2xhcmUgcGFja2FnZSBzdXBwb3J0IGZvciBidWlsZGluZyB3aW4zMiBETExzCi1BQ19ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLAotW0FDX0JFRk9SRShbJDBdLCBbQUNfTElCVE9PTF9TRVRVUF0pCi1dKSMgQUNfTElCVE9PTF9XSU4zMl9ETEwKLQotCi0jIEFDX0VOQUJMRV9TSEFSRUQoW0RFRkFVTFRdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zaGFyZWQgZmxhZwotIyBERUZBVUxUIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYHllcycuCi1BQ19ERUZVTihbQUNfRU5BQkxFX1NIQVJFRF0sCi1bZGVmaW5lKFtBQ19FTkFCTEVfU0hBUkVEX0RFRkFVTFRdLCBpZmVsc2UoJDEsIG5vLCBubywgeWVzKSlkbmwKLUFDX0FSR19FTkFCTEUoW3NoYXJlZF0sCi0gICAgW0FDX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zaGFyZWRAPDpAPVBLR1NAOj5AXSwKLQlbYnVpbGQgc2hhcmVkIGxpYnJhcmllcyBAPDpAZGVmYXVsdD1dQUNfRU5BQkxFX1NIQVJFRF9ERUZBVUxUW0A6PkBdKV0sCi0gICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9Ci0gICAgY2FzZSAkZW5hYmxldmFsIGluCi0gICAgeWVzKSBlbmFibGVfc2hhcmVkPXllcyA7OwotICAgIG5vKSBlbmFibGVfc2hhcmVkPW5vIDs7Ci0gICAgKikKLSAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KLSAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgotICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgotCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCi0JICBlbmFibGVfc2hhcmVkPXllcwotCWZpCi0gICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIDs7Ci0gICAgZXNhY10sCi0gICAgW2VuYWJsZV9zaGFyZWQ9XUFDX0VOQUJMRV9TSEFSRURfREVGQVVMVCkKLV0pIyBBQ19FTkFCTEVfU0hBUkVECi0KLQotIyBBQ19ESVNBQkxFX1NIQVJFRAotIyAtLS0tLS0tLS0tLS0tLS0tLQotIyBzZXQgdGhlIGRlZmF1bHQgc2hhcmVkIGZsYWcgdG8gLS1kaXNhYmxlLXNoYXJlZAotQUNfREVGVU4oW0FDX0RJU0FCTEVfU0hBUkVEXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19FTkFCTEVfU0hBUkVEKG5vKQotXSkjIEFDX0RJU0FCTEVfU0hBUkVECi0KLQotIyBBQ19FTkFCTEVfU1RBVElDKFtERUZBVUxUXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGltcGxlbWVudCB0aGUgLS1lbmFibGUtc3RhdGljIGZsYWcKLSMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgotQUNfREVGVU4oW0FDX0VOQUJMRV9TVEFUSUNdLAotW2RlZmluZShbQUNfRU5BQkxFX1NUQVRJQ19ERUZBVUxUXSwgaWZlbHNlKCQxLCBubywgbm8sIHllcykpZG5sCi1BQ19BUkdfRU5BQkxFKFtzdGF0aWNdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtc3RhdGljQDw6QD1QS0dTQDo+QF0sCi0JW2J1aWxkIHN0YXRpYyBsaWJyYXJpZXMgQDw6QGRlZmF1bHQ9XUFDX0VOQUJMRV9TVEFUSUNfREVGQVVMVFtAOj5AXSldLAotICAgIFtwPSR7UEFDS0FHRS1kZWZhdWx0fQotICAgIGNhc2UgJGVuYWJsZXZhbCBpbgotICAgIHllcykgZW5hYmxlX3N0YXRpYz15ZXMgOzsKLSAgICBubykgZW5hYmxlX3N0YXRpYz1ubyA7OwotICAgICopCi0gICAgIGVuYWJsZV9zdGF0aWM9bm8KLSAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgotICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgotCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCi0JICBlbmFibGVfc3RhdGljPXllcwotCWZpCi0gICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIDs7Ci0gICAgZXNhY10sCi0gICAgW2VuYWJsZV9zdGF0aWM9XUFDX0VOQUJMRV9TVEFUSUNfREVGQVVMVCkKLV0pIyBBQ19FTkFCTEVfU1RBVElDCi0KLQotIyBBQ19ESVNBQkxFX1NUQVRJQwotIyAtLS0tLS0tLS0tLS0tLS0tLQotIyBzZXQgdGhlIGRlZmF1bHQgc3RhdGljIGZsYWcgdG8gLS1kaXNhYmxlLXN0YXRpYwotQUNfREVGVU4oW0FDX0RJU0FCTEVfU1RBVElDXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19FTkFCTEVfU1RBVElDKG5vKQotXSkjIEFDX0RJU0FCTEVfU1RBVElDCi0KLQotIyBBQ19FTkFCTEVfRkFTVF9JTlNUQUxMKFtERUZBVUxUXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGltcGxlbWVudCB0aGUgLS1lbmFibGUtZmFzdC1pbnN0YWxsIGZsYWcKLSMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgotQUNfREVGVU4oW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdLAotW2RlZmluZShbQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUXSwgaWZlbHNlKCQxLCBubywgbm8sIHllcykpZG5sCi1BQ19BUkdfRU5BQkxFKFtmYXN0LWluc3RhbGxdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtZmFzdC1pbnN0YWxsQDw6QD1QS0dTQDo+QF0sCi0gICAgW29wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbiBAPDpAZGVmYXVsdD1dQUNfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUW0A6PkBdKV0sCi0gICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9Ci0gICAgY2FzZSAkZW5hYmxldmFsIGluCi0gICAgeWVzKSBlbmFibGVfZmFzdF9pbnN0YWxsPXllcyA7OwotICAgIG5vKSBlbmFibGVfZmFzdF9pbnN0YWxsPW5vIDs7Ci0gICAgKikKLSAgICAgIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8KLSAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgotICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgotCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCi0JICBlbmFibGVfZmFzdF9pbnN0YWxsPXllcwotCWZpCi0gICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgICAgIDs7Ci0gICAgZXNhY10sCi0gICAgW2VuYWJsZV9mYXN0X2luc3RhbGw9XUFDX0VOQUJMRV9GQVNUX0lOU1RBTExfREVGQVVMVCkKLV0pIyBBQ19FTkFCTEVfRkFTVF9JTlNUQUxMCi0KLQotIyBBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTAotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBzZXQgdGhlIGRlZmF1bHQgdG8gLS1kaXNhYmxlLWZhc3QtaW5zdGFsbAotQUNfREVGVU4oW0FDX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi1BQ19FTkFCTEVfRkFTVF9JTlNUQUxMKG5vKQotXSkjIEFDX0RJU0FCTEVfRkFTVF9JTlNUQUxMCi0KLQotIyBBQ19MSUJUT09MX1BJQ01PREUoW01PREVdKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBpbXBsZW1lbnQgdGhlIC0td2l0aC1waWMgZmxhZwotIyBNT0RFIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGJvdGgnLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfUElDTU9ERV0sCi1bQUNfQkVGT1JFKFskMF0sW0FDX0xJQlRPT0xfU0VUVVBdKWRubAotcGljX21vZGU9aWZlbHNlKCQjLDEsJDEsZGVmYXVsdCkKLV0pIyBBQ19MSUJUT09MX1BJQ01PREUKLQotCi0jIEFDX1BST0dfRUdSRVAKLSMgLS0tLS0tLS0tLS0tLQotIyBUaGlzIGlzIHByZWRlZmluZWQgc3RhcnRpbmcgd2l0aCBBdXRvY29uZiAyLjU0LCBzbyB0aGlzIGNvbmRpdGlvbmFsCi0jIGRlZmluaXRpb24gY2FuIGJlIHJlbW92ZWQgb25jZSB3ZSByZXF1aXJlIEF1dG9jb25mIDIuNTQgb3IgbGF0ZXIuCi1tNF9pZm5kZWYoW0FDX1BST0dfRUdSRVBdLCBbQUNfREVGVU4oW0FDX1BST0dfRUdSRVBdLAotW0FDX0NBQ0hFX0NIRUNLKFtmb3IgZWdyZXBdLCBbYWNfY3ZfcHJvZ19lZ3JlcF0sCi0gICBbaWYgZWNobyBhIHwgKGdyZXAgLUUgJyhhfGIpJykgPi9kZXYvbnVsbCAyPiYxCi0gICAgdGhlbiBhY19jdl9wcm9nX2VncmVwPSdncmVwIC1FJwotICAgIGVsc2UgYWNfY3ZfcHJvZ19lZ3JlcD0nZWdyZXAnCi0gICAgZmldKQotIEVHUkVQPSRhY19jdl9wcm9nX2VncmVwCi0gQUNfU1VCU1QoW0VHUkVQXSkKLV0pXSkKLQotCi0jIEFDX1BBVEhfVE9PTF9QUkVGSVgKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGNhbiByZWNvZ25pemUgc2hhcmVkIGxpYnJhcnkKLUFDX0RFRlVOKFtBQ19QQVRIX1RPT0xfUFJFRklYXSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0VHUkVQXSlkbmwKLUFDX01TR19DSEVDS0lORyhbZm9yICQxXSkKLUFDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX01BR0lDX0NNRCwKLVtjYXNlICRNQUdJQ19DTUQgaW4KLVtbXFwvKl0gfCAgPzpbXFwvXSpdKQotICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJE1BR0lDX0NNRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0qKQotICBsdF9zYXZlX01BR0lDX0NNRD0iJE1BR0lDX0NNRCIKLSAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1kbmwgJGFjX2R1bW15IGZvcmNlcyBzcGxpdHRpbmcgb24gY29uc3RhbnQgdXNlci1zdXBwbGllZCBwYXRocy4KLWRubCBQT1NJWC4yIHdvcmQgc3BsaXR0aW5nIGlzIGRvbmUgb25seSBvbiB0aGUgb3V0cHV0IG9mIHdvcmQgZXhwYW5zaW9ucywKLWRubCBub3QgZXZlcnkgd29yZC4gIFRoaXMgY2xvc2VzIGEgbG9uZ3N0YW5kaW5nIHNoIHNlY3VyaXR5IGhvbGUuCi0gIGFjX2R1bW15PSJpZmVsc2UoWyQyXSwgLCAkUEFUSCwgWyQyXSkiCi0gIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgaWYgdGVzdCAtZiAkYWNfZGlyLyQxOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci8kMSIKLSAgICAgIGlmIHRlc3QgLW4gIiRmaWxlX21hZ2ljX3Rlc3RfZmlsZSI7IHRoZW4KLQljYXNlICRkZXBsaWJzX2NoZWNrX21ldGhvZCBpbgotCSJmaWxlX21hZ2ljICIqKQotCSAgZmlsZV9tYWdpY19yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICJmaWxlX21hZ2ljIFwoLipcKSJgCi0JICBNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKLQkgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwkZmlsZV9tYWdpY190ZXN0X2ZpbGUgMj4gL2Rldi9udWxsIHwKLQkgICAgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgOgotCSAgZWxzZQotCSAgICBjYXQgPDxFT0YgMT4mMgotCi0qKiogV2FybmluZzogdGhlIGNvbW1hbmQgbGlidG9vbCB1c2VzIHRvIGRldGVjdCBzaGFyZWQgbGlicmFyaWVzLAotKioqICRmaWxlX21hZ2ljX2NtZCwgcHJvZHVjZXMgb3V0cHV0IHRoYXQgbGlidG9vbCBjYW5ub3QgcmVjb2duaXplLgotKioqIFRoZSByZXN1bHQgaXMgdGhhdCBsaWJ0b29sIG1heSBmYWlsIHRvIHJlY29nbml6ZSBzaGFyZWQgbGlicmFyaWVzCi0qKiogYXMgc3VjaC4gIFRoaXMgd2lsbCBhZmZlY3QgdGhlIGNyZWF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzIHRoYXQKLSoqKiBkZXBlbmQgb24gc2hhcmVkIGxpYnJhcmllcywgYnV0IHByb2dyYW1zIGxpbmtlZCB3aXRoIHN1Y2ggbGlidG9vbAotKioqIGxpYnJhcmllcyB3aWxsIHdvcmsgcmVnYXJkbGVzcyBvZiB0aGlzIHByb2JsZW0uICBOZXZlcnRoZWxlc3MsIHlvdQotKioqIG1heSB3YW50IHRvIHJlcG9ydCB0aGUgcHJvYmxlbSB0byB5b3VyIHN5c3RlbSBtYW5hZ2VyIGFuZC9vciB0bwotKioqIGJ1Zy1saWJ0b29sQGdudS5vcmcKLQotRU9GCi0JICBmaSA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgICBicmVhawotICAgIGZpCi0gIGRvbmUKLSAgSUZTPSIkbHRfc2F2ZV9pZnMiCi0gIE1BR0lDX0NNRD0iJGx0X3NhdmVfTUFHSUNfQ01EIgotICA7OwotZXNhY10pCi1NQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKLWlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoJE1BR0lDX0NNRCkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLWZpCi1dKSMgQUNfUEFUSF9UT09MX1BSRUZJWAotCi0KLSMgQUNfUEFUSF9NQUdJQwotIyAtLS0tLS0tLS0tLS0tCi0jIGZpbmQgYSBmaWxlIHByb2dyYW0gd2hpY2ggY2FuIHJlY29nbml6ZSBhIHNoYXJlZCBsaWJyYXJ5Ci1BQ19ERUZVTihbQUNfUEFUSF9NQUdJQ10sCi1bQUNfUEFUSF9UT09MX1BSRUZJWCgke2FjX3Rvb2xfcHJlZml4fWZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCi1pZiB0ZXN0IC16ICIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiOyB0aGVuCi0gIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICBBQ19QQVRIX1RPT0xfUFJFRklYKGZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCi0gIGVsc2UKLSAgICBNQUdJQ19DTUQ9OgotICBmaQotZmkKLV0pIyBBQ19QQVRIX01BR0lDCi0KLQotIyBBQ19QUk9HX0xECi0jIC0tLS0tLS0tLS0KLSMgZmluZCB0aGUgcGF0aG5hbWUgdG8gdGhlIEdOVSBvciBub24tR05VIGxpbmtlcgotQUNfREVGVU4oW0FDX1BST0dfTERdLAotW0FDX0FSR19XSVRIKFtnbnUtbGRdLAotICAgIFtBQ19IRUxQX1NUUklORyhbLS13aXRoLWdudS1sZF0sCi0JW2Fzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBAPDpAZGVmYXVsdD1ub0A6PkBdKV0sCi0gICAgW3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllc10sCi0gICAgW3dpdGhfZ251X2xkPW5vXSkKLUFDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKLWFjX3Byb2c9bGQKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgotICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCi0gIGNhc2UgJGhvc3QgaW4KLSAgKi0qLW1pbmd3KikKLSAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3Ci0gICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OwotICAqKQotICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKLSAgZXNhYwotICBjYXNlICRhY19wcm9nIGluCi0gICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCi0gICAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQotICAgICAgcmVfZGlyZWx0PScvW1teL11dW1teL11dKi9cLlwuLycKLSAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRobmFtZSBvZiBsZAotICAgICAgYWNfcHJvZz1gZWNobyAkYWNfcHJvZ3wgJFNFRCAncyVcXFxcJS8lZydgCi0gICAgICB3aGlsZSBlY2hvICRhY19wcm9nIHwgZ3JlcCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KLQlhY19wcm9nPWBlY2hvICRhY19wcm9nfCAkU0VEICJzJSRyZV9kaXJlbHQlLyUiYAotICAgICAgZG9uZQotICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0iJGFjX3Byb2ciCi0gICAgICA7OwotICAiIikKLSAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KLSAgICBhY19wcm9nPWxkCi0gICAgOzsKLSAgKikKLSAgICAjIElmIGl0IGlzIHJlbGF0aXZlLCB0aGVuIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGxkIGluIFBBVEguCi0gICAgd2l0aF9nbnVfbGQ9dW5rbm93bgotICAgIDs7Ci0gIGVzYWMKLWVsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgotICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBHTlUgbGRdKQotZWxzZQotICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBub24tR05VIGxkXSkKLWZpCi1BQ19DQUNIRV9WQUwobHRfY3ZfcGF0aF9MRCwKLVtpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCi0gIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX0xEPSIkYWNfZGlyLyRhY19wcm9nIgotICAgICAgIyBDaGVjayB0byBzZWUgaWYgdGhlIHByb2dyYW0gaXMgR05VIGxkLiAgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uLAotICAgICAgIyBidXQgYXBwYXJlbnRseSBzb21lIHZhcmlhbnRzIG9mIEdOVSBsZCBvbmx5IGFjY2VwdCAtdi4KLSAgICAgICMgQnJlYWsgb25seSBpZiBpdCB3YXMgdGhlIEdOVS9ub24tR05VIGxkIHRoYXQgd2UgcHJlZmVyLgotICAgICAgY2FzZSBgIiRsdF9jdl9wYXRoX0xEIiAtdiAyPiYxIDwvZGV2L251bGxgIGluCi0gICAgICAqR05VKiB8ICond2l0aCBCRkQnKikKLQl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrCi0JOzsKLSAgICAgICopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSB5ZXMgJiYgYnJlYWsKLQk7OwotICAgICAgZXNhYwotICAgIGZpCi0gIGRvbmUKLSAgSUZTPSIkbHRfc2F2ZV9pZnMiCi1lbHNlCi0gIGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi1maV0pCi1MRD0iJGx0X2N2X3BhdGhfTEQiCi1pZiB0ZXN0IC1uICIkTEQiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoJExEKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKLXRlc3QgLXogIiRMRCIgJiYgQUNfTVNHX0VSUk9SKFtubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSF0pCi1BQ19QUk9HX0xEX0dOVQotXSkjIEFDX1BST0dfTEQKLQotCi0jIEFDX1BST0dfTERfR05VCi0jIC0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfUFJPR19MRF9HTlVdLAotW0FDX1JFUVVJUkUoW0FDX1BST0dfRUdSRVBdKWRubAotQUNfQ0FDSEVfQ0hFQ0soW2lmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkXSwgbHRfY3ZfcHJvZ19nbnVfbGQsCi1bIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGRzIG9ubHkgYWNjZXB0IC12LgotY2FzZSBgJExEIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KLSpHTlUqIHwgKid3aXRoIEJGRCcqKQotICBsdF9jdl9wcm9nX2dudV9sZD15ZXMKLSAgOzsKLSopCi0gIGx0X2N2X3Byb2dfZ251X2xkPW5vCi0gIDs7Ci1lc2FjXSkKLXdpdGhfZ251X2xkPSRsdF9jdl9wcm9nX2dudV9sZAotXSkjIEFDX1BST0dfTERfR05VCi0KLQotIyBBQ19QUk9HX0xEX1JFTE9BRF9GTEFHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZmluZCByZWxvYWQgZmxhZyBmb3IgbGlua2VyCi0jICAgLS0gUE9SVE1FIFNvbWUgbGlua2VycyBtYXkgbmVlZCBhIGRpZmZlcmVudCByZWxvYWQgZmxhZy4KLUFDX0RFRlVOKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSwKLVtBQ19DQUNIRV9DSEVDSyhbZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlc10sCi0gIGx0X2N2X2xkX3JlbG9hZF9mbGFnLAotICBbbHRfY3ZfbGRfcmVsb2FkX2ZsYWc9Jy1yJ10pCi1yZWxvYWRfZmxhZz0kbHRfY3ZfbGRfcmVsb2FkX2ZsYWcKLWNhc2UgJHJlbG9hZF9mbGFnIGluCi0iIiB8ICIgIiopIDs7Ci0qKSByZWxvYWRfZmxhZz0iICRyZWxvYWRfZmxhZyIgOzsKLWVzYWMKLXJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLWNhc2UgJGhvc3Rfb3MgaW4KLSAgZGFyd2luKikKLSAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotICAgIGVsc2UKLSAgICAgIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSAgICBmaQotICAgIDs7Ci1lc2FjCi1dKSMgQUNfUFJPR19MRF9SRUxPQURfRkxBRwotCi0KLSMgQUNfREVQTElCU19DSEVDS19NRVRIT0QKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaG93IHRvIGNoZWNrIGZvciBsaWJyYXJ5IGRlcGVuZGVuY2llcwotIyAgLS0gUE9SVE1FIGZpbGwgaW4gd2l0aCB0aGUgZHluYW1pYyBsaWJyYXJ5IGNoYXJhY3RlcmlzdGljcwotQUNfREVGVU4oW0FDX0RFUExJQlNfQ0hFQ0tfTUVUSE9EXSwKLVtBQ19DQUNIRV9DSEVDSyhbaG93IHRvIHJlY29nbml6ZSBkZXBlbmRlbnQgbGlicmFyaWVzXSwKLWx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kLAotW2x0X2N2X2ZpbGVfbWFnaWNfY21kPSckTUFHSUNfQ01EJwotbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9Ci1sdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0ndW5rbm93bicKLSMgTmVlZCB0byBzZXQgdGhlIHByZWNlZGluZyB2YXJpYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAotIyBpbnRlcmxpYnJhcnkgZGVwZW5kZW5jaWVzLgotIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCi0jIGB1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KLSMgJ3Bhc3NfYWxsJyAtLSBhbGwgZGVwZW5kZW5jaWVzIHBhc3NlZCB3aXRoIG5vIGNoZWNrcy4KLSMgJ3Rlc3RfY29tcGlsZScgLS0gY2hlY2sgYnkgbWFraW5nIHRlc3QgcHJvZ3JhbS4KLSMgJ2ZpbGVfbWFnaWMgW1tyZWdleF1dJyAtLSBjaGVjayBieSBsb29raW5nIGZvciBmaWxlcyBpbiBsaWJyYXJ5IHBhdGgKLSMgd2hpY2ggcmVzcG9uZHMgdG8gdGhlICRmaWxlX21hZ2ljX2NtZCB3aXRoIGEgZ2l2ZW4gZXh0ZW5kZWQgcmVnZXguCi0jIElmIHlvdSBoYXZlIGBmaWxlJyBvciBlcXVpdmFsZW50IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3UncmUgbm90IHN1cmUKLSMgd2hldGhlciBgcGFzc19hbGwnIHdpbGwgKmFsd2F5cyogd29yaywgeW91IHByb2JhYmx5IHdhbnQgdGhpcyBvbmUuCi0KLWNhc2UgJGhvc3Rfb3MgaW4KLWFpeFtbNC05XV0qKQotICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICA7OwotCi1iZW9zKikKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotYnNkaVtbNDVdXSopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTUxdXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliKScKLSAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy91c3IvYmluL2ZpbGUgLUwnCi0gIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9zaGxpYi9saWJjLnNvCi0gIDs7Ci0KLWN5Z3dpbiopCi0gICMgZnVuY193aW4zMl9saWJpZCBpcyBhIHNoZWxsIGZ1bmN0aW9uIGRlZmluZWQgaW4gbHRtYWluLnNoCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICA7OwotCi1taW5ndyogfCBwdzMyKikKLSAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQotICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKLSAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0gICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICBmaQotICA7OwotCi1kYXJ3aW4qIHwgcmhhcHNvZHkqKQotICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICA7OwotCi1mcmVlYnNkKiB8IGRyYWdvbmZseSopCi0gIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4gL2Rldi9udWxsOyB0aGVuCi0gICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICBpKjg2ICkKLSAgICAgICMgTm90IHN1cmUgd2hldGhlciB0aGUgcHJlc2VuY2Ugb2YgT3BlbkJTRCBoZXJlIHdhcyBhIG1pc3Rha2UuCi0gICAgICAjIExldCdzIGFjY2VwdCBib3RoIG9mIHRoZW0gdW50aWwgdGhpcyBpcyBjbGVhcmVkIHVwLgotICAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKEZyZWVCU0R8T3BlbkJTRHxEcmFnb25GbHkpL2lbWzMtOV1dODYgKGNvbXBhY3QgKT9kZW1hbmQgcGFnZWQgc2hhcmVkIGxpYnJhcnknCi0gICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCi0gICAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT1gZWNobyAvdXNyL2xpYi9saWJjLnNvLipgCi0gICAgICA7OwotICAgIGVzYWMKLSAgZWxzZQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gIGZpCi0gIDs7Ci0KLWdudSopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gIDs7Ci0KLWhwdXgxMC4yMCogfCBocHV4MTEqKQotICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCi0gIGNhc2UgJGhvc3RfY3B1IGluCi0gIGlhNjQqKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChzW1swLTldXVtbMC05XV1bWzAtOV1dfEVMRi1bWzAtOV1dW1swLTldXSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gSUE2NCcKLSAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9ocHV4MzIvbGliYy5zbwotICAgIDs7Ci0gIGhwcGEqNjQqKQotICAgIFtsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1swLTldWzAtOV1bMC05XXxFTEYtWzAtOV1bMC05XSkgc2hhcmVkIG9iamVjdCBmaWxlIC0gUEEtUklTQyBbMC05XS5bMC05XSddCi0gICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvcGEyMF82NC9saWJjLnNsCi0gICAgOzsKLSAgKikKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxQQS1SSVNDW1swLTldXS5bWzAtOV1dKSBzaGFyZWQgbGlicmFyeScKLSAgICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJjLnNsCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1pbnRlcml4W1szLTldXSopCi0gICMgUElDIGNvZGUgaXMgYnJva2VuIG9uIEludGVyaXggMy54LCB0aGF0J3Mgd2h5IHxcLmEgbm90IHxfcGljXC5hIGhlcmUKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb3xcLmEpJCcKLSAgOzsKLQotaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgY2FzZSAkTEQgaW4KLSAgKi0zMnwqIi0zMiAiKSBsaWJtYWdpYz0zMi1iaXQ7OwotICAqLW4zMnwqIi1uMzIgIikgbGlibWFnaWM9TjMyOzsKLSAgKi02NHwqIi02NCAiKSBsaWJtYWdpYz02NC1iaXQ7OwotICAqKSBsaWJtYWdpYz1uZXZlci1tYXRjaDs7Ci0gIGVzYWMKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgotbGludXgqIHwgaypic2QqLWdudSkKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotbmV0YnNkKikKLSAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvXC5bWzAtOV1dK1wuW1swLTldXSt8X3BpY1wuYSkkJwotICBlbHNlCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb3xfcGljXC5hKSQnCi0gIGZpCi0gIDs7Ci0KLW5ld29zNiopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTUxdXVNCIChleGVjdXRhYmxlfGR5bmFtaWMgbGliKScKLSAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQotICBsdF9jdl9maWxlX21hZ2ljX3Rlc3RfZmlsZT0vdXNyL2xpYi9saWJubHMuc28KLSAgOzsKLQotbnRvLXFueCopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAgOzsKLQotb3BlbmJzZCopCi0gIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xcLnNvfF9waWNcLmEpJCcKLSAgZWxzZQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCi0gIGZpCi0gIDs7Ci0KLW9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLQotcmRvcyopCi0gIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gIDs7Ci0KLXNvbGFyaXMqKQotICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICA7OwotCi1zeXN2NCB8IHN5c3Y0LjMqKQotICBjYXNlICRob3N0X3ZlbmRvciBpbgotICBtb3Rvcm9sYSkKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW01MXV1TQiAoc2hhcmVkIG9iamVjdHxkeW5hbWljIGxpYikgTVtbMC05XV1bWzAtOV1dKiBWZXJzaW9uIFtbMC05XV0nCi0gICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL3Vzci9saWIvbGliYy5zbypgCi0gICAgOzsKLSAgbmNyKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gICAgOzsKLSAgc2VxdWVudCkKLSAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL2Jpbi9maWxlJwotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTE1dXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliICknCi0gICAgOzsKLSAgc25pKQotICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPScvYmluL2ZpbGUnCi0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9ImZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tMTV1dU0IgZHluYW1pYyBsaWIiCi0gICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L2xpYi9saWJjLnNvCi0gICAgOzsKLSAgc2llbWVucykKLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICAgIDs7Ci0gIHBjKQotICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1zeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSAgOzsKLWVzYWMKLV0pCi1maWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLWRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1dKSMgQUNfREVQTElCU19DSEVDS19NRVRIT0QKLQotCi0jIEFDX1BST0dfTk0KLSMgLS0tLS0tLS0tLQotIyBmaW5kIHRoZSBwYXRobmFtZSB0byBhIEJTRC1jb21wYXRpYmxlIG5hbWUgbGlzdGVyCi1BQ19ERUZVTihbQUNfUFJPR19OTV0sCi1bQUNfQ0FDSEVfQ0hFQ0soW2ZvciBCU0QtY29tcGF0aWJsZSBubV0sIGx0X2N2X3BhdGhfTk0sCi1baWYgdGVzdCAtbiAiJE5NIjsgdGhlbgotICAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLSAgbHRfY3ZfcGF0aF9OTT0iJE5NIgotZWxzZQotICBsdF9ubV90b19jaGVjaz0iJHthY190b29sX3ByZWZpeH1ubSIKLSAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IiAmJiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotICAgIGx0X25tX3RvX2NoZWNrPSIkbHRfbm1fdG9fY2hlY2sgbm0iCi0gIGZpCi0gIGZvciBsdF90bXBfbm0gaW4gJGx0X25tX3RvX2NoZWNrOyBkbwotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgotICAgIGZvciBhY19kaXIgaW4gJFBBVEggL3Vzci9jY3MvYmluL2VsZiAvdXNyL2Njcy9iaW4gL3Vzci91Y2IgL2JpbjsgZG8KLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgICAgIHRtcF9ubT0iJGFjX2Rpci8kbHRfdG1wX25tIgotICAgICAgaWYgdGVzdCAtZiAiJHRtcF9ubSIgfHwgdGVzdCAtZiAiJHRtcF9ubSRhY19leGVleHQiIDsgdGhlbgotCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBubSBhY2NlcHRzIGEgQlNELWNvbXBhdCBmbGFnLgotCSMgQWRkaW5nIHRoZSBgc2VkIDFxJyBwcmV2ZW50cyBmYWxzZSBwb3NpdGl2ZXMgb24gSFAtVVgsIHdoaWNoIHNheXM6Ci0JIyAgIG5tOiB1bmtub3duIG9wdGlvbiAiQiIgaWdub3JlZAotCSMgVHJ1NjQncyBubSBjb21wbGFpbnMgdGhhdCAvZGV2L251bGwgaXMgYW4gaW52YWxpZCBvYmplY3QgZmlsZQotCWNhc2UgYCIkdG1wX25tIiAtQiAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgotCSovZGV2L251bGwqIHwgKidJbnZhbGlkIGZpbGUgb3Igb2JqZWN0IHR5cGUnKikKLQkgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLUIiCi0JICBicmVhawotCSAgOzsKLQkqKQotCSAgY2FzZSBgIiR0bXBfbm0iIC1wIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCi0JICAqL2Rldi9udWxsKikKLQkgICAgbHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSAtcCIKLQkgICAgYnJlYWsKLQkgICAgOzsKLQkgICopCi0JICAgIGx0X2N2X3BhdGhfTk09JHtsdF9jdl9wYXRoX05NPSIkdG1wX25tIn0gIyBrZWVwIHRoZSBmaXJzdCBtYXRjaCwgYnV0Ci0JICAgIGNvbnRpbnVlICMgc28gdGhhdCB3ZSBjYW4gdHJ5IHRvIGZpbmQgb25lIHRoYXQgc3VwcG9ydHMgQlNEIGZsYWdzCi0JICAgIDs7Ci0JICBlc2FjCi0JICA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgZG9uZQotICAgIElGUz0iJGx0X3NhdmVfaWZzIgotICBkb25lCi0gIHRlc3QgLXogIiRsdF9jdl9wYXRoX05NIiAmJiBsdF9jdl9wYXRoX05NPW5tCi1maV0pCi1OTT0iJGx0X2N2X3BhdGhfTk0iCi1dKSMgQUNfUFJPR19OTQotCi0KLSMgQUNfQ0hFQ0tfTElCTQotIyAtLS0tLS0tLS0tLS0tCi0jIGNoZWNrIGZvciBtYXRoIGxpYnJhcnkKLUFDX0RFRlVOKFtBQ19DSEVDS19MSUJNXSwKLVtBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi1MSUJNPQotY2FzZSAkaG9zdCBpbgotKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKLSAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0Ci0gIDs7Ci0qLW5jci1zeXN2NC4zKikKLSAgQUNfQ0hFQ0tfTElCKG13LCBfbXd2YWxpZGNoZWNrbCwgTElCTT0iLWxtdyIpCi0gIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09IiRMSUJNIC1sbSIpCi0gIDs7Ci0qKQotICBBQ19DSEVDS19MSUIobSwgY29zLCBMSUJNPSItbG0iKQotICA7OwotZXNhYwotXSkjIEFDX0NIRUNLX0xJQk0KLQotCi0jIEFDX0xJQkxURExfQ09OVkVOSUVOQ0UoW0RJUkVDVE9SWV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIHNldHMgTElCTFRETCB0byB0aGUgbGluayBmbGFncyBmb3IgdGhlIGxpYmx0ZGwgY29udmVuaWVuY2UgbGlicmFyeSBhbmQKLSMgTFRETElOQ0wgdG8gdGhlIGluY2x1ZGUgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGhlYWRlciBhbmQgYWRkcwotIyAtLWVuYWJsZS1sdGRsLWNvbnZlbmllbmNlIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0Ci0jIEFDX0NPTkZJR19TVUJESVJTIGlzIG5vdCBjYWxsZWQgaGVyZS4gIElmIERJUkVDVE9SWSBpcyBub3QgcHJvdmlkZWQsCi0jIGl0IGlzIGFzc3VtZWQgdG8gYmUgYGxpYmx0ZGwnLiAgTElCTFRETCB3aWxsIGJlIHByZWZpeGVkIHdpdGgKLSMgJyR7dG9wX2J1aWxkZGlyfS8nIGFuZCBMVERMSU5DTCB3aWxsIGJlIHByZWZpeGVkIHdpdGggJyR7dG9wX3NyY2Rpcn0vJwotIyAobm90ZSB0aGUgc2luZ2xlIHF1b3RlcyEpLiAgSWYgeW91ciBwYWNrYWdlIGlzIG5vdCBmbGF0IGFuZCB5b3UncmUgbm90Ci0jIHVzaW5nIGF1dG9tYWtlLCBkZWZpbmUgdG9wX2J1aWxkZGlyIGFuZCB0b3Bfc3JjZGlyIGFwcHJvcHJpYXRlbHkgaW4KLSMgdGhlIE1ha2VmaWxlcy4KLUFDX0RFRlVOKFtBQ19MSUJMVERMX0NPTlZFTklFTkNFXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi0gIGNhc2UgJGVuYWJsZV9sdGRsX2NvbnZlbmllbmNlIGluCi0gIG5vKSBBQ19NU0dfRVJST1IoW3RoaXMgcGFja2FnZSBuZWVkcyBhIGNvbnZlbmllbmNlIGxpYmx0ZGxdKSA7OwotICAiIikgZW5hYmxlX2x0ZGxfY29udmVuaWVuY2U9eWVzCi0gICAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtY29udmVuaWVuY2UiIDs7Ci0gIGVzYWMKLSAgTElCTFRETD0nJHt0b3BfYnVpbGRkaXJ9LydpZmVsc2UoJCMsMSxbJDFdLFsnbGlibHRkbCddKS9saWJsdGRsYy5sYQotICBMVERMSU5DTD0nLUkke3RvcF9zcmNkaXJ9LydpZmVsc2UoJCMsMSxbJDFdLFsnbGlibHRkbCddKQotICAjIEZvciBiYWNrd2FyZHMgbm9uLWdldHRleHQgY29uc2lzdGVudCBjb21wYXRpYmlsaXR5Li4uCi0gIElOQ0xUREw9IiRMVERMSU5DTCIKLV0pIyBBQ19MSUJMVERMX0NPTlZFTklFTkNFCi0KLQotIyBBQ19MSUJMVERMX0lOU1RBTExBQkxFKFtESVJFQ1RPUlldKQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBzZXRzIExJQkxUREwgdG8gdGhlIGxpbmsgZmxhZ3MgZm9yIHRoZSBsaWJsdGRsIGluc3RhbGxhYmxlIGxpYnJhcnkgYW5kCi0jIExURExJTkNMIHRvIHRoZSBpbmNsdWRlIGZsYWdzIGZvciB0aGUgbGlibHRkbCBoZWFkZXIgYW5kIGFkZHMKLSMgLS1lbmFibGUtbHRkbC1pbnN0YWxsIHRvIHRoZSBjb25maWd1cmUgYXJndW1lbnRzLiAgTm90ZSB0aGF0Ci0jIEFDX0NPTkZJR19TVUJESVJTIGlzIG5vdCBjYWxsZWQgaGVyZS4gIElmIERJUkVDVE9SWSBpcyBub3QgcHJvdmlkZWQsCi0jIGFuZCBhbiBpbnN0YWxsZWQgbGlibHRkbCBpcyBub3QgZm91bmQsIGl0IGlzIGFzc3VtZWQgdG8gYmUgYGxpYmx0ZGwnLgotIyBMSUJMVERMIHdpbGwgYmUgcHJlZml4ZWQgd2l0aCAnJHt0b3BfYnVpbGRkaXJ9LycjIGFuZCBMVERMSU5DTCB3aXRoCi0jICcke3RvcF9zcmNkaXJ9LycgKG5vdGUgdGhlIHNpbmdsZSBxdW90ZXMhKS4gIElmIHlvdXIgcGFja2FnZSBpcyBub3QKLSMgZmxhdCBhbmQgeW91J3JlIG5vdCB1c2luZyBhdXRvbWFrZSwgZGVmaW5lIHRvcF9idWlsZGRpciBhbmQgdG9wX3NyY2RpcgotIyBhcHByb3ByaWF0ZWx5IGluIHRoZSBNYWtlZmlsZXMuCi0jIEluIHRoZSBmdXR1cmUsIHRoaXMgbWFjcm8gbWF5IGhhdmUgdG8gYmUgY2FsbGVkIGFmdGVyIEFDX1BST0dfTElCVE9PTC4KLUFDX0RFRlVOKFtBQ19MSUJMVERMX0lOU1RBTExBQkxFXSwKLVtBQ19CRUZPUkUoWyQwXSxbQUNfTElCVE9PTF9TRVRVUF0pZG5sCi0gIEFDX0NIRUNLX0xJQihsdGRsLCBsdF9kbGluaXQsCi0gIFt0ZXN0IHgiJGVuYWJsZV9sdGRsX2luc3RhbGwiICE9IHh5ZXMgJiYgZW5hYmxlX2x0ZGxfaW5zdGFsbD1ub10sCi0gIFtpZiB0ZXN0IHgiJGVuYWJsZV9sdGRsX2luc3RhbGwiID0geG5vOyB0aGVuCi0gICAgIEFDX01TR19XQVJOKFtsaWJsdGRsIG5vdCBpbnN0YWxsZWQsIGJ1dCBpbnN0YWxsYXRpb24gZGlzYWJsZWRdKQotICAgZWxzZQotICAgICBlbmFibGVfbHRkbF9pbnN0YWxsPXllcwotICAgZmkKLSAgXSkKLSAgaWYgdGVzdCB4IiRlbmFibGVfbHRkbF9pbnN0YWxsIiA9IHgieWVzIjsgdGhlbgotICAgIGFjX2NvbmZpZ3VyZV9hcmdzPSIkYWNfY29uZmlndXJlX2FyZ3MgLS1lbmFibGUtbHRkbC1pbnN0YWxsIgotICAgIExJQkxUREw9JyR7dG9wX2J1aWxkZGlyfS8naWZlbHNlKCQjLDEsWyQxXSxbJ2xpYmx0ZGwnXSkvbGlibHRkbC5sYQotICAgIExURExJTkNMPSctSSR7dG9wX3NyY2Rpcn0vJ2lmZWxzZSgkIywxLFskMV0sWydsaWJsdGRsJ10pCi0gIGVsc2UKLSAgICBhY19jb25maWd1cmVfYXJncz0iJGFjX2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWx0ZGwtaW5zdGFsbD1ubyIKLSAgICBMSUJMVERMPSItbGx0ZGwiCi0gICAgTFRETElOQ0w9Ci0gIGZpCi0gICMgRm9yIGJhY2t3YXJkcyBub24tZ2V0dGV4dCBjb25zaXN0ZW50IGNvbXBhdGliaWxpdHkuLi4KLSAgSU5DTFRETD0iJExURExJTkNMIgotXSkjIEFDX0xJQkxURExfSU5TVEFMTEFCTEUKLQotCi0jIEFDX0xJQlRPT0xfQ1hYCi0jIC0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBzdXBwb3J0IGZvciBDKysgbGlicmFyaWVzCi1BQ19ERUZVTihbQUNfTElCVE9PTF9DWFhdLAotW0FDX1JFUVVJUkUoW19MVF9BQ19MQU5HX0NYWF0pCi1dKSMgQUNfTElCVE9PTF9DWFgKLQotCi0jIF9MVF9BQ19MQU5HX0NYWAotIyAtLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhdLAotW0FDX1JFUVVJUkUoW0FDX1BST0dfQ1hYXSkKLUFDX1JFUVVJUkUoW19MVF9BQ19QUk9HX0NYWENQUF0pCi1fTFRfQUNfU0hFTExfSU5JVChbdGFnbmFtZXM9JHt0YWduYW1lcyske3RhZ25hbWVzfSx9Q1hYXSkKLV0pIyBfTFRfQUNfTEFOR19DWFgKLQotIyBfTFRfQUNfUFJPR19DWFhDUFAKLSMgLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1BST0dfQ1hYQ1BQXSwKLVsKLUFDX1JFUVVJUkUoW0FDX1BST0dfQ1hYXSkKLWlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCi0gICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0gICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCi0gIEFDX1BST0dfQ1hYQ1BQCi1maQotXSkjIF9MVF9BQ19QUk9HX0NYWENQUAotCi0jIEFDX0xJQlRPT0xfRjc3Ci0jIC0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBzdXBwb3J0IGZvciBGb3J0cmFuIDc3IGxpYnJhcmllcwotQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwKLVtBQ19SRVFVSVJFKFtfTFRfQUNfTEFOR19GNzddKQotXSkjIEFDX0xJQlRPT0xfRjc3Ci0KLQotIyBfTFRfQUNfTEFOR19GNzcKLSMgLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX0xBTkdfRjc3XSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0Y3N10pCi1fTFRfQUNfU0hFTExfSU5JVChbdGFnbmFtZXM9JHt0YWduYW1lcyske3RhZ25hbWVzfSx9Rjc3XSkKLV0pIyBfTFRfQUNfTEFOR19GNzcKLQotCi0jIEFDX0xJQlRPT0xfR0NKCi0jIC0tLS0tLS0tLS0tLS0tCi0jIGVuYWJsZSBzdXBwb3J0IGZvciBHQ0ogbGlicmFyaWVzCi1BQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLAotW0FDX1JFUVVJUkUoW19MVF9BQ19MQU5HX0dDSl0pCi1dKSMgQUNfTElCVE9PTF9HQ0oKLQotCi0jIF9MVF9BQ19MQU5HX0dDSgotIyAtLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19HQ0pdLAotW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dDSl0sW10sCi0gIFtBQ19QUk9WSURFX0lGRUxTRShbQV1bTV9QUk9HX0dDSl0sW10sCi0gICAgW0FDX1BST1ZJREVfSUZFTFNFKFtMVF9BQ19QUk9HX0dDSl0sW10sCi0gICAgICBbaWZkZWYoW0FDX1BST0dfR0NKXSxbQUNfUkVRVUlSRShbQUNfUFJPR19HQ0pdKV0sCi0JIFtpZmRlZihbQV1bTV9QUk9HX0dDSl0sW0FDX1JFUVVJUkUoW0FdW01fUFJPR19HQ0pdKV0sCi0JICAgW0FDX1JFUVVJUkUoW0FdW0NfUFJPR19HQ0pfT1JfQV1bTV9QUk9HX0dDSl0pXSldKV0pXSldKQotX0xUX0FDX1NIRUxMX0lOSVQoW3RhZ25hbWVzPSR7dGFnbmFtZXMrJHt0YWduYW1lc30sfUdDSl0pCi1dKSMgX0xUX0FDX0xBTkdfR0NKCi0KLQotIyBBQ19MSUJUT09MX1JDCi0jIC0tLS0tLS0tLS0tLS0KLSMgZW5hYmxlIHN1cHBvcnQgZm9yIFdpbmRvd3MgcmVzb3VyY2UgZmlsZXMKLUFDX0RFRlVOKFtBQ19MSUJUT09MX1JDXSwKLVtBQ19SRVFVSVJFKFtMVF9BQ19QUk9HX1JDXSkKLV9MVF9BQ19TSEVMTF9JTklUKFt0YWduYW1lcz0ke3RhZ25hbWVzKyR7dGFnbmFtZXN9LH1SQ10pCi1dKSMgQUNfTElCVE9PTF9SQwotCi0KLSMgQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJzIGZvciB0aGUgQyBjb21waWxlciBhcmUKLSMgc3VpdGFibHkgZGVmaW5lZC4gIFRob3NlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkKLSMgQUNfTElCVE9PTF9DT05GSUcgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DX0NPTkZJR10sIFtfTFRfQUNfTEFOR19DX0NPTkZJR10pCi1BQ19ERUZVTihbX0xUX0FDX0xBTkdfQ19DT05GSUddLAotW2x0X3NhdmVfQ0M9IiRDQyIKLUFDX0xBTkdfUFVTSChDKQotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgQyB0ZXN0IHNvdXJjZXMuCi1hY19leHQ9YwotCi0jIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgQyB0ZXN0IHNvdXJjZXMuCi1vYmpleHQ9bwotX0xUX0FDX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0Ci0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCi1sdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImludCBzb21lX3ZhcmlhYmxlID0gMDsiCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKCl7cmV0dXJuKDApO30nCi0KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi1BQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSSgkMSkKLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi1BQ19MSUJUT09MX1NZU19MSUJfU1RSSVAKLUFDX0xJQlRPT0xfRExPUEVOX1NFTEYKLQotIyBSZXBvcnQgd2hpY2ggbGlicmFyeSB0eXBlcyB3aWxsIGFjdHVhbGx5IGJlIGJ1aWx0Ci1BQ19NU0dfQ0hFQ0tJTkcoW2lmIGxpYnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCi1BQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCi0KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKLXRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxlX3NoYXJlZD1ubwotCi0jIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKLSMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KLWNhc2UgJGhvc3Rfb3MgaW4KLWFpeDMqKQotICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubwotICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgotICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKLSAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCi0gIGZpCi0gIDs7Ci0KLWFpeFtbNC05XV0qKQotICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCi0gICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KLSAgZmkKLSAgICA7OwotZXNhYwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCi0jIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KLXRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQotCi1BQ19MSUJUT09MX0NPTkZJRygkMSkKLQotQUNfTEFOR19QT1AKLUNDPSIkbHRfc2F2ZV9DQyIKLV0pIyBBQ19MSUJUT09MX0xBTkdfQ19DT05GSUcKLQotCi0jIEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcnMgZm9yIHRoZSBDIGNvbXBpbGVyIGFyZQotIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhvc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieQotIyBBQ19MSUJUT09MX0NPTkZJRyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddLCBbX0xUX0FDX0xBTkdfQ1hYX0NPTkZJRyhDWFgpXSkKLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhfQ09ORklHXSwKLVtBQ19MQU5HX1BVU0goQysrKQotQUNfUkVRVUlSRShbQUNfUFJPR19DWFhdKQotQUNfUkVRVUlSRShbX0xUX0FDX1BST0dfQ1hYQ1BQXSkKLQotX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9dW5zdXBwb3J0ZWQKLV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KLV9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCi1fTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcwotX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQotX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQotX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0IGJlaW5nIGxpbmtlZDoKLV9MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0KLV9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKHByZWRlcHMsICQxKT0KLV9MVF9BQ19UQUdWQVIocG9zdGRlcHMsICQxKT0KLV9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPQotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgQysrIHRlc3Qgc291cmNlcy4KLWFjX2V4dD1jcHAKLQotIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEMrKyB0ZXN0IHNvdXJjZXMuCi1vYmpleHQ9bwotX0xUX0FDX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0Ci0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCi1sdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImludCBzb21lX3ZhcmlhYmxlID0gMDsiCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKGludCwgY2hhciAqW1tdXSkgeyByZXR1cm4oMCk7IH0nCi0KLSMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi0jIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotbHRfc2F2ZV9DQz0kQ0MKLWx0X3NhdmVfTEQ9JExECi1sdF9zYXZlX0dDQz0kR0NDCi1HQ0M9JEdYWAotbHRfc2F2ZV93aXRoX2dudV9sZD0kd2l0aF9nbnVfbGQKLWx0X3NhdmVfcGF0aF9MRD0kbHRfY3ZfcGF0aF9MRAotaWYgdGVzdCAtbiAiJHtsdF9jdl9wcm9nX2dudV9sZGN4eCtzZXR9IjsgdGhlbgotICBsdF9jdl9wcm9nX2dudV9sZD0kbHRfY3ZfcHJvZ19nbnVfbGRjeHgKLWVsc2UKLSAgJGFzX3Vuc2V0IGx0X2N2X3Byb2dfZ251X2xkCi1maQotaWYgdGVzdCAtbiAiJHtsdF9jdl9wYXRoX0xEQ1hYK3NldH0iOyB0aGVuCi0gIGx0X2N2X3BhdGhfTEQ9JGx0X2N2X3BhdGhfTERDWFgKLWVsc2UKLSAgJGFzX3Vuc2V0IGx0X2N2X3BhdGhfTEQKLWZpCi10ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAotQ0M9JHtDWFgtImMrKyJ9Ci1jb21waWxlcj0kQ0MKLV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLQotIyBXZSBkb24ndCB3YW50IC1mbm8tZXhjZXB0aW9uIHdlbiBjb21waWxpbmcgQysrIGNvZGUsIHNvIHNldCB0aGUKLSMgbm9fYnVpbHRpbl9mbGFnIHNlcGFyYXRlbHkKLWlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKLWVsc2UKLSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQotZmkKLQotaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgIyBTZXQgdXAgZGVmYXVsdCBHTlUgQysrIGNvbmZpZ3VyYXRpb24KLQotICBBQ19QUk9HX0xECi0KLSAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCi0gICMgYXJjaGl2aW5nIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGF0IEdOVSBsZCBpcyBiZWluZyB1c2VkLgotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0KLSAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0KLSAgICAjIElmIGFyY2hpdmVfY21kcyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQotICAgICMgWFhYIEkgdGhpbmsgd2xhcmMgY2FuIGJlIGVsaW1pbmF0ZWQgaW4gbHRjZi1jeHgsIGJ1dCBJIG5lZWQgdG8KLSAgICAjICAgICBpbnZlc3RpZ2F0ZSBpdCBhIGxpdHRsZSBiaXQgbW9yZS4gKE1NKQotICAgIHdsYXJjPScke3dsfScKLQotICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KLSAgICBpZiBldmFsICJgJENDIC1wcmludC1wcm9nLW5hbWU9bGRgIC0taGVscCAyPiYxIiB8IFwKLQlncmVwICduby13aG9sZS1hcmNoaXZlJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJwotICAgIGVsc2UKLSAgICAgIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KLSAgICBmaQotICBlbHNlCi0gICAgd2l0aF9nbnVfbGQ9bm8KLSAgICB3bGFyYz0KLQotICAgICMgQSBnZW5lcmljIGFuZCB2ZXJ5IHNpbXBsZSBkZWZhdWx0IHNoYXJlZCBsaWJyYXJ5IGNyZWF0aW9uCi0gICAgIyBjb21tYW5kIGZvciBHTlUgQysrIGZvciB0aGUgY2FzZSB3aGVyZSBpdCB1c2VzIHRoZSBuYXRpdmUKLSAgICAjIGxpbmtlciwgaW5zdGVhZCBvZiBHTlUgbGQuICBJZiBwb3NzaWJsZSwgdGhpcyBzZXR0aW5nIHNob3VsZAotICAgICMgb3ZlcnJpZGRlbiB0byB0YWtlIGFkdmFudGFnZSBvZiB0aGUgbmF0aXZlIGxpbmtlciBmZWF0dXJlcyBvbgotICAgICMgdGhlIHBsYXRmb3JtIGl0IGlzIGJlaW5nIHVzZWQgb24uCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJwotICBmaQotCi0gICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLSAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0gICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJcLUwiJwotCi1lbHNlCi0gIEdYWD1ubwotICB3aXRoX2dudV9sZD1ubwotICB3bGFyYz0KLWZpCi0KLSMgUE9SVE1FOiBmaWxsIGluIGEgZGVzY3JpcHRpb24gb2YgeW91ciBzeXN0ZW0ncyBDKysgbGluayBjaGFyYWN0ZXJpc3RpY3MKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKLV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCi1jYXNlICRob3N0X29zIGluCi0gIGFpeDMqKQotICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICA7OwotICBhaXhbWzQtOV1dKikKLSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgICAgIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAotICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCi0gICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCi0gICAgICBleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JwotICAgICAgbm9fZW50cnlfZmxhZz0iIgotICAgIGVsc2UKLSAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLQotICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCi0gICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLSAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0gICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuW1syM11dfGFpeDQuW1syM11dLip8YWl4W1s1LTldXSopCi0JZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCi0JICBjYXNlICRsZF9mbGFnIGluCi0JICAqLWJydGwqKQotCSAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcwotCSAgICBicmVhawotCSAgICA7OwotCSAgZXNhYwotCWRvbmUKLQk7OwotICAgICAgZXNhYwotCi0gICAgICBleHBfc3ltX2ZsYWc9Jy1iZXhwb3J0JwotICAgICAgbm9fZW50cnlfZmxhZz0nLWJub2VudHJ5JwotICAgIGZpCi0KLSAgICAjIFdoZW4gbGFyZ2UgZXhlY3V0YWJsZXMgb3Igc2hhcmVkIG9iamVjdHMgYXJlIGJ1aWx0LCBBSVggbGQgY2FuCi0gICAgIyBoYXZlIHByb2JsZW1zIGNyZWF0aW5nIHRoZSB0YWJsZSBvZiBjb250ZW50cy4gIElmIGxpbmtpbmcgYSBsaWJyYXJ5Ci0gICAgIyBvciBwcm9ncmFtIHJlc3VsdHMgaW4gImVycm9yIFRPQyBvdmVyZmxvdyIgYWRkIC1tbWluaW1hbC10b2MgdG8KLSAgICAjIENYWEZMQUdTL0NGTEFHUyBmb3IgZysrL2djYy4gIEluIHRoZSBjYXNlcyB3aGVyZSB0aGF0IGlzIG5vdAotICAgICMgZW5vdWdoIHRvIGZpeCB0aGUgcHJvYmxlbSwgYWRkIC1XbCwtYmJpZ3RvYyB0byBMREZMQUdTLgotCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCi0gICAgX0xUX0FDX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi0KLSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMDEyXV18YWl4NC5bWzAxMl1dLiopCi0gICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKLSAgICAgICMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKwotCWNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKLQlpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCi0JICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCBncmVwIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAotCXRoZW4KLQkgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgotCSAgOgotCWVsc2UKLQkgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKLQkgICMgSXQgZmFpbHMgdG8gZmluZCB1bmluc3RhbGxlZCBsaWJyYXJpZXMgd2hlbiB0aGUgdW5pbnN0YWxsZWQKLQkgICMgcGF0aCBpcyBub3QgbGlzdGVkIGluIHRoZSBsaWJwYXRoLiAgU2V0dGluZyBoYXJkY29kZV9taW51c19MCi0JICAjIHRvIHVuc3VwcG9ydGVkIGZvcmNlcyByZWxpbmtpbmcKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQotCWZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIHNoYXJlZF9mbGFnPSctc2hhcmVkJwotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0Jc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCi0gICAgICBmaQotICAgIGVsc2UKLSAgICAgICMgbm90IHVzaW5nIGdjYwotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQotCSMgY2hva2VzIG9uIC1XbCwtRy4gVGhlIGZvbGxvd2luZyBsaW5lIGlzIGNvcnJlY3Q6Ci0Jc2hhcmVkX2ZsYWc9Jy1HJwotICAgICAgZWxzZQotCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCi0JZWxzZQotCSAgc2hhcmVkX2ZsYWc9JyR7d2x9LWJNOlNSRScKLQlmaQotICAgICAgZmkKLSAgICBmaQotCi0gICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCi0gICAgIyB1bmRlcnNjb3JlIChfKSwgc28gaXQgaXMgYmV0dGVyIHRvIGdlbmVyYXRlIGEgbGlzdCBvZiBzeW1ib2xzIHRvIGV4cG9ydC4KLSAgICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotICAgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCi0gICAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKLSAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgX0xUX0FDX1NZU19MSUJQQVRIX0FJWAotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0KLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJcJENDIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBlY2hvICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotICAgICBlbHNlCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKLQlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ii16IG5vZGVmcyIKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKLSAgICAgIGVsc2UKLQkjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkgZXhlY3V0YWJsZS4KLQlfTFRfQUNfU1lTX0xJQlBBVEhfQUlYCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0JIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLQkjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVybm90b2snCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwotCSMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKLSAgICAgIGZpCi0gICAgZmkKLSAgICA7OwotCi0gIGJlb3MqKQotICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICAjIEpvc2VwaCBCZWNrZW5iYWNoIDxqcmIzQGJlc3QuY29tPiBzYXlzIHNvbWUgcmVsZWFzZXMgb2YgZ2NjCi0gICAgICAjIHN1cHBvcnQgLS11bmRlZmluZWQuICBUaGlzIGRlc2VydmVzIHNvbWUgaW52ZXN0aWdhdGlvbi4gIEZJWE1FCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0gICAgZWxzZQotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIGZpCi0gICAgOzsKLQotICBjaG9ydXMqKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgIGVzYWMKLSAgICA7OwotCi0gIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKikKLSAgICAjIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gICAgX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0KLSAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSAgICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQljcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0gICAgICBlbHNlCi0JZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSAgICAgIGZpfgotICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotICAgIGVsc2UKLSAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICBmaQotICA7OwotICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCi0gICAgICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JycKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCi0gICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyA7IHRoZW4KLSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKLSAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgIGlmIHRlc3QgIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiAhPSAieWVzIjsgdGhlbgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZHN5bXV0aWx9IgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgIGZpCi0gICAgICBlbHNlCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICB4bGMqKQotICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCi0gICAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1xbWtzaHJvYmogJHt3bH0tc2luZ2xlX21vZHVsZSAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taW5zdGFsbF9uYW1lICR7d2x9YGVjaG8gJHJwYXRoLyRzb25hbWVgICR4bGN2ZXJzdHJpbmcnCi0gICAgICAgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSckQ0MgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgLWJ1bmRsZSAkbGlib2JqcyAkZGVwbGlicyRjb21waWxlcl9mbGFncycKLSAgICAgICAgICAjIERvbid0IGZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBsZCAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGZsYWcsIGl0IGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgZGFyd2luIGxkcwotICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgLWUgInMsIy4qLCwiIC1lICJzLF5bICAgIF0qLCwiIC1lICJzLF5cKC4uKlwpLF8mLCIgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltfiRDQyAtcW1rc2hyb2JqICR7d2x9LXNpbmdsZV9tb2R1bGUgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWluc3RhbGxfbmFtZSAke3dsfSRycGF0aC8kc29uYW1lICR4bGN2ZXJzdHJpbmd+bm1lZGl0IC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwotICAgICAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAtZSAicywjLiosLCIgLWUgInMsXlsgICAgXSosLCIgLWUgInMsXlwoLi4qXCksXyYsIiA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+JENDICRhbGxvd191bmRlZmluZWRfZmxhZyAgLW8gJGxpYiAtYnVuZGxlICRsaWJvYmpzICRkZXBsaWJzJGNvbXBpbGVyX2ZsYWdzfm5tZWRpdCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKLSAgICAgICAgICA7OwotICAgICAgICopCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIGZpCi0gICAgICAgIDs7Ci0KLSAgZGd1eCopCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGVjKysqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgICAgZ2hjeCopCi0JIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JOzsKLSAgICAgICopCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGZyZWVic2RbWzEyXV0qKQotICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgcmVwb3J0ZWQgdG8gYmUgZmFpcmx5IGJyb2tlbiBiZWZvcmUgc3dpdGNoIHRvIEVMRgotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICA7OwotICBmcmVlYnNkLWVsZiopCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgOzsKLSAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICMgRnJlZUJTRCAzIGFuZCBsYXRlciB1c2UgR05VIEMrKyBhbmQgR05VIGxkIHdpdGggc3RhbmRhcmQgRUxGCi0gICAgIyBjb252ZW50aW9ucwotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCi0gICAgOzsKLSAgZ251KikKLSAgICA7OwotICBocHV4OSopCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLSAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzICMgTm90IGluIHRoZSBzZWFyY2ggUEFUSCwKLQkJCQkjIGJ1dCBhcyB0aGUgZGVmYXVsdAotCQkJCSMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0KLSAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgIENDKikKLSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLSAgICBhQ0MqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1iICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0gICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLSAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotICAgICAgIwotICAgICAgIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KLSAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKLSAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8IGdyZXAgIltbLV1dTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKLSAgICAgIDs7Ci0gICAgKikKLSAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRybSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgZWxzZQotICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLSAgICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGhwdXgxMCp8aHB1eDExKikKLSAgICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0KLSAgICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgICBocHBhKjY0KnxpYTY0KikgOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKLSAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICBmaQotICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgaHBwYSo2NCp8aWE2NCopCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgOzsKLSAgICAqKQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcyAjIE5vdCBpbiB0aGUgc2VhcmNoIFBBVEgsCi0JCQkJCSAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0Ci0JCQkJCSAgICAgICMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICA7OwotICAgIGVzYWMKLQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBDQyopCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICBhQ0MqKQotCWNhc2UgJGhvc3RfY3B1IGluCi0JaHBwYSo2NCopCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWlhNjQqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQkqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWVzYWMKLQkjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0JIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0JIwotCSMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KLQkjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQotCSMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKLQkjIGRlcGVuZGVuY2llcy4KLQlvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgZ3JlcCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBlY2hvICRsaXN0JwotCTs7Ci0gICAgICAqKQotCWlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0JICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCi0JICAgIGNhc2UgJGhvc3RfY3B1IGluCi0JICAgIGhwcGEqNjQqKQotCSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLQkgICAgICA7OwotCSAgICBpYTY0KikKLQkgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICAgICAgOzsKLQkgICAgKikKLQkgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLQkgICAgICA7OwotCSAgICBlc2FjCi0JICBmaQotCWVsc2UKLQkgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCSAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCWZpCi0JOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgaW50ZXJpeFtbMy05XV0qKQotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KLSAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCi0gICAgIyBIYWNrOiBPbiBJbnRlcml4IDMueCwgd2UgY2Fubm90IGNvbXBpbGUgUElDIGJlY2F1c2Ugb2YgYSBicm9rZW4gZ2NjLgotICAgICMgSW5zdGVhZCwgc2hhcmVkIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0IGFuIGltYWdlIGJhc2UgKDB4MTAwMDAwMDAgYnkKLSAgICAjIGRlZmF1bHQpIGFuZCByZWxvY2F0ZWQgaWYgdGhleSBjb25mbGljdCwgd2hpY2ggaXMgYSBzbG93IHZlcnkgbWVtb3J5Ci0gICAgIyBjb25zdW1pbmcgYW5kIGZyYWdtZW50aW5nIHByb2Nlc3MuICBUbyBhdm9pZCB0aGlzLCB3ZSBwaWNrIGEgcmFuZG9tLAotICAgICMgMjU2IEtpQi1hbGlnbmVkIGltYWdlIGJhc2UgYmV0d2VlbiAweDUwMDAwMDAwIGFuZCAweDZGRkMwMDAwIGF0IGxpbmsKLSAgICAjIHRpbWUuICBNb3ZpbmcgdXAgZnJvbSAweDEwMDAwMDAwIGFsc28gYWxsb3dzIG1vcmUgc2JyaygyKSBzcGFjZS4KLSAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgIDs7Ci0gIGlyaXg1KiB8IGlyaXg2KikKLSAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgQ0MqKQotCSMgU0dJIEMrKwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQotCSMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwotCSMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcwotCSMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSBpbnN0YW50aWF0ZWQgdGVtcGxhdGVzIGFyZSBpbmNsdWRlZAotCSMgaW4gdGhlIGFyY2hpdmUuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYXIgLVdSLC11IC1vICRvbGRsaWIgJG9sZG9ianMnCi0JOzsKLSAgICAgICopCi0JaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLQkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCSAgZWxzZQotCSAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nYCAtbyAkbGliJwotCSAgZmkKLQlmaQotCV9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotCTs7Ci0gICAgZXNhYwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotICAgIDs7Ci0gIGxpbnV4KiB8IGsqYnNkKi1nbnUpCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIEtDQyopCi0JIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgotCi0JIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQotCSMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKLQkjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHM7IG12IFwkdGVtcGxpYiAkbGliJwotCSMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLQkjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkjCi0JIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotCSMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0JIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQotCSMgZGVwZW5kZW5jaWVzLgotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCBncmVwICJsZCJgOyBybSAtZiBsaWJjb25mdGVzdCRzaGFyZWRfZXh0OyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGgsJGxpYmRpcicKLQlfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0KLQkjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKLQkjICJDQyAtQnN0YXRpYyIsIHdoZXJlICJDQyIgaXMgdGhlIEtBSSBDKysgY29tcGlsZXIuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtQnN0YXRpYyAtbyAkb2xkbGliICRvbGRvYmpzJwotCTs7Ci0gICAgICBpY3BjKikKLQkjIEludGVsIEMrKwotCXdpdGhfZ251X2xkPXllcwotCSMgdmVyc2lvbiA4LjAgYW5kIGFib3ZlIG9mIGljcGMgY2hva2Ugb24gbXVsdGlwbHkgZGVmaW5lZCBzeW1ib2xzCi0JIyBpZiB3ZSBhZGQgJHByZWRlcF9vYmplY3RzIGFuZCAkcG9zdGRlcF9vYmplY3RzLCBob3dldmVyIDcuMSBhbmQKLQkjIGVhcmxpZXIgZG8gbm90IGFkZCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzLgotCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotCSoiVmVyc2lvbiA3LiIqKQotICAJICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotCSAgOzsKLQkqKSAgIyBWZXJzaW9uIDguMCBvciBuZXdlcgotCSAgdG1wX2lkeW49Ci0JICBjYXNlICRob3N0X2NwdSBpbgotCSAgICBpYTY0KikgdG1wX2lkeW49JyAtaV9keW5hbWljJzs7Ci0JICBlc2FjCi0gIAkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0JICA7OwotCWVzYWMKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQlfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQk7OwotICAgICAgcGdDQyogfCBwZ2NwcCopCi0gICAgICAgICMgUG9ydGxhbmQgR3JvdXAgQysrIGNvbXBpbGVyCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gIAlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQlfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLSAgICAgICAgOzsKLSAgICAgIGN4eCopCi0JIyBDb21wYXEgQysrCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAgLW8gJGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scycKLQotCXJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLQkjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkjCi0JIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotCSMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0JIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQotCSMgZGVwZW5kZW5jaWVzLgotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJsZCJgOyB0ZW1wbGlzdD1gZWNobyAkdGVtcGxpc3QgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGVjaG8gJGxpc3QnCi0JOzsKLSAgICAgICopCi0JY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCi0JKlN1blwgQyopCi0JICAjIFN1biBDKysgNS45Ci0JICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMnCi0JICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQotCSAgIyBOb3Qgc3VyZSB3aGV0aGVyIHNvbWV0aGluZyBiYXNlZCBvbgotCSAgIyAkQ0MgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IC1vIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQgMj4mMQotCSAgIyB3b3VsZCBiZSBiZXR0ZXIuCi0JICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nZWNobycKLQotCSAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCi0JICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKLQkgICMgbmVjZXNzYXJ5IHRvIG1ha2Ugc3VyZSBpbnN0YW50aWF0ZWQgdGVtcGxhdGVzIGFyZSBpbmNsdWRlZAotCSAgIyBpbiB0aGUgYXJjaGl2ZS4KLQkgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLXhhciAtbyAkb2xkbGliICRvbGRvYmpzJwotCSAgOzsKLQllc2FjCi0JOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgbHlueG9zKikKLSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLSAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgOzsKLSAgbTg4ayopCi0gICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIDs7Ci0gIG12cyopCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGN4eCopCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICAqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgIGVzYWMKLSAgICA7OwotICBuZXRic2QqKQotICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkbGlua2VyX2ZsYWdzJwotICAgICAgd2xhcmM9Ci0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgZmkKLSAgICAjIFdvcmthcm91bmQgc29tZSBicm9rZW4gcHJlLTEuNSB0b29sY2hhaW5zCi0gICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgZ3JlcCBjb25mdGVzdC4kb2JqZXh0IHwgJFNFRCAtZSAiczotbGdjYyAtbGMgLWxnY2M6OiInCi0gICAgOzsKLSAgb3BlbmJzZDIqKQotICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGZhaXJseSBicm9rZW4KLSAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgOzsKLSAgb3BlbmJzZCopCi0gICAgaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0gICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotCV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCi0JX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJwotICAgICAgZmkKLSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotICAgIGVsc2UKLSAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICBmaQotICAgIDs7Ci0gIG9zZjMqKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBLQ0MqKQotCSMgS3VjayBhbmQgQXNzb2NpYXRlcywgSW5jLiAoS0FJKSBDKysgQ29tcGlsZXIKLQotCSMgS0NDIHdpbGwgb25seSBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeSBpZiB0aGUgb3V0cHV0IGZpbGUKLQkjIGVuZHMgd2l0aCAiLnNvIiAob3IgIi5zbCIgZm9yIEhQLVVYKSwgc28gcmVuYW1lIHRoZSBsaWJyYXJ5Ci0JIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYjsgbXYgXCR0ZW1wbGliICRsaWInCi0KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0KLQkjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKLQkjICJDQyAtQnN0YXRpYyIsIHdoZXJlICJDQyIgaXMgdGhlIEtBSSBDKysgY29tcGlsZXIuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtQnN0YXRpYyAtbyAkb2xkbGliICRvbGRvYmpzJwotCi0JOzsKLSAgICAgIFJDQyopCi0JIyBSYXRpb25hbCBDKysgMi40LjEKLQkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JOzsKLSAgICAgIGN4eCopCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KLQkjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkjCi0JIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQotCSMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCi0JIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQotCSMgZGVwZW5kZW5jaWVzLgotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwICJsZCIgfCBncmVwIC12ICJsZDoiYDsgdGVtcGxpc3Q9YGVjaG8gJHRlbXBsaXN0IHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGVjaG8gJGxpc3QnCi0JOzsKLSAgICAgICopCi0JaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotCSAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgIlwtTCInCi0KLQllbHNlCi0JICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQkgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQlmaQotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIG9zZjQqIHwgb3NmNSopCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIEtDQyopCi0JIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgotCi0JIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQotCSMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKLQkjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwotCSMgdGhlIEtBSSBDKysgY29tcGlsZXIuCi0JX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb2xkbGliICRvbGRvYmpzJwotCTs7Ci0gICAgICBSQ0MqKQotCSMgUmF0aW9uYWwgQysrIDIuNC4xCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICBjeHgqKQotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lfgotCSAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgLVdsLC1pbnB1dCAtV2wsJGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvIC1zZXRfdmVyc2lvbgkkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+Ci0JICAkcm0gJGxpYi5leHAnCi0KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotCi0JIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotCSMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotCSMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSMKLQkjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCi0JIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KLQkjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5Ci0JIyBkZXBlbmRlbmNpZXMuCi0Jb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgImxkIiB8IGdyZXAgLXYgImxkOiJgOyB0ZW1wbGlzdD1gZWNobyAkdGVtcGxpc3QgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZC4qJFwpL1wxLyJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZWNobyAkbGlzdCcKLQk7OwotICAgICAgKikKLQlpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCSAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwotCSAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgIlwtTCInCi0KLQllbHNlCi0JICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQkgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQlmaQotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIHBzb3MqKQotICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICA7OwotICBzdW5vczQqKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBDQyopCi0JIyBTdW4gQysrIDQueAotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgICAgbGNjKikKLQkjIEx1Y2lkCi0JIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCTs7Ci0gICAgICAqKQotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgIGVzYWMKLSAgICA7OwotICBzb2xhcmlzKikKLSAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgQ0MqKQotCSMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCi0JX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfiRlY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAke3dsfS1NICR7d2x9JGxpYi5leHAgLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRybSAkbGliLmV4cCcKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLQljYXNlICRob3N0X29zIGluCi0JICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OwotCSAgKikKLQkgICAgIyBUaGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgY29tYmluZSBhbmQgcmVvcmRlciBsaW5rZXIgb3B0aW9ucywKLQkgICAgIyBidXQgdW5kZXJzdGFuZHMgYC16IGxpbmtlcl9mbGFnJy4KLQkgICAgIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKLQkgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwotCSAgICA7OwotCWVzYWMKLQlfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLQotCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotCi0JIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCi0JIyAiQ0MgLXhhciIsIHdoZXJlICJDQyIgaXMgdGhlIFN1biBDKysgY29tcGlsZXIuICBUaGlzIGlzCi0JIyBuZWNlc3NhcnkgdG8gbWFrZSBzdXJlIGluc3RhbnRpYXRlZCB0ZW1wbGF0ZXMgYXJlIGluY2x1ZGVkCi0JIyBpbiB0aGUgYXJjaGl2ZS4KLQlfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC14YXIgLW8gJG9sZGxpYiAkb2xkb2JqcycKLQk7OwotICAgICAgZ2N4KikKLQkjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKLQotCSMgVGhlIEMrKyBjb21waWxlciBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBhcmNoaXZlLgotCV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgJExERkxBR1MgLWFyY2hpdmUgLW8gJG9sZGxpYiAkb2xkb2JqcycKLQk7OwotICAgICAgKikKLQkjIEdOVSBDKysgY29tcGlsZXIgd2l0aCBTb2xhcmlzIGxpbmtlcgotCWlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCi0JICBpZiAkQ0MgLS12ZXJzaW9uIHwgZ3JlcCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJJENDIC1zaGFyZWQgLW5vc3RkbGliICR7d2x9LU0gJHdsJGxpYi5leHAgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JHJtICRsaWIuZXhwJwotCi0JICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKLQkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi0JICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0iJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCBncmVwIFwiXC1MXCIiCi0JICBlbHNlCi0JICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKLQkgICAgIyBwbGF0Zm9ybS4KLQkgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkJJENDIC1HIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRybSAkbGliLmV4cCcKLQotCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0JICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgotCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9IiRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8IGdyZXAgXCJcLUxcIiIKLQkgIGZpCi0KLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCi0JICBjYXNlICRob3N0X29zIGluCi0JICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OwotCSAgKikKLQkgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCi0JICAgIDs7Ci0JICBlc2FjCi0JZmkKLQk7OwotICAgIGVzYWMKLSAgICA7OwotICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bWzAxXV0uW1sxMF1dKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLltbMDI0XV0qKQotICAgIF9MVF9BQ19UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwotCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIENDKikKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCTs7Ci0gICAgICAqKQotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCTs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCi0gICAgIyBOb3RlOiBXZSBjYW4gTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKLSAgICAjIGxpbmsgd2l0aCAtbGMsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGFueSBzeW1ib2xzIHVzZWQgZnJvbSBsaWJjIHRvCi0gICAgIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCi0gICAgIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAotICAgICMgdGhvdWdoLCB3aGljaCBkb2VzIGNhdGNoIHNvbWUgYmFkIHN5bWJvbHMgYnV0IGlzbid0IGFzIGhlYXZ5LWhhbmRlZAotICAgICMgYXMgLXogZGVmcy4KLSAgICAjIEZvciBzZWN1cml0eSByZWFzb25zLCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgYWx3YXlzCi0gICAgIyB1c2UgYWJzb2x1dGUgcGF0aHMgZm9yIG5hbWluZyBzaGFyZWQgbGlicmFyaWVzLCBhbmQgZXhjbHVkZSB0aGUKLSAgICAjIERUX1JVTlBBVEggdGFnIGZyb20gZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcy4gIEJ1dCBkb2luZyBzbwotICAgICMgcmVxdWlyZXMgdGhhdCB5b3UgY29tcGlsZSBldmVyeXRoaW5nIHR3aWNlLCB3aGljaCBpcyBhIHBhaW4uCi0gICAgIyBTbyB0aGF0IGJlaGF2aW91ciBpcyBvbmx5IGVuYWJsZWQgaWYgU0NPQUJTUEFUSCBpcyBzZXQgdG8gYQotICAgICMgbm9uLWVtcHR5IHZhbHVlIGluIHRoZSBlbnZpcm9ubWVudC4gIE1vc3QgbGlrZWx5IG9ubHkgdXNlZnVsIGZvcgotICAgICMgY3JlYXRpbmcgb2ZmaWNpYWwgZGlzdHJpYnV0aW9ucyBvZiBwYWNrYWdlcy4KLSAgICAjIFRoaXMgaXMgYSBoYWNrIHVudGlsIGxpYnRvb2wgb2ZmaWNpYWxseSBzdXBwb3J0cyBhYnNvbHV0ZSBwYXRoCi0gICAgIyBuYW1lcyBmb3Igc2hhcmVkIGxpYnJhcmllcy4KLSAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKLSAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosbm9kZWZzJwotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1SLCRsaWJkaXJgJwotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JwotICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJleHBvcnQnCi0gICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwotCi0gICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIENDKikKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsXCR7U0NPQUJTUEFUSDorJHtpbnN0YWxsX2xpYmRpcn0vfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQk7OwotICAgIGVzYWMKLSAgICA7OwotICB0YW5kZW0qKQotICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICBOQ0MqKQotCSMgTm9uU3RvcC1VWCBOQ0MgMy4yMAotCSMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotICAgICAgKikKLQkjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JOzsKLSAgICBlc2FjCi0gICAgOzsKLSAgdnh3b3JrcyopCi0gICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIDs7Ci0gICopCi0gICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgIDs7Ci1lc2FjCi1BQ19NU0dfUkVTVUxUKFskX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKV0pCi10ZXN0ICIkX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCi0KLV9MVF9BQ19UQUdWQVIoR0NDLCAkMSk9IiRHWFgiCi1fTFRfQUNfVEFHVkFSKExELCAkMSk9IiRMRCIKLQotQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUCgkMSkKLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi0KLUFDX0xJQlRPT0xfQ09ORklHKCQxKQotCi1BQ19MQU5HX1BPUAotQ0M9JGx0X3NhdmVfQ0MKLUxEQ1hYPSRMRAotTEQ9JGx0X3NhdmVfTEQKLUdDQz0kbHRfc2F2ZV9HQ0MKLXdpdGhfZ251X2xkY3h4PSR3aXRoX2dudV9sZAotd2l0aF9nbnVfbGQ9JGx0X3NhdmVfd2l0aF9nbnVfbGQKLWx0X2N2X3BhdGhfTERDWFg9JGx0X2N2X3BhdGhfTEQKLWx0X2N2X3BhdGhfTEQ9JGx0X3NhdmVfcGF0aF9MRAotbHRfY3ZfcHJvZ19nbnVfbGRjeHg9JGx0X2N2X3Byb2dfZ251X2xkCi1sdF9jdl9wcm9nX2dudV9sZD0kbHRfc2F2ZV93aXRoX2dudV9sZAotXSkjIEFDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHCi0KLSMgQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUChbVEFHTkFNRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQotIyBjb21waWxlciBvdXRwdXQgd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCi0jIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQotIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUF0sCi1bQUNfUkVRVUlSRShbTFRfQUNfUFJPR19TRURdKWRubAotZG5sIHdlIGNhbid0IHVzZSB0aGUgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIGhlcmUsCi1kbmwgYmVjYXVzZSBpdCBjb250YWlucyBjb2RlIGludGVuZGVkIGZvciBhbiBleGVjdXRhYmxlLAotZG5sIG5vdCBhIGxpYnJhcnkuICBJdCdzIHBvc3NpYmxlIHdlIHNob3VsZCBsZXQgZWFjaAotZG5sIHRhZyBkZWZpbmUgYSBuZXcgbHRfPz8/P19saW5rX3Rlc3RfY29kZSB2YXJpYWJsZSwKLWRubCBidXQgaXQncyBvbmx5IHVzZWQgaGVyZS4uLgotaWZlbHNlKFskMV0sW10sW2NhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxFT0YKLWludCBhOwotdm9pZCBmb28gKHZvaWQpIHsgYSA9IDA7IH0KLUVPRgotXSxbJDFdLFtDWFhdLFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8RU9GCi1jbGFzcyBGb28KLXsKLXB1YmxpYzoKLSAgRm9vICh2b2lkKSB7IGEgPSAwOyB9Ci1wcml2YXRlOgotICBpbnQgYTsKLX07Ci1FT0YKLV0sWyQxXSxbRjc3XSxbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotICAgICAgc3Vicm91dGluZSBmb28KLSAgICAgIGltcGxpY2l0IG5vbmUKLSAgICAgIGludGVnZXIqNCBhCi0gICAgICBhPTAKLSAgICAgIHJldHVybgotICAgICAgZW5kCi1FT0YKLV0sWyQxXSxbR0NKXSxbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotcHVibGljIGNsYXNzIGZvbyB7Ci0gIHByaXZhdGUgaW50IGE7Ci0gIHB1YmxpYyB2b2lkIGJhciAodm9pZCkgewotICAgIGEgPSAwOwotICB9Ci19OwotRU9GCi1dKQotZG5sIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQotZG5sIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KLWlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gICMgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5Ci0gICMgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgotCi0gICMgU2VudGluZWwgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoZXRoZXIgb3Igbm90IHdlIGFyZSBiZWZvcmUKLSAgIyB0aGUgY29uZnRlc3Qgb2JqZWN0IGZpbGUuCi0gIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KLQotICAjIFRoZSBgKicgaW4gdGhlIGNhc2UgbWF0Y2hlcyBmb3IgYXJjaGl0ZWN0dXJlcyB0aGF0IHVzZSBgY2FzZScgaW4KLSAgIyAkb3V0cHV0X3ZlcmJvc2VfY21kIGNhbiB0cmlnZ2VyIGdsb2IgZXhwYW5zaW9uIGR1cmluZyB0aGUgbG9vcAotICAjIGV2YWwgd2l0aG91dCB0aGlzIHN1YnN0aXR1dGlvbi4KLSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9YCRlY2hvICJYJG91dHB1dF92ZXJib3NlX2xpbmtfY21kIiB8ICRYc2VkIC1lICIkbm9fZ2xvYl9zdWJzdCJgCi0KLSAgZm9yIHAgaW4gYGV2YWwgJG91dHB1dF92ZXJib3NlX2xpbmtfY21kYDsgZG8KLSAgICBjYXNlICRwIGluCi0KLSAgICAtTCogfCAtUiogfCAtbCopCi0gICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KLSAgICAgICAjIFJlbW92ZSB0aGUgc3BhY2UuCi0gICAgICAgaWYgdGVzdCAkcCA9ICItTCIgXAotCSAgfHwgdGVzdCAkcCA9ICItUiI7IHRoZW4KLQkgcHJldj0kcAotCSBjb250aW51ZQotICAgICAgIGVsc2UKLQkgcHJldj0KLSAgICAgICBmaQotCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgY2FzZSAkcCBpbgotCSAtTCogfCAtUiopCi0JICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCi0JICAgIyBwcm92aWRlZCB0aGUgdXNlci4gIFRoZSBwb3N0ZGVwcyBhbHJlYWR5IGNvbWUgYWZ0ZXIgdGhlCi0JICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCi0JICAgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSkiOyB0aGVuCi0JICAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke3ByZXZ9JHtwfSIKLQkgICBlbHNlCi0JICAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke19MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9ICR7cHJldn0ke3B9IgotCSAgIGZpCi0JICAgOzsKLQkgIyBUaGUgIi1sIiBjYXNlIHdvdWxkIG5ldmVyIGNvbWUgYmVmb3JlIHRoZSBvYmplY3QgYmVpbmcKLQkgIyBsaW5rZWQsIHNvIGRvbid0IGJvdGhlciBoYW5kbGluZyB0aGlzIGNhc2UuCi0JIGVzYWMKLSAgICAgICBlbHNlCi0JIGlmIHRlc3QgLXogIiRfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSkiOyB0aGVuCi0JICAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke3ByZXZ9JHtwfSIKLQkgZWxzZQotCSAgIF9MVF9BQ19UQUdWQVIocG9zdGRlcHMsICQxKT0iJHtfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSl9ICR7cHJldn0ke3B9IgotCSBmaQotICAgICAgIGZpCi0gICAgICAgOzsKLQotICAgICouJG9iamV4dCkKLSAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKLSAgICAgICAjIG9uY2UgaW4gdGhlIGNvbXBpbGVyIG91dHB1dC4KLSAgICAgICBpZiB0ZXN0ICIkcCIgPSAiY29uZnRlc3QuJG9iamV4dCI7IHRoZW4KLQkgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT15ZXMKLQkgY29udGludWUKLSAgICAgICBmaQotCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKSI7IHRoZW4KLQkgICBfTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9IiRwIgotCSBlbHNlCi0JICAgX0xUX0FDX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPSIkX0xUX0FDX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpICRwIgotCSBmaQotICAgICAgIGVsc2UKLQkgaWYgdGVzdCAteiAiJF9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkiOyB0aGVuCi0JICAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0iJHAiCi0JIGVsc2UKLQkgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSIkX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSAkcCIKLQkgZmkKLSAgICAgICBmaQotICAgICAgIDs7Ci0KLSAgICAqKSA7OyAjIElnbm9yZSB0aGUgcmVzdC4KLQotICAgIGVzYWMKLSAgZG9uZQotCi0gICMgQ2xlYW4gdXAuCi0gIHJtIC1mIGEub3V0IGEuZXhlCi1lbHNlCi0gIGVjaG8gImxpYnRvb2wubTQ6IGVycm9yOiBwcm9ibGVtIGNvbXBpbGluZyAkMSB0ZXN0IHByb2dyYW0iCi1maQotCi0kcm0gLWYgY29uZmVzdC4kb2JqZXh0Ci0KLV9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSk9Ci1pZiB0ZXN0IC1uICIkX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKSI7IHRoZW4KLSAgX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX2RpcnMsICQxKT1gZWNobyAiICR7X0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKX0iIHwgJHtTRUR9IC1lICdzISAtTCEgIWcnIC1lICdzIV4gISEnYAotZmkKLQotIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KLWlmZWxzZShbJDFdLFtDWFhdLAotW2Nhc2UgJGhvc3Rfb3MgaW4KLWludGVyaXhbWzMtOV1dKikKLSAgIyBJbnRlcml4IDMuNSBpbnN0YWxscyBjb21wbGV0ZWx5IGhvc2VkIC5sYSBmaWxlcyBmb3IgQysrLCBzbyByYXRoZXIgdGhhbgotICAjIGhhY2sgYWxsIGFyb3VuZCBpdCwgbGV0J3MganVzdCB0cnVzdCAiZysrIiB0byBEVFJULgotICBfTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCQxKT0KLSAgX0xUX0FDX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsJDEpPQotICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCQxKT0KLSAgOzsKLQotbGludXgqKQotICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLSAgKlN1blwgQyopCi0gICAgIyBTdW4gQysrIDUuOQotICAgICMKLSAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi0gICAgIyAtbGlicmFyeT1zdGxwb3J0NCBkZXBlbmRzIG9uIGl0LgotICAgIGNhc2UgIiAkQ1hYICRDWFhGTEFHUyAiIGluCi0gICAgKiIgLWxpYnJhcnk9c3RscG9ydDQgIiopCi0gICAgICBzb2xhcmlzX3VzZV9zdGxwb3J0ND15ZXMKLSAgICAgIDs7Ci0gICAgZXNhYwotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1zb2xhcmlzKikKLSAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgQ0MqKQotICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLSAgICAjIC1saWJyYXJ5PXN0bHBvcnQ0IGRlcGVuZHMgb24gaXQuCi0gICAgY2FzZSAiICRDWFggJENYWEZMQUdTICIgaW4KLSAgICAqIiAtbGlicmFyeT1zdGxwb3J0NCAiKikKLSAgICAgIHNvbGFyaXNfdXNlX3N0bHBvcnQ0PXllcwotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICAjIEFkZGluZyB0aGlzIHJlcXVpcmVzIGEga25vd24tZ29vZCBzZXR1cCBvZiBzaGFyZWQgbGlicmFyaWVzIGZvcgotICAgICMgU3VuIGNvbXBpbGVyIHZlcnNpb25zIGJlZm9yZSA1LjYsIGVsc2UgUElDIG9iamVjdHMgZnJvbSBhbiBvbGQKLSAgICAjIGFyY2hpdmUgd2lsbCBiZSBsaW5rZWQgaW50byB0aGUgb3V0cHV0LCBsZWFkaW5nIHRvIHN1YnRsZSBidWdzLgotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwotZXNhYwotXSkKLWNhc2UgIiAkX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpICIgaW4KLSoiIC1sYyAiKikgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vIDs7Ci1lc2FjCi1dKSMgQUNfTElCVE9PTF9QT1NUREVQX1BSRURFUAotCi0jIEFDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcnMgZm9yIHRoZSBDIGNvbXBpbGVyIGFyZQotIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhvc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieQotIyBBQ19MSUJUT09MX0NPTkZJRyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0Y3N19DT05GSUddLCBbX0xUX0FDX0xBTkdfRjc3X0NPTkZJRyhGNzcpXSkKLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19GNzdfQ09ORklHXSwKLVtBQ19SRVFVSVJFKFtBQ19QUk9HX0Y3N10pCi1BQ19MQU5HX1BVU0goRm9ydHJhbiA3NykKLQotX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwotX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubwotX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQotX0xUX0FDX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KLV9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KLV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCi1fTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubwotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgZjc3IHRlc3Qgc291cmNlcy4KLWFjX2V4dD1mCi0KLSMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBmNzcgdGVzdCBzb3VyY2VzLgotb2JqZXh0PW8KLV9MVF9BQ19UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAotCi0jIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cwotbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJcCi0gICAgICBzdWJyb3V0aW5lIHQKLSAgICAgIHJldHVybgotICAgICAgZW5kCi0iCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IlwKLSAgICAgIHByb2dyYW0gdAotICAgICAgZW5kCi0iCi0KLSMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi0jIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotbHRfc2F2ZV9DQz0iJENDIgotQ0M9JHtGNzctImY3NyJ9Ci1jb21waWxlcj0kQ0MKLV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLQotQUNfTVNHX0NIRUNLSU5HKFtpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQotQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCi10ZXN0ICIkY2FuX2J1aWxkX3NoYXJlZCIgPSAibm8iICYmIGVuYWJsZV9zaGFyZWQ9bm8KLQotIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCi0jIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCi1jYXNlICRob3N0X29zIGluCi1haXgzKikKLSAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KLSAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KLSAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCi0gICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJwotICBmaQotICA7OwotYWl4W1s0LTldXSopCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KLSAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubwotICBmaQotICA7OwotZXNhYwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCi0jIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KLXRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcwotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQotCi1fTFRfQUNfVEFHVkFSKEdDQywgJDEpPSIkRzc3IgotX0xUX0FDX1RBR1ZBUihMRCwgJDEpPSIkTEQiCi0KLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi0KLUFDX0xJQlRPT0xfQ09ORklHKCQxKQotCi1BQ19MQU5HX1BPUAotQ0M9IiRsdF9zYXZlX0NDIgotXSkjIEFDX0xJQlRPT0xfTEFOR19GNzdfQ09ORklHCi0KLQotIyBBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJRwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJzIGZvciB0aGUgQyBjb21waWxlciBhcmUKLSMgc3VpdGFibHkgZGVmaW5lZC4gIFRob3NlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkKLSMgQUNfTElCVE9PTF9DT05GSUcgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHXSwgW19MVF9BQ19MQU5HX0dDSl9DT05GSUcoR0NKKV0pCi1BQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKX0NPTkZJR10sCi1bQUNfTEFOR19TQVZFCi0KLSMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBKYXZhIHRlc3Qgc291cmNlcy4KLWFjX2V4dD1qYXZhCi0KLSMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBKYXZhIHRlc3Qgc291cmNlcy4KLW9iamV4dD1vCi1fTFRfQUNfVEFHVkFSKG9iamV4dCwgJDEpPSRvYmpleHQKLQotIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKLWx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iY2xhc3MgZm9vIHt9IgotCi0jIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cwotbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSdwdWJsaWMgY2xhc3MgY29uZnRlc3QgeyBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbW11dIGFyZ3YpIHt9OyB9JwotCi0jIGx0bWFpbiBvbmx5IHVzZXMgJENDIGZvciB0YWdnZWQgY29uZmlndXJhdGlvbnMgc28gbWFrZSBzdXJlICRDQyBpcyBzZXQuCi1fTFRfQUNfU1lTX0NPTVBJTEVSCi0KLSMgc2F2ZSB3YXJuaW5ncy9ib2lsZXJwbGF0ZSBvZiBzaW1wbGUgdGVzdCBjb2RlCi1fTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKLV9MVF9MSU5LRVJfQk9JTEVSUExBVEUKLQotIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLWx0X3NhdmVfQ0M9IiRDQyIKLUNDPSR7R0NKLSJnY2oifQotY29tcGlsZXI9JENDCi1fTFRfQUNfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi1fTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi0KLSMgR0NKIGRpZCBub3QgZXhpc3QgYXQgdGhlIHRpbWUgR0NDIGRpZG4ndCBpbXBsaWNpdGx5IGxpbmsgbGliYyBpbi4KLV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotCi1fTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcwotCi1BQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSSgkMSkKLUFDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUMoJDEpCi1BQ19MSUJUT09MX1BST0dfQ0NfQ19PKCQxKQotQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUygkMSkKLUFDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQotQUNfTElCVE9PTF9QUk9HX0xEX0hBUkRDT0RFX0xJQlBBVEgoJDEpCi0KLUFDX0xJQlRPT0xfQ09ORklHKCQxKQotCi1BQ19MQU5HX1JFU1RPUkUKLUNDPSIkbHRfc2F2ZV9DQyIKLV0pIyBBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJRwotCi0KLSMgQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJRwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcnMgZm9yIHRoZSBXaW5kb3dzIHJlc291cmNlIGNvbXBpbGVyIGFyZQotIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhvc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieQotIyBBQ19MSUJUT09MX0NPTkZJRyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJR10sIFtfTFRfQUNfTEFOR19SQ19DT05GSUcoUkMpXSkKLUFDX0RFRlVOKFtfTFRfQUNfTEFOR19SQ19DT05GSUddLAotW0FDX0xBTkdfU0FWRQotCi0jIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgUkMgdGVzdCBzb3VyY2VzLgotYWNfZXh0PXJjCi0KLSMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBSQyB0ZXN0IHNvdXJjZXMuCi1vYmpleHQ9bwotX0xUX0FDX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0Ci0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCi1sdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9J3NhbXBsZSBNRU5VIHsgTUVOVUlURU0gIiZTb3VwIiwgMTAwLCBDSEVDS0VEIH0nCi0KLSMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCi1sdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiCi0KLSMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KLV9MVF9BQ19TWVNfQ09NUElMRVIKLQotIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKLV9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQotX0xUX0xJTktFUl9CT0lMRVJQTEFURQotCi0jIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotbHRfc2F2ZV9DQz0iJENDIgotQ0M9JHtSQy0id2luZHJlcyJ9Ci1jb21waWxlcj0kQ0MKLV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKLV9MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKLQotQUNfTElCVE9PTF9DT05GSUcoJDEpCi0KLUFDX0xBTkdfUkVTVE9SRQotQ0M9IiRsdF9zYXZlX0NDIgotXSkjIEFDX0xJQlRPT0xfTEFOR19SQ19DT05GSUcKLQotCi0jIEFDX0xJQlRPT0xfQ09ORklHKFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBJZiBUQUdOQU1FIGlzIG5vdCBwYXNzZWQsIHRoZW4gY3JlYXRlIGFuIGluaXRpYWwgbGlidG9vbCBzY3JpcHQKLSMgd2l0aCBhIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmcm9tIHRoZSB1bnRhZ2dlZCBjb25maWcgdmFycy4gIE90aGVyd2lzZQotIyBhZGQgY29kZSB0byBjb25maWcuc3RhdHVzIGZvciBhcHBlbmRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gbmFtZWQgYnkKLSMgVEFHTkFNRSBmcm9tIHRoZSBtYXRjaGluZyB0YWdnZWQgY29uZmlnIHZhcnMuCi1BQ19ERUZVTihbQUNfTElCVE9PTF9DT05GSUddLAotWyMgVGhlIGVsc2UgY2xhdXNlIHNob3VsZCBvbmx5IGZpcmUgd2hlbiBib290c3RyYXBwaW5nIHRoZQotIyBsaWJ0b29sIGRpc3RyaWJ1dGlvbiwgb3RoZXJ3aXNlIHlvdSBmb3Jnb3QgdG8gc2hpcCBsdG1haW4uc2gKLSMgd2l0aCB5b3VyIHBhY2thZ2UsIGFuZCB5b3Ugd2lsbCBnZXQgY29tcGxhaW50cyB0aGF0IHRoZXJlIGFyZQotIyBubyBydWxlcyB0byBnZW5lcmF0ZSBsdG1haW4uc2guCi1pZiB0ZXN0IC1mICIkbHRtYWluIjsgdGhlbgotICAjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgd2hpY2ggYWxsb3cgb3VyIGNvbW1hbmRzIHRocm91Z2gKLSAgIyB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzLgotICBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbgotICAgIHNldG9wdCBOT19HTE9CX1NVQlNUCi0gIGZpCi0gICMgTm93IHF1b3RlIGFsbCB0aGUgdGhpbmdzIHRoYXQgbWF5IGNvbnRhaW4gbWV0YWNoYXJhY3RlcnMgd2hpbGUgYmVpbmcKLSAgIyBjYXJlZnVsIG5vdCB0byBvdmVycXVvdGUgdGhlIEFDX1NVQlNUZWQgdmFsdWVzLiAgV2UgdGFrZSBjb3BpZXMgb2YgdGhlCi0gICMgdmFyaWFibGVzIGFuZCBxdW90ZSB0aGUgY29waWVzIGZvciBnZW5lcmF0aW9uIG9mIHRoZSBsaWJ0b29sIHNjcmlwdC4KLSAgZm9yIHZhciBpbiBlY2hvIG9sZF9DQyBvbGRfQ0ZMQUdTIEFSIEFSX0ZMQUdTIEVHUkVQIFJBTkxJQiBMTl9TIExUQ0MgTFRDRkxBR1MgTk0gXAotICAgIFNFRCBTSEVMTCBTVFJJUCBcCi0gICAgbGlibmFtZV9zcGVjIGxpYnJhcnlfbmFtZXNfc3BlYyBzb25hbWVfc3BlYyBleHRyYWN0X2V4cHN5bXNfY21kcyBcCi0gICAgb2xkX3N0cmlwbGliIHN0cmlwbGliIGZpbGVfbWFnaWNfY21kIGZpbmlzaF9jbWRzIGZpbmlzaF9ldmFsIFwKLSAgICBkZXBsaWJzX2NoZWNrX21ldGhvZCByZWxvYWRfZmxhZyByZWxvYWRfY21kcyBuZWVkX2xvY2tzIFwKLSAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIFwKLSAgICBvbGRfcG9zdGluc3RhbGxfY21kcyBvbGRfcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSAgICBfTFRfQUNfVEFHVkFSKGNvbXBpbGVyLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoQ0MsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihMRCwgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUih0aHJlYWRfc2FmZV9mbGFnX3NwZWMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIocHJlZGVwcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKHBvc3RkZXBzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKHBvc3RpbnN0YWxsX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihwb3N0dW5pbnN0YWxsX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSkgXAotICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpIFwKLSAgICBfTFRfQUNfVEFHVkFSKGZpeF9zcmNmaWxlX3BhdGgsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKSBcCi0gICAgX0xUX0FDX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKTsgZG8KLQotICAgIGNhc2UgJHZhciBpbgotICAgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgfCBcCi0gICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkgfCBcCi0gICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSkgfCBcCi0gICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywgJDEpIHwgXAotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpIHwgXAotICAgIGV4dHJhY3RfZXhwc3ltc19jbWRzIHwgcmVsb2FkX2NtZHMgfCBmaW5pc2hfY21kcyB8IFwKLSAgICBwb3N0aW5zdGFsbF9jbWRzIHwgcG9zdHVuaW5zdGFsbF9jbWRzIHwgXAotICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzIHwgb2xkX3Bvc3R1bmluc3RhbGxfY21kcyB8IFwKLSAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgfCBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYykKLSAgICAgICMgRG91YmxlLXF1b3RlIGRvdWJsZS1ldmFsZWQgc3RyaW5ncy4KLSAgICAgIGV2YWwgImx0XyR2YXI9XFxcIlxgXCRlY2hvIFwiWFwkJHZhclwiIHwgXCRYc2VkIC1lIFwiXCRkb3VibGVfcXVvdGVfc3Vic3RcIiAtZSBcIlwkc2VkX3F1b3RlX3N1YnN0XCIgLWUgXCJcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XCJcYFxcXCIiCi0gICAgICA7OwotICAgICopCi0gICAgICBldmFsICJsdF8kdmFyPVxcXCJcYFwkZWNobyBcIlhcJCR2YXJcIiB8IFwkWHNlZCAtZSBcIlwkc2VkX3F1b3RlX3N1YnN0XCJcYFxcXCIiCi0gICAgICA7OwotICAgIGVzYWMKLSAgZG9uZQotCi0gIGNhc2UgJGx0X2VjaG8gaW4KLSAgKidcWyRdMCAtLWZhbGxiYWNrLWVjaG8iJykKLSAgICBsdF9lY2hvPWAkZWNobyAiWCRsdF9lY2hvIiB8ICRYc2VkIC1lICdzL1xcXFxcXFxbJF0wIC0tZmFsbGJhY2stZWNobyJbJF0vWyRdMCAtLWZhbGxiYWNrLWVjaG8iLydgCi0gICAgOzsKLSAgZXNhYwotCi1pZmVsc2UoWyQxXSwgW10sCi0gIFtjZmdmaWxlPSIke29maWxlfVQiCi0gIHRyYXAgIiRybSBcIiRjZmdmaWxlXCI7IGV4aXQgMSIgMSAyIDE1Ci0gICRybSAtZiAiJGNmZ2ZpbGUiCi0gIEFDX01TR19OT1RJQ0UoW2NyZWF0aW5nICRvZmlsZV0pXSwKLSAgW2NmZ2ZpbGU9IiRvZmlsZSJdKQotCi0gIGNhdCA8PF9fRU9GX18gPj4gIiRjZmdmaWxlIgotaWZlbHNlKFskMV0sIFtdLAotWyMhICRTSEVMTAotCi0jIGAkZWNobyAiJGNmZ2ZpbGUiIHwgc2VkICdzJV4uKi8lJSdgIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCi0jIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QKQotIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0jCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOAotIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMKLSMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2w6Ci0jIE9yaWdpbmFsbHkgYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2Ci0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKLSMgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0jIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgaWYgeW91Ci0jIGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIHRoYXQgY29udGFpbnMgYQotIyBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHlvdSBtYXkgaW5jbHVkZSBpdCB1bmRlcgotIyB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0KLSMgQSBzZWQgcHJvZ3JhbSB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dC4KLVNFRD0kbHRfU0VECi0KLSMgU2VkIHRoYXQgaGVscHMgdXMgYXZvaWQgYWNjaWRlbnRhbGx5IHRyaWdnZXJpbmcgZWNobygxKSBvcHRpb25zIGxpa2UgLW4uCi1Yc2VkPSIkU0VEIC1lIDFzL15YLy8iCi0KLSMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0Ci0jIGlmIENEUEFUSCBpcyBzZXQuCi0odW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICi0KLSMgVGhlIG5hbWVzIG9mIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHRoaXMgc2NyaXB0LgotYXZhaWxhYmxlX3RhZ3M9Ci0KLSMgIyMjIEJFR0lOIExJQlRPT0wgQ09ORklHXSwKLVsjICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXSkKLQotIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgOgotCi0jIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCi1TSEVMTD0kbHRfU0hFTEwKLQotIyBXaGV0aGVyIG9yIG5vdCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLgotYnVpbGRfbGlidG9vbF9saWJzPSRlbmFibGVfc2hhcmVkCi0KLSMgV2hldGhlciBvciBub3QgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllcy4KLWJ1aWxkX29sZF9saWJzPSRlbmFibGVfc3RhdGljCi0KLSMgV2hldGhlciBvciBub3QgdG8gYWRkIC1sYyBmb3IgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcy4KLWJ1aWxkX2xpYnRvb2xfbmVlZF9sYz0kX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpCi0KLSMgV2hldGhlciBvciBub3QgdG8gZGlzYWxsb3cgc2hhcmVkIGxpYnMgd2hlbiBydW50aW1lIGxpYnMgYXJlIHN0YXRpYwotYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzPSRfTFRfQUNfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKQotCi0jIFdoZXRoZXIgb3Igbm90IHRvIG9wdGltaXplIGZvciBmYXN0IGluc3RhbGxhdGlvbi4KLWZhc3RfaW5zdGFsbD0kZW5hYmxlX2Zhc3RfaW5zdGFsbAotCi0jIFRoZSBob3N0IHN5c3RlbS4KLWhvc3RfYWxpYXM9JGhvc3RfYWxpYXMKLWhvc3Q9JGhvc3QKLWhvc3Rfb3M9JGhvc3Rfb3MKLQotIyBUaGUgYnVpbGQgc3lzdGVtLgotYnVpbGRfYWxpYXM9JGJ1aWxkX2FsaWFzCi1idWlsZD0kYnVpbGQKLWJ1aWxkX29zPSRidWlsZF9vcwotCi0jIEFuIGVjaG8gcHJvZ3JhbSB0aGF0IGRvZXMgbm90IGludGVycHJldCBiYWNrc2xhc2hlcy4KLWVjaG89JGx0X2VjaG8KLQotIyBUaGUgYXJjaGl2ZXIuCi1BUj0kbHRfQVIKLUFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotCi0jIEEgQyBjb21waWxlci4KLUxUQ0M9JGx0X0xUQ0MKLQotIyBMVENDIGNvbXBpbGVyIGZsYWdzLgotTFRDRkxBR1M9JGx0X0xUQ0ZMQUdTCi0KLSMgQSBsYW5ndWFnZS1zcGVjaWZpYyBjb21waWxlci4KLUNDPSRsdF9bXV9MVF9BQ19UQUdWQVIoY29tcGlsZXIsICQxKQotCi0jIElzIHRoZSBjb21waWxlciB0aGUgR05VIEMgY29tcGlsZXI/Ci13aXRoX2djYz0kX0xUX0FDX1RBR1ZBUihHQ0MsICQxKQotCi0jIEFuIEVSRSBtYXRjaGVyLgotRUdSRVA9JGx0X0VHUkVQCi0KLSMgVGhlIGxpbmtlciB1c2VkIHRvIGJ1aWxkIGxpYnJhcmllcy4KLUxEPSRsdF9bXV9MVF9BQ19UQUdWQVIoTEQsICQxKQotCi0jIFdoZXRoZXIgd2UgbmVlZCBoYXJkIG9yIHNvZnQgbGlua3MuCi1MTl9TPSRsdF9MTl9TCi0KLSMgQSBCU0QtY29tcGF0aWJsZSBubSBwcm9ncmFtLgotTk09JGx0X05NCi0KLSMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0KLVNUUklQPSRsdF9TVFJJUAotCi0jIFVzZWQgdG8gZXhhbWluZSBsaWJyYXJpZXMgd2hlbiBmaWxlX21hZ2ljX2NtZCBiZWdpbnMgImZpbGUiCi1NQUdJQ19DTUQ9JE1BR0lDX0NNRAotCi0jIFVzZWQgb24gY3lnd2luOiBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLURMTFRPT0w9IiRETExUT09MIgotCi0jIFVzZWQgb24gY3lnd2luOiBvYmplY3QgZHVtcGVyLgotT0JKRFVNUD0iJE9CSkRVTVAiCi0KLSMgVXNlZCBvbiBjeWd3aW46IGFzc2VtYmxlci4KLUFTPSIkQVMiCi0KLSMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotb2JqZGlyPSRvYmpkaXIKLQotIyBIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzLgotcmVsb2FkX2ZsYWc9JGx0X3JlbG9hZF9mbGFnCi1yZWxvYWRfY21kcz0kbHRfcmVsb2FkX2NtZHMKLQotIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotd2w9JGx0X1tdX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKLQotIyBPYmplY3QgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICJvIikuCi1vYmpleHQ9IiRhY19vYmpleHQiCi0KLSMgT2xkIGFyY2hpdmUgc3VmZml4IChub3JtYWxseSAiYSIpLgotbGliZXh0PSIkbGliZXh0IgotCi0jIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgIi5zbyIpLgotc2hyZXh0X2NtZHM9JyRzaHJleHRfY21kcycKLQotIyBFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIikuCi1leGVleHQ9IiRleGVleHQiCi0KLSMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotcGljX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi1waWNfbW9kZT0kcGljX21vZGUKLQotIyBXaGF0IGlzIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGNvbW1hbmQ/Ci1tYXhfY21kX2xlbj0kbHRfY3Zfc3lzX21heF9jbWRfbGVuCi0KLSMgRG9lcyBjb21waWxlciBzaW11bHRhbmVvdXNseSBzdXBwb3J0IC1jIGFuZCAtbyBvcHRpb25zPwotY29tcGlsZXJfY19vPSRsdF9bXV9MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKQotCi0jIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotCi0jIERvIHdlIG5lZWQgdGhlIGxpYiBwcmVmaXggZm9yIG1vZHVsZXM/Ci1uZWVkX2xpYl9wcmVmaXg9JG5lZWRfbGliX3ByZWZpeAotCi0jIERvIHdlIG5lZWQgYSB2ZXJzaW9uIGZvciBsaWJyYXJpZXM/Ci1uZWVkX3ZlcnNpb249JG5lZWRfdmVyc2lvbgotCi0jIFdoZXRoZXIgZGxvcGVuIGlzIHN1cHBvcnRlZC4KLWRsb3Blbl9zdXBwb3J0PSRlbmFibGVfZGxvcGVuCi0KLSMgV2hldGhlciBkbG9wZW4gb2YgcHJvZ3JhbXMgaXMgc3VwcG9ydGVkLgotZGxvcGVuX3NlbGY9JGVuYWJsZV9kbG9wZW5fc2VsZgotCi0jIFdoZXRoZXIgZGxvcGVuIG9mIHN0YXRpY2FsbHkgbGlua2VkIHByb2dyYW1zIGlzIHN1cHBvcnRlZC4KLWRsb3Blbl9zZWxmX3N0YXRpYz0kZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYwotCi0jIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi1saW5rX3N0YXRpY19mbGFnPSRsdF9bXV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKQotCi0jIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi1ub19idWlsdGluX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpCi0KLSMgQ29tcGlsZXIgZmxhZyB0byBhbGxvdyByZWZsZXhpdmUgZGxvcGVucy4KLWV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0kbHRfW11fTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpCi0KLSMgQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseSBmcm9tIGFyY2hpdmVzLgotd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JGx0X1tdX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpCi0KLSMgQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSB0aHJlYWQtc2FmZSBvYmplY3RzLgotdGhyZWFkX3NhZmVfZmxhZ19zcGVjPSRsdF9bXV9MVF9BQ19UQUdWQVIodGhyZWFkX3NhZmVfZmxhZ19zcGVjLCAkMSkKLQotIyBMaWJyYXJ5IHZlcnNpb25pbmcgdHlwZS4KLXZlcnNpb25fdHlwZT0kdmVyc2lvbl90eXBlCi0KLSMgRm9ybWF0IG9mIGxpYnJhcnkgbmFtZSBwcmVmaXguCi1saWJuYW1lX3NwZWM9JGx0X2xpYm5hbWVfc3BlYwotCi0jIExpc3Qgb2YgYXJjaGl2ZSBuYW1lcy4gIEZpcnN0IG5hbWUgaXMgdGhlIHJlYWwgb25lLCB0aGUgcmVzdCBhcmUgbGlua3MuCi0jIFRoZSBsYXN0IG5hbWUgaXMgdGhlIG9uZSB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2l0aCAtbE5BTUUuCi1saWJyYXJ5X25hbWVzX3NwZWM9JGx0X2xpYnJhcnlfbmFtZXNfc3BlYwotCi0jIFRoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lLgotc29uYW1lX3NwZWM9JGx0X3NvbmFtZV9zcGVjCi0KLSMgQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhbmQgaW5zdGFsbCBhbiBvbGQtc3R5bGUgYXJjaGl2ZS4KLVJBTkxJQj0kbHRfUkFOTElCCi1vbGRfYXJjaGl2ZV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpCi1vbGRfcG9zdGluc3RhbGxfY21kcz0kbHRfb2xkX3Bvc3RpbnN0YWxsX2NtZHMKLW9sZF9wb3N0dW5pbnN0YWxsX2NtZHM9JGx0X29sZF9wb3N0dW5pbnN0YWxsX2NtZHMKLQotIyBDcmVhdGUgYW4gb2xkLXN0eWxlIGFyY2hpdmUgZnJvbSBhIHNoYXJlZCBhcmNoaXZlLgotb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0kbHRfW11fTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKQotCi0jIENyZWF0ZSBhIHRlbXBvcmFyeSBvbGQtc3R5bGUgYXJjaGl2ZSB0byBsaW5rIGluc3RlYWQgb2YgYSBzaGFyZWQgYXJjaGl2ZS4KLW9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMsICQxKQotCi0jIENvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW5kIGluc3RhbGwgYSBzaGFyZWQgYXJjaGl2ZS4KLWFyY2hpdmVfY21kcz0kbHRfW11fTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpCi1hcmNoaXZlX2V4cHN5bV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpCi1wb3N0aW5zdGFsbF9jbWRzPSRsdF9wb3N0aW5zdGFsbF9jbWRzCi1wb3N0dW5pbnN0YWxsX2NtZHM9JGx0X3Bvc3R1bmluc3RhbGxfY21kcwotCi0jIENvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYSBsb2FkYWJsZSBtb2R1bGUgKGFzc3VtZWQgc2FtZSBhcyBhYm92ZSBpZiBlbXB0eSkKLW1vZHVsZV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKQotbW9kdWxlX2V4cHN5bV9jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSkKLQotIyBDb21tYW5kcyB0byBzdHJpcCBsaWJyYXJpZXMuCi1vbGRfc3RyaXBsaWI9JGx0X29sZF9zdHJpcGxpYgotc3RyaXBsaWI9JGx0X3N0cmlwbGliCi0KLSMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSB0aGUgb2JqZWN0cyBiZWluZyBsaW5rZWQgdG8gY3JlYXRlIGEKLSMgc2hhcmVkIGxpYnJhcnkuCi1wcmVkZXBfb2JqZWN0cz0kbHRfW11fTFRfQUNfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkKLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYWZ0ZXIgdGhlIG9iamVjdHMgYmVpbmcgbGlua2VkIHRvIGNyZWF0ZSBhCi0jIHNoYXJlZCBsaWJyYXJ5LgotcG9zdGRlcF9vYmplY3RzPSRsdF9bXV9MVF9BQ19UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkKLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIHRoZSBvYmplY3RzIGJlaW5nIGxpbmtlZCB0byBjcmVhdGUgYQotIyBzaGFyZWQgbGlicmFyeS4KLXByZWRlcHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihwcmVkZXBzLCAkMSkKLQotIyBEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYWZ0ZXIgdGhlIG9iamVjdHMgYmVpbmcgbGlua2VkIHRvIGNyZWF0ZSBhCi0jIHNoYXJlZCBsaWJyYXJ5LgotcG9zdGRlcHM9JGx0X1tdX0xUX0FDX1RBR1ZBUihwb3N0ZGVwcywgJDEpCi0KLSMgVGhlIGRpcmVjdG9yaWVzIHNlYXJjaGVkIGJ5IHRoaXMgY29tcGlsZXIgd2hlbiBjcmVhdGluZyBhIHNoYXJlZAotIyBsaWJyYXJ5Ci1jb21waWxlcl9saWJfc2VhcmNoX2RpcnM9JGx0X1tdX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX2RpcnMsICQxKQotCi0jIFRoZSBsaWJyYXJ5IHNlYXJjaCBwYXRoIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgY29tcGlsZXIgd2hlbiBsaW5raW5nCi0jIGEgc2hhcmVkIGxpYnJhcnkuCi1jb21waWxlcl9saWJfc2VhcmNoX3BhdGg9JGx0X1tdX0xUX0FDX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKQotCi0jIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0KLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSBmaWxlX21hZ2ljLgotZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0KLSMgRmxhZyB0aGF0IGFsbG93cyBzaGFyZWQgbGlicmFyaWVzIHdpdGggdW5kZWZpbmVkIHN5bWJvbHMgdG8gYmUgYnVpbHQuCi1hbGxvd191bmRlZmluZWRfZmxhZz0kbHRfW11fTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSkKLQotIyBGbGFnIHRoYXQgZm9yY2VzIG5vIHVuZGVmaW5lZCBzeW1ib2xzLgotbm9fdW5kZWZpbmVkX2ZsYWc9JGx0X1tdX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpCi0KLSMgQ29tbWFuZHMgdXNlZCB0byBmaW5pc2ggYSBsaWJ0b29sIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGluIGEgZGlyZWN0b3J5LgotZmluaXNoX2NtZHM9JGx0X2ZpbmlzaF9jbWRzCi0KLSMgU2FtZSBhcyBhYm92ZSwgYnV0IGEgc2luZ2xlIHNjcmlwdCBmcmFnbWVudCB0byBiZSBldmFsZWQgYnV0IG5vdCBzaG93bi4KLWZpbmlzaF9ldmFsPSRsdF9maW5pc2hfZXZhbAotCi0jIFRha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXMuCi1nbG9iYWxfc3ltYm9sX3BpcGU9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUKLQotIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIHByb3BlciBDIGRlY2xhcmF0aW9uCi1nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbAotCi0jIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpcgotZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLQotIyBUaGlzIGlzIHRoZSBzaGFyZWQgbGlicmFyeSBydW50aW1lIHBhdGggdmFyaWFibGUuCi1ydW5wYXRoX3Zhcj0kcnVucGF0aF92YXIKLQotIyBUaGlzIGlzIHRoZSBzaGFyZWQgbGlicmFyeSBwYXRoIHZhcmlhYmxlLgotc2hsaWJwYXRoX3Zhcj0kc2hsaWJwYXRoX3ZhcgotCi0jIElzIHNobGlicGF0aCBzZWFyY2hlZCBiZWZvcmUgdGhlIGhhcmQtY29kZWQgbGlicmFyeSBzZWFyY2ggcGF0aD8KLXNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD0kc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoCi0KLSMgSG93IHRvIGhhcmRjb2RlIGEgc2hhcmVkIGxpYnJhcnkgcGF0aCBpbnRvIGFuIGV4ZWN1dGFibGUuCi1oYXJkY29kZV9hY3Rpb249JF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSkKLQotIyBXaGV0aGVyIHdlIHNob3VsZCBoYXJkY29kZSBsaWJyYXJ5IHBhdGhzIGludG8gbGlicmFyaWVzLgotaGFyZGNvZGVfaW50b19saWJzPSRoYXJkY29kZV9pbnRvX2xpYnMKLQotIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCi0jIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSRsdF9bXV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpCi0KLSMgSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50bwotIyBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4gVGhpcyBtdXN0IHdvcmsgZXZlbiBpZiBcJGxpYmRpciBkb2VzCi0jIG5vdCBleGlzdC4KLWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9JGx0X1tdX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSkKLQotIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KLWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X1tdX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSkKLQotIyBTZXQgdG8geWVzIGlmIHVzaW5nIERJUi9saWJOQU1FJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0jIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9kaXJlY3Q9JF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSkKLQotIyBTZXQgdG8geWVzIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKLSMgcmVzdWx0aW5nIGJpbmFyeS4KLWhhcmRjb2RlX21pbnVzX0w9JF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpCi0KLSMgU2V0IHRvIHllcyBpZiB1c2luZyBTSExJQlBBVEhfVkFSPURJUiBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8KLSMgdGhlIHJlc3VsdGluZyBiaW5hcnkuCi1oYXJkY29kZV9zaGxpYnBhdGhfdmFyPSRfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKQotCi0jIFNldCB0byB5ZXMgaWYgYnVpbGRpbmcgYSBzaGFyZWQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGhhcmRjb2RlcyBESVIgaW50byB0aGUgbGlicmFyeQotIyBhbmQgYWxsIHN1YnNlcXVlbnQgbGlicmFyaWVzIGFuZCBleGVjdXRhYmxlcyBsaW5rZWQgYWdhaW5zdCBpdC4KLWhhcmRjb2RlX2F1dG9tYXRpYz0kX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKQotCi0jIFZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgc2hvdWxkIGJlIHNhdmVkIGluIGxpYnRvb2wgd3JhcHBlciBzY3JpcHRzIGFuZAotIyByZXN0b3JlZCBhdCByZWxpbmsgdGltZS4KLXZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiCi0KLSMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotbGlua19hbGxfZGVwbGlicz0kX0xUX0FDX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSkKLQotIyBDb21waWxlLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMKLXN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCi0KLSMgUnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYwotCi0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0KLSMgU2V0IHRvIHllcyBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLWFsd2F5c19leHBvcnRfc3ltYm9scz0kX0xUX0FDX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKQotCi0jIFRoZSBjb21tYW5kcyB0byBsaXN0IGV4cG9ydGVkIHN5bWJvbHMuCi1leHBvcnRfc3ltYm9sc19jbWRzPSRsdF9bXV9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpCi0KLSMgVGhlIGNvbW1hbmRzIHRvIGV4dHJhY3QgdGhlIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gYSBzaGFyZWQgYXJjaGl2ZS4KLWV4dHJhY3RfZXhwc3ltc19jbWRzPSRsdF9leHRyYWN0X2V4cHN5bXNfY21kcwotCi0jIFN5bWJvbHMgdGhhdCBzaG91bGQgbm90IGJlIGxpc3RlZCBpbiB0aGUgcHJlbG9hZGVkIHN5bWJvbHMuCi1leGNsdWRlX2V4cHN5bXM9JGx0X1tdX0xUX0FDX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKQotCi0jIFN5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZC4KLWluY2x1ZGVfZXhwc3ltcz0kbHRfW11fTFRfQUNfVEFHVkFSKGluY2x1ZGVfZXhwc3ltcywgJDEpCi0KLWlmZWxzZShbJDFdLFtdLAotWyMgIyMjIEVORCBMSUJUT09MIENPTkZJR10sCi1bIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWVdKQotCi1fX0VPRl9fCi0KLWlmZWxzZShbJDFdLFtdLCBbCi0gIGNhc2UgJGhvc3Rfb3MgaW4KLSAgYWl4MyopCi0gICAgY2F0IDw8XEVPRiA+PiAiJGNmZ2ZpbGUiCi0KLSMgQUlYIHNvbWV0aW1lcyBoYXMgcHJvYmxlbXMgd2l0aCB0aGUgR0NDIGNvbGxlY3QyIHByb2dyYW0uICBGb3Igc29tZQotIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCi0jIHZhbmlzaCBpbiBhIHB1ZmYgb2Ygc21va2UuCi1pZiB0ZXN0ICJYJHtDT0xMRUNUX05BTUVTK3NldH0iICE9IFhzZXQ7IHRoZW4KLSAgQ09MTEVDVF9OQU1FUz0KLSAgZXhwb3J0IENPTExFQ1RfTkFNRVMKLWZpCi1FT0YKLSAgICA7OwotICBlc2FjCi0KLSAgIyBXZSB1c2Ugc2VkIGluc3RlYWQgb2YgY2F0IGJlY2F1c2UgYmFzaCBvbiBESkdQUCBnZXRzIGNvbmZ1c2VkIGlmCi0gICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLSAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLQotICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8IFwKLSAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICBjaG1vZCAreCAiJG9maWxlIgotXSkKLWVsc2UKLSAgIyBJZiB0aGVyZSBpcyBubyBNYWtlZmlsZSB5ZXQsIHdlIHJlbHkgb24gYSBtYWtlIHJ1bGUgdG8gZXhlY3V0ZQotICAjIGBjb25maWcuc3RhdHVzIC0tcmVjaGVjaycgdG8gcmVydW4gdGhlc2UgdGVzdHMgYW5kIGNyZWF0ZSB0aGUKLSAgIyBsaWJ0b29sIHNjcmlwdCB0aGVuLgotICBsdG1haW5faW49YGVjaG8gJGx0bWFpbiB8IHNlZCAtZSAncy9cLnNoJC8uaW4vJ2AKLSAgaWYgdGVzdCAtZiAiJGx0bWFpbl9pbiI7IHRoZW4KLSAgICB0ZXN0IC1mIE1ha2VmaWxlICYmIG1ha2UgIiRsdG1haW4iCi0gIGZpCi1maQotXSkjIEFDX0xJQlRPT0xfQ09ORklHCi0KLQotIyBBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSShbVEFHTkFNRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSV0sCi1bQUNfUkVRVUlSRShbX0xUX0FDX1NZU19DT01QSUxFUl0pZG5sCi0KLV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0KLQotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPScgLWZuby1idWlsdGluJwotCi0gIEFDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3VwcG9ydHMgLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9uc10sCi0gICAgbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMsCi0gICAgWy1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLCBbXSwKLSAgICBbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPSIkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiXSkKLWZpCi1dKSMgQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX05PX1JUVEkKLQotCi0jIEFDX0xJQlRPT0xfU1lTX0dMT0JBTF9TWU1CT0xfUElQRQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUFDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEVdLAotW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKLUFDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSkKLUFDX1JFUVVJUkUoW0FDX1BST0dfTk1dKQotQUNfUkVRVUlSRShbQUNfT0JKRVhUXSkKLSMgQ2hlY2sgZm9yIGNvbW1hbmQgdG8gZ3JhYiB0aGUgcmF3IHN5bWJvbCBuYW1lIGZvbGxvd2VkIGJ5IEMgc3ltYm9sIGZyb20gbm0uCi1BQ19NU0dfQ0hFQ0tJTkcoW2NvbW1hbmQgdG8gcGFyc2UgJE5NIG91dHB1dCBmcm9tICRjb21waWxlciBvYmplY3RdKQotQUNfQ0FDSEVfVkFMKFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlXSwKLVsKLSMgVGhlc2UgYXJlIHNhbmUgZGVmYXVsdHMgdGhhdCB3b3JrIG9uIGF0IGxlYXN0IGEgZmV3IG9sZCBzeXN0ZW1zLgotIyBbVGhleSBjb21lIGZyb20gVWx0cml4LiAgV2hhdCBjb3VsZCBiZSBvbGRlciB0aGFuIFVsdHJpeD8hISA7KV0KLQotIyBDaGFyYWN0ZXIgY2xhc3MgZGVzY3JpYmluZyBOTSBnbG9iYWwgc3ltYm9sIGNvZGVzLgotc3ltY29kZT0nW1tCQ0RFR1JTVF1dJwotCi0jIFJlZ2V4cCB0byBtYXRjaCBzeW1ib2xzIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIGRpcmVjdGx5IGZyb20gQy4KLXN5bXBhdD0nXChbW19BLVphLXpdXVtbX0EtWmEtejAtOV1dKlwpJwotCi0jIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBhIHByb3BlciBDIGRlY2xhcmF0aW9uCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL14uIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMTsvcCciCi0KLSMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsIChsdF9wdHIpIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUgXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKGx0X3B0cikgXCZcMn0sL3AnIgotCi0jIERlZmluZSBzeXN0ZW0tc3BlY2lmaWMgdmFyaWFibGVzLgotY2FzZSAkaG9zdF9vcyBpbgotYWl4KikKLSAgc3ltY29kZT0nW1tCQ0RUXV0nCi0gIDs7Ci1jeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0gIHN5bWNvZGU9J1tbQUJDREdJU1RXXV0nCi0gIDs7Ci1ocHV4KikgIyBJdHMgbGlua2VyIGRpc3Rpbmd1aXNoZXMgZGF0YSBmcm9tIGNvZGUgc3ltYm9scwotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgIHN5bWNvZGU9J1tbQUJDREVHUlNUXV0nCi0gIGZpCi0gIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAobHRfcHRyKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAobHRfcHRyKSBcJlwyfSwvcCciCi0gIDs7Ci1saW51eCogfCBrKmJzZCotZ251KQotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgIHN5bWNvZGU9J1tbQUJDREdJUlNUV11dJwotICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsIChsdF9wdHIpIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsIChsdF9wdHIpIFwmXDJ9LC9wJyIKLSAgZmkKLSAgOzsKLWlyaXgqIHwgbm9uc3RvcHV4KikKLSAgc3ltY29kZT0nW1tCQ0RFR1JTVF1dJwotICA7Owotb3NmKikKLSAgc3ltY29kZT0nW1tCQ0RFR1FSU1RdXScKLSAgOzsKLXNvbGFyaXMqKQotICBzeW1jb2RlPSdbW0JEUlRdXScKLSAgOzsKLXNjbzMuMnY1KikKLSAgc3ltY29kZT0nW1tEVF1dJwotICA7Owotc3lzdjQuMnV3MiopCi0gIHN5bWNvZGU9J1tbRFRdXScKLSAgOzsKLXN5c3Y1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCopCi0gIHN5bWNvZGU9J1tbQUJEVF1dJwotICA7Owotc3lzdjQpCi0gIHN5bWNvZGU9J1tbREZOU1RVXV0nCi0gIDs7Ci1lc2FjCi0KLSMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotb3B0X2NyPQotY2FzZSAkYnVpbGRfb3MgaW4KLW1pbmd3KikKLSAgb3B0X2NyPWBlY2hvICd4XHswLDFcfScgfCB0ciB4ICdcMDE1J2AgIyBvcHRpb24gY3IgaW4gcmVnZXhwCi0gIDs7Ci1lc2FjCi0KLSMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHVzZSBpdHMgc3RhbmRhcmQgc3ltYm9sIGNvZGVzLgotY2FzZSBgJE5NIC1WIDI+JjFgIGluCi0qR05VKiB8ICond2l0aCBCRkQnKikKLSAgc3ltY29kZT0nW1tBQkNER0lSU1RXXV0nIDs7Ci1lc2FjCi0KLSMgVHJ5IHdpdGhvdXQgYSBwcmVmaXggdW5kZXJjb3JlLCB0aGVuIHdpdGggaXQuCi1mb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0KLSAgIyBUcmFuc2Zvcm0gc3ltY29kZSwgc3ltcGF0LCBhbmQgc3ltcHJmeCBpbnRvIGEgcmF3IHN5bWJvbCBhbmQgYSBDIHN5bWJvbC4KLSAgc3lteGZybT0iXFwxICRhY19zeW1wcmZ4XFwyIFxcMiIKLQotICAjIFdyaXRlIHRoZSByYXcgYW5kIEMgaWRlbnRpZmllcnMuCi0gIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbWyAJXV1cKCRzeW1jb2RlJHN5bWNvZGUqXClbWyAJXV1bWyAJXV0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0KLSAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gIHBpcGVfd29ya3M9bm8KLQotICBybSAtZiBjb25mdGVzdCoKLSAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PEVPRgotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotY2hhciBubV90ZXN0X3ZhcjsKLXZvaWQgbm1fdGVzdF9mdW5jKCl7fQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLWludCBtYWluKCl7bm1fdGVzdF92YXI9J2EnO25tX3Rlc3RfZnVuYygpO3JldHVybigwKTt9Ci1FT0YKLQotICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgotICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgotICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCi0gICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KLSAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCi0gICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgotCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgotICAgICAgZWxzZQotCXJtIC1mICIkbmxpc3QiVAotICAgICAgZmkKLQotICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBzbmFnZ2VkIGFsbCB0aGUgc3ltYm9scyB3ZSBuZWVkLgotICAgICAgaWYgZ3JlcCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotCWlmIGdyZXAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0JICBjYXQgPDxFT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLUVPRgotCSAgIyBOb3cgZ2VuZXJhdGUgdGhlIHN5bWJvbCBmaWxlLgotCSAgZXZhbCAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IiB8IGdyZXAgLXYgbWFpbiA+PiBjb25mdGVzdC4kYWNfZXh0JwotCi0JICBjYXQgPDxFT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotI2lmIGRlZmluZWQgKF9fU1REQ19fKSAmJiBfX1NURENfXwotIyBkZWZpbmUgbHRfcHRyX3Qgdm9pZCAqCi0jZWxzZQotIyBkZWZpbmUgbHRfcHRyX3QgY2hhciAqCi0jIGRlZmluZSBjb25zdAotI2VuZGlmCi0KLS8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAqLwotY29uc3Qgc3RydWN0IHsKLSAgY29uc3QgY2hhciAqbmFtZTsKLSAgbHRfcHRyX3QgYWRkcmVzczsKLX0KLWx0X3ByZWxvYWRlZF9zeW1ib2xzW1tdXSA9Ci17Ci1FT0YKLQkgICRTRUQgInMvXiRzeW1jb2RlJHN5bWNvZGUqIFwoLipcKSBcKC4qXCkkLyAge1wiXDJcIiwgKGx0X3B0cl90KSBcJlwyfSwvIiA8ICIkbmxpc3QiIHwgZ3JlcCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQKLQkgIGNhdCA8PFxFT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotICB7MCwgKGx0X3B0cl90KSAwfQotfTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLUVPRgotCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLQkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLQkgIENGTEFHUz0iJENGTEFHUyRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSkiCi0JICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0JICAgIHBpcGVfd29ya3M9eWVzCi0JICBmaQotCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotCWVsc2UKLQkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mQVNfTUVTU0FHRV9MT0dfRkQKLQlmaQotICAgICAgZWxzZQotCWVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfdmFyIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgZmkKLSAgICBlbHNlCi0gICAgICBlY2hvICJjYW5ub3QgcnVuICRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiA+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgZmkKLSAgZWxzZQotICAgIGVjaG8gIiRwcm9nbmFtZTogZmFpbGVkIHByb2dyYW0gd2FzOiIgPiZBU19NRVNTQUdFX0xPR19GRAotICAgIGNhdCBjb25mdGVzdC4kYWNfZXh0ID4mNQotICBmaQotICBybSAtcmYgY29uZnRlc3QqIGNvbmZ0c3QqCi0KLSAgIyBEbyBub3QgdXNlIHRoZSBnbG9iYWxfc3ltYm9sX3BpcGUgdW5sZXNzIGl0IHdvcmtzLgotICBpZiB0ZXN0ICIkcGlwZV93b3JrcyIgPSB5ZXM7IHRoZW4KLSAgICBicmVhawotICBlbHNlCi0gICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0KLSAgZmkKLWRvbmUKLV0pCi1pZiB0ZXN0IC16ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLSAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9Ci1maQotaWYgdGVzdCAteiAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiOyB0aGVuCi0gIEFDX01TR19SRVNVTFQoZmFpbGVkKQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG9rKQotZmkKLV0pICMgQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFCi0KLQotIyBBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDKFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0NPTVBJTEVSX1BJQ10sCi1bX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Ci1fTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Ci0KLUFDX01TR19DSEVDS0lORyhbZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUNdKQotIGlmZWxzZShbJDFdLFtDWFhdLFsKLSAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgotICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKLQotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBhaXgqKQotICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBmaQotICAgICAgOzsKLSAgICBhbWlnYW9zKikKLSAgICAgICMgRklYTUU6IHdlIG5lZWQgYXQgbGVhc3QgNjgwMjAgY29kZSB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLCBidXQKLSAgICAgICMgYWRkaW5nIHRoZSBgLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAotICAgICAgIyBsaWtlIGAtbTY4MDQwJy4KLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLW02ODAyMCAtcmVzaWRlbnQzMiAtbWFsd2F5cy1yZXN0b3JlLWE0JwotICAgICAgOzsKLSAgICBiZW9zKiB8IGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCogfCBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0gICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgT1Nlcy4KLSAgICAgIDs7Ci0gICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKikKLSAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCi0gICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCi0gICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwotICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotCVtfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotICAgICAgOzsKLSAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQotICAgICAgIyBDb21tb24gc3ltYm9scyBub3QgYWxsb3dlZCBpbiBNSF9EWUxJQiBmaWxlcwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKLSAgICAgIDs7Ci0gICAgKmRqZ3BwKikKLSAgICAgICMgREpHUFAgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgbGlicmFyaWVzIGF0IGFsbAotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQotICAgICAgOzsKLSAgICBpbnRlcml4W1szLTldXSopCi0gICAgICAjIEludGVyaXggMy54IGdjYyAtZnBpYy8tZlBJQyBvcHRpb25zIGdlbmVyYXRlIGJyb2tlbiBjb2RlLgotICAgICAgIyBJbnN0ZWFkLCB3ZSByZWxvY2F0ZSBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUuCi0gICAgICA7OwotICAgIHN5c3Y0Kk1QKikKLSAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9LUtjb25mb3JtX3BpYwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgaHB1eCopCi0gICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgSUE2NCBIUC1VWCBhbmQgNjQtYml0IEhQLVVYLCBidXQKLSAgICAgICMgbm90IGZvciBQQSBIUC1VWC4KLSAgICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgICBocHBhKjY0KnxpYTY0KikKLQk7OwotICAgICAgKikKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwotCTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgICopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwotICAgICAgOzsKLSAgICBlc2FjCi0gIGVsc2UKLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBhaXhbWzQtOV1dKikKLQkjIEFsbCBBSVggY29kZSBpcyBQSUMuCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgICMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCi0JICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCWVsc2UKLQkgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLWJuc28gLWJJOi9saWIvc3lzY2FsbHMuZXhwJwotCWZpCi0JOzsKLSAgICAgIGNob3J1cyopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQljeGNoNjgqKQotCSAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICMgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSItLW5vX2F1dG9faW5zdGFudGlhdGlvbiAtdSBfX21haW4gLXUgX19wcmVtYWluIC11IF9hYm9ydCAtciAkQ09PTF9ESVIvbGliL2xpYk9yYi5hICRNVk1FX0RJUi9saWIvQ0MvbGliQy5hICRNVk1FX0RJUi9saWIvY2xhc3NpeC9saWJjeC5zLmEiCi0JICA7OwotCWVzYWMKLQk7OwotICAgICAgIGRhcndpbiopCi0gICAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCi0gICAgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICAgICB4bGMqKQotICAgICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xbm9jb21tb24nCi0gICAgICAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotICAgICAgICAgICA7OwotICAgICAgICAgZXNhYwotICAgICAgIDs7Ci0gICAgICBkZ3V4KikKLQljYXNlICRjY19iYXNlbmFtZSBpbgotCSAgZWMrKyopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JICAgIDs7Ci0JICBnaGN4KikKLQkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJwotCSAgICA7OwotCSAgKikKLQkgICAgOzsKLQllc2FjCi0JOzsKLSAgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLQkjIEZyZWVCU0QgdXNlcyBHTlUgQysrCi0JOzsKLSAgICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBDQyopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJwotCSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KLQkgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JytaJwotCSAgICBmaQotCSAgICA7OwotCSAgYUNDKikKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHt3bH0tYSAke3dsfWFyY2hpdmUnCi0JICAgIGNhc2UgJGhvc3RfY3B1IGluCi0JICAgIGhwcGEqNjQqfGlhNjQqKQotCSAgICAgICMgK1ogdGhlIGRlZmF1bHQKLQkgICAgICA7OwotCSAgICAqKQotCSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCi0JICAgICAgOzsKLQkgICAgZXNhYwotCSAgICA7OwotCSAgKikKLQkgICAgOzsKLQllc2FjCi0JOzsKLSAgICAgIGludGVyaXgqKQotCSMgVGhpcyBpcyBjODksIHdoaWNoIGlzIE1TIFZpc3VhbCBDKysgKG5vIHNoYXJlZCBsaWJzKQotCSMgQW55b25lIHdhbnRzIHRvIGRvIGEgcG9ydD8KLQk7OwotICAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLQljYXNlICRjY19iYXNlbmFtZSBpbgotCSAgQ0MqKQotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKLQkgICAgIyBDQyBwaWMgZmxhZyAtS1BJQyBpcyB0aGUgZGVmYXVsdC4KLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBsaW51eCogfCBrKmJzZCotZ251KQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBLQ0MqKQotCSAgICAjIEtBSSBDKysgQ29tcGlsZXIKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy0tYmFja2VuZCAtV2wsJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwotCSAgICA7OwotCSAgaWNwYyogfCBlY3BjKikKLQkgICAgIyBJbnRlbCBDKysKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKLQkgICAgOzsKLQkgIHBnQ0MqIHwgcGdjcHAqKQotCSAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlci4KLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZwaWMnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0JICAgIDs7Ci0JICBjeHgqKQotCSAgICAjIENvbXBhcSBDKysKLQkgICAgIyBNYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGlzIGVtcHR5LiAgSXQgYXBwZWFycyB0aGF0IGFsbCBBbHBoYQotCSAgICAjIExpbnV4IGFuZCBDb21wYXEgVHJ1NjQgVW5peCBvYmplY3RzIGFyZSBQSUMuCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKLQkgICAgOzsKLQkgICopCi0JICAgIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgotCSAgICAqU3VuXCBDKikKLQkgICAgICAjIFN1biBDKysgNS45Ci0JICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLQkgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnCi0JICAgICAgOzsKLQkgICAgZXNhYwotCSAgICA7OwotCWVzYWMKLQk7OwotICAgICAgbHlueG9zKikKLQk7OwotICAgICAgbTg4ayopCi0JOzsKLSAgICAgIG12cyopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIGN4eCopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVcgYyxleHBvcnRhbGwnCi0JICAgIDs7Ci0JICAqKQotCSAgICA7OwotCWVzYWMKLQk7OwotICAgICAgbmV0YnNkKikKLQk7OwotICAgICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBLQ0MqKQotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLS1iYWNrZW5kIC1XbCwnCi0JICAgIDs7Ci0JICBSQ0MqKQotCSAgICAjIFJhdGlvbmFsIEMrKyAyLjQuMQotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCi0JICAgIDs7Ci0JICBjeHgqKQotCSAgICAjIERpZ2l0YWwvQ29tcGFxIEMrKwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLQkgICAgIyBNYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGlzIGVtcHR5LiAgSXQgYXBwZWFycyB0aGF0IGFsbCBBbHBoYQotCSAgICAjIExpbnV4IGFuZCBDb21wYXEgVHJ1NjQgVW5peCBvYmplY3RzIGFyZSBQSUMuCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBwc29zKikKLQk7OwotICAgICAgc29sYXJpcyopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIENDKikKLQkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJwotCSAgICA7OwotCSAgZ2N4KikKLQkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctUElDJwotCSAgICA7OwotCSAgKikKLQkgICAgOzsKLQllc2FjCi0JOzsKLSAgICAgIHN1bm9zNCopCi0JY2FzZSAkY2NfYmFzZW5hbWUgaW4KLQkgIENDKikKLQkgICAgIyBTdW4gQysrIDQueAotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0JICAgIDs7Ci0JICBsY2MqKQotCSAgICAjIEx1Y2lkCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXBpYycKLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICB0YW5kZW0qKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBOQ0MqKQotCSAgICAjIE5vblN0b3AtVVggTkNDIDMuMjAKLQkgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLQkgICAgOzsKLQkgICopCi0JICAgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQotCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0JICBDQyopCi0JICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgICA7OwotCWVzYWMKLQk7OwotICAgICAgdnh3b3JrcyopCi0JOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX2Nhbl9idWlsZF9zaGFyZWQsICQxKT1ubwotCTs7Ci0gICAgZXNhYwotICBmaQotXSwKLVsKLSAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCi0KLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBhaXgqKQotICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGFtaWdhb3MqKQotICAgICAgIyBGSVhNRTogd2UgbmVlZCBhdCBsZWFzdCA2ODAyMCBjb2RlIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dAotICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCi0gICAgICAjIGxpa2UgYC1tNjgwNDAnLgotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctbTY4MDIwIC1yZXNpZGVudDMyIC1tYWx3YXlzLXJlc3RvcmUtYTQnCi0gICAgICA7OwotCi0gICAgYmVvcyogfCBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqIHwgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIHRoZXNlIE9TZXMuCi0gICAgICA7OwotCi0gICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKikKLSAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKLSAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCi0gICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCi0gICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwotICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAotCVtfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQotICAgICAgOzsKLQotICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCi0gICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mbm8tY29tbW9uJwotICAgICAgOzsKLQotICAgIGludGVyaXhbWzMtOV1dKikKLSAgICAgICMgSW50ZXJpeCAzLnggZ2NjIC1mcGljLy1mUElDIG9wdGlvbnMgZ2VuZXJhdGUgYnJva2VuIGNvZGUuCi0gICAgICAjIEluc3RlYWQsIHdlIHJlbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZS4KLSAgICAgIDs7Ci0KLSAgICBtc2Rvc2RqZ3BwKikKLSAgICAgICMgSnVzdCBiZWNhdXNlIHdlIHVzZSBHQ0MgZG9lc24ndCBtZWFuIHdlIHN1ZGRlbmx5IGdldCBzaGFyZWQgbGlicmFyaWVzCi0gICAgICAjIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZW0uCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCi0gICAgICBlbmFibGVfc2hhcmVkPW5vCi0gICAgICA7OwotCi0gICAgc3lzdjQqTVAqKQotICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0tS2NvbmZvcm1fcGljCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGhwdXgqKQotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIElBNjQgSFAtVVggYW5kIDY0LWJpdCBIUC1VWCwgYnV0Ci0gICAgICAjIG5vdCBmb3IgUEEgSFAtVVguCi0gICAgICBjYXNlICRob3N0X2NwdSBpbgotICAgICAgaHBwYSo2NCp8aWE2NCopCi0JIyArWiB0aGUgZGVmYXVsdAotCTs7Ci0gICAgICAqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0KLSAgICAqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKLSAgICAgIDs7Ci0gICAgZXNhYwotICBlbHNlCi0gICAgIyBQT1JUTUUgQ2hlY2sgZm9yIGZsYWcgdG8gcGFzcyBsaW5rZXIgZmxhZ3MgdGhyb3VnaCB0aGUgc3lzdGVtIGNvbXBpbGVyLgotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBhaXgqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCSMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ibnNvIC1iSTovbGliL3N5c2NhbGxzLmV4cCcKLSAgICAgIGZpCi0gICAgICA7OwotICAgICAgZGFyd2luKikKLSAgICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQotICAgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgIHhsYyopCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1xbm9jb21tb24nCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgICAgIDs7Ci0gICAgICAgZXNhYwotICAgICAgIDs7Ci0KLSAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqKQotICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZwotICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KLSAgICAgIG00X2lmKFskMV0sIFtHQ0pdLCBbXSwKLQlbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKLSAgICAgIDs7Ci0KLSAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIElBNjQgSFAtVVggYW5kIDY0LWJpdCBIUC1VWCwgYnV0Ci0gICAgICAjIG5vdCBmb3IgUEEgSFAtVVguCi0gICAgICBjYXNlICRob3N0X2NwdSBpbgotICAgICAgaHBwYSo2NCp8aWE2NCopCi0JIyArWiB0aGUgZGVmYXVsdAotCTs7Ci0gICAgICAqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgICMgSXMgdGhlcmUgYSBiZXR0ZXIgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgdGhhdCB3b3JrcyB3aXRoIHRoZSBidW5kbGVkIENDPwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKLSAgICAgIDs7Ci0KLSAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICAjIFBJQyAod2l0aCAtS1BJQykgaXMgdGhlIGRlZmF1bHQuCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwotICAgICAgOzsKLQotICAgIG5ld3NvczYpCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSAgICAgIDs7Ci0KLSAgICBsaW51eCogfCBrKmJzZCotZ251KQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgIGljYyogfCBlY2MqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJwotICAgICAgICA7OwotICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCi0gICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0JIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLQlfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mcGljJwotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICAgIDs7Ci0gICAgICBjY2MqKQotICAgICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgICAgIyBBbGwgQWxwaGEgY29kZSBpcyBQSUMuCi0gICAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCi0gICAgICAgIDs7Ci0gICAgICAqKQotICAgICAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLQkqU3VuXCBDKikKLQkgICMgU3VuIEMgNS45Ci0JICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotCSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLQkgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCSAgOzsKLQkqU3VuXCBGKikKLQkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKLQkgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0JICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotCSAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKLQkgIDs7Ci0JZXNhYwotCTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotCi0gICAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICAjIEFsbCBPU0YvMSBjb2RlIGlzIFBJQy4KLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCi0gICAgICA7OwotCi0gICAgcmRvcyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJwotICAgICAgOzsKLQotICAgIHNvbGFyaXMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICopCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0KLSAgICBzdW5vczQqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICA7OwotCi0gICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJwotICAgICAgX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSAgICAgIDs7Ci0KLSAgICBzeXN2NCpNUCopCi0gICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCi0JX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS2NvbmZvcm1fcGljJwotCV9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIHN5c3Y1KiB8IHVuaXh3YXJlKiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCBPcGVuVU5JWCopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwotICAgICAgOzsKLQotICAgIHVuaWNvcyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICB1dHM0KikKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXBpYycKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0gICAgICA7OwotCi0gICAgKikKLSAgICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotXSkKLUFDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSldKQotCi0jCi0jIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0jCi1pZiB0ZXN0IC1uICIkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIjsgdGhlbgotICBBQ19MSUJUT09MX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgd29ya3NdLAotICAgIF9MVF9BQ19UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3MsICQxKSwKLSAgICBbJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKWlmZWxzZShbJDFdLFtdLFsgLURQSUNdLFtpZmVsc2UoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKV0sIFtdLAotICAgIFtjYXNlICRfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgaW4KLSAgICAgIiIgfCAiICIqKSA7OwotICAgICAqKSBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9IiAkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIiA7OwotICAgICBlc2FjXSwKLSAgICBbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQotICAgICBfTFRfQUNfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vXSkKLWZpCi1jYXNlICRob3N0X29zIGluCi0gICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgotICAqZGpncHAqKQotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KLSAgICA7OwotICAqKQotICAgIF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9BQ19UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKWlmZWxzZShbJDFdLFtdLFsgLURQSUNdLFtpZmVsc2UoWyQxXSxbQ1hYXSxbIC1EUElDXSxbXSldKSIKLSAgICA7OwotZXNhYwotCi0jCi0jIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0jCi13bD0kX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkgZXZhbCBsdF90bXBfc3RhdGljX2ZsYWc9XCIkX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpXCIKLUFDX0xJQlRPT0xfTElOS0VSX09QVElPTihbaWYgJGNvbXBpbGVyIHN0YXRpYyBmbGFnICRsdF90bXBfc3RhdGljX2ZsYWcgd29ya3NdLAotICBfTFRfQUNfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzLCAkMSksCi0gICRsdF90bXBfc3RhdGljX2ZsYWcsCi0gIFtdLAotICBbX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPV0pCi1dKQotCi0KLSMgQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUyhbVEFHTkFNRV0pCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBTZWUgaWYgdGhlIGxpbmtlciBzdXBwb3J0cyBidWlsZGluZyBzaGFyZWQgbGlicmFyaWVzLgotQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19MRF9TSExJQlNdLAotW0FDX1JFUVVJUkUoW0xUX0FDX1BST0dfU0VEXSlkbmwKLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKLWlmZWxzZShbJDFdLFtDWFhdLFsKLSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSAgY2FzZSAkaG9zdF9vcyBpbgotICBhaXhbWzQtOV1dKikKLSAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLSAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0gICAgaWYgJE5NIC1WIDI+JjEgfCBncmVwICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFxbJF0yID09ICJUIikgfHwgKFxbJF0yID09ICJEIikgfHwgKFxbJF0yID09ICJCIikpICYmIChbc3Vic3RyXShcWyRdMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXFskXTMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCi0gICAgZWxzZQotICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXFskXTIgPT0gIlQiKSB8fCAoXFskXTIgPT0gIkQiKSB8fCAoXFskXTIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFxbJF0zLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcWyRdMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKLSAgICBmaQotICAgIDs7Ci0gIHB3MzIqKQotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKLSAgOzsKLSAgY3lnd2luKiB8IG1pbmd3KikKLSAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLzsvXi4qW1sgXV1fX25tX18vcy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotICA7OwotICAqKQotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gIDs7Ci0gIGVzYWMKLSAgX0xUX0FDX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCi1dLFsKLSAgcnVucGF0aF92YXI9Ci0gIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KLSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIob2xkX2FyY2hpdmVfRnJvbV9uZXdfY21kcywgJDEpPQotICBfTFRfQUNfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUih0aHJlYWRfc2FmZV9mbGFnX3NwZWMsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Ci0gIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQotICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KLSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwotICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubwotICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAotICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCi0gIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KLSAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQotICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQotICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0gIF9MVF9BQ19UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0gICMgaW5jbHVkZV9leHBzeW1zIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN5bWJvbHMgdG8gYmUgKmFsd2F5cyoKLSAgIyBpbmNsdWRlZCBpbiB0aGUgc3ltYm9sIGxpc3QKLSAgX0xUX0FDX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKT0KLSAgIyBleGNsdWRlX2V4cHN5bXMgY2FuIGJlIGFuIGV4dGVuZGVkIHJlZ2V4cCBvZiBzeW1ib2xzIHRvIGV4Y2x1ZGUKLSAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgYCAoJyBhbmQgYCkkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgotICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogYGF8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyBgYScgYW5kIGBiYycsCi0gICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgYGQnLgotICBfTFRfQUNfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KLSAgIyBBbHRob3VnaCBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaXMgYSB2YWxpZCBzeW1ib2wgQyBuYW1lLCBtb3N0IGEub3V0Ci0gICMgcGxhdGZvcm1zIChhYil1c2UgaXQgaW4gUElDIGNvZGUsIGJ1dCB0aGVpciBsaW5rZXJzIGdldCBjb25mdXNlZCBpZgotICAjIHRoZSBzeW1ib2wgaXMgZXhwbGljaXRseSByZWZlcmVuY2VkLiAgU2luY2UgcG9ydGFibGUgY29kZSBjYW5ub3QKLSAgIyByZWx5IG9uIHRoaXMgc3ltYm9sIG5hbWUsIGl0J3MgcHJvYmFibHkgZmluZSB0byBuZXZlciBpbmNsdWRlIGl0IGluCi0gICMgcHJlbG9hZGVkIHN5bWJvbCB0YWJsZXMuCi0gICMgRXhjbHVkZSBzaGFyZWQgbGlicmFyeSBpbml0aWFsaXphdGlvbi9maW5hbGl6YXRpb24gc3ltYm9scy4KLWRubCBOb3RlIGFsc28gYWRqdXN0IGV4Y2x1ZGVfZXhwc3ltcyBmb3IgQysrIGFib3ZlLgotICBleHRyYWN0X2V4cHN5bXNfY21kcz0KLSAgIyBKdXN0IGJlaW5nIHBhcmFub2lkIGFib3V0IGVuc3VyaW5nIHRoYXQgY2NfYmFzZW5hbWUgaXMgc2V0LgotICBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi0gIGNhc2UgJGhvc3Rfb3MgaW4KLSAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKLSAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0gICAgICB3aXRoX2dudV9sZD1ubwotICAgIGZpCi0gICAgOzsKLSAgaW50ZXJpeCopCi0gICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKLSAgICB3aXRoX2dudV9sZD15ZXMKLSAgICA7OwotICBvcGVuYnNkKikKLSAgICB3aXRoX2dudV9sZD1ubwotICAgIDs7Ci0gIGVzYWMKLQotICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCi0gICAgIyBJZiBhcmNoaXZlX2NtZHMgcnVucyBMRCwgbm90IENDLCB3bGFyYyBzaG91bGQgYmUgZW1wdHkKLSAgICB3bGFyYz0nJHt3bH0nCi0KLSAgICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQotICAgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQotICAgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KLSAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAotICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLSAgICAjIGFuY2llbnQgR05VIGxkIGRpZG4ndCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZSBldC4gYWwuCi0gICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnbm8td2hvbGUtYXJjaGl2ZScgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCi0gICAgICBlbHNlCi0gIAlfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Ci0gICAgZmkKLSAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KLSAgICBjYXNlIGAkTEQgLXYgMj4vZGV2L251bGxgIGluCi0gICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQotICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KLSAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KLSAgICAgICpcIDIuMTEuKikgOzsgIyBvdGhlciAyLjExIHZlcnNpb25zCi0gICAgICAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7Ci0gICAgZXNhYwotCi0gICAgIyBTZWUgaWYgR05VIGxkIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGFpeFtbMy05XV0qKQotICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCWNhdCA8PEVPRiAxPiYyCi0KLSoqKiBXYXJuaW5nOiB0aGUgR05VIGxpbmtlciwgYXQgbGVhc3QgdXAgdG8gcmVsZWFzZSAyLjkuMSwgaXMgcmVwb3J0ZWQKLSoqKiB0byBiZSB1bmFibGUgdG8gcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gQUlYLgotKioqIFRoZXJlZm9yZSwgbGlidG9vbCBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgSWYgeW91Ci0qKiogcmVhbGx5IGNhcmUgZm9yIHNoYXJlZCBsaWJyYXJpZXMsIHlvdSBtYXkgd2FudCB0byBtb2RpZnkgeW91ciBQQVRICi0qKiogc28gdGhhdCBhIG5vbi1HTlUgbGlua2VyIGlzIGZvdW5kLCBhbmQgdGhlbiByZXN0YXJ0LgotCi1FT0YKLSAgICAgIGZpCi0gICAgICA7OwotCi0gICAgYW1pZ2FvcyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckcm0gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBOQU1FICRsaWJuYW1lIiA+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgTElCUkFSWV9JRCAxIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIFZFUlNJT04gJG1ham9yIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIFJFVklTSU9OICRyZXZpc2lvbiIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kQVIgJEFSX0ZMQUdTICRsaWIgJGxpYm9ianN+JFJBTkxJQiAkbGlifihjZCAkb3V0cHV0X29iamRpciAmJiBhMml4bGlicmFyeSAtMzIpJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwotCi0gICAgICAjIFNhbXVlbCBBLiBGYWx2byBJSSA8a2M1dGphQGRvbHBoaW4ub3BlbnByb2plY3RzLm5ldD4gcmVwb3J0cwotICAgICAgIyB0aGF0IHRoZSBzZW1hbnRpY3Mgb2YgZHluYW1pYyBsaWJyYXJpZXMgb24gQW1pZ2FPUywgYXQgbGVhc3QgdXAKLSAgICAgICMgdG8gdmVyc2lvbiA0LCBpcyB0byBzaGFyZSBkYXRhIGFtb25nIG11bHRpcGxlIHByb2dyYW1zIGxpbmtlZAotICAgICAgIyB3aXRoIHRoZSBzYW1lIGR5bmFtaWMgbGlicmFyeS4gIFNpbmNlIHRoaXMgZG9lc24ndCBtYXRjaCB0aGUKLSAgICAgICMgYmVoYXZpb3Igb2Ygc2hhcmVkIGxpYnJhcmllcyBvbiBvdGhlciBwbGF0Zm9ybXMsIHdlIGNhbid0IHVzZQotICAgICAgIyB0aGVtLgotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLQotICAgIGJlb3MqKQotICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0JIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYwotCSMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0gICAgICAjIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAotICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0KLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLQkjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0JIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQllbHNlCi0JICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JZml+Ci0JJENDIC1zaGFyZWQgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBpbnRlcml4W1szLTldXSopCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwotICAgICAgIyBIYWNrOiBPbiBJbnRlcml4IDMueCwgd2UgY2Fubm90IGNvbXBpbGUgUElDIGJlY2F1c2Ugb2YgYSBicm9rZW4gZ2NjLgotICAgICAgIyBJbnN0ZWFkLCBzaGFyZWQgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgYW4gaW1hZ2UgYmFzZSAoMHgxMDAwMDAwMCBieQotICAgICAgIyBkZWZhdWx0KSBhbmQgcmVsb2NhdGVkIGlmIHRoZXkgY29uZmxpY3QsIHdoaWNoIGlzIGEgc2xvdyB2ZXJ5IG1lbW9yeQotICAgICAgIyBjb25zdW1pbmcgYW5kIGZyYWdtZW50aW5nIHByb2Nlc3MuICBUbyBhdm9pZCB0aGlzLCB3ZSBwaWNrIGEgcmFuZG9tLAotICAgICAgIyAyNTYgS2lCLWFsaWduZWQgaW1hZ2UgYmFzZSBiZXR3ZWVuIDB4NTAwMDAwMDAgYW5kIDB4NkZGQzAwMDAgYXQgbGluawotICAgICAgIyB0aW1lLiAgTW92aW5nIHVwIGZyb20gMHgxMDAwMDAwMCBhbHNvIGFsbG93cyBtb3JlIHNicmsoMikgc3BhY2UuCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCi0gICAgICA7OwotCi0gICAgZ251KiB8IGxpbnV4KiB8IGsqYnNkKi1nbnUpCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQl0bXBfYWRkZmxhZz0KLQljYXNlICRjY19iYXNlbmFtZSwkaG9zdF9jcHUgaW4KLQlwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwotCSAgOzsKLQlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSopCSMgUG9ydGxhbmQgR3JvdXAgZjc3IGFuZCBmOTAgY29tcGlsZXJzCi0JICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnIC1Nbm9tYWluJyA7OwotCWVjYyosaWE2NCogfCBpY2MqLGlhNjQqKQkJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKLQkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKLQllZmMqLGlhNjQqIHwgaWZvcnQqLGlhNjQqKQkjIEludGVsIEZvcnRyYW4gY29tcGlsZXIgb24gaWE2NAotCSAgdG1wX2FkZGZsYWc9JyAtaV9keW5hbWljIC1ub2Zvcl9tYWluJyA7OwotCWlmYyogfCBpZm9ydCopCQkJIyBJbnRlbCBGb3J0cmFuIGNvbXBpbGVyCi0JICB0bXBfYWRkZmxhZz0nIC1ub2Zvcl9tYWluJyA7OwotCWVzYWMKLQljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLQkqU3VuXCBDKikJCQkjIFN1biBDIDUuOQotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRlY2hvIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKLQkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKLQkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwotCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwotCSopCi0JICB0bXBfc2hhcmVkZmxhZz0nLXNoYXJlZCcgOzsKLQllc2FjCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQotCWlmIHRlc3QgJHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyA9IHllczsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gICRlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0JZmkKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIG5ldGJzZCopCi0gICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLQl3bGFyYz0KLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIHNvbGFyaXMqKQotICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0JY2F0IDw8RU9GIDE+JjIKLQotKioqIFdhcm5pbmc6IFRoZSByZWxlYXNlcyAyLjguKiBvZiB0aGUgR05VIGxpbmtlciBjYW5ub3QgcmVsaWFibHkKLSoqKiBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBTb2xhcmlzIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKLSoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKLSoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuOS4xIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5Ci0qKiogeW91ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgbmF0aXZlIGxpbmtlciBpcwotKioqIHVzZWQsIGFuZCB0aGVuIHJlc3RhcnQuCi0KLUVPRgotICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQotICAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCi0gICAgICAgICpcIFtbMDFdXS4qIHwgKlwgMi5bWzAtOV1dLiogfCAqXCAyLjFbWzAtNV1dLiopCi0JX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotCWNhdCA8PF9MVF9FT0YgMT4mMgotCi0qKiogV2FybmluZzogUmVsZWFzZXMgb2YgdGhlIEdOVSBsaW5rZXIgcHJpb3IgdG8gMi4xNi45MS4wLjMgY2FuIG5vdAotKioqIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIFNDTyBzeXN0ZW1zLiAgVGhlcmVmb3JlLCBsaWJ0b29sCi0qKiogaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIFdlIHVyZ2UgeW91IHRvIHVwZ3JhZGUgR05VCi0qKiogYmludXRpbHMgdG8gcmVsZWFzZSAyLjE2LjkxLjAuMyBvciBuZXdlci4gIEFub3RoZXIgb3B0aW9uIGlzIHRvIG1vZGlmeQotKioqIHlvdXIgUEFUSCBvciBjb21waWxlciBjb25maWd1cmF0aW9uIHNvIHRoYXQgdGhlIG5hdGl2ZSBsaW5rZXIgaXMKLSoqKiB1c2VkLCBhbmQgdGhlbiByZXN0YXJ0LgotCi1fTFRfRU9GCi0JOzsKLQkqKQotCSAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tcnBhdGgsJGxpYmRpcmAnCi0JICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUsXCR7U0NPQUJTUEFUSDorJHtpbnN0YWxsX2xpYmRpcn0vfSRzb25hbWUgLW8gJGxpYicKLQkgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUsXCR7U0NPQUJTUEFUSDorJHtpbnN0YWxsX2xpYmRpcn0vfSRzb25hbWUsLXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0JICBlbHNlCi0JICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQkgIGZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0KLSAgICBzdW5vczQqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIHdsYXJjPQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgKikKLSAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICBpZiB0ZXN0ICIkX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgPSBubzsgdGhlbgotICAgICAgcnVucGF0aF92YXI9Ci0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Ci0gICAgICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Ci0gICAgZmkKLSAgZWxzZQotICAgICMgUE9SVE1FIGZpbGwgaW4gYSBkZXNjcmlwdGlvbiBvZiB5b3VyIHN5c3RlbSdzIGxpbmtlciAobm90IEdOVSBsZCkKLSAgICBjYXNlICRob3N0X29zIGluCi0gICAgYWl4MyopCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJExEIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtYkU6JGV4cG9ydF9zeW1ib2xzIC1UNTEyIC1INTEyIC1iTTpTUkV+JEFSICRBUl9GTEFHUyAkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCi0gICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQotICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0IC16ICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiOyB0aGVuCi0JIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCi0JIyBicm9rZW4gY29sbGVjdDIuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT11bnN1cHBvcnRlZAotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBhaXhbWzQtOV1dKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0JIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAotCSMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgotCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLQlleHBfc3ltX2ZsYWc9Jy1CZXhwb3J0JwotCW5vX2VudHJ5X2ZsYWc9IiIKLSAgICAgIGVsc2UKLQkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLQkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0JaWYgJE5NIC1WIDI+JjEgfCBncmVwICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFxbJF0yID09ICJUIikgfHwgKFxbJF0yID09ICJEIikgfHwgKFxbJF0yID09ICJCIikpICYmIChbc3Vic3RyXShcWyRdMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXFskXTMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCi0JZWxzZQotCSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXFskXTIgPT0gIlQiKSB8fCAoXFskXTIgPT0gIkQiKSB8fCAoXFskXTIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFxbJF0zLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcWyRdMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKLQlmaQotCWFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLQotCSMgVGVzdCBpZiB3ZSBhcmUgdHJ5aW5nIHRvIHVzZSBydW4gdGltZSBsaW5raW5nIG9yIG5vcm1hbAotCSMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotCSMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0JY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMjNdXXxhaXg0LltbMjNdXS4qfGFpeFtbNS05XV0qKQotCSAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCi0gIAkgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0gIAkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKLSAgCSAgICBicmVhawotICAJICBmaQotCSAgZG9uZQotCSAgOzsKLQllc2FjCi0KLQlleHBfc3ltX2ZsYWc9Jy1iZXhwb3J0JwotCW5vX2VudHJ5X2ZsYWc9Jy1ibm9lbnRyeScKLSAgICAgIGZpCi0KLSAgICAgICMgV2hlbiBsYXJnZSBleGVjdXRhYmxlcyBvciBzaGFyZWQgb2JqZWN0cyBhcmUgYnVpbHQsIEFJWCBsZCBjYW4KLSAgICAgICMgaGF2ZSBwcm9ibGVtcyBjcmVhdGluZyB0aGUgdGFibGUgb2YgY29udGVudHMuICBJZiBsaW5raW5nIGEgbGlicmFyeQotICAgICAgIyBvciBwcm9ncmFtIHJlc3VsdHMgaW4gImVycm9yIFRPQyBvdmVyZmxvdyIgYWRkIC1tbWluaW1hbC10b2MgdG8KLSAgICAgICMgQ1hYRkxBR1MvQ0ZMQUdTIGZvciBnKysvZ2NjLiAgSW4gdGhlIGNhc2VzIHdoZXJlIHRoYXQgaXMgbm90Ci0gICAgICAjIGVub3VnaCB0byBmaXggdGhlIHByb2JsZW0sIGFkZCAtV2wsLWJiaWd0b2MgdG8gTERGTEFHUy4KLQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JwotICAgICAgX0xUX0FDX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi0KLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JY2FzZSAkaG9zdF9vcyBpbiBhaXg0LltbMDEyXV18YWl4NC5bWzAxMl1dLiopCi0JIyBXZSBvbmx5IHdhbnQgdG8gZG8gdGhpcyBvbiBBSVggNC4yIGFuZCBsb3dlciwgdGhlIGNoZWNrCi0JIyBiZWxvdyBmb3IgYnJva2VuIGNvbGxlY3QyIGRvZXNuJ3Qgd29yayB1bmRlciA0LjMrCi0JICBjb2xsZWN0Mm5hbWU9YCR7Q0N9IC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCi0JICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCi0gIAkgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCi0JICB0aGVuCi0gIAkgICMgV2UgaGF2ZSByZXdvcmtlZCBjb2xsZWN0MgotICAJICA6Ci0JICBlbHNlCi0gIAkgICMgV2UgaGF2ZSBvbGQgY29sbGVjdDIKLSAgCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT11bnN1cHBvcnRlZAotICAJICAjIEl0IGZhaWxzIHRvIGZpbmQgdW5pbnN0YWxsZWQgbGlicmFyaWVzIHdoZW4gdGhlIHVuaW5zdGFsbGVkCi0gIAkgICMgcGF0aCBpcyBub3QgbGlzdGVkIGluIHRoZSBsaWJwYXRoLiAgU2V0dGluZyBoYXJkY29kZV9taW51c19MCi0gIAkgICMgdG8gdW5zdXBwb3J0ZWQgZm9yY2VzIHJlbGlua2luZwotICAJICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9Ci0JICBmaQotCSAgOzsKLQllc2FjCi0Jc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCi0JaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0JICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHt3bH0tRycKLQlmaQotICAgICAgZWxzZQotCSMgbm90IHVzaW5nIGdjYwotCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCi0gIAkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQotICAJIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKLQkgIHNoYXJlZF9mbGFnPSctRycKLQllbHNlCi0JICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCi0JICBlbHNlCi0JICAgIHNoYXJlZF9mbGFnPScke3dsfS1iTTpTUkUnCi0JICBmaQotCWZpCi0gICAgICBmaQotCi0gICAgICAjIEl0IHNlZW1zIHRoYXQgLWJleHBhbGwgZG9lcyBub3QgZXhwb3J0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGgKLSAgICAgICMgdW5kZXJzY29yZSAoXyksIHNvIGl0IGlzIGJldHRlciB0byBnZW5lcmF0ZSBhIGxpc3Qgb2Ygc3ltYm9scyB0byBleHBvcnQuCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcwotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0JIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCi0JIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwotICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eSBleGVjdXRhYmxlLgotICAgICAgIF9MVF9BQ19TWVNfTElCUEFUSF9BSVgKLSAgICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZWNobyAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLSAgICAgICBlbHNlCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKLQkgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30gJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCi0JZWxzZQotCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkgZXhlY3V0YWJsZS4KLQkgX0xUX0FDX1NZU19MSUJQQVRIX0FJWAotCSBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLQkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi0JICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKLQkgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJwotCSAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCi0JICBfTFRfQUNfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLQkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJwotCWZpCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGFtaWdhb3MqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JGVjaG8gIiNkZWZpbmUgTkFNRSAkbGlibmFtZSIgPiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRlY2hvICIjZGVmaW5lIExJQlJBUllfSUQgMSIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBWRVJTSU9OICRtYWpvciIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kZWNobyAiI2RlZmluZSBSRVZJU0lPTiAkcmV2aXNpb24iID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEFSICRBUl9GTEFHUyAkbGliICRsaWJvYmpzfiRSQU5MSUIgJGxpYn4oY2QgJG91dHB1dF9vYmpkaXIgJiYgYTJpeGxpYnJhcnkgLTMyKScKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgICMgc2VlIGNvbW1lbnQgYWJvdXQgZGlmZmVyZW50IHNlbWFudGljcyBvbiB0aGUgR05VIGxkIHNlY3Rpb24KLSAgICAgIF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICBic2RpW1s0NV1dKikKLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9LXJkeW5hbWljCi0gICAgICA7OwotCi0gICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0gICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0gICAgICBsaWJleHQ9bGliCi0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBlY2hvICIkZGVwbGlicyIgfCAkU0VEIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotICAgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotICAgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSAgICAgIF9MVF9BQ19UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLSAgICAgIF9MVF9BQ19UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotICAgICAgOzsKLQotICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICBjYXNlICRob3N0X29zIGluCi0gICAgICAgIHJoYXBzb2R5KiB8IGRhcndpbjEuW1swMTJdXSkKLSAgICAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnCi0gICAgICAgICA7OwotICAgICAgICopICMgRGFyd2luIDEuMyBvbgotICAgICAgICAgaWYgdGVzdCAteiAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVH0gOyB0aGVuCi0gICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnCi0gICAgICAgICBlbHNlCi0gICAgICAgICAgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVR9IGluCi0gICAgICAgICAgICAgMTAuW1swMTJdXSkKLSAgICAgICAgICAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnCi0gICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgIDEwLiopCi0gICAgICAgICAgICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJwotICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgZXNhYwotICAgICAgICAgZmkKLSAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAotICAgICAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScnCi0gICAgICBfTFRfQUNfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLSAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyA7IHRoZW4KLSAgICAJb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCi0gICAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2Qke19sdF9kc3ltdXRpbH0iCi0gICAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgotICAgICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgotICAgICAgICBfTFRfQUNfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPSJzZWQgLWUgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCi0gICAgZWxzZQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgeGxjKikKLSAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJwotICAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1xbWtzaHJvYmogJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWluc3RhbGxfbmFtZSAke3dsfWBlY2hvICRycGF0aC8kc29uYW1lYCAkeGxjdmVyc3RyaW5nJwotICAgICAgICAgX0xUX0FDX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPSckQ0MgJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgLWJ1bmRsZSAkbGlib2JqcyAkZGVwbGlicyRjb21waWxlcl9mbGFncycKLSAgICAgICAgICAjIERvbid0IGZpeCB0aGlzIGJ5IHVzaW5nIHRoZSBsZCAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGZsYWcsIGl0IGRvZXNuJ3QgZXhpc3QgaW4gb2xkZXIgZGFyd2luIGxkcwotICAgICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAtZSAicywjLiosLCIgLWUgInMsXlsgICAgXSosLCIgLWUgInMsXlwoLi4qXCksXyYsIiA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+JENDIC1xbWtzaHJvYmogJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWluc3RhbGxfbmFtZSAke3dsfSRycGF0aC8kc29uYW1lICR4bGN2ZXJzdHJpbmd+bm1lZGl0IC1zICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW0gJHtsaWJ9JwotICAgICAgICAgIF9MVF9BQ19UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAtZSAicywjLiosLCIgLWUgInMsXlsgICAgXSosLCIgLWUgInMsXlwoLi4qXCksXyYsIiA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+JENDICRhbGxvd191bmRlZmluZWRfZmxhZyAgLW8gJGxpYiAtYnVuZGxlICRsaWJvYmpzICRkZXBsaWJzJGNvbXBpbGVyX2ZsYWdzfm5tZWRpdCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKLSAgICAgICAgICA7OwotICAgICAgICopCi0gICAgICAgICBfTFRfQUNfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICBmaQotICAgICAgOzsKLQotICAgIGRndXgqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgZnJlZWJzZDEqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLQotICAgICMgRnJlZUJTRCAyLjIuWzAxMl0gYWxsb3dzIHVzIHRvIGluY2x1ZGUgYysrcnQwLm8gdG8gZ2V0IEMrKyBjb25zdHJ1Y3RvcgotICAgICMgc3VwcG9ydC4gIEZ1dHVyZSB2ZXJzaW9ucyBkbyB0aGlzIGF1dG9tYXRpY2FsbHksIGJ1dCBhbiBleHBsaWNpdCBjKytydDAubwotICAgICMgZG9lcyBub3QgYnJlYWsgYW55dGhpbmcsIGFuZCBoZWxwcyBzaWduaWZpY2FudGx5IChhdCB0aGUgY29zdCBvZiBhIGxpdHRsZQotICAgICMgZXh0cmEgc3BhY2UpLgotICAgIGZyZWVic2QyLjIqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAvdXNyL2xpYi9jKytydDAubycKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICAjIFVuZm9ydHVuYXRlbHksIG9sZGVyIHZlcnNpb25zIG9mIEZyZWVCU0QgMiBkbyBub3QgaGF2ZSB0aGlzIGZlYXR1cmUuCi0gICAgZnJlZWJzZDIqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgOzsKLQotICAgIGhwdXg5KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJHJtICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckcm0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgIGZpCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwotCi0gICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCi0gICAgICA7OwotCi0gICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICBmaQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLQotCV9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0JX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKLQotCSMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCi0JIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIGhwdXgxMSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JY2FzZSAkaG9zdF9jcHUgaW4KLQlocHBhKjY0KikKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQlpYTY0KikKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQkqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgIDs7Ci0JZXNhYwotICAgICAgZWxzZQotCWNhc2UgJGhvc3RfY3B1IGluCi0JaHBwYSo2NCopCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWlhNjQqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgOzsKLQkqKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICA7OwotCWVzYWMKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotCi0JY2FzZSAkaG9zdF9jcHUgaW4KLQlocHBhKjY0KnxpYTY0KikKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPScrYiAkbGliZGlyJwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLQkgIDs7Ci0JKikKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0JICBfTFRfQUNfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJwotCi0JICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAotCSAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0JICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLQkgIDs7Ci0JZXNhYwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmdgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGVjaG8gLXNldF92ZXJzaW9uICR2ZXJzdHJpbmdgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nLXJwYXRoICRsaWJkaXInCi0gICAgICBmaQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgOzsKLQotICAgIG5ldGJzZCopCi0gICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICMgYS5vdXQKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAgICAgIyBFTEYKLSAgICAgIGZpCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICA7OwotCi0gICAgbmV3c29zNikKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICBvcGVuYnNkKikKLSAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotCWlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scycKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKLQllbHNlCi0JICBjYXNlICRob3N0X29zIGluCi0JICAgb3BlbmJzZFtbMDFdXS4qIHwgb3BlbmJzZDIuW1swLTddXSB8IG9wZW5ic2QyLltbMC03XV0uKikKLQkgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0JICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgICAgOzsKLQkgICAqKQotCSAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgICA7OwotCSAgZXNhYwotICAgICAgICBmaQotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLSAgICAgIGZpCi0gICAgICA7OwotCi0gICAgb3MyKikKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJGVjaG8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kZWNobyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JGVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwotICAgICAgX0xUX0FDX1RBR1ZBUihvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKLSAgICAgIDs7Ci0KLSAgICBvc2YzKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotICAgICAgZmkKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06Ci0gICAgICA7OwotCi0gICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvICR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZ2AgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBlY2hvIC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkTEQgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1pbnB1dCAkbGliLmV4cCAkbGlua2VyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZWNobyAtc2V0X3ZlcnNpb24gJHZlcnN0cmluZ2AgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRybSAkbGliLmV4cCcKLQotCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKLQlfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCi0gICAgICBmaQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgotICAgICAgOzsKLQotICAgIHNvbGFyaXMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogdGV4dCcKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0Jd2xhcmM9JyR7d2x9JwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH4kZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kcm0gJGxpYi5leHAnCi0gICAgICBlbHNlCi0Jd2xhcmM9JycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJGVjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+JGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0gIAkkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kcm0gJGxpYi5leHAnCi0gICAgICBmaQotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICBjYXNlICRob3N0X29zIGluCi0gICAgICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OwotICAgICAgKikKLQkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAotCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCBgJHdsJywKLQkjIGJ1dCBpcyBjYXJlZnVsIGVub3VnaCBub3QgdG8gcmVvcmRlci4KLSAJIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKLQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCi0JZWxzZQotCSAgX0xUX0FDX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwotCWZpCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgOzsKLQotICAgIHN1bm9zNCopCi0gICAgICBpZiB0ZXN0ICJ4JGhvc3RfdmVuZG9yIiA9IHhzZXF1ZW50OyB0aGVuCi0JIyBVc2UgJENDIHRvIGxpbmsgdW5kZXIgc2VxdWVudCwgYmVjYXVzZSBpdCB0aHJvd3MgaW4gc29tZSBleHRyYSAubwotCSMgZmlsZXMgdGhhdCBtYWtlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucyB3b3JrLgotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICBlbHNlCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc3RhdGljIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgIGZpCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICBzeXN2NCkKLSAgICAgIGNhc2UgJGhvc3RfdmVuZG9yIGluCi0Jc25pKQotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotCSAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/Ci0JOzsKLQlzaWVtZW5zKQotCSAgIyMgTEQgaXMgbGQgaXQgbWFrZXMgYSBQTEFNTElCCi0JICAjIyBDQyBqdXN0IG1ha2VzIGEgR3Jvc3NNb2R1bGUuCi0JICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotCSAgX0xUX0FDX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSckQ0MgLXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KLSAgICAgICAgOzsKLQltb3Rvcm9sYSkKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLQkgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQotCTs7Ci0gICAgICBlc2FjCi0gICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgOzsKLQotICAgIHN5c3Y0LjMqKQotICAgICAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Jy1CZXhwb3J0JwotICAgICAgOzsKLQotICAgIHN5c3Y0Kk1QKikKLSAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0JX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLQlydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAotCWhhcmRjb2RlX3J1bnBhdGhfdmFyPXllcwotCV9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCi0gICAgICBmaQotICAgICAgOzsKLQotICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LltbMDFdXS5bWzEwXV0qIHwgdW5peHdhcmU3KiB8IHNjbzMuMnY1LjAuW1swMjRdXSopCi0gICAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKLSAgICAgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKLQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgIGVsc2UKLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgZmkKLSAgICAgIDs7Ci0KLSAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQotICAgICAgIyBOb3RlOiBXZSBjYW4gTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKLSAgICAgICMgbGluayB3aXRoIC1sYywgYW5kIHRoYXQgd291bGQgY2F1c2UgYW55IHN5bWJvbHMgdXNlZCBmcm9tIGxpYmMgdG8KLSAgICAgICMgYWx3YXlzIGJlIHVucmVzb2x2ZWQsIHdoaWNoIG1lYW5zIGp1c3QgYWJvdXQgbm8gbGlicmFyeSB3b3VsZAotICAgICAgIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAotICAgICAgIyB0aG91Z2gsIHdoaWNoIGRvZXMgY2F0Y2ggc29tZSBiYWQgc3ltYm9scyBidXQgaXNuJ3QgYXMgaGVhdnktaGFuZGVkCi0gICAgICAjIGFzIC16IGRlZnMuCi0gICAgICBfTFRfQUNfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKLSAgICAgIF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teixub2RlZnMnCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KLSAgICAgIF9MVF9BQ19UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nYHRlc3QgLXogIiRTQ09BQlNQQVRIIiAmJiBlY2hvICR7d2x9LVIsJGxpYmRpcmAnCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKLSAgICAgIF9MVF9BQ19UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotICAgICAgX0xUX0FDX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tQmV4cG9ydCcKLSAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKLQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLFwke1NDT0FCU1BBVEg6KyR7aW5zdGFsbF9saWJkaXJ9L30kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLFwke1NDT0FCU1BBVEg6KyR7aW5zdGFsbF9saWJkaXJ9L30kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgZWxzZQotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLFwke1NDT0FCU1BBVEg6KyR7aW5zdGFsbF9saWJkaXJ9L30kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCxcJHtTQ09BQlNQQVRIOiske2luc3RhbGxfbGliZGlyfS99JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgIGZpCi0gICAgICA7OwotCi0gICAgdXRzNCopCi0gICAgICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICBfTFRfQUNfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJwotICAgICAgX0xUX0FDX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KLSAgICAgIDs7Ci0KLSAgICAqKQotICAgICAgX0xUX0FDX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi1dKQotQUNfTVNHX1JFU1VMVChbJF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSldKQotdGVzdCAiJF9MVF9BQ19UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubwotCi0jCi0jIERvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBsaW5rIGxpYmM/Ci0jCi1jYXNlICJ4JF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKSIgaW4KLXh8eHllcykKLSAgIyBBc3N1bWUgLWxjIHNob3VsZCBiZSBhZGRlZAotICBfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCi0KLSAgaWYgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgY2FzZSAkX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSBpbgotICAgIConficqKQotICAgICAgIyBGSVhNRTogd2UgbWF5IGhhdmUgdG8gZGVhbCB3aXRoIG11bHRpLWNvbW1hbmQgc2VxdWVuY2VzLgotICAgICAgOzsKLSAgICAnJENDICcqKQotICAgICAgIyBUZXN0IHdoZXRoZXIgdGhlIGNvbXBpbGVyIGltcGxpY2l0bHkgbGlua3Mgd2l0aCAtbGMgc2luY2Ugb24gc29tZQotICAgICAgIyBzeXN0ZW1zLCAtbGdjYyBoYXMgdG8gY29tZSBiZWZvcmUgLWxjLiBJZiBnY2MgYWxyZWFkeSBwYXNzZXMgLWxjCi0gICAgICAjIHRvIGxkLCBkb24ndCBhZGQgLWxjIGJlZm9yZSAtbGdjYy4KLSAgICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciAtbGMgc2hvdWxkIGJlIGV4cGxpY2l0bHkgbGlua2VkIGluXSkKLSAgICAgICRybSBjb25mdGVzdCoKLSAgICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAotCi0gICAgICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKSAyPmNvbmZ0ZXN0LmVycjsgdGhlbgotICAgICAgICBzb25hbWU9Y29uZnRlc3QKLSAgICAgICAgbGliPWNvbmZ0ZXN0Ci0gICAgICAgIGxpYm9ianM9Y29uZnRlc3QuJGFjX29iamV4dAotICAgICAgICBkZXBsaWJzPQotICAgICAgICB3bD0kX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkKLQlwaWNfZmxhZz0kX0xUX0FDX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpCi0gICAgICAgIGNvbXBpbGVyX2ZsYWdzPS12Ci0gICAgICAgIGxpbmtlcl9mbGFncz0tdgotICAgICAgICB2ZXJzdHJpbmc9Ci0gICAgICAgIG91dHB1dF9vYmpkaXI9LgotICAgICAgICBsaWJuYW1lPWNvbmZ0ZXN0Ci0gICAgICAgIGx0X3NhdmVfYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JF9MVF9BQ19UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKQotICAgICAgICBfTFRfQUNfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci0gICAgICAgIGlmIEFDX1RSWV9FVkFMKF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSkgMlw+XCYxIFx8IGdyZXAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKLSAgICAgICAgdGhlbgotCSAgX0xUX0FDX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0gICAgICAgIGVsc2UKLQkgIF9MVF9BQ19UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLSAgICAgICAgZmkKLSAgICAgICAgX0xUX0FDX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCi0gICAgICBlbHNlCi0gICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQotICAgICAgZmkKLSAgICAgICRybSBjb25mdGVzdCoKLSAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfQUNfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQotICAgICAgOzsKLSAgICBlc2FjCi0gIGZpCi0gIDs7Ci1lc2FjCi1dKSMgQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUwotCi0KLSMgX0xUX0FDX0ZJTEVfTFRETExfQwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEJlIGNhcmVmdWwgdGhhdCB0aGUgc3RhcnQgbWFya2VyIGFsd2F5cyBmb2xsb3dzIGEgbmV3bGluZS4KLUFDX0RFRlVOKFtfTFRfQUNfRklMRV9MVERMTF9DXSwgWwotIyAvKiBsdGRsbC5jIHN0YXJ0cyBoZXJlICovCi0jICNkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgotIyAjaW5jbHVkZSA8d2luZG93cy5oPgotIyAjdW5kZWYgV0lOMzJfTEVBTl9BTkRfTUVBTgotIyAjaW5jbHVkZSA8c3RkaW8uaD4KLSMKLSMgI2lmbmRlZiBfX0NZR1dJTl9fCi0jICMgIGlmZGVmIF9fQ1lHV0lOMzJfXwotIyAjICAgIGRlZmluZSBfX0NZR1dJTl9fIF9fQ1lHV0lOMzJfXwotIyAjICBlbmRpZgotIyAjZW5kaWYKLSMKLSMgI2lmZGVmIF9fY3BsdXNwbHVzCi0jIGV4dGVybiAiQyIgewotIyAjZW5kaWYKLSMgQk9PTCBBUElFTlRSWSBEbGxNYWluIChISU5TVEFOQ0UgaEluc3QsIERXT1JEIHJlYXNvbiwgTFBWT0lEIHJlc2VydmVkKTsKLSMgI2lmZGVmIF9fY3BsdXNwbHVzCi0jIH0KLSMgI2VuZGlmCi0jCi0jICNpZmRlZiBfX0NZR1dJTl9fCi0jICNpbmNsdWRlIDxjeWd3aW4vY3lnd2luX2RsbC5oPgotIyBERUNMQVJFX0NZR1dJTl9ETEwoIERsbE1haW4gKTsKLSMgI2VuZGlmCi0jIEhJTlNUQU5DRSBfX2hEbGxJbnN0YW5jZV9iYXNlOwotIwotIyBCT09MIEFQSUVOVFJZCi0jIERsbE1haW4gKEhJTlNUQU5DRSBoSW5zdCwgRFdPUkQgcmVhc29uLCBMUFZPSUQgcmVzZXJ2ZWQpCi0jIHsKLSMgICBfX2hEbGxJbnN0YW5jZV9iYXNlID0gaEluc3Q7Ci0jICAgcmV0dXJuIFRSVUU7Ci0jIH0KLSMgLyogbHRkbGwuYyBlbmRzIGhlcmUgKi8KLV0pIyBfTFRfQUNfRklMRV9MVERMTF9DCi0KLQotIyBfTFRfQUNfVEFHVkFSKFZBUk5BTUUsIFtUQUdOQU1FXSkKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1BQ19ERUZVTihbX0xUX0FDX1RBR1ZBUl0sIFtpZmVsc2UoWyQyXSwgW10sIFskMV0sIFskMV8kMl0pXSkKLQotCi0jIG9sZCBuYW1lcwotQUNfREVGVU4oW0FNX1BST0dfTElCVE9PTF0sICAgW0FDX1BST0dfTElCVE9PTF0pCi1BQ19ERUZVTihbQU1fRU5BQkxFX1NIQVJFRF0sICBbQUNfRU5BQkxFX1NIQVJFRCgkQCldKQotQUNfREVGVU4oW0FNX0VOQUJMRV9TVEFUSUNdLCAgW0FDX0VOQUJMRV9TVEFUSUMoJEApXSkKLUFDX0RFRlVOKFtBTV9ESVNBQkxFX1NIQVJFRF0sIFtBQ19ESVNBQkxFX1NIQVJFRCgkQCldKQotQUNfREVGVU4oW0FNX0RJU0FCTEVfU1RBVElDXSwgW0FDX0RJU0FCTEVfU1RBVElDKCRAKV0pCi1BQ19ERUZVTihbQU1fUFJPR19MRF0sICAgICAgICBbQUNfUFJPR19MRF0pCi1BQ19ERUZVTihbQU1fUFJPR19OTV0sICAgICAgICBbQUNfUFJPR19OTV0pCi0KLSMgVGhpcyBpcyBqdXN0IHRvIHNpbGVuY2UgYWNsb2NhbCBhYm91dCB0aGUgbWFjcm8gbm90IGJlaW5nIHVzZWQKLWlmZWxzZShbQUNfRElTQUJMRV9GQVNUX0lOU1RBTExdKQotCi1BQ19ERUZVTihbTFRfQUNfUFJPR19HQ0pdLAotW0FDX0NIRUNLX1RPT0woR0NKLCBnY2osIG5vKQotICB0ZXN0ICJ4JHtHQ0pGTEFHUytzZXR9IiA9IHhzZXQgfHwgR0NKRkxBR1M9Ii1nIC1PMiIKLSAgQUNfU1VCU1QoR0NKRkxBR1MpCi1dKQotCi1BQ19ERUZVTihbTFRfQUNfUFJPR19SQ10sCi1bQUNfQ0hFQ0tfVE9PTChSQywgd2luZHJlcywgbm8pCi1dKQotCi0KLSMgQ2hlYXAgYmFja3BvcnQgb2YgQVNfRVhFQ1VUQUJMRV9QIGFuZCByZXF1aXJlZCBtYWNyb3MKLSMgZnJvbSBBdXRvY29uZiAyLjU5OyB3ZSBzaG91bGQgbm90IHVzZSAkYXNfZXhlY3V0YWJsZV9wIGRpcmVjdGx5LgotCi0jIF9BU19URVNUX1BSRVBBUkUKLSMgLS0tLS0tLS0tLS0tLS0tLQotbTRfaWZuZGVmKFtfQVNfVEVTVF9QUkVQQVJFXSwKLVttNF9kZWZ1bihbX0FTX1RFU1RfUFJFUEFSRV0sCi1baWYgdGVzdCAteCAvID4vZGV2L251bGwgMj4mMTsgdGhlbgotICBhc19leGVjdXRhYmxlX3A9J3Rlc3QgLXgnCi1lbHNlCi0gIGFzX2V4ZWN1dGFibGVfcD0ndGVzdCAtZicKLWZpCi1dKV0pIyBfQVNfVEVTVF9QUkVQQVJFCi0KLSMgQVNfRVhFQ1VUQUJMRV9QCi0jIC0tLS0tLS0tLS0tLS0tLQotIyBDaGVjayB3aGV0aGVyIGEgZmlsZSBpcyBleGVjdXRhYmxlLgotbTRfaWZuZGVmKFtBU19FWEVDVVRBQkxFX1BdLAotW200X2RlZnVuKFtBU19FWEVDVVRBQkxFX1BdLAotW0FTX1JFUVVJUkUoW19BU19URVNUX1BSRVBBUkVdKWRubAotJGFzX2V4ZWN1dGFibGVfcCAkMVtdZG5sCi1dKV0pIyBBU19FWEVDVVRBQkxFX1AKLQotIyBOT1RFOiBUaGlzIG1hY3JvIGhhcyBiZWVuIHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGludG8gICAjCi0jICBHTlUgQXV0b2NvbmYgYXMgQUNfUFJPR19TRUQuICBXaGVuIGl0IGlzIGF2YWlsYWJsZSBpbiAgICMKLSMgIGEgcmVsZWFzZWQgdmVyc2lvbiBvZiBBdXRvY29uZiB3ZSBzaG91bGQgcmVtb3ZlIHRoaXMgICAgIwotIyAgbWFjcm8gYW5kIHVzZSBpdCBpbnN0ZWFkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjCi0jIExUX0FDX1BST0dfU0VECi0jIC0tLS0tLS0tLS0tLS0tCi0jIENoZWNrIGZvciBhIGZ1bGx5LWZ1bmN0aW9uYWwgc2VkIHByb2dyYW0sIHRoYXQgdHJ1bmNhdGVzCi0jIGFzIGZldyBjaGFyYWN0ZXJzIGFzIHBvc3NpYmxlLiAgUHJlZmVyIEdOVSBzZWQgaWYgZm91bmQuCi1BQ19ERUZVTihbTFRfQUNfUFJPR19TRURdLAotW0FDX01TR19DSEVDS0lORyhbZm9yIGEgc2VkIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0XSkKLUFDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX1NFRCwKLVsjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIHNlZCBhbmQgZ3NlZC4KLSMgVGhlbiB1c2UgdGhhdCBsaXN0IG9mIHNlZCdzIGFzIG9uZXMgdG8gdGVzdCBmb3IgdHJ1bmNhdGlvbi4KLWFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgZm9yIGx0X2FjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICAgICBpZiBBU19FWEVDVVRBQkxFX1AoWyIkYXNfZGlyLyRsdF9hY19wcm9nJGFjX2V4ZWNfZXh0Il0pOyB0aGVuCi0gICAgICAgIGx0X2FjX3NlZF9saXN0PSIkbHRfYWNfc2VkX2xpc3QgJGFzX2Rpci8kbHRfYWNfcHJvZyRhY19leGVjX2V4dCIKLSAgICAgIGZpCi0gICAgZG9uZQotICBkb25lCi1kb25lCi1JRlM9JGFzX3NhdmVfSUZTCi1sdF9hY19tYXg9MAotbHRfYWNfY291bnQ9MAotIyBBZGQgL3Vzci94cGc0L2Jpbi9zZWQgYXMgaXQgaXMgdHlwaWNhbGx5IGZvdW5kIG9uIFNvbGFyaXMKLSMgYWxvbmcgd2l0aCAvYmluL3NlZCB0aGF0IHRydW5jYXRlcyBvdXRwdXQuCi1mb3IgbHRfYWNfc2VkIGluICRsdF9hY19zZWRfbGlzdCAvdXNyL3hwZzQvYmluL3NlZDsgZG8KLSAgdGVzdCAhIC1mICRsdF9hY19zZWQgJiYgY29udGludWUKLSAgY2F0IC9kZXYvbnVsbCA+IGNvbmZ0ZXN0LmluCi0gIGx0X2FjX2NvdW50PTAKLSAgZWNobyAkRUNIT19OICIwMTIzNDU2Nzg5JEVDSE9fQyIgPmNvbmZ0ZXN0LmluCi0gICMgQ2hlY2sgZm9yIEdOVSBzZWQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KLSAgaWYgIiRsdF9hY19zZWQiIC0tdmVyc2lvbiAyPiYxIDwgL2Rldi9udWxsIHwgZ3JlcCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgIGx0X2N2X3BhdGhfU0VEPSRsdF9hY19zZWQKLSAgICBicmVhawotICBmaQotICB3aGlsZSB0cnVlOyBkbwotICAgIGNhdCBjb25mdGVzdC5pbiBjb25mdGVzdC5pbiA+Y29uZnRlc3QudG1wCi0gICAgbXYgY29uZnRlc3QudG1wIGNvbmZ0ZXN0LmluCi0gICAgY3AgY29uZnRlc3QuaW4gY29uZnRlc3QubmwKLSAgICBlY2hvID4+Y29uZnRlc3QubmwKLSAgICAkbHRfYWNfc2VkIC1lICdzL2EkLy8nIDwgY29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCB8fCBicmVhawotICAgIGNtcCAtcyBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgfHwgYnJlYWsKLSAgICAjIDEwMDAwIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKLSAgICB0ZXN0ICRsdF9hY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKLSAgICBsdF9hY19jb3VudD1gZXhwciAkbHRfYWNfY291bnQgKyAxYAotICAgIGlmIHRlc3QgJGx0X2FjX2NvdW50IC1ndCAkbHRfYWNfbWF4OyB0aGVuCi0gICAgICBsdF9hY19tYXg9JGx0X2FjX2NvdW50Ci0gICAgICBsdF9jdl9wYXRoX1NFRD0kbHRfYWNfc2VkCi0gICAgZmkKLSAgZG9uZQotZG9uZQotXSkKLVNFRD0kbHRfY3ZfcGF0aF9TRUQKLUFDX1NVQlNUKFtTRURdKQotQUNfTVNHX1JFU1VMVChbJFNFRF0pCi1dKQotCi1tNF9pbmNsdWRlKFthY2luY2x1ZGUubTRdKQorbTRfaW5jbHVkZShbbTQvYWNfYWRkX3NlYXJjaF9wYXRoLm00XSkKK200X2luY2x1ZGUoW200L2FjX21zZ19jYWNoZS5tNF0pCittNF9pbmNsdWRlKFttNC9hY19tc2dfbW9kdWxlX2RiZy5tNF0pCittNF9pbmNsdWRlKFttNC9hY19wcm9tcHRfdXNlci5tNF0pCittNF9pbmNsdWRlKFttNC9saWJ0b29sLm00XSkKK200X2luY2x1ZGUoW200L2x0b3B0aW9ucy5tNF0pCittNF9pbmNsdWRlKFttNC9sdHN1Z2FyLm00XSkKK200X2luY2x1ZGUoW200L2x0dmVyc2lvbi5tNF0pCittNF9pbmNsdWRlKFttNC9sdH5vYnNvbGV0ZS5tNF0pCittNF9pbmNsdWRlKFttNC9uZXRzbm1wX2FyZy5tNF0pCittNF9pbmNsdWRlKFttNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00XSkKZGlmZiAtLWdpdCBhL2FnZW50L01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L01ha2VmaWxlLmRlcGVuZAppbmRleCBlZDYxMjVjLi5mZmMxYWNhIDEwMDY0NAotLS0gYS9hZ2VudC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvTWFrZWZpbGUuZGVwZW5kCkBAIC04LDMyICs4LDE0IEBACiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDQsMTEgKzI2LDMxIEBACiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudF9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnRfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50X2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExMCwzMiArMTEyLDE0IEBACiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0NiwxMCArMTMwLDMxIEBACiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50X2luZGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudF9pbmRleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnRfaW5kZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNSwzMiArMjIwLDE0IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI1MSwxMSArMjM4LDMxIEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zMTEsMjQgKzMxOCwyMiBAQAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBtaWJncm91cC9zdHJ1Y3QuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogc25tcGQuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudF9tb2R1bGVfaW5jbHVkZXMuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS92YWNtX2NvbmYuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtQ29uZi5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCBtaWJncm91cC90ZXN0aGFuZGxlci5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX2RldmljZS5oIG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmggbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfcHJpbnQuaCBtaWJncm91cC9ob3N0L2hyX2Rpc2suaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmggbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N3aW5zdC5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuaCBtaWJncm91cC9ob3N0L2hyX3N3cnVuLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmggbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oIG1pYmdyb3VwL2hvc3QvaHJfcHJvYy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ob3N0L2hyX25ldHdvcmsuaCBtaWJncm91cC9ob3N0L2hyX3ByaW50LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2hvc3QvaHJfZGlzay5oIG1pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2V4YW1wbGVzL3NjYWxhcl9pbnQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL1Jtb24vcm93cy5oIG1pYmdyb3VwL1Jtb24vYWd1dGlsLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oIG1pYmdyb3VwL1Jtb24vYWxhcm0uaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmggbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oIG1pYmdyb3VwL1Jtb24vZXZlbnQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaApAQCAtMzQ3LDE2ICszNTIsMTcgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaAotLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmggbWliZ3JvdXAvbWliSUkvYXQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvaXAuaCBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuaCBtaWJncm91cC9taWJJSS9hdC5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zbm1wX21pYi5oIG1pYmdyb3VwL21pYklJL3RjcC5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9pY21wLmggbWliZ3JvdXAvbWliSUkvdWRwLmgKLS4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS90Y3AuaCBtaWJncm91cC9taWJJSS9pY21wLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL21pYklJL3VkcC5oIG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oIG1pYmdyb3VwL21pYklJL2lwdjYuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oIC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaApAQCAtMzcxLDkgKzM3Nyw5IEBACiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCi0uL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2FnZW50L25zRGVidWcuaCBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmgKQEAgLTQyNiw2ICs0MzIsMjAgQEAKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2ludGVyZmFjZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCiAuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zY29wZXpvbmUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZHMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX29pZHMuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAorLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKKy4vYWdlbnRfcmVhZF9jb25maWcubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oCisuL2FnZW50X3JlYWRfY29uZmlnLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9nZXQuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmgKIC4vYWdlbnRfcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvcm91dGUuaAogLi9hZ2VudF9yZWFkX2NvbmZpZy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfaGVhZGVycy5oCkBAIC00NjUsMzIgKzQ4NSwxNCBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01MDEsMTEgKzUwMywzMSBAQAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudF9yZWdpc3RyeS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTYyLDI3ICs1ODQsMTUyIEBACiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oIHNubXBkLmgKIC4vYWdlbnRfcmVnaXN0cnkubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oCiAuL2FnZW50X3JlZ2lzdHJ5LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvY2xpZW50LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9hZ2VudF9zeXNPUlRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2FnZW50X3N5c09SVGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKKy4vYWdlbnRfc3lzT1JUYWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTU5NCwyMSArNzQxLDcgQEAKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjI2LDExICs3NTksNDMgQEAKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAotLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vYWdlbnRfdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9hZ2VudF90cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2FnZW50X3RyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vYWdlbnRfdHJhcC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmgKIC4vYXV0b19ubGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hdXRvX25saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC02NTIsMzIgKzgxNywxNCBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02ODgsMTAgKzgzNSwzMSBAQAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJfbW9kdWxlcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03NDgsMTcgKzkxNiwxNyBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc3RydWN0LmggLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luY2x1ZGVzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaCBtaWJncm91cC90ZXN0aGFuZGxlci5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX2RldmljZS5oIG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmggbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfcHJpbnQuaCBtaWJncm91cC9ob3N0L2hyX2Rpc2suaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaCBtaWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5oIG1pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX3N3aW5zdC5oIG1pYmdyb3VwL2hvc3QvaHJfc3dydW4uaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uaCBtaWJncm91cC9ob3N0L2hyX2RldmljZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ob3N0L2hyX290aGVyLmggbWliZ3JvdXAvaG9zdC9ocl9wcm9jLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5oIG1pYmdyb3VwL2hvc3QvaHJfcHJpbnQuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmggbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oIG1pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5oIG1pYmdyb3VwL1Jtb24vcm93cy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2FndXRpbC5oIG1pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2FsYXJtLmggbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oIG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9SbW9uL2V2ZW50LmggbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCkBAIC03NzYsMzAgKzk0NCwyOSBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHMuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c0NvbmYuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCBtaWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXB2My91c21TdGF0cy5oIG1pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaCBtaWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oIG1pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmggbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9hdC5oIG1pYmdyb3VwL21pYklJL2lwLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2F0LmggbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvdGNwLmggbWliZ3JvdXAvbWliSUkvaWNtcC5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS91ZHAuaCBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaCBtaWJncm91cC9taWJJSS9pcHY2LmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaCAuLi9hZ2VudC9taWJncm91cC9taWJkZWZzLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaCBtaWJncm91cC91Y2Qtc25tcC9kaXNrLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaCBtaWJncm91cC9hZ2VudC9leHRlbmQuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJncm91cC91Y2Qtc25tcC9maWxlLmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmggbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaAotLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmgKLS4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9hdC5oIG1pYmdyb3VwL21pYklJL3RjcC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9taWJJSS9pY21wLmggbWliZ3JvdXAvbWliSUkvdWRwLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oIG1pYmdyb3VwL21pYklJL3NldFNlcmlhbE5vLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL21pYklJL2lwdjYuaCBtaWJncm91cC91Y2Qtc25tcC9wcm9jLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaCBtaWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wYXNzLmggbWliZ3JvdXAvdWNkLXNubXAvcGFzc19wZXJzaXN0LmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaCBtaWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2FnZW50L2V4dGVuZC5oIG1pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuaCBtaWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC91Y2Qtc25tcC9wcm94eS5oIG1pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5oIG1pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmggbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5oCiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmggbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmgKQEAgLTg0OSw2ICsxMDE2LDIwIEBACiAuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgKKy4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oCisuL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKIC4vbWliX21vZHVsZXMubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgKIC4vbWliX21vZHVsZXMubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaApAQCAtODc4LDcgKzEwNTksNiBAQAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuaAogLi9taWJfbW9kdWxlcy5sbzogbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCi0uL21pYl9tb2R1bGVzLmxvOiBtaWJncm91cC9hZ2VudHgvc3ViYWdlbnQuaAogLi9taWJfbW9kdWxlcy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9zaHV0ZG93bi5oCiAuL21pYl9tb2R1bGVzLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJfbW9kdWxlX2luaXRzLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKQEAgLTg4OSwzMiArMTA2OSwxNCBAQAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05MjUsMTEgKzEwODcsMzEgQEAKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL29iamVjdF9tb25pdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9vYmplY3RfbW9uaXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vb2JqZWN0X21vbml0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTk5MiwzMiArMTE3NCwxNCBAQAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMjgsMTAgKzExOTIsMzEgQEAKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wX2FnZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTA4NCw0NSArMTI2OSwyNzEgQEAKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc25tcGQuaCBtaWJncm91cC9zdHJ1Y3QuaAotLi9zbm1wX2FnZW50LmxvOiBtaWJncm91cC91dGlsX2Z1bmNzLmggbWliZ3JvdXAvc3RydWN0LmgKKy4vc25tcF9hZ2VudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBzbm1wZC5oCiAuL3NubXBfYWdlbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvcHJvdG9jb2wuaAogLi9zbm1wX2FnZW50LmxvOiAuLi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmgKIC4vc25tcF9hZ2VudC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIG0ybS5oIHNubXBkLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy5oIG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggbWliZ3JvdXAvc3RydWN0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAorLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliX21vZHVsZV9pbmNsdWRlcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9leGFtcGxlLmggbWliZ3JvdXAvdGVzdGhhbmRsZXIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmggbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmggbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N5c3RlbS5oIG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfb3RoZXIuaCBtaWJncm91cC9ob3N0L2hyX3Byb2MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9uZXR3b3JrLmggbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oCisuL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX2Rpc2suaCBtaWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9zY2FsYXJfaW50LmggbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5oCisuL3NubXBkLmxvOiBtaWJncm91cC9leGFtcGxlcy9kYXRhX3NldC5oIG1pYmdyb3VwL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9yb3dzLmggbWliZ3JvdXAvUm1vbi9hZ3V0aWwuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmggbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL1Jtb24vaGlzdG9yeS5oIG1pYmdyb3VwL1Jtb24vZXZlbnQuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVNjYWxhcnMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckRlbHRhVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQ29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnQuaAorLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Q29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlT2JqZWN0c1RhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oIG1pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCisuL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCBtaWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCBtaWJncm91cC9taWJJSS9hdC5oCisuL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9pcC5oIG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5oIG1pYmdyb3VwL21pYklJL2F0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3RjcC5oIG1pYmdyb3VwL21pYklJL2ljbXAuaCBtaWJncm91cC9taWJJSS91ZHAuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdmFjbV92YXJzLmggbWliZ3JvdXAvbWliSUkvc2V0U2VyaWFsTm8uaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvaXB2Ni5oIG1pYmdyb3VwL3VjZC1zbm1wL3Byb2MuaAorLi9zbm1wZC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliZGVmcy5oIG1pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuaCBtaWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oIG1pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmggbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oIG1pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmggbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmggbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oCisuL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oCisuL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCisuL3NubXBkLmxvOiBtaWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmggbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc0NhY2hlLmggbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29uZi5oCisuL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuaCBtaWJncm91cC9oYXJkd2FyZS9tZW1vcnkvaHdfbWVtLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHUuaCBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3VkcFRhYmxlLmggbWliZ3JvdXAvbWliSUkvdmFjbV9jb250ZXh0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgKKy4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9jb25zdGFudHMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAorLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9jb25zdGFudHMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCisuL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgKKy4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKKy4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCisuL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhbnRzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5oCisuL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCisuL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9jb25zdGFudHMuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKKy4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2NvbnN0YW50cy5oCisuL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuaAorLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIG1pYmdyb3VwL3NtdXgvc211eC5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTEzMywxMCArMTU0NCwzMSBAQAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3BlcmwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF9wZXJsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTkxLDM5ICsxNjIzLDE3IEBACiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3NubXBfcGVybC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBzbm1wX3BlcmwuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTIzNCwxMCArMTY0NCwzMSBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMjkxLDI3NyArMTcyMiwyNyBAQAogLi9zbm1wX3ZhcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc25tcF92YXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oIGtlcm5lbC5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oCisuL3NubXBfdmFycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgga2VybmVsLmgKIC4vc25tcF92YXJzLmxvOiBtaWJncm91cC9zdHJ1Y3QuaCBzbm1wZC5oCiAuL3NubXBfdmFycy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuaAogLi9zbm1wX3ZhcnMubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oCiAuL3NubXBfdmFycy5sbzogLi4vYWdlbnQvbWliZ3JvdXAvYWdlbnRfbW9kdWxlX2luY2x1ZGVzLmgKLS4vc25tcF92YXJzLmxvOiBtaWJncm91cC9zbXV4L3NtdXguaCBtaWJncm91cC9zbm1wdjMvdXNtQ29uZi5oCi0uL3NubXBfdmFycy5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCisuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvc211eC9zbXV4LmggbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5oCisuL3NubXBfdmFycy5sbzogbWliZ3JvdXAvc25tcHYzL3VzbUNvbmYuaCBtaWJncm91cC9taWJJSS92YWNtX2NvbmYuaAogLi9zbm1wX3ZhcnMubG86IHNubXBfcGVybC5oIC4uL2FnZW50L21pYmdyb3VwL2FnZW50X21vZHVsZV9pbml0cy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG0ybS5oIHNubXBkLmggbWliZ3JvdXAvc3RydWN0LmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaCBtaWJncm91cC91dGlsX2Z1bmNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3N0cnVjdC5oIC4uL2FnZW50L21pYmdyb3VwL21pYl9tb2R1bGVfaW5jbHVkZXMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIG1pYmdyb3VwL3Rlc3RoYW5kbGVyLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmggbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmggbWliZ3JvdXAvaG9zdC9ocl9vdGhlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3Byb2MuaCBtaWJncm91cC9ob3N0L2hyX25ldHdvcmsuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaG9zdC9ocl9wcmludC5oIG1pYmdyb3VwL2hvc3QvaHJfZGlzay5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5oIG1pYmdyb3VwL2hvc3QvaHJfZmlsZXN5cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ob3N0L2hyX3N3cnVuLmggbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvc2NhbGFyX2ludC5oIG1pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZXhhbXBsZXMvZGF0YV9zZXQuaCBtaWJncm91cC9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL1Jtb24vcm93cy5oIG1pYmdyb3VwL1Jtb24vYWd1dGlsLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oIG1pYmdyb3VwL1Jtb24vYWxhcm0uaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggbWliZ3JvdXAvUm1vbi9ldmVudC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlU2NhbGFycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXJDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmggbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCBtaWJncm91cC9zbm1wdjMvdXNtVXNlci5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmggbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9hdC5oIG1pYmdyb3VwL21pYklJL2lwLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oIG1pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL21pYklJL2F0LmggbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbWliSUkvdGNwLmggbWliZ3JvdXAvbWliSUkvaWNtcC5oIG1pYmdyb3VwL21pYklJL3VkcC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBtaWJncm91cC9taWJJSS9zZXRTZXJpYWxOby5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS9pcHY2LmggbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJkZWZzLmggbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5oIG1pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9kaXNrLmggbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9leHRlbmQuaCBtaWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9maWxlLmggbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuaCBtaWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91Y2Qtc25tcC9tZW1vcnkuaCBtaWJncm91cC91Y2Qtc25tcC92bXN0YXQuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5oIG1pYmdyb3VwL2FnZW50L25zRGVidWcuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5oIG1pYmdyb3VwL2FnZW50L25zTG9nZ2luZy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvbmYuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdXRpbGl0aWVzL292ZXJyaWRlLmggbWliZ3JvdXAvaGFyZHdhcmUvbWVtb3J5L2h3X21lbS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9oYXJkd2FyZS9jcHUvY3B1LmggbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS92YXJfcm91dGUuaCBtaWJncm91cC9taWJJSS90Y3BUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9taWJJSS91ZHBUYWJsZS5oIG1pYmdyb3VwL21pYklJL3ZhY21fY29udGV4dC5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaAotLi9zbm1wZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3JvdXRlLmgKLS4vc25tcGQubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKLS4vc25tcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdGNwQ29ubi5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhbnRzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCi0uL3NubXBkLmxvOiBtaWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9jb25zdGFudHMuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfaW50ZXJmYWNlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKLS4vc25tcGQubG86IG1pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2NvbnN0YW50cy5oCi0uL3NubXBkLmxvOiBtaWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuaAotLi9zbm1wZC5sbzogbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIG1pYmdyb3VwL3NtdXgvc211eC5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNTcyLDExICsxNzUzLDMxIEBACiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvYWxsX2hlbHBlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2MzAsNDAgKzE4MzEsMTkgQEAKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9hbGxfaGVscGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9oZWxwZXJzL2FsbF9oZWxwZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE2NzQsMTEgKzE4NTQsMzEgQEAKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL2JhYnlfc3RlcHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9iYWJ5X3N0ZXBzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNzMzLDM5ICsxOTMzLDE3IEBACiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvYmFieV9zdGVwcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTc3NiwxMSArMTk1NCwzMSBAQAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9idWxrX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTgzNSwzOSArMjAzMywxNyBAQAogLi9oZWxwZXJzL2J1bGtfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvYnVsa190b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xODc4LDExICsyMDU0LDMxIEBACiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9jYWNoZV9oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvY2FjaGVfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTkzNywzOSArMjEzMywxNyBAQAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL2NhY2hlX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE5ODAsMTEgKzIxNTQsMzEgQEAKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL2RlYnVnX2hhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9kZWJ1Z19oYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMDM5LDM5ICsyMjMzLDE3IEBACiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvZGVidWdfaGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjA4MiwxMSArMjI1NCwzMSBAQAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9pbnN0YW5jZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMTQxLDM5ICsyMzMzLDE3IEBACiAuL2hlbHBlcnMvaW5zdGFuY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL2luc3RhbmNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTg0LDExICsyMzU0LDMxIEBACiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9tb2RlX2VuZF9jYWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvbW9kZV9lbmRfY2FsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjI0MywzOSArMjQzMywxNyBAQAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL21vZGVfZW5kX2NhbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTIyODYsMTEgKzI0NTQsMzEgQEAKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvbXVsdGlwbGV4ZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjM0NSwzOSArMjUzMywxNyBAQAogLi9oZWxwZXJzL211bHRpcGxleGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9tdWx0aXBsZXhlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjM4OCwxMSArMjU1NCwzMSBAQAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI0NDcsMzkgKzI2MzMsMTcgQEAKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yNDkwLDExICsyNjU0LDMxIEBACiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvb2xkX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjU1MCwzOSArMjczNCwxNyBAQAogLi9oZWxwZXJzL29sZF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9vbGRfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yNTkzLDExICsyNzU1LDMxIEBACiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3JlYWRfb25seS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNjUyLDM5ICsyODM0LDE3IEBACiAuL2hlbHBlcnMvcmVhZF9vbmx5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9yZWFkX29ubHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI2OTUsMTEgKzI4NTUsMzEgQEAKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvcm93X21lcmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI3NTQsMzkgKzI5MzQsMTcgQEAKIC4vaGVscGVycy9yb3dfbWVyZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3Jvd19tZXJnZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjc5NywxMSArMjk1NSwzMSBAQAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy9zY2FsYXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjg1NiwzOSArMzAzNCwxNyBAQAogLi9oZWxwZXJzL3NjYWxhci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvc2NhbGFyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yODk5LDExICszMDU1LDMxIEBACiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3NjYWxhcl9ncm91cC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yOTU4LDM5ICszMTM0LDE3IEBACiAuL2hlbHBlcnMvc2NhbGFyX2dyb3VwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy9zY2FsYXJfZ3JvdXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMwMDEsMTEgKzMxNTUsMzEgQEAKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvc2VyaWFsaXplLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMwNjAsMzkgKzMyMzQsMTcgQEAKIC4vaGVscGVycy9zZXJpYWxpemUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3NlcmlhbGl6ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzEwMywxMSArMzI1NSwzMSBAQAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9zdGFzaF9jYWNoZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zMTY0LDM5ICszMzM2LDE3IEBACiAuL2hlbHBlcnMvc3Rhc2hfY2FjaGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3N0YXNoX2NhY2hlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzIwNywxMSArMzM1NywzMSBAQAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMyNjUsMTQ0ICszNDM1LDIwIEBACiAuL2hlbHBlcnMvc3Rhc2hfdG9fbmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vaGVscGVycy9zdGFzaF90b19uZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9oZWxwZXJzL3N0YXNoX3RvX25leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzQxMywxMSArMzQ1OSwzMSBAQAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy90YWJsZV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zNDcxLDQwICszNTM3LDExOCBAQAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL2hlbHBlcnMvdGFibGVfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3RhYmxlX2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2hlbHBlcnMvdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vaGVscGVycy90YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzUxNSwxMSArMzY1OSwzMSBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy90YWJsZV9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzU3NCwzOSArMzczOCwxNyBAQAogLi9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNjE3LDExICszNzU5LDMxIEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy90YWJsZV9kYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzY3NiwzOSArMzgzOCwxNyBAQAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM3MTksMTEgKzM4NTksMzEgQEAKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX2RhdGFzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy90YWJsZV9kYXRhc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zNzc4LDM5ICszOTM4LDE3IEBACiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL2hlbHBlcnMvdGFibGVfZGF0YXNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzgyMSwxMSArMzk1OSwzMSBAQAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zODgxLDM5ICs0MDM5LDE3IEBACiAuL2hlbHBlcnMvdGFibGVfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zOTI0LDExICs0MDYwLDMxIEBACiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9oZWxwZXJzL3RhYmxlX3Jvdy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOTgzLDM5ICs0MTM5LDE3IEBACiAuL2hlbHBlcnMvdGFibGVfcm93LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy90YWJsZV9yb3cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQwMjYsMTEgKzQxNjAsMzEgQEAKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hlbHBlcnMvdGFibGVfdGRhdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDA4NSwzOSArNDIzOSwxNyBAQAogLi9oZWxwZXJzL3RhYmxlX3RkYXRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy90YWJsZV90ZGF0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDEyOCwxMSArNDI2MCwzMSBAQAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hlbHBlcnMvd2F0Y2hlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWxwZXJzL3dhdGNoZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQxODcsMzkgKzQzMzksMTcgQEAKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vaGVscGVycy93YXRjaGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MjMwLDExICs0MzYwLDMxIEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJncm91cC9oZWFkZXJfY29tcGxleC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00MjkwLDQ0ICs0NDQwLDE4IEBACiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmxvOiAuL21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmgKIC4vbWliZ3JvdXAva2VybmVsX3N1bm9zNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9taWJncm91cC9rZXJuZWxfc3Vub3M1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYmdyb3VwL2tlcm5lbF9zdW5vczUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9taWJncm91cC9rZXJuZWxfc3Vub3M1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbWliZ3JvdXAva2VybmVsX3N1bm9zNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDMzOCwxMSArNDQ2MiwzMSBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliZ3JvdXAvdGVzdGhhbmRsZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYmdyb3VwL3Rlc3RoYW5kbGVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDM5OCwzOSArNDU0MiwxNyBAQAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJncm91cC90ZXN0aGFuZGxlci5sbzogLi9taWJncm91cC90ZXN0aGFuZGxlci5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NDQxLDExICs0NTYzLDMxIEBACiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQ1MDAsMTIgKzQ2NDIsMTEgQEAKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggbWliZ3JvdXAvc3RydWN0LmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91dGlsX2Z1bmNzLmgKKy4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IG1pYmdyb3VwL3V0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi9taWJncm91cC91dGlsX2Z1bmNzLmxvOiAuL21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmgKIC4vbWliZ3JvdXAvdXRpbF9mdW5jcy5sbzogLi9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCiAuL21pYmdyb3VwL3V0aWxfZnVuY3MubG86IC4uL2FnZW50L21pYmdyb3VwL21pYmRlZnMuaAogLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWliZ3JvdXAvd2luRXh0RExMLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYmdyb3VwL3dpbkV4dERMTC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL21pYmdyb3VwL3dpbkV4dERMTC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21pYmdyb3VwL3dpbkV4dERMTC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9taWJncm91cC93aW5FeHRETEwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApkaWZmIC0tZ2l0IGEvYWdlbnQvTWFrZWZpbGUuaW4gYi9hZ2VudC9NYWtlZmlsZS5pbgppbmRleCBhNjQ0OGY4Li43NjZlNWM2IDEwMDY0NAotLS0gYS9hZ2VudC9NYWtlZmlsZS5pbgorKysgYi9hZ2VudC9NYWtlZmlsZS5pbgpAQCAtMjUsNiArMjUsNyBAQAogSU5DTFVERVNVQkRJUkhFQURFUlM9YWdlbnRfcmVhZF9jb25maWcuaCBcCiAJYWdlbnRfcmVnaXN0cnkuaCBcCiAJYWdlbnRfaW5kZXguaCBcCisJYWdlbnRfc3lzT1JUYWJsZS5oIFwKIAlhZ2VudF90cmFwLmggXAogCWF1dG9fbmxpc3QuaCBcCiAJZHNfYWdlbnQuaCBcCkBAIC0zNCw3ICszNSw4IEBACiAJYWdlbnRfaGFuZGxlci5oIFwKIAluZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oIFwKIAltaWJfbW9kdWxlcy5oIFwKLQlhZ2VudF9jYWxsYmFja3MuaAorCWFnZW50X2NhbGxiYWNrcy5oIFwKKwlzeXNPUlRhYmxlLmgKIAogSU5TVEFMTEJVSUxUU1VCRElSSEVBREVSUz0uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmggXAogCQkJICAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaCBcCkBAIC00Miw3ICs0NCw4IEBACiBJTlNUQUxMQlVJTFRTVUJESVI9YWdlbnQKIAogSU5DTFVERU1JQkdST1VQRElSPWFnZW50L21pYmdyb3VwCi1JTkNMVURFTUlCR1JPVVBESVJIRUFERVJTPXV0aWxfZnVuY3MuaAorSU5DTFVERU1JQkdST1VQRElSSEVBREVSUz1zdHJ1Y3QuaCB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIFwKKwl1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIAogT1RIRVJJTlNUQUxMPWluc3RhbGxtaWJncm91cGhlYWRlcnMgQEVNQkVEUEVSTElOU1RBTExACiBPVEhFUlVOSU5TVEFMTD1ARU1CRURQRVJMVU5JTlNUQUxMQApAQCAtNjAsNiArNjMsNyBAQAogCWFnZW50X2luZGV4LmgJXAogCWFnZW50X3JlYWRfY29uZmlnLmggXAogCWFnZW50X3JlZ2lzdHJ5LmggXAorCWFnZW50X3N5c09SVGFibGUuaCBcCiAJYWdlbnRfdHJhcC5oCVwKIAlhdXRvX25saXN0LmgJXAogCWRzX2FnZW50LmgJXApAQCAtMTAzLDExICsxMDcsMTEgQEAKIAogIyBsaWJuZXRzbm1wYWdlbnQgb2JqZWN0cwogTElCQUdFTlRPQkpTPXNubXBfYWdlbnQubyBzbm1wX3ZhcnMubyBhZ2VudF9yZWFkX2NvbmZpZy5vIFwKLQlhZ2VudF9yZWdpc3RyeS5vIGFnZW50X2luZGV4Lm8gYWdlbnRfdHJhcC5vIGtlcm5lbC5vIFwKLQkgYWdlbnRfaGFuZGxlci5vICQoYWdlbnRncm91cF9saXN0X28pIEBPVEhFUkFHRU5UTElCT0JKU0AKKwlhZ2VudF9yZWdpc3RyeS5vIGFnZW50X2luZGV4Lm8gYWdlbnRfc3lzT1JUYWJsZS5vIGFnZW50X3RyYXAubyBcCisJa2VybmVsLm8gYWdlbnRfaGFuZGxlci5vICQoYWdlbnRncm91cF9saXN0X28pIEBPVEhFUkFHRU5UTElCT0JKU0AKIExMSUJBR0VOVE9CSlM9c25tcF9hZ2VudC5sbyBzbm1wX3ZhcnMubG8gYWdlbnRfcmVhZF9jb25maWcubG8gXAotCWFnZW50X3JlZ2lzdHJ5LmxvIGFnZW50X2luZGV4LmxvIGFnZW50X3RyYXAubG8ga2VybmVsLmxvIFwKLQlhZ2VudF9oYW5kbGVyLmxvICQoYWdlbnRncm91cF9saXN0X2xvKSBAT1RIRVJBR0VOVExJQkxPQkpTQAorCWFnZW50X3JlZ2lzdHJ5LmxvIGFnZW50X2luZGV4LmxvIGFnZW50X3N5c09SVGFibGUubG8gYWdlbnRfdHJhcC5sbyBcCisJa2VybmVsLmxvIGFnZW50X2hhbmRsZXIubG8gJChhZ2VudGdyb3VwX2xpc3RfbG8pIEBPVEhFUkFHRU5UTElCTE9CSlNACiAKICMgVGhlIGFnZW50IG9iamVjdHMuCiBBR0VOVE9CSlM9c25tcGQubyBAb3RoZXJfYWdlbnRvYmpzQApAQCAtMTQ2LDcgKzE1MCw3IEBACiAJJChSQU5MSUIpICQoQUdFTlRMSUIpCiAKIGxpYm5ldHNubXBtaWJzLiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKTogJHtMTUlCT0JKU30gJChIRUxQRVJMSUIpICQoQUdFTlRMSUIpICQoVVNFTElCUykKLQkkKExJQl9MRF9DTUQpICQoTUlCTElCKSAke0xNSUJPQkpTfSAkKEhFTFBFUkxJQikgJChBR0VOVExJQikgJChVU0VMSUJTKSAke0xNSUJMSUJTfSAkKExERkxBR1MpICQoTElCX0xEX0xJQlMpCisJJChMSUJfTERfQ01EKSAkKE1JQkxJQikgJHtMTUlCT0JKU30gJChIRUxQRVJMSUIpICQoQUdFTlRMSUIpICQoVVNFTElCUykgJChMREZMQUdTKSAke0xNSUJMSUJTfSAkKFBFUkxMRE9QVFNfRk9SX0xJQlMpICQoTElCX0xEX0xJQlMpCiAJJChSQU5MSUIpICQoTUlCTElCKQogCiBhZ2VudGxpYjogJChBR0VOVExJQikKQEAgLTE2NSwxNSArMTY5LDE2IEBACiAJICBAZWNobyAicmVtb3ZlZCBzbm1wX3BlcmwucGwgZnJvbSAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikiCiAKIGluc3RhbGxtaWJncm91cGhlYWRlcnM6Ci0JQGlmIHRlc3QgIiQoSU5DTFVERU1JQkdST1VQRElSSEVBREVSUykiICE9ICIiIDsgdGhlbiBcCi0gICAgICAgICAgICAgICAgZWNobyBjcmVhdGluZyBkaXJlY3RvcnkgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpL2FnZW50IDsgXAotICAgICAgICAgICAgICAgIGl0PSIkKElOQ0xVREVNSUJHUk9VUERJUkhFQURFUlMpIiA7IFwKLSAgICAgICAgICAgICAgICAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChJTlNUQUxMX1BSRUZJWCkkKGluY2x1ZGVkaXIpL2FnZW50IDsgXAotICAgICAgICAgICAgICAgIGZvciBpIGluICQkaXQgOyBkbyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAkKElOU1RBTExfREFUQSkgJCh0b3Bfc3JjZGlyKS8kKElOQ0xVREVNSUJHUk9VUERJUikvJCRpICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9hZ2VudCA7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVjaG8gImluc3RhbGxpbmcgJCRpIGluICQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9hZ2VudCIgOyBcCi0gICAgICAgICAgICAgICAgZG9uZSBcCi0gICAgICAgIGZpCisJQGZvciBpdCBpbiAkKElOQ0xVREVNSUJHUk9VUERJUkhFQURFUlMpIDsgZG8gXAorCQlpdGQ9YGRpcm5hbWUgIiQoSU5TVEFMTF9QUkVGSVgpJChpbmNsdWRlZGlyKS9hZ2VudC8kJGl0ImAgOyBcCisJCWlmIFsgISAtZCAiJCRpdGQiIF0gOyB0aGVuIFwKKwkJCWVjaG8gImNyZWF0aW5nIGRpcmVjdG9yeSAkJGl0ZCIgOyBcCisJCQkkKFNIRUxMKSAiJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzIiAiJCRpdGQiIDsgXAorCQlmaSA7IFwKKwkJJChJTlNUQUxMX0RBVEEpICIkKHRvcF9zcmNkaXIpLyQoSU5DTFVERU1JQkdST1VQRElSKS8kJGl0IiBcCisJCQkiJCRpdGQiIDsgXAorCQllY2hvICJpbnN0YWxsaW5nICQkaXQgaW4gJCRpdGQiIDsgXAorCWRvbmUKIAogQG1vZHVsZV9saXN0X2RlcHNACiBAYWdlbnRfbW9kdWxlX2xpc3RfZGVwc0AKZGlmZiAtLWdpdCBhL2FnZW50L2FnZW50X2hhbmRsZXIuYyBiL2FnZW50L2FnZW50X2hhbmRsZXIuYwppbmRleCBmY2JjNmRkLi4yYTJmMmQ5IDEwMDY0NAotLS0gYS9hZ2VudC9hZ2VudF9oYW5kbGVyLmMKKysrIGIvYWdlbnQvYWdlbnRfaGFuZGxlci5jCkBAIC0xNjIsNyArMTYyLDcgQEAKIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKgogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUoY29uc3QgY2hhciAqbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZXMpCiB7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqdGhlX3JlZzsKQEAgLTE3OSw3ICsxNzksNyBAQAogICAgIHRoZV9yZWctPnByaW9yaXR5ID0gREVGQVVMVF9NSUJfUFJJT1JJVFk7CiAgICAgaWYgKG5hbWUpCiAgICAgICAgIHRoZV9yZWctPmhhbmRsZXJOYW1lID0gc3RyZHVwKG5hbWUpOwotICAgIHRoZV9yZWctPnJvb3RvaWQgPSBuZXRzbm1wX21lbWR1cChyZWdfb2lkLCByZWdfb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICB0aGVfcmVnLT5yb290b2lkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQocmVnX29pZCwgcmVnX29pZF9sZW4pOwogICAgIHRoZV9yZWctPnJvb3RvaWRfbGVuID0gcmVnX29pZF9sZW47CiAgICAgcmV0dXJuIHRoZV9yZWc7CiB9CkBAIC0xODcsMTMgKzE4NywxOSBAQAogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqCiBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbihjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kLCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kLCBjb25zdCBvaWQgKiByZWdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpCiB7Ci0gICAgcmV0dXJuCi0gICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIobmFtZSwgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZCwgcmVnX29pZF9sZW4sIG1vZGVzKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpydiA9IE5VTEw7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXIobmFtZSwgaGFuZGxlcl9hY2Nlc3NfbWV0aG9kKTsKKyAgICBpZiAoaGFuZGxlcikgeworICAgICAgICBydiA9IG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKAorICAgICAgICAgICAgbmFtZSwgaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIG1vZGVzKTsKKyAgICAgICAgaWYgKCFydikKKyAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOworICAgIH0KKyAgICByZXR1cm4gcnY7CiB9CiAKIC8qKiByZWdpc3RlciBhIGhhbmRsZXIsIGFzIGRlZmluZWQgYnkgdGhlIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gcG9pbnRlci4gKi8KQEAgLTY2OSw4ICs2NzUsOCBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlZ2luZm8tPnJvb3RvaWQgIT0gTlVMTCkgewotICAgICAgICAgICAgci0+cm9vdG9pZCA9IG5ldHNubXBfbWVtZHVwKHJlZ2luZm8tPnJvb3RvaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaW5mby0+cm9vdG9pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgICAgICByLT5yb290b2lkID0KKyAgICAgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChyZWdpbmZvLT5yb290b2lkLCByZWdpbmZvLT5yb290b2lkX2xlbik7CiAgICAgICAgICAgICBpZiAoci0+cm9vdG9pZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHIpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtOTc3LDcgKzk4Myw4IEBACiAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgaGFuZGxlcl90b19pbnNlcnQsIHNpemVvZihoYW5kbGVyX3RvX2luc2VydCkpOwogICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9saXN0X2RhdGEoaGFuZGxlcl9yZWcsIGhhbmRsZXJfdG9faW5zZXJ0KTsKICAgICBpZiAoIWhhbmRsZXIpIHsKLSAgICAgICAgY29uZmlnX3BlcnJvcigibm8gc3VjaCBcIiVzXCIgaGFuZGxlciByZWdpc3RlcmVkLiIpOworCW5ldHNubXBfY29uZmlnX2Vycm9yKCJubyBcIiVzXCIgaGFuZGxlciByZWdpc3RlcmVkLiIsCisJCQkgICAgIGhhbmRsZXJfdG9faW5zZXJ0KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvYWdlbnRfaW5kZXguYyBiL2FnZW50L2FnZW50X2luZGV4LmMKaW5kZXggZWQ5YmExNC4uOGUzNDlkYyAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfaW5kZXguYworKysgYi9hZ2VudC9hZ2VudF9pbmRleC5jCkBAIC0xNjMsNyArMTYzLDcgQEAKIAogICAgIERFQlVHTVNHVEwoKCJyZWdpc3Rlcl9pbmRleCIsICJyZWdpc3RlciAiKSk7CiAgICAgREVCVUdNU0dWQVIoKCJyZWdpc3Rlcl9pbmRleCIsIHZhcmJpbmQpKTsKLSAgICBERUJVR01TRygoInJlZ2lzdGVyX2luZGV4IiwgImZvciBzZXNzaW9uICUwOHBcbiIsIHNzKSk7CisgICAgREVCVUdNU0coKCJyZWdpc3Rlcl9pbmRleCIsICJmb3Igc2Vzc2lvbiAlOHBcbiIsIHNzKSk7CiAKICNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpICYmICFkZWZpbmVkKFRFU1RJTkcpCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCkBAIC0zMDEsMTIgKzMwMSwxMiBAQAogICAgIGlmIChuZXdfaW5kZXggPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoMCA9PSBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZuZXdfaW5kZXgtPnZhcmJpbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJiaW5kLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+bmFtZV9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJiaW5kLT50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+dmFsLnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmJpbmQtPnZhbF9sZW4pKSB7CisgICAgaWYgKE5VTEwgPT0gc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmbmV3X2luZGV4LT52YXJiaW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmJpbmQtPm5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyYmluZC0+dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmJpbmQtPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJiaW5kLT52YWxfbGVuKSkgewogICAgICAgICAvKgogICAgICAgICAgKiBpZiAoc25tcF9jbG9uZV92YXIoIHZhcmJpbmQsIG5ld19pbmRleC0+dmFyYmluZCApICE9IDAgKSAKICAgICAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jIGIvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuYwppbmRleCA1MzMwNDJhLi4wNzg2MWFkIDEwMDY0NAotLS0gYS9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5jCisrKyBiL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmMKQEAgLTI0NSw2ICsyNDUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9mcmVlX3RyYXBjb21tdW5pdHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb21tdW5pdHktc3RyaW5nIik7CiAjZW5kaWYgLyogc3VwcG9ydCBmb3IgY29tbXVuaXR5IGJhc2VkIFNOTVAgKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCBhcHAsICJ2MXRyYXBhZGRyZXNzIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9UUkFQX0FERFIpOwogI2lmZGVmIEhBVkVfVU5JU1REX0gKICAgICByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoImFnZW50dXNlciIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3NldF9hZ2VudF91c2VyLCBOVUxMLCAidXNlcmlkIik7CkBAIC0yODQsOSArMjg3LDYgQEAKICAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19QUkVfVVBEQVRFX0NPTkZJRywgTlVMTCk7CiAgICAgZnJlZV9jb25maWcoKTsKLSNpZmRlZiBVU0lOR19NSUJJSV9WQUNNX0NPTkZfTU9EVUxFCi0gICAgdmFjbV9zdGFuZGFyZF92aWV3cygwLDAsTlVMTCxOVUxMKTsKLSNlbmRpZgogICAgIHJlYWRfY29uZmlncygpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jIGIvYWdlbnQvYWdlbnRfcmVnaXN0cnkuYwppbmRleCBkMGQzNWI3Li43YWE4ZDIzIDEwMDY0NAotLS0gYS9hZ2VudC9hZ2VudF9yZWdpc3RyeS5jCisrKyBiL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmMKQEAgLTY4LDExICs2OCwxNDMgQEAKICNpbmNsdWRlICJhZ2VudHgvY2xpZW50LmgiCiAjZW5kaWYKIAotc3RhdGljIHZvaWQgcmVnaXN0ZXJfbWliX2RldGFjaF9ub2RlKG5ldHNubXBfc3VidHJlZSAqcyk7Ci1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBpbnZhbGlkYXRlX2xvb2t1cF9jYWNoZShjb25zdCBjaGFyICpjb250ZXh0KTsKLXZvaWQgbmV0c25tcF9zZXRfbG9va3VwX2NhY2hlX3NpemUoaW50IG5ld3NpemUpOwotaW50IG5ldHNubXBfZ2V0X2xvb2t1cF9jYWNoZV9zaXplKHZvaWQpOworLyogTG9va3VwIGNhY2hlIGNvZGUgKi8KIAorI2RlZmluZSBTVUJUUkVFX0RFRkFVTFRfQ0FDSEVfU0laRSA4CisjZGVmaW5lIFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkUgICAgIDMyCitpbnQgbG9va3VwX2NhY2hlX3NpemUgPSAwOyAvKmVuYWJsZWQgbGF0ZXIgYWZ0ZXIgcmVnaXN0cmF0aW9ucyBhcmUgbG9hZGVkICovCisKK3R5cGVkZWYgc3RydWN0IGxvb2t1cF9jYWNoZV9zIHsKKyAgIG5ldHNubXBfc3VidHJlZSAqbmV4dDsKKyAgIG5ldHNubXBfc3VidHJlZSAqcHJldmlvdXM7Cit9IGxvb2t1cF9jYWNoZTsKKwordHlwZWRlZiBzdHJ1Y3QgbG9va3VwX2NhY2hlX2NvbnRleHRfcyB7CisgICBjaGFyICpjb250ZXh0OworICAgc3RydWN0IGxvb2t1cF9jYWNoZV9jb250ZXh0X3MgKm5leHQ7CisgICBpbnQgdGhlY2FjaGVjb3VudDsKKyAgIGludCBjdXJyZW50cG9zOworICAgbG9va3VwX2NhY2hlIGNhY2hlW1NVQlRSRUVfTUFYX0NBQ0hFX1NJWkVdOworfSBsb29rdXBfY2FjaGVfY29udGV4dDsKKworc3RhdGljIGxvb2t1cF9jYWNoZV9jb250ZXh0ICp0aGVjb250ZXh0Y2FjaGUgPSBOVUxMOworCisvKiogc2V0IHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBmb3Igb3B0aW1pemVkIGFnZW50IHJlZ2lzdHJhdGlvbiBwZXJmb3JtYW5jZS4KKyAqIEBwYXJhbSBuZXdzaXplIHNldCB0byB0aGUgbWF4aW11bSBzaXplIG9mIGEgY2FjaGUgZm9yIGEgZ2l2ZW4KKyAqIGNvbnRleHQuICBTZXQgdG8gMCB0byBjb21wbGV0ZWx5IGRpc2FibGUgY2FjaGluZywgb3IgdG8gLTEgdG8gc2V0CisgKiB0byB0aGUgZGVmYXVsdCBjYWNoZSBzaXplICg4KSwgb3IgdG8gYSBudW1iZXIgb2YgeW91ciBjaG9zaW5nLiAgVGhlCisgKiByb3VnaCBndWlkZSBpcyB0aGF0IGl0IHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbWF4aW11bSBudW1iZXIgb2YKKyAqIHNpbXVsdGFuaW91cyBtYW5hZ2VycyB5b3UgZXhwZWN0IHRvIHRhbGsgdG8gdGhlIGFnZW50IChNKSB0aW1lcyA4MCUKKyAqIChvciBzbywgaGUgc2F5cyByYW5kb21seSkgdGhlIGF2ZXJhZ2UgbnVtYmVyIChOKSBvZiB2YXJiaW5kcyB5b3UKKyAqIGV4cGVjdCB0byByZWNlaXZlIGluIGEgZ2l2ZW4gcmVxdWVzdCBmb3IgYSBtYW5hZ2VyLiAgaWUsIE0gdGltZXMgTi4KKyAqIEJpZ2dlciBkb2VzIE5PVCBuZWNlc3NhcmlseSBtZWFuIGJldHRlci4gIENlcnRhaW5seSAxNiBzaG91bGQgYmUgYW4KKyAqIHVwcGVyIGxpbWl0LiAgMzIgaXMgdGhlIGhhcmQgY29kZWQgbGltaXQuCisgKi8KK3ZvaWQKK25ldHNubXBfc2V0X2xvb2t1cF9jYWNoZV9zaXplKGludCBuZXdzaXplKSB7CisgICAgaWYgKG5ld3NpemUgPCAwKQorICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfREVGQVVMVF9DQUNIRV9TSVpFOworICAgIGVsc2UgaWYgKG5ld3NpemUgPCBTVUJUUkVFX01BWF9DQUNIRV9TSVpFKQorICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IG5ld3NpemU7CisgICAgZWxzZQorICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkU7Cit9CisKKy8qKiByZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxvb2t1cCBjYWNoZSBzaXplCisgKiAgQHJldHVybiB0aGUgY3VycmVudCBsb29rdXAgY2FjaGUgc2l6ZQorICovCitpbnQKK25ldHNubXBfZ2V0X2xvb2t1cF9jYWNoZV9zaXplKHZvaWQpIHsKKyAgICByZXR1cm4gbG9va3VwX2NhY2hlX3NpemU7Cit9CisKK05FVFNOTVBfU1RBVElDX0lOTElORSBsb29rdXBfY2FjaGVfY29udGV4dCAqCitnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29uc3QgY2hhciAqY29udGV4dCkgeworICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpwdHI7CisgICAgaWYgKCFjb250ZXh0KQorICAgICAgICBjb250ZXh0ID0gIiI7CisKKyAgICBmb3IocHRyID0gdGhlY29udGV4dGNhY2hlOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkgeworICAgICAgICBpZiAoc3RyY21wKHB0ci0+Y29udGV4dCwgY29udGV4dCkgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoIXB0cikgeworICAgICAgICBpZiAobmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29udGV4dCkpIHsKKyAgICAgICAgICAgIHB0ciA9IFNOTVBfTUFMTE9DX1RZUEVERUYobG9va3VwX2NhY2hlX2NvbnRleHQpOworICAgICAgICAgICAgcHRyLT5uZXh0ID0gdGhlY29udGV4dGNhY2hlOworICAgICAgICAgICAgcHRyLT5jb250ZXh0ID0gc3RyZHVwKGNvbnRleHQpOworICAgICAgICAgICAgdGhlY29udGV4dGNhY2hlID0gcHRyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHB0cjsKK30KKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKK2xvb2t1cF9jYWNoZV9hZGQoY29uc3QgY2hhciAqY29udGV4dCwKKyAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXh0LCBuZXRzbm1wX3N1YnRyZWUgKnByZXZpb3VzKSB7CisgICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7CisKKyAgICBpZiAoKGNwdHIgPSBnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29udGV4dCkpID09IE5VTEwpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChjcHRyLT50aGVjYWNoZWNvdW50IDwgbG9va3VwX2NhY2hlX3NpemUpCisgICAgICAgIGNwdHItPnRoZWNhY2hlY291bnQrKzsKKworICAgIGNwdHItPmNhY2hlW2NwdHItPmN1cnJlbnRwb3NdLm5leHQgPSBuZXh0OworICAgIGNwdHItPmNhY2hlW2NwdHItPmN1cnJlbnRwb3NdLnByZXZpb3VzID0gcHJldmlvdXM7CisKKyAgICBpZiAoKytjcHRyLT5jdXJyZW50cG9zID49IGxvb2t1cF9jYWNoZV9zaXplKQorICAgICAgICBjcHRyLT5jdXJyZW50cG9zID0gMDsKK30KKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKK2xvb2t1cF9jYWNoZV9yZXBsYWNlKGxvb2t1cF9jYWNoZSAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXh0LCBuZXRzbm1wX3N1YnRyZWUgKnByZXZpb3VzKSB7CisKKyAgICBwdHItPm5leHQgPSBuZXh0OworICAgIHB0ci0+cHJldmlvdXMgPSBwcmV2aW91czsKK30KKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGxvb2t1cF9jYWNoZSAqCitsb29rdXBfY2FjaGVfZmluZChjb25zdCBjaGFyICpjb250ZXh0LCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbiwKKyAgICAgICAgICAgICAgICAgIGludCAqcmV0Y21wKSB7CisgICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7CisgICAgbG9va3VwX2NhY2hlICpyZXQgPSBOVUxMOworICAgIGludCBjbXA7CisgICAgaW50IGk7CisKKyAgICBpZiAoKGNwdHIgPSBnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29udGV4dCkpID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZm9yKGkgPSAwOyBpIDwgY3B0ci0+dGhlY2FjaGVjb3VudCAmJiBpIDwgbG9va3VwX2NhY2hlX3NpemU7IGkrKykgeworICAgICAgICBpZiAoY3B0ci0+Y2FjaGVbaV0ucHJldmlvdXMtPnN0YXJ0X2EpCisgICAgICAgICAgICBjbXAgPSBzbm1wX29pZF9jb21wYXJlKG5hbWUsIG5hbWVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcHRyLT5jYWNoZVtpXS5wcmV2aW91cy0+c3RhcnRfYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B0ci0+Y2FjaGVbaV0ucHJldmlvdXMtPnN0YXJ0X2xlbik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGNtcCA9IDE7CisgICAgICAgIGlmIChjbXAgPj0gMCkgeworICAgICAgICAgICAgKnJldGNtcCA9IGNtcDsKKyAgICAgICAgICAgIHJldCA9ICYoY3B0ci0+Y2FjaGVbaV0pOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByZXQ7Cit9CisKK05FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCitpbnZhbGlkYXRlX2xvb2t1cF9jYWNoZShjb25zdCBjaGFyICpjb250ZXh0KSB7CisgICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7CisgICAgaWYgKChjcHRyID0gZ2V0X2NvbnRleHRfbG9va3VwX2NhY2hlKGNvbnRleHQpKSAhPSBOVUxMKSB7CisgICAgICAgIGNwdHItPnRoZWNhY2hlY291bnQgPSAwOworICAgICAgICBjcHRyLT5jdXJyZW50cG9zID0gMDsKKyAgICB9Cit9CisKKy8qIEVuZCBvZiBMb29rdXAgY2FjaGUgY29kZSAqLworCitzdGF0aWMgdm9pZCByZWdpc3Rlcl9taWJfZGV0YWNoX25vZGUobmV0c25tcF9zdWJ0cmVlICpzKTsKIHN1YnRyZWVfY29udGV4dF9jYWNoZSAqY29udGV4dF9zdWJ0cmVlcyA9IE5VTEw7CiAKIHZvaWQKQEAgLTMyMCw5ICs0NTIsNyBAQAogCXJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChjdXJyZW50LT5lbmRfYSAhPSBOVUxMKSB7Ci0JU05NUF9GUkVFKGN1cnJlbnQtPmVuZF9hKTsKLSAgICB9CisgICAgU05NUF9GUkVFKGN1cnJlbnQtPmVuZF9hKTsKICAgICBjdXJyZW50LT5lbmRfYSA9IHRtcF9hOwogICAgIGN1cnJlbnQtPmVuZF9sZW4gPSBuYW1lX2xlbjsKICAgICBpZiAobmV3X3N1Yi0+c3RhcnRfYSAhPSBOVUxMKSB7CkBAIC01MzEsOCArNjYxLDIzIEBACiAJCiAJICAgIGlmIChuZXh0ICYmIChuZXh0LT5uYW1lbGVuICA9PSBuZXdfc3ViLT5uYW1lbGVuKSAmJgogCQkobmV4dC0+cHJpb3JpdHkgPT0gbmV3X3N1Yi0+cHJpb3JpdHkpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG5ld19zdWItPm5hbWVsZW4gIT0gMSkgLyogaWdub3JlIHJvb3QgT0lEIGR1cHMgKi8KLSAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImR1cGxpY2F0ZSByZWdpc3RyYXRpb24gKCVzLCAlcykiLCBuZXh0LT5sYWJlbF9hLCBuZXdfc3ViLT5sYWJlbF9hKTsKKyAgICAgICAgICAgICAgICBpZiAobmV3X3N1Yi0+bmFtZWxlbiAhPSAxKSB7ICAgIC8qIGlnbm9yZSByb290IE9JRCBkdXBzICovCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCAgICAgICAgICBvdXRfbGVuID0gMDsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIGJ1Zl9sZW4gPSAwOworICAgICAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqYnVmID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGJ1Zl9vdmVyZmxvdyA9IDA7CisKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zcHJpbnRfcmVhbGxvY19vYmppZCgodV9jaGFyICoqKSAmYnVmLCAmYnVmX2xlbiwgJm91dF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgJmJ1Zl9vdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfc3ViLT5zdGFydF9hLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zdWItPnN0YXJ0X2xlbik7CisgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkdXBsaWNhdGUgcmVnaXN0cmF0aW9uOiBNSUIgbW9kdWxlcyAlcyBhbmQgJXMgKG9pZCAlcyVzKS5cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQtPmxhYmVsX2EsIG5ld19zdWItPmxhYmVsX2EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiA/IGJ1ZiA6ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZfb3ZlcmZsb3cgPyAiIFtUUlVOQ0FURURdIiA6ICIiKTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZShidWYpOworICAgICAgICAgICAgICAgIH0KIAkJcmV0dXJuIE1JQl9EVVBMSUNBVEVfUkVHSVNUUkFUSU9OOwogCSAgICB9CiAKQEAgLTczMyw2ICs4NzgsOSBAQAogICAgICAgICByZWdfcGFybXMudGltZW91dCA9IHRpbWVvdXQ7CiAgICAgICAgIHJlZ19wYXJtcy5mbGFncyA9ICh1X2NoYXIpIGZsYWdzOwogICAgICAgICByZWdfcGFybXMuY29udGV4dE5hbWUgPSBjb250ZXh0OworICAgICAgICByZWdfcGFybXMuc2Vzc2lvbiA9IHNzOworICAgICAgICByZWdfcGFybXMucmVnaW5mbyA9IHJlZ2luZm87CisgICAgICAgIHJlZ19wYXJtcy5jb250ZXh0TmFtZSA9IGNvbnRleHQ7CiAgICAgICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdJU1RFUl9PSUQsICZyZWdfcGFybXMpOwogICAgIH0KQEAgLTc2Niw2ICs5MTQsOSBAQAogICAgICAgICByZWdfcGFybXMucmFuZ2VfdWJvdW5kID0gcy0+cmFuZ2VfdWJvdW5kOwogICAgICAgICByZWdfcGFybXMudGltZW91dCA9IHMtPnRpbWVvdXQ7CiAgICAgICAgIHJlZ19wYXJtcy5mbGFncyA9IHMtPmZsYWdzOworICAgICAgICByZWdfcGFybXMuc2Vzc2lvbiA9IHMtPnNlc3Npb247CisgICAgICAgIHJlZ19wYXJtcy5yZWdpbmZvID0gcy0+cmVnaW5mbzsKKyAgICAgICAgLyogWFhYOiBtaXNzaW5nIGluIHN1YnRyZWU6IHJlZ19wYXJtcy5jb250ZXh0TmFtZSA9IHMtPmNvbnRleHQ7ICovCiAgICAgICAgIGlmICgoTlVMTCAhPSBzLT5yZWdpbmZvKSAmJiAoTlVMTCAhPSBzLT5yZWdpbmZvLT5jb250ZXh0TmFtZSkpCiAgICAgICAgICAgICByZWdfcGFybXMuY29udGV4dE5hbWUgPSBzLT5yZWdpbmZvLT5jb250ZXh0TmFtZTsKICAgICAgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLApAQCAtMTI4Nyw3ICsxNDM4LDcgQEAKIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU4gLSBwZHUgYmVpbmcgY2hlY2tlZCAqLwogICAgIHN0cnVjdCB2aWV3X3BhcmFtZXRlcnMgdmlld19wYXJtczsKICAgICB2aWV3X3Bhcm1zLnBkdSA9IHBkdTsKLSAgICB2aWV3X3Bhcm1zLm5hbWUgPSAwOworICAgIHZpZXdfcGFybXMubmFtZSA9IE5VTEw7CiAgICAgdmlld19wYXJtcy5uYW1lbGVuID0gMDsKICAgICB2aWV3X3Bhcm1zLmVycm9yY29kZSA9IDA7CiAgICAgdmlld19wYXJtcy5jaGVja19zdWJ0cmVlID0gMDsKQEAgLTEzNDksMTM4ICsxNTAwLDYgQEAKICAgICByZXR1cm4gMTsKIH0KIAotI2RlZmluZSBTVUJUUkVFX0RFRkFVTFRfQ0FDSEVfU0laRSA4Ci0jZGVmaW5lIFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkUgICAgIDMyCi1pbnQgbG9va3VwX2NhY2hlX3NpemUgPSAwOyAvKmVuYWJsZWQgbGF0ZXIgYWZ0ZXIgcmVnaXN0cmF0aW9ucyBhcmUgbG9hZGVkICovCi0KLXR5cGVkZWYgc3RydWN0IGxvb2t1cF9jYWNoZV9zIHsKLSAgIG5ldHNubXBfc3VidHJlZSAqbmV4dDsKLSAgIG5ldHNubXBfc3VidHJlZSAqcHJldmlvdXM7Ci19IGxvb2t1cF9jYWNoZTsKLQotdHlwZWRlZiBzdHJ1Y3QgbG9va3VwX2NhY2hlX2NvbnRleHRfcyB7Ci0gICBjaGFyICpjb250ZXh0OwotICAgc3RydWN0IGxvb2t1cF9jYWNoZV9jb250ZXh0X3MgKm5leHQ7Ci0gICBpbnQgdGhlY2FjaGVjb3VudDsKLSAgIGludCBjdXJyZW50cG9zOwotICAgbG9va3VwX2NhY2hlIGNhY2hlW1NVQlRSRUVfTUFYX0NBQ0hFX1NJWkVdOwotfSBsb29rdXBfY2FjaGVfY29udGV4dDsKLQotc3RhdGljIGxvb2t1cF9jYWNoZV9jb250ZXh0ICp0aGVjb250ZXh0Y2FjaGUgPSBOVUxMOwotCi0vKiogc2V0IHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBmb3Igb3B0aW1pemVkIGFnZW50IHJlZ2lzdHJhdGlvbiBwZXJmb3JtYW5jZS4KLSAqIEBwYXJhbSBuZXdzaXplIHNldCB0byB0aGUgbWF4aW11bSBzaXplIG9mIGEgY2FjaGUgZm9yIGEgZ2l2ZW4KLSAqIGNvbnRleHQuICBTZXQgdG8gMCB0byBjb21wbGV0ZWx5IGRpc2FibGUgY2FjaGluZywgb3IgdG8gLTEgdG8gc2V0Ci0gKiB0byB0aGUgZGVmYXVsdCBjYWNoZSBzaXplICg4KSwgb3IgdG8gYSBudW1iZXIgb2YgeW91ciBjaG9zaW5nLiAgVGhlCi0gKiByb3VnaCBndWlkZSBpcyB0aGF0IGl0IHNob3VsZCBiZSBlcXVhbCB0byB0aGUgbWF4aW11bSBudW1iZXIgb2YKLSAqIHNpbXVsdGFuaW91cyBtYW5hZ2VycyB5b3UgZXhwZWN0IHRvIHRhbGsgdG8gdGhlIGFnZW50IChNKSB0aW1lcyA4MCUKLSAqIChvciBzbywgaGUgc2F5cyByYW5kb21seSkgdGhlIGF2ZXJhZ2UgbnVtYmVyIChOKSBvZiB2YXJiaW5kcyB5b3UKLSAqIGV4cGVjdCB0byByZWNlaXZlIGluIGEgZ2l2ZW4gcmVxdWVzdCBmb3IgYSBtYW5hZ2VyLiAgaWUsIE0gdGltZXMgTi4KLSAqIEJpZ2dlciBkb2VzIE5PVCBuZWNlc3NhcmlseSBtZWFuIGJldHRlci4gIENlcnRhaW5seSAxNiBzaG91bGQgYmUgYW4KLSAqIHVwcGVyIGxpbWl0LiAgMzIgaXMgdGhlIGhhcmQgY29kZWQgbGltaXQuCi0gKi8KLXZvaWQKLW5ldHNubXBfc2V0X2xvb2t1cF9jYWNoZV9zaXplKGludCBuZXdzaXplKSB7Ci0gICAgaWYgKG5ld3NpemUgPCAwKQotICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfREVGQVVMVF9DQUNIRV9TSVpFOwotICAgIGVsc2UgaWYgKG5ld3NpemUgPCBTVUJUUkVFX01BWF9DQUNIRV9TSVpFKQotICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IG5ld3NpemU7Ci0gICAgZWxzZQotICAgICAgICBsb29rdXBfY2FjaGVfc2l6ZSA9IFNVQlRSRUVfTUFYX0NBQ0hFX1NJWkU7Ci19Ci0KLS8qKiByZXRyaWV2ZXMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGxvb2t1cCBjYWNoZSBzaXplCi0gKiAgQHJldHVybiB0aGUgY3VycmVudCBsb29rdXAgY2FjaGUgc2l6ZQotICovCi1pbnQKLW5ldHNubXBfZ2V0X2xvb2t1cF9jYWNoZV9zaXplKHZvaWQpIHsKLSAgICByZXR1cm4gbG9va3VwX2NhY2hlX3NpemU7Ci19Ci0KLU5FVFNOTVBfU1RBVElDX0lOTElORSBsb29rdXBfY2FjaGVfY29udGV4dCAqCi1nZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29uc3QgY2hhciAqY29udGV4dCkgewotICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpwdHI7Ci0gICAgaWYgKCFjb250ZXh0KQotICAgICAgICBjb250ZXh0ID0gIiI7Ci0KLSAgICBmb3IocHRyID0gdGhlY29udGV4dGNhY2hlOyBwdHI7IHB0ciA9IHB0ci0+bmV4dCkgewotICAgICAgICBpZiAoc3RyY21wKHB0ci0+Y29udGV4dCwgY29udGV4dCkgPT0gMCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoIXB0cikgewotICAgICAgICBpZiAobmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29udGV4dCkpIHsKLSAgICAgICAgICAgIHB0ciA9IFNOTVBfTUFMTE9DX1RZUEVERUYobG9va3VwX2NhY2hlX2NvbnRleHQpOwotICAgICAgICAgICAgcHRyLT5uZXh0ID0gdGhlY29udGV4dGNhY2hlOwotICAgICAgICAgICAgcHRyLT5jb250ZXh0ID0gc3RyZHVwKGNvbnRleHQpOwotICAgICAgICAgICAgdGhlY29udGV4dGNhY2hlID0gcHRyOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIHB0cjsKLX0KLQotTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQKLWxvb2t1cF9jYWNoZV9hZGQoY29uc3QgY2hhciAqY29udGV4dCwKLSAgICAgICAgICAgICAgICAgbmV0c25tcF9zdWJ0cmVlICpuZXh0LCBuZXRzbm1wX3N1YnRyZWUgKnByZXZpb3VzKSB7Ci0gICAgbG9va3VwX2NhY2hlX2NvbnRleHQgKmNwdHI7Ci0KLSAgICBpZiAoKGNwdHIgPSBnZXRfY29udGV4dF9sb29rdXBfY2FjaGUoY29udGV4dCkpID09IE5VTEwpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBpZiAoY3B0ci0+dGhlY2FjaGVjb3VudCA8IGxvb2t1cF9jYWNoZV9zaXplKQotICAgICAgICBjcHRyLT50aGVjYWNoZWNvdW50Kys7Ci0KLSAgICBjcHRyLT5jYWNoZVtjcHRyLT5jdXJyZW50cG9zXS5uZXh0ID0gbmV4dDsKLSAgICBjcHRyLT5jYWNoZVtjcHRyLT5jdXJyZW50cG9zXS5wcmV2aW91cyA9IHByZXZpb3VzOwotCi0gICAgaWYgKCsrY3B0ci0+Y3VycmVudHBvcyA+PSBsb29rdXBfY2FjaGVfc2l6ZSkKLSAgICAgICAgY3B0ci0+Y3VycmVudHBvcyA9IDA7Ci19Ci0KLU5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCi1sb29rdXBfY2FjaGVfcmVwbGFjZShsb29rdXBfY2FjaGUgKnB0ciwKLSAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc3VidHJlZSAqbmV4dCwgbmV0c25tcF9zdWJ0cmVlICpwcmV2aW91cykgewotCi0gICAgcHRyLT5uZXh0ID0gbmV4dDsKLSAgICBwdHItPnByZXZpb3VzID0gcHJldmlvdXM7Ci19Ci0KLU5FVFNOTVBfU1RBVElDX0lOTElORSBsb29rdXBfY2FjaGUgKgotbG9va3VwX2NhY2hlX2ZpbmQoY29uc3QgY2hhciAqY29udGV4dCwgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sCi0gICAgICAgICAgICAgICAgICBpbnQgKnJldGNtcCkgewotICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpjcHRyOwotICAgIGxvb2t1cF9jYWNoZSAqcmV0ID0gTlVMTDsKLSAgICBpbnQgY21wOwotICAgIGludCBpOwotCi0gICAgaWYgKChjcHRyID0gZ2V0X2NvbnRleHRfbG9va3VwX2NhY2hlKGNvbnRleHQpKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIGZvcihpID0gMDsgaSA8IGNwdHItPnRoZWNhY2hlY291bnQgJiYgaSA8IGxvb2t1cF9jYWNoZV9zaXplOyBpKyspIHsKLSAgICAgICAgaWYgKGNwdHItPmNhY2hlW2ldLnByZXZpb3VzLT5zdGFydF9hKQotICAgICAgICAgICAgY21wID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCBuYW1lX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3B0ci0+Y2FjaGVbaV0ucHJldmlvdXMtPnN0YXJ0X2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwdHItPmNhY2hlW2ldLnByZXZpb3VzLT5zdGFydF9sZW4pOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBjbXAgPSAxOwotICAgICAgICBpZiAoY21wID49IDApIHsKLSAgICAgICAgICAgICpyZXRjbXAgPSBjbXA7Ci0gICAgICAgICAgICByZXQgPSAmKGNwdHItPmNhY2hlW2ldKTsKLSAgICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZAotaW52YWxpZGF0ZV9sb29rdXBfY2FjaGUoY29uc3QgY2hhciAqY29udGV4dCkgewotICAgIGxvb2t1cF9jYWNoZV9jb250ZXh0ICpjcHRyOwotICAgIGlmICgoY3B0ciA9IGdldF9jb250ZXh0X2xvb2t1cF9jYWNoZShjb250ZXh0KSkgIT0gTlVMTCkgewotICAgICAgICBjcHRyLT50aGVjYWNoZWNvdW50ID0gMDsKLSAgICAgICAgY3B0ci0+Y3VycmVudHBvcyA9IDA7Ci0gICAgfQotfQotCiBuZXRzbm1wX3N1YnRyZWUgKgogbmV0c25tcF9zdWJ0cmVlX2ZpbmRfcHJldihvaWQgKm5hbWUsIHNpemVfdCBsZW4sIG5ldHNubXBfc3VidHJlZSAqc3VidHJlZSwKIAkJCSAgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKQpAQCAtMTUyOCw4ICsxNTQ3LDggQEAKICAgICAgICAgICAgdG8gYWN0dWFsbHkgcGVyZm9ybSBhIGNvbXBhcmlzb24gKi8KICAgICAgICAgREVCVUdNU0dUTCgoInd0ZXN0Iiwib2lkIGNtcDogIikpOwogICAgICAgICBERUJVR01TR09JRCgoInd0ZXN0IiwgbXlwdHItPnN0YXJ0X2EsIG15cHRyLT5zdGFydF9sZW4pKTsKLSAgICAgICAgREVCVUdNU0coKCJ3dGVzdCIsIiAgLS0tIG9mZiA9ICVkLCBpbiBvZmYgPSAlZCB0ZXN0ID0gJWRcbiIsCi0gICAgICAgICAgICAgICAgICBteXB0ci0+b2lkX29mZiwgbGxfb2ZmLAorICAgICAgICBERUJVR01TRygoInd0ZXN0IiwiICAtLS0gb2ZmID0gJWx1LCBpbiBvZmYgPSAlbHUgdGVzdCA9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpbXlwdHItPm9pZF9vZmYsICh1bnNpZ25lZCBsb25nKWxsX29mZiwKICAgICAgICAgICAgICAgICAgICEobGxfb2ZmICYmIG15cHRyLT5vaWRfb2ZmICYmCiAgICAgICAgICAgICAgICAgICAgIG15cHRyLT5vaWRfb2ZmID4gbGxfb2ZmKSkpOwogICAgICAgICBpZiAoIShsbF9vZmYgJiYgbXlwdHItPm9pZF9vZmYgJiYgbXlwdHItPm9pZF9vZmYgPiBsbF9vZmYpICYmCmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmMgYi9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk1OWVhZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L2FnZW50X3N5c09SVGFibGUuYwpAQCAtMCwwICsxLDIzNiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkZGVmLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KKwordHlwZWRlZiBzdHJ1Y3QgZGF0YV9ub2RlX3MgeworICAgIHN0cnVjdCBzeXNPUlRhYmxlIGRhdGE7CisgICAgc3RydWN0IGRhdGFfbm9kZV9zKiBuZXh0OworICAgIHN0cnVjdCBkYXRhX25vZGVfcyogcHJldjsKK30qIGRhdGFfbm9kZTsKKworc3RhdGljIGRhdGFfbm9kZSB0YWJsZSA9IE5VTEw7CisKK3N0YXRpYyB2b2lkCitlcmFzZShkYXRhX25vZGUgZW50cnkpCit7CisgICAgZW50cnktPmRhdGEuT1JfdXB0aW1lID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7CisgICAgREVCVUdNU0dUTCgoImFnZW50L3N5c09SVGFibGUiLCAiVU5SRUdfU1lTT1IgJXBcbiIsICZlbnRyeS0+ZGF0YSkpOworICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwgU05NUERfQ0FMTEJBQ0tfVU5SRUdfU1lTT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAmZW50cnktPmRhdGEpOworICAgIGZyZWUoZW50cnktPmRhdGEuT1Jfb2lkKTsKKyAgICBmcmVlKGVudHJ5LT5kYXRhLk9SX2Rlc2NyKTsKKyAgICBpZiAoZW50cnktPm5leHQgPT0gZW50cnkpCisgICAgICAgIHRhYmxlID0gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgZW50cnktPm5leHQtPnByZXYgPSBlbnRyeS0+cHJldjsKKyAgICAgICAgZW50cnktPnByZXYtPm5leHQgPSBlbnRyeS0+bmV4dDsKKyAgICAgICAgaWYgKGVudHJ5ID09IHRhYmxlKQorICAgICAgICAgICAgdGFibGUgPSBlbnRyeS0+bmV4dDsKKyAgICB9CisgICAgZnJlZShlbnRyeSk7Cit9CisKK3ZvaWQKK25ldHNubXBfc3lzT1JUYWJsZV9mb3JlYWNoKHZvaWQgKCpmKShjb25zdCBzdHJ1Y3Qgc3lzT1JUYWJsZSosIHZvaWQqKSwgdm9pZCogYykKK3sKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJmb3JlYWNoKCVwLCAlcClcbiIsIGYsIGMpKTsKKyAgICBpZih0YWJsZSkgeworICAgICAgICBkYXRhX25vZGUgcnVuID0gdGFibGU7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIGRhdGFfbm9kZSB0bXAgPSBydW47CisgICAgICAgICAgICBydW4gPSBydW4tPm5leHQ7CisgICAgICAgICAgICBmKCZ0bXAtPmRhdGEsIGMpOworICAgICAgICB9IHdoaWxlKHRhYmxlICYmIHJ1biAhPSB0YWJsZSk7CisgICAgfQorfQorCitpbnQKK3JlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiBvaWRpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2NyLCBuZXRzbm1wX3Nlc3Npb24gKiBzcykKK3sKKyAgICBkYXRhX25vZGUgZW50cnk7CisKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJyZWdpc3RlcmluZzogIikpOworICAgIERFQlVHTVNHT0lEKCgiYWdlbnQvc3lzT1JUYWJsZSIsIG9pZGluLCBvaWRsZW4pKTsKKyAgICBERUJVR01TRygoImFnZW50L3N5c09SVGFibGUiLCAiLCBzZXNzaW9uICVwXG4iLCBzcykpOworCisgICAgZW50cnkgPSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBkYXRhX25vZGVfcykpOworICAgIGlmIChlbnRyeSA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXcgZW50cnlcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQ7CisgICAgfQorCisgICAgZW50cnktPmRhdGEuT1JfZGVzY3IgPSBzdHJkdXAoZGVzY3IpOworICAgIGlmIChlbnRyeS0+ZGF0YS5PUl9kZXNjciA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwgIkZhaWxlZCB0byBhbGxvY2F0ZSBuZXcgc3lzT1JEZXNjclxuIikpOworICAgICAgICBmcmVlKGVudHJ5KTsKKyAgICAgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQ7CisgICAgfQorCisgICAgZW50cnktPmRhdGEuT1Jfb2lkID0gKG9pZCAqKSBtYWxsb2Moc2l6ZW9mKG9pZCkgKiBvaWRsZW4pOworICAgIGlmIChlbnRyeS0+ZGF0YS5PUl9vaWQgPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJGYWlsZWQgdG8gYWxsb2NhdGUgbmV3IHN5c09SSURcbiIpKTsKKyAgICAgICAgZnJlZShlbnRyeS0+ZGF0YS5PUl9kZXNjcik7CisgICAgICAgIGZyZWUoZW50cnkpOworICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKKyAgICB9CisKKyAgICBtZW1jcHkoZW50cnktPmRhdGEuT1Jfb2lkLCBvaWRpbiwgc2l6ZW9mKG9pZCkgKiBvaWRsZW4pOworICAgIGVudHJ5LT5kYXRhLk9SX29pZGxlbiA9IG9pZGxlbjsKKyAgICBlbnRyeS0+ZGF0YS5PUl9zZXNzID0gc3M7CisKKyAgICBpZih0YWJsZSkgeworICAgICAgICBlbnRyeS0+bmV4dCA9IHRhYmxlOworICAgICAgICBlbnRyeS0+cHJldiA9IHRhYmxlLT5wcmV2OworICAgICAgICB0YWJsZS0+cHJldi0+bmV4dCA9IGVudHJ5OworICAgICAgICB0YWJsZS0+cHJldiA9IGVudHJ5OworICAgIH0gZWxzZQorICAgICAgICB0YWJsZSA9IGVudHJ5LT5uZXh0ID0gZW50cnktPnByZXYgPSBlbnRyeTsKKworICAgIGVudHJ5LT5kYXRhLk9SX3VwdGltZSA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworCisgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLCAmZW50cnktPmRhdGEpOworCisgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVEVSRURfT0s7Cit9CisKK2ludAorcmVnaXN0ZXJfc3lzT1JUYWJsZShvaWQgKiBvaWRpbiwgc2l6ZV90IG9pZGxlbiwgY29uc3QgY2hhciAqZGVzY3IpCit7CisgICAgcmV0dXJuIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWRpbiwgb2lkbGVuLCBkZXNjciwgTlVMTCk7Cit9CisKK2ludAordW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICogb2lkaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbGVuLCBuZXRzbm1wX3Nlc3Npb24gKiBzcykKK3sKKyAgICBpbnQgYW55X3VucmVnaXN0ZXJlZCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJzeXNPUlRhYmxlIHVucmVnaXN0ZXJpbmc6ICIpKTsKKyAgICBERUJVR01TR09JRCgoImFnZW50L3N5c09SVGFibGUiLCBvaWRpbiwgb2lkbGVuKSk7CisgICAgREVCVUdNU0coKCJhZ2VudC9zeXNPUlRhYmxlIiwgIiwgc2Vzc2lvbiAlcFxuIiwgc3MpKTsKKworICAgIGlmKHRhYmxlKSB7CisgICAgICAgIGRhdGFfbm9kZSBydW4gPSB0YWJsZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZGF0YV9ub2RlIHRtcCA9IHJ1bjsKKyAgICAgICAgICAgIHJ1biA9IHJ1bi0+bmV4dDsKKyAgICAgICAgICAgIGlmICh0bXAtPmRhdGEuT1Jfc2VzcyA9PSBzcyAmJgorICAgICAgICAgICAgICAgIHNubXBfb2lkX2NvbXBhcmUob2lkaW4sIG9pZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcC0+ZGF0YS5PUl9vaWQsIHRtcC0+ZGF0YS5PUl9vaWRsZW4pID09IDApIHsKKyAgICAgICAgICAgICAgICBlcmFzZSh0bXApOworICAgICAgICAgICAgICAgIGFueV91bnJlZ2lzdGVyZWQgPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlKHRhYmxlICYmIHJ1biAhPSB0YWJsZSk7CisgICAgfQorCisgICAgaWYgKGFueV91bnJlZ2lzdGVyZWQpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFnZW50L3N5c09SVGFibGUiLCAidW5yZWdpc3RlcmluZyBzdWNjZXNzZnVsbFxuIikpOworICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfVU5SRUdJU1RFUkVEX09LOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwgInVucmVnaXN0ZXJpbmcgZmFpbGVkXG4iKSk7CisgICAgICAgIHJldHVybiBTWVNfT1JUQUJMRV9OT19TVUNIX1JFR0lTVFJBVElPTjsKKyAgICB9Cit9CisKKworaW50Cit1bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICogb2lkaW4sIHNpemVfdCBvaWRsZW4pCit7CisgICAgcmV0dXJuIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZGluLCBvaWRsZW4sIE5VTEwpOworfQorCisKK3ZvaWQKK3VucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNzKQoreworICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwKKyAgICAgICAgICAgICAgICAic3lzT1JUYWJsZSB1bnJlZ2lzdGVyaW5nIHNlc3Npb24gJXBcbiIsIHNzKSk7CisKKyAgIGlmKHRhYmxlKSB7CisgICAgICAgIGRhdGFfbm9kZSBydW4gPSB0YWJsZTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZGF0YV9ub2RlIHRtcCA9IHJ1bjsKKyAgICAgICAgICAgIHJ1biA9IHJ1bi0+bmV4dDsKKyAgICAgICAgICAgIGlmICgoKHNzLT5mbGFncyAmIFNOTVBfRkxBR1NfU1VCU0VTU0lPTikgJiYKKyAgICAgICAgICAgICAgICAgdG1wLT5kYXRhLk9SX3Nlc3MgPT0gc3MpIHx8CisgICAgICAgICAgICAgICAgKCEoc3MtPmZsYWdzICYgU05NUF9GTEFHU19TVUJTRVNTSU9OKSAmJiB0bXAtPmRhdGEuT1Jfc2VzcyAmJgorICAgICAgICAgICAgICAgICB0bXAtPmRhdGEuT1Jfc2Vzcy0+c3Vic2Vzc2lvbiA9PSBzcykpCisgICAgICAgICAgICAgICAgZXJhc2UodG1wKTsKKyAgICAgICAgfSB3aGlsZSh0YWJsZSAmJiBydW4gIT0gdGFibGUpOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJhZ2VudC9zeXNPUlRhYmxlIiwKKyAgICAgICAgICAgICAgICAic3lzT1JUYWJsZSB1bnJlZ2lzdGVyaW5nIHNlc3Npb24gJXAgZG9uZVxuIiwgc3MpKTsKK30KKworc3RhdGljIGludAorcmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCisgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpCit7CisgICAgc3RydWN0IHN5c09SVGFibGUgKnBhcm1zID0gKHN0cnVjdCBzeXNPUlRhYmxlICopIHNlcnZlcmFyZzsKKworICAgIHJldHVybiByZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3MocGFybXMtPk9SX29pZCwgcGFybXMtPk9SX29pZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcm1zLT5PUl9kZXNjciwgcGFybXMtPk9SX3Nlc3MpOworfQorCitzdGF0aWMgaW50Cit1bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKQoreworICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbiA9IChuZXRzbm1wX3Nlc3Npb24gKikgc2VydmVyYXJnOworCisgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX2J5X3Nlc3Npb24oc2Vzc2lvbik7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAordW5yZWdpc3Rlcl9zeXNPUl9jYWxsYmFjayhpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsIHZvaWQgKnNlcnZlcmFyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKQoreworICAgIHN0cnVjdCBzeXNPUlRhYmxlICpwYXJtcyA9IChzdHJ1Y3Qgc3lzT1JUYWJsZSAqKSBzZXJ2ZXJhcmc7CisKKyAgICByZXR1cm4gdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3MocGFybXMtPk9SX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFybXMtPk9SX29pZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFybXMtPk9SX3Nlc3MpOworfQorCit2b2lkCitpbml0X2FnZW50X3N5c09SVGFibGUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgiYWdlbnQvc3lzT1JUYWJsZSIsICJpbml0X2FnZW50X3N5c09SVGFibGVcbiIpKTsKKworICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9SRUdfU1lTT1IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3Rlcl9zeXNPUl9jYWxsYmFjaywgTlVMTCk7CisgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl9zeXNPUl9jYWxsYmFjaywgTlVMTCk7CisgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SX1NFU1MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2ssIE5VTEwpOworfQorCit2b2lkCitzaHV0ZG93bl9hZ2VudF9zeXNPUlRhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoImFnZW50L3N5c09SVGFibGUiLCAic2h1dGRvd25fc3lzT1JUYWJsZVxuIikpOworICAgIHdoaWxlKHRhYmxlKQorICAgICAgICBlcmFzZSh0YWJsZSk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9hZ2VudF90cmFwLmMgYi9hZ2VudC9hZ2VudF90cmFwLmMKaW5kZXggMTM1OWM5MC4uODg0NzlhYiAxMDA2NDQKLS0tIGEvYWdlbnQvYWdlbnRfdHJhcC5jCisrKyBiL2FnZW50L2FnZW50X3RyYXAuYwpAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CkBAIC0xNTMsNiArMTU0LDcgQEAKIHN0YXRpYyB2b2lkCiBmcmVlX3RyYXBfc2Vzc2lvbihzdHJ1Y3QgdHJhcF9zaW5rICpzcCkKIHsKKyAgICBERUJVR01TR1RMKCgidHJhcCIsICJmcmVlaW5nIGNhbGxiYWNrIHRyYXAgc2Vzc2lvbiAoJXAsICVwKVxuIiwgc3AsIHNwLT5zZXNwKSk7CiAgICAgc25tcF9jbG9zZShzcC0+c2VzcCk7CiAgICAgZnJlZShzcCk7CiB9CkBAIC0xNjgsNyArMTcwLDcgQEAKICAgICAgICAgICogc29tZXRoaW5nIGVsc2Ugd2FudHMgdG8gaGFuZGxlIG5vdGlmaWNhdGlvbiByZWdpc3RyYXRpb25zIAogICAgICAgICAgKi8KICAgICAgICAgc3RydWN0IGFnZW50X2FkZF90cmFwX2FyZ3MgYXJnczsKLSAgICAgICAgREVCVUdNU0dUTCgoInRyYXAiLCAiYWRkaW5nIGNhbGxiYWNrIHRyYXAgc2lua1xuIikpOworICAgICAgICBERUJVR01TR1RMKCgidHJhcCIsICJhZGRpbmcgY2FsbGJhY2sgdHJhcCBzaW5rICglcClcbiIsIHNzKSk7CiAgICAgICAgIGFyZ3Muc3MgPSBzczsKICAgICAgICAgYXJncy5jb25maXJtID0gY29uZmlybTsKICAgICAgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLApAQCAtMTk3LDggKzE5OSw5IEBACiBpbnQKIHJlbW92ZV90cmFwX3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICogc3MpCiB7Ci0gICAgc3RydWN0IHRyYXBfc2luayAqc3AgPSBzaW5rcywgKnByZXYgPSAwOworICAgIHN0cnVjdCB0cmFwX3NpbmsgKnNwID0gc2lua3MsICpwcmV2ID0gTlVMTDsKIAorICAgIERFQlVHTVNHVEwoKCJ0cmFwIiwgInJlbW92aW5nIHRyYXAgc2Vzc2lvbnNcbiIpKTsKICAgICB3aGlsZSAoc3ApIHsKICAgICAgICAgaWYgKHNwLT5zZXNwID09IHNzKSB7CiAgICAgICAgICAgICBpZiAocHJldikgewpAQCAtMjE2LDYgKzIxOSw3IEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogZnJlZV90cmFwX3Nlc3Npb24oc3ApOyAgCiAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0cmFwIiwgInJlbW92aW5nIHRyYXAgc2Vzc2lvbiAoJXAsICVwKVxuIiwgc3AsIHNwLT5zZXNwKSk7CiAgICAgICAgICAgICBmcmVlKHNwKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CkBAIC0zMTgsNiArMzIyLDcgQEAKIHNubXBkX2ZyZWVfdHJhcHNpbmtzKHZvaWQpCiB7CiAgICAgc3RydWN0IHRyYXBfc2luayAqc3AgPSBzaW5rczsKKyAgICBERUJVR01TR1RMKCgidHJhcCIsICJmcmVlaW5nIHRyYXAgc2Vzc2lvbnNcbiIpKTsKICAgICB3aGlsZSAoc3ApIHsKICAgICAgICAgc2lua3MgPSBzaW5rcy0+bmV4dDsKICAgICAgICAgZnJlZV90cmFwX3Nlc3Npb24oc3ApOwpAQCAtMzM4LDcgKzM0Myw2IEBACiAgICAgbmV0c25tcF9wZHUgICAgICAgICAgICp0ZW1wbGF0ZV92MXBkdTsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmZpcnN0X3ZiLCAqdmJsaXN0OwogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyOwotICAgIHNpemVfdCAgICAgICAgICAgICAgICAgbGVuOwogCiAgICAgLyoKICAgICAgKiBNYWtlIGEgY29weSBvZiB0aGUgdjIgVHJhcCBQRFUKQEAgLTQxOCw5ICs0MjIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcHRyYXBlbnRlcnByaXNlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcHRyYXBlbnRlcnByaXNlX29pZF9sZW4pOwogICAgICAgICBpZiAodmFyKSB7Ci0gICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZSA9Ci0gICAgICAgICAgICAgICAgbmV0c25tcF9tZW1kdXAodmFyLT52YWwub2JqaWQsIHZhci0+dmFsX2xlbik7CiAgICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZV9sZW5ndGggPSB2YXItPnZhbF9sZW4vc2l6ZW9mKG9pZCk7CisgICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZSA9CisgICAgICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodmFyLT52YWwub2JqaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVtcGxhdGVfdjFwZHUtPmVudGVycHJpc2VfbGVuZ3RoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHRlbXBsYXRlX3YxcGR1LT5lbnRlcnByaXNlICAgICAgICA9IE5VTEw7CiAgICAgICAgICAgICB0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZV9sZW5ndGggPSAwOwkJLyogWFhYID8/PyAqLwpAQCAtNDMwLDcgKzQzNSw3IEBACiAgICAgICAgICAqIEZvciBlbnRlcnByaXNlLXNwZWNpZmljIHRyYXBzLCBzcGxpdCB0aGUgc25tcFRyYXBPSUQgdmFsdWUKICAgICAgICAgICogICBpbnRvIGVudGVycHJpc2UgYW5kIHNwZWNpZmljIHRyYXAKICAgICAgICAgICovCi0gICAgICAgIGxlbiA9IHZibGlzdC0+dmFsX2xlbiAvIHNpemVvZihvaWQpOworICAgICAgICBzaXplX3QgbGVuID0gdmJsaXN0LT52YWxfbGVuIC8gc2l6ZW9mKG9pZCk7CiAgICAgICAgIGlmICggbGVuIDw9IDIgKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKICAgICAgICAgICAgICAgICAgICAgICJzZW5kX3RyYXA6IHYyIHRyYXBPSUQgdG9vIHNob3J0ICglZClcbiIsIChpbnQpbGVuKTsKQEAgLTQ0NCw3ICs0NDksNyBAQAogICAgICAgICAgICAgbGVuLS07CiAgICAgICAgIFNOTVBfRlJFRSh0ZW1wbGF0ZV92MXBkdS0+ZW50ZXJwcmlzZSk7CiAgICAgICAgIHRlbXBsYXRlX3YxcGR1LT5lbnRlcnByaXNlID0KLSAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKHZibGlzdC0+dmFsLm9iamlkLCBsZW4qc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgc25tcF9kdXBsaWNhdGVfb2JqaWQodmJsaXN0LT52YWwub2JqaWQsIGxlbik7CiAgICAgICAgIHRlbXBsYXRlX3YxcGR1LT5lbnRlcnByaXNlX2xlbmd0aCA9IGxlbjsKICAgICB9CiAgICAgdmFyID0gZmluZF92YXJiaW5kX2luX2xpc3QoIHZibGlzdCwgYWdlbnRhZGRyX29pZCwKQEAgLTYzNyw2ICs2NDIsOCBAQAogICAgIGluX2FkZHJfdCAgICAgICAgICAgICAqcGR1X2luX2FkZHJfdDsKICAgICB1X2xvbmcgICAgICAgICAgICAgICAgIHVwdGltZTsKICAgICBzdHJ1Y3QgdHJhcF9zaW5rICpzaW5rOworICAgIGNvbnN0IGNoYXIgICAgICAgICAgICAqdjF0cmFwYWRkcmVzczsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIHJlczsKIAogICAgIERFQlVHTVNHVEwoKCAidHJhcCIsICJzZW5kX3RyYXAgJWQgJWQgIiwgdHJhcCwgc3BlY2lmaWMpKTsKICAgICBERUJVR01TR09JRCgoInRyYXAiLCBlbnRlcnByaXNlLCBlbnRlcnByaXNlX2xlbmd0aCkpOwpAQCAtNzkwLDkgKzc5NywyOSBAQAogICAgICAqIEVuc3VyZSB0aGF0IHRoZSB2MSB0cmFwIFBEVSBpbmNsdWRlcyB0aGUgbG9jYWwgSVAgYWRkcmVzcwogICAgICAqLwogICAgICAgIHBkdV9pbl9hZGRyX3QgPSAoaW5fYWRkcl90ICopIHRlbXBsYXRlX3YxcGR1LT5hZ2VudF9hZGRyOwotICAgICAgKnBkdV9pbl9hZGRyX3QgPSBnZXRfbXlhZGRyKCk7CisgICAgICAgdjF0cmFwYWRkcmVzcyA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1RSQVBfQUREUik7CisgICAgICAgaWYgKHYxdHJhcGFkZHJlc3MgIT0gTlVMTCkgeworICAgICAgICAgICAvKiAidjF0cmFwYWRkcmVzcyIgd2FzIHNwZWNpZmllZCBpbiBjb25maWcsIHRyeSB0byByZXNvbHZlIGl0ICovCisgICAgICAgICAgIHJlcyA9IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NCh2MXRyYXBhZGRyZXNzLCBwZHVfaW5fYWRkcl90KTsKKyAgICAgICB9CisgICAgICAgaWYgKHYxdHJhcGFkZHJlc3MgPT0gTlVMTCB8fCByZXMgPCAwKSB7CisgICAgICAgICAgIC8qICJ2MXRyYXBhZGRyZXNzIiB3YXMgbm90IHNwZWNpZmllZCBpbiBjb25maWcgb3IgdGhlIHJlc29sdXRpb24gZmFpbGVkLAorICAgICAgICAgICAgKiB0cnkgYW55IGxvY2FsIGFkZHJlc3MgKi8KKyAgICAgICAgICAgKnBkdV9pbl9hZGRyX3QgPSBnZXRfbXlhZGRyKCk7CisgICAgICAgfQorCiAgICAgfQogCisgICAgaWYgKHRlbXBsYXRlX3YycGR1KSB7CisJLyogQSBjb250ZXh0IG5hbWUgd2FzIHByb3ZpZGVkLCBzbyBjb3B5IGl0IGFuZCBpdHMgbGVuZ3RoIHRvIHRoZSB2MiBwZHUKKwkgKiB0ZW1wbGF0ZS4gKi8KKwlpZiAoY29udGV4dCAhPSBOVUxMKQorCXsKKwkJdGVtcGxhdGVfdjJwZHUtPmNvbnRleHROYW1lICAgID0gc3RyZHVwKGNvbnRleHQpOworCQl0ZW1wbGF0ZV92MnBkdS0+Y29udGV4dE5hbWVMZW4gPSBzdHJsZW4oY29udGV4dCk7CisJfQorICAgIH0KIAogICAgIC8qCiAgICAgICogIE5vdyBsb29wIHRocm91Z2ggdGhlIGxpc3Qgb2YgdHJhcCBzaW5rcwpAQCAtOTQ5LDYgKzk3NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgodHJhcF92ZXJzaW9uX2lkKSwgdmFycyk7CiB9CiAKKy8qIFNlbmQgYSB0cmFwIHVuZGVyIGEgY29udGV4dCAqLwordm9pZCBzZW5kX3RyYXBfdmFyc193aXRoX2NvbnRleHQoaW50IHRyYXAsIGludCBzcGVjaWZpYywgCisgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgY2hhciAqY29udGV4dCkKK3sKKyAgICBpZiAodHJhcCA9PSBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDKQorICAgICAgICBuZXRzbm1wX3NlbmRfdHJhcHModHJhcCwgc3BlY2lmaWMsIG9iamlkX2VudGVycHJpc2V0cmFwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgob2JqaWRfZW50ZXJwcmlzZXRyYXApLCB2YXJzLAorCQkJCQkJCQkgIGNvbnRleHQsIDApOworICAgIGVsc2UKKyAgICAgICAgbmV0c25tcF9zZW5kX3RyYXBzKHRyYXAsIHNwZWNpZmljLCB0cmFwX3ZlcnNpb25faWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSCh0cmFwX3ZlcnNpb25faWQpLCB2YXJzLCAKKwkJCQkJCQkJICBjb250ZXh0LCAwKTsKKyAgICAJCit9CisKIC8qKgogICogU2VuZHMgYW4gU05NUHYxIHRyYXAgKG9yIHRoZSBTTk1QdjIgZXF1aXZhbGVudCkgdG8gdGhlIGxpc3Qgb2YgIAogICogY29uZmlndXJlZCB0cmFwIGRlc3RpbmF0aW9ucyAob3IgInNpbmtzIiksIHVzaW5nIHRoZSBwcm92aWRlZCAKQEAgLTEwMDcsNiArMTA0OSwyNSBAQAogICAgIHNlbmRfdHJhcF92YXJzKC0xLCAtMSwgdmFycyk7CiB9CiAKKy8qKgorICogU2ltaWxhciB0byBzZW5kX3YydHJhcCgpLCB3aXRoIHRoZSBhZGRlZCBhYmlsaXR5IHRvIHNwZWNpZnkgYSBjb250ZXh0LiAgSWYKKyAqIHRoZSBsYXN0IHBhcmFtZXRlciBpcyBOVUxMLCB0aGVuIHRoaXMgY2FsbCBpcyBlcXVpdmFsZW50IHRvIHNlbmRfdjJ0cmFwKCkuCisgKgorICogQHBhcmFtIHZhcnMgaXMgdXNlZCB0byBzdXBwbHkgdGhlIGxpc3Qgb2YgdmFyaWFibGUgYmluZGluZ3MgZm9yIHRoZSB0cmFwLgorICogCisgKiBAcGFyYW0gY29udGV4dCBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGNvbnRleHQgb2YgdGhlIHRyYXAuCisgKgorICogQHJldHVybiB2b2lkCisgKgorICogQHNlZSBzZW5kX3YydHJhcAorICovCit2b2lkIHNlbmRfdjN0cmFwKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgY2hhciAqY29udGV4dCkKK3sKKyAgICBuZXRzbm1wX3NlbmRfdHJhcHMoLTEsIC0xLCAKKwkJCQkJdHJhcF92ZXJzaW9uX2lkLCBPSURfTEVOR1RIKHRyYXBfdmVyc2lvbl9pZCksCisgICAgICAgICAgICAgICAgICAgIHZhcnMsIGNvbnRleHQsIDApOworfQorCiB2b2lkCiBzZW5kX3RyYXBfcGR1KG5ldHNubXBfcGR1ICpwZHUpCiB7CkBAIC0xMDczLDcgKzExMzQsNiBAQAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX3RyYXBzaW5rKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07CiAgICAgY2hhciAgICAgICAgICAgKnNwLCAqY3AsICpwcCA9IE5VTEw7CiAgICAgY2hhciAgICAgICAgICAgICpzdDsKIApAQCAtMTA4Niw5ICsxMTQ2LDcgQEAKICAgICBpZiAocHApCiAJY29uZmlnX3B3YXJuKCJUaGUgc2VwYXJhdGUgcG9ydCBhcmd1bWVudCB0byB0cmFwc2luayBpcyBkZXByZWNhdGVkIik7CiAgICAgaWYgKGNyZWF0ZV92MV90cmFwX3Nlc3Npb24oc3AsIHBwLCBjcCA/IGNwIDogc25tcF90cmFwY29tbXVuaXR5KSA9PSAwKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJjYW5ub3QgY3JlYXRlIHRyYXBzaW5rOiAlcyIsIGNwdHIpOwotICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAnXDAnOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoImNhbm5vdCBjcmVhdGUgdHJhcHNpbms6ICVzIiwgY3B0cik7CiAgICAgfQogfQogI2VuZGlmCkBAIC0xMDk3LDkgKzExNTUsNyBAQAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX3RyYXAyc2luayhjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07Ci0gICAgY2hhciAgICAgICAgICAgKnNwLCAqY3AsICpwcCA9IE5VTEw7Ci0gICAgY2hhciAgICAgICAgICAgICpzdDsKKyAgICBjaGFyICAgICAgICAgICAqc3QsICpzcCwgKmNwLCAqcHAgPSBOVUxMOwogCiAgICAgaWYgKCFzbm1wX3RyYXBjb21tdW5pdHkpCiAgICAgICAgIHNubXBfdHJhcGNvbW11bml0eSA9IHN0cmR1cCgicHVibGljIik7CkBAIC0xMTEwLDE4ICsxMTY2LDE0IEBACiAgICAgaWYgKHBwKQogCWNvbmZpZ19wd2FybigiVGhlIHNlcGFyYXRlIHBvcnQgYXJndW1lbnQgdG8gdHJhcHNpbmsyIGlzIGRlcHJlY2F0ZWQiKTsKICAgICBpZiAoY3JlYXRlX3YyX3RyYXBfc2Vzc2lvbihzcCwgcHAsIGNwID8gY3AgOiBzbm1wX3RyYXBjb21tdW5pdHkpID09IDApIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgImNhbm5vdCBjcmVhdGUgdHJhcDJzaW5rOiAlcyIsIGNwdHIpOwotICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAnXDAnOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoImNhbm5vdCBjcmVhdGUgdHJhcDJzaW5rOiAlcyIsIGNwdHIpOwogICAgIH0KIH0KIAogdm9pZAogc25tcGRfcGFyc2VfY29uZmlnX2luZm9ybXNpbmsoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwotICAgIGNoYXIgICAgICAgICAgICpzcCwgKmNwLCAqcHAgPSBOVUxMOwotICAgIGNoYXIgICAgICAgICAgICAqc3Q7CisgICAgY2hhciAgICAgICAgICAgKnN0LCAqc3AsICpjcCwgKnBwID0gTlVMTDsKIAogICAgIGlmICghc25tcF90cmFwY29tbXVuaXR5KQogICAgICAgICBzbm1wX3RyYXBjb21tdW5pdHkgPSBzdHJkdXAoInB1YmxpYyIpOwpAQCAtMTEzMiw5ICsxMTg0LDcgQEAKICAgICBpZiAocHApCiAJY29uZmlnX3B3YXJuKCJUaGUgc2VwYXJhdGUgcG9ydCBhcmd1bWVudCB0byBpbmZvcm1zaW5rIGlzIGRlcHJlY2F0ZWQiKTsKICAgICBpZiAoY3JlYXRlX3YyX2luZm9ybV9zZXNzaW9uKHNwLCBwcCwgY3AgPyBjcCA6IHNubXBfdHJhcGNvbW11bml0eSkgPT0gMCkgewotICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiY2Fubm90IGNyZWF0ZSBpbmZvcm1zaW5rOiAlcyIsIGNwdHIpOwotICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAnXDAnOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoImNhbm5vdCBjcmVhdGUgaW5mb3Jtc2luazogJXMiLCBjcHRyKTsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L2F1dG9fbmxpc3QuYyBiL2FnZW50L2F1dG9fbmxpc3QuYwppbmRleCBkZmYxZjJiLi4wYjU5OTVhIDEwMDY0NAotLS0gYS9hZ2VudC9hdXRvX25saXN0LmMKKysrIGIvYWdlbnQvYXV0b19ubGlzdC5jCkBAIC0xNDksNyArMTQ5LDYgQEAKIHN0YXRpYyB2b2lkCiBpbml0X25saXN0KHN0cnVjdCBubGlzdCBubFtdKQogewotI2lmZGVmIE5FVFNOTVBfQ0FOX1VTRV9OTElTVAogICAgIGludCAgICAgICAgICAgICByZXQ7CiAjaWYgSEFWRV9LVk1fT1BFTkZJTEVTCiAgICAga3ZtX3QgICAgICAgICAgKmtlcm5lbDsKQEAgLTIyMiw3ICsyMjEsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCkgbmxbcmV0XS5uX3ZhbHVlKSk7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfQ0FOX1VTRV9OTElTVCAqLwogfQogCiBpbnQKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kIGIvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKaW5kZXggODNmZTU0ZS4uYzI0ZTM0YyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5kZXBlbmQKQEAgLTgsMzIgKzgsMTQgQEAKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDQsMTEgKzI2LDMxIEBACiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FsbF9oZWxwZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMDIsNiArMTA0LDcgQEAKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vYWxsX2hlbHBlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9hbGxfaGVscGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExMCwzMiArMTEzLDE0IEBACiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTQ2LDExICsxMzEsMzEgQEAKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2JhYnlfc3RlcHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9iYWJ5X3N0ZXBzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYmFieV9zdGVwcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjEyLDMyICsyMTcsMTQgQEAKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI0OCwxMSArMjM1LDMxIEBACiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYnVsa190b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9idWxrX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2J1bGtfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzE0LDMyICszMjEsMTQgQEAKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNTAsMTEgKzMzOSwzMSBAQAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vY2FjaGVfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NhY2hlX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9jYWNoZV9oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00MTYsMzIgKzQyNSwxNCBAQAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ1MiwxMSArNDQzLDMxIEBACiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kZWJ1Z19oYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZGVidWdfaGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2RlYnVnX2hhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTUxOCwzMiArNTI5LDE0IEBACiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTU1NCwxMSArNTQ3LDMxIEBACiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02MjAsMzIgKzYzMywxNCBAQAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTY1NiwxMSArNjUxLDMxIEBACiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9tb2RlX2VuZF9jYWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbW9kZV9lbmRfY2FsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21vZGVfZW5kX2NhbGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTcyMiwzMiArNzM3LDE0IEBACiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTc1OCwxMSArNzU1LDMxIEBACiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9tdWx0aXBsZXhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbXVsdGlwbGV4ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL211bHRpcGxleGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04MjQsMzIgKzg0MSwxNCBAQAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg2MCwxMCArODU5LDMxIEBACiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9udWxsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbnVsbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL251bGwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkyNSwzMiArOTQ1LDE0IEBACiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTYxLDExICs5NjMsMzEgQEAKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL29sZF9hcGkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9vbGRfYXBpLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vb2xkX2FwaS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAyOCwzMiArMTA1MCwxNCBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTA2NCwxMSArMTA2OCwzMSBAQAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3JlYWRfb25seS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vcmVhZF9vbmx5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9yZWFkX29ubHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExMzAsMzIgKzExNTQsMTQgQEAKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExNjYsMTEgKzExNzIsMzEgQEAKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9yb3dfbWVyZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3Jvd19tZXJnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vcm93X21lcmdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMjMyLDMyICsxMjU4LDE0IEBACiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjY4LDExICsxMjc2LDMxIEBACiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc2NhbGFyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY2FsYXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NjYWxhci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTMzNCwzMiArMTM2MiwxNCBAQAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTM3MCwxMSArMTM4MCwzMSBAQAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjYWxhcl9ncm91cC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc2NhbGFyX2dyb3VwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY2FsYXJfZ3JvdXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE0MzYsMzIgKzE0NjYsMTQgQEAKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0NzIsMTEgKzE0ODQsMzEgQEAKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zZXJpYWxpemUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NlcmlhbGl6ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2VyaWFsaXplLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNTM4LDMyICsxNTcwLDE0IEBACiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE1NzQsMTEgKzE1ODgsMzEgQEAKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3N0YXNoX2NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zdGFzaF9jYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc3Rhc2hfY2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2NDIsMzIgKzE2NzYsMTQgQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNjc4LDExICsxNjk0LDMxIEBACiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3N0YXNoX3RvX25leHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE3MzYsMTA5ICsxNzcyLDggQEAKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vc3Rhc2hfdG9fbmV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF90b19uZXh0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zdGFzaF90b19uZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTg0NywzMiArMTc4MiwxNCBAQAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xODgzLDExICsxODAwLDMxIEBACiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi90YWJsZV9hcnJheS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xOTQxLDYgKzE4NzgsMTEwIEBACiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3RhYmxlX2FycmF5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdGFibGVfYXJyYXkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTk0OSwzMiArMTk5MCwxNCBAQAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTk4NSwxMSArMjAwOCwzMSBAQAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX2NvbnRhaW5lci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFibGVfY29udGFpbmVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV9jb250YWluZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIwNTEsMzIgKzIwOTQsMTQgQEAKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMDg3LDExICsyMTEyLDMxIEBACiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZV9kYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RhYmxlX2RhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNTMsMzIgKzIxOTgsMTQgQEAKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTg5LDExICsyMjE2LDMxIEBACiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90YWJsZV9kYXRhc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfZGF0YXNldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RhYmxlX2RhdGFzZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIyNTUsMzIgKzIzMDIsMTQgQEAKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjI5MSwxMSArMjMyMCwzMSBAQAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGFibGVfaXRlcmF0b3IubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX2l0ZXJhdG9yLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV9pdGVyYXRvci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjM1OCwzMiArMjQwNywxNCBAQAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjM5NCwxMSArMjQyNSwzMSBAQAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhYmxlX3Jvdy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFibGVfcm93LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV9yb3cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI0NjAsMzIgKzI1MTEsMTQgQEAKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjQ5NiwxMSArMjUyOSwzMSBAQAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGFibGVfdGRhdGEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RhYmxlX3RkYXRhLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YWJsZV90ZGF0YS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjU2MiwzMiArMjYxNSwxNCBAQAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI1OTgsMTEgKzI2MzMsMzEgQEAKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3dhdGNoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi93YXRjaGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vd2F0Y2hlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbiBiL2FnZW50L2hlbHBlcnMvTWFrZWZpbGUuaW4KaW5kZXggYjgzYWY4OS4uYzZiNzMyZiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbgorKysgYi9hZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluCkBAIC0zMSwxMyArMzEsMTMgQEAKICAgICAgICAgc2VyaWFsaXplLmggXAogCXN0YXNoX2NhY2hlLmggXAogCXN0YXNoX3RvX25leHQuaCBcCi0gICAgICAgIHRhYmxlLmggXAogCXRhYmxlX2FycmF5LmggXAogCXRhYmxlX2NvbnRhaW5lci5oIFwKKyAgICAgICAgdGFibGUuaCBcCiAgICAgICAgIHRhYmxlX2RhdGEuaCBcCiAgICAgICAgIHRhYmxlX2RhdGFzZXQuaCBcCi0gICAgICAgIHRhYmxlX2l0ZXJhdG9yLmggXAogICAgICAgICB0YWJsZV90ZGF0YS5oIFwKKyAgICAgICAgdGFibGVfaXRlcmF0b3IuaCBcCiAJd2F0Y2hlci5oCiAKICMgTm8gaGVhZGVyICd0YWJsZV9yb3cuaCcKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYyBiL2FnZW50L2hlbHBlcnMvYWxsX2hlbHBlcnMuYwppbmRleCAwMmJjOGFmLi4xZWQxMDhhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2FsbF9oZWxwZXJzLmMKKysrIGIvYWdlbnQvaGVscGVycy9hbGxfaGVscGVycy5jCkBAIC01LDE1ICs1LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpZmRlZiBTVElMTF9UT19ETwotICAgICAgICAvKgotICAgICAgICAgKiBJdCBvdWdodCB0byBiZSBwb3NzaWJsZSB0byBqdXN0ICNpbmNsdWRlIHRoZXNlIGZpbGVzLAotICAgICAgICAgKiAgIGJ1dCB0aGV5IHJlbHkgb24gdmFyaW91cyBvdGhlciB0eXBlcyBiZWluZyBkZWZpbmVkIGZpcnN0LgotICAgICAgICAgKgotICAgICAgICAgKiBJIHJlYWxseSBjYW4ndCBmYWNlIHRyYWNraW5nIGRvd24gdGhlIGRlcGVuZGVuY3kgY2hhaW4KLSAgICAgICAgICogICBqdXN0IGF0IHRoZSBtb21lbnQuCi0gICAgICAgICAqIFNvIHdlJ2xsIGp1c3QgaGF2ZSB0byBsaXZlIHdpdGggdGhlIHdhcm5pbmdzLi4uLgotICAgICAgICAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CkBAIC0yMSwxNiArMTIsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgogCi0jZWxzZQotCi12b2lkICBuZXRzbm1wX2luaXRfZGVidWdfaGVscGVyKHZvaWQpOwotdm9pZCAgbmV0c25tcF9pbml0X3NlcmlhbGl6ZSh2b2lkKTsKLXZvaWQgIG5ldHNubXBfaW5pdF9yZWFkX29ubHlfaGVscGVyKHZvaWQpOwotdm9pZCAgbmV0c25tcF9pbml0X2J1bGtfdG9fbmV4dF9oZWxwZXIodm9pZCk7Ci12b2lkICBuZXRzbm1wX2luaXRfdGFibGVfZGF0YXNldCh2b2lkKTsKLXZvaWQgIG5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXIodm9pZCk7Ci0jZW5kaWYKLQogLyoqIGNhbGwgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBhbGwgaGFuZGxlcnMgd2l0aCBpbml0XyByb3V0aW5lcy4gKi8KIHZvaWQKIG5ldHNubXBfaW5pdF9oZWxwZXJzKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL2J1bGtfdG9fbmV4dC5jIGIvYWdlbnQvaGVscGVycy9idWxrX3RvX25leHQuYwppbmRleCA0ZGQxOTE0Li5lNjA3ZWRhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2J1bGtfdG9fbmV4dC5jCisrKyBiL2FnZW50L2hlbHBlcnMvYnVsa190b19uZXh0LmMKQEAgLTEsMTEgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9jYWNoZV9oYW5kbGVyLmMgYi9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYwppbmRleCA1MjBkNDYzLi5iZmQ2ZTBhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYworKysgYi9hZ2VudC9oZWxwZXJzL2NhY2hlX2hhbmRsZXIuYwpAQCAtMSwxNiArMSwyNiBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmg+CisKICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjZWxzZQogI2luY2x1ZGUgPHN0cmluZ3MuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgotCi0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgotCiBzdGF0aWMgbmV0c25tcF9jYWNoZSAgKmNhY2hlX2hlYWQgPSBOVUxMOwogc3RhdGljIGludCAgICAgICAgICAgICBjYWNoZV9vdXRzdGFuZGluZ192YWxpZCA9IDA7CiBzdGF0aWMgaW50ICAgICAgICAgICAgIF9jYWNoZV9sb2FkKCBuZXRzbm1wX2NhY2hlICpjYWNoZSApOwpAQCAtMTE3LDcgKzEyNyw3IEBACiAvKiogZmluZCBleGlzdGluZyBjYWNoZQogICovCiBuZXRzbm1wX2NhY2hlICoKLW5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQob2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQorbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZChjb25zdCBvaWQgKiByb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pCiB7CiAgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOwogCkBAIC0xMzUsNyArMTQ1LDcgQEAKIG5ldHNubXBfY2FjaGUgKgogbmV0c25tcF9jYWNoZV9jcmVhdGUoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQ2FjaGVGcmVlICogZnJlZV9ob29rLAotICAgICAgICAgICAgICAgICAgICAgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQorICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQogewogICAgIG5ldHNubXBfY2FjaGUgICpjYWNoZSA9IE5VTEw7CiAKQEAgLTE3Myw2ICsxODMsNDAgQEAKICAgICByZXR1cm4gY2FjaGU7CiB9CiAKKy8qKiBmcmVlcyBhIGNhY2hlCisgKi8KK2ludAorbmV0c25tcF9jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKmNhY2hlKQoreworICAgIG5ldHNubXBfY2FjaGUgICpwb3M7CisKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIGZvciAocG9zID0gY2FjaGVfaGVhZDsgcG9zOyBwb3MgPSBwb3MtPm5leHQpIHsKKyAgICAgICAgaWYgKHBvcyA9PSBjYWNoZSkgeworICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIG91dF9sZW4gPSAwOworICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIGJ1Zl9sZW4gPSAwOworICAgICAgICAgICAgY2hhciAgICAgICAgICAgKmJ1ZiA9IE5VTEw7CisKKyAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX29iamlkKCh1X2NoYXIgKiopICZidWYsICZidWZfbGVuLCAmb3V0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIHBvcy0+cm9vdG9pZCwgcG9zLT5yb290b2lkX2xlbik7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKwkJICAgICAibm90IGZyZWVpbmcgY2FjaGUgd2l0aCByb290IE9JRCAlcyAoc3RpbGwgaW4gbGlzdClcbiIsCisJCSAgICAgYnVmKTsKKyAgICAgICAgICAgIGZyZWUoYnVmKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoY2FjaGUtPnJvb3RvaWQpCisgICAgICAgIGZyZWUoY2FjaGUtPnJvb3RvaWQpOworCisgICAgZnJlZShjYWNoZSk7CisKKyAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworfQorCiAvKiogY2FsbGJhY2sgZnVuY3Rpb24gdG8gY2FsbCBjYWNoZSBsb2FkIGZ1bmN0aW9uICovCiBzdGF0aWMgdm9pZAogX3RpbWVyX3JlbG9hZCh1bnNpZ25lZCBpbnQgcmVnTm8sIHZvaWQgKmNsaWVudGFyZ3MpCkBAIC0yMTcsNyArMjYxLDcgQEAKIAogICAgIGNhY2hlLT5mbGFncyAmPSB+TkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKICAgICBERUJVR01TR1QoKCJjYWNoZV90aW1lcjpzdGFydCIsCi0gICAgICAgICAgICAgICAic3RhcnRpbmcgdGltZXIgJWQgZm9yIGNhY2hlICVwXG4iLCBjYWNoZS0+dGltZXJfaWQsIGNhY2hlKSk7CisgICAgICAgICAgICAgICAic3RhcnRpbmcgdGltZXIgJWx1IGZvciBjYWNoZSAlcFxuIiwgY2FjaGUtPnRpbWVyX2lkLCBjYWNoZSkpOwogICAgIHJldHVybiBjYWNoZS0+dGltZXJfaWQ7CiB9CiAKQEAgLTIzNCw3ICsyNzgsNyBAQAogICAgIH0KIAogICAgIERFQlVHTVNHVCgoImNhY2hlX3RpbWVyOnN0b3AiLAotICAgICAgICAgICAgICAgInN0b3BwaW5nIHRpbWVyICVkIGZvciBjYWNoZSAlcFxuIiwgY2FjaGUtPnRpbWVyX2lkLCBjYWNoZSkpOworICAgICAgICAgICAgICAgInN0b3BwaW5nIHRpbWVyICVsdSBmb3IgY2FjaGUgJXBcbiIsIGNhY2hlLT50aW1lcl9pZCwgY2FjaGUpKTsKIAogICAgIHNubXBfYWxhcm1fdW5yZWdpc3RlcihjYWNoZS0+dGltZXJfaWQpOwogICAgIGNhY2hlLT5mbGFncyB8PSBORVRTTk1QX0NBQ0hFX0FVVE9fUkVMT0FEOwpAQCAtMjc1LDcgKzMxOSw3IEBACiBuZXRzbm1wX21pYl9oYW5kbGVyICoKIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKQogewogICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKnJldCA9IE5VTEw7CiAgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlID0gTlVMTDsKQEAgLTQ2Myw3ICs1MDcsNyBAQAogICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgY2FzZSBNT0RFX0dFVE5FWFQ6CiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6Ci0gICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMTogeworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAKICAgICAgICAgLyoKICAgICAgICAgICogb25seSB0b3VjaCBjYWNoZSBvbmNlIHBlciBwZHUgcmVxdWVzdCwgdG8gcHJldmVudCBhIGNhY2hlCkBAIC00NzQsNyArNTE4LDcgQEAKICAgICAgICAgICogbWF5YmUgdXNlIGEgcmVmZXJlbmNlIGNvdW50ZXI/CiAgICAgICAgICAqLwogICAgICAgICBpZiAobmV0c25tcF9jYWNoZV9pc192YWxpZChyZXFpbmZvLCBhZGRyc3RyKSkKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyoKICAgICAgICAgICogY2FsbCB0aGUgbG9hZCBob29rLCBhbmQgdXBkYXRlIHRoZSBjYWNoZSB0aW1lc3RhbXAuCkBAIC00ODMsOCArNTI3LDcgQEAKICAgICAgICAgbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKGNhY2hlKTsKICAgICAgICAgbmV0c25tcF9jYWNoZV9yZXFpbmZvX2luc2VydChjYWNoZSwgcmVxaW5mbywgYWRkcnN0cik7CiAgICAgICAgIC8qKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CiAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgpAQCAtNDkyLDcgKzUzNSw3IEBACiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgogICAgICAgICBuZXRzbm1wX2Fzc2VydChuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKHJlcWluZm8sIGFkZHJzdHIpKTsKICAgICAgICAgLyoqIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCi0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICBicmVhazsKIAogICAgICAgICAvKgogICAgICAgICAgKiBBIChzdWNjZXNzZnVsKSBTRVQgcmVxdWVzdCB3b3VsZG4ndCB0eXBpY2FsbHkgdHJpZ2dlciBhIHJlbG9hZCBvZgpAQCAtNTA2LDcgKzU0OSw3IEBACiAgICAgICAgICAgICBjYWNoZS0+dmFsaWQgPSAwOwogICAgICAgICB9CiAgICAgICAgIC8qKiBuZXh0IGhhbmRsZXIgY2FsbGVkIGF1dG9tYXRpY2FsbHkgLSAnQVVUT19ORVhUJyAqLwotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgogICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgImNhY2hlX2hhbmRsZXI6IFVucmVjb2duaXNlZCBtb2RlICglZClcbiIsCkBAIC01MTQsOCArNTU3LDcgQEAKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQotICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX0VSUl9HRU5FUlIpOwotICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7ICAgICAvKiBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUgKi8KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvZGVidWdfaGFuZGxlci5jIGIvYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMKaW5kZXggNGUzNTY5NS4uODMyYWQyZCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMKKysrIGIvYWdlbnQvaGVscGVycy9kZWJ1Z19oYW5kbGVyLmMKQEAgLTksMTMgKzksNiBAQAogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLwogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtMTI0LDcgKzExNyw3IEBACiAgICAgZm9yIChocHRyID0gcmVnaW5mby0+aGFuZGxlcjsgaHB0cjsgaHB0ciA9IGhwdHItPm5leHQpIHsKICAgICAgICAgREVCVUdNU0coKCJoZWxwZXI6ZGVidWciLCAiIC0+ICVzIiwgaHB0ci0+aGFuZGxlcl9uYW1lKSk7CiAgICAgICAgIGlmIChocHRyLT5teXZvaWQpCi0gICAgICAgICAgICBERUJVR01TRygoImhlbHBlcjpkZWJ1ZyIsICIgW215dm9pZCA9ICV4XSIsIGhwdHItPm15dm9pZCkpOworICAgICAgICAgICAgREVCVUdNU0coKCJoZWxwZXI6ZGVidWciLCAiIFtteXZvaWQgPSAlcF0iLCBocHRyLT5teXZvaWQpKTsKICAgICB9CiAgICAgREVCVUdNU0coKCJoZWxwZXI6ZGVidWciLCAiXG4iKSk7CiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYyBiL2FnZW50L2hlbHBlcnMvaW5zdGFuY2UuYwppbmRleCA1YzllMTZkLi45ZWJkYjg3IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL2luc3RhbmNlLmMKKysrIGIvYWdlbnQvaGVscGVycy9pbnN0YW5jZS5jCkBAIC0xMCw2ICsxMCwxMSBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oPgorCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTcsMTAgKzIyLDYgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CiAKQEAgLTEwOCw3ICsxMDksNyBAQAogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqCiBnZXRfcmVnKGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgIGNvbnN0IGNoYXIgKm91cm5hbWUsCi0gICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICB2b2lkICppdCwKICAgICAgICAgaW50IG1vZGVzLAogICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHNjYWxhcmgsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKQEAgLTE0MiwxMTUgKzE0MywxMTQgQEAKIC8qIFdhdGNoZWQgJ2xvbmcnIGluc3RhbmNlcyBhcmUgd3JpdGFibGUgb24gYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBzeXN0ZW1zICAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIG5ldHNubXBfaW5zdGFuY2VfdWxvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwKKyAgICAgICAgICAgICAgICAgICBBU05fVU5TSUdORUQsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgInVsb25nX2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLAorICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAiY291bnRlcjMyX2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UobXlyZWcpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1X2xvbmcpLAorICAgICAgICAgICAgICAgICAgIEFTTl9DT1VOVEVSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15cmVnOwotCi0gICAgbXlyZWcgPSBnZXRfcmVnKG5hbWUsICJsb25nX2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UobXlyZWcpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogLyogV2F0Y2hlZCAnaW50JyBpbnN0YW5jZXMgYXJlIG9ubHkgd3JpdGFibGUgb24gMzItYml0IHN5c3RlbXMgICovCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3VpbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWludF9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsIE5VTEwpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSksCisgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVuc2lnbmVkIGludCksCisgICAgICAgICAgICAgICAgICAgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3VpbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWludF9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsIG5ldHNubXBfaW5zdGFuY2VfdWludF9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZih1bnNpZ25lZCBpbnQpLAorICAgICAgICAgICAgICAgICAgIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImludF9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgTlVMTCk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiAgIC8qCkBAIC0yNTgsNyArMjU4LDcgQEAKICAgICovCiBpbnQKIHJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZShuYW1lLApAQCAtMjcyLDExNSArMjcyLDEyOSBAQAogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIG5ldHNubXBfaW5zdGFuY2VfdWxvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZShteXJlZyk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWcgPQorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwgQVNOX1VOU0lHTkVELCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAidWxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX3Vsb25nX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsIGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWcgPQorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JXUklURSk7CisgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQorICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKHVfbG9uZyksIEFTTl9VTlNJR05FRCwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImNvdW50ZXIzMl9oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV9jb3VudGVyMzJfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnN0YW5jZShteXJlZyk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWcgPQorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgbmFtZSwgc3ViaGFuZGxlciwgcmVnX29pZCwgcmVnX29pZF9sZW4sIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YodV9sb25nKSwgQVNOX0NPVU5URVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqc3ViaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAibG9uZ19oYW5kbGVyIiwgcmVnX29pZCwgcmVnX29pZF9sZW4sIGl0LAotICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSwgbmV0c25tcF9pbnN0YW5jZV9sb25nX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsIGNvbnRleHROYW1lKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UobXlyZWcpOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15cmVnID0KKyAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKG15cmVnICYmIGNvbnRleHROYW1lKQorICAgICAgbXlyZWctPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX2luc3RhbmNlKAorICAgICAgICBteXJlZywgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgKHZvaWQgKilpdCwgc2l6ZW9mKGxvbmcpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpCiB7Ci0gICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlyZWc7Ci0KLSAgICBteXJlZyA9IGdldF9yZWcobmFtZSwgImxvbmdfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG15cmVnKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZyA9CisgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YobG9uZyksIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKIH0KIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAiaW50X2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwgY29udGV4dE5hbWUpOwotICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG15cmVnKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZyA9CisgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUldSSVRFKTsKKyAgICBpZiAobXlyZWcgJiYgY29udGV4dE5hbWUpCisgICAgICBteXJlZy0+Y29udGV4dE5hbWUgPSBzdHJkdXAoY29udGV4dE5hbWUpOworICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgIG15cmVnLCBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8oCisgICAgICAgICAgICAodm9pZCAqKWl0LCBzaXplb2YoaW50KSwgQVNOX0lOVEVHRVIsIFdBVENIRVJfRklYRURfU0laRSkpOwogfQogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkKIHsKLSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKLQotICAgIG15cmVnID0gZ2V0X3JlZyhuYW1lLCAiaW50X2hhbmRsZXIiLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgaXQsCi0gICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZLCBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBjb250ZXh0TmFtZSk7Ci0gICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2luc3RhbmNlKG15cmVnKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZyA9CisgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICBuYW1lLCBzdWJoYW5kbGVyLCByZWdfb2lkLCByZWdfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkpOworICAgIGlmIChteXJlZyAmJiBjb250ZXh0TmFtZSkKKyAgICAgIG15cmVnLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgbXlyZWcsIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKIC8qCkBAIC0zODgsNyArNDAyLDcgQEAKICAqLwogaW50CiByZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKQpAQCAtNDU5LDE3ICs0NzMsMjEgQEAKICAqLwogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15cmVnOwotCi0gICAgbXlyZWcgPSBnZXRfcmVnKG5hbWUsICJpbnRfaGFuZGxlciIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBpdCwKLSAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLCBOVUxMKTsKLSAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShteXJlZyk7CisgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICAgIG5hbWUsIHN1YmhhbmRsZXIsIHJlZ19vaWQsIHJlZ19vaWRfbGVuLCBIQU5ETEVSX0NBTl9SV1JJVEUpLAorICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAorICAgICAgICAgICAgICAgICAgICh2b2lkICopaXQsIHNpemVvZihpbnQpLCBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CiB9CiAKKyNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUworCisvKioKKyAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42CisgKi8KIGludAogbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTU0Nyw2ICs1NjUsOSBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisvKioKKyAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42CisgKi8KIGludAogbmV0c25tcF9pbnN0YW5jZV9jb3VudGVyMzJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNTgzLDYgKzYwNCw5IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKy8qKgorICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKKyAqLwogaW50CiBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTY1OCw2ICs2ODIsOSBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisvKioKKyAqIFxkZXByZWNhdGVkIFRoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42CisgKi8KIGludAogbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNzM4LDYgKzc2NSw4IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKKyNlbmRpZiAvKiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TICovCisKIGludAogbmV0c25tcF9pbnN0YW5jZV9udW1fZmlsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTg2Nyw2ICs4OTYsMTEgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KIAorI2lmbmRlZiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TCisKKy8qKgorICogXGRlcHJlY2F0ZWQgVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYKKyAqLwogaW50CiBuZXRzbm1wX2luc3RhbmNlX3VpbnRfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKQEAgLTk0Nyw2ICs5ODEsOCBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCisjZW5kaWYgLyogTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUyAqLworCiBpbnQKIG5ldHNubXBfaW5zdGFuY2VfaGVscGVyX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvbnVsbC5jIGIvYWdlbnQvaGVscGVycy9udWxsLmMKaW5kZXggZDExMGViOC4uOTdkZmM5MiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9udWxsLmMKKysrIGIvYWdlbnQvaGVscGVycy9udWxsLmMKQEAgLTEsMTYgKzEsMTYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L251bGwuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9udWxsLmg+Ci0KIGludAogbmV0c25tcF9yZWdpc3Rlcl9udWxsKG9pZCAqIGxvYywgc2l6ZV90IGxvY19sZW4pCiB7CkBAIC0yMywxNCArMjMsMTYgQEAKIHsKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvOwogICAgIHJlZ2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24pOwotICAgIHJlZ2luZm8tPmhhbmRsZXJOYW1lID0gc3RyZHVwKCIiKTsKLSAgICByZWdpbmZvLT5yb290b2lkID0gbG9jOwotICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuID0gbG9jX2xlbjsKLSAgICByZWdpbmZvLT5oYW5kbGVyID0KLSAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcigibnVsbCIsIG5ldHNubXBfbnVsbF9oYW5kbGVyKTsKLSAgICBpZiAoY29udGV4dE5hbWUpCi0gICAgICAgIHJlZ2luZm8tPmNvbnRleHROYW1lID0gc3RyZHVwKGNvbnRleHROYW1lKTsKLSAgICByZWdpbmZvLT5tb2RlcyA9IEhBTkRMRVJfQ0FOX0RFRkFVTFQ7CisgICAgaWYgKHJlZ2luZm8gIT0gTlVMTCkgeworICAgICAgICByZWdpbmZvLT5oYW5kbGVyTmFtZSA9IHN0cmR1cCgiIik7CisgICAgICAgIHJlZ2luZm8tPnJvb3RvaWQgPSBsb2M7CisgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuID0gbG9jX2xlbjsKKyAgICAgICAgcmVnaW5mby0+aGFuZGxlciA9CisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJudWxsIiwgbmV0c25tcF9udWxsX2hhbmRsZXIpOworICAgICAgICBpZiAoY29udGV4dE5hbWUpCisgICAgICAgICAgICByZWdpbmZvLT5jb250ZXh0TmFtZSA9IHN0cmR1cChjb250ZXh0TmFtZSk7CisgICAgICAgIHJlZ2luZm8tPm1vZGVzID0gSEFORExFUl9DQU5fREVGQVVMVCB8IEhBTkRMRVJfQ0FOX0dFVEJVTEs7CisgICAgfQogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvb2xkX2FwaS5jIGIvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKaW5kZXggNmUzNjc3Ni4uZWMyNjI2MyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKKysrIGIvYWdlbnQvaGVscGVycy9vbGRfYXBpLmMKQEAgLTEsMTUgKzEsMTYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L29sZF9hcGkuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9vbGRfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CiAKICNkZWZpbmUgTUlCX0NMSUVOVFNfQVJFX0VWSUwgMQpAQCAtNjcsNiArNjgsOCBAQAogICAgICAgICBzdHJ1Y3QgdmFyaWFibGUgKnZwOwogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvID0KICAgICAgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbik7CisgICAgICAgIGlmIChyZWdpbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogCiAgICAgICAgIHZwID0gbmV0c25tcF9tZW1kdXAoKGNvbnN0IHN0cnVjdCB2YXJpYWJsZSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoY29uc3QgY2hhciAqKSB2YXIgKyB2YXJzaXplICogaSksCkBAIC03Nyw2ICs4MCwxMiBAQAogICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbiA9IChtaWJsb2NsZW4gKyB2cC0+bmFtZWxlbik7CiAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWQgPQogICAgICAgICAgICAgKG9pZCAqKSBtYWxsb2MocmVnaW5mby0+cm9vdG9pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgIGlmIChyZWdpbmZvLT5yb290b2lkID09IE5VTEwpIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh2cCk7CisgICAgICAgICAgICBTTk1QX0ZSRUUocmVnaW5mby0+aGFuZGxlck5hbWUpOworICAgICAgICAgICAgU05NUF9GUkVFKHJlZ2luZm8pOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQogCiAgICAgICAgIG1lbWNweShyZWdpbmZvLT5yb290b2lkLCBtaWJsb2MsIG1pYmxvY2xlbiAqIHNpemVvZihvaWQpKTsKICAgICAgICAgbWVtY3B5KHJlZ2luZm8tPnJvb3RvaWQgKyBtaWJsb2NsZW4sIHZwLT5uYW1lLCB2cC0+bmFtZWxlbgpAQCAtNDAzLDcgKzQxMiw3IEBACiAgKi8KIHN0YXRpYyBuZXRzbm1wX2FnZW50X3Nlc3Npb24gKmN1cnJlbnRfYWdlbnRfc2Vzc2lvbiA9IE5VTEw7CiBuZXRzbm1wX2FnZW50X3Nlc3Npb24gKgotbmV0c25tcF9nZXRfY3VycmVudF9hZ2VudF9zZXNzaW9uKCkKK25ldHNubXBfZ2V0X2N1cnJlbnRfYWdlbnRfc2Vzc2lvbih2b2lkKQogewogICAgIHJldHVybiBjdXJyZW50X2FnZW50X3Nlc3Npb247CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jIGIvYWdlbnQvaGVscGVycy9yZWFkX29ubHkuYwppbmRleCA1MTJmOTRiLi5iODVjZmI1IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3JlYWRfb25seS5jCisrKyBiL2FnZW50L2hlbHBlcnMvcmVhZF9vbmx5LmMKQEAgLTEsMTEgKzEsNSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIApAQCAtNjQsMTMgKzU4LDEwIEBACiAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CiAgICAgICAgIC8qIG5leHQgaGFuZGxlciBjYWxsZWQgYXV0b21hdGljYWxseSAtICdBVVRPX05FWFQnICovCiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQorCiAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfRVJSX0dFTkVSUik7Ci0gICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsgICAgIC8qIHNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiB9CiAKIC8qKiBpbml0aWFsaXplcyB0aGUgcmVhZF9vbmx5IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHJlYWRfb25seQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYyBiL2FnZW50L2hlbHBlcnMvcm93X21lcmdlLmMKaW5kZXggNmI2NDQzMC4uOWFlN2VhOCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9yb3dfbWVyZ2UuYworKysgYi9hZ2VudC9oZWxwZXJzL3Jvd19tZXJnZS5jCkBAIC0xLDE2ICsxLDE2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaD4KLQogLyoqIEBkZWZncm91cCByb3dfbWVyZ2Ugcm93X21lcmdlCiAgKiAgQ2FsbHMgc3ViIGhhbmRsZXJzIHdpdGggcmVxdWVzdCBmb3Igb25lIHJvdyBhdCBhIHRpbWUuCiAgKiAgQGluZ3JvdXAgdXRpbGl0aWVzCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3NjYWxhci5jIGIvYWdlbnQvaGVscGVycy9zY2FsYXIuYwppbmRleCA0MmM2NmI0Li4yM2I2YmI3IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3NjYWxhci5jCisrKyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyLmMKQEAgLTEwLDYgKzEwLDExIEBACiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgorCiAjaW5jbHVkZSA8c3RkbGliLmg+CiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgpAQCAtMTcsMTAgKzIyLDYgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jIGIvYWdlbnQvaGVscGVycy9zY2FsYXJfZ3JvdXAuYwppbmRleCBhNWQxMTllLi4wOWNlZTFhIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3NjYWxhcl9ncm91cC5jCisrKyBiL2FnZW50L2hlbHBlcnMvc2NhbGFyX2dyb3VwLmMKQEAgLTEsNSArMSwxMCBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmg+CisKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNpZiBIQVZFX1NUUklOR19ICiAjaW5jbHVkZSA8c3RyaW5nLmg+CkBAIC03LDEzICsxMiw4IEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oPgogCiAvKiogQGRlZmdyb3VwIHNjYWxhcl9ncm91cF9ncm91cCBzY2FsYXJfZ3JvdXAKICAqICBQcm9jZXNzIGdyb3VwcyBvZiBzY2FsYXJzLgpAQCAtNDgsNyArNDgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkIGZpcnN0LCBvaWQgbGFzdCkKIHsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIG5ldHNubXBfZ2V0X2luc3RhbmNlX2hhbmRsZXIoKSk7Ci0gICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBuZXRzbm1wX2dldF9zY2FsYXJfaGFuZGxlcigpKTsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIG5ldHNubXBfZ2V0X3NjYWxhcl9ncm91cF9oYW5kbGVyKGZpcnN0LCBsYXN0KSk7CiAgICAgcmV0dXJuIG5ldHNubXBfcmVnaXN0ZXJfc2VyaWFsaXplKHJlZ2luZm8pOwogfQpAQCAtMTI4LDEyICsxMjcsMTMgQEAKICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCByZXQpOwogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogCSAgICB9Ci0gICAgICAgICAgICByb290X3RtcFtyZWdpbmZvLT5yb290b2lkX2xlbisrXSA9IHN1YmlkOworICAgICAgICAgICAgcm9vdF90bXBbcmVnaW5mby0+cm9vdG9pZF9sZW5dID0gc3ViaWQ7CisgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbiArPSAyOwogICAgICAgICAgICAgcmVnaW5mby0+cm9vdG9pZCA9IHJvb3RfdG1wOwogICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CiAgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkID0gcm9vdF9zYXZlOwotICAgICAgICAgICAgcmVnaW5mby0+cm9vdG9pZF9sZW4tLTsKKyAgICAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuIC09IDI7CiAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTYyLDcgKzE2Miw4IEBACiAJZWxzZSBpZiAoc3ViaWQgPiBzZ3JvdXAtPnVib3VuZCkKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogICAgICAgICAKLSAgICAgICAgcm9vdF90bXBbcmVnaW5mby0+cm9vdG9pZF9sZW4rK10gPSBzdWJpZDsKKyAgICAgICAgcm9vdF90bXBbcmVnaW5mby0+cm9vdG9pZF9sZW5dID0gc3ViaWQ7CisgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuICs9IDI7CiAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWQgPSByb290X3RtcDsKICAgICAgICAgcmV0ID0gbmV0c25tcF9jYWxsX25leHRfaGFuZGxlcihoYW5kbGVyLCByZWdpbmZvLCByZXFpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cyk7CkBAIC0xNzUsMTIgKzE3NiwxMiBAQAogICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPT0gU05NUF9OT1NVQ0hPQkpFQ1QgfHwKICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CiAgICAgICAgICAgICBzbm1wX3NldF92YXJfb2JqaWQocmVxdWVzdHMtPnJlcXVlc3R2YiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkLCByZWdpbmZvLT5yb290b2lkX2xlbik7Ci0gICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW3JlZ2luZm8tPnJvb3RvaWRfbGVuLTFdID0gKytzdWJpZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpbmZvLT5yb290b2lkLCByZWdpbmZvLT5yb290b2lkX2xlbiAtIDEpOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVtyZWdpbmZvLT5yb290b2lkX2xlbiAtIDJdID0gKytzdWJpZDsKICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBBU05fUFJJVl9SRVRSWTsKICAgICAgICAgfQogICAgICAgICByZWdpbmZvLT5yb290b2lkID0gcm9vdF9zYXZlOwotICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbi0tOworICAgICAgICByZWdpbmZvLT5yb290b2lkX2xlbiAtPSAyOwogICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zZXJpYWxpemUuYyBiL2FnZW50L2hlbHBlcnMvc2VyaWFsaXplLmMKaW5kZXggODkyZjliMy4uZWVjNjZiNCAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy9zZXJpYWxpemUuYworKysgYi9hZ2VudC9oZWxwZXJzL3NlcmlhbGl6ZS5jCkBAIC0xLDExICsxLDUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYyBiL2FnZW50L2hlbHBlcnMvc3Rhc2hfY2FjaGUuYwppbmRleCBlZmIxZWI0Li41MjUyY2IyIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3N0YXNoX2NhY2hlLmMKKysrIGIvYWdlbnQvaGVscGVycy9zdGFzaF9jYWNoZS5jCkBAIC0xLDE1ICsxLDEwIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKLSNpZiBIQVZFX1NUUklOR19ICi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KKwogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX3RvX25leHQuaD4KIAogZXh0ZXJuIE5ldHNubXBDYWNoZUxvYWQgX25ldHNubXBfc3Rhc2hfY2FjaGVfbG9hZDsKQEAgLTMyLDcgKzI3LDggQEAKICAgICBuZXRzbm1wX3N0YXNoX2NhY2hlX2luZm8gKmNpbmZvOwogCiAgICAgY2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfc3Rhc2hfY2FjaGVfaW5mbyk7Ci0gICAgY2luZm8tPmNhY2hlX2xlbmd0aCA9IDMwOworICAgIGlmIChjaW5mbyAhPSBOVUxMKQorICAgICAgICBjaW5mby0+Y2FjaGVfbGVuZ3RoID0gMzA7CiAgICAgcmV0dXJuIGNpbmZvOwogfQogCkBAIC0xNTUsNyArMTUxLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2RhdGEtPnZhbC5zdHJpbmcsIGNkYXRhLT52YWxfbGVuKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1PREVfR0VUTkVYVDoKQEAgLTE3OCw3ICsxNzMsNiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgYnJlYWs7CiAKICAgICBkZWZhdWx0OgpAQCAtMTg2LDcgKzE4MCw4IEBACiAgICAgICAgIHJldHVybiBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sIHJlcWluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzKTsKICAgICB9Ci0gICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsgICAgIC8qIHNob3VsZCBuZXZlciBnZXQgaGVyZSAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKIC8qKiB1cGRhdGVzIGEgZ2l2ZW4gY2FjaGUgZGVwZW5kaW5nIG9uIHdoZXRoZXIgaXQgbmVlZHMgdG8gb3Igbm90LgpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy9zdGFzaF90b19uZXh0LmMgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYwppbmRleCBhYWJhYWE4Li5mNjc5ZTA0IDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYworKysgYi9hZ2VudC9oZWxwZXJzL3N0YXNoX3RvX25leHQuYwpAQCAtMSwxNyArMSwxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCi0jaWYgSEFWRV9TVFJJTkdfSAotI2luY2x1ZGUgPHN0cmluZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxzdHJpbmdzLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfdG9fbmV4dC5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaD4KKwogLyoqIEBkZWZncm91cCBzdGFzaF90b19uZXh0IHN0YXNoX3RvX25leHQKICAqICBDb252ZXJ0IEdFVF9TVEFTSCByZXF1ZXN0cyBpbnRvIEdFVE5FWFQgcmVxdWVzdHMgZm9yIHRoZSBoYW5kbGVyLgogICogIFRoZSBwdXJwb3NlIG9mIHRoaXMgaGFuZGxlciBpcyB0byBjb252ZXJ0IGEgR0VUX1NUQVNIIGF1dG8tY2FjaGUgcmVxdWVzdApkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZS5jIGIvYWdlbnQvaGVscGVycy90YWJsZS5jCmluZGV4IDMyYTA4MDMuLjM3NGVmNDggMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGUuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlLmMKQEAgLTEyLDIwICsxMiwyNiBAQAogICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQogICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KICAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGUuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLQotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgogCiBzdGF0aWMgdm9pZCAgICAgdGFibGVfaGVscGVyX2NsZWFudXAobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCkBAIC0xMDgsMTAgKzExNCwyMiBAQAogbmV0c25tcF9yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZXEpCiB7Ci0gICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyKHRhYnJlcSkpOworICAgIGludCByYyA9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcih0YWJyZXEpKTsKKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gcmM7CisKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOwogfQogCitpbnQKK25ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQoreworICAgIC8qIExvY2F0ZSAidGhpcyIgcmVnaW5mbyAqLworICAgIC8qIFNOTVBfRlJFRShyZWdpbmZvLT5teXZvaWQpOyAqLworICAgIC8qIHJlZ2luZm8tPm15dm9pZCA9IE5VTEw7ICovCisgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl9oYW5kbGVyKHJlZ2luZm8pOworfQorCiAvKiogRXh0cmFjdHMgdGhlIHByb2Nlc3NlZCB0YWJsZSBpbmZvcm1hdGlvbiBmcm9tIGEgZ2l2ZW4gcmVxdWVzdC4KICAqICBDYWxsIHRoaXMgZnJvbSBzdWJoYW5kbGVycyBvbiBhIHJlcXVlc3QgdG8gZXh0cmFjdCB0aGUgcHJvY2Vzc2VkCiAgKiAgbmV0c25tcF9yZXF1ZXN0X2luZm8gaW5mb3JtYXRpb24uICBUaGUgcmVzdWx0aW5nIGluZm9ybWF0aW9uIGluY2x1ZGVzIHRoZQpAQCAtMjYwLDcgKzI3OCw3IEBACiAgICAgICAgICAgICAgICAgREVCVUdNU0dPSUQoKCJoZWxwZXI6dGFibGU6c2V0IiwgdmFyLT5uYW1lLCB2YXItPm5hbWVfbGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgb3V0X2xlbiA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHNwcmludF9yZWFsbG9jX2J5X3R5cGUoJmJ1ZiwgJmJ1Zl9sZW4sICZvdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciwgMCwgMCwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIsIE5VTEwsIE5VTEwsIE5VTEwpKSB7CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgiaGVscGVyOnRhYmxlOnNldCIsIiB0eXBlPSVkKCUwMngpLCB2YWx1ZT0lc1xuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dHlwZSwgdmFyLT50eXBlLCBidWYpKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzUyLDYgKzM3MCwxMSBAQAogICAgICAgICB0YmxfcmVxX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKICAgICAgICAgaWYgKE5VTEwgPT0gdGJsX3JlcV9pbmZvKSB7CiAgICAgICAgICAgICB0YmxfcmVxX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvKTsKKyAgICAgICAgICAgIGlmICh0YmxfcmVxX2luZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIHRhYmxlX2hlbHBlcl9jbGVhbnVwKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRibF9yZXFfaW5mby0+cmVnX2luZm8gPSB0YmxfaW5mbzsKICAgICAgICAgICAgIHRibF9yZXFfaW5mby0+aW5kZXhlcyA9IHNubXBfY2xvbmVfdmFyYmluZCh0YmxfaW5mby0+aW5kZXhlcyk7CiAgICAgICAgICAgICB0YmxfcmVxX2luZm8tPm51bWJlcl9pbmRleGVzID0gMDsgICAgICAgLyogbm9uZSB5ZXQgKi8KQEAgLTM3MSw3ICszOTQsNyBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIG9pZCBpcyBsb25nIGVub3VnaCB0byBjb250YWluIENPTFVNTiBpbmZvCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGU6Y29sIiwgIiAgaGF2ZSBhdCBsZWFzdCBhIGNvbHVtbiAoJWQpXG4iLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImhlbHBlcjp0YWJsZTpjb2wiLCAiICBoYXZlIGF0IGxlYXN0IGEgY29sdW1uICglbGQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT5uYW1lW29pZF9jb2x1bW5fcG9zXSkpOwogICAgICAgICAgICAgaWYgKHZhci0+bmFtZVtvaWRfY29sdW1uX3Bvc10gPCB0YmxfaW5mby0+bWluX2NvbHVtbikgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGU6Y29sIiwKQEAgLTQyNyw3ICs0NTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICBpZiAodGJsX3JlcV9pbmZvLT5jb2xudW0gIT0gdmFyLT5uYW1lW29pZF9jb2x1bW5fcG9zXSkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaGVscGVyOnRhYmxlOmNvbCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgd2hpY2ggZG9lc24ndCBtYXRjaCByZXEgJWQgLSB0cnVuY2F0aW5nIGluZGV4IGluZm9cbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgd2hpY2ggZG9lc24ndCBtYXRjaCByZXEgJWxkIC0gdHJ1bmNhdGluZyBpbmRleCBpbmZvXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWVbb2lkX2NvbHVtbl9wb3NdKSk7CiAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAqIGRpZmZlcmVudCBjb2x1bW4hIHRydW5jYXRlIHVzZWxlc3MgaW5kZXggaW5mbyAKQEAgLTQ0Nyw4ICs0NzAsOCBAQAogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIHRibF9yZXFfaW5mby0+aW5kZXhfb2lkX2xlbiA9CiAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZV9sZW5ndGggLSBvaWRfaW5kZXhfcG9zOwotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoZWxwZXI6dGFibGUiLCAiICAgIGhhdmUgJWQgYnl0ZXMgb2YgaW5kZXhcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImhlbHBlcjp0YWJsZSIsICIgICAgaGF2ZSAlbHUgYnl0ZXMgb2YgaW5kZXhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpdGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuKSk7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQodGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuIDwgTUFYX09JRF9MRU4pOwogICAgICAgICAgICAgICAgIG1lbWNweSh0YmxfcmVxX2luZm8tPmluZGV4X29pZCwgJnZhci0+bmFtZVtvaWRfaW5kZXhfcG9zXSwKICAgICAgICAgICAgICAgICAgICAgICAgdGJsX3JlcV9pbmZvLT5pbmRleF9vaWRfbGVuICogc2l6ZW9mKG9pZCkpOwpAQCAtNTY0LDcgKzU4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrLCB2YiA9IHZiLT5uZXh0X3ZhcmlhYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIG91dF9sZW4gPSAwOwogICAgICAgICAgICAgICAgICAgICBpZiAoc3ByaW50X3JlYWxsb2NfYnlfdHlwZSgmYnVmLCAmYnVmX2xlbiwgJm91dF9sZW4sIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZiLCAwLCAwLCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YiwgTlVMTCwgTlVMTCwgTlVMTCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgiaGVscGVyOnRhYmxlOnJlc3VsdHMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICBpbmRleDogdHlwZT0lZCglMDJ4KSwgdmFsdWU9JXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZiLT50eXBlLCB2Yi0+dHlwZSwgYnVmKSk7CkBAIC03MzMsMTAgKzc1NiwzNSBAQAogbmV0c25tcF9zcGFyc2VfdGFibGVfcmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFicmVxKQogewotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywKLSAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcihTUEFSU0VfVEFCTEVfSEFORExFUl9OQU1FLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYXJzZV90YWJsZV9oZWxwZXJfaGFuZGxlcikpOwotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgbmV0c25tcF9nZXRfdGFibGVfaGFuZGxlcih0YWJyZXEpKTsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyMSwgKmhhbmRsZXIyOworICAgIGludCByYzsKKworICAgIGhhbmRsZXIxID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcihTUEFSU0VfVEFCTEVfSEFORExFUl9OQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYXJzZV90YWJsZV9oZWxwZXJfaGFuZGxlcik7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcjEpCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgICBoYW5kbGVyMiA9IG5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIodGFicmVxKTsKKyAgICBpZiAoTlVMTCA9PSBoYW5kbGVyMiApIHsKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcjEpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyMSk7CisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyMSk7CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIyKTsKKyAgICAgICAgcmV0dXJuIHJjOworICAgIH0KKworICAgIHJjID0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyMik7CisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKiogaGFuZGxlcjEgaXMgaW4gcmVnaW5mby4uLiByZW1vdmUgYW5kIGZyZWU/PyAqLworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyMik7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICAvKiogYm90aCBoYW5kbGVycyBub3cgaW4gcmVnaW5mbywgc28gbm90aGluZyB0byBkbyBvbiBlcnJvciAqLwogICAgIHJldHVybiBuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIocmVnaW5mbyk7CiB9CiAKQEAgLTkyOSw2ICs5NzcsMjYgQEAKICAgICByZXR1cm4gMDsKIH0KIAordm9pZAorbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRyaSkKK3sKKyAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChOVUxMICE9IHRyaS0+aW5kZXhlcykKKyAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQodHJpLT5pbmRleGVzKTsKKworI2lmIDAKKyAgICAvKgorICAgICAqIHNpZ2guLi4gZXhhbXBsZSB1c2Ugb2YgdmFsaWRfY29sdW1ucyBwb2ludHMgdG8gc3RhdGljIG1lbW9yeSwKKyAgICAgKiBzbyBmcmVlaW5nIGl0IHdvdWxkIGJlIGJhZC4uLiB3ZSdsbCBqdXN0IGhhdmUgdG8gbGl2ZSB3aXRoIGFueQorICAgICAqIGxlYWtzLCBmb3Igbm93Li4uCisgICAgICovCisjZW5kaWYKKworICAgIGZyZWUodHJpKTsKK30KKwogLyoqIEB9ICovCiAKIC8qCkBAIC0xMDU0LDMwICsxMTIyLDE2IEBACiAgKgogICovCiB2b2lkCi0jaWYgSEFWRV9TVERBUkdfSAogbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGluZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCi0jZWxzZQotbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModmFfYWxpc3QpCi0gICAgIHZhX2RjbAotI2VuZGlmCiB7CiAgICAgdmFfbGlzdCAgICAgICAgIGRlYnVnYXJnczsKICAgICBpbnQgICAgICAgICAgICAgdHlwZTsKIAotI2lmIEhBVkVfU1REQVJHX0gKICAgICB2YV9zdGFydChkZWJ1Z2FyZ3MsIHRpbmZvKTsKLSNlbHNlCi0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGluZm87Ci0KLSAgICB2YV9zdGFydChkZWJ1Z2FyZ3MpOwotICAgIHRpbmZvID0gdmFfYXJnKGRlYnVnYXJncywgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqKTsKLSNlbmRpZgotCiAgICAgd2hpbGUgKCh0eXBlID0gdmFfYXJnKGRlYnVnYXJncywgaW50KSkgIT0gMCkgewogICAgICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXgodGluZm8sIHR5cGUpOwogICAgIH0KLQogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2FycmF5LmMKaW5kZXggMTliOWM1Yy4uYzdmNTJmOSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9hcnJheS5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfYXJyYXkuYwpAQCAtNSwxNyArNSwxOCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaD4KIApAQCAtNTY0LDYgKzU2NSw4IEBACiAgICAgICAgICAgICBERUJVR01TRygoInRhYmxlX2FycmF5Omdyb3VwIiwgIlxuIikpOwogICAgICAgICAgICAgZyA9IChuZXRzbm1wX3JlcXVlc3RfZ3JvdXAgKikgdG1wOwogICAgICAgICAgICAgaSA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9yZXF1ZXN0X2dyb3VwX2l0ZW0pOworICAgICAgICAgICAgaWYgKGkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpLT5yaSA9IGN1cnJlbnQ7CiAgICAgICAgICAgICBpLT50cmkgPSB0YmxyZXFfaW5mbzsKICAgICAgICAgICAgIGktPm5leHQgPSBnLT5saXN0OwpAQCAtNTc5LDYgKzU4MiwxMSBAQAogICAgICAgICBERUJVR01TRygoInRhYmxlX2FycmF5Omdyb3VwIiwgIlxuIikpOwogICAgICAgICBnID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3JlcXVlc3RfZ3JvdXApOwogICAgICAgICBpID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3JlcXVlc3RfZ3JvdXBfaXRlbSk7CisgICAgICAgIGlmIChpID09IE5VTEwgfHwgZyA9PSBOVUxMKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUoaSk7CisgICAgICAgICAgICBTTk1QX0ZSRUUoZyk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgZy0+bGlzdCA9IGk7CiAgICAgICAgIGctPnRhYmxlID0gdGFkLT50YWJsZTsKICAgICAgICAgaS0+cmkgPSBjdXJyZW50OwpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYyBiL2FnZW50L2hlbHBlcnMvdGFibGVfY29udGFpbmVyLmMKaW5kZXggZDA4YmZmMi4uODVjZGI0MSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9jb250YWluZXIuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2NvbnRhaW5lci5jCkBAIC01LDE3ICs1LDE4IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0Lmg+CiAKQEAgLTMxNSw2ICszMTYsMjQgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YWJyZWcpOwogfQogCitpbnQKK25ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbykKK3sKKyAgICBjb250YWluZXJfdGFibGVfZGF0YSAqdGFkOworCisgICAgaWYgKCFyZWdpbmZvKQorICAgICAgICByZXR1cm4gTUlCX1VOUkVHSVNUUkFUSU9OX0ZBSUxFRDsKKyAgICB0YWQgPSAoY29udGFpbmVyX3RhYmxlX2RhdGEgKikKKyAgICAgICAgbmV0c25tcF9maW5kX2hhbmRsZXJfZGF0YV9ieV9uYW1lKHJlZ2luZm8sICJ0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAodGFkKSB7CisgICAgICAgIENPTlRBSU5FUl9GUkVFKCB0YWQtPnRhYmxlICk7CisgICAgICAgIHRhZC0+dGFibGUgPSBOVUxMOworICAgICAgICBmcmVlKHRhZCk7CisgICAgICAgIHJlZ2luZm8tPmhhbmRsZXItPm15dm9pZCA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBuZXRzbm1wX3VucmVnaXN0ZXJfdGFibGUoIHJlZ2luZm8gKTsKK30KKwogLyoqIHJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwogbmV0c25tcF9jb250YWluZXIqCiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9jb250YWluZXJfZXh0cmFjdChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvdGFibGVfZGF0YS5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKaW5kZXggMzE3MzMxYS4uYzNhN2Y5ZSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKKysrIGIvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhLmMKQEAgLTEsMTYgKzEsMTcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaD4KIAogLyoqIEBkZWZncm91cCB0YWJsZV9kYXRhIHRhYmxlX2RhdGEKQEAgLTgwLDE2ICs4MSwxNiBAQAogICAgIGlmIChyb3ctPmluZGV4ZXMpIHsKICAgICAgICAgbmV3cm93LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKG5ld3Jvdy0+aW5kZXhlcyk7CiAgICAgICAgIGlmICghbmV3cm93LT5pbmRleGVzKSB7Ci0gICAgICAgICAgICBmcmVlIChuZXdyb3cpOworICAgICAgICAgICAgZnJlZShuZXdyb3cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAocm93LT5pbmRleF9vaWQpIHsKLSAgICAgICAgbmV3cm93LT5pbmRleF9vaWQgPSBuZXRzbm1wX21lbWR1cChyb3ctPmluZGV4X29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4X29pZF9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgIG5ld3Jvdy0+aW5kZXhfb2lkID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKHJvdy0+aW5kZXhfb2lkLCByb3ctPmluZGV4X29pZF9sZW4pOwogICAgICAgICBpZiAoIW5ld3Jvdy0+aW5kZXhfb2lkKSB7Ci0gICAgICAgICAgICBmcmVlIChuZXdyb3cpOworICAgICAgICAgICAgZnJlZShuZXdyb3cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9CkBAIC0yMjcsNyArMjI4LDcgQEAKIH0KIAogLyoqIHN3YXBzIG91dCBvcmlncm93IHdpdGggbmV3cm93LiAgVGhpcyBkb2VzICpub3QqIGRlbGV0ZS9mcmVlIGFueXRoaW5nISAqLwotTkVUU05NUF9JTkxJTkUgdm9pZAordm9pZAogbmV0c25tcF90YWJsZV9kYXRhX3JlcGxhY2Vfcm93KG5ldHNubXBfdGFibGVfZGF0YSAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yb3cgKm9yaWdyb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yb3cgKm5ld3JvdykKQEAgLTM0Miw4ICszNDMsOCBAQAogICAgIGlmIChvbGRfcm93LT5pbmRleGVzKQogICAgICAgICBuZXdfcm93LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKG9sZF9yb3ctPmluZGV4ZXMpOwogICAgIGlmIChvbGRfcm93LT5pbmRleF9vaWQpCi0gICAgICAgIG5ld19yb3ctPmluZGV4X29pZCA9IG5ldHNubXBfbWVtZHVwKG9sZF9yb3ctPmluZGV4X29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkX3Jvdy0+aW5kZXhfb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgbmV3X3Jvdy0+aW5kZXhfb2lkID0KKyAgICAgICAgICAgIHNubXBfZHVwbGljYXRlX29iamlkKG9sZF9yb3ctPmluZGV4X29pZCwgb2xkX3Jvdy0+aW5kZXhfb2lkX2xlbik7CiAgICAgLyogWFhYIC0gRG9lc24ndCBjb3B5IHRhYmxlLXNwZWNpZmljIHJvdyBzdHJ1Y3R1cmUgKi8KICAgICByZXR1cm4gMDsKIH0KQEAgLTQxNCw2ICs0MTUsMTMgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9kYXRhKHJlZ2luZm8sIHRhYmxlLCB0YWJsZV9pbmZvKTsKIH0KIAoraW50CituZXRzbm1wX3VucmVnaXN0ZXJfdGFibGVfZGF0YShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvKQoreworICAgIC8qIGZyZWUgdGFibGU7ICovCisgICAgcmV0dXJuIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShyZWdpbmZvKTsKK30KKwogLyoKICAqIFRoZSBoZWxwZXIgaGFuZGxlciB0aGF0IHRha2VzIGNhcmUgb2YgcGFzc2luZyBhIHNwZWNpZmljIHJvdyBvZgogICogZGF0YSBkb3duIHRvIHRoZSBsb3dlciBoYW5kbGVyKHMpLiAgSXQgc2V0cyByZXF1ZXN0LT5wcm9jZXNzZWQgaWYKQEAgLTY3OCw3ICs2ODYsNyBAQAogfQogCiAvKiogaW5zZXJ0cyBhIG5ld2x5IGNyZWF0ZWQgdGFibGVfZGF0YSByb3cgaW50byBhIHJlcXVlc3QgKi8KLU5FVFNOTVBfSU5MSU5FIHZvaWQKK3ZvaWQKIG5ldHNubXBfaW5zZXJ0X3RhYmxlX3JvdyhuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcm93KQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9kYXRhc2V0LmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYwppbmRleCBmOTJlM2UxLi4yM2UwZGViIDEwMDY0NAotLS0gYS9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2RhdGFzZXQuYwpAQCAtMSwxNCArMSwxNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogc3RhdGljIG5ldHNubXBfZGF0YV9saXN0ICphdXRvX3RhYmxlczsKIAogdHlwZWRlZiBzdHJ1Y3QgZGF0YV9zZXRfdGFibGVzX3MgewpAQCAtNzIsNzggKzc0LDYgQEAKICAqCiAgKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ICovCiAKLS8qKiBDcmVhdGUgYSBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0IHN0cnVjdHVyZSBnaXZlbiBhIHRhYmxlX2RhdGEgZGVmaW5pdGlvbiAqLwotbmV0c25tcF90YWJsZV9kYXRhX3NldCAqCi1uZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhX3NldChjb25zdCBjaGFyICp0YWJsZV9uYW1lKQotewotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCA9Ci0gICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9kYXRhX3NldCk7Ci0gICAgaWYgKCF0YWJsZV9zZXQpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHRhYmxlX3NldC0+dGFibGUgPSBuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhKHRhYmxlX25hbWUpOwotICAgIHJldHVybiB0YWJsZV9zZXQ7Ci19Ci0KLXZvaWQgbmV0c25tcF9kZWxldGVfdGFibGVfZGF0YV9zZXQobmV0c25tcF90YWJsZV9kYXRhX3NldCAqdGFibGVfc2V0KQotewotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqcHRyLCAqbmV4dDsKLSAgICBuZXRzbm1wX3RhYmxlX3JvdyAqcHJvdywgKnBuZXh0cm93OwotCi0gICAgZm9yIChwdHIgPSB0YWJsZV9zZXQtPmRlZmF1bHRfcm93OyBwdHI7IHB0ciA9IG5leHQpIHsKLSAgICAgICAgbmV4dCA9IHB0ci0+bmV4dDsKLSAgICAgICAgZnJlZShwdHIpOwotICAgIH0KLSAgICB0YWJsZV9zZXQtPmRlZmF1bHRfcm93ID0gTlVMTDsKLSAgICBmb3IgKHByb3cgPSB0YWJsZV9zZXQtPnRhYmxlLT5maXJzdF9yb3c7IHByb3c7IHByb3cgPSBwbmV4dHJvdykgewotICAgICAgICBwbmV4dHJvdyA9IHByb3ctPm5leHQ7Ci0gICAgICAgIG5ldHNubXBfdGFibGVfZGF0YXNldF9yZW1vdmVfYW5kX2RlbGV0ZV9yb3codGFibGVfc2V0LCBwcm93KTsKLSAgICB9Ci0gICAgdGFibGVfc2V0LT50YWJsZS0+Zmlyc3Rfcm93ID0gTlVMTDsKLSAgICBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3RhYmxlKHRhYmxlX3NldC0+dGFibGUpOwotICAgIGZyZWUodGFibGVfc2V0KTsKLX0KLQotLyoqIGNsb25lcyBhIGRhdGFzZXQgcm93LCBpbmNsdWRpbmcgYWxsIGRhdGEuICovCi1uZXRzbm1wX3RhYmxlX3JvdyAqCi1uZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2Nsb25lX3JvdyhuZXRzbm1wX3RhYmxlX3JvdyAqcm93KQotewotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqZGF0YSwgKipuZXdyb3dkYXRhOwotICAgIG5ldHNubXBfdGFibGVfcm93ICpuZXdyb3c7Ci0KLSAgICBpZiAoIXJvdykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBuZXdyb3cgPSBuZXRzbm1wX3RhYmxlX2RhdGFfY2xvbmVfcm93KHJvdyk7Ci0gICAgaWYgKCFuZXdyb3cpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZGF0YSA9IChuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKikgcm93LT5kYXRhOwotCi0gICAgaWYgKGRhdGEpIHsKLSAgICAgICAgZm9yIChuZXdyb3dkYXRhID0KLSAgICAgICAgICAgICAobmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlICoqKSAmKG5ld3Jvdy0+ZGF0YSk7IGRhdGE7Ci0gICAgICAgICAgICAgbmV3cm93ZGF0YSA9ICYoKCpuZXdyb3dkYXRhKS0+bmV4dCksIGRhdGEgPSBkYXRhLT5uZXh0KSB7Ci0KLSAgICAgICAgICAgICpuZXdyb3dkYXRhID0gbmV0c25tcF9tZW1kdXAoZGF0YSwKLSAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlKSk7Ci0gICAgICAgICAgICBpZiAoISpuZXdyb3dkYXRhKSB7Ci0gICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9yb3cobmV3cm93KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGRhdGEtPmRhdGEudm9pZHApIHsKLSAgICAgICAgICAgICAgICAoKm5ld3Jvd2RhdGEpLT5kYXRhLnZvaWRwID0gbmV0c25tcF9tZW1kdXAoZGF0YS0+ZGF0YS52b2lkcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZGF0YV9sZW4pOwotICAgICAgICAgICAgICAgIGlmICghKCpuZXdyb3dkYXRhKS0+ZGF0YS52b2lkcCkgewotICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZGVsZXRlX3JvdyhuZXdyb3cpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIG5ld3JvdzsKLX0KLQogLyoqIGRlbGV0ZXMgYSBzaW5nbGUgZGF0YXNldCB0YWJsZSBkYXRhLgogICogIHJldHVybnMgdGhlIChwb3NzaWJseSBzdGlsbCBnb29kKSBuZXh0IHBvaW50ZXIgb2YgdGhlIGRlbGV0ZWQgZGF0YSBvYmplY3QuCiAgKi8KQEAgLTIzMCw2ICsxNjAsNzggQEAKICAgICBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZGVsZXRlX2FsbF9kYXRhKGRhdGEpOwogfQogCisvKiogQ3JlYXRlIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBzdHJ1Y3R1cmUgZ2l2ZW4gYSB0YWJsZV9kYXRhIGRlZmluaXRpb24gKi8KK25ldHNubXBfdGFibGVfZGF0YV9zZXQgKgorbmV0c25tcF9jcmVhdGVfdGFibGVfZGF0YV9zZXQoY29uc3QgY2hhciAqdGFibGVfbmFtZSkKK3sKKyAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQgPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfZGF0YV9zZXQpOworICAgIGlmICghdGFibGVfc2V0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB0YWJsZV9zZXQtPnRhYmxlID0gbmV0c25tcF9jcmVhdGVfdGFibGVfZGF0YSh0YWJsZV9uYW1lKTsKKyAgICByZXR1cm4gdGFibGVfc2V0OworfQorCit2b2lkIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRhYmxlX3NldCkKK3sKKyAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKnB0ciwgKm5leHQ7CisgICAgbmV0c25tcF90YWJsZV9yb3cgKnByb3csICpwbmV4dHJvdzsKKworICAgIGZvciAocHRyID0gdGFibGVfc2V0LT5kZWZhdWx0X3JvdzsgcHRyOyBwdHIgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBwdHItPm5leHQ7CisgICAgICAgIGZyZWUocHRyKTsKKyAgICB9CisgICAgdGFibGVfc2V0LT5kZWZhdWx0X3JvdyA9IE5VTEw7CisgICAgZm9yIChwcm93ID0gdGFibGVfc2V0LT50YWJsZS0+Zmlyc3Rfcm93OyBwcm93OyBwcm93ID0gcG5leHRyb3cpIHsKKyAgICAgICAgcG5leHRyb3cgPSBwcm93LT5uZXh0OworICAgICAgICBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfcmVtb3ZlX2FuZF9kZWxldGVfcm93KHRhYmxlX3NldCwgcHJvdyk7CisgICAgfQorICAgIHRhYmxlX3NldC0+dGFibGUtPmZpcnN0X3JvdyA9IE5VTEw7CisgICAgbmV0c25tcF90YWJsZV9kYXRhX2RlbGV0ZV90YWJsZSh0YWJsZV9zZXQtPnRhYmxlKTsKKyAgICBmcmVlKHRhYmxlX3NldCk7Cit9CisKKy8qKiBjbG9uZXMgYSBkYXRhc2V0IHJvdywgaW5jbHVkaW5nIGFsbCBkYXRhLiAqLworbmV0c25tcF90YWJsZV9yb3cgKgorbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3cobmV0c25tcF90YWJsZV9yb3cgKnJvdykKK3sKKyAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2UgKmRhdGEsICoqbmV3cm93ZGF0YTsKKyAgICBuZXRzbm1wX3RhYmxlX3JvdyAqbmV3cm93OworCisgICAgaWYgKCFyb3cpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX2Nsb25lX3Jvdyhyb3cpOworICAgIGlmICghbmV3cm93KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGRhdGEgPSAobmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlICopIHJvdy0+ZGF0YTsKKworICAgIGlmIChkYXRhKSB7CisgICAgICAgIGZvciAobmV3cm93ZGF0YSA9CisgICAgICAgICAgICAgKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSAqKikgJihuZXdyb3ctPmRhdGEpOyBkYXRhOworICAgICAgICAgICAgIG5ld3Jvd2RhdGEgPSAmKCgqbmV3cm93ZGF0YSktPm5leHQpLCBkYXRhID0gZGF0YS0+bmV4dCkgeworCisgICAgICAgICAgICAqbmV3cm93ZGF0YSA9IG5ldHNubXBfbWVtZHVwKGRhdGEsCisgICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSkpOworICAgICAgICAgICAgaWYgKCEqbmV3cm93ZGF0YSkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfZGF0YXNldF9kZWxldGVfcm93KG5ld3Jvdyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkYXRhLT5kYXRhLnZvaWRwKSB7CisgICAgICAgICAgICAgICAgKCpuZXdyb3dkYXRhKS0+ZGF0YS52b2lkcCA9CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKGRhdGEtPmRhdGEudm9pZHAsIGRhdGEtPmRhdGFfbGVuKTsKKyAgICAgICAgICAgICAgICBpZiAoISgqbmV3cm93ZGF0YSktPmRhdGEudm9pZHApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9yb3cobmV3cm93KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBuZXdyb3c7Cit9CisKIC8qID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCiAgKiBEYXRhIFNldCBBUEk6IERlZmF1bHQgcm93IG9wZXJhdGlvbnMKQEAgLTI4OCw2ICsyOTAsOCBAQAogICAgIH0KIAogICAgIG5ld19jb2wgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZSk7CisgICAgaWYgKG5ld19jb2wgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIG5ld19jb2wtPnR5cGUgPSB0eXBlOwogICAgIG5ld19jb2wtPndyaXRhYmxlID0gd3JpdGFibGU7CiAgICAgbmV3X2NvbC0+Y29sdW1uID0gY29sdW1uOwpAQCAtMzI0LDEzICszMjgsNyBAQAogICogIHJlcGVhdGVkbHkgZm9yIHlvdS4KICAqLwogdm9pZAotI2lmIEhBVkVfU1REQVJHX0gKIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LCAuLi4pCi0jZWxzZQotbmV0c25tcF90YWJsZV9zZXRfbXVsdGlfYWRkX2RlZmF1bHRfcm93KHZhX2RjbAotICAgICkKLSAgICAgdmFfZGNsCi0jZW5kaWYKIHsKICAgICB2YV9saXN0ICAgICAgICAgZGVidWdhcmdzOwogICAgIHVuc2lnbmVkIGludCAgICBjb2x1bW47CkBAIC0zMzgsMTQgKzMzNiw3IEBACiAgICAgdm9pZCAgICAgICAgICAgKmRhdGE7CiAgICAgc2l6ZV90ICAgICAgICAgIGRhdGFfbGVuOwogCi0jaWYgSEFWRV9TVERBUkdfSAogICAgIHZhX3N0YXJ0KGRlYnVnYXJncywgdHNldCk7Ci0jZWxzZQotICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKnRzZXQ7Ci0KLSAgICB2YV9zdGFydChkZWJ1Z2FyZ3MpOwotICAgIHRzZXQgPSB2YV9hcmcoZGVidWdhcmdzLCBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICopOwotI2VuZGlmCiAKICAgICB3aGlsZSAoKGNvbHVtbiA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIHVuc2lnbmVkIGludCkpICE9IDApIHsKICAgICAgICAgdHlwZSA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIGludCk7CkBAIC00MDMsNiArMzk0LDggQEAKICAgICAgICAgICogYWxsb2NhdGUgdGhlIHRhYmxlIGlmIG9uZSB3YXNuJ3QgYWxsb2NhdGVkIAogICAgICAgICAgKi8KICAgICAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisgICAgICAgIGlmICh0YWJsZV9pbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgIH0KIAogICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8tPmluZGV4ZXMgJiYgZGF0YV9zZXQtPnRhYmxlLT5pbmRleGVzX3RlbXBsYXRlKSB7CkBAIC00NDYsMTEgKzQzOSwxNCBAQAogICAgIG5ldHNubXBfdGFibGVfcm93ICpuZXdyb3cgICA9IE5VTEw7CiAKICAgICBuZXdyb3dzdGFzaCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV3cm93X3N0YXNoKTsKLSAgICBuZXdyb3dzdGFzaC0+Y3JlYXRlZCA9IDE7Ci0gICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX3NldF9jcmVhdGVfcm93X2Zyb21fZGVmYXVsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgIChkYXRhdGFibGUtPmRlZmF1bHRfcm93KTsKLSAgICBuZXdyb3ctPmluZGV4ZXMgPSBzbm1wX2Nsb25lX3ZhcmJpbmQodGFibGVfaW5mby0+aW5kZXhlcyk7Ci0gICAgbmV3cm93c3Rhc2gtPm5ld3JvdyA9IG5ld3JvdzsKKworICAgIGlmIChuZXdyb3dzdGFzaCAhPSBOVUxMKSB7CisgICAgICAgIG5ld3Jvd3N0YXNoLT5jcmVhdGVkID0gMTsKKyAgICAgICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX3NldF9jcmVhdGVfcm93X2Zyb21fZGVmYXVsdHMKKyAgICAgICAgICAgIChkYXRhdGFibGUtPmRlZmF1bHRfcm93KTsKKyAgICAgICAgbmV3cm93LT5pbmRleGVzID0gc25tcF9jbG9uZV92YXJiaW5kKHRhYmxlX2luZm8tPmluZGV4ZXMpOworICAgICAgICBuZXdyb3dzdGFzaC0+bmV3cm93ID0gbmV3cm93OworICAgIH0KIAogICAgIHJldHVybiBuZXdyb3dzdGFzaDsKIH0KQEAgLTQ2OSw4ICs0NjUsNiBAQAogICAgIG5ldHNubXBfdGFibGVfcm93ICpyb3csICpuZXdyb3cgPSBOVUxMOwogICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OwotICAgIG9pZCAgICAgICAgICAgICpzdWZmaXg7Ci0gICAgc2l6ZV90ICAgICAgICAgIHN1ZmZpeF9sZW47CiAgICAgbmV0c25tcF9vaWRfc3Rhc2hfbm9kZSAqKnN0YXNocCA9IE5VTEw7CiAKICAgICBpZiAoIWhhbmRsZXIpCkBAIC00ODAsNiArNDc0LDExIEBACiAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKmRhdGF0YWJsZSA9CiAgICAgICAgICAgICAobmV0c25tcF90YWJsZV9kYXRhX3NldCAqKSBoYW5kbGVyLT5teXZvaWQ7CisgICAgICAgIGNvbnN0IG9pZCAqIGNvbnN0IHN1ZmZpeCA9CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyOworICAgICAgICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtIChyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworCiAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCiAgICAgICAgICAgICBjb250aW51ZTsKIApAQCAtNDg4LDkgKzQ4Nyw2IEBACiAgICAgICAgICAqLwogICAgICAgICByb3cgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfcm93KHJlcXVlc3QpOwogICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7Ci0gICAgICAgIHN1ZmZpeCA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDI7Ci0gICAgICAgIHN1ZmZpeF9sZW4gPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtCi0gICAgICAgICAgICAocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyKTsKIAogICAgICAgICBpZiAoTU9ERV9JU19TRVQocmVxaW5mby0+bW9kZSkpIHsKIApAQCAtNTU3LDYgKzU1MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgKiBleGlzdGluZyByb3cgdGhhdCBuZWVkcyB0byBiZSBtb2RpZmllZCAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIG5ld3Jvd3N0YXNoID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXdyb3dfc3Rhc2gpOworICAgICAgICAgICAgICAgICAgICBpZiAobmV3cm93c3Rhc2ggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIpOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgbmV3cm93ID0gbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3cocm93KTsKICAgICAgICAgICAgICAgICAgICAgbmV3cm93c3Rhc2gtPm5ld3JvdyA9IG5ld3JvdzsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDQ0LDcgKzEwNDUsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgREVCVUdNU0dUTCgoInRhYmxlX3NldF9hZGRfdGFibGUiLAotICAgICAgICAgICAgICAgICAgICAiYWRkaW5nIGNvbHVtbiAlcyglZCkgb2YgdHlwZSAlZCAoYWNjZXNzICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgImFkZGluZyBjb2x1bW4gJXMoJWxkKSBvZiB0eXBlICVkIChhY2Nlc3MgJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICB0cC0+bGFiZWwsIHRwLT5zdWJpZCwgdHlwZSwgdHAtPmFjY2VzcykpOwogCiAgICAgICAgIHN3aXRjaCAodHAtPmFjY2VzcykgewpAQCAtMTA1Nyw3ICsxMDU4LDcgQEAKICAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCiAgICAgICAgIGNhc2UgTUlCX0FDQ0VTU19SRUFET05MWToKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZV9zZXRfYWRkX3RhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhZGRpbmcgY29sdW1uICVkIG9mIHR5cGUgJWRcbiIsIHRwLT5zdWJpZCwgdHlwZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgImFkZGluZyBjb2x1bW4gJWxkIG9mIHR5cGUgJWRcbiIsIHRwLT5zdWJpZCwgdHlwZSkpOwogICAgICAgICAgICAgbmV0c25tcF90YWJsZV9zZXRfYWRkX2RlZmF1bHRfcm93KHRhYmxlX3NldCwgdHAtPnN1YmlkLCB0eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbndyaXRlLCBOVUxMLCAwKTsKICAgICAgICAgICAgIG1pbmNvbCA9IFNOTVBfTUlOKG1pbmNvbCwgdHAtPnN1YmlkKTsKQEAgLTEzMTEsMjUgKzEzMTIsMTMgQEAKIC8qKiBhZGRzIG11bHRpcGxlIGluZGV4ZXMgdG8gYSB0YWJsZV9kYXRhc2V0IGhlbHBlciBvYmplY3QuCiAgKiAgVG8gZW5kIHRoZSBsaXN0LCB1c2UgYSAwIGFmdGVyIHRoZSBsaXN0IG9mIEFTTiBpbmRleCB0eXBlcy4gKi8KIHZvaWQKLSNpZiBIQVZFX1NUREFSR19ICiBuZXRzbm1wX3RhYmxlX3NldF9hZGRfaW5kZXhlcyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKQotI2Vsc2UKLW5ldHNubXBfdGFibGVfc2V0X2FkZF9pbmRleGVzKHZhX2FsaXN0KQotICAgICB2YV9kY2wKLSNlbmRpZgogewogICAgIHZhX2xpc3QgICAgICAgICBkZWJ1Z2FyZ3M7CiAgICAgaW50ICAgICAgICAgICAgIHR5cGU7CiAKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdmFfc3RhcnQoZGVidWdhcmdzLCB0c2V0KTsKLSNlbHNlCi0gICAgbmV0c25tcF90YWJsZV9kYXRhX3NldCAqdHNldDsKLQotICAgIHZhX3N0YXJ0KGRlYnVnYXJncyk7Ci0gICAgdHNldCA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgKik7Ci0jZW5kaWYKIAogICAgIGlmICh0c2V0KQogICAgICAgICB3aGlsZSAoKHR5cGUgPSB2YV9hcmcoZGVidWdhcmdzLCBpbnQpKSAhPSAwKQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jIGIvYWdlbnQvaGVscGVycy90YWJsZV9pdGVyYXRvci5jCmluZGV4IGU3NzQyZWQuLmJjY2E3OTcgMTAwNjQ0Ci0tLSBhL2FnZW50L2hlbHBlcnMvdGFibGVfaXRlcmF0b3IuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX2l0ZXJhdG9yLmMKQEAgLTg0LDE4ICs4NCwxOSBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oPgorCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2Vsc2UKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KLQogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oPgogCiAvKiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC0zNDUsNiArMzQ2LDggQEAKICAgICAvKiBubyBleGlzdGluZyBjYWNoZWQgc3RhdGUuICBtYWtlIGEgbmV3IG9uZS4gKi8KICAgICBpZiAoIXRpX2luZm8pIHsKICAgICAgICAgdGlfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYodGlfY2FjaGVfaW5mbyk7CisgICAgICAgIGlmICh0aV9pbmZvID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUSV9SRVFVRVNUX0NBQ0hFLApAQCAtNDA4LDcgKzQxMSw3IEBACiAgICAgCiAgICAgaWluZm8gPSAobmV0c25tcF9pdGVyYXRvcl9pbmZvICopIGhhbmRsZXItPm15dm9pZDsKICAgICBpZiAoIWlpbmZvIHx8ICFyZWdpbmZvIHx8ICFyZXFpbmZvKQotICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAKICAgICB0YmxfaW5mbyA9IGlpbmZvLT50YWJsZV9yZWdpbmZvOwogCkBAIC00MzcsNiArNDQwLDggQEAKIAogICAgICAgICAvKiBYWFg6IG1vdmUgdGhpcyBtYWxsb2MgdG8gc3Rhc2hfY2FjaGUgaGFuZGxlcj8gKi8KICAgICAgICAgcmVxdG1wID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3JlcXVlc3RfaW5mbyk7CisgICAgICAgIGlmIChyZXF0bXAgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIHJlcXRtcC0+c3VidHJlZSA9IHJlcXVlc3RzLT5zdWJ0cmVlOwogICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOwogICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF0bXAsCkBAIC00NTMsNiArNDU4LDE0IEBACiAgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKHRhYmxlX2luZm8gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ2xlYW51cCAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQoZnJlZV90aGlzX2luZGV4X3NlYXJjaCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0YWJsZV9pbmZvLT5jb2xudW0gPCB0YmxfaW5mby0+bWluX2NvbHVtbiAtIDEpIHsKICAgICAgICAgICAgICAgICAvKiBYWFg6IG9wdGltaXplIGJldHRlciB0aGFuIHRoaXMgKi8KICAgICAgICAgICAgICAgICAvKiBmb3Igbm93LCBqdXN0IGluY3JlYXNlIHRvIGNvbG51bS0xICovCkBAIC00NjcsNiArNDgwLDE0IEBACiAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdCwgVElfUkVRVUVTVF9DQUNIRSk7CiAgICAgICAgICAgICBpZiAoIXRpX2luZm8pIHsKICAgICAgICAgICAgICAgICB0aV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRih0aV9jYWNoZV9pbmZvKTsKKyAgICAgICAgICAgICAgICBpZiAodGlfaW5mbyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIENsZWFudXAgCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKGZyZWVfdGhpc19pbmRleF9zZWFyY2gpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChUSV9SRVFVRVNUX0NBQ0hFLApAQCAtNTU3LDYgKzU3OCwxNiBAQAogCiAgICAgICAgICAgICAgICAgICAgIC8qIFhYWDogc3RvcmUgaW4gYW4gYXJyYXkgZm9yIGZhc3RlciByZXRyaXZhbCAqLwogICAgICAgICAgICAgICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YWJsZV9pbmZvID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBDbGVhbnVwIAorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChmcmVlX3RoaXNfaW5kZXhfc2VhcmNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0cyhyZXF0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9GUkVFKHJlcXRtcCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGNvbG9pZFtyZWdpbmZvLT5yb290b2lkX2xlbiArIDFdID0gdGFibGVfaW5mby0+Y29sbnVtOwogCiAgICAgICAgICAgICAgICAgICAgIHRpX2luZm8gPQpAQCAtNTcxLDExICs2MDIsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKG15bmFtZSwgbXluYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBrZWVwIHRoaXMgKi8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX3JlbWVtYmVyKHJlcXVlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWUsIG15bmFtZV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19kYXRhX2NvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19sb29wX2NvbnRleHQsIGlpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBrZWVwIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobmV0c25tcF9pdGVyYXRvcl9yZW1lbWJlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG15bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteW5hbWVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2RhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19sb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWluZm8pID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ2xlYW51cCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmVlX3RoaXNfaW5kZXhfc2VhcmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0cyhyZXF0bXApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUocmVxdG1wKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9jb3VudC0tOyAgIC8qIE9uZSBsZXNzIHRvIGxvb2sgZm9yICovCiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpaW5mby0+ZnJlZV9kYXRhX2NvbnRleHQgJiYgY2FsbGJhY2tfZGF0YV9jb250ZXh0KSB7CkBAIC02MTIsNiArNjU3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfaW5mby0+Y29sbnVtID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YiA9IHJlcXRtcC0+cmVxdWVzdHZiID0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YiA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIENsZWFudXAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZyZWVfdGhpc19pbmRleF9zZWFyY2gpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2Yi0+dHlwZSA9IEFTTl9OVUxMOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl9vYmppZCh2YiwgbXluYW1lLCBteW5hbWVfbGVuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhbGxfbmV4dF9oYW5kbGVyKGhhbmRsZXIsIHJlZ2luZm8sCkBAIC02MzMsMTEgKzY4NywyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ldHNubXBfY2hlY2tfZ2V0bmV4dF9yZXBseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0LCBjb2xvaWQsIGNvbG9pZF9sZW4sIGluZGV4X3NlYXJjaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRpX2luZm8tPnJlc3VsdHMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9yZW1lbWJlcihyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlfaW5mby0+cmVzdWx0cy0+bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpX2luZm8tPnJlc3VsdHMtPm5hbWVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfZGF0YV9jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfbG9vcF9jb250ZXh0LCBpaW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5ldHNubXBfaXRlcmF0b3JfcmVtZW1iZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aV9pbmZvLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpX2luZm8tPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdHMtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX2RhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja19sb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWluZm8pID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogQ2xlYW51cCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmVlX3RoaXNfaW5kZXhfc2VhcmNoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJlZV90aGlzX2luZGV4X3NlYXJjaCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogIElmIHdlJ3ZlIGJlZW4gdG9sZCB0aGF0IHRoZSByb3dzIGFyZSBzb3J0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICB0aGVuIHRoZSBmaXJzdCB2YWxpZCBvbmUgd2UgZmluZApAQCAtOTQ1LDcgKzEwMTEsNyBAQAogCiAgICAgdnAxID0gc25tcF9jbG9uZV92YXJiaW5kKGlpbmZvLT5pbmRleGVzKTsKICAgICB2cDIgPSBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQoICZjdHgxLCAmY3R4MiwgdnAxLCBpaW5mbyApOwotICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICV4ICV4ICV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICVwICVwICVwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyKSk7CiAKICAgICAvKiBYWFggLSBmcmVlIGNvbnRleHQgPyAqLwpAQCAtOTY0LDcgKzEwMzAsNyBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICB2cDIgPSBpaW5mby0+Z2V0X25leHRfZGF0YV9wb2ludCggJmN0eDEsICZjdHgyLCB2cDIsIGlpbmZvICk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAibmV4dCBEUDogJXggJXggJXhcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAibmV4dCBEUDogJXAgJXAgJXBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyKSk7CiAgICAgICAgIC8qIFhYWCAtIGZyZWUgY29udGV4dCA/ICovCiAgICAgfQpAQCAtOTk0LDcgKzEwNjAsNyBAQAogCiAgICAgdnAxID0gc25tcF9jbG9uZV92YXJiaW5kKGlpbmZvLT5pbmRleGVzKTsKICAgICB2cDIgPSBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQoICZjdHgxLCAmY3R4MiwgdnAxLCBpaW5mbyApOwotICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICV4ICV4ICV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpnZXQiLCAiZmlyc3QgRFA6ICVwICVwICVwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyKSk7CiAKICAgICBpZiAoICFpbnN0YW5jZSB8fCAhbGVuICkgewpAQCAtMTAzMSw3ICsxMDk3LDcgQEAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgdnAyID0gaWluZm8tPmdldF9uZXh0X2RhdGFfcG9pbnQoICZjdHgxLCAmY3R4MiwgdnAyLCBpaW5mbyApOwotICAgICAgICBERUJVR01TR1RMKCgidGFibGU6aXRlcmF0b3I6Z2V0IiwgIm5leHQgRFA6ICV4ICV4ICV4XG4iLAorICAgICAgICBERUJVR01TR1RMKCgidGFibGU6aXRlcmF0b3I6Z2V0IiwgIm5leHQgRFA6ICVwICVwICVwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDEsIGN0eDIsIHZwMikpOwogICAgICAgICAvKiBYWFggLSBmcmVlIGNvbnRleHQgPyAqLwogICAgIH0KQEAgLTEwNjAsNyArMTEyNiw3IEBACiAgICAgICAgIHJldHVybiAwOwogICAgIH0KICAgICAKLSAgICBERUJVR01TR1RMKCgidGFibGU6aXRlcmF0b3I6Y291bnQiLCAiZmlyc3QgRFA6ICV4ICV4ICV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpjb3VudCIsICJmaXJzdCBEUDogJXAgJXAgJXBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN0eDEsIGN0eDIsIHZwMikpOwogCiAgICAgLyogWFhYIC0gZnJlZSBjb250ZXh0ID8gKi8KQEAgLTEwNjgsNyArMTEzNCw3IEBACiAgICAgd2hpbGUgKHZwMikgewogICAgICAgICBpKys7CiAgICAgICAgIHZwMiA9IGlpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50KCAmY3R4MSwgJmN0eDIsIHZwMiwgaWluZm8gKTsKLSAgICAgICAgREVCVUdNU0dUTCgoInRhYmxlOml0ZXJhdG9yOmNvdW50IiwgIm5leHQgRFA6ICV4ICV4ICV4ICglZClcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJ0YWJsZTppdGVyYXRvcjpjb3VudCIsICJuZXh0IERQOiAlcCAlcCAlcCAoJWQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R4MSwgY3R4MiwgdnAyLCBpKSk7CiAgICAgICAgIC8qIFhYWCAtIGZyZWUgY29udGV4dCA/ICovCiAgICAgfQpkaWZmIC0tZ2l0IGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYyBiL2FnZW50L2hlbHBlcnMvdGFibGVfcm93LmMKaW5kZXggN2M4YTRjNC4uYmJjNDg0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV9yb3cuYworKysgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3Jvdy5jCkBAIC0xMzYsNyArMTM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICBNQVhfT0lEX0xFTi1yb3dfb2lkX2xlbiwgJmxlbiwgTlVMTCwgMCwgaW5kZXgpOwogICAgIHJvd19vaWRfbGVuICs9IGxlbjsKICAgICBmcmVlKHJlZ2luZm8tPnJvb3RvaWQpOwotICAgIHJlZ2luZm8tPnJvb3RvaWQgPSBuZXRzbm1wX21lbWR1cChyb3dfb2lkLCByb3dfb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKKyAgICByZWdpbmZvLT5yb290b2lkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQocm93X29pZCwgcm93X29pZF9sZW4pOwogICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuID0gcm93X29pZF9sZW47CiAKICAgICAgCmRpZmYgLS1naXQgYS9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMgYi9hZ2VudC9oZWxwZXJzL3RhYmxlX3RkYXRhLmMKaW5kZXggNDZkM2UxOC4uYTU3ZTAwYyAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy90YWJsZV90ZGF0YS5jCisrKyBiL2FnZW50L2hlbHBlcnMvdGFibGVfdGRhdGEuYwpAQCAtMSwxNiArMSwxNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaD4KKwogI2lmIEhBVkVfU1RSSU5HX0gKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNlbHNlCiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZS5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5Lmg+CiAKQEAgLTEwOCw4ICsxMDksOCBAQAogICAgIH0KIAogICAgIGlmIChyb3ctPm9pZF9pbmRleC5vaWRzKSB7Ci0gICAgICAgIG5ld3Jvdy0+b2lkX2luZGV4Lm9pZHMgPSBuZXRzbm1wX21lbWR1cChyb3ctPm9pZF9pbmRleC5vaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+b2lkX2luZGV4LmxlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgbmV3cm93LT5vaWRfaW5kZXgub2lkcyA9CisgICAgICAgICAgICBzbm1wX2R1cGxpY2F0ZV9vYmppZChyb3ctPm9pZF9pbmRleC5vaWRzLCByb3ctPm9pZF9pbmRleC5sZW4pOwogICAgICAgICBpZiAoIW5ld3Jvdy0+b2lkX2luZGV4Lm9pZHMpIHsKICAgICAgICAgICAgIGlmIChuZXdyb3ctPmluZGV4ZXMpCiAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQobmV3cm93LT5pbmRleGVzKTsKQEAgLTEzOCw4ICsxMzksOCBAQAogICAgIH0KIAogICAgIGlmIChzcmNfcm93LT5vaWRfaW5kZXgub2lkcykgewotICAgICAgICBkc3Rfcm93LT5vaWRfaW5kZXgub2lkcyA9IG5ldHNubXBfbWVtZHVwKHNyY19yb3ctPm9pZF9pbmRleC5vaWRzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjX3Jvdy0+b2lkX2luZGV4LmxlbiAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgZHN0X3Jvdy0+b2lkX2luZGV4Lm9pZHMgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZChzcmNfcm93LT5vaWRfaW5kZXgub2lkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfcm93LT5vaWRfaW5kZXgubGVuKTsKICAgICAgICAgaWYgKCFkc3Rfcm93LT5vaWRfaW5kZXgub2lkcykKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0yMTQsNyArMjE1LDcgQEAKICAgICAgKiBhZGQgdGhpcyByb3cgdG8gdGhlIHN0b3JlZCB0YWJsZQogICAgICAqLwogICAgIENPTlRBSU5FUl9JTlNFUlQoIHRhYmxlLT5jb250YWluZXIsIHJvdyApOwotICAgIERFQlVHTVNHVEwoKCJ0ZGF0YV9hZGRfcm93IiwgImFkZGVkIHJvdyAoJXgpXG4iLCByb3cpKTsKKyAgICBERUJVR01TR1RMKCgidGRhdGFfYWRkX3JvdyIsICJhZGRlZCByb3cgKCVwKVxuIiwgcm93KSk7CiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQpAQCAtMzU0LDYgKzM1NSwxMyBAQAogICAgICAgICAgICAgICAgICAgdGFibGUtPmNvbnRhaW5lciwgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKIH0KIAoraW50CituZXRzbm1wX3RkYXRhX3VucmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbykKK3sKKyAgICAvKiBmcmVlIHRhYmxlOyAqLworICAgIHJldHVybiBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV91bnJlZ2lzdGVyKHJlZ2luZm8pOworfQorCiAvKiogZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlICovCiBuZXRzbm1wX3RkYXRhICoKIG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZShuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdCkKZGlmZiAtLWdpdCBhL2FnZW50L2hlbHBlcnMvd2F0Y2hlci5jIGIvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKaW5kZXggOWNiYjRkMy4uOGVmNDU2YSAxMDA2NDQKLS0tIGEvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKKysrIGIvYWdlbnQvaGVscGVycy93YXRjaGVyLmMKQEAgLTEsMTkgKzEsMTUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC93YXRjaGVyLmg+CisKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3NjYWxhci5oPgogCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKIC8qKiBAZGVmZ3JvdXAgd2F0Y2hlciB3YXRjaGVyCiAgKiAgV2F0Y2ggYSBzcGVjaWZpZWQgdmFyaWFibGUgYW5kIHByb2Nlc3MgaXQgYXMgYW4gaW5zdGFuY2Ugb3Igc2NhbGFyIG9iamVjdAogICogIEBpbmdyb3VwIGxlYWYKQEAgLTMzLDE5ICsyOSw0NyBAQAogfQogCiBuZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNihuZXRzbm1wX3dhdGNoZXJfaW5mbyAqd2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIHNpemVfdCBtYXhfc2l6ZSwgc2l6ZV90KiBzaXplX3ApCit7CisgICAgd2luZm8tPmRhdGEgPSBkYXRhOworICAgIHdpbmZvLT5kYXRhX3NpemUgPSBzaXplOworICAgIHdpbmZvLT5tYXhfc2l6ZSA9IG1heF9zaXplOworICAgIHdpbmZvLT50eXBlID0gdHlwZTsKKyAgICB3aW5mby0+ZmxhZ3MgPSBmbGFnczsKKyAgICB3aW5mby0+ZGF0YV9zaXplX3AgPSBzaXplX3A7CisgICAgcmV0dXJuIHdpbmZvOworfQorCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82KHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLCBzaXplX3QgbWF4X3NpemUsIHNpemVfdCogc2l6ZV9wKQoreworICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICp3aW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF93YXRjaGVyX2luZm8pOworICAgIGlmICh3aW5mbykKKyAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbzYod2luZm8sIGRhdGEsIHNpemUsIHR5cGUsIGZsYWdzLCBtYXhfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV9wKTsKKyAgICByZXR1cm4gd2luZm87Cit9CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfaW5pdF93YXRjaGVyX2luZm8obmV0c25tcF93YXRjaGVyX2luZm8gKndpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsIGludCBmbGFncykKK3sKKyAgcmV0dXJuIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm82KHdpbmZvLCBkYXRhLCBzaXplLAorCQkJCSAgICB0eXBlLCAoZmxhZ3MgPyBmbGFncyA6IFdBVENIRVJfRklYRURfU0laRSksCisJCQkJICAgIHNpemUsICAvKiBQcm9iYWJseSB3cm9uZyBmb3Igbm9uLWZpeGVkCisJCQkJCSAgICAqIHNpemUgZGF0YSAqLworCQkJCSAgICBOVUxMKTsKK30KKworbmV0c25tcF93YXRjaGVyX2luZm8gKgogbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwgaW50IGZsYWdzKQogewogICAgIG5ldHNubXBfd2F0Y2hlcl9pbmZvICp3aW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF93YXRjaGVyX2luZm8pOwotCi0gICAgd2luZm8tPmRhdGEgICAgICA9IGRhdGE7Ci0gICAgd2luZm8tPmRhdGFfc2l6ZSA9IHNpemU7Ci0gICAgd2luZm8tPm1heF9zaXplICA9IHNpemU7CS8qIFByb2JhYmx5IHdyb25nIGZvciBub24tZml4ZWQgc2l6ZSBkYXRhICovCi0gICAgd2luZm8tPnR5cGUgICAgICA9IHR5cGU7Ci0gICAgaWYgKGZsYWdzKQotICAgICAgICB3aW5mby0+ZmxhZ3MgPSBmbGFnczsKLSAgICBlbHNlCi0gICAgICAgIHdpbmZvLT5mbGFncyA9IFdBVENIRVJfRklYRURfU0laRTsKLQorICAgIGlmICh3aW5mbykKKyAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbyh3aW5mbywgZGF0YSwgc2l6ZSwgdHlwZSwgZmxhZ3MpOwogICAgIHJldHVybiB3aW5mbzsKIH0KIApAQCAtNzUsNyArOTksNTkgQEAKICAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIocmVnaW5mbyk7CiB9CiAKKy8qKiBAY29uZCAqLwogCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgc2l6ZV90CitnZXRfZGF0YV9zaXplKGNvbnN0IG5ldHNubXBfd2F0Y2hlcl9pbmZvKiB3aW5mbykKK3sKKyAgICBpZiAod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9TSVpFX1NUUkxFTikKKyAgICAgICAgcmV0dXJuIHN0cmxlbigoY29uc3QgY2hhciopd2luZm8tPmRhdGEpOworICAgIGVsc2UgeworICAgICAgICBzaXplX3QgcmVzOworICAgICAgICBpZiAod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9TSVpFX0lTX1BUUikKKyAgICAgICAgICAgIHJlcyA9ICp3aW5mby0+ZGF0YV9zaXplX3A7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlcyA9IHdpbmZvLT5kYXRhX3NpemU7CisgICAgICAgIGlmICh3aW5mby0+ZmxhZ3MgJiBXQVRDSEVSX1NJWkVfVU5JVF9PSURTKQorICAgICAgICAgIHJlcyAqPSBzaXplb2Yob2lkKTsKKyAgICAgICAgcmV0dXJuIHJlczsKKyAgICB9Cit9CisKK05FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCitzZXRfZGF0YShuZXRzbm1wX3dhdGNoZXJfaW5mbyogd2luZm8sIHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIG1lbWNweSh3aW5mby0+ZGF0YSwgZGF0YSwgc2l6ZSk7CisgICAgaWYgKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfU0laRV9TVFJMRU4pCisgICAgICAgICgoY2hhciopd2luZm8tPmRhdGEpW3NpemVdID0gJ1wwJzsKKyAgICBlbHNlIHsKKyAgICAgICAgaWYgKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfU0laRV9VTklUX09JRFMpCisgICAgICAgICAgc2l6ZSAvPSBzaXplb2Yob2lkKTsKKyAgICAgICAgaWYgKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfU0laRV9JU19QVFIpCisgICAgICAgICAgICAqd2luZm8tPmRhdGFfc2l6ZV9wID0gc2l6ZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2luZm8tPmRhdGFfc2l6ZSA9IHNpemU7CisgICAgfQorfQorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgc2l6ZV90IHNpemU7CisgICAgY2hhciBkYXRhWzFdOworfSBuZXRzbm1wX3dhdGNoZXJfY2FjaGU7CisKK05FVFNOTVBfU1RBVElDX0lOTElORSBuZXRzbm1wX3dhdGNoZXJfY2FjaGUqCituZXRzbm1wX3dhdGNoZXJfY2FjaGVfY3JlYXRlKGNvbnN0IHZvaWQqIGRhdGEsIHNpemVfdCBzaXplKQoreworICAgIG5ldHNubXBfd2F0Y2hlcl9jYWNoZSAqcmVzID0KKyAgICAgICAgbWFsbG9jKHNpemVvZihuZXRzbm1wX3dhdGNoZXJfY2FjaGUpICsgc2l6ZSAtIDEpOworICAgIGlmIChyZXMpIHsKKyAgICAgICAgcmVzLT5zaXplID0gc2l6ZTsKKyAgICAgICAgbWVtY3B5KHJlcy0+ZGF0YSwgZGF0YSwgc2l6ZSk7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKKy8qKiBAZW5kY29uZCAqLwogCiBpbnQKIG5ldHNubXBfd2F0Y2hlcl9oZWxwZXJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLApAQCAtODMsOCArMTU5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCiB7Ci0gICAgbmV0c25tcF93YXRjaGVyX2luZm8gKndpbmZvID0gKG5ldHNubXBfd2F0Y2hlcl9pbmZvICopIGhhbmRsZXItPm15dm9pZDsKLSAgICB1X2NoYXIgICAgICAgICAgICAgICpvbGRfZGF0YTsKKyAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgKndpbmZvID0gKG5ldHNubXBfd2F0Y2hlcl9pbmZvICopIGhhbmRsZXItPm15dm9pZDsKKyAgICBuZXRzbm1wX3dhdGNoZXJfY2FjaGUgKm9sZF9kYXRhOwogCiAgICAgREVCVUdNU0dUTCgoImhlbHBlcjp3YXRjaGVyIiwgIkdvdCByZXF1ZXN0OiAgJWRcbiIsIHJlcWluZm8tPm1vZGUpKTsKICAgICBERUJVR01TR1RMKCggImhlbHBlcjp3YXRjaGVyIiwgIiAgb2lkOiIpKTsKQEAgLTEwMCw3ICsxNzYsNyBAQAogICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmZvLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZm8tPmRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aW5mby0+ZGF0YV9zaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9kYXRhX3NpemUod2luZm8pKTsKICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgLyoKQEAgLTEwOCwxOCArMTg0LDE5IEBACiAgICAgICAgICAqLwogICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CiAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlICE9IHdpbmZvLT50eXBlKSB7Ci0gICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9XUk9OR1RZUEUpOworICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfV1JPTkdUWVBFKTsKICAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCgod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9NQVhfU0laRSkgJiYKLSAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPiAgd2luZm8tPm1heF9zaXplKSB8fAorICAgICAgICB9IGVsc2UgaWYgKCgod2luZm8tPmZsYWdzICYgV0FUQ0hFUl9NQVhfU0laRSkgJiYKKyAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPiB3aW5mby0+bWF4X3NpemUpIHx8CiAgICAgICAgICAgICAoKHdpbmZvLT5mbGFncyAmIFdBVENIRVJfRklYRURfU0laRSkgJiYKLSAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0gd2luZm8tPmRhdGFfc2l6ZSkpIHsKLSAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9XUk9OR0xFTkdUSCk7Ci0gICAgICAgICAgICAgaGFuZGxlci0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUX09WRVJSSURFX09OQ0U7CisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiAhPSBnZXRfZGF0YV9zaXplKHdpbmZvKSkpIHsKKyAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX1dST05HTEVOR1RIKTsKKyAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOworICAgICAgICB9IGVsc2UgaWYgKCh3aW5mby0+ZmxhZ3MgJiBXQVRDSEVSX1NJWkVfU1RSTEVOKSAmJgorICAgICAgICAgICAgKG1lbWNocihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nLCAnXDAnLAorICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4pICE9IE5VTEwpKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX0VSUl9XUk9OR1ZBTFVFKTsKKyAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogCkBAIC0xMjcsMTYgKzIwNCwxNiBAQAogICAgICAgICAvKgogICAgICAgICAgKiBzdG9yZSBvbGQgaW5mbyBmb3IgdW5kbyBsYXRlciAKICAgICAgICAgICovCi0gICAgICAgIG9sZF9kYXRhID0gbmV0c25tcF9tZW1kdXAod2luZm8tPmRhdGEsIHdpbmZvLT5kYXRhX3NpemUpOworICAgICAgICBvbGRfZGF0YSA9CisgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfY2FjaGVfY3JlYXRlKHdpbmZvLT5kYXRhLCBnZXRfZGF0YV9zaXplKHdpbmZvKSk7CiAgICAgICAgIGlmIChvbGRfZGF0YSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFKTsKICAgICAgICAgICAgIGhhbmRsZXItPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVF9PVkVSUklERV9PTkNFOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Ci0gICAgICAgIH0KLSAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2FkZF9saXN0X2RhdGEocmVxdWVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIndhdGNoZXIiLCBvbGRfZGF0YSwgZnJlZSkpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhKHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIndhdGNoZXIiLCBvbGRfZGF0YSwgZnJlZSkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKQEAgLTE0OSwxOCArMjI2LDE2IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHVwZGF0ZSBjdXJyZW50IAogICAgICAgICAgKi8KLSAgICAgICAgbWVtY3B5KHdpbmZvLT5kYXRhLCAodm9pZCAqKXJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuKTsKKyAgICAgICAgc2V0X2RhdGEod2luZm8sICh2b2lkICopcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbik7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgotICAgICAgICBtZW1jcHkod2luZm8tPmRhdGEsCi0gICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfZ2V0X2xpc3RfZGF0YShyZXF1ZXN0cywgIndhdGNoZXIiKSwKLSAgICAgICAgICAgICAgIHdpbmZvLT5kYXRhX3NpemUpOworICAgICAgICBvbGRfZGF0YSA9IG5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhKHJlcXVlc3RzLCAid2F0Y2hlciIpOworICAgICAgICBzZXRfZGF0YSh3aW5mbywgb2xkX2RhdGEtPmRhdGEsIG9sZF9kYXRhLT5zaXplKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKLSAgICAgICAgd2luZm8tPmRhdGFfc2l6ZSA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW47CiAgICAgICAgIGJyZWFrOwogCiAgICAgfQpAQCAtMzQ5LDcgKzQyNCw3IEBACiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewpAQCAtMzY1LDcgKzQ0MCw3IEBACiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKQEAgLTM4MSw3ICs0NTYsNyBAQAogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbG9uZ19zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKQEAgLTM5Nyw3ICs0NzIsNyBAQAogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7CkBAIC00MTQsNyArNDg5LDcgQEAKIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKQogewpAQCAtNDMwLDcgKzUwNSw3IEBACiAKIGludAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpCiB7CkBAIC00NDcsNyArNTIyLDcgQEAKIAogaW50CiBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYl9tb2R1bGVzLmMgYi9hZ2VudC9taWJfbW9kdWxlcy5jCmluZGV4IDk1ZTQ2OTUuLmVhODI3MWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYl9tb2R1bGVzLmMKKysrIGIvYWdlbnQvbWliX21vZHVsZXMuYwpAQCAtNDksOSArNDksNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaD4KICNpbmNsdWRlICJtaWJfbW9kdWxlX2luY2x1ZGVzLmgiCi0jaWZkZWYgVVNJTkdfQUdFTlRYX1NVQkFHRU5UX01PRFVMRQotI2luY2x1ZGUgIm1pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5oIgotI2VuZGlmCiAKIHN0YXRpYyBpbnQgbmVlZF9zaHV0ZG93biA9IDA7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZCBiL2FnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZAppbmRleCBkZWFiZjAyLi5mZGQ1ZmJiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGUuZGVwZW5kCkBAIC04LDMyICs4LDE0IEBACiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ0LDExICsyNiwzMSBAQAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaGVhZGVyX2NvbXBsZXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hlYWRlcl9jb21wbGV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9oZWFkZXJfY29tcGxleC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE1LDMyICsxMTcsMTQgQEAKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTUxLDExICsxMzUsMzEgQEAKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3Rlc3RoYW5kbGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90ZXN0aGFuZGxlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdGVzdGhhbmRsZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNywzMiArMjIxLDE0IEBACiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjUzLDExICsyMzksMzEgQEAKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91dGlsX2Z1bmNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzExLDcgKzMxNyw4IEBACiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdXRpbF9mdW5jcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3V0aWxfZnVuY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmggdXRpbF9mdW5jcy5oCi0uL3V0aWxfZnVuY3MubG86IHV0aWxpdGllcy9leGVjdXRlLmgKKy4vdXRpbF9mdW5jcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3V0aWxfZnVuY3MubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCB1dGlsaXRpZXMvZXhlY3V0ZS5oCiAuL3V0aWxfZnVuY3MubG86IHVjZC1zbm1wL2Vycm9ybWliLmggbWliZGVmcy5oCiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi93aW5FeHRETEwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTMxOSw2MjUgKzMyNiw2IEBACiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL3dpbkV4dERMTC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi93aW5FeHRETEwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vUm1vbi9hZ3V0aWwubG86IC4vUm1vbi9hZ3V0aWwuaCAuL1Jtb24vYWd1dGlsX2FwaS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9SbW9uL2FsYXJtLmxvOiAuL1Jtb24vYWxhcm0uaCAuL1Jtb24vYWd1dGlsX2FwaS5oIC4vUm1vbi9yb3dfYXBpLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oIHN0cnVjdC5oCi0uL1Jtb24vZXZlbnQubG86IC4vUm1vbi9ldmVudC5oIC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vUm1vbi9oaXN0b3J5LmxvOiAuL1Jtb24vaGlzdG9yeS5oIC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vUm1vbi9yb3dzLmxvOiAuL1Jtb24vYWd1dGlsX2FwaS5oIC4vUm1vbi9yb3dzLmggLi9SbW9uL3Jvd19hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiBzdHJ1Y3QuaCAuL1Jtb24vc3RhdGlzdGljcy5oIC4vUm1vbi9hZ3V0aWxfYXBpLmgKLS4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuL1Jtb24vcm93X2FwaS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTk0NiwzMiArMzM0LDE0IEBACiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05ODIsMTEgKzM1MiwzMSBAQAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudC9leHRlbmQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEwNDEsOCArNDMxLDggQEAKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vYWdlbnQvZXh0ZW5kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2FnZW50L2V4dGVuZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAotLi9hZ2VudC9leHRlbmQubG86IGFnZW50L2V4dGVuZC5oIHV0aWxpdGllcy9leGVjdXRlLmggc3RydWN0LmggdXRpbF9mdW5jcy5oCi0uL2FnZW50L2V4dGVuZC5sbzogbWliZGVmcy5oCisuL2FnZW50L2V4dGVuZC5sbzogYWdlbnQvZXh0ZW5kLmggdXRpbGl0aWVzL2V4ZWN1dGUuaCBzdHJ1Y3QuaAorLi9hZ2VudC9leHRlbmQubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIG1pYmRlZnMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMDUxLDMyICs0NDEsMTQgQEAKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDg3LDExICs0NTksMzEgQEAKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnQvbnNDYWNoZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE0NSw3ICs1MzcsNiBAQAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL2FnZW50L25zQ2FjaGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9hZ2VudC9uc0NhY2hlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIGFnZW50L25zQ2FjaGUuaAotLi9hZ2VudC9uc0NhY2hlLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTE1NCwzMiArNTQ1LDE0IEBACiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTE5MCwxMSArNTYzLDMxIEBACiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50L25zRGVidWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyNDgsNyArNjQxLDYgQEAKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9hZ2VudC9uc0RlYnVnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vYWdlbnQvbnNEZWJ1Zy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBhZ2VudC9uc0RlYnVnLmgKLS4vYWdlbnQvbnNEZWJ1Zy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEyNTcsMzIgKzY0OSwxNCBAQAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTI5MywxMSArNjY3LDMxIEBACiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50L25zTG9nZ2luZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTM1MSw3ICs3NDUsNiBAQAogLi9hZ2VudC9uc0xvZ2dpbmcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vYWdlbnQvbnNMb2dnaW5nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIGFnZW50L25zTG9nZ2luZy5oCi0uL2FnZW50L25zTG9nZ2luZy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEzNjAsMzIgKzc1MywxNCBAQAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzOTYsMTEgKzc3MSwzMSBAQAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnQvbnNNb2R1bGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2FnZW50L25zTW9kdWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudC9uc01vZHVsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDYzLDMyICs4NTgsMTQgQEAKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0OTksMTEgKzg3NiwzMSBAQAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudC9uc1RyYW5zYWN0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE1NjYsMzIgKzk2MywxNCBAQAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNjAyLDExICs5ODEsMzEgQEAKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2NjksMzIgKzEwNjgsMTQgQEAKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTcwNSwxMSArMTA4NiwzMSBAQAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L2FnZW50eF9jb25maWcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2FnZW50eC9hZ2VudHhfY29uZmlnLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudHgvYWdlbnR4X2NvbmZpZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTc3MywzMiArMTE3NCwxNCBAQAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE4MDksMTEgKzExOTIsMzEgQEAKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnR4L2NsaWVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTg2OSwxMDkgKzEyNzIsNiBAQAogLi9hZ2VudHgvY2xpZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL2FnZW50eC9jbGllbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaW5kZXguaAogLi9hZ2VudHgvY2xpZW50LmxvOiBhZ2VudHgvcHJvdG9jb2wuaCBhZ2VudHgvY2xpZW50LmggYWdlbnR4L3N1YmFnZW50LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggLi4vLi4vYWdlbnQvc25tcGQuaAotLi9hZ2VudHgvbWFzdGVyLmxvOiBhZ2VudHgvcHJvdG9jb2wuaCBhZ2VudHgvbWFzdGVyX2FkbWluLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTk4MCwzMiArMTI4MCwxNCBAQAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTIwMTYsMTEgKzEyOTgsMzEgQEAKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjA3Nyw3ICsxMzc5LDExMyBAQAogLi9hZ2VudHgvbWFzdGVyX2FkbWluLmxvOiBhZ2VudHgvcHJvdG9jb2wuaCBhZ2VudHgvY2xpZW50LmgKIC4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9pbmRleC5oCiAuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vYWdlbnR4L21hc3Rlcl9hZG1pbi5sbzogbWliSUkvc3lzT1JUYWJsZS5oIC4vYWdlbnR4L21hc3Rlci5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oCisuL2FnZW50eC9tYXN0ZXJfYWRtaW4ubG86IC4vYWdlbnR4L21hc3Rlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2FnZW50eC9tYXN0ZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9hZ2VudHgvbWFzdGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vYWdlbnR4L21hc3Rlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCAuLi8uLi9hZ2VudC9zbm1wZC5oCisuL2FnZW50eC9tYXN0ZXIubG86IGFnZW50eC9wcm90b2NvbC5oIGFnZW50eC9tYXN0ZXJfYWRtaW4uaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0yMDg2LDMyICsxNDk0LDE0IEBACiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTIyLDExICsxNTEyLDMxIEBACiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vYWdlbnR4L3Byb3RvY29sLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9hZ2VudHgvcHJvdG9jb2wubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2FnZW50eC9wcm90b2NvbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjE1MywzMiArMTU2MywxNCBAQAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjE4OSwxMSArMTU4MSwzMSBAQAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vYWdlbnR4L3N1YmFnZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIyNTAsNyArMTY2Miw5IEBACiAuL2FnZW50eC9zdWJhZ2VudC5sbzogYWdlbnR4L3Byb3RvY29sLmggYWdlbnR4L2NsaWVudC5oCiAuL2FnZW50eC9zdWJhZ2VudC5sbzogYWdlbnR4L2FnZW50eF9jb25maWcuaAogLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vYWdlbnR4L3N1YmFnZW50LmxvOiBtaWJJSS9zeXNPUlRhYmxlLmggLi9hZ2VudHgvc3ViYWdlbnQuaAorLi9hZ2VudHgvc3ViYWdlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL2FnZW50eC9zdWJhZ2VudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmgKKy4vYWdlbnR4L3N1YmFnZW50LmxvOiAuL2FnZW50eC9zdWJhZ2VudC5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTIyNTksMzIgKzE2NzMsMTQgQEAKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjI5NSwxMSArMTY5MSwzMSBAQAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2Rpc21hbi9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjM2MiwzMiArMTc3OCwxNCBAQAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMzk4LDExICsxNzk2LDMxIEBACiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlRXZlbnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZGlzbWFuL210ZUV2ZW50VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2Rpc21hbi9tdGVFdmVudFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNDY4LDMyICsxODg2LDE0IEBACiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjUwNCwxMSArMTkwNCwzMSBAQAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZU9iamVjdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVPYmplY3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNTcyLDMyICsxOTkyLDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI2MDgsMTEgKzIwMTAsMzEgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTI2NzcsMzIgKzIwOTksMTQgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTI3MTMsMTEgKzIxMTcsMzEgQEAKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckRlbHRhVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNzgyLDMyICsyMjA2LDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjgxOCwxMSArMjIyNCwzMSBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yODg3LDMyICsyMzEzLDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjkyMywxMSArMjMzMSwzMSBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yOTk2LDMyICsyNDI0LDE0IEBACiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzAzMiwxMSArMjQ0MiwzMSBAQAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zMTAxLDMyICsyNTMxLDE0IEBACiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMxMzcsMTEgKzI1NDksMzEgQEAKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL2RhdGFfc2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9leGFtcGxlcy9kYXRhX3NldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZXhhbXBsZXMvZGF0YV9zZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMyMDMsMzIgKzI2MzUsMTQgQEAKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zMjM5LDExICsyNjUzLDMxIEBACiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9kZWxheWVkX2luc3RhbmNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvZGVsYXllZF9pbnN0YW5jZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL2RlbGF5ZWRfaW5zdGFuY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMzMDYsMzIgKzI3NDAsMTQgQEAKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zMzQyLDExICsyNzU4LDMxIEBACiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9leGFtcGxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMzOTksOCArMjgzNSwxMTQgQEAKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vZXhhbXBsZXMvZXhhbXBsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL2V4YW1wbGVzL2V4YW1wbGUubG86IHN0cnVjdC5oIC4vZXhhbXBsZXMvZXhhbXBsZS5oCisuL2V4YW1wbGVzL2V4YW1wbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZXhhbXBsZXMvZXhhbXBsZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vZXhhbXBsZXMvZXhhbXBsZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTM0MDksMzIgKzI5NTEsMTQgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzQ0NSwxMSArMjk2OSwzMSBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzUwOCwxMTAgKzMwNTIsNiBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUubG86IC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfYWNjZXNzLmxvOiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2FjY2Vzcy5sbzogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9lbnVtcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTM2MjAsMzIgKzMwNjAsMTQgQEAKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMzY1NiwxMSArMzA3OCwzMSBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzY4OSwzMiArMzEzMSwxNCBAQAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNzI1LDExICszMTQ5LDMxIEBACiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZV9jaGVja2Zuc19sb2NhbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGVfY2hlY2tmbnNfbG9jYWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlX2NoZWNrZm5zX2xvY2FsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zNzU3LDMyICszMjAxLDE0IEBACiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNzkzLDExICszMjE5LDMxIEBACiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvbm90aWZpY2F0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9leGFtcGxlcy9ub3RpZmljYXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL25vdGlmaWNhdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzg1OSwzMiArMzMwNSwxNCBAQAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM4OTUsMTEgKzMzMjMsMzEgQEAKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2V4YW1wbGVzL3NjYWxhcl9pbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy9zY2FsYXJfaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZXhhbXBsZXMvc2NhbGFyX2ludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzk2MSwzMiArMzQwOSwxNCBAQAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTM5OTcsMTEgKzM0MjcsMzEgQEAKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9leGFtcGxlcy91Y2REZW1vUHVibGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDA1NCw4ICszNTA0LDkgQEAKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IHN0cnVjdC5oIC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMubG86IC4vZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTQwNjQsMzIgKzM1MTUsMTQgQEAKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MTAwLDExICszNTMzLDMxIEBACiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9leGFtcGxlcy93YXRjaGVkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZXhhbXBsZXMvd2F0Y2hlZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2V4YW1wbGVzL3dhdGNoZWQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQxNjcsMzIgKzM2MjAsMTQgQEAKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDIwMywxMSArMzYzOCwzMSBAQAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9kZXZpY2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfZGV2aWNlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX2RldmljZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDI0MCwzMiArMzY5NSwxNCBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDI3NiwxMSArMzcxMywzMSBAQAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQzMTQsMzIgKzM3NzEsMTQgQEAKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQzNTAsMTEgKzM3ODksMzEgQEAKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00NDEwLDcgKzM4NjksMjIzIEBACiAuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9ob3N0L2hyX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5LmgKIC4vaG9zdC9ocl9maWxlc3lzLmxvOiBob3N0X3Jlcy5oIC4vaG9zdC9ocl9maWxlc3lzLmgKLS4vaG9zdC9ocl9maWxlc3lzLmxvOiAuL2hvc3QvaHJfc3RvcmFnZS5oCisuL2hvc3QvaHJfZmlsZXN5cy5sbzogLi9ob3N0L2hyX3N0b3JhZ2UuaCAuL2hvc3QvaHJfZGlzay5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9ob3N0L2hyaF9maWxlc3lzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oCisuL2hvc3QvaHJoX2ZpbGVzeXMubG86IGhvc3RfcmVzLmggLi9ob3N0L2hyaF9maWxlc3lzLmgKKy4vaG9zdC9ocmhfZmlsZXN5cy5sbzogLi9ob3N0L2hyaF9zdG9yYWdlLmggLi9ob3N0L2hyX2Rpc2suaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vaG9zdC9ocmhfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9tZW1vcnkuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaAorLi9ob3N0L2hyaF9zdG9yYWdlLmxvOiBob3N0X3Jlcy5oIC4vaG9zdC9ocmhfZmlsZXN5cy5oCisuL2hvc3QvaHJoX3N0b3JhZ2UubG86IC4vaG9zdC9ocmhfc3RvcmFnZS5oIC4vaG9zdC9ocl9kaXNrLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNDQxOSwzMiArNDA5NCwxNCBAQAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDQ1NSwxMSArNDExMiwzMSBAQAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfbmV0d29yay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9uZXR3b3JrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX25ldHdvcmsubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQ1MjQsMzIgKzQyMDEsMTQgQEAKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NTYwLDExICs0MjE5LDMxIEBACiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX290aGVyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9vdGhlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfb3RoZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTQ1OTgsMzIgKzQyNzcsMTQgQEAKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNDYzNCwxMSArNDI5NSwzMSBAQAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9wYXJ0aXRpb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfcGFydGl0aW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ob3N0L2hyX3BhcnRpdGlvbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDY3MywzMiArNDM1NCwxNCBAQAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ3MDksMTEgKzQzNzIsMzEgQEAKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX3ByaW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDczOCw3ICs0NDIxLDkgQEAKIC4vaG9zdC9ocl9wcmludC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCiAuL2hvc3QvaHJfcHJpbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKIC4vaG9zdC9ocl9wcmludC5sbzogLi9ob3N0L2hyX3ByaW50Lmggc3RydWN0LmgKLS4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy5oCisuL2hvc3QvaHJfcHJpbnQubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKKy4vaG9zdC9ocl9wcmludC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTQ3NDcsMzIgKzQ0MzIsMTQgQEAKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ3ODMsMTEgKzQ0NTAsMzEgQEAKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaG9zdC9ocl9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00ODU0LDMyICs0NTQxLDE0IEBACiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00ODkwLDExICs0NTU5LDMxIEBACiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3RvcmFnZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDk1Miw2ICs0NjQxLDExMiBAQAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9ob3N0L2hyX3N0b3JhZ2UubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vaG9zdC9ocl9zdG9yYWdlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vaG9zdC9oclNXSW5zdGFsbGVkVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oCisuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmxvOiAuL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNDk2MSwzMiArNDc1NiwxNCBAQAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00OTk3LDExICs0Nzc0LDMxIEBACiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX3N3aW5zdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9zd2luc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3dpbnN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01MDMzLDM2ICs0ODMwLDE1IEBACiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfc3dydW4ubG86IGhvc3RfcmVzLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTA3MywxMSArNDg0OSwzNCBAQAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiBob3N0X3Jlcy5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N3cnVuLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3dydW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTUxMDIsNiArNDkwMSwyMTkgQEAKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi9ob3N0L2hyX3N3cnVuLmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKIC4vaG9zdC9ocl9zd3J1bi5sbzogLi4vLi4vYWdlbnQva2VybmVsLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaAorLi9ob3N0L2hyU1dSdW5QZXJmVGFibGUubG86IC4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKKy4vaG9zdC9oclNXUnVuUGVyZlRhYmxlLmxvOiAuL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vaG9zdC9oclNXUnVuVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9ob3N0L2hyU1dSdW5UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oCisuL2hvc3QvaHJTV1J1blRhYmxlLmxvOiAuL2hvc3QvaHJTV1J1blRhYmxlLmggLi9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNTExMCwzMiArNTEyMiwxNCBAQAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01MTQ2LDExICs1MTQwLDMxIEBACiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ob3N0L2hyX3N5c3RlbS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vaG9zdC9ocl9zeXN0ZW0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2hvc3QvaHJfc3lzdGVtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01MjE0LDMyICs1MjI4LDE0IEBACiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTUyNTAsMTEgKzUyNDYsMzEgQEAKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2lwLW1pYi9pcF9zY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9pcC1taWIvaXBfc2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaXAtbWliL2lwX3NjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTUzMjAsMzIgKzUzMzYsMTQgQEAKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTM1NiwxMSArNTM1NCwzMSBAQAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvYXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL2F0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9hdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTQyNywzMiArNTQ0NSwxNCBAQAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTU0NjMsMTEgKzU0NjMsMzEgQEAKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9pY21wLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTUyMSw4ICs1NTQxLDEwIEBACiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vbWliSUkvaWNtcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmggdXRpbF9mdW5jcy5oCi0uL21pYklJL2ljbXAubG86IHN0cnVjdC5oIC4vbWliSUkvaWNtcC5oIC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL2ljbXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vbWliSUkvaWNtcC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIC4vbWliSUkvaWNtcC5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTU1MzIsMzIgKzU1NTQsMTQgQEAKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01NTY4LDExICs1NTcyLDMxIEBACiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTU2MjcsMTE3ICs1NjUxLDExIEBACiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKIC4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAotLi9taWJJSS9pbnRlcmZhY2VzLmxvOiAuL21pYklJL2ludGVyZmFjZXMuaCBzdHJ1Y3QuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkvaW50ZXJmYWNlcy5sbzogLi9taWJJSS9zeXNPUlRhYmxlLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL21pYklJL2lwLmxvOiAuL21pYklJL21pYklJX2NvbW1vbi5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkvaXAubG86IHN0cnVjdC5oIC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oCi0uL21pYklJL2lwLmxvOiAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oIC4vbWliSUkvaXBBZGRyLmgKLS4vbWliSUkvaXAubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL2ludGVyZmFjZXMubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oIHN0cnVjdC5oCisuL21pYklJL2ludGVyZmFjZXMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC01NzQ3LDMyICs1NjY1LDE0IEBACiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC01NzgzLDExICs1NjgzLDMxIEBACiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvaXBBZGRyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTg0NCw3ICs1NzY0LDIyNiBAQAogLi9taWJJSS9pcEFkZHIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL21pYklJL2lwQWRkci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAogLi9taWJJSS9pcEFkZHIubG86IC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oIC4vbWliSUkvcm91dGVfd3JpdGUuaAotLi9taWJJSS9pcEFkZHIubG86IC4vbWliSUkvYXQuaCAuL21pYklJL2ludGVyZmFjZXMuaCAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS9pcEFkZHIubG86IC4vbWliSUkvYXQuaCAuL21pYklJL2ludGVyZmFjZXMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vbWliSUkvaXAubG86IC4vbWliSUkvbWliSUlfY29tbW9uLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vbWliSUkvaXAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCisuL21pYklJL2lwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9taWJJSS9pcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9taWJJSS9pcC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIC4vbWliSUkvaXAuaAorLi9taWJJSS9pcC5sbzogLi9taWJJSS92YXJfcm91dGUuaCAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oCisuL21pYklJL2lwLmxvOiAuL21pYklJL2lwQWRkci5oIC4vbWliSUkvaW50ZXJmYWNlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC01ODU0LDMyICs1OTkzLDE0IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTg5MCwxMSArNjAxMSwzMSBAQAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01OTU0LDExMSArNjA5NSw2IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGUubG86IC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmxvOiAuL21pYklJL3Zhcl9yb3V0ZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9hY2Nlc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5sbzogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2FjY2Vzcy5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfYWNjZXNzLmxvOiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfZW51bXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02MDY3LDMyICs2MTAzLDE0IEBACiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjEwMywxMSArNjEyMSwzMSBAQAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvaXBDaWRyUm91dGVUYWJsZV9jaGVja2Zucy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwQ2lkclJvdXRlVGFibGVfY2hlY2tmbnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9pcENpZHJSb3V0ZVRhYmxlX2NoZWNrZm5zLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02MTM1LDMyICs2MTczLDE0IEBACiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjE3MSwxMSArNjE5MSwzMSBAQAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02MjMwLDkgKzYyNzAsOCBAQAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvaXB2Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi9taWJJSS9pcHY2LmxvOiAuLi8uLi9hZ2VudC9rZXJuZWwuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmggLi9taWJJSS9pcHY2LmgKLS4vbWliSUkvaXB2Ni5sbzogLi9taWJJSS92YXJfcm91dGUuaCAuL21pYklJL3JvdXRlX3dyaXRlLmggLi9taWJJSS9hdC5oCi0uL21pYklJL2lwdjYubG86IC4vbWliSUkvaW50ZXJmYWNlcy5oCisuL21pYklJL2lwdjYubG86IC4uLy4uL2FnZW50L2tlcm5lbC5oIC4vbWliSUkvaXB2Ni5oIC4vbWliSUkvdmFyX3JvdXRlLmgKKy4vbWliSUkvaXB2Ni5sbzogLi9taWJJSS9yb3V0ZV93cml0ZS5oIC4vbWliSUkvYXQuaCAuL21pYklJL2ludGVyZmFjZXMuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02MjQxLDMyICs2MjgwLDE0IEBACiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02Mjc3LDExICs2Mjk4LDMxIEBACiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjMzNCw4ICs2Mzc1LDcgQEAKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL21pYklJL2tlcm5lbF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkva2VybmVsX2xpbnV4LmxvOiBzdHJ1Y3QuaAorLi9taWJJSS9rZXJuZWxfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkva2VybmVsX2xpbnV4LmxvOiAuL21pYklJL2tlcm5lbF9saW51eC5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtNjM0NSwzMiArNjM4NSwxNCBAQAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTYzODEsMTEgKzY0MDMsMzEgQEAKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL2tlcm5lbF9uZXRic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9rZXJuZWxfbmV0YnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkva2VybmVsX25ldGJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjQ0OCwzMiArNjQ5MCwxNCBAQAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjQ4NCwxMSArNjUwOCwzMSBAQAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL210YV9zZW5kbWFpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvbXRhX3NlbmRtYWlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9tdGFfc2VuZG1haWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTY1NTEsMzIgKzY1OTUsMTQgQEAKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjU4NywxMSArNjYxMywzMSBAQAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvcm91dGVfd3JpdGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3JvdXRlX3dyaXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9yb3V0ZV93cml0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjY1NSwzMiArNjcwMSwxNCBAQAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02NjkxLDExICs2NzE5LDMxIEBACiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9zZXRTZXJpYWxOby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02NzUwLDYgKzY3OTgsMTE0IEBACiAuL21pYklJL3NldFNlcmlhbE5vLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvc2V0U2VyaWFsTm8ubG86IC4vbWliSUkvc2V0U2VyaWFsTm8uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9taWJJSS9zbm1wX21pYl81XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCisuL21pYklJL3NubXBfbWliXzVfNS5sbzogLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKKy4vbWliSUkvc25tcF9taWJfNV81LmxvOiAuL21pYklJL3NubXBfbWliXzVfNS5oIC4vbWliSUkvdXBkYXRlcy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTY3NTgsMzIgKzY5MTQsMTQgQEAKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjc5NCwxMSArNjkzMiwzMSBAQAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNjg1MSw4ICs3MDA5LDEwIEBACiAuL21pYklJL3NubXBfbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vbWliSUkvc25tcF9taWIubG86IC4vbWliSUkvc25tcF9taWIuaCAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9taWJJSS9zbm1wX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vbWliSUkvc25tcF9taWIubG86IC4vbWliSUkvc25tcF9taWIuaCAuL21pYklJL3VwZGF0ZXMuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02ODYxLDMyICs3MDIxLDE0IEBACiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNjg5NywxMSArNzAzOSwzMSBAQAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3N5c09SVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02OTU1LDkgKzcxMTcsMTAgQEAKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvc3lzT1JUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAogLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCi0uL21pYklJL3N5c09SVGFibGUubG86IHN0cnVjdC5oIHV0aWxfZnVuY3MuaCAuL21pYklJL3N5c09SVGFibGUuaAotLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuLi8uLi9hZ2VudC9zbm1wZC5oIGFnZW50eC9zdWJhZ2VudC5oIGFnZW50eC9jbGllbnQuaAorLi9taWJJSS9zeXNPUlRhYmxlLmxvOiAuL21pYklJL3N5c09SVGFibGUuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC02OTY2LDMyICs3MTI5LDE0IEBACiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzAwMiwxMSArNzE0NywzMSBAQAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03MDU5LDggKzcyMjQsMTMgQEAKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL21pYklJL3N5c3RlbV9taWIubG86IHN0cnVjdC5oIC4vbWliSUkvc3lzdGVtX21pYi5oIC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL3N5c3RlbV9taWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vbWliSUkvc3lzdGVtX21pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCisuL21pYklJL3N5c3RlbV9taWIubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAorLi9taWJJSS9zeXN0ZW1fbWliLmxvOiAuL21pYklJL3N5c3RlbV9taWIuaCAuL21pYklJL3VwZGF0ZXMuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC03MDcxLDMyICs3MjQxLDE0IEBACiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC03MTA3LDExICs3MjU5LDMxIEBACiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNzE2NSw5ICs3MzM3LDExIEBACiAuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCB1dGlsX2Z1bmNzLmgKLS4vbWliSUkvdGNwLmxvOiBzdHJ1Y3QuaCAuL21pYklJL3RjcC5oIC4vbWliSUkvdGNwVGFibGUuaAotLi9taWJJSS90Y3AubG86IC4vbWliSUkvc3lzT1JUYWJsZS5oCisuL21pYklJL3RjcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKKy4vbWliSUkvdGNwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9taWJJSS90Y3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vbWliSUkvdGNwLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmggLi9taWJJSS90Y3AuaAorLi9taWJJSS90Y3AubG86IC4vbWliSUkvdGNwVGFibGUuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC03MTc4LDMyICs3MzUyLDE0IEBACiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTcyMTQsMTEgKzczNzAsMzEgQEAKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9taWJJSS90Y3BUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTcyNzMsNyArNzQ0OSw3IEBACiAuL21pYklJL3RjcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvdGNwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oIC4vbWliSUkvdGNwLmgKLS4vbWliSUkvdGNwVGFibGUubG86IC4vbWliSUkvdGNwVGFibGUuaCAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS90Y3BUYWJsZS5sbzogLi9taWJJSS90Y3BUYWJsZS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTcyODQsMzIgKzc0NjAsMTQgQEAKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTczMjAsMTEgKzc0NzgsMzEgQEAKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03Mzc4LDkgKzc1NTYsMTEgQEAKIC4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oIHV0aWxfZnVuY3MuaAotLi9taWJJSS91ZHAubG86IHN0cnVjdC5oIC4vbWliSUkvdWRwLmggLi9taWJJSS91ZHBUYWJsZS5oCi0uL21pYklJL3VkcC5sbzogLi9taWJJSS9zeXNPUlRhYmxlLmgKKy4vbWliSUkvdWRwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAorLi9taWJJSS91ZHAubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL3VkcC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9taWJJSS91ZHAubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCAuL21pYklJL3VkcC5oCisuL21pYklJL3VkcC5sbzogLi9taWJJSS91ZHBUYWJsZS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTczOTEsMzIgKzc1NzEsMTQgQEAKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzQyNywxMSArNzU4OSwzMSBAQAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vbWliSUkvdWRwVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNzQ4Niw3ICs3NjY4LDExMSBAQAogLi9taWJJSS91ZHBUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL21pYklJL3VkcFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCAuL21pYklJL3VkcC5oCi0uL21pYklJL3VkcFRhYmxlLmxvOiAuL21pYklJL3VkcFRhYmxlLmggLi9taWJJSS9zeXNPUlRhYmxlLmgKKy4vbWliSUkvdWRwVGFibGUubG86IC4vbWliSUkvdWRwVGFibGUuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9taWJJSS91cGRhdGVzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vbWliSUkvdXBkYXRlcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL21pYklJL3VwZGF0ZXMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNzQ5NSwzMiArNzc4MSwxNCBAQAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzUzMSwxMSArNzc5OSwzMSBAQAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvdmFjbV9jb25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTc1OTAsOCArNzg3OCw3IEBACiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL21pYklJL3ZhY21fY29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9taWJJSS92YWNtX2NvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vbWliSUkvdmFjbV9jb25mLmxvOiAuL21pYklJL3ZhY21fY29uZi5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9taWJJSS92YWNtX2NvbmYubG86IC4vbWliSUkvc3lzT1JUYWJsZS5oIC4uLy4uL2FnZW50L3NubXBkLmgKKy4vbWliSUkvdmFjbV9jb25mLmxvOiAuL21pYklJL3ZhY21fY29uZi5oIC4uLy4uL2FnZW50L3NubXBkLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNzYwMCwzMiArNzg4NywxNCBAQAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzYzNiwxMSArNzkwNSwzMSBAQAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3ZhY21fY29udGV4dC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvdmFjbV9jb250ZXh0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS92YWNtX2NvbnRleHQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTc3MDMsMzIgKzc5OTIsMTQgQEAKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTc3MzksMTEgKzgwMTAsMzEgQEAKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pYklJL3ZhY21fdmFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC03Nzk4LDggKzgwODksOCBAQAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vbWliSUkvdmFjbV92YXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCi0uL21pYklJL3ZhY21fdmFycy5sbzogLi9taWJJSS92YWNtX3ZhcnMuaCB1dGlsX2Z1bmNzLmggc3RydWN0LmgKLS4vbWliSUkvdmFjbV92YXJzLmxvOiAuL21pYklJL3N5c09SVGFibGUuaAorLi9taWJJSS92YWNtX3ZhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL21pYklJL3ZhY21fdmFycy5sbzogLi9taWJJSS92YWNtX3ZhcnMuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtNzgwOSwzMiArODEwMCwxNCBAQAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzg0NSwxMSArODExOCwzMSBAQAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vbWliSUkvdmFyX3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTc5MDcsNyArODIwMCw3IEBACiAuL21pYklJL3Zhcl9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4vbWliSUkvaXAuaCAuL21pYklJL3Zhcl9yb3V0ZS5oIC4vbWliSUkvcm91dGVfd3JpdGUuaAogLi9taWJJSS92YXJfcm91dGUubG86IC4vbWliSUkvYXQuaCAuLi8uLi9hZ2VudC9rZXJuZWwuaCAuL21pYklJL2ludGVyZmFjZXMuaAotLi9taWJJSS92YXJfcm91dGUubG86IHN0cnVjdC5oIHV0aWxfZnVuY3MuaAorLi9taWJJSS92YXJfcm91dGUubG86IHN0cnVjdC5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTc5MTYsMzIgKzgyMDksMTQgQEAKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTc5NTIsMTEgKzgyMjcsMzEgQEAKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL21pc2MvaXBmd2FjYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04MDA5LDggKzgzMDQsOCBAQAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9taXNjL2lwZndhY2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9taXNjL2lwZndhY2MubG86IC4vbWlzYy9pcGZ3YWNjLmgKKy4vbWlzYy9pcGZ3YWNjLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL21pc2MvaXBmd2FjYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi9taXNjL2lwZndhY2MuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC04MDE5LDMyICs4MzE0LDE0IEBACiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtODA1NSwxMSArODMzMiwzMSBAQAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04MTEzLDcgKzg0MTAsOCBAQAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cubG86IC4vbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC04MTIzLDMyICs4NDIxLDE0IEBACiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTgxNTksMTEgKzg0MzksMzEgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTgyMjcsMzIgKzg1MjcsMTQgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC04MjYzLDExICs4NTQ1LDMxIEBACiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTgzMzMsOCArODYzNSw3NDMgQEAKIC4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaAogLi9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmxvOiBzbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKLS4vbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5sbzogLi4vLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCisuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCiAuL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUubG86IG5vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vYWd1dGlsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL2FndXRpbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCAuL1Jtb24vYWd1dGlsLmgKKy4vUm1vbi9hZ3V0aWwubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vUm1vbi9hbGFybS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL1Jtb24vYWxhcm0ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL2FsYXJtLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIC4vUm1vbi9hbGFybS5oCisuL1Jtb24vYWxhcm0ubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL1Jtb24vYWxhcm1UYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vUm1vbi9hbGFybVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxpdGllcy9pcXVlcnkuaAorLi9SbW9uL2FsYXJtVGFibGUubG86IC4vUm1vbi9hbGFybVRhYmxlLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vUm1vbi9ldmVudC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL1Jtb24vZXZlbnQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL2V2ZW50LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIC4vUm1vbi9ldmVudC5oCisuL1Jtb24vZXZlbnQubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL1Jtb24vaGlzdG9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9SbW9uL2hpc3RvcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIC4vUm1vbi9oaXN0b3J5LmgKKy4vUm1vbi9oaXN0b3J5LmxvOiAuL1Jtb24vYWd1dGlsX2FwaS5oIC4vUm1vbi9yb3dfYXBpLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9SbW9uL3Jvd3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vUm1vbi9yb3dzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL1Jtb24vcm93cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCAuL1Jtb24vYWd1dGlsX2FwaS5oCisuL1Jtb24vcm93cy5sbzogLi9SbW9uL3Jvd3MuaCAuL1Jtb24vcm93X2FwaS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vUm1vbi9zdGF0aXN0aWNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL1Jtb24vc3RhdGlzdGljcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggLi9SbW9uL3N0YXRpc3RpY3MuaAorLi9SbW9uL3N0YXRpc3RpY3MubG86IC4vUm1vbi9hZ3V0aWxfYXBpLmggLi9SbW9uL3Jvd19hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC04MzQzLDMyICs5MzgwLDE0IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTgzNzksMTEgKzkzOTgsMzEgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTg0NDcsMzIgKzk0ODYsMTQgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg0ODMsMTEgKzk1MDQsMzEgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NSZW1BZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04NTUxLDMyICs5NTkyLDE0IEBACiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg1ODcsMTEgKzk2MTAsMzEgQEAKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTg2NTUsMzIgKzk2OTgsMTQgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg2OTEsMTEgKzk3MTYsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwTG9jYWxQb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04NzU5LDMyICs5ODA0LDE0IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg3OTUsMTEgKzk4MjIsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTg4NjMsMzIgKzk5MTAsMTQgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg4OTksMTEgKzk5MjgsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC04OTY3LDMyICsxMDAxNiwxNCBAQAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTkwMDMsMTEgKzEwMDM0LDMxIEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkwNzEsMzIgKzEwMTIyLDE0IEBACiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTEwNywxMSArMTAxNDAsMzEgQEAKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtOTE3NSwzMiArMTAyMjgsMTQgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTIxMSwxMSArMTAyNDYsMzEgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkyNzksMzIgKzEwMzM0LDE0IEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05MzE1LDExICsxMDM1MiwzMSBAQAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkzNzQsNiArMTA0MzEsMTExIEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24ubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtOTM4MiwzMiArMTA1NDQsMTQgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtOTQxOCwxMSArMTA1NjIsMzEgQEAKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTk0NzcsNiArMTA2NDEsMTEyIEBACiAuL3NjdHAtbWliL3NjdHBTY2FsYXJzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi9zY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cFNjYWxhcnNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIubG86IGtlcm5lbF9zdW5vczUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC05NDg1LDMyICsxMDc1NSwxNCBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NTIxLDExICsxMDc3MywzMSBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtOTU4OCw2ICsxMDg2MCwxMTcgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5sbzogLi9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24ubG86IC4vc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtOTU5NiwzMiArMTA5NzksMTQgQEAKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NjMyLDExICsxMDk5NywzMSBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC05Njk0LDcgKzExMDc5LDExOSBAQAogLi9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmxvOiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKIC4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKLS4vc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXgubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cEFzc29jVGFibGUuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiAuL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogLi9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5oCisuL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIubG86IC4vc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAorLi9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKKy4vc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMi5sbzoga2VybmVsX3N1bm9zNS5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTk3MDMsMzIgKzExMjAwLDE0IEBACiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NzM5LDExICsxMTIxOCwzMSBAQAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NtdXgvc211eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTk3OTYsOCArMTEyOTUsOCBAQAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vc211eC9zbXV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHNtdXguaCB1dGlsX2Z1bmNzLmgKLS4vc211eC9zbXV4LmxvOiBzdHJ1Y3QuaCBtaWJkZWZzLmggLi4vLi4vYWdlbnQvc25tcGQuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc211eC5oIG1pYmRlZnMuaAorLi9zbXV4L3NtdXgubG86IC4uLy4uL2FnZW50L3NubXBkLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtOTgwNiwzMiArMTEzMDUsMTQgQEAKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05ODQyLDExICsxMTMyMywzMSBAQAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbm1wX2JncC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NtdXgvc25tcF9iZ3AubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NubXBfYmdwLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC05OTA5LDMyICsxMTQxMCwxNCBAQAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05OTQ1LDExICsxMTQyOCwzMSBAQAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc211eC9zbm1wX29zcGYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NtdXgvc25tcF9vc3BmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NubXBfb3NwZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAwMTIsMzIgKzExNTE1LDE0IEBACiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMDQ4LDExICsxMTUzMywzMSBAQAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc211eC9zbm1wX3JpcDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NtdXgvc25tcF9yaXAyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbXV4L3NubXBfcmlwMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAxMTUsMzIgKzExNjIwLDE0IEBACiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMTUxLDExICsxMTYzOCwzMSBAQAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAyMDgsOCArMTE3MTUsMTE4IEBACiAuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi9zbm1wdjMvc25tcEVuZ2luZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCB1dGlsX2Z1bmNzLmgKLS4vc25tcHYzL3NubXBFbmdpbmUubG86IHN0cnVjdC5oIG1pYklJL3N5c09SVGFibGUuaCAuL3NubXB2My9zbm1wRW5naW5lLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vc25tcHYzL3NubXBFbmdpbmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCisuL3NubXB2My9zbm1wRW5naW5lLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi9zbm1wdjMvc25tcEVuZ2luZS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vc25tcHYzL3NubXBNUERTdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5sbzogLi9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmxvOiAuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMDIxOCwzMiArMTE4MzUsMTQgQEAKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDI1NCwxMSArMTE4NTMsMzEgQEAKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTAzMTIsOCArMTE5MzEsOSBAQAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3NubXB2My9zbm1wTVBEU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3NubXB2My9zbm1wTVBEU3RhdHMubG86IG1pYklJL3N5c09SVGFibGUuaCAuL3NubXB2My9zbm1wTVBEU3RhdHMuaAotLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKKy4vc25tcHYzL3NubXBNUERTdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9zbm1wdjMvc25tcE1QRFN0YXRzLmxvOiAuL3NubXB2My9zbm1wTVBEU3RhdHMuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTAzMjIsMzIgKzExOTQyLDE0IEBACiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwMzU4LDExICsxMTk2MCwzMSBAQAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdjMvdXNtQ29uZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTA0MTYsNiArMTIwMzgsMTE0IEBACiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3NubXB2My91c21Db25mLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vc25tcHYzL3VzbUNvbmYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi9zbm1wdjMvdXNtU3RhdHNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3NubXB2My91c21TdGF0c181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi9zbm1wdjMvdXNtU3RhdHNfNV81LmgKKy4vc25tcHYzL3VzbVN0YXRzXzVfNS5sbzogLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTA0MjQsMzIgKzEyMTU0LDE0IEBACiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDQ2MCwxMSArMTIxNzIsMzEgQEAKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMDUxNyw4ICsxMjI0OSwxMCBAQAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vc25tcHYzL3VzbVN0YXRzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaAotLi9zbm1wdjMvdXNtU3RhdHMubG86IHN0cnVjdC5oIG1pYklJL3N5c09SVGFibGUuaCAuL3NubXB2My91c21TdGF0cy5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3NubXB2My91c21TdGF0cy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaAorLi9zbm1wdjMvdXNtU3RhdHMubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3NubXB2My91c21TdGF0cy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwNTI3LDMyICsxMjI2MSwxNCBAQAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDU2MywxMSArMTIyNzksMzEgQEAKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEwNjIwLDggKzEyMzU2LDggQEAKIC4vc25tcHYzL3VzbVVzZXIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi9zbm1wdjMvdXNtVXNlci5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAotLi9zbm1wdjMvdXNtVXNlci5sbzogLi9zbm1wdjMvdXNtVXNlci5oCisuL3NubXB2My91c21Vc2VyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3NubXB2My91c21Vc2VyLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi9zbm1wdjMvdXNtVXNlci5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwNjMwLDMyICsxMjM2NiwxNCBAQAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDY2NiwxMSArMTIzODQsMzEgQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEwNzI0LDggKzEyNDYyLDggQEAKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oIHV0aWxfZnVuY3MuaAotLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogc3RydWN0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkubG86IC4vdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaAorLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwNzM0LDMyICsxMjQ3MiwxNCBAQAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwNzcwLDExICsxMjQ5MCwzMSBAQAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMDgzNywzMiArMTI1NzcsMTQgQEAKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMDg3MywxMSArMTI1OTUsMzEgQEAKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YXJnZXQvdGFyZ2V0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTA5MzMsNiArMTI2NzUsMTEyIEBACiAuL3RhcmdldC90YXJnZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdGFyZ2V0L3RhcmdldC5sbzogLi90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCiAuL3RhcmdldC90YXJnZXQubG86IC4vdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oIHRhcmdldC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmxvOiAuL3RhcmdldC90YXJnZXRfY291bnRlcnNfNV81LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUubG86IC4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEwOTQxLDMyICsxMjc4OSwxNCBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEwOTc3LDExICsxMjgwNywzMSBAQAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGFyZ2V0L3RhcmdldF9jb3VudGVycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3RhcmdldC90YXJnZXRfY291bnRlcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTA0NCwzMiArMTI4OTQsMTQgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTA4MCwxMSArMTI5MTIsMzEgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTExMzcsOCArMTI5ODksMTAgQEAKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oIHN0cnVjdC5oCi0uL3R1bm5lbC90dW5uZWwubG86IHR1bm5lbC5oIGlmLW1pYi9pZlRhYmxlL2lmVGFibGUuaAorLi90dW5uZWwvdHVubmVsLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oCisuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmggdHVubmVsLmgKKy4vdHVubmVsL3R1bm5lbC5sbzogaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCiAuL3R1bm5lbC90dW5uZWwubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKIC4vdHVubmVsL3R1bm5lbC5sbzogaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaAogLi90dW5uZWwvdHVubmVsLmxvOiBpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5oCkBAIC0xMTE1MywzMiArMTMwMDcsMTQgQEAKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTE4OSwxMSArMTMwMjUsMzEgQEAKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL2Rpc2subG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTEyNDgsOCArMTMxMDQsOCBAQAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvZGlzay5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9kaXNrLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCBzdHJ1Y3QuaAotLi91Y2Qtc25tcC9kaXNrLmxvOiAuL3VjZC1zbm1wL2Rpc2suaCBtaWJkZWZzLmggdXRpbF9mdW5jcy5oCi0uL3VjZC1zbm1wL2Rpc2subG86IC4vdWNkLXNubXAvZXJyb3JtaWIuaAorLi91Y2Qtc25tcC9kaXNrLmxvOiAuL3VjZC1zbm1wL2Rpc2suaCBtaWJkZWZzLmgKKy4vdWNkLXNubXAvZGlzay5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9lcnJvcm1pYi5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExMjU4LDMyICsxMzExNCwxNCBAQAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTEyOTQsMTEgKzEzMTMyLDMxIEBACiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2Rpc2tpby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTEzNTEsOCArMTMyMDksOCBAQAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi91Y2Qtc25tcC9kaXNraW8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaAotLi91Y2Qtc25tcC9kaXNraW8ubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvZGlza2lvLmgKKy4vdWNkLXNubXAvZGlza2lvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3VjZC1zbm1wL2Rpc2tpby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggLi91Y2Qtc25tcC9kaXNraW8uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMTM2MSwzMiArMTMyMTksMTQgQEAKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTEzOTcsMTEgKzEzMjM3LDMxIEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9kbG1vZC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTQ1NSw2ICsxMzMxNSw5IEBACiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3VjZC1zbm1wL2RsbW9kLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmggdXRpbF9mdW5jcy5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvZGxtb2QubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3VjZC1zbm1wL2RsbW9kLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdWNkLXNubXAvZGxtb2QubG86IC4vdWNkLXNubXAvZGxtb2QuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTE0NjQsMzIgKzEzMzI3LDE0IEBACiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExNTAwLDExICsxMzM0NSwzMSBAQAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE1NTksNyArMTM0MjQsOCBAQAogLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL2Vycm9ybWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaCBzdHJ1Y3QuaAotLi91Y2Qtc25tcC9lcnJvcm1pYi5sbzogLi91Y2Qtc25tcC9lcnJvcm1pYi5oIG1pYmRlZnMuaCB1dGlsX2Z1bmNzLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IC4vdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmgKKy4vdWNkLXNubXAvZXJyb3JtaWIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMTU2OCwzMiArMTM0MzQsMTQgQEAKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTYwNCwxMSArMTM0NTIsMzEgQEAKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE2NjUsNyArMTM1MzMsOCBAQAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAogLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oCiAuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHN0cnVjdC5oIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiB1dGlsaXRpZXMvZXhlY3V0ZS5oIHV0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC9leHRlbnNpYmxlLmxvOiB1dGlsaXRpZXMvZXhlY3V0ZS5oCisuL3VjZC1zbm1wL2V4dGVuc2libGUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExNjc0LDMyICsxMzU0MywxNCBAQAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExNzEwLDExICsxMzU2MSwzMSBAQAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9maWxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMTc2OCw3ICsxMzYzOSw4IEBACiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdWNkLXNubXAvZmlsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL2ZpbGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmgKLS4vdWNkLXNubXAvZmlsZS5sbzogLi91Y2Qtc25tcC9maWxlLmggbWliZGVmcy5oIHV0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC9maWxlLmxvOiAuL3VjZC1zbm1wL2ZpbGUuaCBtaWJkZWZzLmgKKy4vdWNkLXNubXAvZmlsZS5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTE3NzcsMzIgKzEzNjQ5LDE0IEBACiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTE4MTMsMTEgKzEzNjY3LDMxIEBACiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExODgwLDMyICsxMzc1NCwxNCBAQAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTE5MTYsMTEgKzEzNzcyLDMxIEBACiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTE5NzMsOSArMTM4NDksMTE1IEBACiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAotLi91Y2Qtc25tcC9sbVNlbnNvcnMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggdXRpbF9mdW5jcy5oCi0uL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogc3RydWN0LmgKKy4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3VjZC1zbm1wL2xtU2Vuc29ycy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKIC4vdWNkLXNubXAvbG1TZW5zb3JzLmxvOiAuL3VjZC1zbm1wL2xtU2Vuc29ycy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdWNkLXNubXAvbG1zZW5zb3JzTWliLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaAorLi91Y2Qtc25tcC9sbXNlbnNvcnNNaWIubG86IHVjZC1zbm1wL2xtc2Vuc29yc01pYi5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTExOTg0LDMyICsxMzk2NiwxNCBAQAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyMDIwLDExICsxMzk4NCwzMSBAQAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMjA3OSw4ICsxNDA2Myw4IEBACiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9sb2FkYXZlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL2xvYWRhdmUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oIHN0cnVjdC5oCi0uL3VjZC1zbm1wL2xvYWRhdmUubG86IC4vdWNkLXNubXAvbG9hZGF2ZS5oIG1pYmRlZnMuaCB1dGlsX2Z1bmNzLmgKLS4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi4vLi4vYWdlbnQva2VybmVsLmgKKy4vdWNkLXNubXAvbG9hZGF2ZS5sbzogLi91Y2Qtc25tcC9sb2FkYXZlLmggbWliZGVmcy5oCisuL3VjZC1zbm1wL2xvYWRhdmUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEyMDg5LDMyICsxNDA3MywxNCBAQAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjEyNSwxMSArMTQwOTEsMzEgQEAKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvbG9nbWF0Y2gubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyMTgzLDcgKzE0MTY5LDExNiBAQAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHN0cnVjdC5oCi0uL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiB1dGlsX2Z1bmNzLmggLi91Y2Qtc25tcC9sb2dtYXRjaC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogLi91Y2Qtc25tcC9sb2dtYXRjaC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC9sb2dtYXRjaC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL2xvZ21hdGNoLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL21lbW9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuL3VjZC1zbm1wL21lbW9yeV9haXg0LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEyMTkyLDMyICsxNDI4NywxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTIyMjgsMTEgKzE0MzA1LDMxIEBACiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTIyODgsMTExICsxNDM4NSw2IEBACiAuL3VjZC1zbm1wL21lbW9yeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5LmxvOiAuL3VjZC1zbm1wL21lbW9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3VjZC1zbm1wL21lbW9yeV9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfYWl4NC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvbWVtb3J5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2FpeDQubG86IC4vdWNkLXNubXAvbWVtb3J5X2FpeDQuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTI0MDEsMzIgKzE0MzkzLDE0IEBACiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyNDM3LDExICsxNDQxMSwzMSBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTI0OTYsNyArMTQ0OTAsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvbWVtb3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2RhcndpbjcubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL21lbW9yeS5oCiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmxvOiAuL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTEyNTA2LDMyICsxNDUwMCwxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTI1NDIsMTEgKzE0NTE4LDMxIEBACiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTI2MDEsNyArMTQ1OTcsNyBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC9tZW1vcnlfZHluaXgubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL21lbW9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9keW5peC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vdWNkLXNubXAvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5X2R5bml4LmxvOiAuL3VjZC1zbm1wL21lbW9yeV9keW5peC5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC0xMjYxMSwzMiArMTQ2MDcsMTQgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyNjQ3LDExICsxNDYyNSwzMSBAQAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyNzA2LDcgKzE0NzA0LDEwIEBACiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvbWVtb3J5LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzLmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmggc3RydWN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKKy4vdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmxvOiAuL3VjZC1zbm1wL21lbW9yeS5oCiAuL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5sbzogLi91Y2Qtc25tcC9tZW1vcnlfZnJlZWJzZDIuaCBtaWJkZWZzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTEyNzE2LDMyICsxNDcxNywxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjc1MiwxMSArMTQ3MzUsMzEgQEAKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyODIxLDMyICsxNDgyNCwxNCBAQAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjg1NywxMSArMTQ4NDIsMzEgQEAKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEyOTE2LDcgKzE0OTIxLDcgQEAKIC4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X25ldGJzZDEubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL21lbW9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi91Y2Qtc25tcC9tZW1vcnkuaAogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5sbzogLi91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCkBAIC0xMjkyNiwzMiArMTQ5MzEsMTQgQEAKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEyOTYyLDExICsxNDk0OSwzMSBAQAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzMDIxLDcgKzE1MDI4LDggQEAKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKLS4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmggLi91Y2Qtc25tcC9tZW1vcnkuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIubG86IC4vdWNkLXNubXAvbWVtb3J5LmgKIC4vdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmxvOiAuL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oIG1pYmRlZnMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTEzMDMxLDMyICsxNTAzOSwxNCBAQAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzMDY3LDExICsxNTA1NywzMSBAQAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzEyNyw2ICsxNTEzNyw5IEBACiAuL3VjZC1zbm1wL3Bhc3MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmggc3RydWN0LmgKIC4vdWNkLXNubXAvcGFzcy5sbzogLi91Y2Qtc25tcC9wYXNzLmggbWliZGVmcy5oIC4vdWNkLXNubXAvcGFzc19jb21tb24uaAogLi91Y2Qtc25tcC9wYXNzLmxvOiAuL3VjZC1zbm1wL2V4dGVuc2libGUuaCB1dGlsX2Z1bmNzLmgKKy4vdWNkLXNubXAvcGFzcy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3VjZC1zbm1wL3Bhc3MubG86IHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMzEzNSwzMiArMTUxNDgsMTQgQEAKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTMxNzEsMTEgKzE1MTY2LDMxIEBACiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzIyOSw3ICsxNTI0NCwxMCBAQAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCi0uL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuLi8uLi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmggc3RydWN0LmgKKy4vdWNkLXNubXAvcGFzc19jb21tb24ubG86IC4uLy4uL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBzdHJ1Y3QuaAorLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmxvOiAuL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTMyMzksMzIgKzE1MjU3LDE0IEBACiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzI3NSwxMSArMTUyNzUsMzEgQEAKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzMzNSw3ICsxNTM1NSw5IEBACiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBzdHJ1Y3QuaAogLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IC4vdWNkLXNubXAvcGFzc19wZXJzaXN0LmggbWliZGVmcy5oCiAuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogLi91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oIC4vdWNkLXNubXAvZXh0ZW5zaWJsZS5oCi0uL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy5oIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC9wYXNzX3BlcnNpc3QubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCisuL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEzMzQ0LDMyICsxNTM2NiwxNCBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzMzgwLDExICsxNTM4NCwzMSBAQAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzQzOSw3ICsxNTQ2Myw5IEBACiAuL3VjZC1zbm1wL3Byb2MubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC9wcm9jLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHN0cnVjdC5oCiAuL3VjZC1zbm1wL3Byb2MubG86IC4vdWNkLXNubXAvcHJvYy5oIG1pYmRlZnMuaCAuL3VjZC1zbm1wL2Vycm9ybWliLmgKLS4vdWNkLXNubXAvcHJvYy5sbzogdXRpbF9mdW5jcy5oIC4uLy4uL2FnZW50L2tlcm5lbC5oCisuL3VjZC1zbm1wL3Byb2MubG86IHV0aWxfZnVuY3MuaCB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgKKy4vdWNkLXNubXAvcHJvYy5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIC4uLy4uL2FnZW50L2tlcm5lbC5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTEzNDQ4LDMyICsxNTQ3NCwxNCBAQAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzQ4NCwxMSArMTU0OTIsMzEgQEAKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL3Byb3h5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC9wcm94eS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvcHJveHkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzNTUwLDMyICsxNTU3OCwxNCBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzU4NiwxMSArMTU1OTYsMzEgQEAKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvdmVyc2lvbmluZm8ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzNjQ1LDYgKzE1Njc1LDIyMiBAQAogLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHN0cnVjdC5oCiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiAuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmggbWliZGVmcy5oIHV0aWxfZnVuY3MuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaAorLi91Y2Qtc25tcC92ZXJzaW9uaW5mby5sbzogdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4vdWNkLXNubXAvdm1zdGF0X2FpeDQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfdmFycy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlYWRfY29uZmlnLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyX2dyb3VwLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbnVsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvb2xkX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NlcmlhbGl6ZS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hdXRvX25saXN0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmggLi91Y2Qtc25tcC92bXN0YXQuaAorLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IG1pYmRlZnMuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMzY1MywzMiArMTU4OTksMTQgQEAKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzNjg5LDExICsxNTkxNywzMSBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzNzUwLDIxNSArMTU5OTgsNiBAQAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaAogLi91Y2Qtc25tcC92bXN0YXQubG86IC4vdWNkLXNubXAvdm1zdGF0LmggbWliZGVmcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYWl4NC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2FpeDQubG86IC4vdWNkLXNubXAvdm1zdGF0X2FpeDQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfaGFuZGxlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2JhYnlfc3RlcHMuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC93YXRjaGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZGVidWdfaGFuZGxlci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcmVhZF9vbmx5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYnVsa190b19uZXh0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAotLi91Y2Qtc25tcC92bXN0YXRfYnNkaTQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2JzZGk0LmxvOiBtaWJkZWZzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTM5NjcsMzIgKzE2MDA2LDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0MDAzLDExICsxNjAyNCwzMSBAQAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQwNjIsNyArMTYxMDMsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2RhcndpbjcubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmxvOiBtaWJkZWZzLmggLi91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTE0MDcyLDMyICsxNjExMywxNCBAQAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTQxMDgsMTEgKzE2MTMxLDMxIEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQxNjYsNyArMTYyMDksNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92bXN0YXRfZHluaXgubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5sbzogdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIC4vdWNkLXNubXAvdm1zdGF0LmgKIC4vdWNkLXNubXAvdm1zdGF0X2R5bml4LmxvOiAuL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTE0MTc2LDMyICsxNjIxOSwxNCBAQAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTQyMTIsMTEgKzE2MjM3LDMxIEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQyNzEsOCArMTYzMTYsOSBAQAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAogLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5sbzogbWliZGVmcy5oIC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmxvOiAuL3VjZC1zbm1wL3Ztc3RhdC5oIG1pYmRlZnMuaAorLi91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIubG86IC4vdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTQyODEsMzIgKzE2MzI3LDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0MzE3LDExICsxNjM0NSwzMSBAQAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQzNzUsNyArMTY0MjMsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAogLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIG1pYmRlZnMuaAotLi91Y2Qtc25tcC92bXN0YXRfaHB1eC5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2hwdXgubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmxvOiAuL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTQzODUsMzIgKzE2NDMzLDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNDQyMSwxMSArMTY0NTEsMzEgQEAKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDQ4MSw3ICsxNjUzMSw3IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAogLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9jcHUuaAotLi91Y2Qtc25tcC92bXN0YXRfbGludXgubG86IG1pYmRlZnMuaCBzdHJ1Y3QuaCB1dGlsX2Z1bmNzLmgKKy4vdWNkLXNubXAvdm1zdGF0X2xpbnV4LmxvOiBtaWJkZWZzLmggc3RydWN0LmggdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5sbzogLi91Y2Qtc25tcC92bXN0YXQuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTQ0OTEsMzIgKzE2NTQxLDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0NTI3LDExICsxNjU1OSwzMSBAQAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMTQ1ODYsNyArMTY2MzgsNyBAQAogLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaAotLi91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5sbzogdXRpbF9mdW5jcy5oIHN0cnVjdC5oIC4vdWNkLXNubXAvdm1zdGF0LmgKKy4vdWNkLXNubXAvdm1zdGF0X25ldGJzZDEubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCAuL3VjZC1zbm1wL3Ztc3RhdC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmxvOiBtaWJkZWZzLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaApAQCAtMTQ1OTYsMzIgKzE2NjQ4LDE0IEBACiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNDYzMiwxMSArMTY2NjYsMzEgQEAKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDY5MCw4ICsxNjc0NCwyNTUgQEAKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaCBtaWJkZWZzLmgKLS4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiB1dGlsX2Z1bmNzLmggc3RydWN0LmggLi91Y2Qtc25tcC92bXN0YXQuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaAorLi91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIubG86IC4vdWNkLXNubXAvdm1zdGF0LmgKIC4vdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmxvOiAuL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF9hZ2VudC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC92YXJfc3RydWN0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FsbF9oZWxwZXJzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYmFieV9zdGVwcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2NhbGFyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L211bHRpcGxleGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kZWJ1Z19oYW5kbGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9jYWNoZV9oYW5kbGVyLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yZWFkX29ubHkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Jvd19tZXJnZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9idWxrX3RvX25leHQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21vZGVfZW5kX2NhbGwuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMubG86IC4vdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NubXBfYWdlbnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc25tcF92YXJzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdmFyX3N0cnVjdC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hbGxfaGVscGVycy5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tdWx0aXBsZXhlci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9udWxsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9vbGRfYXBpLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9yb3dfbWVyZ2UuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc2VyaWFsaXplLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tb2RlX2VuZF9jYWxsLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YXNldC5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfYXJyYXkuaAorLi91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmxvOiAuL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTE0NzAwLDMyICsxNzAwMSwxNCBAQAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNDczNiwxMSArMTcwMTksMzEgQEAKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE0Nzk0LDcgKzE3MDk3LDEwIEBACiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCiAuL3V0aWxpdGllcy9leGVjdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKLS4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IHVjZC1zbm1wL2Vycm9ybWliLmggbWliZGVmcy5oIHV0aWxfZnVuY3MuaCBzdHJ1Y3QuaAorLi91dGlsaXRpZXMvZXhlY3V0ZS5sbzogdWNkLXNubXAvZXJyb3JtaWIuaCBtaWJkZWZzLmggdXRpbF9mdW5jcy5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiB1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgKKy4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIHN0cnVjdC5oCisuL3V0aWxpdGllcy9leGVjdXRlLmxvOiB1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKIC4vdXRpbGl0aWVzL2V4ZWN1dGUubG86IC4vdXRpbGl0aWVzL2V4ZWN1dGUuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKQEAgLTE0ODA0LDMyICsxNzExMCwxNCBAQAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0ODQwLDExICsxNzEyOCwzMSBAQAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdXRpbGl0aWVzL2lxdWVyeS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3V0aWxpdGllcy9pcXVlcnkubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91dGlsaXRpZXMvaXF1ZXJ5LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDkwNiwzMiArMTcyMTQsMTQgQEAKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE0OTQyLDExICsxNzIzMiwzMSBAQAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE0OTk5LDUgKzE3MzA5LDEwOSBAQAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfaXRlcmF0b3IuaAogLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKIC4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2FycmF5LmgKLS4vdXRpbGl0aWVzL292ZXJyaWRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21mZC5oIHV0aWxfZnVuY3MuaAotLi91dGlsaXRpZXMvb3ZlcnJpZGUubG86IHN0cnVjdC5oCisuL3V0aWxpdGllcy9vdmVycmlkZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9tZmQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX2FnZW50LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3Zhcl9zdHJ1Y3QuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWFkX2NvbmZpZy5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWxsX2hlbHBlcnMuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9iYWJ5X3N0ZXBzLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zY2FsYXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3NjYWxhcl9ncm91cC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbXVsdGlwbGV4ZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L251bGwuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RlYnVnX2hhbmRsZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L29sZF9hcGkuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3JlYWRfb25seS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvcm93X21lcmdlLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zZXJpYWxpemUuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2J1bGtfdG9fbmV4dC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbW9kZV9lbmRfY2FsbC5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGEuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9pdGVyYXRvci5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9hcnJheS5oCisuL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWZkLmgKKy4vdXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5sbzogLi91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24uaCBiL2FnZW50L21pYmdyb3VwL1Jtb24uaAppbmRleCA4NDdlYWE5Li4zYTdkM2E0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi5oCkBAIC00Nyw3ICs0Nyw5IEBACiBjb25maWdfcmVxdWlyZShSbW9uL3Jvd3MpCiBjb25maWdfcmVxdWlyZShSbW9uL2FndXRpbCkKIGNvbmZpZ19yZXF1aXJlKFJtb24vc3RhdGlzdGljcykKLWNvbmZpZ19yZXF1aXJlKFJtb24vYWxhcm0pCisvKiBvbGRlciBpbXBsZW1lbnRhdGlvbjogKi8KKy8qIGNvbmZpZ19yZXF1aXJlKFJtb24vYWxhcm0pICovCitjb25maWdfcmVxdWlyZShSbW9uL2FsYXJtVGFibGUpCiBjb25maWdfcmVxdWlyZShSbW9uL2hpc3RvcnkpCiBjb25maWdfcmVxdWlyZShSbW9uL2V2ZW50KQogY29uZmlnX2FkZF9taWIoUk1PTi1NSUIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hZ3V0aWwuYwppbmRleCAzYjBjODdhLi4yNmJhMTczIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2FndXRpbC5jCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWd1dGlsLmMKQEAgLTIyLDggKzIyLDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJhZ3V0aWwuaCIKICNpbmNsdWRlICJhZ3V0aWxfYXBpLmgiCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uYwppbmRleCBhMDRkNDE1Li5hYWM1YjQyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5jCkBAIC00Myw3ICs0Myw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgImFsYXJtLmgiCiAgICAgLyoKICAgICAgKiBJbXBsZW1lbnRhdGlvbiBoZWFkZXJzIApAQCAtNjg0LDIzICs2ODMsMzAgQEAKIG9pZCAgICAgICAgICAgICBvaWRhbGFybVZhcmlhYmxlc09pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxNiwgMyB9OwogCiBzdHJ1Y3QgdmFyaWFibGU3IG9pZGFsYXJtVmFyaWFibGVzW10gPSB7Ci0gICAge0lEYWxhcm1JbmRleCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDF9fSwKLSAgICB7SURhbGFybUludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDJ9fSwKLSAgICB7SURhbGFybVZhcmlhYmxlLCBBU05fT0JKRUNUX0lELCBSV1JJVEUsIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgM319LAotICAgIHtJRGFsYXJtU2FtcGxlVHlwZSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCA0fX0sCi0gICAge0lEYWxhcm1WYWx1ZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDV9fSwKLSAgICB7SURhbGFybVN0YXJ0dXBBbGFybSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2FsYXJtRW50cnksIDMsCi0gICAgIHsxLCAxLCA2fX0sCi0gICAge0lEYWxhcm1SaXNpbmdUaHJlc2hvbGQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9hbGFybUVudHJ5LCAzLAotICAgICB7MSwgMSwgN319LAotICAgIHtJRGFsYXJtRmFsbGluZ1RocmVzaG9sZCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2FsYXJtRW50cnksIDMsCi0gICAgIHsxLCAxLCA4fX0sCi0gICAge0lEYWxhcm1SaXNpbmdFdmVudEluZGV4LCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywKLSAgICAgezEsIDEsIDl9fSwKLSAgICB7SURhbGFybUZhbGxpbmdFdmVudEluZGV4LCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywKLSAgICAgezEsIDEsIDEwfX0sCi0gICAge0lEYWxhcm1Pd25lciwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDExfX0sCi0gICAge0lEYWxhcm1TdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgMTJ9fQorICAgIHtJRGFsYXJtSW5kZXgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAxfX0sCisgICAge0lEYWxhcm1JbnRlcnZhbCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAyfX0sCisgICAge0lEYWxhcm1WYXJpYWJsZSwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDN9fSwKKyAgICB7SURhbGFybVNhbXBsZVR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgIHtJRGFsYXJtVmFsdWUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCA1fX0sCisgICAge0lEYWxhcm1TdGFydHVwQWxhcm0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgNn19LAorICAgIHtJRGFsYXJtUmlzaW5nVGhyZXNob2xkLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDd9fSwKKyAgICB7SURhbGFybUZhbGxpbmdUaHJlc2hvbGQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hbGFybUVudHJ5LCAzLCB7MSwgMSwgOH19LAorICAgIHtJRGFsYXJtUmlzaW5nRXZlbnRJbmRleCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCA5fX0sCisgICAge0lEYWxhcm1GYWxsaW5nRXZlbnRJbmRleCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAxMH19LAorICAgIHtJRGFsYXJtT3duZXIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2FsYXJtRW50cnksIDMsIHsxLCAxLCAxMX19LAorICAgIHtJRGFsYXJtU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYWxhcm1FbnRyeSwgMywgezEsIDEsIDEyfX0KIH07CiAKIHZvaWQKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uaCBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm0uaAppbmRleCBhZTQ4YzJkLi4wNWYyMTUyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybS5oCkBAIC0yMSw4ICsyMSw2IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9BTEFSTV9ICiAjZGVmaW5lIF9NSUJHUk9VUF9BTEFSTV9ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCi0KICAgICAvKgogICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMgCiAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5YzJhZWEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2FsYXJtVGFibGUuYwpAQCAtMCwwICsxLDgzMSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKK3wgRWRpdGlvbiBIaXN0b3J5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Cit8ICMgICBEYXRlICAgICBDb21tZW50cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCeSAgfAorfCAtLS0gLS0tLS0tLS0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLS0tIHwKK3wgICAxIDA3LzA1LzE4IENyZWF0ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaSB8CisrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBtaWIyYy50YWJsZV9kYXRhLmNvbmYsdiAxLjExLjIuMSAyMDA2LzAxLzExIDE1OjE3OjQ3IGR0czEyIEV4cCAkCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICJ1dGlsaXRpZXMvaXF1ZXJ5LmgiCisjaW5jbHVkZSAiYWxhcm1UYWJsZS5oIgorCisvKiogSW5pdGlhbGl6ZXMgdGhlIGFsYXJtVGFibGUgbW9kdWxlICovCit2b2lkCitpbml0X2FsYXJtVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nIAorICAgICAqLworICAgIGluaXRpYWxpemVfdGFibGVfYWxhcm1UYWJsZSgpOworfQorCisvKiogSW5pdGlhbGl6ZSB0aGUgYWxhcm1UYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfYWxhcm1UYWJsZSh2b2lkKQoreworICAgIHN0YXRpYyBvaWQgICAgICBhbGFybVRhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxNiwgMywgMSB9OworICAgIHNpemVfdCAgICAgICAgICBhbGFybVRhYmxlX29pZF9sZW4gPSBPSURfTEVOR1RIKGFsYXJtVGFibGVfb2lkKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWc7CisgICAgbmV0c25tcF90ZGF0YSAgKnRhYmxlX2RhdGE7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKworICAgIERFQlVHTVNHVEwoKCAicm1vbjphbGFybVRhYmxlIiwgImluaXRpYWxpemVfdGFibGVfYWxhcm1UYWJsZSBjYWxsZWQuXG4iKSk7CisgICAgcmVnID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImFsYXJtVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisKKyAgICB0YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfdGFibGUoImFsYXJtVGFibGUiLCAwKTsKKyAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgICAvKiBpbmRleDogYWxhcm1JbmRleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworCisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9BTEFSTUlOREVYOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fQUxBUk1TVEFUVVM7CisKKyAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7CisKKyAgICAvKgorICAgICAqIEluaXRpYWxpc2UgdGhlIGNvbnRlbnRzIG9mIHRoZSB0YWJsZSBoZXJlIAorICAgICAqLworfQorCitleHRlcm4gaW50CitldmVudF9hcGlfc2VuZF9hbGFybSh1X2NoYXIgaXNfcmlzaW5nLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGFsYXJtX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV2ZW50X2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgb2lkICogYWxhcm1lZF92YXIsCisgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYWxhcm1lZF92YXJfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHNhbXBsZV90eXBlLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHRoZV90aHJlc2hvbGQsIGNoYXIgKmFsYXJtX2Rlc2NyKTsKKworI2RlZmluZSBBTEFSTV9TVFIxX0xFTgkzMgordHlwZWRlZiBlbnVtIHsKKyAgICBSTU9OMV9FTlRSWV9WQUxJRCA9IDEsCisgICAgUk1PTjFfRU5UUllfQ1JFQVRFX1JFUVVFU1QsCisgICAgUk1PTjFfRU5UUllfVU5ERVJfQ1JFQVRJT04sCisgICAgUk1PTjFfRU5UUllfSU5WQUxJRAorfSBSTU9OMV9FTlRSWV9TVEFUVVNfVDsKKwordHlwZWRlZiBlbnVtIHsKKyAgICBTQU1QTEVfVFlQRV9BQlNPTFVURSA9CisgICAgMSwKKyAgICBTQU1QTEVfVFlQRV9ERUxURQorfSBTQU1QTEVfVFlQRV9UOworCit0eXBlZGVmIGVudW0geworICAgIEFMQVJNX05PVEhJTkcgPQorICAgIDAsCisgICAgQUxBUk1fUklTSU5HLAorICAgIEFMQVJNX0ZBTExJTkcsCisgICAgQUxBUk1fQk9USAorfSBBTEFSTV9UWVBFX1Q7CisgICAgLyoKKyAgICAgKiBUeXBpY2FsIGRhdGEgc3RydWN0dXJlIGZvciBhIHJvdyBlbnRyeSAKKyAgICAgKi8KK3N0cnVjdCBhbGFybVRhYmxlX2VudHJ5IHsKKyAgICAvKgorICAgICAqIEluZGV4IHZhbHVlcyAKKyAgICAgKi8KKyAgICBsb25nICAgICAgICAgICAgYWxhcm1JbmRleDsKKworICAgIC8qCisgICAgICogQ29sdW1uIHZhbHVlcyAKKyAgICAgKi8KKyAgICBsb25nICAgICAgICAgICAgYWxhcm1JbnRlcnZhbDsKKyAgICBsb25nICAgICAgICAgICAgb2xkX2FsYXJtSW50ZXJ2YWw7CisgICAgb2lkICAgICAgICAgICAgIGFsYXJtVmFyaWFibGVbQUxBUk1fU1RSMV9MRU5dOworICAgIHNpemVfdCAgICAgICAgICBhbGFybVZhcmlhYmxlX2xlbjsKKyAgICBvaWQgICAgICAgICAgICAgb2xkX2FsYXJtVmFyaWFibGVbQUxBUk1fU1RSMV9MRU5dOworICAgIHNpemVfdCAgICAgICAgICBvbGRfYWxhcm1WYXJpYWJsZV9sZW47CisgICAgbG9uZyAgICAgICAgICAgIGFsYXJtU2FtcGxlVHlwZTsKKyAgICBsb25nICAgICAgICAgICAgb2xkX2FsYXJtU2FtcGxlVHlwZTsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1WYWx1ZTsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1TdGFydHVwQWxhcm07CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybVN0YXJ0dXBBbGFybTsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1SaXNpbmdUaHJlc2hvbGQ7CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybVJpc2luZ1RocmVzaG9sZDsKKyAgICBsb25nICAgICAgICAgICAgYWxhcm1GYWxsaW5nVGhyZXNob2xkOworICAgIGxvbmcgICAgICAgICAgICBvbGRfYWxhcm1GYWxsaW5nVGhyZXNob2xkOworICAgIGxvbmcgICAgICAgICAgICBhbGFybVJpc2luZ0V2ZW50SW5kZXg7CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybVJpc2luZ0V2ZW50SW5kZXg7CisgICAgbG9uZyAgICAgICAgICAgIGFsYXJtRmFsbGluZ0V2ZW50SW5kZXg7CisgICAgbG9uZyAgICAgICAgICAgIG9sZF9hbGFybUZhbGxpbmdFdmVudEluZGV4OworICAgIGNoYXIgICAgICAgICAgICBhbGFybU93bmVyW0FMQVJNX1NUUjFfTEVOXTsKKyAgICBzaXplX3QgICAgICAgICAgYWxhcm1Pd25lcl9sZW47CisgICAgY2hhciAgICAgICAgICAgIG9sZF9hbGFybU93bmVyW0FMQVJNX1NUUjFfTEVOXTsKKyAgICBzaXplX3QgICAgICAgICAgb2xkX2FsYXJtT3duZXJfbGVuOworICAgIGxvbmcgICAgICAgICAgICBhbGFybVN0YXR1czsKKyAgICBsb25nICAgICAgICAgICAgb2xkX2FsYXJtU3RhdHVzOworCisgICAgaW50ICAgICAgICAgICAgIHZhbGlkOworICAgIHVuc2lnbmVkIGludCAgICBhbGFybV9yZWc7CisgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOworICAgIHVfbG9uZyAgICAgICAgICBsYXN0X2Fic192YWx1ZTsKKyAgICBBTEFSTV9UWVBFX1QgICAgcHJldl9hbGFybTsgICAgICAgIC8qIE5PVEhJTkcgfCBSSVNJTkcgfCBGQUxMSU5HICovCit9OworCisKK3ZvaWQKK2FsYXJtVGFibGVfcnVuKCB1bnNpZ25lZCBpbnQgcmVnLCB2b2lkICpjbGllbnRhcmcpCit7CisgICAgc3RydWN0IGFsYXJtVGFibGVfZW50cnkgKmVudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopY2xpZW50YXJnOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyOworICAgIHVfbG9uZyBuZXdfdmFsdWU7CisgICAgaW50IHJjOworCisgICAgaWYgKCFlbnRyeSkgeworICAgICAgICBzbm1wX2FsYXJtX3VucmVnaXN0ZXIoIHJlZyApOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8qCisgICAgICogUmV0cmlldmUgdGhlIHJlcXVlc3RlZCBNSUIgdmFsdWUocykuLi4KKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCggInJtb246YWxhcm1UYWJsZSIsICJhbGFybVRhYmxlX3J1biBjYWxsZWRcbiIpKTsKKyAgICB2YXIgPSAobmV0c25tcF92YXJpYWJsZV9saXN0ICopU05NUF9NQUxMT0NfVFlQRURFRiggbmV0c25tcF92YXJpYWJsZV9saXN0ICk7CisgICAgaWYgKCF2YXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZmFpbGVkIHRvIGNyZWF0ZSBhbGFybVRhYmxlIHF1ZXJ5IHZhcmJpbmQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzbm1wX3NldF92YXJfb2JqaWQoIHZhciwgZW50cnktPmFsYXJtVmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVZhcmlhYmxlX2xlbiApOworICAgIAorICAgIHJjID0gbmV0c25tcF9xdWVyeV9nZXQoICB2YXIsIGVudHJ5LT5zZXNzaW9uICk7CisgICAgaWYgKCByYyAhPSBTTk1QX0VSUl9OT0VSUk9SICkgeworICAgICAgICBERUJVR01TR1RMKCggInJtb246YWxhcm1UYWJsZSIsICJhbGFybVZhcmlhYmxlIHF1ZXJ5IGZhaWxlZCAoJWQpXG4iLCByYykpOworICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisJc3dpdGNoICh2YXItPnR5cGUpIHsKKyAgICBjYXNlIEFTTl9JTlRFR0VSOgorICAgIGNhc2UgQVNOX0NPVU5URVI6CisgICAgY2FzZSBBU05fVElNRVRJQ0tTOgorICAgIGNhc2UgQVNOX0dBVUdFOgorICAgIGNhc2UgQVNOX0NPVU5URVI2NDoKKyAgICAgICAgbmV3X3ZhbHVlID0gKnZhci0+dmFsLmludGVnZXI7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiaW52YWxpZCB0eXBlICglZClcbiIsIHZhci0+dHlwZSkpOworICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZCh2YXIpOworICAgICAgICByZXR1cm4gOworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1JbmRleC4lZCBsYXN0IHZhbHVlICglZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBlbnRyeS0+bGFzdF9hYnNfdmFsdWUpKTsKKyAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgImFsYXJtSW5kZXguJWQgbmV3X3ZhbHVlICglZClcbiIsIGVudHJ5LT5hbGFybUluZGV4LCBuZXdfdmFsdWUpKTsKKworICAgIGVudHJ5LT5hbGFybVZhbHVlID0gKFNBTVBMRV9UWVBFX0FCU09MVVRFID09IGVudHJ5LT5hbGFybVNhbXBsZVR5cGUpID8KKyAgICAgICAgbmV3X3ZhbHVlIDogbmV3X3ZhbHVlIC0gZW50cnktPmxhc3RfYWJzX3ZhbHVlOworICAgIGVudHJ5LT5sYXN0X2Fic192YWx1ZSA9IG5ld192YWx1ZTsKKworICAgIGlmIChBTEFSTV9SSVNJTkcgIT0gZW50cnktPnByZXZfYWxhcm0gJiYKKyAgICAgICAgZW50cnktPmFsYXJtVmFsdWUgPj0gZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkKSB7CisgICAgICAgIGlmIChTTk1QX0VSUl9OT0VSUk9SID09IGV2ZW50X2FwaV9zZW5kX2FsYXJtKDEsIGVudHJ5LT5hbGFybUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVJpc2luZ0V2ZW50SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtVmFyaWFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtVmFyaWFibGVfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVNhbXBsZVR5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVJpc2luZ1RocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmlzaW5nIikpCisgICAgICAgICAgICBlbnRyeS0+cHJldl9hbGFybSA9IEFMQVJNX1JJU0lORzsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImZhaWxlZCB0byBzZW5kIHJpc2luZyBhbGFybVxuIik7CisgICAgfQorICAgIGVsc2UgaWYgKEFMQVJNX0ZBTExJTkcgIT0gZW50cnktPnByZXZfYWxhcm0gJiYKKyAgICAgICAgICAgICBlbnRyeS0+YWxhcm1WYWx1ZSA8PSBlbnRyeS0+YWxhcm1GYWxsaW5nVGhyZXNob2xkKSB7CisgICAgICAgIGlmIChTTk1QX0VSUl9OT0VSUk9SID09IGV2ZW50X2FwaV9zZW5kX2FsYXJtKDAsIGVudHJ5LT5hbGFybUluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1WYXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hbGFybVZhcmlhYmxlX2xlbiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1TYW1wbGVUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmFsYXJtVmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1GYWxsaW5nVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhbGxpbmciKSkKKyAgICAgICAgICAgIGVudHJ5LT5wcmV2X2FsYXJtID0gQUxBUk1fRkFMTElORzsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImZhaWxlZCB0byBzZW5kIGZhbGxpbmcgYWxhcm1cbiIpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIERFQlVHTVNHVEwoKCJybW9uOmFsYXJtVGFibGUiLCAibm8gYWxhcm0gc2VudFxuIikpOworCisgICAgc25tcF9mcmVlX3ZhcmJpbmQodmFyKTsKK30KKwordm9pZAorYWxhcm1UYWJsZV9lbmFibGUoIHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICplbnRyeSApCit7CisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgREVCVUdNU0dUTCgoICJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1UYWJsZV9lbmFibGUgY2FsbGVkLlxuIikpOworICAgIGlmIChlbnRyeS0+YWxhcm1fcmVnKSB7CisgICAgICAgIHNubXBfYWxhcm1fdW5yZWdpc3RlciggZW50cnktPmFsYXJtX3JlZyApOworICAgICAgICBlbnRyeS0+YWxhcm1fcmVnID0gMDsKKyAgICB9CisKKyAgICBpZiAoZW50cnktPmFsYXJtSW50ZXJ2YWwpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogcmVnaXN0ZXIgb25jZSB0byBydW4gQVNBUCwgYW5kIGFub3RoZXIgdG8gcnVuCisgICAgICAgICAqIGF0IHRoZSB0cmlnZ2VyIGZyZXF1ZW5jeQorICAgICAgICAgKi8KKyAgICAgICAgc25tcF9hbGFybV9yZWdpc3RlcigwLCAwLCBhbGFybVRhYmxlX3J1biwgZW50cnkgKTsKKyAgICAgICAgZW50cnktPmFsYXJtX3JlZyA9IHNubXBfYWxhcm1fcmVnaXN0ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+YWxhcm1JbnRlcnZhbCwgU0FfUkVQRUFULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9ydW4sIGVudHJ5ICk7CisgICAgfQorfQorCit2b2lkCithbGFybVRhYmxlX2Rpc2FibGUoIHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICplbnRyeSApCit7CisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisgICAgREVCVUdNU0dUTCgoICJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1UYWJsZV9kaXNhYmxlIGNhbGxlZC5cbiIpKTsKKyAgICBpZiAoZW50cnktPmFsYXJtX3JlZykgeworICAgICAgICBzbm1wX2FsYXJtX3VucmVnaXN0ZXIoIGVudHJ5LT5hbGFybV9yZWcgKTsKKyAgICAgICAgZW50cnktPmFsYXJtX3JlZyA9IDA7CisgICAgICAgIC8qIFhYWCAtIHBlcmhhcHMgcmVsZWFzZSBhbnkgcHJldmlvdXMgcmVzdWx0cyAqLworICAgIH0KK30KKworLyoKKyAqIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlIAorICovCituZXRzbm1wX3RkYXRhX3JvdyAqCithbGFybVRhYmxlX2NyZWF0ZUVudHJ5KG5ldHNubXBfdGRhdGEgKiB0YWJsZV9kYXRhLCBsb25nIGFsYXJtSW5kZXgpCit7CisgICAgc3RydWN0IGFsYXJtVGFibGVfZW50cnkgKmVudHJ5OworICAgIG5ldHNubXBfdGRhdGFfcm93ICpyb3c7CisKKyAgICBERUJVR01TR1RMKCggInJtb246YWxhcm1UYWJsZSIsICJhbGFybVRhYmxlX2NyZWF0ZUVudHJ5IGNhbGxlZC5cbiIpKTsKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoc3RydWN0IGFsYXJtVGFibGVfZW50cnkpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcm93ID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfcm93KCk7CisgICAgaWYgKCFyb3cpIHsKKyAgICAgICAgU05NUF9GUkVFKGVudHJ5KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHJvdy0+ZGF0YSA9IGVudHJ5OworICAgIGVudHJ5LT5hbGFybUluZGV4ID0gYWxhcm1JbmRleDsKKyAgICBlbnRyeS0+YWxhcm1JbnRlcnZhbCA9IDE7CisgICAgZW50cnktPmFsYXJtU2FtcGxlVHlwZSA9IFNBTVBMRV9UWVBFX0FCU09MVVRFOworICAgIGVudHJ5LT5hbGFybVN0YXJ0dXBBbGFybSA9IEFMQVJNX0JPVEg7CisgICAgZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkID0gMTA7CisgICAgZW50cnktPmFsYXJtRmFsbGluZ1RocmVzaG9sZCA9IDU7CisgICAgZW50cnktPmFsYXJtUmlzaW5nRXZlbnRJbmRleCA9IGFsYXJtSW5kZXg7CisgICAgZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXggPSBhbGFybUluZGV4OworICAgIGVudHJ5LT5wcmV2X2FsYXJtID0gQUxBUk1fTk9USElORzsKKyAgICBuZXRzbm1wX3RkYXRhX3Jvd19hZGRfaW5kZXgocm93LCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihlbnRyeS0+YWxhcm1JbmRleCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+YWxhcm1JbmRleCkpOworICAgIG5ldHNubXBfdGRhdGFfYWRkX3Jvdyh0YWJsZV9kYXRhLCByb3cpOworICAgIHJldHVybiByb3c7Cit9CisKKy8qCisgKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgCisgKi8KK3ZvaWQKK2FsYXJtVGFibGVfcmVtb3ZlRW50cnkobmV0c25tcF90ZGF0YSAqIHRhYmxlX2RhdGEsIG5ldHNubXBfdGRhdGFfcm93ICogcm93KQoreworICAgIHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICplbnRyeTsKKworICAgIERFQlVHTVNHVEwoKCAicm1vbjphbGFybVRhYmxlIiwgImFsYXJtVGFibGVfcmVtb3ZlRW50cnkgY2FsbGVkLlxuIikpOworICAgIGlmICghcm93KQorICAgICAgICByZXR1cm47ICAgICAgICAgICAgICAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLworICAgIGVudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgIG5ldHNubXBfdGRhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93KHRhYmxlX2RhdGEsIHJvdyk7CisgICAgaWYgKGVudHJ5KSB7CisgICAgICAgIGFsYXJtVGFibGVfZGlzYWJsZShlbnRyeSk7CisgICAgICAgIFNOTVBfRlJFRShlbnRyeSk7ICAgICAgIC8qIFhYWCAtIHJlbGVhc2UgYW55IG90aGVyIGludGVybmFsIHJlc291cmNlcyAqLworICAgIH0KK30KKworCisvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIGFsYXJtVGFibGUgdGFibGUgKi8KK2ludAorYWxhcm1UYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3Q7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CisgICAgbmV0c25tcF90ZGF0YSAgKnRhYmxlX2RhdGE7CisgICAgbmV0c25tcF90ZGF0YV9yb3cgKnRhYmxlX3JvdzsKKyAgICBzdHJ1Y3QgYWxhcm1UYWJsZV9lbnRyeSAqdGFibGVfZW50cnk7CisgICAgaW50ICAgICAgICAgICAgIHJldDsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3MgPSBOVUxMOworICAgIGNoYXIgICAgICAgICAgICpzZWNOYW1lOworCisgICAgREVCVUdNU0dUTCgoICJybW9uOmFsYXJtVGFibGUiLCAiYWxhcm1UYWJsZV9oYW5kbGVyIGNhbGxlZC5cbiIpKTsKKyAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogUmVhZC1zdXBwb3J0IChhbHNvIGNvdmVycyBHZXROZXh0IHJlcXVlc3RzKQorICAgICAgICAgKi8KKyAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTkRFWDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybUluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNSU5URVJWQUw6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVZBUklBQkxFOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGFibGVfZW50cnktPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZV9sZW4gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob2lkKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TYW1wbGVUeXBlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNVkFMVUU6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1WYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVJUVVBBTEFSTToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXJ0dXBBbGFybSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVJpc2luZ1RocmVzaG9sZCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTUZBTExJTkdUSFJFU0hPTEQ6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxhcm1GYWxsaW5nVGhyZXNob2xkKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybVJpc2luZ0V2ZW50SW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGFybUZhbGxpbmdFdmVudEluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybU93bmVyX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXR1cyk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogV3JpdGUtc3VwcG9ydAorICAgICAgICAgKi8KKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUxOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jaGVja192Yl9pbnQocmVxdWVzdC0+cmVxdWVzdHZiKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCByZXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVZBUklBQkxFOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TQU1QTEVUWVBFOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlJyAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludChyZXF1ZXN0LT5yZXF1ZXN0dmIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIHJldCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNU1RBUlRVUEFMQVJNOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlJyAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludChyZXF1ZXN0LT5yZXF1ZXN0dmIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIHJldCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfaW50X3JhbmdlJyAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludChyZXF1ZXN0LT5yZXF1ZXN0dmIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgIT0gU05NUF9FUlJfTk9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIHJldCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jaGVja192Yl9pbnQocmVxdWVzdC0+cmVxdWVzdHZiKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCByZXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl9pbnRfcmFuZ2UnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfaW50KHJlcXVlc3QtPnJlcXVlc3R2Yik7CisgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwgcmV0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgcmV0ID0gbmV0c25tcF9jaGVja192Yl9pbnQocmVxdWVzdC0+cmVxdWVzdHZiKTsKKyAgICAgICAgICAgICAgICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCByZXQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTU9XTkVSOgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFUVVM6CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl9pbnRfcmFuZ2UnIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfaW50KHJlcXVlc3QtPnJlcXVlc3R2Yik7CisgICAgICAgICAgICAgICAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwgcmV0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX3JvdyA9IG5ldHNubXBfdGRhdGFfZXh0cmFjdF9yb3cocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlKHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNVkFSSUFCTEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVJUVVBBTEFSTToKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1SSVNJTkdFVkVOVElOREVYOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBpZiAoIXRhYmxlX3JvdykgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9yb3cgPQorICAgICAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9jcmVhdGVFbnRyeSh0YWJsZV9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFibGVfaW5mby0+aW5kZXhlcy0+dmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2VyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlX3JvdykgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pbnNlcnRfdGRhdGFfcm93KHJlcXVlc3QsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoc3RydWN0IGFsYXJtVGFibGVfZW50cnkgKikKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3RkYXRhX2V4dHJhY3RfZW50cnkocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9yb3cgPSBuZXRzbm1wX3RkYXRhX2V4dHJhY3Rfcm93KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZGF0YSA9IG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZShyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKworICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNSU5URVJWQUw6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVZBUklBQkxFOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TQU1QTEVUWVBFOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFSVFVQQUxBUk06CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVg6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTU9XTkVSOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFUVVM6CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9yZW1vdmVFbnRyeSh0YWJsZV9kYXRhLCB0YWJsZV9yb3cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtSW50ZXJ2YWwgPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbDsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbCA9CisgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1WQVJJQUJMRToKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZV9sZW4gPQorICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW4gLyBzaXplb2Yob2lkKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQodGFibGVfZW50cnktPmFsYXJtVmFyaWFibGUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZSkpOworICAgICAgICAgICAgICAgIG1lbWNweSh0YWJsZV9lbnRyeS0+YWxhcm1WYXJpYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwub2JqaWQsCisgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVNhbXBsZVR5cGUgPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TYW1wbGVUeXBlOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVNhbXBsZVR5cGUgPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNU1RBUlRVUEFMQVJNOgorICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TdGFydHVwQWxhcm0gPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TdGFydHVwQWxhcm07CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtU3RhcnR1cEFsYXJtID0KKyAgICAgICAgICAgICAgICAgICAgKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtUmlzaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVJpc2luZ1RocmVzaG9sZCA9CisgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1GYWxsaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ1RocmVzaG9sZDsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1GYWxsaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVJpc2luZ0V2ZW50SW5kZXggPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1SaXNpbmdFdmVudEluZGV4OworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVJpc2luZ0V2ZW50SW5kZXggPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybUZhbGxpbmdFdmVudEluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXg7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ0V2ZW50SW5kZXggPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICAgICAgbWVtY3B5KHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1Pd25lciwKKyAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcikpOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1Pd25lcl9sZW4gPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcl9sZW47CisgICAgICAgICAgICAgICAgbWVtc2V0KHRhYmxlX2VudHJ5LT5hbGFybU93bmVyLCAwLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPmFsYXJtT3duZXIpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkodGFibGVfZW50cnktPmFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLT52YWxfbGVuKTsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcl9sZW4gPSByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU3RhdHVzID0gdGFibGVfZW50cnktPmFsYXJtU3RhdHVzOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXR1cyA9CisgICAgICAgICAgICAgICAgICAgICpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfcm93ID0gbmV0c25tcF90ZGF0YV9leHRyYWN0X3JvdyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2RhdGEgPSBuZXRzbm1wX3RkYXRhX2V4dHJhY3RfdGFibGUocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTUlOVEVSVkFMOgorICAgICAgICAgICAgICAgIGlmICh0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfcmVtb3ZlRW50cnkodGFibGVfZGF0YSwgdGFibGVfcm93KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1JbnRlcnZhbCA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtSW50ZXJ2YWw7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1JbnRlcnZhbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1WQVJJQUJMRToKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHRhYmxlX2VudHJ5LT5hbGFybVZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVZhcmlhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT5hbGFybVZhcmlhYmxlKSk7CisgICAgICAgICAgICAgICAgICAgIG1lbXNldCh0YWJsZV9lbnRyeS0+b2xkX2FsYXJtVmFyaWFibGUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPmFsYXJtVmFyaWFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtVmFyaWFibGVfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1WYXJpYWJsZV9sZW47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TQU1QTEVUWVBFOgorICAgICAgICAgICAgICAgIGlmICh0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfcmVtb3ZlRW50cnkodGFibGVfZGF0YSwgdGFibGVfcm93KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1TYW1wbGVUeXBlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TYW1wbGVUeXBlOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU2FtcGxlVHlwZSA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1TVEFSVFVQQUxBUk06CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9yZW1vdmVFbnRyeSh0YWJsZV9kYXRhLCB0YWJsZV9yb3cpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybVN0YXJ0dXBBbGFybSA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU3RhcnR1cEFsYXJtOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtU3RhcnR1cEFsYXJtID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtUmlzaW5nVGhyZXNob2xkID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1SaXNpbmdUaHJlc2hvbGQ7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1SaXNpbmdUaHJlc2hvbGQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR1RIUkVTSE9MRDoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtRmFsbGluZ1RocmVzaG9sZCA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtRmFsbGluZ1RocmVzaG9sZDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybUZhbGxpbmdUaHJlc2hvbGQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtUmlzaW5nRXZlbnRJbmRleCA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtUmlzaW5nRXZlbnRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybVJpc2luZ0V2ZW50SW5kZXggPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVg6CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9yZW1vdmVFbnRyeSh0YWJsZV9kYXRhLCB0YWJsZV9yb3cpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5hbGFybUZhbGxpbmdFdmVudEluZGV4ID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1GYWxsaW5nRXZlbnRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybUZhbGxpbmdFdmVudEluZGV4ID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTU9XTkVSOgorICAgICAgICAgICAgICAgIGlmICh0YWJsZV9lbnRyeSAmJiAhdGFibGVfZW50cnktPnZhbGlkKSB7CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfcmVtb3ZlRW50cnkodGFibGVfZGF0YSwgdGFibGVfcm93KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtZW1jcHkodGFibGVfZW50cnktPmFsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2FsYXJtT3duZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPmFsYXJtT3duZXIpKTsKKyAgICAgICAgICAgICAgICAgICAgbWVtc2V0KHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1Pd25lciwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcikpOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+YWxhcm1Pd25lcl9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9hbGFybU93bmVyX2xlbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmFsYXJtU3RhdHVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TdGF0dXM7CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfYWxhcm1TdGF0dXMgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCBhbGFybVRhYmxlX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1JTlRFUlZBTDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNVkFSSUFCTEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNBTVBMRVRZUEU6CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVJUVVBBTEFSTToKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNUklTSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xEOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1SSVNJTkdFVkVOVElOREVYOgorICAgICAgICAgICAgY2FzZSBDT0xVTU5fQUxBUk1GQUxMSU5HRVZFTlRJTkRFWDoKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0FMQVJNT1dORVI6CisgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPnZhbGlkID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9BTEFSTVNUQVRVUzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgY2FzZSBSTU9OMV9FTlRSWV9WQUxJRDoKKyAgICAgICAgICAgICAgICAgICAgYWxhcm1UYWJsZV9lbmFibGUoIHRhYmxlX2VudHJ5ICk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgUk1PTjFfRU5UUllfVU5ERVJfQ1JFQVRJT046CisgICAgICAgICAgICAgICAgICAgIGFsYXJtVGFibGVfZGlzYWJsZSggdGFibGVfZW50cnkgKTsKKyNpZiAwCisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5zZXNzaW9uID0gKG5ldHNubXBfc2Vzc2lvbiAqKQorICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pcXVlcnlfcGR1X3Nlc3Npb24ocmVxaW5mby0+YXNwLT5wZHUpOworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgc2VjTmFtZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTkFNRSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZWNOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXNzICAgPSBuZXRzbm1wX2lxdWVyeV91c2VyX3Nlc3Npb24oc2VjTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3F1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb24oc2Vzcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicm1vbjphbGFybVRhYmxlIiwgInVzZXIgbmFtZSAlc1xuIiwgc2VjTmFtZSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeyAKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1c2VyIG5hbWUgJXMgbm90IGZvdW5kXG4iLCBzZWNOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIlVua25vd24gdXNlciBuYW1lXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IHNlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlc3MgPSBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IHNlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiWW91IG11c3Qgc3BlY2lmeSBhIGRlZmF1bHQgdXNlciBuYW1lIHVzaW5nIHRoZSBhZ2VudFNlY05hbWUgdG9rZW5cbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBSTU9OMV9FTlRSWV9JTlZBTElEOgorICAgICAgICAgICAgICAgICAgICB0YWJsZV9yb3cgPSBuZXRzbm1wX3RkYXRhX2V4dHJhY3Rfcm93KHJlcXVlc3QpOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlKHJlcXVlc3QpOworICAgICAgICAgICAgICAgICAgICBhbGFybVRhYmxlX3JlbW92ZUVudHJ5KHRhYmxlX2RhdGEsIHRhYmxlX3Jvdyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9hbGFybVRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEwNzBiMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vYWxhcm1UYWJsZS5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IEVkaXRpb24gSGlzdG9yeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorfCAjICAgRGF0ZSAgICAgQ29tbWVudHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnkgIHwKK3wgLS0tIC0tLS0tLS0tIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC0tLSB8Cit8ICAgMSAwNy8wNS8xOCBDcmVhdGVkLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWkgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMudGFibGVfZGF0YS5jb25mLHYgMS4xMS4yLjEgMjAwNi8wMS8xMSAxNToxNzo0NyBkdHMxMiBFeHAgJAorICovCisjaWZuZGVmIEFMQVJNVEFCTEVfSAorI2RlZmluZSBBTEFSTVRBQkxFX0gKKworY29uZmlnX3JlcXVpcmUodXRpbGl0aWVzL2lxdWVyeSkKK2NvbmZpZ19yZXF1aXJlKFJtb24vYWd1dGlsKQorY29uZmlnX3JlcXVpcmUoUm1vbi9yb3dzKQorY29uZmlnX3JlcXVpcmUoUm1vbi9ldmVudCkKKworLyoKKyAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKKyAqLwordm9pZCAgICAgICAgICAgIGluaXRfYWxhcm1UYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2FsYXJtVGFibGUodm9pZCk7CitOZXRzbm1wX05vZGVfSGFuZGxlciBhbGFybVRhYmxlX2hhbmRsZXI7CisKKy8qCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBhbGFybVRhYmxlIAorICovCisjZGVmaW5lIENPTFVNTl9BTEFSTUlOREVYCQkxCisjZGVmaW5lIENPTFVNTl9BTEFSTUlOVEVSVkFMCQkyCisjZGVmaW5lIENPTFVNTl9BTEFSTVZBUklBQkxFCQkzCisjZGVmaW5lIENPTFVNTl9BTEFSTVNBTVBMRVRZUEUJCTQKKyNkZWZpbmUgQ09MVU1OX0FMQVJNVkFMVUUJCTUKKyNkZWZpbmUgQ09MVU1OX0FMQVJNU1RBUlRVUEFMQVJNCQk2CisjZGVmaW5lIENPTFVNTl9BTEFSTVJJU0lOR1RIUkVTSE9MRAkJNworI2RlZmluZSBDT0xVTU5fQUxBUk1GQUxMSU5HVEhSRVNIT0xECQk4CisjZGVmaW5lIENPTFVNTl9BTEFSTVJJU0lOR0VWRU5USU5ERVgJCTkKKyNkZWZpbmUgQ09MVU1OX0FMQVJNRkFMTElOR0VWRU5USU5ERVgJCTEwCisjZGVmaW5lIENPTFVNTl9BTEFSTU9XTkVSCQkxMQorI2RlZmluZSBDT0xVTU5fQUxBUk1TVEFUVVMJCTEyCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFMQVJNVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5jCmluZGV4IGNhYjFkOGIuLjEyN2NmM2YgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuYworKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmMKQEAgLTQ1LDggKzQ1LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJldmVudC5oIgogCiAvKgpAQCAtNzcyLDIzICs3NzAsMzQgQEAKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlLCByby9ydyAsIGNhbGxiYWNrIGZuICAsICAgICAgICAgICBMLCBvaWRzdWZmaXggCiAgICAgICovCi0gICAge0VWRU5USU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCAxfX0sCi0gICAge0VWRU5UREVTQ1JJUFRJT04sIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0VWRU5UVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0VWRU5UQ09NTVVOSVRZLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ldmVudFRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtFVkVOVExBU1RUSU1FU0VOVCwgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9ldmVudFRhYmxlLCAyLCB7MSwgNX19LAotICAgIHtFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ldmVudFRhYmxlLCAyLCB7MSwgNn19LAotICAgIHtFVkVOVFNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA3fX0KKyAgICB7RVZFTlRJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDF9fSwKKyAgICB7RVZFTlRERVNDUklQVElPTiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7RVZFTlRUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7RVZFTlRDT01NVU5JVFksIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA0fX0sCisgICAge0VWRU5UTEFTVFRJTUVTRU5ULCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA1fX0sCisgICAge0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V2ZW50VGFibGUsIDIsIHsxLCA2fX0sCisgICAge0VWRU5UU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXZlbnRUYWJsZSwgMiwgezEsIDd9fQogfTsKIAogc3RydWN0IHZhcmlhYmxlMiBsb2dUYWJsZV92YXJpYWJsZXNbXSA9IHsKICAgICAvKgogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlLCByby9ydyAsIGNhbGxiYWNrIGZuICAsICAgICAgICAgICBMLCBvaWRzdWZmaXggCiAgICAgICovCi0gICAge0xPR0VWRU5USU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgMX19LAotICAgIHtMT0dJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9nVGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0xPR1RJTUUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfbG9nVGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0xPR0RFU0NSSVBUSU9OLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgNH19CisgICAge0xPR0VWRU5USU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgMX19LAorICAgIHtMT0dJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9nVGFibGUsIDIsIHsxLCAyfX0sCisgICAge0xPR1RJTUUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9nVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0xPR0RFU0NSSVBUSU9OLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvZ1RhYmxlLCAyLCB7MSwgNH19CiAKIH07CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuaCBiL2FnZW50L21pYmdyb3VwL1Jtb24vZXZlbnQuaAppbmRleCBkZmNhY2U3Li5iMDNlMTYyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2V2ZW50LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9ldmVudC5oCkBAIC0yMSwxNCArMjEsMTMgQEAKICNpZm5kZWYgX01JQkdST1VQX0VWRU5UX0gKICNkZWZpbmUgX01JQkdST1VQX0VWRU5UX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKLQotY29uZmlnX3JlcXVpcmUoUm1vbi9hZ3V0aWwpCi1jb25maWdfcmVxdWlyZShSbW9uL3Jvd3MpCi0KICAgICAvKgogICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMgCiAgICAgICovCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X2V2ZW50KHZvaWQpOwogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorCitjb25maWdfcmVxdWlyZShSbW9uL2FndXRpbCkKK2NvbmZpZ19yZXF1aXJlKFJtb24vcm93cykKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0VWRU5UX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vaGlzdG9yeS5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMKaW5kZXggOWM2ODU2Zi4uYWQwM2VlZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmMKQEAgLTQ0LDggKzQ0LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJoaXN0b3J5LmgiCiAKIC8qCkBAIC02NTYsMTggKzY1NCwyMCBAQAogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgICAgICAgICAgIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KLSAgICB7Q1RSTF9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaGlzdG9yeUNvbnRyb2xUYWJsZSwgMiwgezEsIDF9fSwKLSAgICB7Q1RSTF9EQVRBU09VUkNFLCBBU05fT0JKRUNUX0lELCBSV1JJVEUsIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLAotICAgICB7MSwgMn19LAotICAgIHtDVFJMX0JVQ0tFVFNSRVFVRVNURUQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLAotICAgICAyLCB7MSwgM319LAotICAgIHtDVFJMX0JVQ0tFVFNHUkFOVEVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLAotICAgICB7MSwgNH19LAotICAgIHtDVFJMX0lOVEVSVkFMLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfaGlzdG9yeUNvbnRyb2xUYWJsZSwgMiwKLSAgICAgezEsIDV9fSwKLSAgICB7Q1RSTF9PV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfaGlzdG9yeUNvbnRyb2xUYWJsZSwgMiwKLSAgICAgezEsIDZ9fSwKLSAgICB7Q1RSTF9TVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgN319LAorICAgIHtDVFJMX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgMX19LAorICAgIHtDVFJMX0RBVEFTT1VSQ0UsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCAyfX0sCisgICAge0NUUkxfQlVDS0VUU1JFUVVFU1RFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0NUUkxfQlVDS0VUU0dSQU5URUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCA0fX0sCisgICAge0NUUkxfSU5URVJWQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDVFJMX09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9oaXN0b3J5Q29udHJvbFRhYmxlLCAyLCB7MSwgNn19LAorICAgIHtDVFJMX1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2hpc3RvcnlDb250cm9sVGFibGUsIDIsIHsxLCA3fX0sCiAKIH07CiAKQEAgLTY3OCwzMiArNjc4LDM2IEBACiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgICAgICAgIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KLSAgICB7REFUQV9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxfX0sCi0gICAge0RBVEFfU0FNUExFSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLAotICAgICB7MSwgMn19LAotICAgIHtEQVRBX0lOVEVSVkFMU1RBUlQsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAzfX0sCi0gICAge0RBVEFfRFJPUEVWRU5UUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCA0fX0sCi0gICAge0RBVEFfT0NURVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDV9fSwKLSAgICB7REFUQV9QS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDZ9fSwKLSAgICB7REFUQV9CUk9BRENBU1RQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwKLSAgICAgezEsIDd9fSwKLSAgICB7REFUQV9NVUxUSUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwKLSAgICAgezEsIDh9fSwKLSAgICB7REFUQV9DUkNBTElHTkVSUk9SUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCA5fX0sCi0gICAge0RBVEFfVU5ERVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAxMH19LAotICAgIHtEQVRBX09WRVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAxMX19LAotICAgIHtEQVRBX0ZSQUdNRU5UUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsCi0gICAgIHsxLCAxMn19LAotICAgIHtEQVRBX0pBQkJFUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMTN9fSwKLSAgICB7REFUQV9DT0xMSVNJT05TLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwKLSAgICAgezEsIDE0fX0sCi0gICAge0RBVEFfVVRJTElaQVRJT04sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLAotICAgICB7MSwgMTV9fSwKKyAgICB7REFUQV9JTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxfX0sCisgICAge0RBVEFfU0FNUExFSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtEQVRBX0lOVEVSVkFMU1RBUlQsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAzfX0sCisgICAge0RBVEFfRFJPUEVWRU5UUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCA0fX0sCisgICAge0RBVEFfT0NURVRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDV9fSwKKyAgICB7REFUQV9QS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7REFUQV9CUk9BRENBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7REFUQV9NVUxUSUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDh9fSwKKyAgICB7REFUQV9DUkNBTElHTkVSUk9SUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCA5fX0sCisgICAge0RBVEFfVU5ERVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxMH19LAorICAgIHtEQVRBX09WRVJTSVpFUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxMX19LAorICAgIHtEQVRBX0ZSQUdNRU5UUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJIaXN0b3J5VGFibGUsIDIsIHsxLCAxMn19LAorICAgIHtEQVRBX0pBQkJFUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMTN9fSwKKyAgICB7REFUQV9DT0xMSVNJT05TLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlckhpc3RvcnlUYWJsZSwgMiwgezEsIDE0fX0sCisgICAge0RBVEFfVVRJTElaQVRJT04sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVySGlzdG9yeVRhYmxlLCAyLCB7MSwgMTV9fSwKIAogfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9oaXN0b3J5LmggYi9hZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaAppbmRleCAwOTRiZWU0Li5kMmM0MDFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaAorKysgYi9hZ2VudC9taWJncm91cC9SbW9uL2hpc3RvcnkuaApAQCAtMjEsOCArMjEsNiBAQAogI2lmbmRlZiBfTUlCR1JPVVBfSElTVE9SWV9ICiAjZGVmaW5lIF9NSUJHUk9VUF9ISVNUT1JZX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKLQogICAgIC8qCiAgICAgICogZnVuY3Rpb24gcHJvdG90eXBlcyAKICAgICAgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vcm93cy5jIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKaW5kZXggZDhjM2NjMS4uZDY3YzU2NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9yb3dzLmMKQEAgLTI2LDggKzI2LDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KICNpbmNsdWRlICJhZ3V0aWxfYXBpLmgiCiAjaW5jbHVkZSAicm93cy5oIgogI2luY2x1ZGUgInJvd19hcGkuaCIKQEAgLTc1Niw3ICs3NTQsNyBAQAogICAgICAgICBzY3Jsci0+Zmlyc3RfZGF0YV9wdHIgPSBicHRyLT5uZXh0OwogICAgICAgICBzY3Jsci0+bGFzdF9kYXRhX3B0ci0+bmV4dCA9IGJwdHI7CiAgICAgICAgIHNjcmxyLT5sYXN0X2RhdGFfcHRyID0gKE5FWFRFRF9QVFJfVCAqKSBicHRyOwotICAgICAgICBicHRyLT5uZXh0ID0gMDsKKyAgICAgICAgYnB0ci0+bmV4dCA9IE5VTEw7CiAgICAgfSBlbHNlIHsKICAgICAgICAgYnB0ciA9IHNjcmxyLT5jdXJyZW50X2RhdGFfcHRyOwogICAgICAgICBzY3Jsci0+Y3VycmVudF9kYXRhX3B0ciA9IGJwdHItPm5leHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9SbW9uL3N0YXRpc3RpY3MuYyBiL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jCmluZGV4IGZiNGY1ZjUuLjZjY2I4NDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5jCkBAIC00Myw3ICs0Myw2IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+Ci0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInN0YXRpc3RpY3MuaCIKICAgICAgICAgLyoKICAgICAgICAgICogSW1wbGVtZW50YXRpb24gaGVhZGVycyAKQEAgLTQ2OCw1MiArNDY3LDUyIEBACiBvaWQgICAgICAgICAgICAgb2lkc3RhdGlzdGljc1ZhcmlhYmxlc09pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxNiwgMSB9OwogCiBzdHJ1Y3QgdmFyaWFibGU3IG9pZHN0YXRpc3RpY3NWYXJpYWJsZXNbXSA9IHsKLSAgICB7SURldGhlclN0YXRzSW5kZXgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDF9fSwKLSAgICB7SURldGhlclN0YXRzRGF0YVNvdXJjZSwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgMn19LAotICAgIHtJRGV0aGVyU3RhdHNEcm9wRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAzfX0sCi0gICAge0lEZXRoZXJTdGF0c09jdGV0cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgNH19LAotICAgIHtJRGV0aGVyU3RhdHNQa3RzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCA1fX0sCi0gICAge0lEZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDZ9fSwKLSAgICB7SURldGhlclN0YXRzTXVsdGljYXN0UGt0cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgN319LAotICAgIHtJRGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LAotICAgICAzLCB7MSwgMSwgOH19LAotICAgIHtJRGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCA5fX0sCi0gICAge0lEZXRoZXJTdGF0c092ZXJzaXplUGt0cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLAotICAgICB7MSwgMSwgMTB9fSwKLSAgICB7SURldGhlclN0YXRzRnJhZ21lbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAxMX19LAotICAgIHtJRGV0aGVyU3RhdHNKYWJiZXJzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAxMn19LAotICAgIHtJRGV0aGVyU3RhdHNDb2xsaXNpb25zLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9ldGhlclN0YXRzRW50cnksIDMsCi0gICAgIHsxLCAxLCAxM319LAotICAgIHtJRGV0aGVyU3RhdHNQa3RzNjRPY3RldHMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDE0fX0sCi0gICAge0lEZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzLCBBU05fQ09VTlRFUiwgUk9OTFksCisgICAge0lEZXRoZXJTdGF0c0luZGV4LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCAxfX0sCisgICAge0lEZXRoZXJTdGF0c0RhdGFTb3VyY2UsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDJ9fSwKKyAgICB7SURldGhlclN0YXRzRHJvcEV2ZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgM319LAorICAgIHtJRGV0aGVyU3RhdHNPY3RldHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDR9fSwKKyAgICB7SURldGhlclN0YXRzUGt0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgNX19LAorICAgIHtJRGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCA2fX0sCisgICAge0lEZXRoZXJTdGF0c011bHRpY2FzdFBrdHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDd9fSwKKyAgICB7SURldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDh9fSwKKyAgICB7SURldGhlclN0YXRzVW5kZXJzaXplUGt0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgOX19LAorICAgIHtJRGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDEwfX0sCisgICAge0lEZXRoZXJTdGF0c0ZyYWdtZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTF9fSwKKyAgICB7SURldGhlclN0YXRzSmFiYmVycywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTJ9fSwKKyAgICB7SURldGhlclN0YXRzQ29sbGlzaW9ucywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTN9fSwKKyAgICB7SURldGhlclN0YXRzUGt0czY0T2N0ZXRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCAxNH19LAorICAgIHtJRGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTV9fSwKLSAgICB7SURldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzLCBBU05fQ09VTlRFUiwgUk9OTFksCisgICAge0lEZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTZ9fSwKLSAgICB7SURldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzLCBBU05fQ09VTlRFUiwgUk9OTFksCisgICAge0lEZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTd9fSwKLSAgICB7SURldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cywgQVNOX0NPVU5URVIsIFJPTkxZLAorICAgIHtJRGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCiAgICAgIHZhcl9ldGhlclN0YXRzRW50cnksIDMsIHsxLCAxLCAxOH19LAotICAgIHtJRGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cywgQVNOX0NPVU5URVIsIFJPTkxZLAorICAgIHtJRGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAogICAgICB2YXJfZXRoZXJTdGF0c0VudHJ5LCAzLCB7MSwgMSwgMTl9fSwKLSAgICB7SURldGhlclN0YXRzT3duZXIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDIwfX0sCi0gICAge0lEZXRoZXJTdGF0c1N0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywKLSAgICAgezEsIDEsIDIxfX0sCi0gICAge0lEZXRoZXJTdGF0c0Ryb3BwZWRGcmFtZXMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V0aGVyU3RhdHMyRW50cnksCi0gICAgIDMsIHs0LCAxLCAxfX0sCi0gICAge0lEZXRoZXJTdGF0c0NyZWF0ZVRpbWUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfZXRoZXJTdGF0czJFbnRyeSwgMywKLSAgICAgezQsIDEsIDJ9fSwKKyAgICB7SURldGhlclN0YXRzT3duZXIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDIwfX0sCisgICAge0lEZXRoZXJTdGF0c1N0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V0aGVyU3RhdHNFbnRyeSwgMywgezEsIDEsIDIxfX0sCisgICAge0lEZXRoZXJTdGF0c0Ryb3BwZWRGcmFtZXMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V0aGVyU3RhdHMyRW50cnksIDMsIHs0LCAxLCAxfX0sCisgICAge0lEZXRoZXJTdGF0c0NyZWF0ZVRpbWUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXRoZXJTdGF0czJFbnRyeSwgMywgezQsIDEsIDJ9fSwKIH07CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL1Jtb24vc3RhdGlzdGljcy5oIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmgKaW5kZXggOGM2ZDkxZC4uOWI2MjJhNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvUm1vbi9zdGF0aXN0aWNzLmgKQEAgLTIxLDcgKzIxLDYgQEAKICNpZm5kZWYgX3N0YXRpc3RpY3NfaF9pbmNsdWRlZF9fCiAjZGVmaW5lIF9zdGF0aXN0aWNzX2hfaW5jbHVkZWRfXwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zdGF0aXN0aWNzKHZvaWQpOwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9zdGF0aXN0aWNzX2hfaW5jbHVkZWRfXyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvZXh0ZW5kLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYwppbmRleCAxZjg1ODZhLi43MDA0ZWE1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuYwpAQCAtMTAsNyArMTAsNyBAQAogI2luY2x1ZGUgInN0cnVjdC5oIgogCiAjaWZuZGVmIFVTSU5HX1VDRF9TTk1QX0VYVEVOU0lCTEVfTU9EVUxFCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogI2luY2x1ZGUgIm1pYmRlZnMuaCIKICNkZWZpbmUgU0hFTExDT01NQU5EIDMKICNlbmRpZgpAQCAtNDQsMTcgKzQ0LDI3IEBACiB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgbWF4X2NvbXBhdGFiaWxpdHlfZW50cmllcyA9IDUwOwogbmV0c25tcF9vbGRfZXh0ZW5kICpjb21wYXRhYmlsaXR5X2VudHJpZXM7CiAKK2NoYXIgICAgICAgICAgICpjbWRsaW5lYnVmOworc2l6ZV90ICAgICAgICAgIGNtZGxpbmVzaXplOworCiBXcml0ZU1ldGhvZCBmaXhFeGVjMkVycm9yOwogRmluZFZhck1ldGhvZCB2YXJfZXh0ZW5zaWJsZV9vbGQ7CiBvaWQgIG9sZF9leHRlbnNpYmxlX3ZhcmlhYmxlc19vaWRbXSA9IHsgTkVUU05NUF9VQ0RBVklTX01JQiwgTkVUU05NUF9TSEVMTE1JQk5VTSwgMSB9Owogc3RydWN0IHZhcmlhYmxlMiBvbGRfZXh0ZW5zaWJsZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7TUlCSU5ERVgsICAgICBBU05fSU5URUdFUiwgICBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7TUlCSU5ERVh9fSwKLSAgICB7RVJST1JOQU1FLCAgICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JOQU1FfX0sCi0gICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge1NIRUxMQ09NTUFORH19LAotICAgIHtFUlJPUkZMQUcsICAgIEFTTl9JTlRFR0VSLCAgIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZMQUd9fSwKLSAgICB7RVJST1JNU0csICAgICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JNU0d9fSwKLSAgICB7RVJST1JGSVgsICAgICBBU05fSU5URUdFUiwgIFJXUklURSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGSVh9fSwKLSAgICB7RVJST1JGSVhDTUQsICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7RVJST1JGSVhDTUR9fQorICAgIHtNSUJJTkRFWCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtNSUJJTkRFWH19LAorICAgIHtFUlJPUk5BTUUsICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICB7U0hFTExDT01NQU5ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfb2xkLCAxLCB7U0hFTExDT01NQU5EfX0sCisgICAge0VSUk9SRkxBRywgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHRlbnNpYmxlX29sZCwgMSwge0VSUk9SRkxBR319LAorICAgIHtFUlJPUk1TRywgICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUk1TR319LAorICAgIHtFUlJPUkZJWCwgICAgIEFTTl9JTlRFR0VSLCAgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZJWH19LAorICAgIHtFUlJPUkZJWENNRCwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9vbGQsIDEsIHtFUlJPUkZJWENNRH19CiB9OwogI2VuZGlmCiAKQEAgLTQ3OCwxMCArNDg4LDIxIEBACiAgICAgICAgICAgICAKICAgICB9IGVsc2UgaWYgKCFzdHJjbXAoIHRva2VuLCAic2giICAgKSB8fAogICAgICAgICAgICAgICAgIXN0cmNtcCggdG9rZW4sICJleGVjIiApKSB7Ci0gICAgICAgIGlmICggbnVtX2NvbXBhdGFiaWxpdHlfZW50cmllcyA9PSBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzICkKKyAgICAgICAgaWYgKCBudW1fY29tcGF0YWJpbGl0eV9lbnRyaWVzID09IG1heF9jb21wYXRhYmlsaXR5X2VudHJpZXMgKSB7CiAgICAgICAgICAgICAvKiBYWFggLSBzaG91bGQgcmVhbGx5IHVzZSBkeW5hbWljIGFsbG9jYXRpb24gKi8KLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIk5vIGZ1cnRoZXIgVUNELWNvbXBhdGlibGUgZW50cmllcyIgKTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgbmV0c25tcF9vbGRfZXh0ZW5kICpuZXdfY29tcGF0YWJpbGl0eV9lbnRyaWVzOworICAgICAgICAgICAgbmV3X2NvbXBhdGFiaWxpdHlfZW50cmllcyA9IHJlYWxsb2MoY29tcGF0YWJpbGl0eV9lbnRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzKjIqc2l6ZW9mKG5ldHNubXBfb2xkX2V4dGVuZCkpOworICAgICAgICAgICAgaWYgKCFuZXdfY29tcGF0YWJpbGl0eV9lbnRyaWVzKQorICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIk5vIGZ1cnRoZXIgVUNELWNvbXBhdGlibGUgZW50cmllcyIgKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG1lbXNldChuZXdfY29tcGF0YWJpbGl0eV9lbnRyaWVzK251bV9jb21wYXRhYmlsaXR5X2VudHJpZXMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9vbGRfZXh0ZW5kKSptYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzKTsKKyAgICAgICAgICAgICAgICBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzICo9IDI7CisgICAgICAgICAgICAgICAgY29tcGF0YWJpbGl0eV9lbnRyaWVzID0gbmV3X2NvbXBhdGFiaWxpdHlfZW50cmllczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAobnVtX2NvbXBhdGFiaWxpdHlfZW50cmllcyAhPSBtYXhfY29tcGF0YWJpbGl0eV9lbnRyaWVzKQogICAgICAgICAgICAgY29tcGF0YWJpbGl0eV9lbnRyaWVzWwogICAgICAgICAgICAgICAgIG51bV9jb21wYXRhYmlsaXR5X2VudHJpZXMrKyBdLmV4ZWNfZW50cnkgPSBleHRlbnNpb247CiAgICAgfQpAQCAtMTEwNiw3ICsxMTI3LDcgQEAKICAgICAgKiAgR0VUIGhhbmRsaW5nIC0gZmluZCB0aGUgZXhhY3QgZW50cnkgYmVpbmcgcmVxdWVzdGVkCiAgICAgICoqKi8KICAgICBpZiAoIG1vZGUgPT0gTU9ERV9HRVQgKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCAibnNFeHRlbmRUYWJsZTpvdXRwdXQyIiwgIkdFVDogJXMgLyAlZFxuICIsCisgICAgICAgIERFQlVHTVNHVEwoKCAibnNFeHRlbmRUYWJsZTpvdXRwdXQyIiwgIkdFVDogJXMgLyAlbGRcbiAiLAogICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAqdGFibGVfaW5mby0+aW5kZXhlcy0+bmV4dF92YXJpYWJsZS0+dmFsLmludGVnZXIpKTsKICAgICAgICAgZm9yICggZXB0ciA9IGVyZWctPmVoZWFkOyBlcHRyOyBlcHRyID0gZXB0ci0+bmV4dCApIHsKQEAgLTExMjksNyArMTE1MCw2IEBACiAgICAgICAgICAgICBpZiAobGluZV9pZHggPCAxIHx8IGxpbmVfaWR4ID4gZXB0ci0+bnVtbGluZXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVwdHI7CiAgICAgfQogCiAgICAgICAgIC8qKioKQEAgLTEyNDYsOSArMTI2Niw4IEBACiAgICAgICAgICAgICBzbm1wX3NldF92YXJfdmFsdWUoIHRhYmxlX2luZm8tPmluZGV4ZXMtPm5leHRfdmFyaWFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIqKSZsaW5lX2lkeCwgc2l6ZW9mKGxpbmVfaWR4KSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVwdHI7ICAvKiBGaW5hbGx5LCBzaWduYWwgc3VjY2VzcyAqLwogICAgIH0KLSAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gZXB0cjsgIC8qIEZpbmFsbHksIHNpZ25hbCBzdWNjZXNzICovCiB9CiAKIC8qCkBAIC0xMzM4LDYgKzEzNTcsMzIgQEAKICAgICAgICAgICoKICAgICAgICAgICoqKioqKioqKioqKioqKioqKioqKioqKiovCiAKK2NoYXIgKiBfZ2V0X2NtZGxpbmUobmV0c25tcF9leHRlbmQgKmV4dGVuZCkKK3sKKyAgICBzaXplX3QgICAgICAgICAgc2l6ZTsKKyAgICBjaGFyICAgICAgICAgICAqbmV3YnVmOworICAgIGNvbnN0IGNoYXIgICAgICphcmdzID0gZXh0ZW5kLT5hcmdzOworCisgICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICAgICAgLyogVXNlIGVtcHR5IHN0cmluZyBmb3IgcHJvY2Vzc2VzIHdpdGhvdXQgYXJndW1lbnRzLiAqLworICAgICAgICBhcmdzID0gIiI7CisKKyAgICBzaXplID0gc3RybGVuKGV4dGVuZC0+Y29tbWFuZCkgKyBzdHJsZW4oYXJncykgKyAyOworICAgIGlmIChzaXplID4gY21kbGluZXNpemUpIHsKKyAgICAgICAgbmV3YnVmID0gcmVhbGxvYyhjbWRsaW5lYnVmLCBzaXplKTsKKyAgICAgICAgaWYgKCFuZXdidWYpIHsKKyAgICAgICAgICAgIGZyZWUoY21kbGluZWJ1Zik7CisgICAgICAgICAgICBjbWRsaW5lYnVmID0gTlVMTDsKKyAgICAgICAgICAgIGNtZGxpbmVzaXplID0gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGNtZGxpbmVidWYgPSBuZXdidWY7CisgICAgICAgIGNtZGxpbmVzaXplID0gc2l6ZTsKKyAgICB9CisgICAgc3ByaW50ZihjbWRsaW5lYnVmLCAiJXMgJXMiLCBleHRlbmQtPmNvbW1hbmQsIGFyZ3MpOworICAgIHJldHVybiBjbWRsaW5lYnVmOworfQorCiB1X2NoYXIgKgogdmFyX2V4dGVuc2libGVfb2xkKHN0cnVjdCB2YXJpYWJsZSAqIHZwLAogICAgICAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKQEAgLTEzNDgsNiArMTM5Myw3IEBACiAgICAgbmV0c25tcF9vbGRfZXh0ZW5kICpleHRlbiA9IE5VTEw7CiAgICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OwogICAgIHVuc2lnbmVkIGludCBpZHg7CisgICAgY2hhciAgICAgICAgICpjbWRsaW5lOwogCiAgICAgaWYgKGhlYWRlcl9zaW1wbGVfdGFibGUKICAgICAgICAgKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QsIG51bV9jb21wYXRhYmlsaXR5X2VudHJpZXMpKQpAQCAtMTM2Niw4ICsxNDEyLDEwIEBACiAgICAgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihleHRlbi0+ZXhlY19lbnRyeS0+dG9rZW4pOwogICAgICAgICAgICAgcmV0dXJuICgodV9jaGFyICopIChleHRlbi0+ZXhlY19lbnRyeS0+dG9rZW4pKTsKICAgICAgICAgY2FzZSBTSEVMTENPTU1BTkQ6Ci0gICAgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihleHRlbi0+ZXhlY19lbnRyeS0+Y29tbWFuZCk7Ci0gICAgICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKGV4dGVuLT5leGVjX2VudHJ5LT5jb21tYW5kKSk7CisgICAgICAgICAgICBjbWRsaW5lID0gX2dldF9jbWRsaW5lKGV4dGVuLT5leGVjX2VudHJ5KTsKKyAgICAgICAgICAgIGlmIChjbWRsaW5lKQorICAgICAgICAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGNtZGxpbmUpOworICAgICAgICAgICAgcmV0dXJuICgodV9jaGFyICopIGNtZGxpbmUpOwogICAgICAgICBjYXNlIEVSUk9SRkxBRzogICAgICAgIC8qIHJldHVybiBjb2RlIGZyb20gdGhlIHByb2Nlc3MgKi8KICAgICAgICAgICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZCggZXh0ZW4tPmV4ZWNfZW50cnktPmNhY2hlICk7CiAgICAgICAgICAgICBsb25nX3JldCA9IGV4dGVuLT5leGVjX2VudHJ5LT5yZXN1bHQ7CkBAIC0xMzkwLDggKzE0MzgsMTAgQEAKIAogICAgICAgICBjYXNlIEVSUk9SRklYQ01EOgogICAgICAgICAgICAgaWYgKGV4dGVuLT5lZml4X2VudHJ5KSB7Ci0gICAgICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXh0ZW4tPmVmaXhfZW50cnktPmNvbW1hbmQpOwotICAgICAgICAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBleHRlbi0+ZWZpeF9lbnRyeS0+Y29tbWFuZCk7CisgICAgICAgICAgICAgICAgY21kbGluZSA9IF9nZXRfY21kbGluZShleHRlbi0+ZWZpeF9lbnRyeSk7CisJCWlmIChjbWRsaW5lKQorICAgICAgICAgICAgICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihjbWRsaW5lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgY21kbGluZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICp2YXJfbGVuID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgJmxvbmdfcmV0dXJuKTsgIC8qIEp1c3QgbmVlZHMgdG8gYmUgbm9uLW51bGwhICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9leHRlbmQuaCBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCmluZGV4IDhmMTlkYjMuLjRiMTgxZjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L2V4dGVuZC5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBORVRTTk1QX0VYVEVORF9ICiAjZGVmaW5lIE5FVFNOTVBfRVhURU5EX0gKIAotY29uZmlnX3JlcXVpcmUoIHV0aWxfZnVuY3MgKQorY29uZmlnX3JlcXVpcmUoIHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSApCiBjb25maWdfcmVxdWlyZSggdXRpbGl0aWVzL2V4ZWN1dGUgKQogY29uZmlnX2FkZF9taWIoTkVULVNOTVAtRVhURU5ELU1JQikKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNDYWNoZS5jCmluZGV4IGY4ZTczZjAuLmE3NzNhZWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zQ2FjaGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0NhY2hlLmMKQEAgLTExLDggKzExLDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KICNpbmNsdWRlICJhZ2VudC9uc0NhY2hlLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCiAKIC8qCiAgKiB1c2UgdW5hZHZlcnRpc2VkIGZ1bmN0aW9uIHRvIGdldCBjYWNoZSBoZWFkLiBZb3UgcmVhbGx5IHNob3VsZCBub3QKQEAgLTIxLDYgKzE5LDggQEAKIGV4dGVybiBuZXRzbm1wX2NhY2hlICpuZXRzbm1wX2NhY2hlX2dldF9oZWFkKHZvaWQpOwogCiAKKyNkZWZpbmUgbnNDYWNoZSAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA1CisKIC8qCiAgKiBPSURzIGZvciB0aGUgY2FjaGVnaW5nIGNvbnRyb2wgc2NhbGFyIG9iamVjdHMKICAqCkBAIC0yOCw4ICsyOCw2IEBACiAgKiAgdGhhbiB0aGUgKHNvbGUpIHZhbGlkIGluc3RhbmNlIGluIGVhY2ggY2FzZSwgaW4gb3JkZXIKICAqICB0byBoYW5kbGUgcmVxdWVzdHMgZm9yIGludmFsaWQgaW5zdGFuY2VzIHByb3Blcmx5LgogICovCi1vaWQgbnNDYWNoZVRpbWVvdXRfb2lkW10gICAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDUsIDF9Owotb2lkIG5zQ2FjaGVFbmFibGVkX29pZFtdICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA1LCAyfTsKIAogLyoKICAqIC4uLiBhbmQgZm9yIHRoZSBjYWNoZSB0YWJsZS4KQEAgLTQ0LDggKzQyLDYgQEAKICNkZWZpbmUgTlNDQUNIRV9TVEFUVVNfQUNUSVZFICAgNAogI2RlZmluZSBOU0NBQ0hFX1NUQVRVU19FWFBJUkVEICA1CiAKLW9pZCBuc0NhY2hlVGFibGVfb2lkW10gICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgNSwgM307Ci0KIGV4dGVybiBzdHJ1Y3Qgc25tcF9hbGFybSAqCiBzYV9maW5kX3NwZWNpZmljKHVuc2lnbmVkIGludCBjbGllbnRyZWcpOwogCkBAIC01Myw2ICs0OSwxMCBAQAogdm9pZAogaW5pdF9uc0NhY2hlKHZvaWQpCiB7CisgICAgY29uc3Qgb2lkIG5zQ2FjaGVUaW1lb3V0X29pZFtdICAgID0geyBuc0NhY2hlLCAxIH07CisgICAgY29uc3Qgb2lkIG5zQ2FjaGVFbmFibGVkX29pZFtdICAgID0geyBuc0NhY2hlLCAyIH07CisgICAgY29uc3Qgb2lkIG5zQ2FjaGVUYWJsZV9vaWRbXSAgICAgID0geyBuc0NhY2hlLCAzIH07CisKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogCkBAIC0zNjEsNyArMzYxLDYgQEAKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX0VSUl9OT0NSRUFUSU9OKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsJLyogWFhYIC0gaXMgdGhpcyByaWdodCA/ICovCi0gICAgICAgICAgICAgICAgY29udGludWU7CiAJICAgIH0KIAl9CiAJYnJlYWs7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0RlYnVnLmMKaW5kZXggNDBkNTVkNC4uNTM0ZDE4YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNEZWJ1Zy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zRGVidWcuYwpAQCAtMTAsMzQgKzEwLDMyIEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImFnZW50L25zRGVidWcuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAKLQotCi0vKgotICogT0lEcyBmb3IgdGhlIGRlYnVnZ2luZyBjb250cm9sIHNjYWxhciBvYmplY3RzCi0gKgotICogTm90ZSB0aGF0IHRoZXNlIHdlJ3JlIHJlZ2lzdGVyaW5nIHRoZSBmdWxsIG9iamVjdCByYXRoZXIKLSAqICB0aGFuIHRoZSAoc29sZSkgdmFsaWQgaW5zdGFuY2UgaW4gZWFjaCBjYXNlLCBpbiBvcmRlcgotICogIHRvIGhhbmRsZSByZXF1ZXN0cyBmb3IgaW52YWxpZCBpbnN0YW5jZXMgcHJvcGVybHkuCi0gKi8KLW9pZCBuc0RlYnVnRW5hYmxlZF9vaWRbXSAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgNywgMSwgMX07Ci1vaWQgbnNEZWJ1Z091dHB1dEFsbF9vaWRbXSAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDcsIDEsIDJ9Owotb2lkIG5zRGVidWdEdW1wUGR1X29pZFtdICAgID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA3LCAxLCAzfTsKLQotLyoKLSAqIC4uLiBhbmQgZm9yIHRoZSB0b2tlbiB0YWJsZS4KLSAqLwotCi0jZGVmaW5lICBEQkdUT0tFTl9QUkVGSVgJMgotI2RlZmluZSAgREJHVE9LRU5fRU5BQkxFRAkzCi0jZGVmaW5lICBEQkdUT0tFTl9TVEFUVVMJNAotb2lkIG5zRGVidWdUb2tlblRhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA3LCAxLCA0fTsKLQorI2RlZmluZSBuc0NvbmZpZ0RlYnVnIDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDcsIDEKIAogdm9pZAogaW5pdF9uc0RlYnVnKHZvaWQpCiB7CisgICAgLyoKKyAgICAgKiBPSURzIGZvciB0aGUgZGVidWdnaW5nIGNvbnRyb2wgc2NhbGFyIG9iamVjdHMKKyAgICAgKgorICAgICAqIE5vdGUgdGhhdCB0aGVzZSB3ZSdyZSByZWdpc3RlcmluZyB0aGUgZnVsbCBvYmplY3QgcmF0aGVyCisgICAgICogIHRoYW4gdGhlIChzb2xlKSB2YWxpZCBpbnN0YW5jZSBpbiBlYWNoIGNhc2UsIGluIG9yZGVyCisgICAgICogIHRvIGhhbmRsZSByZXF1ZXN0cyBmb3IgaW52YWxpZCBpbnN0YW5jZXMgcHJvcGVybHkuCisgICAgICovCisgICAgY29uc3Qgb2lkIG5zRGVidWdFbmFibGVkX29pZFtdICAgID0geyBuc0NvbmZpZ0RlYnVnLCAxfTsKKyAgICBjb25zdCBvaWQgbnNEZWJ1Z091dHB1dEFsbF9vaWRbXSAgPSB7IG5zQ29uZmlnRGVidWcsIDJ9OworICAgIGNvbnN0IG9pZCBuc0RlYnVnRHVtcFBkdV9vaWRbXSAgICA9IHsgbnNDb25maWdEZWJ1ZywgM307CisKKyAgICAvKgorICAgICAqIC4uLiBhbmQgZm9yIHRoZSB0b2tlbiB0YWJsZS4KKyAgICAgKi8KKworI2RlZmluZSAgREJHVE9LRU5fUFJFRklYCTIKKyNkZWZpbmUgIERCR1RPS0VOX0VOQUJMRUQJMworI2RlZmluZSAgREJHVE9LRU5fU1RBVFVTCTQKKyAgICBjb25zdCBvaWQgbnNEZWJ1Z1Rva2VuVGFibGVfb2lkW10gPSB7IG5zQ29uZmlnRGVidWcsIDR9OworCiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNMb2dnaW5nLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYwppbmRleCAzZTViMDJmLi43YTIxZmE4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc0xvZ2dpbmcuYwpAQCAtMTEsOSArMTEsNiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaD4KICNpbmNsdWRlICJhZ2VudC9uc0xvZ2dpbmcuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0KLQogCiAvKgogICogT0lEIGFuZCBjb2x1bW5zIGZvciB0aGUgbG9nZ2luZyB0YWJsZS4KQEAgLTIzLDE1ICsyMCwxNCBAQAogI2RlZmluZSAgTlNMT0dHSU5HX01BWExFVkVMCTQKICNkZWZpbmUgIE5TTE9HR0lOR19TVEFUVVMJNQogCi1vaWQgbnNMb2dnaW5nVGFibGVfb2lkW10gICAgICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgNywgMiwgMX07Ci0KLQogdm9pZAogaW5pdF9uc0xvZ2dpbmcodm9pZCkKIHsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogCisgICAgY29uc3Qgb2lkIG5zTG9nZ2luZ1RhYmxlX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCA4MDcyLCAxLCA3LCAyLCAxfTsKKwogICAgIC8qCiAgICAgICogUmVnaXN0ZXIgdGhlIHRhYmxlLgogICAgICAqIFdlIG5lZWQgdG8gZGVmaW5lIHRoZSBjb2x1bW4gc3RydWN0dXJlIGFuZCBpbmRleGluZy4uLi4KQEAgLTMwOCw3ICszMDQsNiBAQAogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsIFNOTVBfTk9TVUNIT0JKRUNUKTsKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9OT1NVQ0hPQkpFQ1Q7Ci0gICAgICAgICAgICAgICAgY29udGludWU7CiAJICAgIH0KIAl9CiAJYnJlYWs7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc01vZHVsZVRhYmxlLmMKaW5kZXggNGY0ZWEwMC4uYmM0NTY5MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNNb2R1bGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zTW9kdWxlVGFibGUuYwpAQCAtMTgsOCArMTgsNyBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV9uc01vZHVsZVRhYmxlKHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAgICAgIG5zTW9kdWxlVGFibGVfb2lkW10gPQotICAgICAgICB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDIsIDEgfTsKKyAgICBjb25zdCBvaWQgbnNNb2R1bGVUYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgMiwgMSB9OwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqbXlfaGFuZGxlcjsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmlpbmZvOwpAQCAtNzYsNyArNzUsNyBAQAogICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfaXRlcmF0b3IobXlfaGFuZGxlciwgaWluZm8pOwogfQogCi0vKiogSW5pdGlhbHppZXMgdGhlIG5zTW9kdWxlVGFibGUgbW9kdWxlICovCisvKiogSW5pdGlhbGl6ZXMgdGhlIG5zTW9kdWxlVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X25zTW9kdWxlVGFibGUodm9pZCkKIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50L25zVHJhbnNhY3Rpb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKaW5kZXggMzFiOWZlNS4uZGMxZjdmYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNUcmFuc2FjdGlvblRhYmxlLmMKQEAgLTE1LDEwICsxNSw3IEBACiB2b2lkCiBpbml0aWFsaXplX3RhYmxlX25zVHJhbnNhY3Rpb25UYWJsZSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgICAgICBuc1RyYW5zYWN0aW9uVGFibGVfb2lkW10gPQotICAgICAgICB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDgsIDEgfTsKLSAgICBzaXplX3QgICAgICAgICAgbnNUcmFuc2FjdGlvblRhYmxlX29pZF9sZW4gPQotICAgICAgICBPSURfTEVOR1RIKG5zVHJhbnNhY3Rpb25UYWJsZV9vaWQpOworICAgIGNvbnN0IG9pZCBuc1RyYW5zYWN0aW9uVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDgwNzIsIDEsIDgsIDEgfTsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15X2hhbmRsZXI7CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbzsKQEAgLTMzLDExICszMCwxMCBAQAogICAgICAqIGlmIHlvdXIgdGFibGUgaXMgcmVhZCBvbmx5LCBpdCdzIGVhc2llc3QgdG8gY2hhbmdlIHRoZQogICAgICAqIEhBTkRMRVJfQ0FOX1JXUklURSBkZWZpbml0aW9uIGJlbG93IHRvIEhBTkRMRVJfQ0FOX1JPTkxZIAogICAgICAqLwotICAgIG15X2hhbmRsZXIgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibnNUcmFuc2FjdGlvblRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNUcmFuc2FjdGlvblRhYmxlX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zVHJhbnNhY3Rpb25UYWJsZV9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zVHJhbnNhY3Rpb25UYWJsZV9vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgbXlfaGFuZGxlciA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAibnNUcmFuc2FjdGlvblRhYmxlIiwgbnNUcmFuc2FjdGlvblRhYmxlX2hhbmRsZXIsCisgICAgICAgIG5zVHJhbnNhY3Rpb25UYWJsZV9vaWQsIE9JRF9MRU5HVEgobnNUcmFuc2FjdGlvblRhYmxlX29pZCksCisgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKIAogICAgIGlmICghbXlfaGFuZGxlciB8fCAhdGFibGVfaW5mbyB8fCAhaWluZm8pIHsKICAgICAgICAgaWYgKG15X2hhbmRsZXIpCkBAIC02OCw3ICs2NCw3IEBACiAgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcihteV9oYW5kbGVyLCBpaW5mbyk7CiB9CiAKLS8qKiBJbml0aWFsemllcyB0aGUgbnNUcmFuc2FjdGlvblRhYmxlIG1vZHVsZSAqLworLyoqIEluaXRpYWxpemVzIHRoZSBuc1RyYW5zYWN0aW9uVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X25zVHJhbnNhY3Rpb25UYWJsZSh2b2lkKQogewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50L25zVmFjbUFjY2Vzc1RhYmxlLmMKaW5kZXggZDJjZWUzNS4uNDEwYjAwMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnQvbnNWYWNtQWNjZXNzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9hZ2VudC9uc1ZhY21BY2Nlc3NUYWJsZS5jCkBAIC0xNywxNyArMTcsMTUgQEAKICAgICAgKiBJbml0aWFsaXplIHRoZSBuc1ZhY21BY2Nlc3NUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMKICAgICAgKiAgIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkCiAgICAgICovCi0gICAgc3RhdGljIG9pZCBuc1ZhY21BY2Nlc3NUYWJsZV9vaWRbXSAgID0geyAxLDMsNiwxLDQsMSw4MDcyLDEsOSwxIH07Ci0gICAgc2l6ZV90ICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChuc1ZhY21BY2Nlc3NUYWJsZV9vaWQpOworICAgIGNvbnN0IG9pZCBuc1ZhY21BY2Nlc3NUYWJsZV9vaWRbXSAgID0geyAxLDMsNiwxLDQsMSw4MDcyLDEsOSwxIH07CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwogICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAgICAgICAgICAgKmlpbmZvOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKLSAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibnNWYWNtQWNjZXNzVGFibGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9oYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuc1ZhY21BY2Nlc3NUYWJsZV9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zVmFjbUFjY2Vzc1RhYmxlX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICJuc1ZhY21BY2Nlc3NUYWJsZSIsIG5zVmFjbUFjY2Vzc1RhYmxlX2hhbmRsZXIsCisgICAgICAgIG5zVmFjbUFjY2Vzc1RhYmxlX29pZCwgT0lEX0xFTkdUSChuc1ZhY21BY2Nlc3NUYWJsZV9vaWQpLAorICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpOwogCiAgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CiAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvYWdlbnR4X2NvbmZpZy5jCmluZGV4IGQxNTZkNDcuLmVlYzgyNzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9hZ2VudHhfY29uZmlnLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L2FnZW50eF9jb25maWcuYwpAQCAtMTQsMTMgKzE0LDYgQEAKICNpbmNsdWRlIDxzdHJpbmdzLmg+CiAjZW5kaWYKIAotI2lmIEhBVkVfUFdEX0gKLSNpbmNsdWRlIDxwd2QuaD4KLSNlbmRpZgotI2lmIEhBVkVfR1JQX0gKLSNpbmNsdWRlIDxncnAuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgInNubXBkLmgiCkBAIC00Nyw3ICs0MCw2IEBACiBhZ2VudHhfcGFyc2VfbWFzdGVyKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogICAgIGludCAgICAgICAgICAgICBpID0gLTE7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZltCVUZTSVpdOwogCiAgICAgaWYgKCFzdHJjbXAoY3B0ciwgImFnZW50eCIpIHx8CiAgICAgICAgICFzdHJjbXAoY3B0ciwgImFsbCIpIHx8CkBAIC02MCw4ICs1Miw3IEBACiAgICAgICAgIGkgPSBhdG9pKGNwdHIpOwogCiAgICAgaWYgKGkgPCAwIHx8IGkgPiAxKSB7Ci0gICAgICAgIHNwcmludGYoYnVmLCAibWFzdGVyICclcycgdW5yZWNvZ25pc2VkIiwgY3B0cik7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigibWFzdGVyICclcycgdW5yZWNvZ25pc2VkIiwgY3B0cik7CiAgICAgfSBlbHNlCiAgICAgICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgTkVUU05NUF9EU19BR0VOVF9BR0VOVFhfTUFTVEVSLCBpKTsKIH0KQEAgLTc1LDEyICs2Niw2IEBACiAgICAgaW50IHNfcGVybSA9IC0xOwogICAgIGludCBkX3Blcm0gPSAtMTsKICAgICBjaGFyICpzdDsKLSNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKLSAgICBzdHJ1Y3QgcGFzc3dkICpwd2Q7Ci0jZW5kaWYKLSNpZiBIQVZFX0dFVEdSTkFNICYmIEhBVkVfR1JQX0gKLSAgICBzdHJ1Y3QgZ3JvdXAgICpncnA7Ci0jZW5kaWYKIAogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvY29uZmlnIiwgInBvcnQgcGVybWlzc2lvbnM6ICVzXG4iLCBjcHRyKSk7CiAgICAgc29ja2V0X3Blcm0gPSBzdHJ0b2tfcihjcHRyLCAiIFx0IiwgJnN0KTsKQEAgLTEwNywxNiArOTIsNyBAQAogICAgICAqIFRyeSB0byBoYW5kbGUgbnVtZXJpYyBVSURzIG9yIHVzZXIgbmFtZXMgZm9yIHRoZSBzb2NrZXQgb3duZXIKICAgICAgKi8KICAgICBpZiAoc29ja2V0X3VzZXIpIHsKLSAgICAgICAgdWlkID0gYXRvaShzb2NrZXRfdXNlcik7Ci0gICAgICAgIGlmICggdWlkID09IDAgKSB7Ci0jaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgICAgICBwd2QgPSBnZXRwd25hbSggc29ja2V0X3VzZXIgKTsKLSAgICAgICAgICAgIGlmIChwd2QpCi0gICAgICAgICAgICAgICAgdWlkID0gcHdkLT5wd191aWQ7Ci0gICAgICAgICAgICBlbHNlCi0jZW5kaWYKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIkNhbid0IGlkZW50aWZ5IEFnZW50WCBzb2NrZXQgdXNlciAoJXMpLlxuIiwgc29ja2V0X3VzZXIpOwotICAgICAgICB9CisgICAgICAgIHVpZCA9IG5ldHNubXBfc3RyX3RvX3VpZChzb2NrZXRfdXNlcik7CiAgICAgICAgIGlmICggdWlkICE9IDAgKQogICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9YX1NPQ0tfVVNFUiwgdWlkKTsKQEAgLTEyOCwxNiArMTA0LDcgQEAKICAgICAgKiBhbmQgc2ltaWxhcmx5IGZvciB0aGUgc29ja2V0IGdyb3VwIG93bmVyc2hpcAogICAgICAqLwogICAgIGlmIChzb2NrZXRfZ3JvdXApIHsKLSAgICAgICAgZ2lkID0gYXRvaShzb2NrZXRfZ3JvdXApOwotICAgICAgICBpZiAoIGdpZCA9PSAwICkgewotI2lmIEhBVkVfR0VUR1JOQU0gJiYgSEFWRV9HUlBfSAotICAgICAgICAgICAgZ3JwID0gZ2V0Z3JuYW0oIHNvY2tldF9ncm91cCApOwotICAgICAgICAgICAgaWYgKGdycCkKLSAgICAgICAgICAgICAgICBnaWQgPSBncnAtPmdyX2dpZDsKLSAgICAgICAgICAgIGVsc2UKLSNlbmRpZgotICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiQ2FuJ3QgaWRlbnRpZnkgQWdlbnRYIHNvY2tldCBncm91cCAoJXMpLlxuIiwgc29ja2V0X2dyb3VwKTsKLSAgICAgICAgfQorICAgICAgICBnaWQgPSBuZXRzbm1wX3N0cl90b19naWQoc29ja2V0X2dyb3VwKTsKICAgICAgICAgaWYgKCBnaWQgIT0gMCApCiAgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19HUk9VUCwgZ2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuYwppbmRleCA2YjBmNjVlLi4wNWYxNDhmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5jCkBAIC02MCwxMyArNjAsNiBAQAogICAgIGNoYXIgKmFnZW50eF9zb2NrZXRzOwogICAgIGNoYXIgKmNwMTsKIAotI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VOSVhfRE9NQUlOCi0gICAgaW50IGFnZW50eF9kaXJfcGVybTsKLSAgICBpbnQgYWdlbnR4X3NvY2tfcGVybTsKLSAgICBpbnQgYWdlbnR4X3NvY2tfdXNlcjsKLSAgICBpbnQgYWdlbnR4X3NvY2tfZ3JvdXA7Ci0jZW5kaWYKLQogICAgIGlmIChuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIE5FVFNOTVBfRFNfQUdFTlRfUk9MRSkgIT0gTUFTVEVSX0FHRU5UKQogICAgICAgICByZXR1cm47CiAKQEAgLTk4LDYgKzkxLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX1RJTUVPVVQpOwogICAgIHNlc3MucmV0cmllcyA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9SRVRSSUVTKTsKKworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VOSVhfRE9NQUlOCisgICAgeworCWludCBhZ2VudHhfZGlyX3Blcm0gPQorCSAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKwkJCSAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfRElSX1BFUk0pOworCWlmIChhZ2VudHhfZGlyX3Blcm0gPT0gMCkKKwkgICAgYWdlbnR4X2Rpcl9wZXJtID0gTkVUU05NUF9BR0VOVF9ESVJFQ1RPUllfTU9ERTsKKwluZXRzbm1wX3VuaXhfY3JlYXRlX3BhdGhfd2l0aF9tb2RlKGFnZW50eF9kaXJfcGVybSk7CisgICAgfQorI2VuZGlmCisKICAgICBjcDEgPSBhZ2VudHhfc29ja2V0czsKICAgICB3aGlsZSAoY3AxKSB7CiAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0OwpAQCAtMTExLDQ0ICsxMTYsMTUgQEAKICAgICAgICAgaWYgKGNwMSAhPSBOVUxMKSB7CiAgICAgICAgICAgICAqY3AxKysgPSAnXDAnOwogCX0KLSAgICAKLSAgICAgICAgaWYgKHNlc3MucGVlcm5hbWVbMF0gPT0gJy8nKSB7Ci0jaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfVU5JWF9ET01BSU4KLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiAgSWYgdGhpcyBpcyBhIFVuaXggcGF0aG5hbWUsCi0gICAgICAgICAgICAgKiAgdHJ5IGFuZCBjcmVhdGUgdGhlIGRpcmVjdG9yeSBmaXJzdC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgYWdlbnR4X2Rpcl9wZXJtID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfWF9ESVJfUEVSTSk7Ci0gICAgICAgICAgICBpZiAoYWdlbnR4X2Rpcl9wZXJtID09IDApCi0gICAgICAgICAgICAgICAgYWdlbnR4X2Rpcl9wZXJtID0gTkVUU05NUF9BR0VOVF9ESVJFQ1RPUllfTU9ERTsKLSAgICAgICAgICAgIGlmIChta2RpcmhpZXIoc2Vzcy5wZWVybmFtZSwgKG1vZGVfdClhZ2VudHhfZGlyX3Blcm0sIDEpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgZGlyZWN0b3J5IGZvciB0aGUgYWdlbnRYIHNvY2tldDogJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2Vzcy5wZWVybmFtZSk7Ci0gICAgICAgICAgICB9Ci0jZWxzZQotICAgICAgICAgICAgbmV0c25tcF9zZXNzX2xvZ19lcnJvcihMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXggZG9tYWluIHN1cHBvcnQgbm90IGF2YWlsYWJsZVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNlc3MpOwotI2VuZGlmCi0gICAgICAgIH0KLSAgICAKKwogICAgICAgICAvKgotICAgICAgICAgKiAgT3RoZXJ3aXNlLCBsZXQgJ3NubXBfb3BlbicgaW50ZXJwcmV0IHRoZSBzdHJpbmcuCisgICAgICAgICAqICBMZXQgJ3NubXBfb3BlbicgaW50ZXJwcmV0IHRoZSBkZXNjcmlwdG9yLgogICAgICAgICAgKi8KICAgICAgICAgc2Vzcy5sb2NhbF9wb3J0ID0gQUdFTlRYX1BPUlQ7ICAgICAgLyogSW5kaWNhdGUgc2VydmVyICYgc2V0IGRlZmF1bHQgcG9ydCAqLwogICAgICAgICBzZXNzLnJlbW90ZV9wb3J0ID0gMDsKICAgICAgICAgc2Vzcy5jYWxsYmFjayA9IGhhbmRsZV9tYXN0ZXJfYWdlbnR4X3BhY2tldDsKICAgICAgICAgZXJybm8gPSAwOwogICAgICAgICB0ID0gbmV0c25tcF90cmFuc3BvcnRfb3Blbl9zZXJ2ZXIoImFnZW50eCIsIHNlc3MucGVlcm5hbWUpOwotICAgICAgICBpZiAodCA9PSBOVUxMICYmIGVycm5vID09IEVBRERSSU5VU0UpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBDb3VsZCBiZSBhIGxlZnQtb3ZlciBzb2NrZXQgKG5vdyBkZWxldGVkKQotICAgICAgICAgICAgICogVHJ5IGFnYWluCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHQgPSBuZXRzbm1wX3RyYW5zcG9ydF9vcGVuX3NlcnZlcigiYWdlbnR4Iiwgc2Vzcy5wZWVybmFtZSk7Ci0gICAgICAgIH0KICAgICAgICAgaWYgKHQgPT0gTlVMTCkgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIGRpYWdub3NlIHNubXBfb3BlbiBlcnJvcnMgd2l0aCB0aGUgaW5wdXQgbmV0c25tcF9zZXNzaW9uCkBAIC0xNzEsMjMgKzE0NywyNCBAQAogICAgICAgICB9IGVsc2UgewogI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1VOSVhfRE9NQUlOCiAgICAgICAgICAgICBpZiAodC0+ZG9tYWluID09IG5ldHNubXBfVW5peERvbWFpbiAmJiB0LT5sb2NhbCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBuYW1lW3NpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pICsgMV07Ci0gICAgICAgICAgICAgICAgbWVtY3B5KG5hbWUsIHQtPmxvY2FsLCB0LT5sb2NhbF9sZW5ndGgpOwotICAgICAgICAgICAgICAgIG5hbWVbdC0+bG9jYWxfbGVuZ3RoXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBBcHBseSBhbnkgc2V0dGluZ3MgdG8gdGhlIG93bmVyc2hpcC9wZXJtaXNzaW9ucyBvZiB0aGUKICAgICAgICAgICAgICAgICAgKiBBZ2VudFggc29ja2V0CiAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgYWdlbnR4X3NvY2tfcGVybSA9CisgICAgICAgICAgICAgICAgaW50IGFnZW50eF9zb2NrX3Blcm0gPQogICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLX1BFUk0pOwotICAgICAgICAgICAgICAgIGFnZW50eF9zb2NrX3VzZXIgPQorICAgICAgICAgICAgICAgIGludCBhZ2VudHhfc29ja191c2VyID0KICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19VU0VSKTsKLSAgICAgICAgICAgICAgICBhZ2VudHhfc29ja19ncm91cCA9CisgICAgICAgICAgICAgICAgaW50IGFnZW50eF9zb2NrX2dyb3VwID0KICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19HUk9VUCk7CiAKKyAgICAgICAgICAgICAgICBjaGFyIG5hbWVbc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91bikgKyAxXTsKKyAgICAgICAgICAgICAgICBtZW1jcHkobmFtZSwgdC0+bG9jYWwsIHQtPmxvY2FsX2xlbmd0aCk7CisgICAgICAgICAgICAgICAgbmFtZVt0LT5sb2NhbF9sZW5ndGhdID0gJ1wwJzsKKwogICAgICAgICAgICAgICAgIGlmIChhZ2VudHhfc29ja19wZXJtICE9IDApCiAgICAgICAgICAgICAgICAgICAgIGNobW9kKG5hbWUsIGFnZW50eF9zb2NrX3Blcm0pOwogCkBAIC0yMTMsNiArMTkwLDEwIEBACiAgICAgICAgIH0KICAgICB9CiAKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9VTklYX0RPTUFJTgorICAgIG5ldHNubXBfdW5peF9kb250X2NyZWF0ZV9wYXRoKCk7CisjZW5kaWYKKwogICAgIFNOTVBfRlJFRShhZ2VudHhfc29ja2V0cyk7CiAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiaW5pdGlhbGl6aW5nLi4uICAgRE9ORVxuIikpOwogfQpAQCAtMjM0LDcgKzIxNSw3IEBACiAKICAgICBjYWNoZSA9IG5ldHNubXBfaGFuZGxlcl9jaGVja19jYWNoZShjYWNoZSk7CiAgICAgaWYgKCFjYWNoZSkgewotICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJyZXNwb25zZSB0b28gbGF0ZSBvbiBzZXNzaW9uICUwOHBcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgInJlc3BvbnNlIHRvbyBsYXRlIG9uIHNlc3Npb24gJThwXG4iLAogICAgICAgICAgICAgICAgICAgICBzZXNzaW9uKSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTI0Myw4ICsyMjQsOCBAQAogICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CiAgICAgY2FzZSBORVRTTk1QX0NBTExCQUNLX09QX1RJTUVEX09VVDp7CiAgICAgICAgICAgICB2b2lkICAgICAgICAgICAqcyA9IHNubXBfc2Vzc19wb2ludGVyKHNlc3Npb24pOwotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAidGltZW91dCBvbiBzZXNzaW9uICUwOHBcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJ0aW1lb3V0IG9uIHNlc3Npb24gJThwIHJlcT0weCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiwgKHVuc2lnbmVkKXJlcWlkKSk7CiAKICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZChyZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CkBAIC0yODEsMTAgKzI2MiwxMCBAQAogICAgIGNhc2UgTkVUU05NUF9DQUxMQkFDS19PUF9ESVNDT05ORUNUOgogICAgIGNhc2UgTkVUU05NUF9DQUxMQkFDS19PUF9TRU5EX0ZBSUxFRDoKICAgICAgICAgaWYgKG9wZXJhdGlvbiA9PSBORVRTTk1QX0NBTExCQUNLX09QX0RJU0NPTk5FQ1QpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgImRpc2Nvbm5lY3Qgb24gc2Vzc2lvbiAlMDhwXG4iLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiZGlzY29ubmVjdCBvbiBzZXNzaW9uICU4cFxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24pKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgInNlbmQgZmFpbGVkIG9uIHNlc3Npb24gJTA4cFxuIiwKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgInNlbmQgZmFpbGVkIG9uIHNlc3Npb24gJThwXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbikpOwogICAgICAgICB9CiAgICAgICAgIGNsb3NlX2FnZW50eF9zZXNzaW9uKHNlc3Npb24sIC0xKTsKQEAgLTMwOCw5ICsyODksMTAgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiZ290IHJlc3BvbnNlIGVycnN0YXQ9JWQsIChyZXE9MHgleCx0cmFucz0iCisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiZ290IHJlc3BvbnNlIGVycnN0YXQ9JWxkLCAocmVxPTB4JXgsdHJhbnM9IgogICAgICAgICAgICAgICAgICIweCV4LHNlc3M9MHgleClcbiIsCi0gICAgICAgICAgICAgICAgcGR1LT5lcnJzdGF0LHBkdS0+cmVxaWQscGR1LT50cmFuc2lkLCBwZHUtPnNlc3NpZCkpOworICAgICAgICAgICAgICAgIHBkdS0+ZXJyc3RhdCwgKHVuc2lnbmVkKXBkdS0+cmVxaWQsICh1bnNpZ25lZClwZHUtPnRyYW5zaWQsCisJCSh1bnNpZ25lZClwZHUtPnNlc3NpZCkpOwogCiAgICAgaWYgKHBkdS0+ZXJyc3RhdCAhPSBBR0VOVFhfRVJSX05PRVJST1IpIHsKICAgICAgICAgLyogW1JGQyAyNDcxIC0gNy4yLjUuMi5dCkBAIC0zODcsOSArMzY5LDkgQEAKICAgICAgICAgICAgIERFQlVHTVNHT0lEKCgiYWdlbnR4L21hc3RlciIsIHZhci0+bmFtZSwgdmFyLT5uYW1lX2xlbmd0aCkpOwogICAgICAgICAgICAgREVCVUdNU0coKCJhZ2VudHgvbWFzdGVyIiwgIlxuIikpOwogICAgICAgICAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgTkVUU05NUF9EU19BR0VOVF9WRVJCT1NFKSkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIiAgICA+PiAiKSk7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dWQVIoKCJzbm1wX2FnZW50IiwgdmFyKSk7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIlxuIikpOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgIiAgICA+PiAiKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dWQVIoKCJhZ2VudHgvbWFzdGVyIiwgdmFyKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0coKCJhZ2VudHgvbWFzdGVyIiwgIlxuIikpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvKgpAQCAtNjE1LDEyICs1OTcsMTEgQEAKICAgICAvKgogICAgICAqIHNlbmQgdGhlIHJlcXVlc3RzIG91dC4KICAgICAgKi8KLSAgICBERUJVR01TR1RMKCgiYWdlbnR4IiwgInNlbmRpbmcgcGR1IChyZXE9MHgleCx0cmFucz0weCV4LHNlc3M9MHgleClcbiIsCi0gICAgICAgICAgICAgICAgcGR1LT5yZXFpZCxwZHUtPnRyYW5zaWQsIHBkdS0+c2Vzc2lkKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAic2VuZGluZyBwZHUgKHJlcT0weCV4LHRyYW5zPTB4JXgsc2Vzcz0weCV4KVxuIiwKKyAgICAgICAgICAgICAgICAodW5zaWduZWQpcGR1LT5yZXFpZCwgKHVuc2lnbmVkKXBkdS0+dHJhbnNpZCwgKHVuc2lnbmVkKXBkdS0+c2Vzc2lkKSk7CiAgICAgcmVzdWx0ID0gc25tcF9hc3luY19zZW5kKGF4X3Nlc3Npb24sIHBkdSwgYWdlbnR4X2dvdF9yZXNwb25zZSwgY2JfZGF0YSk7Ci0KLSAgICBpZiAocmVzdWx0ID09IDAgKSB7Ci0gICAgICAgIHNubXBfZnJlZV9wZHUoIHBkdSApOworICAgIGlmIChyZXN1bHQgPT0gMCkgeworICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7CiAgICAgfQogCiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmggYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyLmgKaW5kZXggYjZhN2Y2Yi4uYTVkYmZhZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlci5oCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXIuaApAQCAtNyw3ICs3LDYgQEAKIGNvbmZpZ19yZXF1aXJlKGFnZW50eC9jbGllbnQpCiBjb25maWdfcmVxdWlyZShhZ2VudHgvbWFzdGVyX2FkbWluKQogY29uZmlnX3JlcXVpcmUoYWdlbnR4L2FnZW50eF9jb25maWcpCi1jb25maWdfcmVxdWlyZShtaWJJSS9zeXNPUlRhYmxlKQogCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X21hc3Rlcih2b2lkKTsKICAgICAgdm9pZCAgICAgICAgICAgIHJlYWxfaW5pdF9tYXN0ZXIodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMgYi9hZ2VudC9taWJncm91cC9hZ2VudHgvbWFzdGVyX2FkbWluLmMKaW5kZXggMTJkZGI1ZC4uYjA3M2RhMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L21hc3Rlcl9hZG1pbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9tYXN0ZXJfYWRtaW4uYwpAQCAtNDUsNyArNDUsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2luZGV4Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgotI2luY2x1ZGUgIm1pYklJL3N5c09SVGFibGUuaCIKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9zeXNPUlRhYmxlLmg+CiAjaW5jbHVkZSAibWFzdGVyLmgiCiAKIGV4dGVybiBzdHJ1Y3QgdGltZXZhbCBzdGFydHRpbWU7CkBAIC03MCw3ICs3MCw3IEBACiAgICAgbmV0c25tcF9zZXNzaW9uICpzcDsKICAgICBzdHJ1Y3QgdGltZXZhbCAgbm93OwogCi0gICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAib3BlbiAlMDhwXG4iLCBzZXNzaW9uKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAib3BlbiAlOHBcbiIsIHNlc3Npb24pKTsKICAgICBzcCA9IChuZXRzbm1wX3Nlc3Npb24gKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3Nlc3Npb24pKTsKICAgICBpZiAoc3AgPT0gTlVMTCkgewogICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBBR0VOVFhfRVJSX09QRU5fRkFJTEVEOwpAQCAtMTE3LDcgKzExNyw3IEBACiAgICAgc3AtPmZsYWdzIHw9IChwZHUtPmZsYWdzICYgQUdFTlRYX01TR19GTEFHX05FVFdPUktfQllURV9PUkRFUik7CiAgICAgc3AtPm5leHQgPSBzZXNzaW9uLT5zdWJzZXNzaW9uOwogICAgIHNlc3Npb24tPnN1YnNlc3Npb24gPSBzcDsKLSAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJvcGVuZWQgJTA4cCA9ICVkIHdpdGggZmxhZ3MgPSAlMDJ4XG4iLAorICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgIm9wZW5lZCAlOHAgPSAlbGQgd2l0aCBmbGFncyA9ICUwMmx4XG4iLAogICAgICAgICAgICAgICAgIHNwLCBzcC0+c2Vzc2lkLCBzcC0+ZmxhZ3MgJiBBR0VOVFhfTVNHX0ZMQUdTX01BU0spKTsKIAogICAgIHJldHVybiBzcC0+c2Vzc2lkOwpAQCAtMTMxLDcgKzEzMSw3IEBACiAgICAgaWYgKCFzZXNzaW9uKQogICAgICAgICByZXR1cm4gQUdFTlRYX0VSUl9OT1RfT1BFTjsKIAotICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgImNsb3NlICUwOHAsICVkXG4iLCBzZXNzaW9uLCBzZXNzaWQpKTsKKyAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJjbG9zZSAlOHAsICVkXG4iLCBzZXNzaW9uLCBzZXNzaWQpKTsKICAgICBpZiAoc2Vzc2lkID09IC0xKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZSBmb2xsb3dpbmcgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIGxvY2tpbmcgdXAgdGhlIGFnZW50IHdoZW4KQEAgLTE0OSw5ICsxNDksNyBAQAogICAgICAgICAgICAgICAgIAogICAgICAgICB1bnJlZ2lzdGVyX21pYnNfYnlfc2Vzc2lvbihzZXNzaW9uKTsKICAgICAgICAgdW5yZWdpc3Rlcl9pbmRleF9ieV9zZXNzaW9uKHNlc3Npb24pOwotICAgICAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SX1NFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXNlc3Npb24pOworICAgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGVfYnlfc2Vzc2lvbihzZXNzaW9uKTsKIAlTTk1QX0ZSRUUoc2Vzc2lvbi0+bXl2b2lkKTsKICAgICAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9FUlJPUjsKICAgICB9CkBAIC0xNjMsOSArMTYxLDcgQEAKICAgICAgICAgaWYgKHNwLT5zZXNzaWQgPT0gc2Vzc2lkKSB7CiAgICAgICAgICAgICB1bnJlZ2lzdGVyX21pYnNfYnlfc2Vzc2lvbihzcCk7CiAgICAgICAgICAgICB1bnJlZ2lzdGVyX2luZGV4X2J5X3Nlc3Npb24oc3ApOwotICAgICAgICAgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfVU5SRUdfU1lTT1JfU0VTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXNwKTsKKyAgICAgICAgICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKHNwKTsKIAogICAgICAgICAgICAgKnByZXZOZXh0ID0gc3AtPm5leHQ7CiAKQEAgLTE3OCw3ICsxNzQsNyBAQAogICAgICAgICAgICAgZnJlZShzcCk7CiAgICAgICAgICAgICBzcCA9IE5VTEw7CiAKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwgImNsb3NlZCAlMDhwLCAlZCBva2F5XG4iLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiY2xvc2VkICU4cCwgJWQgb2theVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb24sIHNlc3NpZCkpOwogICAgICAgICAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9FUlJPUjsKICAgICAgICAgfQpAQCAtMzgwLDIwICszNzYsMTcgQEAKIGFkZF9hZ2VudF9jYXBzX2xpc3QobmV0c25tcF9zZXNzaW9uICogc2Vzc2lvbiwgbmV0c25tcF9wZHUgKnBkdSkKIHsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnNwOwotICAgIHN0cnVjdCBzeXNPUlRhYmxlIHBhcm1zOworICAgIGNoYXIqIGRlc2NyaXB0aW9uOwogCiAgICAgc3AgPSBmaW5kX2FnZW50eF9zZXNzaW9uKHNlc3Npb24sIHBkdS0+c2Vzc2lkKTsKICAgICBpZiAoc3AgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9UX09QRU47CiAKLSAgICBwYXJtcy5PUl9vaWQgPSBwZHUtPnZhcmlhYmxlcy0+bmFtZTsKLSAgICBwYXJtcy5PUl9vaWRsZW4gPSBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGg7Ci0gICAgcGFybXMuT1JfZGVzY3IgID0gbmV0c25tcF9zdHJkdXBfYW5kX251bGwocGR1LT52YXJpYWJsZXMtPnZhbC5zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT52YXJpYWJsZXMtPnZhbF9sZW4pOwotICAgIHBhcm1zLk9SX3Nlc3MgPSBzcDsKLSAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfUkVHX1NZU09SLCAodm9pZCopJnBhcm1zKTsKLSAgICBmcmVlKHBhcm1zLk9SX2Rlc2NyKTsKKyAgICBkZXNjcmlwdGlvbiA9IG5ldHNubXBfc3RyZHVwX2FuZF9udWxsKHBkdS0+dmFyaWFibGVzLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT52YXJpYWJsZXMtPnZhbF9sZW4pOworICAgIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhwZHUtPnZhcmlhYmxlcy0+bmFtZSwgcGR1LT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbiwgc3ApOworICAgIGZyZWUoZGVzY3JpcHRpb24pOwogICAgIHJldHVybiBBR0VOVFhfRVJSX05PRVJST1I7CiB9CiAKQEAgLTQwMSwyMiArMzk0LDE4IEBACiByZW1vdmVfYWdlbnRfY2Fwc19saXN0KG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sIG5ldHNubXBfcGR1ICpwZHUpCiB7CiAgICAgbmV0c25tcF9zZXNzaW9uICpzcDsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSBwYXJtczsKKyAgICBpbnQgcmM7CiAKICAgICBzcCA9IGZpbmRfYWdlbnR4X3Nlc3Npb24oc2Vzc2lvbiwgcGR1LT5zZXNzaWQpOwogICAgIGlmIChzcCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gQUdFTlRYX0VSUl9OT1RfT1BFTjsKIAotICAgIHBhcm1zLk9SX29pZCA9IHBkdS0+dmFyaWFibGVzLT5uYW1lOwotICAgIHBhcm1zLk9SX29pZGxlbiA9IHBkdS0+dmFyaWFibGVzLT5uYW1lX2xlbmd0aDsKLSAgICBwYXJtcy5PUl9zZXNzID0gc3A7Ci0gICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SLCAodm9pZCopJnBhcm1zKTsKLSAgICAvKgotICAgICAqIG5vIGVhc3kgd2F5IHRvIGdldCBhbiBlcnJvciBjb2RlLi4uCi0gICAgICogaWYgKHJjIDwgMCkKLSAgICAgKiAgIHJldHVybiBBR0VOVFhfRVJSX1VOS05PV05fQUdFTlRDQVBTOwotICAgICAqLworICAgIHJjID0gdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3MocGR1LT52YXJpYWJsZXMtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGgsIHNwKTsKKworICAgIGlmIChyYyA8IDApCisgICAgICByZXR1cm4gQUdFTlRYX0VSUl9VTktOT1dOX0FHRU5UQ0FQUzsKKwogICAgIHJldHVybiBBR0VOVFhfRVJSX05PRVJST1I7CiB9CiAKQEAgLTQ1NCw3ICs0NDMsMTggQEAKICAgICAgKiAgICAgYXMgdGhpcyBpcyB2YWxpZCBBZ2VudFggc3ludGF4LgogICAgICAqLwogCi0gICAgc2VuZF90cmFwX3ZhcnMoLTEsIC0xLCBwZHUtPnZhcmlhYmxlcyk7CisJLyogSWYgYSBjb250ZXh0IG5hbWUgd2FzIHNwZWNpZmllZCwgc2VuZCB0aGUgdHJhcCB1c2luZyB0aGF0IGNvbnRleHQuCisJICogT3RoZXJ3aXNlLCBzZW5kIHRoZSB0cmFwIHdpdGhvdXQgdGhlIGNvbnRleHQgdXNpbmcgdGhlIG9sZCBtZXRob2QgKi8KKwlpZiAocGR1LT5jb250ZXh0TmFtZSAhPSBOVUxMKQorCXsKKyAgICAgICAgc2VuZF90cmFwX3ZhcnNfd2l0aF9jb250ZXh0KC0xLCAtMSwgcGR1LT52YXJpYWJsZXMsIAorICAgICAgICAgICAgICAgICAgICAgICBwZHUtPmNvbnRleHROYW1lKTsKKwl9CisJZWxzZQorCXsKKyAgICAgICAgc2VuZF90cmFwX3ZhcnMoLTEsIC0xLCBwZHUtPnZhcmlhYmxlcyk7CisJfQorCiAgICAgcmV0dXJuIEFHRU5UWF9FUlJfTk9FUlJPUjsKIH0KIApAQCAtNDgxLDEyICs0ODEsMTYgQEAKIAogICAgIGlmIChvcGVyYXRpb24gPT0gTkVUU05NUF9DQUxMQkFDS19PUF9ESVNDT05ORUNUKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvbWFzdGVyIiwKLSAgICAgICAgICAgICAgICAgICAgInRyYW5zcG9ydCBkaXNjb25uZWN0IG9uIHNlc3Npb24gJTA4cFxuIiwgc2Vzc2lvbikpOworICAgICAgICAgICAgICAgICAgICAidHJhbnNwb3J0IGRpc2Nvbm5lY3Qgb24gc2Vzc2lvbiAlOHBcbiIsIHNlc3Npb24pKTsKICAgICAgICAgLyoKICAgICAgICAgICogU2h1dCB0aGlzIHNlc3Npb24gZG93biBncmFjZWZ1bGx5LiAgCiAgICAgICAgICAqLwogICAgICAgICBjbG9zZV9hZ2VudHhfc2Vzc2lvbihzZXNzaW9uLCAtMSk7CiAgICAgICAgIHJldHVybiAxOworICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09IE5FVFNOTVBfQ0FMTEJBQ0tfT1BfQ09OTkVDVCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsCisgICAgICAgICAgICAgICAgICAgICJ0cmFuc3BvcnQgY29ubmVjdCBvbiBzZXNzaW9uICU4cFxuIiwgc2Vzc2lvbikpOworICAgICAgICByZXR1cm4gMTsKICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiAhPSBORVRTTk1QX0NBTExCQUNLX09QX1JFQ0VJVkVEX01FU1NBR0UpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAidW5leHBlY3RlZCBjYWxsYmFjayBvcCAlZFxuIiwKICAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW9uKSk7CkBAIC01MDMsOCArNTA3LDkgQEAKICAgICAgICAgYXNwID0gaW5pdF9hZ2VudF9zbm1wX3Nlc3Npb24oc2Vzc2lvbiwgcGR1KTsKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJoYW5kbGUgcGR1IChyZXE9MHgleCx0cmFucz0weCV4LHNlc3M9MHgleClcbiIsCi0gICAgICAgICAgICAgICAgcGR1LT5yZXFpZCxwZHUtPnRyYW5zaWQsIHBkdS0+c2Vzc2lkKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAiaGFuZGxlIHBkdSAocmVxPTB4JWx4LHRyYW5zPTB4JWx4LHNlc3M9MHglbHgpXG4iLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXBkdS0+cmVxaWQsICh1bnNpZ25lZCBsb25nKXBkdS0+dHJhbnNpZCwKKwkJKHVuc2lnbmVkIGxvbmcpcGR1LT5zZXNzaWQpKTsKICAgICAKICAgICBzd2l0Y2ggKHBkdS0+Y29tbWFuZCkgewogICAgIGNhc2UgQUdFTlRYX01TR19PUEVOOgpAQCAtNTc5LDkgKzU4NCwxMCBAQAogICAgIGFzcC0+cGR1LT50aW1lID0gY2FsY3VsYXRlX3RpbWVfZGlmZigmbm93LCAmc3RhcnR0aW1lKTsKICAgICBhc3AtPnBkdS0+Y29tbWFuZCA9IEFHRU5UWF9NU0dfUkVTUE9OU0U7CiAgICAgYXNwLT5wZHUtPmVycnN0YXQgPSBhc3AtPnN0YXR1czsKLSAgICBERUJVR01TR1RMKCgiYWdlbnR4L21hc3RlciIsICJzZW5kIHJlc3BvbnNlLCBzdGF0ICVkIChyZXE9MHgleCx0cmFucz0iCi0gICAgICAgICAgICAgICAgIjB4JXgsc2Vzcz0weCV4KVxuIiwKLSAgICAgICAgICAgICAgICBhc3AtPnN0YXR1cywgcGR1LT5yZXFpZCxwZHUtPnRyYW5zaWQsIHBkdS0+c2Vzc2lkKSk7CisgICAgREVCVUdNU0dUTCgoImFnZW50eC9tYXN0ZXIiLCAic2VuZCByZXNwb25zZSwgc3RhdCAlZCAocmVxPTB4JWx4LHRyYW5zPSIKKyAgICAgICAgICAgICAgICAiMHglbHgsc2Vzcz0weCVseClcbiIsCisgICAgICAgICAgICAgICAgYXNwLT5zdGF0dXMsICh1bnNpZ25lZCBsb25nKXBkdS0+cmVxaWQsCisJCSh1bnNpZ25lZCBsb25nKXBkdS0+dHJhbnNpZCwgKHVuc2lnbmVkIGxvbmcpcGR1LT5zZXNzaWQpKTsKICAgICBpZiAoIXNubXBfc2VuZChhc3AtPnNlc3Npb24sIGFzcC0+cGR1KSkgewogICAgICAgICBjaGFyICAgICAgICAgICAqZWIgPSBOVUxMOwogICAgICAgICBpbnQgICAgICAgICAgICAgcGUsIHBzZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5jIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMKaW5kZXggYTQ4Mjc3MC4uNzcxYjQ1YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvYWdlbnR4L3Byb3RvY29sLmMKQEAgLTEzNSw3ICsxMzUsNyBAQAogI2VuZGlmCiAgICAgfQogICAgIERFQlVHRFVNUFNFVFVQKCJzZW5kIiwgKCpidWYgKyBpbGVuKSwgNCk7Ci0gICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsdSAoMHglLjJsWClcbiIsIGl2YWx1ZSwKKyAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBJbnRlZ2VyOlx0JXUgKDB4JS4yWClcbiIsIGl2YWx1ZSwKICAgICAgICAgICAgICAgaXZhbHVlKSk7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xNjgsNyArMTY4LDcgQEAKICNlbmRpZgogICAgIH0KICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsIG9yaWdfYnVmcCwgNCk7Ci0gICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgb3JpZ192YWwsCisgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCV1ICgweCUuMlgpXG4iLCBvcmlnX3ZhbCwKICAgICAgICAgICAgICAgb3JpZ192YWwpKTsKIH0KIApAQCAtMjY0LDggKzI2NCw4IEBACiAKICAgICBERUJVR0RVTVBIRUFERVIoInNlbmQiLCAiT0lEIEhlYWRlciIpOwogICAgIERFQlVHRFVNUFNFVFVQKCJzZW5kIiwgKCpidWYgKyBpbGVuKSwgNCk7Ci0gICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgIyBzdWJpZHM6XHQlZCAoMHglLjJYKVxuIiwgbmFtZV9sZW4sCi0gICAgICAgICAgICAgIG5hbWVfbGVuKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgIyBzdWJpZHM6XHQlZCAoMHglLjJYKVxuIiwgKGludCluYW1lX2xlbiwKKyAgICAgICAgICAgICAgKHVuc2lnbmVkIGludCluYW1lX2xlbikpOwogICAgIERFQlVHUFJJTlRJTkRFTlQoImR1bXB2X3NlbmQiKTsKICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBwcmVmaXg6XHQlZCAoMHglLjJYKVxuIiwgcHJlZml4LCBwcmVmaXgpKTsKICAgICBERUJVR1BSSU5USU5ERU5UKCJkdW1wdl9zZW5kIik7CkBAIC00NDksNiArNDQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cC0+bmFtZSwgdnAtPm5hbWVfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmtfb3JkZXIpKSB7CiAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOworICAgICAgICBERUJVR0lOREVOVExFU1MoKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIERFQlVHSU5ERU5UTEVTUygpOwpAQCAtNDg4LDcgKzQ4OSw3IEBACiAgICAgY2FzZSBBU05fT1BBUVVFX0RPVUJMRToKICAgICAgICAgREVCVUdEVU1QSEVBREVSKCJzZW5kIiwgIkJ1aWxkIE9wYXF1ZSBEb3VibGUiKTsKICAgICAgICAgREVCVUdQUklOVElOREVOVCgiZHVtcHZfc2VuZCIpOwotICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBEb3VibGU6XHQlbGZcbiIsICoodnAtPnZhbC5kb3VibGVWYWwpKSk7CisgICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIERvdWJsZTpcdCVmXG4iLCAqKHZwLT52YWwuZG91YmxlVmFsKSkpOwogICAgICAgICBpZiAoIWFnZW50eF9yZWFsbG9jX2J1aWxkX2RvdWJsZQogICAgICAgICAgICAgKGJ1ZiwgYnVmX2xlbiwgb3V0X2xlbiwgYWxsb3dfcmVhbGxvYywgKih2cC0+dmFsLmRvdWJsZVZhbCksCiAgICAgICAgICAgICAgbmV0d29ya19vcmRlcikpIHsKQEAgLTU0OCw2ICs1NDksNyBAQAogICAgICAgICAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUJVR0RVTVBIRUFERVIoInNlbmQiLCAiQnVpbGQgQ291bnRlcjY0IChsb3csIGhpZ2gpIik7CiAgICAgICAgICAgICBpZiAoIWFnZW50eF9yZWFsbG9jX2J1aWxkX2ludApAQCAtNTYyLDYgKzU2NCw3IEBACiAgICAgICAgICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVR0lOREVOVExFU1MoKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtNjk5LDYgKzcwMiwxNyBAQAogICAgICAgICBwZHUtPmZsYWdzICY9IH4oQUdFTlRYX01TR19GTEFHX05PTl9ERUZBVUxUX0NPTlRFWFQpOwogICAgIH0KIAorCS8qIFdlJ3ZlIHJlY2VpdmVkIGEgUERVIHRoYXQgaGFzIHNwZWNpZmllZCBhIGNvbnRleHQuICBOZXRTTk1QIGhvd2V2ZXIsIHVzZXMKKwkgKiB0aGUgcGR1LT5jb21tdW5pdHkgZmllbGQgdG8gc3BlY2lmeSBjb250ZXh0IHdoZW4gdXNpbmcgdGhlIEFnZW50WAorCSAqIHByb3RvY29sLiAgVGhlcmVmb3JlIHdlIG5lZWQgdG8gY29weSB0aGUgY29udGV4dCBuYW1lIGFuZCBsZW5ndGggaW50byB0aGUKKwkgKiBwZHUtPmNvbW11bml0eSBhbmQgcGR1LT5jb21tdW5pdHlfbGVuIGZpZWxkcywgcmVzcGVjdGl2ZWx5LiAqLworCWlmIChwZHUtPmNvbnRleHROYW1lICE9IE5VTEwgJiYgcGR1LT5jb21tdW5pdHkgPT0gTlVMTCkKKwl7CQorCQlwZHUtPmNvbW11bml0eSAgICAgPSBzdHJkdXAocGR1LT5jb250ZXh0TmFtZSk7CisJCXBkdS0+Y29tbXVuaXR5X2xlbiA9IHBkdS0+Y29udGV4dE5hbWVMZW47CisJCXBkdS0+ZmxhZ3MgfD0gQUdFTlRYX01TR19GTEFHX05PTl9ERUZBVUxUX0NPTlRFWFQ7CisJfQorCiAgICAgLyoKICAgICAgKiBCdWlsZCB0aGUgaGVhZGVyIChhbmQgY29udGV4dCBpZiBhcHByb3ByaWF0ZSkuICAKICAgICAgKi8KQEAgLTkwMiw3ICs5MTYsNyBAQAogICAgICAgICB9CiAgICAgICAgIERFQlVHRFVNUEhFQURFUigic2VuZCIsICJSZXNwb25zZSIpOwogICAgICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsICgqYnVmICsgKm91dF9sZW4gLSA0KSwgNCk7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIHN5c1VwVGltZTpcdCVkXG4iLCBwZHUtPnRpbWUpKTsKKyAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgc3lzVXBUaW1lOlx0JWx1XG4iLCBwZHUtPnRpbWUpKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAKICAgICAgICAgaWYgKCFhZ2VudHhfcmVhbGxvY19idWlsZF9zaG9ydApAQCAtOTE4LDkgKzkzMiw5IEBACiAgICAgICAgIH0KICAgICAgICAgREVCVUdEVU1QSEVBREVSKCJzZW5kIiwgIlJlc3BvbnNlIGVycm9ycyIpOwogICAgICAgICBERUJVR0RVTVBTRVRVUCgic2VuZCIsICgqYnVmICsgKm91dF9sZW4gLSA0KSwgNCk7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIGVycnN0YXQ6XHQlZFxuIiwgcGR1LT5lcnJzdGF0KSk7CisgICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIGVycnN0YXQ6XHQlbGRcbiIsIHBkdS0+ZXJyc3RhdCkpOwogICAgICAgICBERUJVR1BSSU5USU5ERU5UKCJkdW1wdl9zZW5kIik7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIGVycmluZGV4Olx0JWRcbiIsIHBkdS0+ZXJyaW5kZXgpKTsKKyAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgZXJyaW5kZXg6XHQlbGRcbiIsIHBkdS0+ZXJyaW5kZXgpKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAKICAgICAgICAgLyoKQEAgLTEwNjMsNyArMTA3Nyw3IEBACiAgICAgICAgIHZhbHVlICs9IGRhdGFbMF07CiAjZW5kaWYKICAgICB9Ci0gICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCV1ICgweCUuMlgpXG4iLCB2YWx1ZSwgdmFsdWUpKTsKIAogICAgIHJldHVybiB2YWx1ZTsKIH0KQEAgLTEwOTQsNyArMTEwOCw3IEBACiAgICAgfQogCiAgICAgREVCVUdEVU1QU0VUVVAoInJlY3YiLCBkYXRhLCAyKTsKLSAgICBERUJVR01TRygoImR1bXB2X3JlY3YiLCAiICBTaG9ydDpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgU2hvcnQ6XHQlaHUgKDB4JS4yWClcbiIsIHZhbHVlLCB2YWx1ZSkpOwogICAgIHJldHVybiB2YWx1ZTsKIH0KIApAQCAtMTE0MCw3ICsxMTU0LDcgQEAKICAgICAqbGVuZ3RoIC09IDQ7CiAKICAgICBERUJVR01TRygoImRqcCIsICIgIHBhcnNlX29pZFxuIikpOwotICAgIERFQlVHTVNHKCgiZGpwIiwgIiAgc2l6ZW9mKG9pZCkgPSAlZFxuIiwgc2l6ZW9mKG9pZCkpKTsKKyAgICBERUJVR01TRygoImRqcCIsICIgIHNpemVvZihvaWQpID0gJWRcbiIsIChpbnQpc2l6ZW9mKG9pZCkpKTsKICAgICBpZiAobl9zdWJpZCA9PSAwICYmIHByZWZpeCA9PSAwKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIE51bGwgT0lEIApAQCAtMTE1OCw3ICsxMTcyLDkgQEAKICAgICAgKi8KICAgICB0bXBfb2lkX2xlbiA9IChwcmVmaXggPyBuX3N1YmlkICsgNSA6IG5fc3ViaWQpOwogICAgIGlmICgqb2lkX2xlbiA8IHRtcF9vaWRfbGVuKSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiT3ZlcnNpemVkIE9iamVjdCBJRFxuIikpOworICAgICAgICBERUJVR01TR1RMKCgiYWdlbnR4IiwgIk92ZXJzaXplZCBPYmplY3QgSUQgKGJ1Zj0lZCBwZHU9JWQpXG4iLAorCQkgICAgKGludCkgKm9pZF9sZW4sIHRtcF9vaWRfbGVuKSk7CisgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTExNjksNiArMTE4NSw3IEBACiAjZW5kaWYKICAgICBpZiAoKmxlbmd0aCA8IDQgKiBuX3N1YmlkKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiSW5jb21wbGV0ZSBPYmplY3QgSURcbiIpKTsKKyAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIApAQCAtMTIyNywxNCArMTI0NCwxNCBAQAogCiAgICAgaWYgKCpsZW5ndGggPCA0KSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiSW5jb21wbGV0ZSBzdHJpbmcgKHRvbyBzaG9ydDogJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpKmxlbmd0aCkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBsZW4gPSBhZ2VudHhfcGFyc2VfaW50KGRhdGEsIG5ldHdvcmtfYnl0ZV9vcmRlcik7CiAgICAgaWYgKCpsZW5ndGggPCBsZW4gKyA0KSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgiLCAiSW5jb21wbGV0ZSBzdHJpbmcgKHN0aWxsIHRvbyBzaG9ydDogJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAqbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpKmxlbmd0aCkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgaWYgKGxlbiA+ICpzdHJfbGVuKSB7CkBAIC0xMzIyLDcgKzEzMzksNyBAQAogICAgICAgICAqb3BhcXVlX2xlbiA9IHNpemVvZihkb3VibGUpOwogICAgICAgICBtZW1jcHkob3BhcXVlX2J1ZiwgJmZ1LmNbMF0sIHNpemVvZihkb3VibGUpKTsKICAgICAgICAgKnR5cGUgPSBBU05fT1BBUVVFX0RPVUJMRTsKLSAgICAgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIkRvdWJsZTogJWxmXG4iLCBmdS5kb3VibGVWYWwpKTsKKyAgICAgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIkRvdWJsZTogJWZcbiIsIGZ1LmRvdWJsZVZhbCkpOwogICAgICAgICByZXR1cm4gY3A7CiAKICAgICBjYXNlIEFTTl9PUEFRVUVfSTY0OgpAQCAtMTM0NSw4ICsxMzYyLDYgQEAKIHsKICAgICB1X2NoYXIgICAgICAgICAqYnVmcCA9IGRhdGE7CiAgICAgdV9pbnQgICAgICAgICAgIGludF92YWw7Ci0gICAgaW50ICAgICAgICAgICAgaW50X29mZnNldDsKLSAgICB1X2ludCAgICAgICAgICAqaW50X3B0ciA9ICh1X2ludCAqKSBkYXRhX2J1ZjsKICAgICBzdHJ1Y3QgY291bnRlcjY0IHRtcDY0OwogCiAgICAgREVCVUdEVU1QSEVBREVSKCJyZWN2IiwgIlZhckJpbmQ6Iik7CkBAIC0xNDAxLDE2ICsxNDE2LDE2IEBACiAKICAgICBjYXNlIEFTTl9DT1VOVEVSNjQ6CiAgICAgICAgIG1lbXNldCgmdG1wNjQsIDAsIHNpemVvZih0bXA2NCkpOwotICAgICAgICBpZiAobmV0d29ya19ieXRlX29yZGVyKSB7Ci0gICAgICAgICAgICB0bXA2NC5oaWdoID0gYWdlbnR4X3BhcnNlX2ludChidWZwLCAgIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgICAgICB0bXA2NC5sb3cgID0gYWdlbnR4X3BhcnNlX2ludChidWZwKzQsIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0bXA2NC5oaWdoID0gYWdlbnR4X3BhcnNlX2ludChidWZwKzQsIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgICAgICB0bXA2NC5sb3cgID0gYWdlbnR4X3BhcnNlX2ludChidWZwLCAgIG5ldHdvcmtfYnl0ZV9vcmRlcik7Ci0gICAgICAgIH0KKwlpZiAobmV0d29ya19ieXRlX29yZGVyKSB7CisJICAgIHRtcDY0LmhpZ2ggPSBhZ2VudHhfcGFyc2VfaW50KGJ1ZnAsICAgbmV0d29ya19ieXRlX29yZGVyKTsKKwkgICAgdG1wNjQubG93ICA9IGFnZW50eF9wYXJzZV9pbnQoYnVmcCs0LCBuZXR3b3JrX2J5dGVfb3JkZXIpOworCX0gZWxzZSB7CisJICAgIHRtcDY0LmhpZ2ggPSBhZ2VudHhfcGFyc2VfaW50KGJ1ZnArNCwgbmV0d29ya19ieXRlX29yZGVyKTsKKwkgICAgdG1wNjQubG93ICA9IGFnZW50eF9wYXJzZV9pbnQoYnVmcCwgICBuZXR3b3JrX2J5dGVfb3JkZXIpOworCX0KIAogICAgICAgICBtZW1jcHkoZGF0YV9idWYsICZ0bXA2NCwgc2l6ZW9mKHRtcDY0KSk7Ci0gICAgICAgICpkYXRhX2xlbiA9IHNpemVvZih0bXA2NCk7CisJKmRhdGFfbGVuID0gc2l6ZW9mKHRtcDY0KTsKIAlidWZwICAgICs9IDg7CiAJKmxlbmd0aCAtPSA4OwogICAgICAgICBicmVhazsKQEAgLTE1MjksNiArMTU0NCw3IEBACiAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgYnVmcCArPSA0OwogCisgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgKmxlbmd0aCAtPSAyMDsKICAgICBpZiAoKmxlbmd0aCAhPSBwYXlsb2FkKSB7ICAgLyogU2hvcnQgcGF5bG9hZCAqLwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE2MDQsMTEgKzE2MjAsMjEgQEAKICAgICAgICAgcGR1LT5jb21tdW5pdHlfbGVuID0gYnVmX2xlbjsKICAgICAgICAgc25tcF9jbG9uZV9tZW0oKHZvaWQgKiopICZwZHUtPmNvbW11bml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikgYnVmZmVyLCAodW5zaWduZWQpIGJ1Zl9sZW4pOworCQkKKwkJLyogVGhlIE5ldFNOTVAgQVBJIHN0dWZmcyB0aGUgY29udGV4dCBpbnRvIHRoZSBQRFUncyBjb21tdW5pdHkgc3RyaW5nCisJCSAqIGZpZWxkLCB3aGVuIHVzaW5nIHRoZSBBZ2VudFggUHJvdG9jb2wuICBUaGUgcmVzdCBvZiB0aGUgY29kZSBob3dldmVyLAorCQkgKiBleHBlY3RzIHRvIGZpbmQgdGhlIGNvbnRleHQgaW4gdGhlIFBEVSdzIGNvbnRleHQgZmllbGQuICBUaGVyZWZvcmUgd2UKKwkJICogbmVlZCB0byBjb3B5IHRoZSBjb250ZXh0IGludG8gdGhlIFBEVSdzIGNvbnRleHQgZmllbGRzLiAgKi8KKwkJaWYgKHBkdS0+Y29tbXVuaXR5X2xlbiA+IDAgJiYgcGR1LT5jb250ZXh0TmFtZSA9PSBOVUxMKQorCQl7CisJCQlwZHUtPmNvbnRleHROYW1lICAgID0gc3RyZHVwKHBkdS0+Y29tbXVuaXR5KTsKKwkJCXBkdS0+Y29udGV4dE5hbWVMZW4gPSBwZHUtPmNvbW11bml0eV9sZW47CisJCX0KKwogICAgICAgICBidWZfbGVuID0gc2l6ZW9mKGJ1ZmZlcik7CiAgICAgfQogCiAgICAgREVCVUdEVU1QSEVBREVSKCJyZWN2IiwgIlBEVSIpOwotICAgIERFQlVHSU5ERU5UTU9SRSgpOwogICAgIHN3aXRjaCAocGR1LT5jb21tYW5kKSB7CiAgICAgY2FzZSBBR0VOVFhfTVNHX09QRU46CiAgICAgICAgIHBkdS0+dGltZSA9ICpidWZwOyAgICAgIC8qIFRpbWVvdXQgKi8KQEAgLTE2MjEsNyArMTY0Nyw4IEBACiAgICAgICAgIERFQlVHRFVNUEhFQURFUigicmVjdiIsICJTdWJhZ2VudCBPSUQiKTsKICAgICAgICAgYnVmcCA9IGFnZW50eF9wYXJzZV9vaWQoYnVmcCwgbGVuZ3RoLCBOVUxMLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfYnVmZmVyLCAmb2lkX2J1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+ZmxhZ3MgJiBBR0VOVFhfRkxBR1NfTkVUV09SS19CWVRFX09SREVSKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJiBBR0VOVFhfRkxBR1NfTkVUV09SS19CWVRFX09SREVSKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIGlmIChidWZwID09IE5VTEwpIHsKICAgICAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwpAQCAtMTYyOSw3ICsxNjU2LDggQEAKICAgICAgICAgfQogICAgICAgICBERUJVR0RVTVBIRUFERVIoInJlY3YiLCAiU3ViYWdlbnQgRGVzY3JpcHRpb24iKTsKICAgICAgICAgYnVmcCA9IGFnZW50eF9wYXJzZV9zdHJpbmcoYnVmcCwgbGVuZ3RoLCBidWZmZXIsICZidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPmZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MgJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBR0VOVFhfRkxBR1NfTkVUV09SS19CWVRFX09SREVSKTsKICAgICAgICAgREVCVUdJTkRFTlRMRVNTKCk7CiAgICAgICAgIGlmIChidWZwID09IE5VTEwpIHsKQEAgLTE4NzIsMTQgKzE5MDAsMTEgQEAKIAogICAgIGRlZmF1bHQ6CiAgICAgICAgIERFQlVHSU5ERU5UTEVTUygpOwotICAgICAgICBERUJVR0lOREVOVExFU1MoKTsKICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eCIsICJVbnJlY29nbmlzZWQgUERVIHR5cGU6ICVkXG4iLAogICAgICAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQpKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVU5LTk9XTl9QRFU7CiAgICAgfQogICAgIERFQlVHSU5ERU5UTEVTUygpOwotICAgIERFQlVHSU5ERU5UTEVTUygpOwotICAgIERFQlVHSU5ERU5UTEVTUygpOwogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9hZ2VudHgvc3ViYWdlbnQuYyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCmluZGV4IDMxMmQ4ZGEuLjAzYTM4YjcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2FnZW50eC9zdWJhZ2VudC5jCkBAIC00Niw5ICs0Niw4IEBACiAjaW5jbHVkZSAiYWdlbnR4L2FnZW50eF9jb25maWcuaCIKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF90cmFwLmg+Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSNpbmNsdWRlICJtaWJJSS9zeXNPUlRhYmxlLmgiCi0jZW5kaWYKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgogCiAjaW5jbHVkZSAic3ViYWdlbnQuaCIKIApAQCAtMzMxLDggKzMzMCw5IEBACiAgICAgICogb2ssIHdlIGhhdmUgYSBwZHUgZnJvbSB0aGUgbmV0LiBNb2RpZnkgYXMgbmVlZGVkIAogICAgICAqLwogCi0gICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsICJoYW5kbGluZyBhZ2VudHggcmVxdWVzdCAocmVxPTB4JXgsdHJhbnM9IgotICAgICAgICAgICAgICAgICIweCV4LHNlc3M9MHgleClcbiIsIHBkdS0+cmVxaWQscGR1LT50cmFuc2lkLCBwZHUtPnNlc3NpZCkpOworICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLCAiaGFuZGxpbmcgQWdlbnRYIHJlcXVlc3QgKHJlcT0weCV4LHRyYW5zPSIKKyAgICAgICAgICAgICAgICAiMHgleCxzZXNzPTB4JXgpXG4iLCAodW5zaWduZWQpcGR1LT5yZXFpZCwKKwkJKHVuc2lnbmVkKXBkdS0+dHJhbnNpZCwgKHVuc2lnbmVkKXBkdS0+c2Vzc2lkKSk7CiAgICAgcGR1LT52ZXJzaW9uID0gQUdFTlRYX1ZFUlNJT05fMTsKICAgICBwZHUtPmZsYWdzIHw9IFVDRF9NU0dfRkxBR19BTFdBWVNfSU5fVklFVzsKIApAQCAtNTA2LDcgKzUwNiw3IEBACiAgICAgcmVzdWx0ID0gc25tcF9hc3luY19zZW5kKGFnZW50eF9jYWxsYmFja19zZXNzLCBpbnRlcm5hbF9wZHUsIG15Y2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgIHJldG1hZ2ljKTsKICAgICBpZiAocmVzdWx0ID09IDApIHsKLSAgICAgICAgc25tcF9mcmVlX3BkdShpbnRlcm5hbF9wZHUpOworICAgICAgICBzbm1wX2ZyZWVfcGR1KCBpbnRlcm5hbF9wZHUgKTsKICAgICB9CiAgICAgcmV0dXJuIDE7CiB9CkBAIC01NDUsOCArNTQ1LDExIEBACiAKICAgICBwZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwogICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLAotICAgICAgICAgICAgICAgICJoYW5kbGluZyBBZ2VudFggcmVzcG9uc2UgKGNtZCAweCUwMnggb3JpZ19jbWQgMHglMDJ4KVxuIiwKLSAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQsIHNtYWdpYy0+b3JpZ2luYWxfY29tbWFuZCkpOworICAgICAgICAgICAgICAgICJoYW5kbGluZyBBZ2VudFggcmVzcG9uc2UgKGNtZCAweCUwMnggb3JpZ19jbWQgMHglMDJ4KSIKKyAgICAgICAgICAgICAgICAiIChyZXE9MHgleCx0cmFucz0weCV4LHNlc3M9MHgleClcbiIsCisgICAgICAgICAgICAgICAgcGR1LT5jb21tYW5kLCBzbWFnaWMtPm9yaWdpbmFsX2NvbW1hbmQsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkKXBkdS0+cmVxaWQsICh1bnNpZ25lZClwZHUtPnRyYW5zaWQsCisgICAgICAgICAgICAgICAgKHVuc2lnbmVkKXBkdS0+c2Vzc2lkKSk7CiAKICAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX0lOVEVSTkFMX1NFVF9GUkVFIHx8CiAgICAgICAgIHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19JTlRFUk5BTF9TRVRfVU5ETyB8fApAQCAtNTg0LDcgKzU4Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAqIHNldCB0byBgZW5kT2ZNaWJWaWV3JyIuICAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl9vYmppZCh2LCB1LT5uYW1lLCB1LT5uYW1lX2xlbmd0aCk7Ci0gICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSh2LCBTTk1QX0VORE9GTUlCVklFVywgMCwgMCk7CisgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSh2LCBTTk1QX0VORE9GTUlCVklFVywgTlVMTCwgMCk7CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhZ2VudHgvc3ViYWdlbnQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2NvcGUgdmlvbGF0aW9uIC0tIHJldHVybiBlbmRPZk1pYlZpZXdcbiIpKTsKICAgICAgICAgICAgICAgICB9CkBAIC02MjAsNyArNjIzLDcgQEAKIHsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnJldHNlc3M7CiAgICAgc3RydWN0IGFnZW50X25ldHNubXBfc2V0X2luZm8gKmFzaTsKLSAgICBpbnQgICAgcmVzdWx0OworICAgIGludCByZXN1bHQ7CiAKICAgICBpZiAob3AgIT0gTkVUU05NUF9DQUxMQkFDS19PUF9SRUNFSVZFRF9NRVNTQUdFIHx8IG1hZ2ljID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MjksNyArNjMyLDggQEAKICAgICBERUJVR01TR1RMKCgiYWdlbnR4L3N1YmFnZW50IiwKICAgICAgICAgICAgICAgICAiaGFuZGxpbmcgYWdlbnR4IHN1YmFnZW50IHNldCByZXNwb25zZSAobW9kZT0lZCxyZXE9MHgleCwiCiAgICAgICAgICAgICAgICAgInRyYW5zPTB4JXgsc2Vzcz0weCV4KVxuIiwKLSAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQsIHBkdS0+cmVxaWQscGR1LT50cmFuc2lkLCBwZHUtPnNlc3NpZCkpOworICAgICAgICAgICAgICAgICh1bnNpZ25lZClwZHUtPmNvbW1hbmQsICh1bnNpZ25lZClwZHUtPnJlcWlkLAorCQkodW5zaWduZWQpcGR1LT50cmFuc2lkLCAodW5zaWduZWQpcGR1LT5zZXNzaWQpKTsKICAgICBwZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwogCiAgICAgYXNpID0gKHN0cnVjdCBhZ2VudF9uZXRzbm1wX3NldF9pbmZvICopIG1hZ2ljOwpAQCAtNjQ4LDcgKzY1Miw3IEBACiAgICAgICAgICAgICByZXN1bHQgPSBzbm1wX2FzeW5jX3NlbmQoYWdlbnR4X2NhbGxiYWNrX3Nlc3MsIHBkdSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVfc3ViYWdlbnRfc2V0X3Jlc3BvbnNlLCBhc2kpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOworICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoIHBkdSApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgREVCVUdNU0dUTCgoImFnZW50eC9zdWJhZ2VudCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAiICBnb2luZyBmcm9tIFJFU0VSVkUxIC0+IFJFU0VSVkUyXG4iKSk7CkBAIC03MDMsMTMgKzcwNywxMiBAQAogfQogCiAKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogaW50CiBhZ2VudHhfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELCB2b2lkICpzZXJ2ZXJhcmcsCiAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xpZW50YXJnKQogewotICAgIHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzICpyZWdfcGFybXMgPQotICAgICAgICAoc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgKikgc2VydmVyYXJnOworICAgIGNvbnN0IHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzICpyZWdfcGFybXMgPQorICAgICAgICAoY29uc3Qgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgKikgc2VydmVyYXJnOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqYWdlbnR4X3NzID0gKG5ldHNubXBfc2Vzc2lvbiAqKSBjbGllbnRhcmc7CiAKICAgICBpZiAobWlub3JJRCA9PSBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IpCkBAIC03MjEsNyArNzI0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19wYXJtcy0+bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19wYXJtcy0+bmFtZWxlbik7CiB9Ci0jZW5kaWYKIAogCiBzdGF0aWMgaW50CkBAIC03NjUsMTQgKzc2NywxMiBAQAogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHSVNURVJfT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3JlZ2lzdHJhdGlvbl9jYWxsYmFjaywgcyk7Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudHhfc3lzT1JfY2FsbGJhY2ssIHMpOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHX1NZU09SLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzKTsKLSNlbmRpZgogfQogCiAvKgpAQCAtNzkyLDE1ICs3OTIsMTIgQEAKICAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdJU1RFUl9PSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9yZWdpc3RyYXRpb25fY2FsbGJhY2ssIHNzLCAxKTsKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRUdfU1lTT1IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFnZW50eF9zeXNPUl9jYWxsYmFjaywgc3MsIDEpOwogICAgIHNubXBfdW5yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR19TWVNPUiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWdlbnR4X3N5c09SX2NhbGxiYWNrLCBzcywgMSk7Ci0jZW5kaWYKLQogfQogCiAvKgpAQCAtOTE0LDYgKzkxMSwxMyBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZAorYWdlbnR4X3Jlb3Blbl9zeXNPUlRhYmxlKGNvbnN0IHN0cnVjdCBzeXNPUlRhYmxlKiBkYXRhLCB2b2lkKiB2KQoreworICBuZXRzbm1wX3Nlc3Npb24gKmFnZW50eF9zcyA9IChuZXRzbm1wX3Nlc3Npb24gKikgdjsKKyAgYWdlbnR4X2FkZF9hZ2VudGNhcHMoYWdlbnR4X3NzLCBkYXRhLT5PUl9vaWQsIGRhdGEtPk9SX29pZGxlbiwKKyAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YS0+T1JfZGVzY3IpOworfQogCiAvKgogICogQWxhcm0gY2FsbGJhY2sgZnVuY3Rpb24gdG8gb3BlbiBhIHNlc3Npb24gdG8gdGhlIG1hc3RlciBhZ2VudC4gIElmIGEKQEAgLTk0MiwxNSArOTQ2LDIwIEBACiAgICAgICAgIHJlZ2lzdGVyX21pYl9yZWF0dGFjaCgpOwogCiAgICAgICAgIC8qCisgICAgICAgICAqIFJlcmVnaXN0ZXIgYWxsIG91ciBzeXNPUkVudHJpZXMKKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfc3lzT1JUYWJsZV9mb3JlYWNoKCZhZ2VudHhfcmVvcGVuX3N5c09SVGFibGUsIG1haW5fc2Vzc2lvbik7CisKKyAgICAgICAgLyoKICAgICAgICAgICogUmVnaXN0ZXIgYSBwaW5nIGFsYXJtIChpZiBuZWVkIGJlKS4gIAogICAgICAgICAgKi8KLSAgICAgICAgc3ViYWdlbnRfcmVnaXN0ZXJfcGluZ19hbGFybSgwLCAwLCAwLCBtYWluX3Nlc3Npb24pOworICAgICAgICBzdWJhZ2VudF9yZWdpc3Rlcl9waW5nX2FsYXJtKDAsIDAsIE5VTEwsIG1haW5fc2Vzc2lvbik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGNsaWVudHJlZyA9PSAwKSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogUmVnaXN0ZXIgYSByZWF0dGFjaCBhbGFybSBmb3IgbGF0ZXIgCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHN1YmFnZW50X3JlZ2lzdGVyX3BpbmdfYWxhcm0oMCwgMCwgMCwgbWFpbl9zZXNzaW9uKTsKKyAgICAgICAgICAgIHN1YmFnZW50X3JlZ2lzdGVyX3BpbmdfYWxhcm0oMCwgMCwgTlVMTCwgbWFpbl9zZXNzaW9uKTsKICAgICAgICAgfQogICAgIH0KIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudC5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKaW5kZXggMzI3ZjhiYS4uMmZlNjk3OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50LmMKQEAgLTIzLDcgKzIzLDcgQEAKICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiaW5pdCBldmVudCBjb250YWluZXJcbiIpKTsKICAgICBpZiAoIWV2ZW50X3RhYmxlX2RhdGEpIHsKICAgICAgICAgZXZlbnRfdGFibGVfZGF0YSA9IG5ldHNubXBfdGRhdGFfY3JlYXRlX3RhYmxlKCJtdGVFdmVudFRhYmxlIiwgMCk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJjcmVhdGUgZXZlbnQgY29udGFpbmVyICgleClcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJjcmVhdGUgZXZlbnQgY29udGFpbmVyICglcClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKICAgICB9CiB9CkBAIC00MywxMiArNDMsMTIgQEAKIAogICAgIC8qCiAgICAgICogSW5zZXJ0IGZpeGVkIGV2ZW50cyBmb3IgdGhlIGRlZmF1bHQgdHJpZ2dlciBub3RpZmljYXRpb25zCi0gICAgICoKKyAgICAgKiAKICAgICAgKiBOQjogaW50ZXJuYWwgZXZlbnRzICh3aXRoIGFuIG93bmVyIG9mICJfc25tcGQiKSB3aWxsIG5vdCBpbgogICAgICAqIGZhY3QgcmVmZXIgdG8gdGhlIG10ZU9iamVjdHNUYWJsZSBmb3IgdGhlIHBheWxvYWQgdmFyYmluZHMuCi0gICAgICogVGhlIHJvdXRpbmUgbXRlT2JqZWN0c19pbnRlcm5hbF92Ymxpc3QoKSBoYXJkY29kZXMgdGhlCisgICAgICogVGhlIHJvdXRpbmUgbXRlT2JqZWN0c19pbnRlcm5hbF92Ymxpc3QoKSBoYXJkY29kZXMgdGhlIAogICAgICAqIGFwcHJvcHJpYXRlIHZhcmJpbmRzIGZvciB0aGVzZSBpbnRlcm5hbCBldmVudHMuCi0gICAgICogICBUaGlzIHJvdXRpbmUgd2lsbCBuZWVkIHRvIGJlIHVwZGF0ZWQgd2hlbmV2ZXIgYSBuZXcKKyAgICAgKiAgIFRoaXMgcm91dGluZSB3aWxsIG5lZWQgdG8gYmUgdXBkYXRlZCB3aGVuZXZlciBhIG5ldyAKICAgICAgKiBpbnRlcm5hbCBldmVudCBpcyBhZGRlZC4KICAgICAgKi8KICAgICBpZiAoIF9kZWZhdWx0c19pbml0KQpAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiKCVzLCAlcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+aW5kZXhlcy0+bmV4dF92YXJpYWJsZS0+dmFsLnN0cmluZykpOwotICAgICAgICBERUJVR01TRygoImRpc21hbjpldmVudDpkdW1wIiwgIjogJXgsICV4XG4iLCByb3csIGVudHJ5KSk7CisgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiOiAlcCwgJXBcbiIsIHJvdywgZW50cnkpKTsKICAgICAgICAgaSsrOwogICAgIH0KICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiRXZlbnRUYWJsZSAlZCBlbnRyaWVzXG4iLCBpKSk7CkBAIC0zMzAsNyArMzMwLDcgQEAKICAgICB2cC0+bmV4dF92YXJpYWJsZSAgICAgPSB2Ymxpc3QtPm5leHRfdmFyaWFibGU7CiAgICAgdmJsaXN0LT5uZXh0X3ZhcmlhYmxlID0gdmFyOwogfQotI2VuZGlmCisjZW5kaWYgLyogX19OT1RfTkVFREVEICovCiAKIGludAogX210ZUV2ZW50X2ZpcmVfbm90aWZ5KCBzdHJ1Y3QgbXRlRXZlbnQgICAqZW50cnksICAgICAvKiBUaGUgZXZlbnQgdG8gZmlyZSAgKi8KQEAgLTQyMSw3ICs0MjEsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZm9yICh2MiA9IHZhcjsgdjIgJiYgdjItPm5leHRfdmFyaWFibGU7IHYyPXYyLT5uZXh0X3ZhcmlhYmxlKQogICAgICAgICAgICAgICAgIDsKLSAgICAgICAgICAgIG10ZU9iamVjdHNfaW50ZXJuYWxfdmJsaXN0KHYyLCAgZW50cnktPm10ZU5vdGlmeU9iamVjdHMsIHRyaWdnZXIsIHMpOworICAgICAgICAgICAgbXRlT2JqZWN0c19pbnRlcm5hbF92Ymxpc3QodjIsIGVudHJ5LT5tdGVOb3RpZnlPYmplY3RzLCB0cmlnZ2VyLCBzKTsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMKaW5kZXggNTg5MmZiNy4uOTM0YTFjNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5jCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBldmVudF90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBldmVudF90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKLSAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiRXZlbnQgTm90aWZ5IFRhYmxlIGNvbnRhaW5lciAoJXgpXG4iLAorICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJFdmVudCBOb3RpZnkgVGFibGUgY29udGFpbmVyICglcClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFNldFRhYmxlLmMKaW5kZXggMzY0NjE0NC4uOTc3ODNjMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50U2V0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRTZXRUYWJsZS5jCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBldmVudF90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBldmVudF90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKLSAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiRXZlbnQgU2V0IFRhYmxlIGNvbnRhaW5lciAoJXgpXG4iLAorICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJFdmVudCBTZXQgVGFibGUgY29udGFpbmVyICglcClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50X3RhYmxlX2RhdGEpKTsKIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVFdmVudFRhYmxlLmMKaW5kZXggMTlmZTBhMS4uMmMyMWU2NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZUV2ZW50VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlRXZlbnRUYWJsZS5jCkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBldmVudF90YWJsZV9kYXRhIGNvbnRhaW5lciAqLwogICAgIG5ldHNubXBfdGRhdGFfcmVnaXN0ZXIocmVnLCBldmVudF90YWJsZV9kYXRhLCB0YWJsZV9pbmZvKTsKLSAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmluaXQiLCAiRXZlbnQgVGFibGUgY29udGFpbmVyICgleClcbiIsCisgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgIkV2ZW50IFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudF90YWJsZV9kYXRhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVPYmplY3RzQ29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmMKaW5kZXggM2Y5MjkzYy4uM2U5YzExYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZU9iamVjdHNDb25mLmMKQEAgLTYyLDcgKzYyLDcgQEAKICAgICBsaW5lICA9IHJlYWRfY29uZmlnX3JlYWRfZGF0YShBU05fT0NURVRfU1RSLCBsaW5lLCAmdnAsICAgICZsZW4pOwogICAgIGxpbmUgID0gcmVhZF9jb25maWdfcmVhZF9kYXRhKEFTTl9VTlNJR05FRCwgIGxpbmUsICZpbmRleCwgJmxlbik7CiAKLSAgICBERUJVR01TRygoImRpc21hbjpldmVudDpjb25mIiwgIiglcywgJXMsICVkKSAiLCBvd25lciwgb25hbWUsIGluZGV4KSk7CisgICAgREVCVUdNU0coKCJkaXNtYW46ZXZlbnQ6Y29uZiIsICIoJXMsICVzLCAlbHUpICIsIG93bmVyLCBvbmFtZSwgaW5kZXgpKTsKIAogICAgIHJvdyAgID0gbXRlT2JqZWN0c19jcmVhdGVFbnRyeSggb3duZXIsIG9uYW1lLCBpbmRleCwgMCApOwogICAgIC8qIGVudHJ5ID0gKHN0cnVjdCBtdGVPYmplY3QgKiluZXRzbm1wX3RkYXRhX3Jvd19lbnRyeSggcm93ICk7ICovCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICAgICAgaWYgKCBlbnRyeS0+ZmxhZ3MgJiBNVEVfT0JKRUNUX0ZMQUdfRklYRUQgKQogICAgICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDpjb25mIiwgIiAgU3RvcmluZyAoJXMgJXMgJWQpXG4iLAorICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmNvbmYiLCAiICBTdG9yaW5nICglcyAlcyAlbGQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5tdGVPd25lciwgZW50cnktPm10ZU9OYW1lLCBlbnRyeS0+bXRlT0luZGV4KSk7CiAgICAgICAgIG1lbXNldChsaW5lLCAwLCBzaXplb2YobGluZSkpOwogICAgICAgICBzdHJjYXQobGluZSwgIl9tdGVPVGFibGUgIik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V2ZW50L210ZVRyaWdnZXIuYwppbmRleCAxMWNiNWI3Li5jZjUxZWRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXZlbnQvbXRlVHJpZ2dlci5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9ldmVudC9tdGVUcmlnZ2VyLmMKQEAgLTMxLDcgKzMxLDcgQEAKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJmYWlsZWQgdG8gY3JlYXRlIG10ZVRyaWdnZXJUYWJsZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXZlbnQ6aW5pdCIsICJjcmVhdGUgdHJpZ2dlciBjb250YWluZXIgKCV4KVxuIiwKKyAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpldmVudDppbml0IiwgImNyZWF0ZSB0cmlnZ2VyIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpZ2dlcl90YWJsZV9kYXRhKSk7CiAgICAgfQogICAgIG10ZVRyaWdnZXJGYWlsdXJlcyA9IDA7CkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiKCVzLCAlcykiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdy0+aW5kZXhlcy0+bmV4dF92YXJpYWJsZS0+dmFsLnN0cmluZykpOwotICAgICAgICBERUJVR01TRygoImRpc21hbjpldmVudDpkdW1wIiwgIjogJXgsICV4XG4iLCByb3csIGVudHJ5KSk7CisgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiOiAlcCwgJXBcbiIsIHJvdywgZW50cnkpKTsKICAgICAgICAgaSsrOwogICAgIH0KICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV2ZW50OmR1bXAiLCAiVHJpZ2dlclRhYmxlICVkIGVudHJpZXNcbiIsIGkpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEVycm9yVGFibGUuYwppbmRleCA0MWJiZTI5Li5kYmMyMjE3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFcnJvclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXJyb3JUYWJsZS5jCkBAIC00OCw3ICs0OCw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBleHByX3RhYmxlX2RhdGEgY29udGFpbmVyICovCiAgICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIGV4cHJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7Ci0gICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiRXhwcmVzc2lvbiBFcnJvciBUYWJsZSBjb250YWluZXIgKCV4KVxuIiwKKyAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJFeHByZXNzaW9uIEVycm9yIFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdGFibGVfZGF0YSkpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmMKaW5kZXggMWMyNGI3OC4uYzkyNDE0MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb24uYwpAQCAtMjEsNyArMjEsNyBAQAogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgImluaXQgZXhwcmVzc2lvbiBjb250YWluZXJcbiIpKTsKICAgICBpZiAoIWV4cHJfdGFibGVfZGF0YSkgewogICAgICAgICAgZXhwcl90YWJsZV9kYXRhID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfdGFibGUoImV4cEV4cHJlc3Npb25UYWJsZSIsIDApOwotICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiY3JlYXRlIGV4cHJlc3Npb24gY29udGFpbmVyICgleClcbiIsCisgICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJjcmVhdGUgZXhwcmVzc2lvbiBjb250YWluZXIgKCVwKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdGFibGVfZGF0YSkpOwogICAgIH0KIH0KQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAgREVCVUdNU0coKCJkaXNtYW46ZXhwcjpkdW1wIiwgIiglcywgJXMpIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93LT5pbmRleGVzLT52YWwuc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPmluZGV4ZXMtPm5leHRfdmFyaWFibGUtPnZhbC5zdHJpbmcpKTsKLSAgICAgICAgREVCVUdNU0coKCJkaXNtYW46ZXhwcjpkdW1wIiwgIjogJXgsICV4XG4iLCByb3csIGVudHJ5KSk7CisgICAgICAgIERFQlVHTVNHKCgiZGlzbWFuOmV4cHI6ZHVtcCIsICI6ICVwLCAlcFxuIiwgcm93LCBlbnRyeSkpOwogICAgICAgICBpKys7CiAgICAgfQogICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjpkdW1wIiwgIkV4cHJlc3Npb25UYWJsZSAlZCBlbnRyaWVzXG4iLCBpKSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwRXhwcmVzc2lvbkNvbmYuYwppbmRleCA2MTc0NGUxLi5mOWE5ZDk3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uQ29uZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25Db25mLmMKQEAgLTYsNiArNiw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKwogI2luY2x1ZGUgInV0aWxpdGllcy9pcXVlcnkuaCIKICNpbmNsdWRlICJkaXNtYW4vZXhwci9leHBFeHByZXNzaW9uLmgiCiAjaW5jbHVkZSAiZGlzbWFuL2V4cHIvZXhwT2JqZWN0LmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBFeHByZXNzaW9uVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCmluZGV4IGMwN2U1ZmMuLjkwNmI1ZTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cEV4cHJlc3Npb25UYWJsZS5jCkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAvKiBSZWdpc3RlciB0aGlzIHVzaW5nIHRoZSAoY29tbW9uKSBleHByX3RhYmxlX2RhdGEgY29udGFpbmVyICovCiAgICAgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihyZWcsIGV4cHJfdGFibGVfZGF0YSwgdGFibGVfaW5mbyk7Ci0gICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiRXhwcmVzc2lvbiBUYWJsZSBjb250YWluZXIgKCV4KVxuIiwKKyAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJFeHByZXNzaW9uIFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdGFibGVfZGF0YSkpOwogfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3QuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jCmluZGV4IGRmZmU0ZTQuLmMyNzQzN2IgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdC5jCkBAIC0yMSw3ICsyMSw3IEBACiAgICAgREVCVUdNU0dUTCgoImRpc21hbjpleHByOmluaXQiLCAiaW5pdCBleHBPYmplY3QgY29udGFpbmVyXG4iKSk7CiAgICAgaWYgKCFleHBPYmplY3RfdGFibGVfZGF0YSkgewogICAgICAgICAgZXhwT2JqZWN0X3RhYmxlX2RhdGEgPSBuZXRzbm1wX3RkYXRhX2NyZWF0ZV90YWJsZSgiZXhwT2JqZWN0VGFibGUiLCAwKTsKLSAgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgImNyZWF0ZSBleHBPYmplY3QgY29udGFpbmVyICgleClcbiIsCisgICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOmV4cHI6aW5pdCIsICJjcmVhdGUgZXhwT2JqZWN0IGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwT2JqZWN0X3RhYmxlX2RhdGEpKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwT2JqZWN0VGFibGUuYwppbmRleCA2ZTYwYjgxLi45YzQ5YzBkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBPYmplY3RUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cE9iamVjdFRhYmxlLmMKQEAgLTUxLDcgKzUxLDcgQEAKIAogICAgIC8qIFJlZ2lzdGVyIHRoaXMgdXNpbmcgdGhlIGNvbW1vbiBleHBPYmplY3RfdGFibGVfZGF0YSBjb250YWluZXIgKi8KICAgICBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKHJlZywgZXhwT2JqZWN0X3RhYmxlX2RhdGEsIHRhYmxlX2luZm8pOwotICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgIkV4cHJlc3Npb24gT2JqZWN0IFRhYmxlIGNvbnRhaW5lciAoJXgpXG4iLAorICAgIERFQlVHTVNHVEwoKCJkaXNtYW46ZXhwcjppbml0IiwgIkV4cHJlc3Npb24gT2JqZWN0IFRhYmxlIGNvbnRhaW5lciAoJXApXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cE9iamVjdF90YWJsZV9kYXRhKSk7CiB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByL2V4cFZhbHVlVGFibGUuYwppbmRleCA5N2JjYmFiLi4yZmRiNGZjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwci9leHBWYWx1ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHIvZXhwVmFsdWVUYWJsZS5jCkBAIC01OSw3ICs1OSw3IEBACiAgICAgaWYgKCFpbmRleGVzIHx8ICFpbmRleGVzLT5uZXh0X3ZhcmlhYmxlIHx8CiAgICAgICAgICFpbmRleGVzLT5uZXh0X3ZhcmlhYmxlLT5uZXh0X3ZhcmlhYmxlICkgewogICAgICAgICAvKiBYWFggLSBTaG91bGRuJ3QgaGFwcGVuISAqLwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAiZ2V0ICglZCkgZW50cnkgKCVzLCAlcywgIiwgbW9kZSwKQEAgLTc4LDcgKzc4LDcgQEAKICAgICAgICAgICovCiAgICAgICAgIGlmIChtb2RlID09IE1PREVfR0VUTkVYVCB8fCBtb2RlID09IE1PREVfR0VUQlVMSykgewogICAgICAgICAgICAgZXhwID0gZXhwRXhwcmVzc2lvbl9nZXRGaXJzdEVudHJ5KCk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJmaXJzdCBlbnRyeSAoJXgpXG4iLCBleHAgKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJmaXJzdCBlbnRyeSAoJXApXG4iLCBleHAgKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJpbmNvbXBsZXRlIHJlcXVlc3RcbiIgKSk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgIC8qIE5vIG1hdGNoICovCkBAIC04Niw3ICs4Niw3IEBACiAgICAgfSBlbHNlIHsKICAgICAgICAgZXhwID0gZXhwRXhwcmVzc2lvbl9nZXRFbnRyeSggKGNoYXIqKWluZGV4ZXMtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilpbmRleGVzLT5uZXh0X3ZhcmlhYmxlLT52YWwuc3RyaW5nKTsKLSAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAidXNpbmcgZW50cnkgKCV4KVxuIiwgZXhwICkpOworICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ1c2luZyBlbnRyeSAoJXApXG4iLCBleHAgKSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICAgICB9CiBORVhUX0VYUDoKICAgICAgICAgZXhwID0gZXhwRXhwcmVzc2lvbl9nZXROZXh0RW50cnkoIGV4cC0+ZXhwT3duZXIsIGV4cC0+ZXhwTmFtZSApOwotICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ1c2luZyBuZXh0IGVudHJ5ICgleClcbiIsIGV4cCApKTsKKyAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAidXNpbmcgbmV4dCBlbnRyeSAoJXApXG4iLCBleHAgKSk7CiAgICAgfQogICAgIGlmICghZXhwKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgIm5vIG1vcmUgZW50cmllc1xuIikpOwpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXMgPSBleHBWYWx1ZV9ldmFsdWF0ZUV4cHJlc3Npb24oIGV4cCwgTlVMTCwgMCApOwotICAgICAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAic2NhbGFyIGdldCByZXR1cm5lZCAoJXgpXG4iLCByZXMpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgInNjYWxhciBnZXQgcmV0dXJuZWQgKCVwKVxuIiwgcmVzKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogT3RoZXJ3aXNlLCBza2lwIHRoZSBsZWFkaW5nICcuMCcgYW5kIHVzZQpAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHJlcyA9IGV4cFZhbHVlX2V2YWx1YXRlRXhwcmVzc2lvbiggZXhwLCB2cC0+dmFsLm9iamlkKzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnAtPnZhbF9sZW4vc2l6ZW9mKG9pZCktMSk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ3L2NhcmQgZ2V0IHJldHVybmVkICgleClcbiIsIHJlcykpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAidy9jYXJkIGdldCByZXR1cm5lZCAoJXApXG4iLCByZXMpKTsKICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCkBAIC0xODcsNyArMTg3LDcgQEAKICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggdnAsIEFTTl9QUklWX0lNUExJRURfT0JKRUNUX0lELAogICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKiludWxsSW5zdGFuY2UsIDMqc2l6ZW9mKG9pZCkpOwogICAgICAgICAgICAgcmVzID0gZXhwVmFsdWVfZXZhbHVhdGVFeHByZXNzaW9uKCBleHAsIE5VTEwsIDAgKTsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgInNjYWxhciBuZXh0IHJldHVybmVkICgleClcbiIsIHJlcykpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46ZXhwcjp2YWwiLCAic2NhbGFyIG5leHQgcmV0dXJuZWQgKCVwKVxuIiwgcmVzKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogTm93IGNvbWVzIHRoZSBpbnRlcmVzdGluZyBjYXNlIC0gZmluZGluZyB0aGUKQEAgLTIzNSw3ICsyMzUsNyBAQAogICAgICAgICAgICAgICAgIGxlbiA9IDE7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXMgPSBleHBWYWx1ZV9ldmFsdWF0ZUV4cHJlc3Npb24oIGV4cCwgdnAtPnZhbC5vYmppZCsxLCBsZW4tMSk7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCggImRpc21hbjpleHByOnZhbCIsICJ3L2NhcmQgbmV4dCByZXR1cm5lZCAoJXgpXG4iLCByZXMpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCAiZGlzbWFuOmV4cHI6dmFsIiwgIncvY2FyZCBuZXh0IHJldHVybmVkICglcClcbiIsIHJlcykpOwogICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiByZXM7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBFcnJvclRhYmxlLmMKaW5kZXggYjdiMjU3ZS4uYzYwNWU5YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXJyb3JUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEVycm9yVGFibGUuYwpAQCAtNjYsMTMgKzY2LDE3IEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUJRVhQRVJST1JUSU1FICAxCi0gICAge0VYUEVSUk9SVElNRSwgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgMX19LAorICAgIHtFWFBFUlJPUlRJTUUsICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXJyb3JUYWJsZSwgMiwgezEsIDF9fSwKICNkZWZpbmUJRVhQRVJST1JJTkRFWCAyCi0gICAge0VYUEVSUk9SSU5ERVgsIEFTTl9JTlRFR0VSLCAgUk9OTFksIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtFWFBFUlJPUklOREVYLCBBU05fSU5URUdFUiwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXJyb3JUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUJRVhQRVJST1JDT0RFIDMKLSAgICB7RVhQRVJST1JDT0RFLCAgQVNOX0lOVEVHRVIsICBST05MWSwgdmFyX2V4cEVycm9yVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0VYUEVSUk9SQ09ERSwgIEFTTl9JTlRFR0VSLCAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZQlFWFBFUlJPUklOU1RBTkNFIDQKLSAgICB7RVhQRVJST1JJTlNUQU5DRSwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9leHBFcnJvclRhYmxlLCAyLCB7MSwgNH19CisgICAge0VYUEVSUk9SSU5TVEFOQ0UsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXJyb3JUYWJsZSwgMiwgezEsIDR9fQogfTsKIAogZXh0ZXJuIHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqZXhwRXhwcmVzc2lvblRhYmxlU3RvcmFnZTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cEV4cHJlc3Npb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKaW5kZXggZGEwZTE5YS4uYTRkZDIxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwRXhwcmVzc2lvblRhYmxlLmMKQEAgLTY1LDE5ICs2NSwyNiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lCUVYUEVYUFJFU1NJT04gIDMKLSAgICB7RVhQRVhQUkVTU0lPTiwgICAgICAgICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfZXhwRXhwcmVzc2lvblRhYmxlLCAyLCB7MSwgM319LAorICAgIHtFWFBFWFBSRVNTSU9OLCAgICAgICAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCAzfX0sCiAjZGVmaW5lCUVYUEVYUFJFU1NJT05WQUxVRVRZUEUgNAotICAgIHtFWFBFWFBSRVNTSU9OVkFMVUVUWVBFLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA0fX0sCisgICAge0VYUEVYUFJFU1NJT05WQUxVRVRZUEUsIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUJRVhQRVhQUkVTU0lPTkNPTU1FTlQgNQotICAgIHtFWFBFWFBSRVNTSU9OQ09NTUVOVCwgICBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA1fX0sCisgICAge0VYUEVYUFJFU1NJT05DT01NRU5ULCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUJRVhQRVhQUkVTU0lPTkRFTFRBTE5URVJWQUwgNgotICAgIHtFWFBFWFBSRVNTSU9OREVMVEFMTlRFUlZBTCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7RVhQRVhQUkVTU0lPTkRFTFRBTE5URVJWQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA2fX0sCiAjZGVmaW5lCUVYUEVYUFJFU1NJT05QUkVGSVggNwotICAgIHtFWFBFWFBSRVNTSU9OUFJFRklYLCAgICBBU05fT0JKRUNUX0lELCBST05MWSwgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA3fX0sCisgICAge0VYUEVYUFJFU1NJT05QUkVGSVgsICAgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwRXhwcmVzc2lvblRhYmxlLCAyLCB7MSwgN319LAogI2RlZmluZQlFWFBFWFBSRVNTSU9ORVJST1JTIDgKLSAgICB7RVhQRVhQUkVTU0lPTkVSUk9SUywgICAgQVNOX1VOU0lHTkVELCAgUk9OTFksICB2YXJfZXhwRXhwcmVzc2lvblRhYmxlLCAyLCB7MSwgOH19LAorICAgIHtFWFBFWFBSRVNTSU9ORVJST1JTLCAgICBBU05fVU5TSUdORUQsICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDh9fSwKICNkZWZpbmUJRVhQRVhQUkVTU0lPTkVOVFJZU1RBVFVTICA5Ci0gICAge0VYUEVYUFJFU1NJT05FTlRSWVNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cEV4cHJlc3Npb25UYWJsZSwgMiwgezEsIDl9fQorICAgIHtFWFBFWFBSRVNTSU9ORU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBFeHByZXNzaW9uVGFibGUsIDIsIHsxLCA5fX0KIH07CiAKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwT2JqZWN0VGFibGUuYwppbmRleCA4ZDE4NTVkLi4wOGE2MDdjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBPYmplY3RUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cE9iamVjdFRhYmxlLmMKQEAgLTY2LDIzICs2NiwzMiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lCUVYUE9CSkVDVElEICAyCi0gICAge0VYUE9CSkVDVElELCAgICAgICAgIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtFWFBPQkpFQ1RJRCwgICAgICAgICBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUJRVhQT0JKRUNUSURXSUxEQ0FSRCAzCi0gICAge0VYUE9CSkVDVElEV0lMRENBUkQsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgM319LAorICAgIHtFWFBPQkpFQ1RJRFdJTERDQVJELCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUJRVhQT0JKRUNUU0FNUExFVFlQRSA0Ci0gICAge0VYUE9CSkVDVFNBTVBMRVRZUEUsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtFWFBPQkpFQ1RTQU1QTEVUWVBFLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUJRVhQT0JKRUNUREVMVEFESVNDT05USU5VSVRZSUQgNQotICAgIHtFWFBPQkpFQ1RERUxUQURJU0NPTlRJTlVJVFlJRCwgIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtFWFBPQkpFQ1RERUxUQURJU0NPTlRJTlVJVFlJRCwgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgNX19LAogI2RlZmluZQlFWFBPQkpFQ1RESVNDT05USU5VSVRZSURXSUxEQ0FSRCA2Ci0gICAge0VYUE9CSkVDVERJU0NPTlRJTlVJVFlJRFdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXhwT2JqZWN0VGFibGUsIDIsIHsxLCA2fX0sCisgICAge0VYUE9CSkVDVERJU0NPTlRJTlVJVFlJRFdJTERDQVJELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXhwT2JqZWN0VGFibGUsIDIsIHsxLCA2fX0sCiAjZGVmaW5lCUVYUE9CSkVDVERJU0NPTlRJTlVJVFlJRFRZUEUgNwotICAgIHtFWFBPQkpFQ1RESVNDT05USU5VSVRZSURUWVBFLCAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgN319LAorICAgIHtFWFBPQkpFQ1RESVNDT05USU5VSVRZSURUWVBFLCAgICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgN319LAogI2RlZmluZQlFWFBPQkpFQ1RDT05ESVRJT05BTCAgOAotICAgIHtFWFBPQkpFQ1RDT05ESVRJT05BTCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfZXhwT2JqZWN0VGFibGUsIDIsIHsxLCA4fX0sCisgICAge0VYUE9CSkVDVENPTkRJVElPTkFMLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDh9fSwKICNkZWZpbmUJRVhQT0JKRUNUQ09ORElUSU9OQUxXSUxEQ0FSRCAgOQotICAgIHtFWFBPQkpFQ1RDT05ESVRJT05BTFdJTERDQVJELCAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgOX19LAorICAgIHtFWFBPQkpFQ1RDT05ESVRJT05BTFdJTERDQVJELCAgICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4cE9iamVjdFRhYmxlLCAyLCB7MSwgOX19LAogI2RlZmluZQlFWFBPQkpFQ1RFTlRSWVNUQVRVUyAgMTAKLSAgICB7RVhQT0JKRUNURU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDEwfX0KKyAgICB7RVhQT0JKRUNURU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9leHBPYmplY3RUYWJsZSwgMiwgezEsIDEwfX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL2V4cHJlc3Npb24vZXhwVmFsdWVUYWJsZS5jCmluZGV4IDBmNWUwYjYuLmQzYzAyOTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9leHByZXNzaW9uL2V4cFZhbHVlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vZXhwcmVzc2lvbi9leHBWYWx1ZVRhYmxlLmMKQEAgLTc2LDIxICs3NiwyOSBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lCUVYUFZBTFVFQ09VTlRFUjMyVkFMIDIKLSAgICB7RVhQVkFMVUVDT1VOVEVSMzJWQUwsICBBU05fQ09VTlRFUiwgIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7RVhQVkFMVUVDT1VOVEVSMzJWQUwsICBBU05fQ09VTlRFUiwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUJRVhQVkFMVUVVTlNJR05FRDMyVkFMIDMKLSAgICB7RVhQVkFMVUVVTlNJR05FRDMyVkFMLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7RVhQVkFMVUVVTlNJR05FRDMyVkFMLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUJRVhQVkFMVUVUSU1FVElDS1NWQUwgNAotICAgIHtFWFBWQUxVRVRJTUVUSUNLU1ZBTCwgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtFWFBWQUxVRVRJTUVUSUNLU1ZBTCwgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgNH19LAogI2RlZmluZQlFWFBWQUxVRUlOVEVHRVIzMlZBTCA1Ci0gICAge0VYUFZBTFVFSU5URUdFUjMyVkFMLCAgQVNOX0lOVEVHRVIsICBST05MWSwgdmFyX2V4cFZhbHVlVGFibGUsIDIsIHsxLCA1fX0sCisgICAge0VYUFZBTFVFSU5URUdFUjMyVkFMLCAgQVNOX0lOVEVHRVIsICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4cFZhbHVlVGFibGUsIDIsIHsxLCA1fX0sCiAjZGVmaW5lCUVYUFZBTFVFSVBBRERSRVNTVkFMIDYKLSAgICB7RVhQVkFMVUVJUEFERFJFU1NWQUwsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7RVhQVkFMVUVJUEFERFJFU1NWQUwsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDZ9fSwKICNkZWZpbmUJRVhQVkFMVUVPQ1RFVFNUUklOR1ZBTCA3Ci0gICAge0VYUFZBTFVFT0NURVRTVFJJTkdWQUwsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXhwVmFsdWVUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7RVhQVkFMVUVPQ1RFVFNUUklOR1ZBTCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgN319LAogI2RlZmluZQlFWFBWQUxVRU9JRFZBTCAgOAotICAgIHtFWFBWQUxVRU9JRFZBTCwgICAgICAgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgOH19LAorICAgIHtFWFBWQUxVRU9JRFZBTCwgICAgICAgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgOH19LAogI2RlZmluZQlFWFBWQUxVRUNPVU5URVI2NFZBTCAgOQotICAgIHtFWFBWQUxVRUNPVU5URVI2NFZBTCwgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9leHBWYWx1ZVRhYmxlLCAyLCB7MSwgOX19CisgICAge0VYUFZBTFVFQ09VTlRFUjY0VkFMLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4cFZhbHVlVGFibGUsIDIsIHsxLCA5fX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZU9iamVjdHNUYWJsZS5jCmluZGV4IDRmN2U5NWYuLjJjZjJiMGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVPYmplY3RzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlT2JqZWN0c1RhYmxlLmMKQEAgLTUzLDEzICs1MywxNCBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFT0JKRUNUU0lEICAgICAgICAgIDUKLSAgICB7TVRFT0JKRUNUU0lELCBBU05fT0JKRUNUX0lELCBSV1JJVEUsIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCAzfX0sCisgICAge01URU9CSkVDVFNJRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZSAgIE1URU9CSkVDVFNJRFdJTERDQVJEICA2Ci0gICAge01URU9CSkVDVFNJRFdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLAotICAgICB7MSwgNH19LAorICAgIHtNVEVPQkpFQ1RTSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZU9iamVjdHNUYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUgICBNVEVPQkpFQ1RTRU5UUllTVEFUVVMgIDcKLSAgICB7TVRFT0JKRUNUU0VOVFJZU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbXRlT2JqZWN0c1RhYmxlLCAyLAotICAgICB7MSwgNX19LAorICAgIHtNVEVPQkpFQ1RTRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVPYmplY3RzVGFibGUsIDIsIHsxLCA1fX0sCiAKIH07CiAvKgpAQCAtNjQxLDYgKzY0Miw4IEBACiAKIAogICAgICAgICAgICAgU3RvcmFnZU5ldyA9IFNOTVBfTUFMTE9DX1NUUlVDVChtdGVPYmplY3RzVGFibGVfZGF0YSk7CisgICAgICAgICAgICBpZiAoU3RvcmFnZU5ldyA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgICAgICBTdG9yYWdlTmV3LT5tdGVPd25lciA9IG5ldHNubXBfc3RyZHVwX2FuZF9udWxsKHZwLT52YWwuc3RyaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cC0+dmFsX2xlbik7CiAgICAgICAgICAgICBTdG9yYWdlTmV3LT5tdGVPd25lckxlbiA9IHZwLT52YWxfbGVuOwpAQCAtODg4LDYgKzg5MSw4IEBACiAgICAgICogbWFsbG9jIGluaXRpYWwgc3RydWN0IAogICAgICAqLwogICAgIFN0b3JhZ2VOZXcgPSBTTk1QX01BTExPQ19TVFJVQ1QobXRlT2JqZWN0c1RhYmxlX2RhdGEpOworICAgIGlmIChTdG9yYWdlTmV3ID09IE5VTEwpCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgU3RvcmFnZU5ldy0+bXRlT3duZXIgPSBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbChvd25lciwgc3RybGVuKG93bmVyKSk7CiAgICAgU3RvcmFnZU5ldy0+bXRlT3duZXJMZW4gPSBzdHJsZW4ob3duZXIpOwogICAgIFN0b3JhZ2VOZXctPm10ZU9iamVjdHNOYW1lID0gbmV0c25tcF9zdHJkdXBfYW5kX251bGwob2JqbmFtZSwKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5jCmluZGV4IDQ5Y2ViNWYuLmZiYTQ5ODAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJCb29sZWFuVGFibGUuYwpAQCAtNTMsMjUgKzUzLDI1IEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkNPTVBBUklTT04gIDMKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5DT01QQVJJU09OLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSQk9PTEVBTkNPTVBBUklTT04sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyQm9vbGVhblRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJCT09MRUFOVkFMVUUgIDQKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5WQUxVRSwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5WQUxVRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJCb29sZWFuVGFibGUsIDIsIHsxLCAyfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkJPT0xFQU5TVEFSVFVQICA1Ci0gICAge01URVRSSUdHRVJCT09MRUFOU1RBUlRVUCwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5TVEFSVFVQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiAgNgotICAgIHtNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTk9CSkVDVFMgIDcKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5PQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJCT09MRUFOT0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkVWRU5UT1dORVIgIDgKLSAgICB7TVRFVFJJR0dFUkJPT0xFQU5FVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJCT09MRUFORVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDZ9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSQk9PTEVBTkVWRU5UICA5Ci0gICAge01URVRSSUdHRVJCT09MRUFORVZFTlQsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkJPT0xFQU5FVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckJvb2xlYW5UYWJsZSwgMiwgezEsIDd9fSwKIAogfTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRGVsdGFUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKaW5kZXggM2VkYjkzNS4uMTM3ZTA5NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJEZWx0YVRhYmxlLmMKQEAgLTUzLDEzICs1MywxMyBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEICAzCi0gICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFdJTERDQVJEICA0Ci0gICAge01URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSREVMVEFESVNDT05USU5VSVRZSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgMn19LAogI2RlZmluZSAgIE1URVRSSUdHRVJERUxUQURJU0NPTlRJTlVJVFlJRFRZUEUgIDUKLSAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkRFTFRBRElTQ09OVElOVUlUWUlEVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJEZWx0YVRhYmxlLCAyLCB7MSwgM319LAogCiB9OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCmluZGV4IDFhZDBhNzQuLmM1NzYxYjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMKQEAgLTUzLDIyICs1MywyMiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRVRFU1QgIDMKLSAgICB7TVRFVFJJR0dFUkVYSVNURU5DRVRFU1QsIEFTTl9CSVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJFWElTVEVOQ0VURVNULCBBU05fQklUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VTVEFSVFVQICA0Ci0gICAge01URVRSSUdHRVJFWElTVEVOQ0VTVEFSVFVQLCBBU05fQklUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSRVhJU1RFTkNFU1RBUlRVUCwgQVNOX0JJVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDJ9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFT0JKRUNUU09XTkVSICA1Ci0gICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRU9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZSAgIE1URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTICA2Ci0gICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJFWElTVEVOQ0VPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUsIDIsIHsxLCA0fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIgIDcKLSAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSRVhJU1RFTkNFRVZFTlQgIDgKLSAgICB7TVRFVFJJR0dFUkVYSVNURU5DRUVWRU5ULCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJFWElTVEVOQ0VFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLCAyLCB7MSwgNn19LAogCiB9OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUYWJsZS5jCmluZGV4IDRhNDQwOGMuLmY0ZGI2MmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRhYmxlLmMKQEAgLTgzLDQzICs4Myw0NCBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTVRFVFJJR0dFUkNPTU1FTlQgICAgIDUKLSAgICB7TVRFVFJJR0dFUkNPTU1FTlQsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwKLSAgICAgezEsIDN9fSwKKyAgICB7TVRFVFJJR0dFUkNPTU1FTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEVTVCAgICAgICAgNgotICAgIHtNVEVUUklHR0VSVEVTVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtNVEVUUklHR0VSVEVTVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNH19LAogI2RlZmluZSAgIE1URVRSSUdHRVJTQU1QTEVUWVBFICA3Ci0gICAge01URVRSSUdHRVJTQU1QTEVUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgNX19LAorICAgIHtNVEVUUklHR0VSU0FNUExFVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDV9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVkFMVUVJRCAgICAgOAotICAgIHtNVEVUUklHR0VSVkFMVUVJRCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgNn19LAorICAgIHtNVEVUUklHR0VSVkFMVUVJRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgNn19LAogI2RlZmluZSAgIE1URVRSSUdHRVJWQUxVRUlEV0lMRENBUkQgIDkKLSAgICB7TVRFVFJJR0dFUlZBTFVFSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwKLSAgICAgMiwgezEsIDd9fSwKKyAgICB7TVRFVFJJR0dFUlZBTFVFSURXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDd9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEFSR0VUVEFHICAgMTAKLSAgICB7TVRFVFJJR0dFUlRBUkdFVFRBRywgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgOH19LAorICAgIHtNVEVUUklHR0VSVEFSR0VUVEFHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA4fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkNPTlRFWFROQU1FICAxMQotICAgIHtNVEVUUklHR0VSQ09OVEVYVE5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwKLSAgICAgezEsIDl9fSwKKyAgICB7TVRFVFJJR0dFUkNPTlRFWFROQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCA5fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkNPTlRFWFROQU1FV0lMRENBUkQgIDEyCi0gICAge01URVRSSUdHRVJDT05URVhUTkFNRVdJTERDQVJELCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSQ09OVEVYVE5BTUVXSUxEQ0FSRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDEwfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkZSRVFVRU5DWSAgIDEzCi0gICAge01URVRSSUdHRVJGUkVRVUVOQ1ksIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLAotICAgICB7MSwgMTF9fSwKKyAgICB7TVRFVFJJR0dFUkZSRVFVRU5DWSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJPQkpFQ1RTT1dORVIgIDE0Ci0gICAge01URVRSSUdHRVJPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwKLSAgICAgezEsIDEyfX0sCisgICAge01URVRSSUdHRVJPQkpFQ1RTT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDEyfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUk9CSkVDVFMgICAgIDE1Ci0gICAge01URVRSSUdHRVJPQkpFQ1RTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsCi0gICAgIHsxLCAxM319LAorICAgIHtNVEVUUklHR0VST0JKRUNUUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbXRlVHJpZ2dlclRhYmxlLCAyLCB7MSwgMTN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSRU5BQkxFRCAgICAgMTYKLSAgICB7TVRFVFJJR0dFUkVOQUJMRUQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsCi0gICAgIHsxLCAxNH19LAorICAgIHtNVEVUUklHR0VSRU5BQkxFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX210ZVRyaWdnZXJUYWJsZSwgMiwgezEsIDE0fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUkVOVFJZU1RBVFVTICAxNwotICAgIHtNVEVUUklHR0VSRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsCi0gICAgIHsxLCAxNX19LAorICAgIHtNVEVUUklHR0VSRU5UUllTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9tdGVUcmlnZ2VyVGFibGUsIDIsIHsxLCAxNX19LAogCiB9OwogLyoKQEAgLTM1Niw4ICszNTcsNyBAQAogdm9pZAogcGFyc2Vfc2ltcGxlX21vbml0b3IoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZltTUFJJTlRfTUFYX0xFTl0sICpjcCwgZWJ1ZltTUFJJTlRfTUFYX0xFTl0sCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50bmFtZVs2NF07CisgICAgY2hhciAgICAgICAgICAgIGJ1ZltTUFJJTlRfTUFYX0xFTl0sICpjcCwgZXZlbnRuYW1lWzY0XTsKICAgICBvaWQgICAgICAgICAgICAgb2J1ZltNQVhfT0lEX0xFTl07CiAgICAgc2l6ZV90ICAgICAgICAgIG9idWZMZW47CiAgICAgc3RydWN0IG10ZVRyaWdnZXJUYWJsZV9kYXRhICpTdG9yYWdlTmV3OwpAQCAtNDQ0LDggKzQ0NCw3IEBACiAgICAgICAgICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogICAgICAgICAgICAgb2J1ZkxlbiA9IE1BWF9PSURfTEVOOwogICAgICAgICAgICAgaWYgKCFzbm1wX3BhcnNlX29pZChidWYsIG9idWYsICZvYnVmTGVuKSkgewotICAgICAgICAgICAgICAgIHNwcmludGYoZWJ1ZiwgInVuYWJsZSB0byBwYXJzZSBvaWQ6ICVzIiwgYnVmKTsKLSAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKGVidWYpOworCQluZXRzbm1wX2NvbmZpZ19lcnJvcigidW5hYmxlIHRvIHBhcnNlIG9pZDogJXMiLCBidWYpOwogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogWFhYOiBmcmVlIFN0b3JhZ2VOZXcgCiAgICAgICAgICAgICAgICAgICovCkBAIC01MDYsOCArNTA1LDcgQEAKICAgICBjcCA9IGNvcHlfbndvcmQoY3AsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogICAgIG9idWZMZW4gPSBNQVhfT0lEX0xFTjsKICAgICBpZiAoIXNubXBfcGFyc2Vfb2lkKGJ1Ziwgb2J1ZiwgJm9idWZMZW4pKSB7Ci0gICAgICAgIHNwcmludGYoZWJ1ZiwgInVuYWJsZSB0byBwYXJzZSBvaWQ6ICVzIiwgYnVmKTsKLSAgICAgICAgY29uZmlnX3BlcnJvcihlYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigidW5hYmxlIHRvIHBhcnNlIG9pZDogJXMiLCBidWYpOwogICAgICAgICAvKgogICAgICAgICAgKiBYWFg6IGZyZWUgU3RvcmFnZU5ldyAKICAgICAgICAgICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKaW5kZXggMDM4YTJmYi4uMjhiMzNkOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYwpAQCAtNTMsNDkgKzUzLDQ5IEBACiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEU1RBUlRVUCAgMwotICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEU1RBUlRVUCwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFNUQVJUVVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lORyAgNAotICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMn19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HICA1Ci0gICAge01URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDN9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkcgIDYKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA0fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElORyAgNwotICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFGQUxMSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgNX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERPQkpFQ1RTT1dORVIgIDgKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFNPV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xET0JKRUNUU09XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCA2fX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMgIDkKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRE9CSkVDVFMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDd9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlRPV05FUiAgMTAKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRFJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDh9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlQgIDExCi0gICAge01URVRSSUdHRVJUSFJFU0hPTERSSVNJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xEUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDl9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UT1dORVIgIDEyCi0gICAge01URVRSSUdHRVJUSFJFU0hPTERGQUxMSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDEwfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVCAgMTMKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MREZBTExJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtNVEVUUklHR0VSVEhSRVNIT0xERkFMTElOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxMX19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UT1dORVIgIDE0Ci0gICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQVJJU0lOR0VWRU5UT1dORVIsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlRPV05FUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTJ9fSwKICNkZWZpbmUgICBNVEVUUklHR0VSVEhSRVNIT0xEREVMVEFSSVNJTkdFVkVOVCAgMTUKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBUklTSU5HRVZFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZSwgMiwgezEsIDEzfX0sCiAjZGVmaW5lICAgTVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5UT1dORVIgIDE2Ci0gICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVE9XTkVSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9tdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUsIDIsIHsxLCAxNH19LAogI2RlZmluZSAgIE1URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCAgMTcKLSAgICB7TVRFVFJJR0dFUlRIUkVTSE9MRERFTFRBRkFMTElOR0VWRU5ULCBBU05fT0NURVRfU1RSLCBSV1JJVEUsCisgICAge01URVRSSUdHRVJUSFJFU0hPTERERUxUQUZBTExJTkdFVkVOVCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLCAyLCB7MSwgMTV9fSwKIAogfTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBDdGxUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKaW5kZXggYmNlZGQwNy4uMGViNWMxNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cEN0bFRhYmxlLmMKQEAgLTU1LDEyICs1NSwxOCBAQAogICAgIC8qCiAgICAgICogbWFnaWMgbnVtYmVyICAgICAgICAsIHZhcmlhYmxlIHR5cGUgLCByby9ydyAsIGNhbGxiYWNrIGZuICAsIEwsIG9pZHN1ZmZpeCAKICAgICAgKi8KLSAgICB7Q09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0NPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fTE9PS1VQQ1RMT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA1fX0sCi0gICAge0NPTFVNTl9MT09LVVBDVExUSU1FLCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDZ9fSwKLSAgICB7Q09MVU1OX0xPT0tVUENUTFJDLCAgICAgICAgIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fTE9PS1VQQ1RMUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA4fX0KKyAgICB7Q09MVU1OX0xPT0tVUENUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCAzfX0sCisgICAge0NPTFVNTl9MT09LVVBDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA1fX0sCisgICAge0NPTFVNTl9MT09LVVBDVExUSU1FLCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sb29rdXBDdGxUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7Q09MVU1OX0xPT0tVUENUTFJDLCAgICAgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cEN0bFRhYmxlLCAyLCB7MSwgN319LAorICAgIHtDT0xVTU5fTE9PS1VQQ1RMUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfbG9va3VwQ3RsVGFibGUsIDIsIHsxLCA4fX0KIH07CiAKIApAQCAtNjE2LDcgKzYyMiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyZXNzKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB3aGlsZSAoKmxvb2t1cC0+aF9hZGRyX2xpc3QpIHsKLSAgICAgICAgICAgICAgICBiY29weSgqbG9va3VwLT5oX2FkZHJfbGlzdCsrLCAoY2hhciAqKSAmYSwgc2l6ZW9mKGEpKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoJmEsICpsb29rdXAtPmhfYWRkcl9saXN0KyssIHNpemVvZihhKSk7CiAKICAgICAgICAgICAgICAgICB0ZW1wID0gU05NUF9NQUxMT0NfU1RSVUNUKGxvb2t1cFJlc3VsdHNUYWJsZV9kYXRhKTsKICAgICAgICAgICAgICAgICBpZiAodGVtcCA9PSBOVUxMKSB7CkBAIC0xMDA1LDcgKzEwMTEsNyBAQAogCiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+bG9va3VwQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+bG9va3VwQ3RsT3duZXJJbmRleExlbik7ICAgLyogbG9va3VwQ3RsT3duZXJJbmRleCAqLwogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPmxvb2t1cEN0bE9wZXJhdGlvbk5hbWUsIHRoZWRhdGEtPmxvb2t1cEN0bE9wZXJhdGlvbk5hbWVMZW4pOyAgICAgLyogbG9va3VwQ3RsT3BlcmF0aW9uTmFtZSAqLwotICAgIGJ6ZXJvKG5ld29pZCwgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CisgICAgbWVtc2V0KG5ld29pZCwgJ1wwJywgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOwogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9uc2xvb2t1cC9sb29rdXBSZXN1bHRzVGFibGUuYwppbmRleCBjNWZkMmI3Li5iZmI1NmM5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vbnNsb29rdXAvbG9va3VwUmVzdWx0c1RhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL25zbG9va3VwL2xvb2t1cFJlc3VsdHNUYWJsZS5jCkBAIC00Miw4ICs0MiwxMCBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODIsIDEsIDQgfTsKIAogc3RydWN0IHZhcmlhYmxlMiBsb29rdXBSZXN1bHRzVGFibGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0NPTFVNTl9MT09LVVBSRVNVTFRTQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvb2t1cFJlc3VsdHNUYWJsZSwgMiwgezEsIDJ9fSwKLSAgICB7Q09MVU1OX0xPT0tVUFJFU1VMVFNBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG9va3VwUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319CisgICAge0NPTFVNTl9MT09LVVBSRVNVTFRTQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xvb2t1cFJlc3VsdHNUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7Q09MVU1OX0xPT0tVUFJFU1VMVFNBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG9va3VwUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319CiB9OwogCiAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ0N0bFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYwppbmRleCAxZTEwMmEwLi4zZjRmMTI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nQ3RsVGFibGUuYwpAQCAtNzUsMjcgKzc1LDQ4IEBACiAgICAgLyoKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAogICAgICAqLwotICAgIHtDT0xVTU5fUElOR0NUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fUElOR0NUTFRBUkdFVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fUElOR0NUTERBVEFTSVpFLCAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCA1fX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMVElNRU9VVCwgICAgICAgICAgQVNOX1VOU0lHTkVELCBST05MWSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDZ9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExQUk9CRUNPVU5ULCAgICAgICBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fUElOR0NUTEFETUlOU1RBVFVTLCAgICAgICBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fUElOR0NUTERBVEFGSUxMLCAgICAgICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fUElOR0NUTEZSRVFVRU5DWSwgICAgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTB9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExNQVhST1dTLCAgICAgICAgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDExfX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMU1RPUkFHRVRZUEUsICAgICAgIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxMn19LAotICAgIHtDT0xVTU5fUElOR0NUTFRSQVBHRU5FUkFUSU9OLCAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTN9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExUUkFQUFJPQkVGQUlMVVJFRklMVEVSLCBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE0fX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMVFJBUFRFU1RGQUlMVVJFRklMVEVSLCAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxNX19LAotICAgIHtDT0xVTU5fUElOR0NUTFRZUEUsICAgICAgICAgICAgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTZ9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExERVNDUiwgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE3fX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMU09VUkNFQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxOH19LAotICAgIHtDT0xVTU5fUElOR0NUTFNPVVJDRUFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTl9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExJRklOREVYLCAgICAgICAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDIwfX0sCi0gICAge0NPTFVNTl9QSU5HQ1RMQllQQVNTUk9VVEVUQUJMRSwgIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAyMX19LAotICAgIHtDT0xVTU5fUElOR0NUTERTRklFTEQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMjJ9fSwKLSAgICB7Q09MVU1OX1BJTkdDVExST1dTVEFUVVMsICAgICAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDIzfX0KKyAgICB7Q09MVU1OX1BJTkdDVExUQVJHRVRBRERSRVNTVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDR9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExEQVRBU0laRSwgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fUElOR0NUTFRJTUVPVVQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCA2fX0sCisgICAge0NPTFVNTl9QSU5HQ1RMUFJPQkVDT1VOVCwgICAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExBRE1JTlNUQVRVUywgICAgICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDh9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExEQVRBRklMTCwgICAgICAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDl9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExGUkVRVUVOQ1ksICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDEwfX0sCisgICAge0NPTFVNTl9QSU5HQ1RMTUFYUk9XUywgICAgICAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxMX19LAorICAgIHtDT0xVTU5fUElOR0NUTFNUT1JBR0VUWVBFLCAgICAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTJ9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExUUkFQR0VORVJBVElPTiwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDEzfX0sCisgICAge0NPTFVNTl9QSU5HQ1RMVFJBUFBST0JFRkFJTFVSRUZJTFRFUiwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxNH19LAorICAgIHtDT0xVTU5fUElOR0NUTFRSQVBURVNURkFJTFVSRUZJTFRFUiwgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTV9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExUWVBFLCAgICAgICAgICAgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE2fX0sCisgICAge0NPTFVNTl9QSU5HQ1RMREVTQ1IsICAgICAgICAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAxN319LAorICAgIHtDT0xVTU5fUElOR0NUTFNPVVJDRUFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMTh9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExTT1VSQ0VBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDE5fX0sCisgICAge0NPTFVNTl9QSU5HQ1RMSUZJTkRFWCwgICAgICAgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAyMH19LAorICAgIHtDT0xVTU5fUElOR0NUTEJZUEFTU1JPVVRFVEFCTEUsICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcGluZ0N0bFRhYmxlLCAyLCB7MSwgMjF9fSwKKyAgICB7Q09MVU1OX1BJTkdDVExEU0ZJRUxELCAgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3BpbmdDdGxUYWJsZSwgMiwgezEsIDIyfX0sCisgICAge0NPTFVNTl9QSU5HQ1RMUk9XU1RBVFVTLCAgICAgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9waW5nQ3RsVGFibGUsIDIsIHsxLCAyM319CiB9OwogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdQcm9iZUhpc3RvcnlUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMKaW5kZXggMzFmYTBiOC4uNzhjNzViZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Byb2JlSGlzdG9yeVRhYmxlLmMKQEAgLTUwLDEwICs1MCwxNCBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODAsIDEsIDQgfTsKIAogc3RydWN0IHZhcmlhYmxlMiBwaW5nUHJvYmVIaXN0b3J5VGFibGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZUkVTUE9OU0UsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZU1RBVFVTLCAgICBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCAzfX0sCi0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZTEFTVFJDLCAgICBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA0fX0sCi0gICAge0NPTFVNTl9QSU5HUFJPQkVISVNUT1JZVElNRSwgICAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9waW5nUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA1fX0KKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllSRVNQT05TRSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDJ9fSwKKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllTVEFUVVMsICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllMQVNUUkMsICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDR9fSwKKyAgICB7Q09MVU1OX1BJTkdQUk9CRUhJU1RPUllUSU1FLCAgICBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3BpbmdQcm9iZUhpc3RvcnlUYWJsZSwgMiwgezEsIDV9fQogfTsKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vcGluZy9waW5nUmVzdWx0c1RhYmxlLmMKaW5kZXggMWY3MWZkNS4uMTQ0NWQ4NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3BpbmcvcGluZ1Jlc3VsdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi9waW5nL3BpbmdSZXN1bHRzVGFibGUuYwpAQCAtNDksMTYgKzQ5LDI2IEBACiAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCA4MCwgMSwgMyB9OwogCiBzdHJ1Y3QgdmFyaWFibGUyIHBpbmdSZXN1bHRzVGFibGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0NPTFVNTl9QSU5HUkVTVUxUU09QRVJTVEFUVVMsICAgICAgIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3BpbmdSZXN1bHRzVGFibGUsIDIsIHsxLCAxfX0sCi0gICAge0NPTFVNTl9QSU5HUkVTVUxUU0lQVEFSR0VUQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3BpbmdSZXN1bHRzVGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0NPTFVNTl9QSU5HUkVTVUxUU0lQVEFSR0VUQUREUkVTUywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNNSU5SVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNNQVhSVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgNX19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNBVkVSQUdFUlRULCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNQUk9CRVJFU1BPTlNFUywgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNTRU5UUFJPQkVTLCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNSVFRTVU1PRlNRVUFSRVMsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fUElOR1JFU1VMVFNMQVNUR09PRFBST0JFLCAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgMTB9fQorICAgIHtDT0xVTU5fUElOR1JFU1VMVFNPUEVSU1RBVFVTLCAgICAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgMX19LAorICAgIHtDT0xVTU5fUElOR1JFU1VMVFNJUFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9waW5nUmVzdWx0c1RhYmxlLCAyLCB7MSwgMn19LAorICAgIHtDT0xVTU5fUElOR1JFU1VMVFNJUFRBUkdFVEFERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTTUlOUlRULCAgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDR9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTTUFYUlRULCAgICAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDV9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTQVZFUkFHRVJUVCwgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTUFJPQkVSRVNQT05TRVMsICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTU0VOVFBST0JFUywgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDh9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTUlRUU1VNT0ZTUVVBUkVTLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDl9fSwKKyAgICB7Q09MVU1OX1BJTkdSRVNVTFRTTEFTVEdPT0RQUk9CRSwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcGluZ1Jlc3VsdHNUYWJsZSwgMiwgezEsIDEwfX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3NjaGVkdWxlL3NjaGVkQ29yZS5jCmluZGV4IDQwNTVkNDYuLjI4NDAwZjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi9zY2hlZHVsZS9zY2hlZENvcmUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vc2NoZWR1bGUvc2NoZWRDb3JlLmMKQEAgLTIyLDcgKzIyLDcgQEAKICAgICBpZiAoIXNjaGVkdWxlX3RhYmxlKSB7CiAgICAgICAgIHNjaGVkdWxlX3RhYmxlID0gbmV0c25tcF90ZGF0YV9jcmVhdGVfdGFibGUoInNjaGVkVGFibGUiLCAwKTsKICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTppbml0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGUgc2NoZWR1bGUgY29udGFpbmVyKCV4KVxuIiwgc2NoZWR1bGVfdGFibGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjcmVhdGUgc2NoZWR1bGUgY29udGFpbmVyKCVwKVxuIiwgc2NoZWR1bGVfdGFibGUpKTsKICAgICB9CiB9CiAKQEAgLTUzLDEzICs1MywxMyBAQAogICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOmNhbGxiYWNrIiwgIm1pc3NpbmcgZW50cnlcbiIpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbnRyeS0+c2NoZWRMYXN0UnVuID0gdGltZSgwKTsKKyAgICBlbnRyeS0+c2NoZWRMYXN0UnVuID0gdGltZShOVUxMKTsKICAgICBlbnRyeS0+c2NoZWRUcmlnZ2VycysrOwogCiAgICAgREVCVUdNU0dUTCgoICJkaXNtYW46c2NoZWR1bGU6Y2FsbGJhY2siLCAiYXNzaWdubWVudCAiKSk7CiAgICAgREVCVUdNU0dPSUQoKCJkaXNtYW46c2NoZWR1bGU6Y2FsbGJhY2siLCBlbnRyeS0+c2NoZWRWYXJpYWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZFZhcmlhYmxlX2xlbikpOwotICAgIERFQlVHTVNHKCggICAiZGlzbWFuOnNjaGVkdWxlOmNhbGxiYWNrIiwgIiA9ICVkXG4iLCBlbnRyeS0+c2NoZWRWYWx1ZSkpOworICAgIERFQlVHTVNHKCggICAiZGlzbWFuOnNjaGVkdWxlOmNhbGxiYWNrIiwgIiA9ICVsZFxuIiwgZW50cnktPnNjaGVkVmFsdWUpKTsKIAogICAgIG1lbXNldCgmYXNzaWduLCAwLCBzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7CiAgICAgc25tcF9zZXRfdmFyX29iamlkKCZhc3NpZ24sIGVudHJ5LT5zY2hlZFZhcmlhYmxlLCBlbnRyeS0+c2NoZWRWYXJpYWJsZV9sZW4pOwpAQCAtMjM5LDIwICsyMzksNiBAQAogfQogCiAKLSNpZm5kZWYgSEFWRV9MT0NBTFRJTUVfUgotc3RydWN0IHRtICoKLWxvY2FsdGltZV9yKGNvbnN0IHRpbWVfdCAqdGltZXAsIHN0cnVjdCB0bSAqcmVzdWx0KSB7Ci0gICAgc3RydWN0IHRtICp0bXA7Ci0KLSAgICB0bXAgPSBsb2NhbHRpbWUoIHRpbWVwICk7Ci0gICAgaWYgKCB0bXAgJiYgcmVzdWx0ICkgewotICAgICAgICBtZW1jcHkoIHJlc3VsdCwgdG1wLCBzaXplb2Yoc3RydWN0IHRtKSk7Ci0gICAgfQotCi0gICAgcmV0dXJuICh0bXAgPyByZXN1bHQgOiBOVUxMICk7Ci19Ci0jZW5kaWYKLQogLyoKICAqIGRldGVybWluZSB0aGUgdGltZSBmb3IgdGhlIG5leHQgc2NoZWR1bGVkIGFjdGlvbiBvZiBhIGdpdmVuIGVudHJ5CiAgKi8KQEAgLTI5MSwxNCArMjc3LDE0IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgZW50cnktPnNjaGVkTmV4dFJ1biA9IG5vdyArIGVudHJ5LT5zY2hlZEludGVydmFsOwogICAgICAgICB9Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJwZXJpb2RpYzogKCVkKSAlcyIsCisgICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJwZXJpb2RpYzogKCVsZCkgJXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZE5leHRSdW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdGltZSgmZW50cnktPnNjaGVkTmV4dFJ1bikpKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFNDSEVEX1RZUEVfT05FU0hPVDoKICAgICAgICAgaWYgKCBlbnRyeS0+c2NoZWRMYXN0UnVuICkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgIm9uZS1zaG90OiBleHBpcmVkICglZCkgJXMiLAorICAgICAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgIm9uZS1zaG90OiBleHBpcmVkICglbGQpICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC00MTQsMTMgKzQwMCwxMyBAQAogICAgICAgICAgKiAnbmV4dF90bScgbm93IGNvbnRhaW5zIHRoZSB0aW1lIGZvciB0aGUgbmV4dCBzY2hlZHVsZWQgcnVuCiAgICAgICAgICAqLwogICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuID0gbWt0aW1lKCAmbmV4dF90bSApOwotICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOnRpbWUiLCAiY2FsZW5kYXI6ICglZCkgJXMiLAorICAgICAgICBERUJVR01TR1RMKCgiZGlzbWFuOnNjaGVkdWxlOnRpbWUiLCAiY2FsZW5kYXI6ICglbGQpICVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c2NoZWROZXh0UnVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY3RpbWUoJmVudHJ5LT5zY2hlZE5leHRSdW4pKSk7CiAgICAgICAgIHJldHVybjsKIAogICAgIGRlZmF1bHQ6Ci0gICAgICAgIERFQlVHTVNHVEwoKCJkaXNtYW46c2NoZWR1bGU6dGltZSIsICJ1bmtub3duIHR5cGUgKCVkKVxuIiwKKyAgICAgICAgREVCVUdNU0dUTCgoImRpc21hbjpzY2hlZHVsZTp0aW1lIiwgInVua25vd24gdHlwZSAoJWxkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zY2hlZFR5cGUpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKaW5kZXggNDJmMjRkYy4uNWM3MGUwZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmMKQEAgLTQxLDMxICs0MSw1NiBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUQVJHRVRBRERSRVNTVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDN9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUQVJHRVRBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDR9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExCWVBBU1NST1VURVRBQkxFLCAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDV9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExEQVRBU0laRSwgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRJTUVPVVQsICAgICAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCA3fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMUFJPQkVTUEVSSE9QLCBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDh9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExQT1JULCAgICAgICAgIEFTTl9VTlNJR05FRCwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTE1BWFRUTCwgICAgICAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAxMH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTERTRklFTEQsICAgICAgQVNOX1VOU0lHTkVELCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAxMX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFNPVVJDRUFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTJ9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExTT1VSQ0VBRERSRVNTLCAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDEzfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMSUZJTkRFWCwgICAgICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE0fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUlTQ09QVElPTlMsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE1fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUFYRkFJTFVSRVMsICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE2fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMRE9OVEZSQUdNRU5ULCAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE3fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMSU5JVElBTFRUTCwgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE4fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMRlJFUVVFTkNZLCAgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDE5fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMU1RPUkFHRVRZUEUsICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIwfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMQURNSU5TVEFUVVMsICAgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIxfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMREVTQ1IsICAgICAgIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIyfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUFYUk9XUywgICAgICBBU05fVU5TSUdORUQsIFJXUklURSwgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDIzfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMVFJBUEdFTkVSQVRJT04sICBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyNH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTENSRUFURUhPUFNFTlRSSUVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjV9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUWVBFLCAgICAgICAgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjZ9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExST1dTVEFUVVMsICAgICBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjd9fQorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRBUkdFVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgM319LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRBUkdFVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgNH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTEJZUEFTU1JPVVRFVEFCTEUsICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTERBVEFTSVpFLCAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCA2fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMVElNRU9VVCwgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDd9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExQUk9CRVNQRVJIT1AsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgOH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFBPUlQsICAgICAgICAgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCA5fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMTUFYVFRMLCAgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDEwfX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMRFNGSUVMRCwgICAgICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDExfX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMU09VUkNFQUREUkVTU1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAxMn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFNPVVJDRUFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTN9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExJRklOREVYLCAgICAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTR9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExNSVNDT1BUSU9OUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTV9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExNQVhGQUlMVVJFUywgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTZ9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExET05URlJBR01FTlQsICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTd9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExJTklUSUFMVFRMLCAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTh9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExGUkVRVUVOQ1ksICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMTl9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExTVE9SQUdFVFlQRSwgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjB9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExBRE1JTlNUQVRVUywgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjF9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExERVNDUiwgICAgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjJ9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExNQVhST1dTLCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdHJhY2VSb3V0ZUN0bFRhYmxlLCAyLCB7MSwgMjN9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVDVExUUkFQR0VORVJBVElPTiwgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3RyYWNlUm91dGVDdGxUYWJsZSwgMiwgezEsIDI0fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFQ1RMQ1JFQVRFSE9QU0VOVFJJRVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFRZUEUsICAgICAgICBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyNn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUNUTFJPV1NUQVRVUywgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90cmFjZVJvdXRlQ3RsVGFibGUsIDIsIHsxLCAyN319CiAKIH07CiAKQEAgLTEyNiw3ICsxNTEsOCBAQAogICAgICAgICBleGl0KDEpOwogICAgIH0KIAotICAgIGJ6ZXJvKGhvc3QsIHNpemVvZihjaGFyKSAqIChpdGVtLT50cmFjZVJvdXRlQ3RsVGFyZ2V0QWRkcmVzc0xlbiArIDEpKTsKKyAgICBtZW1zZXQoaG9zdCwgJ1wwJywKKwkgICBzaXplb2YoY2hhcikgKiAoaXRlbS0+dHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3NMZW4gKyAxKSk7CiAgICAgc3RyY3B5KGhvc3QsIGl0ZW0tPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzKTsKICAgICBob3N0W2l0ZW0tPnRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzTGVuXSA9ICdcMCc7CiAKQEAgLTIxOSw3ICsyNDUsNyBAQAogICAgICAgICBzdHJ1Y3QgaG9zdGVudCAqaHAgPSBOVUxMOwogICAgICAgICAvKiBzdHJ1Y3QgaG9zdGVudiBocDsgKi8KICAgICAgICAgY2hhciAgICAgICAgICAgIHBhWzY0XTsKLSAgICAgICAgYnplcm8ocGEsIDY0KTsKKyAgICAgICAgbWVtc2V0KHBhLCAnXDAnLCA2NCk7CiAKICAgICAgICAgdG8tPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CiAgICAgICAgIHRvLT5zaW42X3BvcnQgPSBodG9ucygzMzQzNCk7CkBAIC0yMzQsNyArMjYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpKTsKICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYnplcm8oU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsCisgICAgICAgICAgICBtZW1zZXQoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsICdcMCcsCiAgICAgICAgICAgICAgICAgICBzaXplb2YoY2hhcikgKiAoc3RybGVuKGhvc3QpICsgMSkpOwogICAgICAgICAgICAgbWVtY3B5KFN0b3JhZ2VUbXAtPnRyYWNlUm91dGVSZXN1bHRzSXBUZ3RBZGRyLCBob3N0LAogICAgICAgICAgICAgICAgICAgIHN0cmxlbihob3N0KSArIDEpOwpAQCAtMjU1LDcgKzI4MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSkpOwogICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBiemVybyhTdG9yYWdlVG1wLT50cmFjZVJvdXRlUmVzdWx0c0lwVGd0QWRkciwKKyAgICAgICAgICAgICAgICBtZW1zZXQoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsICdcMCcsCiAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGNoYXIpICogKHN0cmxlbihob3N0KSArIDEpKTsKICAgICAgICAgICAgICAgICBtZW1jcHkoU3RvcmFnZVRtcC0+dHJhY2VSb3V0ZVJlc3VsdHNJcFRndEFkZHIsIGhvc3RuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBzdHJsZW4oaG9zdG5hbWUpICsgMSk7CkBAIC02OTIsNyArNzE4LDcgQEAKICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsT3duZXJJbmRleCwgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bE93bmVySW5kZXhMZW4pOyAgIC8qIHRyYWNlUm91dGVDdGxPd25lckluZGV4ICovCiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bFRlc3ROYW1lLCB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsVGVzdE5hbWVMZW4pOyAgICAgICAvKiB0cmFjZVJvdXRlQ3RsT3BlcmF0aW9uTmFtZSAqLwogCi0gICAgYnplcm8obmV3b2lkLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKKyAgICBtZW1zZXQobmV3b2lkLCAnXDAnLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKICAgICBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV9vaWQobmV3b2lkLCAmbmV3b2lkX2xlbiwgTlVMTCwgMCwgdmFycyk7CiAKICAgICBmb3IgKGhjaWxhc3QgPSBoY2lwdHIyID0gdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlU3RvcmFnZTsKQEAgLTEzMjYsNyArMTM1Miw3IEBACiAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFycywgTlVMTCwgMCwgQVNOX09DVEVUX1NUUiwgKGNoYXIgKikgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bE93bmVySW5kZXgsIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxPd25lckluZGV4TGVuKTsgICAvKiB0cmFjZVJvdXRlQ3RsT3duZXJJbmRleCAqLwogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxUZXN0TmFtZSwgdGhlZGF0YS0+dHJhY2VSb3V0ZUN0bFRlc3ROYW1lTGVuKTsgICAgICAgLyogdHJhY2VSb3V0ZUN0bFRlc3ROYW1lICovCiAKLSAgICBiemVybyhuZXdvaWQsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOworICAgIG1lbXNldChuZXdvaWQsICdcMCcsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOwogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKIAogICAgIGZvciAoaGNpcHRyMiA9IHRyYWNlUm91dGVSZXN1bHRzVGFibGVTdG9yYWdlOyBoY2lwdHIyICE9IE5VTEw7CkBAIC0xMzU3LDcgKzEzODMsNyBAQAogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxPd25lckluZGV4LCB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsT3duZXJJbmRleExlbik7ICAgLyogdHJhY2VSb3V0ZUN0bE93bmVySW5kZXggKi8KICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxUZXN0TmFtZUxlbik7ICAgICAgIC8qIHRyYWNlUm91dGVDdGxPcGVyYXRpb25OYW1lICovCiAKLSAgICBiemVybyhuZXdvaWQsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOworICAgIG1lbXNldChuZXdvaWQsICdcMCcsIHNpemVvZihvaWQpICogTUFYX09JRF9MRU4pOwogCiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sIE5VTEwsIDAsIHZhcnMpOwogCkBAIC0xMzg4LDcgKzE0MTQsNyBAQAogICAgIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUoJnZhcnMsIE5VTEwsIDAsIEFTTl9PQ1RFVF9TVFIsIChjaGFyICopIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxPd25lckluZGV4LCB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsT3duZXJJbmRleExlbik7ICAgLyogdHJhY2VSb3V0ZUN0bE93bmVySW5kZXggKi8KICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZ2YXJzLCBOVUxMLCAwLCBBU05fT0NURVRfU1RSLCAoY2hhciAqKSB0aGVkYXRhLT50cmFjZVJvdXRlQ3RsVGVzdE5hbWUsIHRoZWRhdGEtPnRyYWNlUm91dGVDdGxUZXN0TmFtZUxlbik7ICAgICAgIC8qIHRyYWNlUm91dGVDdGxUZXN0TmFtZSAqLwogCi0gICAgYnplcm8obmV3b2lkLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKKyAgICBtZW1zZXQobmV3b2lkLCAnXDAnLCBzaXplb2Yob2lkKSAqIE1BWF9PSURfTEVOKTsKIAogICAgIGhlYWRlcl9jb21wbGV4X2dlbmVyYXRlX29pZChuZXdvaWQsICZuZXdvaWRfbGVuLCBOVUxMLCAwLCB2YXJzKTsKIApAQCAtMTQ0Nyw3ICsxNDczLDcgQEAKICAgICAvKgogICAgICAqIHRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzIAogICAgICAqLwotICAgIGJ6ZXJvKG5ld29pZCwgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CisgICAgbWVtc2V0KG5ld29pZCwgJ1wwJywgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CiAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKG5ld29pZCwgJm5ld29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlUm91dGVDdGxUYXJnZXRBZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodHJhY2VSb3V0ZUN0bFRhcmdldEFkZHJlc3MpIC8KQEAgLTE0NjEsNyArMTQ4Nyw3IEBACiAKICAgICBmb3IgKGhjaXB0ciA9IHRyYWNlUm91dGVIb3BzVGFibGVTdG9yYWdlOyBoY2lwdHIgIT0gTlVMTDsKICAgICAgICAgIGhjaXB0ciA9IGhjaXB0ci0+bmV4dCkgewotICAgICAgICBiemVybyhpbmRleG9pZCwgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CisJbWVtc2V0KGluZGV4b2lkLCAnXDAnLCBNQVhfT0lEX0xFTiAqIHNpemVvZihvaWQpKTsKICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKGluZGV4b2lkLCAmaW5kZXhvaWRfbGVuLCBOVUxMLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFycyk7CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlCkBAIC0xNDcwLDEzICsxNDk2LDEzIEBACiAgICAgICAgICAgICAgICAgKHN0cnVjdCB0cmFjZVJvdXRlSG9wc1RhYmxlX2RhdGEgKikKICAgICAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZXRfZnJvbV9vaWQodHJhY2VSb3V0ZUhvcHNUYWJsZVN0b3JhZ2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhjaXB0ci0+bmFtZSwgaGNpcHRyLT5uYW1lbGVuKTsKLSAgICAgICAgICAgIGJ6ZXJvKHRlbXBvaWQsIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgbWVtc2V0KHRlbXBvaWQsICdcMCcsIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOwogICAgICAgICAgICAgaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkKHRlbXBvaWQsICZ0ZW1wb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cmFjZVJvdXRlSG9wc0lwVGdBZGRyZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0cmFjZVJvdXRlSG9wc0lwVGdBZGRyZXNzKSAvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG9pZCksIHZhcnMpOwogICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyX2hvcHMsIE5VTEwsIDAsIEFTTl9VTlNJR05FRCwgKGNoYXIgKikgJlN0b3JhZ2VIb3BzLT50cmFjZVJvdXRlSG9wc0hvcEluZGV4LCBzaXplb2YoU3RvcmFnZUhvcHMtPnRyYWNlUm91dGVIb3BzSG9wSW5kZXgpKTsgICAgLyogdHJhY2VSb3V0ZUN0bFRlc3ROYW1lICovCi0gICAgICAgICAgICBiemVybyhuZXdvaWQsIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgbWVtc2V0KG5ld29pZCwgJ1wwJywgTUFYX09JRF9MRU4gKiBzaXplb2Yob2lkKSk7CiAgICAgICAgICAgICBoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV9vaWQobmV3b2lkLCAmbmV3b2lkX2xlbiwgdGVtcG9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wb2lkX2xlbiwgdmFyX2hvcHMpOwogICAgICAgICAgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdmFyX2xpc3QsIG5ld29pZCwgbmV3b2lkX2xlbiwKQEAgLTQwOTMsMTEgKzQxMTksNyBAQAogICAgICAgICBmcmVlaG9zdGluZm8oaGkpOwogCiAKLSNpZmRlZiBIQVZFX1NFVExJTkVCVUYKLSAgICAgICAgc2V0bGluZWJ1ZihzdGRvdXQpOwotI2Vsc2UKLSAgICAgICAgc2V0dmJ1ZihzdGRvdXQsIE5VTEwsIF9JT0xCRiwgMCk7Ci0jZW5kaWYKKyAgICAgICAgbmV0c25tcF9zZXRfbGluZV9idWZmZXJpbmcoc3Rkb3V0KTsKIAogICAgICAgICBvdXRpcCA9IChzdHJ1Y3QgaXAgKikgbWFsbG9jKHBhY2tsZW4pOwogICAgICAgICBpZiAob3V0aXAgPT0gTlVMTCkgewpAQCAtNDkzOSw3ICs0OTYxLDcgQEAKIAogICAgICAgICBzZXRsaW5lYnVmKHN0ZG91dCk7CiAKLSAgICAgICAgKHZvaWQpIGJ6ZXJvKChjaGFyICopICZ3aGVyZXRvLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luNikpOworICAgICAgICBtZW1zZXQoJndoZXJldG8sICdcMCcsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAKICAgICAgICAgdG8tPnNpbjZfZmFtaWx5ID0gQUZfSU5FVDY7CiAgICAgICAgIHRvLT5zaW42X3BvcnQgPSBodG9ucyhwb3J0KTsKQEAgLTUwMzYsNyArNTA1OCw3IEBACiAgICAgICAgICAgICBzYWRkci5zaW42X3BvcnQgPSAwOwogICAgICAgICAgICAgY2xvc2UocHJvYmVfZmQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgKHZvaWQpIGJ6ZXJvKChjaGFyICopICZzYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbjYpKTsKKyAgICAgICAgICAgIG1lbXNldCgmc2FkZHIsICdcMCcsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW42KSk7CiAgICAgICAgICAgICBzYWRkci5zaW42X2ZhbWlseSA9IEFGX0lORVQ2OwogICAgICAgICAgICAgaWYgKGluZXRfcHRvbihBRl9JTkVUNiwgc291cmNlLCAmc2FkZHIuc2luNl9hZGRyKSA8IDApIHsKICAgICAgICAgICAgICAgICBQcmludGYoInRyYWNlcm91dGU6IHVua25vd24gYWRkciAlc1xuIiwgc291cmNlKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVDdGxUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgKaW5kZXggMGJlOGRjNC4uMDcxMTk3OCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUN0bFRhYmxlLmgKQEAgLTUyNSw3ICs1MjUsNyBAQAogI2RlZmluZSBGRF9TRVQobiwgcCkgICAgKChwKS0+ZmRzX2JpdHNbKG4pL05GREJJVFNdIHw9ICgxIDw8ICgobikgJSBORkRCSVRTKSkpCiAjZGVmaW5lIEZEX0NMUihuLCBwKSAgICAoKHApLT5mZHNfYml0c1sobikvTkZEQklUU10gJj0gfigxIDw8ICgobikgJSBORkRCSVRTKSkpCiAjZGVmaW5lIEZEX0lTU0VUKG4sIHApICAoKHApLT5mZHNfYml0c1sobikvTkZEQklUU10gJiAoMSA8PCAoKG4pICUgTkZEQklUUykpKQotI2RlZmluZSBGRF9aRVJPKHApICAgICAgYnplcm8oKGNoYXIgKikocCksIHNpemVvZigqKHApKSkKKyNkZWZpbmUgRkRfWkVSTyhwKSAgICAgIG1lbXNldCgocCksICdcMCcsIHNpemVvZigqKHApKSkKICNlbmRpZgogCiAjZGVmaW5lIEZwcmludGYgKHZvaWQpZnByaW50ZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZUhvcHNUYWJsZS5jCmluZGV4IDI5NmRkNTMuLjc2Mzc1N2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVIb3BzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlSG9wc1RhYmxlLmMKQEAgLTQwLDE1ICs0MCwyNCBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODEsIDEsIDUgfTsKIAogc3RydWN0IHZhcmlhYmxlMiB0cmFjZVJvdXRlSG9wc1RhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNSU5SVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNQVhSVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNBVkVSQUdFUlRULCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNSVFRTVU1PRlNRVUFSRVMsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNTRU5UUFJPQkVTLCAgICAgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNQUk9CRVJFU1BPTlNFUywgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNMQVNUR09PRFBST0JFLCAgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMTB9fQorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1NUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNJUFRHVEFERFJFU1MsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgM319LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNSU5SVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNNQVhSVFQsICAgICAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNBVkVSQUdFUlRULCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgNn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNSVFRTVU1PRlNRVUFSRVMsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgN319LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNTRU5UUFJPQkVTLCAgICAgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOH19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNQUk9CRVJFU1BPTlNFUywgIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgOX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURUhPUFNMQVNUR09PRFBST0JFLCAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlSG9wc1RhYmxlLCAyLCB7MSwgMTB9fQogfTsKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jCmluZGV4IGYzYjdjZTYuLjBiNDEwYzUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVQcm9iZUhpc3RvcnlUYWJsZS5jCkBAIC0zOSwxMiArMzksMTggQEAKICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDgxLCAxLCA0IH07CiAKIHN0cnVjdCB2YXJpYWJsZTIgdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWUhBRERSVFlQRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgNH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWUhBRERSLCAgIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgNX19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWVJFU1BPTlNFLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWVNUQVRVUywgICAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgN319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWUxBU1RSQywgICAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgOH19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVBST0JFSElTVE9SWVRJTUUsICAgIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVByb2JlSGlzdG9yeVRhYmxlLCAyLCB7MSwgOX19CisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZSEFERFJUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA0fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZSEFERFIsICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA1fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZUkVTUE9OU0UsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA2fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZU1RBVFVTLCAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA3fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZTEFTVFJDLCAgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA4fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUFJPQkVISVNUT1JZVElNRSwgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUHJvYmVIaXN0b3J5VGFibGUsIDIsIHsxLCA5fX0KIH07CiAKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZGlzbWFuL3RyYWNlcm91dGUvdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZS5jCmluZGV4IGQ1NjJhZGMuLjE5ZTczYjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2Rpc21hbi90cmFjZXJvdXRlL3RyYWNlUm91dGVSZXN1bHRzVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9kaXNtYW4vdHJhY2Vyb3V0ZS90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLmMKQEAgLTQ4LDE0ICs0OCwyMiBAQAogICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgODEsIDEsIDMgfTsKIAogc3RydWN0IHZhcmlhYmxlMiB0cmFjZVJvdXRlUmVzdWx0c1RhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNPUEVSU1RBVFVTLCAgICAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDF9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTQ1VSSE9QQ09VTlQsICAgICAgQVNOX0dBVUdFLCBST05MWSwgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCAyfX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0NVUlBST0JFQ09VTlQsICAgIEFTTl9HQVVHRSwgUk9OTFksIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgM319LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNJUFRHVEFERFJUWVBFLCAgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDR9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTSVBUR1RBRERSLCAgICBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA1fX0sCi0gICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU1RFU1RBVFRFTVBUUywgIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgNn19LAotICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNURVNUU1VDQ0VTU0VTLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDd9fSwKLSAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTTEFTVEdPT0RQQVRILCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA4fX0KKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTT1BFUlNUQVRVUywgICAgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCAxfX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0NVUkhPUENPVU5ULCAgICAgIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgMn19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNDVVJQUk9CRUNPVU5ULCAgICBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDN9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTSVBUR1RBRERSVFlQRSwgIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA0fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0lQVEdUQUREUiwgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgNX19LAorICAgIHtDT0xVTU5fVFJBQ0VST1VURVJFU1VMVFNURVNUQVRURU1QVFMsICBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdHJhY2VSb3V0ZVJlc3VsdHNUYWJsZSwgMiwgezEsIDZ9fSwKKyAgICB7Q09MVU1OX1RSQUNFUk9VVEVSRVNVTFRTVEVTVFNVQ0NFU1NFUywgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3RyYWNlUm91dGVSZXN1bHRzVGFibGUsIDIsIHsxLCA3fX0sCisgICAge0NPTFVNTl9UUkFDRVJPVVRFUkVTVUxUU0xBU1RHT09EUEFUSCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90cmFjZVJvdXRlUmVzdWx0c1RhYmxlLCAyLCB7MSwgOH19CiB9OwogCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIuaCBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjRlMjU0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi5oCkBAIC0wLDAgKzEsNyBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZSkKK2NvbmZpZ19hZGRfbWliKEV0aGVyTGlrZS1NSUIpCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkMmI0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0cy5oCkBAIC0wLDAgKzEsNyBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworI2lmIGRlZmluZWQobGludXgpCitjb25maWdfcmVxdWlyZShldGhlcmxpa2UtbWliL2RhdGFfYWNjZXNzL2RvdDNzdGF0c19saW51eCkKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjExMDk1MAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZGF0YV9hY2Nlc3MvZG90M3N0YXRzX2xpbnV4LmMKQEAgLTAsMCArMSw5MjggQEAKKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuaCIKKyNpbmNsdWRlICJldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgiCisjaW5jbHVkZSAiZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgiCisKKy8qCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgZ2V0aWZhZGRycyBmYWlsZWQgCisgKiBAcmV0dmFsIC0yIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZAorICovCisKK3N0cnVjdCBpZm5hbWUgKgorZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQsIGludCAqcmV0dmFsKQoreworICAgIHN0cnVjdCBpZmFkZHJzICphZGRycyA9IE5VTEwsICpwID0gTlVMTDsKKyAgICBzdHJ1Y3QgaWZuYW1lICpuYW1lcHRyMT1OVUxMLCAqbmFtZXB0cjIgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKChnZXRpZmFkZHJzKCZhZGRycykpIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgImdldGlmYWRkcnMgZmFpbGVkXG4iKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmRvdDNTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBnZXRpZmFkZHJzIGZhaWxlZFxuIik7CisgICAgICAgICpyZXR2YWwgPSAtMTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChwID0gYWRkcnM7IHA7IHAgPSBwLT5pZmFfbmV4dCkgeworCisgICAgICAgIGlmICghbGlzdF9oZWFkKSB7CisgICAgICAgICAgICBpZiAoIChsaXN0X2hlYWQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgICAgICAgICBmcmVlaWZhZGRycyhhZGRycyk7CisgICAgICAgICAgICAgICAgKnJldHZhbCA9IC0yOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVtc2V0KGxpc3RfaGVhZCwgMCwgc2l6ZW9mIChzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgICAgICBzdHJsY3B5KGxpc3RfaGVhZC0+bmFtZSwgcC0+aWZhX25hbWUsIElGX05BTUVTSVpFKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgIGZvciAobmFtZXB0cjEgPSBsaXN0X2hlYWQ7IG5hbWVwdHIxOyBuYW1lcHRyMiA9IG5hbWVwdHIxLCBuYW1lcHRyMSA9IG5hbWVwdHIxLT5pZm5fbmV4dCkKKyAgICAgICAgICAgIGlmICghc3RybmNtcChwLT5pZmFfbmFtZSwgbmFtZXB0cjEtPm5hbWUsIElGX05BTUVTSVpFKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICBpZiAobmFtZXB0cjEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIChuYW1lcHRyMi0+aWZuX25leHQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfbmFtZV9saXN0X2dldCwgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIGRvdDNzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUgKGxpc3RfaGVhZCk7CisgICAgICAgICAgICBmcmVlaWZhZGRycyhhZGRycyk7CisgICAgICAgICAgICAqcmV0dmFsID0gLTI7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBuYW1lcHRyMiA9IG5hbWVwdHIyLT5pZm5fbmV4dDsKKyAgICAgICAgbWVtc2V0KG5hbWVwdHIyLCAwLCBzaXplb2YgKHN0cnVjdCBpZm5hbWUpKTsKKyAgICAgICAgc3RybGNweShuYW1lcHRyMi0+bmFtZSwgcC0+aWZhX25hbWUsIElGX05BTUVTSVpFKTsKKyAgICAgICAgY29udGludWU7CisKKyAgICB9CisKKyAgICBmcmVlaWZhZGRycyhhZGRycyk7CisgICAgcmV0dXJuIGxpc3RfaGVhZDsKK30KKworLyoKKyAqIEByZXR2YWwgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGludmFsaWQgcG9pbnRlcgorICovCisKK2ludAorZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZSAoc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkKQoreworICAgIHN0cnVjdCBpZm5hbWUgKm5hbWVwdHIxID0gTlVMTCwgKm5hbWVwdHIyID0gTlVMTDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoIWxpc3RfaGVhZCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWU6IGludmFsaWQgcG9pbnRlciBsaXN0X2hlYWQiKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUiLAorICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBwb2ludGVyIGxpc3RfaGVhZFxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZm9yIChuYW1lcHRyMSA9IGxpc3RfaGVhZDsgbmFtZXB0cjE7IG5hbWVwdHIxID0gbmFtZXB0cjIpIHsKKyAgICAgICAgICAgIG5hbWVwdHIyID0gbmFtZXB0cjEtPmlmbl9uZXh0OworICAgICAgICAgICAgZnJlZSAobmFtZXB0cjEpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKgorICogQHJldHZhbCAgMCA6IG5vdCBmb3VuZAorICogQHJldHZhbCAhMCA6IGlmSW5kZXgKKyAqLworCitpbnQgCitkb3Qzc3RhdHNfaW50ZXJmYWNlX2lvY3RsX2lmaW5kZXhfZ2V0IChpbnQgZmQsIGNvbnN0IGNoYXIgKm5hbWUpIHsKKyNpZm5kZWYgU0lPQ0dJRklOREVYCisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHN0cnVjdCBpZnJlcSAgICBpZnJxOworICAgIGludCByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9pZmluZGV4X2dldCIsICJjYWxsZWRcbiIpKTsKKyAgICAgICAgICAgICAgICAgCisgICAgcmMgPSBfZG90M1N0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0dJRklOREVYLCAmaWZycSwgbmFtZSk7CisgICAgaWYgKHJjIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9pZmluZGV4X2dldCIsCisgICAgICAgICAgICAgICAgICAgICJlcnJvciBvbiBpbnRlcmZhY2UgJyVzJ1xuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQsIGVycm9yIG9uIGludGVyZmFjZSAnJXMnXG4iLCBuYW1lKTsKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICB9CisKKyAgICByZXR1cm4gaWZycS5pZnJfaWZpbmRleDsKKyNlbmRpZiAvKiBTSU9DR0lGSU5ERVggKi8KK30KKworIyBpZiBIQVZFX0xJTlVYX1JUTkVUTElOS19IIC8qIHsgTkVUTElOSyAqLworLyoKKyAqIFRoZSBmb2xsb3dpbmcgY29kZSBpcyBiYXNlZCB1cG9uIGNvZGUgSSBnb3QgZnJvbSBTdGVwaGVuIEhlbW1pbmdlcgorICovCisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworc3RydWN0IHJ0bmxfaGFuZGxlIHsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICBmZDsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfbmwgICAgICBsb2NhbDsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfbmwgICAgICBwZWVyOworICAgIF9fdTMyICAgICAgICAgICAgICAgICAgIHNlcTsKKyAgICBfX3UzMiAgICAgICAgICAgICAgICAgICBkdW1wOworfTsKKworc3RydWN0IGlmc3RhdF9lbnQgeworICAgIHN0cnVjdCBpZnN0YXRfZW50ICpuZXh0OworICAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICAgaW50IGlmaW5kZXg7CisgICAgc3RydWN0IHJ0bmxfbGlua19zdGF0cyBzdGF0czsKK307CisKK3R5cGVkZWYgaW50ICgqcnRubF9maWx0ZXJfdCkoY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICosIHN0cnVjdCBubG1zZ2hkciAqbiwgdm9pZCAqKTsKKworc3RydWN0IHJ0bmxfZHVtcF9maWx0ZXJfYXJnCit7CisgICAgcnRubF9maWx0ZXJfdCBmaWx0ZXI7CisgICAgdm9pZCAqYXJnMTsKKyAgICBydG5sX2ZpbHRlcl90IGp1bms7CisgICAgdm9pZCAqYXJnMjsKK307CisKK3N0YXRpYyBzdHJ1Y3QgaWZzdGF0X2VudCAqa2Vybl9kYjsKK3N0YXRpYyBjb25zdCBpbnQgcmN2YnVmX3NpemUgPSAxMDI0ICogMTAyNDsKKworc3RhdGljIGludAorcnRubF9vcGVuX2J5cHJvdG8oc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsIHVuc2lnbmVkIHN1YnNjcmlwdGlvbnMsIGludCBwcm90b2NvbCkKK3sKKyAgICBzb2NrbGVuX3QgYWRkcl9sZW47CisgICAgaW50IHNuZGJ1ZiA9IDMyNzY4OworCisgICAgbWVtc2V0KHJ0aCwgMCwgc2l6ZW9mKCpydGgpKTsKKworICAgIHJ0aC0+ZmQgPSBzb2NrZXQoQUZfTkVUTElOSywgU09DS19SQVcsIHByb3RvY29sKTsKKyAgICBpZiAocnRoLT5mZCA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNhbm5vdCBvcGVuIG5ldGxpbmsgc29ja2V0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2V0c29ja29wdChydGgtPmZkLFNPTF9TT0NLRVQsU09fU05EQlVGLCZzbmRidWYsc2l6ZW9mKHNuZGJ1ZikpIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiU09fU05EQlVGIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2V0c29ja29wdChydGgtPmZkLFNPTF9TT0NLRVQsU09fUkNWQlVGLCZyY3ZidWZfc2l6ZSxzaXplb2YocmN2YnVmX3NpemUpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlNPX1JDVkJVRiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbWVtc2V0KCZydGgtPmxvY2FsLCAwLCBzaXplb2YocnRoLT5sb2NhbCkpOworICAgIHJ0aC0+bG9jYWwubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKKyAgICBydGgtPmxvY2FsLm5sX2dyb3VwcyA9IHN1YnNjcmlwdGlvbnM7CisKKyAgICBpZiAoYmluZChydGgtPmZkLCAoc3RydWN0IHNvY2thZGRyKikmcnRoLT5sb2NhbCwgc2l6ZW9mKHJ0aC0+bG9jYWwpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNhbm5vdCBiaW5kIG5ldGxpbmsgc29ja2V0Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgYWRkcl9sZW4gPSBzaXplb2YocnRoLT5sb2NhbCk7CisgICAgaWYgKGdldHNvY2tuYW1lKHJ0aC0+ZmQsIChzdHJ1Y3Qgc29ja2FkZHIqKSZydGgtPmxvY2FsLCAmYWRkcl9sZW4pIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ2Fubm90IGdldHNvY2tuYW1lIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKGFkZHJfbGVuICE9IHNpemVvZihydGgtPmxvY2FsKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiV3JvbmcgYWRkcmVzcyBsZW5ndGggJWRcbiIsIGFkZHJfbGVuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAocnRoLT5sb2NhbC5ubF9mYW1pbHkgIT0gQUZfTkVUTElOSykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiV3JvbmcgYWRkcmVzcyBmYW1pbHkgJWRcbiIsIHJ0aC0+bG9jYWwubmxfZmFtaWx5KTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBydGgtPnNlcSA9IHRpbWUoTlVMTCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3J0bmxfb3BlbihzdHJ1Y3QgcnRubF9oYW5kbGUgKnJ0aCwgdW5zaWduZWQgc3Vic2NyaXB0aW9ucykKK3sKKyAgICByZXR1cm4gcnRubF9vcGVuX2J5cHJvdG8ocnRoLCBzdWJzY3JpcHRpb25zLCBORVRMSU5LX1JPVVRFKTsKK30KKworc3RhdGljIHZvaWQKK3J0bmxfY2xvc2Uoc3RydWN0IHJ0bmxfaGFuZGxlICpydGgpCit7CisgICAgaWYgKHJ0aC0+ZmQgIT0gLTEpCisgICAgICAgIGNsb3NlKHJ0aC0+ZmQpOworICAgIHJ0aC0+ZmQgPSAtMTsKKworICAgIHJldHVybjsKK30KKworc3RhdGljIGludAorcnRubF93aWxkZHVtcF9yZXF1ZXN0KHN0cnVjdCBydG5sX2hhbmRsZSAqcnRoLCBpbnQgZmFtaWx5LCBpbnQgdHlwZSkKK3sKKyAgICBzdHJ1Y3QgeworICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbmxoOworICAgICAgICBzdHJ1Y3QgcnRnZW5tc2cgZzsKKyAgICB9IHJlcTsKKworICAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7CisgICAgcmVxLm5saC5ubG1zZ19sZW4gPSBzaXplb2YocmVxKTsKKyAgICByZXEubmxoLm5sbXNnX3R5cGUgPSB0eXBlOworICAgIHJlcS5ubGgubmxtc2dfZmxhZ3MgPSBOTE1fRl9ST09UfE5MTV9GX01BVENIfE5MTV9GX1JFUVVFU1Q7CisgICAgcmVxLm5saC5ubG1zZ19waWQgPSAwOworICAgIHJlcS5ubGgubmxtc2dfc2VxID0gcnRoLT5kdW1wID0gKytydGgtPnNlcTsKKyAgICByZXEuZy5ydGdlbl9mYW1pbHkgPSBmYW1pbHk7CisKKyAgICByZXR1cm4gc2VuZChydGgtPmZkLCAodm9pZCopJnJlcSwgc2l6ZW9mKHJlcSksIDApOworfQorCitzdGF0aWMgaW50CitwYXJzZV9ydGF0dHIoc3RydWN0IHJ0YXR0ciAqdGJbXSwgaW50IG1heCwgc3RydWN0IHJ0YXR0ciAqcnRhLCBpbnQgbGVuKQoreworICAgIG1lbXNldCh0YiwgMCwgc2l6ZW9mKHN0cnVjdCBydGF0dHIgKikgKiAobWF4ICsgMSkpOworICAgIHdoaWxlIChSVEFfT0socnRhLCBsZW4pKQorICAgIHsKKyAgICAgICAgaWYgKHJ0YS0+cnRhX3R5cGUgPD0gbWF4KQorICAgICAgICAgICAgdGJbcnRhLT5ydGFfdHlwZV0gPSBydGE7CisgICAgICAgIHJ0YSA9IFJUQV9ORVhUKHJ0YSxsZW4pOworICAgIH0KKworICAgIGlmIChsZW4pCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJwYXJzZV9ydGF0dHI6ICEhIURlZmljaXQgJWQsIHJ0YV9sZW49JWRcbiIsIGxlbiwgcnRhLT5ydGFfbGVuKTsKKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitnZXRfbmxtc2coY29uc3Qgc3RydWN0IHNvY2thZGRyX25sICp3aG8sIHN0cnVjdCBubG1zZ2hkciAqbSwgdm9pZCAqYXJnKQoreworICAgIHN0cnVjdCBpZmluZm9tc2cgKmlmaSA9IE5MTVNHX0RBVEEobSk7CisgICAgc3RydWN0IHJ0YXR0ciAqIHRiW0lGTEFfTUFYKzFdOworICAgIGludCBsZW4gPSBtLT5ubG1zZ19sZW47CisgICAgc3RydWN0IGlmc3RhdF9lbnQgKm47CisKKyAgICBpZiAobS0+bmxtc2dfdHlwZSAhPSBSVE1fTkVXTElOSykKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBsZW4gLT0gTkxNU0dfTEVOR1RIKHNpemVvZigqaWZpKSk7CisgICAgaWYgKGxlbiA8IDApCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHBhcnNlX3J0YXR0cih0YiwgSUZMQV9NQVgsIElGTEFfUlRBKGlmaSksIGxlbik7CisgICAgaWYgKHRiW0lGTEFfSUZOQU1FXSA9PSBOVUxMIHx8IHRiW0lGTEFfU1RBVFNdID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOworCisgICAgbiA9IG1hbGxvYyhzaXplb2YoKm4pKTsKKyAgICBtZW1zZXQobiwgMCwgc2l6ZW9mKCpuKSk7CisKKyAgICBuLT5pZmluZGV4ID0gaWZpLT5pZmlfaW5kZXg7CisgICAgbi0+bmFtZSA9IHN0cmR1cChSVEFfREFUQSh0YltJRkxBX0lGTkFNRV0pKTsKKyAgICBtZW1jcHkoJm4tPnN0YXRzLCBSVEFfREFUQSh0YltJRkxBX1NUQVRTXSksIHNpemVvZihuLT5zdGF0cykpOworICAgIG4tPm5leHQgPSBrZXJuX2RiOworICAgIGtlcm5fZGIgPSBuOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitydG5sX2R1bXBfZmlsdGVyX2woc3RydWN0IHJ0bmxfaGFuZGxlICpydGgsCisgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJ0bmxfZHVtcF9maWx0ZXJfYXJnICphcmcpCit7CisgICAgc3RydWN0IHNvY2thZGRyX25sIG5sYWRkcjsKKyAgICBzdHJ1Y3QgaW92ZWMgaW92OworICAgIHN0cnVjdCBtc2doZHIgbXNnID0geworICAgICAgICAubXNnX25hbWUgPSAmbmxhZGRyLAorICAgICAgICAubXNnX25hbWVsZW4gPSBzaXplb2YobmxhZGRyKSwKKyAgICAgICAgLm1zZ19pb3YgPSAmaW92LAorICAgICAgICAubXNnX2lvdmxlbiA9IDEsCisgICAgfTsKKyAgICBjaGFyIGJ1ZlsxNjM4NF07CisKKyAgICBpb3YuaW92X2Jhc2UgPSBidWY7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaW50IHN0YXR1czsKKyAgICAgICAgY29uc3Qgc3RydWN0IHJ0bmxfZHVtcF9maWx0ZXJfYXJnICphOworCisgICAgICAgIGlvdi5pb3ZfbGVuID0gc2l6ZW9mKGJ1Zik7CisgICAgICAgIHN0YXR1cyA9IHJlY3Ztc2cocnRoLT5mZCwgJm1zZywgMCk7CisKKyAgICAgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUiB8fCBlcnJubyA9PSBFQUdBSU4pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIm5ldGxpbmsgcmVjZWl2ZSBlcnJvciAlcyAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSwgZXJybm8pOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVPRiBvbiBuZXRsaW5rXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoYSA9IGFyZzsgYS0+ZmlsdGVyOyBhKyspIHsKKyAgICAgICAgICAgIHN0cnVjdCBubG1zZ2hkciAqaCA9IChzdHJ1Y3Qgbmxtc2doZHIqKWJ1ZjsKKworICAgICAgICAgICAgd2hpbGUgKE5MTVNHX09LKGgsIHN0YXR1cykpIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyOworCisgICAgICAgICAgICAgICAgaWYgKG5sYWRkci5ubF9waWQgIT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgaC0+bmxtc2dfcGlkICE9IHJ0aC0+bG9jYWwubmxfcGlkIHx8CisgICAgICAgICAgICAgICAgICAgICBoLT5ubG1zZ19zZXEgIT0gcnRoLT5kdW1wKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChhLT5qdW5rKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBhLT5qdW5rKCZubGFkZHIsIGgsIGEtPmFyZzIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBnb3RvIHNraXBfaXQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGgtPm5sbXNnX3R5cGUgPT0gTkxNU0dfRE9ORSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgaWYgKGgtPm5sbXNnX3R5cGUgPT0gTkxNU0dfRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnZXJyICplcnIgPSAoc3RydWN0IG5sbXNnZXJyKilOTE1TR19EQVRBKGgpOworICAgICAgICAgICAgICAgICAgICBpZiAoaC0+bmxtc2dfbGVuIDwgTkxNU0dfTEVOR1RIKHNpemVvZihzdHJ1Y3Qgbmxtc2dlcnIpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUiB0cnVuY2F0ZWRcbiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8gPSAtZXJyLT5lcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcnJvcigiUlRORVRMSU5LIGFuc3dlcnMiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVyciA9IGEtPmZpbHRlcigmbmxhZGRyLCBoLCBhLT5hcmcxKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVycjsKKworc2tpcF9pdDoKKyAgICAgICAgICAgICAgICBoID0gTkxNU0dfTkVYVChoLCBzdGF0dXMpOworICAgICAgICAgICAgfQorICAgICAgICB9IHdoaWxlICgwKTsKKyAgICAgICAgaWYgKG1zZy5tc2dfZmxhZ3MgJiBNU0dfVFJVTkMpIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTWVzc2FnZSB0cnVuY2F0ZWRcbiIpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIhISFSZW1uYW50IG9mIHNpemUgJWRcbiIsIHN0YXR1cyk7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgaW50CitydG5sX2R1bXBfZmlsdGVyKHN0cnVjdCBydG5sX2hhbmRsZSAqcnRoLAorICAgICAgICAgICAgICAgICBydG5sX2ZpbHRlcl90IGZpbHRlciwKKyAgICAgICAgICAgICAgICAgdm9pZCAqYXJnMSwKKyAgICAgICAgICAgICAgICAgcnRubF9maWx0ZXJfdCBqdW5rLAorICAgICAgICAgICAgICAgICB2b2lkICphcmcyKQoreworICAgIGNvbnN0IHN0cnVjdCBydG5sX2R1bXBfZmlsdGVyX2FyZyBhWzJdID0geworICAgICAgICB7IC5maWx0ZXIgPSBmaWx0ZXIsIC5hcmcxID0gYXJnMSwgLmp1bmsgPSBqdW5rLCAuYXJnMiA9IGFyZzIgfSwKKyAgICAgICAgeyAuZmlsdGVyID0gTlVMTCwgICAuYXJnMSA9IE5VTEwsIC5qdW5rID0gTlVMTCwgLmFyZzIgPSBOVUxMIH0KKyAgICB9OworCisgICAgcmV0dXJuIHJ0bmxfZHVtcF9maWx0ZXJfbChydGgsIGEpOworfQorCitpbnQKK19kb3QzU3RhdHNfbmV0bGlua19nZXRfZXJyb3JjbnRycyhkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4LCBjb25zdCBjaGFyICpuYW1lKQoreworICAgIHN0cnVjdCBydG5sX2hhbmRsZSBydGg7CisgICAgc3RydWN0IGlmc3RhdF9lbnQgKmtlOworICAgIGludCBkb25lOworCisgICAgaWYgKHJ0bmxfb3BlbigmcnRoLCAwKSA8IDApCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzOiBydG5sX29wZW4oKSBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpZiAocnRubF93aWxkZHVtcF9yZXF1ZXN0KCZydGgsIEFGX0lORVQsIFJUTV9HRVRMSU5LKSA8IDApCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzOiBDYW5ub3Qgc2VuZCBkdW1wIHJlcXVlc3QiKTsKKyAgICAgICAgcnRubF9jbG9zZSgmcnRoKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKHJ0bmxfZHVtcF9maWx0ZXIoJnJ0aCwgZ2V0X25sbXNnLCBOVUxMLCBOVUxMLCBOVUxMKSA8IDApCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzOiBEdW1wIHRlcm1pbmF0ZWRcbiIpOworICAgICAgICBydG5sX2Nsb3NlKCZydGgpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBydG5sX2Nsb3NlKCZydGgpOworCisgICAgLyoKKyAgICAgKiBOb3cgc2NhbiBrZXJuX2RiIGZvciB0aGlzIGlmJ3MgZGF0YQorICAgICAqIFdoaWxlIGRvaW5nIHNvLCB3ZSdsbCB0aHJvdyBhd2F5IHRoZSBrZXJuIGRiLgorICAgICAqLworICAgIGRvbmUgPSAwOworCisgICAgd2hpbGUgKChrZSA9IGtlcm5fZGIpICE9IE5VTEwpCisgICAgeworICAgICAgICBpZiAoc3RyY21wKGtlLT5uYW1lLCBuYW1lKSA9PSAwKQorICAgICAgICB7CisgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9kYXRhICpkYXRhID0gJnJvd3JlcV9jdHgtPmRhdGE7CisKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGUiLCAiSUZMQV9TVEFUUyBmb3IgJXNcbiIsIG5hbWUpKTsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRkNTRXJyb3JzID0ga2UtPnN0YXRzLnJ4X2NyY19lcnJvcnM7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlNfRkxBRzsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zID0ga2UtPnN0YXRzLnR4X2Ryb3BwZWQ7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRzsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9ycyA9IGtlLT5zdGF0cy50eF9maWZvX2Vycm9yczsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDVFJBTlNNSVRFUlJPUlNfRkxBRzsKKworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzID0ga2UtPnN0YXRzLnR4X2NhcnJpZXJfZXJyb3JzOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUc7CisKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3MgPSBrZS0+c3RhdHMucnhfZnJhbWVfZXJyb3JzOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRlJBTUVUT09MT05HU19GTEFHOworCisgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMgPSBrZS0+c3RhdHMucnhfZmlmb19lcnJvcnM7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1JFQ0VJVkVFUlJPUlNfRkxBRzsKKworICAgICAgICAgICAgZG9uZSA9IDE7CisgICAgICAgIH0KKyAgICAgICAga2Vybl9kYiA9IGtlLT5uZXh0OworICAgICAgICBmcmVlKGtlKTsKKyAgICB9CisKKyAgICByZXR1cm4gIWRvbmU7Cit9CisjIGVsc2UgLyogfXsgKi8KK2ludAorX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgcmV0dXJuIDE7Cit9CisjIGVuZGlmIC8qIH0gKi8KKworCisvKgorICogTkFNRTogZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzCisgKiBQVVJQT1NFOiBUbyBnZXQgYSBzaW5nbGUgc3RhdGlzdGljcyB2YWx1ZSBmcm9tIC9zeXMvY2xhc3MvbmV0LzxpZm5hbWU+L3N0YXRpc3RpY3MvPGN0cm5hbWU+CisgKiBBUkdVTUVOVFM6IGlmbmFtZTogaW50ZXJmYWNlIG5hbWUKKyAqICAgICAgY3RybmFtZTogY291bnRlciBuYW1lCisgKiAgICAgIHZhbHVlcDogd2hlcmUgdG8gc3RvcmUgdmFsdWUKKyAqIFJFVFVSTlM6IDAgaWYgdmFsdWUgbm90IGF2YWlsYWJsZQorICogICAgICBub24tMCBpZiB2YWx1ZSBhdmFpbGFibGUKKyAqLworc3RhdGljIGludAorZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKGNvbnN0IGNoYXIgKmlmbmFtZSwgY2hhciAqY3RybmFtZSwgdV9sb25nICp2YWx1ZXApCit7CisgICAgY2hhciBwYXRoWzI1Nl07CisgICAgRklMRSAqZnA7CisgICAgaW50IHJ2OworCisgICAgaWYgKGlmbmFtZSA9PSBOVUxMIHx8IGN0cm5hbWUgPT0gTlVMTCB8fCB2YWx1ZXAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBzbnByaW50ZihwYXRoLCBzaXplb2YocGF0aCksICIvc3lzL2NsYXNzL25ldC8lcy9zdGF0aXN0aWNzLyVzIiwgaWZuYW1lLCBjdHJuYW1lKTsKKyAgICBmcCA9IGZvcGVuKHBhdGgsICJydCIpOworICAgIGlmIChmcCA9PSBOVUxMKQorICAgICAgICByZXR1cm4gMDsKKworICAgIHJ2ID0gMTsKKyAgICBpZiAoZnNjYW5mKGZwLCAiJWx1IiwgdmFsdWVwKSAhPSAxKQorICAgICAgICBydiA9IDA7CisKKyAgICBmY2xvc2UoZnApOworCisgICAgcmV0dXJuIHJ2OworfQorCisvKgorICogTkFNRTogaW50ZXJmYWNlX2RvdDNzdGF0c19nZXRfZXJyb3Jjb3VudGVycworICogUFVSUE9TRTogVG8gZ2V0IGV0aGVybmV0IGVycm9yIHN0YXRpc3RpY3MKKyAqIEFSR1VNRU5UUzogcm93cmVxX2N0eDogd2hlcmUgdG8gc3RvcmUgdGhlIHZhbHVlKHMpCisgKiAgICAgIG5hbWU6IGludGVyZmFjZSBuYW1lCisgKiBSRVRVUk5TOiBub3RoaW5nLiBmaWVsZHMgbm90IHNldCBpZiBkYXRhIG5vdCBhdmFpbGFibGUKKyAqLwordm9pZAoraW50ZXJmYWNlX2RvdDNzdGF0c19nZXRfZXJyb3Jjb3VudGVycyAoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgY29uc3QgY2hhciAqbmFtZSkKK3sKKyAgICB1X2xvbmcgdmFsdWU7CisgICAgZG90M1N0YXRzVGFibGVfZGF0YSAqZGF0YSA9ICZyb3dyZXFfY3R4LT5kYXRhOworICAgIEZJTEUgKmRldjsKKyAgICBjb25zdCBjaGFyIE5FVERFVl9GSUxFW10gPSAiL3Byb2MvbmV0L2RldiI7CisKKyAgICBpZiAoX2RvdDNTdGF0c19uZXRsaW5rX2dldF9lcnJvcmNudHJzKHJvd3JlcV9jdHgsIG5hbWUpID09IDApCisgICAgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImludGVyZmFjZV9kb3Qzc3RhdHNfZ2V0X2Vycm9yY291bnRlcnM6IGdvdCBkYXRhIGZyb20gSUZMQV9TVEFUU1xuIikpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKChkZXYgPSBmb3BlbihORVRERVZfRklMRSwgInIiKSkgIT0gTlVMTCkKKyAgICB7CisgICAgICAgIGNoYXIgbGluZVsyNTZdLCAqbHAsICpuZXh0OworICAgICAgICBzaXplX3QgbmFtZWxlbiA9IHN0cmxlbihuYW1lKTsKKyAgICAgICAgdW5zaWduZWQgaW50IHZhbHVlOworICAgICAgICB1bnNpZ25lZCBpbnQgY29sdW1uOworCisgICAgICAgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGRldikgIT0gTlVMTCkKKyAgICAgICAgeworICAgICAgICAgICAgLyogICAgYnIwOjY4Mzk1NjM1IDEwMzgyMTQgICAgMCAgICAwICAgIDAgICAgIDAgICAgICAgICAgMCAgICA5Mzk0MTEgMjU2MjY2MDYgICA5MDcwOCAgICAwICAgIDAgICAgMCAgICAgMCAgICAgICAwICAgICAgICAgIDAgKi8KKyAgICAgICAgICAgIGxwID0gbGluZTsKKyAgICAgICAgICAgIHdoaWxlICgqbHAgPT0gJyAnIHx8ICpscCA9PSAnXHQnKQorICAgICAgICAgICAgICAgIGxwKys7CisgICAgICAgICAgICBpZiAoc3RybmNtcChscCwgbmFtZSwgbmFtZWxlbikgIT0gMCB8fCBscFtuYW1lbGVuXSAhPSAnOicpCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBscCArPSBuYW1lbGVuICsgMTsgICAgICAgICAvKiBTa2lwIG5hbWUgYW5kIGNvbG9uICovCisKKyAgICAgICAgICAgIGNvbHVtbiA9IDE7CisgICAgICAgICAgICB3aGlsZSAoMSkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IHN0cnRvdWwobHAsICZuZXh0LCAxMCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHQgPT0gbHApCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAvKiBubyBtb3JlIGRhdGEgKi8KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGNvbHVtbikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAzOiAKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRkNTRXJyb3JzID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0ZDU0VSUk9SU19GTEFHOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDEyOgorICAgICAgICAgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTREVGRVJSRURUUkFOU01JU1NJT05TX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgMTM6CisgICAgICAgICAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNUUkFOU01JVEVSUk9SU19GTEFHOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE1OgorICAgICAgICAgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNjoKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRnJhbWVUb29Mb25ncyA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgNToKKyAgICAgICAgICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDUkVDRUlWRUVSUk9SU19GTEFHOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIDE0OgorICAgICAgICAgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTU0lOR0xFQ09MTElTSU9ORlJBTUVTX0ZMQUc7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb2x1bW4rKzsKKyAgICAgICAgICAgICAgICBscCA9IG5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGZjbG9zZShkZXYpOworICAgIH0KKworICAgIGlmICghKHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgJiBDT0xVTU5fRE9UM1NUQVRTRkNTRVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJyeF9lcnJvcnMiLCAmdmFsdWUpKSB7CisgICAgICAgIGRhdGEtPmRvdDNTdGF0c0ZDU0Vycm9ycyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlNfRkxBRzsKKyAgICB9CisgICAgaWYgKCEocm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyAmIENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRykgJiYKKyAgICAgICAgICBnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInR4X2Ryb3BwZWQiLCAmdmFsdWUpKSB7CisgICAgICAgIGRhdGEtPmRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9ucyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRzsKKyAgICB9CisgICAgaWYgKCEocm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyAmIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJ0eF9maWZvX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9ycyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTX0ZMQUc7CisgICAgfQorICAgIGlmICghKHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgJiBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJ0eF9jYXJyaWVyX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzID0gdmFsdWU7CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0NBUlJJRVJTRU5TRUVSUk9SU19GTEFHOworICAgIH0KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzICYgQ09MVU1OX0RPVDNTVEFUU0ZSQU1FVE9PTE9OR1NfRkxBRykgJiYKKyAgICAgICAgICBnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInJ4X2ZyYW1lX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzRnJhbWVUb29Mb25ncyA9IHZhbHVlOworICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTX0ZMQUc7CisgICAgfQorICAgIGlmICghKHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgJiBDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNSRUNFSVZFRVJST1JTX0ZMQUcpICYmCisgICAgICAgICAgZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJyeF9maWZvX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKyAgICAgICAgZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzID0gdmFsdWU7CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDUkVDRUlWRUVSUk9SU19GTEFHOworICAgIH0KKworICAgIHJldHVybjsKK30KKworLyoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBjYW5ub3QgZ2V0IEVUSFRPT0xfRFJWSU5GTyBmYWlsZWQgCisgKiBAcmV0dmFsIC0yIG5zdGF0cyB6ZXJvIC0gbm8gc3RhdGlzdGNzIGF2YWlsYWJsZQorICogQHJldHZhbCAtMyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgaG9sZGluZyB0aGUgc3RhdGlzdGljcyBmYWlsZWQKKyAqIEByZXR2YWwgLTQgY2Fubm90IGdldCBFVEhUT09MX0dTVFJJTkdTIGluZm9ybWF0aW9uCisgKiBAcmV0dmFsIC01IGNhbm5vdCBnZXQgRVRIVE9PTF9HU1RBVFMgaW5mb3JtYXRpb24KKyAqIEByZXR2YWwgLTYgZnVuY3Rpb24gbm90IHN1cHBvcnRlZCBpZiBIQVZFX0xJTlVYX0VUSFRPT0xfSCBub3QgZGVmaW5lZAorICovCisKKworaW50IAoraW50ZXJmYWNlX2lvY3RsX2RvdDNzdGF0c19nZXQgKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsIGludCBmZCwgY29uc3QgY2hhciAqbmFtZSkgeworCisjaWZkZWYgSEFWRV9MSU5VWF9FVEhUT09MX0gKKyAgICBkb3QzU3RhdHNUYWJsZV9kYXRhICpkYXRhID0gJnJvd3JlcV9jdHgtPmRhdGE7CisgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyBkcml2ZXJfaW5mbzsKKyAgICBzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncyAqZXRoX3N0cmluZ3M7CisgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKmV0aF9zdGF0czsKKyAgICBzdHJ1Y3QgaWZyZXEgaWZyOyAKKyAgICB1bnNpZ25lZCBpbnQgbnN0YXRzLCBzaXplX3N0ciwgaTsKKyAgICBpbnQgZXJyOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbWVtc2V0KCZpZnIsIDAsIHNpemVvZihpZnIpKTsKKyAgICBzdHJsY3B5KGlmci5pZnJfbmFtZSwgbmFtZSwgc2l6ZW9mKGlmci5pZnJfbmFtZSkpOworCisgICAgbWVtc2V0KCZkcml2ZXJfaW5mbywgMCwgc2l6ZW9mIChkcml2ZXJfaW5mbykpOworICAgIGRyaXZlcl9pbmZvLmNtZCA9IEVUSFRPT0xfR0RSVklORk87CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikmZHJpdmVyX2luZm87CisKKyAgICBlcnIgPSBfZG90M1N0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0VUSFRPT0wsICZpZnIsIG5hbWUpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAiRVRIVE9PTF9HRVREUlZJTkZPIGZhaWxlZCBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBuc3RhdHMgPSBkcml2ZXJfaW5mby5uX3N0YXRzOworICAgIGlmIChuc3RhdHMgPCAxKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAibm8gc3RhdHMgYXZhaWxhYmxlIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIHNpemVfc3RyID0gbnN0YXRzICogRVRIX0dTVFJJTkdfTEVOOworCisgICAgZXRoX3N0cmluZ3MgPSBtYWxsb2Moc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX2dzdHJpbmdzKSk7CisgICAgaWYgKCFldGhfc3RyaW5ncykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9kb3QzU3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSBhdmFpbGFibGVcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQsIG5vIG1lbW9yeSBhdmFpbGFibGVcbiIpOworCisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisgICAgbWVtc2V0IChldGhfc3RyaW5ncywgMCwgKHNpemVfc3RyICsgc2l6ZW9mIChzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncykpKTsKKworICAgIGV0aF9zdGF0cyA9IG1hbGxvYyAoc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX3N0YXRzKSk7CisgICAgaWYgKCFldGhfc3RhdHMpIHsKKyAgICAgICAgZnJlZSAoZXRoX3N0cmluZ3MpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9kb3QzU3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSBhdmFpbGFibGVcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQsIG5vIG1lbW9yeSBhdmFpbGFibGVcbiIpOworCisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisgICAgIG1lbXNldCAoZXRoX3N0YXRzLCAwLCAoc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX3N0YXRzKSkpOworCisgICAgZXRoX3N0cmluZ3MtPmNtZCA9IEVUSFRPT0xfR1NUUklOR1M7CisgICAgZXRoX3N0cmluZ3MtPnN0cmluZ19zZXQgPSBFVEhfU1NfU1RBVFM7CisgICAgZXRoX3N0cmluZ3MtPmxlbiA9IG5zdGF0czsKKyAgICBpZnIuaWZyX2RhdGEgPSAoY2hhciAqKSBldGhfc3RyaW5nczsKKyAgICBlcnIgPSBfZG90M1N0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0VUSFRPT0wsICZpZnIsIG5hbWUpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGdldCBzdGF0cyBzdHJpbmdzIGluZm9ybWF0aW9uIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2RvdDNTdGF0c19nZXQsIGNhbm5vdCBnZXQgc3RhdHMgc3RyaW5ncyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKTsKKworICAgICAgICBmcmVlKGV0aF9zdHJpbmdzKTsKKyAgICAgICAgZnJlZShldGhfc3RhdHMpOworICAgICAgICByZXR1cm4gLTQ7CisgICAgfQorCisgICAgZXRoX3N0YXRzLT5jbWQgPSBFVEhUT09MX0dTVEFUUzsKKyAgICBldGhfc3RhdHMtPm5fc3RhdHMgPSBuc3RhdHM7CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikgZXRoX3N0YXRzOworICAgIGVyciA9IF9kb3QzU3RhdHNfaW9jdGxfZ2V0KGZkLCBTSU9DRVRIVE9PTCwgJmlmciwgbmFtZSk7CisgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IHN0YXRzIHN0cmluZ3MgaW5mb3JtYXRpb24gZm9yIGludGVyZmFjZSB8JXN8IFxuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSxpbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2dldCwgY2Fubm90IGdldCBzdGF0cyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKTsKKworICAgICAgICBmcmVlKGV0aF9zdHJpbmdzKTsKKyAgICAgICAgZnJlZShldGhfc3RhdHMpOworICAgICAgICByZXR1cm4gLTU7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgaSA8IG5zdGF0czsgaSsrKSB7CisgICAgICAgIGNoYXIgc1tFVEhfR1NUUklOR19MRU5dOworCisgICAgICAgIHN0cmxjcHkocywgKGNvbnN0IGNoYXIgKikgJmV0aF9zdHJpbmdzLT5kYXRhW2kgKiBFVEhfR1NUUklOR19MRU5dLAorICAgICAgICAgICAgICAgIHNpemVvZihzKSk7CisgICAgCisgICAgICAgIGlmIChET1QzU1RBVFNBTElHTk1FTlRFUlJPUlMocykpIHsKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0FsaWdubWVudEVycm9ycyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQUxJR05NRU5URVJST1JTX0ZMQUc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRE9UM1NUQVRTTVVMVElQTEVDT0xMSVNJT05GUkFNRVMocykpIHsKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzID0gKHVfbG9uZylldGhfc3RhdHMtPmRhdGFbaV07CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNNVUxUSVBMRUNPTExJU0lPTkZSQU1FU19GTEFHOworICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKERPVDNTVEFUU0xBVEVDT0xMSVNJT05TKHMpKSB7CisgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNMYXRlQ29sbGlzaW9ucyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTTEFURUNPTExJU0lPTlNfRkxBRzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChET1QzU1RBVFNTSU5HTEVDT0xMSVNJT05GUkFNRVMocykpIHsKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lcyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTU0lOR0xFQ09MTElTSU9ORlJBTUVTX0ZMQUc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoRE9UM1NUQVRTRVhDRVNTSVZFQ09MTElTSU9OUyhzKSkgeworICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyA9ICh1X2xvbmcpZXRoX3N0YXRzLT5kYXRhW2ldOworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRVhDRVNTSVZFQ09MTElTSU9OU19GTEFHOworICAgICAgICB9CisgICAgfQorCisgICAgZnJlZShldGhfc3RyaW5ncyk7CisgICAgZnJlZShldGhfc3RhdHMpOworCisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHJldHVybiAtNjsKKyNlbmRpZgorfQorCisKKy8qCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgRVRIVE9PTF9HU0VUIGZhaWxlZAorICogQHJldHZhbCAtMiBmdW5jdGlvbiBub3Qgc3VwcG9ydGVkIGlmIEhBVkVfTElOVVhfRVRIVE9PTF9IIG5vdCBkZWZpbmVkCisgKi8KKworaW50CitpbnRlcmZhY2VfaW9jdGxfZG90M3N0YXRzX2R1cGxleF9nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKSB7CisKKyNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAorICAgIGRvdDNTdGF0c1RhYmxlX2RhdGEgKmRhdGEgPSAmcm93cmVxX2N0eC0+ZGF0YTsKKyAgICBzdHJ1Y3QgZXRodG9vbF9jbWQgZWRhdGE7CisgICAgc3RydWN0IGlmcmVxIGlmcjsKKyAgICBpbnQgZXJyOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2R1cGxleF9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG1lbXNldCgmZWRhdGEsIDAsIHNpemVvZiAoZWRhdGEpKTsKKyAgICBtZW1zZXQoJmlmciwgMCwgc2l6ZW9mIChpZnIpKTsKKyAgICBlZGF0YS5jbWQgPSBFVEhUT09MX0dTRVQ7CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikmZWRhdGE7CisKKyAgICBlcnIgPSBfZG90M1N0YXRzX2lvY3RsX2dldCAoZmQsIFNJT0NFVEhUT09MLCAmaWZyLCBuYW1lKTsKKyAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9kb3QzU3RhdHNfZHVwbGV4X2dldCIsCisgICAgICAgICAgICAgICAgICAgICJFVEhUT09MX0dTRVQgZmFpbGVkXG4iKSk7CisKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICBpZiAoZXJyID09IDApIHsKKyAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZMQUc7CisgICAgICAgIHN3aXRjaCAoZWRhdGEuZHVwbGV4KSB7CisgICAgICAgIGNhc2UgRFVQTEVYX0hBTEY6CisgICAgICAgICAgICBkYXRhLT5kb3QzU3RhdHNEdXBsZXhTdGF0dXMgPSAodV9sb25nKSBET1QzU1RBVFNEVVBMRVhTVEFUVVNfSEFMRkRVUExFWDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIERVUExFWF9GVUxMOgorICAgICAgICAgICAgZGF0YS0+ZG90M1N0YXRzRHVwbGV4U3RhdHVzID0gKHVfbG9uZykgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZVTExEVVBMRVg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGRhdGEtPmRvdDNTdGF0c0R1cGxleFN0YXR1cyA9ICh1X2xvbmcpIERPVDNTVEFUU0RVUExFWFNUQVRVU19VTktOT1dOOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH07CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZG90M1N0YXRzX2R1cGxleF9nZXQiLAorICAgICAgICAgICAgICAgICJFVEhUT09MX0dTRVQgcHJvY2Vzc2VkXG4iKSk7CisgICAgcmV0dXJuIGVycjsKKyNlbHNlCisgICAgcmV0dXJuIC0yOworI2VuZGlmCit9CisKKworLyoKKyAqIE5BTUU6IGludGVyZmFjZV9zeXNjbGFzc25ldF9kb3Qzc3RhdHNfZ2V0CisgKiBQVVJQT1NFOiBUbyBnZXQgZXRoZXJuZXQgc3RhdGlzdGljcyBmcm9tIC9zeXMvY2xhc3MvbmV0Ly4uLgorICogQVJHVU1FTlRTOiByb3dyZXFfY3R4OiB3aGVyZSB0byBzdG9yZSB0aGUgdmFsdWUocykKKyAqCW5hbWU6IGludGVyZmFjZSBuYW1lCisgKiBSRVRVUk5TOiBub3RoaW5nLiBmaWVsZHMgbm90IHNldCBpZiBkYXRhIG5vdCBhdmFpbGFibGUKKyAqLwordm9pZAoraW50ZXJmYWNlX3N5c2NsYXNzbmV0X2RvdDNzdGF0c19nZXQgKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsIGNvbnN0IGNoYXIgKm5hbWUpCit7CisgICAgdV9sb25nIHZhbHVlOworICAgIGRvdDNTdGF0c1RhYmxlX2RhdGEgKmRhdGEgPSAmcm93cmVxX2N0eC0+ZGF0YTsKKworICAgIGlmIChnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInJ4X2Vycm9ycyIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNGQ1NFcnJvcnMgPSB2YWx1ZTsKKwlyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlNfRkxBRzsKKyAgICB9CisgICAgaWYgKGdldHVsb25nZnJvbXN5c2NsYXNzbmV0c3RhdGlzdGljcyhuYW1lLCAidHhfZHJvcHBlZCIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgPSB2YWx1ZTsKKwlyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRzsKKyAgICB9CisgICAgaWYgKGdldHVsb25nZnJvbXN5c2NsYXNzbmV0c3RhdGlzdGljcyhuYW1lLCAidHhfZmlmb19lcnJvcnMiLCAmdmFsdWUpKSB7CisJZGF0YS0+ZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9ycyA9IHZhbHVlOworCXJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDVFJBTlNNSVRFUlJPUlNfRkxBRzsKKyAgICB9CisgICAgaWYgKGdldHVsb25nZnJvbXN5c2NsYXNzbmV0c3RhdGlzdGljcyhuYW1lLCAidHhfY2Fycmllcl9lcnJvcnMiLCAmdmFsdWUpKSB7CisJZGF0YS0+ZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzID0gdmFsdWU7CisJcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUc7CisgICAgfQorICAgIGlmIChnZXR1bG9uZ2Zyb21zeXNjbGFzc25ldHN0YXRpc3RpY3MobmFtZSwgInJ4X2ZyYW1lX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNGcmFtZVRvb0xvbmdzID0gdmFsdWU7CisJcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8PSBDT0xVTU5fRE9UM1NUQVRTRlJBTUVUT09MT05HU19GTEFHOworICAgIH0KKyAgICBpZiAoZ2V0dWxvbmdmcm9tc3lzY2xhc3NuZXRzdGF0aXN0aWNzKG5hbWUsICJyeF9maWZvX2Vycm9ycyIsICZ2YWx1ZSkpIHsKKwlkYXRhLT5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMgPSB2YWx1ZTsKKwlyb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9IENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1JFQ0VJVkVFUlJPUlNfRkxBRzsKKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKKworCisvKiBpb2N0bCB3cmFwcGVyCisgKgorICogQHBhcmFtICAgICAgZmQgOiBzb2NrZXQgZmQgdG8gdXNlIHcvaW9jdGwsIG9yIC0xIHRvIG9wZW4vY2xvc2Ugb25lCisgKiBAcGFyYW0gIHdoaWNoCisgKiBAcGFyYW0gaWZycQorICogcGFyYW0gaWZlbnRyeSA6IGlmZW50cnkgdG8gdXBkYXRlCisgKiBAcGFyYW0gbmFtZQorICoKKyAqIEByZXR2YWwgIDAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIDogaW52YWxpZCBwYXJhbWV0ZXJzCisgKiBAcmV0dmFsIC0yIDogY291bGRuJ3QgY3JlYXRlIHNvY2tldAorICogQHJldHZhbCAtMyA6IGlvY3RsIGNhbGwgZmFpbGVkCisgKi8KK2ludAorX2RvdDNTdGF0c19pb2N0bF9nZXQoaW50IGZkLCBpbnQgd2hpY2gsIHN0cnVjdCBpZnJlcSAqaWZycSwgY29uc3QgY2hhciogbmFtZSkKK3sKKyAgICBpbnQgb3VyZmQgPSAtMSwgcmMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppb2N0bCIsICJfZG90M1N0YXRzX2lvY3RsX2dldFxuIikpOworCisgICAgLyoKKyAgICAgKiBzYW5pdHkgY2hlY2tzCisgICAgICovCisgICAgaWYoTlVMTCA9PSBuYW1lKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiX2RvdDNTdGF0c19pb2N0bF9nZXQgaW52YWxpZCBpZm5hbWUgJyVzJ1xuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppb2N0bCwgX2RvdDNTdGF0c19pb2N0bF9nZXQgZXJyb3Igb24gaW50ZXJmYWNlICclcydcbiIsIG5hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjcmVhdGUgc29ja2V0IGZvciBpb2N0bHMKKyAgICAgKi8KKyAgICBpZihmZCA8IDApIHsKKyAgICAgICAgZmQgPSBvdXJmZCA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCAwKTsKKyAgICAgICAgaWYob3VyZmQgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlOmlvY3RsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNfaW9jdGxfZ2V0IGNvdWxkbid0IGNyZWF0ZSBhIHNvY2tldFxuIiwgbmFtZSkpOworICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGU6aW9jdGwsIF9kb3QzU3RhdHNfaW9jdGxfZ2V0IGVycm9yIG9uIGludGVyZmFjZSAnJXMnXG4iLCBuYW1lKTsKKworICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICB9CisgICAgfQorCisgICAgc3RybGNweShpZnJxLT5pZnJfbmFtZSwgbmFtZSwgc2l6ZW9mKGlmcnEtPmlmcl9uYW1lKSk7CisgICAgcmMgPSBpb2N0bChmZCwgd2hpY2gsIGlmcnEpOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZTppb2N0bCIsCisgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNfaW9jdGxfZ2V0IGlvY3RsICVkIHJldHVybmVkICVkXG4iLCB3aGljaCwgcmMpKTsKKyAgICAgICAgcmMgPSAtMzsKKyAgICB9CisKKyAgICBpZihvdXJmZCA+PSAwKQorICAgICAgICBjbG9zZShvdXJmZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNGY3YmYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlLmgKQEAgLTAsMCArMSwxMSBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kYXRhX2FjY2Vzcy9kb3Qzc3RhdHMpCitjb25maWdfcmVxdWlyZShldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlKQorY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldCkKK2NvbmZpZ19yZXF1aXJlKGV0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9zZXQpCitjb25maWdfcmVxdWlyZShldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzKQorY29uZmlnX3JlcXVpcmUoZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UpCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODYzODBhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZS5jCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoqIFxwYWdlIE1GRCBoZWxwZXIgZm9yIGRvdDNTdGF0c1RhYmxlCisgKgorICogXHNlY3Rpb24gaW50cm8gSW50cm9kdWN0aW9uCisgKiBJbnRyb2R1Y3RvcnkgdGV4dC4KKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorCitvaWQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfb2lkW10gPSB7IERPVDNTVEFUU1RBQkxFX09JRCB9OworaW50ICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChkb3QzU3RhdHNUYWJsZV9vaWQpOworCitkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0Oworc3RhdGljIGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0X3A7CisKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX2RvdDNTdGF0c1RhYmxlKHZvaWQpOworCisKKy8qKgorICogSW5pdGlhbGl6ZXMgdGhlIGRvdDNTdGF0c1RhYmxlIG1vZHVsZQorICovCit2b2lkCitpbml0X2RvdDNTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6aW5pdF9kb3QzU3RhdHNUYWJsZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDA6bzogUGVyZm9ybSBkb3QzU3RhdHNUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJkb3QzU3RhdHNUYWJsZSIpKQorICAgICAgICBpbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlKCk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdF9kb3QzU3RhdHNUYWJsZSAqLworCisvKioKKyAqIFNodXQtZG93biB0aGUgZG90M1N0YXRzVGFibGUgbW9kdWxlIChhZ2VudCBpcyBleGl0aW5nKQorICovCit2b2lkCitzaHV0ZG93bl9kb3QzU3RhdHNUYWJsZSh2b2lkKQoreworICAgIGlmIChzaG91bGRfaW5pdCgiZG90M1N0YXRzVGFibGUiKSkKKyAgICAgICAgc2h1dGRvd25fdGFibGVfZG90M1N0YXRzVGFibGUoKTsKKworfQorCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGRvdDNTdGF0c1RhYmxlIAorICogICAgKERlZmluZSBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQpCisgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfZG90M1N0YXRzVGFibGUodm9pZCkKK3sKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTppbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAxOm86IFBlcmZvcm0gZG90M1N0YXRzVGFibGUgb25lLXRpbWUgdGFibGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIFRPRE86MzAyOm86IHwtPkluaXRpYWxpemUgZG90M1N0YXRzVGFibGUgdXNlciBjb250ZXh0CisgICAgICogaWYgeW91J2QgbGlrZSB0byBwYXNzIGluIGEgcG9pbnRlciB0byBzb21lIGRhdGEgZm9yIHRoaXMKKyAgICAgKiB0YWJsZSwgYWxsb2NhdGUgb3Igc2V0IGl0IHVwIGhlcmUuCisgICAgICovCisgICAgLyoKKyAgICAgKiBhIG5ldHNubXBfZGF0YV9saXN0IGlzIGEgc2ltcGxlIHdheSB0byBzdG9yZSB2b2lkIHBvaW50ZXJzLiBBIHNpbXBsZQorICAgICAqIHN0cmluZyB0b2tlbiBpcyB1c2VkIHRvIGFkZCwgZmluZCBvciByZW1vdmUgcG9pbnRlcnMuCisgICAgICovCisgICAgZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0X3AKKwk9IG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCgiZG90M1N0YXRzVGFibGUiLCBOVUxMLCBOVUxMKTsKKworICAgIC8qCisgICAgICogTm8gc3VwcG9ydCBmb3IgYW55IGZsYWdzIHlldCwgYnV0IGluIHRoZSBmdXR1cmUgeW91IHdvdWxkCisgICAgICogc2V0IGFueSBmbGFncyBoZXJlLgorICAgICAqLworICAgIGZsYWdzID0gMDsKKworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIF9kb3QzU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZShkb3QzU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCwgZmxhZ3MpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0aWFsaXplX3RhYmxlX2RvdDNTdGF0c1RhYmxlICovCisKKy8qKgorICogU2h1dGRvd24gdGhlIHRhYmxlIGRvdDNTdGF0c1RhYmxlIAorICovCit2b2lkCitzaHV0ZG93bl90YWJsZV9kb3QzU3RhdHNUYWJsZSh2b2lkKQoreworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2Ugc2h1dGRvd24gY29kZQorICAgICAqLworICAgIF9kb3QzU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZG90M1N0YXRzVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGRvdDNTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBkb3QzU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCA9IE5VTEw7Cit9CisKKy8qKgorICogZXh0cmEgY29udGV4dCBpbml0aWFsaXphdGlvbiAoZWcgZGVmYXVsdCB2YWx1ZXMpCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggICAgOiByb3cgcmVxdWVzdCBjb250ZXh0CisgKiBAcGFyYW0gdXNlcl9pbml0X2N0eCA6IHZvaWQgcG9pbnRlciBmb3IgdXNlciAocGFyYW1ldGVyIHRvIHJvd3JlcV9jdHhfYWxsb2NhdGUpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgOiBubyBlcnJvcnMKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgIDogZXJyb3IgKGNvbnRleHQgYWxsb2NhdGUgd2lsbCBmYWlsKQorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMTA6bzogfC0+IFBlcmZvcm0gZXh0cmEgZG90M1N0YXRzVGFibGUgcm93cmVxIGluaXRpYWxpemF0aW9uLiAoZWcgREVGVkFMUykKKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0ICovCisKKy8qKgorICogZXh0cmEgY29udGV4dCBjbGVhbnVwCisgKgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBkb3QzU3RhdHNUYWJsZSByb3dyZXEgY2xlYW51cC4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwICovCisKKy8qKgorICogcHJlLXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjUxMDpvOiBQZXJmb3JtIGRvdDNTdGF0c1RhYmxlIHByZS1yZXF1ZXN0IGFjdGlvbnMuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogcG9zdC1yZXF1ZXN0IGNhbGxiYWNrCisgKgorICogTm90ZToKKyAqICAgTmV3IHJvd3MgaGF2ZSBiZWVuIGluc2VydGVkIGludG8gdGhlIGNvbnRhaW5lciwgYW5kCisgKiAgIGRlbGV0ZWQgcm93cyBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIgYW5kCisgKiAgIHJlbGVhc2VkLgorICoKKyAqIEBwYXJhbSB1c2VyX2NvbnRleHQKKyAqIEBwYXJhbSByYyA6IE1GRF9TVUNDRVNTIGlmIGFsbCByZXF1ZXN0cyBzdWNjZWVkZWQKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBvdGhlciBlcnJvciAoaWdub3JlZCkKKyAqLworaW50Citkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByYykKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBkb3QzU3RhdHNUYWJsZSBwb3N0LXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKworLyoqIEB7ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3MTNmYwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGUuaApAQCAtMCwwICsxLDI3MSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBET1QzU1RBVFNUQUJMRV9ICisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBtaXNjIG1pc2M6IE1pc2NlbGxhbmVvdXMgcm91dGluZXMKKyAqCisgKiBAeworICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisKKyAgICAvKgorICAgICAqIE9JRCBhbmQgY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgZG90M1N0YXRzVGFibGUgCisgICAgICovCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfb2lkcy5oIgorCisgICAgLyoKKyAgICAgKiBlbnVtIGRlZmluaW9ucyAKKyAgICAgKi8KKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZV9lbnVtcy5oIgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfZG90M1N0YXRzVGFibGUodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIHNodXRkb3duX2RvdDNTdGF0c1RhYmxlKHZvaWQpOworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZG90M1N0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c1RhYmxlIGlzIHN1YmlkIDIgb2YgZG90My4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAgICAgKi8KKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBXaGVuIHlvdSByZWdpc3RlciB5b3VyIG1pYiwgeW91IGdldCB0byBwcm92aWRlIGEgZ2VuZXJpYworICAgICAqIHBvaW50ZXIgdGhhdCB3aWxsIGJlIHBhc3NlZCBiYWNrIHRvIHlvdSBmb3IgbW9zdCBvZiB0aGUKKyAgICAgKiBmdW5jdGlvbnMgY2FsbHMuCisgICAgICoKKyAgICAgKiBUT0RPOjEwMDpyOiBSZXZpZXcgYWxsIGNvbnRleHQgc3RydWN0dXJlcworICAgICAqLworICAgIC8qCisgICAgICogVE9ETzoxMDE6bzogfC0+IFJldmlldyBkb3QzU3RhdHNUYWJsZSByZWdpc3RyYXRpb24gY29udGV4dC4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfZGF0YV9saXN0IGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbjsKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBUT0RPOjExMDpyOiB8LT4gUmV2aWV3IGRvdDNTdGF0c1RhYmxlIGRhdGEgY29udGV4dCBzdHJ1Y3R1cmUuCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGRhdGEgZm9yIGRvdDNTdGF0c1RhYmxlLgorICAgICAqLworICAgIC8qCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgc3RvcmFnZSBmb3IgYWxsIHRoZSBjb2x1bW5zIGRlZmluZWQgaW4gdGhlCisgICAgICogZG90M1N0YXRzVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZG90M1N0YXRzVGFibGVfZGF0YV9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnMoMikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0FsaWdubWVudEVycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNGQ1NFcnJvcnMoMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0ZDU0Vycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMoNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcyg1KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU1FFVGVzdEVycm9ycyg2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzU1FFVGVzdEVycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMoNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNMYXRlQ29sbGlzaW9ucyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yczsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRnJhbWVUb29Mb25ncygxMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3M7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzKDE2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCgxNykvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIGRvdDNTdGF0c0V0aGVyQ2hpcFNldFsxMjhdOworICAgICAgICBzaXplX3QgICAgICAgICAgZG90M1N0YXRzRXRoZXJDaGlwU2V0X2xlbjsgICAgICAvKiAjIG9mIG9pZCBlbGVtZW50cywgbm90IGJ5dGVzICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU3ltYm9sRXJyb3JzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZG90M1N0YXRzU3ltYm9sRXJyb3JzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0R1cGxleFN0YXR1cygxOSkvSU5URUdFUi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBkb3QzU3RhdHNEdXBsZXhTdGF0dXM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5KDIwKS9UcnV0aFZhbHVlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL3cvRS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eTsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cygyMSkvSU5URUdFUi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1czsKKworICAgIH0gZG90M1N0YXRzVGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGRvdDNTdGF0c1RhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGRvdDNTdGF0c1RhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGRvdDNTdGF0c1RhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9ICisgICAgICAgICAqLworICAgICAgICBsb25nICAgICAgICAgICAgZG90M1N0YXRzSW5kZXg7CisKKworICAgIH0gZG90M1N0YXRzVGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBkb3QzU3RhdHNUYWJsZSBtYXggaW5kZXggbGVuZ3RoLgorICAgICAqIElmIHlvdSBLTk9XIHRoYXQgeW91ciBpbmRleGVzIHdpbGwgbmV2ZXIgZXhjZWVkIGEgY2VydGFpbgorICAgICAqIGxlbmd0aCwgdXBkYXRlIHRoaXMgbWFjcm8gdG8gdGhhdCBsZW5ndGguCisgICAgICovCisjZGVmaW5lIE1BWF9kb3QzU3RhdHNUYWJsZV9JRFhfTEVOICAgICAyNTUKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMzA6bzogfC0+IFJldmlldyBkb3QzU3RhdHNUYWJsZSBSb3cgcmVxdWVzdCAocm93cmVxKSBjb250ZXh0LgorICAgICAqIFdoZW4geW91ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgeW91IHdpbGwgYmUgcGFzc2VkIGEKKyAgICAgKiBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9zIHsKKworICAgIC8qKiB0aGlzIG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lciBjb21wYXJlIHRvIHdvcmsgKi8KKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9kb3QzU3RhdHNUYWJsZV9JRFhfTEVOXTsKKworICAgICAgICBkb3QzU3RhdHNUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBkb3QzU3RhdHNUYWJsZV9kYXRhIGRhdGE7CisgICAgICAgIHVuc2lnbmVkIGludCAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzOyAgICAvKiBmbGFncyBmb3IgZXhpc3RlbmNlICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZmxhZ3MgcGVyIHJvdy4gQ3VycmVudGx5LCB0aGUgZmlyc3QgKGxvd2VyKSA4IGJpdHMgYXJlIHJlc2VydmVkCisgICAgICAgICAqIGZvciB0aGUgdXNlci4gU2VlIG1mZC5oIGZvciBvdGhlciBmbGFncy4KKyAgICAgICAgICovCisgICAgICAgIHVfaW50ICAgICAgICAgICByb3dyZXFfZmxhZ3M7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVE9ETzoxMzE6bzogfCAgIHwtPiBBZGQgdXNlZnVsIGRhdGEgdG8gZG90M1N0YXRzVGFibGUgcm93cmVxIGNvbnRleHQuCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICpkb3QzU3RhdHNUYWJsZV9kYXRhX2xpc3Q7CisKKyAgICB9IGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHg7CisKKyAgICB0eXBlZGVmIHN0cnVjdCBkb3QzU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eF9zIHsKKyAgICAgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICB9IGRvdDNTdGF0c1RhYmxlX3JlZl9yb3dyZXFfY3R4OworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gcHJvdG90eXBlcworICAgICAqLworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2VyX2NvbnRleHQpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVzZXJfY29udGV4dCwgaW50IHJjKTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LCB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKworICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmRvdDNTdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChkb3QzU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworCisgICAgZXh0ZXJuIG9pZCAgICAgIGRvdDNTdGF0c1RhYmxlX29pZFtdOworICAgIGV4dGVybiBpbnQgICAgICBkb3QzU3RhdHNUYWJsZV9vaWRfc2l6ZTsKKworCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5oIgorI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmgiCisKKyAgICAvKgorICAgICAqIERVTU1ZIG1hcmtlcnMsIGlnbm9yZQorICAgICAqCisgICAgICogVE9ETzowOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjI5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzozOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86NDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9UM1NUQVRTVEFCTEVfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk5MmFiOQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMCwwICsxLDQxNyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlLmgiCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKworI2lmIGRlZmluZWQobGludXgpCisjaW5jbHVkZSAiaW9jdGxfaW1wX2NvbW1vbi5oIgorI2VuZGlmCisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZG90M1N0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNUYWJsZSBpcyBzdWJpZCAyIG9mIGRvdDMuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIsIGxlbmd0aDogOQorICovCisKKy8qKgorICogaW5pdGlhbGl6YXRpb24gZm9yIGRvdDNTdGF0c1RhYmxlIGRhdGEgYWNjZXNzCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvCisgKiBhbGxvY2F0ZSBhbnkgcmVzb3VyY2VzIHlvdSBuZWVkIGZvciB0aGUgZGF0YSB0YWJsZS4KKyAqCisgKiBAcGFyYW0gZG90M1N0YXRzVGFibGVfcmVnCisgKiAgICAgICAgUG9pbnRlciB0byBkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiB1bnJlY292ZXJhYmxlIGVycm9yLgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luaXRfZGF0YShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiBkb3QzU3RhdHNUYWJsZV9yZWcpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5pdF9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgZG90M1N0YXRzVGFibGUgZGF0YS4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfaW5pdF9kYXRhICovCisKKy8qKgorICogY29udGFpbmVyIG92ZXJ2aWV3CisgKgorICovCisKKy8qKgorICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKKyAqICAgICAgICBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyLCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gcmV0dXJuIGl0CisgKiAgICAgICAgdG8gdGhlIE1GRCBoZWxwZXIuIElmIHNldCB0byBOVUxMLCB0aGUgTUZEIGhlbHBlciB3aWxsCisgKiAgICAgICAgYWxsb2NhdGUgYSBjb250YWluZXIgZm9yIHlvdS4KKyAqIEBwYXJhbSAgY2FjaGUgQSBwb2ludGVyIHRvIGEgY2FjaGUgc3RydWN0dXJlLiBZb3UgY2FuIHNldCB0aGUgdGltZW91dAorICogICAgICAgICBhbmQgb3RoZXIgY2FjaGUgZmxhZ3MgdXNpbmcgdGhpcyBwb2ludGVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzdGFydHVwIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4gSWYgbm8gY3VzdG9tCisgKiAgY29udGFpbmVyIGlzIGFsbG9jYXRlZCwgdGhlIE1GRCBjb2RlIHdpbGwgY3JlYXRlIG9uZSBmb3IgeW91ci4KKyAqCisgKiAgVGhpcyBpcyBhbHNvIHRoZSBwbGFjZSB0byBzZXQgdXAgY2FjaGUgYmVoYXZpb3IuIFRoZSBkZWZhdWx0LCB0bworICogIHNpbXBseSBzZXQgdGhlIGNhY2hlIHRpbWVvdXQsIHdpbGwgd29yayB3ZWxsIHdpdGggdGhlIGRlZmF1bHQKKyAqICBjb250YWluZXIuIElmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gY29udGFpbmVyLCB5b3UgbWF5IHdhbnQgdG8KKyAqICBsb29rIGF0IHRoZSBjYWNoZSBoZWxwZXIgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUgYXJlIGFueQorICogIGZsYWdzIHlvdSB3YW50IHRvIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgaW5pdGlhbGl6YXRpb24gbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIG9wZW5pbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgd2lsbCBzdXBwbHkgdGhlIGRhdGEsIG9wZW5pbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lciAqKiBjb250YWluZXJfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjb250YWluZXIgcGFyYW0gdG8gZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBGb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gdXNlIGEgY3VzdG9tIGNvbnRhaW5lci4gSWYgeW91CisgICAgICogZG8gbm90IGNyZWF0ZSBvbmUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdS4KKyAgICAgKi8KKyAgICAqY29udGFpbmVyX3B0cl9wdHIgPSBOVUxMOworCisgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjYWNoZSBwYXJhbSB0byBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBkb3QzU3RhdHNUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgorICAgICAqCisgICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQorICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCisgICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKKyAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgorICAgICAqLworICAgIGNhY2hlLT50aW1lb3V0ID0gRE9UM1NUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVDsgICAgICAvKiBzZWNvbmRzICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogY29udGFpbmVyIHNodXRkb3duCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHIgQSBwb2ludGVyIHRvIHRoZSBjb250YWluZXIuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHNodXRkb3duIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKCkuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGNsZWFudXAgbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgc3VwcGxpZWQgdGhlIGRhdGEsIGNsb3NpbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXJfcHRyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGRvdDNTdGF0c1RhYmxlIGRhdGEgbG9hZAorICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgY2FsbGVkIGJ5IHRoZSBjYWNoZSBoZWxwZXIgdG8gbG9hZAorICogdGhlIGNvbnRhaW5lciBhZ2FpbiAoYWZ0ZXIgdGhlIGNvbnRhaW5lciBmcmVlIGZ1bmN0aW9uIGhhcyBiZWVuCisgKiBjYWxsZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgY29udGVudHMpLgorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHRvIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBpbnNlcnRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFIDogQ2FuJ3QgYWNjZXNzIGRhdGEgc291cmNlCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2FkIHRoZSBpbmRleChlcykgKGFuZCBkYXRhLCBvcHRpb25hbGx5KQorICogIGZvciB0aGUgZXZlcnkgcm93IGluIHRoZSBkYXRhIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgV2hpbGUgbG9hZGluZyB0aGUgZGF0YSwgdGhlIG9ubHkgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSBpbmRleGVzLgorICogIElmIGFjY2VzcyB0byB5b3VyIGRhdGEgaXMgY2hlYXAvZmFzdCAoZS5nLiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gYQorICogIHN0cnVjdHVyZSBpbiBtZW1vcnkpLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHVwZGF0ZSB0aGUgZGF0YSBoZXJlLgorICogIElmLCBob3dldmVyLCB0aGUgYWNjZXNzaW5nIHRoZSBkYXRhIGludm92bGVzIG1vcmUgd29yayAoZS5nLiBwYXJzaW5nCisgKiAgc29tZSBvdGhlciBleGlzdGluZyBkYXRhLCBvciBwZWZvcm1pbmcgY2FsY3VsYXRpb25zIHRvIGRlcml2ZSB0aGUgZGF0YSksCisgKiAgdGhlbiB5b3UgY2FuIGxpbWl0IHlvdXJzZWxmIHRvIHNldHRpbmcgdGhlIGluZGV4ZXMgYW5kIHNhdmluZyBhbnkKKyAqICBpbmZvcm1hdGlvbiB5b3Ugd2lsbCBuZWVkIGxhdGVyLiBUaGVuIHVzZSB0aGUgc2F2ZWQgaW5mb3JtYXRpb24gaW4KKyAqICBkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcCgpIGZvciBwb3B1bGF0aW5nIGRhdGEuCisgKgorICogQG5vdGUKKyAqICBJZiB5b3UgbmVlZCBjb25zaXN0ZW5jeSBiZXR3ZWVuIHJvd3MgKGxpa2UgeW91IHdhbnQgc3RhdGlzdGljcworICogIGZvciBlYWNoIHJvdyB0byBiZSBmcm9tIHRoZSBzYW1lIHRpbWUgZnJhbWUpLCB5b3Ugc2hvdWxkIHNldCBhbGwKKyAqICBkYXRhIGhlcmUuCisgKgorICovCisKKy8qCisgKgorICogQHJldHZhbCAgTUZEX1NVQ0NFU1Mgc3VjY2VzcworICogQHJldHZhbCAgTUZEX0VSUk9SIGNvdWxkIG5vdCBnZXQgdGhlIGludGVyZmFjZSBuYW1lcyAKKyAqIEByZXR2YWwgIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRSBmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5CisgKiBAcmV0dmFsICAtMiBjb3VsZCBub3Qgb3BlbiBhIHNvY2tldAorICovCisKKworaW50Citkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIHNpemVfdCAgICAgICAgICBjb3VudCA9IDA7CisgICAgaW50ICAgICAgICAgICAgIGZkOworI2lmIGRlZmluZWQobGludXgpCisgICAgbG9uZyAgICAgICAgICAgIGRvdDNTdGF0c0luZGV4OworICAgIGludCAgICAgICAgICAgICByYyA9IDAsIHJldHZhbCA9IDA7CisgICAgc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkID0gTlVMTCwgKnAgPSBOVUxMOworI2VuZGlmCisgICAgCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKyAgICAgIAorICAgIC8qCisgICAgICogVE9ETzozNTI6TTogfCAgIHwtPiBzZXQgaW5kZXhlcyBpbiBuZXcgZG90M1N0YXRzVGFibGUgcm93cmVxIGNvbnRleHQuCisgICAgICogZGF0YSBjb250ZXh0IHdpbGwgYmUgc2V0IGZyb20gdGhlIHBhcmFtICh1bmxlc3MgTlVMTCwKKyAgICAgKiBpbiB3aGljaCBjYXNlIGEgbmV3IGRhdGEgY29udGV4dCB3aWxsIGJlIGFsbG9jYXRlZCkKKyAgICAgKi8KKyAgICAKKyAgICAvKgorICAgICAqIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBpbmRleCB2YWx1ZXMKKyAgICAgKi8KKworICAgIC8qCisgICAgICogZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSAorICAgICAqLworCisKKworICAgIC8qCisgICAgICogY3JlYXRlIHNvY2tldCBmb3IgaW9jdGxzCisgICAgICovCisgICAgCisgICAgZmQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgaWYoZmQgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgY3JlYXRlIHNvY2tldFxuIik7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGdldCB0aGUgaW50ZXJmYWNlIG5hbWVzIG9mIHRoZSBkZXZpY2VzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSwgaW4gY2FzZSBvZiBmYWlsdXJlIHJldHZhbCBzdWdnZXN0cyB0aGUgcmVzb24gZm9yIGZhaWx1cmUKKyAgICAgKiBhbmQgbGlzdF9oZWFkIGNvbnRhaW5zIG51bGwKKyAgICAgKi8KKworI2lmIGRlZmluZWQobGludXgpCisgICAgbGlzdF9oZWFkID0gZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChsaXN0X2hlYWQsICZyZXR2YWwpOworCisgICAgaWYgKCFsaXN0X2hlYWQpIHsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZG90M1N0YXRzVGFibGUsIGVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW1cbiIpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0iKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBXYWxrIG92ZXIgdGhlIGxpc3Qgb2YgaW50ZXJmYWNlIG5hbWVzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSBhbmQgcmV0cmVpdmUgdGhlIHN0YXRpc3RpY3MgCisgICAgICovCisKKyAgICBmb3IgKHAgPSBsaXN0X2hlYWQ7IHA7IHAgPSBwLT5pZm5fbmV4dCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgInByb2Nlc3NpbmcgJyVzJ1xuIiwgcC0+bmFtZSkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBpbmRleCB2aWEgaW9jdGwuCisgICAgICAgICAqLworCisgICAgICAgIGRvdDNTdGF0c0luZGV4ID0gKGxvbmcpIGRvdDNzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQoLTEsIHAtPm5hbWUpOworCisgICAgICAgIC8qIAorICAgICAgICAgKiAgICBnZXQgdGhlIGRvdDNzdGF0cyBjb250ZW50cyBwb3B1bGF0ZWQsIGlmIHRoZSBkZXZpY2UgaXMgbm90IGFuIGV0aGVybmV0IGRldmljZQorICAgICAgICAgKiAgICB0aGUgb3BlcmF0aW9uIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBhbmQgYW4gZXJyb3IgbWVzc2FnZSB3aWxsIGJlIGxvZ2dlZAorICAgICAgICAgKi8KKyAgICAgICAgCisgICAgICAgIHJvd3JlcV9jdHggPSBkb3QzU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KE5VTEwpOworICAgICAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibWVtb3J5IGFsbG9jYXRpb24gZm9yIGRvdDNTdGF0c1RhYmxlIGZhaWxlZFxuIik7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KHJvd3JlcV9jdHgsIGRvdDNTdGF0c0luZGV4KSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAgImRvdDNTdGF0c1RhYmxlIGRhdGEuXG4iKTsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVE9ETzozNTI6cjogfCAgIHwtPiBwb3B1bGF0ZSBkb3QzU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICAgICAqIFBvcHVsYXRlIGRhdGEgY29udGV4dCBoZXJlLiAob3B0aW9uYWxseSwgZGVsYXkgdW50aWwgcm93IHByZXApCisgICAgICAgICAqLworICAgICAgICAvKgorICAgICAgICAgKiBub24tVFJBTlNJRU5UIGRhdGE6IG5vIG5lZWQgdG8gY29weS4gc2V0IHBvaW50ZXIgdG8gZGF0YSAKKyAgICAgICAgICovCisKKyAgICAgICAgbWVtc2V0ICgmcm93cmVxX2N0eC0+ZGF0YSwgMCwgc2l6ZW9mIChyb3dyZXFfY3R4LT5kYXRhKSk7CisgICAgICAgIHJjID0gaW50ZXJmYWNlX2lvY3RsX2RvdDNzdGF0c19nZXQgKHJvd3JlcV9jdHgsIGZkLCBwLT5uYW1lKTsKKworICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImVycm9yIGdldHRpbmcgdGhlIHN0YXRpc3RpY3MgZm9yIGludGVyZmFjZSB8JXN8ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZSBkYXRhLCBvcGVyYXRpb24gbWlnaHQgbm90IGJlIHN1cHBvcnRlZFxuIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICByYyA9IGludGVyZmFjZV9pb2N0bF9kb3Qzc3RhdHNfZHVwbGV4X2dldChyb3dyZXFfY3R4LCBmZCwgcC0+bmFtZSk7CisgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZG90M1N0YXRzVGFibGUiLCAiZXJyb3IgZ2V0dGluZyB0aGUgZHVwbGV4IHN0YXR1cyBmb3IgfCVzfCAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZG90M1N0YXRzVGFibGUgZGF0YSwgb3BlcmF0aW9uIG1pZ2h0IG5vdCBiZSBzdXBwb3J0ZWRcbiIsIHAtPm5hbWUpKTsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKwlpbnRlcmZhY2Vfc3lzY2xhc3NuZXRfZG90M3N0YXRzX2dldChyb3dyZXFfY3R4LCBwLT5uYW1lKTsKKworCWludGVyZmFjZV9kb3Qzc3RhdHNfZ2V0X2Vycm9yY291bnRlcnMocm93cmVxX2N0eCwgcC0+bmFtZSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaW5zZXJ0IGludG8gdGFibGUgY29udGFpbmVyCisgICAgICAgICAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpkb3QzU3RhdHNUYWJsZSIsICJlcnJvciBpbnNlcnRpbmcgfCVzfCIsIHAtPm5hbWUpKTsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7CisKKyAgICAvKgorICAgICAqIGZyZWUgdGhlIGludGVyZmFjZSBuYW1lcyBsaXN0IAorICAgICAqLworCisgICAgaWYgKCAoZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZShsaXN0X2hlYWQpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImFjY2Vzczpkb3QzU3RhdHNUYWJsZSwgZXJyb3IgZnJlZWluZyB0aGUgaW50ZXJmYWNlIG5hbWUgbGlzdCBcbiIpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRvdDNTdGF0c1RhYmxlIiwgImVycm9yIGZyZWVpbmcgdGhlIGludGVyZmFjZSBuYW1lIGxpc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisjZW5kaWYKKworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgImluc2VydGVkICVkIHJlY29yZHNcbiIsIGNvdW50KSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkICovCisKKy8qKgorICogY29udGFpbmVyIGNsZWFuIHVwCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgd2l0aCBhbGwgY3VycmVudCBpdGVtcworICoKKyAqICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGlzIGNhbGxlZCBwcmlvciB0byBhbGwKKyAqICBpdGVtJ3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIuIElmIHlvdQorICogIG5lZWQgdG8gZG8gYW55IHByb2Nlc3NpbmcgYmVmb3JlIHRoYXQsIGRvIGl0IGhlcmUuCisgKgorICogQG5vdGUKKyAqICBUaGUgTUZEIGhlbHBlciB3aWxsIHRha2UgY2FyZSBvZiByZWxlYXNpbmcgYWxsIHRoZSByb3cgY29udGV4dHMuCisgKgorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM4MDpNOiBGcmVlIGRvdDNTdGF0c1RhYmxlIGNvbnRhaW5lciBkYXRhLgorICAgICAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIHByZXBhcmUgcm93IGZvciBwcm9jZXNzaW5nLgorICoKKyAqICBXaGVuIHRoZSBhZ2VudCBoYXMgbG9jYXRlZCB0aGUgcm93IGZvciBhIHJlcXVlc3QsIHRoaXMgZnVuY3Rpb24gaXMKKyAqICBjYWxsZWQgdG8gcHJlcGFyZSB0aGUgcm93IGZvciBwcm9jZXNzaW5nLiBJZiB5b3UgZnVsbHkgcG9wdWxhdGVkCisgKiAgdGhlIGRhdGEgY29udGV4dCBkdXJpbmcgdGhlIGluZGV4IHNldHVwIHBoYXNlLCB5b3UgbWF5IG5vdCBuZWVkIHRvCisgKiAgZG8gYW55dGhpbmcuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggcG9pbnRlciB0byBhIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqLworaW50Citkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzozOTA6bzogUHJlcGFyZSByb3cgZm9yIHJlcXVlc3QuCisgICAgICogSWYgcG9wdWxhdGluZyByb3cgZGF0YSB3YXMgZGVsYXllZCwgdGhpcyBpcyB0aGUgcGxhY2UgdG8KKyAgICAgKiBmaWxsIGluIHRoZSByb3cgZm9yIHRoaXMgcmVxdWVzdC4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcm93X3ByZXAgKi8KKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRiMzlhOQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApAQCAtMCwwICsxLDc5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIERPVDNTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0gKKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfREFUQV9BQ0NFU1NfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZG90M1N0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c1RhYmxlIGlzIHN1YmlkIDIgb2YgZG90My4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAgICAgKi8KKworCisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2luaXRfZGF0YShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfcmVnKTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjE4MDpvOiBSZXZpZXcgZG90M1N0YXRzVGFibGUgY2FjaGUgdGltZW91dC4KKyAgICAgKiBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYmVmb3JlIHRoZSBjYWNoZSB0aW1lcyBvdXQKKyAgICAgKi8KKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVCAgIDYwCisKKyAgICB2b2lkICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSk7CisgICAgdm9pZCAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyKTsKKworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jYWNoZV9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jYWNoZV9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisjZGVmaW5lIE1BWF9MSU5FX1NJWkUgMjU2CisKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfcm93X3ByZXAoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgdm9pZCAgICAgICAgICAgIGludGVyZmFjZV9zeXNjbGFzc25ldF9kb3Qzc3RhdHNfZ2V0CisgICAgICAgIChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwgY29uc3QgY2hhciAqbmFtZSk7CisgICAgdm9pZCAgICAgICAgICAgIGludGVyZmFjZV9kb3Qzc3RhdHNfZ2V0X2Vycm9yY291bnRlcnMKKyAgICAgICAgKGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LCBjb25zdCBjaGFyICpuYW1lKTsKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuYyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjY0NmUwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5jCkBAIC0wLDAgKzEsMTQ1MCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZS5oIgorCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9nZXQgZGF0YV9nZXQ6IFJvdXRpbmVzIHRvIGdldCBkYXRhCisgKgorICogVE9ETzoyMzA6TTogSW1wbGVtZW50IGRvdDNTdGF0c1RhYmxlIGdldCByb3V0aW5lcy4KKyAqIFRPRE86MjQwOk06IEltcGxlbWVudCBkb3QzU3RhdHNUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGRvdDNTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzVGFibGUgaXMgc3ViaWQgMiBvZiBkb3QzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBkb3QzU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisKKworLyoqCisgKiBzZXQgbWliIGluZGV4KGVzKQorICoKKyAqIEBwYXJhbSB0YmxfaWR4IG1pYiBpbmRleCBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBkb3QzU3RhdHNJbmRleF92YWwKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIGNvbnZlbmllbmNlIGZ1bmN0aW9uIGlzIHVzZWZ1bCBmb3Igc2V0dGluZyBhbGwgdGhlIE1JQiBpbmRleAorICogIGNvbXBvbmVudHMgd2l0aCBhIHNpbmdsZSBmdW5jdGlvbiBjYWxsLiBJdCBpcyBhc3N1bWUgdGhhdCB0aGUgQyB2YWx1ZXMKKyAqICBoYXZlIGFscmVhZHkgYmVlbiBtYXBwZWQgZnJvbSB0aGVpciBuYXRpdmUvcmF3Zm9ybWF0IHRvIHRoZSBNSUIgZm9ybWF0LgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoZG90M1N0YXRzVGFibGVfbWliX2luZGV4ICogdGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkb3QzU3RhdHNJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSCAKKyAgICAgKi8KKyAgICB0YmxfaWR4LT5kb3QzU3RhdHNJbmRleCA9IGRvdDNTdGF0c0luZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBkb3QzU3RhdHNJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5kZXhlc19zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChNRkRfU1VDQ0VTUyAhPQorICAgICAgICBkb3QzU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KCZyb3dyZXFfY3R4LT50YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0luZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkKCZyb3dyZXFfY3R4LT5vaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0FsaWdubWVudEVycm9ycworICogZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzIGlzIHN1YmlkIDIgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMgorICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyByZWNlaXZlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRoYXQgYXJlIG5vdCBhbiBpbnRlZ3JhbCBudW1iZXIgb2YKKyAgICAgICAgICAgICAgICAgICAgb2N0ZXRzIGluIGxlbmd0aCBhbmQgZG8gbm90IHBhc3MgdGhlIEZDUyBjaGVjay4KKworICAgICAgICAgICAgICAgICAgICBUaGUgY291bnQgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgaXMgaW5jcmVtZW50ZWQgd2hlbiB0aGUgYWxpZ25tZW50RXJyb3IKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzIGlzIHJldHVybmVkIGJ5IHRoZSBNQUMgc2VydmljZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgTExDIChvciBvdGhlciBNQUMgdXNlcikuIFJlY2VpdmVkIGZyYW1lcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVsdGlwbGUgZXJyb3IgY29uZGl0aW9ucyBwZXJ0YWluIGFyZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb252ZW50aW9ucyBvZiBJRUVFIDgwMi4zCisgICAgICAgICAgICAgICAgICAgIExheWVyIE1hbmFnZW1lbnQsIGNvdW50ZWQgZXhjbHVzaXZlbHkgYWNjb3JkaW5nCisKKyAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGVycm9yIHN0YXR1cyBwcmVzZW50ZWQgdG8gdGhlIExMQy4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IGZvciBncm91cAorICAgICAgICAgICAgICAgICAgICBlbmNvZGluZyBzY2hlbWVzIGdyZWF0ZXIgdGhhbiA0IGJpdHMgcGVyIGdyb3VwLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb24ncyBwb2xsIGN5Y2xlIHRpbWUsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGEgbG9zcyBvZiBpbmZvcm1hdGlvbiwgYSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN0YXRpb24gaXMgYWR2aXNlZCB0byBwb2xsIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzSENTdGF0c0FsaWdubWVudEVycm9ycyBvYmplY3QgZm9yIDEwIEdiL3MKKyAgICAgICAgICAgICAgICAgICAgb3IgZmFzdGVyIGludGVyZmFjZXMuCisKKyAgICAgICAgICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuCisgICAgICAgICAgICAgICAgICAgIG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgaWZDb3VudGVyRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0FsaWdubWVudEVycm9yc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0ZDU0Vycm9ycworICogZG90M1N0YXRzRkNTRXJyb3JzIGlzIHN1YmlkIDMgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMworICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyByZWNlaXZlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRoYXQgYXJlIGFuIGludGVncmFsIG51bWJlciBvZiBvY3RldHMKKyAgICAgICAgICAgICAgICAgICAgaW4gbGVuZ3RoIGJ1dCBkbyBub3QgcGFzcyB0aGUgRkNTIGNoZWNrLiAgVGhpcworICAgICAgICAgICAgICAgICAgICBjb3VudCBkb2VzIG5vdCBpbmNsdWRlIGZyYW1lcyByZWNlaXZlZCB3aXRoCisgICAgICAgICAgICAgICAgICAgIGZyYW1lLXRvby1sb25nIG9yIGZyYW1lLXRvby1zaG9ydCBlcnJvci4KKworICAgICAgICAgICAgICAgICAgICBUaGUgY291bnQgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgaXMgaW5jcmVtZW50ZWQgd2hlbiB0aGUgZnJhbWVDaGVja0Vycm9yCisgICAgICAgICAgICAgICAgICAgIHN0YXR1cyBpcyByZXR1cm5lZCBieSB0aGUgTUFDIHNlcnZpY2UgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgIExMQyAob3Igb3RoZXIgTUFDIHVzZXIpLiBSZWNlaXZlZCBmcmFtZXMgZm9yCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIG11bHRpcGxlIGVycm9yIGNvbmRpdGlvbnMgcGVydGFpbiBhcmUsCisgICAgICAgICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgY29udmVudGlvbnMgb2YgSUVFRSA4MDIuMworICAgICAgICAgICAgICAgICAgICBMYXllciBNYW5hZ2VtZW50LCBjb3VudGVkIGV4Y2x1c2l2ZWx5IGFjY29yZGluZworICAgICAgICAgICAgICAgICAgICB0byB0aGUgZXJyb3Igc3RhdHVzIHByZXNlbnRlZCB0byB0aGUgTExDLgorCisgICAgICAgICAgICAgICAgICAgIE5vdGU6ICBDb2RpbmcgZXJyb3JzIGRldGVjdGVkIGJ5IHRoZSBwaHlzaWNhbAorICAgICAgICAgICAgICAgICAgICBsYXllciBmb3Igc3BlZWRzIGFib3ZlIDEwIE1iL3Mgd2lsbCBjYXVzZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgZnJhbWUgdG8gZmFpbCB0aGUgRkNTIGNoZWNrLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisKKyAgICAgICAgICAgICAgICAgICAgaXQgaXMgaW5jcmVtZW50aW5nIGF0IGl0cyBtYXhpbXVtIHJhdGUuICBTaW5jZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGFtb3VudCBvZiB0aW1lIGNvdWxkIGJlIGxlc3MgdGhhbiBhCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3RhdGlvbidzIHBvbGwgY3ljbGUgdGltZSwgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgYSBsb3NzIG9mIGluZm9ybWF0aW9uLCBhIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlvbiBpcyBhZHZpc2VkIHRvIHBvbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNIQ1N0YXRzRkNTRXJyb3JzIG9iamVjdCBmb3IgMTAgR2IvcyBvcgorICAgICAgICAgICAgICAgICAgICBmYXN0ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0ZDU0Vycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0ZDU0Vycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzRkNTRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZG90M1N0YXRzRkNTRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNGQ1NFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0ZDU0Vycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNGQ1NFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0ZDU0Vycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNGQ1NFcnJvcnNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0ZDU0Vycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzRkNTRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzCisgKiBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMgaXMgc3ViaWQgNCBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS40CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgZnJhbWVzIHRoYXQgYXJlIGludm9sdmVkIGluIGEgc2luZ2xlCisgICAgICAgICAgICAgICAgICAgIGNvbGxpc2lvbiwgYW5kIGFyZSBzdWJzZXF1ZW50bHkgdHJhbnNtaXR0ZWQKKyAgICAgICAgICAgICAgICAgICAgc3VjY2Vzc2Z1bGx5LgorCisgICAgICAgICAgICAgICAgICAgIEEgZnJhbWUgdGhhdCBpcyBjb3VudGVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0IGlzIGFsc28gY291bnRlZCBieSB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSBvZiBlaXRoZXIgdGhlIGlmT3V0VWNhc3RQa3RzLAorICAgICAgICAgICAgICAgICAgICBpZk91dE11bHRpY2FzdFBrdHMsIG9yIGlmT3V0QnJvYWRjYXN0UGt0cywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vdCBjb3VudGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlIG9mIHRoZSBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcworICAgICAgICAgICAgICAgICAgICBvYmplY3QuCisKKyAgICAgICAgICAgICAgICAgICAgVGhpcyBjb3VudGVyIGRvZXMgbm90IGluY3JlbWVudCB3aGVuIHRoZQorICAgICAgICAgICAgICAgICAgICBpbnRlcmZhY2UgaXMgb3BlcmF0aW5nIGluIGZ1bGwtZHVwbGV4IG1vZGUuCisKKyAgICAgICAgICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuCisgICAgICAgICAgICAgICAgICAgIG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgaWZDb3VudGVyRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lcyBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNFbnRyeS5kb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcworICogZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXMgaXMgc3ViaWQgNSBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS41CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgZnJhbWVzIHRoYXQgYXJlIGludm9sdmVkIGluIG1vcmUKKworICAgICAgICAgICAgICAgICAgICB0aGFuIG9uZSBjb2xsaXNpb24gYW5kIGFyZSBzdWJzZXF1ZW50bHkKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXR0ZWQgc3VjY2Vzc2Z1bGx5LgorCisgICAgICAgICAgICAgICAgICAgIEEgZnJhbWUgdGhhdCBpcyBjb3VudGVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0IGlzIGFsc28gY291bnRlZCBieSB0aGUgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSBvZiBlaXRoZXIgdGhlIGlmT3V0VWNhc3RQa3RzLAorICAgICAgICAgICAgICAgICAgICBpZk91dE11bHRpY2FzdFBrdHMsIG9yIGlmT3V0QnJvYWRjYXN0UGt0cywKKyAgICAgICAgICAgICAgICAgICAgYW5kIGlzIG5vdCBjb3VudGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlIG9mIHRoZSBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0LgorCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNyZW1lbnQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGlzIG9wZXJhdGluZyBpbiBmdWxsLWR1cGxleCBtb2RlLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorICAgICAgICAgICAgICAgICAgICBvY2N1ciBhdCByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0sIGFuZCBhdCBvdGhlciB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcyBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c1NRRVRlc3RFcnJvcnMKKyAqIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnMgaXMgc3ViaWQgNiBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS42CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgdGltZXMgdGhhdCB0aGUgU1FFIFRFU1QgRVJST1IKKyAgICAgICAgICAgICAgICAgICAgaXMgcmVjZWl2ZWQgb24gYSBwYXJ0aWN1bGFyIGludGVyZmFjZS4gVGhlCisgICAgICAgICAgICAgICAgICAgIFNRRSBURVNUIEVSUk9SIGlzIHNldCBpbiBhY2NvcmRhbmNlIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgIHJ1bGVzIGZvciB2ZXJpZmljYXRpb24gb2YgdGhlIFNRRSBkZXRlY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgbWVjaGFuaXNtIGluIHRoZSBQTFMgQ2FycmllciBTZW5zZSBGdW5jdGlvbiBhcworICAgICAgICAgICAgICAgICAgICBkZXNjcmliZWQgaW4gSUVFRSBTdGQuIDgwMi4zLCAyMDAwIEVkaXRpb24sCisgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gNy4yLjQuNi4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IG9uIGludGVyZmFjZXMKKyAgICAgICAgICAgICAgICAgICAgb3BlcmF0aW5nIGF0IHNwZWVkcyBncmVhdGVyIHRoYW4gMTAgTWIvcywgb3Igb24KKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzU1FFVGVzdEVycm9ycyBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzU1FFVGVzdEVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNTUUVUZXN0RXJyb3JzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zCisgKiBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgaXMgc3ViaWQgNyBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS43CisgKiBEZXNjcmlwdGlvbjoKK0EgY291bnQgb2YgZnJhbWVzIGZvciB3aGljaCB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNtaXNzaW9uIGF0dGVtcHQgb24gYSBwYXJ0aWN1bGFyIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgICBpcyBkZWxheWVkIGJlY2F1c2UgdGhlIG1lZGl1bSBpcyBidXN5LgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb3VudCByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgIG9iamVjdCBkb2VzIG5vdCBpbmNsdWRlIGZyYW1lcyBpbnZvbHZlZCBpbgorICAgICAgICAgICAgICAgICAgICBjb2xsaXNpb25zLgorCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNyZW1lbnQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGlzIG9wZXJhdGluZyBpbiBmdWxsLWR1cGxleCBtb2RlLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorICAgICAgICAgICAgICAgICAgICBvY2N1ciBhdCByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0sIGFuZCBhdCBvdGhlciB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9uczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnMKKyAqIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zIGlzIHN1YmlkIDggb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuOAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYSBjb2xsaXNpb24gaXMKKyAgICAgICAgICAgICAgICAgICAgZGV0ZWN0ZWQgb24gYSBwYXJ0aWN1bGFyIGludGVyZmFjZSBsYXRlciB0aGFuCisgICAgICAgICAgICAgICAgICAgIG9uZSBzbG90VGltZSBpbnRvIHRoZSB0cmFuc21pc3Npb24gb2YgYSBwYWNrZXQuCisKKyAgICAgICAgICAgICAgICAgICAgQSAobGF0ZSkgY29sbGlzaW9uIGluY2x1ZGVkIGluIGEgY291bnQKKyAgICAgICAgICAgICAgICAgICAgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcyBvYmplY3QgaXMKKyAgICAgICAgICAgICAgICAgICAgYWxzbyBjb25zaWRlcmVkIGFzIGEgKGdlbmVyaWMpIGNvbGxpc2lvbiBmb3IKKyAgICAgICAgICAgICAgICAgICAgcHVycG9zZXMgb2Ygb3RoZXIgY29sbGlzaW9uLXJlbGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcy4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSBpcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBkb3QzU3RhdHNMYXRlQ29sbGlzaW9uc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNMYXRlQ29sbGlzaW9uc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNMYXRlQ29sbGlzaW9uc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucworICogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyBpcyBzdWJpZCA5IG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjkKKyAqIERlc2NyaXB0aW9uOgorQSBjb3VudCBvZiBmcmFtZXMgZm9yIHdoaWNoIHRyYW5zbWlzc2lvbiBvbiBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW50ZXJmYWNlIGZhaWxzIGR1ZSB0byBleGNlc3NpdmUKKyAgICAgICAgICAgICAgICAgICAgY29sbGlzaW9ucy4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSBpcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9uc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMKKyAqIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgaXMgc3ViaWQgMTAgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMTAKKyAqIERlc2NyaXB0aW9uOgorQSBjb3VudCBvZiBmcmFtZXMgZm9yIHdoaWNoIHRyYW5zbWlzc2lvbiBvbiBhCisgICAgICAgICAgICAgICAgICAgIHBhcnRpY3VsYXIgaW50ZXJmYWNlIGZhaWxzIGR1ZSB0byBhbiBpbnRlcm5hbAorICAgICAgICAgICAgICAgICAgICBNQUMgc3VibGF5ZXIgdHJhbnNtaXQgZXJyb3IuIEEgZnJhbWUgaXMgb25seQorICAgICAgICAgICAgICAgICAgICBjb3VudGVkIGJ5IGFuIGluc3RhbmNlIG9mIHRoaXMgb2JqZWN0IGlmIGl0IGlzCisgICAgICAgICAgICAgICAgICAgIG5vdCBjb3VudGVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIGluc3RhbmNlIG9mCisgICAgICAgICAgICAgICAgICAgIGVpdGhlciB0aGUgZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnMgb2JqZWN0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyBvYmplY3QsIG9yIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMgb2JqZWN0LgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBwcmVjaXNlIG1lYW5pbmcgb2YgdGhlIGNvdW50IHJlcHJlc2VudGVkIGJ5CisgICAgICAgICAgICAgICAgICAgIGFuIGluc3RhbmNlIG9mIHRoaXMgb2JqZWN0IGlzIGltcGxlbWVudGF0aW9uLQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZpYy4gIEluIHBhcnRpY3VsYXIsIGFuIGluc3RhbmNlIG9mIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgb2JqZWN0IG1heSByZXByZXNlbnQgYSBjb3VudCBvZiB0cmFuc21pc3Npb24KKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzIG9uIGEgcGFydGljdWxhciBpbnRlcmZhY2UgdGhhdCBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBjb3VudGVkLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb24ncyBwb2xsIGN5Y2xlIHRpbWUsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGEgbG9zcyBvZiBpbmZvcm1hdGlvbiwgYSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN0YXRpb24gaXMgYWR2aXNlZCB0byBwb2xsIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzSENTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgb2JqZWN0IGZvcgorICAgICAgICAgICAgICAgICAgICAxMCBHYi9zIG9yIGZhc3RlciBpbnRlcmZhY2VzLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorCisgICAgICAgICAgICAgICAgICAgIG9jY3VyIGF0IHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN5c3RlbSwgYW5kIGF0IG90aGVyIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUgb2YgaWZDb3VudGVyRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9ycworICogZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzIGlzIHN1YmlkIDExIG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjExCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgdGltZXMgdGhhdCB0aGUgY2FycmllciBzZW5zZQorICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24gd2FzIGxvc3Qgb3IgbmV2ZXIgYXNzZXJ0ZWQgd2hlbgorICAgICAgICAgICAgICAgICAgICBhdHRlbXB0aW5nIHRvIHRyYW5zbWl0IGEgZnJhbWUgb24gYSBwYXJ0aWN1bGFyCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICAgICAgICAgICAgICBUaGUgY291bnQgcmVwcmVzZW50ZWQgYnkgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgaXMgaW5jcmVtZW50ZWQgYXQgbW9zdCBvbmNlIHBlcgorICAgICAgICAgICAgICAgICAgICB0cmFuc21pc3Npb24gYXR0ZW1wdCwgZXZlbiBpZiB0aGUgY2FycmllciBzZW5zZQorICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24gZmx1Y3R1YXRlcyBkdXJpbmcgYSB0cmFuc21pc3Npb24KKyAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdC4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIGNvdW50ZXIgZG9lcyBub3QgaW5jcmVtZW50IHdoZW4gdGhlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZSBpcyBvcGVyYXRpbmcgaW4gZnVsbC1kdXBsZXggbW9kZS4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRnJhbWVUb29Mb25ncworICogZG90M1N0YXRzRnJhbWVUb29Mb25ncyBpcyBzdWJpZCAxMyBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS4xMworICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyByZWNlaXZlZCBvbiBhIHBhcnRpY3VsYXIKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRoYXQgZXhjZWVkIHRoZSBtYXhpbXVtIHBlcm1pdHRlZAorICAgICAgICAgICAgICAgICAgICBmcmFtZSBzaXplLgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb3VudCByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgIG9iamVjdCBpcyBpbmNyZW1lbnRlZCB3aGVuIHRoZSBmcmFtZVRvb0xvbmcKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzIGlzIHJldHVybmVkIGJ5IHRoZSBNQUMgc2VydmljZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgTExDIChvciBvdGhlciBNQUMgdXNlcikuIFJlY2VpdmVkIGZyYW1lcyBmb3IKKyAgICAgICAgICAgICAgICAgICAgd2hpY2ggbXVsdGlwbGUgZXJyb3IgY29uZGl0aW9ucyBwZXJ0YWluIGFyZSwKKyAgICAgICAgICAgICAgICAgICAgYWNjb3JkaW5nIHRvIHRoZSBjb252ZW50aW9ucyBvZiBJRUVFIDgwMi4zCisgICAgICAgICAgICAgICAgICAgIExheWVyIE1hbmFnZW1lbnQsIGNvdW50ZWQgZXhjbHVzaXZlbHkgYWNjb3JkaW5nCisgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBlcnJvciBzdGF0dXMgcHJlc2VudGVkIHRvIHRoZSBMTEMuCisKKyAgICAgICAgICAgICAgICAgICAgRm9yIGludGVyZmFjZXMgb3BlcmF0aW5nIGF0IDEwIEdiL3MsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgY291bnRlciBjYW4gcm9sbCBvdmVyIGluIGxlc3MgdGhhbiA4MCBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb24ncyBwb2xsIGN5Y2xlIHRpbWUsIGluIG9yZGVyCisgICAgICAgICAgICAgICAgICAgIHRvIGF2b2lkIGEgbG9zcyBvZiBpbmZvcm1hdGlvbiwgYSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgIHN0YXRpb24gaXMgYWR2aXNlZCB0byBwb2xsIHRoZQorICAgICAgICAgICAgICAgICAgICBkb3QzSENTdGF0c0ZyYW1lVG9vTG9uZ3Mgb2JqZWN0IGZvciAxMCBHYi9zCisgICAgICAgICAgICAgICAgICAgIG9yIGZhc3RlciBpbnRlcmZhY2VzLgorCisgICAgICAgICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbgorICAgICAgICAgICAgICAgICAgICBvY2N1ciBhdCByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudAorICAgICAgICAgICAgICAgICAgICBzeXN0ZW0sIGFuZCBhdCBvdGhlciB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlCisgICAgICAgICAgICAgICAgICAgIHZhbHVlIG9mIGlmQ291bnRlckRpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRnJhbWVUb29Mb25ncyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZG90M1N0YXRzRnJhbWVUb29Mb25nc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzRnJhbWVUb29Mb25nc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzRnJhbWVUb29Mb25nc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3M7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNFbnRyeS5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMKKyAqIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9ycyBpcyBzdWJpZCAxNiBvZiBkb3QzU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIuMS4xNgorICogRGVzY3JpcHRpb246CitBIGNvdW50IG9mIGZyYW1lcyBmb3Igd2hpY2ggcmVjZXB0aW9uIG9uIGEKKyAgICAgICAgICAgICAgICAgICAgcGFydGljdWxhciBpbnRlcmZhY2UgZmFpbHMgZHVlIHRvIGFuIGludGVybmFsCisgICAgICAgICAgICAgICAgICAgIE1BQyBzdWJsYXllciByZWNlaXZlIGVycm9yLiBBIGZyYW1lIGlzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgY291bnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzIG9iamVjdCBpZiBpdCBpcworICAgICAgICAgICAgICAgICAgICBub3QgY291bnRlZCBieSB0aGUgY29ycmVzcG9uZGluZyBpbnN0YW5jZSBvZgorICAgICAgICAgICAgICAgICAgICBlaXRoZXIgdGhlIGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3Mgb2JqZWN0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzIG9iamVjdCwgb3IgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0ZDU0Vycm9ycyBvYmplY3QuCisKKyAgICAgICAgICAgICAgICAgICAgVGhlIHByZWNpc2UgbWVhbmluZyBvZiB0aGUgY291bnQgcmVwcmVzZW50ZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgYW4gaW5zdGFuY2Ugb2YgdGhpcyBvYmplY3QgaXMgaW1wbGVtZW50YXRpb24tCisgICAgICAgICAgICAgICAgICAgIHNwZWNpZmljLiAgSW4gcGFydGljdWxhciwgYW4gaW5zdGFuY2Ugb2YgdGhpcworICAgICAgICAgICAgICAgICAgICBvYmplY3QgbWF5IHJlcHJlc2VudCBhIGNvdW50IG9mIHJlY2VpdmUgZXJyb3JzCisgICAgICAgICAgICAgICAgICAgIG9uIGEgcGFydGljdWxhciBpbnRlcmZhY2UgdGhhdCBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZSBjb3VudGVkLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisKKyAgICAgICAgICAgICAgICAgICAgaXQgaXMgaW5jcmVtZW50aW5nIGF0IGl0cyBtYXhpbXVtIHJhdGUuICBTaW5jZQorICAgICAgICAgICAgICAgICAgICB0aGF0IGFtb3VudCBvZiB0aW1lIGNvdWxkIGJlIGxlc3MgdGhhbiBhCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3RhdGlvbidzIHBvbGwgY3ljbGUgdGltZSwgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgYSBsb3NzIG9mIGluZm9ybWF0aW9uLCBhIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlvbiBpcyBhZHZpc2VkIHRvIHBvbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNIQ1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzIG9iamVjdCBmb3IKKyAgICAgICAgICAgICAgICAgICAgMTAgR2IvcyBvciBmYXN0ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9yc19nZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c0V0aGVyQ2hpcFNldAorICogZG90M1N0YXRzRXRoZXJDaGlwU2V0IGlzIHN1YmlkIDE3IG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBEZXByZWNhdGVkLCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjE3CisgKiBEZXNjcmlwdGlvbjoKKyoqKioqKioqIFRISVMgT0JKRUNUIElTIERFUFJFQ0FURUQgKioqKioqKioKKworICAgICAgICAgICAgICAgICAgICBUaGlzIG9iamVjdCBjb250YWlucyBhbiBPQkpFQ1QgSURFTlRJRklFUgorICAgICAgICAgICAgICAgICAgICB3aGljaCBpZGVudGlmaWVzIHRoZSBjaGlwc2V0IHVzZWQgdG8KKyAgICAgICAgICAgICAgICAgICAgcmVhbGl6ZSB0aGUgaW50ZXJmYWNlLiBFdGhlcm5ldC1saWtlCisgICAgICAgICAgICAgICAgICAgIGludGVyZmFjZXMgYXJlIHR5cGljYWxseSBidWlsdCBvdXQgb2YKKyAgICAgICAgICAgICAgICAgICAgc2V2ZXJhbCBkaWZmZXJlbnQgY2hpcHMuIFRoZSBNSUIgaW1wbGVtZW50b3IKKyAgICAgICAgICAgICAgICAgICAgaXMgcHJlc2VudGVkIHdpdGggYSBkZWNpc2lvbiBvZiB3aGljaCBjaGlwCisgICAgICAgICAgICAgICAgICAgIHRvIGlkZW50aWZ5IHZpYSB0aGlzIG9iamVjdC4gVGhlIGltcGxlbWVudG9yCisgICAgICAgICAgICAgICAgICAgIHNob3VsZCBpZGVudGlmeSB0aGUgY2hpcCB3aGljaCBpcyB1c3VhbGx5CisgICAgICAgICAgICAgICAgICAgIGNhbGxlZCB0aGUgTWVkaXVtIEFjY2VzcyBDb250cm9sIGNoaXAuCisgICAgICAgICAgICAgICAgICAgIElmIG5vIHN1Y2ggY2hpcCBpcyBlYXNpbHkgaWRlbnRpZmlhYmxlLAorICAgICAgICAgICAgICAgICAgICB0aGUgaW1wbGVtZW50b3Igc2hvdWxkIGlkZW50aWZ5IHRoZSBjaGlwCisgICAgICAgICAgICAgICAgICAgIHdoaWNoIGFjdHVhbGx5IGdhdGhlcnMgdGhlIHRyYW5zbWl0CisgICAgICAgICAgICAgICAgICAgIGFuZCByZWNlaXZlIHN0YXRpc3RpY3MgYW5kIGVycm9yCisgICAgICAgICAgICAgICAgICAgIGluZGljYXRpb25zLiBUaGlzIHdvdWxkIGFsbG93IGEKKyAgICAgICAgICAgICAgICAgICAgbWFuYWdlciBzdGF0aW9uIHRvIGNvcnJlbGF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlzdGljcyBhbmQgdGhlIGNoaXAgZ2VuZXJhdGluZworICAgICAgICAgICAgICAgICAgICB0aGVtLCBnaXZpbmcgaXQgdGhlIGFiaWxpdHkgdG8gdGFrZQorICAgICAgICAgICAgICAgICAgICBpbnRvIGFjY291bnQgYW55IGtub3duIGFub21hbGllcworICAgICAgICAgICAgICAgICAgICBpbiB0aGUgY2hpcC4KKworICAgICAgICAgICAgICAgICAgICBUaGlzIG9iamVjdCBoYXMgYmVlbiBkZXByZWNhdGVkLiAgSW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgICAgICAgICAgZmVlZGJhY2sgaW5kaWNhdGVzIHRoYXQgaXQgaXMgb2YgbGltaXRlZCB1c2UgZm9yCisgICAgICAgICAgICAgICAgICAgIGRlYnVnZ2luZyBuZXR3b3JrIHByb2JsZW1zIGluIHRoZSBmaWVsZCwgYW5kCisgICAgICAgICAgICAgICAgICAgIHRoZSBhZG1pbmlzdHJhdGl2ZSBvdmVyaGVhZCBpbnZvbHZlZCBpbgorICAgICAgICAgICAgICAgICAgICBtYWludGFpbmluZyBhIHJlZ2lzdHJ5IG9mIGNoaXBzZXQgT0lEcyBpcyBub3QKKyAgICAgICAgICAgICAgICAgICAganVzdGlmaWVkLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgT0JKRUNUSUQgKGJhc2VkIG9uIHBlcmx0eXBlIE9CSkVDVElEKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX09CSkVDVF9JRC4gVGhlIEMgdHlwZSBkZWNsIGlzIG9pZCAob2lkKQorICogVGhpcyBkYXRhIHR5cGUgcmVxdWlyZXMgYSBsZW5ndGguCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRXRoZXJDaGlwU2V0IGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIG9pZCB2YXJpYWJsZQorICogQHBhcmFtIGRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX2xlbl9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIGEgc2l6ZV90LiBPbiBlbnRyeSwgaXQgd2lsbCBjb250YWluIHRoZSBzaXplIChpbiBieXRlcykKKyAqICAgICAgICBwb2ludGVkIHRvIGJ5IGRvdDNTdGF0c0V0aGVyQ2hpcFNldC4KKyAqICAgICAgICBPbiBleGl0LCB0aGlzIHZhbHVlIHNob3VsZCBjb250YWluIHRoZSBkYXRhIHNpemUgKGluIGJ5dGVzKS4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorKgorICogQG5vdGUgSWYgeW91IG5lZWQgbW9yZSB0aGFuICgqZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfbGVuX3B0cikgYnl0ZXMgb2YgbWVtb3J5LAorICogICAgICAgYWxsb2NhdGUgaXQgdXNpbmcgbWFsbG9jKCkgYW5kIHVwZGF0ZSBkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9wdHIuCisgKiAgICAgICA8Yj5ETyBOT1Q8L2I+IGZyZWUgdGhlIHByZXZpb3VzIHBvaW50ZXIuCisgKiAgICAgICBUaGUgTUZEIGhlbHBlciB3aWxsIHJlbGVhc2UgdGhlIG1lbW9yeSB5b3UgYWxsb2NhdGUuCisgKgorICogQHJlbWFyayBJZiB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9uIHlvdXJzZWxmLCB5b3UgYXJlIHJlc3BvbnNpYmxlCisgKiAgICAgICAgIGZvciBjaGVja2luZyBpZiB0aGUgcG9pbnRlciBjaGFuZ2VkLCBhbmQgZnJlZWluZyBhbnkKKyAqICAgICAgICAgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5LiAoTm90IG5lY2Vzc2FyeSBpZiB5b3UgcGFzcworICogICAgICAgICBpbiBhIHBvaW50ZXIgdG8gc3RhdGljIG1lbW9yeSwgb2J2aW91c2x5LikKKyAqLworaW50Citkb3QzU3RhdHNFdGhlckNoaXBTZXRfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiogZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKmRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX2xlbl9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyIGFuZCBlbm91Z2ggc3RvcmFnZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KChOVUxMICE9IGRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX3B0cikKKyAgICAgICAgICAgICAgICAgICAmJiAoTlVMTCAhPSAqZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyKSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9sZW5fcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzRXRoZXJDaGlwU2V0X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyICkgZGF0YSBhbmQgKCogZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfbGVuX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIC8qCisgICAgICogbWFrZSBzdXJlIHRoZXJlIGlzIGVub3VnaCBzcGFjZSBmb3IgZG90M1N0YXRzRXRoZXJDaGlwU2V0IGRhdGEKKyAgICAgKi8KKyAgICBpZiAoKE5VTEwgPT0gKCpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9wdHIpKSB8fAorICAgICAgICAoKCpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9sZW5fcHRyKSA8CisgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRfbGVuICoKKyAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRbMF0pKSkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogYWxsb2NhdGUgc3BhY2UgZm9yIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCBkYXRhCisgICAgICAgICAqLworICAgICAgICAoKmRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX3B0cikgPQorICAgICAgICAgICAgbWFsbG9jKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0X2xlbiAqCisgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0WzBdKSk7CisgICAgICAgIGlmIChOVUxMID09ICgqZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnlcbiIpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKyAgICAoKmRvdDNTdGF0c0V0aGVyQ2hpcFNldF92YWxfcHRyX2xlbl9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRfbGVuICoKKyAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0WzBdKTsKKyAgICBtZW1jcHkoKCpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9wdHIpLAorICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c0V0aGVyQ2hpcFNldCwKKyAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNFdGhlckNoaXBTZXRfbGVuICoKKyAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzRXRoZXJDaGlwU2V0WzBdKSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0V0aGVyQ2hpcFNldF9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c1N5bWJvbEVycm9ycworICogZG90M1N0YXRzU3ltYm9sRXJyb3JzIGlzIHN1YmlkIDE4IG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjE4CisgKiBEZXNjcmlwdGlvbjoKK0ZvciBhbiBpbnRlcmZhY2Ugb3BlcmF0aW5nIGF0IDEwMCBNYi9zLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRpbWVzIHRoZXJlIHdhcyBhbiBpbnZhbGlkIGRhdGEgc3ltYm9sCisgICAgICAgICAgICAgICAgICAgIHdoZW4gYSB2YWxpZCBjYXJyaWVyIHdhcyBwcmVzZW50LgorCisgICAgICAgICAgICAgICAgICAgIEZvciBhbiBpbnRlcmZhY2Ugb3BlcmF0aW5nIGluIGhhbGYtZHVwbGV4IG1vZGUKKyAgICAgICAgICAgICAgICAgICAgYXQgMTAwMCBNYi9zLCB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSByZWNlaXZpbmcKKyAgICAgICAgICAgICAgICAgICAgbWVkaWEgaXMgbm9uLWlkbGUgKGEgY2FycmllciBldmVudCkgZm9yIGEgcGVyaW9kCisgICAgICAgICAgICAgICAgICAgIG9mIHRpbWUgZXF1YWwgdG8gb3IgZ3JlYXRlciB0aGFuIHNsb3RUaW1lLCBhbmQKKyAgICAgICAgICAgICAgICAgICAgZHVyaW5nIHdoaWNoIHRoZXJlIHdhcyBhdCBsZWFzdCBvbmUgb2NjdXJyZW5jZQorICAgICAgICAgICAgICAgICAgICBvZiBhbiBldmVudCB0aGF0IGNhdXNlcyB0aGUgUEhZIHRvIGluZGljYXRlCisgICAgICAgICAgICAgICAgICAgICdEYXRhIHJlY2VwdGlvbiBlcnJvcicgb3IgJ2NhcnJpZXIgZXh0ZW5kIGVycm9yJworICAgICAgICAgICAgICAgICAgICBvbiB0aGUgR01JSS4KKworICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW50ZXJmYWNlIG9wZXJhdGluZyBpbiBmdWxsLWR1cGxleCBtb2RlCisgICAgICAgICAgICAgICAgICAgIGF0IDEwMDAgTWIvcywgdGhlIG51bWJlciBvZiB0aW1lcyB0aGUgcmVjZWl2aW5nCisgICAgICAgICAgICAgICAgICAgIG1lZGlhIGlzIG5vbi1pZGxlIChhIGNhcnJpZXIgZXZlbnQpIGZvciBhIHBlcmlvZAorICAgICAgICAgICAgICAgICAgICBvZiB0aW1lIGVxdWFsIHRvIG9yIGdyZWF0ZXIgdGhhbiBtaW5GcmFtZVNpemUsCisgICAgICAgICAgICAgICAgICAgIGFuZCBkdXJpbmcgd2hpY2ggdGhlcmUgd2FzIGF0IGxlYXN0IG9uZQorICAgICAgICAgICAgICAgICAgICBvY2N1cnJlbmNlIG9mIGFuIGV2ZW50IHRoYXQgY2F1c2VzIHRoZSBQSFkgdG8KKyAgICAgICAgICAgICAgICAgICAgaW5kaWNhdGUgJ0RhdGEgcmVjZXB0aW9uIGVycm9yJyBvbiB0aGUgR01JSS4KKworICAgICAgICAgICAgICAgICAgICBGb3IgYW4gaW50ZXJmYWNlIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGUKKyAgICAgICAgICAgICAgICAgICAgbnVtYmVyIG9mIHRpbWVzIHRoZSByZWNlaXZpbmcgbWVkaWEgaXMgbm9uLWlkbGUKKyAgICAgICAgICAgICAgICAgICAgKGEgY2FycmllciBldmVudCkgZm9yIGEgcGVyaW9kIG9mIHRpbWUgZXF1YWwgdG8KKyAgICAgICAgICAgICAgICAgICAgb3IgZ3JlYXRlciB0aGFuIG1pbkZyYW1lU2l6ZSwgYW5kIGR1cmluZyB3aGljaAorICAgICAgICAgICAgICAgICAgICB0aGVyZSB3YXMgYXQgbGVhc3Qgb25lIG9jY3VycmVuY2Ugb2YgYW4gZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBjYXVzZXMgdGhlIFBIWSB0byBpbmRpY2F0ZSAnUmVjZWl2ZSBFcnJvcicKKyAgICAgICAgICAgICAgICAgICAgb24gdGhlIFhHTUlJLgorCisgICAgICAgICAgICAgICAgICAgIFRoZSBjb3VudCByZXByZXNlbnRlZCBieSBhbiBpbnN0YW5jZSBvZiB0aGlzCisgICAgICAgICAgICAgICAgICAgIG9iamVjdCBpcyBpbmNyZW1lbnRlZCBhdCBtb3N0IG9uY2UgcGVyIGNhcnJpZXIKKyAgICAgICAgICAgICAgICAgICAgZXZlbnQsIGV2ZW4gaWYgbXVsdGlwbGUgc3ltYm9sIGVycm9ycyBvY2N1cgorICAgICAgICAgICAgICAgICAgICBkdXJpbmcgdGhlIGNhcnJpZXIgZXZlbnQuICBUaGlzIGNvdW50IGRvZXMKKyAgICAgICAgICAgICAgICAgICAgbm90IGluY3JlbWVudCBpZiBhIGNvbGxpc2lvbiBpcyBwcmVzZW50LgorCisgICAgICAgICAgICAgICAgICAgIFRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNyZW1lbnQgd2hlbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJmYWNlIGlzIG9wZXJhdGluZyBhdCAxMCBNYi9zLgorCisgICAgICAgICAgICAgICAgICAgIEZvciBpbnRlcmZhY2VzIG9wZXJhdGluZyBhdCAxMCBHYi9zLCB0aGlzCisgICAgICAgICAgICAgICAgICAgIGNvdW50ZXIgY2FuIHJvbGwgb3ZlciBpbiBsZXNzIHRoYW4gNSBtaW51dGVzIGlmCisgICAgICAgICAgICAgICAgICAgIGl0IGlzIGluY3JlbWVudGluZyBhdCBpdHMgbWF4aW11bSByYXRlLiAgU2luY2UKKyAgICAgICAgICAgICAgICAgICAgdGhhdCBhbW91bnQgb2YgdGltZSBjb3VsZCBiZSBsZXNzIHRoYW4gYQorCisgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3RhdGlvbidzIHBvbGwgY3ljbGUgdGltZSwgaW4gb3JkZXIKKyAgICAgICAgICAgICAgICAgICAgdG8gYXZvaWQgYSBsb3NzIG9mIGluZm9ybWF0aW9uLCBhIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3RhdGlvbiBpcyBhZHZpc2VkIHRvIHBvbGwgdGhlCisgICAgICAgICAgICAgICAgICAgIGRvdDNIQ1N0YXRzU3ltYm9sRXJyb3JzIG9iamVjdCBmb3IgMTAgR2IvcworICAgICAgICAgICAgICAgICAgICBvciBmYXN0ZXIgaW50ZXJmYWNlcy4KKworICAgICAgICAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4KKyAgICAgICAgICAgICAgICAgICAgb2NjdXIgYXQgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQKKyAgICAgICAgICAgICAgICAgICAgc3lzdGVtLCBhbmQgYXQgb3RoZXIgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZQorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBvZiBpZkNvdW50ZXJEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1N5bWJvbEVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c1N5bWJvbEVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZG90M1N0YXRzU3ltYm9sRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZG90M1N0YXRzU3ltYm9sRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBkb3QzU3RhdHNTeW1ib2xFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1N5bWJvbEVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNTeW1ib2xFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGRvdDNTdGF0c1N5bWJvbEVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNTeW1ib2xFcnJvcnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmRvdDNTdGF0c1N5bWJvbEVycm9yczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzU3ltYm9sRXJyb3JzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzRW50cnkuZG90M1N0YXRzRHVwbGV4U3RhdHVzCisgKiBkb3QzU3RhdHNEdXBsZXhTdGF0dXMgaXMgc3ViaWQgMTkgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMTkKKyAqIERlc2NyaXB0aW9uOgorVGhlIGN1cnJlbnQgbW9kZSBvZiBvcGVyYXRpb24gb2YgdGhlIE1BQworICAgICAgICAgICAgICAgICAgICBlbnRpdHkuICAndW5rbm93bicgaW5kaWNhdGVzIHRoYXQgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAgICAgZHVwbGV4IG1vZGUgY291bGQgbm90IGJlIGRldGVybWluZWQuCisKKyAgICAgICAgICAgICAgICAgICAgTWFuYWdlbWVudCBjb250cm9sIG9mIHRoZSBkdXBsZXggbW9kZSBpcworICAgICAgICAgICAgICAgICAgICBhY2NvbXBsaXNoZWQgdGhyb3VnaCB0aGUgTUFVIE1JQi4gIFdoZW4KKyAgICAgICAgICAgICAgICAgICAgYW4gaW50ZXJmYWNlIGRvZXMgbm90IHN1cHBvcnQgYXV0b25lZ290aWF0aW9uLAorICAgICAgICAgICAgICAgICAgICBvciB3aGVuIGF1dG9uZWdvdGlhdGlvbiBpcyBub3QgZW5hYmxlZCwgdGhlCisgICAgICAgICAgICAgICAgICAgIGR1cGxleCBtb2RlIGlzIGNvbnRyb2xsZWQgdXNpbmcKKyAgICAgICAgICAgICAgICAgICAgaWZNYXVEZWZhdWx0VHlwZS4gIFdoZW4gYXV0b25lZ290aWF0aW9uIGlzCisgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZCBhbmQgZW5hYmxlZCwgZHVwbGV4IG1vZGUgaXMgY29udHJvbGxlZAorICAgICAgICAgICAgICAgICAgICB1c2luZyBpZk1hdUF1dG9OZWdBZHZlcnRpc2VkQml0cy4gIEluIGVpdGhlcgorICAgICAgICAgICAgICAgICAgICBjYXNlLCB0aGUgY3VycmVudGx5IG9wZXJhdGluZyBkdXBsZXggbW9kZSBpcworICAgICAgICAgICAgICAgICAgICByZWZsZWN0ZWQgYm90aCBpbiB0aGlzIG9iamVjdCBhbmQgaW4gaWZNYXVUeXBlLgorCisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhhdCB0aGlzIG9iamVjdCBwcm92aWRlcyByZWR1bmRhbnQKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gd2l0aCBpZk1hdVR5cGUuICBOb3JtYWxseSwgcmVkdW5kYW50CisgICAgICAgICAgICAgICAgICAgIG9iamVjdHMgYXJlIGRpc2NvdXJhZ2VkLiAgSG93ZXZlciwgaW4gdGhpcworICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZSwgaXQgYWxsb3dzIGEgbWFuYWdlbWVudCBhcHBsaWNhdGlvbiB0bworICAgICAgICAgICAgICAgICAgICBkZXRlcm1pbmUgdGhlIGR1cGxleCBzdGF0dXMgb2YgYW4gaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgZXZlcnkgcG9zc2libGUgdmFsdWUgb2YKKyAgICAgICAgICAgICAgICAgICAgaWZNYXVUeXBlLiAgVGhpcyB3YXMgZmVsdCB0byBiZSBzdWZmaWNpZW50bHkKKyAgICAgICAgICAgICAgICAgICAgdmFsdWFibGUgdG8ganVzdGlmeSB0aGUgcmVkdW5kYW5jeS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAxICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqIEVudW0gcmFuZ2U6IDMvOC4gVmFsdWVzOiAgdW5rbm93bigxKSwgaGFsZkR1cGxleCgyKSwgZnVsbER1cGxleCgzKQorICoKKyAqIEl0cyBzeW50YXggaXMgSU5URUdFUiAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c0R1cGxleFN0YXR1cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGRvdDNTdGF0c0R1cGxleFN0YXR1c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIGxvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c0R1cGxleFN0YXR1c19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGRvdDNTdGF0c0R1cGxleFN0YXR1c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzRHVwbGV4U3RhdHVzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNEdXBsZXhTdGF0dXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzRHVwbGV4U3RhdHVzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZG90M1N0YXRzRHVwbGV4U3RhdHVzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5kb3QzU3RhdHNEdXBsZXhTdGF0dXM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c0R1cGxleFN0YXR1c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEV0aGVyTGlrZS1NSUI6OmRvdDNTdGF0c0VudHJ5LmRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eQorICogZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5IGlzIHN1YmlkIDIwIG9mIGRvdDNTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjEwLjcuMi4xLjIwCisgKiBEZXNjcmlwdGlvbjoKKyd0cnVlJyBmb3IgaW50ZXJmYWNlcyBvcGVyYXRpbmcgYXQgc3BlZWRzIGFib3ZlCisgICAgICAgICAgICAgICAgICAgIDEwMDAgTWIvcyB0aGF0IHN1cHBvcnQgUmF0ZSBDb250cm9sIHRocm91Z2gKKyAgICAgICAgICAgICAgICAgICAgbG93ZXJpbmcgdGhlIGF2ZXJhZ2UgZGF0YSByYXRlIG9mIHRoZSBNQUMKKyAgICAgICAgICAgICAgICAgICAgc3VibGF5ZXIsIHdpdGggZnJhbWUgZ3JhbnVsYXJpdHksIGFuZCAnZmFsc2UnCisgICAgICAgICAgICAgICAgICAgIG90aGVyd2lzZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAxICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqIEVudW0gcmFuZ2U6IDIvOC4gVmFsdWVzOiAgdHJ1ZSgxKSwgZmFsc2UoMikKKyAqCisgKiBJdHMgc3ludGF4IGlzIFRydXRoVmFsdWUgKGJhc2VkIG9uIHBlcmx0eXBlIElOVEVHRVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fSU5URUdFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIGxvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHkgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBsb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eSBkYXRhLgorICAgICAqIGNvcHkgKCogZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5X3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV92YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHlfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFdGhlckxpa2UtTUlCOjpkb3QzU3RhdHNFbnRyeS5kb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cworICogZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXMgaXMgc3ViaWQgMjEgb2YgZG90M1N0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLjEuMjEKKyAqIERlc2NyaXB0aW9uOgorVGhlIGN1cnJlbnQgUmF0ZSBDb250cm9sIG1vZGUgb2Ygb3BlcmF0aW9uIG9mCisgICAgICAgICAgICAgICAgICAgIHRoZSBNQUMgc3VibGF5ZXIgb2YgdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMSAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKiBFbnVtIHJhbmdlOiAzLzguIFZhbHVlczogIHJhdGVDb250cm9sT2ZmKDEpLCByYXRlQ29udHJvbE9uKDIpLCB1bmtub3duKDMpCisgKgorICogSXRzIHN5bnRheCBpcyBJTlRFR0VSIChiYXNlZCBvbiBwZXJsdHlwZSBJTlRFR0VSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0lOVEVHRVIuIFRoZSBDIHR5cGUgZGVjbCBpcyBsb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIGxvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2RvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzIGRhdGEuCisgICAgICogY29weSAoKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzX2dldCAqLworCisKKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfZ2V0LmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU0M2NkMwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9nZXQuaApAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkCisgKgorICogJElkOiQKKyAqCisgKiBAZmlsZSBkb3QzU3RhdHNUYWJsZV9kYXRhX2dldC5oCisgKgorICogQGFkZHRvZ3JvdXAgZ2V0CisgKgorICogUHJvdG90eXBlcyBmb3IgZ2V0IGZ1bmN0aW9ucworICoKKyAqIEB7CisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfREFUQV9HRVRfSAorI2RlZmluZSBET1QzU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBkb3QzU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzVGFibGUgaXMgc3ViaWQgMiBvZiBkb3QzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xMC43LjIsIGxlbmd0aDogOQorICAgICAqLworICAgIC8qCisgICAgICogaW5kZXhlcworICAgICAqLworCisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c0FsaWdubWVudEVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzRkNTRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRkNTRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNTaW5nbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNEZWZlcnJlZFRyYW5zbWlzc2lvbnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNFeGNlc3NpdmVDb2xsaXNpb25zX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNUcmFuc21pdEVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRnJhbWVUb29Mb25nc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNFdGhlckNoaXBTZXRfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzRXRoZXJDaGlwU2V0X3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpkb3QzU3RhdHNFdGhlckNoaXBTZXRfdmFsX3B0cl9sZW5fcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzU3ltYm9sRXJyb3JzX2dldChkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzU3ltYm9sRXJyb3JzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV9nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eV92YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXNfZ2V0KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1c192YWxfcHRyKTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGRvdDNTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoZG90M1N0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZG90M1N0YXRzSW5kZXhfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfaW5kZXhlc19zZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZG90M1N0YXRzSW5kZXhfdmFsKTsKKworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRE9UM1NUQVRTVEFCTEVfREFUQV9HRVRfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRjMmRhMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZGF0YV9zZXQuYwpAQCAtMCwwICsxLDI4IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA3NyAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlLmgiCisKKworLyoqIEBkZWZncm91cCBkYXRhX3NldCBkYXRhX3NldDogUm91dGluZXMgdG8gc2V0IGRhdGEKKyAqCisgKiBUaGVzZSByb3V0aW5lcyBhcmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIGZvciBpbmRpdmlkdWFsIG9iamVjdHMuIFRoZQorICogcm93IGNvbnRleHQgaXMgcGFzc2VkLCBhbG9uZyB3aXRoIHRoZSBuZXcgdmFsdWUuCisgKiAKKyAqIEB7CisgKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX3NldC5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9kYXRhX3NldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhMDMzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2RhdGFfc2V0LmgKQEAgLTAsMCArMSwyOCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwNzcgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfREFUQV9TRVRfSAorI2RlZmluZSBET1QzU1RBVFNUQUJMRV9EQVRBX1NFVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFNFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFNFVCBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET1QzU1RBVFNUQUJMRV9EQVRBX1NFVF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2VudW1zLmggYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhhNzJlNAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfZW51bXMuaApAQCAtMCwwICsxLDg5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtZW51bXMubTJjIDEyNTI2IDIwMDUtMDctMTUgMjI6NDE6MTZaIHJzdG9yeSAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBET1QzU1RBVFNUQUJMRV9FTlVNU19ICisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX0VOVU1TX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBOT1RFUyBvbiBlbnVtcworICAgICAqID09PT09PT09PT09PT09CisgICAgICoKKyAgICAgKiBWYWx1ZSBNYXBwaW5nCisgICAgICogLS0tLS0tLS0tLS0tLQorICAgICAqIElmIHRoZSB2YWx1ZXMgZm9yIHlvdXIgZGF0YSB0eXBlIGRvbid0IGV4YWN0bHkgbWF0Y2ggdGhlCisgICAgICogcG9zc2libGUgdmFsdWVzIGRlZmluZWQgYnkgdGhlIG1pYiwgeW91IHNob3VsZCBtYXAgdGhlbQorICAgICAqIGJlbG93LiBGb3IgZXhhbXBsZSwgYSBib29sZWFuIGZsYWcgKDEvMCkgaXMgdXN1YWxseSByZXByZXNlbnRlZAorICAgICAqIGFzIGEgVHJ1dGhWYWx1ZSBpbiBhIE1JQiwgd2hpY2ggbWFwcyB0byB0aGUgdmFsdWVzICgxLzIpLgorICAgICAqCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBlbnVtIGRlZmluaXRpb25zIGZvciB0YWJsZSBkb3QzU3RhdHNUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnN0YW50cyBmb3IgZW51bXMgZm9yIHRoZSBNSUIgbm9kZQorICogZG90M1N0YXRzRHVwbGV4U3RhdHVzIChJTlRFR0VSIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBET1QzU1RBVFNEVVBMRVhTVEFUVVNfRU5VTVMKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0VOVU1TCisKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX1VOS05PV04gIDEKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0hBTEZEVVBMRVggIDIKKyNkZWZpbmUgRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZVTExEVVBMRVggIDMKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET1QzU1RBVFNEVVBMRVhTVEFUVVNfRU5VTVMgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBkb3QzU3RhdHNSYXRlQ29udHJvbEFiaWxpdHkgKFRydXRoVmFsdWUgLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIFRSVVRIVkFMVUVfRU5VTVMKKyNkZWZpbmUgVFJVVEhWQUxVRV9FTlVNUworCisjZGVmaW5lIFRSVVRIVkFMVUVfVFJVRSAgMQorI2RlZmluZSBUUlVUSFZBTFVFX0ZBTFNFICAyCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVFJVVEhWQUxVRV9FTlVNUyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKKyAqIGRvdDNTdGF0c1JhdGVDb250cm9sU3RhdHVzIChJTlRFR0VSIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVU19FTlVNUworI2RlZmluZSBET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVU19FTlVNUworCisjZGVmaW5lIERPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX1JBVEVDT05UUk9MT0ZGICAxCisjZGVmaW5lIERPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX1JBVEVDT05UUk9MT04gIDIKKyNkZWZpbmUgRE9UM1NUQVRTUkFURUNPTlRST0xTVEFUVVNfVU5LTk9XTiAgMworCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX0VOVU1TICovCisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1RBQkxFX0VOVU1TX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjg1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTE4MiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiZG90M1N0YXRzVGFibGUuaCIKKworCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKworI2luY2x1ZGUgImRvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGRvdDNTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogRXRoZXJMaWtlLU1JQjo6ZG90M1N0YXRzVGFibGUgaXMgc3ViaWQgMiBvZiBkb3QzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTAuNy4yLCBsZW5ndGg6IDkKKyAqLwordHlwZWRlZiBzdHJ1Y3QgZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlX2N0eF9zIHsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOworCisgICAgZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICp1c2VyX2N0eDsKKworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gdGJsX2luZm87CisKKyAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX21ldGhvZHMgYWNjZXNzX211bHRpcGxleGVyOworCit9IGRvdDNTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHg7CisKK3N0YXRpYyBkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4IGRvdDNTdGF0c1RhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgIF9kb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKKworCituZXRzbm1wX2NvbnRhaW5lciAqCitkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXI7Cit9CisKK2RvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCitkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKK30KKworZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2RvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQoreworICAgIGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqb2xkID0gZG90M1N0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworICAgIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKKyAgICByZXR1cm4gb2xkOworfQorCitpbnQKK2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCit7CisgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGRvdDNTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpOworfQorCisvKgorICogbWZkIG11bHRpcGxleGVyIG1vZGVzCisgKi8KK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2RvdDNTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZG90M1N0YXRzVGFibGVfb2JqZWN0X2xvb2t1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF92YWx1ZXM7CisvKioKKyAqIEBpbnRlcm5hbAorICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgZG90M1N0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAorX2RvdDNTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlKGRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmRvdDNTdGF0c1RhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmZG90M1N0YXRzVGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfZG90M1N0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBkb3QzU3RhdHNUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGRvdDNTdGF0c0luZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAvKgorICAgICAqIERlZmluZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBhY2Nlc3NpYmxlIGNvbHVtbnMuICBUaGlzCisgICAgICogb3B0aW1pemVzIHJldHJpdmFsLiAKKyAgICAgKi8KKyAgICB0YmxfaW5mby0+bWluX2NvbHVtbiA9IERPVDNTVEFUU1RBQkxFX01JTl9DT0w7CisgICAgdGJsX2luZm8tPm1heF9jb2x1bW4gPSBET1QzU1RBVFNUQUJMRV9NQVhfQ09MOworCisgICAgLyoKKyAgICAgKiBzYXZlIHVzZXJzIGNvbnRleHQKKyAgICAgKi8KKyAgICBkb3QzU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSByZWdfcHRyOworCisgICAgLyoKKyAgICAgKiBjYWxsIGRhdGEgYWNjZXNzIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBkb3QzU3RhdHNUYWJsZV9pbml0X2RhdGEocmVnX3B0cik7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KCZkb3QzU3RhdHNUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGRvdDNTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbnRhaW5lciBmb3IgZG90M1N0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhY2Nlc3NfbXVsdGlwbGV4ZXI6IFJFUVVJUkVEIHdyYXBwZXIgZm9yIGdldCByZXF1ZXN0IGhhbmRsaW5nCisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwID0gX21mZF9kb3QzU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9IF9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCA9IF9tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3Q7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPSBfbWZkX2RvdDNTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIENyZWF0ZSBhIHJlZ2lzdHJhdGlvbiwgc2F2ZSBvdXIgcmVnIGRhdGEsIHJlZ2lzdGVyIHRhYmxlLgorICAgICAqLworICAgIERFQlVHTVNHVEwoKCJkb3QzU3RhdHNUYWJsZTppbml0X2RvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgZG90M1N0YXRzVGFibGUgYXMgYSBtaWJzLWZvci1kdW1taWVzIHRhYmxlLlxuIikpOworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldChhY2Nlc3NfbXVsdGlwbGV4ZXIpOworICAgIHJlZ2luZm8gPQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiZG90M1N0YXRzVGFibGUiLCBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX29pZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgZG90M1N0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZ2luZm8tPm15X3JlZ192b2lkID0gJmRvdDNTdGF0c1RhYmxlX2lmX2N0eDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzZXQgdXAgYmFieSBzdGVwcyBoYW5kbGVyLCBjcmVhdGUgaXQgYW5kIGluamVjdCBpdAorICAgICAqLworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ0xFQU5VUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRTOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cm93X2NyZWF0aW9uKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1JPV19DUkVBVEU7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX0NPTlNJU1RFTkNZOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisKKyAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3Qgcm93X21lcmdlIGhlbHBlciB3aXRoIHByZWZpeCByb290b2lkX2xlbiArIDIgKGVudHJ5LmNvbCkKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjb250YWluZXJfdGFibGUgaGVscGVyCisgICAgICovCisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KHRibF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9pZl9jdHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjYWNoZSBoZWxwZXIKKyAgICAgKi8KKyAgICBpZiAoTlVMTCAhPSBkb3QzU3RhdHNUYWJsZV9pZl9jdHguY2FjaGUpIHsKKyAgICAgICAgaGFuZGxlciA9IG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQoZG90M1N0YXRzVGFibGVfaWZfY3R4LmNhY2hlKTsKKyAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHJlZ2lzdGVyIHRhYmxlCisgICAgICovCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YmxfaW5mbyk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2RvdDNTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgZG90M1N0YXRzVGFibGUKKyAqLwordm9pZAorX2RvdDNTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9kb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmRvdDNTdGF0c1RhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2RvdDNTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGRvdDNTdGF0c1RhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2RvdDNTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfZG90M1N0YXRzSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2RvdDNTdGF0c0luZGV4LCAweDAwLCBzaXplb2YodmFyX2RvdDNTdGF0c0luZGV4KSk7CisgICAgdmFyX2RvdDNTdGF0c0luZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9kb3QzU3RhdHNJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGRvdDNTdGF0c0luZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL0ggCisgICAgICovCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfZG90M1N0YXRzSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5kb3QzU3RhdHNJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmRvdDNTdGF0c0luZGV4KSk7CisKKworICAgIGVyciA9IGJ1aWxkX29pZF9ub2FsbG9jKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwgJm9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwLCAmdmFyX2RvdDNTdGF0c0luZGV4KTsKKyAgICBpZiAoZXJyKQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgJWQgY29udmVydGluZyBpbmRleCB0byBvaWRcbiIsIGVycik7CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfZG90M1N0YXRzSW5kZXgpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBkb3QzU3RhdHNUYWJsZSBpbmRleGVzIGZyb20gYSBuZXRzbm1wX2luZGV4CisgKgorICogQHJldHZhbCBTTk1QX0VSUl9OT0VSUk9SICA6IG5vIGVycm9yCisgKiBAcmV0dmFsIFNOTVBfRVJSX0dFTkVSUiAgIDogZXJyb3IKKyAqLworaW50Citkb3QzU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBkb3QzU3RhdHNJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9ICisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9kb3QzU3RhdHNJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfZG90M1N0YXRzSW5kZXgsIDB4MDAsIHNpemVvZih2YXJfZG90M1N0YXRzSW5kZXgpKTsKKyAgICB2YXJfZG90M1N0YXRzSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2RvdDNTdGF0c0luZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkb3QzU3RhdHNUYWJsZTpkb3QzU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBwYXJzZSB0aGUgb2lkIGludG8gdGhlIGluZGl2aWR1YWwgaW5kZXggY29tcG9uZW50cworICAgICAqLworICAgIGVyciA9IHBhcnNlX29pZF9pbmRleGVzKG9pZF9pZHgtPm9pZHMsIG9pZF9pZHgtPmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyX2RvdDNTdGF0c0luZGV4KTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5kb3QzU3RhdHNJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9kb3QzU3RhdHNJbmRleC52YWwuc3RyaW5nKTsKKworCisgICAgfQorCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2RvdDNTdGF0c0luZGV4KTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkICovCisKKworLyoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIEBpbnRlcm5hbAorICogYWxsb2NhdGUgcmVzb3VyY2VzIGZvciBhIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAqLworZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqCitkb3QzU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6ZG90M1N0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyA9IHJvd3JlcV9jdHgtPm9pZF90bXA7CisKKyAgICByb3dyZXFfY3R4LT5kb3QzU3RhdHNUYWJsZV9kYXRhX2xpc3QgPSBOVUxMOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBhbGxvY2F0ZWQgZGF0YSwgY2FsbCBpbml0IHJvdXRpbmUKKyAgICAgKi8KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkgeworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9CisgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQocm93cmVxX2N0eCwgdXNlcl9pbml0X2N0eCkpIHsKKyAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRvdDNTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eAorICovCit2b2lkCitkb3QzU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOmRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIGZyZWUgaW5kZXggb2lkIHBvaW50ZXIKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzICE9IHJvd3JlcV9jdHgtPm9pZF90bXApCisgICAgICAgIGZyZWUocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzKTsKKworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZG90M1N0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19maXJzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChkb3QzU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiZG90M1N0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9wcmVfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9kb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBpbnQgICAgICAgICAgICAgcmMsIHBhY2tldF9yYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiByZWxlYXNlIHJvdyBjb250ZXh0LCBpZiBkZWxldGVkCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHggJiYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREVMRVRFRCkpCisgICAgICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogd2FpdCBmb3IgbGFzdCBjYWxsIGJlZm9yZSBjYWxsaW5nIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfbGFzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIHJjID0gZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGRvdDNTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYWNrZXRfcmMpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiZG90M1N0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3RcbiIsIHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfZG90M1N0YXRzVGFibGVfb2JqZWN0X2xvb2t1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBnZXQgb3VyIGNvbnRleHQgZnJvbSBtZmQKKyAgICAgKiBkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICppZl9jdHggPQorICAgICAqICAgICAgICAgICAgIChkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICopcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CisgICAgICovCisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9DUkVBVElPTjsKKyAgICB9CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCByYyk7CisgICAgZWxzZQorICAgICAgICBkb3QzU3RhdHNUYWJsZV9yb3dfcHJlcChyb3dyZXFfY3R4KTsKKworICAgIHJldHVybiBTTk1QX1ZBTElEQVRFX0VSUihyYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfb2JqZWN0X2xvb2t1cCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBHRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbihkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIChJTkRFWCkgZG90M1N0YXRzSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTSU5ERVg6CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9JTlRFR0VSOworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YobG9uZyk7CisgICAgICAgICgqdmFyLT52YWwuaW50ZWdlcikgPSByb3dyZXFfY3R4LT50YmxfaWR4LmRvdDNTdGF0c0luZGV4OworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnMoMikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTQUxJR05NRU5URVJST1JTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNBTElHTk1FTlRFUlJPUlNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZG90M1N0YXRzQWxpZ25tZW50RXJyb3JzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBkb3QzU3RhdHNBbGlnbm1lbnRFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0ZDU0Vycm9ycygzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNGQ1NFUlJPUlM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0RPVDNTVEFUU0ZDU0VSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNGQ1NFcnJvcnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0ZDU0Vycm9yc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzKDQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU1NJTkdMRUNPTExJU0lPTkZSQU1FUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTU0lOR0xFQ09MTElTSU9ORlJBTUVTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c1NpbmdsZUNvbGxpc2lvbkZyYW1lcykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzU2luZ2xlQ29sbGlzaW9uRnJhbWVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c011bHRpcGxlQ29sbGlzaW9uRnJhbWVzKDUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU01VTFRJUExFQ09MTElTSU9ORlJBTUVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNNVUxUSVBMRUNPTExJU0lPTkZSQU1FU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNNdWx0aXBsZUNvbGxpc2lvbkZyYW1lcykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzTXVsdGlwbGVDb2xsaXNpb25GcmFtZXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c1NRRVRlc3RFcnJvcnMoNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTU1FFVEVTVEVSUk9SUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTU1FFVEVTVEVSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNTUUVUZXN0RXJyb3JzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBkb3QzU3RhdHNTUUVUZXN0RXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zKDcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0RFRkVSUkVEVFJBTlNNSVNTSU9OUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTREVGRVJSRURUUkFOU01JU1NJT05TX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0RlZmVycmVkVHJhbnNtaXNzaW9ucykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzRGVmZXJyZWRUcmFuc21pc3Npb25zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0xhdGVDb2xsaXNpb25zKDgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0xBVEVDT0xMSVNJT05TOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNMQVRFQ09MTElTSU9OU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNMYXRlQ29sbGlzaW9ucykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzTGF0ZUNvbGxpc2lvbnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRXhjZXNzaXZlQ29sbGlzaW9ucyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNFWENFU1NJVkVDT0xMSVNJT05TOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNFWENFU1NJVkVDT0xMSVNJT05TX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0V4Y2Vzc2l2ZUNvbGxpc2lvbnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1RyYW5zbWl0RXJyb3JzKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0ludGVybmFsTWFjVHJhbnNtaXRFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNDYXJyaWVyU2Vuc2VFcnJvcnMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0NBUlJJRVJTRU5TRUVSUk9SUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTQ0FSUklFUlNFTlNFRVJST1JTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0NhcnJpZXJTZW5zZUVycm9ycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzQ2FycmllclNlbnNlRXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNGcmFtZVRvb0xvbmdzKDEzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3MpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c0ZyYW1lVG9vTG9uZ3NfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNJbnRlcm5hbE1hY1JlY2VpdmVFcnJvcnMoMTYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDUkVDRUlWRUVSUk9SUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNSRUNFSVZFRVJST1JTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c0ludGVybmFsTWFjUmVjZWl2ZUVycm9ycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzSW50ZXJuYWxNYWNSZWNlaXZlRXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c0V0aGVyQ2hpcFNldCgxNykvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTRVRIRVJDSElQU0VUOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNFVEhFUkNISVBTRVRfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZG90M1N0YXRzRXRoZXJDaGlwU2V0KSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9PQkpFQ1RfSUQ7CisgICAgICAgIHJjID0gZG90M1N0YXRzRXRoZXJDaGlwU2V0X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9pZCAqKikgJiB2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyLT52YWxfbGVuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzU3ltYm9sRXJyb3JzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9ET1QzU1RBVFNTWU1CT0xFUlJPUlM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0RPVDNTVEFUU1NZTUJPTEVSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNTeW1ib2xFcnJvcnMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGRvdDNTdGF0c1N5bWJvbEVycm9yc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZG90M1N0YXRzRHVwbGV4U3RhdHVzKDE5KS9JTlRFR0VSL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL3cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRE9UM1NUQVRTRFVQTEVYU1RBVFVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNEVVBMRVhTVEFUVVNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZG90M1N0YXRzRHVwbGV4U3RhdHVzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICAgICAgcmMgPSBkb3QzU3RhdHNEdXBsZXhTdGF0dXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eSgyMCkvVHJ1dGhWYWx1ZS9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MQUJJTElUWToKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRE9UM1NUQVRTUkFURUNPTlRST0xBQklMSVRZX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGRvdDNTdGF0c1JhdGVDb250cm9sQWJpbGl0eSkgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzUmF0ZUNvbnRyb2xBYmlsaXR5X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cygyMSkvSU5URUdFUi9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS93L0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9ET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChkb3QzU3RhdHNSYXRlQ29udHJvbFN0YXR1cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHJjID0gZG90M1N0YXRzUmF0ZUNvbnRyb2xTdGF0dXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoRE9UM1NUQVRTVEFCTEVfTUlOX0NPTCA8PSBjb2x1bW4KKyAgICAgICAgICAgICYmIGNvbHVtbiA8PSBET1QzU1RBVFNUQUJMRV9NQVhfQ09MKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X21mZF9kb3QzU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImFzc3VtZSBjb2x1bW4gJWQgaXMgcmVzZXJ2ZWRcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmMgPSBNRkRfU0tJUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2RvdDNTdGF0c1RhYmxlX2dldF9jb2x1bW4gKi8KKworaW50CitfbWZkX2RvdDNTdGF0c1RhYmxlX2dldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdHJpOworICAgIHVfY2hhciAgICAgICAgICpvbGRfc3RyaW5nOworICAgIHZvaWQgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykgKHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIERFQlVHTVNHVEwoKCI5OmRvdDNTdGF0c1RhYmxlOl9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImV4aXN0cyAldVxuIiwgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncykpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNhdmUgb2xkIHBvaW50ZXIsIHNvIHdlIGNhbiBmcmVlIGl0IGlmIHJlcGxhY2VkCisgICAgICAgICAqLworICAgICAgICBvbGRfc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZzsKKyAgICAgICAgZGF0YUZyZWVIb29rID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+ZGF0YUZyZWVIb29rOworICAgICAgICBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmID09CisgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfZG90M1N0YXRzVGFibGVfZ2V0X2NvbHVtbihyb3dyZXFfY3R4LCByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaS0+Y29sbnVtKTsKKyAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICBpZiAoTUZEX1NLSVAgPT0gcmMpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlID0gU05NUF9OT1NVQ0hJTlNUQU5DRTsKKyAgICAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTlVMTCB2YXJiaW5kIGRhdGEgcG9pbnRlciFcbiIpOworICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJjKQorICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBpZiB0aGUgYnVmZmVyIHdhc24ndCB1c2VkIHByZXZpb3VzbHkgZm9yIHRoZSBvbGQgZGF0YSAoaS5lLiBpdAorICAgICAgICAgKiB3YXMgYWxsY29hdGVkIG1lbW9yeSkgIGFuZCB0aGUgZ2V0IHJvdXRpbmUgcmVwbGFjZWQgdGhlIHBvaW50ZXIsCisgICAgICAgICAqIHdlIG5lZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgcG9pbnRlci4KKyAgICAgICAgICovCisgICAgICAgIGlmIChvbGRfc3RyaW5nICYmIChvbGRfc3RyaW5nICE9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZikgJiYKKyAgICAgICAgICAgIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nICE9IG9sZF9zdHJpbmcpKSB7CisgICAgICAgICAgICBpZiAoZGF0YUZyZWVIb29rKQorICAgICAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSAob2xkX3N0cmluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJlZShvbGRfc3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZG90M1N0YXRzVGFibGVfZ2V0X3ZhbHVlcyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFNFVCBwcm9jZXNzaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogU0VUIFBST0NFU1NJTkcgTk9UIEFQUExJQ0FCTEUgKHBlciBNSUIgb3IgdXNlciBzZXR0aW5nKQorICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkICAgICBfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpOworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NhY2hlX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgZm9yIGRvdDNTdGF0c1RhYmxlX2NhY2hlX2xvYWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgYW4gaW52YWxpZCBvciBleHBpcmVkIGNhY2hlICovCisgICAgbmV0c25tcF9hc3NlcnQoKDAgPT0gY2FjaGUtPnZhbGlkKSB8fCAoMSA9PSBjYWNoZS0+ZXhwaXJlZCkpOworCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY29kZQorICAgICAqLworICAgIHJldHVybiBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCgobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWdpYyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9sb2FkICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NhY2hlX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgaW4gZG90M1N0YXRzVGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2l0ZW1fZnJlZShkb3QzU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NvbnRhaW5lcl9pdGVtX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpCisgICAgICAgIHJldHVybjsKKworICAgIGRvdDNTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9pdGVtX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2NvbnRhaW5lcl9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBpbiBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuIGluZWZmaWNpZW50LCBidXQgZWFzeS4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbnRhaW5lcl9pdGVtX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQoZG90M1N0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZG90M1N0YXRzVGFibGU6X2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGNhY2hlIGluaXQKKyAgICAgKi8KKyAgICBpZl9jdHgtPmNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoMzAsICAgIC8qIHRpbWVvdXQgaW4gc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVfbG9hZCwgX2NhY2hlX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdDNTdGF0c1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfb2lkX3NpemUpOworCisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY2FjaGUgZm9yIGRvdDNTdGF0c1RhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmX2N0eC0+Y2FjaGUtPmZsYWdzID0gTkVUU05NUF9DQUNIRV9ET05UX0lOVkFMSURBVEVfT05fU0VUOworCisgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKKyAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiZG90M1N0YXRzVGFibGU6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCisgICAgICAgICAgICAgICAgICJkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoTlVMTCAhPSBpZl9jdHgtPmNhY2hlKQorICAgICAgICBpZl9jdHgtPmNhY2hlLT5tYWdpYyA9ICh2b2lkICopIGlmX2N0eC0+Y29udGFpbmVyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZG90M1N0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNodXRkb3duIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihkb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpkb3QzU3RhdHNUYWJsZTpfZG90M1N0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgZG90M1N0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlmX2N0eC0+Y29udGFpbmVyKTsKKworICAgIF9jb250YWluZXJfZnJlZShpZl9jdHgtPmNvbnRhaW5lcik7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2RvdDNTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisKK2RvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorZG90M1N0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGRvdDNTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfT0lEX0xFTl07CisgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgc3RvcmFnZSBmb3IgT0lECisgICAgICovCisgICAgb2lkX2lkeC5vaWRzID0gb2lkX3RtcDsKKyAgICBvaWRfaWR4LmxlbiA9IHNpemVvZihvaWRfdG1wKSAvIHNpemVvZihvaWQpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0CisgICAgICovCisgICAgcmMgPSBkb3QzU3RhdHNUYWJsZV9pbmRleF90b19vaWQoJm9pZF9pZHgsIG1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByb3dyZXFfY3R4ID0gQ09OVEFJTkVSX0ZJTkQoZG90M1N0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgJm9pZF9pZHgpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ldGhlcmxpa2UtbWliL2RvdDNTdGF0c1RhYmxlL2RvdDNTdGF0c1RhYmxlX2ludGVyZmFjZS5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzJiNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfSU5URVJGQUNFX0gKKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfSU5URVJGQUNFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyNpbmNsdWRlICJkb3QzU3RhdHNUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9kb3QzU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZShkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9kb3QzU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCk7CisKKyAgICBkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKmRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCk7CisKKyAgICBkb3QzU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgKmRvdDNTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoZG90M1N0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKTsKKworICAgIGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKmRvdDNTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgodm9pZCAqKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgZG90M1N0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGRvdDNTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBkb3QzU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgZG90M1N0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIERPVDNTVEFUU1RBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfb2lkcy5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9kb3QzU3RhdHNUYWJsZV9vaWRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzliMTZjZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvZG90M1N0YXRzVGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsODIgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1vaWRzLm0yYyAxMjg1NSAyMDA1LTA5LTI3IDE1OjU2OjA4WiByc3RvcnkgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgRE9UM1NUQVRTVEFCTEVfT0lEU19ICisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX09JRFNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgZG90M1N0YXRzVGFibGUgCisgICAgICovCisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX09JRCAgICAgICAgICAgICAgMSwzLDYsMSwyLDEsMTAsNywyCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0lOREVYICAgICAgICAgMQorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTSU5ERVhfRkxBRyAgICAoMHgxIDw8IDApCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0FMSUdOTUVOVEVSUk9SUyAgICAgICAgIDIKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0FMSUdOTUVOVEVSUk9SU19GTEFHICAgICgweDEgPDwgMSkKKworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRkNTRVJST1JTICAgICAgICAgMworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRkNTRVJST1JTX0ZMQUcgICAgKDB4MSA8PCAyKQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTSU5HTEVDT0xMSVNJT05GUkFNRVMgICAgICAgICA0CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTSU5HTEVDT0xMSVNJT05GUkFNRVNfRkxBRyAgICAoMHgxIDw8IDMpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU01VTFRJUExFQ09MTElTSU9ORlJBTUVTICAgICAgICAgNQorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTTVVMVElQTEVDT0xMSVNJT05GUkFNRVNfRkxBRyAgICAoMHgxIDw8IDQpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1NRRVRFU1RFUlJPUlMgICAgICAgICA2CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTUUVURVNURVJST1JTX0ZMQUcgICAgKDB4MSA8PCA1KQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlMgICAgICAgICA3CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNERUZFUlJFRFRSQU5TTUlTU0lPTlNfRkxBRyAgICAoMHgxIDw8IDYpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0xBVEVDT0xMSVNJT05TICAgICAgICAgOAorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTTEFURUNPTExJU0lPTlNfRkxBRyAgICAoMHgxIDw8IDcpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0VYQ0VTU0lWRUNPTExJU0lPTlMgICAgICAgICA5CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNFWENFU1NJVkVDT0xMSVNJT05TX0ZMQUcgICAgKDB4MSA8PCA4KQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1RSQU5TTUlURVJST1JTICAgICAgICAgMTAKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0lOVEVSTkFMTUFDVFJBTlNNSVRFUlJPUlNfRkxBRyAgICAoMHgxIDw8IDkpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0NBUlJJRVJTRU5TRUVSUk9SUyAgICAgICAgIDExCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNDQVJSSUVSU0VOU0VFUlJPUlNfRkxBRyAgICAoMHgxIDw8IDEwKQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNGUkFNRVRPT0xPTkdTICAgICAgICAgMTMKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0ZSQU1FVE9PTE9OR1NfRkxBRyAgICAoMHgxIDw8IDEyKQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNJTlRFUk5BTE1BQ1JFQ0VJVkVFUlJPUlMgICAgICAgICAxNgorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTSU5URVJOQUxNQUNSRUNFSVZFRVJST1JTX0ZMQUcgICAgKDB4MSA8PCAxNSkKKworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRVRIRVJDSElQU0VUICAgICAgICAgMTcKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU0VUSEVSQ0hJUFNFVF9GTEFHICAgICgweDEgPDwgMTYpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1NZTUJPTEVSUk9SUyAgICAgICAgIDE4CisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNTWU1CT0xFUlJPUlNfRkxBRyAgICAoMHgxIDw8IDE3KQorCisjZGVmaW5lIENPTFVNTl9ET1QzU1RBVFNEVVBMRVhTVEFUVVMgICAgICAgICAxOQorI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTRFVQTEVYU1RBVFVTX0ZMQUcgICAgKDB4MSA8PCAxOCkKKworI2RlZmluZSBDT0xVTU5fRE9UM1NUQVRTUkFURUNPTlRST0xBQklMSVRZICAgICAgICAgMjAKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MQUJJTElUWV9GTEFHICAgICgweDEgPDwgMTkpCisKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTICAgICAgICAgMjEKKyNkZWZpbmUgQ09MVU1OX0RPVDNTVEFUU1JBVEVDT05UUk9MU1RBVFVTX0ZMQUcgICAgKDB4MSA8PCAyMCkKKworCisjZGVmaW5lIERPVDNTVEFUU1RBQkxFX01JTl9DT0wgICBDT0xVTU5fRE9UM1NUQVRTSU5ERVgKKyNkZWZpbmUgRE9UM1NUQVRTVEFCTEVfTUFYX0NPTCAgIENPTFVNTl9ET1QzU1RBVFNSQVRFQ09OVFJPTFNUQVRVUworCisJCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBET1QzU1RBVFNUQUJMRV9PSURTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvZXRoZXJsaWtlLW1pYi9kb3QzU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWY5MjMyYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2V0aGVybGlrZS1taWIvZG90M1N0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oCkBAIC0wLDAgKzEsNjUgQEAKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorI2luY2x1ZGUgPGlmYWRkcnMuaD4KKworLyogdXNlIGtlcm5lbCdzIGV0aHRvb2wuaCAgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cit0eXBlZGVmIF9fdTY0IHU2NDsKK3R5cGVkZWYgX191MzIgdTMyOwordHlwZWRlZiBfX3UxNiB1MTY7Cit0eXBlZGVmIF9fdTggdTg7CisjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorCisvKiBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBpbiB0aGUgc3lzdGVtICovCisKK3N0cnVjdCBpZm5hbWUgeworICAgIHN0cnVjdCBpZm5hbWUgKmlmbl9uZXh0OworICAgIGNoYXIgbmFtZSBbSUZfTkFNRVNJWkVdOworfTsKKworc3RydWN0IGlmbmFtZSAqZG90M3N0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChzdHJ1Y3QgaWZuYW1lICosIGludCAqKTsKK2ludCBkb3Qzc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQpOworaW50IGRvdDNzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSk7CitpbnQgX2RvdDNTdGF0c19pb2N0bF9nZXQoaW50IGZkLCBpbnQgd2hpY2gsIHN0cnVjdCBpZnJlcSAqaWZycSwgY29uc3QgY2hhciogbmFtZSk7CitpbnQgaW50ZXJmYWNlX2lvY3RsX2RvdDNzdGF0c19nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKTsKK2ludCBpbnRlcmZhY2VfaW9jdGxfZG90M3N0YXRzX2R1cGxleF9nZXQoZG90M1N0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKTsKKworCisvKiBmb3IgbWFpbnRhaW5hYmlsaXR5ICovCisKKyNkZWZpbmUgSU5URUxfUkVDRUlWRV9BTElHTl9FUlJPUlMgICAgICAgICAgICAgICAgICAgICAgInJ4X2FsaWduX2Vycm9ycyIKKyNkZWZpbmUgQlJPQURDT01fUkVDRUlWRV9BTElHTl9FUlJPUlMgICAgICAgICAgICAgICAgICAgSU5URUxfUkVDRUlWRV9BTElHTl9FUlJPUlMKKworI2RlZmluZSBJTlRFTF9UUkFOU01JVF9NVUxUSVBMRV9DT0xMSVNJT05TICAgICAgICAgICAgICAidHhfbXVsdGlfY29sbF9vayIKKyNkZWZpbmUgQlJPQURDT01fVFJBTlNNSVRfTVVMVElQTEVfQ09MTElTSU9OU19CTlgyICAgICAgInR4X211bHRpX2NvbGxpc2lvbnMiCisjZGVmaW5lIEJST0FEQ09NX1RSQU5TTUlUX01VTFRJUExFX0NPTExJU0lPTlNfVEczICAgICAgICJ0eF9tdWx0X2NvbGxpc2lvbnMiCisKKyNkZWZpbmUgSU5URUxfVFJBTlNNSVRfTEFURV9DT0xMSVNJT05TICAgICAgICAgICAgICAgICAgInR4X2Fib3J0X2xhdGVfY29sbCIKKyNkZWZpbmUgQlJPQURDT01fVFJBTlNNSVRfTEFURV9DT0xMSVNJT05TICAgICAgICAgICAgICAgInR4X2xhdGVfY29sbGlzaW9ucyIKKworI2RlZmluZSBJTlRFTF9UUkFOU01JVF9TSU5HTEVfQ09MTElTSU9OUyAgICAgICAgICAgICAgICAidHhfc2luZ2xlX2NvbGxfb2siCisjZGVmaW5lIEJST0FEQ09NX1RSQU5TTUlUX1NJTkdMRV9DT0xMSVNJT05TICAgICAgICAgICAgICJ0eF9zaW5nbGVfY29sbGlzaW9ucyIKKworI2RlZmluZSBCUk9BRENPTV9UUkFOU01JVF9FWENFU1NfQ09MTElTSU9OU19CTlgyICAgICAgICAidHhfZXhjZXNzX2NvbGxpc2lvbnMiCisjZGVmaW5lIEJST0FEQ09NX1RSQU5TTUlUX0VYQ0VTU19DT0xMSVNJT05TX1RHMyAgICAgICAgICJ0eF9leGNlc3NpdmVfY29sbGlzaW9ucyIKKworCisjZGVmaW5lIERPVDNTVEFUU0FMSUdOTUVOVEVSUk9SUyh4KSAgICAgICAgICAgIHN0cnN0cih4LCBJTlRFTF9SRUNFSVZFX0FMSUdOX0VSUk9SUykKKworI2RlZmluZSBET1QzU1RBVFNNVUxUSVBMRUNPTExJU0lPTkZSQU1FUyh4KSAgICAoc3Ryc3RyKHgsIElOVEVMX1RSQU5TTUlUX01VTFRJUExFX0NPTExJU0lPTlMpKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJzdHIoeCwgQlJPQURDT01fVFJBTlNNSVRfTVVMVElQTEVfQ09MTElTSU9OU19CTlgyKSkgfHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3Ryc3RyKHgsIEJST0FEQ09NX1RSQU5TTUlUX01VTFRJUExFX0NPTExJU0lPTlNfVEczKSkKKworI2RlZmluZSBET1QzU1RBVFNMQVRFQ09MTElTSU9OUyh4KSAgICAgICAgICAgICAoc3Ryc3RyKHgsIElOVEVMX1RSQU5TTUlUX0xBVEVfQ09MTElTSU9OUykpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnN0cih4LCBCUk9BRENPTV9UUkFOU01JVF9MQVRFX0NPTExJU0lPTlMpKQorCisjZGVmaW5lIERPVDNTVEFUU1NJTkdMRUNPTExJU0lPTkZSQU1FUyh4KSAgICAgIChzdHJzdHIoeCwgSU5URUxfVFJBTlNNSVRfU0lOR0xFX0NPTExJU0lPTlMpKSB8fCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJzdHIoeCwgQlJPQURDT01fVFJBTlNNSVRfU0lOR0xFX0NPTExJU0lPTlMpKQorCisjZGVmaW5lIERPVDNTVEFUU0VYQ0VTU0lWRUNPTExJU0lPTlMoeCkgICAgICAgIChzdHJzdHIoeCwgQlJPQURDT01fVFJBTlNNSVRfRVhDRVNTX0NPTExJU0lPTlNfQk5YMikpIHx8IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnN0cih4LCBCUk9BRENPTV9UUkFOU01JVF9FWENFU1NfQ09MTElTSU9OU19URzMpKQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmMKaW5kZXggMGNlODE3Yi4uNTg2OWQzNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuYwpAQCAtMTYsMzggKzE2LDEzIEBACiAjaW5jbHVkZSA8c3RyaW5ncy5oPgogI2VuZGlmCiAKLS8qCi0gKiBuZWVkZWQgYnkgdXRpbF9mdW5jcy5oIAotICovCi0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGlmZGVmIFdJTjMyCi0jICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZW5kaWYKLSMgaW5jbHVkZSA8dGltZS5oPgotI2Vsc2UKLSMgaWYgSEFWRV9TWVNfVElNRV9ICi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jIGVuZGlmCi0jZW5kaWYKLQotI2lmIEhBVkVfV0lOU09DS19ICi0jaW5jbHVkZSA8d2luc29jay5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogLyoKICAqIGhlYWRlcl9nZW5lcmljKCkgY29tZXMgZnJvbSBoZXJlIAogICovCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogLyoKICAqIGluY2x1ZGUgb3VyIC5oIGZpbGUgCkBAIC0xMDYsNyArODEsNyBAQAogICAgICAqICAgICAgMjogQVNOX09DVEVUX1NUUjoKICAgICAgKiAgICAgICAgICBUaGUgdHlwZSBvZiB0aGUgb2JqZWN0LgogICAgICAqICAgICAgICAgIFZhbGlkIHR5cGVzIGFyZSBsaXN0ZWQgaW4gPHNubXBfaW1wbC5oPgotICAgICAqICAgICAgMzogUk9OTFkgKG9yIFJXUklURSk6CisgICAgICogICAgICAzOiBORVRTTk1QX09MREFQSV9ST05MWSAob3IgTkVUU05NUF9PTERBUElfUldSSVRFKToKICAgICAgKiAgICAgICAgICBXaGV0aGVyIHRoaXMgb2JqZWN0IGNhbiBiZSBTRVQgb3Igbm90LgogICAgICAqICAgICAgNDogdmFyX2V4YW1wbGU6CiAgICAgICogICAgICAgICAgVGhlIGNhbGxiYWNrIHJvdXRpbmUsIHVzZWQgd2hlbiB0aGUgb2JqZWN0IGlzIHF1ZXJpZWQuCkBAIC0xMjIsMTUgKzk3LDI0IEBACiAgICAgICogICAgICAgICAgICB0byBvYnRhaW4gdGhlIGZ1bGwgT0lEIG9mIGVhY2ggZW50cnkuCiAgICAgICovCiBzdHJ1Y3QgdmFyaWFibGUyIGV4YW1wbGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0VYQU1QTEVTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXhhbXBsZSwgMSwgezF9fSwKLSAgICB7RVhBTVBMRUlOVEVHRVIsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leGFtcGxlLCAyLCB7MiwgMX19LAotICAgIHtFWEFNUExFT0JKRUNUSUQsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfZXhhbXBsZSwgMiwgezIsIDJ9fSwKLSAgICB7RVhBTVBMRVRJTUVUSUNLUywgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9leGFtcGxlLCAxLCB7M319LAotICAgIHtFWEFNUExFSVBBRERSRVNTLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2V4YW1wbGUsIDEsIHs0fX0sCi0gICAge0VYQU1QTEVDT1VOVEVSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leGFtcGxlLCAxLCB7NX19LAotICAgIHtFWEFNUExFR0FVR0UsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9leGFtcGxlLCAxLCB7Nn19LAotICAgIHtFWEFNUExFVFJJR0dFUlRSQVAsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leGFtcGxlLCAxLCB7N319LAotICAgIHtFWEFNUExFVFJJR0dFUlRSQVAyLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXhhbXBsZSwgMSwgezh9fQorICAgIHtFWEFNUExFU1RSSU5HLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4YW1wbGUsIDEsIHsxfX0sCisgICAge0VYQU1QTEVJTlRFR0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXhhbXBsZSwgMiwgezIsIDF9fSwKKyAgICB7RVhBTVBMRU9CSkVDVElELCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4YW1wbGUsIDIsIHsyLCAyfX0sCisgICAge0VYQU1QTEVUSU1FVElDS1MsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezN9fSwKKyAgICB7RVhBTVBMRUlQQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9leGFtcGxlLCAxLCB7NH19LAorICAgIHtFWEFNUExFQ09VTlRFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezV9fSwKKyAgICB7RVhBTVBMRUdBVUdFLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezZ9fSwKKyAgICB7RVhBTVBMRVRSSUdHRVJUUkFQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXhhbXBsZSwgMSwgezd9fSwKKyAgICB7RVhBTVBMRVRSSUdHRVJUUkFQMiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2V4YW1wbGUsIDEsIHs4fX0KIH07CiAKICAgICAvKgpAQCAtMzM5LDcgKzMyMyw3IEBACiAgICAgICovCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKICAgICBjYXNlIEVYQU1QTEVTVFJJTkc6Ci0gICAgICAgIHNwcmludGYoc3RyaW5nLCBleGFtcGxlX3N0cik7CisgICAgICAgIHN0cmNweShzdHJpbmcsIGV4YW1wbGVfc3RyKTsKICAgICAgICAgLyoKICAgICAgICAgICogTm90ZSB0aGF0IHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIGFuc3dlciB3aWxsIGJlIGFuCiAgICAgICAgICAqICBpbnRlZ2VyIGRvZXMgbm90IGhvbGQgdHJ1ZSBpbiB0aGlzIGNhc2UsIHNvIHRoZSBsZW5ndGgKQEAgLTQ2OCwxMyArNDUyLDE0IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdUWVBFOwogICAgICAgICB9CiAgICAgICAgIGlmICh2YXJfdmFsX2xlbiA+IHNpemVvZihsb25nKSkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImV4YW1wbGUiLCAid3JvbmcgbGVuZ3RoICV4IiwgdmFyX3ZhbF9sZW4pKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIGxlbmd0aCAlIiBORVRTTk1QX1BSSXogInUiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyX3ZhbF9sZW4pKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKICAgICAgICAgfQogCiAgICAgICAgIGludHZhbCA9ICooKGxvbmcgKikgdmFyX3ZhbCk7CiAgICAgICAgIGlmIChpbnR2YWwgPiBNQVhfRVhBTVBMRV9JTlQpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIHZhbHVlICV4IiwgaW50dmFsKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyB2YWx1ZSAlbHgiLCBpbnR2YWwpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtNTUzLDEzICs1MzgsMTQgQEAKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKGxvbmcpKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyBsZW5ndGggJXgiLCB2YXJfdmFsX2xlbikpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV4YW1wbGUiLCAid3JvbmcgbGVuZ3RoICUiIE5FVFNOTVBfUFJJeiAidSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJfdmFsX2xlbikpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOwogICAgICAgICB9CiAKICAgICAgICAgaW50dmFsID0gKigobG9uZyAqKSB2YXJfdmFsKTsKICAgICAgICAgaWYgKGludHZhbCAhPSAxKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyB2YWx1ZSAleCIsIGludHZhbCkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV4YW1wbGUiLCAid3JvbmcgdmFsdWUgJWx4IiwgaW50dmFsKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdWQUxVRTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTYyMCwxMCArNjA2LDEwIEBACiAgKiBzZWNvbmQgc2luY2UgdGhlIG5ldHdvayBtYW5hZ2VtZW50IHBvcnRpb24gb2Ygc3lzdGVtIHdhcyBsYXN0CiAgKiByZWluaXRpYWxpemVkLiAgLSBzbm1wVHJhcE9JRC4wIHdoaWNoIGlzIHBhcnQgb2YgdGhlIHRyYXAgZ3JvdXAgU05NUHYyCiAgKiBNSUIgd2hvc2UgdmFsdWUgaXMgdGhlIG9iamVjdC1pZCBvZiB0aGUgc3BlY2lmaWMgdHJhcCB5b3UgaGF2ZSBkZWZpbmVkCi0gKiBpbiB5b3VyIG93biBNSUIuICBPdGhlciB2YXJpYWJsZXMgY2FuIGJlIGFkZGVkIHRvIGNhcmFjdGVyaXplIHRoZQorICogaW4geW91ciBvd24gTUlCLiAgT3RoZXIgdmFyaWFibGVzIGNhbiBiZSBhZGRlZCB0byBjaGFyYWN0ZXJpemUgdGhlCiAgKiB0cmFwLgogICogCi0gKiBUaGUgZnVuY3Rpb24gc2VuZF92MnRyYXAgYWRkcyBhdXRvbWF0aWNhbGx5cyB0aGUgdHdvIG9iamVjdHMgYnV0IHRoZQorICogVGhlIGZ1bmN0aW9uIHNlbmRfdjJ0cmFwIGFkZHMgYXV0b21hdGljYWxseSB0aGUgdHdvIG9iamVjdHMgYnV0IHRoZQogICogdmFsdWUgb2Ygc25tcFRyYXBPSUQuMCBpcyAwLjAgYnkgZGVmYXVsdC4gSWYgeW91IHdhbnQgdG8gYWRkIHlvdXIgdHJhcAogICogbmFtZSwgeW91IGhhdmUgdG8gcmVjb25zdHJ1Y3QgdGhpcyBvYmplY3QgYW5kIHRvIGFkZCB5b3VyIG93bgogICogdmFyaWFibGUuCkBAIC02NjMsMTMgKzY0OSwxNCBAQAogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKICAgICAgICAgfQogICAgICAgICBpZiAodmFyX3ZhbF9sZW4gPiBzaXplb2YobG9uZykpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIGxlbmd0aCAleCIsIHZhcl92YWxfbGVuKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyBsZW5ndGggJSIgTkVUU05NUF9QUkl6ICJ1IiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhcl92YWxfbGVuKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfV1JPTkdMRU5HVEg7CiAgICAgICAgIH0KIAogICAgICAgICBpbnR2YWwgPSAqKChsb25nICopIHZhcl92YWwpOwogICAgICAgICBpZiAoaW50dmFsICE9IDEpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJleGFtcGxlIiwgIndyb25nIHZhbHVlICV4IiwgaW50dmFsKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXhhbXBsZSIsICJ3cm9uZyB2YWx1ZSAlbHgiLCBpbnR2YWwpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvZXhhbXBsZS5oCmluZGV4IDlkZTU3NDguLjA0YjczZTAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL2V4YW1wbGUuaAorKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy9leGFtcGxlLmgKQEAgLTE0LDEwICsxNCwxMCBAQAogI2VuZGlmCiAKICAgICAvKgotICAgICAqIFdlIHVzZSAnaGVhZGVyX2dlbmVyaWMnIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlLAorICAgICAqIFdlIHVzZSAnaGVhZGVyX2dlbmVyaWMnIGZyb20gdGhlIHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMgbW9kdWxlLAogICAgICAqICBzbyBtYWtlIHN1cmUgdGhpcyBtb2R1bGUgaXMgaW5jbHVkZWQgaW4gdGhlIGFnZW50LgogICAgICAqLwotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvbmV0U25tcEhvc3RzVGFibGUuYwppbmRleCAzNmFiN2UzLi43ZjFlZGFlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy9uZXRTbm1wSG9zdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlLmMKQEAgLTExNCwxOSArMTE0LDE1IEBACiAKICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcjsKICAgICBzdHJ1Y3QgY29tbWl0SW5mbyAqY2kgPSBOVUxMOwogCiAgICAgdm9pZCAgICAgICAgICAgKmRhdGFfY29udGV4dCA9IE5VTEw7CiAKLSAgICBvaWQgICAgICAgICAgICAqc3VmZml4OwotICAgIHNpemVfdCAgICAgICAgICBzdWZmaXhfbGVuOwotCiAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CiAgICAgICAgIC8qIGNvbHVtbiBhbmQgcm93IGluZGV4IGVuY29kZWQgcG9ydGlvbiAqLwotICAgICAgICB2YXIgPSByZXF1ZXN0LT5yZXF1ZXN0dmI7Ci0gICAgICAgIHN1ZmZpeCAgICAgPSB2YXItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDE7Ci0gICAgICAgIHN1ZmZpeF9sZW4gPSB2YXItPm5hbWVfbGVuZ3RoIC0gKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMSk7CisgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyID0gcmVxdWVzdC0+cmVxdWVzdHZiOworICAgICAgICBjb25zdCBvaWQgKiBjb25zdCBzdWZmaXggPSB2YXItPm5hbWUgKyByZWdpbmZvLT5yb290b2lkX2xlbiArIDE7CisgICAgICAgIGNvbnN0IHNpemVfdCBzdWZmaXhfbGVuID0gdmFyLT5uYW1lX2xlbmd0aCAtIChyZWdpbmZvLT5yb290b2lkX2xlbiArIDEpOwogCiAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQgIT0gMCkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jIGIvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5jCmluZGV4IDk3YThmNDcuLmVhOTBhYjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuYworKysgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmMKQEAgLTM1LDcgKzM1LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAidWNkRGVtb1B1YmxpYy5oIgogCiAjZGVmaW5lIE1ZTUFYIDEwMjQKQEAgLTczLDExICs3MywxNCBAQAogICovCiAKIHN0cnVjdCB2YXJpYWJsZTIgdWNkRGVtb1B1YmxpY192YXJpYWJsZXNbXSA9IHsKLSAgICB7VUNEREVNT1JFU0VUS0VZUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3VjZERlbW9QdWJsaWMsIDEsIHsxfX0sCi0gICAge1VDRERFTU9QVUJMSUNTVFJJTkcsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VjZERlbW9QdWJsaWMsIDEsCi0gICAgIHsyfX0sCi0gICAge1VDRERFTU9VU0VSTElTVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdWNkRGVtb1B1YmxpYywgMSwgezN9fSwKLSAgICB7VUNEREVNT1BBU1NQSFJBU0UsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VjZERlbW9QdWJsaWMsIDEsIHs0fX0sCisgICAge1VDRERFTU9SRVNFVEtFWVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91Y2REZW1vUHVibGljLCAxLCB7MX19LAorICAgIHtVQ0RERU1PUFVCTElDU1RSSU5HLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91Y2REZW1vUHVibGljLCAxLCB7Mn19LAorICAgIHtVQ0RERU1PVVNFUkxJU1QsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VjZERlbW9QdWJsaWMsIDEsIHszfX0sCisgICAge1VDRERFTU9QQVNTUEhSQVNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91Y2REZW1vUHVibGljLCAxLCB7NH19LAogCiB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmggYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy91Y2REZW1vUHVibGljLmgKaW5kZXggZmQ5ZjEyZi4uMjUzZjRmZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvdWNkRGVtb1B1YmxpYy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3VjZERlbW9QdWJsaWMuaApAQCAtNiwxMCArNiwxMCBAQAogI2RlZmluZSBfTUlCR1JPVVBfVUNEREVNT1BVQkxJQ19ICiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlCiAgKi8KIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9leGFtcGxlcy93YXRjaGVkLmMgYi9hZ2VudC9taWJncm91cC9leGFtcGxlcy93YXRjaGVkLmMKaW5kZXggNTgxMjJjNC4uYjQ4NmJhYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvZXhhbXBsZXMvd2F0Y2hlZC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2V4YW1wbGVzL3dhdGNoZWQuYwpAQCAtNDUsNyArNDUsNyBAQAogICAgICAqIHZhcmlhYmxlcyBuZWVkZWQgZm9yIHJlZ2lzdHJhdGlvbgogICAgICAqLwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87Ci0gICAgbmV0c25tcF93YXRjaGVyX2luZm8gKndhdGNoZXJfaW5mbzsKKyAgICBzdGF0aWMgbmV0c25tcF93YXRjaGVyX2luZm8gd2F0Y2hlcl9pbmZvOwogICAgIGludCB3YXRjaGVyX2ZsYWdzOwogCiAgICAgLyoKQEAgLTU3LDggKzU3LDYgQEAKICAgICAgICAgICAgICAgICBteV9zdHJpbmcpKTsKIAogICAgIC8qCi0gICAgICogY3JlYXRlIHRoZSByZWdpc3RyYXRpb24gaW5mbyBmb3Igb3VyIHN0cmluZy4gSWYgeW91IHdhbnQgdG8KLSAgICAgKgogICAgICAqIElmIHdlIHdhbnRlZCBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIHdhcyByZXRyaWV2ZWQgb3Igc2V0CiAgICAgICogKGV2ZW4gdGhvdWdoIHRoZSBkZXRhaWxzIG9mIGRvaW5nIHRoaXMgYXJlIGhhbmRsZWQgZm9yIHlvdSksCiAgICAgICogeW91IGNvdWxkIGNoYW5nZSB0aGUgTlVMTCBwb2ludGVyIGJlbG93IHRvIGEgdmFsaWQgaGFuZGxlcgpAQCAtNzIsMzIgKzcwLDI4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIC8qCi0gICAgICogdGhlIHR3byBvcHRpb25zIGZvciBhIHN0cmluZyB3YXRjaGVyIGFyZToKKyAgICAgKiB0aGUgdGhyZWUgb3B0aW9ucyBmb3IgYSBzdHJpbmcgd2F0Y2hlciBhcmU6CiAgICAgICogICBmaXhlZCBzaXplIHN0cmluZyAobGVuZ3RoIG5ldmVyIGNoYW5nZXMpCiAgICAgICogICB2YXJpYWJsZSBzaXplIChsZW5ndGggY2FuIGJlIDAgLSBNQVgsIGZvciBzb21lIE1BWCkKKyAgICAgKiAgIGMgc3RyaW5nIChsZW5ndGggY2FuIGJlIDAgLSBNQVgtMSBmb3Igc29tZSBtYXgsIFwwIGlzIG5vdCBhIHZhbGlkCisgICAgICogICAgIGNoYXJhY3RlciBpbiB0aGUgc3RyaW5nLCB0aGUgbGVuZ3RoIGlzIHByb3ZpZGVkIGJ5IHN0cmxlbikKICAgICAgKgogICAgICAqIHdlJ2xsIHVzZSBhIHZhcmlhYmxlIGxlbmd0aCBzdHJpbmcuCiAgICAgICovCiAgICAgd2F0Y2hlcl9mbGFncyA9IFdBVENIRVJfTUFYX1NJWkU7CiAKICAgICAvKgotICAgICAqIGNyZWF0ZSB0aGUgd2F0Y2hlciBpbmZvIGZvciBvdXIgc3RyaW5nLCBhbmQgc2V0IHRoZSBtYXggc2l6ZS4KKyAgICAgKiBjcmVhdGUgdGhlIHdhdGNoZXIgaW5mbyBmb3Igb3VyIHN0cmluZy4KICAgICAgKi8KLSAgICB3YXRjaGVyX2luZm8gPQotICAgICAgICBuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm8obXlfc3RyaW5nLCBzdHJsZW4obXlfc3RyaW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIHdhdGNoZXJfZmxhZ3MpOwotICAgIHdhdGNoZXJfaW5mby0+bWF4X3NpemUgPSBzaXplb2YobXlfc3RyaW5nKTsKKyAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNigmd2F0Y2hlcl9pbmZvLCBteV9zdHJpbmcsIHN0cmxlbihteV9zdHJpbmcpLAorCQkJICAgICAgIEFTTl9PQ1RFVF9TVFIsIHdhdGNoZXJfZmxhZ3MsCisJCQkgICAgICAgc2l6ZW9mKG15X3N0cmluZyksIE5VTEwpOwogCiAgICAgLyoKICAgICAgKiB0aGUgbGluZSBiZWxvdyByZWdpc3RlcnMgb3VyICJteV9zdHJpbmciIHZhcmlhYmxlIGFib3ZlIGFzCiAgICAgICogYWNjZXNzaWJsZSBhbmQgbWFrZXMgaXQgd3JpdGFibGUuIAotICAgICAqIAotICAgICAqIElmIHdlIHdhbnRlZCBhIGNhbGxiYWNrIHdoZW4gdGhlIHZhbHVlIHdhcyByZXRyaWV2ZWQgb3Igc2V0Ci0gICAgICogKGV2ZW4gdGhvdWdoIHRoZSBkZXRhaWxzIG9mIGRvaW5nIHRoaXMgYXJlIGhhbmRsZWQgZm9yIHlvdSksCi0gICAgICogeW91IGNvdWxkIGNoYW5nZSB0aGUgTlVMTCBwb2ludGVyIGJlbG93IHRvIGEgdmFsaWQgaGFuZGxlcgotICAgICAqIGZ1bmN0aW9uLiAKICAgICAgKi8KLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UocmVnaW5mbywgd2F0Y2hlcl9pbmZvKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UocmVnaW5mbywgJndhdGNoZXJfaW5mbyk7CiAKICAgICBERUJVR01TR1RMKCgiZXhhbXBsZV9zdHJpbmdfaW5zdGFuY2UiLAogICAgICAgICAgICAgICAgICJEb25lIGluaXRhbGl6aW5nIGV4YW1wbGUgc3RyaW5nIGluc3RhbmNlXG4iKSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oCmluZGV4IGVkZDMzODcuLjVlNDJlOTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS5oCkBAIC0xNSw3ICsxNSw3IEBACiAjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL2NwdS9jcHVfa2luZm8pCiAKLSNlbGlmIChkZWZpbmVkKG5ldGJzZCkgfHwgZGVmaW5lZChuZXRic2QxKSB8fCBkZWZpbmVkKG5ldGJzZGVsZikgfHwgZGVmaW5lZChuZXRic2RlbGYyKXx8IGRlZmluZWQobmV0YnNkZWxmMykgfHwgZGVmaW5lZChvcGVuYnNkKSB8fCBkZWZpbmVkKGZyZWVic2Q0KSAgfHwgZGVmaW5lZChmcmVlYnNkNSkgfHwgZGVmaW5lZChmcmVlYnNkNikpCisjZWxpZiAoZGVmaW5lZChuZXRic2QpIHx8IGRlZmluZWQobmV0YnNkMSkgfHwgZGVmaW5lZChuZXRic2RlbGYpIHx8IGRlZmluZWQobmV0YnNkZWxmMil8fCBkZWZpbmVkKG5ldGJzZGVsZjMpIHx8IGRlZmluZWQob3BlbmJzZCkgfHwgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkgfHwgZGVmaW5lZChmcmVlYnNkNikpCiBjb25maWdfcmVxdWlyZShoYXJkd2FyZS9jcHUvY3B1X3N5c2N0bCkKIAogI2VsaWYgKGRlZmluZWQoZnJlZWJzZDIpIHx8IGRlZmluZWQoZnJlZWJzZDMpKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9rc3RhdC5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9rc3RhdC5jCmluZGV4IGUxNmFmYjcuLjJlOGRiMjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfa3N0YXQuYworKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2tzdGF0LmMKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICAgICAgICAgaSAgICA9IGtzcC0+a3NfaW5zdGFuY2U7CiAgICAgICAgICAgICBjcHUyID0gbmV0c25tcF9jcHVfZ2V0X2J5SWR4KCBpLCAwICk7CiAgICAgICAgICAgICBpZiAoICFjcHUyICkgIAotICAgICAgICAgICAgICAgIGJyZWFrOyAgIC8qIG9yIGNvbnRpbnVlID8gKi8gICAgLyogU2tpcCBuZXcgQ1BVcyAqLworICAgICAgICAgICAgICAgIGJyZWFrOyAgIC8qIG9yIGNvbnRpbnVlID8gKi8gIC8qIFNraXAgbmV3IENQVXMgKi8KICAgICAgICAgICAgIGlmICgoa3NwLT5rc190eXBlICE9IEtTVEFUX1RZUEVfUkFXKSB8fAogICAgICAgICAgICAgICAgIChrc3AtPmtzX2RhdGFfc2l6ZSAhPSBzaXplb2YoY3MpKXx8CiAgICAgICAgICAgICAgICAgKGtzdGF0X3JlYWQoa3N0YXRfZmQsIGtzcCwgJmNzKSA9PSAtMSkpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfbGludXguYwppbmRleCBlMjdlMTJlLi4yMWNiMWFhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9saW51eC5jCkBAIC01Nyw3ICs1Nyw3IEBACiAjZW5kaWYKICAgICAgICAgfQogI2lmIGRlZmluZWQoX19zMzkwX18pIHx8IGRlZmluZWQoX19zMzkweF9fKQotCS8qIHMzOTAgbWF5IGRpZmZlcmVudCBmb3JtYXQgb2YgQ1BVX0ZJTEUgKi8KKwkvKiBzMzkwIG1heSBoYXZlIGRpZmZlcmVudCBmb3JtYXQgb2YgQ1BVX0ZJTEUgKi8KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBpZiAoc3NjYW5mKCBidWYsICJwcm9jZXNzb3IgJWQ6IiwgJmkgKSA9PSAxKSAgewogICAgICAgICAgICAgICAgIG4rKzsKQEAgLTIzMiw3ICsyMzIsNiBAQAogCSAgICB9CiAgICAgICAgIH0KICAgICAgICAgY2xvc2Uodm1zdGF0ZmQpOwotCiAgICAgICAgIGlmICggYnl0ZXNfcmVhZCA8IDAgKSB7CiAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoVk1TVEFUX0ZJTEUgInJlYWQgZXJyb3IiKTsKICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9jcHUvY3B1X3N5c2N0bC5jCmluZGV4IGM2MTAyNjkuLjU4MzI4YTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2NwdS9jcHVfc3lzY3RsLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvY3B1L2NwdV9zeXNjdGwuYwpAQCAtMTAzLDggKzEwMywxMyBAQAogICAgICNkZWZpbmUgTlNfVk1fU1dUQ0gJCXN3dGNoCiAgICAgI2RlZmluZSBOU19WTV9QQUdFSU4JcGFnZWlucwogICAgICNkZWZpbmUgTlNfVk1fUEFHRU9VVAlwZHBhZ2VvdXRzCisjaWZkZWYgSEFWRV9TVFJVQ1RfVVZNRVhQX1BHU1dBUElOCisgICAgI2RlZmluZSBOU19WTV9TV0FQSU4JcGdzd2FwaW4KKyAgICAjZGVmaW5lIE5TX1ZNX1NXQVBPVVQJcGdzd2Fwb3V0CisjZWxzZQogICAgICNkZWZpbmUgTlNfVk1fU1dBUElOCXN3YXBpbnMKICAgICAjZGVmaW5lIE5TX1ZNX1NXQVBPVVQJc3dhcG91dHMKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChWTV9VVk1FWFAyKSAgICAgICAgICAgICAgICAgICAvKiBOZXRCU0QgMS42KyAqLwogI2RlZmluZSBORVRTTk1QX1ZNX1NUQVRTICAgICAgIFZNX1VWTUVYUDIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTAyMmZmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy5oCkBAIC0wLDAgKzEsOCBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvZnN5cy9od19mc3lzKQorI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfbW50Y3RsKQorI2VsaWYgZGVmaW5lZChIQVZFX0dFVFZGU1NUQVQpIHx8IGRlZmluZWQoSEFWRV9HRVRGU1NUQVQpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cykKKyNlbHNlCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzL2ZzeXNfbW50ZW50KQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL2ZzeXNfZ2V0ZnNzdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzAwZTAzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX2dldGZzc3RhdHMuYwpAQCAtMCwwICsxLDE2MiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmg+CisjaW5jbHVkZSAiaGFyZHdhcmUvZnN5cy9od19mc3lzLmgiCisKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19NT1VOVF9ICisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TVEFUVkZTX0gKKyNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgorI2VuZGlmCisKKworICAgIC8qCisgICAgICogSGFuZGxlIG1pbm9yIG5hbWluZyBkaWZmZXJlbmNlcyBiZXR3ZWVuIHN0YXRmcy9zdGF0dmZzCisgICAgICovCisjaWYgZGVmaW5lZChfVkZTX05BTUVMRU4pCisjZGVmaW5lIE5TRlNfTkFNRUxFTiAgX1ZGU19OQU1FTEVOCisjZWxzZQorI2RlZmluZSBOU0ZTX05BTUVMRU4gIE1OQU1FTEVOCisjZW5kaWYKKworI2lmIGRlZmluZWQoSEFWRV9HRVRWRlNTVEFUKSAmJiBkZWZpbmVkKF9fTmV0QlNEX18pCisjZGVmaW5lIE5TRlNfR0VURlNTVEFUICBnZXR2ZnNzdGF0CisjZGVmaW5lIE5TRlNfU1RBVEZTICAgICBzdGF0dmZzCisjZGVmaW5lIE5TRlNfRkxBR1MgICAgICBmX2ZsYWcKKyNlbHNlCisjZGVmaW5lIE5TRlNfR0VURlNTVEFUICBnZXRmc3N0YXQKKyNkZWZpbmUgTlNGU19TVEFURlMgICAgIHN0YXRmcworI2RlZmluZSBOU0ZTX0ZMQUdTICAgICAgZl9mbGFncworI2VuZGlmCisKK2ludAorX2ZzX3R5cGUoIGNoYXIgKnR5cGVuYW1lICkKK3sKKyAgICBERUJVR01TR1RMKCgiZnN5czp0eXBlIiwgIkNsYXNzaWZ5aW5nICVzXG4iLCB0eXBlbmFtZSkpOworCisgICAgaWYgKCAhdHlwZW5hbWUgfHwgKnR5cGVuYW1lPT0nXDAnICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX1VOS05PV047CisKKyNpbmNsdWRlICJtb3VudHMuaCIKKworICAgICAgIC8qCisgICAgICAgICogTGlzdCBvZiBtb3VudCB0eXBlcyBmcm9tIDxzeXMvbW91bnQuaD4KKyAgICAgICAgKi8KKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU9VTlRfRkZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9VRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0JFUktFTEVZOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9ORlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX05GUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU9VTlRfTUZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9NRlM7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1PVU5UX01TRE9TKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9NU0RPU0ZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9GQVQ7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1PVU5UX0FGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfQUZTOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNT1VOVF9DRDk2NjApICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0lTTzk2NjA7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1PVU5UX0VYVDJGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfRVhUMjsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU9VTlRfTlRGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfTlRGUzsKKworICAgICAgIC8qCisgICAgICAgICogTmV0QlNEIGFsc28gcmVjb2duaXNlcyB0aGUgZm9sbG93aW5nIGZpbGVzeXN0ZW0gdHlwZXM6CisgICAgICAgICogICAgIE1PVU5UX05VTEwKKyAgICAgICAgKiAgICAgTU9VTlRfT1ZFUkxBWQorICAgICAgICAqICAgICBNT1VOVF9VTUFQCisgICAgICAgICogICAgIE1PVU5UX1VOSU9OCisgICAgICAgICogICAgIE1PVU5UX0NGUy9DT0RBCisgICAgICAgICogICAgIE1PVU5UX0ZJTEVDT1JFCisgICAgICAgICogICAgIE1PVU5UX1NNQkZTCisgICAgICAgICogICAgIE1PVU5UX1BUWUZTCisgICAgICAgICogT3BlbkJTRCBhbHNvIHJlY29nbmlzZXMgdGhlIGZvbGxvd2luZyBmaWxlc3lzdGVtIHR5cGVzOgorICAgICAgICAqICAgICBNT1VOVF9MT0ZTCisgICAgICAgICogICAgIE1PVU5UX05DUEZTCisgICAgICAgICogICAgIE1PVU5UX1hGUworICAgICAgICAqICAgICBNT1VOVF9VREYKKyAgICAgICAgKiBCb3RoIG9mIHRoZW0gcmVjb2duaXNlIHRoZSBmb2xsb3dpbmcgZmlsZXN5c3RlbSB0eXBlczoKKyAgICAgICAgKiAgICAgTU9VTlRfTEZTCisgICAgICAgICogICAgIE1PVU5UX0ZERVNDCisgICAgICAgICogICAgIE1PVU5UX1BPUlRBTAorICAgICAgICAqICAgICBNT1VOVF9LRVJORlMKKyAgICAgICAgKiAgICAgTU9VTlRfUFJPQ0ZTCisgICAgICAgICogICAgIE1PVU5UX0FET1NGUworICAgICAgICAqCisgICAgICAgICogQWxsIG9mIHRoZXNlIGZpbGVzeXN0ZW1zIGFyZSBtYXBwZWQgdG8gTkVUU05NUF9GU19UWVBFX09USEVSCisgICAgICAgICogICBzbyB3aWxsIGJlIHBpY2tlZCB1cCBieSB0aGUgZm9sbG93aW5nIGRlZmF1bHQgYnJhbmNoLgorICAgICAgICAqLworICAgIGVsc2UKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX09USEVSOworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sKKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKQoreworICAgIGludCBuLCBpOworICAgIHN0cnVjdCBOU0ZTX1NUQVRGUyAqc3RhdHM7CisgICAgbmV0c25tcF9mc3lzX2luZm8gKmVudHJ5OworCisgICAgLyoKKyAgICAgKiBSZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IG1vdW50ZWQgZmlsZXN5c3RlbXMuLi4KKyAgICAgKi8KKyAgICBuID0gTlNGU19HRVRGU1NUQVQoIE5VTEwsIDAsIDAgKTsKKyAgICBpZiAoIG49PTAgKQorICAgICAgICByZXR1cm47CisgICAgc3RhdHMgPSBtYWxsb2MoIG4gKiBzaXplb2YoIHN0cnVjdCBOU0ZTX1NUQVRGUyApKTsKKyAgICBuID0gTlNGU19HRVRGU1NUQVQoIHN0YXRzLCBuICogc2l6ZW9mKCBzdHJ1Y3QgTlNGU19TVEFURlMgKSwgTU5UX05PV0FJVCApOworCisgICAgLyoKKyAgICAgKiAuLi4gYW5kIGluc2VydCB0aGlzIGludG8gdGhlIGZpbGVzeXN0ZW0gY29udGFpbmVyLgorICAgICAqLworICAgIGZvciAoIGk9MDsgaTxuOyBpKysgKSB7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9mc3lzX2J5X3BhdGgoIHN0YXRzW2ldLmZfbW50b25uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0ZTX0ZJTkRfQ1JFQVRFICk7CisgICAgICAgIGlmICghZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBzdHJsY3B5KCBlbnRyeS0+cGF0aCwgICBzdGF0c1tpXS5mX21udG9ubmFtZSwgICBzaXplb2YoZW50cnktPnBhdGgpKTsKKyAgICAgICAgZW50cnktPnBhdGhbc2l6ZW9mKGVudHJ5LT5wYXRoKS0xXSA9ICdcMCc7CisgICAgICAgIHN0cmxjcHkoIGVudHJ5LT5kZXZpY2UsIHN0YXRzW2ldLmZfbW50ZnJvbW5hbWUsIHNpemVvZihlbnRyeS0+ZGV2aWNlKSk7CisgICAgICAgIGVudHJ5LT5kZXZpY2Vbc2l6ZW9mKGVudHJ5LT5kZXZpY2UpLTFdID0gJ1wwJzsKKyAgICAgICAgZW50cnktPnVuaXRzID0gc3RhdHNbaV0uZl9ic2l6ZTsgICAgLyogb3IgZl9mcnNpemUgKi8KKyAgICAgICAgZW50cnktPnNpemUgID0gc3RhdHNbaV0uZl9ibG9ja3M7CisgICAgICAgIGVudHJ5LT51c2VkICA9IChzdGF0c1tpXS5mX2Jsb2NrcyAtIHN0YXRzW2ldLmZfYmZyZWUpOworICAgICAgICAvKiBlbnRyeS0+YXZhaWwgaXMgY3VycmVudGx5IHVuc2lnbmVkLCBzbyBwcm90ZWN0IGFnYWluc3QgbmVnYXRpdmUKKyAgICAgICAgICogdmFsdWVzIQorICAgICAgICAgKiBUaGlzIHNob3VsZCBiZSBjaGFuZ2VkIHRvIGEgc2lnbmVkIGZpZWxkLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKHN0YXRzW2ldLmZfYmF2YWlsIDwgMCkKKyAgICAgICAgICAgIGVudHJ5LT5hdmFpbCA9IDA7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5LT5hdmFpbCA9IHN0YXRzW2ldLmZfYmF2YWlsOworICAgICAgICBlbnRyeS0+aW51bXNfdG90YWwgPSBzdGF0c1tpXS5mX2ZpbGVzOworICAgICAgICBlbnRyeS0+aW51bXNfYXZhaWwgPSBzdGF0c1tpXS5mX2ZmcmVlOworCisgICAgICAgIGVudHJ5LT50eXBlID0gX2ZzX3R5cGUoIHN0YXRzW2ldLmZfZnN0eXBlbmFtZSApOworICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX0FDVElWRTsKKworICAgICAgICBpZiAoISAoc3RhdHNbaV0uTlNGU19GTEFHUyAmIE1OVF9MT0NBTCApKSB7CisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JFTU9URTsKKyAgICAgICAgfQorICAgICAgICBpZiAoICBzdGF0c1tpXS5OU0ZTX0ZMQUdTICYgTU5UX1JET05MWSApIHsKKyAgICAgICAgICAgIGVudHJ5LT5mbGFncyB8PSBORVRTTk1QX0ZTX0ZMQUdfUk9OTFk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCAgc3RhdHNbaV0uTlNGU19GTEFHUyAmIE1OVF9ST09URlMgKSB7CisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX0JPT1RBQkxFOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRjdGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTkxNTU3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGN0bC5jCkBAIC0wLDAgKzEsMTc4IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9TWVNfTU5UQ1RMX0gKKyNpbmNsdWRlIDxzeXMvbW50Y3RsLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19WTU9VTlRfSAorI2luY2x1ZGUgPHN5cy92bW91bnQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRGU19ICisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVFZGU19ICisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNlbmRpZgorCisKK2ludAorX2ZzeXNfcmVtb3RlKCBjaGFyICpkZXZpY2UsIGludCB0eXBlLCBjaGFyICpob3N0ICkKK3sKKyAgICBpZiAoKCB0eXBlID09IE5FVFNOTVBfRlNfVFlQRV9ORlMpIHx8CisgICAgICAgICggdHlwZSA9PSBORVRTTk1QX0ZTX1RZUEVfQUZTKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gMDsKK30KKworaW50CitfZnN5c190eXBlKCBpbnQgdHlwZSApCit7CisgICAgREVCVUdNU0dUTCgoImZzeXM6dHlwZSIsICJDbGFzc2lmeWluZyAlZFxuIiwgdHlwZSkpOworCisgICAgc3dpdGNoICggdHlwZSApIHsKKyAgICAgICAgY2FzZSBNTlRfQUlYOgorICAgICAgICBjYXNlIE1OVF9KRlM6CisgICAgICAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0JFUktFTEVZOworCisgICAgICAgIGNhc2UgTU5UX0NEUk9NOgorICAgICAgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwOworCisgICAgICAgIGNhc2UgTU5UX05GUzoKKyAgICAgICAgY2FzZSBNTlRfTkZTMzoKKyAgICAgICAgY2FzZSBNTlRfQVVUT0ZTOgorICAgICAgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9ORlM7CisKKyAgICAvKgorICAgICAqICBUaGUgZm9sbG93aW5nIGNvZGUgY292ZXJzIHNlbGVjdGVkIGZpbGVzeXN0ZW1zCisgICAgICogICAgd2hpY2ggYXJlIG5vdCBjb3ZlcmVkIGJ5IHRoZSBIUi1UWVBFUyBlbnVtZXJhdGlvbnMsCisgICAgICogICAgYnV0IHNob3VsZCBzdGlsbCBiZSBtb25pdG9yZWQuCisgICAgICogIFRoZXNlIGFyZSBhbGwgbWFwcGVkIGludG8gdHlwZSAib3RoZXIiCisgICAgICoKKyAgICAgKi8gICAgCisjaWZkZWYgTU5UX05BTUVGUworICAgICAgICBjYXNlIE1OVF9OQU1FRlM6CisjZW5kaWYKKyNpZmRlZiBNTlRfUFJPQ0ZTCisgICAgICAgIGNhc2UgTU5UX1BST0NGUzoKKyNlbmRpZgorICAgICAgICBjYXNlIE1OVF9TRlM6CisgICAgICAgIGNhc2UgTU5UX0NBQ0hFRlM6CisgICAgICAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX09USEVSOworCisgICAgLyogICAgCisgICAgICogIEFsbCBvdGhlciB0eXBlcyBhcmUgc2lsZW50bHkgc2tpcHBlZAorICAgICAqLworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9JR05PUkU7CisgICAgfQorICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfSUdOT1JFOyAgICAvKiBOb3QgcmVhY2hlZCAqLworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sKKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKQoreworICAgIGludCAgcmV0ICA9IDAsIGkgPSAwOworICAgIHVpbnQgc2l6ZSA9IDA7CisKKyAgICBzdHJ1Y3Qgdm1vdW50ICphaXhtbnQsICphaXhjdXJyOworICAgIGNoYXIgICAgICAgICAgKnBhdGg7CisgICAgc3RydWN0IHN0YXRmcyAgc3RhdF9idWY7CisgICAgbmV0c25tcF9mc3lzX2luZm8gKmVudHJ5OworICAgIGNoYXIgICAgICAgICAgICAgICB0bXBidWZbMTAyNF07CisKKyAgICAvKgorICAgICAqIFJldHJpZXZlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50bHkgbW91bnRlZCBmaWxlc3lzdGVtcy4uLgorICAgICAqLworICAgIHJldCA9IG1udGN0bChNQ1RMX1FVRVJZLCBzaXplb2YodWludCksICZzaXplKTsKKyAgICBpZiAoIHJldCAhPSAwIHx8IHNpemU8PTAgKSB7CisgICAgICAgIHNubXBfbG9nX3BlcnJvciggImluaXRpYWwgbW50Y3RsIGZhaWxlZCIgKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFpeG1udCA9IChzdHJ1Y3Qgdm1vdW50ICopbWFsbG9jKCBzaXplICk7CisgICAgaWYgKCBhaXhtbnQgPT0gTlVMTCApIHsKKyAgICAgICAgc25tcF9sb2dfcGVycm9yKCAiY2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3IgbW50Y3RsIGRhdGEiICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICByZXQgPSBtbnRjdGwoTUNUTF9RVUVSWSwgc2l6ZSwgYWl4bW50ICk7CisgICAgaWYgKCByZXQgPD0gMCApIHsKKyAgICAgICAgZnJlZShhaXhtbnQpOworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoICJtYWluIG1udGN0bCBmYWlsZWQiICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgYWl4Y3VyciA9IGFpeG1udDsKKworCisgICAgLyoKKyAgICAgKiAuLi4gYW5kIGluc2VydCB0aGlzIGludG8gdGhlIGZpbGVzeXN0ZW0gY29udGFpbmVyLgorICAgICAqLworCisgICAgZm9yIChpID0gMDsKKyAgICAgICAgIGkgPCByZXQ7CisgICAgICAgICBpKyssIGFpeGN1cnIgPSAoc3RydWN0IHZtb3VudCAqKSAoKGNoYXIqKWFpeGN1cnIgKyBhaXhjdXJyLT52bXRfbGVuZ3RoKSApIHsKKworICAgICAgICBwYXRoID0gdm10MmRhdGFwdHIoIGFpeGN1cnIsIFZNVF9TVFVCICk7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9mc3lzX2J5X3BhdGgoIHBhdGgsIE5FVFNOTVBfRlNfRklORF9DUkVBVEUgKTsKKyAgICAgICAgaWYgKCFlbnRyeSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBzdHJsY3B5KGVudHJ5LT5wYXRoLCBwYXRoLCBzaXplb2YoZW50cnktPnBhdGgpKTsKKyAgICAgICAgc3RybGNweShlbnRyeS0+ZGV2aWNlLCB2bXQyZGF0YXB0cihhaXhjdXJyLCBWTVRfT0JKRUNUKSwKKyAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmRldmljZSkpOworICAgICAgICBlbnRyeS0+dHlwZSAgID0gX2ZzeXNfdHlwZSggYWl4Y3Vyci0+dm10X2dmc3R5cGUgKTsKKworICAgICAgICBpZiAoIShlbnRyeS0+dHlwZSAmIF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQpKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19BQ1RJVkU7CisKKyAgICAgICAgaWYgKCBfZnN5c19yZW1vdGUoIGVudHJ5LT5kZXZpY2UsIGVudHJ5LT50eXBlLCB2bXQyZGF0YXB0ciggYWl4Y3VyciwgVk1UX0hPU1QpICkpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JFTU9URTsKKyAgICAgICAgaWYgKCBhaXhjdXJyLT52bXRfZmxhZ3MgJiBNTlRfUkVBRE9OTFkgKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19ST05MWTsKKyAgICAgICAgLyoKKyAgICAgICAgICogIFRoZSByb290IGRldmljZSBpcyBwcmVzdW1hYmx5IGJvb3RhYmxlLgorICAgICAgICAgKiAgT3RoZXIgcGFydGl0aW9ucyBwcm9iYWJseSBhcmVuJ3QhCisgICAgICAgICAqLworICAgICAgICBpZiAoKGVudHJ5LT5wYXRoWzBdID09ICcvJykgJiYgKGVudHJ5LT5wYXRoWzFdID09ICdcMCcpKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19CT09UQUJMRTsKKworICAgICAgICAvKgorICAgICAgICAgKiAgWFhYIC0gaWRlbnRpZnkgcmVtb3ZlYWJsZSBkaXNrcworICAgICAgICAgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiAgT3B0aW9uYWxseSBza2lwIHJldHJpZXZpbmcgc3RhdGlzdGljcyBmb3IgcmVtb3RlIG1vdW50cworICAgICAgICAgKi8KKyAgICAgICAgaWYgKCAoZW50cnktPmZsYWdzICYgTkVUU05NUF9GU19GTEFHX1JFTU9URSkgJiYKKyAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggc3RhdGZzKCBlbnRyeS0+cGF0aCwgJnN0YXRfYnVmICkgPCAwICkgeworICAgICAgICAgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJDYW5ub3Qgc3RhdGZzICVzIiwgZW50cnktPnBhdGggKTsKKyAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvciggdG1wYnVmICk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBlbnRyeS0+dW5pdHMgPSAgc3RhdF9idWYuZl9ic2l6ZTsKKyAgICAgICAgZW50cnktPnNpemUgID0gIHN0YXRfYnVmLmZfYmxvY2tzOworICAgICAgICBlbnRyeS0+dXNlZCAgPSAoc3RhdF9idWYuZl9ibG9ja3MgLSBzdGF0X2J1Zi5mX2JmcmVlKTsKKyAgICAgICAgZW50cnktPmF2YWlsID0gIHN0YXRfYnVmLmZfYmF2YWlsOworICAgICAgICBlbnRyeS0+aW51bXNfdG90YWwgPSBzdGF0X2J1Zi5mX2ZpbGVzOworICAgICAgICBlbnRyeS0+aW51bXNfYXZhaWwgPSBzdGF0X2J1Zi5mX2ZmcmVlOworICAgIH0KKyAgICBmcmVlKGFpeG1udCk7CisgICAgYWl4bW50ICA9IE5VTEw7CisgICAgYWl4Y3VyciA9IE5VTEw7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvZnN5c19tbnRlbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTQ1YWY1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9mc3lzX21udGVudC5jCkBAIC0wLDAgKzEsMjU4IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9NTlRFTlRfSAorI2luY2x1ZGUgPG1udGVudC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfTU5UVEFCX0gKKyNpbmNsdWRlIDxzeXMvbW50dGFiLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19WRlNfSAorI2luY2x1ZGUgPHN5cy92ZnMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX01PVU5UX0gKKyNpbmNsdWRlIDxzeXMvbW91bnQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRGU19ICisjaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVFZGU19ICisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNlbmRpZgorCisjaWZkZWYgc29sYXJpczIKKyNkZWZpbmUgX05FVFNOTVBfR0VUTU5URU5UX1RXT19BUkdTIDEKKyNlbHNlCisjdW5kZWYgIF9ORVRTTk1QX0dFVE1OVEVOVF9UV09fQVJHUyAKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBIYW5kbGUgbmFtaW5nIGRpZmZlcmVuY2VzIGJldHdlZW4gZ2V0bW50ZW50KCkgQVBJcworICAgICAqLworI2lmZGVmIF9ORVRTTk1QX0dFVE1OVEVOVF9UV09fQVJHUworICAgIC8qIFR3by1hcmd1bWVudCBmb3JtIChTb2xhcmlzKSAqLworI2RlZmluZSBOU0ZTX01OVEVOVCAgIHN0cnVjdCBtbnR0YWIKKyNkZWZpbmUgTlNGU19QQVRIICAgICBtbnRfbW91bnRwCisjZGVmaW5lIE5TRlNfREVWICAgICAgbW50X3NwZWNpYWwKKyNkZWZpbmUgTlNGU19UWVBFICAgICBtbnRfZnN0eXBlCisKKyNkZWZpbmUgTlNGU19TVEFURlMgICBzdGF0dmZzCisjZGVmaW5lIE5TRlNfU0laRSAgICAgZl9mcnNpemUKKworI2Vsc2UKKyAgICAvKiBPbmUtYXJndW1lbnQgZm9ybSAoZXZlcnl0aGluZyBlbHNlPykgKi8KKyNkZWZpbmUgTlNGU19NTlRFTlQgICBzdHJ1Y3QgbW50ZW50CisjZGVmaW5lIE5TRlNfUEFUSCAgICAgbW50X2RpcgorI2RlZmluZSBOU0ZTX0RFViAgICAgIG1udF9mc25hbWUKKyNkZWZpbmUgTlNGU19UWVBFICAgICBtbnRfdHlwZQorCisjZGVmaW5lIE5TRlNfU1RBVEZTICAgc3RhdGZzCisjZGVmaW5lIE5TRlNfU0laRSAgICAgZl9ic2l6ZQorCisjZW5kaWYKKworaW50CitfZnN5c19yZW1vdGUoIGNoYXIgKmRldmljZSwgaW50IHR5cGUgKQoreworICAgIGlmICgoIHR5cGUgPT0gTkVUU05NUF9GU19UWVBFX05GUykgfHwKKyAgICAgICAgKCB0eXBlID09IE5FVFNOTVBfRlNfVFlQRV9BRlMpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAwOworfQorCitpbnQKK19mc3lzX3R5cGUoIGNoYXIgKnR5cGVuYW1lICkKK3sKKyAgICBERUJVR01TR1RMKCgiZnN5czp0eXBlIiwgIkNsYXNzaWZ5aW5nICVzXG4iLCB0eXBlbmFtZSkpOworCisgICAgaWYgKCAhdHlwZW5hbWUgfHwgKnR5cGVuYW1lPT0nXDAnICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX1VOS05PV047CisKKyNpbmNsdWRlICJtbnR0eXBlcy5oIgorCisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfRkZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9CRVJLRUxFWTsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9VRlMpICkKKyAgICAgICByZXR1cm4gX05FVFNOTVBfRlNfVFlQRV9VRlM7ICAgLyogZWl0aGVyIE5fRlNfVFlQRV9CRVJLRUxFWSBvciBOX0ZTX1RZUEVfU1lTViAqLworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1NZU1YpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX1NZU1Y7CisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfUEMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfTVNET1MpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0ZBVDsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9IRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0hGUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9NRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX01GUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9OVEZTKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9OVEZTOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0lTTzk2NjApIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfQ0Q5NjYwKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0NERlMpICkKKyAgICAgICByZXR1cm4gX05FVFNOTVBfRlNfVFlQRV9DREZTOyAgIC8qIGVpdGhlciBOX0ZTX1RZUEVfSVNPOTY2MCBvciBOX0ZTX1RZUEVfUk9DS1JJREdFICovCisgICAgZWxzZSBpZiAoICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfSFNGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfUk9DS1JJREdFOworICAgIGVsc2UgaWYgKCAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX05GUykgIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfTkZTMykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9ORlM0KSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0NJRlMpIHx8ICAvKiBpLmUuIFNNQiAtID8/ICovCisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfU01CRlMpICAgIC8qID8/ICovICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX05GUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9OQ1BGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfTkVUV0FSRTsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9BRlMpICkKKyAgICAgICByZXR1cm4gTkVUU05NUF9GU19UWVBFX0FGUzsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9FWFQyKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0VYVDMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfRVhUNCkgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9FWFQyRlMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfRVhUM0ZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0VYVDRGUykgKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfRVhUMjsKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9GQVQzMikgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9WRkFUKSApCisgICAgICAgcmV0dXJuIE5FVFNOTVBfRlNfVFlQRV9GQVQzMjsKKworICAgIC8qCisgICAgICogIFRoZSBmb2xsb3dpbmcgY29kZSBjb3ZlcnMgc2VsZWN0ZWQgZmlsZXN5c3RlbXMKKyAgICAgKiAgICB3aGljaCBhcmUgbm90IGNvdmVyZWQgYnkgdGhlIEhSLVRZUEVTIGVudW1lcmF0aW9ucywKKyAgICAgKiAgICBidXQgc2hvdWxkIHN0aWxsIGJlIG1vbml0b3JlZC4KKyAgICAgKiAgVGhlc2UgYXJlIGFsbCBtYXBwZWQgaW50byB0eXBlICJvdGhlciIKKyAgICAgKgorICAgICAqICAgIChUaGUgc3lzdGVtcyBsaXN0ZWQgYXJlIG5vdCBmaXhlZCBpbiBzdG9uZSwKKyAgICAgKiAgICAgYnV0IGFyZSBzaW1wbHkgaGVyZSB0byBpbGx1c3RyYXRlIHRoZSBwcmluY2lwbGUhKQorICAgICAqLyAgICAKKyAgICBlbHNlIGlmICggIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9NVkZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1RNUEZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0dGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9HRlMyKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1hGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9KRlMpIHx8CisgICAgICAgICAgICAgICFzdHJjbXAodHlwZW5hbWUsIE1OVFRZUEVfVlhGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9SRUlTRVJGUykgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9PQ0ZTMikgfHwKKyAgICAgICAgICAgICAgIXN0cmNtcCh0eXBlbmFtZSwgTU5UVFlQRV9DVkZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX1NJTUZTKSB8fAorICAgICAgICAgICAgICAhc3RyY21wKHR5cGVuYW1lLCBNTlRUWVBFX0xPRlMpKQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfT1RIRVI7CisKKyAgICAvKiAgICAKKyAgICAgKiAgQWxsIG90aGVyIHR5cGVzIGFyZSBzaWxlbnRseSBza2lwcGVkCisgICAgICovCisgICAgZWxzZQorICAgICAgIHJldHVybiBORVRTTk1QX0ZTX1RZUEVfSUdOT1JFOworfQorCit2b2lkCituZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICkKK3sKKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfZnN5c19hcmNoX2xvYWQoIHZvaWQgKQoreworICAgIEZJTEUgICAgICAgICAgICAgICpmcD1OVUxMOworI2lmZGVmIF9ORVRTTk1QX0dFVE1OVEVOVF9UV09fQVJHUworICAgIHN0cnVjdCBtbnR0YWIgICAgICBtdG1wOworICAgIHN0cnVjdCBtbnR0YWIgICAgICptID0gJm10bXA7CisjZWxzZQorICAgIHN0cnVjdCBtbnRlbnQgICAgICptOworI2VuZGlmCisgICAgc3RydWN0IE5TRlNfU1RBVEZTIHN0YXRfYnVmOworICAgIG5ldHNubXBfZnN5c19pbmZvICplbnRyeTsKKyAgICBjaGFyICAgICAgICAgICAgICAgdG1wYnVmWzEwMjRdOworCisgICAgLyoKKyAgICAgKiBSZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY3VycmVudGx5IG1vdW50ZWQgZmlsZXN5c3RlbXMuLi4KKyAgICAgKi8KKyAgICBmcCA9IGZvcGVuKCBFVENfTU5UVEFCLCAiciIgKTsgICAvKiBPUiBzZXRtbnRlbnQoKT8/ICovCisgICAgaWYgKCAhZnAgKSB7CisgICAgICAgIHNucHJpbnRmKCB0bXBidWYsIHNpemVvZih0bXBidWYpLCAiQ2Fubm90IG9wZW4gJXMiLCBFVENfTU5UVEFCICk7CisgICAgICAgIHNubXBfbG9nX3BlcnJvciggdG1wYnVmICk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIC4uLiBhbmQgaW5zZXJ0IHRoaXMgaW50byB0aGUgZmlsZXN5c3RlbSBjb250YWluZXIuCisgICAgICovCisgICAgd2hpbGUgCisjaWZkZWYgX05FVFNOTVBfR0VUTU5URU5UX1RXT19BUkdTCisgICAgICAgICAgKChnZXRtbnRlbnQoZnAsIG0pKSA9PSAwICkKKyNlbHNlCisgICAgICAgICAgKChtID0gZ2V0bW50ZW50KGZwKSkgIT0gTlVMTCApCisjZW5kaWYKKyAgICB7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9mc3lzX2J5X3BhdGgoIG0tPk5TRlNfUEFUSCwgTkVUU05NUF9GU19GSU5EX0NSRUFURSApOworICAgICAgICBpZiAoIWVudHJ5KSB7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0cmxjcHkoZW50cnktPnBhdGgsIG0tPk5TRlNfUEFUSCwgc2l6ZW9mKGVudHJ5LT5wYXRoKSk7CisgICAgICAgIHN0cmxjcHkoZW50cnktPmRldmljZSwgbS0+TlNGU19ERVYsIHNpemVvZihlbnRyeS0+ZGV2aWNlKSk7CisgICAgICAgIGVudHJ5LT50eXBlID0gX2ZzeXNfdHlwZShtLT5OU0ZTX1RZUEUpOworICAgICAgICBpZiAoIShlbnRyeS0+dHlwZSAmIF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQpKQorICAgICAgICAgICAgZW50cnktPmZsYWdzIHw9IE5FVFNOTVBfRlNfRkxBR19BQ1RJVkU7CisKKyAgICAgICAgaWYgKCBfZnN5c19yZW1vdGUoIGVudHJ5LT5kZXZpY2UsIGVudHJ5LT50eXBlICkpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JFTU9URTsKKyNpZiBIQVZFX0hBU01OVE9QVAorICAgICAgICBpZiAoaGFzbW50b3B0KCBtLCAicm8iICkpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX1JPTkxZOworI2VuZGlmCisgICAgICAgIC8qCisgICAgICAgICAqICBUaGUgcm9vdCBkZXZpY2UgaXMgcHJlc3VtYWJseSBib290YWJsZS4KKyAgICAgICAgICogIE90aGVyIHBhcnRpdGlvbnMgcHJvYmFibHkgYXJlbid0IQorICAgICAgICAgKgorICAgICAgICAgKiAgWFhYIC0gd2hhdCBhYm91dCAvYm9vdCA/PworICAgICAgICAgKi8KKyAgICAgICAgaWYgKChlbnRyeS0+cGF0aFswXSA9PSAnLycpICYmCisgICAgICAgICAgICAoZW50cnktPnBhdGhbMV0gPT0gJ1wwJykpCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MgfD0gTkVUU05NUF9GU19GTEFHX0JPT1RBQkxFOworCisgICAgICAgIC8qCisgICAgICAgICAqICBYWFggLSBpZGVudGlmeSByZW1vdmVhYmxlIGRpc2tzCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqICBPcHRpb25hbGx5IHNraXAgcmV0cmlldmluZyBzdGF0aXN0aWNzIGZvciByZW1vdGUgbW91bnRzCisgICAgICAgICAqLworICAgICAgICBpZiAoIChlbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUkVNT1RFKSAmJgorICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1NLSVBORlNJTkhPU1RSRVNPVVJDRVMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyNpZmRlZiBpcml4NgorICAgICAgICBpZiAoIE5TRlNfU1RBVEZTKCBlbnRyeS0+cGF0aCwgJnN0YXRfYnVmLCBzaXplb2Yoc3RydWN0IHN0YXRmcyksIDApIDwgMCApCisjZWxzZQorICAgICAgICBpZiAoIE5TRlNfU1RBVEZTKCBlbnRyeS0+cGF0aCwgJnN0YXRfYnVmICkgPCAwICkKKyNlbmRpZgorICAgICAgICB7CisgICAgICAgICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbm5vdCBzdGF0ZnMgJXMiLCBlbnRyeS0+cGF0aCApOworICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCB0bXBidWYgKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGVudHJ5LT51bml0cyA9ICBzdGF0X2J1Zi5OU0ZTX1NJWkU7CisgICAgICAgIGVudHJ5LT5zaXplICA9ICBzdGF0X2J1Zi5mX2Jsb2NrczsKKyAgICAgICAgZW50cnktPnVzZWQgID0gKHN0YXRfYnVmLmZfYmxvY2tzIC0gc3RhdF9idWYuZl9iZnJlZSk7CisgICAgICAgIC8qIGVudHJ5LT5hdmFpbCBpcyBjdXJyZW50bHkgdW5zaWduZWQsIHNvIHByb3RlY3QgYWdhaW5zdCBuZWdhdGl2ZQorICAgICAgICAgKiB2YWx1ZXMhCisgICAgICAgICAqIFRoaXMgc2hvdWxkIGJlIGNoYW5nZWQgdG8gYSBzaWduZWQgZmllbGQuCisgICAgICAgICAqLworICAgICAgICBpZiAoc3RhdF9idWYuZl9iYXZhaWwgPCAwKQorICAgICAgICAgICAgZW50cnktPmF2YWlsID0gMDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmF2YWlsID0gIHN0YXRfYnVmLmZfYmF2YWlsOworICAgICAgICBlbnRyeS0+aW51bXNfdG90YWwgPSBzdGF0X2J1Zi5mX2ZpbGVzOworICAgICAgICBlbnRyeS0+aW51bXNfYXZhaWwgPSBzdGF0X2J1Zi5mX2ZmcmVlOworICAgIH0KKyAgICBmY2xvc2UoIGZwICk7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE1YTIzMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5jCkBAIC0wLDAgKzEsMjg5IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKworCitleHRlcm4gdm9pZCAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfYXJjaF9sb2FkKCB2b2lkICk7CitleHRlcm4gdm9pZCAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCB2b2lkICk7CitzdGF0aWMgaW50ICBfZnN5c19sb2FkKCB2b2lkICk7CitzdGF0aWMgdm9pZCBfZnN5c19mcmVlKCB2b2lkICk7CisKK3N0YXRpYyBpbnQgX2ZzeXNBdXRvVXBkYXRlID0gMDsgICAvKiAwIG1lYW5zIG9uLWRlbWFuZCBjYWNoaW5nICovCitzdGF0aWMgdm9pZCBfZnN5c191cGRhdGVfc3RhdHMoIHVuc2lnbmVkIGludCwgdm9pZCogKTsKKworbmV0c25tcF9jYWNoZSAgICAgKl9mc3lzX2NhY2hlICAgICA9IE5VTEw7CituZXRzbm1wX2NvbnRhaW5lciAqX2ZzeXNfY29udGFpbmVyID0gTlVMTDsKK3N0YXRpYyBpbnQgICAgICAgICBfZnN5c19pZHggICAgICAgPSAwOworc3RhdGljIG5ldHNubXBfZnN5c19pbmZvICogX2ZzeXNfY3JlYXRlX2VudHJ5KCB2b2lkICk7CisKK3ZvaWQgaW5pdF9od19mc3lzKCB2b2lkICkgeworCisgICAgaWYgKCBfZnN5c19jb250YWluZXIgKQorICAgICAgICByZXR1cm47ICAgLyogQWxyZWFkeSBpbml0aWFsaXNlZCAqLworCisgICAgREVCVUdNU0dUTCgoImZzeXMiLCAiSW5pdGlhbGlzZSBIYXJkd2FyZSBGaWxlU3lzdGVtIG1vZHVsZVxuIikpOworCisgICAgLyoKKyAgICAgKiBEZWZpbmUgYSBjb250YWluZXIgdG8gaG9sZCB0aGUgbGlzdCBvZiBmaWxlc3lzdGVtcworICAgICAqLworICAgIF9mc3lzX2NvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImZzeXNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoIE5VTEwgPT0gX2ZzeXNfY29udGFpbmVyICkgeworICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgImZhaWxlZCB0byBjcmVhdGUgY29udGFpbmVyIGZvciBmc3lzVGFibGUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBuZXRzbm1wX2ZzeXNfYXJjaF9pbml0KCApOworCisgICAgLyoKKyAgICAgKiBJZiB3ZSdyZSBzYW1wbGluZyB0aGUgZmlsZSBzeXN0ZW0gaW5mb3JtYXRpb24gYXV0b21hdGljYWxseSwKKyAgICAgKiAgIHRoZW4gYXJyYW5nZSBmb3IgdGhpcyB0byBiZSB0cmlnZ2VyZWQgcmVndWxhcmx5LgorICAgICAqCisgICAgICogSWYgd2UncmUgbm90IHNhbXBsaW5nIHRoZXNlIHZhbHVlcyByZWd1bGFybHksCisgICAgICogICBjcmVhdGUgYSBzdWl0YWJsZSBjYWNoZSBoYW5kbGVyIGluc3RlYWQuCisgICAgICovCisgICAgaWYgKCBfZnN5c0F1dG9VcGRhdGUgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJmc3lzIiwgIlJlbG9hZGluZyBIYXJkd2FyZSBGaWxlU3lzdGVtcyBhdXRvbWF0aWNhbGx5ICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZzeXNBdXRvVXBkYXRlKSk7CisgICAgICAgIHNubXBfYWxhcm1fcmVnaXN0ZXIoIF9mc3lzQXV0b1VwZGF0ZSwgU0FfUkVQRUFULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfZnN5c191cGRhdGVfc3RhdHMsIE5VTEwgKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9mc3lzX2NhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoIDUsIG5ldHNubXBfZnN5c19sb2FkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2ZzeXNfZnJlZSwgTlVMTCwgMCApOworICAgICAgICBERUJVR01TR1RMKCgiZnN5cyIsICJSZWxvYWRpbmcgSGFyZHdhcmUgRmlsZVN5c3RlbXMgb24tZGVtYW5kICglcClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2ZzeXNfY2FjaGUpKTsKKyAgICB9Cit9CisKK3ZvaWQgc2h1dGRvd25faHdfZnN5cyggdm9pZCApIHsKKyAgICBfZnN5c19mcmVlKCk7Cit9CisKKy8qCisgKiAgUmV0dXJuIHRoZSBtYWluIGZzeXMgY29udGFpbmVyCisgKi8KK25ldHNubXBfY29udGFpbmVyICpuZXRzbm1wX2ZzeXNfZ2V0X2NvbnRhaW5lciggdm9pZCApIHsgcmV0dXJuIF9mc3lzX2NvbnRhaW5lcjsgfQorCisvKgorICogIFJldHVybiB0aGUgbWFpbiBmc3lzIGNhY2hlIGNvbnRyb2wgc3RydWN0dXJlIChpZiBkZWZpbmVkKQorICovCituZXRzbm1wX2NhY2hlICpuZXRzbm1wX2ZzeXNfZ2V0X2NhY2hlKCB2b2lkICkgeyByZXR1cm4gX2ZzeXNfY2FjaGU7IH0KKworCisvKgorICogV3JhcHBlciByb3V0aW5lIGZvciBhdXRvbWF0aWNhbGx5IHVwZGF0aW5nIGZzeXMgaW5mb3JtYXRpb24KKyAqLwordm9pZAorX2ZzeXNfdXBkYXRlX3N0YXRzKCB1bnNpZ25lZCBpbnQgY2xpZW50cmVnLCB2b2lkICpkYXRhICkKK3sKKyAgICBfZnN5c19mcmVlKCk7CisgICAgX2ZzeXNfbG9hZCgpOworfQorCisvKgorICogV3JhcHBlciByb3V0aW5lIGZvciByZS1sb2FkaW5nIGZpbGVzeXN0ZW0gc3RhdGlzdGljcyBvbiBkZW1hbmQKKyAqLworaW50CituZXRzbm1wX2ZzeXNfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIHJldHVybiBfZnN5c19sb2FkKCk7Cit9CisKKy8qCisgKiBXcmFwcGVyIHJvdXRpbmUgZm9yIHJlbGVhc2luZyBleHBpcmVkIGZpbGVzeXN0ZW0gc3RhdGlzdGljcworICovCit2b2lkCituZXRzbm1wX2ZzeXNfZnJlZSggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIF9mc3lzX2ZyZWUoKTsKK30KKworCisvKgorICogQXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IHByb2Nlc3Npbmcgb2YgbG9hZGluZyBmaWxlc3lzdGVtIHN0YXRpc3RpY3MKKyAqLworc3RhdGljIGludAorX2ZzeXNfbG9hZCggdm9pZCApCit7CisgICAgbmV0c25tcF9mc3lzX2FyY2hfbG9hZCgpOworICAgIHJldHVybiAwOworfQorCisvKgorICogQXJjaGl0ZWN0dXJlLWluZGVwZW5kZW50IHJlbGVhc2Ugb2YgZmlsZXN5c3RlbSBzdGF0aXN0aWNzCisgKi8KK3N0YXRpYyB2b2lkCitfZnN5c19mcmVlKCB2b2lkICkKK3sKKyAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqc3A7CisKKyAgICBmb3IgKHNwID0gQ09OVEFJTkVSX0ZJUlNUKCBfZnN5c19jb250YWluZXIgKTsKKyAgICAgICAgIHNwOworICAgICAgICAgc3AgPSBDT05UQUlORVJfTkVYVCggIF9mc3lzX2NvbnRhaW5lciwgc3AgKSkgeworCisgICAgICAgICBzcC0+ZmxhZ3MgJj0gfk5FVFNOTVBfRlNfRkxBR19BQ1RJVkU7CisgICAgfQorfQorCisKK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfZ2V0X2ZpcnN0KCB2b2lkICkgeworICAgIHJldHVybiBDT05UQUlORVJfRklSU1QoIF9mc3lzX2NvbnRhaW5lciApOworfQorbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19nZXRfbmV4dCggbmV0c25tcF9mc3lzX2luZm8gKnRoaXNfcHRyICkgeworICAgIHJldHVybiBDT05UQUlORVJfTkVYVCggX2ZzeXNfY29udGFpbmVyLCB0aGlzX3B0ciApOworfQorCisvKgorICogUmV0cmlldmUgYSBmaWxlc3lzdGVtIGVudHJ5IGJhc2VkIG9uIHRoZSBwYXRoIHdoZXJlIGl0IGlzIG1vdW50ZWQsCisgKiAgb3IgKG9wdGlvbmFsbHkpIGluc2VydCBhIG5ldyBvbmUgaW50byB0aGUgY29udGFpbmVyCisgKi8KK25ldHNubXBfZnN5c19pbmZvICoKK25ldHNubXBfZnN5c19ieV9wYXRoKCBjaGFyICpwYXRoLCBpbnQgY3JlYXRlX3R5cGUgKQoreworICAgIG5ldHNubXBfZnN5c19pbmZvICpzcDsKKworICAgIERFQlVHTVNHVEwoKCJmc3lzOnBhdGgiLCAiR2V0IGZpbGVzeXN0ZW0gZW50cnkgKCVzKVxuIiwgcGF0aCkpOworCisgICAgLyoKKyAgICAgKiAgTG9vayB0aHJvdWdoIHRoZSBsaXN0IGZvciBhIG1hdGNoaW5nIGVudHJ5CisgICAgICovCisgICAgICAgIC8qIC4uIG9yIHVzZSBhIHNlY29uZGFyeSBpbmRleCBjb250YWluZXIgPz8gKi8KKyAgICBmb3IgKHNwID0gQ09OVEFJTkVSX0ZJUlNUKCBfZnN5c19jb250YWluZXIgKTsKKyAgICAgICAgIHNwOworICAgICAgICAgc3AgPSBDT05UQUlORVJfTkVYVCggIF9mc3lzX2NvbnRhaW5lciwgc3AgKSkgeworCisgICAgICAgIGlmICggIXN0cmNtcCggcGF0aCwgc3AtPnBhdGggKSkKKyAgICAgICAgICAgIHJldHVybiBzcDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIE5vdCBmb3VuZC4uLgorICAgICAqLworICAgIGlmICggY3JlYXRlX3R5cGUgPT0gTkVUU05NUF9GU19GSU5EX0VYSVNUICkgeworICAgICAgICBERUJVR01TR1RMKCgiZnN5czpwYXRoIiwgIk5vIHN1Y2ggZmlsZXN5c3RlbSBlbnRyeVxuIikpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKgorICAgICAqIC4uLiBzbyBsZXQncyBjcmVhdGUgYSBuZXcgb25lCisgICAgICovCisgICAgc3AgPSBfZnN5c19jcmVhdGVfZW50cnkoKTsKKyAgICBpZiAoc3ApCisgICAgICAgIHN0cmxjcHkoc3AtPnBhdGgsIHBhdGgsIHNpemVvZihzcC0+cGF0aCkpOworICAgIHJldHVybiBzcDsKK30KKworCisvKgorICogUmV0cmlldmUgYSBmaWxlc3lzdGVtIGVudHJ5IGJhc2VkIG9uIHRoZSBoYXJkd2FyZSBkZXZpY2UsCisgKiAgIChvciBleHBvcnRlZCBwYXRoIGZvciByZW1vdGUgbW91bnRzKS4KKyAqIChPcHRpb25hbGx5KSBpbnNlcnQgYSBuZXcgb25lIGludG8gdGhlIGNvbnRhaW5lci4KKyAqLworbmV0c25tcF9mc3lzX2luZm8gKgorbmV0c25tcF9mc3lzX2J5X2RldmljZSggY2hhciAqZGV2aWNlLCBpbnQgY3JlYXRlX3R5cGUgKQoreworICAgIG5ldHNubXBfZnN5c19pbmZvICpzcDsKKworICAgIERFQlVHTVNHVEwoKCJmc3lzOmRldmljZSIsICJHZXQgZmlsZXN5c3RlbSBlbnRyeSAoJXMpXG4iLCBkZXZpY2UpKTsKKworICAgIC8qCisgICAgICogIExvb2sgdGhyb3VnaCB0aGUgbGlzdCBmb3IgYSBtYXRjaGluZyBlbnRyeQorICAgICAqLworICAgICAgICAvKiAuLiBvciB1c2UgYSBzZWNvbmRhcnkgaW5kZXggY29udGFpbmVyID8/ICovCisgICAgZm9yIChzcCA9IENPTlRBSU5FUl9GSVJTVCggX2ZzeXNfY29udGFpbmVyICk7CisgICAgICAgICBzcDsKKyAgICAgICAgIHNwID0gQ09OVEFJTkVSX05FWFQoICBfZnN5c19jb250YWluZXIsIHNwICkpIHsKKworICAgICAgICBpZiAoICFzdHJjbXAoIGRldmljZSwgc3AtPmRldmljZSApKQorICAgICAgICAgICAgcmV0dXJuIHNwOworICAgIH0KKworICAgIC8qCisgICAgICogTm90IGZvdW5kLi4uCisgICAgICovCisgICAgaWYgKCBjcmVhdGVfdHlwZSA9PSBORVRTTk1QX0ZTX0ZJTkRfRVhJU1QgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJmc3lzOmRldmljZSIsICJObyBzdWNoIGZpbGVzeXN0ZW0gZW50cnlcbiIpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAuLi4gc28gbGV0J3MgY3JlYXRlIGEgbmV3IG9uZQorICAgICAqLworICAgIHNwID0gX2ZzeXNfY3JlYXRlX2VudHJ5KCk7CisgICAgaWYgKHNwKQorICAgICAgICBzdHJsY3B5KHNwLT5kZXZpY2UsIGRldmljZSwgc2l6ZW9mKHNwLT5kZXZpY2UpKTsKKyAgICByZXR1cm4gc3A7Cit9CisKKworbmV0c25tcF9mc3lzX2luZm8gKgorX2ZzeXNfY3JlYXRlX2VudHJ5KCB2b2lkICkKK3sKKyAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqc3A7CisKKyAgICBzcCA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfZnN5c19pbmZvICk7CisgICAgaWYgKCBzcCApIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogU2V0IHVwIHRoZSBpbmRleCB2YWx1ZS4KKyAgICAgICAgICogIAorICAgICAgICAgKiBBbGwgdGhpcyB0cm91YmxlLCBqdXN0IGZvciBhIHNpbXBsZSBpbnRlZ2VyLgorICAgICAgICAgKiBTdXJlbHkgdGhlcmUgbXVzdCBiZSBhIGJldHRlciB3YXk/CisgICAgICAgICAqLworICAgICAgICBzcC0+aWR4LmxlbiAgPSAxOworICAgICAgICBzcC0+aWR4Lm9pZHMgPSBTTk1QX01BTExPQ19UWVBFREVGKCBvaWQgKTsKKyAgICAgICAgc3AtPmlkeC5vaWRzWzBdID0gKytfZnN5c19pZHg7CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoImZzeXM6bmV3IiwgIkNyZWF0ZSBmaWxlc3lzdGVtIGVudHJ5IChpbmRleCA9ICVkXG4iLCBfZnN5c19pZHgpKTsKKyAgICBDT05UQUlORVJfSU5TRVJUKCBfZnN5c19jb250YWluZXIsIHNwICk7CisgICAgcmV0dXJuIHNwOworfQorCisKKy8qCisgKiAgQ29udmVydCBmc3lzIHNpemUgaW5mb3JtYXRpb24gdG8gMUsgdW5pdHMKKyAqICAgIChhdHRlbXB0aW5nIHRvIGF2b2lkIDMyLWJpdCBvdmVyZmxvdyEpCisgKi8KK3Vuc2lnbmVkIGludAorX2ZzeXNfdG9fSyggaW50IHNpemUsIGludCB1bml0cyApCit7CisgICAgaW50IGZhY3RvciA9IDE7CisKKyAgICBpZiAoIHVuaXRzID09IDAgKSB7CisgICAgICAgIHJldHVybiAwOyAgICAvKiBYWFggKi8KKyAgICB9IGVsc2UgaWYgKCB1bml0cyA9PSAxMDI0ICkgeworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9IGVsc2UgaWYgKCB1bml0cyA9PSA1MTIgKSB7ICAgICAgLyogVG8gYXZvaWQgdW5uZWNlc3NhcnkgZGl2aXNpb24gKi8KKyAgICAgICAgcmV0dXJuIHNpemUvMjsKKyAgICB9IGVsc2UgaWYgKCB1bml0cyA8IDEwMjQgKSB7CisgICAgICAgIGZhY3RvciA9IDEwMjQgLyB1bml0czsgICAvKiBBc3N1bWluZyBwb3dlciBvZiB0d28gKi8KKyAgICAgICAgcmV0dXJuIChzaXplICogZmFjdG9yKTsKKyAgICB9IGVsc2UgeworICAgICAgICBmYWN0b3IgPSB1bml0cyAvIDEwMjQ7ICAgLyogQXNzdW1pbmcgbXVsdGlwbGUgb2YgMUsgKi8KKyAgICAgICAgcmV0dXJuIChzaXplIC8gZmFjdG9yKTsKKyAgICB9Cit9CisKK3Vuc2lnbmVkIGludAorbmV0c25tcF9mc3lzX3NpemUoIG5ldHNubXBfZnN5c19pbmZvICpmKSB7CisgICAgaWYgKCAhZiApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBfZnN5c190b19LKCBmLT5zaXplLCBmLT51bml0cyApOworfQorCit1bnNpZ25lZCBpbnQKK25ldHNubXBfZnN5c191c2VkKCBuZXRzbm1wX2ZzeXNfaW5mbyAqZikgeworICAgIGlmICggIWYgKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gX2ZzeXNfdG9fSyggZi0+dXNlZCwgZi0+dW5pdHMgKTsKK30KKwordW5zaWduZWQgaW50CituZXRzbm1wX2ZzeXNfYXZhaWwoIG5ldHNubXBfZnN5c19pbmZvICpmKSB7CisgICAgaWYgKCAhZiApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiBfZnN5c190b19LKCBmLT5hdmFpbCwgZi0+dW5pdHMgKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9od19mc3lzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmOTBlZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvaHdfZnN5cy5oCkBAIC0wLDAgKzEsMiBAQAordm9pZCBpbml0X2h3X2ZzeXModm9pZCk7Cit2b2lkIHNodXRkb3duX2h3X2ZzeXMoIHZvaWQgKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW50dHlwZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWM5MzVlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvZnN5cy9tbnR0eXBlcy5oCkBAIC0wLDAgKzEsMTc4IEBACisjaWZuZGVmIF9ORVRTTk1QX0ZTWVNfTU5UVFlQRVNfSAorI2RlZmluZSBfTkVUU05NUF9GU1lTX01OVFRZUEVTX0gKKy8qCisgKiAgU29tZSBtb3VudHMgY2FuIG1hcCB0byBvbmUgb2YgdHdvIGhyRlMgdHlwZXMKKyAqICAgIChkZXBlbmRpbmcgb24gb3RoZXIgY2hhcmFjdGVyaXN0aWNzIG9mIHRoZSBzeXN0ZW0pCisgKiAgTm90ZSB3aGljaCBzaG91bGQgYmUgdXNlZCAqYmVmb3JlKiBkZWZpbmluZyBhbnkKKyAqICAgIHR5cGUgdG9rZW5zIHdoaWNoIG1heSBiZSBtaXNzaW5nLgorICovCisKKyNpZiAoZGVmaW5lZChCZXJrZWx5RlMpICYmICFkZWZpbmVkKE1OVFRZUEVfSEZTKSkgfHwgZGVmaW5lZChzb2xhcmlzMikKKyNkZWZpbmUgIF9ORVRTTk1QX0ZTX1RZUEVfVUZTICBORVRTTk1QX0ZTX1RZUEVfQkVSS0VMRVkKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX1VGUyAgTkVUU05NUF9GU19UWVBFX1NZU1YKKyNlbmRpZgorCisjaWZkZWYgUm9ja1JpZGdlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9ST0NLUklER0UKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwCisjZW5kaWYKKworCisvKgorICogIEVuc3VyZSBhbGwgcmVjb2duaXNlZCBmaWxlc3lzdGVtIG1vdW50IHR5cGUgdG9rZW5zIGFyZQorICogICAgYXZhaWxhYmxlIChldmVuIG9uIHN5c3RlbXMgd2hlcmUgdGhleSdyZSBub3QgdXNlZCkKKyAqLworI2lmbmRlZiBNTlRUWVBFX0FGUworI2RlZmluZSBNTlRUWVBFX0FGUyAgICAgICJhZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DREZTCisjZGVmaW5lIE1OVFRZUEVfQ0RGUyAgICAgImNkZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DRDk2NjAKKyNkZWZpbmUgTU5UVFlQRV9DRDk2NjAgICAiY2Q5NjYwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMgorI2RlZmluZSBNTlRUWVBFX0VYVDIgICAgICJleHQyIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMworI2RlZmluZSBNTlRUWVBFX0VYVDMgICAgICJleHQzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUNAorI2RlZmluZSBNTlRUWVBFX0VYVDQgICAgICJleHQ0IgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMkZTCisjZGVmaW5lIE1OVFRZUEVfRVhUMkZTICAgImV4dDJmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0VYVDNGUworI2RlZmluZSBNTlRUWVBFX0VYVDNGUyAgICJleHQzZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9FWFQ0RlMKKyNkZWZpbmUgTU5UVFlQRV9FWFQ0RlMgICAiZXh0NGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRkFUMzIKKyNkZWZpbmUgTU5UVFlQRV9GQVQzMiAgICAiZmF0MzIiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9GRlMKKyNkZWZpbmUgTU5UVFlQRV9GRlMgICAgICAiZmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfSEZTCisjZGVmaW5lIE1OVFRZUEVfSEZTICAgICAgImhmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0hTRlMKKyNkZWZpbmUgTU5UVFlQRV9IU0ZTICAgICAiaHNmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0lTTzk2NjAKKyNkZWZpbmUgTU5UVFlQRV9JU085NjYwICAiaXNvOTY2MCIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX01GUworI2RlZmluZSBNTlRUWVBFX01GUyAgICAgICJtZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9NU0RPUworI2RlZmluZSBNTlRUWVBFX01TRE9TICAgICJtc2RvcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05DUEZTCisjZGVmaW5lIE1OVFRZUEVfTkNQRlMgICAgIm5jcGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTkZTCisjZGVmaW5lIE1OVFRZUEVfTkZTICAgICAgIm5mcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05GUzMKKyNkZWZpbmUgTU5UVFlQRV9ORlMzICAgICAibmZzMyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05GUzQKKyNkZWZpbmUgTU5UVFlQRV9ORlM0ICAgICAibmZzNCIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX05URlMKKyNkZWZpbmUgTU5UVFlQRV9OVEZTICAgICAibnRmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1BDCisjZGVmaW5lIE1OVFRZUEVfUEMgICAgICAgInBjIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfU01CRlMKKyNkZWZpbmUgTU5UVFlQRV9TTUJGUyAgICAic21iZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DSUZTCisjZGVmaW5lIE1OVFRZUEVfQ0lGUyAgICAgImNpZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9TWVNWCisjZGVmaW5lIE1OVFRZUEVfU1lTViAgICAgInN5c3YiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9VRlMKKyNkZWZpbmUgTU5UVFlQRV9VRlMgICAgICAidWZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfVkZBVAorI2RlZmluZSBNTlRUWVBFX1ZGQVQgICAgICJ2ZmF0IgorI2VuZGlmCisKKy8qCisgKiAgRmlsZSBzeXN0ZW1zIHRvIG1vbml0b3IsIGJ1dCBub3QgY292ZXJlZCBieSBIUi1UWVBFUyBlbnVtZXJhdGlvbnMKKyAqLworI2lmbmRlZiBNTlRUWVBFX01WRlMKKyNkZWZpbmUgTU5UVFlQRV9NVkZTICAgICAibXZmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1RNUEZTCisjZGVmaW5lIE1OVFRZUEVfVE1QRlMgICAgInRtcGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfR0ZTCisjZGVmaW5lIE1OVFRZUEVfR0ZTICAgICAgImdmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0dGUzIKKyNkZWZpbmUgTU5UVFlQRV9HRlMyICAgICAiZ2ZzMiIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1hGUworI2RlZmluZSBNTlRUWVBFX1hGUyAgICAgICJ4ZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9KRlMKKyNkZWZpbmUgTU5UVFlQRV9KRlMgICAgICAiamZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfVlhGUworI2RlZmluZSBNTlRUWVBFX1ZYRlMgICAgICAidnhmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1JFSVNFUkZTCisjZGVmaW5lIE1OVFRZUEVfUkVJU0VSRlMgInJlaXNlcmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTE9GUworI2RlZmluZSBNTlRUWVBFX0xPRlMgICAgICJsb2ZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfT0NGUzIKKyNkZWZpbmUgTU5UVFlQRV9PQ0ZTMiAgICAib2NmczIiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DVkZTCisjZGVmaW5lIE1OVFRZUEVfQ1ZGUyAgICAgImN2ZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9TSU1GUworI2RlZmluZSBNTlRUWVBFX1NJTUZTICAgICAic2ltZnMiCisjZW5kaWYKKworLyoKKyAqICBGaWxlIHN5c3RlbXMgdG8gc2tpcAorICogICAgKFByb2JhYmx5IG5vdCBzdHJpY3RseSBuZWVkZWQpCisgKi8KKyNpZm5kZWYgTU5UVFlQRV9BUFAKKyNkZWZpbmUgTU5UVFlQRV9BUFAgICAgICAiYXBwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfREVWUFRTCisjZGVmaW5lIE1OVFRZUEVfREVWUFRTICAgImRldnB0cyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0lHTk9SRQorI2RlZmluZSBNTlRUWVBFX0lHTk9SRSAgICJpZ25vcmUiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9QUk9DCisjZGVmaW5lIE1OVFRZUEVfUFJPQyAgICAgInByb2MiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9TWVNGUworI2RlZmluZSBNTlRUWVBFX1NZU0ZTICAgICJzeXNmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1VTQkZTCisjZGVmaW5lIE1OVFRZUEVfVVNCRlMgICAgInVzYmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfQklORk1UCisjZGVmaW5lIE1OVFRZUEVfQklORk1UICAgImJpbmZtdF9taXNjIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfUlBDUElQRQorI2RlZmluZSBNTlRUWVBFX1JQQ1BJUEUgICJycGNfcGlwZWZzIgorI2VuZGlmCisKKyNlbmRpZiAvKiBfTkVUU05NUF9GU1lTX01OVFRZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL2ZzeXMvbW91bnRzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21vdW50cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNDg4ODgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9mc3lzL21vdW50cy5oCkBAIC0wLDAgKzEsMTU5IEBACisjaWZuZGVmIF9ORVRTTk1QX0ZTWVNfTU9VTlRTX0gKKyNkZWZpbmUgX05FVFNOTVBfRlNZU19NT1VOVFNfSAorLyoKKyAqICBTb21lIG1vdW50cyBjYW4gbWFwIHRvIG9uZSBvZiB0d28gaHJGUyB0eXBlcworICogICAgKGRlcGVuZGluZyBvbiBvdGhlciBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHN5c3RlbSkKKyAqICBOb3RlIHdoaWNoIHNob3VsZCBiZSB1c2VkICpiZWZvcmUqIGRlZmluaW5nIGFueQorICogICAgdHlwZSB0b2tlbnMgd2hpY2ggbWF5IGJlIG1pc3NpbmcuCisgKi8KKworLyoKKyNpZiAoZGVmaW5lZChCZXJrZWx5RlMpICYmICFkZWZpbmVkKE1OVFRZUEVfSEZTKSkgfHwgZGVmaW5lZChzb2xhcmlzMikKKyNkZWZpbmUgIF9ORVRTTk1QX0ZTX1RZUEVfVUZTICBORVRTTk1QX0ZTX1RZUEVfQkVSS0VMRVkKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX1VGUyAgTkVUU05NUF9GU19UWVBFX1NZU1YKKyNlbmRpZgorCisjaWZkZWYgUm9ja1JpZGdlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9ST0NLUklER0UKKyNlbHNlCisjZGVmaW5lICBfTkVUU05NUF9GU19UWVBFX0NERlMgIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwCisjZW5kaWYKKyAqLworCisKKy8qCisgKiAgRW5zdXJlIGFsbCByZWNvZ25pc2VkIGZpbGVzeXN0ZW0gbW91bnQgdHlwZSB0b2tlbnMgYXJlCisgKiAgICBhdmFpbGFibGUgKGV2ZW4gb24gc3lzdGVtcyB3aGVyZSB0aGV5J3JlIG5vdCB1c2VkKQorICovCisjaWZuZGVmIE1PVU5UX0ZGUworI2RlZmluZSBNT1VOVF9GRlMgICAgImZmcyIKKyNlbmRpZgorI2lmbmRlZiBNT1VOVF9ORlMKKyNkZWZpbmUgTU9VTlRfTkZTICAgICJuZnMiCisjZW5kaWYKKyNpZm5kZWYgTU9VTlRfTUZTCisjZGVmaW5lIE1PVU5UX01GUyAgICAibWZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX01TRE9TCisjZGVmaW5lIE1PVU5UX01TRE9TICAibXNkb3MiCisjZW5kaWYKKyNpZm5kZWYgTU9VTlRfTVNET1NGUworI2RlZmluZSBNT1VOVF9NU0RPU0ZTICJtc2Rvc2ZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX0FGUworI2RlZmluZSBNT1VOVF9BRlMgICAgImFmcyIKKyNlbmRpZgorI2lmbmRlZiBNT1VOVF9DRDk2NjAKKyNkZWZpbmUgTU9VTlRfQ0Q5NjYwICJjZDk2NjAiCisjZW5kaWYKKyNpZm5kZWYgTU9VTlRfRVhUMkZTCisjZGVmaW5lIE1PVU5UX0VYVDJGUyAiZXh0MmZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX05URlMKKyNkZWZpbmUgTU9VTlRfTlRGUyAgICJudGZzIgorI2VuZGlmCisjaWZuZGVmIE1PVU5UX1VGUworI2RlZmluZSBNT1VOVF9VRlMgICAgInVmcyIKKyNlbmRpZgorCisvKgorI2lmbmRlZiBNTlRUWVBFX0FGUworI2RlZmluZSBNTlRUWVBFX0FGUyAgICAgICJhZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DREZTCisjZGVmaW5lIE1OVFRZUEVfQ0RGUyAgICAgImNkZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9DRDk2NjAKKyNkZWZpbmUgTU5UVFlQRV9DRDk2NjAgICAiY2Q5NjYwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMgorI2RlZmluZSBNTlRUWVBFX0VYVDIgICAgICJleHQyIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMworI2RlZmluZSBNTlRUWVBFX0VYVDMgICAgICJleHQzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfRVhUMkZTCisjZGVmaW5lIE1OVFRZUEVfRVhUMkZTICAgImV4dDJmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0VYVDNGUworI2RlZmluZSBNTlRUWVBFX0VYVDNGUyAgICJleHQzZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9GQVQzMgorI2RlZmluZSBNTlRUWVBFX0ZBVDMyICAgICJmYXQzMiIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX0ZGUworI2RlZmluZSBNTlRUWVBFX0ZGUyAgICAgICJmZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9IRlMKKyNkZWZpbmUgTU5UVFlQRV9IRlMgICAgICAiaGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfSFNGUworI2RlZmluZSBNTlRUWVBFX0hTRlMgICAgICJoc2ZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfSVNPOTY2MAorI2RlZmluZSBNTlRUWVBFX0lTTzk2NjAgICJpc285NjYwIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTUZTCisjZGVmaW5lIE1OVFRZUEVfTUZTICAgICAgIm1mcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX01TRE9TCisjZGVmaW5lIE1OVFRZUEVfTVNET1MgICAgIm1zZG9zIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTkNQRlMKKyNkZWZpbmUgTU5UVFlQRV9OQ1BGUyAgICAibmNwZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9ORlMKKyNkZWZpbmUgTU5UVFlQRV9ORlMgICAgICAibmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTkZTMworI2RlZmluZSBNTlRUWVBFX05GUzMgICAgICJuZnMzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfTlRGUworI2RlZmluZSBNTlRUWVBFX05URlMgICAgICJudGZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfUEMKKyNkZWZpbmUgTU5UVFlQRV9QQyAgICAgICAicGMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9SRUlTRVJGUworI2RlZmluZSBNTlRUWVBFX1JFSVNFUkZTICJyZWlzZXJmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1NNQkZTCisjZGVmaW5lIE1OVFRZUEVfU01CRlMgICAgInNtYmZzIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfU1lTVgorI2RlZmluZSBNTlRUWVBFX1NZU1YgICAgICJzeXN2IgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfVUZTCisjZGVmaW5lIE1OVFRZUEVfVUZTICAgICAgInVmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1ZGQVQKKyNkZWZpbmUgTU5UVFlQRV9WRkFUICAgICAidmZhdCIKKyNlbmRpZgorKi8KKworLyoKKyAqICBGaWxlIHN5c3RlbXMgdG8gc2tpcAorICovCisvKgorI2lmbmRlZiBNTlRUWVBFX0RFVlBUUworI2RlZmluZSBNTlRUWVBFX0RFVlBUUyAgICJkZXZwdHMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9JR05PUkUKKyNkZWZpbmUgTU5UVFlQRV9JR05PUkUgICAiaWdub3JlIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfUFJPQworI2RlZmluZSBNTlRUWVBFX1BST0MgICAgICJwcm9jIgorI2VuZGlmCisjaWZuZGVmIE1OVFRZUEVfU1lTRlMKKyNkZWZpbmUgTU5UVFlQRV9TWVNGUyAgICAic3lzZnMiCisjZW5kaWYKKyNpZm5kZWYgTU5UVFlQRV9UTVBGUworI2RlZmluZSBNTlRUWVBFX1RNUEZTICAgICJ0bXBmcyIKKyNlbmRpZgorI2lmbmRlZiBNTlRUWVBFX1VTQkZTCisjZGVmaW5lIE1OVFRZUEVfVVNCRlMgICAgInVzYmZzIgorI2VuZGlmCisqLworCisjZW5kaWYgLyogX05FVFNOTVBfRlNZU19NT1VOVFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYWYzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzLmgKQEAgLTAsMCArMSwxNyBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzKQorCisjaWYgZGVmaW5lZChzb2xhcmlzKQorIyBpZiBkZWZpbmVkKEhBVkVfUElDTF9IKQorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzKQorIyBlbHNlCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMpCisjIGVuZGlmCisjZWxzZQorIyAgaWYgZGVmaW5lZChORVRTTk1QX1VTRV9TRU5TT1JTX1YzKQorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMpCisjICBlbHNlCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192MikKKyMgIGVuZGlmCisjZW5kaWYKKworLyogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzKSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDI1NTVkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmMKQEAgLTAsMCArMSw2MCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmg+CisKKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiSW5pdGlhbGlzZSBEdW1teSBTZW5zb3JzIG1vZHVsZVxuIikpOworfQorCitpbnQKK25ldHNubXBfc2Vuc29yX2FyY2hfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdnApIHsKKyAgICB0aW1lX3Qgbm93OworICAgIHN0cnVjdCB0bSAgICAgICAgICAgICAgICAgICp0bTsKKyAgICBuZXRzbm1wX3NlbnNvcl9pbmZvICAgICAgICAqc3A7CisKKyAgICB0aW1lKCZub3cpOworICAgIHRtID0gbG9jYWx0aW1lKCZub3cpOworCisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJSZWxvYWQgRHVtbXkgU2Vuc29ycyBtb2R1bGVcbiIpKTsKKworICAgIC8qIEZpcnN0IHBzZXVkby1zZW5zb3IgLSBzbG93bHktcmlzaW5nIHRlbXBlcmF0dXJlICovCisgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggIm1pbnV0ZSIsIE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUgKTsKKyAgICBzcC0+dmFsdWUgPSB0bS0+dG1fbWluOworICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NiwgIk1pbnV0ZS1iYXNlZCBwc2V1ZG8tc2Vuc29yIC0gc2xvd2x5LXJpc2luZyB0ZW1wZXJhdHVyZSIgKTsKKyAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKworICAgIC8qIFNlY29uZCBwc2V1ZG8tc2Vuc29yIC0gcXVpY2tseS1yaXNpbmcgdGVtcGVyYXR1cmUgKi8KKyAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAic2Vjb25kIiwgTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV9zZWM7CisgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU2LCAiU2Vjb25kLWJhc2VkIHBzZXVkby1zZW5zb3IgLSBxdWlja2x5LXJpc2luZyB0ZW1wZXJhdHVyZSIgKTsKKyAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKworICAgIC8qIFRoaXJkIHBzZXVkby1zZW5zb3IgLSBhbm51YWwgZmFuIHNwZWVkICovCisgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggInllYXIiLCBORVRTTk1QX1NFTlNPUl9UWVBFX1JQTSApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV95ZWFyICsgMTkwMDsKKyAgICBzbnByaW50Ziggc3AtPmRlc2NyLCAyNTYsICJSUE0gcHNldWRvLXNlbnNvciAtIGFubnVhbCBmYW4gc3BlZWQiICk7CisgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisKKyAgICAvKiBGb3VydGggcHNldWRvLXNlbnNvciAtIGRhaWx5IHZvbHRhZ2UgKi8KKyAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAiZGF5IiwgTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICk7CisgICAgc3AtPnZhbHVlID0gdG0tPnRtX21kYXktMjA7CisgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU2LCAiRGF5LWJhc2VkIHBzZXVkby1zZW5zb3IgLSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSB2b2x0YWdlIiApOworICAgIHNwLT5mbGFnc3w9IE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFOworCisgICAgLyogRmlmdGggcHNldWRvLXNlbnNvciAtIG1vbnRobHkgdm9sdGFnZSAqLworICAgIHNwID0gc2Vuc29yX2J5X25hbWUoICJtb250aCIsIE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9EQyApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV9tb247CisgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU2LCAiTW9udGgtYmFzZWQgcHNldWRvLXNlbnNvciAtIHBvc2l0aXZlIHZvbHRhZ2UiICk7CisgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisKKyAgICAvKiBTaXh0aCBwc2V1ZG8tc2Vuc29yIC0gYW5udWFsIGRhaWx5IHNvbWV0aGluZyAqLworICAgIHNwID0gc2Vuc29yX2J5X25hbWUoICJ5ZGF5IiwgTkVUU05NUF9TRU5TT1JfVFlQRV9PVEhFUiApOworICAgIHNwLT52YWx1ZSA9IHRtLT50bV95ZGF5OworICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NiwgIkRheS1iYXNlZCBwc2V1ZG8tc2Vuc29yIC0gYW5udWFsIHNvbWV0aGluZyIgKTsKKyAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2R1bW15X3NlbnNvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmYjRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9kdW1teV9zZW5zb3JzLmgKQEAgLTAsMCArMSBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDY2ZWFjCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzLmMKQEAgLTAsMCArMSwxODkgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oPgorCisKK2V4dGVybiBOZXRzbm1wQ2FjaGVMb2FkIG5ldHNubXBfc2Vuc29yX2FyY2hfbG9hZDsKK2V4dGVybiB2b2lkICAgICAgICAgICAgIG5ldHNubXBfc2Vuc29yX2FyY2hfaW5pdCggdm9pZCApOworc3RhdGljIGludCAgX3NlbnNvcl9sb2FkKCB2b2lkICk7CitzdGF0aWMgdm9pZCBfc2Vuc29yX2ZyZWUoIHZvaWQgKTsKKworc3RhdGljIGludCBfc2Vuc29yQXV0b1VwZGF0ZSA9IDA7ICAgLyogMCBtZWFucyBvbi1kZW1hbmQgY2FjaGluZyAqLworc3RhdGljIHZvaWQgX3NlbnNvcl91cGRhdGVfc3RhdHMoIHVuc2lnbmVkIGludCwgdm9pZCogKTsKKworbmV0c25tcF9jYWNoZSAgICAgKl9zZW5zb3JfY2FjaGUgICAgID0gTlVMTDsKK25ldHNubXBfY29udGFpbmVyICpfc2Vuc29yX2NvbnRhaW5lciA9IE5VTEw7CitzdGF0aWMgaW50ICAgICAgICAgX3NlbnNvcl9pZHggICAgICAgPSAwOworCit2b2lkIGluaXRfaHdfc2Vuc29ycyggdm9pZCApIHsKKworICAgIGlmICggX3NlbnNvcl9jb250YWluZXIgKQorICAgICAgICByZXR1cm47ICAgLyogQWxyZWFkeSBpbml0aWFsaXNlZCAqLworCisgICAgREVCVUdNU0dUTCgoInNlbnNvcnMiLCAiSW5pdGlhbGlzZSBIYXJkd2FyZSBTZW5zb3JzIG1vZHVsZVxuIikpOworCisgICAgLyoKKyAgICAgKiBEZWZpbmUgYSBjb250YWluZXIgdG8gaG9sZCB0aGUgYmFzaWMgbGlzdCBvZiBzZW5zb3JzCisgICAgICogVGhlIGZvdXIgTE0tU0VOU09SLU1JQiBjb250YWluZXJzIHdpbGwgYmUgY3JlYXRlZCBpbgorICAgICAqICB0aGUgcmVsZXZhbnQgaW5pdGlhbGlzYXRpb24gcm91dGluZShzKQorICAgICAqLworICAgIF9zZW5zb3JfY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgic2Vuc29yVGFibGU6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKCBOVUxMID09IF9zZW5zb3JfY29udGFpbmVyICkgeworICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgImZhaWxlZCB0byBjcmVhdGUgY29udGFpbmVyIGZvciBzZW5zb3JUYWJsZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIG5ldHNubXBfc2Vuc29yX2FyY2hfaW5pdCggKTsKKworICAgIC8qCisgICAgICogSWYgd2UncmUgc2FtcGxpbmcgdGhlIHNlbnNvciBpbmZvcm1hdGlvbiBhdXRvbWF0aWNhbGx5LAorICAgICAqICAgdGhlbiBhcnJhbmdlIGZvciB0aGlzIHRvIGJlIHRyaWdnZXJlZCByZWd1bGFybHkuCisgICAgICoKKyAgICAgKiBJZiB3ZSdyZSBub3Qgc2FtcGxpbmcgdGhlc2UgdmFsdWVzIHJlZ3VsYXJseSwKKyAgICAgKiAgIGNyZWF0ZSBhIHN1aXRhYmxlIGNhY2hlIGhhbmRsZXIgaW5zdGVhZC4KKyAgICAgKi8KKyAgICBpZiAoIF9zZW5zb3JBdXRvVXBkYXRlICkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29ycyIsICJSZWxvYWRpbmcgSGFyZHdhcmUgU2Vuc29ycyBhdXRvbWF0aWNhbGx5ICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbnNvckF1dG9VcGRhdGUpKTsKKyAgICAgICAgc25tcF9hbGFybV9yZWdpc3RlciggX3NlbnNvckF1dG9VcGRhdGUsIFNBX1JFUEVBVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbnNvcl91cGRhdGVfc3RhdHMsIE5VTEwgKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9zZW5zb3JfY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSggNSwgbmV0c25tcF9zZW5zb3JfbG9hZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NlbnNvcl9mcmVlLCBOVUxMLCAwICk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzIiwgIlJlbG9hZGluZyBIYXJkd2FyZSBTZW5zb3JzIG9uLWRlbWFuZCAoJXApXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZW5zb3JfY2FjaGUpKTsKKyAgICB9Cit9CisKK3ZvaWQgc2h1dGRvd25faHdfc2Vuc29ycyggdm9pZCApIHsKKyAgICBfc2Vuc29yX2ZyZWUoKTsKK30KKworLyoKKyAqICBSZXR1cm4gdGhlIG1haW4gc2Vuc29yIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lciAqZ2V0X3NlbnNvcl9jb250YWluZXIoIHZvaWQgKSB7IHJldHVybiBfc2Vuc29yX2NvbnRhaW5lcjsgfQorCisvKgorICogIFJldHVybiB0aGUgbWFpbiBzZW5zb3IgY2FjaGUgY29udHJvbCBzdHJ1Y3R1cmUgKGlmIGRlZmluZWQpCisgKi8KK25ldHNubXBfY2FjaGUgKmdldF9zZW5zb3JfY2FjaGUoIHZvaWQgKSB7IHJldHVybiBfc2Vuc29yX2NhY2hlOyB9CisKKworLyoKKyAqIFdyYXBwZXIgcm91dGluZSBmb3IgYXV0b21hdGljYWxseSB1cGRhdGluZyBzZW5zb3Igc3RhdGlzdGljcworICovCit2b2lkCitfc2Vuc29yX3VwZGF0ZV9zdGF0cyggdW5zaWduZWQgaW50IGNsaWVudHJlZywgdm9pZCAqZGF0YSApCit7CisgICAgX3NlbnNvcl9mcmVlKCk7CisgICAgX3NlbnNvcl9sb2FkKCk7Cit9CisKKy8qCisgKiBXcmFwcGVyIHJvdXRpbmUgZm9yIHJlLWxvYWRpbmcgc2Vuc29yIHN0YXRpc3RpY3Mgb24gZGVtYW5kCisgKi8KK2ludAorbmV0c25tcF9zZW5zb3JfbG9hZCggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIHJldHVybiBfc2Vuc29yX2xvYWQoKTsKK30KKworLyoKKyAqIFdyYXBwZXIgcm91dGluZSBmb3IgcmVsZWFzaW5nIGV4cGlyZWQgc2Vuc29yIHN0YXRpc3RpY3MKKyAqLwordm9pZAorbmV0c25tcF9zZW5zb3JfZnJlZSggbmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKmRhdGEgKQoreworICAgIF9zZW5zb3JfZnJlZSgpOworfQorCisKKy8qCisgKiBBcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgcHJvY2Vzc2luZyBvZiBsb2FkaW5nIHNlbnNvciBzdGF0aXN0aWNzCisgKi8KK3N0YXRpYyBpbnQKK19zZW5zb3JfbG9hZCggdm9pZCApCit7CisgICAgbmV0c25tcF9zZW5zb3JfYXJjaF9sb2FkKCBOVUxMLCBOVUxMICk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBBcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgcmVsZWFzZSBvZiBzZW5zb3Igc3RhdGlzdGljcworICovCitzdGF0aWMgdm9pZAorX3NlbnNvcl9mcmVlKCB2b2lkICkKK3sKKyAgICBuZXRzbm1wX3NlbnNvcl9pbmZvICpzcDsKKworICAgIGZvciAoc3AgPSBDT05UQUlORVJfRklSU1QoIF9zZW5zb3JfY29udGFpbmVyICk7CisgICAgICAgICBzcDsKKyAgICAgICAgIHNwID0gQ09OVEFJTkVSX05FWFQoICBfc2Vuc29yX2NvbnRhaW5lciwgc3AgKSkgeworCisgICAgICAgICBzcC0+ZmxhZ3MgJj0gfiBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKyAgICB9Cit9CisKKworLyoKKyAqIFJldHJpZXZlIGEgc2Vuc29yIGVudHJ5IGJ5IG5hbWUsCisgKiAgb3IgKG9wdGlvbmFsbHkpIGluc2VydCBhIG5ldyBvbmUgaW50byB0aGUgY29udGFpbmVyCisgKi8KK25ldHNubXBfc2Vuc29yX2luZm8gKgorc2Vuc29yX2J5X25hbWUoIGNoYXIgKm5hbWUsIGludCBjcmVhdGVfdHlwZSApCit7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAqc3A7CisKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczpuYW1lIiwgIkdldCBzZW5zb3IgZW50cnkgKCVzKVxuIiwgbmFtZSkpOworCisgICAgLyoKKyAgICAgKiAgTG9vayB0aHJvdWdoIHRoZSBsaXN0IGZvciBhIG1hdGNoaW5nIGVudHJ5CisgICAgICovCisgICAgICAgIC8qIC4uIG9yIHVzZSBhIHNlY29uZGFyeSBpbmRleCBjb250YWluZXIgPz8gKi8KKyAgICBmb3IgKHNwID0gQ09OVEFJTkVSX0ZJUlNUKCBfc2Vuc29yX2NvbnRhaW5lciApOworICAgICAgICAgc3A7CisgICAgICAgICBzcCA9IENPTlRBSU5FUl9ORVhUKCAgX3NlbnNvcl9jb250YWluZXIsIHNwICkpIHsKKworICAgICAgICBpZiAoICFzdHJjbXAoIG5hbWUsIHNwLT5uYW1lICkpCisgICAgICAgICAgICByZXR1cm4gc3A7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOb3QgZm91bmQuLi4KKyAgICAgKi8KKyAgICBpZiAoIGNyZWF0ZV90eXBlID09IE5FVFNOTVBfU0VOU09SX0ZJTkRfRVhJU1QgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOm5hbWUiLCAiTm8gc3VjaCBzZW5zb3IgZW50cnlcbiIpKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAuLi4gc28gbGV0J3MgY3JlYXRlIGEgbmV3IG9uZSwgdXNpbmcgdGhlIHR5cGUgc3VwcGxpZWQKKyAgICAgKi8KKyAgICBzcCA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfc2Vuc29yX2luZm8gKTsKKyAgICBpZiAoIHNwICkgeworICAgICAgICBpZiAoc3RybGVuKG5hbWUpID49IHNpemVvZihzcC0+bmFtZSkpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJTZW5zb3IgbmFtZSBpcyB0b28gbGFyZ2U6ICVzXG4iLCBuYW1lKTsKKyAgICAgICAgICAgIGZyZWUoc3ApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KCBzcC0+bmFtZSwgbmFtZSApOworICAgICAgICBzcC0+dHlwZSA9IGNyZWF0ZV90eXBlOworICAgICAgICAvKgorICAgICAgICAgKiBTZXQgdXAgdGhlIGluZGV4IHZhbHVlLgorICAgICAgICAgKiAgCisgICAgICAgICAqIEFsbCB0aGlzIHRyb3VibGUsIGp1c3QgZm9yIGEgc2ltcGxlIGludGVnZXIuCisgICAgICAgICAqIFN1cmVseSB0aGVyZSBtdXN0IGJlIGEgYmV0dGVyIHdheT8KKyAgICAgICAgICovCisgICAgICAgIHNwLT5pZHgubGVuICA9IDE7CisgICAgICAgIHNwLT5pZHgub2lkcyA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG9pZCApOworICAgICAgICBzcC0+aWR4Lm9pZHNbMF0gPSArK19zZW5zb3JfaWR4OworICAgIH0KKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOm5hbWUiLCAiQ3JlYXRlIHNlbnNvciBlbnRyeSAodHlwZSA9ICVkLCBpbmRleCA9ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlX3R5cGUsIF9zZW5zb3JfaWR4KSk7CisgICAgQ09OVEFJTkVSX0lOU0VSVCggX3NlbnNvcl9jb250YWluZXIsIHNwICk7CisgICAgcmV0dXJuIHNwOworfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvaHdfc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhYzI2Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMuaApAQCAtMCwwICsxIEBACit2b2lkIGluaXRfaHdfc2Vuc29ycyggdm9pZCApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTAzYzQzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9rc3RhdF9zZW5zb3JzLmMKQEAgLTAsMCArMSwxNjAgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oPgorCisjaW5jbHVkZSA8dGltZS5oPgorCisjaW5jbHVkZSA8a3N0YXQuaD4KKyNpbmNsdWRlIDwvdXNyL3BsYXRmb3JtL3N1bjR1L2luY2x1ZGUvc3lzL2VudmN0cmwuaD4KKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJJbml0aWFsaXNlIEtTdGF0IFNlbnNvcnMgbW9kdWxlXG4iKSk7Cit9CisKKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworCisgICAgaW50ICAgICAgICAgaTsKKyAgICBjb25zdCBjaGFyICpmYW50eXBlc1tdPXsiQ1BVIiwiUFdSIiwiQUZCIn07CisgICAgY2hhciAgICAgICAgbmFtZVsgMjU2IF07CisKKyAgICBrc3RhdF9jdGxfdCAgICAqa2M7CisgICAga3N0YXRfdCAgICAgICAgKmtwOworICAgIGVudmN0cmxfZmFuX3QgICpmYW5faW5mbzsKKyAgICBlbnZjdHJsX3BzX3QgICAqcG93ZXJfaW5mbzsKKyAgICBlbnZjdHJsX2VuY2xfdCAqZW5jX2luZm87CisKKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiUmVsb2FkIEtTdGF0IFNlbnNvcnMgbW9kdWxlXG4iKSk7CisKKyAgICBrYyA9IGtzdGF0X29wZW4oKTsKKyAgICBpZiAoIGtjID09IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJDb3VsZG4ndCBvcGVuIGtzdGF0XG4iKSk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAKKworICAgIC8qCisgICAgICogUmV0cmlldmUgZmFuIGluZm9ybWF0aW9uCisgICAgICovCisgICAga3AgPSBrc3RhdF9sb29rdXAoIGtjLCBFTlZDVFJMX01PRFVMRV9OQU1FLCAwLCBFTlZDVFJMX0tTVEFUX0ZBTlNUQVQpOworICAgIGlmICgoIGtwID09IDAgKSB8fCAoa3N0YXRfcmVhZCgga2MsIGtwLCAwICkgPT0gLTEgKSkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoIiwgIk5vIGZhbiBpbmZvcm1hdGlvblxuIikpOworICAgIH0gZWxzZSB7CisgICAgICAgIGZhbl9pbmZvID0gKGVudmN0cmxfZmFuX3QgKilrcC0+a3NfZGF0YTsgICAgICAgIAorICAgICAgICBmb3IgKGk9MDsgaTxrcC0+a3NfbmRhdGE7IGkrKykgeworICAgICAgICAgICAgbWVtc2V0KCBuYW1lLCAwLCAyNTYgKTsKKyAgICAgICAgICAgIHNucHJpbnRmKCBuYW1lLCAyNTUsICIlcyVkIiwgZmFudHlwZXNbZmFuX2luZm8tPnR5cGVdLCBmYW5faW5mby0+aW5zdGFuY2UgKTsKKworICAgICAgICAgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggbmFtZSwgTkVUU05NUF9TRU5TT1JfVFlQRV9SUE0gKTsKKyAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gZmFuX2luZm8tPmZhbnNwZWVkOworICAgICAgICAgICAgICAgIHNwLT5mbGFnc3w9IE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFOworICAgICAgICAgICAgICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NSwgImZhbiB0eXBlICVzIG51bWJlciAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbnR5cGVzW2Zhbl9pbmZvLT50eXBlXSwgZmFuX2luZm8tPmluc3RhbmNlICk7CisgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICBmYW5faW5mbysrOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKgorICAgICAqIFJldHJpZXZlIFBvd2VyIFN1cHBseSBpbmZvcm1hdGlvbgorICAgICAqLworICAgIGtwID0ga3N0YXRfbG9va3VwKCBrYywgRU5WQ1RSTF9NT0RVTEVfTkFNRSwgMCwgRU5WQ1RSTF9LU1RBVF9QU05BTUUpOworICAgIGlmICgoIGtwID09IDAgKSB8fCAoa3N0YXRfcmVhZCgga2MsIGtwLCAwICkgPT0gLTEgKSkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoIiwgIk5vIFBTVSBpbmZvcm1hdGlvblxuIikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBvd2VyX2luZm8gPSAoZW52Y3RybF9wc190ICopa3AtPmtzX2RhdGE7ICAgICAgICAKKyAgICAgICAgZm9yIChpPTA7IGk8a3AtPmtzX25kYXRhOyBpKyspIHsKKyAgICAgICAgICAgIG1lbXNldCggbmFtZSwgMCwgMjU2ICk7CisgICAgICAgICAgICBzbnByaW50ZiggbmFtZSwgMjU1LCAiUFNVJWQiLCBwb3dlcl9pbmZvLT5pbnN0YW5jZSApOworCisgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBuYW1lLCBORVRTTk1QX1NFTlNPUl9UWVBFX1RFTVBFUkFUVVJFKTsKKyAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gcG93ZXJfaW5mby0+cHNfdGVtcHI7CisgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgc25wcmludGYoIHNwLT5kZXNjciwgMjU1LCAicG93ZXIgc3VwcGx5ICVkIiwgcG93ZXJfaW5mby0+aW5zdGFuY2UgKTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHBvd2VyX2luZm8rKzsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoKKyAgICAgKiBSZXRyaWV2ZSBFbmNsb3N1cmUgaW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICBrcCA9IGtzdGF0X2xvb2t1cCgga2MsIEVOVkNUUkxfTU9EVUxFX05BTUUsIDAsIEVOVkNUUkxfS1NUQVRfRU5DTCk7CisgICAgaWYgKCgga3AgPT0gMCApIHx8IChrc3RhdF9yZWFkKCBrYywga3AsIDAgKSA9PSAtMSApKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiTm8gZW5jbG9zdXJlIGluZm9ybWF0aW9uXG4iKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZW5jX2luZm8gPSAoZW52Y3RybF9lbmNsX3QgKilrcC0+a3NfZGF0YTsgICAgICAgIAorICAgICAgICBmb3IgKGk9MDsgaTxrcC0+a3NfbmRhdGE7IGkrKykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoZSBlbmNsb3N1cmUgaW5mb3JtYXRpb24gY292ZXJzIHNldmVyYWwgZGlmZmVyZW50IHR5cGVzIG9mIHNlbnNvcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzd2l0Y2ggKCBlbmNfaW5mby0+dHlwZSApIHsKKyAgICAgICAgICAgIGNhc2UgRU5WQ1RSTF9FTkNMX0ZTUDoKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJFbmNsb3N1cmUgRnJvbnQgUGFuZWxcbiIpKTsKKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAiRlNQIiwgTkVUU05NUF9TRU5TT1JfVFlQRV9PVEhFUik7CisgICAgICAgICAgICAgICAgaWYgKCBzcCApIHsKKyAgICAgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gZW5jX2luZm8tPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBjYXNlIEVOVkNUUkxfRU5DTF9BTUJURU1QUjoKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJFbmNsb3N1cmUgQW1iaWVudCBUZW1wZXJhdHVyZVxuIikpOworICAgICAgICAgICAgICAgIHNwID0gc2Vuc29yX2J5X25hbWUoICJBbWJpZW50IiwgTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSk7CisgICAgICAgICAgICAgICAgaWYgKCBzcCApIHsKKyAgICAgICAgICAgICAgICAgICAgc3AtPnZhbHVlID0gZW5jX2luZm8tPnZhbHVlOworICAgICAgICAgICAgICAgICAgICBzcC0+ZmxhZ3N8PSBORVRTTk1QX1NFTlNPUl9GTEFHX0FDVElWRTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgRU5WQ1RSTF9FTkNMX0NQVVRFTVBSOgorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIkVuY2xvc3VyZSBDUFUgVGVtcGVyYXR1cmVcbiIpKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQoIG5hbWUsIDAsIDI1NiApOworICAgICAgICAgICAgICAgIHNucHJpbnRmKCBuYW1lLCAyNTUsICJDUFUlZCIsIGVuY19pbmZvLT5pbnN0YW5jZSApOworICAgICAgICAgICAgICAgIHNwID0gc2Vuc29yX2J5X25hbWUoIG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUpOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IGVuY19pbmZvLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKCBzcC0+ZGVzY3IsIDI1NSwgIkNQVSVkIHRlbXBlcmF0dXJlIiwgZW5jX2luZm8tPmluc3RhbmNlICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIEVOVkNUUkxfRU5DTF9CQUNLUExBTkU0OgorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIkVuY2xvc3VyZSBCYWNrcGxhbmU0XG4iKSk7CisgICAgICAgICAgICAgICAgc3AgPSBzZW5zb3JfYnlfbmFtZSggIkJhY2twbGFuZTQiLCBORVRTTk1QX1NFTlNPUl9UWVBFX09USEVSKTsKKyAgICAgICAgICAgICAgICBpZiAoIHNwICkgeworICAgICAgICAgICAgICAgICAgICBzcC0+dmFsdWUgPSBlbmNfaW5mby0+dmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHNwLT5mbGFnc3w9IE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhc2UgRU5WQ1RSTF9FTkNMX0JBQ0tQTEFORTg6CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiRW5jbG9zdXJlIEJhY2twbGFuZTRcbiIpKTsKKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCAiQmFja3BsYW5lNCIsIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIpOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IGVuY19pbmZvLT52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OiAgICAKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJVbnJlY29nbmlzZWQgRW5jbG9zdXJlIGVudHJ5ICglZCluIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNfaW5mby0+dHlwZSkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbmNfaW5mbysrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuaCBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMva3N0YXRfc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZmZiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2tzdGF0X3NlbnNvcnMuaApAQCAtMCwwICsxIEBACitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjNmMTQwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuYwpAQCAtMCwwICsxLDc0IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaD4KKworI2luY2x1ZGUgPHRpbWUuaD4KKyNpbmNsdWRlIDxzZW5zb3JzL3NlbnNvcnMuaD4KKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgRklMRSAqZnAgPSBmb3BlbigiL2V0Yy9zZW5zb3JzLmNvbmYiLCAiciIpOworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiSW5pdGlhbGlzZSBMTSBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHNlbnNvcnNfaW5pdCggZnAgKTsKK30KKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworICAgIGNvbnN0IHNlbnNvcnNfY2hpcF9uYW1lICAgICpjaGlwOworICAgIGNvbnN0IHNlbnNvcnNfZmVhdHVyZV9kYXRhICpkYXRhOworICAgIGludCAgICAgICAgICAgICBjaGlwX25yID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiUmVsb2FkIExNIFNlbnNvcnMgbW9kdWxlXG4iKSk7CisgICAgd2hpbGUgKChjaGlwID0gc2Vuc29yc19nZXRfZGV0ZWN0ZWRfY2hpcHMoJmNoaXBfbnIpKSkgeworCWludCAgICAgICAgICAgICBhID0gMDsKKwlpbnQgICAgICAgICAgICAgYiA9IDA7CisKKyAgICAgICAgd2hpbGUgKChkYXRhID0gc2Vuc29yc19nZXRfYWxsX2ZlYXR1cmVzKCpjaGlwLCAmYSwgJmIpKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiZ2V0X2FsbF9mZWF0dXJlcyAoJWQsICVkKVxuIiwgYSwgYikpOworICAgICAgICAgICAgY2hhciAgICAgICAgICAgKmxhYmVsID0gTlVMTDsKKyAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICB2YWw7CisgICAgICAgICAgICBpbnQgICAgICAgICAgICAgdHlwZSA9IE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVI7CisKKyAgICAgICAgICAgIGlmICgoZGF0YS0+bW9kZSAmIFNFTlNPUlNfTU9ERV9SKSAmJgorICAgICAgICAgICAgICAgIChkYXRhLT5tYXBwaW5nID09IFNFTlNPUlNfTk9fTUFQUElORykgJiYKKyAgICAgICAgICAgICAgICAhc2Vuc29yc19nZXRfbGFiZWwoKmNoaXAsIGRhdGEtPm51bWJlciwgJmxhYmVsKSAmJgorICAgICAgICAgICAgICAgICFzZW5zb3JzX2dldF9mZWF0dXJlKCpjaGlwLCBkYXRhLT5udW1iZXIsICZ2YWwpKSB7CisKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIlcyA9ICVmXG4iLCBsYWJlbCwgdmFsKSk7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBEZXRlcm1pbmUgdGhlIHR5cGUgb2Ygc2Vuc29yIGZyb20gdGhlIGRlc2NyaXB0aW9uLgorICAgICAgICAgICAgICAgICAqCisgICAgICAgICAgICAgICAgICogSWYgdGhlIHRleHQgYmVpbmcgbG9va2VkIGZvciBiZWxvdyBpcyBub3QgaW4gdGhlIGxhYmVsIG9mIGEKKyAgICAgICAgICAgICAgICAgKiBnaXZlbiBzZW5zb3IgKGUuZy4sIHRoZSB0ZW1wMSBzZW5zb3IgaGFzIGJlZW4gbGFiZWxlZCAnQ1BVJworICAgICAgICAgICAgICAgICAqIHJhdGhlciB0aGFuICdDUFUgdGVtcCcpIGl0IHdpbGwgYmUgY2F0ZWdvcmlzZWQgYXMgT1RIRVIuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKHN0cnN0cihsYWJlbCwgIlYiKSkgeworICAgICAgICAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3Ryc3RyKGxhYmVsLCAiZmFuIikgfHwgc3Ryc3RyKGxhYmVsLCAiRmFuIikpIHsKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IE5FVFNOTVBfU0VOU09SX1RZUEVfUlBNOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc3Ryc3RyKGxhYmVsLCAidGVtcCIpIHx8IHN0cnN0cihsYWJlbCwgIlRlbXAiKSkgeworICAgICAgICAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFVzZSB0aGlzIHR5cGUgdG8gY3JlYXRlIGEgbmV3IHNlbnNvciBlbnRyeQorICAgICAgICAgICAgICAgICAqICAoaW5zZXJ0aW5nIGl0IGluIHRoZSBhcHByb3ByaWF0ZSBzdWItY29udGFpbmVycykKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBsYWJlbCwgdHlwZSApOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCSAgICBpZiAobGFiZWwpIHsKKwkJZnJlZShsYWJlbCk7CisJCWxhYmVsID0gTlVMTDsKKwkgICAgfQorICAgICAgICB9IC8qIGVuZCB3aGlsZSBkYXRhICovCisgICAgfSAvKiBlbmQgd2hpbGUgY2hpcCAqLworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192Mi5oIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmYjRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjIuaApAQCAtMCwwICsxIEBACitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9zZW5zb3JzL2h3X3NlbnNvcnMpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGFmOWU2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9sbXNlbnNvcnNfdjMuYwpAQCAtMCwwICsxLDEwMiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmg+CisKKyNpbmNsdWRlIDx0aW1lLmg+CisjaW5jbHVkZSA8c2Vuc29ycy9zZW5zb3JzLmg+CisKKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgRklMRSAqZnAgPSBmb3BlbigiL2V0Yy9zZW5zb3JzLmNvbmYiLCAiciIpOworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiSW5pdGlhbGlzZSB2MyBMTSBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHNlbnNvcnNfaW5pdCggZnAgKTsKK30KKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworICAgIGNvbnN0IHNlbnNvcnNfY2hpcF9uYW1lICAgICpjaGlwOworICAgIGNvbnN0IHNlbnNvcnNfZmVhdHVyZSAgICAgICpkYXRhOworICAgIGNvbnN0IHNlbnNvcnNfc3ViZmVhdHVyZSAgICpkYXRhMjsKKyAgICBpbnQgICAgICAgICAgICAgY2hpcF9uciA9IDA7CisKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoIiwgIlJlbG9hZCB2MyBMTSBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHdoaWxlICgoY2hpcCA9IHNlbnNvcnNfZ2V0X2RldGVjdGVkX2NoaXBzKCBOVUxMLCAmY2hpcF9ucikpKSB7CisJaW50ICAgICAgICAgICAgIGEgPSAwOworCisgICAgICAgIHdoaWxlICgoZGF0YSA9IHNlbnNvcnNfZ2V0X2ZlYXR1cmVzKCBjaGlwLCAmYSkpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJnZXRfZmVhdHVyZXMgKCVzLCAlZClcbiIsIGRhdGEtPm5hbWUsIGRhdGEtPm51bWJlcikpOworCSAgICBpbnQgICAgICAgICAgICAgYiA9IDA7CisgCisKKyAgICAgICAgICAgIHdoaWxlICgoZGF0YTIgPSBzZW5zb3JzX2dldF9hbGxfc3ViZmVhdHVyZXMoIGNoaXAsIGRhdGEsICZiKSkpIHsKKyAgICAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqbGFiZWwgPSBOVUxMOworICAgICAgICAgICAgICAgIGRvdWJsZSAgICAgICAgICB2YWwgPSAwOworICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9PVEhFUjsKKworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIiAgZ2V0X3N1YmZlYXR1cmVzICglcywgJWQpXG4iLCBkYXRhMi0+bmFtZSwgZGF0YTItPm51bWJlcikpOworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQ2hlY2sgdGhlIHR5cGUgb2YgdGhpcyBzdWJmZWF0dXJlLAorICAgICAgICAgICAgICAgICAqICAgY29uY2VudHJhdGluZyBvbiB0aGUgbWFpbiAiaW5wdXQiIG1lYXN1cmVtZW50cy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCBkYXRhMi0+dHlwZSApIHsKKyAgICAgICAgICAgICAgICBjYXNlIFNFTlNPUlNfU1VCRkVBVFVSRV9JTl9JTlBVVDoKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9IE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9EQzsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBTRU5TT1JTX1NVQkZFQVRVUkVfRkFOX0lOUFVUOgorICAgICAgICAgICAgICAgICAgICB0eXBlID0gTkVUU05NUF9TRU5TT1JfVFlQRV9SUE07CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU0VOU09SU19TVUJGRUFUVVJFX1RFTVBfSU5QVVQ6CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBORVRTTk1QX1NFTlNPUl9UWVBFX1RFTVBFUkFUVVJFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFNFTlNPUlNfU1VCRkVBVFVSRV9WSUQ6CisgICAgICAgICAgICAgICAgICAgIHR5cGUgPSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfREM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIC8qIFNraXAgZXZlcnl0aGluZyBvdGhlciB0aGFuIHRoZXNlIGJhc2ljIHNlbnNvciBmZWF0dXJlcyAtID8/PyAqLworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIgIFNraXAgdHlwZSAleFxuIiwgZGF0YTItPnR5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBHZXQgdGhlIG5hbWUgYW5kIHZhbHVlIG9mIHRoaXMgc3ViZmVhdHVyZQorICAgICAgICAgICAgICAgICAqLworLyoKKyAgICAgICAgICAgICAgICBpZiAoIShsYWJlbCA9IHNlbnNvcnNfZ2V0X2xhYmVsKGNoaXAsIGRhdGEpKSkgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIgIENhbid0IGdldCBuYW1lICglcylcbiIsIGxhYmVsKSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2Vuc29yc19nZXRfdmFsdWUoY2hpcCwgZGF0YTItPm51bWJlciwgJnZhbCkgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIiAgQ2FuJ3QgZ2V0IHZhbHVlICglZilcbiIsIHZhbCkpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisqLworICAgICAgICAgICAgICAgIGlmICghKGxhYmVsID0gc2Vuc29yc19nZXRfbGFiZWwoY2hpcCwgZGF0YSkpIHx8CisgICAgICAgICAgICAgICAgICAgICAoc2Vuc29yc19nZXRfdmFsdWUoY2hpcCwgZGF0YTItPm51bWJlciwgJnZhbCkgPCAwKSkgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIgIENhbid0IGdldCBuYW1lL3ZhbHVlICglcywgJWYpXG4iLCBsYWJlbCwgdmFsKSk7CisgICAgICAgICAgICAgICAgICAgIGZyZWUobGFiZWwpOworICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICIlcyA9ICVmXG4iLCBsYWJlbCwgdmFsKSk7CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFVzZSB0aGlzIHR5cGUgdG8gY3JlYXRlIGEgbmV3IHNlbnNvciBlbnRyeQorICAgICAgICAgICAgICAgICAqICAoaW5zZXJ0aW5nIGl0IGluIHRoZSBhcHByb3ByaWF0ZSBzdWItY29udGFpbmVycykKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBsYWJlbCwgdHlwZSApOworICAgICAgICAgICAgICAgIGlmICggc3AgKSB7CisgICAgICAgICAgICAgICAgICAgIHNwLT52YWx1ZSA9IHZhbDsKKyAgICAgICAgICAgICAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgICAgICAgICAgICAgfQorCSAgICAgICAgaWYgKGxhYmVsKSB7CisJCSAgICBmcmVlKGxhYmVsKTsKKwkJICAgIGxhYmVsID0gTlVMTDsKKwkgICAgICAgIH0KKyAgICAgICAgICAgIH0gLyogZW5kIHdoaWxlIGRhdGEyICovCisgICAgICAgIH0gLyogZW5kIHdoaWxlIGRhdGEgKi8KKyAgICB9IC8qIGVuZCB3aGlsZSBjaGlwICovCisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvbG1zZW5zb3JzX3YzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1ZmZiNGQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL2xtc2Vuc29yc192My5oCkBAIC0wLDAgKzEgQEAKK2NvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL3NlbnNvcnMvaHdfc2Vuc29ycykKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5jIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRjNzAwNgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hhcmR3YXJlL3NlbnNvcnMvcGljbGRfc2Vuc29ycy5jCkBAIC0wLDAgKzEsMzQwIEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaD4KKworI2luY2x1ZGUgPHRpbWUuaD4KKworI2luY2x1ZGUgPHBpY2wuaD4KKyNpbmNsdWRlIDwvdXNyL3BsYXRmb3JtL3N1bjR1L2luY2x1ZGUvc3lzL2VudmN0cmwuaD4KKwordm9pZCBuZXRzbm1wX3NlbnNvcl9hcmNoX2luaXQoIHZvaWQgKSB7CisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJJbml0aWFsaXNlIFBJQ0xkIFNlbnNvcnMgbW9kdWxlXG4iKSk7CisgICAgcGljbF9pbml0aWFsaXplKCk7Cit9CisKKworLyoKKyAqIEhhbmRsZSBhIG51bWVyaWMtdmFsdWVkIHNlbnNvcgorICovCitzdGF0aWMgaW50CityZWFkX251bV9zZW5zb3IoIHBpY2xfbm9kZWhkbF90IGNoaWxkaCwgY2hhciAqcHJvcHZhbCwgZmxvYXQgKnZhbHVlICkKK3sKKyAgICBwaWNsX25vZGVoZGxfdCAgc2Vuc29yaDsKKyAgICBwaWNsX3Byb3BpbmZvX3Qgc2Vuc29yX2luZm87CisgICAgcGljbF9lcnJub190ICAgIGVycm9yX2NvZGU7CisKKyAgICB1bmlvbiB2YWx1IHsKKyAgICAgICAgY2hhciBidWZbUElDTF9QUk9QU0laRV9NQVhdOworICAgICAgICB1aW50MzJfdCB1czQ7CisgICAgICAgIHVpbnQxNl90IHVzMjsKKyAgICAgICAgaW50MzJfdCBpczQ7CisgICAgICAgIGludDE2X3QgaXMyOworICAgICAgICBmbG9hdCBmOworICAgIH0gdmFsOworCisgICAgLyoKKyAgICAgKiAgUmV0cmlldmUgdGhlIHNwZWNpZmllZCBzZW5zb3IgaW5mb3JtYXRpb24gYW5kIHZhbHVlCisgICAgICovCisgICAgZXJyb3JfY29kZSA9IHBpY2xfZ2V0X3Byb3BpbmZvX2J5X25hbWUoY2hpbGRoLCBwcm9wdmFsLCAmc2Vuc29yX2luZm8sICZzZW5zb3JoKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgIT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJzZW5zb3IgaW5mbyBsb29rdXAgZmFpbGVkICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGUpKTsKKyAgICAgICAgcmV0dXJuKCBlcnJvcl9jb2RlICk7CisgICAgfQorCisgICAgZXJyb3JfY29kZSA9IHBpY2xfZ2V0X3Byb3B2YWwoc2Vuc29yaCwgJnZhbC5idWYsIHNlbnNvcl9pbmZvLnNpemUpOworICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgInNlbnNvciB2YWx1ZSBsb29rdXAgZmFpbGVkICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGUpKTsKKyAgICAgICAgcmV0dXJuKCBlcnJvcl9jb2RlICk7CisgICAgfQorCisgICAgLyoKKyAgICAgKiAgQ2hlY2sgdGhlIHZhbGlkaXR5ICh0eXBlIGFuZCBzaXplKSBvZiB0aGlzIHZhbHVlCisgICAgICovCisgICAgaWYgKCBzZW5zb3JfaW5mby50eXBlID09IFBJQ0xfUFRZUEVfRkxPQVQgKSB7CisgICAgICAgICp2YWx1ZSA9IHZhbC5mOworICAgIH0gZWxzZSBpZiAoIHNlbnNvcl9pbmZvLnR5cGUgPT0gUElDTF9QVFlQRV9VTlNJR05FRF9JTlQgKSB7CisgICAgICAgIC8qIDE2LWJpdCBvciAzMi1iaXQgdW5zaWduZWQgaW50ZWdlcnMgKi8KKyAgICAgICAgaWYgKCBzZW5zb3JfaW5mby5zaXplID09IDIgKSB7CisgICAgICAgICAgICAqdmFsdWUgPSB2YWwudXMyOworICAgICAgICB9IGVsc2UgaWYgKCBzZW5zb3JfaW5mby5zaXplID09IDQgKSB7IAorICAgICAgICAgICAgKnZhbHVlID0gdmFsLnVzNDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgInVuc2lnbmVkIGludGVnZXIgKCVkIGJpdClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZW5zb3JfaW5mby5zaXplICogOCkpOworICAgICAgICAgICAgcmV0dXJuIFBJQ0xfRkFJTFVSRTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoIHNlbnNvcl9pbmZvLnR5cGUgPT0gUElDTF9QVFlQRV9JTlQgKSB7CisgICAgICAgIC8qIDE2LWJpdCBvciAzMi1iaXQgc2lnbmVkIGludGVnZXJzICovCisgICAgICAgIGlmICggc2Vuc29yX2luZm8uc2l6ZSA9PSAyICkgeworICAgICAgICAgICAgKnZhbHVlID0gdmFsLmlzMjsKKyAgICAgICAgfSBlbHNlIGlmICggc2Vuc29yX2luZm8uc2l6ZSA9PSA0ICkgeyAKKyAgICAgICAgICAgICp2YWx1ZSA9IHZhbC5pczQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJzaWduZWQgaW50ZWdlciAoJWQgYml0KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLnNpemUgKiA4KSk7CisgICAgICAgICAgICByZXR1cm4gUElDTF9GQUlMVVJFOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAidW5yZWNvZ25pc2VkIHR5cGUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vuc29yX2luZm8udHlwZSkpOworICAgICAgICByZXR1cm4gUElDTF9GQUlMVVJFOworICAgIH0KKworICAgIHJldHVybiBlcnJvcl9jb2RlOworfQorCitzdGF0aWMgaW50Citwcm9jZXNzX251bV9zZW5zb3IoIHBpY2xfbm9kZWhkbF90IGNoaWxkaCwgY2hhciAqcHJvcG5hbWUsIGNoYXIgKnByb3B2YWwsIGludCB0eXAgKQoreworICAgIG5ldHNubXBfc2Vuc29yX2luZm8gICAgICAgICpzcDsKKyAgICBmbG9hdCAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU7CisgICAgcGljbF9lcnJub190ICAgIGVycm9yX2NvZGU7CisKKyAgICBzcCA9IHNlbnNvcl9ieV9uYW1lKCBwcm9wbmFtZSwgdHlwICk7CisgICAgaWYgKCAhc3AgKSB7CisgICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZXJyb3JfY29kZSA9IHJlYWRfbnVtX3NlbnNvciggY2hpbGRoLCBwcm9wdmFsLCAmdmFsdWUgKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgPT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBzcC0+dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiRmFpbGVkIHRvIHJlYWQgJXMgc2Vuc29yIHZhbHVlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BuYW1lLCBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKworCisvKgorICogICAgSGFuZGxlIGFuIGVudW1lcmF0aW9uLXZhbHVlZCBzZW5zb3IKKyAqLworY2hhciAqc3dpdGNoX3NldHRpbmdzW10gPSB7ICJPRkYiLCJPTiIsIk5PUk1BTCIsIkxPQ0tFRCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVOS05PV04iLCJESUFHIiwiU0VDVVJFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMIH07CitjaGFyICpsZWRfc2V0dGluZ3NbXSAgICA9IHsgIk9GRiIsIk9OIiwiQkxJTksiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgfTsKK2NoYXIgKmkyY19zZXR0aW5nc1tdICAgID0geyAiT0siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwgfTsKKworc3RhdGljIGludAorcmVhZF9lbnVtX3NlbnNvciggcGljbF9ub2RlaGRsX3QgY2hpbGRoLCBmbG9hdCAqdmFsdWUsIGNoYXIgKipvcHRpb25zICkKK3sKKyAgICBwaWNsX25vZGVoZGxfdCAgc2Vuc29yaDsKKyAgICBwaWNsX3Byb3BpbmZvX3Qgc2Vuc29yX2luZm87CisgICAgcGljbF9lcnJub190ICAgIGVycm9yX2NvZGU7CisgICAgY2hhciAgICAgICAgICAgIHN0YXRlW1BJQ0xfUFJPUFNJWkVfTUFYXTsKKyAgICBpbnQgICAgICAgICAgICAgaTsKKworICAgIC8qCisgICAgICogIFJldHJpZXZlIHRoZSBzcGVjaWZpZWQgc2Vuc29yIGluZm9ybWF0aW9uIGFuZCB2YWx1ZQorICAgICAqLworICAgIGVycm9yX2NvZGUgPSBwaWNsX2dldF9wcm9waW5mb19ieV9uYW1lKGNoaWxkaCwgIlN0YXRlIiwgJnNlbnNvcl9pbmZvLCAmc2Vuc29yaCk7CisgICAgaWYgKCBlcnJvcl9jb2RlICE9IFBJQ0xfU1VDQ0VTUyApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAic2Vuc29yIGluZm8gbG9va3VwIGZhaWxlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgIH0KKworICAgIGVycm9yX2NvZGUgPSBwaWNsX2dldF9wcm9wdmFsKHNlbnNvcmgsIHN0YXRlLCBzZW5zb3JfaW5mby5zaXplKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgIT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJzZW5zb3IgdmFsdWUgbG9va3VwIGZhaWxlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgIH0KKworICAgIC8qCisgICAgICogVHJ5IHRvIGZpbmQgYSBtYXRjaGluZyBlbnRyeSBpbiB0aGUgbGlzdCBvZiBvcHRpb25zLgorICAgICAqIE5vdGUgdGhhdCBzb21lIHBsYXRmb3JtcyBtYXkgdXNlIHVwcGVyIG9yIGxvd2VyIGNhc2UKKyAgICAgKiAgIHZlcnNpb25zIG9mIHRoZXNlIGVudW1lcmF0aW9uIHZhbHVlcworICAgICAqICAoc28gdGhlIGNoZWNrcyBhcmUgY2FzZSBpbnNlbnNpdGl2ZSkKKyAgICAgKi8KKyAgICAqdmFsdWUgPSA5OTsgICAgLyogRHVtbXkgdmFsdWUgKi8KKyAgICBmb3IgKCBpPTA7ICBvcHRpb25zW2ldICE9IE5VTEw7IGkrKyApIHsKKyAgICAgICAgaWYgKHN0cm5jYXNlY21wKHN0YXRlLCBvcHRpb25zW2ldLCBzdHJsZW4ob3B0aW9uc1tpXSkpID09IDApIHsKKyAgICAgICAgICAgICp2YWx1ZSA9IGk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJFbnVtZXJhdGlvbiBzdGF0ZSAlcyBub3QgbWF0Y2hlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0ZSkpOworICAgIHJldHVybiAwOyAgLyogT3IgYW4gZXJyb3IgPyAqLworfQorCitzdGF0aWMgaW50Citwcm9jZXNzX2VudW1fc2Vuc29yKCBwaWNsX25vZGVoZGxfdCBjaGlsZGgsIGNoYXIgKnByb3BuYW1lLCBpbnQgdHlwLCBjaGFyICoqb3B0aW9ucyApCit7CisgICAgbmV0c25tcF9zZW5zb3JfaW5mbyAgICAgICAgKnNwOworICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTsKKyAgICBwaWNsX2Vycm5vX3QgICAgZXJyb3JfY29kZTsKKworICAgIHNwID0gc2Vuc29yX2J5X25hbWUoIHByb3BuYW1lLCB0eXAgKTsKKyAgICBpZiAoICFzcCApIHsKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBlcnJvcl9jb2RlID0gcmVhZF9lbnVtX3NlbnNvciggY2hpbGRoLCAmdmFsdWUsIG9wdGlvbnMgKTsKKyAgICBpZiAoIGVycm9yX2NvZGUgPT0gUElDTF9TVUNDRVNTICkgeworICAgICAgICBzcC0+dmFsdWUgPSB2YWx1ZTsKKyAgICAgICAgc3AtPmZsYWdzfD0gTkVUU05NUF9TRU5TT1JfRkxBR19BQ1RJVkU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiRmFpbGVkIHRvIHJlYWQgJXMgc2Vuc29yIHZhbHVlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BuYW1lLCBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CitzdGF0aWMgaW50Citwcm9jZXNzX2VudW1fc2Vuc29yKCBwaWNsX25vZGVoZGxfdCBjaGlsZGgsIGNoYXIgKnByb3BuYW1lLCBpbnQgdHlwLCBjaGFyICoqb3B0aW9ucyApCit7CisgICAgcmV0dXJuIDA7Cit9CisKKworCisvKgorICogIFJlY3Vyc2l2ZWx5IHdhbGsgdGhyb3VnaCB0aGUgdHJlZSBvZiBzZW5zb3JzCisgKi8KK3N0YXRpYyBpbnQKK3Byb2Nlc3Nfc2Vuc29ycyggaW50IGxldmVsLCBwaWNsX25vZGVoZGxfdCBub2RlaCApIHsKKyAgICBwaWNsX25vZGVoZGxfdCBjaGlsZGgsIG5leHRoOworICAgIGNoYXIgICAgICAgICAgIHByb3BuYW1lWyAgUElDTF9QUk9QTkFNRUxFTl9NQVggIF07CisgICAgY2hhciAgICAgICAgICAgcHJvcGNsYXNzWyBQSUNMX0NMQVNTTkFNRUxFTl9NQVggXTsKKyAgICBwaWNsX2Vycm5vX3QgICBlcnJvcl9jb2RlOworCisgICAgbGV2ZWwrKzsKKyAgICBERUJVR01TR1RMKCgic2Vuc29yczphcmNoOmRldGFpbCIsICJwcm9jZXNzX3NlbnNvcnMgLSBsZXZlbCAlZFxuIiwgbGV2ZWwpKTsKKworICAgIC8qIExvb2sgdXAgdGhlIGZpcnN0IGNoaWxkIG5vZGUgYXQgdGhpcyBsZXZlbCAqLworICAgIGVycm9yX2NvZGUgPSBwaWNrX2dldF9wcm9wdmFsX2J5X25hbWUoIG5vZGVoLCBQSUNMX1BST1BfQ0hJTEQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoaWxkaCwgc2l6ZW9mKGNoaWxkaCkpOworICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgIkZhaWxlZCB0byBnZXQgZmlyc3QgY2hpbGQgbm9kZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcl9jb2RlKSk7CisgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgIH0KKworICAgIC8qIFN0ZXAgdGhyb3VnaCB0aGUgY2hpbGQgbm9kZXMsIHJldHJpZXZpbmcgdGhlIG5hbWUgYW5kIGNsYXNzIG9mIGVhY2ggb25lICovCisgICAgd2hpbGUgKCBlcnJvcl9jb2RlID09IFBJQ0xfU1VDQ0VTUyApIHsKKyAgICAgICAgZXJyb3JfY29kZSA9IHBpY2tfZ2V0X3Byb3B2YWxfYnlfbmFtZSggY2hpbGRoLCBQSUNMX1BST1BfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcG5hbWUsIHNpemVvZihwcm9wbmFtZSktMSk7CisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgICAgICAvKiBUaGUgTm9kZSBXaXRoIE5vIE5hbWUgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgImdldCBwcm9wZXJ0eSBuYW1lIGZhaWxlZCAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfY29kZSkpOworICAgICAgICAgICAgcmV0dXJuKCBlcnJvcl9jb2RlICk7CisgICAgICAgIH0KKworICAgICAgICBlcnJvcl9jb2RlID0gcGlja19nZXRfcHJvcHZhbF9ieV9uYW1lKCBjaGlsZGgsIFBJQ0xfUFJPUF9DTEFTU05BTUUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BjbGFzcywgc2l6ZW9mKHByb3BjbGFzcyktMSk7CisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgICAgICAvKiBUaGUgQ2xhc3NsZXNzIFNvY2lldHkgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2g6ZGV0YWlsIiwgImdldCBwcm9wZXJ0eSBjbGFzcyBmYWlsZWQgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yX2NvZGUpKTsKKyAgICAgICAgICAgIHJldHVybiggZXJyb3JfY29kZSApOworICAgICAgICB9CisKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiTmFtZTogJXMsIENsYXNzICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wbmFtZSwgcHJvcGNsYXNzICkpOworCisKKyAgICAgICAgLyoKKyAgICAgICAgICogIFRocmVlIGNsYXNzZXMgcmVwcmVzZW50IGZ1cnRoZXIgZ3JvdXBzIG9mIHNlbnNvcnMsIGV0Yy4KKyAgICAgICAgICogIENhbGwgJ3Byb2Nlc3Nfc2Vuc29ycycgcmVjdXJzaXZlbHkgdG8gaGFuZGxlIHRoaXMgbmV4dCBsZXZlbAorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCggc3Ryc3RyKCBwcm9wY2xhc3MsICJwaWNsIiAgICApKSB8fAorICAgICAgICAgICAgKCBzdHJzdHIoIHByb3BjbGFzcywgImZydXRyZWUiICkpIHx8CisgICAgICAgICAgICAoIHN0cnN0ciggcHJvcGNsYXNzLCAib2JwIiAgICAgKSkpIHsKKyAgICAgICAgICAgIHByb2Nlc3Nfc2Vuc29ycyggbGV2ZWwsIGNoaWxkaCApOworICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqICBPdGhlcndpc2UgcmV0cmlldmUgdGhlIHZhbHVlIGFwcHJvcHJpYXRlbHkgYmFzZWQgb24gdGhlCisgICAgICAgICAqICAgICBjbGFzcyBvZiB0aGUgc2Vuc29yLgorICAgICAgICAgKgorICAgICAgICAgKiAgV2UgbmVlZCB0byBzcGVjaWZ5IHRoZSBuYW1lIG9mIHRoZSBQSUNMIHByb3BlcnR5IHRvIHJldHJpZXZlCisgICAgICAgICAqICAgICBmb3IgdGhpcyBjbGFzcyBvZiBzZW5zb3IsIGFuZCB0aGUgTmV0LVNOTVAgc2Vuc29yIHR5cGUuCisgICAgICAgICAqLworICAgICAgICBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJmYW4tdGFjaG9tZXRlciIgKSkgeworICAgICAgICAgICAgcHJvY2Vzc19udW1fc2Vuc29yKCBjaGlsZGgsIHByb3BuYW1lLCAiQXRvRFNlbnNvclZhbHVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfU0VOU09SX1RZUEVfUlBNICk7CisgICAgICAgIH0gZWxzZSBpZiAoIHN0cnN0ciggcHJvcGNsYXNzLCAiZmFuIiApKSB7CisgICAgICAgICAgICBwcm9jZXNzX251bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsICJTcGVlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX1NFTlNPUl9UWVBFX1JQTSApOworICAgICAgICB9IGVsc2UgaWYgKCBzdHJzdHIoIHByb3BjbGFzcywgInRlbXBlcmF0dXJlLXNlbnNvciIgKSkgeworICAgICAgICAgICAgcHJvY2Vzc19udW1fc2Vuc29yKCBjaGlsZGgsIHByb3BuYW1lLCAiVGVtcGVyYXR1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9TRU5TT1JfVFlQRV9URU1QRVJBVFVSRSApOworICAgICAgICB9IGVsc2UgaWYgKCBzdHJzdHIoIHByb3BjbGFzcywgInZvbHRhZ2Utc2Vuc29yIiApKSB7CisgICAgICAgICAgICBwcm9jZXNzX251bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsICJWb2x0YWdlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qID8/ICovIE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9EQyApOworICAgICAgICB9IGVsc2UgaWYgKCBzdHJzdHIoIHByb3BjbGFzcywgImRpZ2l0YWwtc2Vuc29yIiApKSB7CisgICAgICAgICAgICBwcm9jZXNzX251bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsICJBdG9EU2Vuc29yVmFsdWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogPz8gKi8gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICk7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRW51bWVyYXRpb24tdmFsdWVkIHNlbnNvcnMgdXNlIGEgZml4ZWQgUElDTCBwcm9wZXJ0eSAoIlN0YXRlIiksCisgICAgICAgICAgICAgKiAgIGJ1dCB0YWtlIGEgbGlzdCBvZiB0aGUgdmFsdWVzIGFwcHJvcHJpYXRlIGZvciB0aGF0IHNlbnNvciwKKyAgICAgICAgICAgICAqICAgYXMgd2VsbCBhcyB0aGUgTmV0LVNOTVAgc2Vuc29yIHR5cGUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfSBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJzd2l0Y2giICkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NfZW51bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2hfc2V0dGluZ3MgKTsKKyAgICAgICAgfSBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJsZWQiICkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NfZW51bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWRfc2V0dGluZ3MgKTsKKyAgICAgICAgfSBlbHNlIGlmICggc3Ryc3RyKCBwcm9wY2xhc3MsICJpMmMiICkpIHsKKyAgICAgICAgICAgIHByb2Nlc3NfZW51bV9zZW5zb3IoIGNoaWxkaCwgcHJvcG5hbWUsIE5FVFNOTVBfU0VOU09SX1RZUEVfQk9PTEVBTiwgLyogPz8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkyY19zZXR0aW5ncyApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogU2tpcCBvdGhlciBjbGFzc2VzIG9mIHNlbnNvciAqLworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaDpkZXRhaWwiLCAiU2tpcHBpbmcgY2xhc3MgJXNcbiIsIHByb3BjbGFzcyApKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqICBNb3ZlIG9uIHRvIHRoZSBuZXh0IGNoaWxkIG5vZGUgYXQgdGhlIGN1cnJlbnQgbGV2ZWwgKGlmIGFueSkKKyAgICAgICAgICovCisgICAgICAgIGVycm9yX2NvZGUgPSBwaWNrX2dldF9wcm9wdmFsX2J5X25hbWUoIGNoaWxkaCwgUElDTF9QUk9QX1BFRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXh0aCwgc2l6ZW9mKG5leHRoKSk7CisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MgKSB7CisgICAgICAgICAgICAvKiBUaGF0J3MgQWxsIEZvbGtzISAqLworICAgICAgICAgICAgcmV0dXJuICgoIGVycm9yX2NvZGUgPT0gUElDTF9QUk9QTk9URk9VTkQgKQorICAgICAgICAgICAgICAgICAgICAgICAgICA/IFBJQ0xfU1VDQ0VTUyA6IGVycm9yX2NvZGUgKTsKKyAgICAgICAgfQorICAgICAgICBjaGlsZGggPSBuZXh0aDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIGVycm9yX2NvZGU7Cit9CisKKworaW50CituZXRzbm1wX3NlbnNvcl9hcmNoX2xvYWQobmV0c25tcF9jYWNoZSAqY2FjaGUsIHZvaWQgKnZwKSB7CisgICAgaW50ICAgICAgICAgICAgICAgZXJyb3JfY29kZTsKKyAgICBwaWNsX25vZGVoZGxfdCAgICByb290aDsKKworICAgIERFQlVHTVNHVEwoKCJzZW5zb3JzOmFyY2giLCAiUmVsb2FkIFBJQ0xkIFNlbnNvcnMgbW9kdWxlXG4iKSk7CisKKyAgICBlcnJvcl9jb2RlID0gcGljbF9nZXRfcm9vdCgmcm9vdGgpOworICAgIGlmICggZXJyb3JfY29kZSAhPSBQSUNMX1NVQ0NFU1MpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJDb3VsZG4ndCBnZXQgcm9vdCBub2RlIChlcnJvciAlZClcbiIsIGVycm9yX2NvZGUpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgZXJyb3JfY29kZSA9IHByb2Nlc3Nfc2Vuc29ycygwLCByb290aCk7CisgICAgaWYgKCBlcnJvcl9jb2RlICE9IDI1NSApCisgICAgICAgIGlmICggZXJyb3JfY29kZSAhPSA3ICkgIC8qIGlnbm9yZSBQSUNMX1BST1BOT1RGT1VORCBlcnJvciAqLworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJJbnRlcm5hbCBQSUNMZCBwcm9ibGVtIChlcnJvciAlZClcbiIsIGVycm9yX2NvZGUpKTsKKworICAgIHJldHVybiAwOworfQorCit2b2lkIG5ldHNubXBfc2Vuc29yX2FyY2hfc2h1dGRvd24oIHZvaWQgKSB7CisgICAgREVCVUdNU0dUTCgoInNlbnNvcnM6YXJjaCIsICJTaHV0ZG93biBQaWNMRCBTZW5zb3JzIG1vZHVsZVxuIikpOworICAgIHBpY2xfc2h1dGRvd24oKTsKK30KKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmggYi9hZ2VudC9taWJncm91cC9oYXJkd2FyZS9zZW5zb3JzL3BpY2xkX3NlbnNvcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNWZmYjRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaGFyZHdhcmUvc2Vuc29ycy9waWNsZF9zZW5zb3JzLmgKQEAgLTAsMCArMSBAQAorY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvc2Vuc29ycy9od19zZW5zb3JzKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYyBiL2FnZW50L21pYmdyb3VwL2hlYWRlcl9jb21wbGV4LmMKaW5kZXggYzM4NWVkZS4uOTU2MWVjZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaGVhZGVyX2NvbXBsZXguYworKysgYi9hZ2VudC9taWJncm91cC9oZWFkZXJfY29tcGxleC5jCkBAIC05NCw3ICs5NCw3IEBACiAgICAgaWYgKHZhci0+bmFtZV9sZW5ndGggPiBNQVhfT0lEX0xFTikgewogICAgICAgICBERUJVR01TR1RMKCgiaGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfdmFyb2lkIiwKICAgICAgICAgICAgICAgICAgICAgIlNvbWV0aGluZyB0ZXJyaWJseSB3cm9uZywgbmFtZWxlbiA9ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWVfbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpdmFyLT5uYW1lX2xlbmd0aCkpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQogCkBAIC0xMzAsNyArMTMwLDcgQEAKICAgICAgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihsb25nKTsKICAgICAgICAgICAgIG9pZExlbi0tOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoImhlYWRlcl9jb21wbGV4X3BhcnNlX29pZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVkXG4iLCB2YXItPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVsZFxuIiwgdmFyLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgKnZhci0+dmFsLmludGVnZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC00MDAsNiArNDAwLDggQEAKICAgICAgKi8KICAgICBvdXJzZWxmID0gKHN0cnVjdCBoZWFkZXJfY29tcGxleF9pbmRleCAqKQogICAgICAgICBTTk1QX01BTExPQ19TVFJVQ1QoaGVhZGVyX2NvbXBsZXhfaW5kZXgpOworICAgIGlmIChvdXJzZWxmID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiBjaGFuZ2Ugb3VyIHBvaW50ZXJzIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC5oCmluZGV4IDRiNzg3MDYuLmU4ZTY1NTggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QuaAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0LmgKQEAgLTIsOSArMiwxOCBAQAogICogIEhvc3QgUmVzb3VyY2VzICd3cmFwcGVyJyBpbnRlcmZhY2UKICAqCWNhbGxzIHRoZSBwZXItZ3JvdXAgaW50ZXJmYWNlcyBmcm9tICdocl8qLmgnCiAgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLwogCiAJY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9zeXN0ZW0pCi0JY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9zdG9yYWdlKQogCWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZGV2aWNlKQogCWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfb3RoZXIpCiAJY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9wcm9jKQpAQCAtMTIsOSArMjEsMTIgQEAKIAljb25maWdfcmVxdWlyZShob3N0L2hyX3ByaW50KQogCWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZGlzaykKIAljb25maWdfcmVxdWlyZShob3N0L2hyX3BhcnRpdGlvbikKLQljb25maWdfcmVxdWlyZShob3N0L2hyX2ZpbGVzeXMpCi0JY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9zd3J1bikKLQljb25maWdfcmVxdWlyZShob3N0L2hyX3N3aW5zdCkKKworCWNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKGhvc3QvaHJfc3RvcmFnZSwgNS43LCBob3N0L2hyaF9zdG9yYWdlKSkKKwljb25maWdfdmVyc2lvbl9yZXF1aXJlKChob3N0L2hyX2ZpbGVzeXMsIDUuNywgaG9zdC9ocmhfZmlsZXN5cykpCisKKwljb25maWdfdmVyc2lvbl9yZXF1aXJlKChob3N0L2hyX3N3aW5zdCwgIDUuNiwgaG9zdC9oclNXSW5zdGFsbGVkVGFibGUpKQorCWNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKGhvc3QvaHJfc3dydW4sICAgNS42LCBob3N0L2hyU1dSdW5UYWJsZSkpCiAKIC8qIGFkZCB0aGUgaG9zdCByZXNvdXJjZXMgbWliIHRvIHRoZSBkZWZhdWx0IG1pYnMgdG8gbG9hZCAqLwogY29uZmlnX2FkZF9taWIoSE9TVC1SRVNPVVJDRVMtTUlCKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiODU3MwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0LmMKQEAgLTAsMCArMSwyMTYgQEAKKy8qCisgKiBzd2luc3QuYyA6IGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzcworICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK3N0YXRpYyB2b2lkIG5ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWVfY2IobmV0c25tcF9zd2luc3RfZW50cnkgKiwgdm9pZCAqKTsKKworZXh0ZXJuIHZvaWQgbmV0c25tcF9zd2luc3RfYXJjaF9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgbmV0c25tcF9zd2luc3RfYXJjaF9zaHV0ZG93bih2b2lkKTsKK2V4dGVybiBpbnQgbmV0c25tcF9zd2luc3RfYXJjaF9sb2FkKG5ldHNubXBfY29udGFpbmVyICosIHVfaW50KTsKKwordm9pZCBpbml0X3N3aW5zdCggdm9pZCApCit7CisgICAgc3RhdGljIGludCBpbml0aWFsaXplZCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0IiwgImluaXQgY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoaW5pdGlhbGl6ZWQpCisgICAgICAgIHJldHVybjsgLyogYWxyZWFkeSBpbml0aWFsaXplZCAqLworCisKKyAgICAvKgorICAgICAqIGNhbGwgYXJjaCBpbml0IGNvZGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3N3aW5zdF9hcmNoX2luaXQoKTsKK30KKwordm9pZCBzaHV0ZG93bl9zd2luc3QoIHZvaWQgKQoreworICAgIERFQlVHTVNHVEwoKCJzd2luc3QiLCAic2h1dGRvd24gY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX3N3aW5zdF9hcmNoX3NodXRkb3duKCk7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBsb2FkIGEgY29udGFpbmVyIHdpdGggaW5zdGFsbGVkIHNvZnR3YXJlLiBJZiB1c2VyX2NvbnRhaW5lciBpcyBOVUxMLAorICogYSBuZXcgY29udGFpbmVyIHdpbGwgYmUgYWxsb2NhdGVkIGFuZCByZXR1cm5lZCwgYW5kIHRoZSBjYWxsZXIKKyAqIGlzIHJlc3BvbnNpYmxlIGZvciByZWxlYXNpbmcgdGhlIGFsbG9jYXRlZCBtZW1vcnkgd2hlbiBkb25lLgorICoKKyAqIGlmIGZsYWdzIGNvbnRhaW5zIE5FVFNOTVBfU1dJTlNUX0FMTF9PUl9OT05FIGFuZCBhbnkgZXJyb3Igb2NjdXJzLAorICogdGhlIGNvbnRhaW5lciB3aWxsIGJlIGNvbXBsZXRlbHkgY2xlYXJlZC4KKyAqLworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICp1c2VyX2NvbnRhaW5lciwgaW50IGZsYWdzICkKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyID0gdXNlcl9jb250YWluZXI7CisgICAgaW50IGFyY2hfcmM7CisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmNvbnRhaW5lciIsICJsb2FkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgY29udGFpbmVyLCBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfZmluZCgic3dpbnN0OnRhYmxlX2NvbnRhaW5lciIpOworICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyLT5jb250YWluZXJfbmFtZSkKKyAgICAgICAgY29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgic3dpbnN0IGNvbnRhaW5lciIpOworCisgICAgLyoKKyAgICAgKiBjYWxsIHRoZSBhcmNoIHNwZWNpZmljIGNvZGUgdG8gbG9hZCB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgYXJjaF9yYyA9IG5ldHNubXBfc3dpbnN0X2FyY2hfbG9hZCggY29udGFpbmVyLCBmbGFncyApOworICAgIGlmIChhcmNoX3JjICYmIChmbGFncyAmIE5FVFNOTVBfU1dJTlNUX0FMTF9PUl9OT05FKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBjYWxsZXIgZG9lcyBub3Qgd2FudCBhIHBhcnRpYWwgbG9hZCwgc28gZW1wdHkgdGhlIGNvbnRhaW5lci4KKyAgICAgICAgICogaWYgd2UgY3JlYXRlZCB0aGUgY29udGFpbmVyLCBkZXN0cm95IGl0LgorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWVfaXRlbXMoY29udGFpbmVyKTsKKyAgICAgICAgaWYgKGNvbnRhaW5lciAhPSB1c2VyX2NvbnRhaW5lcikgeworICAgICAgICAgICAgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLCBmbGFncyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKwordm9pZAorbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZnJlZV9mbGFncykKK3sKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmNvbnRhaW5lciIsICJmcmVlXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGZvciBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9TV0lOU1RfRE9OVF9GUkVFX0lURU1TKSkKKyAgICAgICAgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWVfaXRlbXMoY29udGFpbmVyKTsKKworICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7Cit9CisKKy8qCisgKiBmcmVlIGEgc3dpbnN0IGNvbnRhaW5lcgorICovCit2b2lkIG5ldHNubXBfc3dpbnN0X2NvbnRhaW5lcl9mcmVlX2l0ZW1zKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInN3aW5zdDpjb250YWluZXIiLCAiZnJlZV9pdGVtc1xuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBmb3IgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWVfaXRlbXNcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBmcmVlIGFsbCBpdGVtcy4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKW5ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWVfY2IsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfQorCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKy8qCisgKiBjcmVhdGUgYSBuZXcgcm93IGluIHRoZSB0YWJsZSAKKyAqLworbmV0c25tcF9zd2luc3RfZW50cnkgKgorbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKGludDMyX3Qgc3dJbmRleCkKK3sKKyAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnk7CisKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9zd2luc3RfZW50cnkpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZW50cnktPnN3SW5kZXggPSBzd0luZGV4OworICAgIGVudHJ5LT5vaWRfaW5kZXgubGVuID0gMTsKKyAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSAmZW50cnktPnN3SW5kZXg7CisKKyAgICBlbnRyeS0+c3dUeXBlID0gSFJTV0lOU1RBTExFRFRZUEVfQVBQTElDQVRJT047CisKKyAgICByZXR1cm4gZW50cnk7Cit9CisKKy8qCisgKiBmcmVlIGEgcm93CisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWUobmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5KQoreworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6ZW50cnk6ZnJlZSIsICJpbmRleCAlbHVcbiIsIGVudHJ5LT5zd0luZGV4KSk7CisKKyAgICBmcmVlKGVudHJ5KTsKK30KKworLyoKKyAqIGZyZWUgYSByb3cKKyAqLworc3RhdGljIHZvaWQKK25ldHNubXBfc3dpbnN0X2VudHJ5X2ZyZWVfY2IobmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5LCB2b2lkICpjb250ZXh0KQoreworICAgIGZyZWUoZW50cnkpOworfQorCisvKgorICogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlIAorICovCit2b2lkCituZXRzbm1wX3N3aW5zdF9lbnRyeV9yZW1vdmUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5KQoreworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6Y29udGFpbmVyIiwgInJlbW92ZVxuIikpOworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgIC8qIE5vdGhpbmcgdG8gcmVtb3ZlICovCisgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGVudHJ5KTsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2lmZGVmIFRFU1QKK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCit7CisgICAgY29uc3QgY2hhciAqdG9rZW5zID0gZ2V0ZW52KCJTTk1QX0RFQlVHIik7CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lcl9pbml0X2xpc3QoKTsKKworICAgIC8qKiBzd2luc3QsdmVyYm9zZTpzd2luc3QgKi8KKyAgICBpZiAodG9rZW5zKQorICAgICAgICBkZWJ1Z19yZWdpc3Rlcl90b2tlbnModG9rZW5zKTsKKyAgICBlbHNlCisgICAgICAgIGRlYnVnX3JlZ2lzdGVyX3Rva2Vucygic3dpbnN0Iik7CisgICAgc25tcF9zZXRfZG9fZGVidWdnaW5nKDEpOworCisgICAgaW5pdF9zd2luc3QoKTsKKyAgICBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfbG9hZChOVUxMLCAwKTsKKyAgICBzaHV0ZG93bl9zd2luc3QoKTsKKworICAgIHJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdC5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDRhMzE4Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3QuaApAQCAtMCwwICsxLDM0IEBACisvKgorICogc3dpbnN0IGRhdGEgYWNjZXNzIGhlYWRlcgorICoKKyAqICRJZDogc3dpbnN0LmggMTUzNDYgMjAwNi0wOS0yNiAyMzozNDo1MFogcnN0b3J5ICQKKyAqLworLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworI2lmbmRlZiBORVRTTk1QX0FDQ0VTU19TV0lOU1RfQ09ORklHX0gKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU1dJTlNUX0NPTkZJR19ICisKKy8qCisgKiBhbGwgcGxhdGZvcm1zIHVzZSB0aGlzIGdlbmVyaWMgY29kZQorICovCitjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3aW5zdCkKK2NvbmZpZ19leGNsdWRlKGhvc3QvaHJfc3dpbnN0KQorCisvKgorICogc2VsZWN0IHRoZSBhcHByb3ByaWF0ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW50ZXJmYWNlIGNvZGUKKyAqLworI2lmICAgZGVmaW5lZCggZGFyd2luICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4pCisjZWxpZiBkZWZpbmVkKCBIQVZFX0xJQlJQTSApICYmIGRlZmluZWQoIGxpbnV4ICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9ycG0pCisjZWxpZiBkZWZpbmVkKCBIQVZFX1BLR0xPQ1NfSCApIHx8IGRlZmluZWQoIGhwdXg5ICkgfHwgZGVmaW5lZCggaHB1eDEwICkgfHwgZGVmaW5lZCggaHB1eDExICkgfHwgZGVmaW5lZCggZnJlZWJzZDIgKSB8fCBkZWZpbmVkKCBsaW51eCApIHx8IGRlZmluZWQoIG9wZW5ic2QgKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8pCisjZWxzZQorICAgIGNvbmZpZ193YXJuaW5nKFRoaXMgcGxhdGZvcm0gZG9lcyBub3QgeWV0IHN1cHBvcnQgaHJTV0luc3RhbGxlZFRhYmxlIHJld3JpdGVzKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X251bGwpCisjZW5kaWYKKworI2VuZGlmIC8qIE5FVFNOTVBfQUNDRVNTX1NXSU5TVF9DT05GSUdfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9kYXJ3aW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMmM4YjQzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfZGFyd2luLmMKQEAgLTAsMCArMSwzOTAgQEAKKy8qCisgKiBzd2luc3QuYyA6IGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzcworICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaD4KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNkZWZpbmUgX19BUFBMRV9BUElfRVZPTFZJTkcgMQorI2luY2x1ZGUgPHN5cy9hY2wuaD4gLyogb3IgZWxzZSBDb3JlRm91bmRhdGlvbi5oIGJhcmZzICovCisjdW5kZWYgX19BUFBMRV9BUElfRVZPTFZJTkcgCisKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9Db3JlRm91bmRhdGlvbi5oPgorI2luY2x1ZGUgPEFwcGxpY2F0aW9uU2VydmljZXMvQXBwbGljYXRpb25TZXJ2aWNlcy5oPgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIGludCBfYWRkX2FwcGxpY2F0aW9uc19pbl9kaXIobmV0c25tcF9jb250YWluZXIgKiwgY29uc3QgY2hhciogcGF0aCk7CitzdGF0aWMgaW50MzJfdCBfaW5kZXg7CitzdGF0aWMgaW50IF9jaGVja19idW5kbGVkX2FwcChDRlVSTFJlZiBjdXJyZW50VVJMLCBDRlN0cmluZ1JlZiAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nUmVmICppbmZvLCBjb25zdCBjaGFyKiBwYXRoKTsKK3N0YXRpYyBpbnQgX2NoZWNrX2NsYXNzaWNfYXBwKENGVVJMUmVmIGN1cnJlbnRVUkwsIENGU3RyaW5nUmVmICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgKmluZm8sIGNvbnN0IGNoYXIqIHBhdGgpOworc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpkaXJzID0gTlVMTDsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfaW5pdCggdm9pZCApCit7CisgICAgc3RydWN0IHN0YXQgc3RhdF9idWY7CisgICAgY29uc3QgY2hhciAqZGVmYXVsdF9kaXJzW10gPSB7CisgICAgICAgICIvQXBwbGljYXRpb25zIiwKKyAgICAgICAgIi9BcHBsaWNhdGlvbnMgKE1hYyBPUyA5KSIsCisgICAgICAgICIvU3lzdGVtL0xpYnJhcnkvQ29yZVNlcnZpY2VzIiwKKyAgICAgICAgIi9TeXN0ZW0vTGlicmFyeS9FeHRlbnNpb25zIiwKKyAgICAgICAgIi9TeXN0ZW0vTGlicmFyeS9TZXJ2aWNlcyIKKyNpZmRlZiBURVNUCisgICAgICAgICwgIi9EZXZlbG9wZXIvQXBwbGljYXRpb25zIgorICAgICAgICAsICIvVm9sdW1lcy9hdWRYL0FwcGxpY2F0aW9ucyAoTWFjIE9TIDkpIgorI2VuZGlmCisgICAgfTsKKyAgICBpbnQgaSwgY291bnQgPSBzaXplb2YoZGVmYXVsdF9kaXJzKS9zaXplb2YoZGVmYXVsdF9kaXJzWzBdKTsKKworICAgIC8qCisgICAgICogY3JlYXRlIHRoZSBjb250YWluZXIsIGlmIG5lZWRlZAorICAgICAqLworICAgIGlmIChOVUxMID09IGRpcnMpIHsKKyAgICAgICAgZGlycyA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImRpcmVjdG9yeV9jb250YWluZXI6Y3N0cmluZyIpOworICAgICAgICBpZiAoTlVMTCA9PSBkaXJzKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgYWxsb2NhdGUgY29udGFpbmVyIGZvciBkaXIgbGlzdFxuIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZGlycy0+Y29udGFpbmVyX25hbWUgPSBzdHJkdXAoImRpcmVjdG9yeSBzZWFyY2ggbGlzdCIpOworICAgICAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChkaXJzLCAxLCBDT05UQUlORVJfS0VZX1VOU09SVEVEKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFkZCBkaXJzCisgICAgICovCisgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBjaGFyICogICAgICB0bXA7CisgICAgICAgIC8qKiB4eHg6IGdldC9zYXZlIHRoZSBsYXN0IG1vZCBkYXRlPyAqLworICAgICAgICBpZigtMSA9PSBzdGF0KGRlZmF1bHRfZGlyc1tpXSwgJnN0YXRfYnVmKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3aW5zdDphcmNoOmRhcndpbiIsICJza2lwcGluZyBkaXIgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0X2RpcnNbaV0pKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiYWRkaW5nIGRpciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfZGlyc1tpXSkpOworICAgICAgICB0bXAgPSBzdHJkdXAoZGVmYXVsdF9kaXJzW2ldKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdG1wKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJzdHJkdXAgZmFpbGVkXG4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoZGlycywgdG1wKTsKKyAgICB9Cit9CisKK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfc2h1dGRvd24oIHZvaWQgKQoreworICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9mcmVlKGRpcnMpOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCitpbnQKK25ldHNubXBfc3dpbnN0X2FyY2hfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MgKQoreworICAgIG5ldHNubXBfaXRlcmF0b3IgICAqaXQ7CisgICAgY29uc3QgY2hhciAgICAgICAgICpkaXI7CisgICAgaW50ICAgICAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAibG9hZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gZGlycykgeworICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwgIm5vIGRpcnMgdG8gc2NhbiFcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIF9pbmRleCA9IDA7CisgICAgCisgICAgaXQgPSBDT05UQUlORVJfSVRFUkFUT1IoZGlycyk7CisgICAgZm9yIChkaXIgPSBJVEVSQVRPUl9GSVJTVChpdCk7IGRpcjsgZGlyID0gSVRFUkFUT1JfTkVYVChpdCkpIHsKKyAgICAgICAgcmMgPSBfYWRkX2FwcGxpY2F0aW9uc19pbl9kaXIoY29udGFpbmVyLCBkaXIpOworICAgIH0KKyAgICBJVEVSQVRPUl9SRUxFQVNFKGl0KTsKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwgImxvYWRlZCAlZCBhcHBzXG4iLF9pbmRleCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgIF9kdW1wX2ZsYWdzKHVfbG9uZyBmbGFncykKK3sKKyAgICBzdGF0aWMgc3RydWN0IHsKKyAgICAgICAgY29uc3QgY2hhcipuYW1lOworICAgICAgICB1X2xvbmcgYml0czsKKyAgICB9IG5hbWVzW10gPSB7CisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNQbGFpbkZpbGUiLCAweDAwMDAwMDAxIH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNQYWNrYWdlIiwgMHgwMDAwMDAwMiB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzQXBwbGljYXRpb24iLCAweDAwMDAwMDA0IH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNDb250YWluZXIiLCAweDAwMDAwMDA4IH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNBbGlhc0ZpbGUiLCAweDAwMDAwMDEwIH0sCisgICAgICAgIHsgImtMU0l0ZW1JbmZvSXNTeW1saW5rIiwgMHgwMDAwMDAyMCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzSW52aXNpYmxlIiwgMHgwMDAwMDA0MCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzTmF0aXZlQXBwIiwgMHgwMDAwMDA4MCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0lzQ2xhc3NpY0FwcCIsIDB4MDAwMDAxMDAgfSwKKyAgICAgICAgeyAia0xTSXRlbUluZm9BcHBQcmVmZXJzTmF0aXZlIiwgMHgwMDAwMDIwMCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0FwcFByZWZlcnNDbGFzc2ljIiwgMHgwMDAwMDQwMCB9LAorICAgICAgICB7ICJrTFNJdGVtSW5mb0FwcElzU2NyaXB0YWJsZSIsIDB4MDAwMDA4MDAgfSwKKyAgICAgICAgeyAia0xTSXRlbUluZm9Jc1ZvbHVtZSIsIDB4MDAwMDEwMDAgfSwKKyAgICAgICAgeyAia0xTSXRlbUluZm9FeHRlbnNpb25Jc0hpZGRlbiIsIDB4MDAxMDAwMDAgfQorICAgIH07CisgICAgaW50IGksIGNvdW50ID0gc2l6ZW9mKG5hbWVzKS9zaXplb2YobmFtZXNbMF0pOworCisgICAgZm9yKGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBpZiAoZmxhZ3MgJiBuYW1lc1tpXS5iaXRzKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luOmZsYWdzIiwgIlx0JXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgIG5hbWVzW2ldLm5hbWUpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGludAorX2FkZF9hcHBsaWNhdGlvbnNfaW5fZGlyKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGNvbnN0IGNoYXIqIHBhdGgpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgICpmaWxlczsKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICAgKml0OworICAgIGNvbnN0IGNoYXIgICAgICAgICAqZmlsZTsKKyAgICBuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIHN0cnVjdCBzdGF0CSAgICAgICAgc3RhdF9idWY7CisgICAgc2l6ZV90ICAgICAgICAgICAgICBkYXRlX2xlbjsKKyAgICB1X2NoYXIgICAgICAgICAgICAgKmRhdGVfYnVmOworICAgIGludCAgICAgICAgICAgICAgICAgcmMgPSAwOworCisgICAgQ0ZTdHJpbmdSZWYgICAgICAgICBjdXJyZW50UGF0aCA9IE5VTEw7CisgICAgQ0ZVUkxSZWYgICAgICAgICAgICBjdXJyZW50VVJMID0gTlVMTDsKKyAgICBMU0l0ZW1JbmZvUmVjb3JkICAgIGl0ZW1JbmZvUmVjb3JkOworICAgIENGU3RyaW5nUmVmICAgICAgICAgcHJvZE5hbWUgPSBOVUxMOworICAgIENGU3RyaW5nUmVmICAgICAgICAgdmVyc2lvbiA9IE5VTEw7CisgICAgCisgICAgREVCVUdNU0dUTCgoInN3aW5zdDphcmNoOmRhcndpbiIsICIgYWRkaW5nIGZpbGVzIGZyb20gJXNcbiIsIHBhdGgpKTsKKyAgICBmaWxlcyA9IG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKE5VTEwsIHBhdGgsIDApOworICAgIGlmIChOVUxMID09IGZpbGVzKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJzd2luc3Q6IGNvdWxkIG5vdCByZWFkIGRpcmVjdG9yeSAlc1xuIiwgcGF0aCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihmaWxlcyk7CisgICAgaWYgKE5VTEwgPT0gaXQpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBnZXQgaXRlcmF0b3JcbiIpOworICAgICAgICBuZXRzbm1wX2RpcmVjdG9yeV9jb250YWluZXJfZnJlZShmaWxlcyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChmaWxlID0gSVRFUkFUT1JfRklSU1QoaXQpOworICAgICAgICAgZmlsZTsKKyAgICAgICAgIGZpbGUgPSBJVEVSQVRPUl9ORVhUKGl0KSwKKyAgICAgICAgICAgICBDRlJlbGVhc2UoY3VycmVudFBhdGgpLAorICAgICAgICAgICAgIENGUmVsZWFzZShjdXJyZW50VVJMKSkgeworCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgcmMyID0gMDsKKyAgICAgICAgCisgICAgICAgIGN1cnJlbnRQYXRoID0KKyAgICAgICAgICAgIENGU3RyaW5nQ3JlYXRlV2l0aENTdHJpbmdOb0NvcHkoa0NGQWxsb2NhdG9yRGVmYXVsdCwgZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga0NGU3RyaW5nRW5jb2RpbmdVVEY4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrQ0ZBbGxvY2F0b3JOdWxsKTsKKyAgICAgICAgY3VycmVudFVSTCA9CisgICAgICAgICAgICBDRlVSTENyZWF0ZVdpdGhGaWxlU3lzdGVtUGF0aChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCBjdXJyZW50UGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtDRlVSTFBPU0lYUGF0aFN0eWxlLCB0cnVlKTsgCisgICAgICAgIExTQ29weUl0ZW1JbmZvRm9yVVJMKGN1cnJlbnRVUkwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtMU1JlcXVlc3RCYXNpY0ZsYWdzT25seXxrTFNSZXF1ZXN0QXBwVHlwZUZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaXRlbUluZm9SZWNvcmQpOyAKKyAgICAgICAgaWYoKDAgPT0gaXRlbUluZm9SZWNvcmQuZmxhZ3MpIHx8CisgICAgICAgICAgIChrTFNJdGVtSW5mb0lzUGxhaW5GaWxlID09IGl0ZW1JbmZvUmVjb3JkLmZsYWdzKSB8fAorICAgICAgICAgICAoaXRlbUluZm9SZWNvcmQuZmxhZ3MgJiBrTFNJdGVtSW5mb0lzSW52aXNpYmxlKSB8fAorICAgICAgICAgICAoaXRlbUluZm9SZWNvcmQuZmxhZ3MgJiBrTFNJdGVtSW5mb0lzQWxpYXNGaWxlKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgLyoqIHJlY3Vyc2Ugb24gbm9uLWFwcGxpY2F0aW9uIGNvbnRhaW5lcnMgKGkuZS4gZGlyZWN0b3J5KSAqLworICAgICAgICBpZiAoKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0NvbnRhaW5lcikgJiYKKyAgICAgICAgICAgICghKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0FwcGxpY2F0aW9uKSkpIHsKKyAgICAgICAgICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKGZpbGVzLCBmaWxlLCAwKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgIH0KKworICAgICAgICAvKiogc2tpcCBhbnkgb3RoZXIgbm9uLWFwcGxpY2F0aW9uIGZpbGVzICovCisgICAgICAgIGlmICghKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0FwcGxpY2F0aW9uKSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgfQorCisgICAgICAgIGlmICgoaXRlbUluZm9SZWNvcmQuZmxhZ3MgJiBrTFNJdGVtSW5mb0lzUGFja2FnZSkgfHwgICAgICAgICAgIAorICAgICAgICAgICAgKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0NvbnRhaW5lcikpIHsKKyAgICAgICAgICAgIHJjMiA9IF9jaGVja19idW5kbGVkX2FwcChjdXJyZW50VVJMLCAmcHJvZE5hbWUsICZ2ZXJzaW9uLCBmaWxlKTsKKyAgICAgICAgfSAKKyAgICAgICAgZWxzZSBpZiAoKGl0ZW1JbmZvUmVjb3JkLmZsYWdzICYga0xTSXRlbUluZm9Jc0NsYXNzaWNBcHApIHx8CisgICAgICAgICAgICAgICAgIChpdGVtSW5mb1JlY29yZC5mbGFncyAmIGtMU0l0ZW1JbmZvSXNQbGFpbkZpbGUpKSB7CisgICAgICAgICAgICByYzIgPSBfY2hlY2tfY2xhc3NpY19hcHAoY3VycmVudFVSTCwgJnByb2ROYW1lLCAmdmVyc2lvbiwgZmlsZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJzd2luc3Qgc2hvdWxkbid0IGdldCBoZXJlOiAlc1xuIiwgZmlsZSk7CisgICAgICAgICAgICBfZHVtcF9mbGFncyhpdGVtSW5mb1JlY29yZC5mbGFncyk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMyKSB7IC8qIG5vdCBhbiBhcHAuIGlmIGRpcmVjdG9yeSwgcmVjdXJzZTsgZWxzZSBjb250aW51ZSAqLworICAgICAgICAgICAgX2R1bXBfZmxhZ3MoaXRlbUluZm9SZWNvcmQuZmxhZ3MpOworICAgICAgICAgICAgaWYgKDEgPT0gcmMyKQorICAgICAgICAgICAgICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKGZpbGVzLCBmaWxlLCAwKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKgorICAgICAgICAgKiBhbGxvY2F0ZSBlbnRyeQorICAgICAgICAgKi8KKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3aW5zdF9lbnRyeV9jcmVhdGUoKytfaW5kZXgpOworICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIHN3aW5zdCBlbnRyeVxuIik7CisgICAgICAgICAgICByYyA9IC0xOworICAgICAgICAgICAgU05NUF9DRlJlbGVhc2UocHJvZE5hbWUpOworICAgICAgICAgICAgU05NUF9DRlJlbGVhc2UodmVyc2lvbik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0KKyAgICAgICAgICAgIHNucHJpbnRmKGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICIlcyAlcyIsIENGU3RyaW5nR2V0Q1N0cmluZ1B0cihwcm9kTmFtZSwwKSwKKyAgICAgICAgICAgICAgICAgICAgIENGU3RyaW5nR2V0Q1N0cmluZ1B0cih2ZXJzaW9uLDApKTsKKworICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwgIlx0JXMgJXNcbiIsIGZpbGUsIGVudHJ5LT5zd05hbWUpKTsKKworICAgICAgICAvKiogZ2V0IHRoZSBsYXN0IG1vZCBkYXRlICovCisgICAgICAgIGlmKHN0YXQoZmlsZSwgJnN0YXRfYnVmKSAhPSAtMSkgeworICAgICAgICAgICAgZGF0ZV9idWYgPSBkYXRlX25fdGltZSgmc3RhdF9idWYuc3RfbXRpbWUsICZkYXRlX2xlbik7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IGRhdGVfbGVuOworICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5zd0RhdGUsIGRhdGVfYnVmLCBlbnRyeS0+c3dEYXRlX2xlbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgIGVudHJ5ID0gTlVMTDsKKyAgICAgICAgU05NUF9DRlJlbGVhc2UocHJvZE5hbWUpOworICAgICAgICBTTk1QX0NGUmVsZWFzZSh2ZXJzaW9uKTsKKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7CisgICAgbmV0c25tcF9kaXJlY3RvcnlfY29udGFpbmVyX2ZyZWUoZmlsZXMpOworCisgICAgcmV0dXJuIHJjOworfQorCitpbnQKK19jaGVja19idW5kbGVkX2FwcChDRlVSTFJlZiBjdXJyZW50VVJMLCBDRlN0cmluZ1JlZiAqcHJvZE5hbWUsCisgICAgICAgICAgICAgICAgICAgQ0ZTdHJpbmdSZWYgKnZlcnNpb24sIGNvbnN0IGNoYXIqIGZpbGUpCit7CisgICAgQ0ZCdW5kbGVSZWYgICAgICAgICB0aGVCdW5kbGUgPSBOVUxMOworICAgIENGRGljdGlvbmFyeVJlZiAgICAgaW5mb0RpY3QgPSBOVUxMOworICAgICAgICAgICAgCisgICAgaWYgKChOVUxMID09IHByb2ROYW1lKSB8fCAoTlVMTCA9PSB2ZXJzaW9uKSkKKyAgICAgICByZXR1cm4gLTE7CisKKyAgICB0aGVCdW5kbGUgPSBDRkJ1bmRsZUNyZWF0ZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwgY3VycmVudFVSTCk7CisgICAgaWYodGhlQnVuZGxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsgLyogbm90IGEgYnVuZGxlICovCisKKyAgICBpbmZvRGljdCA9IENGQnVuZGxlR2V0SW5mb0RpY3Rpb25hcnkodGhlQnVuZGxlKTsKKyAgICBpZigwID09IENGRGljdGlvbmFyeUdldENvdW50KGluZm9EaWN0KSkgeworICAgICAgICBTTk1QX0NGUmVsZWFzZSh0aGVCdW5kbGUpOworICAgICAgICByZXR1cm4gMTsgLyogZGlyZWN0b3J5ICovCisgICAgfQorCisgICAgKnByb2ROYW1lID0gKENGU3RyaW5nUmVmKQorICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoaW5mb0RpY3QsIENGU1RSKCJDRkJ1bmRsZU5hbWUiKSk7CisgICAgaWYgKE5VTEwgPT0gKnByb2ROYW1lKSB7CisgICAgICAgICpwcm9kTmFtZSA9IChDRlN0cmluZ1JlZikKKyAgICAgICAgICAgIENGRGljdGlvbmFyeUdldFZhbHVlIChpbmZvRGljdCwgQ0ZTVFIoIkNGQnVuZGxlRGlzcGxheU5hbWUiKSk7CisgICAgICAgIGlmIChOVUxMID09ICpwcm9kTmFtZSkgeworICAgICAgICAgICAgKnByb2ROYW1lID0gKENGU3RyaW5nUmVmKSBDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoaW5mb0RpY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENGU1RSKCJDRkJ1bmRsZUV4ZWN1dGFibGUiKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYoTlVMTCA9PSAqcHJvZE5hbWUpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3aW5zdDphcmNoOmRhcndpbiIsICJcdG1pc3NpbmcgbmFtZTogJXNcbiIsZmlsZSkpOworICAgICAgICAvKkNGU2hvdyhpbmZvRGljdCk7Ki8KKyAgICAgICAgU05NUF9DRlJlbGVhc2UodGhlQnVuZGxlKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgICp2ZXJzaW9uID0gKENGU3RyaW5nUmVmKQorICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZSAoaW5mb0RpY3QsIENGU1RSKCJDRkJ1bmRsZVNob3J0VmVyc2lvblN0cmluZyIpKTsKKyAgICBpZihOVUxMID09ICp2ZXJzaW9uKSB7CisgICAgICAgICp2ZXJzaW9uID0gKENGU3RyaW5nUmVmKQorICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKGluZm9EaWN0LCBDRlNUUigiQ0ZCdW5kbGVWZXJzaW9uIikpOworICAgICAgICBpZiAoKnZlcnNpb24gPT0gTlVMTCkgCisgICAgICAgICAgICAqdmVyc2lvbiA9IChDRlN0cmluZ1JlZikgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUgKGluZm9EaWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDRlNUUigiQ0ZCdW5kbGVHZXRJbmZvU3RyaW5nIikpOworICAgIH0KKyAgICBpZihOVUxMID09ICp2ZXJzaW9uKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiXHRtaXNzaW5nIHZlcnNpb246ICVzXG4iLGZpbGUpKTsKKyAgICAgICAgLypDRlNob3coaW5mb0RpY3QpOyovCisgICAgICAgIFNOTVBfQ0ZSZWxlYXNlKHRoZUJ1bmRsZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgaWYodGhlQnVuZGxlICE9IE5VTEwpIHsKKyAgICAgICAgQ0ZSZXRhaW4oKnByb2ROYW1lKTsKKyAgICAgICAgQ0ZSZXRhaW4oKnZlcnNpb24pOworICAgICAgICBTTk1QX0NGUmVsZWFzZSh0aGVCdW5kbGUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAorX2NoZWNrX2NsYXNzaWNfYXBwKENGVVJMUmVmIGN1cnJlbnRVUkwsIENGU3RyaW5nUmVmICpwcm9kTmFtZSwKKyAgICAgICAgICAgICAgICAgICBDRlN0cmluZ1JlZiAqdmVyc2lvbiwgY29uc3QgY2hhciogZmlsZSkKK3sKKyAgICAvKgorICAgICAqIGdldCBpbmZvIGZvciBjbGFzc2ljIG9yIHNpbmdsZS1maWxlIGFwcHMKKyAgICAgKi8KKyAgICBGU1JlZiB0aGVGU1JlZjsKKyAgICBpbnQgdGhlUmVzRmlsZTsKKworICAgIGlmICgoTlVMTCA9PSBwcm9kTmFtZSkgfHwgKE5VTEwgPT0gdmVyc2lvbikpCisgICAgICAgcmV0dXJuIC0xOworCisgICAgKnByb2ROYW1lID0gQ0ZVUkxDb3B5TGFzdFBhdGhDb21wb25lbnQoY3VycmVudFVSTCk7CisgICAgaWYgKCEgQ0ZVUkxHZXRGU1JlZihjdXJyZW50VVJMLCAmdGhlRlNSZWYpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiR2V0RlNSZWYgZmFpbGVkOiAlc1xuIiwgZmlsZSkpOworICAgICAgICBTTk1QX0NGUmVsZWFzZSgqcHJvZE5hbWUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRoZVJlc0ZpbGUgPSBGU09wZW5SZXNGaWxlKCZ0aGVGU1JlZiwgZnNSZFBlcm0pOworICAgIGlmIChSZXNFcnJvcigpICE9IG5vRXJyKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6YXJjaDpkYXJ3aW4iLCAiRlNPcGVuUmVzRmlsZSBmYWlsZWQ6ICVzXG4iLCBmaWxlKSk7CisgICAgICAgIFNOTVBfQ0ZSZWxlYXNlKCpwcm9kTmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgVmVyc1JlY0huZGwgdmVyc0hhbmRsZSA9IChWZXJzUmVjSG5kbClHZXQxSW5kUmVzb3VyY2UoJ3ZlcnMnLCAxKTsKKyAgICBpZiAodmVyc0hhbmRsZSAhPSBOVUxMKSB7CisgICAgICAgICp2ZXJzaW9uID0gQ0ZTdHJpbmdDcmVhdGVXaXRoUGFzY2FsU3RyaW5nKGtDRkFsbG9jYXRvckRlZmF1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICgqKnZlcnNIYW5kbGUpLnNob3J0VmVyc2lvbiwga0NGU3RyaW5nRW5jb2RpbmdNYWNSb21hbik7CisgICAgICAgIGlmICgqdmVyc2lvbiA9PSBOVUxMKSB7CisgICAgICAgICAgICBTdHJpbmdQdHIgbG9uZ1ZlcnNpb25QdHIgPSAoKip2ZXJzSGFuZGxlKS5zaG9ydFZlcnNpb247CisgICAgICAgICAgICBsb25nVmVyc2lvblB0ciA9IChTdHJpbmdQdHIpKCgoUHRyKSBsb25nVmVyc2lvblB0cikgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSArICgodW5zaWduZWQgY2hhcikgKmxvbmdWZXJzaW9uUHRyKSk7CisgICAgICAgICAgICAqdmVyc2lvbiA9IENGU3RyaW5nQ3JlYXRlV2l0aFBhc2NhbFN0cmluZyhrQ0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nVmVyc2lvblB0ciwgIGtDRlN0cmluZ0VuY29kaW5nTWFjUm9tYW4pOworICAgICAgICB9CisgICAgICAgIFJlbGVhc2VSZXNvdXJjZSgoSGFuZGxlKXZlcnNIYW5kbGUpOworICAgIH0KKyAgICBDbG9zZVJlc0ZpbGUodGhlUmVzRmlsZSk7CisgICAgaWYoKnZlcnNpb24gPT0gTlVMTCkgeworICAgICAgICBERUJVR01TR1RMKCgic3dpbnN0OmFyY2g6ZGFyd2luIiwKKyAgICAgICAgICAgICAgICAgICAgIlx0bWlzc2luZyBjbGFzc2ljL2ZpbGUgdmVyc2lvbjogJXNcbiIsIGZpbGUpKTsKKyAgICAgICAgU05NUF9DRlJlbGVhc2UoKnByb2ROYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfbnVsbC5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfbnVsbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4YWRjZDcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3aW5zdF9udWxsLmMKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIHN3aW5zdF9udWxsLmM6CisgKiAgICAgaHJTV0luc3RhbGxlZFRhYmxlIGRhdGEgYWNjZXNzOgorICogICAgIGR1bW15IGludGVyZmFjZSBmb3Igbm9uLXN1cHBvcnRlZCBzeXN0ZW1zCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfaW5pdCh2b2lkKQoreworICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KKyAgICByZXR1cm47Cit9CisKK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfc2h1dGRvd24odm9pZCkKK3sKKyAgICAvKiBOb3RoaW5nIHRvIGRvICovCisgICAgcmV0dXJuOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworaW50CituZXRzbm1wX3N3aW5zdF9hcmNoX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKQoreworICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3BrZ2luZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTYxN2Y2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcGtnaW5mby5jCkBAIC0wLDAgKzEsMTQzIEBACisvKgorICogc3dpbnN0X3BrZ2luZm8uYzoKKyAqICAgICBoclNXSW5zdGFsbGVkVGFibGUgZGF0YSBhY2Nlc3M6CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRElSRU5UX0gKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9QS0dMT0NTX0gKKyNpbmNsdWRlIDxwa2dsb2NzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1BLR0lORk9fSAorI2luY2x1ZGUgPHBrZ2luZm8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg+CisKKyAgIC8qCisgICAgKiBMb2NhdGlvbiBvZiBwYWNrYWdlIGRpcmVjdG9yeS4KKyAgICAqIFVzZWQgZm9yOgorICAgICogICAgLSByZXBvcnRpbmcgaHJTV0luc3RhbGxlZExhc3QqIG9iamVjdHMKKyAgICAqICAgIC0gZGV0ZWN0aW5nIHdoZW4gdGhlIGNhY2hlZCBjb250ZW50cyBhcmUgb3V0IG9mIGRhdGUuCisgICAgKi8KK2NoYXIgcGtnX2RpcmVjdG9yeVtTTk1QX01BWFBBVEhdOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9zd2luc3RfYXJjaF9pbml0KHZvaWQpCit7CisjaWYgZGVmaW5lZChQS0dMT0MpCisgICAgc25wcmludGYoIHBrZ19kaXJlY3RvcnksIFNOTVBfTUFYUEFUSCwgIiVzIiwgUEtHTE9DICk7CisjZWxpZiBkZWZpbmVkKGhwdXg5KQorICAgIHNucHJpbnRmKCBwa2dfZGlyZWN0b3J5LCBTTk1QX01BWFBBVEgsICIvc3lzdGVtIiApOworI2VsaWYgZGVmaW5lZChocHV4MTApIHx8ICBkZWZpbmVkKGhwdXgxMSkgCisgICAgc25wcmludGYoIHBrZ19kaXJlY3RvcnksIFNOTVBfTUFYUEFUSCwgIi92YXIvYWRtL3N3L3Byb2R1Y3RzIiApOworI2VsaWYgZGVmaW5lZChmcmVlYnNkMikgfHwgZGVmaW5lZChvcGVuYnNkKQorICAgIHNucHJpbnRmKCBwa2dfZGlyZWN0b3J5LCBTTk1QX01BWFBBVEgsICIvdmFyL2RiL3BrZyIgKTsKKyNlbGlmIGRlZmluZWQobGludXgpCisgICAgc25wcmludGYoIHBrZ19kaXJlY3RvcnksIFNOTVBfTUFYUEFUSCwgIi92YXIvY2FjaGUvaHJtaWIiICk7CisjZWxzZQorICAgIHBrZ19kaXJlY3RvcnlbMF0gPSAnXDAnOworICAgIHNubXBfbG9nKCBMT0dfRVJSLCAiU1dJbnN0OiBObyBwYWNrYWdlIGRpcmVjdG9yeVxuIiApOworI2VuZGlmCisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmluaXQ6YXJjaCIsIiBwYWNrYWdlIGRpcmVjdG9yeSA9ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwa2dfZGlyZWN0b3J5KSk7CisgICAgcmV0dXJuOworfQorCit2b2lkCituZXRzbm1wX3N3aW5zdF9hcmNoX3NodXRkb3duKHZvaWQpCit7CisgICAgcGtnX2RpcmVjdG9yeVswXSA9ICdcMCc7CisgICAgcmV0dXJuOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworaW50CituZXRzbm1wX3N3aW5zdF9hcmNoX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKQoreworICAgIERJUiAgICAgICAgICAgICAgICAgICpkOworICAgIHN0cnVjdCBkaXJlbnQgICAgICAgICpkcDsKKyAgICBzdHJ1Y3Qgc3RhdCAgICAgICAgICAgc3RhdF9idWY7CisjaWZkZWYgSEFWRV9QS0dJTkZPCisgICAgY2hhciAgICAgICAgICAgICAgICAgKnYsICpjOworI2VuZGlmCisgICAgY2hhciAgICAgICAgICAgICAgICAgIGJ1ZlsgQlVGU0laIF0sICpjcDsKKyAgICB0aW1lX3QgICAgICAgICAgICAgICAgaW5zdGFsbF90aW1lOworICAgIHNpemVfdCAgICAgICAgICAgICAgICBkYXRlX2xlbjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgcmMsIGkgPSAxOworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICplbnRyeTsKKworICAgIGlmICggIXBrZ19kaXJlY3RvcnlbMF0gKSB7CisgICAgICAgIHJldHVybiAxOyAgICAvKiBDYW4ndCByZXBvcnQgaW5zdGFsbGVkIHBhY2thZ2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlcmUgaXNuJ3QgYSBsaXN0IG9mIHRoZW0hICovCisgICAgfQorICAgIGQgPSBvcGVuZGlyKCBwa2dfZGlyZWN0b3J5ICk7CisgICAgaWYgKCFkKQorCXJldHVybiAxOworICAgIHdoaWxlICgoZHAgPSByZWFkZGlyKGQpKSAhPSBOVUxMKSB7CisgICAgICAgIGlmICggJy4nID09IGRwLT5kX25hbWVbMF0gKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKCBpKysgKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyNpZmRlZiBIQVZFX1BLR0lORk8KKyAgICAgICAgdiA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiVkVSU0lPTiIgKTsKKyAgICAgICAgYyA9IHBrZ3BhcmFtKCBkcC0+ZF9uYW1lLCAiQ0FURUdPUlkiICk7CisKKyAgICAgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMtJXMiLCBkcC0+ZF9uYW1lLCB2ICk7CisgICAgICAgIGVudHJ5LT5zd1R5cGUgPSAoTlVMTCAhPSBzdHJzdHIoIGMsICJzeXN0ZW0iKSkKKyAgICAgICAgICAgICAgICAgICAgICAgID8gMiAgICAgIC8qIG9wZXJhdGluZ1N5c3RlbSAqLworICAgICAgICAgICAgICAgICAgICAgICAgOiA0OyAgICAgLyogIGFwcGxpY2F0aW9uICAgICovCisKKyAgICAgICAgLyogRG8gd2UgbmVlZCB0byBmcmVlICd2JyAmICdjJyA/Pz8gKi8KKyNlbHNlCisgICAgICAgIGVudHJ5LT5zd05hbWVfbGVuID0gc25wcmludGYoIGVudHJ5LT5zd05hbWUsIHNpemVvZihlbnRyeS0+c3dOYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgZHAtPmRfbmFtZSApOworCisgICAgICAgIC8qIG5vIGluZm9ybWF0aW9uIGFib3V0IE8vUyB2cyBhcHBsaWNhdGlvbiBwYWNrYWdlcyA/Pz8gKi8KKyNlbmRpZgorCisgICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIiVzLyVzIiwgcGtnX2RpcmVjdG9yeSwgZHAtPmRfbmFtZSApOworICAgICAgICBzdGF0KCBidWYsICZzdGF0X2J1ZiApOworICAgICAgICBpbnN0YWxsX3RpbWUgPSBzdGF0X2J1Zi5zdF9tdGltZTsKKyAgICAgICAgY3AgPSBkYXRlX25fdGltZSggJmluc3RhbGxfdGltZSwgJmRhdGVfbGVuICk7CisgICAgICAgIG1lbWNweSggZW50cnktPnN3RGF0ZSwgY3AsIGRhdGVfbGVuICk7CisgICAgICAgIGVudHJ5LT5zd0RhdGVfbGVuID0gZGF0ZV9sZW47CisgICAgfQorICAgIGNsb3NlZGlyKCBkICk7CisKKyAgICBERUJVR01TR1RMKCgic3dpbnN0OmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd2luc3RfcnBtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUzYWFlYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0X3JwbS5jCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogc3dpbnN0X3JwbS5jOgorICogICAgIGhyU1dJbnN0YWxsZWRUYWJsZSBkYXRhIGFjY2VzczoKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfUlBNX1JQTUxJQl9ICisjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9SUE1fUlBNTElCX0gKKyNpbmNsdWRlIDxycG0vaGVhZGVyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1JQTUdFVFBBVEgJCS8qIEhBVkVfUlBNX1JQTU1BQ1JPX0ggKi8KKyNpbmNsdWRlIDxycG0vcnBtbWFjcm8uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfUlBNX1JQTVRTX0gKKyNpbmNsdWRlIDxycG0vcnBtdHMuaD4KKyNpbmNsdWRlIDxycG0vcnBtZGIuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dpbnN0Lmg+CisKKyAgIC8qCisgICAgKiBMb2NhdGlvbiBvZiBSUE0gcGFja2FnZSBkaXJlY3RvcnkuCisgICAgKiBVc2VkIGZvcjoKKyAgICAqICAgIC0gcmVwb3J0aW5nIGhyU1dJbnN0YWxsZWRMYXN0KiBvYmplY3RzCisgICAgKiAgICAtIGRldGVjdGluZyB3aGVuIHRoZSBjYWNoZWQgY29udGVudHMgYXJlIG91dCBvZiBkYXRlLgorICAgICovCitjaGFyIHBrZ19kaXJlY3RvcnlbU05NUF9NQVhQQVRIXTsKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfc3dpbnN0X2FyY2hfaW5pdCh2b2lkKQoreworICAgIGNoYXIgICAgICAgICpycG1kYnBhdGggPSBOVUxMOworICAgIGNvbnN0IGNoYXIgICpkYnBhdGg7CisgICAgc3RydWN0IHN0YXQgIHN0YXRfYnVmOworCisjaWZkZWYgSEFWRV9SUE1HRVRQQVRICisgICAgcnBtUmVhZENvbmZpZ0ZpbGVzKCBOVUxMLCBOVUxMICk7CisgICAgcnBtZGJwYXRoID0gcnBtR2V0UGF0aCggIiV7X2RicGF0aH0iLCBOVUxMICk7CisgICAgZGJwYXRoID0gcnBtZGJwYXRoOworI2Vsc2UKKyAgICBkYnBhdGggPSAiL3Zhci9saWIvcnBtIjsgICAvKiBNb3N0IGxpa2VseSAqLworI2VuZGlmCisKKyAgICBzbnByaW50ZiggcGtnX2RpcmVjdG9yeSwgU05NUF9NQVhQQVRILCAiJXMvUGFja2FnZXMiLCBkYnBhdGggKTsKKyAgICBTTk1QX0ZSRUUocnBtZGJwYXRoKTsKKyAgICBkYnBhdGggPSBOVUxMOworICAgIGlmICgtMSA9PSBzdGF0KCBwa2dfZGlyZWN0b3J5LCAmc3RhdF9idWYgKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ2FuJ3QgZmluZCBkaXJlY3Rvcnkgb2YgUlBNIHBhY2thZ2VzIik7CisgICAgICAgIHBrZ19kaXJlY3RvcnlbMF0gPSAnXDAnOworICAgIH0KK30KKwordm9pZAorbmV0c25tcF9zd2luc3RfYXJjaF9zaHV0ZG93bih2b2lkKQoreworICAgICAvKiBOb3RoaW5nIHRvIGRvICovCisgICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9zd2luc3RfYXJjaF9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBycG10cyAgICAgICAgICAgICAgICAgdHM7CisKKyAgICBycG1kYk1hdGNoSXRlcmF0b3IgICAgbWk7CisgICAgSGVhZGVyICAgICAgICAgICAgICAgIGg7CisgICAgY2hhciAgICAgICAgICAgICAgICAgKm4sICp2LCAqciwgKmc7CisgICAgaW50MzJfdCAgICAgICAgICAgICAgKnQ7CisgICAgdGltZV90ICAgICAgICAgICAgICAgIGluc3RhbGxfdGltZTsKKyAgICBzaXplX3QgICAgICAgICAgICAgICAgZGF0ZV9sZW47CisgICAgaW50ICAgICAgICAgICAgICAgICAgIGkgPSAxOworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICplbnRyeTsKKworICAgIHRzID0gcnBtdHNDcmVhdGUoKTsKKyAgICBycG10c1NldFZTRmxhZ3MoIHRzLCAoX1JQTVZTRl9OT1NJR05BVFVSRVN8X1JQTVZTRl9OT0RJR0VTVFMpKTsKKworICAgIG1pID0gcnBtdHNJbml0SXRlcmF0b3IoIHRzLCBSUE1EQklfUEFDS0FHRVMsIE5VTEwsIDApOworICAgIGlmIChtaSA9PSBOVUxMKQorCU5FVFNOTVBfTE9HT05DRSgoTE9HX0VSUiwgInJwbWRiT3BlbigpIGZhaWxlZFxuIikpOworCisgICAgd2hpbGUgKE5VTEwgIT0gKGggPSBycG1kYk5leHRJdGVyYXRvciggbWkgKSkpCisgICAgeworICAgICAgICBjb25zdCB1X2NoYXIgKmR0OworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dpbnN0X2VudHJ5X2NyZWF0ZSggaSsrICk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworICAgICAgICBoID0gaGVhZGVyTGluayggaCApOworICAgICAgICBoZWFkZXJHZXRFbnRyeSggaCwgUlBNVEFHX05BTUUsICAgICAgICBOVUxMLCAodm9pZCoqKSZuLCBOVUxMKTsKKyAgICAgICAgaGVhZGVyR2V0RW50cnkoIGgsIFJQTVRBR19WRVJTSU9OLCAgICAgTlVMTCwgKHZvaWQqKikmdiwgTlVMTCk7CisgICAgICAgIGhlYWRlckdldEVudHJ5KCBoLCBSUE1UQUdfUkVMRUFTRSwgICAgIE5VTEwsICh2b2lkKiopJnIsIE5VTEwpOworICAgICAgICBoZWFkZXJHZXRFbnRyeSggaCwgUlBNVEFHX0dST1VQLCAgICAgICBOVUxMLCAodm9pZCoqKSZnLCBOVUxMKTsKKyAgICAgICAgaGVhZGVyR2V0RW50cnkoIGgsIFJQTVRBR19JTlNUQUxMVElNRSwgTlVMTCwgKHZvaWQqKikmdCwgTlVMTCk7CisKKyAgICAgICAgZW50cnktPnN3TmFtZV9sZW4gPSBzbnByaW50ZiggZW50cnktPnN3TmFtZSwgc2l6ZW9mKGVudHJ5LT5zd05hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMtJXMtJXMiLCBuLCB2LCByKTsKKyAgICAgICAgZW50cnktPnN3VHlwZSA9IChOVUxMICE9IHN0cnN0ciggZywgIlN5c3RlbSBFbnZpcm9ubWVudCIpKQorICAgICAgICAgICAgICAgICAgICAgICAgPyAyICAgICAgLyogb3BlcmF0aW5nU3lzdGVtICovCisgICAgICAgICAgICAgICAgICAgICAgICA6IDQ7ICAgICAvKiAgYXBwbGljYXRpb24gICAgKi8KKworICAgICAgICBpbnN0YWxsX3RpbWUgPSAqdDsKKyAgICAgICAgZHQgPSBkYXRlX25fdGltZSggJmluc3RhbGxfdGltZSwgJmRhdGVfbGVuICk7CisgICAgICAgIGlmIChkYXRlX2xlbiAhPSA4ICYmIGRhdGVfbGVuICE9IDExKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQm9ndXMgbGVuZ3RoIGZyb20gZGF0ZV9uX3RpbWUgZm9yICVzIiwgZW50cnktPnN3TmFtZSk7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBlbnRyeS0+c3dEYXRlX2xlbiA9IGRhdGVfbGVuOworICAgICAgICAgICAgbWVtY3B5KGVudHJ5LT5zd0RhdGUsIGR0LCBlbnRyeS0+c3dEYXRlX2xlbik7CisgICAgICAgIH0KKworICAgICAgICBoZWFkZXJGcmVlKCBoICk7CisgICAgfQorICAgIHJwbWRiRnJlZUl0ZXJhdG9yKCBtaSApOworICAgIHJwbXRzRnJlZSggdHMgKTsKKworICAgIERFQlVHTVNHVEwoKCJzd2luc3Q6bG9hZDphcmNoIiwgImxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIChpbnQpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0NjY5ZgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW4uYwpAQCAtMCwwICsxLDM0NyBAQAorLyoKKyAqICBTd3J1biBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQ6IHN3cnVuLmMgMTU3NjggMjAwNy0wMS0yMiAxNjoxODoyOVogcnN0b3J5ICQKKyAqLworLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBsb2NhbCBzdGF0aWMgdmFycworICovCitzdGF0aWMgaW50IF9zd3J1bl9pbml0ID0gMDsKKyAgICAgICBpbnQgX3N3cnVuX21heCAgPSAwOworc3RhdGljIG5ldHNubXBfY2FjaGUgICAgICpzd3J1bl9jYWNoZSAgICAgPSBOVUxMOworc3RhdGljIG5ldHNubXBfY29udGFpbmVyICpzd3J1bl9jb250YWluZXIgPSBOVUxMOworCituZXRzbm1wX2NvbnRhaW5lciAqIG5ldHNubXBfc3dydW5fY29udGFpbmVyKHZvaWQpOworbmV0c25tcF9jYWNoZSAgICAgKiBuZXRzbm1wX3N3cnVuX2NhY2hlICAgICh2b2lkKTsKKworLyoKKyAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCisgKi8KK3N0YXRpYyB2b2lkIF9zd3J1bl9lbnRyeV9yZWxlYXNlKG5ldHNubXBfc3dydW5fZW50cnkgKiBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdW51c2VkKTsKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBleHRlcm5hbCBwZXItYXJjaGl0ZWN0dXJlIGZ1bmN0aW9ucyBwcm90b3R5cGVzCisgKgorICogVGhlc2Ugc2hvdWxkbid0IGJlIGNhbGxlZCBieSB0aGUgZ2VuZXJhbCBwdWJsaWMsIHNvIHRoZXkgYXJlbid0IGluCisgKiB0aGUgaGVhZGVyIGZpbGUuCisgKi8KK2V4dGVybiB2b2lkIG5ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpOworZXh0ZXJuIGludCBuZXRzbm1wX2FyY2hfc3dydW5fY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworCisvKioKKyAqIGluaXRpYWxpemF0aW9uCisgKi8KK3ZvaWQKK2luaXRfc3dydW4odm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic3dydW46YWNjZXNzIiwgImluaXRcbiIpKTsKKworICAgIGlmICgxID09IF9zd3J1bl9pbml0KQorICAgICAgICByZXR1cm47CisKKyAgICBfc3dydW5faW5pdCA9IDE7CisKKyAgICAodm9pZCluZXRzbm1wX3N3cnVuX2NvbnRhaW5lcigpOworICAgIG5ldHNubXBfYXJjaF9zd3J1bl9pbml0KCk7CisgICAgKHZvaWQpIG5ldHNubXBfc3dydW5fY2FjaGUoKTsKK30KKwordm9pZAorc2h1dGRvd25fc3dydW4odm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic3dydW46YWNjZXNzIiwgInNodXRkb3duXG4iKSk7CisKK30KKworaW50Citzd3J1bl9jb3VudF9wcm9jZXNzZXMoIHZvaWQgKQoreworICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZChzd3J1bl9jYWNoZSk7CisgICAgcmV0dXJuICggc3dydW5fY29udGFpbmVyID8gQ09OVEFJTkVSX1NJWkUoc3dydW5fY29udGFpbmVyKSA6IDAgKTsKK30KKworaW50Citzd3J1bl9tYXhfcHJvY2Vzc2VzKCB2b2lkICkKK3sKKyAgICByZXR1cm4gX3N3cnVuX21heDsKK30KKworaW50Citzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSggY2hhciAqbmFtZSApCit7CisgICAgbmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnk7CisgICAgbmV0c25tcF9pdGVyYXRvciAgKml0OworICAgIGludCBpID0gMDsKKworICAgIG5ldHNubXBfY2FjaGVfY2hlY2tfYW5kX3JlbG9hZChzd3J1bl9jYWNoZSk7CisgICAgaWYgKCAhc3dydW5fY29udGFpbmVyIHx8ICFuYW1lICkKKyAgICAgICAgcmV0dXJuIDA7ICAgIC8qIG9yIC0xICovCisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUiggc3dydW5fY29udGFpbmVyICk7CisgICAgd2hpbGUgKCBlbnRyeSA9IElURVJBVE9SX05FWFQoIGl0ICkpIHsKKyAgICAgICAgaWYgKDAgPT0gc3RyY21wKCBlbnRyeS0+aHJTV1J1bk5hbWUsIG5hbWUgKSkKKyAgICAgICAgICAgIGkrKzsKKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRSggaXQgKTsKKworICAgIHJldHVybiBpOworfQorCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogY2FjaGUgZnVuY3Rpb25zCisgKi8KKworc3RhdGljIGludAorX2NhY2hlX2xvYWQoIG5ldHNubXBfY2FjaGUgKmNhY2hlLCAgdm9pZCAqbWFnaWMgKQoreworICAgIG5ldHNubXBfc3dydW5fY29udGFpbmVyX2xvYWQoIHN3cnVuX2NvbnRhaW5lciwgMCApOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUoIG5ldHNubXBfY2FjaGUgKmNhY2hlLCAgdm9pZCAqbWFnaWMgKQoreworICAgIG5ldHNubXBfc3dydW5fY29udGFpbmVyX2ZyZWVfaXRlbXMoIHN3cnVuX2NvbnRhaW5lciApOworICAgIHJldHVybjsKK30KKworLyoqCisgKiBjcmVhdGUgc3dydW4gY2FjaGUKKyAqLworbmV0c25tcF9jYWNoZSAqCituZXRzbm1wX3N3cnVuX2NhY2hlKHZvaWQpCit7CisgICAgb2lkICAgIGhyU1dSdW5UYWJsZV9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgNCwgMiB9OworICAgIHNpemVfdCBoclNXUnVuVGFibGVfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaHJTV1J1blRhYmxlX29pZCk7CisKKyAgICBpZiAoICFzd3J1bl9jYWNoZSApIHsKKyAgICAgICAgc3dydW5fY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCAgX2NhY2hlX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuVGFibGVfb2lkLCBoclNXUnVuVGFibGVfb2lkX2xlbik7CisgICAgICAgIGlmIChzd3J1bl9jYWNoZSkKKyAgICAgICAgICAgIHN3cnVuX2NhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKyAgICB9CisgICAgcmV0dXJuIHN3cnVuX2NhY2hlOworfQorCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogY29udGFpbmVyIGZ1bmN0aW9ucworICovCisvKioKKyAqIGNyZWF0ZSBzd3J1biBjb250YWluZXIKKyAqLworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9zd3J1bl9jb250YWluZXIodm9pZCkKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmNvbnRhaW5lciIsICJpbml0XG4iKSk7CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSB0aGUgY29udGFpbmVyLgorICAgICAqLworICBpZiAoIXN3cnVuX2NvbnRhaW5lcikgeworICAgIHN3cnVuX2NvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoInN3cnVuOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IHN3cnVuX2NvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd3J1bl9jb250YWluZXItPmNvbnRhaW5lcl9uYW1lID0gc3RyZHVwKCJzd3J1biBjb250YWluZXIiKTsKKyAgfQorCisgICAgcmV0dXJuIHN3cnVuX2NvbnRhaW5lcjsKK30KKworLyoqCisgKiBsb2FkIHN3cnVuIGluZm9ybWF0aW9uIGluIHNwZWNpZmllZCBjb250YWluZXIKKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGVtcHR5IGNvbnRhaW5lciB0byBiZSBmaWxsZWQuCisgKiAgICAgICAgICAgICAgICAgIHBhc3MgTlVMTCB0byBoYXZlIHRoZSBmdW5jdGlvbiBjcmVhdGUgb25lLgorICogQHBhcmFtIGxvYWRfZmxhZ3MgZmxhZ3MgdG8gbW9kaWZ5IGJlaGF2aW91ci4gRXhhbXBsZXM6CisgKiAgICAgICAgICAgICAgICAgICBORVRTTk1QX1NXUlVOX0FMTF9PUl9OT05FCisgKgorICogQHJldHZhbCBOVUxMICBlcnJvcgorICogQHJldHZhbCAhTlVMTCBwb2ludGVyIHRvIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lcioKK25ldHNubXBfc3dydW5fY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIHVzZXJfY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIgPSB1c2VyX2NvbnRhaW5lcjsKKyAgICBpbnQgcmM7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46Y29udGFpbmVyOmxvYWQiLCAibG9hZFxuIikpOworICAgIG5ldHNubXBfYXNzZXJ0KDEgPT0gX3N3cnVuX2luaXQpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKQorICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcigpOworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3Igc3dydW5cbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByYyA9ICBuZXRzbm1wX2FyY2hfc3dydW5fY29udGFpbmVyX2xvYWQoY29udGFpbmVyLCBsb2FkX2ZsYWdzKTsKKyAgICBpZiAoMCAhPSByYykgeworICAgICAgICBpZiAoTlVMTCA9PSB1c2VyX2NvbnRhaW5lcikgeworICAgICAgICAgICAgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZShjb250YWluZXIsIE5FVFNOTVBfU1dSVU5fTk9GTEFHUyk7CisgICAgICAgICAgICBjb250YWluZXIgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX1NXUlVOX0FMTF9PUl9OT05FKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46Y29udGFpbmVyOmxvYWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiBkaXNjYXJkaW5nIHBhcnRpYWwgcmVzdWx0c1xuIikpOworICAgICAgICAgICAgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZV9pdGVtcyhjb250YWluZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKwordm9pZAorbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmcmVlX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpjb250YWluZXIiLCAiZnJlZVxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNvbnRhaW5lciBmb3IgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9TV1JVTl9ET05UX0ZSRUVfSVRFTVMpKQorICAgICAgICBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9mcmVlX2l0ZW1zKGNvbnRhaW5lcik7CisKKyAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOworfQorCit2b2lkCituZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9mcmVlX2l0ZW1zKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInN3cnVuOmNvbnRhaW5lciIsICJmcmVlX2l0ZW1zXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY29udGFpbmVyIGZvciBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9mcmVlX2l0ZW1zXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuCisgICAgICovCisgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfc3dydW5fZW50cnlfcmVsZWFzZSwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cit9CisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogc3dydW5fZW50cnkgZnVuY3Rpb25zCisgKi8KKy8qKgorICovCituZXRzbm1wX3N3cnVuX2VudHJ5ICoKK25ldHNubXBfc3dydW5fZW50cnlfZ2V0X2J5X2luZGV4KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIG9pZCBpbmRleCkKK3sKKyAgICBuZXRzbm1wX2luZGV4ICAgdG1wOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmVudHJ5IiwgImJ5X2luZGV4XG4iKSk7CisgICAgbmV0c25tcF9hc3NlcnQoMSA9PSBfc3dydW5faW5pdCk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGZvciBuZXRzbm1wX3N3cnVuX2VudHJ5X2dldF9ieV9pbmRleFxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHRtcC5sZW4gPSAxOworICAgIHRtcC5vaWRzID0gJmluZGV4OworCisgICAgcmV0dXJuIChuZXRzbm1wX3N3cnVuX2VudHJ5ICopIENPTlRBSU5FUl9GSU5EKGNvbnRhaW5lciwgJnRtcCk7Cit9CisKKy8qKgorICovCituZXRzbm1wX3N3cnVuX2VudHJ5ICoKK25ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKGludDMyX3QgaW5kZXgpCit7CisgICAgbmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnkgPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfc3dydW5fZW50cnkpOworCisgICAgaWYoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBlbnRyeS0+aHJTV1J1bkluZGV4ID0gaW5kZXg7CisgICAgZW50cnktPmhyU1dSdW5UeXBlID0gMTsgLyogdW5rbm93biAqLworICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gMjsgLyogcnVubmFibGUgKi8KKworICAgIGVudHJ5LT5vaWRfaW5kZXgubGVuID0gMTsKKyAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSAob2lkICopICYgZW50cnktPmhyU1dSdW5JbmRleDsKKworICAgIHJldHVybiBlbnRyeTsKK30KKworLyoqCisgKi8KK05FVFNOTVBfSU5MSU5FIHZvaWQKK25ldHNubXBfc3dydW5fZW50cnlfZnJlZShuZXRzbm1wX3N3cnVuX2VudHJ5ICogZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICogU05NUF9GUkVFIG5vdCBuZWVkZWQsIGZvciBhbnkgb2YgdGhlc2UsIAorICAgICAqIHNpbmNlIHRoZSB3aG9sZSBlbnRyeSBpcyBhYm91dCB0byBiZSBmcmVlZAorICAgICAqLworICAgIGZyZWUoZW50cnkpOworfQorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIFV0aWxpdHkgcm91dGluZXMKKyAqLworCisvKioKKyAqLworc3RhdGljIHZvaWQKK19zd3J1bl9lbnRyeV9yZWxlYXNlKG5ldHNubXBfc3dydW5fZW50cnkgKiBlbnRyeSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5X2ZyZWUoZW50cnkpOworfQorCisKKyNpZmRlZiBURVNUCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICAgIGNvbnN0IGNoYXIgKnRva2VucyA9IGdldGVudigiU05NUF9ERUJVRyIpOworCisgICAgbmV0c25tcF9jb250YWluZXJfaW5pdF9saXN0KCk7CisKKyAgICAvKiogc3dydW4sdmVyYm9zZTpzd3J1biw5OnN3cnVuLDg6c3dydW4sNTpzd3J1biAqLworICAgIGlmICh0b2tlbnMpCisgICAgICAgIGRlYnVnX3JlZ2lzdGVyX3Rva2Vucyh0b2tlbnMpOworICAgIGVsc2UKKyAgICAgICAgZGVidWdfcmVnaXN0ZXJfdG9rZW5zKCJzd3J1biIpOworICAgIHNubXBfc2V0X2RvX2RlYnVnZ2luZygxKTsKKworICAgIGluaXRfc3dydW4oKTsKKyAgICBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9sb2FkKE5VTEwsIDApOworICAgIHNodXRkb3duX3N3cnVuKCk7CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRmZjE1OTgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIHN3cnVuIGRhdGEgYWNjZXNzIGhlYWRlcgorICoKKyAqICRJZDogc3dydW4uaCAxNTM0NiAyMDA2LTA5LTI2IDIzOjM0OjUwWiByc3RvcnkgJAorICovCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaWZuZGVmIE5FVFNOTVBfQUNDRVNTX1NXUlVOX0NPTkZJR19ICisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NXUlVOX0NPTkZJR19ICisKKy8qCisgKiBhbGwgcGxhdGZvcm1zIHVzZSB0aGlzIGdlbmVyaWMgY29kZQorICovCitjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuKQorY29uZmlnX2V4Y2x1ZGUoaG9zdC9ocl9zd3J1bikKKworLyoKKyAqIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgYXJjaGl0ZWN0dXJlLXNwZWNpZmljIGludGVyZmFjZSBjb2RlCisgKi8KKyNpZiAgIGRlZmluZWQoIGRhcndpbiApCisgICAgY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4pCisjZWxpZiBkZWZpbmVkKCBIQVZFX1NZU19QU1RBVF9IICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3BzdGF0KQorI2VsaWYgZGVmaW5lZCggZHluaXggKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8pCisjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCisjIGlmIF9TTEFTSF9QUk9DX01FVEhPRF8KKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8pCisjIGVsc2UKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2t2bV9wcm9jKQorIyBlbmRpZgorI2VsaWYgZGVmaW5lZCggYWl4NCApIHx8IGRlZmluZWQoIGFpeDUgKSB8fCBkZWZpbmVkKCBhaXg2ICkKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2NpbmZvKQorI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKKyAgICBjb25maWdfcmVxdWlyZShob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvKQorI2VsaWYgZGVmaW5lZCggbGludXggKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cykKKyNlbGlmIGRlZmluZWQoIGN5Z3dpbiApCisgICAgY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4pCisjZWxzZQorICAgIGNvbmZpZ193YXJuaW5nKFRoaXMgcGxhdGZvcm0gZG9lcyBub3QgeWV0IHN1cHBvcnQgaHJTV1J1blRhYmxlIHJld3JpdGVzKQorICAgIGNvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbnVsbCkKKyNlbmRpZgorCituZXRzbm1wX2NhY2hlICAgICAqbmV0c25tcF9zd3J1bl9jYWNoZSh2b2lkKTsKK25ldHNubXBfY29udGFpbmVyICpuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcih2b2lkKTsKKworI2VuZGlmIC8qIE5FVFNOTVBfQUNDRVNTX1NXUlVOX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2N5Z3dpbi5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWUxNDc1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9jeWd3aW4uYwpAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIHN3cnVuX2N5Z3dpbi5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICBDeWd3aW4gaW50ZXJmYWNlIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPHN5cy9jeWd3aW4uaD4KKyNpbmNsdWRlIDx0bGhlbHAzMi5oPgorI2luY2x1ZGUgPHBzYXBpLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKy8qCisgKiBhIGxvdCBvZiB0aGlzIGlzICJzdG9sZW4iIGZyb20gY3lnd2luIHBzLmNjCisgKi8KKwordHlwZWRlZiAgICAgICAgIEJPT0woV0lOQVBJICogRU5VTVBST0NFU1NNT0RVTEVTKSAoSEFORExFIGhQcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE1PRFVMRSAqIGxwaE1vZHVsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIGNiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBEV09SRCBscGNiTmVlZGVkKTsKKwordHlwZWRlZiAgICAgICAgIERXT1JEKFdJTkFQSSAqIEdFVE1PRFVMRUZJTEVOQU1FKSAoSEFORExFIGhQcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSE1PRFVMRSBoTW9kdWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFBUU1RSIGxwc3RyRklsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEV09SRCBuU2l6ZSk7CisKK3R5cGVkZWYgICAgICAgICBEV09SRChXSU5BUEkgKiBHRVRQUk9DRVNTTUVNT1JZSU5GTykgKEhBTkRMRSBoUHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBQUk9DRVNTX01FTU9SWV9DT1VOVEVSUworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG1jLCBEV09SRCBuU2l6ZSk7CisKK3R5cGVkZWYgICAgICAgICBIQU5ETEUoV0lOQVBJICogQ1JFQVRFU05BUFNIT1QpIChEV09SRCBkd0ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERXT1JEIHRoMzJQcm9jZXNzSUQpOworCit0eXBlZGVmICAgICAgICAgQk9PTChXSU5BUEkgKiBQUk9DRVNTV0FMSykgKEhBTkRMRSBoU25hcHNob3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExQUFJPQ0VTU0VOVFJZMzIgbHBwZSk7CisKK0VOVU1QUk9DRVNTTU9EVUxFUyBteUVudW1Qcm9jZXNzTW9kdWxlczsKK0dFVE1PRFVMRUZJTEVOQU1FIG15R2V0TW9kdWxlRmlsZU5hbWVFeDsKK0NSRUFURVNOQVBTSE9UICBteUNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdDsKK1BST0NFU1NXQUxLICAgICBteVByb2Nlc3MzMkZpcnN0OworUFJPQ0VTU1dBTEsgICAgIG15UHJvY2VzczMyTmV4dDsKK0dFVFBST0NFU1NNRU1PUllJTkZPIG15R2V0UHJvY2Vzc01lbW9yeUluZm8gPSBOVUxMOworY3lnd2luX2dldGluZm9fdHlwZXMgcXVlcnkgPSBDV19HRVRQSU5GTzsKKworc3RhdGljIEJPT0wgV0lOQVBJCitkdW1teXByb2Nlc3Ntb2R1bGVzKEhBTkRMRSBoUHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgSE1PRFVMRSAqIGxwaE1vZHVsZSwgRFdPUkQgY2IsIExQRFdPUkQgbHBjYk5lZWRlZCkKK3sKKyAgICBscGhNb2R1bGVbMF0gPSAoSE1PRFVMRSkgKiBscGNiTmVlZGVkOworICAgICpscGNiTmVlZGVkID0gMTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIERXT1JEIFdJTkFQSQorR2V0TW9kdWxlRmlsZU5hbWVFeDk1KEhBTkRMRSBoUHJvY2VzcywKKyAgICAgICAgICAgICAgICAgICAgICBITU9EVUxFIGhNb2R1bGUsIExQVFNUUiBscHN0ckZpbGVOYW1lLCBEV09SRCBuKQoreworICAgIEhBTkRMRSAgICAgICAgICBoOworICAgIERXT1JEICAgICAgICAgICBwaWQgPSAoRFdPUkQpIGhNb2R1bGU7CisgICAgUFJPQ0VTU0VOVFJZMzIgIHByb2M7CisKKyAgICBoID0gbXlDcmVhdGVUb29saGVscDMyU25hcHNob3QoVEgzMkNTX1NOQVBQUk9DRVNTLCAwKTsKKyAgICBpZiAoIWgpCisgICAgICAgIHJldHVybiAwOworICAgIHByb2MuZHdTaXplID0gc2l6ZW9mKHByb2MpOworICAgIGlmIChteVByb2Nlc3MzMkZpcnN0KGgsICZwcm9jKSkKKyAgICAgICAgZG8KKyAgICAgICAgICAgIGlmIChwcm9jLnRoMzJQcm9jZXNzSUQgPT0gcGlkKSB7CisgICAgICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaCk7CisgICAgICAgICAgICAgICAgc3RyY3B5KGxwc3RyRmlsZU5hbWUsIHByb2Muc3pFeGVGaWxlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgd2hpbGUgKG15UHJvY2VzczMyTmV4dChoLCAmcHJvYykpOworICAgIENsb3NlSGFuZGxlKGgpOworICAgIHJldHVybiAwOworfQorCisjZGVmaW5lIEZBQ1RPUiAoMHgxOWRiMWRlZDUzZWE3MTBMTCkKKyNkZWZpbmUgTlNQRVJTRUMgMTAwMDAwMDBMTAorI2RlZmluZSBOU1BFUk1TRUMgMTAwMDBMTAorCitzdGF0aWMgdGltZV90ICAgX19zdGRjYWxsCit0b190aW1lX3QoUEZJTEVUSU1FIHB0cikKK3sKKyAgICBsb25nICAgICAgICAgICAgcmVtOworICAgIGxvbmcgbG9uZyAgICAgICB4ID0KKyAgICAgICAgKChsb25nIGxvbmcpIHB0ci0+ZHdIaWdoRGF0ZVRpbWUgPDwgMzIpICsKKyAgICAgICAgKCh1bnNpZ25lZCkgcHRyLT5kd0xvd0RhdGVUaW1lKTsKKyAgICB4IC09IEZBQ1RPUjsKKyAgICByZW0gPSB4ICUgTlNQRVJTRUM7CisgICAgcmVtICs9IE5TUEVSU0VDIC8gMjsKKyAgICB4IC89IE5TUEVSU0VDOworICAgIHggKz0gcmVtIC8gTlNQRVJTRUM7CisgICAgcmV0dXJuIHg7Cit9CisKK3N0YXRpYyBsb25nCit0b19tc2VjKFBGSUxFVElNRSBwdHIpCit7CisgICAgbG9uZyBsb25nICAgICAgIHggPQorICAgICAgICAoKGxvbmcgbG9uZykgcHRyLT5kd0hpZ2hEYXRlVGltZSA8PCAzMikgKworICAgICAgICAodW5zaWduZWQpIHB0ci0+ZHdMb3dEYXRlVGltZTsKKyAgICB4IC89IE5TUEVSTVNFQzsKKyAgICByZXR1cm4geDsKK30KKworT1NWRVJTSU9OSU5GTyAgIHZlcjsKK0hNT0RVTEUgICAgICAgICBoOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyAgICBtZW1zZXQoJnZlciwgMCwgc2l6ZW9mIHZlcik7CisgICAgdmVyLmR3T1NWZXJzaW9uSW5mb1NpemUgPSBzaXplb2YgdmVyOworICAgIEdldFZlcnNpb25FeCgmdmVyKTsKKworICAgIGlmICh2ZXIuZHdQbGF0Zm9ybUlkID09IFZFUl9QTEFURk9STV9XSU4zMl9OVCkgeworICAgICAgICBoID0gTG9hZExpYnJhcnkoInBzYXBpLmRsbCIpOworICAgICAgICBpZiAoaCkgeworICAgICAgICAgICAgbXlFbnVtUHJvY2Vzc01vZHVsZXMgICA9IChFTlVNUFJPQ0VTU01PRFVMRVMpCisgICAgICAgICAgICAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKGgsICJFbnVtUHJvY2Vzc01vZHVsZXMiKTsKKyAgICAgICAgICAgIG15R2V0TW9kdWxlRmlsZU5hbWVFeCAgPSAoR0VUTU9EVUxFRklMRU5BTUUpCisgICAgICAgICAgICAgICAgICAgICAgIEdldFByb2NBZGRyZXNzKGgsICJHZXRNb2R1bGVGaWxlTmFtZUV4QSIpOworICAgICAgICAgICAgbXlHZXRQcm9jZXNzTWVtb3J5SW5mbyA9IChHRVRQUk9DRVNTTUVNT1JZSU5GTykKKyAgICAgICAgICAgICAgICAgICAgICAgR2V0UHJvY0FkZHJlc3MoaCwgIkdldFByb2Nlc3NNZW1vcnlJbmZvIik7CisgICAgICAgICAgICBpZiAobXlFbnVtUHJvY2Vzc01vZHVsZXMgJiYgbXlHZXRNb2R1bGVGaWxlTmFtZUV4KQorICAgICAgICAgICAgICAgIHF1ZXJ5ID0gQ1dfR0VUUElORk9fRlVMTDsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaHJfc3dydW4gZmFpbGVkIE5UIGluaXRcbiIpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJocl9zd3J1biBmYWlsZWQgdG8gbG9hZCBwc2FwaS5kbGxcbiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGggPSBHZXRNb2R1bGVIYW5kbGUoIktFUk5FTDMyLkRMTCIpOworICAgICAgICBteUNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdCA9IChDUkVBVEVTTkFQU0hPVCkKKyAgICAgICAgICAgICAgICAgICAgICAgR2V0UHJvY0FkZHJlc3MoaCwgIkNyZWF0ZVRvb2xoZWxwMzJTbmFwc2hvdCIpOworICAgICAgICBteVByb2Nlc3MzMkZpcnN0ID0gKFBST0NFU1NXQUxLKSBHZXRQcm9jQWRkcmVzcyhoLCAiUHJvY2VzczMyRmlyc3QiKTsKKyAgICAgICAgbXlQcm9jZXNzMzJOZXh0ICA9IChQUk9DRVNTV0FMSykgR2V0UHJvY0FkZHJlc3MoaCwgIlByb2Nlc3MzMk5leHQiKTsKKyAgICAgICAgbXlFbnVtUHJvY2Vzc01vZHVsZXMgID0gZHVtbXlwcm9jZXNzbW9kdWxlczsKKyAgICAgICAgbXlHZXRNb2R1bGVGaWxlTmFtZUV4ID0gR2V0TW9kdWxlRmlsZU5hbWVFeDk1OworICAgICAgICBpZiAobXlDcmVhdGVUb29saGVscDMyU25hcHNob3QgJiYgbXlQcm9jZXNzMzJGaXJzdAorICAgICAgICAgICAgJiYgbXlQcm9jZXNzMzJOZXh0KQorI2lmIDAKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBUaGlzIGRvZXNuJ3Qgd29yayBhZnRlciBhbGwgb24gV2luOTggU0UgCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHF1ZXJ5ID0gQ1dfR0VUUElORk9fRlVMTDsKKyNlbHNlCisgICAgICAgICAgICBxdWVyeSA9IENXX0dFVFBJTkZPOworI2VuZGlmCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJocl9zd3J1biBmYWlsZWQgbm9uLU5UIGluaXRcbiIpOworICAgIH0KKyAgICByZXR1cm47Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQKK25ldHNubXBfYXJjaF9zd3J1bl9jb250YWluZXJfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpCit7CisgICAgc3RydWN0IGV4dGVybmFsX3BpbmZvICAqY3VycHJvYzsKKyAgICBwaWRfdCAgICAgICAgICAgICAgICAgICBjdXJwaWQgPSAwOworICAgIERXT1JEICAgICAgICAgICAgICAgICAgIG47CisgICAgSEFORExFICAgICAgICAgICAgICAgICAgaDsKKyAgICBGSUxFVElNRSAgICAgICAgICAgICAgICBjdCwgZXQsIGt0LCB1dDsKKyAgICBQUk9DRVNTX01FTU9SWV9DT1VOVEVSUyBwbWM7CisgICAgY2hhciAgICAgICAgICAgICAgICAgICAqY3AxLCAqY3AyOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgICAgKmVudHJ5OworCisgICAgY3lnd2luX2ludGVybmFsKENXX0xPQ0tfUElORk8sIDEwMDApOworICAgIHdoaWxlIChjdXJwcm9jID0gKHN0cnVjdCBleHRlcm5hbF9waW5mbyAqKQorICAgICAgICAgICAgICAgY3lnd2luX2ludGVybmFsKHF1ZXJ5LCBjdXJwaWQgfCBDV19ORVhUUElEKSkgeworCisgICAgICAgIGN1cnBpZCA9IGN1cnByb2MtPnBpZDsKKyAgICAgICAgaWYgKCggUElEX0VYSVRFRCAmIGN1cnByb2MucHJvY2Vzc19zdGF0ZSApIHx8CisgICAgICAgICAgICAgICAoIH4weGZmZmYgJiBjdXJwcm9jLmV4aXRjb2RlICkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3cnVuX2VudHJ5X2NyZWF0ZShjdXJwaWQpOworICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIGVycm9yIGFscmVhZHkgbG9nZ2VkIGJ5IGZ1bmN0aW9uICovCisgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworCisgICAgICAgIG4gPSBsb3dwcm9jLmR3UHJvY2Vzc0lkICYgMHhmZmZmOworICAgICAgICBoID0gT3BlblByb2Nlc3MoUFJPQ0VTU19RVUVSWV9JTkZPUk1BVElPTiB8IFBST0NFU1NfVk1fUkVBRCwgRkFMU0UsIG4pOworCisgICAgICAgIGlmIChjdXJwcm9jLnBwaWQpIHsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPQorICAgICAgICAgICAgICAgIHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpIC0gMSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGN5Z3dpbl9jb252X3RvX3Bvc2l4X3BhdGgoY3VycHJvYy5wcm9nbmFtZSkpOworICAgICAgICB9IGVsc2UgaWYgKHF1ZXJ5ID09IENXX0dFVFBJTkZPX0ZVTEwpIHsKKworICAgICAgICAgICAgaWYgKGgpIHsKKyAgICAgICAgICAgICAgICBITU9EVUxFICAgICAgICAgaG1bMTAwMF07CisgICAgICAgICAgICAgICAgaWYgKCFteUVudW1Qcm9jZXNzTW9kdWxlcyhoLCBobSwgc2l6ZW9mIGhtLCAmbikpCisgICAgICAgICAgICAgICAgICAgIG4gPSAwOworICAgICAgICAgICAgICAgIGlmIChuICYmIG15R2V0TW9kdWxlRmlsZU5hbWVFeChoLCBobVswXSwgc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Ygc3RyaW5nKSkgeworICAgICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGF0aCwgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGF0aCkgLSAxLCBzdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiBTZXQgaHJTV1J1bk5hbWUgdG8gYmUgdGhlIGxhc3QgY29tcG9uZW50IG9mIGhyU1dSdW5QYXRoLAorICAgICAgICAgKiAgICBidXQgd2l0aG91dCBhbnkgZmlsZSBleHRlbnNpb24KKyAgICAgICAgICovCisgICAgICAgIGlmICggZW50cnktPmhyU1dSdW5QYXRoX2xlbiApIHsKKyAgICAgICAgICAgIGNwMSA9IHN0cnJjaHIoIGVudHJ5LT5oclNXUnVuUGF0aCwgJy4nICk7CisgICAgICAgICAgICBpZiAoIGNwMSApCisgICAgICAgICAgICAgICAgKmNwMSA9ICdcMCc7ICAgIC8qIE1hc2sgdGhlIGZpbGUgZXh0ZW5zaW9uICovCisKKyAgICAgICAgICAgIGNwMiAgPSBzdHJyY2hyKCBlbnRyeS0+aHJTV1J1blBhdGgsICcvJyApOworICAgICAgICAgICAgaWYgKGNwMikgCisgICAgICAgICAgICAgICAgY3AyKys7ICAgICAgICAgICAvKiBGaW5kIHRoZSBmaW5hbCBjb21wb25lbnQgLi4uICovCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY3AyID0gZW50cnktPmhyU1dSdW5QYXRoOyAgICAgICAgICAvKiAuLi4gaWYgYW55ICovCisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0KKyAgICAgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSAtIDEsIGNwMik7CisKKyAgICAgICAgICAgIGlmICggY3AxICkKKyAgICAgICAgICAgICAgICAqY3AxID0gJy4nOyAgICAgLyogUmVzdG9yZSB0aGUgZmlsZSBleHRlbnNpb24gKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIFhYWCAtIE5vIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBwcm9jZXNzIGFyZ3VtZW50cworICAgICAgICAgKiBYWFggLSBObyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgc3lzdGVtIHByb2Nlc3NlcyB2cyBhcHBsaWNhdGlvbnMKKyAgICAgICAgICovCisKKyAgICAgICAgaWYgKFBJRF9TVE9QUEVEICYgY3VycHJvYy5wcm9jZXNzX3N0YXRlICkgeworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX05PVFJVTk5BQkxFOworICAgICAgICB9CisgICAgICAvKiAgZWxzZSBpZiAoUElEX1pPTUJJRSAmIGN1cnByb2MucHJvY2Vzc19zdGF0ZSApICAqLworICAgICAgICAgIGVsc2UgaWYgKCAgIH4weGZmZmYgJiBjdXJwcm9jLmV4aXRjb2RlICkKKyAgICAgICAgeworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIC8qICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7ICA/PyAqLworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaCkgeworICAgICAgICAgICAgaWYgKEdldFByb2Nlc3NUaW1lcyhoLCAmY3QsICZldCwgJmt0LCAmdXQpKQorICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSA9ICh0b19tc2VjKCZrdCkgKyB0b19tc2VjKCZ1dCkpIC8gMTA7CisgICAgICAgICAgICBpZiAobXlHZXRQcm9jZXNzTWVtb3J5SW5mbworICAgICAgICAgICAgICAgICYmIG15R2V0UHJvY2Vzc01lbW9yeUluZm8oaCwgJnBtYywgc2l6ZW9mIHBtYykpCisgICAgICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtID0gcG1jLldvcmtpbmdTZXRTaXplIC8gMTAyNDsKKworICAgICAgICAgICAgQ2xvc2VIYW5kbGUoaCk7CisgICAgICAgIH0KKyAgICB9CisgICAgY3lnd2luX2ludGVybmFsKENXX1VOTE9DS19QSU5GTyk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9kYXJ3aW4uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJlZmM0ZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fZGFyd2luLmMKQEAgLTAsMCArMSw0OTUgQEAKKy8qCisgKiBzd3J1bl9kYXJ3aW4uYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgRGFyd2luCisgKi8KKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKKyNpbmNsdWRlIDxsaWJwcm9jLmg+CisjaW5jbHVkZSA8c3lzL3Byb2NfaW5mby5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4JLyogZm9yIHN5c2N0bCgpIGFuZCBzdHJ1Y3Qga2luZm9fcHJvYyAqLworCisjZGVmaW5lIF9fQVBQTEVfQVBJX0VWT0xWSU5HIDEKKyNpbmNsdWRlIDxzeXMvYWNsLmg+IC8qIG9yIGVsc2UgQ29yZUZvdW5kYXRpb24uaCBiYXJmcyAqLworI3VuZGVmIF9fQVBQTEVfQVBJX0VWT0xWSU5HIAorCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZCYXNlLmg+CisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZOdW1iZXIuaD4KKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkJ1bmRsZS5oPgorI2luY2x1ZGUgPENvcmVTZXJ2aWNlcy9Db3JlU2VydmljZXMuaD4KKyNpbmNsdWRlIDxJT0tpdC9JT0NGQnVuZGxlLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoLmg+CisjaW5jbHVkZSA8bWFjaC9tYWNoX3RpbWUuaD4KKworLyoqIHNpZ2guLi4gY2FuJ3QgZmluZCBQcm9jZXNzZXMuaCAqLworI2lmbmRlZiBrUHJvY2Vzc0RpY3Rpb25hcnlJbmNsdWRlQWxsSW5mb3JtYXRpb25NYXNrIAorI2RlZmluZSBrUHJvY2Vzc0RpY3Rpb25hcnlJbmNsdWRlQWxsSW5mb3JtYXRpb25NYXNrIChsb25nKTB4RkZGRkZGRkYKKyNlbmRpZgorI2lmbmRlZiBwcm9jTm90Rm91bmQKKyNkZWZpbmUgcHJvY05vdEZvdW5kIC02MDAKKyNlbmRpZgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIGludCBfa2Vybl9hcmdtYXg7CitzdGF0aWMgaW50IF9zZXRfY29tbWFuZF9uYW1lKG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5KTsKKworLyoqIGF2b2lkIGtlcm5lbCBidWcgaW4gMTAuMi4gODE5MiBvdWdodGEgYmUgZW5vdWdoIGFueXdheXMsIHJpZ2h0PyAqLworI2RlZmluZSBNQVhfS0VSTl9BUkdNQVggODE5MgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyAgICBpbnQgICAgbWliWzJdID0geyBDVExfS0VSTiwgS0VSTl9BUkdNQVggfTsKKyAgICBzaXplX3Qgc2l6ZSwgbWliX3NpemUgPSBzaXplb2YobWliKS9zaXplb2YobWliWzBdKTsKKyAgICAKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiaW5pdFxuIikpOworCisgICAgc2l6ZSA9IHNpemVvZihfa2Vybl9hcmdtYXgpOworICAgIGlmIChzeXNjdGwobWliLCBtaWJfc2l6ZSwgJl9rZXJuX2FyZ21heCwgJnNpemUsIE5VTEwsIDApID09IC0xKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJFcnJvciBpbiBBUkdNQVggc3lzY3RsKCk6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgX2tlcm5fYXJnbWF4ID0gTUFYX0tFUk5fQVJHTUFYOworICAgIH0KKyAgICBlbHNlIGlmIChfa2Vybl9hcmdtYXggPiBNQVhfS0VSTl9BUkdNQVgpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsCisgICAgICAgICAgICAgICAgICAgICJhcnRpZmljaWFsbHkgbGltaXRpbmcgQVJHTUFYIHRvICVkIChmcm9tICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgTUFYX0tFUk5fQVJHTUFYLCBfa2Vybl9hcmdtYXgpKTsKKyAgICAgICAgX2tlcm5fYXJnbWF4ID0gTUFYX0tFUk5fQVJHTUFYOworICAgIH0KKworCit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjZGVmaW5lIFNXUlVOSU5ERU5UICIgICAgICAgICAgICIKK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBpbnQJICAgICAgICAgICAgICAgICBtaWJbNF0gPSB7Q1RMX0tFUk4sIEtFUk5fUFJPQywgS0VSTl9QUk9DX0FMTH07CisgICAgc2l6ZV90ICAgICAgICAgICAgICAgYnVmX3NpemUsIG1pYl9zaXplID0gc2l6ZW9mKG1pYikvc2l6ZW9mKG1pYlswXSk7CisgICAgc3RydWN0IGtpbmZvX3Byb2MgICAqcHJvY2Vzc2VzID0gTlVMTDsKKyAgICBzdHJ1Y3QgcHJvY190YXNrYWxsaW5mbyB0YXNraW5mbzsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICplbnRyeTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICByYywgbnVtX2VudHJpZXMsIGk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRcbiIpKTsKKworICAgIC8qCisgICAgICogZ2V0IHNpemUgdG8gYWxsb2NhdGUuIFRoaXMgaW50cm9kdWNlcyBhIGJpdCBvZiBhIHJhY2UgY29uZGl0aW9uLAorICAgICAqIGFzIHRoZSBzaXplIGNvdWxkIGNoYW5nZSBiZXR3ZWVuIHRoaXMgY2FsbCBhbmQgdGhlIG5leHQuLi4KKyAgICAgKi8KKyAgICByYyA9IHN5c2N0bChtaWIsIG1pYl9zaXplLCBOVUxMLCAmYnVmX3NpemUsIE5VTEwsIDApOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIktFUk5fUFJPQ19BTEwgc2l6ZSBzeXNjdGwgZmFpbGVkOiAlZFxuIiwgcmMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcHJvY2Vzc2VzID0gKHN0cnVjdCBraW5mb19wcm9jKikgbWFsbG9jKGJ1Zl9zaXplKTsKKyAgICBpZiAoTlVMTCA9PSBwcm9jZXNzZXMpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm1hbGxvYyBmYWlsZWRcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmMgPSBzeXNjdGwobWliLCBtaWJfc2l6ZSwgcHJvY2Vzc2VzLCAmYnVmX3NpemUsIE5VTEwsIDApOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIktFUk5fUFJPQ19BTEwgc3lzY3RsIGZhaWxlZDogJWRcbiIsIHJjKTsKKyAgICAgICAgZnJlZShwcm9jZXNzZXMpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIG51bV9lbnRyaWVzID0gYnVmX3NpemUgLyBzaXplb2Yoc3RydWN0IGtpbmZvX3Byb2MpOworICAgIAorICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZW50cmllczsgaSsrKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNraXAgZW1wdHkgbmFtZXMuCisgICAgICAgICAqIHBfc3RhdCA9IChTSURMfFNSVU58U1NMRUVQfFNTVE9QfFNaT01CKQorICAgICAgICAgKi8KKyAgICAgICAgaWYgKChOVUxMID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSkgfHwKKyAgICAgICAgICAgICgwID09IHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiIHNraXBwaW5nIHBfY29tbSAnJXMnLCBwaWQgJTVkLCBwX3BzdGF0ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9jb21tID8gCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZXNbaV0ua3BfcHJvYy5wX2NvbW0gOiAiTlVMTCIsCisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzZXNbaV0ua3BfcHJvYy5wX3BpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfc3RhdCkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiICVzIHBpZCAlNWRcbiIsCisgICAgICAgICAgICAgICAgICAgIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSwKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9waWQpKTsKKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIHBfY29tbSBpcyBhIHBhcnRpYWwgbmFtZSwgYnV0IGl0IGlzIGFsbCB3ZSBoYXZlIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAqLworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfY29tbSk7CisKKyAgICAgICAgLyoqIHN5c2N0bCBmb3IgbmFtZSwgcGF0aCwgcGFyYW1zICovCisgICAgICAgIHJjID0gX3NldF9jb21tYW5kX25hbWUoZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIG1hcCBwX3N0YXQgdG8gUnVuU3RhdHVzLiBPZGQgdGhhdCB0aGVyZSBpcyBubyAncnVubmluZycgc3RhdHVzLgorICAgICAgICAgKi8KKyAgICAgICAgc3dpdGNoKHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfc3RhdCkgeworICAgICAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OQUJMRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1NMRUVQOgorICAgICAgICAgICAgY2FzZSBTU1RPUDoKKyAgICAgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNJREw6CisgICAgICAgICAgICBjYXNlIFNaT01COgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfSAKKworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBmb3Igc3lzdGVtIHByb2Nlc3NlcworICAgICAgICAgKi8KKyAgICAgICAgaWYgKFBfU1lTVEVNICYgcHJvY2Vzc2VzW2ldLmtwX3Byb2MucF9mbGFnKSB7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blR5cGUgPSBIUlNXUlVOVFlQRV9PUEVSQVRJTkdTWVNURU07CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwgU1dSVU5JTkRFTlQgIlNZU1RFTVxuIikpOworICAgICAgICB9CisgICAgICAgIGVsc2UgZW50cnktPmhyU1dSdW5UeXBlID0gSFJTV1JVTlRZUEVfQVBQTElDQVRJT047CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZ2V0IG1lbSBzaXplLCBydW4gdGltZQorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSBwcm9jX3BpZGluZm8oIHByb2Nlc3Nlc1tpXS5rcF9wcm9jLnBfcGlkLCBQUk9DX1BJRFRBU0tBTExJTkZPLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJnRhc2tpbmZvLCBzaXplb2YodGFza2luZm8pKTsKKyAgICAgICAgaWYgKHNpemVvZih0YXNraW5mbykgIT0gcmMpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCAiIHByb2NfcGlkaW5mbyByZXR1cm5lZCAlZFxuIiwgcmMpKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHVpbnQ2NF90IHRhc2tfbWVtID0gdGFza2luZm8ucHRpbmZvLnB0aV9yZXNpZGVudF9zaXplIC8gMTAyNDsKKyAgICAgICAgICAgIHVuaW9uIHsKKyAgICAgICAgICAgICAgICB1X3F1YWRfdCAgICAgdXE7IC8qIHVfaW50NjRfdCAqLworICAgICAgICAgICAgICAgIFVuc2lnbmVkV2lkZSB1dzsgLyogc3RydWN0IHVfaW50MzJfdCBoaS9sbyAqLworICAgICAgICAgICAgfSBhdCwgbnM7CisgICAgICAgICAgICBhdC51cSA9IHRhc2tpbmZvLnB0aW5mby5wdGlfdG90YWxfdXNlciArCisgICAgICAgICAgICAgICAgICAgIHRhc2tpbmZvLnB0aW5mby5wdGlfdG90YWxfc3lzdGVtOworICAgICAgICAgICAgbnMudXcgPSBBYnNvbHV0ZVRvTmFub3NlY29uZHMoIGF0LnV3ICk7CisgICAgICAgICAgICBucy51cSA9IG5zLnVxIC8gMTAwMDAwMDBMTDsgLyogbmFubyB0byBkZWNpICovCisgICAgICAgICAgICBpZiAodGFza19tZW0gPiBJTlQzMl9NQVgpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwgU1dSVU5JTkRFTlQgIm1lbSBvdmVyZmxvd1xuIikpOworICAgICAgICAgICAgICAgIHRhc2tfbWVtID0gSU5UMzJfTUFYOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG5zLnVxID4gSU5UMzJfTUFYKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIFNXUlVOSU5ERU5UICJ0aW1lIG92ZXJmbG93XG4iKSk7CisgICAgICAgICAgICAgICAgbnMudXEgPSBJTlQzMl9NQVg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gPSB0YXNrX21lbTsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSA9IG5zLnVxOworICAgICAgICB9CisgICAgfQorICAgIGZyZWUocHJvY2Vzc2VzKTsKKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogVGhlIGZvbGxvd2luZyBjb2RlIHdhcyBzbmFnZ2VkIGZyb20gRGFyd2luIGNvZGUsIGFuZCB0aGUgb3JpZ2luYWwKKyAqIGZpbGUgaGFkIHRoZSBmb2xsb3dpbmcgbGljZW5jZXM6CisgKi8KKworLyoKKyAqIENvcHlyaWdodCAoYykgMjAwMi0yMDA0IEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9TVEFSVEAKKyAqIAorICogVGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBjb25zdGl0dXRlIE9yaWdpbmFsIENvZGUgYXMgZGVmaW5lZCBpbiBhbmQKKyAqIGFyZSBzdWJqZWN0IHRvIHRoZSBBcHBsZSBQdWJsaWMgU291cmNlIExpY2Vuc2UgVmVyc2lvbiAxLjEgKHRoZQorICogIkxpY2Vuc2UiKS4gIFlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUKKyAqIExpY2Vuc2UuICBQbGVhc2Ugb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICogaHR0cDovL3d3dy5hcHBsZS5jb20vcHVibGljc291cmNlIGFuZCByZWFkIGl0IGJlZm9yZSB1c2luZyB0aGlzIGZpbGUuCisgKiAKKyAqIFRoaXMgT3JpZ2luYWwgQ29kZSBhbmQgYWxsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGFyZQorICogZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBiYXNpcywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSCisgKiBFWFBSRVNTIE9SIElNUExJRUQsIEFORCBBUFBMRSBIRVJFQlkgRElTQ0xBSU1TIEFMTCBTVUNIIFdBUlJBTlRJRVMsCisgKiBJTkNMVURJTkcgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT04tSU5GUklOR0VNRU5ULiAgUGxlYXNlIHNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKiAKKyAqIEBBUFBMRV9MSUNFTlNFX0hFQURFUl9FTkRACisgKi8KKyNpZmRlZiBKQUdVQVIgLyogeHh4IGNvbmZpZ3VyZSB0ZXN0PyAqLworc3RhdGljIGludAorX3NldF9jb21tYW5kX25hbWVfamFndWFyKG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5KQoreworICAgIGludAkgICAgICAgIG1pYlszXSA9IHtDVExfS0VSTiwgS0VSTl9QUk9DQVJHUywgMH07CisgICAgc2l6ZV90ICAgICAgcHJvY2FyZ3NzaXplLCBtaWJfc2l6ZSA9IHNpemVvZihtaWIpL3NpemVvZihtaWJbMF0pOworICAgIGNoYXIgICAgICAgKmFyZ19lbmQsICpleGVjX3BhdGg7CisgICAgaW50ICAgICAgICAqaXA7CisgICAgaW50ICAgICAgICAgbGVuOworICAgIGNoYXIgICAgICAgKmNvbW1hbmRfYmVnLCAqY29tbWFuZCwgKmNvbW1hbmRfZW5kOworICAgIGNoYXIgICAgICAgIGFyZ19idWZbTUFYX0tFUk5fQVJHTUFYXTsgLyogbWF4IHRvIGF2b2lkIGtlcm5lbCBidWcgKi8KKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIHBpZCAlZFxuIiwgZW50cnktPmhyU1dSdW5JbmRleCkpOworCisgICAgbWliWzJdID0gZW50cnktPmhyU1dSdW5JbmRleDsKKworICAgIG1lbXNldChhcmdfYnVmLCAweDAsIHNpemVvZihhcmdfYnVmKSk7CisgICAgcHJvY2FyZ3NzaXplID0gX2tlcm5fYXJnbWF4OworICAgIGlmIChzeXNjdGwobWliLCBtaWJfc2l6ZSwgYXJnX2J1ZiwgJnByb2Nhcmdzc2l6ZSwgTlVMTCwgMCkgPT0gLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkVycm9yIGluIFBST0NBUkdTIHN5c2N0bCgpIGZvciAlczogJXNcbiIsCisgICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZSwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IDA7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBTZXQgaXAganVzdCBhYm92ZSB0aGUgZW5kIG9mIGFyZ19idWYuICovCisgICAgYXJnX2VuZCA9ICZhcmdfYnVmW3Byb2Nhcmdzc2l6ZV07CisgICAgaXAgPSAoaW50ICopYXJnX2VuZDsKKyAgICAKKyAgICAvKgorICAgICAqIFNraXAgdGhlIGxhc3QgMiB3b3Jkcywgc2luY2UgdGhlIGxhc3QgaXMgYSAwIHdvcmQsIGFuZAorICAgICAqIHRoZSBzZWNvbmQgdG8gbGFzdCBtYXkgYmUgYXMgd2VsbCwgaWYgdGhlcmUgYXJlIG5vCisgICAgICogYXJndW1lbnRzLgorICAgICAqLworICAgIGlwIC09IDM7CisgICAgCisgICAgLyogSXRlcmF0ZSBkb3duIHRoZSBhcmd1bWVudHMgdW50aWwgYSAwIHdvcmQgaXMgZm91bmQuICovCisgICAgZm9yICg7ICppcCAhPSAwOyBpcC0tKSB7CisgICAgICAgIGlmIChpcCA9PSAoaW50ICopYXJnX2J1ZikgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdW5leHBlY3RlZCB0b3BhcmdcbiIpKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKiBUaGUgc2F2ZWQgZXhlY19wYXRoIGlzIGp1c3QgYWJvdmUgdGhlIDAgd29yZC4gKi8KKyAgICBpcCsrOworICAgIGV4ZWNfcGF0aCA9IChjaGFyICopaXA7CisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgZXhlY19wYXRoICVzXG4iLCBleGVjX3BhdGgpKTsKKyAgICBsZW4gPSBzdHJsZW4oZXhlY19wYXRoKTsKKyAgICBzdHJsY3B5KGVudHJ5LT5oclNXUnVuUGF0aCwgZXhlY19wYXRoLCBzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKSk7CisgICAgaWYgKGxlbiA+IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdHJ1bmNhdGluZyBsb25nIHJ1biBwYXRoXG4iKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aFtzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKS0yXSA9ICckJzsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTE7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIGV4ZWNfcGF0aCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoKSk7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IGxlbjsKKyAgICAKKyAgICAvKgorICAgICAqIEdldCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBhcmd1bWVudC4gIEl0IGlzIHdvcmQtYWxpZ25lZCwKKyAgICAgKiBzbyBza2lwIHBhZGRpbmcgJ1wwJyBieXRlcy4KKyAgICAgKi8KKyAgICBjb21tYW5kX2JlZyA9IGV4ZWNfcGF0aCArIHN0cmxlbihleGVjX3BhdGgpOworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIGNvbW1hbmRfYmVnICclcydcbiIsIGNvbW1hbmRfYmVnKSk7CisgICAgZm9yICg7ICpjb21tYW5kX2JlZyA9PSAnXDAnOyBjb21tYW5kX2JlZysrKSB7CisgICAgICAgIGlmIChjb21tYW5kX2JlZyA+PSBhcmdfZW5kKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsIiBjb21tYW5kX2JlZyAnJXMnXG4iLCBjb21tYW5kX2JlZykpOworICAgIAorICAgIC8qIEdldCB0aGUgYmFzZW5hbWUgb2YgY29tbWFuZC4gKi8KKyAgICBjb21tYW5kID0gY29tbWFuZF9lbmQgPSBjb21tYW5kX2JlZyArIHN0cmxlbihjb21tYW5kX2JlZykgKyAxOworICAgIGZvciAoY29tbWFuZC0tOyBjb21tYW5kID49IGNvbW1hbmRfYmVnOyBjb21tYW5kLS0pIHsKKyAgICAgICAgaWYgKCpjb21tYW5kID09ICcvJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjb21tYW5kKys7CisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgY29tbWFuZCAnJXMnXG4iLCBjb21tYW5kKSk7CisgICAgCisgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBjb21tYW5kIGFuZCBjb3B5LiAqLworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwKKyAgICAgICAgICAgICAgICBTV1JVTklOREVOVCAia2VybmVsIG5hbWUgJXNcbiIsIGNvbW1hbmQpKTsKKyAgICBpZiAoc3RybmNtcChjb21tYW5kLCBlbnRyeS0+aHJTV1J1bk5hbWUsIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpLTEpKSB7CisgICAgICAgIHN0cmxjcHkoZW50cnktPmhyU1dSdW5OYW1lLCBjb21tYW5kLCBzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4gPSBzdHJsZW4oZW50cnktPmhyU1dSdW5OYW1lKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCAiKioiCisgICAgICAgICAgICAgICAgICAgIFNXUlVOSU5ERU5UICJ1cGRhdGVkIG5hbWUgdG8gJXNcbiIsIGVudHJ5LT5oclNXUnVuTmFtZSkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiogbm8gZXJyb3IsIG5vIGNoYW5nZSAqLworICAgIHJldHVybiAxOworfQorI2Vsc2UKK3N0YXRpYyBpbnQKK19zZXRfY29tbWFuZF9uYW1lKG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5KQoreworICAgIGludAkgICAgICAgIG1pYlszXSA9IHtDVExfS0VSTiwgMCwgMH07CisgICAgc2l6ZV90ICAgICAgcHJvY2FyZ3NzaXplLCBtaWJfc2l6ZSA9IHNpemVvZihtaWIpL3NpemVvZihtaWJbMF0pOworICAgIGNoYXIgICAgICAgKmNwOworICAgIGludCAgICAgICAgIGxlbiwgbmFyZ3M7CisgICAgY2hhciAgICAgICAqY29tbWFuZF9iZWcsICpjb21tYW5kLCAqY29tbWFuZF9lbmQsICpleGVjX3BhdGgsICphcmdOOworICAgIGNoYXIgICAgICAgIGFyZ19idWZbTUFYX0tFUk5fQVJHTUFYXTsgLyogbWF4IHRvIGF2b2lkIGtlcm5lbCBidWcgKi8KKworICAgIC8qCisgICAgICogYXJndW1lbnRzCisgICAgICovCisgICAgbWliWzFdID0gS0VSTl9QUk9DQVJHUzI7CisgICAgbWliWzJdID0gZW50cnktPmhyU1dSdW5JbmRleDsKKworICAgIG1lbXNldChhcmdfYnVmLCAweDAsIHNpemVvZihhcmdfYnVmKSk7CisgICAgcHJvY2FyZ3NzaXplID0gX2tlcm5fYXJnbWF4OworICAgIGlmIChzeXNjdGwobWliLCBtaWJfc2l6ZSwgYXJnX2J1ZiwgJnByb2Nhcmdzc2l6ZSwgTlVMTCwgMCkgPT0gLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkVycm9yIGluIFBST0NBUkdTMiBzeXNjdGwoKSBmb3IgJXM6ICVzXG4iLAorICAgICAgICAgICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSAwOworICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gMDsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbWVtY3B5KCZuYXJncyxhcmdfYnVmLCBzaXplb2YobmFyZ3MpKTsKKyAgICB9CisKKyAgICBleGVjX3BhdGggPSBhcmdfYnVmICsgc2l6ZW9mKG5hcmdzKTsKKyAgICBsZW4gPSBzdHJsZW4oZXhlY19wYXRoKTsKKyAgICBzdHJsY3B5KGVudHJ5LT5oclNXUnVuUGF0aCwgZXhlY19wYXRoLCBzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKSk7CisgICAgaWYgKGxlbiA+IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdHJ1bmNhdGluZyBsb25nIHJ1biBwYXRoXG4iKSk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aFtzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKS0yXSA9ICckJzsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTE7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IGxlbjsKKworICAgIC8qKiBTa2lwIHRoZSBzYXZlZCBleGVjX3BhdGguICovCisjaWYgMAorICAgIGNwID0gZXhlY19wYXRoICsgbGVuOworI2Vsc2UKKyAgICBmb3IgKGNwID0gZXhlY19wYXRoOyBjcCA8ICZhcmdfYnVmW3Byb2Nhcmdzc2l6ZV07IGNwKyspIHsKKyAgICAgICAgaWYgKCpjcCA9PSAnXDAnKSAKKyAgICAgICAgICAgIGJyZWFrOyAvKiBFbmQgb2YgZXhlY19wYXRoIHJlYWNoZWQuICovCisgICAgfQorICAgIGlmIChjcCAhPSBleGVjX3BhdGggKyBsZW4pIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgT0ZGIEJZICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAoZXhlY19wYXRoICsgbGVuKSAtIGNwKSk7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KCBjcCA9PSBleGVjX3BhdGggKyBsZW4gKTsKKyAgICB9CisjZW5kaWYKKyAgICBpZiAoY3AgPT0gJmFyZ19idWZbcHJvY2FyZ3NzaXplXSkgeworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsIiB1bmV4cGVjdGVkIGVuZCBvZiBidWZmZXJcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBTa2lwIHRyYWlsaW5nICdcMCcgY2hhcmFjdGVycy4gKi8KKyAgICBmb3IgKDsgY3AgPCAmYXJnX2J1Zltwcm9jYXJnc3NpemVdOyBjcCsrKSB7CisgICAgICAgIGlmICgqY3AgIT0gJ1wwJykKKyAgICAgICAgICAgIGJyZWFrOyAvKiBCZWdpbm5pbmcgb2YgZmlyc3QgYXJndW1lbnQgcmVhY2hlZC4gKi8KKyAgICB9CisgICAgaWYgKGNwID09ICZhcmdfYnVmW3Byb2Nhcmdzc2l6ZV0pIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaDpfY24iLCIgdW5leHBlY3RlZCBlbmQgb2YgYnVmZmVyXG4iKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgY29tbWFuZF9iZWcgPSBjcDsKKworICAgIC8qCisgICAgICogTWFrZSBzdXJlIHRoYXQgdGhlIGNvbW1hbmQgaXMgJ1wwJy10ZXJtaW5hdGVkLiAgVGhpcyBwcm90ZWN0cworICAgICAqIGFnYWluc3QgbWFsaWNpb3VzIHByb2dyYW1zOyB1bmRlciBub3JtYWwgb3BlcmF0aW9uIHRoaXMgbmV2ZXIKKyAgICAgKiBlbmRzIHVwIGJlaW5nIGEgcHJvYmxlbS4uCisgICAgICovCisgICAgZm9yICg7IGNwIDwgJmFyZ19idWZbcHJvY2FyZ3NzaXplXTsgY3ArKykgeworICAgICAgICBpZiAoKmNwID09ICdcMCcpCisgICAgICAgICAgICBicmVhazsgLyogRW5kIG9mIGZpcnN0IGFyZ3VtZW50IHJlYWNoZWQuICovCisgICAgfQorICAgIGlmIChjcCA9PSAmYXJnX2J1Zltwcm9jYXJnc3NpemVdKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIHVuZXhwZWN0ZWQgZW5kIG9mIGJ1ZmZlclxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGNvbW1hbmRfZW5kID0gY29tbWFuZCA9IGNwOworICAgIC0tbmFyZ3M7CisKKyAgICAvKgorICAgICAqIHNhdmUgYXJndW1lbnRzCisgICAgICovCisgICAgd2hpbGUoIG5hcmdzICYmIGNwIDwgJmFyZ19idWZbcHJvY2FyZ3NzaXplXSApIHsKKyAgICAgICAgLyoqIFNraXAgdHJhaWxpbmcgJ1wwJyBjaGFyYWN0ZXJzIGZyb20gcHJldiBhcmcuICovCisgICAgICAgIGZvciAoOyAoY3AgPCAmYXJnX2J1Zltwcm9jYXJnc3NpemVdKSAmJiAoKmNwID09IDApOyBjcCsrKSAKKyAgICAgICAgICAgIDsgLyogbm9vcCAqLworICAgICAgICBpZiAoY3AgPT0gJmFyZ19idWZbcHJvY2FyZ3NzaXplXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBlZmZlY3RpdmVseSBhIGJyZWFrICovCisgICAgCisgICAgICAgIC8qKiBzYXZlIGFyZ04gc3RhcnQgKi8KKyAgICAgICAgYXJnTiA9IGNwOworICAgICAgICAtLW5hcmdzOworICAgICAgICBpZiAoMCA9PSBuYXJncykKKyAgICAgICAgICAgIGNvbnRpbnVlOyAvKiBlZmZlY3RpdmVseSBhIGJyZWFrICovCisKKyAgICAgICAgLyoqIFNraXAgdG8gZW5kIG9mIGFyZyAqLworICAgICAgICBmb3IgKDsgKGNwIDwgJmFyZ19idWZbcHJvY2FyZ3NzaXplXSkgJiYgKCpjcCAhPSAwKTsgY3ArKykgCisgICAgICAgICAgICA7ICAvKiBub29wICovCisgICAgICAgIGlmIChjcCA9PSAmYXJnX2J1Zltwcm9jYXJnc3NpemVdKQorICAgICAgICAgICAgY29udGludWU7IC8qIGVmZmVjdGl2ZWx5IGEgYnJlYWsgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBmb3Igb3ZlcnJ1biBpbnRvIGVudgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKCgqYXJnTiAhPSAnLScpICYmIHN0cmNocihhcmdOLCc9JykpICB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsICIgKioqIE9WRVJSVU4gSU5UTyBFTlYgJWRcbiIsbmFyZ3MpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogc2F2ZSBhcmcKKyAgICAgICAgICovCisgICAgICAgIGlmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPCBzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKS0xKSB7CisgICAgICAgICAgICBzdHJsY2F0KCZlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNbZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbl0sCisgICAgICAgICAgICAgICAgICAgIGFyZ04sIHNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpLWVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4tMSk7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gc3RybGVuKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycyk7CisgICAgICAgICAgICBpZiAoKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4rMiA8IHNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpLTEpICYmICgwICE9IG5hcmdzKSkgeworICAgICAgICAgICAgICAgIC8qIGFkZCBzcGFjZSBiZXR3ZWVuIHBhcmFtcyAqLworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuKytdID0gJyAnOworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuXSA9IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2g6X2NuIiwiIHRydW5jYXRpbmcgbG9uZyBhcmcgbGlzdFxuIikpOworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuKytdID0gJyQnOworICAgICAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuXSA9ICcwJzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoJyAnID09IGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc1tlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuXSkKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzW2VudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4tLV0gPSAwOworCisgICAgCisgICAgLyogR2V0IHRoZSBiYXNlbmFtZSBvZiBjb21tYW5kLiAqLworICAgIGZvciAoY29tbWFuZC0tOyBjb21tYW5kID49IGNvbW1hbmRfYmVnOyBjb21tYW5kLS0pIHsKKyAgICAgICAgaWYgKCpjb21tYW5kID09ICcvJykKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBjb21tYW5kKys7CisgICAgCisgICAgLyogQWxsb2NhdGUgc3BhY2UgZm9yIHRoZSBjb21tYW5kIGFuZCBjb3B5LiAqLworICAgIGlmIChzdHJuY21wKGNvbW1hbmQsIGVudHJ5LT5oclNXUnVuTmFtZSwgc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSkpIHsKKyAgICAgICAgc3RybGNweShlbnRyeS0+aHJTV1J1bk5hbWUsIGNvbW1hbmQsIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHN0cmxlbihlbnRyeS0+aHJTV1J1bk5hbWUpOworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoOl9jbiIsCisgICAgICAgICAgICAgICAgICAgICIgKip1cGRhdGVkIG5hbWUgdG8gJXNcbiIsIGVudHJ5LT5oclNXUnVuTmFtZSkpOworICAgIH0KKworICAgIHJldHVybiAwOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX2tpbmZvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmM2QwMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa2luZm8uYwpAQCAtMCwwICsxLDM0MyBAQAorLyoKKyAqIHN3cnVuX2tpbmZvLmM6CisgKiAgICAgaHJTV1J1blRhYmxlIGRhdGEgYWNjZXNzOgorICogICAgIGt2bV9nZXRwcm9jcygpIGludGVyZmFjZSAtIEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRAorICoKKyAqIE5COiBsYXRlciBGcmVlQlNEIGFuZCBPcGVuQlNEIHVzZSBkaWZmZXJlbnQga2luZm9fcHJvYyBzdHJ1Y3R1cmVzCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TVFJJTkdfSAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfS1ZNX0gKKyNpbmNsdWRlIDxrdm0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NZU0NUTF9ICisjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFJPQ19ICisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1VTRVJfSAorI2luY2x1ZGUgPHN5cy91c2VyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VWTV9VVk1fRVhURVJOQUxfSAorI2luY2x1ZGUgPHV2bS91dm1fZXh0ZXJuYWwuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworZXh0ZXJuIGt2bV90ICprZDsKKworCisjaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDE0CisgICAgLyoKKyAgICAgKiBsYXRlciBGcmVlQlNEIGtpbmZvX3Byb2MgZmllbGQgbmFtZXMKKyAgICAgKi8KKyNkZWZpbmUgU1dSVU5fVEFCTEUJa2luZm9fcHJvYworI2RlZmluZSBTV1JVTl9LX1NUQVQJa2lfc3RhdAorI2RlZmluZSBTV1JVTl9LX1BJRAlraV9waWQKKyNkZWZpbmUgU1dSVU5fS19QUElECWtpX3BwaWQKKyNkZWZpbmUgU1dSVU5fS19USUQJa2lfdGlkCisjZGVmaW5lIFNXUlVOX0tfQ09NTQlraV9jb21tCisjZGVmaW5lIFNXUlVOX0tfRkxBRwlraV9mbGFnCisjZGVmaW5lIFNXUlVOX0tfQ0xBU1MJa2lfcHJpLnByaV9jbGFzcworCisjZWxpZiBIQVZFX0tWTV9HRVRQUk9DMiB8fCBkZWZpbmVkKG9wZW5ic2Q1KQorICAgIC8qCisgICAgICogbmV3ZXIgTmV0QlNELCBPcGVuQlNEIGtpbmZvX3Byb2MyIGZpZWxkIG5hbWVzCisgICAgICovCisjaWYgZGVmaW5lZChvcGVuYnNkNSkKKyNkZWZpbmUgU1dSVU5fVEFCTEUJa2luZm9fcHJvYworI2Vsc2UKKyNkZWZpbmUgU1dSVU5fVEFCTEUJa2luZm9fcHJvYzIKKyNlbmRpZgorI2RlZmluZSBTV1JVTl9LX1NUQVQJcF9zdGF0CisjZGVmaW5lIFNXUlVOX0tfUElECXBfcGlkCisjZGVmaW5lIFNXUlVOX0tfQ09NTQlwX2NvbW0KKyNkZWZpbmUgU1dSVU5fS19GTEFHCXBfZmxhZworLyogICAgICBTV1JVTl9LX0NMQVNTCW5vdCBkZWZpbmVkICAgICAqLworCisjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkKKyAgICAvKgorICAgICAqIERyYWdvbkZseSBpcyBkaWZmZXJlbnQgLi4uCisgICAgICovCisjZGVmaW5lIFNXUlVOX1RBQkxFCWtpbmZvX3Byb2MKKyNkZWZpbmUgU1dSVU5fS19TVEFUCWtwX3N0YXQKKyNkZWZpbmUgU1dSVU5fS19QSUQgCWtwX3BpZAorI2RlZmluZSBTV1JVTl9LX0NPTU0Ja3BfY29tbQorI2RlZmluZSBTV1JVTl9LX0ZMQUcJa3BfZmxhZ3MKKy8qICAgICAgU1dSVU5fS19DTEFTUwlub3QgZGVmaW5lZCAgICAgKi8KKworI2Vsc2UKKyAgICAvKgorICAgICAqIGVhcmx5IEZyZWVCU0QsIE5ldEJTRCwgT3BlbkJTRCBraW5mb19wcm9jIGZpZWxkIG5hbWVzCisgICAgICovCisjZGVmaW5lIFNXUlVOX1RBQkxFCWtpbmZvX3Byb2MKKyNkZWZpbmUgU1dSVU5fS19TVEFUCWtwX3Byb2MucF9zdGF0CisjZGVmaW5lIFNXUlVOX0tfUElECWtwX3Byb2MucF9waWQKKyNkZWZpbmUgU1dSVU5fS19DT01NCWtwX3Byb2MucF9jb21tCisjZGVmaW5lIFNXUlVOX0tfRkxBRwlrcF9wcm9jLnBfZmxhZworLyogICAgICBTV1JVTl9LX0NMQVNTCW5vdCBkZWZpbmVkICAgICAqLworI2VuZGlmCisKKy8qCisgKiAgRGVmaW5lIGR1bW15IHZhbHVlcyBpZiBub3QgYWxyZWFkeSBwcm92aWRlZCBieSB0aGUgc3lzdGVtCisgKi8KKworI2lmZGVmIGRyYWdvbmZseQorCisvKgorICogRHJhZ29uRmx5IGlzIHNwZWNpYWwuIHBfc3RhdCBpcyBhbiBlbnVtIQorICovCisKKyNkZWZpbmUgU1JVTgkyMDAKKyNkZWZpbmUgU1NMRUVQCTIwMgorI2RlZmluZSBTV0FJVAkyMDMKKyNkZWZpbmUgU0xPQ0sJMjA1CisjZGVmaW5lIFNERUFECTIwOAorI2RlZmluZSBTT05QUk9DCTIwOQorCisKKyNlbHNlCisKKyNpZm5kZWYgU1JVTgorI2RlZmluZSBTUlVOCTIwMAkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QvT3BlbkJTRCwgbWlzc2luZyBpbiAgTmV0QlNEICovCisjZW5kaWYKKyNpZm5kZWYgU0FDVElWRQorI2RlZmluZSBTQUNUSVZFCTIwMQkvKiBEZWZpbmVkIGJ5ICBOZXRCU0QsIG1pc3NpbmcgaW4gRnJlZUJTRC9PcGVuQlNEICovCisjZW5kaWYKKyNpZm5kZWYgU1NMRUVQCisjZGVmaW5lIFNTTEVFUAkyMDIJLyogRGVmaW5lZCBieSBGcmVlQlNEL09wZW5CU0QsIG1pc3NpbmcgaW4gIE5ldEJTRCAqLworI2VuZGlmCisjaWZuZGVmIFNXQUlUCisjZGVmaW5lIFNXQUlUCTIwMwkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QsIG1pc3NpbmcgaW4gIE5ldEJTRC9PcGVuQlNEICovCisjZW5kaWYKKyNpZm5kZWYgU1NUT1AKKyNkZWZpbmUgU1NUT1AJMjA0CS8qIERlZmluZWQgYnkgRnJlZUJTRC9OZXRCU0QvT3BlbkJTRCAqLworI2VuZGlmCisjaWZuZGVmIFNMT0NLCisjZGVmaW5lIFNMT0NLCTIwNQkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QsIG1pc3NpbmcgaW4gTmV0QlNEL09wZW5CU0QgKi8KKyNlbmRpZgorI2lmbmRlZiBTSURMCisjZGVmaW5lIFNJREwJMjA2CS8qIERlZmluZWQgYnkgRnJlZUJTRC9OZXRCU0QvT3BlbkJTRCAqLworI2VuZGlmCisjaWZuZGVmIFNaT01CCisjZGVmaW5lIFNaT01CCTIwNwkvKiBEZWZpbmVkIGJ5IEZyZWVCU0QvTmV0QlNEL09wZW5CU0QgKi8KKyNlbmRpZgorI2lmbmRlZiBTREVBRAorI2RlZmluZSBTREVBRAkyMDgJLyogRGVmaW5lZCBieSBPcGVuQlNELCBtaXNzaW5nIGluIEZyZWVCU0QvTmV0QlNEICovCisjZW5kaWYKKyNpZm5kZWYgU09OUFJPQworI2RlZmluZSBTT05QUk9DCTIwOQkvKiBEZWZpbmVkIGJ5IE9wZW5CU0QsIG1pc3NpbmcgaW4gRnJlZUJTRC9OZXRCU0QgKi8KKyNlbmRpZgorCisjZW5kaWYKKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisjaWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTCAmJiBkZWZpbmVkKENUTF9LRVJOKSAmJiBkZWZpbmVkKEtFUk5fTUFYUFJPQykKKyAgICBleHRlcm4gaW50IF9zd3J1bl9tYXg7CisgICAgc2l6ZV90IG1heF9zaXplID0gc2l6ZW9mKF9zd3J1bl9tYXgpOworICAgIGludCBtYXhwcm9jX21pYltdID0geyBDVExfS0VSTiwgS0VSTl9NQVhQUk9DIH07CisgICAgc3lzY3RsKG1heHByb2NfbWliLCAyLCAmX3N3cnVuX21heCwgJm1heF9zaXplLCBOVUxMLCAwKTsKKyNlbmRpZgorICAgIAorICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgU1dSVU5fVEFCTEUgICpwcm9jX3RhYmxlOworICAgIGludCAgICAgICAgICAgICAgICAgIG5wcm9jcywgaSwgcmM7CisgICAgY2hhciAgICAgICAgICAgICAgICAgYnVmW0JVRlNJWisxXSwgKiphcmd2OworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgaWYgKCAwID09IGtkICkgeworICAgICAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIENhbid0IHF1ZXJ5IGt2bSBpbmZvXG4iKSk7CisgICAgICAgIHJldHVybiAxOyAgICAgLyogTm8gaGFuZGxlIGZvciByZXRyaWV2aW5nIHByb2Nlc3MgdGFibGUgKi8KKyAgICB9CisjaWYgZGVmaW5lZChvcGVuYnNkNSkKKyAgICBwcm9jX3RhYmxlID0ga3ZtX2dldHByb2NzKGtkLCBLRVJOX1BST0NfS1RIUkVBRCwgMCwgc2l6ZW9mKHN0cnVjdCBraW5mb19wcm9jKSwgJm5wcm9jcyApOworI2VsaWYgZGVmaW5lZChIQVZFX0tWTV9HRVRQUk9DMikKKyAgICBwcm9jX3RhYmxlID0ga3ZtX2dldHByb2MyKGtkLCBLRVJOX1BST0NfQUxMLCAwLCBzaXplb2Yoc3RydWN0IGtpbmZvX3Byb2MyKSwgJm5wcm9jcyApOworI2Vsc2UKKyAgICBwcm9jX3RhYmxlID0ga3ZtX2dldHByb2NzKGtkLCBLRVJOX1BST0NfQUxMLCAwLCAmbnByb2NzICk7CisjZW5kaWYKKyAgICBmb3IgKCBpPTAgOyBpPG5wcm9jczsgaSsrICkgeworICAgICAgICBpZiAoIDAgPT0gcHJvY190YWJsZVtpXS5TV1JVTl9LX1NUQVQgKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmICggLTEgPT0gcHJvY190YWJsZVtpXS5TV1JVTl9LX1BJRCApCisgICAgICAgICAgICBjb250aW51ZTsKKyNpZmRlZiBTV1JVTl9LX1RJRAorCWlmICggMCA9PSBwcm9jX3RhYmxlW2ldLlNXUlVOX0tfUFBJRCApCisJICAgIHByb2NfdGFibGVbaV0uU1dSVU5fS19QSUQgPSBwcm9jX3RhYmxlW2ldLlNXUlVOX0tfVElEOworI2VuZGlmCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUocHJvY190YWJsZVtpXS5TV1JVTl9LX1BJRCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRoZXJlIGFyZSB0d28gcG9zc2libGUgc291cmNlcyBmb3IgdGhlIGNvbW1hbmQgYmVpbmcgcnVuOgorICAgICAgICAgKiAgIC0gU1dSVU5fS19DT01NICAoZnJvbSB0aGUgcHJvY190YWJsZSBlbnRyeSBkaXJlY3RseSkKKyAgICAgICAgICogICAtIHJ1bm5pbmcga3ZtX2dldGFyZ3Ygb24gdGhlIHByb2Nlc3MgZW50cnkuCisgICAgICAgICAqCisgICAgICAgICAqIFdlJ2xsIHVzZSBhcmd2WzBdIChpZiBzZXQpIGZvciBoclNXUnVuUGF0aCwKKyAgICAgICAgICogICBzaW5jZSB0aGF0IG1pZ2h0IHBvdGVudGlhbGx5IGNvbnRhaW4gdGhlCisgICAgICAgICAqICAgYWJzb2x1dGUgcGF0aCB0byB0aGUgcnVubmluZyBiaW5hcnkuCisgICAgICAgICAqIFdlJ2xsIHVzZSBTV1JVTl9LX0NPTU0gZm9yIGhyU1dSdW5OYW1lLAorICAgICAgICAgKiAgIGFuZCBhcyBhbiBhbHRlcm5hdGl2ZSBmb3IgaHJTV1J1blBhdGgKKyAgICAgICAgICovCisjaWYgSEFWRV9LVk1fR0VUUFJPQzIKKyAgICAgICAgYXJndiA9IGt2bV9nZXRhcmd2Migga2QsICYocHJvY190YWJsZVtpXSksIDApOworI2Vsc2UKKyAgICAgICAgYXJndiA9IGt2bV9nZXRhcmd2KCAga2QsICYocHJvY190YWJsZVtpXSksIEJVRlNJWik7CisjZW5kaWYKKworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0gc3ByaW50ZihlbnRyeS0+aHJTV1J1bk5hbWUsICIlLipzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2NfdGFibGVbaV0uU1dSVU5fS19DT01NKTsKKworICAgICAgICBpZiAoYXJndiAmJiAqYXJndikgeworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd2WzBdKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweSggZW50cnktPmhyU1dSdW5QYXRoLCBlbnRyeS0+aHJTV1J1bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiApOworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IGVudHJ5LT5oclNXUnVuTmFtZV9sZW47CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBTdGl0Y2ggdG9nZXRoZXIgdGhlIHJlc3Qgb2YgYXJndltdIHRvIGJ1aWxkIGhyU1dSdW5QYXJhbWV0ZXJzCisgICAgICAgICAqCisgICAgICAgICAqIE5vdGU6CisgICAgICAgICAqICAgV2UgYWRkIGEgc2VwYXJhdGluZyBzcGFjZSBiZWZvcmUgZWFjaCBhcmd2W10gcGFyYW1ldGVyLAorICAgICAgICAgKiAgICppbmNsdWRpbmcqIHRoZSBmaXJzdCBvbmUuICBTbyB3ZSBuZWVkIHRvIHNraXAgdGhpcworICAgICAgICAgKiAgIGxlYWRpbmcgc3BhY2UgKGJ1ZlswXSkgd2hlbiBzZXR0aW5nIGhyU1dSdW5QYXJhbWV0ZXJzLgorICAgICAgICAgKiBUaGlzIGlzIGFsc28gd2h5IHdlIGNsZWFyZWQgdGhlIGZpcnN0ICp0d28qIGNoYXJhY3RlcnMKKyAgICAgICAgICogICBpbiB0aGUgYnVmZmVyIGluaXRpYWxseS4gSWYgdGhlcmUgd2VyZSBubyBjb21tYW5kLWxpbmUKKyAgICAgICAgICogICBhcmd1bWVudHMsIHRoZW4gYnVmWzFdIHdvdWxkIHN0aWxsIGJlIGEgbnVsbCBzdHJpbmcuCisgICAgICAgICAqLworICAgICAgICBidWZbMF0gPSAnXDAnOworICAgICAgICBidWZbMV0gPSAnXDAnOworICAgICAgICBpZiAoYXJndikKKyAgICAgICAgICAgIGFyZ3YrKzsgICAgLyogU2tpcCBhcmd2WzBdICovCisgICAgICAgIHdoaWxlICggYXJndiAmJiAqYXJndiApIHsKKyAgICAgICAgICAgIHN0cmxjYXQoYnVmLCAiICIsIHNpemVvZihidWYpKTsKKyAgICAgICAgICAgIHN0cmxjYXQoYnVmLCAqYXJndiwgc2l6ZW9mKGJ1ZikpOworICAgICAgICAgICAgYXJndisrOworICAgICAgICB9CisgICAgICAgIGlmIChzdHJsZW4oYnVmKSA+PSBCVUZTSVotMTApCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicGFyYW1zICVsdS8lZCAlc1xuIiwgc3RybGVuKGJ1ZiksIEJVRlNJWiwgYnVmKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbiA9CisgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycywgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpIC0gMSwgYnVmKzEpOworCisgICAgICAgIGVudHJ5LT5oclNXUnVuVHlwZSA9IChQX1NZU1RFTSAmIHByb2NfdGFibGVbaV0uU1dSVU5fS19GTEFHKSAKKyNpZmRlZiBTV1JVTl9LX0NMQVNTCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKChQUklfSVRIRCA9PSBwcm9jX3RhYmxlW2ldLlNXUlVOX0tfQ0xBU1MpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMyAgLyogZGV2aWNlIGRyaXZlciAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDIgIC8qIG9wZXJhdGluZyBzeXN0ZW0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogNCAgLyogIGFwcGxpY2F0aW9uICAgICAqLworI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAyICAvKiBvcGVyYXRpbmcgc3lzdGVtICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogNCAgLyogIGFwcGxpY2F0aW9uICAgICAqLworI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHByb2NfdGFibGVbaV0uU1dSVU5fS19TVEFUKSB7CisgICAgICAgIGNhc2UgU1JVTjogICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1NMRUVQOgorCWNhc2UgU0FDVElWRToKKyAgICAgICAgY2FzZSBTV0FJVDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0lETDoKKyAgICAgICAgY2FzZSBTU1RPUDoKKyAgICAgICAgY2FzZSBTTE9DSzogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1pPTUI6CisgICAgICAgIGRlZmF1bHQ6ICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7ICAgLyogaS5lLiAibm90IGxvYWRlZCIgKi8KKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKKyAgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSAgPSAocHJvY190YWJsZVtpXS5raV9ydXNhZ2UucnVfdXRpbWUudHZfc2VjKjEwMDAwMDAgKyBwcm9jX3RhYmxlW2ldLmtpX3J1c2FnZS5ydV91dGltZS50dl91c2VjKSAvIDEwMDAwOworCSBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ua2lfcnVzYWdlLnJ1X3N0aW1lLnR2X3NlYyoxMDAwMDAwICsgcHJvY190YWJsZVtpXS5raV9ydXNhZ2UucnVfc3RpbWUudHZfdXNlYykgLyAxMDAwMDsKKwkgZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IChwcm9jX3RhYmxlW2ldLmtpX3J1c2FnZV9jaC5ydV91dGltZS50dl9zZWMqMTAwMDAwMCArIHByb2NfdGFibGVbaV0ua2lfcnVzYWdlX2NoLnJ1X3V0aW1lLnR2X3VzZWMpIC8gMTAwMDA7CisJIGVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSAocHJvY190YWJsZVtpXS5raV9ydXNhZ2VfY2gucnVfc3RpbWUudHZfc2VjKjEwMDAwMDAgKyBwcm9jX3RhYmxlW2ldLmtpX3J1c2FnZV9jaC5ydV9zdGltZS50dl91c2VjKSAvIDEwMDAwOworCSBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5raV9yc3NpemUgKiAoZ2V0cGFnZXNpemUoKS8xMDI0KTsgIC8qIGluIGtCICovCisjZWxpZiBkZWZpbmVkKEhBVkVfS1ZNX0dFVFBST0MyKSB8fCBkZWZpbmVkKG9wZW5ic2Q1KQorICAgICAgICAvKgorICAgICAgICAgKiBuZXdlciBOZXRCU0QsIE9wZW5CU0QKKyAgICAgICAgICovCisJZW50cnktPmhyU1dSdW5QZXJmQ1BVID0gcHJvY190YWJsZVtpXS5wX3J0aW1lX3NlYyoxMDA7CisJZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IHByb2NfdGFibGVbaV0ucF9ydGltZV91c2VjIC8gMTAwMDA7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICA9IHByb2NfdGFibGVbaV0ucF92bV9yc3NpemU7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZk1lbSAqPSAoZ2V0cGFnZXNpemUoKSAvIDEwMjQpOworI2VsaWYgZGVmaW5lZChkcmFnb25mbHkpICYmIF9fRHJhZ29uRmx5X3ZlcnNpb24gPj0gMTkwMDAwCisJZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IHByb2NfdGFibGVbaV0ua3BfbHdwLmtsX3V0aWNrczsKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9sd3Aua2xfc3RpY2tzOworCWVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSBwcm9jX3RhYmxlW2ldLmtwX2x3cC5rbF9pdGlja3M7CisJZW50cnktPmhyU1dSdW5QZXJmQ1BVID0gZW50cnktPmhyU1dSdW5QZXJmQ1BVIC8gMTAwMDA7CisKKwllbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5rcF92bV9tYXBfc2l6ZSAvIDEwMjQ7CisjZWxpZiBkZWZpbmVkKGRyYWdvbmZseSkKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX3V0aWNrczsKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX3N0aWNrczsKKwllbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX2l0aWNrczsKKworCWVudHJ5LT5oclNXUnVuUGVyZk1lbSAgPSBwcm9jX3RhYmxlW2ldLmtwX3ZtX21hcF9zaXplIC8gMTAyNDsKKworI2Vsc2UKKyAgICAgICAgLyoKKyAgICAgICAgICogZWFybHkgRnJlZUJTRCwgTmV0QlNELCBPcGVuQlNECisgICAgICAgICAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5rcF9wcm9jLnBfdXRpY2tzOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9wcm9jLnBfc3RpY2tzOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gcHJvY190YWJsZVtpXS5rcF9wcm9jLnBfaXRpY2tzOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5rcF9lcHJvYy5lX3ZtLnZtX3Jzc2l6ZTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICo9IChnZXRwYWdlc2l6ZSgpIC8gMTAyNCk7CisjZW5kaWYKKyAgICB9CisgICAgLyoKKyAgICAgKiAncHJvY190YWJsZScgaXMgb3duZWQgYnkgdGhlIGt2bSBsaWJyYXJ5LAorICAgICAqICAgc28gc2hvdWxkbid0IGJlIGZyZWVkIGhlcmUuCisgICAgICovCisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwibG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fa3ZtX3Byb2MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MTU2Y2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9rdm1fcHJvYy5jCkBAIC0wLDAgKzEsMTY0IEBACisvKgorICogc3dydW5fa3ZtX3Byb2MuYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAga3ZtX2dldHByb2MoKSBpbnRlcmZhY2UgLSBTb2xhcmlzCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVElNRV9ICisjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1VTRVJfSAorI2RlZmluZSBfS01FTVVTRVIKKyNpbmNsdWRlIDxzeXMvdXNlci5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFJPQ19ICisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNlbmRpZgorICAgIC8qIFhYWCAtIHNob3VsZCByZWFsbHkgYmUgcHJvdGVjdGVkICovCisjaW5jbHVkZSA8c3lzL3Zhci5oPgorCisjaWZkZWYgSEFWRV9ESVJFTlRfSAorI2luY2x1ZGUgPGRpcmVudC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9LVk1fSAorI2luY2x1ZGUgPGt2bS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9LU1RBVF9ICisjaW5jbHVkZSA8a3N0YXQuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKyNpbmNsdWRlICJrZXJuZWwuaCIKKyNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCituZXRzbm1wX2FyY2hfc3dydW5faW5pdCh2b2lkKQoreworICAgIGV4dGVybiBpbnQgX3N3cnVuX21heDsKKyAgICBrc3RhdF9jdGxfdCAqa3NjOworICAgIGtzdGF0X3QgICAgICprczsKKyAgICBzdHJ1Y3QgdmFyICAgdjsKKworICAgIGlmIChOVUxMICE9IChrc2MgPSBrc3RhdF9vcGVuKCkpKSB7CisgICAgICAgIGlmICgoTlVMTCAhPSAoa3MgID0ga3N0YXRfbG9va3VwKGtzYywgInVuaXgiLCAwLCAidmFyIikpKSAmJgorICAgICAgICAgICAgKCAtMSAgIT0ga3N0YXRfcmVhZChrc2MsIGtzLCAmdiApKSkgeworICAgICAgICAgICAgX3N3cnVuX21heCA9IHYudl9wcm9jOworICAgICAgICB9CisgICAgICAgIGtzdGF0X2Nsb3NlKGtzYyk7CisgICAgfQorICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAgICAgICpwcm9jZGlyID0gTlVMTDsKKyAgICBzdHJ1Y3QgZGlyZW50ICAgICAgICpwcm9jZW50cnlfcDsKKyAgICBzdHJ1Y3QgcHJvYyAgICAgICAgICpwcm9jX2J1ZjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICBwaWQsIHJjLCBpOworICAgIGNoYXIgICAgICAgICAgICAgICAgKmNwOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworICAgIAorICAgIC8qCisgICAgICogRXZlbiBpZiB3ZSdyZSB1c2luZyBrdm1fcHJvYygpIHRvIHJldHJpZXZlIGluZm9ybWF0aW9uCisgICAgICogICBhYm91dCBhIHBhcnRpY3VsYXIgcHJvY2Vzcywgd2Ugc2VlbSB0byB1c2UgL3Byb2MgdG8gZ2V0CisgICAgICogICB0aGUgaW5pdGlhbCBsaXN0IG9mIHByb2Nlc3NlcyB0byByZXBvcnQgb24uCisgICAgICovCisgICAgcHJvY2RpciA9IG9wZW5kaXIoIi9wcm9jIik7CisgICAgaWYgKCBOVUxMID09IHByb2NkaXIgKSB7CisgICAgICAgIHNubXBfbG9nKCBMT0dfRVJSLCAiRmFpbGVkIHRvIG9wZW4gL3Byb2MiICk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFdhbGsgdGhyb3VnaCB0aGUgbGlzdCBvZiBwcm9jZXNzZXMgaW4gdGhlIC9wcm9jIHRyZWUKKyAgICAgKi8KKyAgICB3aGlsZSAoIE5VTEwgIT0gKHByb2NlbnRyeV9wID0gcmVhZGRpciggcHJvY2RpciApKSkgeworICAgICAgICBwaWQgPSBhdG9pKCBwcm9jZW50cnlfcC0+ZF9uYW1lICk7CisgICAgICAgIGlmICggMCA9PSBwaWQgKQorICAgICAgICAgICAgY29udGludWU7ICAgLyogUHJlc3VtYWJseSAnLicgb3IgJy4uJyAqLworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUocGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICBpZiAoTlVMTCA9PSAocHJvY19idWYgPSBrdm1fZ2V0cHJvYygga2QsIHBpZCkpKSB7CisgICAgICAgICAgICAvKiByZWxlYXNlIGVudHJ5ICovCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNwcmludGYoZW50cnktPmhyU1dSdW5OYW1lLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY19idWYtPnBfdXNlci51X2NvbW0pOworICAgICAgICAvKgorICAgICAgICAgKiAgU3BsaXQgdV9wc2FyZ3MgaW50byB0d286CisgICAgICAgICAqICAgICBhcmd2WzBdICAgaXMgaHJTV1J1blBhdGgKKyAgICAgICAgICogICAgIGFyZ3ZbMS4uXSBpcyBoclNXUnVuUGFyYW1ldGVycworICAgICAgICAgKi8KKyAgICAgICAgZm9yICggY3AgPSBwcm9jX2J1Zi0+cF91c2VyLnVfcHNhcmdzOyAnICcgPT0gKmNwOyBjcCsrICkKKyAgICAgICAgICAgIDsKKyAgICAgICAgKmNwID0gJ1wwJzsgICAgLyogRW5kIG9mIGFyZ3ZbMF0gKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXRoX2xlbiA9IHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jX2J1Zi0+cF91c2VyLnVfcHNhcmdzKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbiA9CisgICAgICAgICAgICBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycywgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAoaW50KXNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpIC0gMSwgY3AgKyAxKTsKKyAgICAgICAgKmNwID0gJyAnOyAgICAgLyogUmVzdG9yZSB1X3BzYXJncyB2YWx1ZSAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIGNoZWNrIGZvciBzeXN0ZW0gcHJvY2Vzc2VzCisgICAgICAgICAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blR5cGUgPSAoU1NZUyAmIHByb2NfYnVmLT5wX2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDIgICAvKiBrZXJuZWwgcHJvY2VzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0ICAgLyogIGFwcGxpY2F0aW9uICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHByb2NfYnVmLT5wX3N0YXQpIHsKKyAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICBjYXNlIFNPTlBST0M6IGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OSU5HOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTTEVFUDogIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU1RPUDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0lETDoKKyAgICAgICAgY2FzZSBTWk9NQjoKKyAgICAgICAgZGVmYXVsdDogICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChwcm9jX2J1Zi0+cF91dGltZSAqIDEwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSAocHJvY19idWYtPnBfc3RpbWUgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gIHByb2NfYnVmLT5wX3N3cnNzOworCQkvKiBYWFggLSBpcyB0aGlzIHJlcG9ydGVkIGluIGtCPyAqLworICAgIH0KKyAgICBjbG9zZWRpciggcHJvY2RpciApOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbmxpc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fbmxpc3QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGI2YzljCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9ubGlzdC5jCkBAIC0wLDAgKzEsMTE0IEBACisvKgorICogc3dydW5fbmxpc3QuYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgbmxpc3QoKSBpbnRlcmZhY2UKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCituZXRzbm1wX2FyY2hfc3dydW5faW5pdCh2b2lkKQoreworICAgIGV4dGVybiBpbnQgX3N3cnVuX21heDsKKworICAgIGF1dG9fbmxpc3QoICBQUk9DX1NZTUJPTCwgMCwgMCk7CisgICAgYXV0b19ubGlzdCggTlBST0NfU1lNQk9MLCAoY2hhciAqKSZfc3dydW5fbWF4LCBzaXplb2YoaW50KSk7CisgICAgcmV0dXJuOworfQorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworaW50CituZXRzbm1wX2FyY2hfc3dydW5fY29udGFpbmVyX2xvYWQoIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzKQoreworICAgIHN0cnVjdCBwcm9jICAgICAgICAgKnByb2NfdGFibGU7CisgICAgaW50ICAgICAgICAgICAgICAgICAgcHJvY190eXBlX2Jhc2U7CisgICAgaW50ICAgICAgICAgICAgICAgICAgbnByb2MsIGksIHJjOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgYXV0b19ubGlzdCggTlBST0NfU1lNQk9MLCAoY2hhciAqKSZucHJvYywgc2l6ZW9mKGludCkpOworICAgIHByb2NfdGFibGUgPSAoc3RydWN0IHByb2MgKikgbWFsbG9jKG5wcm9jKihzaXplb2Yoc3RydWN0IHByb2MpKSk7CisKKyAgICBhdXRvX25saXN0KCAgUFJPQ19TWU1CT0wsIChjaGFyICopJnByb2NfdGFibGVfYmFzZSwgc2l6ZW9mKGludCkpOworICAgIE5FVFNOTVBfS0xPT0tVUChwcm9jX3RhYmxlX2Jhc2UsIChjaGFyICopcHJvY190YWJsZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnByb2MqKHNpemVvZihzdHJ1Y3QgcHJvYykpKTsKKworICAgIGZvciAoIGk9MCA7IGk8bnByb2M7IGkrKyApIHsKKyAgICAgICAgaWYgKDAgPT0gcHJvY190YWJsZVtpXS5wX3N0YXQpCisgICAgICAgICAgICBjb250aW51ZTsJLyogU2tpcCB1bnVzZWQgZW50cmllcyAqLworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHByb2NfdGFibGVbaV0ucF9waWQpOworICAgICAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIGVycm9yIGFscmVhZHkgbG9nZ2VkIGJ5IGZ1bmN0aW9uICovCisgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworICAgICAgICAvKgorICAgICAgICAgKiBYWFggLSBXaGF0IGluZm9ybWF0aW9uIGRvZXMgJ3N0cnVjdCBwcm9jJyBjb250YWluPworICAgICAgICAgKi8KKyAgICAgICAgCisvKgorIEFwcGFyZW50bHkgbm8gcHJvY2VzcyBuYW1lL2FyZ3VtZW50IGluZm9ybWF0aW9uCisgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLj8/Pyk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLj8/Pyk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCA/Pz8pOworICovCisKKyAgICAgICAgc3dpdGNoIChwcm9jX3RhYmxlW2ldLnBfc3RhdCkgeworLyogWFhYIC0gd2hpY2ggbmFtZXMgdG8gdXNlID8/ICovCisgICAgICAgIGNhc2UgU0FDVElWRToKKyAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICBjYXNlIFNPTlBST0M6IGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OSU5HOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTV0FQOgorICAgICAgICBjYXNlIFNTTEVFUDoKKyAgICAgICAgY2FzZSBTV0FJVDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1NUT1A6ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX05PVFJVTk5BQkxFOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNJREw6CisgICAgICAgIGNhc2UgU1pPTUI6CisgICAgICAgIGRlZmF1bHQ6ICAgICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSAgPSAocHJvY190YWJsZVtpXS5wX3V0aW1lLnR2X3NlYyAgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ucF91dGltZS50dl91c2VjIC8gMTAwMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ucF9zdGltZS50dl9zZWMgICogMTAwKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IChwcm9jX3RhYmxlW2ldLnBfc3RpbWUudHZfdXNlYyAvIDEwMDAwKTsKKyAgICAvKgorICAgICBvciBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5wX3RpbWU7CisgICAgICovCisgICAgfQorICAgIGZyZWUocHJvY190YWJsZSk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX251bGwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDNkNDBlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9udWxsLmMKQEAgLTAsMCArMSw0NCBAQAorLyoKKyAqIHN3cnVuX251bGwuYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgZHVtbXkgaW50ZXJmYWNlIGZvciBub24tc3VwcG9ydGVkIHN5c3RlbXMKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCit2b2lkCituZXRzbm1wX2FyY2hfc3dydW5faW5pdCh2b2lkKQoreworICAgIC8qIE5vdGhpbmcgdG8gZG8gKi8KKyAgICByZXR1cm47Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQKK25ldHNubXBfYXJjaF9zd3J1bl9jb250YWluZXJfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3BzaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MTI0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19wc2luZm8uYwpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIHN3cnVuX3Byb2Nmc19wc2luZm8uYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgL3Byb2Mve3BpZH0vcHNpbmZvIGludGVyZmFjZSAtIFNvbGFyaXMKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZmRlZiBIQVZFX1NURExJQl9ICisjaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKworI2lmZGVmIEhBVkVfRElSRU5UX0gKKyNpbmNsdWRlIDxkaXJlbnQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2RlZmluZSBIQVZFX1NZU19QUk9DRlNfSCAgICAvKiBYWFggLSBOZWVkcyBhIGNvbmZpZ3VyZSBjaGVjayEgKi8KKyNpZmRlZiBIQVZFX1NZU19QUk9DRlNfSAorI2RlZmluZSBfS0VSTkVMICAgICAgICAgICAgICAvKiBGb3IgcHNpbmZvX3QgKi8KKyNpbmNsdWRlIDxzeXMvcHJvY2ZzLmg+CisjdW5kZWYgX0tFUk5FTAorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFJPQ19ICisjaW5jbHVkZSA8c3lzL3Byb2MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAgICAgICpwcm9jZGlyID0gTlVMTDsKKyAgICBzdHJ1Y3QgZGlyZW50ICAgICAgICpwcm9jZW50cnlfcDsKKyAgICBwc2luZm9fdCAgICAgICAgICAgICBwc2luZm87CisgICAgaW50ICAgICAgICAgICAgICAgICAgcGlkLCByYywgZmQ7CisgICAgY2hhciAgICAgICAgICAgICAgICAqY3AsIGJ1Zls1MTJdOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgcHJvY2RpciA9IG9wZW5kaXIoIi9wcm9jIik7CisgICAgaWYgKCBOVUxMID09IHByb2NkaXIgKSB7CisgICAgICAgIHNubXBfbG9nKCBMT0dfRVJSLCAiRmFpbGVkIHRvIG9wZW4gL3Byb2MiICk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFdhbGsgdGhyb3VnaCB0aGUgbGlzdCBvZiBwcm9jZXNzZXMgaW4gdGhlIC9wcm9jIHRyZWUKKyAgICAgKi8KKyAgICB3aGlsZSAoIE5VTEwgIT0gKHByb2NlbnRyeV9wID0gcmVhZGRpciggcHJvY2RpciApKSkgeworICAgICAgICBwaWQgPSBhdG9pKCBwcm9jZW50cnlfcC0+ZF9uYW1lICk7CisgICAgICAgIGlmICggMCA9PSBwaWQgKQorICAgICAgICAgICAgY29udGludWU7ICAgLyogUHJlc3VtYWJseSAnLicgb3IgJy4uJyAqLworCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUocGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogTm93IGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIGluZm9ybWF0aW9uCisgICAgICAgICAqICAgZnJvbSB0aGUgdmFyaW91cyAvcHJvY3tQSUR9LyBpbnRlcmZhY2UgZmlsZXMKKyAgICAgICAgICovCisKKyAgICAgICAgc25wcmludGYoIGJ1Ziwgc2l6ZW9mKGJ1ZiksICIvcHJvYy8lZC9wc2luZm8iLCBwaWQgKTsKKyAgICAgICAgZmQgPSBvcGVuKCBidWYsIE9fUkRPTkxZICk7CisgICAgICAgIHJlYWQoIGZkLCAmcHNpbmZvLCBzaXplb2YocHNpbmZvKSk7CisgICAgICAgIGNsb3NlKGZkKTsKKworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuCisgICAgICAgICAgICA9IHNwcmludGYoZW50cnktPmhyU1dSdW5OYW1lLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgcHNpbmZvLnByX2ZuYW1lKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogIFNwbGl0IHByX3BzYXJncyBpbnRvIHR3bzoKKyAgICAgICAgICogICAgIGFyZ3ZbMF0gICBpcyBoclNXUnVuUGF0aAorICAgICAgICAgKiAgICAgYXJndlsxLi5dIGlzIGhyU1dSdW5QYXJhbWV0ZXJzCisgICAgICAgICAqLworICAgICAgICBmb3IgKCBjcCA9IHBzaW5mby5wcl9wc2FyZ3M7ICcgJyA9PSAqY3A7IGNwKysgKQorICAgICAgICAgICAgOworICAgICAgICAqY3AgPSAnXDAnOyAgICAvKiBFbmQgb2YgYXJndlswXSAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blBhdGhfbGVuCisgICAgICAgICAgICA9IHNwcmludGYoZW50cnktPmhyU1dSdW5QYXRoLCAiJS4qcyIsCisgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5QYXRoKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgcHNpbmZvLnByX3BzYXJncyk7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbgorICAgICAgICAgICAgPSBzcHJpbnRmKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycywgIiUuKnMiLAorICAgICAgICAgICAgICAgICAgICAgIChpbnQpc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGFyYW1ldGVycykgLSAxLCBjcCsxKTsKKyAgICAgICAgKmNwID0gJyAnOyAgICAgLyogUmVzdG9yZSBwcl9wc2FyZ3MgdmFsdWUgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayBmb3Igc3lzdGVtIHByb2Nlc3NlcworICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gKFBSX0lTU1lTICYgcHNpbmZvLnByX2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDIgICAvKiBrZXJuZWwgcHJvY2VzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0ICAgLyogIGFwcGxpY2F0aW9uICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHBzaW5mby5wcl9sd3AucHJfc3RhdGUpIHsKKyAgICAgICAgY2FzZSBTUlVOOgorICAgICAgICBjYXNlIFNPTlBST0M6IGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OSU5HOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTTEVFUDogIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19SVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU1RPUDogICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0lETDoKKyAgICAgICAgY2FzZSBTWk9NQjoKKyAgICAgICAgZGVmYXVsdDogICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChwc2luZm8ucHJfdGltZS50dl9zZWMgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHBzaW5mby5wcl90aW1lLnR2X25zZWMgLyAxMDAwMDAwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZk1lbSAgPSAgcHNpbmZvLnByX3Jzc2l6ZTsKKwkJLyogWFhYIC0gaXMgdGhpcyByZXBvcnRlZCBpbiBrQj8gKi8KKyAgICB9CisgICAgY2xvc2VkaXIoIHByb2NkaXIgKTsKKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJvY2ZzX3N0YXR1cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMmY1OTAKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2Nmc19zdGF0dXMuYwpAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIHN3cnVuX3Byb2Nmc19saW51eC5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICAvcHJvYy97cGlkfS9zdGF0dXMgaW50ZXJmYWNlIC0gTGludXgKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9ESVJFTlRfSAorI2luY2x1ZGUgPGRpcmVudC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9MSU5VWF9UQVNLU19ICisjaW5jbHVkZSA8bGludXgvdGFza3MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworc3RhdGljIGxvbmcgcGFnZXNpemU7CitzdGF0aWMgbG9uZyBzY19jbGtfdGNrOworCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyNpZmRlZiBIQVZFX0xJTlVYX1RBU0tTX0gKKyAgICBleHRlcm4gaW50IF9zd3J1bl9tYXggPSBOUl9UQVNLUzsgICAvKiBmcm9tIDxsaW51eC90YXNrcy5oPiAqLworI2VuZGlmCisgICAgCisgICAgcGFnZXNpemUgPSBnZXRwYWdlc2l6ZSgpOworICAgIHNjX2Nsa190Y2sgPSBzeXNjb25mKF9TQ19DTEtfVENLKTsKKyAgICByZXR1cm47Cit9CisKKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQKK25ldHNubXBfYXJjaF9zd3J1bl9jb250YWluZXJfbG9hZCggbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpCit7CisgICAgRElSICAgICAgICAgICAgICAgICAqcHJvY2RpciA9IE5VTEw7CisgICAgc3RydWN0IGRpcmVudCAgICAgICAqcHJvY2VudHJ5X3A7CisgICAgRklMRSAgICAgICAgICAgICAgICAqZnA7CisgICAgaW50ICAgICAgICAgICAgICAgICAgcGlkLCByYywgaTsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgICBjcHU7CisgICAgY2hhciAgICAgICAgICAgICAgICAgYnVmW0JVRlNJWl0sIGJ1ZjJbQlVGU0laXSwgKmNwLCAqY3AxOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworICAgIAorICAgIHByb2NkaXIgPSBvcGVuZGlyKCIvcHJvYyIpOworICAgIGlmICggTlVMTCA9PSBwcm9jZGlyICkgeworICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuIC9wcm9jIiApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBXYWxrIHRocm91Z2ggdGhlIGxpc3Qgb2YgcHJvY2Vzc2VzIGluIHRoZSAvcHJvYyB0cmVlCisgICAgICovCisgICAgd2hpbGUgKCBOVUxMICE9IChwcm9jZW50cnlfcCA9IHJlYWRkaXIoIHByb2NkaXIgKSkpIHsKKyAgICAgICAgcGlkID0gYXRvaSggcHJvY2VudHJ5X3AtPmRfbmFtZSApOworICAgICAgICBpZiAoIDAgPT0gcGlkICkKKyAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIFByZXN1bWFibHkgJy4nIG9yICcuLicgKi8KKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHBpZCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIC8qCisgICAgICAgICAqIE5vdyBleHRyYWN0IHRoZSBpbnRlcmVzdGluZyBpbmZvcm1hdGlvbgorICAgICAgICAgKiAgIGZyb20gdGhlIHZhcmlvdXMgL3Byb2N7UElEfS8gaW50ZXJmYWNlIGZpbGVzCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqICAgTmFtZTogIHByb2Nlc3MgbmFtZQorICAgICAgICAgKi8KKyAgICAgICAgc25wcmludGYoIGJ1ZjIsIEJVRlNJWiwgIi9wcm9jLyVkL3N0YXR1cyIsIHBpZCApOworICAgICAgICBmcCA9IGZvcGVuKCBidWYyLCAiciIgKTsKKyAgICAgICAgbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBmZ2V0cyggYnVmLCBCVUZTSVotMSwgZnAgKTsKKyAgICAgICAgZmNsb3NlKGZwKTsKKworICAgICAgICBmb3IgKCBjcCA9IGJ1ZjsgKmNwICE9ICc6JzsgY3ArKyApCisgICAgICAgICAgICA7CisgICAgICAgIHdoaWxlIChpc3NwYWNlKCooKytjcCkpKQkvKiBTa2lwICc6JyBhbmQgZm9sbG93aW5nIHNwYWNlcyAqLworICAgICAgICAgICAgOworICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKS0xLCAiJXMiLCBjcCk7CisgICAgICAgIGlmICggJ1xuJyA9PSBlbnRyeS0+aHJTV1J1bk5hbWVbIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4tMSBdKSB7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1bk5hbWVbIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4tMSBdID0gJ1wwJzsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4tLTsgICAgICAgICAgIC8qIFN0YW1wIG9uIHRyYWlsaW5nIG5ld2xpbmUgKi8KKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqICBDb21tYW5kIExpbmU6CisgICAgICAgICAqICAgICBhcmd2WzBdICdcMCcgYXJndlsxXSAnXDAnIC4uLi4KKyAgICAgICAgICovCisgICAgICAgIHNucHJpbnRmKCBidWYyLCBCVUZTSVosICIvcHJvYy8lZC9jbWRsaW5lIiwgcGlkICk7CisgICAgICAgIGZwID0gZm9wZW4oIGJ1ZjIsICJyIiApOworICAgICAgICBtZW1zZXQoYnVmLCAwLCBzaXplb2YoYnVmKSk7CisgICAgICAgIGNwID0gZmdldHMoIGJ1ZiwgQlVGU0laLTEsIGZwICk7CisgICAgICAgIGZjbG9zZShmcCk7CisKKyAgICAgICAgaWYgKCBjcCApIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiAgICAgYXJndlswXSAgIGlzIGhyU1dSdW5QYXRoCisgICAgICAgICAgICAgKi8gCisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBhdGhfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGF0aCktMSwgIiVzIiwgYnVmKTsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTdGl0Y2ggdG9nZXRoZXIgYXJndlsxLi5dIHRvIGNvbnN0cnVjdCBoclNXUnVuUGFyYW1ldGVycworICAgICAgICAgICAgICovCisgICAgICAgICAgICBjcCA9IGJ1ZiArIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4rMTsKKyAgICAgICAgICAgIHdoaWxlICggMSApIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoKmNwKQorICAgICAgICAgICAgICAgICAgICBjcCsrOworICAgICAgICAgICAgICAgIGlmICggJ1wwJyA9PSAqKGNwKzEpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsgICAgICAvKiAnXDAnJ1wwJyA9PiBFbmQgb2YgY29tbWFuZCBsaW5lICovCisgICAgICAgICAgICAgICAgKmNwID0gJyAnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzX2xlbgorICAgICAgICAgICAgICAgID0gc3ByaW50ZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMsICIlLipzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKGludClzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKSAtIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiArIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gKyAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+aHJTV1J1blBhdGgsIGVudHJ5LT5oclNXUnVuTmFtZSwgZW50cnktPmhyU1dSdW5OYW1lX2xlbik7CisgICAgICAgICAgICBlbnRyeS0+aHJTV1J1blBhdGhfbGVuICAgICAgID0gZW50cnktPmhyU1dSdW5OYW1lX2xlbjsKKyAgICAgICAgICAgIGVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPSAwOworICAgICAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gSFJTV1JVTlRZUEVfT1BFUkFUSU5HU1lTVEVNOworICAgICAgICB9CisgCisgICAgICAgIC8qCisgICAgICAgICAqIFhYWCAtIE5vIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBzeXN0ZW0gcHJvY2Vzc2VzIHZzIGFwcGxpY2F0aW9ucworICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gSFJTV1JVTlRZUEVfQVBQTElDQVRJT047CisKKyAgICAgICAgLyoKKyAgICAgICAgICogICB7eHh4fSB7eHh4fSBTVEFUVVMgIHt4eHh9KjEwICBVVElNRSBTVElNRSAge3h4eH0qOCBSU1MKKyAgICAgICAgICovCisgICAgICAgIHNucHJpbnRmKCBidWYsIEJVRlNJWiwgIi9wcm9jLyVkL3N0YXQiLCBwaWQgKTsKKyAgICAgICAgZnAgPSBmb3BlbiggYnVmLCAiciIgKTsKKyAgICAgICAgZmdldHMoIGJ1ZiwgQlVGU0laLTEsIGZwICk7CisgICAgICAgIGZjbG9zZShmcCk7CisKKyAgICAgICAgY3AgPSBidWY7CisgICAgICAgIHdoaWxlICggJyAnICE9ICooY3ArKykpICAgIC8qIFNraXAgZmlyc3QgZmllbGQgKi8KKyAgICAgICAgICAgIDsKKyAgICAgICAgY3AxID0gY3A7ICAgICAgICAgICAgICAgICAgLyogU2tpcCBzZWNvbmQgZmllbGQgKi8KKyAgICAgICAgd2hpbGUgKCpjcDEpIHsKKyAgICAgICAgICAgIGlmICgqY3AxID09ICcpJykgY3AgPSBjcDE7CisgICAgICAgICAgICBjcDErKzsKKyAgICAgICAgfQorICAgICAgICBjcCArPSAyOworICAgICAgICAKKyAgICAgICAgc3dpdGNoICgqY3ApIHsKKyAgICAgICAgY2FzZSAnUic6ICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTklORzsKKyAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnUyc6ICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ0QnOgorICAgICAgICBjYXNlICdUJzogIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19OT1RSVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnWic6CisgICAgICAgIGRlZmF1bHQ6ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQ7CisgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpPTExOyBpOyBpLS0pIHsgICAvKiBTa2lwIFNUQVRVUyArIDEwIGZpZWxkcyAqLworICAgICAgICAgICAgd2hpbGUgKCcgJyAhPSAqKCsrY3ApKQorICAgICAgICAgICAgICAgIDsKKyAgICAgICAgICAgIGNwKys7CisgICAgICAgIH0KKyAgICAgICAgY3B1ICA9IGF0b2woIGNwICk7ICAgICAgICAgICAgICAgICAgICAgLyogIHV0aW1lICovCisgICAgICAgIHdoaWxlICggJyAnICE9ICooKytjcCkpCisgICAgICAgICAgICA7CisgICAgICAgIGNwdSArPSBhdG9sKCBjcCApOyAgICAgICAgICAgICAgICAgICAgIC8qICtzdGltZSAqLworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gY3B1ICogMTAwIC8gc2NfY2xrX3RjazsKKworICAgICAgICBmb3IgKGk9OTsgaTsgaS0tKSB7ICAgLyogU2tpcCBzdGltZSArIDggZmllbGRzICovCisgICAgICAgICAgICB3aGlsZSAoJyAnICE9ICooKytjcCkpCisgICAgICAgICAgICAgICAgOworICAgICAgICAgICAgY3ArKzsKKyAgICAgICAgfQorICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gYXRvbCggY3AgKTsgICAgICAgLyogcnNzICAgKi8KKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICo9IChwYWdlc2l6ZS8xMDI0KTsgIC8qIGluIGtCICovCisgICAgfQorICAgIGNsb3NlZGlyKCBwcm9jZGlyICk7CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcm9jaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0NjQwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3Byb2NpbmZvLmMKQEAgLTAsMCArMSwxMzAgQEAKKy8qCisgKiBzd3J1bl9wcm9jaW5mby5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICBnZXRwcm9jcygpIGludGVyZmFjZSAtIEFJWAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8cHJvY2luZm8uaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisKK2ludCBhdmFpbCA9IDEwMjQ7ICAgIC8qIFNpemUgb2YgdGFibGUgdG8gYWxsb2NhdGUgKi8KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgcHJvY3NpbmZvICAgICpwcm9jX3RhYmxlOworICAgIHBpZF90ICAgICAgICAgICAgICAgIHByb2NfaW5kZXggPSAwOworICAgIGludCAgICAgICAgICAgICAgICAgIG5wcm9jcywgaTsKKyAgICBjaGFyICAgICAgICAgICAgICAgICBwZW50cnlbMTI4XSwgKnBwZW50cnksIGZ1bGxwYXRoWzEyOF07CisgICAgbmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnk7CisKKyAgICAvKgorICAgICAqIENyZWF0ZSBhIGJ1ZmZlciBmb3IgdGhlIHByb2Nlc3MgdGFibGUsIGJhc2VkIG9uIHRoZSBzaXplIG9mCisgICAgICogICB0aGUgdGFibGUgdGhlIGxhc3QgdGltZSB3ZSBsb2FkZWQgdGhpcyBpbmZvcm1hdGlvbi4KKyAgICAgKiBJZiB0aGlzIGlzbid0IGJpZyBlbm91Z2gsIGtlZXAgaW5jcmVhc2luZyB0aGUgc2l6ZSBvZiB0aGUKKyAgICAgKiAgIHRhYmxlIHVudGlsIHdlIGNhbiByZXRyaWV2ZSB0aGUgd2hvbGUgdGhpbmcuCisgICAgICovCisgICAgcHJvY190YWJsZSA9IChzdHJ1Y3QgcHJvY3NpbmZvICopIG1hbGxvYyhhdmFpbCooc2l6ZW9mKHN0cnVjdCBwcm9jc2luZm8pKSk7CisgICAgd2hpbGUgKCBhdmFpbCA9PSAobnByb2NzID0gZ2V0cHJvY3MocHJvY190YWJsZSwgc2l6ZW9mKHN0cnVjdCBwcm9jc2luZm8pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIHNpemVvZihzdHJ1Y3QgZmRzaW5mbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByb2NfaW5kZXgsIGF2YWlsKSkpIHsKKyAgICAgICAgYXZhaWwgKz0gMTAyNDsKKyAgICAgICAgZnJlZSggcHJvY190YWJsZSApOworICAgICAgICBwcm9jX3RhYmxlID0gKHN0cnVjdCBwcm9jc2luZm8gKikgbWFsbG9jKGF2YWlsKihzaXplb2Yoc3RydWN0IHByb2NzaW5mbykpKTsKKyAgICB9CisKKyAgICBmb3IgKCBpPTAgOyBpPG5wcm9jczsgaSsrICkgeworICAgICAgICBpZiAoMCA9PSBwcm9jX3RhYmxlW2ldLnBpX3N0YXRlKQorICAgICAgICAgICAgY29udGludWU7CS8qIFNraXAgdW51c2VkIGVudHJpZXMgKi8KKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX3N3cnVuX2VudHJ5X2NyZWF0ZShwcm9jX3RhYmxlW2ldLnBpX3BpZCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KTsKKworCW1lbXNldChwZW50cnksIDAsIHNpemVvZihwZW50cnkpKTsJCQkJCQkJCS8qIEVtcHR5IGVhY2ggdGltZSAqLworCWlmKCEoU0tQUk9DICYgcHJvY190YWJsZVtpXS5waV9mbGFncykpIHsJCQkJCQkJLyogUmVtb3ZlIGtlcm5lbCBwcm9jZXNzZXMgKi8KKwkJZ2V0YXJncygmcHJvY190YWJsZVtpXSwgc2l6ZW9mKHN0cnVjdCBwcm9jc2luZm8pLCBwZW50cnksIHNpemVvZihwZW50cnkpKTsgICAgICAgICAgICAgIC8qIENhbGwgZ2V0YXJncygpICovCisJCWZvcihwcGVudHJ5ID0gcGVudHJ5OyAhKCgqcHBlbnRyeSA9PSAnXDAnKSAmJiAoKihwcGVudHJ5KzEpID09ICdcMCcpKTsgcHBlbnRyeSsrKSB7ICAgICAvKiBQcm9jZXNzIHVudGlsIDB4MDAgMHgwMCAqLworCQkJaWYoKCpwcGVudHJ5ID09ICdcMCcpICYmICghKCoocHBlbnRyeSsxKSA9PSAnXDAnKSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZiAweDAwICEweDAwICovCisJCQkJKnBwZW50cnkgPSAnICc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hhbmdlIHRvIDB4MjAgITB4MDAgKi8KKwkJfQorCQlzbnByaW50ZihmdWxscGF0aCwgc2l6ZW9mKGZ1bGxwYXRoKS0xLCAiJS4qcyIsIChpbnQpKHN0cmNocihwZW50cnksICcgJyktcGVudHJ5KSwgcGVudHJ5KTsKKworCQllbnRyeS0+aHJTV1J1blBhdGhfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXRoLAorCQkJc2l6ZW9mKGVudHJ5LT5oclNXUnVuUGF0aCksICIlcyIsIGZ1bGxwYXRoKTsKKwkJcHBlbnRyeSA9IHN0cnJjaHIoZnVsbHBhdGgsICcvJyk7CisJCWlmKHBwZW50cnkgPT0gTlVMTCkgeworCQkJZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNucHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwKKwkJCQlzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSwgIiVzIiwgZnVsbHBhdGgpOworCQl9CisJCWVsc2UgeworCQkJZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNucHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwKKwkJCQlzaXplb2YoZW50cnktPmhyU1dSdW5OYW1lKSwgIiVzIiwgcHBlbnRyeSArIDEpOworCQl9CisKKwkJcHBlbnRyeSA9IHN0cmNocihwZW50cnksICcgJyk7CisJCWVudHJ5LT5oclNXUnVuUGFyYW1ldGVyc19sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnMsCisJCQlzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKSwgIiUuKnMiLCAoaW50KShwZW50cnkgLSBwcGVudHJ5KSwgcHBlbnRyeSArIDEpOworCX0KKworICAgICAgICBlbnRyeS0+aHJTV1J1blR5cGUgPSAoU0tQUk9DICYgcHJvY190YWJsZVtpXS5waV9mbGFncykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gMiAgIC8qIGtlcm5lbCBwcm9jZXNzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IDQgICAvKiAgYXBwbGljYXRpb24gICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOworCisgICAgICAgIHN3aXRjaCAocHJvY190YWJsZVtpXS5waV9zdGF0ZSkgeworICAgICAgICBjYXNlIFNBQ1RJVkU6CisgICAgICAgIGNhc2UgU1JVTjogICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU1NMRUVQOiAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5BQkxFOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTVE9QOiAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19OT1RSVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTSURMOgorICAgICAgICBjYXNlIFNaT01COgorICAgICAgICBkZWZhdWx0OiAgICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19JTlZBTElEOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChwcm9jX3RhYmxlW2ldLnBpX3J1LnJ1X3V0aW1lLnR2X3NlYyAqIDEwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZkNQVSArPSAocHJvY190YWJsZVtpXS5waV9ydS5ydV91dGltZS50dl91c2VjIC8gMTAwMDAwMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKHByb2NfdGFibGVbaV0ucGlfcnUucnVfc3RpbWUudHZfc2VjICogMTAwKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICs9IChwcm9jX3RhYmxlW2ldLnBpX3J1LnJ1X3N0aW1lLnR2X3VzZWMgLyAxMDAwMDAwMCk7CisgICAgICAgIGVudHJ5LT5oclNXUnVuUGVyZk1lbSAgPSAgcHJvY190YWJsZVtpXS5waV9zaXplOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gKj0gKGdldHBhZ2VzaXplKCkvMTAyNCk7ICAvKiBpbiBrQiAqLworICAgIH0KKyAgICBmcmVlKHByb2NfdGFibGUpOworCisgICAgREVCVUdNU0dUTCgoInN3cnVuOmxvYWQ6YXJjaCIsIiBsb2FkZWQgJWQgZW50cmllc1xuIiwKKyAgICAgICAgICAgICAgICAoaW50KSBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8uYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvZGF0YV9hY2Nlc3Mvc3dydW5fcHJwc2luZm8uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2JiYjIzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wcnBzaW5mby5jCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogc3dydW5fcHJwc2luZm8uYzoKKyAqICAgICBoclNXUnVuVGFibGUgZGF0YSBhY2Nlc3M6CisgKiAgICAgZ2V0cHJwc2luZm8oKSBpbnRlcmZhY2UgLSBEeW5peAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV8/Pz8/P19ICisjaW5jbHVkZSA8Pz8/Pz8uaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3ZvaWQKK25ldHNubXBfYXJjaF9zd3J1bl9pbml0KHZvaWQpCit7CisgICAgLyogTm90aGluZyB0byBkbyAqLworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBwaWRfdCAgICAgICAgICAgICAgICBuZXh0cHJvYyA9IDA7CisgICAgZ2V0cHJwc2luZm9fdCAgICAgICAqc2VsZWN0ICAgPSAwOworICAgIHBycHNpbmZvX3QgICAgICAgICAgIG15cHNpbmZvOworICAgIGludCAgICAgICAgICAgICAgICAgIHJjOworICAgIGNoYXIgICAgICAgICAgICAgICAgKmNwOworICAgIG5ldHNubXBfc3dydW5fZW50cnkgKmVudHJ5OworCisgICAgd2hpbGUgKCAwIDw9ICggbmV4dHByb2MgPSBnZXRwcnBzaW5mbyggbmV4dHByb2MsIHNlbGVjdCwgJm15cHNpbmZvICkpKSB7CisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9zd3J1bl9lbnRyeV9jcmVhdGUobXlwc2luZm8ucHJfcGlkKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgICAgICBjb250aW51ZTsgICAvKiBlcnJvciBhbHJlYWR5IGxvZ2dlZCBieSBmdW5jdGlvbiAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5OYW1lX2xlbiA9IHNucHJpbnRmKGVudHJ5LT5oclNXUnVuTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGVudHJ5LT5oclNXUnVuTmFtZSktMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlcyIsIG15cHNpbmZvLnByX2ZuYW1lKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogIFNwbGl0IHByX3BzYXJncyBpbnRvIHR3bzoKKyAgICAgICAgICogICAgIGFyZ3ZbMF0gICBpcyBoclNXUnVuUGF0aAorICAgICAgICAgKiAgICAgYXJndlsxLi5dIGlzIGhyU1dSdW5QYXJhbWV0ZXJzCisgICAgICAgICAqLworICAgICAgICBmb3IgKCBjcCA9IG15cHNpbmZvLnByX3BzYXJnczsgJyAnID09ICpjcDsgY3ArKyApCisgICAgICAgICAgICA7CisgICAgICAgICpjcCA9ICdcMCc7ICAgIC8qIEVuZCBvZiBhcmd2WzBdICovCisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBteXBzaW5mby5wcl9wc2FyZ3MpOworICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKS0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgY3ArMSk7CisgICAgICAgICpjcCA9ICcgJzsgICAgIC8qIFJlc3RvcmUgcHJfcHNhcmdzIHZhbHVlICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogWFhYIC0gTm8gaW5mb3JtYXRpb24gcmVnYXJkaW5nIHN5c3RlbSBwcm9jZXNzZXMgdnMgYXBwbGljYXRpb25zCisgICAgICAgICAqLworCisgICAgICAgIHN3aXRjaCAobXlwc2luZm8ucHJfc3RhdGUpIHsKKy8qIFhYWCAtIHdoaWNoIG5hbWVzIHRvIHVzZSA/PyAqLworICAgICAgICBjYXNlIFNBQ1RJVkU6CisgICAgICAgIGNhc2UgU1JVTjoKKyAgICAgICAgY2FzZSBTT05QUk9DOiBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTklORzsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTU1dBUDoKKyAgICAgICAgY2FzZSBTU0xFRVA6CisgICAgICAgIGNhc2UgU1dBSVQ6ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5BQkxFOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNTVE9QOiAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19OT1RSVU5OQUJMRTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTSURMOgorICAgICAgICBjYXNlIFNaT01COgorICAgICAgICBkZWZhdWx0OiAgICAgIGVudHJ5LT5oclNXUnVuU3RhdHVzID0gSFJTV1JVTlNUQVRVU19JTlZBTElEOworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmQ1BVICA9IChteXBzaW5mby5wcl90aW1lLnR2X3NlYyAgKiAxMDApOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgKz0gKG15cHNpbmZvLnByX3RpbWUudHZfbnNlYyAvIDEwMDAwMDAwKTsKKyAgICAgICAgZW50cnktPmhyU1dSdW5QZXJmTWVtICA9IChteXBzaW5mby5wcl9yc3NpemUpOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gKj0gKE1VX1BBR0VTSVpFLzEwMjQpOyAgLyogaW4ga0IgKi8KKyAgICB9CisKKyAgICBERUJVR01TR1RMKCgic3dydW46bG9hZDphcmNoIiwiIGxvYWRlZCAlZCBlbnRyaWVzXG4iLAorICAgICAgICAgICAgICAgIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKworICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bl9wc3RhdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NWNlNzcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2RhdGFfYWNjZXNzL3N3cnVuX3BzdGF0LmMKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBzd3J1bl9wc3RhdC5jOgorICogICAgIGhyU1dSdW5UYWJsZSBkYXRhIGFjY2VzczoKKyAqICAgICBwc3RhdF9nZXRkeW5hbWljKCkgaW50ZXJmYWNlIC0gSFBVWAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lmZGVmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUFNUQVRfSAorI2RlZmluZSBfUFNUQVQ2NAorI2luY2x1ZGUgPHN5cy9wc3RhdC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwordm9pZAorbmV0c25tcF9hcmNoX3N3cnVuX2luaXQodm9pZCkKK3sKKyAgICBleHRlcm4gaW50IF9zd3J1bl9tYXg7CisgICAgc3RydWN0IHBzdF9zdGF0aWMgcHN0X2J1ZjsKKworICAgIHBzdGF0X2dldHN0YXRpYyggJnBzdF9idWYsIHNpemVvZihzdHJ1Y3QgcHN0X3N0YXRpYyksIDEsIDApOworICAgIF9zd3J1bl9tYXggPSBwc3RfYnVmLm1heF9wcm9jOworICAgIHJldHVybjsKK30KKworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludAorbmV0c25tcF9hcmNoX3N3cnVuX2NvbnRhaW5lcl9sb2FkKCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBmbGFncykKK3sKKyAgICBzdHJ1Y3QgcHN0X3N0YXR1cyAgICpwcm9jX3RhYmxlOworICAgIHN0cnVjdCBwc3RfZHluYW1pYyAgIHBzdF9keW47CisgICAgaW50ICAgICAgICAgICAgICAgICAgbnByb2MsIGksIHJjOworICAgIGNoYXIgICAgICAgICAgICAgICAgKmNwMSwgKmNwMjsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICplbnRyeTsKKworICAgIHBzdGF0X2dldGR5bmFtaWMoICZwc3RfZHluLCBzaXplb2Yoc3RydWN0IHBzdF9keW5hbWljKSwgMSwgMCk7CisgICAgbnByb2MgPSBwc3RfZHluLnBzZF9hY3RpdmVwcm9jczsKKyAgICBwcm9jX3RhYmxlID0gKHN0cnVjdCBwc3Rfc3RhdHVzICopIG1hbGxvYyhucHJvYyooc2l6ZW9mKHN0cnVjdCBwc3Rfc3RhdHVzKSkpOworICAgIHBzdGF0X2dldHByb2MocHJvY190YWJsZSwgc2l6ZW9mKHN0cnVjdCBwc3Rfc3RhdHVzKSwgbnByb2MsIDApOworCisgICAgZm9yICggaT0wIDsgaTxucHJvYzsgaSsrICkgeworICAgICAgICBlbnRyeSA9IG5ldHNubXBfc3dydW5fZW50cnlfY3JlYXRlKHByb2NfdGFibGVbaV0ucHN0X3BpZCk7CisgICAgICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICAgICAgY29udGludWU7ICAgLyogZXJyb3IgYWxyZWFkeSBsb2dnZWQgYnkgZnVuY3Rpb24gKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworCisgICAgICAgIGVudHJ5LT5oclNXUnVuTmFtZV9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1bk5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1bk5hbWUpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLnBzdF91Y29tbSk7CisgICAgICAgIC8qCisgICAgICAgICAqICBTcGxpdCBwc3RfY21kIGludG8gdHdvOgorICAgICAgICAgKiAgICAgYXJndlswXSAgIGlzIGhyU1dSdW5QYXRoCisgICAgICAgICAqICAgICBhcmd2WzEuLl0gaXMgaHJTV1J1blBhcmFtZXRlcnMKKyAgICAgICAgICovCisgICAgICAgIGZvciAoIGNwMSA9IHByb2NfdGFibGVbaV0ucHN0X2NtZDsgJyAnID09ICpjcDE7IGNwMSsrICkKKyAgICAgICAgICAgIDsKKyAgICAgICAgKmNwMSA9ICdcMCc7ICAgIC8qIEVuZCBvZiBhcmd2WzBdICovCisgICAgICAgIGVudHJ5LT5oclNXUnVuUGF0aF9sZW4gPSBzbnByaW50ZihlbnRyeS0+aHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihlbnRyeS0+aHJTV1J1blBhdGgpLTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMiLCBwcm9jX3RhYmxlW2ldLnBzdF9jbWQpOworICAgICAgICBlbnRyeS0+aHJTV1J1blBhcmFtZXRlcnNfbGVuID0gc25wcmludGYoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmhyU1dSdW5QYXJhbWV0ZXJzKS0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzIiwgY3AxKzEpOworICAgICAgICAqY3AxID0gJyAnOyAgICAgLyogUmVzdG9yZSBwc3RfY21kIHZhbHVlICovCisKKyAgICAgICAgZW50cnktPmhyU1dSdW5UeXBlID0gKFBTX1NZUyAmIHByb2NfdGFibGVbaV0ucHN0X2ZsYWcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IDIgICAvKiBrZXJuZWwgcHJvY2VzcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiA0ICAgLyogIGFwcGxpY2F0aW9uICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDsKKworICAgICAgICBzd2l0Y2ggKHByb2NfdGFibGVbaV0ucHN0X3N0YXQpIHsKKyAgICAgICAgY2FzZSBQU19SVU46ICAgZW50cnktPmhyU1dSdW5TdGF0dXMgPSBIUlNXUlVOU1RBVFVTX1JVTk5JTkc7CisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBTX1NMRUVQOiBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBTX1NUT1A6ICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfTk9UUlVOTkFCTEU7CisgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFBTX0lETEU6CisgICAgICAgIGNhc2UgUFNfWk9NQklFOgorICAgICAgICBjYXNlIFBTX09USEVSOgorICAgICAgICBkZWZhdWx0OiAgICAgICBlbnRyeS0+aHJTV1J1blN0YXR1cyA9IEhSU1dSVU5TVEFUVVNfSU5WQUxJRDsKKyAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZDUFUgID0gcHJvY190YWJsZVtpXS5wc3RfY3B0aWNrc3RvdGFsOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gID0gcHJvY190YWJsZVtpXS5wc3RfcnNzaXplOworICAgICAgICBlbnRyeS0+aHJTV1J1blBlcmZNZW0gKj0gZ2V0cGFnZXNpemUoKSAvIDEwMjQ7ICAvKiBpbiBrQiAqLworCQkvKiBYWFggLSBDaGVjayB0aGlzIGxhc3QgY2FsY3VsYXRpb24gKi8KKyAgICB9CisgICAgZnJlZShwcm9jX3RhYmxlKTsKKworICAgIERFQlVHTVNHVEwoKCJzd3J1bjpsb2FkOmFyY2giLCIgbG9hZGVkICVkIGVudHJpZXNcbiIsCisgICAgICAgICAgICAgICAgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjQ0NzAyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXSW5zdGFsbGVkVGFibGUuYwpAQCAtMCwwICsxLDI3MiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBtaWIyYy5jb250YWluZXIuY29uZix2IDEuOCAyMDA2LzA3LzI2IDE1OjU4OjI2IGR0czEyIEV4cCAkCisgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KKyNpbmNsdWRlICJoclNXSW5zdGFsbGVkVGFibGUuaCIKKworI2RlZmluZSBNWVRBQkxFICJoclNXSW5zdGFsbGVkVGFibGUiCisKK3N0YXRpYyB2b2lkIF9jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpOworc3RhdGljIGludCBfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKTsKKworLyoqIEluaXRpYWxpemVzIHRoZSBoclNXSW5zdGFsbGVkVGFibGUgbW9kdWxlICovCit2b2lkCitpbml0X2hyU1dJbnN0YWxsZWRUYWJsZSh2b2lkKQoreworICAgIC8qCisgICAgICogaGVyZSB3ZSBpbml0aWFsaXplIGFsbCB0aGUgdGFibGVzIHdlJ3JlIHBsYW5uaW5nIG9uIHN1cHBvcnRpbmcgCisgICAgICovCisgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXSW5zdGFsbGVkVGFibGUoKTsKK30KKworLyoqIEluaXRpYWxpemUgdGhlIGhyU1dJbnN0YWxsZWRUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaHJTV0luc3RhbGxlZFRhYmxlKHZvaWQpCit7CisgICAgc3RhdGljIG9pZCAgICAgIGhyU1dJbnN0YWxsZWRUYWJsZV9vaWRbXSA9CisgICAgICAgIHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDYsIDMgfTsKKyAgICBzaXplX3QgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZF9sZW4gPQorICAgICAgICBPSURfTEVOR1RIKGhyU1dJbnN0YWxsZWRUYWJsZV9vaWQpOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZzsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyOworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisgICAgbmV0c25tcF9jYWNoZSAqY2FjaGU7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKworICAgIERFQlVHTVNHVEwoKCJoclNXSW5zdGFsbGVkIiwgImluaXRpYWxpemVcbiIpKTsKKworICAgIHJlZyA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJoclNXSW5zdGFsbGVkVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXSW5zdGFsbGVkVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWcpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgaGFuZGxlciByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImhyU1dJbnN0YWxsZWRUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBpZiAoTlVMTCA9PSB0YWJsZV9pbmZvKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGFsbG9jYXRpbmcgdGFibGUgcmVnaXN0cmF0aW9uIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgICAvKiBpbmRleDogaHJTV0luc3RhbGxlZEluZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9IUlNXSU5TVEFMTEVESU5ERVg7CisgICAgdGFibGVfaW5mby0+bWF4X2NvbHVtbiA9IENPTFVNTl9IUlNXSU5TVEFMTEVEREFURTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YWJsZV9pbmZvLCBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0NPTlRBSU5FUl9LRVlfTkVUU05NUF9JTkRFWCk7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGluamVjdGluZyBjb250YWluZXJfdGFibGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0LCB3aWxsIHJldXNlIGJlbG93ICovCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworICAgIGNhY2hlID0gbmV0c25tcF9jYWNoZV9jcmVhdGUoMzAsICAgIC8qIHRpbWVvdXQgaW4gc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV0luc3RhbGxlZFRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dJbnN0YWxsZWRUYWJsZV9vaWRfbGVuKTsKKworICAgIGlmIChOVUxMID09IGNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGNhY2hlLT5tYWdpYyA9IGNvbnRhaW5lcjsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KGNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBoYW5kbGVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBoYW5kbGVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgaGFuZGxlcikpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgaW5qZWN0aW5nIGNhY2hlIGhhbmRsZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCovCisKKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgcmV0dXJuOyAvKiBvayAqLworCisKKyAgYmFpbDogLyogbm90IG9rICovCisgICAgCisgICAgaWYgKGhhbmRsZXIpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOworCisgICAgaWYgKGNhY2hlKQorICAgICAgICBuZXRzbm1wX2NhY2hlX2ZyZWUoY2FjaGUpOworCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKworICAgIGlmIChjb250YWluZXIpCisgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CisKKyAgICBpZiAocmVnKSAKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CisKK30KKworLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBoclNXSW5zdGFsbGVkVGFibGUgdGFibGUgKi8KK2ludAoraHJTV0luc3RhbGxlZFRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICp0YWJsZV9lbnRyeTsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd2luc3RfZW50cnkgKikKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9pbmZvID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRElOREVYOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPnN3SW5kZXgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRE5BTUU6IHsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIHRhYmxlX2VudHJ5LT5zd05hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5zd05hbWVfbGVuKTsKKyAgICAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRElEOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJm51bGxPaWQsIG51bGxPaWRMZW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV0lOU1RBTExFRFRZUEU6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+c3dUeXBlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dJTlNUQUxMRUREQVRFOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGFibGVfZW50cnktPnN3RGF0ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5zd0RhdGVfbGVuKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBBbiB1bnN1cHBvcnRlZC91bnJlYWRhYmxlIGNvbHVtbiAoaWYgYXBwbGljYWJsZSkgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hPQkpFQ1QsIE5VTEwsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqIFRoZSBkYXRhIGFjY2VzcyBtZWNoYW5pc20gaGVyZSBpcyByYXRoZXIgc2ltcGxlOiBsZXQgbmV3c25tcF9zd2luc3RfKgorICogdGFrZSBjYXJlIG9mIGl0LgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgREVCVUdNU0dUTCgoImhyU1dJbnN0YWxsZWRUYWJsZTpjYWNoZSIsICJsb2FkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgZm9yIGhyU1dJbnN0YWxsZWRUYWJsZV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBzaG91bGQgb25seSBiZSBjYWxsZWQgZm9yIGFuIGludmFsaWQgb3IgZXhwaXJlZCBjYWNoZSAqLworICAgIG5ldHNubXBfYXNzZXJ0KCgwID09IGNhY2hlLT52YWxpZCkgfHwgKDEgPT0gY2FjaGUtPmV4cGlyZWQpKTsKKworICAgIGNhY2hlLT5tYWdpYyA9CisgICAgICAgIG5ldHNubXBfc3dpbnN0X2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+bWFnaWMsIDApOworCisgICAgcmV0dXJuIDA7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9sb2FkICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKm1hZ2ljKQoreworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBpbiBoclNXSW5zdGFsbGVkVGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgREVCVUdNU0dUTCgoImhyU1dJbnN0YWxsZWRUYWJsZTpjYWNoZSIsICJmcmVlXG4iKSk7CisKKyAgICBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfZnJlZV9pdGVtcygobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV0luc3RhbGxlZFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhMWRhMjMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dJbnN0YWxsZWRUYWJsZS5oCkBAIC0wLDAgKzEsMjUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMuY29udGFpbmVyLmNvbmYsdiAxLjggMjAwNi8wNy8yNiAxNTo1ODoyNiBkdHMxMiBFeHAgJAorICovCisjaWZuZGVmIEhSU1dJTlNUQUxMRURUQUJMRV9ICisjZGVmaW5lIEhSU1dJTlNUQUxMRURUQUJMRV9ICisKK2NvbmZpZ19yZXF1aXJlKGhvc3QvZGF0YV9hY2Nlc3Mvc3dpbnN0KQorCisvKgorICogZnVuY3Rpb24gZGVjbGFyYXRpb25zIAorICovCit2b2lkICAgICAgICAgICAgaW5pdF9oclNXSW5zdGFsbGVkVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9oclNXSW5zdGFsbGVkVGFibGUodm9pZCk7CitOZXRzbm1wX05vZGVfSGFuZGxlciBoclNXSW5zdGFsbGVkVGFibGVfaGFuZGxlcjsKKworLyoKKyAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGhyU1dJbnN0YWxsZWRUYWJsZSAKKyAqLworI2RlZmluZSBDT0xVTU5fSFJTV0lOU1RBTExFRElOREVYCQkxCisjZGVmaW5lIENPTFVNTl9IUlNXSU5TVEFMTEVETkFNRQkJMgorI2RlZmluZSBDT0xVTU5fSFJTV0lOU1RBTExFRElECQkzCisjZGVmaW5lIENPTFVNTl9IUlNXSU5TVEFMTEVEVFlQRQkJNAorI2RlZmluZSBDT0xVTU5fSFJTV0lOU1RBTExFRERBVEUJCTUKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSFJTV0lOU1RBTExFRFRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA2N2JiMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5jCkBAIC0wLDAgKzEsMTgzIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IG1pYjJjLmNvbnRhaW5lci5jb25mLHYgMS44IDIwMDYvMDcvMjYgMTU6NTg6MjYgZHRzMTIgRXhwICQKKyAqLworLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaD4KKyNpbmNsdWRlICJoclNXUnVuUGVyZlRhYmxlLmgiCisjaW5jbHVkZSAiZGF0YV9hY2Nlc3Mvc3dydW4uaCIKKworI2RlZmluZSBNWVRBQkxFICJoclNXUnVuUGVyZlRhYmxlIgorCisvKiogSW5pdGlhbGl6ZXMgdGhlIGhyU1dSdW5QZXJmVGFibGUgbW9kdWxlICovCit2b2lkCitpbml0X2hyU1dSdW5QZXJmVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nIAorICAgICAqLworICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blBlcmZUYWJsZSgpOworfQorCitleHRlcm4gb2lkICAgICAgaHJTV1J1blRhYmxlX29pZFtdOworZXh0ZXJuIHNpemVfdCAgIGhyU1dSdW5UYWJsZV9vaWRfbGVuOworCisvKiogSW5pdGlhbGl6ZSB0aGUgaHJTV1J1blBlcmZUYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaHJTV1J1blBlcmZUYWJsZSh2b2lkKQoreworICAgIHN0YXRpYyBvaWQgICAgICBoclNXUnVuUGVyZlRhYmxlX29pZFtdID0KKyAgICAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgNSwgMSB9OworICAgIHNpemVfdCAgICAgICAgICBoclNXUnVuUGVyZlRhYmxlX29pZF9sZW4gPQorICAgICAgICBPSURfTEVOR1RIKGhyU1dSdW5QZXJmVGFibGVfb2lkKTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWc7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworCisgICAgcmVnID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImhyU1dSdW5QZXJmVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuUGVyZlRhYmxlX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dSdW5QZXJmVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuUGVyZlRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWcpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgaGFuZGxlciByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgICAvKiBpbmRleDogaHJTV1J1bkluZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisgICAgdGFibGVfaW5mby0+bWluX2NvbHVtbiA9IENPTFVNTl9IUlNXUlVOUEVSRkNQVTsKKyAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OX0hSU1dSVU5QRVJGTUVNOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjb250YWluZXJfdGFibGUgaGVscGVyCisgICAgICovCisgICAgaGFuZGxlciA9IG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KHRhYmxlX2luZm8sIG5ldHNubXBfc3dydW5fY29udGFpbmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBQkxFX0NPTlRBSU5FUl9LRVlfTkVUU05NUF9JTkRFWCk7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGluamVjdGluZyBjb250YWluZXJfdGFibGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0LCB3aWxsIHJldXNlIGJlbG93ICovCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworCisgICAgaGFuZGxlciA9IG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQobmV0c25tcF9zd3J1bl9jYWNoZSgpKTsKKyAgICBpZiAoTlVMTCA9PSBoYW5kbGVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBoYW5kbGVyIGZvciAiIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBoYW5kbGVyKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBpbmplY3RpbmcgY2FjaGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGhhbmRsZXIgPSBOVUxMOyAvKiByZWcgaGFzIGl0Ki8KKworICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIHJlZ2lzdGVyaW5nIHRhYmxlIGhhbmRsZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICByZXR1cm47IC8qIG9rICovCisKKworICBiYWlsOiAvKiBub3Qgb2sgKi8KKyAgICAKKyAgICBpZiAoaGFuZGxlcikKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CisKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCisgICAgaWYgKHJlZykgCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShyZWcpOworfQorCisvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIGhyU1dSdW5QZXJmVGFibGUgdGFibGUgKi8KK2ludAoraHJTV1J1blBlcmZUYWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisKKyAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICp0YWJsZV9lbnRyeTsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd3J1bl9lbnRyeSAqKQorICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOUEVSRkNQVToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuUGVyZkNQVSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOUEVSRk1FTToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuUGVyZk1lbSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogQW4gdW5zdXBwb3J0ZWQvdW5yZWFkYWJsZSBjb2x1bW4gKGlmIGFwcGxpY2FibGUpIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNIT0JKRUNULCBOVUxMLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuUGVyZlRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc5MzYyNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blBlcmZUYWJsZS5oCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMuY29udGFpbmVyLmNvbmYsdiAxLjggMjAwNi8wNy8yNiAxNTo1ODoyNiBkdHMxMiBFeHAgJAorICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgSFJTV1JVTlBFUkZUQUJMRV9ICisjZGVmaW5lIEhSU1dSVU5QRVJGVEFCTEVfSAorCitjb25maWdfcmVxdWlyZShob3N0L2hyU1dSdW5UYWJsZSkKKworLyoKKyAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKKyAqLwordm9pZCAgICAgICAgICAgIGluaXRfaHJTV1J1blBlcmZUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2hyU1dSdW5QZXJmVGFibGUodm9pZCk7CitOZXRzbm1wX05vZGVfSGFuZGxlciBoclNXUnVuUGVyZlRhYmxlX2hhbmRsZXI7CisKKy8qCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBoclNXUnVuUGVyZlRhYmxlIAorICovCisjZGVmaW5lIENPTFVNTl9IUlNXUlVOUEVSRkNQVQkJMQorI2RlZmluZSBDT0xVTU5fSFJTV1JVTlBFUkZNRU0JCTIKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSFJTV1JVTlBFUkZUQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDlmNThmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9oclNXUnVuVGFibGUuYwpAQCAtMCwwICsxLDMzNSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBtaWIyYy5jb250YWluZXIuY29uZix2IDEuOCAyMDA2LzA3LzI2IDE1OjU4OjI2IGR0czEyIEV4cCAkCisgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oPgorI2luY2x1ZGUgImhyU1dSdW5UYWJsZS5oIgorI2luY2x1ZGUgImRhdGFfYWNjZXNzL3N3cnVuLmgiCisKKyNpbmNsdWRlIDxzaWduYWwuaD4KKworI2RlZmluZSBNWVRBQkxFICJoclNXUnVuVGFibGUiCisKKy8qKiBJbml0aWFsaXplcyB0aGUgaHJTV1J1blRhYmxlIG1vZHVsZSAqLwordm9pZAoraW5pdF9oclNXUnVuVGFibGUodm9pZCkKK3sKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nIAorICAgICAqLworICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blRhYmxlKCk7Cit9CisKK29pZCAgICAgIGhyU1dSdW5UYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDQsIDIgfTsKK3NpemVfdCAgIGhyU1dSdW5UYWJsZV9vaWRfbGVuID0gT0lEX0xFTkdUSChoclNXUnVuVGFibGVfb2lkKTsKKworLyoqIEluaXRpYWxpemUgdGhlIGhyU1dSdW5UYWJsZSB0YWJsZSBieSBkZWZpbmluZyBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaHJTV1J1blRhYmxlKHZvaWQpCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnOworICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIgPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOworCisjaWZkZWYgTkVUU05NUF9JTkNMVURFX0hSU1dSVU5fV1JJVEVfU1VQUE9SVAorIyAgZGVmaW5lIFNXUlVOX0FDQ0VTU19MRVZFTCBIQU5ETEVSX0NBTl9SV1JJVEUKKyNlbHNlCisjICBkZWZpbmUgU1dSVU5fQUNDRVNTX0xFVkVMIEhBTkRMRVJfQ0FOX1JPTkxZCisjZW5kaWYKKyAgICByZWcgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbihNWVRBQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuVGFibGVfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blRhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blRhYmxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNXUlVOX0FDQ0VTU19MRVZFTCk7CisgICAgaWYgKE5VTEwgPT0gcmVnKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGNyZWF0aW5nIGhhbmRsZXIgcmVnaXN0cmF0aW9uIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgcmVnLT5tb2RlcyB8PSBIQU5ETEVSX0NBTl9OT1RfQ1JFQVRFOworCisgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisgICAgaWYgKE5VTEwgPT0gdGFibGVfaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBhbGxvY2F0aW5nIHRhYmxlIHJlZ2lzdHJhdGlvbiBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywgQVNOX0lOVEVHRVIsICAgLyogaW5kZXg6IGhyU1dSdW5JbmRleCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fSFJTV1JVTklOREVYOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fSFJTV1JVTlNUQVRVUzsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY29udGFpbmVyX3RhYmxlIGhlbHBlcgorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9oYW5kbGVyX2dldCh0YWJsZV9pbmZvLCBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIGlmIChOVUxMID09IGhhbmRsZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBoYW5kbGVyKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBpbmplY3RpbmcgY29udGFpbmVyX3RhYmxlIGhhbmRsZXIgZm9yICIKKyAgICAgICAgICAgICAgICAgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCwgd2lsbCByZXVzZSBiZWxvdyAqLworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjYWNoZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChuZXRzbm1wX3N3cnVuX2NhY2hlKCkpOworICAgIGlmIChOVUxMID09IGhhbmRsZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNhY2hlIGhhbmRsZXIgZm9yICIgTVlUQUJMRSAiXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIGhhbmRsZXIpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIGluamVjdGluZyBjYWNoZSBoYW5kbGVyIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgaGFuZGxlciA9IE5VTEw7IC8qIHJlZyBoYXMgaXQqLworCisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZywgdGFibGVfaW5mbykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIHJldHVybjsgLyogb2sgKi8KKworCisgIGJhaWw6IC8qIG5vdCBvayAqLworICAgIAorICAgIGlmIChoYW5kbGVyKQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKKworICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CisKKyAgICBpZiAocmVnKSAKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZyk7CisKK30KKworLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSBoclNXUnVuVGFibGUgdGFibGUgKi8KK2ludAoraHJTV1J1blRhYmxlX2hhbmRsZXIobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICp0YWJsZV9lbnRyeTsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICAvKgorICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdCA9IHJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0ID0gcmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd3J1bl9lbnRyeSAqKQorICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOSU5ERVg6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+aHJTV1J1bkluZGV4KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dSVU5OQU1FOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgdGFibGVfZW50cnktPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoclNXUnVuTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5OYW1lX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOSUQ6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX09CSkVDVF9JRCwKKyNpZmRlZiBORVRTTk1QX1NXUlVOX0hBVkVfSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSB0YWJsZV9lbnRyeS0+aHJTV1J1bklELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+aHJTV1J1bklEX2xlbgorI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmbnVsbE9pZCwgbnVsbE9pZExlbgorI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOUEFUSDoKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopIHRhYmxlX2VudHJ5LT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHJTV1J1blBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuUGF0aF9sZW4pOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fSFJTV1JVTlBBUkFNRVRFUlM6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dSdW5QYXJhbWV0ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhyU1dSdW5QYXJhbWV0ZXJzX2xlbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOVFlQRToKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlcihyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5oclNXUnVuVHlwZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOU1RBVFVTOgorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXMpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIEFuIHVuc3VwcG9ydGVkL3VucmVhZGFibGUgY29sdW1uIChpZiBhcHBsaWNhYmxlKSAKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSE9CSkVDVCwgTlVMTCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyNpZmRlZiBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9XUklURV9TVVBQT1JUCisgICAgICAgIC8qCisgICAgICAgICAqIFdyaXRlLXN1cHBvcnQKKyAgICAgICAgICovCisgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBpbnQgcGlkOworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAobmV0c25tcF9zd3J1bl9lbnRyeSAqKQorICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgIgorICAgICAgICAgICAgICAgICBNWVRBQkxFICJcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX0dFTkVSUiwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9IUlNXUlVOU1RBVFVTOgorICAgICAgICAgICAgICAgIGlmICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlciAhPSBIUlNXUlVOU1RBVFVTX0lOVkFMSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1dST05HVkFMVUUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGlkID0gcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lW3JlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGgtMV07CisgICAgICAgICAgICAgICAgaWYgKDEgPT0gcGlkKSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCJyZWZ1c2luZyB0byBraWxsIHBpZCAxXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX05PQUNDRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT1RXUklUQUJMRSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChuZXRzbm1wX3N3cnVuX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dSVU5TVEFUVVM6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9oclNXUnVuU3RhdHVzID0KKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXM7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXMgPQorICAgICAgICAgICAgICAgICAgICAqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKKyAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChuZXRzbm1wX3N3cnVuX2VudHJ5ICopCisgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAiCisgICAgICAgICAgICAgICAgIE1ZVEFCTEUgIlxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OX0hSU1dSVU5TVEFUVVM6CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPmhyU1dSdW5TdGF0dXMgPQorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkX2hyU1dSdW5TdGF0dXM7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF9oclNXUnVuU3RhdHVzID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfQ09NTUlUOgorICAgICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIGludCBwaWQ7CisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBwaWQgPSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWVbcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aC0xXTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJoclNXUnVuVGFibGU6Y29tbWl0IiwgImtpbGwoJWQsVEVSTSlcbiIsIHBpZCkpOworICAgICAgICAgICAga2lsbChwaWQsIFNJR1RFUk0pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworI2VuZGlmIC8qIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQgKi8KKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJTV1J1blRhYmxlLmggYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYTQ5ODkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyU1dSdW5UYWJsZS5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogbWliMmMuY29udGFpbmVyLmNvbmYsdiAxLjggMjAwNi8wNy8yNiAxNTo1ODoyNiBkdHMxMiBFeHAgJAorICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgSFJTV1JVTlRBQkxFX0gKKyNkZWZpbmUgSFJTV1JVTlRBQkxFX0gKKworY29uZmlnX3JlcXVpcmUoaG9zdC9kYXRhX2FjY2Vzcy9zd3J1bikKK2NvbmZpZ19yZXF1aXJlKGhvc3QvaHJTV1J1blBlcmZUYWJsZSkKKworLyoKKyAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAKKyAqLwordm9pZCAgICAgICAgICAgIGluaXRfaHJTV1J1blRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfaHJTV1J1blRhYmxlKHZvaWQpOworTmV0c25tcF9Ob2RlX0hhbmRsZXIgaHJTV1J1blRhYmxlX2hhbmRsZXI7CisKKy8qCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBoclNXUnVuVGFibGUgCisgKi8KKyNkZWZpbmUgQ09MVU1OX0hSU1dSVU5JTkRFWAkJMQorI2RlZmluZSBDT0xVTU5fSFJTV1JVTk5BTUUJCTIKKyNkZWZpbmUgQ09MVU1OX0hSU1dSVU5JRAkJMworI2RlZmluZSBDT0xVTU5fSFJTV1JVTlBBVEgJCTQKKyNkZWZpbmUgQ09MVU1OX0hSU1dSVU5QQVJBTUVURVJTCQk1CisjZGVmaW5lIENPTFVNTl9IUlNXUlVOVFlQRQkJNgorI2RlZmluZSBDT0xVTU5fSFJTV1JVTlNUQVRVUwkJNworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBIUlNXUlVOVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGV2aWNlLmMKaW5kZXggN2IxMzY0ZC4uMjQwMzFiZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kZXZpY2UuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2RldmljZS5jCkBAIC02MywxMiArNjMsMTggQEAKICNkZWZpbmUJSFJERVZfRVJST1JTCQk2CiAKIHN0cnVjdCB2YXJpYWJsZTQgaHJkZXZpY2VfdmFyaWFibGVzW10gPSB7Ci0gICAge0hSREVWX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmRldmljZSwgMiwgezEsIDF9fSwKLSAgICB7SFJERVZfVFlQRSwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9ocmRldmljZSwgMiwgezEsIDJ9fSwKLSAgICB7SFJERVZfREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJkZXZpY2UsIDIsIHsxLCAzfX0sCi0gICAge0hSREVWX0lELCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNH19LAotICAgIHtIUkRFVl9TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNX19LAotICAgIHtIUkRFVl9FUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNn19CisgICAge0hSREVWX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRldmljZSwgMiwgezEsIDF9fSwKKyAgICB7SFJERVZfVFlQRSwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRldmljZSwgMiwgezEsIDJ9fSwKKyAgICB7SFJERVZfREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJkZXZpY2UsIDIsIHsxLCAzfX0sCisgICAge0hSREVWX0lELCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNH19LAorICAgIHtIUkRFVl9TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNX19LAorICAgIHtIUkRFVl9FUlJPUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGV2aWNlLCAyLCB7MSwgNn19CiB9Owogb2lkICAgICAgICAgICAgIGhyZGV2aWNlX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDMsIDIgfTsKIApAQCAtMTkxLDcgKzE5Nyw3IEBACiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCiAgICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOwogICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7Ci0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwogCiAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZGV2aWNlIiwgIi4uLiBnZXQgZGV2aWNlIHN0YXRzICIpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMKaW5kZXggZjM2NzliNS4uNzcyNWZhOCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9kaXNrLmMKQEAgLTIsNiArMiwxNiBAQAogICogIEhvc3QgUmVzb3VyY2VzIE1JQiAtIGRpc2sgZGV2aWNlIGdyb3VwIGltcGxlbWVudGF0aW9uIC0gaHJfZGlzay5jCiAgKgogICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgImhvc3RfcmVzLmgiCkBAIC02MSwxMCArNzEsMjMgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaWYgZGVmaW5lZChIQVZFX1JFR0VYX0gpICYmIGRlZmluZWQoSEFWRV9SRUdDT01QKQorI2luY2x1ZGUgPHJlZ2V4Lmg+CisjZW5kaWYKKwogI2lmIEhBVkVfTElNSVRTX0gKICNpbmNsdWRlIDxsaW1pdHMuaD4KICNlbmRpZgogCisjaWZkZWYgZGFyd2luCisjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ29yZUZvdW5kYXRpb24uaD4KKyNpbmNsdWRlIDxJT0tpdC9JT0tpdExpYi5oPgorI2luY2x1ZGUgPElPS2l0L3N0b3JhZ2UvSU9CbG9ja1N0b3JhZ2VEcml2ZXIuaD4KKyNpbmNsdWRlIDxJT0tpdC9zdG9yYWdlL0lPTWVkaWEuaD4KKyNpbmNsdWRlIDxJT0tpdC9JT0JTRC5oPgorI2luY2x1ZGUgPERpc2tBcmJpdHJhdGlvbi9EQURpc2suaD4KKyNlbmRpZgorCiAjaWZkZWYgbGludXgKIC8qCiAgKiBkZWZpbmUgQkxLR0VUU0laRSBmcm9tIDxsaW51eC9mcy5oPjoKQEAgLTc5LDYgKzEwMiwyNyBAQAogCiAjZGVmaW5lIEhSRF9NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKIAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnN0YW50cyBmb3IgZW51bXMgZm9yIHRoZSBNSUIgbm9kZQorICogaHJEaXNrU3RvcmFnZUFjY2VzcyAoSU5URUdFUiAvIEFTTl9JTlRFR0VSKQorICovCisjZGVmaW5lIEhSRElTS1NUT1JBR0VBQ0NFU1NfUkVBRFdSSVRFICAxCisjZGVmaW5lIEhSRElTS1NUT1JBR0VBQ0NFU1NfUkVBRE9OTFkgIDIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBockRpc2tTdG9yYWdlTWVkaWEgKElOVEVHRVIgLyBBU05fSU5URUdFUikKKyAqLworI2RlZmluZSBIUkRJU0tTVE9SQUdFTUVESUFfT1RIRVIgIDEKKyNkZWZpbmUgSFJESVNLU1RPUkFHRU1FRElBX1VOS05PV04gIDIKKyNkZWZpbmUgSFJESVNLU1RPUkFHRU1FRElBX0hBUkRESVNLICAzCisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9GTE9QUFlESVNLICA0CisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1JPTSAgNQorI2RlZmluZSBIUkRJU0tTVE9SQUdFTUVESUFfT1BUSUNBTERJU0tXT1JNICA2CisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1JXICA3CisjZGVmaW5lIEhSRElTS1NUT1JBR0VNRURJQV9SQU1ESVNLICA4CisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEtlcm5lbCAmIGludGVyZmFjZSBpbmZvcm1hdGlvbiwKQEAgLTEzMiw5ICsxNzYsMjUgQEAKIHN0YXRpYyBzdHJ1Y3QgZGlza2xhYmVsIEhSRF9pbmZvOwogI2VuZGlmCiAKKyNpZmRlZiBkYXJ3aW4KK3N0YXRpYyBpbnQ2NF90ICBIUkRfY2FwOworc3RhdGljIGludCAgICAgIEhSRF9hY2Nlc3M7CitzdGF0aWMgaW50ICAgICAgSFJEX3R5cGU7CitzdGF0aWMgaW50ICAgICAgSFJEX3JlbW92ZWJsZTsKK3N0YXRpYyBjaGFyICAgICBIUkRfbW9kZWxbNDBdOworc3RhdGljIGludCAgICAgIEhSRF9zYXZlZF9hY2Nlc3M7CitzdGF0aWMgaW50ICAgICAgSFJEX3NhdmVkX3R5cGU7CitzdGF0aWMgaW50ICAgICAgSFJEX3NhdmVkX3JlbW92ZWJsZTsKK3N0YXRpYyBpbnQgX2dldF90eXBlX2Zyb21fcHJvdG9jb2woIGNvbnN0IGNoYXIgKnByb3QgKTsKK3N0YXRpYyBpbnQgX2dldF90eXBlX3ZhbHVlKCBjb25zdCBjaGFyICpzdHJfdHlwZSApOworI2VuZGlmCisKIHN0YXRpYyB2b2lkICAgICBwYXJzZV9kaXNrX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7CiBzdGF0aWMgdm9pZCAgICAgZnJlZV9kaXNrX2NvbmZpZyh2b2lkKTsKIAorc3RhdGljIHZvaWQgICAgIEFkZF9MVk1fRGlza3Modm9pZCk7CitzdGF0aWMgdm9pZCAgICAgUmVtb3ZlX0xWTV9EaXNrcyh2b2lkKTsKKwogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKIAkgKiAgSW5pdGlhbGlzYXRpb24gJiBjb21tb24gaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCkBAIC0xNDcsMTAgKzIwNywxNCBAQAogI2RlZmluZQlIUkRJU0tfQ0FQQUNJVFkJCTQKIAogc3RydWN0IHZhcmlhYmxlNCBocmRpc2tfdmFyaWFibGVzW10gPSB7Ci0gICAge0hSRElTS19BQ0NFU1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZGlzaywgMiwgezEsIDF9fSwKLSAgICB7SFJESVNLX01FRElBLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmRpc2ssIDIsIHsxLCAyfX0sCi0gICAge0hSRElTS19SRU1PVkVBQkxFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmRpc2ssIDIsIHsxLCAzfX0sCi0gICAge0hSRElTS19DQVBBQ0lUWSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJkaXNrLCAyLCB7MSwgNH19CisgICAge0hSRElTS19BQ0NFU1MsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZGlzaywgMiwgezEsIDF9fSwKKyAgICB7SFJESVNLX01FRElBLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRpc2ssIDIsIHsxLCAyfX0sCisgICAge0hSRElTS19SRU1PVkVBQkxFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmRpc2ssIDIsIHsxLCAzfX0sCisgICAge0hSRElTS19DQVBBQ0lUWSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJkaXNrLCAyLCB7MSwgNH19CiB9Owogb2lkICAgICAgICAgICAgIGhyZGlza192YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAzLCA2IH07CiAKQEAgLTE3Miw2ICsyMzYsOSBAQAogICAgIEFkZF9IUl9EaXNrX2VudHJ5KCIvZGV2L3NkJWMlZCIsIC0xLCAtMSwgJ2EnLCAncCcsICIvZGV2L3NkJWMiLCAxLCAxNSk7CiAgICAgQWRkX0hSX0Rpc2tfZW50cnkoIi9kZXYvbWQlZCIsIC0xLCAtMSwgMCwgMywgIi9kZXYvbWQlZCIsIDAsIDApOwogICAgIEFkZF9IUl9EaXNrX2VudHJ5KCIvZGV2L2ZkJWQiLCAtMSwgLTEsIDAsIDEsICIvZGV2L2ZkJWQiLCAwLCAwKTsKKworICAgIEFkZF9MVk1fRGlza3MoKTsKKwogI2VsaWYgZGVmaW5lZChocHV4KQogI2lmIGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkKICAgICBBZGRfSFJfRGlza19lbnRyeSgiL2Rldi9yZHNrL2MlZHQleGQlZCIsIDAsIDEsIDAsIDE1LApAQCAtMTg1LDYgKzI1Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgIi9kZXYvcmRzay9jJWR0JWRkMHMwIiwgMCwgNyk7CiAgICAgQWRkX0hSX0Rpc2tfZW50cnkoIi9kZXYvcmRzay9jJWRkJWRzJWQiLCAwLCA3LCAwLCAxNSwKICAgICAgICAgICAgICAgICAgICAgICAiL2Rldi9yZHNrL2MlZGQlZHMwIiwgMCwgNyk7CisjZWxpZiBkZWZpbmVkKGRhcndpbikKKyAgICBBZGRfSFJfRGlza19lbnRyeSgiL2Rldi9kaXNrJWRzJWQiLCAtMSwgLTEsIDAsIDMyLCAiL2Rldi9kaXNrJWQiLCAxLCAzMik7CiAjZWxpZiBkZWZpbmVkKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQogICAgIEFkZF9IUl9EaXNrX2VudHJ5KCIvZGV2L2FkJWRzJWQlYyIsIDAsIDEsIDEsIDQsICIvZGV2L2FkJWRzJWQiLCAnYScsICdoJyk7CiAgICAgQWRkX0hSX0Rpc2tfZW50cnkoIi9kZXYvZGElZHMlZCVjIiwgMCwgMSwgMSwgNCwgIi9kZXYvZGElZHMlZCIsICdhJywgJ2gnKTsKQEAgLTIxNSw2ICsyODQsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlX2Rpc2tfY29uZmlnLCAibmFtZSIpOwogfQogCit2b2lkCitzaHV0ZG93bl9ocl9kaXNrKHZvaWQpCit7CisgICAgUmVtb3ZlX0xWTV9EaXNrcygpOworfQorCiAjZGVmaW5lIElURU1fU1RSSU5HCTEKICNkZWZpbmUgSVRFTV9TRVQJMgogI2RlZmluZSBJVEVNX1NUQVIJMwpAQCAtMjQwLDEyICszMTUsMTIgQEAKIHN0YXRpYyB2b2lkCiBwYXJzZV9kaXNrX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBjb25mX2Rpc2tfbGlzdCAqZF9uZXcgPSAwOwotICAgIGNvbmZfZGlza19pdGVtICpkaV9jdXJyID0gMDsKLSAgICBkZXRhaWxzX3NldCAgICAqZF9zZXQgPSAwOwotICAgIGNoYXIgICAgICAgICAgICpuYW1lID0gMCwgKnAgPSAwLCAqZF9zdHIgPSAwLCBjOworICAgIGNvbmZfZGlza19saXN0ICpkX25ldyA9IE5VTEw7CisgICAgY29uZl9kaXNrX2l0ZW0gKmRpX2N1cnIgPSBOVUxMOworICAgIGRldGFpbHNfc2V0ICAgICpkX3NldCA9IE5VTEw7CisgICAgY2hhciAgICAgICAgICAgKm5hbWUgPSBOVUxMLCAqcCA9IE5VTEwsICpkX3N0ciA9IE5VTEwsIGM7CiAgICAgdW5zaWduZWQgaW50ICAgIGksIG5lZywgYzEsIGMyOwotICAgIGNoYXIgICAgICAgICAgICpzdCA9IDA7CisgICAgY2hhciAgICAgICAgICAgKnN0ID0gTlVMTDsKIAogICAgIG5hbWUgPSBzdHJ0b2tfcihjcHRyLCAiIFx0IiwgJnN0KTsKICAgICBpZiAoIW5hbWUpIHsKQEAgLTQ4Miw2ICs1NTcsNyBAQAogICAgIEluaXRfSFJfRGlzaygpOwogICAgIGZvciAoOzspIHsKICAgICAgICAgZGlza19pZHggPSBHZXRfTmV4dF9IUl9EaXNrKCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLCAiLi4uIGluZGV4ICVkXG4iLCBkaXNrX2lkeCkpOwogICAgICAgICBpZiAoZGlza19pZHggPT0gLTEpCiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgbmV3bmFtZVtIUkRJU0tfRU5UUllfTkFNRV9MRU5HVEhdID0gZGlza19pZHg7CkBAIC01MTIsNyArNTg4LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKChpbnQpIHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwgIi4uLiBnZXQgZGlzayBzdGF0cyAiKSk7CkBAIC02MDEsNyArNjc3LDcgQEAKIAogICAgIHdoaWxlIChmaXJzdF9jdGwgPD0gbGFzdF9jdGwpIHsKICAgICAgIGZvciAobG9kZXYgPSBmaXJzdF9kZXY7Ci0gICAgICAgICAgIGxvZGV2IDwgbGFzdF9kZXYgJiYgTUFYX05VTUJFUl9ESVNLX1RZUEVTID4gSFJfbnVtYmVyX2Rpc2tfdHlwZXM7CisgICAgICAgICAgIGxvZGV2IDw9IGxhc3RfZGV2ICYmIE1BWF9OVU1CRVJfRElTS19UWVBFUyA+IEhSX251bWJlcl9kaXNrX3R5cGVzOwogICAgICAgICAgICBsb2RldiArPSAoMStNQVhfRElTS1NfUEVSX1RZUEUpLCBIUl9udW1iZXJfZGlza190eXBlcysrKQogICAgICAgewogICAgICAgICBuYnJfY3JlYXRlZCsrOwpAQCAtNjU2LDE0ICs3MzIsMTQgQEAKIGludAogR2V0X05leHRfSFJfRGlzayh2b2lkKQogewotICAgIGNoYXIgICAgICAgICAgICBzdHJpbmdbMTAyNF07CisgICAgY2hhciAgICAgICAgICAgIHN0cmluZ1tQQVRIX01BWCsxXTsKICAgICBpbnQgICAgICAgICAgICAgZmQsIHJlc3VsdDsKICAgICBpbnQgICAgICAgICAgICAgaWluZGV4OwogICAgIGludCAgICAgICAgICAgICBtYXhfZGlza3M7CiAgICAgdGltZV90ICAgICAgICAgIG5vdzsKIAogICAgIEhSRF9pbmRleCsrOwotICAgICh2b2lkICopIHRpbWUoJm5vdyk7CisgICAgdGltZSgmbm93KTsKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwgIk5leHRfRGlzayB0eXBlICVkIG9mICVkXG4iLAogICAgICAgICAgICAgICAgIEhSRF90eXBlX2luZGV4LCBIUl9udW1iZXJfZGlza190eXBlcykpOwogICAgIHdoaWxlIChIUkRfdHlwZV9pbmRleCA8IEhSX251bWJlcl9kaXNrX3R5cGVzKSB7CkBAIC02OTcsNiArNzczLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2tfZGV2aWNlc1tIUkRfdHlwZV9pbmRleF0uZGlza19jb250cm9sbGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmljZV9maXJzdCArCiAgICAgICAgICAgICAgICAgICAgICAgICBIUkRfaW5kZXgpOworCSAgICB9IGVsc2UgaWYgKGRpc2tfZGV2aWNlc1tIUkRfdHlwZV9pbmRleF0uZGlza19kZXZpY2VfZmlyc3QgPT0gZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmljZV9sYXN0KSB7CisJCS8qIGV4YWN0IGRldmljZSBuYW1lICovCisJCXNucHJpbnRmKHN0cmluZywgc2l6ZW9mKHN0cmluZyktMSwgIiVzIiwgZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmZ1bGxfc3RyaW5nKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgc25wcmludGYoc3RyaW5nLCBzaXplb2Yoc3RyaW5nKS0xLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza19kZXZpY2VzW0hSRF90eXBlX2luZGV4XS5kaXNrX2RldmZ1bGxfc3RyaW5nLApAQCAtNzQ3LDYgKzgyNiwxMiBAQAogICAgICAgICAgICAgICAgICAgICBIUkRfaGlzdG9yeVtpaW5kZXhdID0gMDsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuICgoSFJERVZfRElTSyA8PCBIUkRFVl9UWVBFX1NISUZUKSArIGlpbmRleCk7CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHZXRfTmV4dF9IUl9EaXNrOiBjYW4ndCBxdWVyeSAlc1xuIiwgc3RyaW5nKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiR2V0X05leHRfSFJfRGlzazogY2FuJ3Qgb3BlbiAlc1xuIiwgc3RyaW5nKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBIUkRfaGlzdG9yeVtpaW5kZXhdID0gbm93OwogICAgICAgICAgICAgSFJEX2luZGV4Kys7CkBAIC03OTksNiArODg0LDYyIEBACiAgICAgcmV0dXJuIDA7CiB9CiAKKyNpZmRlZiBkYXJ3aW4KK2ludAorR2V0X0hSX0Rpc2tfTGFiZWwoY2hhciAqc3RyaW5nLCBzaXplX3Qgc3RyX2xlbiwgY29uc3QgY2hhciAqZGV2ZnVsbCkKK3sKKyAgICBEQVNlc3Npb25SZWYgICAgICAgIHNlc3NfcmVmOworICAgIERBRGlza1JlZiAgICAgICAgICAgZGlzazsKKyAgICBDRkRpY3Rpb25hcnlSZWYgICAgIGRlc2M7CisgICAgQ0ZTdHJpbmdSZWYgICAgICAgICBzdHJfcmVmOworICAgIENGU3RyaW5nRW5jb2RpbmcgICAgc3lzX2VuY29kaW5nID0gQ0ZTdHJpbmdHZXRTeXN0ZW1FbmNvZGluZygpOworCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZGlzayIsICJEaXNrIExhYmVsIHR5cGUgJXNcbiIsIGRldmZ1bGwpKTsKKworICAgIHNlc3NfcmVmID0gREFTZXNzaW9uQ3JlYXRlKCBOVUxMICk7CisgICAgaWYgKE5VTEwgPT0gc2Vzc19yZWYpIHsKKyAgICAgICAgc3RybGNweShzdHJpbmcsIGRldmZ1bGwsIHN0cl9sZW4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZGlzayA9IERBRGlza0NyZWF0ZUZyb21CU0ROYW1lKCBOVUxMLCBzZXNzX3JlZiwgZGV2ZnVsbCApOworICAgIGlmIChOVUxMID09IGRpc2spIHsKKyAgICAgICAgQ0ZSZWxlYXNlKHNlc3NfcmVmKTsKKyAgICAgICAgc3RybGNweShzdHJpbmcsIGRldmZ1bGwsIHN0cl9sZW4pOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZGVzYyA9IERBRGlza0NvcHlEZXNjcmlwdGlvbiggZGlzayApOworICAgIGlmIChOVUxMID09IGRlc2MpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImRpc2ttZ3I6IGNvdWxkbid0IGdldCBkaXNrIGRlc2NyaXB0aW9uIGZvciAlcywgc2tpcHBpbmdcbiIsCisgICAgICAgICAgICAgICAgIGRldmZ1bGwpOworICAgICAgICBDRlJlbGVhc2UoZGlzayk7CisgICAgICAgIENGUmVsZWFzZShzZXNzX3JlZik7CisgICAgICAgIHN0cmxjcHkoc3RyaW5nLCBkZXZmdWxsLCBzdHJfbGVuKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiBtb2RlbCAqLworICAgIHN0cl9yZWYgPSAoQ0ZTdHJpbmdSZWYpCisgICAgICAgIENGRGljdGlvbmFyeUdldFZhbHVlKGRlc2MsIGtEQURpc2tEZXNjcmlwdGlvbk1lZGlhTmFtZUtleSk7CisgICAgaWYgKHN0cl9yZWYpIHsKKyAgICAgICAgc3RybGNweShzdHJpbmcsIENGU3RyaW5nR2V0Q1N0cmluZ1B0cihzdHJfcmVmLCBzeXNfZW5jb2RpbmcpLAorICAgICAgICAgICAgICAgIHN0cl9sZW4pOworICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkaXNrbWdyOmRhcndpbiIsICIgbmFtZSAlc1xuIiwgc3RyaW5nKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdHJsY3B5KHN0cmluZywgZGV2ZnVsbCwgc3RyX2xlbik7CisgICAgfQorICAgIAorICAgIENGUmVsZWFzZShkaXNrKTsKKyAgICBDRlJlbGVhc2UoZGVzYyk7CisgICAgQ0ZSZWxlYXNlKHNlc3NfcmVmKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorCiBzdGF0aWMgdm9pZAogU2F2ZV9IUl9EaXNrX1NwZWNpZmljKHZvaWQpCiB7CkBAIC04MjAsNiArOTYxLDEzIEBACiAjaWZkZWYgRElPQ0dESU5GTwogICAgIEhSRF9zYXZlZENhcGFjaXR5ID0gSFJEX2luZm8uZF9zZWNwZXJ1bml0IC8gMjsKICNlbmRpZgorI2lmZGVmIGRhcndpbgorICAgIEhSRF9zYXZlZENhcGFjaXR5ID0gSFJEX2NhcCAvIDEwMjQ7CisgICAgSFJEX3NhdmVkX2FjY2VzcyA9IEhSRF9hY2Nlc3M7CisgICAgSFJEX3NhdmVkX3R5cGUgPSBIUkRfdHlwZTsKKyAgICBIUkRfc2F2ZWRfcmVtb3ZlYmxlID0gSFJEX3JlbW92ZWJsZTsKKyNlbmRpZgorCiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04MzksNiArOTg3LDkgQEAKICAgICBzdHJsY3B5KEhSRF9zYXZlZE1vZGVsLCBka3R5cGVuYW1lc1tIUkRfaW5mby5kX3R5cGVdLAogICAgICAgICAgICAgc2l6ZW9mKEhSRF9zYXZlZE1vZGVsKSk7CiAjZW5kaWYKKyNpZmRlZiBkYXJ3aW4KKyAgICBzdHJsY3B5KEhSRF9zYXZlZE1vZGVsLCBIUkRfbW9kZWwsIHNpemVvZihIUkRfc2F2ZWRNb2RlbCkpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBjb25zdCBjaGFyICoKQEAgLTg3MSw3ICsxMDIyLDcgQEAKICNpZmRlZiBIQVZFX0xJTlVYX0hEUkVHX0gKICAgICBpZiAoSFJEX3R5cGVfaW5kZXggPT0gMCkgICAgLyogSURFIGhhcmQgZGlzayAqLwogICAgICAgICByZXN1bHQgPSBpb2N0bChmZCwgSERJT19HRVRfSURFTlRJVFksICZIUkRfaW5mbyk7Ci0gICAgZWxzZSBpZiAoSFJEX3R5cGVfaW5kZXggPD0gMikgeyAgICAgLyogU0NTSSBoYXJkIGRpc2sgYW5kIG1kIGRldmljZXMgKi8KKyAgICBlbHNlIGlmIChIUkRfdHlwZV9pbmRleCAhPSAzKSB7ICAgICAvKiBTQ1NJIGhhcmQgZGlzaywgbWQgYW5kIExWTSBkZXZpY2VzICovCiAgICAgICAgIGxvbmcgICAgICAgICAgICBoOwogICAgICAgICByZXN1bHQgPSBpb2N0bChmZCwgQkxLR0VUU0laRSwgJmgpOwogICAgICAgICBpZiAocmVzdWx0ICE9IC0xICYmIEhSRF90eXBlX2luZGV4ID09IDIgJiYgaCA9PSAwTCkKQEAgLTg3OSwxMCArMTAzMCwxMyBAQAogICAgICAgICBpZiAocmVzdWx0ICE9IC0xKSB7CiAgICAgICAgICAgICBIUkRfaW5mby5sYmFfY2FwYWNpdHkgPSBoOwogICAgICAgICAgICAgaWYgKEhSRF90eXBlX2luZGV4ID09IDEpCi0gICAgICAgICAgICAgICAgc25wcmludGYoIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCisgICAgICAgICAgICAgICAgc25wcmludGYoIChjaGFyICopIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIlNDU0kgZGlzayAoJXMpIiwgZGV2ZnVsbCk7CisJICAgIGVsc2UgaWYgKEhSRF90eXBlX2luZGV4ID49IDQpCisJCXNucHJpbnRmKCAoY2hhciAqKSBIUkRfaW5mby5tb2RlbCwgc2l6ZW9mKEhSRF9pbmZvLm1vZGVsKS0xLAorCQkJICJMVk0gdm9sdW1lICglcykiLCBkZXZmdWxsICsgc3RybGVuKCIvZGV2L21hcHBlci8iKSk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc25wcmludGYoIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCisgICAgICAgICAgICAgICAgc25wcmludGYoIChjaGFyICopIEhSRF9pbmZvLm1vZGVsLCBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAiUkFJRCBkaXNrICglcykiLCBkZXZmdWxsKTsKICAgICAgICAgICAgIEhSRF9pbmZvLm1vZGVsWyBzaXplb2YoSFJEX2luZm8ubW9kZWwpLTEgXSA9IDA7CiAgICAgICAgICAgICBIUkRfaW5mby5jb25maWcgPSAwOwpAQCAtODk0LDYgKzEwNDgsMTAzIEBACiAgICAgcmVzdWx0ID0gaW9jdGwoZmQsIERJT0NHRElORk8sICZIUkRfaW5mbyk7CiAjZW5kaWYKIAorI2lmZGVmIGRhcndpbgorICAgIERBU2Vzc2lvblJlZiAgICAgICAgc2Vzc19yZWY7CisgICAgREFEaXNrUmVmICAgICAgICAgICBkaXNrOworICAgIENGRGljdGlvbmFyeVJlZiAgICAgZGVzYzsKKyAgICBDRlN0cmluZ1JlZiAgICAgICAgIHN0cl9yZWY7CisgICAgQ0ZOdW1iZXJSZWYgICAgICAgICBudW1iZXJfcmVmOworICAgIENGQm9vbGVhblJlZiAgICAgICAgYm9vbF9yZWY7CisgICAgQ0ZTdHJpbmdFbmNvZGluZyAgICBzeXNfZW5jb2RpbmcgPSBDRlN0cmluZ0dldFN5c3RlbUVuY29kaW5nKCk7CisKKyAgICBzZXNzX3JlZiA9IERBU2Vzc2lvbkNyZWF0ZSggTlVMTCApOworICAgIGlmIChOVUxMID09IHNlc3NfcmVmKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBkaXNrID0gREFEaXNrQ3JlYXRlRnJvbUJTRE5hbWUoIE5VTEwsIHNlc3NfcmVmLCBkZXZmdWxsICk7CisgICAgaWYgKE5VTEwgPT0gZGlzaykgeworICAgICAgICBDRlJlbGVhc2Uoc2Vzc19yZWYpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZGVzYyA9IERBRGlza0NvcHlEZXNjcmlwdGlvbiggZGlzayApOworICAgIGlmIChOVUxMID09IGRlc2MpIHsKKyAgICAgICAgQ0ZSZWxlYXNlKGRpc2spOworICAgICAgICBDRlJlbGVhc2Uoc2Vzc19yZWYpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgbnVtYmVyX3JlZiA9IChDRk51bWJlclJlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFTaXplS2V5KTsKKyAgICBpZiAobnVtYmVyX3JlZikKKyAgICAgICAgQ0ZOdW1iZXJHZXRWYWx1ZShudW1iZXJfcmVmLCBrQ0ZOdW1iZXJTSW50NjRUeXBlLCAmSFJEX2NhcCk7CisgICAgZWxzZQorICAgICAgICBIUkRfY2FwID0gMDsKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkaXNrbWdyOmRhcndpbiIsICIgc2l6ZSAlbGxkXG4iLCBIUkRfY2FwKSk7CisKKyAgICAvKiogd3JpdGFibGU/ICAqLworICAgIGJvb2xfcmVmID0gKENGQm9vbGVhblJlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFXcml0YWJsZUtleSk7CisgICAgaWYgKGJvb2xfcmVmKSB7CisgICAgICAgIEhSRF9hY2Nlc3MgPSBDRkJvb2xlYW5HZXRWYWx1ZShib29sX3JlZik7CisgICAgfQorICAgIGVsc2UKKyAgICAgICAgSFJEX2FjY2VzcyA9IDA7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZGlza21ncjpkYXJ3aW4iLCAiIHdyaXRhYmxlICVkXG4iLAorICAgICAgICAgICAgICAgIEhSRF9hY2Nlc3MpKTsKKworICAgIC8qKiByZW1vdmFibGU/ICAqLworICAgIGJvb2xfcmVmID0gKENGQm9vbGVhblJlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFSZW1vdmFibGVLZXkpOworICAgIGlmIChib29sX3JlZikgeworICAgICAgICBIUkRfcmVtb3ZlYmxlID0gQ0ZCb29sZWFuR2V0VmFsdWUoYm9vbF9yZWYpOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIEhSRF9yZW1vdmVibGUgPSAwOworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRpc2ttZ3I6ZGFyd2luIiwgIiByZW1vdmFibGUgJWRcbiIsCisgICAgICAgICAgICAgICAgSFJEX3JlbW92ZWJsZSkpOworCisgICAgLyoqIGdldCB0eXBlICovCisgICAgc3RyX3JlZiA9IChDRlN0cmluZ1JlZikKKyAgICAgICAgQ0ZEaWN0aW9uYXJ5R2V0VmFsdWUoZGVzYywga0RBRGlza0Rlc2NyaXB0aW9uTWVkaWFUeXBlS2V5KTsKKyAgICBpZiAoc3RyX3JlZikgeworICAgICAgICBIUkRfdHlwZSA9IF9nZXRfdHlwZV92YWx1ZShDRlN0cmluZ0dldENTdHJpbmdQdHIoc3RyX3JlZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c19lbmNvZGluZykpOworICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTpkaXNrbWdyOmRhcndpbiIsICIgdHlwZSAlcyAvICVkXG4iLAorICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ0dldENTdHJpbmdQdHIoc3RyX3JlZiwgc3lzX2VuY29kaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgSFJEX3R5cGUpKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN0cl9yZWYgPSAoQ0ZTdHJpbmdSZWYpCisgICAgICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZXNjLCBrREFEaXNrRGVzY3JpcHRpb25EZXZpY2VQcm90b2NvbEtleSk7CisgICAgICAgIGlmIChzdHJfcmVmKSB7CisgICAgICAgICAgICBIUkRfdHlwZSA9IAorICAgICAgICAgICAgICAgIF9nZXRfdHlwZV9mcm9tX3Byb3RvY29sKENGU3RyaW5nR2V0Q1N0cmluZ1B0cihzdHJfcmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfZW5jb2RpbmcpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmRpc2ttZ3I6ZGFyd2luIiwgIiB0eXBlICVzIC8gJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBDRlN0cmluZ0dldENTdHJpbmdQdHIoc3RyX3JlZiwgc3lzX2VuY29kaW5nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEhSRF90eXBlKSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgSFJEX3R5cGUgPSBIUkRJU0tTVE9SQUdFTUVESUFfVU5LTk9XTjsKKyAgICB9CisKKyAgICAvKiogbW9kZWwgKi8KKyAgICBzdHJfcmVmID0gKENGU3RyaW5nUmVmKQorICAgICAgICBDRkRpY3Rpb25hcnlHZXRWYWx1ZShkZXNjLCBrREFEaXNrRGVzY3JpcHRpb25EZXZpY2VNb2RlbEtleSk7CisgICAgaWYgKHN0cl9yZWYpIHsKKyAgICAgICAgc3RybGNweShIUkRfbW9kZWwsIENGU3RyaW5nR2V0Q1N0cmluZ1B0cihzdHJfcmVmLCBzeXNfZW5jb2RpbmcpLAorICAgICAgICAgICAgICAgIHNpemVvZihIUkRfbW9kZWwpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZGlza21ncjpkYXJ3aW4iLCAiIG1vZGVsICVzXG4iLCBIUkRfbW9kZWwpKTsKKyAgICB9CisgICAgZWxzZQorICAgICAgICBIUkRfbW9kZWxbMF0gPSAwOworICAgIENGUmVsZWFzZShkaXNrKTsKKyAgICBDRlJlbGVhc2UoZGVzYyk7CisgICAgQ0ZSZWxlYXNlKHNlc3NfcmVmKTsKKyAgICByZXN1bHQgPSAwOworI2VuZGlmCisKICAgICByZXR1cm4gKHJlc3VsdCk7CiB9CiAKQEAgLTkxMiw2ICsxMTYzLDExIEBACiAgICAgICAgIHJldHVybiAoMik7ICAgICAgICAgICAgIC8qIHJlYWQgb25seSAqLwogI2VuZGlmCiAKKyNpZmRlZiBkYXJ3aW4KKyAgICBpZiAoIUhSRF9hY2Nlc3MpCisgICAgICAgIHJldHVybiAoMik7CisjZW5kaWYKKwogICAgIHJldHVybiAoMSk7ICAgICAgICAgICAgICAgICAvKiByZWFkLXdyaXRlICovCiB9CiAKQEAgLTk4NCw2ICsxMjQwLDkgQEAKICAgICB9CiAjZW5kaWYKIAorI2lmZGVmIGRhcndpbgorICAgIHJldHVybiBIUkRfdHlwZTsKKyNlbmRpZgogCiAgICAgcmV0dXJuICgyKTsgICAgICAgICAgICAgICAgIC8qIFVua25vd24gKi8KIH0KQEAgLTEwMTQsNSArMTI3MywxNDkgQEAKICAgICAgICAgcmV0dXJuICgxKTsgICAgICAgICAgICAgLyogdHJ1ZSAqLwogI2VuZGlmCiAKKyNpZmRlZiBkYXJ3aW4KKyAgICBpZiAoSFJEX3JlbW92ZWJsZSkKKyAgICAgICAgcmV0dXJuICgxKTsKKyNlbmRpZgorCiAgICAgcmV0dXJuICgyKTsgICAgICAgICAgICAgICAgIC8qIGZhbHNlICovCiB9CisKKyNpZmRlZiBkYXJ3aW4KK3R5cGVkZWYgc3RydWN0IHR5cGVfdmFsdWVfbWFwX3MgeworICAgICBjb25zdCBjaGFyICp0eXBlOworICAgICB1aW50MzJfdCAgICB2YWx1ZTsKK30gdHlwZV92YWx1ZV9tYXA7CisKK3N0YXRpYyB0eXBlX3ZhbHVlX21hcCBtZWRpYV90eXBlX21hcFtdID0geworICAgIHsgIkNELVJPTSIsIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1JPTX0sCisgICAgeyAiRFZELVIiLCBIUkRJU0tTVE9SQUdFTUVESUFfT1BUSUNBTERJU0tXT1JNfSwKKyAgICB7ICJEVkQrUiIsIEhSRElTS1NUT1JBR0VNRURJQV9PUFRJQ0FMRElTS1dPUk19LAorfTsgIAorc3RhdGljIGludCBtZWRpYV90eXBlcyA9IHNpemVvZihtZWRpYV90eXBlX21hcCkvc2l6ZW9mKG1lZGlhX3R5cGVfbWFwWzBdKTsKKworc3RhdGljIGludAorX2dldF90eXBlX3ZhbHVlKCBjb25zdCBjaGFyICpzdHJfdHlwZSApCit7CisgICAgaW50ICAgICAgICAgICBpLCBsZW47CisgICAgCisgICAgaWYgKE5VTEwgPT0gc3RyX3R5cGUpCisgICAgICAgIHJldHVybiBIUkRJU0tTVE9SQUdFTUVESUFfVU5LTk9XTjsKKworICAgIGxlbiA9IHN0cmxlbihzdHJfdHlwZSk7CisgICAgZm9yKGk9MDsgaSA8IG1lZGlhX3R5cGVzOyArK2kpIHsKKyAgICAgICAgaWYgKDAgPT0gc3RyY21wKG1lZGlhX3R5cGVfbWFwW2ldLnR5cGUsIHN0cl90eXBlKSkKKyAgICAgICAgICAgIHJldHVybiBtZWRpYV90eXBlX21hcFtpXS52YWx1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gSFJESVNLU1RPUkFHRU1FRElBX1VOS05PV047Cit9CisKK3N0YXRpYyB0eXBlX3ZhbHVlX21hcCBwcm90b19tYXBbXSA9IHsKKyAgICB7ICJBVEEiLCBIUkRJU0tTVE9SQUdFTUVESUFfSEFSRERJU0t9LAorICAgIHsgIkFUQVBJIiwgSFJESVNLU1RPUkFHRU1FRElBX09QVElDQUxESVNLUk9NfQorfTsKK3N0YXRpYyBpbnQgcHJvdG9fbWFwcyA9IHNpemVvZihwcm90b19tYXApL3NpemVvZihwcm90b19tYXBbMF0pOworCitzdGF0aWMgaW50IF9nZXRfdHlwZV9mcm9tX3Byb3RvY29sKCBjb25zdCBjaGFyICpwcm90ICkKK3sgICAKKyAgICBpbnQgICAgICAgICAgIGksIGxlbjsKKworICAgIGlmIChOVUxMID09IHByb3QpCisgICAgICAgIHJldHVybiBUVl9GQUxTRTsKKworICAgIGxlbiA9IHN0cmxlbihwcm90KTsKKyAgICBmb3IoaT0wOyBpIDwgcHJvdG9fbWFwczsgKytpKSB7CisgICAgICAgIGlmICgwID09IHN0cmNtcChwcm90b19tYXBbaV0udHlwZSwgcHJvdCkpCisgICAgICAgICAgICByZXR1cm4gcHJvdG9fbWFwW2ldLnZhbHVlOworICAgIH0KKworICAgIHJldHVybiBIUkRJU0tTVE9SQUdFTUVESUFfVU5LTk9XTjsKK30KKyNlbmRpZgorCisKKyNpZiBkZWZpbmVkKEhBVkVfUkVHRVhfSCkgJiYgZGVmaW5lZChIQVZFX1JFR0NPTVApCitzdGF0aWMgY2hhciAgICAqbHZtX2RldmljZV9uYW1lc1tNQVhfTlVNQkVSX0RJU0tfVFlQRVNdOworc3RhdGljIGludCAgICAgIGx2bV9kZXZpY2VfY291bnQ7CisjZW5kaWYKKworc3RhdGljIHZvaWQKK0FkZF9MVk1fRGlza3Modm9pZCkKK3sKKyNpZiBkZWZpbmVkKEhBVkVfUkVHRVhfSCkgJiYgZGVmaW5lZChIQVZFX1JFR0NPTVApCisgICAgLyoKKyAgICAgKiBMVk0gZGV2aWNlcyBhcmUgaGFyZGVyIGJlY2F1c2UgdGhlaXIgbmFtZSBjYW4gYmUgYWxtb3N0IGFueXRoaW5nIChzZWUgCisgICAgICogcmVnZXhwIGJlbG93KS4gRWFjaCBsb2dpY2FsIHZvbHVtZSBpcyBpbnRlcnByZXRlZCBhcyBpdHMgb3duIGRldmljZSB3aXRoCisgICAgICogb25lIHBhcnRpdGlvbiwgZXZlbiBpZiB0d28gbG9naWNhbCB2b2x1bWVzIHNoYXJlIGNvbW1vbiB2b2x1bWUgZ3JvdXAuIAorICAgICAqLworICAgIHJlZ2V4X3QgICAgICAgICBsdm9sOworICAgIGludCAgICAgICAgICAgICByZXM7CisgICAgRElSICAgICAgICAgICAgKmRpcjsKKyAgICBzdHJ1Y3QgZGlyZW50ICAqZDsKKworICAgIHJlcyA9CisgICAgICAgIHJlZ2NvbXAoJmx2b2wsICJbMC05YS16QS1aK19cXC4tXSstWzAtOWEtekEtWitfXFwuLV0rIiwKKyAgICAgICAgICAgICAgICBSRUdfRVhURU5ERUQgfCBSRUdfTk9TVUIpOworICAgIGlmIChyZXMgIT0gMCkgeworICAgICAgICBjaGFyICAgICAgICAgICAgZXJyb3JbMjAwXTsKKyAgICAgICAgcmVnZXJyb3IocmVzLCAmbHZvbCwgZXJyb3IsIHNpemVvZihlcnJvciktMSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLAorICAgICAgICAgICAgICAgICAgICAiQWRkX0xWTV9EaXNrczogY2Fubm90IGNvbXBpbGUgcmVnZXhwOiAlcyIsIGVycm9yKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkaXIgPSBvcGVuZGlyKCIvZGV2L21hcHBlci8iKTsKKyAgICBpZiAoZGlyID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZGlzayIsCisgICAgICAgICAgICAgICAgICAgICJBZGRfTFZNX0Rpc2tzOiBjYW5ub3Qgb3BlbiAvZGV2L21hcHBlciIpKTsKKyAgICAgICAgcmVnZnJlZSgmbHZvbCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICB3aGlsZSAoKGQgPSByZWFkZGlyKGRpcikpICE9IE5VTEwpIHsKKyAgICAgICAgcmVzID0gcmVnZXhlYygmbHZvbCwgZC0+ZF9uYW1lLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICBjaGFyICAgICAgICAgICAqcGF0aCA9IG1hbGxvYyhQQVRIX01BWCArIDEpOworICAgICAgICAgICAgaWYgKHBhdGggPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2Rpc2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBZGRfTFZNX0Rpc2tzOiBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBkZXZpY2UgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQtPmRfbmFtZSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc25wcmludGYocGF0aCwgUEFUSF9NQVgtMSwgIi9kZXYvbWFwcGVyLyVzIiwgZC0+ZF9uYW1lKTsKKyAgICAgICAgICAgIEFkZF9IUl9EaXNrX2VudHJ5KHBhdGgsIC0xLCAtMSwgMCwgMCwgcGF0aCwgMCwgMCk7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzdG9yZSB0aGUgZGV2aWNlIG5hbWUgc28gd2UgY2FuIGZyZWUgaXQgaW4gUmVtb3ZlX0xWTV9EaXNrcyAKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbHZtX2RldmljZV9uYW1lc1tsdm1fZGV2aWNlX2NvdW50XSA9IHBhdGg7CisgICAgICAgICAgICArK2x2bV9kZXZpY2VfY291bnQ7CisgICAgICAgICAgICBpZiAobHZtX2RldmljZV9jb3VudCA+PSBNQVhfTlVNQkVSX0RJU0tfVFlQRVMpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9kaXNrIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQWRkX0xWTV9EaXNrczogbWF4aW11bSBjb3VudCBvZiBMVk0gZGV2aWNlcyByZWFjaGVkIikpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIGNsb3NlZGlyKGRpcik7CisgICAgcmVnZnJlZSgmbHZvbCk7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQKK1JlbW92ZV9MVk1fRGlza3Modm9pZCkKK3sKKyNpZiBkZWZpbmVkKEhBVkVfUkVHRVhfSCkgJiYgZGVmaW5lZChIQVZFX1JFR0NPTVApCisgICAgLyoKKyAgICAgKiBqdXN0IGZyZWUgdGhlIGRldmljZSBuYW1lcyBhbGxvY2F0ZWQgaW4gYWRkX2x2bV9kaXNrcyAKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbHZtX2RldmljZV9jb3VudDsgaSsrKSB7CisgICAgICAgIGZyZWUobHZtX2RldmljZV9uYW1lc1tpXSk7CisgICAgICAgIGx2bV9kZXZpY2VfbmFtZXNbaV0gPSBOVUxMOworICAgIH0KKyAgICBsdm1fZGV2aWNlX2NvdW50ID0gMDsKKyNlbmRpZgorfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX2Rpc2suaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oCmluZGV4IGVmZjJhNjcuLmIzYzQzOWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfZGlzay5oCkBAIC04LDYgKzgsOCBAQAogY29uZmlnX3JlcXVpcmUoaG9zdC9ocl9kZXZpY2UpCiAKIGV4dGVybiB2b2lkICAgICBpbml0X2hyX2Rpc2sodm9pZCk7CitleHRlcm4gdm9pZCAgICAgc2h1dGRvd25faHJfZGlzayh2b2lkKTsKKwogZXh0ZXJuIHZvaWQgICAgIEluaXRfSFJfRGlzayh2b2lkKTsKIGV4dGVybiBpbnQgICAgICBHZXRfTmV4dF9IUl9EaXNrKHZvaWQpOwogZXh0ZXJuIGludCAgICAgIEdldF9OZXh0X0hSX0Rpc2tfUGFydGl0aW9uKGNoYXIgKiwgc2l6ZV90LCBpbnQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9maWxlc3lzLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYwppbmRleCA3ZmEyMDU4Li5lODViZmVjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX2ZpbGVzeXMuYwpAQCAtMiw2ICsyLDE2IEBACiAgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gRmlsZSBTeXN0ZW0gZGV2aWNlIGdyb3VwIGltcGxlbWVudGF0aW9uIC0gaHJfZmlsZXN5cy5jCiAgKgogICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CkBAIC0xMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAiaG9zdF9yZXMuaCIKICNpbmNsdWRlICJocl9maWxlc3lzLmgiCiAjaW5jbHVkZSAiaHJfc3RvcmFnZS5oIgorI2luY2x1ZGUgImhyX2Rpc2suaCIKICNpbmNsdWRlIDxuZXQtc25tcC91dGlsaXRpZXMuaD4KIAogI2lmIEhBVkVfTU5URU5UX0gKQEAgLTE5NSwxNSArMjA2LDI0IEBACiAjZGVmaW5lIEhSRlNZU19QQVJURFVNUAkJOQogCiBzdHJ1Y3QgdmFyaWFibGU0IGhyZnN5c192YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJGU1lTX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCAxfX0sCi0gICAge0hSRlNZU19NT1VOVCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCAyfX0sCi0gICAge0hSRlNZU19STU9VTlQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgM319LAotICAgIHtIUkZTWVNfVFlQRSwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA0fX0sCi0gICAge0hSRlNZU19BQ0NFU1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZmlsZXN5cywgMiwgezEsIDV9fSwKLSAgICB7SFJGU1lTX0JPT1QsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyZmlsZXN5cywgMiwgezEsIDZ9fSwKLSAgICB7SFJGU1lTX1NUT1JFSURYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA3fX0sCi0gICAge0hSRlNZU19GVUxMRFVNUCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA4fX0sCi0gICAge0hSRlNZU19QQVJURFVNUCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA5fX0sCisgICAge0hSRlNZU19JTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgMX19LAorICAgIHtIUkZTWVNfTU9VTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgMn19LAorICAgIHtIUkZTWVNfUk1PVU5ULCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyZmlsZXN5cywgMiwgezEsIDN9fSwKKyAgICB7SFJGU1lTX1RZUEUsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgNH19LAorICAgIHtIUkZTWVNfQUNDRVNTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA1fX0sCisgICAge0hSRlNZU19CT09ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmZpbGVzeXMsIDIsIHsxLCA2fX0sCisgICAge0hSRlNZU19TVE9SRUlEWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgN319LAorICAgIHtIUkZTWVNfRlVMTERVTVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgOH19LAorICAgIHtIUkZTWVNfUEFSVERVTVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJmaWxlc3lzLCAyLCB7MSwgOX19LAogfTsKIG9pZCAgICAgICAgICAgICBocmZzeXNfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgOCB9OwogCkBAIC0yNzksNyArMjk5LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIi4uLiBnZXQgZmlsZXN5cyBzdGF0cyAiKSk7CkBAIC0zMjYsOSArMzQ2LDkgQEAKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RyaW5nKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RyaW5nOwogICAgIGNhc2UgSFJGU1lTX1JNT1VOVDoKLSAgICAgICAgaWYgKENoZWNrX0hSX0ZpbGVTeXNfTkZTKCkpCisgICAgICAgIGlmIChDaGVja19IUl9GaWxlU3lzX05GUygpKSB7CiAgICAgICAgICAgICBzdHJsY3B5KHN0cmluZywgSFJGU19lbnRyeS0+SFJGU19uYW1lLCBzaXplb2Yoc3RyaW5nKSk7Ci0gICAgICAgIGVsc2UKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzdHJpbmdbMF0gPSAnXDAnOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzdHJpbmc7CkBAIC02MjEsOSArNjQxLDcgQEAKICAgICAgICAgZmNsb3NlKGZwKTsKICAgICBmcCA9IGZvcGVuKEVUQ19NTlRUQUIsICJyIik7CiAgICAgaWYgKCFmcCkgewotICAgICAgY2hhciB0bXBidWZbU1RSSU5HTUFYXTsKLSAgICAgIHNucHJpbnRmKCB0bXBidWYsIHNpemVvZih0bXBidWYpLCAiQ2FuJ3Qgb3BlbiBtbnR0YWIgJXNcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuIG1udHRhYiAlc1xuIiwgRVRDX01OVFRBQik7CiAgICAgfQogI2VuZGlmCiB9CkBAIC02NzgsNyArNjk2LDcgQEAKICAgICAicHJvYyIsCiAgICAgImZkIiwKICNlbmRpZgotICAgIDAKKyAgICBOVUxMCiB9OwogCiBpbnQKQEAgLTcyOSwxMyArNzQ3LDkgQEAKICAgICAgICAgcmV0dXJuIC0xOwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzb2xhcmlzMiAqLwogCi0gICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZmlsZXN5cyIsICJHZXRfTmV4dF9IUkZTICVzXG4iLCBIUkZTX2VudHJ5LT5IUkZTX25hbWUpKTsKLQogICAgIGZvciAoY3BwID0gSFJGU19pZ25vcmVzOyAqY3BwICE9IE5VTEw7ICsrY3BwKQotICAgICAgICBpZiAoIXN0cmNtcChIUkZTX2VudHJ5LT5IUkZTX3R5cGUsICpjcHApKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIkdldF9OZXh0X0hSRlM6IHNraXBwaW5nICVzICglcylcbiIsIEhSRlNfZW50cnktPkhSRlNfdHlwZSwgKmNwcCkpOworICAgICAgICBpZiAoIXN0cmNtcChIUkZTX2VudHJ5LT5IUkZTX3R5cGUsICpjcHApKQogICAgICAgICAgICAgcmV0dXJuIEdldF9OZXh0X0hSX0ZpbGVTeXMoKTsKLSAgICAgICAgfQogCiAgICAgLyoKICAgICAgKiBUcnkgYW5kIGVuc3VyZSB0aGF0IGluZGV4IHZhbHVlcyBhcmUgcGVyc2lzdGVudApAQCAtOTU1LDcgKzk2OSw3IEBACiAgIAkJICogaW4gY2FzZSBvZiA1MTIgKGZfYmxvY2tzLzIpIGlzIHJldHVybmVkCiAgIAkJICogb3RoZXJ3aXNlIChmX2Jsb2NrcyooZl9ic2l6ZS8xMDI0KSkgaXMgcmV0dXJuZWQKICAgCQkgKi8KLSNpZiBkZWZpbmVkKHNvbGFyaXMyKSAmJiBkZWZpbmVkKFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRSkKKyNpZiBkZWZpbmVkKHNvbGFyaXMyKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIChzdGF0ZnNfYnVmLmZfYmxvY2tzKihzdGF0ZnNfYnVmLmZfZnJzaXplLzEwMjQpKTsKICNlbHNlCiAgIAkJaWYgKHN0YXRmc19idWYuZl9ic2l6ZSA9PSA1MTIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX25ldHdvcmsuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCmluZGV4IDRmODVmOTYuLjQ4ZDc0N2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfbmV0d29yay5jCkBAIC01MSw3ICs1MSw4IEBACiAjZGVmaW5lCUhSTkVUX0lGSU5ERVgJCTEKIAogc3RydWN0IHZhcmlhYmxlNCBocm5ldF92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJORVRfSUZJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJuZXQsIDIsIHsxLCAxfX0KKyAgICB7SFJORVRfSUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJuZXQsIDIsIHsxLCAxfX0KIH07CiBvaWQgICAgICAgICAgICAgaHJuZXRfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgNCB9OwogCkBAIC0xMzYsNyArMTM3LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9uZXR3b3JrIiwgIi4uLiBnZXQgbmV0IHN0YXRzICIpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3BhcnRpdGlvbi5jCmluZGV4IGFlMGJkOGUuLmFiZTc2OTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcGFydGl0aW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wYXJ0aXRpb24uYwpAQCAtMSw4ICsxLDE3IEBACi0KIC8qCiAgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gcGFydGl0aW9uIGRldmljZSBncm91cCBpbXBsZW1lbnRhdGlvbiAtIGhyX3BhcnRpdGlvbi5jCiAgKgogICovCisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPGZjbnRsLmg+CkBAIC0zNSw2ICs0NCw5IEBACiBzdGF0aWMgaW50ICAgICAgSFJQX3NhdmVkRGlza0luZGV4Owogc3RhdGljIGludCAgICAgIEhSUF9zYXZlZFBhcnRJbmRleDsKIHN0YXRpYyBjaGFyICAgICBIUlBfc2F2ZWROYW1lWzEwMjRdOworI2lmZGVmIE5FVFNOTVBfQ0FOX0dFVF9ESVNLX0xBQkVMCitzdGF0aWMgY2hhciAgICAgSFJQX3NhdmVkTGFiZWxbMTAyNF07CisjZW5kaWYKIAogc3RhdGljIGludCAgICAgIEhSUF9EaXNrSW5kZXg7CiAKQEAgLTYwLDExICs3MiwxNiBAQAogI2RlZmluZQlIUlBBUlRfRlNJRFgJCTUKIAogc3RydWN0IHZhcmlhYmxlNCBocnBhcnRpdGlvbl92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJQQVJUX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDF9fSwKLSAgICB7SFJQQVJUX0xBQkVMLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgMn19LAotICAgIHtIUlBBUlRfSUQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJwYXJ0aXRpb24sIDIsIHsxLCAzfX0sCi0gICAge0hSUEFSVF9TSVpFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDR9fSwKLSAgICB7SFJQQVJUX0ZTSURYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDV9fQorICAgIHtIUlBBUlRfSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgMX19LAorICAgIHtIUlBBUlRfTEFCRUwsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwYXJ0aXRpb24sIDIsIHsxLCAyfX0sCisgICAge0hSUEFSVF9JRCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnBhcnRpdGlvbiwgMiwgezEsIDN9fSwKKyAgICB7SFJQQVJUX1NJWkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgNH19LAorICAgIHtIUlBBUlRfRlNJRFgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hycGFydGl0aW9uLCAyLCB7MSwgNX19CiB9Owogb2lkICAgICAgICAgICAgIGhycGFydGl0aW9uX3ZhcmlhYmxlc19vaWRbXSA9CiAgICAgeyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgNyB9OwpAQCAtMTM1LDYgKzE1Miw3IEBACiAgICAgICAgICAgICAobmFtZVtIUlBBUlRfRElTS19OQU1FX0xFTkdUSF0gJgogICAgICAgICAgICAgICgoMSA8PCBIUkRFVl9UWVBFX1NISUZUKSAtIDEpKTsKIAorICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wYXJ0aXRpb24iLCAiLi4uIGxvdyBpbmRleCAlZFxuIiwgTG93RGlza0luZGV4KSk7CiAgICAgICAgIHdoaWxlIChIUlBfRGlza0luZGV4IDwgTG93RGlza0luZGV4KSB7CiAgICAgICAgICAgICBJbml0X0hSX1BhcnRpdGlvbigpOyAgICAgICAgLyogbW92ZXMgdG8gbmV4dCBkaXNrICovCiAgICAgICAgICAgICBpZiAoSFJQX0Rpc2tJbmRleCA9PSAtMSkKQEAgLTE0NCw2ICsxNjIsNyBAQAogCiAgICAgZm9yICg7OykgewogICAgICAgICBwYXJ0X2lkeCA9IEdldF9OZXh0X0hSX1BhcnRpdGlvbigpOworICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wYXJ0aXRpb24iLCAiLi4uIHBhcnQgaW5kZXggJWRcbiIsIHBhcnRfaWR4KSk7CiAgICAgICAgIGlmIChwYXJ0X2lkeCA9PSAwKQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIG5ld25hbWVbSFJQQVJUX0RJU0tfTkFNRV9MRU5HVEhdID0KQEAgLTE4NSw3ICsyMDQsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAogICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAyKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAyOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KIAogICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX3BhcnRpdGlvbiIsICIuLi4gZ2V0IHBhcnRpdGlvbiBzdGF0cyAiKSk7CkBAIC0yMjUsOCArMjQ0LDEzIEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gcGFydF9pZHg7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgY2FzZSBIUlBBUlRfTEFCRUw6CisjaWZkZWYgTkVUU05NUF9DQU5fR0VUX0RJU0tfTEFCRUwKKyAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oSFJQX3NhdmVkTGFiZWwpOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBIUlBfc2F2ZWRMYWJlbDsKKyNlbHNlCiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKEhSUF9zYXZlZE5hbWUpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBIUlBfc2F2ZWROYW1lOworI2VuZGlmCiAgICAgY2FzZSBIUlBBUlRfSUQ6ICAgICAgICAgICAgLyogVXNlIHRoZSBkZXZpY2UgbnVtYmVyICovCiAgICAgICAgIHNwcmludGYoc3RyaW5nLCAiMHgleCIsIChpbnQpIHN0YXRfYnVmLnN0X3JkZXYpOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOwpAQCAtMjU5LDkgKzI4MywxMSBAQAogc3RhdGljIHZvaWQKIEluaXRfSFJfUGFydGl0aW9uKHZvaWQpCiB7CisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfcGFydGl0aW9uIiwgIkluaXRfSFJfUGFydGl0aW9uXG4iKSk7CiAgICAgSFJQX0Rpc2tJbmRleCA9IEdldF9OZXh0X0hSX0Rpc2soKTsKICAgICBpZiAoSFJQX0Rpc2tJbmRleCAhPSAtMSkKICAgICAgICAgSFJQX0Rpc2tJbmRleCAmPSAoKDEgPDwgSFJERVZfVFlQRV9TSElGVCkgLSAxKTsKKyAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wYXJ0aXRpb24iLCAiLi4uICAlZFxuIixIUlBfRGlza0luZGV4KSk7CiAKICAgICBIUlBfaW5kZXggPSAtMTsKIH0KQEAgLTI3Miw2ICsyOTgsNyBAQAogICAgIGNoYXIgICAgICAgICAgICBzdHJpbmdbMTAyNF07CiAgICAgaW50ICAgICAgICAgICAgIGZkOwogCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfcGFydGl0aW9uIiwgIkdldF9OZXh0X0hSX1BhcnRpdGlvbiAlZFxuIixIUlBfRGlza0luZGV4KSk7CiAgICAgaWYgKEhSUF9EaXNrSW5kZXggPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQpAQCAtMzA5LDQgKzMzNiw3IEBACiAgICAgSFJQX3NhdmVkRGlza0luZGV4ID0gZGlza19pZHg7CiAgICAgSFJQX3NhdmVkUGFydEluZGV4ID0gcGFydF9pZHg7CiAgICAgKHZvaWQpIEdldF9OZXh0X0hSX0Rpc2tfUGFydGl0aW9uKEhSUF9zYXZlZE5hbWUsIHNpemVvZihIUlBfc2F2ZWROYW1lKSwgSFJQX2luZGV4KTsKKyNpZmRlZiBORVRTTk1QX0NBTl9HRVRfRElTS19MQUJFTAorICAgICh2b2lkKSBHZXRfSFJfRGlza19MYWJlbChIUlBfc2F2ZWRMYWJlbCwgc2l6ZW9mKEhSUF9zYXZlZExhYmVsKSwgSFJQX3NhdmVkTmFtZSk7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJpbnQuYwppbmRleCAxZDFmMmVmLi40Y2ZhMjViIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3ByaW50LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9wcmludC5jCkBAIC00OCw4ICs0OCwxMCBAQAogI2RlZmluZQlIUlBSSU5UX0VSUk9SCQkyCiAKIHN0cnVjdCB2YXJpYWJsZTQgaHJwcmludF92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJQUklOVF9TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hycHJpbnQsIDIsIHsxLCAxfX0sCi0gICAge0hSUFJJTlRfRVJST1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJwcmludCwgMiwgezEsIDJ9fQorICAgIHtIUlBSSU5UX1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwcmludCwgMiwgezEsIDF9fSwKKyAgICB7SFJQUklOVF9FUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnByaW50LCAyLCB7MSwgMn19CiB9Owogb2lkICAgICAgICAgICAgIGhycHJpbnRfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgNSB9OwogCkBAIC0xMzksNyArMTQxLDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wcmludCIsICIuLi4gZ2V0IHByaW50IHN0YXRzICIpKTsKQEAgLTE3Nyw5ICsxNzksMTAgQEAKICAgICBjYXNlIEhSUFJJTlRfRVJST1I6CiAjaWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0jZW5kaWYKKyNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gMDsgICAgICAgIC8qIE51bGwgc3RyaW5nICovCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisjZW5kaWYKICAgICBkZWZhdWx0OgogICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9wcmludCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfaHJwcmludFxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3Byb2MuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5jCmluZGV4IGVjZTMzOGQuLjZmOTMwNzkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfcHJvYy5jCkBAIC01MSw4ICs1MSwxMCBAQAogI2RlZmluZQlIUlBST0NfTE9BRAkJMgogCiBzdHJ1Y3QgdmFyaWFibGU0IGhycHJvY192YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJQUk9DX0lELCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX2hycHJvYywgMiwgezEsIDF9fSwKLSAgICB7SFJQUk9DX0xPQUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hycHJvYywgMiwgezEsIDJ9fQorICAgIHtIUlBST0NfSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwcm9jLCAyLCB7MSwgMX19LAorICAgIHtIUlBST0NfTE9BRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJwcm9jLCAyLCB7MSwgMn19CiB9Owogb2lkICAgICAgICAgICAgIGhycHJvY192YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAzLCAzIH07CiAKQEAgLTEzOCw3ICsxNDAsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAogICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KIAogICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX3Byb2MiLCAiLi4uIGdldCBwcm9jIHN0YXRzICIpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5jIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMKaW5kZXggMjVmZjNkYi4uNzU0ODg0YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zdG9yYWdlLmMKQEAgLTgsNyArOCw3IEBACiAjaWYgZGVmaW5lZChmcmVlYnNkNSkKIC8qIHVuZGVmaW5lIHRoZXNlIGluIG9yZGVyIHRvIHVzZSBnZXRmc3N0YXQgKi8KICN1bmRlZiBIQVZFX1NUQVRWRlMKLSN1bmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GUlNJWkUKKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRlJTSVpFCiAjZW5kaWYKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgpAQCAtMTg5LDcgKzE4OSw3IEBACiBleHRlcm4gc3RydWN0IG1udHRhYiAqSFJGU19lbnRyeTsKICNkZWZpbmUgSFJGU19tb3VudAltbnRfbW91bnRwCiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXR2ZnMKLSNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRQorI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZSU0laRQogCiAjZWxpZiBkZWZpbmVkKFdJTjMyKQogLyogZmFrZSBibG9jayBzaXplICovCkBAIC0yMDUsMTUgKzIwNSwxNSBAQAogZXh0ZXJuIGludCAgICAgIGZzY291bnQ7CiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXR2ZnMKICNkZWZpbmUgSFJGU19tb3VudAlmX21udG9ubmFtZQotI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRlJTSVpFCisjZGVmaW5lIEhSRlNfSEFTX0ZSU0laRSBIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRlJTSVpFCiAKLSNlbGlmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAgJiYgZGVmaW5lZChTVFJVQ1RfU1RBVFZGU19IQVNfTU5UX0RJUikKKyNlbGlmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSAgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFUVkZTX01OVF9ESVIpCiAKIGV4dGVybiBzdHJ1Y3QgbW50ZW50ICpIUkZTX2VudHJ5OwogZXh0ZXJuIGludCAgICAgIGZzY291bnQ7CiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXR2ZnMKICNkZWZpbmUgSFJGU19tb3VudAltbnRfZGlyCi0jZGVmaW5lIEhSRlNfSEFTX0ZSU0laRSBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GUlNJWkUKKyNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKIAogI2VsaWYgZGVmaW5lZChIQVZFX0dFVEZTU1RBVCkKIApAQCAtMjIxLDE0ICsyMjEsMTQgQEAKIGV4dGVybiBpbnQgICAgICBmc2NvdW50OwogI2RlZmluZSBIUkZTX3N0YXRmcwlzdGF0ZnMKICNkZWZpbmUgSFJGU19tb3VudAlmX21udG9ubmFtZQotI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgU1RSVUNUX1NUQVRGU19IQVNfRl9GUlNJWkUKKyNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZSU0laRQogCiAjZWxzZQogCiBleHRlcm4gc3RydWN0IG1udGVudCAqSFJGU19lbnRyeTsKICNkZWZpbmUgSFJGU19tb3VudAltbnRfZGlyCiAjZGVmaW5lIEhSRlNfc3RhdGZzCXN0YXRmcwotI2RlZmluZSBIUkZTX0hBU19GUlNJWkUgU1RSVUNUX1NUQVRGU19IQVNfRl9GUlNJWkUKKyNkZWZpbmUgSFJGU19IQVNfRlJTSVpFIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZSU0laRQogCiAjZW5kaWYKIAkKQEAgLTI0OSw2ICsyNDksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqLCBXcml0ZU1ldGhvZCAqKik7CiB2b2lkKiAgICAgICAgICAgaGVhZGVyX2hyc3RvcmVFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzaXplX3QgKiwgV3JpdGVNZXRob2QgKiopOworTmV0c25tcF9Ob2RlX0hhbmRsZXIgaGFuZGxlX21lbXNpemU7CiAKICNpZmRlZiBzb2xhcmlzMgogdm9pZCAgICAgICAgICAgIHNvbF9nZXRfc3dhcGluZm8oaW50ICosIGludCAqKTsKQEAgLTI2MywxNyArMjY0LDI1IEBACiAjZGVmaW5lCUhSU1RPUkVfVVNFRAkJNwogI2RlZmluZQlIUlNUT1JFX0ZBSUxTCQk4CiAKLXN0cnVjdCB2YXJpYWJsZTQgaHJzdG9yZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJTVE9SRV9NRU1TSVpFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAxLCB7Mn19LAotICAgIHtIUlNUT1JFX0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAzLCB7MywgMSwgMX19LAotICAgIHtIUlNUT1JFX1RZUEUsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfaHJzdG9yZSwgMywgezMsIDEsIDJ9fSwKLSAgICB7SFJTVE9SRV9ERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAzLCB7MywgMSwgM319LAotICAgIHtIUlNUT1JFX1VOSVRTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN0b3JlLCAzLCB7MywgMSwgNH19LAotICAgIHtIUlNUT1JFX1NJWkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3RvcmUsIDMsIHszLCAxLCA1fX0sCi0gICAge0hSU1RPUkVfVVNFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzdG9yZSwgMywgezMsIDEsIDZ9fSwKLSAgICB7SFJTVE9SRV9GQUlMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaHJzdG9yZSwgMywgezMsIDEsIDd9fQorc3RydWN0IHZhcmlhYmxlMiBocnN0b3JlX3ZhcmlhYmxlc1tdID0geworICAgIHtIUlNUT1JFX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7MX19LAorICAgIHtIUlNUT1JFX1RZUEUsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezJ9fSwKKyAgICB7SFJTVE9SRV9ERVNDUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7M319LAorICAgIHtIUlNUT1JFX1VOSVRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7NH19LAorICAgIHtIUlNUT1JFX1NJWkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHs1fX0sCisgICAge0hSU1RPUkVfVVNFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezZ9fSwKKyAgICB7SFJTVE9SRV9GQUlMUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezd9fQogfTsKIG9pZCAgICAgICAgICAgICBocnN0b3JlX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDIgfTsKK29pZCAgICAgICAgICAgICBock1lbW9yeVNpemVfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDIsIDIgfTsKK29pZCAgICAgICAgICAgICBoclN0b3JhZ2VUYWJsZV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDIsIDMsIDEgfTsKIAogCiB2b2lkCkBAIC0yODEsOCArMjkwLDEyIEBACiB7CiAgICAgY2hhciAqYXBwbmFtZTsKIAotICAgIFJFR0lTVEVSX01JQigiaG9zdC9ocl9zdG9yYWdlIiwgaHJzdG9yZV92YXJpYWJsZXMsIHZhcmlhYmxlNCwKLSAgICAgICAgICAgICAgICAgaHJzdG9yZV92YXJpYWJsZXNfb2lkKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcigKKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImhvc3QvaHJNZW1vcnlTaXplIiwgaGFuZGxlX21lbXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBock1lbW9yeVNpemVfb2lkLCBPSURfTEVOR1RIKGhyTWVtb3J5U2l6ZV9vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpKTsKKyAgICBSRUdJU1RFUl9NSUIoImhvc3QvaHJfc3RvcmFnZSIsIGhyc3RvcmVfdmFyaWFibGVzLCB2YXJpYWJsZTIsCisgICAgICAgICAgICAgICAgIGhyU3RvcmFnZVRhYmxlX29pZCk7CiAKICAgICBhcHBuYW1lID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOwpAQCAtMzE3LDcgKzMzMCw3IEBACiB9CiAKIC8qCi0gKiBoZWFkZXJfaHJzdG9yZSguLi4KKyAqIGhlYWRlcl9ocnN0b3JlRW50cnkoLi4uCiAgKiBBcmd1bWVudHM6CiAgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQogICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCkBAIC0zMjgsMzQgKzM0MSw2IEBACiAgKiAKICAqLwogCi1pbnQKLWhlYWRlcl9ocnN0b3JlKHN0cnVjdCB2YXJpYWJsZSAqdnAsCi0gICAgICAgICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCi17Ci0jZGVmaW5lIEhSU1RPUkVfTkFNRV9MRU5HVEgJOQotICAgIG9pZCAgICAgICAgICAgICBuZXduYW1lW01BWF9PSURfTEVOXTsKLSAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OwotCi0gICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3RvcmFnZSIsICJ2YXJfaHJzdG9yZTogIikpOwotICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9zdG9yYWdlIiwgbmFtZSwgKmxlbmd0aCkpOwotICAgIERFQlVHTVNHKCgiaG9zdC9ocl9zdG9yYWdlIiwgIiAlZFxuIiwgZXhhY3QpKTsKLQotICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgbmV3bmFtZVtIUlNUT1JFX05BTUVfTEVOR1RIXSA9IDA7Ci0gICAgcmVzdWx0ID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXduYW1lLCB2cC0+bmFtZWxlbiArIDEpOwotICAgIGlmICgoZXhhY3QgJiYgKHJlc3VsdCAhPSAwKSkgfHwgKCFleGFjdCAmJiAocmVzdWx0ID49IDApKSkKLSAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOwotICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAotICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKLSAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotCi0gICAgKndyaXRlX21ldGhvZCA9IDA7Ci0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KLSAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7Ci19Ci0KIHZvaWQgKgogaGVhZGVyX2hyc3RvcmVFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKnZwLAogICAgICAgICAgICAgICAgICAgICBvaWQgKiBuYW1lLApAQCAtNDY3LDcgKzQ1Miw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAKICAgICAvKgpAQCAtNDc1LDcgKzQ2MCw3IEBACiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3RvcmFnZSIsICJ2YXJfaHJzdG9yZUVudHJ5OiBwcm9jZXNzICIpKTsKICAgICBERUJVR01TR09JRCgoImhvc3QvaHJfc3RvcmFnZSIsIG5hbWUsICpsZW5ndGgpKTsKLSAgICBERUJVR01TRygoImhvc3QvaHJfc3RvcmFnZSIsICIgKCV4KVxuIiwgbWVtKSk7CisgICAgREVCVUdNU0coKCJob3N0L2hyX3N0b3JhZ2UiLCAiICglcClcbiIsIG1lbSkpOwogICAgIHJldHVybiAodm9pZCopbWVtOwogfQogCkBAIC00ODksMTMgKzQ3NCw0NyBAQAogCSAqCiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIGNvbnN0IGNoYXIgKmhyc19kZXNjcltdID0gewotICAgIE5VTEwsCi0gICAgIk1lbW9yeSBCdWZmZXJzIiwgICAgICAgICAgIC8qIEhSU19UWVBFX01CVUYgKi8KLSAgICAiUmVhbCBNZW1vcnkiLCAgICAgICAgICAgICAgLyogSFJTX1RZUEVfTUVNICovCi0gICAgIlN3YXAgU3BhY2UiICAgICAgICAgICAgICAgIC8qIEhSU19UWVBFX1NXQVAgKi8KLX07CitpbnQKK2hhbmRsZV9tZW1zaXplKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgbmV0c25tcF9tZW1vcnlfaW5mbyAqbWVtX2luZm87CisgICAgaW50IHZhbDsKIAorICAgIC8qCisgICAgICogV2UganVzdCBuZWVkIHRvIGhhbmRsZSB2YWxpZCBHRVQgcmVxdWVzdHMsIGFzIGludmFsaWQgaW5zdGFuY2VzCisgICAgICogICBhcmUgcmVqZWN0ZWQgYXV0b21hdGljYWxseSwgYW5kICh2YWxpZCkgR0VUTkVYVCByZXF1ZXN0cyBhcmUKKyAgICAgKiAgIGNvbnZlcnRlZCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBHRVQgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIFdlIGFsc28gb25seSBldmVyIHJlY2VpdmUgb25lIHJlcXVlc3QgYXQgYSB0aW1lLgorICAgICAqLworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKKyAgICAgICAgbWVtX2luZm8gPSBuZXRzbm1wX21lbW9yeV9nZXRfYnlJZHgoIE5FVFNOTVBfTUVNX1RZUEVfUEhZU01FTSwgMCApOworICAgICAgICBpZiAoICFtZW1faW5mbyB8fCBtZW1faW5mby0+c2l6ZSA9PSAtMSB8fCBtZW1faW5mby0+dW5pdHMgPT0gLTEgKQorICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfTk9TVUNIT0JKRUNUICk7CisJZWxzZSB7CisgICAgICAgICAgICB2YWwgID0gIG1lbV9pbmZvLT5zaXplOyAgICAgLyogbWVtdG90YWwgKi8KKyAgICAgICAgICAgIHZhbCAqPSAobWVtX2luZm8tPnVuaXRzLzEwMjQpOworICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmdmFsLCBzaXplb2YodmFsKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKgorICAgICAgICAgKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yIAorICAgICAgICAgKi8KKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9tZW1zaXplXG4iLAorICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KIAogCiB1X2NoYXIgICAgICAgICAqCkBAIC01MTAsMTIgKzUyOSw2IEBACiAgICAgdm9pZCAgICAgICAgICAgICAgICAqcHRyOwogICAgIG5ldHNubXBfbWVtb3J5X2luZm8gKm1lbSA9IE5VTEw7CiAKLSAgICBpZiAodnAtPm1hZ2ljID09IEhSU1RPUkVfTUVNU0laRSkgewotICAgICAgICBpZiAoaGVhZGVyX2hyc3RvcmUodnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkKLSAgICAgICAgICAgID09IE1BVENIX0ZBSUxFRCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0gZWxzZSB7Ci0KIHJlYWxseV90cnlfbmV4dDoKIAlwdHIgPSBoZWFkZXJfaHJzdG9yZUVudHJ5KHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLAogCQkJCQl3cml0ZV9tZXRob2QpOwpAQCAtNTM1LDE5ICs1NDgsMTAgQEAKIAl9IGVsc2UgewogCSAgICBtZW0gPSAobmV0c25tcF9tZW1vcnlfaW5mbyopcHRyOwogICAgICAgICB9Ci0gICAgfQogCiAKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBIUlNUT1JFX01FTVNJWkU6Ci0gICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKLSAgICAgICAgbWVtID0gbmV0c25tcF9tZW1vcnlfZ2V0X2J5SWR4KCBORVRTTk1QX01FTV9UWVBFX1BIWVNNRU0sIDAgKTsKLSAgICAgICAgaWYgKCAhbWVtIHx8IG1lbS0+c2l6ZSA9PSAtMSB8fCBtZW0tPnVuaXRzID09IC0xICkKLQkgICAgcmV0dXJuIE5VTEw7Ci0JbG9uZ19yZXR1cm4gPSBtZW0tPnNpemUgKiAobWVtLT51bml0cyAvIDEwMjQpOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotCiAgICAgY2FzZSBIUlNUT1JFX0lOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IHN0b3JlX2lkeDsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKQEAgLTY1Niw3ICs2NjAsNiBAQAogCSAqCiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAotc3RhdGljIGludCAgICAgIEZTX3N0b3JhZ2U7CiBzdGF0aWMgaW50ICAgICAgSFJTX2luZGV4OwogCiB2b2lkCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N0b3JhZ2UuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCmluZGV4IGZmYTFmNTIuLjIwMDdjMzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3RvcmFnZS5oCkBAIC0xLDEyICsxLDEyIEBACiAvKgotICogIEhvc3QgUmVzb3VyY2VzIE1JQiAtIHN0b3JhZ2UgZ3JvdXAgaW50ZXJmYWNlIC0gaHJfc3lzdGVtLmgKKyAqICBIb3N0IFJlc291cmNlcyBNSUIgLSBzdG9yYWdlIGdyb3VwIGludGVyZmFjZSAtIGhyX3N0b3JhZ2UuaAogICoKICAqLwogI2lmbmRlZiBfTUlCR1JPVVBfSFJTVE9SQUdFX0gKICNkZWZpbmUgX01JQkdST1VQX0hSU1RPUkFHRV9ICiAKIGNvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL21lbW9yeSkKLWNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZmlsZXN5cykKKy8qIGNvbmZpZ19yZXF1aXJlKGhvc3QvaHJfZmlsZXN5cykgKi8KIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfaHJfc3RvcmFnZSh2b2lkKTsKIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9ocnN0b3JlOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dpbnN0LmMKaW5kZXggY2Y5MGRmMi4uZmU5NjlhZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd2luc3QuYworKysgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3aW5zdC5jCkBAIC00NSw2ICs0NSwxMCBAQAogI2luY2x1ZGUgPHJwbS9oZWFkZXIuaD4KICNpbmNsdWRlIDxmY250bC5oPgogCisjaWZkZWYgSEFWRV9SUE1fUlBNRklMRVVUSUxfSAorI2luY2x1ZGUgPHJwbS9ycG1maWxldXRpbC5oPgorI2VuZGlmCisKICNpZmRlZiBIQVZFX1JQTUdFVFBBVEgKICNpbmNsdWRlIDxycG0vcnBtbWFjcm8uaD4KICNlbmRpZgpAQCAtMTU3LDEzICsxNjEsMjAgQEAKICNkZWZpbmUJSFJTV0lOU1RfREFURQkJNwogCiBzdHJ1Y3QgdmFyaWFibGU0IGhyc3dpbnN0X3ZhcmlhYmxlc1tdID0gewotICAgIHtIUlNXSU5TVF9DSEFOR0UsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaHJzd2luc3QsIDEsIHsxfX0sCi0gICAge0hSU1dJTlNUX1VQREFURSwgQVNOX1RJTUVUSUNLUywgUk9OTFksIHZhcl9ocnN3aW5zdCwgMSwgezJ9fSwKLSAgICB7SFJTV0lOU1RfSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgMX19LAotICAgIHtIUlNXSU5TVF9OQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgMn19LAotICAgIHtIUlNXSU5TVF9JRCwgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9ocnN3aW5zdCwgMywgezMsIDEsIDN9fSwKLSAgICB7SFJTV0lOU1RfVFlQRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd2luc3QsIDMsIHszLCAxLCA0fX0sCi0gICAge0hSU1dJTlNUX0RBVEUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJzd2luc3QsIDMsIHszLCAxLCA1fX0KKyAgICB7SFJTV0lOU1RfQ0hBTkdFLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dpbnN0LCAxLCB7MX19LAorICAgIHtIUlNXSU5TVF9VUERBVEUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd2luc3QsIDEsIHsyfX0sCisgICAge0hSU1dJTlNUX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3aW5zdCwgMywgezMsIDEsIDF9fSwKKyAgICB7SFJTV0lOU1RfTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3aW5zdCwgMywgezMsIDEsIDJ9fSwKKyAgICB7SFJTV0lOU1RfSUQsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd2luc3QsIDMsIHszLCAxLCAzfX0sCisgICAge0hSU1dJTlNUX1RZUEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgNH19LAorICAgIHtIUlNXSU5TVF9EQVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dpbnN0LCAzLCB7MywgMSwgNX19CiB9Owogb2lkICAgICAgICAgICAgIGhyc3dpbnN0X3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDYgfTsKIApAQCAtMTg2LDkgKzE5Nyw2IEBACiAjaWYgZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoSEFWRV9MSUJSUE0pCiAjZGVmaW5lCV9QQVRIX0hSU1dfZGlyZWN0b3J5CSIvdmFyL2NhY2hlL2hybWliIgogI2VuZGlmCi0jaWYgZGVmaW5lZChsaW51eCkgJiYgIWRlZmluZWQoSEFWRV9MSUJSUE0pCi0jZGVmaW5lCV9QQVRIX0hSU1dfZGlyZWN0b3J5CSIvdmFyL2NhY2hlL2hybWliIgotI2VuZGlmCiAKIHZvaWQKIGluaXRfaHJfc3dpbnN0KHZvaWQpCkBAIC0yNDQsNiArMjUyLDcgQEAKICAgICAgICAgICAgICAgICAgaHJzd2luc3RfdmFyaWFibGVzX29pZCk7CiB9CiAKKwogLyoKICAqIGhlYWRlcl9ocnN3aW5zdCguLi4KICAqIEFyZ3VtZW50czoKQEAgLTI3OCw3ICsyODcsNyBAQAogICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwogCi0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwogICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKIH0KQEAgLTM0OCw3ICszNTcsNyBAQAogICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAogICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KIAogICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX2luc3QiLCAiLi4uIGdldCBpbnN0YWxsZWQgUy9XIHN0YXRzICIpKTsKQEAgLTQ5MiwxMiArNTAxLDEyIEBACiAgICAgY2FzZSBIUlNXSU5TVF9EQVRFOgogICAgICAgICB7CiAjaWZkZWYgSEFWRV9MSUJSUE0KLSAgICAgICAgICAgIGludCAgICAgICAgICpycG1fZGF0YTsKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICAqcnBtX2RhdGE7CiAgICAgICAgICAgICBpZiAoIGhlYWRlckdldEVudHJ5KHN3aS0+c3dpX2gsIFJQTVRBR19JTlNUQUxMVElNRSwgTlVMTCwgKHZvaWQgKiopICZycG1fZGF0YSwgTlVMTCkgKSB7CiAgICAgICAgICAgICAgICAgdGltZV90ICAgICAgICAgIGluc3RhbGxUaW1lID0gKnJwbV9kYXRhOwogICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKCZpbnN0YWxsVGltZSwgdmFyX2xlbik7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKDAsIHZhcl9sZW4pOworICAgICAgICAgICAgICAgIHJldCA9IGRhdGVfbl90aW1lKE5VTEwsIHZhcl9sZW4pOwogICAgICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgICAgIGlmIChzd2ktPnN3aV9kaXJlY3RvcnkgIT0gTlVMTCkgewpAQCAtNTA4LDExICs1MTcsMTIgQEAKICAgICAgICAgICAgICAgICByZXQgPSBkYXRlX25fdGltZSgmc3RhdF9idWYuc3RfbXRpbWUsIHZhcl9sZW4pOwogICAgICAgICAgICAgfSBlbHNlIHsKICNpZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUwotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0ID0gTlVMTDsKKyNlbHNlCiAgICAgICAgICAgICAgICAgc3ByaW50ZihzdHJpbmcsICJiYWNrIGluIHRoZSBtaXN0cyBvZiB0aW1lIik7CiAgICAgICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RyaW5nKTsKICAgICAgICAgICAgICAgICByZXQgPSAodV9jaGFyICopIHN0cmluZzsKKyNlbmRpZgogICAgICAgICAgICAgfQogI2VuZGlmCiAgICAgICAgIH0KQEAgLTY4NCw3ICs2OTQsNyBAQAogICAgICAgICBzd2ktPnN3aV9uYW1lWyBzaXplb2Yoc3dpLT5zd2lfbmFtZSktMSBdID0gMDsKICAgICB9CiAjZWxzZQotICAgIHNucHJpbnRmKHN3aS0+c3dpX25hbWUsIHNpemVvZihzd2ktPnN3aV9uYW1lKSwgc3dpLT5zd2lfZGVwLT5kX25hbWUpOworICAgIHNucHJpbnRmKHN3aS0+c3dpX25hbWUsIHNpemVvZihzd2ktPnN3aV9uYW1lKSwgIiVzIiwgc3dpLT5zd2lfZGVwLT5kX25hbWUpOwogICAgIHN3aS0+c3dpX25hbWVbIHNpemVvZihzd2ktPnN3aV9uYW1lKS0xIF0gPSAwOwogI2VuZGlmCiAgICAgcmV0dXJuIDA7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N3cnVuLmMKaW5kZXggMTM0YjI3Zi4uYjE3MjdjYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zd3J1bi5jCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3dydW4uYwpAQCAtMTIyLDYgKzEyMiw4IEBACiAjaWYgZGVmaW5lZChocHV4MTApIHx8IGRlZmluZWQoaHB1eDExKQogc3RydWN0IHBzdF9zdGF0dXMgKnByb2NfdGFibGU7CiBzdHJ1Y3QgcHN0X2R5bmFtaWMgcHN0X2R5bjsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCitzdHJ1Y3Qga2luZm9fcHJvYzIgKnByb2NfdGFibGU7CiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogc3RydWN0IGtpbmZvX3Byb2MgKnByb2NfdGFibGU7CiAjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQpAQCAtMTUwLDE5ICsxNTIsMjkgQEAKICNkZWZpbmUJSFJTV1JVTlBFUkZfTUVNCQkxMAogCiBzdHJ1Y3QgdmFyaWFibGU0IGhyc3dydW5fdmFyaWFibGVzW10gPSB7Ci0gICAge0hSU1dSVU5fT1NJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd3J1biwgMSwgezF9fSwKLSAgICB7SFJTV1JVTl9JTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd3J1biwgMywgezIsIDEsIDF9fSwKLSAgICB7SFJTV1JVTl9OQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCAyfX0sCi0gICAge0hSU1dSVU5fSUQsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfaHJzd3J1biwgMywgezIsIDEsIDN9fSwKLSAgICB7SFJTV1JVTl9QQVRILCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCA0fX0sCi0gICAge0hSU1dSVU5fUEFSQU1TLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCA1fX0sCi0gICAge0hSU1dSVU5fVFlQRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaHJzd3J1biwgMywgezIsIDEsIDZ9fSwKLSAgICB7SFJTV1JVTl9TVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsyLCAxLCA3fX0KKyAgICB7SFJTV1JVTl9PU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAxLCB7MX19LAorICAgIHtIUlNXUlVOX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MiwgMSwgMX19LAorICAgIHtIUlNXUlVOX05BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDJ9fSwKKyAgICB7SFJTV1JVTl9JRCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MiwgMSwgM319LAorICAgIHtIUlNXUlVOX1BBVEgsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDR9fSwKKyAgICB7SFJTV1JVTl9QQVJBTVMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDV9fSwKKyAgICB7SFJTV1JVTl9UWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MiwgMSwgNn19LAorICAgIHtIUlNXUlVOX1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzd3J1biwgMywgezIsIDEsIDd9fQogfTsKIAogc3RydWN0IHZhcmlhYmxlNCBocnN3cnVucGVyZl92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJTV1JVTlBFUkZfQ1BVLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN3cnVuLCAzLCB7MSwgMSwgMX19LAotICAgIHtIUlNXUlVOUEVSRl9NRU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3dydW4sIDMsIHsxLCAxLCAyfX0KKyAgICB7SFJTV1JVTlBFUkZfQ1BVLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN3cnVuLCAzLCB7MSwgMSwgMX19LAorICAgIHtIUlNXUlVOUEVSRl9NRU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3dydW4sIDMsIHsxLCAxLCAyfX0KIH07CiAKIG9pZCAgICAgICAgICAgICBocnN3cnVuX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDQgfTsKQEAgLTMyNiw3ICszMzgsNyBAQAogICAgIGF1dG9fbmxpc3QoTlBST0NfU1lNQk9MLCAwLCAwKTsKICNlbmRpZgogCi0gICAgcHJvY190YWJsZSA9IDA7CisgICAgcHJvY190YWJsZSA9IE5VTEw7CiAKICAgICBSRUdJU1RFUl9NSUIoImhvc3QvaHJfc3dydW4iLCBocnN3cnVuX3ZhcmlhYmxlcywgdmFyaWFibGU0LAogICAgICAgICAgICAgICAgICBocnN3cnVuX3ZhcmlhYmxlc19vaWQpOwpAQCAtMzY5LDcgKzM4MSw3IEBACiAgICAgICAgICAgICh2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOwogICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAgICAgcmV0dXJuIChNQVRDSF9TVUNDRUVERUQpOwogfQpAQCAtNDUzLDcgKzQ2NSw3IEBACiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCiAgICAgICAgICAgICh2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOwogICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7Ci0gICAgKndyaXRlX21ldGhvZCA9IDA7CisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLwogCiAgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3dydW4iLCAiLi4uIGdldCBwcm9jZXNzIHN0YXRzICIpKTsKQEAgLTU3MCw3ICs1ODIsNyBAQAogICAgIHRpbWVfdCAgICAgICAgICBub3c7CiAgICAgc3RhdGljIGludCAgICAgIG9sZHBpZCA9IC0xOwogI2VuZGlmCi0jaWYgSEFWRV9LVk1fR0VUUFJPQ1MKKyNpZiAoZGVmaW5lZChIQVZFX0tWTV9HRVRQUk9DUykgfHwgZGVmaW5lZChIQVZFX0tWTV9HRVRQUk9DMikpCiAgICAgY2hhciAgICAgICAgICAqKmFyZ3Y7CiAjZW5kaWYKICNpZmRlZiBsaW51eApAQCAtNjcyLDYgKzY4NCwxMiBAQAogICAgICAgICBjcCA9IHN0cmNocihzdHJpbmcsICcgJyk7CiAgICAgICAgIGlmIChjcCAhPSBOVUxMKQogICAgICAgICAgICAgKmNwID0gJ1wwJzsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIHN0cmxjcHkoc3RyaW5nLCBwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9jb21tLCBzaXplb2Yoc3RyaW5nKSk7CisgICAgICAgIC8qIHByb2Nlc3MgbmFtZTogdHJ1bmNhdGUgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgc3BhY2UgKi8KKyAgICAgICAgY3AgPSBzdHJjaHIoc3RyaW5nLCAnICcpOworICAgICAgICBpZiAoY3AgIT0gTlVMTCkKKyAgICAgICAgICAgICpjcCA9ICdcMCc7CiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKICAgICAgICAgc3RyY3B5KHN0cmluZywgcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLmtpX2NvbW0pOwpAQCAtNzg5LDYgKzgwNywxMiBAQAogICAgICAgICBjcCA9IHN0cmNocihzdHJpbmcsICcgJyk7CiAgICAgICAgIGlmIChjcCAhPSBOVUxMKQogICAgICAgICAgICAgKmNwID0gJ1wwJzsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIC8qIFNob3VsZCBiZSBwYXRoLCBidXQgdGhpcyBpcyBub3QgYXZhaWxhYmxlLCBqdXN0IHVzZSBhcmd2WzBdIGFnYWluICovCisgICAgICAgIHN0cmxjcHkoc3RyaW5nLCBwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9jb21tLCBzaXplb2Yoc3RyaW5nKSk7CisgICAgICAgIGNwID0gc3RyY2hyKHN0cmluZywgJyAnKTsKKyAgICAgICAgaWYgKGNwICE9IE5VTEwpCisgICAgICAgICAgICAqY3AgPSAnXDAnOwogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKICAgICAjaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDE0CiAgICAgICAgIHN0cmNweShzdHJpbmcsIHByb2NfdGFibGVbTG93UHJvY0luZGV4XS5raV9jb21tKTsKQEAgLTg5MCw2ICs5MTQsMTcgQEAKICAgICAgICAgICAgIHNwcmludGYoc3RyaW5nLCAiJXMiLCBjcCk7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgc3RyaW5nWzBdID0gJ1wwJzsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIHN0cmluZ1swXSA9IDA7CisgICAgICAgIGFyZ3YgPSBrdm1fZ2V0YXJndjIoa2QsIHByb2NfdGFibGUgKyBMb3dQcm9jSW5kZXgsIHNpemVvZihzdHJpbmcpKTsKKyAgICAgICAgaWYgKGFyZ3YpCisgICAgICAgICAgICBhcmd2Kys7CisgICAgICAgIHdoaWxlIChhcmd2ICYmICphcmd2KSB7CisgICAgICAgICAgICBpZiAoc3RyaW5nWzBdICE9IDApCisgICAgICAgICAgICAgICAgc3RyY2F0KHN0cmluZywgIiAiKTsKKyAgICAgICAgICAgIHN0cmNhdChzdHJpbmcsICphcmd2KTsKKyAgICAgICAgICAgIGFyZ3YrKzsKKyAgICAgICAgfQogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKICAgICAgICAgc3RyaW5nWzBdID0gMDsKICAgICAgICAgYXJndiA9IGt2bV9nZXRhcmd2KGtkLCBwcm9jX3RhYmxlICsgTG93UHJvY0luZGV4LCBzaXplb2Yoc3RyaW5nKSk7CkBAIC05MDMsNyArOTM4LDcgQEAKICAgICAgICAgfQogI2VsaWYgZGVmaW5lZChsaW51eCkKICAgICAgICAgbWVtc2V0KGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOwotICAgICAgICBpZiggKGNwPWdldF9wcm9jX25hbWVfZnJvbV9jbWRsaW5lKHBpZCxidWYsc2l6ZW9mKGJ1ZiktMikpID09IE5VTEwgKSB7CisJaWYoIChjcD1nZXRfcHJvY19uYW1lX2Zyb21fY21kbGluZShwaWQsYnVmLHNpemVvZihidWYpLTIpKSA9PSBOVUxMICkgewogICAgICAgICAgICAgc3RyY3B5KHN0cmluZywgIiIpOwogICAgICAgICAgICAgKnZhcl9sZW4gPSAwOwogICAgICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RyaW5nOwpAQCAtOTU3LDYgKzk5MiwxMSBAQAogCQkJbG9uZ19yZXR1cm4gPSAyOwkvKiBrZXJuZWwgcHJvY2VzcyAqLwogCQl9IGVsc2UKIAkJCWxvbmdfcmV0dXJuID0gNDsJLyogYXBwbGljYXRpb24gKi8KKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIGlmIChwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9mbGFnICYgUF9TWVNURU0pCisJICAgIGxvbmdfcmV0dXJuID0gMjsJLyogb3BlcmF0aW5nU3lzdGVtICovCisJZWxzZQorCSAgICBsb25nX3JldHVybiA9IDQ7CS8qIGFwcGxpY2F0aW9uICovCiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKIAlpZiAocHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLmtpX2ZsYWcgJiBQX1NZU1RFTSkgewpAQCAtMTAxNCw3ICsxMDU0LDkgQEAKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAjZWxzZQotI2lmIEhBVkVfS1ZNX0dFVFBST0NTCisjaWYgSEFWRV9LVk1fR0VUUFJPQzIKKyAgICAgICAgc3dpdGNoIChwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9zdGF0KSB7CisjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKICAgICAgICAgc3dpdGNoIChwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ua2lfc3RhdCkgewogICAgICNlbGlmIGRlZmluZWQoZHJhZ29uZmx5KSAmJiBfX0RyYWdvbkZseV92ZXJzaW9uID49IDE5MDAwMApAQCAtMTEwOSw2ICsxMTUxLDEwIEBACiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IHByb2NfYnVmLT5wX3V0aW1lICogMTAwICsgcHJvY19idWYtPnBfc3RpbWUgKiAxMDA7CiAjZW5kaWYKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIGxvbmdfcmV0dXJuID0gcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdXRpY2tzICsKKyAgICAgICAgICAgIHByb2NfdGFibGVbTG93UHJvY0luZGV4XS5wX3N0aWNrcyArCisgICAgICAgICAgICBwcm9jX3RhYmxlW0xvd1Byb2NJbmRleF0ucF9pdGlja3M7CiAjZWxpZiBIQVZFX0tWTV9HRVRQUk9DUwogICAgICNpZiBkZWZpbmVkKE5PVF9ERUZJTkVEKSAmJiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAwMTQKICAgICAgICAgLyogWFhYOiBBY2Nlc3Npbmcga2lfcGFkZHIgY2F1c2VzIHNpZzEwIC4uLgpAQCAtMTIyNSw2ICsxMjcxLDExIEBACiAjZW5kaWYKICNlbGlmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBpX3NpemUgKiBnZXRwYWdlc2l6ZSgpIC8gMTAyNDsKKyNlbGlmIEhBVkVfS1ZNX0dFVFBST0MyCisgICAgICAgIGxvbmdfcmV0dXJuID0gcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdm1fdHNpemUgKworICAgICAgICAgICAgcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdm1fc3NpemUgKworICAgICAgICAgICAgcHJvY190YWJsZVtMb3dQcm9jSW5kZXhdLnBfdm1fZHNpemU7CisgICAgICAgIGxvbmdfcmV0dXJuID0gbG9uZ19yZXR1cm4gKiAoZ2V0cGFnZXNpemUoKSAvIDEwMjQpOwogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MgJiYgIWRlZmluZWQoZGFyd2luOCkKICAgI2lmIGRlZmluZWQoTk9UX0RFRklORUQpICYmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDAxNAogCSAgICAvKiBYWFgKQEAgLTE0OTUsNiArMTU0NiwxNCBAQAogCQkJcHJvY190YWJsZSA9IHJlYWxsb2MocHJvY190YWJsZSwgYXZhaWwgKiBzaXplb2YocHJvY190YWJsZVswXSkpOwogCQl9CiAgICAgfQorI2VsaWYgSEFWRV9LVk1fR0VUUFJPQzIKKyAgICB7CisgICAgICAgIGlmIChrZCA9PSBOVUxMKSB7CisgICAgICAgICAgICBucHJvYyA9IDA7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgcHJvY190YWJsZSA9IGt2bV9nZXRwcm9jMihrZCwgS0VSTl9QUk9DX0FMTCwgMCwgc2l6ZW9mIChzdHJ1Y3Qga2luZm9fcHJvYzIpLCAmbnByb2MpOworICAgIH0KICNlbGlmIEhBVkVfS1ZNX0dFVFBST0NTCiAgICAgewogICAgICAgICBpZiAoa2QgPT0gTlVMTCkgewpAQCAtMTU1NSw2ICsxNjE0LDkgQEAKICAgICAgICAgcmV0dXJuIHByb2NfdGFibGVbY3VycmVudF9wcm9jX2VudHJ5KytdLnBzdF9waWQ7CiAjZWxpZiBkZWZpbmVkKHNvbGFyaXMyKQogICAgICAgICByZXR1cm4gcHJvY190YWJsZVtjdXJyZW50X3Byb2NfZW50cnkrK107CisjZWxpZiBIQVZFX0tWTV9HRVRQUk9DMgorICAgICAgICBpZiAocHJvY190YWJsZVtjdXJyZW50X3Byb2NfZW50cnldLnBfc3RhdCAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIHByb2NfdGFibGVbY3VycmVudF9wcm9jX2VudHJ5KytdLnBfcGlkOwogI2VsaWYgSEFWRV9LVk1fR0VUUFJPQ1MKICAgICAjaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMDE0CiAgICAgICAgIGlmIChwcm9jX3RhYmxlW2N1cnJlbnRfcHJvY19lbnRyeV0ua2lfc3RhdCAhPSAwKQpAQCAtMTU5NSwxMyArMTY1NywxMyBAQAogaW50CiBjb3VudF9wcm9jZXNzZXModm9pZCkKIHsKLSNpZiAhKGRlZmluZWQobGludXgpIHx8IGRlZmluZWQoY3lnd2luKSB8fCBkZWZpbmVkKGhwdXgxMCkgfHwgZGVmaW5lZChocHV4MTEpIHx8IGRlZmluZWQoc29sYXJpczIpIHx8IEhBVkVfS1ZNX0dFVFBST0NTIHx8IGRlZmluZWQoZHluaXgpKQorI2lmICEoZGVmaW5lZChsaW51eCkgfHwgZGVmaW5lZChjeWd3aW4pIHx8IGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkgfHwgZGVmaW5lZChzb2xhcmlzMikgfHwgSEFWRV9LVk1fR0VUUFJPQ1MgfHwgSEFWRV9LVk1fR0VUUFJPQzIgfHwgZGVmaW5lZChkeW5peCkpCiAgICAgaW50ICAgICAgICAgICAgIGk7CiAjZW5kaWYKICAgICBpbnQgICAgICAgICAgICAgdG90YWwgPSAwOwogCiAgICAgSW5pdF9IUl9TV1J1bigpOwotI2lmIGRlZmluZWQoaHB1eDEwKSB8fCBkZWZpbmVkKGhwdXgxMSkgfHwgSEFWRV9LVk1fR0VUUFJPQ1MgfHwgZGVmaW5lZChzb2xhcmlzMikKKyNpZiBkZWZpbmVkKGhwdXgxMCkgfHwgZGVmaW5lZChocHV4MTEpIHx8IEhBVkVfS1ZNX0dFVFBST0NTIHx8IEhBVkVfS1ZNX0dFVFBST0MyIHx8IGRlZmluZWQoc29sYXJpczIpCiAgICAgdG90YWwgPSBucHJvYzsKICNlbHNlCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKQEAgLTE2MTUsNyArMTY3Nyw3IEBACiAjZW5kaWYKICAgICAgICAgKyt0b3RhbDsKICAgICB9Ci0jZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFocHV4MTAgJiYgIWhwdXgxMSAmJiAhSEFWRV9LVk1fR0VUUFJPQ1MgJiYgIXNvbGFyaXMyICovCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFocHV4MTAgJiYgIWhwdXgxMSAmJiAhSEFWRV9LVk1fR0VUUFJPQ1MgJiYgIUhBVkVfS1ZNX0dFVFBST0MyICYmICFzb2xhcmlzMiAqLwogICAgIEVuZF9IUl9TV1J1bigpOwogICAgIHJldHVybiB0b3RhbDsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyX3N5c3RlbS5jCmluZGV4IGNiYzhmYzguLjg4YjBmYmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJfc3lzdGVtLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocl9zeXN0ZW0uYwpAQCAtMTA2LDcgKzEwNiw3IEBACiBzdGF0aWMgaW50ICAgICAgZ2V0X2xvYWRfZGV2KHZvaWQpOwogc3RhdGljIGludCAgICAgIGNvdW50X3VzZXJzKHZvaWQpOwogZXh0ZXJuIGludCAgICAgIGNvdW50X3Byb2Nlc3Nlcyh2b2lkKTsKLQorZXh0ZXJuIGludCAgICAgIHN3cnVuX2NvdW50X3Byb2Nlc3Nlcyh2b2lkKTsKIAogICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCiAJICoKQEAgLTEyNCwyMyArMTI0LDM3IEBACiAKICNpZiBkZWZpbmVkKHNvbGFyaXMyKQogc3RydWN0IHZhcmlhYmxlMiBocnN5c3RlbV92YXJpYWJsZXNbXSA9IHsKLSAgICB7SFJTWVNfVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7MX19LAotICAgIHtIUlNZU19EQVRFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ocnN5cywgMSwgezJ9fSwKLSAgICB7SFJTWVNfTE9BRF9ERVYsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7M319LAotICAgIHtIUlNZU19MT0FEX1BBUkFNLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9ocnN5cywgMSwgezR9fSwKLSAgICB7SFJTWVNfVVNFUlMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezV9fSwKLSAgICB7SFJTWVNfUFJPQ1MsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezZ9fSwKLSAgICB7SFJTWVNfTUFYUFJPQ1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7N319CisgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezF9fSwKKyAgICB7SFJTWVNfREFURSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaHJzeXMsIDEsIHsyfX0sCisgICAge0hSU1lTX0xPQURfREVWLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezN9fSwKKyAgICB7SFJTWVNfTE9BRF9QQVJBTSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaHJzeXMsIDEsIHs0fX0sCisgICAge0hSU1lTX1VTRVJTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs1fX0sCisgICAge0hSU1lTX1BST0NTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs2fX0sCisgICAge0hSU1lTX01BWFBST0NTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezd9fQogfTsKICNlbHNlCiBzdHJ1Y3QgdmFyaWFibGUyIGhyc3lzdGVtX3ZhcmlhYmxlc1tdID0gewotICAgIHtIUlNZU19VUFRJTUUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaHJzeXMsIDEsIHsxfX0sCi0gICAge0hSU1lTX0RBVEUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaHJzeXMsIDEsIHsyfX0sCi0gICAge0hSU1lTX0xPQURfREVWLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9ocnN5cywgMSwgezN9fSwKLSAgICB7SFJTWVNfTE9BRF9QQVJBTSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9ocnN5cywgMSwgezR9fSwKLSAgICB7SFJTWVNfVVNFUlMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezV9fSwKLSAgICB7SFJTWVNfUFJPQ1MsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9ocnN5cywgMSwgezZ9fSwKLSAgICB7SFJTWVNfTUFYUFJPQ1MsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2hyc3lzLCAxLCB7N319CisgICAge0hSU1lTX1VQVElNRSwgQVNOX1RJTUVUSUNLUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezF9fSwKKyAgICB7SFJTWVNfREFURSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN5cywgMSwgezJ9fSwKKyAgICB7SFJTWVNfTE9BRF9ERVYsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7M319LAorICAgIHtIUlNZU19MT0FEX1BBUkFNLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7NH19LAorICAgIHtIUlNZU19VU0VSUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7NX19LAorICAgIHtIUlNZU19QUk9DUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3lzLCAxLCB7Nn19LAorICAgIHtIUlNZU19NQVhQUk9DUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzeXMsIDEsIHs3fX0KIH07CiAjZW5kaWYKIG9pZCAgICAgICAgICAgICBocnN5c3RlbV92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAxIH07CkBAIC0xOTEsNyArMjA1LDcgQEAKICAgICAgICAgICAgKHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKIAotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KICAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7CiB9IC8qIGVuZCBoZWFkZXJfaHJzeXMgKi8KQEAgLTIzOCw3ICsyNTIsNyBAQAogI2lmIGRlZmluZWQoSEFWRV9NS1RJTUUpICYmIGRlZmluZWQoSEFWRV9TVElNRSkKICAgICAgICAgKndyaXRlX21ldGhvZD1uc19zZXRfdGltZTsKICNlbmRpZgotICAgICAgICAodm9pZCAqKSB0aW1lKCZub3cpOworICAgICAgICB0aW1lKCZub3cpOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBkYXRlX25fdGltZSgmbm93LCB2YXJfbGVuKTsKICAgICBjYXNlIEhSU1lTX0xPQURfREVWOgogICAgICAgICBsb25nX3JldHVybiA9IGdldF9sb2FkX2RldigpOwpAQCAtMjcwLDcgKzI4NCw5IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gY291bnRfdXNlcnMoKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBjYXNlIEhSU1lTX1BST0NTOgotI2lmIFVTSU5HX0hPU1RfSFJfU1dSVU5fTU9EVUxFCisjaWYgVVNJTkdfSE9TVF9EQVRBX0FDQ0VTU19TV1JVTl9NT0RVTEUKKyAgICAgICAgbG9uZ19yZXR1cm4gPSBzd3J1bl9jb3VudF9wcm9jZXNzZXMoKTsKKyNlbGlmIFVTSU5HX0hPU1RfSFJfU1dSVU5fTU9EVUxFCiAgICAgICAgIGxvbmdfcmV0dXJuID0gY291bnRfcHJvY2Vzc2VzKCk7CiAjZWxzZQogI2lmIE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMgYi9hZ2VudC9taWJncm91cC9ob3N0L2hyaF9maWxlc3lzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM3NWIxYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuYwpAQCAtMCwwICsxLDQyNCBAQAorLyoKKyAqICBIb3N0IFJlc291cmNlcyBNSUIgLSBGaWxlIFN5c3RlbSBkZXZpY2UgZ3JvdXAgaW1wbGVtZW50YXRpb24gKEhBTCByZXdyaXRlKSAtIGhyaF9maWxlc3lzLmMKKyAqCisgKi8KKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL21lbW9yeS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaD4KKyNpbmNsdWRlICJob3N0X3Jlcy5oIgorI2luY2x1ZGUgImhyaF9maWxlc3lzLmgiCisjaW5jbHVkZSAiaHJoX3N0b3JhZ2UuaCIKKyNpbmNsdWRlICJocl9kaXNrLmgiCisjaW5jbHVkZSA8bmV0LXNubXAvdXRpbGl0aWVzLmg+CisKKyNpZiBIQVZFX01OVEVOVF9ICisjaW5jbHVkZSA8bW50ZW50Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19NTlRFTlRfSAorI2luY2x1ZGUgPHN5cy9tbnRlbnQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX01OVFRBQl9ICisjaW5jbHVkZSA8c3lzL21udHRhYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU1RBVFZGU19ICisjaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1ZGU19ICisjaW5jbHVkZSA8c3lzL3Zmcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAorI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorCisjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKKyNpbmNsdWRlIDxzeXMvbW50Y3RsLmg+CisjaW5jbHVkZSA8c3lzL3Ztb3VudC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KKyNlbmRpZgorCisKKyNkZWZpbmUgSFJGU19NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLAorCSAqICAgYW5kIGludGVybmFsIGZvcndhcmQgZGVjbGFyYXRpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworbmV0c25tcF9mc3lzX2luZm8gKkhSRlNfZW50cnk7CisKKyNkZWZpbmUJRlVMTF9EVU1QCTAKKyNkZWZpbmUJUEFSVF9EVU1QCTEKKworZXh0ZXJuIHZvaWQgICAgIEluaXRfSFJfRmlsZVN5cyh2b2lkKTsKK2V4dGVybiBpbnQgICAgICBHZXRfTmV4dF9IUl9GaWxlU3lzKHZvaWQpOworY2hhciAgICAgICAgICAgKmNvb2tfZGV2aWNlKGNoYXIgKik7CitzdGF0aWMgdV9jaGFyICAqd2hlbl9kdW1wZWQoY2hhciAqZmlsZXN5cywgaW50IGxldmVsLCBzaXplX3QgKiBsZW5ndGgpOworaW50ICAgICAgICAgICAgIGhlYWRlcl9ocmhmaWxlc3lzKHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqLCBXcml0ZU1ldGhvZCAqKik7CisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgorCSAqCisJICogIEluaXRpYWxpc2F0aW9uICYgY29tbW9uIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucworCSAqCisJICoqKioqKioqKioqKioqKioqKioqKi8KKworI2RlZmluZSBIUkZTWVNfSU5ERVgJCTEKKyNkZWZpbmUgSFJGU1lTX01PVU5UCQkyCisjZGVmaW5lIEhSRlNZU19STU9VTlQJCTMKKyNkZWZpbmUgSFJGU1lTX1RZUEUJCTQKKyNkZWZpbmUgSFJGU1lTX0FDQ0VTUwkJNQorI2RlZmluZSBIUkZTWVNfQk9PVAkJNgorI2RlZmluZSBIUkZTWVNfU1RPUkVJRFgJCTcKKyNkZWZpbmUgSFJGU1lTX0ZVTExEVU1QCQk4CisjZGVmaW5lIEhSRlNZU19QQVJURFVNUAkJOQorCitzdHJ1Y3QgdmFyaWFibGU0IGhyZnN5c192YXJpYWJsZXNbXSA9IHsKKyAgICB7SFJGU1lTX0lOREVYLCAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyaGZpbGVzeXMsIDIsIHsxLCAxfX0sCisgICAge0hSRlNZU19NT1VOVCwgICAgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmhmaWxlc3lzLCAyLCB7MSwgMn19LAorICAgIHtIUkZTWVNfUk1PVU5ULCAgIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJoZmlsZXN5cywgMiwgezEsIDN9fSwKKyAgICB7SFJGU1lTX1RZUEUsICAgICBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyaGZpbGVzeXMsIDIsIHsxLCA0fX0sCisgICAge0hSRlNZU19BQ0NFU1MsICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmhmaWxlc3lzLCAyLCB7MSwgNX19LAorICAgIHtIUkZTWVNfQk9PVCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJoZmlsZXN5cywgMiwgezEsIDZ9fSwKKyAgICB7SFJGU1lTX1NUT1JFSURYLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyaGZpbGVzeXMsIDIsIHsxLCA3fX0sCisgICAge0hSRlNZU19GVUxMRFVNUCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocmhmaWxlc3lzLCAyLCB7MSwgOH19LAorICAgIHtIUkZTWVNfUEFSVERVTVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJoZmlsZXN5cywgMiwgezEsIDl9fSwKK307CitvaWQgICAgICAgICAgICAgaHJmc3lzX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMjUsIDMsIDggfTsKKwordm9pZAoraW5pdF9ocmhfZmlsZXN5cyh2b2lkKQoreworICAgIFJFR0lTVEVSX01JQigiaG9zdC9ocl9maWxlc3lzIiwgaHJmc3lzX3ZhcmlhYmxlcywgdmFyaWFibGU0LAorICAgICAgICAgICAgICAgICBocmZzeXNfdmFyaWFibGVzX29pZCk7Cit9CisKKy8qCisgKiBoZWFkZXJfaHJoZmlsZXN5cyguLi4KKyAqIEFyZ3VtZW50czoKKyAqIHZwICAgICBJTiAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlCisgKiBuYW1lICAgIElOL09VVCAgLSBJTi9uYW1lIHJlcXVlc3RlZCwgT1VUL25hbWUgZm91bmQKKyAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MgCisgKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKKyAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCisgKiB3cml0ZV9tZXRob2QKKyAqIAorICovCisKK2ludAoraGVhZGVyX2hyaGZpbGVzeXMoc3RydWN0IHZhcmlhYmxlICp2cCwKKyAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKK3sKKyNkZWZpbmUgSFJGU1lTX0VOVFJZX05BTUVfTEVOR1RICTExCisgICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOworICAgIGludCAgICAgICAgICAgICBmc3lzX2lkeCwgTG93SW5kZXggPSAtMTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OworCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfZmlsZXN5cyIsICJ2YXJfaHJoZmlsZXN5czogIikpOworICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9maWxlc3lzIiwgbmFtZSwgKmxlbmd0aCkpOworICAgIERFQlVHTVNHKCgiaG9zdC9ocl9maWxlc3lzIiwgIiAlZFxuIiwgZXhhY3QpKTsKKworICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7CisgICAgLyoKKyAgICAgKiBGaW5kICJuZXh0IiBmaWxlIHN5c3RlbSBlbnRyeSAKKyAgICAgKi8KKworICAgIEluaXRfSFJfRmlsZVN5cygpOworICAgIGZvciAoOzspIHsKKyAgICAgICAgZnN5c19pZHggPSBHZXRfTmV4dF9IUl9GaWxlU3lzKCk7CisgICAgICAgIGlmIChmc3lzX2lkeCA9PSAtMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBuZXduYW1lW0hSRlNZU19FTlRSWV9OQU1FX0xFTkdUSF0gPSBmc3lzX2lkeDsKKyAgICAgICAgcmVzdWx0ID0gc25tcF9vaWRfY29tcGFyZShuYW1lLCAqbGVuZ3RoLCBuZXduYW1lLCB2cC0+bmFtZWxlbiArIDEpOworICAgICAgICBpZiAoZXhhY3QgJiYgKHJlc3VsdCA9PSAwKSkgeworICAgICAgICAgICAgTG93SW5kZXggPSBmc3lzX2lkeDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICgoIWV4YWN0ICYmIChyZXN1bHQgPCAwKSkgJiYKKyAgICAgICAgICAgIChMb3dJbmRleCA9PSAtMSB8fCBmc3lzX2lkeCA8IExvd0luZGV4KSkgeworICAgICAgICAgICAgTG93SW5kZXggPSBmc3lzX2lkeDsKKyNpZmRlZiBIUkZTX01PTk9UT05JQ0FMTFlfSU5DUkVBU0lORworICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChMb3dJbmRleCA9PSAtMSkgeworICAgICAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIi4uLiBpbmRleCBvdXQgb2YgcmFuZ2VcbiIpKTsKKyAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOworICAgIH0KKworICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAorICAgICAgICAgICAodnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKKyAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCisKKyAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9maWxlc3lzIiwgIi4uLiBnZXQgZmlsZXN5cyBzdGF0cyAiKSk7CisgICAgREVCVUdNU0dPSUQoKCJob3N0L2hyX2ZpbGVzeXMiLCBuYW1lLCAqbGVuZ3RoKSk7CisgICAgREVCVUdNU0coKCJob3N0L2hyX2ZpbGVzeXMiLCAiXG4iKSk7CisKKyAgICByZXR1cm4gTG93SW5kZXg7Cit9CisKKworb2lkICAgICAgICAgICAgIGZzeXNfdHlwZV9pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMywgOSwgMSB9OyAgICAgLyogaHJGU090aGVyICovCitpbnQgICAgICAgICAgICAgZnN5c190eXBlX2xlbiA9CisgICAgc2l6ZW9mKGZzeXNfdHlwZV9pZCkgLyBzaXplb2YoZnN5c190eXBlX2lkWzBdKTsKKworCisKKyAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgorCSAqCisJICogIFN5c3RlbSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKKwkgKgorCSAqKioqKioqKioqKioqKioqKioqKiovCisKKwordV9jaGFyICAgICAgICAgKgordmFyX2hyaGZpbGVzeXMoc3RydWN0IHZhcmlhYmxlICp2cCwKKyAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZnN5c19pZHg7CisgICAgc3RhdGljIGNoYXIgICAgIHN0cmluZ1sxMDI0XTsKKworICAgIGZzeXNfaWR4ID0KKyAgICAgICAgaGVhZGVyX2hyaGZpbGVzeXModnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCk7CisgICAgaWYgKGZzeXNfaWR4ID09IE1BVENIX0ZBSUxFRCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworICAgIGNhc2UgSFJGU1lTX0lOREVYOgorICAgICAgICBsb25nX3JldHVybiA9IGZzeXNfaWR4OworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGNhc2UgSFJGU1lTX01PVU5UOgorICAgICAgICBzbnByaW50ZihzdHJpbmcsIHNpemVvZihzdHJpbmcpLCBIUkZTX2VudHJ5LT5wYXRoKTsKKyAgICAgICAgc3RyaW5nWyBzaXplb2Yoc3RyaW5nKS0xIF0gPSAwOworICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzdHJpbmc7CisgICAgY2FzZSBIUkZTWVNfUk1PVU5UOgorICAgICAgICBpZiAoSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUkVNT1RFKSB7CisgICAgICAgICAgICBzbnByaW50ZihzdHJpbmcsIHNpemVvZihzdHJpbmcpLCBIUkZTX2VudHJ5LT5kZXZpY2UpOworICAgICAgICAgICAgc3RyaW5nWyBzaXplb2Yoc3RyaW5nKS0xIF0gPSAwOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHN0cmluZ1swXSA9ICdcMCc7CisgICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN0cmluZyk7CisgICAgICAgIHJldHVybiAodV9jaGFyICopIHN0cmluZzsKKworICAgIGNhc2UgSFJGU1lTX1RZUEU6CisgICAgICAgIGZzeXNfdHlwZV9pZFtmc3lzX3R5cGVfbGVuIC0gMV0gPSAKKyAgICAgICAgICAgIChIUkZTX2VudHJ5LT50eXBlID4gX05FVFNOTVBfRlNfVFlQRV9MT0NBTCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0ZTX1RZUEVfT1RIRVIgOiBIUkZTX2VudHJ5LT50eXBlKTsKKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YoZnN5c190eXBlX2lkKTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgZnN5c190eXBlX2lkOworCisgICAgY2FzZSBIUkZTWVNfQUNDRVNTOgorCWxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUk9OTFkgPyAyIDogMTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKKyAgICBjYXNlIEhSRlNZU19CT09UOgorCWxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfQk9PVEFCTEUgPyAxIDogMjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKKyAgICBjYXNlIEhSRlNZU19TVE9SRUlEWDoKKyAgICAgICAgbG9uZ19yZXR1cm4gPSBmc3lzX2lkeCArIE5FVFNOTVBfTUVNX1RZUEVfTUFYOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGNhc2UgSFJGU1lTX0ZVTExEVU1QOgorICAgICAgICByZXR1cm4gd2hlbl9kdW1wZWQoSFJGU19lbnRyeS0+cGF0aCwgRlVMTF9EVU1QLCB2YXJfbGVuKTsKKyAgICBjYXNlIEhSRlNZU19QQVJURFVNUDoKKyAgICAgICAgcmV0dXJuIHdoZW5fZHVtcGVkKEhSRlNfZW50cnktPnBhdGgsIFBBUlRfRFVNUCwgdmFyX2xlbik7CisgICAgZGVmYXVsdDoKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9ocmhmaWxlc3lzXG4iLAorICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIGludCAgICAgIEhSRlNfaW5kZXg7CisKK3ZvaWQKK0luaXRfSFJfRmlsZVN5cyh2b2lkKQoreworICAgIG5ldHNubXBfY2FjaGUgKmMgPSBuZXRzbm1wX2ZzeXNfZ2V0X2NhY2hlKCk7CisgICAgbmV0c25tcF9jYWNoZV9jaGVja19hbmRfcmVsb2FkKCBjICk7CisKKyAgICBIUkZTX2VudHJ5ID0gTlVMTDsKK30KKworaW50CitHZXRfTmV4dF9IUl9GaWxlU3lzKHZvaWQpCit7CisgICAgaWYgKCBIUkZTX2VudHJ5ICkgeworICAgICAgICBIUkZTX2VudHJ5ID0gbmV0c25tcF9mc3lzX2dldF9uZXh0KCBIUkZTX2VudHJ5ICk7CisgICAgfSBlbHNlIHsgICAgIAorICAgICAgICBIUkZTX2VudHJ5ID0gbmV0c25tcF9mc3lzX2dldF9maXJzdCgpOworICAgIH0KKyAgICAvKiBTa2lwICJpbmFjdGl2ZSIgZW50cmllcyAqLworICAgIHdoaWxlICggSFJGU19lbnRyeSAmJiAhKEhSRlNfZW50cnktPmZsYWdzICYgTkVUU05NUF9GU19GTEFHX0FDVElWRSkpCisgICAgICAgIEhSRlNfZW50cnkgPSBuZXRzbm1wX2ZzeXNfZ2V0X25leHQoIEhSRlNfZW50cnkgKTsKKworICAgIHJldHVybiAoSFJGU19lbnRyeSA/IEhSRlNfZW50cnktPmlkeC5vaWRzWzBdIDogLTEgKTsKK30KKworCisKK3N0YXRpYyB1X2NoYXIgICoKK3doZW5fZHVtcGVkKGNoYXIgKmZpbGVzeXMsIGludCBsZXZlbCwgc2l6ZV90ICogbGVuZ3RoKQoreworICAgIHRpbWVfdCAgICAgICAgICBkdW1wZGF0ZSA9IDAsIHRtcDsKKyAgICBGSUxFICAgICAgICAgICAqZHVtcF9mcDsKKyAgICBjaGFyICAgICAgICAgICAgbGluZVsxMDI0XTsKKyAgICBjaGFyICAgICAgICAgICAqY3AxLCAqY3AyLCAqY3AzOworCisgICAgLyoKKyAgICAgKiBMb29rIGZvciB0aGUgcmVsZXZlbnQgZW50cmllcyBpbiAvZXRjL2R1bXBkYXRlcworICAgICAqCisgICAgICogVGhpcyBpcyBjb21wbGljYXRlZCBieSB0aGUgZmFjdCB0aGF0IGRpc2tzIGFyZQorICAgICAqICAgbW91bnRlZCB1c2luZyBibG9jayBkZXZpY2VzLCBidXQgZHVtcHMgYXJlCisgICAgICogICBkb25lIHZpYSB0aGUgcmF3IGNoYXJhY3RlciBkZXZpY2VzLgorICAgICAqIFRodXMgdGhlIGRldmljZSBuYW1lcyBpbiAvZXRjL2R1bXBkYXRlcyBhbmQKKyAgICAgKiAgIC9ldGMvbW50dGFiIGRvbid0IG1hdGNoLgorICAgICAqICAgVGhlc2UgY29tcGFyaXNvbnMgYXJlIHRoZXJlZm9yZSBtYWRlIHVzaW5nIHRoZQorICAgICAqICAgZmluYWwgcG9ydGlvbiBvZiB0aGUgZGV2aWNlIG5hbWUgb25seS4KKyAgICAgKi8KKworICAgIGlmICgqZmlsZXN5cyA9PSAnXDAnKSAgICAgICAvKiBObyBmaWxlc3lzdGVtIG5hbWU/ICovCisgICAgICAgIHJldHVybiBkYXRlX25fdGltZShOVUxMLCBsZW5ndGgpOworICAgIGNwMSA9IHN0cnJjaHIoZmlsZXN5cywgJy8nKTsgICAgICAgIC8qIEZpbmQgdGhlIGxhc3QgZWxlbWVudCBvZiB0aGUgY3VycmVudCBGUyAqLworCisgICAgaWYgKGNwMSA9PSBOVUxMKQorICAgICAgICBjcDEgPSBmaWxlc3lzOworCisgICAgaWYgKChkdW1wX2ZwID0gZm9wZW4oIi9ldGMvZHVtcGRhdGVzIiwgInIiKSkgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIGRhdGVfbl90aW1lKE5VTEwsIGxlbmd0aCk7CisKKyAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBkdW1wX2ZwKSAhPSBOVUxMKSB7CisgICAgICAgIGNwMiA9IHN0cmNocihsaW5lLCAnICcpOyAgICAgICAgLyogU3RhcnQgYnkgbG9va2luZyBhdCB0aGUgZGV2aWNlIG5hbWUgb25seSAqLworICAgICAgICBpZiAoY3AyICE9IE5VTEwpIHsKKyAgICAgICAgICAgICpjcDIgPSAnXDAnOworICAgICAgICAgICAgY3AzID0gc3RycmNocihsaW5lLCAnLycpOyAgIC8qIGFuZCBmaW5kIHRoZSBsYXN0IGVsZW1lbnQgKi8KKyAgICAgICAgICAgIGlmIChjcDMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBjcDMgPSBsaW5lOworCisgICAgICAgICAgICBpZiAoc3RyY21wKGNwMSwgY3AzKSAhPSAwKSAgLyogV3JvbmcgRlMgKi8KKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgKytjcDI7CisgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqY3AyKSkKKyAgICAgICAgICAgICAgICArK2NwMjsgICAgICAgICAgLyogTm93IGZpbmQgdGhlIGR1bXAgbGV2ZWwgKi8KKworICAgICAgICAgICAgaWYgKGxldmVsID09IEZVTExfRFVNUCkgeworICAgICAgICAgICAgICAgIGlmICgqKGNwMisrKSAhPSAnMCcpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIE5vdCBpbnRlcmVzdGVkIGluIHBhcnRpYWwgZHVtcHMgKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqY3AyKSkKKyAgICAgICAgICAgICAgICAgICAgKytjcDI7CisKKyAgICAgICAgICAgICAgICBkdW1wZGF0ZSA9IGN0aW1lX3RvX3RpbWV0KGNwMik7CisgICAgICAgICAgICAgICAgZmNsb3NlKGR1bXBfZnApOworICAgICAgICAgICAgICAgIHJldHVybiBkYXRlX25fdGltZSgmZHVtcGRhdGUsIGxlbmd0aCk7CisgICAgICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgIC8qIFBhcnRpYWwgRHVtcCAqLworICAgICAgICAgICAgICAgIGlmICgqKGNwMisrKSA9PSAnMCcpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAgIC8qIE5vdCBpbnRlcmVzdGVkIGluIGZ1bGwgZHVtcHMgKi8KKyAgICAgICAgICAgICAgICB3aGlsZSAoaXNzcGFjZSgqY3AyKSkKKyAgICAgICAgICAgICAgICAgICAgKytjcDI7CisKKyAgICAgICAgICAgICAgICB0bXAgPSBjdGltZV90b190aW1ldChjcDIpOworICAgICAgICAgICAgICAgIGlmICh0bXAgPiBkdW1wZGF0ZSkKKyAgICAgICAgICAgICAgICAgICAgZHVtcGRhdGUgPSB0bXA7ICAgICAvKiBSZW1lbWJlciB0aGUgJ2xhdGVzdCcgcGFydGlhbCBkdW1wICovCisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmY2xvc2UoZHVtcF9mcCk7CisKKyAgICByZXR1cm4gZGF0ZV9uX3RpbWUoJmR1bXBkYXRlLCBsZW5ndGgpOworfQorCisKKyNkZWZpbmUgUkFXX0RFVklDRV9QUkVGSVgJIi9kZXYvcmRzayIKKyNkZWZpbmUgQ09PS0VEX0RFVklDRV9QUkVGSVgJIi9kZXYvZHNrIgorCitjaGFyICAgICAgICAgICAqCitjb29rX2RldmljZShjaGFyICpkZXYpCit7CisgICAgc3RhdGljIGNoYXIgICAgIGNvb2tlZF9kZXZbU05NUF9NQVhQQVRIKzFdOworCisgICAgaWYgKCFzdHJuY21wKGRldiwgUkFXX0RFVklDRV9QUkVGSVgsIHN0cmxlbihSQVdfREVWSUNFX1BSRUZJWCkpKSB7CisgICAgICAgIHN0cmxjcHkoY29va2VkX2RldiwgQ09PS0VEX0RFVklDRV9QUkVGSVgsIHNpemVvZihjb29rZWRfZGV2KSk7CisgICAgICAgIHN0cmxjYXQoY29va2VkX2RldiwgZGV2ICsgc3RybGVuKFJBV19ERVZJQ0VfUFJFRklYKSwKKyAgICAgICAgICAgICAgICBzaXplb2YoY29va2VkX2RldikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0cmxjcHkoY29va2VkX2RldiwgZGV2LCBzaXplb2YoY29va2VkX2RldikpOworICAgIH0KKworICAgIHJldHVybiBjb29rZWRfZGV2OworfQorCisKK2ludAorR2V0X0ZTSW5kZXgoY2hhciAqZGV2KQoreworICAgIG5ldHNubXBfZnN5c19pbmZvICpmc3lzOworCisgICAgZnN5cyA9IG5ldHNubXBfZnN5c19ieV9kZXZpY2UoIGRldiwgTkVUU05NUF9GU19GSU5EX0VYSVNUICk7CisgICAgcmV0dXJuIChmc3lzID8gZnN5cy0+aWR4Lm9pZHNbMF0gOiAtMSApOworfQorCitsb25nCitHZXRfRlNTaXplKGNoYXIgKmRldikKK3sKKyAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqZnN5czsKKworICAgIGZzeXMgPSBuZXRzbm1wX2ZzeXNfYnlfZGV2aWNlKCBkZXYsIE5FVFNOTVBfRlNfRklORF9FWElTVCApOworICAgIGlmICggZnN5cyApICAgICAgIAorICAgICAgICByZXR1cm4gbmV0c25tcF9mc3lzX3NpemUoIGZzeXMgKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiAtMTsKK30KKworaW50CitDaGVja19IUl9GaWxlU3lzX05GUyAodm9pZCkKK3sKKyAgICByZXR1cm4gKEhSRlNfZW50cnktPmZsYWdzICYgTkVUU05NUF9GU19GTEFHX1JFTU9URSkgPyAxIDogMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX2ZpbGVzeXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Njg5MTdlCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfZmlsZXN5cy5oCkBAIC0wLDAgKzEsMTkgQEAKKy8qCisgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gZmlsZSBzeXN0ZW0gZGV2aWNlIGdyb3VwIGludGVyZmFjZSAoSEFMIHJld3JpdGUpIC0gaHJoX2ZpbGVzeXMuaAorICoKKyAqLworI2lmbmRlZiBfTUlCR1JPVVBfSFJGU1lTX0gKKyNkZWZpbmUgX01JQkdST1VQX0hSRlNZU19ICisKK2V4dGVybiB2b2lkICAgICBpbml0X2hyaF9maWxlc3lzKHZvaWQpOworZXh0ZXJuIHZvaWQgICAgIEluaXRfSFJfRmlsZVN5cyh2b2lkKTsKK2V4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9ocmhmaWxlc3lzOworZXh0ZXJuIGludCAgICAgIEdldF9OZXh0X0hSX0ZpbGVTeXModm9pZCk7CitleHRlcm4gaW50ICAgICAgQ2hlY2tfSFJfRmlsZVN5c19ORlModm9pZCk7CisKK2V4dGVybiBpbnQgICAgICBHZXRfRlNJbmRleChjaGFyICopOworZXh0ZXJuIGxvbmcgICAgIEdldF9GU1NpemUoY2hhciAqKTsgICAgIC8qIFRlbXBvcmFyeSAqLworCitjb25maWdfZXhjbHVkZSggaG9zdC9ocl9maWxlc3lzICkKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfSFJGU1lTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYyBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDU4ZDRkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5jCkBAIC0wLDAgKzEsNTA0IEBACisvKgorICogIEhvc3QgUmVzb3VyY2VzIE1JQiAtIHN0b3JhZ2UgZ3JvdXAgaW1wbGVtZW50YXRpb24gLSBocmhfc3RvcmFnZS5jCisgKgorICovCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvbWVtb3J5Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvZnN5cy5oPgorI2luY2x1ZGUgImhvc3RfcmVzLmgiCisjaW5jbHVkZSAiaHJoX2ZpbGVzeXMuaCIKKyNpbmNsdWRlICJocmhfc3RvcmFnZS5oIgorI2luY2x1ZGUgImhyX2Rpc2suaCIKKyNpbmNsdWRlIDxuZXQtc25tcC91dGlsaXRpZXMuaD4KKworCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgVElNRV9XSVRIX1NZU19USU1FCisjIGlmZGVmIFdJTjMyCisjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisjICBpbmNsdWRlIDxlcnJuby5oPgorIyAgaW5jbHVkZSA8c3lzL3RpbWViLmg+CisjIGVsc2UKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGVuZGlmCisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1lTX1RJTUVfSAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgorIyBlbmRpZgorI2VuZGlmCisKKyNpZiBIQVZFX0ZDTlRMX0gKKyNpbmNsdWRlIDxmY250bC5oPgorI2VuZGlmCisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfcmVhZF9jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmg+CisKKyNkZWZpbmUgSFJTVE9SRV9NT05PVE9OSUNBTExZX0lOQ1JFQVNJTkcKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgS2VybmVsICYgaW50ZXJmYWNlIGluZm9ybWF0aW9uLAorCSAqICAgYW5kIGludGVybmFsIGZvcndhcmQgZGVjbGFyYXRpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworCisKK2V4dGVybiBuZXRzbm1wX2ZzeXNfaW5mbyAqSFJGU19lbnRyeTsKKworc3RhdGljIHZvaWQgcGFyc2Vfc3RvcmFnZV9jb25maWcoY29uc3QgY2hhciAqLCBjaGFyICopOworCisgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKKwkgKgorCSAqICBJbml0aWFsaXNhdGlvbiAmIGNvbW1vbiBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKKwkgKgorCSAqKioqKioqKioqKioqKioqKioqKiovCitpbnQgICAgICAgICAgICAgR2V0X05leHRfSFJfU3RvcmUodm9pZCk7Cit2b2lkICAgICAgICAgICAgSW5pdF9IUl9TdG9yZSh2b2lkKTsKK2ludCAgICAgICAgICAgICBoZWFkZXJfaHJzdG9yZShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICosIFdyaXRlTWV0aG9kICoqKTsKK3ZvaWQqICAgICAgICAgICBoZWFkZXJfaHJzdG9yZUVudHJ5KHN0cnVjdCB2YXJpYWJsZSAqLCBvaWQgKiwgc2l6ZV90ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIHNpemVfdCAqLCBXcml0ZU1ldGhvZCAqKik7CitOZXRzbm1wX05vZGVfSGFuZGxlciBoYW5kbGVfbWVtc2l6ZTsKKworCisjZGVmaW5lCUhSU1RPUkVfTUVNU0laRQkJMQorI2RlZmluZQlIUlNUT1JFX0lOREVYCQkyCisjZGVmaW5lCUhSU1RPUkVfVFlQRQkJMworI2RlZmluZQlIUlNUT1JFX0RFU0NSCQk0CisjZGVmaW5lCUhSU1RPUkVfVU5JVFMJCTUKKyNkZWZpbmUJSFJTVE9SRV9TSVpFCQk2CisjZGVmaW5lCUhSU1RPUkVfVVNFRAkJNworI2RlZmluZQlIUlNUT1JFX0ZBSUxTCQk4CisKK3N0cnVjdCB2YXJpYWJsZTIgaHJzdG9yZV92YXJpYWJsZXNbXSA9IHsKKyAgICB7SFJTVE9SRV9JTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezF9fSwKKyAgICB7SFJTVE9SRV9UWVBFLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHsyfX0sCisgICAge0hSU1RPUkVfREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezN9fSwKKyAgICB7SFJTVE9SRV9VTklUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaHJzdG9yZSwgMSwgezR9fSwKKyAgICB7SFJTVE9SRV9TSVpFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9ocnN0b3JlLCAxLCB7NX19LAorICAgIHtIUlNUT1JFX1VTRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHs2fX0sCisgICAge0hSU1RPUkVfRkFJTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2hyc3RvcmUsIDEsIHs3fX0KK307CitvaWQgICAgICAgICAgICAgaHJzdG9yZV92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAyIH07CitvaWQgICAgICAgICAgICAgaHJNZW1vcnlTaXplX29pZFtdICAgPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAyLCAyIH07CitvaWQgICAgICAgICAgICAgaHJTdG9yYWdlVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDI1LCAyLCAzLCAxIH07CisKKwordm9pZAoraW5pdF9ocmhfc3RvcmFnZSh2b2lkKQoreworICAgIGNoYXIgKmFwcG5hbWU7CisKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcigKKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImhvc3QvaHJNZW1vcnlTaXplIiwgaGFuZGxlX21lbXNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBock1lbW9yeVNpemVfb2lkLCBPSURfTEVOR1RIKGhyTWVtb3J5U2l6ZV9vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpKTsKKyAgICBSRUdJU1RFUl9NSUIoImhvc3QvaHJfc3RvcmFnZSIsIGhyc3RvcmVfdmFyaWFibGVzLCB2YXJpYWJsZTIsCisgICAgICAgICAgICAgICAgIGhyU3RvcmFnZVRhYmxlX29pZCk7CisKKyAgICBhcHBuYW1lID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCBhcHBuYW1lLCAic2tpcE5GU0luSG9zdFJlc291cmNlcyIsIAorCQkJICAgICAgIE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisJCQkgICAgICAgTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKTsKKworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzdG9yYWdlVXNlTkZTIiwgcGFyc2Vfc3RvcmFnZV9jb25maWcsIE5VTEwsCisJIjEgfCAyXHRcdCgxID0gZW5hYmxlLCAyID0gZGlzYWJsZSkiKTsKK30KKworc3RhdGljIGludCBzdG9yYWdlVXNlTkZTID0gMTsJLyogRGVmYXVsdCB0byByZXBvcnRpbmcgTkZTIG1vdW50cyBhcyBOZXR3b3JrRGlzayAqLworCitzdGF0aWMgdm9pZAorcGFyc2Vfc3RvcmFnZV9jb25maWcoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCit7CisgICAgY2hhciAqdmFsOworICAgIGludCBpdmFsOworICAgIGNoYXIgKnN0OworCisgICAgdmFsID0gc3RydG9rX3IoY3B0ciwgIiBcdCIsICZzdCk7CisgICAgaWYgKCF2YWwpIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigiTWlzc2luZyBGTEFHIHBhcmFtZXRlciBpbiBzdG9yYWdlVXNlTkZTIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaXZhbCA9IGF0b2kodmFsKTsKKyAgICBpZiAoaXZhbCA8IDEgfHwgaXZhbCA+IDIpIHsKKyAgICAgICAgY29uZmlnX3BlcnJvcigic3RvcmFnZVVzZU5GUyBtdXN0IGJlIDEgb3IgMiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHN0b3JhZ2VVc2VORlMgPSAoaXZhbCA9PSAxKSA/IDEgOiAwOworfQorCisvKgorICogaGVhZGVyX2hyc3RvcmVFbnRyeSguLi4KKyAqIEFyZ3VtZW50czoKKyAqIHZwICAgICBJTiAgICAgIC0gcG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlCisgKiBuYW1lICAgIElOL09VVCAgLSBJTi9uYW1lIHJlcXVlc3RlZCwgT1VUL25hbWUgZm91bmQKKyAqIGxlbmd0aCAgSU4vT1VUICAtIGxlbmd0aCBvZiBJTi9PVVQgb2lkJ3MgCisgKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKKyAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCisgKiB3cml0ZV9tZXRob2QKKyAqIAorICovCisKK3ZvaWQgKgoraGVhZGVyX2hyc3RvcmVFbnRyeShzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgIGludCBleGFjdCwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworI2RlZmluZSBIUlNUT1JFX0VOVFJZX05BTUVfTEVOR1RICTExCisgICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOworICAgIGludCAgICAgICAgICAgICBzdG9yYWdlX2lkeCwgTG93SW5kZXggPSAtMTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OworICAgIGludCAgICAgICAgICAgICAgICAgIGlkeCA9IC0xOworICAgIG5ldHNubXBfbWVtb3J5X2luZm8gKm1lbSAgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImhvc3QvaHJfc3RvcmFnZSIsICJ2YXJfaHJzdG9yZUVudHJ5OiByZXF1ZXN0ICIpKTsKKyAgICBERUJVR01TR09JRCgoImhvc3QvaHJfc3RvcmFnZSIsIG5hbWUsICpsZW5ndGgpKTsKKyAgICBERUJVR01TRygoImhvc3QvaHJfc3RvcmFnZSIsICIgZXhhY3Q9JWRcbiIsIGV4YWN0KSk7CisKKyAgICBtZW1jcHkoKGNoYXIgKikgbmV3bmFtZSwgKGNoYXIgKikgdnAtPm5hbWUsCisgICAgICAgICAgIChpbnQpIHZwLT5uYW1lbGVuICogc2l6ZW9mKG9pZCkpOworICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUobmFtZSwgKmxlbmd0aCwgdnAtPm5hbWUsIHZwLT5uYW1lbGVuKTsKKworICAgIERFQlVHTVNHVEwoKCJob3N0L2hyX3N0b3JhZ2UiLCAidmFyX2hyc3RvcmVFbnRyeTogY29tcGFyZSAiKSk7CisgICAgREVCVUdNU0dPSUQoKCJob3N0L2hyX3N0b3JhZ2UiLCB2cC0+bmFtZSwgdnAtPm5hbWVsZW4pKTsKKyAgICBERUJVR01TRygoImhvc3QvaHJfc3RvcmFnZSIsICIgPT4gJWRcbiIsIHJlc3VsdCkpOworCisKKyAgICBpZiAocmVzdWx0IDwgMCB8fAorICAgICAgICAqbGVuZ3RoIDw9IEhSU1RPUkVfRU5UUllfTkFNRV9MRU5HVEggKSB7CisgICAgICAgLyoKKyAgICAgICAgKiBSZXF1ZXN0ZWQgT0lEIHRvbyBlYXJseSBvciB0b28gc2hvcnQgdG8gcmVmZXIKKyAgICAgICAgKiAgIHRvIGEgdmFsaWQgcm93IChmb3IgdGhlIGN1cnJlbnQgY29sdW1uIG9iamVjdCkuCisgICAgICAgICogR0VUIHJlcXVlc3RzIHNob3VsZCBmYWlsLCBHRVRORVhUIHJlcXVlc3RzCisgICAgICAgICogICBzaG91bGQgdXNlIHRoZSBmaXJzdCByb3cuCisgICAgICAgICovCisgICAgICAgIGlmICggZXhhY3QgKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKKyAgICAgICAgbWVtID0gbmV0c25tcF9tZW1vcnlfZ2V0X2ZpcnN0KCAwICk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKgorICAgICAgICAgKiBPdGhlcndpc2UsIHJldHJpZXZlIHRoZSByZXF1ZXN0ZWQKKyAgICAgICAgICogIChvciBmb2xsb3dpbmcpIHJvdyBhcyBhcHByb3ByaWF0ZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICggZXhhY3QgJiYgKmxlbmd0aCA+IEhSU1RPUkVfRU5UUllfTkFNRV9MRU5HVEgrMSApCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAvKiBUb28gbG9uZyBmb3IgYSB2YWxpZCBpbnN0YW5jZSAqLworICAgICAgICBpZHggPSBuYW1lWyBIUlNUT1JFX0VOVFJZX05BTUVfTEVOR1RIIF07CisgICAgICAgIGlmICggaWR4IDwgTkVUU05NUF9NRU1fVFlQRV9NQVggKSB7CisgICAgICAgICAgICBuZXRzbm1wX21lbW9yeV9sb2FkKCk7CisgICAgICAgICAgICBtZW0gPSAoIGV4YWN0ID8gbmV0c25tcF9tZW1vcnlfZ2V0X2J5SWR4KCBpZHgsIDAgKSA6CisgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWVtb3J5X2dldF9uZXh0X2J5SWR4KCBpZHgsIDAgKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIElmIHRoaXMgbWF0Y2hlZCBhIG1lbW9yeS1iYXNlZCBlbnRyeSwgdGhlbgorICAgICAqICAgIHVwZGF0ZSB0aGUgT0lEIHBhcmFtZXRlcihzKSBmb3IgR0VUTkVYVCByZXF1ZXN0cy4KKyAgICAgKi8KKyAgICBpZiAoIG1lbSApIHsKKyAgICAgICAgaWYgKCAhZXhhY3QgKSB7CisgICAgICAgICAgICBuZXduYW1lWyBIUlNUT1JFX0VOVFJZX05BTUVfTEVOR1RIIF0gPSBtZW0tPmlkeDsKKyAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAorICAgICAgICAgICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvKgorICAgICAqIElmIHRoaXMgZGlkbid0IG1hdGNoIGEgbWVtb3J5LWJhc2VkIGVudHJ5LAorICAgICAqICAgdGhlbiBjb25zaWRlciB0aGUgZGlzay1iYXNlZCBzdG9yYWdlLgorICAgICAqLworICAgIGVsc2UgeworICAgICAgICBJbml0X0hSX1N0b3JlKCk7CisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIHN0b3JhZ2VfaWR4ID0gR2V0X05leHRfSFJfU3RvcmUoKTsKKyAgICAgICAgICAgIERFQlVHTVNHKCgiaG9zdC9ocl9zdG9yYWdlIiwgIihpbmRleCAlZCAuLi4uIiwgc3RvcmFnZV9pZHgpKTsKKyAgICAgICAgICAgIGlmIChzdG9yYWdlX2lkeCA9PSAtMSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIG5ld25hbWVbSFJTVE9SRV9FTlRSWV9OQU1FX0xFTkdUSF0gPSBzdG9yYWdlX2lkeDsKKyAgICAgICAgICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9zdG9yYWdlIiwgbmV3bmFtZSwgKmxlbmd0aCkpOworICAgICAgICAgICAgREVCVUdNU0coKCJob3N0L2hyX3N0b3JhZ2UiLCAiXG4iKSk7CisgICAgICAgICAgICByZXN1bHQgPSBzbm1wX29pZF9jb21wYXJlKG5hbWUsICpsZW5ndGgsIG5ld25hbWUsIHZwLT5uYW1lbGVuICsgMSk7CisgICAgICAgICAgICBpZiAoZXhhY3QgJiYgKHJlc3VsdCA9PSAwKSkgeworICAgICAgICAgICAgICAgIExvd0luZGV4ID0gc3RvcmFnZV9pZHg7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBTYXZlIHN0b3JhZ2Ugc3RhdHVzIGluZm9ybWF0aW9uIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCghZXhhY3QgJiYgKHJlc3VsdCA8IDApKSAmJgorICAgICAgICAgICAgICAgIChMb3dJbmRleCA9PSAtMSB8fCBzdG9yYWdlX2lkeCA8IExvd0luZGV4KSkgeworICAgICAgICAgICAgICAgIExvd0luZGV4ID0gc3RvcmFnZV9pZHg7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBTYXZlIHN0b3JhZ2Ugc3RhdHVzIGluZm9ybWF0aW9uIAorICAgICAgICAgICAgICAgICAqLworI2lmZGVmIEhSU1RPUkVfTU9OT1RPTklDQUxMWV9JTkNSRUFTSU5HCisgICAgICAgICAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIExvd0luZGV4ICE9IC0xICkgeworICAgICAgICAgICAgaWYgKCAhZXhhY3QgKSB7CisgICAgICAgICAgICAgICAgbmV3bmFtZVsgSFJTVE9SRV9FTlRSWV9OQU1FX0xFTkdUSCBdID0gTG93SW5kZXg7CisgICAgICAgICAgICAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIG5ld25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICgoaW50KSB2cC0+bmFtZWxlbiArIDEpICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgICAgICpsZW5ndGggPSB2cC0+bmFtZWxlbiArIDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW0gPSAobmV0c25tcF9tZW1vcnlfaW5mbyopMHhmZmZmZmZmZjsgICAvKiBUbyBpbmRpY2F0ZSAnc3VjY2VzcycgKi8KKyAgICAgICAgfQorICAgIH0KKworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CisgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KKworICAgIC8qCisgICAgICogIC4uLiBhbmQgcmV0dXJuIHRoZSBhcHByb3ByaWF0ZSByb3cKKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCgiaG9zdC9ocl9zdG9yYWdlIiwgInZhcl9ocnN0b3JlRW50cnk6IHByb2Nlc3MgIikpOworICAgIERFQlVHTVNHT0lEKCgiaG9zdC9ocl9zdG9yYWdlIiwgbmFtZSwgKmxlbmd0aCkpOworICAgIERFQlVHTVNHKCgiaG9zdC9ocl9zdG9yYWdlIiwgIiAoJXApXG4iLCBtZW0pKTsKKyAgICByZXR1cm4gKHZvaWQqKW1lbTsKK30KKworb2lkICAgICAgICAgICAgIHN0b3JhZ2VfdHlwZV9pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyNSwgMiwgMSwgMSB9OyAgLyogaHJTdG9yYWdlT3RoZXIgKi8KK2ludCAgICAgICAgICAgICBzdG9yYWdlX3R5cGVfbGVuID0KKyAgICBzaXplb2Yoc3RvcmFnZV90eXBlX2lkKSAvIHNpemVvZihzdG9yYWdlX3R5cGVfaWRbMF0pOworCisgICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKKwkgKgorCSAqICBTeXN0ZW0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworCitpbnQKK2hhbmRsZV9tZW1zaXplKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgbmV0c25tcF9tZW1vcnlfaW5mbyAqbWVtX2luZm87CisgICAgaW50IHZhbDsKKworICAgIC8qCisgICAgICogV2UganVzdCBuZWVkIHRvIGhhbmRsZSB2YWxpZCBHRVQgcmVxdWVzdHMsIGFzIGludmFsaWQgaW5zdGFuY2VzCisgICAgICogICBhcmUgcmVqZWN0ZWQgYXV0b21hdGljYWxseSwgYW5kICh2YWxpZCkgR0VUTkVYVCByZXF1ZXN0cyBhcmUKKyAgICAgKiAgIGNvbnZlcnRlZCBpbnRvIHRoZSBhcHByb3ByaWF0ZSBHRVQgcmVxdWVzdC4KKyAgICAgKgorICAgICAqIFdlIGFsc28gb25seSBldmVyIHJlY2VpdmUgb25lIHJlcXVlc3QgYXQgYSB0aW1lLgorICAgICAqLworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIG5ldHNubXBfbWVtb3J5X2xvYWQoKTsKKyAgICAgICAgbWVtX2luZm8gPSBuZXRzbm1wX21lbW9yeV9nZXRfYnlJZHgoIE5FVFNOTVBfTUVNX1RZUEVfUEhZU01FTSwgMCApOworICAgICAgICBpZiAoICFtZW1faW5mbyB8fCBtZW1faW5mby0+c2l6ZSA9PSAtMSB8fCBtZW1faW5mby0+dW5pdHMgPT0gLTEgKQorICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfTk9TVUNIT0JKRUNUICk7CisJZWxzZSB7CisgICAgICAgICAgICB2YWwgID0gIG1lbV9pbmZvLT5zaXplOyAgICAgLyogbWVtdG90YWwgKi8KKyAgICAgICAgICAgIHZhbCAqPSAobWVtX2luZm8tPnVuaXRzLzEwMjQpOworICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmdmFsLCBzaXplb2YodmFsKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisKKyAgICBkZWZhdWx0OgorICAgICAgICAvKgorICAgICAgICAgKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yIAorICAgICAgICAgKi8KKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVua25vd24gbW9kZSAoJWQpIGluIGhhbmRsZV9tZW1zaXplXG4iLAorICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworCit1X2NoYXIgICAgICAgICAqCit2YXJfaHJzdG9yZShzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKKyAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIGludCAgICAgICAgICAgICBzdG9yZV9pZHggPSAwOworICAgIHN0YXRpYyBjaGFyICAgICBzdHJpbmdbMTAyNF07CisgICAgdm9pZCAgICAgICAgICAgICAgICAqcHRyOworICAgIG5ldHNubXBfbWVtb3J5X2luZm8gKm1lbSA9IE5VTEw7CisKK3JlYWxseV90cnlfbmV4dDoKKwlwdHIgPSBoZWFkZXJfaHJzdG9yZUVudHJ5KHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLAorCQkJCQl3cml0ZV9tZXRob2QpOworCWlmIChwdHIgPT0gTlVMTCkKKwkgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgc3RvcmVfaWR4ID0gbmFtZVsgSFJTVE9SRV9FTlRSWV9OQU1FX0xFTkdUSCBdOworICAgICAgICBpZiAoSFJGU19lbnRyeSAmJgorCSAgICBzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCAmJgorICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1NLSVBORlNJTkhPU1RSRVNPVVJDRVMpICYmCisgICAgICAgICAgICBDaGVja19IUl9GaWxlU3lzX05GUygpKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIGlmIChzdG9yZV9pZHggPD0gTkVUU05NUF9NRU1fVFlQRV9NQVggKSB7CisJICAgIG1lbSA9IChuZXRzbm1wX21lbW9yeV9pbmZvKilwdHI7CisgICAgICAgIH0KKworCisKKyAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworICAgIGNhc2UgSFJTVE9SRV9JTkRFWDoKKyAgICAgICAgbG9uZ19yZXR1cm4gPSBzdG9yZV9pZHg7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisgICAgY2FzZSBIUlNUT1JFX1RZUEU6CisgICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKKyAgICAgICAgICAgIGlmIChIUkZTX2VudHJ5LT5mbGFncyAmIE5FVFNOTVBfRlNfRkxBR19SRU1PVEUgKQorICAgICAgICAgICAgICAgIHN0b3JhZ2VfdHlwZV9pZFtzdG9yYWdlX3R5cGVfbGVuIC0gMV0gPSAxMDsgICAgIC8qIE5ldHdvcmsgRGlzayAqLworICAgICAgICAgICAgZWxzZSBpZiAoSFJGU19lbnRyeS0+ZmxhZ3MgJiBORVRTTk1QX0ZTX0ZMQUdfUkVNT1ZFICkKKyAgICAgICAgICAgICAgICBzdG9yYWdlX3R5cGVfaWRbc3RvcmFnZV90eXBlX2xlbiAtIDFdID0gNTsgICAgICAvKiBSZW1vdmFibGUgRGlzayAqLworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHN0b3JhZ2VfdHlwZV9pZFtzdG9yYWdlX3R5cGVfbGVuIC0gMV0gPSA0OyAgICAgIC8qIEFzc3VtZSBmaXhlZCAqLworICAgICAgICBlbHNlCisgICAgICAgICAgICBzd2l0Y2ggKHN0b3JlX2lkeCkgeworICAgICAgICAgICAgY2FzZSBORVRTTk1QX01FTV9UWVBFX1BIWVNNRU06CisgICAgICAgICAgICBjYXNlIE5FVFNOTVBfTUVNX1RZUEVfVVNFUk1FTToKKyAgICAgICAgICAgICAgICBzdG9yYWdlX3R5cGVfaWRbc3RvcmFnZV90eXBlX2xlbiAtIDFdID0gMjsgICAgICAvKiBSQU0gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTkVUU05NUF9NRU1fVFlQRV9WSVJUTUVNOgorICAgICAgICAgICAgY2FzZSBORVRTTk1QX01FTV9UWVBFX1NXQVA6CisgICAgICAgICAgICAgICAgc3RvcmFnZV90eXBlX2lkW3N0b3JhZ2VfdHlwZV9sZW4gLSAxXSA9IDM7ICAgICAgLyogVmlydHVhbCBNZW0gKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgc3RvcmFnZV90eXBlX2lkW3N0b3JhZ2VfdHlwZV9sZW4gLSAxXSA9IDE7ICAgICAgLyogT3RoZXIgKi8KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2Yoc3RvcmFnZV90eXBlX2lkKTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RvcmFnZV90eXBlX2lkOworICAgIGNhc2UgSFJTVE9SRV9ERVNDUjoKKyAgICAgICAgaWYgKHN0b3JlX2lkeCA+IE5FVFNOTVBfTUVNX1RZUEVfTUFYKSB7CisgICAgICAgICAgICBzdHJsY3B5KHN0cmluZywgSFJGU19lbnRyeS0+cGF0aCwgc2l6ZW9mKHN0cmluZykpOworICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oc3RyaW5nKTsKKyAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopIHN0cmluZzsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICggIW1lbSB8fCAhbWVtLT5kZXNjciApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKG1lbS0+ZGVzY3IpOworICAgICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgbWVtLT5kZXNjcjsKKyAgICAgICAgfQorICAgIGNhc2UgSFJTVE9SRV9VTklUUzoKKyAgICAgICAgaWYgKHN0b3JlX2lkeCA+IE5FVFNOTVBfTUVNX1RZUEVfTUFYKQorICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBIUkZTX2VudHJ5LT51bml0czsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT51bml0cyA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT51bml0czsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGNhc2UgSFJTVE9SRV9TSVpFOgorICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCisgICAgICAgICAgICBsb25nX3JldHVybiA9IEhSRlNfZW50cnktPnNpemU7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgaWYgKCAhbWVtIHx8IG1lbS0+c2l6ZSA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5zaXplOworICAgICAgICB9CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisgICAgY2FzZSBIUlNUT1JFX1VTRUQ6CisgICAgICAgIGlmIChzdG9yZV9pZHggPiBORVRTTk1QX01FTV9UWVBFX01BWCkKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gSFJGU19lbnRyeS0+dXNlZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT5zaXplID09IC0xIHx8IG1lbS0+ZnJlZSA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5zaXplIC0gbWVtLT5mcmVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CisgICAgY2FzZSBIUlNUT1JFX0ZBSUxTOgorICAgICAgICBpZiAoc3RvcmVfaWR4ID4gTkVUU05NUF9NRU1fVFlQRV9NQVgpCisjaWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKKwkgICAgZ290byB0cnlfbmV4dDsKKyNlbHNlCisgICAgICAgICAgICBsb25nX3JldHVybiA9IDA7CisjZW5kaWYKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoICFtZW0gfHwgbWVtLT5vdGhlciA9PSAtMSApCisgICAgICAgICAgICAgICAgZ290byB0cnlfbmV4dDsKKyAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gbWVtLT5vdGhlcjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOworICAgIGRlZmF1bHQ6CisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfaHJzdG9yZVxuIiwKKyAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworCisgIHRyeV9uZXh0OgorICAgIGlmICghZXhhY3QpCisgICAgICAgIGdvdG8gcmVhbGx5X3RyeV9uZXh0OworCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworICAgICAgICAvKioqKioqKioqKioqKioqKioqKioqCisJICoKKwkgKiAgSW50ZXJuYWwgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCisJICoKKwkgKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgaW50ICAgICAgSFJTX2luZGV4OworCit2b2lkCitJbml0X0hSX1N0b3JlKHZvaWQpCit7CisgICAgSFJTX2luZGV4ID0gMDsKKyAgICBJbml0X0hSX0ZpbGVTeXMoKTsKK30KKworaW50CitHZXRfTmV4dF9IUl9TdG9yZSh2b2lkKQoreworICAgIC8qCisgICAgICogRmlsZS1iYXNlZCBzdG9yYWdlIAorICAgICAqLworCWZvciAoOzspIHsKKyAgICAJSFJTX2luZGV4ID0gR2V0X05leHRfSFJfRmlsZVN5cygpOworCQlpZiAoSFJTX2luZGV4ID49IDApIHsKKwkJCWlmICghKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisJCQkJCQkJTkVUU05NUF9EU19BR0VOVF9TS0lQTkZTSU5IT1NUUkVTT1VSQ0VTKSAmJiAKKwkJCQkJCUNoZWNrX0hSX0ZpbGVTeXNfTkZTKCkpKSB7CisJCQkJcmV0dXJuIEhSU19pbmRleCArIE5FVFNOTVBfTUVNX1RZUEVfTUFYOwkKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXJldHVybiAtMTsKKwkJfQkKKwl9Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaCBiL2FnZW50L21pYmdyb3VwL2hvc3QvaHJoX3N0b3JhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODcyMzQ1Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaG9zdC9ocmhfc3RvcmFnZS5oCkBAIC0wLDAgKzEsMjMgQEAKKy8qCisgKiAgSG9zdCBSZXNvdXJjZXMgTUlCIC0gc3RvcmFnZSBncm91cCBpbnRlcmZhY2UgKEhBTCByZXdyaXRlKSAtIGhyaF9zdG9yYWdlLmgKKyAqCisgKi8KKyNpZm5kZWYgX01JQkdST1VQX0hSU1RPUkFHRV9ICisjZGVmaW5lIF9NSUJHUk9VUF9IUlNUT1JBR0VfSAorCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9tZW1vcnkpCitjb25maWdfcmVxdWlyZShoYXJkd2FyZS9mc3lzKQorY29uZmlnX3JlcXVpcmUoaG9zdC9ocmhfZmlsZXN5cykKKworY29uZmlnX2V4Y2x1ZGUoIGhvc3QvaHJfc3RvcmFnZSApCisKK2V4dGVybiB2b2lkICAgICBpbml0X2hyaF9zdG9yYWdlKHZvaWQpOworZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2hyc3RvcmU7CisKKworI2RlZmluZQlIUlNfVFlQRV9NQlVGCQkxCisjZGVmaW5lCUhSU19UWVBFX01FTQkJMgorI2RlZmluZQlIUlNfVFlQRV9TV0FQCQkzCisjZGVmaW5lCUhSU19UWVBFX0ZJWEVEX01BWAkzICAgICAvKiB0aGUgbGFyZ2VzdCBmaXhlZCB0eXBlICovCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX0hSU1RPUkFHRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ob3N0X3Jlcy5oIGIvYWdlbnQvbWliZ3JvdXAvaG9zdF9yZXMuaAppbmRleCA4Yzk1MDkwLi5kOWY1NGI5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ob3N0X3Jlcy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2hvc3RfcmVzLmgKQEAgLTE3LDcgKzE3LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zbm1wX3ZhcnMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC92YXJfc3RydWN0Lmg+CiAKLSNpZiBkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5jCmluZGV4IGQ2NWZhZDAuLjYyOWM5OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmMKQEAgLTQ3Nyw3ICs0NzcsNyBAQAogICAgIHRtcCA9IHNlX2ZpbmRfdmFsdWVfaW5fc2xpc3QoImludGVyZmFjZXMiLCBuYW1lKTsKICAgICBpZiAodG1wID09IFNFX0RORSkgewogICAgICAgICBzZV9hZGRfcGFpcl90b19zbGlzdCgiaW50ZXJmYWNlcyIsIHN0cmR1cChuYW1lKSwgaW5kZXgpOwotICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTppZkluZGV4IiwgInNhdmVkIGlmSW5kZXggJWQgZm9yICVzXG4iLAorICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTppZkluZGV4IiwgInNhdmVkIGlmSW5kZXggJWx1IGZvciAlc1xuIiwKICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG5hbWUpKTsKICAgICB9CiAgICAgZWxzZQpAQCAtNDg4LDcgKzQ4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImludGVyZmFjZXMgd2lsbCBhcHBlYXIgbXVsdGlwbGUgdGltZXMgaW4gSUYtTUlCLlxuIik7CiAgICAgICAgICAgICAgICAgbG9nZ2VkID0gMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmlmSW5kZXgiLCAiaW5kZXggJWQgIT0gdG1wIGZvciAlc1xuIiwKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmlmSW5kZXgiLCAiaW5kZXggJWx1ICE9IHRtcCBmb3IgJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXgsIG5hbWUpKTsKICAgICAgICAgfQogfQpAQCAtNTM2LDEwICs1MzYsMTkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaWJ5dGVzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5pYnl0ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKLSAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLml1Y2FzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaXVjYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5pdWNhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKKworCWlmIChuZXdfdmFscy0+bnNfZmxhZ3MgJiBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19DQUxDVUxBVEVfVUNBU1QpIHsKKyAgICAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5pYWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaWFsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPmlhbGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBuZXRzbm1wX2M2NF9jaGVjazMyX2FuZF91cGRhdGUoJnByZXZfdmFscy0+c3RhdHMuaXVjYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaXVjYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+aXVjYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZWVkX3dyYXBfY2hlY2spOworICAgICAgICB9CisKICAgICAgICAgbmV0c25tcF9jNjRfY2hlY2szMl9hbmRfdXBkYXRlKCZwcmV2X3ZhbHMtPnN0YXRzLmltY2FzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuaW1jYXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5pbWNhc3QsCkBAIC01OTYsNiArNjA1LDIzIEBACiB9CiAKIC8qKgorICogQ2FsY3VsYXRlIHN0YXRzCisgKgorICogQHJldHZhbCAgMCA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgOiBlcnJvcgorICovCitpbnQKK25ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9jYWxjdWxhdGVfc3RhdHMobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmVudHJ5KQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlIiwgImNhbGN1bGF0ZV9zdGF0c1xuIikpOworICAgIGlmIChlbnRyeS0+bnNfZmxhZ3MgJiBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19DQUxDVUxBVEVfVUNBU1QpIHsKKyAgICAgICAgdTY0U3VidHJhY3QoJmVudHJ5LT5zdGF0cy5pYWxsLCAmZW50cnktPnN0YXRzLmltY2FzdCwKKyAgICAgICAgICAgICAgICAmZW50cnktPnN0YXRzLml1Y2FzdCk7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisvKioKICAqIGNvcHkgaW50ZXJmYWNlIGVudHJ5IGRhdGEgKGFmdGVyIGNoZWNraW5nIGZvciBjb3VudGVyIHdyYXBzKQogICoKICAqIEByZXR2YWwgLTIgOiBtYWxsb2MgZmFpbGVkCkBAIC02MTcsNiArNjQzLDcgQEAKICAgICAgKiB1cGRhdGUgc3RhdHMKICAgICAgKi8KICAgICBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfdXBkYXRlX3N0YXRzKGxocywgcmhzKTsKKyAgICBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfY2FsY3VsYXRlX3N0YXRzKGxocyk7CiAKICAgICAvKgogICAgICAqIHVwZGF0ZSBkYXRhCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKaW5kZXggMjU2ZDA0Ny4uZjRjMGU1ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaApAQCAtMzcsNyArMzcsNyBAQAogCiAjICAgZWxpZiBkZWZpbmVkKCBvcGVuYnNkMyApIHx8IFwKICAgICAgICAgIGRlZmluZWQoIGZyZWVic2Q0ICkgfHwgZGVmaW5lZCggZnJlZWJzZDUgKSB8fCBkZWZpbmVkKCBmcmVlYnNkNiApIHx8IFwKLSAgICAgICAgIGRlZmluZWQgKGRhcndpbikgICAgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkKKyAgICAgICAgIGRlZmluZWQoIGRhcndpbiApICAgfHwgZGVmaW5lZCggZHJhZ29uZmx5ICkgfHwgZGVmaW5lZCggbmV0YnNkMSApCiAKICAgICBjb25maWdfcmVxdWlyZShpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3N5c2N0bCkKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9pb2N0bC5jCmluZGV4IDU3MDhjNjQuLmFlYWIwY2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfaW9jdGwuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2lvY3RsLmMKQEAgLTQwOCw3ICs0MDgsNyBAQAogICAgIHJjID0gX2lvY3RsX2dldChmZCwgU0lPQ0dJRklOREVYLCAmaWZycSwgbmFtZSk7CiAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTppb2N0bCIsCi0gICAgICAgICAgICAgICAgICAgImlmaW5kZXhfZ2V0IGVycm9yIG9uIGluZXJmYWNlICclcydcbiIsIG5hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAiaWZpbmRleF9nZXQgZXJyb3Igb24gaW50ZXJmYWNlICclcydcbiIsIG5hbWUpKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX2xpbnV4LmMKaW5kZXggOTRiZDk4My4uMGVkOTMwMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2VfbGludXguYwpAQCAtMjksMTggKzI5LDM4IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CiAjaW5jbHVkZSAiaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIgorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJpbnRlcmZhY2VfaW9jdGwuaCIKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgogCiAjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CiAKICNpZm5kZWYgSUZfTkFNRVNJWkUKICNkZWZpbmUgSUZfTkFNRVNJWkUgMTYKICNlbmRpZgogCisjaWZuZGVmIFNJT0NHTUlJUEhZCisjZGVmaW5lIFNJT0NHTUlJUEhZIDB4ODk0NworI2VuZGlmCisKKyNpZm5kZWYgU0lPQ0dNSUlSRUcKKyNkZWZpbmUgU0lPQ0dNSUlSRUcgMHg4OTQ4CisjZW5kaWYKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisjaWZkZWYgUlRNR1JQX0lQVjZfUFJFRklYCisjZGVmaW5lIFNVUFBPUlRfUFJFRklYX0ZMQUdTIDEKKyNlbmRpZiAgLyogUlRNR1JQX0lQVjZfUFJFRklYICovCisjZW5kaWYgIC8qIEhBVkVfTElOVVhfUlRORVRMSU5LX0ggKi8KKyNlbmRpZiAgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLwogdW5zaWduZWQgbG9uZyBsb25nCiBuZXRzbm1wX2xpbnV4X2ludGVyZmFjZV9nZXRfaWZfc3BlZWQoaW50IGZkLCBjb25zdCBjaGFyICpuYW1lLAogICAgICAgICB1bnNpZ25lZCBsb25nIGxvbmcgZGVmYXVsdHNwZWVkKTsKQEAgLTYwLDYgKzgwLDE2IEBACiAjZGVmaW5lIFBST0NfU1lTX05FVF9JUFZ4X0JBU0VfUkVBQ0hBQkxFX1RJTUUgIi9wcm9jL3N5cy9uZXQvaXB2JWQvbmVpZ2gvJXMvYmFzZV9yZWFjaGFibGVfdGltZSIKIHN0YXRpYyBjb25zdCBjaGFyICpwcm9jX3N5c19iYXNlcmVhY2hhYmxlX3RpbWU7CiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgYmFzZXJlYWNoYWJsZV90aW1lX21zID0gMDsKKyNpZmRlZiBTVVBQT1JUX1BSRUZJWF9GTEFHUworcHJlZml4X2NieCAqcHJlZml4X2hlYWRfbGlzdCA9IE5VTEw7CituZXRzbm1wX3ByZWZpeF9saXN0ZW5faW5mbyBsaXN0X2luZm87CisjZGVmaW5lIElGX1BSRUZJWF9PTkxJTksgICAgICAgIDB4MDEKKyNkZWZpbmUgSUZfUFJFRklYX0FVVE9DT05GICAgICAgMHgwMgorIAoraW50IG5ldHNubXBfcHJlZml4X2xpc3Rlbih2b2lkKTsKKyNlbmRpZgorCisKIHZvaWQKIG5ldHNubXBfYXJjaF9pbnRlcmZhY2VfaW5pdCh2b2lkKQogewpAQCAtOTIsNiArMTIyLDExIEBACiAgICAgZWxzZSB7CiAgICAgICAgIHByb2Nfc3lzX2Jhc2VyZWFjaGFibGVfdGltZSA9IFBST0NfU1lTX05FVF9JUFZ4X0JBU0VfUkVBQ0hBQkxFX1RJTUU7CiAgICAgfQorCisjaWZkZWYgU1VQUE9SVF9QUkVGSVhfRkxBR1MKKyAgICBsaXN0X2luZm8ubGlzdF9oZWFkID0gJnByZWZpeF9oZWFkX2xpc3Q7CisgICAgbmV0c25tcF9wcmVmaXhfbGlzdGVuKCk7CisjZW5kaWYKIH0KIAogLyoKQEAgLTEyOCwxNCArMTYzLDYgQEAKIAogICAgICpmbGFncyAmPSB+TkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lQVjY7CiAKLSNpZm5kZWYgU0lPQ0dNSUlQSFkKLSNkZWZpbmUgU0lPQ0dNSUlQSFkgMHg4OTQ3Ci0jZW5kaWYKLQotI2lmbmRlZiBTSU9DR01JSVJFRwotI2RlZmluZSBTSU9DR01JSVJFRyAweDg5NDgKLSNlbmRpZgotCiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogICAgIC8qCiAgICAgICogZ2V0IGlwdjYgYWRkcmVzc2VzCkBAIC00MDIsMTYgKzQyOSwxNSBAQAogICAgICAqIHN1YnRyYWN0IG91dCBtdWx0aWNhc3QgcGFja2V0cyBmcm9tIHJlY19wa3QgYmVmb3JlCiAgICAgICogd2Ugc3RvcmUgaXQgYXMgdW5pY2FzdCBjb3VudGVyLgogICAgICAqLwotICAgIHJlY19wa3QgLT0gcmVjX21jYXN0OwotCisgICAgZW50cnktPm5zX2ZsYWdzIHw9IE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0NBTENVTEFURV9VQ0FTVDsKICAgICBlbnRyeS0+c3RhdHMuaWJ5dGVzLmxvdyA9IHJlY19vY3QgJiAweGZmZmZmZmZmOwotICAgIGVudHJ5LT5zdGF0cy5pdWNhc3QubG93ID0gcmVjX3BrdCAmIDB4ZmZmZmZmZmY7CisgICAgZW50cnktPnN0YXRzLmlhbGwubG93ID0gcmVjX3BrdCAmIDB4ZmZmZmZmZmY7CiAgICAgZW50cnktPnN0YXRzLmltY2FzdC5sb3cgPSByZWNfbWNhc3QgJiAweGZmZmZmZmZmOwogICAgIGVudHJ5LT5zdGF0cy5vYnl0ZXMubG93ID0gc25kX29jdCAmIDB4ZmZmZmZmZmY7CiAgICAgZW50cnktPnN0YXRzLm91Y2FzdC5sb3cgPSBzbmRfcGt0ICYgMHhmZmZmZmZmZjsKICNpZmRlZiBTQ051TUFYICAgLyogWFhYIC0gc2hvdWxkIGJlIGZsYWcgZm9yIDY0LWJpdCB2YXJpYWJsZXMgKi8KICAgICBlbnRyeS0+c3RhdHMuaWJ5dGVzLmhpZ2ggPSByZWNfb2N0ID4+IDMyOwotICAgIGVudHJ5LT5zdGF0cy5pdWNhc3QuaGlnaCA9IHJlY19wa3QgPj4gMzI7CisgICAgZW50cnktPnN0YXRzLmlhbGwuaGlnaCA9IHJlY19wa3QgPj4gMzI7CiAgICAgZW50cnktPnN0YXRzLmltY2FzdC5oaWdoID0gcmVjX21jYXN0ID4+IDMyOwogICAgIGVudHJ5LT5zdGF0cy5vYnl0ZXMuaGlnaCA9IHNuZF9vY3QgPj4gMzI7CiAgICAgZW50cnktPnN0YXRzLm91Y2FzdC5oaWdoID0gc25kX3BrdCA+PiAzMjsKQEAgLTQ1NSw3ICs0ODEsNyBAQAogICAgIG5ldHNubXBfY29udGFpbmVyICphZGRyX2NvbnRhaW5lcjsKICNlbmRpZgogCi0gICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLCAibG9hZCAoZmxhZ3MgJXApXG4iLAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwgImxvYWQgKGZsYWdzICV4KVxuIiwKICAgICAgICAgICAgICAgICBsb2FkX2ZsYWdzKSk7CiAKICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKQEAgLTYyMiw3ICs2NDgsNyBAQAogICAgICAgICAgICAgICAgIHtJQU5BSUZUWVBFX0JBU0lDSVNETiwgImlwcHAifSwKICAgICAgICAgICAgICAgICB7SUFOQUlGVFlQRV9QUk9QVklSVFVBTCwgImJvbmQifSwgLyogQm9uZGluZyBkcml2ZXIgZmluZCBmYXN0ZXN0IHNsYXZlICovCiAgICAgICAgICAgICAgICAge0lBTkFJRlRZUEVfUFJPUFZJUlRVQUwsICJ2YWQifSwgIC8qIEFOUyBkcml2ZXIgLSA/c3BlZWQ/ICovCi0gICAgICAgICAgICAgICAgezAsIDB9ICAgICAgICAgICAgICAgICAgLyogZW5kIG9mIGxpc3QgKi8KKyAgICAgICAgICAgICAgICB7MCwgTlVMTH0gICAgICAgICAgICAgICAgICAvKiBlbmQgb2YgbGlzdCAqLwogICAgICAgICAgICAgfTsKIAogICAgICAgICAgICAgaW50ICAgICAgICAgICAgIGxlbjsKQEAgLTYzOSw2ICs2NjUsMzYgQEAKICAgICAgICAgICAgICAgICBlbnRyeS0+dHlwZSA9IElBTkFJRlRZUEVfT1RIRVI7CiAgICAgICAgIH0KIAorICAgICAgICAvKgorICAgICAgICAgKiBpbnRlcmZhY2UgaWRlbnRpZmllciBpcyBzcGVjaWZpZWQgYmFzZWQgb24gcGh5c2FkZHIgYW5kIHR5cGUKKyAgICAgICAgICovCisgICAgICAgIHN3aXRjaCAoZW50cnktPnR5cGUpIHsKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0VUSEVSTkVUQ1NNQUNEOgorICAgICAgICBjYXNlIElBTkFJRlRZUEVfRVRIRVJORVQzTUJJVDoKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0ZBU1RFVEhFUjoKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0ZBU1RFVEhFUkZYOgorICAgICAgICBjYXNlIElBTkFJRlRZUEVfR0lHQUJJVEVUSEVSTkVUOgorICAgICAgICBjYXNlIElBTkFJRlRZUEVfRkRESToKKyAgICAgICAgY2FzZSBJQU5BSUZUWVBFX0lTTzg4MDI1VE9LRU5SSU5HOgorICAgICAgICAgICAgaWYgKE5VTEwgIT0gZW50cnktPnBhZGRyICYmIEVUSF9BTEVOICE9IGVudHJ5LT5wYWRkcl9sZW4pCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGVudHJ5LT52Nl9pZl9pZF9sZW4gPSBlbnRyeS0+cGFkZHJfbGVuICsgMjsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+djZfaWZfaWQsIGVudHJ5LT5wYWRkciwgMyk7CisgICAgICAgICAgICBtZW1jcHkoZW50cnktPnY2X2lmX2lkICsgNSwgZW50cnktPnBhZGRyICsgMywgMyk7CisgICAgICAgICAgICBlbnRyeS0+djZfaWZfaWRbMF0gXj0gMjsKKyAgICAgICAgICAgIGVudHJ5LT52Nl9pZl9pZFszXSA9IDB4RkY7CisgICAgICAgICAgICBlbnRyeS0+djZfaWZfaWRbNF0gPSAweEZFOworCisgICAgICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX1Y2X0lGSUQ7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIElBTkFJRlRZUEVfU09GVFdBUkVMT09QQkFDSzoKKyAgICAgICAgICAgIGVudHJ5LT52Nl9pZl9pZF9sZW4gPSAwOworICAgICAgICAgICAgZW50cnktPm5zX2ZsYWdzIHw9IE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19WNl9JRklEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKwogICAgICAgICBpZiAoSUFOQUlGVFlQRV9FVEhFUk5FVENTTUFDRCA9PSBlbnRyeS0+dHlwZSkgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIHNwZWVkOwogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGRlZmF1bHRzcGVlZCA9IE5PTUlOQUxfTElOS19TUEVFRDsKQEAgLTg3OCwzICs5MzQsMTkwIEBACiAgICAgfQogICAgIHJldHVybiByZXRzcGVlZDsKIH0KKyNpZmRlZiBTVVBQT1JUX1BSRUZJWF9GTEFHUwordm9pZCBuZXRzbm1wX3ByZWZpeF9wcm9jZXNzKGludCBmZCwgdm9pZCAqZGF0YSk7CisKKy8qIE9wZW4gbmV0bGluayBzb2NrZXQgdG8gd2F0Y2ggbmV3IGlwdjYgYWRkcmVzc2VzIGFuZCBwcmVmaXhlcy4gKi8KK2ludCBuZXRzbm1wX3ByZWZpeF9saXN0ZW4oKQoreworICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgc3RydWN0IG5sbXNnaGRyIG47CisgICAgICAgICAgICAgICAgc3RydWN0IGlmaW5mb21zZyByOworICAgICAgICAgICAgICAgIGNoYXIgICBidWZbMTAyNF07CisgICAgfSByZXE7CisKKyAgICBzdHJ1Y3QgcnRhdHRyICAgICAgKnJ0YTsKKyAgICBpbnQgICAgICAgICAgICAgICAgc3RhdHVzOworICAgIHN0cnVjdCBzb2NrYWRkcl9ubCBsb2NhbGFkZHJpbmZvOworICAgIHVuc2lnbmVkICAgICAgICAgICBncm91cHMgPSAwOworCisgICAgaW50IGZkID0gc29ja2V0KFBGX05FVExJTkssIFNPQ0tfREdSQU0sIE5FVExJTktfUk9VVEUpOworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5ldHNubXBfcHJlZml4X2xpc3RlbjogQ2Fubm90IGNyZWF0ZSBzb2NrZXQuXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG1lbXNldCgmbG9jYWxhZGRyaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCkpOworCisgICAgZ3JvdXBzIHw9IFJUTUdSUF9JUFY2X0lGQUREUjsKKyAgICBncm91cHMgfD0gUlRNR1JQX0lQVjZfUFJFRklYOworICAgIGxvY2FsYWRkcmluZm8ubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKKyAgICBsb2NhbGFkZHJpbmZvLm5sX2dyb3VwcyA9IGdyb3VwczsKKworICAgIGlmIChiaW5kKGZkLCAoc3RydWN0IHNvY2thZGRyKikmbG9jYWxhZGRyaW5mbywgc2l6ZW9mKGxvY2FsYWRkcmluZm8pKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibmV0c25tcF9wcmVmaXhfbGlzdGVuOiBCaW5kIGZhaWxlZC5cbiIpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBtZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOworICAgIHJlcS5uLm5sbXNnX2xlbiA9IE5MTVNHX0xFTkdUSChzaXplb2Yoc3RydWN0IHJ0Z2VubXNnKSk7CisgICAgcmVxLm4ubmxtc2dfZmxhZ3MgPSBOTE1fRl9SRVFVRVNUIHwgTkxNX0ZfUk9PVDsKKyAgICByZXEubi5ubG1zZ190eXBlID0gUlRNX0dFVExJTks7CisgICAgcmVxLnIuaWZpX2ZhbWlseSA9IEFGX0lORVQ2OworICAgIHJ0YSA9IChzdHJ1Y3QgcnRhdHRyICopKCgoY2hhciAqKSZyZXEpICsgTkxNU0dfQUxJR04ocmVxLm4ubmxtc2dfbGVuKSk7CisgICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7CisKKyAgICBzdGF0dXMgPSBzZW5kKGZkLCAmcmVxLCByZXEubi5ubG1zZ19sZW4sIDApOworICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfcHJlZml4X2xpc3Rlbjogc2VuZCBmYWlsZWRcbiIpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAocmVnaXN0ZXJfcmVhZGZkKGZkLCBuZXRzbm1wX3ByZWZpeF9wcm9jZXNzLCBOVUxMKSAhPSAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfcHJlZml4X2xpc3RlbjogZXJyb3IgcmVnaXN0ZXJpbmcgbmV0bGluayBzb2NrZXRcbiIpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIFByb2Nlc3Mgb25lIGluY29taW5nIG5ldGxpbmsgcGFja2V0cy4KKyAqIFJUTV9ORVdBRERSIGFuZCBSVE1fTkVXUFJFRklYIHVzdWFsbHkgYXJyaXZlIGluIHNlcGFyYXRlIHBhY2tldHMKKyAqIC0+IGluZm9ybWF0aW9uIGZyb20gdGhlc2UgcGFja2V0cyBtdXN0IGJlIHN0b3JlZCBsb2NhbGx5IGFuZAorICogbmV3IHByZWZpeCBpcyBhZGRlZCB3aGVuIGluZm9ybWF0aW9uIGZyb20gYm90aCBwYWNrZXRzIGlzIGNvbXBsZXRlLgorICovCit2b2lkIG5ldHNubXBfcHJlZml4X3Byb2Nlc3MoaW50IGZkLCB2b2lkICpkYXRhKQoreworICAgIGludCAgICAgICAgICAgICAgICBzdGF0dXM7CisgICAgY2hhciAgICAgICAgICAgICAgIGJ1ZlsxNjM4NF07CisgICAgc3RydWN0IG5sbXNnaGRyICAgICpubG1wOworICAgIHN0cnVjdCBydGF0dHIgICAgICAqcnRhdHA7CisgICAgc3RydWN0IGlmYWRkcm1zZyAgICppZmE7CisgICAgc3RydWN0IHByZWZpeG1zZyAgICpwcmVmaXg7CisgICAgc3RydWN0IGluNl9hZGRyICAgICppbjZwOworCisgICAgLyogdGhlc2UgdmFsdWVzIG11c3QgcGVyc2lzdCBiZXR3ZWVuIGNhbGxzICovCisgICAgc3RhdGljIGNoYXIgICAgICAgICAgICAgICBpbjZwQWRkcls0MF07CisgICAgc3RhdGljIGludCAgICAgICAgICAgICAgICBoYXZlX2FkZHIgPSAwLGhhdmVfcHJlZml4ID0gMDsKKyAgICBzdGF0aWMgaW50ICAgICAgICAgICAgICAgIG9ubGluayA9IDIsYXV0b25vbW91cyA9IDI7IC8qQXNzdW1lIGFzIGZhbHNlKi8KKworICAgIGludCAgICAgICAgICAgICAgICBpcmV0OworICAgIHByZWZpeF9jYnggICAgICAgICAqbmV3OworICAgIGludCAgICAgICAgICAgICAgICBsZW4sIHJlcV9sZW4sIGxlbmd0aDsgCisKKyAgICBzdGF0dXMgPSByZWN2KGZkLCBidWYsIHNpemVvZihidWYpLCAwKTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfcHJlZml4X2xpc3RlbjogUmVjZWl2ZSBmYWlsZWQuXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmKHN0YXR1cyA9PSAwKXsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIkVuZCBvZiBGaWxlXG4iKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IobmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIgKilidWY7IHN0YXR1cyA+IHNpemVvZigqbmxtcCk7KXsKKyAgICAgICAgbGVuID0gbmxtcC0+bmxtc2dfbGVuOworICAgICAgICByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKKworICAgICAgICBpZiAocmVxX2xlbiA8IDAgfHwgbGVuID4gc3RhdHVzKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJuZXRzbm1wX3ByZWZpeF9saXN0ZW46IEVycm9yIGluIGxlbmd0aC5cbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFOTE1TR19PSyhubG1wLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTpwcmVmaXgiLCAiTkxNU0cgbm90IE9LXG4iKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChubG1wLT5ubG1zZ190eXBlID09IFJUTV9ORVdBRERSIHx8IG5sbXAtPm5sbXNnX3R5cGUgPT0gUlRNX0RFTEFERFIpIHsKKyAgICAgICAgICAgIGlmYSA9IE5MTVNHX0RBVEEobmxtcCk7CisgICAgICAgICAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgICAgICBsZW5ndGggLT0gTkxNU0dfTEVOR1RIKHNpemVvZigqaWZhKSk7CisKKyAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIndyb25nIG5sbXNnIGxlbmd0aCAlZFxuIiwgbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmKCFpZmEtPmlmYV9mbGFncykgeworICAgICAgICAgICAgICAgIHJ0YXRwID0gSUZBX1JUQShpZmEpOworICAgICAgICAgICAgICAgIHdoaWxlIChSVEFfT0socnRhdHAsIGxlbmd0aCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJ0YXRwLT5ydGFfdHlwZSA9PSBJRkFfQUREUkVTUyl7CisgICAgICAgICAgICAgICAgICAgICAgICBpbjZwID0gKHN0cnVjdCBpbjZfYWRkciAqKSBSVEFfREFUQShydGF0cCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZihubG1wLT5ubG1zZ190eXBlID09IFJUTV9ERUxBRERSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25wcmludGYoaW42cEFkZHIsIHNpemVvZihpbjZwQWRkciksICIlMDR4JTA0eCUwNHglMDR4JTA0eCUwNHglMDR4JTA0eCIsIE5JUDYoKmluNnApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX2FkZHIgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25wcmludGYoaW42cEFkZHIsIHNpemVvZihpbjZwQWRkciksICIlMDR4JTA0eCUwNHglMDR4JTA0eCUwNHglMDR4JTA0eCIsIE5JUDYoKmluNnApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlX2FkZHIgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJ0YXRwID0gUlRBX05FWFQocnRhdHAsbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZihubG1wLT5ubG1zZ190eXBlID09IFJUTV9ORVdQUkVGSVgpIHsKKyAgICAgICAgICAgIHByZWZpeCA9IE5MTVNHX0RBVEEobmxtcCk7CisgICAgICAgICAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgICAgICBsZW5ndGggLT0gTkxNU0dfTEVOR1RIKHNpemVvZigqcHJlZml4KSk7CisKKyAgICAgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIndyb25nIG5sbXNnIGxlbmd0aCAlZFxuIiwgbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYXZlX3ByZWZpeCA9IDE7CisgICAgICAgICAgICBpZiAocHJlZml4LT5wcmVmaXhfZmxhZ3MgJiBJRl9QUkVGSVhfT05MSU5LKSB7CisgICAgICAgICAgICAgICAgb25saW5rID0gMTsgCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocHJlZml4LT5wcmVmaXhfZmxhZ3MgJiBJRl9QUkVGSVhfQVVUT0NPTkYpIHsKKyAgICAgICAgICAgICAgICBhdXRvbm9tb3VzID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgLT0gTkxNU0dfQUxJR04obGVuKTsKKyAgICAgICAgbmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIqKSgoY2hhciopbmxtcCArIE5MTVNHX0FMSUdOKGxlbikpOworICAgIH0KKworICAgIGlmKChoYXZlX2FkZHIgPT0gMSkgJiYgKGhhdmVfcHJlZml4ID09IDEpKXsKKyAgICAgICAgaWYoIShuZXcgPSBuZXRfc25tcF9jcmVhdGVfcHJlZml4X2luZm8gKG9ubGluaywgYXV0b25vbW91cywgaW42cEFkZHIpKSkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOnByZWZpeCIsICJVbmFibGUgdG8gY3JlYXRlIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgIGVsc2UgeworCisgICAgICAgICAgICBpcmV0ID0gbmV0X3NubXBfc2VhcmNoX3VwZGF0ZV9wcmVmaXhfaW5mbyAobGlzdF9pbmZvLmxpc3RfaGVhZCwgbmV3LCAwKTsKKyAgICAgICAgICAgIGlmKGlyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIlVuYWJsZSB0byBhZGQvdXBkYXRlIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgICAgICAgICAgZnJlZShuZXcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoaXJldCA9PSAyKSAvKk9ubHkgd2hlbiBlbnJ0eSBhbHJlYWR5IGV4aXN0cyBhbmQgd2UgYXJlIG9ubHkgdXBkYXRpbmcqLworICAgICAgICAgICAgICAgIGZyZWUobmV3KTsKKyAgICAgICAgfQorICAgICAgICBoYXZlX2FkZHIgPSBoYXZlX3ByZWZpeCA9IDA7CisgICAgICAgIG9ubGluayA9IGF1dG9ub21vdXMgPSAyOyAvKlNldCB0byBkZWZhdWx0cyBhZ2FpbiovCisgICAgfSBlbHNlIGlmIChoYXZlX2FkZHIgPT0gLTEpIHsKKyAgICAgICAgaXJldCA9IG5ldF9zbm1wX2RlbGV0ZV9wcmVmaXhfaW5mbyAobGlzdF9pbmZvLmxpc3RfaGVhZCwgaW42cEFkZHIpOworICAgICAgICBpZihpcmV0IDwgMCkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOnByZWZpeCIsICJVbmFibGUgdG8gZGVsZXRlIHRoZSBwcmVmaXggaW5mb1xuIikpOworICAgICAgICAgICAgaWYoIWlyZXQpCisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6cHJlZml4IiwgIlVuYWJsZSB0byBmaW5kIHRoZSBub2RlIHRvIGRlbGV0ZVxuIikpOworICAgICAgICAgICAgaGF2ZV9hZGRyID0gMDsKKyAgICB9Cit9CisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX29wZW5ic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGEyZmRjCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9vcGVuYnNkLmMKQEAgLTAsMCArMSw0MDIgQEAKKy8qCisgKiAgSW50ZXJmYWNlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZCQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCisjaW5jbHVkZSAiaWYtbWliL2lmVGFibGUvaWZUYWJsZV9jb25zdGFudHMuaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpZiBIQVZFX1NZU19JT0NUTF9ICisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjZWxzZQorI2Vycm9yICJsaW51eCBzaG91bGQgaGF2ZSBzeXMvaW9jdGwgaGVhZGVyIgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaD4KKyNpbmNsdWRlICJpZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2luY2x1ZGUgPG5ldC9pZl9kbC5oPgorI2luY2x1ZGUgPG5ldC9pZl90eXBlcy5oPgorI2luY2x1ZGUgPG5ldC9pZl9tZWRpYS5oPgorCitleHRlcm4gc3RydWN0IHRpbWV2YWwgc3RhcnR0aW1lOworCitpbnQKK25ldHNubXBfb3BlbmJzZF9pbnRlcmZhY2VfZ2V0X2lmX3NwZWVkKGNoYXIgKm5hbWUsIHVfaW50ICpzcGVlZCwgdV9pbnQgKnNwZWVkX2hpZ2gpOworCit2b2lkCituZXRzbm1wX2FyY2hfaW50ZXJmYWNlX2luaXQodm9pZCkKK3sKKyAgICAvKgorICAgICAqIG5vdGhpbmcgdG8gZG8KKyAgICAgKi8KK30KKworLyoKKyAqIGZpbmQgdGhlIGlmSW5kZXggZm9yIGFuIGludGVyZmFjZSBuYW1lCisgKgorICogQHJldHZhbCAwIDogbm8gaW5kZXggZm91bmQKKyAqIEByZXR2YWwgPjA6IGlmSW5kZXggZm9yIGludGVyZmFjZQorICovCitvaWQKK25ldHNubXBfYXJjaF9pbnRlcmZhY2VfaW5kZXhfZmluZChjb25zdCBjaGFyICpuYW1lKQoreworICAgIHJldHVybiBpZl9uYW1ldG9pbmRleChuYW1lKTsKK30KKworLyogc2FfbGVuIHJvdW5kdXAgbWFjcm8uICovCisjZGVmaW5lIFJPVU5EVVAoYSkgXAorICAoKGEpID4gMCA/ICgxICsgKCgoYSkgLSAxKSB8IChzaXplb2YobG9uZykgLSAxKSkpIDogc2l6ZW9mKGxvbmcpKQorCisvKgorICoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBubyBjb250YWluZXIgc3BlY2lmaWVkCisgKiBAcmV0dmFsIC0yIGNvdWxkIG5vdCBnZXQgaW50ZXJmYWNlIGluZm8KKyAqIEByZXR2YWwgLTMgY291bGQgbm90IGNyZWF0ZSBlbnRyeSAocHJvYmFibHkgbWFsbG9jKQorICovCitpbnQKK25ldHNubXBfYXJjaF9pbnRlcmZhY2VfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBuZXRzbm1wX2ludGVyZmFjZV9lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIHVfY2hhciAqaWZfbGlzdCA9IE5VTEwsICpjcDsKKyAgICBzaXplX3QgaWZfbGlzdF9zaXplID0gMDsKKyAgICBzdHJ1Y3QgaWZfbXNnaGRyICppZnA7CisgICAgaW50IHN5c2N0bF9vaWRbXSA9IHsgQ1RMX05FVCwgUEZfUk9VVEUsIDAsIDAsIE5FVF9SVF9JRkxJU1QsIDAgfTsKKyAgICBzdHJ1Y3QgaWZhX21zZ2hkciAqaWZhOworICAgIHN0cnVjdCBzb2NrYWRkciAqYTsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfZGwgKmFkbDsKKyAgICBpbnQgYW1hc2s7CisgICAgY2hhciAqaWZfbmFtZTsKKyAgICBpbnQgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTpjb250YWluZXI6YXJjaCIsCisgICAgICAgICAgICAgICAgImxvYWQgKGZsYWdzICVwKVxuIiwgbG9hZF9mbGFncykpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBpbnRlcmZhY2VcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHN5c2N0bChzeXNjdGxfb2lkLCBzaXplb2Yoc3lzY3RsX29pZCkgLyBzaXplb2YoaW50KSwgMCwgJmlmX2xpc3Rfc2l6ZSwgMCwgMCkgPT0gLTEpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBnZXQgaW50ZXJmYWNlIGluZm8gKHNpemUpXG4iKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIGlmX2xpc3QgPSBtYWxsb2MoaWZfbGlzdF9zaXplKTsKKyAgICBpZiAoaWZfbGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBpbnRlcmZhY2UgaW5mbyAoJXUgYnl0ZXMpXG4iLCBpZl9saXN0X3NpemUpOworICAgICAgICByZXR1cm4gLTM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLAorICAgICAgICAgICAgICAgICAgICAiYWxsb2NhdGVkICV1IGJ5dGVzIGZvciBpZl9saXN0XG4iLCBpZl9saXN0X3NpemUpKTsKKyAgICB9CisKKyAgICBpZiAoc3lzY3RsKHN5c2N0bF9vaWQsIHNpemVvZihzeXNjdGxfb2lkKSAvIHNpemVvZihpbnQpLCBpZl9saXN0LCAmaWZfbGlzdF9zaXplLCAwLCAwKSA9PSAtMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGdldCBpbnRlcmZhY2UgaW5mb1xuIik7CisgICAgICAgIGZyZWUoaWZfbGlzdCk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICAvKiAxc3QgcGFzczogY3JlYXRlIGludGVyZmFjZSBlbnRyaWVzICovCisgICAgZm9yIChjcCA9IGlmX2xpc3Q7IGNwIDwgaWZfbGlzdCArIGlmX2xpc3Rfc2l6ZTsgY3AgKz0gaWZwLT5pZm1fbXNnbGVuKSB7CisKKyAgICAgICAgaWZwID0gKHN0cnVjdCBpZl9tc2doZHIgKikgY3A7CisgICAgICAgIGlmX25hbWUgPSBOVUxMOworICAgICAgICBmbGFncyA9IDA7CisgICAgICAgIGFkbCA9IE5VTEw7CisKKyAgICAgICAgaWYgKGlmcC0+aWZtX3R5cGUgIT0gUlRNX0lGSU5GTykKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmIChpZnAtPmlmbV9hZGRycyAmIFJUQV9JRlApIHsKKyAgICAgICAgICAgIGEgPSAoc3RydWN0IHNvY2thZGRyICopIChpZnAgKyAxKTsKKyAgICAgICAgICAgIC8qIGlmX21zZ2hkciBpcyBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBzb2NrYWRkcnMsIG9mIHdoaWNoIHdlIG5lZWQgb25seSBSVEFfSUZQICovCisgICAgICAgICAgICAvKiBtb3N0IG9mIHRoZSB0aW1lIFJUQV9JRlAgaXMgdGhlIGZpcnN0IGFkZHJlc3Mgd2UgZ2V0LCBoZW5jZSB0aGUgc2hvcnRjdXQgKi8KKyAgICAgICAgICAgIGlmICgoaWZwLT5pZm1fYWRkcnMgJiAoflJUQV9JRlAgLSAxKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIC8qIHNraXAgYWxsIGFkZHJlc3NlcyB1cCB0byBSVEFfSUZQLiAqLworICAgICAgICAgICAgICAgIGZvciAoYW1hc2sgPSAoUlRBX0lGUCA+PiAxKTsgYW1hc2sgIT0gMDsgYW1hc2sgPj49IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlmcC0+aWZtX2FkZHJzICYgYW1hc2spIHsgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKCAoKGNoYXIgKikgYSkgKyBST1VORFVQKGEtPnNhX2xlbikgKTsgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFkbCA9IChzdHJ1Y3Qgc29ja2FkZHJfZGwgKikgYTsKKyAgICAgICAgICAgIGlmX25hbWUgPSAoY2hhciAqKSBhZGwtPnNkbF9kYXRhOworICAgICAgICAgICAgaWZfbmFtZVthZGwtPnNkbF9ubGVuXSA9ICdcMCc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCEoaWZwLT5pZm1fYWRkcnMgJiBSVEFfSUZQKSB8fCBpZl9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpZm1faW5kZXggJXU6IG5vIGludGVyZmFjZSBuYW1lIGluIG1lc3NhZ2UsIHNraXBwaW5nXG4iLCBpZnAtPmlmbV9pbmRleCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2VudHJ5X2NyZWF0ZShpZl9uYW1lLCBpZnAtPmlmbV9pbmRleCk7CisgICAgICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9jb250YWluZXJfZnJlZShjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfSU5URVJGQUNFX0ZSRUVfTk9GTEFHUyk7CisgICAgICAgICAgICBmcmVlKGlmX2xpc3QpOworICAgICAgICAgICAgcmV0dXJuIC0zOworICAgICAgICB9CisKKyAgICAgICAgLyogZ2V0IHBoeXNpY2FsIGFkZHJlc3MgKi8KKyAgICAgICAgaWYgKGFkbCAhPSBOVUxMICYmIGFkbC0+c2RsX2FsZW4gPiAwKSB7CisgICAgICAgICAgICBlbnRyeS0+cGFkZHJfbGVuID0gYWRsLT5zZGxfYWxlbjsKKyAgICAgICAgICAgIGVudHJ5LT5wYWRkciA9IG1hbGxvYyhlbnRyeS0+cGFkZHJfbGVuKTsKKyAgICAgICAgICAgIG1lbWNweShlbnRyeS0+cGFkZHIsIGFkbC0+c2RsX2RhdGEgKyBhZGwtPnNkbF9ubGVuLCBhZGwtPnNkbF9hbGVuKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlczogcGFkZHJfbGVuPSVkLCBlbnRyeS0+cGFkZHI9JXg6JXg6JXg6JXg6JXg6JXhcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBpZl9uYW1lLCBlbnRyeS0+cGFkZHJfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnBhZGRyWzBdLCBlbnRyeS0+cGFkZHJbMV0sIGVudHJ5LT5wYWRkclsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5wYWRkclszXSwgZW50cnktPnBhZGRyWzRdLCBlbnRyeS0+cGFkZHJbNV0pKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVudHJ5LT5wYWRkciA9IG1hbGxvYyg2KTsKKyAgICAgICAgICAgIGVudHJ5LT5wYWRkcl9sZW4gPSA2OworICAgICAgICAgICAgbWVtc2V0KGVudHJ5LT5wYWRkciwgMCwgNik7CisgICAgICAgIH0KKworICAgICAgICBlbnRyeS0+bXR1ID0gaWZwLT5pZm1fZGF0YS5pZmlfbXR1OworICAgICAgICBlbnRyeS0+dHlwZSA9IGlmcC0+aWZtX2RhdGEuaWZpX3R5cGU7CisKKworICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lGX0ZMQUdTOworICAgICAgICBlbnRyeS0+b3NfZmxhZ3MgPSBpZnAtPmlmbV9mbGFnczsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKGlmcC0+aWZtX2ZsYWdzICYgSUZGX1VQKSB7CisgICAgICAgICAgICBlbnRyeS0+YWRtaW5fc3RhdHVzID0gSUZBRE1JTlNUQVRVU19VUDsKKyNpZiBkZWZpbmVkKCBMSU5LX1NUQVRFX1VQICkgJiYgZGVmaW5lZCggTElOS19TVEFURV9ET1dOICkKKyAgICAgICAgICAgIGlmIChpZnAtPmlmbV9kYXRhLmlmaV9saW5rX3N0YXRlID09IExJTktfU1RBVEVfVVApIHsKKyAgICAgICAgICAgICAgICBlbnRyeS0+b3Blcl9zdGF0dXMgPSBJRk9QRVJTVEFUVVNfVVA7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlmcC0+aWZtX2RhdGEuaWZpX2xpbmtfc3RhdGUgPT0gTElOS19TVEFURV9ET1dOKSB7CisgICAgICAgICAgICAgICAgZW50cnktPm9wZXJfc3RhdHVzID0gSUZPUEVSU1RBVFVTX0RPV047CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGVudHJ5LT5vcGVyX3N0YXR1cyA9IElGT1BFUlNUQVRVU19VTktOT1dOOworICAgICAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgICAgIGVudHJ5LT5vcGVyX3N0YXR1cyA9IElGT1BFUlNUQVRVU19VUDsKKyNlbmRpZgorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZW50cnktPmFkbWluX3N0YXR1cyA9IElGQURNSU5TVEFUVVNfRE9XTjsKKyAgICAgICAgICAgIC8qIElGLU1JQiBzcGVjaWZpY2FsbHkgc2F5cyB0aGF0IGlmT3BlclN0YXR1cyBzaG91bGQgYmUgZG93biBpbiB0aGlzIGNhc2UgKi8gCisgICAgICAgICAgICBlbnRyeS0+b3Blcl9zdGF0dXMgPSBJRk9QRVJTVEFUVVNfRE9XTjsKKyAgICAgICAgfQorCisgICAgICAgIGVudHJ5LT5uc19mbGFncyB8PSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfVjRfUkVBU01NQVg7CisgICAgICAgIGVudHJ5LT5yZWFzbV9tYXggPSBJUF9NQVhQQUNLRVQ7CisKKyAgICAgICAgLyogZ2V0IGNvdW50ZXJzICovCisgICAgICAgIGVudHJ5LT5zdGF0cy5pYnl0ZXMubG93ID0gaWZwLT5pZm1fZGF0YS5pZmlfaWJ5dGVzOyBlbnRyeS0+c3RhdHMuaWJ5dGVzLmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMuaXVjYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX2lwYWNrZXRzOyBlbnRyeS0+c3RhdHMuaXVjYXN0LmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMuaW1jYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX2ltY2FzdHM7IGVudHJ5LT5zdGF0cy5pbWNhc3QuaGlnaCA9IDA7CisgICAgICAgIGVudHJ5LT5zdGF0cy5pZXJyb3JzID0gaWZwLT5pZm1fZGF0YS5pZmlfaWVycm9yczsKKyAgICAgICAgZW50cnktPnN0YXRzLmlkaXNjYXJkcyA9IGlmcC0+aWZtX2RhdGEuaWZpX2lxZHJvcHM7CisgICAgICAgIGVudHJ5LT5zdGF0cy5pdW5rbm93bl9wcm90b3MgPSBpZnAtPmlmbV9kYXRhLmlmaV9ub3Byb3RvOworCisgICAgICAgIGVudHJ5LT5zdGF0cy5vYnl0ZXMubG93ID0gaWZwLT5pZm1fZGF0YS5pZmlfb2J5dGVzOyBlbnRyeS0+c3RhdHMub2J5dGVzLmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMub3VjYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX29wYWNrZXRzOyBlbnRyeS0+c3RhdHMub3VjYXN0LmhpZ2ggPSAwOworICAgICAgICBlbnRyeS0+c3RhdHMub21jYXN0LmxvdyA9IGlmcC0+aWZtX2RhdGEuaWZpX29tY2FzdHM7IGVudHJ5LT5zdGF0cy5vbWNhc3QuaGlnaCA9IDA7CisgICAgICAgIGVudHJ5LT5zdGF0cy5vZXJyb3JzID0gaWZwLT5pZm1fZGF0YS5pZmlfb2Vycm9yczsKKyAgICAgICAgZW50cnktPm5zX2ZsYWdzIHw9ICBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfQllURVMgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19EUk9QUyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX01DQVNUX1BLVFM7CisKKyAgICAgICAgaWYgKHRpbWVyY21wKCZpZnAtPmlmbV9kYXRhLmlmaV9sYXN0Y2hhbmdlLCAmc3RhcnR0aW1lLCA+KSkgeworICAgICAgICAgICAgZW50cnktPmxhc3RjaGFuZ2UgPSAoaWZwLT5pZm1fZGF0YS5pZmlfbGFzdGNoYW5nZS50dl9zZWMgLSBzdGFydHRpbWUudHZfc2VjKSAqIDEwMDsKKyAgICAgICAgICAgIGVudHJ5LT5uc19mbGFncyB8PSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfTEFTVENIQU5HRTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGVudHJ5LT5sYXN0Y2hhbmdlID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpZnAtPmlmbV9mbGFncyAmIElGRl9QUk9NSVNDKSBlbnRyeS0+cHJvbWlzY3VvdXMgPSAxOworCisgICAgICAgIC8qIHRyeSB0byBndWVzcyB0aGUgc3BlZWQgZnJvbSBtZWRpYSB0eXBlICovCisgICAgICAgIG5ldHNubXBfb3BlbmJzZF9pbnRlcmZhY2VfZ2V0X2lmX3NwZWVkKGVudHJ5LT5uYW1lLCAmZW50cnktPnNwZWVkLCAmZW50cnktPnNwZWVkX2hpZ2gpOworICAgICAgICBpZiAoZW50cnktPnNwZWVkX2hpZ2ggIT0gMCkgeworICAgICAgICAgICAgZW50cnktPm5zX2ZsYWdzIHw9IE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19ISUdIX1NQRUVEOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogb3IgcmVzb3J0IHRvIGlmaV9iYXVkcmF0ZSAqLworICAgICAgICAgICAgZW50cnktPnNwZWVkID0gaWZwLT5pZm1fZGF0YS5pZmlfYmF1ZHJhdGU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9vdmVycmlkZXMoZW50cnkpOworCisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAgICAgImNyZWF0ZWQgZW50cnkgJXUgZm9yICVzXG4iLCBlbnRyeS0+aW5kZXgsIGVudHJ5LT5uYW1lKSk7CisgICAgfSAvKiBmb3IgKGVhY2ggaW50ZXJmYWNlIGVudHJ5KSAqLworCisgICAgLyogcGFzcyAyOiB3YWxrIGFkZHJlc3NlcyAqLworICAgIGZvciAoY3AgPSBpZl9saXN0OyBjcCA8IGlmX2xpc3QgKyBpZl9saXN0X3NpemU7IGNwICs9IGlmYS0+aWZhbV9tc2dsZW4pIHsKKworICAgICAgICBpZmEgPSAoc3RydWN0IGlmYV9tc2doZHIgKikgY3A7CisKKyAgICAgICAgaWYgKGlmYS0+aWZhbV90eXBlICE9IFJUTV9ORVdBRERSKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLAorICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZWQgMHgleCBpbiBSVE1fTkVXQUREUiBmb3IgaWZpbmRleCAldVxuIiwKKyAgICAgICAgICAgICAgICAgICAgaWZhLT5pZmFtX2FkZHJzLCBpZmEtPmlmYW1faW5kZXgpKTsKKworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9nZXRfYnlfaW5kZXgoY29udGFpbmVyLCBpZmEtPmlmYW1faW5kZXgpOworICAgICAgICBpZiAoZW50cnkgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImFkZHJlc3MgZm9yIGEgbm9uZXhpc3RlbnQgaW50ZXJmYWNlPyBpbmRleD0lZCIsIGlmYS0+aWZhbV9pbmRleCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8qIHdhbGsgdGhlIGxpc3Qgb2YgYWRkcmVzc2VzIHJlY2VpdmVkLgorICAgICAgICAgICB3ZSBkbyBub3QgdXNlIGFjdHVhbCBhZGRyZXNzZXMsIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhpcyBpcyB0byBzZXQgZmxhZ3MgKi8KKyAgICAgICAgYSA9IChzdHJ1Y3Qgc29ja2FkZHIgKikgKGlmYSArIDEpOworICAgICAgICBmb3IgKGFtYXNrID0gaWZhLT5pZmFtX2FkZHJzOyBhbWFzayAhPSAwOyBhbWFzayA+Pj0gMSkgeworICAgICAgICAgICAgaWYgKChhbWFzayAmIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmludGVyZmFjZTpjb250YWluZXI6YXJjaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBhPSVwLCBzYV9sZW49JWQsIHNhX2ZhbWlseT0weCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5uYW1lLCBhLCBhLT5zYV9sZW4sIGEtPnNhX2ZhbWlseSkpOworCisgICAgICAgICAgICAgICAgaWYgKGEtPnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lQVjQ7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYS0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KQorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+bnNfZmxhZ3MgfD0gTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0lQVjY7CisKKyAgICAgICAgICAgICAgICBhID0gKHN0cnVjdCBzb2NrYWRkciAqKSAoICgoY2hhciAqKSBhKSArIFJPVU5EVVAoYS0+c2FfbGVuKSApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAgICAgIiVzOiBmbGFncz0weCV4XG4iLCBlbnRyeS0+bmFtZSwgZW50cnktPm5zX2ZsYWdzKSk7CisgICAgfQorCisgICAgaWYgKGlmX2xpc3QgIT0gTlVMTCkKKyAgICAgICAgZnJlZShpZl9saXN0KTsKKworICAgIHJldHVybiAwOworfQorCisvKgorICogc3Vicm91dGluZSB0byB0cmFuc2xhdGUga25vd24gbWVkaWEgdHlwZWQgdG8gc3BlZWQuCisgKiBzZWUgL3Vzci9pbmNsdWRlL25ldC9pZl9tZWRpYS5oIGZvciBkZWZpbml0aW9ucworICovCisKK3ZvaWQKK19vcGVuYnNkX2ludGVyZmFjZV9pZm1lZGlhX3RvX3NwZWVkKGludCBtZWRpYSwgdV9pbnQgKnNwZWVkLCB1X2ludCAqc3BlZWRfaGlnaCkKK3sKKyAgICAqc3BlZWQgPSAwOyAqc3BlZWRfaGlnaCA9IDA7CisKKyAgICBzd2l0Y2ggKElGTV9UWVBFKG1lZGlhKSkgeworICAgICAgICBjYXNlIElGTV9FVEhFUjoKKyAgICAgICAgICAgIHN3aXRjaCAoSUZNX1NVQlRZUEUobWVkaWEpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTBfVDoKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMF8yOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwXzU6CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTBfU1RQOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwX0ZMOgorICAgICAgICAgICAgICAgICAgICAqc3BlZWQgPSAxMDAwMDAwMDsgKnNwZWVkX2hpZ2ggPSAxMDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTAwX1RYOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwMF9GWDoKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMDBfVDQ6CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTAwX1ZHOgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwMF9UMjoKKyAgICAgICAgICAgICAgICAgICAgKnNwZWVkID0gMTAwMDAwMDAwOyAqc3BlZWRfaGlnaCA9IDEwMDsgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTAwMF9MWDoKKwkJY2FzZSBJRk1fMTAwMF9TWDoKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMDAwX0NYOgorI2lmZGVmIElGTV8xMDAwX1QKKyAgICAgICAgICAgICAgICBjYXNlIElGTV8xMDAwX1Q6CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgKnNwZWVkID0gMTAwMDAwMDAwMDsgKnNwZWVkX2hpZ2ggPSAxMDAwOyBicmVhazsKKyNpZmRlZiBJRk1fMTBHQkFTRV9TUgorICAgICAgICAgICAgICAgIGNhc2UgSUZNXzEwR0JBU0VfU1I6CisgICAgICAgICAgICAgICAgY2FzZSBJRk1fMTBHQkFTRV9MUjoKKyAgICAgICAgICAgICAgICAgICAgKnNwZWVkID0gKHVfaW50KSAtMTsgLyogNDI5NDk2NzI5NTsgKi8gKnNwZWVkX2hpZ2ggPSAxMDAwMDsgYnJlYWs7CisjZW5kaWYKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICByZXR1cm47Cit9CisKKy8qCisgKiBAcmV0dmFsICAwIHNwZWVkIGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkIChlcnJvciwgdW5rbm93biBtZWRpYSkKKyAqIEByZXR2YWwgPjAgc3BlZWQsIGVxdWFsIHRvICpzcGVlZC4KKyAqICAgICAgICAgICAgc2V0cyAqc3BlZWQ9Ml4zMSBhbmQgcmV0dXJucyAqc3BlZWRfaGlnaD1zcGVlZC8xMF42IGFzIHJlcXVpcmVkIGJ5IGlmU3BlZWQvaWZIaWdoU3BlZWQuCisgKi8KKworaW50CituZXRzbm1wX29wZW5ic2RfaW50ZXJmYWNlX2dldF9pZl9zcGVlZChjaGFyICpuYW1lLCB1X2ludCAqc3BlZWQsIHVfaW50ICpzcGVlZF9oaWdoKQoreworICAgIGludCBzOworICAgIHN0cnVjdCBpZm1lZGlhcmVxIGlmbXI7CisgICAgaW50ICptZWRpYV9saXN0LCBpOworICAgIHVfaW50IHRfc3BlZWQsIHRfc3BlZWRfaGlnaDsgCisgICAgdV9pbnQgbV9zcGVlZCwgbV9zcGVlZF9oaWdoOworCisgICAgKnNwZWVkID0gMDsgKnNwZWVkX2hpZ2ggPSAwOworCisgICAgaWYgKChzID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgbWVtc2V0KCZpZm1yLCAwLCBzaXplb2YoaWZtcikpOworICAgIHN0cmxjcHkoaWZtci5pZm1fbmFtZSwgbmFtZSwgc2l6ZW9mKGlmbXIuaWZtX25hbWUpKTsKKworICAgIGlmIChpb2N0bChzLCBTSU9DR0lGTUVESUEsIChjYWRkcl90KSZpZm1yKSA8IDAgfHwgaWZtci5pZm1fY291bnQgPT0gMCkgeworICAgICAgICBjbG9zZShzKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgLyoKKyAgICAgKiB0cnkgdG8gZ2V0IHNwZWVkIGZyb20gY3VycmVudCBtZWRpYS4KKyAgICAgKiBpZiB1bnN1Y2Nlc3NmdWwgKGUuZy4sIGludGVyZmFjZSBpcyBkb3duKSwgZ2V0IGEgbGlzdCBvZiBjYXBhYmlsaXRpZXMsCisgICAgICogdHJ5IGVhY2ggYW5kIHJldHVybiBtYXhpbXVtIHNwZWVkIHRoZSBpbnRlcmZhY2UgaXMgY2FwYWJsZSBvZi4KKyAgICAgKi8KKworICAgIF9vcGVuYnNkX2ludGVyZmFjZV9pZm1lZGlhX3RvX3NwZWVkKGlmbXIuaWZtX2N1cnJlbnQsIHNwZWVkLCBzcGVlZF9oaWdoKTsKKworICAgIGlmICgqc3BlZWQgPT0gMCAmJgorICAgICAgICAobWVkaWFfbGlzdCA9IChpbnQgKikgbWFsbG9jKGlmbXIuaWZtX2NvdW50ICogc2l6ZW9mKGludCkpKSAhPSBOVUxMICkgeworCisgICAgICAgIGlmbXIuaWZtX3VsaXN0ID0gbWVkaWFfbGlzdDsKKworICAgICAgICBpZiAoaW9jdGwocywgU0lPQ0dJRk1FRElBLCAoY2FkZHJfdCkmaWZtcikgPT0gMCkgeworICAgICAgICAgICAgbV9zcGVlZCA9IDA7IG1fc3BlZWRfaGlnaCA9IDA7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgaWZtci5pZm1fY291bnQ7IGkrKykgeworCisgICAgICAgICAgICAgICAgX29wZW5ic2RfaW50ZXJmYWNlX2lmbWVkaWFfdG9fc3BlZWQobWVkaWFfbGlzdFtpXSwgJnRfc3BlZWQsICZ0X3NwZWVkX2hpZ2gpOworCisgICAgICAgICAgICAgICAgaWYgKHRfc3BlZWRfaGlnaCA+IG1fc3BlZWRfaGlnaCB8fAorICAgICAgICAgICAgICAgICAgICAodF9zcGVlZF9oaWdoID09IG1fc3BlZWRfaGlnaCAmJiB0X3NwZWVkID4gdF9zcGVlZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbV9zcGVlZF9oaWdoID0gdF9zcGVlZF9oaWdoOyBtX3NwZWVkID0gdF9zcGVlZDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqc3BlZWQgPSBtX3NwZWVkOyAqc3BlZWRfaGlnaCA9IG1fc3BlZWRfaGlnaDsKKyAgICAgICAgfQorICAgICAgICBmcmVlKG1lZGlhX2xpc3QpOworICAgIH0KKworICAgIGNsb3NlKHMpOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLAorICAgICAgICAgICAgICAgICIlczogc3BlZWQ6ICV1LCBzcGVlZF9oaWdoOiAldVxuIiwKKyAgICAgICAgICAgICAgICBuYW1lLCAqc3BlZWQsICpzcGVlZF9oaWdoKSk7CisKKyAgICByZXR1cm4gKnNwZWVkOworfQorCitpbnQKK25ldHNubXBfYXJjaF9zZXRfYWRtaW5fc3RhdHVzKG5ldHNubXBfaW50ZXJmYWNlX2VudHJ5ICogZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWZBZG1pblN0YXR1c192YWwpCit7CisgICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6YXJjaCIsICJzZXRfYWRtaW5fc3RhdHVzXG4iKSk7CisKKyAgICAvKiBUT0RPOiBpbXBsZW1lbnQgdGhpcyBjYWxsICovCisKKyAgICAvKiBub3QgaW1wbGVtZW50ZWQgKi8KKyAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0c25tcF9hcmNoX3NldF9hZG1pbl9zdGF0dXMgaXMgbm90ICh5ZXQpIGltcGxlbWVudGVkIGZvciBGcmVlQlNELlxuIik7CisKKyAgICByZXR1cm4gLTQ7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9kYXRhX2FjY2Vzcy9pbnRlcmZhY2Vfc29sYXJpczIuYwppbmRleCA2NmZiMjJmLi4wYmMwYWZhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlX3NvbGFyaXMyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2RhdGFfYWNjZXNzL2ludGVyZmFjZV9zb2xhcmlzMi5jCkBAIC0zLDkgKzMsOSBAQAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKICNpbmNsdWRlICJpZi1taWIvaWZUYWJsZS9pZlRhYmxlX2NvbnN0YW50cy5oIgogI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKKyNpbmNsdWRlICJtaWJJSS9taWJJSV9jb21tb24uaCIKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKQEAgLTYzLDcgKzYzLDcgQEAKICAgICByZXFfZSAgICAgICAgICAgICAgICAgICByZXEgPSBHRVRfRklSU1Q7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSAwOwogCi0gICAgREVCVUdNU0dUTCgoImFjY2VzczppbnRlcmZhY2U6Y29udGFpbmVyOmFyY2giLCAibG9hZCAoZmxhZ3MgJXApXG4iLAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aW50ZXJmYWNlOmNvbnRhaW5lcjphcmNoIiwgImxvYWQgKGZsYWdzICV1KVxuIiwKICAgICAgICAgICAgICAgICBsX2ZsYWdzKSk7CiAKICAgICBpZiAoY29udGFpbmVyID09IE5VTEwpIHsKQEAgLTMwNiw3ICszMDYsNyBAQAogICAgIGlmICgocmMgPSBnZXRNaWJzdGF0KE1JQl9JUF9BRERSLCBpcHY0ZSwgc2l6ZW9mKCppcHY0ZSksIEdFVF9FWEFDVCwgCiAgICAgICAgICZfbWF0Y2hfaWZuYW1lX3Y0YWRkciwgJmlmZS0+aWZEZXNjci5vX2J5dGVzKSkgPT0gMCkKICAgICAgICAgcmV0dXJuICgxKTsKLSAgICBiemVybygodm9pZCAqKWlwdjRlLCBzaXplb2YoKmlwdjRlKSk7CisgICAgbWVtc2V0KGlwdjRlLCAnXDAnLCBzaXplb2YoKmlwdjRlKSk7CiAgICAgcmV0dXJuICgwKTsKIH0KIApAQCAtMzQwLDcgKzM0MCw3IEBACiAgICAgICAgICZfbWF0Y2hfaWZuYW1lX3Y2YWRkciwgJmlmZS0+aWZEZXNjci5vX2J5dGVzKSkgPT0gMCkgewogICAgICAgICByZXR1cm4gKDEpOwogICAgIH0gCi0gICAgYnplcm8oKHZvaWQgKilpcHY2ZSwgc2l6ZW9mKCppcHY2ZSkpOworICAgIG1lbXNldChpcHY2ZSwgJ1wwJywgc2l6ZW9mKCppcHY2ZSkpOwogICAgIHJldHVybiAoMCk7CiB9CiAjZW5kaWYgLyogU09MQVJJU19IQVZFX0lQVjZfTUlCX1NVUFBPUlQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuYwppbmRleCA2OTQwMGZjLi5jMjEyOTgxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5jCkBAIC0zNyw4ICszNyw4IEBACiAjICAgaW5jbHVkZSAiaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmgiCiAjZW5kaWYKIAotb2lkICAgICAgICAgICAgIGlmVGFibGVfb2lkW10gPSB7IElGVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaWZUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaWZUYWJsZV9vaWQpOworY29uc3Qgb2lkICAgICAgIGlmVGFibGVfb2lkW10gPSB7IElGVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaWZUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaWZUYWJsZV9vaWQpOwogCiBpZlRhYmxlX3JlZ2lzdHJhdGlvbiBpZlRhYmxlX3VzZXJfY29udGV4dDsKIHN0YXRpYyBpZlRhYmxlX3JlZ2lzdHJhdGlvbiAqaWZUYWJsZV91c2VyX2NvbnRleHRfcDsKQEAgLTE0Nyw4ICsxNDcsNyBAQAogICAgICAqIHJlZ2lzdGVyIHNjYWxhciBmb3IgaWZOdW1iZXIKICAgICAgKi8KICAgICB7Ci0gICAgICAgIG9pZCAgICAgICAgICAgICByZWdfb2lkW10gPQotICAgICAgICAgICAgeyBJRlRBQkxFX05VTUJFUiB9OworICAgICAgICBjb25zdCBvaWQgICAgICAgcmVnX29pZFtdID0geyBJRlRBQkxFX05VTUJFUiB9OwogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpteXJlZzsKIAogICAgICAgICBteXJlZyA9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlLmgKaW5kZXggNmE2ZjBlNS4uMmY5NjI5MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGUuaApAQCAtMzYxLDggKzM2MSw4IEBACiAgICAgaWZUYWJsZV9yb3dyZXFfY3R4ICppZlRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpZlRhYmxlX21pYl9pbmRleCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpZlRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpZlRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgaWZUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50IGlmVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlmVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggOWZhMGY5My4uYjViYzNiNyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjMsMTIgKzIzLDMwIEBACiAjICAgaW5jbHVkZSAibWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaCIKICNlbmRpZgogCit0eXBlZGVmIHN0cnVjdCBjZF9jb250YWluZXJfcyB7CisgICAgbmV0c25tcF9jb250YWluZXIgKmN1cnJlbnQ7CisgICAgbmV0c25tcF9jb250YWluZXIgKmRlbGV0ZWQ7Cit9IGNkX2NvbnRhaW5lcjsKKwogLyoKICAqIGZsYWcgc28gd2Uga25vdyBub3QgdG8gc2V0IHJvdy90YWJsZSBsYXN0IGNoYW5nZSB0aW1lcwogICogZHVyaW5nIHN0YXJ0dXAuCiAgKi8KIHN0YXRpYyBpbnQgICAgICBfZmlyc3RfbG9hZCA9IDE7CiAKKy8qCisgKiBWYWx1ZSBvZiBpbnRlcmZhY2VfZmFkZW91dCBjb25maWcgb3B0aW9uCisgKi8KK3N0YXRpYyBpbnQgZmFkZW91dCA9IElGVEFCTEVfUkVNT1ZFX01JU1NJTkdfQUZURVI7CisvKgorICogVmFsdWUgb2YgaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIGNvbmZpZyBvcHRpb24KKyAqLworc3RhdGljIGludCByZXBsYWNlX29sZCA9IDA7CisKK3N0YXRpYyB2b2lkCitfZGVsZXRlX21pc3NpbmdfaW50ZXJmYWNlKGlmVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcik7CisKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UgCiAgKiBAZGVmZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCiAgKgpAQCAtNTAsNiArNjgsMzIgQEAKICAqIE9JRDogLjEuMy42LjEuMi4xLjIuMiwgbGVuZ3RoOiA4CiAgKi8KIAorc3RhdGljIHZvaWQKK3BhcnNlX2ludGVyZmFjZV9mYWRlb3V0KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQoreworICAgIGZhZGVvdXQgPSBhdG9pKGxpbmUpOworfQorc3RhdGljIHZvaWQKK3BhcnNlX2ludGVyZmFjZV9yZXBsYWNlX29sZChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKK3sKKyAgICBpZiAoc3RyY21wKGxpbmUsICJ5ZXMiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgInkiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgInRydWUiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgIjEiKSA9PSAwKSB7CisgICAgICAgIHJlcGxhY2Vfb2xkID0gMTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoc3RyY21wKGxpbmUsICJubyIpID09IDAKKyAgICAgICAgICAgIHx8IHN0cmNtcChsaW5lLCAibiIpID09IDAKKyAgICAgICAgICAgIHx8IHN0cmNtcChsaW5lLCAiZmFsc2UiKSA9PSAwCisgICAgICAgICAgICB8fCBzdHJjbXAobGluZSwgIjAiKSA9PSAwKSB7CisgICAgICAgIHJlcGxhY2Vfb2xkID0gMDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBzbm1wX2xvZyhMT0dfRVJSLCAiSW52YWxpZCB2YWx1ZSBvZiBpbnRlcmZhY2VfcmVwbGFjZV9vbGQgcGFyYW1ldGVyOiAnJXMnXG4iLAorICAgICAgICAgICAgbGluZSk7Cit9CisKIC8qKgogICogaW5pdGlhbGl6YXRpb24gZm9yIGlmVGFibGUgZGF0YSBhY2Nlc3MKICAqCkBAIC03MCw2ICsxMTQsMTAgQEAKICAgICAvKgogICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgaWZUYWJsZSBkYXRhLgogICAgICAqLworICAgIHNubXBkX3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJpbnRlcmZhY2VfZmFkZW91dCIsIHBhcnNlX2ludGVyZmFjZV9mYWRlb3V0LCBOVUxMLAorICAgICAgICAgICAgImludGVyZmFjZV9mYWRlb3V0IHNlY29uZHMiKTsKKyAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigiaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIiwKKyAgICAgICAgICAgIHBhcnNlX2ludGVyZmFjZV9yZXBsYWNlX29sZCwgTlVMTCwgImludGVyZmFjZV9yZXBsYWNlX29sZCB5ZXN8bm8iKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWZUYWJsZV9pbml0X2RhdGEgKi8KQEAgLTE1MiwxNiArMjAwLDExNSBAQAogICAgICAgICAgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRCB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVCk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlmVGFibGVfY29udGFpbmVyX2luaXQgKi8KIAordm9pZAorc2VuZF9saW5rVXBEb3duTm90aWZpY2F0aW9ucyhvaWQgKm5vdGlmaWNhdGlvbl9vaWQsIHNpemVfdCBub3RpZmljYXRpb25fb2lkX2xlbiwgaW50IGlmX2luZGV4LCBpbnQgaWZfYWRtaW5fc3RhdHVzLCBpbnQgaWZfb3Blcl9zdGF0dXMpCit7CisgICAgLyoKKyAgICAgKiBJbiB0aGUgbm90aWZpY2F0aW9uLCB3ZSBoYXZlIHRvIGFzc2lnbiBvdXIgbm90aWZpY2F0aW9uIE9JRCB0bworICAgICAqIHRoZSBzbm1wVHJhcE9JRC4wIG9iamVjdC4gSGVyZSBpcyBpdCdzIGRlZmluaXRpb24uIAorICAgICAqLworICAgIG9pZCAgICAgICAgICAgICBvYmppZF9zbm1wdHJhcFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwIH07CisgICAgc2l6ZV90ICAgICAgICAgIG9iamlkX3NubXB0cmFwX2xlbiA9IE9JRF9MRU5HVEgob2JqaWRfc25tcHRyYXApOworCisgICAgLyoKKyAgICAgKiBkZWZpbmUgdGhlIE9JRHMgZm9yIHRoZSB2YXJiaW5kcyB3ZSdyZSBnb2luZyB0byBpbmNsdWRlCisgICAgICogIHdpdGggdGhlIG5vdGlmaWNhdGlvbiAtCisgICAgICogSUYtTUlCOjppZkluZGV4LAorICAgICAqIElGLU1JQjo6aWZBZG1pblN0YXR1cywgYW5kCisgICAgICogSUYtTUlCOjppZk9wZXJTdGF0dXMKKyAgICAgKi8KKyAgICBvaWQgICAgICBpZl9pbmRleF9vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAxLCAwIH07CisgICAgc2l6ZV90ICAgaWZfaW5kZXhfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaWZfaW5kZXhfb2lkKTsKKyAgICBvaWQgICAgICBpZl9hZG1pbl9zdGF0dXNfb2lkW10gICA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgNywgMCB9OworICAgIHNpemVfdCAgIGlmX2FkbWluX3N0YXR1c19vaWRfbGVuID0gT0lEX0xFTkdUSChpZl9hZG1pbl9zdGF0dXNfb2lkKTsKKyAgICBvaWQgICAgICBpZl9vcGVyX3N0YXR1c19vaWRbXSAgID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCA4LCAwIH07CisgICAgc2l6ZV90ICAgaWZfb3Blcl9zdGF0dXNfb2lkX2xlbiA9IE9JRF9MRU5HVEgoaWZfb3Blcl9zdGF0dXNfb2lkKTsKKworICAgIC8qCisgICAgICogaGVyZSBpcyB3aGVyZSB3ZSBzdG9yZSB0aGUgdmFyaWFibGVzIHRvIGJlIHNlbnQgaW4gdGhlIHRyYXAgCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpub3RpZmljYXRpb25fdmFycyA9IE5VTEw7CisKKyAgICBERUJVR01TR1RMKCgicnN5czpsaW5rVXBEb3duTm90aWZpY2F0aW9ucyIsICJkZWZpbmluZyB0aGUgdHJhcFxuIikpOworCisgICAgLyoKKyAgICAgKiB1cGRhdGUgdGhlIGluc3RhbmNlIGZvciBlYWNoIHZhcmlhYmxlIHRvIGJlIHNlbnQgaW4gdGhlIHRyYXAKKyAgICAgKi8KKyAgICBpZl9pbmRleF9vaWRbMTBdID0gaWZfaW5kZXg7CisgICAgaWZfYWRtaW5fc3RhdHVzX29pZFsxMF0gPSBpZl9pbmRleDsKKyAgICBpZl9vcGVyX3N0YXR1c19vaWRbMTBdID0gaWZfaW5kZXg7CisKKyAgICAvKgorICAgICAqIGFkZCBpbiB0aGUgdHJhcCBkZWZpbml0aW9uIG9iamVjdCAKKyAgICAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgc25tcFRyYXBPSUQuMCB2YXJpYWJsZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqaWRfc25tcHRyYXAsIG9iamlkX3NubXB0cmFwX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWx1ZSB0eXBlIGlzIGFuIE9JRCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWx1ZSBjb250ZW50cyBpcyBvdXIgbm90aWZpY2F0aW9uIE9JRCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSBub3RpZmljYXRpb25fb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemUgaW4gYnl0ZXMgPSBvaWQgbGVuZ3RoICogc2l6ZW9mKG9pZCkgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbl9vaWRfbGVuICogc2l6ZW9mKG9pZCkpOworCisgICAgLyoKKyAgICAgKiBhZGQgaW4gdGhlIGFkZGl0aW9uYWwgb2JqZWN0cyBkZWZpbmVkIGFzIHBhcnQgb2YgdGhlIHRyYXAKKyAgICAgKi8KKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9pbmRleF9vaWQsIGlmX2luZGV4X29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpZl9pbmRleCkpOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSB3YW50IHRvIGluc2VydCBhZGRpdGlvbmFsIG9iamVjdHMsIHdlIGRvIGl0IGhlcmUgCisgICAgICovCisgICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmbm90aWZpY2F0aW9uX3ZhcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfYWRtaW5fc3RhdHVzX29pZCwgaWZfYWRtaW5fc3RhdHVzX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX2FkbWluX3N0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoaWZfYWRtaW5fc3RhdHVzKSk7CisKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCZub3RpZmljYXRpb25fdmFycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9vcGVyX3N0YXR1c19vaWQsIGlmX29wZXJfc3RhdHVzX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmlmX29wZXJfc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpZl9vcGVyX3N0YXR1cykpOworCisgICAgLyoKKyAgICAgKiBzZW5kIHRoZSB0cmFwIG91dC4gIFRoaXMgd2lsbCBzZW5kIGl0IHRvIGFsbCByZWdpc3RlcmVkCisgICAgICogcmVjZWl2ZXJzIChzZWUgdGhlICJTRVRUSU5HIFVQIFRSQVAgQU5EL09SIElORk9STSBERVNUSU5BVElPTlMiCisgICAgICogc2VjdGlvbiBvZiB0aGUgc25tcGQuY29uZiBtYW51YWwgcGFnZS4gCisgICAgICovCisgICAgREVCVUdNU0dUTCgoInJzeXM6bGlua1VwRG93bk5vdGlmaWNhdGlvbnMiLCAic2VuZGluZyB0aGUgdHJhcFxuIikpOworICAgIHNlbmRfdjJ0cmFwKG5vdGlmaWNhdGlvbl92YXJzKTsKKworICAgIC8qCisgICAgICogZnJlZSB0aGUgY3JlYXRlZCBub3RpZmljYXRpb24gdmFyaWFibGUgbGlzdCAKKyAgICAgKi8KKyAgICBERUJVR01TR1RMKCgicnN5czpsaW5rVXBEb3duTm90aWZpY2F0aW9ucyIsICJjbGVhbmluZyB1cFxuIikpOworICAgIHNubXBfZnJlZV92YXJiaW5kKG5vdGlmaWNhdGlvbl92YXJzKTsKK30KKwogLyoqCiAgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCiAgKgogICovCiBzdGF0aWMgdm9pZAogX2NoZWNrX2ludGVyZmFjZV9lbnRyeV9mb3JfdXBkYXRlcyhpZlRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqaWZjb250YWluZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNkX2NvbnRhaW5lciAqY2RjKQogewogICAgIGNoYXIgICAgICAgICAgICBvcGVyX2NoYW5nZWQgPSAwOwotICAgIHVfbG9uZyBsYXN0Y2hhbmdlID0gcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2U7CisgICAgaW50IGxhc3RjaGFuZ2VkID0gcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2U7CisgICAgbmV0c25tcF9jb250YWluZXIgKmlmY29udGFpbmVyID0gY2RjLT5jdXJyZW50OwogCiAgICAgLyoKICAgICAgKiBjaGVjayBmb3IgbWF0Y2hpbmcgZW50cnkuIFdlIGNhbiBkbyB0aGlzIGRpcmVjdGx5LCBzaW5jZQpAQCAtMTkzLDE2ICszNDAsMzIgQEAKICAgICAgICAgICogZGVsZXRlZCAoYW5kIHRodXMgbmVlZCB0byB1cGRhdGUgaWZUYWJsZUxhc3RDaGFuZ2VkKT8KICAgICAgICAgICovCiAgICAgICAgIGlmICghcm93cmVxX2N0eC0+a25vd25fbWlzc2luZykgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIG1pc3NpbmcgZW50cnlcbiIpKTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmtub3duX21pc3NpbmcgPSAxOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIG1pc3NpbmcgZW50cnkgJXNcbiIscm93cmVxX2N0eC0+ZGF0YS5pZk5hbWUpKTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZBZG1pblN0YXR1cyA9IElGQURNSU5TVEFUVVNfRE9XTjsKLSAgICAgICAgICAgIGlmICgoIShyb3dyZXFfY3R4LT5kYXRhLmlmZW50cnktPm5zX2ZsYWdzICYgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX0xBU1RDSEFOR0UpKQotICAgICAgICAgICAgICAgICYmIChyb3dyZXFfY3R4LT5kYXRhLmlmT3BlclN0YXR1cyAhPSBJRk9QRVJTVEFUVVNfRE9XTikpCi0gICAgICAgICAgICAgICAgb3Blcl9jaGFuZ2VkID0gMTsKICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID0gSUZPUEVSU1RBVFVTX0RPV047CisgICAgICAgICAgICBvcGVyX2NoYW5nZWQgPSAxOworICAgICAgICB9CisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nKSB7CisgICAgICAgICAgICB0aW1lX3Qgbm93ID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7CisgICAgICAgICAgICB1X2xvbmcgZGlmZiA9IChub3cgLSByb3dyZXFfY3R4LT5kYXRhLmlmTGFzdENoYW5nZSkgLyAxMDA7CisgICAgICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTppZlRhYmxlOmFjY2VzcyIsICJtaXNzaW5nIGVudHJ5IGZvciAlbGQgc2Vjb25kc1xuIiwgZGlmZikpOworICAgICAgICAgICAgaWYgKGRpZmYgPj0gZmFkZW91dCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpZlRhYmxlOmFjY2VzcyIsICJtYXJraW5nIG1pc3NpbmcgZW50cnkgJXMgZm9yICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVtb3ZhbCBhZnRlciAlZCBzZWNvbmRzXG4iLCByb3dyZXFfY3R4LT5kYXRhLmlmTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWRlb3V0KSk7CisgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gY2RjLT5kZWxldGVkKQorICAgICAgICAgICAgICAgICAgIGNkYy0+ZGVsZXRlZCA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlmVGFibGVfZGVsZXRlZDpsaW5rZWRfbGlzdCIpOworICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGNkYy0+ZGVsZXRlZCkKKyAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgY3JlYXRlIGNvbnRhaW5lciBmb3IgZGVsZXRlZCBpbnRlcmZhY2VcbiIpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY2RjLT5kZWxldGVkLCByb3dyZXFfY3R4KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBERUJVR01TR1RMKCgiaWZUYWJsZTphY2Nlc3MiLCAidXBkYXRpbmcgZXhpc3RpbmcgZW50cnlcbiIpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInVwZGF0aW5nIGV4aXN0aW5nIGVudHJ5ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmTmFtZSkpOwogCiAjaWZkZWYgVVNJTkdfSUZfTUlCX0lGWFRBQkxFX0lGWFRBQkxFX01PRFVMRQogICAgICAgICB7CkBAIC0yNTMsMTAgKzQxNiw2MyBAQAogICAgIC8qCiAgICAgICogaWYgaWZPcGVyU3RhdHVzIGNoYW5nZWQsIHVwZGF0ZSBpZkxhc3RDaGFuZ2UKICAgICAgKi8KLSAgICBpZiAob3Blcl9jaGFuZ2VkKQorICAgIGlmIChvcGVyX2NoYW5nZWQpIHsKICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pZkxhc3RDaGFuZ2UgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyNpZmRlZiBVU0lOR19JRl9NSUJfSUZYVEFCTEVfSUZYVEFCTEVfTU9EVUxFCisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5kYXRhLmlmTGlua1VwRG93blRyYXBFbmFibGUgPT0gMSkgeworICAgICAgICAgICAgaWYgKHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID09IElGT1BFUlNUQVRVU19VUCkgeworICAgICAgICAgICAgICAgIG9pZCBub3RpZmljYXRpb25fb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDUsIDQgfTsKKyAgICAgICAgICAgICAgICBzZW5kX2xpbmtVcERvd25Ob3RpZmljYXRpb25zKG5vdGlmaWNhdGlvbl9vaWQsIE9JRF9MRU5HVEgobm90aWZpY2F0aW9uX29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT50YmxfaWR4LmlmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmQWRtaW5TdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmT3BlclN0YXR1cyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzID09IElGT1BFUlNUQVRVU19ET1dOKSB7CisgICAgICAgICAgICAgICAgb2lkIG5vdGlmaWNhdGlvbl9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMSwgMSwgNSwgMyB9OworICAgICAgICAgICAgICAgIHNlbmRfbGlua1VwRG93bk5vdGlmaWNhdGlvbnMobm90aWZpY2F0aW9uX29pZCwgT0lEX0xFTkdUSChub3RpZmljYXRpb25fb2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPnRibF9pZHguaWZJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZBZG1pblN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZPcGVyU3RhdHVzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorI2VuZGlmCisgICAgfQorCiAgICAgZWxzZQotICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmlmTGFzdENoYW5nZSA9IGxhc3RjaGFuZ2U7CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaWZMYXN0Q2hhbmdlID0gbGFzdGNoYW5nZWQ7Cit9CisKKy8qKgorICogUmVtb3ZlIGFsbCBvbGQgaW50ZXJmYWNlcyB3aXRoIHRoZSBzYW1lIG5hbWUgYXMgdGhlIG5ld2x5IGFkZGVkIG9uZS4KKyAqLworc3RhdGljIHZvaWQKK19jaGVja19hbmRfcmVwbGFjZV9vbGQobmV0c25tcF9pbnRlcmZhY2VfZW50cnkgKmlmZW50cnksCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBuZXRzbm1wX2l0ZXJhdG9yICppdDsKKyAgICBpZlRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4OworICAgIG5ldHNubXBfY29udGFpbmVyICp0b19kZWxldGU7CisKKyAgICB0b19kZWxldGUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpZlRhYmxlX2RlbGV0ZWQ6bGlua2VkX2xpc3QiKTsKKyAgICBpZiAoTlVMTCA9PSB0b19kZWxldGUpIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgY3JlYXRlIGNvbnRhaW5lciBmb3IgZGVsZXRlZCBpbnRlcmZhY2VcbiIpOworICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihjb250YWluZXIpOworICAgIGZvciAocm93cmVxX2N0eCA9IElURVJBVE9SX0ZJUlNUKGl0KTsgcm93cmVxX2N0eDsgcm93cmVxX2N0eCA9IElURVJBVE9SX05FWFQoaXQpKSB7CisgICAgICAgIGlmIChzdHJjbXAoaWZlbnRyeS0+bmFtZSwgcm93cmVxX2N0eC0+ZGF0YS5pZmVudHJ5LT5uYW1lKSA9PSAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaWZUYWJsZTphY2Nlc3MiLAorICAgICAgICAgICAgICAgICAgICAicmVtb3ZpbmcgaW50ZXJmYWNlICVsZCBkdWUgdG8gbmV3ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAobG9uZykgcm93cmVxX2N0eC0+ZGF0YS5pZmVudHJ5LT5pbmRleCwgaWZlbnRyeS0+bmFtZSkpOworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVCh0b19kZWxldGUsIHJvd3JlcV9jdHgpOworICAgICAgICB9CisgICAgfQorICAgIElURVJBVE9SX1JFTEVBU0UoaXQpOworCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKHRvX2RlbGV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9kZWxldGVfbWlzc2luZ19pbnRlcmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgQ09OVEFJTkVSX0ZSRUUodG9fZGVsZXRlKTsKIH0KIAogLyoqCkBAIC0yNzcsNiArNDkzLDkgQEAKICAgICByb3dyZXFfY3R4ID0gaWZUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlmZW50cnkpOwogICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgogICAgICAgICAoTUZEX1NVQ0NFU1MgPT0gaWZUYWJsZV9pbmRleGVzX3NldChyb3dyZXFfY3R4LCBpZmVudHJ5LT5pbmRleCkpKSB7CisgICAgICAgIGlmIChyZXBsYWNlX29sZCkKKyAgICAgICAgICAgICAgICBfY2hlY2tfYW5kX3JlcGxhY2Vfb2xkKGlmZW50cnksIGNvbnRhaW5lcik7CisKICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOwogICAgICAgICAvKgogICAgICAgICAgKiBmaXggdGhpcyB3aGVuIHdlIGhpdCBhbiBhcmNoIHRoYXQgcmVwb3J0cyBpdHMgb3duIGxhc3QgY2hhbmdlCkBAIC0zMTMsNiArNTMyLDIxIEBACiB9CiAKIC8qKgorICogYWRkIG5ldyBlbnRyeQorICovCitzdGF0aWMgdm9pZAorX2RlbGV0ZV9taXNzaW5nX2ludGVyZmFjZShpZlRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImlmVGFibGU6YWNjZXNzIiwgInJlbW92aW5nIG1pc3NpbmcgZW50cnkgJXNcbiIsCisgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pZk5hbWUpKTsKKworICAgIENPTlRBSU5FUl9SRU1PVkUoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKworICAgIGlmVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworfQorCisvKioKICAqIGNvbnRhaW5lciBzaHV0ZG93bgogICoKICAqIEBwYXJhbSBjb250YWluZXJfcHRyIEEgcG9pbnRlciB0byB0aGUgY29udGFpbmVyLgpAQCAtMzc2LDcgKzYxMCw3IEBACiBpbnQKIGlmVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKIHsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAqaWZjb250YWluZXI7CisgICAgY2RfY29udGFpbmVyIGNkYzsKIAogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlmVGFibGU6aWZUYWJsZV9jb250YWluZXJfbG9hZCIsICJjYWxsZWRcbiIpKTsKIApAQCAtMzg5LDIzICs2MjMsMzUgQEAKICAgICAvKgogICAgICAqIGlmVGFibGUgZ2V0cyBpdHMgZGF0YSBmcm9tIHRoZSBuZXRzbm1wX2ludGVyZmFjZSBBUEkuCiAgICAgICovCi0gICAgaWZjb250YWluZXIgPQorICAgIGNkYy5jdXJyZW50ID0KICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2NvbnRhaW5lcl9sb2FkKE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19JTlRFUkZBQ0VfSU5JVF9OT0ZMQUdTKTsKLSAgICBpZiAoTlVMTCA9PSBpZmNvbnRhaW5lcikKKyAgICBpZiAoTlVMTCA9PSBjZGMuY3VycmVudCkKICAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLwogCisgICAgY2RjLmRlbGV0ZWQgPSBOVUxMOyAvKiBjcmVhdGVkIGFzIG5lZWRlZCAqLworCiAgICAgLyoKICAgICAgKiB3ZSBqdXN0IGdvdCBhIGZyZXNoIGNvcHkgb2YgaW50ZXJmYWNlIGRhdGEuIGNvbXBhcmUgaXQgdG8KICAgICAgKiB3aGF0IHdlJ3ZlIGFscmVhZHkgZ290LCBhbmQgbWFrZSBhbnkgYWRqdXN0ZW1lbnRzLi4uCiAgICAgICovCiAgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNvbnRhaW5lciwgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopCi0gICAgICAgICAgICAgICAgICAgICAgIF9jaGVja19pbnRlcmZhY2VfZW50cnlfZm9yX3VwZGF0ZXMsIGlmY29udGFpbmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgX2NoZWNrX2ludGVyZmFjZV9lbnRyeV9mb3JfdXBkYXRlcywgJmNkYyk7CisKKyAgICAvKgorICAgICAqIG5vdyByZW1vdmUgYW55IG1pc3NpbmcgaW50ZXJmYWNlcworICAgICAqLworICAgIGlmIChOVUxMICE9IGNkYy5kZWxldGVkKSB7CisgICAgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNkYy5kZWxldGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2RlbGV0ZV9taXNzaW5nX2ludGVyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICAgICBDT05UQUlORVJfRlJFRShjZGMuZGVsZXRlZCk7CisgICAgfQogCiAgICAgLyoKICAgICAgKiBub3cgYWRkIGFueSBuZXcgaW50ZXJmYWNlcwogICAgICAqLwotICAgIENPTlRBSU5FUl9GT1JfRUFDSChpZmNvbnRhaW5lciwKKyAgICBDT05UQUlORVJfRk9SX0VBQ0goY2RjLmN1cnJlbnQsCiAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfYWRkX25ld19pbnRlcmZhY2UsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CiAKQEAgLTQxMywxMSArNjU5LDExIEBACiAgICAgICogZnJlZSB0aGUgY29udGFpbmVyLiB3ZSd2ZSBlaXRoZXIgY2xhaW1lZCBlYWNoIGlmZW50cnksIG9yIHJlbGVhc2VkIGl0LAogICAgICAqIHNvIHRoZSBkYWwgZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIGNsZWFyIHRoZSBjb250YWluZXIuCiAgICAgICovCi0gICAgbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2NvbnRhaW5lcl9mcmVlKGlmY29udGFpbmVyLAorICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9jb250YWluZXJfZnJlZShjZGMuY3VycmVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfSU5URVJGQUNFX0ZSRUVfRE9OVF9DTEVBUik7CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlmVGFibGU6aWZUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWx1IHJlY29yZHNcbiIsICh1bnNpZ25lZCBsb25nKUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIGlmIChfZmlyc3RfbG9hZCkKICAgICAgICAgX2ZpcnN0X2xvYWQgPSAwOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9kYXRhX2FjY2Vzcy5oCmluZGV4IDlhYWE0MmUuLjE0ZTM1Y2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfZGF0YV9hY2Nlc3MuaAorKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2RhdGFfYWNjZXNzLmgKQEAgLTQ4LDYgKzQ4LDggQEAKICAgICAgKi8KICNkZWZpbmUgSUZUQUJMRV9DQUNIRV9USU1FT1VUICAgMTUKIAorI2RlZmluZSBJRlRBQkxFX1JFTU9WRV9NSVNTSU5HX0FGVEVSICAgICAoNSAqIDYwKSAvKiBzZWNvbmRzICovCisKICAgICB2b2lkICAgICAgICAgICAgaWZUYWJsZV9jb250YWluZXJfaW5pdChuZXRzbm1wX2NvbnRhaW5lcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqY29udGFpbmVyX3B0cl9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZUYWJsZS9pZlRhYmxlX2ludGVyZmFjZS5jCmluZGV4IDI1NzQ5ZTMuLmUzNjJmZGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlRhYmxlL2lmVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmVGFibGUvaWZUYWJsZV9pbnRlcmZhY2UuYwpAQCAtMzcyLDcgKzM3Miw3IEBACiAgICAgICogcmVnaXN0ZXIgaWZUYWJsZUxhc3RDaGFuZ2VkCiAgICAgICovCiAgICAgewotICAgICAgICBvaWQgICAgICAgICAgICAgaWZ0bGNfb2lkW10gPSB7IElGVEFCTEVfTEFTVF9DSEFOR0UgfTsKKyAgICAgICAgY29uc3Qgb2lkICAgICAgIGlmdGxjX29pZFtdID0geyBJRlRBQkxFX0xBU1RfQ0hBTkdFIH07CiAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImlmVGFibGVMYXN0Q2hhbmdlZCIsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmdGxjX29pZCwgT0lEX0xFTkdUSChpZnRsY19vaWQpLApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYwppbmRleCA4YjliN2NlLi4xYTI0Mjc1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuYwpAQCAtMzgsOSArMzgsOCBAQAogICovCiAjdW5kZWYgTkVUU05NUF9FTkFCTEVfUFJPTUlTQ1VPVVNNT0RFX1NFVAogCi1vaWQgICAgICAgICAgICAgaWZYVGFibGVfb2lkW10gPSB7IElGWFRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlmWFRhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpZlhUYWJsZV9vaWQpOwotY29uc3QgY2hhciAgICAgKnJvd190b2tlbiA9ICJpZlhUYWJsZSI7Citjb25zdCBvaWQgICAgICAgaWZYVGFibGVfb2lkW10gPSB7IElGWFRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGlmWFRhYmxlX29pZF9zaXplID0gT0lEX0xFTkdUSChpZlhUYWJsZV9vaWQpOwogCiBpZlhUYWJsZV9yZWdpc3RyYXRpb24gaWZYVGFibGVfdXNlcl9jb250ZXh0Owogc3RhdGljIGlmWFRhYmxlX3JlZ2lzdHJhdGlvbiAqaWZYVGFibGVfdXNlcl9jb250ZXh0X3A7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCmluZGV4IGUzMmFjYzguLmY5YjI1ZDQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZS5oCkBAIC05NCw4ICs5NCw4IEBACiAgICAgaWZYVGFibGVfcm93cmVxX2N0eCAqaWZYVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGlmWFRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIGlmWFRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpZlhUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaWZYVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlmWFRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpZlhUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lmLW1pYi9pZlhUYWJsZS9pZlhUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBkOWIxODQ3Li45ZjA2NGNmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pZi1taWIvaWZYVGFibGUvaWZYVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaWYtbWliL2lmWFRhYmxlL2lmWFRhYmxlX2ludGVyZmFjZS5jCkBAIC0xNzg0LDcgKzE3ODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgdV9pbnQgY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmKTsKIAotc3RhdGljIGNoYXIgICAgIHJvd190b2tlbltdID0gImlmWFRhYmxlIjsKK3N0YXRpYyBjb25zdCBjaGFyIHJvd190b2tlbltdID0gImlmWFRhYmxlIjsKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogKl9pbml0X3BlcnNpc3RlbmNlIHNob3VsZCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0YWJsZQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlLmgKaW5kZXggZGFjNzBjZS4uYTJiNGVlNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZS5oCkBAIC0yMyw3ICsyMyw3IEBACiBjb25maWdfcmVxdWlyZShpcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eCkKIGNvbmZpZ19yZXF1aXJlKGlwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsKQogI2Vsc2UKLSNlcnJvciAidGhlIHJvdXRlIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybS4iCitjb25maWdfZXJyb3IodGhlIHJvdXRlIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKICNlbmRpZgogCiAvKiogbmVlZCBpbnRlcmZhY2UgZm9yIGlmSW5kZXggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKaW5kZXggOTliM2RlNC4uOTc0ZGU1NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfY29tbW9uLmMKQEAgLTQ3LDEyICs0NywxMSBAQAogCiAgICAgREVCVUdNU0dUTCgoImFjY2Vzczpyb3V0ZTpjb250YWluZXIiLCAibG9hZFxuIikpOwogCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKQorICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3M6X3JvdXRlOnRhYmxlX2NvbnRhaW5lciIpOwogICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewotICAgICAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3M6X3JvdXRlOmZpZm8iKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3JvdXRlXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJubyBjb250YWluZXIgc3BlY2lmaWVkL2ZvdW5kIGZvciBhY2Nlc3Nfcm91dGVcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICByYyA9ICBuZXRzbm1wX2FjY2Vzc19yb3V0ZV9jb250YWluZXJfYXJjaF9sb2FkKGNvbnRhaW5lciwgbG9hZF9mbGFncyk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfaW9jdGwuYwppbmRleCBkZTQyOTIwLi5jMjBlMGFmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9pb2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2lvY3RsLmMKQEAgLTY5LDEwICs2OSwxMCBAQAogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbmRpZgogCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKICMgICBkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfSEFTSAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0hBU0gKICMgICBkZWZpbmUgcnRfaGFzaCBydF9wYWQxCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2RhdGFfYWNjZXNzL3JvdXRlX2xpbnV4LmMKaW5kZXggNmJmNmIwNC4uYzVkNzYzMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvZGF0YV9hY2Nlc3Mvcm91dGVfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9kYXRhX2FjY2Vzcy9yb3V0ZV9saW51eC5jCkBAIC0yMDEsNyArMjAxLDYgQEAKICAgICBGSUxFICAgICAgICAgICAqaW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMjU2XTsKICAgICBuZXRzbm1wX3JvdXRlX2VudHJ5ICplbnRyeSA9IE5VTEw7Ci0gICAgc3RhdGljIGludCAgICAgIGxvZ19vcGVuX2VyciA9IDE7CiAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsCiAgICAgICAgICAgICAgICAgInJvdXRlX2NvbnRhaW5lcl9hcmNoX2xvYWQgaXB2NlxuIikpOwpAQCAtMjEyLDE4ICsyMTEsMTAgQEAKICAgICAgKiBmZXRjaCByb3V0ZXMgZnJvbSB0aGUgcHJvYyBmaWxlLXN5c3RlbToKICAgICAgKi8KICAgICBpZiAoIShpbiA9IGZvcGVuKCIvcHJvYy9uZXQvaXB2Nl9yb3V0ZSIsICJyIikpKSB7Ci0gICAgICAgIGlmICgxID09IGxvZ19vcGVuX2VycikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNhbm5vdCBvcGVuIC9wcm9jL25ldC9pcHY2X3JvdXRlXG4iKTsKLSAgICAgICAgICAgIGxvZ19vcGVuX2VyciA9IDA7Ci0gICAgICAgIH0KKyAgICAgICAgREVCVUdNU0dUTCgoIjk6YWNjZXNzOnJvdXRlOmNvbnRhaW5lciIsICJjYW5ub3Qgb3BlbiAvcHJvYy9uZXQvaXB2Nl9yb3V0ZVxuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotICAgIC8qCi0gICAgICogaWYgd2UgdHVybmVkIG9mZiBsb2dnaW5nIG9mIG9wZW4gZXJyb3JzLCB0dXJuIGl0IGJhY2sgb24gbm93IHRoYXQKLSAgICAgKiB3ZSBoYXZlIGJlZW4gYWJsZSB0byBvcGVuIHRoZSBmaWxlLgotICAgICAqLwotICAgIGlmICgwID09IGxvZ19vcGVuX2VycikKLSAgICAgICAgbG9nX29wZW5fZXJyID0gMTsKKyAgICAKICAgICBmZ2V0cyhsaW5lLHNpemVvZihsaW5lKSxpbik7IC8qIHNraXAgaGVhZGVyICovCiAgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CiAgICAgICAgIGNoYXIgICAgICAgICAgICBjX25hbWVbSUZOQU1TSVorMV07CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmMKaW5kZXggNDFiNWM5NS4uYjQ2MDgwYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZFtdID0geyBJTkVUQ0lEUlJPVVRFVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkW10gPSB7IElORVRDSURSUk9VVEVUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSChpbmV0Q2lkclJvdXRlVGFibGVfb2lkKTsKIAogaW5ldENpZHJSb3V0ZVRhYmxlX3JlZ2lzdHJhdGlvbiBpbmV0Q2lkclJvdXRlVGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZS5oCmluZGV4IDhkOTA0ODUuLmI4MTMyZTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlLmgKQEAgLTIxNyw4ICsyMTcsOCBAQAogICAgICAgICAqIGluZXRDaWRyUm91dGVUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGluZXRDaWRyUm91dGVUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGluZXRDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpbmV0Q2lkclJvdXRlVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImluZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA5NDYyYmU3Li5iZWViYjJjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yNjMsNyArMjYzLDcgQEAKICAgICAgICAgbmV0c25tcF9hY2Nlc3Nfcm91dGVfY29udGFpbmVyX2xvYWQoTlVMTCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfUk9VVEVfTE9BRF9OT0ZMQUdTKTsKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmluZXRDaWRyUm91dGVUYWJsZTppbmV0Q2lkclJvdXRlVGFibGVfY2FjaGVfbG9hZCIsCi0gICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgQ09OVEFJTkVSX1NJWkUocm91dGVfY29udGFpbmVyKSkpOworICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIChpbnQpQ09OVEFJTkVSX1NJWkUocm91dGVfY29udGFpbmVyKSkpOwogCiAgICAgaWYgKE5VTEwgPT0gcm91dGVfY29udGFpbmVyKQogICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOyAgICAgICAgLyogbXNnIGFscmVhZHkgbG9nZ2VkICovCkBAIC0yODMsNyArMjgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ST1VURV9GUkVFX0RPTlRfQ0xFQVIpOwogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTppbmV0Q2lkclJvdXRlVGFibGU6aW5ldENpZHJSb3V0ZVRhYmxlX2NhY2hlX2xvYWQiLAotICAgICAgICAgICAgICAgIiVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9sb2FkICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaW5ldENpZHJSb3V0ZVRhYmxlL2luZXRDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBmNDg1MzYwLi5mZmVkYjA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pbmV0Q2lkclJvdXRlVGFibGUvaW5ldENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2luZXRDaWRyUm91dGVUYWJsZS9pbmV0Q2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKQEAgLTE1Myw5ICsxNTMsNyBAQAogI2VuZGlmCiAKIE5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKLSAgICAgICAgICAgICAgICBfaW5ldENpZHJSb3V0ZVRhYmxlX2NoZWNrX2luZGV4ZXMoaW5ldENpZHJSb3V0ZVRhYmxlX3Jvd3JlcV9jdHggKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKLQorICAgICAgICAgICAgICAgIF9pbmV0Q2lkclJvdXRlVGFibGVfY2hlY2tfaW5kZXhlcyhpbmV0Q2lkclJvdXRlVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOwogLyoqCiAgKiBAaW50ZXJuYWwKICAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGluZXRDaWRyUm91dGVUYWJsZSAKQEAgLTIzMDUsNyArMjMwMyw3IEBACiAgICAgLyoKICAgICAgKiBjYWNoZSBpbml0CiAgICAgICovCi0gICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKElORVRDSURSUk9VVEVUQUJMRV9DQUNIRV9USU1FT1VULAorICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVRhYmxlX29pZF9zaXplKTsKQEAgLTIzMTgsMjAgKzIzMTYsMTUgQEAKICAgICBpZl9jdHgtPmNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKIAogICAgIGluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdCgmaWZfY3R4LT5jb250YWluZXIsIGlmX2N0eC0+Y2FjaGUpOwotICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpCiAgICAgICAgIGlmX2N0eC0+Y29udGFpbmVyID0KICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImluZXRDaWRyUm91dGVUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgotICAgICAgICAgICAgICAgICAgICAgImluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGluICIKKyAgICAgICAgICAgICAgICAgImluZXRDaWRyUm91dGVUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvKiBzZXQgYWxsb3cgZHVwbGljYXRlcyB0aGlzIG1ha2VzIGluc2VydCBPKDEpICovCi0gICAgbmV0c25tcF9iaW5hcnlfYXJyYXlfb3B0aW9uc19zZXQoaWZfY3R4LT5jb250YWluZXIsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OVEFJTkVSX0tFWV9BTExPV19EVVBMSUNBVEVTKTsKLQogICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCiAgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pbmV0Q2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMKaW5kZXggNzVmZGU4OC4uYWU3YjcxZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImlwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZFtdID0geyBJUENJRFJST1VURVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwQ2lkclJvdXRlVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGlwQ2lkclJvdXRlVGFibGVfb2lkW10gPSB7IElQQ0lEUlJPVVRFVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGlwQ2lkclJvdXRlVGFibGVfb2lkKTsKIAogaXBDaWRyUm91dGVUYWJsZV9yZWdpc3RyYXRpb24gaXBDaWRyUm91dGVUYWJsZV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCmluZGV4IDQ5Njk0ODAuLjJjZTMwYmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZS5oCkBAIC0xOTQsOCArMTk0LDggQEAKICAgICAgICAgKiBpcENpZHJSb3V0ZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcENpZHJSb3V0ZVRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggYzI3ZDBhYS4uYmIyNzY3NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTI3MCw3ICsyNzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1JPVVRFX0ZSRUVfRE9OVF9DTEVBUik7CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlwQ2lkclJvdXRlVGFibGU6aXBDaWRyUm91dGVUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLWZvcndhcmQtbWliL2lwQ2lkclJvdXRlVGFibGUvaXBDaWRyUm91dGVUYWJsZV9pbnRlcmZhY2UuYwppbmRleCBkMDUxYzI1Li4zN2M0YTAxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1mb3J3YXJkLW1pYi9pcENpZHJSb3V0ZVRhYmxlL2lwQ2lkclJvdXRlVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtZm9yd2FyZC1taWIvaXBDaWRyUm91dGVUYWJsZS9pcENpZHJSb3V0ZVRhYmxlX2ludGVyZmFjZS5jCkBAIC0yMjU0LDcgKzIyNTQsNyBAQAogICAgIC8qCiAgICAgICogY2FjaGUgaW5pdAogICAgICAqLwotICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZShJUENJRFJST1VURVRBQkxFX0NBQ0hFX1RJTUVPVVQsCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcENpZHJSb3V0ZVRhYmxlX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBDaWRyUm91dGVUYWJsZV9vaWRfc2l6ZSk7CkBAIC0yMjY3LDIwICsyMjY3LDE1IEBACiAgICAgaWZfY3R4LT5jYWNoZS0+ZmxhZ3MgPSBORVRTTk1QX0NBQ0hFX0RPTlRfSU5WQUxJREFURV9PTl9TRVQ7CiAKICAgICBpcENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9pbml0KCZpZl9jdHgtPmNvbnRhaW5lciwgaWZfY3R4LT5jYWNoZSk7Ci0gICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKICAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQogICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiaXBDaWRyUm91dGVUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgotICAgICAgICAgICAgICAgICAgICAgImlwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXRcbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNvbnRhaW5lciBpbiAiCisgICAgICAgICAgICAgICAgICJpcENpZHJSb3V0ZVRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8qIHNldCBhbGxvdyBkdXBsaWNhdGVzIHRoaXMgbWFrZXMgaW5zZXJ0IE8oMSkgKi8KLSAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChpZl9jdHgtPmNvbnRhaW5lciwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05UQUlORVJfS0VZX0FMTE9XX0RVUExJQ0FURVMpOwotCiAgICAgaWYgKE5VTEwgIT0gaWZfY3R4LT5jYWNoZSkKICAgICAgICAgaWZfY3R4LT5jYWNoZS0+bWFnaWMgPSAodm9pZCAqKSBpZl9jdHgtPmNvbnRhaW5lcjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwQ2lkclJvdXRlVGFibGVfY29udGFpbmVyX2luaXQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgKaW5kZXggYjQ1Y2JiNC4uODM3NTJlNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliLmgKQEAgLTYsNCArNiw4IEBACiBjb25maWdfcmVxdWlyZShpcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZSk7CiBjb25maWdfcmVxdWlyZShpcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlKTsKIGNvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcF9zY2FsYXJzKTsKKyNpZmRlZiBsaW51eAorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKTsKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZSk7CisjZW5kaWYKIGNvbmZpZ19hZGRfbWliKElQLU1JQikKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnAuaAppbmRleCA3MGE0NzNjLi5lOWMzNzFiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycC5oCkBAIC0yMyw4ICsyMyw3IEBACiAjZWxzZQogLyoKICAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQotICogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCiAgKi8KLWNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9hcnAtdW5rbm93bi1hcmNoKQorY29uZmlnX2Vycm9yKHRoZSBhcnAgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2NvbW1vbi5jCmluZGV4IGMwY2M2ODAuLmM3OTRjM2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9jb21tb24uYwpAQCAtMTQzLDMgKzE0Myw0MSBAQAogewogICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV9mcmVlKGVudHJ5KTsKIH0KKworLyoqCisgKiBVcGRhdGUgZ2l2ZW4gZW50cnkgd2l0aCBuZXcgZGF0YS4gQ2FsY3VsYXRlIG5ldyBhcnBfbGFzdF91cGRhdGVkLCBpZiBhbnkKKyAqIGZpZWxkIGlzIGNoYW5nZWQuCisgKi8KK3ZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X3VwZGF0ZShuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksCisgICAgICAgIG5ldHNubXBfYXJwX2VudHJ5ICpuZXdfZGF0YSkKK3sKKyAgICBpbnQgbW9kaWZpZWQgPSAwOworCisgICAgaWYgKGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiAhPSBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzc19sZW4KKyAgICAgICAgICAgIHx8IG1lbWNtcChlbnRyeS0+YXJwX2lwYWRkcmVzcywgbmV3X2RhdGEtPmFycF9pcGFkZHJlc3MsIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbikgIT0gMCApIHsKKyAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICBlbnRyeS0+YXJwX2lwYWRkcmVzc19sZW4gPSBuZXdfZGF0YS0+YXJwX2lwYWRkcmVzc19sZW47CisgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX2lwYWRkcmVzcywgbmV3X2RhdGEtPmFycF9pcGFkZHJlc3MsIHNpemVvZihlbnRyeS0+YXJwX2lwYWRkcmVzcykpOworICAgIH0KKyAgICBpZiAoZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gIT0gbmV3X2RhdGEtPmFycF9waHlzYWRkcmVzc19sZW4gfHwKKyAgICAgICAgICAgIG1lbWNtcChlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBuZXdfZGF0YS0+YXJwX3BoeXNhZGRyZXNzLCBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbikgIT0gMCkgeworICAgICAgICAgbW9kaWZpZWQgPSAxOworICAgICAgICAgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4gPSBuZXdfZGF0YS0+YXJwX3BoeXNhZGRyZXNzX2xlbjsKKyAgICAgICAgIG1lbWNweShlbnRyeS0+YXJwX3BoeXNhZGRyZXNzLCBuZXdfZGF0YS0+YXJwX3BoeXNhZGRyZXNzLCBzaXplb2YoZW50cnktPmFycF9waHlzYWRkcmVzc19sZW4pKTsKKyAgICAgfQorICAgIGlmIChlbnRyeS0+YXJwX3N0YXRlICE9IG5ld19kYXRhLT5hcnBfc3RhdGUpIHsKKyAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBuZXdfZGF0YS0+YXJwX3N0YXRlOworICAgICB9CisgICAgaWYgKGVudHJ5LT5hcnBfdHlwZSAhPSBuZXdfZGF0YS0+YXJwX3R5cGUpIHsKKyAgICAgICAgIG1vZGlmaWVkID0gMTsKKyAgICAgICAgIGVudHJ5LT5hcnBfdHlwZSA9IG5ld19kYXRhLT5hcnBfdHlwZTsKKyAgICAgfQorICAgIGlmIChlbnRyeS0+ZmxhZ3MgIT0gbmV3X2RhdGEtPmZsYWdzKSB7CisgICAgICAgICBtb2RpZmllZCA9IDE7CisgICAgICAgICBlbnRyeS0+ZmxhZ3MgPSBuZXdfZGF0YS0+ZmxhZ3M7CisgICAgIH0KKworICAgIGlmIChtb2RpZmllZCkKKyAgICAgICAgZW50cnktPmFycF9sYXN0X3VwZGF0ZWQgPSBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9hcnBfbGludXguYwppbmRleCA3NWQ5NGMwLi4yMDY5ZWYxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvYXJwX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2FycF9saW51eC5jCkBAIC0xLDcgKzEsNSBAQAogLyoKICAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0Ci0gKgotICogJElkJAogICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KQEAgLTE0LDkgKzEyLDMyIEBACiAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2luY2x1ZGUgPG5ldC9pZl9hcnAuaD4KICNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorI2luY2x1ZGUgPGFzbS90eXBlcy5oPgorI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICisjaW5jbHVkZSA8bGludXgvcnRuZXRsaW5rLmg+CisjZGVmaW5lIE5JUDYoYWRkcikgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzBdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzFdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzJdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzNdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzRdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzVdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzZdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzddKQorI2RlZmluZSBOSVA2X0ZNVCAiJTA0eDolMDR4OiUwNHg6JTA0eDolMDR4OiUwNHg6JTA0eDolMDR4IgorI2VuZGlmCisjZW5kaWYKIAogaW50IF9sb2FkX3Y0KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKLQorc3RhdGljIGludCBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CisjaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAoraW50IGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChpbnQgc2QsIGludCAqc3RhdHVzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYnVmZiwgc2l6ZV90IHNpemUpOworaW50IGZpbGx1cF9lbnRyeV9pbmZvKG5ldHNubXBfYXJwX2VudHJ5ICplbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgKm5sbXApOworI2VuZGlmCiAvKioKICAqLwogaW50CkBAIC0yOCwxMSArNDksMTAgQEAKICAgICBpZihyYyA8IDApIHsKICAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9LRUVQX0NPTlRBSU5FUjsKICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOwotICAgICAgICByZXR1cm4gcmM7CiAgICAgfQogCi0jaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikgJiYgMCAvKiB4eC1ya3M6IGFycCBmb3IgdjY/ICovCi0gICAgaWR4X29mZnNldCA9IHJjOworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisgICAgaWR4X29mZnNldCA9IChyYyA8IDApID8gMCA6IHJjOwogCiAgICAgcmMgPSBfbG9hZF92Nihjb250YWluZXIsIGlkeF9vZmZzZXQpOwogICAgIGlmKHJjIDwgMCkgewpAQCAtNjcsNyArODcsNyBAQAogCiAjZGVmaW5lIFBST0NGSUxFICIvcHJvYy9uZXQvYXJwIgogICAgIGlmICghKGluID0gZm9wZW4oUFJPQ0ZJTEUsICJyIikpKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIik7CisgICAgICAgIHNubXBfbG9nKExPR19ERUJVRywiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKTsKICAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIApAQCAtMTkxLDMgKzIxMSwyMzUgQEAKIAogICAgIHJldHVybiBpZHhfb2Zmc2V0OwogfQorCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKK3N0YXRpYyBpbnQKK19sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQoreworICAgIGNoYXIgICAgICAgICAgICAgIGJ1ZmZlclsxNjM4NF07CisjaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQorICAgIHN0cnVjdCBubG1zZ2hkciAgICpubG1wOworI2VuZGlmCisgICAgaW50ICAgICAgICAgICAgICAgc2QgPSAwOworICAgIGludCAgICAgICAgICAgICAgIHN0YXR1cyA9IDA7CisgICAgaW50ICAgICAgICAgICAgICAgcmMgPSAwOworICAgIGludCAgICAgICAgICAgICAgIGxlbiwgcmVxX2xlbjsKKyAgICBuZXRzbm1wX2FycF9lbnRyeSAqZW50cnk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisjaWYgZGVmaW5lZChIQVZFX0xJTlVYX1JUTkVUTElOS19IKQorICAgIGlmKChzZCA9IHNvY2tldCAoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSkpIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJVbmFibGUgdG8gY3JlYXRlIG5ldGxpbmsgc29ja2V0XG4iKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKworICAgIGlmKGdldF90cmFuc2xhdGlvbl90YWJsZV9pbmZvIChzZCwgJnN0YXR1cywgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSkgPCAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwiVW5hYmxlIHRvIGZldGNoIHRyYW5zbGF0aW9uIHRhYmxlIGluZm9cbiIpOworICAgICAgIGNsb3NlKHNkKTsKKyAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgZm9yIChubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1ZmZlcjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTsgKSB7CisgICAgICAgICBsZW4gPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgICByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKKyAgICAgICAgIGlmIChyZXFfbGVuIDwgMCB8fCBsZW4gPiBzdGF0dXMpIHsKKyAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJpbnZhbGlkIGxlbmd0aFxuIik7CisgICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICAgfQorICAgICAgICAgaWYgKCFOTE1TR19PSyAobmxtcCwgc3RhdHVzKSkgeworICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIk5MTVNHIG5vdCBPS1xuIik7CisgICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICAgfQorICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19hcnBfZW50cnlfY3JlYXRlKCk7CisgICAgICAgICBpZihOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICByYyA9IC0zOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICB9CisgICAgICAgICBlbnRyeS0+bnNfYXJwX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAgaWYoZmlsbHVwX2VudHJ5X2luZm8gKGVudHJ5LCBubG1wKSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6YXJwOmxvYWRfdjYiLCAic2tpcHBpbmcgbmV0bGluayBtZXNzYWdlIHRoYXQiCisgICAgICAgICAgICAgICAgICAgICAgICAiZGlkIG5vdCBjb250YWluIHZhbGlkIEFSUCBpbmZvcm1hdGlvblxuIikpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7CisgICAgICAgICAgICBubG1wID0gKHN0cnVjdCBubG1zZ2hkciopKChjaGFyKilubG1wICsgTkxNU0dfQUxJR04obGVuKSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgIH0KKyAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgICBzdGF0dXMgLT0gTkxNU0dfQUxJR04obGVuKTsKKyAgICAgICAgIG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyKikoKGNoYXIqKW5sbXAgKyBOTE1TR19BTElHTihsZW4pKTsKKyAgICB9CisKKyAgICBjbG9zZShzZCk7CisjZW5kaWYKKyAgICBpZihyYzwwKSB7CisgICAgICAgIHJldHVybiByYzsKKyAgICB9CisKKyAgICByZXR1cm4gaWR4X29mZnNldDsKK30KKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCitpbnQgCitnZXRfdHJhbnNsYXRpb25fdGFibGVfaW5mbyAoaW50IHNkLCBpbnQgKnN0YXR1cywgY2hhciAqYnVmZiwgc2l6ZV90IHNpemUpCit7CisgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbjsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgbmRtc2cgcjsKKyAgICAgICAgICAgICAgICBjaGFyICAgYnVmWzEwMjRdOworICAgIH0gcmVxOworICAgIHN0cnVjdCBydGF0dHIgICAqcnRhOworCisgICAgbWVtc2V0KCZyZXEsIDAsIHNpemVvZihyZXEpKTsKKyAgICByZXEubi5ubG1zZ19sZW4gPSBOTE1TR19MRU5HVEggKHNpemVvZihzdHJ1Y3QgbmRtc2cpKTsKKyAgICByZXEubi5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9ST09UOworICAgIHJlcS5uLm5sbXNnX3R5cGUgPSBSVE1fR0VUTkVJR0g7CisKKyAgICByZXEuci5uZG1fZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgcnRhID0gKHN0cnVjdCBydGF0dHIgKikoKChjaGFyICopJnJlcSkgKyBOTE1TR19BTElHTihyZXEubi5ubG1zZ19sZW4pKTsKKyAgICBydGEtPnJ0YV9sZW4gPSBSVEFfTEVOR1RIKDE2KTsKKworICAgIGlmKHNlbmQoc2QsICZyZXEsIHJlcS5uLm5sbXNnX2xlbiwgMCkgPCAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwiU2VuZGluZyByZXF1ZXN0IGZhaWxlZFxuIik7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZigoKnN0YXR1cyA9IHJlY3Yoc2QsIGJ1ZmYsIHNpemUsIDApKSA8IDApIHsKKyAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJSZWNpZXZpbmcgcmVxdWVzdCBmYWlsZWRcbiIpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYoKnN0YXR1cyA9PSAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwiRW5kIG9mIGZpbGVcbiIpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorZmlsbHVwX2VudHJ5X2luZm8obmV0c25tcF9hcnBfZW50cnkgKmVudHJ5LCBzdHJ1Y3Qgbmxtc2doZHIgKm5sbXApCit7CisgICAgc3RydWN0IG5kbXNnICAgKnJ0bXA7CisgICAgc3RydWN0IGluNl9hZGRyICppbjZwOworICAgIHN0cnVjdCBydGF0dHIgICp0YltOREFfTUFYICsgMV0sICpydGE7CisgICAgc2l6ZV90ICAgICAgICAgIGluX2xlbiwgb3V0X2xlbjsKKyAgICB1bnNpZ25lZCBpbnQgICAgaTsKKyAgICBpbnQgICAgICAgICAgICAgbGVuZ3RoOworICAgIGNoYXIgICAgICAgICAgICBhZGRyWzQwXTsKKyAgICB1X2NoYXIgICAgICAgICAqYnVmOworICAgIHVfY2hhciAgICAgICAgICpod2FkZHI7CisKKyAgICBydG1wID0gKHN0cnVjdCBuZG1zZyAqKSBOTE1TR19EQVRBKG5sbXApOworICAgIGlmIChubG1wLT5ubG1zZ190eXBlICE9IFJUTV9ORVdORUlHSCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiV3JvbmcgbmV0bGluayBtZXNzYWdlIHR5cGUgJWRcbiIsIG5sbXAtPm5sbXNnX3R5cGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHJ0bXAtPm5kbV9zdGF0ZSAhPSBOVURfTk9BUlApIHsKKyAgICAgICAgbWVtc2V0KHRiLCAwLCBzaXplb2Yoc3RydWN0IHJ0YXR0ciAqKSAqIChOREFfTUFYICsgMSkpOworICAgICAgICBsZW5ndGggPSBubG1wLT5ubG1zZ19sZW4gLSBOTE1TR19MRU5HVEgoc2l6ZW9mKCpydG1wKSk7CisgICAgICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0bGluayBtZXNzYWdlIGxlbmd0aCAlZCA8ICVkIGlzIGludmFsaWRcbiIsCisgICAgICAgICAgICAgICAgICAgICBubG1wLT5ubG1zZ19sZW4sIChpbnQpTkxNU0dfTEVOR1RIKHNpemVvZigqcnRtcCkpKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiB0aGlzIGlzIHdoYXQgdGhlIGtlcm5lbC1yZW1vdmVkIE5EQV9SVEEgZGVmaW5lIGRpZCAKKyAgICAgICAgICovCisgICAgICAgIHJ0YSA9ICgoc3RydWN0IHJ0YXR0ciAqKSAoKChjaGFyICopIChydG1wKSkgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5MTVNHX0FMSUdOKHNpemVvZihzdHJ1Y3QgbmRtc2cpKSkpOworICAgICAgICB3aGlsZSAoUlRBX09LKHJ0YSwgbGVuZ3RoKSkgeworICAgICAgICAgICAgaWYgKHJ0YS0+cnRhX3R5cGUgPD0gTkRBX01BWCkKKyAgICAgICAgICAgICAgICB0YltydGEtPnJ0YV90eXBlXSA9IHJ0YTsKKyAgICAgICAgICAgIHJ0YSA9IFJUQV9ORVhUKHJ0YSwgbGVuZ3RoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobGVuZ3RoKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiUmVjZWl2ZWQgdW5ldmVuIG51bWJlciBvZiBuZXRsaW5rIgorICAgICAgICAgICAgICAgICAgICAgICAgIiBtZXNzYWdlcyAtICVkIGJ5dGVzIHJlbWFpbmluZ1xuIiwgbGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICAgKiBGaWxsIHVwIHRoZSBpbmRleAorICAgICAgICAgKi8KKyAgICAgICAgZW50cnktPmlmX2luZGV4ID0gcnRtcC0+bmRtX2lmaW5kZXg7CisgICAgICAgIC8qCisgICAgICAgICAqIEZpbGwgdXAgaXAgYWRkcmVzcyAKKyAgICAgICAgICovCisgICAgICAgIGlmICh0YltOREFfRFNUXSkgeworICAgICAgICAgICAgbWVtc2V0KCZhZGRyLCAnXDAnLCBzaXplb2YoYWRkcikpOworICAgICAgICAgICAgaW42cCA9IChzdHJ1Y3QgaW42X2FkZHIgKikgUlRBX0RBVEEodGJbTkRBX0RTVF0pOworICAgICAgICAgICAgc3ByaW50ZihhZGRyLCBOSVA2X0ZNVCwgTklQNigqaW42cCkpOworICAgICAgICAgICAgaW5fbGVuID0gZW50cnktPmFycF9pcGFkZHJlc3NfbGVuID0KKyAgICAgICAgICAgICAgICBzaXplb2YoZW50cnktPmFycF9pcGFkZHJlc3MpOworICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gaW5fbGVuKTsKKyAgICAgICAgICAgIG91dF9sZW4gPSAwOworICAgICAgICAgICAgYnVmID0gZW50cnktPmFycF9pcGFkZHJlc3M7CisgICAgICAgICAgICBpZiAoMSAhPSBuZXRzbm1wX2hleF90b19iaW5hcnkoJmJ1ZiwgJmluX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0X2xlbiwgMCwgYWRkciwgIjoiKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBwYXJzaW5nICclcycsIHNraXBwaW5nXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXRzbm1wX2Fzc2VydCgxNiA9PSBvdXRfbGVuKTsKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfaXBhZGRyZXNzX2xlbiA9IG91dF9sZW47CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRiW05EQV9MTEFERFJdKSB7CisgICAgICAgICAgICBtZW1zZXQoJmFkZHIsICdcMCcsIHNpemVvZihhZGRyKSk7CisgICAgICAgICAgICBod2FkZHIgPSBSVEFfREFUQSh0YltOREFfTExBRERSXSk7CisgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzX2xlbiA9IFJUQV9QQVlMT0FEKHRiW05EQV9MTEFERFJdKTsKKyAgICAgICAgICAgIGJ1ZiA9IGVudHJ5LT5hcnBfcGh5c2FkZHJlc3M7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZW50cnktPmFycF9waHlzYWRkcmVzc19sZW47IGkrKykKKyAgICAgICAgICAgICAgICBlbnRyeS0+YXJwX3BoeXNhZGRyZXNzW2ldID0gaHdhZGRyW2ldOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChydG1wLT5uZG1fc3RhdGUpIHsKKyAgICAgICAgY2FzZSBOVURfSU5DT01QTEVURToKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0lOQ09NUExFVEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVURfUkVBQ0hBQkxFOgorICAgICAgICBjYXNlIE5VRF9QRVJNQU5FTlQ6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9SRUFDSEFCTEU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVURfU1RBTEU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3N0YXRlID0gSU5FVE5FVFRPTUVESUFTVEFURV9TVEFMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9ERUxBWToKKyAgICAgICAgICAgIGVudHJ5LT5hcnBfc3RhdGUgPSBJTkVUTkVUVE9NRURJQVNUQVRFX0RFTEFZOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTlVEX1BST0JFOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfUFJPQkU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBOVURfRkFJTEVEOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfSU5WQUxJRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9OT05FOgorICAgICAgICAgICAgZW50cnktPmFycF9zdGF0ZSA9IElORVRORVRUT01FRElBU1RBVEVfVU5LTk9XTjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlVucmVjb2duaXplZCBBUlAgZW50cnkgc3RhdGUgJWQiLCBydG1wLT5uZG1fc3RhdGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzd2l0Y2ggKHJ0bXAtPm5kbV9zdGF0ZSkgeworICAgICAgICBjYXNlIE5VRF9JTkNPTVBMRVRFOgorICAgICAgICBjYXNlIE5VRF9GQUlMRUQ6CisgICAgICAgIGNhc2UgTlVEX05PTkU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfSU5WQUxJRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9SRUFDSEFCTEU6CisgICAgICAgIGNhc2UgTlVEX1NUQUxFOgorICAgICAgICBjYXNlIE5VRF9ERUxBWToKKyAgICAgICAgY2FzZSBOVURfUFJPQkU6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfRFlOQU1JQzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE5VRF9QRVJNQU5FTlQ6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfU1RBVElDOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBlbnRyeS0+YXJwX3R5cGUgPSBJTkVUTkVUVE9NRURJQVRZUEVfTE9DQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAtMTsgICAgICAgICAgICAgIC8qIGNvdWxkIG5vdCBjcmVhdGUgZGF0YSBmb3IgdGhpcyBpbnRlcmZhY2UgKi8KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGRmYmIxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApAQCAtMCwwICsxLDI4IEBACisvKgorICogZGVmYXVsdHJvdXRlciBkYXRhIGFjY2VzcyBoZWFkZXIKKyAqCisgKiAkSWQ6ICQKKyAqLworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBjb25maWd1cmUgcmVxdWlyZWQgZmlsZXMKKyAqCisgKiBOb3RlczoKKyAqCisgKiAxKSBwcmVmZXIgZnVuY3Rpb25hbGl0eSBvdmVyIHBsYXRmb3JtLCB3aGVyZSBwb3NzaWJsZS4gSWYgYSBtZXRob2QKKyAqICAgIGlzIGF2YWlsYWJsZSBmb3IgbXVsdGlwbGUgcGxhdGZvcm1zLCB0ZXN0IHRoYXQgZmlyc3QuIFRoYXQgd2F5CisgKiAgICB3aGVuIGEgbmV3IHBsYXRmb3JtIGlzIHBvcnRlZCwgaXQgd29uJ3QgbmVlZCBhIG5ldyB0ZXN0IGhlcmUuCisgKgorICogMikgZG9uJ3QgZG8gZGV0YWlsIHJlcXVpcmVtZW50cyBoZXJlLiBJZiwgZm9yIGV4YW1wbGUsCisgKiAgICBIUFVYMTEgaGFkIGRpZmZlcmVudCByZXVpcmVtZW50cyB0aGFuIG90aGVyIEhQVVgsIHRoYXQgc2hvdWxkCisgKiAgICBiZSBoYW5kbGVkIGluIHRoZSAqX2hwdXguaCBoZWFkZXIgZmlsZS4KKyAqLworY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uKQorI2lmIGRlZmluZWQoIGxpbnV4ICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9kZWZhdWx0cm91dGVyX2xpbnV4KQorI2Vsc2UKKy8qCisgKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKKyAqLworY29uZmlnX2Vycm9yKHRoZSBkZWZhdWx0cm91dGVyIGRhdGEgYWNjZXNzIGxpYnJhcnkgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LikKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9jb21tb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTg1YmZhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfY29tbW9uLmMKQEAgLTAsMCArMSwyOTEgQEAKKy8qCisgKiAgZGVmYXVsdHJvdXRlciBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQ6JAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oPgorCisjaW5jbHVkZSAiaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgiCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogbG9jYWwgc3RhdGljIHByb3RvdHlwZXMKKyAqLworc3RhdGljIGludCBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY29tcGFyZV9hZGRyKGNvbnN0IHZvaWQgKmxocywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpyaHMpOworc3RhdGljIHZvaWQgX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X3JlbGVhc2UobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICogZW50cnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1bnVzZWQpOworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGV4dGVybmFsIHBlci1hcmNoaXRlY3R1cmUgZnVuY3Rpb25zIHByb3RvdHlwZXMKKyAqCisgKiBUaGVzZSBzaG91bGRuJ3QgYmUgY2FsbGVkIGJ5IHRoZSBnZW5lcmFsIHB1YmxpYywgc28gdGhleSBhcmVuJ3QgaW4KKyAqIHRoZSBoZWFkZXIgZmlsZS4KKyAqLworZXh0ZXJuIGludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfZW50cnlfaW5pdChuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5KTsKKworZXh0ZXJuIGludAorbmV0c25tcF9hcmNoX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGNvbnRhaW5lciBmdW5jdGlvbnMKKyAqLworLyoqCisgKi8KK25ldHNubXBfY29udGFpbmVyICoKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2luaXQodV9pbnQgZmxhZ3MpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjE7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6Y29udGFpbmVyIiwgImluaXRcbiIpKTsKKworICAgIC8qCisgICAgICogY3JlYXRlIHRoZSBjb250YWluZXJzLiBvbmUgaW5kZXhlZCBieSBpZkluZGV4LCB0aGUgb3RoZXIKKyAgICAgKiBpbmRleGVkIGJ5IGlmTmFtZS4KKyAgICAgKi8KKyAgICBjb250YWluZXIxID0gbmV0c25tcF9jb250YWluZXJfZmluZCgiYWNjZXNzX2RlZmF1bHRyb3V0ZXI6dGFibGVfY29udGFpbmVyIik7CisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyMSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZGVmYXVsdHJvdXRlciBwcmltYXJ5IGNvbnRhaW5lciBpcyBub3QgZm91bmRcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgY29udGFpbmVyMS0+Y29udGFpbmVyX25hbWUgPSBzdHJkdXAoImRyX2luZGV4Iik7CisKKyAgICBpZiAoZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0lOSVRfQURETF9JRFhfQllfQUREUikgeworICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyMiA9CisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJkZWZhdWx0cm91dGVyX2FkZHI6YWNjZXNzX2RlZmF1bHRyb3V0ZXI6dGFibGVfY29udGFpbmVyIik7CisgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcjIpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkZWZhdWx0cm91dGVyIHNlY29uZGFyeSBjb250YWluZXIgbm90IGZvdW5kXG4iKTsKKyAgICAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcjEpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBjb250YWluZXIyLT5jb21wYXJlID0gX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NvbXBhcmVfYWRkcjsKKyAgICAgICAgY29udGFpbmVyMi0+Y29udGFpbmVyX25hbWUgPSBzdHJkdXAoImRyX2FkZHIiKTsKKworICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9hZGRfaW5kZXgoY29udGFpbmVyMSwgY29udGFpbmVyMik7CisgICAgfQorCisgICAgcmV0dXJuIGNvbnRhaW5lcjE7Cit9CisKKy8qKgorICogQHJldHZhbCBOVUxMICBlcnJvcgorICogQHJldHZhbCAhTlVMTCBwb2ludGVyIHRvIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lcioKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmM7CisgICAgIHVfaW50IGNvbnRhaW5lcl9mbGFncyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6Y29udGFpbmVyIiwgImxvYWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfTE9BRF9BRERMX0lEWF9CWV9BRERSKSB7CisgICAgICAgICAgICBjb250YWluZXJfZmxhZ3MgfD0KKyAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0lOSVRfQURETF9JRFhfQllfQUREUjsKKyAgICAgICAgfQorICAgICAgICBjb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfaW5pdChjb250YWluZXJfZmxhZ3MpOworICAgIH0KKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX2RlZmF1bHRyb3V0ZXJcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByYyA9ICBuZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZChjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIGlmICgwICE9IHJjKSB7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX05PRkxBR1MpOworICAgICAgICBjb250YWluZXIgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiBjb250YWluZXI7Cit9CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZnJlZV9mbGFncykKK3sKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6Y29udGFpbmVyIiwgImZyZWVcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb250YWluZXIgZm9yIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0RPTlRfQ0xFQVIpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGZyZWUgYWxsIGl0ZW1zLgorICAgICAgICAgKi8KKyAgICAgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X3JlbGVhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICB9CisKKyAgICBpZighIChmcmVlX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSKSkKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKK30KKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBkZWZhdWx0cm91dGVyX2VudHJ5IGZ1bmN0aW9ucworICovCisvKioKKyAqLworLyoqCisgKi8KK25ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqCituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NyZWF0ZSh2b2lkKQoreworICAgIGludCByYyA9IDA7CisgICAgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICplbnRyeSA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5KTsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZGVmYXVsdHJvdXRlcjplbnRyeSIsICJjcmVhdGVcbiIpKTsKKworICAgIGlmKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgZW50cnktPm9pZF9pbmRleC5sZW4gPSAxOworICAgIGVudHJ5LT5vaWRfaW5kZXgub2lkcyA9ICZlbnRyeS0+bnNfZHJfaW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCBkZWZhdWx0cworICAgICAqLworICAgIGVudHJ5LT5kcl9saWZldGltZSAgID0gSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfTUFYOworICAgIGVudHJ5LT5kcl9wcmVmZXJlbmNlID0gSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRV9NRURJVU07CisKKyAgICByYyA9IG5ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2VudHJ5X2luaXQoZW50cnkpOworICAgIGlmIChTTk1QX0VSUl9OT0VSUk9SICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczpkZWZhdWx0cm91dGVyOmNyZWF0ZSIsImVycm9yICVkIGluIGFyY2ggaW5pdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgZW50cnkgPSBOVUxMOworICAgIH0KKworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9mcmVlKG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqIGVudHJ5KQoreworICAgIGlmIChOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm47CisKKyAgICBmcmVlKGVudHJ5KTsKK30KKworLyoqCisgKiB1cGRhdGUgYW4gb2xkIGRlZmF1bHRyb3V0ZXJfZW50cnkgZnJvbSBhIG5ldyBvbmUKKyAqCisgKiBAbm90ZTogb25seSBtaWIgcmVsYXRlZCBpdGVtcyBhcmUgY29tcGFyZWQuIEludGVybmFsIG9iamVjdHMKKyAqIHN1Y2ggYXMgb2lkX2luZGV4LCBuc19kcl9pbmRleCBhbmQgZmxhZ3MgYXJlIG5vdCBjb21wYXJlZC4KKyAqCisgKiBAcmV0dmFsIC0xICA6IGVycm9yCisgKiBAcmV0dmFsID49MCA6IG51bWJlciBvZiBmaWVsZHMgdXBkYXRlZAorICovCitpbnQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfdXBkYXRlKG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKnJocykKK3sKKyAgICBpbnQgY2hhbmdlZCA9IDA7CisKKyAgICBpZiAobGhzLT5kcl9hZGRyZXNzdHlwZSAhPSByaHMtPmRyX2FkZHJlc3N0eXBlKSB7CisgICAgICAgICsrY2hhbmdlZDsKKyAgICAgICAgbGhzLT5kcl9hZGRyZXNzdHlwZSA9IHJocy0+ZHJfYWRkcmVzc3R5cGU7CisgICAgfQorCisgICAgaWYgKGxocy0+ZHJfYWRkcmVzc19sZW4gIT0gcmhzLT5kcl9hZGRyZXNzX2xlbikgeworICAgICAgICBjaGFuZ2VkICs9IDI7CisgICAgICAgIGxocy0+ZHJfYWRkcmVzc19sZW4gPSByaHMtPmRyX2FkZHJlc3NfbGVuOworICAgICAgICBtZW1jcHkobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pOworICAgIH0KKyAgICBlbHNlIGlmIChtZW1jbXAobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pICE9IDApIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBtZW1jcHkobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pOworICAgIH0KKworICAgIGlmIChsaHMtPmRyX2lmX2luZGV4ICE9IHJocy0+ZHJfaWZfaW5kZXgpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmRyX2lmX2luZGV4ID0gcmhzLT5kcl9pZl9pbmRleDsKKyAgICB9CisKKyAgICBpZiAobGhzLT5kcl9saWZldGltZSAhPSByaHMtPmRyX2xpZmV0aW1lKSB7CisgICAgICAgICsrY2hhbmdlZDsKKyAgICAgICAgbGhzLT5kcl9saWZldGltZSA9IHJocy0+ZHJfbGlmZXRpbWU7CisgICAgfQorCisgICAgaWYgKGxocy0+ZHJfcHJlZmVyZW5jZSAhPSByaHMtPmRyX3ByZWZlcmVuY2UpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmRyX3ByZWZlcmVuY2UgPSByaHMtPmRyX3ByZWZlcmVuY2U7CisgICAgfQorCisgICAgcmV0dXJuIGNoYW5nZWQ7Cit9CisKKy8qKgorICogY29weSBhbiAgZGVmYXVsdHJvdXRlcl9lbnRyeQorICoKKyAqIEByZXR2YWwgLTEgIDogZXJyb3IKKyAqIEByZXR2YWwgMCAgIDogbm8gZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NvcHkobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKnJocykKK3sKKyAgICBsaHMtPmRyX2FkZHJlc3N0eXBlID0gcmhzLT5kcl9hZGRyZXNzdHlwZTsKKyAgICBsaHMtPmRyX2FkZHJlc3NfbGVuID0gcmhzLT5kcl9hZGRyZXNzX2xlbjsKKyAgICBtZW1jcHkobGhzLT5kcl9hZGRyZXNzLCByaHMtPmRyX2FkZHJlc3MsIHJocy0+ZHJfYWRkcmVzc19sZW4pOworICAgIGxocy0+ZHJfaWZfaW5kZXggICAgPSByaHMtPmRyX2lmX2luZGV4OworICAgIGxocy0+ZHJfbGlmZXRpbWUgICAgPSByaHMtPmRyX2xpZmV0aW1lOworICAgIGxocy0+ZHJfcHJlZmVyZW5jZSAgPSByaHMtPmRyX3ByZWZlcmVuY2U7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBVdGlsaXR5IHJvdXRpbmVzCisgKi8KKworLyoqCisgKi8KK3ZvaWQKK19hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV9yZWxlYXNlKG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqIGVudHJ5LCB2b2lkICpjb250ZXh0KQoreworICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShlbnRyeSk7Cit9CisKK3N0YXRpYyBpbnQgX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NvbXBhcmVfYWRkcihjb25zdCB2b2lkICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpyaHMpCit7CisgICAgY29uc3QgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpsaCA9IChjb25zdCBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKilsaHM7CisgICAgY29uc3QgbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpyaCA9IChjb25zdCBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKilyaHM7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGxocyk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByaHMpOworCisgICAgLyoKKyAgICAgKiBjb21wYXJlIGFkZHJlc3MgbGVuZ3RoCisgICAgICovCisgICAgaWYgKGxoLT5kcl9hZGRyZXNzX2xlbiA8IHJoLT5kcl9hZGRyZXNzX2xlbikKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGVsc2UgaWYgKGxoLT5kcl9hZGRyZXNzX2xlbiA+IHJoLT5kcl9hZGRyZXNzX2xlbikKKyAgICAgICAgcmV0dXJuIDE7CisKKyAgICAvKgorICAgICAqIGxlbmd0aCBlcXVhbCwgY29tcGFyZSBhZGRyZXNzCisgICAgICovCisgICAgcmV0dXJuIG1lbWNtcChsaC0+ZHJfYWRkcmVzcywgcmgtPmRyX2FkZHJlc3MsIGxoLT5kcl9hZGRyZXNzX2xlbik7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcl9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzgwMTZhCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXJfbGludXguYwpAQCAtMCwwICsxLDMyOCBAQAorLyoKKyAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICogJElkOiQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaD4KKworI2luY2x1ZGUgImlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAorI2luY2x1ZGUgPGxpbnV4L25ldGxpbmsuaD4KKyNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjZGVmaW5lIFJDVkJVRl9TSVpFIDMyNzY4CisjZGVmaW5lIFNOREJVRl9TSVpFIDUxMgorCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorI2RlZmluZSBEUl9BRERSU1RSTEVOICBJTkVUNl9BRERSU1RSTEVOCisjZWxzZQorI2RlZmluZSBEUl9BRERSU1RSTEVOICBJTkVUX0FERFJTVFJMRU4KKyNlbmRpZgorCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCisgKi8KK3N0YXRpYyBpbnQgX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcik7CisKKworLyoKKyAqIGluaXRpYWxpemUgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKgorICogQHJldHZhbCAgMDogc3VjY2VzcworICogQHJldHZhbCA8MDogZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FyY2hfZGVmYXVsdHJvdXRlcl9lbnRyeV9pbml0KG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZW50cnkpCit7CisgICAgLyoKKyAgICAgKiBpbml0CisgICAgICovCisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICoKKyAqIEByZXR2YWwgIDAgbm8gZXJyb3JzCisgKiBAcmV0dmFsICEwIGVycm9ycworICovCitpbnQKK25ldHNubXBfYXJjaF9kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXI6ZW50cnk6YXJjaCIsICJsb2FkIChsaW51eClcbiIpKTsKKworICAgIHJjID0gX2xvYWQoY29udGFpbmVyKTsKKyAgICBpZiAocmMgPCAwKSB7CisgICAgICAgIHVfaW50IGZsYWdzID0gTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworLyoqCisgKgorICogQHJldHZhbCAgMCBubyBlcnJvcnMKKyAqIEByZXR2YWwgITAgZXJyb3JzCisgKi8KK3N0YXRpYyBpbnQKK19sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisjaWZuZGVmIEhBVkVfTElOVVhfUlRORVRMSU5LX0gKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmRlZmF1bHRyb3V0ZXIiLAorICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IGRlZmF1bHQgcm91dGVyIGluZm9ybWF0aW9uIgorICAgICAgICAgICAgICAgICJhcyBuZXRsaW5rIHNvY2tldCBpcyBub3QgYXZhaWxhYmxlXG4iKSk7CisgICAgcmV0dXJuIC0xOworI2Vsc2UKKyAgICBpbnQgcmMgPSAwOworICAgIGludCBpZHhfb2Zmc2V0ID0gMDsKKyAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5OworICAgIGludCBubHNrOworICAgIHN0cnVjdCBzb2NrYWRkcl9ubCBhZGRyOworICAgIGludCByY3ZidWZfc2l6ZSA9IFJDVkJVRl9TSVpFOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyIGhkcjsKKyAgICAgICAgdW5zaWduZWQgY2hhciByY3ZidWZbUkNWQlVGX1NJWkVdOworICAgIH0gcmN2YnVmX3VuaW9uOworICAgIHVuaW9uIHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyIGhkcjsKKyAgICAgICAgdW5zaWduZWQgY2hhciBzbmRidWZbU05EQlVGX1NJWkVdOworICAgIH0gc25kYnVmX3VuaW9uOworICAgIHVuc2lnbmVkIGNoYXIgKmNvbnN0IHJjdmJ1ZiA9IHJjdmJ1Zl91bmlvbi5yY3ZidWY7CisgICAgdW5zaWduZWQgY2hhciAqY29uc3Qgc25kYnVmID0gc25kYnVmX3VuaW9uLnNuZGJ1ZjsKKyAgICBzdHJ1Y3Qgbmxtc2doZHIgKmhkcjsKKyAgICBzdHJ1Y3QgcnRtc2cgKnJ0aGRyOworICAgIGludCBjb3VudDsKKyAgICBpbnQgZW5kX29mX21lc3NhZ2UgPSAwOworICAgIGxvbmcgaHogPSBzeXNjb25mKF9TQ19DTEtfVENLKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogT3BlbiBhIG5ldGxpbmsgc29ja2V0CisgICAgICovCisgICAgbmxzayA9IHNvY2tldChBRl9ORVRMSU5LLCBTT0NLX0RHUkFNLCBORVRMSU5LX1JPVVRFKTsKKyAgICBpZiAobmxzayA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBvcGVuIG5ldGxpbmsgc29ja2V0IDogJXNcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoc2V0c29ja29wdChubHNrLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsCisgICAgICAgICAgICAgICAgICAgJnJjdmJ1Zl9zaXplLCBzaXplb2YocmN2YnVmX3NpemUpKSA8IDApIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBvcGVuIG5ldGxpbmsgc29ja2V0IDogJXNcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGNsb3NlKG5sc2spOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIAorICAgIG1lbXNldCgmYWRkciwgJ1wwJywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCkpOworICAgIGFkZHIubmxfZmFtaWx5ID0gQUZfTkVUTElOSzsKKworICAgIG1lbXNldChzbmRidWYsICdcMCcsIFNOREJVRl9TSVpFKTsKKyAgICBoZHIgPSAmc25kYnVmX3VuaW9uLmhkcjsKKyAgICBoZHItPm5sbXNnX3R5cGUgPSBSVE1fR0VUUk9VVEU7CisgICAgaGRyLT5ubG1zZ19waWQgPSBnZXRwaWQoKTsKKyAgICBoZHItPm5sbXNnX3NlcSA9IDA7CisgICAgaGRyLT5ubG1zZ19mbGFncyA9IE5MTV9GX1JPT1QgfCBOTE1fRl9NQVRDSCB8IE5MTV9GX1JFUVVFU1Q7CisgICAgaGRyLT5ubG1zZ19sZW4gPSBOTE1TR19MRU5HVEgoc2l6ZW9mKHN0cnVjdCBydG1zZykpOworICAgIHJ0aGRyID0gKHN0cnVjdCBydG1zZyAqKU5MTVNHX0RBVEEoaGRyKTsKKyAgICBydGhkci0+cnRtX3RhYmxlID0gUlRfVEFCTEVfTUFJTjsKKworICAgIC8qCisgICAgICogU2VuZCBhIHJlcXVlc3QgdG8gdGhlIGtlcm5lbCB0byBkdW1wIHRoZSByb3V0aW5nIHRhYmxlIHRvIHVzCisgICAgICovCisgICAgY291bnQgPSBzZW5kdG8obmxzaywgc25kYnVmLCBoZHItPm5sbXNnX2xlbiwgMCwKKyAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfbmwpKTsKKyAgICBpZiAoY291bnQgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmFibGUgdG8gc2VuZCBuZXRsaW5rIG1lc3NhZ2UgdG8ga2VybmVsIDogJXNcbiIsCisgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGNsb3NlKG5sc2spOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBOb3cgbGlzdGVuIGZvciByZXNwb25zZQorICAgICAqLworICAgIGRvIHsKKyAgICAgICAgc3RydWN0IG5sbXNnaGRyICpubG1ocDsKKyAgICAgICAgc3RydWN0IHJ0bXNnICpydG1wOworICAgICAgICBzdHJ1Y3QgcnRhdHRyICpydGFwOworICAgICAgICBzdHJ1Y3QgcnRhX2NhY2hlaW5mbyAqcnRjaTsKKyAgICAgICAgc29ja2xlbl90IHNvY2tfbGVuOworICAgICAgICBpbnQgcnRjb3VudDsKKworICAgICAgICBtZW1zZXQocmN2YnVmLCAnXDAnLCBSQ1ZCVUZfU0laRSk7CisgICAgICAgIHNvY2tfbGVuID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9ubCk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogR2V0IHRoZSBtZXNzYWdlCisgICAgICAgICAqLworICAgICAgICBjb3VudCA9IHJlY3Zmcm9tKG5sc2ssIHJjdmJ1ZiwgUkNWQlVGX1NJWkUsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCAmc29ja19sZW4pOworICAgICAgICBpZiAoY291bnQgPCAwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5hYmxlIHRvIHJlY2VpdmUgbmV0bGluayBtZXNzYWdlczogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogV2FsayBhbGwgb2YgdGhlIHJldHVybmVkIG1lc3NhZ2VzCisgICAgICAgICAqLworICAgICAgICBubG1ocCA9ICZyY3ZidWZfdW5pb24uaGRyOworICAgICAgICB3aGlsZSAoTkxNU0dfT0sobmxtaHAsIGNvdW50KSkgeworICAgICAgICAgICAgdV9jaGFyIGFkZHJlc3N0eXBlOworICAgICAgICAgICAgY2hhciAgIGFkZHJlc3NbTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRSArIDFdOworICAgICAgICAgICAgc2l6ZV90IGFkZHJlc3NfbGVuID0gIDA7CisgICAgICAgICAgICBpbnQgICAgaWZfaW5kZXggICAgPSAtMTsKKyAgICAgICAgICAgIHVfbG9uZyBsaWZldGltZSAgICA9ICAwOworICAgICAgICAgICAgaW50ICAgIHByZWZlcmVuY2UgID0gLTM7CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBNYWtlIHN1cmUgdGhlIG1lc3NhZ2UgaXMgb2sKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKG5sbWhwLT5ubG1zZ190eXBlID09IE5MTVNHX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImtlcm5lbCBwcm9kdWNlZCBubG1zZyBlcnJcbiIpOworICAgICAgICAgICAgICAgIHJjID0gLTE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBFbmQgb2YgbWVzc2FnZSwgd2UncmUgZG9uZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAobmxtaHAtPm5sbXNnX3R5cGUgJiBOTE1TR19ET05FKSB7CisgICAgICAgICAgICAgICAgZW5kX29mX21lc3NhZ2UgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogR2V0IHRoZSBwb2ludGVyIHRvIHRoZSBydG1zZyBzdHJ1Y3QKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcnRtcCA9IE5MTVNHX0RBVEEobmxtaHApOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogemVybyBsZW5ndGggZGVzdGluYXRpb24gaXMgYSBkZWZhdWx0IHJvdXRlCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmIChydG1wLT5ydG1fZHN0X2xlbiAhPSAwKQorICAgICAgICAgICAgICAgIGdvdG8gbmV4dF9ubG1zZ2hkcjsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0YXJ0IHNjYW5uaW5nIHRoZSBhdHRyaWJ1dGVzIGZvciBuZWVkZWQgaW5mbworICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAocnRtcC0+cnRtX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisgICAgICAgICAgICAgICAgYWRkcmVzc3R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNDsKKyAgICAgICAgICAgICAgICBsaWZldGltZSA9IElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX01BWDsgICAgIC8qIGluZmluaXR5ICovCisgICAgICAgICAgICB9CisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgICAgICAgICAgZWxzZSBpZiAocnRtcC0+cnRtX2ZhbWlseSA9PSBBRl9JTkVUNikgeworICAgICAgICAgICAgICAgIGFkZHJlc3N0eXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjY7CisgICAgICAgICAgICAgICAgLyogcm91dGVyIGxpZmV0aW1lIGZvciBJUHY2IGlzIHJldHJpZXZlZCBieSBSVEFfQ0FDSEVJTkZPICovCisgICAgICAgICAgICAgICAgbGlmZXRpbWUgPSAwOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZ290byBuZXh0X25sbXNnaGRyOyAvKiBza2lwLCB3ZSBkb24ndCBjYXJlIGFib3V0IHRoaXMgcm91dGUgKi8KKworICAgICAgICAgICAgcHJlZmVyZW5jZSA9IDA7ICAgICAvKiBwcmVmZXJlbmNlIGlzIG1lZGl1bSgwKSBmb3Igbm93ICovCisKKyAgICAgICAgICAgIHJ0YXAgPSBSVE1fUlRBKHJ0bXApOworICAgICAgICAgICAgcnRjb3VudCA9IFJUTV9QQVlMT0FEKG5sbWhwKTsKKyAgICAgICAgICAgIHdoaWxlIChSVEFfT0socnRhcCwgcnRjb3VudCkpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHJ0YXAtPnJ0YV90eXBlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgUlRBX09JRjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmX2luZGV4ID0gKihpbnQgKikoUlRBX0RBVEEocnRhcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBSVEFfR0FURVdBWToKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJlc3NfbGVuID0gUlRBX1BBWUxPQUQocnRhcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYWRkcmVzcywgJ1wwJywgc2l6ZW9mKGFkZHJlc3MpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShhZGRyZXNzLCBSVEFfREFUQShydGFwKSwgYWRkcmVzc19sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgICAgICAgICAgICAgICAgIGNhc2UgUlRBX0NBQ0hFSU5GTzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJ0Y2kgPSBSVEFfREFUQShydGFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocnRtcC0+cnRtX2ZsYWdzICYgUlRNX0ZfQ0xPTkVEKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChydGNpICYmIHJ0Y2ktPnJ0YV9leHBpcmVzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpZmV0aW1lID0gcnRjaS0+cnRhX2V4cGlyZXMgLyBoejsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworI2VuZGlmCisKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0gICAvKiBzd2l0Y2ggKi8KKworICAgICAgICAgICAgICAgIHJ0YXAgPSBSVEFfTkVYVChydGFwLCBydGNvdW50KTsKKyAgICAgICAgICAgIH0gLyogd2hpbGUgUlRBX09LKHJ0YXApICovCisKKyAgICAgICAgICAgIGlmIChhZGRyZXNzX2xlbiAhPSAwICYmIGlmX2luZGV4ICE9IC0xICYmCisgICAgICAgICAgICAgICAgbGlmZXRpbWUgIT0gMCAmJiBwcmVmZXJlbmNlICE9IC0zICkgeworICAgICAgICAgICAgICAgIERFQlVHSUYoImFjY2VzczpkZWZhdWx0cm91dGVyIikgeworICAgICAgICAgICAgICAgICAgICBjaGFyIGFkZHJfc3RyW0RSX0FERFJTVFJMRU5dOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoYWRkcl9zdHIsICdcMCcsIERSX0FERFJTVFJMRU4pOworCisgICAgICAgICAgICAgICAgICAgIGlmIChydG1wLT5ydG1fZmFtaWx5ID09IEFGX0lORVQpCisgICAgICAgICAgICAgICAgICAgICAgICBpbmV0X250b3AoQUZfSU5FVCwgYWRkcmVzcywgYWRkcl9zdHIsIERSX0FERFJTVFJMRU4pOworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9wKEFGX0lORVQ2LCBhZGRyZXNzLCBhZGRyX3N0ciwgRFJfQUREUlNUUkxFTik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpkZWZhdWx0cm91dGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvdW5kIGRlZmF1bHQgcm91dGU6ICVzIGlmX2luZGV4ICVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpZmV0aW1lICVsdSBwcmVmZXJlbmNlICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3N0ciwgaWZfaW5kZXgsIGxpZmV0aW1lLCBwcmVmZXJlbmNlKSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGVudHJ5KSB7CisgICAgICAgICAgICAgICAgICAgIHJjID0gLTM7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGVudHJ5LT5uc19kcl9pbmRleCAgICA9ICsraWR4X29mZnNldDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZHJfYWRkcmVzc3R5cGUgPSBhZGRyZXNzdHlwZTsKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZHJfYWRkcmVzc19sZW4gPSBhZGRyZXNzX2xlbjsKKyAgICAgICAgICAgICAgICBtZW1jcHkoZW50cnktPmRyX2FkZHJlc3MsIGFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfQlVGX1NJWkUpOworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9pZl9pbmRleCAgICA9IGlmX2luZGV4OworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9saWZldGltZSAgICA9IGxpZmV0aW1lOworICAgICAgICAgICAgICAgIGVudHJ5LT5kcl9wcmVmZXJlbmNlICA9IHByZWZlcmVuY2U7CisKKyAgICAgICAgICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmFycDpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3Igd2l0aCBkZWZhdWx0cm91dGVyX2VudHJ5OiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnNlcnQgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworbmV4dF9ubG1zZ2hkcjoKKyAgICAgICAgICAgIG5sbWhwID0gTkxNU0dfTkVYVChubG1ocCwgY291bnQpOworICAgICAgICB9IC8qIHdoaWxlIE5MTVNHX09LKG5sbWhwKSAqLworCisgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICBicmVhazsKKworICAgIH0gd2hpbGUgKCFlbmRfb2ZfbWVzc2FnZSk7CisKKyAgICBjbG9zZShubHNrKTsKKyAgICByZXR1cm4gcmM7CisjZW5kaWYgIC8qIEhBVkVfTElOVVhfUlRORVRMSU5LX0ggKi8KK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAppbmRleCBjNjZmMTYxLi45Y2Y4MTgxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCkBAIC0yMCwxMSArMjAsOSBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24pCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eCkKKyNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3Nfc29sYXJpczIpCiAjZWxzZQotLyoKLSAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQotICogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCi0gKi8KLWNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MtdW5rbm93bi1hcmNoKQorY29uZmlnX2Vycm9yKHRoZSBpcGFkZHJlc3MgZGF0YSBhY2Nlc3MgbGlicmFyeSBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgZW52aXJvbm1lbnQuKQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2NvbW1vbi5jCmluZGV4IDMxNzY1NGUuLmFjNjJjNDAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfY29tbW9uLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19jb21tb24uYwpAQCAtMjExLDcgKzIxMSw3IEBACiAgICAgICogbWFrZSBzdXJlIGludGVyZmFjZSBhbmQgaWZJbmRleCBtYXRjaCB1cAogICAgICAqLwogICAgIGlmIChOVUxMID09IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9uYW1lX2ZpbmQoZW50cnktPmlmX2luZGV4KSkgewotICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6aXBhZGRyZXNzOnNldCIsICJjYW50IGZpbmQgbmFtZSBmb3IgaW5kZXggJWRcbiIsCisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6c2V0IiwgImNhbnQgZmluZCBuYW1lIGZvciBpbmRleCAlbGRcbiIsCiAgICAgICAgICAgICAgICAgICBlbnRyeS0+aWZfaW5kZXgpKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KQEAgLTMwNCw2ICszMDQsMjcgQEAKICAgICAgICAgKytjaGFuZ2VkOwogICAgICAgICBsaHMtPmlhX29yaWdpbiA9IHJocy0+aWFfb3JpZ2luOwogICAgIH0KKyAgIAorICAgIGlmIChsaHMtPmlhX29ubGlua19mbGFnICE9IHJocy0+aWFfb25saW5rX2ZsYWcpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmlhX29ubGlua19mbGFnID0gcmhzLT5pYV9vbmxpbmtfZmxhZzsKKyAgICB9CisKKyAgICBpZiAobGhzLT5pYV9hdXRvbm9tb3VzX2ZsYWcgIT0gcmhzLT5pYV9hdXRvbm9tb3VzX2ZsYWcpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmlhX2F1dG9ub21vdXNfZmxhZyA9IHJocy0+aWFfYXV0b25vbW91c19mbGFnOworICAgIH0KKworICAgIGlmIChsaHMtPmlhX3ByZWZlcmVkX2xpZmV0aW1lICE9IHJocy0+aWFfcHJlZmVyZWRfbGlmZXRpbWUpIHsKKyAgICAgICAgKytjaGFuZ2VkOworICAgICAgICBsaHMtPmlhX3ByZWZlcmVkX2xpZmV0aW1lID0gcmhzLT5pYV9wcmVmZXJlZF9saWZldGltZTsKKyAgICB9CisKKyAgICBpZiAobGhzLT5pYV92YWxpZF9saWZldGltZSAhPSByaHMtPmlhX3ZhbGlkX2xpZmV0aW1lKSB7CisgICAgICAgICsrY2hhbmdlZDsKKyAgICAgICAgbGhzLT5pYV92YWxpZF9saWZldGltZSA9IHJocy0+aWFfdmFsaWRfbGlmZXRpbWU7CisgICAgfQorCiAKICAgICByZXR1cm4gY2hhbmdlZDsKIH0KQEAgLTQzMSwzICs0NTIsNDkgQEAKICAgICAgKi8KICAgICByZXR1cm4gbWVtY21wKGxoLT5pYV9hZGRyZXNzLCByaC0+aWFfYWRkcmVzcywgbGgtPmlhX2FkZHJlc3NfbGVuKTsKIH0KKworaW50CituZXRzbm1wX2lwYWRkcmVzc19mbGFnc19jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2UHJlZmVycmVkTGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4QWR2VmFsaWRMaWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEF1dG9ub21vdXNGbGFnLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppYV9wcmVmZXJlZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppYV92YWxpZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICppYV9vbmxpbmtfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICppYV9hdXRvbm9tb3VzX2ZsYWcpCit7CisKKyAgICAvKkNvcHkgYWxsIHRoZSBmbGFncyovCisgICAgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lID0gKmlhX3ByZWZlcmVkX2xpZmV0aW1lOworICAgICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lID0gKmlhX3ZhbGlkX2xpZmV0aW1lOworICAgICppcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnID0gKmlhX29ubGlua19mbGFnOworICAgICppcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyA9ICppYV9hdXRvbm9tb3VzX2ZsYWc7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9pcGFkZHJlc3NfcHJlZml4X29yaWdpbl9jb3B5KHVfbG9uZyAqaXBBZGRyZXNzUHJlZml4T3JpZ2luLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciBpYV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcEFkZHJlc3NBZGRyVHlwZSkKK3sKKyAgICBpZihpcEFkZHJlc3NBZGRyVHlwZSA9PSBJTkVUQUREUkVTU1RZUEVfSVBWNCl7CisgICAgICAgaWYoaWFfb3JpZ2luID09IDYpIC8qUmFuZG9tKi8KKyAgICAgICAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbikgPSAzIC8qSVBBRERSRVNTUFJFRklYT1JJR0lOVENfV0VMTEtOT1dOKi87CisgICAgICAgZWxzZQorICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luKSA9IGlhX29yaWdpbjsKKyAgICB9IGVsc2UgeworICAgICAgIGlmKGlhX29yaWdpbiA9PSA1KSB7IC8qTGluayBMYXllciovCisgICAgICAgICAgaWYoIWZsYWdzKSAvKkdsb2JhbCBhZGRyZXNzIGFzc2lnbmVkIGJ5IHJvdXRlciBhZHYqLworICAgICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luKSA9IDUgLypJUEFERFJFU1NQUkVGSVhPUklHSU5UQ19ST1VURVJBRFYqLzsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgKCppcEFkZHJlc3NQcmVmaXhPcmlnaW4pID0gMyAvKklQQUREUkVTU1BSRUZJWE9SSUdJTlRDX1dFTExLTk9XTiovOworICAgICAgIH0KKyAgICAgICBlbHNlIGlmKGlhX29yaWdpbiA9PSA2KSAvKlJhbmRvbSovCisgICAgICAgICAgKCppcEFkZHJlc3NQcmVmaXhPcmlnaW4pID0gNSAvKklQQUREUkVTU1BSRUZJWE9SSUdJTlRDX1JPVVRFUkFEViovOworICAgICAgIGVsc2UKKyAgICAgICAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbikgPSBpYV9vcmlnaW47CisgICAgfQorICAgIHJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmMKaW5kZXggYjE5Nzg2ZC4uNTdmYjliYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuYwpAQCAtMTM1LDcgKzEzNSw4IEBACiAgICAgc3RydWN0IGlmcmVxICAgKmlmcnA7CiAgICAgc3RydWN0IHNvY2thZGRyIHNhdmVfYWRkcjsKICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gKiBzaTsKLSAgICBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnk7CisgICAgc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvIGFkZHJfaW5mbzsKKyAgICBpbl9hZGRyX3QgICAgICAgaXB2YWw7CiAgICAgX2lvY3RsX2V4dHJhcyAgICAgICAgICAgKmV4dHJhczsKIAogICAgIGlmICgoc2QgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCkpIDwgMCkgewpAQCAtMTU0LDkgKzE1NSwxOCBAQAogCiAgICAgaWZycCA9IGlmYy5pZmNfcmVxOwogICAgIGZvcihpPTA7IGkgPCBpbnRlcmZhY2VzOyArK2ksICsraWZycCkgeworICAgICAgICBuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnksICpiY2FzdGVudHJ5ID0gTlVMTDsKIAogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLAogICAgICAgICAgICAgICAgICAgICAiIGludGVyZmFjZSAlZCwgJXNcbiIsIGksIGlmcnAtPmlmcl9uYW1lKSk7CisKKyAgICAgICAgaWYgKEFGX0lORVQgIT0gaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiBza2lwcGluZyAlczsgbm9uIEFGX0lORVQgZmFtaWx5ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaWZycC0+aWZyX25hbWUsIGlmcnAtPmlmcl9hZGRyLnNhX2ZhbWlseSkpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKwogICAgICAgICAvKgogICAgICAgICAgKi8KICAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfY3JlYXRlKCk7CkBAIC0xODEsOSArMTkxLDkgQEAKICAgICAgICAgLyoKICAgICAgICAgICogc2V0IGluZGV4ZXMKICAgICAgICAgICovCi0gICAgICAgIG5ldHNubXBfYXNzZXJ0KEFGX0lORVQgPT0gaWZycC0+aWZyX2FkZHIuc2FfZmFtaWx5KTsKICAgICAgICAgc2kgPSAoc3RydWN0IHNvY2thZGRyX2luICopICZpZnJwLT5pZnJfYWRkcjsKICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKHNpLT5zaW5fYWRkci5zX2FkZHIpOworICAgICAgICBpcHZhbCA9IHNpLT5zaW5fYWRkci5zX2FkZHI7CiAgICAgICAgIG1lbWNweShlbnRyeS0+aWFfYWRkcmVzcywgJnNpLT5zaW5fYWRkci5zX2FkZHIsCiAgICAgICAgICAgICAgICBlbnRyeS0+aWFfYWRkcmVzc19sZW4pOwogCkBAIC0yMjAsNiArMjMwLDI2IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKgorICAgICAgICAgKiBnZXQgYnJvYWRjYXN0CisgICAgICAgICAqLworICAgICAgICBtZW1zZXQoJmFkZHJfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbykpOworI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisgICAgICAgIGFkZHJfaW5mbyA9IG5ldHNubXBfYWNjZXNzX290aGVyX2luZm9fZ2V0KGVudHJ5LT5pZl9pbmRleCwgQUZfSU5FVCk7CisgICAgICAgIGlmKGFkZHJfaW5mby5iY2FzdGZsZykgeworICAgICAgICAgICBiY2FzdGVudHJ5ID0gbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2NyZWF0ZSgpOworICAgICAgICAgICBpZihOVUxMID09IGJjYXN0ZW50cnkpIHsKKyAgICAgICAgICAgICAgcmMgPSAtMzsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgYmNhc3RlbnRyeS0+aWZfaW5kZXggPSBlbnRyeS0+aWZfaW5kZXg7CisgICAgICAgICAgIGJjYXN0ZW50cnktPm5zX2lhX2luZGV4ID0gKytpZHhfb2Zmc2V0OworICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IHNpemVvZihhZGRyX2luZm8uYWRkcik7CisgICAgICAgICAgIG1lbWNweShiY2FzdGVudHJ5LT5pYV9hZGRyZXNzLCAmYWRkcl9pbmZvLmFkZHIsCisgICAgICAgICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV9hZGRyZXNzX2xlbik7CisgICAgICAgIH0KKyNlbmRpZgorCisgICAgICAgIC8qCiAgICAgICAgICAqIGdldCBuZXRtYXNrCiAgICAgICAgICAqLwogICAgICAgICBpZnJwLT5pZnJfYWRkciA9IHNhdmVfYWRkcjsKQEAgLTIzMyw2ICsyNjMsOSBAQAogICAgICAgICBzaSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJmlmcnAtPmlmcl9hZGRyOwogICAgICAgICBlbnRyeS0+aWFfcHJlZml4X2xlbiA9CiAgICAgICAgICAgICBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oc2ktPnNpbl9hZGRyLnNfYWRkcik7CisgICAgICAgIGlmKGJjYXN0ZW50cnkpCisgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX3ByZWZpeF9sZW4gPSBlbnRyeS0+aWFfcHJlZml4X2xlbjsKKwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGdldCBmbGFncwpAQCAtMjQ2LDcgKzI3OSwxMiBAQAogICAgICAgICB9CiAgICAgICAgIGV4dHJhcy0+ZmxhZ3MgPSBpZnJwLT5pZnJfZmxhZ3M7CiAKLSAgICAgICAgZW50cnktPmlhX3R5cGUgPSBJUEFERFJFU1NUWVBFX1VOSUNBU1Q7IC8qIGFzc3VtZSB1bmljYXN0PyAqLworICAgICAgICBpZihiY2FzdGVudHJ5KQorICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV90eXBlID0gSVBBRERSRVNTVFlQRV9CUk9BRENBU1Q7CisgICAgICAgIGlmKGFkZHJfaW5mby5hbnljYXN0ZmxnKQorICAgICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfQU5ZQ0FTVDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfVU5JQ0FTVDsKIAogICAgICAgICAvKiogZW50cnktPmlhX3ByZWZpeF9vaWQgPyAqLwogCkBAIC0yNTYsMTIgKzI5NCwyMyBAQAogICAgICAgICAgKiAgIGFsd2F5cyBwcmVmZXJyZWQoMSkuCiAgICAgICAgICAqLwogICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gSVBBRERSRVNTU1RBVFVTVENfUFJFRkVSUkVEOworICAgICAgICBpZihiY2FzdGVudHJ5KQorICAgICAgICAgICBiY2FzdGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7CiAKICAgICAgICAgLyoKICAgICAgICAgICogY2FuIHdlIGZpZ3VyZSBvdXQgaWYgYW4gYWRkcmVzcyBpcyBmcm9tIERIQ1A/CiAgICAgICAgICAqIHVzZSBtYW51YWwgdW50aWwgdGhlbi4uLgogICAgICAgICAgKi8KLSAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKyAgICAgICAgaWYoSVNfQVBJUEEoaXB2YWwpKSB7CisgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19SQU5ET007CisgICAgICAgICAgIGlmKGJjYXN0ZW50cnkpCisgICAgICAgICAgICAgIGJjYXN0ZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX1JBTkRPTTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKyAgICAgICAgICAgaWYoYmNhc3RlbnRyeSkKKyAgICAgICAgICAgICAgYmNhc3RlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTUFOVUFMOworICAgICAgICB9CiAKICAgICAgICAgREVCVUdJRigiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiKSB7CiAgICAgICAgICAgICBERUJVR01TR1RfTkMoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCkBAIC0yNzksOCArMzI4LDE3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBlbnRyeSB0byBjb250YWluZXIKICAgICAgICAgICovCi0gICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpIDwgMCkKLSAgICAgICAgeworICAgICAgICBpZihiY2FzdGVudHJ5KXsKKyAgICAgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgYmNhc3RlbnRyeSkgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwiZXJyb3Igd2l0aCBpcGFkZHJlc3NfZW50cnk6IGluc2VydCBicm9hZGNhc3QgZW50cnkgaW50byBjb250YWluZXIgZmFpbGVkLlxuIikpOworICAgICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGJjYXN0ZW50cnkpOworICAgICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGVudHJ5KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJjYXN0ZW50cnkgPSBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSkgPCAwKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCJlcnJvciB3aXRoIGlwYWRkcmVzc19lbnRyeTogaW5zZXJ0IGludG8gY29udGFpbmVyIGZhaWxlZC5cbiIpKTsKICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9mcmVlKGVudHJ5KTsKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzY4LDEwICs0MjYsMTMgQEAKICAgICAgICAgZm9yKGs9MDtrPGo7KytrKQogICAgICAgICAgICAgaWYgKGFsaWFzX2xpc3Rba10gPT0gaSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgaWYgKGsgPT0gaikKKyAgICAgICAgaWYgKGsgPT0gaikgeworICAgICAgICAgICAgZnJlZShhbGlhc19saXN0KTsKICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICB9CiAgICAgfQogCisgICAgZnJlZShhbGlhc19saXN0KTsKICAgICByZXR1cm4gaW50ZXJmYWNlcyArIDE7CiB9CiAKQEAgLTU5MSw0ICs2NTIsMyBAQAogICAgIGlmKHVua25vd24pCiAgICAgICAgIERFQlVHTVNHVF9OQygoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwiICB1bmtub3duIDB4JXhcbiIsIHVua25vd24pKTsKIH0KLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19pb2N0bC5oCmluZGV4IGE3YTBlYTIuLmZjNmU3NzEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfaW9jdGwuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2lvY3RsLmgKQEAgLTIsNiArMiwxNyBAQAogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKIAorLyoKKyAqIHN0cnVjdCBmb3IgbmV0bGluayBleHRyYXMKKyAqLworc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvIHsKKyAgICBpbnQgYmNhc3RmbGc7CisgICAgaW50IGFueWNhc3RmbGc7CisgICAgaW5fYWRkcl90IGFkZHI7Cit9OworIAorI2RlZmluZSBJU19BUElQQShhKSAgKCgoaW5fYWRkcl90KShhIDw8IDE2KSkgPT0gMHhGRUE5MDAwMCkKKwogaW50CiBfbmV0c25tcF9pb2N0bF9pcGFkZHJlc3NfY29udGFpbmVyX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkeF9vZmZzZXQpOwpAQCAtMTMsNiArMjQsOCBAQAogaW50CiBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfaW9jdGxfZ2V0X2ludGVyZmFjZV9jb3VudChpbnQgc2QsIHN0cnVjdCBpZmNvbmYgKiBpZmMpOwogCitzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8KK25ldHNubXBfYWNjZXNzX290aGVyX2luZm9fZ2V0KGludCBpbmRleCwgaW50IGZhbWlseSk7CiAKIC8qCiAgKiBzdHJ1Y3QgaW9jdGwgZm9yIGFyY2hfZGF0YQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19saW51eC5jCmluZGV4IGU3OGM4YmQuLjhiMzRlODYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcGFkZHJlc3NfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX2xpbnV4LmMKQEAgLTEyLDYgKzEyLDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KIAogI2luY2x1ZGUgImlwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9jb25zdGFudHMuaCIKKyNpbmNsdWRlICJpcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgiCisjaW5jbHVkZSAibWliZ3JvdXAvdXRpbF9mdW5jcy5oIgogCiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KQEAgLTE5LDEyICsyMSwyNyBAQAogI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCiAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KICNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNpZiBkZWZpbmVkKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgogI2luY2x1ZGUgPGxpbnV4L3J0bmV0bGluay5oPgorI2lmZGVmIFJUTUdSUF9JUFY2X1BSRUZJWAorI2RlZmluZSBTVVBQT1JUX1BSRUZJWF9GTEFHUyAxCisjZW5kaWYgLyogUlRNR1JQX0lQVjZfUFJFRklYICovCisjZW5kaWYgLyogSEFWRV9MSU5VWF9SVE5FVExJTktfSCAqLwogI2VuZGlmCiAKICNpbmNsdWRlICJpcGFkZHJlc3NfaW9jdGwuaCIKLQorI2lmZGVmIFNVUFBPUlRfUFJFRklYX0ZMQUdTCitleHRlcm4gcHJlZml4X2NieCAqcHJlZml4X2hlYWRfbGlzdDsKKyNlbmRpZgogaW50IF9sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KTsKKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICitpbnQKK25ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19leHRyYV9wcmVmaXhfaW5mbyhpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICpwcmVmZXJlZGx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVsb25nICp2YWxpZGx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmFkZHIpOworI2VuZGlmCiAKIC8qCiAgKiBpbml0aWFsaXplIGFyY2ggc3BlY2lmaWMgc3RvcmFnZQpAQCAtMTc5LDYgKzE5NiwxMiBAQAogaW50CiBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCkKIHsKKyNpZm5kZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgImNhbm5vdCBnZXQgaXAgYWRkcmVzcyBpbmZvcm1hdGlvbiIKKyAgICAgICAgICAgICAgICAiYXMgbmV0bGluayBzb2NrZXQgaXMgbm90IGF2YWlsYWJsZVxuIikpOworICAgIHJldHVybiAtMTsKKyNlbHNlCiAgICAgRklMRSAgICAgICAgICAgKmluOwogICAgIGNoYXIgICAgICAgICAgICBsaW5lWzgwXSwgYWRkcls0MF07CiAgICAgY2hhciAgICAgICAgICAgIGlmX25hbWVbSUZOQU1TSVorMV07LyogKzEgZm9yICdcMCcgYmVjYXVzZSBvZiB0aGUgdWdseSBzc2NhbmYgYmVsb3cgKi8gCkBAIC0xODcsMjQgKzIxMCwxNSBAQAogICAgIHNpemVfdCAgICAgICAgICBpbl9sZW4sIG91dF9sZW47CiAgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5OwogICAgIF9pb2N0bF9leHRyYXMgICAgICAgICAgICpleHRyYXM7Ci0gICAgc3RhdGljIGludCAgICAgIGxvZ19vcGVuX2VyciA9IDE7CisgICAgc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvIGFkZHJfaW5mbzsKICAgICAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CiAKICNkZWZpbmUgUFJPQ0ZJTEUgIi9wcm9jL25ldC9pZl9pbmV0NiIKICAgICBpZiAoIShpbiA9IGZvcGVuKFBST0NGSUxFLCAiciIpKSkgewotICAgICAgICBpZiAoMSA9PSBsb2dfb3Blbl9lcnIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIik7Ci0gICAgICAgICAgICBsb2dfb3Blbl9lcnIgPSAwOwotICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotICAgIC8qCi0gICAgICogaWYgd2UgaGFkbid0IGJlZW4gYWJsZSB0byBvcGVuIGZpbGUgYW5kIHR1cm5lZCBvZiBlcnIgbG9nZ2luZywKLSAgICAgKiB0dXJuIGl0IGJhY2sgb24gbm93IHRoYXQgd2Ugb3BlbmVkIHRoZSBmaWxlLgotICAgICAqLwotICAgIGlmICgwID09IGxvZ19vcGVuX2VycikKLSAgICAgICAgbG9nX29wZW5fZXJyID0gMTsKIAogICAgIC8qCiAgICAgICogYWRkcmVzcyBpbmRleCBwcmVmaXhfbGVuIHNjb3BlIHN0YXR1cyBpZl9uYW1lCkBAIC0yNDEsNiArMjU1LDcgQEAKICAgICAgICAgaW5fbGVuID0gZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKGVudHJ5LT5pYV9hZGRyZXNzKTsKICAgICAgICAgbmV0c25tcF9hc3NlcnQoMTYgPT0gaW5fbGVuKTsKICAgICAgICAgb3V0X2xlbiA9IDA7CisgICAgICAgIGVudHJ5LT5mbGFncyA9IGZsYWdzOwogICAgICAgICBidWYgPSBlbnRyeS0+aWFfYWRkcmVzczsKICAgICAgICAgaWYoMSAhPSBuZXRzbm1wX2hleF90b19iaW5hcnkoJmJ1ZiwgJmluX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dF9sZW4sIDAsIGFkZHIsICI6IikpIHsKQEAgLTI2OCw2ICsyODMsOCBAQAogICAgICAgICAgKiBldmVyeSB0aW1lIGl0IGlzIGNhbGxlZC4KICAgICAgICAgICovCiAgICAgICAgIGVudHJ5LT5pZl9pbmRleCA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKGlmX25hbWUpOworICAgICAgICBtZW1zZXQoJmFkZHJfaW5mbywgMCwgc2l6ZW9mKHN0cnVjdCBhZGRyZXNzX2ZsYWdfaW5mbykpOworICAgICAgICBhZGRyX2luZm8gPSBuZXRzbm1wX2FjY2Vzc19vdGhlcl9pbmZvX2dldChlbnRyeS0+aWZfaW5kZXgsIEFGX0lORVQ2KTsKIAogICAgICAgICAvKgogICAgICAgICAgICNkZWZpbmUgSVBBRERSRVNTU1RBVFVTVENfUFJFRkVSUkVEICAxCkBAIC0yNzgsOCArMjk1LDEyIEBACiAgICAgICAgICAgI2RlZmluZSBJUEFERFJFU1NTVEFUVVNUQ19URU5UQVRJVkUgIDYKICAgICAgICAgICAjZGVmaW5lIElQQUREUkVTU1NUQVRVU1RDX0RVUExJQ0FURSAgNwogICAgICAgICAqLwotICAgICAgICBpZihmbGFncyAmIElGQV9GX1BFUk1BTkVOVCkKKyAgICAgICAgaWYoKGZsYWdzICYgSUZBX0ZfUEVSTUFORU5UKSB8fCAoIWZsYWdzKSkKICAgICAgICAgICAgIGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7IC8qID8/ICovCisjaWZkZWYgSUZBX0ZfVEVNUE9SQVJZCisgICAgICAgIGVsc2UgaWYoZmxhZ3MgJiBJRkFfRl9URU1QT1JBUlkpCisgICAgICAgICAgICBlbnRyeS0+aWFfc3RhdHVzID0gSVBBRERSRVNTU1RBVFVTVENfUFJFRkVSUkVEOyAvKiA/PyAqLworI2VuZGlmCiAgICAgICAgIGVsc2UgaWYoZmxhZ3MgJiBJRkFfRl9ERVBSRUNBVEVEKQogICAgICAgICAgICAgZW50cnktPmlhX3N0YXR1cyA9IElQQUREUkVTU1NUQVRVU1RDX0RFUFJFQ0FURUQ7CiAgICAgICAgIGVsc2UgaWYoZmxhZ3MgJiBJRkFfRl9URU5UQVRJVkUpCkBAIC0yOTQsNyArMzE1LDcgQEAKICAgICAgICAgICogaWYgaXQncyBub3QgbXVsdGksIGl0IG11c3QgYmUgdW5pLgogICAgICAgICAgKiAgKGFuIGlwdjYgYWRkcmVzcyBpcyBuZXZlciBicm9hZGNhc3QpCiAgICAgICAgICAqLwotICAgICAgICBpZiAoSU42X0lTX0FERFJfTVVMVElDQVNUKGVudHJ5LT5pYV9hZGRyZXNzKSkKKyAgICAgICAgaWYoYWRkcl9pbmZvLmFueWNhc3RmbGcpCiAgICAgICAgICAgICBlbnRyeS0+aWFfdHlwZSA9IElQQUREUkVTU1RZUEVfQU5ZQ0FTVDsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZW50cnktPmlhX3R5cGUgPSBJUEFERFJFU1NUWVBFX1VOSUNBU1Q7CkBAIC0zMTQsMTMgKzMzNSw0OCBAQAogICAgICAgICAgKgogICAgICAgICAgKiBhcmUgJ2xvY2FsJyBhZGRyZXNzIGFzc2lnbmVkIGJ5IGxpbmsgbGF5ZXI/PwogICAgICAgICAgKi8KLSAgICAgICAgaWYgKElONl9JU19BRERSX0xJTktMT0NBTChlbnRyeS0+aWFfYWRkcmVzcykgfHwKLSAgICAgICAgICAgIElONl9JU19BRERSX1NJVEVMT0NBTChlbnRyeS0+aWFfYWRkcmVzcykpCi0gICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTUFOVUFMOworICAgICAgICAgaWYgKCFmbGFncykKKyAgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSOworI2lmZGVmIElGQV9GX1RFTVBPUkFSWQorICAgICAgICAgZWxzZSBpZiAoZmxhZ3MgJiBJRkFfRl9URU1QT1JBUlkpCisgICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX1JBTkRPTTsKKyNlbmRpZgorICAgICAgICAgZWxzZSBpZiAoSU42X0lTX0FERFJfTElOS0xPQ0FMKGVudHJ5LT5pYV9hZGRyZXNzKSkKKyAgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSOworICAgICAgICAgZWxzZQorICAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19NQU5VQUw7CisKKyAgICAgICAgIGlmKGVudHJ5LT5pYV9vcmlnaW4gPT0gSVBBRERSRVNTT1JJR0lOVENfTElOS0xBWUVSKQorICAgICAgICAgICAgZW50cnktPmlhX3N0b3JhZ2V0eXBlID0gU1RPUkFHRVRZUEVfUEVSTUFORU5UOwogCiAgICAgICAgIC8qIHh4eC1ya3M6IHdoYXQgY2FuIHdlIGRvIHdpdGggc2NvcGU/ICovCisjaWZkZWYgSEFWRV9MSU5VWF9SVE5FVExJTktfSAorICAgICAgICBpZihuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZXh0cmFfcHJlZml4X2luZm8oZW50cnktPmlmX2luZGV4LCAmZW50cnktPmlhX3ByZWZlcmVkX2xpZmV0aW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAsJmVudHJ5LT5pYV92YWxpZF9saWZldGltZSwgYWRkcikgPCAwKXsKKyAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgInVuYWJsZSB0byBmZXRjaCBleHRyYSBwcmVmaXggaW5mb1xuIikpOworICAgICAgICB9CisjZWxzZQorICAgICAgICBlbnRyeS0+aWFfcHJlZmVyZWRfbGlmZXRpbWUgPSAwOworICAgICAgICBlbnRyeS0+aWFfdmFsaWRfbGlmZXRpbWUgPSAwOworI2VuZGlmCisjaWZkZWYgU1VQUE9SVF9QUkVGSVhfRkxBR1MKKyAgICAgICAgeworICAgICAgICBwcmVmaXhfY2J4ICAgICAgcHJlZml4X3ZhbDsKKyAgICAgICAgbWVtc2V0KCZwcmVmaXhfdmFsLCAwLCBzaXplb2YocHJlZml4X2NieCkpOworICAgICAgICBpZihuZXRfc25tcF9maW5kX3ByZWZpeF9pbmZvKCZwcmVmaXhfaGVhZF9saXN0LCBhZGRyLCAmcHJlZml4X3ZhbCkgPCAwKSB7CisgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJ1bmFibGUgdG8gZmluZCBpbmZvXG4iKSk7CisgICAgICAgICAgIGVudHJ5LT5pYV9vbmxpbmtfZmxhZyA9IDE7ICAvKlNldCBieSBkZWZhdWx0IGFzIHRydWUqLworICAgICAgICAgICBlbnRyeS0+aWFfYXV0b25vbW91c19mbGFnID0gMjsgLypTZXQgYnkgZGVmYXVsdCBhcyBmYWxzZSovCisKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgZW50cnktPmlhX29ubGlua19mbGFnID0gcHJlZml4X3ZhbC5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOyAKKyAgICAgICAgICAgZW50cnktPmlhX2F1dG9ub21vdXNfZmxhZyA9IHByZWZpeF92YWwuaXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWc7CisgICAgICAgIH0KKyAgICAgICAgfQorI2Vsc2UKKyAgICAgICAgZW50cnktPmlhX29ubGlua19mbGFnID0gMTsgIC8qU2V0IGJ5IGRlZmF1bHQgYXMgdHJ1ZSovCisgICAgICAgIGVudHJ5LT5pYV9hdXRvbm9tb3VzX2ZsYWcgPSAyOyAvKlNldCBieSBkZWZhdWx0IGFzIGZhbHNlKi8KKyNlbmRpZgogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBlbnRyeSB0byBjb250YWluZXIKQEAgLTMzOSw0ICszOTUsMTkwIEBACiAKICAgICByZXR1cm4gaWR4X29mZnNldDsKIH0KKworc3RydWN0IGFkZHJlc3NfZmxhZ19pbmZvCituZXRzbm1wX2FjY2Vzc19vdGhlcl9pbmZvX2dldChpbnQgaW5kZXgsIGludCBmYW1pbHkpCit7CisgICBzdHJ1Y3QgeworICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbjsKKyAgICAgICAgICAgc3RydWN0IGlmYWRkcm1zZyByOworICAgICAgICAgICBjaGFyICAgYnVmWzEwMjRdOworICAgfSByZXE7CisgICBzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8gYWRkcjsKKyAgIHN0cnVjdCBydGF0dHIgICAgKnJ0YTsKKyAgIGludCAgICBzdGF0dXM7CisgICBjaGFyICAgYnVmWzE2Mzg0XTsKKyAgIHN0cnVjdCBubG1zZ2hkciAgKm5sbXA7CisgICBzdHJ1Y3QgaWZhZGRybXNnICpydG1wOworICAgc3RydWN0IHJ0YXR0ciAgICAqcnRhdHA7CisgICBpbnQgICAgcnRhdHRybGVuOworICAgaW50ICAgIHNkOworCisgICBtZW1zZXQoJmFkZHIsIDAsIHNpemVvZihzdHJ1Y3QgYWRkcmVzc19mbGFnX2luZm8pKTsKKyAgIHNkID0gc29ja2V0KFBGX05FVExJTkssIFNPQ0tfREdSQU0sIE5FVExJTktfUk9VVEUpOworICAgaWYoc2QgPCAwKSB7CisgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IG9wZW4gbmV0bGluayBzb2NrZXRcbiIpOworICAgICAgcmV0dXJuIGFkZHI7CisgICB9CisKKyAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7CisgICByZXEubi5ubG1zZ19sZW4gPSBOTE1TR19MRU5HVEgoc2l6ZW9mKHN0cnVjdCBpZmFkZHJtc2cpKTsKKyAgIHJlcS5uLm5sbXNnX2ZsYWdzID0gTkxNX0ZfUkVRVUVTVCB8IE5MTV9GX1JPT1Q7CisgICByZXEubi5ubG1zZ190eXBlID0gUlRNX0dFVEFERFI7CisgICByZXEuci5pZmFfZmFtaWx5ID0gZmFtaWx5OworICAgcnRhID0gKHN0cnVjdCBydGF0dHIgKikoKChjaGFyICopJnJlcSkgKyBOTE1TR19BTElHTihyZXEubi5ubG1zZ19sZW4pKTsKKyAgIGlmKGZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCg0KTsKKyAgIGVsc2UKKyAgICAgIHJ0YS0+cnRhX2xlbiA9IFJUQV9MRU5HVEgoMTYpOworCisgICAgc3RhdHVzID0gc2VuZChzZCwgJnJlcSwgcmVxLm4ubmxtc2dfbGVuLCAwKTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IHNlbmQgbmV0bGluayByZXF1ZXN0XG4iKTsKKyAgICAgICAgcmV0dXJuIGFkZHI7CisgICAgfQorCisgICAgc3RhdHVzID0gcmVjdihzZCwgYnVmLCBzaXplb2YoYnVmKSwgMCk7CisgICAgaWYgKHN0YXR1cyA8IDApIHsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJjb3VsZCBub3QgcmVjaWV2ZSBuZXRsaW5rIHJlcXVlc3RcbiIpOworICAgICAgICByZXR1cm4gYWRkcjsKKyAgICB9CisKKyAgICBpZihzdGF0dXMgPT0gMCkgeworICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAibm90aGluZyB0byByZWFkXG4iKTsKKyAgICAgICByZXR1cm4gYWRkcjsKKyAgICB9CisKKyAgICBmb3IobmxtcCA9IChzdHJ1Y3Qgbmxtc2doZHIgKilidWY7IHN0YXR1cyA+IHNpemVvZigqbmxtcCk7KSB7CisgICAgICAgIGludCBsZW4gPSBubG1wLT5ubG1zZ19sZW47CisgICAgICAgIGludCByZXFfbGVuID0gbGVuIC0gc2l6ZW9mKCpubG1wKTsKKworICAgICAgICBpZiAocmVxX2xlbiA8IDAgfHwgbGVuID4gc3RhdHVzKSB7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImludmFsaWQgbmV0bGluayBtZXNzYWdlXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBhZGRyOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFOTE1TR19PSyhubG1wLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImludmFsaWQgTkxNU0cgbWVzc2FnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gYWRkcjsKKyAgICAgICAgfQorICAgICAgICBydG1wID0gKHN0cnVjdCBpZmFkZHJtc2cgKilOTE1TR19EQVRBKG5sbXApOworICAgICAgICBydGF0cCA9IChzdHJ1Y3QgcnRhdHRyICopSUZBX1JUQShydG1wKTsKKyAgICAgICAgcnRhdHRybGVuID0gSUZBX1BBWUxPQUQobmxtcCk7CisgICAgICAgIGlmKGluZGV4ID09IHJ0bXAtPmlmYV9pbmRleCl7CisgICAgICAgICAgIGZvciAoOyBSVEFfT0socnRhdHAsIHJ0YXR0cmxlbik7IHJ0YXRwID0gUlRBX05FWFQocnRhdHAsIHJ0YXR0cmxlbikpIHsKKyAgICAgICAgICAgICAgICBpZihydGF0cC0+cnRhX3R5cGUgPT0gSUZBX0JST0FEQ0FTVCl7CisgICAgICAgICAgICAgICAgICAgYWRkci5hZGRyID0gKChzdHJ1Y3QgaW5fYWRkciAqKVJUQV9EQVRBKHJ0YXRwKSktPnNfYWRkcjsKKyAgICAgICAgICAgICAgICAgICBhZGRyLmJjYXN0ZmxnID0gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYocnRhdHAtPnJ0YV90eXBlID09IElGQV9BTllDQVNUKXsKKyAgICAgICAgICAgICAgICAgICBhZGRyLmFkZHIgPSAoKHN0cnVjdCBpbl9hZGRyICopUlRBX0RBVEEocnRhdHApKS0+c19hZGRyOworICAgICAgICAgICAgICAgICAgIGFkZHIuYW55Y2FzdGZsZyA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7CisgICAgICAgIG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyKikoKGNoYXIqKW5sbXAgKyBOTE1TR19BTElHTihsZW4pKTsKKyAgICB9CisgICAgY2xvc2Uoc2QpOworICAgIHJldHVybiBhZGRyOwogI2VuZGlmCit9CisKKyNpZmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICitpbnQKK25ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19leHRyYV9wcmVmaXhfaW5mbyhpbnQgaW5kZXgsIHVfbG9uZyAqcHJlZmVyZWRsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bG9uZyAqdmFsaWRsdCwgY2hhciAqYWRkcikKK3sKKworICAgIHN0cnVjdCB7CisgICAgICAgICAgICBzdHJ1Y3Qgbmxtc2doZHIgbmxoZHI7CisgICAgICAgICAgICBzdHJ1Y3QgaWZhZGRybXNnIGlmYWNlaW5mbzsKKyAgICAgICAgICAgIGNoYXIgICBidWZbMTAyNF07CisgICAgfSByZXE7CisKKyAgICBzdHJ1Y3QgcnRhdHRyICAgICAgICAqcnRhOworICAgIGludCAgICAgICAgICAgICAgICAgIHN0YXR1czsKKyAgICBjaGFyICAgICAgICAgICAgICAgICBidWZbMTYzODRdOworICAgIGNoYXIgICAgICAgICAgICAgICAgIHRtcGFkZHJbNDBdOworICAgIHN0cnVjdCBubG1zZ2hkciAgICAgICpubG1wOworICAgIHN0cnVjdCBpZmFkZHJtc2cgICAgICpydG1wOworICAgIHN0cnVjdCBydGF0dHIgICAgICAgICpydGF0cDsKKyAgICBzdHJ1Y3QgaWZhX2NhY2hlaW5mbyAqY2FjaGVfaW5mbzsKKyAgICBzdHJ1Y3QgaW42X2FkZHIgICAgICAqaW42cDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICBydGF0dHJsZW47CisgICAgaW50ICAgICAgICAgICAgICAgICAgc2Q7CisgICAgaW50ICAgICAgICAgICAgICAgICAgcmVxYWRkciA9IDA7CisgICAgc2QgPSBzb2NrZXQoUEZfTkVUTElOSywgU09DS19ER1JBTSwgTkVUTElOS19ST1VURSk7CisgICAgaWYoc2QgPCAwKSB7CisgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBvcGVuIG5ldGxpbmsgc29ja2V0XG4iKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIG1lbXNldCgmcmVxLCAwLCBzaXplb2YocmVxKSk7CisgICAgcmVxLm5saGRyLm5sbXNnX2xlbiA9IE5MTVNHX0xFTkdUSChzaXplb2Yoc3RydWN0IGlmYWRkcm1zZykpOworICAgIHJlcS5ubGhkci5ubG1zZ19mbGFncyA9IE5MTV9GX1JFUVVFU1QgfCBOTE1fRl9ST09UOworICAgIHJlcS5ubGhkci5ubG1zZ190eXBlID0gUlRNX0dFVEFERFI7CisgICAgcmVxLmlmYWNlaW5mby5pZmFfZmFtaWx5ID0gQUZfSU5FVDY7CisgICAgcnRhID0gKHN0cnVjdCBydGF0dHIgKikoKChjaGFyICopJnJlcSkgKyBOTE1TR19BTElHTihyZXEubmxoZHIubmxtc2dfbGVuKSk7CisgICAgcnRhLT5ydGFfbGVuID0gUlRBX0xFTkdUSCgxNik7IC8qRm9yIGlwdjYqLworCisgICAgc3RhdHVzID0gc2VuZCAoc2QsICZyZXEsIHJlcS5ubGhkci5ubG1zZ19sZW4sIDApOworICAgIGlmIChzdGF0dXMgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZCBub3Qgc2VuZCBuZXRsaW5rIHJlcXVlc3RcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHN0YXR1cyA9IHJlY3YgKHNkLCBidWYsIHNpemVvZihidWYpLCAwKTsKKyAgICBpZiAoc3RhdHVzIDwgMCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImNvdWxkIG5vdCByZWNpZXZlIG5ldGxpbmsgcmVxdWVzdFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJub3RoaW5nIHRvIHJlYWRcbiIpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgZm9yIChubG1wID0gKHN0cnVjdCBubG1zZ2hkciAqKWJ1Zjsgc3RhdHVzID4gc2l6ZW9mKCpubG1wKTsgKXsKKworICAgICAgICBpbnQgbGVuID0gbmxtcC0+bmxtc2dfbGVuOworICAgICAgICBpbnQgcmVxX2xlbiA9IGxlbiAtIHNpemVvZigqbmxtcCk7CisKKyAgICAgICAgaWYgKHJlcV9sZW4gPCAwIHx8IGxlbiA+IHN0YXR1cykgeworICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJpbnZhbGlkIG5ldGxpbmsgbWVzc2FnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIU5MTVNHX09LIChubG1wLCBzdGF0dXMpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImludmFsaWQgTkxNU0cgbWVzc2FnZVxuIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgcnRtcCA9IChzdHJ1Y3QgaWZhZGRybXNnICopTkxNU0dfREFUQShubG1wKTsKKyAgICAgICAgcnRhdHAgPSAoc3RydWN0IHJ0YXR0ciAqKUlGQV9SVEEocnRtcCk7CisgICAgICAgIHJ0YXR0cmxlbiA9IElGQV9QQVlMT0FEKG5sbXApOworICAgICAgICBpZihpbmRleCA9PSBydG1wLT5pZmFfaW5kZXgpIHsKKyAgICAgICAgICAgZm9yICg7IFJUQV9PSyhydGF0cCwgcnRhdHRybGVuKTsgcnRhdHAgPSBSVEFfTkVYVChydGF0cCwgcnRhdHRybGVuKSkgeworICAgICAgICAgICAgICAgIGlmKHJ0YXRwLT5ydGFfdHlwZSA9PSBJRkFfQUREUkVTUykgeworICAgICAgICAgICAgICAgICAgIGluNnAgPSAoc3RydWN0IGluNl9hZGRyICopUlRBX0RBVEEocnRhdHApOworICAgICAgICAgICAgICAgICAgIHNwcmludGYodG1wYWRkciwgIiUwNHglMDR4JTA0eCUwNHglMDR4JTA0eCUwNHglMDR4IiwgTklQNigqaW42cCkpOworICAgICAgICAgICAgICAgICAgIGlmKCFzdHJjbXAodG1wYWRkciAsYWRkcikpCisgICAgICAgICAgICAgICAgICAgICAgIHJlcWFkZHIgPSAxOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZihydGF0cC0+cnRhX3R5cGUgPT0gSUZBX0NBQ0hFSU5GTykgeworICAgICAgICAgICAgICAgICAgIGNhY2hlX2luZm8gPSAoc3RydWN0IGlmYV9jYWNoZWluZm8gKilSVEFfREFUQShydGF0cCk7CisgICAgICAgICAgICAgICAgICAgaWYocmVxYWRkcikgeworICAgICAgICAgICAgICAgICAgICAgIHJlcWFkZHIgPSAwOworICAgICAgICAgICAgICAgICAgICAgICp2YWxpZGx0ID0gY2FjaGVfaW5mby0+aWZhX3ZhbGlkOworICAgICAgICAgICAgICAgICAgICAgICpwcmVmZXJlZGx0ID0gY2FjaGVfaW5mby0+aWZhX3ByZWZlcmVkOworICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzIC09IE5MTVNHX0FMSUdOKGxlbik7CisgICAgICAgIG5sbXAgPSAoc3RydWN0IG5sbXNnaGRyKikoKGNoYXIqKW5sbXAgKyBOTE1TR19BTElHTihsZW4pKTsKKyAgICB9CisgICAgY2xvc2Uoc2QpOworICAgIHJldHVybiAwOworfQorI2VuZGlmCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL2lwYWRkcmVzc19zb2xhcmlzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZDhlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzX3NvbGFyaXMyLmMKQEAgLTAsMCArMSwyODYgQEAKKy8qCisgKiAgSVAtTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlICJpcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfY29uc3RhbnRzLmgiCisKKyNpbmNsdWRlICJrZXJuZWxfc3Vub3M1LmgiCisjaW5jbHVkZSAibWliSUkvbWliSUlfY29tbW9uLmgiCisKK3N0YXRpYyBpbnQgX2xvYWRfdjQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpOworI2lmIGRlZmluZWQoIE5FVFNOTVBfRU5BQkxFX0lQVjYgKQorc3RhdGljIGludCBfbG9hZF92NihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CisjZW5kaWYKKworLyoKKyAqIGluaXRpYWxpemUgYXJjaCBzcGVjaWZpYyBzdG9yYWdlCisgKgorICogQHJldHZhbCAgMDogc3VjY2VzcworICogQHJldHZhbCA8MDogZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2VudHJ5X2luaXQobmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5KQoreworICAgIGluaXRfa2VybmVsX3N1bm9zNSgpOworICAgIHJldHVybiAwOworfQorCisvKgorICogY2xlYW51cCBhcmNoIHNwZWNpZmljIHN0b3JhZ2UKKyAqLwordm9pZAorbmV0c25tcF9hcmNoX2lwYWRkcmVzc19lbnRyeV9jbGVhbnVwKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICAvKgorICAgICAqIE5vdGhpbmcgdG8gZG8uCisgICAgICovCit9CisKKy8qCisgKiBjb3B5IGFyY2ggc3BlY2lmaWMgc3RvcmFnZQorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfZW50cnlfY29weShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqbGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICpyaHMpCit7CisgICAgLyoKKyAgICAgKiBOb3RoaW5nIHRvIGRvLiAKKyAgICAgKi8KKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIGNyZWF0ZSBhIG5ldyBlbnRyeQorICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfY3JlYXRlKG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeSkKK3sKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgREVCVUdNU0dUKCgiYWNjZXNzOmlwYWRkcmVzczpjcmVhdGUiLCAibm90IGFwcGxpY2FibGVcbiIpKTsKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBkZWxldGUgYW4gZW50cnkKKyAqLworaW50CituZXRzbm1wX2FyY2hfaXBhZGRyZXNzX2RlbGV0ZShuZXRzbm1wX2lwYWRkcmVzc19lbnRyeSAqZW50cnkpCit7CisgICAgaWYgKE5VTEwgPT0gZW50cnkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIERFQlVHTVNHVCgoImFjY2VzczppcGFkZHJlc3M6Y3JlYXRlIiwgIm5vdCBhcHBsaWNhYmxlXG4iKSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qKgorICoKKyAqIEByZXR2YWwgIDAgbm8gZXJyb3JzCisgKiBAcmV0dmFsICEwIGVycm9ycworICovCitpbnQKK25ldHNubXBfYXJjaF9pcGFkZHJlc3NfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmMgPSAwLCBpZHhfb2Zmc2V0ID0gMDsKKworICAgIGlmICghKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19JUEFERFJFU1NfTE9BRF9JUFY2X09OTFkpKSB7CisgICAgICAgIHJjID0gX2xvYWRfdjQoY29udGFpbmVyLCBpZHhfb2Zmc2V0KTsKKyAgICAgICAgaWYocmMgPCAwKSB7CisgICAgICAgICAgICB1X2ludCBmbGFncyA9IE5FVFNOTVBfQUNDRVNTX0lQQUREUkVTU19GUkVFX0tFRVBfQ09OVEFJTkVSOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwgZmxhZ3MpOworICAgICAgICB9CisgICAgfQorCisjaWYgZGVmaW5lZCggTkVUU05NUF9FTkFCTEVfSVBWNiApCisKKyAgICBpZiAoIShsb2FkX2ZsYWdzICYgTkVUU05NUF9BQ0NFU1NfSVBBRERSRVNTX0xPQURfSVBWNF9PTkxZKSkgeworICAgICAgICBpZiAocmMgPCAwKQorICAgICAgICAgICAgcmMgPSAwOworCisgICAgICAgIGlkeF9vZmZzZXQgPSByYzsKKworICAgICAgICByYyA9IF9sb2FkX3Y2KGNvbnRhaW5lciwgaWR4X29mZnNldCk7CisgICAgICAgIGlmKHJjIDwgMCkgeworICAgICAgICAgICAgdV9pbnQgZmxhZ3MgPSBORVRTTk1QX0FDQ0VTU19JUEFERFJFU1NfRlJFRV9LRUVQX0NPTlRBSU5FUjsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19jb250YWluZXJfZnJlZShjb250YWluZXIsIGZsYWdzKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiByZXR1cm4gbm8gZXJyb3JzICgwKSBpZiB3ZSBmb3VuZCBhbnkgaW50ZXJmYWNlcworICAgICAqLworICAgIGlmKHJjID4gMCkKKyAgICAgICAgcmMgPSAwOworICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIEByZXR2YWwgPj1pZHhfb2Zmc2V0IG9rCisgKiBAcmV0dmFsIC0xIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yCisgKiBAcmV0dmFsIC0yIGludGVyZmFjZSBsb29rdXAgZXJyb3IKKyAqIEByZXR2YWwgLTMgY29udGFpbmVyIGVycm9yCisgKi8KK3N0YXRpYyBpbnQKK19sb2FkX3Y0KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQoreworICAgIG1pYjJfaXBBZGRyRW50cnlfdCAgICAgIGlwYWU7CisgICAgbmV0c25tcF9pcGFkZHJlc3NfZW50cnkgKmVudHJ5OworICAgIHJlcV9lICAgICAgICAgICAgICAgICAgIHJlcSA9IEdFVF9GSVJTVDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAibG9hZGluZyB2NFxuIikpOworICAgIHdoaWxlICgocmMgPSBnZXRNaWJzdGF0KE1JQl9JUF9BRERSLCAmaXBhZSwgc2l6ZW9mKGlwYWUpLCByZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkdldF9ldmVyeXRoaW5nLCBOVUxMKSkgPT0gMCkgeworICAgICAgICByZXEgPSBHRVRfTkVYVDsKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfY3JlYXRlKCk7CisgICAgICAgIGlmIChlbnRyeSA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuICgtMSk7ICAgIAorICAgICAgICBpZiAoaXBhZS5pcEFkRW50QWRkciA9PSBJTkFERFJfQU5ZKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaXBhZS5pcEFkRW50SWZJbmRleC5vX2J5dGVzW2lwYWUuaXBBZEVudElmSW5kZXgub19sZW5ndGhdID0gJ1wwJzsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImZvdW5kIGlmICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGFlLmlwQWRFbnRJZkluZGV4Lm9fYnl0ZXMpKTsKKyAgICAgICAgLyogT2J0YWluIGludGVyZmFjZSBpbmRleCAqLworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSAKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKGlwYWUuaXBBZEVudElmSW5kZXgub19ieXRlcyk7CisgICAgICAgIGlmIChlbnRyeS0+aWZfaW5kZXggPT0gMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImNhbm5vdCBmaW5kIGlmICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgaXBhZS5pcEFkRW50SWZJbmRleCkpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgcmV0dXJuICgtMik7ICAgIAorICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0cmNocigoY29uc3QgY2hhciAqKSZpcGFlLmlwQWRFbnRJZkluZGV4Lm9fYnl0ZXMsICc6JykgIT0gMCkKKyAgICAgICAgICAgIGVudHJ5LT5mbGFncyB8PSBORVRTTk1QX0FDQ0VTU19JUEFERFJFU1NfSVNBTElBUzsKKworICAgICAgICAvKiBHZXQgdGhlIGFkZHJlc3MgKi8KKyAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuID0gc2l6ZW9mKGlwYWUuaXBBZEVudEFkZHIpOworICAgICAgICBuZXRzbm1wX2Fzc2VydChlbnRyeS0+aWFfYWRkcmVzc19sZW4gPT0gNCAmJgorICAgICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuIDw9IHNpemVvZihlbnRyeS0+aWFfYWRkcmVzcykpOworICAgICAgICBtZW1jcHkoJmVudHJ5LT5pYV9hZGRyZXNzLCAmaXBhZS5pcEFkRW50QWRkciwgZW50cnktPmlhX2FkZHJlc3NfbGVuKTsKKworICAgICAgICAvKiBwcmVmaXggKi8KKyAgICAgICAgZW50cnktPmlhX3ByZWZpeF9sZW4gPSBpcGFlLmlwQWRFbnRJbmZvLmFlX3N1Ym5ldF9sZW47CisKKyAgICAgICAgLyogc2V0IHRoZSBPcmlnaW4gKi8KKyAgICAgICAgaWYgKGlwYWUuaXBBZEVudEluZm8uYWVfZmxhZ3MgJiBJRkZfREhDUFJVTk5JTkcpCisgICAgICAgICAgICBlbnRyeS0+aWFfb3JpZ2luID0gSVBBRERSRVNTT1JJR0lOVENfREhDUDsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX01BTlVBTDsKKworICAgICAgICAvKiBzZXQgaXB2NCBjb25zdGFudHMgKi8KKyAgICAgICAgZW50cnktPmlhX3R5cGUgPSBJUEFERFJFU1NUWVBFX1VOSUNBU1Q7CisgICAgICAgIGVudHJ5LT5pYV9zdGF0dXMgPSBJUEFERFJFU1NTVEFUVVNUQ19QUkVGRVJSRUQ7CisKKyAgICAgICAgZW50cnktPm5zX2lhX2luZGV4ID0gKytpZHhfb2Zmc2V0OworCisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJpbnNlcnQgaWYgJSIgTkVUU05NUF9QUklvICJ1LCBhZGRybGVuICVkXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPmlmX2luZGV4LCBlbnRyeS0+aWFfYWRkcmVzc19sZW4pKTsKKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJ1bmFibGUgdG8gaW5zZXJ0ICVzXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwYWUuaXBBZEVudElmSW5kZXgub19ieXRlcykpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgcmV0dXJuICgtMyk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIChpZHhfb2Zmc2V0KTsKK30KKworLyoKKyAqIEByZXR2YWwgPj1pZHhfb2Zmc2V0IG9rCisgKiBAcmV0dmFsIC0xIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9yCisgKiBAcmV0dmFsIC0yIGludGVyZmFjZSBsb29rdXAgZXJyb3IKKyAqIEByZXR2YWwgLTMgY29udGFpbmVyIGVycm9yCisgKi8KKyNpZiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkKK3N0YXRpYyBpbnQKK19sb2FkX3Y2KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIGludCBpZHhfb2Zmc2V0KQoreworICAgIG1pYjJfaXB2NkFkZHJFbnRyeV90ICAgIGlwNmFlOworICAgIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICplbnRyeTsKKyAgICByZXFfZSAgICAgICAgICAgICAgICAgICByZXEgPSBHRVRfRklSU1Q7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgcmMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgImxvYWRpbmcgdjYuLi4gY2FjaGUgJWRcbiIsCisgICAgICAgICAgICAgICAgTUlCX0lQNl9BRERSKSk7CisgICAgd2hpbGUgKChyYyA9IGdldE1pYnN0YXQoTUlCX0lQNl9BRERSLCAmaXA2YWUsIHNpemVvZihpcDZhZSksIHJlcSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmR2V0X2V2ZXJ5dGhpbmcsIE5VTEwpKSA9PSAwKSB7CisgICAgICAgIHJlcSA9IEdFVF9ORVhUOworICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX2lwYWRkcmVzc19lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYgKGVudHJ5ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gKC0xKTsgICAgCisgICAgICAgIGlmIChtZW1jbXAoKGNvbnN0IHZvaWQgKikmaXA2YWUuaXB2NkFkZHJBZGRyZXNzLAorICAgICAgICAgICAgICAgICAgIChjb25zdCB2b2lkICopJmluNmFkZHJfYW55LAorICAgICAgICAgICAgICAgICAgIHNpemVvZiAoaXA2YWUuaXB2NkFkZHJBZGRyZXNzKSkgPT0gMCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlwNmFlLmlwdjZBZGRySWZJbmRleC5vX2J5dGVzW2lwNmFlLmlwdjZBZGRySWZJbmRleC5vX2xlbmd0aF0gPSAnXDAnOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwYWRkcmVzczpjb250YWluZXIiLCAiZm91bmQgaWYgJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwNmFlLmlwdjZBZGRySWZJbmRleC5vX2J5dGVzKSk7CisKKyAgICAgICAgLyogT2J0YWluIGludGVyZmFjZSBpbmRleCAqLworICAgICAgICBlbnRyeS0+aWZfaW5kZXggPSAKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9pbmRleF9maW5kKAorICAgICAgICAgICAgaXA2YWUuaXB2NkFkZHJJZkluZGV4Lm9fYnl0ZXMpOworICAgICAgICBpZiAoZW50cnktPmlmX2luZGV4ID09IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJjYW5ub3QgZmluZCBpZiAlc1xuIiwgCisgICAgICAgICAgICAgICAgICAgICAgICBpcDZhZS5pcHY2QWRkcklmSW5kZXgub19ieXRlcykpOworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3NfaXBhZGRyZXNzX2VudHJ5X2ZyZWUoZW50cnkpOworICAgICAgICAgICAgcmV0dXJuICgtMik7ICAgIAorICAgICAgICB9CisKKyAgICAgICAgLyogR2V0IHRoZSBhZGRyZXNzICovCisgICAgICAgIGVudHJ5LT5pYV9hZGRyZXNzX2xlbiA9IHNpemVvZihpcDZhZS5pcHY2QWRkckFkZHJlc3MpOworICAgICAgICBuZXRzbm1wX2Fzc2VydChlbnRyeS0+aWFfYWRkcmVzc19sZW4gPT0gMTYgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmlhX2FkZHJlc3NfbGVuIDw9IHNpemVvZihlbnRyeS0+aWFfYWRkcmVzcykpOworICAgICAgICBtZW1jcHkoJmVudHJ5LT5pYV9hZGRyZXNzLCAmaXA2YWUuaXB2NkFkZHJBZGRyZXNzLCAKKyAgICAgICAgICAgICAgIGVudHJ5LT5pYV9hZGRyZXNzX2xlbik7CisgICAgICAgICAgICAgICAKKyAgICAgICAgLyogcHJlZml4ICovCisgICAgICAgIGVudHJ5LT5pYV9wcmVmaXhfbGVuID0gaXA2YWUuaXB2NkFkZHJQZnhMZW5ndGg7CisKKyAgICAgICAgLyogdHlwZSBpcyBhbnljYXN0PyAobWliMi5oOiAxID0geWVzLCAyID0gbm8pICovCisgICAgICAgIGVudHJ5LT5pYV90eXBlID0gKGlwNmFlLmlwdjZBZGRyQW55Y2FzdEZsYWcgPT0gMSkgPyAKKyAgICAgICAgICAgIElQQUREUkVTU1RZUEVfQU5ZQ0FTVCA6IElQQUREUkVTU1RZUEVfVU5JQ0FTVDsKKworICAgICAgICAvKiBvcmlnaW4gKG1pYjIuaDogMSA9IHN0YXRlbGVzcywgMiA9IHN0YXRlZnVsLCAzID0gdW5rbm93bikgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcGFkZHJlc3M6Y29udGFpbmVyIiwgIm9yaWdpbiAlZFxuIiwgCisgICAgICAgICAgICAgICAgICAgICAgICBpcDZhZS5pcHY2QWRkclR5cGUpKTsKKyAgICAgICAgaWYgKGlwNmFlLmlwdjZBZGRyVHlwZSA9PSAxKQorICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX0xJTktMQVlFUjsKKyAgICAgICAgZWxzZSBpZiAoaXA2YWUuaXB2NkFkZHJJbmZvLmFlX2ZsYWdzICYgSUZGX0RIQ1BSVU5OSU5HKQorICAgICAgICAgICAgZW50cnktPmlhX29yaWdpbiA9IElQQUREUkVTU09SSUdJTlRDX0RIQ1A7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVudHJ5LT5pYV9vcmlnaW4gPSBJUEFERFJFU1NPUklHSU5UQ19NQU5VQUw7CisgICAgICAgIAorICAgICAgICAvKiBzdGF0dXMgKi8KKyAgICAgICAgZW50cnktPmlhX3N0YXR1cyA9IGlwNmFlLmlwdjZBZGRyU3RhdHVzOworCisgICAgICAgIGVudHJ5LT5uc19pYV9pbmRleCA9ICsraWR4X29mZnNldDsKKyAgICAgICAgCisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJpbnNlcnQgaWYgJSIgTkVUU05NUF9QUklvICJ1LCBhZGRybGVuICVkXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPmlmX2luZGV4LCBlbnRyeS0+aWFfYWRkcmVzc19sZW4pKTsKKworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGVudHJ5KSA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBhZGRyZXNzOmNvbnRhaW5lciIsICJ1bmFibGUgdG8gaW5zZXJ0ICVzXG4iLCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlwNmFlLmlwdjZBZGRySWZJbmRleC5vX2J5dGVzKSk7CisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19pcGFkZHJlc3NfZW50cnlfZnJlZShlbnRyeSk7CisgICAgICAgICAgICByZXR1cm4gKC0zKTsKKyAgICAgICAgfQorICAgIH0gICAgCisgICAgcmV0dXJuIChpZHhfb2Zmc2V0KTsKK30KKyNlbmRpZiAvKiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkODFiM2YKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZS5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBzY29wZXpvbmUgZGF0YSBhY2Nlc3MgaGVhZGVyCisgKgorICogJElkOiBpcHY2c2NvcGV6b25lLmggMTQxNzAgMjAwNy0wNC0yOSAwMjoyMjoxMlogdmFydW5fYyAkCisgKi8KKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogY29uZmlndXJlIHJlcXVpcmVkIGZpbGVzCisgKgorICogTm90ZXM6CisgKgorICogMSkgcHJlZmVyIGZ1bmN0aW9uYWxpdHkgb3ZlciBwbGF0Zm9ybSwgd2hlcmUgcG9zc2libGUuIElmIGEgbWV0aG9kCisgKiAgICBpcyBhdmFpbGFibGUgZm9yIG11bHRpcGxlIHBsYXRmb3JtcywgdGVzdCB0aGF0IGZpcnN0LiBUaGF0IHdheQorICogICAgd2hlbiBhIG5ldyBwbGF0Zm9ybSBpcyBwb3J0ZWQsIGl0IHdvbid0IG5lZWQgYSBuZXcgdGVzdCBoZXJlLgorICoKKyAqIDIpIGRvbid0IGRvIGRldGFpbCByZXF1aXJlbWVudHMgaGVyZS4gSWYsIGZvciBleGFtcGxlLAorICogICAgSFBVWDExIGhhZCBkaWZmZXJlbnQgcmV1aXJlbWVudHMgdGhhbiBvdGhlciBIUFVYLCB0aGF0IHNob3VsZAorICogICAgYmUgaGFuZGxlZCBpbiB0aGUgKl9ocHV4LmggaGVhZGVyIGZpbGUuCisgKi8KK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2NvbW1vbikKKyNpZiBkZWZpbmVkKCBsaW51eCApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eCkKKyNlbHNlCisvKgorICogY291bGRuJ3QgZGV0ZXJtaW5lIHRoZSBjb3JyZWN0IGZpbGUhCisgKiByZXF1aXJlIGEgYm9ndXMgZmlsZSB0byBnZW5lcmF0ZSBhbiBlcnJvci4KKyAqLworY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL2lwdjZzY29wZXpvbmUtdW5rbm93bi1hcmNoKTsKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2NvbW1vbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZjcxMmIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9jb21tb24uYwpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqICBpcHY2U2NvcGVJbmRleFRhYmxlIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICoKKyAqICRJZDogaXB2NnNjb3Blem9uZV9jb21tb24uYyAxNDE3MCAyMDA3LTA0LTI5IDAyOjIyOjEyWiB2YXJ1bl9jICQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oPgorLyoKKyAqIGxvY2FsIHN0YXRpYyBwcm90b3R5cGVzCisgKi8KK3N0YXRpYyB2b2lkIF9lbnRyeV9yZWxlYXNlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSwgdm9pZCAqdW51c2VkKTsKKworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIGV4dGVybmFsIHBlci1hcmNoaXRlY3R1cmUgZnVuY3Rpb25zIHByb3RvdHlwZXMKKyAqCisgKiBUaGVzZSBzaG91bGRuJ3QgYmUgY2FsbGVkIGJ5IHRoZSBnZW5lcmFsIHB1YmxpYywgc28gdGhleSBhcmVuJ3QgaW4KKyAqIHRoZSBoZWFkZXIgZmlsZS4KKyAqLworZXh0ZXJuIGludAorbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9hcmNoX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOworZXh0ZXJuIHZvaWQKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9hcmNoX2luaXQodm9pZCk7CisKKy8qKgorICogaW5pdGlhbGl6ZSBzeXN0ZW1zdGF0cyBjb250YWluZXIKKyAqLworbmV0c25tcF9jb250YWluZXIgKgorbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9pbml0KHVfaW50IGZsYWdzKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAiaW5pdFxuIikpOworICAgIC8qCisgICAgICogY3JlYXRlIHRoZSBjb250YWluZXJzLiBvbmUgaW5kZXhlZCBieSBpZkluZGV4LCB0aGUgb3RoZXIKKyAgICAgKiBpbmRleGVkIGJ5IGlmTmFtZS4KKyAgICAgKi8KKyAgICBjb250YWluZXIgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJhY2Nlc3Nfc2NvcGV6b25lOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gY29udGFpbmVyOworfQorCisvKioKKyAqIGxvYWQgc2NvcGV6b25lIGluZm9ybWF0aW9uIGluIHNwZWNpZmllZCBjb250YWluZXIKKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGVtcHR5IGNvbnRhaW5lciwgb3IgTlVMTCB0byBoYXZlIG9uZSBjcmVhdGVkIGZvciB5b3UKKyAqIEBwYXJhbSBsb2FkX2ZsYWdzIGZsYWdzIHRvIG1vZGlmeSBiZWhhdmlvdXIuCisgKgorICogQHJldHZhbCBOVUxMICBlcnJvcgorICogQHJldHZhbCAhTlVMTCBwb2ludGVyIHRvIGNvbnRhaW5lcgorICovCituZXRzbm1wX2NvbnRhaW5lcioKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIGludCByYzsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsICJsb2FkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpCisgICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfaW5pdChsb2FkX2ZsYWdzKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19zY29wZXpvbmVcbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByYyA9ICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2FyY2hfbG9hZChjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIGlmICgwICE9IHJjKSB7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9jb250YWluZXJfZnJlZShjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfRlJFRV9OT0ZMQUdTKTsKKyAgICAgICAgY29udGFpbmVyID0gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gY29udGFpbmVyOworfQorCit2b2lkCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZnJlZV9mbGFncykKK3sKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAiZnJlZVxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIGNvbnRhaW5lciBmb3IgbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYoISAoZnJlZV9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9GUkVFX0RPTlRfQ0xFQVIpKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGZyZWUgYWxsIGl0ZW1zLgorICAgICAgICAgKi8KKyAgICAgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX2VudHJ5X3JlbGVhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICB9CisKKyAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOworfQorCisvKioKKyAqLworbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfY3JlYXRlKHZvaWQpCit7CisgICAgbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqZW50cnkgPQorICAgICAgICBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkpOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzY29wZXpvbmU6ZW50cnkiLCAiY3JlYXRlXG4iKSk7CisKKyAgICBpZihOVUxMID09IGVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworCisgICAgZW50cnktPm9pZF9pbmRleC5sZW4gPSAxOworICAgIGVudHJ5LT5vaWRfaW5kZXgub2lkcyA9ICAmZW50cnktPm5zX3Njb3Blem9uZV9pbmRleDsKKworICAgIHJldHVybiBlbnRyeTsKK30KKworLyoqCisgKi8KK3ZvaWQKK25ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9mcmVlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSkKK3sKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTplbnRyeSIsICJmcmVlXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuOworCisKKyAgICBmcmVlKGVudHJ5KTsKK30KKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBVdGlsaXR5IHJvdXRpbmVzCisgKi8KKworLyoqCisgKiBcaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19lbnRyeV9yZWxlYXNlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSwgdm9pZCAqY29udGV4dCkKK3sKKyAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfZnJlZShlbnRyeSk7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MTRmNjAKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3MvaXB2NnNjb3Blem9uZV9saW51eC5jCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogIEludGVyZmFjZSBNSUIgYXJjaGl0ZWN0dXJlIHN1cHBvcnQKKyAqCisgKiAkSWQ6IGlwdjZzY29wZXpvbmVfbGludXguYyAxNDE3MCAyMDA3LTA0LTI5IDAyOjIyOjEyWiB2YXJ1bl9jICQKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oPgorCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKK3N0YXRpYyBpbnQgX3Njb3Blem9uZV92NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCBpbnQgaWR4X29mZnNldCk7CisjZW5kaWYKKworLyoKKyAqCisgKiBAcmV0dmFsICAwIHN1Y2Nlc3MKKyAqIEByZXR2YWwgLTEgbm8gY29udGFpbmVyIHNwZWNpZmllZAorICogQHJldHZhbCAtMiBjb3VsZCBub3Qgb3BlbiBmaWxlCisgKiBAcmV0dmFsIC0zIGNvdWxkIG5vdCBjcmVhdGUgZW50cnkgKHByb2JhYmx5IG1hbGxvYykKKyAqIEByZXR2YWwgLTQgZmlsZSBmb3JtYXQgZXJyb3IKKyAqLworaW50CituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmMxID0gMCwgaWR4X29mZnNldCA9IDA7CisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3Njb3Blem9uZV9cbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmMxID0gX3Njb3Blem9uZV92Nihjb250YWluZXIsIGlkeF9vZmZzZXQpOworI2VuZGlmCisgICAgaWYocmMxID4gMCkKKyAgICAgICAgcmMxID0gMDsKKyAgICByZXR1cm4gcmMxOworfQorCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworLyogc2NvcGUgaWRlbnRpZmllcnMsIGZyb20ga2VybmVsIC0gaW5jbHVkZS9uZXQvaXB2Ni5oICovCisjZGVmaW5lIElQVjZfQUREUl9MT09QQkFDSyAgICAgIDB4MDAxMFUKKyNkZWZpbmUgSVBWNl9BRERSX0xJTktMT0NBTCAgICAgMHgwMDIwVQorI2RlZmluZSBJUFY2X0FERFJfU0lURUxPQ0FMICAgICAweDAwNDBVCisKK3N0YXRpYyBpbnQKK19zY29wZXpvbmVfdjYobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgaW50IGlkeF9vZmZzZXQpCit7CisKKyAgICAvKgorICAgICAqIE9uIExpbnV4LCB3ZSBzdXBwb3J0IG9ubHkgbGluay1sb2NhbCBzY29wZSB6b25lcy4KKyAgICAgKiBFYWNoIGludGVyZmFjZSwgd2hpY2ggaGFzIGxpbmstbG9jYWwgYWRkcmVzcywgZ2V0cyB1bmlxdWUgc2NvcGUKKyAgICAgKiB6b25lIGluZGV4LgorICAgICAqLworICAgIEZJTEUgICAgICAgICAgICppbjsKKyAgICBjaGFyICAgICAgICAgICAgbGluZVs4MF0sIGFkZHJbNDBdOworICAgIGludCAgICAgICAgICAgICBpZl9pbmRleCwgcGZ4X2xlbiwgc2NvcGUsIGZsYWdzLCByYyA9IDA7CisgICAgaW50ICAgICAgICAgICAgIGxhc3RfaWZfaW5kZXggPSAtMTsKKyAgICBuZXRzbm1wX3Y2c2NvcGV6b25lX2VudHJ5ICplbnRyeTsKKyAgICAKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyNkZWZpbmUgUFJPQ0ZJTEUgIi9wcm9jL25ldC9pZl9pbmV0NiIKKyAgICBpZiAoIShpbiA9IGZvcGVuKFBST0NGSUxFLCAiciIpKSkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCJjb3VsZCBub3Qgb3BlbiAiIFBST0NGSUxFICJcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0yOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIGFkZHJlc3MgaW5kZXggcHJlZml4X2xlbiBzY29wZSBzdGF0dXMgaWZfbmFtZQorICAgICAqLworICAgIHdoaWxlIChmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBmZTgwMDAwMDAwMDAwMDAwMDIwMGU4ZmZmZTViNWM5MyAwNSA0MCAyMCA4MCBldGgwCisgICAgICAgICAqICAgICAgICAgICAgIEEgICAgICAgICAgICAgICAgICAgIEQgIFAgIFMgIEYgIEkKKyAgICAgICAgICogQTogYWRkcmVzcworICAgICAgICAgKiBEOiBkZXZpY2UgbnVtYmVyCisgICAgICAgICAqIFA6IHByZWZpeCBsZW4KKyAgICAgICAgICogUzogc2NvcGUgKHNlZSBpbmNsdWRlL25ldC9pcHY2LmgsIG5ldC9pcHY2L2FkZHJjb25mLmMpCisgICAgICAgICAqIEY6IGZsYWdzIChzZWUgaW5jbHVkZS9saW51eC9ydG5ldGxpbmsuaCwgbmV0L2lwdjYvYWRkcmNvbmYuYykKKyAgICAgICAgICogSTogaW50ZXJmYWNlCisgICAgICAgICAqLworICAgICAgICByYyA9IHNzY2FuZihsaW5lLCAiJTM5cyAlMDR4ICUwMnggJTAyeCAlMDJ4XG4iLAorICAgICAgICAgICAgICAgICAgICBhZGRyLCAmaWZfaW5kZXgsICZwZnhfbGVuLCAmc2NvcGUsICZmbGFncyk7CisgICAgICAgIGlmKCA1ICE9IHJjICkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgUFJPQ0ZJTEUgIiBkYXRhIGZvcm1hdCBlcnJvciAoJWQhPTUpLCBsaW5lID09fCVzfFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHJjLCBsaW5lKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c2NvcGV6b25lOmNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICJhZGRyICVzLCBpbmRleCAlZCwgcGZ4ICVkLCBzY29wZSAlZCwgZmxhZ3MgMHglWFxuIiwKKyAgICAgICAgICAgICAgICAgICAgYWRkciwgaWZfaW5kZXgsIHBmeF9sZW4sIHNjb3BlLCBmbGFncykpOworCisgICAgICAgIGlmICghIChzY29wZSAmIElQVjZfQUREUl9MSU5LTE9DQUwpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgYWRkcmVzcyBpcyBub3QgbGluay1sb2NhbCwgc2tpcHBpbmdcbiIpKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIC8qIAorICAgICAgICAgKiBDaGVjayB0aGF0IHRoZSBpbnRlcmZhY2Ugd2FzIG5vdCBpbnNlcnRlZCBiZWZvcmUsIGp1c3QgaW4gY2FzZQorICAgICAgICAgKiBvbmUgaW50ZXJmYWNlIGhhcyB0d28gb3IgbW9yZSBsaW5rLWxvY2FsIGFkZHJlc3Nlcy4KKyAgICAgICAgICovCisgICAgICAgIGlmIChsYXN0X2lmX2luZGV4ID09IGlmX2luZGV4KSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnNjb3Blem9uZTpjb250YWluZXIiLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgaW50ZXJmYWNlIHdhcyBhbHJlYWR5IGluc2VydGVkLCBza2lwcGluZ1xuIikpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBsYXN0X2lmX2luZGV4ID0gaWZfaW5kZXg7IAorICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9jcmVhdGUoKTsKKyAgICAgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworICAgICAgICAgICAgcmMgPSAtMzsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGVudHJ5LT5uc19zY29wZXpvbmVfaW5kZXggPSArK2lkeF9vZmZzZXQ7CisgICAgICAgIGVudHJ5LT5pbmRleCA9IGlmX2luZGV4OworICAgICAgICBlbnRyeS0+c2NvcGV6b25lX2xpbmtsb2NhbCA9IGlmX2luZGV4OworIAorICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgZW50cnkpOworICAgIH0KKyAgICBmY2xvc2UoaW4pOworICAgIGlmKHJjPDApCisgICAgICAgIHJldHVybiByYzsKKworICAgIHJldHVybiBpZHhfb2Zmc2V0OworfQorI2VuZGlmIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zY2FsYXJzX2xpbnV4LmMKaW5kZXggZDljMzkxNC4uMDJjNDE2YSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3NjYWxhcnNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc2NhbGFyc19saW51eC5jCkBAIC04LDcgKzgsNzYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwX3NjYWxhcnMuaD4KIAotc3RhdGljIGNvbnN0IGNoYXIgaXBmd19uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXBmd19uYW1lW10gPSAiL3Byb2Mvc3lzL25ldC9pcHY0L2NvbmYvYWxsL2ZvcndhcmRpbmciOworc3RhdGljIGNvbnN0IGNoYXIgaXBmdzZfbmFtZVtdID0gIi9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mL2FsbC9mb3J3YXJkaW5nIjsKKworaW50CituZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcEZvcndhcmRpbmdfZ2V0KHVfbG9uZyAqdmFsdWUpCit7CisgICAgRklMRSAqZmlsZXA7CisgICAgaW50IHJjOworCisgICAgaWYgKE5VTEwgPT0gdmFsdWUpCisgICAgICAgIHJldHVybiAtMTsKKworCisgICAgZmlsZXAgPSBmb3BlbihpcGZ3X25hbWUsICJyIik7CisgICAgaWYgKE5VTEwgPT0gZmlsZXApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgcmMgPSBmc2NhbmYoZmlsZXAsICIlbGQiLCB2YWx1ZSk7CisgICAgZmNsb3NlKGZpbGVwKTsKKyAgICBpZiAoMSAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwRm9yd2FyZGluZyIsICJjb3VsZCBub3QgcmVhZCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaXBmd19uYW1lKSk7CisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisKKyAgICBpZiAoKDAgIT0gKnZhbHVlKSAmJiAoMSAhPSAqdmFsdWUpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgInVuZXhwZWN0ZWQgdmFsdWUgJWxkIGluICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAqdmFsdWUsIGlwZndfbmFtZSkpOworICAgICAgICByZXR1cm4gLTQ7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX3NldCh1X2xvbmcgdmFsdWUpCit7CisgICAgRklMRSAqZmlsZXA7CisgICAgaW50IHJjOworCisgICAgaWYgKDEgPT0gdmFsdWUpCisgICAgICAgIDsKKyAgICBlbHNlIGlmICgyID09IHZhbHVlKQorICAgICAgICB2YWx1ZSA9IDA7CisgICAgZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImJhZCB2YWx1ZSAlbGQgZm9yICVzXG4iLAorICAgICAgICAgICAgICAgICAgICB2YWx1ZSwgaXBmd19uYW1lKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKworICAgIGZpbGVwID0gZm9wZW4oaXBmd19uYW1lLCAidyIpOworICAgIGlmIChOVUxMID09IGZpbGVwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXBGb3J3YXJkaW5nIiwgImNvdWxkIG5vdCBvcGVuICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgfQorCisgICAgcmMgPSBmcHJpbnRmKGZpbGVwLCAiJWxkIiwgdmFsdWUpOworICAgIGZjbG9zZShmaWxlcCk7CisgICAgaWYgKDEgIT0gcmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcEZvcndhcmRpbmciLCAiY291bGQgbm90IHdyaXRlICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KIAogaW50CiBuZXRzbm1wX2FyY2hfaXBfc2NhbGFyc19pcHY2SXBGb3J3YXJkaW5nX2dldCh1X2xvbmcgKnZhbHVlKQpAQCAtMjAsMTAgKzg5LDEwIEBACiAgICAgICAgIHJldHVybiAtMTsKIAogCi0gICAgZmlsZXAgPSBmb3BlbihpcGZ3X25hbWUsICJyIik7CisgICAgZmlsZXAgPSBmb3BlbihpcGZ3Nl9uYW1lLCAiciIpOwogICAgIGlmIChOVUxMID09IGZpbGVwKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsICJjb3VsZCBub3Qgb3BlbiAlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgaXBmd19uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgIGlwZnc2X25hbWUpKTsKICAgICAgICAgcmV0dXJuIC0yOwogICAgIH0KIApAQCAtMzEsMTMgKzEwMCwxMyBAQAogICAgIGZjbG9zZShmaWxlcCk7CiAgICAgaWYgKDEgIT0gcmMpIHsKICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczppcHY2SXBGb3J3YXJkaW5nIiwgImNvdWxkIG5vdCByZWFkICVzXG4iLAotICAgICAgICAgICAgICAgICAgICBpcGZ3X25hbWUpKTsKKyAgICAgICAgICAgICAgICAgICAgaXBmdzZfbmFtZSkpOwogICAgICAgICByZXR1cm4gLTM7CiAgICAgfQogCiAgICAgaWYgKCgwICE9ICp2YWx1ZSkgJiYgKDEgIT0gKnZhbHVlKSkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwdjZJcEZvcndhcmRpbmciLCAidW5leHBlY3RlZCB2YWx1ZSAlbGQgaW4gJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICp2YWx1ZSwgaXBmd19uYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICp2YWx1ZSwgaXBmdzZfbmFtZSkpOwogICAgICAgICByZXR1cm4gLTQ7CiAgICAgfQogCkBAIC02MCwxMCArMTI5LDEwIEBACiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwogICAgIH0KIAotICAgIGZpbGVwID0gZm9wZW4oaXBmd19uYW1lLCAidyIpOworICAgIGZpbGVwID0gZm9wZW4oaXBmdzZfbmFtZSwgInciKTsKICAgICBpZiAoTlVMTCA9PSBmaWxlcCkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmlwdjZJcEZvcndhcmRpbmciLCAiY291bGQgbm90IG9wZW4gJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICAgICAgICAgICAgICBpcGZ3Nl9uYW1lKSk7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFOwogICAgIH0KIApAQCAtNzEsNyArMTQwLDcgQEAKICAgICBmY2xvc2UoZmlsZXApOwogICAgIGlmICgxICE9IHJjKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aXB2NklwRm9yd2FyZGluZyIsICJjb3VsZCBub3Qgd3JpdGUgJXNcbiIsCi0gICAgICAgICAgICAgICAgICAgIGlwZndfbmFtZSkpOworICAgICAgICAgICAgICAgICAgICBpcGZ3Nl9uYW1lKSk7CiAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCmluZGV4IDZiYmE2ZDkuLjI4ODEwZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCkBAIC0yMCwxMSArMjAsOCBAQAogY29uZmlnX3JlcXVpcmUoaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbikKICNpZiBkZWZpbmVkKCBsaW51eCApCiBjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXgpCisjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIpCiAjZWxzZQotLyoKLSAqIGNvdWxkbid0IGRldGVybWluZSB0aGUgY29ycmVjdCBmaWxlIQotICogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCi0gKi8KLWNvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy11bmtub3duLWFyY2gpOworY29uZmlnX2Vycm9yKHRoZSBzeXN0ZW1zdGF0cyBkYXRhIGFjY2VzcyBsaWJyYXJ5IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBlbnZpcm9ubWVudC4pCiAjZW5kaWYKLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzX2NvbW1vbi5jCmluZGV4IGYyN2UwZWEuLmY3YzAyMTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfY29tbW9uLmMKQEAgLTEsNSArMSw1IEBACiAvKgotICogIFN5c3RlbXN0YXRzIE1JQiBhcmNoaXRlY3R1cmUgc3VwcG9ydAorICogIGlwU3lzdGVtU3RhdHNUYWJsZSBhbmQgaXBJZlN0YXRzVGFibGUgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CiAgKgogICogJElkJAogICovCkBAIC0xNjMsNyArMTYzLDcgQEAKIC8qKgogICovCiBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICoKLW5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZShpbnQgdmVyc2lvbikKK25ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZShpbnQgdmVyc2lvbiwgaW50IGlmX2luZGV4KQogewogICAgIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmVudHJ5ID0KICAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5KTsKQEAgLTE3MywxMCArMTczLDEwIEBACiAgICAgaWYoTlVMTCA9PSBlbnRyeSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBlbnRyeS0+bnNfaXBfdmVyc2lvbiA9IHZlcnNpb247Ci0KLSAgICBlbnRyeS0+b2lkX2luZGV4LmxlbiA9IDE7Ci0gICAgZW50cnktPm9pZF9pbmRleC5vaWRzID0gKG9pZCAqKSAmIGVudHJ5LT5uc19pcF92ZXJzaW9uOworICAgIGVudHJ5LT5vaWRfaW5kZXgubGVuID0gMjsKKyAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSBlbnRyeS0+aW5kZXg7CisgICAgZW50cnktPmluZGV4WzBdID0gdmVyc2lvbjsKKyAgICBlbnRyeS0+aW5kZXhbMV0gPSBpZl9pbmRleDsKIAogICAgIHJldHVybiBlbnRyeTsKIH0KQEAgLTIxNyw2ICsyMTcsNjIgQEAKICAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVudHJ5KTsKIH0KIAorLyoKKyAqIENhbGN1bGF0ZXMgdGhlIGVudHJpZXMsIHdoaWNoIGFyZSBub3QgcHJvdmlkZWQgYnkgT1MsIGJ1dCBjYW4gYmUgCisgKiBjb21wdXRlZCBmcm9tIHRoZSBvdGhlcnMuCisgKi8KK3N0YXRpYyB2b2lkCitfY2FsY3VsYXRlX2VudHJpZXMobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqIGVudHJ5KQoreworICAgIC8qCisgICAgICogSENJbkZvcndEYXRhZ3JhbXMgPSBIQ0luTm9Sb3V0ZXMgKyBIQ091dEZvcndEYXRhZ3JhbXMKKyAgICAgKi8KKyAgICBpZiAoIWVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdCisgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXQorICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10pIHsKKyAgICAgICAgCisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcyA9IGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXM7CisgICAgICAgIHU2NEluY3IoJmVudHJ5LT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcywgJmVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMpOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSA9IDE7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBIQ091dEZyYWdSZXFkcyA9IEhDT3V0RnJhZ09LcyArIEhDT3V0RnJhZ0ZhaWxzCisgICAgICovCisgICAgaWYgKCFlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXQorICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10KKyAgICAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdGQUlMU10pIHsKKyAgICAgICAgCisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcyA9IGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3M7CisgICAgICAgIHU2NEluY3IoJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcywgJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscyk7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdID0gMTsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBIQ091dFRyYW5zbWl0cyA9IEhDT3V0UmVxdWVzdHMgICsgSENPdXRGb3J3RGF0YWdyYW1zICsgSENPdXRGcmFnQ3JlYXRlcyAgCisgICAgICogICAgICAgICAgICAgICAgICAtIEhDT3V0RnJhZ1JlcWRzIC0gSENPdXROb1JvdXRlcyAgLSBIQ091dERpc2NhcmRzCisgICAgICovCisgICAgaWYgKCFlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXQorICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdCisgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXQorICAgICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXQorICAgICAgICAgICAmJiBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdCisgICAgICAgICAgICYmIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10KKyAgICAgICAgJiYgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSkgeworCisgICAgICAgIFU2NCB0bXAsIHRtcDIsIHRtcDM7CisgICAgICAgIHRtcCA9IGVudHJ5LT5zdGF0cy5IQ091dFJlcXVlc3RzOworICAgICAgICB1NjRJbmNyKCZ0bXAsICZlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zKTsKKyAgICAgICAgdTY0SW5jcigmdG1wLCAmZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMpOworICAgICAgICAKKyAgICAgICAgdTY0U3VidHJhY3QoJnRtcCwgJmVudHJ5LT5zdGF0cy5IQ091dEZyYWdSZXFkcywgJnRtcDIpOworICAgICAgICB1NjRTdWJ0cmFjdCgmdG1wMiwgJmVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLCAmdG1wMyk7CisgICAgICAgIHU2NFN1YnRyYWN0KCZ0bXAzLCAmZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMsICZlbnRyeS0+c3RhdHMuSENPdXRUcmFuc21pdHMpOworICAgICAgICAgICAgICAgIAorICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXSA9IDE7CisgICAgfQorfQorCiAvKioKICAqIHVwZGF0ZSBlbnRyeSBzdGF0cyAoY2hlY2tpbmcgZm9yIGNvdW50ZXIgd3JhcCkKICAqCkBAIC0yMzMsNyArMjg5LDggQEAKICAgICAgKiBzYW5pdHkgY2hlY2tzCiAgICAgICovCiAgICAgaWYgKChOVUxMID09IHByZXZfdmFscykgfHwgKE5VTEwgPT0gbmV3X3ZhbHMpIHx8Ci0gICAgICAgIChwcmV2X3ZhbHMtPm5zX2lwX3ZlcnNpb24gIT0gbmV3X3ZhbHMtPm5zX2lwX3ZlcnNpb24pKQorICAgICAgICAocHJldl92YWxzLT5pbmRleFswXSAhPSBuZXdfdmFscy0+aW5kZXhbMF0pCisgICAgICAgIHx8IChwcmV2X3ZhbHMtPmluZGV4WzFdICE9IG5ld192YWxzLT5pbmRleFsxXSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8qCkBAIC0yNDEsNiArMjk4LDcgQEAKICAgICAgKi8KICAgICBpZiAoMCA9PSBuZWVkX3dyYXBfY2hlY2spIHsKICAgICAgICAgbWVtY3B5KCZwcmV2X3ZhbHMtPnN0YXRzLCAmbmV3X3ZhbHMtPnN0YXRzLCBzaXplb2YobmV3X3ZhbHMtPnN0YXRzKSk7CisgICAgICAgIF9jYWxjdWxhdGVfZW50cmllcyhwcmV2X3ZhbHMpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTI1OCw4ICszMTYsOCBAQAogICAgICAgICAvKgogICAgICAgICAgKiB1cGRhdGUgc3RyYWlnaHQgMzIgYml0IGNvdW50ZXJzCiAgICAgICAgICAqLworICAgICAgICBtZW1jcHkoJnByZXZfdmFscy0+c3RhdHMuY29sdW1uQXZhaWxbMF0sICZuZXdfdmFscy0+c3RhdHMuY29sdW1uQXZhaWxbMF0sIHNpemVvZihuZXdfdmFscy0+c3RhdHMuY29sdW1uQXZhaWwpKTsKICAgICAgICAgcHJldl92YWxzLT5zdGF0cy5JbkhkckVycm9ycyA9IG5ld192YWxzLT5zdGF0cy5JbkhkckVycm9yczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5Jbk5vUm91dGVzID0gbmV3X3ZhbHMtPnN0YXRzLkluTm9Sb3V0ZXM7CiAgICAgICAgIHByZXZfdmFscy0+c3RhdHMuSW5BZGRyRXJyb3JzID0gbmV3X3ZhbHMtPnN0YXRzLkluQWRkckVycm9yczsKICAgICAgICAgcHJldl92YWxzLT5zdGF0cy5JblVua25vd25Qcm90b3MgPSBuZXdfdmFscy0+c3RhdHMuSW5Vbmtub3duUHJvdG9zOwogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLkluVHJ1bmNhdGVkUGt0cyA9IG5ld192YWxzLT5zdGF0cy5JblRydW5jYXRlZFBrdHM7CkBAIC0yNjcsMTYgKzMyNSwzOCBAQAogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLlJlYXNtT0tzID0gbmV3X3ZhbHMtPnN0YXRzLlJlYXNtT0tzOwogICAgICAgICBwcmV2X3ZhbHMtPnN0YXRzLlJlYXNtRmFpbHMgPSBuZXdfdmFscy0+c3RhdHMuUmVhc21GYWlsczsKICAgICAgICAgcHJldl92YWxzLT5zdGF0cy5JbkRpc2NhcmRzID0gbmV3X3ZhbHMtPnN0YXRzLkluRGlzY2FyZHM7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0Tm9Sb3V0ZXMgPSBuZXdfdmFscy0+c3RhdHMuT3V0Tm9Sb3V0ZXM7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0RGlzY2FyZHMgPSBuZXdfdmFscy0+c3RhdHMuT3V0RGlzY2FyZHM7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0RnJhZ1JlcWRzID0gbmV3X3ZhbHMtPnN0YXRzLk91dEZyYWdSZXFkczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXRGcmFnT0tzID0gbmV3X3ZhbHMtPnN0YXRzLk91dEZyYWdPS3M7Ci0gICAgICAgIHByZXZfdmFscy0+c3RhdHMuT3V0RnJhZ0ZhaWxzID0gbmV3X3ZhbHMtPnN0YXRzLk91dEZyYWdGYWlsczsKLSAgICAgICAgcHJldl92YWxzLT5zdGF0cy5PdXRGcmFnQ3JlYXRlcyA9IG5ld192YWxzLT5zdGF0cy5PdXRGcmFnQ3JlYXRlczsKIAogICAgICAgICAvKgogICAgICAgICAgKiB1cGRhdGUgNjRiaXQgY291bnRlcnMKICAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ0luTm9Sb3V0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDSW5Ob1JvdXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENJbk5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dE5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dE5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dE5vUm91dGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dERpc2NhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dERpc2NhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dERpc2NhcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdSZXFkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuSENPdXRGcmFnUmVxZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPkhDT3V0RnJhZ1JlcWRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdPS3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDT3V0RnJhZ09LcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENPdXRGcmFnT0tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdGYWlscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuZXdfdmFscy0+c3RhdHMuSENPdXRGcmFnRmFpbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcHJldl92YWxzLT5vbGRfc3RhdHMtPkhDT3V0RnJhZ0ZhaWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CisgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5ld192YWxzLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnByZXZfdmFscy0+b2xkX3N0YXRzLT5IQ091dEZyYWdDcmVhdGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5lZWRfd3JhcF9jaGVjayk7CiAgICAgICAgIG5ldHNubXBfYzY0X2NoZWNrMzJfYW5kX3VwZGF0ZSgmcHJldl92YWxzLT5zdGF0cy5IQ0luUmVjZWl2ZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmV3X3ZhbHMtPnN0YXRzLkhDSW5SZWNlaXZlcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENJblJlY2VpdmVzLApAQCAtMzM0LDIwICs0MTQsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwcmV2X3ZhbHMtPm9sZF9zdGF0cy0+SENPdXRCY2FzdFBrdHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmVlZF93cmFwX2NoZWNrKTsKICAgICB9Ci0gICAgCisKICAgICAvKgogICAgICAqIGlmIHdlJ3ZlIGRlY2lkZWQgd2Ugbm8gbG9uZ2VyIG5lZWQgdG8gY2hlY2sgd3JhcHMsIGZyZWUgb2xkIHN0YXRzCiAgICAgICovCiAgICAgaWYgKDAgPT0gbmVlZF93cmFwX2NoZWNrKSB7CiAgICAgICAgIFNOTVBfRlJFRShwcmV2X3ZhbHMtPm9sZF9zdGF0cyk7Ci0gICAgfQotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIHVwZGF0ZSBvbGQgc3RhdHMgZnJvbSBuZXcgc3RhdHMuCiAgICAgICAgICAqIGNhcmVmdWwgLSBvbGRfc3RhdHMgaXMgYSBwb2ludGVyIHRvIHN0YXRzLi4uCiAgICAgICAgICAqLwogICAgICAgICBtZW1jcHkocHJldl92YWxzLT5vbGRfc3RhdHMsICZuZXdfdmFscy0+c3RhdHMsIHNpemVvZihuZXdfdmFscy0+c3RhdHMpKTsKICAgICB9CisKKyAgICBfY2FsY3VsYXRlX2VudHJpZXMocHJldl92YWxzKTsKKwogICAgIHJldHVybiAwOwogfQogCkBAIC0zNjgsNyArNDUwLDggQEAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwgImNvcHlcbiIpKTsKICAgICAKICAgICBpZiAoKE5VTEwgPT0gbGhzKSB8fCAoTlVMTCA9PSByaHMpIHx8Ci0gICAgICAgIChsaHMtPm5zX2lwX3ZlcnNpb24gIT0gcmhzLT5uc19pcF92ZXJzaW9uKSkKKyAgICAgICAgKGxocy0+aW5kZXhbMF0gIT0gcmhzLT5pbmRleFswXSkKKyAgICAgICAgfHwgKGxocy0+aW5kZXhbMV0gIT0gcmhzLT5pbmRleFsxXSkpCiAgICAgICAgIHJldHVybiAtMTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfbGludXguYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCmluZGV4IDNlMGZkODcuLjNiYTg2NDYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19saW51eC5jCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqICBJbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CisgKiAgaXBTeXN0ZW1TdGF0c1RhYmxlIGFuZCBpcElmU3RhdHNUYWJsZSBpbnRlcmZhY2UgTUlCIGFyY2hpdGVjdHVyZSBzdXBwb3J0CiAgKgogICogJElkJAogICovCkBAIC0xMCwxMiArMTAsMjAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pcHN0YXRzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaD4KIAorI2luY2x1ZGUgIi4uL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCIKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisKIHN0YXRpYyBpbnQgX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpOworc3RhdGljIGludCBfYWRkaXRpb25hbF9zeXN0ZW1zdGF0c192NChuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5KiBlbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncyk7CisKICNpZiBkZWZpbmVkIChORVRTTk1QX0VOQUJMRV9JUFY2KQogc3RhdGljIGludCBfc3lzdGVtc3RhdHNfdjYobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncyk7CiAjZW5kaWYKIAotCiB2b2lkCiBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19hcmNoX2luaXQodm9pZCkKIHsKQEAgLTYyLDcgKzcwLDcgQEAKICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm5vIGNvbnRhaW5lciBzcGVjaWZpZWQvZm91bmQgZm9yIGFjY2Vzc19zeXN0ZW1zdGF0c19cbiIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotCisgICAgCiAgICAgLyoKICAgICAgKiBsb2FkIHY0IGFuZCB2NiBzdGF0cy4gRXZlbiBpZiBvbmUgZmFpbHMsIHRyeSB0aGUgb3RoZXIuCiAgICAgICogSWYgdGhleSBoYXZlIHRoZSBzYW1lIHJjLCByZXR1cm4gaXQuIGlmIHRoZSBkaWZmZXIsIHJldHVybgpAQCAtODEsNiArODksOSBAQAogI2VuZGlmCiB9CiAKKy8qCisgKiBCYXNlZCBvbiBsb2FkX2ZsYWdzLCBsb2FkIGlwU3lzdGVtU3RhdHNUYWJsZSBvciBpcElmU3RhdHNUYWJsZSBmb3IgaXB2NCBlbnRyaWVzLiAKKyAqLwogc3RhdGljIGludAogX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCiB7CkBAIC05MiwxMSArMTAzLDE2IEBACiAgICAgaW50ICAgICAgICAgICAgIGxlbjsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2Nhbl92YWxzWzE5XTsKIAotICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXApXG4iLAorICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NCAoZmxhZ3MgJXgpXG4iLAogICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKIAogICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLwogCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjQgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgaWYgKCEoZGV2aW4gPSBmb3BlbigiL3Byb2MvbmV0L3NubXAiLCAiciIpKSkgewogICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwKICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBsb2FkIFN5c3RlbXN0YXRzIFRhYmxlIChsaW51eDEpXG4iKSk7CkBAIC0xNDQsNyArMTYwLDcgQEAKICAgICAgICAgd2hpbGUgKCpzdGF0cyA9PSAnICcpIC8qIHNraXAgc3BhY2VzIGJlZm9yZSBzdGF0cyAqLwogICAgICAgICAgICAgc3RhdHMrKzsKIAotICAgICAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgxKTsKKyAgICAgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMSwgMCk7CiAgICAgICAgIGlmKE5VTEwgPT0gZW50cnkpIHsKICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CkBAIC0xODUsMjMgKzIwMSw1NCBAQAogICAgICAgICBlbnRyeS0+c3RhdHMuSENJblJlY2VpdmVzLmhpZ2ggPSBzY2FuX3ZhbHNbMl0gPj4gMzI7CiAgICAgICAgIGVudHJ5LT5zdGF0cy5JbkhkckVycm9ycyA9IHNjYW5fdmFsc1szXTsKICAgICAgICAgZW50cnktPnN0YXRzLkluQWRkckVycm9ycyA9IHNjYW5fdmFsc1s0XTsKLSAgICAgICAgZW50cnktPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmxvdyA9IHNjYW5fdmFsc1s1XSAmIDB4ZmZmZmZmZmY7Ci0gICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5oaWdoID0gc2Nhbl92YWxzWzVdID4+IDMyOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IHNjYW5fdmFsc1s1XSAmIDB4ZmZmZmZmZmY7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaCA9IHNjYW5fdmFsc1s1XSA+PiAzMjsKICAgICAgICAgZW50cnktPnN0YXRzLkluVW5rbm93blByb3RvcyA9IHNjYW5fdmFsc1s2XTsKICAgICAgICAgZW50cnktPnN0YXRzLkluRGlzY2FyZHMgPSBzY2FuX3ZhbHNbN107CiAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luRGVsaXZlcnMubG93ID0gc2Nhbl92YWxzWzhdICYgMHhmZmZmZmZmZjsKICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5oaWdoID0gc2Nhbl92YWxzWzhdID4+IDMyOwogICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSBzY2FuX3ZhbHNbOV0gJiAweGZmZmZmZmZmOwogICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5oaWdoID0gc2Nhbl92YWxzWzldID4+IDMyOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RGlzY2FyZHMgPSBzY2FuX3ZhbHNbMTBdOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0Tm9Sb3V0ZXMgPSBzY2FuX3ZhbHNbMTFdOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXREaXNjYXJkcy5sb3cgPSBzY2FuX3ZhbHNbMTBdICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSBzY2FuX3ZhbHNbMTBdID4+IDMyOworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXROb1JvdXRlcy5sb3cgPSBzY2FuX3ZhbHNbMTFdICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBzY2FuX3ZhbHNbMTFdID4+IDMyOwogICAgICAgICAvKiBlbnRyeS0+c3RhdHMuID0gc2Nhbl92YWxzWzEyXTsgLyAqIFJlYXNtVGltZW91dCAqLwogICAgICAgICBlbnRyeS0+c3RhdHMuUmVhc21SZXFkcyA9IHNjYW5fdmFsc1sxM107CiAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbU9LcyA9IHNjYW5fdmFsc1sxNF07CiAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbUZhaWxzID0gc2Nhbl92YWxzWzE1XTsKLSAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdPS3MgPSBzY2FuX3ZhbHNbMTZdOwotICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ0ZhaWxzID0gc2Nhbl92YWxzWzE3XTsKLSAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdDcmVhdGVzID0gc2Nhbl92YWxzWzE4XTsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3cgPSBzY2FuX3ZhbHNbMTZdICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdPS3MuaGlnaCA9IHNjYW5fdmFsc1sxNl0gPj4gMzI7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3cgPSBzY2FuX3ZhbHNbMTddICYgMHhmZmZmZmZmZjs7CisgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5oaWdoID0gc2Nhbl92YWxzWzE3XSA+PiAzMjsKKyAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gc2Nhbl92YWxzWzE4XSAmIDB4ZmZmZmZmZmY7OworICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnQ3JlYXRlcy5oaWdoID0gc2Nhbl92YWxzWzE4XSA+PiAzMjsKKworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGT1JXREFUQUdSQU1TXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVERJU0NBUkRTXSA9IDE7CisgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1NdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdGQUlMU10gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFXSA9IDE7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogbG9hZCBhZGR0aW9uYWwgc3RhdGlzdGljcyBkZWZpbmVkIGJ5IFJGQyA0MjkzCisgICAgICAgICAqIEFzIHRoZXNlIGFyZSBzdXBwb3J0ZWQgbGludXggMi42LjIyIG9yIGxhdGVyLCBpdCBpcyBubyBwcm9ibGVtCisgICAgICAgICAqIGlmIGxvYWRpbmcgdGhlbSBhcmUgZmFpbGVkLgorICAgICAgICAgKi8KKyAgICAgICAgX2FkZGl0aW9uYWxfc3lzdGVtc3RhdHNfdjQoZW50cnksIGxvYWRfZmxhZ3MpOwogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCB0byBjb250YWluZXIKQEAgLTIxNiw0OCArMjYzLDEyMSBAQAogICAgIHJldHVybiAwOwogfQogICAgIAotI2lmIGRlZmluZWQgKE5FVFNOTVBfRU5BQkxFX0lQVjYpCisjZGVmaW5lIElQX0VYVF9IRUFEICJJcEV4dDoiCiBzdGF0aWMgaW50Ci1fc3lzdGVtc3RhdHNfdjYobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK19hZGRpdGlvbmFsX3N5c3RlbXN0YXRzX3Y0KG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkqIGVudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKIHsKICAgICBGSUxFICAgICAgICAgICAqZGV2aW47CiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07Ci0gICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOwotICAgIGNoYXIgICAgICAgICAgICpzdGF0cywgKnN0YXJ0ID0gbGluZTsKLSAgICBpbnQgICAgICAgICAgICAgbGVuLCByYzsKLSAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7Ci0gICAgY29uc3QgY2hhciAgICAgKmZpbGVuYW1lID0gIi9wcm9jL25ldC9zbm1wNiI7Ci0gICAgc3RhdGljIGludCAgICAgIHdhcm5lZF9vcGVuID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgc2Nhbl9jb3VudDsKKyAgICB1bnNpZ25lZCBsb25nIGxvbmcgc2Nhbl92YWxzWzEyXTsKKyAgICBpbnQgICAgICAgICAgICAgcmV0dmFsID0gMDsKIAotICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXUpXG4iLAotICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzOmNvbnRhaW5lcjphcmNoIiwKKyAgICAgICAgICAgICAgICAibG9hZCBhZGR0aW9uYWwgdjQgKGZsYWdzICV1KVxuIiwgbG9hZF9mbGFncykpOwogCi0gICAgbmV0c25tcF9hc3NlcnQoY29udGFpbmVyICE9IE5VTEwpOyAvKiBsb2FkIGZ1bmN0aW9uIHNob3VsZGEgY2hlY2tlZCB0aGlzICovCi0KLSAgICBlbnRyeSA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZSgyKTsKLSAgICBpZihOVUxMID09IGVudHJ5KQotICAgICAgICByZXR1cm4gLTM7Ci0gICAgCi0gICAgLyoKLSAgICAgKiB0cnkgdG8gb3BlbiBmaWxlLiBJZiB3ZSBjYW4ndCwgdGhhdCdzIG9rIC0gbWF5YmUgdGhlIG1vZHVsZSBoYXNuJ3QKLSAgICAgKiBiZWVuIGxvYWRlZCB5ZXQuCi0gICAgICovCi0gICAgaWYgKCEoZGV2aW4gPSBmb3BlbihmaWxlbmFtZSwgInIiKSkpIHsKKyAgICBpZiAoIShkZXZpbiA9IGZvcGVuKCIvcHJvYy9uZXQvbmV0c3RhdCIsICJyIikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLAotICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIGxvYWQgU3lzdGVtc3RhdHMgVGFibGUgKGxpbnV4MSlcbiIpKTsKLSAgICAgICAgaWYoIXdhcm5lZF9vcGVuKSB7Ci0gICAgICAgICAgICArK3dhcm5lZF9vcGVuOwotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNhbm5vdCBvcGVuICVzIC4uLlxuIiwgZmlsZW5hbWUpOwotICAgICAgICB9Ci0gICAgICAgIGZyZWUoZW50cnkpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBvcGVuIC9wcm9jL25ldC9uZXRzdGF0XG4iKSk7CisgICAgICAgIHJldHVybiAtMjsKICAgICB9CiAKICAgICAvKgotICAgICAqIFRoaXMgZmlsZSBwcm92aWRlcyB0aGUgc3RhdGlzdGljcyBmb3IgZWFjaCBzeXN0ZW1zdGF0cy4KKyAgICAgKiBHZXQgaGVhZGVyIGFuZCBzdGF0IGxpbmVzCisgICAgICovCisgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZGV2aW4pKSB7CisgICAgICAgIGlmIChzdHJuY21wKElQX0VYVF9IRUFELCBsaW5lLCBzaXplb2YoSVBfRVhUX0hFQUQpIC0gMSkgPT0gMCkgeworICAgICAgICAgICAgLyogbmV4dCBsaW5lIHNob3VsZCBpbmNsdWRlcyBJUHY0IGFkZHRpb25hbCBzdGF0aXN0aWNzICovCisgICAgICAgICAgICBpZiAoKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgZGV2aW4pKSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gLTQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc3RybmNtcChJUF9FWFRfSEVBRCwgbGluZSwgc2l6ZW9mKElQX0VYVF9IRUFEKSAtIDEpICE9IDApIHsKKyAgICAgICAgICAgICAgICByZXR2YWwgPSAtNDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbWVtc2V0KHNjYW5fdmFscywgMHgwLCBzaXplb2Yoc2Nhbl92YWxzKSk7CisgICAgICAgICAgICBzY2FuX2NvdW50ID0gc3NjYW5mKGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlKnMiICAgLyogaWdub3JlIGBJcEV4dDonICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSAlbGx1ICVsbHUgJWxsdSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbMF0sICZzY2FuX3ZhbHNbMV0sICZzY2FuX3ZhbHNbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbM10sICZzY2FuX3ZhbHNbNF0sICZzY2FuX3ZhbHNbNV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbNl0sICZzY2FuX3ZhbHNbN10sICZzY2FuX3ZhbHNbOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzY2FuX3ZhbHNbOV0sICZzY2FuX3ZhbHNbMTBdLCAmc2Nhbl92YWxzWzExXSk7CisgICAgICAgICAgICBpZiAoc2Nhbl9jb3VudCA8IDYpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHNjYW5uaW5nIGFkZHRpb25hbCBzeXN0ZW1zdGF0cyBkYXRhIgorICAgICAgICAgICAgICAgICAgICAgICAgIihtaW5pbXVtIGV4cGVjdGVkICVkLCBnb3QgJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgNiwgc2Nhbl9jb3VudCk7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gLTQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMubG93ICAgID0gc2Nhbl92YWxzWzBdICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTm9Sb3V0ZXMuaGlnaCAgID0gc2Nhbl92YWxzWzBdID4+IDMyOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkluVHJ1bmNhdGVkUGt0cyAgICAgPSBzY2FuX3ZhbHNbMV07CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3cgICA9IHNjYW5fdmFsc1syXSAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0UGt0cy5oaWdoICA9IHNjYW5fdmFsc1syXSA+PiAzMjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgID0gc2Nhbl92YWxzWzNdICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWxzWzNdID4+IDMyOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93ICAgPSBzY2FuX3ZhbHNbNF0gJiAweGZmZmZmZmZmOworICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5CY2FzdFBrdHMuaGlnaCAgPSBzY2FuX3ZhbHNbNF0gPj4gMzI7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRCY2FzdFBrdHMubG93ICA9IHNjYW5fdmFsc1s1XSAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRCY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsc1s1XSA+PiAzMjsKKworICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTk9ST1VURVNdID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSA9IDE7CisgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkJDQVNUUEtUU10gPSAxOworICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEJDQVNUUEtUU10gPSAxOworCSAgICBpZiAoc2Nhbl9jb3VudCA+PSAxMikgeworCQllbnRyeS0+c3RhdHMuSENJbk9jdGV0cy5sb3cgICAgICAgID0gc2Nhbl92YWxzWzZdICYgMHhmZmZmZmZmZjsKKwkJZW50cnktPnN0YXRzLkhDSW5PY3RldHMuaGlnaCAgICAgICA9IHNjYW5fdmFsc1s2XSA+PiAzMjsKKwkJZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdyAgICAgICA9IHNjYW5fdmFsc1s3XSAmIDB4ZmZmZmZmZmY7CisJCWVudHJ5LT5zdGF0cy5IQ091dE9jdGV0cy5oaWdoICAgICAgPSBzY2FuX3ZhbHNbN10gPj4gMzI7CisJCWVudHJ5LT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93ICAgPSBzY2FuX3ZhbHNbOF0gJiAweGZmZmZmZmZmOworCQllbnRyeS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmhpZ2ggID0gc2Nhbl92YWxzWzhdID4+IDMyOworCQllbnRyeS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5sb3cgID0gc2Nhbl92YWxzWzldICYgMHhmZmZmZmZmZjsKKwkJZW50cnktPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMuaGlnaCA9IHNjYW5fdmFsc1s5XSA+PiAzMjsKKwkJLyogMTAgYW5kIDExIGFyZSBJbi9PdXRCY2FzdE9jdGV0cyAqLworCQllbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFNdID0gMTsKKwkJZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE9DVEVUU10gPSAxOworCQllbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUU10gPSAxOworCQllbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RPQ1RFVFNdID0gMTsKKwkgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgZmNsb3NlKGRldmluKTsKKworICAgIGlmIChyZXR2YWwgPCAwKQorICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgIi9wcm9jL25ldC9uZXRzdGF0IGRvZXMgbm90IGluY2x1ZGUgYWRkdGlvbmFsIHN0YXRzXG4iKSk7CisKKyAgICByZXR1cm4gcmV0dmFsOworfQorICAgCisjaWYgZGVmaW5lZCAoTkVUU05NUF9FTkFCTEVfSVBWNikKKworLyoKKyAqIExvYWQgb25lIC9wcm9jL25ldC9zbm1wNiAtIGxpa2UgZmlsZSAoZS5nLiAvcHJvYy9uZXQvZGV2X3NubXA2KQorICovIAorc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX2ZpbGUobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnksIEZJTEUgKmRldmluKQoreworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIGNoYXIgICAgICAgICAgICpzdGF0cywgKnN0YXJ0ID0gbGluZTsKKyAgICBpbnQgICAgICAgICAgICAgbGVuLCByYzsKKyAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7CisKKyAgICAvKgogICAgICAqIFJlYWQgaW4gZWFjaCBsaW5lIGluIHR1cm4sIGlzb2xhdGUgdGhlIHN5c3RlbXN0YXRzIG5hbWUKICAgICAgKiAgIGFuZCByZXRyaWV2ZSAob3IgY3JlYXRlKSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIHN0cnVjdHVyZS4KICAgICAgKi8KKyAgICByYyA9IDA7CiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgc3RhcnQgPSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGRldmluKTsKICAgICAgICAgaWYgKE5VTEwgPT0gc3RhcnQpCkBAIC0yODcsNzcgKzQwNywxMjMgQEAKICAgICAgICAgICogICAgICBkYXRhIHN0cnVjdHVyZSBhY2NvcmRpbmdseS4KICAgICAgICAgICovCiAgICAgICAgIHNjYW5fdmFsID0gYXRvbGwoc3RhdHMpOwotICAgICAgICBpZiAoMCA9PSBzY2FuX3ZhbCkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIHJjID0gMDsKICAgICAgICAgaWYgKCdJJyA9PSBsaW5lWzNdKSB7IC8qIEluICovCiAgICAgICAgICAgICBpZiAoJ0EnID09IGxpbmVbNV0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSW5BZGRyRXJyb3JzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ0QnID09IGxpbmVbNV0pIHsKICAgICAgICAgICAgICAgICBpZiAoJ2UnID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5EZWxpdmVycy5sb3cgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOwogICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdpJyA9PSBsaW5lWzZdKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ2knID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluRGlzY2FyZHMgPSBzY2FuX3ZhbDsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdIJyA9PSBsaW5lWzVdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluSGRyRXJyb3JzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnTScgPT0gbGluZVs1XSkgewotICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGlmICgnUCcgPT0gbGluZVsxMF0pIHsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMubG93ID0gc2Nhbl92YWwgICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDSW5NY2FzdFBrdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzEwXSkgeworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdyA9IHNjYW5fdmFsICAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luTWNhc3RPY3RldHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVE9DVEVUU10gPSAxOworICAgICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdOJyA9PSBsaW5lWzVdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkluTm9Sb3V0ZXMgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk5vUm91dGVzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk5vUm91dGVzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5OT1JPVVRFU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnUicgPT0gbGluZVs1XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOwogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdUJyA9PSBsaW5lWzVdKSB7CiAgICAgICAgICAgICAgICAgaWYgKCdyJyA9PSBsaW5lWzZdKSB7CiAgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5JblRydW5jYXRlZFBrdHMgPSBzY2FuX3ZhbCAgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVFJVTkNBVEVEUEtUU10gPSAxOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ28nID09IGxpbmVbNl0pCiAgICAgICAgICAgICAgICAgICAgIDsgLyogVG9vQmlnIGlzbid0IGluIHRoZSBNSUIsIHNvIGlnbm9yZSBpdCAqLwogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgcmMgPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnVScgPT0gbGluZVs1XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5JblVua25vd25Qcm90b3MgPSBzY2FuX3ZhbDsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVU5LTk9XTlBST1RPU10gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICgnTycgPT0gbGluZVs1XSkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ0luT2N0ZXRzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENJbk9jdGV0cy5oaWdoID0gc2Nhbl92YWwgID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk9DVEVUU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgcmMgPSAxOwogICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzNdKSB7IC8qIE91dCAqLwogICAgICAgICAgICAgaWYgKCdEJyA9PSBsaW5lWzZdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dERpc2NhcmRzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RGlzY2FyZHMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ0YnID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnTScgPT0gbGluZVs2XSkgewotICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBpZiAoJ1AnID09IGxpbmVbMTFdKSB7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0UGt0cy5oaWdoID0gc2Nhbl92YWwgPj4gMzI7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVFBLVFNdID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzExXSkgeworICAgICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSA9IDE7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHJjID0gLTE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdOJyA9PSBsaW5lWzZdKSB7Ci0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dE5vUm91dGVzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0Tm9Sb3V0ZXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE5vUm91dGVzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdID0gMTsKICAgICAgICAgICAgIH0gZWxzZSBpZiAoJ1InID09IGxpbmVbNl0pIHsKICAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IHNjYW5fdmFsID4+IDMyOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRSRVFVRVNUU10gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICgnTycgPT0gbGluZVs2XSkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dE9jdGV0cy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0T2N0ZXRzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgIH0gZWxzZSBpZiAoJ1InID09IGxpbmVbM10pIHsgLyogUmVhc20gKi8KICAgICAgICAgICAgIGlmICgnRicgPT0gbGluZVs4XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbUZhaWxzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTUZBSUxTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdPJyA9PSBsaW5lWzhdKSB7CiAgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLlJlYXNtT0tzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10gPSAxOwogICAgICAgICAgICAgfSBlbHNlIGlmICgnUicgPT0gbGluZVs4XSkgewogICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5SZWFzbVJlcWRzID0gc2Nhbl92YWw7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSA9IDE7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKCdUJyA9PSBsaW5lWzhdKSB7CiAgICAgICAgICAgICAgICAgOyAvKiBubyBtaWIgZW50cnkgZm9yIHJlYXNtIHRpbWVvdXQgKi8KICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHJjID0gMTsKICAgICAgICAgfSBlbHNlIGlmICgnRicgPT0gbGluZVszXSkgeyAvKiBGcmFnICovCi0gICAgICAgICAgICBpZiAoJ0MnID09IGxpbmVbN10pCi0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdDcmVhdGVzID0gc2Nhbl92YWw7Ci0gICAgICAgICAgICBlbHNlIGlmICgnTycgPT0gbGluZVs3XSkKLSAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuT3V0RnJhZ09LcyA9IHNjYW5fdmFsOwotICAgICAgICAgICAgZWxzZSBpZiAoJ0YnID09IGxpbmVbN10pCi0gICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLk91dEZyYWdGYWlscyA9IHNjYW5fdmFsOwotICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKCdDJyA9PSBsaW5lWzddKSB7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gc2Nhbl92YWwgJiAweGZmZmZmZmZmOworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdID0gMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoJ08nID09IGxpbmVbN10pIHsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IHNjYW5fdmFsICYgMHhmZmZmZmZmZjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuSENPdXRGcmFnT0tzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR09LU10gPSAxOworICAgICAgICAgICAgfSBlbHNlIGlmICgnRicgPT0gbGluZVs3XSkgeworICAgICAgICAgICAgICAgIGVudHJ5LT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3cgPSBzY2FuX3ZhbCAmIDB4ZmZmZmZmZmY7CisgICAgICAgICAgICAgICAgZW50cnktPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmhpZ2ggPSBzY2FuX3ZhbCA+PiAzMjsKKyAgICAgICAgICAgICAgICBlbnRyeS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSA9IDE7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICByYyA9IDE7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmMgPSAxOwpAQCAtMzY1LDYgKzUzMSw0MiBAQAogICAgICAgICBpZiAocmMpCiAgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnN5c3RlbXN0YXRzIiwgInVua25vd24gc3RhdCAlc1xuIiwgbGluZSkpOwogICAgIH0KKyAgICAvKgorICAgICAqIExldCBEaXNjb250aW51aXR5VGltZSBhbmQgUmVmcmVzaFJhdGUgYWN0aXZlCisgICAgICovCisgICAgZW50cnktPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0gPSAxOworICAgIGVudHJ5LT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdID0gMTsKKworICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX3N5c3RlbXN0YXRzKG5ldHNubXBfY29udGFpbmVyKiBjb250YWluZXIsIHVfaW50IGxvYWRfZmxhZ3MpCit7CisgICAgRklMRSAqZGV2aW47CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgICAgICpmaWxlbmFtZSA9ICIvcHJvYy9uZXQvc25tcDYiOworICAgIGludCByYyA9IDA7CisgICAgCisgICAgZW50cnkgPSBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoMiwgMCk7CisgICAgaWYoTlVMTCA9PSBlbnRyeSkKKyAgICAgICAgcmV0dXJuIC0zOworICAgIAorICAgIC8qCisgICAgICogdHJ5IHRvIG9wZW4gZmlsZS4gSWYgd2UgY2FuJ3QsIHRoYXQncyBvayAtIG1heWJlIHRoZSBtb2R1bGUgaGFzbid0CisgICAgICogYmVlbiBsb2FkZWQgeWV0LgorICAgICAqLworICAgIGlmICghKGRldmluID0gZm9wZW4oZmlsZW5hbWUsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHMiLAorICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gbG9hZCBTeXN0ZW1zdGF0cyBUYWJsZSAobGludXgxKSwgY2Fubm90IG9wZW4gJXNcbiIsCisgICAgICAgICAgICAgICAgZmlsZW5hbWUpKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIHJjID0gX3N5c3RlbXN0YXRzX3Y2X2xvYWRfZmlsZShlbnRyeSwgZGV2aW4pOwogCiAgICAgZmNsb3NlKGRldmluKTsKIApAQCAtMzgwLDQgKzU4MiwxMTcgQEAKIAogICAgIHJldHVybiByYzsKIH0KKworI2RlZmluZSBERVZfU05NUDZfRElSTkFNRSAgICIvcHJvYy9uZXQvZGV2X3NubXA2IgorI2RlZmluZSBJRklOREVYX0xJTkUgICAgICAgICJpZkluZGV4IgorI2RlZmluZSBERVZfRklMRU5BTUVfTEVOICAgIDY0CisKKy8qCisgKiBsb2FkIGlwSWZTdGF0c1RhYmxlIGZvciBpcHY2IGVudHJpZXMKKyAqLworc3RhdGljIGludCAKK19zeXN0ZW1zdGF0c192Nl9sb2FkX2lmc3RhdHMobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBESVIgICAgICAgICAgICAqZGV2X3NubXA2X2RpcjsKKyAgICBzdHJ1Y3QgZGlyZW50ICAqZGV2X3NubXA2X2VudHJ5OworICAgIGNoYXIgICAgICAgICAgIGRldl9maWxlbmFtZVtERVZfRklMRU5BTUVfTEVOXTsKKyAgICBGSUxFICAgICAgICAgICAqZGV2aW47CisgICAgY2hhciAgICAgICAgICAgbGluZVsxMDI0XTsKKyAgICBjaGFyICAgICAgICAgICAqc3RhcnQgPSBsaW5lOworICAgIGNoYXIgICAgICAgICAgICpzY2FuX3N0cjsKKyAgICB1aW50bWF4X3QgICAgICAgc2Nhbl92YWw7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqZW50cnkgPSBOVUxMOworICAgICAgICAgICAgCisgICAgLyoKKyAgICAgKiB0cnkgdG8gb3BlbiAvcHJvYy9uZXQvZGV2X3NubXA2IGRpcmVjdG9yeS4gSWYgd2UgY2FuJ3QsIHRoYXQnIG9rIC0KKyAgICAgKiBtYXliZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoZSBjdXJyZW50IHJ1bm5pbmcga2VybmVsLgorICAgICAqLworICAgIGlmICgoZGV2X3NubXA2X2RpciA9IG9wZW5kaXIoREVWX1NOTVA2X0RJUk5BTUUpKSA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6aWZzdGF0cyIsCisgICAgICAgICJGYWlsZWQgdG8gbG9hZCBJUHY2IElmU3RhdHMgVGFibGUgKGxpbnV4KVxuIikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBSZWFkIGVhY2ggcGVyIGludGVyZmFjZSBzdGF0aXN0aWNzIHByb2MgZmlsZQorICAgICAqLworICAgIHdoaWxlICgoZGV2X3NubXA2X2VudHJ5ID0gcmVhZGRpcihkZXZfc25tcDZfZGlyKSkgIT0gTlVMTCkgeworICAgICAgICBpZiAoZGV2X3NubXA2X2VudHJ5LT5kX25hbWVbMF0gPT0gJy4nKQorICAgICAgICAgICAgY29udGludWU7CisgICAgCisgICAgICAgIGlmIChzbnByaW50ZihkZXZfZmlsZW5hbWUsIERFVl9GSUxFTkFNRV9MRU4sICIlcy8lcyIsIERFVl9TTk1QNl9ESVJOQU1FLAorICAgICAgICAgICAgICAgIGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lKSA+IERFVl9GSUxFTkFNRV9MRU4pIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJJbnRlcmZhY2UgbmFtZSAlcyBpcyB0b28gbG9uZ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgZGV2X3NubXA2X2VudHJ5LT5kX25hbWUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5VTEwgPT0gKGRldmluID0gZm9wZW4oZGV2X2ZpbGVuYW1lLCAiciIpKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkZhaWxlZCB0byBvcGVuICVzXG4iLCBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSWYgYSBzdGF0IGZpbGUgbmFtZSBpcyBtYWRlIG9mIGRpZ2l0cywgdGhlIG5hbWUgaXMgaW50ZXJmYWNlIGluZGV4LgorICAgICAgICAgKiBJZiBpdCBpcyBhbiBpbnRlcmZhY2UgbmFtZSwgdGhlIGZpbGUgaW5jbHVkZXMgYSBsaW5lIGxhYmVsZWQgaWZJbmRleC4KKyAgICAgICAgICovCisgICAgICAgIGlmIChpc2RpZ2l0KGRldl9zbm1wNl9lbnRyeS0+ZF9uYW1lWzBdKSkgeworICAgICAgICAgICAgc2Nhbl92YWwgPSBzdHJ0b3VsbChkZXZfc25tcDZfZW50cnktPmRfbmFtZSwgTlVMTCwgMCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSAoc3RhcnQgPSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGRldmluKSkpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgZG9lc24ndCBpbmNsdWRlIGFueSBsaW5lc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRldl9maWxlbmFtZSk7CisgICAgICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIGlmICgwICE9IHN0cm5jbXAoc3RhcnQsIElGSU5ERVhfTElORSwgNykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgZG9lc24ndCBpbmNsdWRlIGlmSW5kZXggbGluZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZfZmlsZW5hbWUpOworICAgICAgICAgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNjYW5fc3RyID0gc3RycmNocihsaW5lLCAnICcpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gc2Nhbl9zdHIpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXMgaXMgd3JvbmcgZm9ybWF0IiwgZGV2X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICBmY2xvc2UoZGV2aW4pOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2Nhbl92YWwgPSBzdHJ0b3VsbChzY2FuX3N0ciwgTlVMTCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGVudHJ5ID0gbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKDIsIHNjYW5fdmFsKTsKKyAgICAgICAgaWYoTlVMTCA9PSBlbnRyeSkgeworICAgICAgICAgICAgZmNsb3NlKGRldmluKTsKKyAgICAgICAgICAgIGNsb3NlZGlyKGRldl9zbm1wNl9kaXIpOworICAgICAgICAgICAgcmV0dXJuIC0zOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBfc3lzdGVtc3RhdHNfdjZfbG9hZF9maWxlKGVudHJ5LCBkZXZpbik7CisgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlbnRyeSk7CisgICAgICAgIGZjbG9zZShkZXZpbik7CisgICAgfQorICAgIGNsb3NlZGlyKGRldl9zbm1wNl9kaXIpOworICAgIHJldHVybiAwOworfQorCisvKgorICogQmFzZWQgb24gbG9hZF9mbGFncywgbG9hZCBpcFN5c3RlbVN0YXRzVGFibGUgb3IgaXBJZlN0YXRzVGFibGUgZm9yIGlwdjYgZW50cmllcy4gCisgKi8KK3N0YXRpYyBpbnQKK19zeXN0ZW1zdGF0c192NihuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6c3lzdGVtc3RhdHM6Y29udGFpbmVyOmFyY2giLCAibG9hZCB2NiAoZmxhZ3MgJXUpXG4iLAorICAgICAgICAgICAgICAgIGxvYWRfZmxhZ3MpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KGNvbnRhaW5lciAhPSBOVUxMKTsgLyogbG9hZCBmdW5jdGlvbiBzaG91bGRhIGNoZWNrZWQgdGhpcyAqLworCisgICAgaWYgKGxvYWRfZmxhZ3MgJiBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX0lGVEFCTEUpIHsKKyAgICAgICAgLyogbG9hZCBpcElmU3RhdHNUYWJsZSAqLworICAgICAgICByZXR1cm4gX3N5c3RlbXN0YXRzX3Y2X2xvYWRfaWZzdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGxvYWQgaXBTeXN0ZW1TdGF0c1RhYmxlICovCisgICAgICAgIHJldHVybiBfc3lzdGVtc3RhdHNfdjZfbG9hZF9zeXN0ZW1zdGF0cyhjb250YWluZXIsIGxvYWRfZmxhZ3MpOworICAgIH0KK30KICNlbmRpZiAvKiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0c19zb2xhcmlzMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMmFiMWEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHNfc29sYXJpczIuYwpAQCAtMCwwICsxLDIxMiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oPgorCisjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgorCitzdGF0aWMgaW50IF9zeXN0ZW1zdGF0cyhtaWJncm91cF9lLCBuZXRzbm1wX2NvbnRhaW5lciAqLCB1X2ludCk7CitzdGF0aWMgdm9pZCBfYWRkX2lwc3RhdHMobWliMl9pcElmU3RhdHNFbnRyeV90ICosIG1pYjJfaXBJZlN0YXRzRW50cnlfdCAqKTsKK3N0YXRpYyBpbnQgX2luc2VydF9lbnRyeShuZXRzbm1wX2NvbnRhaW5lciAqLCBtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKik7CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2FyY2hfaW5pdCh2b2lkKQoreworICAgIGluaXRfa2VybmVsX3N1bm9zNSgpOworfQorCisvKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGNvbnRhaW5lciBlcnJvcgorICogQHJldHZhbCAtMiBjb3VsZCBub3QgY3JlYXRlIGVudHJ5IChwcm9iYWJseSBtYWxsb2MpCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2FyY2hfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgbG9hZF9mbGFncykKK3sKKyAgICBpbnQgcmM7IAorICAgIAorICAgIGlmIChjb250YWluZXIgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuICgtMSk7CisKKyAgICBpZiAobG9hZF9mbGFncyAmIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSkKKwlyZXR1cm4gMDsgLyogd2UgZG8gbm90IHN1cHBvcnQgaXBJZlN0YXRzVGFibGUgeWV0ICovCisKKyAgICBpZiAoKHJjID0gX3N5c3RlbXN0YXRzKE1JQl9JUF9UUkFGRklDX1NUQVRTLCBjb250YWluZXIsIGxvYWRfZmxhZ3MpKSA8IDApCisgICAgICAgIHJldHVybiAocmMpOworI2lmIGRlZmluZWQoTkVUU05NUF9FTkFCTEVfSVBWNikKKyAgICBpZiAoKHJjID0gX3N5c3RlbXN0YXRzKE1JQl9JUDYsIGNvbnRhaW5lciwgbG9hZF9mbGFncykpIDwgMCkgeworICAgICAgICAgICAgbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyLAorICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfTk9GTEFHUyk7CisgICAgICAgIHJldHVybiAocmMpOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiAoMCk7Cit9CisKKy8qCisgKiBAcmV0dmFsIDAgc3VjY2VzcyAKKyAqIEByZXR2YWwgPDAgZXJyb3IKKyAqLworc3RhdGljIGludAorX3N5c3RlbXN0YXRzKG1pYmdyb3VwX2UgbWliLCBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCB1X2ludCBsb2FkX2ZsYWdzKQoreworICAgIG1pYjJfaXBJZlN0YXRzRW50cnlfdCBpcGUsIGlwdG90OworICAgIHJlcV9lIHJlcSA9IEdFVF9GSVJTVDsKKyAgICBpbnQgaXB2ZXJzaW9uID0gKG1pYiA9PSBNSUJfSVA2KSA/IE1JQjJfSU5FVEFERFJFU1NUWVBFX2lwdjYgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlCMl9JTkVUQUREUkVTU1RZUEVfaXB2NDsKKyAgICBtZW1zZXQoJmlwdG90LCAnXDAnLCBzaXplb2YoaXB0b3QpKTsKKworICAgIHdoaWxlIChnZXRNaWJzdGF0KG1pYiwgJmlwZSwgc2l6ZW9mKGlwZSksIHJlcSwgCisgICAgICAgICAgICAgICAgICAgICAgJkdldF9ldmVyeXRoaW5nLCBOVUxMKSA9PSAwKSB7IAorICAgICAgICByZXEgPSBHRVRfTkVYVDsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoaXBlLmlwSWZTdGF0c0lQVmVyc2lvbiA9PSBpcHZlcnNpb24pOworICAgICAgICBfYWRkX2lwc3RhdHMoJmlwdG90LCAmaXBlKTsKKyAgICB9CisgICAgaXB0b3QuaXBJZlN0YXRzSVBWZXJzaW9uID0gaXB2ZXJzaW9uOworICAgIHJldHVybiBfaW5zZXJ0X2VudHJ5KGNvbnRhaW5lciwgJmlwdG90KTsKK30KKworc3RhdGljIHZvaWQKK19hZGRfaXBzdGF0cyhtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKm8xLCBtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKm8yKQoreworICAgIG8xLT5pcElmU3RhdHNJbkhkckVycm9ycyArPSBvMi0+aXBJZlN0YXRzSW5IZHJFcnJvcnM7CisgICAgbzEtPmlwSWZTdGF0c0luVG9vQmlnRXJyb3JzICs9IG8yLT5pcElmU3RhdHNJblRvb0JpZ0Vycm9yczsKKyAgICBvMS0+aXBJZlN0YXRzSW5Ob1JvdXRlcyArPSBvMi0+aXBJZlN0YXRzSW5Ob1JvdXRlczsKKyAgICBvMS0+aXBJZlN0YXRzSW5BZGRyRXJyb3JzICs9IG8yLT5pcElmU3RhdHNJbkFkZHJFcnJvcnM7CisgICAgbzEtPmlwSWZTdGF0c0luVW5rbm93blByb3RvcyArPSBvMi0+aXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zOworICAgIG8xLT5pcElmU3RhdHNJblRydW5jYXRlZFBrdHMgKz0gbzItPmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSW5EaXNjYXJkcyArPSBvMi0+aXBJZlN0YXRzSW5EaXNjYXJkczsKKyAgICBvMS0+aXBJZlN0YXRzT3V0RGlzY2FyZHMgKz0gbzItPmlwSWZTdGF0c091dERpc2NhcmRzOworICAgIG8xLT5pcElmU3RhdHNPdXRGcmFnT0tzICs9IG8yLT5pcElmU3RhdHNPdXRGcmFnT0tzOworICAgIG8xLT5pcElmU3RhdHNPdXRGcmFnRmFpbHMgKz0gbzItPmlwSWZTdGF0c091dEZyYWdGYWlsczsKKyAgICBvMS0+aXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXMgKz0gbzItPmlwSWZTdGF0c091dEZyYWdDcmVhdGVzOworICAgIG8xLT5pcElmU3RhdHNSZWFzbVJlcWRzICs9IG8yLT5pcElmU3RhdHNSZWFzbVJlcWRzOworICAgIG8xLT5pcElmU3RhdHNSZWFzbU9LcyArPSBvMi0+aXBJZlN0YXRzUmVhc21PS3M7CisgICAgbzEtPmlwSWZTdGF0c1JlYXNtRmFpbHMgKz0gbzItPmlwSWZTdGF0c1JlYXNtRmFpbHM7CisgICAgbzEtPmlwSWZTdGF0c091dE5vUm91dGVzICs9IG8yLT5pcElmU3RhdHNPdXROb1JvdXRlczsKKyAgICBvMS0+aXBJZlN0YXRzUmVhc21EdXBsaWNhdGVzICs9IG8yLT5pcElmU3RhdHNSZWFzbUR1cGxpY2F0ZXM7CisgICAgbzEtPmlwSWZTdGF0c1JlYXNtUGFydER1cHMgKz0gbzItPmlwSWZTdGF0c1JlYXNtUGFydER1cHM7CisgICAgbzEtPmlwSWZTdGF0c0ZvcndQcm9oaWJpdHMgKz0gbzItPmlwSWZTdGF0c0ZvcndQcm9oaWJpdHM7CisgICAgbzEtPnVkcEluQ2tzdW1FcnJzICs9IG8yLT51ZHBJbkNrc3VtRXJyczsKKyAgICBvMS0+dWRwSW5PdmVyZmxvd3MgKz0gbzItPnVkcEluT3ZlcmZsb3dzOworICAgIG8xLT5yYXdpcEluT3ZlcmZsb3dzICs9IG8yLT5yYXdpcEluT3ZlcmZsb3dzOworICAgIG8xLT5pcElmU3RhdHNJbldyb25nSVBWZXJzaW9uICs9IG8yLT5pcElmU3RhdHNJbldyb25nSVBWZXJzaW9uOworICAgIG8xLT5pcElmU3RhdHNPdXRXcm9uZ0lQVmVyc2lvbiArPSBvMi0+aXBJZlN0YXRzT3V0V3JvbmdJUFZlcnNpb247CisgICAgbzEtPmlwSWZTdGF0c091dFN3aXRjaElQVmVyc2lvbiArPSBvMi0+aXBJZlN0YXRzT3V0U3dpdGNoSVBWZXJzaW9uOworICAgIG8xLT5pcElmU3RhdHNIQ0luUmVjZWl2ZXMgKz0gbzItPmlwSWZTdGF0c0hDSW5SZWNlaXZlczsKKyAgICBvMS0+aXBJZlN0YXRzSENJbk9jdGV0cyArPSBvMi0+aXBJZlN0YXRzSENJbk9jdGV0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgKz0gbzItPmlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zOworICAgIG8xLT5pcElmU3RhdHNIQ0luRGVsaXZlcnMgKz0gbzItPmlwSWZTdGF0c0hDSW5EZWxpdmVyczsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRSZXF1ZXN0cyArPSBvMi0+aXBJZlN0YXRzSENPdXRSZXF1ZXN0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zICs9IG8yLT5pcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXM7CisgICAgbzEtPmlwSWZTdGF0c091dEZyYWdSZXFkcyArPSBvMi0+aXBJZlN0YXRzT3V0RnJhZ1JlcWRzOworICAgIG8xLT5pcElmU3RhdHNIQ091dFRyYW5zbWl0cyArPSBvMi0+aXBJZlN0YXRzSENPdXRUcmFuc21pdHM7CisgICAgbzEtPmlwSWZTdGF0c0hDT3V0T2N0ZXRzICs9IG8yLT5pcElmU3RhdHNIQ091dE9jdGV0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbk1jYXN0UGt0cyArPSBvMi0+aXBJZlN0YXRzSENJbk1jYXN0UGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzICs9IG8yLT5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHM7CisgICAgbzEtPmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzICs9IG8yLT5pcElmU3RhdHNIQ091dE1jYXN0UGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cyArPSBvMi0+aXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0czsKKyAgICBvMS0+aXBJZlN0YXRzSENJbkJjYXN0UGt0cyArPSBvMi0+aXBJZlN0YXRzSENJbkJjYXN0UGt0czsKKyAgICBvMS0+aXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgKz0gbzItPmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzOworICAgIG8xLT5pcHNlY0luU3VjY2VlZGVkICs9IG8yLT5pcHNlY0luU3VjY2VlZGVkOworICAgIG8xLT5pcHNlY0luRmFpbGVkICs9IG8yLT5pcHNlY0luRmFpbGVkOworICAgIG8xLT5pcEluQ2tzdW1FcnJzICs9IG8yLT5pcEluQ2tzdW1FcnJzOworICAgIG8xLT50Y3BJbkVycnMgKz0gbzItPnRjcEluRXJyczsKKyAgICBvMS0+dWRwTm9Qb3J0cyArPSBvMi0+dWRwTm9Qb3J0czsKK30KKworLyoKKyAqIEByZXR2YWwgMCBlbnRyeSB3YXMgc3VjY2Vzc2Z1bGx5IGluc2VydGVkIGluIHRoZSBjb250YWluZXIgCisgKiBAcmV0dmFsIC0xIGNvbnRhaW5lciBlcnJvcgorICogQHJldHZhbCAtMiBtZW1vcnkgYWxsb2NhdGlvbiBlcnJvcgorICovCitzdGF0aWMgaW50IAorX2luc2VydF9lbnRyeShuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBtaWIyX2lwSWZTdGF0c0VudHJ5X3QgKmlwZSkKK3sKKyAgICBpbnQgaTsKKyAgICAKKyAgICBuZXRzbm1wX3N5c3RlbXN0YXRzX2VudHJ5ICplcCA9CisgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2NyZWF0ZShpcGUtPmlwSWZTdGF0c0lQVmVyc2lvbiwgMCk7IAorCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpzeXN0ZW1zdGF0czphcmNoIiwgImluc2VydCBlbnRyeSBmb3IgdiVkXG4iLAorICAgICAgICAgICAgICAgIGlwZS0+aXBJZlN0YXRzSVBWZXJzaW9uKSk7IAorICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczpzeXN0ZW1zdGF0czphcmNoIiwgImluc2VydCBmYWlsZWQgKGFsbG9jKSIpKTsKKyAgICAgICAgcmV0dXJuICgtMik7CisgICAgfQorCisgICAgZXAtPnN0YXRzLkhDSW5SZWNlaXZlcy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ0luUmVjZWl2ZXMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENJblJlY2VpdmVzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ0luT2N0ZXRzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5PY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luT2N0ZXRzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDSW5PY3RldHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkluSGRyRXJyb3JzID0gaXBlLT5pcElmU3RhdHNJbkhkckVycm9yczsKKyAgICBlcC0+c3RhdHMuSW5BZGRyRXJyb3JzID0gaXBlLT5pcElmU3RhdHNJbkFkZHJFcnJvcnM7CisgICAgZXAtPnN0YXRzLkluVW5rbm93blByb3RvcyA9IGlwZS0+aXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zOworICAgIGVwLT5zdGF0cy5JblRydW5jYXRlZFBrdHMgPSBpcGUtPmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0czsKKyAgICBlcC0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5oaWdoID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgPj4gMzI7CisgICAgZXAtPnN0YXRzLlJlYXNtUmVxZHMgPSBpcGUtPmlwSWZTdGF0c1JlYXNtUmVxZHM7IAorICAgIGVwLT5zdGF0cy5SZWFzbU9LcyA9IGlwZS0+aXBJZlN0YXRzUmVhc21PS3M7IAorICAgIGVwLT5zdGF0cy5SZWFzbUZhaWxzID0gaXBlLT5pcElmU3RhdHNSZWFzbUZhaWxzOyAKKyAgICBlcC0+c3RhdHMuSW5EaXNjYXJkcyA9IGlwZS0+aXBJZlN0YXRzSW5EaXNjYXJkczsKKyAgICBlcC0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5EZWxpdmVycyAmIDB4ZmZmZmZmZmY7IAorICAgIGVwLT5zdGF0cy5IQ0luRGVsaXZlcnMuaGlnaCA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDSW5EZWxpdmVycyA+PiAzMjsgCisgICAgZXAtPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93ID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRSZXF1ZXN0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0UmVxdWVzdHMuaGlnaCA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0UmVxdWVzdHMgPj4gMzI7IAorICAgIGVwLT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdyA9IGlwZS0+aXBJZlN0YXRzT3V0Tm9Sb3V0ZXMgJiAweGZmZmZmZmZmOyAKKyAgICBlcC0+c3RhdHMuSENPdXROb1JvdXRlcy5oaWdoID0gMDsKKyAgICBlcC0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5oaWdoID0gCisgICAgICAgIGlwZS0+aXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdyA9IGlwZS0+aXBJZlN0YXRzT3V0RGlzY2FyZHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ091dERpc2NhcmRzLmhpZ2ggPSAwOyAKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdyA9IGlwZS0+aXBJZlN0YXRzT3V0RnJhZ09LcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0RnJhZ09Lcy5oaWdoID0gMDsKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnRmFpbHMubG93ID0gaXBlLT5pcElmU3RhdHNPdXRGcmFnRmFpbHMgJiAweGZmZmZmZmZmOyAKKyAgICBlcC0+c3RhdHMuSENPdXRGcmFnRmFpbHMuaGlnaCA9IDA7CisgICAgZXAtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMubG93ID0gaXBlLT5pcElmU3RhdHNPdXRGcmFnQ3JlYXRlcyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0RnJhZ0NyZWF0ZXMuaGlnaCA9IDA7CisgICAgZXAtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENPdXRUcmFuc21pdHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENPdXRUcmFuc21pdHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdyA9IGlwZS0+aXBJZlN0YXRzSENPdXRPY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ091dE9jdGV0cy5oaWdoID0gaXBlLT5pcElmU3RhdHNIQ091dE9jdGV0cyA+PiAzMjsKKyAgICBlcC0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3cgPSBpcGUtPmlwSWZTdGF0c0hDSW5NY2FzdFBrdHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDSW5NY2FzdFBrdHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDSW5NY2FzdE9jdGV0cy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMuaGlnaCA9IGlwZS0+aXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dE1jYXN0UGt0cy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ091dE1jYXN0UGt0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdyA9IAorICAgICAgICBpcGUtPmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgJiAweGZmZmZmZmZmOworICAgIGVwLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgPj4gMzI7CisgICAgZXAtPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93ID0gaXBlLT5pcElmU3RhdHNIQ0luQmNhc3RQa3RzICYgMHhmZmZmZmZmZjsKKyAgICBlcC0+c3RhdHMuSENJbkJjYXN0UGt0cy5oaWdoID0gaXBlLT5pcElmU3RhdHNIQ0luQmNhc3RQa3RzID4+IDMyOworICAgIGVwLT5zdGF0cy5IQ091dEJjYXN0UGt0cy5sb3cgPSAKKyAgICAgICAgaXBlLT5pcElmU3RhdHNIQ091dEJjYXN0UGt0cyAmIDB4ZmZmZmZmZmY7CisgICAgZXAtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmhpZ2ggPSBpcGUtPmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzID4+IDMyOworCisgICAgZm9yIChpPTA7IGk8PUlQU1lTVEVNU1RBVFNUQUJMRV9MQVNUOyBpKyspCisgICAgICAgIGVwLT5zdGF0cy5jb2x1bW5BdmFpbFtpXSA9IDE7CisgICAgCisgICAgaWYgKENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCBlcCkgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVCgoImFjY2VzczpzeXN0ZW1zdGF0czphcmNoIiwgInVuYWJsZSB0byBpbnNlcnQgZW50cnkiKSk7IAorICAgICAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9mcmVlKGVwKTsgCisgICAgICAgIHJldHVybiAoLTEpOworICAgIH0KKyAgICByZXR1cm4gKDApOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5jCmluZGV4IDY1YWE4ZTMuLmFhYWUyZTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImluZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX29pZFtdID0geyBJTkVUTkVUVE9NRURJQVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfb2lkW10gPSB7IElORVRORVRUT01FRElBVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGluZXROZXRUb01lZGlhVGFibGVfb2lkKTsKIAogaW5ldE5ldFRvTWVkaWFUYWJsZV9yZWdpc3RyYXRpb24gaW5ldE5ldFRvTWVkaWFUYWJsZV91c2VyX2NvbnRleHQ7CkBAIC0xNTksMTAgKzE1OSwxMCBAQAogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CiAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOwotCiAgICAgLyoKICAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBpbmV0TmV0VG9NZWRpYVRhYmxlIHJvd3JlcSBjbGVhbnVwLgogICAgICAqLworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4LT5kYXRhKTsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KIAogLyoqCkBAIC01MzYsMTEgKzUzNiw3IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGluZXROZXRUb01lZGlhTGFzdFVwZGF0ZWQgZGF0YS4KICAgICAgKiBjb3B5ICgqIGluZXROZXRUb01lZGlhTGFzdFVwZGF0ZWRfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLwotICAgIC8qCi0gICAgICogeHh4LXJrczogZ2V0IHRoaXMgdmFsdWU/Ci0gICAgICovCi0gICAgcmV0dXJuIE1GRF9TS0lQOwotCisgICAgKmluZXROZXRUb01lZGlhTGFzdFVwZGF0ZWRfdmFsX3B0ciA9IHJvd3JlcV9jdHgtPmRhdGEtPmFycF9sYXN0X3VwZGF0ZWQ7CiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYUxhc3RVcGRhdGVkX2dldCAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlLmgKaW5kZXggN2YzZmNlMi4uNjMyODU0YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGUuaApAQCAtMTU1LDYgKzE1NSw5IEBACiAgICAgICAgIGludCAgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVJvd1N0YXR1cywKICAgICAgICAgICAgIGluZXROZXRUb01lZGlhUm93U3RhdHVzX3VuZG87CiAKKyAgICAgICAgLyogZmxhZywgaWYgdGhlIHJvdyB3YXMgcHJlc2VudCBpbiBsYXN0IHJlYWQgZnJvbSBvcGVyYXRpbmcgc3lzdGVtICovCisgICAgICAgIGludCB2YWxpZDsKKwogICAgICAgICAvKgogICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCiAgICAgICAgICAqLwpAQCAtMjAwLDggKzIwMyw4IEBACiAgICAgICAgICogaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGluZXROZXRUb01lZGlhVGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCA4MTk0NTM0Li5lMThmOThhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0xMjksMTcgKzEyOSwzNCBAQAogICAgICAqIGNhY2hlLT5lbmFibGVkIHRvIDAuCiAgICAgICovCiAgICAgY2FjaGUtPnRpbWVvdXQgPSBJTkVUTkVUVE9NRURJQVRBQkxFX0NBQ0hFX1RJTUVPVVQ7IC8qIHNlY29uZHMgKi8KKworICAgIC8qIFdlIHdhbnQgdG8gbWFudWFsbHkgZGVsZXRlIGVudHJpZXMgaW4gdGhlIGNhY2hlIHRvIGtlZXAgTGFzdFVwZGF0ZWQKKyAgICAgKiB0aW1lc3RhbXAuICovCisgICAgY2FjaGUtPmZsYWdzIHw9IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FECisgICAgICAgICAgICAgICAgICAgIHwgTkVUU05NUF9DQUNIRV9BVVRPX1JFTE9BRDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5ldE5ldFRvTWVkaWFUYWJsZV9jb250YWluZXJfaW5pdCAqLwogCiAvKioKLSAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKLSAqCisgKiBQdXQgYWxsIGVudHJpZXMgd2l0aCB2YWxpZCAhPTEgdG8gdGhlIGxpc3QgdG8gZGVsZXRlLgogICovCiBzdGF0aWMgdm9pZAotX3NuYXJmX2FycF9lbnRyeShuZXRzbm1wX2FycF9lbnRyeSAqYXJwX2VudHJ5LAorX2NvbGxlY3RfaW52YWxpZF9hcnBfY3R4KGluZXROZXRUb01lZGlhVGFibGVfcm93cmVxX2N0eCAqY3R4LAorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG9fZGVsZXRlKQoreworICAgIGlmIChjdHgtPnZhbGlkKQorICAgICAgICAgICAgY3R4LT52YWxpZCA9IDA7CisgICAgZWxzZQorICAgICAgICBDT05UQUlORVJfSU5TRVJUKHRvX2RlbGV0ZSwgY3R4KTsKK30KKworLyoqCisgKiBjaGVjayBlbnRyeSBmb3IgdXBkYXRlCisgKi8KK3N0YXRpYyB2b2lkCitfYWRkX29yX3VwZGF0ZV9hcnBfZW50cnkobmV0c25tcF9hcnBfZW50cnkgKmFycF9lbnRyeSwKICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKIHsKLSAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4LCAqb2xkOwogICAgIGludCAgICAgICAgICAgICBpbmV0QWRkcmVzc1R5cGU7CiAKICAgICBERUJVR1RSQUNFOwpAQCAtMTU1LDcgKzE3Miw3IEBACiAgICAgICAgIGluZXRBZGRyZXNzVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OwogICAgICAgICBicmVhazsKIAotICAgIGNhc2UgNjoKKyAgICBjYXNlIDE2OgogICAgICAgICBpbmV0QWRkcmVzc1R5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKICAgICAgICAgYnJlYWs7CiAKQEAgLTE2Niw4ICsxODMsOCBAQAogICAgIH0KIAogICAgIC8qCi0gICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpLCB0aGVuIGFkZCBpdCB0bwotICAgICAqIHRoZSBjb250YWluZXIKKyAgICAgKiBhbGxvY2F0ZSBhbiByb3cgY29udGV4dCBhbmQgc2V0IHRoZSBpbmRleChlcyksIHRoZW4gdHJ5IHRvIGZpbmQgaXQgaW4KKyAgICAgKiB0aGUgY2FjaGUuCiAgICAgICovCiAgICAgcm93cmVxX2N0eCA9IGluZXROZXRUb01lZGlhVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChhcnBfZW50cnksIE5VTEwpOwogICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgpAQCAtMTc1LDggKzE5MiwyMyBAQAogICAgICAgICAgKHJvd3JlcV9jdHgsIHJvd3JlcV9jdHgtPmRhdGEtPmlmX2luZGV4LCBpbmV0QWRkcmVzc1R5cGUsCiAgICAgICAgICAgKGNoYXIgKikgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2lwYWRkcmVzcywKICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5hcnBfaXBhZGRyZXNzX2xlbikpKSB7Ci0gICAgICAgIHJvd3JlcV9jdHgtPmluZXROZXRUb01lZGlhUm93U3RhdHVzID0gUk9XU1RBVFVTX0FDVElWRTsKLSAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworCisgICAgICAgIC8qIHRyeSB0byBmaW5kIG9sZCBlbnRyeSAqLworICAgICAgICBvbGQgPSBDT05UQUlORVJfRklORChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICBpZiAob2xkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIC8qIHRoZSBlbnRyeSBpcyBhbHJlYWR5IHRoZXJlLCB1cGRhdGUgaXQgKi8KKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2FycF9lbnRyeV91cGRhdGUob2xkLT5kYXRhLCBhcnBfZW50cnkpOworICAgICAgICAgICAgb2xkLT52YWxpZCA9IDE7IC8qIGRvIG5vdCBkZWxldGUgaXQgaW4gZm9sbG93aW5nIHN3ZWVwICovCisgICAgICAgICAgICAvKiBkZWxldGUgdGhlIGF1eGlsaWFyeSBjb250ZXh0IHdlIHVzZWQgdG8gZmluZCB0aGUgZW50cnkKKyAgICAgICAgICAgICAqICh0aGlzIGRlbGV0ZXMgYWxzbyBhcnBfZW50cnkpICovCisgICAgICAgICAgICBpbmV0TmV0VG9NZWRpYVRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIGNyZWF0ZSBuZXcgZW50cnkgYW5kIGFkZCBpdCB0byB0aGUgY2FjaGUqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+aW5ldE5ldFRvTWVkaWFSb3dTdGF0dXMgPSBST1dTVEFUVVNfQUNUSVZFOworICAgICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+YXJwX2xhc3RfdXBkYXRlZCA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworICAgICAgICAgICAgcm93cmVxX2N0eC0+dmFsaWQgPSAxOyAvKiBkbyBub3QgZGVsZXRlIGl0IGluIGZvbGxvd2luZyBzd2VlcCAqLworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKHJvd3JlcV9jdHgpIHsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgpAQCAtMjUzLDYgKzI4NSw3IEBACiBpbmV0TmV0VG9NZWRpYVRhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCiB7CiAgICAgbmV0c25tcF9jb250YWluZXIgKmFycF9jb250YWluZXI7CisgICAgbmV0c25tcF9jb250YWluZXIgKnRvX2RlbGV0ZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImxpZm8iKTsKIAogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmluZXROZXRUb01lZGlhVGFibGU6aW5ldE5ldFRvTWVkaWFUYWJsZV9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOwogCkBAIC0yNzIsMTcgKzMwNSwzMyBAQAogICAgICAqIHdlIGp1c3QgZ290IGEgZnJlc2ggY29weSBvZiBkYXRhLiBzbmFyZiBkYXRhCiAgICAgICovCiAgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGFycF9jb250YWluZXIsCi0gICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfc25hcmZfYXJwX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2FkZF9vcl91cGRhdGVfYXJwX2VudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOwogCiAgICAgLyoKKyAgICAgKiBEZWxldGUgYWxsIGNhY2hlZCBlbnRyaWVzLCB3aGljaCB3ZXJlIG5vdCBwcm92aWRlZCBieQorICAgICAqIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfbG9hZAorICAgICAqLworICAgIENPTlRBSU5FUl9GT1JfRUFDSChjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29sbGVjdF9pbnZhbGlkX2FycF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgIHRvX2RlbGV0ZSk7CisgICAgd2hpbGUgKENPTlRBSU5FUl9TSVpFKHRvX2RlbGV0ZSkpIHsKKyAgICAgICAgaW5ldE5ldFRvTWVkaWFUYWJsZV9yb3dyZXFfY3R4ICpjdHggPSBDT05UQUlORVJfRklSU1QodG9fZGVsZXRlKTsKKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShjb250YWluZXIsIGN0eCk7CisgICAgICAgIGluZXROZXRUb01lZGlhVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGN0eCk7CisgICAgICAgIENPTlRBSU5FUl9SRU1PVkUodG9fZGVsZXRlLCBOVUxMKTsKKyAgICB9CisgICAgQ09OVEFJTkVSX0ZSRUUodG9fZGVsZXRlKTsKKworICAgIC8qCiAgICAgICogZnJlZSB0aGUgY29udGFpbmVyLiB3ZSd2ZSBlaXRoZXIgY2xhaW1lZCBlYWNoIGVudHJ5LCBvciByZWxlYXNlZCBpdCwKICAgICAgKiBzbyB0aGUgYWNjZXNzIGZ1bmN0aW9uIGRvZXNuJ3QgbmVlZCB0byBjbGVhciB0aGUgY29udGFpbmVyLgogICAgICAqLwogICAgIG5ldHNubXBfYWNjZXNzX2FycF9jb250YWluZXJfZnJlZShhcnBfY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19BUlBfRlJFRV9ET05UX0NMRUFSKTsKIAotICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NhY2hlX2xvYWQiLCAiJWQgcmVjb3Jkc1xuIiwgQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aW5ldE5ldFRvTWVkaWFUYWJsZTppbmV0TmV0VG9NZWRpYVRhYmxlX2NhY2hlX2xvYWQiLAorICAgICAgICAgICAgICAgIiUiIE5FVFNOTVBfUFJJeiAidSByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZXROZXRUb01lZGlhVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaW5ldE5ldFRvTWVkaWFUYWJsZS9pbmV0TmV0VG9NZWRpYVRhYmxlX2ludGVyZmFjZS5jCmluZGV4IDQyZWJjYzAuLjE4Y2MzM2EgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pbmV0TmV0VG9NZWRpYVRhYmxlL2luZXROZXRUb01lZGlhVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2luZXROZXRUb01lZGlhVGFibGUvaW5ldE5ldFRvTWVkaWFUYWJsZV9pbnRlcmZhY2UuYwpAQCAtNzM1LDYgKzczNSw3IEBACiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaW5ldE5ldFRvTWVkaWFUYWJsZV9wb3N0X3JlcXVlc3QgKi8KIAorCiAvKioKICAqIEBpbnRlcm5hbAogICogd3JhcHBlcgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYwppbmRleCAxNmUyMjAwLi4xNmRiNTA5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAiaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRbXSA9IHsgSVBBRERSRVNTUFJFRklYVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZFtdID0geyBJUEFERFJFU1NQUkVGSVhUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZCk7CiAKIGlwQWRkcmVzc1ByZWZpeFRhYmxlX3JlZ2lzdHJhdGlvbiBpcEFkZHJlc3NQcmVmaXhUYWJsZV91c2VyX2NvbnRleHQ7CkBAIC0zOTUsMTAgKzM5NSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwQWRkcmVzc1ByZWZpeE9yaWdpbiBkYXRhLgogICAgICAqIGNvcHkgKCogaXBBZGRyZXNzUHJlZml4T3JpZ2luX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KLSAgICAoKmlwQWRkcmVzc1ByZWZpeE9yaWdpbl92YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuaXBBZGRyZXNzUHJlZml4T3JpZ2luOwotCi0gICAgcmV0dXJuIE1GRF9TVUNDRVNTOworICAgICAgICAgICgqaXBBZGRyZXNzUHJlZml4T3JpZ2luX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS5pcEFkZHJlc3NQcmVmaXhPcmlnaW47CisgICAgCisgICAgICAgICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBBZGRyZXNzUHJlZml4T3JpZ2luX2dldCAqLwogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaAppbmRleCBkZmU5NzNlLi4yMDFlNTU3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGUuaApAQCAtMjExLDggKzIxMSw4IEBACiAgICAgICAgICogaXBBZGRyZXNzUHJlZml4VGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CiAgICAgICAgIChpcEFkZHJlc3NQcmVmaXhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwQWRkcmVzc1ByZWZpeFRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcEFkZHJlc3NQcmVmaXhUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXBBZGRyZXNzUHJlZml4VGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfY29uc3RhbnRzLmgKaW5kZXggNjZmMjEwOS4uNWVjYWRlNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1ByZWZpeFRhYmxlL2lwQWRkcmVzc1ByZWZpeFRhYmxlX2NvbnN0YW50cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9jb25zdGFudHMuaApAQCAtMTM3LDMgKzEzNywxNyBAQAogfQogI2VuZGlmCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQQUREUkVTU1BSRUZJWFRBQkxFX09JRFNfSCAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQWRkaXRpb25hbCBjb25zdGFudHMgYW5kIGRlZmluaXRpb25zIGZvciBjb21tb24gaW1wbGVtZW50YXRpb24KKyovCisjZGVmaW5lIElORklOSVRZX0xJRkVfVElNRSAgICAgIDB4RkZGRkZGRkZVCisjZGVmaW5lIE5JUDYoYWRkcikgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzBdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzFdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzJdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzNdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzRdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzVdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzZdKSwgXAorICAgICAgICBudG9ocygoYWRkcikuczZfYWRkcjE2WzddKQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzUHJlZml4VGFibGUvaXBBZGRyZXNzUHJlZml4VGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDJmNjRjYmUuLjkxNTllMTIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NQcmVmaXhUYWJsZS9pcEFkZHJlc3NQcmVmaXhUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yNTEsNiArMjUxLDIzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlhX2FkZHJlc3NfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9wcmVmaXhfbGVuKTsKKyAgICAgICAgbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSgmcm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZQcmVmZXJyZWRMaWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvd3JlcV9jdHgtPmRhdGEuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWcsICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9wcmVmZXJlZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV92YWxpZF9saWZldGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9vbmxpbmtfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9hdXRvbm9tb3VzX2ZsYWcpOworCiAgICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPQogICAgICAgICAgICAgaXBBZGRyZXNzUHJlZml4VGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcm93cmVxX2N0eC0+ZGF0YS0+CkBAIC0yNzgsOCArMjk1LDE0IEBACiAgICAgICAgICAqIFRPRE86MzUyOnI6IHwgICB8LT4gcG9wdWxhdGUgaXBBZGRyZXNzUHJlZml4VGFibGUgZGF0YSBjb250ZXh0LgogICAgICAgICAgKiBQb3B1bGF0ZSBkYXRhIGNvbnRleHQgaGVyZS4gKG9wdGlvbmFsbHksIGRlbGF5IHVudGlsIHJvdyBwcmVwKQogICAgICAgICAgKi8KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5pcEFkZHJlc3NQcmVmaXhPcmlnaW4gPQotICAgICAgICAgICAgYWRkcl9yb3dyZXFfY3R4LT5kYXRhLT5pYV9vcmlnaW47CisgICAgICAgICAgIG5ldHNubXBfaXBhZGRyZXNzX3ByZWZpeF9vcmlnaW5fY29weSgmcm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1ByZWZpeE9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcm93cmVxX2N0eC0+ZGF0YS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpYV9vcmlnaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3Jvd3JlcV9jdHgtPmRhdGEtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3Jvd3JlcV9jdHgtPnRibF9pZHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NBZGRyVHlwZSk7CiAKICAgICAgICAgLyoqIGRlZmVyIHRoZSByZXN0IHRpbCByb3cgcHJlcCAqLwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCmluZGV4IDg0OGM2M2QuLmMxZmFkNzQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5jCkBAIC0yOCw4ICsyOCw4IEBACiAKICNpbmNsdWRlICJpcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwQWRkcmVzc1RhYmxlX29pZFtdID0geyBJUEFERFJFU1NUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaXBBZGRyZXNzVGFibGVfb2lkKTsKK2NvbnN0IG9pZCAgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRbXSA9IHsgSVBBRERSRVNTVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXBBZGRyZXNzVGFibGVfb2lkX3NpemUgPSBPSURfTEVOR1RIKGlwQWRkcmVzc1RhYmxlX29pZCk7CiAKIGlwQWRkcmVzc1RhYmxlX3JlZ2lzdHJhdGlvbiBpcEFkZHJlc3NUYWJsZV91c2VyX2NvbnRleHQ7CiBzdGF0aWMgaXBBZGRyZXNzVGFibGVfcmVnaXN0cmF0aW9uICppcEFkZHJlc3NUYWJsZV91c2VyX2NvbnRleHRfcDsKQEAgLTk0NCw3ICs5NDQsMTAgQEAKICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwQWRkcmVzc1Jvd1N0YXR1c192YWxfcHRyKTsKIAogICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfaXBhZGRyZXNzX2VudHJ5ICovCi0gICAgKCppcEFkZHJlc3NSb3dTdGF0dXNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5pcEFkZHJlc3NSb3dTdGF0dXM7CisgICAgaWYocm93cmVxX2N0eC0+ZGF0YS0+aWZfaW5kZXgpCisgICAgICAgKCppcEFkZHJlc3NSb3dTdGF0dXNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5pcEFkZHJlc3NSb3dTdGF0dXM7CisgICAgZWxzZQorICAgICAgICgqaXBBZGRyZXNzUm93U3RhdHVzX3ZhbF9wdHIpID0gUk9XU1RBVFVTX05PVFJFQURZOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcEFkZHJlc3NSb3dTdGF0dXNfZ2V0ICovCkBAIC0xNDg2LDcgKzE0ODksNyBAQAogICAgICAqIGZpbmQgbmFtZSBmb3IgaWZJbmRleAogICAgICAqLwogICAgIGlmIChOVUxMID09IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9uYW1lX2ZpbmQoaXBBZGRyZXNzSWZJbmRleF92YWwpKSB7Ci0gICAgICAgIERFQlVHTVNHVCgoImlwQWRkcmVzc1RhYmxlIiwgImNhbnQgZmluZCBuYW1lIGZvciBpbmRleCAlZFxuIiwKKyAgICAgICAgREVCVUdNU0dUKCgiaXBBZGRyZXNzVGFibGUiLCAiY2FudCBmaW5kIG5hbWUgZm9yIGluZGV4ICVsZFxuIiwKICAgICAgICAgICAgICAgICAgICBpcEFkZHJlc3NJZkluZGV4X3ZhbCkpOwogICAgICAgICByZXR1cm4gTUZEX05PVF9WQUxJRF9OT1c7CiAgICAgfQpAQCAtMjAzMiw3ICsyMDM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1Jvd1N0YXR1c192YWwpOwogICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgewogICAgICAgICBERUJVR01TR1RMKCgiaXBBZGRyZXNzVGFibGUiLAotICAgICAgICAgICAgICAgICAgICAicm93IHN0YXR1cyB0cmFuc2l0aW9uIGZyb20gJWQgdG8gJWRcbiIsCisgICAgICAgICAgICAgICAgICAgICJyb3cgc3RhdHVzIHRyYW5zaXRpb24gZnJvbSAlZCB0byAlbHVcbiIsCiAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgtPmlwQWRkcmVzc1Jvd1N0YXR1cywKICAgICAgICAgICAgICAgICAgICAgaXBBZGRyZXNzUm93U3RhdHVzX3ZhbCkpOwogICAgICAgICByZXR1cm4gcmM7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCmluZGV4IDUwYWQxODguLjc0MGY0ZmEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZS5oCkBAIC0xOTcsOCArMTk3LDggQEAKICAgICAgICAgKiBpcEFkZHJlc3NUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBBZGRyZXNzVGFibGVfbWliX2luZGV4ICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaXBBZGRyZXNzVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGlwQWRkcmVzc1RhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcEFkZHJlc3NUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBBZGRyZXNzVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBhMGQ4YzRhLi43YTRhMjNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMzk1LDcgKzM5NSw3IEBACiAgICAgfQogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTppcEFkZHJlc3NUYWJsZTppcEFkZHJlc3NUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWx1IHJlY29yZHNcbiIsICh1bnNpZ25lZCBsb25nKUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcEFkZHJlc3NUYWJsZS9pcEFkZHJlc3NUYWJsZV9pbnRlcmZhY2UuYwppbmRleCAwYzg1MDczLi5lMjRlNDZmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBBZGRyZXNzVGFibGUvaXBBZGRyZXNzVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwQWRkcmVzc1RhYmxlL2lwQWRkcmVzc1RhYmxlX2ludGVyZmFjZS5jCkBAIC02ODYsNiArNjg2LDcgQEAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcEFkZHJlc3NUYWJsZV9wb3N0X3JlcXVlc3QgKi8KIAorCiAvKioKICAqIEBpbnRlcm5hbAogICogd3JhcHBlcgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOGVkODRiCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlLmgKQEAgLTAsMCArMSw1IEBACisvKgorICogbW9kdWxlIHRvIGluY2x1ZGUgdGhlIG1vZHVsZXMKKyAqLworCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MGUzMTcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuYwpAQCAtMCwwICsxLDIxOCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qKiBccGFnZSBNRkQgaGVscGVyIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoKKyAqIFxzZWN0aW9uIGludHJvIEludHJvZHVjdGlvbgorICogSW50cm9kdWN0b3J5IHRleHQuCisgKgorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CisKKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuaCIKKworY29uc3Qgb2lkICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZFtdID0geyBJUERFRkFVTFRST1VURVJUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRfc2l6ZSA9CitPSURfTEVOR1RIKGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZCk7CisKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiBpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHQ7CitzdGF0aWMgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICppcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcDsKKwordm9pZCAgICAgICAgICAgIGluaXRpYWxpemVfdGFibGVfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCk7Cit2b2lkICAgICAgICAgICAgc2h1dGRvd25fdGFibGVfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCk7CisKKworLyoqCisgKiBJbml0aWFsaXplcyB0aGUgaXBEZWZhdWx0Um91dGVyVGFibGUgbW9kdWxlCisgKi8KK3ZvaWQKK2luaXRfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppbml0X2lwRGVmYXVsdFJvdXRlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAwOm86IFBlcmZvcm0gaXBEZWZhdWx0Um91dGVyVGFibGUgb25lLXRpbWUgbW9kdWxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBoZXJlIHdlIGluaXRpYWxpemUgYWxsIHRoZSB0YWJsZXMgd2UncmUgcGxhbm5pbmcgb24gc3VwcG9ydGluZworICAgICAqLworICAgIGlmIChzaG91bGRfaW5pdCgiaXBEZWZhdWx0Um91dGVyVGFibGUiKSkKKyAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSgpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRfaXBEZWZhdWx0Um91dGVyVGFibGUgKi8KKworLyoqCisgKiBTaHV0LWRvd24gdGhlIGlwRGVmYXVsdFJvdXRlclRhYmxlIG1vZHVsZSAoYWdlbnQgaXMgZXhpdGluZykKKyAqLwordm9pZAorc2h1dGRvd25faXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCkKK3sKKyAgICBpZiAoc2hvdWxkX2luaXQoImlwRGVmYXVsdFJvdXRlclRhYmxlIikpCisgICAgICAgIHNodXRkb3duX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlKCk7CisKK30KKworLyoqCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitpbml0aWFsaXplX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlKHZvaWQpCit7CisgICAgdV9sb25nICAgICAgICAgIGZsYWdzOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aW5pdGlhbGl6ZV90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDE6bzogUGVyZm9ybSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBvbmUtdGltZSB0YWJsZSBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogVE9ETzozMDI6bzogfC0+SW5pdGlhbGl6ZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSB1c2VyIGNvbnRleHQKKyAgICAgKiBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIHNvbWUgZGF0YSBmb3IgdGhpcworICAgICAqIHRhYmxlLCBhbGxvY2F0ZSBvciBzZXQgaXQgdXAgaGVyZS4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGEgbmV0c25tcF9kYXRhX2xpc3QgaXMgYSBzaW1wbGUgd2F5IHRvIHN0b3JlIHZvaWQgcG9pbnRlcnMuIEEgc2ltcGxlCisgICAgICogc3RyaW5nIHRva2VuIGlzIHVzZWQgdG8gYWRkLCBmaW5kIG9yIHJlbW92ZSBwb2ludGVycy4KKyAgICAgKi8KKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcCA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCgiaXBEZWZhdWx0Um91dGVyVGFibGUiLCBOVUxMLCBOVUxMKTsKKworICAgIC8qCisgICAgICogTm8gc3VwcG9ydCBmb3IgYW55IGZsYWdzIHlldCwgYnV0IGluIHRoZSBmdXR1cmUgeW91IHdvdWxkCisgICAgICogc2V0IGFueSBmbGFncyBoZXJlLgorICAgICAqLworICAgIGZsYWdzID0gMDsKKworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorCShpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcCwgZmxhZ3MpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0aWFsaXplX3RhYmxlX2lwRGVmYXVsdFJvdXRlclRhYmxlICovCisKKy8qKgorICogU2h1dGRvd24gdGhlIHRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlIAorICovCit2b2lkCitzaHV0ZG93bl90YWJsZV9pcERlZmF1bHRSb3V0ZXJUYWJsZSh2b2lkKQoreworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2Ugc2h1dGRvd24gY29kZQorICAgICAqLworICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShpcERlZmF1bHRSb3V0ZXJUYWJsZV91c2VyX2NvbnRleHRfcCk7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfdXNlcl9jb250ZXh0X3AgPSBOVUxMOworfQorCisvKioKKyAqIGV4dHJhIGNvbnRleHQgaW5pdGlhbGl6YXRpb24gKGVnIGRlZmF1bHQgdmFsdWVzKQorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4ICAgIDogcm93IHJlcXVlc3QgY29udGV4dAorICogQHBhcmFtIHVzZXJfaW5pdF9jdHggOiB2b2lkIHBvaW50ZXIgZm9yIHVzZXIgKHBhcmFtZXRlciB0byByb3dyZXFfY3R4X2FsbG9jYXRlKQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgIDogbm8gZXJyb3JzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICA6IGVycm9yIChjb250ZXh0IGFsbG9jYXRlIHdpbGwgZmFpbCkKKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2luaXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2luaXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMDpvOiB8LT4gUGVyZm9ybSBleHRyYSBpcERlZmF1bHRSb3V0ZXJUYWJsZSByb3dyZXEgaW5pdGlhbGl6YXRpb24uIChlZyBERUZWQUxTKQorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4X2luaXQgKi8KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGNsZWFudXAKKyAqCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjExOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwRGVmYXVsdFJvdXRlclRhYmxlIHJvd3JlcSBjbGVhbnVwLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShyb3dyZXFfY3R4LT5kYXRhKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhID0gTlVMTDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwICovCisKKy8qKgorICogcHJlLXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvcgorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3ByZV9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTEwOm86IFBlcmZvcm0gaXBEZWZhdWx0Um91dGVyVGFibGUgcHJlLXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBwb3N0LXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKiBOb3RlOgorICogICBOZXcgcm93cyBoYXZlIGJlZW4gaW5zZXJ0ZWQgaW50byB0aGUgY29udGFpbmVyLCBhbmQKKyAqICAgZGVsZXRlZCByb3dzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lciBhbmQKKyAqICAgcmVsZWFzZWQuCisgKgorICogQHBhcmFtIHVzZXJfY29udGV4dAorICogQHBhcmFtIHJjIDogTUZEX1NVQ0NFU1MgaWYgYWxsIHJlcXVlc3RzIHN1Y2NlZWRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IG90aGVyIGVycm9yIChpZ25vcmVkKQorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCwgaW50IHJjKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBwb3N0LXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKworLyoqIEB7ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZWYyOWEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGUuaApAQCAtMCwwICsxLDIxMiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBJUERFRkFVTFRST1VURVJUQUJMRV9ICisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBtaXNjIG1pc2M6IE1pc2NlbGxhbmVvdXMgcm91dGluZXMKKyAqCisgKiBAeworICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oPgorCisgICAgLyoKKyAgICAgKiBvdGhlciByZXF1aXJlZCBtb2R1bGUgY29tcG9uZW50cyAKKyAgICAgKi8KKyAgICAvKiAqSU5ERU5ULU9GRiogICovCitjb25maWdfcmVxdWlyZShpcC1taWIvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlcikKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9hY2Nlc3MpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQpCisgICAgLyogKklOREVOVC1PTiogICovCisKKyAgICAvKgorICAgICAqIE9JRCBhbmQgY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUgCisgICAgICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkcy5oIgorCisgICAgLyoKKyAgICAgKiBlbnVtIGRlZmluaW9ucyAKKyAgICAgKi8KKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9lbnVtcy5oIgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfaXBEZWZhdWx0Um91dGVyVGFibGUodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIHNodXRkb3duX2lwRGVmYXVsdFJvdXRlclRhYmxlKHZvaWQpOworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUgaXMgc3ViaWQgMzcgb2YgaXAuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcsIGxlbmd0aDogOAorICAgICAqLworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFdoZW4geW91IHJlZ2lzdGVyIHlvdXIgbWliLCB5b3UgZ2V0IHRvIHByb3ZpZGUgYSBnZW5lcmljCisgICAgICogcG9pbnRlciB0aGF0IHdpbGwgYmUgcGFzc2VkIGJhY2sgdG8geW91IGZvciBtb3N0IG9mIHRoZQorICAgICAqIGZ1bmN0aW9ucyBjYWxscy4KKyAgICAgKgorICAgICAqIFRPRE86MTAwOnI6IFJldmlldyBhbGwgY29udGV4dCBzdHJ1Y3R1cmVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBUT0RPOjEwMTpvOiB8LT4gUmV2aWV3IGlwRGVmYXVsdFJvdXRlclRhYmxlIHJlZ2lzdHJhdGlvbiBjb250ZXh0LgorICAgICAqLworICAgIHR5cGVkZWYgbmV0c25tcF9kYXRhX2xpc3QgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uOworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFRPRE86MTEwOnI6IHwtPiBSZXZpZXcgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBjb250ZXh0IHN0cnVjdHVyZS4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGlwRGVmYXVsdFJvdXRlclRhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGlwRGVmYXVsdFJvdXRlclRhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSgxKS9JbmV0QWRkcmVzc1R5cGUvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGU7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2gKKyAgICAgICAgICovCisgICAgICAgIC8qKiAxMjggLSAyKG90aGVyIGluZGV4ZXMpIC0gb2lkIGxlbmd0aCgxMCkgPSAxMTUgKi8KKyAgICAgICAgY2hhciAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NbMTE1XTsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfbGVuOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwRGVmYXVsdFJvdXRlcklmSW5kZXgoMykvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAgICAgKi8KKyAgICAgICAgbG9uZyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlcklmSW5kZXg7CisKKworICAgIH0gaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBpcERlZmF1bHRSb3V0ZXJUYWJsZSBtYXggaW5kZXggbGVuZ3RoLgorICAgICAqIElmIHlvdSBLTk9XIHRoYXQgeW91ciBpbmRleGVzIHdpbGwgbmV2ZXIgZXhjZWVkIGEgY2VydGFpbgorICAgICAqIGxlbmd0aCwgdXBkYXRlIHRoaXMgbWFjcm8gdG8gdGhhdCBsZW5ndGguCisgICAgICoKKyAgICAgKiBCRSBWRVJZIENBUkVGVUwgVE8gVEFLRSBJTlRPIEFDQ09VTlQgVEhFIE1BWElNVU0KKyAgICAgKiBQT1NTSUJMRSBMRU5HSFQgRk9SIEVWRVJZIFZBUklBQkxFIExFTkdUSCBJTkRFWCEKKyAgICAgKiBHdWVzc2luZyAxMjggLSBjb2wvZW50cnkoMikgIC0gb2lkIGxlbig4KQorICAgICAqLworI2RlZmluZSBNQVhfaXBEZWZhdWx0Um91dGVyVGFibGVfSURYX0xFTiAgICAgMTE4CisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTMwOm86IHwtPiBSZXZpZXcgaXBEZWZhdWx0Um91dGVyVGFibGUgUm93IHJlcXVlc3QgKHJvd3JlcSkgY29udGV4dC4KKyAgICAgKiBXaGVuIHlvdXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIHlvdSB3aWxsIGJlIHBhc3NlZCBhCisgICAgICogaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCBwb2ludGVyLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfcyB7CisKKyAgICAvKiogdGhpcyBtdXN0IGJlIGZpcnN0IGZvciBjb250YWluZXIgY29tcGFyZSB0byB3b3JrICovCisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgICAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfaXBEZWZhdWx0Um91dGVyVGFibGVfSURYX0xFTl07CisKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4IHRibF9pZHg7CisKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqZGF0YTsKKworICAgICAgICAvKgorICAgICAgICAgKiBmbGFncyBwZXIgcm93LiBDdXJyZW50bHksIHRoZSBmaXJzdCAobG93ZXIpIDggYml0cyBhcmUgcmVzZXJ2ZWQKKyAgICAgICAgICogZm9yIHRoZSB1c2VyLiBTZWUgbWZkLmggZm9yIG90aGVyIGZsYWdzLgorICAgICAgICAgKi8KKyAgICAgICAgdV9pbnQgICAgICAgICAgIHJvd3JlcV9mbGFnczsKKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjEzMTpvOiB8ICAgfC0+IEFkZCB1c2VmdWwgZGF0YSB0byBpcERlZmF1bHRSb3V0ZXJUYWJsZSByb3dyZXEgY29udGV4dC4KKyAgICAgICAgICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogc3RvcmFnZSBmb3IgZnV0dXJlIGV4cGFuc2lvbgorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9kYXRhX2xpc3QgKmlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfbGlzdDsKKworICAgIH0gaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eDsKKworICAgIHR5cGVkZWYgc3RydWN0IGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZl9yb3dyZXFfY3R4X3MgeworICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIH0gaXBEZWZhdWx0Um91dGVyVGFibGVfcmVmX3Jvd3JlcV9jdHg7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBwcm90b3R5cGVzCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3ByZV9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHVzZXJfY29udGV4dCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlcl9jb250ZXh0LCBpbnQgcmMpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfaW5pdAorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwCisgICAgICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CisKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICppcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEoaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhKTsKKworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXBEZWZhdWx0Um91dGVyVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CisgICAgICAgIChpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKKworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkX3NpemU7CisKKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaCIKKworICAgIC8qCisgICAgICogRFVNTVkgbWFya2VycywgaWdub3JlCisgICAgICoKKyAgICAgKiBUT0RPOjA5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mjk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjM5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzo0OTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJUQUJMRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjM1NGMzZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0wLDAgKzEsNDIwIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlLmgiCisKKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgiCisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlIGlzIHN1YmlkIDM3IG9mIGlwLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNywgbGVuZ3RoOiA4CisgKi8KKworLyoqCisgKiBpbml0aWFsaXphdGlvbiBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBhY2Nlc3MKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8KKyAqIGFsbG9jYXRlIGFueSByZXNvdXJjZXMgeW91IG5lZWQgZm9yIHRoZSBkYXRhIHRhYmxlLgorICoKKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWcKKyAqICAgICAgICBQb2ludGVyIHRvIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IHVucmVjb3ZlcmFibGUgZXJyb3IuCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdF9kYXRhKGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRfZGF0YSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDM6bzogSW5pdGlhbGl6ZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0X2RhdGEgKi8KKworLyoqCisgKiBjb250YWluZXIgb3ZlcnZpZXcKKyAqCisgKi8KKworLyoqCisgKiBjb250YWluZXIgaW5pdGlhbGl6YXRpb24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0cl9wdHIgQSBwb2ludGVyIHRvIGEgY29udGFpbmVyIHBvaW50ZXIuIElmIHlvdQorICogICAgICAgIGNyZWF0ZSBhIGN1c3RvbSBjb250YWluZXIsIHVzZSB0aGlzIHBhcmFtZXRlciB0byByZXR1cm4gaXQKKyAqICAgICAgICB0byB0aGUgTUZEIGhlbHBlci4gSWYgc2V0IHRvIE5VTEwsIHRoZSBNRkQgaGVscGVyIHdpbGwKKyAqICAgICAgICBhbGxvY2F0ZSBhIGNvbnRhaW5lciBmb3IgeW91LgorICogQHBhcmFtICBjYWNoZSBBIHBvaW50ZXIgdG8gYSBjYWNoZSBzdHJ1Y3R1cmUuIFlvdSBjYW4gc2V0IHRoZSB0aW1lb3V0CisgKiAgICAgICAgIGFuZCBvdGhlciBjYWNoZSBmbGFncyB1c2luZyB0aGlzIHBvaW50ZXIuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLiBJZiBubyBjdXN0b20KKyAqICBjb250YWluZXIgaXMgYWxsb2NhdGVkLCB0aGUgTUZEIGNvZGUgd2lsbCBjcmVhdGUgb25lIGZvciB5b3VyLgorICoKKyAqICBUaGlzIGlzIGFsc28gdGhlIHBsYWNlIHRvIHNldCB1cCBjYWNoZSBiZWhhdmlvci4gVGhlIGRlZmF1bHQsIHRvCisgKiAgc2ltcGx5IHNldCB0aGUgY2FjaGUgdGltZW91dCwgd2lsbCB3b3JrIHdlbGwgd2l0aCB0aGUgZGVmYXVsdAorICogIGNvbnRhaW5lci4gSWYgeW91IGFyZSB1c2luZyBhIGN1c3RvbSBjb250YWluZXIsIHlvdSBtYXkgd2FudCB0bworICogIGxvb2sgYXQgdGhlIGNhY2hlIGhlbHBlciBkb2N1bWVudGF0aW9uIHRvIHNlZSBpZiB0aGVyZSBhcmUgYW55CisgKiAgZmxhZ3MgeW91IHdhbnQgdG8gc2V0LgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIHdvdWxkIGFsc28gYmUgYSBnb29kIHBsYWNlIHRvIGRvIGFueSBpbml0aWFsaXphdGlvbiBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgb3BlbmluZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCB3aWxsIHN1cHBseSB0aGUgZGF0YSwgb3BlbmluZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyICoqIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjb250YWluZXIgcGFyYW0gdG8gaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBGb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gdXNlIGEgY3VzdG9tIGNvbnRhaW5lci4gSWYgeW91CisgICAgICogZG8gbm90IGNyZWF0ZSBvbmUsIG9uZSB3aWxsIGJlIGNyZWF0ZWQgZm9yIHlvdS4KKyAgICAgKi8KKyAgICAqY29udGFpbmVyX3B0cl9wdHIgPSBOVUxMOworCisgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjYWNoZSBwYXJhbSB0byBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgorICAgICAqCisgICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQorICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCisgICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKKyAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgorICAgICAqLworICAgIGNhY2hlLT50aW1lb3V0ID0gSVBERUZBVUxUUk9VVEVSVEFCTEVfQ0FDSEVfVElNRU9VVDsgICAgICAgIC8qIHNlY29uZHMgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBjb250YWluZXIgc2h1dGRvd24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0ciBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc2h1dGRvd24gdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2ZyZWUoKS4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgY2xlYW51cCBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgY2xvc2luZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCBzdXBwbGllZCB0aGUgZGF0YSwgY2xvc2luZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcl9wdHIpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK19jaGVja19lbnRyeV9mb3JfdXBkYXRlcyhpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqbWFnaWMpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmRlZmF1bHRyb3V0ZXJfY29udGFpbmVyID0gbWFnaWNbMF07CisgICAgbmV0c25tcF9jb250YWluZXIgKnRvX2RlbGV0ZSA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBtYWdpY1sxXTsKKworICAgIC8qCisgICAgICogY2hlY2sgZm9yIG1hdGNoaW5nIGVudHJ5IHVzaW5nIHNlY29uZGFyeSBpbmRleC4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmRlZmF1bHRyb3V0ZXJfZW50cnkgPQorICAgICAgICBDT05UQUlORVJfRklORChkZWZhdWx0cm91dGVyX2NvbnRhaW5lciwgcm93cmVxX2N0eC0+ZGF0YSk7CisgICAgaWYgKE5VTEwgPT0gZGVmYXVsdHJvdXRlcl9lbnRyeSkgeworICAgICAgICBERUJVR01TR1RMKCgiaXBEZWZhdWx0Um91dGVyVGFibGU6YWNjZXNzIiwgInJlbW92aW5nIG1pc3NpbmcgZW50cnlcbiIpKTsKKworICAgICAgICBpZiAoTlVMTCA9PSB0b19kZWxldGUpIHsKKyAgICAgICAgICAgIG1hZ2ljWzFdID0gdG9fZGVsZXRlID0gbmV0c25tcF9jb250YWluZXJfZmluZCgibGlmbyIpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gdG9fZGVsZXRlKQorICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBjcmVhdGUgZGVsZXRlIGNvbnRhaW5lclxuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5VTEwgIT0gdG9fZGVsZXRlKQorICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVCh0b19kZWxldGUsIHJvd3JlcV9jdHgpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZTphY2Nlc3MiLCAidXBkYXRpbmcgZXhpc3RpbmcgZW50cnlcbiIpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBDaGVjayBmb3IgY2hhbmdlcyAmIHVwZGF0ZQorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV91cGRhdGUocm93cmVxX2N0eC0+ZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHJvdXRlcl9lbnRyeSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogcmVtb3ZlIGVudHJ5IGZyb20gaWZjb250YWluZXIKKyAgICAgICAgICovCisgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoZGVmYXVsdHJvdXRlcl9jb250YWluZXIsIGRlZmF1bHRyb3V0ZXJfZW50cnkpOworICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZGVmYXVsdHJvdXRlcl9lbnRyeSk7CisgICAgfQorfQorCisvKioKKyAqIGFkZCBuZXcgZW50cnkKKyAqLworc3RhdGljIHZvaWQKK19hZGRfbmV3X2VudHJ5KG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqZGVmYXVsdHJvdXRlcl9lbnRyeSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKworICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZTphY2Nlc3MiLCAiY3JlYXRpbmcgbmV3IGVudHJ5XG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGRlZmF1bHRyb3V0ZXJfZW50cnkpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogYWxsb2NhdGUgYW4gcm93IGNvbnRleHQgYW5kIHNldCB0aGUgaW5kZXgoZXMpCisgICAgICovCisgICAgcm93cmVxX2N0eCA9IGlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoZGVmYXVsdHJvdXRlcl9lbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICBpZiAoKE5VTEwgIT0gcm93cmVxX2N0eCkgJiYKKyAgICAgICAgICAgIChNRkRfU1VDQ0VTUyA9PQorICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgIGRlZmF1bHRyb3V0ZXJfZW50cnktPmRyX2FkZHJlc3N0eXBlLAorICAgICAgICAgICAgICAgICBkZWZhdWx0cm91dGVyX2VudHJ5LT5kcl9hZGRyZXNzLAorICAgICAgICAgICAgICAgICBkZWZhdWx0cm91dGVyX2VudHJ5LT5kcl9hZGRyZXNzX2xlbiwKKyAgICAgICAgICAgICAgICAgZGVmYXVsdHJvdXRlcl9lbnRyeS0+ZHJfaWZfaW5kZXgpKSkgeworICAgICAgICBpZiAoQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImlwQWRkcmVzc1RhYmxlOmFjY2VzcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvbnRhaW5lciBpbnNlcnQgZmFpbGVkIGZvciBuZXcgZW50cnlcbiIpKTsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChOVUxMICE9IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShkZWZhdWx0cm91dGVyX2VudHJ5KTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKKy8qKgorICogbG9hZCBpbml0aWFsIGRhdGEKKyAqCisgKiBUT0RPOjM1MDpNOiBJbXBsZW1lbnQgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBsb2FkCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYWxzbyBiZSBjYWxsZWQgYnkgdGhlIGNhY2hlIGhlbHBlciB0byBsb2FkCisgKiB0aGUgY29udGFpbmVyIGFnYWluIChhZnRlciB0aGUgY29udGFpbmVyIGZyZWUgZnVuY3Rpb24gaGFzIGJlZW4KKyAqIGNhbGxlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBjb250ZW50cykuCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgdG8gd2hpY2ggaXRlbXMgc2hvdWxkIGJlIGluc2VydGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEUgOiBDYW4ndCBhY2Nlc3MgZGF0YSBzb3VyY2UKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGxvYWQgdGhlIGluZGV4KGVzKSAoYW5kIGRhdGEsIG9wdGlvbmFsbHkpCisgKiAgZm9yIHRoZSBldmVyeSByb3cgaW4gdGhlIGRhdGEgc2V0LgorICoKKyAqIEByZW1hcmsKKyAqICBXaGlsZSBsb2FkaW5nIHRoZSBkYXRhLCB0aGUgb25seSBpbXBvcnRhbnQgdGhpbmcgaXMgdGhlIGluZGV4ZXMuCisgKiAgSWYgYWNjZXNzIHRvIHlvdXIgZGF0YSBpcyBjaGVhcC9mYXN0IChlLmcuIHlvdSBoYXZlIGEgcG9pbnRlciB0byBhCisgKiAgc3RydWN0dXJlIGluIG1lbW9yeSksIGl0IHdvdWxkIG1ha2Ugc2Vuc2UgdG8gdXBkYXRlIHRoZSBkYXRhIGhlcmUuCisgKiAgSWYsIGhvd2V2ZXIsIHRoZSBhY2Nlc3NpbmcgdGhlIGRhdGEgaW52b3ZsZXMgbW9yZSB3b3JrIChlLmcuIHBhcnNpbmcKKyAqICBzb21lIG90aGVyIGV4aXN0aW5nIGRhdGEsIG9yIHBlZm9ybWluZyBjYWxjdWxhdGlvbnMgdG8gZGVyaXZlIHRoZSBkYXRhKSwKKyAqICB0aGVuIHlvdSBjYW4gbGltaXQgeW91cnNlbGYgdG8gc2V0dGluZyB0aGUgaW5kZXhlcyBhbmQgc2F2aW5nIGFueQorICogIGluZm9ybWF0aW9uIHlvdSB3aWxsIG5lZWQgbGF0ZXIuIFRoZW4gdXNlIHRoZSBzYXZlZCBpbmZvcm1hdGlvbiBpbgorICogIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd19wcmVwKCkgZm9yIHBvcHVsYXRpbmcgZGF0YS4KKyAqCisgKiBAbm90ZQorICogIElmIHlvdSBuZWVkIGNvbnNpc3RlbmN5IGJldHdlZW4gcm93cyAobGlrZSB5b3Ugd2FudCBzdGF0aXN0aWNzCisgKiAgZm9yIGVhY2ggcm93IHRvIGJlIGZyb20gdGhlIHNhbWUgdGltZSBmcmFtZSksIHlvdSBzaG91bGQgc2V0IGFsbAorICogIGRhdGEgaGVyZS4KKyAqCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmRlZmF1bHRyb3V0ZXJfY29udGFpbmVyOworICAgIHZvaWQgICAgICAgICAgICAgICp0bXBfcHRyWzJdOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzUxOk06IHwtPiBMb2FkL3VwZGF0ZSBkYXRhIGluIHRoZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBjb250YWluZXIuCisgICAgICogbG9vcCBvdmVyIHlvdXIgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSwgYWxsb2NhdGUgYSByb3dyZXEgY29udGV4dCwKKyAgICAgKiBzZXQgdGhlIGluZGV4KGVzKSBbYW5kIGRhdGEsIG9wdGlvbmFsbHldIGFuZCBpbnNlcnQgaW50bworICAgICAqIHRoZSBjb250YWluZXIuCisgICAgICovCisgICAgZGVmYXVsdHJvdXRlcl9jb250YWluZXIgPQorICAgICAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9sb2FkKE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0xPQURfQURETF9JRFhfQllfQUREUik7CisKKyAgICBpZiAoTlVMTCA9PSBkZWZhdWx0cm91dGVyX2NvbnRhaW5lcikKKyAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworCisgICAgLyoKKyAgICAgKiB3ZSBqdXN0IGdvdCBhIGZyZXNoIGNvcHkgb2YgaW50ZXJmYWNlIGRhdGEuIGNvbXBhcmUgaXQgdG8KKyAgICAgKiB3aGF0IHdlJ3ZlIGFscmVhZHkgZ290LCBhbmQgbWFrZSBhbnkgYWRqdXN0bWVudHMsIHNhdmluZworICAgICAqIG1pc3NpbmcgYWRkcmVzc2VzIHRvIGJlIGRlbGV0ZWQuCisgICAgICovCisgICAgdG1wX3B0clswXSA9IGRlZmF1bHRyb3V0ZXJfY29udGFpbmVyLT5uZXh0OworICAgIHRtcF9wdHJbMV0gPSBOVUxMOworICAgIENPTlRBSU5FUl9GT1JfRUFDSChjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY2hlY2tfZW50cnlfZm9yX3VwZGF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgIHRtcF9wdHIpOworCisgICAgLyoKKyAgICAgKiBub3cgYWRkIGFueSBuZXcgaW50ZXJmYWNlcworICAgICAqLworICAgIENPTlRBSU5FUl9GT1JfRUFDSChkZWZhdWx0cm91dGVyX2NvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9hZGRfbmV3X2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBmcmVlIHRoZSBjb250YWluZXIuIHdlJ3ZlIGVpdGhlciBjbGFpbWVkIGVhY2ggZW50cnksIG9yIHJlbGVhc2VkIGl0LAorICAgICAqIHNvIHRoZSBhY2Nlc3MgZnVuY3Rpb24gZG9lc24ndCBuZWVkIHRvIGNsZWFyIHRoZSBjb250YWluZXIuCisgICAgICovCisgICAgbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfZnJlZShkZWZhdWx0cm91dGVyX2NvbnRhaW5lciwKKyAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0ZSRUVfRE9OVF9DTEVBUik7CisKKyAgICAvKgorICAgICAqIHJlbW92ZSBkZWxldGVkIGFkZHJlc3NlcyBmcm9tIHRhYmxlIGNvbnRhaW5lcgorICAgICAqLworICAgIGlmIChOVUxMICE9IHRtcF9wdHJbMV0pIHsKKyAgICAgICAgbmV0c25tcF9jb250YWluZXIgKnRtcF9jb250YWluZXIgPQorICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyICopIHRtcF9wdHJbMV07CisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKnRtcF9jdHg7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogdGhpcyB3b3JrcyBiZWNhdXNlIHRoZSB0bXBfY29udGFpbmVyIGlzIGEgbGlua2VkIGxpc3QsCisgICAgICAgICAqIHdoaWNoIGNhbiBiZSB1c2VkIGxpa2UgYSBzdGFjay4uLgorICAgICAgICAgKi8KKyAgICAgICAgd2hpbGUgKENPTlRBSU5FUl9TSVpFKHRtcF9jb250YWluZXIpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogZ2V0IGZyb20gZGVsZXRlIGxpc3QKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgdG1wX2N0eCA9IENPTlRBSU5FUl9GSVJTVCh0bXBfY29udGFpbmVyKTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHJlbGVhc2UgY29udGV4dCwgZGVsZXRlIGZyb20gdGFibGUgY29udGFpbmVyCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIENPTlRBSU5FUl9SRU1PVkUoY29udGFpbmVyLCB0bXBfY3R4KTsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCh0bXBfY3R4KTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHBvcCBvZmYgZGVsZXRlIGxpc3QKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgQ09OVEFJTkVSX1JFTU9WRSh0bXBfY29udGFpbmVyLCBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgIiUiIE5FVFNOTVBfUFJJeiAiZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9CisKKy8qKgorICogY29udGFpbmVyIGNsZWFuIHVwCisgKgorICogQHBhcmFtIGNvbnRhaW5lciBjb250YWluZXIgd2l0aCBhbGwgY3VycmVudCBpdGVtcworICoKKyAqICBUaGlzIG9wdGlvbmFsIGNhbGxiYWNrIGlzIGNhbGxlZCBwcmlvciB0byBhbGwKKyAqICBpdGVtJ3MgYmVpbmcgcmVtb3ZlZCBmcm9tIHRoZSBjb250YWluZXIuIElmIHlvdQorICogIG5lZWQgdG8gZG8gYW55IHByb2Nlc3NpbmcgYmVmb3JlIHRoYXQsIGRvIGl0IGhlcmUuCisgKgorICogQG5vdGUKKyAqICBUaGUgTUZEIGhlbHBlciB3aWxsIHRha2UgY2FyZSBvZiByZWxlYXNpbmcgYWxsIHRoZSByb3cgY29udGV4dHMuCisgKgorICovCit2b2lkCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozODA6TTogRnJlZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSBjb250YWluZXIgZGF0YS4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBwcmVwYXJlIHJvdyBmb3IgcHJvY2Vzc2luZy4KKyAqCisgKiAgV2hlbiB0aGUgYWdlbnQgaGFzIGxvY2F0ZWQgdGhlIHJvdyBmb3IgYSByZXF1ZXN0LCB0aGlzIGZ1bmN0aW9uIGlzCisgKiAgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHJvdyBmb3IgcHJvY2Vzc2luZy4gSWYgeW91IGZ1bGx5IHBvcHVsYXRlZAorICogIHRoZSBkYXRhIGNvbnRleHQgZHVyaW5nIHRoZSBpbmRleCBzZXR1cCBwaGFzZSwgeW91IG1heSBub3QgbmVlZCB0bworICogIGRvIGFueXRoaW5nLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4IHBvaW50ZXIgdG8gYSBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM5MDpvOiBQcmVwYXJlIHJvdyBmb3IgcmVxdWVzdC4KKyAgICAgKiBJZiBwb3B1bGF0aW5nIHJvdyBkYXRhIHdhcyBkZWxheWVkLCB0aGlzIGlzIHRoZSBwbGFjZSB0bworICAgICAqIGZpbGwgaW4gdGhlIHJvdyBmb3IgdGhpcyByZXF1ZXN0LgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dfcHJlcCAqLworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQwMzNmMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5oCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSVEFCTEVfREFUQV9BQ0NFU1NfSAorI2RlZmluZSBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0FDQ0VTU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZSBpcyBzdWJpZCAzNyBvZiBpcC4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNywgbGVuZ3RoOiA4CisgICAgICovCisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0X2RhdGEoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZyk7CisKKworICAgIC8qCisgICAgICogVE9ETzoxODA6bzogUmV2aWV3IGlwRGVmYXVsdFJvdXRlclRhYmxlIGNhY2hlIHRpbWVvdXQuCisgICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgY2FjaGUgdGltZXMgb3V0CisgICAgICovCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX0NBQ0hFX1RJTUVPVVQgICA2MAorCisgICAgdm9pZCAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGUpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY2FjaGVfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfY2FjaGVfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93X3ByZXAoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSVEFCTEVfREFUQV9BQ0NFU1NfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTc3ODk3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmMKQEAgLTAsMCArMSwzMjUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDEyMDg4ICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworCisvKiogQGRlZmdyb3VwIGRhdGFfZ2V0IGRhdGFfZ2V0OiBSb3V0aW5lcyB0byBnZXQgZGF0YQorICoKKyAqIFRPRE86MjMwOk06IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBnZXQgcm91dGluZXMuCisgKiBUT0RPOjI0MDpNOiBJbXBsZW1lbnQgaXBEZWZhdWx0Um91dGVyVGFibGUgbWFwcGluZyByb3V0aW5lcyAoaWYgYW55KS4KKyAqCisgKiBUaGVzZSByb3V0aW5lIGFyZSB1c2VkIHRvIGdldCB0aGUgdmFsdWUgZm9yIGluZGl2aWR1YWwgb2JqZWN0cy4gVGhlCisgKiByb3cgY29udGV4dCBpcyBwYXNzZWQsIGFsb25nIHdpdGggYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgd2hlcmUgdGhlCisgKiB2YWx1ZSBzaG91bGQgYmUgY29waWVkLgorICoKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyVGFibGUgaXMgc3ViaWQgMzcgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM3LCBsZW5ndGg6IDgKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBpcERlZmF1bHRSb3V0ZXJUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisvKgorICogaXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfZGF0YQorICoKKyAqIFB1cnBvc2U6IGNyZWF0ZSBuZXcgaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YS4KKyAqLworaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBUT0RPOjIwMTpyOiB8LT4gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaXBEZWZhdWx0Um91dGVyVGFibGUgZGF0YSBjb250ZXh0LgorICAgICAqLworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGEgKnJ0biA9CisgICAgICAgIG5ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY3JlYXRlKCk7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcnRuKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmFibGUgdG8gbWFsbG9jIG1lbW9yeSBmb3IgbmV3ICIKKyAgICAgICAgICAgICAgICAgImlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGEuXG4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gcnRuOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhICovCisKKy8qCisgKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEKKyAqCisgKiBQdXJwb3NlOiByZWxlYXNlIGlwRGVmYXVsdFJvdXRlclRhYmxlIGRhdGEuCisgKi8KK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YShpcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhICogZGF0YSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjAyOnI6IHwtPiByZWxlYXNlIG1lbW9yeSBmb3IgdGhlIGlwRGVmYXVsdFJvdXRlclRhYmxlIGRhdGEgY29udGV4dC4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2VudHJ5X2ZyZWUoZGF0YSk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2VfZGF0YSAqLworCisKKworLyoqCisgKiBzZXQgbWliIGluZGV4KGVzKQorICoKKyAqIEBwYXJhbSB0YmxfaWR4IG1pYiBpbmRleCBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwKKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3B0cgorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfcHRyX2xlbgorICogQHBhcmFtIGlwRGVmYXVsdFJvdXRlcklmSW5kZXhfdmFsCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyBjb252ZW5pZW5jZSBmdW5jdGlvbiBpcyB1c2VmdWwgZm9yIHNldHRpbmcgYWxsIHRoZSBNSUIgaW5kZXgKKyAqICBjb21wb25lbnRzIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gY2FsbC4gSXQgaXMgYXNzdW1lIHRoYXQgdGhlIEMgdmFsdWVzCisgKiAgaGF2ZSBhbHJlYWR5IGJlZW4gbWFwcGVkIGZyb20gdGhlaXIgbmF0aXZlL3Jhd2Zvcm1hdCB0byB0aGUgTUlCIGZvcm1hdC4KKyAqLworaW50CitpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4KGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUoMSkvSW5ldEFkZHJlc3NUeXBlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaCAKKyAgICAgKi8KKyAgICAvKiogV0FSTklORzogdGhpcyBjb2RlIG1pZ2h0IG5vdCB3b3JrIGZvciBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKi8KKyAgICB0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSA9IGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlX3ZhbDsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2ggCisgICAgICovCisgICAgdGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gPSBzaXplb2YodGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzcykgLyBzaXplb2YodGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1swXSk7IC8qIG1heCBsZW5ndGggKi8KKyAgICAvKiogV0FSTklORzogdGhpcyBjb2RlIG1pZ2h0IG5vdCB3b3JrIGZvciBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKi8KKyAgICAvKgorICAgICAqIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgZGF0YQorICAgICAqLworICAgIGlmICgoTlVMTCA9PSB0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzKSB8fAorICAgICAgICAodGJsX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gPAorICAgICAgICAgKGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4pKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm90IGVub3VnaCBzcGFjZSBmb3IgdmFsdWVcbiIpOworICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgIH0KKyAgICB0YmxfaWR4LT5pcERlZmF1bHRSb3V0ZXJBZGRyZXNzX2xlbiA9CisgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW47CisgICAgbWVtY3B5KHRibF9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3MsIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0ciwKKyAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiAqCisgICAgICAgICAgIHNpemVvZihpcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHJbMF0pKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVySWZJbmRleCgzKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqLworICAgIHRibF9pZHgtPmlwRGVmYXVsdFJvdXRlcklmSW5kZXggPSBpcERlZmF1bHRSb3V0ZXJJZkluZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0KGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppcERlZmF1bHRSb3V0ZXJBZGRyZXNzX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCgmcm93cmVxX2N0eC0+dGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpKQorICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0IG1pYiBpbmRleCB0byBvaWQgaW5kZXgKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4LmxlbiA9IHNpemVvZihyb3dyZXFfY3R4LT5vaWRfdG1wKSAvIHNpemVvZihvaWQpOworICAgIGlmICgwICE9IGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZCgmcm93cmVxX2N0eC0+b2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJvd3JlcV9jdHgtPnRibF9pZHgpKSB7CisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgfQorCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleGVzX3NldCAqLworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlckVudHJ5LmlwRGVmYXVsdFJvdXRlckxpZmV0aW1lCisgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSBpcyBzdWJpZCA0IG9mIGlwRGVmYXVsdFJvdXRlckVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcuMS40CisgKiBEZXNjcmlwdGlvbjoKK1RoZSByZW1haW5pbmcgbGVuZ3RoIG9mIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgdGhpcyByb3V0ZXIKKyAgICAgICAgICAgIHdpbGwgY29udGludWUgdG8gYmUgdXNlZnVsIGFzIGEgZGVmYXVsdCByb3V0ZXIuICBBIHZhbHVlIG9mCisgICAgICAgICAgICB6ZXJvIGluZGljYXRlcyB0aGF0IGl0IGlzIG5vIGxvbmdlciB1c2VmdWwgYXMgYSBkZWZhdWx0CisgICAgICAgICAgICByb3V0ZXIuICBJdCBpcyBsZWZ0IHRvIHRoZSBpbXBsZW1lbnRlciBvZiB0aGUgTUlCIGFzIHRvCisgICAgICAgICAgICB3aGV0aGVyIGEgcm91dGVyIHdpdGggYSBsaWZldGltZSBvZiB6ZXJvIGlzIHJlbW92ZWQgZnJvbSB0aGUKKyAgICAgICAgICAgIGxpc3QuCisKKyAgICAgICAgICAgIEZvciBJUHY2LCB0aGlzIHZhbHVlIHNob3VsZCBiZSBleHRyYWN0ZWQgZnJvbSB0aGUgcm91dGVyCisgICAgICAgICAgICBhZHZlcnRpc2VtZW50IG1lc3NhZ2VzLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAxICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICogUmFuZ2VzOiAgMCAtIDY1NTM1OworICoKKyAqIEl0cyBzeW50YXggaXMgVU5TSUdORUQzMiAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlckxpZmV0aW1lX2dldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lIGRhdGEuCisgICAgICogY29weSAoKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcERlZmF1bHRSb3V0ZXJMaWZldGltZV92YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEtPmRyX2xpZmV0aW1lOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBEZWZhdWx0Um91dGVyRW50cnkuaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZQorICogaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSBpcyBzdWJpZCA1IG9mIGlwRGVmYXVsdFJvdXRlckVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcuMS41CisgKiBEZXNjcmlwdGlvbjoKK0FuIGluZGljYXRpb24gb2YgcHJlZmVyZW5jZSBnaXZlbiB0byB0aGlzIHJvdXRlciBhcyBhCisgICAgICAgICAgICBkZWZhdWx0IHJvdXRlciBhcyBkZXNjcmliZWQgaW4gaGUgRGVmYXVsdCBSb3V0ZXIKKyAgICAgICAgICAgIFByZWZlcmVuY2VzIGRvY3VtZW50LiAgVHJlYXRpbmcgdGhlIHZhbHVlIGFzIGEKKyAgICAgICAgICAgIDIgYml0IHNpZ25lZCBpbnRlZ2VyIGFsbG93cyBmb3Igc2ltcGxlIGFyaXRobWV0aWMKKyAgICAgICAgICAgIGNvbXBhcmlzb25zLgorCisgICAgICAgICAgICBGb3IgSVB2NCByb3V0ZXJzIG9yIElQdjYgcm91dGVycyB0aGF0IGFyZSBub3QgdXNpbmcgdGhlCisgICAgICAgICAgICB1cGRhdGVkIHJvdXRlciBhZHZlcnRpc2VtZW50IGZvcm1hdCwgdGhpcyBvYmplY3QgaXMgc2V0IHRvCisgICAgICAgICAgICBtZWRpdW0gKDApLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDEgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICogRW51bSByYW5nZTogMy84LiBWYWx1ZXM6ICByZXNlcnZlZCgtMiksIGxvdygtMSksIG1lZGl1bSgwKSwgaGlnaCgxKQorICoKKyAqIEl0cyBzeW50YXggaXMgSU5URUdFUiAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2UgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZV9nZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlIGRhdGEuCisgICAgICogY29weSAoKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLT5kcl9wcmVmZXJlbmNlOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX2dldCAqLworCisKKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9kYXRhX2dldC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OTg2NzUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9nZXQuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA4OCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqIEBmaWxlIGlwRGVmYXVsdFJvdXRlclRhYmxlX2RhdGFfZ2V0LmgKKyAqCisgKiBAYWRkdG9ncm91cCBnZXQKKyAqCisgKiBQcm90b3R5cGVzIGZvciBnZXQgZnVuY3Rpb25zCisgKgorICogQHsKKyAqLworI2lmbmRlZiBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0dFVF9ICisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX0RBVEFfR0VUX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwRGVmYXVsdFJvdXRlclRhYmxlIGlzIHN1YmlkIDM3IG9mIGlwLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM3LCBsZW5ndGg6IDgKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGluZGV4ZXMKKyAgICAgKi8KKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJMaWZldGltZV9nZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckxpZmV0aW1lX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJQcmVmZXJlbmNlX2dldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZV92YWxfcHRyKTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX21pYl9pbmRleCAqIHRibF9pZHgsCisgICAgICAgICB1X2xvbmcgaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGVfdmFsLAorICAgICAgICAgY2hhciAqaXBEZWZhdWx0Um91dGVyQWRkcmVzc192YWxfcHRyLAorICAgICAgICAgc2l6ZV90IGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICBsb25nIGlwRGVmYXVsdFJvdXRlcklmSW5kZXhfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhlc19zZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NfdmFsX3B0cl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBEZWZhdWx0Um91dGVySWZJbmRleF92YWwpOworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJUQUJMRV9EQVRBX0dFVF9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9lbnVtcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI0NmQxMAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9lbnVtcy5oCkBAIC0wLDAgKzEsOTMgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMgMTI1MjYgMjAwNS0wNy0xNSAyMjo0MToxNlogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUlRBQkxFX0VOVU1TX0gKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfRU5VTVNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIE5PVEVTIG9uIGVudW1zCisgICAgICogPT09PT09PT09PT09PT0KKyAgICAgKgorICAgICAqIFZhbHVlIE1hcHBpbmcKKyAgICAgKiAtLS0tLS0tLS0tLS0tCisgICAgICogSWYgdGhlIHZhbHVlcyBmb3IgeW91ciBkYXRhIHR5cGUgZG9uJ3QgZXhhY3RseSBtYXRjaCB0aGUKKyAgICAgKiBwb3NzaWJsZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgbWliLCB5b3Ugc2hvdWxkIG1hcCB0aGVtCisgICAgICogYmVsb3cuIEZvciBleGFtcGxlLCBhIGJvb2xlYW4gZmxhZyAoMS8wKSBpcyB1c3VhbGx5IHJlcHJlc2VudGVkCisgICAgICogYXMgYSBUcnV0aFZhbHVlIGluIGEgTUlCLCB3aGljaCBtYXBzIHRvIHRoZSB2YWx1ZXMgKDEvMikuCisgICAgICoKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGVudW0gZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSAoVU5TSUdORUQzMiAvIEFTTl9VTlNJR05FRCkKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX0VOVU1TCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX0VOVU1TCisKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfTUlOICAwCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUkxJRkVUSU1FX01BWCAgMHhGRkZGRkZGRlVMCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSTElGRVRJTUVfRU5VTVMgKi8KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSAoSW5ldEFkZHJlc3NUeXBlIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBJTkVUQUREUkVTU1RZUEVfRU5VTVMKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0VOVU1TCisKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX1VOS05PV04gIDAKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0lQVjQgIDEKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0lQVjYgIDIKKyNkZWZpbmUgSU5FVEFERFJFU1NUWVBFX0lQVjRaICAzCisjZGVmaW5lIElORVRBRERSRVNTVFlQRV9JUFY2WiAgNAorI2RlZmluZSBJTkVUQUREUkVTU1RZUEVfRE5TICAxNgorCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElORVRBRERSRVNTVFlQRV9FTlVNUyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBjb25zdGFudHMgZm9yIGVudW1zIGZvciB0aGUgTUlCIG5vZGUKKyAqIGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2UgKElOVEVHRVIgLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfRU5VTVMKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRV9FTlVNUworCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfUkVTRVJWRUQgIC0yCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0VfTE9XICAtMQorI2RlZmluZSBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX01FRElVTSAgMAorI2RlZmluZSBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX0hJR0ggIDEKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUERFRkFVTFRST1VURVJQUkVGRVJFTkNFX0VOVU1TICovCisKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQREVGQVVMVFJPVVRFUlRBQkxFX0VOVU1TX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGE3YmEwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwRGVmYXVsdFJvdXRlclRhYmxlL2lwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTAyMSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBEZWZhdWx0Um91dGVyVGFibGUuaCIKKworCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKworI2luY2x1ZGUgImlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZS5oIgorCisjaW5jbHVkZSA8Y3R5cGUuaD4KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwRGVmYXVsdFJvdXRlclRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSVAtTUlCOjppcERlZmF1bHRSb3V0ZXJUYWJsZSBpcyBzdWJpZCAzNyBvZiBpcC4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzcsIGxlbmd0aDogOAorICovCit0eXBlZGVmIHN0cnVjdCBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4X3MgeworCisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CisKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKnVzZXJfY3R4OworCisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyB0YmxfaW5mbzsKKworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyBhY2Nlc3NfbXVsdGlwbGV4ZXI7CisKK30gaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eDsKKworc3RhdGljIGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4OworCitzdGF0aWMgdm9pZCAgICAKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfaW5pdChpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2VfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZl9jdHgpOworc3RhdGljIHZvaWQgICAgCitfaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBpZl9jdHgpOworCisKK25ldHNubXBfY29udGFpbmVyICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKK30KKworaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LnVzZXJfY3R4OworfQorCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgoraXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICpvbGQgPQorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHg7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOworICAgIHJldHVybiBvbGQ7Cit9CisKK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKK3sKKyAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lcik7Cit9CisKKy8qCisgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKKyAqLworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vYmplY3RfbG9va3VwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X3ZhbHVlczsKKy8qKgorICogQGludGVybmFsCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcERlZmF1bHRSb3V0ZXJUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitfaXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKyAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0ciwgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfaXBEZWZhdWx0Um91dGVyVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyoqIGluZGV4OiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAvKgorICAgICAqIERlZmluZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBhY2Nlc3NpYmxlIGNvbHVtbnMuICBUaGlzCisgICAgICogb3B0aW1pemVzIHJldHJpdmFsLiAKKyAgICAgKi8KKyAgICB0YmxfaW5mby0+bWluX2NvbHVtbiA9IElQREVGQVVMVFJPVVRFUlRBQkxFX01JTl9DT0w7CisgICAgdGJsX2luZm8tPm1heF9jb2x1bW4gPSBJUERFRkFVTFRST1VURVJUQUJMRV9NQVhfQ09MOworCisgICAgLyoKKyAgICAgKiBzYXZlIHVzZXJzIGNvbnRleHQKKyAgICAgKi8KKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgudXNlcl9jdHggPSByZWdfcHRyOworCisgICAgLyoKKyAgICAgKiBjYWxsIGRhdGEgYWNjZXNzIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0X2RhdGEocmVnX3B0cik7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KCZpcERlZmF1bHRSb3V0ZXJUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbnRhaW5lciBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhY2Nlc3NfbXVsdGlwbGV4ZXI6IFJFUVVJUkVEIHdyYXBwZXIgZm9yIGdldCByZXF1ZXN0IGhhbmRsaW5nCisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwID0KKyAgICAgICAgX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9IF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCA9CisgICAgICAgIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3Q7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPQorICAgICAgICBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIENyZWF0ZSBhIHJlZ2lzdHJhdGlvbiwgc2F2ZSBvdXIgcmVnIGRhdGEsIHJlZ2lzdGVyIHRhYmxlLgorICAgICAqLworICAgIERFQlVHTVNHVEwoKCJpcERlZmF1bHRSb3V0ZXJUYWJsZTppbml0X2lwRGVmYXVsdFJvdXRlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgaXBEZWZhdWx0Um91dGVyVGFibGUgYXMgYSBtaWJzLWZvci1kdW1taWVzIHRhYmxlLlxuIikpOworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldChhY2Nlc3NfbXVsdGlwbGV4ZXIpOworICAgIHJlZ2luZm8gPQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiaXBEZWZhdWx0Um91dGVyVGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZ2luZm8tPm15X3JlZ192b2lkID0gJmlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzZXQgdXAgYmFieSBzdGVwcyBoYW5kbGVyLCBjcmVhdGUgaXQgYW5kIGluamVjdCBpdAorICAgICAqLworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QUkVfUkVRVUVTVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUE9TVF9SRVFVRVNUOworCisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVAorICAgIC8qIFhYWCAtIGFyZSB0aGVzZSBhY3R1YWxseSBuZWNlc3Nhcnk/ICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9TRVRfVkFMVUVTOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmlycmV2ZXJzaWJsZV9jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfSVJSRVZFUlNJQkxFX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3Rfc3ludGF4X2NoZWNrcykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DSEVDS19PQkpFQ1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ0xFQU5VUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRTOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cm93X2NyZWF0aW9uKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1JPV19DUkVBVEU7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX0NPTlNJU1RFTkNZOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisjZW5kaWYKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCByb3dfbWVyZ2UgaGVscGVyIHdpdGggcHJlZml4IHJvb3RvaWRfbGVuICsgMiAoZW50cnkuY29sKQorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGJsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworICAgIGlmIChOVUxMICE9IGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC5jYWNoZSkgeworICAgICAgICBoYW5kbGVyID0KKyAgICAgICAgICAgIG5ldHNubXBfY2FjaGVfaGFuZGxlcl9nZXQoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNhY2hlKTsKKyAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHJlZ2lzdGVyIHRhYmxlCisgICAgICovCisgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWdpbmZvLCB0YmxfaW5mbyk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwRGVmYXVsdFJvdXRlclRhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUKKyAqLwordm9pZAorX2lwRGVmYXVsdFJvdXRlclRhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUoMSkvSW5ldEFkZHJlc3NUeXBlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGU7CisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzKDIpL0luZXRBZGRyZXNzL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9hL3cvZS9SL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzczsKKyAgICAvKgorICAgICAqIGlwRGVmYXVsdFJvdXRlcklmSW5kZXgoMykvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpKTsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUudHlwZSA9IEFTTl9JTlRFR0VSOworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcykpOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLnR5cGUgPSBBU05fT0NURVRfU1RSOworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleCkpOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZS5uZXh0X3ZhcmlhYmxlID0KKyAgICAgICAgJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzOworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLm5leHRfdmFyaWFibGUgPSAmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXg7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwRGVmYXVsdFJvdXRlclRhYmxlOmlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUoMSkvSW5ldEFkZHJlc3NUeXBlL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaCAKKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2ggCisgICAgICovCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfbGVuICoKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NbMF0pKTsKKworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVySWZJbmRleCgzKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5pcERlZmF1bHRSb3V0ZXJJZkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVySWZJbmRleCkpOworCisKKyAgICBlcnIgPSBidWlsZF9vaWRfbm9hbGxvYyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sICZvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSk7CisgICAgaWYgKGVycikKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yICVkIGNvbnZlcnRpbmcgaW5kZXggdG8gb2lkXG4iLCBlcnIpOworCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2luZGV4X3RvX29pZCAqLworCisvKioKKyAqIGV4dHJhY3QgaXBEZWZhdWx0Um91dGVyVGFibGUgaW5kZXhlcyBmcm9tIGEgbmV0c25tcF9pbmRleAorICoKKyAqIEByZXR2YWwgU05NUF9FUlJfTk9FUlJPUiAgOiBubyBlcnJvcgorICogQHJldHZhbCBTTk1QX0VSUl9HRU5FUlIgICA6IGVycm9yCisgKi8KK2ludAoraXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfZnJvbV9vaWQobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZXJyID0gU05NUF9FUlJfTk9FUlJPUjsKKworICAgIC8qCisgICAgICogdGVtcCBzdG9yYWdlIGZvciBwYXJzaW5nIGluZGV4ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGlwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKDEpL0luZXRBZGRyZXNzVHlwZS9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvYS93L0Uvci9kL2gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlOworICAgIC8qCisgICAgICogaXBEZWZhdWx0Um91dGVyQWRkcmVzcygyKS9JbmV0QWRkcmVzcy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvYS93L2UvUi9kL2gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3M7CisgICAgLyoKKyAgICAgKiBpcERlZmF1bHRSb3V0ZXJJZkluZGV4KDMpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlKSk7CisgICAgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3NUeXBlLnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICBtZW1zZXQoJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzLCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MpKTsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy50eXBlID0gQVNOX09DVEVUX1NUUjsKKyAgICBtZW1zZXQoJnZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4LCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwRGVmYXVsdFJvdXRlcklmSW5kZXgpKTsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVySWZJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUubmV4dF92YXJpYWJsZSA9CisgICAgICAgICZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzczsKKyAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy5uZXh0X3ZhcmlhYmxlID0gJnZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4OworICAgIHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcERlZmF1bHRSb3V0ZXJUYWJsZTppcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF9mcm9tX29pZCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcGFyc2UgdGhlIG9pZCBpbnRvIHRoZSBpbmRpdmlkdWFsIGluZGV4IGNvbXBvbmVudHMKKyAgICAgKi8KKyAgICBlcnIgPSBwYXJzZV9vaWRfaW5kZXhlcyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSk7CisgICAgaWYgKGVyciA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGNvcHkgb3V0IHZhbHVlcworICAgICAgICAgKi8KKyAgICAgICAgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUgPQorICAgICAgICAgICAgKigodV9sb25nICopIHZhcl9pcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZS52YWwuc3RyaW5nKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogTk9URTogdmFsX2xlbiBpcyBpbiBieXRlcywgaXBEZWZhdWx0Um91dGVyQWRkcmVzc19sZW4gbWlnaHQgbm90IGJlCisgICAgICAgICAqLworICAgICAgICBpZiAodmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MudmFsX2xlbiA+CisgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzcykpCisgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3MsCisgICAgICAgICAgICAgICAgICAgdmFyX2lwRGVmYXVsdFJvdXRlckFkZHJlc3MudmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy52YWxfbGVuKTsKKyAgICAgICAgICAgIG1pYl9pZHgtPmlwRGVmYXVsdFJvdXRlckFkZHJlc3NfbGVuID0KKyAgICAgICAgICAgICAgICB2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzcy52YWxfbGVuIC8KKyAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBEZWZhdWx0Um91dGVyQWRkcmVzc1swXSk7CisgICAgICAgIH0KKyAgICAgICAgbWliX2lkeC0+aXBEZWZhdWx0Um91dGVySWZJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9pcERlZmF1bHRSb3V0ZXJJZkluZGV4LnZhbC5zdHJpbmcpOworCisKKyAgICB9CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfaXBEZWZhdWx0Um91dGVyQWRkcmVzc1R5cGUpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfaW5kZXhfZnJvbV9vaWQgKi8KKworCisvKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogQGludGVybmFsCisgKiBhbGxvY2F0ZSByZXNvdXJjZXMgZm9yIGEgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eAorICovCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YSAqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChOVUxMICE9IGRhdGEpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiB0cmFjayBpZiB3ZSBnb3QgZGF0YSBmcm9tIHVzZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzIHw9IE1GRF9ST1dfREFUQV9GUk9NX1VTRVI7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhID0gZGF0YTsKKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09CisgICAgICAgICAgICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEgPQorICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9hbGxvY2F0ZV9kYXRhKCkpKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUocm93cmVxX2N0eCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qCisgICAgICogdW5kbyBjb250ZXh0IHdpbGwgYmUgYWxsb2NhdGVkIHdoZW4gbmVlZGVkIChpbiAqX3VuZG9fc2V0dXApCisgICAgICovCisKKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMgPSByb3dyZXFfY3R4LT5vaWRfdG1wOworCisgICAgcm93cmVxX2N0eC0+aXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YV9saXN0ID0gTlVMTDsKKworICAgIC8qCisgICAgICogaWYgd2UgYWxsb2NhdGVkIGRhdGEsIGNhbGwgaW5pdCByb3V0aW5lCisgICAgICovCisgICAgaWYgKCEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19EQVRBX0ZST01fVVNFUikpIHsKKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPQorICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eF9pbml0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pbml0X2N0eCkpIHsKKyAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eAorICovCit2b2lkCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6aXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogZm9yIG5vbi10cmFuc2llbnQgZGF0YSwgZG9uJ3QgZnJlZSBkYXRhIHdlIGdvdCBmcm9tIHRoZSB1c2VyCisgICAgICovCisgICAgaWYgKChyb3dyZXFfY3R4LT5kYXRhKSAmJgorICAgICAgICAhKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKQorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+ZGF0YSk7CisKKyAgICAvKgorICAgICAqIGZyZWUgaW5kZXggb2lkIHBvaW50ZXIKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzICE9IHJvd3JlcV9jdHgtPm9pZF90bXApCisgICAgICAgIGZyZWUocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzKTsKKworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfZmlyc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJza2lwcGluZyBhZGRpdGlvbmFsIHByZV9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHJjID0gaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXBEZWZhdWx0Um91dGVyVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcERlZmF1bHRSb3V0ZXJUYWJsZV9wcmVfcmVxdWVzdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworICAgIGludCAgICAgICAgICAgICByYywgcGFja2V0X3JjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiByZWxlYXNlIHJvdyBjb250ZXh0LCBpZiBkZWxldGVkCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHggJiYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREVMRVRFRCkpCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogd2FpdCBmb3IgbGFzdCBjYWxsIGJlZm9yZSBjYWxsaW5nIHVzZXIKKyAgICAgKi8KKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfbGFzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIHJjID0gaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0KGlwRGVmYXVsdFJvdXRlclRhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgcGFja2V0X3JjKTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwRGVmYXVsdFJvdXRlclRhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGVfcG9zdF9yZXF1ZXN0XG4iLCByYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX29iamVjdF9sb29rdXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX29iamVjdF9sb29rdXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGdldCBvdXIgY29udGV4dCBmcm9tIG1mZAorICAgICAqIGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggKmlmX2N0eCA9CisgICAgICogICAgICAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggKilyZWdpbmZvLT5teV9yZWdfdm9pZDsKKyAgICAgKi8KKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0NSRUFUSU9OOworICAgIH0KKworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIHJjKTsKKyAgICBlbHNlCisgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd19wcmVwKHJvd3JlcV9jdHgpOworCisgICAgcmV0dXJuIFNOTVBfVkFMSURBVEVfRVJSKHJjKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vYmplY3RfbG9va3VwICovCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIEdFVCBwcm9jZXNzaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIEBpbnRlcm5hbAorICogUmV0cmlldmUgdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfY29sdW1uKGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfY29sdW1uIiwgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSg0KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSTElGRVRJTUU6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXBEZWZhdWx0Um91dGVyTGlmZXRpbWVfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSg1KS9JTlRFR0VSL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL3cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRToKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9JTlRFR0VSOworICAgICAgICByYyA9IGlwRGVmYXVsdFJvdXRlclByZWZlcmVuY2VfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChJUERFRkFVTFRST1VURVJUQUJMRV9NSU5fQ09MIDw9IGNvbHVtbgorICAgICAgICAgICAgJiYgY29sdW1uIDw9IElQREVGQVVMVFJPVVRFUlRBQkxFX01BWF9DT0wpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX2dldF9jb2x1bW4iLCAiYXNzdW1lIGNvbHVtbiAlZCBpcyByZXNlcnZlZFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByYyA9IE1GRF9TS0lQOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X2NvbHVtblxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X2NvbHVtbiAqLworCitpbnQKK19tZmRfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X3ZhbHVlcyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICB1X2NoYXIgICAgICAgICAqb2xkX3N0cmluZzsKKyAgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spICh2b2lkICopOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfbWZkX2lwRGVmYXVsdFJvdXRlclRhYmxlX2dldF92YWx1ZXMiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNhdmUgb2xkIHBvaW50ZXIsIHNvIHdlIGNhbiBmcmVlIGl0IGlmIHJlcGxhY2VkCisgICAgICAgICAqLworICAgICAgICBvbGRfc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZzsKKyAgICAgICAgZGF0YUZyZWVIb29rID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+ZGF0YUZyZWVIb29rOworICAgICAgICBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmID09CisgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfaXBEZWZhdWx0Um91dGVyVGFibGVfZ2V0X2NvbHVtbihyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGlmIChNRkRfU0tJUCA9PSByYykgeworICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJOVUxMIHZhcmJpbmQgZGF0YSBwb2ludGVyIVxuIik7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgd2Fzbid0IHVzZWQgcHJldmlvdXNseSBmb3IgdGhlIG9sZCBkYXRhIChpLmUuIGl0CisgICAgICAgICAqIHdhcyBhbGxjb2F0ZWQgbWVtb3J5KSAgYW5kIHRoZSBnZXQgcm91dGluZSByZXBsYWNlZCB0aGUgcG9pbnRlciwKKyAgICAgICAgICogd2UgbmVlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG9sZF9zdHJpbmcgJiYgKG9sZF9zdHJpbmcgIT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSAmJgorICAgICAgICAgICAgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgIT0gb2xkX3N0cmluZykpIHsKKyAgICAgICAgICAgIGlmIChkYXRhRnJlZUhvb2spCisgICAgICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spIChvbGRfc3RyaW5nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmVlKG9sZF9zdHJpbmcpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9nZXRfdmFsdWVzICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTRVQgUFJPQ0VTU0lORyBOT1QgQVBQTElDQUJMRSAocGVyIE1JQiBvciB1c2VyIHNldHRpbmcpCisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERBVEEgQUNDRVNTCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgICAgIF9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcik7CisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyBpbnQKK19jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjYWNoZSBmb3IgaXBEZWZhdWx0Um91dGVyVGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgcmV0dXJuIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZS0+bWFnaWMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwRGVmYXVsdFJvdXRlclRhYmxlOl9jYWNoZV9mcmVlIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGluIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NhY2hlX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29udGFpbmVyID0gKG5ldHNubXBfY29udGFpbmVyICopIGNhY2hlLT5tYWdpYzsKKworICAgIF9jb250YWluZXJfZnJlZShjb250YWluZXIpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NvbnRhaW5lcl9pdGVtX2ZyZWUoaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb250ZXh0KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfY29udGFpbmVyX2l0ZW1fZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2l0ZW1fZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcERlZmF1bHRSb3V0ZXJUYWJsZTpfY29udGFpbmVyX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjb250YWluZXIgaW4gaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2ZyZWVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY29kZQorICAgICAqLworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGZyZWUgYWxsIGl0ZW1zLiBpbmVmZmljaWVudCwgYnV0IGVhc3kuCisgICAgICovCisgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jb250YWluZXJfaXRlbV9mcmVlLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBpbml0aWFsaXplIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KGlwRGVmYXVsdFJvdXRlclRhYmxlX2ludGVyZmFjZV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBjYWNoZSBpbml0CisgICAgICovCisgICAgaWZfY3R4LT5jYWNoZSA9IG5ldHNubXBfY2FjaGVfY3JlYXRlKDMwLCAgICAvKiB0aW1lb3V0IGluIHNlY29uZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2NhY2hlX2xvYWQsIF9jYWNoZV9mcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX29pZF9zaXplKTsKKworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImVycm9yIGNyZWF0aW5nIGNhY2hlIGZvciBpcERlZmF1bHRSb3V0ZXJUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZl9jdHgtPmNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0KCZpZl9jdHgtPmNvbnRhaW5lciwgaWZfY3R4LT5jYWNoZSk7CisgICAgaWYgKE5VTEwgPT0gaWZfY3R4LT5jb250YWluZXIpCisgICAgICAgIGlmX2N0eC0+Y29udGFpbmVyID0KKyAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlwRGVmYXVsdFJvdXRlclRhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgorICAgICAgICAgICAgICAgICAiaXBEZWZhdWx0Um91dGVyVGFibGVfY29udGFpbmVyX2luaXRcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKE5VTEwgIT0gaWZfY3R4LT5jYWNoZSkKKyAgICAgICAgaWZfY3R4LT5jYWNoZS0+bWFnaWMgPSAodm9pZCAqKSBpZl9jdHgtPmNvbnRhaW5lcjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBEZWZhdWx0Um91dGVyVGFibGU6X2lwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpZl9jdHgtPmNvbnRhaW5lcik7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoaWZfY3R4LT5jb250YWluZXIpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KKworCitpcERlZmF1bHRSb3V0ZXJUYWJsZV9yb3dyZXFfY3R4ICoKK2lwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcERlZmF1bHRSb3V0ZXJUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCit7CisgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfT0lEX0xFTl07CisgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgc3RvcmFnZSBmb3IgT0lECisgICAgICovCisgICAgb2lkX2lkeC5vaWRzID0gb2lkX3RtcDsKKyAgICBvaWRfaWR4LmxlbiA9IHNpemVvZihvaWRfdG1wKSAvIHNpemVvZihvaWQpOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0CisgICAgICovCisgICAgcmMgPSBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF90b19vaWQoJm9pZF9pZHgsIG1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByb3dyZXFfY3R4ID0KKyAgICAgICAgQ09OVEFJTkVSX0ZJTkQoaXBEZWZhdWx0Um91dGVyVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgJm9pZF9pZHgpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfaW50ZXJmYWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc4MDQ5MQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSVEFCTEVfSU5URVJGQUNFX0gKKyNkZWZpbmUgSVBERUZBVUxUUk9VVEVSVEFCTEVfSU5URVJGQUNFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyNpbmNsdWRlICJpcERlZmF1bHRSb3V0ZXJUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcERlZmF1bHRSb3V0ZXJUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY3R4KTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uX3NldAorICAgICAgICAoaXBEZWZhdWx0Um91dGVyVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICppcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKTsKKworICAgIGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwRGVmYXVsdFJvdXRlclRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoaXBEZWZhdWx0Um91dGVyVGFibGVfZGF0YQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLCB2b2lkICopOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgKKyAgICAgICAgKGlwRGVmYXVsdFJvdXRlclRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF90b19vaWQobmV0c25tcF9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBpcERlZmF1bHRSb3V0ZXJUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXBEZWZhdWx0Um91dGVyVGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQREVGQVVMVFJPVVRFUlRBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcERlZmF1bHRSb3V0ZXJUYWJsZS9pcERlZmF1bHRSb3V0ZXJUYWJsZV9vaWRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MTRlNzEKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBEZWZhdWx0Um91dGVyVGFibGUvaXBEZWZhdWx0Um91dGVyVGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1vaWRzLm0yYyAxMjg1NSAyMDA1LTA5LTI3IDE1OjU2OjA4WiByc3RvcnkgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBERUZBVUxUUk9VVEVSVEFCTEVfT0lEU19ICisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX09JRFNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworICAgIC8qCisgICAgICogY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgdGFibGUgaXBEZWZhdWx0Um91dGVyVGFibGUgCisgICAgICovCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX09JRCAgICAgICAgICAgICAgMSwzLDYsMSwyLDEsNCwzNworCisjZGVmaW5lIENPTFVNTl9JUERFRkFVTFRST1VURVJBRERSRVNTVFlQRSAgICAgICAgIDEKKworI2RlZmluZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSQUREUkVTUyAgICAgICAgIDIKKworI2RlZmluZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSSUZJTkRFWCAgICAgICAgIDMKKworI2RlZmluZSBDT0xVTU5fSVBERUZBVUxUUk9VVEVSTElGRVRJTUUgICAgICAgICA0CisKKyNkZWZpbmUgQ09MVU1OX0lQREVGQVVMVFJPVVRFUlBSRUZFUkVOQ0UgICAgICAgICA1CisKKworI2RlZmluZSBJUERFRkFVTFRST1VURVJUQUJMRV9NSU5fQ09MICAgQ09MVU1OX0lQREVGQVVMVFJPVVRFUkxJRkVUSU1FCisjZGVmaW5lIElQREVGQVVMVFJPVVRFUlRBQkxFX01BWF9DT0wgICBDT0xVTU5fSVBERUZBVUxUUk9VVEVSUFJFRkVSRU5DRQorCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBERUZBVUxUUk9VVEVSVEFCTEVfT0lEU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMWQ4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUuaApAQCAtMCwwICsxLDggQEAKKy8qCisgKiBtb2R1bGUgdG8gaW5jbHVkZSB0aGUgbW9kdWxlcworICovCisKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cykKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZSkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UpCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzZDgwN2UKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuYwpAQCAtMCwwICsxLDIyMiBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qKiBccGFnZSBNRkQgaGVscGVyIGZvciBpcElmU3RhdHNUYWJsZQorICoKKyAqIFxzZWN0aW9uIGludHJvIEludHJvZHVjdGlvbgorICogSW50cm9kdWN0b3J5IHRleHQuCisgKgorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGUuaCIKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CisKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKworY29uc3Qgb2lkICAgICAgIGlwSWZTdGF0c1RhYmxlX29pZFtdID0geyBJUElGU1RBVFNUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICBpcElmU3RhdHNUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoaXBJZlN0YXRzVGFibGVfb2lkKTsKKworaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uIGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dDsKK3N0YXRpYyBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKmlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wOworCit2b2lkICAgICAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9pcElmU3RhdHNUYWJsZSh2b2lkKTsKKworCisvKioKKyAqIEluaXRpYWxpemVzIHRoZSBpcElmU3RhdHNUYWJsZSBtb2R1bGUKKyAqLwordm9pZAoraW5pdF9pcElmU3RhdHNUYWJsZSh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmluaXRfaXBJZlN0YXRzVGFibGUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAwOm86IFBlcmZvcm0gaXBJZlN0YXRzVGFibGUgb25lLXRpbWUgbW9kdWxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBoZXJlIHdlIGluaXRpYWxpemUgYWxsIHRoZSB0YWJsZXMgd2UncmUgcGxhbm5pbmcgb24gc3VwcG9ydGluZworICAgICAqLworICAgIGlmIChzaG91bGRfaW5pdCgiaXBJZlN0YXRzVGFibGUiKSkKKyAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSgpOworCisgICAgLyoKKyAgICAgKiBsYXN0IGNoYW5nZWQgc2hvdWxkIGJlIDAgYXQgc3RhcnR1cAorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KDApOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0X2lwSWZTdGF0c1RhYmxlICovCisKKy8qKgorICogU2h1dC1kb3duIHRoZSBpcElmU3RhdHNUYWJsZSBtb2R1bGUgKGFnZW50IGlzIGV4aXRpbmcpCisgKi8KK3ZvaWQKK3NodXRkb3duX2lwSWZTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgaWYgKHNob3VsZF9pbml0KCJpcElmU3RhdHNUYWJsZSIpKQorICAgICAgICBzaHV0ZG93bl90YWJsZV9pcElmU3RhdHNUYWJsZSgpOworCit9CisKKy8qKgorICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAoraW5pdGlhbGl6ZV90YWJsZV9pcElmU3RhdHNUYWJsZSh2b2lkKQoreworICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmluaXRpYWxpemVfdGFibGVfaXBJZlN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDE6bzogUGVyZm9ybSBpcElmU3RhdHNUYWJsZSBvbmUtdGltZSB0YWJsZSBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogVE9ETzozMDI6bzogfC0+SW5pdGlhbGl6ZSBpcElmU3RhdHNUYWJsZSB1c2VyIGNvbnRleHQKKyAgICAgKiBpZiB5b3UnZCBsaWtlIHRvIHBhc3MgaW4gYSBwb2ludGVyIHRvIHNvbWUgZGF0YSBmb3IgdGhpcworICAgICAqIHRhYmxlLCBhbGxvY2F0ZSBvciBzZXQgaXQgdXAgaGVyZS4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGEgbmV0c25tcF9kYXRhX2xpc3QgaXMgYSBzaW1wbGUgd2F5IHRvIHN0b3JlIHZvaWQgcG9pbnRlcnMuIEEgc2ltcGxlCisgICAgICogc3RyaW5nIHRva2VuIGlzIHVzZWQgdG8gYWRkLCBmaW5kIG9yIHJlbW92ZSBwb2ludGVycy4KKyAgICAgKi8KKyAgICBpcElmU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcAorCT0gbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KCJpcElmU3RhdHNUYWJsZSIsIE5VTEwsIE5VTEwpOworCisgICAgLyoKKyAgICAgKiBObyBzdXBwb3J0IGZvciBhbnkgZmxhZ3MgeWV0LCBidXQgaW4gdGhlIGZ1dHVyZSB5b3Ugd291bGQKKyAgICAgKiBzZXQgYW55IGZsYWdzIGhlcmUuCisgICAgICovCisgICAgZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlCisJKGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wLCBmbGFncyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpemVfdGFibGVfaXBJZlN0YXRzVGFibGUgKi8KKworLyoqCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUgCisgKi8KK3ZvaWQKK3NodXRkb3duX3RhYmxlX2lwSWZTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBzaHV0ZG93biBjb2RlCisgICAgICovCisgICAgX2lwSWZTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcElmU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCk7CisgICAgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEoaXBJZlN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIGlwSWZTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wID0gTlVMTDsKK30KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGluaXRpYWxpemF0aW9uIChlZyBkZWZhdWx0IHZhbHVlcykKKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eCAgICA6IHJvdyByZXF1ZXN0IGNvbnRleHQKKyAqIEBwYXJhbSB1c2VyX2luaXRfY3R4IDogdm9pZCBwb2ludGVyIGZvciB1c2VyIChwYXJhbWV0ZXIgdG8gcm93cmVxX2N0eF9hbGxvY2F0ZSkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICA6IG5vIGVycm9ycworICogQHJldHZhbCBNRkRfRVJST1IgICAgOiBlcnJvciAoY29udGV4dCBhbGxvY2F0ZSB3aWxsIGZhaWwpCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVzZXJfaW5pdF9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMDpvOiB8LT4gUGVyZm9ybSBleHRyYSBpcElmU3RhdHNUYWJsZSByb3dyZXEgaW5pdGlhbGl6YXRpb24uIChlZyBERUZWQUxTKQorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQgKi8KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGNsZWFudXAKKyAqCisgKi8KK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjExOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwSWZTdGF0c1RhYmxlIHJvd3JlcSBjbGVhbnVwLgorICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUocm93cmVxX2N0eC0+ZGF0YSk7CisgICAgcm93cmVxX2N0eC0+ZGF0YSA9IE5VTEw7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cCAqLworCisvKioKKyAqIHByZS1yZXF1ZXN0IGNhbGxiYWNrCisgKgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICAgICAgIDogb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTA6bzogUGVyZm9ybSBpcElmU3RhdHNUYWJsZSBwcmUtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIHBvc3QtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqIE5vdGU6CisgKiAgIE5ldyByb3dzIGhhdmUgYmVlbiBpbnNlcnRlZCBpbnRvIHRoZSBjb250YWluZXIsIGFuZAorICogICBkZWxldGVkIHJvd3MgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyIGFuZAorICogICByZWxlYXNlZC4KKyAqCisgKiBAcGFyYW0gdXNlcl9jb250ZXh0CisgKiBAcGFyYW0gcmMgOiBNRkRfU1VDQ0VTUyBpZiBhbGwgcmVxdWVzdHMgc3VjY2VlZGVkCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogb3RoZXIgZXJyb3IgKGlnbm9yZWQpCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmMpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTExOm86IFBlcmZvcm0gaXBJZlN0YXRzVGFibGUgcG9zdC1yZXF1ZXN0IGFjdGlvbnMuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisKKy8qKiBAeyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGE5NTZmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlLmgKQEAgLTAsMCArMSwyMDAgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgSVBJRlNUQVRTVEFCTEVfSAorI2RlZmluZSBJUElGU1RBVFNUQUJMRV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisvKiogQGFkZHRvZ3JvdXAgbWlzYyBtaXNjOiBNaXNjZWxsYW5lb3VzIHJvdXRpbmVzCisgKgorICogQHsKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oPgorCisgICAgLyoKKyAgICAgKiBvdGhlciByZXF1aXJlZCBtb2R1bGUgY29tcG9uZW50cyAKKyAgICAgKi8KKyAgICAvKiAqSU5ERU5ULU9GRiogICovCitjb25maWdfcmVxdWlyZShpcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0KQorICAgIC8qICpJTkRFTlQtT04qICAqLworCisgICAgLyoKKyAgICAgKiBPSUQgYW5kIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIGlwSWZTdGF0c1RhYmxlIAorICAgICAqLworI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlX29pZHMuaCIKKworICAgIC8qCisgICAgICogZW51bSBkZWZpbmlvbnMgCisgICAgICovCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfZW51bXMuaCIKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworICAgIHZvaWQgICAgICAgICAgICBpbml0X2lwSWZTdGF0c1RhYmxlKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9pcElmU3RhdHNUYWJsZSh2b2lkKTsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgICAgICovCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogV2hlbiB5b3UgcmVnaXN0ZXIgeW91ciBtaWIsIHlvdSBnZXQgdG8gcHJvdmlkZSBhIGdlbmVyaWMKKyAgICAgKiBwb2ludGVyIHRoYXQgd2lsbCBiZSBwYXNzZWQgYmFjayB0byB5b3UgZm9yIG1vc3Qgb2YgdGhlCisgICAgICogZnVuY3Rpb25zIGNhbGxzLgorICAgICAqCisgICAgICogVE9ETzoxMDA6cjogUmV2aWV3IGFsbCBjb250ZXh0IHN0cnVjdHVyZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIFRPRE86MTAxOm86IHwtPiBSZXZpZXcgaXBJZlN0YXRzVGFibGUgcmVnaXN0cmF0aW9uIGNvbnRleHQuCisgICAgICovCisgICAgdHlwZWRlZiBuZXRzbm1wX2RhdGFfbGlzdCBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb247CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogVE9ETzoxMTA6cjogfC0+IFJldmlldyBpcElmU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgc3RydWN0dXJlLgorICAgICAqIFRoaXMgc3RydWN0dXJlIGlzIHVzZWQgdG8gcmVwcmVzZW50IHRoZSBkYXRhIGZvciBpcElmU3RhdHNUYWJsZS4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgaXBJZlN0YXRzVGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGlwSWZTdGF0c1RhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGlwSWZTdGF0c1RhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgaXBJZlN0YXRzSVBWZXJzaW9uOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0lmSW5kZXgoMikvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAgICAgKi8KKyAgICAgICAgbG9uZyAgICAgICAgICAgIGlwSWZTdGF0c0lmSW5kZXg7CisKKworICAgIH0gaXBJZlN0YXRzVGFibGVfbWliX2luZGV4OworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMTpyOiB8ICAgfC0+IFJldmlldyBpcElmU3RhdHNUYWJsZSBtYXggaW5kZXggbGVuZ3RoLgorICAgICAqIElmIHlvdSBLTk9XIHRoYXQgeW91ciBpbmRleGVzIHdpbGwgbmV2ZXIgZXhjZWVkIGEgY2VydGFpbgorICAgICAqIGxlbmd0aCwgdXBkYXRlIHRoaXMgbWFjcm8gdG8gdGhhdCBsZW5ndGguCisgICAgICovCisjZGVmaW5lIE1BWF9pcElmU3RhdHNUYWJsZV9JRFhfTEVOICAgICAyCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTMwOm86IHwtPiBSZXZpZXcgaXBJZlN0YXRzVGFibGUgUm93IHJlcXVlc3QgKHJvd3JlcSkgY29udGV4dC4KKyAgICAgKiBXaGVuIHlvdXIgZnVuY3Rpb25zIGFyZSBjYWxsZWQsIHlvdSB3aWxsIGJlIHBhc3NlZCBhCisgICAgICogaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCBwb2ludGVyLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfcyB7CisKKyAgICAvKiogdGhpcyBtdXN0IGJlIGZpcnN0IGZvciBjb250YWluZXIgY29tcGFyZSB0byB3b3JrICovCisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgICAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfaXBJZlN0YXRzVGFibGVfSURYX0xFTl07CisKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfbWliX2luZGV4IHRibF9pZHg7CisKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfZGF0YSAqZGF0YTsKKworICAgICAgICAvKgorICAgICAgICAgKiBmbGFncyBwZXIgcm93LiBDdXJyZW50bHksIHRoZSBmaXJzdCAobG93ZXIpIDggYml0cyBhcmUgcmVzZXJ2ZWQKKyAgICAgICAgICogZm9yIHRoZSB1c2VyLiBTZWUgbWZkLmggZm9yIG90aGVyIGZsYWdzLgorICAgICAgICAgKi8KKyAgICAgICAgdV9pbnQgICAgICAgICAgIHJvd3JlcV9mbGFnczsKKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjEzMTpvOiB8ICAgfC0+IEFkZCB1c2VmdWwgZGF0YSB0byBpcElmU3RhdHNUYWJsZSByb3dyZXEgY29udGV4dC4KKyAgICAgICAgICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBrbm93bl9taXNzaW5nOworICAgICAgICB1aW50MzJfdCAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWU7CisgICAgICAgIHVpbnQzMl90ICAgICAgICBpcElmU3RhdHNSZWZyZXNoUmF0ZTsKKworICAgICAgICAvKgorICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqaXBJZlN0YXRzVGFibGVfZGF0YV9saXN0OworCisgICAgfSBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXBJZlN0YXRzVGFibGVfcmVmX3Jvd3JlcV9jdHhfcyB7CisgICAgICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgfSBpcElmU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eDsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlcl9jb250ZXh0KTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB1c2VyX2NvbnRleHQsIGludCByYyk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwgdm9pZCAqdXNlcl9pbml0X2N0eCk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaXBJZlN0YXRzVGFibGVfZGF0YSAqaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKGlwSWZTdGF0c1RhYmxlX2RhdGEgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSk7CisKKworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwSWZTdGF0c1RhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleChpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpOworCisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwSWZTdGF0c1RhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcElmU3RhdHNUYWJsZV9vaWRfc2l6ZTsKKworCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oIgorCisgICAgLyoKKyAgICAgKiBEVU1NWSBtYXJrZXJzLCBpZ25vcmUKKyAgICAgKgorICAgICAqIFRPRE86MDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjE5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoyOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mzk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjQ5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQSUZTVEFUU1RBQkxFX0ggKi8KKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGE2YWY4Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTAsMCArMSw0MDggQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJCAKKyAqCisgKiAkSWQ6JAorICovCisvKgorICogc3RhbmRhcmQgTmV0LVNOTVAgaW5jbHVkZXMgCisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKy8qCisgKiBpbmNsdWRlIG91ciBwYXJlbnQgaGVhZGVyIAorICovCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGUuaCIKKworCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaCIKKworc3RhdGljIGludCAgICAgIGlwaXNfY2FjaGVfcmVmcmVzaCA9IElQSUZTVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQ7CisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMsIGxlbmd0aDogOQorICovCisKKy8qKgorICogaW5pdGlhbGl6YXRpb24gZm9yIGlwSWZTdGF0c1RhYmxlIGRhdGEgYWNjZXNzCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvCisgKiBhbGxvY2F0ZSBhbnkgcmVzb3VyY2VzIHlvdSBuZWVkIGZvciB0aGUgZGF0YSB0YWJsZS4KKyAqCisgKiBAcGFyYW0gaXBJZlN0YXRzVGFibGVfcmVnCisgKiAgICAgICAgUG9pbnRlciB0byBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiB1bnJlY292ZXJhYmxlIGVycm9yLgorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2luaXRfZGF0YShpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiBpcElmU3RhdHNUYWJsZV9yZWcpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfaW5pdF9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgaXBJZlN0YXRzVGFibGUgZGF0YS4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19pbml0KCk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2luaXRfZGF0YSAqLworCisvKioKKyAqIGNvbnRhaW5lciBvdmVydmlldworICoKKyAqLworCisvKioKKyAqIGNvbnRhaW5lciBpbml0aWFsaXphdGlvbgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyX3B0ciBBIHBvaW50ZXIgdG8gYSBjb250YWluZXIgcG9pbnRlci4gSWYgeW91CisgKiAgICAgICAgY3JlYXRlIGEgY3VzdG9tIGNvbnRhaW5lciwgdXNlIHRoaXMgcGFyYW1ldGVyIHRvIHJldHVybiBpdAorICogICAgICAgIHRvIHRoZSBNRkQgaGVscGVyLiBJZiBzZXQgdG8gTlVMTCwgdGhlIE1GRCBoZWxwZXIgd2lsbAorICogICAgICAgIGFsbG9jYXRlIGEgY29udGFpbmVyIGZvciB5b3UuCisgKiBAcGFyYW0gIGNhY2hlIEEgcG9pbnRlciB0byBhIGNhY2hlIHN0cnVjdHVyZS4gWW91IGNhbiBzZXQgdGhlIHRpbWVvdXQKKyAqICAgICAgICAgYW5kIG90aGVyIGNhY2hlIGZsYWdzIHVzaW5nIHRoaXMgcG9pbnRlci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8gY3VzdG9taXplIGNlcnRhaW4KKyAqICBhc3BlY3RzIG9mIHRoZSBhY2Nlc3MgbWV0aG9kLiBGb3IgdGhlIG1vc3QgcGFydCwgaXQgaXMgZm9yIGFkdmFuY2VkCisgKiAgdXNlcnMuIFRoZSBkZWZhdWx0IGNvZGUgc2hvdWxkIHN1ZmZpY2UgZm9yIG1vc3QgY2FzZXMuIElmIG5vIGN1c3RvbQorICogIGNvbnRhaW5lciBpcyBhbGxvY2F0ZWQsIHRoZSBNRkQgY29kZSB3aWxsIGNyZWF0ZSBvbmUgZm9yIHlvdXIuCisgKgorICogIFRoaXMgaXMgYWxzbyB0aGUgcGxhY2UgdG8gc2V0IHVwIGNhY2hlIGJlaGF2aW9yLiBUaGUgZGVmYXVsdCwgdG8KKyAqICBzaW1wbHkgc2V0IHRoZSBjYWNoZSB0aW1lb3V0LCB3aWxsIHdvcmsgd2VsbCB3aXRoIHRoZSBkZWZhdWx0CisgKiAgY29udGFpbmVyLiBJZiB5b3UgYXJlIHVzaW5nIGEgY3VzdG9tIGNvbnRhaW5lciwgeW91IG1heSB3YW50IHRvCisgKiAgbG9vayBhdCB0aGUgY2FjaGUgaGVscGVyIGRvY3VtZW50YXRpb24gdG8gc2VlIGlmIHRoZXJlIGFyZSBhbnkKKyAqICBmbGFncyB5b3Ugd2FudCB0byBzZXQuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGluaXRpYWxpemF0aW9uIG5lZWRlZAorICogIGZvciB5b3UgZGF0YSBzb3VyY2UuIEZvciBleGFtcGxlLCBvcGVuaW5nIGEgY29ubmVjdGlvbiB0byBhbm90aGVyCisgKiAgcHJvY2VzcyB0aGF0IHdpbGwgc3VwcGx5IHRoZSBkYXRhLCBvcGVuaW5nIGEgZGF0YWJhc2UsIGV0Yy4KKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKiogY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY29udGFpbmVyIHBhcmFtIHRvIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogRm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHVzZSBhIGN1c3RvbSBjb250YWluZXIuIElmIHlvdQorICAgICAqIGRvIG5vdCBjcmVhdGUgb25lLCBvbmUgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuCisgICAgICovCisgICAgLyoKKyAgICAgKiBXZSBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyIGhlcmUgc28gd2UgY2FuIHByZS1sb2FkIGl0LCB3aGljaAorICAgICAqIHdpbGwgcmVzdWx0IGluIGFsbCBuZXcgZW50cmllcyB3aXRoIGxhc3QgY2hhbmdlZCB2YWx1ZXMuIHdlIG5lZWQKKyAgICAgKiB0byBjbGVhciB0aG9zZS4uLiAgV2UgYWxzbyBuZWVkIHRvIG1ha2Ugc3VyZSBpZkluZGV4ZXMgaGF2ZSBiZWVuCisgICAgICogYXNzaWduZWQuLi4KKyAgICAgKi8KKyAgICAqY29udGFpbmVyX3B0cl9wdHIgPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpcElmU3RhdHNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCAhPSAqY29udGFpbmVyX3B0cl9wdHIpCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKCpjb250YWluZXJfcHRyX3B0cik7CisgICAgaWYgKE5VTEwgPT0gY2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBjYWNoZSBwYXJhbSB0byBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBpcElmU3RhdHNUYWJsZSBjYWNoZSBwcm9wZXJ0aWVzLgorICAgICAqCisgICAgICogQWxzbyBmb3IgYWR2YW5jZWQgdXNlcnMsIHlvdSBjYW4gc2V0IHBhcmFtZXRlcnMgZm9yIHRoZQorICAgICAqIGNhY2hlLiBEbyBub3QgY2hhbmdlIHRoZSBtYWdpYyBwb2ludGVyLCBhcyBpdCBpcyB1c2VkCisgICAgICogYnkgdGhlIE1GRCBoZWxwZXIuIFRvIGNvbXBsZXRlbHkgZGlzYWJsZSBjYWNoaW5nLCBzZXQKKyAgICAgKiBjYWNoZS0+ZW5hYmxlZCB0byAwLgorICAgICAqLworICAgIGNhY2hlLT50aW1lb3V0ID0gSVBJRlNUQVRTVEFCTEVfQ0FDSEVfVElNRU9VVDsgICAgICAvKiBzZWNvbmRzICovCisKKyAgICBjYWNoZS0+ZmxhZ3MgfD0KKyAgICAgICAgKE5FVFNOTVBfQ0FDSEVfRE9OVF9BVVRPX1JFTEVBU0UgfCBORVRTTk1QX0NBQ0hFX0RPTlRfRlJFRV9FWFBJUkVECisgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FEIHwKKyAgICAgICAgIE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIGNoZWNrIGVudHJ5IGZvciB1cGRhdGUKKyAqLworc3RhdGljIHZvaWQKK19jaGVja19mb3JfdXBkYXRlcyhpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqc3RhdHMpCit7CisgICAgbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqaWZzdGF0c19lbnRyeTsKKworICAgIC8qCisgICAgICogY2hlY2sgZm9yIG1hdGNoaW5nIGVudHJ5LiB3b3JrcyBiZWNhdXNlIGluZGV4ZXMgYXJlIHRoZSBzYW1lLgorICAgICAqLworICAgIGlmc3RhdHNfZW50cnkgPSBDT05UQUlORVJfRklORChzdGF0cywgcm93cmVxX2N0eC0+ZGF0YSk7CisgICAgaWYgKE5VTEwgPT0gaWZzdGF0c19lbnRyeSkgeworICAgICAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGU6YWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgInVwZGF0aW5nIG1pc3NpbmcgZW50cnlcbiIpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBtYXJrIHJvdyBhcyBtaXNzaW5nLCBzbyB3ZSBjYW4gc2V0IGRpc2NvbnRpbnVpdHkKKyAgICAgICAgICogd2hlbiBpdCBjb21lcyBiYWNrLgorICAgICAgICAgKgorICAgICAgICAgKiB3aGF0IGVsc2Ugc2hvdWxkIHdlIGRvPyBzZXQgcmVmcmVzaCB0byAwPyB0aGF0J3Mgbm90IHF1aXRlIHJpZ2h0Li4uCisgICAgICAgICAqLworICAgICAgICByb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nID0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGU6YWNjZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgInVwZGF0aW5nIGV4aXN0aW5nIGVudHJ5XG4iKSk7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogQ2hlY2sgZm9yIGNoYW5nZXMgJiB1cGRhdGUKKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X3VwZGF0ZShyb3dyZXFfY3R4LT5kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnN0YXRzX2VudHJ5KTsKKworICAgICAgICAvKgorICAgICAgICAgKiBzZXQgZGlzY29udGludWl0eSBpZiBwcmV2aW91c2x5IG1pc3NpbmcuCisgICAgICAgICAqLworICAgICAgICBpZiAoMSA9PSByb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nKSB7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5rbm93bl9taXNzaW5nID0gMDsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKTsKKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIHJlbW92ZSBlbnRyeSBmcm9tIGNvbnRhaW5lcgorICAgICAgICAgKi8KKyAgICAgICAgQ09OVEFJTkVSX1JFTU9WRShzdGF0cywgaWZzdGF0c19lbnRyeSk7CisgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoaWZzdGF0c19lbnRyeSk7CisgICAgfQorfQorCisvKioKKyAqIGFkZCBuZXcgZW50cnkKKyAqLworc3RhdGljIHZvaWQKK19hZGRfbmV3KG5ldHNubXBfc3lzdGVtc3RhdHNfZW50cnkgKmlmc3RhdHNfZW50cnksCisgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisKKyAgICBERUJVR01TR1RMKCgiaXBJZlN0YXRzVGFibGU6YWNjZXNzIiwgImNyZWF0aW5nIG5ldyBlbnRyeVxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpZnN0YXRzX2VudHJ5KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGFsbG9jYXRlIGFuIHJvdyBjb250ZXh0IGFuZCBzZXQgdGhlIGluZGV4KGVzKQorICAgICAqLworICAgIHJvd3JlcV9jdHggPQorICAgICAgICBpcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4KGlmc3RhdHNfZW50cnksIE5VTEwpOworICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KQorICAgICAgICAmJiAoTUZEX1NVQ0NFU1MgPT0KKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnN0YXRzX2VudHJ5LT5pbmRleFswXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmc3RhdHNfZW50cnktPmluZGV4WzFdKSkpIHsKKyAgICAgICAgcm93cmVxX2N0eC0+aXBJZlN0YXRzUmVmcmVzaFJhdGUgPSBpcGlzX2NhY2hlX3JlZnJlc2ggKiAxMDAwOyAgIC8qIG1pbGxpLXNlY29uZHMgKi8KKyAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJvd3JlcV9jdHgpOworICAgICAgICBpcElmU3RhdHNUYWJsZV9sYXN0Q2hhbmdlX3NldChuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gcm93cmVxX2N0eCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQgd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUoaWZzdGF0c19lbnRyeSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8qKgorICogY29udGFpbmVyIHNodXRkb3duCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHIgQSBwb2ludGVyIHRvIHRoZSBjb250YWluZXIuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHNodXRkb3duIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYmVmb3JlIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKCkuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGNsZWFudXAgbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgc3VwcGxpZWQgdGhlIGRhdGEsIGNsb3NpbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXJfcHRyKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyX3B0cikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIHBhcmFtcyB0byBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd25cbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGlwSWZTdGF0c1RhYmxlIGRhdGEgbG9hZAorICogVGhpcyBmdW5jdGlvbiB3aWxsIGFsc28gYmUgY2FsbGVkIGJ5IHRoZSBjYWNoZSBoZWxwZXIgdG8gbG9hZAorICogdGhlIGNvbnRhaW5lciBhZ2FpbiAoYWZ0ZXIgdGhlIGNvbnRhaW5lciBmcmVlIGZ1bmN0aW9uIGhhcyBiZWVuCisgKiBjYWxsZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgY29udGVudHMpLgorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHRvIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBpbnNlcnRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFIDogQ2FuJ3QgYWNjZXNzIGRhdGEgc291cmNlCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2FkIHRoZSBpbmRleChlcykgKGFuZCBkYXRhLCBvcHRpb25hbGx5KQorICogIGZvciB0aGUgZXZlcnkgcm93IGluIHRoZSBkYXRhIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgV2hpbGUgbG9hZGluZyB0aGUgZGF0YSwgdGhlIG9ubHkgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSBpbmRleGVzLgorICogIElmIGFjY2VzcyB0byB5b3VyIGRhdGEgaXMgY2hlYXAvZmFzdCAoZS5nLiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gYQorICogIHN0cnVjdHVyZSBpbiBtZW1vcnkpLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHVwZGF0ZSB0aGUgZGF0YSBoZXJlLgorICogIElmLCBob3dldmVyLCB0aGUgYWNjZXNzaW5nIHRoZSBkYXRhIGludm92bGVzIG1vcmUgd29yayAoZS5nLiBwYXJzaW5nCisgKiAgc29tZSBvdGhlciBleGlzdGluZyBkYXRhLCBvciBwZWZvcm1pbmcgY2FsY3VsYXRpb25zIHRvIGRlcml2ZSB0aGUgZGF0YSksCisgKiAgdGhlbiB5b3UgY2FuIGxpbWl0IHlvdXJzZWxmIHRvIHNldHRpbmcgdGhlIGluZGV4ZXMgYW5kIHNhdmluZyBhbnkKKyAqICBpbmZvcm1hdGlvbiB5b3Ugd2lsbCBuZWVkIGxhdGVyLiBUaGVuIHVzZSB0aGUgc2F2ZWQgaW5mb3JtYXRpb24gaW4KKyAqICBpcElmU3RhdHNUYWJsZV9yb3dfcHJlcCgpIGZvciBwb3B1bGF0aW5nIGRhdGEuCisgKgorICogQG5vdGUKKyAqICBJZiB5b3UgbmVlZCBjb25zaXN0ZW5jeSBiZXR3ZWVuIHJvd3MgKGxpa2UgeW91IHdhbnQgc3RhdGlzdGljcworICogIGZvciBlYWNoIHJvdyB0byBiZSBmcm9tIHRoZSBzYW1lIHRpbWUgZnJhbWUpLCB5b3Ugc2hvdWxkIHNldCBhbGwKKyAqICBkYXRhIGhlcmUuCisgKgorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIG5ldHNubXBfY29udGFpbmVyICpzdGF0czsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisKKyAgICBzdGF0cyA9IG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9sb2FkKE5VTEwsIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSk7CisgICAgaWYgKE5VTEwgPT0gc3RhdHMpCisgICAgICAgIHJldHVybiBNRkRfUkVTT1VSQ0VfVU5BVkFJTEFCTEU7ICAgICAgICAvKiBtc2cgYWxyZWFkeSBsb2dnZWQgKi8KKworICAgIC8qCisgICAgICogVE9ETzozNTE6TTogfC0+IExvYWQvdXBkYXRlIGRhdGEgaW4gdGhlIGlwSWZTdGF0c1RhYmxlIGNvbnRhaW5lci4KKyAgICAgKiBsb29wIG92ZXIgeW91ciBpcElmU3RhdHNUYWJsZSBkYXRhLCBhbGxvY2F0ZSBhIHJvd3JlcSBjb250ZXh0LAorICAgICAqIHNldCB0aGUgaW5kZXgoZXMpIFthbmQgZGF0YSwgb3B0aW9uYWxseV0gYW5kIGluc2VydCBpbnRvCisgICAgICogdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogd2UganVzdCBnb3QgYSBmcmVzaCBjb3B5IG9mIGRhdGEuIGNvbXBhcmUgaXQgdG8KKyAgICAgKiB3aGF0IHdlJ3ZlIGFscmVhZHkgZ290LCBhbmQgbWFrZSBhbnkgYWRqdXN0ZW1lbnRzLi4uCisgICAgICovCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKGNvbnRhaW5lciwgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopCisgICAgICAgICAgICAgICAgICAgICAgIF9jaGVja19mb3JfdXBkYXRlcywgc3RhdHMpOworCisgICAgLyoKKyAgICAgKiBub3cgYWRkIGFueSBuZXcgZW50cmllcworICAgICAqLworICAgIENPTlRBSU5FUl9GT1JfRUFDSChzdGF0cywgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopCisgICAgICAgICAgICAgICAgICAgICAgIF9hZGRfbmV3LCBjb250YWluZXIpOworCisKKyAgICAvKgorICAgICAgKiBmcmVlIHRoZSBjb250YWluZXIuIHdlJ3ZlIGVpdGhlciBjbGFpbWVkIGVhY2ggaWZlbnRyeSwgb3IgcmVsZWFzZWQgaXQsCisgICAgICogc28gdGhlIGRhbCBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gY2xlYXIgdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19jb250YWluZXJfZnJlZShzdGF0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0ZSRUVfRE9OVF9DTEVBUik7CisKKyAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICIlbHUgcmVjb3Jkc1xuIiwgKHVuc2lnbmVkIGxvbmcpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCAqLworCisvKioKKyAqIGNvbnRhaW5lciBjbGVhbiB1cAorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHdpdGggYWxsIGN1cnJlbnQgaXRlbXMKKyAqCisgKiAgVGhpcyBvcHRpb25hbCBjYWxsYmFjayBpcyBjYWxsZWQgcHJpb3IgdG8gYWxsCisgKiAgaXRlbSdzIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyLiBJZiB5b3UKKyAqICBuZWVkIHRvIGRvIGFueSBwcm9jZXNzaW5nIGJlZm9yZSB0aGF0LCBkbyBpdCBoZXJlLgorICoKKyAqIEBub3RlCisgKiAgVGhlIE1GRCBoZWxwZXIgd2lsbCB0YWtlIGNhcmUgb2YgcmVsZWFzaW5nIGFsbCB0aGUgcm93IGNvbnRleHRzLgorICoKKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozODA6TTogRnJlZSBpcElmU3RhdHNUYWJsZSBjb250YWluZXIgZGF0YS4KKyAgICAgKi8KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBwcmVwYXJlIHJvdyBmb3IgcHJvY2Vzc2luZy4KKyAqCisgKiAgV2hlbiB0aGUgYWdlbnQgaGFzIGxvY2F0ZWQgdGhlIHJvdyBmb3IgYSByZXF1ZXN0LCB0aGlzIGZ1bmN0aW9uIGlzCisgKiAgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHJvdyBmb3IgcHJvY2Vzc2luZy4gSWYgeW91IGZ1bGx5IHBvcHVsYXRlZAorICogIHRoZSBkYXRhIGNvbnRleHQgZHVyaW5nIHRoZSBpbmRleCBzZXR1cCBwaGFzZSwgeW91IG1heSBub3QgbmVlZCB0bworICogIGRvIGFueXRoaW5nLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4IHBvaW50ZXIgdG8gYSBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfcm93X3ByZXAoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzVGFibGVfcm93X3ByZXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzkwOm86IFByZXBhcmUgcm93IGZvciByZXF1ZXN0LgorICAgICAqIElmIHBvcHVsYXRpbmcgcm93IGRhdGEgd2FzIGRlbGF5ZWQsIHRoaXMgaXMgdGhlIHBsYWNlIHRvCisgICAgICogZmlsbCBpbiB0aGUgcm93IGZvciB0aGlzIHJlcXVlc3QuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3Jvd19wcmVwICovCisKKy8qKiBAfSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWY3NjgyCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBJUElGU1RBVFNUQUJMRV9EQVRBX0FDQ0VTU19ICisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgICAgICovCisKKworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9pbml0X2RhdGEoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlZyk7CisKKworICAgIC8qCisgICAgICogVE9ETzoxODA6bzogUmV2aWV3IGlwSWZTdGF0c1RhYmxlIGNhY2hlIHRpbWVvdXQuCisgICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgY2FjaGUgdGltZXMgb3V0CisgICAgICovCisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQgICA2MAorCisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhY2hlICogY2FjaGUpOworICAgIHZvaWQgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24obmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworICAgIHZvaWQgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY2FjaGVfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfY2FjaGVfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9yb3dfcHJlcChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQSUZTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2NzNkYwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5jCkBAIC0wLDAgKzEsMzAxNSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZS5oIgorCisKKy8qKiBAZGVmZ3JvdXAgZGF0YV9nZXQgZGF0YV9nZXQ6IFJvdXRpbmVzIHRvIGdldCBkYXRhCisgKgorICogVE9ETzoyMzA6TTogSW1wbGVtZW50IGlwSWZTdGF0c1RhYmxlIGdldCByb3V0aW5lcy4KKyAqIFRPRE86MjQwOk06IEltcGxlbWVudCBpcElmU3RhdHNUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogSVAtTUlCOjppcElmU3RhdHNUYWJsZSBpcyBzdWJpZCAzIG9mIGlwVHJhZmZpY1N0YXRzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLCBsZW5ndGg6IDkKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBpcElmU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisvKgorICogaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YQorICoKKyAqIFB1cnBvc2U6IGNyZWF0ZSBuZXcgaXBJZlN0YXRzVGFibGVfZGF0YS4KKyAqLworaXBJZlN0YXRzVGFibGVfZGF0YSAqCitpcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBUT0RPOjIwMTpyOiB8LT4gYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaXBJZlN0YXRzVGFibGUgZGF0YSBjb250ZXh0LgorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2RhdGEgKnJ0biA9IFNOTVBfTUFMTE9DX1RZUEVERUYoaXBJZlN0YXRzVGFibGVfZGF0YSk7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBydG4pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuYWJsZSB0byBtYWxsb2MgbWVtb3J5IGZvciBuZXcgIgorICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfZGF0YS5cbiIpOworICAgIH0KKworICAgIHJldHVybiBydG47Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEgKi8KKworLyoKKyAqIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YQorICoKKyAqIFB1cnBvc2U6IHJlbGVhc2UgaXBJZlN0YXRzVGFibGUgZGF0YS4KKyAqLwordm9pZAoraXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKGlwSWZTdGF0c1RhYmxlX2RhdGEgKiBkYXRhKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIwMjpyOiB8LT4gcmVsZWFzZSBtZW1vcnkgZm9yIHRoZSBpcElmU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgZnJlZShkYXRhKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhICovCisKKworCisvKioKKyAqIHNldCBtaWIgaW5kZXgoZXMpCisgKgorICogQHBhcmFtIHRibF9pZHggbWliIGluZGV4IHN0cnVjdHVyZQorICogQHBhcmFtIGlwSWZTdGF0c0lQVmVyc2lvbl92YWwKKyAqIEBwYXJhbSBpcElmU3RhdHNJZkluZGV4X3ZhbAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBzZXR0aW5nIGFsbCB0aGUgTUlCIGluZGV4CisgKiAgY29tcG9uZW50cyB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuIEl0IGlzIGFzc3VtZSB0aGF0IHRoZSBDIHZhbHVlcworICogIGhhdmUgYWxyZWFkeSBiZWVuIG1hcHBlZCBmcm9tIHRoZWlyIG5hdGl2ZS9yYXdmb3JtYXQgdG8gdGhlIE1JQiBmb3JtYXQuCisgKi8KK2ludAoraXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKiB0YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgaXBJZlN0YXRzSVBWZXJzaW9uX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcElmU3RhdHNJZkluZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oIAorICAgICAqLworICAgIC8qKiBXQVJOSU5HOiB0aGlzIGNvZGUgbWlnaHQgbm90IHdvcmsgZm9yIG5ldHNubXBfaWZzdGF0c19lbnRyeSAqLworICAgIHRibF9pZHgtPmlwSWZTdGF0c0lQVmVyc2lvbiA9IGlwSWZTdGF0c0lQVmVyc2lvbl92YWw7CisKKyAgICAvKgorICAgICAqIGlwSWZTdGF0c0lmSW5kZXgoMikvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSCAKKyAgICAgKi8KKyAgICAvKiogV0FSTklORzogdGhpcyBjb2RlIG1pZ2h0IG5vdCB3b3JrIGZvciBuZXRzbm1wX2lmc3RhdHNfZW50cnkgKi8KKyAgICB0YmxfaWR4LT5pcElmU3RhdHNJZkluZGV4ID0gaXBJZlN0YXRzSWZJbmRleF92YWw7CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogc2V0IHJvdyBjb250ZXh0IGluZGV4ZXMKKyAqCisgKiBAcGFyYW0gcmVxcmVxX2N0eCB0aGUgcm93IGNvbnRleHQgdGhhdCBuZWVkcyB1cGRhdGVkIGluZGV4ZXMKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIG1pYiBpbmRleHMsIHRoZW4gdXBkYXRlcyB0aGUgb2lkIGluZGV4cworICogIGZyb20gdGhlIG1pYiBpbmRleC4KKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcElmU3RhdHNJUFZlcnNpb25fdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBpcElmU3RhdHNJZkluZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE1GRF9TVUNDRVNTICE9CisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoJnJvd3JlcV9jdHgtPnRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSVBWZXJzaW9uX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJZkluZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gaXBJZlN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKCZyb3dyZXFfY3R4LT5vaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5SZWNlaXZlcworICogaXBJZlN0YXRzSW5SZWNlaXZlcyBpcyBzdWJpZCAzIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQsIGluY2x1ZGluZworICAgICAgICAgICAgdGhvc2UgcmVjZWl2ZWQgaW4gZXJyb3IuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5SZWNlaXZlcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luUmVjZWl2ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luUmVjZWl2ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5SZWNlaXZlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5SZWNlaXZlc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5SZWNlaXZlc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblJlY2VpdmVzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJblJlY2VpdmVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luUmVjZWl2ZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJblJlY2VpdmVzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ0luUmVjZWl2ZXMKKyAqIGlwSWZTdGF0c0hDSW5SZWNlaXZlcyBpcyBzdWJpZCA0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQsIGluY2x1ZGluZworICAgICAgICAgICAgdGhvc2UgcmVjZWl2ZWQgaW4gZXJyb3IuICBUaGlzIG9iamVjdCBjb3VudHMgdGhlIHNhbWUKKyAgICAgICAgICAgIGRhdGFncmFtcyBhcyBpcElmU3RhdHNJblJlY2VpdmVzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIKKyAgICAgICAgICAgIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luUmVjZWl2ZXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDSW5SZWNlaXZlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luUmVjZWl2ZXMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93OworICAgICgqaXBJZlN0YXRzSENJblJlY2VpdmVzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENJblJlY2VpdmVzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbk9jdGV0cworICogaXBJZlN0YXRzSW5PY3RldHMgaXMgc3ViaWQgNSBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS41CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIGlucHV0IElQIGRhdGFncmFtcywKKyAgICAgICAgICAgIGluY2x1ZGluZyB0aG9zZSByZWNlaXZlZCBpbiBlcnJvci4gIE9jdGV0cyBmcm9tIGRhdGFncmFtcworICAgICAgICAgICAgY291bnRlZCBpbiBpcElmU3RhdHNJblJlY2VpdmVzIE1VU1QgYmUgY291bnRlZCBoZXJlLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luT2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luT2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luT2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luT2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5PY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luT2N0ZXRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5PY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5PY3RldHMKKyAqIGlwSWZTdGF0c0hDSW5PY3RldHMgaXMgc3ViaWQgNiBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS42CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIGlucHV0IElQIGRhdGFncmFtcywKKyAgICAgICAgICAgIGluY2x1ZGluZyB0aG9zZSByZWNlaXZlZCBpbiBlcnJvci4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUKKyAgICAgICAgICAgIHNhbWUgb2N0ZXRzIGFzIGlwSWZTdGF0c0luT2N0ZXRzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIKKyAgICAgICAgICAgIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luT2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENJbk9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luT2N0ZXRzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5PY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5PY3RldHMubG93OworICAgICgqaXBJZlN0YXRzSENJbk9jdGV0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk9jdGV0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkhkckVycm9ycworICogaXBJZlN0YXRzSW5IZHJFcnJvcnMgaXMgc3ViaWQgNyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS43CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgaW5wdXQgSVAgZGF0YWdyYW1zIGRpc2NhcmRlZCBkdWUgdG8gZXJyb3JzIGluCisgICAgICAgICAgICB0aGVpciBJUCBoZWFkZXJzLCBpbmNsdWRpbmcgdmVyc2lvbiBudW1iZXIgbWlzbWF0Y2gsIG90aGVyCisgICAgICAgICAgICBmb3JtYXQgZXJyb3JzLCBob3AgY291bnQgZXhjZWVkZWQsIGVycm9ycyBkaXNjb3ZlcmVkIGluCisgICAgICAgICAgICBwcm9jZXNzaW5nIHRoZWlyIElQIG9wdGlvbnMsIGV0Yy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkhkckVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbkhkckVycm9yc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkhkckVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkhkckVycm9ycyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOSERSRVJST1JTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkhkckVycm9yc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkluSGRyRXJyb3JzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbkhkckVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5Ob1JvdXRlcworICogaXBJZlN0YXRzSW5Ob1JvdXRlcyBpcyBzdWJpZCA4IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZGlzY2FyZGVkIGJlY2F1c2Ugbm8gcm91dGUKKyAgICAgICAgICAgIGNvdWxkIGJlIGZvdW5kIHRvIHRyYW5zbWl0IHRoZW0gdG8gdGhlaXIgZGVzdGluYXRpb24uCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5Ob1JvdXRlcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luTm9Sb3V0ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5Ob1JvdXRlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5Ob1JvdXRlc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzSW5Ob1JvdXRlc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk5vUm91dGVzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTk9ST1VURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luTm9Sb3V0ZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTm9Sb3V0ZXMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbk5vUm91dGVzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkFkZHJFcnJvcnMKKyAqIGlwSWZTdGF0c0luQWRkckVycm9ycyBpcyBzdWJpZCA5IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjkKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZGlzY2FyZGVkIGJlY2F1c2UgdGhlIElQCisgICAgICAgICAgICBhZGRyZXNzIGluIHRoZWlyIElQIGhlYWRlcidzIGRlc3RpbmF0aW9uIGZpZWxkIHdhcyBub3QgYQorICAgICAgICAgICAgdmFsaWQgYWRkcmVzcyB0byBiZSByZWNlaXZlZCBhdCB0aGlzIGVudGl0eS4gIFRoaXMgY291bnQKKyAgICAgICAgICAgIGluY2x1ZGVzIGludmFsaWQgYWRkcmVzc2VzIChlLmcuLCA6OjApLiAgRm9yIGVudGl0aWVzIHRoYXQKKyAgICAgICAgICAgIGFyZSBub3QgSVAgcm91dGVycyBhbmQgdGhlcmVmb3JlIGRvIG5vdCBmb3J3YXJkIGRhdGFncmFtcywKKyAgICAgICAgICAgIHRoaXMgY291bnRlciBpbmNsdWRlcyBkYXRhZ3JhbXMgZGlzY2FyZGVkIGJlY2F1c2UgdGhlCisgICAgICAgICAgICBkZXN0aW5hdGlvbiBhZGRyZXNzIHdhcyBub3QgYSBsb2NhbCBhZGRyZXNzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luQWRkckVycm9ycyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luQWRkckVycm9yc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5BZGRyRXJyb3JzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luQWRkckVycm9yc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkFkZHJFcnJvcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luQWRkckVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JbkFkZHJFcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luQWRkckVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zCisgKiBpcElmU3RhdHNJblVua25vd25Qcm90b3MgaXMgc3ViaWQgMTAgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTAKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBsb2NhbGx5LWFkZHJlc3NlZCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQKKyAgICAgICAgICAgIHN1Y2Nlc3NmdWxseSBidXQgZGlzY2FyZGVkIGJlY2F1c2Ugb2YgYW4gdW5rbm93biBvcgorICAgICAgICAgICAgdW5zdXBwb3J0ZWQgcHJvdG9jb2wuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZXNlIGRhdGFncmFtcyB3ZXJlIGFkZHJlc3NlZCBpcworICAgICAgICAgICAgaW5jcmVtZW50ZWQuICBUaGlzIGludGVyZmFjZSBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICBpbnB1dCBpbnRlcmZhY2UgZm9yIHNvbWUgb2YgdGhlIGRhdGFncmFtcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorCisKKworICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblVua25vd25Qcm90b3MgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJblVua25vd25Qcm90b3NfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luVW5rbm93blByb3Rvc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJblVua25vd25Qcm90b3NfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJblVua25vd25Qcm90b3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lOVU5LTk9XTlBST1RPU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJblVua25vd25Qcm90b3NfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0cworICogaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzIGlzIHN1YmlkIDExIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjExCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgaW5wdXQgSVAgZGF0YWdyYW1zIGRpc2NhcmRlZCBiZWNhdXNlIHRoZQorICAgICAgICAgICAgZGF0YWdyYW0gZnJhbWUgZGlkbid0IGNhcnJ5IGVub3VnaCBkYXRhLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJblRydW5jYXRlZFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJblRydW5jYXRlZFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JblRydW5jYXRlZFBrdHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zCisgKiBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMgaXMgc3ViaWQgMTIgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTIKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBkYXRhZ3JhbXMgZm9yIHdoaWNoIHRoaXMgZW50aXR5IHdhcyBub3QKKyAgICAgICAgICAgIHRoZWlyIGZpbmFsIElQIGRlc3RpbmF0aW9uIGFuZCBmb3Igd2hpY2ggdGhpcyBlbnRpdHkKKyAgICAgICAgICAgIGF0dGVtcHRlZCB0byBmaW5kIGEgcm91dGUgdG8gZm9yd2FyZCB0aGVtIHRvIHRoYXQgZmluYWwKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLiAgSW4gZW50aXRpZXMgdGhhdCBkbyBub3QgYWN0IGFzIElQIHJvdXRlcnMsCisgICAgICAgICAgICB0aGlzIGNvdW50ZXIgd2lsbCBpbmNsdWRlIG9ubHkgdGhvc2UgZGF0YWdyYW1zIHRoYXQgd2VyZQorICAgICAgICAgICAgU291cmNlLVJvdXRlZCB2aWEgdGhpcyBlbnRpdHksIGFuZCB0aGUgU291cmNlLVJvdXRlCisgICAgICAgICAgICBwcm9jZXNzaW5nIHdhcyBzdWNjZXNzZnVsLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIGluY29taW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgZWFjaCBkYXRhZ3JhbS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luRm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMKKyAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zIGlzIHN1YmlkIDEzIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjEzCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgaW5wdXQgZGF0YWdyYW1zIGZvciB3aGljaCB0aGlzIGVudGl0eSB3YXMgbm90CisgICAgICAgICAgICB0aGVpciBmaW5hbCBJUCBkZXN0aW5hdGlvbiBhbmQgZm9yIHdoaWNoIHRoaXMgZW50aXR5CisgICAgICAgICAgICBhdHRlbXB0ZWQgdG8gZmluZCBhIHJvdXRlIHRvIGZvcndhcmQgdGhlbSB0byB0aGF0IGZpbmFsCisgICAgICAgICAgICBkZXN0aW5hdGlvbi4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBwYWNrZXRzIGFzCisKKworCisgICAgICAgICAgICBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5Gb3J3RGF0YWdyYW1zLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luRm9yd0RhdGFncmFtcy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ0luRm9yd0RhdGFncmFtc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzUmVhc21SZXFkcworICogaXBJZlN0YXRzUmVhc21SZXFkcyBpcyBzdWJpZCAxNCBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4xNAorICogRGVzY3JpcHRpb246CitUaGUgbnVtYmVyIG9mIElQIGZyYWdtZW50cyByZWNlaXZlZCB0aGF0IG5lZWRlZCB0byBiZQorICAgICAgICAgICAgcmVhc3NlbWJsZWQgYXQgdGhpcyBpbnRlcmZhY2UuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZXNlIGZyYWdtZW50cyB3ZXJlIGFkZHJlc3NlZCBpcworICAgICAgICAgICAgaW5jcmVtZW50ZWQuICBUaGlzIGludGVyZmFjZSBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICBpbnB1dCBpbnRlcmZhY2UgZm9yIHNvbWUgb2YgdGhlIGZyYWdtZW50cy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNSZWFzbVJlcWRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzUmVhc21SZXFkc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzUmVhc21SZXFkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNSZWFzbVJlcWRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c1JlYXNtUmVxZHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c1JlYXNtUmVxZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c1JlYXNtUmVxZHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5SZWFzbVJlcWRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNSZWFzbVJlcWRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNSZWFzbU9LcworICogaXBJZlN0YXRzUmVhc21PS3MgaXMgc3ViaWQgMTUgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTUKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgc3VjY2Vzc2Z1bGx5IHJlYXNzZW1ibGVkLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIGludGVyZmFjZSB0byB3aGljaCB0aGVzZSBkYXRhZ3JhbXMgd2VyZSBhZGRyZXNzZWQgaXMKKyAgICAgICAgICAgIGluY3JlbWVudGVkLiAgVGhpcyBpbnRlcmZhY2UgbWlnaHQgbm90IGJlIHRoZSBzYW1lIGFzIHRoZQorICAgICAgICAgICAgaW5wdXQgaW50ZXJmYWNlIGZvciBzb21lIG9mIHRoZSBkYXRhZ3JhbXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21PS3MgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNSZWFzbU9Lc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzUmVhc21PS3NfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNSZWFzbU9Lc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzUmVhc21PS3NfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21PS3MgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzUmVhc21PS3NfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5SZWFzbU9LczsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzUmVhc21PS3NfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c1JlYXNtRmFpbHMKKyAqIGlwSWZTdGF0c1JlYXNtRmFpbHMgaXMgc3ViaWQgMTYgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTYKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBmYWlsdXJlcyBkZXRlY3RlZCBieSB0aGUgSVAgcmUtYXNzZW1ibHkKKyAgICAgICAgICAgIGFsZ29yaXRobSAoZm9yIHdoYXRldmVyIHJlYXNvbjogdGltZWQgb3V0LCBlcnJvcnMsIGV0Yy4pLgorICAgICAgICAgICAgTm90ZSB0aGF0IHRoaXMgaXMgbm90IG5lY2Vzc2FyaWx5IGEgY291bnQgb2YgZGlzY2FyZGVkIElQCisgICAgICAgICAgICBmcmFnbWVudHMgc2luY2Ugc29tZSBhbGdvcml0aG1zIChub3RhYmx5IHRoZSBhbGdvcml0aG0gaW4KKyAgICAgICAgICAgIFJGQyA4MTUpIGNhbiBsb3NlIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgZnJhZ21lbnRzIGJ5CisgICAgICAgICAgICBjb21iaW5pbmcgdGhlbSBhcyB0aGV5IGFyZSByZWNlaXZlZC4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBpbnRlcmZhY2UgdG8gd2hpY2ggdGhlc2UgZnJhZ21lbnRzIHdlcmUgYWRkcmVzc2VkIGlzCisgICAgICAgICAgICBpbmNyZW1lbnRlZC4gIFRoaXMgaW50ZXJmYWNlIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgICAgIGlucHV0IGludGVyZmFjZSBmb3Igc29tZSBvZiB0aGUgZnJhZ21lbnRzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c1JlYXNtRmFpbHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNSZWFzbUZhaWxzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNSZWFzbUZhaWxzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c1JlYXNtRmFpbHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c1JlYXNtRmFpbHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVhc21GYWlscyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVBU01GQUlMU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLlJlYXNtRmFpbHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0luRGlzY2FyZHMKKyAqIGlwSWZTdGF0c0luRGlzY2FyZHMgaXMgc3ViaWQgMTcgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMTcKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgZm9yIHdoaWNoIG5vIHByb2JsZW1zIHdlcmUKKyAgICAgICAgICAgIGVuY291bnRlcmVkIHRvIHByZXZlbnQgdGhlaXIgY29udGludWVkIHByb2Nlc3NpbmcsIGJ1dAorICAgICAgICAgICAgd2VyZSBkaXNjYXJkZWQgKGUuZy4sIGZvciBsYWNrIG9mIGJ1ZmZlciBzcGFjZSkuICBOb3RlIHRoYXQKKyAgICAgICAgICAgIHRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNsdWRlIGFueSBkYXRhZ3JhbXMgZGlzY2FyZGVkIHdoaWxlCisgICAgICAgICAgICBhd2FpdGluZyByZS1hc3NlbWJseS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkRpc2NhcmRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5EaXNjYXJkc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5EaXNjYXJkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkRpc2NhcmRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luRGlzY2FyZHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0lORElTQ0FSRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5JbkRpc2NhcmRzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbkRpc2NhcmRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkRlbGl2ZXJzCisgKiBpcElmU3RhdHNJbkRlbGl2ZXJzIGlzIHN1YmlkIDE4IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjE4CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZGF0YWdyYW1zIHN1Y2Nlc3NmdWxseSBkZWxpdmVyZWQgdG8gSVAKKyAgICAgICAgICAgIHVzZXItcHJvdG9jb2xzIChpbmNsdWRpbmcgSUNNUCkuCisKKyAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQorICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZXNlIGRhdGFncmFtcyB3ZXJlIGFkZHJlc3NlZCBpcworICAgICAgICAgICAgaW5jcmVtZW50ZWQuICBUaGlzIGludGVyZmFjZSBtaWdodCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCisKKworCisgICAgICAgICAgICBpbnB1dCBpbnRlcmZhY2UgZm9yIHNvbWUgb2YgdGhlIGRhdGFncmFtcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbkRlbGl2ZXJzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5EZWxpdmVyc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSW5EZWxpdmVyc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbkRlbGl2ZXJzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luRGVsaXZlcnMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0luRGVsaXZlcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5ERUxJVkVSU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5EZWxpdmVyc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5EZWxpdmVycy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luRGVsaXZlcnNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5EZWxpdmVycworICogaXBJZlN0YXRzSENJbkRlbGl2ZXJzIGlzIHN1YmlkIDE5IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjE5CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZGF0YWdyYW1zIHN1Y2Nlc3NmdWxseSBkZWxpdmVyZWQgdG8gSVAKKyAgICAgICAgICAgIHVzZXItcHJvdG9jb2xzIChpbmNsdWRpbmcgSUNNUCkuICBUaGlzIG9iamVjdCBjb3VudHMgdGhlCisgICAgICAgICAgICBzYW1lIHBhY2tldHMgYXMgaXBJZlN0YXRzSW5EZWxpdmVycywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyCisgICAgICAgICAgICB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENJbkRlbGl2ZXJzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENJbkRlbGl2ZXJzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkRlbGl2ZXJzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDSW5EZWxpdmVyc192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkRlbGl2ZXJzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5EZWxpdmVyc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0UmVxdWVzdHMKKyAqIGlwSWZTdGF0c091dFJlcXVlc3RzIGlzIHN1YmlkIDIwIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjIwCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgbG9jYWwgSVAgdXNlci0KKyAgICAgICAgICAgIHByb3RvY29scyAoaW5jbHVkaW5nIElDTVApIHN1cHBsaWVkIHRvIElQIGluIHJlcXVlc3RzIGZvcgorICAgICAgICAgICAgdHJhbnNtaXNzaW9uLiAgTm90ZSB0aGF0IHRoaXMgY291bnRlciBkb2VzIG5vdCBpbmNsdWRlIGFueQorICAgICAgICAgICAgZGF0YWdyYW1zIGNvdW50ZWQgaW4gaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRSZXF1ZXN0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRSZXF1ZXN0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRSZXF1ZXN0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRSZXF1ZXN0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dFJlcXVlc3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dFJlcXVlc3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ091dFJlcXVlc3RzCisgKiBpcElmU3RhdHNIQ091dFJlcXVlc3RzIGlzIHN1YmlkIDIxIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjIxCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgbG9jYWwgSVAgdXNlci0KKyAgICAgICAgICAgIHByb3RvY29scyAoaW5jbHVkaW5nIElDTVApIHN1cHBsaWVkIHRvIElQIGluIHJlcXVlc3RzIGZvcgorICAgICAgICAgICAgdHJhbnNtaXNzaW9uLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZSBzYW1lIHBhY2tldHMgYXMKKworCisKKyAgICAgICAgICAgIGlwSWZTdGF0c091dFJlcXVlc3RzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dFJlcXVlc3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDT3V0UmVxdWVzdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRSZXF1ZXN0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRSZXF1ZXN0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFJlcXVlc3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMKKyAqIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMgaXMgc3ViaWQgMjMgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjMKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBkYXRhZ3JhbXMgZm9yIHdoaWNoIHRoaXMgZW50aXR5IHdhcyBub3QgdGhlaXIKKyAgICAgICAgICAgIGZpbmFsIElQIGRlc3RpbmF0aW9uIGFuZCBmb3Igd2hpY2ggaXQgd2FzIHN1Y2Nlc3NmdWwgaW4KKyAgICAgICAgICAgIGZpbmRpbmcgYSBwYXRoIHRvIHRoZWlyIGZpbmFsIGRlc3RpbmF0aW9uLiAgSW4gZW50aXRpZXMKKyAgICAgICAgICAgIHRoYXQgZG8gbm90IGFjdCBhcyBJUCByb3V0ZXJzLCB0aGlzIGNvdW50ZXIgd2lsbCBpbmNsdWRlCisgICAgICAgICAgICBvbmx5IHRob3NlIGRhdGFncmFtcyB0aGF0IHdlcmUgU291cmNlLVJvdXRlZCB2aWEgdGhpcworICAgICAgICAgICAgZW50aXR5LCBhbmQgdGhlIFNvdXJjZS1Sb3V0ZSBwcm9jZXNzaW5nIHdhcyBzdWNjZXNzZnVsLgorCisgICAgICAgICAgICBXaGVuIHRyYWNraW5nIGludGVyZmFjZSBzdGF0aXN0aWNzLCB0aGUgY291bnRlciBvZiB0aGUKKyAgICAgICAgICAgIG91dGdvaW5nIGludGVyZmFjZSBpcyBpbmNyZW1lbnRlZCBmb3IgYSBzdWNjZXNzZnVsbHkKKyAgICAgICAgICAgIGZvcndhcmRlZCBkYXRhZ3JhbS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURk9SV0RBVEFHUkFNU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0Rm9yd0RhdGFncmFtcy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtcworICogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zIGlzIHN1YmlkIDI0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjI0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgZGF0YWdyYW1zIGZvciB3aGljaCB0aGlzIGVudGl0eSB3YXMgbm90IHRoZWlyCisgICAgICAgICAgICBmaW5hbCBJUCBkZXN0aW5hdGlvbiBhbmQgZm9yIHdoaWNoIGl0IHdhcyBzdWNjZXNzZnVsIGluCisgICAgICAgICAgICBmaW5kaW5nIGEgcGF0aCB0byB0aGVpciBmaW5hbCBkZXN0aW5hdGlvbi4gIFRoaXMgb2JqZWN0CisgICAgICAgICAgICBjb3VudHMgdGhlIHNhbWUgcGFja2V0cyBhcyBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zLCBidXQKKyAgICAgICAgICAgIGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorCisKKworICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSBVNjQgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKS5sb3cgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZvcndEYXRhZ3JhbXMuaGlnaDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXREaXNjYXJkcworICogaXBJZlN0YXRzT3V0RGlzY2FyZHMgaXMgc3ViaWQgMjUgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjUKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBvdXRwdXQgSVAgZGF0YWdyYW1zIGZvciB3aGljaCBubyBwcm9ibGVtIHdhcworICAgICAgICAgICAgZW5jb3VudGVyZWQgdG8gcHJldmVudCB0aGVpciB0cmFuc21pc3Npb24gdG8gdGhlaXIKKyAgICAgICAgICAgIGRlc3RpbmF0aW9uLCBidXQgd2VyZSBkaXNjYXJkZWQgKGUuZy4sIGZvciBsYWNrIG9mCisgICAgICAgICAgICBidWZmZXIgc3BhY2UpLiAgTm90ZSB0aGF0IHRoaXMgY291bnRlciB3b3VsZCBpbmNsdWRlCisgICAgICAgICAgICBkYXRhZ3JhbXMgY291bnRlZCBpbiBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zIGlmIGFueSBzdWNoCisgICAgICAgICAgICBkYXRhZ3JhbXMgbWV0IHRoaXMgKGRpc2NyZXRpb25hcnkpIGRpc2NhcmQgY3JpdGVyaW9uLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dERpc2NhcmRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dERpc2NhcmRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXREaXNjYXJkc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dERpc2NhcmRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dERpc2NhcmRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXREaXNjYXJkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRESVNDQVJEU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RGlzY2FyZHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEZyYWdSZXFkcworICogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzIGlzIHN1YmlkIDI2IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjI2CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgd291bGQgcmVxdWlyZSBmcmFnbWVudGF0aW9uCisgICAgICAgICAgICBpbiBvcmRlciB0byBiZSB0cmFuc21pdHRlZC4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGEgc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdSZXFkcyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0RnJhZ1JlcWRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdSZXFkc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRGcmFnUmVxZHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dEZyYWdSZXFkc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ1JlcWRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRGcmFnT0tzCisgKiBpcElmU3RhdHNPdXRGcmFnT0tzIGlzIHN1YmlkIDI3IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjI3CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseQorICAgICAgICAgICAgZnJhZ21lbnRlZC4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisKKworCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGEgc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdPS3MgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNPdXRGcmFnT0tzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dEZyYWdPS3NfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c091dEZyYWdPS3NfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdPS3NfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0RnJhZ09LcyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzT3V0RnJhZ09Lc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGcmFnT0tzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ09Lc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzCisgKiBpcElmU3RhdHNPdXRGcmFnRmFpbHMgaXMgc3ViaWQgMjggb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBkYXRhZ3JhbXMgdGhhdCBoYXZlIGJlZW4gZGlzY2FyZGVkIGJlY2F1c2UKKyAgICAgICAgICAgIHRoZXkgbmVlZGVkIHRvIGJlIGZyYWdtZW50ZWQgYnV0IGNvdWxkIG5vdCBiZS4gIFRoaXMKKyAgICAgICAgICAgIGluY2x1ZGVzIElQdjQgcGFja2V0cyB0aGF0IGhhdmUgdGhlIERGIGJpdCBzZXQgYW5kIElQdjYKKyAgICAgICAgICAgIHBhY2tldHMgdGhhdCBhcmUgYmVpbmcgZm9yd2FyZGVkIGFuZCBleGNlZWQgdGhlIG91dGdvaW5nCisgICAgICAgICAgICBsaW5rIE1UVS4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGFuIHVuc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdGYWlscyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdGYWlsc19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRGcmFnRmFpbHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHRkFJTFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dEZyYWdGYWlsc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ0ZhaWxzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRGcmFnQ3JlYXRlcworICogaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXMgaXMgc3ViaWQgMjkgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMjkKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBvdXRwdXQgZGF0YWdyYW0gZnJhZ21lbnRzIHRoYXQgaGF2ZSBiZWVuCisgICAgICAgICAgICBnZW5lcmF0ZWQgYXMgYSByZXN1bHQgb2YgSVAgZnJhZ21lbnRhdGlvbi4KKworICAgICAgICAgICAgV2hlbiB0cmFja2luZyBpbnRlcmZhY2Ugc3RhdGlzdGljcywgdGhlIGNvdW50ZXIgb2YgdGhlCisgICAgICAgICAgICBvdXRnb2luZyBpbnRlcmZhY2UgaXMgaW5jcmVtZW50ZWQgZm9yIGEgc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBmcmFnbWVudGVkIGRhdGFncmFtLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dFRyYW5zbWl0cworICogaXBJZlN0YXRzT3V0VHJhbnNtaXRzIGlzIHN1YmlkIDMwIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMwCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgdGhpcyBlbnRpdHkgc3VwcGxpZWQKKyAgICAgICAgICAgIHRvIHRoZSBsb3dlciBsYXllcnMgZm9yIHRyYW5zbWlzc2lvbi4gIFRoaXMgaW5jbHVkZXMKKyAgICAgICAgICAgIGRhdGFncmFtcyBnZW5lcmF0ZWQgbG9jYWxseSBhbmQgdGhvc2UgZm9yd2FyZGVkIGJ5IHRoaXMKKyAgICAgICAgICAgIGVudGl0eS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRUcmFuc21pdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dFRyYW5zbWl0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dFRyYW5zbWl0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0VHJhbnNtaXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRUcmFuc21pdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0VHJhbnNtaXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUVFJBTlNNSVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dFRyYW5zbWl0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRUcmFuc21pdHMKKyAqIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzIGlzIHN1YmlkIDMxIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMxCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgSVAgZGF0YWdyYW1zIHRoYXQgdGhpcyBlbnRpdHkgc3VwcGxpZWQKKyAgICAgICAgICAgIHRvIHRoZSBsb3dlciBsYXllcnMgZm9yIHRyYW5zbWlzc2lvbi4gIFRoaXMgb2JqZWN0IGNvdW50cworICAgICAgICAgICAgdGhlIHNhbWUgZGF0YWdyYW1zIGFzIGlwSWZTdGF0c091dFRyYW5zbWl0cywgYnV0IGFsbG93cyBmb3IKKyAgICAgICAgICAgIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENPdXRUcmFuc21pdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENPdXRUcmFuc21pdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0VHJhbnNtaXRzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDT3V0VHJhbnNtaXRzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0T2N0ZXRzCisgKiBpcElmU3RhdHNPdXRPY3RldHMgaXMgc3ViaWQgMzIgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzIKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgaW4gSVAgZGF0YWdyYW1zIGRlbGl2ZXJlZCB0byB0aGUKKyAgICAgICAgICAgIGxvd2VyIGxheWVycyBmb3IgdHJhbnNtaXNzaW9uLiAgT2N0ZXRzIGZyb20gZGF0YWdyYW1zCisgICAgICAgICAgICBjb3VudGVkIGluIGlwSWZTdGF0c091dFRyYW5zbWl0cyBNVVNUIGJlIGNvdW50ZWQgaGVyZS4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE9jdGV0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRPY3RldHMKKyAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzIGlzIHN1YmlkIDMzIG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjMzCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIGluIElQIGRhdGFncmFtcyBkZWxpdmVyZWQgdG8gdGhlCisgICAgICAgICAgICBsb3dlciBsYXllcnMgZm9yIHRyYW5zbWlzc2lvbi4gIFRoaXMgb2JqZWN0cyBjb3VudHMgdGhlIHNhbWUKKyAgICAgICAgICAgIG9jdGV0cyBhcyBpcElmU3RhdHNPdXRPY3RldHMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENPdXRPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENPdXRPY3RldHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRPY3RldHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE9jdGV0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSW5NY2FzdFBrdHMKKyAqIGlwSWZTdGF0c0luTWNhc3RQa3RzIGlzIHN1YmlkIDM0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjM0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyByZWNlaXZlZC4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk1jYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNJbk1jYXN0UGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNJbk1jYXN0UGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5NQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0UGt0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0luTWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ0luTWNhc3RQa3RzCisgKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzIGlzIHN1YmlkIDM1IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjM1CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgbXVsdGljYXN0IGRhdGFncmFtcyByZWNlaXZlZC4gIFRoaXMgb2JqZWN0CisgICAgICAgICAgICBjb3VudHMgdGhlIHNhbWUgZGF0YWdyYW1zIGFzIGlwSWZTdGF0c0luTWNhc3RQa3RzLCBidXQKKyAgICAgICAgICAgIGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ0luTWNhc3RQa3RzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5NY2FzdFBrdHMubG93OworICAgICgqaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0UGt0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbk1jYXN0T2N0ZXRzCisgKiBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzIGlzIHN1YmlkIDM2IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjM2CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIElQIG11bHRpY2FzdAorCisKKworICAgICAgICAgICAgZGF0YWdyYW1zLiAgT2N0ZXRzIGZyb20gZGF0YWdyYW1zIGNvdW50ZWQgaW4KKyAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzIE1VU1QgYmUgY291bnRlZCBoZXJlLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luTWNhc3RPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luTWNhc3RPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSW5NY2FzdE9jdGV0cyBkYXRhLgorICAgICAqIGNvcHkgKCogaXBJZlN0YXRzSW5NY2FzdE9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpID0KKyAgICAgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RPY3RldHMubG93OworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ0luTWNhc3RPY3RldHMKKyAqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0cyBpcyBzdWJpZCAzNyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS4zNworICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyByZWNlaXZlZCBpbiBJUCBtdWx0aWNhc3QKKyAgICAgICAgICAgIGRhdGFncmFtcy4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBvY3RldHMgYXMKKyAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RPY3RldHMsIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzT3V0TWNhc3RQa3RzCisgKiBpcElmU3RhdHNPdXRNY2FzdFBrdHMgaXMgc3ViaWQgMzggb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzgKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBtdWx0aWNhc3QgZGF0YWdyYW1zIHRyYW5zbWl0dGVkLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE1jYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c091dE1jYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXBJZlN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNPdXRNY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dE1jYXN0UGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRNY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c091dE1jYXN0UGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c091dE1jYXN0UGt0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNIQ091dE1jYXN0UGt0cworICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHMgaXMgc3ViaWQgMzkgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuMzkKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBtdWx0aWNhc3QgZGF0YWdyYW1zIHRyYW5zbWl0dGVkLiAgVGhpcworICAgICAgICAgICAgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBkYXRhZ3JhbXMgYXMgaXBJZlN0YXRzT3V0TWNhc3RQa3RzLAorICAgICAgICAgICAgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorCisKKworICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dE1jYXN0UGt0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dE1jYXN0UGt0cyBkYXRhLgorICAgICAqIGdldCAoKiBpcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdFBrdHMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfdmFsX3B0cikuaGlnaCA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNPdXRNY2FzdE9jdGV0cworICogaXBJZlN0YXRzT3V0TWNhc3RPY3RldHMgaXMgc3ViaWQgNDAgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDAKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaW4gSVAgbXVsdGljYXN0CisgICAgICAgICAgICBkYXRhZ3JhbXMuICBPY3RldHMgZnJvbSBkYXRhZ3JhbXMgY291bnRlZCBpbgorICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RQa3RzIE1VU1QgYmUgY291bnRlZCBoZXJlLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dE1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMKKyAqIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHMgaXMgc3ViaWQgNDEgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaW4gSVAgbXVsdGljYXN0CisgICAgICAgICAgICBkYXRhZ3JhbXMuICBUaGlzIG9iamVjdCBjb3VudHMgdGhlIHNhbWUgb2N0ZXRzIGFzCisgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdE9jdGV0cywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSNjQgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVI2NCkKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSNjQuIFRoZSBDIHR5cGUgZGVjbCBpcyBVNjQgKFU2NCkKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzIGRhdGEuCisgICAgICogZ2V0ICgqIGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RPY3RldHMubG93OworICAgICgqaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKS5oaWdoID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRNY2FzdE9jdGV0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcElmU3RhdHNFbnRyeS5pcElmU3RhdHNJbkJjYXN0UGt0cworICogaXBJZlN0YXRzSW5CY2FzdFBrdHMgaXMgc3ViaWQgNDIgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDIKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlY2VpdmVkLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luQmNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXBJZlN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c0luQmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c0luQmNhc3RQa3RzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0luQmNhc3RQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luQmNhc3RQa3RzLmxvdzsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzSW5CY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c0hDSW5CY2FzdFBrdHMKKyAqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgaXMgc3ViaWQgNDMgb2YgaXBJZlN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zMS4zLjEuNDMKKyAqIERlc2NyaXB0aW9uOgorVGhlIG51bWJlciBvZiBJUCBicm9hZGNhc3QgZGF0YWdyYW1zIHJlY2VpdmVkLiAgVGhpcyBvYmplY3QKKyAgICAgICAgICAgIGNvdW50cyB0aGUgc2FtZSBkYXRhZ3JhbXMgYXMgaXBJZlN0YXRzSW5CY2FzdFBrdHMsIGJ1dAorICAgICAgICAgICAgYWxsb3dzIGZvciBsYXJnZXIgdmFsdWVzLgorCisgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKKyAgICAgICAgICAgIHJlLWluaXRpYWxpemF0aW9uIG9mIHRoZSBtYW5hZ2VtZW50IHN5c3RlbSwgYW5kIGF0IG90aGVyCisgICAgICAgICAgICB0aW1lcyBhcyBpbmRpY2F0ZWQgYnkgdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVI2NCAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUjY0KQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVI2NC4gVGhlIEMgdHlwZSBkZWNsIGlzIFU2NCAoVTY0KQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgVTY0IHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNIQ0luQmNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwSWZTdGF0c0hDSW5CY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENJbkJjYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikubG93ID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkJjYXN0UGt0cy5sb3c7CisgICAgKCppcElmU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luQmNhc3RQa3RzLmhpZ2g7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c091dEJjYXN0UGt0cworICogaXBJZlN0YXRzT3V0QmNhc3RQa3RzIGlzIHN1YmlkIDQ0IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQ0CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgYnJvYWRjYXN0IGRhdGFncmFtcyB0cmFuc21pdHRlZC4KKworICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CisgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgorICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcElmU3RhdHNPdXRCY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwSWZTdGF0c091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c091dEJjYXN0UGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXBJZlN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNPdXRCY2FzdFBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzT3V0QmNhc3RQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBpcElmU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcElmU3RhdHNPdXRCY2FzdFBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEJjYXN0UGt0cy5sb3c7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c091dEJjYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzSENPdXRCY2FzdFBrdHMKKyAqIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzIGlzIHN1YmlkIDQ1IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQ1CisgKiBEZXNjcmlwdGlvbjoKK1RoZSBudW1iZXIgb2YgSVAgYnJvYWRjYXN0IGRhdGFncmFtcyB0cmFuc21pdHRlZC4gIFRoaXMKKyAgICAgICAgICAgIG9iamVjdCBjb3VudHMgdGhlIHNhbWUgZGF0YWdyYW1zIGFzIGlwSWZTdGF0c091dEJjYXN0UGt0cywKKyAgICAgICAgICAgIGJ1dCBhbGxvd3MgZm9yIGxhcmdlciB2YWx1ZXMuCisKKyAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAorICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKKyAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUjY0IChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSNjQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUjY0LiBUaGUgQyB0eXBlIGRlY2wgaXMgVTY0IChVNjQpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIFU2NCB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqIGlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBnZXQgKCogaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRCQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKKyAgICAoKmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdzsKKyAgICAoKmlwSWZTdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEJjYXN0UGt0cy5oaWdoOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXBJZlN0YXRzRW50cnkuaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUKKyAqIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lIGlzIHN1YmlkIDQ2IG9mIGlwSWZTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMy4xLjQ2CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB2YWx1ZSBvZiBzeXNVcFRpbWUgb24gdGhlIG1vc3QgcmVjZW50IG9jY2FzaW9uIGF0IHdoaWNoCisKKworCisgICAgICAgICAgICBhbnkgb25lIG9yIG1vcmUgb2YgdGhpcyBlbnRyeSdzIGNvdW50ZXJzIHN1ZmZlcmVkIGEKKyAgICAgICAgICAgIGRpc2NvbnRpbnVpdHkuCisKKyAgICAgICAgICAgIElmIG5vIHN1Y2ggZGlzY29udGludWl0aWVzIGhhdmUgb2NjdXJyZWQgc2luY2UgdGhlIGxhc3QgcmUtCisgICAgICAgICAgICBpbml0aWFsaXphdGlvbiBvZiB0aGUgbG9jYWwgbWFuYWdlbWVudCBzdWJzeXN0ZW0sIHRoZW4gdGhpcworICAgICAgICAgICAgb2JqZWN0IGNvbnRhaW5zIGEgemVybyB2YWx1ZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIFRpbWVTdGFtcCAoYmFzZWQgb24gcGVybHR5cGUgVElDS1MpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVElNRVRJQ0tTLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5pcElmU3RhdHNEaXNjb250aW51aXR5VGltZTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwSWZTdGF0c0VudHJ5LmlwSWZTdGF0c1JlZnJlc2hSYXRlCisgKiBpcElmU3RhdHNSZWZyZXNoUmF0ZSBpcyBzdWJpZCA0NyBvZiBpcElmU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMuMS40NworICogRGVzY3JpcHRpb246CitUaGUgbWluaW11bSByZWFzb25hYmxlIHBvbGxpbmcgaW50ZXJ2YWwgZm9yIHRoaXMgZW50cnkuCisgICAgICAgICAgICBUaGlzIG9iamVjdCBwcm92aWRlcyBhbiBpbmRpY2F0aW9uIG9mIHRoZSBtaW5pbXVtIGFtb3VudCBvZgorICAgICAgICAgICAgdGltZSByZXF1aXJlZCB0byB1cGRhdGUgdGhlIGNvdW50ZXJzIGluIHRoaXMgZW50cnkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBVTlNJR05FRDMyIChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVmcmVzaFJhdGUgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcElmU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwSWZTdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcElmU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXBJZlN0YXRzVGFibGU6aXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBJZlN0YXRzUmVmcmVzaFJhdGUgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwSWZTdGF0c1JlZnJlc2hSYXRlX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURV0pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKworICAgICgqaXBJZlN0YXRzUmVmcmVzaFJhdGVfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5pcElmU3RhdHNSZWZyZXNoUmF0ZTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0ICovCisKKworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNjN2U0NwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9kYXRhX2dldC5oCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA4OCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICoKKyAqIEBmaWxlIGlwSWZTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKKyAqCisgKiBAYWRkdG9ncm91cCBnZXQKKyAqCisgKiBQcm90b3R5cGVzIGZvciBnZXQgZnVuY3Rpb25zCisgKgorICogQHsKKyAqLworI2lmbmRlZiBJUElGU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisjZGVmaW5lIElQSUZTVEFUU1RBQkxFX0RBVEFfR0VUX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIGZ1bmN0aW9uIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogR0VUIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgICAgICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICAgICAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzEuMywgbGVuZ3RoOiA5CisgICAgICovCisgICAgLyoKKyAgICAgKiBpbmRleGVzCisgICAgICovCisKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5SZWNlaXZlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luUmVjZWl2ZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5SZWNlaXZlc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5PY3RldHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbk9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5PY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luSGRyRXJyb3JzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5IZHJFcnJvcnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luTm9Sb3V0ZXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbkFkZHJFcnJvcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkFkZHJFcnJvcnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1JlYXNtUmVxZHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNSZWFzbU9Lc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1JlYXNtT0tzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNSZWFzbUZhaWxzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzUmVhc21GYWlsc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5EaXNjYXJkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luRGlzY2FyZHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkRlbGl2ZXJzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dFJlcXVlc3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXREaXNjYXJkc19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dERpc2NhcmRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdPS3NfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnRmFpbHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dFRyYW5zbWl0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dFRyYW5zbWl0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRUcmFuc21pdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNJbk1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ0luTWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5NY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVNjQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RQa3RzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE1jYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNPdXRNY2FzdE9jdGV0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNIQ091dE1jYXN0T2N0ZXRzX2dldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVTY0ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSW5CY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENJbkJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c091dEJjYXN0UGt0c19nZXQoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c091dEJjYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzSENPdXRCY2FzdFBrdHNfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFU2NCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV92YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzUmVmcmVzaFJhdGVfZ2V0KGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKTsKKworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoaXBJZlN0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YmxfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBpcElmU3RhdHNJUFZlcnNpb25fdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBJZlN0YXRzSWZJbmRleF92YWwpOworICAgIGludCAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9pbmRleGVzX3NldChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c0lQVmVyc2lvbl92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXBJZlN0YXRzSWZJbmRleF92YWwpOworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUElGU1RBVFNUQUJMRV9EQVRBX0dFVF9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM2NTdkNQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9lbnVtcy5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1lbnVtcy5tMmMgMTI1MjYgMjAwNS0wNy0xNSAyMjo0MToxNlogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQSUZTVEFUU1RBQkxFX0VOVU1TX0gKKyNkZWZpbmUgSVBJRlNUQVRTVEFCTEVfRU5VTVNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIE5PVEVTIG9uIGVudW1zCisgICAgICogPT09PT09PT09PT09PT0KKyAgICAgKgorICAgICAqIFZhbHVlIE1hcHBpbmcKKyAgICAgKiAtLS0tLS0tLS0tLS0tCisgICAgICogSWYgdGhlIHZhbHVlcyBmb3IgeW91ciBkYXRhIHR5cGUgZG9uJ3QgZXhhY3RseSBtYXRjaCB0aGUKKyAgICAgKiBwb3NzaWJsZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgbWliLCB5b3Ugc2hvdWxkIG1hcCB0aGVtCisgICAgICogYmVsb3cuIEZvciBleGFtcGxlLCBhIGJvb2xlYW4gZmxhZyAoMS8wKSBpcyB1c3VhbGx5IHJlcHJlc2VudGVkCisgICAgICogYXMgYSBUcnV0aFZhbHVlIGluIGEgTUlCLCB3aGljaCBtYXBzIHRvIHRoZSB2YWx1ZXMgKDEvMikuCisgICAgICoKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGVudW0gZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwSWZTdGF0c1RhYmxlCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCisgKiBpcElmU3RhdHNJUFZlcnNpb24gKEluZXRWZXJzaW9uIC8gQVNOX0lOVEVHRVIpCisgKgorICogc2luY2UgYSBUZXh0dWFsIENvbnZlbnRpb24gbWF5IGJlIHJlZmVyZW5jZWQgbW9yZSB0aGFuIG9uY2UgaW4gYQorICogTUlCLCBwcm90ZWN0IGFnYWludCByZWRlZmluaXRpb25zIG9mIHRoZSBlbnVtIHZhbHVlcy4KKyAqLworI2lmbmRlZiBJTkVUVkVSU0lPTl9FTlVNUworI2RlZmluZSBJTkVUVkVSU0lPTl9FTlVNUworCisjZGVmaW5lIElORVRWRVJTSU9OX1VOS05PV04gIDAKKyNkZWZpbmUgSU5FVFZFUlNJT05fSVBWNCAgMQorI2RlZmluZSBJTkVUVkVSU0lPTl9JUFY2ICAyCisKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSU5FVFZFUlNJT05fRU5VTVMgKi8KKworCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBJRlNUQVRTVEFCTEVfRU5VTVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MTVhODMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTAsMCArMSwxMzk1IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRISVMgRklMRSBET0VTIE5PVCBDT05UQUlOIEFOWSBVU0VSIEVESVRBQkxFIENPREUuICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRIRSBHRU5FUkFURUQgQ09ERSBJUyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiwgQU5EICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgIElTIFNVQkpFQ1QgVE8gQ0hBTkdFIFdJVEhPVVQgV0FSTklORyBJTiBGVVRVUkUgUkVMRUFTRVMuICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcElmU3RhdHNUYWJsZS5oIgorCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorCisjaW5jbHVkZSAiaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXBJZlN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwSWZTdGF0c1RhYmxlIGlzIHN1YmlkIDMgb2YgaXBUcmFmZmljU3RhdHMuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjMxLjMsIGxlbmd0aDogOQorICovCit0eXBlZGVmIHN0cnVjdCBpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4X3MgeworCisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CisKKyAgICBpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKnVzZXJfY3R4OworCisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyB0YmxfaW5mbzsKKworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyBhY2Nlc3NfbXVsdGlwbGV4ZXI7CisKKyAgICB1X2xvbmcgbGFzdF9jaGFuZ2VkOworCit9IGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHg7CisKK3N0YXRpYyBpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4IGlwSWZTdGF0c1RhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKKworCituZXRzbm1wX2NvbnRhaW5lciAqCitpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXI7Cit9CisKK2lwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCitpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKK30KKworaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2lwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbl9zZXQoaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqb2xkID0gaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IG5ld3JlZzsKKyAgICByZXR1cm4gb2xkOworfQorCitpbnQKK2lwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCit7CisgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jb250YWluZXIpOworfQorCisvKgorICogaXBJZlN0YXRzVGFibGVMYXN0Q2hhbmdlZCwgd2hpY2ggaXMgdGhlIGxhc3QgdGltZSB0aGF0IGEgcm93IGluCisgKiB0aGUgdGFibGUgd2FzIGNoYW5nZWQgb3IgdGhlIGxhc3QgdGltZSBhIHJvdyB3YXMgYWRkZWQvZGVsZXRlZCBmcm9tIHRoZQorICogdGFibGUuCisgKi8KK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KHVfbG9uZyB0YWJsZV9jaGFuZ2VkKQoreworICAgIERFQlVHTVNHVEwoKCJpcElmU3RhdHNUYWJsZTpsYXN0Q2hhbmdlZF9zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWQuIHdhcyAlbGQsIG5vdyAlbGRcbiIsCisgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfaWZfY3R4Lmxhc3RfY2hhbmdlZCwgdGFibGVfY2hhbmdlZCkpOworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5sYXN0X2NoYW5nZWQgPSB0YWJsZV9jaGFuZ2VkOworfQorCisvKgorICogbWZkIG11bHRpcGxleGVyIG1vZGVzCisgKi8KK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0Oworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXBJZlN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2lwSWZTdGF0c1RhYmxlX2dldF92YWx1ZXM7CisvKioKKyAqIEBpbnRlcm5hbAorICogSW5pdGlhbGl6ZSB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAorX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmlwSWZTdGF0c1RhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmaXBJZlN0YXRzVGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfaXBJZlN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBpcElmU3RhdHNUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwSWZTdGF0c0lQVmVyc2lvbiAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwSWZTdGF0c0lmSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIC8qCisgICAgICogRGVmaW5lIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFjY2Vzc2libGUgY29sdW1ucy4gIFRoaXMKKyAgICAgKiBvcHRpbWl6ZXMgcmV0cml2YWwuIAorICAgICAqLworICAgIHRibF9pbmZvLT5taW5fY29sdW1uID0gSVBJRlNUQVRTVEFCTEVfTUlOX0NPTDsKKyAgICB0YmxfaW5mby0+bWF4X2NvbHVtbiA9IElQSUZTVEFUU1RBQkxFX01BWF9DT0w7CisKKyAgICAvKgorICAgICAqIHNhdmUgdXNlcnMgY29udGV4dAorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCA9IHJlZ19wdHI7CisKKyAgICAvKgorICAgICAqIGNhbGwgZGF0YSBhY2Nlc3MgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIGlwSWZTdGF0c1RhYmxlX2luaXRfZGF0YShyZWdfcHRyKTsKKworICAgIC8qCisgICAgICogc2V0IHVwIHRoZSBjb250YWluZXIKKyAgICAgKi8KKyAgICBfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmlwSWZTdGF0c1RhYmxlX2lmX2N0eCk7CisgICAgaWYgKE5VTEwgPT0gaXBJZlN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiY291bGQgbm90IGluaXRpYWxpemUgY29udGFpbmVyIGZvciBpcElmU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFjY2Vzc19tdWx0aXBsZXhlcjogUkVRVUlSRUQgd3JhcHBlciBmb3IgZ2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXAgPSBfbWZkX2lwSWZTdGF0c1RhYmxlX29iamVjdF9sb29rdXA7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5nZXRfdmFsdWVzID0gX21mZF9pcElmU3RhdHNUYWJsZV9nZXRfdmFsdWVzOworCisgICAgLyoKKyAgICAgKiBubyB3cmFwcGVycyB5ZXQKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0ID0gX21mZF9pcElmU3RhdHNUYWJsZV9wcmVfcmVxdWVzdDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0OworCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogQ3JlYXRlIGEgcmVnaXN0cmF0aW9uLCBzYXZlIG91ciByZWcgZGF0YSwgcmVnaXN0ZXIgdGFibGUuCisgICAgICovCisgICAgREVCVUdNU0dUTCgoImlwSWZTdGF0c1RhYmxlOmluaXRfaXBJZlN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICJSZWdpc3RlcmluZyBpcElmU3RhdHNUYWJsZSBhcyBhIG1pYnMtZm9yLWR1bW1pZXMgdGFibGUuXG4iKSk7CisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXJfZ2V0KGFjY2Vzc19tdWx0aXBsZXhlcik7CisgICAgcmVnaW5mbyA9CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKCJpcElmU3RhdHNUYWJsZSIsIGhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfb2lkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoTlVMTCA9PSByZWdpbmZvKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBpcElmU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcmVnaW5mby0+bXlfcmVnX3ZvaWQgPSAmaXBJZlN0YXRzVGFibGVfaWZfY3R4OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNldCB1cCBiYWJ5IHN0ZXBzIGhhbmRsZXIsIGNyZWF0ZSBpdCBhbmQgaW5qZWN0IGl0CisgICAgICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0lSUkVWRVJTSUJMRV9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DTEVBTlVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0cykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFM7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5yb3dfY3JlYXRpb24pCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUk9XX0NSRUFURTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfQ09OU0lTVEVOQ1k7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCByb3dfbWVyZ2UgaGVscGVyIHdpdGggcHJlZml4IHJvb3RvaWRfbGVuICsgMiAoZW50cnkuY29sKQorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGJsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNhY2hlIGhlbHBlcgorICAgICAqLworICAgIGlmIChOVUxMICE9IGlwSWZTdGF0c1RhYmxlX2lmX2N0eC5jYWNoZSkgeworICAgICAgICBoYW5kbGVyID0gbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChpcElmU3RhdHNUYWJsZV9pZl9jdHguY2FjaGUpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGFibGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRibF9pbmZvKTsKKyAgICAKKyAgICAvKgorICAgICAqIHJlZ2lzdGVyIExhc3RDaGFuZ2VkCisgICAgICovCisgICAgeworICAgICAgICBvaWQgICAgIGxjX29pZFtdID0geyBJUElGU1RBVFNUQUJMRUxBU1RDSEFOR0VfT0lEIH07CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAoImlwSWZTdGF0c1RhYmxlTGFzdENoYW5nZWQiLCBOVUxMLAorICAgICAgICAgICAgICAgICBsY19vaWQsIE9JRF9MRU5HVEgobGNfb2lkKSwKKyAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbygodm9pZAorICAgICAgICAgICAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICAgICAgJmlwSWZTdGF0c1RhYmxlX2lmX2N0eC4KKyAgICAgICAgICAgICAgICAgICAgbGFzdF9jaGFuZ2VkLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YKKyAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyksCisgICAgICAgICAgICAgICAgICAgIEFTTl9USU1FVElDS1MsCisgICAgICAgICAgICAgICAgICAgIFdBVENIRVJfRklYRURfU0laRSkpOworICAgIH0KK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXBJZlN0YXRzVGFibGUKKyAqLwordm9pZAorX2lwSWZTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oJmlwSWZTdGF0c1RhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2lwSWZTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGlwSWZTdGF0c1RhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2lwSWZTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogaXBJZlN0YXRzSVBWZXJzaW9uKDEpL0luZXRWZXJzaW9uL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uOworICAgIC8qCisgICAgICogaXBJZlN0YXRzSWZJbmRleCgyKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcElmU3RhdHNJZkluZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9pcElmU3RhdHNJUFZlcnNpb24sIDB4MDAsIHNpemVvZih2YXJfaXBJZlN0YXRzSVBWZXJzaW9uKSk7CisgICAgdmFyX2lwSWZTdGF0c0lQVmVyc2lvbi50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgbWVtc2V0KCZ2YXJfaXBJZlN0YXRzSWZJbmRleCwgMHgwMCwgc2l6ZW9mKHZhcl9pcElmU3RhdHNJZkluZGV4KSk7CisgICAgdmFyX2lwSWZTdGF0c0lmSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2lwSWZTdGF0c0lQVmVyc2lvbi5uZXh0X3ZhcmlhYmxlID0gJnZhcl9pcElmU3RhdHNJZkluZGV4OworICAgIHZhcl9pcElmU3RhdHNJZkluZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9pbmRleF90b19vaWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogaXBJZlN0YXRzSVBWZXJzaW9uKDEpL0luZXRWZXJzaW9uL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9hL3cvRS9yL2QvaCAKKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl9pcElmU3RhdHNJUFZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5pcElmU3RhdHNJUFZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihtaWJfaWR4LT5pcElmU3RhdHNJUFZlcnNpb24pKTsKKworICAgIC8qCisgICAgICogaXBJZlN0YXRzSWZJbmRleCgyKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9IIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2lwSWZTdGF0c0lmSW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBtaWJfaWR4LT5pcElmU3RhdHNJZkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+aXBJZlN0YXRzSWZJbmRleCkpOworCisKKyAgICBlcnIgPSBidWlsZF9vaWRfbm9hbGxvYyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sICZvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnZhcl9pcElmU3RhdHNJUFZlcnNpb24pOworICAgIGlmIChlcnIpCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciAlZCBjb252ZXJ0aW5nIGluZGV4IHRvIG9pZFxuIiwgZXJyKTsKKworICAgIC8qCisgICAgICogcGFyc2luZyBtYXkgaGF2ZSBhbGxvY2F0ZWQgbWVtb3J5LiBmcmVlIGl0LgorICAgICAqLworICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMoJnZhcl9pcElmU3RhdHNJUFZlcnNpb24pOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBJZlN0YXRzVGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBpcElmU3RhdHNUYWJsZSBpbmRleGVzIGZyb20gYSBuZXRzbm1wX2luZGV4CisgKgorICogQHJldHZhbCBTTk1QX0VSUl9OT0VSUk9SICA6IG5vIGVycm9yCisgKiBAcmV0dmFsIFNOTVBfRVJSX0dFTkVSUiAgIDogZXJyb3IKKyAqLworaW50CitpcElmU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJUFZlcnNpb24oMSkvSW5ldFZlcnNpb24vQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL2Evdy9FL3IvZC9oCisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcElmU3RhdHNJUFZlcnNpb247CisgICAgLyoKKyAgICAgKiBpcElmU3RhdHNJZkluZGV4KDIpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwSWZTdGF0c0lmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbiwgMHgwMCwgc2l6ZW9mKHZhcl9pcElmU3RhdHNJUFZlcnNpb24pKTsKKyAgICB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uLnR5cGUgPSBBU05fSU5URUdFUjsKKyAgICBtZW1zZXQoJnZhcl9pcElmU3RhdHNJZkluZGV4LCAweDAwLCBzaXplb2YodmFyX2lwSWZTdGF0c0lmSW5kZXgpKTsKKyAgICB2YXJfaXBJZlN0YXRzSWZJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfaXBJZlN0YXRzSVBWZXJzaW9uLm5leHRfdmFyaWFibGUgPSAmdmFyX2lwSWZTdGF0c0lmSW5kZXg7CisgICAgdmFyX2lwSWZTdGF0c0lmSW5kZXgubmV4dF92YXJpYWJsZSA9IE5VTEw7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIHBhcnNlIHRoZSBvaWQgaW50byB0aGUgaW5kaXZpZHVhbCBpbmRleCBjb21wb25lbnRzCisgICAgICovCisgICAgZXJyID0gcGFyc2Vfb2lkX2luZGV4ZXMob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXJfaXBJZlN0YXRzSVBWZXJzaW9uKTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5pcElmU3RhdHNJUFZlcnNpb24gPQorICAgICAgICAgICAgKigodV9sb25nICopIHZhcl9pcElmU3RhdHNJUFZlcnNpb24udmFsLnN0cmluZyk7CisgICAgICAgIG1pYl9pZHgtPmlwSWZTdGF0c0lmSW5kZXggPQorICAgICAgICAgICAgKigobG9uZyAqKSB2YXJfaXBJZlN0YXRzSWZJbmRleC52YWwuc3RyaW5nKTsKKworCisgICAgfQorCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2lwSWZTdGF0c0lQVmVyc2lvbik7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcElmU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZCAqLworCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBAaW50ZXJuYWwKKyAqIGFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKi8KK2lwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgoraXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcElmU3RhdHNUYWJsZV9kYXRhICogZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4KTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTppcElmU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhICIKKyAgICAgICAgICAgICAgICAgImlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHguXG4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKE5VTEwgIT0gZGF0YSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHRyYWNrIGlmIHdlIGdvdCBkYXRhIGZyb20gdXNlcgorICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19EQVRBX0ZST01fVVNFUjsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEgPSBkYXRhOworICAgICAgICB9IGVsc2UgaWYgKE5VTEwgPT0KKyAgICAgICAgICAgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YSA9IGlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEoKSkpIHsKKyAgICAgICAgICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyoKKyAgICAgKiB1bmRvIGNvbnRleHQgd2lsbCBiZSBhbGxvY2F0ZWQgd2hlbiBuZWVkZWQgKGluICpfdW5kb19zZXR1cCkKKyAgICAgKi8KKworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyA9IHJvd3JlcV9jdHgtPm9pZF90bXA7CisKKyAgICByb3dyZXFfY3R4LT5pcElmU3RhdHNUYWJsZV9kYXRhX2xpc3QgPSBOVUxMOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBhbGxvY2F0ZWQgZGF0YSwgY2FsbCBpbml0IHJvdXRpbmUKKyAgICAgKi8KKyAgICBpZiAoIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkgeworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9CisgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQocm93cmVxX2N0eCwgdXNlcl9pbml0X2N0eCkpIHsKKyAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHggKi8KKworLyoKKyAqIEBpbnRlcm5hbAorICogcmVsZWFzZSByZXNvdXJjZXMgZm9yIGEgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICovCit2b2lkCitpcElmU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOmlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIGZvciBub24tdHJhbnNpZW50IGRhdGEsIGRvbid0IGZyZWUgZGF0YSB3ZSBnb3QgZnJvbSB0aGUgdXNlcgorICAgICAqLworICAgIGlmICgocm93cmVxX2N0eC0+ZGF0YSkgJiYKKyAgICAgICAgIShyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RBVEFfRlJPTV9VU0VSKSkKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKHJvd3JlcV9jdHgtPmRhdGEpOworCisgICAgLyoKKyAgICAgKiBmcmVlIGluZGV4IG9pZCBwb2ludGVyCisgICAgICovCisgICAgaWYgKHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyAhPSByb3dyZXFfY3R4LT5vaWRfdG1wKQorICAgICAgICBmcmVlKHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyk7CisKKyAgICBTTk1QX0ZSRUUocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoMSAhPSBuZXRzbm1wX3Jvd19tZXJnZV9zdGF0dXNfZmlyc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJza2lwcGluZyBhZGRpdGlvbmFsIHByZV9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHJjID0gaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3QoaXBJZlN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwSWZTdGF0c1RhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfcHJlX3JlcXVlc3RcbiIsIHJjKSk7CisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwSWZTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgaW50ICAgICAgICAgICAgIHJjLCBwYWNrZXRfcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBJZlN0YXRzVGFibGU6X21mZF9pcElmU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcmVsZWFzZSByb3cgY29udGV4dCwgaWYgZGVsZXRlZAorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4ICYmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RFTEVURUQpKQorICAgICAgICBpcElmU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIHdhaXQgZm9yIGxhc3QgY2FsbCBiZWZvcmUgY2FsbGluZyB1c2VyCisgICAgICovCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2xhc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJ3YWl0aW5nIGZvciBsYXN0IHBvc3RfcmVxdWVzdFxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisKKyAgICBwYWNrZXRfcmMgPSBuZXRzbm1wX2NoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcihhZ3RyZXFfaW5mby0+YXNwLCAwKTsKKyAgICByYyA9IGlwSWZTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdChpcElmU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2V0X3JjKTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwSWZTdGF0c1RhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXBJZlN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0XG4iLCByYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwSWZTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2lwSWZTdGF0c1RhYmxlX29iamVjdF9sb29rdXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZ2V0IG91ciBjb250ZXh0IGZyb20gbWZkCisgICAgICogaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqaWZfY3R4ID0KKyAgICAgKiAgICAgICAgICAgICAoaXBJZlN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqKXJlZ2luZm8tPm15X3JlZ192b2lkOworICAgICAqLworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICByYyA9IFNOTVBfRVJSX05PQ1JFQVRJT047CisgICAgfQorCisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgcmMpOworICAgIGVsc2UKKyAgICAgICAgaXBJZlN0YXRzVGFibGVfcm93X3ByZXAocm93cmVxX2N0eCk7CisKKyAgICByZXR1cm4gU05NUF9WQUxJREFURV9FUlIocmMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwSWZTdGF0c1RhYmxlX29iamVjdF9sb29rdXAgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogR0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSB0aGUgdmFsdWUgZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2lwSWZTdGF0c1RhYmxlX2dldF9jb2x1bW4oaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsIGludCBjb2x1bW4pCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsCisgICAgICAgICAgICAgICAgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJblJlY2VpdmVzKDMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOUkVDRUlWRVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJblJlY2VpdmVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJblJlY2VpdmVzKDQpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOUkVDRUlWRVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5SZWNlaXZlc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5PY3RldHMoNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5PQ1RFVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbk9jdGV0c19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ0luT2N0ZXRzKDYpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ0lOT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luSGRyRXJyb3JzKDcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOSERSRVJST1JTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5IZHJFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5Ob1JvdXRlcyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTk5PUk9VVEVTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5Ob1JvdXRlc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luQWRkckVycm9ycyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTkFERFJFUlJPUlM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkFkZHJFcnJvcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luVW5rbm93blByb3RvcygxMCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5VTktOT1dOUFJPVE9TOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5Vbmtub3duUHJvdG9zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJblRydW5jYXRlZFBrdHMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOVFJVTkNBVEVEUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c0luVHJ1bmNhdGVkUGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5Gb3J3RGF0YWdyYW1zKDEyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTkZPUldEQVRBR1JBTVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zKDEzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkZPUldEQVRBR1JBTVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c1JlYXNtUmVxZHMoMTQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU1JFQVNNUkVRRFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNSZWFzbVJlcWRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzUmVhc21PS3MoMTUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU1JFQVNNT0tTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzUmVhc21PS3NfZ2V0KHJvd3JlcV9jdHgsICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzUmVhc21GYWlscygxNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01GQUlMUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c1JlYXNtRmFpbHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbkRpc2NhcmRzKDE3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTkRJU0NBUkRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5EaXNjYXJkc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0luRGVsaXZlcnMoMTgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOREVMSVZFUlM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkRlbGl2ZXJzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJbkRlbGl2ZXJzKDE5KS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkRFTElWRVJTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ0luRGVsaXZlcnNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dFJlcXVlc3RzKDIwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRSRVFVRVNUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dFJlcXVlc3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDT3V0UmVxdWVzdHMoMjEpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVFJFUVVFU1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dFJlcXVlc3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0Rm9yd0RhdGFncmFtcygyMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VURk9SV0RBVEFHUkFNUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dEZvcndEYXRhZ3JhbXNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dEZvcndEYXRhZ3JhbXMoMjQpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVEZPUldEQVRBR1JBTVM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0Rm9yd0RhdGFncmFtc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RGlzY2FyZHMoMjUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVERJU0NBUkRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0RGlzY2FyZHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RnJhZ1JlcWRzKDI2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHUkVRRFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRGcmFnUmVxZHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dEZyYWdPS3MoMjcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdPS1M6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRGcmFnT0tzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0RnJhZ0ZhaWxzKDI4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHRkFJTFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNPdXRGcmFnRmFpbHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dEZyYWdDcmVhdGVzKDI5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNPVVRGUkFHQ1JFQVRFUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dEZyYWdDcmVhdGVzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dFRyYW5zbWl0cygzMCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VUVFJBTlNNSVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0VHJhbnNtaXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dFRyYW5zbWl0cygzMSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUVFJBTlNNSVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dFRyYW5zbWl0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRPY3RldHMoMzIpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVE9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENPdXRPY3RldHMoMzMpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRPY3RldHNfZ2V0KHJvd3JlcV9jdHgsIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSW5NY2FzdFBrdHMoMzQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0lOTUNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5NY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENJbk1jYXN0UGt0cygzNSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5NQ0FTVFBLVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDSW5NY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbk1jYXN0T2N0ZXRzKDM2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNJTk1DQVNUT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSW5NY2FzdE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c0hDSW5NY2FzdE9jdGV0cygzNykvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDSU5NQ0FTVE9DVEVUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbk1jYXN0T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNPdXRNY2FzdFBrdHMoMzgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVE1DQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGlwSWZTdGF0c091dE1jYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENPdXRNY2FzdFBrdHMoMzkpL0NPVU5URVI2NC9BU05fQ09VTlRFUjY0L1U2NChVNjQpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUElGU1RBVFNIQ09VVE1DQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENPdXRNY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChVNjQgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzT3V0TWNhc3RPY3RldHMoNDApL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU09VVE1DQVNUT0NURVRTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0TWNhc3RPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXBJZlN0YXRzSENPdXRNY2FzdE9jdGV0cyg0MSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUTUNBU1RPQ1RFVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihVNjQpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjY0OworICAgICAgICByYyA9IGlwSWZTdGF0c0hDT3V0TWNhc3RPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNJbkJjYXN0UGt0cyg0MikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSU5CQ0FTVFBLVFM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNJbkJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzKDQzKS9DT1VOVEVSNjQvQVNOX0NPVU5URVI2NC9VNjQoVTY0KS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTSENJTkJDQVNUUEtUUzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKFU2NCk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSNjQ7CisgICAgICAgIHJjID0gaXBJZlN0YXRzSENJbkJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVTY0ICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwSWZTdGF0c091dEJjYXN0UGt0cyg0NCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBJRlNUQVRTT1VUQkNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gaXBJZlN0YXRzT3V0QmNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNIQ091dEJjYXN0UGt0cyg0NSkvQ09VTlRFUjY0L0FTTl9DT1VOVEVSNjQvVTY0KFU2NCkvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0hDT1VUQkNBU1RQS1RTOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YoVTY0KTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNIQ091dEJjYXN0UGt0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFU2NCAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZSg0NikvVGltZVN0YW1wL0FTTl9USU1FVElDS1MvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU0RJU0NPTlRJTlVJVFlUSU1FOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1RJTUVUSUNLUzsKKyAgICAgICAgcmMgPSBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZV9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcElmU3RhdHNSZWZyZXNoUmF0ZSg0NykvVU5TSUdORUQzMi9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQSUZTVEFUU1JFRlJFU0hSQVRFOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwSWZTdGF0c1JlZnJlc2hSYXRlX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKElQSUZTVEFUU1RBQkxFX01JTl9DT0wgPD0gY29sdW1uCisgICAgICAgICAgICAmJiBjb2x1bW4gPD0gSVBJRlNUQVRTVEFCTEVfTUFYX0NPTCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9tZmRfaXBJZlN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJhc3N1bWUgY29sdW1uICVkIGlzIHJlc2VydmVkXG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJjID0gTUZEX1NLSVA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uXG4iLAorICAgICAgICAgICAgICAgICAgICAgY29sdW1uKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uICovCisKK2ludAorX21mZF9pcElmU3RhdHNUYWJsZV9nZXRfdmFsdWVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICB1X2NoYXIgICAgICAgICAqb2xkX3N0cmluZzsKKyAgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spICh2b2lkICopOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfbWZkX2lwSWZTdGF0c1RhYmxlX2dldF92YWx1ZXMiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogc2F2ZSBvbGQgcG9pbnRlciwgc28gd2UgY2FuIGZyZWUgaXQgaWYgcmVwbGFjZWQKKyAgICAgICAgICovCisgICAgICAgIG9sZF9zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nOworICAgICAgICBkYXRhRnJlZUhvb2sgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5kYXRhRnJlZUhvb2s7CisgICAgICAgIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWY7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfSBlbHNlIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYgPT0KKyAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiAhPQorICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpKQorICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPQorICAgICAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBjb2x1bW4gZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByYyA9IF9pcElmU3RhdHNUYWJsZV9nZXRfY29sdW1uKHJvd3JlcV9jdHgsIHJlcXVlc3RzLT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGlmIChNRkRfU0tJUCA9PSByYykgeworICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJOVUxMIHZhcmJpbmQgZGF0YSBwb2ludGVyIVxuIik7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgd2Fzbid0IHVzZWQgcHJldmlvdXNseSBmb3IgdGhlIG9sZCBkYXRhIChpLmUuIGl0CisgICAgICAgICAqIHdhcyBhbGxjb2F0ZWQgbWVtb3J5KSAgYW5kIHRoZSBnZXQgcm91dGluZSByZXBsYWNlZCB0aGUgcG9pbnRlciwKKyAgICAgICAgICogd2UgbmVlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG9sZF9zdHJpbmcgJiYgKG9sZF9zdHJpbmcgIT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSAmJgorICAgICAgICAgICAgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgIT0gb2xkX3N0cmluZykpIHsKKyAgICAgICAgICAgIGlmIChkYXRhRnJlZUhvb2spCisgICAgICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spIChvbGRfc3RyaW5nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmVlKG9sZF9zdHJpbmcpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9pcElmU3RhdHNUYWJsZV9nZXRfdmFsdWVzICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgKiBTRVQgUFJPQ0VTU0lORyBOT1QgQVBQTElDQUJMRSAocGVyIE1JQiBvciB1c2VyIHNldHRpbmcpCisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIERBVEEgQUNDRVNTCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgICAgIF9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcik7CisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyBpbnQKK19jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBmb3IgaXBJZlN0YXRzVGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgcmV0dXJuIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hZ2ljKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2xvYWQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY2FjaGVfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBpbiBpcElmU3RhdHNUYWJsZV9jYWNoZV9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbnRhaW5lciA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjYWNoZS0+bWFnaWM7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIHZvaWQKK19jb250YWluZXJfaXRlbV9mcmVlKGlwSWZTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LCB2b2lkICpjb250ZXh0KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY29udGFpbmVyX2l0ZW1fZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkKKyAgICAgICAgcmV0dXJuOworCisgICAgaXBJZlN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2l0ZW1fZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfY29udGFpbmVyX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGluIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNvZGUKKyAgICAgKi8KKyAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShjb250YWluZXIpOworCisgICAgLyoKKyAgICAgKiBmcmVlIGFsbCBpdGVtcy4gaW5lZmZpY2llbnQsIGJ1dCBlYXN5LgorICAgICAqLworICAgIENPTlRBSU5FUl9DTEVBUihjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfY29udGFpbmVyX2l0ZW1fZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfZnJlZSAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogaW5pdGlhbGl6ZSB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChpcElmU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcElmU3RhdHNUYWJsZTpfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogY2FjaGUgaW5pdAorICAgICAqLworICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcElmU3RhdHNUYWJsZV9vaWRfc2l6ZSk7CisKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgaXBJZlN0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWZfY3R4LT5jYWNoZS0+ZmxhZ3MgPSBORVRTTk1QX0NBQ0hFX0RPTlRfSU5WQUxJREFURV9PTl9TRVQ7CisKKyAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCgmaWZfY3R4LT5jb250YWluZXIsIGlmX2N0eC0+Y2FjaGUpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKQorICAgICAgICBpZl9jdHgtPmNvbnRhaW5lciA9CisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJpcElmU3RhdHNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGluICIKKyAgICAgICAgICAgICAgICAgImlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCisgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogc2h1dGRvd24gdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKGlwSWZTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwSWZTdGF0c1RhYmxlOl9pcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24iLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpcElmU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaWZfY3R4LT5jb250YWluZXIpOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGlmX2N0eC0+Y29udGFpbmVyKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXBJZlN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKworaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eCAqCitpcElmU3RhdHNUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoaXBJZlN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKK3sKKyAgICBpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9PSURfTEVOXTsKKyAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2lkeDsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICAvKgorICAgICAqIHNldCB1cCBzdG9yYWdlIGZvciBPSUQKKyAgICAgKi8KKyAgICBvaWRfaWR4Lm9pZHMgPSBvaWRfdG1wOworICAgIG9pZF9pZHgubGVuID0gc2l6ZW9mKG9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQKKyAgICAgKi8KKyAgICByYyA9IGlwSWZTdGF0c1RhYmxlX2luZGV4X3RvX29pZCgmb2lkX2lkeCwgbWliX2lkeCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJvd3JlcV9jdHggPSBDT05UQUlORVJfRklORChpcElmU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyLCAmb2lkX2lkeCk7CisKKyAgICByZXR1cm4gcm93cmVxX2N0eDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDNkZTg0Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwSWZTdGF0c1RhYmxlL2lwSWZTdGF0c1RhYmxlX2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKy8qKiBAaW5ncm91cCBpbnRlcmZhY2U6IFJvdXRpbmVzIHRvIGludGVyZmFjZSB0byBOZXQtU05NUAorICoKKyAqIFx3YXJuaW5nIFRoaXMgY29kZSBzaG91bGQgbm90IGJlIG1vZGlmaWVkLCBjYWxsZWQgZGlyZWN0bHksCisgKiAgICAgICAgICBvciB1c2VkIHRvIGludGVycHJldCBmdW5jdGlvbmFsaXR5LiBJdCBpcyBzdWJqZWN0IHRvCisgKiAgICAgICAgICBjaGFuZ2UgYXQgYW55IHRpbWUuCisgKiAKKyAqIEB7CisgKi8KKy8qCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSElTIEZJTEUgRE9FUyBOT1QgQ09OVEFJTiBBTlkgVVNFUiBFRElUQUJMRSBDT0RFLiAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICBUSEUgR0VORVJBVEVEIENPREUgSVMgSU5URVJOQUwgSU1QTEVNRU5UQVRJT04sIEFORCAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICBJUyBTVUJKRUNUIFRPIENIQU5HRSBXSVRIT1VUIFdBUk5JTkcgSU4gRlVUVVJFIFJFTEVBU0VTLiAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqLworI2lmbmRlZiBJUElGU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSAorI2RlZmluZSBJUElGU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworI2luY2x1ZGUgImlwSWZTdGF0c1RhYmxlLmgiCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqIFBVQkxJQyBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gcm91dGluZSAKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwSWZTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlKGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCwgdV9sb25nIGZsYWdzKTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgX2lwSWZTdGF0c1RhYmxlX3NodXRkb3duX2ludGVyZmFjZShpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY3R4KTsKKworICAgIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGlwSWZTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXBJZlN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX3NldChpcElmU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdyZWcpOworCisgICAgbmV0c25tcF9jb250YWluZXIgKmlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCk7CisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpOworCisgICAgaXBJZlN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAqaXBJZlN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcElmU3RhdHNUYWJsZV9kYXRhICosIHZvaWQgKik7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwSWZTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChpcElmU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKKyAgICBpbnQgICAgICAgICAgICAgaXBJZlN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX21pYl9pbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworCisgICAgLyoKKyAgICAgKiBhY2Nlc3MgdG8gY2VydGFpbiBpbnRlcm5hbHMuIHVzZSB3aXRoIGNhdXRpb24hCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnZjKTsKKworICAgIC8qCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGlwSWZTdGF0c1RhYmxlX2xhc3RDaGFuZ2Vfc2V0KHVfbG9uZyB1cHRpbWUpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQSUZTVEFUU1RBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcElmU3RhdHNUYWJsZS9pcElmU3RhdHNUYWJsZV9vaWRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NjA3YTkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBJZlN0YXRzVGFibGUvaXBJZlN0YXRzVGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtb2lkcy5tMmMgMTI4NTUgMjAwNS0wOS0yNyAxNTo1NjowOFogcnN0b3J5ICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIElQSUZTVEFUU1RBQkxFX09JRFNfSAorI2RlZmluZSBJUElGU1RBVFNUQUJMRV9PSURTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGlwSWZTdGF0c1RhYmxlIAorICAgICAqLworI2RlZmluZSBJUElGU1RBVFNUQUJMRV9PSUQgICAgICAgICAgICAgIDEsMyw2LDEsMiwxLDQsMzEsMworI2RlZmluZSBJUElGU1RBVFNUQUJMRUxBU1RDSEFOR0VfT0lEICAgIDEsMyw2LDEsMiwxLDQsMzEsMgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJUFZFUlNJT04gICAgICAgICAxCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lGSU5ERVggICAgICAgICAyCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOUkVDRUlWRVMgICAgICAgICAzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDSU5SRUNFSVZFUyAgICAgICAgIDQKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSU5PQ1RFVFMgICAgICAgICA1CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDSU5PQ1RFVFMgICAgICAgICA2CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOSERSRVJST1JTICAgICAgICAgNworCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJTk5PUk9VVEVTICAgICAgICAgOAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJTkFERFJFUlJPUlMgICAgICAgICA5CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOVU5LTk9XTlBST1RPUyAgICAgICAgIDEwCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOVFJVTkNBVEVEUEtUUyAgICAgICAgIDExCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lORk9SV0RBVEFHUkFNUyAgICAgICAgIDEyCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDSU5GT1JXREFUQUdSQU1TICAgICAgICAgMTMKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01SRVFEUyAgICAgICAgIDE0CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU1JFQVNNT0tTICAgICAgICAgMTUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTUkVBU01GQUlMUyAgICAgICAgIDE2CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lORElTQ0FSRFMgICAgICAgICAxNworCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNJTkRFTElWRVJTICAgICAgICAgMTgKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTkRFTElWRVJTICAgICAgICAgMTkKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VUUkVRVUVTVFMgICAgICAgICAyMAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVFJFUVVFU1RTICAgICAgICAgMjEKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURk9SV0RBVEFHUkFNUyAgICAgICAgIDIzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDT1VURk9SV0RBVEFHUkFNUyAgICAgICAgIDI0CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVERJU0NBUkRTICAgICAgICAgMjUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURlJBR1JFUURTICAgICAgICAgMjYKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VURlJBR09LUyAgICAgICAgIDI3CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdGQUlMUyAgICAgICAgIDI4CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVEZSQUdDUkVBVEVTICAgICAgICAgMjkKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTT1VUVFJBTlNNSVRTICAgICAgICAgMzAKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRUUkFOU01JVFMgICAgICAgICAzMQorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRPQ1RFVFMgICAgICAgICAzMgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVE9DVEVUUyAgICAgICAgIDMzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOTUNBU1RQS1RTICAgICAgICAgMzQKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTk1DQVNUUEtUUyAgICAgICAgIDM1CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOTUNBU1RPQ1RFVFMgICAgICAgICAzNgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ0lOTUNBU1RPQ1RFVFMgICAgICAgICAzNworCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNPVVRNQ0FTVFBLVFMgICAgICAgICAzOAorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNIQ09VVE1DQVNUUEtUUyAgICAgICAgIDM5CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVE1DQVNUT0NURVRTICAgICAgICAgNDAKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENPVVRNQ0FTVE9DVEVUUyAgICAgICAgIDQxCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0lOQkNBU1RQS1RTICAgICAgICAgNDIKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTSENJTkJDQVNUUEtUUyAgICAgICAgIDQzCisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU09VVEJDQVNUUEtUUyAgICAgICAgIDQ0CisKKyNkZWZpbmUgQ09MVU1OX0lQSUZTVEFUU0hDT1VUQkNBU1RQS1RTICAgICAgICAgNDUKKworI2RlZmluZSBDT0xVTU5fSVBJRlNUQVRTRElTQ09OVElOVUlUWVRJTUUgICAgICAgICA0NgorCisjZGVmaW5lIENPTFVNTl9JUElGU1RBVFNSRUZSRVNIUkFURSAgICAgICAgIDQ3CisKKworI2RlZmluZSBJUElGU1RBVFNUQUJMRV9NSU5fQ09MICAgQ09MVU1OX0lQSUZTVEFUU0lOUkVDRUlWRVMKKyNkZWZpbmUgSVBJRlNUQVRTVEFCTEVfTUFYX0NPTCAgIENPTFVNTl9JUElGU1RBVFNSRUZSRVNIUkFURQorCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSVBJRlNUQVRTVEFCTEVfT0lEU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuYwppbmRleCBjODY1NjA3Li4xMDU4N2UyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImlwU3lzdGVtU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9vaWRbXSA9IHsgSVBTWVNURU1TVEFUU1RBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZFtdID0geyBJUFNZU1RFTVNUQVRTVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaXBTeXN0ZW1TdGF0c1RhYmxlX29pZCk7CiAKIGlwU3lzdGVtU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gaXBTeXN0ZW1TdGF0c1RhYmxlX3VzZXJfY29udGV4dDsKQEAgLTE2Myw2ICsxNjMsOCBAQAogICAgIC8qCiAgICAgICogVE9ETzoyMTE6bzogfC0+IFBlcmZvcm0gZXh0cmEgaXBTeXN0ZW1TdGF0c1RhYmxlIHJvd3JlcSBjbGVhbnVwLgogICAgICAqLworICAgIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUocm93cmVxX2N0eC0+ZGF0YSk7CisgICAgcm93cmVxX2N0eC0+ZGF0YSA9IE5VTEw7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KIAogLyoqCkBAIC0zOTAsMTEgKzM5MiwxNCBAQAogICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKIAogICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7Ci0KKyAgICAKICAgICAvKgogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzSW5SZWNlaXZlcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luUmVjZWl2ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5SRUNFSVZFU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luUmVjZWl2ZXNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luUmVjZWl2ZXMubG93OwogCkBAIC00NTYsNiArNDYxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJblJlY2VpdmVzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5SZWNlaXZlc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOUkVDRUlWRVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJblJlY2VpdmVzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luUmVjZWl2ZXNfdmFsX3B0cikuaGlnaCA9CkBAIC01MjAsNiArNTI4LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luT2N0ZXRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5PY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbk9jdGV0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5PY3RldHMubG93OwogCkBAIC01NzcsNiArNTg4LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJbk9jdGV0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbk9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENJbk9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbk9jdGV0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luT2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luT2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtNjQ0LDYgKzY1OCw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbkhkckVycm9ycyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0luSGRyRXJyb3JzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5IZHJFcnJvcnM7CiAKQEAgLTcwNSw4ICs3MjIsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTk9ST1VURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbk5vUm91dGVzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5Ob1JvdXRlczsKKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk5vUm91dGVzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c0luTm9Sb3V0ZXNfZ2V0ICovCkBAIC03NzIsNiArNzkyLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luQWRkckVycm9ycyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luQWRkckVycm9yc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5BRERSRVJST1JTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5BZGRyRXJyb3JzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5BZGRyRXJyb3JzOwogCkBAIC04NDMsNiArODY2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luVW5rbm93blByb3RvcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luVW5rbm93blByb3Rvc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5Vbmtub3duUHJvdG9zX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5Vbmtub3duUHJvdG9zOwogCkBAIC05MDUsNiArOTMxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luVHJ1bmNhdGVkUGt0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luVHJ1bmNhdGVkUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSU5UUlVOQ0FURURQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5UcnVuY2F0ZWRQa3RzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSW5UcnVuY2F0ZWRQa3RzOwogCkBAIC05NzYsNiArMTAwNSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbkZvcndEYXRhZ3JhbXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93OwogCkBAIC0xMDM2LDYgKzEwNjgsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luRm9yd0RhdGFncmFtcyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5GT1JXREFUQUdSQU1TXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkZvcndEYXRhZ3JhbXNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbkZvcndEYXRhZ3JhbXMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5Gb3J3RGF0YWdyYW1zX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMTEwNSw2ICsxMTQwLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c1JlYXNtUmVxZHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNSZWFzbVJlcWRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTVJFUURTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzUmVhc21SZXFkc192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLlJlYXNtUmVxZHM7CiAKQEAgLTExNzUsNiArMTIxMyw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNSZWFzbU9LcyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c1JlYXNtT0tzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c1JlYXNtT0tzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuUmVhc21PS3M7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CkBAIC0xMjQ1LDYgKzEyODYsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzUmVhc21GYWlscyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c1JlYXNtRmFpbHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNSZWFzbUZhaWxzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuUmVhc21GYWlsczsKIApAQCAtMTMwOSw2ICsxMzUzLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9JTkRJU0NBUkRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5EaXNjYXJkc192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkluRGlzY2FyZHM7CiAKQEAgLTEzNzYsNiArMTQyMyw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbkRlbGl2ZXJzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5EZWxpdmVyc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5EZWxpdmVyc192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5EZWxpdmVycy5sb3c7CiAKQEAgLTE0MzMsNiArMTQ4Myw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBTeXN0ZW1TdGF0c0hDSW5EZWxpdmVycyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ0luRGVsaXZlcnNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENJTkRFTElWRVJTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5EZWxpdmVycy5sb3c7CiAgICAgKCppcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMTQ5OCw2ICsxNTUxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dFJlcXVlc3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0UmVxdWVzdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRSZXF1ZXN0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93OwogCkBAIC0xNTU1LDYgKzE2MTEsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dFJlcXVlc3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0UmVxdWVzdHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHNfdmFsX3B0cikuaGlnaCA9CkBAIC0xNjE5LDggKzE2NzgsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0Tm9Sb3V0ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTk9ST1VURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXROb1JvdXRlc192YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLk91dE5vUm91dGVzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE5vUm91dGVzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dE5vUm91dGVzX2dldCAqLwpAQCAtMTY5NCw2ICsxNzU2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRGb3J3RGF0YWdyYW1zX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdzsKIApAQCAtMTc1NCw2ICsxODE5LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRGb3J3RGF0YWdyYW1zIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0Rm9yd0RhdGFncmFtc192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENPdXRGb3J3RGF0YWdyYW1zLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dEZvcndEYXRhZ3JhbXNfdmFsX3B0cikuaGlnaCA9CkBAIC0xODIxLDggKzE4ODksMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0RGlzY2FyZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXREaXNjYXJkc192YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLk91dERpc2NhcmRzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dERpc2NhcmRzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dERpc2NhcmRzX2dldCAqLwpAQCAtMTg5MCw4ICsxOTYxLDExIEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR1JFUURTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0RnJhZ1JlcWRzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuT3V0RnJhZ1JlcWRzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdSZXFkcy5sb3c7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNPdXRGcmFnUmVxZHNfZ2V0ICovCkBAIC0xOTU2LDkgKzIwMzAsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZyYWdPS3MgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGcmFnT0tzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KLSAgICBzbm1wX2xvZyhMT0dfRVJSLAotICAgICAgICAgICAgICJpcFN5c3RlbVN0YXRzVGFibGUgbm9kZSBpcFN5c3RlbVN0YXRzT3V0RnJhZ09LcyBub3QgaW1wbGVtZW50ZWQ6IHNraXBwaW5nXG4iKTsKLSAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHT0tTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCisgICAgKCppcFN5c3RlbVN0YXRzT3V0RnJhZ09Lc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0RnJhZ09Lcy5sb3c7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNPdXRGcmFnT0tzX2dldCAqLwpAQCAtMjAyNiw4ICsyMTAyLDExIEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0RnJhZ0ZhaWxzX3ZhbF9wdHIpID0KLSAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuT3V0RnJhZ0ZhaWxzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdGYWlscy5sb3c7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwU3lzdGVtU3RhdHNPdXRGcmFnRmFpbHNfZ2V0ICovCkBAIC0yMDkyLDggKzIxNzEsMTEgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dEZyYWdDcmVhdGVzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0RnJhZ0NyZWF0ZXNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0NSRUFURVNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRGcmFnQ3JlYXRlc192YWxfcHRyKSA9Ci0gICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLk91dEZyYWdDcmVhdGVzOworICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dEZyYWdDcmVhdGVzLmxvdzsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c091dEZyYWdDcmVhdGVzX2dldCAqLwpAQCAtMjE1NSw2ICsyMjM3LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c091dFRyYW5zbWl0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dFRyYW5zbWl0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNPdXRUcmFuc21pdHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3c7CiAKQEAgLTIyMTIsNiArMjI5Nyw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IGNvcHkgaXBTeXN0ZW1TdGF0c0hDT3V0VHJhbnNtaXRzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0ciApLmhpZ2ggZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRUUkFOU01JVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dFRyYW5zbWl0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dFRyYW5zbWl0cy5sb3c7CiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRUcmFuc21pdHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yMjc2LDYgKzIzNjQsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dE9jdGV0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdzsKIApAQCAtMjMzMyw2ICsyNDI0LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRPY3RldHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE9DVEVUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0T2N0ZXRzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0T2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dE9jdGV0c192YWxfcHRyKS5oaWdoID0KQEAgLTIzOTUsNiArMjQ4OSw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNJbk1jYXN0UGt0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0luTWNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSW5NY2FzdFBrdHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdzsKIApAQCAtMjQ1MSw2ICsyNTQ4LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RQS1RTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENJbk1jYXN0UGt0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ0luTWNhc3RQa3RzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luTWNhc3RQa3RzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMjUxNCw2ICsyNjE0LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luTWNhc3RPY3RldHMgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbk1jYXN0T2N0ZXRzX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdzsKIApAQCAtMjU3Miw2ICsyNjc1LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0ciApLmxvdyBhbmQgKCogaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikubG93ID0KICAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuSENJbk1jYXN0T2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luTWNhc3RPY3RldHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yNjM0LDYgKzI3NDAsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dE1jYXN0UGt0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdzsKIApAQCAtMjY5MCw2ICsyNzk5LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdFBrdHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0TWNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0TWNhc3RQa3RzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dE1jYXN0UGt0c192YWxfcHRyKS5oaWdoID0KQEAgLTI3NTQsNiArMjg2Niw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNPdXRNY2FzdE9jdGV0cyBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzT3V0TWNhc3RPY3RldHNfdmFsX3B0cikgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdzsKIApAQCAtMjgxNiw2ICsyOTMxLDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0cyBkYXRhLgogICAgICAqIGdldCAoKiBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyICkubG93IGFuZCAoKiBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVE1DQVNUT0NURVRTXSkKKyAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworCiAgICAgKCppcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0c192YWxfcHRyKS5sb3cgPQogICAgICAgICByb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5IQ091dE1jYXN0T2N0ZXRzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dE1jYXN0T2N0ZXRzX3ZhbF9wdHIpLmhpZ2ggPQpAQCAtMjg3OCw2ICsyOTk2LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXBTeXN0ZW1TdGF0c0luQmNhc3RQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzSW5CY2FzdFBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNJbkJjYXN0UGt0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93OwogCkBAIC0yOTM0LDYgKzMwNTUsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBjb3B5IGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzIGRhdGEuCiAgICAgICogZ2V0ICgqIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIgKS5oaWdoIGZyb20gcm93cmVxX2N0eC0+ZGF0YQogICAgICAqLworICAgIGlmICghcm93cmVxX2N0eC0+ZGF0YS0+c3RhdHMuY29sdW1uQXZhaWxbSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5CQ0FTVFBLVFNdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNIQ0luQmNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDSW5CY2FzdFBrdHMubG93OwogICAgICgqaXBTeXN0ZW1TdGF0c0hDSW5CY2FzdFBrdHNfdmFsX3B0cikuaGlnaCA9CkBAIC0yOTk2LDYgKzMxMjAsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzT3V0QmNhc3RQa3RzIGRhdGEuCiAgICAgICogY29weSAoKiBpcFN5c3RlbVN0YXRzT3V0QmNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c091dEJjYXN0UGt0c192YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdzsKIApAQCAtMzA1Miw2ICszMTc5LDkgQEAKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gY29weSBpcFN5c3RlbVN0YXRzSENPdXRCY2FzdFBrdHMgZGF0YS4KICAgICAgKiBnZXQgKCogaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIgKS5sb3cgYW5kICgqIGlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyICkuaGlnaCBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEJDQVNUUEtUU10pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0hDT3V0QmNhc3RQa3RzX3ZhbF9wdHIpLmxvdyA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLkhDT3V0QmNhc3RQa3RzLmxvdzsKICAgICAoKmlwU3lzdGVtU3RhdHNIQ091dEJjYXN0UGt0c192YWxfcHRyKS5oaWdoID0KQEAgLTMxMTYsNiArMzI0Niw5IEBACiAgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZSBkYXRhLgogICAgICAqIGNvcHkgKCogaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKICAgICAgKi8KKyAgICBpZiAoIXJvd3JlcV9jdHgtPmRhdGEtPnN0YXRzLmNvbHVtbkF2YWlsW0lQU1lTVEVNU1RBVFNUQUJMRV9ESVNDT05USU5VSVRZVElNRV0pCisgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKwogICAgICgqaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lX3ZhbF9wdHIpID0KICAgICAgICAgcm93cmVxX2N0eC0+aXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lOwogCkBAIC0zMTcyLDYgKzMzMDUsOSBAQAogICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcFN5c3RlbVN0YXRzUmVmcmVzaFJhdGUgZGF0YS4KICAgICAgKiBjb3B5ICgqIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCiAgICAgICovCisgICAgaWYgKCFyb3dyZXFfY3R4LT5kYXRhLT5zdGF0cy5jb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfUkVGUkVTSFJBVEVdKQorICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisKICAgICAoKmlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZV92YWxfcHRyKSA9CiAgICAgICAgIHJvd3JlcV9jdHgtPmlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlLmgKaW5kZXggOWFhMDE2ZC4uY2ExZTFmMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZS5oCkBAIC0yMzQsOCArMjM0LDggQEAKICAgICAgICAgKiBpcFN5c3RlbVN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4CiAgICAgICAgIChpcFN5c3RlbVN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJpcFN5c3RlbVN0YXRzVGFibGVfaW50ZXJmYWNlLmgiCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZS9pcFN5c3RlbVN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBiNjMzMjliLi5hOTAyN2FlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBTeXN0ZW1TdGF0c1RhYmxlL2lwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcFN5c3RlbVN0YXRzVGFibGUvaXBTeXN0ZW1TdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTE5LDcgKzE5LDcgQEAKIAogI2luY2x1ZGUgImlwU3lzdGVtU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgogCi1zdGF0aWMgaW50ICAgICAgaXBzc19jYWNoZV9yZWZyZXNoID0gMzA7CitzdGF0aWMgaW50ICAgICAgaXBzc19jYWNoZV9yZWZyZXNoID0gSVBTWVNURU1TVEFUU1RBQkxFX0NBQ0hFX1RJTUVPVVQ7CiAKIC8qKiBAaW5ncm91cCBpbnRlcmZhY2UgCiAgKiBAYWRkdG9ncm91cCBkYXRhX2FjY2VzcyBkYXRhX2FjY2VzczogUm91dGluZXMgdG8gYWNjZXNzIGRhdGEKQEAgLTU4LDYxICs1OCwxMCBAQAogaXBTeXN0ZW1TdGF0c1RhYmxlX2luaXRfZGF0YShpcFN5c3RlbVN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3JlZykKIHsKLSAgICBzdGF0aWMgdW5zaWduZWQgaW50IG15X2NvbHVtbnNbXSA9IHsKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTlJFQ0VJVkVTLCBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5SRUNFSVZFUywKLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5PQ1RFVFMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTk9DVEVUUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkhEUkVSUk9SUywKLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5OT1JPVVRFUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkFERFJFUlJPUlMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5VTktOT1dOUFJPVE9TLAotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTlRSVU5DQVRFRFBLVFMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSU5GT1JXREFUQUdSQU1TLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0hDSU5GT1JXREFUQUdSQU1TLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU1JFQVNNUkVRRFMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTUkVBU01PS1MsIENPTFVNTl9JUFNZU1RFTVNUQVRTUkVBU01GQUlMUywKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkRJU0NBUkRTLCBDT0xVTU5fSVBTWVNURU1TVEFUU0lOREVMSVZFUlMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTkRFTElWRVJTLCBDT0xVTU5fSVBTWVNURU1TVEFUU09VVFJFUVVFU1RTLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU0hDT1VUUkVRVUVTVFMsIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUTk9ST1VURVMsCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVEZPUldEQVRBR1JBTVMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRGT1JXREFUQUdSQU1TLAotICAgICAgICBDT0xVTU5fSVBTWVNURU1TVEFUU09VVERJU0NBUkRTLAotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVRGUkFHUkVRRFMsICovCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VURlJBR09LUywgQ09MVU1OX0lQU1lTVEVNU1RBVFNPVVRGUkFHRkFJTFMsCi0gICAgICAgIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VURlJBR0NSRUFURVMsCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVFRSQU5TTUlUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRUUkFOU01JVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVE9DVEVUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRPQ1RFVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU0lOTUNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOTUNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTk1DQVNUT0NURVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ0lOTUNBU1RPQ1RFVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVE1DQVNUUEtUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENPVVRNQ0FTVFBLVFMsICovCi0gICAgICAgIC8qKiBDT0xVTU5fSVBTWVNURU1TVEFUU09VVE1DQVNUT0NURVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVE1DQVNUT0NURVRTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNJTkJDQVNUUEtUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTSENJTkJDQVNUUEtUUywgKi8KLSAgICAgICAgLyoqIENPTFVNTl9JUFNZU1RFTVNUQVRTT1VUQkNBU1RQS1RTLCAqLwotICAgICAgICAvKiogQ09MVU1OX0lQU1lTVEVNU1RBVFNIQ09VVEJDQVNUUEtUUywgKi8KLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNESVNDT05USU5VSVRZVElNRSwKLSAgICAgICAgQ09MVU1OX0lQU1lTVEVNU1RBVFNSRUZSRVNIUkFURQotICAgIH07Ci0gICAgc3RhdGljIG5ldHNubXBfY29sdW1uX2luZm8gdmFsaWRfY29sdW1uczsKLQotICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwU3lzdGVtU3RhdHNUYWJsZTppcFN5c3RlbVN0YXRzVGFibGVfaW5pdF9kYXRhIiwKKyAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwU3lzdGVtU3RhdHNUYWJsZTppcFN5c3RlbVN0YXRzVGFibGVfaW5pdF9kYXRhIiwKICAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CiAKICAgICAvKgotICAgICAqIHdlIG9ubHkgd2FudCB0byBwcm9jZXNzIGNlcnRhaW4gY29sdW1ucywgYW5kIGlnbm9yZQotICAgICAqIGFueXRoaW5nIGVsc2UuCi0gICAgICovCi0gICAgdmFsaWRfY29sdW1ucy5pc1JhbmdlID0gMDsKLSAgICB2YWxpZF9jb2x1bW5zLmRldGFpbHMubGlzdCA9IG15X2NvbHVtbnM7Ci0gICAgdmFsaWRfY29sdW1ucy5saXN0X2NvdW50ID0gc2l6ZW9mKG15X2NvbHVtbnMpIC8gc2l6ZW9mKHVuc2lnbmVkIGludCk7Ci0gICAgaXBTeXN0ZW1TdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KCZ2YWxpZF9jb2x1bW5zKTsKLSAgICAvKgogICAgICAqIFRPRE86MzAzOm86IEluaXRpYWxpemUgaXBTeXN0ZW1TdGF0c1RhYmxlIGRhdGEuCiAgICAgICovCiAKQEAgLTE2Nyw3ICsxMTYsOSBAQAogICAgICAqIEZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiB1c2UgYSBjdXN0b20gY29udGFpbmVyLiBJZiB5b3UKICAgICAgKiBkbyBub3QgY3JlYXRlIG9uZSwgb25lIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LgogICAgICAqLwotICAgICpjb250YWluZXJfcHRyX3B0ciA9IE5VTEw7CisKKworICAgICpjb250YWluZXJfcHRyX3B0ciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImlwU3lzdGVtU3RhdHNUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKIAogICAgIGlmIChOVUxMID09IGNhY2hlKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCkBAIC0xOTIsNiArMTQzLDcgQEAKICAgICAgICAgKE5FVFNOTVBfQ0FDSEVfRE9OVF9BVVRPX1JFTEVBU0UgfCBORVRTTk1QX0NBQ0hFX0RPTlRfRlJFRV9FWFBJUkVECiAgICAgICAgICB8IE5FVFNOTVBfQ0FDSEVfRE9OVF9GUkVFX0JFRk9SRV9MT0FEIHwKICAgICAgICAgIE5FVFNOTVBfQ0FDSEVfQVVUT19SRUxPQUQpOworICAgIGlwU3lzdGVtU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCgqY29udGFpbmVyX3B0cl9wdHIpOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcFN5c3RlbVN0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KIAogLyoqCkBAIC0yNjcsNyArMjE5LDcgQEAKICAgICAgICAgJiYgKE1GRF9TVUNDRVNTID09CiAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzVGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1zdGF0c19lbnRyeS0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnNfaXBfdmVyc2lvbikpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhbMF0pKSkgewogICAgICAgICByb3dyZXFfY3R4LT5pcFN5c3RlbVN0YXRzUmVmcmVzaFJhdGUgPSBpcHNzX2NhY2hlX3JlZnJlc2ggKiAxMDAwOyAgICAgICAvKiBtaWxsaS1zZWNvbmRzICovCiAgICAgICAgIENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKICAgICB9IGVsc2UgewpAQCAtMzg2LDcgKzMzOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfRlJFRV9ET05UX0NMRUFSKTsKIAogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6aXBTeXN0ZW1TdGF0c1RhYmxlOmlwU3lzdGVtU3RhdHNUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJSIgTkVUU05NUF9QUkl6ICJ1IHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXBTeXN0ZW1TdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwX3NjYWxhcnMuYwppbmRleCA4YWY5NjEzLi5kOWFiNTI5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXBfc2NhbGFycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcF9zY2FsYXJzLmMKQEAgLTEyLDE5ICsxMiw0MiBAQAogI2luY2x1ZGUgImlwX3NjYWxhcnMuaCIKIAogaW50CitoYW5kbGVfaXBGb3J3YXJkaW5nKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpOworCitpbnQKK2hhbmRsZV9pcERlZmF1bHRUVEwobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CisKK2ludAogaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cyk7CiAKK2ludCBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlOworCitpbnQKK2hhbmRsZV9pcEFkZHJlc3NTcGluTG9jayhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKTsKKwogLyoqIEluaXRpYWxpemVzIHRoZSBpcCBtb2R1bGUgKi8KIHZvaWQKIGluaXRfaXBfc2NhbGFycyh2b2lkKQogeworICAgIHN0YXRpYyBvaWQgCSAgICBpcEZvcndhcmRpbmdfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDEgfTsKKyAgICBzdGF0aWMgb2lkIAkgICAgaXBEZWZhdWx0VFRMX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyLCAwIH07CiAgICAgc3RhdGljIG9pZCAgICAgIGlwUmVhc21UaW1lb3V0X29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAxMywgMCB9OwogICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBGb3J3YXJkaW5nX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAyNSB9OwogICAgIHN0YXRpYyBvaWQgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkW10gPQogICAgICAgICB7IDEsIDMsIDYsIDEsIDIsIDEsIDQsIDI2LCAwIH07CisgICAgc3RhdGljIG9pZCAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA0LCAzMyB9OwogCiAgICAgREVCVUdNU0dUTCgoImlwX3NjYWxhciIsICJJbml0aWFsaXppbmdcbiIpKTsKIApAQCAtMzUsMjAgKzU4LDEzOSBAQAogICAgICAgICAgSEFORExFUl9DQU5fUk9OTFksIE5VTEwsIE5VTEwpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIobmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcEZvcndhcmRpbmciLCBoYW5kbGVfaXBGb3J3YXJkaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBGb3J3YXJkaW5nX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoaXBGb3J3YXJkaW5nX29pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpKTsKKworICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJpcHY2SXBGb3J3YXJkaW5nIiwgaGFuZGxlX2lwdjZJcEZvcndhcmRpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZJcEZvcndhcmRpbmdfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKGlwdjZJcEZvcndhcmRpbmdfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFKSk7CiAKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcihuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBBZGRyZXNzU3BpbkxvY2siLCBoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChpcEFkZHJlc3NTcGluTG9ja19vaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUpKTsKKworICAgIC8qIEluaXRpYWxpemUgc3BpbiBsb2NrIHdpdGggcmFuZG9tIHZhbHVlICovCisgICAgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSA9IChpbnQpIHJhbmRvbSgpOworCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9udW1fZmlsZV9pbnN0YW5jZQogICAgICAgICAoImlwdjZJcERlZmF1bHRIb3BMaW1pdCIsCiAgICAgICAgICBpcHY2SXBEZWZhdWx0SG9wTGltaXRfb2lkLCBPSURfTEVOR1RIKGlwdjZJcERlZmF1bHRIb3BMaW1pdF9vaWQpLAogICAgICAgICAgIi9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mL2RlZmF1bHQvaG9wX2xpbWl0IiwgQVNOX0lOVEVHRVIsCiAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsIE5VTEwsIE5VTEwpOworCisgICAgIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UKKyAgICAgICAgKCJpcERlZmF1bHRUVEwiLAorICAgICAgICAgaXBEZWZhdWx0VFRMX29pZCwgT0lEX0xFTkdUSChpcERlZmF1bHRUVExfb2lkKSwKKyAgICAgICAgICIvcHJvYy9zeXMvbmV0L2lwdjQvaXBfZGVmYXVsdF90dGwiLCBBU05fSU5URUdFUiwKKyAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKIH0KIAogaW50CitoYW5kbGVfaXBGb3J3YXJkaW5nKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICAgKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgKnJlcXVlc3RzKQoreworICAgIGludCAgICAgIHJjOworICAgIHVfbG9uZyAgIHZhbHVlOworCisgICAgLyogV2UgYXJlIG5ldmVyIGNhbGxlZCBmb3IgYSBHRVRORVhUIGlmIGl0J3MgcmVnaXN0ZXJlZCBhcyBhCisgICAgICAgImluc3RhbmNlIiwgYXMgaXQncyAibWFnaWNhbGx5IiBoYW5kbGVkIGZvciB1cy4gICovCisKKyAgICAvKiBhIGluc3RhbmNlIGhhbmRsZXIgYWxzbyBvbmx5IGhhbmRzIHVzIG9uZSByZXF1ZXN0IGF0IGEgdGltZSwgc28KKyAgICAgICB3ZSBkb24ndCBuZWVkIHRvIGxvb3Agb3ZlciBhIGxpc3Qgb2YgcmVxdWVzdHM7IHdlJ2xsIG9ubHkgZ2V0IG9uZS4gKi8KKworICAgIHN3aXRjaChyZXFpbmZvLT5tb2RlKSB7CisKKyAgICAgICAgY2FzZSBNT0RFX0dFVDoKKyAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX2dldCgmdmFsdWUpOworICAgICAgICAgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUgPyAxIDogMjsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSZ2YWx1ZSwgc2l6ZW9mKHZhbHVlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBTRVQgUkVRVUVTVAorICAgICAgICAgKgorICAgICAgICAgKiBtdWx0aXBsZSBzdGF0ZXMgaW4gdGhlIHRyYW5zYWN0aW9uLiAgU2VlOgorICAgICAgICAgKiBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L3Rvb2xraXQvbWliX21vZHVsZS9zZXQtYWN0aW9ucy5qcGcKKyAgICAgICAgICovCisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgorICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHN0b3JlIG9sZCBpbmZvIGZvciB1bmRvIGxhdGVyCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX2dldCgmdmFsdWUpOworICAgICAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9OT0NSRUFUSU9OKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdV9sb25nICp2YWx1ZV9zYXZlOworICAgICAgICAgICAgICAgIHZhbHVlX3NhdmUgPSBuZXRzbm1wX21lbWR1cCgmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworICAgICAgICAgICAgICAgIGlmICggTlVMTCA9PSB2YWx1ZV9zYXZlICkKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7CisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfYWRkX2xpc3RfZGF0YShyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiaXBmdyIsIHZhbHVlX3NhdmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUpKTsKKwkgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICAgICAgLyogWFhYOiBmcmVlIHJlc291cmNlcyBhbGxvY2F0ZWQgaW4gUkVTRVJWRTEgYW5kL29yCisgICAgICAgICAgICAgICBSRVNFUlZFMi4gIFNvbWV0aGluZyBmYWlsZWQgc29tZXdoZXJlLCBhbmQgdGhlIHN0YXRlcworICAgICAgICAgICAgICAgYmVsb3cgd29uJ3QgYmUgY2FsbGVkLiAqLworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9BQ1RJT046CisgICAgICAgICAgICAvKiBYWFg6IHBlcmZvcm0gdGhlIHZhbHVlIGNoYW5nZSBoZXJlICovCisgICAgICAgICAgICB2YWx1ZSA9ICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKKyAgICAgICAgICAgIHJjID0gbmV0c25tcF9hcmNoX2lwX3NjYWxhcnNfaXBGb3J3YXJkaW5nX3NldCh2YWx1ZSk7CisgICAgICAgICAgICBpZiAoIDAgIT0gcmMgKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgcmMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICAgdmFsdWUgPQorICAgICAgICAgICAgICAgICAqKCh1X2xvbmcgKikgbmV0c25tcF9yZXF1ZXN0X2dldF9saXN0X2RhdGEocmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXBmdyIpKTsKKyAgICAgICAgICAgICByYyA9IG5ldHNubXBfYXJjaF9pcF9zY2FsYXJzX2lwRm9yd2FyZGluZ19zZXQodmFsdWUpOworICAgICAgICAgICAgIGlmICggMCAhPSByYyApIHsKKyAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0cywgU05NUF9FUlJfVU5ET0ZBSUxFRCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAvKiB3ZSBzaG91bGQgbmV2ZXIgZ2V0IGhlcmUsIHNvIHRoaXMgaXMgYSByZWFsbHkgYmFkIGVycm9yICovCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5rbm93biBtb2RlICglZCkgaW4gaGFuZGxlX2lwRm9yd2FyZGluZ1xuIiwgcmVxaW5mby0+bW9kZSApOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworCitpbnQKIGhhbmRsZV9pcHY2SXBGb3J3YXJkaW5nKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCkBAIC0xNTEsMyArMjkzLDcwIEBACiAKICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KKworaW50CitoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2sobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAqcmVxdWVzdHMpCit7CisgICAgdV9sb25nICAgdmFsdWU7CisKKyAgICAvKiBXZSBhcmUgbmV2ZXIgY2FsbGVkIGZvciBhIEdFVE5FWFQgaWYgaXQncyByZWdpc3RlcmVkIGFzIGEKKyAgICAgICAiaW5zdGFuY2UiLCBhcyBpdCdzICJtYWdpY2FsbHkiIGhhbmRsZWQgZm9yIHVzLiAgKi8KKworICAgIC8qIGEgaW5zdGFuY2UgaGFuZGxlciBhbHNvIG9ubHkgaGFuZHMgdXMgb25lIHJlcXVlc3QgYXQgYSB0aW1lLCBzbworICAgICAgIHdlIGRvbid0IG5lZWQgdG8gbG9vcCBvdmVyIGEgbGlzdCBvZiByZXF1ZXN0czsgd2UnbGwgb25seSBnZXQgb25lLiAqLworCisgICAgc3dpdGNoKHJlcWluZm8tPm1vZGUpIHsKKworICAgICAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIsIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikmaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWUpKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIFNFVCBSRVFVRVNUCisgICAgICAgICAqCisgICAgICAgICAqIG11bHRpcGxlIHN0YXRlcyBpbiB0aGUgdHJhbnNhY3Rpb24uICBTZWU6CisgICAgICAgICAqIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvdG9vbGtpdC9taWJfbW9kdWxlL3NldC1hY3Rpb25zLmpwZworICAgICAgICAgKi8KKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKyAgICAgICAgICAgIC8qIGp1c3QgY2hlY2sgdGhlIHZhbHVlICovCisgICAgICAgICAgICB2YWx1ZSA9ICAqKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBpcEFkZHJlc3NTcGluTG9ja1ZhbHVlKQorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfRlJFRToKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICAgICAgLyogcGVyZm9ybSB0aGUgZmluYWwgc3BpbmxvY2sgY2hlY2sgYW5kIGluY3JlYXNlIGl0cyB2YWx1ZSAqLworICAgICAgICAgICAgdmFsdWUgPSAgKihyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcik7CisgICAgICAgICAgICBpZiAodmFsdWUgIT0gaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSsrOworICAgICAgICAgICAgICAgIC8qIGFuZCBjaGVjayBpdCBmb3Igb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgICAgICBpZiAoaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSA+IDIxNDc0ODM2NDcgfHwgaXBBZGRyZXNzU3BpbkxvY2tWYWx1ZSA8IDApCisgICAgICAgICAgICAgICAgICAgIGlwQWRkcmVzc1NwaW5Mb2NrVmFsdWUgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIC8qIHdlIHNob3VsZCBuZXZlciBnZXQgaGVyZSwgc28gdGhpcyBpcyBhIHJlYWxseSBiYWQgZXJyb3IgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmtub3duIG1vZGUgKCVkKSBpbiBoYW5kbGVfaXBBZGRyZXNzU3BpbkxvY2tcbiIsIHJlcWluZm8tPm1vZGUgKTsKKyAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuYwppbmRleCBiZDI3Yjc4Li4zNTFkZGQxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgImlwdjRJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRbXSA9IHsgSVBWNElOVEVSRkFDRVRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZFtdID0geyBJUFY0SU5URVJGQUNFVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoaXB2NEludGVyZmFjZVRhYmxlX29pZCk7CiAKIGlwdjRJbnRlcmZhY2VUYWJsZV9yZWdpc3RyYXRpb24gaXB2NEludGVyZmFjZVRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NEludGVyZmFjZVRhYmxlL2lwdjRJbnRlcmZhY2VUYWJsZS5oCmluZGV4IGFkNWE2NzguLjQxZTc5MWYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY0SW50ZXJmYWNlVGFibGUvaXB2NEludGVyZmFjZVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZS9pcHY0SW50ZXJmYWNlVGFibGUuaApAQCAtMTA3LDggKzEwNyw4IEBACiAgICAgICAgICogaXB2NEludGVyZmFjZVRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAoaXB2NEludGVyZmFjZVRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgaXB2NEludGVyZmFjZVRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBpcHY0SW50ZXJmYWNlVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlwdjRJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAiaXB2NEludGVyZmFjZVRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmMKaW5kZXggZjljYWFlZi4uOTJmMGE1YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJpcHY2SW50ZXJmYWNlVGFibGVfaW50ZXJmYWNlLmgiCiAKLW9pZCAgICAgICAgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkW10gPSB7IElQVjZJTlRFUkZBQ0VUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkX3NpemUgPQorY29uc3Qgb2lkICAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRbXSA9IHsgSVBWNklOVEVSRkFDRVRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZSA9CiBPSURfTEVOR1RIKGlwdjZJbnRlcmZhY2VUYWJsZV9vaWQpOwogCiBpcHY2SW50ZXJmYWNlVGFibGVfcmVnaXN0cmF0aW9uIGlwdjZJbnRlcmZhY2VUYWJsZV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZS9pcHY2SW50ZXJmYWNlVGFibGUuaAppbmRleCA4MjkyZWMwLi5hMjYwNzMyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NkludGVyZmFjZVRhYmxlL2lwdjZJbnRlcmZhY2VUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUvaXB2NkludGVyZmFjZVRhYmxlLmgKQEAgLTE5MSw4ICsxOTEsOCBAQAogICAgICAgICAqIGlwdjZJbnRlcmZhY2VUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKGlwdjZJbnRlcmZhY2VUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIGlwdjZJbnRlcmZhY2VUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXB2NkludGVyZmFjZVRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICBpcHY2SW50ZXJmYWNlVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgImlwdjZJbnRlcmZhY2VUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc5YmQ3NQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCkBAIC0wLDAgKzEsNSBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzk0MDkzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMKQEAgLTAsMCArMSwxMDA5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmMgMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworLyoqIFxwYWdlIE1GRCBoZWxwZXIgZm9yIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKgorICogXHNlY3Rpb24gaW50cm8gSW50cm9kdWN0aW9uCisgKiBJbnRyb2R1Y3RvcnkgdGV4dC4KKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oIgorCitjb25zdCBvaWQgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkW10gPQorICAgIHsgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkX3NpemUgPQorT0lEX0xFTkdUSChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWQpOworCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0Oworc3RhdGljIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0X3A7CisKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpOwordm9pZCAgICAgICAgICAgIHNodXRkb3duX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpOworCisKKy8qKgorICogSW5pdGlhbGl6ZXMgdGhlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIG1vZHVsZQorICovCit2b2lkCitpbml0X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aW5pdF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDA6bzogUGVyZm9ybSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIpKQorICAgICAgICBpbml0aWFsaXplX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKCk7CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5pdF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSAqLworCisvKioKKyAqIFNodXQtZG93biB0aGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbW9kdWxlIChhZ2VudCBpcyBleGl0aW5nKQorICovCit2b2lkCitzaHV0ZG93bl9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSh2b2lkKQoreworICAgIGlmIChzaG91bGRfaW5pdCgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiKSkKKyAgICAgICAgc2h1dGRvd25fdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUoKTsKKworfQorCisvKioKKyAqIEluaXRpYWxpemUgdGhlIHRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIAorICogICAgKERlZmluZSBpdHMgY29udGVudHMgYW5kIGhvdyBpdCdzIHN0cnVjdHVyZWQpCisgKi8KK3ZvaWQKK2luaXRpYWxpemVfdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCkKK3sKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppbml0aWFsaXplX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMTpvOiBQZXJmb3JtIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIG9uZS10aW1lIHRhYmxlIGluaXRpYWxpemF0aW9uLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMjpvOiB8LT5Jbml0aWFsaXplIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHVzZXIgY29udGV4dAorICAgICAqIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiBhIHBvaW50ZXIgdG8gc29tZSBkYXRhIGZvciB0aGlzCisgICAgICogdGFibGUsIGFsbG9jYXRlIG9yIHNldCBpdCB1cCBoZXJlLgorICAgICAqLworICAgIC8qCisgICAgICogYSBuZXRzbm1wX2RhdGFfbGlzdCBpcyBhIHNpbXBsZSB3YXkgdG8gc3RvcmUgdm9pZCBwb2ludGVycy4gQSBzaW1wbGUKKyAgICAgKiBzdHJpbmcgdG9rZW4gaXMgdXNlZCB0byBhZGQsIGZpbmQgb3IgcmVtb3ZlIHBvaW50ZXJzLgorICAgICAqLworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3VzZXJfY29udGV4dF9wID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsIE5VTEwsIE5VTEwpOworCisgICAgLyoKKyAgICAgKiBObyBzdXBwb3J0IGZvciBhbnkgZmxhZ3MgeWV0LCBidXQgaW4gdGhlIGZ1dHVyZSB5b3Ugd291bGQKKyAgICAgKiBzZXQgYW55IGZsYWdzIGhlcmUuCisgICAgICovCisgICAgZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBpbml0aWFsaXphdGlvbiBjb2RlCisgICAgICovCisgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlCisJKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3VzZXJfY29udGV4dF9wLCBmbGFncyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpemVfdGFibGVfaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgKi8KKworLyoqCisgKiBTaHV0ZG93biB0aGUgdGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgCisgKi8KK3ZvaWQKK3NodXRkb3duX3RhYmxlX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBzaHV0ZG93biBjb2RlCisgICAgICovCisgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3NodXRkb3duX2ludGVyZmFjZQorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV91c2VyX2NvbnRleHRfcCA9IE5VTEw7Cit9CisKKy8qKgorICogZXh0cmEgY29udGV4dCBpbml0aWFsaXphdGlvbiAoZWcgZGVmYXVsdCB2YWx1ZXMpCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggICAgOiByb3cgcmVxdWVzdCBjb250ZXh0CisgKiBAcGFyYW0gdXNlcl9pbml0X2N0eCA6IHZvaWQgcG9pbnRlciBmb3IgdXNlciAocGFyYW1ldGVyIHRvIHJvd3JlcV9jdHhfYWxsb2NhdGUpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgOiBubyBlcnJvcnMKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgIDogZXJyb3IgKGNvbnRleHQgYWxsb2NhdGUgd2lsbCBmYWlsKQorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LCB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjEwOm86IHwtPiBQZXJmb3JtIGV4dHJhIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHJvd3JlcSBpbml0aWFsaXphdGlvbi4gKGVnIERFRlZBTFMpCisgICAgICovCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X2luaXQgKi8KKworLyoqCisgKiBleHRyYSBjb250ZXh0IGNsZWFudXAKKyAqCisgKi8KK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSByb3dyZXEgY2xlYW51cC4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfZnJlZShyb3dyZXFfY3R4LT5kYXRhKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhID0gTlVMTDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9jbGVhbnVwICovCisKKy8qKgorICogcHJlLXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgICAgICAgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ByZV9yZXF1ZXN0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTEwOm86IFBlcmZvcm0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgcHJlLXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBwb3N0LXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKiBOb3RlOgorICogICBOZXcgcm93cyBoYXZlIGJlZW4gaW5zZXJ0ZWQgaW50byB0aGUgY29udGFpbmVyLCBhbmQKKyAqICAgZGVsZXRlZCByb3dzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lciBhbmQKKyAqICAgcmVsZWFzZWQuCisgKgorICogQHBhcmFtIHVzZXJfY29udGV4dAorICogQHBhcmFtIHJjIDogTUZEX1NVQ0NFU1MgaWYgYWxsIHJlcXVlc3RzIHN1Y2NlZWRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IG90aGVyIGVycm9yIChpZ25vcmVkKQorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCwgaW50IHJjKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzo1MTE6bzogUGVyZm9ybSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBwb3N0LXJlcXVlc3QgYWN0aW9ucy4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qCisgKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhCisgKgorICogUHVycG9zZTogY3JlYXRlIG5ldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhLgorICovCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCkKK3sKKyAgICAvKgorICAgICAqIFRPRE86MjAxOnI6IHwtPiBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YSAqcnRuID0gbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2VudHJ5X2NyZWF0ZSgpOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfZGF0YSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJ0bikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5hYmxlIHRvIG1hbGxvYyBtZW1vcnkgZm9yIG5ldyAiCisgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhLlxuIik7CisgICAgfQorCisgICAgcmV0dXJuIHJ0bjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfZGF0YSAqLworCisvKgorICogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9kYXRhCisgKgorICogUHVycG9zZTogcmVsZWFzZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhLgorICovCit2b2lkCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX2RhdGEoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YSAqIGRhdGEpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9kYXRhIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIwMjpyOiB8LT4gcmVsZWFzZSBtZW1vcnkgZm9yIHRoZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICovCisgICAgbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2VudHJ5X2ZyZWUoZGF0YSk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2VfZGF0YSAqLworCisvKiogQGRlZmdyb3VwIGRhdGFfZ2V0IGRhdGFfZ2V0OiBSb3V0aW5lcyB0byBnZXQgZGF0YQorICoKKyAqIFRPRE86MjMwOk06IEltcGxlbWVudCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBnZXQgcm91dGluZXMuCisgKiBUT0RPOjI0MDpNOiBJbXBsZW1lbnQgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbWFwcGluZyByb3V0aW5lcyAoaWYgYW55KS4KKyAqCisgKiBUaGVzZSByb3V0aW5lIGFyZSB1c2VkIHRvIGdldCB0aGUgdmFsdWUgZm9yIGluZGl2aWR1YWwgb2JqZWN0cy4gVGhlCisgKiByb3cgY29udGV4dCBpcyBwYXNzZWQsIGFsb25nIHdpdGggYSBwb2ludGVyIHRvIHRoZSBtZW1vcnkgd2hlcmUgdGhlCisgKiB2YWx1ZSBzaG91bGQgYmUgY29waWVkLgorICoKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUgaXMgc3ViaWQgMzYgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBkYXRhIGNvbnRleHQgZnVuY3Rpb25zLgorICovCisKKworLyoqCisgKiBzZXQgbWliIGluZGV4KGVzKQorICoKKyAqIEBwYXJhbSB0YmxfaWR4IG1pYiBpbmRleCBzdHJ1Y3R1cmUKKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBzZXR0aW5nIGFsbCB0aGUgTUlCIGluZGV4CisgKiAgY29tcG9uZW50cyB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuIEl0IGlzIGFzc3VtZSB0aGF0IHRoZSBDIHZhbHVlcworICogIGhhdmUgYWxyZWFkeSBiZWVuIG1hcHBlZCBmcm9tIHRoZWlyIG5hdGl2ZS9yYXdmb3JtYXQgdG8gdGhlIE1JQiBmb3JtYXQuCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKiB0YmxfaWR4LAorICAgICBsb25nIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXhfdmFsKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSAorICAgICAqLworICAgIHRibF9pZHgtPmlwdjZTY29wZVpvbmVJbmRleElmSW5kZXggPSBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzZXQgcm93IGNvbnRleHQgaW5kZXhlcworICoKKyAqIEBwYXJhbSByZXFyZXFfY3R4IHRoZSByb3cgY29udGV4dCB0aGF0IG5lZWRzIHVwZGF0ZWQgaW5kZXhlcworICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgZnVuY3Rpb24gc2V0cyB0aGUgbWliIGluZGV4cywgdGhlbiB1cGRhdGVzIHRoZSBvaWQgaW5kZXhzCisgKiAgZnJvbSB0aGUgbWliIGluZGV4LgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCgmcm93cmVxX2N0eC0+dGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4X3ZhbCkpCisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisKKyAgICAvKgorICAgICAqIGNvbnZlcnQgbWliIGluZGV4IHRvIG9pZCBpbmRleAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgubGVuID0gc2l6ZW9mKHJvd3JlcV9jdHgtPm9pZF90bXApIC8gc2l6ZW9mKG9pZCk7CisgICAgaWYgKDAgIT0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfdG9fb2lkKCZyb3dyZXFfY3R4LT5vaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0ICovCisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsCisgKiBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWwgaXMgc3ViaWQgMiBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuMgorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3IgdGhlIGxpbmstbG9jYWwgc2NvcGUgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWwgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbCBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4TGlua0xvY2FsX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF92YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEtPnNjb3Blem9uZV9saW5rbG9jYWw7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleExpbmtMb2NhbF9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4MworICogaXB2NlNjb3BlWm9uZUluZGV4MyBpcyBzdWJpZCAzIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4zCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSAzIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4MyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleDNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleDNfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4M192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4M192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4M19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXgzIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXgzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleDNfdmFsX3B0cikgPSAwOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleDNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWwKKyAqIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWwgaXMgc3ViaWQgNCBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuNAorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3IgdGhlIGFkbWluLWxvY2FsIHNjb3BlIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbCBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWxfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWwKKyAqIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbCBpcyBzdWJpZCA1IG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS41CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciB0aGUgc2l0ZS1sb2NhbCBzY29wZSBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbCBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF9nZXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhTaXRlTG9jYWxfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXg2CisgKiBpcHY2U2NvcGVab25lSW5kZXg2IGlzIHN1YmlkIDYgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjYKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIDYgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXg2IGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4Nl92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4Nl9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXg2X3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXg2X3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXg2X2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleDYgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleDZfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4Nl92YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleDZfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleDcKKyAqIGlwdjZTY29wZVpvbmVJbmRleDcgaXMgc3ViaWQgNyBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuNworICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgNyBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleDcgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXg3X3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXg3X2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleDdfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4NyBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4N192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXg3X3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4N19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWwKKyAqIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsIGlzIHN1YmlkIDggb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHRoZSBvcmdhbml6YXRpb24tbG9jYWwgc2NvcGUgb24gdGhpcworICAgICAgICAgICAgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWwgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbCBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWxfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4OQorICogaXB2NlNjb3BlWm9uZUluZGV4OSBpcyBzdWJpZCA5IG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS45CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSA5IG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4OSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleDlfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleDlfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4OV92YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4OV92YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4OV9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXg5IGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXg5X3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleDlfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXg5X2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhBCisgKiBpcHY2U2NvcGVab25lSW5kZXhBIGlzIHN1YmlkIDEwIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4xMAorICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgQSBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEEgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhBX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhBX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleEFfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleEFfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleEFfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QSBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4QV92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXhBX3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4QV9nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4RW50cnkuaXB2NlNjb3BlWm9uZUluZGV4QgorICogaXB2NlNjb3BlWm9uZUluZGV4QiBpcyBzdWJpZCAxMSBvZiBpcHY2U2NvcGVab25lSW5kZXhFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LjEuMTEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIEIgb24gdGhpcyBpbnRlcmZhY2UuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMQorICogICBzZXR0YWJsZSAgIDAKKyAqICAgaGludDogZAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIEluZXRab25lSW5kZXggKGJhc2VkIG9uIHBlcmx0eXBlIFVOU0lHTkVEMzIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fVU5TSUdORUQuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhCIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gaXB2NlNjb3BlWm9uZUluZGV4Ql92YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4Ql9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhCX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpcHY2U2NvcGVab25lSW5kZXhCX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhCX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEIgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGlwdjZTY29wZVpvbmVJbmRleEJfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqaXB2NlNjb3BlWm9uZUluZGV4Ql92YWxfcHRyKSA9IDA7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleEJfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleEVudHJ5LmlwdjZTY29wZVpvbmVJbmRleEMKKyAqIGlwdjZTY29wZVpvbmVJbmRleEMgaXMgc3ViaWQgMTIgb2YgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNi4xLjEyCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB6b25lIGluZGV4IGZvciBzY29wZSBDIG9uIHRoaXMgaW50ZXJmYWNlLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDEKKyAqICAgc2V0dGFibGUgICAwCisgKiAgIGhpbnQ6IGQKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBJbmV0Wm9uZUluZGV4IChiYXNlZCBvbiBwZXJsdHlwZSBVTlNJR05FRDMyKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX1VOU0lHTkVELiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4QyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGlwdjZTY29wZVpvbmVJbmRleENfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleENfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4Q192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4Q192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4Q19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpcHY2U2NvcGVab25lSW5kZXhDIGRhdGEuCisgICAgICogY29weSAoKiBpcHY2U2NvcGVab25lSW5kZXhDX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmlwdjZTY29wZVpvbmVJbmRleENfdmFsX3B0cikgPSAwOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhDX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhFbnRyeS5pcHY2U2NvcGVab25lSW5kZXhECisgKiBpcHY2U2NvcGVab25lSW5kZXhEIGlzIHN1YmlkIDEzIG9mIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjQuMzYuMS4xMworICogRGVzY3JpcHRpb246CitUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgRCBvbiB0aGlzIGludGVyZmFjZS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAxCisgKiAgIHNldHRhYmxlICAgMAorICogICBoaW50OiBkCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgSW5ldFpvbmVJbmRleCAoYmFzZWQgb24gcGVybHR5cGUgVU5TSUdORUQzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9VTlNJR05FRC4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGlwdjZTY29wZVpvbmVJbmRleEQgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhEX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhEX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleERfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGlwdjZTY29wZVpvbmVJbmRleERfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleERfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4RCBkYXRhLgorICAgICAqIGNvcHkgKCogaXB2NlNjb3BlWm9uZUluZGV4RF92YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCppcHY2U2NvcGVab25lSW5kZXhEX3ZhbF9wdHIpID0gMDsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4RF9nZXQgKi8KKworCisvKiogQHsgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk3NGZlZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oCkBAIC0wLDAgKzEsMjY5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUuaCAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisjaWZuZGVmIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0gKKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworLyoqIEBhZGR0b2dyb3VwIG1pc2MgbWlzYzogTWlzY2VsbGFuZW91cyByb3V0aW5lcworICoKKyAqIEB7CisgKi8KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2FzbjEuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zY29wZXpvbmUuaD4KKyAgICAvKgorICAgICAqIG90aGVyIHJlcXVpcmVkIG1vZHVsZSBjb21wb25lbnRzIAorICAgICAqLworICAgIC8qICpJTkRFTlQtT0ZGKiAgKi8KK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9kYXRhX2FjY2Vzcy9pcHY2c2NvcGV6b25lKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZSkKK2NvbmZpZ19yZXF1aXJlKGlwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2VzcykKKyAgICAvKiAqSU5ERU5ULU9OKiAgKi8KKworICAgIC8qCisgICAgICogT0lEIGFuZCBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAKKyAgICAgKi8KKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmgiCisKKyAgICAvKgorICAgICAqIGVudW0gZGVmaW5pb25zIAorICAgICAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmgiCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgaW5pdF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZSh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25faXB2NlNjb3BlWm9uZUluZGV4VGFibGUodm9pZCk7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpcyBzdWJpZCAzNiBvZiBpcC4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNiwgbGVuZ3RoOiA4CisgICAgICovCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogV2hlbiB5b3UgcmVnaXN0ZXIgeW91ciBtaWIsIHlvdSBnZXQgdG8gcHJvdmlkZSBhIGdlbmVyaWMKKyAgICAgKiBwb2ludGVyIHRoYXQgd2lsbCBiZSBwYXNzZWQgYmFjayB0byB5b3UgZm9yIG1vc3Qgb2YgdGhlCisgICAgICogZnVuY3Rpb25zIGNhbGxzLgorICAgICAqCisgICAgICogVE9ETzoxMDA6cjogUmV2aWV3IGFsbCBjb250ZXh0IHN0cnVjdHVyZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIFRPRE86MTAxOm86IHwtPiBSZXZpZXcgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgcmVnaXN0cmF0aW9uIGNvbnRleHQuCisgICAgICovCisgICAgdHlwZWRlZiBuZXRzbm1wX2RhdGFfbGlzdCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb247CisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFRPRE86MTEwOnI6IHwtPiBSZXZpZXcgaXB2NlNjb3BlWm9uZVRhYmxlIGRhdGEgY29udGV4dCBzdHJ1Y3R1cmUuCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGRhdGEgZm9yIGlwdjZTY29wZVpvbmVUYWJsZS4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIG1pYiBpbmRleC4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgaW5kZXggZm9yIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgICAgICovCisgICAgICAgIGxvbmcgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4OworCisKKyAgICB9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleDsKKworICAgIC8qCisgICAgICogVE9ETzoxMjE6cjogfCAgIHwtPiBSZXZpZXcgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgbWF4IGluZGV4IGxlbmd0aC4KKyAgICAgKiBJZiB5b3UgS05PVyB0aGF0IHlvdXIgaW5kZXhlcyB3aWxsIG5ldmVyIGV4Y2VlZCBhIGNlcnRhaW4KKyAgICAgKiBsZW5ndGgsIHVwZGF0ZSB0aGlzIG1hY3JvIHRvIHRoYXQgbGVuZ3RoLgorICAgICAqLworI2RlZmluZSBNQVhfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfSURYX0xFTiAgICAgMQorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxMzA6bzogfC0+IFJldmlldyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBSb3cgcmVxdWVzdCAocm93cmVxKSBjb250ZXh0LgorICAgICAqIFdoZW4geW91ciBmdW5jdGlvbnMgYXJlIGNhbGxlZCwgeW91IHdpbGwgYmUgcGFzc2VkIGEKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9zIHsKKworICAgIC8qKiB0aGlzIG11c3QgYmUgZmlyc3QgZm9yIGNvbnRhaW5lciBjb21wYXJlIHRvIHdvcmsgKi8KKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisgICAgICAgIG9pZCAgICAgICAgICAgICBvaWRfdG1wW01BWF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9JRFhfTEVOXTsKKworICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICpkYXRhOworCisgICAgICAgIC8qCisgICAgICAgICAqIGZsYWdzIHBlciByb3cuIEN1cnJlbnRseSwgdGhlIGZpcnN0IChsb3dlcikgOCBiaXRzIGFyZSByZXNlcnZlZAorICAgICAgICAgKiBmb3IgdGhlIHVzZXIuIFNlZSBtZmQuaCBmb3Igb3RoZXIgZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICB1X2ludCAgICAgICAgICAgcm93cmVxX2ZsYWdzOworCisgICAgICAgIC8qCisgICAgICAgICAqIFRPRE86MTMxOm86IHwgICB8LT4gQWRkIHVzZWZ1bCBkYXRhIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIHJvd3JlcSBjb250ZXh0LgorICAgICAgICAgKi8KKworICAgICAgICAvKgorICAgICAgICAgKiBzdG9yYWdlIGZvciBmdXR1cmUgZXhwYW5zaW9uCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YV9saXN0OworCisgICAgfSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4OworCisgICAgdHlwZWRlZiBzdHJ1Y3QgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVmX3Jvd3JlcV9jdHhfcyB7CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgfSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWZfcm93cmVxX2N0eDsKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIGZ1bmN0aW9uIHByb3RvdHlwZXMKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3QKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jb250ZXh0LCBpbnQgcmMpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KTsKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9jbGVhbnVwCisgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7CisKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4ICogbWliX2lkeCk7CisKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICoKKyAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpOworCisgICAgdm9pZAorICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2VfZGF0YShpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICogZGF0YSk7CisKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZF9zaXplOworCisKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oIgorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGlzIHN1YmlkIDM2IG9mIGlwLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGluZGV4ZXMKKyAgICAgKi8KKworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleDNfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXgzX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhBZG1pbkxvY2FsX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbF92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4U2l0ZUxvY2FsX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXg2X2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4Nl92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4N19nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDdfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX2dldAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhPcmdhbml6YXRpb25Mb2NhbF92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4OV9nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleDlfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleEFfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhBX3ZhbF9wdHIpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhCX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXB2NlNjb3BlWm9uZUluZGV4Ql92YWxfcHRyKTsKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4Q19nZXQoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGlwdjZTY29wZVpvbmVJbmRleENfdmFsX3B0cik7CisgICAgaW50CisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleERfZ2V0KGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpcHY2U2NvcGVab25lSW5kZXhEX3ZhbF9wdHIpOworCisKKyAgICBpbnQKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4ICogdGJsX2lkeCwKKyAgICAgICAgIGxvbmcgaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleF92YWwpOworICAgIGludAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleGVzX3NldAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICBsb25nIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXhfdmFsKTsKKworICAgIC8qCisgICAgICogRFVNTVkgbWFya2VycywgaWdub3JlCisgICAgICoKKyAgICAgKiBUT0RPOjA5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoxOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mjk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjM5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzo0OTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqLworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAyNWRkMwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0wLDAgKzEsMzA0IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmMgMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgiCisKKworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmgiCisKKy8qKiBAaW5ncm91cCBpbnRlcmZhY2UKKyAqIEBhZGR0b2dyb3VwIGRhdGFfYWNjZXNzIGRhdGFfYWNjZXNzOiBSb3V0aW5lcyB0byBhY2Nlc3MgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIGxvY2F0ZSB0aGUgZGF0YSB1c2VkIHRvIHNhdGlzZnkKKyAqIHJlcXVlc3RzLgorICogCisgKiBAeworICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBJUC1NSUI6OmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGlzIHN1YmlkIDM2IG9mIGlwLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNiwgbGVuZ3RoOiA4CisgKi8KKworLyoqCisgKiBpbml0aWFsaXphdGlvbiBmb3IgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgZGF0YSBhY2Nlc3MKKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBkdXJpbmcgc3RhcnR1cCB0byBhbGxvdyB5b3UgdG8KKyAqIGFsbG9jYXRlIGFueSByZXNvdXJjZXMgeW91IG5lZWQgZm9yIHRoZSBkYXRhIHRhYmxlLgorICoKKyAqIEBwYXJhbSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWcKKyAqICAgICAgICBQb2ludGVyIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IHVucmVjb3ZlcmFibGUgZXJyb3IuCisgKi8KK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdF9kYXRhKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRfZGF0YSIsICJjYWxsZWRcbiIpKTsKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRfZGF0YSAqLworCisvKioKKyAqIGNvbnRhaW5lciBvdmVydmlldworICoKKyAqLworCisvKioKKyAqIGNvbnRhaW5lciBpbml0aWFsaXphdGlvbgorICoKKyAqIEBwYXJhbSBjb250YWluZXJfcHRyX3B0ciBBIHBvaW50ZXIgdG8gYSBjb250YWluZXIgcG9pbnRlci4gSWYgeW91CisgKiAgICAgICAgY3JlYXRlIGEgY3VzdG9tIGNvbnRhaW5lciwgdXNlIHRoaXMgcGFyYW1ldGVyIHRvIHJldHVybiBpdAorICogICAgICAgIHRvIHRoZSBNRkQgaGVscGVyLiBJZiBzZXQgdG8gTlVMTCwgdGhlIE1GRCBoZWxwZXIgd2lsbAorICogICAgICAgIGFsbG9jYXRlIGEgY29udGFpbmVyIGZvciB5b3UuCisgKgorICogIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGF0IHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLiBJZiBubyBjdXN0b20KKyAqICBjb250YWluZXIgaXMgYWxsb2NhdGVkLCB0aGUgTUZEIGNvZGUgd2lsbCBjcmVhdGUgb25lIGZvciB5b3VyLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIHdvdWxkIGFsc28gYmUgYSBnb29kIHBsYWNlIHRvIGRvIGFueSBpbml0aWFsaXphdGlvbiBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgb3BlbmluZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCB3aWxsIHN1cHBseSB0aGUgZGF0YSwgb3BlbmluZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0KG5ldHNubXBfY29udGFpbmVyICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKiBjYWNoZSkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfaW5pdCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY29udGFpbmVyIHBhcmFtIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogRm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHVzZSBhIGN1c3RvbSBjb250YWluZXIuIElmIHlvdQorICAgICAqIGRvIG5vdCBjcmVhdGUgb25lLCBvbmUgd2lsbCBiZSBjcmVhdGVkIGZvciB5b3UuCisgICAgICovCisgICAgKmNvbnRhaW5lcl9wdHJfcHRyID0gTlVMTDsKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIGNhY2hlIHBhcmFtIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qCisgICAgICogVE9ETzozNDU6QTogU2V0IHVwIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGNhY2hlIHByb3BlcnRpZXMuCisgICAgICoKKyAgICAgKiBBbHNvIGZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiBzZXQgcGFyYW1ldGVycyBmb3IgdGhlCisgICAgICogY2FjaGUuIERvIG5vdCBjaGFuZ2UgdGhlIG1hZ2ljIHBvaW50ZXIsIGFzIGl0IGlzIHVzZWQKKyAgICAgKiBieSB0aGUgTUZEIGhlbHBlci4gVG8gY29tcGxldGVseSBkaXNhYmxlIGNhY2hpbmcsIHNldAorICAgICAqIGNhY2hlLT5lbmFibGVkIHRvIDAuCisgICAgICovCisgICAgY2FjaGUtPnRpbWVvdXQgPSA2MDsgLyogc2Vjb25kcyAqLworCisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBjb250YWluZXIgc2h1dGRvd24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0ciBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc2h1dGRvd24gdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUoKS4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgY2xlYW51cCBuZWVkZWQKKyAqICBmb3IgeW91IGRhdGEgc291cmNlLiBGb3IgZXhhbXBsZSwgY2xvc2luZyBhIGNvbm5lY3Rpb24gdG8gYW5vdGhlcgorICogIHByb2Nlc3MgdGhhdCBzdXBwbGllZCB0aGUgZGF0YSwgY2xvc2luZyBhIGRhdGFiYXNlLCBldGMuCisgKi8KK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyX3B0cikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24iLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgcGFyYW1zIHRvIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93blxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NodXRkb3duICovCisKKy8qKgorICogY2hlY2sgZW50cnkgZm9yIHVwZGF0ZQorICoKKyAqLworc3RhdGljIHZvaWQKK19zbmFyZl96b25laW5kZXhfZW50cnkobmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqc2NvcGV6b25lX2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyKQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisKKyAgICBERUJVR1RSQUNFOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gc2NvcGV6b25lX2VudHJ5KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGNvbnRhaW5lcik7CisgICAgcm93cmVxX2N0eCA9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoc2NvcGV6b25lX2VudHJ5LE5VTEwpOworICAgIGlmICgoTlVMTCAhPSByb3dyZXFfY3R4KSAmJgorICAgICAgICAgKE1GRF9TVUNDRVNTID09IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4ZXNfc2V0CisgICAgICAgICAocm93cmVxX2N0eCwgcm93cmVxX2N0eC0+ZGF0YS0+aW5kZXgpKSkgeworICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgfSBlbHNlIHsKKyAgICAgICBpZiAocm93cmVxX2N0eCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCisgICAgICAgICAgICAgICAgICAgICAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgY2FjaGUuXG4iKTsKKyAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfZnJlZShzY29wZXpvbmVfZW50cnkpOworICAgIH0KKyAgICAgIAorfQorCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEgbG9hZAorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHRvIHdoaWNoIGl0ZW1zIHNob3VsZCBiZSBpbnNlcnRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFIDogQ2FuJ3QgYWNjZXNzIGRhdGEgc291cmNlCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0byBsb2FkIHRoZSBpbmRleChlcykgKGFuZCBkYXRhLCBvcHRpb25hbGx5KQorICogIGZvciB0aGUgZXZlcnkgcm93IGluIHRoZSBkYXRhIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgV2hpbGUgbG9hZGluZyB0aGUgZGF0YSwgdGhlIG9ubHkgaW1wb3J0YW50IHRoaW5nIGlzIHRoZSBpbmRleGVzLgorICogIElmIGFjY2VzcyB0byB5b3VyIGRhdGEgaXMgY2hlYXAvZmFzdCAoZS5nLiB5b3UgaGF2ZSBhIHBvaW50ZXIgdG8gYQorICogIHN0cnVjdHVyZSBpbiBtZW1vcnkpLCBpdCB3b3VsZCBtYWtlIHNlbnNlIHRvIHVwZGF0ZSB0aGUgZGF0YSBoZXJlLgorICogIElmLCBob3dldmVyLCB0aGUgYWNjZXNzaW5nIHRoZSBkYXRhIGludm92bGVzIG1vcmUgd29yayAoZS5nLiBwYXJzaW5nCisgKiAgc29tZSBvdGhlciBleGlzdGluZyBkYXRhLCBvciBwZWZvcm1pbmcgY2FsY3VsYXRpb25zIHRvIGRlcml2ZSB0aGUgZGF0YSksCisgKiAgdGhlbiB5b3UgY2FuIGxpbWl0IHlvdXJzZWxmIHRvIHNldHRpbmcgdGhlIGluZGV4ZXMgYW5kIHNhdmluZyBhbnkKKyAqICBpbmZvcm1hdGlvbiB5b3Ugd2lsbCBuZWVkIGxhdGVyLiBUaGVuIHVzZSB0aGUgc2F2ZWQgaW5mb3JtYXRpb24gaW4KKyAqICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfcHJlcCgpIGZvciBwb3B1bGF0aW5nIGRhdGEuCisgKgorICogQG5vdGUKKyAqICBJZiB5b3UgbmVlZCBjb25zaXN0ZW5jeSBiZXR3ZWVuIHJvd3MgKGxpa2UgeW91IHdhbnQgc3RhdGlzdGljcworICogIGZvciBlYWNoIHJvdyB0byBiZSBmcm9tIHRoZSBzYW1lIHRpbWUgZnJhbWUpLCB5b3Ugc2hvdWxkIHNldCBhbGwKKyAqICBkYXRhIGhlcmUuCisgKgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworCisgICAgLyoKKyAgICAgKiB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgaW5kZXggdmFsdWVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqem9uZWluZGV4ID0gbmV0c25tcF9hY2Nlc3Nfc2NvcGV6b25lX2NvbnRhaW5lcl9sb2FkKE5VTEwsIDApOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2xvYWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSB6b25laW5kZXgpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlOmNvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICAgICAgImNvdWxkbid0IGdldCBzY29wZXpvbmUgaXRlcmF0b3JcbiIpKTsKKyAgICAgICAgcmV0dXJuIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRTsKKyAgICB9CisgICAgLyoKKyAgICAgKiBUT0RPOjM1MTpNOiB8LT4gTG9hZC91cGRhdGUgZGF0YSBpbiB0aGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgY29udGFpbmVyLgorICAgICAqIGxvb3Agb3ZlciB5b3VyIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlIGRhdGEsIGFsbG9jYXRlIGEgcm93cmVxIGNvbnRleHQsCisgICAgICogc2V0IHRoZSBpbmRleChlcykgW2FuZCBkYXRhLCBvcHRpb25hbGx5XSBhbmQgaW5zZXJ0IGludG8KKyAgICAgKiB0aGUgY29udGFpbmVyLgorICAgICAqLworCisgICAgIENPTlRBSU5FUl9GT1JfRUFDSCh6b25laW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKSBfc25hcmZfem9uZWluZGV4X2VudHJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICAvKgorICAgICAqIGZyZWUgdGhlIGNvbnRhaW5lci4gd2UndmUgZWl0aGVyIGNsYWltZWQgZWFjaCBlbnRyeSwgb3IgcmVsZWFzZWQgaXQsCisgICAgICogc28gdGhlIGFjY2VzcyBmdW5jdGlvbiBkb2Vzbid0IG5lZWQgdG8gY2xlYXIgdGhlIGNvbnRhaW5lci4KKyAgICAgKi8KKyAgICBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2ZyZWUoem9uZWluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEpOworCisgICAgREVCVUdNU0dUKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZCIsICJpbnNlcnRlZCAlbHUgcmVjb3Jkc1xuIiwgKHVuc2lnbmVkIGxvbmcpQ09OVEFJTkVSX1NJWkUoY29udGFpbmVyKSkpOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZCAqLworCisvKioKKyAqIGNvbnRhaW5lciBjbGVhbiB1cAorICoKKyAqIEBwYXJhbSBjb250YWluZXIgY29udGFpbmVyIHdpdGggYWxsIGN1cnJlbnQgaXRlbXMKKyAqCisgKiAgVGhpcyBvcHRpb25hbCBjYWxsYmFjayBpcyBjYWxsZWQgcHJpb3IgdG8gYWxsCisgKiAgaXRlbSdzIGJlaW5nIHJlbW92ZWQgZnJvbSB0aGUgY29udGFpbmVyLiBJZiB5b3UKKyAqICBuZWVkIHRvIGRvIGFueSBwcm9jZXNzaW5nIGJlZm9yZSB0aGF0LCBkbyBpdCBoZXJlLgorICoKKyAqIEBub3RlCisgKiAgVGhlIE1GRCBoZWxwZXIgd2lsbCB0YWtlIGNhcmUgb2YgcmVsZWFzaW5nIGFsbCB0aGUgcm93IGNvbnRleHRzLgorICoKKyAqLwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzgwOk06IEZyZWUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgY29udGFpbmVyIGRhdGEuCisgICAgICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9mcmVlICovCisKKy8qKgorICogcHJlcGFyZSByb3cgZm9yIHByb2Nlc3NpbmcuCisgKgorICogIFdoZW4gdGhlIGFnZW50IGhhcyBsb2NhdGVkIHRoZSByb3cgZm9yIGEgcmVxdWVzdCwgdGhpcyBmdW5jdGlvbiBpcworICogIGNhbGxlZCB0byBwcmVwYXJlIHRoZSByb3cgZm9yIHByb2Nlc3NpbmcuIElmIHlvdSBmdWxseSBwb3B1bGF0ZWQKKyAqICB0aGUgZGF0YSBjb250ZXh0IGR1cmluZyB0aGUgaW5kZXggc2V0dXAgcGhhc2UsIHlvdSBtYXkgbm90IG5lZWQgdG8KKyAqICBkbyBhbnl0aGluZy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eCBwb2ludGVyIHRvIGEgY29udGV4dC4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19wcmVwKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfcHJlcCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzkwOm86IFByZXBhcmUgcm93IGZvciByZXF1ZXN0LgorICAgICAqIElmIHBvcHVsYXRpbmcgcm93IGRhdGEgd2FzIGRlbGF5ZWQsIHRoaXMgaXMgdGhlIHBsYWNlIHRvCisgICAgICogZmlsbCBpbiB0aGUgcm93IGZvciB0aGlzIHJlcXVlc3QuCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19wcmVwICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY5OGU5MQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhX2FjY2Vzcy5oIDE0MTcwIDIwMDctMDQtMjkgMDA6MTI6MzJaIHZhcnVuX2MkCisgKi8KKyNpZm5kZWYgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfREFUQV9BQ0NFU1NfSAorI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9EQVRBX0FDQ0VTU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogSVAtTUlCOjppcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpcyBzdWJpZCAzNiBvZiBpcC4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuNC4zNiwgbGVuZ3RoOiA4CisgICAgICovCisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0X2RhdGEKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWcpOworCisKKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FjaGUgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZSk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXJfcHRyKTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKworI2RlZmluZSBNQVhfTElORV9TSVpFIDI1NgorICAgIGludCAgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dfcHJlcChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9EQVRBX0FDQ0VTU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9lbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3OWVjODgKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZW51bXMuaApAQCAtMCwwICsxLDM5IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtZW51bXMubTJjIDEyNTI2IDIwMDUtMDctMTUgMjI6NDE6MTZaIHJzdG9yeSAkCisgKgorICogJElkOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2VudW1zLmggMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworI2lmbmRlZiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9FTlVNU19ICisjZGVmaW5lIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0VOVU1TX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyoKKyAgICAgKiBOT1RFUyBvbiBlbnVtcworICAgICAqID09PT09PT09PT09PT09CisgICAgICoKKyAgICAgKiBWYWx1ZSBNYXBwaW5nCisgICAgICogLS0tLS0tLS0tLS0tLQorICAgICAqIElmIHRoZSB2YWx1ZXMgZm9yIHlvdXIgZGF0YSB0eXBlIGRvbid0IGV4YWN0bHkgbWF0Y2ggdGhlCisgICAgICogcG9zc2libGUgdmFsdWVzIGRlZmluZWQgYnkgdGhlIG1pYiwgeW91IHNob3VsZCBtYXAgdGhlbQorICAgICAqIGJlbG93LiBGb3IgZXhhbXBsZSwgYSBib29sZWFuIGZsYWcgKDEvMCkgaXMgdXN1YWxseSByZXByZXNlbnRlZAorICAgICAqIGFzIGEgVHJ1dGhWYWx1ZSBpbiBhIE1JQiwgd2hpY2ggbWFwcyB0byB0aGUgdmFsdWVzICgxLzIpLgorICAgICAqCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBlbnVtIGRlZmluaXRpb25zIGZvciB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0VOVU1TX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDc2OWFkCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5jCkBAIC0wLDAgKzEsMTEyNCBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTU4OTkgJCBvZiAkIAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuYyAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlLmgiCisKKworI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CisKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIElQLU1JQjo6aXB2NlNjb3BlWm9uZUluZGV4VGFibGUgaXMgc3ViaWQgMzYgb2YgaXAuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS40LjM2LCBsZW5ndGg6IDgKKyAqLwordHlwZWRlZiBzdHJ1Y3QgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eF9zIHsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXI7CisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlOworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqdXNlcl9jdHg7CisKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIHRibF9pbmZvOworCisgICAgbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tZXRob2RzIGFjY2Vzc19tdWx0aXBsZXhlcjsKKworfSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4OworCitzdGF0aWMgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eAorICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQKKyhpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bgorKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpOworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpOworc3RhdGljIHZvaWQKK19jYWNoZV9mcmVlKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqbWFnaWMpOworCisKK25ldHNubXBfY29udGFpbmVyICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKK30KKworaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbl9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4OworfQorCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX3NldAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICpvbGQgPQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgudXNlcl9jdHg7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOworICAgIHJldHVybiBvbGQ7Cit9CisKK2ludAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX3NpemUodm9pZCkKK3sKKyAgICByZXR1cm4gQ09OVEFJTkVSX1NJWkUoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNvbnRhaW5lcik7Cit9CisKKy8qCisgKiBtZmQgbXVsdGlwbGV4ZXIgbW9kZXMKKyAqLworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wb3N0X3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlczsKKy8qKgorICogQGludGVybmFsCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAKKyAqICAgIChEZWZpbmUgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkKQorICovCit2b2lkCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogcmVnX3B0ciwgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5hY2Nlc3NfbXVsdGlwbGV4ZXI7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGJsX2luZm8gPQorICAgICAgICAmaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnRibF9pbmZvOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlcjsKKyAgICBpbnQgICAgICAgICAgICAgbWZkX21vZGVzID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UiLCAiY2FsbGVkXG4iKSk7CisKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzYXZlIGludGVyZmFjZSBjb250ZXh0IGZvciBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICAgICAqLworICAgIC8qCisgICAgICogU2V0dGluZyB1cCB0aGUgdGFibGUncyBkZWZpbml0aW9uCisgICAgICovCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGJsX2luZm8sIEFTTl9JTlRFR0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiogaW5kZXg6IGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIC8qCisgICAgICogRGVmaW5lIHRoZSBtaW5pbXVtIGFuZCBtYXhpbXVtIGFjY2Vzc2libGUgY29sdW1ucy4gIFRoaXMKKyAgICAgKiBvcHRpbWl6ZXMgcmV0cml2YWwuIAorICAgICAqLworICAgIHRibF9pbmZvLT5taW5fY29sdW1uID0gSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfTUlOX0NPTDsKKyAgICB0YmxfaW5mby0+bWF4X2NvbHVtbiA9IElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX01BWF9DT0w7CisKKyAgICAvKgorICAgICAqIHNhdmUgdXNlcnMgY29udGV4dAorICAgICAqLworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC51c2VyX2N0eCA9IHJlZ19wdHI7CisKKyAgICAvKgorICAgICAqIGNhbGwgZGF0YSBhY2Nlc3MgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luaXRfZGF0YShyZWdfcHRyKTsKKworICAgIC8qCisgICAgICogc2V0IHVwIHRoZSBjb250YWluZXIKKyAgICAgKi8KKyAgICBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQKKyAgICAgICAgKCZpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5jb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBpbml0aWFsaXplIGNvbnRhaW5lciBmb3IgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyoKKyAgICAgKiBhY2Nlc3NfbXVsdGlwbGV4ZXI6IFJFUVVJUkVEIHdyYXBwZXIgZm9yIGdldCByZXF1ZXN0IGhhbmRsaW5nCisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5vYmplY3RfbG9va3VwID0KKyAgICAgICAgX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9CisgICAgICAgIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wcmVfcmVxdWVzdCA9CisgICAgICAgIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3Q7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT5wb3N0X3JlcXVlc3QgPQorICAgICAgICBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIENyZWF0ZSBhIHJlZ2lzdHJhdGlvbiwgc2F2ZSBvdXIgcmVnIGRhdGEsIHJlZ2lzdGVyIHRhYmxlLgorICAgICAqLworICAgIERFQlVHTVNHVEwoKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZTppbml0X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwKKyAgICAgICAgICAgICAgICAiUmVnaXN0ZXJpbmcgaXB2NlNjb3BlWm9uZUluZGV4VGFibGUgYXMgYSBtaWJzLWZvci1kdW1taWVzIHRhYmxlLlxuIikpOworICAgIGhhbmRsZXIgPQorICAgICAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX211bHRpcGxleGVyX2dldChhY2Nlc3NfbXVsdGlwbGV4ZXIpOworICAgIHJlZ2luZm8gPQorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZSgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX29pZF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9CQUJZX1NURVAgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJlZ2luZm8tPm15X3JlZ192b2lkID0gJmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eDsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBzZXQgdXAgYmFieSBzdGVwcyBoYW5kbGVyLCBjcmVhdGUgaXQgYW5kIGluamVjdCBpdAorICAgICAqLworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfT0JKRUNUX0xPT0tVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5zZXRfdmFsdWVzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1NFVF9WQUxVRVM7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9JUlJFVkVSU0lCTEVfQ09NTUlUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX09CSkVDVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnByZV9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BSRV9SRVFVRVNUOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9QT1NUX1JFUVVFU1Q7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fU0VUVVA7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1VORE9fQ0xFQU5VUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRTOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cm93X2NyZWF0aW9uKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1JPV19DUkVBVEU7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29uc2lzdGVuY3lfY2hlY2tzKQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NIRUNLX0NPTlNJU1RFTkNZOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPmNvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jb21taXQpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DT01NSVQ7CisKKyAgICBoYW5kbGVyID0gbmV0c25tcF9iYWJ5X3N0ZXBzX2hhbmRsZXJfZ2V0KG1mZF9tb2Rlcyk7CisgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvLCBoYW5kbGVyKTsKKworICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3Qgcm93X21lcmdlIGhlbHBlciB3aXRoIHByZWZpeCByb290b2lkX2xlbiArIDIgKGVudHJ5LmNvbCkKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9nZXRfcm93X21lcmdlX2hhbmRsZXIocmVnaW5mby0+cm9vdG9pZF9sZW4gKyAyKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjb250YWluZXJfdGFibGUgaGVscGVyCisgICAgICovCisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0KHRibF9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgCisgICAgaWYgKE5VTEwgIT0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LmNhY2hlKSB7CisgICAgICAgIGhhbmRsZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pZl9jdHguY2FjaGUpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGFibGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRibF9pbmZvKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIFNodXRkb3duIHRoZSB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZQorICovCit2b2lkCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfc2h1dGRvd25faW50ZXJmYWNlCisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIHJlZ19wdHIpCit7CisgICAgLyoKKyAgICAgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyCisgICAgICovCisgICAgX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bgorICAgICAgICAoJmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eCk7Cit9CisKK3ZvaWQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC50YmxfaW5mby52YWxpZF9jb2x1bW5zID0gdmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBjb252ZXJ0IHRoZSBpbmRleCBjb21wb25lbnQgc3RvcmVkIGluIHRoZSBjb250ZXh0IHRvIGFuIG9pZAorICovCitpbnQKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhJZkluZGV4KDEpL0ludGVyZmFjZUluZGV4L0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvYS93L2UvUi9kL0gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXg7CisKKyAgICAvKgorICAgICAqIHNldCB1cCB2YXJiaW5kcworICAgICAqLworICAgIG1lbXNldCgmdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgsIDB4MDAsCisgICAgICAgICAgIHNpemVvZih2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCkpOworICAgIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LnR5cGUgPSBBU05fSU5URUdFUjsKKworICAgIC8qCisgICAgICogY2hhaW4gdGVtcCBpbmRleCB2YXJiaW5kcyB0b2dldGhlcgorICAgICAqLworICAgIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF90b19vaWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgoMSkvSW50ZXJmYWNlSW5kZXgvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9hL3cvZS9SL2QvSCAKKyAgICAgKi8KKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgbWliX2lkeC0+aXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmlwdjZTY29wZVpvbmVJbmRleElmSW5kZXgpKTsKKworCisgICAgZXJyID0gYnVpbGRfb2lkX25vYWxsb2Mob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLCAmb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsICZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCk7CisgICAgaWYgKGVycikKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yICVkIGNvbnZlcnRpbmcgaW5kZXggdG8gb2lkXG4iLCBlcnIpOworCisgICAgLyoKKyAgICAgKiBwYXJzaW5nIG1heSBoYXZlIGFsbG9jYXRlZCBtZW1vcnkuIGZyZWUgaXQuCisgICAgICovCisgICAgc25tcF9yZXNldF92YXJfYnVmZmVycygmdmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfdG9fb2lkICovCisKKy8qKgorICogZXh0cmFjdCBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSBpbmRleGVzIGZyb20gYSBuZXRzbm1wX2luZGV4CisgKgorICogQHJldHZhbCBTTk1QX0VSUl9OT0VSUk9SICA6IG5vIGVycm9yCisgKiBAcmV0dmFsIFNOTVBfRVJSX0dFTkVSUiAgIDogZXJyb3IKKyAqLworaW50CitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX21pYl9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KQoreworICAgIGludCAgICAgICAgICAgICBlcnIgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgLyoKKyAgICAgKiB0ZW1wIHN0b3JhZ2UgZm9yIHBhcnNpbmcgaW5kZXhlcworICAgICAqLworICAgIC8qCisgICAgICogaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCgxKS9JbnRlcmZhY2VJbmRleC9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL2Evdy9lL1IvZC9ICisgICAgICovCisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0IHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LCAweDAwLAorICAgICAgICAgICBzaXplb2YodmFyX2lwdjZTY29wZVpvbmVJbmRleElmSW5kZXgpKTsKKyAgICB2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfZnJvbV9vaWQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIHBhcnNlIHRoZSBvaWQgaW50byB0aGUgaW5kaXZpZHVhbCBpbmRleCBjb21wb25lbnRzCisgICAgICovCisgICAgZXJyID0gcGFyc2Vfb2lkX2luZGV4ZXMob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCk7CisgICAgaWYgKGVyciA9PSBTTk1QX0VSUl9OT0VSUk9SKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIGNvcHkgb3V0IHZhbHVlcworICAgICAgICAgKi8KKyAgICAgICAgbWliX2lkeC0+aXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCA9CisgICAgICAgICAgICAqKChsb25nICopIHZhcl9pcHY2U2NvcGVab25lSW5kZXhJZkluZGV4LnZhbC5zdHJpbmcpOworCisKKyAgICB9CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfaXB2NlNjb3BlWm9uZUluZGV4SWZJbmRleCk7CisKKyAgICByZXR1cm4gZXJyOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF9mcm9tX29pZCAqLworCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBAaW50ZXJuYWwKKyAqIGFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4CisgKi8KK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKgoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9kYXRhICpkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqdXNlcl9pbml0X2N0eCkKK3sKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4KTsKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6aXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkbid0IGFsbG9jYXRlIG1lbW9yeSBmb3IgYSAiCisgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChOVUxMICE9IGRhdGEpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiB0cmFjayBpZiB3ZSBnb3QgZGF0YSBmcm9tIHVzZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzIHw9IE1GRF9ST1dfREFUQV9GUk9NX1VTRVI7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhID0gZGF0YTsKKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09CisgICAgICAgICAgICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEgPQorICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9kYXRhKCkpKSB7CisgICAgICAgICAgICBTTk1QX0ZSRUUocm93cmVxX2N0eCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzID0gcm93cmVxX2N0eC0+b2lkX3RtcDsKKworICAgIHJvd3JlcV9jdHgtPmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2RhdGFfbGlzdCA9IE5VTEw7CisKKyAgICAvKgorICAgICAqIGlmIHdlIGFsbG9jYXRlZCBkYXRhLCBjYWxsIGluaXQgcm91dGluZQorICAgICAqLworICAgIGlmICghKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKSB7CisgICAgICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0KKyAgICAgICAgICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHhfaW5pdChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaW5pdF9jdHgpKSB7CisgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgICAgICByb3dyZXFfY3R4ID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiByb3dyZXFfY3R4OworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4ICovCisKKy8qCisgKiBAaW50ZXJuYWwKKyAqIHJlbGVhc2UgcmVzb3VyY2VzIGZvciBhIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAqLwordm9pZAoraXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4CisgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKHJvd3JlcV9jdHgpOworICAgIC8qCisgICAgICogZm9yIG5vbi10cmFuc2llbnQgZGF0YSwgZG9uJ3QgZnJlZSBkYXRhIHdlIGdvdCBmcm9tIHRoZSB1c2VyCisgICAgICovCisgICAgaWYgKChyb3dyZXFfY3R4LT5kYXRhKSAmJgorICAgICAgICAhKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfREFUQV9GUk9NX1VTRVIpKQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+ZGF0YSk7CisKKworICAgIC8qCisgICAgICogZnJlZSBpbmRleCBvaWQgcG9pbnRlcgorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMgIT0gcm93cmVxX2N0eC0+b2lkX3RtcCkKKyAgICAgICAgZnJlZShyb3dyZXFfY3R4LT5vaWRfaWR4Lm9pZHMpOworCisgICAgU05NUF9GUkVFKHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHggKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19maXJzdChyZWdpbmZvLCBhZ3RyZXFfaW5mbykpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wcmVfcmVxdWVzdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImlwdjZTY29wZVpvbmVJbmRleFRhYmxlIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcHJlX3JlcXVlc3RcbiIsIHJjKSk7CisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3ByZV9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpbnQKK19tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKyAgICBpbnQgICAgICAgICAgICAgcmMsIHBhY2tldF9yYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcmVsZWFzZSByb3cgY29udGV4dCwgaWYgZGVsZXRlZAorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4ICYmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RFTEVURUQpKQorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIHdhaXQgZm9yIGxhc3QgY2FsbCBiZWZvcmUgY2FsbGluZyB1c2VyCisgICAgICovCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2xhc3QocmVnaW5mbywgYWd0cmVxX2luZm8pKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsCisgICAgICAgICAgICAgICAgICAgICJ3YWl0aW5nIGZvciBsYXN0IHBvc3RfcmVxdWVzdFxuIikpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisKKyAgICBwYWNrZXRfcmMgPSBuZXRzbm1wX2NoZWNrX2FsbF9yZXF1ZXN0c19lcnJvcihhZ3RyZXFfaW5mby0+YXNwLCAwKTsKKyAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Bvc3RfcmVxdWVzdAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaWZfY3R4LnVzZXJfY3R4LCBwYWNrZXRfcmMpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAvKgorICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAqLworICAgICAgICBERUJVR01TR1RMKCgiaXB2NlNjb3BlWm9uZUluZGV4VGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9wb3N0X3JlcXVlc3RcbiIsIHJjKSk7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcG9zdF9yZXF1ZXN0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiB3cmFwcGVyCisgKi8KK3N0YXRpYyBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKK19tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2Zyb21faW5kZXgobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyY19wdHIpCit7CisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eDsKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggbWliX2lkeDsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfZnJvbV9pbmRleCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJjX3B0cikKKyAgICAgICAgcmNfcHRyID0gJnJjOworICAgICpyY19wdHIgPSBNRkRfU1VDQ0VTUzsKKworICAgIG1lbXNldCgmbWliX2lkeCwgMHgwLCBzaXplb2YobWliX2lkeCkpOworCisgICAgLyoKKyAgICAgKiB0cnkgdG8gcGFyc2Ugb2lkCisgICAgICovCisgICAgKnJjX3B0ciA9IGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2luZGV4X2Zyb21fb2lkKG9pZF9pZHgsICZtaWJfaWR4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gKnJjX3B0cikgeworICAgICAgICBERUJVR01TR1QoKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZSIsICJlcnJvciBwYXJzaW5nIGluZGV4XG4iKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qCisgICAgICogYWxsb2NhdGUgbmV3IGNvbnRleHQKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4ID0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChOVUxMLCBOVUxMKTsKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgICpyY19wdHIgPSBNRkRfRVJST1I7CisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgIC8qIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworICAgIH0KKworICAgIG1lbWNweSgmcm93cmVxX2N0eC0+dGJsX2lkeCwgJm1pYl9pZHgsIHNpemVvZihtaWJfaWR4KSk7CisKKworICAgIC8qCisgICAgICogY29weSBpbmRleGVzCisgICAgICovCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5sZW4gPSBvaWRfaWR4LT5sZW47CisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcywgb2lkX2lkeC0+b2lkcywKKyAgICAgICAgICAgb2lkX2lkeC0+bGVuICogc2l6ZW9mKG9pZCkpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2Zyb21faW5kZXggKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vYmplY3RfbG9va3VwIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBnZXQgb3VyIGNvbnRleHQgZnJvbSBtZmQKKyAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICppZl9jdHggPQorICAgICAqICAgICAgICAgICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2VfY3R4ICopcmVnaW5mby0+bXlfcmVnX3ZvaWQ7CisgICAgICovCisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KSB7CisgICAgICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YmxyZXFfaW5mbzsKKyAgICAgICAgbmV0c25tcF9pbmRleCAgIG9pZF9pZHg7CisKKyAgICAgICAgdGJscmVxX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRibHJlcV9pbmZvKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicmVxdWVzdCBoYWQgbm8gdGFibGUgaW5mb1xuIik7CisgICAgICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogdHJ5IGNyZWF0ZSByb3dyZXEKKyAgICAgICAgICovCisgICAgICAgIG9pZF9pZHgub2lkcyA9IHRibHJlcV9pbmZvLT5pbmRleF9vaWQ7CisgICAgICAgIG9pZF9pZHgubGVuID0gdGJscmVxX2luZm8tPmluZGV4X29pZF9sZW47CisKKyAgICAgICAgcm93cmVxX2N0eCA9CisgICAgICAgICAgICBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9mcm9tX2luZGV4KCZvaWRfaWR4LCAmcmMpOworICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgPT0gcmMpIHsKKyAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19DUkVBVEVEOworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIGFkZCByb3dyZXFfY3R4IHRvIHJlcXVlc3QgZGF0YSBsaXN0cworICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0KHJlcXVlc3RzLCAobmV0c25tcF9pbmRleCAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgcmMpOworICAgIGVsc2UKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93X3ByZXAocm93cmVxX2N0eCk7CisKKyAgICByZXR1cm4gU05NUF9WQUxJREFURV9FUlIocmMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX29iamVjdF9sb29rdXAgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogR0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvKgorICogQGludGVybmFsCisgKiBSZXRyaWV2ZSB0aGUgdmFsdWUgZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4oaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9nZXRfY29sdW1uIiwgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWwoMikvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWExJTktMT0NBTDoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhMaW5rTG9jYWxfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleDMoMykvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWDM6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4M19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleEFkbWluTG9jYWwoNCkvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEFETUlOTE9DQUw6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4QWRtaW5Mb2NhbF9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbCg1KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYU0lURUxPQ0FMOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleFNpdGVMb2NhbF9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4Nig2KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYNjoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXg2X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4Nyg3KS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYNzoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXg3X2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4T3JnYW5pemF0aW9uTG9jYWwoOCkvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWE9SR0FOSVpBVElPTkxPQ0FMOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleE9yZ2FuaXphdGlvbkxvY2FsX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXg5KDkpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg5OgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleDlfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhBKDEwKS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQToKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhBX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaXB2NlNjb3BlWm9uZUluZGV4QigxMSkvSW5ldFpvbmVJbmRleC9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL0ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEI6CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fVU5TSUdORUQ7CisgICAgICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4Ql9nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlwdjZTY29wZVpvbmVJbmRleEMoMTIpL0luZXRab25lSW5kZXgvQVNOX1VOU0lHTkVEL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9IIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhDOgorICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX1VOU0lHTkVEOworICAgICAgICByYyA9IGlwdjZTY29wZVpvbmVJbmRleENfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBpcHY2U2NvcGVab25lSW5kZXhEKDEzKS9JbmV0Wm9uZUluZGV4L0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvSCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYRDoKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9VTlNJR05FRDsKKyAgICAgICAgcmMgPSBpcHY2U2NvcGVab25lSW5kZXhEX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBpZiAoSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfTUlOX0NPTCA8PSBjb2x1bW4KKyAgICAgICAgICAgICYmIGNvbHVtbiA8PSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NQVhfQ09MKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X21mZF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9nZXRfY29sdW1uIiwgImFzc3VtZSBjb2x1bW4gJWQgaXMgcmVzZXJ2ZWRcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmMgPSBNRkRfU0tJUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4gKi8KKworaW50CitfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICB1X2NoYXIgICAgICAgICAqb2xkX3N0cmluZzsKKyAgICB2b2lkICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spICh2b2lkICopOworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDppcHY2U2NvcGVab25lSW5kZXhUYWJsZTpfbWZkX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF92YWx1ZXMiLCAiY2FsbGVkXG4iKSk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGZvciAoOyByZXF1ZXN0czsgcmVxdWVzdHMgPSByZXF1ZXN0cy0+bmV4dCkgeworICAgICAgICAvKgorICAgICAgICAgKiBzYXZlIG9sZCBwb2ludGVyLCBzbyB3ZSBjYW4gZnJlZSBpdCBpZiByZXBsYWNlZAorICAgICAgICAgKi8KKyAgICAgICAgb2xkX3N0cmluZyA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmc7CisgICAgICAgIGRhdGFGcmVlSG9vayA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmRhdGFGcmVlSG9vazsKKyAgICAgICAgaWYgKE5VTEwgPT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZyA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZjsKKyAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gPQorICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpOworICAgICAgICB9IGVsc2UgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZiA9PQorICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuICE9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZikpCisgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgICAgIHNpemVvZihyZXF1ZXN0cy0+cmVxdWVzdHZiLT5idWYpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZ2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAqLworICAgICAgICB0cmkgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJjID0gX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2dldF9jb2x1bW4ocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaS0+Y29sbnVtKTsKKyAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICBpZiAoTUZEX1NLSVAgPT0gcmMpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT50eXBlID0gU05NUF9OT1NVQ0hJTlNUQU5DRTsKKyAgICAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTlVMTCB2YXJiaW5kIGRhdGEgcG9pbnRlciFcbiIpOworICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9HRU5FUlI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHJjKQorICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBpZiB0aGUgYnVmZmVyIHdhc24ndCB1c2VkIHByZXZpb3VzbHkgZm9yIHRoZSBvbGQgZGF0YSAoaS5lLiBpdAorICAgICAgICAgKiB3YXMgYWxsY29hdGVkIG1lbW9yeSkgIGFuZCB0aGUgZ2V0IHJvdXRpbmUgcmVwbGFjZWQgdGhlIHBvaW50ZXIsCisgICAgICAgICAqIHdlIG5lZWQgdG8gZnJlZSB0aGUgcHJldmlvdXMgcG9pbnRlci4KKyAgICAgICAgICovCisgICAgICAgIGlmIChvbGRfc3RyaW5nICYmIChvbGRfc3RyaW5nICE9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1ZikgJiYKKyAgICAgICAgICAgIChyZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nICE9IG9sZF9zdHJpbmcpKSB7CisgICAgICAgICAgICBpZiAoZGF0YUZyZWVIb29rKQorICAgICAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSAob2xkX3N0cmluZyk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZnJlZShvbGRfc3RyaW5nKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZ2V0X3ZhbHVlcyAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIFNFVCBwcm9jZXNzaW5nCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogU0VUIFBST0NFU1NJTkcgTk9UIEFQUExJQ0FCTEUgKHBlciBNSUIgb3IgdXNlciBzZXR0aW5nKQorICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2l0ZW1fZnJlZShpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOl9jb250YWluZXJfaXRlbV9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByb3dyZXFfY3R4KQorICAgICAgICByZXR1cm47CisKKyAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfaXRlbV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwdjZTY29wZVpvbmVJbmRleFRhYmxlOl9jb250YWluZXJfZnJlZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNvbnRhaW5lciBpbiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2ZyZWUoY29udGFpbmVyKTsKKworICAgIC8qCisgICAgICogZnJlZSBhbGwgaXRlbXMuIGluZWZmaWNpZW50LCBidXQgZWFzeS4KKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMgKikgX2NvbnRhaW5lcl9pdGVtX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgIE5VTEwpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGluaXRpYWxpemUgdGhlIGNvbnRhaW5lciB3aXRoIGZ1bmN0aW9ucyBvciB3cmFwcGVycworICovCit2b2lkCitfaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQKKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBjb250YWluZXIgaW5pdAorICAgICAqLworICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRfc2l6ZSk7CisKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgaXBTY29wZVpvbmVJbmRleFRhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmX2N0eC0+Y2FjaGUtPmZsYWdzID0gTkVUU05NUF9DQUNIRV9ET05UX0lOVkFMSURBVEVfT05fU0VUOworCisgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKKyAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZAorICAgICAgICAgICAgKCJpcHY2U2NvcGVab25lSW5kZXhUYWJsZTp0YWJsZV9jb250YWluZXIiKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGluICIKKyAgICAgICAgICAgICAgICAgImlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoTlVMTCAhPSBpZl9jdHgtPmNhY2hlKQorICAgICAgICBpZl9jdHgtPmNhY2hlLT5tYWdpYyA9ICh2b2lkICopIGlmX2N0eC0+Y29udGFpbmVyOworCisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9pbml0ICovCisKKy8qKgorICogQGludGVybmFsCisgKiBzaHV0ZG93biB0aGUgY29udGFpbmVyIHdpdGggZnVuY3Rpb25zIG9yIHdyYXBwZXJzCisgKi8KK3ZvaWQKK19pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24KKyAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXB2NlNjb3BlWm9uZUluZGV4VGFibGU6X2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihpZl9jdHgtPmNvbnRhaW5lcik7CisKKyAgICBfY29udGFpbmVyX2ZyZWUoaWZfY3R4LT5jb250YWluZXIpOworCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2h1dGRvd24gKi8KKworCitpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yb3dyZXFfY3R4ICoKK2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAorICAgIChpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KQoreworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgb2lkICAgICAgICAgICAgIG9pZF90bXBbTUFYX09JRF9MRU5dOworICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIC8qCisgICAgICogc2V0IHVwIHN0b3JhZ2UgZm9yIE9JRAorICAgICAqLworICAgIG9pZF9pZHgub2lkcyA9IG9pZF90bXA7CisgICAgb2lkX2lkeC5sZW4gPSBzaXplb2Yob2lkX3RtcCkgLyBzaXplb2Yob2lkKTsKKworICAgIC8qCisgICAgICogY29udmVydAorICAgICAqLworICAgIHJjID0gaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfaW5kZXhfdG9fb2lkKCZvaWRfaWR4LCBtaWJfaWR4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcm93cmVxX2N0eCA9CisgICAgICAgIENPTlRBSU5FUl9GSU5EKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2lmX2N0eC5jb250YWluZXIsICZvaWRfaWR4KTsKKworICAgIHJldHVybiByb3dyZXFfY3R4OworfQorCitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6aXBTY29wZVpvbmVJbmRleFRhYmxlOl9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGZvciBpcFNjb3BlWm9uZUluZGV4VGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgLyoqIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmb3IgYW4gaW52YWxpZCBvciBleHBpcmVkIGNhY2hlICovCisgICAgbmV0c25tcF9hc3NlcnQoKDAgPT0gY2FjaGUtPnZhbGlkKSB8fCAoMSA9PSBjYWNoZS0+ZXhwaXJlZCkpOworCisgICAgLyoKKyAgICAgKiBjYWxsIHVzZXIgY29kZQorICAgICAqLworICAgIHJldHVybiBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfbG9hZCgobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFnaWMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmlwU2NvcGVab25lSW5kZXhUYWJsZTpfY2FjaGVfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiaW52YWxpZCBjYWNoZSBpbiBpcFNjb3BlWm9uZUluZGV4VGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9mcmVlICovCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCBiL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmMzMTA5Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvaXAtbWliL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlL2lwdjZTY29wZVpvbmVJbmRleFRhYmxlX2ludGVyZmFjZS5oCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE1ODk5ICQgb2YgJAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbnRlcmZhY2UuaCAxNDE3MCAyMDA3LTA0LTI5IDAwOjEyOjMyWiB2YXJ1bl9jJAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSU5URVJGQUNFX0gKKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfSU5URVJGQUNFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyNpbmNsdWRlICJpcHY2U2NvcGVab25lSW5kZXhUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZQorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY3R4KTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAqaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uX3NldAorICAgICAgICAoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfcmVnaXN0cmF0aW9uICogbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfZ2V0KHZvaWQpOworICAgIGludCAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9jb250YWluZXJfc2l6ZSh2b2lkKTsKKworICAgIGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgKmlwdjZTY29wZVpvbmVJbmRleFRhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfZGF0YSAqLCB2b2lkICopOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgKKyAgICAgICAgKGlwdjZTY29wZVpvbmVJbmRleFRhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF90b19vaWQobmV0c25tcF9pbmRleCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBpcHY2U2NvcGVab25lSW5kZXhUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CisKKyAgICAvKgorICAgICAqIGFjY2VzcyB0byBjZXJ0YWluIGludGVybmFscy4gdXNlIHdpdGggY2F1dGlvbiEKKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAKKyAgICAgICAgaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfdmFsaWRfY29sdW1uc19zZXQobmV0c25tcF9jb2x1bW5faW5mbyAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX0lOVEVSRkFDRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL2lwLW1pYi9pcHY2U2NvcGVab25lSW5kZXhUYWJsZS9pcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmggYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNGRhYTIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9pcC1taWIvaXB2NlNjb3BlWm9uZUluZGV4VGFibGUvaXB2NlNjb3BlWm9uZUluZGV4VGFibGVfb2lkcy5oCkBAIC0wLDAgKzEsNTUgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogIDogZ2VuZXJpYy10YWJsZS1vaWRzLm0yYyAxMjg1NSAyMDA1LTA5LTI3IDE1OjU2OjA4WiByc3RvcnkgJAorICoKKyAqICRJZDppcHY2U2NvcGVab25lSW5kZXhUYWJsZV9vaWRzLmggMTQxNzAgMjAwNy0wNC0yOSAwMDoxMjozMlogdmFydW5fYyQKKyAqLworI2lmbmRlZiBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9PSURTX0gKKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfT0lEU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBpcHY2U2NvcGVab25lSW5kZXhUYWJsZSAKKyAgICAgKi8KKyNkZWZpbmUgSVBWNlNDT1BFWk9ORUlOREVYVEFCTEVfT0lEICAgICAgICAgICAgICAxLDMsNiwxLDIsMSw0LDM2CisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWElGSU5ERVggICAgICAgICAxCisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWExJTktMT0NBTCAgICAgICAgIDIKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYMyAgICAgICAgIDMKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQURNSU5MT0NBTCAgICAgICAgIDQKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYU0lURUxPQ0FMICAgICAgICAgNQorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg2ICAgICAgICAgNgorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVg3ICAgICAgICAgNworCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhPUkdBTklaQVRJT05MT0NBTCAgICAgICAgIDgKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYOSAgICAgICAgIDkKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYQSAgICAgICAgIDEwCisKKyNkZWZpbmUgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEIgICAgICAgICAxMQorCisjZGVmaW5lIENPTFVNTl9JUFY2U0NPUEVaT05FSU5ERVhDICAgICAgICAgMTIKKworI2RlZmluZSBDT0xVTU5fSVBWNlNDT1BFWk9ORUlOREVYRCAgICAgICAgIDEzCisKKworI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NSU5fQ09MICAgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWExJTktMT0NBTAorI2RlZmluZSBJUFY2U0NPUEVaT05FSU5ERVhUQUJMRV9NQVhfQ09MICAgQ09MVU1OX0lQVjZTQ09QRVpPTkVJTkRFWEQKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIElQVjZTQ09QRVpPTkVJTkRFWFRBQkxFX09JRFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jIGIvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5jCmluZGV4IDZhM2I4MTIuLjNiOTE1YzYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuYworKysgYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmMKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlIDxrc3RhdC5oPgogI2luY2x1ZGUgPGVycm5vLmg+CiAjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CiAKICNpbmNsdWRlIDxzeXMvc29ja2lvLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgpAQCAtMTAzLDEyICsxMDQsMjcgQEAKICAgICB7TUlCX1RSQU5TTUlTU0lPTiwgMCwgKHZvaWQgKikgLTEsIDAsIDAsIDAsIDB9LAogICAgIHtNSUJfU05NUCwgMCwgKHZvaWQgKikgLTEsIDAsIDAsIDAsIDB9LAogI2lmZGVmIFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUCisjaWZkZWYgU09MQVJJU19IQVZFX1JGQzQyOTNfU1VQUE9SVAorICAgIHtNSUJfSVBfVFJBRkZJQ19TVEFUUywgMjAgKiBzaXplb2YobWliMl9pcElmU3RhdHNFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwKKyAgICAgMzAsIDAsIDB9LAorICAgIHtNSUJfSVA2LCAyMCAqIHNpemVvZihtaWIyX2lwSWZTdGF0c0VudHJ5X3QpLCAodm9pZCAqKS0xLCAwLCAzMCwgMCwgMH0sCisjZWxzZQorICAgIHtNSUJfSVA2LCAyMCAqIHNpemVvZihtaWIyX2lwdjZJZlN0YXRzRW50cnlfdCksICh2b2lkICopLTEsIDAsIDMwLCAwLCAwfSwKKyNlbmRpZgogICAgIHtNSUJfSVA2X0FERFIsIDIwICogc2l6ZW9mKG1pYjJfaXB2NkFkZHJFbnRyeV90KSwgKHZvaWQgKiktMSwgMCwgMzAsIDAsIDB9LAogICAgIHtNSUJfVENQNl9DT05OLCAxMDAwICogc2l6ZW9mKG1pYjJfdGNwNkNvbm5FbnRyeV90KSwgKHZvaWQgKikgLTEsIDAsIDMwLAogICAgICAwLCAwfSwKICAgICB7TUlCX1VEUDZfRU5EUE9JTlQsIDEwMDAgKiBzaXplb2YobWliMl91ZHA2RW50cnlfdCksICh2b2lkICopIC0xLCAwLCAzMCwKICAgICAgMCwgMH0sCiAjZW5kaWYKKyNpZmRlZiBNSUIyX1NDVFAKKyAgICB7TUlCX1NDVFAsIHNpemVvZihtaWIyX3NjdHBfdCksICh2b2lkICopLTEsIDAsIDYwLCAwLCAwfSwKKyAgICB7TUlCX1NDVFBfQ09OTiwgc2l6ZW9mKG1pYjJfc2N0cENvbm5FbnRyeV90KSwgKHZvaWQgKiktMSwgMCwgNjAsIDAsIDB9LAorICAgIHtNSUJfU0NUUF9DT05OX0xPQ0FMLCBzaXplb2YobWliMl9zY3RwQ29ubkxvY2FsRW50cnlfdCksICh2b2lkICopLTEsIDAsCisgICAgIDYwLCAwLCAwfSwKKyAgICB7TUlCX1NDVFBfQ09OTl9SRU1PVEUsIHNpemVvZihtaWIyX3NjdHBDb25uUmVtb3RlRW50cnlfdCksICh2b2lkICopLTEsIDAsCisgICAgIDYwLCAwLCAwfSwKKyNlbmRpZgogICAgIHswfSwKIH07CiAKQEAgLTEzMSwxMCArMTQ3LDIwIEBACiAgICAge01JQjJfVFJBTlNNSVNTSU9OLCAwLH0sCiAgICAge01JQjJfU05NUCwgMCx9LAogI2lmZGVmIFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUCisjaWZkZWYgU09MQVJJU19IQVZFX1JGQzQyOTNfU1VQUE9SVAorICAgIHtNSUIyX0lQLCBNSUIyX0lQX1RSQUZGSUNfU1RBVFN9LAorI2VuZGlmCisgICAge01JQjJfSVA2LCAwfSwKICAgICB7TUlCMl9JUDYsIE1JQjJfSVA2X0FERFJ9LAogICAgIHtNSUIyX1RDUDYsIE1JQjJfVENQNl9DT05OfSwKICAgICB7TUlCMl9VRFA2LCBNSUIyX1VEUDZfRU5UUll9LAogI2VuZGlmCisjaWZkZWYgTUlCMl9TQ1RQCisgICAge01JQjJfU0NUUCwgMH0sCisgICAge01JQjJfU0NUUCwgTUlCMl9TQ1RQX0NPTk59LAorICAgIHtNSUIyX1NDVFAsIE1JQjJfU0NUUF9DT05OX0xPQ0FMfSwKKyAgICB7TUlCMl9TQ1RQLCBNSUIyX1NDVFBfQ09OTl9SRU1PVEV9LAorI2VuZGlmCiAgICAgezB9LAogfTsKIApAQCAtMTQ5LDcgKzE3NSw3IEBACiAgICAgICAgICB2b2lkICpyZXNwLCBpbnQgKCpjb21wKSh2b2lkICosIHZvaWQgKiksIHZvaWQgKmFyZyk7CiAKIHN0YXRpYyBpbnQKLWdldG1pYihpbnQgZ3JvdXBuYW1lLCBpbnQgc3ViZ3JvdXBuYW1lLCB2b2lkICpzdGF0YnVmLCBzaXplX3Qgc2l6ZSwKK2dldG1pYihpbnQgZ3JvdXBuYW1lLCBpbnQgc3ViZ3JvdXBuYW1lLCB2b2lkICoqc3RhdGJ1Ziwgc2l6ZV90ICpzaXplLAogICAgICAgIHNpemVfdCBlbnRyeXNpemUsIHJlcV9lIHJlcV90eXBlLCB2b2lkICpyZXNwLCBzaXplX3QgKmxlbmd0aCwKICAgICAgICBpbnQgKCpjb21wKSh2b2lkICosIHZvaWQgKiksIHZvaWQgKmFyZyk7CiAKQEAgLTM0OCw3ICszNzQsOCBAQAogICAgIGtzdGF0X2N0bF90ICAgICprc2M7CiAgICAga3N0YXRfdCAgICAgICAgKmtzLCAqa3N0YXRfZGF0YTsKICAgICBrc3RhdF9uYW1lZF90ICAqZDsKLSAgICBzaXplX3QgICAgICAgICAgaSwgaW5zdGFuY2U7CisgICAgdWludF90ICAgICAgICAgIGk7CisgICAgaW50ICAgICAgICAgICAgIGluc3RhbmNlOwogICAgIGNoYXIgICAgICAgICAgICBtb2R1bGVfbmFtZVs2NF07CiAgICAgaW50ICAgICAgICAgICAgIHJldDsKICAgICB1X2xvbmdsb25nX3QgICAgdmFsOyAgICAvKiBUaGUgbGFyZ2VzdCB2YWx1ZSAqLwpAQCAtNjk4LDggKzcyNSw4IEBACiAJCSAgICAgICBjYWNoZXAtPmNhY2hlX3NpemUsIHJlcV90eXBlLAogCQkgICAgICAgKG1pYjJfaWZFbnRyeV90ICopICYgZXAsICZsZW5ndGgsIGNvbXAsIGFyZyk7CiAJfSBlbHNlIHsKLQkgICAgcmMgPSBnZXRtaWIobWliZ3IsIG1pYnRiLCBjYWNoZXAtPmNhY2hlX2FkZHIsCi0JCQljYWNoZXAtPmNhY2hlX3NpemUsIGVudHJ5c2l6ZSwgcmVxX3R5cGUsICZlcCwKKwkgICAgcmMgPSBnZXRtaWIobWliZ3IsIG1pYnRiLCAmKGNhY2hlcC0+Y2FjaGVfYWRkciksCisJCQkmKGNhY2hlcC0+Y2FjaGVfc2l6ZSksIGVudHJ5c2l6ZSwgcmVxX3R5cGUsICZlcCwKIAkJCSZsZW5ndGgsIGNvbXAsIGFyZyk7CiAJfQogCkBAIC04NDEsNyArODY4LDcgQEAKICAqLwogCiBzdGF0aWMgaW50Ci1nZXRtaWIoaW50IGdyb3VwbmFtZSwgaW50IHN1Ymdyb3VwbmFtZSwgdm9pZCAqc3RhdGJ1Ziwgc2l6ZV90IHNpemUsCitnZXRtaWIoaW50IGdyb3VwbmFtZSwgaW50IHN1Ymdyb3VwbmFtZSwgdm9pZCAqKnN0YXRidWYsIHNpemVfdCAqc2l6ZSwKICAgICAgICBzaXplX3QgZW50cnlzaXplLCByZXFfZSByZXFfdHlwZSwgdm9pZCAqcmVzcCwKICAgICAgICBzaXplX3QgKmxlbmd0aCwgaW50ICgqY29tcCkodm9pZCAqLCB2b2lkICopLCB2b2lkICphcmcpCiB7CkBAIC04NTMsNiArODgwLDcgQEAKICAgICBzdHJ1Y3QgVF9lcnJvcl9hY2sgKnRlYSA9IChzdHJ1Y3QgVF9lcnJvcl9hY2sgKikgYnVmOwogICAgIHN0cnVjdCBvcHRoZHIgICpyZXE7CiAgICAgZm91bmRfZSAgICAgICAgIHJlc3VsdCA9IEZPVU5EOworICAgIHNpemVfdCBvbGRzaXplOwogCiAgICAgREVCVUdNU0dUTCgoImtlcm5lbF9zdW5vczUiLCAiLi4uLi4uIGdldG1pYiAoJWQsICVkLCAuLi4pXG4iLAogCQlncm91cG5hbWUsIHN1Ymdyb3VwbmFtZSkpOwpAQCAtOTY2LDIzICs5OTQsNDIgQEAKIAkgKiByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGdldG1zZyBjYWxscwogCSAqLwogCi0Jc3RyYnVmLmJ1ZiA9IHN0YXRidWY7Ci0Jc3RyYnVmLm1heGxlbiA9IHNpemU7CisJc3RyYnVmLmJ1ZiA9ICpzdGF0YnVmOworCXN0cmJ1Zi5tYXhsZW4gPSAqc2l6ZTsKIAlzdHJidWYubGVuID0gMDsKIAlmbGFncyA9IDA7CiAJZG8gewogCSAgICByYyA9IGdldG1zZyhzZCwgTlVMTCwgJnN0cmJ1ZiwgJmZsYWdzKTsKIAkgICAgc3dpdGNoIChyYykgewogCSAgICBjYXNlIC0xOgotCQlyYyA9IC1FTk9TUjsKKwkJcmV0ID0gLUVOT1NSOworCQlzbm1wX3BlcnJvcigiZ2V0bXNnIik7CiAJCWdvdG8gUmV0dXJuOwogCiAJICAgIGRlZmF1bHQ6Ci0JCXJjID0gLUVOT0RBVEE7CisJCXNubXBfbG9nKExPR19FUlIsICJrZXJuZWxfc3Vub3M1L2dldG1pYjogZ2V0bXNnIHJldHVybmVkICVkXG4iLCByYyk7CisJCXJldCA9IC1FTk9EQVRBOwogCQlnb3RvIFJldHVybjsKIAogCSAgICBjYXNlIE1PUkVEQVRBOgorCQlERUJVR01TR1RMKCgia2VybmVsX3N1bm9zNSIsICIuLi4uLi4gZ2V0bWliIGluY3JlYXNlZCBidWZmZXIgc2l6ZVxuIikpOworCQlvbGRzaXplID0gKCBzdHJidWYuYnVmIC0gKGNoYXIgKikqc3RhdGJ1ZikgKyBzdHJidWYubGVuOworCQlzdHJidWYuYnVmID0gKGNoYXIgKilyZWFsbG9jKCpzdGF0YnVmLCBvbGRzaXplKzQwOTYpOworCQlpZihzdHJidWYuYnVmICE9IE5VTEwpIHsKKwkJICAgICpzdGF0YnVmID0gc3RyYnVmLmJ1ZjsKKwkJICAgICpzaXplID0gb2xkc2l6ZSArIDQwOTY7CisJCSAgICBzdHJidWYuYnVmID0gKGNoYXIgKikqc3RhdGJ1ZiArIG9sZHNpemU7CisJCSAgICBzdHJidWYubWF4bGVuID0gNDA5NjsKKwkJICAgIHJlc3VsdCA9IE5PVF9GT1VORDsKKwkJICAgIGJyZWFrOworCQl9CisJCXN0cmJ1Zi5idWYgPSAoY2hhciAqKSpzdGF0YnVmICsgKG9sZHNpemUgLSBzdHJidWYubGVuKTsKIAkgICAgY2FzZSAwOgorCQkvKiBmaXggYnVmZmVyIHRvIHJlYWwgc2l6ZSAmIHBvc2l0aW9uICovCisJCXN0cmJ1Zi5sZW4gKz0gc3RyYnVmLmJ1ZiAtIChjaGFyKikqc3RhdGJ1ZjsKKwkJc3RyYnVmLmJ1ZiA9ICpzdGF0YnVmOworCQlzdHJidWYubWF4bGVuID0gKnNpemU7CisKIAkJaWYgKHJlcV90eXBlID09IEdFVF9ORVhUICYmIHJlc3VsdCA9PSBORUVEX05FWFQpCiAJCSAgICAvKgogCQkgICAgICogRW5kIG9mIGJ1ZmZlciwgc28gIm5leHQiIGlzIHRoZSBmaXJzdCBpdGVtIGluIHRoZSBuZXh0CkBAIC05OTYsNiArMTA0Myw4IEBACiAJICAgIH0KIAl9IHdoaWxlIChyYyA9PSBNT1JFREFUQSAmJiByZXN1bHQgIT0gRk9VTkQpOwogCisJREVCVUdNU0dUTCgoImtlcm5lbF9zdW5vczUiLCAiLi4uLi4uIGdldG1pYiBidWZmZXIgc2l6ZSBpcyAlZFxuIiwgKnNpemUpKTsKKwogCWlmIChyZXN1bHQgPT0gRk9VTkQpIHsgICAgICAvKiBTZWFyY2ggaXMgc3VjY2Vzc2Z1bCAqLwogCSAgICBpZiAocmMgIT0gTU9SRURBVEEpIHsKIAkJcmV0ID0gMDsgICAgLyogRm91bmQgYW5kIG5vIG1vcmUgZGF0YSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oIGIvYWdlbnQvbWliZ3JvdXAva2VybmVsX3N1bm9zNS5oCmluZGV4IGNkZDIzNzUuLjBiZmZjYjkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL2tlcm5lbF9zdW5vczUuaAorKysgYi9hZ2VudC9taWJncm91cC9rZXJuZWxfc3Vub3M1LmgKQEAgLTcxLDEwICs3MSwyMCBAQAogICAgIE1JQl9UUkFOU01JU1NJT04gPSAxNCwKICAgICBNSUJfU05NUCA9IDE1LAogI2lmZGVmIFNPTEFSSVNfSEFWRV9JUFY2X01JQl9TVVBQT1JUCi0gICAgTUlCX0lQNl9BRERSID0gMTYsCisjaWZkZWYgU09MQVJJU19IQVZFX1JGQzQyOTNfU1VQUE9SVAorICAgIE1JQl9JUF9UUkFGRklDX1NUQVRTLAorI2VuZGlmCisgICAgTUlCX0lQNiwKKyAgICBNSUJfSVA2X0FERFIsCiAgICAgTUlCX1RDUDZfQ09OTiwKICAgICBNSUJfVURQNl9FTkRQT0lOVCwKICNlbmRpZgorI2lmZGVmIE1JQjJfU0NUUAorICAgIE1JQl9TQ1RQLAorICAgIE1JQl9TQ1RQX0NPTk4sCisgICAgTUlCX1NDVFBfQ09OTl9MT0NBTCwKKyAgICBNSUJfU0NUUF9DT05OX1JFTU9URSwKKyNlbmRpZgogICAgIE1JQkNBQ0hFX1NJWkUJCiB9IG1pYmdyb3VwX2U7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJLmggYi9hZ2VudC9taWJncm91cC9taWJJSS5oCmluZGV4IGM1NGQyMzMuLjFiMjEwNTcgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkuaApAQCAtNyw3ICs3LDcgQEAKIGNvbmZpZ19yZXF1aXJlKG1pYklJL2F0KQogY29uZmlnX3JlcXVpcmUobWliSUkvaWZUYWJsZSkKIGNvbmZpZ19yZXF1aXJlKG1pYklJL2lwKQotY29uZmlnX3JlcXVpcmUobWliSUkvc25tcF9taWIpCitjb25maWdfdmVyc2lvbl9yZXF1aXJlKChtaWJJSS9zbm1wX21pYiwgNS41LCBtaWJJSS9zbm1wX21pYl81XzUpKQogY29uZmlnX3JlcXVpcmUobWliSUkvdGNwKQogY29uZmlnX3JlcXVpcmUobWliSUkvaWNtcCkKIGNvbmZpZ19yZXF1aXJlKG1pYklJL3VkcCkKQEAgLTMwLDMgKzMwLDEwIEBACiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoaXAtbWliIGlwLWZvcndhcmQtbWliIHRjcC1taWIgdWRwLW1pYikKICNlbmRpZgorCisvKgorICogRm9yIFNvbGFyaXMsIGVuYWJsZSBhZGRpdGlvbmFsIHRhYmxlcyB3aGVuIGl0IGhhcyBleHRlbmRlZCBNSUIgc3VwcG9ydC4KKyAqLworI2lmIGRlZmluZWQoIHNvbGFyaXMyICkgJiYgZGVmaW5lZCggSEFWRV9NSUIyX0lQSUZTVEFUU0VOVFJZX1QgKQorY29uZmlnX3JlcXVpcmUoaXAtbWliL2lwU3lzdGVtU3RhdHNUYWJsZSBpcC1taWIvaXBBZGRyZXNzVGFibGUpCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9hdC5jCmluZGV4IDQ1YWI1MTYuLmViZTRhMDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2F0LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvYXQuYwpAQCAtMjUsNyArMjUsNyBAQAogI2lmIEhBVkVfU1RETElCX0gKICNpbmNsdWRlIDxzdGRsaWIuaD4KICNlbmRpZgotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCkBAIC0xNDYsOSArMTQ2LDEyIEBACiAgKiBpbmZvcm1hdGlvbiBhdCAKICAqLwogc3RydWN0IHZhcmlhYmxlMSBhdF92YXJpYWJsZXNbXSA9IHsKLSAgICB7QVRJRklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7MX19LAotICAgIHtBVFBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2F0RW50cnksIDEsIHsyfX0sCi0gICAge0FUTkVUQUREUkVTUywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7M319CisgICAge0FUSUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezF9fSwKKyAgICB7QVRQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7Mn19LAorICAgIHtBVE5FVEFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezN9fQogfTsKIAogLyoKQEAgLTMwNCw3ICszMDcsNyBAQAogCiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIGxvd2VzdCwgb2lkX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKICAgICAqbGVuZ3RoID0gb2lkX2xlbmd0aDsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBJUE1FRElBSUZJTkRFWDogICAgICAgLyogYWxzbyBBVElGSU5ERVggKi8KICAgICAgICAgKnZhcl9sZW4gPSBzaXplb2YgbG9uZ19yZXR1cm47CkBAIC01MTAsNyArNTEzLDcgQEAKIHN0YXRpYyBjaGFyICAgICpsaW0sICpydG5leHQ7CiBzdGF0aWMgY2hhciAgICAqYXQgPSAwOwogI2Vsc2UKLSNpZmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQKKyNpZmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiBzdGF0aWMgc3RydWN0IGFycGhkICphdCA9IDA7CiBzdGF0aWMgc3RydWN0IGFycHRhYiAqYXRfcHRyLCBhdF9lbnRyeTsKIHN0YXRpYyBzdHJ1Y3QgYXJwY29tIGF0X2NvbTsKQEAgLTU4Myw3ICs1ODYsNyBAQAogI2lmZGVmIEFSUFRBQl9TSVpFX1NZTUJPTAogICAgICAgICBhdXRvX25saXN0KEFSUFRBQl9TSVpFX1NZTUJPTCwgKGNoYXIgKikgJmFycHRhYl9zaXplLAogICAgICAgICAgICAgICAgICAgIHNpemVvZiBhcnB0YWJfc2l6ZSk7Ci0jaWZkZWYgU1RSVUNUX0FSUEhEX0hBU19BVF9ORVhUCisjaWZkZWYgSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVAogICAgICAgICBhdCA9IChzdHJ1Y3QgYXJwaGQgKikgbWFsbG9jKGFycHRhYl9zaXplICogc2l6ZW9mKHN0cnVjdCBhcnBoZCkpOwogI2Vsc2UKICAgICAgICAgYXQgPSAoc3RydWN0IGFycHRhYiAqKSBtYWxsb2MoYXJwdGFiX3NpemUgKiBzaXplb2Yoc3RydWN0IGFycHRhYikpOwpAQCAtNTkyLDcgKzU5NSw3IEBACiAgICAgICAgIHJldHVybjsKICNlbmRpZgogICAgIH0KLSNpZmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQKKyNpZmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAgICAgYXV0b19ubGlzdChBUlBUQUJfU1lNQk9MLCAoY2hhciAqKSBhdCwKICAgICAgICAgICAgICAgIGFycHRhYl9zaXplICogc2l6ZW9mKHN0cnVjdCBhcnBoZCkpOwogICAgIGF0X3B0ciA9IGF0WzBdLmF0X25leHQ7CkBAIC03NzksNyArNzgyLDcgQEAKICAgICByZWdpc3RlciBzdHJ1Y3QgYXJwdGFiICphdGFiOwogCiAgICAgd2hpbGUgKGFycHRhYl9jdXJyZW50IDwgYXJwdGFiX3NpemUpIHsKLSNpZmRlZiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQKKyNpZmRlZiBIQVZFX1NUUlVDVF9BUlBIRF9BVF9ORVhUCiAgICAgICAgIC8qCiAgICAgICAgICAqIFRoZSBhcnAgdGFibGUgaXMgYW4gYXJyYXkgb2YgbGlua2VkIGxpc3RzIG9mIGFycHRhYiBlbnRyaWVzLgogICAgICAgICAgKiBVbnVzZWQgc2xvdHMgaGF2ZSBwb2ludGVycyBiYWNrIHRvIHRoZSBhcnJheSBlbnRyeSBpdHNlbGYgCkBAIC04MDgsOSArODExLDkgQEAKICAgICAgICAgYXRfcHRyID0gYXRfZW50cnkuYXRfbmV4dDsKICAgICAgICAgYXRhYiA9ICZhdF9lbnRyeTsKICAgICAgICAgKmlmSW5kZXggPSBhdF9jb20uYWNfaWYuaWZfaW5kZXg7ICAgICAgIC8qIG5vdCBzdHJpY3RseSBBUlBIRCAqLwotI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQgKi8KKyNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVCAqLwogICAgICAgICBhdGFiID0gJmF0W2FycHRhYl9jdXJyZW50KytdOwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTVFJVQ1RfQVJQSERfSEFTX0FUX05FWFQgKi8KKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVCAqLwogICAgICAgICBpZiAoIShhdGFiLT5hdF9mbGFncyAmIEFURl9DT00pKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICppZlR5cGUgPSAoYXRhYi0+YXRfZmxhZ3MgJiBBVEZfUEVSTSkgPyA0IDogMzsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuYwppbmRleCBjODBmMGVlLi5lNDMzODBhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5jCkBAIC0xLDYgKzEsNSBAQAogLyoKICAqICBJQ01QIE1JQiBncm91cCBpbXBsZW1lbnRhdGlvbiAtIGljbXAuYwotICoKICAqLwogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CkBAIC05LDYgKzgsMTMgQEAKICNpZiBIQVZFX05FVElORVRfSVBfSUNNUF9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CiAjZW5kaWYKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZiBIQVZFX05FVElORVRfSUNNUDZfSAorI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KKyNlbmRpZgorI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KKwogI2lmIEhBVkVfTkVUSU5FVF9JQ01QX1ZBUl9ICiAjaW5jbHVkZSA8bmV0aW5ldC9pY21wX3Zhci5oPgogI2VuZGlmCkBAIC0xOSwxMCArMjUsMTAgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zY2FsYXJfZ3JvdXAuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIgogI2luY2x1ZGUgImljbXAuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKICNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQJNQpAQCAtMzEsNiArMzcsMTQgQEAKICNkZWZpbmUgSUNNUF9TVEFUU19DQUNIRV9USU1FT1VUCU1JQl9TVEFUU19DQUNIRV9USU1FT1VUCiAjZW5kaWYKIAorLyogcmVkZWZpbmUgSUNNUDYgbWVzc2FnZSB0eXBlcyBmcm9tIGdsaWJjIDwgMi40IHRvIG5ld2VyIG5hbWVzICovCisjaWZkZWYgSUNNUDZfTUVNQkVSU0hJUF9RVUVSWQorI2RlZmluZSBNTERfTElTVEVORVJfUVVFUlkgSUNNUDZfTUVNQkVSU0hJUF9RVUVSWQorI2RlZmluZSBNTERfTElTVEVORVJfUkVQT1JUIElDTVA2X01FTUJFUlNISVBfUkVQT1JUCisjZGVmaW5lIE1MRF9MSVNURU5FUl9SRURVQ1RJT04gSUNNUDZfTUVNQkVSU0hJUF9SRURVQ1RJT04KKyNlbmRpZiAvKiBJQ01QNl9NRU1CRVJTSElQX1FVRVJZICovCisKKwogI2lmIGRlZmluZWQoSEFWRV9MSUJQRVJGU1RBVF9IKSAmJiAoZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikpICYmICFkZWZpbmVkKEZJUlNUX1BST1RPQ09MKQogI2luY2x1ZGUgPGxpYnBlcmZzdGF0Lmg+CiAjaWZkZWYgRklSU1RfUFJPVE9DT0wKQEAgLTU0LDQwICs2OCw1MDkgQEAKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCiAKLQogLyoKICAqIERlZmluZSB0aGUgT0lEIHBvaW50ZXIgdG8gdGhlIHRvcCBvZiB0aGUgbWliIHRyZWUgdGhhdCB3ZSdyZQogICogcmVnaXN0ZXJpbmcgdW5kZXJuZWF0aCAKICAqLwotb2lkICAgICAgICAgICAgIGljbXBfb2lkW10gPSB7IFNOTVBfT0lEX01JQjIsIDUgfTsKK3N0YXRpYyBjb25zdCBvaWQgaWNtcF9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNSB9Oworc3RhdGljIGNvbnN0IG9pZCBpY21wX3N0YXRzX3RibF9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNSwgMjkgfTsKK3N0YXRpYyBjb25zdCBvaWQgaWNtcF9tc2dfc3RhdHNfdGJsX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCA1LCAzMCB9OwogI2lmZGVmIFVTSU5HX01JQklJX0lQX01PRFVMRQogZXh0ZXJuIG9pZCAgICAgIGlwX21vZHVsZV9vaWRbXTsKIGV4dGVybiBpbnQgICAgICBpcF9tb2R1bGVfb2lkX2xlbjsKIGV4dGVybiBpbnQgICAgICBpcF9tb2R1bGVfY291bnQ7CiAjZW5kaWYKIAorI2lmZGVmIGxpbnV4CitzdHJ1Y3QgaWNtcF9zdGF0c190YWJsZV9lbnRyeSB7CisJdWludDMyX3QgaXBWZXI7CisgICAgICAgIHVpbnQzMl90IGljbXBTdGF0c0luTXNnczsKKyAgICAgICAgdWludDMyX3QgaWNtcFN0YXRzSW5FcnJvcnM7CisgICAgICAgIHVpbnQzMl90IGljbXBTdGF0c091dE1zZ3M7CisgICAgICAgIHVpbnQzMl90IGljbXBTdGF0c091dEVycm9yczsKK307CisKK3N0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5IGljbXBfc3RhdHNfdGFibGVbMl07CisgCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0hBU19JTiAxCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0hBU19PVVQgMgorCitzdHJ1Y3QgaWNtcF9tc2dfc3RhdHNfdGFibGVfZW50cnkgeworICAgICAgICB1aW50MzJfdCBpcFZlcjsKKyAgICAgICAgdWludDMyX3QgaWNtcE1zZ1N0YXRzVHlwZTsKKyAgICAgICAgdWludDMyX3QgaWNtcE1zZ1N0YXRzSW5Qa3RzOworICAgICAgICB1aW50MzJfdCBpY21wTXNnU3RhdHNPdXRQa3RzOworICAgICAgICBpbnQgZmxhZ3M7Cit9OworCisjaWZkZWYgbGludXgKKy8qIExpbnV4IGtlZXBzIHRyYWNrIG9mIGFsbCBwb3NzaWJsZSBtZXNzYWdlIHR5cGVzICovCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgMjU2CisjZWxzZQorI2RlZmluZSBJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UIDExCisjZW5kaWYKKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyNpZmRlZiBsaW51eAorLyogTGludXgga2VlcHMgdHJhY2sgb2YgYWxsIHBvc3NpYmxlIG1lc3NhZ2UgdHlwZXMgKi8KKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSVBWNl9DT1VOVCAyNTYKKyNlbHNlCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0lQVjZfQ09VTlQgMTQKKyNlbmRpZgorI2Vsc2UKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVFNfSVBWNl9DT1VOVCAwCisjZW5kaWYgLyogTkVUU05NUF9FTkFCTEVfSVBWNiAqLworCitzdHJ1Y3QgaWNtcF9tc2dfc3RhdHNfdGFibGVfZW50cnkgaWNtcF9tc2dfc3RhdHNfdGFibGVbSUNNUF9NU0dfU1RBVFNfSVBWNF9DT1VOVCArIElDTVBfTVNHX1NUQVRTX0lQVjZfQ09VTlRdOworCitpbnQKK2ljbXBfc3RhdHNfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQoreworCisJLyoKKyAgICAgICAgICogbm90ZSBkb24ndCBib3RoZXIgdXNpbmcgdGhlIHBhc3NlZCBpbiBjYWNoZQorCSAqIGFuZCB2bWFnaWMgcG9pbnRlcnMuICBUaGV5IGFyZSB1c2VsZXNzIGFzIHRoZXkgCisJICogY3VycmVudGx5IHBvaW50IHRvIHRoZSBpY21wIHN5c3RlbSBzdGF0cyBjYWNoZQkKKwkgKiBzaW5jZSBJIHNlZSBsaXR0bGUgcG9pbnQgaW4gcmVnaXN0ZXJpbmcgYW5vdGhlcgorCSAqIGNhY2hlIGZvciB0aGlzIHRhYmxlLiAgSXRzIG5vdCByZWFsbHkgbmVlZGVkCisJICovCisKKwlpbnQgaTsKKwlzdHJ1Y3QgaWNtcF9taWIgdjRpY21wOworCXN0cnVjdCBpY21wNl9taWIgdjZpY21wOworCWZvcihpPTA7aTwyO2krKykgeworCQlzd2l0Y2goaSkgeworCQkJY2FzZSAwOgorCQkJCWxpbnV4X3JlYWRfaWNtcF9zdGF0KCZ2NGljbXApOworCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzSW5Nc2dzID0gdjRpY21wLmljbXBJbk1zZ3M7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY0aWNtcC5pY21wSW5FcnJvcnM7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRNc2dzID0gdjRpY21wLmljbXBPdXRNc2dzOworCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0RXJyb3JzID0gdjRpY21wLmljbXBPdXRFcnJvcnM7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCW1lbXNldCgmaWNtcF9zdGF0c190YWJsZVtpXSwwLAorCQkJCQlzaXplb2Yoc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkpKTsKKwkJCQlsaW51eF9yZWFkX2ljbXA2X3N0YXQoJnY2aWNtcCk7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbk1zZ3MgPSB2NmljbXAuaWNtcDZJbk1zZ3M7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNJbkVycm9ycyA9IHY2aWNtcC5pY21wNkluRXJyb3JzOworCQkJCWljbXBfc3RhdHNfdGFibGVbaV0uaWNtcFN0YXRzT3V0TXNncyA9IHY2aWNtcC5pY21wNk91dE1zZ3M7CisJCQkJaWNtcF9zdGF0c190YWJsZVtpXS5pY21wU3RhdHNPdXRFcnJvcnMgPSB2NmljbXAuaWNtcDZPdXREZXN0VW5yZWFjaHMgKworCQkJCQl2NmljbXAuaWNtcDZPdXRQa3RUb29CaWdzICsgIHY2aWNtcC5pY21wNk91dFRpbWVFeGNkcyArCisJCQkJCXY2aWNtcC5pY21wNk91dFBhcm1Qcm9ibGVtczsKKwkJCQlicmVhazsKKwkJfQorCQlpY21wX3N0YXRzX3RhYmxlW2ldLmlwVmVyPWkrMTsKKwl9CisKKwlyZXR1cm4gMDsKK30KKworaW50CitpY21wX21zZ19zdGF0c19sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgc3RydWN0IGljbXBfbWliIHY0aWNtcDsKKyAgICBzdHJ1Y3QgaWNtcDRfbXNnX21pYiB2NGljbXBtc2c7CisgICAgc3RydWN0IGljbXA2X21pYiB2NmljbXA7CisgICAgc3RydWN0IGljbXA2X21zZ19taWIgdjZpY21wbXNnOworICAgIGludCBpLCBqLCBrLCBmbGFnLCBpbmM7CisKKyAgICBtZW1zZXQoJmljbXBfbXNnX3N0YXRzX3RhYmxlLCAwLCBzaXplb2YoaWNtcF9tc2dfc3RhdHNfdGFibGUpKTsKKworICAgIGkgPSAwOworICAgIGZsYWcgPSAwOworICAgIGsgPSAwOworICAgIGluYyA9IDA7CisgICAgbGludXhfcmVhZF9pY21wX21zZ19zdGF0KCZ2NGljbXAsICZ2NGljbXBtc2csICZmbGFnKTsKKyAgICBpZiAoZmxhZykgeworICAgICAgICB3aGlsZSAoMjU1ID49IGspIHsKKyAgICAgICAgICAgIGlmICh2NGljbXBtc2cudmFsc1trXS5JblR5cGUpIHsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IGs7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wbXNnLnZhbHNba10uSW5UeXBlOworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgfCBJQ01QX01TR19TVEFUU19IQVNfSU47CisgICAgICAgICAgICAgICAgaW5jID0gMTsgLyogU2V0IHRoaXMgaWYgd2UgZm91bmQgYSB2YWxpZCBlbnRyeSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHY0aWNtcG1zZy52YWxzW2tdLk91dFR5cGUpIHsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pcFZlciA9IDE7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IGs7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcG1zZy52YWxzW2tdLk91dFR5cGU7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyB8IElDTVBfTVNHX1NUQVRTX0hBU19PVVQ7CisgICAgICAgICAgICAgICAgaW5jID0gMTsgLyogU2V0IHRoaXMgaWYgd2UgZm91bmQgYSB2YWxpZCBlbnRyeSAqLworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGluYykgeworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICBpbmMgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaysrOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfRUNIT1JFUExZOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRWNob1JlcHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEVjaG9SZXBzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfREVTVF9VTlJFQUNIOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRGVzdFVucmVhY2hzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXREZXN0VW5yZWFjaHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9TT1VSQ0VfUVVFTkNIOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluU3JjUXVlbmNoczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0U3JjUXVlbmNoczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1JFRElSRUNUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluUmVkaXJlY3RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjRpY21wLmljbXBPdXRSZWRpcmVjdHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUF9FQ0hPOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluRWNob3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEVjaG9zOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRV9FWENFRURFRDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblRpbWVFeGNkczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZUV4Y2RzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfUEFSQU1FVEVSUFJPQjsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJblBhcm1Qcm9iczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0UGFybVByb2JzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVBfVElNRVNUQU1QOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZXN0YW1wczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZXN0YW1wczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX1RJTUVTVEFNUFJFUExZOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NGljbXAuaWNtcEluVGltZXN0YW1wUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0VGltZXN0YW1wUmVwczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0FERFJFU1M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY0aWNtcC5pY21wSW5BZGRyTWFza3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NGljbXAuaWNtcE91dEFkZHJNYXNrczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBJQ01QX0FERFJFU1NSRVBMWTsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjRpY21wLmljbXBJbkFkZHJNYXNrUmVwczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY0aWNtcC5pY21wT3V0QWRkck1hc2tSZXBzOworICAgICAgICBpKys7CisKKyAgICAgICAgLyogc2V0IHRoZSBJUCB2ZXJzaW9uIGFuZCBkZWZhdWx0IGZsYWdzICovCisgICAgICAgIGZvciAoaiA9IDA7IGogPCBJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UOyBqKyspIHsKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2pdLmlwVmVyID0gMTsKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2pdLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgfQorICAgIH0KKworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKyAgICBmbGFnID0gMDsKKyAgICBrID0gMDsKKyAgICBpbmMgPSAwOworICAgIGxpbnV4X3JlYWRfaWNtcDZfbXNnX3N0YXQoJnY2aWNtcCwgJnY2aWNtcG1zZywgJmZsYWcpOworICAgIGlmIChmbGFnKSB7CisgICAgICAgIHdoaWxlICgyNTUgPj0gaykgeworICAgICAgICAgICAgaWYgKHY2aWNtcG1zZy52YWxzW2tdLkluVHlwZSkgeworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gazsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXBtc2cudmFsc1trXS5JblR5cGU7CisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyB8IElDTVBfTVNHX1NUQVRTX0hBU19JTjsKKyAgICAgICAgICAgICAgICBpbmMgPSAxOyAvKiBTZXQgdGhpcyBpZiB3ZSBmb3VuZCBhIHZhbGlkIGVudHJ5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodjZpY21wbXNnLnZhbHNba10uT3V0VHlwZSkgeworICAgICAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyID0gMjsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gazsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wbXNnLnZhbHNba10uT3V0VHlwZTsKKyAgICAgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5mbGFncyA9IGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzIHwgSUNNUF9NU0dfU1RBVFNfSEFTX09VVDsKKyAgICAgICAgICAgICAgICBpbmMgPSAxOyAvKiBTZXQgdGhpcyBpZiB3ZSBmb3VuZCBhIHZhbGlkIGVudHJ5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaW5jKSB7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGluYyA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBrKys7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gSUNNUDZfRFNUX1VOUkVBQ0g7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluRGVzdFVucmVhY2hzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0RGVzdFVucmVhY2hzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1BBQ0tFVF9UT09fQklHOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblBrdFRvb0JpZ3M7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRQa3RUb29CaWdzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1RJTUVfRVhDRUVERUQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluVGltZUV4Y2RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0VGltZUV4Y2RzOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X1BBUkFNX1BST0I7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUGFybVByb2JsZW1zOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0UGFybVByb2JsZW1zOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0VDSE9fUkVRVUVTVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5FY2hvczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IDA7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOOworICAgICAgICBpKys7CisKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzVHlwZSA9IElDTVA2X0VDSE9fUkVQTFk7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluRWNob1JlcGxpZXM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRFY2hvUmVwbGllczsKKyAgICAgICAgaSsrOworCisjaWZkZWYgTUxEX0xJU1RFTkVSX1FVRVJZCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUVVFUlk7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluR3JvdXBNZW1iUXVlcmllczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IDA7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmZsYWdzID0gSUNNUF9NU0dfU1RBVFNfSEFTX0lOOworICAgICAgICBpKys7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUkVQT1JUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBNTERfTElTVEVORVJfUkVEVUNUSU9OOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJbkdyb3VwTWVtYlJlZHVjdGlvbnM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRHcm91cE1lbWJSZWR1Y3Rpb25zOworICAgICAgICBpKys7CisjZW5kaWYKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfUk9VVEVSX1NPTElDSVQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUm91dGVyU29saWNpdHM7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c091dFBrdHMgPSB2NmljbXAuaWNtcDZPdXRSb3V0ZXJTb2xpY2l0czsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ST1VURVJfQURWRVJUOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNJblBrdHMgPSB2NmljbXAuaWNtcDZJblJvdXRlckFkdmVydGlzZW1lbnRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gMDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU47CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfTkVJR0hCT1JfU09MSUNJVDsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzSW5Qa3RzID0gdjZpY21wLmljbXA2SW5OZWlnaGJvclNvbGljaXRzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0TmVpZ2hib3JTb2xpY2l0czsKKyAgICAgICAgaSsrOworCisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUgPSBORF9ORUlHSEJPUl9BRFZFUlQ7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50czsKKyAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGFibGVbaV0uaWNtcE1zZ1N0YXRzT3V0UGt0cyA9IHY2aWNtcC5pY21wNk91dE5laWdoYm9yQWR2ZXJ0aXNlbWVudHM7CisgICAgICAgIGkrKzsKKworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNUeXBlID0gTkRfUkVESVJFQ1Q7CisgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c0luUGt0cyA9IHY2aWNtcC5pY21wNkluUmVkaXJlY3RzOworICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtpXS5pY21wTXNnU3RhdHNPdXRQa3RzID0gdjZpY21wLmljbXA2T3V0UmVkaXJlY3RzOworCisgICAgICAgIGZvciAoaiA9IDA7IGogPCBJQ01QX01TR19TVEFUU19JUFY2X0NPVU5UOyBqKyspIHsKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlW0lDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgKyBqXS5pcFZlciA9IDI7CisgICAgICAgICAgICBpY21wX21zZ19zdGF0c190YWJsZVtJQ01QX01TR19TVEFUU19JUFY0X0NPVU5UICsgal0uZmxhZ3MgPSBJQ01QX01TR19TVEFUU19IQVNfSU4gfCBJQ01QX01TR19TVEFUU19IQVNfT1VUOworICAgICAgICB9CisgICAgfQorI2VuZGlmIC8qIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KKyAgICByZXR1cm4gMDsKK30KKworbmV0c25tcF92YXJpYWJsZV9saXN0ICoKK2ljbXBfc3RhdHNfbmV4dF9lbnRyeSggdm9pZCAqKmxvb3BfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipkYXRhX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKmluZGV4LAorICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICpkYXRhKQoreworCWludCBpID0gKGludCkoKmxvb3BfY29udGV4dCk7CisJbmV0c25tcF92YXJpYWJsZV9saXN0ICppZHggPSBpbmRleDsKKworCWlmKGkgPiAxKQorCQlyZXR1cm4gTlVMTDsKKworCisJLyoKKwkgKnNldCBJUCB2ZXJzaW9uCisJICovCisJc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsICh1X2NoYXIgKikmaWNtcF9zdGF0c190YWJsZVtpXS5pcFZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CisJaWR4ID0gaWR4LT5uZXh0X3ZhcmlhYmxlOworCisJKmRhdGFfY29udGV4dCA9ICZpY21wX3N0YXRzX3RhYmxlW2ldOworCisJKmxvb3BfY29udGV4dCA9ICh2b2lkICopKCsraSk7CisJCisJcmV0dXJuIGluZGV4OworfQorCisKK25ldHNubXBfdmFyaWFibGVfbGlzdCAqCitpY21wX3N0YXRzX2ZpcnN0X2VudHJ5KCB2b2lkICoqbG9vcF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgdm9pZCAqKmRhdGFfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gKmRhdGEpCit7CisKKyAgICAgICAgKmxvb3BfY29udGV4dCA9IE5VTEw7CisgICAgICAgICpkYXRhX2NvbnRleHQgPSBOVUxMOworICAgICAgICByZXR1cm4gaWNtcF9zdGF0c19uZXh0X2VudHJ5KGxvb3BfY29udGV4dCwgZGF0YV9jb250ZXh0LCBpbmRleCwgZGF0YSk7Cit9CisKK25ldHNubXBfdmFyaWFibGVfbGlzdCAqCitpY21wX21zZ19zdGF0c19uZXh0X2VudHJ5KHZvaWQgKipsb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKipkYXRhX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqZGF0YSkKK3sKKyAgICBpbnQgaSA9IChpbnQpKCpsb29wX2NvbnRleHQpOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqaWR4ID0gaW5kZXg7CisKKyAgICBpZihpID49IElDTVBfTVNHX1NUQVRTX0lQVjRfQ09VTlQgKyBJQ01QX01TR19TVEFUU19JUFY2X0NPVU5UKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIHNldCBJUCB2ZXJzaW9uICovCisgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAodV9jaGFyICopJmljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmlwVmVyLAorICAgICAgICAgICAgc2l6ZW9mKHVpbnQzMl90KSk7CisKKyAgICAvKiBzZXQgcGFja2V0IHR5cGUgKi8KKyAgICBpZHggPSBpZHgtPm5leHRfdmFyaWFibGU7CisgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKGlkeCwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAodV9jaGFyICopJmljbXBfbXNnX3N0YXRzX3RhYmxlW2ldLmljbXBNc2dTdGF0c1R5cGUsCisgICAgICAgICAgICBzaXplb2YodWludDMyX3QpKTsKKworICAgICpkYXRhX2NvbnRleHQgPSAmaWNtcF9tc2dfc3RhdHNfdGFibGVbaV07CisgICAgKmxvb3BfY29udGV4dCA9ICh2b2lkICopKCsraSk7CisKKyAgICByZXR1cm4gaW5kZXg7Cit9CisKKworbmV0c25tcF92YXJpYWJsZV9saXN0ICoKK2ljbXBfbXNnX3N0YXRzX2ZpcnN0X2VudHJ5KHZvaWQgKipsb29wX2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICoqZGF0YV9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICppbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaXRlcmF0b3JfaW5mbyAqZGF0YSkKK3sKKyAgICAqbG9vcF9jb250ZXh0ID0gMDsKKyAgICAqZGF0YV9jb250ZXh0ID0gTlVMTDsKKyAgICByZXR1cm4gaWNtcF9tc2dfc3RhdHNfbmV4dF9lbnRyeShsb29wX2NvbnRleHQsIGRhdGFfY29udGV4dCwgaW5kZXgsIGRhdGEpOworfQorI2VuZGlmCisKIHZvaWQKIGluaXRfaWNtcCh2b2lkKQogewotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisjaWZkZWYgbGludXgKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICp0YWJsZV9yZWdpbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICptc2dfc3RhdHNfcmVnaW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbyA9IE5VTEw7CisgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICptc2dfc3RhdHNfaWluZm8gPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKm1zZ19zdGF0c190YWJsZV9pbmZvID0gTlVMTDsKKyNlbmRpZgorICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnNjYWxhcl9yZWdpbmZvID0gTlVMTDsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIHJjOwogCiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgYXMgYSBncm91cCBvZiBzY2FsYXJzLi4uCiAgICAgICovCiAgICAgREVCVUdNU0dUTCgoIm1pYklJL2ljbXAiLCAiSW5pdGlhbGlzaW5nIElDTVAgZ3JvdXBcbiIpKTsKLSAgICByZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImljbXAiLCBpY21wX2hhbmRsZXIsCisgICAgc2NhbGFyX3JlZ2luZm8gPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigiaWNtcCIsIGljbXBfaGFuZGxlciwKIAkJICAgIGljbXBfb2lkLCBPSURfTEVOR1RIKGljbXBfb2lkKSwgSEFORExFUl9DQU5fUk9OTFkpOwotICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKHJlZ2luZm8sIElDTVBJTk1TR1MsIElDTVBPVVRBRERSTUFTS1JFUFMpOworICAgIGlmICghc2NhbGFyX3JlZ2luZm8pCisgICAgICAgIHJldHVybjsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAoc2NhbGFyX3JlZ2luZm8sIElDTVBJTk1TR1MsIElDTVBPVVRBRERSTUFTS1JFUFMpOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8qCiAgICAgICogLi4uLiB3aXRoIGEgbG9jYWwgY2FjaGUKICAgICAgKiAgICAoZXhjZXB0IGZvciBIUC1VWCAxMSwgd2hpY2ggZXh0cmFjdHMgb2JqZWN0cyBpbmRpdmlkdWFsbHkpCiAgICAgICovCiAjaWZuZGVmIGhwdXgxMQotICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIHJlZ2luZm8sCisgICAgcmMgPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKCBzY2FsYXJfcmVnaW5mbywKIAkJICAgIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIoSUNNUF9TVEFUU19DQUNIRV9USU1FT1VULAogCQkJICAgCQlpY21wX2xvYWQsIGljbXBfZnJlZSwKIAkJCQkJaWNtcF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9vaWQpKSk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgZ290byBiYWlsOwogI2VuZGlmCisjaWZkZWYgbGludXgKKworICAgIC8qIHJlZ2lzdGVyIGljbXBTdGF0c1RhYmxlICovCisKKyAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBpZiAoIXRhYmxlX2luZm8pCisgICAgICAgIGdvdG8gYmFpbDsKKworICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLCAwKTsKKyAgICB0YWJsZV9pbmZvLT5taW5fY29sdW1uID0gSUNNUF9TVEFUX0lOTVNHOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBJQ01QX1NUQVRfT1VURVJSOworCisKKyAgICBpaW5mbyAgICAgID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOworICAgIGlmICghaWluZm8pIAorICAgICAgICBnb3RvIGJhaWw7CisKKyAgICBpaW5mby0+Z2V0X2ZpcnN0X2RhdGFfcG9pbnQgPSBpY21wX3N0YXRzX2ZpcnN0X2VudHJ5OworICAgIGlpbmZvLT5nZXRfbmV4dF9kYXRhX3BvaW50ICA9IGljbXBfc3RhdHNfbmV4dF9lbnRyeTsKKyAgICBpaW5mby0+dGFibGVfcmVnaW5mbyAgICAgICAgPSB0YWJsZV9pbmZvOworCisgICAgdGFibGVfcmVnaW5mbyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJpY21wU3RhdHNUYWJsZSIsCisJCWljbXBfc3RhdHNfdGFibGVfaGFuZGxlciwgaWNtcF9zdGF0c190Ymxfb2lkLAorCQlPSURfTEVOR1RIKGljbXBfc3RhdHNfdGJsX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAoIXRhYmxlX3JlZ2luZm8pCisgICAgICAgIGdvdG8gYmFpbDsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZV9pdGVyYXRvcih0YWJsZV9yZWdpbmZvLCBpaW5mbyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykgeworICAgICAgICB0YWJsZV9yZWdpbmZvID0gTlVMTDsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIC8qIHJlZ2lzdGVyIGljbXBNc2dTdGF0c1RhYmxlICovCisgICAgbXNnX3N0YXRzX3RhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmICghbXNnX3N0YXRzX3RhYmxlX2luZm8pCisgICAgICAgIGdvdG8gYmFpbDsKKworICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKG1zZ19zdGF0c190YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgQVNOX0lOVEVHRVIsIDApOworICAgIG1zZ19zdGF0c190YWJsZV9pbmZvLT5taW5fY29sdW1uID0gSUNNUF9NU0dfU1RBVF9JTl9QS1RTOworICAgIG1zZ19zdGF0c190YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gSUNNUF9NU0dfU1RBVF9PVVRfUEtUUzsKKworICAgIG1zZ19zdGF0c19paW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9pdGVyYXRvcl9pbmZvKTsKKyAgICBpZiAoIW1zZ19zdGF0c19paW5mbykKKyAgICAgICAgZ290byBiYWlsOworCisgICAgbXNnX3N0YXRzX2lpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IGljbXBfbXNnX3N0YXRzX2ZpcnN0X2VudHJ5OworICAgIG1zZ19zdGF0c19paW5mby0+Z2V0X25leHRfZGF0YV9wb2ludCAgPSBpY21wX21zZ19zdGF0c19uZXh0X2VudHJ5OworICAgIG1zZ19zdGF0c19paW5mby0+dGFibGVfcmVnaW5mbyAgICAgICAgPSBtc2dfc3RhdHNfdGFibGVfaW5mbzsKKworICAgIG1zZ19zdGF0c19yZWdpbmZvID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oImljbXBNc2dTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgIGljbXBfbXNnX3N0YXRzX3RhYmxlX2hhbmRsZXIsIGljbXBfbXNnX3N0YXRzX3RibF9vaWQsCisgICAgICAgICAgICBPSURfTEVOR1RIKGljbXBfbXNnX3N0YXRzX3RibF9vaWQpLCBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgaWYgKCFtc2dfc3RhdHNfcmVnaW5mbykKKyAgICAgICAgZ290byBiYWlsOworCisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2l0ZXJhdG9yKG1zZ19zdGF0c19yZWdpbmZvLCBtc2dfc3RhdHNfaWluZm8pOworICAgIGlmIChyYyAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgbXNnX3N0YXRzX3JlZ2luZm8gPSBOVUxMOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIAorICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIoIG1zZ19zdGF0c19yZWdpbmZvLAorICAgICAgICAgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQsCisgICAgICAgICAgICAgICAgaWNtcF9sb2FkLCBpY21wX2ZyZWUsCisgICAgICAgICAgICAgICAgaWNtcF9tc2dfc3RhdHNfdGJsX29pZCwgT0lEX0xFTkdUSChpY21wX21zZ19zdGF0c190Ymxfb2lkKSkpOworI2lmbmRlZiBocHV4MTEKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKCB0YWJsZV9yZWdpbmZvLAorCQkgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihJQ01QX1NUQVRTX0NBQ0hFX1RJTUVPVVQsCisJCQkgICAJCWljbXBfbG9hZCwgaWNtcF9mcmVlLAorCQkJCQlpY21wX3N0YXRzX3RibF9vaWQsIE9JRF9MRU5HVEgoaWNtcF9zdGF0c190Ymxfb2lkKSkpOworI2VuZGlmIC8qICEgaHB1eDExICovCisjZW5kaWYgLyogbGludXggKi8KIAogI2lmZGVmIFVTSU5HX01JQklJX0lQX01PRFVMRQogICAgIGlmICgrK2lwX21vZHVsZV9jb3VudCA9PSAyKQpAQCAtMTAzLDYgKzU4NiwxOSBAQAogICAgIGluaXRfa2VybmVsX3N1bm9zNSgpOwogI2VuZGlmCiAjZW5kaWYKKyAgICByZXR1cm47CisKKyNpZm5kZWYgaHB1eDExCitiYWlsOgorI2VuZGlmCisjaWZkZWYgbGludXgKKyAgICBpZiAobXNnX3N0YXRzX3JlZ2luZm8pCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZShtc2dfc3RhdHNfcmVnaW5mbyk7CisgICAgaWYgKHRhYmxlX3JlZ2luZm8pCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fZnJlZSh0YWJsZV9yZWdpbmZvKTsKKyNlbmRpZgorICAgIGlmIChzY2FsYXJfcmVnaW5mbykKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHNjYWxhcl9yZWdpbmZvKTsKIH0KIAogCkBAIC01NTEsNiArMTA0NywxNDkgQEAKIH0KIAogCisjaWZkZWYgbGludXgKK2ludAoraWNtcF9zdGF0c190YWJsZV9oYW5kbGVyKG5ldHNubXBfbWliX2hhbmRsZXIgICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0cykKK3sKKwluZXRzbm1wX3JlcXVlc3RfaW5mbyAgKnJlcXVlc3Q7CisJbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZXF1ZXN0dmI7CisJbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CisJc3RydWN0IGljbXBfc3RhdHNfdGFibGVfZW50cnkgICAqZW50cnk7CisJb2lkICAgICAgc3ViaWQ7CisKKwlzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKKwkJY2FzZSBNT0RFX0dFVDoKKwkJCWZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisJCQkJcmVxdWVzdHZiID0gcmVxdWVzdC0+cmVxdWVzdHZiOworCQkJCWVudHJ5ID0gKHN0cnVjdCBpY21wX3N0YXRzX3RhYmxlX2VudHJ5ICopbmV0c25tcF9leHRyYWN0X2l0ZXJhdG9yX2NvbnRleHQocmVxdWVzdCk7CisJCQkJaWYgKCFlbnRyeSkKKwkJCQkJY29udGludWU7CisJCQkJdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworCQkJCXN1YmlkICAgICAgPSB0YWJsZV9pbmZvLT5jb2xudW07CisJCQkJREVCVUdNU0dUTCgoICJtaWJJSS9pY21wU3RhdHNUYWJsZSIsICJvaWQ6ICIgKSk7CisJCQkJREVCVUdNU0dPSUQoKCAibWliSUkvaWNtcFN0YXRzVGFibGUiLCByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUsCisJCQkJCQkgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCApKTsKKwkJCQlERUJVR01TRygoICJtaWJJSS9pY21wU3RhdHNUYWJsZSIsICIgSW4gJWQgSW5FcnIgJWQgT3V0ICVkIE91dEVyciAlZFxuIiwKKwkJCQkJICAgICAgZW50cnktPmljbXBTdGF0c0luTXNncywgZW50cnktPmljbXBTdGF0c0luRXJyb3JzLAorCQkJCQkgICAgICBlbnRyeS0+aWNtcFN0YXRzT3V0TXNncywgZW50cnktPmljbXBTdGF0c091dEVycm9ycyApKTsKKworCQkJCXN3aXRjaCAoc3ViaWQpIHsKKwkJCQkJY2FzZSBJQ01QX1NUQVRfSU5NU0c6CisJCQkJCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJCQkodV9jaGFyICopJmVudHJ5LT5pY21wU3RhdHNJbk1zZ3MsIHNpemVvZih1aW50MzJfdCkpOworCQkJCQkJYnJlYWs7CQorCQkJCQljYXNlIElDTVBfU1RBVF9JTkVSUjoKKwkJCQkJCXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0dmIsIEFTTl9DT1VOVEVSLAorCQkJCQkJCSh1X2NoYXIgKikmZW50cnktPmljbXBTdGF0c0luRXJyb3JzLCBzaXplb2YodWludDMyX3QpKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIElDTVBfU1RBVF9PVVRNU0c6CisJCQkJCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJCQkodV9jaGFyICopJmVudHJ5LT5pY21wU3RhdHNPdXRNc2dzLCBzaXplb2YodWludDMyX3QpKTsKKwkJCQkJCWJyZWFrOworCQkJCQljYXNlIElDTVBfU1RBVF9PVVRFUlI6CisJCQkJCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJCQkodV9jaGFyICopJmVudHJ5LT5pY21wU3RhdHNPdXRFcnJvcnMsIHNpemVvZih1aW50MzJfdCkpOworCQkJCQkJYnJlYWs7CisJCQkJCWRlZmF1bHQ6CisJCQkJCQlzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnJlY29nbmlzZWQgY29sdW1uICglZClcbiIsKGludClzdWJpZCk7CisJCQkJfQorCQkJfQorCQkJYnJlYWs7CisJCWNhc2UgTU9ERV9HRVRORVhUOgorCQljYXNlIE1PREVfR0VUQlVMSzoKKwkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKKwkJY2FzZSBNT0RFX1NFVF9SRVNFUlZFMjoKKwkJY2FzZSBNT0RFX1NFVF9BQ1RJT046CisJCWNhc2UgTU9ERV9TRVRfQ09NTUlUOgorCQljYXNlIE1PREVfU0VUX0ZSRUU6CisJCWNhc2UgTU9ERV9TRVRfVU5ETzoKKwkJCXNubXBfbG9nKExPR19XQVJOSU5HLCAibWliSUkvaWNtcFN0YXRzVGFibGU6IFVuc3VwcG9ydGVkIG1vZGUgKCVkKVxuIiwKKwkJCQlyZXFpbmZvLT5tb2RlKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wU3RhdHNUYWJsZTogVW5yZWNvZ25pc2VkIG1vZGUgKCVkKVxuIiwKKwkJCQlyZXFpbmZvLT5tb2RlKTsKKwkJCWJyZWFrOworCisJfQorCisJcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKK2ludAoraWNtcF9tc2dfc3RhdHNfdGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICAgICAgICAgICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAgICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0cykKK3sKKyAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnJlcXVlc3R2YjsKKyAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGFibGVfaW5mbzsKKyAgICBzdHJ1Y3QgaWNtcF9tc2dfc3RhdHNfdGFibGVfZW50cnkgKmVudHJ5OworICAgIG9pZCBzdWJpZDsKKworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgICAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICAgICAgZm9yIChyZXF1ZXN0ID0gcmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICAgICAgcmVxdWVzdHZiID0gcmVxdWVzdC0+cmVxdWVzdHZiOworICAgICAgICAgICAgICAgIGVudHJ5ID0gKHN0cnVjdCBpY21wX21zZ19zdGF0c190YWJsZV9lbnRyeSAqKW5ldHNubXBfZXh0cmFjdF9pdGVyYXRvcl9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgICAgIGlmICghZW50cnkpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICBzdWJpZCA9IHRhYmxlX2luZm8tPmNvbG51bTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggIm1pYklJL2ljbXBNc2dTdGF0c1RhYmxlIiwgIm9pZDogIiApKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoICJtaWJJSS9pY21wTXNnU3RhdHNUYWJsZSIsIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGggKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0coKCAibWliSUkvaWNtcE1zZ1N0YXRzVGFibGUiLCAiIEluICVkIE91dCAlZCBGbGFncyAweCV4XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPmljbXBNc2dTdGF0c0luUGt0cywgZW50cnktPmljbXBNc2dTdGF0c091dFBrdHMsIGVudHJ5LT5mbGFncyApKTsKKworICAgICAgICAgICAgICAgIHN3aXRjaCAoc3ViaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBJQ01QX01TR19TVEFUX0lOX1BLVFM6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW50cnktPmZsYWdzICYgSUNNUF9NU0dfU1RBVFNfSEFTX0lOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmVudHJ5LT5pY21wTXNnU3RhdHNJblBrdHMsIHNpemVvZih1aW50MzJfdCkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgSUNNUF9NU0dfU1RBVF9PVVRfUEtUUzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+ZmxhZ3MgJiBJQ01QX01TR19TVEFUU19IQVNfT1VUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopJmVudHJ5LT5pY21wTXNnU3RhdHNPdXRQa3RzLCBzaXplb2YodWludDMyX3QpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHZiLT50eXBlID0gU05NUF9OT1NVQ0hJTlNUQU5DRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJtaWJJSS9pY21wTXNnU3RhdHNUYWJsZTogVW5yZWNvZ25pc2VkIGNvbHVtbiAoJWQpXG4iLChpbnQpc3ViaWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE1PREVfR0VUTkVYVDoKKyAgICAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CisgICAgICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgorICAgICAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKKyAgICAgICAgY2FzZSBNT0RFX1NFVF9GUkVFOgorICAgICAgICBjYXNlIE1PREVfU0VUX1VORE86CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnN1cHBvcnRlZCBtb2RlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHJlcWluZm8tPm1vZGUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIm1pYklJL2ljbXBTdGF0c1RhYmxlOiBVbnJlY29nbmlzZWQgbW9kZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICByZXFpbmZvLT5tb2RlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisjZW5kaWYJCS8qIGxpbnV4ICovCisKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEludGVybmFsIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucwpAQCAtNjgwLDYgKzEzMTksOCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pY21wIiwgIkxvYWRlZCBJQ01QIEdyb3VwIChsaW51eClcbiIpKTsKICAgICB9CisgICAgaWNtcF9zdGF0c19sb2FkKGNhY2hlLCB2bWFnaWMpOworICAgIGljbXBfbXNnX3N0YXRzX2xvYWQoY2FjaGUsIHZtYWdpYyk7CiAgICAgcmV0dXJuIHJldF92YWx1ZTsKIH0KICNlbGlmIGRlZmluZWQoc29sYXJpczIpCkBAIC03MTQsNyArMTM1NSw2IEBACiAgICAgfQogICAgIHJldHVybiByZXRfdmFsdWU7CiB9Ci0KICNlbGlmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCiBpbnQKIGljbXBfbG9hZChuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqdm1hZ2ljKQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaWNtcC5oCmluZGV4IGNkYWFjNWQuLjkzMDc2NTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ljbXAuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pY21wLmgKQEAgLTE0LDYgKzE0LDggQEAKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfaWNtcCh2b2lkKTsKIGV4dGVybiBOZXRzbm1wX05vZGVfSGFuZGxlciBpY21wX2hhbmRsZXI7CitleHRlcm4gTmV0c25tcF9Ob2RlX0hhbmRsZXIgaWNtcF9zdGF0c190YWJsZV9oYW5kbGVyOworZXh0ZXJuIE5ldHNubXBfTm9kZV9IYW5kbGVyIGljbXBfbXNnX3N0YXRzX3RhYmxlX2hhbmRsZXI7CiBleHRlcm4gTmV0c25tcENhY2hlTG9hZCBpY21wX2xvYWQ7CiBleHRlcm4gTmV0c25tcENhY2hlRnJlZSBpY21wX2ZyZWU7CiAKQEAgLTQ0LDQgKzQ2LDE3IEBACiAjZGVmaW5lIElDTVBPVVRBRERSTUFTS1MgICAgIDI1CiAjZGVmaW5lIElDTVBPVVRBRERSTUFTS1JFUFMgIDI2CiAKKyNkZWZpbmUgSUNNUFNUQVRTVEFCTEUgICAgICAgMjkKKyNkZWZpbmUgSUNNUF9TVEFUX0lQVkVSICAgICAgIDEKKyNkZWZpbmUgSUNNUF9TVEFUX0lOTVNHICAgICAgIDIgCisjZGVmaW5lIElDTVBfU1RBVF9JTkVSUiAgICAgICAzIAorI2RlZmluZSBJQ01QX1NUQVRfT1VUTVNHICAgICAgNCAKKyNkZWZpbmUgSUNNUF9TVEFUX09VVEVSUiAgICAgIDUgCisKKyNkZWZpbmUgSUNNUE1TR1NUQVRTVEFCTEUgICAgIDMwCisjZGVmaW5lIElDTVBfTVNHX1NUQVRfSVBWRVIgICAgMQorI2RlZmluZSBJQ01QX01TR19TVEFUX1RZUEUgICAgIDIKKyNkZWZpbmUgSUNNUF9NU0dfU1RBVF9JTl9QS1RTICAzCisjZGVmaW5lIElDTVBfTVNHX1NUQVRfT1VUX1BLVFMgNAorCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9JQ01QX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuYwppbmRleCBjODk2ZmYyLi4zMjg4M2YzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5jCkBAIC0xNiw3ICsxNiw3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKSAmJiAhZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUxfTEFURSkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKSAmJiAhZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9MQVRFKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpAQCAtNDAsNyArNDAsNyBAQAogI2lmIEhBVkVfV0lOU09DS19ICiAjaW5jbHVkZSA8d2luc29jay5oPgogI2VuZGlmCi0jaWYgZGVmaW5lZChJRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpICYmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUpCisjaWYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkgJiYgZGVmaW5lZChORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9MQVRFKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpAQCAtMTk3LDEyICsxOTcsMTIgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaD4KIAogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKICNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCi0jaW5jbHVkZSAic3lzT1JUYWJsZS5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogLyogaWYgeW91IHdhbnQgY2FjaGluZyBlbmFibGVkIGZvciBzcGVlZCByZXRyaXZhbCBwdXJwb3Nlcywgc2V0IHRoaXMgdG8gNT8qLwogI2RlZmluZSBNSU5MT0FERlJFUSAwICAgICAgICAgICAgICAgICAgICAgLyogbWluIHJlbG9hZCBmcmVxdWVuY3kgaW4gc2Vjb25kcyAqLwpAQCAtMjEzLDMzICsyMTMsNTcgQEAKIGV4dGVybiBzdHJ1Y3QgdGltZXZhbCBzdGFydHRpbWU7CiAKIHN0cnVjdCB2YXJpYWJsZTMgaW50ZXJmYWNlc192YXJpYWJsZXNbXSA9IHsKLSAgICB7SUZOVU1CRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2ludGVyZmFjZXMsIDEsIHsxfX0sCi0gICAge0lGSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxfX0sCi0gICAge0lGREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDJ9fSwKLSAgICB7TkVUU05NUF9JRlRZUEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAzfX0sCi0gICAge0lGTVRVLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNH19LAotICAgIHtJRlNQRUVELCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDV9fSwKLSAgICB7SUZQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgNn19LAorICAgIHtORVRTTk1QX0lGTlVNQkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pbnRlcmZhY2VzLCAxLCB7MX19LAorICAgIHtORVRTTk1QX0lGSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxfX0sCisgICAge05FVFNOTVBfSUZERVNDUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMn19LAorICAgIHtORVRTTk1QX0lGVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDN9fSwKKyAgICB7TkVUU05NUF9JRk1UVSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDR9fSwKKyAgICB7TkVUU05NUF9JRlNQRUVELCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDV9fSwKKyAgICB7TkVUU05NUF9JRlBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA2fX0sCiAjaWYgZGVmaW5lZCAoV0lOMzIpIHx8IGRlZmluZWQgKGN5Z3dpbikKLSAgICB7SUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCisgICAge05FVFNOTVBfSUZBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCiAjZWxzZQotICAgIHtJRkFETUlOU1RBVFVTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgN319LAorICAgIHtORVRTTk1QX0lGQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCA3fX0sCiAjZW5kaWYKLSAgICB7SUZPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgOH19LAotICAgIHtJRkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDl9fSwKLSAgICB7SUZJTk9DVEVUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEwfX0sCi0gICAge0lGSU5VQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxMX19LAotICAgIHtJRklOTlVDQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEyfX0sCi0gICAge0lGSU5ESVNDQVJEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEzfX0sCi0gICAge0lGSU5FUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxNH19LAotICAgIHtJRklOVU5LTk9XTlBST1RPUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE1fX0sCi0gICAge0lGT1VUT0NURVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTZ9fSwKLSAgICB7SUZPVVRVQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxN319LAotICAgIHtJRk9VVE5VQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxOH19LAotICAgIHtJRk9VVERJU0NBUkRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTl9fSwKLSAgICB7SUZPVVRFUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMH19LAotICAgIHtJRk9VVFFMRU4sIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjF9fSwKLSAgICB7SUZTUEVDSUZJQywgQVNOX09CSkVDVF9JRCwgUk9OTFksIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjJ9fQorICAgIHtORVRTTk1QX0lGT1BFUlNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDh9fSwKKyAgICB7TkVUU05NUF9JRkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDl9fSwKKyAgICB7TkVUU05NUF9JRklOT0NURVRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTB9fSwKKyAgICB7TkVUU05NUF9JRklOVUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTF9fSwKKyAgICB7TkVUU05NUF9JRklOTlVDQVNUUEtUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDEyfX0sCisgICAge05FVFNOTVBfSUZJTkRJU0NBUkRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTN9fSwKKyAgICB7TkVUU05NUF9JRklORVJST1JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTR9fSwKKyAgICB7TkVUU05NUF9JRklOVU5LTk9XTlBST1RPUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZFbnRyeSwgMywgezIsIDEsIDE1fX0sCisgICAge05FVFNOTVBfSUZPVVRPQ1RFVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxNn19LAorICAgIHtORVRTTk1QX0lGT1VUVUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMTd9fSwKKyAgICB7TkVUU05NUF9JRk9VVE5VQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxOH19LAorICAgIHtORVRTTk1QX0lGT1VURElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAxOX19LAorICAgIHtORVRTTk1QX0lGT1VURVJST1JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjB9fSwKKyAgICB7TkVUU05NUF9JRk9VVFFMRU4sIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZkVudHJ5LCAzLCB7MiwgMSwgMjF9fSwKKyAgICB7TkVUU05NUF9JRlNQRUNJRklDLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmRW50cnksIDMsIHsyLCAxLCAyMn19CiB9OwogCiAvKgpAQCAtMzg1LDcgKzQwOSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIElGTlVNQkVSOgorICAgIGNhc2UgTkVUU05NUF9JRk5VTUJFUjoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBJbnRlcmZhY2VfU2Nhbl9HZXRfQ291bnQoKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICBkZWZhdWx0OgpAQCAtNTcyLDEwICs1OTYsMTAgQEAKICAgICBpZl9wdHIgPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfb3ZlcnJpZGVzX2dldChpZl9uYW1lKTsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGludGVyZmFjZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGREVTQ1I6CisgICAgY2FzZSBORVRTTk1QX0lGREVTQ1I6CiAgICAgICAgIGNwID0gaWZfbmFtZTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oaWZfbmFtZSk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGNwOwpAQCAtNTg1LDE0ICs2MDksMTQgQEAKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IChsb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX3R5cGU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk1UVToKKyAgICBjYXNlIE5FVFNOTVBfSUZNVFU6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfbXR1OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVFRDoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVFRDoKICAgICAgICAgaWYgKGlmX3B0cikKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZfcHRyLT5zcGVlZDsKICAgICAgICAgZWxzZSB7Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURV9JRlNfVkFMVUUKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURV9JRlNfVkFMVUUKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2JhdWRyYXRlLmlmc192YWx1ZSA8PAogICAgICAgICAgICAgaWZfbXNnLmlmbV9kYXRhLmlmaV9iYXVkcmF0ZS5pZnNfbG9nMjsKICNlbHNlCkBAIC02MDAsNTIgKzYyNCw1MiBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgIC8qCiAgICAgICAgICAqIFhYWCAKICAgICAgICAgICovCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZl9tc2cuaWZtX2ZsYWdzICYgSUZGX1VQID8gMSA6IDI7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9QRVJTVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZl9tc2cuaWZtX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKICAgICAgICAgLyoKICAgICAgICAgICogaWZMYXN0Q2hhbmdlIAogICAgICAgICAgKi8KLSAgICBjYXNlIElGSU5PQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5PQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9pYnl0ZXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9CiAgICAgICAgICAgICAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2lwYWNrZXRzIC0KICAgICAgICAgICAgIGlmX21zZy5pZm1fZGF0YS5pZmlfaW1jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2ltY2FzdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX2lxZHJvcHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRklORVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfaWVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VTktOT1dOUFJPVE9TOgorICAgIGNhc2UgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX25vcHJvdG87CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRPQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9vYnl0ZXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRVQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0KICAgICAgICAgICAgICh1X2xvbmcpIGlmX21zZy5pZm1fZGF0YS5pZmlfb3BhY2tldHMgLQogICAgICAgICAgICAgaWZfbXNnLmlmbV9kYXRhLmlmaV9vbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVROVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZfbXNnLmlmbV9kYXRhLmlmaV9vbWNhc3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICNpZmRlZiBpZl9vZHJvcHMKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX29kcm9wczsKICNlbHNlCkBAIC02NTUsMTAgKzY3OSwxMCBAQAogICAgICAgICBsb25nX3JldHVybiA9IDA7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZl9tc2cuaWZtX2RhdGEuaWZpX29lcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkxBU1RDSEFOR0U6CisgICAgY2FzZSBORVRTTk1QX0lGTEFTVENIQU5HRToKICNpZmRlZiBpcml4NgogICAgICAgICBsb25nX3JldHVybiA9IDA7CiAjZWxzZQpAQCAtNzUyLDcgKzc3Niw3IEBACiAgICAgc3RhdGljIGNoYXIgICAgIE5hbWVbMTZdOwogICAgIGNoYXIgICAgICAgICAgICpjcDsKICAgICBjb25mX2lmX2xpc3QgICAqaWZfcHRyOwotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAjZW5kaWYKIApAQCAtNzY1LDEwICs3ODksMTAgQEAKICAgICBpZl9wdHIgPSBuZXRzbm1wX2FjY2Vzc19pbnRlcmZhY2VfZW50cnlfb3ZlcnJpZGVzX2dldChOYW1lKTsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGludGVyZmFjZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGREVTQ1I6CisgICAgY2FzZSBORVRTTk1QX0lGREVTQ1I6CiAgICAgICAgIGNwID0gTmFtZTsKICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oY3ApOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBjcDsKQEAgLTc3NiwyNiArODAwLDI2IEBACiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+dHlwZTsKICAgICAgICAgZWxzZSB7Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9UWVBFCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl90eXBlOwogI2Vsc2UKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gMTsgICAgLyogT1RIRVIgKi8KICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk1UVTp7CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOnsKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmbmV0LmlmX210dTsKICAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgICAgIH0KLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UgewotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEUKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9iYXVkcmF0ZTsKLSNlbGlmIFNUUlVDVF9JRk5FVF9IQVNfSUZfU1BFRUQKKyNlbGlmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1NQRUVECiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NwZWVkOwotI2VsaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9UWVBFICYmIGRlZmluZWQoSUZUX0VUSEVSKQorI2VsaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRSAmJiBkZWZpbmVkKElGVF9FVEhFUikKICAgICAgICAgICAgIGlmIChpZm5ldC5pZl90eXBlID09IElGVF9FVEhFUikKICAgICAgICAgICAgICAgICBsb25nX3JldHVybiA9IDEwMDAwMDAwOwogICAgICAgICAgICAgaWYgKGlmbmV0LmlmX3R5cGUgPT0gSUZUX1AxMCkKQEAgLTgxNCw3ICs4MzgsNyBAQAogI2VuZGlmCiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgIEludGVyZmFjZV9HZXRfRXRoZXJfQnlfSW5kZXgoaW50ZXJmYWNlLCByZXR1cm5fYnVmKTsKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogCSp2YXJfbGVuID0gMDsKQEAgLTgyNywxNCArODUxLDE0IEBACiAgICAgICAgICAgICAqdmFyX2xlbiA9IDY7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcmV0dXJuX2J1ZjsKLSAgICBjYXNlIElGQURNSU5TVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGQURNSU5TVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZmxhZ3MgJiBJRkZfVVAgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1BFUlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKLSNpZiBkZWZpbmVkKFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMpICYmICEoZGVmaW5lZChmcmVlYnNkMikgJiYgX19GcmVlQlNEX3ZlcnNpb24gPCAxOTk2MDcpCisgICAgY2FzZSBORVRTTk1QX0lGTEFTVENIQU5HRToKKyNpZiBkZWZpbmVkKEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDKSAmJiAhKGRlZmluZWQoZnJlZWJzZDIpICYmIF9fRnJlZUJTRF92ZXJzaW9uIDwgMTk5NjA3KQogICAgICAgICAvKgogICAgICAgICAgKiBYWFggLSBTTk1QJ3MgaWZMYXN0Y2hhbmdlIGlzIHRpbWUgd2hlbiBvcC4gc3RhdHVzIGNoYW5nZWQKICAgICAgICAgICogKiBGcmVlQlNEJ3MgaWZfbGFzdGNoYW5nZSBpcyB0aW1lIHdoZW4gcGFja2V0IHdhcyBpbnB1dCBvciBvdXRwdXQKQEAgLTg2Myw4ICs4ODcsOCBAQAogICAgICAgICBsb25nX3JldHVybiA9IDA7ICAgICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTk9DVEVUUzoKLSNpZmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lCWVRFUworICAgIGNhc2UgTkVUU05NUF9JRklOT0NURVRTOgorI2lmZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lCWVRFUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaWJ5dGVzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC04NzcsMTQgKzkwMSwxNCBAQAogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzICogMzA4OyAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVDQVNUUEtUUzoKICAgICAgICAgewogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzOwogI2VuZGlmCi0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9JTUNBU1RTCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiAtPSAodV9sb25nKSBpZm5ldC5pZl9pbWNhc3RzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC04OTMsOCArOTE3LDggQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaW1jYXN0cyAmIDB4ZmZmZmZmZmY7CiAjZWxzZQpAQCAtOTA3LDggKzkzMSw4IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5ESVNDQVJEUzoKLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lRRFJPUFMKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRJU0NBUkRTOgorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lxZHJvcHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTkyMSwxNSArOTQ1LDE1IEBACiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5FUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5FUlJPUlM6CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9pZXJyb3JzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaWVycm9yczsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVOS05PV05QUk9UT1M6Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9OT1BST1RPCisgICAgY2FzZSBORVRTTk1QX0lGSU5VTktOT1dOUFJPVE9TOgorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX05PUFJPVE8KICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX25vcHJvdG8gJiAweGZmZmZmZmZmOwogI2Vsc2UKQEAgLTk0Miw4ICs5NjYsOCBAQAogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIDA7ICAgICAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKLSNpZmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09CWVRFUworICAgIGNhc2UgTkVUU05NUF9JRk9VVE9DVEVUUzoKKyNpZmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PQllURVMKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29ieXRlcyAmIDB4ZmZmZmZmZmY7CiAjZWxzZQpAQCAtOTU2LDE0ICs5ODAsMTQgQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9vcGFja2V0cyAqIDMwODsgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICAgICAgICAgewogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzOwogI2VuZGlmCi0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PTUNBU1RTCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT01DQVNUUwogI2lmIGRlZmluZWQoYWl4NCkgfHwgZGVmaW5lZChhaXg1KSB8fCBkZWZpbmVkKGFpeDYpCiAgICAgICAgICAgICBsb25nX3JldHVybiAtPSAodV9sb25nKSBpZm5ldC5pZl9vbWNhc3RzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC05NzIsOCArOTk2LDggQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PTUNBU1RTCisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9PTUNBU1RTCiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9vbWNhc3RzICYgMHhmZmZmZmZmZjsKICNlbHNlCkBAIC05ODYsMjggKzEwMTAsMjggQEAKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSAwOyAgICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICNpZiBkZWZpbmVkKGFpeDQpIHx8IGRlZmluZWQoYWl4NSkgfHwgZGVmaW5lZChhaXg2KQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NuZC5pZnFfZHJvcHMgJiAweGZmZmZmZmZmOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9zbmQuaWZxX2Ryb3BzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVEVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRFUlJPUlM6CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9vZXJyb3JzICYgMHhmZmZmZmZmZjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfb2Vycm9yczsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRRTEVOOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFFMRU46CiAjaWYgZGVmaW5lZChhaXg0KSB8fCBkZWZpbmVkKGFpeDUpIHx8IGRlZmluZWQoYWl4NikKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9zbmQuaWZxX2xlbiAmIDB4ZmZmZmZmZmY7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX3NuZC5pZnFfbGVuOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUNJRklDOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUNJRklDOgogICAgICAgICAqdmFyX2xlbiA9IG51bGxPaWRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIG51bGxPaWQ7CiAgICAgZGVmYXVsdDoKQEAgLTEwNDAsNyArMTA2NCw3IEBACiAgICAgc3RhdGljIGNoYXIgICAgIE5hbWVbMTZdOwogI2VuZGlmCiAgICAgcmVnaXN0ZXIgY2hhciAgKmNwOwotI2lmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMKKyNpZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAjZW5kaWYKICNpZiAhZGVmaW5lZChocHV4MTEpCkBAIC0xMDgzLDEwICsxMTA3LDEwIEBACiAgICAgaWZfcHRyID0gbmV0c25tcF9hY2Nlc3NfaW50ZXJmYWNlX2VudHJ5X292ZXJyaWRlc19nZXQoTmFtZSk7CiAKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewotICAgIGNhc2UgSUZJTkRFWDoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRFWDoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpbnRlcmZhY2U7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkRFU0NSOgorICAgIGNhc2UgTkVUU05NUF9JRkRFU0NSOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBjcCA9IGlmbmV0LmlmX2VudHJ5LmlmRGVzY3I7CiAjZWxzZQpAQCAtMTExMSw3ICsxMTM1LDcgQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk1UVTp7CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOnsKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmbmV0LmlmX2VudHJ5LmlmTXR1OwogI2Vsc2UKQEAgLTExMTksNyArMTE0Myw3IEBACiAjZW5kaWYKICAgICAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgICAgIH0KLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UgewpAQCAtMTEzMyw3ICsxMTU3LDcgQEAKICNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlBIWVNBRERSRVNTOgorICAgIGNhc2UgTkVUU05NUF9JRlBIWVNBRERSRVNTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICAqdmFyX2xlbiA9IGlmbmV0LmlmX2VudHJ5LmlmUGh5c0FkZHJlc3Mub19sZW5ndGg7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGlmbmV0LmlmX2VudHJ5LmlmUGh5c0FkZHJlc3Mub19ieXRlczsKQEAgLTExNDcsMjEgKzExNzEsMjEgQEAKICAgICAgICAgICAgICp2YXJfbGVuID0gNjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcmV0dXJuX2J1ZjsKICNlbmRpZgotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkFkbWluOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9mbGFncyAmIElGRl9VUCA/IDEgOiAyOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9QRVJTVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk9wZXI7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZMQVNUQ0hBTkdFOgorICAgIGNhc2UgTkVUU05NUF9JRkxBU1RDSEFOR0U6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZMYXN0Q2hhbmdlOwogI2Vsc2UKQEAgLTExNzEsNyArMTE5NSw3IEBACiAgICAgICAgICAgICBsb25nX3JldHVybiA9IDA7ICAgIC8qIFhYWCAqLwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRklOT0NURVRTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmSW5PY3RldHM7CiAjZWxzZQpAQCAtMTE4MSw3ICsxMjA1LDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZuZXQuaWZfaXBhY2tldHMgKiAzMDg7ICAgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVDQVNUUEtUUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkluVWNhc3RQa3RzOwogI2Vsc2UKQEAgLTExOTEsNyArMTIxNSw3IEBACiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX2lwYWNrZXRzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZJbk5VY2FzdFBrdHM7CiAjZWxzZQpAQCAtMTIwMSw3ICsxMjI1LDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkRJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRklORElTQ0FSRFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZJbkRpc2NhcmRzOwogI2Vsc2UKQEAgLTEyMTEsMTQgKzEyMzUsMTQgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkVSUk9SUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZkluRXJyb3JzOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9pZXJyb3JzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVU5LTk9XTlBST1RPUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVOS05PV05QUk9UT1M6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZJblVua25vd25Qcm90b3M7CiAjZWxzZQpAQCAtMTIyOCw3ICsxMjUyLDcgQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRPQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUT0NURVRTOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmT3V0T2N0ZXRzOwogI2Vsc2UKQEAgLTEyMzgsNyArMTI2Miw3IEBACiAgICAgICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbmV0LmlmX29wYWNrZXRzICogMzA4OyAgICAgLyogWFhYICovCiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk91dFVjYXN0UGt0czsKICNlbHNlCkBAIC0xMjQ4LDcgKzEyNzIsNyBAQAogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm5ldC5pZl9vcGFja2V0czsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVROVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE5VQ0FTVFBLVFM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZPdXROVWNhc3RQa3RzOwogI2Vsc2UKQEAgLTEyNTgsMjggKzEyODIsMjggQEAKICAgICAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgMDsgICAvKiBYWFggKi8KICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICNpZiBkZWZpbmVkKGhwdXgxMSkKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9lbnRyeS5pZk91dERpc2NhcmRzOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm5ldC5pZl9zbmQuaWZxX2Ryb3BzOwogI2VuZGlmCiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVEVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRFUlJPUlM6CiAjaWYgZGVmaW5lZChocHV4MTEpCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfZW50cnkuaWZPdXRFcnJvcnM7CiAjZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX29lcnJvcnM7CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUUUxFTjoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRRTEVOOgogI2lmIGRlZmluZWQoaHB1eDExKQogICAgICAgICBsb25nX3JldHVybiA9IGlmbmV0LmlmX2VudHJ5LmlmT3V0UWxlbjsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZuZXQuaWZfc25kLmlmcV9sZW47CiAjZW5kaWYKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFQ0lGSUM6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFQ0lGSUM6CiAgICAgICAgICp2YXJfbGVuID0gbnVsbE9pZExlbjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgbnVsbE9pZDsKICAgICBkZWZhdWx0OgpAQCAtMTMzMSwxMCArMTM1NSwxMCBAQAogICAgICAqIGlmX3B0ciA9IG5ldHNubXBfYWNjZXNzX2ludGVyZmFjZV9lbnRyeV9vdmVycmlkZXNfZ2V0KE5hbWUpOwogICAgICAqLwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGlmc3RhdC5pZkluZGV4OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZERVNDUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZERVNDUjoKICAgICAgICAgKnZhcl9sZW4gPSBpZnN0YXQuaWZEZXNjci5vX2xlbmd0aDsKICAgICAgICAgKHZvaWQpIG1lbWNweShyZXR1cm5fYnVmLCBpZnN0YXQuaWZEZXNjci5vX2J5dGVzLCAqdmFyX2xlbik7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIHJldHVybl9idWY7CkBAIC0xMzQ0LDY1ICsxMzY4LDY1IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZUeXBlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZNVFU6CisgICAgY2FzZSBORVRTTk1QX0lGTVRVOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk10dTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZTcGVlZDsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGUEhZU0FERFJFU1M6CisgICAgY2FzZSBORVRTTk1QX0lGUEhZU0FERFJFU1M6CiAgICAgICAgICp2YXJfbGVuID0gaWZzdGF0LmlmUGh5c0FkZHJlc3Mub19sZW5ndGg7CiAgICAgICAgICh2b2lkKSBtZW1jcHkocmV0dXJuX2J1ZiwgaWZzdGF0LmlmUGh5c0FkZHJlc3Mub19ieXRlcywgKnZhcl9sZW4pOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSByZXR1cm5fYnVmOwotICAgIGNhc2UgSUZBRE1JTlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZBRE1JTlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZBZG1pblN0YXR1czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1BFUlNUQVRVUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPUEVSU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk9wZXJTdGF0dXM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRkxBU1RDSEFOR0U6CisgICAgY2FzZSBORVRTTk1QX0lGTEFTVENIQU5HRToKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZMYXN0Q2hhbmdlOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTk9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZJbk9jdGV0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5OVWNhc3RQa3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkRJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRklORElTQ0FSRFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5EaXNjYXJkczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5FUlJPUlM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5FUlJPUlM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5FcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVU5LTk9XTlBST1RPUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVOS05PV05QUk9UT1M6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZzdGF0LmlmSW5Vbmtub3duUHJvdG9zOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRPQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUT0NURVRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZk91dE9jdGV0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVFVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXRVY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXROVWNhc3RQa3RzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXREaXNjYXJkczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXRFcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFFMRU46CisgICAgY2FzZSBORVRTTk1QX0lGT1VUUUxFTjoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZnN0YXQuaWZPdXRRTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVDSUZJQzoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVDSUZJQzoKIAlsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmc3RhdC5pZlNwZWNpZmljOwogCXJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47CiAgICAgZGVmYXVsdDoKQEAgLTE5NDcsMTAgKzE5NzEsMTMgQEAKICAgICBpbnQgICAgICAgICAgICAgcmV0OwogCiAgICAgaWYgKCFpZl9wdHIpIHsKLSAgICAgICAgaWYgKGNvdW50KQorICAgICAgICBpZiAoY291bnQpIHsKICAgICAgICAgICAgIGlmX3B0ciA9CiAgICAgICAgICAgICAgICAgKG5tYXBpX3BoeXN0YXQgKikgbWFsbG9jKHNpemVvZihubWFwaV9waHlzdGF0KSAqIGNvdW50KTsKLSAgICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKGlmX3B0ciA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAoMCk7CisKKyAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICByZXR1cm4gKDApOyAgICAgICAgIC8qIEVPRiAqLwogICAgIH0KIApAQCAtMTk5Nyw3ICsyMDI0LDcgQEAKICAgICBzdHJ1Y3QgaWZuZXQgICAgaWZuZXQ7CiAgICAgc3RydWN0IGluX2lmYWRkciAqaWEsIGluX2lmYWRkcjsKICAgICBzaG9ydCAgICAgICAgICAgaGFzX2lwYWRkciA9IDA7Ci0jaWYgIVNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKKyNpZiAhSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKICAgICByZWdpc3RlciBjaGFyICAqY3A7CiAjZW5kaWYKIApAQCAtMjAwOSw3ICsyMDM2LDcgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9pbnRlcmZhY2VzOkludGVyZmFjZV9TY2FuX05leHQiLCAia2xvb2t1cCBmYWlsZWRcbiIpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0jaWYgU1RSVUNUX0lGTkVUX0hBU19JRl9YTkFNRQorI2lmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1hOQU1FCiAjaWYgZGVmaW5lZChuZXRic2QxKSB8fCBkZWZpbmVkKG9wZW5ic2QyKQogICAgICAgICBzdHJsY3B5KHNhdmVOYW1lLCBpZm5ldC5pZl94bmFtZSwgc2l6ZW9mKHNhdmVOYW1lKSk7CiAjZWxzZQpAQCAtMjA2OCw3ICsyMDk1LDcgQEAKICNlbmRpZgogICAgICAgICAgICAgfQogCi0jaWYgIWRlZmluZWQobmV0YnNkMSkgJiYgIWRlZmluZWQoZnJlZWJzZDIpICYmICFkZWZpbmVkKG9wZW5ic2QyKSAmJiAhZGVmaW5lZChTVFJVQ1RfSUZORVRfSEFTX0lGX0FERFJMSVNUKQorI2lmICFkZWZpbmVkKG5ldGJzZDEpICYmICFkZWZpbmVkKGZyZWVic2QyKSAmJiAhZGVmaW5lZChvcGVuYnNkMikgJiYgIWRlZmluZWQoSEFWRV9TVFJVQ1RfSUZORVRfSUZfQUREUkxJU1QpCiAgICAgICAgICAgICBpZm5ldC5pZl9hZGRybGlzdCA9IChzdHJ1Y3QgaWZhZGRyICopIGlhOyAgIC8qIFdST05HIERBVEEgVFlQRTsgT05MWSBBIEZMQUcgKi8KICNlbmRpZgogICAgICAgICAgICAgLyoKQEAgLTI1MjksMTAgKzI1NTYsMTAgQEAKICAgICAgKi8KIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRklOREVYOgorICAgIGNhc2UgTkVUU05NUF9JRklOREVYOgogICAgICAgICBsb25nX3JldHVybiA9IGludGVyZmFjZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGREVTQ1I6CisgICAgY2FzZSBORVRTTk1QX0lGREVTQ1I6CiAgICAgICAgIGNwID0gaWZtZC5pZm1kX25hbWU7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGNwKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgY3A7CkBAIC0yNTQyLDE2ICsyNTY5LDE2IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfdHlwZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTVRVOgorICAgIGNhc2UgTkVUU05NUF9JRk1UVToKICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX210dTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGU1BFRUQ6CisgICAgY2FzZSBORVRTTk1QX0lGU1BFRUQ6CiAgICAgICAgIGlmIChpZl9wdHIpCiAgICAgICAgICAgICBsb25nX3JldHVybiA9IGlmX3B0ci0+c3BlZWQ7CiAgICAgICAgIGVsc2UKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfYmF1ZHJhdGU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlBIWVNBRERSRVNTOgorICAgIGNhc2UgTkVUU05NUF9JRlBIWVNBRERSRVNTOgogICAgICAgICB7CiAgICAgICAgICAgICBjaGFyICAgICAgICAgICAqY3A7CiAgICAgICAgICAgICBpZiAoZ2V0X3BoeXNfYWRkcmVzcyhpbnRlcmZhY2UsICZjcCwgdmFyX2xlbikpCkBAIC0yNTU5LDEzICsyNTg2LDEzIEBACiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNwOwogICAgICAgICB9Ci0gICAgY2FzZSBJRkFETUlOU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRkFETUlOU1RBVFVTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9mbGFncyAmIElGRl9VUCA/IDEgOiAyOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPUEVSU1RBVFVTOgorICAgIGNhc2UgTkVUU05NUF9JRk9QRVJTVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZtZC5pZm1kX2ZsYWdzICYgSUZGX1JVTk5JTkcgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKKyAgICBjYXNlIE5FVFNOTVBfSUZMQVNUQ0hBTkdFOgogICAgICAgICBpZiAoaWZtZC5pZm1kX2RhdGEuaWZpX2xhc3RjaGFuZ2UudHZfc2VjID09IDAgJiYKICAgICAgICAgICAgIGlmbWQuaWZtZF9kYXRhLmlmaV9sYXN0Y2hhbmdlLnR2X3VzZWMgPT0gMCkgewogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSAwOwpAQCAtMjU3OSw0NSArMjYwNiw0NSBAQAogICAgICAgICAgICAgICAgICAgIHN0YXJ0dGltZS50dl91c2VjKSAvIDEwMDAwKSk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5PQ1RFVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5PQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX2lieXRlczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX2lwYWNrZXRzOwogICAgICAgICBsb25nX3JldHVybiAtPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfaW1jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5OVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfaW1jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5ESVNDQVJEUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRJU0NBUkRTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9pcWRyb3BzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZJTkVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfaWVycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGSU5VTktOT1dOUFJPVE9TOgorICAgIGNhc2UgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfbm9wcm90bzsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVE9DVEVUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfb2J5dGVzOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZPVVRVQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9ICh1X2xvbmcpIGlmbWQuaWZtZF9kYXRhLmlmaV9vcGFja2V0czsKICAgICAgICAgbG9uZ19yZXR1cm4gLT0gKHVfbG9uZykgaWZtZC5pZm1kX2RhdGEuaWZpX29tY2FzdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSAodV9sb25nKSBpZm1kLmlmbWRfZGF0YS5pZmlfb21jYXN0czsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VURElTQ0FSRFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZtZC5pZm1kX3NuZF9kcm9wczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VURVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVEVSUk9SUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZm1kLmlmbWRfZGF0YS5pZmlfb2Vycm9yczsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGT1VUUUxFTjoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRRTEVOOgogICAgICAgICBsb25nX3JldHVybiA9IGlmbWQuaWZtZF9zbmRfbGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZTUEVDSUZJQzoKKyAgICBjYXNlIE5FVFNOTVBfSUZTUEVDSUZJQzoKICAgICAgICAgKnZhcl9sZW4gPSBudWxsT2lkTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBudWxsT2lkOwogICAgIGRlZmF1bHQ6CkBAIC0yNzEyLDcgKzI3MzksNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBJRk5VTUJFUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZOVU1CRVI6CiAgICAgICAgIG5ldHNubXBfYXNzZXJ0KHNpemVvZihEV09SRCkgPT0gc2l6ZW9mKGxvbmdfcmV0dXJuKSk7CiAgICAgICAgIEdldE51bWJlck9mSW50ZXJmYWNlcygoRFdPUkQgKikgJmxvbmdfcmV0dXJuKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKQEAgLTI3NTAsMTAgKzI3NzcsMTAgQEAKICAgICBpZiAoR2V0SWZFbnRyeSgmaWZSb3cpICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewotICAgIGNhc2UgSUZJTkRFWDoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTkRFWDoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZkluZGV4OwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0dXJuOwotICAgIGNhc2UgSUZERVNDUjoKKyAgICBjYXNlIE5FVFNOTVBfSUZERVNDUjoKICAgICAgICAgKnZhcl9sZW4gPSBpZlJvdy5kd0Rlc2NyTGVuOwogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBpZlJvdy5iRGVzY3I7CiAgICAgY2FzZSBORVRTTk1QX0lGVFlQRToKQEAgLTI3NjIsNjggKzI3ODksNjggQEAKICAgICAgICAgZWxzZQogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3VHlwZTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTVRVOgorICAgIGNhc2UgTkVUU05NUF9JRk1UVToKICAgICAgICAgbG9uZ19yZXR1cm4gPSAobG9uZykgaWZSb3cuZHdNdHU7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUVEOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUVEOgogICAgICAgICBpZiAoaWZfcHRyKQogICAgICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZl9wdHItPnNwZWVkOwogICAgICAgICBlbHNlCiAgICAgICAgIGxvbmdfcmV0dXJuID0gKGxvbmcpIGlmUm93LmR3U3BlZWQ7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlBIWVNBRERSRVNTOgorICAgIGNhc2UgTkVUU05NUF9JRlBIWVNBRERSRVNTOgogICAgICAgICAqdmFyX2xlbiA9IGlmUm93LmR3UGh5c0FkZHJMZW47CiAgICAgICAgIG1lbWNweShyZXR1cm5fYnVmLCBpZlJvdy5iUGh5c0FkZHIsICp2YXJfbGVuKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgcmV0dXJuX2J1ZjsKLSAgICBjYXNlIElGQURNSU5TVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGQURNSU5TVEFUVVM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdBZG1pblN0YXR1czsKICAgICAgICAgYWRtaW5fc3RhdHVzID0gbG9uZ19yZXR1cm47CiAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZUlmRW50cnk7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9QRVJTVEFUVVM6CisgICAgY2FzZSBORVRTTk1QX0lGT1BFUlNUQVRVUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPQogICAgICAgICAgICAoTUlCX0lGX09QRVJfU1RBVFVTX09QRVJBVElPTkFMID09IGlmUm93LmR3T3BlclN0YXR1cykgPyAxIDogMjsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICBjYXNlIElGTEFTVENIQU5HRToKKyAgICBjYXNlIE5FVFNOTVBfSUZMQVNUQ0hBTkdFOgogICAgICAgICBsb25nX3JldHVybiA9IDAgLyogWFhYIG5vdCBhIFVOSVggZXBvY2hhbCB0aW1lIGlmUm93LmR3TGFzdENoYW5nZSAqLyA7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOT0NURVRTOgorICAgIGNhc2UgTkVUU05NUF9JRklOT0NURVRTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3SW5PY3RldHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVUNBU1RQS1RTOgorICAgIGNhc2UgTkVUU05NUF9JRklOVUNBU1RQS1RTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3SW5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOTlVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTk5VQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdJbk5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORElTQ0FSRFM6CisgICAgY2FzZSBORVRTTk1QX0lGSU5ESVNDQVJEUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd0luRGlzY2FyZHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklORVJST1JTOgorICAgIGNhc2UgTkVUU05NUF9JRklORVJST1JTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3SW5FcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRklOVU5LTk9XTlBST1RPUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZJTlVOS05PV05QUk9UT1M6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdJblVua25vd25Qcm90b3M7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE9DVEVUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRPQ1RFVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdPdXRPY3RldHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFVDQVNUUEtUUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRVQ0FTVFBLVFM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdPdXRVY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVE5VQ0FTVFBLVFM6CisgICAgY2FzZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUzoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd091dE5VY2FzdFBrdHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVERJU0NBUkRTOgorICAgIGNhc2UgTkVUU05NUF9JRk9VVERJU0NBUkRTOgogICAgICAgICBsb25nX3JldHVybiA9IGlmUm93LmR3T3V0RGlzY2FyZHM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVEVSUk9SUzoKKyAgICBjYXNlIE5FVFNOTVBfSUZPVVRFUlJPUlM6CiAgICAgICAgIGxvbmdfcmV0dXJuID0gaWZSb3cuZHdPdXRFcnJvcnM7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRk9VVFFMRU46CisgICAgY2FzZSBORVRTTk1QX0lGT1VUUUxFTjoKICAgICAgICAgbG9uZ19yZXR1cm4gPSBpZlJvdy5kd091dFFMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0gICAgY2FzZSBJRlNQRUNJRklDOgorICAgIGNhc2UgTkVUU05NUF9JRlNQRUNJRklDOgogICAgICAgICAqdmFyX2xlbiA9IG51bGxPaWRMZW47CiAgICAgICAgIHJldHVybiAodV9jaGFyICopIG51bGxPaWQ7CiAgICAgZGVmYXVsdDoKQEAgLTI4NDIsNyArMjg2OSw3IEBACiAgICAgICAgICAgICAgdV9jaGFyICogc3RhdFAsIG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbikKIHsKICAgICBNSUJfSUZST1cgICAgICAgaWZFbnRyeVJvdzsKLSAgICBpZiAoKGNoYXIpIG5hbWVbOV0gIT0gSUZBRE1JTlNUQVRVUykgeworICAgIGlmICgoY2hhcikgbmFtZVs5XSAhPSBORVRTTk1QX0lGQURNSU5TVEFUVVMpIHsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaW50ZXJmYWNlcy5oCmluZGV4IDUxZDRiMWQuLmMxOWI3YTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2ludGVyZmFjZXMuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pbnRlcmZhY2VzLmgKQEAgLTgsNyArOCw3IEBACiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIGNvbmZpZ3VyZSBtYWNyb3MKICAqLwotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKIC8qCiAgKiBjb25mbGljdHMgd2l0aCB0aGUgbmV3IE1GRCByZXdyaXRlCkBAIC02MSwyOSArNjEsMjkgQEAKIAogI2VuZGlmIC8qIFVTSU5HX0lGX01JQl9JRlRBQkxFX01PRFVMRSAqLwogCi0jZGVmaW5lIElGTlVNQkVSICAgICAgICAwCi0jZGVmaW5lIElGSU5ERVggICAgICAgICAxCi0jZGVmaW5lIElGREVTQ1IgICAgICAgICAyCisjZGVmaW5lIE5FVFNOTVBfSUZOVU1CRVIgICAgICAgIDAKKyNkZWZpbmUgTkVUU05NUF9JRklOREVYICAgICAgICAgMQorI2RlZmluZSBORVRTTk1QX0lGREVTQ1IgICAgICAgICAyCiAjZGVmaW5lIE5FVFNOTVBfSUZUWVBFICAgICAgICAgIDMKLSNkZWZpbmUgSUZNVFUgICAgICAgICAgIDQKLSNkZWZpbmUgSUZTUEVFRCAgICAgICAgIDUKLSNkZWZpbmUgSUZQSFlTQUREUkVTUyAgIDYKLSNkZWZpbmUgSUZBRE1JTlNUQVRVUyAgIDcKLSNkZWZpbmUgSUZPUEVSU1RBVFVTICAgIDgKLSNkZWZpbmUgSUZMQVNUQ0hBTkdFICAgIDkKLSNkZWZpbmUgSUZJTk9DVEVUUyAgICAgIDEwCi0jZGVmaW5lIElGSU5VQ0FTVFBLVFMgICAxMQotI2RlZmluZSBJRklOTlVDQVNUUEtUUyAgMTIKLSNkZWZpbmUgSUZJTkRJU0NBUkRTICAgIDEzCi0jZGVmaW5lIElGSU5FUlJPUlMgICAgICAxNAotI2RlZmluZSBJRklOVU5LTk9XTlBST1RPUyAxNQotI2RlZmluZSBJRk9VVE9DVEVUUyAgICAgMTYKLSNkZWZpbmUgSUZPVVRVQ0FTVFBLVFMgIDE3Ci0jZGVmaW5lIElGT1VUTlVDQVNUUEtUUyAxOAotI2RlZmluZSBJRk9VVERJU0NBUkRTICAgMTkKLSNkZWZpbmUgSUZPVVRFUlJPUlMgICAgIDIwCi0jZGVmaW5lIElGT1VUUUxFTiAgICAgICAyMQotI2RlZmluZSBJRlNQRUNJRklDICAgICAgMjIKKyNkZWZpbmUgTkVUU05NUF9JRk1UVSAgICAgICAgICAgNAorI2RlZmluZSBORVRTTk1QX0lGU1BFRUQgICAgICAgICA1CisjZGVmaW5lIE5FVFNOTVBfSUZQSFlTQUREUkVTUyAgIDYKKyNkZWZpbmUgTkVUU05NUF9JRkFETUlOU1RBVFVTICAgNworI2RlZmluZSBORVRTTk1QX0lGT1BFUlNUQVRVUyAgICA4CisjZGVmaW5lIE5FVFNOTVBfSUZMQVNUQ0hBTkdFICAgIDkKKyNkZWZpbmUgTkVUU05NUF9JRklOT0NURVRTICAgICAgMTAKKyNkZWZpbmUgTkVUU05NUF9JRklOVUNBU1RQS1RTICAgMTEKKyNkZWZpbmUgTkVUU05NUF9JRklOTlVDQVNUUEtUUyAgMTIKKyNkZWZpbmUgTkVUU05NUF9JRklORElTQ0FSRFMgICAgMTMKKyNkZWZpbmUgTkVUU05NUF9JRklORVJST1JTICAgICAgMTQKKyNkZWZpbmUgTkVUU05NUF9JRklOVU5LTk9XTlBST1RPUyAxNQorI2RlZmluZSBORVRTTk1QX0lGT1VUT0NURVRTICAgICAxNgorI2RlZmluZSBORVRTTk1QX0lGT1VUVUNBU1RQS1RTICAxNworI2RlZmluZSBORVRTTk1QX0lGT1VUTlVDQVNUUEtUUyAxOAorI2RlZmluZSBORVRTTk1QX0lGT1VURElTQ0FSRFMgICAxOQorI2RlZmluZSBORVRTTk1QX0lGT1VURVJST1JTICAgICAyMAorI2RlZmluZSBORVRTTk1QX0lGT1VUUUxFTiAgICAgICAyMQorI2RlZmluZSBORVRTTk1QX0lGU1BFQ0lGSUMgICAgICAyMgogCiAjaWZkZWYgbGludXgKIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXAuYwppbmRleCA2NzE3ZTJlLi4xNDAxYmQxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwLmMKQEAgLTE5LDEyICsxOSwxMiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaCIKICNpbmNsdWRlICJpcC5oIgogI2luY2x1ZGUgImlwQWRkci5oIgogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKICNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQJNQpAQCAtNjQsNDMgKzY0LDY5IEBACiAgKiBpbmZvcm1hdGlvbiBhdCAKICAqLwogc3RydWN0IHZhcmlhYmxlMSBpcGFkZHJfdmFyaWFibGVzW10gPSB7Ci0gICAge0lQQURBRERSLCAgICAgIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBBZGRyRW50cnksIDEsIHsxfX0sCi0gICAge0lQQURJRklOREVYLCAgIEFTTl9JTlRFR0VSLCAgIFJPTkxZLCB2YXJfaXBBZGRyRW50cnksIDEsIHsyfX0sCisgICAge0lQQURBRERSLCAgICAgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHsxfX0sCisgICAge0lQQURJRklOREVYLCAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHsyfX0sCiAjaWZuZGVmIHN1blYzCi0gICAge0lQQURORVRNQVNLLCAgIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBBZGRyRW50cnksIDEsIHszfX0sCisgICAge0lQQURORVRNQVNLLCAgIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBBZGRyRW50cnksIDEsIHszfX0sCiAjZW5kaWYKLSAgICB7SVBBREJDQVNUQUREUiwgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9pcEFkZHJFbnRyeSwgMSwgezR9fSwKLSAgICB7SVBBRFJFQVNNTUFYLCAgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9pcEFkZHJFbnRyeSwgMSwgezV9fQorICAgIHtJUEFEQkNBU1RBRERSLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwQWRkckVudHJ5LCAxLCB7NH19LAorICAgIHtJUEFEUkVBU01NQVgsICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwQWRkckVudHJ5LCAxLCB7NX19CiB9OwogCiBzdHJ1Y3QgdmFyaWFibGUxIGlwcm91dGVfdmFyaWFibGVzW10gPSB7Ci0gICAge0lQUk9VVEVERVNULCAgICBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxfX0sCi0gICAge0lQUk9VVEVJRklOREVYLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHsyfX0sCi0gICAge0lQUk9VVEVNRVRSSUMxLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHszfX0sCi0gICAge0lQUk9VVEVNRVRSSUMyLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs0fX0sCi0gICAge0lQUk9VVEVNRVRSSUMzLCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs1fX0sCi0gICAge0lQUk9VVEVNRVRSSUM0LCBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs2fX0sCi0gICAge0lQUk9VVEVORVhUSE9QLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs3fX0sCi0gICAge0lQUk9VVEVUWVBFLCAgICBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHs4fX0sCi0gICAge0lQUk9VVEVQUk9UTywgICBBU05fSU5URUdFUiwgICBST05MWSwgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs5fX0sCi0gICAge0lQUk9VVEVBR0UsICAgICBBU05fSU5URUdFUiwgICBSV1JJVEUsIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxMH19LAotICAgIHtJUFJPVVRFTUFTSywgICAgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTF9fSwKLSAgICB7SVBST1VURU1FVFJJQzUsIEFTTl9JTlRFR0VSLCAgIFJXUklURSwgdmFyX2lwUm91dGVFbnRyeSwgMSwgezEyfX0sCi0gICAge0lQUk9VVEVJTkZPLCAgICBBU05fT0JKRUNUX0lELCBST05MWSwgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxM319CisgICAge0lQUk9VVEVERVNULCAgICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxfX0sCisgICAge0lQUk9VVEVJRklOREVYLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsyfX0sCisgICAge0lQUk9VVEVNRVRSSUMxLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHszfX0sCisgICAge0lQUk9VVEVNRVRSSUMyLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs0fX0sCisgICAge0lQUk9VVEVNRVRSSUMzLCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs1fX0sCisgICAge0lQUk9VVEVNRVRSSUM0LCBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs2fX0sCisgICAge0lQUk9VVEVORVhUSE9QLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs3fX0sCisgICAge0lQUk9VVEVUWVBFLCAgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHs4fX0sCisgICAge0lQUk9VVEVQUk9UTywgICBBU05fSU5URUdFUiwgICBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezl9fSwKKyAgICB7SVBST1VURUFHRSwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2lwUm91dGVFbnRyeSwgMSwgezEwfX0sCisgICAge0lQUk9VVEVNQVNLLCAgICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9pcFJvdXRlRW50cnksIDEsIHsxMX19LAorICAgIHtJUFJPVVRFTUVUUklDNSwgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTJ9fSwKKyAgICB7SVBST1VURUlORk8sICAgIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBSb3V0ZUVudHJ5LCAxLCB7MTN9fQogfTsKIAogc3RydWN0IHZhcmlhYmxlMSBpcG1lZGlhX3ZhcmlhYmxlc1tdID0gewogI2lmZGVmIFVTSU5HX01JQklJX0FUX01PRFVMRQogI2lmIGRlZmluZWQgKFdJTjMyKSB8fCBkZWZpbmVkIChjeWd3aW4pCi0gICAge0lQTUVESUFJRklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgUldSSVRFLCB2YXJfYXRFbnRyeSwgMSwgezF9fSwKLSAgICB7SVBNRURJQVBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9hdEVudHJ5LCAxLCB7Mn19LAotICAgIHtJUE1FRElBTkVUQUREUkVTUywgIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX2F0RW50cnksIDEsIHszfX0sCi0gICAge0lQTUVESUFUWVBFLCAgICAgICAgQVNOX0lOVEVHRVIsICAgUldSSVRFLCB2YXJfYXRFbnRyeSwgMSwgezR9fQorICAgIHtJUE1FRElBSUZJTkRFWCwgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHsxfX0sCisgICAge0lQTUVESUFQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezJ9fSwKKyAgICB7SVBNRURJQU5FVEFERFJFU1MsICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7M319LAorICAgIHtJUE1FRElBVFlQRSwgICAgICAgIEFTTl9JTlRFR0VSLCAgIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHs0fX0KICNlbHNlCi0gICAge0lQTUVESUFJRklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7MX19LAotICAgIHtJUE1FRElBUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfYXRFbnRyeSwgMSwgezJ9fSwKLSAgICB7SVBNRURJQU5FVEFERFJFU1MsICBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2F0RW50cnksIDEsIHszfX0sCi0gICAge0lQTUVESUFUWVBFLCAgICAgICAgQVNOX0lOVEVHRVIsICAgUk9OTFksIHZhcl9hdEVudHJ5LCAxLCB7NH19CisgICAge0lQTUVESUFJRklOREVYLCAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7MX19LAorICAgIHtJUE1FRElBUEhZU0FERFJFU1MsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYXRFbnRyeSwgMSwgezJ9fSwKKyAgICB7SVBNRURJQU5FVEFERFJFU1MsICBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2F0RW50cnksIDEsIHszfX0sCisgICAge0lQTUVESUFUWVBFLCAgICAgICAgQVNOX0lOVEVHRVIsICAgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9hdEVudHJ5LCAxLCB7NH19CiAjZW5kaWYKICNlbmRpZgogfTsKQEAgLTEyMiw2ICsxNDgsNyBAQAogaW5pdF9pcCh2b2lkKQogewogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CisgICAgaW50IHJjOwogCiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgYXMgYSBncm91cCBvZiBzY2FsYXJzLi4uCkBAIC0xMjksNyArMTU2LDkgQEAKICAgICBERUJVR01TR1RMKCgibWliSUkvaXAiLCAiSW5pdGlhbGlzaW5nIElQIGdyb3VwXG4iKSk7CiAgICAgcmVnaW5mbyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCJpcCIsIGlwX2hhbmRsZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXBfb2lkLCBPSURfTEVOR1RIKGlwX29pZCksIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvLCBJUEZPUldBUkRJTkcsIElQUk9VVEVESVNDQVJEUyk7CisgICAgcmMgPSBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvLCBJUEZPUldBUkRJTkcsIElQUk9VVEVESVNDQVJEUyk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuOwogCiAgICAgLyoKICAgICAgKiAuLi4uIHdpdGggYSBsb2NhbCBjYWNoZQpAQCAtMjAwLDcgKzIyOSw3IEBACiAjZW5kaWYKIAogI2lmZGVmIE5FVEJTRF9TVEFUU19WSUFfU1lTQ1RMCi0jZGVmaW5lIElQX1NUQVRfU1RSVUNUVVJFICAgICAgc3RydWN0IGlwX21pYgorI2RlZmluZSBJUF9TVEFUX1NUUlVDVFVSRQlzdHJ1Y3QgaXBfbWliCiAjZGVmaW5lIFVTRVNfU05NUF9ERVNJR05FRF9JUFNUQVQKICN1bmRlZiBJUF9OU1RBVFMKICNlbmRpZgpAQCAtMzc4LDcgKzQwNyw3IEBACiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfZm9yd2FyZDsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBJUElOVU5LTk9XTlBST1RPUzoKLSNpZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9QUk9UTworI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9QUk9UTwogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX25vcHJvdG87CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTM4Niw3ICs0MTUsNyBAQAogICAgICAgICBjb250aW51ZTsKICNlbmRpZgogICAgIGNhc2UgSVBJTkRJU0NBUkRTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHRFJPUFBFRAorI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR0RST1BQRUQKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19mcmFnZHJvcHBlZDsgICAvKiA/PyAqLwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC0zOTQsNyArNDIzLDcgQEAKICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICBjYXNlIElQSU5ERUxJVkVSUzoKLSNpZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfREVMSVZFUkVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19ERUxJVkVSRUQKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19kZWxpdmVyZWQgJiAweGZmZmZmZmZmOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00MDIsNyArNDMxLDcgQEAKICAgICAgICAgY29udGludWU7CiAjZW5kaWYKICAgICBjYXNlIElQT1VUUkVRVUVTVFM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0xPQ0FMT1VUCisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19MT0NBTE9VVAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX2xvY2Fsb3V0ICYgMHhmZmZmZmZmZjsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDEwLDcgKzQzOSw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgY2FzZSBJUE9VVERJU0NBUkRTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19PRFJPUFBFRAorI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0RST1BQRUQKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19vZHJvcHBlZDsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDMzLDcgKzQ2Miw3IEBACiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfZnJhZ21lbnRzOwogICAgICAgICBicmVhazsKICAgICBjYXNlIElQUkVBU01PS1M6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX1JFQVNTRU1CTEVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19SRUFTU0VNQkxFRAogICAgICAgICByZXRfdmFsdWUgPSBpcHN0YXQuaXBzX3JlYXNzZW1ibGVkOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC00NDQsNyArNDczLDcgQEAKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19mcmFnZHJvcHBlZCArIGlwc3RhdC5pcHNfZnJhZ3RpbWVvdXQ7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSVBGUkFHT0tTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHTUVOVEVECisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHTUVOVEVECiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfZnJhZ21lbnRzOwogICAgICAgICBicmVhazsKICNlbHNlICAgICAgICAgICAgLyogWFhYICovCkBAIC00NTMsNyArNDgyLDcgQEAKICAgICAgICAgYnJlYWs7CiAjZW5kaWYKICAgICBjYXNlIElQRlJBR0ZBSUxTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URlJBRworI2lmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZSQUcKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19jYW50ZnJhZzsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDYxLDcgKzQ5MCw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgY2FzZSBJUEZSQUdDUkVBVEVTOgotI2lmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19PRlJBR01FTlRTCisjaWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRlJBR01FTlRTCiAgICAgICAgIHJldF92YWx1ZSA9IGlwc3RhdC5pcHNfb2ZyYWdtZW50czsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtNDY5LDcgKzQ5OCw3IEBACiAgICAgICAgIGNvbnRpbnVlOwogI2VuZGlmCiAgICAgY2FzZSBJUFJPVVRFRElTQ0FSRFM6Ci0jaWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUk9VVEUKKyNpZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUk9VVEUKICAgICAgICAgcmV0X3ZhbHVlID0gaXBzdGF0Lmlwc19ub3JvdXRlOwogICAgICAgICBicmVhazsKICNlbHNlCkBAIC04MDYsOSArODM1LDkgQEAKICAgICByZXRfdmFsdWUgPSBuZXRic2RfcmVhZF9pcF9zdGF0KCZpcHN0YXQpOwogCiAgICAgaWYgKCByZXRfdmFsdWUgPCAwKSB7Ci0gICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2lwIiwgIkZhaWxlZCB0byBsb2FkIElQIEdyb3VwIChuZXRic2QpXG4iKSk7CisJREVCVUdNU0dUTCgoIm1pYklJL2lwIiwgIkZhaWxlZCB0byBsb2FkIElQIEdyb3VwIChuZXRic2QpXG4iKSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICBERUJVR01TR1RMKCgibWliSUkvaXAiLCAiTG9hZGVkIElQIEdyb3VwIChuZXRic2QpXG4iKSk7CisJREVCVUdNU0dUTCgoIm1pYklJL2lwIiwgIkxvYWRlZCBJUCBHcm91cCAobmV0YnNkKVxuIikpOwogICAgIH0KICAgICByZXR1cm4gcmV0X3ZhbHVlOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYwppbmRleCBmNTlhNjNhLi40MTk5MzkyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcEFkZHIuYwpAQCAtMTYsNyArMTYsNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKLSNpZiBkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpAQCAtMTE4LDcgKzExOCw2IEBACiAKICNpbmNsdWRlICJpcC5oIgogI2luY2x1ZGUgImludGVyZmFjZXMuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZmRlZiBjeWd3aW4KICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0yMjEsNyArMjIwLDcgQEAKICNpZiAhZGVmaW5lZChmcmVlYnNkMikgJiYgIWRlZmluZWQoaHB1eDExKSAmJiAhZGVmaW5lZChsaW51eCkKICAgICAgICAgaWYgKEludGVyZmFjZV9TY2FuX05leHQoJmludGVyZmFjZSwgTlVMTCwgJmlmbmV0LCAmaW5faWZhZGRyKSA9PSAwKQogICAgICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9BRERSTElTVAorI2lmZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJMSVNUCiAgICAgICAgIGlmIChpZm5ldC5pZl9hZGRybGlzdCA9PSAwKQogICAgICAgICAgICAgY29udGludWU7ICAgICAgICAgICAvKiBObyBhZGRyZXNzIGZvdW5kIGZvciBpbnRlcmZhY2UgKi8KICNlbmRpZgpAQCAtMjkwLDcgKzI4OSw3IEBACiAgICAgICAgIHJldHVybiAoTlVMTCk7CiAgICAgbWVtY3B5KChjaGFyICopIG5hbWUsIChjaGFyICopIGxvd2VzdCwgMTQgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IDE0OwotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXR1cm4pOwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBJUEFEQUREUjoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQWRkci5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmgKaW5kZXggNTI2YTA2MC4uZWM2OWNmMyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBBZGRyLmgKQEAgLTUsNyArNSw2IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9JUEFERFJfSAogI2RlZmluZSBfTUlCR1JPVVBfSVBBRERSX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKICNpZiAhZGVmaW5lZChORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMpCiBjb25maWdfcmVxdWlyZShtaWJJSS9pcCkKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXBDaWRyUm91dGVUYWJsZS5jCmluZGV4IDAwZDdkMTcuLjgxZTYyNTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwQ2lkclJvdXRlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9pcENpZHJSb3V0ZVRhYmxlLmMKQEAgLTI2MCwxMiArMjYwLDEwIEBACiAKICAgICB2b2lkICAgICAgICAgICAqZGF0YV9jb250ZXh0OwogCi0gICAgb2lkICAgICAgICAgICAgKnN1ZmZpeDsKLSAgICBzaXplX3QgICAgICAgICAgc3VmZml4X2xlbjsKLQogICAgIC8qKiBjb2x1bW4gYW5kIHJvdyBpbmRleCBlbmNvZGVkIHBvcnRpb24gKi8KLSAgICBzdWZmaXggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxOwotICAgIHN1ZmZpeF9sZW4gPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtCisgICAgY29uc3Qgb2lkICogY29uc3Qgc3VmZml4ID0KKyAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZSArIHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMTsKKyAgICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoIC0KICAgICAgICAgKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMSk7CiAKICAgICBmb3IgKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL2lwdjYuYwppbmRleCA0ZTE4NjhiLi41OTQxY2IwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9pcHY2LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvaXB2Ni5jCkBAIC00LDEwICs0LDEzIEBACiAgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotI2lmIGRlZmluZWQoSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQorI2lmIGRlZmluZWQoTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwpICYmICFkZWZpbmVkKF9LRVJORUwpCiAjZGVmaW5lIF9LRVJORUwgMQogI2RlZmluZSBfSV9ERUZJTkVEX0tFUk5FTAogI2VuZGlmCisjaWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMKKyNlbmRpZgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KQEAgLTEzNyw3ICsxNDAsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAogI2luY2x1ZGUgImtlcm5lbC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJpcHY2LmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogCkBAIC0xNjEsMTAxICsxNjMsMTMwIEBACiAjZW5kaWYKIAogc3RydWN0IHZhcmlhYmxlMyBpcHY2X3ZhcmlhYmxlc1tdID0gewotICAgIHtJUFY2Rk9SV0FSRElORywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NiwgMSwgezF9fSwKLSAgICB7SVBWNkRFRkFVTFRIT1BMSU1JVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NiwgMSwgezJ9fSwKLSAgICB7SVBWNklOVEVSRkFDRVMsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9pcHY2LCAxLCB7M319LAotICAgIHtJUFY2SUZUQkxMQVNUQ0hHLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX2lwdjYsIDEsIHs0fX0sCisgICAge0lQVjZGT1JXQVJESU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2LCAxLCB7MX19LAorICAgIHtJUFY2REVGQVVMVEhPUExJTUlULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2LCAxLCB7Mn19LAorICAgIHtJUFY2SU5URVJGQUNFUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjYsIDEsIHszfX0sCisgICAge0lQVjZJRlRCTExBU1RDSEcsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NiwgMSwgezR9fSwKIAotICAgIHtJUFY2SUZERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCAyfX0sCi0gICAge0lQVjZJRkxPV0xBWUVSLCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDN9fSwKLSAgICB7SVBWNklGRUZGRUNUTVRVLCBBU05fVU5TSUdORUQsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgNH19LAotICAgIHtJUFY2SUZSRUFTTU1BWFNJWkUsIEFTTl9VTlNJR05FRCwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA1fX0sCisgICAge0lQVjZJRkRFU0NSLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDJ9fSwKKyAgICB7SVBWNklGTE9XTEFZRVIsIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgM319LAorICAgIHtJUFY2SUZFRkZFQ1RNVFUsIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA0fX0sCisgICAge0lQVjZJRlJFQVNNTUFYU0laRSwgQVNOX1VOU0lHTkVELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDV9fSwKIAotICAgIHtJUFY2SUZUT0tFTiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA2fX0sCi0gICAge0lQVjZJRlRPS0VOTEVOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA3fX0sCi0gICAge0lQVjZJRlBIWVNBRERSRVNTLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDh9fSwKLSAgICB7SVBWNklGQURNU1RBVFVTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA5fX0sCi0gICAge0lQVjZJRk9QRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDEwfX0sCi0gICAge0lQVjZJRkxBU1RDSEFOR0UsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgMTF9fSwKKyAgICB7SVBWNklGVE9LRU4sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgNn19LAorICAgIHtJUFY2SUZUT0tFTkxFTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgN319LAorICAgIHtJUFY2SUZQSFlTQUREUkVTUywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCA4fX0sCisgICAge0lQVjZJRkFETVNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NSwgMSwgOX19LAorICAgIHtJUFY2SUZPUEVSU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs1LCAxLCAxMH19LAorICAgIHtJUFY2SUZMQVNUQ0hBTkdFLCBBU05fVElNRVRJQ0tTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezUsIDEsIDExfX0sCiAKLSAgICB7SVBWNklGU1RBVFNJTlJDVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDF9fSwKLSAgICB7SVBWNklGU1RBVFNJTkhEUkVSUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDJ9fSwKLSAgICB7SVBWNklGU1RBVFNUT09CSUdFUlJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAzfX0sCi0gICAge0lQVjZJRlNUQVRTSU5OT1JPVVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgNH19LAotICAgIHtJUFY2SUZTVEFUU0lOQUREUkVSUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDV9fSwKLSAgICB7SVBWNklGU1RBVFNJTlVOS05PV1BST1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCA2fX0sCi0gICAge0lQVjZJRlNUQVRTSU5UUlVOQ0FUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgN319LAotICAgIHtJUFY2SUZTVEFUU0lORElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDh9fSwKLSAgICB7SVBWNklGU1RBVFNJTkRFTElWRVJTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCA5fX0sCi0gICAge0lQVjZJRlNUQVRTT1VURk9SV0RBVEFTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pZnY2RW50cnksIDMsCi0gICAgIHs2LCAxLCAxMH19LAotICAgIHtJUFY2SUZTVEFUU09VVFJFUVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDExfX0sCi0gICAge0lQVjZJRlNUQVRTT1VURElTQ0FSRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDEyfX0sCi0gICAge0lQVjZJRlNUQVRTT1VURlJBR09LUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTN9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRGUkFHRkFJTFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDE0fX0sCi0gICAge0lQVjZJRlNUQVRTT1VURlJBR0NSRUFUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTV9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRSRUFTTVJFUVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDE2fX0sCi0gICAge0lQVjZJRlNUQVRTT1VUUkVBU01PS1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDE3fX0sCi0gICAge0lQVjZJRlNUQVRTT1VUUkVBU01GQUlMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTh9fSwKLSAgICB7SVBWNklGU1RBVFNJTk1DQVNUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWZ2NkVudHJ5LCAzLAotICAgICB7NiwgMSwgMTl9fSwKLSAgICB7SVBWNklGU1RBVFNPVVRNQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2lmdjZFbnRyeSwgMywKLSAgICAgezYsIDEsIDIwfX0sCisgICAge0lQVjZJRlNUQVRTSU5SQ1ZTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxfX0sCisgICAge0lQVjZJRlNUQVRTSU5IRFJFUlJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAyfX0sCisgICAge0lQVjZJRlNUQVRTVE9PQklHRVJSUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgM319LAorICAgIHtJUFY2SUZTVEFUU0lOTk9ST1VURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDR9fSwKKyAgICB7SVBWNklGU1RBVFNJTkFERFJFUlJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCA1fX0sCisgICAge0lQVjZJRlNUQVRTSU5VTktOT1dQUk9UUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgNn19LAorICAgIHtJUFY2SUZTVEFUU0lOVFJVTkNBVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDd9fSwKKyAgICB7SVBWNklGU1RBVFNJTkRJU0NBUkRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCA4fX0sCisgICAge0lQVjZJRlNUQVRTSU5ERUxJVkVSUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgOX19LAorICAgIHtJUFY2SUZTVEFUU09VVEZPUldEQVRBUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaWZ2NkVudHJ5LCAzLCB7NiwgMSwgMTB9fSwKKyAgICB7SVBWNklGU1RBVFNPVVRSRVFTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxMX19LAorICAgIHtJUFY2SUZTVEFUU09VVERJU0NBUkRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxMn19LAorICAgIHtJUFY2SUZTVEFUU09VVEZSQUdPS1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDEzfX0sCisgICAge0lQVjZJRlNUQVRTT1VURlJBR0ZBSUxTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxNH19LAorICAgIHtJUFY2SUZTVEFUU09VVEZSQUdDUkVBVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE1fX0sCisgICAge0lQVjZJRlNUQVRTT1VUUkVBU01SRVFTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxNn19LAorICAgIHtJUFY2SUZTVEFUU09VVFJFQVNNT0tTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAxN319LAorICAgIHtJUFY2SUZTVEFUU09VVFJFQVNNRkFJTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE4fX0sCisgICAge0lQVjZJRlNUQVRTSU5NQ0FTVFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lmdjZFbnRyeSwgMywgezYsIDEsIDE5fX0sCisgICAge0lQVjZJRlNUQVRTT1VUTUNBU1RQS1RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pZnY2RW50cnksIDMsIHs2LCAxLCAyMH19LAogCiAjaWYgMAotICAgIHtJUFY2QUREUlBSRUZJWE9OTElOS0ZMRywgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLAotICAgICB7NywgMSwgM319LAotICAgIHtJUFY2QUREUlBSRUZJWEFVVE9OT01PVVNGTEFHLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsCi0gICAgIHs3LCAxLCA0fX0sCi0gICAge0lQVjZBRERSUFJFRklYQURWUFJFRkVSTElGRSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLAotICAgICB7NywgMSwgNX19LAotICAgIHtJUFY2QUREUlBSRUZJWFZBTElETElGRSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLAotICAgICB7NywgMSwgNn19LAorICAgIHtJUFY2QUREUlBSRUZJWE9OTElOS0ZMRywgSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7NywgMSwgM319LAorICAgIHtJUFY2QUREUlBSRUZJWEFVVE9OT01PVVNGTEFHLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs3LCAxLCA0fX0sCisgICAge0lQVjZBRERSUFJFRklYQURWUFJFRkVSTElGRSwgVU5TSUdORUQzMiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7NywgMSwgNX19LAorICAgIHtJUFY2QUREUlBSRUZJWFZBTElETElGRSwgVU5TSUdORUQzMiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7NywgMSwgNn19LAogCi0gICAge0lQVjZBRERSUEZYTEVOLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCAyfX0sCi0gICAge0lQVjZBRERSVFlQRSwgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7OCwgMSwgM319LAotICAgIHtJUFY2QUREUkFOWUNBU1RGTEFHLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA0fX0sCi0gICAge0lQVjZBRERSU1RBVFVTLCBJTlRFR0VSLCBST05MWSwgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA1fX0sCisgICAge0lQVjZBRERSUEZYTEVOLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCAyfX0sCisgICAge0lQVjZBRERSVFlQRSwgSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2QWRkckVudHJ5LCAzLCB7OCwgMSwgM319LAorICAgIHtJUFY2QUREUkFOWUNBU1RGTEFHLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA0fX0sCisgICAge0lQVjZBRERSU1RBVFVTLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZBZGRyRW50cnksIDMsIHs4LCAxLCA1fX0sCiAKLSAgICB7SVBWNlJPVVRFSUZJTkRFWCwgSXBWNklGSU5ERVgsIFJPTkxZLCB2YXJfaXB2NlJvdXRlRW50cnksIDMsCi0gICAgIHsxMSwgMSwgNH19LAotICAgIHtJUFY2Uk9VVEVORVhUSE9QLCBJcFY2QUREUkVTUywgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCA1fX0sCi0gICAge0lQVjZST1VURVRZUEUsIElOVEVHRVIsIFJPTkxZLCB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgNn19LAotICAgIHtJUFY2Uk9VVEVQUk9UT0NPTCwgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA3fX0sCi0gICAge0lQVjZST1VURVBPTElDWSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCA4fX0sCi0gICAge0lQVjZST1VURUFHRSwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA5fX0sCi0gICAge0lQVjZST1VURU5FWFRIT1BSREksIFVOU0lHTkVEMzIsIFJPTkxZLCB2YXJfaXB2NlJvdXRlRW50cnksIDMsCi0gICAgIHsxMSwgMSwgMTB9fSwKLSAgICB7SVBWNlJPVVRFTUVUUklDLCBVTlNJR05FRDMyLCBST05MWSwgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLAotICAgICB7MTEsIDEsIDExfX0sCi0gICAge0lQVjZST1VURVdFSUdIVCwgVU5TSUdORUQzMiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywKLSAgICAgezExLCAxLCAxMn19LAotICAgIHtJUFY2Uk9VVEVJTkZPLCBPQkpJRCwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCAxM319LAotICAgIHtJUFY2Uk9VVEVWQUxJRCwgSU5URUdFUiwgUk9OTFksIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCAxNH19LAorICAgIHtJUFY2Uk9VVEVJRklOREVYLCBJcFY2SUZJTkRFWCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA0fX0sCisgICAge0lQVjZST1VURU5FWFRIT1AsIElwVjZBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDV9fSwKKyAgICB7SVBWNlJPVVRFVFlQRSwgSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCA2fX0sCisgICAge0lQVjZST1VURVBST1RPQ09MLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDd9fSwKKyAgICB7SVBWNlJPVVRFUE9MSUNZLCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDh9fSwKKyAgICB7SVBWNlJPVVRFQUdFLCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDl9fSwKKyAgICB7SVBWNlJPVVRFTkVYVEhPUFJESSwgVU5TSUdORUQzMiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcHY2Um91dGVFbnRyeSwgMywgezExLCAxLCAxMH19LAorICAgIHtJUFY2Uk9VVEVNRVRSSUMsIFVOU0lHTkVEMzIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXB2NlJvdXRlRW50cnksIDMsIHsxMSwgMSwgMTF9fSwKKyAgICB7SVBWNlJPVVRFV0VJR0hULCBVTlNJR05FRDMyLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDEyfX0sCisgICAge0lQVjZST1VURUlORk8sIE9CSklELCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDEzfX0sCisgICAge0lQVjZST1VURVZBTElELCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwdjZSb3V0ZUVudHJ5LCAzLCB7MTEsIDEsIDE0fX0sCiAKLSAgICB7SVBWNk5FVFRPTUVESUFQSFlBRERSLCBTVFJJTkcsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgMn19LAotICAgIHtJUFY2TkVUVE9NRURJQVRZUEUsIElOVEVHRVIsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgM319LAotICAgIHtJUFY2TkVUVE9NRURJQVNUQVRFLCBJTlRFR0VSLCBST05MWSwgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDR9fSwKLSAgICB7SVBWNk5FVFRPTUVESUFMQVNUVVBEQVRFLCBUSU1FVElDS1MsIFJPTkxZLCB2YXJfbmRwRW50cnksIDMsCi0gICAgIHsxMiwgMSwgNX19LAotICAgIHtJUFY2TkVUVE9NRURJQVZBTElELCBJTlRFR0VSLCBST05MWSwgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDZ9fSwKKyAgICB7SVBWNk5FVFRPTUVESUFQSFlBRERSLCBTVFJJTkcsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgMn19LAorICAgIHtJUFY2TkVUVE9NRURJQVRZUEUsIElOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgM319LAorICAgIHtJUFY2TkVUVE9NRURJQVNUQVRFLCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDR9fSwKKyAgICB7SVBWNk5FVFRPTUVESUFMQVNUVVBEQVRFLCBUSU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbmRwRW50cnksIDMsIHsxMiwgMSwgNX19LAorICAgIHtJUFY2TkVUVE9NRURJQVZBTElELCBJTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX25kcEVudHJ5LCAzLCB7MTIsIDEsIDZ9fSwKICNlbmRpZgogfTsKIG9pZCAgICAgICAgICAgICBpcHY2X3ZhcmlhYmxlc19vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNTUsIDEgfTsKQEAgLTI2NSw3NCArMjk2LDc0IEBACiAgICAgY29uZmlnX2FkZF9taWIoSVBWNiAtIE1JQikKICNlbmRpZgogICAgICBzdHJ1Y3QgdmFyaWFibGUzIGlwdjZpY21wX3ZhcmlhYmxlc1tdID0gewotICAgICAgICAge0lQVjZJRklDTVBJTk1TRywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDF9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5FUlJPUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyfX0sCi0gICAgICAgICB7SVBWNklGSUNNUElORFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgM319LAotICAgICAgICAge0lQVjZJRklDTVBJTkFETVBST0hTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgNH19LAotICAgICAgICAge0lQVjZJRklDTVBJTlRJTUVYQ0RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgNX19LAotICAgICAgICAge0lQVjZJRklDTVBJTlBBUk1QUk9CUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDZ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5QS1RUT09CSUdTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgN319LAotICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9TLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgOH19LAotICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9SRVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgOX19LAotICAgICAgICAge0lQVjZJRklDTVBJTlJUUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxMH19LAotICAgICAgICAge0lQVjZJRklDTVBJTlJUUkFEVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxMX19LAotICAgICAgICAge0lQVjZJRklDTVBJTk5CUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxMn19LAotICAgICAgICAge0lQVjZJRklDTVBJTk5CUkFEVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAxM319LAotICAgICAgICAge0lQVjZJRklDTVBJTlJFRElSRUNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDE0fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVRRVJZUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDE1fX0sCi0gICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVSU1BTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTZ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTd9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUTVNHLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTh9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VURVJST1JTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMTl9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VURFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjB9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUQURNUFJPSFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyMX19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRUSU1FWENEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDIyfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFBBUk1QUk9CUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDIzfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFBLVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyNH19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRFQ0hPUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDI1fX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVEVDSE9SRVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjZ9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUUlRSU0xJQ0lUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDI3fX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFJUUkFEVlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAyOH19LAotICAgICAgICAge0lQVjZJRklDTVBPVVROQlJTTElDSVRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMjl9fSwKLSAgICAgICAgIHtJUFY2SUZJQ01QT1VUTkJSQURWUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDMwfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVFJFRElSRUNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaWNtcHY2RW50cnksIDMsCi0gICAgICAgICAgezEsIDEsIDMxfX0sCi0gICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUUVSWVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAzMn19LAotICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJTUFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2ljbXB2NkVudHJ5LCAzLAotICAgICAgICAgIHsxLCAxLCAzM319LAotICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9pY21wdjZFbnRyeSwgMywKLSAgICAgICAgICB7MSwgMSwgMzR9fQorICAgICAgICAge0lQVjZJRklDTVBJTk1TRywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDF9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5FUlJPUlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyfX0sCisgICAgICAgICB7SVBWNklGSUNNUElORFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgM319LAorICAgICAgICAge0lQVjZJRklDTVBJTkFETVBST0hTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgICAgICAge0lQVjZJRklDTVBJTlRJTUVYQ0RTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgNX19LAorICAgICAgICAge0lQVjZJRklDTVBJTlBBUk1QUk9CUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDZ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5QS1RUT09CSUdTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgN319LAorICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9TLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgOH19LAorICAgICAgICAge0lQVjZJRklDTVBJTkVDSE9SRVBTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgOX19LAorICAgICAgICAge0lQVjZJRklDTVBJTlJUUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxMH19LAorICAgICAgICAge0lQVjZJRklDTVBJTlJUUkFEVlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxMX19LAorICAgICAgICAge0lQVjZJRklDTVBJTk5CUlNMSUNJVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxMn19LAorICAgICAgICAge0lQVjZJRklDTVBJTk5CUkFEVlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAxM319LAorICAgICAgICAge0lQVjZJRklDTVBJTlJFRElSRUNUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDE0fX0sCisgICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVRRVJZUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDE1fX0sCisgICAgICAgICB7SVBWNklGSUNNUElOR1JQTUVSU1BTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTZ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QSU5HUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTd9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUTVNHLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTh9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VURVJST1JTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMTl9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VURFNUVU5SQ0hTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjB9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUQURNUFJPSFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyMX19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRUSU1FWENEUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDIyfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFBBUk1QUk9CUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDIzfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFBLVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyNH19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRFQ0hPUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDI1fX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVEVDSE9SRVBTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjZ9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUUlRSU0xJQ0lUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDI3fX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFJUUkFEVlMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAyOH19LAorICAgICAgICAge0lQVjZJRklDTVBPVVROQlJTTElDSVRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMjl9fSwKKyAgICAgICAgIHtJUFY2SUZJQ01QT1VUTkJSQURWUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDMwfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVFJFRElSRUNUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl9pY21wdjZFbnRyeSwgMywgezEsIDEsIDMxfX0sCisgICAgICAgICB7SVBWNklGSUNNUE9VVEdSUE1FUUVSWVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAzMn19LAorICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJTUFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICB2YXJfaWNtcHY2RW50cnksIDMsIHsxLCAxLCAzM319LAorICAgICAgICAge0lQVjZJRklDTVBPVVRHUlBNRVJFRENTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2ljbXB2NkVudHJ5LCAzLCB7MSwgMSwgMzR9fQogICAgICB9Owogb2lkICAgICAgICAgICAgIGlwdjZpY21wX3ZhcmlhYmxlc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgNTYsIDEgfTsKICNpZiAwCkBAIC0zNDAsNyArMzcxLDggQEAKICAgICBjb25maWdfYWRkX21pYihJUFY2IC0gSUNNUCAtIE1JQikKICNlbmRpZgogICAgICBzdHJ1Y3QgdmFyaWFibGUyIGlwdjZ1ZHBfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgICB7SVBWNlVEUElGSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3VkcDYsIDIsIHsxLCAzfX0KKyAgICAgICAgIHtJUFY2VURQSUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl91ZHA2LCAyLCB7MSwgM319CiAgICAgIH07CiBvaWQgICAgICAgICAgICAgaXB2NnVkcF92YXJpYWJsZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDcsIDYgfTsKICNpZiAwCkBAIC0zNDgsMTUgKzM4MCwxNyBAQAogICAgIGNvbmZpZ19hZGRfbWliKElQVjYgLSBVRFAgLSBNSUIpCiAjZW5kaWYKICAgICAgc3RydWN0IHZhcmlhYmxlMiBpcHY2dGNwX3ZhcmlhYmxlc1tdID0gewotICAgICAgICAge0lQVjZUQ1BDT05OU1RBVEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3RjcDYsIDIsIHsxLCA2fX0sCisgICAgICAgICB7SVBWNlRDUENPTk5TVEFURSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgIHZhcl90Y3A2LCAyLCB7MSwgNn19LAogICAgICB9Owogb2lkICAgICAgICAgICAgIGlwdjZ0Y3BfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCA2LCAxNiB9OwogI2lmIDAKIGNvbmZpZ19sb2FkX21pYigxLjMgLjYgLjEgLjMgLjg2IC4xLCA3LCBpcHY2dGNwX3ZhcmlhYmxlcykKICAgICBjb25maWdfYWRkX21pYihJUFY2IC0gVENQIC0gTUlCKQogI2VuZGlmCi0gICAgIHZvaWQKLSAgICAgICAgICAgICAgICAgICAgIGluaXRfaXB2NigpCisKK3ZvaWQKK2luaXRfaXB2Nih2b2lkKQogewogICAgIC8qCiAgICAgICogcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggdGhlIGFnZW50IHRvIGhhbmRsZSBvdXIgbWliIHRyZWUgCkBAIC00MDAsNyArNDM0LDcgQEAKICAgICAgICAgICAgKChpbnQpIHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKIAotICAgICp3cml0ZV9tZXRob2QgPSAwOworICAgICp3cml0ZV9tZXRob2QgPSAoV3JpdGVNZXRob2QqKTA7CiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KICAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7CiB9CkBAIC00NDAsNyArNDc0LDcgQEAKICAgICBtZW1jcHkoKGNoYXIgKikgbmFtZSwgKGNoYXIgKikgbmV3bmFtZSwKICAgICAgICAgICAgKChpbnQpIHZwLT5uYW1lbGVuICsgMSkgKiBzaXplb2Yob2lkKSk7CiAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsKKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOwogICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAvKiBkZWZhdWx0IHRvICdsb25nJyByZXN1bHRzICovCiAgICAgcmV0dXJuIChNQVRDSF9TVUNDRUVERUQpOwogfQpAQCAtOTMxLDcgKzk2NSw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogI2VuZGlmCi0jaWZkZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX1NFQworI2lmZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDCiAgICAgICAgICAgICBpZiAoIWdvdGFuc3dlcikgewogICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldCAgICBpZm5ldDsKIApAQCAtMTk2MCw3ICsxOTk0LDcgQEAKICAgICByZXR1cm4gdmFsdWU7CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBsaW51eF9yZWFkX2lwNl9zdGF0KHN0cnVjdCBpcDZfbWliICppcDZzdGF0KQogewogICAgIGlmICghaXA2c3RhdCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKaW5kZXggYmI2Zjg2Ny4uMjZiODk5YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkva2VybmVsX2xpbnV4LmMKQEAgLTcsOCArNyw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2VuZGlmCkBAIC0xNiw0MyArMTQsMTA5IEBACiAjaWYgSEFWRV9TWVNfUEFSQU1fSAogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2VuZGlmCisjaW5jbHVkZSA8ZXJybm8uaD4KIAogI2luY2x1ZGUgImtlcm5lbF9saW51eC5oIgogCiBzdHJ1Y3QgaXBfbWliICAgY2FjaGVkX2lwX21pYjsKK3N0cnVjdCBpcDZfbWliICAgY2FjaGVkX2lwNl9taWI7CiBzdHJ1Y3QgaWNtcF9taWIgY2FjaGVkX2ljbXBfbWliOworc3RydWN0IGljbXA2X21pYiBjYWNoZWRfaWNtcDZfbWliOworc3RydWN0IGljbXA0X21zZ19taWIgY2FjaGVkX2ljbXA0X21zZ19taWI7CiBzdHJ1Y3QgdGNwX21pYiAgY2FjaGVkX3RjcF9taWI7CiBzdHJ1Y3QgdWRwX21pYiAgY2FjaGVkX3VkcF9taWI7CitzdHJ1Y3QgdWRwNl9taWIgIGNhY2hlZF91ZHA2X21pYjsKIAogI2RlZmluZSBJUF9TVEFUU19MSU5FCSJJcDogJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1IgogI2RlZmluZSBJQ01QX1NUQVRTX0xJTkUJIkljbXA6ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUiCisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX0xJTkUgIkljbXBNc2c6ICIKICNkZWZpbmUgVENQX1NUQVRTX0xJTkUJIlRjcDogJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSAlbHUgJWx1ICVsdSIKICNkZWZpbmUgVURQX1NUQVRTX0xJTkUJIlVkcDogJWx1ICVsdSAlbHUgJWx1IgorI2RlZmluZSBJUDZfU1RBVFNfTElORSAgICJJcDYiCisjZGVmaW5lIElDTVA2X1NUQVRTX0xJTkUgIkljbXA2IgogI2RlZmluZSBVRFA2X1NUQVRTX0xJTkUgIlVkcDYiCiAKICNkZWZpbmUgSVBfU1RBVFNfUFJFRklYX0xFTgk0CiAjZGVmaW5lIElDTVBfU1RBVFNfUFJFRklYX0xFTgk2CisjZGVmaW5lIElDTVBfTVNHX1NUQVRTX1BSRUZJWF9MRU4gOQogI2RlZmluZSBUQ1BfU1RBVFNfUFJFRklYX0xFTgk1CiAjZGVmaW5lIFVEUF9TVEFUU19QUkVGSVhfTEVOCTUKKyNkZWZpbmUgSVA2X1NUQVRTX1BSRUZJWF9MRU4JMworI2RlZmluZSBJQ01QNl9TVEFUU19QUkVGSVhfTEVOCTUKICNkZWZpbmUgVURQNl9TVEFUU19QUkVGSVhfTEVOICAgNAogCitpbnQKK2RlY29kZV9pY21wX21zZyhjaGFyICpsaW5lLCBjaGFyICpkYXRhLCBzdHJ1Y3QgaWNtcDRfbXNnX21pYiAqbXNnKQoreworICAgIGNoYXIgKnRva2VuLCAqc2F2ZXB0ciwgKmxpbmVwdHIsICpzYXZlcHRyMSwgKmRhdGFwdHIsICpkZWxpbSA9IE5VTEw7CisgICAgY2hhciBsaW5lX2NweVsxMDI0XTsKKyAgICBjaGFyIGRhdGFfY3B5WzEwMjRdOworICAgIGxvbmcgaW5kZXg7CisKKyAgICBpZihkYXRhID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIC8qCisgICAgICogU2luY2Ugd2UgYXJlIHVzaW5nIHN0cnRvaywgdGhlcmUgaXMgYSBwb3NzaWJsaXR5IG9mIHRoZSBvcmdpbmFsIGRhdGEKKyAgICAgKiBnZXR0aW5nIG1vZGlmaWVkLiBTbyB3ZSB0YWtlIGEgbG9jYWwgY29weSBmb3IgdGhpcyBwdXJwb3NlIGV2ZW4gdGhvdWdoCisgICAgICogaXRzIGV4cGVuc2l2ZS4KKyAgICAgKi8KKyAgICBzdHJsY3B5KGxpbmVfY3B5LCBsaW5lLCBzaXplb2YobGluZV9jcHkpKTsKKyAgICBzdHJsY3B5KGRhdGFfY3B5LCBkYXRhLCBzaXplb2YoZGF0YV9jcHkpKTsKKworICAgIGxpbmVwdHIgPSBsaW5lX2NweTsKKyAgICBkYXRhcHRyID0gZGF0YV9jcHk7CisgICAgc2F2ZXB0cjEgPSBOVUxMOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGlmKE5VTEwgPT0gKHRva2VuID0gc3RydG9rX3IobGluZXB0ciwgIiAiLCAmc2F2ZXB0cikpKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGxpbmVwdHIgPSBOVUxMOworICAgICAgICBlcnJubyA9IDA7CisgICAgICAgIGlmICgwID09IHN0cm5jbXAoc3Ryc2VwKCZ0b2tlbiwgImUiKSwgIk91dFR5cCIsIDYpKSB7CisgICAgICAgICAgICBpbmRleCA9IHN0cnRvbCh0b2tlbiwgJmRlbGltLCAwKTsKKyAgICAgICAgICAgIGlmIChFUkFOR0UgPT0gZXJybm8pIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPiAyNTUpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTlVMTCA9PSAodG9rZW4gPSBzdHJ0b2tfcihkYXRhcHRyLCAiICIsICZzYXZlcHRyMSkpKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGF0YXB0ciA9IE5VTEw7CisgICAgICAgICAgICBtc2ctPnZhbHNbaW5kZXhdLk91dFR5cGUgPSBhdG9pKHRva2VuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZGV4ID0gc3RydG9sKHRva2VuLCAmZGVsaW0sIDApOworICAgICAgICAgICAgaWYgKEVSQU5HRSA9PSBlcnJubykgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA+IDI1NSkgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmKE5VTEwgPT0gKHRva2VuID0gc3RydG9rX3IoZGF0YXB0ciwgIiAiLCAmc2F2ZXB0cjEpKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRhdGFwdHIgPSBOVUxMOworICAgICAgICAgICAgbXNnLT52YWxzW2luZGV4XS5JblR5cGUgPSBhdG9pKHRva2VuKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30KIAogaW50CiBsaW51eF9yZWFkX21pYklJX3N0YXRzKHZvaWQpCiB7CiAgICAgRklMRSAgICAgICAgICAgKmluID0gZm9wZW4oIi9wcm9jL25ldC9zbm1wIiwgInIiKTsKLSNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0gICAgRklMRSAgICAgICAgICAgKmluNjsKLSAgICB1bnNpZ25lZCBsb25nICAgdmFsdWU7Ci0jZW5kaWYKLSAgICBjaGFyICAgICAgICAgICAgbGluZVsxMDI0XTsKLQorICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdLCBkYXRhWzEwMjRdOworICAgIGludCByZXQgPSAwOwogICAgIGlmICghaW4pIHsKICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eCIsIlVuYWJsZSB0byBvcGVuIC9wcm9jL25ldC9zbm1wIikpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAKKyAgICBtZW1zZXQobGluZSwgJ1wwJywgc2l6ZW9mKGxpbmUpKTsKKyAgICBtZW1zZXQoZGF0YSwgJ1wwJywgc2l6ZW9mKGRhdGEpKTsKICAgICB3aGlsZSAobGluZSA9PSBmZ2V0cyhsaW5lLCBzaXplb2YobGluZSksIGluKSkgewogICAgICAgICBpZiAoIXN0cm5jbXAobGluZSwgSVBfU1RBVFNfTElORSwgSVBfU1RBVFNfUFJFRklYX0xFTikpIHsKICAgICAgICAgICAgIHNzY2FuZihsaW5lLCBJUF9TVEFUU19MSU5FLApAQCAtMTA0LDYgKzE2OCwxOSBAQAogICAgICAgICAgICAgICAgICAgICZjYWNoZWRfaWNtcF9taWIuaWNtcE91dFRpbWVzdGFtcFJlcHMsCiAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF9pY21wX21pYi5pY21wT3V0QWRkck1hc2tzLAogICAgICAgICAgICAgICAgICAgICZjYWNoZWRfaWNtcF9taWIuaWNtcE91dEFkZHJNYXNrUmVwcyk7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAobGluZSwgSUNNUF9NU0dfU1RBVFNfTElORSwgSUNNUF9NU0dfU1RBVFNfUFJFRklYX0xFTikpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBOb3RlOiBXZSBoYXZlIHRvIGRvIHRoaXMgZGlmZmVyZW50bHkgZnJvbSBvdGhlciBzdGF0cyBhcyB0aGUKKyAgICAgICAgICAgICAqIGNvdW50ZXJzIHRvIHRoaXMgc3RhdHMgYXJlIGR5bmFtaWMuIFNvIHdlIHdpbGwgbm90IGtub3cgdGhlCisgICAgICAgICAgICAgKiBudW1iZXIgb2YgY291bnRlcnMgYXQgYSBnaXZlbiB0aW1lLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBmZ2V0cyhkYXRhLCBzaXplb2YoZGF0YSksIGluKTsKKyAgICAgICAgICAgIGlmKGRlY29kZV9pY21wX21zZyhsaW5lICsgSUNNUF9NU0dfU1RBVFNfUFJFRklYX0xFTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKyBJQ01QX01TR19TVEFUU19QUkVGSVhfTEVOLAorICAgICAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF9pY21wNF9tc2dfbWliKSA8IDApIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldCA9IDE7CiAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAobGluZSwgVENQX1NUQVRTX0xJTkUsIFRDUF9TVEFUU19QUkVGSVhfTEVOKSkgewogICAgICAgICAgICAgaW50ICAgICAgICAgICAgIHJldCA9IHNzY2FuZihsaW5lLCBUQ1BfU1RBVFNfTElORSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNhY2hlZF90Y3BfbWliLnRjcFJ0b0FsZ29yaXRobSwKQEAgLTEzMiwzNSArMjA5LDYgQEAKICAgICB9CiAgICAgZmNsb3NlKGluKTsKIAotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKLSAgICBpbjYgPSBmb3BlbigiL3Byb2MvbmV0L3NubXA2IiwgInIiKTsKLSAgICBpZiAoaW42KSB7Ci0gICAgICAKLSAgICAgICAgd2hpbGUgKGxpbmUgPT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbjYpKSB7Ci0KLSAgICAgICAgICAgIGlmICgoJ1UnICE9IGxpbmVbMF0pIHx8Ci0gICAgICAgICAgICAgICAgKDAgIT0gc3RybmNtcChsaW5lLCBVRFA2X1NUQVRTX0xJTkUsIFVEUDZfU1RBVFNfUFJFRklYX0xFTikpKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgICAgICBzc2NhbmYobGluZSwgIiUqcyAlbHUiICwgJnZhbHVlKTsKLSAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoJ08nID09IGxpbmVbNF0pIC8qIFVkcDZPdXREYXRhZ3JhbXMgKi8KLSAgICAgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBPdXREYXRhZ3JhbXMgKz0gdmFsdWU7Ci0gICAgICAgICAgICBlbHNlIGlmICgnTicgPT0gbGluZVs0XSkgLyogVWRwNk5vUG9ydHMgKi8KLSAgICAgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBOb1BvcnRzICs9IHZhbHVlOwotICAgICAgICAgICAgZWxzZSBpZiAoJ0QnID09IGxpbmVbNl0pIC8qIFVkcDZJbkRhdGFncmFtcyAqLwotICAgICAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcEluRGF0YWdyYW1zICs9IHZhbHVlOwotICAgICAgICAgICAgZWxzZSBpZiAoJ0UnID09IGxpbmVbNl0pIC8qIFVkcDZJbkVycm9ycyAqLwotICAgICAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcEluRXJyb3JzICs9IHZhbHVlOwotCi0gICAgICAgIH0KLSAgICAgICAgZmNsb3NlKGluNik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eCIsIlVuYWJsZSB0byBvcGVuIC9wcm9jL25ldC9zbm1wNiIpKTsKLSAgICB9Ci0KLSNlbmRpZgotCiAgICAgLyoKICAgICAgKiBUd2VhayBpbGxlZ2FsIHZhbHVlczoKICAgICAgKgpAQCAtMTc2LDcgKzIyNCw4IEBACiAgICAgICovCiAgICAgaWYgKCFjYWNoZWRfdGNwX21pYi50Y3BSdG9BbGdvcml0aG0pCiAgICAgICAgIGNhY2hlZF90Y3BfbWliLnRjcFJ0b0FsZ29yaXRobSA9IDE7Ci0gICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gcmV0OwogfQogCiBpbnQKQEAgLTE4OSw2ICsyMzgsMTM2IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludCBsaW51eF9yZWFkX2lwNl9zdGF0KCBzdHJ1Y3QgaXA2X21pYiAqaXA2c3RhdCkKK3sKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgRklMRSAgICAgICAgICAgKmluOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIHVuc2lnbmVkIGxvbmcgICBzdGF0czsKKyAgICBjaGFyICAgICAgICAgICAqZW5kcDsKKyAgICBpbnQgICAgICAgICAgICAgbWF0Y2g7CisjZW5kaWYKKworICAgIG1lbXNldCgoY2hhciAqKSBpcDZzdGF0LCAoMCksIHNpemVvZigqaXA2c3RhdCkpOworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaXA2c3RhdHMiLAorICAgICAgICAgICAgICAgICJSZWFkaW5nIC9wcm9jL25ldC9zbm1wNiBzdGF0c1xuIikpOworICAgIGlmIChOVUxMID09IChpbiA9IGZvcGVuKCIvcHJvYy9uZXQvc25tcDYiLCAiciIpKSkgeworICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L2lwNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byBvcGVuIC9wcm9jL25ldC9zbm1wNlxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKE5VTEwgIT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKKyAgICAgICAgaWYgKDAgIT0gc3RybmNtcChsaW5lLCBJUDZfU1RBVFNfTElORSwgSVA2X1NUQVRTX1BSRUZJWF9MRU4pKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKDEgIT0gc3NjYW5mKGxpbmUsICIlKnMgJWx1IiwgJnN0YXRzKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGVuZHAgPSBzdHJjaHIobGluZSwgJyAnKTsKKyAgICAgICAgKmVuZHAgPSAnXDAnOworICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L2lwNnN0YXRzIiwgIkZpbmQgdGFnOiAlc1xuIiwgbGluZSkpOworCisgICAgICAgIG1hdGNoID0gMTsKKyAgICAgICAgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgMywgIkluIiwgMikpIHsgIC8qIEluICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJBZGRyRXJyb3JzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbkFkZHJFcnJvcnMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJEZWxpdmVycyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5EZWxpdmVycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIkRpc2NhcmRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbkRpc2NhcmRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiSGRyRXJyb3JzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJbkhkckVycm9ycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIk1jYXN0UGt0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5NY2FzdFBrdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDUsICJOb1JvdXRlcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5Ob1JvdXRlcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIlJlY2VpdmVzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJblJlY2VpdmVzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiVHJ1bmNhdGVkUGt0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2SW5UcnVuY2F0ZWRQa3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA1LCAiVG9vQmlnRXJyb3JzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZJblRvb0JpZ0Vycm9ycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNSwgIlVua25vd25Qcm90b3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNkluVW5rbm93blByb3RvcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtYXRjaCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJuY21wKGxpbmUgKyAzLCAiT3V0IiwgMykpIHsgIC8qIE91dCAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiRGlzY2FyZHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNk91dERpc2NhcmRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiRm9yd0RhdGFncmFtcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2T3V0Rm9yd0RhdGFncmFtcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNiwgIk1jYXN0UGt0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2T3V0TWNhc3RQa3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiTm9Sb3V0ZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNk91dE5vUm91dGVzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA2LCAiUmVxdWVzdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNk91dFJlcXVlc3RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobGluZSArIDMsICJSZWFzbSIsIDUpKSB7ICAvKiBSZWFzbSAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiRmFpbHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNlJlYXNtRmFpbHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJPS3MiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNlJlYXNtT0tzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiUmVxZHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pcDZfbWliLmlwNlJlYXNtUmVxZHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJUaW1lb3V0IikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZSZWFzbVRpbWVvdXQgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RybmNtcChsaW5lICsgMywgIkZyYWciLCA0KSkgeyAgLyogRnJhZyAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiQ3JlYXRlcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2RnJhZ0NyZWF0ZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJGYWlscyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2lwNl9taWIuaXA2RnJhZ0ZhaWxzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiT0tzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaXA2X21pYi5pcDZGcmFnT0tzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgfQorCisgICAgICAgIGlmKCFtYXRjaCkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaXA2c3RhdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiVzIGlzIGFuIHVua25vd24gdGFnXG4iLCBsaW5lKSk7CisgICAgfQorCisgICAgZmNsb3NlKGluKTsKKyNlbmRpZgorCisgICAgbWVtY3B5KChjaGFyICopIGlwNnN0YXQsIChjaGFyICopICZjYWNoZWRfaXA2X21pYiwgc2l6ZW9mKCppcDZzdGF0KSk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludAorbGludXhfcmVhZF9pY21wX21zZ19zdGF0KHN0cnVjdCBpY21wX21pYiAqaWNtcHN0YXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA0X21zZ19taWIgKmljbXBtc2dzdGF0LAorICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZmxhZykKK3sKKyAgICBpbnQgcmV0OworCisgICAgbWVtc2V0KGljbXBzdGF0LCAwLCBzaXplb2YoKmljbXBzdGF0KSk7CisgICAgbWVtc2V0KGljbXBtc2dzdGF0LCAwLCBzaXplb2YoKmljbXBtc2dzdGF0KSk7CisKKyAgICBpZiAoKHJldCA9IGxpbnV4X3JlYWRfbWliSUlfc3RhdHMoKSkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAocmV0KSB7CisgICAgICAgbWVtY3B5KGljbXBtc2dzdGF0LCAmY2FjaGVkX2ljbXA0X21zZ19taWIsIHNpemVvZigqaWNtcG1zZ3N0YXQpKTsKKyAgICAgICAqZmxhZyA9IDE7IC8qIFdlIGhhdmUgYSB2YWxpZCBpY21wbXNnICovCisgICAgfQorCisgICAgbWVtY3B5KGljbXBzdGF0LCAmY2FjaGVkX2ljbXBfbWliLCBzaXplb2YoKmljbXBzdGF0KSk7CisgICAgcmV0dXJuIDA7Cit9CisKIGludAogbGludXhfcmVhZF9pY21wX3N0YXQoc3RydWN0IGljbXBfbWliICppY21wc3RhdCkKIHsKQEAgLTIwMSw2ICszODAsMTY3IEBACiB9CiAKIGludAorbGludXhfcmVhZF9pY21wNl9wYXJzZShzdHJ1Y3QgaWNtcDZfbWliICppY21wNnN0YXQsCisgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNl9tc2dfbWliICppY21wNm1zZ3N0YXQsCisgICAgICAgICAgICAgICAgICAgICAgIGludCAqc3VwcG9ydCkKK3sKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgRklMRSAgICAgICAgICAgKmluOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIGNoYXIgICAgICAgICAgICBuYW1lWzI1NV07CisgICAgdW5zaWduZWQgbG9uZyAgIHN0YXRzOworICAgIGNoYXIgICAgICAgICAgICplbmRwLCAqdmFsczsKKyAgICBpbnQgICAgICAgICAgICAgbWF0Y2g7CisjZW5kaWYKKworICAgIG1lbXNldChpY21wNnN0YXQsIDAsIHNpemVvZigqaWNtcDZzdGF0KSk7CisgICAgaWYgKE5VTEwgIT0gaWNtcDZtc2dzdGF0KQorICAgICAgICBtZW1zZXQoaWNtcDZtc2dzdGF0LCAwLCBzaXplb2YoKmljbXA2bXNnc3RhdCkpOworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaWNtcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgIlJlYWRpbmcgL3Byb2MvbmV0L3NubXA2IHN0YXRzXG4iKSk7CisgICAgaWYgKE5VTEwgPT0gKGluID0gZm9wZW4oIi9wcm9jL25ldC9zbm1wNiIsICJyIikpKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaWNtcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gb3BlbiAvcHJvYy9uZXQvc25tcDZcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHdoaWxlIChOVUxMICE9IGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CisgICAgICAgIGlmICgwICE9IHN0cm5jbXAobGluZSwgSUNNUDZfU1RBVFNfTElORSwgSUNNUDZfU1RBVFNfUFJFRklYX0xFTikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoMiAhPSBzc2NhbmYobGluZSwgIiVzICVsdSIsIG5hbWUsICZzdGF0cykpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBlbmRwID0gc3RyY2hyKGxpbmUsICcgJyk7CisgICAgICAgICplbmRwID0gJ1wwJzsKKyAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC9pY21wNnN0YXRzIiwgIkZpbmQgdGFnOiAlc1xuIiwgbGluZSkpOworCisgICAgICAgIHZhbHMgPSBuYW1lOworICAgICAgICBpZiAoTlVMTCAhPSBpY21wNm1zZ3N0YXQpIHsKKyAgICAgICAgICAgIGludCB0eXBlOworICAgICAgICAgICAgaWYgKDAgPT0gc3RybmNtcChuYW1lLCAiSWNtcDZPdXRUeXBlIiwgMTIpKSB7CisgICAgICAgICAgICAgICAgc3Ryc2VwKCZ2YWxzLCAiZSIpOworICAgICAgICAgICAgICAgIHR5cGUgPSBhdG9pKHZhbHMpOworICAgICAgICAgICAgICAgIGlmICggdHlwZSA8IDAgfHwgdHlwZSA+IDI1NSApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGljbXA2bXNnc3RhdC0+dmFsc1t0eXBlXS5PdXRUeXBlID0gc3RhdHM7CisgICAgICAgICAgICAgICAgKnN1cHBvcnQgPSAxOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobmFtZSwgIkljbXA2SW5UeXBlIiwgMTEpKSB7CisgICAgICAgICAgICAgICAgc3Ryc2VwKCZ2YWxzLCAiZSIpOworICAgICAgICAgICAgICAgIHR5cGUgPSBhdG9pKHZhbHMpOworICAgICAgICAgICAgICAgIGlmICggdHlwZSA8IDAgfHwgdHlwZSA+IDI1NSApCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIGljbXA2bXNnc3RhdC0+dmFsc1t0eXBlXS5JblR5cGUgPSBzdGF0czsKKyAgICAgICAgICAgICAgICAqc3VwcG9ydCA9IDE7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtYXRjaCA9IDE7CisgICAgICAgIGlmICgwID09IHN0cm5jbXAobGluZSArIDUsICJJbiIsIDIpKSB7ICAvKiBJbiAqLworICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiRGVzdFVucmVhY2hzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5EZXN0VW5yZWFjaHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJFY2hvcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluRWNob3MgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJFY2hvUmVwbGllcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluRWNob1JlcGxpZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJFcnJvcnMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbkVycm9ycyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIkdyb3VwTWVtYlF1ZXJpZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJHcm91cE1lbWJSZWR1Y3Rpb25zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Hcm91cE1lbWJSZWR1Y3Rpb25zID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiR3JvdXBNZW1iUmVzcG9uc2VzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Hcm91cE1lbWJSZXNwb25zZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJNc2dzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Nc2dzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiTmVpZ2hib3JBZHZlcnRpc2VtZW50cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluTmVpZ2hib3JBZHZlcnRpc2VtZW50cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIk5laWdoYm9yU29saWNpdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJbk5laWdoYm9yU29saWNpdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJQa3RUb29CaWdzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Qa3RUb29CaWdzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA3LCAiUGFybVByb2JsZW1zIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5QYXJtUHJvYmxlbXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDcsICJSZWRpcmVjdHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZJblJlZGlyZWN0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlJvdXRlckFkdmVydGlzZW1lbnRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Sb3V0ZXJBZHZlcnRpc2VtZW50cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlJvdXRlclNvbGljaXRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2SW5Sb3V0ZXJTb2xpY2l0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNywgIlRpbWVFeGNkcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNkluVGltZUV4Y2RzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1hdGNoID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cm5jbXAobGluZSArIDUsICJPdXQiLCAzKSkgeyAgLyogT3V0ICovCisgICAgICAgICAgICBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJEZXN0VW5yZWFjaHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXREZXN0VW5yZWFjaHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJFY2hvUmVwbGllcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dEVjaG9SZXBsaWVzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiR3JvdXBNZW1iUmVkdWN0aW9ucyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dEdyb3VwTWVtYlJlZHVjdGlvbnMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJHcm91cE1lbWJSZXNwb25zZXMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRHcm91cE1lbWJSZXNwb25zZXMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJNc2dzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0TXNncyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIk5laWdoYm9yQWR2ZXJ0aXNlbWVudHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzID0gc3RhdHM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA4LCAiTmVpZ2hib3JTb2xpY2l0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dE5laWdoYm9yU29saWNpdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJQa3RUb29CaWdzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0UGt0VG9vQmlncyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlBhcm1Qcm9ibGVtcyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dFBhcm1Qcm9ibGVtcyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlJlZGlyZWN0cyIpKSB7CisgICAgICAgICAgICAgICAgY2FjaGVkX2ljbXA2X21pYi5pY21wNk91dFJlZGlyZWN0cyA9IHN0YXRzOworICAgICAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgOCwgIlJvdXRlclNvbGljaXRzIikpIHsKKyAgICAgICAgICAgICAgICBjYWNoZWRfaWNtcDZfbWliLmljbXA2T3V0Um91dGVyU29saWNpdHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoMCA9PSBzdHJjbXAobGluZSArIDgsICJUaW1lRXhjZHMiKSkgeworICAgICAgICAgICAgICAgIGNhY2hlZF9pY21wNl9taWIuaWNtcDZPdXRUaW1lRXhjZHMgPSBzdGF0czsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWF0Y2ggPSAwOworICAgICAgICB9CisgICAgICAgIGlmKCFtYXRjaCkKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvaWNtcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgICAgICAgICAiJXMgaXMgYW4gdW5rbm93biB0YWdcbiIsIGxpbmUpKTsKKyAgICB9CisKKyAgICBmY2xvc2UoaW4pOworI2VuZGlmCisKKyAgICBtZW1jcHkoKGNoYXIgKikgaWNtcDZzdGF0LCAoY2hhciAqKSAmY2FjaGVkX2ljbXA2X21pYiwKKyAgICAgICAgICAgc2l6ZW9mKCppY21wNnN0YXQpKTsKKyAgICByZXR1cm4gMDsKK30KKworaW50CitsaW51eF9yZWFkX2ljbXA2X21zZ19zdGF0KHN0cnVjdCBpY21wNl9taWIgKmljbXA2c3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA2X21zZ19taWIgKmljbXA2bXNnc3RhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzdXBwb3J0KQoreworICAgICBpZiAobGludXhfcmVhZF9pY21wNl9wYXJzZShpY21wNnN0YXQsIGljbXA2bXNnc3RhdCwgc3VwcG9ydCkgPCAwKQorICAgICAgICAgcmV0dXJuIC0xOworICAgICBlbHNlCisgICAgICAgICByZXR1cm4gMDsKK30KKworaW50CitsaW51eF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqaWNtcDZzdGF0KQoreworICAgaWYgKGxpbnV4X3JlYWRfaWNtcDZfcGFyc2UoaWNtcDZzdGF0LCBOVUxMLCBOVUxMKSA8IDApCisgICAgICAgcmV0dXJuIC0xOworICAgZWxzZQorICAgICAgIHJldHVybiAwOworfQorCitpbnQKIGxpbnV4X3JlYWRfdGNwX3N0YXQoc3RydWN0IHRjcF9taWIgKnRjcHN0YXQpCiB7CiAgICAgbWVtc2V0KChjaGFyICopIHRjcHN0YXQsICgwKSwgc2l6ZW9mKCp0Y3BzdGF0KSk7CkBAIC0yMTYsNiArNTU2LDczIEBACiAgICAgbWVtc2V0KChjaGFyICopIHVkcHN0YXQsICgwKSwgc2l6ZW9mKCp1ZHBzdGF0KSk7CiAgICAgaWYgKGxpbnV4X3JlYWRfbWliSUlfc3RhdHMoKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIC0xOworCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorICAgIHsKKyAgICAgICAgc3RydWN0IHVkcDZfbWliIHVkcDZzdGF0OworICAgICAgICBtZW1zZXQoJnVkcDZzdGF0LCAwLCBzaXplb2YodWRwNnN0YXQpKTsKKworICAgICAgICBpZiAobGludXhfcmVhZF91ZHA2X3N0YXQoJnVkcDZzdGF0KSA9PSAwKSB7CisgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBPdXREYXRhZ3JhbXMgKz0gdWRwNnN0YXQudWRwNk91dERhdGFncmFtczsKKyAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcE5vUG9ydHMgICAgICArPSB1ZHA2c3RhdC51ZHA2Tm9Qb3J0czsKKyAgICAgICAgICAgIGNhY2hlZF91ZHBfbWliLnVkcEluRGF0YWdyYW1zICArPSB1ZHA2c3RhdC51ZHA2SW5EYXRhZ3JhbXM7CisgICAgICAgICAgICBjYWNoZWRfdWRwX21pYi51ZHBJbkVycm9ycyAgICAgKz0gdWRwNnN0YXQudWRwNkluRXJyb3JzOworICAgICAgICB9CisgICAgfQorI2VuZGlmCiAgICAgbWVtY3B5KChjaGFyICopIHVkcHN0YXQsIChjaGFyICopICZjYWNoZWRfdWRwX21pYiwgc2l6ZW9mKCp1ZHBzdGF0KSk7CiAgICAgcmV0dXJuIDA7CiB9CisKK2ludAorbGludXhfcmVhZF91ZHA2X3N0YXQoc3RydWN0IHVkcDZfbWliICp1ZHA2c3RhdCkKK3sKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgRklMRSAgICAgICAgICAgKmluOworICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOworICAgIHVuc2lnbmVkIGxvbmcgICBzdGF0czsKKyAgICBjaGFyICAgICAgICAgICAqZW5kcDsKKyNlbmRpZgorCisgICAgbWVtc2V0KHVkcDZzdGF0LCAwLCBzaXplb2YoKnVkcDZzdGF0KSk7CisKKyNpZmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2CisgICAgREVCVUdNU0dUTCgoIm1pYklJL2tlcm5lbF9saW51eC91ZHA2c3RhdHMiLAorICAgICAgICAgICAgICAgICJSZWFkaW5nIC9wcm9jL25ldC9zbm1wNiBzdGF0c1xuIikpOworICAgIGlmIChOVUxMID09IChpbiA9IGZvcGVuKCIvcHJvYy9uZXQvc25tcDYiLCAiciIpKSkgeworICAgICAgICBERUJVR01TR1RMKCgibWliSUkva2VybmVsX2xpbnV4L3VkcDZzdGF0cyIsCisgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gb3BlbiAvcHJvYy9uZXQvc25tcDZcbiIpKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd2hpbGUgKE5VTEwgIT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKKyAgICAgICAgaWYgKDAgIT0gc3RybmNtcChsaW5lLCBVRFA2X1NUQVRTX0xJTkUsIFVEUDZfU1RBVFNfUFJFRklYX0xFTikpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoMSAhPSBzc2NhbmYobGluZSwgIiUqcyAlbHUiLCAmc3RhdHMpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgZW5kcCA9IHN0cmNocihsaW5lLCAnICcpOworICAgICAgICAqZW5kcCA9ICdcMCc7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvdWRwNnN0YXRzIiwgIkZpbmQgdGFnOiAlc1xuIiwgbGluZSkpOworCisgICAgICAgIGlmICgwID09IHN0cmNtcChsaW5lICsgNCwgIk91dERhdGFncmFtcyIpKSB7CisgICAgICAgICAgICBjYWNoZWRfdWRwNl9taWIudWRwNk91dERhdGFncmFtcyA9IHN0YXRzOworICAgICAgICB9IGVsc2UgaWYgKDAgPT0gc3RyY21wKGxpbmUgKyA0LCAiTm9Qb3J0cyIpKSB7CisgICAgICAgICAgICBjYWNoZWRfdWRwNl9taWIudWRwNk5vUG9ydHMgPSBzdGF0czsKKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNCwgIkluRGF0YWdyYW1zIikpIHsKKyAgICAgICAgICAgIGNhY2hlZF91ZHA2X21pYi51ZHA2SW5EYXRhZ3JhbXMgPSBzdGF0czsKKyAgICAgICAgfSBlbHNlIGlmICgwID09IHN0cmNtcChsaW5lICsgNCwgIkluRXJyb3JzIikpIHsKKyAgICAgICAgICAgIGNhY2hlZF91ZHA2X21pYi51ZHA2SW5FcnJvcnMgPSBzdGF0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9rZXJuZWxfbGludXgvdWRwNnN0YXRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyBpcyBhbiB1bmtub3duIHRhZ1xuIiwgbGluZSkpOworICAgICAgICB9CisgICAgfQorCisgICAgZmNsb3NlKGluKTsKKyNlbmRpZgorCisgICAgbWVtY3B5KChjaGFyICopIHVkcDZzdGF0LCAoY2hhciAqKSAmY2FjaGVkX3VkcDZfbWliLCBzaXplb2YoKnVkcDZzdGF0KSk7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9rZXJuZWxfbGludXguaCBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCmluZGV4IGZiN2RiOTYuLmM2ZGZjYTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL2tlcm5lbF9saW51eC5oCkBAIC0yOSw2ICsyOSwzMSBAQAogICAgIHVuc2lnbmVkIGxvbmcgICBpcFJvdXRpbmdEaXNjYXJkczsKIH07CiAKK3N0cnVjdCBpcDZfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluUmVjZWl2ZXM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbkhkckVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluVG9vQmlnRXJyb3JzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2SW5Ob1JvdXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluQWRkckVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluVW5rbm93blByb3RvczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluVHJ1bmNhdGVkUGt0czsKKyAgICB1bnNpZ25lZCBsb25nIGlwNkluRGlzY2FyZHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbkRlbGl2ZXJzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0Rm9yd0RhdGFncmFtczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dFJlcXVlc3RzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2T3V0RGlzY2FyZHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZPdXROb1JvdXRlczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtVGltZW91dDsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtUmVxZHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZSZWFzbU9LczsKKyAgICB1bnNpZ25lZCBsb25nIGlwNlJlYXNtRmFpbHM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZGcmFnT0tzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ0ZhaWxzOworICAgIHVuc2lnbmVkIGxvbmcgaXA2RnJhZ0NyZWF0ZXM7CisgICAgdW5zaWduZWQgbG9uZyBpcDZJbk1jYXN0UGt0czsKKyAgICB1bnNpZ25lZCBsb25nIGlwNk91dE1jYXN0UGt0czsKK307CisKIHN0cnVjdCBpY21wX21pYiB7CiAgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbk1zZ3M7CiAgICAgdW5zaWduZWQgbG9uZyAgIGljbXBJbkVycm9yczsKQEAgLTU4LDYgKzgzLDUxIEBACiAgICAgdW5zaWduZWQgbG9uZyAgIGljbXBPdXRBZGRyTWFza1JlcHM7CiB9OwogCitzdHJ1Y3QgaWNtcDZfbWliIHsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5Nc2dzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVycm9yczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5EZXN0VW5yZWFjaHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUGt0VG9vQmlnczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5UaW1lRXhjZHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUGFybVByb2JsZW1zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVjaG9zOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkVjaG9SZXBsaWVzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlF1ZXJpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluR3JvdXBNZW1iUmVzcG9uc2VzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJbkdyb3VwTWVtYlJlZHVjdGlvbnM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUm91dGVyU29saWNpdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluUm91dGVyQWR2ZXJ0aXNlbWVudHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNkluTmVpZ2hib3JTb2xpY2l0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2SW5OZWlnaGJvckFkdmVydGlzZW1lbnRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZJblJlZGlyZWN0czsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0TXNnczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0RGVzdFVucmVhY2hzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRQa3RUb29CaWdzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRUaW1lRXhjZHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFBhcm1Qcm9ibGVtczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0RWNob1JlcGxpZXM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dFJvdXRlclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvclNvbGljaXRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXROZWlnaGJvckFkdmVydGlzZW1lbnRzOworICAgIHVuc2lnbmVkIGxvbmcgaWNtcDZPdXRSZWRpcmVjdHM7CisgICAgdW5zaWduZWQgbG9uZyBpY21wNk91dEdyb3VwTWVtYlJlc3BvbnNlczsKKyAgICB1bnNpZ25lZCBsb25nIGljbXA2T3V0R3JvdXBNZW1iUmVkdWN0aW9uczsKK307CisKK3N0cnVjdCBpY21wX21zZ19taWIgeworICAgIHVuc2lnbmVkIGxvbmcgSW5UeXBlOworICAgIHVuc2lnbmVkIGxvbmcgT3V0VHlwZTsKK307CisKKy8qIExldHMgdXNlIHdyYXBwZXIgc3RydWN0dXJlcyBmb3IgZnV0dXJlIGV4cGFuc2lvbiAqLworc3RydWN0IGljbXA0X21zZ19taWIgeworICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOworfTsKKworc3RydWN0IGljbXA2X21zZ19taWIgeworICAgIHN0cnVjdCBpY21wX21zZ19taWIgdmFsc1syNTZdOworfTsKKwogc3RydWN0IHVkcF9taWIgewogICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBJbkRhdGFncmFtczsKICAgICB1bnNpZ25lZCBsb25nICAgdWRwTm9Qb3J0czsKQEAgLTY1LDYgKzEzNSwxMyBAQAogICAgIHVuc2lnbmVkIGxvbmcgICB1ZHBPdXREYXRhZ3JhbXM7CiB9OwogCitzdHJ1Y3QgdWRwNl9taWIgeworICAgIHVuc2lnbmVkIGxvbmcgdWRwNkluRGF0YWdyYW1zOworICAgIHVuc2lnbmVkIGxvbmcgdWRwNk5vUG9ydHM7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2SW5FcnJvcnM7CisgICAgdW5zaWduZWQgbG9uZyB1ZHA2T3V0RGF0YWdyYW1zOworfTsKKwogc3RydWN0IHRjcF9taWIgewogICAgIHVuc2lnbmVkIGxvbmcgICB0Y3BSdG9BbGdvcml0aG07CiAgICAgdW5zaWduZWQgbG9uZyAgIHRjcFJ0b01pbjsKQEAgLTg2LDggKzE2MywxNyBAQAogCiAKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwX3N0YXQoc3RydWN0IGlwX21pYiAqKTsKK2ludCAgICAgICAgICAgICBsaW51eF9yZWFkX2lwNl9zdGF0KHN0cnVjdCBpcDZfbWliICopOwogaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcF9zdGF0KHN0cnVjdCBpY21wX21pYiAqKTsKK2ludCAgICAgICAgICAgICBsaW51eF9yZWFkX2ljbXA2X3N0YXQoc3RydWN0IGljbXA2X21pYiAqKTsKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX3VkcF9zdGF0KHN0cnVjdCB1ZHBfbWliICopOworaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfdWRwNl9zdGF0KHN0cnVjdCB1ZHA2X21pYiAqKTsKIGludCAgICAgICAgICAgICBsaW51eF9yZWFkX3RjcF9zdGF0KHN0cnVjdCB0Y3BfbWliICopOworaW50ICAgICAgICAgICAgIGxpbnV4X3JlYWRfaWNtcF9tc2dfc3RhdChzdHJ1Y3QgaWNtcF9taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGljbXA0X21zZ19taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpmbGFnKTsKK2ludCAgICAgICAgICAgICBsaW51eF9yZWFkX2ljbXA2X21zZ19zdGF0KHN0cnVjdCBpY21wNl9taWIgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBpY21wNl9tc2dfbWliICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnN1cHBvcnQpOwogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9LRVJORUxfTElOVVhfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvbWliSUlfY29tbW9uLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaAppbmRleCA0MGE4YzkzLi5jNzQ5OWQzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9taWJJSV9jb21tb24uaApAQCAtMjgsNyArMjgsNyBAQAogI2lmIEhBVkVfU1lTX1RDUElQU1RBVFNfSAogI2luY2x1ZGUgPHN5cy90Y3BpcHN0YXRzLmg+CiAjZW5kaWYKLSNpZiBkZWZpbmVkKElGTkVUX05FRURTX0tFUk5FTCkgJiYgIWRlZmluZWQoX0tFUk5FTCkKKyNpZiBkZWZpbmVkKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMKSAmJiAhZGVmaW5lZChfS0VSTkVMKQogI2RlZmluZSBfS0VSTkVMIDEKICNkZWZpbmUgX0lfREVGSU5FRF9LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvbXRhX3NlbmRtYWlsLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYwppbmRleCA1OTIxZDY4Li5jMWVkZDA3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9tdGFfc2VuZG1haWwuYwpAQCAtMTAxLDEzICsxMDEsOCBAQAogIyBlbmRpZgogI2VuZGlmCiAKLSNpZiBIQVZFX1NUREFSR19ICi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KIAogIC8qKi8KIC8qKiAibWFjcm9zIGFuZCB2YXJpYWJsZXMgZm9yIHJlZ2lzdGVyaW5nIHRoZSBPSUQgdHJlZSIgKi8KQEAgLTE1MiwzMSArMTQ3LDM3IEBACiAgKiBzdHJ1Y3R1cmUgdGhhdCB0ZWxscyB0aGUgYWdlbnQsIHdoaWNoIGZ1bmN0aW9uIHJldHVybnMgd2hhdCB2YWx1ZXMgCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdmFyaWFibGUzIG10YV92YXJpYWJsZXNbXSA9IHsKLSAgICB7TVRBUkVDRUlWRURNRVNTQUdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCAxfX0sCi0gICAge01UQVNUT1JFRE1FU1NBR0VTLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCAyfX0sCi0gICAge01UQVRSQU5TTUlUVEVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX210YUVudHJ5LCAzLAotICAgICB7MSwgMSwgM319LAotICAgIHtNVEFSRUNFSVZFRFZPTFVNRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCA0fX0sCi0gICAge01UQVNUT1JFRFZPTFVNRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgNX19LAotICAgIHtNVEFUUkFOU01JVFRFRFZPTFVNRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhRW50cnksIDMsIHsxLCAxLCA2fX0sCisgICAge01UQVJFQ0VJVkVETUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgMX19LAorICAgIHtNVEFTVE9SRURNRVNTQUdFUywgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgMn19LAorICAgIHtNVEFUUkFOU01JVFRFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDN9fSwKKyAgICB7TVRBUkVDRUlWRURWT0xVTUUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgIHtNVEFTVE9SRURWT0xVTUUsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFFbnRyeSwgMywgezEsIDEsIDV9fSwKKyAgICB7TVRBVFJBTlNNSVRURURWT0xVTUUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUVudHJ5LCAzLCB7MSwgMSwgNn19LAogCi0gICAge01UQUdST1VQUkVDRUlWRURNRVNTQUdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfbXRhR3JvdXBFbnRyeSwgMywKLSAgICAgezIsIDEsIDJ9fSwKLSAgICB7TVRBR1JPVVBSRUpFQ1RFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgM319LAotICAgIHtNVEFHUk9VUFNUT1JFRE1FU1NBR0VTLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbXRhR3JvdXBFbnRyeSwgMywKLSAgICAgezIsIDEsIDR9fSwKLSAgICB7TVRBR1JPVVBUUkFOU01JVFRFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgNX19LAotICAgIHtNVEFHUk9VUFJFQ0VJVkVEVk9MVU1FLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLAotICAgICB7MiwgMSwgNn19LAotICAgIHtNVEFHUk9VUFNUT1JFRFZPTFVNRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCA3fX0sCi0gICAge01UQUdST1VQVFJBTlNNSVRURURWT0xVTUUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCA4fX0sCi0gICAge01UQUdST1VQTkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgMjV9fSwKLSAgICB7TVRBR1JPVVBISUVSQVJDSFksIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX210YUdyb3VwRW50cnksIDMsCi0gICAgIHsyLCAxLCAzMX19CisgICAge01UQUdST1VQUkVDRUlWRURNRVNTQUdFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhR3JvdXBFbnRyeSwgMywgezIsIDEsIDJ9fSwKKyAgICB7TVRBR1JPVVBSRUpFQ1RFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgM319LAorICAgIHtNVEFHUk9VUFNUT1JFRE1FU1NBR0VTLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbXRhR3JvdXBFbnRyeSwgMywgezIsIDEsIDR9fSwKKyAgICB7TVRBR1JPVVBUUkFOU01JVFRFRE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgNX19LAorICAgIHtNVEFHUk9VUFJFQ0VJVkVEVk9MVU1FLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgNn19LAorICAgIHtNVEFHUk9VUFNUT1JFRFZPTFVNRSwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCA3fX0sCisgICAge01UQUdST1VQVFJBTlNNSVRURURWT0xVTUUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCA4fX0sCisgICAge01UQUdST1VQTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9tdGFHcm91cEVudHJ5LCAzLCB7MiwgMSwgMjV9fSwKKyAgICB7TVRBR1JPVVBISUVSQVJDSFksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX210YUdyb3VwRW50cnksIDMsIHsyLCAxLCAzMX19CiB9OwogIC8qKi8KIC8qKiAib3RoZXIgbWFjcm9zIGFuZCBzdHJ1Y3R1cmVzIiAqLwpAQCAtMzQyLDM3ICszNDMsMTUgQEAKICAqICAgIC4uLjogICAgICAgICBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgdG8gaW5zZXJ0IGludG8gdGhlIGVycm9yIG1lc3NhZ2Ugc3RyaW5nCiAgKgogICovCi0jaWYgSEFWRV9TVERBUkdfSAotICAgIHN0YXRpYyB2b2lkCitzdGF0aWMgdm9pZAogcHJpbnRfZXJyb3IoaW50IHByaW9yaXR5LCBCT09MIGNvbmZpZywgQk9PTCBjb25maWdfb25seSwKICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSNlbHNlCi0gICAgc3RhdGljIHZvaWQKLXByaW50X2Vycm9yKHZhX2FsaXN0KQotICAgICB2YV9kY2wKLSNlbmRpZgogewogICAgIHZhX2xpc3QgICAgICAgICBhcDsKICAgICBjaGFyICAgICAgICAgICAgYnVmZmVyWzIgKiBGSUxFTkFNRUxFTiArIDIwMF07ICAgICAgLyogSSBrbm93LCB0aGF0J3Mgbm90IHBlcmZlY3RseSBzYWZlLCBidXQgc2luY2UgSSBkb24ndCB1c2UgbW9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGFuIHR3byBmaWxlbmFtZXMgaW4gb25lIGVycm9yIG1lc3NhZ2UsIHRoYXQgc2hvdWxkIGJlIGVub3VnaCAqLwogCi0jaWYgSEFWRV9TVERBUkdfSAogICAgIHZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotI2Vsc2UKLSAgICBpbnQgICAgICAgICAgICAgcHJpb3JpdHk7Ci0gICAgQk9PTCAgICAgICAgICAgIGNvbmZpZzsKLSAgICBCT09MICAgICAgICAgICAgY29uZmlnX29ubHk7Ci0gICAgY29uc3QgY2hhciAgICAgKmZ1bmN0aW9uOwotICAgIGNvbnN0IGNoYXIgICAgICpmb3JtYXQ7Ci0KLSAgICB2YV9zdGFydChhcCk7Ci0gICAgcHJpb3JpdHkgPSB2YV9hcmcoYXAsIGludCk7Ci0gICAgY29uZmlnID0gdmFfYXJnKGFwLCBCT09MKTsKLSAgICBjb25maWdfb25seSA9IHZhX2FyZyhhcCwgQk9PTCk7Ci0gICAgZnVuY3Rpb24gPSB2YV9hcmcoYXAsIGNoYXIgKik7Ci0gICAgZm9ybWF0ID0gdmFfYXJnKGFwLCBjaGFyICopOwotI2VuZGlmCi0KICAgICB2c25wcmludGYoYnVmZmVyLCBzaXplb2YoYnVmZmVyKSwgZm9ybWF0LCBhcCk7CiAKICAgICBpZiAoY29uZmlnKSB7CkBAIC0xMDU0LDkgKzEwMzMsNyBAQAogICAgICAgICBvcGVuX3NlbmRtYWlsc3QoVFJVRSk7CiAKICAgICAgICAgaWYgKHNlbmRtYWlsc3RfZmggPT0gLTEpIHsKLSAgICAgICAgICAgIGNoYXIgICAgICAgICAgICBzdHJbRklMRU5BTUVMRU4gKyA1MF07Ci0gICAgICAgICAgICBzcHJpbnRmKHN0ciwgImNvdWxkbid0IG9wZW4gZmlsZSBcIiVzXCIiLCBzZW5kbWFpbHN0X2ZuKTsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3Ioc3RyKTsKKwkgICAgbmV0c25tcF9jb25maWdfZXJyb3IoImNvdWxkbid0IG9wZW4gZmlsZSBcIiVzXCIiLCBzZW5kbWFpbHN0X2ZuKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmggYi9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV9oZWFkZXJzLmgKaW5kZXggMzQ4MzBmMi4uYmY3ZTgwNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfaGVhZGVycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX2hlYWRlcnMuaApAQCAtMjcsOCArMjcsNiBAQAogI2luY2x1ZGUgImlwLmgiCiAjaW5jbHVkZSAia2VybmVsLmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgotI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAogI2Vsc2UgLyogIU5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgKi8KIApAQCAtOTQsMjggKzkyLDI4IEBACiAjZW5kaWYKICN1bmRlZglLRVJORUwKICNpZmRlZiBSVEVOVFJZXzRfNAotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVU5JVAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VOSVQKICNkZWZpbmUgcnRfdW5pdCBydF9yZWZjbnQgICAgICAgLyogUmV1c2UgdGhpcyBmaWVsZCBmb3IgZGV2aWNlICMgKi8KICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAjZGVmaW5lIHJ0X2RzdCBydF9ub2Rlcy0+cm5fa2V5CiAjZW5kaWYKICNlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUlRFTlRSWV80XzMgKi8KLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0RTVAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0RTVAogI2RlZmluZSBydF9kc3QgcnRfbm9kZXMtPnJuX2tleQogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNICisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfSEFTSAogI2RlZmluZSBydF9oYXNoIHJ0X3BhZDEKICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfUkVGQ05UCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UCiAjaWZuZGVmIGhwdXgxMAogI2RlZmluZSBydF9yZWZjbnQgcnRfcGFkMgogI2VuZGlmCiAjZW5kaWYKLSNpZm5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VTRQorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VTRQogI2RlZmluZSBydF91c2UgcnRfcGFkMwogI2VuZGlmCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VTklUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVU5JVAogI2RlZmluZSBydF91bml0IHJ0X3JlZmNudCAgICAgICAvKiBSZXVzZSB0aGlzIGZpZWxkIGZvciBkZXZpY2UgIyAqLwogI2VuZGlmCiAjZW5kaWYKQEAgLTE2MSw2ICsxNTksMTcgQEAKIAogI2lmZGVmIHNvbGFyaXMyCiAjaW5jbHVkZSAia2VybmVsX3N1bm9zNS5oIgorLyogU29sYXJpcyAyLjYvNyBuZWVkIHN5cy9zdHJlYW0uaCAobWJsa190KSB0byBpbmNsdWRlIGluZXQvaXAuaCAqLworI2lmZGVmIEhBVkVfU1lTX1NUUkVBTV9ICisjaW5jbHVkZSA8c3lzL3N0cmVhbS5oPgorI2VuZGlmCisvKiBTb2xhcmlzIDIuNiBuZWVkcyBpbmV0L2NvbW1vbi5oICh1MTYpIHRvIGluY2x1ZGUgaW5ldC9pcC5oICovCisjaWZkZWYgSEFWRV9JTkVUX0NPTU1PTl9ICisjaW5jbHVkZSA8aW5ldC9jb21tb24uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfSU5FVF9JUF9ICisjaW5jbHVkZSA8aW5ldC9pcC5oPgorI2VuZGlmIC8qIEhBVkVfSU5FVF9JUF9IICovCiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfU1lTX1NZU0NUTF9ICmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvcm91dGVfd3JpdGUuYwppbmRleCBmNmE0ZjNlLi4zZTI3OTllIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9yb3V0ZV93cml0ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3JvdXRlX3dyaXRlLmMKQEAgLTc2LDEwICs3NiwxMCBAQAogCiAjaWYgIWRlZmluZWQgKFdJTjMyKSAmJiAhZGVmaW5lZCAoY3lnd2luKQogCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKICNkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKICNlbmRpZgotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfSEFTSAorI2lmbmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0hBU0gKICNkZWZpbmUgcnRfaGFzaCBydF9wYWQxCiAjZW5kaWYKIApAQCAtMjY5LDcgKzI2OSw3IEBACiB9CiAKIAotI2lmbmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUCisjaWZuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCiAjdW5kZWYgcnRfZHN0CiAjZW5kaWYKIApAQCAtMzEzLDcgKzMxMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gKCZydGNhY2hlW2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RydWN0IHJ0ZW50ICAgKgpAQCAtMzI5LDcgKzMyOSw3IEBACiAgICAgICAgICAgICByZXR1cm4gKCZydGNhY2hlW2ldKTsKICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIAogfQogCkBAIC0zNTEsNyArMzUxLDcgQEAKIHN0cnVjdCBydGVudCAgICoKIGNhY2hlS2VybmVsUlRFKHVfbG9uZyBkc3QpCiB7Ci0gICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgICAgIC8qIGZvciBub3cgKi8KKyAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgLyogZm9yIG5vdyAqLwogICAgIC8qCiAgICAgICogLi4uLi4uIAogICAgICAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmMKaW5kZXggYjE0M2JmNy4uMGEyM2M5ZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5jCkBAIC0xLDk3ICsxLDE1IEBACi0vKgotICogIFNOTVB2MSBNSUIgZ3JvdXAgaW1wbGVtZW50YXRpb24gLSBzbm1wLmMKLSAqCi0gKi8KLQogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfU1RSSU5HX0gKLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8c3RyaW5ncy5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLQotI2lmIEhBVkVfV0lOU09DS19ICi0jaW5jbHVkZSA8d2luc29jay5oPgotI2VuZGlmCi0KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInNubXBfbWliLmgiCi0jaW5jbHVkZSAic3lzT1JUYWJsZS5oIgorI2luY2x1ZGUgInVwZGF0ZXMuaCIKIAorc3RhdGljIGNvbnN0IG9pZCBzbm1wX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxMSB9OwogCi0gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKLQkgKgotCSAqICBLZXJuZWwgJiBpbnRlcmZhY2UgaW5mb3JtYXRpb24sCi0JICogICBhbmQgaW50ZXJuYWwgZm9yd2FyZCBkZWNsYXJhdGlvbnMKLQkgKgotCSAqKioqKioqKioqKioqKioqKioqKiovCi0KLWV4dGVybiBsb25nICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzOwotZXh0ZXJuIGludCAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQ7Ci1pbnQgICAgICAgICAgICAgb2xkX3NubXBfZW5hYmxlYXV0aGVudHJhcHM7Ci0KLS8qKioqKioqKioqKioqKioqKioqKioKLSAqCi0gKiAgSW5pdGlhbGlzYXRpb24gJiBjb21tb24gaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0gKgotICoqKioqKioqKioqKioqKioqKioqKi8KLQotLyoKLSAqIGRlZmluZSB0aGUgc3RydWN0dXJlIHdlJ3JlIGdvaW5nIHRvIGFzayB0aGUgYWdlbnQgdG8gcmVnaXN0ZXIgb3VyCi0gKiBpbmZvcm1hdGlvbiBhdCAKLSAqLwotc3RydWN0IHZhcmlhYmxlMSBzbm1wX3ZhcmlhYmxlc1tdID0gewotICAgIHtTTk1QSU5QS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MX19LAotICAgIHtTTk1QT1VUUEtUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezJ9fSwKLSAgICB7U05NUElOQkFEVkVSU0lPTlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHszfX0sCi0jaWYgIWRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NOTVBWMSkgfHwgIWRlZmluZWQoTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMpCi0gICAge1NOTVBJTkJBRENPTU1VTklUWU5BTUVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7NH19LAotICAgIHtTTk1QSU5CQURDT01NVU5JVFlVU0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7NX19LAotI2VuZGlmIC8qIHN1cHBvcnQgZm9yIGNvbW11bml0eSBiYXNlZCBTTk1QICovCi0gICAge1NOTVBJTkFTTlBBUlNFRVJST1JTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7Nn19LAotICAgIHtTTk1QSU5UT09CSUdTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7OH19LAotICAgIHtTTk1QSU5OT1NVQ0hOQU1FUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezl9fSwKLSAgICB7U05NUElOQkFEVkFMVUVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTB9fSwKLSAgICB7U05NUElOUkVBRE9OTFlTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTF9fSwKLSAgICB7U05NUElOR0VORVJSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezEyfX0sCi0gICAge1NOTVBJTlRPVEFMUkVRVkFSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezEzfX0sCi0gICAge1NOTVBJTlRPVEFMU0VUVkFSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezE0fX0sCi0gICAge1NOTVBJTkdFVFJFUVVFU1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTV9fSwKLSAgICB7U05NUElOR0VUTkVYVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsxNn19LAotICAgIHtTTk1QSU5TRVRSRVFVRVNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezE3fX0sCi0gICAge1NOTVBJTkdFVFJFU1BPTlNFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezE4fX0sCi0gICAge1NOTVBJTlRSQVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MTl9fSwKLSAgICB7U05NUE9VVFRPT0JJR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyMH19LAotICAgIHtTTk1QT1VUTk9TVUNITkFNRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyMX19LAotICAgIHtTTk1QT1VUQkFEVkFMVUVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MjJ9fSwKLSAgICB7U05NUE9VVEdFTkVSUlMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyNH19LAotICAgIHtTTk1QT1VUR0VUUkVRVUVTVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyNX19LAotICAgIHtTTk1QT1VUR0VUTkVYVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyNn19LAotICAgIHtTTk1QT1VUU0VUUkVRVUVTVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXAsIDEsIHsyN319LAotICAgIHtTTk1QT1VUR0VUUkVTUE9OU0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7Mjh9fSwKLSAgICB7U05NUE9VVFRSQVBTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7Mjl9fSwKLSAgICB7U05NUEVOQUJMRUFVVEhFTlRSQVBTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfc25tcCwgMSwgezMwfX0sCi0gICAge1NOTVBTSUxFTlREUk9QUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcCwgMSwgezMxfX0sCi0gICAge1NOTVBQUk9YWURST1BTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9zbm1wLCAxLCB7MzJ9fQotfTsKLQotLyoKLSAqIERlZmluZSB0aGUgT0lEIHBvaW50ZXIgdG8gdGhlIHRvcCBvZiB0aGUgbWliIHRyZWUgdGhhdCB3ZSdyZQotICogcmVnaXN0ZXJpbmcgdW5kZXJuZWF0aCAKLSAqLwotb2lkICAgICAgICAgICAgIHNubXBfdmFyaWFibGVzX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCAxMSB9OwotI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCi1leHRlcm4gb2lkICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXTsKLWV4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW47Ci1leHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9jb3VudDsKLSNlbmRpZgorZXh0ZXJuIGxvbmcgc25tcF9lbmFibGVhdXRoZW50cmFwczsKK2V4dGVybiBpbnQgc25tcF9lbmFibGVhdXRoZW50cmFwc3NldDsKIAogc3RhdGljIGludAogc25tcF9lbmFibGVhdXRoZW50cmFwc19zdG9yZShpbnQgYSwgaW50IGIsIHZvaWQgKmMsIHZvaWQgKmQpCkBAIC0xMDYsMTQgKzI0LDEwMSBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitoYW5kbGVfdHJ1dGh2YWx1ZShuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfU0VUX1JFU0VSVkUxKSB7CisgICAgICAgIGludCByZXMgPSBuZXRzbm1wX2NoZWNrX3ZiX3RydXRodmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2Yik7CisgICAgICAgIGlmIChyZXMgIT0gU05NUF9FUlJfTk9FUlJPUikKKyAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IocmVxdWVzdHMsIHJlcyk7CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitzdGF0aWMgbmV0c25tcF9taWJfaGFuZGxlcioKK25ldHNubXBfZ2V0X3RydXRodmFsdWUodm9pZCkKK3sKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyKiBobmQgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJ0cnV0aHZhbHVlIiwgaGFuZGxlX3RydXRodmFsdWUpOworICAgIGlmIChobmQpCisgICAgICAgIGhuZC0+ZmxhZ3MgfD0gTUlCX0hBTkRMRVJfQVVUT19ORVhUOworICAgIHJldHVybiBobmQ7Cit9CisKK3N0YXRpYyBpbnQKK2hhbmRsZV9zbm1wKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisJICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisJICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorCSAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CisgICAgY2FzZSBNT0RFX0dFVDoKKwl7CisJICAgIG9pZCBpZHggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW09JRF9MRU5HVEgoc25tcF9vaWQpXTsKKwkgICAgc3dpdGNoKGlkeCkgeworCSAgICBjYXNlIDc6CisJICAgIGNhc2UgMjM6CisgICAgICAgICAgICBjYXNlIDMwOgorCQluZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3RzLAorCQkJCQkgIFNOTVBfTk9TVUNIT0JKRUNUKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCXsKKwkJICAgIHVfaW50IHZhbHVlID0KKwkJCXNubXBfZ2V0X3N0YXRpc3RpYyhpZHggLSAxICsgU1RBVF9TTk1QSU5QS1RTKTsKKwkJICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCBBU05fQ09VTlRFUiwKKwkJCQkJICAgICAodV9jaGFyICopJnZhbHVlLCBzaXplb2YodmFsdWUpKTsKKwkJfQorCQlicmVhazsKKwkgICAgfQorCX0KKwlicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJ1bmtub3duIG1vZGUgKCVkKSBpbiBoYW5kbGVfc25tcFxuIiwgcmVxaW5mby0+bW9kZSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKyNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorZXh0ZXJuIG9pZCAgICAgIHN5c3RlbV9tb2R1bGVfb2lkW107CitleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9vaWRfbGVuOworZXh0ZXJuIGludCAgICAgIHN5c3RlbV9tb2R1bGVfY291bnQ7CisjZW5kaWYKKworLyoqIEluaXRpYWxpemVzIHRoZSBzbm1wIG1vZHVsZSAqLwogdm9pZAogaW5pdF9zbm1wX21pYih2b2lkKQogewotICAgIC8qCi0gICAgICogcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggdGhlIGFnZW50IHRvIGhhbmRsZSBvdXIgbWliIHRyZWUgCi0gICAgICovCi0gICAgUkVHSVNURVJfTUlCKCJtaWJJSS9zbm1wIiwgc25tcF92YXJpYWJsZXMsIHZhcmlhYmxlMSwKLSAgICAgICAgICAgICAgICAgc25tcF92YXJpYWJsZXNfb2lkKTsKKyAgICBERUJVR01TR1RMKCgic25tcCIsICJJbml0aWFsaXppbmdcbiIpKTsKKworICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKAorICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisJIm1pYklJL3NubXAiLCBoYW5kbGVfc25tcCwgc25tcF9vaWQsIE9JRF9MRU5HVEgoc25tcF9vaWQpLAorCUhBTkRMRVJfQ0FOX1JPTkxZKSwgMSwgMzIpOworICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWRbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMTEsIDMwLCAwIH07CisJc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIGVuYWJsZWF1dGhlbl9pbmZvOworICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWcgPQorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zbm1wRW5hYmxlQXV0aGVuVHJhcHMiLAorICAgICAgICAgICAgICAgIHNubXBFbmFibGVBdXRoZW5UcmFwc19vaWQsCisgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9SV1JJVEUsICZzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0KTsKKyAgICAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWcsIG5ldHNubXBfZ2V0X3RydXRodmFsdWUoKSk7CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9pbnN0YW5jZSgKKyAgICAgICAgICAgIHJlZywKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisJCSZlbmFibGVhdXRoZW5faW5mbywKKyAgICAgICAgICAgICAgICAmc25tcF9lbmFibGVhdXRoZW50cmFwcywgc2l6ZW9mKHNubXBfZW5hYmxlYXV0aGVudHJhcHMpLAorICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCBXQVRDSEVSX0ZJWEVEX1NJWkUpKTsKKyAgICB9CiAKICNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQogICAgIGlmICgrK3N5c3RlbV9tb2R1bGVfY291bnQgPT0gMykKQEAgLTEyMywxMzEgKzEyOCwzIEBACiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHNfc3RvcmUsIE5VTEwpOwogfQotCi0vKgotICogaGVhZGVyX3NubXAoLi4uCi0gKiBBcmd1bWVudHM6Ci0gKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQotICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCi0gKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzIAotICogZXhhY3QgICBJTiAgICAgIC0gVFJVRSBpZiBhbiBleGFjdCBtYXRjaCB3YXMgcmVxdWVzdGVkCi0gKiB2YXJfbGVuIE9VVCAgICAgLSBsZW5ndGggb2YgdmFyaWFibGUgb3IgMCBpZiBmdW5jdGlvbiByZXR1cm5lZAotICogd3JpdGVfbWV0aG9kCi0gKiAKLSAqLwotCi0gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKLQkgKgotCSAqICBTeXN0ZW0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0JICoJKGFjdHVhbGx5IGNvbW1vbiEpCi0JICoKLQkgKioqKioqKioqKioqKioqKioqKioqLwotCi0KLXVfY2hhciAgICAgICAgICoKLXZhcl9zbm1wKHN0cnVjdCB2YXJpYWJsZSAqdnAsCi0gICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCi17Ci0gICAgc3RhdGljIGxvbmcgICAgIGxvbmdfcmV0OwotCi0gICAgKndyaXRlX21ldGhvZCA9IDA7ICAgICAgICAgIC8qIGFzc3VtZSBpdCBpc250IHdyaXRhYmxlIGZvciB0aGUgdGltZSBiZWluZyAqLwotICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsgICAgICAgIC8qIGFzc3VtZSBhbiBpbnRlZ2VyIGFuZCBjaGFuZ2UgbGF0ZXIgaWYgbm90ICovCi0KLSAgICBpZiAoaGVhZGVyX2dlbmVyaWModnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkKLSAgICAgICAgPT0gTUFUQ0hfRkFJTEVEKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIC8qCi0gICAgICogdGhpcyBpcyB3aGVyZSB3ZSBkbyB0aGUgdmFsdWUgYXNzaWdubWVudHMgZm9yIHRoZSBtaWIgcmVzdWx0cy4gCi0gICAgICovCi0gICAgaWYgKHZwLT5tYWdpYyA9PSBTTk1QRU5BQkxFQVVUSEVOVFJBUFMpIHsKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlX3NubXA7Ci0gICAgICAgIGxvbmdfcmV0dXJuID0gc25tcF9lbmFibGVhdXRoZW50cmFwczsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldHVybjsKLSAgICB9IGVsc2UgaWYgKCh2cC0+bWFnaWMgPj0gMSkKLSAgICAgICAgICAgICAgICYmICh2cC0+bWFnaWMgPD0KLSAgICAgICAgICAgICAgICAgICAoU1RBVF9TTk1QX1NUQVRTX0VORCAtIFNUQVRfU05NUF9TVEFUU19TVEFSVCArIDEpKSkgewotICAgICAgICBsb25nX3JldCA9Ci0gICAgICAgICAgICBzbm1wX2dldF9zdGF0aXN0aWModnAtPm1hZ2ljICsgU1RBVF9TTk1QX1NUQVRTX1NUQVJUIC0gMSk7Ci0gICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKgotICogb25seSBmb3Igc25tcEVuYWJsZUF1dGhlblRyYXBzOgotICovCi0KLWludAotd3JpdGVfc25tcChpbnQgYWN0aW9uLAotICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICB1X2NoYXIgdmFyX3ZhbF90eXBlLAotICAgICAgICAgICBzaXplX3QgdmFyX3ZhbF9sZW4sIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCi17Ci0gICAgbG9uZyAgICAgICAgICAgIGludHZhbCA9IDA7Ci0KLSAgICBzd2l0Y2ggKGFjdGlvbikgewotICAgIGNhc2UgUkVTRVJWRTE6ICAgICAgICAgICAgIC8qIENoZWNrIHZhbHVlcyBmb3IgYWNjZXB0YWJpbGl0eSAqLwotICAgICAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9JTlRFR0VSKSB7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgibWliSUkvc25tcF9taWIiLCAiJXggbm90IGludGVnZXIgdHlwZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YXJfdmFsX3R5cGUpKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnR2YWwgPSAqKChsb25nICopIHZhcl92YWwpOwotICAgICAgICBpZiAoaW50dmFsICE9IDEgJiYgaW50dmFsICE9IDIpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zbm1wX21pYiIsICJub3QgdmFsaWQgJXhcbiIsIGludHZhbCkpOwotICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQgPCAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhlIG9iamVjdCBpcyBzZXQgaW4gYSByZWFkLW9ubHkgY29uZmlndXJhdGlvbiBmaWxlLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICAgICAgfQotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgUkVTRVJWRTI6ICAgICAgICAgICAgIC8qIEFsbG9jYXRlIG1lbW9yeSBhbmQgc2ltaWxhciByZXNvdXJjZXMgKi8KLQotICAgICAgICAvKgotICAgICAgICAgKiBVc2luZyBzdGF0aWMgdmFyaWFibGVzLCBzbyBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUgCi0gICAgICAgICAqLwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQUNUSU9OOiAgICAgICAgICAgICAgIC8qIFBlcmZvcm0gdGhlIFNFVCBhY3Rpb24gKGlmIHJldmVyc2libGUpICovCi0KLSAgICAgICAgLyoKLSAgICAgICAgICogU2F2ZSB0aGUgb2xkIHZhbHVlLCBpbiBjYXNlIG9mIFVORE8gCi0gICAgICAgICAqLwotICAgICAgICBpbnR2YWwgPSAqKChsb25nICopIHZhcl92YWwpOwotICAgICAgICBvbGRfc25tcF9lbmFibGVhdXRoZW50cmFwcyA9IHNubXBfZW5hYmxlYXV0aGVudHJhcHM7Ci0gICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHMgPSBpbnR2YWw7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBVTkRPOiAgICAgICAgICAgICAgICAgLyogUmV2ZXJzZSB0aGUgU0VUIGFjdGlvbiBhbmQgZnJlZSByZXNvdXJjZXMgKi8KLQotICAgICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzID0gb2xkX3NubXBfZW5hYmxlYXV0aGVudHJhcHM7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBDT01NSVQ6Ci0gICAgICAgIHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQgPSAxOwotICAgICAgICBzbm1wX3NhdmVfcGVyc2lzdGVudChuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKSk7Ci0gICAgICAgICh2b2lkKSBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLCBOVUxMKTsKLSAgICAgICAgc25tcF9jbGVhbl9wZXJzaXN0ZW50KG5ldHNubXBfZHNfZ2V0X3N0cmluZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfQVBQVFlQRSkpOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgRlJFRTogICAgICAgICAgICAgICAgIC8qIEZyZWUgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi0vKioqKioqKioqKioqKioqKioqKioqCi0gKgotICogIEludGVybmFsIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucwotICoKLSAqKioqKioqKioqKioqKioqKioqKiovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWIuaAppbmRleCA2NDFmMTFlLi4zOWUwYTNjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYi5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliLmgKQEAgLTEsODMgKzEsOSBAQAotLyoKLSAqICBTTk1QIE1JQiBncm91cCBpbnRlcmZhY2UgLSBzbm1wLmgKLSAqCi0gKi8KICNpZm5kZWYgX01JQkdST1VQX1NOTVBfSAogI2RlZmluZSBfTUlCR1JPVVBfU05NUF9ICiAKLXN0cnVjdCB2YXJpYWJsZTsKLQotZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX3NubXA7Ci1leHRlcm4gV3JpdGVNZXRob2Qgd3JpdGVfc25tcDsKK2NvbmZpZ19yZXF1aXJlKG1pYklJL3VwZGF0ZXMpCitjb25maWdfZXhjbHVkZShtaWJJSS9zbm1wX21pYl81XzUpCiAKIHZvaWQgICAgICAgICAgICBpbml0X3NubXBfbWliKHZvaWQpOwogCi1leHRlcm4gaW50ICAgICAgc25tcF9pbnBrdHM7ICAgIC8qICAxIC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0cGt0czsgICAvKiAgMiAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmJhZHZlcnNpb25zOyAgICAgLyogIDMgLSBjdXJyZW50ICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmJhZGNvbW11bml0eW5hbWVzOyAgICAgICAvKiAgNCAtIGN1cnJlbnQgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luYmFkY29tbXVuaXR5dXNlczsgICAgICAgIC8qICA1IC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5hc25wYXJzZWVycm9yczsgIC8qICA2IC0gY3VycmVudCAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW50b29iaWdzOyAvKiAgOCAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbm5vc3VjaG5hbWVzOyAgICAgLyogIDkgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5iYWR2YWx1ZXM7ICAgICAgIC8qIDEwIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2lucmVhZG9ubHlzOyAgICAgICAvKiAxMSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbmdlbmVycnM7IC8qIDEyIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2ludG90YWxyZXF2YXJzOyAgICAvKiAxMyAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbnRvdGFsc2V0dmFyczsgICAgLyogMTQgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5nZXRyZXF1ZXN0czsgICAgIC8qIDE1IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2luZ2V0bmV4dHM7ICAgICAgICAvKiAxNiAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9pbnNldHJlcXVlc3RzOyAgICAgLyogMTcgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfaW5nZXRyZXNwb25zZXM7ICAgIC8qIDE4IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX2ludHJhcHM7ICAgLyogMTkgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0dG9vYmlnczsgICAgICAgIC8qIDIwIC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dG5vc3VjaG5hbWVzOyAgICAvKiAyMSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXRiYWR2YWx1ZXM7ICAgICAgLyogMjIgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0Z2VuZXJyczsgICAgICAgIC8qIDI0IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dGdldHJlcXVlc3RzOyAgICAvKiAyNSAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXRnZXRuZXh0czsgICAgICAgLyogMjYgLSBvYnNvbGV0ZSAqLwotZXh0ZXJuIGludCAgICAgIHNubXBfb3V0c2V0cmVxdWVzdHM7ICAgIC8qIDI3IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX291dGdldHJlc3BvbnNlczsgICAvKiAyOCAtIG9ic29sZXRlICovCi1leHRlcm4gaW50ICAgICAgc25tcF9vdXR0cmFwczsgIC8qIDI5IC0gb2Jzb2xldGUgKi8KLWV4dGVybiBsb25nICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzOyAvKiAzMCAtIGN1cnJlbnQgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX3NpbGVudGRyb3BzOyAgICAgICAvKiAzMSAtIGN1cnJlbnQgKi8KLWV4dGVybiBpbnQgICAgICBzbm1wX3Byb3h5ZHJvcHM7ICAgICAgICAvKiAzMiAtIGN1cnJlbnQgKi8KLQotZXh0ZXJuIGNoYXIgICAgKnNubXBfdHJhcHNpbms7Ci1leHRlcm4gY2hhciAgICAqc25tcF90cmFwY29tbXVuaXR5OwotCi0KLSNkZWZpbmUgU05NUElOUEtUUwkJMQotI2RlZmluZSBTTk1QT1VUUEtUUwkJMgotI2RlZmluZSBTTk1QSU5CQURWRVJTSU9OUwkzCi0jZGVmaW5lIFNOTVBJTkJBRENPTU1VTklUWU5BTUVTCTQKLSNkZWZpbmUgU05NUElOQkFEQ09NTVVOSVRZVVNFUwk1Ci0jZGVmaW5lIFNOTVBJTkFTTlBBUlNFRVJST1JTCTYKLSNkZWZpbmUgU05NUElOQkFEVFlQRVMJCTcKLSNkZWZpbmUgU05NUElOVE9PQklHUwkJOAotI2RlZmluZSBTTk1QSU5OT1NVQ0hOQU1FUwk5Ci0jZGVmaW5lIFNOTVBJTkJBRFZBTFVFUwkJMTAKLSNkZWZpbmUgU05NUElOUkVBRE9OTFlTCQkxMQotI2RlZmluZSBTTk1QSU5HRU5FUlJTCQkxMgotI2RlZmluZSBTTk1QSU5UT1RBTFJFUVZBUlMJMTMKLSNkZWZpbmUgU05NUElOVE9UQUxTRVRWQVJTCTE0Ci0jZGVmaW5lIFNOTVBJTkdFVFJFUVVFU1RTCTE1Ci0jZGVmaW5lIFNOTVBJTkdFVE5FWFRTCQkxNgotI2RlZmluZSBTTk1QSU5TRVRSRVFVRVNUUwkxNwotI2RlZmluZSBTTk1QSU5HRVRSRVNQT05TRVMJMTgKLSNkZWZpbmUgU05NUElOVFJBUFMJCTE5Ci0jZGVmaW5lIFNOTVBPVVRUT09CSUdTCQkyMAotI2RlZmluZSBTTk1QT1VUTk9TVUNITkFNRVMJMjEKLSNkZWZpbmUgU05NUE9VVEJBRFZBTFVFUwkyMgotI2RlZmluZSBTTk1QT1VUUkVBRE9OTFlTCTIzCi0jZGVmaW5lIFNOTVBPVVRHRU5FUlJTCQkyNAotI2RlZmluZSBTTk1QT1VUR0VUUkVRVUVTVFMJMjUKLSNkZWZpbmUgU05NUE9VVEdFVE5FWFRTCQkyNgotI2RlZmluZSBTTk1QT1VUU0VUUkVRVUVTVFMJMjcKLSNkZWZpbmUgU05NUE9VVEdFVFJFU1BPTlNFUwkyOAotI2RlZmluZSBTTk1QT1VUVFJBUFMJCTI5Ci0jZGVmaW5lIFNOTVBFTkFCTEVBVVRIRU5UUkFQUwkzMAotI2RlZmluZSBTTk1QU0lMRU5URFJPUFMJCTMxCi0jZGVmaW5lIFNOTVBQUk9YWURST1BTCQkzMgotCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9NSUJHUk9VUF9TTk1QX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc25tcF9taWJfNV81LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxZTY1ZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5jCkBAIC0wLDAgKzEsMTE1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KKworI2luY2x1ZGUgPHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaD4KKworI2luY2x1ZGUgInNubXBfbWliXzVfNS5oIgorI2luY2x1ZGUgInVwZGF0ZXMuaCIKKworI2RlZmluZSBTTk1QX09JRCAxLCAzLCA2LCAxLCAyLCAxLCAxMQorCitzdGF0aWMgb2lkIHNubXBfb2lkW10gPSB7IFNOTVBfT0lEIH07CisKK2V4dGVybiBsb25nIHNubXBfZW5hYmxlYXV0aGVudHJhcHM7CitleHRlcm4gaW50IHNubXBfZW5hYmxlYXV0aGVudHJhcHNzZXQ7CisKK3N0YXRpYyBpbnQKK3NubXBfZW5hYmxlYXV0aGVudHJhcHNfc3RvcmUoaW50IGEsIGludCBiLCB2b2lkICpjLCB2b2lkICpkKQoreworICAgIGNoYXIgICAgICAgICAgICBsaW5lW1NOTVBfTUFYQlVGX1NNQUxMXTsKKworICAgIGlmIChzbm1wX2VuYWJsZWF1dGhlbnRyYXBzc2V0ID4gMCkgeworICAgICAgICBzbnByaW50ZihsaW5lLCBTTk1QX01BWEJVRl9TTUFMTCwgInBhdXRodHJhcGVuYWJsZSAlbGQiLAorICAgICAgICAgICAgICAgICBzbm1wX2VuYWJsZWF1dGhlbnRyYXBzKTsKKyAgICAgICAgc25tcGRfc3RvcmVfY29uZmlnKGxpbmUpOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIGludAoraGFuZGxlX3RydXRodmFsdWUobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSkgeworICAgICAgICBpbnQgcmVzID0gbmV0c25tcF9jaGVja192Yl90cnV0aHZhbHVlKHJlcXVlc3RzLT5yZXF1ZXN0dmIpOworICAgICAgICBpZiAocmVzICE9IFNOTVBfRVJSX05PRVJST1IpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCByZXMpOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworc3RhdGljIG5ldHNubXBfbWliX2hhbmRsZXIqCituZXRzbm1wX2dldF90cnV0aHZhbHVlKHZvaWQpCit7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciogaG5kID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcigidHJ1dGh2YWx1ZSIsIGhhbmRsZV90cnV0aHZhbHVlKTsKKyAgICBpZiAoaG5kKQorICAgICAgICBobmQtPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVDsKKyAgICByZXR1cm4gaG5kOworfQorCitzdGF0aWMgaW50CitoYW5kbGVfc25tcChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorCSAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorCSAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKwkgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIHN3aXRjaChyZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW09JRF9MRU5HVEgoc25tcF9vaWQpXSkgeworICAgIGNhc2UgNzoKKyAgICBjYXNlIDIzOgorICAgIGNhc2UgMzA6CisgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdHMsIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKwlicmVhazsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKKyNpZmRlZiBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorZXh0ZXJuIG9pZCAgICAgIHN5c3RlbV9tb2R1bGVfb2lkW107CitleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9vaWRfbGVuOworZXh0ZXJuIGludCAgICAgIHN5c3RlbV9tb2R1bGVfY291bnQ7CisjZW5kaWYKKworLyoqIEluaXRpYWxpemVzIHRoZSBzbm1wIG1vZHVsZSAqLwordm9pZAoraW5pdF9zbm1wX21pYl81XzUodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic25tcCIsICJJbml0aWFsaXppbmdcbiIpKTsKKworICAgIE5FVFNOTVBfUkVHSVNURVJfU1RBVElTVElDX0hBTkRMRVIoCisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgIm1pYklJL3NubXAiLCBoYW5kbGVfc25tcCwgc25tcF9vaWQsIE9JRF9MRU5HVEgoc25tcF9vaWQpLAorICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAorICAgICAgICAxLCBTTk1QKTsKKyAgICB7CisgICAgICAgIG9pZCBzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkW10gPSB7IFNOTVBfT0lELCAzMCwgMCB9OworCXN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBlbmFibGVhdXRoZW5faW5mbzsKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnID0KKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc25tcEVuYWJsZUF1dGhlblRyYXBzIiwKKyAgICAgICAgICAgICAgICBzbm1wRW5hYmxlQXV0aGVuVHJhcHNfb2lkLAorICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoc25tcEVuYWJsZUF1dGhlblRyYXBzX29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc25tcF9lbmFibGVhdXRoZW50cmFwc3NldCk7CisgICAgICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBuZXRzbm1wX2dldF90cnV0aHZhbHVlKCkpOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoCisgICAgICAgICAgICByZWcsCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorCQkmZW5hYmxlYXV0aGVuX2luZm8sCisgICAgICAgICAgICAgICAgJnNubXBfZW5hYmxlYXV0aGVudHJhcHMsIHNpemVvZihzbm1wX2VuYWJsZWF1dGhlbnRyYXBzKSwKKyAgICAgICAgICAgICAgICBBU05fSU5URUdFUiwgV0FUQ0hFUl9GSVhFRF9TSVpFKSk7CisgICAgfQorCisjaWZkZWYgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKKyAgICBpZiAoKytzeXN0ZW1fbW9kdWxlX2NvdW50ID09IDMpCisgICAgICAgIFJFR0lTVEVSX1NZU09SX1RBQkxFKHN5c3RlbV9tb2R1bGVfb2lkLCBzeXN0ZW1fbW9kdWxlX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgTUlCIG1vZHVsZSBmb3IgU05NUHYyIGVudGl0aWVzIik7CisjZW5kaWYKKyAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwgU05NUF9DQUxMQkFDS19TVE9SRV9EQVRBLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9lbmFibGVhdXRoZW50cmFwc19zdG9yZSwgTlVMTCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3NubXBfbWliXzVfNS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZTQ1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zbm1wX21pYl81XzUuaApAQCAtMCwwICsxLDUgQEAKK2NvbmZpZ19yZXF1aXJlKG1pYklJL3VwZGF0ZXMpCitjb25maWdfcmVxdWlyZSh1dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljKQorY29uZmlnX2V4Y2x1ZGUobWliSUkvc25tcF9taWIpCisKK3ZvaWQgICAgICAgICAgICBpbml0X3NubXBfbWliXzVfNSh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuYwppbmRleCBmOGZmYTUwLi45NDFkNTNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5jCkBAIC0xLDM0NCArMSwyODkgQEAKLS8qCi0gKiAgVGVtcGxhdGUgTUlCIGdyb3VwIGltcGxlbWVudGF0aW9uIC0gc3lzT1JUYWJsZS5jCi0gKgotICovCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0jaWYgSEFWRV9TVERMSUJfSAotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGlmZGVmIFdJTjMyCi0jICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZW5kaWYKLSMgaW5jbHVkZSA8dGltZS5oPgotI2Vsc2UKLSMgaWYgSEFWRV9TWVNfVElNRV9ICi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jIGVuZGlmCi0jZW5kaWYKLSNpZiBIQVZFX1NUUklOR19ICi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHN0cmluZ3MuaD4KLSNlbmRpZgotCi0jaWYgSEFWRV9XSU5TT0NLX0gKLSNpbmNsdWRlIDx3aW5zb2NrLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKICNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCi0jaW5jbHVkZSAic25tcGQuaCIKIAotI2lmZGVmIFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUKLSNpbmNsdWRlICJhZ2VudHgvc3ViYWdlbnQuaCIKLSNpbmNsdWRlICJhZ2VudHgvY2xpZW50LmgiCi0jZW5kaWYKLQotCi1zdGF0aWMgaW50Ci1fcmVnaXN0ZXJfc3lzT1JfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKTsKLXN0YXRpYyBpbnQKLV91bnJlZ2lzdGVyX3N5c09SX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZyk7Ci1zdGF0aWMgaW50Ci1fdW5yZWdpc3Rlcl9zeXNPUl9ieV9zZXNzaW9uX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLCB2b2lkICpjbGllbnRhcmcpOwotCi1zdHJ1Y3QgdGltZXZhbCAgc3lzT1JfbGFzdGNoYW5nZTsKLXN0YXRpYyBzdHJ1Y3Qgc3lzT1JUYWJsZSAqdGFibGUgPSBOVUxMOwotc3RhdGljIGludCAgICAgIG51bUVudHJpZXMgPSAwOworLyoqIFR5cGljYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5ICovCit0eXBlZGVmIHN0cnVjdCBzeXNPUlRhYmxlX2VudHJ5X3MgeworICAgIG5ldHNubXBfaW5kZXggICAgICAgICAgICBvaWRfaW5kZXg7CisgICAgb2lkICAgICAgICAgICAgICAgICAgICAgIHN5c09SSW5kZXg7CisgICAgY29uc3Qgc3RydWN0IHN5c09SVGFibGUqIGRhdGE7Cit9IHN5c09SVGFibGVfZW50cnk7CiAKIC8qCi0gKiBkZWZpbmUgdGhlIHN0cnVjdHVyZSB3ZSdyZSBnb2luZyB0byBhc2sgdGhlIGFnZW50IHRvIHJlZ2lzdGVyIG91cgotICogaW5mb3JtYXRpb24gYXQgCisgKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSBzeXNPUlRhYmxlCiAgKi8KLXN0cnVjdCB2YXJpYWJsZTEgc3lzT1JUYWJsZV92YXJpYWJsZXNbXSA9IHsKLSAgICB7U1lTT1JUQUJMRUlELCBBU05fT0JKRUNUX0lELCBST05MWSwgdmFyX3N5c09SVGFibGUsIDEsIHsyfX0sCi0gICAge1NZU09SVEFCTEVERVNDUiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9zeXNPUlRhYmxlLCAxLCB7M319LAotICAgIHtTWVNPUlRBQkxFVVBUSU1FLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX3N5c09SVGFibGUsIDEsIHs0fX0KLX07CisjZGVmaW5lIENPTFVNTl9TWVNPUklOREVYCTEKKyNkZWZpbmUgQ09MVU1OX1NZU09SSUQJCTIKKyNkZWZpbmUgQ09MVU1OX1NZU09SREVTQ1IJMworI2RlZmluZSBDT0xVTU5fU1lTT1JVUFRJTUUJNAogCi0vKgotICogRGVmaW5lIHRoZSBPSUQgcG9pbnRlciB0byB0aGUgdG9wIG9mIHRoZSBtaWIgdHJlZSB0aGF0IHdlJ3JlCi0gKiByZWdpc3RlcmluZyB1bmRlcm5lYXRoIAotICovCi1vaWQgICAgICAgICAgICAgc3lzT1JUYWJsZV92YXJpYWJsZXNfb2lkW10gPSB7IFNOTVBfT0lEX01JQjIsIDEsIDksIDEgfTsKK3N0YXRpYyBuZXRzbm1wX2NvbnRhaW5lciAqdGFibGUgPSBOVUxMOworc3RhdGljIHVfbG9uZyAgICAgICAgICAgICBzeXNPUkxhc3RDaGFuZ2U7CitzdGF0aWMgb2lkICAgICAgICAgICAgICAgIHN5c09STmV4dEluZGV4ID0gMTsKKworLyoqIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlICovCitzdGF0aWMgdm9pZAorcmVnaXN0ZXJfZm9yZWFjaChjb25zdCBzdHJ1Y3Qgc3lzT1JUYWJsZSogZGF0YSwgdm9pZCogZHVtbXkpCit7CisgICAgc3lzT1JUYWJsZV9lbnRyeSAqZW50cnk7CisKKyAgICBzeXNPUkxhc3RDaGFuZ2UgPSBkYXRhLT5PUl91cHRpbWU7CisKKyAgICBlbnRyeSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoc3lzT1JUYWJsZV9lbnRyeSk7CisgICAgaWYgKCFlbnRyeSkgeworCXNubXBfbG9nKExPR19FUlIsCisJCSAiY291bGQgbm90IGFsbG9jYXRlIHN0b3JhZ2UsIHN5c09SVGFibGUgaXMgaW5jb25zaXN0ZW50XG4iKTsKKyAgICB9IGVsc2UgeworCWNvbnN0IG9pZCBmaXJzdE5leHQgPSBzeXNPUk5leHRJbmRleDsKKwluZXRzbm1wX2l0ZXJhdG9yKiBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUih0YWJsZSk7CisKKwlkbyB7CisJICAgIGNvbnN0IHN5c09SVGFibGVfZW50cnkqIHZhbHVlOworCSAgICBjb25zdCBvaWQgY3VyID0gc3lzT1JOZXh0SW5kZXg7CisKKwkgICAgaWYgKHN5c09STmV4dEluZGV4ID09IFNOTVBfTUlOKE1BWF9TVUJJRCwgMjE0NzQ4MzY0N1VMKSkKKwkJc3lzT1JOZXh0SW5kZXggPSAxOworCSAgICBlbHNlCisJCSsrc3lzT1JOZXh0SW5kZXg7CisKKwkgICAgZm9yICh2YWx1ZSA9IGl0LT5jdXJyKGl0KTsKKwkJIHZhbHVlICYmIHZhbHVlLT5zeXNPUkluZGV4IDwgY3VyOworCQkgdmFsdWUgPSBJVEVSQVRPUl9ORVhUKGl0KSkgeworCSAgICB9CisKKwkgICAgaWYgKHZhbHVlICYmIHZhbHVlLT5zeXNPUkluZGV4ID09IGN1cikgeworCQlpZiAoc3lzT1JOZXh0SW5kZXggPCBjdXIpCisJCSAgICBpdC0+cmVzZXQoaXQpOworCSAgICB9IGVsc2UgeworCQllbnRyeS0+c3lzT1JJbmRleCA9IGN1cjsKKwkJYnJlYWs7CisJICAgIH0KKwl9IHdoaWxlIChmaXJzdE5leHQgIT0gc3lzT1JOZXh0SW5kZXgpOworCisJSVRFUkFUT1JfUkVMRUFTRShpdCk7CisKKwlpZihmaXJzdE5leHQgPT0gc3lzT1JOZXh0SW5kZXgpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJGYWlsZWQgdG8gbG9jYXRlIGEgZnJlZSBpbmRleCBpbiBzeXNPUlRhYmxlXG4iKTsKKyAgICAgICAgICAgIGZyZWUoZW50cnkpOworCX0gZWxzZSB7CisJICAgIGVudHJ5LT5kYXRhID0gZGF0YTsKKwkgICAgZW50cnktPm9pZF9pbmRleC5sZW4gPSAxOworCSAgICBlbnRyeS0+b2lkX2luZGV4Lm9pZHMgPSAmZW50cnktPnN5c09SSW5kZXg7CisKKwkgICAgQ09OVEFJTkVSX0lOU0VSVCh0YWJsZSwgZW50cnkpOworCX0KKyAgICB9Cit9CisKK3N0YXRpYyBpbnQKK3JlZ2lzdGVyX2NiKGludCBtYWpvciwgaW50IG1pbm9yLCB2b2lkKiBzZXJ2LCB2b2lkKiBjbGllbnQpCit7CisgICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUvcmVnaXN0ZXJfY2IiLAorICAgICAgICAgICAgICAgICJyZWdpc3Rlcl9jYiglZCwgJWQsICVwLCAlcClcbiIsIG1ham9yLCBtaW5vciwgc2VydiwgY2xpZW50KSk7CisgICAgcmVnaXN0ZXJfZm9yZWFjaCgoc3RydWN0IHN5c09SVGFibGUqKXNlcnYsIE5VTEwpOworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKiogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCitzdGF0aWMgaW50Cit1bnJlZ2lzdGVyX2NiKGludCBtYWpvciwgaW50IG1pbm9yLCB2b2lkKiBzZXJ2LCB2b2lkKiBjbGllbnQpCit7CisgICAgc3lzT1JUYWJsZV9lbnRyeSAqdmFsdWU7CisgICAgbmV0c25tcF9pdGVyYXRvciogaXQgPSBDT05UQUlORVJfSVRFUkFUT1IodGFibGUpOworCisgICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUvdW5yZWdpc3Rlcl9jYiIsCisgICAgICAgICAgICAgICAgInVucmVnaXN0ZXJfY2IoJWQsICVkLCAlcCwgJXApXG4iLCBtYWpvciwgbWlub3IsIHNlcnYsIGNsaWVudCkpOworICAgIHN5c09STGFzdENoYW5nZSA9ICgoc3RydWN0IHN5c09SVGFibGUqKShzZXJ2KSktPk9SX3VwdGltZTsKKworICAgIHdoaWxlICgodmFsdWUgPSBJVEVSQVRPUl9ORVhUKGl0KSkgJiYgdmFsdWUtPmRhdGEgIT0gc2Vydik7CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7CisgICAgaWYodmFsdWUpIHsKKwlDT05UQUlORVJfUkVNT1ZFKHRhYmxlLCB2YWx1ZSk7CisJZnJlZSh2YWx1ZSk7CisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKiogaGFuZGxlcyByZXF1ZXN0cyBmb3IgdGhlIHN5c09SVGFibGUgdGFibGUgKi8KK3N0YXRpYyBpbnQKK3N5c09SVGFibGVfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0OworCisgICAgREVCVUdNU0dUTCgoIm1pYklJL3N5c09SVGFibGUvc3lzT1JUYWJsZV9oYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAic3lzT1JUYWJsZV9oYW5kbGVyIGNhbGxlZFxuIikpOworCisgICAgaWYgKHJlcWluZm8tPm1vZGUgIT0gTU9ERV9HRVQpIHsKKwlzbm1wX2xvZyhMT0dfRVJSLAorCQkgIkdvdCB1bmV4cGVjdGVkIG9wZXJhdGlvbiBmb3Igc3lzT1JUYWJsZVxuIik7CisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFJlYWQtc3VwcG9ydCAoYWxzbyBjb3ZlcnMgR2V0TmV4dCByZXF1ZXN0cykKKyAgICAgKi8KKyAgICByZXF1ZXN0ID0gcmVxdWVzdHM7CisgICAgd2hpbGUocmVxdWVzdCAmJiByZXF1ZXN0LT5wcm9jZXNzZWQpCisJcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQ7CisgICAgd2hpbGUocmVxdWVzdCkgeworCXN5c09SVGFibGVfZW50cnkgKnRhYmxlX2VudHJ5OworCW5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworCisJaWYgKE5VTEwgPT0gKHRhYmxlX2luZm8gPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KSkpIHsKKwkgICAgc25tcF9sb2coTE9HX0VSUiwKKwkJICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgaW5mbyBmb3Igc3lzT1JUYWJsZVxuIik7CisJICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSgKKwkJICAgIHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKwl9IGVsc2UgaWYoTlVMTCA9PSAodGFibGVfZW50cnkgPSAoc3lzT1JUYWJsZV9lbnRyeSAqKQorCQkJICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpKSkgeworCSAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworCSAgICBjYXNlIENPTFVNTl9TWVNPUklEOgorCSAgICBjYXNlIENPTFVNTl9TWVNPUkRFU0NSOgorCSAgICBjYXNlIENPTFVNTl9TWVNPUlVQVElNRToKKwkJbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorCQkJCQkgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworCQlicmVhazsKKwkgICAgZGVmYXVsdDoKKwkJbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSE9CSkVDVCk7CisJCWJyZWFrOworCSAgICB9CisJfSBlbHNlIHsKKwkgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKwkgICAgY2FzZSBDT0xVTU5fU1lTT1JJRDoKKwkJc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKAorCQkJcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0JKRUNUX0lELAorCQkJKGNvbnN0IHVfY2hhciopdGFibGVfZW50cnktPmRhdGEtPk9SX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5kYXRhLT5PUl9vaWRsZW4gKiBzaXplb2Yob2lkKSk7CisJCWJyZWFrOworCSAgICBjYXNlIENPTFVNTl9TWVNPUkRFU0NSOgorCQlzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoCisJCQlyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9PQ1RFVF9TVFIsCisJCQkoY29uc3QgdV9jaGFyKil0YWJsZV9lbnRyeS0+ZGF0YS0+T1JfZGVzY3IsCisJCQlzdHJsZW4odGFibGVfZW50cnktPmRhdGEtPk9SX2Rlc2NyKSk7CisJCWJyZWFrOworCSAgICBjYXNlIENPTFVNTl9TWVNPUlVQVElNRToKKwkJc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoCisJCQlyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9USU1FVElDS1MsCisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+ZGF0YS0+T1JfdXB0aW1lKTsKKwkJYnJlYWs7CisJICAgIGRlZmF1bHQ6CisJCW5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwgU05NUF9OT1NVQ0hPQkpFQ1QpOworCQlicmVhazsKKwkgICAgfQorCX0KKwlkbyB7CisJICAgIHJlcXVlc3QgPSByZXF1ZXN0LT5uZXh0OworCX0gd2hpbGUocmVxdWVzdCAmJiByZXF1ZXN0LT5wcm9jZXNzZWQpOworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKwogI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCiBleHRlcm4gb2lkICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXTsKIGV4dGVybiBpbnQgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW47CiBleHRlcm4gaW50ICAgICAgc3lzdGVtX21vZHVsZV9jb3VudDsKICNlbmRpZgogCitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqc3lzT1JMYXN0Q2hhbmdlX3JlZzsKK3N0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNPUkxhc3RDaGFuZ2Vfd2luZm87CitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqc3lzT1JUYWJsZV9yZWc7CitzdGF0aWMgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqc3lzT1JUYWJsZV90YWJsZV9pbmZvOworCisvKiogSW5pdGlhbGl6ZXMgdGhlIHN5c09SVGFibGUgbW9kdWxlICovCiB2b2lkCiBpbml0X3N5c09SVGFibGUodm9pZCkKIHsKKyAgICBjb25zdCBvaWQgc3lzT1JMYXN0Q2hhbmdlX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA4IH07CisgICAgY29uc3Qgb2lkIHN5c09SVGFibGVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDkgfTsKKworICAgIHN5c09SVGFibGVfdGFibGVfaW5mbyA9CisgICAgICAgIFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyk7CisKKyAgICB0YWJsZSA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoInN5c09SVGFibGU6dGFibGVfY29udGFpbmVyIik7CisKKyAgICBpZiAoc3lzT1JUYWJsZV90YWJsZV9pbmZvID09IE5VTEwgfHwgdGFibGUgPT0gTlVMTCkgeworICAgICAgICBTTk1QX0ZSRUUoc3lzT1JUYWJsZV90YWJsZV9pbmZvKTsKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUodGFibGUpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXMoc3lzT1JUYWJsZV90YWJsZV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9JTlRFR0VSLCAvKiogaW5kZXg6IHN5c09SSW5kZXggKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICBzeXNPUlRhYmxlX3RhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fU1lTT1JJRDsKKyAgICBzeXNPUlRhYmxlX3RhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fU1lTT1JVUFRJTUU7CisKKyAgICBzeXNPUkxhc3RDaGFuZ2VfcmVnID0KKyAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAibWliSUkvc3lzT1JMYXN0Q2hhbmdlIiwgTlVMTCwKKyAgICAgICAgICAgIHN5c09STGFzdENoYW5nZV9vaWQsIE9JRF9MRU5HVEgoc3lzT1JMYXN0Q2hhbmdlX29pZCksCisgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKwkgICAgJnN5c09STGFzdENoYW5nZV93aW5mbywKKyAgICAgICAgICAgICZzeXNPUkxhc3RDaGFuZ2UsIHNpemVvZih1X2xvbmcpLAorICAgICAgICAgICAgQVNOX1RJTUVUSUNLUywgV0FUQ0hFUl9GSVhFRF9TSVpFKTsKKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKHN5c09STGFzdENoYW5nZV9yZWcsCisJCQkJICAgICZzeXNPUkxhc3RDaGFuZ2Vfd2luZm8pOworCisgICAgc3lzT1JUYWJsZV9yZWcgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICJtaWJJSS9zeXNPUlRhYmxlIiwgc3lzT1JUYWJsZV9oYW5kbGVyLAorICAgICAgICAgICAgc3lzT1JUYWJsZV9vaWQsIE9JRF9MRU5HVEgoc3lzT1JUYWJsZV9vaWQpLCBIQU5ETEVSX0NBTl9ST05MWSk7CisgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcmVnaXN0ZXIoc3lzT1JUYWJsZV9yZWcsIHN5c09SVGFibGVfdGFibGVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZSwgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKworICAgIHN5c09STGFzdENoYW5nZSA9IG5ldHNubXBfZ2V0X2FnZW50X3VwdGltZSgpOworCiAgICAgLyoKLSAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgd2l0aCB0aGUgYWdlbnQgdG8gaGFuZGxlIG91ciBtaWIgdHJlZSAKKyAgICAgKiBJbml0aWFsaXNlIHRoZSBjb250ZW50cyBvZiB0aGUgdGFibGUgaGVyZQogICAgICAqLworICAgIG5ldHNubXBfc3lzT1JUYWJsZV9mb3JlYWNoKCZyZWdpc3Rlcl9mb3JlYWNoLCBOVUxMKTsKIAotI2lmZGVmIFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUKLSAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCBORVRTTk1QX0RTX0FHRU5UX1JPTEUpID09IE1BU1RFUl9BR0VOVCkKLSAgICAgICAgKHZvaWQpIHJlZ2lzdGVyX21pYl9wcmlvcml0eSgibWliSUkvc3lzT1JUYWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB2YXJpYWJsZSAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c09SVGFibGVfdmFyaWFibGVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3QgdmFyaWFibGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3lzT1JUYWJsZV92YXJpYWJsZXMpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHZhcmlhYmxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzT1JUYWJsZV92YXJpYWJsZXNfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzeXNPUlRhYmxlX3ZhcmlhYmxlc19vaWQpIC8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob2lkKSwgMSk7Ci0gICAgZWxzZQotI2VuZGlmCi0gICAgICAgIFJFR0lTVEVSX01JQigibWliSUkvc3lzT1JUYWJsZSIsIHN5c09SVGFibGVfdmFyaWFibGVzLCB2YXJpYWJsZTEsCi0gICAgICAgICAgICAgICAgICAgICBzeXNPUlRhYmxlX3ZhcmlhYmxlc19vaWQpOwotCisgICAgLyoKKyAgICAgKiBSZWdpc3RlciBjYWxsYmFja3MKKyAgICAgKi8KICAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfUkVHX1NZU09SLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgX3JlZ2lzdGVyX3N5c09SX2NhbGxiYWNrLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR19TWVNPUiwgcmVnaXN0ZXJfY2IsIE5VTEwpOwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9VTlJFR19TWVNPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF91bnJlZ2lzdGVyX3N5c09SX2NhbGxiYWNrLCBOVUxMKTsKLSAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19SRVFfVU5SRUdfU1lTT1JfU0VTUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIF91bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2ssIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfVU5SRUdfU1lTT1IsIHVucmVnaXN0ZXJfY2IsIE5VTEwpOwogCiAjaWZkZWYgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKICAgICBpZiAoKytzeXN0ZW1fbW9kdWxlX2NvdW50ID09IDMpCiAgICAgICAgIFJFR0lTVEVSX1NZU09SX1RBQkxFKHN5c3RlbV9tb2R1bGVfb2lkLCBzeXN0ZW1fbW9kdWxlX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgTUlCIG1vZHVsZSBmb3IgU05NUHYyIGVudGl0aWVzIik7CiAjZW5kaWYKLQotICAgIGdldHRpbWVvZmRheSgmc3lzT1JfbGFzdGNoYW5nZSwgTlVMTCk7Ci19Ci0KLSAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgotCSAqCi0JICogIFN5c3RlbSBzcGVjaWZpYyBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbnMKLQkgKgotCSAqKioqKioqKioqKioqKioqKioqKiovCi0KLXVfY2hhciAgICAgICAgICoKLXZhcl9zeXNPUlRhYmxlKHN0cnVjdCB2YXJpYWJsZSAqdnAsCi0gICAgICAgICAgICAgICBvaWQgKiBuYW1lLAotICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgaW50IGV4YWN0LCBzaXplX3QgKiB2YXJfbGVuLCBXcml0ZU1ldGhvZCAqKiB3cml0ZV9tZXRob2QpCi17Ci0gICAgdW5zaWduZWQgbG9uZyAgIGkgPSAwOwotICAgIHN0YXRpYyB1bnNpZ25lZCBsb25nIHJldDsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcHRyID0gdGFibGU7Ci0KLSAgICBpZiAoaGVhZGVyX3NpbXBsZV90YWJsZQotICAgICAgICAodnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCwgbnVtRW50cmllcykpCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgZm9yIChpID0gMTsgcHRyICE9IE5VTEwgJiYgaSA8IG5hbWVbKmxlbmd0aCAtIDFdOyBwdHIgPSBwdHItPm5leHQsIGkrKykgewotICAgICAgICBERUJVR01TR1RMKCgibWliSUkvc3lzT1JUYWJsZSIsICJzeXNPUlRhYmxlIC0tICVsdSAhPSAlbHVcbiIsCi0gICAgICAgICAgICAgICAgICAgIGksIG5hbWVbKmxlbmd0aCAtIDFdKSk7Ci0gICAgfQotICAgIGlmIChwdHIgPT0gTlVMTCkgewotICAgICAgICBERUJVR01TR1RMKCgibWliSUkvc3lzT1JUYWJsZSIsICJzeXNPUlRhYmxlIC0tIG5vIG1hdGNoOiAlbHVcbiIsCi0gICAgICAgICAgICAgICAgICAgIGkpKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgLS0gbWF0Y2g6ICVsdVxuIiwgaSkpOwotCi0gICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKLSAgICBjYXNlIFNZU09SVEFCTEVJRDoKLSAgICAgICAgKnZhcl9sZW4gPSBwdHItPk9SX29pZGxlbiAqIHNpemVvZihwdHItPk9SX29pZFswXSk7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopIHB0ci0+T1Jfb2lkOwotCi0gICAgY2FzZSBTWVNPUlRBQkxFREVTQ1I6Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHB0ci0+T1JfZGVzY3IpOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBwdHItPk9SX2Rlc2NyOwotCi0gICAgY2FzZSBTWVNPUlRBQkxFVVBUSU1FOgotICAgICAgICByZXQgPSBuZXRzbm1wX3RpbWV2YWxfdXB0aW1lKCZwdHItPk9SX3VwdGltZSk7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopICYgcmV0OwotCi0gICAgZGVmYXVsdDoKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9zeXNPUlRhYmxlXG4iLAotICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLQotaW50Ci1yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICogb2lkaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9pZGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkZXNjciwgbmV0c25tcF9zZXNzaW9uICogc3MpCi17Ci0gICAgc3RydWN0IHN5c09SVGFibGUgKnB0ciwgKipucHRyOwotICAgIHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzIHJlZ19zeXNPUl9wYXJtczsKLQotICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgcmVnaXN0ZXJpbmc6ICIpKTsKLSAgICBERUJVR01TR09JRCgoIm1pYklJL3N5c09SVGFibGUiLCBvaWRpbiwgb2lkbGVuKSk7Ci0gICAgREVCVUdNU0coKCJtaWJJSS9zeXNPUlRhYmxlIiwgIlxuIikpOwotCi0gICAgcHRyID0gKHN0cnVjdCBzeXNPUlRhYmxlICopIG1hbGxvYyhzaXplb2Yoc3RydWN0IHN5c09SVGFibGUpKTsKLSAgICBpZiAocHRyID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQ7Ci0gICAgfQotICAgIHB0ci0+T1JfZGVzY3IgPSAoY2hhciAqKSBzdHJkdXAoZGVzY3IpOwotICAgIGlmIChwdHItPk9SX2Rlc2NyID09IE5VTEwpIHsKLSAgICAgICAgZnJlZShwdHIpOwotICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKLSAgICB9Ci0gICAgcHRyLT5PUl9vaWRsZW4gPSBvaWRsZW47Ci0gICAgcHRyLT5PUl9vaWQgPSAob2lkICopIG1hbGxvYyhzaXplb2Yob2lkKSAqIG9pZGxlbik7Ci0gICAgaWYgKHB0ci0+T1Jfb2lkID09IE5VTEwpIHsKLSAgICAgICAgZnJlZShwdHItPk9SX2Rlc2NyKTsKLSAgICAgICAgZnJlZShwdHIpOwotICAgICAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNUUkFUSU9OX0ZBSUxFRDsKLSAgICB9Ci0gICAgbWVtY3B5KHB0ci0+T1Jfb2lkLCBvaWRpbiwgc2l6ZW9mKG9pZCkgKiBvaWRsZW4pOwotICAgIGdldHRpbWVvZmRheSgmKHB0ci0+T1JfdXB0aW1lKSwgTlVMTCk7Ci0gICAgZ2V0dGltZW9mZGF5KCYoc3lzT1JfbGFzdGNoYW5nZSksIE5VTEwpOwotICAgIHB0ci0+T1Jfc2VzcyA9IHNzOwotICAgIHB0ci0+bmV4dCA9IE5VTEw7Ci0gICAgbnVtRW50cmllcysrOwotCi0gICAgLyogYWRkIHRoaXMgZW50cnkgdG8gdGhlIGVuZCBvZiB0aGUgY2hhaW5lZCBsaXN0ICovCi0gICAgbnB0ciA9ICZ0YWJsZTsKLSAgICB3aGlsZSAoKm5wdHIgIT0gTlVMTCkKLSAgICAgICAgbnB0ciA9ICYoKCpucHRyKS0+bmV4dCk7Ci0gICAgKm5wdHIgPSBwdHI7Ci0KLSAgICByZWdfc3lzT1JfcGFybXMubmFtZSA9IG9pZGluOwotICAgIHJlZ19zeXNPUl9wYXJtcy5uYW1lbGVuID0gb2lkbGVuOwotICAgIHJlZ19zeXNPUl9wYXJtcy5kZXNjciA9IGRlc2NyOwotICAgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFR19TWVNPUiwgJnJlZ19zeXNPUl9wYXJtcyk7Ci0KLSAgICByZXR1cm4gU1lTX09SVEFCTEVfUkVHSVNURVJFRF9PSzsKLX0KLQotaW50Ci1yZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqIG9pZGluLCBzaXplX3Qgb2lkbGVuLCBjb25zdCBjaGFyICpkZXNjcikKLXsKLSAgICByZXR1cm4gcmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZGluLCBvaWRsZW4sIGRlc2NyLCBOVUxMKTsKLX0KLQotCi0KLWludAotdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICogb2lkaW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgb2lkbGVuLCBuZXRzbm1wX3Nlc3Npb24gKiBzcykKLXsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcHRyLCAqcHJldiA9IE5VTEwsICpuZXh0OwotICAgIGludCAgICAgICAgICAgICBmb3VuZCA9IFNZU19PUlRBQkxFX05PX1NVQ0hfUkVHSVNUUkFUSU9OOwotICAgIHN0cnVjdCByZWdpc3Rlcl9zeXNPUl9wYXJhbWV0ZXJzIHJlZ19zeXNPUl9wYXJtczsKLQotICAgIERFQlVHTVNHVEwoKCJtaWJJSS9zeXNPUlRhYmxlIiwgInN5c09SVGFibGUgdW5yZWdpc3RlcmluZzogIikpOwotICAgIERFQlVHTVNHT0lEKCgibWliSUkvc3lzT1JUYWJsZSIsIG9pZGluLCBvaWRsZW4pKTsKLSAgICBERUJVR01TRygoIm1pYklJL3N5c09SVGFibGUiLCAiXG4iKSk7Ci0KLSAgICBmb3IgKHB0ciA9IHRhYmxlOyBwdHI7IHB0ciA9IG5leHQpCi0gICAgewotICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OwotICAgICAgICBpZiAocHRyLT5PUl9zZXNzID09IHNzICYmCi0gICAgICAgICAgKHNubXBfb2lkX2NvbXBhcmUob2lkaW4sIG9pZGxlbiwgcHRyLT5PUl9vaWQsIHB0ci0+T1Jfb2lkbGVuKSA9PSAwKSkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHByZXYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICB0YWJsZSA9IHB0ci0+bmV4dDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBwcmV2LT5uZXh0ID0gcHRyLT5uZXh0OwotCi0gICAgICAgICAgICBmcmVlKHB0ci0+T1Jfb2lkKTsKLSAgICAgICAgICAgIGZyZWUocHRyLT5PUl9kZXNjcik7Ci0gICAgICAgICAgICBmcmVlKHB0cik7Ci0gICAgICAgICAgICBudW1FbnRyaWVzLS07Ci0gICAgICAgICAgICBnZXR0aW1lb2ZkYXkoJihzeXNPUl9sYXN0Y2hhbmdlKSwgTlVMTCk7Ci0gICAgICAgICAgICBmb3VuZCA9IFNZU19PUlRBQkxFX1VOUkVHSVNURVJFRF9PSzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHByZXYgPSBwdHI7Ci0gICAgfQotCi0gICAgcmVnX3N5c09SX3Bhcm1zLm5hbWUgPSBvaWRpbjsKLSAgICByZWdfc3lzT1JfcGFybXMubmFtZWxlbiA9IG9pZGxlbjsKLSAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICBTTk1QRF9DQUxMQkFDS19VTlJFR19TWVNPUiwgJnJlZ19zeXNPUl9wYXJtcyk7Ci0KLSAgICByZXR1cm4gZm91bmQ7Ci19Ci0KLQotaW50Ci11bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICogb2lkaW4sIHNpemVfdCBvaWRsZW4pCi17Ci0gICAgcmV0dXJuIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZGluLCBvaWRsZW4sIE5VTEwpOwogfQogCiB2b2lkCi11bnJlZ2lzdGVyX3N5c09SVGFibGVfYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKiBzcykKK3NodXRkb3duX3N5c09SVGFibGUodm9pZCkKIHsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcHRyLCAqcHJldiA9IE5VTEwsICpuZXh0OworI2lmZGVmIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCisgICAgaWYgKHN5c3RlbV9tb2R1bGVfY291bnQtLSA9PSAzKQorICAgICAgICBVTlJFR0lTVEVSX1NZU09SX1RBQkxFKHN5c3RlbV9tb2R1bGVfb2lkLCBzeXN0ZW1fbW9kdWxlX29pZF9sZW4pOworI2VuZGlmCiAKLSAgICBmb3IgKHB0ciA9IHRhYmxlOyBwdHI7IHB0ciA9IG5leHQpCi0gICAgewotICAgICAgICBuZXh0ID0gcHRyLT5uZXh0OwotICAgICAgICBpZiAoKChzcy0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1NVQlNFU1NJT04pICYmIHB0ci0+T1Jfc2VzcyA9PSBzcykgfHwKLSAgICAgICAgICAgICghKHNzLT5mbGFncyAmIFNOTVBfRkxBR1NfU1VCU0VTU0lPTikgJiYgcHRyLT5PUl9zZXNzICYmCi0gICAgICAgICAgICAgcHRyLT5PUl9zZXNzLT5zdWJzZXNzaW9uID09IHNzKSkgewotICAgICAgICAgICAgaWYgKHByZXYgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICB0YWJsZSA9IG5leHQ7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJldi0+bmV4dCA9IG5leHQ7Ci0gICAgICAgICAgICBmcmVlKHB0ci0+T1Jfb2lkKTsKLSAgICAgICAgICAgIGZyZWUocHRyLT5PUl9kZXNjcik7Ci0gICAgICAgICAgICBmcmVlKHB0cik7Ci0gICAgICAgICAgICBudW1FbnRyaWVzLS07Ci0gICAgICAgICAgICBnZXR0aW1lb2ZkYXkoJihzeXNPUl9sYXN0Y2hhbmdlKSwgTlVMTCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgcHJldiA9IHB0cjsKLSAgICB9CisgICAgc25tcF91bnJlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1VOUkVHX1NZU09SLCB1bnJlZ2lzdGVyX2NiLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsKKyAgICBzbm1wX3VucmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVHX1NZU09SLCByZWdpc3Rlcl9jYiwgTlVMTCwgMSk7CisKKyAgICBpZiAodGFibGUpCisgICAgICAgIENPTlRBSU5FUl9DTEVBUih0YWJsZSwgbmV0c25tcF9jb250YWluZXJfc2ltcGxlX2ZyZWUsIE5VTEwpOworICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIoc3lzT1JUYWJsZV9yZWcpOworICAgIHN5c09SVGFibGVfcmVnID0gTlVMTDsKKyAgICB0YWJsZSA9IE5VTEw7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHN5c09SVGFibGVfdGFibGVfaW5mbyk7CisgICAgc3lzT1JUYWJsZV90YWJsZV9pbmZvID0gTlVMTDsKKyAgICBuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlcihzeXNPUkxhc3RDaGFuZ2VfcmVnKTsKKyAgICBzeXNPUkxhc3RDaGFuZ2VfcmVnID0gTlVMTDsKIH0KLQotc3RhdGljIGludAotX3JlZ2lzdGVyX3N5c09SX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwgdm9pZCAqc2VydmVyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNsaWVudGFyZykKLXsKLSAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSAqcGFybXMgPSAoc3RydWN0IHN5c09SVGFibGUgKikgc2VydmVyYXJnOwotCi0gICAgcmV0dXJuIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhwYXJtcy0+T1Jfb2lkLCBwYXJtcy0+T1Jfb2lkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFybXMtPk9SX2Rlc2NyLCBwYXJtcy0+T1Jfc2Vzcyk7Ci19Ci0KLXN0YXRpYyBpbnQKLV91bnJlZ2lzdGVyX3N5c09SX2J5X3Nlc3Npb25fY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpzZXJ2ZXJhcmcsIHZvaWQgKmNsaWVudGFyZykKLXsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24gPSAobmV0c25tcF9zZXNzaW9uICopIHNlcnZlcmFyZzsKLQotICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9ieV9zZXNzaW9uKHNlc3Npb24pOwotCi0gICAgcmV0dXJuIDA7Ci19Ci0KLXN0YXRpYyBpbnQKLV91bnJlZ2lzdGVyX3N5c09SX2NhbGxiYWNrKGludCBtYWpvcklELCBpbnQgbWlub3JJRCwgdm9pZCAqc2VydmVyYXJnLAotICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjbGllbnRhcmcpCi17Ci0gICAgc3RydWN0IHN5c09SVGFibGUgKnBhcm1zID0gKHN0cnVjdCBzeXNPUlRhYmxlICopIHNlcnZlcmFyZzsKLQotICAgIHJldHVybiB1bnJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhwYXJtcy0+T1Jfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJtcy0+T1Jfb2lkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJtcy0+T1Jfc2Vzcyk7Ci19Ci0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c09SVGFibGUuaAppbmRleCA1OWZiN2UwLi5lOTg4ZmRhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oCkBAIC0xLDU3ICsxLDE1IEBACi0vKgotICogIFRlbXBsYXRlIE1JQiBncm91cCBpbnRlcmZhY2UgLSBzeXNPUlRhYmxlLmgKLSAqCi0gKi8KLSNpZm5kZWYgX01JQkdST1VQX1NZU09SVEFCTEVfSAotI2RlZmluZSBfTUlCR1JPVVBfU1lTT1JUQUJMRV9ICisjaWZuZGVmIE1JQkdST1VQX1NZU09SVEFCTEVfSAorI2RlZmluZSBNSUJHUk9VUF9TWVNPUlRBQkxFX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKLWNvbmZpZ19yZXF1aXJlKG1pYklJL3N5c3RlbV9taWIpCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCiAKLSAgICAgc3RydWN0IHN5c09SVGFibGUgewotICAgICAgICAgY2hhciAgICAgICAgICAgKk9SX2Rlc2NyOwotICAgICAgICAgb2lkICAgICAgICAgICAgKk9SX29pZDsKLSAgICAgICAgIHNpemVfdCAgICAgICAgICBPUl9vaWRsZW47Ci0gICAgICAgICBzdHJ1Y3QgdGltZXZhbCAgT1JfdXB0aW1lOwotICAgICAgICAgbmV0c25tcF9zZXNzaW9uICpPUl9zZXNzOwotICAgICAgICAgc3RydWN0IHN5c09SVGFibGUgKm5leHQ7Ci0gICAgIH07CitleHRlcm4gdm9pZCAgICAgaW5pdF9zeXNPUlRhYmxlKHZvaWQpOworZXh0ZXJuIHZvaWQgICAgIHNodXRkb3duX3N5c09SVGFibGUodm9pZCk7CiAKLSAgICAgc3RydWN0IHJlZ2lzdGVyX3N5c09SX3BhcmFtZXRlcnMgewotICAgICAgICAgb2lkICAgICAgICAgICAgKm5hbWU7Ci0gICAgICAgICBpbnQgICAgICAgICAgICAgbmFtZWxlbjsKLSAgICAgICAgIGNvbnN0IGNoYXIgICAgICpkZXNjcjsKLSAgICAgfTsKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCiAKLSAgICAgZXh0ZXJuIHZvaWQgICAgIGluaXRfc3lzT1JUYWJsZSh2b2lkKTsKLSAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX3N5c09SVGFibGU7Ci0gICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9zeXNPUkxhc3RDaGFuZ2U7Ci0gICAgIGV4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKik7Ci0gICAgIGV4dGVybiBpbnQgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGUob2lkICosIHNpemVfdCk7Ci0gICAgIGV4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlX3Nlc3Mob2lkICosIHNpemVfdCwgY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqKTsKLSAgICAgZXh0ZXJuIGludCAgICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZV9zZXNzKG9pZCAqLCBzaXplX3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKik7Ci0gICAgIGV4dGVybiB2b2lkICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGVfYnlfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKik7Ci0KLSNkZWZpbmUJU1lTT1JUQUJMRUlOREVYCQkgICAgICAgIDEKLSNkZWZpbmUJU1lTT1JUQUJMRUlECQkgICAgICAgIDIKLSNkZWZpbmUJU1lTT1JUQUJMRURFU0NSCQkgICAgICAgIDMKLSNkZWZpbmUJU1lTT1JUQUJMRVVQVElNRQkgICAgICAgIDQKLQotI2RlZmluZSBTWVNfT1JUQUJMRV9SRUdJU1RFUkVEX09LICAgICAgICAgICAgICAwCi0jZGVmaW5lIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQgICAgICAgLTEKLSNkZWZpbmUgU1lTX09SVEFCTEVfVU5SRUdJU1RFUkVEX09LICAgICAgICAgICAgMAotI2RlZmluZSBTWVNfT1JUQUJMRV9OT19TVUNIX1JFR0lTVFJBVElPTiAgICAgIC0xCi0KLSNpZmRlZiAgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSNkZWZpbmUgUkVHSVNURVJfU1lTT1JfRU5UUlkodGhlb2lkLCBkZXNjcikgICAgICAgICAgICAgICAgICAgICAgXAotICAodm9pZClyZWdpc3Rlcl9zeXNPUlRhYmxlKHRoZW9pZCwgc2l6ZW9mKHRoZW9pZCkvc2l6ZW9mKG9pZCksIGRlc2NyKTsKLSNkZWZpbmUgUkVHSVNURVJfU1lTT1JfVEFCTEUodGhlb2lkLCBsZW4sIGRlc2NyKSAgICAgICAgICAgICAgICAgICAgICBcCi0gICh2b2lkKXJlZ2lzdGVyX3N5c09SVGFibGUodGhlb2lkLCBsZW4sIGRlc2NyKTsKLQotI2Vsc2UKLSNkZWZpbmUgUkVHSVNURVJfU1lTT1JfRU5UUlkoeCx5KQotI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9UQUJMRSh4LHkseikKLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUgKi8KLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1NZU09SVEFCTEVfSCAqLworI2VuZGlmIC8qIE1JQkdST1VQX1NZU09SVEFCTEVfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5jCmluZGV4IGVkOTdhZjMuLjUzMmVhMjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmMKQEAgLTMxLDExICszMSw2IEBACiAjaW5jbHVkZSA8d2luc29jay5oPgogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChtaW5ndzMyKSAmJiBkZWZpbmVkKEhBVkVfU1lTX1RJTUVfSCkKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxjdHlwZS5oPgogI2lmIEhBVkVfVVRTTkFNRV9ICiAjaW5jbHVkZSA8dXRzbmFtZS5oPgogI2Vsc2UKQEAgLTQzLDE4ICszOCwxNCBAQAogI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CiAjZW5kaWYKICNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCiAjaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInN5c3RlbV9taWIuaCIKLSNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCi0KKyNpbmNsdWRlICJ1cGRhdGVzLmgiCiAKICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCkBAIC02NCwzMyArNTUsMjQgQEAKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCiAjZGVmaW5lIFNZU19TVFJJTkdfTEVOCTI1NgotY2hhciAgICAgICAgICAgIHZlcnNpb25fZGVzY3JbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9WRVJTX0RFU0M7Ci1jaGFyICAgICAgICAgICAgc3lzQ29udGFjdFtTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19DT05UQUNUOwotY2hhciAgICAgICAgICAgIHN5c05hbWVbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9TWVNfTkFNRTsKLWNoYXIgICAgICAgICAgICBzeXNMb2NhdGlvbltTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19MT0M7Ci1vaWQgICAgICAgICAgICAgc3lzT2JqZWN0SURbTUFYX09JRF9MRU5dOwotc2l6ZV90ICAgICAgICAgIHN5c09iamVjdElETGVuZ3RoOworc3RhdGljIGNoYXIgICAgIHZlcnNpb25fZGVzY3JbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9WRVJTX0RFU0M7CitzdGF0aWMgY2hhciAgICAgc3lzQ29udGFjdFtTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19DT05UQUNUOworc3RhdGljIGNoYXIgICAgIHN5c05hbWVbU1lTX1NUUklOR19MRU5dID0gTkVUU05NUF9TWVNfTkFNRTsKK3N0YXRpYyBjaGFyICAgICBzeXNMb2NhdGlvbltTWVNfU1RSSU5HX0xFTl0gPSBORVRTTk1QX1NZU19MT0M7CitzdGF0aWMgb2lkICAgICAgc3lzT2JqZWN0SURbTUFYX09JRF9MRU5dOworc3RhdGljIHNpemVfdCBzeXNPYmplY3RJREJ5dGVMZW5ndGg7CiAKIGV4dGVybiBvaWQgICAgICB2ZXJzaW9uX3N5c29pZFtdOwogZXh0ZXJuIGludCAgICAgIHZlcnNpb25fc3lzb2lkX2xlbjsKIAotY2hhciAgICAgICAgICAgIG9sZHZlcnNpb25fZGVzY3JbU1lTX1NUUklOR19MRU5dOwotY2hhciAgICAgICAgICAgIG9sZHN5c0NvbnRhY3RbU1lTX1NUUklOR19MRU5dOwotY2hhciAgICAgICAgICAgIG9sZHN5c05hbWVbU1lTX1NUUklOR19MRU5dOwotY2hhciAgICAgICAgICAgIG9sZHN5c0xvY2F0aW9uW1NZU19TVFJJTkdfTEVOXTsKLQotaW50ICAgICAgICAgICAgIHN5c1NlcnZpY2VzID0gNzI7Ci1pbnQgICAgICAgICAgICAgc3lzU2VydmljZXNDb25maWdlZCA9IDA7CitzdGF0aWMgaW50ICAgICAgc3lzU2VydmljZXMgPSA3MjsKK3N0YXRpYyBpbnQgICAgICBzeXNTZXJ2aWNlc0NvbmZpZ2VkID0gMDsKIAogZXh0ZXJuIG9pZCAgICAgIHZlcnNpb25faWRbXTsKIGV4dGVybiBpbnQgICAgICB2ZXJzaW9uX2lkX2xlbjsKIAogc3RhdGljIGludCAgICAgIHN5c0NvbnRhY3RTZXQgPSAwLCBzeXNMb2NhdGlvblNldCA9IDAsIHN5c05hbWVTZXQgPSAwOwogCi1Xcml0ZU1ldGhvZCAgICAgd3JpdGVTeXN0ZW07Ci1pbnQgICAgICAgICAgICAgaGVhZGVyX3N5c3RlbShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiwgV3JpdGVNZXRob2QgKiopOwotCiAjaWYgKGRlZmluZWQgKFdJTjMyKSAmJiBkZWZpbmVkIChIQVZFX1dJTjMyX1BMQVRGT1JNX1NESykpIHx8IGRlZmluZWQgKG1pbmd3MzIpCiBzdGF0aWMgdm9pZCAgICAgd2luZG93c09TVmVyc2lvblN0cmluZyhjaGFyIFtdLCBzaXplX3QpOwogI2VuZGlmCkBAIC0xMDEsMTggKzgzLDEyIEBACiAJICoKIAkgKioqKioqKioqKioqKioqKioqKioqLwogCi12b2lkCitzdGF0aWMgdm9pZAogc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNkZXNjcihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwotCiAgICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplb2YodmVyc2lvbl9kZXNjcikpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLAotICAgICAgICAgICAgICAgICBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgInN5c2Rlc2NyIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAotICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylzaXplb2YodmVyc2lvbl9kZXNjciksCi0gICAgICAgICAgICAgICAgIGNwdHIpOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfZXJyb3IoInN5c2Rlc2NyIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAorCQkJICAgICAodW5zaWduZWQgbG9uZylzaXplb2YodmVyc2lvbl9kZXNjciksIGNwdHIpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgewogICAgICAgICB2ZXJzaW9uX2Rlc2NyWzBdID0gJ1wwJzsKICAgICB9IGVsc2UgewpAQCAtMTIwLDE2OCArOTYsODkgQEAKICAgICB9CiB9CiAKLXZvaWQKK05FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkCitzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNoYXIqIHZhbHVlLCBzaXplX3Qgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCogZ3VhcmQpCit7CisgICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplKSB7CisJbmV0c25tcF9jb25maWdfZXJyb3IoIiVzIHRva2VuIHRvbyBsb25nIChtdXN0IGJlIDwgJWx1KTpcblx0JXMiLAorCQkJICAgICB0b2tlbiwgKHVuc2lnbmVkIGxvbmcpc2l6ZSwgY3B0cik7CisgICAgfQorCisgICAgaWYgKCp0b2tlbiA9PSAncCcgJiYgc3RyY2FzZWNtcCh0b2tlbiArIDEsIG5hbWUpID09IDApIHsKKyAgICAgICAgaWYgKCpndWFyZCA8IDApIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBUaGlzIGlzIGJvZ3VzIChhbmQgc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkpIC0tIHRoZSB2YWx1ZSBpcworICAgICAgICAgICAgICogYWxyZWFkeSBjb25maWd1cmVkIHJlYWQtb25seS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSAlcy4wXG4iLCBuYW1lKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICsrKCpndWFyZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoKmd1YXJkID4gMCkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gd2UgYWxyZWFkeSByZWFkIGEKKyAgICAgICAgICAgICAqIHBlcnNpc3RlbnQgdmFsdWUgd2hpY2ggd2Ugc2hvdWxkIGlnbm9yZSBpbiBmYXZvdXIgb2YgdGhpcyBvbmUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgJXMuMFxuIiwgbmFtZSk7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRmFsbCB0aHJvdWdoIGFuZCBjb3B5IGluIHRoaXMgdmFsdWUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgfQorICAgICAgICAqZ3VhcmQgPSAtMTsKKyAgICB9CisKKyAgICBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgeworICAgICAgICAqdmFsdWUgPSAnXDAnOworICAgIH0gZWxzZSBpZiAoc3RybGVuKGNwdHIpIDwgc2l6ZSkgeworICAgICAgICBzdHJjcHkodmFsdWUsIGNwdHIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKIHN5c3RlbV9wYXJzZV9jb25maWdfc3lzbG9jKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07Ci0KLSAgICBpZiAoc3RybGVuKGNwdHIpID49IHNpemVvZihzeXNMb2NhdGlvbikpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLCAxMDI0LAotICAgICAgICAgICAgICAgICAic3lzbG9jYXRpb24gdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNpemVvZihzeXNMb2NhdGlvbiksIGNwdHIpOwotICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcCh0b2tlbiwgInBzeXNsb2NhdGlvbiIpID09IDApIHsKLSAgICAgICAgaWYgKHN5c0xvY2F0aW9uU2V0IDwgMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gdGhlIHN5c0xvY2F0aW9uCi0gICAgICAgICAgICAgKiBpcyBhbHJlYWR5IGNvbmZpZ3VyZWQgcmVhZC1vbmx5LiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAgICAgImlnbm9yaW5nIGF0dGVtcHRlZCBvdmVycmlkZSBvZiByZWFkLW9ubHkgc3lzTG9jYXRpb24uMFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzeXNMb2NhdGlvblNldCsrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHN5c0xvY2F0aW9uU2V0ID4gMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gd2UgYWxyZWFkeSByZWFkIGEKLSAgICAgICAgICAgICAqIHBlcnNpc3RlbnQgdmFsdWUgb2Ygc3lzTG9jYXRpb24sIHdoaWNoIHdlIHNob3VsZCBpZ25vcmUgaW4KLSAgICAgICAgICAgICAqIGZhdm91ciBvZiB0aGlzIG9uZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c0xvY2F0aW9uLjBcbiIpOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEZhbGwgdGhyb3VnaCBhbmQgY29weSBpbiB0aGlzIHZhbHVlLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgfQotICAgICAgICBzeXNMb2NhdGlvblNldCA9IC0xOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAoY3B0ciwgIlwiXCIiKSA9PSAwKSB7Ci0gICAgICAgIHN5c0xvY2F0aW9uWzBdID0gJ1wwJzsKLSAgICB9IGVsc2UgaWYgKHN0cmxlbihjcHRyKSA8IHNpemVvZihzeXNMb2NhdGlvbikpIHsKLSAgICAgICAgc3RyY3B5KHN5c0xvY2F0aW9uLCBjcHRyKTsKLSAgICB9CisgICAgc3lzdGVtX3BhcnNlX2NvbmZpZ19zdHJpbmcodG9rZW4sIGNwdHIsICJzeXNMb2NhdGlvbiIsIHN5c0xvY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzeXNMb2NhdGlvbiksICZzeXNMb2NhdGlvblNldCk7CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2Nvbihjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKLSAgICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwotCi0gICAgaWYgKHN0cmxlbihjcHRyKSA+PSBzaXplb2Yoc3lzQ29udGFjdCkpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLCAxMDI0LAotICAgICAgICAgICAgICAgICAic3lzY29udGFjdCB0b2tlbiB0b28gbG9uZyAobXVzdCBiZSA8ICVsdSk6XG5cdCVzIiwKLSAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpc2l6ZW9mKHN5c0NvbnRhY3QpLCBjcHRyKTsKLSAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOwotICAgIH0KLQotICAgIGlmIChzdHJjbXAodG9rZW4sICJwc3lzY29udGFjdCIpID09IDApIHsKLSAgICAgICAgaWYgKHN5c0NvbnRhY3RTZXQgPCAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB0aGUgc3lzQ29udGFjdAotICAgICAgICAgICAgICogaXMgYWxyZWFkeSBjb25maWd1cmVkIHJlYWQtb25seS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c0NvbnRhY3QuMFxuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzeXNDb250YWN0U2V0Kys7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoc3lzQ29udGFjdFNldCA+IDApIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBUaGlzIGlzIGJvZ3VzIChhbmQgc2hvdWxkbid0IGhhcHBlbiBhbnl3YXkpIC0tIHdlIGFscmVhZHkgcmVhZCBhCi0gICAgICAgICAgICAgKiBwZXJzaXN0ZW50IHZhbHVlIG9mIHN5c0NvbnRhY3QsIHdoaWNoIHdlIHNob3VsZCBpZ25vcmUgaW4gZmF2b3VyCi0gICAgICAgICAgICAgKiBvZiB0aGlzIG9uZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKLSAgICAgICAgICAgICAgICAgICAgICJpZ25vcmluZyBhdHRlbXB0ZWQgb3ZlcnJpZGUgb2YgcmVhZC1vbmx5IHN5c0NvbnRhY3QuMFxuIik7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogRmFsbCB0aHJvdWdoIGFuZCBjb3B5IGluIHRoaXMgdmFsdWUuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICB9Ci0gICAgICAgIHN5c0NvbnRhY3RTZXQgPSAtMTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKGNwdHIsICJcIlwiIikgPT0gMCkgewotICAgICAgICBzeXNDb250YWN0WzBdID0gJ1wwJzsKLSAgICB9IGVsc2UgaWYgKHN0cmxlbihjcHRyKSA8IHNpemVvZihzeXNDb250YWN0KSkgewotICAgICAgICBzdHJjcHkoc3lzQ29udGFjdCwgY3B0cik7Ci0gICAgfQorICAgIHN5c3RlbV9wYXJzZV9jb25maWdfc3RyaW5nKHRva2VuLCBjcHRyLCAic3lzQ29udGFjdCIsIHN5c0NvbnRhY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN5c0NvbnRhY3QpLCAmc3lzQ29udGFjdFNldCk7CiB9CiAKLXZvaWQKK3N0YXRpYyB2b2lkCiBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c25hbWUoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHRtcGJ1ZlsxMDI0XTsKLQotICAgIGlmIChzdHJsZW4oY3B0cikgPj0gc2l6ZW9mKHN5c05hbWUpKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1ZiwgMTAyNCwKLSAgICAgICAgICAgICAgICAgInN5c25hbWUgdG9rZW4gdG9vIGxvbmcgKG11c3QgYmUgPCAlbHUpOlxuXHQlcyIsCi0gICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXNpemVvZihzeXNOYW1lKSwgY3B0cik7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKHRva2VuLCAicHN5c25hbWUiKSA9PSAwKSB7Ci0gICAgICAgIGlmIChzeXNOYW1lU2V0IDwgMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMgYm9ndXMgKGFuZCBzaG91bGRuJ3QgaGFwcGVuIGFueXdheSkgLS0gdGhlIHN5c05hbWUKLSAgICAgICAgICAgICAqIGlzIGFscmVhZHkgY29uZmlndXJlZCByZWFkLW9ubHkuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSBzeXNOYW1lLjBcbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3lzTmFtZVNldCsrOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKHN5c05hbWVTZXQgPiAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhpcyBpcyBib2d1cyAoYW5kIHNob3VsZG4ndCBoYXBwZW4gYW55d2F5KSAtLSB3ZSBhbHJlYWR5IHJlYWQgYQotICAgICAgICAgICAgICogcGVyc2lzdGVudCB2YWx1ZSBvZiBzeXNOYW1lLCB3aGljaCB3ZSBzaG91bGQgaWdub3JlIGluIGZhdm91cgotICAgICAgICAgICAgICogb2YgdGhpcyBvbmUuICAKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAiaWdub3JpbmcgYXR0ZW1wdGVkIG92ZXJyaWRlIG9mIHJlYWQtb25seSBzeXNOYW1lLjBcbiIpOwotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIEZhbGwgdGhyb3VnaCBhbmQgY29weSBpbiB0aGlzIHZhbHVlLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgfQotICAgICAgICBzeXNOYW1lU2V0ID0gLTE7Ci0gICAgfQotCi0gICAgaWYgKHN0cmNtcChjcHRyLCAiXCJcIiIpID09IDApIHsKLSAgICAgICAgc3lzTmFtZVswXSA9ICdcMCc7Ci0gICAgfSBlbHNlIGlmIChzdHJsZW4oY3B0cikgPCBzaXplb2Yoc3lzTmFtZSkpIHsKLSAgICAgICAgc3RyY3B5KHN5c05hbWUsIGNwdHIpOwotICAgIH0KKyAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N0cmluZyh0b2tlbiwgY3B0ciwgInN5c05hbWUiLCBzeXNOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzeXNOYW1lKSwgJnN5c05hbWVTZXQpOwogfQogCi12b2lkCitzdGF0aWMgdm9pZAogc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNTZXJ2aWNlcyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKICAgICBzeXNTZXJ2aWNlcyA9IGF0b2koY3B0cik7CiAgICAgc3lzU2VydmljZXNDb25maWdlZCA9IDE7CiB9CiAKLXZvaWQgc3lzdGVtX3BhcnNlX2NvbmZpZ19zeXNPYmplY3RJRChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKK3N0YXRpYyB2b2lkCitzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c09iamVjdElEKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgdG1wYnVmWzEwMjRdOwotCi0gICAgc3lzT2JqZWN0SURMZW5ndGggPSBNQVhfT0lEX0xFTjsKKyAgICBzaXplX3Qgc3lzT2JqZWN0SURMZW5ndGggPSBNQVhfT0lEX0xFTjsKICAgICBpZiAoIXJlYWRfb2JqaWQoY3B0ciwgc3lzT2JqZWN0SUQsICZzeXNPYmplY3RJRExlbmd0aCkpIHsKLSAgICAgICAgc25wcmludGYodG1wYnVmLAotICAgICAgICAgICAgICAgICBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgInN5c29iamVjdGlkIHRva2VuIG5vdCBhIHBhcnNhYmxlIE9JRDpcblx0JXMiLAotICAgICAgICAgICAgICAgICBjcHRyKTsKLSAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOwotICAgICAgICBtZW1jcHkoc3lzT2JqZWN0SUQsIHZlcnNpb25fc3lzb2lkLCB2ZXJzaW9uX3N5c29pZF9sZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgICAgIHN5c09iamVjdElETGVuZ3RoID0gdmVyc2lvbl9zeXNvaWRfbGVuOwotICAgIH0KKwluZXRzbm1wX2NvbmZpZ19lcnJvcigic3lzb2JqZWN0aWQgdG9rZW4gbm90IGEgcGFyc2FibGUgT0lEOlxuXHQlcyIsCisJCQkgICAgIGNwdHIpOworICAgICAgICBzeXNPYmplY3RJREJ5dGVMZW5ndGggPSB2ZXJzaW9uX3N5c29pZF9sZW4gICogc2l6ZW9mKG9pZCk7CisgICAgICAgIG1lbWNweShzeXNPYmplY3RJRCwgdmVyc2lvbl9zeXNvaWQsIHN5c09iamVjdElEQnl0ZUxlbmd0aCk7CisgICAgfSBlbHNlCisgICAgICAgIHN5c09iamVjdElEQnl0ZUxlbmd0aCA9IHN5c09iamVjdElETGVuZ3RoICogc2l6ZW9mKG9pZCk7CiB9CiAKIApAQCAtMjkxLDI4ICsxODgsOCBAQAogCSAqCiAJICoqKioqKioqKioqKioqKioqKioqKi8KIAotLyoKLSAqIGRlZmluZSB0aGUgc3RydWN0dXJlIHdlJ3JlIGdvaW5nIHRvIGFzayB0aGUgYWdlbnQgdG8gcmVnaXN0ZXIgb3VyCi0gKiBpbmZvcm1hdGlvbiBhdCAKLSAqLwotc3RydWN0IHZhcmlhYmxlMSBzeXN0ZW1fdmFyaWFibGVzW10gPSB7Ci0gICAge1ZFUlNJT05fREVTQ1IsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7MX19LAotICAgIHtWRVJTSU9OSUQsIEFTTl9PQkpFQ1RfSUQsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7Mn19LAotICAgIHtVUFRJTUUsIEFTTl9USU1FVElDS1MsIFJPTkxZLCB2YXJfc3lzdGVtLCAxLCB7M319LAotICAgIHtTWVNDT05UQUNULCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9zeXN0ZW0sIDEsIHs0fX0sCi0gICAge1NZU1RFTU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3N5c3RlbSwgMSwgezV9fSwKLSAgICB7U1lTTE9DQVRJT04sIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3N5c3RlbSwgMSwgezZ9fSwKLSAgICB7U1lTU0VSVklDRVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3N5c3RlbSwgMSwgezd9fSwKLSAgICB7U1lTT1JMQVNUQ0hBTkdFLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX3N5c3RlbSwgMSwgezh9fQotfTsKLS8qCi0gKiBEZWZpbmUgdGhlIE9JRCBwb2ludGVyIHRvIHRoZSB0b3Agb2YgdGhlIG1pYiB0cmVlIHRoYXQgd2UncmUKLSAqIHJlZ2lzdGVyaW5nIHVuZGVybmVhdGggCi0gKi8KLW9pZCAgICAgICAgICAgICBzeXN0ZW1fdmFyaWFibGVzX29pZFtdID0geyBTTk1QX09JRF9NSUIyLCAxIH07CiBvaWQgICAgICAgICAgICAgc3lzdGVtX21vZHVsZV9vaWRbXSA9IHsgU05NUF9PSURfU05NUE1PRFVMRVMsIDEgfTsKLWludCAgICAgICAgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW4gPQotICAgIHNpemVvZihzeXN0ZW1fbW9kdWxlX29pZCkgLyBzaXplb2Yob2lkKTsKK2ludCAgICAgICAgICAgICBzeXN0ZW1fbW9kdWxlX29pZF9sZW4gPSBPSURfTEVOR1RIKHN5c3RlbV9tb2R1bGVfb2lkKTsKIGludCAgICAgICAgICAgICBzeXN0ZW1fbW9kdWxlX2NvdW50ID0gMDsKIAogc3RhdGljIGludApAQCAtMzM2LDYgKzIxMywzMCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitoYW5kbGVfc3lzU2VydmljZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvLAorICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyNpZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUICYmICFzeXNTZXJ2aWNlc0NvbmZpZ2VkKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyNlbmRpZgorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitzdGF0aWMgaW50CitoYW5kbGVfc3lzVXBUaW1lKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX1RJTUVUSUNLUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9hZ2VudF91cHRpbWUoKSk7CisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9CisKIHZvaWQKIGluaXRfc3lzdGVtX21pYih2b2lkKQogewpAQCAtMzk5LDMwICszMDAsOTkgQEAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogSEFWRV9HRVRIT1NUTkFNRSAqLwogCiAjaWYgKGRlZmluZWQgKFdJTjMyKSAmJiBkZWZpbmVkIChIQVZFX1dJTjMyX1BMQVRGT1JNX1NESykpIHx8IGRlZmluZWQgKG1pbmd3MzIpCi0gIHsKLSAgICBIS0VZIGhLZXk7Ci0gICAgLyogRGVmYXVsdCBzeXNDb250YWN0IGlzIHRoZSByZWdpc3RlcmVkIHdpbmRvd3MgdXNlciAqLwotICAgIGlmIChSZWdPcGVuS2V5RXgoSEtFWV9MT0NBTF9NQUNISU5FLCAiU09GVFdBUkVcXE1pY3Jvc29mdFxcV2luZG93cyBOVFxcQ3VycmVudFZlcnNpb24iLCAwLCBLRVlfUVVFUllfVkFMVUUsICZoS2V5KSA9PSBFUlJPUl9TVUNDRVNTKSB7Ci0gICAgICAgY2hhciByZWdpc3RlcmVkT3duZXJbMjU2XSA9ICIiOwotICAgICAgIERXT1JEIHJlZ2lzdGVyZWRPd25lclN6ID0gMjU2OwotICAgICAgIGlmIChSZWdRdWVyeVZhbHVlRXgoaEtleSwgIlJlZ2lzdGVyZWRPd25lciIsIE5VTEwsIE5VTEwsIChMUEJZVEUpcmVnaXN0ZXJlZE93bmVyLCAmcmVnaXN0ZXJlZE93bmVyU3opID09IEVSUk9SX1NVQ0NFU1MpIHsKLSAgICAgICAgICBzdHJjcHkoc3lzQ29udGFjdCwgcmVnaXN0ZXJlZE93bmVyKTsKLSAgICAgICB9Ci0gICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgeworICAgICAgSEtFWSBoS2V5OworICAgICAgLyogRGVmYXVsdCBzeXNDb250YWN0IGlzIHRoZSByZWdpc3RlcmVkIHdpbmRvd3MgdXNlciAqLworICAgICAgaWYgKFJlZ09wZW5LZXlFeChIS0VZX0xPQ0FMX01BQ0hJTkUsCisgICAgICAgICAgICAgICAgICAgICAgICJTT0ZUV0FSRVxcTWljcm9zb2Z0XFxXaW5kb3dzIE5UXFxDdXJyZW50VmVyc2lvbiIsIDAsCisgICAgICAgICAgICAgICAgICAgICAgIEtFWV9RVUVSWV9WQUxVRSwgJmhLZXkpID09IEVSUk9SX1NVQ0NFU1MpIHsKKyAgICAgICAgICBjaGFyIHJlZ2lzdGVyZWRPd25lclsyNTZdID0gIiI7CisgICAgICAgICAgRFdPUkQgcmVnaXN0ZXJlZE93bmVyU3ogPSAyNTY7CisgICAgICAgICAgaWYgKFJlZ1F1ZXJ5VmFsdWVFeChoS2V5LCAiUmVnaXN0ZXJlZE93bmVyIiwgTlVMTCwgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpcmVnaXN0ZXJlZE93bmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlZ2lzdGVyZWRPd25lclN6KSA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgIHN0cmNweShzeXNDb250YWN0LCByZWdpc3RlcmVkT3duZXIpOworICAgICAgICAgIH0KKyAgICAgICAgICBSZWdDbG9zZUtleShoS2V5KTsKKyAgICAgIH0KICAgICB9Ci0gIH0KICNlbmRpZgogCiAgICAgLyogZGVmYXVsdCBzeXNPYmplY3RJRCAqLwogICAgIG1lbWNweShzeXNPYmplY3RJRCwgdmVyc2lvbl9zeXNvaWQsIHZlcnNpb25fc3lzb2lkX2xlbiAqIHNpemVvZihvaWQpKTsKLSAgICBzeXNPYmplY3RJRExlbmd0aCA9IHZlcnNpb25fc3lzb2lkX2xlbjsKKyAgICBzeXNPYmplY3RJREJ5dGVMZW5ndGggPSB2ZXJzaW9uX3N5c29pZF9sZW4gKiBzaXplb2Yob2lkKTsKIAotICAgIC8qCi0gICAgICogcmVnaXN0ZXIgb3Vyc2VsdmVzIHdpdGggdGhlIGFnZW50IHRvIGhhbmRsZSBvdXIgbWliIHRyZWUgCi0gICAgICovCi0gICAgUkVHSVNURVJfTUlCKCJtaWJJSS9zeXN0ZW0iLCBzeXN0ZW1fdmFyaWFibGVzLCB2YXJpYWJsZTEsCi0gICAgICAgICAgICAgICAgIHN5c3RlbV92YXJpYWJsZXNfb2lkKTsKLQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c0Rlc2NyX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCAxIH07CisgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNEZXNjcl93aW5mbzsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNEZXNjciIsIE5VTEwsIHN5c0Rlc2NyX29pZCwgT0lEX0xFTkdUSChzeXNEZXNjcl9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oJnN5c0Rlc2NyX3dpbmZvLCB2ZXJzaW9uX2Rlc2NyLCAwLAorCQkJCSAgICAgIEFTTl9PQ1RFVF9TVFIsIFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyAgICB9CisgICAgeworICAgICAgICBjb25zdCBvaWQgc3lzT2JqZWN0SURfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDIgfTsKKyAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c09iamVjdElEX3dpbmZvOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c09iamVjdElEIiwgTlVMTCwKKyAgICAgICAgICAgICAgICBzeXNPYmplY3RJRF9vaWQsIE9JRF9MRU5HVEgoc3lzT2JqZWN0SURfb2lkKSwKKyAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNigKKwkJJnN5c09iamVjdElEX3dpbmZvLCBzeXNPYmplY3RJRCwgMCwgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX0lTX1BUUiwKKyAgICAgICAgICAgICAgICBNQVhfT0lEX0xFTiwgJnN5c09iamVjdElEQnl0ZUxlbmd0aCkpOworICAgIH0KKyAgICB7CisgICAgICAgIGNvbnN0IG9pZCBzeXNVcFRpbWVfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDMgfTsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzVXBUaW1lIiwgaGFuZGxlX3N5c1VwVGltZSwKKyAgICAgICAgICAgICAgICBzeXNVcFRpbWVfb2lkLCBPSURfTEVOR1RIKHN5c1VwVGltZV9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c0NvbnRhY3Rfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDQgfTsKKyAgICAgICAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvIHN5c0NvbnRhY3Rfd2luZm87CisgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfd2F0Y2hlZF9zY2FsYXIoCisgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV91cGRhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICAgIm1pYklJL3N5c0NvbnRhY3QiLCBzeXNDb250YWN0X29pZCwgT0lEX0xFTkdUSChzeXNDb250YWN0X29pZCksCisgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFLCAmc3lzQ29udGFjdFNldCksCisgICAgICAgICAgICBuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKAorCQkmc3lzQ29udGFjdF93aW5mbywgc3lzQ29udGFjdCwgU1lTX1NUUklOR19MRU4gLSAxLAorCQlBU05fT0NURVRfU1RSLCBXQVRDSEVSX01BWF9TSVpFIHwgV0FUQ0hFUl9TSVpFX1NUUkxFTikpOworICAgIH0KKyAgICB7CisgICAgICAgIGNvbnN0IG9pZCBzeXNOYW1lX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA1IH07CisgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNOYW1lX3dpbmZvOworICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKAorICAgICAgICAgICAgbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAgICJtaWJJSS9zeXNOYW1lIiwgc3lzTmFtZV9vaWQsIE9JRF9MRU5HVEgoc3lzTmFtZV9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnN5c05hbWVTZXQpLAorICAgICAgICAgICAgbmV0c25tcF9pbml0X3dhdGNoZXJfaW5mbygKKyAgICAgICAgICAgICAgICAmc3lzTmFtZV93aW5mbywgc3lzTmFtZSwgU1lTX1NUUklOR19MRU4gLSAxLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgIFdBVENIRVJfTUFYX1NJWkUgfCBXQVRDSEVSX1NJWkVfU1RSTEVOKSk7CisgICAgfQorICAgIHsKKyAgICAgICAgY29uc3Qgb2lkIHN5c0xvY2F0aW9uX29pZFtdID0geyAxLCAzLCA2LCAxLCAyLCAxLCAxLCA2IH07CisgICAgICAgIHN0YXRpYyBuZXRzbm1wX3dhdGNoZXJfaW5mbyBzeXNMb2NhdGlvbl93aW5mbzsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhcigKKyAgICAgICAgICAgIG5ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICAgICAibWliSUkvc3lzTG9jYXRpb24iLCBzeXNMb2NhdGlvbl9vaWQsCisgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzeXNMb2NhdGlvbl9vaWQpLAorICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSwgJnN5c0xvY2F0aW9uU2V0KSwKKyAgICAgICAgICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oCisJCSZzeXNMb2NhdGlvbl93aW5mbywgc3lzTG9jYXRpb24sIFNZU19TVFJJTkdfTEVOIC0gMSwKKwkJQVNOX09DVEVUX1NUUiwgV0FUQ0hFUl9NQVhfU0laRSB8IFdBVENIRVJfU0laRV9TVFJMRU4pKTsKKyAgICB9CisgICAgeworICAgICAgICBjb25zdCBvaWQgc3lzU2VydmljZXNfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDIsIDEsIDEsIDcgfTsKKyAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X3NjYWxhcigKKyAgICAgICAgICAgICJtaWJJSS9zeXNTZXJ2aWNlcyIsIHN5c1NlcnZpY2VzX29pZCwgT0lEX0xFTkdUSChzeXNTZXJ2aWNlc19vaWQpLAorICAgICAgICAgICAgJnN5c1NlcnZpY2VzLCBoYW5kbGVfc3lzU2VydmljZXMpOworICAgIH0KICAgICBpZiAoKytzeXN0ZW1fbW9kdWxlX2NvdW50ID09IDMpCiAgICAgICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHN5c3RlbV9tb2R1bGVfb2lkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIE1JQiBtb2R1bGUgZm9yIFNOTVB2MiBlbnRpdGllcyIpOwpAQCAtNDU2LDE4NyArNDI2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT0lEIik7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksIFNOTVBfQ0FMTEJBQ0tfU1RPUkVfREFUQSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zdG9yZSwgTlVMTCk7Ci0KIH0KIAotCi0gICAgICAgIC8qKioqKioqKioqKioqKioqKioqKioKLQkgKgotCSAqICBTeXN0ZW0gc3BlY2lmaWMgaW1wbGVtZW50YXRpb24gZnVuY3Rpb25zCi0JICoKLQkgKioqKioqKioqKioqKioqKioqKioqLwotCi0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLWV4dGVybiBzdHJ1Y3QgdGltZXZhbCBzeXNPUl9sYXN0Y2hhbmdlOwotI2VuZGlmCi0KLXVfY2hhciAgICAgICAgICoKLXZhcl9zeXN0ZW0oc3RydWN0IHZhcmlhYmxlICp2cCwKLSAgICAgICAgICAgb2lkICogbmFtZSwKLSAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKLXsKLSAgICBzdGF0aWMgdV9sb25nICAgdWxyZXQ7Ci0KLSAgICBpZiAoaGVhZGVyX2dlbmVyaWModnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCkgPT0KLSAgICAgICAgTUFUQ0hfRkFJTEVEKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBWRVJTSU9OX0RFU0NSOgotICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbih2ZXJzaW9uX2Rlc2NyKTsKLSAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgdmVyc2lvbl9kZXNjcjsKLSAgICBjYXNlIFZFUlNJT05JRDoKLSAgICAgICAgKnZhcl9sZW4gPSBzeXNPYmplY3RJRExlbmd0aCAqIHNpemVvZihzeXNPYmplY3RJRFswXSk7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopc3lzT2JqZWN0SUQ7Ci0gICAgY2FzZSBVUFRJTUU6Ci0gICAgICAgIHVscmV0ID0gbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lKCk7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAmIHVscmV0KTsKLSAgICBjYXNlIFNZU0NPTlRBQ1Q6Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN5c0NvbnRhY3QpOwotICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVTeXN0ZW07Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopIHN5c0NvbnRhY3Q7Ci0gICAgY2FzZSBTWVNURU1OQU1FOgotICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzeXNOYW1lKTsKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlU3lzdGVtOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzeXNOYW1lOwotICAgIGNhc2UgU1lTTE9DQVRJT046Ci0gICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN5c0xvY2F0aW9uKTsKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IHdyaXRlU3lzdGVtOwotICAgICAgICByZXR1cm4gKHVfY2hhciAqKSBzeXNMb2NhdGlvbjsKLSAgICBjYXNlIFNZU1NFUlZJQ0VTOgotI2lmIE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTCi0gICAgICAgIGlmICghc3lzU2VydmljZXNDb25maWdlZCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotI2VuZGlmCi0gICAgICAgIGxvbmdfcmV0dXJuID0gc3lzU2VydmljZXM7Ci0gICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXR1cm47Ci0KLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotICAgIGNhc2UgU1lTT1JMQVNUQ0hBTkdFOgotICAgICAgICB1bHJldCA9IG5ldHNubXBfdGltZXZhbF91cHRpbWUoJnN5c09SX2xhc3RjaGFuZ2UpOwotICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgJiB1bHJldCk7Ci0jZW5kaWYKLQotICAgIGRlZmF1bHQ6Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZCIsICJ1bmtub3duIHN1Yi1pZCAlZCBpbiB2YXJfc3lzdGVtXG4iLAotICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLQotCi1pbnQKLXdyaXRlU3lzdGVtKGludCBhY3Rpb24sCi0gICAgICAgICAgICB1X2NoYXIgKiB2YXJfdmFsLAotICAgICAgICAgICAgdV9jaGFyIHZhcl92YWxfdHlwZSwKLSAgICAgICAgICAgIHNpemVfdCB2YXJfdmFsX2xlbiwKLSAgICAgICAgICAgIHVfY2hhciAqIHN0YXRQLCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW4pCi17Ci0gICAgdV9jaGFyICAgICAgICAgKmNwOwotICAgIGNoYXIgICAgICAgICAgICpidWYgPSBOVUxMLCAqb2xkYnVmID0gTlVMTDsKLSAgICBpbnQgICAgICAgICAgICAgY291bnQsICpzZXR2YXIgPSBOVUxMOwotCi0gICAgc3dpdGNoICgoY2hhcikgbmFtZVs3XSkgewotICAgIGNhc2UgVkVSU0lPTl9ERVNDUjoKLSAgICBjYXNlIFZFUlNJT05JRDoKLSAgICBjYXNlIFVQVElNRToKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkF0dGVtcHQgdG8gd3JpdGUgdG8gUi9PIE9JRFxuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICBjYXNlIFNZU0NPTlRBQ1Q6Ci0gICAgICAgIGJ1ZiA9IHN5c0NvbnRhY3Q7Ci0gICAgICAgIG9sZGJ1ZiA9IG9sZHN5c0NvbnRhY3Q7Ci0gICAgICAgIHNldHZhciA9ICZzeXNDb250YWN0U2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNZU1RFTU5BTUU6Ci0gICAgICAgIGJ1ZiA9IHN5c05hbWU7Ci0gICAgICAgIG9sZGJ1ZiA9IG9sZHN5c05hbWU7Ci0gICAgICAgIHNldHZhciA9ICZzeXNOYW1lU2V0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNZU0xPQ0FUSU9OOgotICAgICAgICBidWYgPSBzeXNMb2NhdGlvbjsKLSAgICAgICAgb2xkYnVmID0gb2xkc3lzTG9jYXRpb247Ci0gICAgICAgIHNldHZhciA9ICZzeXNMb2NhdGlvblNldDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTWVNTRVJWSUNFUzoKLSAgICBjYXNlIFNZU09STEFTVENIQU5HRToKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkF0dGVtcHQgdG8gd3JpdGUgdG8gUi9PIE9JRFxuIik7Ci0gICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKLSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOyAvKiA/Pz8gKi8KLSAgICB9Ci0KLSAgICBzd2l0Y2ggKGFjdGlvbikgewotICAgIGNhc2UgUkVTRVJWRTE6ICAgICAgICAgICAgIC8qIENoZWNrIHZhbHVlcyBmb3IgYWNjZXB0YWJpbGl0eSAqLwotICAgICAgICBpZiAodmFyX3ZhbF90eXBlICE9IEFTTl9PQ1RFVF9TVFIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJub3Qgc3RyaW5nXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHZhcl92YWxfbGVuID4gc2l6ZW9mKHN5c0xvY2F0aW9uKSAtIDEpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJiYWQgbGVuZ3RoXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKLSAgICAgICAgfQotCi0gICAgICAgIGZvciAoY3AgPSB2YXJfdmFsLCBjb3VudCA9IDA7IGNvdW50IDwgKGludCkgdmFyX3ZhbF9sZW47Ci0gICAgICAgICAgICAgY291bnQrKywgY3ArKykgewotICAgICAgICAgICAgaWYgKCFpc3ByaW50KCpjcCkpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm90IHByaW50ICV4XG4iLCAqY3ApOwotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChzZXR2YXIgIT0gTlVMTCAmJiAqc2V0dmFyIDwgMCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoZSBvYmplY3QgaXMgc2V0IGluIGEgcmVhZC1vbmx5IGNvbmZpZ3VyYXRpb24gZmlsZS4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFJFU0VSVkUyOiAgICAgICAgICAgICAvKiBBbGxvY2F0ZSBtZW1vcnkgYW5kIHNpbWlsYXIgcmVzb3VyY2VzICovCi0KLSAgICAgICAgLyoKLSAgICAgICAgICogVXNpbmcgc3RhdGljIHN0cmluZ3MsIHNvIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZSAKLSAgICAgICAgICovCi0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBBQ1RJT046ICAgICAgICAgICAgICAgLyogUGVyZm9ybSB0aGUgU0VUIGFjdGlvbiAoaWYgcmV2ZXJzaWJsZSkgKi8KLQotICAgICAgICAvKgotICAgICAgICAgKiBTYXZlIHRoZSBvbGQgdmFsdWUsIGluIGNhc2Ugb2YgVU5ETyAKLSAgICAgICAgICovCi0gICAgICAgIHN0cmNweShvbGRidWYsIGJ1Zik7Ci0gICAgICAgIG1lbWNweShidWYsIHZhcl92YWwsIHZhcl92YWxfbGVuKTsKLSAgICAgICAgYnVmW3Zhcl92YWxfbGVuXSA9IDA7Ci0gICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBVTkRPOiAgICAgICAgICAgICAgICAgLyogUmV2ZXJzZSB0aGUgU0VUIGFjdGlvbiBhbmQgZnJlZSByZXNvdXJjZXMgKi8KLQotICAgICAgICBzdHJjcHkoYnVmLCBvbGRidWYpOwotICAgICAgICBvbGRidWZbMF0gPSAwOwotICAgICAgICBicmVhazsKLQotICAgIGNhc2UgQ09NTUlUOgotICAgICAgICBpZiAoc2V0dmFyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICpzZXR2YXIgPSAxOwotICAgICAgICB9Ci0gICAgICAgIHNubXBfc2F2ZV9wZXJzaXN0ZW50KG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpKTsKLSAgICAgICAgKHZvaWQpIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19MSUJSQVJZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsIE5VTEwpOwotICAgICAgICBzbm1wX2NsZWFuX3BlcnNpc3RlbnQobmV0c25tcF9kc19nZXRfc3RyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKSk7Ci0KLSAgICBjYXNlIEZSRUU6ICAgICAgICAgICAgICAgICAvKiBGcmVlIGFueSByZXNvdXJjZXMgYWxsb2NhdGVkICovCi0KLSAgICAgICAgLyoKLSAgICAgICAgICogTm8gcmVzb3VyY2VzIGhhdmUgYmVlbiBhbGxvY2F0ZWQsIGJ1dCAiZW1wdHkiIHRoZSAnb2xkYnVmJyAKLSAgICAgICAgICovCi0gICAgICAgIG9sZGJ1ZlswXSA9IDA7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIG9mIHdyaXRlU3lzdGVtICovCi0KICAgICAgICAgLyoqKioqKioqKioqKioqKioqKioqKgogCSAqCiAJICogIEludGVybmFsIGltcGxlbWVudGF0aW9uIGZ1bmN0aW9ucyAtIE5vbmUKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3N5c3RlbV9taWIuaAppbmRleCBlYzMzMTJkLi5kZDE2ZjA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS9zeXN0ZW1fbWliLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvc3lzdGVtX21pYi5oCkBAIC0xLDMxICsxLDE2IEBACi0vKgotICogIFN5c3RlbSBNSUIgZ3JvdXAgaW50ZXJmYWNlIC0gc3lzdGVtLmgKLSAqCi0gKi8KICNpZm5kZWYgX01JQkdST1VQX1NZU1RFTV9NSUJfSAogI2RlZmluZSBfTUlCR1JPVVBfU1lTVEVNX01JQl9ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCiAKLSAgICAgZXh0ZXJuIGNoYXIgICAgIHZlcnNpb25fZGVzY3JbXTsKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MgbWliSUkvdXBkYXRlcykKIAotICAgICB2b2lkICAgICAgICAgICAgaW5pdF9zeXN0ZW1fbWliKHZvaWQpOwotICAgICBleHRlcm4gRmluZFZhck1ldGhvZCB2YXJfc3lzdGVtOwordm9pZCBpbml0X3N5c3RlbV9taWIodm9pZCk7CiAKLS8qCi0gKiBjb25maWcgZmlsZSBwYXJzaW5nIHJvdXRpbmVzIAotICovCi0gICAgIHZvaWQgICAgICAgICAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2xvYyhjb25zdCBjaGFyICosIGNoYXIgKik7Ci0gICAgIHZvaWQgICAgICAgICAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c2Nvbihjb25zdCBjaGFyICosIGNoYXIgKik7Ci0gICAgIHZvaWQgICAgICAgICAgICBzeXN0ZW1fcGFyc2VfY29uZmlnX3N5c25hbWUoY29uc3QgY2hhciAqLCBjaGFyICopOwotCi0jZGVmaW5lCVZFUlNJT05fREVTQ1IJCTEKLSNkZWZpbmUJVkVSU0lPTklECQkyCi0jZGVmaW5lCVVQVElNRQkJCTMKLSNkZWZpbmUgU1lTQ09OVEFDVAkJNAotI2RlZmluZSBTWVNURU1OQU1FCQk1Ci0jZGVmaW5lIFNZU0xPQ0FUSU9OCQk2Ci0jZGVmaW5lIFNZU1NFUlZJQ0VTCQk3Ci0jZGVmaW5lIFNZU09STEFTVENIQU5HRQkJOAorI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfU1lTVEVNX01JQl9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3AuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCmluZGV4IGJjMmUyZDAuLmQ5NWNiOTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5jCkBAIC00OSwxMSArNDksMTEgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgiCiAjaW5jbHVkZSAidGNwLmgiCiAjaW5jbHVkZSAidGNwVGFibGUuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKICNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQJNQpAQCAtMzg5LDcgKzM4OSw3IEBACiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVENQSU5FUlJTOgogICAgICAgICByZXRfdmFsdWUgPSB0Y3BzdGF0LnRjcHNfcmN2YmFkc3VtICsgdGNwc3RhdC50Y3BzX3JjdmJhZG9mZgotI2lmZGVmIFNUUlVDVF9UQ1BTVEFUX0hBU19UQ1BTX1JDVk1FTURST1AKKyNpZmRlZiBIQVZFX1NUUlVDVF9UQ1BTVEFUX1RDUFNfUkNWTUVNRFJPUAogICAgICAgICAgICAgKyB0Y3BzdGF0LnRjcHNfcmN2bWVtZHJvcAogI2VuZGlmCiAgICAgICAgICAgICArIHRjcHN0YXQudGNwc19yY3ZzaG9ydDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3RjcC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgKaW5kZXggOTI2ZGY0OS4uMDQ5ZGRkMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwLmgKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIF9NSUJHUk9VUF9UQ1BfSAogCiAKLWNvbmZpZ19yZXF1aXJlKG1pYklJL3RjcFRhYmxlIHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZShtaWJJSS90Y3BUYWJsZSkKIAogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwgICAgICAgIGtlcm5lbF9zdW5vczUpCiBjb25maWdfYXJjaF9yZXF1aXJlKGxpbnV4LCAgICAgbWliSUkva2VybmVsX2xpbnV4KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMKaW5kZXggMmIxYzJjNi4uOTM2OGM4OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5jCkBAIC0yOSw2ICsyOSwxMSBAQAogI2lmIEhBVkVfTkVUSU5FVF9UQ1BfVkFSX0gKICNpbmNsdWRlIDxuZXRpbmV0L3RjcF92YXIuaD4KICNlbmRpZgorI2lmIEhBVkVfTkVUTElOS19ORVRMSU5LX0gKKyNpbmNsdWRlIDxuZXRsaW5rL25ldGxpbmsuaD4KKyNpbmNsdWRlIDxuZXRsaW5rL21zZy5oPgorI2luY2x1ZGUgPGxpbnV4L2luZXRfZGlhZy5oPgorI2VuZGlmCiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CkBAIC0zNiw3ICs0MSw2IEBACiAKICNpbmNsdWRlICJ0Y3AuaCIKICNpbmNsdWRlICJ0Y3BUYWJsZS5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmZGVmIGhwdXgxMQogI2RlZmluZQlUQ1BUQUJMRV9FTlRSWV9UWVBFCW1pYl90Y3BDb25uRW50IApAQCAtMTI5LDExICsxMzMsMTEgQEAKICNkZWZpbmUgVENQX1BPUlRfVE9fSE9TVF9PUkRFUih4KSBudG9ocyh4KQogI2VuZGlmCiAKLW9pZCAgICAgICAgICAgICB0Y3BUYWJsZV9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNiwgMTMgfTsKLQogdm9pZAogaW5pdF90Y3BUYWJsZSh2b2lkKQogeworICAgIGNvbnN0IG9pZCB0Y3BUYWJsZV9vaWRbXSA9IHsgU05NUF9PSURfTUlCMiwgNiwgMTMgfTsKKwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICAgICAgICAgICAqaWluZm87CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbzsKQEAgLTQwNCw3ICs0MDgsNyBAQAogICAgICAqIFhYWCAtIEhvdyBjYW4gd2UgdGVsbCBpZiB0aGUgY2FjaGUgaXMgdmFsaWQ/CiAgICAgICogICAgICAgTm8gYWNjZXNzIHRvICdyZXFpbmZvJwogICAgICAqLwotICAgIGlmICh0Y3BfaGVhZCA9PSAwKQorICAgIGlmICh0Y3BfaGVhZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qCkBAIC01NDcsNiArNTUxLDExOCBAQAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBocHV4MTEgKi8KIAogI2lmZGVmIGxpbnV4CisKKy8qICBzZWUgPG5ldGluZXQvdGNwLmg+ICovCisjZGVmaW5lIFRDUF9BTEwgKCgxIDw8IChUQ1BfQ0xPU0lORyArIDEpKSAtIDEpCisKK2NvbnN0IHN0YXRpYyBpbnQgbGludXhfc3RhdGVzWzEyXSA9IHsgMSwgNSwgMywgNCwgNiwgNywgMTEsIDEsIDgsIDksIDIsIDEwIH07CisKKyNpZiBIQVZFX05FVExJTktfTkVUTElOS19ICitzdGF0aWMgaW50Cit0Y3BUYWJsZV9sb2FkX25ldGxpbmsodm9pZCkKK3sKKwkvKiAgVE9ETzogcGVyaGFwcyB1c2UgcGVybWFuZW50IG5sIGhhbmRsZT8gKi8KKwlzdHJ1Y3QgbmxfaGFuZGxlICpubCA9IG5sX2hhbmRsZV9hbGxvYygpOworCXN0cnVjdCBpbmV0X2RpYWdfcmVxIHJlcSA9IHsKKwkJLmlkaWFnX2ZhbWlseSA9IEFGX0lORVQsCisJCS5pZGlhZ19zdGF0ZXMgPSBUQ1BfQUxMLAorCX07CisKKwlzdHJ1Y3QgbmxfbXNnICpubTsKKworCXN0cnVjdCBzb2NrYWRkcl9ubCBwZWVyOworCXVuc2lnbmVkIGNoYXIgKmJ1ZiA9IE5VTEw7CisJaW50IHJ1bm5pbmcgPSAxLCBsZW47CisKKwlpZiAobmwgPT0gTlVMTCkgeworCQlERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAiRmFpbGVkIHRvIGFsbG9jYXRlIG5ldGxpbmsgaGFuZGxlXG4iKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJzbm1wZDogRmFpbGVkIHRvIGFsbG9jYXRlIG5ldGxpbmsgaGFuZGxlXG4iKTsKKwkJcmV0dXJuIC0xOworCX0KKworCWlmIChubF9jb25uZWN0KG5sLCBORVRMSU5LX0lORVRfRElBRykgPCAwKSB7CisJCURFQlVHTVNHVEwoKCJtaWJJSS90Y3BUYWJsZSIsICJGYWlsZWQgdG8gY29ubmVjdCB0byBuZXRsaW5rOiAlc1xuIiwgbmxfZ2V0ZXJyb3IoKSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAic25tcGQ6IENvdWxkbid0IGNvbm5lY3QgdG8gbmV0bGluazogJXNcbiIsIG5sX2dldGVycm9yKCkpOworCQlubF9oYW5kbGVfZGVzdHJveShubCk7CisJCXJldHVybiAtMTsKKwl9CisKKwlubSA9IG5sbXNnX2FsbG9jX3NpbXBsZShUQ1BESUFHX0dFVFNPQ0ssIE5MTV9GX1JPT1R8TkxNX0ZfTUFUQ0h8TkxNX0ZfUkVRVUVTVCk7CisJbmxtc2dfYXBwZW5kKG5tLCAmcmVxLCBzaXplb2Yoc3RydWN0IGluZXRfZGlhZ19yZXEpLCAwKTsKKworCWlmIChubF9zZW5kX2F1dG9fY29tcGxldGUobmwsIG5tKSA8IDApIHsKKwkJREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIm5sX3NlbmRfYXV0b2NvbXBsZXRlKCk6ICVzXG4iLCBubF9nZXRlcnJvcigpKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJzbm1wZDogbmxfc2VuZF9hdXRvY29tcGxldGUoKTogJXNcbiIsIG5sX2dldGVycm9yKCkpOworCQlubF9oYW5kbGVfZGVzdHJveShubCk7CisJCXJldHVybiAtMTsKKwl9CisJbmxtc2dfZnJlZShubSk7CisKKwl3aGlsZSAocnVubmluZykgeworCQlzdHJ1Y3Qgbmxtc2doZHIgKmg7CisJCWlmICgobGVuID0gbmxfcmVjdihubCwgJnBlZXIsICZidWYsIE5VTEwpKSA8PSAwKSB7CisJCQlERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAibmxfcmVjdigpOiAlc1xuIiwgbmxfZ2V0ZXJyb3IoKSkpOworCQkJc25tcF9sb2coTE9HX0VSUiwgInNubXBkOiBubF9yZWN2KCk6ICVzXG4iLCBubF9nZXRlcnJvcigpKTsKKwkJCW5sX2hhbmRsZV9kZXN0cm95KG5sKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCisJCWggPSAoc3RydWN0IG5sbXNnaGRyKilidWY7CisKKwkJd2hpbGUgKG5sbXNnX29rKGgsIGxlbikpIHsKKwkJCXN0cnVjdCBpbmV0X2RpYWdfbXNnICpyID0gbmxtc2dfZGF0YShoKTsKKwkJCXN0cnVjdCBpbnBjYiAgICBwY2IsICpubmV3OworCisJCQlpZiAoaC0+bmxtc2dfdHlwZSA9PSBOTE1TR19ET05FKSB7CisJCQkJcnVubmluZyA9IDA7CisJCQkJYnJlYWs7CisJCQl9CisKKwkJCXIgPSBubG1zZ19kYXRhKGgpOworCisJCQlpZiAoci0+aWRpYWdfZmFtaWx5ICE9IEFGX0lORVQpIHsKKwkJCQloID0gbmxtc2dfbmV4dChoLCAmbGVuKTsKKwkJCQljb250aW51ZTsKKwkJCX0KKworCQkJbWVtY3B5KCZwY2IuaW5wX2xhZGRyLnNfYWRkciwgci0+aWQuaWRpYWdfc3JjLCByLT5pZGlhZ19mYW1pbHkgPT0gQUZfSU5FVCA/IDQgOiA2KTsKKwkJCW1lbWNweSgmcGNiLmlucF9mYWRkci5zX2FkZHIsIHItPmlkLmlkaWFnX2RzdCwgci0+aWRpYWdfZmFtaWx5ID09IEFGX0lORVQgPyA0IDogNik7CisKKwkJCXBjYi5pbnBfbHBvcnQgPSByLT5pZC5pZGlhZ19zcG9ydDsKKwkJCXBjYi5pbnBfZnBvcnQgPSByLT5pZC5pZGlhZ19kcG9ydDsKKworCQkJcGNiLmlucF9zdGF0ZSA9IChyLT5pZGlhZ19zdGF0ZSAmIDB4ZikgPCAxMiA/IGxpbnV4X3N0YXRlc1tyLT5pZGlhZ19zdGF0ZSAmIDB4Zl0gOiAyOworCQkJaWYgKHBjYi5pbnBfc3RhdGUgPT0gNSAvKiBlc3RhYmxpc2hlZCAqLyB8fAorCQkJCXBjYi5pbnBfc3RhdGUgPT0gOCAvKiAgY2xvc2VXYWl0ICAqLyApCisJCQkJdGNwX2VzdGFiKys7CisJCQlwY2IudWlkID0gci0+aWRpYWdfdWlkOworCisJCQlubmV3ID0gU05NUF9NQUxMT0NfVFlQRURFRihzdHJ1Y3QgaW5wY2IpOworCQkJaWYgKG5uZXcgPT0gTlVMTCkgeworCQkJCXJ1bm5pbmcgPSAwOworCQkJCS8qICBYWFggcmVwb3J0IG1hbGxvYyBlcnJvciBhbmQgcmV0dXJuIC0xPyAqLworCQkJCWJyZWFrOworCQkJfQorCQkJbWVtY3B5KG5uZXcsICZwY2IsIHNpemVvZihzdHJ1Y3QgaW5wY2IpKTsKKwkJCW5uZXctPmlucF9uZXh0ID0gdGNwX2hlYWQ7CisJCQl0Y3BfaGVhZCAgICAgICA9IG5uZXc7CisKKwkJCWggPSBubG1zZ19uZXh0KGgsICZsZW4pOworCQl9CisJCWZyZWUoYnVmKTsKKwl9CisKKwlubF9oYW5kbGVfZGVzdHJveShubCk7CisKKwlpZiAodGNwX2hlYWQpIHsKKwkJREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIkxvYWRlZCBUQ1AgVGFibGUgdXNpbmcgbmV0bGlua1xuIikpOworCQlyZXR1cm4gMDsKKwl9CisJREVCVUdNU0dUTCgoIm1pYklJL3RjcFRhYmxlIiwgIkZhaWxlZCB0byBsb2FkIFRDUCBUYWJsZSAobmV0bGluaylcbiIpKTsKKwlyZXR1cm4gLTE7Cit9CisjZW5kaWYKKwogaW50CiB0Y3BUYWJsZV9sb2FkKG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICp2bWFnaWMpCiB7CkBAIC01NTUsNiArNjcxLDEyIEBACiAKICAgICB0Y3BUYWJsZV9mcmVlKGNhY2hlLCBOVUxMKTsKIAorI2lmIEhBVkVfTkVUTElOS19ORVRMSU5LX0gKKwlpZiAodGNwVGFibGVfbG9hZF9uZXRsaW5rKCkgPT0gMCkgeworCQlyZXR1cm4gMDsKKwl9CisjZW5kaWYKKwogICAgIGlmICghKGluID0gZm9wZW4oIi9wcm9jL25ldC90Y3AiLCAiciIpKSkgewogICAgICAgICBERUJVR01TR1RMKCgibWliSUkvdGNwVGFibGUiLCAiRmFpbGVkIHRvIGxvYWQgVENQIFRhYmxlIChsaW51eDEpXG4iKSk7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJzbm1wZDogY2Fubm90IG9wZW4gL3Byb2MvbmV0L3RjcCAuLi5cbiIpOwpAQCAtNTY4LDggKzY5MCw2IEBACiAgICAgICovCiAgICAgd2hpbGUgKGxpbmUgPT0gZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgc3RydWN0IGlucGNiICAgIHBjYiwgKm5uZXc7Ci0gICAgICAgIHN0YXRpYyBpbnQgICAgICBsaW51eF9zdGF0ZXNbMTJdID0KLSAgICAgICAgICAgIHsgMSwgNSwgMywgNCwgNiwgNywgMTEsIDEsIDgsIDksIDIsIDEwIH07CiAgICAgICAgIGludCAgICAgICAgICAgICBzdGF0ZSwgbHAsIGZwLCB1aWQ7CiAKICAgICAgICAgaWYgKDYgIT0gc3NjYW5mKGxpbmUsCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdGNwVGFibGUuaAppbmRleCBhNWE2Zjc2Li41NWZlOTdiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS90Y3BUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmgKQEAgLTYsNyArNiw2IEBACiAjZGVmaW5lIF9NSUJHUk9VUF9UQ1BUQUJMRV9ICiAKIGNvbmZpZ19hcmNoX3JlcXVpcmUoc29sYXJpczIsIGtlcm5lbF9zdW5vczUpCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQogI2lmICFkZWZpbmVkKE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUykKIGNvbmZpZ19yZXF1aXJlKG1pYklJL2lwKQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS91ZHAuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCmluZGV4IGUxNWEyZGUuLjgzMmQzMmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5jCkBAIC0xNiwxNSArMTYsMTUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgiCiAKICNpZmRlZiBsaW51eAogI2luY2x1ZGUgInRjcC5oIgogI2VuZGlmCiAjaW5jbHVkZSAidWRwLmgiCiAjaW5jbHVkZSAidWRwVGFibGUuaCIKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCiAKICNpZmRlZiBORVRTTk1QX0NBTl9VU0VfU1lTQ1RMCiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgpAQCAtMjM1LDcgKzIzNSw3IEBACiAjZGVmaW5lIHVkcHN0YXQgICAgICAgICAgdWRwc3RhdC51ZHBzdGF0CiAjZW5kaWYKICAgICBjYXNlIFVEUElOREFUQUdSQU1TOgotI2lmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX0lQQUNLRVRTCisjaWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0lQQUNLRVRTCiAgICAgICAgIHJldF92YWx1ZSA9IHVkcHN0YXQudWRwc19pcGFja2V0czsKICAgICAgICAgYnJlYWs7CiAjZWxzZQpAQCAtMjQ0LDcgKzI0NCw3IEBACiAjZW5kaWYKIAogICAgIGNhc2UgVURQTk9QT1JUUzoKLSNpZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19OT1BPUlQKKyNpZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfTk9QT1JUCiAgICAgICAgIHJldF92YWx1ZSA9IHVkcHN0YXQudWRwc19ub3BvcnQ7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTI1Myw3ICsyNTMsNyBAQAogI2VuZGlmCiAKICAgICBjYXNlIFVEUE9VVERBVEFHUkFNUzoKLSNpZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19PUEFDS0VUUworI2lmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19PUEFDS0VUUwogICAgICAgICByZXRfdmFsdWUgPSB1ZHBzdGF0LnVkcHNfb3BhY2tldHM7CiAgICAgICAgIGJyZWFrOwogI2Vsc2UKQEAgLTI2MywxMCArMjYzLDEwIEBACiAKICAgICBjYXNlIFVEUElORVJST1JTOgogICAgICAgICByZXRfdmFsdWUgPSB1ZHBzdGF0LnVkcHNfaGRyb3BzICsgdWRwc3RhdC51ZHBzX2JhZHN1bSArCi0jaWZkZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRElTQ0FSRAorI2lmZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19ESVNDQVJECiAgICAgICAgICAgICB1ZHBzdGF0LnVkcHNfZGlzY2FyZCArCiAjZW5kaWYKLSNpZmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19GVUxMU09DSworI2lmZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19GVUxMU09DSwogICAgICAgICAgICAgdWRwc3RhdC51ZHBzX2Z1bGxzb2NrICsKICNlbmRpZgogICAgICAgICAgICAgdWRwc3RhdC51ZHBzX2JhZGxlbjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcC5oIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmgKaW5kZXggMDgxNmYwMS4uOWQ0NjcxYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwLmgKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIF9NSUJHUk9VUF9VRFBfSAogCiAKLWNvbmZpZ19yZXF1aXJlKG1pYklJL3VkcFRhYmxlIHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZShtaWJJSS91ZHBUYWJsZSkKIAogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwgICAgICAgIGtlcm5lbF9zdW5vczUpCiBjb25maWdfYXJjaF9yZXF1aXJlKGxpbnV4LCAgICAgbWliSUkva2VybmVsX2xpbnV4KQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmMKaW5kZXggNTdlOTY3Yy4uODdkMWM1NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5jCkBAIC0zMyw3ICszMyw2IEBACiAjZW5kaWYKICNpbmNsdWRlICJ1ZHAuaCIKICNpbmNsdWRlICJ1ZHBUYWJsZS5oIgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKIAogI2lmZGVmIGhwdXgxMQogI2RlZmluZQlVRFBUQUJMRV9FTlRSWV9UWVBFCW1pYl91ZHBMc25FbnQgCkBAIC0xNTEsNiArMTUwLDcgQEAKICAgICAgKi8KICAgICBpaW5mbyAgICAgID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwogICAgIGlmICghaWluZm8pIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGlpbmZvLT5nZXRfZmlyc3RfZGF0YV9wb2ludCA9IHVkcFRhYmxlX2ZpcnN0X2VudHJ5OwpAQCAtMzQ5LDcgKzM0OSw3IEBACiAgICAgICogWFhYIC0gSG93IGNhbiB3ZSB0ZWxsIGlmIHRoZSBjYWNoZSBpcyB2YWxpZD8KICAgICAgKiAgICAgICBObyBhY2Nlc3MgdG8gJ3JlcWluZm8nCiAgICAgICovCi0gICAgaWYgKHVkcF9oZWFkID09IDApCisgICAgaWYgKHVkcF9oZWFkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmggYi9hZ2VudC9taWJncm91cC9taWJJSS91ZHBUYWJsZS5oCmluZGV4IDJjNjFjZGEuLmY5YWZkNWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3VkcFRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdWRwVGFibGUuaApAQCAtNiw3ICs2LDcgQEAKICNkZWZpbmUgX01JQkdST1VQX1VEUFRBQkxFX0gKIAogY29uZmlnX2FyY2hfcmVxdWlyZShzb2xhcmlzMiwga2VybmVsX3N1bm9zNSkKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MgbWliSUkvaXApCitjb25maWdfcmVxdWlyZShtaWJJSS9pcCkKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfdWRwVGFibGUodm9pZCk7CiBleHRlcm4gTmV0c25tcF9Ob2RlX0hhbmRsZXIgdWRwVGFibGVfaGFuZGxlcjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGQ1ODM2Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5jCkBAIC0wLDAgKzEsNDEgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKK3N0YXRpYyBpbnQKK2hhbmRsZV91cGRhdGVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICpzZXQgPSAoaW50KiloYW5kbGVyLT5teXZvaWQ7CisKKyAgICBpZiAocmVxaW5mby0+bW9kZSA9PSBNT0RFX1NFVF9SRVNFUlZFMSAmJiAqc2V0IDwgMCkKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcihyZXF1ZXN0cywgU05NUF9FUlJfTk9UV1JJVEFCTEUpOworICAgIGVsc2UgaWYgKHJlcWluZm8tPm1vZGUgPT0gTU9ERV9TRVRfQ09NTUlUKQorICAgICAgICAqc2V0ID0gMTsKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbioKK25ldHNubXBfY3JlYXRlX3VwZGF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICBjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBvaWQqIGlkLCBzaXplX3QgaWRsZW4sIGludCBtb2RlLCBpbnQqIHNldCkKK3sKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZXM7CisgICAgbmV0c25tcF9taWJfaGFuZGxlciAqaG5kOworCisgICAgaG5kID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcigidXBkYXRlIiwgaGFuZGxlX3VwZGF0ZXMpOworICAgIGlmIChobmQgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBobmQtPmZsYWdzIHw9IE1JQl9IQU5ETEVSX0FVVE9fTkVYVDsKKyAgICBobmQtPm15dm9pZCA9IHNldDsKKworICAgIHJlcyA9IG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKG5hbWUsIGhuZCwgaWQsIGlkbGVuLCBtb2RlKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKKyAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaG5kKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIHJlczsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3VwZGF0ZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDE0ZTMzCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWliSUkvdXBkYXRlcy5oCkBAIC0wLDAgKzEsMTYgQEAKKyNpZm5kZWYgVVBEQVRFU19ICisjZGVmaW5lIFVQREFURVNfSAorCisvKioKKyAqIENyZWF0ZSBhIGhhbmRsZXJfcmVnaXN0cmF0aW9uIHRoYXQgY2hlY2tzICpzZXQgdG8gZGV0ZXJtaW5lIGhvdyB0byBwcm9jZWVkZSwKKyAqIGlmICpzZXQgaXMgbGVzcyB0aGFuIDAgdGhlbiB0aGUgb2JqZWN0IGlzIG5vbndyaXRlYWJsZSwgb3RoZXJ3aXNlLCAqc2V0IGlzCisgKiBzZXQgdG8gMSBpbiB0aGUgY29tbWl0IHBoYXNlLiBBbGwgb3RoZXIgcGFyYW1ldGVycyBhcmUgYXMgaW4KKyAqIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uLgorICovCisKK2V4dGVybiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uKgorbmV0c25tcF9jcmVhdGVfdXBkYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKGNvbnN0IGNoYXIqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkKiBpZCwgc2l6ZV90IGlkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtb2RlLCBpbnQqIHNldCk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmMgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYwppbmRleCA3ZDc4YTFmLi44YjJhZTc3IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYworKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuYwpAQCAtNDksMjUgKzQ5LDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X2NhbGxiYWNrcy5oPgogI2luY2x1ZGUgInZhY21fY29uZi5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKLQotI2lmZGVmIFVTSU5HX01JQklJX1NZU09SVEFCTEVfTU9EVUxFCi0jaWYgVElNRV9XSVRIX1NZU19USU1FCi0jIGlmZGVmIFdJTjMyCi0jICBpbmNsdWRlIDxzeXMvdGltZWIuaD4KLSMgZWxzZQotIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSMgZW5kaWYKLSMgaW5jbHVkZSA8dGltZS5oPgotI2Vsc2UKLSMgaWYgSEFWRV9TWVNfVElNRV9ICi0jICBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBlbHNlCi0jICBpbmNsdWRlIDx0aW1lLmg+Ci0jIGVuZGlmCi0jZW5kaWYKLSNpbmNsdWRlICJzeXNPUlRhYmxlLmgiCi0jZW5kaWYKIAogI2luY2x1ZGUgInNubXBkLmgiCiAKQEAgLTExOSw3ICsxMDAsNyBAQAogICAgICAqIERlZmluZSBzdGFuZGFyZCB2aWV3cyAiX2FsbF8iIGFuZCAiX25vbmVfIgogICAgICAqLwogICAgIHNubXBfcmVnaXN0ZXJfY2FsbGJhY2soU05NUF9DQUxMQkFDS19MSUJSQVJZLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9DQUxMQkFDS19QT1NUX1BSRU1JQl9SRUFEX0NPTkZJRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfUFJFX1JFQURfQ09ORklHLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFjbV9zdGFuZGFyZF92aWV3cywgTlVMTCk7CiAgICAgc25tcF9yZWdpc3Rlcl9jYWxsYmFjayhTTk1QX0NBTExCQUNLX0xJQlJBUlksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1BPU1RfUkVBRF9DT05GSUcsCkBAIC0xNzQsMjQgKzE1NSwyNCBAQAogdm9pZAogdmFjbV9wYXJzZV9ncm91cChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqcGFyYW0pCiB7Ci0gICAgY2hhciAgICAgICAgICAgKmdyb3VwLCAqbW9kZWwsICpzZWN1cml0eTsKKyAgICBjaGFyICAgICAgICAgICAgZ3JvdXBbVkFDTVNUUklOR0xFTl0sIG1vZGVsW1ZBQ01TVFJJTkdMRU5dLCBzZWN1cml0eVtWQUNNU1RSSU5HTEVOXTsKICAgICBpbnQgICAgICAgICAgICAgaW1vZGVsOwogICAgIHN0cnVjdCB2YWNtX2dyb3VwRW50cnkgKmdwID0gTlVMTDsKICAgICBjaGFyICAgICAgICAgICAqc3Q7CiAKLSAgICBncm91cCA9IHN0cnRva19yKHBhcmFtLCAiIFx0XG4iLCAmc3QpOwotICAgIG1vZGVsID0gc3RydG9rX3IoTlVMTCwgIiBcdFxuIiwgJnN0KTsKLSAgICBzZWN1cml0eSA9IHN0cnRva19yKE5VTEwsICIgXHRcbiIsICZzdCk7CisgICAgc3QgPSBjb3B5X253b3JkKHBhcmFtLCBncm91cCwgc2l6ZW9mKGdyb3VwKS0xKTsKKyAgICBzdCA9IGNvcHlfbndvcmQoc3QsIG1vZGVsLCBzaXplb2YobW9kZWwpLTEpOworICAgIHN0ID0gY29weV9ud29yZChzdCwgc2VjdXJpdHksIHNpemVvZihzZWN1cml0eSktMSk7CiAKLSAgICBpZiAoZ3JvdXAgPT0gTlVMTCB8fCAqZ3JvdXAgPT0gMCkgeworICAgIGlmIChncm91cFswXSA9PSAwKSB7CiAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1pc3NpbmcgR1JPVVAgcGFyYW1ldGVyIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKG1vZGVsID09IE5VTEwgfHwgKm1vZGVsID09IDApIHsKKyAgICBpZiAobW9kZWxbMF0gPT0gMCkgewogICAgICAgICBjb25maWdfcGVycm9yKCJtaXNzaW5nIE1PREVMIHBhcmFtZXRlciIpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChzZWN1cml0eSA9PSBOVUxMIHx8ICpzZWN1cml0eSA9PSAwKSB7CisgICAgaWYgKHNlY3VyaXR5WzBdID09IDApIHsKICAgICAgICAgY29uZmlnX3BlcnJvcigibWlzc2luZyBTRUNVUklUWSBwYXJhbWV0ZXIiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTEwMTcsNyArOTk4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoIWlzYWxudW0oKnRtcCkpCiAgICAgICAgICAgICAgICAgICAgICp0bXAgPSAnXyc7CiAgICAgICAgICAgICBzbnByaW50ZihsaW5lLCBzaXplb2YobGluZSksCi0gICAgICAgICAgICAgICAgICAgICAiJXMgJXMgJXMiLCBncnBuYW1lLCBtb2RlbCwgc2VjbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAiJXMgJXMgXCIlc1wiIiwgZ3JwbmFtZSwgbW9kZWwsIHNlY25hbWUpOwogICAgICAgICAgICAgbGluZVsgc2l6ZW9mKGxpbmUpLTEgXSA9IDA7CiAgICAgICAgICAgICBERUJVR01TR1RMKCh0b2tlbiwgInBhc3Npbmc6ICVzICVzXG4iLCAiZ3JvdXAiLCBsaW5lKSk7CiAgICAgICAgICAgICB2YWNtX3BhcnNlX2dyb3VwKCJncm91cCIsIGxpbmUpOwpAQCAtMTI2Miw2ICsxMjQzLDE0IEBACiB2YWNtX2NoZWNrX3ZpZXcobmV0c25tcF9wZHUgKnBkdSwgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVsZW4sCiAgICAgICAgICAgICAgICAgaW50IGNoZWNrX3N1YnRyZWUsIGludCB2aWV3dHlwZSkKIHsKKyAgICByZXR1cm4gdmFjbV9jaGVja192aWV3X2NvbnRlbnRzKHBkdSwgbmFtZSwgbmFtZWxlbiwgY2hlY2tfc3VidHJlZSwgdmlld3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUNNX0NIRUNLX1ZJRVdfQ09OVEVOVFNfTk9fRkxBR1MpOworfQorCitpbnQKK3ZhY21fY2hlY2tfdmlld19jb250ZW50cyhuZXRzbm1wX3BkdSAqcGR1LCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZWxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hlY2tfc3VidHJlZSwgaW50IHZpZXd0eXBlLCBpbnQgZmxhZ3MpCit7CiAgICAgc3RydWN0IHZhY21fYWNjZXNzRW50cnkgKmFwOwogICAgIHN0cnVjdCB2YWNtX2dyb3VwRW50cnkgKmdwOwogICAgIHN0cnVjdCB2YWNtX3ZpZXdFbnRyeSAqdnA7CkBAIC0xNDIxLDcgKzE0MTAsOCBAQAogICAgICAgICBjb250ZXh0TmFtZUluZGV4WzBdID0gJ1wwJzsKIAogICAgIGNvbnRleHROYW1lSW5kZXhbcGR1LT5jb250ZXh0TmFtZUxlbl0gPSAnXDAnOwotICAgIGlmICghbmV0c25tcF9zdWJ0cmVlX2ZpbmRfZmlyc3QoY29udGV4dE5hbWVJbmRleCkpIHsKKyAgICBpZiAoIShmbGFncyAmIFZBQ01fQ0hFQ0tfVklFV19DT05URU5UU19ETkVfQ09OVEVYVF9PSykgJiYKKyAgICAgICAgIW5ldHNubXBfc3VidHJlZV9maW5kX2ZpcnN0KGNvbnRleHROYW1lSW5kZXgpKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIHJmYyAzNDE1IHNlY3Rpb24gMy4yLCBzdGVwIDEKICAgICAgICAgICogbm8gc3VjaCBjb250ZXh0IGhlcmU7IHJldHVybiBubyBzdWNoIGNvbnRleHQgZXJyb3IgCkBAIC0xNDQ3LDcgKzE0MzcsNyBAQAogICAgICAgICByZXR1cm4gVkFDTV9OT0FDQ0VTUzsKICAgICB9CiAKLSAgICBpZiAobmFtZSA9PSAwKSB7ICAgICAgICAgICAgLyogb25seSBjaGVjayB0aGUgc2V0dXAgb2YgdGhlIHZhY20gZm9yIHRoZSByZXF1ZXN0ICovCisgICAgaWYgKG5hbWUgPT0gTlVMTCkgeyAvKiBvbmx5IGNoZWNrIHRoZSBzZXR1cCBvZiB0aGUgdmFjbSBmb3IgdGhlIHJlcXVlc3QgKi8KICAgICAgICAgREVCVUdNU0coKCJtaWJJSS92YWNtX3ZhcnMiLCAiLCBEb25lIGNoZWNraW5nIHNldHVwXG4iKSk7CiAgICAgICAgIHJldHVybiBWQUNNX1NVQ0NFU1M7CiAgICAgfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmggYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaAppbmRleCA4ZTE1OTc4Li43ODY0Y2UxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaAorKysgYi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaApAQCAtNyw3ICs3LDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdmFjbS5oPgogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQogY29uZmlnX2JlbG9uZ3NfaW4oYWdlbnRfbW9kdWxlKQogCiAjZGVmaW5lIFZBQ01fQ1JFQVRFX1NJTVBMRV9WMyAgICAgICAxCkBAIC00Myw1ICs0MiwxMCBAQAogCiAgICAgIGludCAgICAgICAgICAgICB2YWNtX2luX3ZpZXcobmV0c25tcF9wZHUgKiwgb2lkICosIHNpemVfdCwgaW50KTsKICAgICAgaW50ICAgICAgICAgICAgIHZhY21fY2hlY2tfdmlldyhuZXRzbm1wX3BkdSAqLCBvaWQgKiwgc2l6ZV90LCBpbnQsIGludCk7CisgICAgIGludCAgICAgICAgICAgICB2YWNtX2NoZWNrX3ZpZXdfY29udGVudHMobmV0c25tcF9wZHUgKiwgb2lkICosIHNpemVfdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIGludCwgaW50KTsKKworI2RlZmluZSBWQUNNX0NIRUNLX1ZJRVdfQ09OVEVOVFNfTk9fRkxBR1MgICAgICAgIDAKKyNkZWZpbmUgVkFDTV9DSEVDS19WSUVXX0NPTlRFTlRTX0RORV9DT05URVhUX09LICAxCiAKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX01JQkdST1VQX1ZBQ01fQ09ORl9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCmluZGV4IDA5MzdmYzUuLjZiNzNhOTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5jCkBAIC00OCwxMCArNDgsMTAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogI2luY2x1ZGUgInZhY21fdmFycy5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQogI2lmIFRJTUVfV0lUSF9TWVNfVElNRQogIyBpZmRlZiBXSU4zMgogIyAgaW5jbHVkZSA8c3lzL3RpbWViLmg+CkBAIC02Niw0MSArNjYsNTIgQEAKICMgIGluY2x1ZGUgPHRpbWUuaD4KICMgZW5kaWYKICNlbmRpZgotI2luY2x1ZGUgInN5c09SVGFibGUuaCIKLSNlbmRpZgorCiBzdGF0aWMgdW5zaWduZWQgaW50IHZhY21WaWV3U3BpbkxvY2sgPSAwOwogCiB2b2lkCiBpbml0X3ZhY21fdmFycyh2b2lkKQogewogCi0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSAgICBzdGF0aWMgb2lkICAgICAgcmVnW10gPSB7IFNOTVBfT0lEX1NOTVBNT0RVTEVTLCAxNiwgMiwgMiwgMSB9OwotI2VuZGlmCisgICAgb2lkICAgICAgcmVnW10gPSB7IFNOTVBfT0lEX1NOTVBNT0RVTEVTLCAxNiwgMiwgMiwgMSB9OwogCiAjZGVmaW5lIFBSSVZSVwkoTkVUU05NUF9TTk1QVjJBTlkgfCAweDUwMDApCiAKICAgICBzdHJ1Y3QgdmFyaWFibGUxIHZhY21fc2VjMmdyb3VwW10gPSB7Ci0gICAgICAgIHtTRUNVUklUWUdST1VQLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezN9fSwKLSAgICAgICAge1NFQ1VSSVRZU1RPUkFHRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7NH19LAotICAgICAgICB7U0VDVVJJVFlTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezV9fSwKKyAgICAgICAge1NFQ1VSSVRZR1JPVVAsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezN9fSwKKyAgICAgICAge1NFQ1VSSVRZU1RPUkFHRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX3NlYzJncm91cCwgMSwgezR9fSwKKyAgICAgICAge1NFQ1VSSVRZU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fc2VjMmdyb3VwLCAxLCB7NX19LAogICAgIH07CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUxIHZhY21fYWNjZXNzW10gPSB7Ci0gICAgICAgIHtBQ0NFU1NNQVRDSCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fYWNjZXNzLCAxLCB7NH19LAotICAgICAgICB7QUNDRVNTUkVBRCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs1fX0sCi0gICAgICAgIHtBQ0NFU1NXUklURSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs2fX0sCi0gICAgICAgIHtBQ0NFU1NOT1RJRlksIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3ZhY21fYWNjZXNzLCAxLCB7N319LAotICAgICAgICB7QUNDRVNTU1RPUkFHRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3ZhY21fYWNjZXNzLCAxLCB7OH19LAotICAgICAgICB7QUNDRVNTU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs5fX0sCisgICAgICAgIHtBQ0NFU1NNQVRDSCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezR9fSwKKyAgICAgICAge0FDQ0VTU1JFQUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezV9fSwKKyAgICAgICAge0FDQ0VTU1dSSVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs2fX0sCisgICAgICAgIHtBQ0NFU1NOT1RJRlksIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX2FjY2VzcywgMSwgezd9fSwKKyAgICAgICAge0FDQ0VTU1NUT1JBR0UsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs4fX0sCisgICAgICAgIHtBQ0NFU1NTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV9hY2Nlc3MsIDEsIHs5fX0sCiAgICAgfTsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTMgdmFjbV92aWV3W10gPSB7Ci0gICAgICAgIHtWQUNNVklFV1NQSU5MT0NLLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV92aWV3LCAxLCB7MX19LAotICAgICAgICB7VklFV01BU0ssIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDN9fSwKLSAgICAgICAge1ZJRVdUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNH19LAotICAgICAgICB7VklFV1NUT1JBR0UsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl92YWNtX3ZpZXcsIDMsIHsyLCAxLCA1fX0sCi0gICAgICAgIHtWSUVXU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNn19LAorICAgICAgICB7VkFDTVZJRVdTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl92YWNtX3ZpZXcsIDEsIHsxfX0sCisgICAgICAgIHtWSUVXTUFTSywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDN9fSwKKyAgICAgICAge1ZJRVdUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDR9fSwKKyAgICAgICAge1ZJRVdTVE9SQUdFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX3ZhY21fdmlldywgMywgezIsIDEsIDV9fSwKKyAgICAgICAge1ZJRVdTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfdmFjbV92aWV3LCAzLCB7MiwgMSwgNn19LAogICAgIH07CiAKICAgICAvKgpAQCAtMTI2LDExICsxMzcsNyBAQAogICAgICAgICAgICAgICAgICB2YWNtX2FjY2Vzc19vaWQpOwogICAgIFJFR0lTVEVSX01JQigibWliSUkvdmFjbTp2aWV3IiwgdmFjbV92aWV3LCB2YXJpYWJsZTMsIHZhY21fdmlld19vaWQpOwogCi0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHJlZywgMTAsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVmlldy1iYXNlZCBBY2Nlc3MgQ29udHJvbCBNb2RlbCBmb3IgU05NUC4iKTsKLSNlbmRpZgotCisgICAgUkVHSVNURVJfU1lTT1JfRU5UUlkocmVnLCAiVmlldy1iYXNlZCBBY2Nlc3MgQ29udHJvbCBNb2RlbCBmb3IgU05NUC4iKTsKIH0KIAogCkBAIC0xODEsMTMgKzE4OCwxMyBAQAogICAgICAgICBncm91cFN1YnRyZWUgPSBuYW1lICsgMTM7CiAgICAgICAgIGdyb3VwU3VidHJlZUxlbiA9ICpsZW5ndGggLSAxMzsKICAgICAgICAgaWYgKCBuYW1lWzEyXSAhPSBncm91cFN1YnRyZWVMZW4gKQotICAgICAgICAgICAgcmV0dXJuIDA7CQkvKiBFaXRoZXIgZXh0cmEgc3ViaWRzLCBvciBhbiBpbmNvbXBsZXRlIHN0cmluZyAqLworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CS8qIEVpdGhlciBleHRyYSBzdWJpZHMsIG9yIGFuIGluY29tcGxldGUgc3RyaW5nICovCiAgICAgICAgIGNwID0gc2VjbmFtZTsKICAgICAgICAgd2hpbGUgKGdyb3VwU3VidHJlZUxlbi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpncm91cFN1YnRyZWUgPiAyNTUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgICAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgaWYgKGNwIC0gc2VjbmFtZSA+IFZBQ01fTUFYX1NUUklORykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpncm91cFN1YnRyZWUrKzsKICAgICAgICAgfQogICAgICAgICAqY3AgPSAwOwpAQCAtMjAwLDkgKzIwNyw5IEBACiAgICAgICAgIGNwID0gc2VjbmFtZTsKICAgICAgICAgd2hpbGUgKGdyb3VwU3VidHJlZUxlbi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpncm91cFN1YnRyZWUgPiAyNTUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgICAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgaWYgKGNwIC0gc2VjbmFtZSA+IFZBQ01fTUFYX1NUUklORykKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpncm91cFN1YnRyZWUrKzsKICAgICAgICAgfQogICAgICAgICAqY3AgPSAwOwpAQCAtMzE1LDExICszMjIsMTEgQEAKICAgICAgICAgb3AgPSBuYW1lICsgMTE7CiAgICAgICAgIGxlbiA9ICpvcCsrOwogICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgY3AgPSBncm91cE5hbWU7CiAgICAgICAgIHdoaWxlIChsZW4tLSA+IDApIHsKICAgICAgICAgICAgIGlmICgqb3AgPiAyNTUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgICAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgKmNwKysgPSAoY2hhcikgKm9wKys7CiAgICAgICAgIH0KICAgICAgICAgKmNwID0gMDsKQEAgLTMyOSwxMSArMzM2LDExIEBACiAgICAgICAgICAqLwogICAgICAgICBsZW4gPSAqb3ArKzsKICAgICAgICAgaWYgKGxlbiA+IFZBQ01fTUFYX1NUUklORykKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGNwID0gY29udGV4dFByZWZpeDsKICAgICAgICAgd2hpbGUgKGxlbi0tID4gMCkgewogICAgICAgICAgICAgaWYgKCpvcCA+IDI1NSkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsgICAgICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOyAgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgfQogICAgICAgICAqY3AgPSAwOwpAQCAtMzYxLDExICszNjgsMTEgQEAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGxlbiA9ICpvcDsKICAgICAgICAgICAgIGlmIChsZW4gPiBWQUNNX01BWF9TVFJJTkcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICBjcCA9IGdyb3VwTmFtZTsKICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPD0gbGVuOyBpKyspIHsKICAgICAgICAgICAgICAgICBpZiAoKm9wID4gMjU1KSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAwOyAgIC8qIGlsbGVnYWwgdmFsdWUgKi8KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgLyogaWxsZWdhbCB2YWx1ZSAqLwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgICAgIH0KQEAgLTM3NSwxMSArMzgyLDExIEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBsZW4gPSAqb3A7CiAgICAgICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgY3AgPSBjb250ZXh0UHJlZml4OwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8PSBsZW47IGkrKykgewogICAgICAgICAgICAgICAgIGlmICgqb3AgPiAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7ICAgLyogaWxsZWdhbCB2YWx1ZSAqLworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAvKiBpbGxlZ2FsIHZhbHVlICovCiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICpjcCsrID0gKGNoYXIpICpvcCsrOwogICAgICAgICAgICAgfQpAQCAtNTI4LDExICs1MzUsMTEgQEAKICAgICAgICAgICAgIG9wID0gbmFtZSArIDEyOwogICAgICAgICAgICAgbGVuID0gKm9wKys7CiAgICAgICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgY3AgPSB2aWV3TmFtZTsKICAgICAgICAgICAgIHdoaWxlIChsZW4tLSA+IDApIHsKICAgICAgICAgICAgICAgICBpZiAoKm9wID4gMjU1KQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgKmNwKysgPSAoY2hhcikgKm9wKys7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAqY3AgPSAwOwpAQCAtNTQzLDcgKzU1MCw3IEBACiAgICAgICAgICAgICBzdWJ0cmVlWzBdID0gbGVuID0gKm9wKys7CiAgICAgICAgICAgICBzdWJ0cmVlTGVuID0gMTsKICAgICAgICAgICAgIGlmIChsZW4gPiBNQVhfT0lEX0xFTikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmICggKG9wK2xlbikgIT0gKG5hbWUgKyAqbGVuZ3RoKSApCiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAvKiBEZWNsYXJlZCBsZW5ndGggZG9lc24ndCBtYXRjaCB3aGF0IHdlIGFjdHVhbGx5IGdvdCAqLwogICAgICAgICAgICAgb3AxID0gJihzdWJ0cmVlWzFdKTsKQEAgLTU2NiwxMSArNTczLDExIEBACiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGxlbiA9ICpvcDsKICAgICAgICAgICAgICAgICBpZiAobGVuID4gVkFDTV9NQVhfU1RSSU5HKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICAgICAgY3AgPSB2aWV3TmFtZTsKICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDw9IGxlbiAmJiBvcCA8IG5hbWUgKyAqbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCpvcCA+IDI1NSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAqY3ArKyA9IChjaGFyKSAqb3ArKzsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX3ZhcnMuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCmluZGV4IDgwOTMxNTcuLjg4OGMxYjggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fdmFycy5oCkBAIC03LDcgKzcsNyBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS92YWNtLmg+CiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogY29uZmlnX3JlcXVpcmUobWliSUkvdmFjbV9jb250ZXh0KQogY29uZmlnX3JlcXVpcmUobWliSUkvdmFjbV9jb25mKQogY29uZmlnX2FkZF9taWIoU05NUC1WSUVXLUJBU0VELUFDTS1NSUIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuYyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCmluZGV4IDVjZWYxY2YuLmRmYzFlOGQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5jCkBAIC02MSw3ICs2MSw2IEBACiAjaW5jbHVkZSAia2VybmVsLmgiCiAjaW5jbHVkZSAiaW50ZXJmYWNlcy5oIgogI2luY2x1ZGUgInN0cnVjdC5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAogI2lmbmRlZiAgTUlOCiAjZGVmaW5lICBNSU4oYSxiKSAgICAgICAgICAgICAgICAgICAgICgoKGEpIDwgKGIpKSA/IChhKSA6IChiKSkKQEAgLTMxMyw3ICszMTIsNyBAQAogc3RhdGljIG1pYl9pcFJvdXRlRW50ICpydCA9IChtaWJfaXBSb3V0ZUVudCAqKSAwOwogc3RhdGljIHZvaWQgICAgIFJvdXRlX1NjYW5fUmVsb2FkKHZvaWQpOwogI2VsaWYgIWRlZmluZWQoc29sYXJpczIpCi1zdGF0aWMgUlRFTlRSWSAqKnJ0aGVhZCA9IDA7CitzdGF0aWMgUlRFTlRSWSAqKnJ0aGVhZCA9IE5VTEw7CiBzdGF0aWMgaW50ICAgICAgcnRzaXplID0gMCwgcnRhbGxvY2F0ZSA9IDA7CiAKIHN0YXRpYyB2b2lkICAgICBSb3V0ZV9TY2FuX1JlbG9hZCh2b2lkKTsKQEAgLTc2Miw2ICs3NjEsMTAgQEAKICAgICAgICAgaWYgKGdldE1pYnN0YXQoTUlCX0lQX1JPVVRFLCAmZW50cnksIHNpemVvZihtaWIyX2lwUm91dGVFbnRyeV90KSwKICAgICAgICAgICAgICAgICAgICAgICAgcmVxX3R5cGUsICZJUF9DbXBfUm91dGUsICZOZXh0ZW50cnkpICE9IDApCiAgICAgICAgICAgICBicmVhazsKKyNpZmRlZiBIQVZFX0RFRklORURfSVJFX0NBQ0hFCisgICAgICAgIGlmKGVudHJ5LmlwUm91dGVJbmZvLnJlX2lyZV90eXBlJklSRV9DQUNIRSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworI2VuZGlmIC8qIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUgKi8KICAgICAgICAgQ09QWV9JUEFERFIoY3AsICh1X2NoYXIgKikgJiBlbnRyeS5pcFJvdXRlRGVzdCwgb3AsCiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgKyBJUF9ST1VURUFERFJfT0ZGKTsKICAgICAgICAgaWYgKGV4YWN0KSB7CkBAIC04NjUsNyArODY4LDcgQEAKIHN0YXRpYyBpbnQgICAgICBxc29ydF9jb21wYXJlKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKTsKICNlbmRpZgogCi0jaWYgZGVmaW5lZChSVEVOVFJZXzRfNCkgfHwgZGVmaW5lZChSVEVOVFJZX1JUX05FWFQpIHx8IGRlZmluZWQoaHB1eDExKQorI2lmIGRlZmluZWQoUlRFTlRSWV80XzQpIHx8IGRlZmluZWQoUlRFTlRSWV9SVF9ORVhUKSB8fCBkZWZpbmVkIChocHV4MTEpCiAKICNpZiBkZWZpbmVkKFJURU5UUllfNF80KSAmJiAhZGVmaW5lZChocHV4MTEpCiB2b2lkCkBAIC04NzUsNyArODc4LDcgQEAKICAgICBSVEVOVFJZICAgICAgICAgcnQ7CiAgICAgc3RydWN0IGlmbmV0ICAgIGlmbmV0OwogICAgIGNoYXIgICAgICAgICAgICBuYW1lWzE2XSwgdGVtcFsxNl07Ci0jaWYgIVNUUlVDVF9JRk5FVF9IQVNfSUZfWE5BTUUKKyNpZiAhSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKICAgICByZWdpc3RlciBjaGFyICAqY3A7CiAjZW5kaWYKIApAQCAtOTA4LDcgKzkxMSw3IEBACiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYklJL3Zhcl9yb3V0ZSIsICJrbG9va3VwIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSNpZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1hOQU1FCisjaWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKICNpZiBkZWZpbmVkKG5ldGJzZDEpIHx8IGRlZmluZWQob3BlbmJzZDIpCiAgICAgICAgICAgICBzdHJsY3B5KG5hbWUsIGlmbmV0LmlmX3huYW1lLCBzaXplb2YobmFtZSkpOwogI2Vsc2UKQEAgLTE0NjYsNyArMTQ2OSw3IEBACiAgICAgICogMS4zLjYuMS4yLjEuNC4yMS4xLj8uQS5CLkMuRCwgIHdoZXJlIEEuQi5DLkQgaXMgSVAgYWRkcmVzcy4KICAgICAgKiBJUEFERFIgc3RhcnRzIGF0IG9mZnNldCAxMC4KICAgICAgKi8KLSAgICByZWdpc3RlciBpbnQgICAgU2F2ZV9WYWxpZCwgcmVzdWx0LCBSdEluZGV4OworICAgIHJlZ2lzdGVyIGludCAgICBTYXZlX1ZhbGlkLCByZXN1bHQsIFJ0SW5kZXggPSAwOwogICAgIHN0YXRpYyBpbnQgICAgICBzYXZlTmFtZUxlbiA9IDAsIHNhdmVFeGFjdCA9IDAsIHNhdmVSdEluZGV4ID0KICAgICAgICAgMCwgcnRzaXplID0gMDsKICAgICBzdGF0aWMgb2lkICAgICAgc2F2ZU5hbWVbTUFYX09JRF9MRU5dLCBDdXJyZW50W01BWF9PSURfTEVOXTsKQEAgLTE0NzcsOCArMTQ4MCw2IEBACiAgICAgc3RhdGljIFBNSUJfSVBGT1JXQVJEVEFCTEUgcElwUnRyVGFibGUgPSBOVUxMOwogICAgIHN0cnVjdCB0aW1ldmFsICBub3c7CiAgICAgc3RhdGljIGxvbmcgICAgIFRpbWVfT2ZfTGFzdF9SZWxvYWQgPSAwOwotICAgIHVfY2hhciAgICAgICAgICBkZXN0X2FkZHJbNF07Ci0gICAgTUlCX0lQRk9SV0FSRFJPVyB0ZW1wX3JvdzsKICAgICBzdGF0aWMgaW5fYWRkcl90IGFkZHJfcmV0OwogCiAKQEAgLTE1NzMsMTIgKzE1NzQsMTYgQEAKICAgICAgICAgICAgICAqIGZvciBjcmVhdGlvbiBvZiBuZXcgcm93LCBvbmx5IGlwTmV0VG9NZWRpYVRhYmxlIGNhc2UgaXMgY29uc2lkZXJlZCAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKCpsZW5ndGggPT0gMTQpIHsKKyAgICAgICAgICAgICAgICB1X2NoYXIgICAgICAgICAgIGRlc3RfYWRkcls0XTsKKyAgICAgICAgICAgICAgICBNSUJfSVBGT1JXQVJEUk9XIHRlbXBfcm93OworCiAgICAgICAgICAgICAgICAgY3JlYXRlX2ZsYWcgPSAxOwogICAgICAgICAgICAgICAgICp3cml0ZV9tZXRob2QgPSB3cml0ZV9ydGU7CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzBdID0gKHVfY2hhcikgbmFtZVsxMF07CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzFdID0gKHVfY2hhcikgbmFtZVsxMV07CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzJdID0gKHVfY2hhcikgbmFtZVsxMl07CiAgICAgICAgICAgICAgICAgZGVzdF9hZGRyWzNdID0gKHVfY2hhcikgbmFtZVsxM107CisgICAgICAgICAgICAgICAgbWVtc2V0KCZ0ZW1wX3JvdywgMCwgc2l6ZW9mKHRlbXBfcm93KSk7CiAgICAgICAgICAgICAgICAgdGVtcF9yb3cuZHdGb3J3YXJkRGVzdCA9ICooKERXT1JEICopIGRlc3RfYWRkcik7CiAgICAgICAgICAgICAgICAgdGVtcF9yb3cuZHdGb3J3YXJkUG9saWN5ID0gMDsKICAgICAgICAgICAgICAgICB0ZW1wX3Jvdy5kd0ZvcndhcmRQcm90byA9IE1JQl9JUFBST1RPX05FVE1HTVQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9taWJJSS92YXJfcm91dGUuaCBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCmluZGV4IDkxZWNlZTguLjc4NjJjNDMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL21pYklJL3Zhcl9yb3V0ZS5oCkBAIC01LDcgKzUsNyBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVkFSX1JPVVRFX0gKICNkZWZpbmUgX01JQkdST1VQX1ZBUl9ST1VURV9ICiAKLWNvbmZpZ19yZXF1aXJlKG1pYklJL2lwIHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZShtaWJJSS9pcCkKIGNvbmZpZ19hcmNoX3JlcXVpcmUoc29sYXJpczIsIGtlcm5lbF9zdW5vczUpCiAKICAgICAgdm9pZCAgICAgICAgICAgIGluaXRfdmFyX3JvdXRlKHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmMgYi9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYwppbmRleCA2NjNhNWU1Li5jY2E5ODcxIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYworKysgYi9hZ2VudC9taWJncm91cC9taXNjL2lwZndhY2MuYwpAQCAtMjIsNyArMjIsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpbmNsdWRlICJpcGZ3YWNjLmgiCiAKIC8qCkBAIC0xODUsNDAgKzE4NSw1OCBAQAogICovCiAKIHN0cnVjdCB2YXJpYWJsZTIgaXBmd2FjY192YXJpYWJsZXNbXSA9IHsKLSAgICB7SVBGV0FDQ0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0lOREVYfX0sCi0gICAge0lQRldBQ0NTUkNBRERSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDU1JDQUREUn19LAotICAgIHtJUEZXQUNDU1JDTk0sIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NTUkNOTX19LAotICAgIHtJUEZXQUNDRFNUQUREUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLAotICAgICB7SVBGV0FDQ0RTVEFERFJ9fSwKLSAgICB7SVBGV0FDQ0RTVE5NLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRFNUTk19fSwKLSAgICB7SVBGV0FDQ1ZJQU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NWSUFOQU1FfX0sCi0gICAge0lQRldBQ0NWSUFBRERSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDVklBQUREUn19LAotICAgIHtJUEZXQUNDUFJPVE8sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUFJPVE99fSwKLSAgICB7SVBGV0FDQ0JJRElSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0JJRElSfX0sCi0gICAge0lQRldBQ0NESVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRElSfX0sCi0gICAge0lQRldBQ0NCWVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NCWVRFU319LAotICAgIHtJUEZXQUNDUEFDS0VUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQQUNLRVRTfX0sCi0gICAge0lQRldBQ0NOU1JDUFJUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NOU1JDUFJUU319LAotICAgIHtJUEZXQUNDTkRTVFBSVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsCi0gICAgIHtJUEZXQUNDTkRTVFBSVFN9fSwKLSAgICB7SVBGV0FDQ1NSQ0lTUk5HLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLAotICAgICB7SVBGV0FDQ1NSQ0lTUk5HfX0sCi0gICAge0lQRldBQ0NEU1RJU1JORywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwKLSAgICAge0lQRldBQ0NEU1RJU1JOR319LAotICAgIHtJUEZXQUNDUE9SVDEsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDF9fSwKLSAgICB7SVBGV0FDQ1BPUlQyLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQyfX0sCi0gICAge0lQRldBQ0NQT1JUMywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUM319LAotICAgIHtJUEZXQUNDUE9SVDQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDR9fSwKLSAgICB7SVBGV0FDQ1BPUlQ1LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ1fX0sCi0gICAge0lQRldBQ0NQT1JUNiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUNn19LAotICAgIHtJUEZXQUNDUE9SVDcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDd9fSwKLSAgICB7SVBGV0FDQ1BPUlQ4LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ4fX0sCi0gICAge0lQRldBQ0NQT1JUOSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUOX19LAotICAgIHtJUEZXQUNDUE9SVDEwLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQxMH19CisgICAge0lQRldBQ0NJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NJTkRFWH19LAorICAgIHtJUEZXQUNDU1JDQUREUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1NSQ0FERFJ9fSwKKyAgICB7SVBGV0FDQ1NSQ05NLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDU1JDTk19fSwKKyAgICB7SVBGV0FDQ0RTVEFERFIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NEU1RBRERSfX0sCisgICAge0lQRldBQ0NEU1ROTSwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0RTVE5NfX0sCisgICAge0lQRldBQ0NWSUFOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDVklBTkFNRX19LAorICAgIHtJUEZXQUNDVklBQUREUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1ZJQUFERFJ9fSwKKyAgICB7SVBGV0FDQ1BST1RPLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BST1RPfX0sCisgICAge0lQRldBQ0NCSURJUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NCSURJUn19LAorICAgIHtJUEZXQUNDRElSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ0RJUn19LAorICAgIHtJUEZXQUNDQllURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDQllURVN9fSwKKyAgICB7SVBGV0FDQ1BBQ0tFVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUEFDS0VUU319LAorICAgIHtJUEZXQUNDTlNSQ1BSVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDTlNSQ1BSVFN9fSwKKyAgICB7SVBGV0FDQ05EU1RQUlRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ05EU1RQUlRTfX0sCisgICAge0lQRldBQ0NTUkNJU1JORywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NTUkNJU1JOR319LAorICAgIHtJUEZXQUNDRFNUSVNSTkcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDRFNUSVNSTkd9fSwKKyAgICB7SVBGV0FDQ1BPUlQxLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQxfX0sCisgICAge0lQRldBQ0NQT1JUMiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUMn19LAorICAgIHtJUEZXQUNDUE9SVDMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDN9fSwKKyAgICB7SVBGV0FDQ1BPUlQ0LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ0fX0sCisgICAge0lQRldBQ0NQT1JUNSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUNX19LAorICAgIHtJUEZXQUNDUE9SVDYsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDZ9fSwKKyAgICB7SVBGV0FDQ1BPUlQ3LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9pcGZ3YWNjLCAxLCB7SVBGV0FDQ1BPUlQ3fX0sCisgICAge0lQRldBQ0NQT1JUOCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUOH19LAorICAgIHtJUEZXQUNDUE9SVDksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2lwZndhY2MsIDEsIHtJUEZXQUNDUE9SVDl9fSwKKyAgICB7SVBGV0FDQ1BPUlQxMCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfaXBmd2FjYywgMSwge0lQRldBQ0NQT1JUMTB9fQogfTsKIAogb2lkICAgICAgICAgICAgIGlwZndhY2NfdmFyaWFibGVzX29pZFtdID0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL21pc2MvaXBmd2FjYy5oIGIvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgKaW5kZXggZDliNmU2MS4uNjM5YzczOSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvbWlzYy9pcGZ3YWNjLmgKQEAgLTYsMTAgKzYsMTAgQEAKICNkZWZpbmUgX01JQkdST1VQX0lQRldBQ0NfSAogCiAvKgotICogd2UgdXNlIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9zaW1wbGVfdGFibGUgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUKICAqLwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQogCiAgICAgLyoKICAgICAgKiBhZGQgdGhlIG1pYiB3ZSBpbXBsZW1lbnQgdG8gdGhlIGxpc3Qgb2YgZGVmYXVsdCBtaWJzIHRvIGxvYWQgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmMKaW5kZXggOWIxZmY1MS4uZDZhMWVlNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5jCisrKyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi1sb2ctbWliL25vdGlmaWNhdGlvbl9sb2cuYwpAQCAtMTYsNyArMTYsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfZGF0YS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaD4KLSNpbmNsdWRlICJtaWJncm91cC9taWJJSS9zeXNPUlRhYmxlLmgiCisjaW5jbHVkZSAibmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oIgogI2luY2x1ZGUgIm5vdGlmaWNhdGlvbl9sb2cuaCIKIAogLyoKQEAgLTE0MywxMSArMTQzLDExIEBACiAgICAgICovCiAgICAgY291bnQgPSBuZXRzbm1wX3RhYmxlX3NldF9udW1fcm93cyhubG1Mb2dUYWJsZSk7CiAgICAgREVCVUdNU0dUTCgoIm5vdGlmaWNhdGlvbl9sb2ciLAotICAgICAgICAgICAgICAgICJsb2dnZWQgbm90aWZpY2F0aW9ucyAlZDsgbWF4ICVkXG4iLAorICAgICAgICAgICAgICAgICJsb2dnZWQgbm90aWZpY2F0aW9ucyAlbHU7IG1heCAlbHVcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNvdW50LCBtYXhfbG9nZ2VkKSk7CiAgICAgaWYgKGNvdW50ID4gbWF4X2xvZ2dlZCkgewogICAgICAgICBjb3VudCA9IGNvdW50IC0gbWF4X2xvZ2dlZDsKLSAgICAgICAgREVCVUdNU0dUTCgoIm5vdGlmaWNhdGlvbl9sb2ciLCAicmVtb3ZpbmcgJWQgZXh0cmEgbm90aWZpY2F0aW9uc1xuIiwKKyAgICAgICAgREVCVUdNU0dUTCgoIm5vdGlmaWNhdGlvbl9sb2ciLCAicmVtb3ZpbmcgJWx1IGV4dHJhIG5vdGlmaWNhdGlvbnNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7CiAgICAgICAgIG5ldHNubXBfbm90aWZfbG9nX3JlbW92ZV9vbGRlc3QoY291bnQpOwogICAgIH0KQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgIH0KIAogICAgIGlmIChjb3VudCkgewotICAgICAgICBERUJVR01TR1RMKCgibm90aWZpY2F0aW9uX2xvZyIsICJyZW1vdmluZyAlZCBleHBpcmVkIG5vdGlmaWNhdGlvbnNcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJub3RpZmljYXRpb25fbG9nIiwgInJlbW92aW5nICVsdSBleHBpcmVkIG5vdGlmaWNhdGlvbnNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGNvdW50KSk7CiAgICAgICAgIG5ldHNubXBfbm90aWZfbG9nX3JlbW92ZV9vbGRlc3QoY291bnQpOwogICAgIH0KQEAgLTU2Miw3ICs1NjIsNyBAQAogICAgIG5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0KG5sbUxvZ1RhYmxlKTsKICAgICBubG1Mb2dUYWJsZSA9IE5VTEw7CiAKLSAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGUobmxtX21vZHVsZV9vaWQsIE9JRF9MRU5HVEgobmxtX21vZHVsZV9vaWQpKTsKKyAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKG5sbV9tb2R1bGVfb2lkKTsKIH0KIAogdm9pZApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMKaW5kZXggODk3MzU0Ni4uMjBhOTU1YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5jCkBAIC01NywxMyArNTcsMTMgQEAKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAogICAgICAqLwogI2RlZmluZSAgIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFTkFNRSAgMwotICAgIHtTTk1QTk9USUZZRklMVEVSUFJPRklMRU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLCAyLCB7MSwgMX19LAogI2RlZmluZSAgIFNOTVBOT1RJRllGSUxURVJQUk9GSUxFU1RPUlRZUEUgIDQKLSAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVTVE9SVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVTVE9SVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUsIDIsIHsxLCAyfX0sCiAjZGVmaW5lICAgU05NUE5PVElGWUZJTFRFUlBST0ZJTEVST1dTVEFUVVMgIDUKLSAgICB7U05NUE5PVElGWUZJTFRFUlBST0ZJTEVST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBOT1RJRllGSUxURVJQUk9GSUxFUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZSwgMiwgezEsIDN9fSwKIAogfTsKQEAgLTY0OSw2ICs2NDksOCBAQAogCiAgICAgICAgICAgICBTdG9yYWdlTmV3ID0KICAgICAgICAgICAgICAgICBTTk1QX01BTExPQ19TVFJVQ1Qoc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZV9kYXRhKTsKKyAgICAgICAgICAgIGlmIChTdG9yYWdlTmV3ID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnNubXBUYXJnZXRQYXJhbXNOYW1lID0KICAgICAgICAgICAgICAgICBuZXRzbm1wX21lbWR1cCh2YXJzLT52YWwuc3RyaW5nLCB2YXJzLT52YWxfbGVuKTsKICAgICAgICAgICAgIFN0b3JhZ2VOZXctPnNubXBUYXJnZXRQYXJhbXNOYW1lTGVuID0gdmFycy0+dmFsX2xlbjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL25vdGlmaWNhdGlvbi9zbm1wTm90aWZ5VGFibGUuYwppbmRleCAzZDNlNDAxLi5mMWFiZWFiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24vc25tcE5vdGlmeVRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvbm90aWZpY2F0aW9uL3NubXBOb3RpZnlUYWJsZS5jCkBAIC0zOCw3ICszOCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfY2FsbGJhY2tzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg+Ci0jaW5jbHVkZSAibWliZ3JvdXAvbWliSUkvc3lzT1JUYWJsZS5oIgorI2luY2x1ZGUgIm5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaCIKIAogI2lmZGVmIFVTSU5HX05PVElGSUNBVElPTl9MT0dfTUlCX05PVElGSUNBVElPTl9MT0dfTU9EVUxFCiAjICAgaW5jbHVkZSAibm90aWZpY2F0aW9uLWxvZy1taWIvbm90aWZpY2F0aW9uX2xvZy5oIgpAQCAtNjIsNyArNjIsNyBAQAogCiB2b2lkIHNodXRkb3duX3NubXBOb3RpZnlUYWJsZSh2b2lkKQogewotICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZShzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UsIE9JRF9MRU5HVEgoc25tcE5vdGlmeUZ1bGxDb21wbGlhbmNlKSk7CisgICAgVU5SRUdJU1RFUl9TWVNPUl9FTlRSWShzbm1wTm90aWZ5RnVsbENvbXBsaWFuY2UpOwogfQogCiAKQEAgLTc4LDE1ICs3OCwxNyBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgU05NUE5PVElGWVRBRyAgICAgICAgIDQKLSAgICB7U05NUE5PVElGWVRBRywgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLCB7MSwgMn19LAorICAgIHtTTk1QTk9USUZZVEFHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsIHsxLCAyfX0sCiAjZGVmaW5lICAgU05NUE5PVElGWVRZUEUgICAgICAgIDUKLSAgICB7U05NUE5PVElGWVRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsIHsxLCAzfX0sCisgICAge1NOTVBOT1RJRllUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLCB7MSwgM319LAogI2RlZmluZSAgIFNOTVBOT1RJRllTVE9SQUdFVFlQRSAgNgotICAgIHtTTk1QTk9USUZZU1RPUkFHRVRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wTm90aWZ5VGFibGUsIDIsCi0gICAgIHsxLCA0fX0sCisgICAge1NOTVBOT1RJRllTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3NubXBOb3RpZnlUYWJsZSwgMiwgezEsIDR9fSwKICNkZWZpbmUgICBTTk1QTk9USUZZUk9XU1RBVFVTICAgNwotICAgIHtTTk1QTk9USUZZUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLAotICAgICB7MSwgNX19LAorICAgIHtTTk1QTk9USUZZUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfc25tcE5vdGlmeVRhYmxlLCAyLCB7MSwgNX19LAogCiB9OwogLyoKQEAgLTIxOSw3ICsyMjEsNyBAQAogICAgIG5ldHNubXBfcGR1ICAgICp0ZW1wbGF0ZV9wZHUgPSAobmV0c25tcF9wZHUgKikgc2VydmVyYXJnOwogICAgIGludCAgICAgICAgICAgICBjb3VudCA9IDAsIHNlbmQgPSAwOwogCi0gICAgREVCVUdNU0dUTCgoInNlbmRfbm90aWZpY2F0aW9ucyIsICJzdGFydGluZzogcGR1PSV4LCB2YXJzPSV4XG4iLAorICAgIERFQlVHTVNHVEwoKCJzZW5kX25vdGlmaWNhdGlvbnMiLCAic3RhcnRpbmc6IHBkdT0lcCwgdmFycz0lcFxuIiwKICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9wZHUsIHRlbXBsYXRlX3BkdS0+dmFyaWFibGVzKSk7CiAKICAgICBmb3IgKGhwdHIgPSBzbm1wTm90aWZ5VGFibGVTdG9yYWdlOyBocHRyOyBocHRyID0gaHB0ci0+bmV4dCkgewpAQCAtMzUzLDYgKzM1NSwxMCBAQAogICAgICAgICBwcHRyLT5zZWNNb2RlbCA9IHNzLT5zZWN1cml0eU1vZGVsOwogICAgICAgICBwcHRyLT5zZWNMZXZlbCA9IHNzLT5zZWN1cml0eUxldmVsOwogICAgICAgICBwcHRyLT5zZWNOYW1lID0gKGNoYXIgKikgbWFsbG9jKHNzLT5zZWN1cml0eU5hbWVMZW4gKyAxKTsKKyAgICAgICAgaWYgKHBwdHItPnNlY05hbWUgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtVGFibGVfZGlzcG9zZShwcHRyKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CiAgICAgICAgIG1lbWNweSgodm9pZCAqKSBwcHRyLT5zZWNOYW1lLCAodm9pZCAqKSBzcy0+c2VjdXJpdHlOYW1lLAogICAgICAgICAgICAgICAgc3MtPnNlY3VyaXR5TmFtZUxlbik7CiAgICAgICAgIHBwdHItPnNlY05hbWVbc3MtPnNlY3VyaXR5TmFtZUxlbl0gPSAwOwpAQCAtMzY4LDYgKzM3NCwxMCBAQAogICAgICAgICBwcHRyLT5zZWNOYW1lID0gTlVMTDsKICAgICAgICAgaWYgKHNzLT5jb21tdW5pdHkgJiYgKHNzLT5jb21tdW5pdHlfbGVuID4gMCkpIHsKICAgICAgICAgICAgIHBwdHItPnNlY05hbWUgPSAoY2hhciAqKSBtYWxsb2Moc3MtPmNvbW11bml0eV9sZW4gKyAxKTsKKyAgICAgICAgICAgIGlmIChwcHRyLT5zZWNOYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHBwdHIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQogICAgICAgICAgICAgbWVtY3B5KCh2b2lkICopIHBwdHItPnNlY05hbWUsICh2b2lkICopIHNzLT5jb21tdW5pdHksCiAgICAgICAgICAgICAgICAgICAgc3MtPmNvbW11bml0eV9sZW4pOwogICAgICAgICAgICAgcHB0ci0+c2VjTmFtZVtzcy0+Y29tbXVuaXR5X2xlbl0gPSAwOwpAQCAtMzg1LDYgKzM5NSw4IEBACiAgICAgICogbm90aWZ5IHRhYmxlIAogICAgICAqLwogICAgIG5wdHIgPSBTTk1QX01BTExPQ19TVFJVQ1Qoc25tcE5vdGlmeVRhYmxlX2RhdGEpOworICAgIGlmIChucHRyID09IE5VTEwpCisgICAgICAgIHJldHVybiAwOwogICAgIG5wdHItPnNubXBOb3RpZnlOYW1lID0gc3RyZHVwKGJ1Zik7CiAgICAgbnB0ci0+c25tcE5vdGlmeU5hbWVMZW4gPSBzdHJsZW4oYnVmKTsKICAgICBucHRyLT5zbm1wTm90aWZ5VGFnID0gc3RyZHVwKGJ1Zik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjA5ZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIuaApAQCAtMCwwICsxLDggQEAKKy8qCisgKiBtb2R1bGUgdG8gaW5jbHVkZSB0aGUgbW9kdWxlcworICovCisKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZSkKK2NvbmZpZ19hZGRfbWliKFJNT04tTUlCKQorCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzVkZDYxCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZGF0YV9hY2Nlc3MvZXRoZXJzdGF0cy5oCkBAIC0wLDAgKzEsNyBAQAorLyoKKyAqIG1vZHVsZSB0byBpbmNsdWRlIHRoZSBtb2R1bGVzCisgKi8KKworI2lmIGRlZmluZWQobGludXgpCitjb25maWdfcmVxdWlyZShybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4KQorI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9kYXRhX2FjY2Vzcy9ldGhlcnN0YXRzX2xpbnV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI2NDZmZAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHNfbGludXguYwpAQCAtMCwwICsxLDMxNSBAQAorLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgInJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuaCIKKyNpbmNsdWRlICJybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgiCisjaW5jbHVkZSAicm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2lvY3RsX2ltcF9jb21tb24uaCIKKworLyoKKyAqIEByZXR2YWwgIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBnZXRpZmFkZHJzIGZhaWxlZCAKKyAqIEByZXR2YWwgLTIgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkCisgKi8KKworc3RydWN0IGlmbmFtZSAqCitldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQsIGludCAqcmV0dmFsKQoreworICAgIHN0cnVjdCBpZmFkZHJzICphZGRycyA9IE5VTEwsICpwID0gTlVMTDsKKyAgICBzdHJ1Y3QgaWZuYW1lICpuYW1lcHRyMT1OVUxMLCAqbmFtZXB0cjIgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoZ2V0aWZhZGRycygmYWRkcnMpKSA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9nZXQiLAorICAgICAgICAgICAgICAgICAgICAiZ2V0aWZhZGRycyBmYWlsZWRcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBnZXRpZmFkZHJzIGZhaWxlZFxuIik7CisgICAgICAgICpyZXR2YWwgPSAtMTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgZm9yIChwID0gYWRkcnM7IHA7IHAgPSBwLT5pZmFfbmV4dCkgeworCisgICAgICAgIGlmICghbGlzdF9oZWFkKSB7CisgICAgICAgICAgICBpZiAoIChsaXN0X2hlYWQgPSAoc3RydWN0IGlmbmFtZSAqKSBtYWxsb2MgKHNpemVvZihzdHJ1Y3QgaWZuYW1lKSkpIDwgMCkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9uYW1lX2xpc3RfZ2V0LCBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgICAgIGZyZWVpZmFkZHJzKGFkZHJzKTsKKyAgICAgICAgICAgICAgICAqcmV0dmFsID0gLTI7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtZW1zZXQobGlzdF9oZWFkLCAwLCBzaXplb2Yoc3RydWN0IGlmbmFtZSkpOworICAgICAgICAgICAgc3RybGNweShsaXN0X2hlYWQtPm5hbWUsIHAtPmlmYV9uYW1lLCBJRl9OQU1FU0laRSk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgICAgZm9yIChuYW1lcHRyMSA9IGxpc3RfaGVhZDsgbmFtZXB0cjE7IG5hbWVwdHIyID0gbmFtZXB0cjEsIG5hbWVwdHIxID0gbmFtZXB0cjEtPmlmbl9uZXh0KQorICAgICAgICAgICAgaWYgKCFzdHJuY21wKHAtPmlmYV9uYW1lLCBuYW1lcHRyMS0+bmFtZSwgSUZfTkFNRVNJWkUpKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGlmIChuYW1lcHRyMSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICggKG5hbWVwdHIyLT5pZm5fbmV4dCA9IChzdHJ1Y3QgaWZuYW1lICopIG1hbGxvYyAoc2l6ZW9mKHN0cnVjdCBpZm5hbWUpKSkgPCAwKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfbmFtZV9saXN0X2dldCIsCisgICAgICAgICAgICAgICAgICAgICAgICAibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkXG4iKSk7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQsIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CisgICAgICAgICAgICBldGhlcnN0YXRzX2ludGVyZmFjZV9uYW1lX2xpc3RfZnJlZSAobGlzdF9oZWFkKTsKKyAgICAgICAgICAgIGZyZWVpZmFkZHJzKGFkZHJzKTsKKyAgICAgICAgICAgICpyZXR2YWwgPSAtMjsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG5hbWVwdHIyID0gbmFtZXB0cjItPmlmbl9uZXh0OworICAgICAgICBtZW1zZXQobmFtZXB0cjIsIDAsIHNpemVvZihzdHJ1Y3QgaWZuYW1lKSk7CisgICAgICAgIHN0cmxjcHkobmFtZXB0cjItPm5hbWUsIHAtPmlmYV9uYW1lLCBJRl9OQU1FU0laRSk7CisgICAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGZyZWVpZmFkZHJzKGFkZHJzKTsKKyAgICAqcmV0dmFsID0gMDsKKyAgICByZXR1cm4gbGlzdF9oZWFkOworfQorCisKKy8qCisgKiBAcmV0dmFsIDAgc3VjY2VzcworICogQHJldHZhbCAtMSBpbnZhbGlkIHBvaW50ZXIKKyAqLworCitpbnQKK2V0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIChzdHJ1Y3QgaWZuYW1lICpsaXN0X2hlYWQpCit7CisgICAgc3RydWN0IGlmbmFtZSAqbmFtZXB0cjEgPSBOVUxMLCAqbmFtZXB0cjIgPSBOVUxMOworCisgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoIWxpc3RfaGVhZCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX25hbWVfbGlzdF9mcmVlOiBpbnZhbGlkIHBvaW50ZXIgbGlzdF9oZWFkIik7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9uYW1lX2xpc3RfZnJlZSIsCisgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHBvaW50ZXIgbGlzdF9oZWFkXG4iKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKG5hbWVwdHIxID0gbGlzdF9oZWFkOyBuYW1lcHRyMTsgbmFtZXB0cjEgPSBuYW1lcHRyMikgeworICAgICAgICAgICAgbmFtZXB0cjIgPSBuYW1lcHRyMS0+aWZuX25leHQ7CisgICAgICAgICAgICBmcmVlIChuYW1lcHRyMSk7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBAcmV0dmFsICAwIDogbm90IGZvdW5kCisgKiBAcmV0dmFsICEwIDogaWZJbmRleAorICovCisKK2ludAorZXRoZXJzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSkgeworI2lmbmRlZiBTSU9DR0lGSU5ERVgKKyAgICByZXR1cm4gMDsKKyNlbHNlCisgICAgc3RydWN0IGlmcmVxICAgIGlmcnE7CisgICAgaW50IHJjID0gMDsKKworICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmlvY3RsIiwgImlmaW5kZXhfZ2V0XG4iKSk7CisKKyAgICByYyA9IF9ldGhlclN0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0dJRklOREVYLCAmaWZycSwgbmFtZSk7CisgICAgaWYgKHJjIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHM6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiaWZpbmRleF9nZXQgZXJyb3Igb24gaW5lcmZhY2UgJyVzJ1xuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwsIGlmaW5kZXhfZ2V0IGVycm9yIG9uIGluZXJmYWNlICclcydcbiIsIG5hbWUpOworICAgICAgICByZXR1cm4gMDsKKworICAgIH0KKworICAgIHJldHVybiBpZnJxLmlmcl9pZmluZGV4OworI2VuZGlmIC8qIFNJT0NHSUZJTkRFWCAqLworfQorCisvKgorICogQHJldHZhbCAgMCBzdWNjZXNzCisgKiBAcmV0dmFsIC0xIGNhbm5vdCBnZXQgRVRIVE9PTF9EUlZJTkZPIGZhaWxlZCAKKyAqIEByZXR2YWwgLTIgbl9zdGF0cyB6ZXJvIC0gbm8gc3RhdGlzdGNzIGF2YWlsYWJsZQorICogQHJldHZhbCAtMyBtZW1vcnkgYWxsb2NhdGlvbiBmb3IgaG9sZGluZyB0aGUgc3RhdGlzdGljcyBmYWlsZWQKKyAqIEByZXR2YWwgLTQgY2Fubm90IGdldCBFVEhUT09MX0dTVFJJTkdTIGluZm9ybWF0aW9uCisgKiBAcmV0dmFsIC01IGNhbm5vdCBnZXQgRVRIVE9PTF9HU1RBVFMgaW5mb3JtYXRpb24KKyAqIEByZXR2YWwgLTYgZnVuY3Rpb24gbm90IHN1cHBvcnRlZCBpZiBIQVZFX0xJTlVYX0VUSFRPT0xfSCBub3QgZGVmaW5lZAorICovCisKK2ludAoraW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCAsIGludCBmZCwgY29uc3QgY2hhciAqbmFtZSkgeworCisjaWZkZWYgSEFWRV9MSU5VWF9FVEhUT09MX0gKKworICAgIGV0aGVyU3RhdHNUYWJsZV9kYXRhICpkYXRhID0gJnJvd3JlcV9jdHgtPmRhdGE7CisgICAgc3RydWN0IGV0aHRvb2xfZHJ2aW5mbyBkcml2ZXJfaW5mbzsKKyAgICBzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncyAqZXRoX3N0cmluZ3M7CisgICAgc3RydWN0IGV0aHRvb2xfc3RhdHMgKmV0aF9zdGF0czsKKyAgICBzdHJ1Y3QgaWZyZXEgaWZyOworICAgIHVuc2lnbmVkIGludCBuc3RhdHMsIHNpemVfc3RyLCBpOworICAgIGludCBlcnI7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG1lbXNldCgmaWZyLCAwLCBzaXplb2YoaWZyKSk7CisgICAgc3RybGNweShpZnIuaWZyX25hbWUsIG5hbWUsIHNpemVvZihpZnIuaWZyX25hbWUpKTsKKworICAgIG1lbXNldCgmZHJpdmVyX2luZm8sIDAsIHNpemVvZihkcml2ZXJfaW5mbykpOworICAgIGRyaXZlcl9pbmZvLmNtZCA9IEVUSFRPT0xfR0RSVklORk87CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikmZHJpdmVyX2luZm87CisKKyAgICBlcnIgPSBfZXRoZXJTdGF0c19pb2N0bF9nZXQoZmQsIFNJT0NFVEhUT09MLCAmaWZyLCBuYW1lKTsKKyAgICBpZiAoZXJyIDwgMCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQiLAorICAgICAgICAgICAgICAgICAgICAiRVRIVE9PTF9HRVREUlZJTkZPIGZhaWxlZCBvbiBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIG5zdGF0cyA9IGRyaXZlcl9pbmZvLm5fc3RhdHM7CisgICAgaWYgKG5zdGF0cyA8IDEpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIHN0YXRzIGF2YWlsYWJsZSBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKSk7CisgICAgICAgIHJldHVybiAtMjsKKyAgICB9CisKKyAgICBzaXplX3N0ciA9IG5zdGF0cyAqIEVUSF9HU1RSSU5HX0xFTjsKKworICAgIGV0aF9zdHJpbmdzID0gbWFsbG9jKHNpemVfc3RyICsgc2l6ZW9mIChzdHJ1Y3QgZXRodG9vbF9nc3RyaW5ncykpOworICAgIGlmICghZXRoX3N0cmluZ3MpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgIm5vIG1lbW9yeSBhdmFpbGFibGVcbiIpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCwgbm8gbWVtb3J5IGF2YWlsYWJsZVxuIik7CisKKyAgICAgICAgcmV0dXJuIC0zOworICAgIH0KKyAgICBtZW1zZXQgKGV0aF9zdHJpbmdzLCAwLCAoc2l6ZV9zdHIgKyBzaXplb2YgKHN0cnVjdCBldGh0b29sX2dzdHJpbmdzKSkpOworCisgICAgZXRoX3N0YXRzID0gbWFsbG9jIChzaXplX3N0ciArIHNpemVvZiAoc3RydWN0IGV0aHRvb2xfc3RhdHMpKTsKKyAgICBpZiAoIWV0aF9zdGF0cykgeworICAgICAgICBmcmVlIChldGhfc3RyaW5ncyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgICAgICJubyBtZW1vcnkgYXZhaWxhYmxlXG4iKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQsIG5vIG1lbW9yeSBhdmFpbGFibGVcbiIpOworCisgICAgICAgIHJldHVybiAtMzsKKyAgICB9CisgICAgbWVtc2V0IChldGhfc3RhdHMsIDAsIChzaXplX3N0ciArIHNpemVvZiAoc3RydWN0IGV0aHRvb2xfc3RhdHMpKSk7CisKKyAgICBldGhfc3RyaW5ncy0+Y21kID0gRVRIVE9PTF9HU1RSSU5HUzsKKyAgICBldGhfc3RyaW5ncy0+c3RyaW5nX3NldCA9IEVUSF9TU19TVEFUUzsKKyAgICBldGhfc3RyaW5ncy0+bGVuID0gbnN0YXRzOworICAgIGlmci5pZnJfZGF0YSA9IChjaGFyICopIGV0aF9zdHJpbmdzOworCisgICAgZXJyID0gX2V0aGVyU3RhdHNfaW9jdGxfZ2V0KGZkLCBTSU9DRVRIVE9PTCwgJmlmciwgbmFtZSk7CisgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBnZXQgc3RhdHMgc3RyaW5ncyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKSk7CisgICAgICAgIHNubXBfbG9nIChMT0dfRVJSLCAiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSxpbnRlcmZhY2VfaW9jdGxfZXRoZXJzdGF0c19nZXQsIGNhbm5vdCBnZXQgc3RhdHMgc3RyaW5ncyBpbmZvcm1hdGlvbiBmb3IgaW50ZXJmYWNlIHwlc3wgXG4iLCBuYW1lKTsKKworICAgICAgICBmcmVlKGV0aF9zdHJpbmdzKTsKKyAgICAgICAgZnJlZShldGhfc3RhdHMpOworICAgICAgICByZXR1cm4gLTQ7CisgICAgfQorCisgICAgZXRoX3N0YXRzLT5jbWQgPSBFVEhUT09MX0dTVEFUUzsKKyAgICBldGhfc3RhdHMtPm5fc3RhdHMgPSBuc3RhdHM7CisgICAgaWZyLmlmcl9kYXRhID0gKGNoYXIgKikgZXRoX3N0YXRzOworICAgIGVyciA9IF9ldGhlclN0YXRzX2lvY3RsX2dldChmZCwgU0lPQ0VUSFRPT0wsICZpZnIsIG5hbWUpOworICAgIGlmIChlcnIgPCAwKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldCIsCisgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgZ2V0IHN0YXRzIHN0cmluZ3MgaW5mb3JtYXRpb24gZm9yIGludGVyZmFjZSB8JXN8IFxuIiwgbmFtZSkpOworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0LCBjYW5ub3QgZ2V0IHN0YXRzIGluZm9ybWF0aW9uIGZvciBpbnRlcmZhY2UgfCVzfCBcbiIsIG5hbWUpOworCisgICAgICAgIGZyZWUoZXRoX3N0cmluZ3MpOworICAgICAgICBmcmVlKGV0aF9zdGF0cyk7CisgICAgICAgIHJldHVybiAtNTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnN0YXRzOyBpKyspIHsKKyAgICAgICAgY2hhciBzW0VUSF9HU1RSSU5HX0xFTl07CisKKyAgICAgICAgc3RybGNweShzLCAoY29uc3QgY2hhciAqKSAmZXRoX3N0cmluZ3MtPmRhdGFbaSAqIEVUSF9HU1RSSU5HX0xFTl0sCisgICAgICAgICAgICAgICAgc2l6ZW9mKHMpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChFVEhFUlNUQVRTSkFCQkVSUyhzKSkgeworICAgICAgICAgICAgZGF0YS0+ZXRoZXJTdGF0c0phYmJlcnMgPSAodV9sb25nKWV0aF9zdGF0cy0+ZGF0YVtpXTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9leGlzdHNfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNKQUJCRVJTX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisgICAgZnJlZShldGhfc3RyaW5ncyk7CisgICAgZnJlZShldGhfc3RhdHMpOworCisgICAgcmV0dXJuIDA7CisjZWxzZQorICAgIHJldHVybiAtNjsKKyNlbmRpZgorCit9CisKKworLyogaW9jdGwgd3JhcHBlcgorICoKKyAqIEBwYXJhbSBmZCA6IHNvY2tldCBmZCB0byB1c2Ugdy9pb2N0bCwgb3IgLTEgdG8gb3Blbi9jbG9zZSBvbmUKKyAqIEBwYXJhbSB3aGljaAorICogQHBhcmFtIGlmcnEKKyAqIHBhcmFtIGlmZW50cnkgOiBpZmVudHJ5IHRvIHVwZGF0ZQorICogQHBhcmFtIG5hbWUKKyAqCisgKiBAcmV0dmFsICAwIDogc3VjY2VzcworICogQHJldHZhbCAtMSA6IGludmFsaWQgcGFyYW1ldGVycworICogQHJldHZhbCAtMiA6IGNvdWxkbid0IGNyZWF0ZSBzb2NrZXQKKyAqIEByZXR2YWwgLTMgOiBpb2N0bCBjYWxsIGZhaWxlZAorICovCitpbnQKK19ldGhlclN0YXRzX2lvY3RsX2dldChpbnQgZmQsIGludCB3aGljaCwgc3RydWN0IGlmcmVxICppZnJxLCBjb25zdCBjaGFyKiBuYW1lKQoreworICAgIGludCBvdXJmZCA9IC0xLCByYyA9IDA7CisKKyAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZTppb2N0bCIsICJfZXRoZXJTdGF0c19pb2N0bF9nZXRcbiIpKTsKKyAgICAvKgorICAgICAqIHNhbml0eSBjaGVja3MKKyAgICAgKi8KKyAgICBpZihOVUxMID09IG5hbWUpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiX2V0aGVyU3RhdHNfaW9jdGxfZ2V0IGludmFsaWQgaWZuYW1lICclcydcbiIsIG5hbWUpKTsKKyAgICAgICAgc25tcF9sb2cgKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmlvY3RsLCBfZXRoZXJTdGF0c19pb2N0bF9nZXQgZXJyb3Igb24gaW5lcmZhY2UgJyVzJ1xuIiwgbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNyZWF0ZSBzb2NrZXQgZm9yIGlvY3RscworICAgICAqLworICAgIGlmKGZkIDwgMCkgeworICAgICAgICBmZCA9IG91cmZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOworICAgICAgICBpZihvdXJmZCA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlOmlvY3RsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJfZXRoZXJTdGF0c19pb2N0bF9nZXQgY291bGRuJ3QgY3JlYXRlIGEgc29ja2V0XG4iLCBuYW1lKSk7CisgICAgICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwsIF9ldGhlclN0YXRzX2lvY3RsX2dldCBlcnJvciBvbiBpbmVyZmFjZSAnJXMnXG4iLCBuYW1lKTsKKworICAgICAgICAgICAgcmV0dXJuIC0yOworICAgICAgICB9CisgICAgfQorCisgICAgc3RybGNweShpZnJxLT5pZnJfbmFtZSwgbmFtZSwgc2l6ZW9mKGlmcnEtPmlmcl9uYW1lKSk7CisgICAgcmMgPSBpb2N0bChmZCwgd2hpY2gsIGlmcnEpOworICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGU6aW9jdGwiLAorICAgICAgICAgICAgICAgICAgICAiX2V0aGVyU3RhdHNfaW9jdGxfZ2V0IGlvY3RsICVkIHJldHVybmVkICVkXG4iLCB3aGljaCwgcmMpKTsKKyAgICAgICAgcmMgPSAtMzsKKyAgICB9CisKKyAgICBpZihvdXJmZCA+PSAwKQorICAgICAgICBjbG9zZShvdXJmZCk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzcyODQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS5oCkBAIC0wLDAgKzEsMTEgQEAKKy8qCisgKiBtb2R1bGUgdG8gaW5jbHVkZSB0aGUgbW9kdWxlcworICovCisKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2RhdGFfYWNjZXNzL2V0aGVyc3RhdHMpCitjb25maWdfcmVxdWlyZShybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlKQorY29uZmlnX3JlcXVpcmUocm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldCkKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQpCitjb25maWdfcmVxdWlyZShybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzKSAKK2NvbmZpZ19yZXF1aXJlKHJtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlKQorCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhNmUyMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGUuYwpAQCAtMCwwICsxLDIzMyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTQxNzAgJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qKiBccGFnZSBNRkQgaGVscGVyIGZvciBldGhlclN0YXRzVGFibGUKKyAqCisgKiBcc2VjdGlvbiBpbnRybyBJbnRyb2R1Y3Rpb24KKyAqIEludHJvZHVjdG9yeSB0ZXh0LgorICoKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbWliX21vZHVsZXMuaD4KKworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKworb2lkICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRbXSA9IHsgRVRIRVJTVEFUU1RBQkxFX09JRCB9OworaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoZXRoZXJTdGF0c1RhYmxlX29pZCk7CisKK2V0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dDsKK3N0YXRpYyBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICpldGhlclN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3A7CisKK3ZvaWQgICAgICAgICAgICBpbml0aWFsaXplX3RhYmxlX2V0aGVyU3RhdHNUYWJsZSh2b2lkKTsKK3ZvaWQgICAgICAgICAgICBzaHV0ZG93bl90YWJsZV9ldGhlclN0YXRzVGFibGUodm9pZCk7CisKKworLyoqCisgKiBJbml0aWFsaXplcyB0aGUgZXRoZXJTdGF0c1RhYmxlIG1vZHVsZQorICovCit2b2lkCitpbml0X2V0aGVyU3RhdHNUYWJsZSh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTppbml0X2V0aGVyU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMDpvOiBQZXJmb3JtIGV0aGVyU3RhdHNUYWJsZSBvbmUtdGltZSBtb2R1bGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nCisgICAgICovCisgICAgaWYgKHNob3VsZF9pbml0KCJldGhlclN0YXRzVGFibGUiKSkKKyAgICAgICAgaW5pdGlhbGl6ZV90YWJsZV9ldGhlclN0YXRzVGFibGUoKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbml0X2V0aGVyU3RhdHNUYWJsZSAqLworCisvKioKKyAqIFNodXQtZG93biB0aGUgZXRoZXJTdGF0c1RhYmxlIG1vZHVsZSAoYWdlbnQgaXMgZXhpdGluZykKKyAqLwordm9pZAorc2h1dGRvd25fZXRoZXJTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgaWYgKHNob3VsZF9pbml0KCJldGhlclN0YXRzVGFibGUiKSkKKyAgICAgICAgc2h1dGRvd25fdGFibGVfZXRoZXJTdGF0c1RhYmxlKCk7CisKK30KKworLyoqCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBldGhlclN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAoraW5pdGlhbGl6ZV90YWJsZV9ldGhlclN0YXRzVGFibGUodm9pZCkKK3sKKyAgICB1X2xvbmcgICAgICAgICAgZmxhZ3M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6aW5pdGlhbGl6ZV90YWJsZV9ldGhlclN0YXRzVGFibGUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogVE9ETzozMDE6bzogUGVyZm9ybSBldGhlclN0YXRzVGFibGUgb25lLXRpbWUgdGFibGUgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisKKyAgICAvKgorICAgICAqIFRPRE86MzAyOm86IHwtPkluaXRpYWxpemUgZXRoZXJTdGF0c1RhYmxlIHVzZXIgY29udGV4dAorICAgICAqIGlmIHlvdSdkIGxpa2UgdG8gcGFzcyBpbiBhIHBvaW50ZXIgdG8gc29tZSBkYXRhIGZvciB0aGlzCisgICAgICogdGFibGUsIGFsbG9jYXRlIG9yIHNldCBpdCB1cCBoZXJlLgorICAgICAqLworICAgIC8qCisgICAgICogYSBuZXRzbm1wX2RhdGFfbGlzdCBpcyBhIHNpbXBsZSB3YXkgdG8gc3RvcmUgdm9pZCBwb2ludGVycy4gQSBzaW1wbGUKKyAgICAgKiBzdHJpbmcgdG9rZW4gaXMgdXNlZCB0byBhZGQsIGZpbmQgb3IgcmVtb3ZlIHBvaW50ZXJzLgorICAgICAqLworICAgIGV0aGVyU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcAorCT0gbmV0c25tcF9jcmVhdGVfZGF0YV9saXN0KCJldGhlclN0YXRzVGFibGUiLCBOVUxMLCBOVUxMKTsKKworICAgIC8qCisgICAgICogTm8gc3VwcG9ydCBmb3IgYW55IGZsYWdzIHlldCwgYnV0IGluIHRoZSBmdXR1cmUgeW91IHdvdWxkCisgICAgICogc2V0IGFueSBmbGFncyBoZXJlLgorICAgICAqLworICAgIGZsYWdzID0gMDsKKworICAgIC8qCisgICAgICogY2FsbCBpbnRlcmZhY2UgaW5pdGlhbGl6YXRpb24gY29kZQorICAgICAqLworICAgIF9ldGhlclN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UKKwkoZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wLCBmbGFncyk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWxpemVfdGFibGVfZXRoZXJTdGF0c1RhYmxlICovCisKKy8qKgorICogU2h1dGRvd24gdGhlIHRhYmxlIGV0aGVyU3RhdHNUYWJsZSAKKyAqLwordm9pZAorc2h1dGRvd25fdGFibGVfZXRoZXJTdGF0c1RhYmxlKHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBjYWxsIGludGVyZmFjZSBzaHV0ZG93biBjb2RlCisgICAgICovCisgICAgX2V0aGVyU3RhdHNUYWJsZV9zaHV0ZG93bl9pbnRlcmZhY2UoZXRoZXJTdGF0c1RhYmxlX3VzZXJfY29udGV4dF9wKTsKKyAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShldGhlclN0YXRzVGFibGVfdXNlcl9jb250ZXh0X3ApOworICAgIGV0aGVyU3RhdHNUYWJsZV91c2VyX2NvbnRleHRfcCA9IE5VTEw7Cit9CisKKy8qKgorICogZXh0cmEgY29udGV4dCBpbml0aWFsaXphdGlvbiAoZWcgZGVmYXVsdCB2YWx1ZXMpCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHggICAgOiByb3cgcmVxdWVzdCBjb250ZXh0CisgKiBAcGFyYW0gdXNlcl9pbml0X2N0eCA6IHZvaWQgcG9pbnRlciBmb3IgdXNlciAocGFyYW1ldGVyIHRvIHJvd3JlcV9jdHhfYWxsb2NhdGUpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgOiBubyBlcnJvcnMKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgIDogZXJyb3IgKGNvbnRleHQgYWxsb2NhdGUgd2lsbCBmYWlsKQorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMDpvOiB8LT4gUGVyZm9ybSBleHRyYSBldGhlclN0YXRzVGFibGUgcm93cmVxIGluaXRpYWxpemF0aW9uLiAoZWcgREVGVkFMUykKKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdCAqLworCisvKioKKyAqIGV4dHJhIGNvbnRleHQgY2xlYW51cAorICoKKyAqLwordm9pZAorZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfY2xlYW51cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIxMTpvOiB8LT4gUGVyZm9ybSBleHRyYSBldGhlclN0YXRzVGFibGUgcm93cmVxIGNsZWFudXAuCisgICAgICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2NsZWFudXAgKi8KKworLyoqCisgKiBwcmUtcmVxdWVzdCBjYWxsYmFjaworICoKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgICAgICA6IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiB1c2VyX2NvbnRleHQpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjUxMDpvOiBQZXJmb3JtIGV0aGVyU3RhdHNUYWJsZSBwcmUtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3QgKi8KKworLyoqCisgKiBwb3N0LXJlcXVlc3QgY2FsbGJhY2sKKyAqCisgKiBOb3RlOgorICogICBOZXcgcm93cyBoYXZlIGJlZW4gaW5zZXJ0ZWQgaW50byB0aGUgY29udGFpbmVyLCBhbmQKKyAqICAgZGVsZXRlZCByb3dzIGhhdmUgYmVlbiByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lciBhbmQKKyAqICAgcmVsZWFzZWQuCisgKgorICogQHBhcmFtIHVzZXJfY29udGV4dAorICogQHBhcmFtIHJjIDogTUZEX1NVQ0NFU1MgaWYgYWxsIHJlcXVlc3RzIHN1Y2NlZWRlZAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IG90aGVyIGVycm9yIChpZ25vcmVkKQorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqIHVzZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJjKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86NTExOm86IFBlcmZvcm0gZXRoZXJTdGF0c1RhYmxlIHBvc3QtcmVxdWVzdCBhY3Rpb25zLgorICAgICAqLworCisgICAgLyoKKyAgICAgKiBjaGVjayB0byBzZXQgaWYgYW55IHJvd3Mgd2VyZSBjaGFuZ2VkLgorICAgICAqLworICAgIGlmIChldGhlclN0YXRzVGFibGVfZGlydHlfZ2V0KCkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY2hlY2sgaWYgcmVxdWVzdCB3YXMgc3VjY2Vzc2Z1bC4gSWYgc28sIHRoaXMgd291bGQgYmUKKyAgICAgICAgICogYSBnb29kIHBsYWNlIHRvIHNhdmUgZGF0YSB0byBpdHMgcGVyc2lzdGVudCBzdG9yZS4KKyAgICAgICAgICovCisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHNhdmUgY2hhbmdlZCByb3dzLCBpZiB5b3UgaGF2ZW4ndCBhbHJlYWR5CisgICAgICAgICAgICAgKi8KKyAgICAgICAgfQorCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQoMCk7ICAgLyogY2xlYXIgdGFibGUgZGlydHkgZmxhZyAqLworICAgIH0KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCAqLworCisKKy8qKiBAeyAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmN2YwM2MKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlLmgKQEAgLTAsMCArMSwzMDMgQEAKKy8qCisgKiBOb3RlOiB0aGlzIGZpbGUgb3JpZ2luYWxseSBhdXRvLWdlbmVyYXRlZCBieSBtaWIyYyB1c2luZworICogICAgICAgdmVyc2lvbiA6IDE0MTcwICQgb2YgJAorICoKKyAqICRJZDokCisgKi8KKyNpZm5kZWYgRVRIRVJTVEFUU1RBQkxFX0gKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKy8qKiBAYWRkdG9ncm91cCBtaXNjIG1pc2M6IE1pc2NlbGxhbmVvdXMgcm91dGluZXMKKyAqCisgKiBAeworICovCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisKKyAgICAvKgorICAgICAqIE9JRCBhbmQgY29sdW1uIG51bWJlciBkZWZpbml0aW9ucyBmb3IgZXRoZXJTdGF0c1RhYmxlIAorICAgICAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9vaWRzLmgiCisKKyAgICAvKgorICAgICAqIGVudW0gZGVmaW5pb25zIAorICAgICAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9lbnVtcy5oIgorCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfZXRoZXJTdGF0c1RhYmxlKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9ldGhlclN0YXRzVGFibGUodm9pZCk7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICAgICAqLworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFdoZW4geW91IHJlZ2lzdGVyIHlvdXIgbWliLCB5b3UgZ2V0IHRvIHByb3ZpZGUgYSBnZW5lcmljCisgICAgICogcG9pbnRlciB0aGF0IHdpbGwgYmUgcGFzc2VkIGJhY2sgdG8geW91IGZvciBtb3N0IG9mIHRoZQorICAgICAqIGZ1bmN0aW9ucyBjYWxscy4KKyAgICAgKgorICAgICAqIFRPRE86MTAwOnI6IFJldmlldyBhbGwgY29udGV4dCBzdHJ1Y3R1cmVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBUT0RPOjEwMTpvOiB8LT4gUmV2aWV3IGV0aGVyU3RhdHNUYWJsZSByZWdpc3RyYXRpb24gY29udGV4dC4KKyAgICAgKi8KKyAgICB0eXBlZGVmIG5ldHNubXBfZGF0YV9saXN0IGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb247CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworICAgIC8qCisgICAgICogVE9ETzoxMTA6cjogfC0+IFJldmlldyBldGhlclN0YXRzVGFibGUgZGF0YSBjb250ZXh0IHN0cnVjdHVyZS4KKyAgICAgKiBUaGlzIHN0cnVjdHVyZSBpcyB1c2VkIHRvIHJlcHJlc2VudCB0aGUgZGF0YSBmb3IgZXRoZXJTdGF0c1RhYmxlLgorICAgICAqLworICAgIC8qCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgc3RvcmFnZSBmb3IgYWxsIHRoZSBjb2x1bW5zIGRlZmluZWQgaW4gdGhlCisgICAgICogZXRoZXJTdGF0c1RhYmxlLgorICAgICAqLworICAgIHR5cGVkZWYgc3RydWN0IGV0aGVyU3RhdHNUYWJsZV9kYXRhX3MgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEYXRhU291cmNlKDIpL09CSkVDVElEL0FTTl9PQkpFQ1RfSUQvb2lkKG9pZCkvL0wvQS9XL2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIG9pZCAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZVsxMjhdOworICAgICAgICBzaXplX3QgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuOyAgICAgICAvKiAjIG9mIG9pZCBlbGVtZW50cywgbm90IGJ5dGVzICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0Ryb3BFdmVudHMoMykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPY3RldHMoNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMoNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzKDYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzTXVsdGljYXN0UGt0cyg3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzKDgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMoOSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMoMTApL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNGcmFnbWVudHMoMTEpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNKYWJiZXJzKDEyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c0phYmJlcnM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NvbGxpc2lvbnMoMTMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uczsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzKDE0KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMoMTUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cygxNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cygxNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMoMTgpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0czsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMoMTkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2gKKyAgICAgICAgICovCisgICAgICAgIHVfbG9uZyAgICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHM7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c093bmVyKDIwKS9Pd25lclN0cmluZy9BU05fT0NURVRfU1RSL2NoYXIoY2hhcikvL0wvQS9XL2UvUi9kL2gKKyAgICAgICAgICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBldGhlclN0YXRzT3duZXJbMTI3XTsKKyAgICAgICAgc2l6ZV90ICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl9sZW47ICAgIC8qICMgb2YgY2hhciBlbGVtZW50cywgbm90IGJ5dGVzICovCisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1N0YXR1cygyMSkvRW50cnlTdGF0dXMvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL0EvVy9FL3IvZC9oCisgICAgICAgICAqLworICAgICAgICB1X2xvbmcgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1czsKKworICAgIH0gZXRoZXJTdGF0c1RhYmxlX2RhdGE7CisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTE1Om86IHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIHVuZG8gY29udGV4dC4KKyAgICAgKiBXZSdyZSBqdXN0IGdvaW5nIHRvIHVzZSB0aGUgc2FtZSBkYXRhIHN0cnVjdHVyZSBmb3Igb3VyCisgICAgICogdW5kb19jb250ZXh0LiBJZiB5b3Ugd2FudCB0byBkbyBzb21ldGhpbmcgbW9yZSBlZmZpY2VudCwKKyAgICAgKiBkZWZpbmUgeW91ciB0eXBlZGVmIGhlcmUuCisgICAgICovCisgICAgdHlwZWRlZiBldGhlclN0YXRzVGFibGVfZGF0YSBldGhlclN0YXRzVGFibGVfdW5kb19kYXRhOworCisgICAgLyoKKyAgICAgKiBUT0RPOjEyMDpyOiB8LT4gUmV2aWV3IGV0aGVyU3RhdHNUYWJsZSBtaWIgaW5kZXguCisgICAgICogVGhpcyBzdHJ1Y3R1cmUgaXMgdXNlZCB0byByZXByZXNlbnQgdGhlIGluZGV4IGZvciBldGhlclN0YXRzVGFibGUuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleF9zIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2gKKyAgICAgICAgICovCisgICAgICAgIGxvbmcgICAgICAgICAgICBldGhlclN0YXRzSW5kZXg7CisKKworICAgIH0gZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleDsKKworICAgIC8qCisgICAgICogVE9ETzoxMjE6cjogfCAgIHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIG1heCBpbmRleCBsZW5ndGguCisgICAgICogSWYgeW91IEtOT1cgdGhhdCB5b3VyIGluZGV4ZXMgd2lsbCBuZXZlciBleGNlZWQgYSBjZXJ0YWluCisgICAgICogbGVuZ3RoLCB1cGRhdGUgdGhpcyBtYWNybyB0byB0aGF0IGxlbmd0aC4KKyAgICAgKi8KKyNkZWZpbmUgTUFYX2V0aGVyU3RhdHNUYWJsZV9JRFhfTEVOICAgICAxCisKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86MTMwOm86IHwtPiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIFJvdyByZXF1ZXN0IChyb3dyZXEpIGNvbnRleHQuCisgICAgICogV2hlbiB5b3VyIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLCB5b3Ugd2lsbCBiZSBwYXNzZWQgYQorICAgICAqIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4IHBvaW50ZXIuCisgICAgICovCisgICAgdHlwZWRlZiBzdHJ1Y3QgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfcyB7CisKKyAgICAvKiogdGhpcyBtdXN0IGJlIGZpcnN0IGZvciBjb250YWluZXIgY29tcGFyZSB0byB3b3JrICovCisgICAgICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgICAgICBvaWQgICAgICAgICAgICAgb2lkX3RtcFtNQVhfZXRoZXJTdGF0c1RhYmxlX0lEWF9MRU5dOworCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXggdGJsX2lkeDsKKworICAgICAgICBldGhlclN0YXRzVGFibGVfZGF0YSBkYXRhOworICAgICAgICB1bnNpZ25lZCBpbnQgICAgY29sdW1uX2V4aXN0c19mbGFnczsgICAgLyogZmxhZ3MgZm9yIGV4aXN0ZW5jZSAqLworICAgICAgICBldGhlclN0YXRzVGFibGVfdW5kb19kYXRhICp1bmRvOworICAgICAgICB1bnNpZ25lZCBpbnQgICAgY29sdW1uX3NldF9mbGFnczsgICAgICAgLyogZmxhZ3MgZm9yIHNldCBjb2x1bW5zICovCisKKworICAgICAgICAvKgorICAgICAgICAgKiBmbGFncyBwZXIgcm93LiBDdXJyZW50bHksIHRoZSBmaXJzdCAobG93ZXIpIDggYml0cyBhcmUgcmVzZXJ2ZWQKKyAgICAgICAgICogZm9yIHRoZSB1c2VyLiBTZWUgbWZkLmggZm9yIG90aGVyIGZsYWdzLgorICAgICAgICAgKi8KKyAgICAgICAgdV9pbnQgICAgICAgICAgIHJvd3JlcV9mbGFnczsKKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjEzMTpvOiB8ICAgfC0+IEFkZCB1c2VmdWwgZGF0YSB0byBldGhlclN0YXRzVGFibGUgcm93cmVxIGNvbnRleHQuCisgICAgICAgICAqLworCisgICAgICAgIC8qCisgICAgICAgICAqIHN0b3JhZ2UgZm9yIGZ1dHVyZSBleHBhbnNpb24KKyAgICAgICAgICovCisgICAgICAgIG5ldHNubXBfZGF0YV9saXN0ICpldGhlclN0YXRzVGFibGVfZGF0YV9saXN0OworCisgICAgfSBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eDsKKworICAgIHR5cGVkZWYgc3RydWN0IGV0aGVyU3RhdHNUYWJsZV9yZWZfcm93cmVxX2N0eF9zIHsKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgfSBldGhlclN0YXRzVGFibGVfcmVmX3Jvd3JlcV9jdHg7CisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBmdW5jdGlvbiBwcm90b3R5cGVzCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfY29udGV4dCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9jb250ZXh0LCBpbnQgcmMpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4X2luaXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsIHZvaWQgKnVzZXJfaW5pdF9jdHgpOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29tbWl0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICpldGhlclN0YXRzVGFibGVfcm93X2ZpbmRfYnlfbWliX2luZGV4KGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWJfaWR4KTsKKworICAgIGV4dGVybiBvaWQgICAgICBldGhlclN0YXRzVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGludCAgICAgIGV0aGVyU3RhdHNUYWJsZV9vaWRfc2l6ZTsKKworCisjaW5jbHVkZSAiZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5oIgorCisgICAgLyoKKyAgICAgKiBEVU1NWSBtYXJrZXJzLCBpZ25vcmUKKyAgICAgKgorICAgICAqIFRPRE86MDk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjE5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogVE9ETzoyOTk6eDogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRPRE86Mzk5Ong6ICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUT0RPOjQ5OTp4OiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICovCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9IICovCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjY3MWQwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0wLDAgKzEsNTI1IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqIHN0YW5kYXJkIE5ldC1TTk1QIGluY2x1ZGVzIAorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisvKgorICogaW5jbHVkZSBvdXIgcGFyZW50IGhlYWRlciAKKyAqLworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9kYXRhX2FjY2Vzcy5oIgorCisjaWYgZGVmaW5lZChsaW51eCkKKyNpbmNsdWRlICJpb2N0bF9pbXBfY29tbW9uLmgiCisjZW5kaWYKKworLyoqIEBpbmdyb3VwIGludGVyZmFjZQorICogQGFkZHRvZ3JvdXAgZGF0YV9hY2Nlc3MgZGF0YV9hY2Nlc3M6IFJvdXRpbmVzIHRvIGFjY2VzcyBkYXRhCisgKgorICogVGhlc2Ugcm91dGluZXMgYXJlIHVzZWQgdG8gbG9jYXRlIHRoZSBkYXRhIHVzZWQgdG8gc2F0aXNmeQorICogcmVxdWVzdHMuCisgKiAKKyAqIEB7CisgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c1RhYmxlIGlzIHN1YmlkIDEgb2Ygc3RhdGlzdGljcy4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMSwgbGVuZ3RoOiA5CisgKi8KKworLyoqCisgKiBpbml0aWFsaXphdGlvbiBmb3IgZXRoZXJTdGF0c1RhYmxlIGRhdGEgYWNjZXNzCisgKgorICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZHVyaW5nIHN0YXJ0dXAgdG8gYWxsb3cgeW91IHRvCisgKiBhbGxvY2F0ZSBhbnkgcmVzb3VyY2VzIHlvdSBuZWVkIGZvciB0aGUgZGF0YSB0YWJsZS4KKyAqCisgKiBAcGFyYW0gZXRoZXJTdGF0c1RhYmxlX3JlZworICogICAgICAgIFBvaW50ZXIgdG8gZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzLgorICogQHJldHZhbCBNRkRfRVJST1IgICA6IHVucmVjb3ZlcmFibGUgZXJyb3IuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2luaXRfZGF0YShldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlZykKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luaXRfZGF0YSIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjMwMzpvOiBJbml0aWFsaXplIGV0aGVyU3RhdHNUYWJsZSBkYXRhLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfaW5pdF9kYXRhICovCisKKy8qKgorICogY29udGFpbmVyIG92ZXJ2aWV3CisgKgorICovCisKKy8qKgorICogY29udGFpbmVyIGluaXRpYWxpemF0aW9uCisgKgorICogQHBhcmFtIGNvbnRhaW5lcl9wdHJfcHRyIEEgcG9pbnRlciB0byBhIGNvbnRhaW5lciBwb2ludGVyLiBJZiB5b3UKKyAqICAgICAgICBjcmVhdGUgYSBjdXN0b20gY29udGFpbmVyLCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gcmV0dXJuIGl0CisgKiAgICAgICAgdG8gdGhlIE1GRCBoZWxwZXIuIElmIHNldCB0byBOVUxMLCB0aGUgTUZEIGhlbHBlciB3aWxsCisgKiAgICAgICAgYWxsb2NhdGUgYSBjb250YWluZXIgZm9yIHlvdS4KKyAqIEBwYXJhbSAgY2FjaGUgQSBwb2ludGVyIHRvIGEgY2FjaGUgc3RydWN0dXJlLiBZb3UgY2FuIHNldCB0aGUgdGltZW91dAorICogICAgICAgICBhbmQgb3RoZXIgY2FjaGUgZmxhZ3MgdXNpbmcgdGhpcyBwb2ludGVyLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBhdCBzdGFydHVwIHRvIGFsbG93IHlvdSB0byBjdXN0b21pemUgY2VydGFpbgorICogIGFzcGVjdHMgb2YgdGhlIGFjY2VzcyBtZXRob2QuIEZvciB0aGUgbW9zdCBwYXJ0LCBpdCBpcyBmb3IgYWR2YW5jZWQKKyAqICB1c2Vycy4gVGhlIGRlZmF1bHQgY29kZSBzaG91bGQgc3VmZmljZSBmb3IgbW9zdCBjYXNlcy4gSWYgbm8gY3VzdG9tCisgKiAgY29udGFpbmVyIGlzIGFsbG9jYXRlZCwgdGhlIE1GRCBjb2RlIHdpbGwgY3JlYXRlIG9uZSBmb3IgeW91ci4KKyAqCisgKiAgVGhpcyBpcyBhbHNvIHRoZSBwbGFjZSB0byBzZXQgdXAgY2FjaGUgYmVoYXZpb3IuIFRoZSBkZWZhdWx0LCB0bworICogIHNpbXBseSBzZXQgdGhlIGNhY2hlIHRpbWVvdXQsIHdpbGwgd29yayB3ZWxsIHdpdGggdGhlIGRlZmF1bHQKKyAqICBjb250YWluZXIuIElmIHlvdSBhcmUgdXNpbmcgYSBjdXN0b20gY29udGFpbmVyLCB5b3UgbWF5IHdhbnQgdG8KKyAqICBsb29rIGF0IHRoZSBjYWNoZSBoZWxwZXIgZG9jdW1lbnRhdGlvbiB0byBzZWUgaWYgdGhlcmUgYXJlIGFueQorICogIGZsYWdzIHlvdSB3YW50IHRvIHNldC4KKyAqCisgKiBAcmVtYXJrCisgKiAgVGhpcyB3b3VsZCBhbHNvIGJlIGEgZ29vZCBwbGFjZSB0byBkbyBhbnkgaW5pdGlhbGl6YXRpb24gbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIG9wZW5pbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgd2lsbCBzdXBwbHkgdGhlIGRhdGEsIG9wZW5pbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKiogY29udGFpbmVyX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHJfcHRyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJiYWQgY29udGFpbmVyIHBhcmFtIHRvIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEZvciBhZHZhbmNlZCB1c2VycywgeW91IGNhbiB1c2UgYSBjdXN0b20gY29udGFpbmVyLiBJZiB5b3UKKyAgICAgKiBkbyBub3QgY3JlYXRlIG9uZSwgb25lIHdpbGwgYmUgY3JlYXRlZCBmb3IgeW91LgorICAgICAqLworICAgICpjb250YWluZXJfcHRyX3B0ciA9IE5VTEw7CisKKyAgICBpZiAoTlVMTCA9PSBjYWNoZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAiYmFkIGNhY2hlIHBhcmFtIHRvIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdFxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFRPRE86MzQ1OkE6IFNldCB1cCBldGhlclN0YXRzVGFibGUgY2FjaGUgcHJvcGVydGllcy4KKyAgICAgKgorICAgICAqIEFsc28gZm9yIGFkdmFuY2VkIHVzZXJzLCB5b3UgY2FuIHNldCBwYXJhbWV0ZXJzIGZvciB0aGUKKyAgICAgKiBjYWNoZS4gRG8gbm90IGNoYW5nZSB0aGUgbWFnaWMgcG9pbnRlciwgYXMgaXQgaXMgdXNlZAorICAgICAqIGJ5IHRoZSBNRkQgaGVscGVyLiBUbyBjb21wbGV0ZWx5IGRpc2FibGUgY2FjaGluZywgc2V0CisgICAgICogY2FjaGUtPmVuYWJsZWQgdG8gMC4KKyAgICAgKi8KKyAgICBjYWNoZS0+dGltZW91dCA9IEVUSEVSU1RBVFNUQUJMRV9DQUNIRV9USU1FT1VUOyAgICAgLyogc2Vjb25kcyAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBjb250YWluZXIgc2h1dGRvd24KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyX3B0ciBBIHBvaW50ZXIgdG8gdGhlIGNvbnRhaW5lci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgYXQgc2h1dGRvd24gdG8gYWxsb3cgeW91IHRvIGN1c3RvbWl6ZSBjZXJ0YWluCisgKiAgYXNwZWN0cyBvZiB0aGUgYWNjZXNzIG1ldGhvZC4gRm9yIHRoZSBtb3N0IHBhcnQsIGl0IGlzIGZvciBhZHZhbmNlZAorICogIHVzZXJzLiBUaGUgZGVmYXVsdCBjb2RlIHNob3VsZCBzdWZmaWNlIGZvciBtb3N0IGNhc2VzLgorICoKKyAqICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBiZWZvcmUgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKCkuCisgKgorICogQHJlbWFyaworICogIFRoaXMgd291bGQgYWxzbyBiZSBhIGdvb2QgcGxhY2UgdG8gZG8gYW55IGNsZWFudXAgbmVlZGVkCisgKiAgZm9yIHlvdSBkYXRhIHNvdXJjZS4gRm9yIGV4YW1wbGUsIGNsb3NpbmcgYSBjb25uZWN0aW9uIHRvIGFub3RoZXIKKyAqICBwcm9jZXNzIHRoYXQgc3VwcGxpZWQgdGhlIGRhdGEsIGNsb3NpbmcgYSBkYXRhYmFzZSwgZXRjLgorICovCit2b2lkCitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyX3B0cikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IGNvbnRhaW5lcl9wdHIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImJhZCBwYXJhbXMgdG8gZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93blxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisvKioKKyAqIGxvYWQgaW5pdGlhbCBkYXRhCisgKgorICogVE9ETzozNTA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBkYXRhIGxvYWQKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBhbHNvIGJlIGNhbGxlZCBieSB0aGUgY2FjaGUgaGVscGVyIHRvIGxvYWQKKyAqIHRoZSBjb250YWluZXIgYWdhaW4gKGFmdGVyIHRoZSBjb250YWluZXIgZnJlZSBmdW5jdGlvbiBoYXMgYmVlbgorICogY2FsbGVkIHRvIGZyZWUgdGhlIHByZXZpb3VzIGNvbnRlbnRzKS4KKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGNvbnRhaW5lciB0byB3aGljaCBpdGVtcyBzaG91bGQgYmUgaW5zZXJ0ZWQKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9SRVNPVVJDRV9VTkFWQUlMQUJMRSA6IENhbid0IGFjY2VzcyBkYXRhIHNvdXJjZQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgICAgICAgOiBvdGhlciBlcnJvci4KKyAqCisgKiAgVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gbG9hZCB0aGUgaW5kZXgoZXMpIChhbmQgZGF0YSwgb3B0aW9uYWxseSkKKyAqICBmb3IgdGhlIGV2ZXJ5IHJvdyBpbiB0aGUgZGF0YSBzZXQuCisgKgorICogQHJlbWFyaworICogIFdoaWxlIGxvYWRpbmcgdGhlIGRhdGEsIHRoZSBvbmx5IGltcG9ydGFudCB0aGluZyBpcyB0aGUgaW5kZXhlcy4KKyAqICBJZiBhY2Nlc3MgdG8geW91ciBkYXRhIGlzIGNoZWFwL2Zhc3QgKGUuZy4geW91IGhhdmUgYSBwb2ludGVyIHRvIGEKKyAqICBzdHJ1Y3R1cmUgaW4gbWVtb3J5KSwgaXQgd291bGQgbWFrZSBzZW5zZSB0byB1cGRhdGUgdGhlIGRhdGEgaGVyZS4KKyAqICBJZiwgaG93ZXZlciwgdGhlIGFjY2Vzc2luZyB0aGUgZGF0YSBpbnZvdmxlcyBtb3JlIHdvcmsgKGUuZy4gcGFyc2luZworICogIHNvbWUgb3RoZXIgZXhpc3RpbmcgZGF0YSwgb3IgcGVmb3JtaW5nIGNhbGN1bGF0aW9ucyB0byBkZXJpdmUgdGhlIGRhdGEpLAorICogIHRoZW4geW91IGNhbiBsaW1pdCB5b3Vyc2VsZiB0byBzZXR0aW5nIHRoZSBpbmRleGVzIGFuZCBzYXZpbmcgYW55CisgKiAgaW5mb3JtYXRpb24geW91IHdpbGwgbmVlZCBsYXRlci4gVGhlbiB1c2UgdGhlIHNhdmVkIGluZm9ybWF0aW9uIGluCisgKiAgZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKCkgZm9yIHBvcHVsYXRpbmcgZGF0YS4KKyAqCisgKiBAbm90ZQorICogIElmIHlvdSBuZWVkIGNvbnNpc3RlbmN5IGJldHdlZW4gcm93cyAobGlrZSB5b3Ugd2FudCBzdGF0aXN0aWNzCisgKiAgZm9yIGVhY2ggcm93IHRvIGJlIGZyb20gdGhlIHNhbWUgdGltZSBmcmFtZSksIHlvdSBzaG91bGQgc2V0IGFsbAorICogIGRhdGEgaGVyZS4KKyAqCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICogY29udGFpbmVyKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4OworICAgIHNpemVfdCAgICAgICAgICBjb3VudCA9IDA7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzUyOk06IHwgICB8LT4gc2V0IGluZGV4ZXMgaW4gbmV3IGV0aGVyU3RhdHNUYWJsZSByb3dyZXEgY29udGV4dC4KKyAgICAgKiBkYXRhIGNvbnRleHQgd2lsbCBiZSBzZXQgZnJvbSB0aGUgcGFyYW0gKHVubGVzcyBOVUxMLAorICAgICAqICAgICAgaW4gd2hpY2ggY2FzZSBhIG5ldyBkYXRhIGNvbnRleHQgd2lsbCBiZSBhbGxvY2F0ZWQpCisgICAgICovCisKKyAgICAvKgorICAgICAqIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBpbmRleCB2YWx1ZXMKKyAgICAgKi8KKyAgICAKKyAgICAvKgorICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaAorICAgICAqLworCisgICAgbG9uZyAgICAgICAgICAgIGV0aGVyU3RhdHNJbmRleDsKKyAgICBpbnQgICAgICAgICAgICAgZmQ7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gMCwgcmV0dmFsID0gMDsKKworI2lmIGRlZmluZWQobGludXgpCisgICAgc3RydWN0IGlmbmFtZSAqbGlzdF9oZWFkID0gTlVMTCwgKnAgPSBOVUxMOworI2VuZGlmCisgICAgCisgICAgLyoKKyAgICAgKiBjcmVhdGUgc29ja2V0IGZvciBpb2N0bHMKKyAgICAgKi8KKworICAgIGZkID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOworICAgIGlmKGZkIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGNyZWF0ZSBzb2NrZXRcbiIpOworICAgICAgICByZXR1cm4gLTI7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBnZXQgdGhlIGludGVyZmFjZSBuYW1lcyBvZiB0aGUgZGV2aWNlcyBwcmVzZW50IGluIHRoZSBzeXN0ZW0sIGluIGNhc2Ugb2YgZmFpbHVyZSByZXR2YWwgc3VnZ2VzdHMgdGhlIHJlc29uIGZvciBmYWlsdXJlCisgICAgICogYW5kIGxpc3RfaGVhZCBjb250YWlucyBudWxsCisgICAgICovCisKKyNpZiBkZWZpbmVkKGxpbnV4KQorICAgIGxpc3RfaGVhZCA9IGV0aGVyc3RhdHNfaW50ZXJmYWNlX25hbWVfbGlzdF9nZXQgKGxpc3RfaGVhZCwgJnJldHZhbCk7CisKKyAgICBpZiAoIWxpc3RfaGVhZCkgeworICAgICAgICBzbm1wX2xvZyAoTE9HX0VSUiwgImFjY2VzczpldGhlclN0YXRzVGFibGUsIGVycm9yIGdldHRpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBwcmVzZW50IGluIHRoZSBzeXN0ZW1cbiIpOworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBnZXR0aW5nIHRoZSBpbnRlcmZhY2UgbmFtZXMgcHJlc2VudCBpbiB0aGUgc3lzdGVtIikpOworICAgICAgICBjbG9zZShmZCk7CisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBXYWxrIG92ZXIgdGhlIGxpc3Qgb2YgaW50ZXJmYWNlIG5hbWVzIHByZXNlbnQgaW4gdGhlIHN5c3RlbSBhbmQgcmV0cmVpdmUgdGhlIHN0YXRpc3RpY3MgCisgICAgICovCisKKyAgICBmb3IgKHAgPSBsaXN0X2hlYWQ7IHA7IHAgPSBwLT5pZm5fbmV4dCkgeworICAgICAgICBERUJVR01TR1RMKCgiYWNjZXNzOmV0aGVyU3RhdHNUYWJsZSIsICJwcm9jZXNzaW5nICclcydcbiIsIHAtPm5hbWUpKTsKKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgaW5kZXggdmlhIGlvY3RsLgorICAgICAgICAgKi8KKworICAgICAgICBldGhlclN0YXRzSW5kZXggPSAobG9uZykgZXRoZXJzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQoLTEsIHAtPm5hbWUpOworCisgICAgICAgIC8qIAorICAgICAgICAgKiAgZ2V0IHRoZSBldGhlcnN0YXRzIGNvbnRlbnRzIHBvcHVsYXRlZCwgaWYgdGhlIGRldmljZSBpcyBub3QgYW4gZXRoZXJuZXQgZGV2aWNlCisgICAgICAgICAqICB0aGUgb3BlcmF0aW9uIHdpbGwgbm90IGJlIHN1cHBvcnRlZCBhbmQgYW4gZXJyb3IgbWVzc2FnZSB3aWxsIGJlIGxvZ2dlZAorICAgICAgICAgKi8KKyAgICAgICAgCisgICAgICAgIHJvd3JlcV9jdHggPSBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eChOVUxMKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIm1lbW9yeSBhbGxvY2F0aW9uIGZhaWxlZFxuIik7CisgICAgICAgICAgICBjbG9zZShmZCk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1JFU09VUkNFX1VOQVZBSUxBQkxFOworICAgICAgICB9CisKKyAgICAgICAgaWYgKE1GRF9TVUNDRVNTICE9CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXQocm93cmVxX2N0eCwgZXRoZXJTdGF0c0luZGV4KSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJlcnJvciBzZXR0aW5nIGluZGV4IHdoaWxlIGxvYWRpbmcgIgorICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkYXRhLlxuIik7CisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjM1MjpyOiB8ICAgfC0+IHBvcHVsYXRlIGV0aGVyU3RhdHNUYWJsZSBkYXRhIGNvbnRleHQuCisgICAgICAgICAqIFBvcHVsYXRlIGRhdGEgY29udGV4dCBoZXJlLiAob3B0aW9uYWxseSwgZGVsYXkgdW50aWwgcm93IHByZXApCisgICAgICAgICAqLworICAgICAgICAvKgorICAgICAgICAgKiBub24tVFJBTlNJRU5UIGRhdGE6IG5vIG5lZWQgdG8gY29weS4gc2V0IHBvaW50ZXIgdG8gZGF0YSAKKyAgICAgICAgICovCisKKyAgICAgICAgbWVtc2V0ICgmcm93cmVxX2N0eC0+ZGF0YSwgMCwgc2l6ZW9mIChyb3dyZXFfY3R4LT5kYXRhKSk7CisgICAgICAgIHJjID0gaW50ZXJmYWNlX2lvY3RsX2V0aGVyc3RhdHNfZ2V0IChyb3dyZXFfY3R4LCBmZCwgcC0+bmFtZSk7CisKKyAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgZ2V0dGluZyB0aGUgc3RhdGlzdGljcyBmb3IgaW50ZXJmYWNlIHwlc3wgIgorICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkYXRhLCBvcGVyYXRpb24gbWlnaHQgbm90IGJlIHN1cHBvcnRlZFxuIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogaW5zZXJ0IGludG8gdGFibGUgY29udGFpbmVyCisgICAgICAgICAqLworICAgICAgICByYyA9IENPTlRBSU5FUl9JTlNFUlQoY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICAgICAgaWYgKHJjIDwgMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFjY2VzczpldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgaW5zZXJ0aW5nIHwlc3wgIiwgcC0+bmFtZSkpOworICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgKytjb3VudDsKKyAgICB9CisKKyAgICBjbG9zZShmZCk7CisKKyAgICAvKgorICAgICAqIGZyZWUgdGhlIGludGVyZmFjZSBuYW1lcyBsaXN0IAorICAgICAqLworCisgICAgaWYgKCAoZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUobGlzdF9oZWFkKSkgPCAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlLCBlcnJvciBmcmVlaW5nIHRoZSBpbnRlcmZhY2UgbmFtZSBsaXN0IFxuIik7CisgICAgICAgIERFQlVHTVNHVEwoKCJhY2Nlc3M6ZXRoZXJTdGF0c1RhYmxlIiwgImVycm9yIGZyZWVpbmcgdGhlIGludGVyZmFjZSBuYW1lIGxpc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisjZW5kaWYKKyAgICAKKyAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgImluc2VydGVkICVkIHJlY29yZHNcbiIsIGNvdW50KSk7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkICovCisKKworLyoqCisgKiBjb250YWluZXIgY2xlYW4gdXAKKyAqCisgKiBAcGFyYW0gY29udGFpbmVyIGNvbnRhaW5lciB3aXRoIGFsbCBjdXJyZW50IGl0ZW1zCisgKgorICogIFRoaXMgb3B0aW9uYWwgY2FsbGJhY2sgaXMgY2FsbGVkIHByaW9yIHRvIGFsbAorICogIGl0ZW0ncyBiZWluZyByZW1vdmVkIGZyb20gdGhlIGNvbnRhaW5lci4gSWYgeW91CisgKiAgbmVlZCB0byBkbyBhbnkgcHJvY2Vzc2luZyBiZWZvcmUgdGhhdCwgZG8gaXQgaGVyZS4KKyAqCisgKiBAbm90ZQorICogIFRoZSBNRkQgaGVscGVyIHdpbGwgdGFrZSBjYXJlIG9mIHJlbGVhc2luZyBhbGwgdGhlIHJvdyBjb250ZXh0cy4KKyAqCisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIFRPRE86MzgwOk06IEZyZWUgZXRoZXJTdGF0c1RhYmxlIGNvbnRhaW5lciBkYXRhLgorICAgICAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2ZyZWUgKi8KKworLyoqCisgKiBwcmVwYXJlIHJvdyBmb3IgcHJvY2Vzc2luZy4KKyAqCisgKiAgV2hlbiB0aGUgYWdlbnQgaGFzIGxvY2F0ZWQgdGhlIHJvdyBmb3IgYSByZXF1ZXN0LCB0aGlzIGZ1bmN0aW9uIGlzCisgKiAgY2FsbGVkIHRvIHByZXBhcmUgdGhlIHJvdyBmb3IgcHJvY2Vzc2luZy4gSWYgeW91IGZ1bGx5IHBvcHVsYXRlZAorICogIHRoZSBkYXRhIGNvbnRleHQgZHVyaW5nIHRoZSBpbmRleCBzZXR1cCBwaGFzZSwgeW91IG1heSBub3QgbmVlZCB0bworICogIGRvIGFueXRoaW5nLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4IHBvaW50ZXIgdG8gYSBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjM5MDpvOiBQcmVwYXJlIHJvdyBmb3IgcmVxdWVzdC4KKyAgICAgKiBJZiBwb3B1bGF0aW5nIHJvdyBkYXRhIHdhcyBkZWxheWVkLCB0aGlzIGlzIHRoZSBwbGFjZSB0bworICAgICAqIGZpbGwgaW4gdGhlIHJvdyBmb3IgdGhpcyByZXF1ZXN0LgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcm93X3ByZXAgKi8KKworLyoKKyAqIFRPRE86NDIwOnI6IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgaW5kZXggdmFsaWRhdGlvbi4KKyAqLworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c0luZGV4CisgKiBldGhlclN0YXRzSW5kZXggaXMgc3ViaWQgMSBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMQorICogRGVzY3JpcHRpb246CitUaGUgdmFsdWUgb2YgdGhpcyBvYmplY3QgdW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzCisgICAgICAgIGV0aGVyU3RhdHMgZW50cnkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDEgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKiBSYW5nZXM6ICAxIC0gNjU1MzU7CisgKgorICogSXRzIHN5bnRheCBpcyBJTlRFR0VSMzIgKGJhc2VkIG9uIHBlcmx0eXBlIElOVEVHRVIzMikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAobG9uZykKKyAqLworLyoqCisgKiBjaGVjayB2YWxpZGl0eSBvZiBldGhlclN0YXRzSW5kZXggaW5kZXggcG9ydGlvbgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICA6IHRoZSBpbmNvbWluZyB2YWx1ZSBpcyBsZWdhbAorICogQHJldHZhbCBNRkRfRVJST1IgICAgIDogdGhlIGluY29taW5nIHZhbHVlIGlzIE5PVCBsZWdhbAorICoKKyAqIEBub3RlIHRoaXMgaXMgbm90IHRoZSBwbGFjZSB0byBkbyBhbnkgY2hlY2tzIGZvciB0aGUgc2FuaXR5CisgKiAgICAgICBvZiBtdWx0aXBsZSBpbmRleGVzLiBUaG9zZSB0eXBlcyBvZiBjaGVja3Mgc2hvdWxkIGJlIGRvbmUgaW4gdGhlCisgKiAgICAgICBldGhlclN0YXRzVGFibGVfdmFsaWRhdGVfaW5kZXgoKSBmdW5jdGlvbi4KKyAqCisgKiBAbm90ZSBBbHNvIGtlZXAgaW4gbWluZCB0aGF0IGlmIHRoZSBpbmRleCByZWZlcnMgdG8gYSByb3cgaW4gdGhpcyBvcgorICogICAgICAgc29tZSBvdGhlciB0YWJsZSwgeW91IGNhbid0IGNoZWNrIGZvciB0aGF0IHJvdyBoZXJlIHRvIG1ha2UKKyAqICAgICAgIGRlY2lzaW9ucywgc2luY2UgdGhhdCByb3cgbWlnaHQgbm90IGJlIGNyZWF0ZWQgeWV0LCBidXQgbWF5CisgKiAgICAgICBiZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QuIElmIHlvdSBoYXZlCisgKiAgICAgICBzdWNoIGNoZWNrcywgdGhleSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgY2hlY2tfZGVwZW5kZW5jaWVzCisgKiAgICAgICBmdW5jdGlvbiwgYmVjYXVzZSBhbnkgbmV3L2RlbGV0ZWQvY2hhbmdlZCByb3dzIHNob3VsZCBiZQorICogICAgICAgYXZhaWxhYmxlIHRoZW4uCisgKgorICogVGhlIGZvbGxvd2luZyBjaGVja3MgaGF2ZSBhbHJlYWR5IGJlZW4gZG9uZSBmb3IgeW91OgorICogICAgVGhlIHZhbHVlIGlzIGluIChvbmUgb2YpIHRoZSByYW5nZSBzZXQocyk6ICAxIC0gNjU1MzUKKyAqCisgKiBJZiB0aGVyZSBhIG5vIG90aGVyIGNoZWNrcyB5b3UgbmVlZCB0byBkbywgc2ltcGx5IHJldHVybiBNRkRfU1VDQ0VTUy4KKyAqLworaW50CitldGhlclN0YXRzSW5kZXhfY2hlY2tfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzSW5kZXhfY2hlY2tfaW5kZXgiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDI2Ok06IHwtPiBDaGVjayBldGhlclN0YXRzVGFibGUgaW5kZXggZXRoZXJTdGF0c0luZGV4LgorICAgICAqIGNoZWNrIHRoYXQgaW5kZXggdmFsdWUgaW4gdGhlIHRhYmxlIGNvbnRleHQgaXMgbGVnYWwuCisgICAgICogKHJvd3JlcV9jdHgtPnRibF9pbmRleC5ldGhlclN0YXRzSW5kZXgpCisgICAgICovCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7ICAgICAgICAgLyogZXRoZXJTdGF0c0luZGV4IGluZGV4IG9rICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNJbmRleF9jaGVja19pbmRleCAqLworCisvKioKKyAqIHZlcmlmeSBzcGVjaWZpZWQgaW5kZXggaXMgdmFsaWQuCisgKgorICogVGhpcyBjaGVjayBpcyBpbmRlcGVuZGVudCBvZiB3aGV0aGVyIG9yIG5vdCB0aGUgdmFsdWVzIHNwZWNpZmllZCBmb3IKKyAqIHRoZSBjb2x1bW5zIG9mIHRoZSBuZXcgcm93IGFyZSB2YWxpZC4gQ29sdW1uIHZhbHVlcyBhbmQgcm93IGNvbnNpc3RlbmN5CisgKiB3aWxsIGJlIGNoZWNrZWQgbGF0ZXIuIEF0IHRoaXMgcG9pbnQsIG9ubHkgdGhlIGluZGV4IHZhbHVlcyBzaG91bGQgYmUKKyAqIGNoZWNrZWQuCisgKgorICogQWxsIG9mIHRoZSBpbmRpdmlkdWFsIGluZGV4IHZhbGlkYXRpb24gZnVuY3Rpb25zIGhhdmUgYmVlbiBjYWxsZWQsIHNvIHRoaXMKKyAqIGlzIHRoZSBwbGFjZSB0byBtYWtlIHN1cmUgdGhleSBhcmUgdmFsaWQgYXMgYSB3aG9sZSB3aGVuIGNvbWJpbmVkLiBJZgorICogeW91IG9ubHkgaGF2ZSBvbmUgaW5kZXgsIHRoZW4geW91IHByb2JhYmx5IGRvbid0IG5lZWQgdG8gZG8gYW55dGhpbmcgZWxzZQorICogaGVyZS4KKyAqIAorICogQG5vdGUgS2VlcCBpbiBtaW5kIHRoYXQgaWYgdGhlIGluZGV4ZXMgcmVmZXIgdG8gYSByb3cgaW4gdGhpcyBvcgorICogICAgICAgc29tZSBvdGhlciB0YWJsZSwgeW91IGNhbid0IGNoZWNrIGZvciB0aGF0IHJvdyBoZXJlIHRvIG1ha2UKKyAqICAgICAgIGRlY2lzaW9ucywgc2luY2UgdGhhdCByb3cgbWlnaHQgbm90IGJlIGNyZWF0ZWQgeWV0LCBidXQgbWF5CisgKiAgICAgICBiZSBjcmVhdGVkIGR1cmluZyB0aGUgcHJvY2Vzc2luZyB0aGlzIHJlcXVlc3QuIElmIHlvdSBoYXZlCisgKiAgICAgICBzdWNoIGNoZWNrcywgdGhleSBzaG91bGQgYmUgZG9uZSBpbiB0aGUgY2hlY2tfZGVwZW5kZW5jaWVzCisgKiAgICAgICBmdW5jdGlvbiwgYmVjYXVzZSBhbnkgbmV3L2RlbGV0ZWQvY2hhbmdlZCByb3dzIHNob3VsZCBiZQorICogICAgICAgYXZhaWxhYmxlIHRoZW4uCisgKgorICoKKyAqIEBwYXJhbSBldGhlclN0YXRzVGFibGVfcmVnCisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlciByZWdpc3RyYXRpb24gZGF0YQorICogQHBhcmFtIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0NBTk5PVF9DUkVBVEVfTk9XICA6IGluZGV4IG5vdCB2YWxpZCByaWdodCBub3cKKyAqIEByZXR2YWwgTUZEX0NBTk5PVF9DUkVBVEVfRVZFUiA6IGluZGV4IG5ldmVyIHZhbGlkCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3ZhbGlkYXRlX2luZGV4KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV92YWxpZGF0ZV9pbmRleCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDMwOk06IHwtPiBWYWxpZGF0ZSBwb3RlbnRpYWwgZXRoZXJTdGF0c1RhYmxlIGluZGV4LgorICAgICAqLworICAgIGlmICgxKSB7CisgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiaW52YWxpZCBpbmRleCBmb3IgYSBuZXcgcm93IGluIHRoZSAiCisgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGUgdGFibGUuXG4iKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogZGV0ZXJtaW5lIGZhaWx1cmUgdHlwZS4KKyAgICAgICAgICoKKyAgICAgICAgICogSWYgdGhlIGluZGV4IGNvdWxkIG5vdCBldmVyIGJlIGNyZWF0ZWQsIHJldHVybiBNRkRfTk9UX0VWRVIKKyAgICAgICAgICogSWYgdGhlIGluZGV4IGNhbiBub3QgYmUgY3JlYXRlZCB1bmRlciB0aGUgcHJlc2VudCBjaXJjdW1zdGFuY2VzCisgICAgICAgICAqIChldmVuIHRob3VnaCBpdCBjb3VsZCBiZSBjcmVhdGVkIHVuZGVyIG90aGVyIGNpcmN1bXN0YW5jZXMpLAorICAgICAgICAgKiByZXR1cm4gTUZEX05PVF9OT1cuCisgICAgICAgICAqLworICAgICAgICBpZiAoMCkgeworICAgICAgICAgICAgcmV0dXJuIE1GRF9DQU5OT1RfQ1JFQVRFX0VWRVI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gTUZEX0NBTk5PVF9DUkVBVEVfTk9XOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdmFsaWRhdGVfaW5kZXggKi8KKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfYWNjZXNzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA3MDBmNAotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9hY2Nlc3MuaApAQCAtMCwwICsxLDgwIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNDE3MCAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisjaWZuZGVmIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0FDQ0VTU19ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0FDQ0VTU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworCisgICAgLyoKKyAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICAgICAqLworCisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2luaXRfZGF0YShldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBldGhlclN0YXRzVGFibGVfcmVnKTsKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjE4MDpvOiBSZXZpZXcgZXRoZXJTdGF0c1RhYmxlIGNhY2hlIHRpbWVvdXQuCisgICAgICogVGhlIG51bWJlciBvZiBzZWNvbmRzIGJlZm9yZSB0aGUgY2FjaGUgdGltZXMgb3V0CisgICAgICovCisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9DQUNIRV9USU1FT1VUICAgNjAKKworICAgIHZvaWQgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQobmV0c25tcF9jb250YWluZXIgKioKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcl9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWNoZSAqIGNhY2hlKTsKKyAgICB2b2lkICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93bihuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyX3B0cik7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lcik7CisgICAgdm9pZCAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZShuZXRzbm1wX2NvbnRhaW5lciAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9jYWNoZV9sb2FkKG5ldHNubXBfY29udGFpbmVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyKTsKKyAgICB2b2lkICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NhY2hlX2ZyZWUobmV0c25tcF9jb250YWluZXIgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250YWluZXIpOworCisjZGVmaW5lIE1BWF9MSU5FX1NJWkUgMjU2CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV92YWxpZGF0ZV9pbmRleChldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0luZGV4X2NoZWNrX2luZGV4KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7ICAgICAgIC8qIGludGVybmFsICovCisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogRVRIRVJTVEFUU1RBQkxFX0RBVEFfQUNDRVNTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmE1MWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX2dldC5jCkBAIC0wLDAgKzEsMTQxMSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkIAorICoKKyAqICRJZDokCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJldGhlclN0YXRzVGFibGUuaCIKKworCisvKiogQGRlZmdyb3VwIGRhdGFfZ2V0IGRhdGFfZ2V0OiBSb3V0aW5lcyB0byBnZXQgZGF0YQorICoKKyAqIFRPRE86MjMwOk06IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgZ2V0IHJvdXRpbmVzLgorICogVE9ETzoyNDA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBtYXBwaW5nIHJvdXRpbmVzIChpZiBhbnkpLgorICoKKyAqIFRoZXNlIHJvdXRpbmUgYXJlIHVzZWQgdG8gZ2V0IHRoZSB2YWx1ZSBmb3IgaW5kaXZpZHVhbCBvYmplY3RzLiBUaGUKKyAqIHJvdyBjb250ZXh0IGlzIHBhc3NlZCwgYWxvbmcgd2l0aCBhIHBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3aGVyZSB0aGUKKyAqIHZhbHVlIHNob3VsZCBiZSBjb3BpZWQuCisgKgorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAqLworCisvKgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiAqIFRPRE86MjAwOnI6IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgZGF0YSBjb250ZXh0IGZ1bmN0aW9ucy4KKyAqLworCisKKy8qKgorICogc2V0IG1pYiBpbmRleChlcykKKyAqCisgKiBAcGFyYW0gdGJsX2lkeCBtaWIgaW5kZXggc3RydWN0dXJlCisgKiBAcGFyYW0gZXRoZXJTdGF0c0luZGV4X3ZhbAorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgIDogc3VjY2Vzcy4KKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgIDogb3RoZXIgZXJyb3IuCisgKgorICogQHJlbWFyaworICogIFRoaXMgY29udmVuaWVuY2UgZnVuY3Rpb24gaXMgdXNlZnVsIGZvciBzZXR0aW5nIGFsbCB0aGUgTUlCIGluZGV4CisgKiAgY29tcG9uZW50cyB3aXRoIGEgc2luZ2xlIGZ1bmN0aW9uIGNhbGwuIEl0IGlzIGFzc3VtZSB0aGF0IHRoZSBDIHZhbHVlcworICogIGhhdmUgYWxyZWFkeSBiZWVuIG1hcHBlZCBmcm9tIHRoZWlyIG5hdGl2ZS9yYXdmb3JtYXQgdG8gdGhlIE1JQiBmb3JtYXQuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCAqIHRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGV0aGVyU3RhdHNJbmRleF92YWwpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4IiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2ggCisgICAgICovCisgICAgdGJsX2lkeC0+ZXRoZXJTdGF0c0luZGV4ID0gZXRoZXJTdGF0c0luZGV4X3ZhbDsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogc2V0IHJvdyBjb250ZXh0IGluZGV4ZXMKKyAqCisgKiBAcGFyYW0gcmVxcmVxX2N0eCB0aGUgcm93IGNvbnRleHQgdGhhdCBuZWVkcyB1cGRhdGVkIGluZGV4ZXMKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICA6IHN1Y2Nlc3MuCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICA6IG90aGVyIGVycm9yLgorICoKKyAqIEByZW1hcmsKKyAqICBUaGlzIGZ1bmN0aW9uIHNldHMgdGhlIG1pYiBpbmRleHMsIHRoZW4gdXBkYXRlcyB0aGUgb2lkIGluZGV4cworICogIGZyb20gdGhlIG1pYiBpbmRleC4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgZXRoZXJTdGF0c0luZGV4X3ZhbCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0KKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0X3RibF9pZHgoJnJvd3JlcV9jdHgtPnRibF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNJbmRleF92YWwpKQorICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworCisgICAgLyoKKyAgICAgKiBjb252ZXJ0IG1pYiBpbmRleCB0byBvaWQgaW5kZXgKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5vaWRfaWR4LmxlbiA9IHNpemVvZihyb3dyZXFfY3R4LT5vaWRfdG1wKSAvIHNpemVvZihvaWQpOworICAgIGlmICgwICE9IGV0aGVyU3RhdHNUYWJsZV9pbmRleF90b19vaWQoJnJvd3JlcV9jdHgtPm9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcm93cmVxX2N0eC0+dGJsX2lkeCkpIHsKKyAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9pbmRleGVzX3NldCAqLworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNEYXRhU291cmNlCisgKiBldGhlclN0YXRzRGF0YVNvdXJjZSBpcyBzdWJpZCAyIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMgorICogRGVzY3JpcHRpb246CitUaGlzIG9iamVjdCBpZGVudGlmaWVzIHRoZSBzb3VyY2Ugb2YgdGhlIGRhdGEgdGhhdAorICAgICAgICB0aGlzIGV0aGVyU3RhdHMgZW50cnkgaXMgY29uZmlndXJlZCB0byBhbmFseXplLiAgVGhpcworICAgICAgICBzb3VyY2UgY2FuIGJlIGFueSBldGhlcm5ldCBpbnRlcmZhY2Ugb24gdGhpcyBkZXZpY2UuCisgICAgICAgIEluIG9yZGVyIHRvIGlkZW50aWZ5IGEgcGFydGljdWxhciBpbnRlcmZhY2UsIHRoaXMgb2JqZWN0CisgICAgICAgIHNoYWxsIGlkZW50aWZ5IHRoZSBpbnN0YW5jZSBvZiB0aGUgaWZJbmRleCBvYmplY3QsCisgICAgICAgIGRlZmluZWQgaW4gUkZDIDIyMzMgWzE3XSwgZm9yIHRoZSBkZXNpcmVkIGludGVyZmFjZS4KKyAgICAgICAgRm9yIGV4YW1wbGUsIGlmIGFuIGVudHJ5IHdlcmUgdG8gcmVjZWl2ZSBkYXRhIGZyb20KKyAgICAgICAgaW50ZXJmYWNlICMxLCB0aGlzIG9iamVjdCB3b3VsZCBiZSBzZXQgdG8gaWZJbmRleC4xLgorCisgICAgICAgIFRoZSBzdGF0aXN0aWNzIGluIHRoaXMgZ3JvdXAgcmVmbGVjdCBhbGwgcGFja2V0cworICAgICAgICBvbiB0aGUgbG9jYWwgbmV0d29yayBzZWdtZW50IGF0dGFjaGVkIHRvIHRoZSBpZGVudGlmaWVkCisgICAgICAgIGludGVyZmFjZS4KKworICAgICAgICBBbiBhZ2VudCBtYXkgb3IgbWF5IG5vdCBiZSBhYmxlIHRvIHRlbGwgaWYgZnVuZGFtZW50YWwKKyAgICAgICAgY2hhbmdlcyB0byB0aGUgbWVkaWEgb2YgdGhlIGludGVyZmFjZSBoYXZlIG9jY3VycmVkIGFuZAorICAgICAgICBuZWNlc3NpdGF0ZSBhbiBpbnZhbGlkYXRpb24gb2YgdGhpcyBlbnRyeS4gIEZvciBleGFtcGxlLCBhCisgICAgICAgIGhvdC1wbHVnZ2FibGUgZXRoZXJuZXQgY2FyZCBjb3VsZCBiZSBwdWxsZWQgb3V0IGFuZCByZXBsYWNlZAorICAgICAgICBieSBhIHRva2VuLXJpbmcgY2FyZC4gIEluIHN1Y2ggYSBjYXNlLCBpZiB0aGUgYWdlbnQgaGFzIHN1Y2gKKyAgICAgICAga25vd2xlZGdlIG9mIHRoZSBjaGFuZ2UsIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgaXQKKyAgICAgICAgaW52YWxpZGF0ZSB0aGlzIGVudHJ5LgorCisgICAgICAgIFRoaXMgb2JqZWN0IG1heSBub3QgYmUgbW9kaWZpZWQgaWYgdGhlIGFzc29jaWF0ZWQKKyAgICAgICAgZXRoZXJTdGF0c1N0YXR1cyBvYmplY3QgaXMgZXF1YWwgdG8gdmFsaWQoMSkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBPQkpFQ1RJRCAoYmFzZWQgb24gcGVybHR5cGUgT0JKRUNUSUQpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fT0JKRUNUX0lELiBUaGUgQyB0eXBlIGRlY2wgaXMgb2lkIChvaWQpCisgKiBUaGlzIGRhdGEgdHlwZSByZXF1aXJlcyBhIGxlbmd0aC4KKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzRGF0YVNvdXJjZSBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIG9pZCB2YXJpYWJsZQorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gYSBzaXplX3QuIE9uIGVudHJ5LCBpdCB3aWxsIGNvbnRhaW4gdGhlIHNpemUgKGluIGJ5dGVzKQorICogICAgICAgIHBvaW50ZWQgdG8gYnkgZXRoZXJTdGF0c0RhdGFTb3VyY2UuCisgKiAgICAgICAgT24gZXhpdCwgdGhpcyB2YWx1ZSBzaG91bGQgY29udGFpbiB0aGUgZGF0YSBzaXplIChpbiBieXRlcykuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyoKKyAqIEBub3RlIElmIHlvdSBuZWVkIG1vcmUgdGhhbiAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cikgYnl0ZXMgb2YgbWVtb3J5LAorICogICAgICAgYWxsb2NhdGUgaXQgdXNpbmcgbWFsbG9jKCkgYW5kIHVwZGF0ZSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0ci4KKyAqICAgICAgIDxiPkRPIE5PVDwvYj4gZnJlZSB0aGUgcHJldmlvdXMgcG9pbnRlci4KKyAqICAgICAgIFRoZSBNRkQgaGVscGVyIHdpbGwgcmVsZWFzZSB0aGUgbWVtb3J5IHlvdSBhbGxvY2F0ZS4KKyAqCisgKiBAcmVtYXJrIElmIHlvdSBjYWxsIHRoaXMgZnVuY3Rpb24geW91cnNlbGYsIHlvdSBhcmUgcmVzcG9uc2libGUKKyAqICAgICAgICAgZm9yIGNoZWNraW5nIGlmIHRoZSBwb2ludGVyIGNoYW5nZWQsIGFuZCBmcmVlaW5nIGFueQorICogICAgICAgICBwcmV2aW91c2x5IGFsbG9jYXRlZCBtZW1vcnkuIChOb3QgbmVjZXNzYXJ5IGlmIHlvdSBwYXNzCisgKiAgICAgICAgIGluIGEgcG9pbnRlciB0byBzdGF0aWMgbWVtb3J5LCBvYnZpb3VzbHkuKQorICovCitpbnQKK2V0aGVyU3RhdHNEYXRhU291cmNlX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICoqIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW5fcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciBhbmQgZW5vdWdoIHN0b3JhZ2UgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoTlVMTCAhPSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0cikKKyAgICAgICAgICAgICAgICAgICAmJiAoTlVMTCAhPSAqZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9wdHIpKTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRGF0YVNvdXJjZV9nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzRGF0YVNvdXJjZSBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9wdHIgKSBkYXRhIGFuZCAoKiBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbl9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAvKgorICAgICAqIG1ha2Ugc3VyZSB0aGVyZSBpcyBlbm91Z2ggc3BhY2UgZm9yIGV0aGVyU3RhdHNEYXRhU291cmNlIGRhdGEKKyAgICAgKi8KKyAgICBpZiAoKE5VTEwgPT0gKCpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0cikpIHx8CisgICAgICAgICgoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cikgPAorICAgICAgICAgKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBhbGxvY2F0ZSBzcGFjZSBmb3IgZXRoZXJTdGF0c0RhdGFTb3VyY2UgZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgKCpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0cikgPQorICAgICAgICAgICAgbWFsbG9jKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpOworICAgICAgICBpZiAoTlVMTCA9PSAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfcHRyKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImNvdWxkIG5vdCBhbGxvY2F0ZSBtZW1vcnlcbiIpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKyAgICAoKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiAqCisgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlWzBdKTsKKyAgICBtZW1jcHkoKCpldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0ciksCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuICoKKyAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2VbMF0pKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0RhdGFTb3VyY2VfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNEcm9wRXZlbnRzCisgKiBldGhlclN0YXRzRHJvcEV2ZW50cyBpcyBzdWJpZCAzIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4zCisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZXZlbnRzIGluIHdoaWNoIHBhY2tldHMKKyAgICAgICAgd2VyZSBkcm9wcGVkIGJ5IHRoZSBwcm9iZSBkdWUgdG8gbGFjayBvZiByZXNvdXJjZXMuCisgICAgICAgIE5vdGUgdGhhdCB0aGlzIG51bWJlciBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIG51bWJlciBvZgorICAgICAgICBwYWNrZXRzIGRyb3BwZWQ7IGl0IGlzIGp1c3QgdGhlIG51bWJlciBvZiB0aW1lcyB0aGlzCisgICAgICAgIGNvbmRpdGlvbiBoYXMgYmVlbiBkZXRlY3RlZC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNEcm9wRXZlbnRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNEcm9wRXZlbnRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0Ryb3BFdmVudHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0Ryb3BFdmVudHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0Ryb3BFdmVudHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRHJvcEV2ZW50czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0Ryb3BFdmVudHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNPY3RldHMKKyAqIGV0aGVyU3RhdHNPY3RldHMgaXMgc3ViaWQgNCBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuNAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIG9jdGV0cyBvZiBkYXRhIChpbmNsdWRpbmcKKyAgICAgICAgdGhvc2UgaW4gYmFkIHBhY2tldHMpIHJlY2VpdmVkIG9uIHRoZQorICAgICAgICBuZXR3b3JrIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcKKyAgICAgICAgRkNTIG9jdGV0cykuCisKKyAgICAgICAgVGhpcyBvYmplY3QgY2FuIGJlIHVzZWQgYXMgYSByZWFzb25hYmxlIGVzdGltYXRlIG9mCisgICAgICAgIDEwLU1lZ2FiaXQgZXRoZXJuZXQgdXRpbGl6YXRpb24uICBJZiBncmVhdGVyIHByZWNpc2lvbiBpcworICAgICAgICBkZXNpcmVkLCB0aGUgZXRoZXJTdGF0c1BrdHMgYW5kIGV0aGVyU3RhdHNPY3RldHMgb2JqZWN0cworICAgICAgICBzaG91bGQgYmUgc2FtcGxlZCBiZWZvcmUgYW5kIGFmdGVyIGEgY29tbW9uIGludGVydmFsLiAgVGhlCisgICAgICAgIGRpZmZlcmVuY2VzIGluIHRoZSBzYW1wbGVkIHZhbHVlcyBhcmUgUGt0cyBhbmQgT2N0ZXRzLAorICAgICAgICByZXNwZWN0aXZlbHksIGFuZCB0aGUgbnVtYmVyIG9mIHNlY29uZHMgaW4gdGhlIGludGVydmFsIGlzCisgICAgICAgIEludGVydmFsLiAgVGhlc2UgdmFsdWVzIGFyZSB1c2VkIHRvIGNhbGN1bGF0ZSB0aGUgVXRpbGl6YXRpb24KKyAgICAgICAgYXMgZm9sbG93czoKKworICAgICAgICAgICAgICAgICAgICAgICAgIFBrdHMgKiAoOS42ICsgNi40KSArIChPY3RldHMgKiAuOCkKKyAgICAgICAgIFV0aWxpemF0aW9uID0gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZXJ2YWwgKiAxMCwwMDAKKworICAgICAgICBUaGUgcmVzdWx0IG9mIHRoaXMgZXF1YXRpb24gaXMgdGhlIHZhbHVlIFV0aWxpemF0aW9uIHdoaWNoCisgICAgICAgIGlzIHRoZSBwZXJjZW50IHV0aWxpemF0aW9uIG9mIHRoZSBldGhlcm5ldCBzZWdtZW50IG9uIGEKKyAgICAgICAgc2NhbGUgb2YgMCB0byAxMDAgcGVyY2VudC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c09jdGV0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzT2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNPY3RldHNfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNQa3RzCisgKiBldGhlclN0YXRzUGt0cyBpcyBzdWJpZCA1IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS41CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgcGFja2V0cyAoaW5jbHVkaW5nIGJhZCBwYWNrZXRzLAorICAgICAgICBicm9hZGNhc3QgcGFja2V0cywgYW5kIG11bHRpY2FzdCBwYWNrZXRzKSByZWNlaXZlZC4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c1BrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0c192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzQnJvYWRjYXN0UGt0cworICogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMgaXMgc3ViaWQgNiBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuNgorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIGdvb2QgcGFja2V0cyByZWNlaXZlZCB0aGF0IHdlcmUKKyAgICAgICAgZGlyZWN0ZWQgdG8gdGhlIGJyb2FkY2FzdCBhZGRyZXNzLiAgTm90ZSB0aGF0IHRoaXMKKyAgICAgICAgZG9lcyBub3QgaW5jbHVkZSBtdWx0aWNhc3QgcGFja2V0cy4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzQnJvYWRjYXN0UGt0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzCisgKiBldGhlclN0YXRzTXVsdGljYXN0UGt0cyBpcyBzdWJpZCA3IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS43CisgKiBEZXNjcmlwdGlvbjoKK1RoZSB0b3RhbCBudW1iZXIgb2YgZ29vZCBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorICAgICAgICBkaXJlY3RlZCB0byBhIG11bHRpY2FzdCBhZGRyZXNzLiAgTm90ZSB0aGF0IHRoaXMgbnVtYmVyCisgICAgICAgIGRvZXMgbm90IGluY2x1ZGUgcGFja2V0cyBkaXJlY3RlZCB0byB0aGUgYnJvYWRjYXN0CisKKyAgICAgICAgYWRkcmVzcy4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c011bHRpY2FzdFBrdHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzTXVsdGljYXN0UGt0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycworICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzIGlzIHN1YmlkIDggb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjgKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHRoYXQKKyAgICAgICAgaGFkIGEgbGVuZ3RoIChleGNsdWRpbmcgZnJhbWluZyBiaXRzLCBidXQKKyAgICAgICAgaW5jbHVkaW5nIEZDUyBvY3RldHMpIG9mIGJldHdlZW4gNjQgYW5kIDE1MTgKKyAgICAgICAgb2N0ZXRzLCBpbmNsdXNpdmUsIGJ1dCBoYWQgZWl0aGVyIGEgYmFkCisgICAgICAgIEZyYW1lIENoZWNrIFNlcXVlbmNlIChGQ1MpIHdpdGggYW4gaW50ZWdyYWwKKyAgICAgICAgbnVtYmVyIG9mIG9jdGV0cyAoRkNTIEVycm9yKSBvciBhIGJhZCBGQ1Mgd2l0aAorICAgICAgICBhIG5vbi1pbnRlZ3JhbCBudW1iZXIgb2Ygb2N0ZXRzIChBbGlnbm1lbnQgRXJyb3IpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMKKyAqIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzIGlzIHN1YmlkIDkgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjkKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorICAgICAgICBsZXNzIHRoYW4gNjQgb2N0ZXRzIGxvbmcgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMsCisgICAgICAgIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykgYW5kIHdlcmUgb3RoZXJ3aXNlIHdlbGwKKyAgICAgICAgZm9ybWVkLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzVW5kZXJzaXplUGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVW5kZXJzaXplUGt0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzVW5kZXJzaXplUGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNVbmRlcnNpemVQa3RzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVW5kZXJzaXplUGt0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c092ZXJzaXplUGt0cworICogZXRoZXJTdGF0c092ZXJzaXplUGt0cyBpcyBzdWJpZCAxMCBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTAKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIHJlY2VpdmVkIHRoYXQgd2VyZQorICAgICAgICBsb25nZXIgdGhhbiAxNTE4IG9jdGV0cyAoZXhjbHVkaW5nIGZyYW1pbmcgYml0cywKKyAgICAgICAgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKSBhbmQgd2VyZSBvdGhlcndpc2UKKyAgICAgICAgd2VsbCBmb3JtZWQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT3ZlcnNpemVQa3RzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c092ZXJzaXplUGt0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c092ZXJzaXplUGt0cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3ZlcnNpemVQa3RzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzRnJhZ21lbnRzCisgKiBldGhlclN0YXRzRnJhZ21lbnRzIGlzIHN1YmlkIDExIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xMQorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlIGxlc3MgdGhhbgorICAgICAgICA2NCBvY3RldHMgaW4gbGVuZ3RoIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcKKyAgICAgICAgRkNTIG9jdGV0cykgYW5kIGhhZCBlaXRoZXIgYSBiYWQgRnJhbWUgQ2hlY2sgU2VxdWVuY2UKKyAgICAgICAgKEZDUykgd2l0aCBhbiBpbnRlZ3JhbCBudW1iZXIgb2Ygb2N0ZXRzIChGQ1MgRXJyb3IpIG9yIGEKKyAgICAgICAgYmFkIEZDUyB3aXRoIGEgbm9uLWludGVncmFsIG51bWJlciBvZiBvY3RldHMgKEFsaWdubWVudAorICAgICAgICBFcnJvcikuCisKKyAgICAgICAgTm90ZSB0aGF0IGl0IGlzIGVudGlyZWx5IG5vcm1hbCBmb3IgZXRoZXJTdGF0c0ZyYWdtZW50cyB0bworICAgICAgICBpbmNyZW1lbnQuICBUaGlzIGlzIGJlY2F1c2UgaXQgY291bnRzIGJvdGggcnVudHMgKHdoaWNoIGFyZQorICAgICAgICBub3JtYWwgb2NjdXJyZW5jZXMgZHVlIHRvIGNvbGxpc2lvbnMpIGFuZCBub2lzZSBoaXRzLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c0ZyYWdtZW50cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNGcmFnbWVudHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRnJhZ21lbnRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNGcmFnbWVudHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c0ZyYWdtZW50c192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0ZyYWdtZW50czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0ZyYWdtZW50c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c0phYmJlcnMKKyAqIGV0aGVyU3RhdHNKYWJiZXJzIGlzIHN1YmlkIDEyIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xMgorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgcmVjZWl2ZWQgdGhhdCB3ZXJlCisgICAgICAgIGxvbmdlciB0aGFuIDE1MTggb2N0ZXRzIChleGNsdWRpbmcgZnJhbWluZyBiaXRzLAorICAgICAgICBidXQgaW5jbHVkaW5nIEZDUyBvY3RldHMpLCBhbmQgaGFkIGVpdGhlciBhIGJhZAorICAgICAgICBGcmFtZSBDaGVjayBTZXF1ZW5jZSAoRkNTKSB3aXRoIGFuIGludGVncmFsIG51bWJlcgorICAgICAgICBvZiBvY3RldHMgKEZDUyBFcnJvcikgb3IgYSBiYWQgRkNTIHdpdGggYSBub24taW50ZWdyYWwKKyAgICAgICAgbnVtYmVyIG9mIG9jdGV0cyAoQWxpZ25tZW50IEVycm9yKS4KKworICAgICAgICBOb3RlIHRoYXQgdGhpcyBkZWZpbml0aW9uIG9mIGphYmJlciBpcyBkaWZmZXJlbnQKKyAgICAgICAgdGhhbiB0aGUgZGVmaW5pdGlvbiBpbiBJRUVFLTgwMi4zIHNlY3Rpb24gOC4yLjEuNQorICAgICAgICAoMTBCQVNFNSkgYW5kIHNlY3Rpb24gMTAuMy4xLjQgKDEwQkFTRTIpLiAgVGhlc2UKKyAgICAgICAgZG9jdW1lbnRzIGRlZmluZSBqYWJiZXIgYXMgdGhlIGNvbmRpdGlvbiB3aGVyZSBhbnkKKyAgICAgICAgcGFja2V0IGV4Y2VlZHMgMjAgbXMuICBUaGUgYWxsb3dlZCByYW5nZSB0byBkZXRlY3QKKyAgICAgICAgamFiYmVyIGlzIGJldHdlZW4gMjAgbXMgYW5kIDE1MCBtcy4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNKYWJiZXJzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0phYmJlcnNfdmFsX3B0cgorICogICAgICAgIFBvaW50ZXIgdG8gc3RvcmFnZSBmb3IgYSB1X2xvbmcgdmFyaWFibGUKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNKYWJiZXJzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c0phYmJlcnNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNKYWJiZXJzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c0phYmJlcnNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNKYWJiZXJzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzSmFiYmVyc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzSmFiYmVyc192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0phYmJlcnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNKYWJiZXJzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzQ29sbGlzaW9ucworICogZXRoZXJTdGF0c0NvbGxpc2lvbnMgaXMgc3ViaWQgMTMgb2YgZXRoZXJTdGF0c0VudHJ5LgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LCBhbmQgaXRzIGFjY2VzcyBsZXZlbCBpcyBSZWFkT25seS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjEzCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBiZXN0IGVzdGltYXRlIG9mIHRoZSB0b3RhbCBudW1iZXIgb2YgY29sbGlzaW9ucworICAgICAgICBvbiB0aGlzIEV0aGVybmV0IHNlZ21lbnQuCisKKyAgICAgICAgVGhlIHZhbHVlIHJldHVybmVkIHdpbGwgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGUKKyAgICAgICAgUk1PTiBwcm9iZS4gU2VjdGlvbiA4LjIuMS4zICgxMEJBU0UtNSkgYW5kIHNlY3Rpb24KKyAgICAgICAgMTAuMy4xLjMgKDEwQkFTRS0yKSBvZiBJRUVFIHN0YW5kYXJkIDgwMi4zIHN0YXRlcyB0aGF0IGEKKyAgICAgICAgc3RhdGlvbiBtdXN0IGRldGVjdCBhIGNvbGxpc2lvbiwgaW4gdGhlIHJlY2VpdmUgbW9kZSwgaWYKKyAgICAgICAgdGhyZWUgb3IgbW9yZSBzdGF0aW9ucyBhcmUgdHJhbnNtaXR0aW5nIHNpbXVsdGFuZW91c2x5LiAgQQorICAgICAgICByZXBlYXRlciBwb3J0IG11c3QgZGV0ZWN0IGEgY29sbGlzaW9uIHdoZW4gdHdvIG9yIG1vcmUKKworICAgICAgICBzdGF0aW9ucyBhcmUgdHJhbnNtaXR0aW5nIHNpbXVsdGFuZW91c2x5LiAgVGh1cyBhIHByb2JlCisgICAgICAgIHBsYWNlZCBvbiBhIHJlcGVhdGVyIHBvcnQgY291bGQgcmVjb3JkIG1vcmUgY29sbGlzaW9ucworICAgICAgICB0aGFuIGEgcHJvYmUgY29ubmVjdGVkIHRvIGEgc3RhdGlvbiBvbiB0aGUgc2FtZSBzZWdtZW50CisgICAgICAgIHdvdWxkLgorCisgICAgICAgIFByb2JlIGxvY2F0aW9uIHBsYXlzIGEgbXVjaCBzbWFsbGVyIHJvbGUgd2hlbiBjb25zaWRlcmluZworICAgICAgICAxMEJBU0UtVC4gIDE0LjIuMS40ICgxMEJBU0UtVCkgb2YgSUVFRSBzdGFuZGFyZCA4MDIuMworICAgICAgICBkZWZpbmVzIGEgY29sbGlzaW9uIGFzIHRoZSBzaW11bHRhbmVvdXMgcHJlc2VuY2Ugb2Ygc2lnbmFscworICAgICAgICBvbiB0aGUgRE8gYW5kIFJEIGNpcmN1aXRzICh0cmFuc21pdHRpbmcgYW5kIHJlY2VpdmluZworICAgICAgICBhdCB0aGUgc2FtZSB0aW1lKS4gIEEgMTBCQVNFLVQgc3RhdGlvbiBjYW4gb25seSBkZXRlY3QKKyAgICAgICAgY29sbGlzaW9ucyB3aGVuIGl0IGlzIHRyYW5zbWl0dGluZy4gIFRodXMgcHJvYmVzIHBsYWNlZCBvbgorICAgICAgICBhIHN0YXRpb24gYW5kIGEgcmVwZWF0ZXIsIHNob3VsZCByZXBvcnQgdGhlIHNhbWUgbnVtYmVyIG9mCisgICAgICAgIGNvbGxpc2lvbnMuCisKKyAgICAgICAgTm90ZSBhbHNvIHRoYXQgYW4gUk1PTiBwcm9iZSBpbnNpZGUgYSByZXBlYXRlciBzaG91bGQKKyAgICAgICAgaWRlYWxseSByZXBvcnQgY29sbGlzaW9ucyBiZXR3ZWVuIHRoZSByZXBlYXRlciBhbmQgb25lIG9yCisgICAgICAgIG1vcmUgb3RoZXIgaG9zdHMgKHRyYW5zbWl0IGNvbGxpc2lvbnMgYXMgZGVmaW5lZCBieSBJRUVFCisgICAgICAgIDgwMi4zaykgcGx1cyByZWNlaXZlciBjb2xsaXNpb25zIG9ic2VydmVkIG9uIGFueSBjb2F4CisgICAgICAgIHNlZ21lbnRzIHRvIHdoaWNoIHRoZSByZXBlYXRlciBpcyBjb25uZWN0ZWQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzQ29sbGlzaW9ucyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzQ29sbGlzaW9uc19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzQ29sbGlzaW9uc192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNDb2xsaXNpb25zX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNDb2xsaXNpb25zIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzQ29sbGlzaW9uc192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzQ29sbGlzaW9uc192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0NvbGxpc2lvbnM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNDb2xsaXNpb25zX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzUGt0czY0T2N0ZXRzCisgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzIGlzIHN1YmlkIDE0IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xNAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIDY0IG9jdGV0cyBpbiBsZW5ndGgKKyAgICAgICAgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzNjRPY3RldHMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czY0T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19nZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czY0T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEKKyAgICAgKi8KKyAgICAoKmV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNQa3RzNjRPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfZ2V0ICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cworICogZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzIGlzIHN1YmlkIDE1IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xNQorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4KKyAgICAgICAgNjUgYW5kIDEyNyBvY3RldHMgaW4gbGVuZ3RoIGluY2x1c2l2ZQorICAgICAgICAoZXhjbHVkaW5nIGZyYW1pbmcgYml0cyBidXQgaW5jbHVkaW5nIEZDUyBvY3RldHMpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAwCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgQ09VTlRFUiAoYmFzZWQgb24gcGVybHR5cGUgQ09VTlRFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9DT1VOVEVSLiBUaGUgQyB0eXBlIGRlY2wgaXMgdV9sb25nICh1X2xvbmcpCisgKi8KKy8qKgorICogRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3ZhbF9wdHIpCit7CisgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3ZhbF9wdHIpID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cworICogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cyBpcyBzdWJpZCAxNiBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTYKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIChpbmNsdWRpbmcgYmFkCisgICAgICAgIHBhY2tldHMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuCisgICAgICAgIDEyOCBhbmQgMjU1IG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlCisgICAgICAgIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cworICogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cyBpcyBzdWJpZCAxNyBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTcKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIChpbmNsdWRpbmcgYmFkCisgICAgICAgIHBhY2tldHMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuCisgICAgICAgIDI1NiBhbmQgNTExIG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlCisgICAgICAgIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzIGRhdGEuCisgKgorICogU2V0IGEgdmFsdWUgdXNpbmcgdGhlIGRhdGEgY29udGV4dCBmb3IgdGhlIHJvdy4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2dldCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgICgqZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c19nZXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHMKKyAqIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzIGlzIHN1YmlkIDE4IG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgUmVhZE9ubHkuCisgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEuMS4xOAorICogRGVzY3JpcHRpb246CitUaGUgdG90YWwgbnVtYmVyIG9mIHBhY2tldHMgKGluY2x1ZGluZyBiYWQKKyAgICAgICAgcGFja2V0cykgcmVjZWl2ZWQgdGhhdCB3ZXJlIGJldHdlZW4KKyAgICAgICAgNTEyIGFuZCAxMDIzIG9jdGV0cyBpbiBsZW5ndGggaW5jbHVzaXZlCisgICAgICAgIChleGNsdWRpbmcgZnJhbWluZyBiaXRzIGJ1dCBpbmNsdWRpbmcgRkNTIG9jdGV0cykuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDAKKyAqCisgKgorICogSXRzIHN5bnRheCBpcyBDT1VOVEVSIChiYXNlZCBvbiBwZXJsdHlwZSBDT1VOVEVSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX0NPVU5URVIuIFRoZSBDIHR5cGUgZGVjbCBpcyB1X2xvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgdV9sb25nIHZhcmlhYmxlCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyAgICAgICAgIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfU0tJUCAgICAgICAgICAgIDogc2tpcCB0aGlzIG5vZGUgKG5vIHZhbHVlIGZvciBub3cpCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgICAgICAgICAgOiBBbnkgb3RoZXIgZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsX3B0cikKK3sKKyAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfZ2V0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzoyMzE6bzogfC0+IEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c192YWxfcHRyKSA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHM7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMKKyAqIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cyBpcyBzdWJpZCAxOSBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIFJlYWRPbmx5LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMTkKKyAqIERlc2NyaXB0aW9uOgorVGhlIHRvdGFsIG51bWJlciBvZiBwYWNrZXRzIChpbmNsdWRpbmcgYmFkCisgICAgICAgIHBhY2tldHMpIHJlY2VpdmVkIHRoYXQgd2VyZSBiZXR3ZWVuCisgICAgICAgIDEwMjQgYW5kIDE1MTggb2N0ZXRzIGluIGxlbmd0aCBpbmNsdXNpdmUKKyAgICAgICAgKGV4Y2x1ZGluZyBmcmFtaW5nIGJpdHMgYnV0IGluY2x1ZGluZyBGQ1Mgb2N0ZXRzKS4KKyAqCisgKiBBdHRyaWJ1dGVzOgorICogICBhY2Nlc3NpYmxlIDEgICAgIGlzc2NhbGFyIDAgICAgIGVudW1zICAwICAgICAgaGFzZGVmdmFsIDAKKyAqICAgcmVhZGFibGUgICAxICAgICBpc2NvbHVtbiAxICAgICByYW5nZXMgMCAgICAgIGhhc2hpbnQgICAwCisgKiAgIHNldHRhYmxlICAgMAorICoKKyAqCisgKiBJdHMgc3ludGF4IGlzIENPVU5URVIgKGJhc2VkIG9uIHBlcmx0eXBlIENPVU5URVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fQ09VTlRFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIHVfbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cyBkYXRhLgorICoKKyAqIFNldCBhIHZhbHVlIHVzaW5nIHRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSByb3cuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWxfcHRyCisgKiAgICAgICAgUG9pbnRlciB0byBzdG9yYWdlIGZvciBhIHVfbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbF9wdHIpOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86MjMxOm86IHwtPiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHMgZGF0YS4KKyAgICAgKiBjb3B5ICgqIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfdmFsX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0czsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzT3duZXIKKyAqIGV0aGVyU3RhdHNPd25lciBpcyBzdWJpZCAyMCBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIENyZWF0ZS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjIwCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBlbnRpdHkgdGhhdCBjb25maWd1cmVkIHRoaXMgZW50cnkgYW5kIGlzIHRoZXJlZm9yZQorICAgICAgICB1c2luZyB0aGUgcmVzb3VyY2VzIGFzc2lnbmVkIHRvIGl0LgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAxICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAxCisgKgorICogUmFuZ2VzOiAgMCAtIDEyNzsKKyAqCisgKiBJdHMgc3ludGF4IGlzIE93bmVyU3RyaW5nIChiYXNlZCBvbiBwZXJsdHlwZSBPQ1RFVFNUUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9PQ1RFVF9TVFIuIFRoZSBDIHR5cGUgZGVjbCBpcyBjaGFyIChjaGFyKQorICogVGhpcyBkYXRhIHR5cGUgcmVxdWlyZXMgYSBsZW5ndGguICAoTWF4IDEyNykKKyAqLworLyoqCisgKiBFeHRyYWN0IHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBldGhlclN0YXRzT3duZXIgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgY2hhciB2YXJpYWJsZQorICogQHBhcmFtIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIGEgc2l6ZV90LiBPbiBlbnRyeSwgaXQgd2lsbCBjb250YWluIHRoZSBzaXplIChpbiBieXRlcykKKyAqICAgICAgICBwb2ludGVkIHRvIGJ5IGV0aGVyU3RhdHNPd25lci4KKyAqICAgICAgICBPbiBleGl0LCB0aGlzIHZhbHVlIHNob3VsZCBjb250YWluIHRoZSBkYXRhIHNpemUgKGluIGJ5dGVzKS4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICAgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9TS0lQICAgICAgICAgICAgOiBza2lwIHRoaXMgbm9kZSAobm8gdmFsdWUgZm9yIG5vdykKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgICAgICAgICA6IEFueSBvdGhlciBlcnJvcgorKgorICogQG5vdGUgSWYgeW91IG5lZWQgbW9yZSB0aGFuICgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cikgYnl0ZXMgb2YgbWVtb3J5LAorICogICAgICAgYWxsb2NhdGUgaXQgdXNpbmcgbWFsbG9jKCkgYW5kIHVwZGF0ZSBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIuCisgKiAgICAgICA8Yj5ETyBOT1Q8L2I+IGZyZWUgdGhlIHByZXZpb3VzIHBvaW50ZXIuCisgKiAgICAgICBUaGUgTUZEIGhlbHBlciB3aWxsIHJlbGVhc2UgdGhlIG1lbW9yeSB5b3UgYWxsb2NhdGUuCisgKgorICogQHJlbWFyayBJZiB5b3UgY2FsbCB0aGlzIGZ1bmN0aW9uIHlvdXJzZWxmLCB5b3UgYXJlIHJlc3BvbnNpYmxlCisgKiAgICAgICAgIGZvciBjaGVja2luZyBpZiB0aGUgcG9pbnRlciBjaGFuZ2VkLCBhbmQgZnJlZWluZyBhbnkKKyAqICAgICAgICAgcHJldmlvdXNseSBhbGxvY2F0ZWQgbWVtb3J5LiAoTm90IG5lY2Vzc2FyeSBpZiB5b3UgcGFzcworICogICAgICAgICBpbiBhIHBvaW50ZXIgdG8gc3RhdGljIG1lbW9yeSwgb2J2aW91c2x5LikKKyAqLworaW50CitldGhlclN0YXRzT3duZXJfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgY2hhciAqKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICpldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW5fcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciBhbmQgZW5vdWdoIHN0b3JhZ2UgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoTlVMTCAhPSBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIpCisgICAgICAgICAgICAgICAgICAgJiYgKE5VTEwgIT0gKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0cikpOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cik7CisKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT3duZXJfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c093bmVyIGRhdGEuCisgICAgICogY29weSAoKiBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIgKSBkYXRhIGFuZCAoKiBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW5fcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgLyoKKyAgICAgKiBtYWtlIHN1cmUgdGhlcmUgaXMgZW5vdWdoIHNwYWNlIGZvciBldGhlclN0YXRzT3duZXIgZGF0YQorICAgICAqLworICAgIGlmICgoTlVMTCA9PSAoKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0cikpIHx8CisgICAgICAgICgoKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIpIDwKKyAgICAgICAgIChyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lclswXSkpKSkgeworICAgICAgICAvKgorICAgICAgICAgKiBhbGxvY2F0ZSBzcGFjZSBmb3IgZXRoZXJTdGF0c093bmVyIGRhdGEKKyAgICAgICAgICovCisgICAgICAgICgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfcHRyKSA9CisgICAgICAgICAgICBtYWxsb2Mocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJfbGVuICoKKyAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJbMF0pKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gKCpldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGQgbm90IGFsbG9jYXRlIG1lbW9yeVxuIik7CisgICAgICAgICAgICByZXR1cm4gTUZEX0VSUk9SOworICAgICAgICB9CisgICAgfQorICAgICgqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJfbGVuX3B0cikgPQorICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJbMF0pOworICAgIG1lbWNweSgoKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX3B0ciksCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyLAorICAgICAgICAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJbMF0pKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c093bmVyX2dldCAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzU3RhdHVzCisgKiBldGhlclN0YXRzU3RhdHVzIGlzIHN1YmlkIDIxIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMjEKKyAqIERlc2NyaXB0aW9uOgorVGhlIHN0YXR1cyBvZiB0aGlzIGV0aGVyU3RhdHMgZW50cnkuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMSAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDAgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKiBFbnVtIHJhbmdlOiAyLzguIFZhbHVlczogIHZhbGlkKDEpLCBjcmVhdGVSZXF1ZXN0KDIpLCB1bmRlckNyZWF0aW9uKDMpLCBpbnZhbGlkKDQpCisgKgorICogSXRzIHN5bnRheCBpcyBFbnRyeVN0YXR1cyAoYmFzZWQgb24gcGVybHR5cGUgSU5URUdFUikKKyAqIFRoZSBuZXQtc25tcCB0eXBlIGlzIEFTTl9JTlRFR0VSLiBUaGUgQyB0eXBlIGRlY2wgaXMgbG9uZyAodV9sb25nKQorICovCisvKioKKyAqIEV4dHJhY3QgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGV0aGVyU3RhdHNTdGF0dXMgZGF0YS4KKyAqCisgKiBTZXQgYSB2YWx1ZSB1c2luZyB0aGUgZGF0YSBjb250ZXh0IGZvciB0aGUgcm93LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzU3RhdHVzX3ZhbF9wdHIKKyAqICAgICAgICBQb2ludGVyIHRvIHN0b3JhZ2UgZm9yIGEgbG9uZyB2YXJpYWJsZQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgICA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX1NLSVAgICAgICAgICAgICA6IHNraXAgdGhpcyBub2RlIChubyB2YWx1ZSBmb3Igbm93KQorICogQHJldHZhbCBNRkRfRVJST1IgICAgICAgICAgIDogQW55IG90aGVyIGVycm9yCisgKi8KK2ludAorZXRoZXJTdGF0c1N0YXR1c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyKQoreworICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyKTsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfZ2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZXRoZXJTdGF0c1N0YXR1cyBkYXRhLgorICAgICAqIGNvcHkgKCogZXRoZXJTdGF0c1N0YXR1c192YWxfcHRyICkgZnJvbSByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgKCpldGhlclN0YXRzU3RhdHVzX3ZhbF9wdHIpID0gcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzU3RhdHVzOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzU3RhdHVzX2dldCAqLworCisKKworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfZ2V0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc3NTIxMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuaApAQCAtMCwwICsxLDE1MSBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwODggJCBvZiAkCisgKgorICogJElkOiQKKyAqCisgKiBAZmlsZSBldGhlclN0YXRzVGFibGVfZGF0YV9nZXQuaAorICoKKyAqIEBhZGR0b2dyb3VwIGdldAorICoKKyAqIFByb3RvdHlwZXMgZm9yIGdldCBmdW5jdGlvbnMKKyAqCisgKiBAeworICovCisjaWZuZGVmIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9EQVRBX0dFVF9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBmdW5jdGlvbiBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIEdFVCBUYWJsZSBkZWNsYXJhdGlvbnMKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyAgICAvKgorICAgICAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICAgICAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAgICAgKiBPSUQ6IC4xLjMuNi4xLjIuMS4xNi4xLjEsIGxlbmd0aDogOQorICAgICAqLworICAgIC8qCisgICAgICogaW5kZXhlcworICAgICAqLworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICoqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogZXRoZXJTdGF0c1BrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c192YWxfcHRyKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c19nZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsX3B0cik7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbF9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfZ2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKipldGhlclN0YXRzT3duZXJfdmFsX3B0cl9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbl9wdHIpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0cik7CisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhlc19zZXRfdGJsX2lkeChldGhlclN0YXRzVGFibGVfbWliX2luZGV4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGJsX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBldGhlclN0YXRzSW5kZXhfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2luZGV4ZXNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGV0aGVyU3RhdHNJbmRleF92YWwpOworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFVEhFUlNUQVRTVEFCTEVfREFUQV9HRVRfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmMgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2RhdGFfc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdmM2EyNgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuYwpAQCAtMCwwICsxLDk3NyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgICAgICB2ZXJzaW9uIDogMTIwNzcgJCBvZiAkCisgKgorICogJElkOiQKKyAqCisgKi8KKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJldGhlclN0YXRzVGFibGUuaCIKKworCisvKiogQGRlZmdyb3VwIGRhdGFfc2V0IGRhdGFfc2V0OiBSb3V0aW5lcyB0byBzZXQgZGF0YQorICoKKyAqIFRoZXNlIHJvdXRpbmVzIGFyZSB1c2VkIHRvIHNldCB0aGUgdmFsdWUgZm9yIGluZGl2aWR1YWwgb2JqZWN0cy4gVGhlCisgKiByb3cgY29udGV4dCBpcyBwYXNzZWQsIGFsb25nIHdpdGggdGhlIG5ldyB2YWx1ZS4KKyAqIAorICogQHsKKyAqLworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqCisgKioqIFRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLyoKKyAqIFJNT04tTUlCOjpldGhlclN0YXRzVGFibGUgaXMgc3ViaWQgMSBvZiBzdGF0aXN0aWNzLgorICogSXRzIHN0YXR1cyBpcyBDdXJyZW50LgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAqLworICAgIC8qCisgICAgICogTk9URTogaWYgeW91IHVwZGF0ZSB0aGlzIGNoYXJ0LCBwbGVhc2UgdXBkYXRlIHRoZSB2ZXJzaW9ucyBpbgorICAgICAqICAgICAgIGxvY2FsL21pYjJjLWNvbmYuZC9wYXJlbnQtc2V0Lm0yaQorICAgICAqICAgICAgIGFnZW50L21pYmdyb3VwL2hlbHBlcnMvYmFieV9zdGVwcy5jCisgICAgICogd2hpbGUgeW91J3JlIGF0IGl0LgorICAgICAqLworICAgIC8qCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogQmFieSBTdGVwcyBGbG93IENoYXJ0ICgyMDA0LjA2LjA1KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgICAgICogKy0tLS0tLS0tLS0tLS0tKyAgICArPT09PT09PT09PT09PT09PSsgICAgVSA9IHVuY29uZGl0aW9uYWwgcGF0aCAgICAqCisgICAgICogfG9wdGlvbmFsIHN0YXRlfCAgICB8fHJlcXVpcmVkIHN0YXRlfHwgICAgUyA9IHBhdGggZm9yIHN1Y2Nlc3MgICAgICAqCisgICAgICogKy0tLS0tLS0tLS0tLS0tKyAgICArPT09PT09PT09PT09PT09PSsgICAgRSA9IHBhdGggZm9yIGVycm9yICAgICAgICAqCisgICAgICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHByZSAgICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgICByZXF1ZXN0ICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFUKKyAgICAgKiArLS0tLS0tLS0tLS0tLSsgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiB8ICAgIHJvdyAgICB8Znw8LS0tLS0tLXx8ICBvYmplY3QgICAgfHwKKyAgICAgKiB8ICBjcmVhdGUgICB8MXwgICAgICBFIHx8ICBsb29rdXAgICAgfHwKKyAgICAgKiArLS0tLS0tLS0tLS0tLSsgICAgICAgICs9PT09PT09PT09PT09PSsKKyAgICAgKiAgICAgRSB8ICAgfCBTICAgICAgICAgICAgICAgICB8IFMKKyAgICAgKiAgICAgICB8ICAgKy0tLS0tLS0tLS0tLS0tLS0tLT58CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgRSB8fCAgIGNoZWNrICAgIHx8CisgICAgICogICAgICAgfDwtLS0tLS0tLS0tLS0tLS18fCAgIHZhbHVlcyAgIHx8CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfCBTCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICArPC0tLS0tLS18fCAgIHVuZG8gICAgIHx8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgRSB8fCAgIHNldHVwICAgIHx8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgfCBTCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8fCAgICBzZXQgICAgIHx8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+KworICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfHwgICB2YWx1ZSAgICB8fCBFICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICs9PT09PT09PT09PT09PSsgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgfCBTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgIHwgICAgY2hlY2sgICAgIHwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLT58CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8ICBjb25zaXN0ZW5jeSB8IEUgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICAgICAgICB8IFMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rICAgICAgICAgKz09PT09PT09PT09PT09KyAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfHwgICBjb21taXQgICB8fC0tLS0tLS0tPnx8ICAgICB1bmRvICAgfHwgIHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgIHx8ICAgICAgICAgICAgfHwgRSAgICAgICB8fCAgICBjb21taXQgIHx8ICB8CisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICArPT09PT09PT09PT09PT0rICAgICAgICAgKz09PT09PT09PT09PT09KyAgfAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgICAgICAgIHwgUyAgICAgICAgICAgICAgICAgICAgIFUgfDwtLS0tLS0tLSsKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICB8IGlycmV2ZXJzaWJsZSB8ICAgICAgICAgfHwgICAgdW5kbyAgICB8fAorICAgICAqICAgICAgIHwgICAgICAgfCAgICAgICAgfCAgICBjb21taXQgICAgfCAgICAgICAgIHx8ICAgICBzZXQgICAgfHwKKyAgICAgKiAgICAgICB8ICAgICAgIHwgICAgICAgICstLS0tLS0tLS0tLS0tLSsgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgfCBVICAgICAgICAgICAgICAgICAgICAgVSB8CisgICAgICogICAgICAgfCAgICAgICArLS0tLS0tLS0tLS0tLS0+fDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICB8fCAgIHVuZG8gICAgIHx8CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICB8fCAgY2xlYW51cCAgIHx8CisgICAgICogICAgICAgfCAgICAgICAgICAgICAgICArPT09PT09PT09PT09PT0rCisgICAgICogICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0+fCBVCisgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAoZXJyICYmIGYxKS0tLS0tLS0tLS0tLS0tLS0tLS0+KworICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgcG9zdCAgICAgIHw8LS0tLS0tLS18ICAgICAgcm93ICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgICAgICB8ICAgcmVxdWVzdCAgICB8ICAgICAgIFUgfCAgICByZWxlYXNlICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tKyAgICAgICAgICstLS0tLS0tLS0tLS0tLSsKKyAgICAgKgorICAgICAqLworCisvKioKKyAqIFNldHVwIHVwIGNvbnRleHQgd2l0aCBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gdW5kbyBhIHNldCByZXF1ZXN0LgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBpbmRpdmlkdWFsIG5vZGUgdW5kbyBzZXR1cAorICogZnVuY3Rpb25zIGFyZSBjYWxsZWQuIElmIHlvdSBuZWVkIHRvIGRvIGFueSB1bmRvIHNldHVwIHRoYXQgaXMgbm90CisgKiByZWxhdGVkIHRvIGEgc3BlY2lmaWMgY29sdW1uLCB5b3UgY2FuIGRvIGl0IGhlcmUuCisgKgorICogTm90ZSB0aGF0IHRoZSB1bmRvIGNvbnRleHQgaGFzIGJlZW4gYWxsb2NhdGVkIHdpdGgKKyAqIGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKCksIGJ1dCBtYXkgbmVlZCBleHRyYQorICogaW5pdGlhbGl6YXRpb24gc2ltaWxhciB0byB3aGF0IHlvdSBtYXkgaGF2ZSBkb25lIGluCisgKiBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9pbml0KCkuCisgKiBOb3RlIHRoYXQgYW4gaW5kaXZpZHVhbCBub2RlJ3MgdW5kb19zZXR1cCBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY2FsbGVkCisgKiBpZiB0aGF0IG5vZGUgaXMgYmVpbmcgc2V0IHRvIGEgbmV3IHZhbHVlLgorICoKKyAqIElmIHRoZXJlIGlzIGFueSBzZXR1cCBzcGVjaWZpYyB0byBhIHBhcnRpY3VsYXIgY29sdW1uIChlLmcuIGFsbG9jYXRpbmcKKyAqIG1lbW9yeSBmb3IgYSBzdHJpbmcpLCB5b3Ugc2hvdWxkIGRvIHRoYXQgc2V0dXAgaW4gdGhlIG5vZGUncyB1bmRvX3NldHVwCisgKiBmdW5jdGlvbiwgc28gaXQgd29uJ3QgYmUgZG9uZSB1bmxlc3MgaXQgaXMgbmVjZXNzYXJ5LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvci4gc2V0IHdpbGwgZmFpbC4KKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gTUZEX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1MTpNOiB8LT4gU2V0dXAgZXRoZXJTdGF0c1RhYmxlIHVuZG8uCisgICAgICogc2V0IHVwIGV0aGVyU3RhdHNUYWJsZSB1bmRvIGluZm9ybWF0aW9uLCBpbiBwcmVwYXJhdGlvbiBmb3IgYSBzZXQuCisgICAgICogVW5kbyBzdG9yYWdlIGlzIGluICgqIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0ciApKgorICAgICAqLworCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCAqLworCisvKioKKyAqIFVuZG8gYSBzZXQgcmVxdWVzdC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSB0aGUgaW5kaXZpZHVhbCBub2RlIHVuZG8KKyAqIGZ1bmN0aW9ucyBhcmUgY2FsbGVkLiBJZiB5b3UgbmVlZCB0byBkbyBhbnkgdW5kbyB0aGF0IGlzIG5vdAorICogcmVsYXRlZCB0byBhIHNwZWNpZmljIGNvbHVtbiwgeW91IGNhbiBkbyBpdCBoZXJlLgorICoKKyAqIE5vdGUgdGhhdCBhbiBpbmRpdmlkdWFsIG5vZGUncyB1bmRvIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQKKyAqIGlmIHRoYXQgbm9kZSBpcyBiZWluZyBzZXQgdG8gYSBuZXcgdmFsdWUuCisgKgorICogSWYgdGhlcmUgaXMgYW55dGhpbmcgIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb2x1bW4gKGUuZy4gcmVsZWFzaW5nCisgKiBtZW1vcnkgZm9yIGEgc3RyaW5nKSwgeW91IHNob3VsZCBkbyB0aGF0IHNldHVwIGluIHRoZSBub2RlJ3MgdW5kbworICogZnVuY3Rpb24sIHNvIGl0IHdvbid0IGJlIGRvbmUgdW5sZXNzIGl0IGlzIG5lY2Vzc2FyeS4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHRhYmxlIGNvbnRleHQgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4KQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogZXJyb3IuIHNldCB3aWxsIGZhaWwuCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV91bmRvIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTE6TTogfC0+IGV0aGVyU3RhdHNUYWJsZSB1bmRvLgorICAgICAqIGV0aGVyU3RhdHNUYWJsZSB1bmRvIGluZm9ybWF0aW9uLCBpbiByZXNwb25zZSB0byBhIGZhaWxlZCBzZXQuCisgICAgICogVW5kbyBzdG9yYWdlIGlzIGluICgqIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0ciApKgorICAgICAqLworCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCAqLworCisvKioKKyAqIENsZWFudXAgdXAgY29udGV4dCB1bmRvIGluZm9ybWF0aW9uLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgc2V0L2NvbW1pdCBwcm9jZXNzaW5nLiBJZiB5b3UKKyAqIGFsbG9jYXRlZCBhbnkgcmVzb3VyY2VzIGluIHVuZG9fc2V0dXAsIHRoaXMgaXMgdGhlIHBsYWNlIHRvIHJlbGVhc2UKKyAqIHRob3NlIHJlc291cmNlcy4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCByZWdhcmRsZXNzIG9mIHRoZSBzdWNjZXNzIG9yIGZhaWx1cmUgb2YgdGhlIHNldAorICogcmVxdWVzdC4gSWYgeW91IG5lZWQgdG8gcGVyZm9ybSBkaWZmZXJlbnQgc3RlcHMgZm9yIGNsZWFudXAgZGVwZW5kaW5nCisgKiBvbiBzdWNjZXNzIG9yIGZhaWx1cmUsIHlvdSBjYW4gYWRkIGEgZmxhZyB0byB0aGUgcm93cmVxX2N0eC4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHRhYmxlIGNvbnRleHQgKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4KQorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBNRkRfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogd2Ugc2hvdWxkIGhhdmUgYSBub24tTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTI6TTogfC0+IENsZWFudXAgZXRoZXJTdGF0c1RhYmxlIHVuZG8uCisgICAgICogVW5kbyBzdG9yYWdlIGlzIGluICgqIGV0aGVyU3RhdHNTdGF0dXNfdmFsX3B0ciApKgorICAgICAqLworCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwICovCisKKy8qKgorICogY29tbWl0IG5ldyB2YWx1ZXMuCisgKgorICogQXQgdGhpcyBwb2ludCwgeW91IHNob3VsZCBoYXZlIGRvbmUgZXZlcnl0aGluZyB5b3UgY2FuIHRvIGVuc3VyZSB0aGF0CisgKiB0aGlzIGNvbW1pdCB3aWxsIG5vdCBmYWlsLgorICoKKyAqIFNob3VsZCB5b3UgbmVlZCBkaWZmZXJlbnQgYmVoYXZpb3IgZGVwZW5kaW5nIG9uIHdoaWNoIGNvbHVtbnMgd2VyZQorICogc2V0LCByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHdpbGwgaW5kaWNhdGUgd2hpY2ggd3JpdGVhYmxlIGNvbHVtbnMgd2VyZQorICogc2V0LiBUaGUgZGVmaW5pdGlvbnMgZm9yIHRoZSBDT0xVTU5fKl9GTEFHIGJpdHMgY2FuIGJlIGZvdW5kIGluCisgKiBldGhlclN0YXRzVGFibGVfb2lkcy5oLgorICogQSBuZXcgcm93IHdpbGwgaGF2ZSB0aGUgTUZEX1JPV19DUkVBVEVEIGJpdCBzZXQgaW4gcm93cmVxX2ZsYWdzLgorICoKKyAqIEBwYXJhbSBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHVzZXJzIGNvbnRleHQuCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9jb21taXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworICAgIGludCAgICAgICAgICAgICBzYXZlX2ZsYWdzOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9jb21taXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiB3ZSBzaG91bGQgaGF2ZSBhIG5vbi1OVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBzYXZlIGZsYWdzLCB0aGVuIGNsZWFyIHVudGlsIHdlIGFjdHVhbGx5IGRvIHNvbWV0aGluZworICAgICAqLworICAgIHNhdmVfZmxhZ3MgPSByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzOworICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgPSAwOworCisgICAgLyoKKyAgICAgKiBjb21taXQgZXRoZXJTdGF0c1RhYmxlIGRhdGEKKyAgICAgKiAxKSBjaGVjayB0aGUgY29sdW1uJ3MgZmxhZyBpbiBzYXZlX2ZsYWdzIHRvIHNlZSBpZiBpdCB3YXMgc2V0LgorICAgICAqIDIpIGNsZWFyIHRoZSBmbGFnIHdoZW4geW91IGhhbmRsZSB0aGF0IGNvbHVtbgorICAgICAqIDMpIHNldCB0aGUgY29sdW1uJ3MgZmxhZyBpbiBjb2x1bW5fc2V0X2ZsYWdzIGlmIGl0IG5lZWRzIHVuZG8KKyAgICAgKiAgICBwcm9jZXNzaW5nIGluIGNhc2Ugb2YgYSBmYWlsdXJlLgorICAgICAqLworICAgIGlmIChzYXZlX2ZsYWdzICYgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUcpIHsKKyAgICAgICAgc2F2ZV9mbGFncyAmPSB+Q09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUc7ICAgICAgICAvKiBjbGVhciBldGhlclN0YXRzRGF0YVNvdXJjZSAqLworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjQ4MjpvOiB8LT4gY29tbWl0IGNvbHVtbiBldGhlclN0YXRzRGF0YVNvdXJjZS4KKyAgICAgICAgICovCisgICAgICAgIHJjID0gLTE7CisgICAgICAgIGlmICgtMSA9PSByYykgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGUgY29sdW1uIGV0aGVyU3RhdHNEYXRhU291cmNlIGNvbW1pdCBmYWlsZWRcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHNldCBmbGFnLCBpbiBjYXNlIHdlIG5lZWQgdG8gdW5kbyBldGhlclN0YXRzRGF0YVNvdXJjZQorICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9CisgICAgICAgICAgICAgICAgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2F2ZV9mbGFncyAmIENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRykgeworICAgICAgICBzYXZlX2ZsYWdzICY9IH5DT0xVTU5fRVRIRVJTVEFUU09XTkVSX0ZMQUc7ICAgICAvKiBjbGVhciBldGhlclN0YXRzT3duZXIgKi8KKyAgICAgICAgLyoKKyAgICAgICAgICogVE9ETzo0ODI6bzogfC0+IGNvbW1pdCBjb2x1bW4gZXRoZXJTdGF0c093bmVyLgorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgaWYgKC0xID09IHJjKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBjb2x1bW4gZXRoZXJTdGF0c093bmVyIGNvbW1pdCBmYWlsZWRcbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIHNldCBmbGFnLCBpbiBjYXNlIHdlIG5lZWQgdG8gdW5kbyBldGhlclN0YXRzT3duZXIKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc2F2ZV9mbGFncyAmIENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUcpIHsKKyAgICAgICAgc2F2ZV9mbGFncyAmPSB+Q09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRzsgICAgLyogY2xlYXIgZXRoZXJTdGF0c1N0YXR1cyAqLworICAgICAgICAvKgorICAgICAgICAgKiBUT0RPOjQ4MjpvOiB8LT4gY29tbWl0IGNvbHVtbiBldGhlclN0YXRzU3RhdHVzLgorICAgICAgICAgKi8KKyAgICAgICAgcmMgPSAtMTsKKyAgICAgICAgaWYgKC0xID09IHJjKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBjb2x1bW4gZXRoZXJTdGF0c1N0YXR1cyBjb21taXQgZmFpbGVkXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBzZXQgZmxhZywgaW4gY2FzZSB3ZSBuZWVkIHRvIHVuZG8gZXRoZXJTdGF0c1N0YXR1cworICAgICAgICAgICAgICovCisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIGlmIHdlIHN1Y2Nlc3NmdWxseSBjb21taXRlZCB0aGlzIHJvdywgc2V0IHRoZSBkaXJ0eSBmbGFnLgorICAgICAqLworICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgfD0gTUZEX1JPV19ESVJUWTsKKyAgICB9CisKKyAgICBpZiAoc2F2ZV9mbGFncykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidW5oYW5kbGVkIGNvbHVtbnMgKDB4JXgpIGluIGNvbW1pdFxuIiwKKyAgICAgICAgICAgICAgICAgc2F2ZV9mbGFncyk7CisgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfY29tbWl0ICovCisKKy8qKgorICogdW5kbyBjb21taXQgbmV3IHZhbHVlcy4KKyAqCisgKiBTaG91bGQgeW91IG5lZWQgZGlmZmVyZW50IGJlaGF2aW9yIGRlcGVuZGluZyBvbiB3aGljaCBjb2x1bW5zIHdlcmUKKyAqIHNldCwgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB3aWxsIGluZGljYXRlIHdoaWNoIHdyaXRlYWJsZSBjb2x1bW5zIHdlcmUKKyAqIHNldC4gVGhlIGRlZmluaXRpb25zIGZvciB0aGUgQ09MVU1OXypfRkxBRyBiaXRzIGNhbiBiZSBmb3VuZCBpbgorICogZXRoZXJTdGF0c1RhYmxlX29pZHMuaC4KKyAqIEEgbmV3IHJvdyB3aWxsIGhhdmUgdGhlIE1GRF9ST1dfQ1JFQVRFRCBiaXQgc2V0IGluIHJvd3JlcV9mbGFncy4KKyAqCisgKiBAcGFyYW0gZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgOiBzdWNjZXNzCisgKiBAcmV0dmFsIE1GRF9FUlJPUiAgIDogZXJyb3IKKyAqLworaW50CitldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IE1GRF9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHdlIHNob3VsZCBoYXZlIGEgbm9uLU5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDg1Ok06IHwtPiBVbmRvIGV0aGVyU3RhdHNUYWJsZSBjb21taXQuCisgICAgICogY2hlY2sgdGhlIGNvbHVtbidzIGZsYWcgaW4gcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB0byBzZWUKKyAgICAgKiBpZiBpdCB3YXMgc2V0IGR1cmluZyBjb21taXQsIHRoZW4gdW5kbyBpdC4KKyAgICAgKgorICAgICAqIGVnOiBpZiAocm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyAmIENPTFVNTl9fRkxBRykge30KKyAgICAgKi8KKworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBzdWNjZXNzZnVsbHkgdW4tY29tbWl0ZWQgdGhpcyByb3csIGNsZWFyIHRoZSBkaXJ0eSBmbGFnLgorICAgICAqLworICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICByb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJj0gfk1GRF9ST1dfRElSVFk7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQgKi8KKworLyoKKyAqIFRPRE86NDQwOk06IEltcGxlbWVudCBldGhlclN0YXRzVGFibGUgbm9kZSB2YWx1ZSBjaGVja3MuCisgKiBUT0RPOjQ1MDpNOiBJbXBsZW1lbnQgZXRoZXJTdGF0c1RhYmxlIHVuZG8gZnVuY3Rpb25zLgorICogVE9ETzo0NjA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBzZXQgZnVuY3Rpb25zLgorICogVE9ETzo0ODA6TTogSW1wbGVtZW50IGV0aGVyU3RhdHNUYWJsZSBjb21taXQgZnVuY3Rpb25zLgorICovCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUk1PTi1NSUI6OmV0aGVyU3RhdHNFbnRyeS5ldGhlclN0YXRzRGF0YVNvdXJjZQorICogZXRoZXJTdGF0c0RhdGFTb3VyY2UgaXMgc3ViaWQgMiBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIENyZWF0ZS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjIKKyAqIERlc2NyaXB0aW9uOgorVGhpcyBvYmplY3QgaWRlbnRpZmllcyB0aGUgc291cmNlIG9mIHRoZSBkYXRhIHRoYXQKKyAgICAgICAgdGhpcyBldGhlclN0YXRzIGVudHJ5IGlzIGNvbmZpZ3VyZWQgdG8gYW5hbHl6ZS4gIFRoaXMKKyAgICAgICAgc291cmNlIGNhbiBiZSBhbnkgZXRoZXJuZXQgaW50ZXJmYWNlIG9uIHRoaXMgZGV2aWNlLgorICAgICAgICBJbiBvcmRlciB0byBpZGVudGlmeSBhIHBhcnRpY3VsYXIgaW50ZXJmYWNlLCB0aGlzIG9iamVjdAorICAgICAgICBzaGFsbCBpZGVudGlmeSB0aGUgaW5zdGFuY2Ugb2YgdGhlIGlmSW5kZXggb2JqZWN0LAorICAgICAgICBkZWZpbmVkIGluIFJGQyAyMjMzIFsxN10sIGZvciB0aGUgZGVzaXJlZCBpbnRlcmZhY2UuCisgICAgICAgIEZvciBleGFtcGxlLCBpZiBhbiBlbnRyeSB3ZXJlIHRvIHJlY2VpdmUgZGF0YSBmcm9tCisgICAgICAgIGludGVyZmFjZSAjMSwgdGhpcyBvYmplY3Qgd291bGQgYmUgc2V0IHRvIGlmSW5kZXguMS4KKworICAgICAgICBUaGUgc3RhdGlzdGljcyBpbiB0aGlzIGdyb3VwIHJlZmxlY3QgYWxsIHBhY2tldHMKKyAgICAgICAgb24gdGhlIGxvY2FsIG5ldHdvcmsgc2VnbWVudCBhdHRhY2hlZCB0byB0aGUgaWRlbnRpZmllZAorICAgICAgICBpbnRlcmZhY2UuCisKKyAgICAgICAgQW4gYWdlbnQgbWF5IG9yIG1heSBub3QgYmUgYWJsZSB0byB0ZWxsIGlmIGZ1bmRhbWVudGFsCisgICAgICAgIGNoYW5nZXMgdG8gdGhlIG1lZGlhIG9mIHRoZSBpbnRlcmZhY2UgaGF2ZSBvY2N1cnJlZCBhbmQKKyAgICAgICAgbmVjZXNzaXRhdGUgYW4gaW52YWxpZGF0aW9uIG9mIHRoaXMgZW50cnkuICBGb3IgZXhhbXBsZSwgYQorICAgICAgICBob3QtcGx1Z2dhYmxlIGV0aGVybmV0IGNhcmQgY291bGQgYmUgcHVsbGVkIG91dCBhbmQgcmVwbGFjZWQKKyAgICAgICAgYnkgYSB0b2tlbi1yaW5nIGNhcmQuICBJbiBzdWNoIGEgY2FzZSwgaWYgdGhlIGFnZW50IGhhcyBzdWNoCisgICAgICAgIGtub3dsZWRnZSBvZiB0aGUgY2hhbmdlLCBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IGl0CisgICAgICAgIGludmFsaWRhdGUgdGhpcyBlbnRyeS4KKworICAgICAgICBUaGlzIG9iamVjdCBtYXkgbm90IGJlIG1vZGlmaWVkIGlmIHRoZSBhc3NvY2lhdGVkCisgICAgICAgIGV0aGVyU3RhdHNTdGF0dXMgb2JqZWN0IGlzIGVxdWFsIHRvIHZhbGlkKDEpLgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDAgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAxCisgKgorICoKKyAqIEl0cyBzeW50YXggaXMgT0JKRUNUSUQgKGJhc2VkIG9uIHBlcmx0eXBlIE9CSkVDVElEKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX09CSkVDVF9JRC4gVGhlIEMgdHlwZSBkZWNsIGlzIG9pZCAob2lkKQorICogVGhpcyBkYXRhIHR5cGUgcmVxdWlyZXMgYSBsZW5ndGguCisgKi8KKy8qKgorICogQ2hlY2sgdGhhdCB0aGUgcHJvcG9zZWQgbmV3IHZhbHVlIGlzIHBvdGVudGlhbGx5IHZhbGlkLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgcm93IHJlcXVlc3QgY29udGV4dC4KKyAqIEBwYXJhbSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyCisgKiAgICAgICAgQSBvaWQgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICogQHBhcmFtIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuCisgKiAgICAgICAgVGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgZGF0YSBwb2ludGVkIHRvIGJ5IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICA6IGluY29taW5nIHZhbHVlIGlzIGxlZ2FsCisgKiBAcmV0dmFsIE1GRF9OT1RfVkFMSURfTk9XICA6IGluY29taW5nIHZhbHVlIGlzIG5vdCB2YWxpZCBub3cKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9FVkVSIDogaW5jb21pbmcgdmFsdWUgaXMgbmV2ZXIgdmFsaWQKKyAqCisgKiBUaGlzIGlzIHRoZSBwbGFjZSB0byBjaGVjayBmb3IgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIG5vdAorICogZXhwcmVzc2VkIGluIHRoZSBtaWIgc3ludGF4IChmb3IgZXhhbXBsZSwgYSByZXF1aXJlbWVudCB0aGF0CisgKiBpcyBkZXRhaWxlZCBpbiB0aGUgZGVzY3JpcHRpb24gZm9yIGFuIG9iamVjdCkuCisgKgorICogWW91IHNob3VsZCBjaGVjayB0aGF0IHRoZSByZXF1ZXN0ZWQgY2hhbmdlIGJldHdlZW4gdGhlIHVuZG8gdmFsdWUgYW5kIHRoZQorICogbmV3IHZhbHVlIGlzIGxlZ2FsIChpZSwgdGhlIHRyYW5zaXN0aW9uIGZyb20gb25lIHZhbHVlIHRvIGFub3RoZXIKKyAqIGlzIGxlZ2FsKS4KKyAqICAgICAgCisgKkBub3RlCisgKiBUaGlzIGNoZWNrIGlzIG9ubHkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBuZXcgdmFsdWUKKyAqIGlzIFxiIHBvdGVudGlhbGx5IHZhbGlkLiBUaGlzIGlzIHRoZSBmaXJzdCBjaGVjayBvZiBtYW55LCBhbmQKKyAqIGlzIG9uZSBvZiB0aGUgc2ltcGxlc3Qgb25lcy4KKyAqIAorICpAbm90ZQorICogdGhpcyBpcyBub3QgdGhlIHBsYWNlIHRvIGRvIGFueSBjaGVja3MgZm9yIHZhbHVlcworICogd2hpY2ggZGVwZW5kIG9uIHNvbWUgb3RoZXIgdmFsdWUgaW4gdGhlIG1pYi4gVGhvc2UKKyAqIHR5cGVzIG9mIGNoZWNrcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUKKyAqIGV0aGVyU3RhdHNUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoKSBmdW5jdGlvbi4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGNoZWNrcyBoYXZlIGFscmVhZHkgYmVlbiBkb25lIGZvciB5b3U6CisgKiAgICBUaGUgc3ludGF4IGlzIEFTTl9PQkpFQ1RfSUQKKyAqICAgIFRoZSBsZW5ndGggaXMgPCBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZSkuCisgKgorICogSWYgdGhlcmUgYSBubyBvdGhlciBjaGVja3MgeW91IG5lZWQgdG8gZG8sIHNpbXBseSByZXR1cm4gTUZEX1NVQ0NFU1MuCisgKgorICovCitpbnQKK2V0aGVyU3RhdHNEYXRhU291cmNlX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4pCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNEYXRhU291cmNlX2NoZWNrX3ZhbHVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyKTsKKworICAgIC8qCisgICAgICogVE9ETzo0NDE6bzogfC0+IENoZWNrIGZvciB2YWxpZCBldGhlclN0YXRzRGF0YVNvdXJjZSB2YWx1ZS4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZSB2YWx1ZSBub3QgaWxsZWdhbCAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZV9jaGVja192YWx1ZSAqLworCisvKioKKyAqIFNhdmUgb2xkIHZhbHVlIGluZm9ybWF0aW9uCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB0YWJsZSBjb250ZXh0IChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCkKKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTIDogc3VjY2VzcworICogQHJldHZhbCBNRkRfRVJST1IgICA6IGVycm9yLiBzZXQgd2lsbCBmYWlsLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYWZ0ZXIgdGhlIHRhYmxlIGxldmVsIHVuZG8gc2V0dXAgZnVuY3Rpb24KKyAqIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwIGhhcyBiZWVuIGNhbGxlZC4KKyAqCisgKkBub3RlCisgKiB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBiZSBjYWxsZWQgaWYgYSBuZXcgdmFsdWUgaXMgc2V0IGZvciB0aGlzIGNvbHVtbi4KKyAqCisgKiBJZiB0aGVyZSBpcyBhbnkgc2V0dXAgc3BlY2lmaWMgdG8gYSBwYXJ0aWN1bGFyIGNvbHVtbiAoZS5nLiBhbGxvY2F0aW5nCisgKiBtZW1vcnkgZm9yIGEgc3RyaW5nKSwgeW91IHNob3VsZCBkbyB0aGF0IHNldHVwIGluIHRoaXMgZnVuY3Rpb24sIHNvIGl0CisgKiB3b24ndCBiZSBkb25lIHVubGVzcyBpdCBpcyBuZWNlc3NhcnkuCisgKi8KK2ludAorZXRoZXJTdGF0c0RhdGFTb3VyY2VfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTU6bzogfC0+IFNldHVwIGV0aGVyU3RhdHNEYXRhU291cmNlIHVuZG8uCisgICAgICovCisgICAgLyoKKyAgICAgKiBjb3B5IGV0aGVyU3RhdHNEYXRhU291cmNlIGFuZCBldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gZGF0YQorICAgICAqIHNldCByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZSBmcm9tIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UKKyAgICAgKi8KKyAgICBtZW1jcHkocm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIChyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiAqCisgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2VbMF0pKSk7CisgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c0RhdGFTb3VyY2VfbGVuID0KKyAgICAgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW47CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0RhdGFTb3VyY2VfdW5kb19zZXR1cCAqLworCisvKioKKyAqIFNldCB0aGUgbmV3IHZhbHVlLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4gWW91IHNob3VsZCBrbm93IGhvdyB0bworICogICAgICAgIG1hbmlwdWxhdGUgdGhlIHZhbHVlIGZyb20gdGhpcyBvYmplY3QuCisgKiBAcGFyYW0gZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cgorICogICAgICAgIEEgb2lkIGNvbnRhaW5pbmcgdGhlIG5ldyB2YWx1ZS4KKyAqIEBwYXJhbSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbgorICogICAgICAgIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIGRhdGEgcG9pbnRlZCB0byBieSBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyCisgKi8KK2ludAorZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbikKK3sKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRGF0YVNvdXJjZV9zZXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ2MTpNOiB8LT4gU2V0IGV0aGVyU3RhdHNEYXRhU291cmNlIHZhbHVlLgorICAgICAqIHNldCBldGhlclN0YXRzRGF0YVNvdXJjZSB2YWx1ZSBpbiByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UsCisgICAgICAgICAgIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHIsIGV0aGVyU3RhdHNEYXRhU291cmNlX3ZhbF9wdHJfbGVuKTsKKyAgICAvKiogY29udmVydCBieXRlcyB0byBudW1iZXIgb2Ygb2lkICovCisgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZV9sZW4gPQorICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyX2xlbiAvCisgICAgICAgIHNpemVvZihldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyWzBdKTsKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0ICovCisKKy8qKgorICogdW5kbyB0aGUgcHJldmlvdXMgc2V0LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqLworaW50CitldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1NjpvOiB8LT4gQ2xlYW4gdXAgZXRoZXJTdGF0c0RhdGFTb3VyY2UgdW5kby4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGNvcHkgZXRoZXJTdGF0c0RhdGFTb3VyY2UgYW5kIGV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiBkYXRhCisgICAgICogc2V0IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c0RhdGFTb3VyY2UgZnJvbSByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZQorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlLAorICAgICAgICAgICByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzRGF0YVNvdXJjZSwKKyAgICAgICAgICAgKHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiAqCisgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzRGF0YVNvdXJjZVswXSkpKTsKKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbiA9CisgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNEYXRhU291cmNlX2xlbjsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c0VudHJ5LmV0aGVyU3RhdHNPd25lcgorICogZXRoZXJTdGF0c093bmVyIGlzIHN1YmlkIDIwIG9mIGV0aGVyU3RhdHNFbnRyeS4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudCwgYW5kIGl0cyBhY2Nlc3MgbGV2ZWwgaXMgQ3JlYXRlLgorICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLjEuMjAKKyAqIERlc2NyaXB0aW9uOgorVGhlIGVudGl0eSB0aGF0IGNvbmZpZ3VyZWQgdGhpcyBlbnRyeSBhbmQgaXMgdGhlcmVmb3JlCisgICAgICAgIHVzaW5nIHRoZSByZXNvdXJjZXMgYXNzaWduZWQgdG8gaXQuCisgKgorICogQXR0cmlidXRlczoKKyAqICAgYWNjZXNzaWJsZSAxICAgICBpc3NjYWxhciAwICAgICBlbnVtcyAgMCAgICAgIGhhc2RlZnZhbCAwCisgKiAgIHJlYWRhYmxlICAgMSAgICAgaXNjb2x1bW4gMSAgICAgcmFuZ2VzIDEgICAgICBoYXNoaW50ICAgMAorICogICBzZXR0YWJsZSAgIDEKKyAqCisgKiBSYW5nZXM6ICAwIC0gMTI3OworICoKKyAqIEl0cyBzeW50YXggaXMgT3duZXJTdHJpbmcgKGJhc2VkIG9uIHBlcmx0eXBlIE9DVEVUU1RSKQorICogVGhlIG5ldC1zbm1wIHR5cGUgaXMgQVNOX09DVEVUX1NUUi4gVGhlIEMgdHlwZSBkZWNsIGlzIGNoYXIgKGNoYXIpCisgKiBUaGlzIGRhdGEgdHlwZSByZXF1aXJlcyBhIGxlbmd0aC4gIChNYXggMTI3KQorICovCisvKioKKyAqIENoZWNrIHRoYXQgdGhlIHByb3Bvc2VkIG5ldyB2YWx1ZSBpcyBwb3RlbnRpYWxseSB2YWxpZC4KKyAqCisgKiBAcGFyYW0gcm93cmVxX2N0eAorICogICAgICAgIFBvaW50ZXIgdG8gdGhlIHJvdyByZXF1ZXN0IGNvbnRleHQuCisgKiBAcGFyYW0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIKKyAqICAgICAgICBBIGNoYXIgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICogQHBhcmFtIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbgorICogICAgICAgIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIGRhdGEgcG9pbnRlZCB0byBieSBldGhlclN0YXRzT3duZXJfdmFsX3B0cgorICoKKyAqIEByZXR2YWwgTUZEX1NVQ0NFU1MgICAgICAgIDogaW5jb21pbmcgdmFsdWUgaXMgbGVnYWwKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9OT1cgIDogaW5jb21pbmcgdmFsdWUgaXMgbm90IHZhbGlkIG5vdworICogQHJldHZhbCBNRkRfTk9UX1ZBTElEX0VWRVIgOiBpbmNvbWluZyB2YWx1ZSBpcyBuZXZlciB2YWxpZAorICoKKyAqIFRoaXMgaXMgdGhlIHBsYWNlIHRvIGNoZWNrIGZvciByZXF1aXJlbWVudHMgdGhhdCBhcmUgbm90CisgKiBleHByZXNzZWQgaW4gdGhlIG1pYiBzeW50YXggKGZvciBleGFtcGxlLCBhIHJlcXVpcmVtZW50IHRoYXQKKyAqIGlzIGRldGFpbGVkIGluIHRoZSBkZXNjcmlwdGlvbiBmb3IgYW4gb2JqZWN0KS4KKyAqCisgKiBZb3Ugc2hvdWxkIGNoZWNrIHRoYXQgdGhlIHJlcXVlc3RlZCBjaGFuZ2UgYmV0d2VlbiB0aGUgdW5kbyB2YWx1ZSBhbmQgdGhlCisgKiBuZXcgdmFsdWUgaXMgbGVnYWwgKGllLCB0aGUgdHJhbnNpc3Rpb24gZnJvbSBvbmUgdmFsdWUgdG8gYW5vdGhlcgorICogaXMgbGVnYWwpLgorICogICAgICAKKyAqQG5vdGUKKyAqIFRoaXMgY2hlY2sgaXMgb25seSB0byBkZXRlcm1pbmUgaWYgdGhlIG5ldyB2YWx1ZQorICogaXMgXGIgcG90ZW50aWFsbHkgdmFsaWQuIFRoaXMgaXMgdGhlIGZpcnN0IGNoZWNrIG9mIG1hbnksIGFuZAorICogaXMgb25lIG9mIHRoZSBzaW1wbGVzdCBvbmVzLgorICogCisgKkBub3RlCisgKiB0aGlzIGlzIG5vdCB0aGUgcGxhY2UgdG8gZG8gYW55IGNoZWNrcyBmb3IgdmFsdWVzCisgKiB3aGljaCBkZXBlbmQgb24gc29tZSBvdGhlciB2YWx1ZSBpbiB0aGUgbWliLiBUaG9zZQorICogdHlwZXMgb2YgY2hlY2tzIHNob3VsZCBiZSBkb25lIGluIHRoZQorICogZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2RlcGVuZGVuY2llcygpIGZ1bmN0aW9uLgorICoKKyAqIFRoZSBmb2xsb3dpbmcgY2hlY2tzIGhhdmUgYWxyZWFkeSBiZWVuIGRvbmUgZm9yIHlvdToKKyAqICAgIFRoZSBzeW50YXggaXMgQVNOX09DVEVUX1NUUgorICogICAgVGhlIGxlbmd0aCBpcyA8IHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcikuCisgKiAgICBUaGUgbGVuZ3RoIGlzIGluIChvbmUgb2YpIHRoZSByYW5nZSBzZXQocyk6ICAwIC0gMTI3CisgKgorICogSWYgdGhlcmUgYSBubyBvdGhlciBjaGVja3MgeW91IG5lZWQgdG8gZG8sIHNpbXBseSByZXR1cm4gTUZEX1NVQ0NFU1MuCisgKgorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl9jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbikKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT3duZXJfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86NDQxOm86IHwtPiBDaGVjayBmb3IgdmFsaWQgZXRoZXJTdGF0c093bmVyIHZhbHVlLgorICAgICAqLworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOyAgICAgICAgIC8qIGV0aGVyU3RhdHNPd25lciB2YWx1ZSBub3QgaWxsZWdhbCAqLworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfY2hlY2tfdmFsdWUgKi8KKworLyoqCisgKiBTYXZlIG9sZCB2YWx1ZSBpbmZvcm1hdGlvbgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvci4gc2V0IHdpbGwgZmFpbC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSB0YWJsZSBsZXZlbCB1bmRvIHNldHVwIGZ1bmN0aW9uCisgKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCBoYXMgYmVlbiBjYWxsZWQuCisgKgorICpAbm90ZQorICogdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIGEgbmV3IHZhbHVlIGlzIHNldCBmb3IgdGhpcyBjb2x1bW4uCisgKgorICogSWYgdGhlcmUgaXMgYW55IHNldHVwIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb2x1bW4gKGUuZy4gYWxsb2NhdGluZworICogbWVtb3J5IGZvciBhIHN0cmluZyksIHlvdSBzaG91bGQgZG8gdGhhdCBzZXR1cCBpbiB0aGlzIGZ1bmN0aW9uLCBzbyBpdAorICogd29uJ3QgYmUgZG9uZSB1bmxlc3MgaXQgaXMgbmVjZXNzYXJ5LgorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c093bmVyX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBzaG91bGQgbmV2ZXIgZ2V0IGEgTlVMTCBwb2ludGVyICovCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTU6bzogfC0+IFNldHVwIGV0aGVyU3RhdHNPd25lciB1bmRvLgorICAgICAqLworICAgIC8qCisgICAgICogY29weSBldGhlclN0YXRzT3duZXIgYW5kIGV0aGVyU3RhdHNPd25lcl9sZW4gZGF0YQorICAgICAqIHNldCByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXIgZnJvbSByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcgorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXIsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyLAorICAgICAgICAgICAocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXJfbGVuICoKKyAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXJbMF0pKSk7CisgICAgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c093bmVyX2xlbiA9CisgICAgICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbjsKKworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfdW5kb19zZXR1cCAqLworCisvKioKKyAqIFNldCB0aGUgbmV3IHZhbHVlLgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4gWW91IHNob3VsZCBrbm93IGhvdyB0bworICogICAgICAgIG1hbmlwdWxhdGUgdGhlIHZhbHVlIGZyb20gdGhpcyBvYmplY3QuCisgKiBAcGFyYW0gZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIKKyAqICAgICAgICBBIGNoYXIgY29udGFpbmluZyB0aGUgbmV3IHZhbHVlLgorICogQHBhcmFtIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbgorICogICAgICAgIFRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIGRhdGEgcG9pbnRlZCB0byBieSBldGhlclN0YXRzT3duZXJfdmFsX3B0cgorICovCitpbnQKK2V0aGVyU3RhdHNPd25lcl9zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICBjaGFyICpldGhlclN0YXRzT3duZXJfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbikKK3sKKworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzT3duZXJfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBldGhlclN0YXRzT3duZXJfdmFsX3B0cik7CisKKyAgICAvKgorICAgICAqIFRPRE86NDYxOk06IHwtPiBTZXQgZXRoZXJTdGF0c093bmVyIHZhbHVlLgorICAgICAqIHNldCBldGhlclN0YXRzT3duZXIgdmFsdWUgaW4gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqLworICAgIG1lbWNweShyb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lciwgZXRoZXJTdGF0c093bmVyX3ZhbF9wdHIsCisgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbik7CisgICAgLyoqIGNvbnZlcnQgYnl0ZXMgdG8gbnVtYmVyIG9mIGNoYXIgKi8KKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNPd25lcl9sZW4gPQorICAgICAgICBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW4gLyBzaXplb2YoZXRoZXJTdGF0c093bmVyX3ZhbF9wdHJbMF0pOworCisgICAgcmV0dXJuIE1GRF9TVUNDRVNTOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzT3duZXJfc2V0ICovCisKKy8qKgorICogdW5kbyB0aGUgcHJldmlvdXMgc2V0LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqLworaW50CitldGhlclN0YXRzT3duZXJfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c093bmVyX3VuZG8iLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDU2Om86IHwtPiBDbGVhbiB1cCBldGhlclN0YXRzT3duZXIgdW5kby4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGNvcHkgZXRoZXJTdGF0c093bmVyIGFuZCBldGhlclN0YXRzT3duZXJfbGVuIGRhdGEKKyAgICAgKiBzZXQgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXIgZnJvbSByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzT3duZXIKKyAgICAgKi8KKyAgICBtZW1jcHkocm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzT3duZXIsCisgICAgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lciwKKyAgICAgICAgICAgKHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lcl9sZW4gKgorICAgICAgICAgICAgc2l6ZW9mKHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyWzBdKSkpOworICAgIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c093bmVyX2xlbiA9CisgICAgICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNPd25lcl9sZW47CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c093bmVyX3VuZG8gKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJNT04tTUlCOjpldGhlclN0YXRzRW50cnkuZXRoZXJTdGF0c1N0YXR1cworICogZXRoZXJTdGF0c1N0YXR1cyBpcyBzdWJpZCAyMSBvZiBldGhlclN0YXRzRW50cnkuCisgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQsIGFuZCBpdHMgYWNjZXNzIGxldmVsIGlzIENyZWF0ZS4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMS4xLjIxCisgKiBEZXNjcmlwdGlvbjoKK1RoZSBzdGF0dXMgb2YgdGhpcyBldGhlclN0YXRzIGVudHJ5LgorICoKKyAqIEF0dHJpYnV0ZXM6CisgKiAgIGFjY2Vzc2libGUgMSAgICAgaXNzY2FsYXIgMCAgICAgZW51bXMgIDEgICAgICBoYXNkZWZ2YWwgMAorICogICByZWFkYWJsZSAgIDEgICAgIGlzY29sdW1uIDEgICAgIHJhbmdlcyAwICAgICAgaGFzaGludCAgIDAKKyAqICAgc2V0dGFibGUgICAxCisgKgorICogRW51bSByYW5nZTogMi84LiBWYWx1ZXM6ICB2YWxpZCgxKSwgY3JlYXRlUmVxdWVzdCgyKSwgdW5kZXJDcmVhdGlvbigzKSwgaW52YWxpZCg0KQorICoKKyAqIEl0cyBzeW50YXggaXMgRW50cnlTdGF0dXMgKGJhc2VkIG9uIHBlcmx0eXBlIElOVEVHRVIpCisgKiBUaGUgbmV0LXNubXAgdHlwZSBpcyBBU05fSU5URUdFUi4gVGhlIEMgdHlwZSBkZWNsIGlzIGxvbmcgKHVfbG9uZykKKyAqLworLyoqCisgKiBDaGVjayB0aGF0IHRoZSBwcm9wb3NlZCBuZXcgdmFsdWUgaXMgcG90ZW50aWFsbHkgdmFsaWQuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSByb3cgcmVxdWVzdCBjb250ZXh0LgorICogQHBhcmFtIGV0aGVyU3RhdHNTdGF0dXNfdmFsCisgKiAgICAgICAgQSBsb25nIGNvbnRhaW5pbmcgdGhlIG5ldyB2YWx1ZS4KKyAqCisgKiBAcmV0dmFsIE1GRF9TVUNDRVNTICAgICAgICA6IGluY29taW5nIHZhbHVlIGlzIGxlZ2FsCisgKiBAcmV0dmFsIE1GRF9OT1RfVkFMSURfTk9XICA6IGluY29taW5nIHZhbHVlIGlzIG5vdCB2YWxpZCBub3cKKyAqIEByZXR2YWwgTUZEX05PVF9WQUxJRF9FVkVSIDogaW5jb21pbmcgdmFsdWUgaXMgbmV2ZXIgdmFsaWQKKyAqCisgKiBUaGlzIGlzIHRoZSBwbGFjZSB0byBjaGVjayBmb3IgcmVxdWlyZW1lbnRzIHRoYXQgYXJlIG5vdAorICogZXhwcmVzc2VkIGluIHRoZSBtaWIgc3ludGF4IChmb3IgZXhhbXBsZSwgYSByZXF1aXJlbWVudCB0aGF0CisgKiBpcyBkZXRhaWxlZCBpbiB0aGUgZGVzY3JpcHRpb24gZm9yIGFuIG9iamVjdCkuCisgKgorICogWW91IHNob3VsZCBjaGVjayB0aGF0IHRoZSByZXF1ZXN0ZWQgY2hhbmdlIGJldHdlZW4gdGhlIHVuZG8gdmFsdWUgYW5kIHRoZQorICogbmV3IHZhbHVlIGlzIGxlZ2FsIChpZSwgdGhlIHRyYW5zaXN0aW9uIGZyb20gb25lIHZhbHVlIHRvIGFub3RoZXIKKyAqIGlzIGxlZ2FsKS4KKyAqICAgICAgCisgKkBub3RlCisgKiBUaGlzIGNoZWNrIGlzIG9ubHkgdG8gZGV0ZXJtaW5lIGlmIHRoZSBuZXcgdmFsdWUKKyAqIGlzIFxiIHBvdGVudGlhbGx5IHZhbGlkLiBUaGlzIGlzIHRoZSBmaXJzdCBjaGVjayBvZiBtYW55LCBhbmQKKyAqIGlzIG9uZSBvZiB0aGUgc2ltcGxlc3Qgb25lcy4KKyAqIAorICpAbm90ZQorICogdGhpcyBpcyBub3QgdGhlIHBsYWNlIHRvIGRvIGFueSBjaGVja3MgZm9yIHZhbHVlcworICogd2hpY2ggZGVwZW5kIG9uIHNvbWUgb3RoZXIgdmFsdWUgaW4gdGhlIG1pYi4gVGhvc2UKKyAqIHR5cGVzIG9mIGNoZWNrcyBzaG91bGQgYmUgZG9uZSBpbiB0aGUKKyAqIGV0aGVyU3RhdHNUYWJsZV9jaGVja19kZXBlbmRlbmNpZXMoKSBmdW5jdGlvbi4KKyAqCisgKiBUaGUgZm9sbG93aW5nIGNoZWNrcyBoYXZlIGFscmVhZHkgYmVlbiBkb25lIGZvciB5b3U6CisgKiAgICBUaGUgc3ludGF4IGlzIEFTTl9JTlRFR0VSCisgKiAgICBUaGUgdmFsdWUgaXMgb25lIG9mICB2YWxpZCgxKSwgY3JlYXRlUmVxdWVzdCgyKSwgdW5kZXJDcmVhdGlvbigzKSwgaW52YWxpZCg0KQorICoKKyAqIElmIHRoZXJlIGEgbm8gb3RoZXIgY2hlY2tzIHlvdSBuZWVkIHRvIGRvLCBzaW1wbHkgcmV0dXJuIE1GRF9TVUNDRVNTLgorICoKKyAqLworaW50CitldGhlclN0YXRzU3RhdHVzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNTdGF0dXNfdmFsKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzU3RhdHVzX2NoZWNrX3ZhbHVlIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDQxOm86IHwtPiBDaGVjayBmb3IgdmFsaWQgZXRoZXJTdGF0c1N0YXR1cyB2YWx1ZS4KKyAgICAgKi8KKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsgICAgICAgICAvKiBldGhlclN0YXRzU3RhdHVzIHZhbHVlIG5vdCBpbGxlZ2FsICovCit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWUgKi8KKworLyoqCisgKiBTYXZlIG9sZCB2YWx1ZSBpbmZvcm1hdGlvbgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdGFibGUgY29udGV4dCAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgpCisgKgorICogQHJldHZhbCBNRkRfU1VDQ0VTUyA6IHN1Y2Nlc3MKKyAqIEByZXR2YWwgTUZEX0VSUk9SICAgOiBlcnJvci4gc2V0IHdpbGwgZmFpbC4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGFmdGVyIHRoZSB0YWJsZSBsZXZlbCB1bmRvIHNldHVwIGZ1bmN0aW9uCisgKiBldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cCBoYXMgYmVlbiBjYWxsZWQuCisgKgorICpAbm90ZQorICogdGhpcyBmdW5jdGlvbiB3aWxsIG9ubHkgYmUgY2FsbGVkIGlmIGEgbmV3IHZhbHVlIGlzIHNldCBmb3IgdGhpcyBjb2x1bW4uCisgKgorICogSWYgdGhlcmUgaXMgYW55IHNldHVwIHNwZWNpZmljIHRvIGEgcGFydGljdWxhciBjb2x1bW4gKGUuZy4gYWxsb2NhdGluZworICogbWVtb3J5IGZvciBhIHN0cmluZyksIHlvdSBzaG91bGQgZG8gdGhhdCBzZXR1cCBpbiB0aGlzIGZ1bmN0aW9uLCBzbyBpdAorICogd29uJ3QgYmUgZG9uZSB1bmxlc3MgaXQgaXMgbmVjZXNzYXJ5LgorICovCitpbnQKK2V0aGVyU3RhdHNTdGF0dXNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfdW5kb19zZXR1cCIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgLyoqIHNob3VsZCBuZXZlciBnZXQgYSBOVUxMIHBvaW50ZXIgKi8KKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiBUT0RPOjQ1NTpvOiB8LT4gU2V0dXAgZXRoZXJTdGF0c1N0YXR1cyB1bmRvLgorICAgICAqLworICAgIC8qCisgICAgICogY29weSBldGhlclN0YXRzU3RhdHVzIGRhdGEKKyAgICAgKiBzZXQgcm93cmVxX2N0eC0+dW5kby0+ZXRoZXJTdGF0c1N0YXR1cyBmcm9tIHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1N0YXR1cworICAgICAqLworICAgIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNTdGF0dXMgPSByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNTdGF0dXM7CisKKworICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1N0YXR1c191bmRvX3NldHVwICovCisKKy8qKgorICogU2V0IHRoZSBuZXcgdmFsdWUuCisgKgorICogQHBhcmFtIHJvd3JlcV9jdHgKKyAqICAgICAgICBQb2ludGVyIHRvIHRoZSB1c2VycyBjb250ZXh0LiBZb3Ugc2hvdWxkIGtub3cgaG93IHRvCisgKiAgICAgICAgbWFuaXB1bGF0ZSB0aGUgdmFsdWUgZnJvbSB0aGlzIG9iamVjdC4KKyAqIEBwYXJhbSBldGhlclN0YXRzU3RhdHVzX3ZhbAorICogICAgICAgIEEgbG9uZyBjb250YWluaW5nIHRoZSBuZXcgdmFsdWUuCisgKi8KK2ludAorZXRoZXJTdGF0c1N0YXR1c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNTdGF0dXNfdmFsKQoreworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogc2hvdWxkIG5ldmVyIGdldCBhIE5VTEwgcG9pbnRlciAqLworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIFRPRE86NDYxOk06IHwtPiBTZXQgZXRoZXJTdGF0c1N0YXR1cyB2YWx1ZS4KKyAgICAgKiBzZXQgZXRoZXJTdGF0c1N0YXR1cyB2YWx1ZSBpbiByb3dyZXFfY3R4LT5kYXRhCisgICAgICovCisgICAgcm93cmVxX2N0eC0+ZGF0YS5ldGhlclN0YXRzU3RhdHVzID0gZXRoZXJTdGF0c1N0YXR1c192YWw7CisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXNfc2V0ICovCisKKy8qKgorICogdW5kbyB0aGUgcHJldmlvdXMgc2V0LgorICoKKyAqIEBwYXJhbSByb3dyZXFfY3R4CisgKiAgICAgICAgUG9pbnRlciB0byB0aGUgdXNlcnMgY29udGV4dC4KKyAqLworaW50CitldGhlclN0YXRzU3RhdHVzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNTdGF0dXNfdW5kbyIsCisgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogVE9ETzo0NTY6bzogfC0+IENsZWFuIHVwIGV0aGVyU3RhdHNTdGF0dXMgdW5kby4KKyAgICAgKi8KKyAgICAvKgorICAgICAqIGNvcHkgZXRoZXJTdGF0c1N0YXR1cyBkYXRhCisgICAgICogc2V0IHJvd3JlcV9jdHgtPmRhdGEuZXRoZXJTdGF0c1N0YXR1cyBmcm9tIHJvd3JlcV9jdHgtPnVuZG8tPmV0aGVyU3RhdHNTdGF0dXMKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5kYXRhLmV0aGVyU3RhdHNTdGF0dXMgPSByb3dyZXFfY3R4LT51bmRvLT5ldGhlclN0YXRzU3RhdHVzOworCisKKyAgICByZXR1cm4gTUZEX1NVQ0NFU1M7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNTdGF0dXNfdW5kbyAqLworCisvKiogQH0gKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZGF0YV9zZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNThlMDg3Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9kYXRhX3NldC5oCkBAIC0wLDAgKzEsMzU2IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxMjA3NyAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfREFUQV9TRVRfSAorI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfREFUQV9TRVRfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBTRVQgZnVuY3Rpb24gZGVjbGFyYXRpb25zCisgICAgICovCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKiBTRVQgVGFibGUgZGVjbGFyYXRpb25zCisgICAgICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqKioKKyAqKiogVGFibGUgZXRoZXJTdGF0c1RhYmxlCisgKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisgICAgLyoKKyAgICAgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c1RhYmxlIGlzIHN1YmlkIDEgb2Ygc3RhdGlzdGljcy4KKyAgICAgKiBJdHMgc3RhdHVzIGlzIEN1cnJlbnQuCisgICAgICogT0lEOiAuMS4zLjYuMS4yLjEuMTYuMS4xLCBsZW5ndGg6IDkKKyAgICAgKi8KKworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfY29tbWl0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworCisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4pOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c0RhdGFTb3VyY2VfdmFsX3B0cl9sZW4pOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRHJvcEV2ZW50c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzRHJvcEV2ZW50c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRHJvcEV2ZW50c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Ryb3BFdmVudHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNEcm9wRXZlbnRzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c09jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c09jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzUGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzUGt0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzUGt0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQnJvYWRjYXN0UGt0c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNCcm9hZGNhc3RQa3RzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzTXVsdGljYXN0UGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c011bHRpY2FzdFBrdHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9yc192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ1JDQWxpZ25FcnJvcnNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVW5kZXJzaXplUGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c092ZXJzaXplUGt0c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3ZlcnNpemVQa3RzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c0ZyYWdtZW50c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzRnJhZ21lbnRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNGcmFnbWVudHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNGcmFnbWVudHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0ZyYWdtZW50c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNKYWJiZXJzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNKYWJiZXJzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzSmFiYmVyc192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzSmFiYmVyc191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uc19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyBldGhlclN0YXRzQ29sbGlzaW9uc192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzQ29sbGlzaW9uc191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c0NvbGxpc2lvbnNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNDb2xsaXNpb25zX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNDb2xsaXNpb25zX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfY2hlY2tfdmFsdWUoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czY0T2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzNjRPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM2NE9jdGV0c191bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czEyOHRvMjU1T2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX2NoZWNrX3ZhbHVlKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c191bmRvX3NldHVwKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX3NldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19jaGVja192YWx1ZQorICAgICAgICAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgdV9sb25nIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzX3VuZG9fc2V0dXAoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdmFsKTsKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAKKyAgICAgICAgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2NoZWNrX3ZhbHVlCisgICAgICAgIChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgCisgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c191bmRvX3NldHVwCisgICAgICAgIChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0c192YWwpOworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzUGt0czEwMjR0bzE1MThPY3RldHNfdW5kbyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworCisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl9jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfdmFsX3B0cl9sZW4pOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzT3duZXJfc2V0KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmV0aGVyU3RhdHNPd25lcl92YWxfcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl92YWxfcHRyX2xlbik7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNPd25lcl91bmRvKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1c19jaGVja192YWx1ZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogcm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX3ZhbCk7CisgICAgaW50ICAgICAgICAgICAgIGV0aGVyU3RhdHNTdGF0dXNfdW5kb19zZXR1cChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByb3dyZXFfY3R4KTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1c19zZXQoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgZXRoZXJTdGF0c1N0YXR1c192YWwpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzU3RhdHVzX3VuZG8oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCk7CisKKworICAgIGludCAgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfY2hlY2tfZGVwZW5kZW5jaWVzKGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdHgpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9EQVRBX1NFVF9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2VudW1zLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2VudW1zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTEzYzBiNwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfZW51bXMuaApAQCAtMCwwICsxLDU3IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICA6IGdlbmVyaWMtdGFibGUtZW51bXMubTJjIDEyNTI2IDIwMDUtMDctMTUgMjI6NDE6MTZaIHJzdG9yeSAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfRU5VTVNfSAorI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfRU5VTVNfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIE5PVEVTIG9uIGVudW1zCisgICAgICogPT09PT09PT09PT09PT0KKyAgICAgKgorICAgICAqIFZhbHVlIE1hcHBpbmcKKyAgICAgKiAtLS0tLS0tLS0tLS0tCisgICAgICogSWYgdGhlIHZhbHVlcyBmb3IgeW91ciBkYXRhIHR5cGUgZG9uJ3QgZXhhY3RseSBtYXRjaCB0aGUKKyAgICAgKiBwb3NzaWJsZSB2YWx1ZXMgZGVmaW5lZCBieSB0aGUgbWliLCB5b3Ugc2hvdWxkIG1hcCB0aGVtCisgICAgICogYmVsb3cuIEZvciBleGFtcGxlLCBhIGJvb2xlYW4gZmxhZyAoMS8wKSBpcyB1c3VhbGx5IHJlcHJlc2VudGVkCisgICAgICogYXMgYSBUcnV0aFZhbHVlIGluIGEgTUlCLCB3aGljaCBtYXBzIHRvIHRoZSB2YWx1ZXMgKDEvMikuCisgICAgICoKKyAgICAgKi8KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIGVudW0gZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGV0aGVyU3RhdHNUYWJsZQorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqIGNvbnN0YW50cyBmb3IgZW51bXMgZm9yIHRoZSBNSUIgbm9kZQorICogZXRoZXJTdGF0c1N0YXR1cyAoRW50cnlTdGF0dXMgLyBBU05fSU5URUdFUikKKyAqCisgKiBzaW5jZSBhIFRleHR1YWwgQ29udmVudGlvbiBtYXkgYmUgcmVmZXJlbmNlZCBtb3JlIHRoYW4gb25jZSBpbiBhCisgKiBNSUIsIHByb3RlY3QgYWdhaW50IHJlZGVmaW5pdGlvbnMgb2YgdGhlIGVudW0gdmFsdWVzLgorICovCisjaWZuZGVmIEVOVFJZU1RBVFVTX0VOVU1TCisjZGVmaW5lIEVOVFJZU1RBVFVTX0VOVU1TCisKKyNkZWZpbmUgRU5UUllTVEFUVVNfVkFMSUQgIDEKKyNkZWZpbmUgRU5UUllTVEFUVVNfQ1JFQVRFUkVRVUVTVCAgMgorI2RlZmluZSBFTlRSWVNUQVRVU19VTkRFUkNSRUFUSU9OICAzCisjZGVmaW5lIEVOVFJZU1RBVFVTX0lOVkFMSUQgIDQKKworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFTlRSWVNUQVRVU19FTlVNUyAqLworCisKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFVEhFUlNUQVRTVEFCTEVfRU5VTVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuYyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTEwMzYyYQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlLmMKQEAgLTAsMCArMSwyMjIzIEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQgCisgKgorICogJElkOiQKKyAqLworLyoKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRISVMgRklMRSBET0VTIE5PVCBDT05UQUlOIEFOWSBVU0VSIEVESVRBQkxFIENPREUuICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgIFRIRSBHRU5FUkFURUQgQ09ERSBJUyBJTlRFUk5BTCBJTVBMRU1FTlRBVElPTiwgQU5EICAgICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgIElTIFNVQkpFQ1QgVE8gQ0hBTkdFIFdJVEhPVVQgV0FSTklORyBJTiBGVVRVUkUgUkVMRUFTRVMuICAgKioqCisgKiAqKiogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICovCisKKy8qCisgKiBzdGFuZGFyZCBOZXQtU05NUCBpbmNsdWRlcyAKKyAqLworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworLyoKKyAqIGluY2x1ZGUgb3VyIHBhcmVudCBoZWFkZXIgCisgKi8KKyNpbmNsdWRlICJldGhlclN0YXRzVGFibGUuaCIKKworCisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaD4KKworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoqKgorICoqKiBUYWJsZSBldGhlclN0YXRzVGFibGUKKyAqKioKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBSTU9OLU1JQjo6ZXRoZXJTdGF0c1RhYmxlIGlzIHN1YmlkIDEgb2Ygc3RhdGlzdGljcy4KKyAqIEl0cyBzdGF0dXMgaXMgQ3VycmVudC4KKyAqIE9JRDogLjEuMy42LjEuMi4xLjE2LjEuMSwgbGVuZ3RoOiA5CisgKi8KK3R5cGVkZWYgc3RydWN0IGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4X3MgeworCisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICBuZXRzbm1wX2NhY2hlICAqY2FjaGU7CisKKyAgICBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICp1c2VyX2N0eDsKKworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gdGJsX2luZm87CisKKyAgICBuZXRzbm1wX2JhYnlfc3RlcHNfYWNjZXNzX21ldGhvZHMgYWNjZXNzX211bHRpcGxleGVyOworCisgICAgdV9pbnQgICAgICAgICAgIHRhYmxlX2RpcnR5OworCit9IGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4OworCitzdGF0aWMgZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggZXRoZXJTdGF0c1RhYmxlX2lmX2N0eDsKKworc3RhdGljIHZvaWQgICAgCitfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0KGV0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2VfY3R4ICogaWZfY3R4KTsKK3N0YXRpYyB2b2lkICAgIAorX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWZfY3R4KTsKKworCituZXRzbm1wX2NvbnRhaW5lciAqCitldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2dldCh2b2lkKQoreworICAgIHJldHVybiBldGhlclN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lcjsKK30KKworZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqCitldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKQoreworICAgIHJldHVybiBldGhlclN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4OworfQorCitldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKK2V0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiBuZXdyZWcpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbiAqb2xkID0gZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eDsKKyAgICBldGhlclN0YXRzVGFibGVfaWZfY3R4LnVzZXJfY3R4ID0gbmV3cmVnOworICAgIHJldHVybiBvbGQ7Cit9CisKK2ludAorZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpCit7CisgICAgcmV0dXJuIENPTlRBSU5FUl9TSVpFKGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKTsKK30KKwordV9pbnQKK2V0aGVyU3RhdHNUYWJsZV9kaXJ0eV9nZXQodm9pZCkKK3sKKyAgICByZXR1cm4gZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC50YWJsZV9kaXJ0eTsKK30KKwordm9pZAorZXRoZXJTdGF0c1RhYmxlX2RpcnR5X3NldCh1X2ludCBzdGF0dXMpCit7CisgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfZGlydHlfc2V0IiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkLiB3YXMgJWQsIG5vdyAlZFxuIiwKKyAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaWZfY3R4LnRhYmxlX2RpcnR5LCBzdGF0dXMpKTsKKyAgICBldGhlclN0YXRzVGFibGVfaWZfY3R4LnRhYmxlX2RpcnR5ID0gc3RhdHVzOworfQorCisvKgorICogbWZkIG11bHRpcGxleGVyIG1vZGVzCisgKi8KK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3Q7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfdmFsdWVzOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX29iamVjdHM7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9zZXRfdmFsdWVzOworc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cDsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3ZhbHVlczsKK3N0YXRpYyBOZXRzbm1wX05vZGVfSGFuZGxlciBfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQ7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQ7CitzdGF0aWMgTmV0c25tcF9Ob2RlX0hhbmRsZXIgX21mZF9ldGhlclN0YXRzVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdDsKKworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtbihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbik7CisKK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfY2hlY2tfaW5kZXhlcyhldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgpOworCitldGhlclN0YXRzVGFibGVfZGF0YSAqZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX2RhdGEodm9pZCk7CisKKy8qKgorICogQGludGVybmFsCisgKiBJbml0aWFsaXplIHRoZSB0YWJsZSBldGhlclN0YXRzVGFibGUgCisgKiAgICAoRGVmaW5lIGl0cyBjb250ZW50cyBhbmQgaG93IGl0J3Mgc3RydWN0dXJlZCkKKyAqLwordm9pZAorX2V0aGVyU3RhdHNUYWJsZV9pbml0aWFsaXplX2ludGVyZmFjZShldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX3B0ciwgdV9sb25nIGZsYWdzKQoreworICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kcyAqYWNjZXNzX211bHRpcGxleGVyID0KKyAgICAgICAgJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHguYWNjZXNzX211bHRpcGxleGVyOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRibF9pbmZvID0KKyAgICAgICAgJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudGJsX2luZm87CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbzsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyOworICAgIGludCAgICAgICAgICAgICBtZmRfbW9kZXMgPSAwOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlIiwgImNhbGxlZFxuIikpOworCisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogc2F2ZSBpbnRlcmZhY2UgY29udGV4dCBmb3IgZXRoZXJTdGF0c1RhYmxlCisgICAgICovCisgICAgLyoKKyAgICAgKiBTZXR0aW5nIHVwIHRoZSB0YWJsZSdzIGRlZmluaXRpb24KKyAgICAgKi8KKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YmxfaW5mbywgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qKiBpbmRleDogZXRoZXJTdGF0c0luZGV4ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CisKKyAgICAvKgorICAgICAqIERlZmluZSB0aGUgbWluaW11bSBhbmQgbWF4aW11bSBhY2Nlc3NpYmxlIGNvbHVtbnMuICBUaGlzCisgICAgICogb3B0aW1pemVzIHJldHJpdmFsLiAKKyAgICAgKi8KKyAgICB0YmxfaW5mby0+bWluX2NvbHVtbiA9IEVUSEVSU1RBVFNUQUJMRV9NSU5fQ09MOworICAgIHRibF9pbmZvLT5tYXhfY29sdW1uID0gRVRIRVJTVEFUU1RBQkxFX01BWF9DT0w7CisKKyAgICAvKgorICAgICAqIHNhdmUgdXNlcnMgY29udGV4dAorICAgICAqLworICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHggPSByZWdfcHRyOworCisgICAgLyoKKyAgICAgKiBjYWxsIGRhdGEgYWNjZXNzIGluaXRpYWxpemF0aW9uIGNvZGUKKyAgICAgKi8KKyAgICBldGhlclN0YXRzVGFibGVfaW5pdF9kYXRhKHJlZ19wdHIpOworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmV0aGVyU3RhdHNUYWJsZV9pZl9jdHgpOworICAgIGlmIChOVUxMID09IGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBjb250YWluZXIgZm9yIGV0aGVyU3RhdHNUYWJsZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFjY2Vzc19tdWx0aXBsZXhlcjogUkVRVUlSRUQgd3JhcHBlciBmb3IgZ2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9sb29rdXAgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+Z2V0X3ZhbHVlcyA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF92YWx1ZXM7CisKKyAgICAvKgorICAgICAqIG5vIHdyYXBwZXJzIHlldAorICAgICAqLworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdDsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnBvc3RfcmVxdWVzdCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdDsKKworCisgICAgLyoKKyAgICAgKiBSRVFVSVJFRCB3cmFwcGVycyBmb3Igc2V0IHJlcXVlc3QgaGFuZGxpbmcKKyAgICAgKi8KKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPm9iamVjdF9zeW50YXhfY2hlY2tzID0KKyAgICAgICAgX21mZF9ldGhlclN0YXRzVGFibGVfY2hlY2tfb2JqZWN0czsKKyAgICBhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXAgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+dW5kb19jbGVhbnVwID0gX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jbGVhbnVwOworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+c2V0X3ZhbHVlcyA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXM7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT51bmRvX3NldHMgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3ZhbHVlczsKKworICAgIC8qCisgICAgICogbm8gd3JhcHBlcnMgeWV0CisgICAgICovCisgICAgYWNjZXNzX211bHRpcGxleGVyLT5jb21taXQgPSBfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQ7CisgICAgYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCA9IF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0OworICAgIGFjY2Vzc19tdWx0aXBsZXhlci0+aXJyZXZlcnNpYmxlX2NvbW1pdCA9CisgICAgICAgIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2lycmV2ZXJzaWJsZV9jb21taXQ7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogQ3JlYXRlIGEgcmVnaXN0cmF0aW9uLCBzYXZlIG91ciByZWcgZGF0YSwgcmVnaXN0ZXIgdGFibGUuCisgICAgICovCisgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTppbml0X2V0aGVyU3RhdHNUYWJsZSIsCisgICAgICAgICAgICAgICAgIlJlZ2lzdGVyaW5nIGV0aGVyU3RhdHNUYWJsZSBhcyBhIG1pYnMtZm9yLWR1bW1pZXMgdGFibGUuXG4iKSk7CisgICAgaGFuZGxlciA9CisgICAgICAgIG5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXJfZ2V0KGFjY2Vzc19tdWx0aXBsZXhlcik7CisgICAgcmVnaW5mbyA9CisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlKCJldGhlclN0YXRzVGFibGUiLCBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfb2lkX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX0JBQllfU1RFUCB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSk7CisgICAgaWYgKE5VTEwgPT0gcmVnaW5mbykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgZXRoZXJTdGF0c1RhYmxlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICByZWdpbmZvLT5teV9yZWdfdm9pZCA9ICZldGhlclN0YXRzVGFibGVfaWZfY3R4OworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIHNldCB1cCBiYWJ5IHN0ZXBzIGhhbmRsZXIsIGNyZWF0ZSBpdCBhbmQgaW5qZWN0IGl0CisgICAgICovCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X2xvb2t1cCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9PQkpFQ1RfTE9PS1VQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnNldF92YWx1ZXMpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfU0VUX1ZBTFVFUzsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5pcnJldmVyc2libGVfY29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0lSUkVWRVJTSUJMRV9DT01NSVQ7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+b2JqZWN0X3N5bnRheF9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfT0JKRUNUOworCisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cHJlX3JlcXVlc3QpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUFJFX1JFUVVFU1Q7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+cG9zdF9yZXF1ZXN0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX1BPU1RfUkVRVUVTVDsKKworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0dXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19TRVRVUDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NsZWFudXApCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfVU5ET19DTEVBTlVQOworICAgIGlmIChhY2Nlc3NfbXVsdGlwbGV4ZXItPnVuZG9fc2V0cykKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX1NFVFM7CisKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5yb3dfY3JlYXRpb24pCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfUk9XX0NSRUFURTsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT5jb25zaXN0ZW5jeV9jaGVja3MpCisgICAgICAgIG1mZF9tb2RlcyB8PSBCQUJZX1NURVBfQ0hFQ0tfQ09OU0lTVEVOQ1k7CisgICAgaWYgKGFjY2Vzc19tdWx0aXBsZXhlci0+Y29tbWl0KQorICAgICAgICBtZmRfbW9kZXMgfD0gQkFCWV9TVEVQX0NPTU1JVDsKKyAgICBpZiAoYWNjZXNzX211bHRpcGxleGVyLT51bmRvX2NvbW1pdCkKKyAgICAgICAgbWZkX21vZGVzIHw9IEJBQllfU1RFUF9VTkRPX0NPTU1JVDsKKworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2JhYnlfc3RlcHNfaGFuZGxlcl9nZXQobWZkX21vZGVzKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCByb3dfbWVyZ2UgaGVscGVyIHdpdGggcHJlZml4IHJvb3RvaWRfbGVuICsgMiAoZW50cnkuY29sKQorICAgICAqLworICAgIGhhbmRsZXIgPSBuZXRzbm1wX2dldF9yb3dfbWVyZ2VfaGFuZGxlcihyZWdpbmZvLT5yb290b2lkX2xlbiArIDIpOworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywgaGFuZGxlcik7CisKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGJsX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFCTEVfQ09OVEFJTkVSX0tFWV9ORVRTTk1QX0lOREVYKTsKKyAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIGluamVjdCBjYWNoZSBoZWxwZXIKKyAgICAgKi8KKyAgICBpZiAoTlVMTCAhPSBldGhlclN0YXRzVGFibGVfaWZfY3R4LmNhY2hlKSB7CisgICAgICAgIGhhbmRsZXIgPSBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY2FjaGUpOworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm8sIGhhbmRsZXIpOworICAgIH0KKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGFibGUKKyAgICAgKi8KKyAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZ2luZm8sIHRibF9pbmZvKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2luaXRpYWxpemVfaW50ZXJmYWNlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBTaHV0ZG93biB0aGUgdGFibGUgZXRoZXJTdGF0c1RhYmxlCisgKi8KK3ZvaWQKK19ldGhlclN0YXRzVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKiByZWdfcHRyKQoreworICAgIC8qCisgICAgICogc2h1dGRvd24gdGhlIGNvbnRhaW5lcgorICAgICAqLworICAgIF9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX3NodXRkb3duKCZldGhlclN0YXRzVGFibGVfaWZfY3R4KTsKK30KKwordm9pZAorZXRoZXJTdGF0c1RhYmxlX3ZhbGlkX2NvbHVtbnNfc2V0KG5ldHNubXBfY29sdW1uX2luZm8gKnZjKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudGJsX2luZm8udmFsaWRfY29sdW1ucyA9IHZjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfdmFsaWRfY29sdW1uc19zZXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIGNvbnZlcnQgdGhlIGluZGV4IGNvbXBvbmVudCBzdG9yZWQgaW4gdGhlIGNvbnRleHQgdG8gYW4gb2lkCisgKi8KK2ludAorZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgaW50ICAgICAgICAgICAgIGVyciA9IFNOTVBfRVJSX05PRVJST1I7CisKKyAgICAvKgorICAgICAqIHRlbXAgc3RvcmFnZSBmb3IgcGFyc2luZyBpbmRleGVzCisgICAgICovCisgICAgLyoKKyAgICAgKiBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2gKKyAgICAgKi8KKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgdmFyX2V0aGVyU3RhdHNJbmRleDsKKworICAgIC8qCisgICAgICogc2V0IHVwIHZhcmJpbmRzCisgICAgICovCisgICAgbWVtc2V0KCZ2YXJfZXRoZXJTdGF0c0luZGV4LCAweDAwLCBzaXplb2YodmFyX2V0aGVyU3RhdHNJbmRleCkpOworICAgIHZhcl9ldGhlclN0YXRzSW5kZXgudHlwZSA9IEFTTl9JTlRFR0VSOworCisgICAgLyoKKyAgICAgKiBjaGFpbiB0ZW1wIGluZGV4IHZhcmJpbmRzIHRvZ2V0aGVyCisgICAgICovCisgICAgdmFyX2V0aGVyU3RhdHNJbmRleC5uZXh0X3ZhcmlhYmxlID0gTlVMTDsKKworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9pbmRleF90b19vaWQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oIAorICAgICAqLworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyX2V0aGVyU3RhdHNJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIG1pYl9pZHgtPmV0aGVyU3RhdHNJbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1pYl9pZHgtPmV0aGVyU3RhdHNJbmRleCkpOworCisKKyAgICBlcnIgPSBidWlsZF9vaWRfbm9hbGxvYyhvaWRfaWR4LT5vaWRzLCBvaWRfaWR4LT5sZW4sICZvaWRfaWR4LT5sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnZhcl9ldGhlclN0YXRzSW5kZXgpOworICAgIGlmIChlcnIpCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciAlZCBjb252ZXJ0aW5nIGluZGV4IHRvIG9pZFxuIiwgZXJyKTsKKworICAgIC8qCisgICAgICogcGFyc2luZyBtYXkgaGF2ZSBhbGxvY2F0ZWQgbWVtb3J5LiBmcmVlIGl0LgorICAgICAqLworICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMoJnZhcl9ldGhlclN0YXRzSW5kZXgpOworCisgICAgcmV0dXJuIGVycjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZCAqLworCisvKioKKyAqIGV4dHJhY3QgZXRoZXJTdGF0c1RhYmxlIGluZGV4ZXMgZnJvbSBhIG5ldHNubXBfaW5kZXgKKyAqCisgKiBAcmV0dmFsIFNOTVBfRVJSX05PRVJST1IgIDogbm8gZXJyb3IKKyAqIEByZXR2YWwgU05NUF9FUlJfR0VORVJSICAgOiBlcnJvcgorICovCitpbnQKK2V0aGVyU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZChuZXRzbm1wX2luZGV4ICogb2lkX2lkeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfbWliX2luZGV4ICogbWliX2lkeCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgZXJyID0gU05NUF9FUlJfTk9FUlJPUjsKKworICAgIC8qCisgICAgICogdGVtcCBzdG9yYWdlIGZvciBwYXJzaW5nIGluZGV4ZXMKKyAgICAgKi8KKyAgICAvKgorICAgICAqIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaAorICAgICAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB2YXJfZXRoZXJTdGF0c0luZGV4OworCisgICAgLyoKKyAgICAgKiBzZXQgdXAgdmFyYmluZHMKKyAgICAgKi8KKyAgICBtZW1zZXQoJnZhcl9ldGhlclN0YXRzSW5kZXgsIDB4MDAsIHNpemVvZih2YXJfZXRoZXJTdGF0c0luZGV4KSk7CisgICAgdmFyX2V0aGVyU3RhdHNJbmRleC50eXBlID0gQVNOX0lOVEVHRVI7CisKKyAgICAvKgorICAgICAqIGNoYWluIHRlbXAgaW5kZXggdmFyYmluZHMgdG9nZXRoZXIKKyAgICAgKi8KKyAgICB2YXJfZXRoZXJTdGF0c0luZGV4Lm5leHRfdmFyaWFibGUgPSBOVUxMOworCisKKyAgICBERUJVR01TR1RMKCgidmVyYm9zZTpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX2luZGV4X2Zyb21fb2lkIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIHBhcnNlIHRoZSBvaWQgaW50byB0aGUgaW5kaXZpZHVhbCBpbmRleCBjb21wb25lbnRzCisgICAgICovCisgICAgZXJyID0gcGFyc2Vfb2lkX2luZGV4ZXMob2lkX2lkeC0+b2lkcywgb2lkX2lkeC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2YXJfZXRoZXJTdGF0c0luZGV4KTsKKyAgICBpZiAoZXJyID09IFNOTVBfRVJSX05PRVJST1IpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29weSBvdXQgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBtaWJfaWR4LT5ldGhlclN0YXRzSW5kZXggPQorICAgICAgICAgICAgKigobG9uZyAqKSB2YXJfZXRoZXJTdGF0c0luZGV4LnZhbC5zdHJpbmcpOworCisKKyAgICB9CisKKyAgICAvKgorICAgICAqIHBhcnNpbmcgbWF5IGhhdmUgYWxsb2NhdGVkIG1lbW9yeS4gZnJlZSBpdC4KKyAgICAgKi8KKyAgICBzbm1wX3Jlc2V0X3Zhcl9idWZmZXJzKCZ2YXJfZXRoZXJTdGF0c0luZGV4KTsKKworICAgIHJldHVybiBlcnI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9pbmRleF9mcm9tX29pZCAqLworCisKKy8qCisgKiBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YQorICoKKyAqIFB1cnBvc2U6IGNyZWF0ZSBuZXcgZXRoZXJTdGF0c1RhYmxlX2RhdGEuCisgKi8KK2V0aGVyU3RhdHNUYWJsZV9kYXRhICoKK2V0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhKHZvaWQpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX2RhdGEgKnJ0biA9IFNOTVBfTUFMTE9DX1RZUEVERUYoZXRoZXJTdGF0c1RhYmxlX2RhdGEpOworCisgICAgREVCVUdNU0dUTCgoInZlcmJvc2U6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBydG4pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInVuYWJsZSB0byBtYWxsb2MgbWVtb3J5IGZvciBuZXcgIgorICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX2RhdGEuXG4iKTsKKyAgICB9CisKKyAgICByZXR1cm4gcnRuOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSAqLworCisvKgorICogZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2VfZGF0YQorICoKKyAqIFB1cnBvc2U6IHJlbGVhc2UgZXRoZXJTdGF0c1RhYmxlIGRhdGEuCisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEoZXRoZXJTdGF0c1RhYmxlX2RhdGEgKiBkYXRhKQoreworICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOmV0aGVyU3RhdHNUYWJsZTpldGhlclN0YXRzVGFibGVfcmVsZWFzZV9kYXRhIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBmcmVlKGRhdGEpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9kYXRhICovCisKKy8qCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBAaW50ZXJuYWwKKyAqIGFsbG9jYXRlIHJlc291cmNlcyBmb3IgYSBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eAorICovCitldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqCitldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCh2b2lkICp1c2VyX2luaXRfY3R4KQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgU05NUF9NQUxMT0NfVFlQRURFRihldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOmV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3QgYWxsb2NhdGUgbWVtb3J5IGZvciBhICIKKyAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4LlxuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcyA9IHJvd3JlcV9jdHgtPm9pZF90bXA7CisKKyAgICByb3dyZXFfY3R4LT5ldGhlclN0YXRzVGFibGVfZGF0YV9saXN0ID0gTlVMTDsKKworICAgIC8qCisgICAgICogaWYgd2UgYWxsb2NhdGVkIGRhdGEsIGNhbGwgaW5pdCByb3V0aW5lCisgICAgICovCisgICAgaWYgKCEocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19EQVRBX0ZST01fVVNFUikpIHsKKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPQorICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHhfaW5pdChyb3dyZXFfY3R4LCB1c2VyX2luaXRfY3R4KSkgeworICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eChyb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHggPSBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGV0aGVyU3RhdHNUYWJsZV9hbGxvY2F0ZV9yb3dyZXFfY3R4ICovCisKKy8qCisgKiBAaW50ZXJuYWwKKyAqIHJlbGVhc2UgcmVzb3VyY2VzIGZvciBhIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4CisgKi8KK3ZvaWQKK2V0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6ZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCIsICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eF9jbGVhbnVwKHJvd3JlcV9jdHgpOworCisgICAgaWYgKHJvd3JlcV9jdHgtPnVuZG8pCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX2RhdGEocm93cmVxX2N0eC0+dW5kbyk7CisKKyAgICAvKgorICAgICAqIGZyZWUgaW5kZXggb2lkIHBvaW50ZXIKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzICE9IHJvd3JlcV9jdHgtPm9pZF90bXApCisgICAgICAgIGZyZWUocm93cmVxX2N0eC0+b2lkX2lkeC5vaWRzKTsKKworICAgIFNOTVBfRlJFRShyb3dyZXFfY3R4KTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZXRoZXJTdGF0c1RhYmxlX3JlbGVhc2Vfcm93cmVxX2N0eCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3ByZV9yZXF1ZXN0IiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKDEgIT0gbmV0c25tcF9yb3dfbWVyZ2Vfc3RhdHVzX2ZpcnN0KHJlZ2luZm8sIGFndHJlcV9pbmZvKSkgeworICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgInNraXBwaW5nIGFkZGl0aW9uYWwgcHJlX3JlcXVlc3RcbiIpKTsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgfQorCisgICAgcmMgPSBldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3QoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfcHJlX3JlcXVlc3RcbiIsIHJjKSk7CisgICAgICAgIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfYWxsKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wcmVfcmVxdWVzdCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICogd3JhcHBlcgorICovCitzdGF0aWMgaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgaW50ICAgICAgICAgICAgIHJjLCBwYWNrZXRfcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3Bvc3RfcmVxdWVzdCIsICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogcmVsZWFzZSByb3cgY29udGV4dCwgaWYgZGVsZXRlZAorICAgICAqLworICAgIGlmIChyb3dyZXFfY3R4ICYmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0RFTEVURUQpKQorICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KHJvd3JlcV9jdHgpOworCisgICAgLyoKKyAgICAgKiB3YWl0IGZvciBsYXN0IGNhbGwgYmVmb3JlIGNhbGxpbmcgdXNlcgorICAgICAqLworICAgIGlmICgxICE9IG5ldHNubXBfcm93X21lcmdlX3N0YXR1c19sYXN0KHJlZ2luZm8sIGFndHJlcV9pbmZvKSkgeworICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgIndhaXRpbmcgZm9yIGxhc3QgcG9zdF9yZXF1ZXN0XG4iKSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIHBhY2tldF9yYyA9IG5ldHNubXBfY2hlY2tfYWxsX3JlcXVlc3RzX2Vycm9yKGFndHJlcV9pbmZvLT5hc3AsIDApOworICAgIGlmICgoTUZEX1NVQ0NFU1MgIT0gcGFja2V0X3JjKSAmJiBldGhlclN0YXRzVGFibGVfZGlydHlfZ2V0KCkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogd2Ugc2hvdWxkbid0IGdldCBoZXJlLiB0aGUgdW5kbyBzdGVwcyBzaG91bGQgYWxzbyBjbGVhcgorICAgICAgICAgKiB0aGUgZGlydHkgZmxhZ3MuCisgICAgICAgICAqLworICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZSBkaXJ0eSBmbGFnIHNldCBpbiBwb3N0X3JlcXVlc3QgIgorICAgICAgICAgICAgICAgICAiYnV0IHN0YXR1cyAhPSBTVUNDRVNTLlxuIik7CisgICAgfQorCisgICAgcmMgPSBldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0KGV0aGVyU3RhdHNUYWJsZV9pZl9jdHgudXNlcl9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2tldF9yYyk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGUiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfcG9zdF9yZXF1ZXN0XG4iLCByYykpOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9wb3N0X3JlcXVlc3QgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9mcm9tX2luZGV4KG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpyY19wdHIpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCBtaWJfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfcm93cmVxX2Zyb21faW5kZXgiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSByY19wdHIpCisgICAgICAgIHJjX3B0ciA9ICZyYzsKKyAgICAqcmNfcHRyID0gTUZEX1NVQ0NFU1M7CisKKyAgICBtZW1zZXQoJm1pYl9pZHgsIDB4MCwgc2l6ZW9mKG1pYl9pZHgpKTsKKworICAgIC8qCisgICAgICogdHJ5IHRvIHBhcnNlIG9pZAorICAgICAqLworICAgICpyY19wdHIgPSBldGhlclN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQob2lkX2lkeCwgJm1pYl9pZHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSAqcmNfcHRyKSB7CisgICAgICAgIERFQlVHTVNHVCgoImV0aGVyU3RhdHNUYWJsZSIsICJlcnJvciBwYXJzaW5nIGluZGV4XG4iKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qCisgICAgICogYWxsb2NhdGUgbmV3IGNvbnRleHQKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4ID0gZXRoZXJTdGF0c1RhYmxlX2FsbG9jYXRlX3Jvd3JlcV9jdHgoTlVMTCk7CisgICAgaWYgKE5VTEwgPT0gcm93cmVxX2N0eCkgeworICAgICAgICAqcmNfcHRyID0gTUZEX0VSUk9SOworICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAvKiBtc2cgYWxyZWFkeSBsb2dnZWQgKi8KKyAgICB9CisKKyAgICBtZW1jcHkoJnJvd3JlcV9jdHgtPnRibF9pZHgsICZtaWJfaWR4LCBzaXplb2YobWliX2lkeCkpOworCisgICAgLyoKKyAgICAgKiBjaGVjayBpbmRleGVzCisgICAgICovCisgICAgKnJjX3B0ciA9IF9ldGhlclN0YXRzVGFibGVfY2hlY2tfaW5kZXhlcyhyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gKnJjX3B0cikgeworICAgICAgICBuZXRzbm1wX2Fzc2VydCgoKnJjX3B0ciA9PSBTTk1QX0VSUl9OT0NSRUFUSU9OKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAoKnJjX3B0ciA9PSBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FKSk7CisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qCisgICAgICogY29weSBpbmRleGVzCisgICAgICovCisgICAgcm93cmVxX2N0eC0+b2lkX2lkeC5sZW4gPSBvaWRfaWR4LT5sZW47CisgICAgbWVtY3B5KHJvd3JlcV9jdHgtPm9pZF9pZHgub2lkcywgb2lkX2lkeC0+b2lkcywKKyAgICAgICAgICAgb2lkX2lkeC0+bGVuICogc2l6ZW9mKG9pZCkpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9mcm9tX2luZGV4ICovCisKKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHdyYXBwZXIKKyAqLworc3RhdGljIGludAorX21mZF9ldGhlclN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9vYmplY3RfbG9va3VwIiwgImNhbGxlZFxuIikpOworCisgICAgLyoKKyAgICAgKiBnZXQgb3VyIGNvbnRleHQgZnJvbSBtZmQKKyAgICAgKiBldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqaWZfY3R4ID0KKyAgICAgKiAgICAgICAgICAgICAoZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKilyZWdpbmZvLT5teV9yZWdfdm9pZDsKKyAgICAgKi8KKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpIHsKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRibHJlcV9pbmZvOworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2lkeDsKKworICAgICAgICB0YmxyZXFfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdGJscmVxX2luZm8pIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJyZXF1ZXN0IGhhZCBubyB0YWJsZSBpbmZvXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfRVJST1I7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiB0cnkgY3JlYXRlIHJvd3JlcQorICAgICAgICAgKi8KKyAgICAgICAgb2lkX2lkeC5vaWRzID0gdGJscmVxX2luZm8tPmluZGV4X29pZDsKKyAgICAgICAgb2lkX2lkeC5sZW4gPSB0YmxyZXFfaW5mby0+aW5kZXhfb2lkX2xlbjsKKworICAgICAgICByb3dyZXFfY3R4ID0gX21mZF9ldGhlclN0YXRzVGFibGVfcm93cmVxX2Zyb21faW5kZXgoJm9pZF9pZHgsICZyYyk7CisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyA9PSByYykgeworICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyB8PSBNRkRfUk9XX0NSRUFURUQ7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogYWRkIHJvd3JlcV9jdHggdG8gcmVxdWVzdCBkYXRhIGxpc3RzCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19pbnNlcnQocmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2luZGV4ICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgcmMpOworICAgIGVsc2UKKyAgICAgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd19wcmVwKHJvd3JlcV9jdHgpOworCisgICAgcmV0dXJuIFNOTVBfVkFMSURBVEVfRVJSKHJjKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfb2JqZWN0X2xvb2t1cCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBHRVQgcHJvY2Vzc2luZworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIFJldHJpZXZlIHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLAorICAgICAgICAgICAgICAgICJjYWxsZWQgZm9yICVkXG4iLCBjb2x1bW4pKTsKKworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIHN3aXRjaCAoY29sdW1uKSB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogKElOREVYKSBldGhlclN0YXRzSW5kZXgoMSkvSU5URUdFUjMyL0FTTl9JTlRFR0VSL2xvbmcobG9uZykvL2wvQS93L2UvUi9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNJTkRFWDoKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZihsb25nKTsKKyAgICAgICAgKCp2YXItPnZhbC5pbnRlZ2VyKSA9IHJvd3JlcV9jdHgtPnRibF9pZHguZXRoZXJTdGF0c0luZGV4OworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRGF0YVNvdXJjZSgyKS9PQkpFQ1RJRC9BU05fT0JKRUNUX0lEL29pZChvaWQpLy9ML0EvVy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRToKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzRGF0YVNvdXJjZSkgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnR5cGUgPSBBU05fT0JKRUNUX0lEOworICAgICAgICByYyA9IGV0aGVyU3RhdHNEYXRhU291cmNlX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2lkICoqKSAmIHZhci0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZhci0+dmFsX2xlbik7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEcm9wRXZlbnRzKDMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEUk9QRVZFTlRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTRFJPUEVWRU5UU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNEcm9wRXZlbnRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzRHJvcEV2ZW50c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT2N0ZXRzKDQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzT2N0ZXRzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzT2N0ZXRzX2dldChyb3dyZXFfY3R4LCAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzKDUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzUGt0c19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzQnJvYWRjYXN0UGt0cyg2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU0JST0FEQ0FTVFBLVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzQnJvYWRjYXN0UGt0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0Jyb2FkY2FzdFBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c011bHRpY2FzdFBrdHMoNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNNVUxUSUNBU1RQS1RTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c011bHRpY2FzdFBrdHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNNdWx0aWNhc3RQa3RzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQ1JDQUxJR05FUlJPUlM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0NSQ0FsaWduRXJyb3JzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzVW5kZXJzaXplUGt0cyg5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTVU5ERVJTSVpFUEtUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU1VOREVSU0laRVBLVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzVW5kZXJzaXplUGt0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1VuZGVyc2l6ZVBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c092ZXJzaXplUGt0cygxMCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09WRVJTSVpFUEtUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU09WRVJTSVpFUEtUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPdmVyc2l6ZVBrdHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRnJhZ21lbnRzKDExKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c0ZyYWdtZW50cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0ZyYWdtZW50c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNKYWJiZXJzKDEyKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzSmFiYmVycykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0phYmJlcnNfZ2V0KHJvd3JlcV9jdHgsICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0NvbGxpc2lvbnMoMTMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTQ09MTElTSU9OU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNDb2xsaXNpb25zKSBkb2Vzbid0IGV4aXN0XG4iLCBjb2x1bW4pKTsKKyAgICAgICAgICAgIHJldHVybiBNRkRfU0tJUDsKKyAgICAgICAgfQorCisgICAgICAgIHZhci0+dmFsX2xlbiA9IHNpemVvZih1X2xvbmcpOworICAgICAgICB2YXItPnR5cGUgPSBBU05fQ09VTlRFUjsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzQ29sbGlzaW9uc19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czY0T2N0ZXRzKDE0KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1BrdHM2NE9jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHM2NE9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0cygxNSkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NVRPMTI3T0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzY1VE8xMjdPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzUGt0czY1dG8xMjdPY3RldHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNQa3RzNjV0bzEyN09jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMjh0bzI1NU9jdGV0cygxNikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHMpIGRvZXNuJ3QgZXhpc3RcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmV0dXJuIE1GRF9TS0lQOworICAgICAgICB9CisKKyAgICAgICAgdmFyLT52YWxfbGVuID0gc2l6ZW9mKHVfbG9uZyk7CisgICAgICAgIHZhci0+dHlwZSA9IEFTTl9DT1VOVEVSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzUGt0czI1NnRvNTExT2N0ZXRzKDE3KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzI1NlRPNTExT0NURVRTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTUEtUUzI1NlRPNTExT0NURVRTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHMyNTZ0bzUxMU9jdGV0c19nZXQocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZhci0+dmFsLnN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzUxMlRPMTAyM09DVEVUUzoKKyAgICAgICAgaWYgKCEKKyAgICAgICAgICAgIChDT0xVTU5fRVRIRVJTVEFUU1BLVFM1MTJUTzEwMjNPQ1RFVFNfRkxBRyAmIHJvd3JlcV9jdHgtPgorICAgICAgICAgICAgIGNvbHVtbl9leGlzdHNfZmxhZ3MpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4iLCAiY29sdW1uICVkIChldGhlclN0YXRzUGt0czUxMnRvMTAyM09jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHM1MTJ0bzEwMjNPY3RldHNfZ2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2xvbmcgKikgdmFyLT52YWwuc3RyaW5nKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzKDE5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzEwMjRUTzE1MThPQ1RFVFM6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUU19GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNQa3RzMTAyNHRvMTUxOE9jdGV0cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0NPVU5URVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzX2dldChyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfbG9uZyAqKSB2YXItPnZhbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZyk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIGlmICghCisgICAgICAgICAgICAoQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHICYgcm93cmVxX2N0eC0+CisgICAgICAgICAgICAgY29sdW1uX2V4aXN0c19mbGFncykpIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X2NvbHVtbiIsICJjb2x1bW4gJWQgKGV0aGVyU3RhdHNPd25lcikgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnR5cGUgPSBBU05fT0NURVRfU1RSOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPd25lcl9nZXQocm93cmVxX2N0eCwgKGNoYXIgKiopICZ2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdmFyLT52YWxfbGVuKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1N0YXR1cygyMSkvRW50cnlTdGF0dXMvQVNOX0lOVEVHRVIvbG9uZyh1X2xvbmcpLy9sL0EvVy9FL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTOgorICAgICAgICBpZiAoIQorICAgICAgICAgICAgKENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUcgJiByb3dyZXFfY3R4LT4KKyAgICAgICAgICAgICBjb2x1bW5fZXhpc3RzX2ZsYWdzKSkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImNvbHVtbiAlZCAoZXRoZXJTdGF0c1N0YXR1cykgZG9lc24ndCBleGlzdFxuIiwgY29sdW1uKSk7CisgICAgICAgICAgICByZXR1cm4gTUZEX1NLSVA7CisgICAgICAgIH0KKworICAgICAgICB2YXItPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKKyAgICAgICAgdmFyLT50eXBlID0gQVNOX0lOVEVHRVI7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1N0YXR1c19nZXQocm93cmVxX2N0eCwgKHVfbG9uZyAqKSB2YXItPnZhbC5zdHJpbmcpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIGlmIChFVEhFUlNUQVRTVEFCTEVfTUlOX0NPTCA8PSBjb2x1bW4KKyAgICAgICAgICAgICYmIGNvbHVtbiA8PSBFVEhFUlNUQVRTVEFCTEVfTUFYX0NPTCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uIiwgImFzc3VtZSBjb2x1bW4gJWQgaXMgcmVzZXJ2ZWRcbiIsIGNvbHVtbikpOworICAgICAgICAgICAgcmMgPSBNRkRfU0tJUDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAidW5rbm93biBjb2x1bW4gJWQgaW4gX2V0aGVyU3RhdHNUYWJsZV9nZXRfY29sdW1uLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgcmV0dXJuIHJjOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4gKi8KKworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9nZXRfdmFsdWVzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0cmk7CisgICAgdV9jaGFyICAgICAgICAgKm9sZF9zdHJpbmc7CisgICAgdm9pZCAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSAodm9pZCAqKTsKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX2dldF92YWx1ZXMiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBERUJVR01TR1RMKCgiOTpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X3ZhbHVlcyIsCisgICAgICAgICAgICAgICAgImV4aXN0cyAldVxuIiwgcm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncykpOworCisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNhdmUgb2xkIHBvaW50ZXIsIHNvIHdlIGNhbiBmcmVlIGl0IGlmIHJlcGxhY2VkCisgICAgICAgICAqLworICAgICAgICBvbGRfc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZzsKKyAgICAgICAgZGF0YUZyZWVIb29rID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+ZGF0YUZyZWVIb29rOworICAgICAgICBpZiAoTlVMTCA9PSByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nKSB7CisgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWwuc3RyaW5nID0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmOworICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsX2xlbiA9CisgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0gZWxzZSBpZiAocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmID09CisgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+dmFsLnN0cmluZykgeworICAgICAgICAgICAgaWYgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbF9sZW4gIT0KKyAgICAgICAgICAgICAgICBzaXplb2YocmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSkKKyAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLT52YWxfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHJlcXVlc3RzLT5yZXF1ZXN0dmItPmJ1Zik7CisgICAgICAgIH0KKworICAgICAgICAvKgorICAgICAgICAgKiBnZXQgY29sdW1uIGRhdGEKKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfZXRoZXJTdGF0c1RhYmxlX2dldF9jb2x1bW4ocm93cmVxX2N0eCwgcmVxdWVzdHMtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAocmMpIHsKKyAgICAgICAgICAgIGlmIChNRkRfU0tJUCA9PSByYykgeworICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPnR5cGUgPSBTTk1QX05PU1VDSElOU1RBTkNFOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChOVUxMID09IHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJOVUxMIHZhcmJpbmQgZGF0YSBwb2ludGVyIVxuIik7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICBpZiAocmMpCisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworCisgICAgICAgIC8qCisgICAgICAgICAqIGlmIHRoZSBidWZmZXIgd2Fzbid0IHVzZWQgcHJldmlvdXNseSBmb3IgdGhlIG9sZCBkYXRhIChpLmUuIGl0CisgICAgICAgICAqIHdhcyBhbGxjb2F0ZWQgbWVtb3J5KSAgYW5kIHRoZSBnZXQgcm91dGluZSByZXBsYWNlZCB0aGUgcG9pbnRlciwKKyAgICAgICAgICogd2UgbmVlZCB0byBmcmVlIHRoZSBwcmV2aW91cyBwb2ludGVyLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKG9sZF9zdHJpbmcgJiYgKG9sZF9zdHJpbmcgIT0gcmVxdWVzdHMtPnJlcXVlc3R2Yi0+YnVmKSAmJgorICAgICAgICAgICAgKHJlcXVlc3RzLT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcgIT0gb2xkX3N0cmluZykpIHsKKyAgICAgICAgICAgIGlmIChkYXRhRnJlZUhvb2spCisgICAgICAgICAgICAgICAgKCpkYXRhRnJlZUhvb2spIChvbGRfc3RyaW5nKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBmcmVlKG9sZF9zdHJpbmcpOworICAgICAgICB9CisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfZ2V0X3ZhbHVlcyAqLworCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2luZGV4ZXMoZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4KQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV9jaGVja19pbmRleGVzIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisKKyAgICAvKgorICAgICAqIChJTkRFWCkgZXRoZXJTdGF0c0luZGV4KDEpL0lOVEVHRVIzMi9BU05fSU5URUdFUi9sb25nKGxvbmcpLy9sL0Evdy9lL1IvZC9oIAorICAgICAqLworICAgIC8qCisgICAgICogY2hlY2sgZGVmaW5lZCByYW5nZShzKS4gCisgICAgICovCisgICAgaWYgKChTTk1QRVJSX1NVQ0NFU1MgPT0gcmMpCisgICAgICAgICYmICgocm93cmVxX2N0eC0+dGJsX2lkeC5ldGhlclN0YXRzSW5kZXggPCAxKQorICAgICAgICAgICAgfHwgKHJvd3JlcV9jdHgtPnRibF9pZHguZXRoZXJTdGF0c0luZGV4ID4gNjU1MzUpKQorICAgICAgICApIHsKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0KKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiByYzsKKyAgICByYyA9IGV0aGVyU3RhdHNJbmRleF9jaGVja19pbmRleChyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpCisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOworCisgICAgLyoKKyAgICAgKiBpZiBpbmRpdmlkdWFsIHBhcnRzIGxvb2sgb2ssIGNoZWNrIHRoZW0gYXMgYSB3aG9sZQorICAgICAqLworICAgIHJldHVybiBldGhlclN0YXRzVGFibGVfdmFsaWRhdGVfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX2lmX2N0eC51c2VyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvd3JlcV9jdHgpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2luZGV4ZXMgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKgorICogU0VUIHByb2Nlc3NpbmcKKyAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNFVDogU3ludGF4IGNoZWNrcworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBAaW50ZXJuYWwKKyAqIENoZWNrIHRoZSBzeW50YXggZm9yIGEgcGFydGljdWxhciBjb2x1bW4KKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIGludAorX2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLCBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW4iLAorICAgICAgICAgICAgICAgICJjYWxsZWQgZm9yICVkXG4iLCBjb2x1bW4pKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworICAgICAgICAvKgorICAgICAgICAgKiAoSU5ERVgpIGV0aGVyU3RhdHNJbmRleCgxKS9JTlRFR0VSMzIvQVNOX0lOVEVHRVIvbG9uZyhsb25nKS8vbC9BL3cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0lOREVYOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOyAgICAgIC8qIGNhbiBub3QgY2hhbmdlIGluZGV4IG9mIGFjdGl2ZSByb3cgKi8KKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0RhdGFTb3VyY2UoMikvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL1cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0U6CisgICAgICAgIHJjID0gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSh2YXIsIEFTTl9PQkpFQ1RfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzRGF0YVNvdXJjZSkpOworICAgICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfY2hlY2tfY29sdW1uOmV0aGVyU3RhdHNEYXRhU291cmNlIiwgInZhcmJpbmQgdmFsaWRhdGlvbiBmYWlsZWQgKGVnIGJhZCB0eXBlIG9yIHNpemUpXG4iKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYyA9IGV0aGVyU3RhdHNEYXRhU291cmNlX2NoZWNrX3ZhbHVlKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvaWQgKikgdmFyLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKChNRkRfU1VDQ0VTUyAhPSByYykgJiYgKE1GRF9OT1RfVkFMSURfRVZFUiAhPSByYykKKyAgICAgICAgICAgICAgICAmJiAoTUZEX05PVF9WQUxJRF9OT1cgIT0gcmMpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJjICVkIGZyb20gZXRoZXJTdGF0c0RhdGFTb3VyY2VfY2hlY2tfdmFsdWVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmMpOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEcm9wRXZlbnRzKDMpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEUk9QRVZFTlRTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT2N0ZXRzKDQpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzKDUpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzQnJvYWRjYXN0UGt0cyg2KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c011bHRpY2FzdFBrdHMoNykvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNDUkNBbGlnbkVycm9ycyg4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQ1JDQUxJR05FUlJPUlM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNVbmRlcnNpemVQa3RzKDkpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNVTkRFUlNJWkVQS1RTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3ZlcnNpemVQa3RzKDEwKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRnJhZ21lbnRzKDExKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTOgorICAgICAgICByYyA9IFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzSmFiYmVycygxMikvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNDb2xsaXNpb25zKDEzKS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTQ09MTElTSU9OUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM2NE9jdGV0cygxNCkvQ09VTlRFUi9BU05fQ09VTlRFUi91X2xvbmcodV9sb25nKS8vbC9BL3cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NE9DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHM2NXRvMTI3T2N0ZXRzKDE1KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY1VE8xMjdPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzMTI4dG8yNTVPY3RldHMoMTYpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTI4VE8yNTVPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzMjU2dG81MTFPY3RldHMoMTcpL0NPVU5URVIvQVNOX0NPVU5URVIvdV9sb25nKHVfbG9uZykvL2wvQS93L2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNQa3RzNTEydG8xMDIzT2N0ZXRzKDE4KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzUxMlRPMTAyM09DVEVUUzoKKyAgICAgICAgcmMgPSBTTk1QX0VSUl9OT1RXUklUQUJMRTsKKyAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c1BrdHMxMDI0dG8xNTE4T2N0ZXRzKDE5KS9DT1VOVEVSL0FTTl9DT1VOVEVSL3VfbG9uZyh1X2xvbmcpLy9sL0Evdy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTUEtUUzEwMjRUTzE1MThPQ1RFVFM6CisgICAgICAgIHJjID0gU05NUF9FUlJfTk9UV1JJVEFCTEU7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIHJjID0gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9tYXhfc2l6ZSh2YXIsIEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yocm93cmVxX2N0eC0+ZGF0YS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzT3duZXIpKTsKKyAgICAgICAgLyoKKyAgICAgICAgICogY2hlY2sgZGVmaW5lZCByYW5nZShzKS4gCisgICAgICAgICAqLworICAgICAgICBpZiAoKFNOTVBFUlJfU1VDQ0VTUyA9PSByYykKKyAgICAgICAgICAgICYmICgodmFyLT52YWxfbGVuIDwgMCkgfHwgKHZhci0+dmFsX2xlbiA+IDEyNykpCisgICAgICAgICAgICApIHsKKyAgICAgICAgICAgIHJjID0gU05NUF9FUlJfV1JPTkdMRU5HVEg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbjpldGhlclN0YXRzT3duZXIiLCAidmFyYmluZCB2YWxpZGF0aW9uIGZhaWxlZCAoZWcgYmFkIHR5cGUgb3Igc2l6ZSlcbiIpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJjID0gZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSB2YXItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKChNRkRfU1VDQ0VTUyAhPSByYykgJiYgKE1GRF9OT1RfVkFMSURfRVZFUiAhPSByYykKKyAgICAgICAgICAgICAgICAmJiAoTUZEX05PVF9WQUxJRF9OT1cgIT0gcmMpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIHJjICVkIGZyb20gZXRoZXJTdGF0c093bmVyX2NoZWNrX3ZhbHVlXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJjKTsKKyAgICAgICAgICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVM6CisgICAgICAgIHJjID0gbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplKHZhciwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihyb3dyZXFfY3R4LT5kYXRhLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1N0YXR1cykpOworICAgICAgICAvKgorICAgICAgICAgKiBjaGVjayB0aGF0IHRoZSB2YWx1ZSBpcyBvbmUgb2YgZGVmaW5lZCBlbnVtcyAKKyAgICAgICAgICovCisgICAgICAgIGlmICgoU05NUEVSUl9TVUNDRVNTID09IHJjKQorICAgICAgICAgICAgJiYgKCp2YXItPnZhbC5pbnRlZ2VyICE9IEVOVFJZU1RBVFVTX1ZBTElEKQorICAgICAgICAgICAgJiYgKCp2YXItPnZhbC5pbnRlZ2VyICE9IEVOVFJZU1RBVFVTX0NSRUFURVJFUVVFU1QpCisgICAgICAgICAgICAmJiAoKnZhci0+dmFsLmludGVnZXIgIT0gRU5UUllTVEFUVVNfVU5ERVJDUkVBVElPTikKKyAgICAgICAgICAgICYmICgqdmFyLT52YWwuaW50ZWdlciAhPSBFTlRSWVNUQVRVU19JTlZBTElEKQorICAgICAgICAgICAgKSB7CisgICAgICAgICAgICByYyA9IFNOTVBfRVJSX1dST05HVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbjpldGhlclN0YXRzU3RhdHVzIiwgInZhcmJpbmQgdmFsaWRhdGlvbiBmYWlsZWQgKGVnIGJhZCB0eXBlIG9yIHNpemUpXG4iKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByYyA9IGV0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWUocm93cmVxX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKCh1X2xvbmcgKikgdmFyLT52YWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmcpKTsKKyAgICAgICAgICAgIGlmICgoTUZEX1NVQ0NFU1MgIT0gcmMpICYmIChNRkRfTk9UX1ZBTElEX0VWRVIgIT0gcmMpCisgICAgICAgICAgICAgICAgJiYgKE1GRF9OT1RfVkFMSURfTk9XICE9IHJjKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCByYyAlZCBmcm9tIGV0aGVyU3RhdHNTdGF0dXNfY2hlY2tfdmFsdWVcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmMpOworICAgICAgICAgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDogICAgLyoqIFdlIHNob3VsZG4ndCBnZXQgaGVyZSAqLworICAgICAgICByYyA9IFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9ldGhlclN0YXRzVGFibGVfY2hlY2tfY29sdW1uXG4iLAorICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2V0aGVyU3RhdHNUYWJsZV9jaGVja19jb2x1bW4gKi8KKworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9jaGVja19vYmplY3RzKG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0cmk7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9jaGVja19vYmplY3RzIiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIGZvciAoOyByZXF1ZXN0czsgcmVxdWVzdHMgPSByZXF1ZXN0cy0+bmV4dCkgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGdldCBjb2x1bW4gbnVtYmVyIGZyb20gdGFibGUgcmVxdWVzdCBpbmZvLCBhbmQgY2hlY2sgdGhhdCBjb2x1bW4KKyAgICAgICAgICovCisgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdHJpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgcmMgPSBfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX2NvbHVtbihyb3dyZXFfY3R4LCByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyaS0+Y29sbnVtKTsKKyAgICAgICAgaWYgKHJjKSB7CisgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yKHJlcXVlc3RzLCBTTk1QX1ZBTElEQVRFX0VSUihyYykpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX2NoZWNrX29iamVjdHMgKi8KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBTRVQ6IFVuZG8gc2V0dXAKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogQGludGVybmFsCisgKiBTZXQgdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cF9jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sdW1uKQoreworICAgIGludCAgICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtbiIsICJjYWxsZWQgZm9yICVkXG4iLCBjb2x1bW4pKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICBzd2l0Y2ggKGNvbHVtbikgeworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNEYXRhU291cmNlKDIpL09CSkVDVElEL0FTTl9PQkpFQ1RfSUQvb2lkKG9pZCkvL0wvQS9XL2Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFOgorICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRV9GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNEYXRhU291cmNlX3VuZG9fc2V0dXAocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNPd25lcigyMCkvT3duZXJTdHJpbmcvQVNOX09DVEVUX1NUUi9jaGFyKGNoYXIpLy9ML0EvVy9lL1IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTT1dORVI6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNPd25lcl91bmRvX3NldHVwKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVM6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRzsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzU3RhdHVzX3VuZG9fc2V0dXAocm93cmVxX2N0eCk7CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgInVua25vd24gY29sdW1uICVkIGluIF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByYzsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2V0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtbiAqLworCisKKy8qKgorICogQGludGVybmFsCisgKiB1bmRvIHNldHVwCisgKi8KK2ludAorX21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19zZXR1cChuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYWd0cmVxX2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICAvKgorICAgICAqIGFsbG9jYXRlIHVuZG8gY29udGV4dAorICAgICAqLworICAgIHJvd3JlcV9jdHgtPnVuZG8gPSBldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfZGF0YSgpOworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgtPnVuZG8pIHsKKyAgICAgICAgLyoqIG1zZyBhbHJlYWR5IGxvZ2dlZCAqLworICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfUkVTT1VSQ0VVTkFWQUlMQUJMRSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgIH0KKworICAgIC8qCisgICAgICogcm93IHVuZG8gc2V0dXAKKyAgICAgKi8KKyAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzID0gMDsKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwKHJvd3JlcV9jdHgpOworICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICBERUJVR01TR1RMKCgiZXRoZXJTdGF0c1RhYmxlOm1mZCIsICJlcnJvciAlZCBmcm9tICIKKyAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwXG4iLCByYykpOworICAgICAgICBuZXRzbm1wX3JlcXVlc3Rfc2V0X2Vycm9yX2FsbChyZXF1ZXN0cywgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKgorICAgICAgICAgKiBjb2x1bW4gdW5kbyBzZXR1cAorICAgICAgICAgKi8KKyAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICAgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogc2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHRyaSA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3RzKTsKKyAgICAgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAgICAgcmMgPSBfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXBfY29sdW1uKHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICAgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvX3NldHVwX2NvbHVtblxuIiwgcmMpKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKGFndHJlcV9pbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByZXN1bHRzICovCisgICAgfQorCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fc2V0dXAgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHVuZG8gc2V0dXAKKyAqLworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgaW50ICAgICAgICAgICAgIHJjOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKgorICAgICAqIGZhaWxlZCByb3cgY3JlYXRlIGluIGVhcmx5IHN0YWdlcyBoYXMgbm8gcm93cmVxX2N0eAorICAgICAqLworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpCisgICAgICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKKworICAgIC8qCisgICAgICogY2FsbCB1c2VyIGNsZWFudXAKKyAgICAgKi8KKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAocm93cmVxX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIG5vdGhpbmcgd2UgY2FuIGRvIGFib3V0IGl0IGJ1dCBsb2cgaXQKKyAgICAgICAgICovCisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6bWZkIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3VuZG9fY2xlYW51cFxuIiwgcmMpKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHJlbGVhc2UgdW5kbyBjb250ZXh0LCBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+dW5kbykgeworICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9kYXRhKHJvd3JlcV9jdHgtPnVuZG8pOworICAgICAgICByb3dyZXFfY3R4LT51bmRvID0gTlVMTDsKKyAgICB9CisKKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NsZWFudXAgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBTZXQgdmFsdWVzCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIEBpbnRlcm5hbAorICogU2V0IHRoZSB2YWx1ZSBmb3IgYSBwYXJ0aWN1bGFyIGNvbHVtbgorICovCitORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50CitfZXRoZXJTdGF0c1RhYmxlX3NldF9jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwgaW50IGNvbHVtbikKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QRVJSX1NVQ0NFU1M7CisKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtbiIsCisgICAgICAgICAgICAgICAgImNhbGxlZCBmb3IgJWRcbiIsIGNvbHVtbikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIHN3aXRjaCAoY29sdW1uKSB7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogZXRoZXJTdGF0c0RhdGFTb3VyY2UoMikvT0JKRUNUSUQvQVNOX09CSkVDVF9JRC9vaWQob2lkKS8vTC9BL1cvZS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0U6CisgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgfD0gQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUc7CisgICAgICAgIHJjID0gZXRoZXJTdGF0c0RhdGFTb3VyY2Vfc2V0KHJvd3JlcV9jdHgsIChvaWQgKikgdmFyLT52YWwuc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXItPnZhbF9sZW4pOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3duZXIoMjApL093bmVyU3RyaW5nL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9BL1cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSOgorICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzIHw9IENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRzsKKyAgICAgICAgcmMgPSBldGhlclN0YXRzT3duZXJfc2V0KHJvd3JlcV9jdHgsIChjaGFyICopIHZhci0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dmFsX2xlbik7CisgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qCisgICAgICAgICAqIGV0aGVyU3RhdHNTdGF0dXMoMjEpL0VudHJ5U3RhdHVzL0FTTl9JTlRFR0VSL2xvbmcodV9sb25nKS8vbC9BL1cvRS9yL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVUzoKKyAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyB8PSBDT0xVTU5fRVRIRVJTVEFUU1NUQVRVU19GTEFHOworICAgICAgICByYyA9IGV0aGVyU3RhdHNTdGF0dXNfc2V0KHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKigodV9sb25nICopIHZhci0+dmFsLnN0cmluZykpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfZXRoZXJTdGF0c1RhYmxlX3NldF9jb2x1bW5cbiIsCisgICAgICAgICAgICAgICAgIGNvbHVtbik7CisgICAgICAgIHJjID0gU05NUF9FUlJfR0VORVJSOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtbiAqLworCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXMobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSBTTk1QX0VSUl9OT0VSUk9SOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9zZXRfdmFsdWVzIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncyA9IDA7CisgICAgZm9yICg7IHJlcXVlc3RzOyByZXF1ZXN0cyA9IHJlcXVlc3RzLT5uZXh0KSB7CisgICAgICAgIC8qCisgICAgICAgICAqIHNldCBjb2x1bW4gZGF0YQorICAgICAgICAgKi8KKyAgICAgICAgdHJpID0gbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdHMpOworICAgICAgICBpZiAoTlVMTCA9PSB0cmkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICByYyA9IF9ldGhlclN0YXRzVGFibGVfc2V0X2NvbHVtbihyb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0cy0+cmVxdWVzdHZiLCB0cmktPmNvbG51bSk7CisgICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX3NldF9jb2x1bW5cbiIsIHJjKSk7CisgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKGFndHJlcV9pbmZvLCByZXF1ZXN0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9WQUxJREFURV9FUlIocmMpKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3NldF92YWx1ZXMgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBjb21taXQKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKioKKyAqIEBpbnRlcm5hbAorICogY29tbWl0IHRoZSB2YWx1ZXMKKyAqLworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQobmV0c25tcF9taWJfaGFuZGxlciAqaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdHMpCit7CisgICAgaW50ICAgICAgICAgICAgIHJjOworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gcm93cmVxX2N0eCk7CisKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV9jb21taXQocm93cmVxX2N0eCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6bWZkIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX2NvbW1pdFxuIiwgcmMpKTsKKyAgICAgICAgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwocmVxdWVzdHMsIFNOTVBfVkFMSURBVEVfRVJSKHJjKSk7CisgICAgfQorCisgICAgaWYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfRElSVFkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogaWYgd2Ugc3VjY2Vzc2Z1bGx5IGNvbW1pdGVkIHRoaXMgcm93LCBzZXQgdGhlIGRpcnR5IGZsYWcuIFVzZSB0aGUKKyAgICAgICAgICogY3VycmVudCB2YWx1ZSArIDEgKGkuZS4gZGlydHkgPSAjIHJvd3MgY2hhbmdlZCkuCisgICAgICAgICAqIHRoaXMgaXMgY2hlY2tlZCBpbiBwb3N0X3JlcXVlc3QuLi4KKyAgICAgICAgICovCisgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQoZXRoZXJTdGF0c1RhYmxlX2RpcnR5X2dldCgpICsgMSk7ICAgICAvKiBzZXQgdGFibGUgZGlydHkgZmxhZyAqLworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCitpbnQKK19tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29tbWl0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFndHJlcV9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGludCAgICAgICAgICAgICByYzsKKyAgICBldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCA9CisgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3Jvd19leHRyYWN0KHJlcXVlc3RzKTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfdW5kb19jb21taXQiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgaWYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfRElSVFkpIHsKKyAgICAgICAgdV9pbnQgICAgICAgICAgIGQgPSBldGhlclN0YXRzVGFibGVfZGlydHlfZ2V0KCk7CisKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoZCAhPSAwKTsKKyAgICAgICAgaWYgKGQpCisgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfZGlydHlfc2V0KGQgLSAxKTsKKyAgICB9CisKKyAgICByYyA9IGV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbW1pdChyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfdW5kb19jb21taXRcbiIsIHJjKSk7CisgICAgfQorCisgICAgaWYgKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfRElSVFkpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGUgcm93IGRpcnR5IGZsYWcgc3RpbGwgc2V0IGFmdGVyIHVuZG9fY29tbWl0XG4iKTsKKyAgICAgICAgcm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICY9IH5NRkRfUk9XX0RJUlRZOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX2V0aGVyU3RhdHNUYWJsZV9jb21taXQgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogU0VUOiBVbmRvCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHVuZG8gdGhlIHZhbHVlIGZvciBhIHBhcnRpY3VsYXIgY29sdW1uCisgKi8KK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK19ldGhlclN0YXRzVGFibGVfdW5kb19jb2x1bW4oZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKiByb3dyZXFfY3R4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsIGludCBjb2x1bW4pCit7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29sdW1uIiwKKyAgICAgICAgICAgICAgICAiY2FsbGVkIGZvciAlZFxuIiwgY29sdW1uKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgc3dpdGNoIChjb2x1bW4pIHsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzRGF0YVNvdXJjZSgyKS9PQkpFQ1RJRC9BU05fT0JKRUNUX0lEL29pZChvaWQpLy9ML0EvVy9lL3IvZC9oIAorICAgICAgICAgKi8KKyAgICBjYXNlIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRToKKyAgICAgICAgcmMgPSBldGhlclN0YXRzRGF0YVNvdXJjZV91bmRvKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzT3duZXIoMjApL093bmVyU3RyaW5nL0FTTl9PQ1RFVF9TVFIvY2hhcihjaGFyKS8vTC9BL1cvZS9SL2QvaCAKKyAgICAgICAgICovCisgICAgY2FzZSBDT0xVTU5fRVRIRVJTVEFUU09XTkVSOgorICAgICAgICByYyA9IGV0aGVyU3RhdHNPd25lcl91bmRvKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgICAgICAvKgorICAgICAgICAgKiBldGhlclN0YXRzU3RhdHVzKDIxKS9FbnRyeVN0YXR1cy9BU05fSU5URUdFUi9sb25nKHVfbG9uZykvL2wvQS9XL0Uvci9kL2ggCisgICAgICAgICAqLworICAgIGNhc2UgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVM6CisgICAgICAgIHJjID0gZXRoZXJTdGF0c1N0YXR1c191bmRvKHJvd3JlcV9jdHgpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJ1bmtub3duIGNvbHVtbiAlZCBpbiBfZXRoZXJTdGF0c1RhYmxlX3VuZG9fY29sdW1uXG4iLAorICAgICAgICAgICAgICAgICBjb2x1bW4pOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmM7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfdW5kb19jb2x1bW4gKi8KKworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV91bmRvX3ZhbHVlcyhuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0cykKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmM7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHggPQorICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfZXh0cmFjdChyZXF1ZXN0cyk7CisgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRyaTsKKworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X21mZF9ldGhlclN0YXRzVGFibGVfdW5kb192YWx1ZXMiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IHJvd3JlcV9jdHgpOworCisgICAgcmMgPSBldGhlclN0YXRzVGFibGVfdW5kbyhyb3dyZXFfY3R4KTsKKyAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogbm90aGluZyB3ZSBjYW4gZG8gYWJvdXQgaXQgYnV0IGxvZyBpdAorICAgICAgICAgKi8KKyAgICAgICAgREVCVUdNU0dUTCgoImV0aGVyU3RhdHNUYWJsZTptZmQiLCAiZXJyb3IgJWQgZnJvbSAiCisgICAgICAgICAgICAgICAgICAgICJldGhlclN0YXRzVGFibGVfdW5kb1xuIiwgcmMpKTsKKyAgICB9CisKKyAgICBmb3IgKDsgcmVxdWVzdHM7IHJlcXVlc3RzID0gcmVxdWVzdHMtPm5leHQpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogc2V0IGNvbHVtbiBkYXRhCisgICAgICAgICAqLworICAgICAgICB0cmkgPSBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0cyk7CisgICAgICAgIGlmIChOVUxMID09IHRyaSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHJjID0gX2V0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtbihyb3dyZXFfY3R4LCByZXF1ZXN0cy0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJpLT5jb2xudW0pOworICAgICAgICBpZiAoTUZEX1NVQ0NFU1MgIT0gcmMpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBub3RoaW5nIHdlIGNhbiBkbyBhYm91dCBpdCBidXQgbG9nIGl0CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJldGhlclN0YXRzVGFibGU6bWZkIiwgImVycm9yICVkIGZyb20gIgorICAgICAgICAgICAgICAgICAgICAgICAgImV0aGVyU3RhdHNUYWJsZV91bmRvX2NvbHVtblxuIiwgcmMpKTsKKyAgICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmb3IgcmVzdWx0cyAqLworCisgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9tZmRfZXRoZXJTdGF0c1RhYmxlX3VuZG9fdmFsdWVzICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIFNFVDogaXJyZXZlcnNpYmxlIGNvbW1pdAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qKgorICogQGludGVybmFsCisgKiBjb21taXQgaXJyZXZlcnNpYmxlIGFjdGlvbnMKKyAqLworaW50CitfbWZkX2V0aGVyU3RhdHNUYWJsZV9pcnJldmVyc2libGVfY29tbWl0KG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICphZ3RyZXFfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4ID0KKyAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfcm93X2V4dHJhY3QocmVxdWVzdHMpOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2V0aGVyU3RhdHNUYWJsZV9pcnJldmVyc2libGU6Y29tbWl0IiwgImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworICAgIC8qCisgICAgICogY2hlY2sgZm9yIGFuZCBoYW5kbGUgcm93IGNyZWF0aW9uL2RlbGV0aW9uCisgICAgICogYW5kIHVwZGF0ZSBjb2x1bW4gZXhpc3QgZmxhZ3MuLi4KKyAgICAgKi8KKyAgICBpZiAocm93cmVxX2N0eC0+cm93cmVxX2ZsYWdzICYgTUZEX1JPV19ERUxFVEVEKSB7CisgICAgICAgIGlmICghKHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmIE1GRF9ST1dfQ1JFQVRFRCkpCisgICAgICAgICAgICBDT05UQUlORVJfUkVNT1ZFKGV0aGVyU3RhdHNUYWJsZV9pZl9jdHguY29udGFpbmVyLCByb3dyZXFfY3R4KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFncykgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfbWZkX2lycmV2ZXJzaWJsZV9jb21taXQiLCAidXBkYXRpbmcgZXhpc3RzICglI3gpIHcvc2V0ICglI3gpID0gJSN4XG4iLCByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzLCByb3dyZXFfY3R4LT5jb2x1bW5fc2V0X2ZsYWdzLCAocm93cmVxX2N0eC0+Y29sdW1uX2V4aXN0c19mbGFncyB8IHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MpKSk7CisgICAgICAgICAgICByb3dyZXFfY3R4LT5jb2x1bW5fZXhpc3RzX2ZsYWdzIHw9CisgICAgICAgICAgICAgICAgcm93cmVxX2N0eC0+Y29sdW1uX3NldF9mbGFnczsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPmNvbHVtbl9zZXRfZmxhZ3MgPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChyb3dyZXFfY3R4LT5yb3dyZXFfZmxhZ3MgJiBNRkRfUk9XX0NSRUFURUQpIHsKKyAgICAgICAgICAgIHJvd3JlcV9jdHgtPnJvd3JlcV9mbGFncyAmPSB+TUZEX1JPV19DUkVBVEVEOworICAgICAgICAgICAgQ09OVEFJTkVSX0lOU0VSVChldGhlclN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX21mZF9ldGhlclN0YXRzVGFibGVfaXJyZXZlcnNpYmxlX2NvbW1pdCAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBEQVRBIEFDQ0VTUworICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkICAgICBfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpOworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgaW50CitfY2FjaGVfbG9hZChuZXRzbm1wX2NhY2hlICogY2FjaGUsIHZvaWQgKnZtYWdpYykKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9jYWNoZV9sb2FkIiwgImNhbGxlZFxuIikpOworCisgICAgaWYgKChOVUxMID09IGNhY2hlKSB8fCAoTlVMTCA9PSBjYWNoZS0+bWFnaWMpKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJpbnZhbGlkIGNhY2hlIGZvciBldGhlclN0YXRzVGFibGVfY2FjaGVfbG9hZFxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgcmV0dXJuIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfbG9hZCgobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFnaWMpOworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfY2FjaGVfbG9hZCAqLworCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfY2FjaGVfZnJlZSIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBpbiBldGhlclN0YXRzVGFibGVfY2FjaGVfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jYWNoZV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2l0ZW1fZnJlZShldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqIHJvd3JlcV9jdHgsCisgICAgICAgICAgICAgICAgICAgICB2b2lkICpjb250ZXh0KQoreworICAgIERFQlVHTVNHVEwoKCJpbnRlcm5hbDpldGhlclN0YXRzVGFibGU6X2NvbnRhaW5lcl9pdGVtX2ZyZWUiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIGlmIChOVUxMID09IHJvd3JlcV9jdHgpCisgICAgICAgIHJldHVybjsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9jb250YWluZXJfaXRlbV9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKi8KK3N0YXRpYyB2b2lkCitfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfY29udGFpbmVyX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImludmFsaWQgY29udGFpbmVyIGluIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfZnJlZVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGNhbGwgdXNlciBjb2RlCisgICAgICovCisgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9mcmVlKGNvbnRhaW5lcik7CisKKyAgICAvKgorICAgICAqIGZyZWUgYWxsIGl0ZW1zLiBpbmVmZmljaWVudCwgYnV0IGVhc3kuCisgICAgICovCisgICAgQ09OVEFJTkVSX0NMRUFSKGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jICopIF9jb250YWluZXJfaXRlbV9mcmVlLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NvbnRhaW5lcl9mcmVlICovCisKKy8qKgorICogQGludGVybmFsCisgKiBpbml0aWFsaXplIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfaW5pdChldGhlclN0YXRzVGFibGVfaW50ZXJmYWNlX2N0eCAqIGlmX2N0eCkKK3sKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6ZXRoZXJTdGF0c1RhYmxlOl9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQiLAorICAgICAgICAgICAgICAgICJjYWxsZWRcbiIpKTsKKworICAgIC8qCisgICAgICogY2FjaGUgaW5pdAorICAgICAqLworICAgIGlmX2N0eC0+Y2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jYWNoZV9sb2FkLCBfY2FjaGVfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX29pZF9zaXplKTsKKworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y2FjaGUpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIGNyZWF0aW5nIGNhY2hlIGZvciBldGhlclN0YXRzVGFibGVcbiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWZfY3R4LT5jYWNoZS0+ZmxhZ3MgPSBORVRTTk1QX0NBQ0hFX0RPTlRfSU5WQUxJREFURV9PTl9TRVQ7CisKKyAgICBldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQoJmlmX2N0eC0+Y29udGFpbmVyLCBpZl9jdHgtPmNhY2hlKTsKKyAgICBpZiAoTlVMTCA9PSBpZl9jdHgtPmNvbnRhaW5lcikKKyAgICAgICAgaWZfY3R4LT5jb250YWluZXIgPQorICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfZmluZCgiZXRoZXJTdGF0c1RhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGlmIChOVUxMID09IGlmX2N0eC0+Y29udGFpbmVyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjb250YWluZXIgaW4gIgorICAgICAgICAgICAgICAgICAiZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9pbml0XG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChOVUxMICE9IGlmX2N0eC0+Y2FjaGUpCisgICAgICAgIGlmX2N0eC0+Y2FjaGUtPm1hZ2ljID0gKHZvaWQgKikgaWZfY3R4LT5jb250YWluZXI7Cit9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIF9ldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2luaXQgKi8KKworLyoqCisgKiBAaW50ZXJuYWwKKyAqIHNodXRkb3duIHRoZSBjb250YWluZXIgd2l0aCBmdW5jdGlvbnMgb3Igd3JhcHBlcnMKKyAqLwordm9pZAorX2V0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZV9jdHggKiBpZl9jdHgpCit7CisgICAgREVCVUdNU0dUTCgoImludGVybmFsOmV0aGVyU3RhdHNUYWJsZTpfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biIsICJjYWxsZWRcbiIpKTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9jb250YWluZXJfc2h1dGRvd24oaWZfY3R4LT5jb250YWluZXIpOworCisgICAgX2NvbnRhaW5lcl9mcmVlKGlmX2N0eC0+Y29udGFpbmVyKTsKKworfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaHV0ZG93biAqLworCisKK2V0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKK2V0aGVyU3RhdHNUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgoZXRoZXJTdGF0c1RhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpCit7CisgICAgZXRoZXJTdGF0c1RhYmxlX3Jvd3JlcV9jdHggKnJvd3JlcV9jdHg7CisgICAgb2lkICAgICAgICAgICAgIG9pZF90bXBbTUFYX09JRF9MRU5dOworICAgIG5ldHNubXBfaW5kZXggICBvaWRfaWR4OworICAgIGludCAgICAgICAgICAgICByYzsKKworICAgIC8qCisgICAgICogc2V0IHVwIHN0b3JhZ2UgZm9yIE9JRAorICAgICAqLworICAgIG9pZF9pZHgub2lkcyA9IG9pZF90bXA7CisgICAgb2lkX2lkeC5sZW4gPSBzaXplb2Yob2lkX3RtcCkgLyBzaXplb2Yob2lkKTsKKworICAgIC8qCisgICAgICogY29udmVydAorICAgICAqLworICAgIHJjID0gZXRoZXJTdGF0c1RhYmxlX2luZGV4X3RvX29pZCgmb2lkX2lkeCwgbWliX2lkeCk7CisgICAgaWYgKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJvd3JlcV9jdHggPQorICAgICAgICBDT05UQUlORVJfRklORChldGhlclN0YXRzVGFibGVfaWZfY3R4LmNvbnRhaW5lciwgJm9pZF9pZHgpOworCisgICAgcmV0dXJuIHJvd3JlcV9jdHg7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX2ludGVyZmFjZS5oIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTE0NTdiCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvcm1vbi1taWIvZXRoZXJTdGF0c1RhYmxlL2V0aGVyU3RhdHNUYWJsZV9pbnRlcmZhY2UuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAgICAgIHZlcnNpb24gOiAxNTg5OSAkIG9mICQKKyAqCisgKiAkSWQ6JAorICovCisvKiogQGluZ3JvdXAgaW50ZXJmYWNlOiBSb3V0aW5lcyB0byBpbnRlcmZhY2UgdG8gTmV0LVNOTVAKKyAqCisgKiBcd2FybmluZyBUaGlzIGNvZGUgc2hvdWxkIG5vdCBiZSBtb2RpZmllZCwgY2FsbGVkIGRpcmVjdGx5LAorICogICAgICAgICAgb3IgdXNlZCB0byBpbnRlcnByZXQgZnVuY3Rpb25hbGl0eS4gSXQgaXMgc3ViamVjdCB0bworICogICAgICAgICAgY2hhbmdlIGF0IGFueSB0aW1lLgorICogCisgKiBAeworICovCisvKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFIE5PVEUgTk9URSBOT1RFICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhJUyBGSUxFIERPRVMgTk9UIENPTlRBSU4gQU5ZIFVTRVIgRURJVEFCTEUgQ09ERS4gICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgICAgVEhFIEdFTkVSQVRFRCBDT0RFIElTIElOVEVSTkFMIElNUExFTUVOVEFUSU9OLCBBTkQgICAgICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKiogICAgSVMgU1VCSkVDVCBUTyBDSEFOR0UgV0lUSE9VVCBXQVJOSU5HIElOIEZVVFVSRSBSRUxFQVNFUy4gICAqKioKKyAqICoqKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqKgorICogKioqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKioqCisgKiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICogKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKi8KKyNpZm5kZWYgRVRIRVJTVEFUU1RBQkxFX0lOVEVSRkFDRV9ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworI2luY2x1ZGUgImV0aGVyU3RhdHNUYWJsZS5oIgorCisKKyAgICAvKgorICAgICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqIFRhYmxlIGRlY2xhcmF0aW9ucworICAgICAqLworCisgICAgLyoKKyAgICAgKiBQVUJMSUMgaW50ZXJmYWNlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9ldGhlclN0YXRzVGFibGVfaW5pdGlhbGl6ZV9pbnRlcmZhY2UoZXRoZXJTdGF0c1RhYmxlX3JlZ2lzdHJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdXNlcl9jdHgsIHVfbG9uZyBmbGFncyk7CisgICAgdm9pZCAgICAgICAgICAgCisgICAgICAgIF9ldGhlclN0YXRzVGFibGVfc2h1dGRvd25faW50ZXJmYWNlKGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2N0eCk7CisKKyAgICBldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uICpldGhlclN0YXRzVGFibGVfcmVnaXN0cmF0aW9uX2dldCh2b2lkKTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24KKyAgICAgICAgKmV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb25fc2V0KGV0aGVyU3RhdHNUYWJsZV9yZWdpc3RyYXRpb24gKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3cmVnKTsKKworICAgIG5ldHNubXBfY29udGFpbmVyICpldGhlclN0YXRzVGFibGVfY29udGFpbmVyX2dldCh2b2lkKTsKKyAgICBpbnQgICAgICAgICAgICAgZXRoZXJTdGF0c1RhYmxlX2NvbnRhaW5lcl9zaXplKHZvaWQpOworCisgICAgdV9pbnQgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9nZXQodm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9kaXJ0eV9zZXQodV9pbnQgc3RhdHVzKTsKKworICAgIGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICpldGhlclN0YXRzVGFibGVfYWxsb2NhdGVfcm93cmVxX2N0eCh2b2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICopOworICAgIHZvaWQgICAgICAgICAgIAorICAgICAgICBldGhlclN0YXRzVGFibGVfcmVsZWFzZV9yb3dyZXFfY3R4KGV0aGVyU3RhdHNUYWJsZV9yb3dyZXFfY3R4ICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3dyZXFfY3R4KTsKKworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhfdG9fb2lkKG5ldHNubXBfaW5kZXggKiBvaWRfaWR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV9taWJfaW5kZXgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworICAgIGludCAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfaW5kZXhfZnJvbV9vaWQobmV0c25tcF9pbmRleCAqIG9pZF9pZHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldGhlclN0YXRzVGFibGVfbWliX2luZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOworCisgICAgLyoKKyAgICAgKiBhY2Nlc3MgdG8gY2VydGFpbiBpbnRlcm5hbHMuIHVzZSB3aXRoIGNhdXRpb24hCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIGV0aGVyU3RhdHNUYWJsZV92YWxpZF9jb2x1bW5zX3NldChuZXRzbm1wX2NvbHVtbl9pbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdmMpOworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9JTlRFUkZBQ0VfSCAqLworLyoqIEB9ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX29pZHMuaCBiL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9ldGhlclN0YXRzVGFibGVfb2lkcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZjFkYTMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvZXRoZXJTdGF0c1RhYmxlX29pZHMuaApAQCAtMCwwICsxLDEwNyBAQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgOiBnZW5lcmljLXRhYmxlLW9pZHMubTJjIDEyODU1IDIwMDUtMDktMjcgMTU6NTY6MDhaIHJzdG9yeSAkCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBFVEhFUlNUQVRTVEFCTEVfT0lEU19ICisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9PSURTX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisKKyAgICAvKgorICAgICAqIGNvbHVtbiBudW1iZXIgZGVmaW5pdGlvbnMgZm9yIHRhYmxlIGV0aGVyU3RhdHNUYWJsZSAKKyAgICAgKi8KKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX09JRCAgICAgICAgICAgICAgMSwzLDYsMSwyLDEsMTYsMSwxCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNJTkRFWCAgICAgICAgIDEKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNJTkRFWF9GTEFHICAgICgweDEgPDwgMCkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0UgICAgICAgICAyCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTREFUQVNPVVJDRV9GTEFHICAgICgweDEgPDwgMSkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0RST1BFVkVOVFMgICAgICAgICAzCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTRFJPUEVWRU5UU19GTEFHICAgICgweDEgPDwgMikKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU09DVEVUUyAgICAgICAgIDQKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNPQ1RFVFNfRkxBRyAgICAoMHgxIDw8IDMpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTICAgICAgICAgNQorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFNfRkxBRyAgICAoMHgxIDw8IDQpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNCUk9BRENBU1RQS1RTICAgICAgICAgNgorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU0JST0FEQ0FTVFBLVFNfRkxBRyAgICAoMHgxIDw8IDUpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNNVUxUSUNBU1RQS1RTICAgICAgICAgNworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU01VTFRJQ0FTVFBLVFNfRkxBRyAgICAoMHgxIDw8IDYpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SUyAgICAgICAgIDgKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDUkNBTElHTkVSUk9SU19GTEFHICAgICgweDEgPDwgNykKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1VOREVSU0laRVBLVFMgICAgICAgICA5CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTVU5ERVJTSVpFUEtUU19GTEFHICAgICgweDEgPDwgOCkKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU09WRVJTSVpFUEtUUyAgICAgICAgIDEwCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTX0ZMQUcgICAgKDB4MSA8PCA5KQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTRlJBR01FTlRTICAgICAgICAgMTEKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNGUkFHTUVOVFNfRkxBRyAgICAoMHgxIDw8IDEwKQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSUyAgICAgICAgIDEyCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTSkFCQkVSU19GTEFHICAgICgweDEgPDwgMTEpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TICAgICAgICAgMTMKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNDT0xMSVNJT05TX0ZMQUcgICAgKDB4MSA8PCAxMikKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NE9DVEVUUyAgICAgICAgIDE0CisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxMykKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NVRPMTI3T0NURVRTICAgICAgICAgMTUKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNjVUTzEyN09DVEVUU19GTEFHICAgICgweDEgPDwgMTQpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTI4VE8yNTVPQ1RFVFMgICAgICAgICAxNgorI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUU19GTEFHICAgICgweDEgPDwgMTUpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFMgICAgICAgICAxNworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMyNTZUTzUxMU9DVEVUU19GTEFHICAgICgweDEgPDwgMTYpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNTEyVE8xMDIzT0NURVRTICAgICAgICAgMTgKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTNTEyVE8xMDIzT0NURVRTX0ZMQUcgICAgKDB4MSA8PCAxNykKKworI2RlZmluZSBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMDI0VE8xNTE4T0NURVRTICAgICAgICAgMTkKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUU19GTEFHICAgICgweDEgPDwgMTgpCisKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNPV05FUiAgICAgICAgIDIwCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRyAgICAoMHgxIDw8IDE5KQorCisjZGVmaW5lIENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTICAgICAgICAgMjEKKyNkZWZpbmUgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRyAgICAoMHgxIDw8IDIwKQorCisKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX01JTl9DT0wgICBDT0xVTU5fRVRIRVJTVEFUU0lOREVYCisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9NQVhfQ09MICAgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVMKKworCisgICAgLyoKKyAgICAgKiBUT0RPOjQwNTpyOiBSZXZpZXcgRVRIRVJTVEFUU1RBQkxFX1NFVFRBQkxFX0NPTFMgbWFjcm8uCisgICAgICogT1IgdG9nZXRoZXIgYWxsIHRoZSB3cml0YWJsZSBjb2xzLgorICAgICAqLworI2RlZmluZSBFVEhFUlNUQVRTVEFCTEVfU0VUVEFCTEVfQ09MUyAoQ09MVU1OX0VUSEVSU1RBVFNJTkRFWF9GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNEQVRBU09VUkNFX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0RST1BFVkVOVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTT0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTQlJPQURDQVNUUEtUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNNVUxUSUNBU1RQS1RTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0NSQ0FMSUdORVJST1JTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1VOREVSU0laRVBLVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTT1ZFUlNJWkVQS1RTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0ZSQUdNRU5UU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNKQUJCRVJTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU0NPTExJU0lPTlNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTUEtUUzY0T0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFM2NVRPMTI3T0NURVRTX0ZMQUcgfCBDT0xVTU5fRVRIRVJTVEFUU1BLVFMxMjhUTzI1NU9DVEVUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMjU2VE81MTFPQ1RFVFNfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTUEtUUzUxMlRPMTAyM09DVEVUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNQS1RTMTAyNFRPMTUxOE9DVEVUU19GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNPV05FUl9GTEFHIHwgQ09MVU1OX0VUSEVSU1RBVFNTVEFUVVNfRkxBRykKKyAgICAvKgorICAgICAqIFRPRE86NDA1OnI6IFJldmlldyBFVEhFUlNUQVRTVEFCTEVfUkVRVUlSRURfQ09MUyBtYWNyby4KKyAgICAgKiBPUiB0b2dldGhlciBhbGwgdGhlIHJlcXVpcmVkIHJvd3MgZm9yIHJvdyBjcmVhdGlvbi4KKyAgICAgKiBkZWZhdWx0IGlzIHdyaXRhYmxlIGNvbHMgdy9vdXQgZGVmYXVsdHMuCisgICAgICovCisjZGVmaW5lIEVUSEVSU1RBVFNUQUJMRV9SRVFVSVJFRF9DT0xTIChDT0xVTU5fRVRIRVJTVEFUU0RBVEFTT1VSQ0VfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTT1dORVJfRkxBRyB8IENPTFVNTl9FVEhFUlNUQVRTU1RBVFVTX0ZMQUcpCisKKyNkZWZpbmUgRVRIRVJTVEFUU1RBQkxFX1ZBTElEX0NPTCAgICBDT0xVTU5fRVRIRVJTVEFUU0pBQkJFUlNfRkxBRyAKKworCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEVUSEVSU1RBVFNUQUJMRV9PSURTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Jtb24tbWliL2V0aGVyU3RhdHNUYWJsZS9pb2N0bF9pbXBfY29tbW9uLmggYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4MTk4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9ybW9uLW1pYi9ldGhlclN0YXRzVGFibGUvaW9jdGxfaW1wX2NvbW1vbi5oCkBAIC0wLDAgKzEsMzUgQEAKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaW5jbHVkZSA8bGludXgvc29ja2lvcy5oPgorI2luY2x1ZGUgPGlmYWRkcnMuaD4KKworLyogdXNlIGtlcm5lbCdzIGV0aHRvb2wuaCAgKi8KKworI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Cit0eXBlZGVmIF9fdTY0IHU2NDsKK3R5cGVkZWYgX191MzIgdTMyOwordHlwZWRlZiBfX3UxNiB1MTY7Cit0eXBlZGVmIF9fdTggdTg7CisjaW5jbHVkZSA8bGludXgvZXRodG9vbC5oPgorCisvKiBzdHJ1Y3R1cmUgZm9yIHN0b3JpbmcgdGhlIGludGVyZmFjZSBuYW1lcyBpbiB0aGUgc3lzdGVtICovCisKK3N0cnVjdCBpZm5hbWUgeworICAgIHN0cnVjdCBpZm5hbWUgKmlmbl9uZXh0OworICAgIGNoYXIgbmFtZSBbSUZfTkFNRVNJWkVdOworfTsKKworc3RydWN0IGlmbmFtZSAqZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2dldCAoc3RydWN0IGlmbmFtZSAqLCBpbnQgKik7CitpbnQgZXRoZXJzdGF0c19pbnRlcmZhY2VfbmFtZV9saXN0X2ZyZWUgKHN0cnVjdCBpZm5hbWUgKmxpc3RfaGVhZCk7CitpbnQgZXRoZXJzdGF0c19pbnRlcmZhY2VfaW9jdGxfaWZpbmRleF9nZXQgKGludCBmZCwgY29uc3QgY2hhciAqbmFtZSk7CitpbnQgX2V0aGVyU3RhdHNfaW9jdGxfZ2V0KGludCBmZCwgaW50IHdoaWNoLCBzdHJ1Y3QgaWZyZXEgKmlmcnEsIGNvbnN0IGNoYXIqIG5hbWUpOworaW50IGludGVyZmFjZV9pb2N0bF9ldGhlcnN0YXRzX2dldChldGhlclN0YXRzVGFibGVfcm93cmVxX2N0eCAqcm93cmVxX2N0eCwgaW50IGZkLCBjb25zdCBjaGFyKiBuYW1lKTsKKworLyogZm9yIG1haW50YWluYWJpbGl0eSAqLworCisjZGVmaW5lIEJST0FEQ09NX1JFQ0VJVkVfSkFCQkVSUyAgICAgICAgICAgICAgICAicnhfamFiYmVycyIKKworI2RlZmluZSBFVEhFUlNUQVRTSkFCQkVSUyh4KSAgICAgICAgICAgICAgICAgICAgc3Ryc3RyKHgsIEJST0FEQ09NX1JFQ0VJVkVfSkFCQkVSUykKKwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY0xvY2FsQWRkclRhYmxlLmMKaW5kZXggNDM1ZjU2MC4uYzAzYWVmNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jTG9jYWxBZGRyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NMb2NhbEFkZHJUYWJsZS5jCkBAIC0xMDMsNiArMTAzLDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cEFzc29jTG9jYWxBZGRyVGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTIxLDYgKzEyMiw5IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1JlbUFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKaW5kZXggNjAxMGQ4NC4uYWQxNGE0NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jUmVtQWRkclRhYmxlLmMKQEAgLTEwMSw2ICsxMDEsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwQXNzb2NSZW1BZGRyVGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTE5LDYgKzEyMCw4IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKIAogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cEFzc29jVGFibGUuYwppbmRleCBlNzIwYTM4Li5mM2E2OGEzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwQXNzb2NUYWJsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBBc3NvY1RhYmxlLmMKQEAgLTEzMyw2ICsxMzMsNyBAQAogICAgIGlmIChTTk1QRVJSX1NVQ0NFU1MgIT0gbmV0c25tcF9yZWdpc3Rlcl90YWJsZShyZWcsIHRhYmxlX2luZm8pKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCiAgICAgICAgICAgICAgICAgICJlcnJvciByZWdpc3RlcmluZyB0YWJsZSBoYW5kbGVyIGZvciBzY3RwQXNzb2NUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xNTEsNiArMTUyLDEyIEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKGNhY2hlKQorICAgICAgICBuZXRzbm1wX2NhY2hlX2ZyZWUoY2FjaGUpOworCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBMb2NhbFBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKaW5kZXggYjc5OGI3ZS4uN2EyYjBiMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlLmMKQEAgLTk4LDYgKzk4LDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cExvY2FsUG9ydFRhYmxlXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTExNiw2ICsxMTcsOCBAQAogICAgIGlmIChoYW5kbGVyKQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKIAorICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CiAKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Ib3N0TmFtZVRhYmxlLmMKaW5kZXggZWQxYjg0OS4uMzM3MGY1MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtSG9zdE5hbWVUYWJsZS5jCkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbUhvc3ROYW1lVGFibGVcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIApAQCAtMTE4LDYgKzExOSw5IEBACiAgICAgaWYgKGhhbmRsZXIpCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOwogCisgICAgaWYgKHRhYmxlX2luZm8pCisgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSh0YWJsZV9pbmZvKTsKKwogICAgIGlmIChjb250YWluZXIpCiAgICAgICAgIENPTlRBSU5FUl9GUkVFKGNvbnRhaW5lcik7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1JUEFkZHJUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKaW5kZXggZmI3ZmY0Yi4uMjU0MmVhNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlLmMKQEAgLTk5LDYgKzk5LDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbUlQQWRkclRhYmxlXG4iKTsKKyAgICAgICAgcmVnID0gTlVMTDsgLyogaXQgd2FzIGZyZWVkIGluc2lkZSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlICovCiAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTExMiw2ICsxMTMsOCBAQAogICAgIGlmIChoYW5kbGVyKQogICAgICAgICBuZXRzbm1wX2hhbmRsZXJfZnJlZShoYW5kbGVyKTsKIAorICAgIGlmICh0YWJsZV9pbmZvKQorICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUodGFibGVfaW5mbyk7CiAKICAgICBpZiAoY29udGFpbmVyKQogICAgICAgICBDT05UQUlORVJfRlJFRShjb250YWluZXIpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVBvcnRUYWJsZS5jCmluZGV4IGIwNjIwNWMuLmE3Njc0ZTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1Qb3J0VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUG9ydFRhYmxlLmMKQEAgLTk4LDYgKzk4LDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbVBvcnRUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xMTEsNiArMTEyLDggQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOwogCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBMb29rdXBSZW1QcmltSVBBZGRyVGFibGUuYwppbmRleCA0NDJlMjA3Li42YmMwZGU2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwTG9va3VwUmVtUHJpbUlQQWRkclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZS5jCkBAIC0xMDAsNiArMTAwLDcgQEAKICAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfcmVnaXN0ZXJfdGFibGUocmVnLCB0YWJsZV9pbmZvKSkgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3Igc2N0cExvb2t1cFJlbVByaW1JUEFkZHJUYWJsZVxuIik7CisgICAgICAgIHJlZyA9IE5VTEw7IC8qIGl0IHdhcyBmcmVlZCBpbnNpZGUgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAqLwogICAgICAgICBnb3RvIGJhaWw7CiAgICAgfQogCkBAIC0xMTMsNiArMTE0LDggQEAKICAgICBpZiAoaGFuZGxlcikKICAgICAgICAgbmV0c25tcF9oYW5kbGVyX2ZyZWUoaGFuZGxlcik7CiAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOwogCiAgICAgaWYgKGNvbnRhaW5lcikKICAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5jCmluZGV4IDAzNmY0MGMuLjgyMTA3OWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuYwpAQCAtMTgsNiArMTgsNyBAQAogewogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm9fc3RhdHM7CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mb19wYXJhbXM7CisgICAgaW50IHJjOwogCiAgICAgREVCVUdNU0dUTCgoInNjdHA6c2NhbGFyczppbml0IiwgIkluaXRpYWxpemluZ1xuIikpOwogCkBAIC0yNyw4ICsyOCwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3RwX3N0YXRzX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzY3RwX3N0YXRzX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKLSAgICBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhcl9ncm91cChyZWdpbmZvX3N0YXRzLCBTQ1RQX0NVUlJFU1RBQiwKKyAgICBpZiAoIXJlZ2luZm9fc3RhdHMpCisgICAgICAgIHJldHVybjsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mb19zdGF0cywgU0NUUF9DVVJSRVNUQUIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9ESVNDT05USU5VSVRZVElNRSk7CisgICAgaWYgKHJjICE9IFNOTVBFUlJfU1VDQ0VTUykKKyAgICAgICAgcmV0dXJuOworCiAgICAgbmV0c25tcF9pbmplY3RfaGFuZGxlcihyZWdpbmZvX3N0YXRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNDVFBfU1RBVFNfQ0FDSEVfVElNRU9VVCwKQEAgLTQzLDggKzUwLDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjdHBfcGFyYW1zX29pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSChzY3RwX3BhcmFtc19vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSk7Ci0gICAgbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mb19wYXJhbXMsIFNDVFBfUlRPQUxHT1JJVEhNLAorICAgIGlmICghcmVnaW5mb19wYXJhbXMpCisgICAgICAgIHJldHVybjsKKworICAgIHJjID0gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mb19wYXJhbXMsIFNDVFBfUlRPQUxHT1JJVEhNLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDVFBfTUFYSU5JVFJFVFIpOworICAgIGlmICghcmMpCisgICAgICAgIHJldHVybjsKICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZ2luZm9fcGFyYW1zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNDVFBfUEFSQU1TX0NBQ0hFX1RJTUVPVVQsCkBAIC02NSw3ICs3Nyw2IEBACiB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZXF1ZXN0dmI7CiAgICAgaW50ICAgICAgICAgICAgIHN1YmlkOwotICAgIGludCAgICAgICAgICAgICByZXQ7CiAKICAgICBERUJVR01TR1RMKCgic2N0cDpzY2FsYXJzOnN0YXRzIiwgIkhhbmRsZXIgLSBtb2RlICVzXG4iLAogICAgICAgICAgICAgICAgIHNlX2ZpbmRfbGFiZWxfaW5fc2xpc3QoImFnZW50X21vZGUiLCByZXFpbmZvLT5tb2RlKSkpOwpAQCAtMjE1LDcgKzIyNiw2IEBACiB7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpyZXF1ZXN0dmI7CiAgICAgaW50ICAgICAgICAgICAgIHN1YmlkOwotICAgIGludCAgICAgICAgICAgICByZXQ7CiAKICAgICBERUJVR01TR1RMKCgic2N0cDpzY2FsYXJzOnBhcmFtcyIsICJIYW5kbGVyIC0gbW9kZSAlc1xuIiwKICAgICAgICAgICAgICAgICBzZV9maW5kX2xhYmVsX2luX3NsaXN0KCJhZ2VudF9tb2RlIiwgcmVxaW5mby0+bW9kZSkpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmggYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwU2NhbGFycy5oCmluZGV4IDI1YjE4N2EuLjhkYmI4YjUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnMuaApAQCAtNyw2ICs3LDEwIEBACiBjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwU2NhbGFyc19jb21tb24pCiAjaWYgZGVmaW5lZCggbGludXggKQogY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cFNjYWxhcnNfbGludXgpCisjZWxpZiBkZWZpbmVkKCBmcmVlYnNkOCApIHx8IGRlZmluZWQgKCBmcmVlYnNkNyApCitjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwU2NhbGFyc19mcmVlYnNkKQkgCisjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCitjb25maWdfcmVxdWlyZShzY3RwLW1pYi9zY3RwU2NhbGFyc19zb2xhcmlzMikJIAogI2Vsc2UKIC8qCiAgKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX2ZyZWVic2QuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGM3MjNmCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfZnJlZWJzZC5jCkBAIC0wLDAgKzEsOTMgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlICJzY3RwU2NhbGFyc19jb21tb24uaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHAuaD4KKyNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfY29uc3RhbnRzLmg+CisKK3ZvaWQKK25ldHNubXBfYWNjZXNzX3NjdHBfc3RhdHNfYXJjaF9pbml0KCkKK3sKK30KKworaW50CituZXRzbm1wX2FjY2Vzc19zY3RwX3N0YXRzX2FyY2hfbG9hZChuZXRzbm1wX3NjdHBfc3RhdHMgKiBzY3RwX3N0YXRzKQoreworICBzdHJ1Y3Qgc2N0cHN0YXQgc3RhdDsKKyAgc2l6ZV90IGxlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cHN0YXQpOworCisgIGlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnNjdHAuc3RhdHMiLCAmc3RhdCwgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJcmV0dXJuKC0xKTsKKyAgfQorICBtZW1zZXQoc2N0cF9zdGF0cywgMCwgc2l6ZW9mKG5ldHNubXBfc2N0cF9zdGF0cykpOworICBzY3RwX3N0YXRzLT5jdXJyX2VzdGFiID0gc3RhdC5zY3Rwc19jdXJyZXN0YWI7CisgIHNjdHBfc3RhdHMtPmFjdGl2ZV9lc3RhYnMgPSBzdGF0LnNjdHBzX2FjdGl2ZWVzdGFiOworICBzY3RwX3N0YXRzLT5wYXNzaXZlX2VzdGFicyA9IHN0YXQuc2N0cHNfcGFzc2l2ZWVzdGFiOworICBzY3RwX3N0YXRzLT5hYm9ydGVkcyA9IHN0YXQuc2N0cHNfYWJvcnRlZDsKKyAgc2N0cF9zdGF0cy0+c2h1dGRvd25zID0gc3RhdC5zY3Rwc19zaHV0ZG93bjsKKyAgc2N0cF9zdGF0cy0+b3V0X29mX2JsdWVzID0gc3RhdC5zY3Rwc19vdXRvZnRoZWJsdWU7CisgIHNjdHBfc3RhdHMtPmNoZWNrc3VtX2Vycm9ycyA9IHN0YXQuc2N0cHNfY2hlY2tzdW1lcnJvcnM7CisgIHNjdHBfc3RhdHMtPm91dF9jdHJsX2NodW5rcy5sb3cgPSBzdGF0LnNjdHBzX291dGNvbnRyb2xjaHVua3M7CisgIHNjdHBfc3RhdHMtPm91dF9vcmRlcl9jaHVua3MubG93ID0gc3RhdC5zY3Rwc19vdXRvcmRlcmNodW5rczsKKyAgc2N0cF9zdGF0cy0+b3V0X3Vub3JkZXJfY2h1bmtzLmxvdyA9IHN0YXQuc2N0cHNfb3V0dW5vcmRlcmNodW5rczsKKyAgc2N0cF9zdGF0cy0+aW5fY3RybF9jaHVua3MubG93ID0gc3RhdC5zY3Rwc19pbmNvbnRyb2xjaHVua3M7CisgIHNjdHBfc3RhdHMtPmluX29yZGVyX2NodW5rcy5sb3cgPSBzdGF0LnNjdHBzX2lub3JkZXJjaHVua3M7CisgIHNjdHBfc3RhdHMtPmluX3Vub3JkZXJfY2h1bmtzLmxvdyA9IHN0YXQuc2N0cHNfaW51bm9yZGVyY2h1bmtzOworICBzY3RwX3N0YXRzLT5mcmFnX3Vzcl9tc2dzLmxvdyA9IHN0YXQuc2N0cHNfZnJhZ3Vzcm1zZ3M7CisgIHNjdHBfc3RhdHMtPnJlYXNtX3Vzcl9tc2dzLmxvdyA9IHN0YXQuc2N0cHNfcmVhc211c3Jtc2dzOworICBzY3RwX3N0YXRzLT5vdXRfc2N0cF9wYWNrcy5sb3cgPSBzdGF0LnNjdHBzX291dHBhY2tldHM7CisgIHNjdHBfc3RhdHMtPmluX3NjdHBfcGFja3MubG93ID0gc3RhdC5zY3Rwc19pbnBhY2tldHM7CisgIHNjdHBfc3RhdHMtPmRpc2NvbnRpbnVpdHlfdGltZSA9IDA7CisgIHJldHVybiAwOworfQorCit2b2lkCituZXRzbm1wX2FjY2Vzc19zY3RwX3BhcmFtc19hcmNoX2luaXQoKQoreworfQorCitpbnQKK25ldHNubXBfYWNjZXNzX3NjdHBfcGFyYW1zX2FyY2hfbG9hZChuZXRzbm1wX3NjdHBfcGFyYW1zICogc2N0cF9wYXJhbXMpCit7CisJc2l6ZV90IGxlbiA9IHNpemVvZih1aW50MzJfdCk7CisKKyAgICBzY3RwX3BhcmFtcy0+cnRvX2FsZ29yaXRobSA9IE5FVFNOTVBfU0NUUF9BTEdPUklUSE1fVkFOSjsKKyAgICBzY3RwX3BhcmFtcy0+bWF4X2Fzc29jcyA9ICBTQ1RQX01BWF9OVU1fT0ZfQVNPQzsgCisJaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5ydG9fbWF4IiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+cnRvX21heCwKKwkJCQkJICZsZW4sIE5VTEwsIDApIDwgMCkgeworCSAgcmV0dXJuKC0xKTsKKwl9CisJaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5ydG9fbWluIiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+cnRvX21pbiwKKwkJCQkJICZsZW4sIE5VTEwsIDApIDwgMCkgeworCSAgcmV0dXJuKC0xKTsKKwl9CisJaWYgKHN5c2N0bGJ5bmFtZSgibmV0LmluZXQuc2N0cC5ydG9faW5pdGlhbCIsCisJCQkJCSAmc2N0cF9wYXJhbXMtPnJ0b19pbml0aWFsLAorCQkJCQkgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJICByZXR1cm4oLTEpOworCX0KKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLnZhbGlkX2Nvb2tpZV9saWZlIiwKKwkJCQkJICZzY3RwX3BhcmFtcy0+dmFsX2Nvb2tpZV9saWZlLAorCQkJCQkgJmxlbiwgTlVMTCwgMCkgPCAwKSB7CisJICByZXR1cm4oLTEpOworCX0KKwlpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLmluaXRfcnR4X21heCIsCisJCQkJCSAmc2N0cF9wYXJhbXMtPm1heF9pbml0X3JldHIsCisJCQkJCSAmbGVuLCBOVUxMLCAwKSA8IDApIHsKKwkgIHJldHVybigtMSk7CisJfQorICAgIHJldHVybiAwOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFNjYWxhcnNfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdhYjU0NgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBTY2FsYXJzX3NvbGFyaXMyLmMKQEAgLTAsMCArMSw5NSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgInNjdHBTY2FsYXJzX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxpbmV0L21pYjIuaD4KKworI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKKwordm9pZAorbmV0c25tcF9hY2Nlc3Nfc2N0cF9zdGF0c19hcmNoX2luaXQoKQoreworfQorCitpbnQKK25ldHNubXBfYWNjZXNzX3NjdHBfc3RhdHNfYXJjaF9sb2FkKG5ldHNubXBfc2N0cF9zdGF0cyAqIHNjdHBfc3RhdHMpCit7CisgICAgbWliMl9zY3RwX3Qgc2N0cHN0YXQ7CisgICAgc2l6ZV90IGxlbiA9IHNpemVvZihzY3Rwc3RhdCk7CisgICAgaW50IHJldDsKKworICAgIHJldCA9IGdldE1pYnN0YXQoTUlCX1NDVFAsICZzY3Rwc3RhdCwgbGVuLCBHRVRfRklSU1QsICZHZXRfZXZlcnl0aGluZywgTlVMTCk7CisgICAgaWYgKHJldCkgeworICAgICAgICBzbm1wX2xvZ19wZXJyb3IoImdldE1pYnN0YXQgTUlCX1NDVFAiKTsKKwlyZXR1cm4gLTE7CisgICAgfQorICAgIG1lbXNldChzY3RwX3N0YXRzLCAwLCBzaXplb2YobmV0c25tcF9zY3RwX3N0YXRzKSk7CisgICAgc2N0cF9zdGF0cy0+Y3Vycl9lc3RhYiA9IHNjdHBzdGF0LnNjdHBDdXJyRXN0YWI7CisgICAgc2N0cF9zdGF0cy0+YWN0aXZlX2VzdGFicyA9IHNjdHBzdGF0LnNjdHBBY3RpdmVFc3RhYjsKKyAgICBzY3RwX3N0YXRzLT5wYXNzaXZlX2VzdGFicyA9IHNjdHBzdGF0LnNjdHBQYXNzaXZlRXN0YWI7CisgICAgc2N0cF9zdGF0cy0+YWJvcnRlZHMgPSBzY3Rwc3RhdC5zY3RwQWJvcnRlZDsKKyAgICBzY3RwX3N0YXRzLT5zaHV0ZG93bnMgPSBzY3Rwc3RhdC5zY3RwU2h1dGRvd25zOworICAgIHNjdHBfc3RhdHMtPm91dF9vZl9ibHVlcyA9IHNjdHBzdGF0LnNjdHBPdXRPZkJsdWU7CisgICAgc2N0cF9zdGF0cy0+Y2hlY2tzdW1fZXJyb3JzID0gc2N0cHN0YXQuc2N0cENoZWNrc3VtRXJyb3I7CisgICAgc2N0cF9zdGF0cy0+b3V0X2N0cmxfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBPdXRDdHJsQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfY3RybF9jaHVua3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBPdXRDdHJsQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPm91dF9vcmRlcl9jaHVua3MubG93ID0gc2N0cHN0YXQuc2N0cE91dE9yZGVyQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfb3JkZXJfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwT3V0T3JkZXJDaHVua3MgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+b3V0X3Vub3JkZXJfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBPdXRVbm9yZGVyQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfdW5vcmRlcl9jaHVua3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBPdXRVbm9yZGVyQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPmluX2N0cmxfY2h1bmtzLmxvdyA9IHNjdHBzdGF0LnNjdHBJbkN0cmxDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPmluX2N0cmxfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwSW5DdHJsQ2h1bmtzID4+IDMyOworICAgIHNjdHBfc3RhdHMtPmluX29yZGVyX2NodW5rcy5sb3cgPSBzY3Rwc3RhdC5zY3RwSW5PcmRlckNodW5rcyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+aW5fb3JkZXJfY2h1bmtzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwSW5PcmRlckNodW5rcyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5pbl91bm9yZGVyX2NodW5rcy5sb3cgPSBzY3Rwc3RhdC5zY3RwSW5Vbm9yZGVyQ2h1bmtzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5pbl91bm9yZGVyX2NodW5rcy5oaWdoID0gc2N0cHN0YXQuc2N0cEluVW5vcmRlckNodW5rcyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5pbl9vcmRlcl9jaHVua3MubG93ID0gc2N0cHN0YXQuc2N0cEluT3JkZXJDaHVua3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPmluX29yZGVyX2NodW5rcy5oaWdoID0gc2N0cHN0YXQuc2N0cEluT3JkZXJDaHVua3MgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+ZnJhZ191c3JfbXNncy5sb3cgPSBzY3Rwc3RhdC5zY3RwRnJhZ1Vzck1zZ3MgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPmZyYWdfdXNyX21zZ3MuaGlnaCA9IHNjdHBzdGF0LnNjdHBGcmFnVXNyTXNncyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5yZWFzbV91c3JfbXNncy5sb3cgPSBzY3Rwc3RhdC5zY3RwUmVhc21Vc3JNc2dzICYgMHhGRkZGRkZGRjsKKyAgICBzY3RwX3N0YXRzLT5yZWFzbV91c3JfbXNncy5oaWdoID0gc2N0cHN0YXQuc2N0cFJlYXNtVXNyTXNncyA+PiAzMjsKKyAgICBzY3RwX3N0YXRzLT5vdXRfc2N0cF9wYWNrcy5sb3cgPSBzY3Rwc3RhdC5zY3RwT3V0U0NUUFBrdHMgJiAweEZGRkZGRkZGOworICAgIHNjdHBfc3RhdHMtPm91dF9zY3RwX3BhY2tzLmhpZ2ggPSBzY3Rwc3RhdC5zY3RwT3V0U0NUUFBrdHMgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+aW5fc2N0cF9wYWNrcy5sb3cgPSBzY3Rwc3RhdC5zY3RwSW5TQ1RQUGt0cyAmIDB4RkZGRkZGRkY7CisgICAgc2N0cF9zdGF0cy0+aW5fc2N0cF9wYWNrcy5oaWdoID0gc2N0cHN0YXQuc2N0cEluU0NUUFBrdHMgPj4gMzI7CisgICAgc2N0cF9zdGF0cy0+ZGlzY29udGludWl0eV90aW1lID0gMDsKKyAgICByZXR1cm4gMDsKK30KKwordm9pZAorbmV0c25tcF9hY2Nlc3Nfc2N0cF9wYXJhbXNfYXJjaF9pbml0KCkKK3sKK30KKworaW50CituZXRzbm1wX2FjY2Vzc19zY3RwX3BhcmFtc19hcmNoX2xvYWQobmV0c25tcF9zY3RwX3BhcmFtcyAqIHNjdHBfcGFyYW1zKQoreworICAgIG1pYjJfc2N0cF90IHNjdHBzdGF0OworICAgIHNpemVfdCBsZW4gPSBzaXplb2Yoc2N0cHN0YXQpOworICAgIGludCByZXQ7CisKKyAgICByZXQgPSBnZXRNaWJzdGF0KE1JQl9TQ1RQLCAmc2N0cHN0YXQsIGxlbiwgR0VUX0ZJUlNULCAmR2V0X2V2ZXJ5dGhpbmcsIE5VTEwpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAgc25tcF9sb2dfcGVycm9yKCJnZXRNaWJzdGF0IE1JQl9TQ1RQIik7CisJcmV0dXJuIC0xOworICAgIH0KKworICAgIHNjdHBfcGFyYW1zLT5ydG9fYWxnb3JpdGhtID0gc2N0cHN0YXQuc2N0cFJ0b0FsZ29yaXRobTsKKyAgICBzY3RwX3BhcmFtcy0+bWF4X2Fzc29jcyA9ICBzY3Rwc3RhdC5zY3RwTWF4QXNzb2NzOyAKKyAgICBzY3RwX3BhcmFtcy0+cnRvX21heCA9IHNjdHBzdGF0LnNjdHBSdG9NYXg7CisgICAgc2N0cF9wYXJhbXMtPnJ0b19taW4gPSBzY3Rwc3RhdC5zY3RwUnRvTWluOworICAgIHNjdHBfcGFyYW1zLT5ydG9faW5pdGlhbCA9IHNjdHBzdGF0LnNjdHBSdG9Jbml0aWFsOworICAgIHNjdHBfcGFyYW1zLT52YWxfY29va2llX2xpZmUgPSBzY3Rwc3RhdC5zY3RwVmFsQ29va2llTGlmZTsKKyAgICBzY3RwX3BhcmFtcy0+bWF4X2luaXRfcmV0ciA9IHNjdHBzdGF0LnNjdHBNYXhJbml0UmV0cjsKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXMuaAppbmRleCA1NDQxNDRhLi5kMjJhZWEwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlcy5oCkBAIC0xNCwxMSArMTQsMTIgQEAKIGNvbmZpZ19yZXF1aXJlKHNjdHAtbWliL3NjdHBBc3NvY1RhYmxlKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKHNjdHAtbWliL3NjdHBUYWJsZXNfbGludXgpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZSkKKyNlbGlmIGRlZmluZWQoIGZyZWVic2Q3ICkgfHwgZGVmaW5lZCggZnJlZWJzZDggKQorY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cFRhYmxlc19mcmVlYnNkKQorI2VsaWYgZGVmaW5lZCggc29sYXJpczIgKQorY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvc2N0cFRhYmxlc19zb2xhcmlzMikKICNlbHNlCi0vKgotKiBjb3VsZG4ndCBkZXRlcm1pbmUgdGhlIGNvcnJlY3QgZmlsZSEKLSogcmVxdWlyZSBhIGJvZ3VzIGZpbGUgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCi0qLwotY29uZmlnX3JlcXVpcmUoc2N0cC1taWIvdGFibGVzLXVua25vd24tYXJjaCkKK2NvbmZpZ19lcnJvcihTQ1RQLU1JQiBpcyBub3QgYXZhaWxhYmxlIGluIHRpaHMgZW52aXJvbm1lbnQpCiAjZW5kaWYKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU0NUUF9UQUJMRVNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaCBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfY29tbW9uLmgKaW5kZXggZWI3Zjk5MC4uZjQ1NzYwNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19jb21tb24uaAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2NvbW1vbi5oCkBAIC0xLDYgKzEsMTAgQEAKICNpZm5kZWYgU0NUUF9UQUJMRVNfQ09NTU9OX0gKICNkZWZpbmUgU0NUUF9UQUJMRVNfQ09NTU9OX0gKIAorI2lmIGRlZmluZWQoZnJlZWJzZDgpIHx8IGRlZmluZWQoZnJlZWJzZDcpCisjZGVmaW5lIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fZnJlZSBTTk1QX0ZSRUUKKyNlbmRpZgorCiAjZGVmaW5lIFNDVFBfSVBBRERSRVNTX1NJWkUgMTYKICNkZWZpbmUgU0NUUF9IT1NUTkFNRV9TSVpFIDI1NQogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QuYyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfZnJlZWJzZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNmU5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2ZyZWVic2QuYwpAQCAtMCwwICsxLDI0NCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgInNjdHBBc3NvY1RhYmxlLmgiCisjaW5jbHVkZSAic2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwQXNzb2NSZW1BZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwVGFibGVzX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8dXRpbF9mdW5jcy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cC5oPgorI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9jb25zdGFudHMuaD4KKworCitzdGF0aWMgaW50CitwYXJzZV9hc3NvY19sb2NhbF9hZGRyZXNzZXMoc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywKKwkJCQkJCQlzdHJ1Y3QgeHNjdHBfbGFkZHIgKnhsYWRkcikKK3sKKyAgaW50IHJldDsKKyAgc2N0cEFzc29jTG9jYWxBZGRyVGFibGVfZW50cnkgKmVudHJ5OworICBlbnRyeSA9IHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5X2NyZWF0ZSgpOworICBpZiAoZW50cnkgPT0gTlVMTCkKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworCisgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IDA7CisgIGlmICh4bGFkZHItPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQpIHsKKwllbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyVHlwZSA9IElORVRBRERSRVNTVFlQRV9JUFY0OworCWVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkciwKKwkJICAgJnhsYWRkci0+YWRkcmVzcy5zaW4uc2luX2FkZHIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuKTsKKyAgfSBlbHNlIGlmICh4bGFkZHItPmFkZHJlc3Muc2Euc2FfZmFtaWx5ID09IEFGX0lORVQ2KSB7CisJZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkclR5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKwllbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyX2xlbiA9IDE2OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyLAorCQkgICAmeGxhZGRyLT5hZGRyZXNzLnNpbjYuc2luNl9hZGRyLAorCQkgICBlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyX2xlbik7CisgIH0KKyAgZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkclN0YXJ0VGltZSA9IHhsYWRkci0+c3RhcnRfdGltZS50dl9zZWM7CisgIHJldCA9IHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jTG9jYWxBZGRyVGFibGUsCisJCQkJCQkJCQkJCSAgZW50cnkpOworICBpZiAocmV0ICE9IFNOTVBfRVJSX05PRVJST1IpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworc3RhdGljIGludAorcGFyc2VfYXNzb2NfeHN0Y2Ioc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywgc3RydWN0IHhzY3RwX3RjYiAqeHN0Y2IpCit7CisgIGludCAgICAgICAgICAgICByZXQ7CisgIHNjdHBBc3NvY1RhYmxlX2VudHJ5ICplbnRyeTsKKworICBlbnRyeSA9IHNjdHBBc3NvY1RhYmxlX2VudHJ5X2NyZWF0ZSgpOworICBpZiAoZW50cnkgPT0gTlVMTCkKKwlyZXR1cm4gU05NUF9FUlJfR0VORVJSOworCisgIHN3aXRjaCAoeHN0Y2ItPnN0YXRlKSB7CisgIGNhc2UgU0NUUF9TVEFURV9JTlVTRToKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9ERUxFVEVUQ0I7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9DT09LSUVfV0FJVDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVXQUlUOworCWJyZWFrOworICBjYXNlIFNDVFBfU1RBVEVfQ09PS0lFX0VDSE9FRDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVFQ0hPRUQ7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9PUEVOOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX0VTVEFCTElTSEVEOworCWJyZWFrOworICBjYXNlIFNDVFBfU1RBVEVfU0hVVERPV05fU0VOVDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTlNFTlQ7CisJYnJlYWs7CisgIGNhc2UgU0NUUF9TVEFURV9TSFVURE9XTl9SRUNFSVZFRDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9TSFVURE9XTlJFQ0VJVkVEOworCWJyZWFrOworICBjYXNlIFNDVFBfU1RBVEVfU0hVVERPV05fQUNLX1NFTlQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05BQ0tTRU5UOworCWJyZWFrOworICBkZWZhdWx0OgorICBjYXNlIFNDVFBfU1RBVEVfRU1QVFk6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfQ0xPU0VEOworCWJyZWFrOworICB9OworICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSB4c3RjYi0+aGVhcnRiZWF0X2ludGVydmFsOworICBlbnRyeS0+c2N0cEFzc29jSWQgPSAwOworICBlbnRyeS0+c2N0cEFzc29jUHJpbVByb2Nlc3MgPSB4c3RjYi0+cHJpbWFyeV9wcm9jZXNzOworICBlbnRyeS0+c2N0cEFzc29jTG9jYWxQb3J0ID0geHN0Y2ItPmxvY2FsX3BvcnQ7CisgIGVudHJ5LT5zY3RwQXNzb2NSZW1Qb3J0ID0geHN0Y2ItPnJlbW90ZV9wb3J0OworICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSB4c3RjYi0+aGVhcnRiZWF0X2ludGVydmFsOworICBlbnRyeS0+c2N0cEFzc29jSW5TdHJlYW1zID0geHN0Y2ItPmluX3N0cmVhbXM7CisgIGVudHJ5LT5zY3RwQXNzb2NPdXRTdHJlYW1zID0geHN0Y2ItPm91dF9zdHJlYW1zOworICBlbnRyeS0+c2N0cEFzc29jTWF4UmV0ciA9IHhzdGNiLT5tYXhfbnJfcmV0cmFuczsKKyAgZW50cnktPnNjdHBBc3NvY1QxZXhwaXJlZHMgPSB4c3RjYi0+VDFfZXhwaXJlcmllczsKKyAgZW50cnktPnNjdHBBc3NvY1J0eENodW5rcyA9IHhzdGNiLT5yZXRyYW5zbWl0dGVkX3RzbnM7CisgIGVudHJ5LT5zY3RwQXNzb2NUMmV4cGlyZWRzID0geHN0Y2ItPlQyX2V4cGlyZXJpZXM7IAorICBlbnRyeS0+c2N0cEFzc29jUmVtSG9zdE5hbWVbMF0gPSAwOworICBlbnRyeS0+c2N0cEFzc29jUmVtSG9zdE5hbWVfbGVuID0gMDsKKyAgZW50cnktPnNjdHBBc3NvY0Rpc2NvbnRpbnVpdHlUaW1lID0geHN0Y2ItPmRpc2NvbnRpbnVpdHlfdGltZS50dl9zZWM7CisgIGVudHJ5LT5zY3RwQXNzb2NTdGFydFRpbWUgPSB4c3RjYi0+c3RhcnRfdGltZS50dl9zZWM7CQorCisgIHJldCA9IHNjdHBBc3NvY1RhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jVGFibGUsIGVudHJ5KTsKKyAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisJcmV0dXJuIHJldDsKKyAgfQorCisgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisKK3N0YXRpYyBpbnQKK3BhcnNlX3JlbWFkZHJfeHJhZGRyKHNjdHBUYWJsZXNfY29udGFpbmVycyAqIGNvbnRhaW5lcnMsCisJCQkJCSBzdHJ1Y3QgeHNjdHBfcmFkZHIgKnhyYWRkcikKK3sKKyAgaW50ICAgICAgICAgICAgIHJldDsKKyAgc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5ICplbnRyeTsKKworICBlbnRyeSA9IHNjdHBBc3NvY1JlbUFkZHJUYWJsZV9lbnRyeV9jcmVhdGUoKTsKKyAgaWYgKGVudHJ5ID09IE5VTEwpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworCQorICBlbnRyeS0+c2N0cEFzc29jSWQgPSAwOworCisgIGlmKHhyYWRkci0+YWN0aXZlKSAKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkckFjdGl2ZSA9IFRSVVRIVkFMVUVfVFJVRTsKKyAgZWxzZQorCWVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyQWN0aXZlID0gVFJVVEhWQUxVRV9GQUxTRTsKKyAgCisgIGlmICh4cmFkZHItPmhlYXJ0YmVhdF9lbmFibGVkKSAKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkckhCQWN0aXZlID0gVFJVVEhWQUxVRV9UUlVFOworICBlbHNlCisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJIQkFjdGl2ZSA9IFRSVVRIVkFMVUVfRkFMU0U7CisKKyAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJSVE8gPSB4cmFkZHItPnJ0bzsKKyAgZW50cnktPnNjdHBBc3NvY1JlbUFkZHJNYXhQYXRoUnR4ID0geHJhZGRyLT5tYXhfcGF0aF9ydHg7CisgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyUnR4ID0geHJhZGRyLT5ydHg7CisgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyU3RhcnRUaW1lID0geHJhZGRyLT5zdGFydF90aW1lLnR2X3NlYzsKKworICBpZiAoeHJhZGRyLT5hZGRyZXNzLnNhLnNhX2ZhbWlseSA9PSBBRl9JTkVUKSB7CisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJUeXBlID0gSU5FVEFERFJFU1NUWVBFX0lQVjQ7CisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJfbGVuID0gNDsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY1JlbUFkZHIsCisJCSAgICZ4cmFkZHItPmFkZHJlc3Muc2luLnNpbl9hZGRyLAorCQkgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4pOworICB9IGVsc2UgaWYgKHhyYWRkci0+YWRkcmVzcy5zYS5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkclR5cGUgPSBJTkVUQUREUkVTU1RZUEVfSVBWNjsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4gPSAxNjsKKwltZW1jcHkoZW50cnktPnNjdHBBc3NvY1JlbUFkZHIsCisJCSAgICZ4cmFkZHItPmFkZHJlc3Muc2luNi5zaW42X2FkZHIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbik7CisgIH0KKyAgcmV0ID0KKwlzY3RwQXNzb2NSZW1BZGRyVGFibGVfYWRkX29yX3VwZGF0ZShjb250YWluZXJzLT4KKwkJCQkJCQkJCQlzY3RwQXNzb2NSZW1BZGRyVGFibGUsIGVudHJ5KTsKKyAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CisJcmV0dXJuIHJldDsKKyAgfQorICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KKworCitpbnQKK3NjdHBUYWJsZXNfYXJjaF9sb2FkKHNjdHBUYWJsZXNfY29udGFpbmVycyAqIGNvbnRhaW5lcnMsIHVfbG9uZyAqIGZsYWdzKQoreworICBpbnQgICAgICAgICAgICAgcmV0ID0gU05NUF9FUlJfTk9FUlJPUjsKKyAgc2l6ZV90IGxlbjsKKyAgY2FkZHJfdCBidWY7CisgIHVuc2lnbmVkIGludCBvZmZzZXQ7CisgIHN0cnVjdCB4c2N0cF9pbnBjYiAqeGlucDsKKyAgc3RydWN0IHhzY3RwX3RjYiAqeHN0Y2I7CisgIHN0cnVjdCB4c2N0cF9sYWRkciAqeGxhZGRyOworICBzdHJ1Y3QgeHNjdHBfcmFkZHIgKnhyYWRkcjsKKworCisgICpmbGFncyB8PSBTQ1RQX1RBQkxFU19MT0FEX0ZMQUdfREVMRVRFX0lOVkFMSUQ7CisgICpmbGFncyB8PSBTQ1RQX1RBQkxFU19MT0FEX0ZMQUdfQVVUT19MT09LVVA7CisgIGxlbiA9IDA7CisgIGlmIChzeXNjdGxieW5hbWUoIm5ldC5pbmV0LnNjdHAuYXNzb2NsaXN0IiwgMCwgJmxlbiwgMCwgMCkgPCAwKSB7CisJcHJpbnRmKCJFcnJvciAlZCAoJXMpIGNvdWxkIG5vdCBnZXQgdGhlIGFzc29jbGlzdFxuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisJcmV0dXJuKC0xKTsKKyAgfQorICBpZiAoKGJ1ZiA9IChjYWRkcl90KW1hbGxvYyhsZW4pKSA9PSAwKSB7CisJcHJpbnRmKCJtYWxsb2MgJWx1IGJ5dGVzIGZhaWxlZC5cbiIsIChsb25nIHVuc2lnbmVkKWxlbik7CisJcmV0dXJuKC0xKTsKKyAgfQorICBpZiAoc3lzY3RsYnluYW1lKCJuZXQuaW5ldC5zY3RwLmFzc29jbGlzdCIsIGJ1ZiwgJmxlbiwgMCwgMCkgPCAwKSB7CisJcHJpbnRmKCJFcnJvciAlZCAoJXMpIGNvdWxkIG5vdCBnZXQgdGhlIGFzc29jbGlzdFxuIiwgZXJybm8sIHN0cmVycm9yKGVycm5vKSk7CisJZnJlZShidWYpOworCXJldHVybigtMSk7CisgIH0KKyAgb2Zmc2V0ID0gMDsKKyAgeGlucCA9IChzdHJ1Y3QgeHNjdHBfaW5wY2IgKikoYnVmICsgb2Zmc2V0KTsKKyAgd2hpbGUgKHhpbnAtPmxhc3QgPT0gMCkgeworCS8qIGZvciBlYWNoIElOUCAqLworCW9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX2lucGNiKTsKKwkvKiBMb2NhbCBhZGRyZXNzZXMgKi8KKwl4bGFkZHIgPSAoc3RydWN0IHhzY3RwX2xhZGRyICopKGJ1ZiArIG9mZnNldCk7CisJd2hpbGUgKHhsYWRkci0+bGFzdCA9PSAwKSB7CisJICBvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF9sYWRkcik7CisJICB4bGFkZHIgPSAoc3RydWN0IHhzY3RwX2xhZGRyICopKGJ1ZiArIG9mZnNldCk7CisJfQorCW9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX2xhZGRyKTsKKwkvKiBBc3NvY2lhdGlvbnMgKi8KKwl4c3RjYiA9IChzdHJ1Y3QgeHNjdHBfdGNiICopKGJ1ZiArIG9mZnNldCk7CisJd2hpbGUgKHhzdGNiLT5sYXN0ID09IDApIHsKKwkgIHhzdGNiID0gKHN0cnVjdCB4c2N0cF90Y2IgKikoYnVmICsgb2Zmc2V0KTsKKwkgIG9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX3RjYik7CisJICBwYXJzZV9hc3NvY194c3RjYihjb250YWluZXJzLCB4c3RjYik7CisJICAvKiBMb2NhbCBhZGRyZXNzZXMgKi8KKwkgIHhsYWRkciA9IChzdHJ1Y3QgeHNjdHBfbGFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwkgIHdoaWxlICh4bGFkZHItPmxhc3QgPT0gMCkgeworCQlwYXJzZV9hc3NvY19sb2NhbF9hZGRyZXNzZXMoY29udGFpbmVycywgeGxhZGRyKTsKKwkJb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfbGFkZHIpOworCQl4bGFkZHIgPSAoc3RydWN0IHhzY3RwX2xhZGRyICopKGJ1ZiArIG9mZnNldCk7CisJICB9CisJICBvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF9sYWRkcik7CisKKwkgIC8qIFJlbW90ZSBhZGRyZXNzZXMgKi8KKwkgIHhyYWRkciA9IChzdHJ1Y3QgeHNjdHBfcmFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwkgIHdoaWxlICh4cmFkZHItPmxhc3QgPT0gMCkgeworCQlwYXJzZV9yZW1hZGRyX3hyYWRkcihjb250YWluZXJzLCB4cmFkZHIpOworCQlvZmZzZXQgKz0gc2l6ZW9mKHN0cnVjdCB4c2N0cF9yYWRkcik7CisJCXhyYWRkciA9IChzdHJ1Y3QgeHNjdHBfcmFkZHIgKikoYnVmICsgb2Zmc2V0KTsKKwkgIH0KKwkgIG9mZnNldCArPSBzaXplb2Yoc3RydWN0IHhzY3RwX3JhZGRyKTsKKwkgIHhzdGNiID0gKHN0cnVjdCB4c2N0cF90Y2IgKikoYnVmICsgb2Zmc2V0KTsKKwl9CisJb2Zmc2V0ICs9IHNpemVvZihzdHJ1Y3QgeHNjdHBfdGNiKTsKKwl4aW5wID0gKHN0cnVjdCB4c2N0cF9pbnBjYiAqKShidWYgKyBvZmZzZXQpOworICB9CisgIGZyZWUoKHZvaWQgKilidWYpOworICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jIGIvYWdlbnQvbWliZ3JvdXAvc2N0cC1taWIvc2N0cFRhYmxlc19saW51eC5jCmluZGV4IGQ2ZmQ4MTAuLjE1ODY1NTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX2xpbnV4LmMKQEAgLTcsNyArNyw3IEBACiAjaW5jbHVkZSAic2N0cEFzc29jUmVtQWRkclRhYmxlLmgiCiAjaW5jbHVkZSAic2N0cFRhYmxlc19jb21tb24uaCIKIAotI2luY2x1ZGUgPHV0aWxfZnVuY3MuaD4KKyNpbmNsdWRlICJtaWJncm91cC91dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZS5oIgogCiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgpAQCAtMTUwLDEzICsxNTAsNyBAQAogICAgIH0KICAgICBlbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBzdHJ0b2wodG9rZW4sIE5VTEwsIDEwKTsKIAotICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIgIik7ICAvKiBIQktUICovCi0gICAgaWYgKHRva2VuID09IE5VTEwpIHsKLSAgICAgICAgcmV0ID0gU05NUF9FUlJfR0VORVJSOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSBzdHJ0b2wodG9rZW4sIE5VTEwsIDEwKTsKLQorICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIgIik7ICAvKiBIQktULCBpZ25vcmUgKi8KICAgICB0b2tlbiA9IHN0cnRvayhOVUxMLCAiICIpOyAgLyogQVNTT0MtSUQsIHN0b3JlICovCiAgICAgaWYgKHRva2VuID09IE5VTEwpIHsKICAgICAgICAgcmV0ID0gU05NUF9FUlJfR0VORVJSOwpAQCAtMTc0LDcgKzE2OCw3IEBACiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICAgIGlub2RlID0gc3RydG91bGwodG9rZW4sIE5VTEwsIDEwKTsKLSAgICBlbnRyeS0+c2N0cEFzc29jUHJpbVByb2Nlc3MgPSBnZXRfcGlkX2Zyb21faW5vZGUoaW5vZGUpOworICAgIGVudHJ5LT5zY3RwQXNzb2NQcmltUHJvY2VzcyA9IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlub2RlKTsKIAogICAgIHRva2VuID0gc3RydG9rKE5VTEwsICIgIik7ICAvKiBMUE9SVCAqLwogICAgIGlmICh0b2tlbiA9PSBOVUxMKSB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmMgYi9hZ2VudC9taWJncm91cC9zY3RwLW1pYi9zY3RwVGFibGVzX3NvbGFyaXMyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk5M2FiMwotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NjdHAtbWliL3NjdHBUYWJsZXNfc29sYXJpczIuYwpAQCAtMCwwICsxLDE4MiBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgInNjdHBBc3NvY1RhYmxlLmgiCisjaW5jbHVkZSAic2N0cEFzc29jTG9jYWxBZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwQXNzb2NSZW1BZGRyVGFibGUuaCIKKyNpbmNsdWRlICJzY3RwVGFibGVzX2NvbW1vbi5oIgorCisjaW5jbHVkZSA8dXRpbF9mdW5jcy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNpbmNsdWRlIDxpbmV0L21pYjIuaD4KKworI2luY2x1ZGUgImtlcm5lbF9zdW5vczUuaCIKKworc3RhdGljIGludAorcGFyc2VfYXNzb2NfbG9jYWxfYWRkcmVzcyhzY3RwVGFibGVzX2NvbnRhaW5lcnMgKiBjb250YWluZXJzLAorCQkJICAgIG1pYjJfc2N0cENvbm5Mb2NhbEVudHJ5X3QgKmxjZSkKK3sKKyAgICBpbnQgcmV0OworICAgIHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5ICplbnRyeTsKKyAgICBlbnRyeSA9IHNjdHBBc3NvY0xvY2FsQWRkclRhYmxlX2VudHJ5X2NyZWF0ZSgpOworICAgIGlmIChlbnRyeSA9PSBOVUxMKQorCXJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgICBlbnRyeS0+c2N0cEFzc29jSWQgPSAwOworICAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJUeXBlID0gbGNlLT5zY3RwQXNzb2NMb2NhbEFkZHJUeXBlOworICAgIGlmIChsY2UtPnNjdHBBc3NvY0xvY2FsQWRkclR5cGUgPT0gSU5FVEFERFJFU1NUWVBFX0lQVjQpIHsKKwllbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyX2xlbiA9IDQ7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHIsCisJCSAgIGxjZS0+c2N0cEFzc29jTG9jYWxBZGRyLnM2X2FkZHIrMTIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuKTsKKyAgICB9IGVsc2UgaWYgKGxjZS0+c2N0cEFzc29jTG9jYWxBZGRyVHlwZSA9PSBJTkVUQUREUkVTU1RZUEVfSVBWNikgeworCWVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHJfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NMb2NhbEFkZHIsCisJCSAgICZsY2UtPnNjdHBBc3NvY0xvY2FsQWRkciwKKwkJICAgZW50cnktPnNjdHBBc3NvY0xvY2FsQWRkcl9sZW4pOworICAgIH0KKyAgICBlbnRyeS0+c2N0cEFzc29jTG9jYWxBZGRyU3RhcnRUaW1lID0gMDsKKyAgICByZXQgPSBzY3RwQXNzb2NMb2NhbEFkZHJUYWJsZV9hZGRfb3JfdXBkYXRlKGNvbnRhaW5lcnMtPnNjdHBBc3NvY0xvY2FsQWRkclRhYmxlLAorCQkJCQkgICAgICBlbnRyeSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGludAorcGFyc2VfYXNzb2Moc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywgbWliMl9zY3RwQ29ubkVudHJ5X3QgKnNjZSkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmV0OworICAgIHNjdHBBc3NvY1RhYmxlX2VudHJ5ICplbnRyeTsKKworICAgIGVudHJ5ID0gc2N0cEFzc29jVGFibGVfZW50cnlfY3JlYXRlKCk7CisgICAgaWYgKGVudHJ5ID09IE5VTEwpCisJcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKworICAgIHN3aXRjaCAoc2NlLT5zY3RwQXNzb2NTdGF0ZSkgeworICAgIGNhc2UgTUlCMl9TQ1RQX2Nsb3NlZDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DTE9TRUQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfY29va2llV2FpdDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVXQUlUOworCWJyZWFrOworICAgIGNhc2UgTUlCMl9TQ1RQX2Nvb2tpZUVjaG9lZDoKKwllbnRyeS0+c2N0cEFzc29jU3RhdGUgPSBTQ1RQQVNTT0NTVEFURV9DT09LSUVFQ0hPRUQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfZXN0YWJsaXNoZWQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfRVNUQUJMSVNIRUQ7CisJYnJlYWs7CisgICAgY2FzZSBNSUIyX1NDVFBfc2h1dGRvd25QZW5kaW5nOgorCWVudHJ5LT5zY3RwQXNzb2NTdGF0ZSA9IFNDVFBBU1NPQ1NUQVRFX1NIVVRET1dOUEVORElORzsKKwlicmVhazsKKyAgICBjYXNlIE1JQjJfU0NUUF9zaHV0ZG93blNlbnQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05TRU5UOworCWJyZWFrOworICAgIGNhc2UgTUlCMl9TQ1RQX3NodXRkb3duUmVjZWl2ZWQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05SRUNFSVZFRDsKKwlicmVhazsKKyAgICBjYXNlIE1JQjJfU0NUUF9zaHV0ZG93bkFja1NlbnQ6CisJZW50cnktPnNjdHBBc3NvY1N0YXRlID0gU0NUUEFTU09DU1RBVEVfU0hVVERPV05BQ0tTRU5UOworCWJyZWFrOworICAgIH0KKyAgICBlbnRyeS0+c2N0cEFzc29jSGVhcnRCZWF0SW50ZXJ2YWwgPSBzY2UtPnNjdHBBc3NvY0hlYXJ0QmVhdEludGVydmFsOworICAgIGVudHJ5LT5zY3RwQXNzb2NJZCA9IHNjZS0+c2N0cEFzc29jSWQ7CisgICAgZW50cnktPnNjdHBBc3NvY1ByaW1Qcm9jZXNzID0gc2NlLT5zY3RwQXNzb2NQcmltUHJvY2VzczsKKyAgICBlbnRyeS0+c2N0cEFzc29jTG9jYWxQb3J0ID0gc2NlLT5zY3RwQXNzb2NMb2NhbFBvcnQ7CisgICAgZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyVHlwZSA9IHNjZS0+c2N0cEFzc29jUmVtUHJpbUFkZHJUeXBlOworICAgIGlmIChlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJUeXBlID09IElORVRBRERSRVNTVFlQRV9JUFY0KSB7CisJZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyX2xlbiA9IDQ7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NSZW1QcmltQWRkciwgc2NlLT5zY3RwQXNzb2NSZW1QcmltQWRkci5zNl9hZGRyKzEyLAorCSAgICBlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHJfbGVuKTsKKyAgICB9CisgICAgZWxzZSB7CisJZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyX2xlbiA9IDE2OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jUmVtUHJpbUFkZHIsIHNjZS0+c2N0cEFzc29jUmVtUHJpbUFkZHIuczZfYWRkciwKKwkgICAgZW50cnktPnNjdHBBc3NvY1JlbVByaW1BZGRyX2xlbik7CisgICAgfQorICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1Qb3J0ID0gc2NlLT5zY3RwQXNzb2NSZW1Qb3J0OworICAgIGVudHJ5LT5zY3RwQXNzb2NJblN0cmVhbXMgPSBzY2UtPnNjdHBBc3NvY0luU3RyZWFtczsKKyAgICBlbnRyeS0+c2N0cEFzc29jT3V0U3RyZWFtcyA9IHNjZS0+c2N0cEFzc29jT3V0U3RyZWFtczsKKyAgICBlbnRyeS0+c2N0cEFzc29jTWF4UmV0ciA9IHNjZS0+c2N0cEFzc29jTWF4UmV0cjsKKyAgICBlbnRyeS0+c2N0cEFzc29jVDFleHBpcmVkcyA9IHNjZS0+c2N0cEFzc29jVDFleHBpcmVkOworICAgIGVudHJ5LT5zY3RwQXNzb2NSdHhDaHVua3MgPSBzY2UtPnNjdHBBc3NvY1J0eENodW5rczsKKyAgICBlbnRyeS0+c2N0cEFzc29jVDJleHBpcmVkcyA9IHNjZS0+c2N0cEFzc29jVDJleHBpcmVkOyAKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtSG9zdE5hbWVbMF0gPSAwOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1Ib3N0TmFtZV9sZW4gPSAwOworICAgIGVudHJ5LT5zY3RwQXNzb2NEaXNjb250aW51aXR5VGltZSA9IDA7CisgICAgZW50cnktPnNjdHBBc3NvY1N0YXJ0VGltZSA9IHNjZS0+c2N0cEFzc29jU3RhcnRUaW1lOwkKKworICAgIHJldCA9IHNjdHBBc3NvY1RhYmxlX2FkZF9vcl91cGRhdGUoY29udGFpbmVycy0+c2N0cEFzc29jVGFibGUsIGVudHJ5KTsKKyAgICByZXR1cm4gcmV0OworfQorCisKK3N0YXRpYyBpbnQKK3BhcnNlX2Fzc29jX3JlbW90ZV9hZGRyZXNzKHNjdHBUYWJsZXNfY29udGFpbmVycyAqIGNvbnRhaW5lcnMsCisJCSAgICBtaWIyX3NjdHBDb25uUmVtb3RlRW50cnlfdCAqcmNlKQoreworICAgIGludCAgICAgICAgICAgICByZXQ7CisgICAgc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5ICplbnRyeTsKKworICAgIGVudHJ5ID0gc2N0cEFzc29jUmVtQWRkclRhYmxlX2VudHJ5X2NyZWF0ZSgpOworICAgIGlmIChlbnRyeSA9PSBOVUxMKQorCXJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisKKyAgICBlbnRyeS0+c2N0cEFzc29jSWQgPSByY2UtPnNjdHBBc3NvY0lkOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyQWN0aXZlID0gcmNlLT5zY3RwQXNzb2NSZW1BZGRyQWN0aXZlOworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRySEJBY3RpdmUgPSByY2UtPnNjdHBBc3NvY1JlbUFkZHJIQkFjdGl2ZTsKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkclJUTyA9IHJjZS0+c2N0cEFzc29jUmVtQWRkclJUTzsKKyAgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkck1heFBhdGhSdHggPSByY2UtPnNjdHBBc3NvY1JlbUFkZHJNYXhQYXRoUnR4OworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyUnR4ID0gcmNlLT5zY3RwQXNzb2NSZW1BZGRyUnR4OworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyU3RhcnRUaW1lID0gMDsKKworICAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyVHlwZSA9IHJjZS0+c2N0cEFzc29jUmVtQWRkclR5cGU7CisgICAgaWYgKHJjZS0+c2N0cEFzc29jUmVtQWRkclR5cGUgPT0gSU5FVEFERFJFU1NUWVBFX0lQVjQpIHsKKwllbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4gPSA0OworCW1lbWNweShlbnRyeS0+c2N0cEFzc29jUmVtQWRkciwKKwkJICAgcmNlLT5zY3RwQXNzb2NSZW1BZGRyLnM2X2FkZHIrMTIsCisJCSAgIGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyX2xlbik7CisgICAgfSBlbHNlIGlmIChyY2UtPnNjdHBBc3NvY1JlbUFkZHJUeXBlID09IElORVRBRERSRVNTVFlQRV9JUFY2KSB7CisJZW50cnktPnNjdHBBc3NvY1JlbUFkZHJfbGVuID0gMTY7CisJbWVtY3B5KGVudHJ5LT5zY3RwQXNzb2NSZW1BZGRyLAorCQkgICAmcmNlLT5zY3RwQXNzb2NSZW1BZGRyLAorCQkgICBlbnRyeS0+c2N0cEFzc29jUmVtQWRkcl9sZW4pOworICAgIH0KKyAgICByZXQgPQorCXNjdHBBc3NvY1JlbUFkZHJUYWJsZV9hZGRfb3JfdXBkYXRlKGNvbnRhaW5lcnMtPnNjdHBBc3NvY1JlbUFkZHJUYWJsZSwKKwkJCQkJICAgIGVudHJ5KTsKKyAgICByZXR1cm4gcmV0OworfQorCisKK2ludAorc2N0cFRhYmxlc19hcmNoX2xvYWQoc2N0cFRhYmxlc19jb250YWluZXJzICogY29udGFpbmVycywgdV9sb25nICogZmxhZ3MpCit7CisgICAgaW50ICAgICAgICAgICAgICAgIHJldCA9IFNOTVBfRVJSX05PRVJST1I7CisgICAgbWliMl9zY3RwQ29ubkVudHJ5X3Qgc2NlOworICAgIG1pYjJfc2N0cENvbm5Mb2NhbEVudHJ5X3QgbGNlOworICAgIG1pYjJfc2N0cENvbm5SZW1vdGVFbnRyeV90IHJjZTsKKyAgICByZXFfZSAgICAgICAgICAgICAgcmVxID0gR0VUX0ZJUlNUOworCisgICAgd2hpbGUgKGdldE1pYnN0YXQoTUlCX1NDVFBfQ09OTiwgJnNjZSwgc2l6ZW9mKHNjZSksIHJlcSwgJkdldF9ldmVyeXRoaW5nLCAwKSA9PSAwKSB7CisJcmVxID0gR0VUX05FWFQ7CisJcGFyc2VfYXNzb2MoY29udGFpbmVycywgJnNjZSk7CisgICAgfQorICAgIHJlcSA9IEdFVF9GSVJTVDsKKyAgICB3aGlsZSAoZ2V0TWlic3RhdChNSUJfU0NUUF9DT05OX0xPQ0FMLCAmbGNlLCBzaXplb2YobGNlKSwgcmVxLCAmR2V0X2V2ZXJ5dGhpbmcsIDApID09IDApIHsKKwlyZXEgPSBHRVRfTkVYVDsKKwlwYXJzZV9hc3NvY19sb2NhbF9hZGRyZXNzKGNvbnRhaW5lcnMsICZsY2UpOworICAgIH0KKyAgICByZXEgPSBHRVRfRklSU1Q7CisgICAgd2hpbGUgKGdldE1pYnN0YXQoTUlCX1NDVFBfQ09OTl9SRU1PVEUsICZyY2UsIHNpemVvZihyY2UpLCByZXEsICZHZXRfZXZlcnl0aGluZywgMCkgPT0gMCkgeworCXJlcSA9IEdFVF9ORVhUOworCXBhcnNlX2Fzc29jX3JlbW90ZV9hZGRyZXNzKGNvbnRhaW5lcnMsICZyY2UpOworICAgIH0KKyAgICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc211eC9zbXV4LmMgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwppbmRleCA0MDA2YmY3Li5jZDMzODVhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYworKysgYi9hZ2VudC9taWJncm91cC9zbXV4L3NtdXguYwpAQCAtNzEsNyArNzEsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KIAogI2luY2x1ZGUgInNtdXguaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAibWliZGVmcy5oIgogI2luY2x1ZGUgInNubXBkLmgiCiAKQEAgLTEyMiw3ICsxMjEsOCBAQAogICAgIC8qCiAgICAgICogYm9ndXMgZW50cnksIGFzIGluIHBhc3MuYyAKICAgICAgKi8KLSAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbXV4LCAwLCB7TUlCSU5ERVh9fSwKKyAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbXV4LCAwLCB7TUlCSU5ERVh9fSwKIH07CiAKIApAQCAtNDI5LDcgKzQyOSw3IEBACiAgICAgICAgICAgICAgKiBwZWVrIGF0IHdoYXQncyByZWNlaXZlZCAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKChsZW4gPSByZWN2ZnJvbShycHRyLT5zcl9mZCwgYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNNVVhNQVhQS1RTSVpFLCBNU0dfUEVFSywgTlVMTCwgMCkpIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTVVYTUFYUEtUU0laRSwgTVNHX1BFRUssIE5VTEwsIE5VTEwpKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKChsZW4gPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgY29udGludWU7CkBAIC00NDQsOCArNDQ0LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIFBlZWtlZCBhdCAlZCBieXRlc1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlbikpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3Zhcl9zbXV4X3dyaXRlXSBQZWVrZWQgYXQgJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgICAgICAgICAiZCBieXRlc1xuIiwgbGVuKSk7CiAgICAgICAgICAgICBERUJVR0RVTVBTRVRVUCgidmFyX3NtdXhfd3JpdGUiLCBidWYsIGxlbik7CiAKICAgICAgICAgICAgIC8qCkBAIC00NjgsNyArNDY4LDcgQEAKICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBsZW4gPSB0bXBfbGVuOwotICAgICAgICAgICAgICAgbGVuID0gcmVjdmZyb20ocnB0ci0+c3JfZmQsIGJ1ZiwgbGVuLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgIGxlbiA9IHJlY3Zmcm9tKHJwdHItPnNyX2ZkLCBidWYsIGxlbiwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB3aGlsZSgobGVuID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpOwogCkBAIC00ODAsOCArNDgwLDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIFJlY2VpdmVkICVkIGJ5dGVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgbGVuKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbdmFyX3NtdXhfd3JpdGVdIFJlY2VpdmVkICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAgICAgImQgYnl0ZXNcbiIsIGxlbikpOwogCiAgICAgICAgICAgICBpZiAoYnVmWzBdID09IFNNVVhfVFJBUCkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIlt2YXJfc211eF93cml0ZV0gUmVjZWl2ZWQgdHJhcFxuIikpOwpAQCAtNjEwLDcgKzYxMCw3IEBACiAgICAgICAgICAqLwogICAgICAgICBkbwogICAgICAgICB7Ci0gICAgICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBTTVVYTUFYUEtUU0laRSwgMCwgTlVMTCwgMCk7CisgICAgICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBTTVVYTUFYUEtUU0laRSwgMCwgTlVMTCwgTlVMTCk7CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUoKGxlbmd0aCA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKTsKIApAQCAtNjg4LDcgKzY4OCw4IEBACiAKICAgICBkbwogICAgIHsKLSAgICAgICBsZW5ndGggPSByZWN2ZnJvbShmZCwgKGNoYXIgKikgZGF0YSwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLCAwKTsKKyAgICAgICBsZW5ndGggPSByZWN2ZnJvbShmZCwgKGNoYXIgKikgZGF0YSwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0KICAgICB3aGlsZSgobGVuZ3RoID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpOwogCkBAIC03MTYsNyArNzE3LDcgQEAKICAgICBkbwogICAgIHsKICAgICAgICBsZW5ndGggPSB0bXBfbGVuZ3RoOwotICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBsZW5ndGgsIDAsIE5VTEwsIDApOworICAgICAgIGxlbmd0aCA9IHJlY3Zmcm9tKGZkLCAoY2hhciAqKSBkYXRhLCBsZW5ndGgsIDAsIE5VTEwsIE5VTEwpOwogICAgIH0KICAgICB3aGlsZSgobGVuZ3RoID09IC0xKSAmJiAoKGVycm5vID09IEVJTlRSKSB8fCAoZXJybm8gPT0gRUFHQUlOKSkpOwogCkBAIC03NDIsOCArNzQzLDggQEAKICAgICBzaXplX3QgICAgICAgICAgbGVuOwogICAgIHVfY2hhciAgICAgICAgICpwdHIsIHR5cGU7CiAKLSAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9wZHVfcHJvY2Vzc10gUHJvY2Vzc2luZyAlZCBieXRlc1xuIiwKLSAgICAgICAgICAgICAgICBsZW5ndGgpKTsKKyAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9wZHVfcHJvY2Vzc10gUHJvY2Vzc2luZyAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAiZCBieXRlc1xuIiwgbGVuZ3RoKSk7CiAKICAgICBlcnJvciA9IDA7CiAgICAgcHRyID0gZGF0YTsKQEAgLTc4NSw3ICs3ODYsNyBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgU01VWF9UUkFQOgogICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sICJHb3QgdHJhcCBmcm9tIHBlZXIgb24gZmQgJWRcbiIsIGZkKTsKLSAgICAgICAgICAgIGlmIChwdHIgIT0gMCkKKyAgICAgICAgICAgIGlmIChwdHIpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9wZHVfcHJvY2Vzc10gY2FsbCBzbXV4X3RyYXBfcHJvY2Vzcy5cbiIpKTsKICAgICAgICAgICAgICAgIHB0ciA9IHNtdXhfdHJhcF9wcm9jZXNzKHB0ciwgJmxlbik7CkBAIC04MjksOCArODMwLDggQEAKICAgICAgICAgcmV0dXJuICgocHRyICs9ICpsZW4pKTsKICAgICB9CiAgICAgREVCVUdNU0dUTCgoInNtdXgiLAotICAgICAgICAgICAgICAgICJbc211eF9vcGVuX3Byb2Nlc3NdIHZlcnNpb24gJWQsIGxlbiAlZCwgdHlwZSAlZFxuIiwKLSAgICAgICAgICAgICAgICB2ZXJzaW9uLCAqbGVuLCAoaW50KSB0eXBlKSk7CisgICAgICAgICAgICAgICAgIltzbXV4X29wZW5fcHJvY2Vzc10gdmVyc2lvbiAlbGQsIGxlbiAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAidSwgdHlwZSAlZFxuIiwgdmVyc2lvbiwgKmxlbiwgKGludCkgdHlwZSkpOwogCiAgICAgb2lkX25hbWVfbGVuID0gTUFYX09JRF9MRU47CiAgICAgaWYgKChwdHIgPSBhc25fcGFyc2Vfb2JqaWQocHRyLCBsZW4sICZ0eXBlLCBvaWRfbmFtZSwKQEAgLTg0NCw4ICs4NDUsOCBAQAogICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgewogICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIHNtdXggcGVlcjogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIG9pZF9wcmludCkpOwotICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlZCwgdHlwZSAlZFxuIiwgKmxlbiwKLSAgICAgICAgICAgICAgICAgICAgKGludCkgdHlwZSkpOworICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAgICAgInUsIHR5cGUgJWRcbiIsICpsZW4sIChpbnQpIHR5cGUpKTsKICAgICB9CiAKICAgICBzdHJpbmdfbGVuID0gU01VWE1BWFNUUkxFTjsKQEAgLTg2MSw4ICs4NjIsOCBAQAogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgc3RyaW5nX2xlbjsgaSsrKQogICAgICAgICAgICAgREVCVUdNU0coKCJzbXV4IiwgIiVjIiwgZGVzY3JbaV0pKTsKICAgICAgICAgREVCVUdNU0coKCJzbXV4IiwgIlxuIikpOwotICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlZCwgdHlwZSAlZFxuIiwgKmxlbiwKLSAgICAgICAgICAgICAgICAgICAgKGludCkgdHlwZSkpOworICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9vcGVuX3Byb2Nlc3NdIGxlbiAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAgICAgInUsIHR5cGUgJWRcbiIsICpsZW4sIChpbnQpIHR5cGUpKTsKICAgICB9CiAgICAgZGVzY3Jbc3RyaW5nX2xlbl0gPSAwOwogCkBAIC04NzksOCArODgwLDggQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIHN0cmluZ19sZW47IGkrKykKICAgICAgICAgICAgIERFQlVHTVNHKCgic211eCIsICIlYyIsIHBhc3N3ZFtpXSkpOwogICAgICAgICBERUJVR01TRygoInNtdXgiLCAiXG4iKSk7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICVkLCB0eXBlICVkXG4iLCAqbGVuLAotICAgICAgICAgICAgICAgICAgICAoaW50KSB0eXBlKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X29wZW5fcHJvY2Vzc10gbGVuICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAidSwgdHlwZSAlZFxuIiwgKmxlbiwgKGludCkgdHlwZSkpOwogICAgIH0KICAgICBwYXNzd2Rbc3RyaW5nX2xlbl0gPSAnXDAnOwogICAgIGlmICghc211eF9hdXRoX3BlZXIob2lkX25hbWUsIG9pZF9uYW1lX2xlbiwgcGFzc3dkLCBmZCkpIHsKQEAgLTkyNiwxMCArOTI3LDI3IEBACiBzbXV4X2F1dGhfcGVlcihvaWQgKiBuYW1lLCBzaXplX3QgbmFtZWxlbiwgY2hhciAqcGFzc3dkLCBpbnQgZmQpCiB7CiAgICAgaW50ICAgICAgICAgICAgIGk7CisgICAgY2hhciAgICAgICAgICAgIG9pZF9wcmludFtTTVVYTUFYU1RSTEVOXTsKKworICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgeworICAgICAgICBzbnByaW50X29iamlkKG9pZF9wcmludCwgc2l6ZW9mKG9pZF9wcmludCksIG5hbWUsIG5hbWVsZW4pOworICAgICAgICBERUJVR01TR1RMKCgic211eDphdXRoIiwgIltzbXV4X2F1dGhfcGVlcl0gQXV0aG9yaXppbmc6ICVzLCAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgb2lkX3ByaW50LCBwYXNzd2QpKTsKKyAgICB9CiAKICAgICBmb3IgKGkgPSAwOyBpIDwgbmF1dGhzOyBpKyspIHsKKyAgICAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CisgICAgICAgICAgICBzbnByaW50X29iamlkKG9pZF9wcmludCwgc2l6ZW9mKG9pZF9wcmludCksCisgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dGhzW2ldLT5zYV9vaWQsIEF1dGhzW2ldLT5zYV9vaWRfbGVuKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbXV4OmF1dGgiLCAiW3NtdXhfYXV0aF9wZWVyXSBDaGVja2luZyBPSUQ6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIG9pZF9wcmludCwgaSkpOworICAgICAgICB9CiAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKEF1dGhzW2ldLT5zYV9vaWQsIEF1dGhzW2ldLT5zYV9vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBuYW1lbGVuKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoc25tcF9nZXRfZG9fZGVidWdnaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eDphdXRoIiwgIltzbXV4X2F1dGhfcGVlcl0gQ2hlY2tpbmcgUC9XOiAlcyAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgQXV0aHNbaV0tPnNhX3Bhc3N3ZCwgQXV0aHNbaV0tPnNhX2FjdGl2ZV9mZCkpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCEoc3RyY21wKEF1dGhzW2ldLT5zYV9wYXNzd2QsIHBhc3N3ZCkpICYmCiAgICAgICAgICAgICAgICAgKEF1dGhzW2ldLT5zYV9hY3RpdmVfZmQgPT0gLTEpKSB7CiAgICAgICAgICAgICAgICAgLyoKQEAgLTk2Niw3ICs5ODQsNyBAQAogICAgIH0KIAogICAgIERFQlVHTVNHVEwoKCJzbXV4IiwKLSAgICAgICAgICAgICAgICAiW3NtdXhfY2xvc2VfcHJvY2Vzc10gY2xvc2UgZnJvbSBwZWVyIG9uIGZkICVkIHJlYXNvbiAlZFxuIiwKKyAgICAgICAgICAgICAgICAiW3NtdXhfY2xvc2VfcHJvY2Vzc10gY2xvc2UgZnJvbSBwZWVyIG9uIGZkICVkIHJlYXNvbiAlbGRcbiIsCiAgICAgICAgICAgICAgICAgZmQsIGRvd24pKTsKICAgICBzbXV4X3BlZXJfY2xlYW51cChmZCk7CiAKQEAgLTk5OCw3ICsxMDE2LDcgQEAKICAgICAgICAgc211eF9zZW5kX3Jyc3Aoc2QsIC0xKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIERFQlVHTVNHVEwoKCJzbXV4IiwgIltzbXV4X3JyZXFfcHJvY2Vzc10gcHJpb3JpdHkgJWRcbiIsIHByaW9yaXR5KSk7CisgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfcnJlcV9wcm9jZXNzXSBwcmlvcml0eSAlbGRcbiIsIHByaW9yaXR5KSk7CiAKICAgICBpZiAoKHB0ciA9IGFzbl9wYXJzZV9pbnQocHRyLCBsZW4sICZ0eXBlLCAmb3BlcmF0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob3BlcmF0aW9uKSkpID09IE5VTEwpIHsKQEAgLTEwMDcsNyArMTAyNSw3IEBACiAgICAgICAgIHNtdXhfc2VuZF9ycnNwKHNkLCAtMSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9ycmVxX3Byb2Nlc3NdIG9wZXJhdGlvbiAlZFxuIiwgb3BlcmF0aW9uKSk7CisgICAgREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfcnJlcV9wcm9jZXNzXSBvcGVyYXRpb24gJWxkXG4iLCBvcGVyYXRpb24pKTsKIAogICAgIGlmIChvcGVyYXRpb24gPT0gU01VWF9SRUdPUF9ERUxFVEUpIHsKICAgICAgICAgLyoKQEAgLTExNDYsNyArMTE2NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIG5ycHRyLT5zcl9uYW1lLCBucnB0ci0+c3JfbmFtZV9sZW4pCiAgICAgICAgICAgICAgICAgICAgICAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKIAkJREVCVUdNU0dUTCgoInNtdXgiLCAiW3NtdXhfcnJlcV9wcm9jZXNzXSBGYWlsZWQgdG8gcmVnaXN0ZXIgc3VidHJlZVxuIikpOwotCQlzbXV4X2xpc3RfZGV0YWNoKCZBY3RpdmVSZWdzLCAmbnJwdHIpOworCQlzbXV4X2xpc3RfZGV0YWNoKCZBY3RpdmVSZWdzLCBucnB0cik7CiAJCWZyZWUobnJwdHIpOwogCQlzbXV4X3NlbmRfcnJzcChzZCwgLTEpOwogCQlyZXR1cm4gTlVMTDsKQEAgLTEyNDgsNTAgKzEyNjYsNjEgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogICAgIHByZXYgPSBOVUxMOwotICAgIGZvciAocnB0ciA9ICpoZWFkOyBycHRyLT5zcl9uZXh0OyBycHRyID0gcnB0ci0+c3JfbmV4dCkgeworICAgIGZvciAocnB0ciA9ICpoZWFkOyBycHRyOyBycHRyID0gcnB0ci0+c3JfbmV4dCkgewogICAgICAgICByZXN1bHQgPSBzbm1wX29pZF9jb21wYXJlKGFkZC0+c3JfbmFtZSwgYWRkLT5zcl9uYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBycHRyLT5zcl9uYW1lLCBycHRyLT5zcl9uYW1lX2xlbik7Ci0gICAgICAgIGlmICgocmVzdWx0ID09IDApICYmIChhZGQtPnNyX3ByaW9yaXR5ID09IHJwdHItPnNyX3ByaW9yaXR5KSkgeworICAgICAgICBpZiAocmVzdWx0ID09IDApIHsKICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBzYW1lIHRyZWUsIHNhbWUgcHJpLCBub3BlIAorICAgICAgICAgICAgICogU2FtZSB0cmVlLi4uCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChhZGQtPnNyX3ByaW9yaXR5ID09IHJwdHItPnNyX3ByaW9yaXR5KSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiAuLi4gc2FtZSBwcmkgOiBub3BlIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWRkLT5zcl9wcmlvcml0eSA8IHJwdHItPnNyX3ByaW9yaXR5KSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiAuLi4gbG93ZXIgcHJpIDogaW5zZXJ0IGFuZCByZXR1cm4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBhZGQtPnNyX25leHQgPSBycHRyOworICAgICAgICAgICAgICAgIGlmICggcHJldiApIHsgcHJldi0+c3JfbmV4dCA9IGFkZDsgfQorICAgICAgICAgICAgICAgIGVsc2UgICAgICAgIHsgICAgICAgICAqaGVhZCA9IGFkZDsgfQorICAgICAgICAgICAgICAgIHJldHVybiAwOworI2lmZGVmIFhYWAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIC4uLiBoaWdoZXIgcHJpIDogcHV0IGFmdGVyIAorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGFkZC0+c3JfbmV4dCAgPSBycHRyLT5zcl9uZXh0OworICAgICAgICAgICAgICAgIHJwdHItPnNyX25leHQgPSBhZGQ7CisjZW5kaWYKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPCAwKSB7CiAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICogdGhpcyBjYW4gb25seSBoYXBwZW4gaWYgd2UgZ28gYmVmb3JlIHRoZSBoZWFkIAorICAgICAgICAgICAgICogRWFybGllciB0cmVlIDogaW5zZXJ0IGFuZCByZXR1cm4KICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgYWRkLT5zcl9uZXh0ID0gKmhlYWQ7Ci0gICAgICAgICAgICAqaGVhZCA9IGFkZDsKKyAgICAgICAgICAgIGFkZC0+c3JfbmV4dCA9IHJwdHI7CisgICAgICAgICAgICBpZiAoIHByZXYgKSB7IHByZXYtPnNyX25leHQgPSBhZGQ7IH0KKyAgICAgICAgICAgIGVsc2UgICAgICAgIHsgICAgICAgICAqaGVhZCA9IGFkZDsgfQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0gZWxzZSBpZiAoKHNubXBfb2lkX2NvbXBhcmUoYWRkLT5zcl9uYW1lLCBhZGQtPnNyX25hbWVfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJwdHItPnNyX25leHQtPnNyX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnB0ci0+c3JfbmV4dC0+c3JfbmFtZV9sZW4pKSA8IDApIHsKKyNpZmRlZiBYWFgKKyAgICAgICAgfSBlbHNlICB7CiAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICogaW5zZXJ0IGhlcmUgCisgICAgICAgICAgICAgKiBMYXRlciB0cmVlIDogcHV0IGFmdGVyCiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGFkZC0+c3JfbmV4dCA9IHJwdHItPnNyX25leHQ7CiAgICAgICAgICAgICBycHRyLT5zcl9uZXh0ID0gYWRkOwogICAgICAgICAgICAgcmV0dXJuIDA7CisjZW5kaWYKICAgICAgICAgfQogICAgICAgICBwcmV2ID0gcnB0cjsKICAgICB9CiAgICAgLyoKLSAgICAgKiBjb21wYXJlIHRoZSBsYXN0IG9uZSAKKyAgICAgKiBPdGhlcndpc2UsIHRoaXMgZW50cnkgbXVzdCBjb21lIGxhc3QKICAgICAgKi8KLSAgICByZXN1bHQgPSBzbm1wX29pZF9jb21wYXJlKGFkZC0+c3JfbmFtZSwgYWRkLT5zcl9uYW1lX2xlbiwgcnB0ci0+c3JfbmFtZSwgcnB0ci0+c3JfbmFtZV9sZW4pOwotICAgIGlmICgocmVzdWx0ID09IDApICYmIGFkZC0+c3JfcHJpb3JpdHkgPT0gcnB0ci0+c3JfcHJpb3JpdHkpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBlbHNlICBpZiAocmVzdWx0IDwgMCApIHsKLSAgICAgICAgYWRkLT5zcl9uZXh0ID0gcnB0cjsKLSAgICAgICAgaWYgKCBwcmV2ICkgewotICAgICAgICAgICAgcHJldi0+c3JfbmV4dCA9IGFkZDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICpoZWFkID0gYWRkOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcnB0ci0+c3JfbmV4dCA9IGFkZDsKLSAgICAgICAgYWRkLT5zcl9uZXh0ID0gTlVMTDsKLSAgICB9CisgICAgaWYgKCBwcmV2ICkgeyBwcmV2LT5zcl9uZXh0ID0gYWRkOyB9CisgICAgZWxzZSAgICAgICAgeyAgICAgICAgICpoZWFkID0gYWRkOyB9CisgICAgYWRkLT5zcl9uZXh0ID0gTlVMTDsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMTM1Myw3ICsxMzgyLDcgQEAKICAgICAgICAgdHlwZSA9IFNNVVhfR0VUTkVYVDsKIAogICAgIGlmIChzbXV4X2J1aWxkKHR5cGUsIHNtdXhfcmVxaWQsIG9iamlkLCBsZW4sIDAsIE5VTEwsCi0gICAgICAgICAgICAgICAgICAgKmxlbiwgcGFja2V0LCAmbGVuZ3RoKSA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAqbGVuLCBwYWNrZXQsIChzaXplX3QgKikgJmxlbmd0aCkgPCAwKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJbc211eF9zbm1wX3Byb2Nlc3NdOiBzbXV4X2J1aWxkIGZhaWxlZFxuIik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTEzNzMsNyArMTQwMiw4IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHBlZWsgYXQgd2hhdCdzIHJlY2VpdmVkIAogICAgICAgICAgKi8KLSAgICAgICAgbGVuZ3RoID0gcmVjdmZyb20oc2QsIChjaGFyICopIHJlc3VsdCwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLCAwKTsKKyAgICAgICAgbGVuZ3RoID0gcmVjdmZyb20oc2QsIChjaGFyICopIHJlc3VsdCwgU01VWE1BWFBLVFNJWkUsIE1TR19QRUVLLCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKICAgICAgICAgaWYgKGxlbmd0aCA8PSAwKSB7CiAgICAgICAgICAgICBpZiAoKGxlbmd0aCA9PSAtMSkgJiYgKChlcnJubyA9PSBFSU5UUikgfHwgKGVycm5vID09IEVBR0FJTikpKQogICAgICAgICAgICAgewpAQCAtMTQxMiw3ICsxNDQyLDcgQEAKICAgICAgICAgZG8KICAgICAgICAgewogICAgICAgICAgICBsZW5ndGggPSB0bXBfbGVuZ3RoOwotICAgICAgICAgICBsZW5ndGggPSByZWN2ZnJvbShzZCwgKGNoYXIgKikgcmVzdWx0LCBsZW5ndGgsIDAsIE5VTEwsIDApOworICAgICAgICAgICBsZW5ndGggPSByZWN2ZnJvbShzZCwgKGNoYXIgKikgcmVzdWx0LCBsZW5ndGgsIDAsIE5VTEwsIE5VTEwpOwogICAgICAgICB9CiAgICAgICAgIHdoaWxlKChsZW5ndGggPT0gLTEpICYmICgoZXJybm8gPT0gRUlOVFIpIHx8IChlcnJubyA9PSBFQUdBSU4pKSk7CiAKQEAgLTE0MjksOCArMTQ1OSw4IEBACiAgICAgICAgIGlmIChyZXN1bHRbMF0gPT0gU01VWF9UUkFQKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic211eCIsICJbc211eF9zbm1wX3Byb2Nlc3NdIFJlY2VpdmVkIHRyYXBcbiIpKTsKICAgICAgICAgICAgIHNubXBfbG9nKExPR19JTkZPLCAiR290IHRyYXAgZnJvbSBwZWVyIG9uIGZkICVkXG4iLCBzZCk7Ci0gICAgICAgICAgICBwdHIgPSBhc25fcGFyc2VfaGVhZGVyKHJlc3VsdCwgJmxlbmd0aCwgJnR5cGUpOwotICAgICAgICAgICAgc211eF90cmFwX3Byb2Nlc3MocHRyLCAmbGVuZ3RoKTsKKyAgICAgICAgICAgIHB0ciA9IGFzbl9wYXJzZV9oZWFkZXIocmVzdWx0LCAoc2l6ZV90ICopICZsZW5ndGgsICZ0eXBlKTsKKyAgICAgICAgICAgIHNtdXhfdHJhcF9wcm9jZXNzKHB0ciwgKHNpemVfdCAqKSAmbGVuZ3RoKTsKIAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIGdvIGFuZCBwZWVrIGF0IHJlY2VpdmVkIGRhdGEgYWdhaW4gCkBAIC0xNDk2LDcgKzE1MjYsNyBAQAogICAgICAqIFhYWCBIb3cgdG8gc2VuZCBzb21ldGhpbmcgaW50ZWxsaWdlbnQgYmFjayBpbiBjYXNlIG9mIGFuIGVycm9yIAogICAgICAqLwogICAgIERFQlVHTVNHVEwoKCJzbXV4IiwKLSAgICAgICAgICAgICAgICAiW3NtdXhfcGFyc2VdIE1lc3NhZ2UgdHlwZSAlZCwgcmVxaWQgJWQsIGVycnN0YXQgJWQsIFxuXHRlcnJpbmRleCAlZFxuIiwKKyAgICAgICAgICAgICAgICAiW3NtdXhfcGFyc2VdIE1lc3NhZ2UgdHlwZSAlZCwgcmVxaWQgJWxkLCBlcnJzdGF0ICVsZCwgXG5cdGVycmluZGV4ICVsZFxuIiwKICAgICAgICAgICAgICAgICAoaW50KSB0eXBlLCByZXFpZCwgZXJyc3RhdCwgZXJyaW5kZXgpKTsKICAgICBpZiAocHRyID09IE5VTEwgfHwgZXJyc3RhdCAhPSBTTk1QX0VSUl9OT0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE1NTYsOCArMTU4Niw4IEBACiAgICAgICovCiAgICAgbGVuID0gU01VWE1BWFBLVFNJWkU7CiAgICAgREVCVUdNU0dUTCgoInNtdXgiLAotICAgICAgICAgICAgICAgICJbc211eF9wYXJzZV92YXJdIEFzbiBjb2RlZCBsZW4gb2YgdmFyICVkLCB0eXBlICVkXG4iLAotICAgICAgICAgICAgICAgIHZhcl92YWxfbGVuLCAoaW50KSAqdmFydHlwZSkpOworICAgICAgICAgICAgICAgICJbc211eF9wYXJzZV92YXJdIEFzbiBjb2RlZCBsZW4gb2YgdmFyICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICJ1LCB0eXBlICVkXG4iLCB2YXJfdmFsX2xlbiwgKGludCkgKnZhcnR5cGUpKTsKIAogICAgIHN3aXRjaCAoKHNob3J0KSAqdmFydHlwZSkgewogICAgIGNhc2UgQVNOX0lOVEVHRVI6CkBAIC0yMDcwLDcgKzIxMDAsNyBAQAogICAgcmV0dXJuKDApOwogfQogCi1pbnQgc211eF9zbm1wX3NlbGVjdF9saXN0X2dldF9sZW5ndGgoKQoraW50IHNtdXhfc25tcF9zZWxlY3RfbGlzdF9nZXRfbGVuZ3RoKHZvaWQpCiB7CiAgICByZXR1cm4oc2RsZW4pOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5jIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX2JncC5jCmluZGV4IDNlNWQ1Y2UuLjE2YjAxODUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9iZ3AuYworKysgYi9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfYmdwLmMKQEAgLTUyLDMyICs1Miw1NSBAQAogI2luY2x1ZGUgInNubXBfYmdwLmgiCiAKIHN0cnVjdCB2YXJpYWJsZTEzIGJncF92YXJpYWJsZXNbXSA9IHsKLSAgICB7QkdQVkVSU0lPTiwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9iZ3AsIDEsIHsxfX0sCi0gICAge0JHUExPQ0FMQVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMSwgezJ9fSwKLSAgICB7QkdQSURFTlRJRklFUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDEsIHs0fX0sCi0gICAge0JHUFBFRVJJREVOVElGSUVSLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDF9fSwKLSAgICB7QkdQUEVFUlNUQVRFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCAyfX0sCi0gICAge0JHUFBFRVJBRE1JTlNUQVRVUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgM319LAotICAgIHtCR1BQRUVSTkVHT1RJQVRFRFZFUlNJT04sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDR9fSwKLSAgICB7QkdQUEVFUkxPQ0FMQUREUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCA1fX0sCi0gICAge0JHUFBFRVJMT0NBTFBPUlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDZ9fSwKLSAgICB7QkdQUEVFUlJFTU9URUFERFIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgN319LAotICAgIHtCR1BQRUVSUkVNT1RFUE9SVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgOH19LAotICAgIHtCR1BQRUVSUkVNT1RFQVMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDl9fSwKLSAgICB7QkdQUEVFUklOVVBEQVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7MywgMSwgMTB9fSwKLSAgICB7QkdQUEVFUk9VVFVQREFURVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDExfX0sCi0gICAge0JHUFBFRVJJTlRPVEFMTUVTU0FHRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDEyfX0sCi0gICAge0JHUFBFRVJPVVRUT1RBTE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHszLCAxLCAxM319LAotICAgIHtCR1BQRUVSTEFTVEVSUk9SLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2JncCwgMywgezMsIDEsIDE0fX0sCi0gICAge0JHUFBBVEhBVFRSUEVFUiwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCAxfX0sCi0gICAge0JHUFBBVEhBVFRSREVTVE5FVFdPUkssIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgMn19LAotICAgIHtCR1BQQVRIQVRUUk9SSUdJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgM319LAotICAgIHtCR1BQQVRIQVRUUkFTUEFUSCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9iZ3AsIDMsIHs1LCAxLCA0fX0sCi0gICAge0JHUFBBVEhBVFRSTkVYVEhPUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgNX19LAotICAgIHtCR1BQQVRIQVRUUklOVEVSQVNNRVRSSUMsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfYmdwLCAzLCB7NSwgMSwgNn19CisgICAge0JHUFZFUlNJT04sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAxLCB7MX19LAorICAgIHtCR1BMT0NBTEFTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDEsIHsyfX0sCisgICAge0JHUElERU5USUZJRVIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAxLCB7NH19LAorICAgIHtCR1BQRUVSSURFTlRJRklFUiwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxfX0sCisgICAge0JHUFBFRVJTVEFURSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgMn19LAorICAgIHtCR1BQRUVSQURNSU5TVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDN9fSwKKyAgICB7QkdQUEVFUk5FR09USUFURURWRVJTSU9OLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCA0fX0sCisgICAge0JHUFBFRVJMT0NBTEFERFIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgNX19LAorICAgIHtCR1BQRUVSTE9DQUxQT1JULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCA2fX0sCisgICAge0JHUFBFRVJSRU1PVEVBRERSLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDd9fSwKKyAgICB7QkdQUEVFUlJFTU9URVBPUlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDh9fSwKKyAgICB7QkdQUEVFUlJFTU9URUFTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCA5fX0sCisgICAge0JHUFBFRVJJTlVQREFURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezMsIDEsIDEwfX0sCisgICAge0JHUFBFRVJPVVRVUERBVEVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxMX19LAorICAgIHtCR1BQRUVSSU5UT1RBTE1FU1NBR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxMn19LAorICAgIHtCR1BQRUVST1VUVE9UQUxNRVNTQUdFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7MywgMSwgMTN9fSwKKyAgICB7QkdQUEVFUkxBU1RFUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9iZ3AsIDMsIHszLCAxLCAxNH19LAorICAgIHtCR1BQQVRIQVRUUlBFRVIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgMX19LAorICAgIHtCR1BQQVRIQVRUUkRFU1RORVRXT1JLLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDJ9fSwKKyAgICB7QkdQUEFUSEFUVFJPUklHSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDN9fSwKKyAgICB7QkdQUEFUSEFUVFJBU1BBVEgsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfYmdwLCAzLCB7NSwgMSwgNH19LAorICAgIHtCR1BQQVRIQVRUUk5FWFRIT1AsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDV9fSwKKyAgICB7QkdQUEFUSEFUVFJJTlRFUkFTTUVUUklDLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2JncCwgMywgezUsIDEsIDZ9fQogfTsKIAotb2lkICAgICAgICAgICAgIGJncF92YXJpYWJsZXNfb2lkW10gPSB7IE1JQiwgMTUgfTsKK29pZCAgICAgICAgICAgICBiZ3BfdmFyaWFibGVzX29pZFtdID0geyBORVRTTk1QX01JQjJfT0lELCAxNSB9OwogCiB2b2lkCiBpbml0X3NubXBfYmRwKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX29zcGYuYwppbmRleCA0ZjQ3NThjLi43M2YwZTQzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfb3NwZi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9vc3BmLmMKQEAgLTU3LDEyOSArNTcsMjI1IEBACiBleHRlcm4gdV9jaGFyICAgc211eF90eXBlOwogCiBzdHJ1Y3QgdmFyaWFibGUxMyBvc3BmX3ZhcmlhYmxlc1tdID0gewotICAgIHtvc3BmUm91dGVySWQsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxLCAxLCAxfX0sCi0gICAge29zcGZBZG1pblN0YXQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MSwgMSwgMn19LAotICAgIHtvc3BmVmVyc2lvbk51bWJlciwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDN9fSwKLSAgICB7b3NwZkFyZWFCZHJSdHJTdGF0dXMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxLCAxLCA0fX0sCi0gICAge29zcGZBU0JkclJ0clN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxLCAxLCA1fX0sCi0gICAge29zcGZFeHRlcm5Mc2FDb3VudCwgQVNOX0dBVUdFLCBST05MWSwgdmFyX29zcGYsIDMsIHsxLCAxLCA2fX0sCi0gICAge29zcGZFeHRlcm5Mc2FDa3N1bVN1bSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDd9fSwKLSAgICB7b3NwZlRPU1N1cHBvcnQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MSwgMSwgOH19LAotICAgIHtvc3BmT3JpZ2luYXRlTmV3THNhcywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDl9fSwKLSAgICB7b3NwZlJ4TmV3THNhcywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEsIDEsIDEwLCAwfX0sCi0gICAge29zcGZFeHRMc2RiTGltaXQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTF9fSwKLSAgICB7b3NwZk11bHRpY2FzdEV4dGVuc2lvbnMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7MSwgMSwgMTJ9fSwKLSAgICB7b3NwZkFyZWFJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MiwgMSwgMX19LAotICAgIHtvc3BmQXV0aFR5cGUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MiwgMSwgMn19LAotICAgIHtvc3BmSW1wb3J0QXNFeHRlcm4sIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MiwgMSwgM319LAotICAgIHtvc3BmU3BmUnVucywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezIsIDEsIDR9fSwKLSAgICB7b3NwZkFyZWFCZHJSdHJDb3VudCwgQVNOX0dBVUdFLCBST05MWSwgdmFyX29zcGYsIDMsIHsyLCAxLCA1fX0sCi0gICAge29zcGZBc0JkclJ0ckNvdW50LCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezIsIDEsIDZ9fSwKLSAgICB7b3NwZkFyZWFMc2FDb3VudCwgQVNOX0dBVUdFLCBST05MWSwgdmFyX29zcGYsIDMsIHsyLCAxLCA3fX0sCi0gICAge29zcGZBcmVhTHNhQ2tzdW1TdW0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsyLCAxLCA4fX0sCi0gICAge29zcGZBcmVhU3VtbWFyeSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsyLCAxLCA5fX0sCi0gICAge29zcGZBcmVhU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezIsIDEsIDEwfX0sCi0gICAge29zcGZTdHViQXJlYUlkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHszLCAxLCAxfX0sCi0gICAge29zcGZTdHViVE9TLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MywgMSwgMn19LAotICAgIHtvc3BmU3R1Yk1ldHJpYywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHszLCAxLCAzfX0sCi0gICAge29zcGZTdHViU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezMsIDEsIDR9fSwKLSAgICB7b3NwZlN0dWJNZXRyaWNUeXBlLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezMsIDEsIDV9fSwKLSAgICB7b3NwZkxzZGJBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDF9fSwKLSAgICB7b3NwZkxzZGJUeXBlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgMn19LAotICAgIHtvc3BmTHNkYkxzaWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDN9fSwKLSAgICB7b3NwZkxzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgNH19LAotICAgIHtvc3BmTHNkYlNlcXVlbmNlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7NCwgMSwgNX19LAotICAgIHtvc3BmTHNkYkFnZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDZ9fSwKLSAgICB7b3NwZkxzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezQsIDEsIDd9fSwKLSAgICB7b3NwZkxzZGJBZHZlcnRpc2VtZW50LCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX29zcGYsIDMsIHs0LCAxLCA4fX0sCi0gICAge29zcGZBcmVhUmFuZ2VBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezUsIDEsIDF9fSwKLSAgICB7b3NwZkFyZWFSYW5nZU5ldCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NSwgMSwgMn19LAotICAgIHtvc3BmQXJlYVJhbmdlTWFzaywgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfb3NwZiwgMywgezUsIDEsIDN9fSwKLSAgICB7b3NwZkFyZWFSYW5nZVN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs1LCAxLCA0fX0sCi0gICAge29zcGZBcmVhUmFuZ2VFZmZlY3QsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NSwgMSwgNX19LAotICAgIHtvc3BmSG9zdElwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NiwgMSwgMX19LAotICAgIHtvc3BmSG9zdFRPUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezYsIDEsIDJ9fSwKLSAgICB7b3NwZkhvc3RNZXRyaWMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NiwgMSwgM319LAotICAgIHtvc3BmSG9zdFN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs2LCAxLCA0fX0sCi0gICAge29zcGZIb3N0QXJlYUlELCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs2LCAxLCA1fX0sCi0gICAge29zcGZJZklwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7NywgMSwgMX19LAotICAgIHtvc3BmQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezcsIDEsIDJ9fSwKLSAgICB7b3NwZklmQXJlYUlkLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgM319LAotICAgIHtvc3BmSWZUeXBlLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDR9fSwKLSAgICB7b3NwZklmQWRtaW5TdGF0LCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDV9fSwKLSAgICB7b3NwZklmUnRyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgNn19LAotICAgIHtvc3BmSWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgN319LAotICAgIHtvc3BmSWZSZXRyYW5zSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgOH19LAotICAgIHtvc3BmSWZIZWxsb0ludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDl9fSwKLSAgICB7b3NwZklmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezcsIDEsIDEwfX0sCi0gICAge29zcGZJZlBvbGxJbnRlcnZhbCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCAxMX19LAotICAgIHtvc3BmSWZTdGF0ZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezcsIDEsIDEyfX0sCi0gICAge29zcGZJZkRlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezcsIDEsIDEzfX0sCi0gICAge29zcGZJZkJhY2t1cERlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezcsIDEsIDE0fX0sCi0gICAge29zcGZJZkV2ZW50cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezcsIDEsIDE1fX0sCi0gICAge29zcGZJZkF1dGhLZXksIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs3LCAxLCAxNn19LAotICAgIHtvc3BmSWZTdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7NywgMSwgMTd9fSwKLSAgICB7b3NwZklmTXVsdGljYXN0Rm9yd2FyZGluZywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsCi0gICAgIHs3LCAxLCAxOH19LAotICAgIHtvc3BmSWZNZXRyaWNJcEFkZHJlc3MsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezgsIDEsIDF9fSwKLSAgICB7b3NwZklmTWV0cmljQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezgsIDEsIDJ9fSwKLSAgICB7b3NwZklmTWV0cmljVE9TLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7OCwgMSwgM319LAotICAgIHtvc3BmSWZNZXRyaWNWYWx1ZSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs4LCAxLCA0fX0sCi0gICAge29zcGZJZk1ldHJpY1N0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs4LCAxLCA1fX0sCi0gICAge29zcGZWaXJ0SWZBcmVhSWQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywgezksIDEsIDF9fSwKLSAgICB7b3NwZlZpcnRJZk5laWdoYm9yLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHs5LCAxLCAyfX0sCi0gICAge29zcGZWaXJ0SWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7OSwgMSwgM319LAotICAgIHtvc3BmVmlydElmUmV0cmFuc0ludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywKLSAgICAgezksIDEsIDR9fSwKLSAgICB7b3NwZlZpcnRJZkhlbGxvSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7OSwgMSwgNX19LAotICAgIHtvc3BmVmlydElmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywKLSAgICAgezksIDEsIDZ9fSwKLSAgICB7b3NwZlZpcnRJZlN0YXRlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7OSwgMSwgN319LAotICAgIHtvc3BmVmlydElmRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7OSwgMSwgOH19LAotICAgIHtvc3BmVmlydElmQXV0aEtleSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezksIDEsIDl9fSwKLSAgICB7b3NwZlZpcnRJZlN0YXR1cywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHs5LCAxLCAxMH19LAotICAgIHtvc3BmTmJySXBBZGRyLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgMX19LAotICAgIHtvc3BmTmJyQWRkcmVzc0xlc3NJbmRleCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCAyfX0sCi0gICAge29zcGZOYnJSdHJJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDN9fSwKLSAgICB7b3NwZk5ick9wdGlvbnMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgNH19LAotICAgIHtvc3BmTmJyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDV9fSwKLSAgICB7b3NwZk5iclN0YXRlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDZ9fSwKLSAgICB7b3NwZk5ickV2ZW50cywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCA3fX0sCi0gICAge29zcGZOYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEwLCAxLCA4fX0sCi0gICAge29zcGZOYm1hTmJyU3RhdHVzLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfb3NwZiwgMywgezEwLCAxLCA5fX0sCi0gICAge29zcGZOYm1hTmJyUGVybWFuZW5jZSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX29zcGYsIDMsIHsxMCwgMSwgMTB9fSwKLSAgICB7b3NwZlZpcnROYnJBcmVhLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMSwgMSwgMX19LAotICAgIHtvc3BmVmlydE5iclJ0cklkLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX29zcGYsIDMsIHsxMSwgMSwgMn19LAotICAgIHtvc3BmVmlydE5icklwQWRkciwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDN9fSwKLSAgICB7b3NwZlZpcnROYnJPcHRpb25zLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDR9fSwKLSAgICB7b3NwZlZpcnROYnJTdGF0ZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezExLCAxLCA1fX0sCi0gICAge29zcGZWaXJ0TmJyRXZlbnRzLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDZ9fSwKLSAgICB7b3NwZlZpcnROYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfb3NwZiwgMywgezExLCAxLCA3fX0sCi0gICAge29zcGZFeHRMc2RiVHlwZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEyLCAxLCAxfX0sCi0gICAge29zcGZFeHRMc2RiTHNpZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDJ9fSwKLSAgICB7b3NwZkV4dExzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDN9fSwKLSAgICB7b3NwZkV4dExzZGJTZXF1ZW5jZSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEyLCAxLCA0fX0sCi0gICAge29zcGZFeHRMc2RiQWdlLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDV9fSwKLSAgICB7b3NwZkV4dExzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfb3NwZiwgMywgezEyLCAxLCA2fX0sCi0gICAge29zcGZFeHRMc2RiQWR2ZXJ0aXNlbWVudCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9vc3BmLCAzLAotICAgICB7MTIsIDEsIDd9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVBcmVhSUQsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfb3NwZiwgMywKLSAgICAgezE0LCAxLCAxfX0sCi0gICAge29zcGZBcmVhQWdncmVnYXRlTHNkYlR5cGUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX29zcGYsIDMsCi0gICAgIHsxNCwgMSwgMn19LAotICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZU5ldCwgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDN9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVNYXNrLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7MTQsIDEsIDR9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVTdGF0dXMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLAotICAgICB7MTQsIDEsIDV9fSwKLSAgICB7b3NwZkFyZWFBZ2dyZWdhdGVFZmZlY3QsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDZ9fQorICAgIHtvc3BmUm91dGVySWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCAxfX0sCisgICAge29zcGZBZG1pblN0YXQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgMn19LAorICAgIHtvc3BmVmVyc2lvbk51bWJlciwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDN9fSwKKyAgICB7b3NwZkFyZWFCZHJSdHJTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCA0fX0sCisgICAge29zcGZBU0JkclJ0clN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCA1fX0sCisgICAge29zcGZFeHRlcm5Mc2FDb3VudCwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxLCAxLCA2fX0sCisgICAge29zcGZFeHRlcm5Mc2FDa3N1bVN1bSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDd9fSwKKyAgICB7b3NwZlRPU1N1cHBvcnQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgOH19LAorICAgIHtvc3BmT3JpZ2luYXRlTmV3THNhcywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDl9fSwKKyAgICB7b3NwZlJ4TmV3THNhcywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEsIDEsIDEwLCAwfX0sCisgICAge29zcGZFeHRMc2RiTGltaXQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTF9fSwKKyAgICB7b3NwZk11bHRpY2FzdEV4dGVuc2lvbnMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MSwgMSwgMTJ9fSwKKyAgICB7b3NwZkFyZWFJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgMX19LAorICAgIHtvc3BmQXV0aFR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgMn19LAorICAgIHtvc3BmSW1wb3J0QXNFeHRlcm4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MiwgMSwgM319LAorICAgIHtvc3BmU3BmUnVucywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDR9fSwKKyAgICB7b3NwZkFyZWFCZHJSdHJDb3VudCwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA1fX0sCisgICAge29zcGZBc0JkclJ0ckNvdW50LCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDZ9fSwKKyAgICB7b3NwZkFyZWFMc2FDb3VudCwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA3fX0sCisgICAge29zcGZBcmVhTHNhQ2tzdW1TdW0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA4fX0sCisgICAge29zcGZBcmVhU3VtbWFyeSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsyLCAxLCA5fX0sCisgICAge29zcGZBcmVhU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezIsIDEsIDEwfX0sCisgICAge29zcGZTdHViQXJlYUlkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHszLCAxLCAxfX0sCisgICAge29zcGZTdHViVE9TLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MywgMSwgMn19LAorICAgIHtvc3BmU3R1Yk1ldHJpYywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHszLCAxLCAzfX0sCisgICAge29zcGZTdHViU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezMsIDEsIDR9fSwKKyAgICB7b3NwZlN0dWJNZXRyaWNUeXBlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezMsIDEsIDV9fSwKKyAgICB7b3NwZkxzZGJBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDF9fSwKKyAgICB7b3NwZkxzZGJUeXBlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgMn19LAorICAgIHtvc3BmTHNkYkxzaWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDN9fSwKKyAgICB7b3NwZkxzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgNH19LAorICAgIHtvc3BmTHNkYlNlcXVlbmNlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NCwgMSwgNX19LAorICAgIHtvc3BmTHNkYkFnZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDZ9fSwKKyAgICB7b3NwZkxzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezQsIDEsIDd9fSwKKyAgICB7b3NwZkxzZGJBZHZlcnRpc2VtZW50LCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs0LCAxLCA4fX0sCisgICAge29zcGZBcmVhUmFuZ2VBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezUsIDEsIDF9fSwKKyAgICB7b3NwZkFyZWFSYW5nZU5ldCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NSwgMSwgMn19LAorICAgIHtvc3BmQXJlYVJhbmdlTWFzaywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezUsIDEsIDN9fSwKKyAgICB7b3NwZkFyZWFSYW5nZVN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs1LCAxLCA0fX0sCisgICAge29zcGZBcmVhUmFuZ2VFZmZlY3QsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NSwgMSwgNX19LAorICAgIHtvc3BmSG9zdElwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NiwgMSwgMX19LAorICAgIHtvc3BmSG9zdFRPUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezYsIDEsIDJ9fSwKKyAgICB7b3NwZkhvc3RNZXRyaWMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NiwgMSwgM319LAorICAgIHtvc3BmSG9zdFN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs2LCAxLCA0fX0sCisgICAge29zcGZIb3N0QXJlYUlELCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs2LCAxLCA1fX0sCisgICAge29zcGZJZklwQWRkcmVzcywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMX19LAorICAgIHtvc3BmQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDJ9fSwKKyAgICB7b3NwZklmQXJlYUlkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgM319LAorICAgIHtvc3BmSWZUeXBlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDR9fSwKKyAgICB7b3NwZklmQWRtaW5TdGF0LCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDV9fSwKKyAgICB7b3NwZklmUnRyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgNn19LAorICAgIHtvc3BmSWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgN319LAorICAgIHtvc3BmSWZSZXRyYW5zSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgOH19LAorICAgIHtvc3BmSWZIZWxsb0ludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDl9fSwKKyAgICB7b3NwZklmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDEwfX0sCisgICAge29zcGZJZlBvbGxJbnRlcnZhbCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxMX19LAorICAgIHtvc3BmSWZTdGF0ZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDEyfX0sCisgICAge29zcGZJZkRlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDEzfX0sCisgICAge29zcGZJZkJhY2t1cERlc2lnbmF0ZWRSb3V0ZXIsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDE0fX0sCisgICAge29zcGZJZkV2ZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezcsIDEsIDE1fX0sCisgICAge29zcGZJZkF1dGhLZXksIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxNn19LAorICAgIHtvc3BmSWZTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7NywgMSwgMTd9fSwKKyAgICB7b3NwZklmTXVsdGljYXN0Rm9yd2FyZGluZywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs3LCAxLCAxOH19LAorICAgIHtvc3BmSWZNZXRyaWNJcEFkZHJlc3MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezgsIDEsIDF9fSwKKyAgICB7b3NwZklmTWV0cmljQWRkcmVzc0xlc3NJZiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezgsIDEsIDJ9fSwKKyAgICB7b3NwZklmTWV0cmljVE9TLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OCwgMSwgM319LAorICAgIHtvc3BmSWZNZXRyaWNWYWx1ZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs4LCAxLCA0fX0sCisgICAge29zcGZJZk1ldHJpY1N0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs4LCAxLCA1fX0sCisgICAge29zcGZWaXJ0SWZBcmVhSWQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDF9fSwKKyAgICB7b3NwZlZpcnRJZk5laWdoYm9yLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCAyfX0sCisgICAge29zcGZWaXJ0SWZUcmFuc2l0RGVsYXksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgM319LAorICAgIHtvc3BmVmlydElmUmV0cmFuc0ludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDR9fSwKKyAgICB7b3NwZlZpcnRJZkhlbGxvSW50ZXJ2YWwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgNX19LAorICAgIHtvc3BmVmlydElmUnRyRGVhZEludGVydmFsLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDZ9fSwKKyAgICB7b3NwZlZpcnRJZlN0YXRlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgN319LAorICAgIHtvc3BmVmlydElmRXZlbnRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7OSwgMSwgOH19LAorICAgIHtvc3BmVmlydElmQXV0aEtleSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezksIDEsIDl9fSwKKyAgICB7b3NwZlZpcnRJZlN0YXR1cywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHs5LCAxLCAxMH19LAorICAgIHtvc3BmTmJySXBBZGRyLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgMX19LAorICAgIHtvc3BmTmJyQWRkcmVzc0xlc3NJbmRleCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCAyfX0sCisgICAge29zcGZOYnJSdHJJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDN9fSwKKyAgICB7b3NwZk5ick9wdGlvbnMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgNH19LAorICAgIHtvc3BmTmJyUHJpb3JpdHksIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDV9fSwKKyAgICB7b3NwZk5iclN0YXRlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTAsIDEsIDZ9fSwKKyAgICB7b3NwZk5ickV2ZW50cywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCA3fX0sCisgICAge29zcGZOYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCA4fX0sCisgICAge29zcGZOYm1hTmJyU3RhdHVzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfb3NwZiwgMywgezEwLCAxLCA5fX0sCisgICAge29zcGZOYm1hTmJyUGVybWFuZW5jZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMCwgMSwgMTB9fSwKKyAgICB7b3NwZlZpcnROYnJBcmVhLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMSwgMSwgMX19LAorICAgIHtvc3BmVmlydE5iclJ0cklkLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxMSwgMSwgMn19LAorICAgIHtvc3BmVmlydE5icklwQWRkciwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDN9fSwKKyAgICB7b3NwZlZpcnROYnJPcHRpb25zLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDR9fSwKKyAgICB7b3NwZlZpcnROYnJTdGF0ZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezExLCAxLCA1fX0sCisgICAge29zcGZWaXJ0TmJyRXZlbnRzLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTEsIDEsIDZ9fSwKKyAgICB7b3NwZlZpcnROYnJMc1JldHJhbnNRTGVuLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezExLCAxLCA3fX0sCisgICAge29zcGZFeHRMc2RiVHlwZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEyLCAxLCAxfX0sCisgICAge29zcGZFeHRMc2RiTHNpZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDJ9fSwKKyAgICB7b3NwZkV4dExzZGJSb3V0ZXJJZCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDN9fSwKKyAgICB7b3NwZkV4dExzZGJTZXF1ZW5jZSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEyLCAxLCA0fX0sCisgICAge29zcGZFeHRMc2RiQWdlLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDV9fSwKKyAgICB7b3NwZkV4dExzZGJDaGVja3N1bSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezEyLCAxLCA2fX0sCisgICAge29zcGZFeHRMc2RiQWR2ZXJ0aXNlbWVudCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTIsIDEsIDd9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVBcmVhSUQsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfb3NwZiwgMywgezE0LCAxLCAxfX0sCisgICAge29zcGZBcmVhQWdncmVnYXRlTHNkYlR5cGUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX29zcGYsIDMsIHsxNCwgMSwgMn19LAorICAgIHtvc3BmQXJlYUFnZ3JlZ2F0ZU5ldCwgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDN9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVNYXNrLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDR9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVTdGF0dXMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDV9fSwKKyAgICB7b3NwZkFyZWFBZ2dyZWdhdGVFZmZlY3QsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9vc3BmLCAzLCB7MTQsIDEsIDZ9fQogfTsKIAotb2lkICAgICAgICAgICAgIG9zcGZfdmFyaWFibGVzX29pZFtdID0geyBNSUIsIDE0IH07CitvaWQgICAgICAgICAgICAgb3NwZl92YXJpYWJsZXNfb2lkW10gPSB7IE5FVFNOTVBfTUlCMl9PSUQsIDE0IH07CiAKIHZvaWQKIGluaXRfc25tcF9vc3BmKHZvaWQpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfcmlwMi5jIGIvYWdlbnQvbWliZ3JvdXAvc211eC9zbm1wX3JpcDIuYwppbmRleCBjNWIxMzY0Li5iOTg3YTA5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbXV4L3NubXBfcmlwMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3NtdXgvc25tcF9yaXAyLmMKQEAgLTU3LDMxICs1Nyw1MyBAQAogZXh0ZXJuIHVfY2hhciAgIHNtdXhfdHlwZTsKIAogc3RydWN0IHZhcmlhYmxlMTMgcmlwMl92YXJpYWJsZXNbXSA9IHsKLSAgICB7UklQMkdMT0JBTFJPVVRFQ0hBTkdFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfcmlwMiwgMiwgezEsIDF9fSwKLSAgICB7UklQMkdMT0JBTFFVRVJJRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3JpcDIsIDIsIHsxLCAyfX0sCi0gICAge1JJUDJJRlNUQVRBRERSRVNTLCBBU05fSVBBRERSRVNTLCBST05MWSwgdmFyX3JpcDIsIDMsIHsyLCAxLCAxfX0sCi0gICAge1JJUDJJRlNUQVRSQ1ZCQURQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7MiwgMSwgMn19LAotICAgIHtSSVAySUZTVEFUUkNWQkFEUk9VVEVTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7MiwgMSwgM319LAotICAgIHtSSVAySUZTVEFUU0VOVFVQREFURVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3JpcDIsIDMsIHsyLCAxLCA0fX0sCi0gICAge1JJUDJJRlNUQVRTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MiwgMSwgNX19LAotICAgIHtSSVAySUZDT05GQUREUkVTUywgQVNOX0lQQUREUkVTUywgUk9OTFksIHZhcl9yaXAyLCAzLCB7MywgMSwgMX19LAotICAgIHtSSVAySUZDT05GRE9NQUlOLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgMn19LAotICAgIHtSSVAySUZDT05GQVVUSFRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgM319LAotICAgIHtSSVAySUZDT05GQVVUSEtFWSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfcmlwMiwgMywgezMsIDEsIDR9fSwKLSAgICB7UklQMklGQ09ORlNFTkQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgNX19LAotICAgIHtSSVAySUZDT05GUkVDRUlWRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCA2fX0sCi0gICAge1JJUDJJRkNPTkZERUZBVUxUTUVUUklDLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfcmlwMiwgMywgezMsIDEsIDd9fSwKLSAgICB7UklQMklGQ09ORlNUQVRVUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3JpcDIsIDMsIHszLCAxLCA4fX0sCi0gICAge1JJUDJJRkNPTkZTUkNBRERSRVNTLCBBU05fSVBBRERSRVNTLCBSV1JJVEUsIHZhcl9yaXAyLCAzLCB7MywgMSwgOX19LAotICAgIHtSSVAyUEVFUkFERFJFU1MsIEFTTl9JUEFERFJFU1MsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDF9fSwKLSAgICB7UklQMlBFRVJET01BSU4sIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDJ9fSwKLSAgICB7UklQMlBFRVJMQVNUVVBEQVRFLCBBU05fVElNRVRJQ0tTLCBST05MWSwgdmFyX3JpcDIsIDMsIHs0LCAxLCAzfX0sCi0gICAge1JJUDJQRUVSVkVSU0lPTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDR9fSwKLSAgICB7UklQMlBFRVJSQ1ZCQURQS1RTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9yaXAyLCAzLCB7NCwgMSwgNX19LAotICAgIHtSSVAyUEVFUlJDVkJBRFJPVVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfcmlwMiwgMywgezQsIDEsIDZ9fQorICAgIHtSSVAyR0xPQkFMUk9VVEVDSEFOR0VTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAyLCB7MSwgMX19LAorICAgIHtSSVAyR0xPQkFMUVVFUklFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMiwgezEsIDJ9fSwKKyAgICB7UklQMklGU1RBVEFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezIsIDEsIDF9fSwKKyAgICB7UklQMklGU1RBVFJDVkJBRFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHsyLCAxLCAyfX0sCisgICAge1JJUDJJRlNUQVRSQ1ZCQURST1VURVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHsyLCAxLCAzfX0sCisgICAge1JJUDJJRlNUQVRTRU5UVVBEQVRFUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezIsIDEsIDR9fSwKKyAgICB7UklQMklGU1RBVFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHsyLCAxLCA1fX0sCisgICAge1JJUDJJRkNPTkZBRERSRVNTLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCAxfX0sCisgICAge1JJUDJJRkNPTkZET01BSU4sIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCAyfX0sCisgICAge1JJUDJJRkNPTkZBVVRIVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCAzfX0sCisgICAge1JJUDJJRkNPTkZBVVRIS0VZLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9yaXAyLCAzLCB7MywgMSwgNH19LAorICAgIHtSSVAySUZDT05GU0VORCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCA1fX0sCisgICAge1JJUDJJRkNPTkZSRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDZ9fSwKKyAgICB7UklQMklGQ09ORkRFRkFVTFRNRVRSSUMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9yaXAyLCAzLCB7MywgMSwgN319LAorICAgIHtSSVAySUZDT05GU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfcmlwMiwgMywgezMsIDEsIDh9fSwKKyAgICB7UklQMklGQ09ORlNSQ0FERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3JpcDIsIDMsIHszLCAxLCA5fX0sCisgICAge1JJUDJQRUVSQUREUkVTUywgQVNOX0lQQUREUkVTUywgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgMX19LAorICAgIHtSSVAyUEVFUkRPTUFJTiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgMn19LAorICAgIHtSSVAyUEVFUkxBU1RVUERBVEUsIEFTTl9USU1FVElDS1MsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfcmlwMiwgMywgezQsIDEsIDN9fSwKKyAgICB7UklQMlBFRVJWRVJTSU9OLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgNH19LAorICAgIHtSSVAyUEVFUlJDVkJBRFBLVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3JpcDIsIDMsIHs0LCAxLCA1fX0sCisgICAge1JJUDJQRUVSUkNWQkFEUk9VVEVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9yaXAyLCAzLCB7NCwgMSwgNn19CiB9OwogCi1vaWQgICAgICAgICAgICAgcmlwMl92YXJpYWJsZXNfb2lkW10gPSB7IE1JQiwgMjMgfTsKK29pZCAgICAgICAgICAgICByaXAyX3ZhcmlhYmxlc19vaWRbXSA9IHsgTkVUU05NUF9NSUIyX09JRCwgMjMgfTsKIAogdm9pZAogaW5pdF9zbm1wX3JpcDIodm9pZCkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5jCmluZGV4IGNiMDBmNjUuLmM4NTEyNWQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuYwpAQCAtMjYsOSArMjYsOSBAQAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZFtdID0KK2NvbnN0IG9pZCAgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkW10gPQogICAgIHsgU05NUE5PVElGWUZJTFRFUlRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBpbnQgICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgoc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZCk7CiAKIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9yZWdpc3RyYXRpb24gc25tcE5vdGlmeUZpbHRlclRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS5oCmluZGV4IDViZmViN2QuLjNmZjJmOTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGUuaApAQCAtMzExLDggKzMxMSw4IEBACiAgICAgICAgICogc25tcE5vdGlmeUZpbHRlclRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleAogICAgICAgICAoc25tcE5vdGlmeUZpbHRlclRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgc25tcE5vdGlmeUZpbHRlclRhYmxlX29pZF9zaXplOworICAgIGV4dGVybiBjb25zdCBvaWQgICAgICBzbm1wTm90aWZ5RmlsdGVyVGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAic25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggMzQyZTA2NC4uM2M2YmNjNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLW5vdGlmaWNhdGlvbi1taWIvc25tcE5vdGlmeUZpbHRlclRhYmxlL3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCkBAIC0yNDMsNyArMjQzLDggQEAKICAgICAgICAgKytjb3VudDsKICAgICB9CiAKLSAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnNubXBOb3RpZnlGaWx0ZXJUYWJsZTpzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2xvYWQiLCAiaW5zZXJ0ZWQgJWQgcmVjb3Jkc1xuIiwgY291bnQpKTsKKyAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnNubXBOb3RpZnlGaWx0ZXJUYWJsZTpzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2xvYWQiLAorICAgICAgICAgICAgICAgImluc2VydGVkICUiIE5FVFNOTVBfUFJJeiAidSByZWNvcmRzXG4iLCBjb3VudCkpOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtbm90aWZpY2F0aW9uLW1pYi9zbm1wTm90aWZ5RmlsdGVyVGFibGUvc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMKaW5kZXggNDhmM2U3ZS4uOWY2NGI0NiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC1ub3RpZmljYXRpb24tbWliL3NubXBOb3RpZnlGaWx0ZXJUYWJsZS9zbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLmMKQEAgLTc3NCw2ICs3NzQsNyBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfbWZkX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9wb3N0X3JlcXVlc3QgKi8KIAorCiAvKioKICAqIEBpbnRlcm5hbAogICogd3JhcHBlcgpAQCAtMjA0MSw3ICsyMDQyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9BUFBUWVBFKTsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAqYyA9IChuZXRzbm1wX2NvbnRhaW5lciAqKSBjbGllbnRhcmc7CiAKLSAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6c25tcE5vdGlmeUZpbHRlclRhYmxlOl9zbm1wTm90aWZ5RmlsdGVyVGFibGVfY29udGFpbmVyX3NhdmVfcm93cyIsICJzYXZpbmcgJWQgcm93c1xuIiwgQ09OVEFJTkVSX1NJWkUoYykpKTsKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6c25tcE5vdGlmeUZpbHRlclRhYmxlOiIKKyAgICAgICAgICAgICAgICAiX3NubXBOb3RpZnlGaWx0ZXJUYWJsZV9jb250YWluZXJfc2F2ZV9yb3dzIiwKKyAgICAgICAgICAgICAgICAic2F2aW5nICUiIE5FVFNOTVBfUFJJeiAidSByb3dzXG4iLCBDT05UQUlORVJfU0laRShjKSkpOwogCiAgICAgcmVhZF9jb25maWdfc3RvcmUoKGNoYXIgKikgdHlwZSwgc2VwKTsKICAgICByZWFkX2NvbmZpZ19zdG9yZSgoY2hhciAqKSB0eXBlLCBidWYpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmMKaW5kZXggMDVkODMxMS4uNTAxMDE5NyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJ1c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZFtdID0geyBVU01ESFVTRVJLRVlUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICB1c21ESFVzZXJLZXlUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkW10gPSB7IFVTTURIVVNFUktFWVRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgodXNtREhVc2VyS2V5VGFibGVfb2lkKTsKIAogdXNtREhVc2VyS2V5VGFibGVfcmVnaXN0cmF0aW9uIHVzbURIVXNlcktleVRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmggYi9hZ2VudC9taWJncm91cC9zbm1wLXVzbS1kaC1vYmplY3RzLW1pYi91c21ESFVzZXJLZXlUYWJsZS91c21ESFVzZXJLZXlUYWJsZS5oCmluZGV4IGUyMGQ1YmMuLmIzNDNkNzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXAtdXNtLWRoLW9iamVjdHMtbWliL3VzbURIVXNlcktleVRhYmxlL3VzbURIVXNlcktleVRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcC11c20tZGgtb2JqZWN0cy1taWIvdXNtREhVc2VyS2V5VGFibGUvdXNtREhVc2VyS2V5VGFibGUuaApAQCAtMTk5LDggKzE5OSw4IEBACiAgICAgICAgICp1c21ESFVzZXJLZXlUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKHVzbURIVXNlcktleVRhYmxlX21pYl9pbmRleCAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZFtdOwotICAgIGV4dGVybiBpbnQgICAgICB1c21ESFVzZXJLZXlUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgdXNtREhVc2VyS2V5VGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIHVzbURIVXNlcktleVRhYmxlX29pZF9zaXplOwogCiAKICNpbmNsdWRlICJ1c21ESFVzZXJLZXlUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5jCmluZGV4IDRjYTI5ODcuLmQ1OTk4ZjAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuYwpAQCAtMTAsMjEgKzEwLDI3IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotI2luY2x1ZGUgIm1pYklJL3N5c09SVGFibGUuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAjaW5jbHVkZSAic25tcEVuZ2luZS5oIgogCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBFbmdpbmVfdmFyaWFibGVzW10gPSB7Ci0gICAge1NOTVBFTkdJTkVJRCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9zbm1wRW5naW5lLCAxLCB7MX19LAorICAgIHtTTk1QRU5HSU5FSUQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezF9fSwKICNpZmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUKLSAgICB7U05NUEVOR0lORUJPT1RTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfc25tcEVuZ2luZSwgMSwgezJ9fSwKLSAgICB7U05NUEVOR0lORVRJTUUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9zbm1wRW5naW5lLCAxLCB7M319LAorICAgIHtTTk1QRU5HSU5FQk9PVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAorICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3NubXBFbmdpbmUsIDEsIHszfX0sCiAjZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgKi8KLSAgICB7U05NUEVOR0lORUJPT1RTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAotICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfc25tcEVuZ2luZSwgMSwgezN9fSwKKyAgICB7U05NUEVOR0lORUJPT1RTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7Mn19LAorICAgIHtTTk1QRU5HSU5FVElNRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcEVuZ2luZSwgMSwgezN9fSwKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFICovCi0gICAge1NOTVBFTkdJTkVNQVhNRVNTQUdFU0laRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfc25tcEVuZ2luZSwgMSwgezR9fSwKKyAgICB7U05NUEVOR0lORU1BWE1FU1NBR0VTSVpFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wRW5naW5lLCAxLCB7NH19LAogfTsKIAogLyoKQEAgLTU2LDEwICs2Miw4IEBACiB2b2lkCiBpbml0X3NubXBFbmdpbmUodm9pZCkKIHsKLSNpZmRlZiBVU0lOR19NSUJJSV9TWVNPUlRBQkxFX01PRFVMRQotICAgIHN0YXRpYyBvaWQgICAgICByZWdbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTAsIDMsIDEsIDEgfTsKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHJlZywgMTAsICJUaGUgU05NUCBNYW5hZ2VtZW50IEFyY2hpdGVjdHVyZSBNSUIuIik7Ci0jZW5kaWYKKyAgICBvaWQgICAgICByZWdbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTAsIDMsIDEsIDEgfTsKKyAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWShyZWcsICJUaGUgU05NUCBNYW5hZ2VtZW50IEFyY2hpdGVjdHVyZSBNSUIuIik7CiAgICAgcmVnaXN0ZXJfc25tcEVuZ2luZV9zY2FsYXJzKCk7CiB9CiAKQEAgLTg1LDExICs4OSwxMSBAQAogICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKICAgICBzdGF0aWMgdW5zaWduZWQgY2hhciBlbmdpbmVJRFtTTk1QX01BWEJVRl07CiAKLSAgICAqd3JpdGVfbWV0aG9kID0gMDsgICAgICAgICAgLyogYXNzdW1lIGl0IGlzbnQgd3JpdGFibGUgZm9yIHRoZSB0aW1lIGJlaW5nICovCisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsgICAgLyogYXNzdW1lIGl0IGlzbnQgd3JpdGFibGUgZm9yIHRoZSB0aW1lIGJlaW5nICovCiAgICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZ19yZXQpOyAgICAgICAgLyogYXNzdW1lIGFuIGludGVnZXIgYW5kIGNoYW5nZSBsYXRlciBpZiBub3QgKi8KIAogICAgIGlmIChoZWFkZXJfZ2VuZXJpYyh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kKSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiB0aGlzIGlzIHdoZXJlIHdlIGRvIHRoZSB2YWx1ZSBhc3NpZ25tZW50cyBmb3IgdGhlIG1pYiByZXN1bHRzLiAKQEAgLTEyNSw3ICsxMjksNyBAQAogICAgICAgICBERUJVR01TR1RMKCgic25tcGQiLCAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3NubXBFbmdpbmVcbiIsCiAgICAgICAgICAgICAgICAgICAgIHZwLT5tYWdpYykpOwogICAgIH0KLSAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wRW5naW5lLmgKaW5kZXggMzQzZWVhYS4uYjYyYTIyMCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBFbmdpbmUuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcEVuZ2luZS5oCkBAIC0xMCwxMCArMTAsMTAgQEAKICNkZWZpbmUgX01JQkdST1VQX1NOTVBFTkdJTkVfSAogCiAvKgotICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGFuZCBjaGVja21pYiBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZSAKKyAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZQogICovCiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogY29uZmlnX2FkZF9taWIoU05NUC1GUkFNRVdPUkstTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYyBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuYwppbmRleCBjN2VmYmM4Li4zNzM0YWNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5jCkBAIC0xMCwxNyArMTAsMTkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmg+CiAKLSNpbmNsdWRlICJtaWJJSS9zeXNPUlRhYmxlLmgiCiAjaW5jbHVkZSAic25tcE1QRFN0YXRzLmgiCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKIAogCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBNUERTdGF0c192YXJpYWJsZXNbXSA9IHsKLSAgICB7U05NUFVOS05PV05TRUNVUklUWU1PREVMUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcE1QRFN0YXRzLCAxLAotICAgICB7MX19LAotICAgIHtTTk1QSU5WQUxJRE1TR1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3NubXBNUERTdGF0cywgMSwgezJ9fSwKLSAgICB7U05NUFVOS05PV05QRFVIQU5ETEVSUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfc25tcE1QRFN0YXRzLCAxLCB7M319LAorICAgIHtTTk1QVU5LTk9XTlNFQ1VSSVRZTU9ERUxTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wTVBEU3RhdHMsIDEsIHsxfX0sCisgICAge1NOTVBJTlZBTElETVNHUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfc25tcE1QRFN0YXRzLCAxLCB7Mn19LAorICAgIHtTTk1QVU5LTk9XTlBEVUhBTkRMRVJTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9zbm1wTVBEU3RhdHMsIDEsIHszfX0sCiB9OwogCiAvKgpAQCAtMzIsMTIgKzM0LDkgQEAKIHZvaWQKIGluaXRfc25tcE1QRFN0YXRzKHZvaWQpCiB7Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKICAgICBzdGF0aWMgb2lkICAgICAgcmVnW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDExLCAzLCAxLCAxIH07Ci0gICAgcmVnaXN0ZXJfc3lzT1JUYWJsZShyZWcsIDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBNSUIgZm9yIE1lc3NhZ2UgUHJvY2Vzc2luZyBhbmQgRGlzcGF0Y2hpbmcuIik7Ci0jZW5kaWYKLQorICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHJlZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIE1JQiBmb3IgTWVzc2FnZSBQcm9jZXNzaW5nIGFuZCBEaXNwYXRjaGluZy4iKTsKICAgICBSRUdJU1RFUl9NSUIoInNubXB2My9zbm1wTVBEU3RhdHMiLCBzbm1wTVBEU3RhdHNfdmFyaWFibGVzLCB2YXJpYWJsZTIsCiAgICAgICAgICAgICAgICAgIHNubXBNUERTdGF0c192YXJpYWJsZXNfb2lkKTsKIH0KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHMuaAppbmRleCBkMTdjMzcxLi40MWVhYjFkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3NubXBNUERTdGF0cy5oCkBAIC04LDEwICs4LDExIEBACiAjZGVmaW5lIF9NSUJHUk9VUF9TTk1QTVBEU1RBVFNfSAogCiAvKgotICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGFuZCBjaGVja21pYiBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZSAKKyAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBmcm9tIHRoZSB1dGlsX2Z1bmNzIG1vZHVsZSAKICAqLwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKK2NvbmZpZ19leGNsdWRlKHNubXB2My9zbm1wTVBEU3RhdHNfNV81KQogY29uZmlnX2FkZF9taWIoU05NUC1NUEQtTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmMgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhMmE5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5jCkBAIC0wLDAgKzEsNDcgQEAKKy8qCisgKiBzbm1wTVBEU3RhdHMuYzogdGFsbGllcyBlcnJvcnMgZm9yIFNOTVB2MyBtZXNzYWdlIHByb2Nlc3NpbmcuCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KKworI2luY2x1ZGUgInNubXBNUERTdGF0c181XzUuaCIKKworI2luY2x1ZGUgPHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaD4KKworI2RlZmluZSBzbm1wTVBETUlCIDEsIDMsIDYsIDEsIDYsIDMsIDExCisjZGVmaW5lIHNubXBNUERNSUJPYmplY3RzIHNubXBNUERNSUIsIDIKKyNkZWZpbmUgc25tcE1QRE1JQkNvbXBsaWFuY2VzIHNubXBNUERNSUIsIDMsIDEKKworc3RhdGljIG9pZCBzbm1wTVBEU3RhdHNbXSA9IHsgc25tcE1QRE1JQk9iamVjdHMsIDEgfTsKKworc3RhdGljIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIHNubXBNUERTdGF0c19yZWcgPSBOVUxMOworc3RhdGljIG9pZCBzbm1wTVBEQ29tcGxpYW5jZVtdID0geyBzbm1wTVBETUlCQ29tcGxpYW5jZXMsIDEgfTsKKwordm9pZAoraW5pdF9zbm1wTVBEU3RhdHNfNV81KHZvaWQpCit7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogcyA9CisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgInNubXBNUERTdGF0cyIsIE5VTEwsIHNubXBNUERTdGF0cywgT0lEX0xFTkdUSChzbm1wTVBEU3RhdHMpLAorICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpOworICAgIGlmIChzICYmCisJTkVUU05NUF9SRUdJU1RFUl9TVEFUSVNUSUNfSEFORExFUihzLCAxLCBNUEQpID09IE1JQl9SRUdJU1RFUkVEX09LKSB7CisgICAgICAgIFJFR0lTVEVSX1NZU09SX0VOVFJZKHNubXBNUERDb21wbGlhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIE1JQiBmb3IgTWVzc2FnZSBQcm9jZXNzaW5nIGFuZCBEaXNwYXRjaGluZy4iKTsKKyAgICAgICAgc25tcE1QRFN0YXRzX3JlZyA9IHM7CisgICAgfQorfQorCit2b2lkCitzaHV0ZG93bl9zbm1wTVBEU3RhdHNfNV81KHZvaWQpCit7CisgICAgVU5SRUdJU1RFUl9TWVNPUl9FTlRSWShzbm1wTVBEQ29tcGxpYW5jZSk7CisgICAgaWYgKHNubXBNUERTdGF0c19yZWcpIHsKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIoc25tcE1QRFN0YXRzX3JlZyk7CisgICAgICAgIHNubXBNUERTdGF0c19yZWcgPSBOVUxMOworICAgIH0KK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My9zbm1wTVBEU3RhdHNfNV81LmggYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZGEwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvc25tcE1QRFN0YXRzXzVfNS5oCkBAIC0wLDAgKzEsMTEgQEAKKyNpZm5kZWYgX01JQkdST1VQX1NOTVBNUERTVEFUU19ICisjZGVmaW5lIF9NSUJHUk9VUF9TTk1QTVBEU1RBVFNfSAorCitjb25maWdfcmVxdWlyZSh1dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljKQorY29uZmlnX2V4Y2x1ZGUoc25tcHYzL3NubXBNUERTdGF0cykKK2NvbmZpZ19hZGRfbWliKFNOTVAtTVBELU1JQikKKwordm9pZCBpbml0X3NubXBNUERTdGF0c181XzUodm9pZCk7Cit2b2lkIHNodXRkb3duX3NubXBNUERTdGF0c181XzUodm9pZCk7CisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfU05NUE1QRFNUQVRTX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKaW5kZXggZDgxZTEyNy4uNzQ1MWZlNiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzLmMKQEAgLTExLDE5ICsxMSwyNCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKLSNpbmNsdWRlICJtaWJJSS9zeXNPUlRhYmxlLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInVzbVN0YXRzLmgiCiAKIHN0cnVjdCB2YXJpYWJsZTIgdXNtU3RhdHNfdmFyaWFibGVzW10gPSB7Ci0gICAge1VTTVNUQVRTVU5TVVBQT1JURURTRUNMRVZFTFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLAotICAgICB7MX19LAotICAgIHtVU01TVEFUU05PVElOVElNRVdJTkRPV1MsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLCB7Mn19LAotICAgIHtVU01TVEFUU1VOS05PV05VU0VSTkFNRVMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLCB7M319LAotICAgIHtVU01TVEFUU1VOS05PV05FTkdJTkVJRFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX3VzbVN0YXRzLCAxLCB7NH19LAotICAgIHtVU01TVEFUU1dST05HRElHRVNUUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsIHs1fX0sCi0gICAge1VTTVNUQVRTREVDUllQVElPTkVSUk9SUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfdXNtU3RhdHMsIDEsIHs2fX0sCisgICAge1VTTVNUQVRTVU5TVVBQT1JURURTRUNMRVZFTFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7MX19LAorICAgIHtVU01TVEFUU05PVElOVElNRVdJTkRPV1MsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7Mn19LAorICAgIHtVU01TVEFUU1VOS05PV05VU0VSTkFNRVMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7M319LAorICAgIHtVU01TVEFUU1VOS05PV05FTkdJTkVJRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3VzbVN0YXRzLCAxLCB7NH19LAorICAgIHtVU01TVEFUU1dST05HRElHRVNUUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHs1fX0sCisgICAge1VTTVNUQVRTREVDUllQVElPTkVSUk9SUywgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtU3RhdHMsIDEsIHs2fX0sCiB9OwogCiAvKgpAQCAtMzUsMTIgKzQwLDEwIEBACiB2b2lkCiBpbml0X3VzbVN0YXRzKHZvaWQpCiB7Ci0jaWZkZWYgVVNJTkdfTUlCSUlfU1lTT1JUQUJMRV9NT0RVTEUKICAgICBzdGF0aWMgb2lkICAgICAgcmVnW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDE1LCAyLCAxLCAxIH07Ci0gICAgcmVnaXN0ZXJfc3lzT1JUYWJsZShyZWcsIDEwLAotICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgU05NUCBVc2VyLWJhc2VkIFNlY3VyaXR5IE1vZGVsLiIpOwotI2VuZGlmCi0KKyAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWShyZWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBtYW5hZ2VtZW50IGluZm9ybWF0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QIFVzZXItYmFzZWQgU2VjdXJpdHkgTW9kZWwuIik7CiAgICAgUkVHSVNURVJfTUlCKCJzbm1wdjMvdXNtU3RhdHMiLCB1c21TdGF0c192YXJpYWJsZXMsIHZhcmlhYmxlMiwKICAgICAgICAgICAgICAgICAgdXNtU3RhdHNfdmFyaWFibGVzX29pZCk7CiB9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oCmluZGV4IDcxODhlMWEuLjU2ODUzODEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0cy5oCkBAIC05LDEwICs5LDExIEBACiAjZGVmaW5lIF9NSUJHUk9VUF9VU01TVEFUU19ICiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAogICovCiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorY29uZmlnX2V4Y2x1ZGUoc25tcHYzL3VzbVN0YXRzXzVfNSkKIGNvbmZpZ19hZGRfbWliKFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIpCiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVN0YXRzXzVfNS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjNDhhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmMKQEAgLTAsMCArMSw0NyBAQAorLyoKKyAqIHVzbVN0YXRzLmM6IGltcGxlbWVudHMgdGhlIHVzbVN0YXRzIHBvcnRpb24gb2YgdGhlIFNOTVAtVVNFUi1CQVNFRC1TTS1NSUIKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgorCisjaW5jbHVkZSAidXNtU3RhdHNfNV81LmgiCisKKyNpbmNsdWRlIDx1dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmg+CisKKyNkZWZpbmUgc25tcFVzbU1JQiAxLCAzLCA2LCAxLCA2LCAzLCAxNQorI2RlZmluZSB1c21NSUJDb21wbGlhbmNlcyBzbm1wVXNtTUlCLCAyLCAxCisKK3N0YXRpYyBvaWQgdXNtU3RhdHNbXSA9IHsgc25tcFVzbU1JQiwgMSwgMSB9OworCitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiogdXNtU3RhdHNfcmVnID0gTlVMTDsKK3N0YXRpYyBvaWQgdXNtTUlCQ29tcGxpYW5jZVtdID0geyB1c21NSUJDb21wbGlhbmNlcywgMSB9OworCit2b2lkCitpbml0X3VzbVN0YXRzXzVfNSh2b2lkKQoreworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24qIHMgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKKyAgICAgICAgICAgICJ1c21TdGF0cyIsIE5VTEwsIHVzbVN0YXRzLCBPSURfTEVOR1RIKHVzbVN0YXRzKSwKKyAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKKyAgICBpZiAocyAmJgorCU5FVFNOTVBfUkVHSVNURVJfU1RBVElTVElDX0hBTkRMRVIocywgMSwgVVNNKSA9PSBNSUJfUkVHSVNURVJFRF9PSykgeworICAgICAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWSh1c21NSUJDb21wbGlhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZGVmaW5pdGlvbnMgZm9yIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QIFVzZXItYmFzZWQgU2VjdXJpdHkgTW9kZWwuIik7CisgICAgICAgIHVzbVN0YXRzX3JlZyA9IHM7CisgICAgfQorfQorCit2b2lkCitzaHV0ZG93bl91c21TdGF0c181XzUodm9pZCkKK3sKKyAgICBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHVzbU1JQkNvbXBsaWFuY2UpOworICAgIGlmICh1c21TdGF0c19yZWcpIHsKKyAgICAgICAgbmV0c25tcF91bnJlZ2lzdGVyX2hhbmRsZXIodXNtU3RhdHNfcmVnKTsKKyAgICAgICAgdXNtU3RhdHNfcmVnID0gTlVMTDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmggYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtU3RhdHNfNV81LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZjOWY3NgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21TdGF0c181XzUuaApAQCAtMCwwICsxLDExIEBACisjaWZuZGVmIF9NSUJHUk9VUF9VU01TVEFUU19ICisjZGVmaW5lIF9NSUJHUk9VUF9VU01TVEFUU19ICisKK2NvbmZpZ19yZXF1aXJlKHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMpCitjb25maWdfZXhjbHVkZShzbm1wdjMvdXNtU3RhdHMpCitjb25maWdfYWRkX21pYihTTk1QLVVTRVItQkFTRUQtU00tTUlCKQorCit2b2lkIGluaXRfdXNtU3RhdHNfNV81KHZvaWQpOwordm9pZCBzaHV0ZG93bl91c21TdGF0c181XzUodm9pZCk7CisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfVVNNU1RBVFNfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYyBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmMKaW5kZXggMGViMGRhYy4uMjY2YTYzYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuYworKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5jCkBAIC0xOCwzMCArMTgsMzYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInVzbVVzZXIuaCIKIAogaW50IHVzbVN0YXR1c0NoZWNrKHN0cnVjdCB1c21Vc2VyICp1cHRyKTsKIAogc3RydWN0IHZhcmlhYmxlNCB1c21Vc2VyX3ZhcmlhYmxlc1tdID0gewotICAgIHtVU01VU0VSU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAxLCB7MX19LAotICAgIHtVU01VU0VSU0VDVVJJVFlOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAzfX0sCi0gICAge1VTTVVTRVJDTE9ORUZST00sIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCA0fX0sCi0gICAge1VTTVVTRVJBVVRIUFJPVE9DT0wsIEFTTl9PQkpFQ1RfSUQsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsCi0gICAgIHsyLCAxLCA1fX0sCi0gICAge1VTTVVTRVJBVVRIS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLAotICAgICB7MiwgMSwgNn19LAotICAgIHtVU01VU0VST1dOQVVUSEtFWUNIQU5HRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywKLSAgICAgezIsIDEsIDd9fSwKLSAgICB7VVNNVVNFUlBSSVZQUk9UT0NPTCwgQVNOX09CSkVDVF9JRCwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywKLSAgICAgezIsIDEsIDh9fSwKLSAgICB7VVNNVVNFUlBSSVZLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsCi0gICAgIHsyLCAxLCA5fX0sCi0gICAge1VTTVVTRVJPV05QUklWS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl91c21Vc2VyLCAzLAotICAgICB7MiwgMSwgMTB9fSwKLSAgICB7VVNNVVNFUlBVQkxJQywgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywgezIsIDEsIDExfX0sCi0gICAge1VTTVVTRVJTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAxMn19LAotICAgIHtVU01VU0VSU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdXNtVXNlciwgMywgezIsIDEsIDEzfX0sCisgICAge1VTTVVTRVJTUElOTE9DSywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDEsIHsxfX0sCisgICAge1VTTVVTRVJTRUNVUklUWU5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDN9fSwKKyAgICB7VVNNVVNFUkNMT05FRlJPTSwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDR9fSwKKyAgICB7VVNNVVNFUkFVVEhQUk9UT0NPTCwgQVNOX09CSkVDVF9JRCwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDV9fSwKKyAgICB7VVNNVVNFUkFVVEhLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCA2fX0sCisgICAge1VTTVVTRVJPV05BVVRIS0VZQ0hBTkdFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgN319LAorICAgIHtVU01VU0VSUFJJVlBST1RPQ09MLCBBU05fT0JKRUNUX0lELCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgOH19LAorICAgIHtVU01VU0VSUFJJVktFWUNIQU5HRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDl9fSwKKyAgICB7VVNNVVNFUk9XTlBSSVZLRVlDSEFOR0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3VzbVVzZXIsIDMsIHsyLCAxLCAxMH19LAorICAgIHtVU01VU0VSUFVCTElDLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgMTF9fSwKKyAgICB7VVNNVVNFUlNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfdXNtVXNlciwgMywgezIsIDEsIDEyfX0sCisgICAge1VTTVVTRVJTVEFUVVMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl91c21Vc2VyLCAzLCB7MiwgMSwgMTN9fSwKIAogfTsKIApAQCAtMzAxLDcgKzMwNyw3IEBACiAgICAgaWYgKCF2cCB8fCAhbmFtZSB8fCAhbGVuZ3RoIHx8ICF2YXJfbGVuKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICp3cml0ZV9tZXRob2QgPSAwOyAgICAgICAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KKyAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOyAgICAvKiBhc3N1bWUgaXQgaXNudCB3cml0YWJsZSBmb3IgdGhlIHRpbWUgYmVpbmcgKi8KICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7ICAgICAgICAvKiBhc3N1bWUgYW4gaW50ZWdlciBhbmQgY2hhbmdlIGxhdGVyIGlmIG5vdCAqLwogCiAgICAgaWYgKHZwLT5tYWdpYyAhPSBVU01VU0VSU1BJTkxPQ0spIHsKQEAgLTMxNSw3ICszMjEsNyBAQAogICAgICAgICAgICAgKGV4YWN0ID09IDEgJiYgcnRlc3QgIT0gMCkpIHsKICAgICAgICAgICAgIGlmICh2YXJfbGVuKQogICAgICAgICAgICAgICAgICp2YXJfbGVuID0gMDsKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICAgICAgbWVtc2V0KG5ld25hbWUsIDAsIHNpemVvZihuZXduYW1lKSk7CiAgICAgICAgIGlmICgoKGludCkgKmxlbmd0aCkgPD0gKGludCkgdnAtPm5hbWVsZW4gfHwgcnRlc3QgPT0gLTEpIHsKQEAgLTM4NCw3ICszOTAsNyBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKGhlYWRlcl9nZW5lcmljKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QpKQotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kaWYgLS0gdnAtPm1hZ2ljICE9IFVTTVVTRVJTUElOTE9DSyAqLwogCiAgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKQEAgLTQ1OCw3ICs0NjQsNyBAQAogICAgICAgICAqd3JpdGVfbWV0aG9kID0gd3JpdGVfdXNtVXNlclB1YmxpYzsKICAgICAgICAgaWYgKHVwdHIpIHsKICAgICAgICAgICAgIGlmICh1cHRyLT51c2VyUHVibGljU3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oKGNoYXIgKikgdXB0ci0+dXNlclB1YmxpY1N0cmluZyk7CisgICAgICAgICAgICAgICAgKnZhcl9sZW4gPSB1cHRyLT51c2VyUHVibGljU3RyaW5nTGVuOwogICAgICAgICAgICAgICAgIHJldHVybiB1cHRyLT51c2VyUHVibGljU3RyaW5nOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKnN0cmluZyA9IDA7CkBAIC00ODgsNyArNDk0LDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBkIiwgInVua25vd24gc3ViLWlkICVkIGluIHZhcl91c21Vc2VyXG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE5VTEw7CiAKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHZhcl91c21Vc2VyKCkgKi8KIApAQCAtMTE3NywxNCArMTE4MywxNSBAQAogICAgICAgICB9CiAgICAgICAgIGlmICh1cHRyLT51c2VyUHVibGljU3RyaW5nKQogICAgICAgICAgICAgZnJlZSh1cHRyLT51c2VyUHVibGljU3RyaW5nKTsKLSAgICAgICAgdXB0ci0+dXNlclB1YmxpY1N0cmluZyA9ICh1X2NoYXIgKikgbWFsbG9jKHZhcl92YWxfbGVuICsgMSk7CisgICAgICAgIHVwdHItPnVzZXJQdWJsaWNTdHJpbmcgPSAodV9jaGFyICopIG1hbGxvYyh2YXJfdmFsX2xlbik7CiAgICAgICAgIGlmICh1cHRyLT51c2VyUHVibGljU3RyaW5nID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CiAgICAgICAgIH0KICAgICAgICAgbWVtY3B5KHVwdHItPnVzZXJQdWJsaWNTdHJpbmcsIHZhcl92YWwsIHZhcl92YWxfbGVuKTsKLSAgICAgICAgdXB0ci0+dXNlclB1YmxpY1N0cmluZ1t2YXJfdmFsX2xlbl0gPSAwOwotICAgICAgICBERUJVR01TRygoInVzbVVzZXIiLCAic2V0dGluZyBwdWJsaWMgc3RyaW5nOiAlZCAtICVzXG4iLAotICAgICAgICAgICAgICAgICAgdmFyX3ZhbF9sZW4sIHVwdHItPnVzZXJQdWJsaWNTdHJpbmcpKTsKKyAgICAgICAgdXB0ci0+dXNlclB1YmxpY1N0cmluZ0xlbiA9IHZhcl92YWxfbGVuOworICAgICAgICBERUJVR01TRygoInVzbVVzZXIiLCAic2V0dGluZyBwdWJsaWMgc3RyaW5nOiAlZCAtICIsIChpbnQpdmFyX3ZhbF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0dIRVgoKCJ1c21Vc2VyIiwgdXB0ci0+dXNlclB1YmxpY1N0cmluZywgdmFyX3ZhbF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0coKCJ1c21Vc2VyIiwgIlxuIikpOwogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHdyaXRlX3VzbVVzZXJQdWJsaWMoKSAqLwpAQCAtMTI0MSw3ICsxMjQ4LDcgQEAKICAgICAgICAgICAgICAqIENvbnZlbnRpb24gYXBwbHkuICAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVzbVVzZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAgImxvbmdfcmV0ICVkIHVwdHItPnN0ICVkIHVwdHItPnN0YXR1cyAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsb25nX3JldCAlbGQgdXB0ci0+c3QgJWQgdXB0ci0+c3RhdHVzICVkXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19yZXQsIHVwdHItPnVzZXJTdG9yYWdlVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIHVwdHItPnVzZXJTdGF0dXMpKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2My91c21Vc2VyLmgKaW5kZXggZTkyMGIyMC4uMmFmZWNiNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvc25tcHYzL3VzbVVzZXIuaAorKysgYi9hZ2VudC9taWJncm91cC9zbm1wdjMvdXNtVXNlci5oCkBAIC0xNSwxMCArMTUsMTAgQEAKICNkZWZpbmUgVVNNX0xFTkdUSF9PSURfTUFYCTY2CiAKIC8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAorICogd2UgdXNlIGhlYWRlcl9nZW5lcmljIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlCiAgKi8KIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiBjb25maWdfYWRkX21pYihTTk1QLVVTRVItQkFTRUQtU00tTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaCBiL2FnZW50L21pYmdyb3VwL3NubXB2M21pYnMuaAppbmRleCA2MGY2NjZkLi44ZTVhMDE1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC9zbm1wdjNtaWJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvc25tcHYzbWlicy5oCkBAIC03LDggKzcsOCBAQAogICovCiAKIGNvbmZpZ19yZXF1aXJlKHNubXB2My9zbm1wRW5naW5lKQotY29uZmlnX3JlcXVpcmUoc25tcHYzL3NubXBNUERTdGF0cykKLWNvbmZpZ19yZXF1aXJlKHNubXB2My91c21TdGF0cykKK2NvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKHNubXB2My9zbm1wTVBEU3RhdHMsIDUuNSwgc25tcHYzL3NubXBNUERTdGF0c181XzUpKQorY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoc25tcHYzL3VzbVN0YXRzLCA1LjUsIHNubXB2My91c21TdGF0c181XzUpKQogY29uZmlnX3JlcXVpcmUoc25tcHYzL3VzbUNvbmYpCiBjb25maWdfcmVxdWlyZShzbm1wdjMvdXNtVXNlcikKICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogTlNNUFYzTUlCU19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC9zdHJ1Y3QuaCBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCmluZGV4IDEwYjg0M2QuLmMzM2M5NmIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3N0cnVjdC5oCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgdW5zaWduZWQgbG9uZyAgIG1pYm9pZFtNSUJNQVhdOwogICAgIHNpemVfdCAgICAgICAgICBtaWJsZW47CiAgICAgaW50ICAgICAgICAgICAgIHBpZDsKLSNpZiBkZWZpbmVkKFdJTjMyKQorI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkIChtaW5ndzMyKQogICAgIEhBTkRMRSAgICAgICAgICB0aWQ7ICAgICAgICAgICAgICAgIC8qIFdJTjMyIHRocmVhZCAqLwogI2VuZGlmCiB9OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0LmggYi9hZ2VudC9taWJncm91cC90YXJnZXQuaAppbmRleCAzOWZhZGZlLi41OGM1YjRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQuaApAQCAtMSw1ICsxLDUgQEAKIGNvbmZpZ19yZXF1aXJlKHRhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5KQogY29uZmlnX3JlcXVpcmUodGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeSkKIGNvbmZpZ19yZXF1aXJlKHRhcmdldC90YXJnZXQpCi1jb25maWdfcmVxdWlyZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQorY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgodGFyZ2V0L3RhcmdldF9jb3VudGVycywgNS41LCB0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNSkpCiBjb25maWdfYWRkX21pYihTTk1QLVRBUkdFVC1NSUIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuYwppbmRleCBiYjczMDJkLi41MmY3N2I0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmMKQEAgLTIzLDcgKzIzLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAic25tcFRhcmdldEFkZHJFbnRyeS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKICNkZWZpbmUgc25tcFRhcmdldEFkZHJPSURMZW4gMTEgLypUaGlzIGlzIGJhc2UrY29sdW1uLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaS5lLiBldmVyeXRoaW5nIGJ1dCBpbmRleCAqLwpAQCAtMzIsNyArMzIsNyBAQAogICAgIHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEsIDIsIDEsIDAgfTsKIAogc3RhdGljIHVuc2lnbmVkIGxvbmcgc25tcFRhcmdldFNwaW5Mb2NrID0gMDsKLXN0YXRpYyBzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqYUFkZHJUYWJsZSA9IDA7CitzdGF0aWMgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKmFBZGRyVGFibGUgPSBOVUxMOwogCiAKIC8qCkBAIC02NywyMSArNjcsMjEgQEAKICAgICBuZXdFbnRyeSA9IG1hbGxvYyhzaXplb2YoKm5ld0VudHJ5KSk7CiAKICAgICBpZiAobmV3RW50cnkpIHsKLSAgICAgICAgbmV3RW50cnktPm5hbWUgPSAwOworICAgICAgICBuZXdFbnRyeS0+bmFtZSA9IE5VTEw7CiAKICAgICAgICAgbmV3RW50cnktPnREb21haW5MZW4gPSAwOwotICAgICAgICBuZXdFbnRyeS0+dEFkZHJlc3MgPSAwOworICAgICAgICBuZXdFbnRyeS0+dEFkZHJlc3MgPSBOVUxMOwogCiAgICAgICAgIG5ld0VudHJ5LT50aW1lb3V0ID0gMTUwMDsKICAgICAgICAgbmV3RW50cnktPnJldHJ5Q291bnQgPSAzOwogCiAgICAgICAgIG5ld0VudHJ5LT50YWdMaXN0ID0gc3RyZHVwKCIiKTsKLSAgICAgICAgbmV3RW50cnktPnBhcmFtcyA9IDA7CisgICAgICAgIG5ld0VudHJ5LT5wYXJhbXMgPSBOVUxMOwogCiAgICAgICAgIG5ld0VudHJ5LT5zdG9yYWdlVHlwZSA9IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRTsKICAgICAgICAgbmV3RW50cnktPnJvd1N0YXR1cyA9IFNOTVBfUk9XX05PTkVYSVNURU5UOwogICAgICAgICBuZXdFbnRyeS0+c2VzcyA9IE5VTEw7Ci0gICAgICAgIG5ld0VudHJ5LT5uZXh0ID0gMDsKKyAgICAgICAgbmV3RW50cnktPm5leHQgPSBOVUxMOwogICAgIH0KIAogICAgIHJldHVybiBuZXdFbnRyeTsKQEAgLTE5NywxNCArMTk3LDE0IEBACiB7CiAgICAgc3RydWN0IHRhcmdldEFkZHJUYWJsZV9zdHJ1Y3QgKnRwdHI7CiAKLSAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gMCkKKyAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGVsc2UgaWYgKHRwdHIgPT0gb2xkRW50cnkpIHsKICAgICAgICAgKmxpc3RQdHIgPSAoKmxpc3RQdHIpLT5uZXh0OwogICAgICAgICBzbm1wVGFyZ2V0QWRkclRhYmxlX2Rpc3Bvc2UodHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9IGVsc2UgewotICAgICAgICB3aGlsZSAodHB0ci0+bmV4dCAhPSAwKSB7CisgICAgICAgIHdoaWxlICh0cHRyLT5uZXh0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICh0cHRyLT5uZXh0ID09IG9sZEVudHJ5KSB7CiAgICAgICAgICAgICAgICAgdHB0ci0+bmV4dCA9IHRwdHItPm5leHQtPm5leHQ7CiAgICAgICAgICAgICAgICAgc25tcFRhcmdldEFkZHJUYWJsZV9kaXNwb3NlKG9sZEVudHJ5KTsKQEAgLTIzNCw3ICsyMzQsNyBAQAogICAgICAqLwogICAgIG1lbWNweShuZXdOdW0sIGJhc2VOYW1lLCBiYXNlTmFtZUxlbiAqIHNpemVvZihvaWQpKTsKIAotICAgIGZvciAodGVtcF9zdHJ1Y3QgPSBhQWRkclRhYmxlOyB0ZW1wX3N0cnVjdCAhPSAwOworICAgIGZvciAodGVtcF9zdHJ1Y3QgPSBhQWRkclRhYmxlOyB0ZW1wX3N0cnVjdCAhPSBOVUxMOwogICAgICAgICAgdGVtcF9zdHJ1Y3QgPSB0ZW1wX3N0cnVjdC0+bmV4dCkgewogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgc3RybGVuKHRlbXBfc3RydWN0LT5uYW1lKTsgaSsrKSB7CiAgICAgICAgICAgICBuZXdOdW1bYmFzZU5hbWVMZW4gKyBpXSA9IHRlbXBfc3RydWN0LT5uYW1lW2ldOwpAQCAtMjUyLDcgKzI1Miw3IEBACiAgICAgICAgICAgICByZXR1cm4gdGVtcF9zdHJ1Y3Q7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuICgwKTsKKyAgICByZXR1cm4gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VhcmNoX3NubXBUYXJnZXRBZGRyVGFibGUgICovCiAKIApAQCAtMjc4LDI3ICsyNzgsMjggQEAKICAqLwogCiBzdHJ1Y3QgdmFyaWFibGUyIHNubXBUYXJnZXRBZGRyRW50cnlfdmFyaWFibGVzW10gPSB7Ci0gICAge1NOTVBUQVJHRVRBRERSVERPTUFJTiwgQVNOX09CSkVDVF9JRCwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlRET01BSU4sIEFTTl9PQkpFQ1RfSUQsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRET01BSU5DT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJUQUREUkVTUywgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlRBRERSRVNTLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5LCAxLCB7U05NUFRBUkdFVEFERFJUQUREUkVTU0NPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlRJTUVPVVQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSVElNRU9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRJTUVPVVRDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJSRVRSWUNPVU5ULCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlJFVFJZQ09VTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5LCAxLCB7U05NUFRBUkdFVEFERFJSRVRSWUNPVU5UQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRBRERSVEFHTElTVCwgQVNOX09DVEVUX1NUUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlRBR0xJU1QsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlRBR0xJU1RDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJQQVJBTVMsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVEFERFJQQVJBTVMsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRBZGRyRW50cnksIDEsIHtTTk1QVEFSR0VUQUREUlBBUkFNU0NPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUQUREUlNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUQUREUlNUT1JBR0VUWVBFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSU1RPUkFHRVRZUEVDT0xVTU59fSwKLSAgICB7U05NUFRBUkdFVEFERFJST1dTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRBRERSUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldEFkZHJFbnRyeSwgMSwge1NOTVBUQVJHRVRBRERSUk9XU1RBVFVTQ09MVU1OfX0sCiAKIH07CiAKIHN0cnVjdCB2YXJpYWJsZTIgc25tcFRhcmdldFNwaW5Mb2NrX3ZhcltdID0gewotICAgIHtTTk1QVEFSR0VUU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl90YXJnZXRTcGluTG9jaywgMSwgezF9fQorICAgIHtTTk1QVEFSR0VUU1BJTkxPQ0ssIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90YXJnZXRTcGluTG9jaywgMSwgezF9fQogfTsKIAogc3RhdGljIG9pZCAgICAgIHNubXBUYXJnZXRTcGluTG9ja19vaWRbXSA9IHsgMSwgMywgNiwgMSwgNiwgMywgMTIsIDEgfTsKQEAgLTMxMyw3ICszMTQsNyBAQAogdm9pZAogaW5pdF9zbm1wVGFyZ2V0QWRkckVudHJ5KHZvaWQpCiB7Ci0gICAgYUFkZHJUYWJsZSA9IDA7CisgICAgYUFkZHJUYWJsZSA9IE5VTEw7CiAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLCAiaW5pdFxuIikpOwogICAgIFJFR0lTVEVSX01JQigidGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkckVudHJ5X3ZhcmlhYmxlcywgdmFyaWFibGUyLApAQCAtMzIyLDcgKzMyMyw4IEBACiAgICAgICAgICAgICAgICAgIHZhcmlhYmxlMiwgc25tcFRhcmdldFNwaW5Mb2NrX29pZCk7CiAKICAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigidGFyZ2V0QWRkciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldEFkZHIsIDAsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXRBZGRyLAorCQkJCSAgKHZvaWQgKCopKHZvaWQpKTAsIE5VTEwpOwogCiAgICAgLyoKICAgICAgKiB3ZSBuZWVkIHRvIGJlIGNhbGxlZCBiYWNrIGxhdGVyIApAQCAtMzM3LDcgKzMzOSw3IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGROYW1lKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKIHsKICAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIG5hbWUgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzYyLDcgKzM2NCw3IEBACiB7CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbiA9IDEyODsKIAotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIHREb21haW4gaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzkyLDcgKzM5NCw3IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGRUQWRkcmVzcyhzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyLCBzaXplX3QgbGVuKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IG5vIHRBZGRyZXNzIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQxOCw3ICs0MjAsNyBAQAogaW50CiBzbm1wVGFyZ2V0QWRkcl9hZGRUaW1lb3V0KHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIFRpbWVvdXQgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNDQzLDcgKzQ0NSw3IEBACiBzbm1wVGFyZ2V0QWRkcl9hZGRSZXRyeUNvdW50KHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIFJldHJ5IENvdW50IGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQ3MSw3ICs0NzMsNyBAQAogc25tcFRhcmdldEFkZHJfYWRkVGFnTGlzdChzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZW50cnksIGNoYXIgKmNwdHIpCiB7CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbjsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyB0YWcgbGlzdCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC00OTYsNyArNDk4LDcgQEAKIHNubXBUYXJnZXRBZGRyX2FkZFBhcmFtcyhzdHJ1Y3QgdGFyZ2V0QWRkclRhYmxlX3N0cnVjdCAqZW50cnksIGNoYXIgKmNwdHIpCiB7CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbjsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBwYXJhbXMgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNTIwLDE1ICs1MjIsMTUgQEAKIHNubXBUYXJnZXRBZGRyX2FkZFN0b3JhZ2VUeXBlKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgY2hhciAgICAgICAgICAgIGJ1ZmZbMTAyNF07Ci0KLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCi0gICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBzdG9yYWdlIHR5cGUgaW4gY29uZmlnIHN0cmluZ1xuIikpOworICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gc3RvcmFnZSB0eXBlIGluIGNvbmZpZyAiCisgICAgICAgICAgICAgICAgICAgICJzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKICAgICB9IGVsc2UgaWYgKCEoaXNkaWdpdCgqY3B0cikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKLSAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IHN0b3JhZ2UgdHlwZSBpcyBub3QgYSBkaWdpdCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBzdG9yYWdlIHR5cGUgaXMgbm90IGEgZGlnaXQgIgorICAgICAgICAgICAgICAgICAgICAiaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwogICAgIH0KICAgICAvKgpAQCAtNTQwLDE0ICs1NDIsMTMgQEAKICAgICAgICAgICAgICAoZW50cnktPnN0b3JhZ2VUeXBlICE9IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSkgJiYKICAgICAgICAgICAgICAoZW50cnktPnN0b3JhZ2VUeXBlICE9IFNOTVBfU1RPUkFHRV9QRVJNQU5FTlQpICYmCiAgICAgICAgICAgICAgKGVudHJ5LT5zdG9yYWdlVHlwZSAhPSBTTk1QX1NUT1JBR0VfUkVBRE9OTFkpKSB7Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmYsIHNpemVvZihidWZmKSwKLSAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogc3RvcmFnZSB0eXBlIG5vdCBhIHZhbGlkIHZhbHVlIG9mIG90aGVyKCVkKSwgdm9sYXRpbGUoJWQpLCBub252b2xhdGlsZSglZCksIHBlcm1hbmVudCglZCksIG9yIHJlYWRvbmx5KCVkKSBpbiBjb25maWcgc3RyaW5nLlxuIiwKLSAgICAgICAgICAgICAgICBTTk1QX1NUT1JBR0VfT1RIRVIsIFNOTVBfU1RPUkFHRV9WT0xBVElMRSwKLSAgICAgICAgICAgICAgICBTTk1QX1NUT1JBR0VfTk9OVk9MQVRJTEUsIFNOTVBfU1RPUkFHRV9QRVJNQU5FTlQsCi0gICAgICAgICAgICAgICAgU05NUF9TVE9SQUdFX1JFQURPTkxZKTsKLSAgICAgICAgYnVmZlsgc2l6ZW9mKGJ1ZmYpLTEgXSA9IDA7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwgYnVmZikpOwotCisJREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAorICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogc3RvcmFnZSB0eXBlIG5vdCBhIHZhbGlkICIKKyAgICAgICAgICAgICAgICAgICAgInZhbHVlIG9mIG90aGVyKCVkKSwgdm9sYXRpbGUoJWQpLCBub252b2xhdGlsZSglZCksICIKKyAgICAgICAgICAgICAgICAgICAgInBlcm1hbmVudCglZCksIG9yIHJlYWRvbmx5KCVkKSBpbiBjb25maWcgc3RyaW5nLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgU05NUF9TVE9SQUdFX09USEVSLCBTTk1QX1NUT1JBR0VfVk9MQVRJTEUsCisgICAgICAgICAgICAgICAgICAgIFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSwgU05NUF9TVE9SQUdFX1BFUk1BTkVOVCwKKyAgICAgICAgICAgICAgICAgICAgU05NUF9TVE9SQUdFX1JFQURPTkxZKSk7CiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogICAgIHJldHVybiAoMSk7CkBAIC01NTgsMTUgKzU1OSwxNSBAQAogc25tcFRhcmdldEFkZHJfYWRkUm93U3RhdHVzKHN0cnVjdCB0YXJnZXRBZGRyVGFibGVfc3RydWN0ICplbnRyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICBidWZmWzEwMjRdOwotCi0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogbm8gUm93IFN0YXR1cyBpbiBjb25maWcgc3RyaW5nXG4iKSk7CisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBubyBSb3cgU3RhdHVzIGluIGNvbmZpZyAiCisgICAgICAgICAgICAgICAgICAgICJzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKICAgICB9IGVsc2UgaWYgKCEoaXNkaWdpdCgqY3B0cikpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0QWRkckVudHJ5IiwKLSAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IFJvdyBTdGF0dXMgaXMgbm90IGEgZGlnaXQgaW4gY29uZmlnIHN0cmluZ1xuIikpOworICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldEFkZHJFbnRyeTogUm93IFN0YXR1cyBpcyBub3QgYSBkaWdpdCBpbiAiCisgICAgICAgICAgICAgICAgICAgICJjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogICAgIC8qCkBAIC01NzYsMTIgKzU3NywxMSBAQAogICAgICAgICAgICAgICAhPSBTTk1QX1JPV19BQ1RJVkUpICYmCiAgICAgICAgICAgICAgKGVudHJ5LT5yb3dTdGF0dXMgIT0gU05NUF9ST1dfTk9USU5TRVJWSUNFKSAmJgogICAgICAgICAgICAgIChlbnRyeS0+cm93U3RhdHVzICE9IFNOTVBfUk9XX05PVFJFQURZKSkgewotICAgICAgICBzbnByaW50ZihidWZmLCBzaXplb2YoYnVmZiksCi0gICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRBZGRyRW50cnk6IFJvdyBTdGF0dXMgaXMgbm90IGEgdmFsaWQgdmFsdWUgb2YgYWN0aXZlKCVkKSwgbm90aW5zZXJ2aWNlKCVkKSwgb3Igbm90cmVhZHkoJWQpIGluIGNvbmZpZyBzdHJpbmcuXG4iLAotICAgICAgICAgICAgICAgIFNOTVBfUk9XX0FDVElWRSwgU05NUF9ST1dfTk9USU5TRVJWSUNFLCBTTk1QX1JPV19OT1RSRUFEWSk7Ci0gICAgICAgIGJ1ZmZbIHNpemVvZihidWZmKS0xIF0gPSAwOwotICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsIGJ1ZmYpKTsKLQorICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCisgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0QWRkckVudHJ5OiBSb3cgU3RhdHVzIGlzIG5vdCBhIHZhbGlkICIKKyAgICAgICAgICAgICAgICAgICAgInZhbHVlIG9mIGFjdGl2ZSglZCksIG5vdGluc2VydmljZSglZCksIG9yIG5vdHJlYWR5KCVkKSAiCisgICAgICAgICAgICAgICAgICAgICJpbiBjb25maWcgc3RyaW5nLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgU05NUF9ST1dfQUNUSVZFLCBTTk1QX1JPV19OT1RJTlNFUlZJQ0UsIFNOTVBfUk9XX05PVFJFQURZKSk7CiAgICAgICAgIHJldHVybiAoMCk7CiAgICAgfQogICAgIHJldHVybiAoMSk7CkBAIC02NjEsNyArNjYxLDcgQEAKICAgICAgICAgICAgIG5ld0VudHJ5LT50YWdMaXN0LCBuZXdFbnRyeS0+cGFyYW1zLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCiAgICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKICAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKLSAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsIGJ1ZmYpKTsKKyAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsICIlcyIsIGJ1ZmYpKTsKIAogICAgIHNubXBUYXJnZXRBZGRyVGFibGVfYWRkVG9MaXN0KG5ld0VudHJ5LCAmYUFkZHJUYWJsZSk7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNubXBkX3BhcnNlX2NvbmZpZ190YXJnZXQgKi8KQEAgLTY4NSw4ICs2ODUsOCBAQAogICAgIGNoYXIgICAgICAgICAgICBsaW5lWzEwMjRdOwogICAgIGludCAgICAgICAgICAgICBpOwogCi0gICAgaWYgKChjdXJyX3N0cnVjdCA9IGFBZGRyVGFibGUpICE9IDApIHsKLSAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IDApIHsKKyAgICBpZiAoKGN1cnJfc3RydWN0ID0gYUFkZHJUYWJsZSkgIT0gTlVMTCkgeworICAgICAgICB3aGlsZSAoY3Vycl9zdHJ1Y3QgIT0gTlVMTCkgewogICAgICAgICAgICAgaWYgKChjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFIHx8CiAgICAgICAgICAgICAgICAgIGN1cnJfc3RydWN0LT5zdG9yYWdlVHlwZSA9PSBTTk1QX1NUT1JBR0VfUEVSTUFORU5UKQogICAgICAgICAgICAgICAgICYmCkBAIC03OTIsOCArNzkyLDggQEAKICAgICAgKi8KICAgICBpZiAoKHRlbXBfc3RydWN0ID0gc2VhcmNoX3NubXBUYXJnZXRBZGRyVGFibGUodnAtPm5hbWUsIHZwLT5uYW1lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBsZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4YWN0KSkgPT0gMCkgewotICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyoKQEAgLTgwNSw3ICs4MDUsNyBAQAogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRET01BSU46CiAgICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+dERvbWFpbkxlbiA8PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgdGVtcF9zdHJ1Y3QtPnREb21haW5MZW47IGkrKykgewogICAgICAgICAgICAgICAgIG9iamlkW2ldID0gdGVtcF9zdHJ1Y3QtPnREb21haW5baV07CkBAIC04MTUsOCArODE1LDggQEAKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopIG9iamlkOwogCiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRBRERSRVNTOgotICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnRBZGRyZXNzID09IDApCi0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnRBZGRyZXNzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgKnZhcl9sZW4gPSB0ZW1wX3N0cnVjdC0+dEFkZHJlc3NMZW47CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSB0ZW1wX3N0cnVjdC0+dEFkZHJlc3M7CiAKQEAgLTgzMCw3ICs4MzAsNyBAQAogCiAgICAgY2FzZSBTTk1QVEFSR0VUQUREUlRBR0xJU1Q6CiAgICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+dGFnTGlzdCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBzdHJjcHkoc3RyaW5nLCB0ZW1wX3N0cnVjdC0+dGFnTGlzdCk7CisgICAgICAgICAgICBzdHJsY3B5KHN0cmluZywgdGVtcF9zdHJ1Y3QtPnRhZ0xpc3QsIHNpemVvZihzdHJpbmcpKTsKICAgICAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN0cmluZyk7CiAgICAgICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgc3RyaW5nOwogICAgICAgICB9IGVsc2UgewpAQCAtODM4LDkgKzgzOCw5IEBACiAgICAgICAgIH0KIAogICAgIGNhc2UgU05NUFRBUkdFVEFERFJQQVJBTVM6Ci0gICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+cGFyYW1zID09IDApCi0gICAgICAgICAgICByZXR1cm4gKDApOwotICAgICAgICBzdHJjcHkoc3RyaW5nLCB0ZW1wX3N0cnVjdC0+cGFyYW1zKTsKKyAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5wYXJhbXMgPT0gTlVMTCkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICBzdHJsY3B5KHN0cmluZywgdGVtcF9zdHJ1Y3QtPnBhcmFtcywgc2l6ZW9mKHN0cmluZykpOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihzdHJpbmcpOwogICAgICAgICByZXR1cm4gKHVuc2lnbmVkIGNoYXIgKikgc3RyaW5nOwogCkBAIC04NTcsNyArODU3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgInVua25vd24gc3ViLWlkICVkIGluIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5XG4iLAogICAgICAgICAgICAgICAgICAgICB2cC0+bWFnaWMpKTsKICAgICB9Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIE5VTEw7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHZhcl9zbm1wVGFyZ2V0QWRkckVudHJ5ICovCiAKIApAQCAtODkwLDcgKzg5MCw3IEBACiAgICAgICAgIGlmICgodGFyZ2V0ID0KICAgICAgICAgICAgICBzZWFyY2hfc25tcFRhcmdldEFkZHJUYWJsZShzbm1wVGFyZ2V0QWRkck9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRExlbiwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVfbGVuLCAxKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRBZGRyVERvbWFpbjogQkFEIE9JRCFcbiIpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOwpAQCAtOTc2LDcgKzk3Niw3IEBACiAgICAgICAgIGlmICgodGFyZ2V0ID0KICAgICAgICAgICAgICBzZWFyY2hfc25tcFRhcmdldEFkZHJUYWJsZShzbm1wVGFyZ2V0QWRkck9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wVGFyZ2V0QWRkck9JRExlbiwgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWVfbGVuLCAxKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRBZGRyVEFkZHJlc3M6IEJBRCBPSUQhXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRTsKQEAgLTEwODIsNyArMTA4Miw3IEBACiAgICAgICAgIGlmICgodGVtcF9zdHJ1Y3QgPQogICAgICAgICAgICAgIHNlYXJjaF9zbm1wVGFyZ2V0QWRkclRhYmxlKHNubXBUYXJnZXRBZGRyT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lETGVuLCBuYW1lLCAmbmFtZV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRBZGRyRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRBZGRyVGltZW91dCA6IEJBRCBPSURcbiIpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1NVQ0hOQU1FOwpAQCAtMTI5Niw3ICsxMjk2LDcgQEAKICAgICAgICAgaWYgKCh0YXJnZXQgPQogICAgICAgICAgICAgIHNlYXJjaF9zbm1wVGFyZ2V0QWRkclRhYmxlKHNubXBUYXJnZXRBZGRyT0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRBZGRyT0lETGVuLCBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZuYW1lX2xlbiwgMSkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbmFtZV9sZW4sIDEpKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldEFkZHJQYXJhbXM6IEJBRCBPSUQhXG4iKSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRTsKQEAgLTE1MDQsNyArMTUwNCw3IEBACiAgICAgICAgIGlmIChuYW1lX2xlbiA8IHNubXBUYXJnZXRBZGRyT0lETGVuICsgMSB8fAogICAgICAgICAgICAgbmFtZV9sZW4gPiBzbm1wVGFyZ2V0QWRkck9JRExlbiArIDMyKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldEFkZHJFbnRyeSIsICJiYWQgaW5kZXggbGVuZ3RoICVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgbmFtZV9sZW4gLSBzbm1wVGFyZ2V0QWRkck9JRExlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCkobmFtZV9sZW4gLSBzbm1wVGFyZ2V0QWRkck9JRExlbikpKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmggYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldEFkZHJFbnRyeS5oCmluZGV4IGIxYjVhZDEuLjdlZDgzOGYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0QWRkckVudHJ5LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRBZGRyRW50cnkuaApAQCAtMTAsMTAgKzEwLDEwIEBACiAjZGVmaW5lIF9NSUJHUk9VUF9TTk1QVEFSR0VUQUREUkVOVFJZX0gKIAogLyoKLSAqIHdlIHVzZSBoZWFkZXJfZ2VuZXJpYyBhbmQgY2hlY2ttaWIgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUgCisgKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgZnJvbSB0aGUgdXRpbF9mdW5jcyBtb2R1bGUKICAqLwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYyBiL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuYwppbmRleCAwNjkzNmIxLi4zOTY3YjgyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5jCkBAIC0zMCw3ICszMCw3IEBACiBvaWQgICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtc09JRFtzbm1wVGFyZ2V0UGFyYW1zT0lETGVuXSA9CiAgICAgeyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgMywgMSwgMCB9OwogCi1zdGF0aWMgc3RydWN0IHRhcmdldFBhcmFtVGFibGVfc3RydWN0ICphUFRhYmxlID0gMDsKK3N0YXRpYyBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmFQVGFibGUgPSBOVUxMOwogCiAKIC8qCkBAIC01MSwxNiArNTEsMTYgQEAKICAgICBuZXdFbnRyeSA9IChzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKikKICAgICAgICAgbWFsbG9jKHNpemVvZihzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QpKTsKIAotICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUgPSAwOworICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUgPSBOVUxMOwogICAgIG5ld0VudHJ5LT5tcE1vZGVsID0gLTE7CiAKICAgICBuZXdFbnRyeS0+c2VjTW9kZWwgPSAtMTsKLSAgICBuZXdFbnRyeS0+c2VjTmFtZSA9IDA7CisgICAgbmV3RW50cnktPnNlY05hbWUgPSBOVUxMOwogICAgIG5ld0VudHJ5LT5zZWNMZXZlbCA9IC0xOwogCiAgICAgbmV3RW50cnktPnN0b3JhZ2VUeXBlID0gU05NUF9TVE9SQUdFX05PTlZPTEFUSUxFOwogICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMgPSBTTk1QX1JPV19OT05FWElTVEVOVDsKLSAgICBuZXdFbnRyeS0+bmV4dCA9IDA7CisgICAgbmV3RW50cnktPm5leHQgPSBOVUxMOwogICAgIHJldHVybiBuZXdFbnRyeTsKIH0KIApAQCAtMTEzLDcgKzExMyw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIHNlYXJjaCB0aHJvdWdoIHRoZSBsaXN0IGZvciBhbiBlcXVhbCBvciBncmVhdGVyIE9JRCB2YWx1ZSAKICAgICAgICAgICovCi0gICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSAwKSB7CisgICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBjdXJyT0lETGVuID0gc3RybGVuKGN1cnJfc3RydWN0LT5wYXJhbU5hbWUpOwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IChpbnQpIGN1cnJPSURMZW47IGkrKykgewogICAgICAgICAgICAgICAgIGN1cnJPSURbaV0gPSBjdXJyX3N0cnVjdC0+cGFyYW1OYW1lW2ldOwpAQCAtMTY4LDE0ICsxNjgsMTQgQEAKIHsKICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKnRwdHI7CiAKLSAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gMCkKKyAgICBpZiAoKHRwdHIgPSAqbGlzdFB0cikgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuOwogICAgIGVsc2UgaWYgKHRwdHIgPT0gb2xkRW50cnkpIHsKICAgICAgICAgKmxpc3RQdHIgPSAoKmxpc3RQdHIpLT5uZXh0OwogICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHRwdHIpOwogICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIHsKLSAgICAgICAgd2hpbGUgKHRwdHItPm5leHQgIT0gMCkgeworICAgICAgICB3aGlsZSAodHB0ci0+bmV4dCAhPSBOVUxMKSB7CiAgICAgICAgICAgICBpZiAodHB0ci0+bmV4dCA9PSBvbGRFbnRyeSkgewogICAgICAgICAgICAgICAgIHRwdHItPm5leHQgPSB0cHRyLT5uZXh0LT5uZXh0OwogICAgICAgICAgICAgICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2Rpc3Bvc2Uob2xkRW50cnkpOwpAQCAtMjA1LDcgKzIwNSw3IEBACiAgICAgICovCiAgICAgbWVtY3B5KG5ld051bSwgYmFzZU5hbWUsIGJhc2VOYW1lTGVuICogc2l6ZW9mKG9pZCkpOwogCi0gICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFQVGFibGU7IHRlbXBfc3RydWN0ICE9IDA7CisgICAgZm9yICh0ZW1wX3N0cnVjdCA9IGFQVGFibGU7IHRlbXBfc3RydWN0ICE9IE5VTEw7CiAgICAgICAgICB0ZW1wX3N0cnVjdCA9IHRlbXBfc3RydWN0LT5uZXh0KSB7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBzdHJsZW4odGVtcF9zdHJ1Y3QtPnBhcmFtTmFtZSk7IGkrKykgewogICAgICAgICAgICAgbmV3TnVtW2Jhc2VOYW1lTGVuICsgaV0gPSB0ZW1wX3N0cnVjdC0+cGFyYW1OYW1lW2ldOwpAQCAtMjIzLDcgKzIyMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gdGVtcF9zdHJ1Y3Q7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuICgwKTsKKyAgICByZXR1cm4gTlVMTDsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VhcmNoX3NubXBUYXJnZXRQYXJhbXNUYWJsZSAqLwogCiAKQEAgLTIzNiw3ICsyMzYsNyBAQAogc25tcFRhcmdldFBhcmFtc19yb3dTdGF0dXNDaGVjayhzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5KQogewogICAgIGlmICgoZW50cnktPm1wTW9kZWwgPCAwKSB8fCAoZW50cnktPnNlY01vZGVsIDwgMCkgfHwKLSAgICAgICAgKGVudHJ5LT5zZWNMZXZlbCA8IDApIHx8IChlbnRyeS0+c2VjTmFtZSA9PSAwKSkKKyAgICAgICAgKGVudHJ5LT5zZWNMZXZlbCA8IDApIHx8IChlbnRyeS0+c2VjTmFtZSA9PSBOVUxMKSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgZWxzZQogICAgICAgICByZXR1cm4gMTsKQEAgLTI1NCwxNyArMjU0LDE3IEBACiAgKi8KIAogc3RydWN0IHZhcmlhYmxlMiBzbm1wVGFyZ2V0UGFyYW1zRW50cnlfdmFyaWFibGVzW10gPSB7Ci0gICAge1NOTVBUQVJHRVRQQVJBTVNNUE1PREVMLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TTVBNT0RFTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgMSwge1NOTVBUQVJHRVRQQVJBTVNNUE1PREVMQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlNT0RFTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgMSwge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU1PREVMQ09MVU1OfX0sCi0gICAge1NOTVBUQVJHRVRQQVJBTVNTRUNVUklUWU5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5LCAxLCB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTkFNRUNPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTCwgQVNOX0lOVEVHRVIsIFJXUklURSwKKyAgICB7U05NUFRBUkdFVFBBUkFNU1NFQ1VSSVRZTEVWRUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCiAgICAgIHZhcl9zbm1wVGFyZ2V0UGFyYW1zRW50cnksIDEsIHtTTk1QVEFSR0VUUEFSQU1TU0VDVVJJVFlMRVZFTENPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUUEFSQU1TU1RPUkFHRVRZUEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsCisgICAge1NOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKICAgICAgdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeSwgMSwge1NOTVBUQVJHRVRQQVJBTVNTVE9SQUdFVFlQRUNPTFVNTn19LAotICAgIHtTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLAorICAgIHtTTk1QVEFSR0VUUEFSQU1TUk9XU1RBVFVTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAogICAgICB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5LCAxLCB7U05NUFRBUkdFVFBBUkFNU1JPV1NUQVRVU0NPTFVNTn19CiB9OwogCkBAIC0yNzgsMTUgKzI3OCwxNSBAQAogdm9pZAogaW5pdF9zbm1wVGFyZ2V0UGFyYW1zRW50cnkodm9pZCkKIHsKLSAgICBhUFRhYmxlID0gMDsKKyAgICBhUFRhYmxlID0gTlVMTDsKIAogICAgIFJFR0lTVEVSX01JQigidGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgIHNubXBUYXJnZXRQYXJhbXNFbnRyeV92YXJpYWJsZXMsIHZhcmlhYmxlMiwKICAgICAgICAgICAgICAgICAgc25tcFRhcmdldFBhcmFtc0VudHJ5X3ZhcmlhYmxlc19vaWQpOwogCiAgICAgc25tcGRfcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInRhcmdldFBhcmFtcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcGRfcGFyc2VfY29uZmlnX3RhcmdldFBhcmFtcywgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wZF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICgqKSh2b2lkKSkwLCBOVUxMKTsKIAogICAgIC8qCiAgICAgICogd2UgbmVlZCB0byBiZSBjYWxsZWQgYmFjayBsYXRlciAKQEAgLTMwMSw3ICszMDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKICAgICBzaXplX3QgICAgICAgICAgbGVuOwotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldFBhcmFtc0VudHJ5OiBubyBwYXJhbSBuYW1lIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTMyNSw3ICszMjUsNyBAQAogc25tcFRhcmdldFBhcmFtc19hZGRNUE1vZGVsKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gbXAgbW9kZWwgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzUwLDcgKzM1MCw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFNlY01vZGVsKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHNlYyBtb2RlbCBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC0zNzYsNyArMzc2LDcgQEAKIHNubXBUYXJnZXRQYXJhbXNfYWRkU2VjTmFtZShzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHNlY3VyaXR5IG5hbWUgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtMzkxLDcgKzM5MSw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFNlY0xldmVsKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqZW50cnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmNwdHIpCiB7Ci0gICAgaWYgKGNwdHIgPT0gMCkgeworICAgIGlmIChjcHRyID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBUYXJnZXRQYXJhbXNFbnRyeSIsCiAgICAgICAgICAgICAgICAgICAgICJFUlJPUiBzbm1wVGFyZ2V0UGFyYW1zRW50cnk6IG5vIHNlY3VyaXR5IGxldmVsIGluIGNvbmZpZyBzdHJpbmdcbiIpKTsKICAgICAgICAgcmV0dXJuICgwKTsKQEAgLTQxNyw3ICs0MTcsNyBAQAogc25tcFRhcmdldFBhcmFtc19hZGRTdG9yYWdlVHlwZShzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpjcHRyKQogewotICAgIGlmIChjcHRyID09IDApIHsKKyAgICBpZiAoY3B0ciA9PSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAogICAgICAgICAgICAgICAgICAgICAiRVJST1Igc25tcFRhcmdldFBhcmFtc0VudHJ5OiBubyBzdG9yYWdlIHR5cGUgaW4gY29uZmlnIHN0cmluZ1xuIikpOwogICAgICAgICByZXR1cm4gKDApOwpAQCAtNDU1LDcgKzQ1NSw3IEBACiBzbm1wVGFyZ2V0UGFyYW1zX2FkZFJvd1N0YXR1cyhzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKmVudHJ5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqY3B0cikKIHsKLSAgICBpZiAoY3B0ciA9PSAwKSB7CisgICAgaWYgKGNwdHIgPT0gTlVMTCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwKICAgICAgICAgICAgICAgICAgICAgIkVSUk9SIHNubXBUYXJnZXRQYXJhbXNFbnRyeTogbm8gcm93IHN0YXR1cyBpbiBjb25maWcgc3RyaW5nXG4iKSk7CiAgICAgICAgIHJldHVybiAoMCk7CkBAIC01MzUsMTMgKzUzNSwxMSBAQAogICAgICAgICBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKG5ld0VudHJ5KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzbnByaW50ZihidWZmLCBzaXplb2YoYnVmZiksCi0gICAgICAgICAgICAic25tcF9wYXJzZV9jb25maWdfdGFyZ2V0UGFyYW1zLCByZWFkOiAlcyAlZCAlZCAlcyAlZCAlZCAlZFxuIiwKLSAgICAgICAgICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUsIG5ld0VudHJ5LT5tcE1vZGVsLCBuZXdFbnRyeS0+c2VjTW9kZWwsCi0gICAgICAgICAgICBuZXdFbnRyeS0+c2VjTmFtZSwgbmV3RW50cnktPnNlY0xldmVsLCBuZXdFbnRyeS0+c3RvcmFnZVR5cGUsCi0gICAgICAgICAgICBuZXdFbnRyeS0+cm93U3RhdHVzKTsKLSAgICBidWZmWyBzaXplb2YoYnVmZiktMSBdID0gMDsKLSAgICBERUJVR01TR1RMKCgic25tcFRhcmdldFBhcmFtc0VudHJ5IiwgYnVmZikpOworICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAorICAgICAgICAgICAgICAgICJzbm1wX3BhcnNlX2NvbmZpZ190YXJnZXRQYXJhbXMsIHJlYWQ6ICVzICVkICVkICVzICVkICVkICVkXG4iLAorICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5wYXJhbU5hbWUsIG5ld0VudHJ5LT5tcE1vZGVsLCBuZXdFbnRyeS0+c2VjTW9kZWwsCisgICAgICAgICAgICAgICAgbmV3RW50cnktPnNlY05hbWUsIG5ld0VudHJ5LT5zZWNMZXZlbCwgbmV3RW50cnktPnN0b3JhZ2VUeXBlLAorICAgICAgICAgICAgICAgIG5ld0VudHJ5LT5yb3dTdGF0dXMpKTsKIAogICAgIHVwZGF0ZV90aW1lc3RhbXAobmV3RW50cnkpOwogICAgIHNubXBUYXJnZXRQYXJhbVRhYmxlX2FkZFRvTGlzdChuZXdFbnRyeSwgJmFQVGFibGUpOwpAQCAtNTY2LDggKzU2NCw4IEBACiAgICAgY2hhciAgICAgICAgICAgIGxpbmVbMTAyNF07CiAKICAgICBzdHJjcHkobGluZSwgIiIpOwotICAgIGlmICgoY3Vycl9zdHJ1Y3QgPSBhUFRhYmxlKSAhPSAwKSB7Ci0gICAgICAgIHdoaWxlIChjdXJyX3N0cnVjdCAhPSAwKSB7CisgICAgaWYgKChjdXJyX3N0cnVjdCA9IGFQVGFibGUpICE9IE5VTEwpIHsKKyAgICAgICAgd2hpbGUgKGN1cnJfc3RydWN0ICE9IE5VTEwpIHsKICAgICAgICAgICAgIGlmICgoY3Vycl9zdHJ1Y3QtPnN0b3JhZ2VUeXBlID09IFNOTVBfU1RPUkFHRV9OT05WT0xBVElMRSB8fAogICAgICAgICAgICAgICAgICBjdXJyX3N0cnVjdC0+c3RvcmFnZVR5cGUgPT0gU05NUF9TVE9SQUdFX1BFUk1BTkVOVCkKICAgICAgICAgICAgICAgICAmJgpAQCAtNjQyLDggKzY0MCw4IEBACiAgICAgICovCiAgICAgaWYgKCh0ZW1wX3N0cnVjdCA9IHNlYXJjaF9zbm1wVGFyZ2V0UGFyYW1zVGFibGUodnAtPm5hbWUsIHZwLT5uYW1lbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdCkpID09IDApIHsKLSAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGFjdCkpID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgLyoKQEAgLTY1OSw3ICs2NTcsNyBAQAogICAgICAgICAgKiBpZiB1bnNldCB2YWx1ZSwgKGkuZS4gbmV3IHJvdykgCiAgICAgICAgICAqLwogICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPm1wTW9kZWwgPT0gLTEpCi0gICAgICAgICAgICByZXR1cm4gKDApOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGxvbmdfcmV0ID0gdGVtcF9zdHJ1Y3QtPm1wTW9kZWw7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7CiAKQEAgLTY2OCw3ICs2NjYsNyBAQAogICAgICAgICAgKiBpZiB1bnNldCB2YWx1ZSwgKGkuZS4gbmV3IHJvdykgCiAgICAgICAgICAqLwogICAgICAgICBpZiAodGVtcF9zdHJ1Y3QtPnNlY01vZGVsID09IC0xKQotICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBsb25nX3JldCA9IHRlbXBfc3RydWN0LT5zZWNNb2RlbDsKICAgICAgICAgcmV0dXJuICh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldDsKIApAQCAtNjc2LDggKzY3NCw4IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIGlmIHVuc2V0IHZhbHVlLCAoaS5lLiBuZXcgcm93KSAKICAgICAgICAgICovCi0gICAgICAgIGlmICh0ZW1wX3N0cnVjdC0+c2VjTmFtZSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuICgwKTsKKyAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5zZWNOYW1lID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgLyoKICAgICAgICAgICogaW5jbHVkaW5nIG51bGwgY2hhcmFjdGVyLiAKICAgICAgICAgICovCkBAIC02OTEsNyArNjg5LDcgQEAKICAgICAgICAgICogaWYgdW5zZXQgdmFsdWUsIChpLmUuIG5ldyByb3cpIAogICAgICAgICAgKi8KICAgICAgICAgaWYgKHRlbXBfc3RydWN0LT5zZWNMZXZlbCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAoMCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgbG9uZ19yZXQgPSB0ZW1wX3N0cnVjdC0+c2VjTGV2ZWw7CiAgICAgICAgIHJldHVybiAodW5zaWduZWQgY2hhciAqKSAmbG9uZ19yZXQ7CiAKQEAgLTcwOCw3ICs3MDYsNyBAQAogICAgICAgICAgICAgICAgICAgICAidW5rbm93biBzdWItaWQgJWQgaW4gdmFyX3NubXBUYXJnZXRQYXJhbXNFbnRyeVxuIiwKICAgICAgICAgICAgICAgICAgICAgdnAtPm1hZ2ljKSk7CiAgICAgfQotICAgIHJldHVybiAwOworICAgIHJldHVybiBOVUxMOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB2YXJfc25tcFRhcmdldFBhcmFtc0VudHJ5ICovCiAKIC8qCkBAIC04NDIsNyArODQwLDcgQEAKICAgICAgICAgfQogICAgICAgICBpZiAoZmluZF9zZWNfbW9kKGxvbmdfcmV0KSA9PSBOVUxMICYmIGxvbmdfcmV0ID49IDMpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLAotICAgICAgICAgICAgICAgICAgICAgICAgIndyaXRlIHRvIHNubXBUYXJnZXRQYXJhbXNTZWNNb2RlbDogc2VjTW9kZWwgJWQgdW5zdXBwb3J0ZWRcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAid3JpdGUgdG8gc25tcFRhcmdldFBhcmFtc1NlY01vZGVsOiBzZWNNb2RlbCAlbGQgdW5zdXBwb3J0ZWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX3JldCkpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFOwogICAgICAgICB9CkBAIC0xMjczLDcgKzEyNzEsNyBAQAogICAgICAgICBpZiAobmFtZV9sZW4gPCBzbm1wVGFyZ2V0UGFyYW1zT0lETGVuICsgMSB8fAogICAgICAgICAgICAgbmFtZV9sZW4gPiBzbm1wVGFyZ2V0UGFyYW1zT0lETGVuICsgMzIpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wVGFyZ2V0UGFyYW1zRW50cnkiLCAiYmFkIGluZGV4IGxlbmd0aCAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVfbGVuIC0gc25tcFRhcmdldFBhcmFtc09JRExlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCkobmFtZV9sZW4gLSBzbm1wVGFyZ2V0UGFyYW1zT0lETGVuKSkpOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQ1JFQVRJT047CiAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3NubXBUYXJnZXRQYXJhbXNFbnRyeS5oCmluZGV4IDliNWFiODUuLjgyODZhNjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC9zbm1wVGFyZ2V0UGFyYW1zRW50cnkuaAorKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvc25tcFRhcmdldFBhcmFtc0VudHJ5LmgKQEAgLTksMTIgKzksNiBAQAogI2lmbmRlZiBfTUlCR1JPVVBfU05NUFRBUkdFVFBBUkFNU0VOVFJZX0gKICNkZWZpbmUgX01JQkdST1VQX1NOTVBUQVJHRVRQQVJBTVNFTlRSWV9ICiAKLS8qCi0gKiB3ZSB1c2UgaGVhZGVyX2dlbmVyaWMgYW5kIGNoZWNrbWliIGZyb20gdGhlIHV0aWxfZnVuY3MgbW9kdWxlIAotICovCi0KLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCi0KICAgICAvKgogICAgICAqIE1hZ2ljIG51bWJlciBkZWZpbml0aW9uczogCiAgICAgICovCkBAIC01Myw2ICs0Nyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqbmV3RW50cnkpOwogICAgICBzdHJ1Y3QgdGFyZ2V0UGFyYW1UYWJsZV9zdHJ1Y3QgKnNubXBUYXJnZXRQYXJhbVRhYmxlX2NyZWF0ZSh2b2lkKTsKKyAgICAgdm9pZCBzbm1wVGFyZ2V0UGFyYW1UYWJsZV9kaXNwb3NlKHN0cnVjdCB0YXJnZXRQYXJhbVRhYmxlX3N0cnVjdCAqKTsKIAogLyoKICAqIGZ1bmN0aW9uIGRlZmluaXRpb25zIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldC5jCmluZGV4IDNjY2JhMWMuLjg4ZWU3NzAgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXQuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0LmMKQEAgLTE2Myw3ICsxNjMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNzZXNzLnRpbWVvdXQgPSAodGFyZ2FkZHJzLT50aW1lb3V0KSAqIDEwMDAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNzZXNzLnJldHJpZXMgPSB0YXJnYWRkcnMtPnJldHJ5Q291bnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInRhcmdldF9zZXNzaW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQ6ICVkIC0+ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0OiAlZCAtPiAlbGRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2FkZHJzLT50aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNzZXNzLnRpbWVvdXQpKTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5jCmluZGV4IDAyZWJiNzIuLjhhMmYwZDEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuYworKysgYi9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmMKQEAgLTEyLDEyICsxMiwxMiBAQAogI2luY2x1ZGUgInRhcmdldF9jb3VudGVycy5oIgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2luc3RhbmNlLmg+CiAKLXN0YXRpYyBvaWQgICB1bmF2YWlsYWJsZV9jb250ZXh0X29pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSwgNCB9Owotc3RhdGljIG9pZCAgIHVua25vd25fY29udGV4dF9vaWRbXSAgICAgPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCA1IH07Ci0KIHZvaWQKIGluaXRfdGFyZ2V0X2NvdW50ZXJzKHZvaWQpCiB7CisgICAgY29uc3Qgb2lkIHVuYXZhaWxhYmxlX2NvbnRleHRfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCA0IH07CisgICAgY29uc3Qgb2lkIHVua25vd25fY29udGV4dF9vaWRbXSAgICAgPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEyLCAxLCA1IH07CisKICAgICBERUJVR01TR1RMKCgidGFyZ2V0X2NvdW50ZXJzIiwgImluaXRpYWxpemluZ1xuIikpOwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaCBiL2FnZW50L21pYmdyb3VwL3RhcmdldC90YXJnZXRfY291bnRlcnMuaAppbmRleCBhN2RiZjBhLi5jNDg1YzRjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVycy5oCkBAIC0yLDYgKzIsOCBAQAogICogdGVzdGhhbmRsZXIuaCAKICAqLwogCitjb25maWdfZXhjbHVkZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQorCiB2b2lkICAgICAgICAgICAgaW5pdF90YXJnZXRfY291bnRlcnModm9pZCk7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBnZXRfdW5hdmFpbGFibGVfY29udGV4dF9jb3VudDsKIE5ldHNubXBfTm9kZV9IYW5kbGVyIGdldF91bmtub3duX2NvbnRleHRfY291bnQ7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5jIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZThiMjViCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuYwpAQCAtMCwwICsxLDI3IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAidGFyZ2V0X2NvdW50ZXJzXzVfNS5oIgorCisjaW5jbHVkZSA8dXRpbGl0aWVzL3NubXBfZ2V0X3N0YXRpc3RpYy5oPgorCit2b2lkCitpbml0X3RhcmdldF9jb3VudGVyc181XzUodm9pZCkKK3sKKyAgICBvaWQgdGFyZ2V0X29pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxMiwgMSB9OworCisgICAgREVCVUdNU0dUTCgoInRhcmdldF9jb3VudGVycyIsICJpbml0aWFsaXppbmdcbiIpKTsKKworICAgIE5FVFNOTVBfUkVHSVNURVJfU1RBVElTVElDX0hBTkRMRVIoCisgICAgICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgInRhcmdldF9jb3VudGVycyIsIE5VTEwsIHRhcmdldF9vaWQsIE9JRF9MRU5HVEgodGFyZ2V0X29pZCksCisgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSksIDQsIFRBUkdFVCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90YXJnZXQvdGFyZ2V0X2NvdW50ZXJzXzVfNS5oIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjgxMmZiCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGFyZ2V0L3RhcmdldF9jb3VudGVyc181XzUuaApAQCAtMCwwICsxLDQgQEAKK2NvbmZpZ19yZXF1aXJlKHV0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMpCitjb25maWdfZXhjbHVkZSh0YXJnZXQvdGFyZ2V0X2NvdW50ZXJzKQorCit2b2lkICAgICAgICAgICAgaW5pdF90YXJnZXRfY291bnRlcnNfNV81KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uLmggYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaAppbmRleCA1MDAzMTU3Li4xZWMzNTg4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaAorKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm4uaApAQCAtMjAsNiArMjAsNyBAQAogY29uZmlnX3JlcXVpcmUodGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX2NvbW1vbikKICNpZiBkZWZpbmVkKCBsaW51eCApCiBjb25maWdfcmVxdWlyZSh0Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXgpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2dldF9waWRfZnJvbV9pbm9kZSkKICNlbGlmIGRlZmluZWQoIHNvbGFyaXMyICkKIGNvbmZpZ19yZXF1aXJlKHRjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9zb2xhcmlzMikKICNlbHNlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC90Y3AtbWliL2RhdGFfYWNjZXNzL3RjcENvbm5fbGludXguYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCmluZGV4IDhlYTA4MmIuLjM3NmNmNWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvZGF0YV9hY2Nlc3MvdGNwQ29ubl9saW51eC5jCkBAIC0xMSw3ICsxMSw3IEBACiAKICNpbmNsdWRlICJ0Y3AtbWliL3RjcENvbm5lY3Rpb25UYWJsZS90Y3BDb25uZWN0aW9uVGFibGVfY29uc3RhbnRzLmgiCiAjaW5jbHVkZSAidGNwLW1pYi9kYXRhX2FjY2Vzcy90Y3BDb25uX3ByaXZhdGUuaCIKLQorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgiCiBzdGF0aWMgaW50CiBsaW51eF9zdGF0ZXNbMTJdID0geyAxLCA1LCAzLCA0LCA2LCA3LCAxMSwgMSwgOCwgOSwgMiwgMTAgfTsKIApAQCAtODEsNyArODEsNyBAQAogICAgIGludCByYyA9IDA7CiAKICAgICBERUJVR01TR1RMKCgiYWNjZXNzOnRjcGNvbm46Y29udGFpbmVyIiwKLSAgICAgICAgICAgICAgICAidGNwY29ubl9jb250YWluZXJfYXJjaF9sb2FkIChmbGFncyAlcClcbiIsIGxvYWRfZmxhZ3MpKTsKKyAgICAgICAgICAgICAgICAidGNwY29ubl9jb250YWluZXJfYXJjaF9sb2FkIChmbGFncyAleClcbiIsIGxvYWRfZmxhZ3MpKTsKIAogICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgewogICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibm8gY29udGFpbmVyIHNwZWNpZmllZC9mb3VuZCBmb3IgYWNjZXNzX3RjcGNvbm5cbiIpOwpAQCAtMTM1LDE2ICsxMzUsMTkgQEAKICAgICB3aGlsZSAoZmdldHMobGluZSwgc2l6ZW9mKGxpbmUpLCBpbikpIHsKICAgICAgICAgbmV0c25tcF90Y3Bjb25uX2VudHJ5ICplbnRyeTsKICAgICAgICAgaW50ICAgICAgICAgICAgIHN0YXRlLCByYywgbG9jYWxfcG9ydCwgcmVtb3RlX3BvcnQsIHRtcF9zdGF0ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nIGlub2RlOwogICAgICAgICBzaXplX3QgICAgICAgICAgYnVmX2xlbiwgb2Zmc2V0OwogICAgICAgICBjaGFyICAgICAgICAgICAgbG9jYWxfYWRkclsxMF0sIHJlbW90ZV9hZGRyWzEwXTsKICAgICAgICAgdV9jaGFyICAgICAgICAgKnRtcF9wdHI7CiAKLSAgICAgICAgaWYgKDUgIT0gKHJjID0gc3NjYW5mKGxpbmUsICIlKmQ6ICU4WzAtOUEtWl06JXggJThbMC05QS1aXToleCAleCIsCisgICAgICAgIGlmICg2ICE9IChyYyA9IHNzY2FuZihsaW5lLCAiJSpkOiAlOFswLTlBLVpdOiV4ICU4WzAtOUEtWl06JXggJXggJSp4OiUqeCAlKng6JSp4ICUqeCAlKnggJSp4ICVsbHUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxfYWRkciwgJmxvY2FsX3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVfYWRkciwgJnJlbW90ZV9wb3J0LCAmdG1wX3N0YXRlKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9hZGRyLCAmcmVtb3RlX3BvcnQsICZ0bXBfc3RhdGUsICZpbm9kZSkpKSB7CiAgICAgICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLAotICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgcGFyc2luZyBsaW5lICglZCAhPSA1KVxuIiwgcmMpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgImVycm9yIHBhcnNpbmcgbGluZSAoJWQgIT0gNilcbiIsIHJjKSk7CiAgICAgICAgICAgICBERUJVR01TR1QoKCJhY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLCIgbGluZSAnJXMnXG4iLCBsaW5lKSk7CisJICAgIHNubXBfbG9nKExPR19FUlIsICJ0Y3A6X2xvYWQ0OiBiYWQgbGluZSBpbiAiIFBST0NGSUxFICI6ICVzXG4iLCBsaW5lKTsKKwkgICAgcmMgPSAwOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTphY2Nlc3M6dGNwY29ubjpjb250YWluZXIiLCIgbGluZSAnJXMnXG4iLCBsaW5lKSk7CkBAIC0xODAsNiArMTgzLDcgQEAKICAgICAgICAgZW50cnktPmxvY19wb3J0ID0gKHVuc2lnbmVkIHNob3J0KSBsb2NhbF9wb3J0OwogICAgICAgICBlbnRyeS0+cm10X3BvcnQgPSAodW5zaWduZWQgc2hvcnQpIHJlbW90ZV9wb3J0OwogICAgICAgICBlbnRyeS0+dGNwQ29ublN0YXRlID0gc3RhdGU7CisgICAgICAgIGVudHJ5LT5waWQgPSBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm9kZSk7CiAgICAgICAgIAogICAgICAgICAvKiogdGhlIGFkZHIgc3RyaW5nIG1heSBuZWVkIHdvcmsgKi8KICAgICAgICAgYnVmX2xlbiA9IHN0cmxlbihsb2NhbF9hZGRyKTsKQEAgLTI1MywyOCArMjU3LDE3IEBACiB7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKICAgICBGSUxFICAgICAgICAgICAqaW47Ci0gICAgY2hhciAgICAgICAgICAgIGxpbmVbMTgwXTsKLSAgICBzdGF0aWMgaW50ICAgICAgbG9nX29wZW5fZXJyID0gMTsKKyAgICBjaGFyICAgICAgICAgICAgbGluZVszNjBdOwogCiAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBjb250YWluZXIpOwogCiAjdW5kZWYgUFJPQ0ZJTEUKICNkZWZpbmUgUFJPQ0ZJTEUgIi9wcm9jL25ldC90Y3A2IgogICAgIGlmICghKGluID0gZm9wZW4oUFJPQ0ZJTEUsICJyIikpKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIik7Ci0gICAgICAgIGlmICgxID09IGxvZ19vcGVuX2VycikgewotICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY291bGQgbm90IG9wZW4gIiBQUk9DRklMRSAiXG4iKTsKLSAgICAgICAgICAgIGxvZ19vcGVuX2VyciA9IDA7Ci0gICAgICAgIH0KKyAgICAgICAgREVCVUdNU0dUTCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsImNvdWxkIG5vdCBvcGVuICIgUFJPQ0ZJTEUgIlxuIikpOwogICAgICAgICByZXR1cm4gLTI7CiAgICAgfQotICAgIC8qCi0gICAgICogaWYgd2UgdHVybmVkIG9mZiBsb2dnaW5nIG9mIG9wZW4gZXJyb3JzLCB0dXJuIGl0IGJhY2sgb24gbm93IHRoYXQKLSAgICAgKiB3ZSBoYXZlIGJlZW4gYWJsZSB0byBvcGVuIHRoZSBmaWxlLgotICAgICAqLwotICAgIGlmICgwID09IGxvZ19vcGVuX2VycikKLSAgICAgICAgbG9nX29wZW5fZXJyID0gMTsKLSAgICAKKwogICAgIGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pOyAvKiBza2lwIGhlYWRlciAqLwogCiAgICAgLyoKQEAgLTI4NiwxNiArMjc5LDE5IEBACiAgICAgd2hpbGUgKGZnZXRzKGxpbmUsIHNpemVvZihsaW5lKSwgaW4pKSB7CiAgICAgICAgIG5ldHNubXBfdGNwY29ubl9lbnRyeSAqZW50cnk7CiAgICAgICAgIGludCAgICAgICAgICAgICBzdGF0ZSwgbG9jYWxfcG9ydCwgcmVtb3RlX3BvcnQsIHRtcF9zdGF0ZTsKKyAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nICBpbm9kZTsKICAgICAgICAgc2l6ZV90ICAgICAgICAgIGJ1Zl9sZW4sIG9mZnNldDsKICAgICAgICAgY2hhciAgICAgICAgICAgIGxvY2FsX2FkZHJbNDhdLCByZW1vdGVfYWRkcls0OF07CiAgICAgICAgIHVfY2hhciAgICAgICAgICp0bXBfcHRyOwogCi0gICAgICAgIGlmICg1ICE9IChyYyA9IHNzY2FuZihsaW5lLCAiJSpkOiAlNDdbMC05QS1aXToleCAlNDdbMC05QS1aXToleCAleCIsCisgICAgICAgIGlmICg2ICE9IChyYyA9IHNzY2FuZihsaW5lLCAiJSpkOiAlNDdbMC05QS1aXToleCAlNDdbMC05QS1aXToleCAleCAlKng6JSp4ICUqeDolKnggJSp4ICUqeCAlKnggJWxsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbF9hZGRyLCAmbG9jYWxfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZV9hZGRyLCAmcmVtb3RlX3BvcnQsICZ0bXBfc3RhdGUpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlX2FkZHIsICZyZW1vdGVfcG9ydCwgJnRtcF9zdGF0ZSwgJmlub2RlKSkpIHsKICAgICAgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsCi0gICAgICAgICAgICAgICAgICAgICAgICJlcnJvciBwYXJzaW5nIGxpbmUgKCVkICE9IDUpXG4iLCByYykpOworICAgICAgICAgICAgICAgICAgICAgICAiZXJyb3IgcGFyc2luZyBsaW5lICglZCAhPSA2KVxuIiwgcmMpKTsKICAgICAgICAgICAgIERFQlVHTVNHVCgoImFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsIiBsaW5lICclcydcbiIsIGxpbmUpKTsKKwkgICAgc25tcF9sb2coTE9HX0VSUiwgInRjcDpfbG9hZDY6IGJhZCBsaW5lIGluICIgUFJPQ0ZJTEUgIjogJXNcbiIsIGxpbmUpOworCSAgICByYyA9IDA7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOmFjY2Vzczp0Y3Bjb25uOmNvbnRhaW5lciIsIiBsaW5lICclcydcbiIsIGxpbmUpKTsKQEAgLTMzMSw2ICszMjcsNyBAQAogICAgICAgICBlbnRyeS0+bG9jX3BvcnQgPSAodW5zaWduZWQgc2hvcnQpIGxvY2FsX3BvcnQ7CiAgICAgICAgIGVudHJ5LT5ybXRfcG9ydCA9ICh1bnNpZ25lZCBzaG9ydCkgcmVtb3RlX3BvcnQ7CiAgICAgICAgIGVudHJ5LT50Y3BDb25uU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgZW50cnktPnBpZCA9IG5ldHNubXBfZ2V0X3BpZF9mcm9tX2lub2RlKGlub2RlKTsKIAogICAgICAgICAvKiogdGhlIGFkZHIgc3RyaW5nIG1heSBuZWVkIHdvcmsgKi8KICAgICAgICAgYnVmX2xlbiA9IHN0cmxlbihsb2NhbF9hZGRyKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMKaW5kZXggZWI5MGY0MC4uZjVkMDU0ZiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmMKQEAgLTI2LDggKzI2LDggQEAKIAogI2luY2x1ZGUgInRjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRbXSA9IHsgVENQQ09OTkVDVElPTlRBQkxFX09JRCB9OwotaW50ICAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZFtdID0geyBUQ1BDT05ORUNUSU9OVEFCTEVfT0lEIH07Citjb25zdCBpbnQgICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgodGNwQ29ubmVjdGlvblRhYmxlX29pZCk7CiAKIHRjcENvbm5lY3Rpb25UYWJsZV9yZWdpc3RyYXRpb24gdGNwQ29ubmVjdGlvblRhYmxlX3VzZXJfY29udGV4dDsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKaW5kZXggOWE3YjI5Yi4uMTdkMzEwNSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlLmgKQEAgLTMwMSw4ICszMDEsOCBAQAogICAgICAgICAqIHRjcENvbm5lY3Rpb25UYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgKICAgICAgICAgKHRjcENvbm5lY3Rpb25UYWJsZV9taWJfaW5kZXggKiBtaWJfaWR4KTsKIAotICAgIGV4dGVybiBvaWQgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgdGNwQ29ubmVjdGlvblRhYmxlX29pZFtdOworICAgIGV4dGVybiBjb25zdCBpbnQgICAgICB0Y3BDb25uZWN0aW9uVGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgInRjcENvbm5lY3Rpb25UYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwQ29ubmVjdGlvblRhYmxlL3RjcENvbm5lY3Rpb25UYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmMKaW5kZXggNjZjNDJiNS4uYTRmNWJiZSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BDb25uZWN0aW9uVGFibGUvdGNwQ29ubmVjdGlvblRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTE4Nyw3ICsxODcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+cm10X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW50cnktPnJtdF9hZGRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS0+cm10X3BvcnQpKSkgewotICAgICAgICBDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCk7CisgICAgICAgIGlmIChDT05UQUlORVJfSU5TRVJUKGNvbnRhaW5lciwgcm93cmVxX2N0eCkpIHsKKyAgICAgICAgICAgIE5FVFNOTVBfTE9HT05DRSgoTE9HX0RFQlVHLAorICAgICAgICAgICAgICAgICAgICAiRXJyb3IgaW5zZXJ0aW5nIGVudHJ5IHRvIHRjcENvbm5lY3Rpb25UYWJsZSwiXAorICAgICAgICAgICAgICAgICAgICAiIGVudHJ5IGFscmVhZHkgZXhpc3RzLiIpKTsKKyAgICAgICAgICAgIHRjcENvbm5lY3Rpb25UYWJsZV9yZWxlYXNlX3Jvd3JlcV9jdHgocm93cmVxX2N0eCk7CisgICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgICBpZiAocm93cmVxX2N0eCkgewogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCkBAIC0yNjAsNyArMjY1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfQUNDRVNTX1RDUENPTk5fRlJFRV9ET05UX0NMRUFSKTsKIAogICAgIERFQlVHTVNHVCgoInZlcmJvc2U6dGNwQ29ubmVjdGlvblRhYmxlOnRjcENvbm5lY3Rpb25UYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRjcENvbm5lY3Rpb25UYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmMKaW5kZXggMmE2ZmU3Yi4uZWJkNjcyYiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuYworKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5jCkBAIC0yNiw4ICsyNiw4IEBACiAKICNpbmNsdWRlICJ0Y3BMaXN0ZW5lclRhYmxlX2ludGVyZmFjZS5oIgogCi1vaWQgICAgICAgICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRbXSA9IHsgVENQTElTVEVORVJUQUJMRV9PSUQgfTsKLWludCAgICAgICAgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZF9zaXplID0KK2NvbnN0IG9pZCAgICAgICB0Y3BMaXN0ZW5lclRhYmxlX29pZFtdID0geyBUQ1BMSVNURU5FUlRBQkxFX09JRCB9OworY29uc3QgaW50ICAgICAgIHRjcExpc3RlbmVyVGFibGVfb2lkX3NpemUgPQogT0lEX0xFTkdUSCh0Y3BMaXN0ZW5lclRhYmxlX29pZCk7CiAKIHRjcExpc3RlbmVyVGFibGVfcmVnaXN0cmF0aW9uIHRjcExpc3RlbmVyVGFibGVfdXNlcl9jb250ZXh0OwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlLmgKaW5kZXggMDg5OGY5Yy4uMDhhNzQxYSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGUuaAorKysgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZS5oCkBAIC0xODIsOCArMTgyLDggQEAKICAgICAgICAgKiB0Y3BMaXN0ZW5lclRhYmxlX3Jvd19maW5kX2J5X21pYl9pbmRleCh0Y3BMaXN0ZW5lclRhYmxlX21pYl9pbmRleAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogbWliX2lkeCk7CiAKLSAgICBleHRlcm4gb2lkICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRbXTsKLSAgICBleHRlcm4gaW50ICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRfc2l6ZTsKKyAgICBleHRlcm4gY29uc3Qgb2lkICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRbXTsKKyAgICBleHRlcm4gY29uc3QgaW50ICAgICAgdGNwTGlzdGVuZXJUYWJsZV9vaWRfc2l6ZTsKIAogCiAjaW5jbHVkZSAidGNwTGlzdGVuZXJUYWJsZV9pbnRlcmZhY2UuaCIKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmMgYi9hZ2VudC9taWJncm91cC90Y3AtbWliL3RjcExpc3RlbmVyVGFibGUvdGNwTGlzdGVuZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCmluZGV4IDA1MDNmYjMuLjRhYTE0ZmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3RjcC1taWIvdGNwTGlzdGVuZXJUYWJsZS90Y3BMaXN0ZW5lclRhYmxlX2RhdGFfYWNjZXNzLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGNwLW1pYi90Y3BMaXN0ZW5lclRhYmxlL3RjcExpc3RlbmVyVGFibGVfZGF0YV9hY2Nlc3MuYwpAQCAtMjU4LDcgKzI1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0FDQ0VTU19UQ1BDT05OX0ZSRUVfRE9OVF9DTEVBUik7CiAKICAgICBERUJVR01TR1QoKCJ2ZXJib3NlOnRjcExpc3RlbmVyVGFibGU6dGNwTGlzdGVuZXJUYWJsZV9jYWNoZV9sb2FkIiwKLSAgICAgICAgICAgICAgICIlZCByZWNvcmRzXG4iLCBDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgICAgICAgICAgICAiJWQgcmVjb3Jkc1xuIiwgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CiAKICAgICByZXR1cm4gTUZEX1NVQ0NFU1M7CiB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRjcExpc3RlbmVyVGFibGVfY29udGFpbmVyX2xvYWQgKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMgYi9hZ2VudC9taWJncm91cC90ZXN0aGFuZGxlci5jCmluZGV4IDgwODU5Y2UuLmMwODY2ZGQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3Rlc3RoYW5kbGVyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdGVzdGhhbmRsZXIuYwpAQCAtNzQsNiArNzQsOCBAQAogICAgICAgICByZXR1cm47CiAKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKTsKKyAgICBpZiAodGFibGVfaW5mbyA9PSBOVUxMKQorICAgICAgICByZXR1cm47CiAKICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLCBBU05fSU5URUdFUiwgQVNOX0lOVEVHRVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7CkBAIC0xMjMsNiArMTI1LDggQEAKICAgICAgKiBhdXRvbWF0aWNhbGx5IHBhcnNlZCBjb2x1bW4gYW5kIGluZGV4IGluZm9ybWF0aW9uIAogICAgICAqLwogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOworICAgIGlmICh0YWJsZV9pbmZvID09IE5VTEwpCisgICAgICAgIHJldHVybjsKIAogICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHRhYmxlX2luZm8sIEFTTl9JTlRFR0VSLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9PQ1RFVF9TVFIsIDApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jIGIvYWdlbnQvbWliZ3JvdXAvdHVubmVsL3R1bm5lbC5jCmluZGV4IGNmYmVlNDYuLmNmNmVlZGEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3R1bm5lbC90dW5uZWwuYworKysgYi9hZ2VudC9taWJncm91cC90dW5uZWwvdHVubmVsLmMKQEAgLTYyLDggKzYyLDggQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvc3lzT1JUYWJsZS5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgogI2luY2x1ZGUgInR1bm5lbC5oIgogCiAjaWZuZGVmIE1JTgpAQCAtMTM3LDMyICsxMzcsMzUgQEAKICAgICAgKiBtYWdpYyBudW1iZXIgICAgICAgICwgdmFyaWFibGUgdHlwZSAsIHJvL3J3ICwgY2FsbGJhY2sgZm4gICwgTCwgb2lkc3VmZml4IAogICAgICAqLwogI2RlZmluZSAgIExPQ0FMQUREUkVTUyAgICAgICAgICAxCi0gICAge0xPQ0FMQUREUkVTUywgQVNOX0lQQUREUkVTUywgUldSSVRFLCB2YXJfdHVubmVsSWZFbnRyeSwgMywgezEsIDEsIDF9fSwKKyAgICB7TE9DQUxBRERSRVNTLCBBU05fSVBBRERSRVNTLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgMX19LAogI2RlZmluZSAgIFJFTU9URUFERFJFU1MgICAgICAgICAyCi0gICAge1JFTU9URUFERFJFU1MsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX3R1bm5lbElmRW50cnksIDMsCi0gICAgIHsxLCAxLCAyfX0sCisgICAge1JFTU9URUFERFJFU1MsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCAyfX0sCiAjZGVmaW5lICAgRU5DQVBTTUVUSE9EICAgICAgICAgIDMKLSAgICB7RU5DQVBTTUVUSE9ELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgM319LAorICAgIHtFTkNBUFNNRVRIT0QsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCAzfX0sCiAjZGVmaW5lICAgSE9QTElNSVQgICAgICAgICAgICAgIDQKLSAgICB7SE9QTElNSVQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgNH19LAorICAgIHtIT1BMSU1JVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA0fX0sCiAjZGVmaW5lICAgU0VDVVJJVFkgICAgICAgICAgICAgIDUKLSAgICB7U0VDVVJJVFksIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA1fX0sCisgICAge1NFQ1VSSVRZLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl90dW5uZWxJZkVudHJ5LCAzLCB7MSwgMSwgNX19LAogI2RlZmluZSAgIFRPUyAgICAgICAgICAgICAgICAgICA2Ci0gICAge1RPUywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA2fX0sCisgICAge1RPUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbElmRW50cnksIDMsIHsxLCAxLCA2fX0sCiAKICNkZWZpbmUgICBJRklOREVYICAgICAgICAgICAgICAgNwotICAgIHtJRklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl90dW5uZWxDb25maWdFbnRyeSwgMywgezIsIDEsIDV9fSwKKyAgICB7SUZJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfdHVubmVsQ29uZmlnRW50cnksIDMsIHsyLCAxLCA1fX0sCiAjZGVmaW5lICAgUk9XU1RBVFVTICAgICAgICAgICAgIDgKLSAgICB7Uk9XU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfdHVubmVsQ29uZmlnRW50cnksIDMsIHsyLCAxLCA2fX0sCisgICAge1JPV1NUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX3R1bm5lbENvbmZpZ0VudHJ5LCAzLCB7MiwgMSwgNn19LAogfTsKIAogCiAKLWV4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKik7Ci1leHRlcm4gaW50ICAgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QpOwotCiBzdGF0aWMgb2lkICAgICAgc3lzT1JUYWJsZV9yZWdbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMTAsIDEzMSB9Owotc3RhdGljIHNpemVfdCAgIHN5c09SVGFibGVfcmVnbGVuID0gODsKIAogc3RhdGljIHN0cnVjdCB0dW5uZWwgKnR1bm5lbHM7CiAKQEAgLTE3MSw3ICsxNzQsNyBAQAogdm9pZAogZGVpbml0X3R1bm5lbCh2b2lkKQogewotICAgIHVucmVnaXN0ZXJfc3lzT1JUYWJsZShzeXNPUlRhYmxlX3JlZywgc3lzT1JUYWJsZV9yZWdsZW4pOworICAgIFVOUkVHSVNURVJfU1lTT1JfRU5UUlkoc3lzT1JUYWJsZV9yZWcpOwogfQogCiAKQEAgLTE4OCw3ICsxOTEsNyBAQAogdm9pZAogaW5pdF90dW5uZWwodm9pZCkKIHsKLSAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKHN5c09SVGFibGVfcmVnLCBzeXNPUlRhYmxlX3JlZ2xlbiwKKyAgICBSRUdJU1RFUl9TWVNPUl9FTlRSWShzeXNPUlRhYmxlX3JlZywKICAgICAgICAgICAgICAgICAgICAgICAgICJSRkMgMjY2NyBUVU5ORUwtTUlCIGltcGxlbWVudGF0aW9uIGZvciAiCiAgICAgICAgICAgICAgICAgICAgICAgICAiTGludXggMi4yLngga2VybmVscy4iKTsKIApAQCAtMjEzLDggKzIxNiw4IEBACiAgICAgb2lkICAgICAgICAgICAgIG5hbWVbTUFYX09JRF9MRU5dID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAzIH07CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbmd0aCA9IDEwOwogICAgIHN0cnVjdCB2YXJpYWJsZSBpZlR5cGVfdmFyaWFibGUgPQotICAgICAgICB7IDMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDEwLAotICAgICAgICB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgM30KKyAgICAgICAgeyAzLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2lmRW50cnksIDEwLCB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgM30KICAgICB9OwogICAgIHVuc2lnbmVkIGNoYXIgICpwOwogICAgIHNpemVfdCAgICAgICAgICB2YXJfbGVuOwpAQCAtMjUyLDggKzI1NSw4IEBACiAgICAgb2lkICAgICAgICAgICAgIG5hbWVbTUFYX09JRF9MRU5dID0geyAxLCAzLCA2LCAxLCAyLCAxLCAyLCAyLCAxLCAyIH07CiAgICAgc2l6ZV90ICAgICAgICAgIGxlbmd0aCA9IDEwOwogICAgIHN0cnVjdCB2YXJpYWJsZSBpZk5hbWVfdmFyaWFibGUgPQotICAgICAgICB7IDIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2lmRW50cnksIDEwLAotICAgICAgICB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgMn0KKyAgICAgICAgeyAyLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgdmFyX2lmRW50cnksIDEwLCB7MSwgMywgNiwgMSwgMiwgMSwgMiwgMiwgMSwgMn0KICAgICB9OwogICAgIHVuc2lnbmVkIGNoYXIgICpwOwogICAgIHNpemVfdCAgICAgICAgICB2YXJfbGVuOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5jCmluZGV4IGJkNzg0ZmMuLjRkM2FmYTkgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmMKQEAgLTQsNiArNCwxMiBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CiAKKy8qIHdvcmthcm91bmQgZm9yIGJ1ZyBpbiBhdXRvY29uZiAyLjYwYiBhbmQgMi42MSAqLworI2lmZGVmIEhBVkVfR0VUTU5URU5UCisjdW5kZWYgSEFWRV9HRVRNTlRFTlQKKyNkZWZpbmUgSEFWRV9HRVRNTlRFTlQgMSAvKiBwcmV2aW91c2x5IG1pZ2h0IGJlIG9ubHkgIiNkZWZpbmUgSEFWRV9HRVRNTlRFTlQiICovCisjZW5kaWYKKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpZiBIQVZFX1NURExJQl9ICkBAIC0xNDAsNyArMTQ2LDcgQEAKIAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgImRpc2suaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCiAjaWYgVVNJTkdfVUNEX1NOTVBfRVJST1JNSUJfTU9EVUxFCiAjaW5jbHVkZSAiZXJyb3JtaWIuaCIKICNlbHNlCkBAIC0xNzAsMTAgKzE3Niw4IEBACiAgICAgaW50ICAgICAgICAgICAgIG1pbnBlcmNlbnQ7CiB9OwogCi0jaWZuZGVmICBJTlQzMl9NQVgKLSNkZWZpbmUgIElOVDMyX01BWCAgMHg3ZmZmZmZmZgotI2VuZGlmCi0KKyNkZWZpbmUgTUFYX0lOVF8zMiAweDdmZmZmZmZmCisjZGVmaW5lIE1BWF9VSU5UXzMyIDB4ZmZmZmZmZmYKIAogdW5zaWduZWQgaW50ICAgIG51bWRpc2tzOwogaW50ICAgICAgICAgICAgIGFsbERpc2tzSW5jbHVkZWQgPSAwOwpAQCAtMTgxLDIzICsxODUsNDIgQEAKIHN0cnVjdCBkaXNrcGFydCAqZGlza3M7CiAKIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9kaXNrX3ZhcmlhYmxlc1tdID0gewotICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge01JQklOREVYfX0sCi0gIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RVJST1JOQU1FfX0sCi0gIHtESVNLREVWSUNFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwKLSAgIHtESVNLREVWSUNFfX0sCi0gIHtESVNLTUlOSU1VTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLAotICAge0RJU0tNSU5JTVVNfX0sCi0gIHtESVNLTUlOUEVSQ0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLAotICAge0RJU0tNSU5QRVJDRU5UfX0sCi0gIHtESVNLVE9UQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tUT1RBTH19LAotICB7RElTS0FWQUlMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLQVZBSUx9fSwKLSAge0RJU0tVU0VELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVVNFRH19LAotICB7RElTS1BFUkNFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwKLSAgIHtESVNLUEVSQ0VOVH19LAotICB7RElTS1BFUkNFTlROT0RFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsCi0gICB7RElTS1BFUkNFTlROT0RFfX0sCi0gIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0VSUk9SRkxBR319LAotICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RVJST1JNU0d9fQorICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtNSUJJTkRFWH19LAorICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtFUlJPUk5BTUV9fSwKKyAge0RJU0tERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tERVZJQ0V9fSwKKyAge0RJU0tNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS01JTklNVU19fSwKKyAge0RJU0tNSU5QRVJDRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS01JTlBFUkNFTlR9fSwKKyAge0RJU0tUT1RBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tUT1RBTH19LAorICB7RElTS0FWQUlMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICB2YXJfZXh0ZW5zaWJsZV9kaXNrLCAxLCB7RElTS0FWQUlMfX0sCisgIHtESVNLVVNFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tVU0VEfX0sCisgIHtESVNLUEVSQ0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tQRVJDRU5UfX0sCisgIHtESVNLUEVSQ0VOVE5PREUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLUEVSQ0VOVE5PREV9fSwKKyAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0VSUk9SRkxBR319LAorICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0VSUk9STVNHfX0sCisgICB7RElTS1RPVEFMTE9XLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVE9UQUxMT1d9fSwKKyAgIHtESVNLVE9UQUxISUdILCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVE9UQUxISUdIfX0sCisgICB7RElTS0FWQUlMTE9XLCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLQVZBSUxMT1d9fSwKKyAgIHtESVNLQVZBSUxISUdILCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLQVZBSUxISUdIfX0sCisgICB7RElTS1VTRURMT1csIEFTTl9VTlNJR05FRCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgdmFyX2V4dGVuc2libGVfZGlzaywgMSwge0RJU0tVU0VETE9XfX0sCisgICB7RElTS1VTRURISUdILCBBU05fVU5TSUdORUQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgIHZhcl9leHRlbnNpYmxlX2Rpc2ssIDEsIHtESVNLVVNFREhJR0h9fSwKIH07CiAKIC8qCkBAIC0yNDMsNyArMjY2LDYgQEAKIGRpc2tfcGFyc2VfY29uZmlnKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogI2lmIEhBVkVfRlNUQUJfSCB8fCBIQVZFX0dFVE1OVEVOVCB8fCBIQVZFX1NUQVRGUwotICBjaGFyICAgICAgICAgICAgdG1wYnVmWzEwMjRdOwogICBjaGFyICAgICAgICAgICAgcGF0aFtTVFJNQVhdOwogICBpbnQgICAgICAgICAgICAgbWlucGVyY2VudDsKICAgaW50ICAgICAgICAgICAgIG1pbnNwYWNlOwpAQCAtMjU0LDkgKzI3Niw3IEBACiAgICAgICAgICAgZGlza3MgPSBtYWxsb2MobWF4ZGlza3MgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CiAgICAgICAgICAgaWYgKCFkaXNrcykgewogICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJtYWxsb2MgZmFpbGVkIGZvciBuZXcgZGlzayBhbGxvY2F0aW9uLiIpOwotICAgICAgICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiXHRpZ25vcmluZzogICVzIiwgY3B0cik7Ci0gICAgICAgICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MsIDAsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMjY1LDkgKzI4NSw3IEBACiAgICAgICAgICAgZGlza3MgPSByZWFsbG9jKGRpc2tzLCBtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKLSAgICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIlx0aWdub3Jpbmc6ICAlcyIsIGNwdHIpOwogICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgfQogICAgICAgICAgIG1lbXNldChkaXNrcyArIG1heGRpc2tzLzIsIDAsIG1heGRpc2tzLzIgKiBzaXplb2Yoc3RydWN0IGRpc2twYXJ0KSk7CkBAIC0yODUsNyArMzAzLDcgQEAKICAgICogcmVhZCBvcHRpb25hbCBtaW5pbXVtIGRpc2sgdXNhZ2Ugc3BlYyAKICAgICovCiAgIGlmKGNwdHIgIT0gTlVMTCkgewotICAgICAgaWYoc3RyY2hyKGNwdHIsICclJykgPT0gMCkgeworICAgICAgaWYoc3RyY2hyKGNwdHIsICclJykgPT0gTlVMTCkgewogICAgICAgICAgIG1pbnNwYWNlID0gYXRvaShjcHRyKTsKICAgICAgICAgICBtaW5wZXJjZW50ID0gLTE7CiAgICAgICB9CkBAIC0zMTAsNyArMzI4LDYgQEAKIGRpc2tfcGFyc2VfY29uZmlnX2FsbChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0cikKIHsKICNpZiBIQVZFX0ZTVEFCX0ggfHwgSEFWRV9HRVRNTlRFTlQgfHwgSEFWRV9TVEFURlMKLSAgY2hhciAgICAgICAgICAgIHRtcGJ1ZlsxMDI0XTsKICAgaW50ICAgICAgICAgICAgIG1pbnBlcmNlbnQgPSBESVNLTUlOUEVSQ0VOVDsKICAgICAKICAgaWYgKG51bWRpc2tzID09IG1heGRpc2tzKSB7CkBAIC0zMTksOCArMzM2LDcgQEAKICAgICAgICAgICBkaXNrcyA9IG1hbGxvYyhtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKLSAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MsIDAsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMzI5LDggKzM0NSw3IEBACiAgICAgICAgICAgZGlza3MgPSByZWFsbG9jKGRpc2tzLCBtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7CiAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1hbGxvYyBmYWlsZWQgZm9yIG5ldyBkaXNrIGFsbG9jYXRpb24uIik7Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKLSAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJcdGlnbm9yaW5nOiAgJXMiLCBjcHRyKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MgKyBtYXhkaXNrcy8yLCAwLCBtYXhkaXNrcy8yICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMzQwLDcgKzM1NSw3IEBACiAgICAqIHJlYWQgdGhlIG1pbmltdW0gZGlzayB1c2FnZSBwZXJjZW50CiAgICAqLwogICBpZihjcHRyICE9IE5VTEwpIHsKLSAgICAgIGlmKHN0cmNocihjcHRyLCAnJScpICE9IDApIHsKKyAgICAgIGlmKHN0cmNocihjcHRyLCAnJScpICE9IE5VTEwpIHsKICAgICAgICAgICBtaW5wZXJjZW50ID0gYXRvaShjcHRyKTsKICAgICAgIH0KICAgfQpAQCAtMzUyLDggKzM2Nyw3IEBACiAgICAqLwogICBpZihhbGxEaXNrc0luY2x1ZGVkKSB7CiAgICAgICBjb25maWdfcGVycm9yKCJpbmNsdWRlQWxsRGlza3MgYWxyZWFkeSBzcGVjaWZpZWQuIik7Ci0gICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiXHRpZ25vcmluZzogaW5jbHVkZUFsbERpc2tzICVzIiwgY3B0cik7Ci0gICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiXHRpZ25vcmluZzogaW5jbHVkZUFsbERpc2tzICVzIiwgY3B0cik7CiAgIH0KICAgZWxzZSB7CiAgICAgICBhbGxEaXNrc0luY2x1ZGVkID0gMTsKQEAgLTM3OCwxMCArMzkyLDcgQEAKICAgICAgICAgICBtYXhkaXNrcyA9IDUwOwogICAgICAgICAgIGRpc2tzID0gbWFsbG9jKG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwogICAgICAgICAgIGlmICghZGlza3MpIHsKLSAgICAgICAgICAgICAgY2hhciB0bXBidWZbMTAyNF07Ci0gICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJcdGlnbm9yaW5nOiAgJXMiLCBkZXZpY2UpOwotICAgICAgICAgICAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9IDA7Ci0gICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKwkgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiXHRpZ25vcmluZzogICVzIiwgZGV2aWNlKTsKICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgIH0KICAgICAgICAgICBtZW1zZXQoZGlza3MsIDAsIG1heGRpc2tzICogc2l6ZW9mKHN0cnVjdCBkaXNrcGFydCkpOwpAQCAtMzg5LDExICs0MDAsOCBAQAogICAgICAgICAgIG1heGRpc2tzICo9IDI7CiAgICAgICAgICAgZGlza3MgPSByZWFsbG9jKGRpc2tzLCBtYXhkaXNrcyAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKICAgICAgICAgICBpZiAoIWRpc2tzKSB7Ci0gICAgICAgICAgICAgIGNoYXIgdG1wYnVmWzEwMjRdOwogICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJtYWxsb2MgZmFpbGVkIGZvciBuZXcgZGlzayBhbGxvY2F0aW9uLiIpOwotICAgICAgICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiXHRpZ25vcmluZzogICVzIiwgZGV2aWNlKTsKLSAgICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisJICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIlx0aWdub3Jpbmc6ICAlcyIsIGRldmljZSk7CiAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICB9CiAgICAgICAgICAgbWVtc2V0KGRpc2tzICsgbWF4ZGlza3MvMiwgMCwgbWF4ZGlza3MvMiAqIHNpemVvZihzdHJ1Y3QgZGlza3BhcnQpKTsKQEAgLTQ2NCw3ICs0NzIsNyBAQAogI2lmIGRlZmluZWQoSEFWRV9HRVRNTlRFTlQpIHx8IGRlZmluZWQoSEFWRV9GU1RBQl9IKQogICBpbnQgZHVtbXkgPSAwOwogI2VuZGlmCi0gIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07CisKICAgLyogCiAgICAqIGZpbmQgdGhlIGRldmljZSBmb3IgdGhlIHBhdGggYW5kIGNvcHkgdGhlIGRldmljZSBpbnRvIHRoZQogICAgKiBzdHJpbmcgZGVjbGFyZWQgYWJvdmUgYW5kIGF0IHRoZSBlbmQgb2YgdGhlIHJvdXRpbmUgcmV0dXJuIGl0CkBAIC00NzUsOCArNDgzLDcgQEAKICNpZiBIQVZFX1NFVE1OVEVOVAogICBtbnRmcCA9IHNldG1udGVudChFVENfTU5UVEFCLCAiciIpOwogICBpZiAoIW1udGZwKSB7Ci0gICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbid0IG9wZW4gJXMgKHNldG1udGVudClcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChzZXRtbnRlbnQpXG4iLCBFVENfTU5UVEFCKTsKICAgICAgIHJldHVybjsKICAgfQogICB3aGlsZSAobW50ZnAgJiYgTlVMTCAhPSAobW50ZW50ID0gZ2V0bW50ZW50KG1udGZwKSkpIHsKQEAgLTQ5Myw4ICs1MDAsNyBAQAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnZXRtZW50ZW50IGJ1dCBub3Qgc2V0bW50ZW50ICovCiAgIG1udGZwID0gZm9wZW4oRVRDX01OVFRBQiwgInIiKTsKICAgaWYgKCFtbnRmcCkgewotICAgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIpOwogICAgICAgcmV0dXJuOwogICB9CiAgIHdoaWxlICgoaSA9IGdldG1udGVudChtbnRmcCwgJm1udHRhYikpID09IDApIHsKQEAgLTU0NSwxMSArNTUxLDggQEAKICAgICBpZiAobnVtZGlza3MgPT0gbWF4ZGlza3MpIHsKICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAiQ291bGRuJ3QgZmluZCBkZXZpY2UgZm9yIGRpc2sgJXMiLAotICAgICAgICAgICAgIGRpc2tzW251bWRpc2tzXS5wYXRoKTsKLSAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9IDA7Ci0gICAgY29uZmlnX3B3YXJuKHRtcGJ1Zik7CisgICAgbmV0c25tcF9jb25maWdfd2FybigiQ291bGRuJ3QgZmluZCBkZXZpY2UgZm9yIGRpc2sgJXMiLAorCQkJZGlza3NbbnVtZGlza3NdLnBhdGgpOwogICAgIGRpc2tzW251bWRpc2tzXS5taW5pbXVtc3BhY2UgPSAtMTsKICAgICBkaXNrc1tudW1kaXNrc10ubWlucGVyY2VudCA9IC0xOwogICAgIGRpc2tzW251bWRpc2tzXS5wYXRoWzBdID0gMDsKQEAgLTU3Niw3ICs1NzksNiBAQAogI2VsaWYgSEFWRV9TVEFURlMKICAgc3RydWN0IHN0YXRmcyAgIHN0YXRmOwogI2VuZGlmCi0gIGNoYXIgICAgICAgICAgICB0bXBidWZbMTAyNF07CiAgIHN0YXRpYyBjaGFyICAgICBkZXZpY2VbU1RSTUFYXTsKICNpZiBkZWZpbmVkKEhBVkVfR0VUTU5URU5UKSAmJiAhZGVmaW5lZChIQVZFX1NFVE1OVEVOVCkKICAgaW50ICAgICAgICAgICAgIGk7CkBAIC01OTQsOCArNTk2LDcgQEAKICNpZiBIQVZFX1NFVE1OVEVOVAogICBtbnRmcCA9IHNldG1udGVudChFVENfTU5UVEFCLCAiciIpOwogICBpZiAoIW1udGZwKSB7Ci0gICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNhbid0IG9wZW4gJXMgKHNldG1udGVudClcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChzZXRtbnRlbnQpXG4iLCBFVENfTU5UVEFCKTsKICAgICAgIHJldHVybiBOVUxMOwogICB9CiAgIHdoaWxlIChtbnRmcCAmJiBOVUxMICE9IChtbnRlbnQgPSBnZXRtbnRlbnQobW50ZnApKSkKQEAgLTYxMyw4ICs2MTQsNyBAQAogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBnZXRtZW50ZW50IGJ1dCBub3Qgc2V0bW50ZW50ICovCiAgIG1udGZwID0gZm9wZW4oRVRDX01OVFRBQiwgInIiKTsKICAgaWYgKCFtbnRmcCkgewotICAgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIgKTsKLSAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJDYW4ndCBvcGVuICVzIChmb3BlbilcbiIsIEVUQ19NTlRUQUIpOwogICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KICAgd2hpbGUgKChpID0gZ2V0bW50ZW50KG1udGZwLCAmbW50dGFiKSkgPT0gMCkKQEAgLTY0OCw5ICs2NDgsNyBAQAogICB9CiAjZW5kaWYKICAgZWxzZSB7Ci0gICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIkNvdWxkbid0IGZpbmQgZGV2aWNlIGZvciBkaXNrICVzIiwKLQkgICAgcGF0aCk7Ci0gICAgY29uZmlnX3B3YXJuKHRtcGJ1Zik7CisgICAgbmV0c25tcF9jb25maWdfd2FybigiQ291bGRuJ3QgZmluZCBkZXZpY2UgZm9yIGRpc2sgJXMiLCBwYXRoKTsKICAgfQogI2Vsc2UKICAgY29uZmlnX3BlcnJvcigiJ2Rpc2snIGNoZWNrcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgYXJjaGl0ZWN0dXJlLiIpOwpAQCAtNjU5LDM5ICs2NTcsMzMgQEAKIH0KICNlbmRpZgogCi0KIC8qCi0gKiB2YXJfZXh0ZW5zaWJsZV9kaXNrKC4uLgotICogQXJndW1lbnRzOgotICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKLSAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAotICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKLSAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAotICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKLSAqIHdyaXRlX21ldGhvZAotICogCisgKiBQYXJ0IG9mIFVDRC1TTk1QLU1JQjo6ZHNrRW50cnksIHdoaWNoIGlzIHNvIGhhcmQgdG8gZmlsbCAKKyAqIChpLmUuIHBsYXRmb3JtIGRlcGVuZGVudCBwYXJ0cykuCiAgKi8KLXVfY2hhciAgICAgICAgICoKLXZhcl9leHRlbnNpYmxlX2Rpc2soc3RydWN0IHZhcmlhYmxlICp2cCwKLSAgICAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsCi0gICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKLXsKK3N0cnVjdCBkc2tfZW50cnkgeworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgZHNrVG90YWw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nICBkc2tVc2VkOworICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAgZHNrQXZhaWw7CisgICAgdW5zaWduZWQgbG9uZyAgICAgICBkc2tQZXJjZW50OworICAgIHVuc2lnbmVkIGxvbmcgICAgICAgZHNrUGVyY2VudElub2RlOworICAgIHVuc2lnbmVkIGxvbmcgICAgICAgZHNrRXJyb3JGbGFnOworfTsKIAotICAgIGludCAgICAgICAgICAgICBwZXJjZW50LCBpc2Vycm9yOwotICAgIHVuc2lnbmVkIGludCAgICBkaXNrbnVtID0gMDsKLSNpZiAhZGVmaW5lZChIQVZFX1NZU19TVEFUVkZTX0gpICYmICFkZWZpbmVkKEhBVkVfU1RBVEZTKQotICAgIGRvdWJsZSAgICAgICAgICB0b3RhbGJsa3MsIGZyZWUsIHVzZWQsIGF2YWlsLCBhdmFpbGJsa3M7Ci0jZWxzZQotICAgIHN0YXRpYyBsb25nICAgICBhdmFpbDsKLSNpZiBkZWZpbmVkKFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTKSB8fCBkZWZpbmVkKFNUUlVDVF9TVEFURlNfSEFTX0ZfRklMRVMpCi0gICAgaW50ICAgICAgICAgICAgIHBlcmNlbnRfaW5vZGU7Ci0jZW5kaWYKLSNlbmRpZgotICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKLSAgICBzdGF0aWMgY2hhciAgICAgZXJybXNnWzMwMF07CisvKioKKyAqIEZpbGwgaW4gdGhlIHByb3ZpZGVkIGRza19lbnRyeSBzdHJ1Y3R1cmUuCisgKiBSZXR1cm5zIC0xIG9uIGVycm9yLCAwIG9uIHN1Y2Nlc3MuCisgKi8KKworc3RhdGljIGludAorZmlsbF9kc2tfZW50cnkoaW50IGRpc2tudW0sIHN0cnVjdCBkc2tfZW50cnkgKmVudHJ5KQoreworI2lmIGRlZmluZWQoSEFWRV9TVEFUVkZTKSB8fCBkZWZpbmVkKEhBVkVfU1RBVEZTKQogICAgIGZsb2F0ICAgICAgICAgICBtdWx0aXBsaWVyOworI2VuZGlmCisjaWYgZGVmaW5lZChIQVZFX0ZTVEFCX0gpICYmICFkZWZpbmVkKEhBVkVfU1lTX1NUQVRWRlNfSCkgJiYgIWRlZmluZWQoSEFWRV9TVEFURlMpCisgICAgZG91YmxlICAgICAgICAgIHRvdGFsYmxrcywgZnJlZSwgdXNlZCwgYXZhaWwsIGF2YWlsYmxrczsKKyNlbmRpZgogCiAjaWYgZGVmaW5lZChIQVZFX1NUQVRWRlMpIHx8IGRlZmluZWQoSEFWRV9TVEFURlMpCiAjaWZkZWYgU1RBVF9TVEFURlNfRlNfREFUQQpAQCAtNzEzLDYgKzcwNSwxMzIgQEAKICNlbmRpZgogI2VuZGlmCiAKKyAgICBlbnRyeS0+ZHNrUGVyY2VudElub2RlID0gLTE7CisKKyNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgfHwgZGVmaW5lZChIQVZFX1NUQVRGUykKKyNpZmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCisgICAgaWYgKHN0YXR2ZnMoZGlza3NbZGlza251bV0ucGF0aCwgJmZzZCkgPT0gLTEpCisjZWxzZQorICAgIGlmIChzdGF0dmZzKGRpc2tzW2Rpc2tudW1dLnBhdGgsICZ2ZnMpID09IC0xKQorI2VuZGlmCisgICAgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3Qgb3BlbiBkZXZpY2UgJXNcbiIsCisgICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7CisgICAgICAgIHNldFBlcnJvcnN0YXR1cygic3RhdHZmcyBkZXYvZGlzayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorI2lmZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKKyAgICB2ZnMuZl9ibG9ja3MgPSBmc2QuZmRfYnRvdDsKKyAgICB2ZnMuZl9iZnJlZSA9IGZzZC5mZF9iZnJlZTsKKyAgICB2ZnMuZl9iYXZhaWwgPSBmc2QuZmRfYmZyZWVuOworICAgIHZmcy5mX2JzaXplID0gMTAyNDsgICAgICAgICAvKiAgVWx0cml4IGZfYnNpemUgaXMgYSBWTSBwYXJhbWV0ZXIgYXBwYXJlbnRseS4gICovCisjZW5kaWYKKyNpZiBkZWZpbmVkKEhBVkVfT0RTKQorICAgIHZmcy5mX2Jsb2NrcyA9IHZmcy5mX3NwYXJlWzBdOworICAgIHZmcy5mX2JmcmVlID0gdmZzLmZfc3BhcmVbMV07CisgICAgdmZzLmZfYmF2YWlsID0gdmZzLmZfc3BhcmVbMl07CisjZW5kaWYKKworICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpdmZzLmZfYnNpemUgLyAoZmxvYXQpMTAyNC4wOworI2lmZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKKyAgICBpZiAodmZzLmZfZnJzaXplID4gMjU1KQorICAgICAgICBtdWx0aXBsaWVyID0gKGZsb2F0KXZmcy5mX2Zyc2l6ZSAvIChmbG9hdCkxMDI0LjA7CisjZW5kaWYKKworICAgIGVudHJ5LT5kc2tUb3RhbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKHZmcy5mX2Jsb2NrcyAqIG11bHRpcGxpZXIpOworICAgIGVudHJ5LT5kc2tBdmFpbCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKHZmcy5mX2JhdmFpbCAqIG11bHRpcGxpZXIpOworICAgIGVudHJ5LT5kc2tVc2VkID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoKHZmcy5mX2Jsb2NrcyAtIHZmcy5mX2JmcmVlKSAqIG11bHRpcGxpZXIpOworCisgICAgZW50cnktPmRza1BlcmNlbnQgPSAKKyAgICAgICAgdmZzLmZfYmxvY2tzID09IDAgPyAwIDoKKyAgICAgICAgdmZzLmZfYmF2YWlsIDw9IDAgPyAxMDAgOgorICAgICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2Jsb2NrcyAtIHZmcy5mX2JmcmVlKSAvCisgICAgICAgICAgICAgICAoZG91YmxlKSAodmZzLmZfYmxvY2tzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAodmZzLmZfYmZyZWUgLSB2ZnMuZl9iYXZhaWwpKSAqIDEwMC4wICsgMC41KTsKKworI2lmIGRlZmluZWQoSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZJTEVTKSB8fCBkZWZpbmVkIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZBVkFJTAorICAgIGVudHJ5LT5kc2tQZXJjZW50SW5vZGUgPSB2ZnMuZl9mYXZhaWwgPD0gMCA/IDEwMCA6CisgICAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfZmlsZXMgLSB2ZnMuZl9mZnJlZSkgLworICAgICAgICAgICAgICAgKGRvdWJsZSkgKHZmcy5mX2ZpbGVzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgICAodmZzLmZfZmZyZWUgLSB2ZnMuZl9mYXZhaWwpKSAqIDEwMC4wICsgMC41KTsKKyNlbHNlCisjaWYgZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFURlNfRl9GSUxFUykgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9TVEFURlNfRl9GRlJFRSkKKyAgICBlbnRyeS0+ZHNrUGVyY2VudElub2RlID0gdmZzLmZfZmlsZXMgPT0gMCA/IDEwMC4wIDoKKyAgICAgIChpbnQpICgoZG91YmxlKSAodmZzLmZfZmlsZXMgLSB2ZnMuZl9mZnJlZSkgLworICAgICAgICAgICAgICAoZG91YmxlKSAodmZzLmZfZmlsZXMpICogMTAwLjAgKyAwLjUpOworI2VuZGlmIAorI2VuZGlmIC8qIGRlZmluZWQoSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZJTEVTKSAqLworCisjZWxzZQorI2lmIEhBVkVfRlNUQUJfSAorICAgIC8qCisgICAgICogcmVhZCB0aGUgZGlzayBpbmZvcm1hdGlvbiAKKyAgICAgKi8KKyAgICBpZiAoKGZpbGUgPSBvcGVuKGRpc2tzW2Rpc2tudW1dLmRldmljZSwgMCkpIDwgMCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3Qgb3BlbiBkZXZpY2UgJXNcbiIsCisgICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7CisgICAgICAgIHNldFBlcnJvcnN0YXR1cygib3BlbiBkZXYvZGlzayIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGxzZWVrKGZpbGUsIChsb25nKSAoU0JMT0NLICogREVWX0JTSVpFKSwgMCk7CisgICAgaWYgKHJlYWQoZmlsZSwgKGNoYXIgKikgJmZpbGVzeXMsIFNCU0laRSkgIT0gU0JTSVpFKSB7CisgICAgICAgIHNldFBlcnJvcnN0YXR1cygib3BlbiBkZXYvZGlzayIpOworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRXJyb3IgcmVhZGluZyBkZXZpY2UgJXNcbiIsCisgICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7CisgICAgICAgIGNsb3NlKGZpbGUpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGNsb3NlKGZpbGUpOworCisgICAgdG90YWxibGtzID0gZmlsZXN5cy5mc19kc2l6ZTsKKyAgICBmcmVlID0gZmlsZXN5cy5mc19jc3RvdGFsLmNzX25iZnJlZSAqIGZpbGVzeXMuZnNfZnJhZyArCisgICAgICAgIGZpbGVzeXMuZnNfY3N0b3RhbC5jc19uZmZyZWU7CisgICAgdXNlZCA9IHRvdGFsYmxrcyAtIGZyZWU7CisgICAgYXZhaWxibGtzID0gdG90YWxibGtzICogKDEwMCAtIGZpbGVzeXMuZnNfbWluZnJlZSkgLyAxMDA7CisgICAgYXZhaWwgPSBhdmFpbGJsa3MgPiB1c2VkID8gYXZhaWxibGtzIC0gdXNlZCA6IDA7CisgICAgZW50cnktPmRza1BlcmNlbnQgPQorICAgICAgICB0b3RhbGJsa3MgPT0gMCA/IDAgOgorICAgICAgICBhdmFpbGJsa3MgPT0gMCA/IDEwMCA6CisgICAgICAgIChpbnQpICgoZG91YmxlKSB1c2VkIC8gKGRvdWJsZSkgdG90YWxibGtzICogMTAwLjAgKyAwLjUpOworICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpZmlsZXN5cy5mc19mc2l6ZSAvIChmbG9hdCkxMDI0LjA7CisgICAgZW50cnktPmRza1RvdGFsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykodG90YWxibGtzICogbXVsdGlwbGllcik7CisgICAgZW50cnktPmRza0F2YWlsID0gKHVuc2lnbmVkIGxvbmcgbG9uZykoYXZhaWwgKiBtdWx0aXBsaWVyKTsKKyAgICBlbnRyeS0+ZHNrVXNlZCA9ICh1bnNpZ25lZCBsb25nIGxvbmcpKHVzZWQgKiBtdWx0aXBsaWVyKTsKKyNlbmRpZgorI2VuZGlmCisKKyAgICBlbnRyeS0+ZHNrRXJyb3JGbGFnID0KKyAgICAgICAgKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZSA+PSAwCisgICAgICAgICAgICA/IGVudHJ5LT5kc2tBdmFpbCA8IGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZQorICAgICAgICAgICAgOiAxMDAgLSBlbnRyeS0+ZHNrUGVyY2VudCA8PSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50KSA/IDEgOiAwOworCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiB2YXJfZXh0ZW5zaWJsZV9kaXNrKC4uLgorICogQXJndW1lbnRzOgorICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKKyAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAorICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKKyAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAorICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKKyAqIHdyaXRlX21ldGhvZAorICogCisgKi8KK3VfY2hhciAgICAgICAgICoKK3Zhcl9leHRlbnNpYmxlX2Rpc2soc3RydWN0IHZhcmlhYmxlICp2cCwKKyAgICAgICAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsCisgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIHZhcl9sZW4sIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmV0OworCXVuc2lnbmVkIGludAlkaXNrbnVtID0gMDsKKyAgICBzdHJ1Y3QgZHNrX2VudHJ5IGVudHJ5OworICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKKyAgICBzdGF0aWMgY2hhciAgICAgZXJybXNnWzMwMF07CisKIHRyeUFnYWluOgogICAgIGlmIChoZWFkZXJfc2ltcGxlX3RhYmxlCiAgICAgICAgICh2cCwgbmFtZSwgbGVuZ3RoLCBleGFjdCwgdmFyX2xlbiwgd3JpdGVfbWV0aG9kLCBudW1kaXNrcykpCkBAIC03MzcsMTg5ICs4NTUsODYgQEAKICAgICAgICAgbG9uZ19yZXQgPSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50OwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOwogICAgIH0KLSNpZiBkZWZpbmVkKEhBVkVfU1RBVFZGUykgfHwgZGVmaW5lZChIQVZFX1NUQVRGUykKLSNpZmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCi0gICAgaWYgKHN0YXR2ZnMoZGlza3NbZGlza251bV0ucGF0aCwgJmZzZCkgPT0gLTEpCi0jZWxzZQotICAgIGlmIChzdGF0dmZzKGRpc2tzW2Rpc2tudW1dLnBhdGgsICZ2ZnMpID09IC0xKQotI2VuZGlmCi0gICAgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGRuJ3Qgb3BlbiBkZXZpY2UgJXNcbiIsCi0gICAgICAgICAgICAgICAgIGRpc2tzW2Rpc2tudW1dLmRldmljZSk7Ci0gICAgICAgIHNldFBlcnJvcnN0YXR1cygic3RhdHZmcyBkZXYvZGlzayIpOworCisgICAgcmV0ID0gZmlsbF9kc2tfZW50cnkoZGlza251bSwgJmVudHJ5KTsKKyAgICBpZiAocmV0IDwgMCkgewogICAgICAgICBpZiAoIWV4YWN0KQogICAgICAgICAgICAgZ290byB0cnlBZ2FpbjsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotI2lmZGVmIFNUQVRfU1RBVEZTX0ZTX0RBVEEKLSAgICB2ZnMuZl9ibG9ja3MgPSBmc2QuZmRfYnRvdDsKLSAgICB2ZnMuZl9iZnJlZSA9IGZzZC5mZF9iZnJlZTsKLSAgICB2ZnMuZl9iYXZhaWwgPSBmc2QuZmRfYmZyZWVuOwotICAgIHZmcy5mX2JzaXplID0gMTAyNDsgICAgICAgICAvKiAgVWx0cml4IGZfYnNpemUgaXMgYSBWTSBwYXJhbWV0ZXIgYXBwYXJlbnRseS4gICovCi0jZW5kaWYKLSNpZiBkZWZpbmVkKEhBVkVfT0RTKQotICAgIHZmcy5mX2Jsb2NrcyA9IHZmcy5mX3NwYXJlWzBdOwotICAgIHZmcy5mX2JmcmVlID0gdmZzLmZfc3BhcmVbMV07Ci0gICAgdmZzLmZfYmF2YWlsID0gdmZzLmZfc3BhcmVbMl07Ci0jZW5kaWYKLSAgICBwZXJjZW50ID0KLSAgICAgICAgdmZzLmZfYmxvY2tzID09IDAgPyAwIDoKLSAgICAgICAgdmZzLmZfYmF2YWlsIDw9IDAgPyAxMDAgOgotICAgICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2Jsb2NrcyAtIHZmcy5mX2JmcmVlKSAvCi0gICAgICAgICAgICAgICAoZG91YmxlKSAodmZzLmZfYmxvY2tzIC0KLSAgICAgICAgICAgICAgICAgICAgICAgICAodmZzLmZfYmZyZWUgLSB2ZnMuZl9iYXZhaWwpKSAqIDEwMC4wICsgMC41KTsKLSAgICBtdWx0aXBsaWVyID0gKGZsb2F0KXZmcy5mX2JzaXplIC8gKGZsb2F0KTEwMjQuMDsKLSNpZmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GUlNJWkUKLSAgICBpZiAodmZzLmZfZnJzaXplID4gMjU1KQotICAgICAgICBtdWx0aXBsaWVyID0gKGZsb2F0KXZmcy5mX2Zyc2l6ZSAvIChmbG9hdCkxMDI0LjA7Ci0jZW5kaWYKLSAgICBhdmFpbCA9IChsb25nKSh2ZnMuZl9iYXZhaWwgKiBtdWx0aXBsaWVyKTsKLSAgICBpc2Vycm9yID0gKGRpc2tzW2Rpc2tudW1dLm1pbmltdW1zcGFjZSA+PSAwID8KLSAgICAgICAgICAgICAgIHZmcy5mX2JhdmFpbCA8IChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UvbXVsdGlwbGllcikgOgotICAgICAgICAgICAgICAgMTAwIC0gcGVyY2VudCA8PSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50KSA/IDEgOiAwOwotI2lmIGRlZmluZWQoU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRklMRVMpIHx8IGRlZmluZWQgU1RSVUNUX1NUQVRGU19IQVNfRl9GQVZBSUwKLSAgICBwZXJjZW50X2lub2RlID0gdmZzLmZfZmF2YWlsIDw9IDAgPyAxMDAgOgotICAgICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2ZpbGVzIC0gdmZzLmZfZmZyZWUpIC8KLSAgICAgICAgICAgICAgIChkb3VibGUpICh2ZnMuZl9maWxlcyAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgKHZmcy5mX2ZmcmVlIC0gdmZzLmZfZmF2YWlsKSkgKiAxMDAuMCArIDAuNSk7Ci0jZWxzZQotI2lmIGRlZmluZWQoU1RSVUNUX1NUQVRGU19IQVNfRl9GSUxFUykgJiYgZGVmaW5lZChTVFJVQ1RfU1RBVEZTX0hBU19GX0ZGUkVFKQotICAgcGVyY2VudF9pbm9kZSA9IHZmcy5mX2ZpbGVzID09IDAgPyAxMDAuMCA6Ci0gICAgICAoaW50KSAoKGRvdWJsZSkgKHZmcy5mX2ZpbGVzIC0gdmZzLmZfZmZyZWUpIC8KLQkgICAgICAgICAgKGRvdWJsZSkgKHZmcy5mX2ZpbGVzKSAqIDEwMC4wICsgMC41KTsKLSNlbmRpZiAKLSNlbmRpZiAvKiBkZWZpbmVkKFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZJTEVTKSAqLyAKKwogICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7CiAgICAgY2FzZSBESVNLVE9UQUw6Ci0gICAgICAgIGlmICggdmZzLmZfYmxvY2tzID4gKCBJTlQzMl9NQVggLyBtdWx0aXBsaWVyICkpCi0gICAgICAgICAgICBsb25nX3JldCA9IElOVDMyX01BWDsKKyAgICAgICAgaWYgKGVudHJ5LmRza1RvdGFsID4gTUFYX0lOVF8zMikKKyAgICAgICAgICAgIGxvbmdfcmV0ID0gTUFYX0lOVF8zMjsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9uZ19yZXQgPSAobG9uZykodmZzLmZfYmxvY2tzICogbXVsdGlwbGllcik7CisgICAgICAgICAgICBsb25nX3JldCA9IChsb25nKShlbnRyeS5kc2tUb3RhbCk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgY2FzZSBESVNLVE9UQUxMT1c6CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrVG90YWwgJiBNQVhfVUlOVF8zMjsKKyAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tUT1RBTEhJR0g6CisgICAgICAgIGxvbmdfcmV0ID0gZW50cnkuZHNrVG90YWwgPj4gMzI7CisgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgICAgIAogICAgIGNhc2UgRElTS0FWQUlMOgotICAgICAgICBpZiAoIHZmcy5mX2JhdmFpbCA+ICggSU5UMzJfTUFYIC8gbXVsdGlwbGllciApKQotICAgICAgICAgICAgbG9uZ19yZXQgPSBJTlQzMl9NQVg7CisgICAgICAgIGlmIChlbnRyeS5kc2tBdmFpbCA+IE1BWF9JTlRfMzIpCisgICAgICAgICAgICBsb25nX3JldCA9IE1BWF9JTlRfMzI7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gKGxvbmcpKHZmcy5mX2JhdmFpbCAqIG11bHRpcGxpZXIpOworICAgICAgICAgICAgbG9uZ19yZXQgPSAobG9uZykoZW50cnkuZHNrQXZhaWwpOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworICAgIGNhc2UgRElTS0FWQUlMTE9XOgorICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza0F2YWlsICYgTUFYX1VJTlRfMzI7CisgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgY2FzZSBESVNLQVZBSUxISUdIOgorICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza0F2YWlsID4+IDMyOworICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworCiAgICAgY2FzZSBESVNLVVNFRDoKLSAgICAgICAgaWYgKCAodmZzLmZfYmxvY2tzIC0gdmZzLmZfYmZyZWUpID4gKCBJTlQzMl9NQVggLyBtdWx0aXBsaWVyICkpCi0gICAgICAgICAgICBsb25nX3JldCA9IElOVDMyX01BWDsKKyAgICAgICAgaWYgKGVudHJ5LmRza1VzZWQgPiBNQVhfSU5UXzMyKQorICAgICAgICAgICAgbG9uZ19yZXQgPSBNQVhfSU5UXzMyOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKSgodmZzLmZfYmxvY2tzIC0gdmZzLmZfYmZyZWUpICogbXVsdGlwbGllcik7CisgICAgICAgICAgICBsb25nX3JldCA9IChsb25nKShlbnRyeS5kc2tVc2VkKTsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tVU0VETE9XOgorICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza1VzZWQgJiBNQVhfVUlOVF8zMjsKKyAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKyAgICBjYXNlIERJU0tVU0VESElHSDoKKyAgICAgICAgbG9uZ19yZXQgPSBlbnRyeS5kc2tVc2VkID4+IDMyOworICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOworCiAgICAgY2FzZSBESVNLUEVSQ0VOVDoKLSAgICAgICAgbG9uZ19yZXQgPSBwZXJjZW50OworICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza1BlcmNlbnQ7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0jaWYgZGVmaW5lZChTVFJVQ1RfU1RBVFZGU19IQVNfRl9GSUxFUykgfHwgZGVmaW5lZCAoU1RSVUNUX1NUQVRGU19IQVNfRl9GSUxFUykKKwogICAgIGNhc2UgRElTS1BFUkNFTlROT0RFOgotICAgICAgICBsb25nX3JldCA9IHBlcmNlbnRfaW5vZGU7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0jZW5kaWYKKyAgICAgICAgaWYgKGVudHJ5LmRza1BlcmNlbnRJbm9kZSA+PSAwKSB7CisgICAgICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza1BlcmNlbnRJbm9kZTsKKyAgICAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKICAgICBjYXNlIEVSUk9SRkxBRzoKLSAgICAgICAgbG9uZ19yZXQgPSBpc2Vycm9yOworICAgICAgICBsb25nX3JldCA9IGVudHJ5LmRza0Vycm9yRmxhZzsKICAgICAgICAgcmV0dXJuICgodV9jaGFyICopICgmbG9uZ19yZXQpKTsKKwogICAgIGNhc2UgRVJST1JNU0c6Ci0gICAgICAgIGlmIChpc2Vycm9yKSB7CisgICAgICAgIGlmIChlbnRyeS5kc2tFcnJvckZsYWcpIHsKICAgICAgICAgICAgIGlmIChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UgPj0gMCkKICAgICAgICAgICAgICAgICBzbnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLAogICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBsZXNzIHRoYW4gJWQgZnJlZSAoPSAlZCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0ucGF0aCwgZGlza3NbZGlza251bV0ubWluaW11bXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgKGludCkgYXZhaWwpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCkgZW50cnkuZHNrQXZhaWwpOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNucHJpbnRmKGVycm1zZywgc2l6ZW9mKGVycm1zZyksCiAgICAgICAgICAgICAgICAgICAgICAgICAiJXM6IGxlc3MgdGhhbiAlZCUlIGZyZWUgKD0gJWQlJSkiLAogICAgICAgICAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0ucGF0aCwgZGlza3NbZGlza251bV0ubWlucGVyY2VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHBlcmNlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludCllbnRyeS5kc2tQZXJjZW50KTsKICAgICAgICAgICAgIGVycm1zZ1sgc2l6ZW9mKGVycm1zZyktMSBdID0gMDsKICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBlcnJtc2dbMF0gPSAwOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihlcnJtc2cpOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKGVycm1zZykpOwogICAgIH0KLSNlbHNlCi0jaWYgSEFWRV9GU1RBQl9ICi0gICAgLyoKLSAgICAgKiByZWFkIHRoZSBkaXNrIGluZm9ybWF0aW9uIAotICAgICAqLwotICAgIGlmICgoZmlsZSA9IG9wZW4oZGlza3NbZGlza251bV0uZGV2aWNlLCAwKSkgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZG4ndCBvcGVuIGRldmljZSAlc1xuIiwKLSAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0uZGV2aWNlKTsKLSAgICAgICAgc2V0UGVycm9yc3RhdHVzKCJvcGVuIGRldi9kaXNrIik7Ci0gICAgICAgIGlmICghZXhhY3QpCi0gICAgICAgICAgICBnb3RvIHRyeUFnYWluOwotICAgICAgICByZXR1cm4gKE5VTEwpOwotICAgIH0KLSAgICBsc2VlayhmaWxlLCAobG9uZykgKFNCTE9DSyAqIERFVl9CU0laRSksIDApOwotICAgIGlmIChyZWFkKGZpbGUsIChjaGFyICopICZmaWxlc3lzLCBTQlNJWkUpICE9IFNCU0laRSkgewotICAgICAgICBzZXRQZXJyb3JzdGF0dXMoIm9wZW4gZGV2L2Rpc2siKTsKLSAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkVycm9yIHJlYWRpbmcgZGV2aWNlICVzXG4iLAotICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5kZXZpY2UpOwotICAgICAgICBjbG9zZShmaWxlKTsKLSAgICAgICAgaWYgKCFleGFjdCkKLSAgICAgICAgICAgIGdvdG8gdHJ5QWdhaW47Ci0gICAgICAgIHJldHVybiAoTlVMTCk7Ci0gICAgfQotICAgIGNsb3NlKGZpbGUpOwotICAgIHRvdGFsYmxrcyA9IGZpbGVzeXMuZnNfZHNpemU7Ci0gICAgZnJlZSA9IGZpbGVzeXMuZnNfY3N0b3RhbC5jc19uYmZyZWUgKiBmaWxlc3lzLmZzX2ZyYWcgKwotICAgICAgICBmaWxlc3lzLmZzX2NzdG90YWwuY3NfbmZmcmVlOwotICAgIHVzZWQgPSB0b3RhbGJsa3MgLSBmcmVlOwotICAgIGF2YWlsYmxrcyA9IHRvdGFsYmxrcyAqICgxMDAgLSBmaWxlc3lzLmZzX21pbmZyZWUpIC8gMTAwOwotICAgIGF2YWlsID0gYXZhaWxibGtzID4gdXNlZCA/IGF2YWlsYmxrcyAtIHVzZWQgOiAwOwotICAgIHBlcmNlbnQgPQotICAgICAgICB0b3RhbGJsa3MgPT0gMCA/IDAgOgotICAgICAgICBhdmFpbGJsa3MgPT0gMCA/IDEwMCA6Ci0gICAgICAgIChpbnQpICgoZG91YmxlKSB1c2VkIC8gKGRvdWJsZSkgdG90YWxibGtzICogMTAwLjAgKyAwLjUpOwotICAgIG11bHRpcGxpZXIgPSAoZmxvYXQpZmlsZXN5cy5mc19mc2l6ZSAvIChmbG9hdCkxMDI0LjA7Ci0gICAgaXNlcnJvciA9Ci0gICAgICAgIChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UgPj0gMAotICAgICAgICAgICAgPyBhdmFpbCAqIG11bHRpcGxpZXIgPCBkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UKLSAgICAgICAgICAgIDogMTAwIC0gcGVyY2VudCA8PSBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50KSA/IDEgOiAwOwotICAgIHN3aXRjaCAodnAtPm1hZ2ljKSB7Ci0gICAgY2FzZSBESVNLVE9UQUw6Ci0gICAgICAgIGlmICggdG90YWxibGtzID4gKCBJTlQzMl9NQVggLyBtdWx0aXBsaWVyICkpCi0gICAgICAgICAgICBsb25nX3JldCA9IElOVDMyX01BWDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbG9uZ19yZXQgPSAobG9uZykodG90YWxibGtzICogbXVsdGlwbGllcik7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBESVNLQVZBSUw6Ci0gICAgICAgIGlmICggYXZhaWwgPiAoIElOVDMyX01BWCAvIG11bHRpcGxpZXIgKSkKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gSU5UMzJfTUFYOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKShhdmFpbCAqIG11bHRpcGxpZXIpOwotICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOwotICAgIGNhc2UgRElTS1VTRUQ6Ci0gICAgICAgIGlmICggdXNlZCA+ICggIElOVDMyX01BWCAvIG11bHRpcGxpZXIgKSkKLSAgICAgICAgICAgIGxvbmdfcmV0ID0gSU5UMzJfTUFYOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBsb25nX3JldCA9IChsb25nKSh1c2VkICogbXVsdGlwbGllcik7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBESVNLUEVSQ0VOVDoKLSAgICAgICAgbG9uZ19yZXQgPSBwZXJjZW50OwotICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgKCZsb25nX3JldCkpOwotICAgIGNhc2UgRVJST1JGTEFHOgotICAgICAgICBsb25nX3JldCA9IGlzZXJyb3I7Ci0gICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7Ci0gICAgY2FzZSBFUlJPUk1TRzoKLSAgICAgICAgaWYgKGlzZXJyb3IpIHsKLSAgICAgICAgICAgIGlmIChkaXNrc1tkaXNrbnVtXS5taW5pbXVtc3BhY2UgPj0gMCkKLSAgICAgICAgICAgICAgICBzbnByaW50ZihlcnJtc2csIHNpemVvZihlcnJtc2cpLAotICAgICAgICAgICAgICAgICAgICAgICAgIiVzOiBsZXNzIHRoYW4gJWQgZnJlZSAoPSAlZCkiLAotICAgICAgICAgICAgICAgICAgICAgICAgZGlza3NbZGlza251bV0ucGF0aCwgZGlza3NbZGlza251bV0ubWluaW11bXNwYWNlLAotICAgICAgICAgICAgICAgICAgICAgICAgYXZhaWwgKiBmaWxlc3lzLmZzX2ZzaXplIC8gMTAyNCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgc25wcmludGYoZXJybXNnLCBzaXplb2YoZXJybXNnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICIlczogbGVzcyB0aGFuICVkJSUgZnJlZSAoPSAlZCUlKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBkaXNrc1tkaXNrbnVtXS5wYXRoLCBkaXNrc1tkaXNrbnVtXS5taW5wZXJjZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgcGVyY2VudCk7Ci0gICAgICAgICAgICBlcnJtc2dbIHNpemVvZihlcnJtc2cpLTEgXSA9IDA7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAgICAgZXJybXNnWzBdID0gMDsKLSAgICAgICAgKnZhcl9sZW4gPSBzdHJsZW4oZXJybXNnKTsKLSAgICAgICAgcmV0dXJuICgodV9jaGFyICopIChlcnJtc2cpKTsKLSAgICB9Ci0jZW5kaWYKLSNlbmRpZgogICAgIHJldHVybiBOVUxMOwogfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlzay5oCmluZGV4IDZiYzViMTQuLjIwZTkzMzIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2suaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNrLmgKQEAgLTcsNyArNyw3IEBACiAKIHZvaWQgICAgICAgICAgICBpbml0X2Rpc2sodm9pZCk7CiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCiAKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfZGlzazsKIApAQCAtMjEsNSArMjEsMTEgQEAKICNkZWZpbmUgRElTS1VTRUQgOAogI2RlZmluZSBESVNLUEVSQ0VOVCA5CiAjZGVmaW5lIERJU0tQRVJDRU5UTk9ERSAxMAorI2RlZmluZSBESVNLVE9UQUxMT1cgMTEKKyNkZWZpbmUgRElTS1RPVEFMSElHSCAxMgorI2RlZmluZSBESVNLQVZBSUxMT1cgMTMKKyNkZWZpbmUgRElTS0FWQUlMSElHSCAxNAorI2RlZmluZSBESVNLVVNFRExPVyAxNQorI2RlZmluZSBESVNLVVNFREhJR0ggMTYKIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBfTUlCR1JPVVBfRElTS19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kaXNraW8uYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jCmluZGV4IDA4ZWYzZjEuLmYyOTM4OGUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5jCkBAIC0yNSwxMyArMjUsMTIgQEAKICMgZW5kaWYKICNlbmRpZgogCisjaW5jbHVkZSA8bWF0aC5oPgorCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0vKgotICogaGVhZGVyX2dlbmVyaWMoKSBjb21lcyBmcm9tIGhlcmUgCi0gKi8KLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmgiCiAKIC8qCiAgKiBpbmNsdWRlIG91ciAuaCBmaWxlIApAQCAtNjEsMTggKzYwLDIyIEBACiBzdGF0aWMgaW50IHBzX251bWRpc2tzOwkJCS8qIG51bWJlciBvZiBkaXNrcyBpbiBzeXN0ZW0sIG1heSBjaGFuZ2Ugd2hpbGUgcnVubmluZyAqLwogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKGJzZGkzKSB8fCBkZWZpbmVkKGJzZGk0KQorI2lmIGRlZmluZWQoYnNkaTMpIHx8IGRlZmluZWQoYnNkaTQpIHx8IGRlZmluZWQob3BlbmJzZDQpCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CiAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgorI2lmZGVmIG9wZW5ic2Q0CisjaW5jbHVkZSA8c3lzL2Rpc2suaD4KKyNlbHNlCiAjaW5jbHVkZSA8c3lzL2Rpc2tzdGF0cy5oPgorI2VuZGlmCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJzZGkgKi8KIAotI2lmIGRlZmluZWQgKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQorI2lmIGRlZmluZWQoSEFWRV9HRVRERVZTKSB8fCBkZWZpbmVkKEhBVkVfREVWU1RBVF9HRVRERVZTKQogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2lmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwMQorI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAjaW5jbHVkZSA8c3lzL3Jlc291cmNlLmg+ICAgICAgIC8qIGZvciBDUFVTVEFURVMgaW4gZGV2c3RhdC5oICovCi0jZWxpZiAhZGVmaW5lZChkcmFnb25mbHkpCisjZWxpZiBIQVZFX1NZU19ES1NUQVRfSAogI2luY2x1ZGUgPHN5cy9ka3N0YXQuaD4KICNlbmRpZgogI2luY2x1ZGUgPGRldnN0YXQuaD4KQEAgLTg0LDEyICs4NywxNyBAQAogCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZyZWVic2QgKi8KIAotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICNkZWZpbmUgR0VUREVWUyh4KSBkZXZzdGF0X2dldGRldnMoTlVMTCwgKHgpKQogI2Vsc2UKICAgI2RlZmluZSBHRVRERVZTKHgpIGdldGRldnMoKHgpKQogI2VuZGlmCiAKKyNpZiBkZWZpbmVkIChsaW51eCkKKyNkZWZpbmUgRElTS0lPX1NBTVBMRV9JTlRFUlZBTCA1Cit2b2lkIGRldmxhX2dldHN0YXRzKHVuc2lnbmVkIGludCByZWdubywgdm9pZCAqIGR1bW15KTsKKyNlbmRpZiAvKiBsaW51eCAqLworCiAjaWYgZGVmaW5lZCAoZGFyd2luKQogI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NvcmVGb3VuZGF0aW9uLmg+CiAjaW5jbHVkZSA8SU9LaXQvSU9LaXRMaWIuaD4KQEAgLTEwMiw3ICsxMTAsNyBAQAogCiB2b2lkICAgICAgICAgICAgZGlza2lvX3BhcnNlX2NvbmZpZyhjb25zdCBjaGFyICosIGNoYXIgKik7CiAKLSNpZiBkZWZpbmVkIChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkKKyNpZiBkZWZpbmVkIChIQVZFX0dFVERFVlMpIHx8IGRlZmluZWQoSEFWRV9ERVZTVEFUX0dFVERFVlMpCiB2b2lkCQlkZXZsYV9nZXRzdGF0cyh1bnNpZ25lZCBpbnQgcmVnbm8sIHZvaWQgKmR1bW15KTsKICNlbmRpZgogCkBAIC0xNDIsMTkgKzE1MCwzMCBAQAogICAgICAqLwogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBkaXNraW9fdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtESVNLSU9fSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezF9fSwKLSAgICAgICAge0RJU0tJT19ERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7Mn19LAotICAgICAgICB7RElTS0lPX05SRUFELCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHszfX0sCi0gICAgICAgIHtESVNLSU9fTldSSVRURU4sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezR9fSwKLSAgICAgICAge0RJU0tJT19SRUFEUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7NX19LAotICAgICAgICB7RElTS0lPX1dSSVRFUywgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZGlza2lvLCAxLCB7Nn19LAotI2lmIGRlZmluZWQoZnJlZWJzZDQpIHx8IGRlZmluZWQoZnJlZWJzZDUpCi0gICAgICAgIHtESVNLSU9fTEExLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHs5fX0sCi0gICAgICAgIHtESVNLSU9fTEE1LCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9kaXNraW8sIDEsIHsxMH19LAotICAgICAgICB7RElTS0lPX0xBMTUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezExfX0sCisgICAgICAgIHtESVNLSU9fSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxfX0sCisgICAgICAgIHtESVNLSU9fREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsyfX0sCisgICAgICAgIHtESVNLSU9fTlJFQUQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHszfX0sCisgICAgICAgIHtESVNLSU9fTldSSVRURU4sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHs0fX0sCisgICAgICAgIHtESVNLSU9fUkVBRFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHs1fX0sCisgICAgICAgIHtESVNLSU9fV1JJVEVTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZGlza2lvLCAxLCB7Nn19LAorI2lmIGRlZmluZWQoSEFWRV9HRVRERVZTKSB8fCBkZWZpbmVkKEhBVkVfREVWU1RBVF9HRVRERVZTKSB8fCBkZWZpbmVkKGxpbnV4KQorICAgICAgICB7RElTS0lPX0xBMSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2Rpc2tpbywgMSwgezl9fSwKKyAgICAgICAge0RJU0tJT19MQTUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxMH19LAorICAgICAgICB7RElTS0lPX0xBMTUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxMX19LAogI2VuZGlmCi0gICAgICAgIHtESVNLSU9fTlJFQURYLCBBU05fQ09VTlRFUjY0LCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezEyfX0sCi0gICAgICAgIHtESVNLSU9fTldSSVRURU5YLCBBU05fQ09VTlRFUjY0LCBST05MWSwgdmFyX2Rpc2tpbywgMSwgezEzfX0sCisgICAgICAgIHtESVNLSU9fTlJFQURYLCBBU05fQ09VTlRFUjY0LCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9kaXNraW8sIDEsIHsxMn19LAorICAgICAgICB7RElTS0lPX05XUklUVEVOWCwgQVNOX0NPVU5URVI2NCwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZGlza2lvLCAxLCB7MTN9fSwKICAgICB9OwogCiAgICAgLyoKQEAgLTIwMCwxMCArMjE5LDEwIEBACiAgICAgcHNfZGlzayA9IE5VTEw7CiAjZW5kaWYKIAotI2lmIGRlZmluZWQgKGZyZWVic2Q0KSB8fCBkZWZpbmVkKGZyZWVic2Q1KQotCWRldmxhX2dldHN0YXRzKDAsIE5VTEwpOwotCS8qIGNvbGxlY3QgTEEgZGF0YSByZWd1bGFybHkgKi8KLQlzbm1wX2FsYXJtX3JlZ2lzdGVyKERJU0tJT19TQU1QTEVfSU5URVJWQUwsIFNBX1JFUEVBVCwgZGV2bGFfZ2V0c3RhdHMsIE5VTEwpOworI2lmIGRlZmluZWQgKEhBVkVfR0VUREVWUykgfHwgZGVmaW5lZChIQVZFX0RFVlNUQVRfR0VUREVWUykgfHwgZGVmaW5lZChsaW51eCkKKyAgICBkZXZsYV9nZXRzdGF0cygwLCBOVUxMKTsKKyAgICAvKiBjb2xsZWN0IExBIGRhdGEgcmVndWxhcmx5ICovCisgICAgc25tcF9hbGFybV9yZWdpc3RlcihESVNLSU9fU0FNUExFX0lOVEVSVkFMLCBTQV9SRVBFQVQsIGRldmxhX2dldHN0YXRzLCBOVUxMKTsKICNlbmRpZgogCiB9CkBAIC00MjIsMTIgKzQ0MSwyODkgQEAKIH0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYnNkaSAqLwogCi0jaWYgZGVmaW5lZChmcmVlYnNkNCkgfHwgZGVmaW5lZChmcmVlYnNkNSkKKyNpZiBkZWZpbmVkKG9wZW5ic2Q0KQorc3RhdGljIGludCAgICAgIG5kaXNrOworc3RhdGljIHN0cnVjdCBkaXNrc3RhdHMgKmRrOworc3RhdGljIGNoYXIgICAqKmRrbmFtZTsKKworc3RhdGljIGludAorZ2V0c3RhdHModm9pZCkKK3sKKyAgICB0aW1lX3QgICAgICAgICAgbm93OworICAgIGludCAgICAgICAgICAgICBtaWJbMl07CisgICAgY2hhciAgICAgICAgICAgKnQsICp0cCwqdGU7CisgICAgc2l6ZV90ICAgICAgICAgIHNpemUsIGRrbl9zaXplOworICAgIGludCAgICAgICAgICAgICBpOworCisgICAgbm93ID0gdGltZShOVUxMKTsKKyAgICBpZiAoY2FjaGVfdGltZSArIENBQ0hFX1RJTUVPVVQgPiBub3cpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIG1pYlswXSA9IENUTF9IVzsKKyAgICBtaWJbMV0gPSBIV19ESVNLU1RBVFM7CisgICAgc2l6ZSA9IDA7CisgICAgaWYgKHN5c2N0bChtaWIsIDIsIE5VTEwsICZzaXplLCBOVUxMLCAwKSA8IDApIHsKKyAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLU1RBVFMgbWliIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAobmRpc2sgIT0gc2l6ZSAvIHNpemVvZigqZGspKSB7CisgICAgICAgIGlmIChkaykKKyAgICAgICAgICAgIGZyZWUoZGspOworICAgICAgICBpZiAoZGtuYW1lKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpc2s7IGkrKykKKyAgICAgICAgICAgICAgICBpZiAoZGtuYW1lW2ldKQorICAgICAgICAgICAgICAgICAgICBmcmVlKGRrbmFtZVtpXSk7CisgICAgICAgICAgICBmcmVlKGRrbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgbmRpc2sgPSBzaXplIC8gc2l6ZW9mKCpkayk7CisgICAgICAgIGlmIChuZGlzayA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGRrbmFtZSA9IG1hbGxvYyhuZGlzayAqIHNpemVvZihjaGFyICopKTsKKyAgICAgICAgbWliWzBdID0gQ1RMX0hXOworICAgICAgICBtaWJbMV0gPSBIV19ESVNLTkFNRVM7CisgICAgICAgIGlmIChzeXNjdGwobWliLCAyLCBOVUxMLCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB0ZSA9IHRwID0gdCA9IG1hbGxvYyhka25fc2l6ZSk7CisgICAgICAgIGlmIChzeXNjdGwobWliLCAyLCB0LCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmRpc2s7IGkrKykgeworCSAgICB3aGlsZSAodGUtdCA8IGRrbl9zaXplICYmICp0ZSAhPSAnLCcpIHRlKys7CisJICAgICp0ZSsrID0gJ1wwJzsKKyAgICAgICAgICAgIGRrbmFtZVtpXSA9IHN0cmR1cCh0cCk7CisgICAgICAgICAgICB0cCA9IHRlOworICAgICAgICB9CisgICAgICAgIGZyZWUodCk7CisgICAgICAgIGRrID0gbWFsbG9jKG5kaXNrICogc2l6ZW9mKCpkaykpOworICAgIH0KKyAgICBtaWJbMF0gPSBDVExfSFc7CisgICAgbWliWzFdID0gSFdfRElTS1NUQVRTOworICAgIGlmIChzeXNjdGwobWliLCAyLCBkaywgJnNpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBIV19ESVNLU1RBVFMgbWliIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBjYWNoZV90aW1lID0gbm93OworICAgIHJldHVybiAxOworfQorCit1X2NoYXIgICAgICAgICAqCit2YXJfZGlza2lvKHN0cnVjdCB2YXJpYWJsZSAqIHZwLAorICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKKyAgICBzdGF0aWMgc3RydWN0IGNvdW50ZXI2NCBjNjRfcmV0OworICAgIHVuc2lnbmVkIGludCAgICBpbmR4OworCisgICAgaWYgKGdldHN0YXRzKCkgPT0gMCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoaGVhZGVyX3NpbXBsZV90YWJsZQorICAgICAgICAodnAsIG5hbWUsIGxlbmd0aCwgZXhhY3QsIHZhcl9sZW4sIHdyaXRlX21ldGhvZCwgbmRpc2spKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGluZHggPSAodW5zaWduZWQgaW50KSAobmFtZVsqbGVuZ3RoIC0gMV0gLSAxKTsKKyAgICBpZiAoaW5keCA+PSBuZGlzaykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBzd2l0Y2ggKHZwLT5tYWdpYykgeworICAgIGNhc2UgRElTS0lPX0lOREVYOgorICAgICAgICBsb25nX3JldCA9IChsb25nKSBpbmR4ICsgMTsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19ERVZJQ0U6CisgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGRrbmFtZVtpbmR4XSk7CisgICAgICAgIHJldHVybiAodV9jaGFyICopIGRrbmFtZVtpbmR4XTsKKyAgICBjYXNlIERJU0tJT19OUkVBRDoKKyAgICAgICAgbG9uZ19yZXQgPSAodW5zaWduZWQgbG9uZykgKGRrW2luZHhdLmRzX3JieXRlcykgJiAweGZmZmZmZmZmOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX05XUklUVEVOOgorICAgICAgICBsb25nX3JldCA9ICh1bnNpZ25lZCBsb25nKSAoZGtbaW5keF0uZHNfd2J5dGVzKSAmIDB4ZmZmZmZmZmY7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisgICAgY2FzZSBESVNLSU9fUkVBRFM6CisgICAgICAgIGxvbmdfcmV0ID0gKHVuc2lnbmVkIGxvbmcpIGRrW2luZHhdLmRzX3J4ZmVyICYgMHhmZmZmZmZmZjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19XUklURVM6CisgICAgICAgIGxvbmdfcmV0ID0gKHVuc2lnbmVkIGxvbmcpIGRrW2luZHhdLmRzX3d4ZmVyICYgMHhmZmZmZmZmZjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19OUkVBRFg6CisgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpOworICAgICAgICBjNjRfcmV0LmxvdyA9IGRrW2luZHhdLmRzX3JieXRlcyAmIDB4ZmZmZmZmZmY7CisgICAgICAgIGM2NF9yZXQuaGlnaCA9IGRrW2luZHhdLmRzX3JieXRlcyA+PiAzMjsKKyAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBjNjRfcmV0OworICAgIGNhc2UgRElTS0lPX05XUklUVEVOWDoKKyAgICAgICAgKnZhcl9sZW4gPSBzaXplb2Yoc3RydWN0IGNvdW50ZXI2NCk7CisgICAgICAgIGM2NF9yZXQubG93ID0gZGtbaW5keF0uZHNfcmJ5dGVzICYgMHhmZmZmZmZmZjsKKyAgICAgICAgYzY0X3JldC5oaWdoID0gZGtbaW5keF0uZHNfcmJ5dGVzID4+IDMyOworICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGM2NF9yZXQ7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBFUlJPUl9NU0coImRpc2tpby5jOiBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgdGhpcyByZXF1ZXN0LiIpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3BlbmJzZCAqLworCisjaWZkZWYgX19OZXRCU0RfXworI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KK3N0YXRpYyBpbnQgICAgICBuZGlzazsKKyNpZmRlZiBIV19JT1NUQVROQU1FUworc3RhdGljIGludCBubWliWzJdID0ge0NUTF9IVywgSFdfSU9TVEFUTkFNRVN9OworI2Vsc2UKK3N0YXRpYyBpbnQgbm1pYlsyXSA9IHtDVExfSFcsIEhXX0RJU0tOQU1FU307CisjZW5kaWYKKyNpZmRlZiBIV19ESVNLU1RBVFMKKyNpbmNsdWRlIDxzeXMvZGlzay5oPgorc3RhdGljIGludCBkbWliWzNdID0ge0NUTF9IVywgSFdfRElTS1NUQVRTLCBzaXplb2Yoc3RydWN0IGRpc2tfc3lzY3RsKX07CitzdGF0aWMgc3RydWN0IGRpc2tfc3lzY3RsICpkazsKKyNlbmRpZgorI2lmZGVmIEhXX0lPU1RBVFMKKyNpbmNsdWRlIDxzeXMvaW9zdGF0Lmg+CitzdGF0aWMgaW50IGRtaWJbM10gPSB7Q1RMX0hXLCBIV19JT1NUQVRTLCBzaXplb2Yoc3RydWN0IGlvX3N5c2N0bCl9Oworc3RhdGljIHN0cnVjdCBpb19zeXNjdGwgKmRrOworI2VuZGlmCitzdGF0aWMgY2hhciAgICoqZGtuYW1lOworCitzdGF0aWMgaW50CitnZXRzdGF0cyh2b2lkKQoreworICAgIHRpbWVfdCAgICAgICAgICBub3c7CisgICAgY2hhciAgICAgICAgICAgKnQsICp0cDsKKyAgICBzaXplX3QgICAgICAgICAgc2l6ZSwgZGtuX3NpemU7CisgICAgaW50ICAgICAgICAgICAgIGk7CisKKyAgICBub3cgPSB0aW1lKE5VTEwpOworICAgIGlmIChjYWNoZV90aW1lICsgQ0FDSEVfVElNRU9VVCA+IG5vdykgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgc2l6ZSA9IDA7CisgICAgaWYgKHN5c2N0bChkbWliLCAzLCBOVUxMLCAmc2l6ZSwgTlVMTCwgMCkgPCAwKSB7CisgICAgICAgIHBlcnJvcigiQ2FuJ3QgZ2V0IHNpemUgb2YgSFdfRElTS1NUQVRTL0hXX0lPU1RBVFMgbWliIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBpZiAobmRpc2sgIT0gc2l6ZSAvIGRtaWJbMl0pIHsKKyAgICAgICAgaWYgKGRrKQorICAgICAgICAgICAgZnJlZShkayk7CisgICAgICAgIGlmIChka25hbWUpIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuZGlzazsgaSsrKQorICAgICAgICAgICAgICAgIGlmIChka25hbWVbaV0pCisgICAgICAgICAgICAgICAgICAgIGZyZWUoZGtuYW1lW2ldKTsKKyAgICAgICAgICAgIGZyZWUoZGtuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBuZGlzayA9IHNpemUgLyBkbWliWzJdOworICAgICAgICBpZiAobmRpc2sgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICBka25hbWUgPSBtYWxsb2MobmRpc2sgKiBzaXplb2YoY2hhciAqKSk7CisgICAgICAgIGRrbl9zaXplID0gMDsKKyAgICAgICAgaWYgKHN5c2N0bChubWliLCAyLCBOVUxMLCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICB0ID0gbWFsbG9jKGRrbl9zaXplKTsKKyAgICAgICAgaWYgKHN5c2N0bChubWliLCAyLCB0LCAmZGtuX3NpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICAgICAgcGVycm9yKCJDYW4ndCBnZXQgc2l6ZSBvZiBIV19ESVNLTkFNRVMgbWliIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwLCB0cCA9IHN0cnRvayh0LCAiICIpOyB0cCAmJiBpIDwgbmRpc2s7IGkrKywKKwkgICAgdHAgPSBzdHJ0b2soTlVMTCwgIiAiKSkgeworICAgICAgICAgICAgZGtuYW1lW2ldID0gc3RyZHVwKHRwKTsKKyAgICAgICAgfQorICAgICAgICBmcmVlKHQpOworICAgICAgICBkayA9IG1hbGxvYyhuZGlzayAqIHNpemVvZigqZGspKTsKKyAgICB9CisgICAgaWYgKHN5c2N0bChkbWliLCAzLCBkaywgJnNpemUsIE5VTEwsIDApIDwgMCkgeworICAgICAgICBwZXJyb3IoIkNhbid0IGdldCBIV19ESVNLU1RBVFMvSFdfSU9TVEFUUyBtaWIiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGNhY2hlX3RpbWUgPSBub3c7CisgICAgcmV0dXJuIDE7Cit9CisKK3VfY2hhciAqCit2YXJfZGlza2lvKHN0cnVjdCB2YXJpYWJsZSAqIHZwLAorICAgICAgICAgICBvaWQgKiBuYW1lLAorICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgsCisgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIHN0YXRpYyBsb25nICAgICBsb25nX3JldDsKKyAgICB1bnNpZ25lZCBpbnQgICAgaW5keDsKKworICAgIGlmIChnZXRzdGF0cygpID09IDApCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKGhlYWRlcl9zaW1wbGVfdGFibGUKKyAgICAgICAgKHZwLCBuYW1lLCBsZW5ndGgsIGV4YWN0LCB2YXJfbGVuLCB3cml0ZV9tZXRob2QsIG5kaXNrKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBpbmR4ID0gKHVuc2lnbmVkIGludCkgKG5hbWVbKmxlbmd0aCAtIDFdIC0gMSk7CisgICAgaWYgKGluZHggPj0gbmRpc2spCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3dpdGNoICh2cC0+bWFnaWMpIHsKKyAgICBjYXNlIERJU0tJT19JTkRFWDoKKyAgICAgICAgbG9uZ19yZXQgPSAobG9uZykgaW5keCArIDE7CisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBjYXNlIERJU0tJT19ERVZJQ0U6CisgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGRrbmFtZVtpbmR4XSk7CisgICAgICAgIHJldHVybiAodV9jaGFyICopIGRrbmFtZVtpbmR4XTsKKworICAgIGNhc2UgRElTS0lPX05SRUFEOgorI2lmZGVmIEhXX0RJU0tTVEFUUworICAgICAJbG9uZ19yZXQgPSBka1tpbmR4XS5ka19yYnl0ZXM7CisjZW5kaWYKKyNpZmRlZiBIV19JT1NUQVRTCisJaWYgKGRrW2luZHhdLnR5cGUgPT0gSU9TVEFUX0RJU0spCisJICAgIGxvbmdfcmV0ID0gZGtbaW5keF0ucmJ5dGVzOworI2VuZGlmCisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBjYXNlIERJU0tJT19OV1JJVFRFTjoKKyNpZmRlZiBIV19ESVNLU1RBVFMKKyAgICAgCWxvbmdfcmV0ID0gZGtbaW5keF0uZGtfd2J5dGVzOworI2VuZGlmCisjaWZkZWYgSFdfSU9TVEFUUworCWlmIChka1tpbmR4XS50eXBlID09IElPU1RBVF9ESVNLKQorCSAgICBsb25nX3JldCA9IGRrW2luZHhdLndieXRlczsKKyNlbmRpZgorICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworCisgICAgY2FzZSBESVNLSU9fUkVBRFM6CisjaWZkZWYgSFdfRElTS1NUQVRTCisgICAgIAlsb25nX3JldCA9IGRrW2luZHhdLmRrX3J4ZmVyOworI2VuZGlmCisjaWZkZWYgSFdfSU9TVEFUUworCWlmIChka1tpbmR4XS50eXBlID09IElPU1RBVF9ESVNLKQorCSAgICBsb25nX3JldCA9IGRrW2luZHhdLnJ4ZmVyOworI2VuZGlmCisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBjYXNlIERJU0tJT19XUklURVM6CisjaWZkZWYgSFdfRElTS1NUQVRTCisgICAgIAlsb25nX3JldCA9IGRrW2luZHhdLmRrX3d4ZmVyOworI2VuZGlmCisjaWZkZWYgSFdfSU9TVEFUUworCWlmIChka1tpbmR4XS50eXBlID09IElPU1RBVF9ESVNLKQorCSAgICBsb25nX3JldCA9IGRrW2luZHhdLnd4ZmVyOworI2VuZGlmCisgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBFUlJPUl9NU0coImRpc2tpby5jOiBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgdGhpcyByZXF1ZXN0LiIpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKyNlbmRpZiAvKiBfX05ldEJTRF9fICovCisKKyNpZiBkZWZpbmVkKEhBVkVfR0VUREVWUykgfHwgZGVmaW5lZChIQVZFX0RFVlNUQVRfR0VUREVWUykKIAogLyogZGlzayBsb2FkIGF2ZXJhZ2UgcGF0Y2ggYnkgUm9qZXIgKi8KIAogc3RydWN0IGRldl9sYSB7Ci0jaWYgKCBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcgKQorI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIHN0cnVjdCBiaW50aW1lIHByZXY7CiAjZWxzZQogICAgICAgICBzdHJ1Y3QgdGltZXZhbCBwcmV2OwpAQCAtNDM5LDcgKzczNSw3IEBACiBzdGF0aWMgc3RydWN0IGRldl9sYSAqZGV2bG9hZHMgPSBOVUxMOwogc3RhdGljIGludCBuZGV2cyA9IDA7CiAKLSNpZiAhICggZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3ICkKKyNpZiAhIEhBVkVfREVWU1RBVF9HRVRERVZTCiBkb3VibGUgZGV2bGFfdGltZXZhbF9kaWZmKHN0cnVjdCB0aW1ldmFsICp0MSwgc3RydWN0IHRpbWV2YWwgKnQyKSB7CiAKICAgICAgICAgZG91YmxlIGR0MSA9IChkb3VibGUpIHQxLT50dl9zZWMgKyAoZG91YmxlKSB0MS0+dHZfdXNlYyAqIDAuMDAwMDAxOwpAQCAtNDg4LDcgKzc4NCw3IEBACiAgICAgICAgIGlmIChuZGV2cyA9PSAwKSB7CiAgICAgICAgICAgICAgICAgbmRldnMgPSBsYXN0YXQtPmRpbmZvLT5udW1kZXZzOwogICAgICAgICAgICAgICAgIGRldmxvYWRzID0gKHN0cnVjdCBkZXZfbGEgKikgbWFsbG9jKG5kZXZzICogc2l6ZW9mKHN0cnVjdCBkZXZfbGEpKTsKLSAgICAgICAgICAgICAgICBiemVybyhkZXZsb2FkcywgbmRldnMgKiBzaXplb2Yoc3RydWN0IGRldl9sYSkpOworICAgICAgICAgICAgICAgIG1lbXNldChkZXZsb2FkcywgJ1wwJywgbmRldnMgKiBzaXplb2Yoc3RydWN0IGRldl9sYSkpOwogICAgICAgICAgICAgICAgIGZvciAoaT0wOyBpIDwgbmRldnM7IGkrKykgewogICAgICAgICAgICAgICAgICAgICAgICAgZGV2bG9hZHNbaV0ubGExID0gZGV2bG9hZHNbaV0ubGE1ID0gZGV2bG9hZHNbaV0ubGExNSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICBtZW1jcHkoJmRldmxvYWRzW2ldLnByZXYsICZsYXN0YXQtPmRpbmZvLT5kZXZpY2VzW2ldLmJ1c3lfdGltZSwgc2l6ZW9mKGRldmxvYWRzW2ldLnByZXYpKTsKQEAgLTUwMSw3ICs3OTcsNyBAQAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICBmb3IgKGk9MDsgaTxuZGV2czsgaSsrKSB7Ci0jaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3CisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICAgICAgICAgICAgICAgICBidXN5X3RpbWUgPSBkZXZzdGF0X2NvbXB1dGVfZXRpbWUoJmxhc3RhdC0+ZGluZm8tPmRldmljZXNbaV0uYnVzeV90aW1lLCAmZGV2bG9hZHNbaV0ucHJldik7CiAjZWxzZQogICAgICAgICAgICAgICAgIGJ1c3lfdGltZSA9IGRldmxhX3RpbWV2YWxfZGlmZigmZGV2bG9hZHNbaV0ucHJldiwgJmxhc3RhdC0+ZGluZm8tPmRldmljZXNbaV0uYnVzeV90aW1lKTsKQEAgLTU5NywxNCArODkzLDE0IEBACiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmRldmljZV9uYW1lKTsKICAgICAgICAgcmV0dXJuICh1X2NoYXIgKikgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uZGV2aWNlX25hbWU7CiAgICAgY2FzZSBESVNLSU9fTlJFQUQ6Ci0jaWYgZGVmaW5lZChmcmVlYnNkNSkgJiYgX19GcmVlQlNEX3ZlcnNpb24gPj0gNTAwMTA3CisjaWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKICAgICAgICAgbG9uZ19yZXQgPSAoc2lnbmVkIGxvbmcpIHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzW0RFVlNUQVRfUkVBRF07CiAjZWxzZQogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uYnl0ZXNfcmVhZDsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OwogICAgIGNhc2UgRElTS0lPX05XUklUVEVOOgotI2lmIGRlZmluZWQoZnJlZWJzZDUpICYmIF9fRnJlZUJTRF92ZXJzaW9uID49IDUwMDEwNworI2lmIEhBVkVfREVWU1RBVF9HRVRERVZTCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc1tERVZTVEFUX1dSSVRFXTsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc193cml0dGVuOwpAQCAtNjEyLDcgKzkwOCw3IEBACiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CiAgICAgY2FzZSBESVNLSU9fTlJFQURYOgogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nbG9uZ19yZXQgPSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc1tERVZTVEFUX1JFQURdOwogI2Vsc2UKICAgICAgICAgbG9uZ2xvbmdfcmV0ID0gc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0uYnl0ZXNfcmVhZDsKQEAgLTYyMiw3ICs5MTgsNyBAQAogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGM2NF9yZXQ7CiAgICAgY2FzZSBESVNLSU9fTldSSVRURU5YOgogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nbG9uZ19yZXQgPSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5ieXRlc1tERVZTVEFUX1dSSVRFXTsKICNlbHNlCiAgICAgICAgIGxvbmdsb25nX3JldCA9IHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLmJ5dGVzX3dyaXR0ZW47CkBAIC02MzEsMTQgKzkyNywxNCBAQAogICAgICAgICBjNjRfcmV0LmhpZ2ggPSBsb25nbG9uZ19yZXQgPj4gMzI7CiAgICAgICAgIHJldHVybiAodV9jaGFyICopICYgYzY0X3JldDsKICAgICBjYXNlIERJU0tJT19SRUFEUzoKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0ub3BlcmF0aW9uc1tERVZTVEFUX1JFQURdOwogI2Vsc2UKICAgICAgICAgbG9uZ19yZXQgPSAoc2lnbmVkIGxvbmcpIHN0YXQtPmRpbmZvLT5kZXZpY2VzW2luZHhdLm51bV9yZWFkczsKICNlbmRpZgogICAgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OwogICAgIGNhc2UgRElTS0lPX1dSSVRFUzoKLSNpZiBkZWZpbmVkKGZyZWVic2Q1KSAmJiBfX0ZyZWVCU0RfdmVyc2lvbiA+PSA1MDAxMDcKKyNpZiBIQVZFX0RFVlNUQVRfR0VUREVWUwogICAgICAgICBsb25nX3JldCA9IChzaWduZWQgbG9uZykgc3RhdC0+ZGluZm8tPmRldmljZXNbaW5keF0ub3BlcmF0aW9uc1tERVZTVEFUX1dSSVRFXTsKICNlbHNlCiAgICAgICAgIGxvbmdfcmV0ID0gKHNpZ25lZCBsb25nKSBzdGF0LT5kaW5mby0+ZGV2aWNlc1tpbmR4XS5udW1fd3JpdGVzOwpAQCAtNjg1LDYgKzk4MSwxMyBAQAogICAgIHVuc2lnbmVkIGxvbmcgIGF2ZXE7CiB9IGxpbnV4X2Rpc2tpbzsKIAorLyogZGlzayBsb2FkIGF2ZXJhZ2VzICovCit0eXBlZGVmIHN0cnVjdCBsaW51eF9kaXNraW9fbGEKK3sKKyAgICB1bnNpZ25lZCBsb25nIHVzZV9wcmV2OworICAgIGRvdWJsZSBsYTEsIGxhNSwgbGExNTsKK30gbGludXhfZGlza2lvX2xhOworCiB0eXBlZGVmIHN0cnVjdCBsaW51eF9kaXNraW9faGVhZGVyCiB7CiAgICAgbGludXhfZGlza2lvKiBpbmRpY2VzOwpAQCAtNjkyLDggKzk5NSw1OSBAQAogICAgIGludCBhbGxvYzsKIH0gbGludXhfZGlza2lvX2hlYWRlcjsKIAotc3RhdGljIGxpbnV4X2Rpc2tpb19oZWFkZXIgaGVhZDsKK3R5cGVkZWYgc3RydWN0IGxpbnV4X2Rpc2tpb19sYV9oZWFkZXIKK3sKKyAgICBsaW51eF9kaXNraW9fbGEgKiBpbmRpY2VzOyAgIAorICAgIGludCBsZW5ndGg7Cit9IGxpbnV4X2Rpc2tpb19sYV9oZWFkZXI7CiAKK3N0YXRpYyBsaW51eF9kaXNraW9faGVhZGVyIGhlYWQ7CitzdGF0aWMgbGludXhfZGlza2lvX2xhX2hlYWRlciBsYV9oZWFkOworCit2b2lkIGRldmxhX2dldHN0YXRzKHVuc2lnbmVkIGludCByZWdubywgdm9pZCAqIGR1bW15KSB7CisKKyAgICBzdGF0aWMgZG91YmxlIGV4cG9uMSwgZXhwb241LCBleHBvbjE1OworICAgIGRvdWJsZSBidXN5X3RpbWUsIGJ1c3lfcGVyY2VudDsKKyAgICBpbnQgaWR4OworCisgICAgaWYgKGdldHN0YXRzKCkgPT0gMSkgeworICAgICAgICBFUlJPUl9NU0coImNhbid0IGRvIGRpc2tpbyBnZXRzdGF0cygpXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghbGFfaGVhZC5sZW5ndGgpIHsKKyAgICAgICAgbGFfaGVhZC5pbmRpY2VzID0gKGxpbnV4X2Rpc2tpb19sYSAqKSBtYWxsb2MoaGVhZC5sZW5ndGggKiBzaXplb2YobGludXhfZGlza2lvX2xhKSk7CisgICAgICAgIGZvciAoaWR4PTA7IGlkeDxoZWFkLmxlbmd0aDsgaWR4KyspIHsKKyAgICAgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMSA9IGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhNSA9IGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMTUgPSAwLjsgCisgICAgICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS51c2VfcHJldiA9IGhlYWQuaW5kaWNlc1tpZHhdLnVzZTsKKyAgICAgICAgfQorICAgICAgICBsYV9oZWFkLmxlbmd0aCA9IGhlYWQubGVuZ3RoOworICAgICAgICBleHBvbjEgPSBleHAoLSgoKGRvdWJsZSlESVNLSU9fU0FNUExFX0lOVEVSVkFMKSAvICgoZG91YmxlKTYwKSkpOworICAgICAgICBleHBvbjUgPSBleHAoLSgoKGRvdWJsZSlESVNLSU9fU0FNUExFX0lOVEVSVkFMKSAvICgoZG91YmxlKTMwMCkpKTsKKyAgICAgICAgZXhwb24xNSA9IGV4cCgtKCgoZG91YmxlKURJU0tJT19TQU1QTEVfSU5URVJWQUwpIC8gKChkb3VibGUpOTAwKSkpOworICAgIH0KKyAgICBlbHNlIGlmIChoZWFkLmxlbmd0aCAtIGxhX2hlYWQubGVuZ3RoKSB7CisgICAgICAgIGxhX2hlYWQuaW5kaWNlcyA9IChsaW51eF9kaXNraW9fbGEgKikgcmVhbGxvYyhsYV9oZWFkLmluZGljZXMsIGhlYWQubGVuZ3RoICogc2l6ZW9mKGxpbnV4X2Rpc2tpb19sYSkpOworICAgICAgICBmb3IgKGlkeD1sYV9oZWFkLmxlbmd0aDsgaWR4PGhlYWQubGVuZ3RoOyBpZHgrKykgeworICAgICAgICAgICAgbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGE1ID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExNSA9IDAuOyAKKyAgICAgICAgICAgIGxhX2hlYWQuaW5kaWNlc1tpZHhdLnVzZV9wcmV2ID0gaGVhZC5pbmRpY2VzW2lkeF0udXNlOworICAgICAgICB9CisgICAgICAgIGxhX2hlYWQubGVuZ3RoID0gaGVhZC5sZW5ndGg7CisgICAgfQorCisgICAgZm9yIChpZHg9MDsgaWR4PGhlYWQubGVuZ3RoOyBpZHgrKykgeworICAgICAgICBidXN5X3RpbWUgPSBoZWFkLmluZGljZXNbaWR4XS51c2UgLSBsYV9oZWFkLmluZGljZXNbaWR4XS51c2VfcHJldjsKKyAgICAgICAgYnVzeV9wZXJjZW50ID0gYnVzeV90aW1lICogMTAwLiAvICgoZG91YmxlKSBESVNLSU9fU0FNUExFX0lOVEVSVkFMKSAvIDEwMDAuOworICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTEgPSBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTEgKiBleHBvbjEgKyBidXN5X3BlcmNlbnQgKiAoMS4gLSBleHBvbjEpOworICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTUgPSBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTUgKiBleHBvbjUgKyBidXN5X3BlcmNlbnQgKiAoMS4gLSBleHBvbjUpOworICAgICAgICBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTE1ID0gbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGExNSAqIGV4cG9uMTUgKyBidXN5X3BlcmNlbnQgKiAoMS4gLSBleHBvbjE1KTsKKyAgICAgICAgLyoKKyAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiglZCkgdXBkYXRlIGxhMT0lZiBsYTU9JWYgbGExNT0lZlxuIiwKKyAgICAgICAgICBpZHgsIGxhX2hlYWQuaW5kaWNlc1tpZHhdLmxhMSwgbGFfaGVhZC5pbmRpY2VzW2lkeF0ubGE1LCBsYV9oZWFkLmluZGljZXNbaWR4XS5sYTE1KTsgICAKKyAgICAgICAgKi8KKyAgICAgICAgbGFfaGVhZC5pbmRpY2VzW2lkeF0udXNlX3ByZXYgPSBoZWFkLmluZGljZXNbaWR4XS51c2U7CisgICAgfQorfQogCiBpbnQgZ2V0c3RhdHModm9pZCkKIHsKQEAgLTgyNiw2ICsxMTgwLDE1IEBACiAgICAgY2FzZSBESVNLSU9fV1JJVEVTOgogICAgICAgbG9uZ19yZXQgPSBoZWFkLmluZGljZXNbaW5keF0ud2lvICYgMHhmZmZmZmZmZjsKICAgICAgIHJldHVybiAodV9jaGFyICopICYgbG9uZ19yZXQ7CisgICAgY2FzZSBESVNLSU9fTEExOgorICAgICAgbG9uZ19yZXQgPSBsYV9oZWFkLmluZGljZXNbaW5keF0ubGExOworICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKKyAgICBjYXNlIERJU0tJT19MQTU6CisgICAgICBsb25nX3JldCA9IGxhX2hlYWQuaW5kaWNlc1tpbmR4XS5sYTU7CisgICAgICByZXR1cm4gKHVfY2hhciAqKSAmIGxvbmdfcmV0OworICAgIGNhc2UgRElTS0lPX0xBMTU6CisgICAgICBsb25nX3JldCA9IGxhX2hlYWQuaW5kaWNlc1tpbmR4XS5sYTE1OworICAgICAgcmV0dXJuICh1X2NoYXIgKikgJiBsb25nX3JldDsKICAgICBjYXNlIERJU0tJT19OUkVBRFg6CiAgICAgICAqdmFyX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKICAgICAgIGM2NF9yZXQubG93ID0gaGVhZC5pbmRpY2VzW2luZHhdLnJzZWN0ICogNTEyICYgMHhmZmZmZmZmZjsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Rpc2tpby5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgKaW5kZXggMDU1OTZhYi4uOGNkMjA2YiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGlza2lvLmgKQEAgLTEsNyArMSw3IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9ESVNLSU9fSAogI2RlZmluZSBfTUlCR1JPVVBfRElTS0lPX0gKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKIGNvbmZpZ19hZGRfbWliKFVDRC1ESVNLSU8tTUlCKQogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5jCmluZGV4IGE2YjliMzQuLjBhODUyMTMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuYwpAQCAtMjksOSArMjksNiBAQAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKIAotI2lmIGRlZmluZWQoSEFWRV9ETEZDTl9IKSAmJiAoZGVmaW5lZChIQVZFX0RMT1BFTikgfHwgZGVmaW5lZChIQVZFX0xJQkRMKSkgXAotICAgIHx8IGRlZmluZWQoV0lOMzIpCi0KICNpZiBkZWZpbmVkKFdJTjMyKQogI2luY2x1ZGUgPHdpbmRvd3MuaD4KICNlbHNlCkBAIC01MSwxMSArNDgsMTYgQEAKICAqIGluZm9ybWF0aW9uIGZvciB0aGUgZGxtb2QgbWliCiAgKi8KIHN0YXRpYyBzdHJ1Y3QgdmFyaWFibGU0IGRsbW9kX3ZhcmlhYmxlc1tdID0gewotICAgIHtETE1PRE5FWFRJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZGxtb2QsIDEsIHsxfX0sCi0gICAge0RMTU9ETkFNRSwgQVNOX09DVEVUX1NUUiwgUldSSVRFLCB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDJ9fSwKLSAgICB7RExNT0RQQVRILCBBU05fT0NURVRfU1RSLCBSV1JJVEUsIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgM319LAotICAgIHtETE1PREVSUk9SLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA0fX0sCi0gICAge0RMTU9EU1RBVFVTLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDV9fSwKKyAgICB7RExNT0RORVhUSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2RsbW9kLCAxLCB7MX19LAorICAgIHtETE1PRE5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCAyfX0sCisgICAge0RMTU9EUEFUSCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZGxtb2RFbnRyeSwgMywgezIsIDEsIDN9fSwKKyAgICB7RExNT0RFUlJPUiwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9kbG1vZEVudHJ5LCAzLCB7MiwgMSwgNH19LAorICAgIHtETE1PRFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgdmFyX2RsbW9kRW50cnksIDMsIHsyLCAxLCA1fX0sCiB9OwogCiBzdGF0aWMgb2lkICAgICAgZGxtb2RfdmFyaWFibGVzX29pZFtdID0geyAxLCAzLCA2LCAxLCA0LCAxLCAyMDIxLCAxMywgMTQgfTsKQEAgLTI5MywxMSArMjk1LDE4IEBACiAKICAgICBzbnByaW50ZihzeW1fZGVpbml0LCBzaXplb2Yoc3ltX2RlaW5pdCksICJkZWluaXRfJXMiLCBkbG0tPm5hbWUpOwogICAgIGRsX2RlaW5pdCA9IGRsbW9kX2Rsc3ltKGRsbS0+aGFuZGxlLCBzeW1fZGVpbml0KTsKLSAgICBpZiAoZGxfZGVpbml0ID09IE5VTEwpIHsKLSAgICAgICAgc25wcmludGYoZGxtLT5lcnJvciwgc2l6ZW9mKGRsbS0+ZXJyb3IpLAotICAgICAgICAgICAgICAgICAiZGxzeW0gZmFpbGVkOiBjYW4ndCBmaW5kIFwnJXNcJyIsIHN5bV9kZWluaXQpOwotICAgIH0gZWxzZSB7CisgICAgaWYgKGRsX2RlaW5pdCkgeworICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiQ2FsbGluZyBkZWluaXRfJXMoKVxuIiwgZGxtLT5uYW1lKSk7CiAgICAgICAgIGRsX2RlaW5pdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHNucHJpbnRmKHN5bV9kZWluaXQsIHNpemVvZihzeW1fZGVpbml0KSwgInNodXRkb3duXyVzIiwgZGxtLT5uYW1lKTsKKyAgICAgICAgZGxfZGVpbml0ID0gZGxtb2RfZGxzeW0oZGxtLT5oYW5kbGUsIHN5bV9kZWluaXQpOworICAgICAgICBpZiAoZGxfZGVpbml0KSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZGxtb2QiLCAiQ2FsbGluZyBzaHV0ZG93bl8lcygpXG4iLCBkbG0tPm5hbWUpKTsKKyAgICAgICAgICAgIGRsX2RlaW5pdCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImRsbW9kIiwgIk5vIGRlc3RydWN0b3IgZm9yICVzXG4iLCBkbG0tPm5hbWUpKTsKKyAgICAgICAgfQogICAgIH0KICAgICBkbG1vZF9kbGNsb3NlKGRsbS0+aGFuZGxlKTsKICAgICBkbG0tPnN0YXR1cyA9IERMTU9EX1VOTE9BREVEOwpAQCAtNjU4LDE0ICs2NjcsMyBAQAogICAgIH0KICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKIH0KLQotI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBubyBkbG9wZW4gc3VwcG9ydCAqLwotCi12b2lkCi1pbml0X2RsbW9kKHZvaWQpCi17Ci0gICAgREVCVUdNU0dUTCgoImRsbW9kIiwKLSAgICAgICAgICAgICAgICAiRHluYW1pYyBtb2R1bGVzIG5vdCBzdXBwb3J0IG9uIHRoaXMgcGxhdGZvcm1cbiIpKTsKLX0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZGxtb2QuaAppbmRleCA2OTBiYzQ1Li40ZmJmYjllIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9kbG1vZC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2RsbW9kLmgKQEAgLTcsOCArNywxMSBAQAogI2RlZmluZSBfTUlCR1JPVVBfRExNT0RfSAogCiAvKgotICogVE9ETyAjaW5jbHVkZSAibWliZGVmcy5oIiAKKyAqIFRPRE8gI2luY2x1ZGUgIm1pYmRlZnMuaCIKICAqLworI2lmICghZGVmaW5lZChIQVZFX0RMRkNOX0gpIHx8ICFkZWZpbmVkKEhBVkVfRExPUEVOKSkgJiYgIWRlZmluZWQoV0lOMzIpCitjb25maWdfZXJyb3IoRHluYW1pYyBtb2R1bGVzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyBwbGF0Zm9ybSkKKyNlbmRpZgogCiBjb25maWdfYWRkX21pYihVQ0QtRExNT0QtTUlCKQogI2lmbmRlZiBTTk1QRExNT0RQQVRICmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuYwppbmRleCAwZjExZTk5Li4wZmFmYjU0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmMKQEAgLTEyMiw3ICsxMjIsNyBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAiZXJyb3JtaWIuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiBzdGF0aWMgdGltZV90ICAgZXJyb3JzdGF0dXN0aW1lID0gMDsKIHN0YXRpYyBpbnQgICAgICBlcnJvcnN0YXR1c3ByaW9yID0gMDsKQEAgLTE1OSwxNCArMTU5LDE0IEBACiAgICAgICogaW5mb3JtYXRpb24gYXQgCiAgICAgICovCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX2Vycm9yX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9lcnJvcnMsIDEsCi0gICAgICAgICB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2Vycm9ycywgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2Vycm9ycywgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfZXJyb3JzLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2Vycm9ybWliLmgKaW5kZXggNWRjYjJjYy4uNTAxNjQyYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXJyb3JtaWIuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9lcnJvcm1pYi5oCkBAIC02LDcgKzYsNyBAQAogCiB2b2lkICAgICAgICAgICAgaW5pdF9lcnJvcm1pYih2b2lkKTsKIAotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKICAgICAgdm9pZCAgICAgICAgICAgIHNldFBlcnJvcnN0YXR1cyhjb25zdCBjaGFyICopOwogICAgICB2b2lkICAgICAgICAgICAgc2V0ZXJyb3JzdGF0dXMoY29uc3QgY2hhciAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jCmluZGV4IDQyOTkyMTcuLmRiMTdhOWEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmMKQEAgLTExNSw3ICsxMTUsNyBAQAogI2luY2x1ZGUgInN0cnVjdC5oIgogI2luY2x1ZGUgImV4dGVuc2libGUuaCIKICNpbmNsdWRlICJ1dGlsaXRpZXMvZXhlY3V0ZS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKIAogZXh0ZXJuIHN0cnVjdCBteXByb2MgKnByb2N3YXRjaDsgICAgICAgIC8qIG1vdmVkIHRvIHByb2MuYyAqLwogZXh0ZXJuIGludCAgICAgIG51bXByb2NzOyAgICAgICAvKiBkaXR0byAqLwpAQCAtMTMzLDIwICsxMzMsMjAgQEAKICAqIHRoZSByZWxvY2F0YWJsZSBleHRlbnNpYmxlIGNvbW1hbmRzIHZhcmlhYmxlcyAKICAqLwogc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3JlbG9jYXRhYmxlX3ZhcmlhYmxlc1tdID0gewotICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwKLSAgICAge01JQklOREVYfX0sCi0gICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JOQU1FfX0sCi0gICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7U0hFTExDT01NQU5EfX0sCi0gICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwKLSAgICAge0VSUk9SRkxBR319LAotICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JNU0d9fSwKLSAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3JlbG9jYXRhYmxlLCAxLAotICAgICB7RVJST1JGSVh9fSwKLSAgICB7RVJST1JGSVhDTUQsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwKLSAgICAge0VSUk9SRklYQ01EfX0KKyAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsIHtNSUJJTkRFWH19LAorICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9STkFNRX19LAorICAgIHtTSEVMTENPTU1BTkQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge1NIRUxMQ09NTUFORH19LAorICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9STVNHfX0sCisgICAge0VSUk9SRklYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9yZWxvY2F0YWJsZSwgMSwge0VSUk9SRklYfX0sCisgICAge0VSUk9SRklYQ01ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2V4dGVuc2libGVfcmVsb2NhdGFibGUsIDEsIHtFUlJPUkZJWENNRH19CiB9OwogCiAKQEAgLTE1NSwyMCArMTU1LDIwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfZXh0ZW5zaWJsZV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge1NIRUxMQ09NTUFORH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwKLSAgICAgICAgIHtFUlJPUk1TR319LAotICAgICAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9SRklYfX0sCi0gICAgICAgIHtFUlJPUkZJWENNRCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3NoZWxsLCAxLAotICAgICAgICAge0VSUk9SRklYQ01EfX0KKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NIRUxMQ09NTUFORCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge1NIRUxMQ09NTUFORH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfc2hlbGwsIDEsIHtFUlJPUk1TR319LAorICAgICAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9SRklYfX0sCisgICAgICAgIHtFUlJPUkZJWENNRCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9zaGVsbCwgMSwge0VSUk9SRklYQ01EfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuaAppbmRleCA1NThmMTRiLi45MjgzNjkyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9leHRlbnNpYmxlLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5oCkBAIC03LDcgKzcsNyBAQAogCiB2b2lkICAgICAgICAgICAgaW5pdF9leHRlbnNpYmxlKHZvaWQpOwogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQogY29uZmlnX3JlcXVpcmUodXRpbGl0aWVzL2V4ZWN1dGUpCiAKICAgICAgZXh0ZXJuIEZpbmRWYXJNZXRob2QgdmFyX2V4dGVuc2libGVfc2hlbGw7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmMKaW5kZXggMDBjOThkNC4uYThkZDE1NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuYwpAQCAtNDEsNyArNDEsNyBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAiZmlsZS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKIAogI2RlZmluZSBNQVhGSUxFICAgMjAKIApAQCAtNTIsMTIgKzUyLDE4IEBACiBpbml0X2ZpbGUodm9pZCkKIHsKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGZpbGVfdGFibGVbXSA9IHsKLSAgICAgICAge0ZJTEVfSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2ZpbGVfdGFibGUsIDEsIHsxfX0sCi0gICAgICAgIHtGSUxFX05BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezJ9fSwKLSAgICAgICAge0ZJTEVfU0laRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezN9fSwKLSAgICAgICAge0ZJTEVfTUFYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9maWxlX3RhYmxlLCAxLCB7NH19LAotICAgICAgICB7RklMRV9FUlJPUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezEwMH19LAotICAgICAgICB7RklMRV9NU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZmlsZV90YWJsZSwgMSwgezEwMX19CisgICAgICAgIHtGSUxFX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezF9fSwKKyAgICAgICAge0ZJTEVfTkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezJ9fSwKKyAgICAgICAge0ZJTEVfU0laRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2ZpbGVfdGFibGUsIDEsIHszfX0sCisgICAgICAgIHtGSUxFX01BWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2ZpbGVfdGFibGUsIDEsIHs0fX0sCisgICAgICAgIHtGSUxFX0VSUk9SLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZmlsZV90YWJsZSwgMSwgezEwMH19LAorICAgICAgICB7RklMRV9NU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2ZpbGVfdGFibGUsIDEsIHsxMDF9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZmlsZS5oCmluZGV4IDhiMjIyYzUuLjQ1NTA4NmYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2ZpbGUuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9maWxlLmgKQEAgLTcsNiArNyw4IEBACiAKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKKwogdm9pZCAgICAgICAgICAgIGluaXRfZmlsZSh2b2lkKTsKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2hwdXguYwppbmRleCBkYjA5NGQzLi45YzVmOWY5IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9ocHV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvaHB1eC5jCkBAIC0zMCwxNSArMzAsMjEgQEAKICAgICAgKiBpbmZvcm1hdGlvbiBhdCAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGhwX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7SFBDT05GLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfaHAsIDEsIHtIUENPTkZ9fSwKLSAgICAgICAge0hQUkVDT05GSUcsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9ocCwgMSwge0hQUkVDT05GSUd9fSwKLSAgICAgICAge0hQRkxBRywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2hwLCAxLCB7SFBGTEFHfX0sCi0gICAgICAgIHtIUExPR01BU0ssIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9ocCwgMSwge0VSUk9SRkxBR319LAotICAgICAgICB7SFBTVEFUVVMsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9ocCwgMSwge0VSUk9STVNHfX0KKyAgICAgICAge0hQQ09ORiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQQ09ORn19LAorICAgICAgICB7SFBSRUNPTkZJRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQUkVDT05GSUd9fSwKKyAgICAgICAge0hQRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQRkxBR319LAorICAgICAgICB7SFBMT0dNQVNLLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2hwLCAxLCB7RVJST1JGTEFHfX0sCisgICAgICAgIHtIUFNUQVRVUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBocHRyYXBfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtIUFRSQVAsIEFTTl9JUEFERFJFU1MsIFJXUklURSwgdmFyX2hwLCAxLCB7SFBUUkFQfX0sCisgICAgICAgIHtIUFRSQVAsIEFTTl9JUEFERFJFU1MsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9ocCwgMSwge0hQVFJBUH19LAogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1TZW5zb3JzLmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYwppbmRleCBjNWNlOTA2Li41MTljODBlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuYwpAQCAtNzMsNyArNzMsNyBAQAogICogbWluaW1hbCBpbmNsdWRlIGRpcmVjdGl2ZXMgCiAgKi8KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpbmNsdWRlIDx0aW1lLmg+CiAKIC8qCkBAIC0xMzEsNDEgKzEzMSw0MSBAQAogICAgICAqIG1hZ2ljIG51bWJlciAgICAgICAgLCB2YXJpYWJsZSB0eXBlICwgcm8vcncgLCBjYWxsYmFjayBmbiAgLCBMLCBvaWRzdWZmaXggCiAgICAgICovCiAjZGVmaW5lICAgTE1URU1QU0VOU09SU0lOREVYICAgIDMKLSAgICB7TE1URU1QU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezIsIDEsIDF9fSwKKyAgICB7TE1URU1QU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezIsIDEsIDF9fSwKICNkZWZpbmUgICBMTVRFTVBTRU5TT1JTREVWSUNFICAgNAotICAgIHtMTVRFTVBTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7MiwgMSwgMn19LAorICAgIHtMTVRFTVBTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7MiwgMSwgMn19LAogI2RlZmluZSAgIExNVEVNUFNFTlNPUlNWQUxVRSAgICA1Ci0gICAge0xNVEVNUFNFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7MiwgMSwgM319LAorICAgIHtMTVRFTVBTRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezIsIDEsIDN9fSwKICNkZWZpbmUgICBMTUZBTlNFTlNPUlNJTkRFWCAgICAgOAotICAgIHtMTUZBTlNFTlNPUlNJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHszLCAxLCAxfX0sCisgICAge0xNRkFOU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezMsIDEsIDF9fSwKICNkZWZpbmUgICBMTUZBTlNFTlNPUlNERVZJQ0UgICAgOQotICAgIHtMTUZBTlNFTlNPUlNERVZJQ0UsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHszLCAxLCAyfX0sCisgICAge0xNRkFOU0VOU09SU0RFVklDRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezMsIDEsIDJ9fSwKICNkZWZpbmUgICBMTUZBTlNFTlNPUlNWQUxVRSAgICAgMTAKLSAgICB7TE1GQU5TRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezMsIDEsIDN9fSwKKyAgICB7TE1GQU5TRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezMsIDEsIDN9fSwKICNkZWZpbmUgICBMTVZPTFRTRU5TT1JTSU5ERVggICAgMTMKLSAgICB7TE1WT0xUU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezQsIDEsIDF9fSwKKyAgICB7TE1WT0xUU0VOU09SU0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezQsIDEsIDF9fSwKICNkZWZpbmUgICBMTVZPTFRTRU5TT1JTREVWSUNFICAgMTQKLSAgICB7TE1WT0xUU0VOU09SU0RFVklDRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezQsIDEsIDJ9fSwKKyAgICB7TE1WT0xUU0VOU09SU0RFVklDRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywgezQsIDEsIDJ9fSwKICNkZWZpbmUgICBMTVZPTFRTRU5TT1JTVkFMVUUgICAgMTUKLSAgICB7TE1WT0xUU0VOU09SU1ZBTFVFLCBBU05fR0FVR0UsIFJPTkxZLCB2YXJfbG1TZW5zb3JzVGFibGUsIDMsCi0gICAgIHs0LCAxLCAzfX0sCisgICAge0xNVk9MVFNFTlNPUlNWQUxVRSwgQVNOX0dBVUdFLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NCwgMSwgM319LAogI2RlZmluZSAgIExNTUlTQ1NFTlNPUlNJTkRFWCAgICAxOAotICAgIHtMTU1JU0NTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7NSwgMSwgMX19LAorICAgIHtMTU1JU0NTRU5TT1JTSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NSwgMSwgMX19LAogI2RlZmluZSAgIExNTUlTQ1NFTlNPUlNERVZJQ0UgICAxOQotICAgIHtMTU1JU0NTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLAotICAgICB7NSwgMSwgMn19LAorICAgIHtMTU1JU0NTRU5TT1JTREVWSUNFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgdmFyX2xtU2Vuc29yc1RhYmxlLCAzLCB7NSwgMSwgMn19LAogI2RlZmluZSAgIExNTUlTQ1NFTlNPUlNWQUxVRSAgICAyMAotICAgIHtMTU1JU0NTRU5TT1JTVkFMVUUsIEFTTl9HQVVHRSwgUk9OTFksIHZhcl9sbVNlbnNvcnNUYWJsZSwgMywKLSAgICAgezUsIDEsIDN9fSwKKyAgICB7TE1NSVNDU0VOU09SU1ZBTFVFLCBBU05fR0FVR0UsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICB2YXJfbG1TZW5zb3JzVGFibGUsIDMsIHs1LCAxLCAzfX0sCiB9OwogCiB0eXBlZGVmIHN0cnVjdCB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbVNlbnNvcnMuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5oCmluZGV4IGFmZWQ2ZmEuLjkyMDk4YTYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtU2Vuc29ycy5oCkBAIC02LDcgKzYsNyBAQAogI2lmbmRlZiBfTUlCR1JPVVBfTE1TRU5TT1JTX0gKICNkZWZpbmUgX01JQkdST1VQX0xNU0VOU09SU19ICiAKLWNvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MpCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUpCiBjb25maWdfYWRkX21pYihMTS1TRU5TT1JTLU1JQikKIAogICAgICB2b2lkICAgICAgICAgICAgaW5pdF9sbVNlbnNvcnModm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZWE3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sbXNlbnNvcnNNaWIuYwpAQCAtMCwwICsxLDIwNSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9zZW5zb3JzLmg+CisjaW5jbHVkZSAidWNkLXNubXAvbG1zZW5zb3JzTWliLmgiCisKK25ldHNubXBfY29udGFpbmVyICpzZW5zb3JDb250YWluZXIgPSBOVUxMOworCit2b2lkIGluaXRpYWxpemVfbG1TZW5zb3JzVGFibGUoY29uc3QgY2hhciAqdGFibGVOYW1lLCBjb25zdCBvaWQgKnRhYmxlT0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX29wICpmaWx0ZXIsIGludCBtdWx0ICk7CisKK2ludCBfc2Vuc29yX2ZpbHRlcl90ZW1wKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqdiApOworaW50IF9zZW5zb3JfZmlsdGVyX2ZhbiggIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICk7CitpbnQgX3NlbnNvcl9maWx0ZXJfdm9sdCggbmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKnYgKTsKK2ludCBfc2Vuc29yX2ZpbHRlcl9taXNjKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqdiApOworCitzdGF0aWMgY29uc3Qgb2lkIGxtVGVtcFNlbnNvcnNUYWJsZV9vaWRbXSAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsMn07CitzdGF0aWMgY29uc3Qgb2lkIGxtRmFuU2Vuc29yc1RhYmxlX29pZFtdICAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsM307CitzdGF0aWMgY29uc3Qgb2lkIGxtVm9sdFNlbnNvcnNUYWJsZV9vaWRbXSAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsNH07CitzdGF0aWMgY29uc3Qgb2lkIGxtTWlzY1NlbnNvcnNUYWJsZV9vaWRbXSAgID0gezEsMyw2LDEsNCwxLDIwMjEsMTMsMTYsNX07CisgICAgICAgICAgICAvKiBBbGwgdGhlIHRhYmxlcyBoYXZlIHRoZSBzYW1lIGxlbmd0aCByb290IE9JRCAqLworY29uc3Qgc2l6ZV90IGxtU2Vuc29yc1RhYmxlc19vaWRfbGVuID0gT0lEX0xFTkdUSChsbU1pc2NTZW5zb3JzVGFibGVfb2lkKTsKKworCisvKiBJbml0aWFsaXNlIHRoZSBMTSBTZW5zb3JzIE1JQiBtb2R1bGUgKi8KK3ZvaWQKK2luaXRfbG1zZW5zb3JzTWliKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoInVjZC1zbm1wL2xtc2Vuc29yc01pYiIsIkluaXRpYWxpemluZyBMTS1TRU5TT1JTLU1JQiB0YWJsZXNcbiIpKTsKKworICAgIC8qIAorICAgICAqIEluaXRpYWxpc2UgdGhlIGZvdXIgTE0tU0VOU09SUy1NSUIgdGFibGVzCisgICAgICoKKyAgICAgKiBUaGV5IGFyZSBhbG1vc3QgaWRlbnRpY2FsLCBzbyB3ZSBjYW4gdXNlIHRoZSBzYW1lIHJlZ2lzdHJhdGlvbiBjb2RlLgorICAgICAqLworICAgIGluaXRpYWxpemVfbG1TZW5zb3JzVGFibGUoICJsbVRlbXBTZW5zb3JzVGFibGUiLCBsbVRlbXBTZW5zb3JzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2Vuc29yX2ZpbHRlcl90ZW1wLCAxMDAwICk7ICAvKiBNSUIgYXNrcyBmb3IgbUMgKi8KKyAgICBpbml0aWFsaXplX2xtU2Vuc29yc1RhYmxlKCAibG1GYW5TZW5zb3JzVGFibGUiLCAgbG1GYW5TZW5zb3JzVGFibGVfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc2Vuc29yX2ZpbHRlcl9mYW4sICAxKTsKKyAgICBpbml0aWFsaXplX2xtU2Vuc29yc1RhYmxlKCAibG1Wb2x0U2Vuc29yc1RhYmxlIiwgbG1Wb2x0U2Vuc29yc1RhYmxlX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NlbnNvcl9maWx0ZXJfdm9sdCwgMTAwMCApOyAgLyogTUlCIGFza3MgZm9yIG1WICovCisgICAgaW5pdGlhbGl6ZV9sbVNlbnNvcnNUYWJsZSggImxtTWlzY1NlbnNvcnNUYWJsZSIsIGxtTWlzY1NlbnNvcnNUYWJsZV9vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zZW5zb3JfZmlsdGVyX21pc2MsIDEgKTsKK30KKworLyoKKyAqIENvbW1vbiBpbml0aWFsaXNhdGlvbiBjb2RlLCB1c2VkIGZvciBzZXR0aW5nIHVwIGFsbCBmb3VyIHRhYmxlcworICovCit2b2lkCitpbml0aWFsaXplX2xtU2Vuc29yc1RhYmxlKGNvbnN0IGNoYXIgKnRhYmxlTmFtZSwgY29uc3Qgb2lkICp0YWJsZU9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfb3AgKmZpbHRlciwgaW50IG11bHQgKQoreworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKKyAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOworICAgIG5ldHNubXBfY2FjaGUgICAgICpjYWNoZTsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgLyoKKyAgICAgKiBFbnN1cmUgdGhlIEhBTCBzZW5zb3JzIG1vZHVsZSBoYXMgYmVlbiBpbml0aWFsaXNlZCwKKyAgICAgKiAgIGFuZCByZXRyaWV2ZSB0aGUgbWFpbiBzZW5zb3JzIGNvbnRhaW5lci4KKyAgICAgKiBUaGlzIHRhYmxlIHdpbGwgdGhlbiBiZSByZWdpc3RlcmVkIHVzaW5nIGEgZmlsdGVyIG9uIHRoaXMgY29udGFpbmVyLgorICAgICAqLworICAgIHNlbnNvckNvbnRhaW5lciA9IGdldF9zZW5zb3JfY29udGFpbmVyKCk7CisgICAgaWYgKCAhc2Vuc29yQ29udGFpbmVyICkgeworICAgICAgICBpbml0X2h3X3NlbnNvcnMoICk7CisgICAgICAgIHNlbnNvckNvbnRhaW5lciA9IGdldF9zZW5zb3JfY29udGFpbmVyKCk7CisgICAgfQorICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoInNlbnNvclRhYmxlOnRhYmxlX2NvbnRhaW5lciIpOworICAgIGNvbnRhaW5lci0+aW5zZXJ0X2ZpbHRlciA9IGZpbHRlcjsKKyAgICBuZXRzbm1wX2NvbnRhaW5lcl9hZGRfaW5kZXgoIHNlbnNvckNvbnRhaW5lciwgY29udGFpbmVyICk7CisKKworICAgIC8qCisgICAgICogQ3JlYXRlIGEgYmFzaWMgcmVnaXN0cmF0aW9uIHN0cnVjdHVyZSBmb3IgdGhlIHRhYmxlCisgICAgICovCisgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCisgICAgICAgICAgICAgICB0YWJsZU5hbWUsIGxtU2Vuc29yc1RhYmxlc19oYW5kbGVyLAorICAgICAgICAgICAgICAgdGFibGVPSUQsICBsbVNlbnNvcnNUYWJsZXNfb2lkX2xlbiwgSEFORExFUl9DQU5fUk9OTFkKKyAgICAgICAgICAgICAgKTsKKworICAgIC8qCisgICAgICogUmVnaXN0ZXIgdGhlIHRhYmxlIHVzaW5nIHRoZSBmaWx0ZXJlZCBjb250YWluZXIKKyAgICAgKiBJbmNsdWRlIGFuIGluZGljYXRvciBvZiBhbnkgc2NhbGluZyB0byBiZSBhcHBsaWVkIHRvIHRoZSBzZW5zb3IgdmFsdWUKKyAgICAgKi8KKyAgICByZWctPm15X3JlZ192b2lkID0gKHZvaWQgKiltdWx0OworICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICk7CisgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModGFibGVfaW5mbywgQVNOX0lOVEVHRVIsIDApOworICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fTE1TRU5TT1JTX0lOREVYOworICAgIHRhYmxlX2luZm8tPm1heF9jb2x1bW4gPSBDT0xVTU5fTE1TRU5TT1JTX1ZBTFVFOworICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3JlZ2lzdGVyKCByZWcsIHRhYmxlX2luZm8sIGNvbnRhaW5lciwgMCApOworCisgICAgLyoKKyAgICAgKiBJZiB0aGUgSEFMIHNlbnNvcnMgbW9kdWxlIHdhcyBjb25maWd1cmVkIGFzIGFuIG9uLWRlbWFuZCBjYWNoaW5nCisgICAgICogIG1vZHVsZSAocmF0aGVyIHRoYW4gYmVpbmcgYXV0b21hdGljYWxseSBsb2FkZWQgcmVndWxhcmx5KSwKKyAgICAgKiAgdGhlbiBlbnN1cmUgdGhpcyB0YWJsZSBtYWtlcyB1c2Ugb2YgdGhhdCBjYWNoZS4KKyAgICAgKi8KKyAgICBjYWNoZSA9IGdldF9zZW5zb3JfY2FjaGUoKTsKKyAgICBpZiAoIGNhY2hlICkgeworICAgICAgICBuZXRzbm1wX2luamVjdF9oYW5kbGVyX2JlZm9yZSggcmVnLCBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KCBjYWNoZSApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGFibGVfY29udGFpbmVyIik7CisgICAgfQorCit9CisKKworLyoKKyAqICBDb250YWluZXIgZmlsdGVycyBmb3IgdGhlIGZvdXIgdGFibGVzCisgKgorICogIFVzZWQgdG8gZW5zdXJlIHRoYXQgc2Vuc29yIGVudHJpZXMgYXBwZWFyIGluIHRoZSBhcHByb3ByaWF0ZSB0YWJsZS4KKyAqLworaW50IF9zZW5zb3JfZmlsdGVyX3RlbXAoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICkgeworICAgIGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKnNwID0gKGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKil2OworICAgIC8qIE9ubHkgbWF0Y2hlcyB0ZW1wZXJhdHVyZSBzZW5zb3JzICovCisgICAgcmV0dXJuICgoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUgKSA/IDAgOiAxICk7Cit9CisKK2ludCBfc2Vuc29yX2ZpbHRlcl9mYW4oIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICkgeworICAgIGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKnNwID0gKGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKil2OworICAgIC8qIE9ubHkgbWF0Y2hlcyBmYW4gc2Vuc29ycyAqLworICAgIHJldHVybiAoKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1JQTSApID8gMCA6IDEgKTsKK30KKworaW50IF9zZW5zb3JfZmlsdGVyX3ZvbHQoIG5ldHNubXBfY29udGFpbmVyICpjLCBjb25zdCB2b2lkICp2ICkgeworICAgIGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKnNwID0gKGNvbnN0IG5ldHNubXBfc2Vuc29yX2luZm8gKil2OworICAgIC8qIE9ubHkgbWF0Y2hlcyB2b2x0YWdlIHNlbnNvcnMgKEFDIG9yIERDKSAqLworICAgIHJldHVybiAoKCggc3AtPnR5cGUgPT0gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICkgfHwKKyAgICAgICAgICAgICAoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVEFHRV9BQyApKSA/IDAgOiAxICk7Cit9CisKK2ludCBfc2Vuc29yX2ZpbHRlcl9taXNjKCBuZXRzbm1wX2NvbnRhaW5lciAqYywgY29uc3Qgdm9pZCAqdiApIHsKKyAgICBjb25zdCBuZXRzbm1wX3NlbnNvcl9pbmZvICpzcCA9IChjb25zdCBuZXRzbm1wX3NlbnNvcl9pbmZvICopdjsKKyAgICAvKiBNYXRjaGVzIGV2ZXJ5dGhpbmcgZXhjZXB0IHRlbXBlcmF0dXJlLCBmYW4gb3Igdm9sdGFnZSBzZW5zb3JzICovCisgICAgcmV0dXJuICgoKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1RFTVBFUkFUVVJFICkgfHwKKyAgICAgICAgICAgICAoIHNwLT50eXBlID09IE5FVFNOTVBfU0VOU09SX1RZUEVfUlBNICAgICAgICAgKSB8fAorICAgICAgICAgICAgICggc3AtPnR5cGUgPT0gTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICApIHx8CisgICAgICAgICAgICAgKCBzcC0+dHlwZSA9PSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfQUMgICkpID8gMSA6IDAgKTsKK30KKworCisvKgorICogSGFuZGxlIHJlcXVlc3RzIGZvciBhbnkgb2YgdGhlIGZvdXIgbG1YeHh4U2Vuc29yc1RhYmxlcyAKKyAqCisgKiBUaGlzIGlzIHBvc3NpYmxlIGJlY2F1c2UgYWxsIHRoZSB0YWJsZSBzaGFyZSB0aGUKKyAqICBzYW1lIHN0cnVjdHVyZSBhbmQgYmVoYXZpb3VyLgorICovCitpbnQKK2xtU2Vuc29yc1RhYmxlc19oYW5kbGVyKAorICAgIG5ldHNubXBfbWliX2hhbmRsZXIgICAgICAgICAgICAgICAqaGFuZGxlciwKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgKnJlZ2luZm8sCisgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAgICAgICpyZXFpbmZvLAorICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgICAgICAqcmVxdWVzdHMpIHsKKworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICpyZXF1ZXN0OworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworICAgIG5ldHNubXBfc2Vuc29yX2luZm8gICAgICAgICpzZW5zb3JfaW5mbzsKKyAgICBpbnQgbXVsdCAgPSAoaW50KXJlZ2luZm8tPm15X3JlZ192b2lkOworCisgICAgREVCVUdNU0dUTCgoICJ1Y2Qtc25tcC9sbXNlbnNvcnNNaWIiLCJsbVNlbnNvcnNUYWJsZXNfaGFuZGxlciAtIHJvb3Q6ICIpKTsKKyAgICBERUJVR01TR09JRCgoInVjZC1zbm1wL2xtc2Vuc29yc01pYiIsIHJlZ2luZm8tPnJvb3RvaWQsIHJlZ2luZm8tPnJvb3RvaWRfbGVuKSk7CisgICAgREVCVUdNU0coKCAgICJ1Y2Qtc25tcC9sbXNlbnNvcnNNaWIiLCIsIG1vZGUgJWRcbiIsIHJlcWluZm8tPm1vZGUgKSk7CisgICAgLyoKKyAgICAgKiBUaGlzIGlzIGEgcmVhZC1vbmx5IHRhYmxlLCBzbyB3ZSBvbmx5IG5lZWQgdG8gaGFuZGxlIEdFVCByZXF1ZXN0cy4KKyAgICAgKiAgICAoVGhlIGNvbnRhaW5lciBoZWxwZXIgY29udmVydHMgR0VUTkVYVC0+R0VUIHJlcXVlc3RzIGF1dG9tYXRpY2FsbHkpLgorICAgICAqLworICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgeworICAgIGNhc2UgTU9ERV9HRVQ6CisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICBzZW5zb3JfaW5mbyA9IChuZXRzbm1wX3NlbnNvcl9pbmZvICopCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKCAhc2Vuc29yX2luZm8gKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LCBTTk1QX05PU1VDSElOU1RBTkNFKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAKKyAgICAgICAgICAgIHRhYmxlX2luZm8gICA9ICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9MTVNFTlNPUlNfSU5ERVg6CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX0lOVEVHRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLT5pZHgub2lkc1swXSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIENPTFVNTl9MTVNFTlNPUlNfREVWSUNFOgorICAgICAgICAgICAgICAgIGlmICggc2Vuc29yX2luZm8tPmRlc2NyWzBdICE9ICdcMCcgKSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLT5kZXNjciwgc3RybGVuKHNlbnNvcl9pbmZvLT5kZXNjcikpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fT0NURVRfU1RSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNvcl9pbmZvLT5uYW1lLCAgc3RybGVuKHNlbnNvcl9pbmZvLT5uYW1lKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT0xVTU5fTE1TRU5TT1JTX1ZBTFVFOgorICAgICAgICAgICAgICAgIC8qIE11bHRpcGx5IHRoZSB2YWx1ZSBieSB0aGUgYXBwcm9wcmlhdGUgc2NhbGluZyBmYWN0b3IgZm9yIHRoaXMgdGFibGUgKi8KKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCBBU05fR0FVR0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpKG11bHQqc2Vuc29yX2luZm8tPnZhbHVlKSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIH0KKyAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG1zZW5zb3JzTWliLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ4NWRkMQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xtc2Vuc29yc01pYi5oCkBAIC0wLDAgKzEsMjMgQEAKKyNpZm5kZWYgTE1fU0VOU09SU19NSUJfSAorI2RlZmluZSBMTV9TRU5TT1JTX01JQl9ICisKK2NvbmZpZ19yZXF1aXJlKGhhcmR3YXJlL3NlbnNvcnMpCitjb25maWdfYWRkX21pYihMTS1TRU5TT1JTLU1JQikKKworLyogZnVuY3Rpb24gZGVjbGFyYXRpb25zICovCit2b2lkIGluaXRfbG1zZW5zb3JzTWliKHZvaWQpOworCisvKgorICogSGFuZGxlciBhbmQgQ29sdW1uIGRlZmluaXRpb25zIGZvciBsbVh4eHhTZW5zb3JzVGFibGUKKyAqCisgKiBOb3RlIHRoYXQgdGhlIHNhbWUgaGFuZGxlciAoYW5kIGhlbmNlIHRoZSBzYW1lCisgKiAgY29sdW1uIGlkZW50aWZpZXJzKSBhcmUgdXNlZCBmb3IgYWxsIGZvdXIgdGFibGVzLgorICogVGhpcyBpcyBwb3NzaWJsZSBiZWNhdXNlIGFsbCB0aGUgdGFibGUgc2hhcmUgdGhlCisgKiAgc2FtZSBzdHJ1Y3R1cmUgYW5kIGJlaGF2aW91ci4KKyAqLworTmV0c25tcF9Ob2RlX0hhbmRsZXIgbG1TZW5zb3JzVGFibGVzX2hhbmRsZXI7CisjZGVmaW5lIENPTFVNTl9MTVNFTlNPUlNfSU5ERVgJCTEKKyNkZWZpbmUgQ09MVU1OX0xNU0VOU09SU19ERVZJQ0UJCTIKKyNkZWZpbmUgQ09MVU1OX0xNU0VOU09SU19WQUxVRQkJMworCisjZW5kaWYgLyogTE1fU0VOU09SU19NSUJfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5jCmluZGV4IGMzMDY1MDYuLjI1NDhlZDggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmMKQEAgLTEzNCw3ICsxMzQsNyBAQAogCiAjaW5jbHVkZSAic3RydWN0LmgiCiAjaW5jbHVkZSAibG9hZGF2ZS5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCIKICNpbmNsdWRlICJrZXJuZWwuaCIKIAogZG91YmxlICAgICAgICAgIG1heGxvYWRbM107CkBAIC0xNDgsMjQgKzE0OCwyNCBAQAogICAgICAqIGluZm9ybWF0aW9uIGF0IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9sb2FkYXZlX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge0xPQURBVkUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0xPQURBVkV9fSwKLSAgICAgICAge0xPQURNQVhWQUwsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLAotICAgICAgICAge0xPQURNQVhWQUx9fSwKLSAgICAgICAge0xPQURBVkVJTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtMT0FEQVZFSU5UfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7TE9BREFWRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7TE9BREFWRX19LAorICAgICAgICB7TE9BRE1BWFZBTCwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9sb2FkYXZlLCAxLCB7TE9BRE1BWFZBTH19LAorICAgICAgICB7TE9BREFWRUlOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0xPQURBVkVJTlR9fSwKICNpZmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKLSAgICAgICAge0xPQURBVkVGTE9BVCwgQVNOX09QQVFVRV9GTE9BVCwgUk9OTFksIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsCi0gICAgICAgICB7TE9BREFWRUZMT0FUfX0sCisgICAgICAgIHtMT0FEQVZFRkxPQVQsIEFTTl9PUEFRVUVfRkxPQVQsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwge0xPQURBVkVGTE9BVH19LAogI2VuZGlmCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbG9hZGF2ZSwgMSwKLSAgICAgICAgIHtFUlJPUk1TR319CisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX2xvYWRhdmUsIDEsIHtFUlJPUk1TR319CiAgICAgfTsKIAogICAgIC8qCkBAIC0zNDMsNyArMzQzLDcgQEAKICAgICB9CiAgICAgaWYgKHRyeV9nZXRsb2FkYXZnKCZhdmVucnVuWzBdLCBzaXplb2YoYXZlbnJ1bikgLyBzaXplb2YoYXZlbnJ1blswXSkpCiAgICAgICAgID09IC0xKQotICAgICAgICByZXR1cm4gKDApOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICBzd2l0Y2ggKHZwLT5tYWdpYykgewogICAgIGNhc2UgTE9BREFWRToKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9hZGF2ZS5oCmluZGV4IDQ5N2JmYjguLjRmNWU3YTUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvYWRhdmUuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2FkYXZlLmgKQEAgLTQsNyArNCw3IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9MT0FEQVZFX0gKICNkZWZpbmUgX01JQkdST1VQX0xPQURBVkVfSAogCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQogCiAgICAgIHZvaWQgICAgICAgICAgICBpbml0X2xvYWRhdmUodm9pZCk7CiAgICAgIGV4dGVybiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX2xvYWRhdmU7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guYwppbmRleCA2YjY3MmZhLi44ZDAxNzMyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmMKQEAgLTM4LDExICszOCwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCiAjaW5jbHVkZSAibG9nbWF0Y2guaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgogCi0jZGVmaW5lIE1BWExPR01BVENIICAgNTAKKyNkZWZpbmUgTUFYTE9HTUFUQ0ggICAyNTAKIAogc3RydWN0IGxvZ21hdGNoc3RhdCBsb2dtYXRjaFRhYmxlW01BWExPR01BVENIXTsKIGludCAgICAgICAgICAgICBsb2dtYXRjaENvdW50OwpAQCAtNTEsMjggKzUxLDM3IEBACiBpbml0X2xvZ21hdGNoKHZvaWQpCiB7CiAgICAgc3RydWN0IHZhcmlhYmxlMiBsb2dtYXRjaF9pbmZvW10gPSB7Ci0gICAgICAgIHtMT0dNQVRDSF9JTkZPLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMH0KKyAgICAgICAge0xPR01BVENIX0lORk8sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMH0KICAgICB9OwogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBsb2dtYXRjaF90YWJsZVtdID0gewotICAgICAgICB7TE9HTUFUQ0hfSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MX19LAotICAgICAgICB7TE9HTUFUQ0hfTkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezJ9fSwKLSAgICAgICAge0xPR01BVENIX0ZJTEVOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezN9fSwKLSAgICAgICAge0xPR01BVENIX1JFR0VYLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7NH19LAotICAgICAgICB7TE9HTUFUQ0hfR0xPQkFMQ1RSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwKLSAgICAgICAgIHs1fX0sCi0gICAgICAgIHtMT0dNQVRDSF9HTE9CQUxDTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezZ9fSwKLSAgICAgICAge0xPR01BVENIX0NVUlJFTlRDVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezd9fSwKLSAgICAgICAge0xPR01BVENIX0NVUlJFTlRDTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLAotICAgICAgICAgezh9fSwKLSAgICAgICAge0xPR01BVENIX0NPVU5URVIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7OX19LAotICAgICAgICB7TE9HTUFUQ0hfQ09VTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTB9fSwKLSAgICAgICAge0xPR01BVENIX0ZSRVEsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTF9fSwKLSAgICAgICAge0xPR01BVENIX0VSUk9SLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezEwMH19LAotICAgICAgICB7TE9HTUFUQ0hfTVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTAxfX0KKyAgICAgICAge0xPR01BVENIX0lOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHsxfX0sCisgICAgICAgIHtMT0dNQVRDSF9OQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezJ9fSwKKyAgICAgICAge0xPR01BVENIX0ZJTEVOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezN9fSwKKyAgICAgICAge0xPR01BVENIX1JFR0VYLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezR9fSwKKyAgICAgICAge0xPR01BVENIX0dMT0JBTENUUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7NX19LAorICAgICAgICB7TE9HTUFUQ0hfR0xPQkFMQ05ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs2fX0sCisgICAgICAgIHtMT0dNQVRDSF9DVVJSRU5UQ1RSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs3fX0sCisgICAgICAgIHtMT0dNQVRDSF9DVVJSRU5UQ05ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs4fX0sCisgICAgICAgIHtMT0dNQVRDSF9DT1VOVEVSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfbG9nbWF0Y2hfdGFibGUsIDEsIHs5fX0sCisgICAgICAgIHtMT0dNQVRDSF9DT1VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTB9fSwKKyAgICAgICAge0xPR01BVENIX0ZSRVEsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9sb2dtYXRjaF90YWJsZSwgMSwgezExfX0sCisgICAgICAgIHtMT0dNQVRDSF9FUlJPUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTAwfX0sCisgICAgICAgIHtMT0dNQVRDSF9NU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2xvZ21hdGNoX3RhYmxlLCAxLCB7MTAxfX0KICAgICB9OwogCiAgICAgLyoKQEAgLTE3MCwxMSArMTc5LDE1IEBACiAgICAgICAgIHNzY2FuZihjcHRyLCAiJTI1NXMlYyUyNTVzJWMgJWQgJTI1NWNcbiIsCiAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2xvZ21hdGNoQ291bnRdLm5hbWUsCiAJICAgICAgICZzcGFjZV9uYW1lLAotICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZSwKKyAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbbG9nbWF0Y2hDb3VudF0uZmlsZW5hbWVQYXR0ZXJuLAogCSAgICAgICAmc3BhY2VfcGF0aCwKICAgICAgICAgICAgICAgICYobG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5mcmVxdWVuY3kpLAogICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5yZWdFeCk7CiAKKyAgICAgICAgLyogZmlsbCBpbiBmaWxlbmFtZSB3aXRoIGluaXRpYWwgZGF0YSAqLworICAgICAgICBzdHJjcHkobG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZSwgbG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZVBhdHRlcm4pOworICAgICAgICBsb2dtYXRjaF91cGRhdGVfZmlsZW5hbWUobG9nbWF0Y2hUYWJsZVtsb2dtYXRjaENvdW50XS5maWxlbmFtZVBhdHRlcm4sIGxvZ21hdGNoVGFibGVbbG9nbWF0Y2hDb3VudF0uZmlsZW5hbWUpOworCiAJLyoKIAkgKiBMb2cgYW4gZXJyb3IgdGhlbiByZXR1cm4gaWYgYW55IG9mIHRoZSBzdHJpbmdzIHNjYW5uZWQgaW4gd2VyZQogCSAqIGxhcmdlciB0aGVuIHRoZXkgc2hvdWxkIGhhdmUgYmVlbi4KQEAgLTI1MCw2ICsyNjMsNyBAQAogICAgIGludCAgICAgICAgICAgICB0b29iaWc7CiAgICAgaW50ICAgICAgICAgICAgIGFueUNoYW5nZXMgPSBGQUxTRTsKICAgICBzdHJ1Y3Qgc3RhdCAgICAgc2I7CisgICAgY2hhciAgICAgICAgICAgIGxhc3RGaWxlbmFtZVsyNTZdOwogCiAgICAgLyoKICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCkBAIC0yNzcsNyArMjkxLDYgQEAKIAogICAgICAgICBpZiAoKHBlcmZpbGUgPSBmb3BlbihwZXJmaWxlbmFtZSwgInIiKSkpIHsKIAotCiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAogICAgICAgICAgICAgICogdGhlIHBlcnNpc3RlbnQgZGF0YSBmaWxlIGV4aXN0cyBzbyAgIApAQCAtMjg4LDcgKzMwMSw3IEBACiAKICAgICAgICAgICAgIHBvcyA9IGNvdW50ZXIgPSBjY291bnRlciA9IDA7CiAKLSAgICAgICAgICAgIGlmIChmc2NhbmYocGVyZmlsZSwgIiVsdSAlbHUgJWx1IiwgJnBvcywgJmNjb3VudGVyLCAmY291bnRlcikpIHsKKyAgICAgICAgICAgIGlmIChmc2NhbmYocGVyZmlsZSwgIiVsdSAlbHUgJWx1ICVzIiwgJnBvcywgJmNjb3VudGVyLCAmY291bnRlciwgbGFzdEZpbGVuYW1lKSkgewogCiAKICAgICAgICAgICAgICAgICAvKgpAQCAtMjk5LDQxICszMTIsNTIgQEAKICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiAgICAgICAgICAgICAgICAgICovCiAKLSAgICAgICAgICAgICAgICBpZiAoKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlID0KLSAgICAgICAgICAgICAgICAgICAgZm9wZW4obG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmZpbGVuYW1lLCAiciIpKSkgewotCisgICAgICAgICAgICAgICAgaWYgKGxvZ21hdGNoX3VwZGF0ZV9maWxlbmFtZShsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWVQYXR0ZXJuLCBsYXN0RmlsZW5hbWUpID09IDApIHsKIAogICAgICAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCi0gICAgICAgICAgICAgICAgICAgICAqIHRoZSBsb2cgZmlsZSBjb3VsZCBiZSBvcGVuZWQ7IG5vdyAgICAKLSAgICAgICAgICAgICAgICAgICAgICogbGV0J3MgdHJ5IHRvIHNldCB0aGUgcG9pbnRlciAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCisgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAgICAgICAgICAgICAgKiB0aGUgZmlsZW5hbWUgaXMgc3RpbGwgdGhlIHNhbWUgYXMgCisgICAgICAgICAgICAgICAgICAgICAqIHRoZSBvbmUgc3RvcmVkIGluIHRoZSBwZXJzaXN0ZW50CisgICAgICAgICAgICAgICAgICAgICAqIGRhdGEgZmlsZS4KKyAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgICAgICAgICAgICAgIGlmICghZnNlZWsKLSAgICAgICAgICAgICAgICAgICAgICAgIChsb2dtYXRjaFRhYmxlW2lpbmRleF0ubG9nZmlsZSwgcG9zLCBTRUVLX1NFVCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChsb2dtYXRjaFRhYmxlW2lpbmRleF0ubG9nZmlsZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBmb3Blbihsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWUsICJyIikpKSB7CiAKIAogICAgICAgICAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBwb2ludGVyIGNvdWxkIGJlIHNldCAtIHRoaXMgaXMgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBtb3N0IHRoYXQgd2UgY2FuIGRvOiBpZiB0aGUgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHBvaW50ZXIgaXMgc21hbGxlciB0aGFuIHRoZSBmaWxlICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHNpemUgd2UgbXVzdCBhc3N1bWUgdGhhdCB0aGUgcG9pbnRlciAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIHN0aWxsIHBvaW50cyB0byB3aGVyZSBpdCByZWFkIHRoZSAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIGZpbGUgbGFzdCB0aW1lOyBsZXQncyByZXN0b3JlIHRoZSAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAqIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIHRoZSBsb2cgZmlsZSBjb3VsZCBiZSBvcGVuZWQ7IG5vdyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGxldCdzIHRyeSB0byBzZXQgdGhlIHBvaW50ZXIgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudEZpbGVQb3NpdGlvbiA9IHBvczsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5jdXJyZW50TWF0Y2hDb3VudGVyID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY291bnRlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5nbG9iYWxNYXRjaENvdW50ZXIgPSBjb3VudGVyOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZzZWVrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlLCBwb3MsIFNFRUtfU0VUKSkgewogCi0gICAgICAgICAgICAgICAgICAgIGZjbG9zZShsb2dtYXRjaFRhYmxlW2lpbmRleF0ubG9nZmlsZSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB0aGUgcG9pbnRlciBjb3VsZCBiZSBzZXQgLSB0aGlzIGlzICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogdGhlIG1vc3QgdGhhdCB3ZSBjYW4gZG86IGlmIHRoZSAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHBvaW50ZXIgaXMgc21hbGxlciB0aGFuIHRoZSBmaWxlICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzaXplIHdlIG11c3QgYXNzdW1lIHRoYXQgdGhlIHBvaW50ZXIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3RpbGwgcG9pbnRzIHRvIHdoZXJlIGl0IHJlYWQgdGhlICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGZpbGUgbGFzdCB0aW1lOyBsZXQncyByZXN0b3JlIHRoZSAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRGaWxlUG9zaXRpb24gPSBwb3M7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRNYXRjaENvdW50ZXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjY291bnRlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgZmNsb3NlKGxvZ21hdGNoVGFibGVbaWluZGV4XS5sb2dmaWxlKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZ2xvYmFsTWF0Y2hDb3VudGVyID0gY291bnRlcjsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZmNsb3NlKHBlcmZpbGUpOwpAQCAtMzQyLDYgKzM2NiwxOCBAQAogICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0udmlyZ2luID0gRkFMU0U7CiAgICAgfQogCisgICAgLyoKKyAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICogY2hlY2sgaWYgYSBuZXcgaW5wdXQgZmlsZSBuZWVkcyB0byBiZSBvcGVuZWQKKyAgICAgKiBpZiB5ZXMsIHJlc2V0IGNvdW50ZXIgYW5kIHBvc2l0aW9uCisgICAgICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAqLworCisgICAgaWYgKGxvZ21hdGNoX3VwZGF0ZV9maWxlbmFtZShsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWVQYXR0ZXJuLCBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZmlsZW5hbWUpID09IDEpIHsKKyAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRGaWxlUG9zaXRpb24gPSAwOyAKKyAgICAgICAgbG9nbWF0Y2hUYWJsZVtpaW5kZXhdLmN1cnJlbnRNYXRjaENvdW50ZXIgPSAwOworICAgIH0KKwogCiAgICAgLyoKICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCkBAIC00MjksMTAgKzQ2NSwxMSBAQAogICAgICAgICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiAgICAgICAgICAqLwogCi0gICAgICAgIGZwcmludGYocGVyZmlsZSwgIiVsdSAlbHUgJWx1XG4iLAorICAgICAgICBmcHJpbnRmKHBlcmZpbGUsICIlbHUgJWx1ICVsdSAlc1xuIiwKICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudEZpbGVQb3NpdGlvbiwKICAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uY3VycmVudE1hdGNoQ291bnRlciwKLSAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZ2xvYmFsTWF0Y2hDb3VudGVyKTsKKyAgICAgICAgICAgICAgICBsb2dtYXRjaFRhYmxlW2lpbmRleF0uZ2xvYmFsTWF0Y2hDb3VudGVyLAorICAgICAgICAgICAgICAgIGxvZ21hdGNoVGFibGVbaWluZGV4XS5maWxlbmFtZSk7CiAKICAgICAgICAgZmNsb3NlKHBlcmZpbGUpOwogICAgIH0KQEAgLTU0OSw0ICs1ODYsNTQgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAorLyoKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIFRoaXMgZnVuY3Rpb24gY2hlY2tzIGlmIHRoZSBmaWxlbmFtZSBwYXR0ZXJuIAorICogIGNvbnRhaW5zIHRoZSAlIGNoYXJhY3RlciBpbmRpY2F0aW5nIGEgdmFyaWFibGUKKyAqICBmaWxlbmFtZSAoaS5lLiBpdCB1c2VzIGRhdGUvdGltZSBmb3JtYXQgY29udHJvbCAKKyAqICBjb2Rlcywgc2VlICdtYW4gZGF0ZScpIHRoZW4gZXhwYW5kcyB0aG9zZSBjb250cm9sCisgKiAgY29kZXMgYmFzZWQgb24gY3VycmVudCB0aW1lIGFuZCBzZXRzIHRoZSAKKyAqICBmaWxlbmFtZSBmaWVsZCBpbiB0aGUgc3RydWN0LgorICogIFJldHVybnMgMSBpZiB0aGUgZmlsZW5hbWUgY2hhbmdlZCwgMCBvdGhlcndpc2UKKyAqICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworaW50IGxvZ21hdGNoX3VwZGF0ZV9maWxlbmFtZShjaGFyICogcGF0dGVybiwgY2hhciAqIGN1cnJlbnRGaWxlbmFtZSkgeworICAgIHRpbWVfdCB0OworICAgIHN0cnVjdCB0bSAqdG1wOworICAgIGNoYXIgbmV3RmlsZW5hbWVbMjU2XTsKKworICAgIC8qIAorICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKiBpZiB0aGUgZmlsZW5hbWUgcGF0dGVybiBkb2Vzbid0IGhhdmUgdGhlICIlIiBjaGFyYWN0ZXIganVzdCByZXR1cm4sIAorICAgICAqIHNpbmNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZworICAgICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgKi8KKyAgICBpZiAoc3Ryc3RyKHBhdHRlcm4sICIlIikgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB0ID0gdGltZShOVUxMKTsKKyAgICB0bXAgPSBsb2NhbHRpbWUoJnQpOworCisgICAgaWYgKHRtcCA9PSBOVUxMKSB7CisgICAgICAgIHBlcnJvcigibG9jYWx0aW1lIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHJlc3VsdCBvZiBleHBhbnNpb24gbXVzdCBmaXQgaW50byBuZXdGaWxlbmFtZSwgb3RoZXJ3aXNlIHJldHVybmluZyAqLyAKKyAgICBpZiAoc3RyZnRpbWUobmV3RmlsZW5hbWUsIHNpemVvZihuZXdGaWxlbmFtZSksIHBhdHRlcm4sIHRtcCkgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiBpZiBzYW1lIGFzIGN1cnJlbnQgZmlsZW5hbWUsIGp1c3QgcmV0dXJuICovCisgICAgaWYgKHN0cmNtcChjdXJyZW50RmlsZW5hbWUsIG5ld0ZpbGVuYW1lKSA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIG90aGVyd2lzZSB1cGRhdGUgY3VycmVudEZpbGVuYW1lIGFuZCByZXR1cm4gMSAqLworICAgICAgICBzdHJjcHkoY3VycmVudEZpbGVuYW1lLCBuZXdGaWxlbmFtZSk7IAorICAgICAgICByZXR1cm4gMTsKKyAgICB9Cit9CisKICNlbmRpZiAvKiBIQVZFX1JFR0VYICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbG9nbWF0Y2guaAppbmRleCBlYjJjMDcwLi4zNWFkMjdmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9sb2dtYXRjaC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2xvZ21hdGNoLmgKQEAgLTUsMTAgKzUsMTQgQEAKICNpZm5kZWYgX01JQkdST1VQX0xPR01BVENIX0gKICNkZWZpbmUgX01JQkdST1VQX0xPR01BVENIX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZSkKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKICNpbmNsdWRlIDxyZWdleC5oPgogCiBzdHJ1Y3QgbG9nbWF0Y2hzdGF0IHsKKyAgICBjaGFyICAgICAgICAgICAgZmlsZW5hbWVQYXR0ZXJuWzI1Nl07CiAgICAgY2hhciAgICAgICAgICAgIGZpbGVuYW1lWzI1Nl07CiAgICAgY2hhciAgICAgICAgICAgIHJlZ0V4WzI1Nl07CiAgICAgY2hhciAgICAgICAgICAgIG5hbWVbMjU2XTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMKaW5kZXggMTA5ZTk2Zi4uYTI3OWNkZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5LmMKQEAgLTEwLDMyICsxMCwzMCBAQAogI2luY2x1ZGUgIm1lbW9yeS5oIgogCiAjZGVmaW5lIERFRkFVTFRNSU5JTVVNU1dBUCAxNjAwMCAgICAgICAgLyoga2lsb2J5dGVzICovCi1pbnQgbWVtb3J5X29iamVjdF9pbmRleDsKLWludCBtaW5pbXVtX3N3YXA7CitzdGF0aWMgaW50IG1pbmltdW1fc3dhcDsKIAogLyoqIEluaXRpYWxpemVzIHRoZSBtZW1vcnkgbW9kdWxlICovCiB2b2lkCiBpbml0X21lbW9yeSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgICAgICBtZW1vcnlfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgbWVtU3dhcEVycm9yX29pZFtdICA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCwgMTAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIG1lbVN3YXBFcnJNc2dfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQsIDEwMSB9OworICAgIGNvbnN0IG9pZCAgICAgIG1lbW9yeV9vaWRbXSA9IHsgMSwgMywgNiwgMSwgNCwgMSwgMjAyMSwgNCB9OworICAgIGNvbnN0IG9pZCAgICAgIG1lbVN3YXBFcnJvcl9vaWRbXSAgPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQsIDEwMCB9OworICAgIGNvbnN0IG9pZCAgICAgIG1lbVN3YXBFcnJNc2dfb2lkW10gPSB7IDEsIDMsIDYsIDEsIDQsIDEsIDIwMjEsIDQsIDEwMSB9OwogCiAgICAgREVCVUdNU0dUTCgoIm1lbW9yeSIsICJJbml0aWFsaXppbmdcbiIpKTsKIAotICAgIG1lbW9yeV9vYmplY3RfaW5kZXggPSBPSURfTEVOR1RIKG1lbW9yeV9vaWQpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibWVtb3J5IiwgaGFuZGxlX21lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeV9vaWQsIG1lbW9yeV9vYmplY3RfaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnlfb2lkLCBPSURfTEVOR1RIKG1lbW9yeV9vaWQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUk9OTFkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgMTcpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibWVtU3dhcEVycm9yIiwgaGFuZGxlX21lbW9yeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJvcl9vaWQsIG1lbW9yeV9vYmplY3RfaW5kZXgrMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJvcl9vaWQsIE9JRF9MRU5HVEgobWVtU3dhcEVycm9yX29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVSX0NBTl9ST05MWSkpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyKAogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigibWVtU3dhcEVyck1zZyIsIGhhbmRsZV9tZW1vcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJNc2dfb2lkLCBtZW1vcnlfb2JqZWN0X2luZGV4KzEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbVN3YXBFcnJNc2dfb2lkLCBPSURfTEVOR1RIKG1lbVN3YXBFcnJNc2dfb2lkKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKSk7CiAKICAgICBzbm1wZF9yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic3dhcCIsIG1lbW9yeV9wYXJzZV9jb25maWcsCkBAIC03NCw3ICs3Miw3IEBACiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgbmV0c25tcF9tZW1vcnlfbG9hZCgpOwotICAgICAgICBzd2l0Y2ggKHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbIG1lbW9yeV9vYmplY3RfaW5kZXggXSkgeworICAgICAgICBzd2l0Y2ggKHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbIHJlZ2luZm8tPnJvb3RvaWRfbGVuIC0gMiBdKSB7CiAgICAgICAgIGNhc2UgTUVNT1JZX0lOREVYOgogICAgICAgICAgICAgdmFsID0gMDsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjA1LDcgKzIwMyw3IEBACiAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ1bmtub3duIG9iamVjdCAoJWx1KSBpbiBoYW5kbGVfbWVtb3J5XG4iLAotICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZVsgbWVtb3J5X29iamVjdF9pbmRleCBdKTsKKyAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVbIHJlZ2luZm8tPnJvb3RvaWRfbGVuIC0gMiBdKTsKIE5PU1VDSDoKICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3RzLCBTTk1QX05PU1VDSE9CSkVDVCApOwogICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuYwppbmRleCAzMThlZWUwLi44MjBmNjI4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmMKQEAgLTMwLDcgKzMwLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2F1dG9fbmxpc3QuaD4KIAotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIgICAgICAgICAvKiB1dGlsaXR5IGZ1bmN0aW9uIGRlY2xhcmF0aW9ucyAqLworI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KICNpbmNsdWRlICJtZW1vcnkuaCIgICAgICAgICAgICAgLyogdGhlIG1vZHVsZS1zcGVjaWZpYyBoZWFkZXIgKi8KICNpbmNsdWRlICJtZW1vcnlfYWl4NC5oIiAgICAvKiB0aGUgbW9kdWxlLXNwZWNpZmljIGhlYWRlciAqLwogCkBAIC01NSwzOCArNTUsNDAgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV9tZW1fdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7TUVNVE9UQUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVB9fSwKLSAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxTV0FQfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTH19LAotICAgICAgICB7TUVNQVZBSUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFJFQUx9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVVNFRFNXQVBUWFR9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVVNFRFJFQUxUWFR9fSwKLSAgICAgICAge01FTVRPVEFMRlJFRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxGUkVFfX0sCi0gICAgICAgIHtNRU1TV0FQTUlOSU1VTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNU1dBUE1JTklNVU19fSwKLSAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNU0hBUkVEfX0sCi0gICAgICAgIHtNRU1CVUZGRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUJVRkZFUn19LAotICAgICAgICB7TUVNQ0FDSEVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1DQUNIRUR9fSwKLSAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7TUVNVE9UQUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVB9fSwKKyAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxTV0FQfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTH19LAorICAgICAgICB7TUVNQVZBSUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFJFQUx9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQVFhUfX0sCisgICAgICAgIHtNRU1VU0VEU1dBUFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVVNFRFNXQVBUWFR9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMVFhUfX0sCisgICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVVNFRFJFQUxUWFR9fSwKKyAgICAgICAge01FTVRPVEFMRlJFRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxGUkVFfX0sCisgICAgICAgIHtNRU1TV0FQTUlOSU1VTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU1dBUE1JTklNVU19fSwKKyAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU0hBUkVEfX0sCisgICAgICAgIHtNRU1CVUZGRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUJVRkZFUn19LAorICAgICAgICB7TUVNQ0FDSEVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1DQUNIRUR9fSwKKyAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JGTEFHfX0sCisgICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CiAgICAgfTsKIAogICAgIC8qCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2FpeDQuaAppbmRleCA5ZjU4MDQxLi5jMzk1OTZjIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfYWl4NC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9haXg0LmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9NRU1PUllfQUlYNF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9NRU1PUllfQUlYNF9ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCisKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKIHZvaWQgICAgICAgICAgICBpbml0X21lbW9yeV9haXg0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmMKaW5kZXggNzljYzRjOS4uNzRkNTM2NSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5jCkBAIC00NCw3ICs0NCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgIm1lbW9yeV9kYXJ3aW43LmgiCiAKQEAgLTczLDIzICs3Myw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVB9fSwKLSAgICAgICAge01FTUFWQUlMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFJFQUx9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1VU0VEUkVBTFRYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNU1dBUE1JTklNVU19fSwKLSAgICAgICAge01FTVNIQVJFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1DQUNIRUR9fSwKLSAgICAgICAge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZGFyd2luNy5oCmluZGV4IGVmYTk5YzguLmFiNWQyNjQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9kYXJ3aW43LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2RhcndpbjcuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX01FTU9SWV9EQVJXSU43X0gKICNkZWZpbmUgX01JQkdST1VQX01FTU9SWV9EQVJXSU43X0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfbWVtb3J5X2Rhcndpbjcodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfZHluaXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jCmluZGV4IGIxZDZjYjMuLjI2MWM0Y2QgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5jCkBAIC0xNyw3ICsxNyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiICAgICAgICAgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiIC8qIHV0aWxpdHkgZnVuY3Rpb24gZGVjbGFyYXRpb25zICovCiAjaW5jbHVkZSAibWVtb3J5LmgiICAgICAgICAgICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAjaW5jbHVkZSAibWVtb3J5X2R5bml4LmgiICAgICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAKQEAgLTM0LDM4ICszNCw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9keW5peC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgKaW5kZXggMGE2OTk4ZC4uNGZiNTI5NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2R5bml4LmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9NRU1PUllfRFlOSVhfSAogI2RlZmluZSBfTUlCR1JPVVBfTUVNT1JZX0RZTklYX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9mcmVlYnNkMi5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMKaW5kZXggMmJlZTUxNy4uMjJkZGU0YyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2ZyZWVic2QyLmMKQEAgLTg3LDM4ICs4Nyw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfaHB1eC5jCmluZGV4IDViZjk5YWQuLmMyYjI0NzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9ocHV4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X2hwdXguYwpAQCAtNDksMzggKzQ5LDQwIEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfbWVtX3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxTV0FQfX0sCi0gICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMU1dBUH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUx9fSwKLSAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQVZBSUxSRUFMfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUFRYVH19LAotICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURTV0FQVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMUkVBTFRYVH19LAotICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVVTRURSRUFMVFhUfX0sCi0gICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMRlJFRX19LAotICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNXQVBNSU5JTVVNfX0sCi0gICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVNIQVJFRH19LAotICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1CVUZGRVJ9fSwKLSAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQ0FDSEVEfX0sCi0gICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge0VSUk9SRkxBR319LAotICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk1TR319CisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge01FTVRPVEFMU1dBUCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxTV0FQfX0sCisgICAgICAgIHtNRU1BVkFJTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMU1dBUH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUx9fSwKKyAgICAgICAge01FTUFWQUlMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQVZBSUxSRUFMfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUFRYVH19LAorICAgICAgICB7TUVNVVNFRFNXQVBUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURTV0FQVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMUkVBTFRYVH19LAorICAgICAgICB7TUVNVVNFRFJFQUxUWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVVTRURSRUFMVFhUfX0sCisgICAgICAgIHtNRU1UT1RBTEZSRUUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMRlJFRX19LAorICAgICAgICB7TUVNU1dBUE1JTklNVU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNXQVBNSU5JTVVNfX0sCisgICAgICAgIHtNRU1TSEFSRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVNIQVJFRH19LAorICAgICAgICB7TUVNQlVGRkVSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1CVUZGRVJ9fSwKKyAgICAgICAge01FTUNBQ0hFRCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQ0FDSEVEfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9SRkxBR319LAorICAgICAgICB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQogICAgIH07CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmMKaW5kZXggNjYzMjkyMS4uM2QyNmE0NCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5jCkBAIC00Nyw3ICs0Nyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgIm1lbW9yeS5oIgogI2luY2x1ZGUgIm1lbW9yeV9uZXRic2QxLmgiCiAKQEAgLTc1LDM4ICs3NSw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfbmV0YnNkMS5oCmluZGV4IGE5Mzc1NGEuLmExOTVmODUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9uZXRic2QxLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X25ldGJzZDEuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX01FTU9SWV9ORVRCU0QxX0gKICNkZWZpbmUgX01JQkdST1VQX01FTU9SWV9ORVRCU0QxX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogZXh0ZXJuIHZvaWQgICAgIGluaXRfbWVtb3J5X25ldGJzZDEodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9tZW1vcnlfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jCmluZGV4IDMzZjQxYjIuLjJkMzYyNzggMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5jCkBAIC0xMiw3ICsxMiw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiICAgICAgICAgLyogdXRpbGl0eSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgKi8KKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiIC8qIHV0aWxpdHkgZnVuY3Rpb24gZGVjbGFyYXRpb25zICovCiAjaW5jbHVkZSAibWVtb3J5LmgiICAgICAgICAgICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAjaW5jbHVkZSAibWVtb3J5X3NvbGFyaXMyLmgiICAgIC8qIHRoZSBtb2R1bGUtc3BlY2lmaWMgaGVhZGVyICovCiAKQEAgLTQyLDM4ICs0Miw0MCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX21lbV92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTVRPVEFMU1dBUH19LAotICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1BVkFJTFNXQVB9fSwKLSAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNVE9UQUxSRUFMfX0sCi0gICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUFWQUlMUkVBTH19LAotICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFNXQVBUWFR9fSwKLSAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEU1dBUFRYVH19LAotICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTFJFQUxUWFR9fSwKLSAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1VU0VEUkVBTFRYVH19LAotICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1UT1RBTEZSRUV9fSwKLSAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TV0FQTUlOSU1VTX19LAotICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtNRU1TSEFSRUR9fSwKLSAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsCi0gICAgICAgICB7TUVNQlVGRkVSfX0sCi0gICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLAotICAgICAgICAge01FTUNBQ0hFRH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX21lbSwgMSwKLSAgICAgICAgIHtFUlJPUkZMQUd9fSwKLSAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JNU0d9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtNRU1UT1RBTFNXQVAsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTVRPVEFMU1dBUH19LAorICAgICAgICB7TUVNQVZBSUxTV0FQLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1BVkFJTFNXQVB9fSwKKyAgICAgICAge01FTVRPVEFMUkVBTCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNVE9UQUxSRUFMfX0sCisgICAgICAgIHtNRU1BVkFJTFJFQUwsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUFWQUlMUkVBTH19LAorICAgICAgICB7TUVNVE9UQUxTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFNXQVBUWFR9fSwKKyAgICAgICAge01FTVVTRURTV0FQVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEU1dBUFRYVH19LAorICAgICAgICB7TUVNVE9UQUxSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTFJFQUxUWFR9fSwKKyAgICAgICAge01FTVVTRURSRUFMVFhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1VU0VEUkVBTFRYVH19LAorICAgICAgICB7TUVNVE9UQUxGUkVFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1UT1RBTEZSRUV9fSwKKyAgICAgICAge01FTVNXQVBNSU5JTVVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TV0FQTUlOSU1VTX19LAorICAgICAgICB7TUVNU0hBUkVELCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtNRU1TSEFSRUR9fSwKKyAgICAgICAge01FTUJVRkZFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfbWVtLCAxLCB7TUVNQlVGRkVSfX0sCisgICAgICAgIHtNRU1DQUNIRUQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge01FTUNBQ0hFRH19LAorICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9tZW0sIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX21lbSwgMSwge0VSUk9STVNHfX0KICAgICB9OwogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL21lbW9yeV9zb2xhcmlzMi5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgKaW5kZXggMzM2YjNkZC4uZmZmNWY3OSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvbWVtb3J5X3NvbGFyaXMyLmgKQEAgLTUsNiArNSw4IEBACiAjaWZuZGVmIF9NSUJHUk9VUF9NRU1PUllfU09MQVJJUzJfSAogI2RlZmluZSBfTUlCR1JPVVBfTUVNT1JZX1NPTEFSSVMyX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogdm9pZCAgICAgICAgICAgIGluaXRfbWVtb3J5X3NvbGFyaXMyKHZvaWQpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzcy5jCmluZGV4IGE0MmE5MWIuLmZhOTMzYjYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3MuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzLmMKQEAgLTQ5LDcgKzQ5LDggQEAKICAgICAvKgogICAgICAqIGJvZ3VzIGVudHJ5LiAgT25seSBzb21lIG9mIGl0IGlzIGFjdHVhbGx5IHVzZWQuIAogICAgICAqLwotICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfcGFzcywgMCwge01JQklOREVYfX0sCisgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9wYXNzLCAwLCB7TUlCSU5ERVh9fSwKIH07CiAKIApAQCAtMTQ4LDcgKzE0OSw3IEBACiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgZm9yIChpID0gMCwgcHRtcCA9IChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKSBwYXNzdGhydXM7Ci0gICAgICAgICAgICAgaSA8IG51bXBhc3N0aHJ1cyAmJiBwdG1wICE9IDA7IGkrKywgcHRtcCA9IHB0bXAtPm5leHQpCisgICAgICAgICAgICAgaSA8IG51bXBhc3N0aHJ1cyAmJiBwdG1wICE9IE5VTEw7IGkrKywgcHRtcCA9IHB0bXAtPm5leHQpCiAgICAgICAgICAgICBldG1wW2ldID0gcHRtcDsKICAgICAgICAgcXNvcnQoZXRtcCwgbnVtcGFzc3RocnVzLCBzaXplb2Yoc3RydWN0IGV4dGVuc2libGUgKiksCiAgICAgICAgICAgICAgIHBhc3NfY29tcGFyZSk7CkBAIC0zMDAsMTIgKzMwMSw3IEBACiAgICAgICAgICAgICBleGVjX2NvbW1hbmQocGFzc3RocnUpOwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInVjZC1zbm1wL3Bhc3MiLCAicGFzcy1ydW5uaW5nIHJldHVybmVkOiAlcyIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzdGhydS0+b3V0cHV0KSk7Ci0gICAgICAgICAgICBpZiAoIXN0cm5jYXNlY21wKHBhc3N0aHJ1LT5vdXRwdXQsICJub3Qtd3JpdGFibGUiLCAxMikpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChwYXNzdGhydS0+b3V0cHV0LCAid3JvbmctdHlwZSIsIDEwKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1RZUEU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vKHBhc3N0aHJ1LT5vdXRwdXQpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChzbm1wX2dldF9kb19kZWJ1Z2dpbmcoKSkgewpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmMKaW5kZXggYWNlMGYwNy4uZTNkOWEwMSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5jCkBAIC02MSw2ICs2MSw1MSBAQAogICAgIHJldHVybiAzICogbiAtIDE7CiB9CiAKK2ludAorbmV0c25tcF9pbnRlcm5hbF9wYXNzX3N0cl90b19lcnJubyhjb25zdCBjaGFyICpidWYpCit7CisgICAgaWYgKCFzdHJuY2FzZWNtcChidWYsICJ0b28tYmlnIiwgNykpIHsKKyAgICAgICAgLyogU2hvdWxkbid0IGhhcHBlbiAqLworICAgICAgICByZXR1cm4gU05NUF9FUlJfVE9PQklHOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIm5vLXN1Y2gtbmFtZSIsIDEyKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9TVUNITkFNRTsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJiYWQtdmFsdWUiLCA5KSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfQkFEVkFMVUU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAicmVhZC1vbmx5IiwgOSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFQURPTkxZOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImdlbi1lcnJvciIsIDkpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAibm8tYWNjZXNzIiwgOSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PQUNDRVNTOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLXR5cGUiLCAxMCkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJ3cm9uZy1sZW5ndGgiLCAxMikpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HTEVOR1RIOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLWVuY29kaW5nIiwgMTQpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0VOQ09ESU5HOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLXZhbHVlIiwgMTEpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR1ZBTFVFOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIm5vLWNyZWF0aW9uIiwgMTEpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0NSRUFUSU9OOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImluY29uc2lzdGVudC12YWx1ZSIsIDE4KSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAicmVzb3VyY2UtdW5hdmFpbGFibGUiLCAyMCkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEU7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiY29tbWl0LWZhaWxlZCIsIDEzKSkgeworICAgICAgICByZXR1cm4gU05NUF9FUlJfQ09NTUlURkFJTEVEOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgInVuZG8tZmFpbGVkIiwgMTEpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9VTkRPRkFJTEVEOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImF1dGhvcml6YXRpb24tZXJyb3IiLCAxOSkpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0FVVEhPUklaQVRJT05FUlJPUjsKKyAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJub3Qtd3JpdGFibGUiLCAxMikpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PVFdSSVRBQkxFOworICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImluY29uc2lzdGVudC1uYW1lIiwgMTcpKSB7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9JTkNPTlNJU1RFTlROQU1FOworICAgIH0KKworICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCiB1bnNpZ25lZCBjaGFyICoKIG5ldHNubXBfaW50ZXJuYWxfcGFzc19wYXJzZShjaGFyICogYnVmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiBidWYyLApAQCAtODIsNyArMTI3LDE5IEBACiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGJ1ZjIpOwogICAgICAgICB2cC0+dHlwZSA9IEFTTl9PQ1RFVF9TVFI7CiAgICAgICAgIHJldHVybiAoKHVuc2lnbmVkIGNoYXIgKikgYnVmMik7Ci0gICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiaW50ZWdlciIsIDcpKSB7CisgICAgfQorI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUworICAgIGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJpbnRlZ2VyNjQiLCA5KSkgeworICAgICAgICBzdGF0aWMgc3RydWN0IGNvdW50ZXI2NCBjNjQ7CisgICAgICAgIHVpbnQ2NF90IHY2NCA9IHN0cnRvdWxsKGJ1ZjIsIE5VTEwsIDEwKTsKKyAgICAgICAgYzY0LmhpZ2ggPSAodW5zaWduZWQgbG9uZykodjY0ID4+IDMyKTsKKyAgICAgICAgYzY0LmxvdyAgPSAodW5zaWduZWQgbG9uZykodjY0ICYgMHhmZmZmZmZmZik7CisgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGM2NCk7CisgICAgICAgIHZwLT50eXBlID0gQVNOX0lOVEVHRVI2NDsKKyAgICAgICAgcmV0dXJuICgodW5zaWduZWQgY2hhciAqKSAmYzY0KTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiaW50ZWdlciIsIDcpKSB7CiAgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmdfcmV0KTsKICAgICAgICAgbG9uZ19yZXQgPSBzdHJ0b2woYnVmMiwgTlVMTCwgMTApOwogICAgICAgICB2cC0+dHlwZSA9IEFTTl9JTlRFR0VSOwpAQCAtOTIsNyArMTQ5LDE3IEBACiAgICAgICAgIGxvbmdfcmV0ID0gc3RydG91bChidWYyLCBOVUxMLCAxMCk7CiAgICAgICAgIHZwLT50eXBlID0gQVNOX1VOU0lHTkVEOwogICAgICAgICByZXR1cm4gKCh1bnNpZ25lZCBjaGFyICopICZsb25nX3JldCk7Ci0gICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoYnVmLCAiY291bnRlciIsIDcpKSB7CisgICAgfQorICAgIGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJjb3VudGVyNjQiLCA5KSkgeworICAgICAgICBzdGF0aWMgc3RydWN0IGNvdW50ZXI2NCBjNjQ7CisgICAgICAgIHVpbnQ2NF90IHY2NCA9IHN0cnRvdWxsKGJ1ZjIsIE5VTEwsIDEwKTsKKyAgICAgICAgYzY0LmhpZ2ggPSAodW5zaWduZWQgbG9uZykodjY0ID4+IDMyKTsKKyAgICAgICAgYzY0LmxvdyAgPSAodW5zaWduZWQgbG9uZykodjY0ICYgMHhmZmZmZmZmZik7CisgICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGM2NCk7CisgICAgICAgIHZwLT50eXBlID0gQVNOX0NPVU5URVI2NDsKKyAgICAgICAgcmV0dXJuICgodW5zaWduZWQgY2hhciAqKSAmYzY0KTsKKyAgICB9CisgICAgZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgImNvdW50ZXIiLCA3KSkgewogICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nX3JldCk7CiAgICAgICAgIGxvbmdfcmV0ID0gc3RydG91bChidWYyLCBOVUxMLCAxMCk7CiAgICAgICAgIHZwLT50eXBlID0gQVNOX0NPVU5URVI7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcGFzc19jb21tb24uaAppbmRleCAyY2U2YWZkLi5iMWQ3ZTRiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX2NvbW1vbi5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfY29tbW9uLmgKQEAgLTYsNiArNiw5IEBACiAgKiBvciBkaXNhcHBlYXIgYXQgYW55IHRpbWUKICAqLwogCitpbnQKK25ldHNubXBfaW50ZXJuYWxfcGFzc19zdHJfdG9fZXJybm8oY29uc3QgY2hhciAqYnVmKTsKKwogdW5zaWduZWQgY2hhciAqCiBuZXRzbm1wX2ludGVybmFsX3Bhc3NfcGFyc2UoY2hhciAqYnVmLCBjaGFyICpidWYyLCBzaXplX3QgKnZhcl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZhcmlhYmxlICp2cCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wYXNzX3BlcnNpc3QuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCmluZGV4IGMzZjM4OTkuLmY2ODU0MTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Bhc3NfcGVyc2lzdC5jCkBAIC02Niw4ICs2Niw4IEBACiAgICAgLyoKICAgICAgKiBib2d1cyBlbnRyeS4gIE9ubHkgc29tZSBvZiBpdCBpcyBhY3R1YWxseSB1c2VkLiAKICAgICAgKi8KLSAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3Bhc3NfcGVyc2lzdCwgMCwKLSAgICAge01JQklOREVYfX0sCisgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICB2YXJfZXh0ZW5zaWJsZV9wYXNzX3BlcnNpc3QsIDAsIHtNSUJJTkRFWH19LAogfTsKIAogdm9pZApAQCAtMTc5LDcgKzE3OSw3IEBACiAgICAgICAgIGlmIChldG1wID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGZvciAoaSA9IDAsIHB0bXAgPSAoc3RydWN0IGV4dGVuc2libGUgKikgcGVyc2lzdHBhc3N0aHJ1czsKLSAgICAgICAgICAgICBpIDwgbnVtcGVyc2lzdHBhc3N0aHJ1cyAmJiBwdG1wICE9IDA7IGkrKywgcHRtcCA9IHB0bXAtPm5leHQpCisgICAgICAgICAgICAgaSA8IG51bXBlcnNpc3RwYXNzdGhydXMgJiYgcHRtcCAhPSBOVUxMOyBpKyssIHB0bXAgPSBwdG1wLT5uZXh0KQogICAgICAgICAgICAgZXRtcFtpXSA9IHB0bXA7CiAgICAgICAgIHFzb3J0KGV0bXAsIG51bXBlcnNpc3RwYXNzdGhydXMsIHNpemVvZihzdHJ1Y3QgZXh0ZW5zaWJsZSAqKSwKICAgICAgICAgICAgICAgcGFzc19wZXJzaXN0X2NvbXBhcmUpOwpAQCAtMzgxLDE4ICszODEsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT1RXUklUQUJMRTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKCFzdHJuY2FzZWNtcChidWYsICJub3Qtd3JpdGFibGUiLCAxMikpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9UV1JJVEFCTEU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJ3cm9uZy10eXBlIiwgMTApKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVFlQRTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLWxlbmd0aCIsIDEyKSkgewotICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9XUk9OR0xFTkdUSDsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cm5jYXNlY21wKGJ1ZiwgIndyb25nLXZhbHVlIiwgMTEpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX1dST05HVkFMVUU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcChidWYsICJpbmNvbnNpc3RlbnQtdmFsdWUiLCAxOCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIHJldHVybiBuZXRzbm1wX2ludGVybmFsX3Bhc3Nfc3RyX3RvX2Vycm5vKGJ1Zik7CiAgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CkBAIC03MjUsNyArNzE0LDcgQEAKIAogICAgIGlmIChwZXJzaXN0X3BpcGVzW2lpbmRleF0ucGlkICE9IC0xKSB7CiAjaWYgSEFWRV9TWVNfV0FJVF9ICi0gICAgICAgIHdhaXRwaWQocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCwgMCwgMCk7CisgICAgICAgIHdhaXRwaWQocGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCwgTlVMTCwgMCk7CiAjZW5kaWYKICNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZCAobWluZ3czMikgJiYgIWRlZmluZWQgKEhBVkVfU0lHTkFMKQogICAgICAgICBpZiAoIUNsb3NlSGFuZGxlKChIQU5ETEUpcGVyc2lzdF9waXBlc1tpaW5kZXhdLnBpZCkpIHsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb2MuYwppbmRleCA3MjUyMWEwLi40Mjg0ZDA4IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm9jLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJvYy5jCkBAIC01NCw2ICs1NCw5IEBACiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKICNpbmNsdWRlICJwcm9jLmgiCisjaWZkZWYgVVNJTkdfSE9TVF9EQVRBX0FDQ0VTU19TV1JVTl9NT0RVTEUKKyNpbmNsdWRlIDxuZXQtc25tcC9kYXRhX2FjY2Vzcy9zd3J1bi5oPgorI2VuZGlmCiAjaWZkZWYgVVNJTkdfVUNEX1NOTVBfRVJST1JNSUJfTU9EVUxFCiAjaW5jbHVkZSAiZXJyb3JtaWIuaCIKICNlbHNlCkBAIC03NiwyMSArNzksMjQgQEAKICAgICAgKiBpbmZvcm1hdGlvbiBhdCAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfcHJvY192YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1BST0NNSU4sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge1BST0NNSU59fSwKLSAgICAgICAge1BST0NNQVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfcHJvYywgMSwge1BST0NNQVh9fSwKLSAgICAgICAge1BST0NDT1VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLAotICAgICAgICAge1BST0NDT1VOVH19LAotICAgICAgICB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7RVJST1JGTEFHfX0sCi0gICAgICAgIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7RVJST1JNU0d9fSwKLSAgICAgICAge0VSUk9SRklYLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLAotICAgICAgICAge0VSUk9SRklYfX0sCi0gICAgICAgIHtFUlJPUkZJWENNRCwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsCi0gICAgICAgICB7RVJST1JGSVhDTUR9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1BST0NNSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtQUk9DTUlOfX0sCisgICAgICAgIHtQUk9DTUFYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7UFJPQ01BWH19LAorICAgICAgICB7UFJPQ0NPVU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7UFJPQ0NPVU5UfX0sCisgICAgICAgIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUkZMQUd9fSwKKyAgICAgICAge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUk1TR319LAorICAgICAgICB7RVJST1JGSVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV9wcm9jLCAxLCB7RVJST1JGSVh9fSwKKyAgICAgICAge0VSUk9SRklYQ01ELCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Byb2MsIDEsIHtFUlJPUkZJWENNRH19CiAgICAgfTsKIAogICAgIC8qCkBAIC0zNDgsNiArMzU0LDE0IEBACiAgICAgcmV0dXJuIChwcm9jKTsKIH0KIAorI2lmZGVmIFVTSU5HX0hPU1RfREFUQV9BQ0NFU1NfU1dSVU5fTU9EVUxFCitpbnQKK3NoX2NvdW50X3Byb2NzKGNoYXIgKnByb2NuYW1lKQoreworICAgIHJldHVybiBzd3J1bl9jb3VudF9wcm9jZXNzZXNfYnlfbmFtZSggcHJvY25hbWUgKTsKK30KKyNlbHNlCisKICNpZmRlZiBic2RpMgogI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgogI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KQEAgLTg1MiwzICs4NjYsNCBAQAogICAgIHJldHVybiAocmV0KTsKIH0KICNlbmRpZgorI2VuZGlmICAgLyogIVVTSU5HX0hPU1RfREFUQV9BQ0NFU1NfU1dSVU5fTU9EVUxFICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvcHJveHkuYwppbmRleCA1NjkyMTBkLi4xZjhmNDcwIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC9wcm94eS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Byb3h5LmMKQEAgLTQxOSw3ICs0MTksNyBAQAogICAgICAgICAgICAgICogc3VmZml4IGFwcGVuZGVkPyAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInByb3h5IiwgImxlbmd0aD0lZCwgYmFzZV9sZW49JWQsIG5hbWVfbGVuPSVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgb3VybGVuZ3RoLCBzcC0+YmFzZV9sZW4sIHNwLT5uYW1lX2xlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgKGludClvdXJsZW5ndGgsIChpbnQpc3AtPmJhc2VfbGVuLCAoaW50KXNwLT5uYW1lX2xlbikpOwogICAgICAgICAgICAgaWYgKG91cmxlbmd0aCA+IChpbnQpIHNwLT5uYW1lX2xlbikKICAgICAgICAgICAgICAgICBtZW1jcHkoJihzcC0+YmFzZVtzcC0+YmFzZV9sZW5dKSwgJihvdXJuYW1lW3NwLT5uYW1lX2xlbl0pLAogICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob2lkKSAqIChvdXJsZW5ndGggLSBzcC0+bmFtZV9sZW4pKTsKQEAgLTQ5NSw3ICs0OTUsNyBAQAogICAgICAgICAgKiBXV1dYWFg6IGRvbid0IGxlYXZlIHJlcXVlc3RzIGRlbGF5ZWQgaWYgb3BlcmF0aW9uIGlzCiAgICAgICAgICAqIHNvbWV0aGluZyBsaWtlIFRJTUVPVVQgCiAgICAgICAgICAqLwotICAgICAgICBERUJVR01TR1RMKCgicHJveHkiLCAiZ290IHRpbWVkIG91dC4uLiByZXF1ZXN0cyA9ICUwOHBcbiIsIHJlcXVlc3RzKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJwcm94eSIsICJnb3QgdGltZWQgb3V0Li4uIHJlcXVlc3RzID0gJThwXG4iLCByZXF1ZXN0cykpOwogCiAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZChyZXF1ZXN0cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CkBAIC01MjMsNyArNTIzLDcgQEAKICAgICAgICAgICAgICAqIE5vdCBzdXJlIGlmIGFueSBvdGhlciBlcnJvciBjb2RlcyBuZWVkIHRoZSBzYW1lIHRyZWF0bWVudC4gTGVmdAogICAgICAgICAgICAgICogYXMgYW4gZXhlcmNpc2UgdG8gdGhlIHJlYWRlci4uLgogICAgICAgICAgICAgICovCi0gICAgICAgICAgICBERUJVR01TR1RMKCgicHJveHkiLCAiZ290IGVycm9yIHJlc3BvbnNlICglZClcbiIsIHBkdS0+ZXJyc3RhdCkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInByb3h5IiwgImdvdCBlcnJvciByZXNwb25zZSAoJWxkKVxuIiwgcGR1LT5lcnJzdGF0KSk7CiAgICAgICAgICAgICBpZigoY2FjaGUtPnJlcWluZm8tPm1vZGUgPT0gTU9ERV9HRVRORVhUKSAmJgogICAgICAgICAgICAgICAgKFNOTVBfRVJSX05PU1VDSE5BTUUgPT0gcGR1LT5lcnJzdGF0KSkgewogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwcm94eSIsICIgIGlnbm9yaW5nIGVycm9yIHJlc3BvbnNlXG4iKSk7CkBAIC01MzksNyArNTM5LDcgQEAKIAkJICoJP2Z1bmM9ZGV0YWlsJmF0aWQ9MTEyNjk0JmFpZD0xNTU0MjYxJmdyb3VwX2lkPTEyNjk0CiAJCSAqLwogCQlERUJVR01TR1RMKCgicHJveHkiLAotCQkgICAgImdvdCBTRVQgZXJyb3IgJXMsIGluZGV4ICVkXG4iLAorCQkgICAgImdvdCBTRVQgZXJyb3IgJXMsIGluZGV4ICVsZFxuIiwKIAkJICAgIHNubXBfZXJyc3RyaW5nKHBkdS0+ZXJyc3RhdCksIHBkdS0+ZXJyaW5kZXgpKTsKIAkJbmV0c25tcF9oYW5kbGVyX21hcmtfcmVxdWVzdHNfYXNfZGVsZWdhdGVkKAogCQkgICAgcmVxdWVzdHMsIFJFUVVFU1RfSVNfTk9UX0RFTEVHQVRFRCk7CkBAIC01ODMsNyArNTgzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC0+YmFzZV9sZW4pICE9IDApKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJwcm94eSIsICJvdXQgb2YgcmVnaXN0ZXJlZCByYW5nZS4uLiAiKSk7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dPSUQoKCJwcm94eSIsIHZhci0+bmFtZSwgc3AtPmJhc2VfbGVuKSk7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0coKCAgICJwcm94eSIsICIgKCVkKSAhPSAiLCBzcC0+YmFzZV9sZW4pKTsKKyAgICAgICAgICAgICAgICBERUJVR01TRygoICAgInByb3h5IiwgIiAoJWQpICE9ICIsIChpbnQpc3AtPmJhc2VfbGVuKSk7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dPSUQoKCJwcm94eSIsIHNwLT5iYXNlLCBzcC0+YmFzZV9sZW4pKTsKICAgICAgICAgICAgICAgICBERUJVR01TRygoICAgInByb3h5IiwgIlxuIikpOwogICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIEFTTl9OVUxMLCBOVUxMLCAwKTsKQEAgLTU5NSw3ICs1OTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcC0+bmFtZV9sZW4pICE9IDApKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJwcm94eSIsICJvdXQgb2YgcmVnaXN0ZXJlZCBiYXNlIHJhbmdlLi4uICIpKTsKICAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoInByb3h5IiwgdmFyLT5uYW1lLCBzcC0+bmFtZV9sZW4pKTsKLSAgICAgICAgICAgICAgICBERUJVR01TRygoICAgInByb3h5IiwgIiAoJWQpICE9ICIsIHNwLT5uYW1lX2xlbikpOworICAgICAgICAgICAgICAgIERFQlVHTVNHKCggICAicHJveHkiLCAiICglZCkgIT0gIiwgKGludClzcC0+bmFtZV9sZW4pKTsKICAgICAgICAgICAgICAgICBERUJVR01TR09JRCgoInByb3h5Iiwgc3AtPm5hbWUsIHNwLT5uYW1lX2xlbikpOwogICAgICAgICAgICAgICAgIERFQlVHTVNHKCggICAicHJveHkiLCAiXG4iKSk7CiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgQVNOX05VTEwsIE5VTEwsIDApOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3ZlcnNpb25pbmZvLmMKaW5kZXggYTk0YWY1Yy4uNGExMDllZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdmVyc2lvbmluZm8uYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92ZXJzaW9uaW5mby5jCkBAIC00MSwyOCArNDEsMjggQEAKICAgICAgKiBpbmZvcm1hdGlvbiBhdCAKICAgICAgKi8KICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfdmVyc2lvbl92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge1ZFUlRBRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSVEFHfX0sCi0gICAgICAgIHtWRVJEQVRFLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJEQVRFfX0sCi0gICAgICAgIHtWRVJDREFURSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSQ0RBVEV9fSwKLSAgICAgICAge1ZFUklERU5ULCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJJREVOVH19LAotICAgICAgICB7VkVSQ09ORklHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJDT05GSUd9fSwKLSAgICAgICAge1ZFUkNMRUFSQ0FDSEUsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSQ0xFQVJDQUNIRX19LAotICAgICAgICB7VkVSVVBEQVRFQ09ORklHLCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUlVQREFURUNPTkZJR319LAotICAgICAgICB7VkVSUkVTVEFSVEFHRU5ULCBBU05fSU5URUdFUiwgUldSSVRFLCB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLAotICAgICAgICAge1ZFUlJFU1RBUlRBR0VOVH19LAotICAgICAgICB7VkVSU0FWRVBFUlNJU1RFTlQsIEFTTl9JTlRFR0VSLCBSV1JJVEUsIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsCi0gICAgICAgICB7VkVSU0FWRVBFUlNJU1RFTlR9fSwKLSAgICAgICAge1ZFUkRFQlVHR0lORywgQVNOX0lOVEVHRVIsIFJXUklURSwgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwKLSAgICAgICAgIHtWRVJERUJVR0dJTkd9fQorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7VkVSVEFHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJUQUd9fSwKKyAgICAgICAge1ZFUkRBVEUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkRBVEV9fSwKKyAgICAgICAge1ZFUkNEQVRFLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJDREFURX19LAorICAgICAgICB7VkVSSURFTlQsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUklERU5UfX0sCisgICAgICAgIHtWRVJDT05GSUcsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkNPTkZJR319LAorICAgICAgICB7VkVSQ0xFQVJDQUNIRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJDTEVBUkNBQ0hFfX0sCisgICAgICAgIHtWRVJVUERBVEVDT05GSUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSVVBEQVRFQ09ORklHfX0sCisgICAgICAgIHtWRVJSRVNUQVJUQUdFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92ZXJzaW9uLCAxLCB7VkVSUkVTVEFSVEFHRU5UfX0sCisgICAgICAgIHtWRVJTQVZFUEVSU0lTVEVOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3ZlcnNpb24sIDEsIHtWRVJTQVZFUEVSU0lTVEVOVH19LAorICAgICAgICB7VkVSREVCVUdHSU5HLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdmVyc2lvbiwgMSwge1ZFUkRFQlVHR0lOR319CiAgICAgfTsKIAogICAgIC8qCkBAIC0xMDksMjIgKzEwOSwyMSBAQAogICAgICAgICBsb25nX3JldCA9IG5hbWVbOF07CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSAoJmxvbmdfcmV0KSk7CiAgICAgY2FzZSBWRVJUQUc6Ci0gICAgICAgIHNwcmludGYoZXJybXNnLCBuZXRzbm1wX2dldF92ZXJzaW9uKCkpOworICAgICAgICBzdHJsY3B5KGVycm1zZywgbmV0c25tcF9nZXRfdmVyc2lvbigpLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogICAgIGNhc2UgVkVSREFURToKLSAgICAgICAgc3ByaW50ZihlcnJtc2csICIkRGF0ZSQiKTsKKyAgICAgICAgc3RybGNweShlcnJtc2csICIkRGF0ZSQiLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogICAgIGNhc2UgVkVSQ0RBVEU6CiAgICAgICAgIGN1cnRpbWUgPSB0aW1lKE5VTEwpOwogICAgICAgICBjcHRyID0gY3RpbWUoJmN1cnRpbWUpOwotICAgICAgICBzcHJpbnRmKGVycm1zZywgY3B0cik7CisgICAgICAgIHN0cmxjcHkoZXJybXNnLCBjcHRyLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZykgLSAxOyAvKiAtIDEgdG8gc3RyaXAgdHJhaWxpbmcgbmV3bGluZSAqLwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgZXJybXNnKTsKICAgICBjYXNlIFZFUklERU5UOgotICAgICAgICBzcHJpbnRmKGVycm1zZywKLSAgICAgICAgICAgICAgICAiJElkJCIpOworICAgICAgICBzdHJsY3B5KGVycm1zZywgIiRJZCQiLCBzaXplb2YoZXJybXNnKSk7CiAgICAgICAgICp2YXJfbGVuID0gc3RybGVuKGVycm1zZyk7CiAgICAgICAgIHJldHVybiAoKHVfY2hhciAqKSBlcnJtc2cpOwogICAgIGNhc2UgVkVSQ09ORklHOgpAQCAtMTM0LDcgKzEzMyw3IEBACiAgICAgICAgICAgICAqdmFyX2xlbiA9IDEwMjQ7ICAgIC8qIG1pYiBpbXBvc2VkIHJlc3RyaWN0aW9uICovCiAgICAgICAgIHJldHVybiAodV9jaGFyICopIGNvbmZpZ19vcHRzOwogI2Vsc2UKLSAgICAgICAgc3ByaW50ZihlcnJtc2csICIiKTsKKyAgICAgICAgc3RybGNweShlcnJtc2csICIiLCBzaXplb2YoZXJybXNnKSkpOwogICAgICAgICAqdmFyX2xlbiA9IHN0cmxlbihlcnJtc2cpOwogICAgICAgICByZXR1cm4gKCh1X2NoYXIgKikgZXJybXNnKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYwppbmRleCA3OWYxMDA0Li5lYWRiZjVhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXQuYwpAQCAtMTMsNyArMTMsNyBAQAogdm9pZAogaW5pdF92bXN0YXQodm9pZCkKIHsKLSAgICBzdGF0aWMgb2lkICB2bXN0YXRfb2lkW10gPSB7IE5FVFNOTVBfVUNEQVZJU19NSUIsIDExIH07CisgICAgY29uc3Qgb2lkICB2bXN0YXRfb2lkW10gPSB7IE5FVFNOTVBfVUNEQVZJU19NSUIsIDExIH07CiAKICAgICBERUJVR01TR1RMKCgidm1zdGF0IiwgIkluaXRpYWxpemluZ1xuIikpOwogICAgIG5ldHNubXBfcmVnaXN0ZXJfc2NhbGFyX2dyb3VwKApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmMKaW5kZXggZDQ5MDRmOS4uNjlmYzM3MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5jCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgIm1pYmRlZnMuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAvKgogICogSGVhZGVyIGZpbGUgZm9yIHRoaXMgbW9kdWxlIApAQCAtMTUzLDQ1ICsxNTMsNTIgQEAKIAkgKiBXaGljaCB2YXJpYWJsZXMgZG8gd2Ugc2VydmljZSA/IAogCSAqLwogCXN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0JCXtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7TUlCSU5ERVh9fSwKLQkJe0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtFUlJPUk5BTUV9fSwKLQkJe1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLQkJe1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotCQl7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotCQl7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtJT1JFQ0VJVkV9fSwKLQkJe1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU0lOVEVSUlVQVFN9fSwKLQkJe1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU0NPTlRFWFR9fSwKLQkJe0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotCQl7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtDUFVTWVNURU19fSwKLQkJe0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotCQl7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7Q1BVUkFXVVNFUn19LAotCQl7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtDUFVSQVdTWVNURU19fSwKLQkJe0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0NQVVJBV0lETEV9fSwKLQkJe0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0NQVVJBV1dBSVR9fSwKLQkJe0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0JCSB7Q1BVUkFXS0VSTkVMfX0sCi0JCXtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge0lPUkFXU0VOVH19LAotCQl7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLQkJIHtJT1JBV1JFQ0VJVkV9fSwKLQkJe1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU1JBV0lOVEVSUlVQVFN9fSwKLQkJe1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotCQkge1NZU1JBV0NPTlRFWFR9fSwKKwkJe01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisJCXtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKwkJe1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKwkJe1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorCQl7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorCQl7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorCQl7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisJCXtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKwkJe0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorCQl7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorCQl7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisJCXtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKwkJe0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKwkJe0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorCQl7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdXQUlUfX0sCisJCXtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisJCXtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdTRU5UfX0sCisJCXtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdSRUNFSVZFfX0sCisJCXtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKwkJe1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTUkFXQ09OVEVYVH19LAogCQkvKgogCQkgKiBGdXR1cmUgdXNlOiAKLQkJICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCi0JCSAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CisJCSAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorCQkgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogCQkgKi8KIAl9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2FpeDQuaAppbmRleCA1MDg2OWFiLi5hMTNmY2NlIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYWl4NC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9haXg0LmgKQEAgLTE1LDcgKzE1LDcgQEAKICAgICAvKgogICAgICAqIERpcmVjdGl2ZSB0byBpbmNsdWRlIHV0aWxpdHkgbW9kdWxlIAogICAgICAqLwotY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcykKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCiAKICAgICAvKgogICAgICAqIHdlIGhhdmUgdG8gZGVmaW5lIHRoZSBpbmRleCBvdXJzZWx2ZXMsIGJlY2F1c2UgcGVyZnN0YXQgc3RydWN0dXJlcwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2JzZGk0LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYwppbmRleCA5NGQzMmIzLi5lMzViNmNkIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuYwpAQCAtNDEsNyArNDEsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ2bXN0YXQuaCIKIAogLyoKQEAgLTU3LDQxICs1Nyw0OCBAQAogewogCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdOSUNFfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV05JQ0V9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSU5UUn19LAogICAgICAgICAvKgogICAgICAgICAgKiBGdXR1cmUgdXNlOiAKICAgICAgICAgICovCiAgICAgICAgIC8qCi0gICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAotICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQorICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCisgICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICAqICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk1TRyB9fQogICAgICAgICAgKi8KICAgICB9OwogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfYnNkaTQuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5oCmluZGV4IDBiNjdhMTIuLjc0YmYzMWIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ic2RpNC5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVk1TVEFUX0JTREk0X0gKICNkZWZpbmUgX01JQkdST1VQX1ZNU1RBVF9CU0RJNF9ICiAKK2NvbmZpZ19yZXF1aXJlKHV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMpCisKICNpbmNsdWRlICJtaWJkZWZzLmgiCiAKIHZvaWQgICAgICAgICAgICBpbml0X3Ztc3RhdF9ic2RpNCh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmMgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5jCmluZGV4IDcwNDE1ZTUuLmQ5NmM1NWMgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuYwpAQCAtNDMsNyArNDMsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvYXV0b19ubGlzdC5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCIKICNpbmNsdWRlICJ2bXN0YXQuaCIKICNpbmNsdWRlICJ2bXN0YXRfZGFyd2luNy5oIgogCkBAIC03NCw0NSArNzQsNTIgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJTlRSfX0sCi0gICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNSQVdDT05URVhULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdDT05URVhUfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdOSUNFfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0NPTlRFWFR9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuaCBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9kYXJ3aW43LmgKaW5kZXggZjkyZTUwOS4uYjFhMzAxZCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2RhcndpbjcuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZGFyd2luNy5oCkBAIC01LDYgKzUsOCBAQAogI2lmbmRlZiBfTUlCR1JPVVBfVk1TVEFUX0RBUldJTjdfSAogI2RlZmluZSBfTUlCR1JPVVBfVk1TVEFUX0RBUldJTjdfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiB2b2lkICAgICAgICAgICAgaW5pdF92bXN0YXRfZGFyd2luNyh2b2lkKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9keW5peC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMKaW5kZXggOTE3MGIyNi4uMzNmNTQxMiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmMKQEAgLTM0LDcgKzM0LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSAibWliZGVmcy5oIgotI2luY2x1ZGUgInV0aWxfZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljLmgiCiAKIC8qCiAgKiBIZWFkZXIgZmlsZSBmb3IgdGhpcyBtb2R1bGUgCkBAIC0xNjUsNDMgKzE2NSw1MCBAQAogICAgICAqIFdoaWNoIHZhcmlhYmxlcyBkbyB3ZSBzZXJ2aWNlID8gCiAgICAgICovCiAgICAgc3RydWN0IHZhcmlhYmxlMiBleHRlbnNpYmxlX3Ztc3RhdF92YXJpYWJsZXNbXSA9IHsKLSAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtNSUJJTkRFWH19LAotICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0VSUk9STkFNRX19LAotICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAotICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTSU5URVJSVVBUU319LAotICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7U1lTQ09OVEVYVH19LAotICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCi0gICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVNZU1RFTX19LAotICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCi0gICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdVU0VSfX0sCi0gICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1NZU1RFTX19LAotICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSURMRX19LAotICAgICAgICB7Q1BVUkFXV0FJVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXV0FJVH19LAotICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdLRVJORUx9fSwKLSAgICAgICAge0lPUkFXU0VOVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SQVdTRU5UfX0sCi0gICAgICAgIHtJT1JBV1JFQ0VJVkUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXUkVDRUlWRX19LAorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisgICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNDT05URVhUfX0sCisgICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisgICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAorICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1dBSVR9fSwKKyAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisgICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAorICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1JFQ0VJVkV9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2R5bml4LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguaAppbmRleCBhYWUxNzkwLi44OTU0ZTM1IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZHluaXguaApAQCAtMTQsNyArMTQsNyBAQAogLyoKICAqIERpcmVjdGl2ZSB0byBpbmNsdWRlIHV0aWxpdHkgbW9kdWxlIAogICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgIC8qCiAgICAgICogTUlCIHdhbnRzIFZfQ1BVX1NZU1RFTSB3aGljaCBpcyBzeXNpbmZvIFZfQ1BVX0tFUk5FTCArIFZfQ1BVX1dBSVQgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jCmluZGV4IDkxODViYzYuLjNkZTg5YjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9mcmVlYnNkMi5jCkBAIC01Nyw3ICs1Nyw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogI2luY2x1ZGUgInZtc3RhdF9mcmVlYnNkMi5oIgogCkBAIC04OCw0NSArODgsNTIgQEAKIHsKIAogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJTlRSfX0sCi0gICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNSQVdDT05URVhULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdDT05URVhUfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAorICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdOSUNFfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXSURMRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXSURMRX19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0NPTlRFWFR9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2ZyZWVic2QyLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuaAppbmRleCBmMGU2MGI4Li4yNmI0NGI2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfZnJlZWJzZDIuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX1ZNU1RBVF9GUkVFQlNEMl9ICiAjZGVmaW5lIF9NSUJHUk9VUF9WTVNUQVRfRlJFRUJTRDJfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorCiAjaW5jbHVkZSAibWliZGVmcy5oIgogCiB2b2lkICAgICAgICAgICAgaW5pdF92bXN0YXRfZnJlZWJzZDIodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5jIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguYwppbmRleCA4OTJmYjdlLi5hNzg0NTAyIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmMKQEAgLTQ1LDcgKzQ1LDcgQEAKIC8qCiAgKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgVUNELVNOTVAgCiAgKi8KLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAvKgogICogSGVhZGVyIGZpbGUgZm9yIHRoaXMgbW9kdWxlIApAQCAtMTcxLDQ1ICsxNzEsNTIgQEAKICAgICAgKiBXaGljaCB2YXJpYWJsZXMgZG8gd2Ugc2VydmljZSA/IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1dBSVR9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXU0VOVH19LAotICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JBV1JFQ0VJVkV9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV05JQ0V9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdXQUlUfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7SU9SQVdTRU5ULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1NFTlR9fSwKKyAgICAgICAge0lPUkFXUkVDRUlWRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdSRUNFSVZFfX0sCiAgICAgICAgIC8qCiAgICAgICAgICAqIEZ1dHVyZSB1c2U6IAogICAgICAgICAgKi8KICAgICAgICAgLyoKLSAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUkZMQUcgfX0sCi0gICAgICAgICAqIHtFUlJPUk1TRywgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CisgICAgICAgICAqIHtFUlJPUkZMQUcsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICogIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKKyAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgICogIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STVNHIH19CiAgICAgICAgICAqLwogICAgIH07CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfaHB1eC5oCmluZGV4IGUxMDA5NWUuLjhmMjY1OTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2hwdXguaApAQCAtMTQsNyArMTQsNyBAQAogLyoKICAqIERpcmVjdGl2ZSB0byBpbmNsdWRlIHV0aWxpdHkgbW9kdWxlIAogICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgIC8qCiAgICAgICogTWFrZSA2NC1iaXQgcHN0YXQgY2FsbHMgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCmluZGV4IGYwOWVkMzQuLjc1MzhhMTQgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9saW51eC5jCkBAIC0xMDgsNyArMTA4LDcgQEAKIAogI2luY2x1ZGUgIm1pYmRlZnMuaCIKICNpbmNsdWRlICJzdHJ1Y3QuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogCiBGaW5kVmFyTWV0aG9kIHZhcl9leHRlbnNpYmxlX3Ztc3RhdDsKQEAgLTEyOCw1NCArMTI4LDY0IEBACiBpbml0X3Ztc3RhdCh2b2lkKQogewogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7UkFXU1dBUElOLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1JBV1NXQVBJTn19LAotICAgICAgICB7UkFXU1dBUE9VVCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtSQVdTV0FQT1VUfX0sCi0gICAgICAgIHtJT1NFTlQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCi0gICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkVDRUlWRX19LAotICAgICAgICB7SU9SQVdTRU5ULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAotICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JBV1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXTklDRX19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJRExFfX0sCi0gICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNSQVdDT05URVhULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNSQVdDT05URVhUfX0sCi0gICAgICAgIHtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdXQUlUfX0sCi0gICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJTlRSfX0sCi0gICAgICAgIHtDUFVSQVdTT0ZUSVJRLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTT0ZUSVJRfX0sCisgICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7TUlCSU5ERVh9fSwKKyAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtFUlJPUk5BTUV9fSwKKyAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCisgICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQT1VUfX0sCisgICAgICAgIHtSQVdTV0FQSU4sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1JBV1NXQVBJTn19LAorICAgICAgICB7UkFXU1dBUE9VVCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7UkFXU1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkFXU0VOVH19LAorICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1JFQ0VJVkV9fSwKKyAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKKyAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVU1lTVEVNfX0sCisgICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVJRExFfX0sCisgICAgICAgIHtDUFVSQVdVU0VSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdVU0VSfX0sCisgICAgICAgIHtDUFVSQVdOSUNFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdOSUNFfX0sCisgICAgICAgIHtDUFVSQVdTWVNURU0sIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NZU1RFTX19LAorICAgICAgICB7Q1BVUkFXS0VSTkVMLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdLRVJORUx9fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge1NZU1JBV0lOVEVSUlVQVFMsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0lOVEVSUlVQVFN9fSwKKyAgICAgICAge1NZU1JBV0NPTlRFWFQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NZU1JBV0NPTlRFWFR9fSwKKyAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1dBSVR9fSwKKyAgICAgICAge0NQVVJBV0lOVFIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lOVFJ9fSwKKyAgICAgICAge0NQVVJBV1NPRlRJUlEsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1NPRlRJUlF9fSwKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X2xpbnV4LmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaAppbmRleCA3MzhlMmYxLi42ZjdjNTBmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbGludXguaApAQCAtNSw2ICs1LDcgQEAKICNpZm5kZWYgX01JQkdST1VQX1ZNU1RBVF9ICiAjZGVmaW5lIF9NSUJHUk9VUF9WTVNUQVRfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQogY29uZmlnX3JlcXVpcmUoaGFyZHdhcmUvY3B1KQogCiAjaW5jbHVkZSAibWliZGVmcy5oIgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmMKaW5kZXggMTJjNzNkYi4uOTcwNmM0MiAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuYworKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5jCkBAIC00OSw3ICs0OSw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hdXRvX25saXN0Lmg+CiAKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogI2luY2x1ZGUgInZtc3RhdC5oIgogCiAvKgpAQCAtNjYsNDIgKzY2LDQ5IEBACiB7CiAKICAgICBzdHJ1Y3QgdmFyaWFibGUyIGV4dGVuc2libGVfdm1zdGF0X3ZhcmlhYmxlc1tdID0gewotICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge01JQklOREVYfX0sCi0gICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7RVJST1JOQU1FfX0sCi0gICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUElOfX0sCi0gICAgICAgIHtTV0FQT1VULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKLSAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKLSAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7SU9SRUNFSVZFfX0sCi0gICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNJTlRFUlJVUFRTfX0sCi0gICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtTWVNDT05URVhUfX0sCi0gICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVVTRVJ9fSwKLSAgICAgICAge0NQVVNZU1RFTSwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVU1lTVEVNfX0sCi0gICAgICAgIHtDUFVJRExFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKLSAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1VTRVJ9fSwKLSAgICAgICAge0NQVVJBV05JQ0UsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV05JQ0V9fSwKLSAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXU1lTVEVNfX0sCi0gICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdJRExFfX0sCi0gICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0tFUk5FTH19LAotICAgICAgICB7Q1BVUkFXSU5UUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXSU5UUn19LAorICAgICAgICB7TUlCSU5ERVgsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge01JQklOREVYfX0sCisgICAgICAgIHtFUlJPUk5BTUUsIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JOQU1FfX0sCisgICAgICAgIHtTV0FQSU4sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBJTn19LAorICAgICAgICB7U1dBUE9VVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAorICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1NFTlR9fSwKKyAgICAgICAge0lPUkVDRUlWRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SRUNFSVZFfX0sCisgICAgICAgIHtTWVNJTlRFUlJVUFRTLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNJTlRFUlJVUFRTfX0sCisgICAgICAgIHtTWVNDT05URVhULCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTWVNDT05URVhUfX0sCisgICAgICAgIHtDUFVVU0VSLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVVU0VSfX0sCisgICAgICAgIHtDUFVTWVNURU0sIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVNZU1RFTX19LAorICAgICAgICB7Q1BVSURMRSwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAorICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXVVNFUn19LAorICAgICAgICB7Q1BVUkFXTklDRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXTklDRX19LAorICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdTWVNURU19fSwKKyAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0lETEV9fSwKKyAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXS0VSTkVMfX0sCisgICAgICAgIHtDUFVSQVdJTlRSLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJTlRSfX0sCiAKICAgICAgICAgLyoKICAgICAgICAgICogRnV0dXJlIHVzZTogCiAgICAgICAgICAqLwogICAgICAgICAvKgotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApAQCAtMTkyLDcgKzE5OSw3IEBACiAgICAgICAgICAgICBtZW1zZXQoY3B1X25ldywgMCwgc2l6ZW9mKGNwdV9uZXcpKTsKICNlbGlmIGRlZmluZWQoS0VSTl9DUFRJTUUpCiAgICAgICAgIGludCAgICAgICAgICAgICBtaWJbMl0gPSB7IENUTF9LRVJOLCBLRVJOX0NQVElNRSB9OwotICAgICAgICBpbnQgICAgICAgICAgICAgc3NpemUgPSBzaXplb2YoY3B1X25ldyk7CisgICAgICAgIHNpemVfdCAgICAgICAgICBzc2l6ZSA9IHNpemVvZihjcHVfbmV3KTsKIAogICAgICAgICBpZiAoc3lzY3RsKG1pYiwgMiwgY3B1X25ldywgJnNzaXplLCBOVUxMLCAwKSA8IDApCiAgICAgICAgICAgICBtZW1zZXQoY3B1X25ldywgMCwgc2l6ZW9mKGNwdV9uZXcpKTsKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfbmV0YnNkMS5oCmluZGV4IGViNmIxNzIuLmFkZjVkNDYgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9uZXRic2QxLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X25ldGJzZDEuaApAQCAtNSw2ICs1LDggQEAKICNpZm5kZWYgX01JQkdST1VQX1ZNU1RBVF9ORVRCU0QxX0gKICNkZWZpbmUgX01JQkdST1VQX1ZNU1RBVF9ORVRCU0QxX0gKIAorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKKwogI2luY2x1ZGUgIm1pYmRlZnMuaCIKIAogdm9pZCAgICAgICAgICAgIGluaXRfdm1zdGF0X25ldGJzZDEodm9pZCk7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jCmluZGV4IGNhOGE4N2YuLjM3MTUwNDUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL3Ztc3RhdF9zb2xhcmlzMi5jCkBAIC00Niw3ICs0Niw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KIAogI2luY2x1ZGUgIm1pYmRlZnMuaCIKLSNpbmNsdWRlICJ1dGlsX2Z1bmNzLmgiCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgogCiAvKgogICogSGVhZGVyIGZpbGUgZm9yIHRoaXMgbW9kdWxlIApAQCAtMTY5LDQxICsxNjksNDggQEAKICAgICAgKiBXaGljaCB2YXJpYWJsZXMgZG8gd2Ugc2VydmljZSA/IAogICAgICAqLwogICAgIHN0cnVjdCB2YXJpYWJsZTIgZXh0ZW5zaWJsZV92bXN0YXRfdmFyaWFibGVzW10gPSB7Ci0gICAgICAgIHtNSUJJTkRFWCwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7TUlCSU5ERVh9fSwKLSAgICAgICAge0VSUk9STkFNRSwgQVNOX09DVEVUX1NUUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtFUlJPUk5BTUV9fSwKLSAgICAgICAge1NXQVBJTiwgQVNOX0lOVEVHRVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKLSAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1dBUE9VVH19LAotICAgICAgICB7SU9TRU5ULCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPU0VOVH19LAotICAgICAgICB7SU9SRUNFSVZFLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JFQ0VJVkV9fSwKLSAgICAgICAge1NZU0lOVEVSUlVQVFMsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0lOVEVSUlVQVFN9fSwKLSAgICAgICAge1NZU0NPTlRFWFQsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge1NZU0NPTlRFWFR9fSwKLSAgICAgICAge0NQVVVTRVIsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAotICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVTWVNURU19fSwKLSAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVSURMRX19LAotICAgICAgICB7Q1BVUkFXVVNFUiwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXVVNFUn19LAotICAgICAgICB7Q1BVUkFXU1lTVEVNLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtDUFVSQVdTWVNURU19fSwKLSAgICAgICAge0NQVVJBV0lETEUsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV0lETEV9fSwKLSAgICAgICAge0NQVVJBV1dBSVQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0NQVVJBV1dBSVR9fSwKLSAgICAgICAge0NQVVJBV0tFUk5FTCwgQVNOX0NPVU5URVIsIFJPTkxZLCB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsCi0gICAgICAgICB7Q1BVUkFXS0VSTkVMfX0sCi0gICAgICAgIHtJT1JBV1NFTlQsIEFTTl9DT1VOVEVSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLAotICAgICAgICAge0lPUkFXU0VOVH19LAotICAgICAgICB7SU9SQVdSRUNFSVZFLCBBU05fQ09VTlRFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwKLSAgICAgICAgIHtJT1JBV1JFQ0VJVkV9fSwKKyAgICAgICAge01JQklOREVYLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtNSUJJTkRFWH19LAorICAgICAgICB7RVJST1JOQU1FLCBBU05fT0NURVRfU1RSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9STkFNRX19LAorICAgICAgICB7U1dBUElOLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtTV0FQSU59fSwKKyAgICAgICAge1NXQVBPVVQsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge1NXQVBPVVR9fSwKKyAgICAgICAge0lPU0VOVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9TRU5UfX0sCisgICAgICAgIHtJT1JFQ0VJVkUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0lPUkVDRUlWRX19LAorICAgICAgICB7U1lTSU5URVJSVVBUUywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTSU5URVJSVVBUU319LAorICAgICAgICB7U1lTQ09OVEVYVCwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7U1lTQ09OVEVYVH19LAorICAgICAgICB7Q1BVVVNFUiwgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVVVNFUn19LAorICAgICAgICB7Q1BVU1lTVEVNLCBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVTWVNURU19fSwKKyAgICAgICAge0NQVUlETEUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVUlETEV9fSwKKyAgICAgICAge0NQVVJBV1VTRVIsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV1VTRVJ9fSwKKyAgICAgICAge0NQVVJBV1NZU1RFTSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7Q1BVUkFXU1lTVEVNfX0sCisgICAgICAgIHtDUFVSQVdJRExFLCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdJRExFfX0sCisgICAgICAgIHtDUFVSQVdXQUlULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtDUFVSQVdXQUlUfX0sCisgICAgICAgIHtDUFVSQVdLRVJORUwsIEFTTl9DT1VOVEVSLCBORVRTTk1QX09MREFQSV9ST05MWSwKKyAgICAgICAgIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0NQVVJBV0tFUk5FTH19LAorICAgICAgICB7SU9SQVdTRU5ULCBBU05fQ09VTlRFUiwgTkVUU05NUF9PTERBUElfUk9OTFksCisgICAgICAgICB2YXJfZXh0ZW5zaWJsZV92bXN0YXQsIDEsIHtJT1JBV1NFTlR9fSwKKyAgICAgICAge0lPUkFXUkVDRUlWRSwgQVNOX0NPVU5URVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7SU9SQVdSRUNFSVZFfX0sCiAgICAgICAgIC8qCiAgICAgICAgICAqIEZ1dHVyZSB1c2U6IAotICAgICAgICAgKiB7RVJST1JGTEFHLCBBU05fSU5URUdFUiwgUk9OTFksIHZhcl9leHRlbnNpYmxlX3Ztc3RhdCwgMSwge0VSUk9SRkxBRyB9fSwKLSAgICAgICAgICoge0VSUk9STVNHLCBBU05fT0NURVRfU1RSLCBST05MWSwgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KKyAgICAgICAgICoge0VSUk9SRkxBRywgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JGTEFHIH19LAorICAgICAgICAgKiB7RVJST1JNU0csIEFTTl9PQ1RFVF9TVFIsIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorICAgICAgICAgKiAgdmFyX2V4dGVuc2libGVfdm1zdGF0LCAxLCB7RVJST1JNU0cgfX0KICAgICAgICAgICovCiAgICAgfTsKIApkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvdm1zdGF0X3NvbGFyaXMyLmggYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaAppbmRleCA4MjgyMjg4Li43N2ZiYjNiIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaAorKysgYi9hZ2VudC9taWJncm91cC91Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuaApAQCAtMjMsNyArMjMsNyBAQAogICAgIC8qCiAgICAgICogRGlyZWN0aXZlIHRvIGluY2x1ZGUgdXRpbGl0eSBtb2R1bGUgCiAgICAgICovCi1jb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYykKIAogICAgIC8qCiAgICAgICogTUlCIHdhbnRzIENQVV9TWVNURU0gd2hpY2ggaXMgc3lzaW5mbyBDUFVfS0VSTkVMICsgQ1BVX1dBSVQgCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91Y2Rfc25tcC5oIGIvYWdlbnQvbWliZ3JvdXAvdWNkX3NubXAuaAppbmRleCAzNGMyZmJiLi5mOTJjMmM0IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91Y2Rfc25tcC5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VjZF9zbm1wLmgKQEAgLTgsNyArOCw5IEBACiBjb25maWdfcmVxdWlyZShhZ2VudC9leHRlbmQpCiBjb25maWdfcmVxdWlyZSh1Y2Qtc25tcC9lcnJvcm1pYikKIGNvbmZpZ19yZXF1aXJlKHVjZC1zbm1wL2ZpbGUpCisjaWYgZGVmaW5lZChIQVZFX0RMRkNOX0gpICYmIGRlZmluZWQoSEFWRV9ETE9QRU4pCiBjb25maWdfcmVxdWlyZSh1Y2Qtc25tcC9kbG1vZCkKKyNlbmRpZgogY29uZmlnX3JlcXVpcmUodWNkLXNubXAvcHJveHkpCiBjb25maWdfcmVxdWlyZSh1Y2Qtc25tcC9sb2dtYXRjaCkKIGNvbmZpZ19yZXF1aXJlKHVjZC1zbm1wL21lbW9yeSkKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmggYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCmluZGV4IGZkMDczOTQuLjcwZTI5ZDIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaApAQCAtMjAsNiArMjAsNyBAQAogY29uZmlnX3JlcXVpcmUodWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfY29tbW9uKQogI2lmIGRlZmluZWQoIGxpbnV4ICkKIGNvbmZpZ19yZXF1aXJlKHVkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4KQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUpCiAjZWxpZiBkZWZpbmVkKCBzb2xhcmlzMiApCiBjb25maWdfcmVxdWlyZSh1ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9zb2xhcmlzMikKICNlbHNlCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9jb21tb24uYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCmluZGV4IDUxZTMzNzUuLmJjYjAwMmUgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2NvbW1vbi5jCkBAIC0xMDUsNyArMTA1LDggQEAKICAgICAgICAgICogZnJlZSBhbGwgaXRlbXMuCiAgICAgICAgICAqLwogICAgICAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilmcmVlLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKikKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfYWNjZXNzX3VkcF9lbmRwb2ludF9lbnRyeV9mcmVlLAogICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgfQogCkBAIC0xNTMsMjMgKzE1NCwzIEBACiAKICAgICBmcmVlKGVudHJ5KTsKIH0KLQotCi0vKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyoKLSAqIFV0aWxpdHkgcm91dGluZXMKLSAqLwotCi0vKioKLSAqIFxpbnRlcm5hbAotICovCi1zdGF0aWMgdm9pZAotX2VudHJ5X3JlbGVhc2UobmV0c25tcF91ZHBfZW5kcG9pbnRfZW50cnkgKiBlbnRyeSwgdm9pZCAqY29udGV4dCkKLXsKLSAgICBuZXRzbm1wX2FjY2Vzc191ZHBfZW5kcG9pbnRfZW50cnlfZnJlZShlbnRyeSk7Ci19Ci0KLS8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKgotICoKLSAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50X2xpbnV4LmMKaW5kZXggYmE4ZjdhMi4uYzg3ZGMyNCAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnRfbGludXguYworKysgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludF9saW51eC5jCkBAIC0xNCw3ICsxNCw3IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50Lmg+CiAKICNpbmNsdWRlICJ1ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9jb25zdGFudHMuaCIKLQorI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgiCiAjaW5jbHVkZSAidWRwX2VuZHBvaW50X3ByaXZhdGUuaCIKIAogI2luY2x1ZGUgPGZjbnRsLmg+CkBAIC0xNTAsMTQgKzE1MCwxNCBAQAogICAgIGxlbiA9IChzZXAgLSBwdHIpOwogICAgIGlmICgtMSA9PSBuZXRzbm1wX2FkZHJzdHJfaHRvbihwdHIsIGxlbikpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInRleHQ6dXRpbDp0dmkiLCAiYmFkIGxlbmd0aCAlZCBmb3IgbG9jIGFkZHIgJyVzJ1xuIiwKLSAgICAgICAgICAgICAgICAgICAgdV9wdHJfbGVuLCBsaW5lX2luZm8tPnN0YXJ0KSk7CisgICAgICAgICAgICAgICAgICAgIChpbnQpdV9wdHJfbGVuLCBsaW5lX2luZm8tPnN0YXJ0KSk7CiAgICAgICAgIHJldHVybiBQTUxQX1JDX01FTU9SWV9VTlVTRUQ7CiAgICAgfQogICAgIG9mZnNldCA9IDA7CiAgICAgbmV0c25tcF9oZXhfdG9fYmluYXJ5KCZ1X3B0ciwgJnVfcHRyX2xlbiwgJm9mZnNldCwgMCwgcHRyLCBOVUxMKTsKICAgICBpZiAoKDQgIT0gb2Zmc2V0KSAmJiAoMTYgIT0gb2Zmc2V0KSkgewogICAgICAgICBERUJVR01TR1RMKCgidGV4dDp1dGlsOnR2aSIsICJiYWQgb2Zmc2V0ICVkIGZvciBsb2MgYWRkciAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICBvZmZzZXQsIGxpbmVfaW5mby0+c3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgKGludClvZmZzZXQsIGxpbmVfaW5mby0+c3RhcnQpKTsKICAgICAgICAgcmV0dXJuIFBNTFBfUkNfTUVNT1JZX1VOVVNFRDsKICAgICB9CiAgICAgZXAtPmxvY19hZGRyX2xlbiA9IG9mZnNldDsKQEAgLTE4NiwxNCArMTg2LDE0IEBACiAgICAgbGVuID0gKHNlcCAtIHB0cik7CiAgICAgaWYgKC0xID09IG5ldHNubXBfYWRkcnN0cl9odG9uKHB0ciwgbGVuKSkgewogICAgICAgICBERUJVR01TR1RMKCgidGV4dDp1dGlsOnR2aSIsICJiYWQgbGVuZ3RoICVkIGZvciBybXQgYWRkciAnJXMnXG4iLAotICAgICAgICAgICAgICAgICAgICB1X3B0cl9sZW4sIGxpbmVfaW5mby0+c3RhcnQpKTsKKyAgICAgICAgICAgICAgICAgICAgKGludCl1X3B0cl9sZW4sIGxpbmVfaW5mby0+c3RhcnQpKTsKICAgICAgICAgcmV0dXJuIFBNTFBfUkNfTUVNT1JZX1VOVVNFRDsKICAgICB9CiAgICAgb2Zmc2V0ID0gMDsKICAgICBuZXRzbm1wX2hleF90b19iaW5hcnkoJnVfcHRyLCAmdV9wdHJfbGVuLCAmb2Zmc2V0LCAwLCBwdHIsIE5VTEwpOwogICAgIGlmICgoNCAhPSBvZmZzZXQpICYmICgxNiAhPSBvZmZzZXQpKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJ0ZXh0OnV0aWw6dHZpIiwgImJhZCBvZmZzZXQgJWQgZm9yIHJtdCBhZGRyICclcydcbiIsCi0gICAgICAgICAgICAgICAgICAgIG9mZnNldCwgbGluZV9pbmZvLT5zdGFydCkpOworICAgICAgICAgICAgICAgICAgICAoaW50KW9mZnNldCwgbGluZV9pbmZvLT5zdGFydCkpOwogICAgICAgICByZXR1cm4gUE1MUF9SQ19NRU1PUllfVU5VU0VEOwogICAgIH0KICAgICBlcC0+cm10X2FkZHJfbGVuID0gb2Zmc2V0OwpAQCAtMjIyLDYgKzIyMiwxMSBAQAogICAgIGlub2RlID0gc3RydG91bGwocHRyLCAmcHRyLCAwKTsKICAgICBlcC0+aW5zdGFuY2UgPSAodV9pbnQpaW5vZGU7CiAKKyAgICAvKgorICAgICAqIGdldCB0aGUgcGlkIGFsc28KKyAgICAgKi8KKyAgICBlcC0+cGlkID0gbmV0c25tcF9nZXRfcGlkX2Zyb21faW5vZGUoaW5vZGUpOworCiAgICAgZXAtPmluZGV4ID0gKHVfaW50KShscGktPnVzZXJfY29udGV4dCk7CiAgICAgbHBpLT51c2VyX2NvbnRleHQgPSAodm9pZCopKCh1X2ludCkobHBpLT51c2VyX2NvbnRleHQpICsgMSk7CiAKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmMgYi9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5jCmluZGV4IDgwM2Y1MDQuLjE0NWY0Y2UgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmMKKysrIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuYwpAQCAtMjYsOCArMjYsOCBAQAogCiAjaW5jbHVkZSAidWRwRW5kcG9pbnRUYWJsZV9pbnRlcmZhY2UuaCIKIAotb2lkICAgICAgICAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkW10gPSB7IFVEUEVORFBPSU5UVEFCTEVfT0lEIH07Ci1pbnQgICAgICAgICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRfc2l6ZSA9Citjb25zdCBvaWQgICAgICAgdWRwRW5kcG9pbnRUYWJsZV9vaWRbXSA9IHsgVURQRU5EUE9JTlRUQUJMRV9PSUQgfTsKK2NvbnN0IGludCAgICAgICB1ZHBFbmRwb2ludFRhYmxlX29pZF9zaXplID0KIE9JRF9MRU5HVEgodWRwRW5kcG9pbnRUYWJsZV9vaWQpOwogCiB1ZHBFbmRwb2ludFRhYmxlX3JlZ2lzdHJhdGlvbiB1ZHBFbmRwb2ludFRhYmxlX3VzZXJfY29udGV4dDsKQEAgLTIyNiw3ICsyMjYsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHVkcEVuZHBvaW50SW5zdGFuY2VfdmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsKQogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOnVkcEVuZHBvaW50VGFibGU6dWRwRW5kcG9pbnRUYWJsZV9pbmRleGVzX3NldF90YmxfaWR4IiwgImNhbGxlZFxuIikpOwogCkBAIC0yOTUsNiArMjk2LDEwIEBACiAgICAgICogdWRwRW5kcG9pbnRJbnN0YW5jZSg3KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9hL3cvZS9SL2QvaCAKICAgICAgKi8KICAgICB0YmxfaWR4LT51ZHBFbmRwb2ludEluc3RhbmNlID0gdWRwRW5kcG9pbnRJbnN0YW5jZV92YWw7CisgICAgLyoKKyAgICAgKiB1ZHBFbmRwb2ludFByb2Nlc3MoOCkvVU5TSUdORUQzMi9BU05fVU5TSUdORUQvdV9sb25nKHVfbG9uZykvL2wvYS93L2UvUi9kL2ggCisgICAgICovCisgICAgdGJsX2lkeC0+dWRwRW5kcG9pbnRQcm9jZXNzID0gdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbDsKIAogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwpAQCAtMzIzLDcgKzMyOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgdWRwRW5kcG9pbnRSZW1vdGVBZGRyZXNzX3ZhbF9wdHJfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nIHVkcEVuZHBvaW50SW5zdGFuY2VfdmFsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsKQogewogICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOnVkcEVuZHBvaW50VGFibGU6dWRwRW5kcG9pbnRUYWJsZV9pbmRleGVzX3NldCIsCiAgICAgICAgICAgICAgICAgImNhbGxlZFxuIikpOwpAQCAtMzM4LDcgKzM0NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludFJlbW90ZUFkZHJlc3NfdmFsX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlUG9ydF92YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2Vzc192YWwpKQogICAgICAgICByZXR1cm4gTUZEX0VSUk9SOwogCiAgICAgLyoKQEAgLTQwNSw5ICs0MTIsOSBAQAogCiAgICAgLyoKICAgICAgKiBUT0RPOjIzMTpvOiB8LT4gRXh0cmFjdCB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgdWRwRW5kcG9pbnRQcm9jZXNzIGRhdGEuCi0gICAgICogY29weSAoKiB1ZHBFbmRwb2ludFByb2Nlc3NfdmFsX3B0ciApIGZyb20gcm93cmVxX2N0eC0+ZGF0YQorICAgICAqIGNvcHkgKCogdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbF9wdHIgKSBmcm9tIHJvd3JlcV9jdHgtPnRibF9pZHgudWRwRW5kcG9pbnRQcm9jZXNzCiAgICAgICovCi0gICAgKCp1ZHBFbmRwb2ludFByb2Nlc3NfdmFsX3B0cikgPSByb3dyZXFfY3R4LT5kYXRhLnVkcEVuZHBvaW50UHJvY2VzczsKKyAgICAoKnVkcEVuZHBvaW50UHJvY2Vzc192YWxfcHRyKSA9IHJvd3JlcV9jdHgtPnRibF9pZHgudWRwRW5kcG9pbnRQcm9jZXNzOwogCiAgICAgcmV0dXJuIE1GRF9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1ZHBFbmRwb2ludFByb2Nlc3NfZ2V0ICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5oIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGUuaAppbmRleCAzNjc1MmJmLi4wZGVkYTAzIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZS5oCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlLmgKQEAgLTEzMiw2ICsxMzIsMTEgQEAKICAgICAgICAgICovCiAgICAgICAgIHVfbG9uZyAgICAgICAgICB1ZHBFbmRwb2ludEluc3RhbmNlOwogCisgICAgICAgIC8qCisgICAgICAgICAqIHVkcEVuZHBvaW50UHJvY2Vzcyg4KS9VTlNJR05FRDMyL0FTTl9VTlNJR05FRC91X2xvbmcodV9sb25nKS8vbC9hL3cvZS9SL2QvaAorICAgICAgICAgKi8KKyAgICAgICAgdV9sb25nICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2VzczsKKwogCiAgICAgfSB1ZHBFbmRwb2ludFRhYmxlX21pYl9pbmRleDsKIApAQCAtMjAwLDggKzIwNSw4IEBACiAgICAgICAgICogdWRwRW5kcG9pbnRUYWJsZV9yb3dfZmluZF9ieV9taWJfaW5kZXgodWRwRW5kcG9pbnRUYWJsZV9taWJfaW5kZXgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIG1pYl9pZHgpOwogCi0gICAgZXh0ZXJuIG9pZCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkW107Ci0gICAgZXh0ZXJuIGludCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkX3NpemU7CisgICAgZXh0ZXJuIGNvbnN0IG9pZCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkW107CisgICAgZXh0ZXJuIGNvbnN0IGludCAgICAgIHVkcEVuZHBvaW50VGFibGVfb2lkX3NpemU7CiAKIAogI2luY2x1ZGUgInVkcEVuZHBvaW50VGFibGVfaW50ZXJmYWNlLmgiCkBAIC0yNTcsNyArMjYyLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UHJvY2Vzc192YWwpOwogICAgIGludAogICAgICAgICB1ZHBFbmRwb2ludFRhYmxlX2luZGV4ZXNfc2V0KHVkcEVuZHBvaW50VGFibGVfcm93cmVxX2N0eCAqCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm93cmVxX2N0eCwKQEAgLTI3Myw3ICsyODAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkcEVuZHBvaW50UmVtb3RlQWRkcmVzc192YWxfcHRyX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRSZW1vdGVQb3J0X3ZhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRJbnN0YW5jZV92YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyB1ZHBFbmRwb2ludEluc3RhbmNlX3ZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgdWRwRW5kcG9pbnRQcm9jZXNzX3ZhbCk7CiAKIAogCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jIGIvYWdlbnQvbWliZ3JvdXAvdWRwLW1pYi91ZHBFbmRwb2ludFRhYmxlL3VkcEVuZHBvaW50VGFibGVfZGF0YV9hY2Nlc3MuYwppbmRleCBkMjIzYjk2Li5lZjgzYjlhIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91ZHAtbWliL3VkcEVuZHBvaW50VGFibGUvdWRwRW5kcG9pbnRUYWJsZV9kYXRhX2FjY2Vzcy5jCisrKyBiL2FnZW50L21pYmdyb3VwL3VkcC1taWIvdWRwRW5kcG9pbnRUYWJsZS91ZHBFbmRwb2ludFRhYmxlX2RhdGFfYWNjZXNzLmMKQEAgLTI2NSw3ICsyNjUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSBlcC0+cm10X2FkZHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwLT5ybXRfYWRkcl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwLT5ybXRfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXAtPmluc3RhbmNlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcC0+aW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVwLT5waWQpKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAogICAgICAgICAgICAgICAgICAgICAgImVycm9yIHNldHRpbmcgaW5kZXggd2hpbGUgbG9hZGluZyAiCiAgICAgICAgICAgICAgICAgICAgICAidWRwRW5kcG9pbnRUYWJsZSBkYXRhLlxuIik7CkBAIC0yOTMsNyArMjk0LDcgQEAKIAogCiAgICAgREVCVUdNU0dUKCgidmVyYm9zZTp1ZHBFbmRwb2ludFRhYmxlOnVkcEVuZHBvaW50VGFibGVfY29udGFpbmVyX2xvYWQiLAotICAgICAgICAgICAgICAgImluc2VydGVkICVkIHJlY29yZHNcbiIsIENPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKKyAgICAgICAgICAgICAgICJpbnNlcnRlZCAlZCByZWNvcmRzXG4iLCAoaW50KUNPTlRBSU5FUl9TSVpFKGNvbnRhaW5lcikpKTsKIAogICAgIHJldHVybiBNRkRfU1VDQ0VTUzsKIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdWRwRW5kcG9pbnRUYWJsZV9jb250YWluZXJfbG9hZCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5jCmluZGV4IGEwMTc2NTguLjc0OWVmYjIgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuYworKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmMKQEAgLTg2LDIxICs4Niw2IEBACiAjaWZkZWYgSEFWRV9TWVNfU1RBVF9ICiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KICNlbmRpZgotI2lmIEhBVkVfRElSRU5UX0gKLSNpbmNsdWRlIDxkaXJlbnQuaD4KLSNlbHNlCi0jIGRlZmluZSBkaXJlbnQgZGlyZWN0Ci0jIGlmIEhBVkVfU1lTX05ESVJfSAotIyAgaW5jbHVkZSA8c3lzL25kaXIuaD4KLSMgZW5kaWYKLSMgaWYgSEFWRV9TWVNfRElSX0gKLSMgIGluY2x1ZGUgPHN5cy9kaXIuaD4KLSMgZW5kaWYKLSMgaWYgSEFWRV9ORElSX0gKLSMgIGluY2x1ZGUgPG5kaXIuaD4KLSMgZW5kaWYKLSNlbmRpZgotCiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCkBAIC0yNzAsNyArMjU1LDcgQEAKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBYWFggIFVzZSBTTk1QX0ZJTEVNT0RFX0NMT1NFRCBpbnN0ZWFkIG9mIDY0ND8gCiAgICAgICAgICAgICAgKi8KLSAgICAgICAgaWYgKChjZmQgPSBvcGVuKGNhY2hlZmlsZSwgT19XUk9OTFkgfCBPX1RSVU5DIHwgT19DUkVBVCwgMDY0NCkpIDwgMCkgeworICAgICAgICBpZiAoKGNmZCA9IG9wZW4oY2FjaGVmaWxlLCBPX1dST05MWSB8IE9fVFJVTkMgfCBPX0NSRUFULCAwNjAwKSkgPCAwKSB7CiAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiY2FuIG5vdCBjcmVhdGUgY2FjaGUgZmlsZVxuIik7CiAgICAgICAgICAgICAgICAgc2V0UGVycm9yc3RhdHVzKGNhY2hlZmlsZSk7CiAjaWZkZWYgTkVUU05NUF9FWENBQ0hFVElNRQpAQCAtNzY2LDE2OCArNzUxLDYgQEAKICAgICAgICAgYnVmICs9IHNwcmludGYoYnVmLCAiLiV1IiwgKHVuc2lnbmVkKSBuYW1lW2ldKTsKIH0KIAotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKLSAqIGhlYWRlcl9zaW1wbGVfdGFibGUKLSAqCi0gKiBQYXJhbWV0ZXJzOgotICoJICAqdnAJCSBWYXJpYWJsZSBkYXRhLgotICoJICAqbmFtZQkJIEZ1bGx5IGluc3RhbnRpYXRlZCBPSUQgbmFtZS4KLSAqCSAgKmxlbmd0aAkgTGVuZ3RoIG9mIG5hbWUuCi0gKgkgICBleGFjdAkgVFJVRSBpZiBhbiBleGFjdCBtYXRjaCBpcyBkZXNpcmVkLgotICoJICAqdmFyX2xlbgkgSG9vayBmb3Igc2l6ZSBvZiByZXR1cm5lZCBkYXRhIHR5cGUuCi0gKgkoKip3cml0ZV9tZXRob2QpIEhvb2sgZm9yIHdyaXRlIG1ldGhvZCAoVU5VU0VEKS4KLSAqCSAgIG1heAotICogICAgICAKLSAqIFJldHVybnM6Ci0gKgkwCUlmIG5hbWUgbWF0Y2hlcyB2cC0+bmFtZSAoYWNjb3VudGluZyBmb3IgJ2V4YWN0JykgYW5kIGlzCi0gKgkJCW5vdCBncmVhdGVyIGluIGxlbmd0aCB0aGFuICdtYXgnLgotICoJMQlPdGhlcndpc2UuCi0gKgotICoKLSAqIENvbXBhcmUgJ25hbWUnIHRvIHZwLT5uYW1lIGZvciB0aGUgYmVzdCBtYXRjaCBvciBhbiBleGFjdCBtYXRjaCAoaWYKLSAqCXJlcXVlc3RlZCkuICBBbHNvIGNoZWNrIHRoYXQgJ25hbWUnIGlzIG5vdCBsb25nZXIgdGhhbiAnbWF4JyBpZgotICoJbWF4IGlzIGdyZWF0ZXItdGhhbi9lcXVhbCAwLgotICogU3RvcmUgYSBzdWNjZXNzZnVsIG1hdGNoIGluICduYW1lJywgYW5kIGluY3JlbWVudCB0aGUgT0lEIGluc3RhbmNlIGlmCi0gKgl0aGUgbWF0Y2ggd2FzIG5vdCBleGFjdC4gIAotICoKLSAqICduYW1lJyBhbmQgJ2xlbmd0aCcgYXJlIHVuZGVmaW5lZCB1cG9uIGZhaWx1cmUuCi0gKgotICovCi1pbnQKLWhlYWRlcl9zaW1wbGVfdGFibGUoc3RydWN0IHZhcmlhYmxlICp2cCwgb2lkICogbmFtZSwgc2l6ZV90ICogbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sCi0gICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50IG1heCkKLXsKLSAgICBpbnQgICAgICAgICAgICAgaSwgcnRlc3Q7ICAgLyogU2V0IHRvOiAgICAgIC0xICAgICAgSWYgbmFtZSA8IHZwLT5uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgMSAgICAgICBJZiBuYW1lID4gdnAtPm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAwICAgICAgIE90aGVyd2lzZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCi0gICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOwotCi0gICAgZm9yIChpID0gMCwgcnRlc3QgPSAwOwotICAgICAgICAgaSA8IChpbnQpIHZwLT5uYW1lbGVuICYmIGkgPCAoaW50KSAoKmxlbmd0aCkgJiYgIXJ0ZXN0OyBpKyspIHsKLSAgICAgICAgaWYgKG5hbWVbaV0gIT0gdnAtPm5hbWVbaV0pIHsKLSAgICAgICAgICAgIGlmIChuYW1lW2ldIDwgdnAtPm5hbWVbaV0pCi0gICAgICAgICAgICAgICAgcnRlc3QgPSAtMTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBydGVzdCA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHJ0ZXN0ID4gMCB8fAotICAgICAgICAoZXhhY3QgPT0gMQotICAgICAgICAgJiYgKHJ0ZXN0IHx8IChpbnQpICpsZW5ndGggIT0gKGludCkgKHZwLT5uYW1lbGVuICsgMSkpKSkgewotICAgICAgICBpZiAodmFyX2xlbikKLSAgICAgICAgICAgICp2YXJfbGVuID0gMDsKLSAgICAgICAgcmV0dXJuIE1BVENIX0ZBSUxFRDsKLSAgICB9Ci0KLSAgICBtZW1zZXQobmV3bmFtZSwgMCwgc2l6ZW9mKG5ld25hbWUpKTsKLQotICAgIGlmICgoKGludCkgKmxlbmd0aCkgPD0gKGludCkgdnAtPm5hbWVsZW4gfHwgcnRlc3QgPT0gLTEpIHsKLSAgICAgICAgbWVtbW92ZShuZXduYW1lLCB2cC0+bmFtZSwgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgICAgIG5ld25hbWVbdnAtPm5hbWVsZW5dID0gMTsKLSAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKLSAgICB9IGVsc2UgaWYgKCgoaW50KSAqbGVuZ3RoKSA+IChpbnQpIHZwLT5uYW1lbGVuICsgMSkgeyAgICAgICAvKiBleGFjdCBjYXNlIGNoZWNrZWQgZWFybGllciAqLwotICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIG5hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKLSAgICAgICAgaWYgKG5hbWVbKmxlbmd0aCAtIDFdIDwgVUxPTkdfTUFYKSB7Ci0gICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdICsgMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBDYXJlZnVsIG5vdCB0byBvdmVyZmxvdy4uLiAgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIG5hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKLSAgICAgICAgaWYgKCFleGFjdCkgewotICAgICAgICAgICAgaWYgKG5hbWVbKmxlbmd0aCAtIDFdIDwgVUxPTkdfTUFYKSB7Ci0gICAgICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXSArIDE7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogQ2FyZWZ1bCBub3QgdG8gb3ZlcmZsb3cuLi4gIAotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmICgobWF4ID49IDAgJiYgKChpbnQpbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPiBtYXgpKSB8fAotICAgICAgICAgICAgICAgKCAwID09IG5ld25hbWVbKmxlbmd0aCAtIDFdICkpIHsKLSAgICAgICAgaWYgKHZhcl9sZW4pCi0gICAgICAgICAgICAqdmFyX2xlbiA9IDA7Ci0gICAgICAgIHJldHVybiBNQVRDSF9GQUlMRUQ7Ci0gICAgfQotCi0gICAgbWVtbW92ZShuYW1lLCBuZXduYW1lLCAoKmxlbmd0aCkgKiBzaXplb2Yob2lkKSk7Ci0gICAgaWYgKHdyaXRlX21ldGhvZCkKLSAgICAgICAgKndyaXRlX21ldGhvZCA9IDA7Ci0gICAgaWYgKHZhcl9sZW4pCi0gICAgICAgICp2YXJfbGVuID0gc2l6ZW9mKGxvbmcpOyAgICAgICAgLyogZGVmYXVsdCAqLwotICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKLX0KLQotLyoKLSAqIGhlYWRlcl9nZW5lcmljKC4uLgotICogQXJndW1lbnRzOgotICogdnAgICAgIElOICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIGVudHJ5IHRoYXQgcG9pbnRzIGhlcmUKLSAqIG5hbWUgICAgSU4vT1VUICAtIElOL25hbWUgcmVxdWVzdGVkLCBPVVQvbmFtZSBmb3VuZAotICogbGVuZ3RoICBJTi9PVVQgIC0gbGVuZ3RoIG9mIElOL09VVCBvaWQncyAKLSAqIGV4YWN0ICAgSU4gICAgICAtIFRSVUUgaWYgYW4gZXhhY3QgbWF0Y2ggd2FzIHJlcXVlc3RlZAotICogdmFyX2xlbiBPVVQgICAgIC0gbGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQKLSAqIHdyaXRlX21ldGhvZAotICogCi0gKi8KLQotLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKLSAqIGdlbmVyaWNfaGVhZGVyCi0gKgotICogUGFyYW1ldGVyczoKLSAqCSAgKnZwCSAgIChJKSAgICAgUG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlLgotICoJICAqbmFtZQkgICAoSS9PKSAgIElucHV0IG5hbWUgcmVxdWVzdGVkLCBvdXRwdXQgbmFtZSBmb3VuZC4KLSAqCSAgKmxlbmd0aCAgKEkvTykgICBMZW5ndGggb2YgaW5wdXQgYW5kIG91dHB1dCBvaWQncy4KLSAqCSAgIGV4YWN0ICAgKEkpICAgICBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQuCi0gKgkgICp2YXJfbGVuIChPKSAgICAgTGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQuCi0gKgkoKip3cml0ZV9tZXRob2QpICAgSG9vayB0byBuYW1lIGEgd3JpdGUgbWV0aG9kIChVTlVTRUQpLgotICogICAgICAKLSAqIFJldHVybnM6Ci0gKglNQVRDSF9TVUNDRUVERUQJSWYgdnAtPm5hbWUgbWF0Y2hlcyBuYW1lIChhY2NvdW50aW5nIGZvciBleGFjdCBiaXQpLgotICoJTUFUQ0hfRkFJTEVECU90aGVyd2lzZSwKLSAqCi0gKgotICogQ2hlY2sgd2hldGhlciB2YXJpYWJsZSAodnApIG1hdGNoZXMgbmFtZS4KLSAqLwotaW50Ci1oZWFkZXJfZ2VuZXJpYyhzdHJ1Y3QgdmFyaWFibGUgKnZwLAotICAgICAgICAgICAgICAgb2lkICogbmFtZSwKLSAgICAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKLSAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQotewotICAgIG9pZCAgICAgICAgICAgICBuZXduYW1lW01BWF9PSURfTEVOXTsKLSAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OwotCi0gICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3MiLCAiaGVhZGVyX2dlbmVyaWM6ICIpKTsKLSAgICBERUJVR01TR09JRCgoInV0aWxfZnVuY3MiLCBuYW1lLCAqbGVuZ3RoKSk7Ci0gICAgREVCVUdNU0coKCJ1dGlsX2Z1bmNzIiwgIiBleGFjdD0lZFxuIiwgZXhhY3QpKTsKLQotICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwKLSAgICAgICAgICAgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7Ci0gICAgbmV3bmFtZVt2cC0+bmFtZWxlbl0gPSAwOwotICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUobmFtZSwgKmxlbmd0aCwgbmV3bmFtZSwgdnAtPm5hbWVsZW4gKyAxKTsKLSAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jcyIsICIgIHJlc3VsdDogJWRcbiIsIHJlc3VsdCkpOwotICAgIGlmICgoZXhhY3QgJiYgKHJlc3VsdCAhPSAwKSkgfHwgKCFleGFjdCAmJiAocmVzdWx0ID49IDApKSkKLSAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOwotICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAotICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKLSAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOwotCi0gICAgKndyaXRlX21ldGhvZCA9IDA7Ci0gICAgKnZhcl9sZW4gPSBzaXplb2YobG9uZyk7ICAgIC8qIGRlZmF1bHQgdG8gJ2xvbmcnIHJlc3VsdHMgKi8KLSAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7Ci19Ci0KIC8qCiAgKiBjaGVja21pYigpOiBwcm92aWRlZCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksIGRvIG5vdCB1c2U6IAogICovCkBAIC0xMjAyLDg4ICsxMDI1LDEzNSBAQAogICAgIHJldHVybiB0YWJsZS0+ZGF0YTsKIH0KIAotI2lmZGVmIGxpbnV4Ci0jIGRlZmluZSBQUk9DX1BBVEggICAgICAgICAgIi9wcm9jIgotIyBkZWZpbmUgRklMRV9ESVNQICAgICAgICAgICJmZC8iCi0jIGRlZmluZSBTT0NLRVRfVFlQRV8xICAgICAgInNvY2tldDpbIgotIyBkZWZpbmUgU09DS0VUX1RZUEVfMiAgICAgICJbMDAwMF06IgotCi11bnNpZ25lZCBsb25nIGxvbmcKLWV4dHJhY3RfaW5vZGUoY2hhciAqZm9ybWF0KQorI2lmIGRlZmluZWQoSEFWRV9MSU5VWF9SVE5FVExJTktfSCkKK3ByZWZpeF9jYnggKm5ldF9zbm1wX2NyZWF0ZV9wcmVmaXhfaW5mbyh1bnNpZ25lZCBsb25nIE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBBdXRvbm9tb3VzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppbjZwdHIpCiB7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHJldCA9IDA7CisgICBwcmVmaXhfY2J4ICpub2RlID0gU05NUF9NQUxMT0NfVFlQRURFRihwcmVmaXhfY2J4KTsKKyAgIGlmKCFpbjZwdHIpIHsKKyAgICAgIGZyZWUobm9kZSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgIH0KKyAgIGlmKCFub2RlKSB7CisgICAgICBmcmVlKG5vZGUpOworICAgICAgcmV0dXJuIE5VTEw7CisgICB9CisgICBub2RlLT5uZXh0X2luZm8gPSBOVUxMOworICAgbm9kZS0+aXBBZGRyZXNzUHJlZml4T25MaW5rRmxhZyA9IE9uTGlua0ZsYWc7CisgICBub2RlLT5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyA9IEF1dG9ub21vdXNGbGFnOworICAgbWVtY3B5KG5vZGUtPmluNnAsIGluNnB0ciwgc2l6ZW9mKG5vZGUtPmluNnApKTsKIAotICAgIGlmICghc3RybmNtcChmb3JtYXQsIFNPQ0tFVF9UWVBFXzEsIDgpKSB7Ci0gICAgICAgIHJldCA9IHN0cnRvdWxsKGZvcm1hdCArIDgsIE5VTEwsIDApOwotICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoZm9ybWF0LCBTT0NLRVRfVFlQRV8yLCA3KSkgewotICAgICAgICByZXQgPSBzdHJ0b3VsbChmb3JtYXQgKyA3LCBOVUxMLCAwKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OworICAgcmV0dXJuIG5vZGU7CiB9CiAKLXVuc2lnbmVkIGludAotZ2V0X3BpZF9mcm9tX2lub2RlKHVuc2lnbmVkIGxvbmcgbG9uZyBpbm9kZSkKK2ludCBuZXRfc25tcF9maW5kX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkcmVzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fZmluZCkKIHsKLSAgICBESVIgICAgICAgICAgICAqcHJvY2RpcnMgPSBOVUxMLCAqcGlkZGlycyA9IE5VTEw7Ci0gICAgY2hhciAgICAgICAgICAgKm5hbWUgPSBOVUxMOwotICAgIGNoYXIgICAgICAgICAgICBwYXRoX25hbWVbUEFUSF9NQVggKyAxXTsKLSAgICBjaGFyICAgICAgICAgICAgc29ja2V0X2xua1tOQU1FX01BWCArIDFdOwotICAgIGludCAgICAgICAgICAgICBmaWxlbGVuID0gMCwgcmVhZGxlbiA9IDAsIGlmbGFnID0gMDsKLSAgICBzdHJ1Y3QgZGlyZW50ICAqcHJvY2luZm8sICpwaWRpbmZvOwotICAgIHVuc2lnbmVkIGludCAgICBwaWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIHRlbXBfaW5vZGU7CisgICAgaW50IGlyZXQ7CisgICAgbWVtc2V0KG5vZGVfdG9fZmluZCwgMCwgc2l6ZW9mKHByZWZpeF9jYngpKTsKKyAgICBpZighKmhlYWQpCisgICAgICAgcmV0dXJuIC0xOworICAgIG1lbWNweShub2RlX3RvX2ZpbmQtPmluNnAsIGFkZHJlc3MsIHNpemVvZihub2RlX3RvX2ZpbmQtPmluNnApKTsKIAotICAgIGlmICghKHByb2NkaXJzID0gb3BlbmRpcihQUk9DX1BBVEgpKSkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic25tcGQ6IGNhbm5vdCBvcGVuIC9wcm9jXG4iKTsgICAgICAgCi0gICAgICAgIHJldHVybiAwOwotICAgIH0KKyAgICBpcmV0ID0gbmV0X3NubXBfc2VhcmNoX3VwZGF0ZV9wcmVmaXhfaW5mbyhoZWFkLCBub2RlX3RvX2ZpbmQsIDEpOworICAgIGlmKGlyZXQgPCAwKSB7CisgICAgICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3M6cHJlZml4IiwgIlVuYWJsZSB0byBzZWFyY2ggdGhlIGxpc3RcbiIpKTsKKyAgICAgICByZXR1cm4gLTE7CisgICAgfSBlbHNlIGlmICghaXJldCkgeworICAgICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzOnByZWZpeCIsICJDb3VsZCBub3QgZmluZCBwcmVmaXggaW5mb1xuIikpOworICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UKKyAgICAgICByZXR1cm4gMDsKK30KIAotICAgIHdoaWxlICgocHJvY2luZm8gPSByZWFkZGlyKHByb2NkaXJzKSkgIT0gTlVMTCkgewotICAgICAgICBuYW1lID0gcHJvY2luZm8tPmRfbmFtZTsKLSAgICAgICAgZm9yICg7ICpuYW1lOyBuYW1lKyspIHsKLSAgICAgICAgICAgIGlmICghaXNkaWdpdCgqbmFtZSkpCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgaWYoKm5hbWUpCi0gICAgICAgICAgICBjb250aW51ZTsKK2ludCBuZXRfc25tcF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fdXBkYXRlKQoreworICAgIGludCBpcmV0OworICAgIGlyZXQgPSBuZXRfc25tcF9zZWFyY2hfdXBkYXRlX3ByZWZpeF9pbmZvKGhlYWQsIG5vZGVfdG9fdXBkYXRlLCAwKTsKKyAgICBpZihpcmV0IDwgMCkgeworICAgICAgIERFQlVHTVNHVEwoKCJ1dGlsX2Z1bmNzOnByZWZpeCIsICJVbmFibGUgdG8gdXBkYXRlIHByZWZpeCBpbmZvXG4iKSk7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAoIWlyZXQpIHsKKyAgICAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jczpwcmVmaXgiLCAiVW5hYmxlIHRvIGZpbmQgdGhlIG5vZGUgdG8gdXBkYXRlXG4iKSk7CisgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZQorICAgICAgIHJldHVybiAwOworfQogCi0gICAgICAgIG1lbXNldChwYXRoX25hbWUsICdcMCcsIFBBVEhfTUFYICsgMSk7Ci0gICAgICAgIGZpbGVsZW4gPSBzbnByaW50ZihwYXRoX25hbWUsIFBBVEhfTUFYLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPQ19QQVRIICIvJXMvIiBGSUxFX0RJU1AsIHByb2NpbmZvLT5kX25hbWUpOwotICAgICAgICBpZiAoZmlsZWxlbiA8PSAwIHx8IFBBVEhfTUFYIDwgZmlsZWxlbikKLSAgICAgICAgICAgIGNvbnRpbnVlOworaW50IG5ldF9zbm1wX3NlYXJjaF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXhfY2J4ICpub2RlX3RvX3VzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmdW5jdGlvbmFsaXR5KQorewogCi0gICAgICAgIHBpZCA9IHN0cnRvdWwocHJvY2luZm8tPmRfbmFtZSwgTlVMTCwgMCk7CisgICAvKiBXZSBkZWZpbmUgZnVuY3Rpb25hbGl0eSBiYXNlZCBvbiBuZWVkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICAgICogMCAtIE5lZWQgdG8gZG8gYSBzZWFyY2ggYW5kIHVwZGF0ZS4gV2UgaGF2ZSB0byBwcm92aWRlIHRoZSBub2RlX3RvX3VzZSBzdHJ1Y3R1cmUgZmlsbGVkIGZ1bGx5ICoKKyAgICAqIDEgLSBOZWVkIHRvIGRvIG9ubHkgc2VhcmNoLiBQcm92aWRlIHRoZSBub2RlX3RvX3VzZSB3aXRoIGluNnAgdmFsdWUgZmlsbGVkICAgICAgICAgICAgICAgICAgICAqLwogCi0gICAgICAgIGlmICghKHBpZGRpcnMgPSBvcGVuZGlyKHBhdGhfbmFtZSkpKQotICAgICAgICAgICAgY29udGludWU7CisgICAgcHJlZml4X2NieCAqdGVtcF9ub2RlOworICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaGVhZCk7CisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBub2RlX3RvX3VzZSk7CiAKLSAgICAgICAgd2hpbGUgKChwaWRpbmZvID0gcmVhZGRpcihwaWRkaXJzKSkgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZpbGVsZW4gKyBzdHJsZW4ocGlkaW5mby0+ZF9uYW1lKSA+IFBBVEhfTUFYKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgIGlmKGZ1bmN0aW9uYWxpdHkgPiAxKQorICAgICAgIHJldHVybiAtMTsKKyAgICBpZighbm9kZV90b191c2UpCisgICAgICAgcmV0dXJuIC0xOwogCi0gICAgICAgICAgICBzdHJjcHkocGF0aF9uYW1lICsgZmlsZWxlbiwgcGlkaW5mby0+ZF9uYW1lKTsKIAotICAgICAgICAgICAgbWVtc2V0KHNvY2tldF9sbmssICdcMCcsIE5BTUVfTUFYICsgMSk7Ci0gICAgICAgICAgICByZWFkbGVuID0gcmVhZGxpbmsocGF0aF9uYW1lLCBzb2NrZXRfbG5rLCBOQU1FX01BWCk7Ci0gICAgICAgICAgICBpZiAocmVhZGxlbiA8IDApCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBzb2NrZXRfbG5rW3JlYWRsZW5dID0gJ1wwJzsKKyAgICBpZiAoIWZ1bmN0aW9uYWxpdHkpIHsKKyAgICAgICBpZiAoISpoZWFkKSB7CisgICAgICAgICAgICpoZWFkID0gbm9kZV90b191c2U7CisgICAgICAgICAgIHJldHVybiAxOworICAgICAgIH0KIAotICAgICAgICAgICAgdGVtcF9pbm9kZSA9IGV4dHJhY3RfaW5vZGUoc29ja2V0X2xuayk7Ci0gICAgICAgICAgICBpZiAoaW5vZGUgPT0gdGVtcF9pbm9kZSkgewotICAgICAgICAgICAgICAgIGlmbGFnID0gMTsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICBmb3IgKHRlbXBfbm9kZSA9ICpoZWFkOyB0ZW1wX25vZGUtPm5leHRfaW5mbyAhPSBOVUxMIDsgdGVtcF9ub2RlID0gdGVtcF9ub2RlLT5uZXh0X2luZm8pIHsKKyAgICAgICAgICAgIGlmICgwID09IHN0cmNtcCh0ZW1wX25vZGUtPmluNnAsIG5vZGVfdG9fdXNlLT5pbjZwKSkgeworICAgICAgICAgICAgICAgIHRlbXBfbm9kZS0+aXBBZGRyZXNzUHJlZml4T25MaW5rRmxhZyA9IG5vZGVfdG9fdXNlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOworICAgICAgICAgICAgICAgIHRlbXBfbm9kZS0+aXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWcgPSBub2RlX3RvX3VzZS0+aXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWc7CisgICAgICAgICAgICAgICAgcmV0dXJuIDI7CiAgICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgY2xvc2VkaXIocGlkZGlycyk7Ci0gICAgICAgIGlmIChpZmxhZyA9PSAxKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgfQorICAgICAgIHRlbXBfbm9kZS0+bmV4dF9pbmZvID0gbm9kZV90b191c2U7CisgICAgICAgcmV0dXJuIDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgIGZvciAodGVtcF9ub2RlID0gKmhlYWQ7IHRlbXBfbm9kZSAhPSBOVUxMIDsgdGVtcF9ub2RlID0gdGVtcF9ub2RlLT5uZXh0X2luZm8pIHsKKyAgICAgICAgICAgICAgaWYgKDAgPT0gc3RyY21wKHRlbXBfbm9kZS0+aW42cCwgbm9kZV90b191c2UtPmluNnApKSB7CisgICAgICAgICAgICAgICAgLypuZWVkIHlvIHB1dCBzZW0gaGVyZSBhcyBpIHJlYWQgaGVyZSAqLworICAgICAgICAgICAgICAgIG5vZGVfdG9fdXNlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnID0gdGVtcF9ub2RlLT5pcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOworICAgICAgICAgICAgICAgIG5vZGVfdG9fdXNlLT5pcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyA9IHRlbXBfbm9kZS0+aXBBZGRyZXNzUHJlZml4QXV0b25vbW91c0ZsYWc7CisgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAocHJvY2RpcnMpCi0gICAgICAgIGNsb3NlZGlyKHByb2NkaXJzKTsKLSAgICByZXR1cm4gcGlkOwogfQogCi0jZW5kaWYgIC8qICNpZmRlZiBsaW51eCAqLworaW50IG5ldF9zbm1wX2RlbGV0ZV9wcmVmaXhfaW5mbyhwcmVmaXhfY2J4ICoqaGVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqYWRkcmVzcykKK3sKKworICAgIHByZWZpeF9jYnggKnRlbXBfbm9kZSwqcHJldl9ub2RlOworICAgIGlmKCFhZGRyZXNzKQorICAgICAgIHJldHVybiAtMTsKKyAgICBpZighaGVhZCkKKyAgICAgICByZXR1cm4gLTE7CisKKyAgICBmb3IgKHRlbXBfbm9kZSA9ICpoZWFkLCBwcmV2X25vZGUgPSBOVUxMOyB0ZW1wX25vZGU7CisgICAgICAgICBwcmV2X25vZGUgPSB0ZW1wX25vZGUsIHRlbXBfbm9kZSA9IHRlbXBfbm9kZS0+bmV4dF9pbmZvKSB7CisKKyAgICAgICAgIGlmICh0ZW1wX25vZGUtPmluNnAgJiYgc3RyY21wKHRlbXBfbm9kZS0+aW42cCwgYWRkcmVzcykgPT0gMCkgeworICAgICAgICAgICAgaWYgKHByZXZfbm9kZSkKKyAgICAgICAgICAgICAgICBwcmV2X25vZGUtPm5leHRfaW5mbyA9IHRlbXBfbm9kZS0+bmV4dF9pbmZvOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICpoZWFkID0gdGVtcF9ub2RlLT5uZXh0X2luZm87CisgICAgICAgICAgICBmcmVlKHRlbXBfbm9kZSk7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorCisgICAgfQorICAgIHJldHVybiAwOworfQorI2VuZGlmCisKZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MuaAppbmRleCBmYmExYTk4Li5jNWI1MmVmIDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy5oCkBAIC00LDEyICs0LDMxIEBACiAjaWZuZGVmIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0gKICNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfSAogCitjb25maWdfcmVxdWlyZSh1dGlsX2Z1bmNzL2hlYWRlcl9nZW5lcmljKQorY29uZmlnX3JlcXVpcmUodXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlKQorCisjaW5jbHVkZSAidXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oIgorI2luY2x1ZGUgInV0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oIgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKICNpbmNsdWRlICJzdHJ1Y3QuaCIKIAordHlwZWRlZiBzdHJ1Y3QgcHJlZml4X2luZm8KK3sKKyAgIHN0cnVjdCBwcmVmaXhfaW5mbyAqbmV4dF9pbmZvOworICAgdW5zaWduZWQgbG9uZyBpcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnOworICAgdW5zaWduZWQgbG9uZyBpcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZzsKKyAgIGNoYXIgaW42cFs0MF07Cit9cHJlZml4X2NieDsKKyNpZm5kZWYgV0lOMzIKK3R5cGVkZWYgc3RydWN0IAoreworIHByZWZpeF9jYnggKipsaXN0X2hlYWQ7Cit9bmV0c25tcF9wcmVmaXhfbGlzdGVuX2luZm87CisjZW5kaWYKIHZvaWQgICAgICAgICAgICBFeGl0KGludCk7CiBpbnQgICAgICAgICAgICAgc2hlbGxfY29tbWFuZChzdHJ1Y3QgZXh0ZW5zaWJsZSAqKTsKIGludCAgICAgICAgICAgICBleGVjX2NvbW1hbmQoc3RydWN0IGV4dGVuc2libGUgKik7CkBAIC0yMSwxMSArNDAsNiBAQAogV3JpdGVNZXRob2QgICAgIHJlc3RhcnRfaG9vazsKIHZvaWQgICAgICAgICAgICBwcmludF9taWJfb2lkKG9pZCAqLCBzaXplX3QpOwogdm9pZCAgICAgICAgICAgIHNwcmludF9taWJfb2lkKGNoYXIgKiwgY29uc3Qgb2lkICosIHNpemVfdCk7Ci1pbnQgICAgICAgICAgICAgaGVhZGVyX3NpbXBsZV90YWJsZShzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBzaXplX3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50KTsKLWludCAgICAgICAgICAgICBoZWFkZXJfZ2VuZXJpYyhzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICosIFdyaXRlTWV0aG9kICoqKTsKIGludCAgICAgICAgICAgICBjaGVja21pYihzdHJ1Y3QgdmFyaWFibGUgKiwgb2lkICosIHNpemVfdCAqLCBpbnQsIHNpemVfdCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50KTsKIGNoYXIgICAgICAgICAgICpmaW5kX2ZpZWxkKGNoYXIgKiwgaW50KTsKQEAgLTM0LDE1ICs0OCwzNSBAQAogdm9pZCAgICAgICAgICAgIHdhaXRfb25fZXhlYyhzdHJ1Y3QgZXh0ZW5zaWJsZSAqKTsKIGNvbnN0IGNoYXIgICAgICptYWtlX3RlbXBmaWxlKHZvaWQpOwogCi0jaWZkZWYgbGludXgKLXVuc2lnbmVkIGludCAgICBnZXRfcGlkX2Zyb21faW5vZGUodW5zaWduZWQgbG9uZyBsb25nKTsKK3ByZWZpeF9jYnggKm5ldF9zbm1wX2NyZWF0ZV9wcmVmaXhfaW5mbyh1bnNpZ25lZCBsb25nIE9uTGlua0ZsYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBBdXRvbm9tb3VzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICppbjZwdHIpOworI2lmbmRlZiBXSU4zMgoraW50IG5ldF9zbm1wX2ZpbmRfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b19maW5kKTsKK2ludCBuZXRfc25tcF91cGRhdGVfcHJlZml4X2luZm8ocHJlZml4X2NieCAqKmhlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZpeF9jYnggKm5vZGVfdG9fdXBkYXRlKTsKK2ludCBuZXRfc25tcF9zZWFyY2hfdXBkYXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4X2NieCAqbm9kZV90b191c2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnVuY3Rpb25hbGl0eSk7CitpbnQgbmV0X3NubXBfZGVsZXRlX3ByZWZpeF9pbmZvKHByZWZpeF9jYnggKipoZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICphZGRyZXNzKTsKICNlbmRpZgorI2RlZmluZSBOSVA2KGFkZHIpIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlswXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsxXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlsyXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNlszXSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls0XSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls1XSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls2XSksIFwKKyAgICAgICAgbnRvaHMoKGFkZHIpLnM2X2FkZHIxNls3XSkKIAogI2RlZmluZSAgICAgc2F0b3Npbih4KSAgICAgICgoc3RydWN0IHNvY2thZGRyX2luICopICYoeCkpCiAjZGVmaW5lICAgICBTT0NLQUREUih4KSAgICAgKHNhdG9zaW4oeCktPnNpbl9hZGRyLnNfYWRkcikKLSNpZm5kZWYgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQKLSNkZWZpbmUgTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQgNQotI2VuZGlmCisKKyNpbmNsdWRlICJ1dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgiCiAKIHR5cGVkZWYgdm9pZCAgICptaWJfdGFibGVfdDsKIHR5cGVkZWYgaW50ICAgICAoUkVMT0FEKSAobWliX3RhYmxlX3QpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9NSUJfU1RBVFNfQ0FDSEVfVElNRU9VVC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OGJhY2QKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL01JQl9TVEFUU19DQUNIRV9USU1FT1VULmgKQEAgLTAsMCArMSwxMiBAQAorLyoKKyAqIHV0aWxfZnVuY3MvTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVQuaDogIHV0aWxpdGl5IGZ1bmN0aW9ucyBmb3IgZXh0ZW5zaWJsZQorICogZ3JvdXBzLgorICovCisjaWZuZGVmIF9NSUJHUk9VUF9VVElMX0ZVTkNTX01JQl9TVEFUU19DQUNIRV9USU1FT1VUX0gKKyNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVRfSAorCisjaWZuZGVmIE1JQl9TVEFUU19DQUNIRV9USU1FT1VUCisjZGVmaW5lIE1JQl9TVEFUU19DQUNIRV9USU1FT1VUIDUKKyNlbmRpZgorCisjZW5kaWYgLyogX01JQkdST1VQX1VUSUxfRlVOQ1NfTUlCX1NUQVRTX0NBQ0hFX1RJTUVPVVRfSCAqLwpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc2MjhiMgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmMKQEAgLTAsMCArMSw5NSBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSAiZ2V0X3BpZF9mcm9tX2lub2RlLmgiCisKKyNpbmNsdWRlIDxuZXQtc25tcC9vdXRwdXRfYXBpLmg+CisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TVFJJTkdfSAorI2luY2x1ZGUgPHN0cmluZy5oPgorI2Vsc2UKKyNpbmNsdWRlIDxzdHJpbmdzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKworIyBkZWZpbmUgUFJPQ19QQVRIICAgICAgICAgICIvcHJvYyIKKyMgZGVmaW5lIFNPQ0tFVF9UWVBFXzEgICAgICAic29ja2V0OlsiCisjIGRlZmluZSBTT0NLRVRfVFlQRV8yICAgICAgIlswMDAwXToiCisKK3BpZF90CituZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm82NF90IGlub2RlKQoreworICAgIERJUiAgICAgICAgICAgICpwcm9jZGlycyA9IE5VTEwsICpwaWRkaXJzID0gTlVMTDsKKyAgICBjaGFyICAgICAgICAgICAgcGF0aF9uYW1lW1BBVEhfTUFYICsgMV07CisgICAgY2hhciAgICAgICAgICAgIHNvY2tldF9sbmtbTkFNRV9NQVggKyAxXTsKKyAgICBpbnQgICAgICAgICAgICAgZmlsZWxlbiA9IDAsIHJlYWRsZW4gPSAwLCBpZmxhZyA9IDA7CisgICAgc3RydWN0IGRpcmVudCAgKnByb2NpbmZvLCAqcGlkaW5mbzsKKyAgICBwaWRfdCAgICAgICAgICAgcGlkID0gMDsKKyAgICBpbm82NF90ICAgICAgICAgdGVtcF9pbm9kZTsKKworICAgIGlmIChpbm9kZSA9PSAwKSB7CisgICAgICAgIC8qIGFuIGlub2RlIHNldCB0byB6ZXJvIG1lYW5zIGl0IGlzIG5vdCBhc3NvY2lhdGVkIHdpdGggYSBwcm9jZXNzLiAqLworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIShwcm9jZGlycyA9IG9wZW5kaXIoUFJPQ19QQVRIKSkpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInNubXBkOiBjYW5ub3Qgb3BlbiAvcHJvY1xuIik7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHdoaWxlICgocHJvY2luZm8gPSByZWFkZGlyKHByb2NkaXJzKSkgIT0gTlVMTCkgeworCWNvbnN0IGNoYXIqIG5hbWUgPSBwcm9jaW5mby0+ZF9uYW1lOworICAgICAgICBmb3IgKDsgKm5hbWU7IG5hbWUrKykgeworICAgICAgICAgICAgaWYgKCFpc2RpZ2l0KCpuYW1lKSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZigqbmFtZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIG1lbXNldChwYXRoX25hbWUsICdcMCcsIFBBVEhfTUFYICsgMSk7CisgICAgICAgIGZpbGVsZW4gPSBzbnByaW50ZihwYXRoX25hbWUsIFBBVEhfTUFYLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgUFJPQ19QQVRIICIvJXMvZmQvIiwgcHJvY2luZm8tPmRfbmFtZSk7CisgICAgICAgIGlmIChmaWxlbGVuIDw9IDAgfHwgUEFUSF9NQVggPCBmaWxlbGVuKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKCEocGlkZGlycyA9IG9wZW5kaXIocGF0aF9uYW1lKSkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICB3aGlsZSAoKHBpZGluZm8gPSByZWFkZGlyKHBpZGRpcnMpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoZmlsZWxlbiArIHN0cmxlbihwaWRpbmZvLT5kX25hbWUpID4gUEFUSF9NQVgpCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIHN0cmNweShwYXRoX25hbWUgKyBmaWxlbGVuLCBwaWRpbmZvLT5kX25hbWUpOworCisgICAgICAgICAgICBtZW1zZXQoc29ja2V0X2xuaywgJ1wwJywgTkFNRV9NQVggKyAxKTsKKyAgICAgICAgICAgIHJlYWRsZW4gPSByZWFkbGluayhwYXRoX25hbWUsIHNvY2tldF9sbmssIE5BTUVfTUFYKTsKKyAgICAgICAgICAgIGlmIChyZWFkbGVuIDwgMCkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHNvY2tldF9sbmtbcmVhZGxlbl0gPSAnXDAnOworCisgICAgICAgICAgICBpZiAoIXN0cm5jbXAoc29ja2V0X2xuaywgU09DS0VUX1RZUEVfMSwgOCkpIHsKKyAgICAgICAgICAgICAgICB0ZW1wX2lub2RlID0gc3RydG91bGwoc29ja2V0X2xuayArIDgsIE5VTEwsIDApOworICAgICAgICAgICAgfSBlbHNlIGlmICghc3RybmNtcChzb2NrZXRfbG5rLCBTT0NLRVRfVFlQRV8yLCA3KSkgeworICAgICAgICAgICAgICAgIHRlbXBfaW5vZGUgPSBzdHJ0b3VsbChzb2NrZXRfbG5rICsgNywgTlVMTCwgMCk7CisgICAgICAgICAgICB9IGVsc2UKKwkJdGVtcF9pbm9kZSA9IDA7CisgICAgICAgICAgICBpZiAoaW5vZGUgPT0gdGVtcF9pbm9kZSkgeworICAgICAgICAgICAgICAgIHBpZCA9IHN0cnRvdWwocHJvY2luZm8tPmRfbmFtZSwgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgaWZsYWcgPSAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlZGlyKHBpZGRpcnMpOworICAgICAgICBpZiAoaWZsYWcgPT0gMSkKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAocHJvY2RpcnMpCisgICAgICAgIGNsb3NlZGlyKHByb2NkaXJzKTsKKyAgICByZXR1cm4gcGlkOworfQpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9nZXRfcGlkX2Zyb21faW5vZGUuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFkMDRlMQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIHV0aWxfZnVuY3MvZ2V0X3BpZF9mcm9tX2lub2RlLmg6ICB1dGlsaXRpeSBmdW5jdGlvbiB0byByZXRyaWV2ZSB0aGUgcGlkCisgKiB0aGF0IGNvbnRyb2xzIGEgZ2l2ZW4gaW5vZGUgb24gbGludXguCisgKi8KKyNpZm5kZWYgTkVUU05NUF9NSUJHUk9VUF9VVElMX0ZVTkNTX0dFVF9QSURfRlJPTV9JTk9ERV9ICisjZGVmaW5lIE5FVFNOTVBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0gKKworI2lmbmRlZiBsaW51eAorY29uZmlnX2Vycm9yKGdldF9waWRfZnJvbV9pbm9kZSBpcyBvbmx5IHN1cHBvcmVkIG9uIGxpbnV4KQorI2VuZGlmCisKKyNkZWZpbmUgX0xBUkdFRklMRTY0X1NPVVJDRSAxCisKKyNpZiBIQVZFX0RJUkVOVF9ICisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjZWxzZQorIyBkZWZpbmUgZGlyZW50IGRpcmVjdAorIyBpZiBIQVZFX1NZU19ORElSX0gKKyMgIGluY2x1ZGUgPHN5cy9uZGlyLmg+CisjIGVuZGlmCisjIGlmIEhBVkVfU1lTX0RJUl9ICisjICBpbmNsdWRlIDxzeXMvZGlyLmg+CisjIGVuZGlmCisjIGlmIEhBVkVfTkRJUl9ICisjICBpbmNsdWRlIDxuZGlyLmg+CisjIGVuZGlmCisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCitwaWRfdCBuZXRzbm1wX2dldF9waWRfZnJvbV9pbm9kZShpbm82NF90KTsKKworI2VuZGlmIC8qIE5FVFNOTVBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTU0YmU5Ci0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5jCkBAIC0wLDAgKzEsNjQgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisKKyNpbmNsdWRlICJoZWFkZXJfZ2VuZXJpYy5oIgorCisvKgorICogaGVhZGVyX2dlbmVyaWMoLi4uCisgKiBBcmd1bWVudHM6CisgKiB2cCAgICAgSU4gICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgZW50cnkgdGhhdCBwb2ludHMgaGVyZQorICogbmFtZSAgICBJTi9PVVQgIC0gSU4vbmFtZSByZXF1ZXN0ZWQsIE9VVC9uYW1lIGZvdW5kCisgKiBsZW5ndGggIElOL09VVCAgLSBsZW5ndGggb2YgSU4vT1VUIG9pZCdzCisgKiBleGFjdCAgIElOICAgICAgLSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQKKyAqIHZhcl9sZW4gT1VUICAgICAtIGxlbmd0aCBvZiB2YXJpYWJsZSBvciAwIGlmIGZ1bmN0aW9uIHJldHVybmVkCisgKiB3cml0ZV9tZXRob2QKKyAqCisgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiotby0qKioqKioKKyAqIGdlbmVyaWNfaGVhZGVyCisgKgorICogUGFyYW1ldGVyczoKKyAqCSAgKnZwCSAgIChJKSAgICAgUG9pbnRlciB0byB2YXJpYWJsZSBlbnRyeSB0aGF0IHBvaW50cyBoZXJlLgorICoJICAqbmFtZQkgICAoSS9PKSAgIElucHV0IG5hbWUgcmVxdWVzdGVkLCBvdXRwdXQgbmFtZSBmb3VuZC4KKyAqCSAgKmxlbmd0aCAgKEkvTykgICBMZW5ndGggb2YgaW5wdXQgYW5kIG91dHB1dCBvaWQncy4KKyAqCSAgIGV4YWN0ICAgKEkpICAgICBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIHdhcyByZXF1ZXN0ZWQuCisgKgkgICp2YXJfbGVuIChPKSAgICAgTGVuZ3RoIG9mIHZhcmlhYmxlIG9yIDAgaWYgZnVuY3Rpb24gcmV0dXJuZWQuCisgKgkoKip3cml0ZV9tZXRob2QpICAgSG9vayB0byBuYW1lIGEgd3JpdGUgbWV0aG9kIChVTlVTRUQpLgorICoKKyAqIFJldHVybnM6CisgKglNQVRDSF9TVUNDRUVERUQJSWYgdnAtPm5hbWUgbWF0Y2hlcyBuYW1lIChhY2NvdW50aW5nIGZvciBleGFjdCBiaXQpLgorICoJTUFUQ0hfRkFJTEVECU90aGVyd2lzZSwKKyAqCisgKgorICogQ2hlY2sgd2hldGhlciB2YXJpYWJsZSAodnApIG1hdGNoZXMgbmFtZS4KKyAqLworaW50CitoZWFkZXJfZ2VuZXJpYyhzdHJ1Y3QgdmFyaWFibGUgKnZwLAorICAgICAgICAgICAgICAgb2lkICogbmFtZSwKKyAgICAgICAgICAgICAgIHNpemVfdCAqIGxlbmd0aCwKKyAgICAgICAgICAgICAgIGludCBleGFjdCwgc2l6ZV90ICogdmFyX2xlbiwgV3JpdGVNZXRob2QgKiogd3JpdGVfbWV0aG9kKQoreworICAgIG9pZCAgICAgICAgICAgICBuZXduYW1lW01BWF9PSURfTEVOXTsKKyAgICBpbnQgICAgICAgICAgICAgcmVzdWx0OworCisgICAgREVCVUdNU0dUTCgoInV0aWxfZnVuY3MiLCAiaGVhZGVyX2dlbmVyaWM6ICIpKTsKKyAgICBERUJVR01TR09JRCgoInV0aWxfZnVuY3MiLCBuYW1lLCAqbGVuZ3RoKSk7CisgICAgREVCVUdNU0coKCJ1dGlsX2Z1bmNzIiwgIiBleGFjdD0lZFxuIiwgZXhhY3QpKTsKKworICAgIG1lbWNweSgoY2hhciAqKSBuZXduYW1lLCAoY2hhciAqKSB2cC0+bmFtZSwKKyAgICAgICAgICAgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7CisgICAgbmV3bmFtZVt2cC0+bmFtZWxlbl0gPSAwOworICAgIHJlc3VsdCA9IHNubXBfb2lkX2NvbXBhcmUobmFtZSwgKmxlbmd0aCwgbmV3bmFtZSwgdnAtPm5hbWVsZW4gKyAxKTsKKyAgICBERUJVR01TR1RMKCgidXRpbF9mdW5jcyIsICIgIHJlc3VsdDogJWRcbiIsIHJlc3VsdCkpOworICAgIGlmICgoZXhhY3QgJiYgKHJlc3VsdCAhPSAwKSkgfHwgKCFleGFjdCAmJiAocmVzdWx0ID49IDApKSkKKyAgICAgICAgcmV0dXJuIChNQVRDSF9GQUlMRUQpOworICAgIG1lbWNweSgoY2hhciAqKSBuYW1lLCAoY2hhciAqKSBuZXduYW1lLAorICAgICAgICAgICAoKGludCkgdnAtPm5hbWVsZW4gKyAxKSAqIHNpemVvZihvaWQpKTsKKyAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworCisgICAgKndyaXRlX21ldGhvZCA9IChXcml0ZU1ldGhvZCopMDsKKyAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgLyogZGVmYXVsdCB0byAnbG9uZycgcmVzdWx0cyAqLworICAgIHJldHVybiAoTUFUQ0hfU1VDQ0VFREVEKTsKK30KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX2dlbmVyaWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODYxMDQwCi0tLSAvZGV2L251bGwKKysrIGIvYWdlbnQvbWliZ3JvdXAvdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oCkBAIC0wLDAgKzEsMTggQEAKKy8qCisgKiAgdXRpbF9mdW5jcy9oZWFkZXJfZ2VuZXJpYy5oOiAgdXRpbGl0aXkgZnVuY3Rpb25zIGZvciBleHRlbnNpYmxlIGdyb3Vwcy4KKyAqLworI2lmbmRlZiBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfR0VORVJJQ19ICisjZGVmaW5lIF9NSUJHUk9VUF9VVElMX0ZVTkNTX0hFQURFUl9HRU5FUklDX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCitpbnQgaGVhZGVyX2dlbmVyaWMoc3RydWN0IHZhcmlhYmxlICosIG9pZCAqLCBzaXplX3QgKiwgaW50LCBzaXplX3QgKiwKKyAgICAgICAgICAgICAgICAgICBXcml0ZU1ldGhvZCAqKik7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvKiBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfR0VORVJJQ19IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0NTlhNGMKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuYwpAQCAtMCwwICsxLDExMCBAQAorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgImhlYWRlcl9zaW1wbGVfdGFibGUuaCIKKworI2luY2x1ZGUgPGxpbWl0cy5oPgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi1vLSoqKioqKgorICogaGVhZGVyX3NpbXBsZV90YWJsZQorICoKKyAqIFBhcmFtZXRlcnM6CisgKgkgICp2cAkJIFZhcmlhYmxlIGRhdGEuCisgKgkgICpuYW1lCQkgRnVsbHkgaW5zdGFudGlhdGVkIE9JRCBuYW1lLgorICoJICAqbGVuZ3RoCSBMZW5ndGggb2YgbmFtZS4KKyAqCSAgIGV4YWN0CSBUUlVFIGlmIGFuIGV4YWN0IG1hdGNoIGlzIGRlc2lyZWQuCisgKgkgICp2YXJfbGVuCSBIb29rIGZvciBzaXplIG9mIHJldHVybmVkIGRhdGEgdHlwZS4KKyAqCSgqKndyaXRlX21ldGhvZCkgSG9vayBmb3Igd3JpdGUgbWV0aG9kIChVTlVTRUQpLgorICoJICAgbWF4CisgKgorICogUmV0dXJuczoKKyAqCTAJSWYgbmFtZSBtYXRjaGVzIHZwLT5uYW1lIChhY2NvdW50aW5nIGZvciAnZXhhY3QnKSBhbmQgaXMKKyAqCQkJbm90IGdyZWF0ZXIgaW4gbGVuZ3RoIHRoYW4gJ21heCcuCisgKgkxCU90aGVyd2lzZS4KKyAqCisgKgorICogQ29tcGFyZSAnbmFtZScgdG8gdnAtPm5hbWUgZm9yIHRoZSBiZXN0IG1hdGNoIG9yIGFuIGV4YWN0IG1hdGNoIChpZgorICoJcmVxdWVzdGVkKS4gIEFsc28gY2hlY2sgdGhhdCAnbmFtZScgaXMgbm90IGxvbmdlciB0aGFuICdtYXgnIGlmCisgKgltYXggaXMgZ3JlYXRlci10aGFuL2VxdWFsIDAuCisgKiBTdG9yZSBhIHN1Y2Nlc3NmdWwgbWF0Y2ggaW4gJ25hbWUnLCBhbmQgaW5jcmVtZW50IHRoZSBPSUQgaW5zdGFuY2UgaWYKKyAqCXRoZSBtYXRjaCB3YXMgbm90IGV4YWN0LgorICoKKyAqICduYW1lJyBhbmQgJ2xlbmd0aCcgYXJlIHVuZGVmaW5lZCB1cG9uIGZhaWx1cmUuCisgKgorICovCitpbnQKK2hlYWRlcl9zaW1wbGVfdGFibGUoc3RydWN0IHZhcmlhYmxlICp2cCwgb2lkICogbmFtZSwgc2l6ZV90ICogbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICBpbnQgZXhhY3QsIHNpemVfdCAqIHZhcl9sZW4sCisgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqIHdyaXRlX21ldGhvZCwgaW50IG1heCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgaSwgcnRlc3Q7ICAgLyogU2V0IHRvOiAgICAgIC0xICAgICAgSWYgbmFtZSA8IHZwLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgMSAgICAgICBJZiBuYW1lID4gdnAtPm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAwICAgICAgIE90aGVyd2lzZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgb2lkICAgICAgICAgICAgIG5ld25hbWVbTUFYX09JRF9MRU5dOworCisgICAgZm9yIChpID0gMCwgcnRlc3QgPSAwOworICAgICAgICAgaSA8IChpbnQpIHZwLT5uYW1lbGVuICYmIGkgPCAoaW50KSAoKmxlbmd0aCkgJiYgIXJ0ZXN0OyBpKyspIHsKKyAgICAgICAgaWYgKG5hbWVbaV0gIT0gdnAtPm5hbWVbaV0pIHsKKyAgICAgICAgICAgIGlmIChuYW1lW2ldIDwgdnAtPm5hbWVbaV0pCisgICAgICAgICAgICAgICAgcnRlc3QgPSAtMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBydGVzdCA9IDE7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJ0ZXN0ID4gMCB8fAorICAgICAgICAoZXhhY3QgPT0gMQorICAgICAgICAgJiYgKHJ0ZXN0IHx8IChpbnQpICpsZW5ndGggIT0gKGludCkgKHZwLT5uYW1lbGVuICsgMSkpKSkgeworICAgICAgICBpZiAodmFyX2xlbikKKyAgICAgICAgICAgICp2YXJfbGVuID0gMDsKKyAgICAgICAgcmV0dXJuIE1BVENIX0ZBSUxFRDsKKyAgICB9CisKKyAgICBtZW1zZXQobmV3bmFtZSwgMCwgc2l6ZW9mKG5ld25hbWUpKTsKKworICAgIGlmICgoKGludCkgKmxlbmd0aCkgPD0gKGludCkgdnAtPm5hbWVsZW4gfHwgcnRlc3QgPT0gLTEpIHsKKyAgICAgICAgbWVtbW92ZShuZXduYW1lLCB2cC0+bmFtZSwgKGludCkgdnAtPm5hbWVsZW4gKiBzaXplb2Yob2lkKSk7CisgICAgICAgIG5ld25hbWVbdnAtPm5hbWVsZW5dID0gMTsKKyAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKKyAgICB9IGVsc2UgaWYgKCgoaW50KSAqbGVuZ3RoKSA+IChpbnQpIHZwLT5uYW1lbGVuICsgMSkgeyAgICAgICAvKiBleGFjdCBjYXNlIGNoZWNrZWQgZWFybGllciAqLworICAgICAgICAqbGVuZ3RoID0gdnAtPm5hbWVsZW4gKyAxOworICAgICAgICBtZW1tb3ZlKG5ld25hbWUsIG5hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgaWYgKG5hbWVbKmxlbmd0aCAtIDFdIDwgVUxPTkdfTUFYKSB7CisgICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdICsgMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBDYXJlZnVsIG5vdCB0byBvdmVyZmxvdy4uLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXduYW1lWypsZW5ndGggLSAxXSA9IG5hbWVbKmxlbmd0aCAtIDFdOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgKmxlbmd0aCA9IHZwLT5uYW1lbGVuICsgMTsKKyAgICAgICAgbWVtbW92ZShuZXduYW1lLCBuYW1lLCAoKmxlbmd0aCkgKiBzaXplb2Yob2lkKSk7CisgICAgICAgIGlmICghZXhhY3QpIHsKKyAgICAgICAgICAgIGlmIChuYW1lWypsZW5ndGggLSAxXSA8IFVMT05HX01BWCkgeworICAgICAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV0gKyAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIENhcmVmdWwgbm90IHRvIG92ZXJmbG93Li4uCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgbmV3bmFtZVsqbGVuZ3RoIC0gMV0gPSBuYW1lWypsZW5ndGggLSAxXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5ld25hbWVbKmxlbmd0aCAtIDFdID0gbmFtZVsqbGVuZ3RoIC0gMV07CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKChtYXggPj0gMCAmJiAoKGludCluZXduYW1lWypsZW5ndGggLSAxXSA+IG1heCkpIHx8CisgICAgICAgICAgICAgICAoIDAgPT0gbmV3bmFtZVsqbGVuZ3RoIC0gMV0gKSkgeworICAgICAgICBpZiAodmFyX2xlbikKKyAgICAgICAgICAgICp2YXJfbGVuID0gMDsKKyAgICAgICAgcmV0dXJuIE1BVENIX0ZBSUxFRDsKKyAgICB9CisKKyAgICBtZW1tb3ZlKG5hbWUsIG5ld25hbWUsICgqbGVuZ3RoKSAqIHNpemVvZihvaWQpKTsKKyAgICBpZiAod3JpdGVfbWV0aG9kKQorICAgICAgICAqd3JpdGVfbWV0aG9kID0gKFdyaXRlTWV0aG9kKikwOworICAgIGlmICh2YXJfbGVuKQorICAgICAgICAqdmFyX2xlbiA9IHNpemVvZihsb25nKTsgICAgICAgIC8qIGRlZmF1bHQgKi8KKyAgICByZXR1cm4gKE1BVENIX1NVQ0NFRURFRCk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaCBiL2FnZW50L21pYmdyb3VwL3V0aWxfZnVuY3MvaGVhZGVyX3NpbXBsZV90YWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhOTVkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9hZ2VudC9taWJncm91cC91dGlsX2Z1bmNzL2hlYWRlcl9zaW1wbGVfdGFibGUuaApAQCAtMCwwICsxLDE5IEBACisvKgorICogdXRpbF9mdW5jcy9oZWFkZXJfc2ltcGxlX3RhYmxlLmg6ICB1dGlsaXRpeSBmdW5jdGlvbnMgZm9yIGV4dGVuc2libGUKKyAqIGdyb3Vwcy4KKyAqLworI2lmbmRlZiBfTUlCR1JPVVBfVVRJTF9GVU5DU19IRUFERVJfU0lNUExFX1RBQkxFX0gKKyNkZWZpbmUgX01JQkdST1VQX1VUSUxfRlVOQ1NfSEVBREVSX1NJTVBMRV9UQUJMRV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworaW50IGhlYWRlcl9zaW1wbGVfdGFibGUoc3RydWN0IHZhcmlhYmxlICosIG9pZCAqLCBzaXplX3QgKiwgaW50LCBzaXplX3QgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlTWV0aG9kICoqLCBpbnQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogX01JQkdST1VQX1VUSUxfRlVOQ1NfSEVBREVSX1NJTVBMRV9UQUJMRV9IICovCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvZXhlY3V0ZS5jIGIvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2V4ZWN1dGUuYwppbmRleCAyMWJmNjgyLi40MjIxZjk2IDEwMDY0NAotLS0gYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvZXhlY3V0ZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9leGVjdXRlLmMKQEAgLTE2MCw3ICsxNjAsNyBAQAogICAgIGlmIChjcCkgewogICAgICAgICBhcmd2W2krK10gPSBzdHJkdXAoIGNwICk7CiAgICAgfQotICAgIGFyZ3ZbaV0gPSAwOworICAgIGFyZ3ZbaV0gPSBOVUxMOwogICAgICphcmdjID0gaTsKIAogICAgIHJldHVybiBhcmd2OwpAQCAtMjE1LDcgKzIxNSw3IEBACiAgICAgICAgIGFyZ3ZbaV0gPSBzdHJkdXAoIGNwdHIyICk7CiAgICAgICAgIGNwdHIyICArPSBzdHJsZW4oIGNwdHIyICkrMTsKICAgICB9Ci0gICAgYXJndltjb3VudF0gPSAwOworICAgIGFyZ3ZbY291bnRdID0gTlVMTDsKICAgICAqYXJnYyAgICAgICA9IGNvdW50OwogICAgICAgICAKICAgICByZXR1cm4gYXJndjsKQEAgLTM1NSw3ICszNTUsNyBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjb3VudCA9IHJlYWQob3BpcGVbMF0sICZjYWNoZV9wdHJbb2Zmc2V0XSwgY2FjaGVfc2l6ZSk7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidmVyYm9zZTpydW46ZXhlYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJlYWQgJWQgYnl0ZXNcbiIsIGNvdW50KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHJlYWQgJWQgYnl0ZXNcbiIsIChpbnQpY291bnQpKTsKICAgICAgICAgICAgIGlmICgwID09IGNvdW50KSB7CiAgICAgICAgICAgICAgICAgaW50IHJjOwogICAgICAgICAgICAgICAgIC8qCkBAIC0zOTAsNyArMzkwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ2ZXJib3NlOnJ1bjpleGVjIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAlZCBsZWZ0IGluIGJ1ZmZlclxuIiwgY2FjaGVfc2l6ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICVkIGxlZnQgaW4gYnVmZmVyXG4iLCAoaW50KWNhY2hlX3NpemUpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmICgoY291bnQgPT0gLTEpICYmIChFQUdBSU4gIT0gZXJybm8pKSB7CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvaXF1ZXJ5LmMKaW5kZXggNGY2NmQ3ZS4uZGU5M2Q2MSAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdXRpbGl0aWVzL2lxdWVyeS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9pcXVlcnkuYwpAQCAtNywyNCArNywxOSBAQAogdm9pZAogbmV0c25tcF9wYXJzZV9pcXVlcnlTZWNMZXZlbChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkKIHsKLSAgICBjaGFyIGJ1ZlsxMDI0XTsKICAgICBpbnQgc2VjTGV2ZWw7CiAKICAgICBpZiAoKHNlY0xldmVsID0gcGFyc2Vfc2VjTGV2ZWxfY29uZiggdG9rZW4sIGxpbmUgKSkgPj0gMCApIHsKICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX0lOVEVSTkFMX1NFQ0xFVkVMLCBzZWNMZXZlbCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIlVua25vd24gc2VjdXJpdHkgbGV2ZWw6ICVzIiwgbGluZSk7Ci0gICAgICAgIGJ1Zlsgc2l6ZW9mKGJ1ZiktMSBdID0gMDsKLSAgICAgICAgY29uZmlnX3BlcnJvcihidWYpOworCW5ldHNubXBfY29uZmlnX2Vycm9yKCJVbmtub3duIHNlY3VyaXR5IGxldmVsOiAlcyIsIGxpbmUpOwogICAgIH0KIH0KIAogdm9pZAogbmV0c25tcF9wYXJzZV9pcXVlcnlWZXJzaW9uKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpsaW5lKQogewotICAgIGNoYXIgYnVmWzEwMjRdOwotCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TTk1QVjEKICAgICBpZiAoIXN0cmNtcCggbGluZSwgIjEiICkpCiAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELApAQCAtNDEsOSArMzYsNyBAQAogICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfVkVSU0lPTiwgU05NUF9WRVJTSU9OXzMpOwogICAgIGVsc2UgewotICAgICAgICBzbnByaW50ZihidWYsIHNpemVvZihidWYpLCAiVW5rbm93biB2ZXJzaW9uOiAlcyIsIGxpbmUpOwotICAgICAgICBidWZbIHNpemVvZihidWYpLTEgXSA9IDA7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigiVW5rbm93biB2ZXJzaW9uOiAlcyIsIGxpbmUpOwogICAgIH0KIH0KIApAQCAtNjEsOSArNTQsNiBAQAogICAgIGlmIChzZWNOYW1lKQogICAgICAgICBuZXRzbm1wX3F1ZXJ5X3NldF9kZWZhdWx0X3Nlc3Npb24oCiAgICAgICAgICAgICAgbmV0c25tcF9pcXVlcnlfdXNlcl9zZXNzaW9uKHNlY05hbWUpKTsKLSAgICBlbHNlCi0gICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAotICAgICAgICAgICAgICAgICAiaXF1ZXJ5U2VjTmFtZSBoYXMgbm90IGJlZW4gY29uZmlndXJlZCAtIGludGVybmFsIHF1ZXJpZXMgd2lsbCBmYWlsXG4iKTsKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQogCkBAIC04MSw5ICs3MSw5IEBACiB7CiAgICAgdV9jaGFyIGVJRFtTTk1QX01BWEJVRl9TTUFMTF07CiAgICAgc2l6ZV90IGVsZW47Ci0gICAgbmV0c25tcF9zZXNzaW9uICpzID0gbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uKCk7CisgICAgbmV0c25tcF9zZXNzaW9uICpzID0gbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uX3VuY2hlY2tlZCgpOwogCi0gICAgaWYgKHMgJiYgcy0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwICkgeworICAgIGlmICggcyAmJiBzLT5zZWN1cml0eUVuZ2luZUlETGVuID09IDAgKSB7CiAgICAgICAgIGVsZW4gPSBzbm1wdjNfZ2V0X2VuZ2luZUlEKGVJRCwgc2l6ZW9mKGVJRCkpOwogICAgICAgICBzLT5zZWN1cml0eUVuZ2luZUlEID0gbmV0c25tcF9tZW1kdXAoZUlELCBlbGVuKTsKICAgICAgICAgcy0+c2VjdXJpdHlFbmdpbmVJRExlbiA9IGVsZW47CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvb3ZlcnJpZGUuYyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCmluZGV4IDdjNzBhMDIuLjUwY2RiNTEgMTAwNjQ0Ci0tLSBhL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9vdmVycmlkZS5jCkBAIC0xNSw4ICsxNSw2IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCi0jaW5jbHVkZSAidXRpbF9mdW5jcy5oIgotCiB0eXBlZGVmIHN0cnVjdCBvdmVycmlkZV9kYXRhX3MgewogICAgIGludCAgICAgICAgICAgICB0eXBlOwogICAgIHZvaWQgICAgICAgICAgICp2YWx1ZTsKQEAgLTE4Myw3ICsxODEsNiBAQAogICAgICAgICBjb25maWdfcGVycm9yKCJtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0KICAgICB0aGVkYXRhLT50eXBlID0gdHlwZTsKIAogICAgIHN3aXRjaCAodHlwZSkgewpAQCAtMjQ5LDcgKzI0Niw3IEBACiAgICAgdGhlX3JlZy0+bW9kZXMgPSAocmVhZHdyaXRlKSA/IEhBTkRMRVJfQ0FOX1JXUklURSA6IEhBTkRMRVJfQ0FOX1JPTkxZOwogICAgIHRoZV9yZWctPmhhbmRsZXIgPQogICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJvdmVycmlkZSIsIG92ZXJyaWRlX2hhbmRsZXIpOwotICAgIHRoZV9yZWctPnJvb3RvaWQgPSBuZXRzbm1wX21lbWR1cChvaWRidWYsIG9pZGJ1Zl9sZW4gKiBzaXplb2Yob2lkKSk7CisgICAgdGhlX3JlZy0+cm9vdG9pZCA9IHNubXBfZHVwbGljYXRlX29iamlkKG9pZGJ1Ziwgb2lkYnVmX2xlbik7CiAgICAgdGhlX3JlZy0+cm9vdG9pZF9sZW4gPSBvaWRidWZfbGVuOwogICAgIGlmICghdGhlX3JlZy0+cm9vdG9pZCB8fCAhdGhlX3JlZy0+aGFuZGxlciB8fCAhdGhlX3JlZy0+aGFuZGxlck5hbWUpIHsKICAgICAgICAgaWYgKHRoZV9yZWctPmhhbmRsZXIpCmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmMgYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUwNmY3OQotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuYwpAQCAtMCwwICsxLDQ0IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSAic25tcF9nZXRfc3RhdGlzdGljLmgiCisKK3N0YXRpYyBpbnQKK25ldHNubXBfZ2V0X3N0YXRpc3RpY19oZWxwZXJfaGFuZGxlcihuZXRzbm1wX21pYl9oYW5kbGVyICpoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKnJlcWluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gKnJlcXVlc3RzKQoreworICAgIGlmIChyZXFpbmZvLT5tb2RlID09IE1PREVfR0VUKSB7CisgICAgICAgIGNvbnN0IG9pZCBpZHggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lW3JlZ2luZm8tPnJvb3RvaWRfbGVuIC0gMl0gKworICAgICAgICAgICAgKCgoY2hhciopaGFuZGxlci0+bXl2b2lkKSAtICgoY2hhciopMCkpOworICAgICAgICBjb25zdCB1aW50MzJfdCB2YWx1ZSA9IHNubXBfZ2V0X3N0YXRpc3RpYyhpZHgpOworICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdHMtPnJlcXVlc3R2YiwgQVNOX0NPVU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdV9jaGFyKikmdmFsdWUsIHNpemVvZih2YWx1ZSkpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICB9CisgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKK30KKworc3RhdGljIG5ldHNubXBfbWliX2hhbmRsZXIgKgorbmV0c25tcF9nZXRfc3RhdGlzdGljX2hhbmRsZXIoaW50IG9mZnNldCkKK3sKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICpyZXQgPQorICAgICAgICBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyKCJnZXRfc3RhdGlzdGljIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldF9zdGF0aXN0aWNfaGVscGVyX2hhbmRsZXIpOworICAgIGlmIChyZXQpIHsKKyAgICAgICAgcmV0LT5mbGFncyB8PSBNSUJfSEFORExFUl9BVVRPX05FWFQ7CisgICAgICAgIHJldC0+bXl2b2lkID0gKChjaGFyKikwKSArIG9mZnNldDsKKyAgICB9CisgICAgcmV0dXJuIHJldDsKK30KKworaW50CituZXRzbm1wX3JlZ2lzdGVyX3N0YXRpc3RpY19oYW5kbGVyKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCBzdGFydCwgaW50IGJlZ2luLCBpbnQgZW5kKQoreworICAgIG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZ2V0X3N0YXRpc3RpY19oYW5kbGVyKGJlZ2luIC0gc3RhcnQpKTsKKyAgICByZXR1cm4gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXJfZ3JvdXAocmVnaW5mbywgc3RhcnQsIHN0YXJ0ICsgKGVuZCAtIGJlZ2luKSk7Cit9CmRpZmYgLS1naXQgYS9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmggYi9hZ2VudC9taWJncm91cC91dGlsaXRpZXMvc25tcF9nZXRfc3RhdGlzdGljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1ZDQ4NgotLS0gL2Rldi9udWxsCisrKyBiL2FnZW50L21pYmdyb3VwL3V0aWxpdGllcy9zbm1wX2dldF9zdGF0aXN0aWMuaApAQCAtMCwwICsxLDIwIEBACisjaWZuZGVmIFNOTVBfR0VUX1NUQVRJU1RJQ19ICisjZGVmaW5lIFNOTVBfR0VUX1NUQVRJU1RJQ19ICisKKy8qKiBSZWdpc3RlcnMgYSBzY2FsYXIgZ3JvdXAgd2l0aCBzdGF0aXN0aWNzIGZyb20gQHJlZiBzbm1wX2dldF9zdGF0aXN0aWMuCisgKiAgYXMgcmVnaW5mby5bc3RhcnQsIHN0YXJ0ICsgZW5kIC0gYmVnaW5dLgorICogIEBwYXJhbSByZWdpbmZvIHJlZ2lzdHJhdGlvbiB0byByZWdpc3RlciB0aGUgaXRlbXMgdW5kZXIKKyAqICBAcGFyYW0gc3RhcnQgb2Zmc2V0IHRvIHRoZSBiZWdpbiBpdGVtCisgKiAgQHBhcmFtIGJlZ2luIGZpcnN0IHNubXBfZ2V0X3N0YXRpc3RpYyBrZXkgdG8gcmV0dXJuCisgKiAgQHBhcmFtIGVuZCBsYXN0IHNubXBfZ2V0X3N0YXRpc3RpYyBrZXkgdG8gcmV0dXJuCisgKi8KK2ludAorbmV0c25tcF9yZWdpc3Rlcl9zdGF0aXN0aWNfaGFuZGxlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgc3RhcnQsIGludCBiZWdpbiwgaW50IGVuZCk7CisKKyNkZWZpbmUgTkVUU05NUF9SRUdJU1RFUl9TVEFUSVNUSUNfSEFORExFUihyZWdpbmZvLCBzdGFydCwgc3RhdCkgICAgICAgIFwKKyAgbmV0c25tcF9yZWdpc3Rlcl9zdGF0aXN0aWNfaGFuZGxlcihyZWdpbmZvLCBzdGFydCwgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUXyAjIyBzdGF0ICMjIF9TVEFUU19TVEFSVCwgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVEFUXyAjIyBzdGF0ICMjIF9TVEFUU19FTkQpCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZyBiL2FnZW50L21pYmdyb3VwL3ZlcnNpb250YWcKaW5kZXggOWFhNzFhNi4uYzI0YzI1OSAxMDA3NTUKLS0tIGEvYWdlbnQvbWliZ3JvdXAvdmVyc2lvbnRhZworKysgYi9hZ2VudC9taWJncm91cC92ZXJzaW9udGFnCkBAIC0xLDYgKzEsNiBAQAogIyEvYmluL3NoCiAKLURPSVQ9CitET0lUPWVjaG8KIAogaWYgWyAkMiA9ICJ0YWciIC1vICQyID0gInRhciIgXTsKIHRoZW4KZGlmZiAtLWdpdCBhL2FnZW50L21pYmdyb3VwL3dpbkV4dERMTC5oIGIvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgKaW5kZXggYzkwZjY2OS4uYTEwYjIxYyAxMDA2NDQKLS0tIGEvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgKKysrIGIvYWdlbnQvbWliZ3JvdXAvd2luRXh0RExMLmgKQEAgLTE3LDggKzE3LDkgQEAKICAgICAgKiAgYW5kIHdyaXRlYWJsZSBvYmplY3QgbWV0aG9kcyAoJ1dyaXRlTWV0aG9kJykuCiAgICAgICovCiAgICAgIHZvaWQgICAgIGluaXRfd2luRXh0RExMKHZvaWQpOwotICAgICB2b2lkICAgICBzaHV0ZG93bl93aW5FeHRETEwodm9pZCk7Ci0gICAKKworICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciB2YXJfd2luRXh0RExMOworICAgICAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wX2FnZW50LmMgYi9hZ2VudC9zbm1wX2FnZW50LmMKaW5kZXggNWFhNTU1Mi4uYjc3NjFiMCAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcF9hZ2VudC5jCisrKyBiL2FnZW50L3NubXBfYWdlbnQuYwpAQCAtOTksOCArOTksNiBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJzbm1wZC5oIgotI2luY2x1ZGUgIm1pYmdyb3VwL3N0cnVjdC5oIgotI2luY2x1ZGUgIm1pYmdyb3VwL3V0aWxfZnVuY3MuaCIKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVzLmg+CiAKQEAgLTExNiw2ICsxMTQsNjYgQEAKICNpbmNsdWRlICJzbXV4L3NtdXguaCIKICNlbmRpZgogCitORVRTTk1QX0lOTElORSB2b2lkCituZXRzbm1wX2FnZW50X2FkZF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqbm9kZSkKK3sKKyAgICBpZiAoYXJpKSB7CisJaWYgKGFyaS0+YWdlbnRfZGF0YSkgeworICAgICAgICAgICAgbmV0c25tcF9hZGRfbGlzdF9kYXRhKCZhcmktPmFnZW50X2RhdGEsIG5vZGUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXJpLT5hZ2VudF9kYXRhID0gbm9kZTsKKwl9CisgICAgfQorfQorCitORVRTTk1QX0lOTElORSBpbnQKK25ldHNubXBfYWdlbnRfcmVtb3ZlX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBuYW1lKQoreworICAgIGlmICgoTlVMTCA9PSBhcmkpIHx8IChOVUxMID09IGFyaS0+YWdlbnRfZGF0YSkpCisgICAgICAgIHJldHVybiAxOworCisgICAgcmV0dXJuIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmYXJpLT5hZ2VudF9kYXRhLCBuYW1lKTsKK30KKworTkVUU05NUF9JTkxJTkUgdm9pZCAgICAqCituZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQoreworICAgIGlmIChhcmkpIHsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfZ2V0X2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEsIG5hbWUpOworICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworTkVUU05NUF9JTkxJTkUgdm9pZAorbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0KG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCit7CisgICAgaWYgKGFyaSkgeworICAgICAgICBuZXRzbm1wX2ZyZWVfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSk7CisgICAgfQorfQorCitORVRTTk1QX0lOTElORSB2b2lkCituZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCit7CisgICAgaWYgKGFyaSkgeworICAgICAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEpOworICAgIH0KK30KKworTkVUU05NUF9JTkxJTkUgdm9pZAorbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mbyhuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpKQoreworICAgIGlmIChhcmkpIHsKKyAgICAgICAgaWYgKGFyaS0+YWdlbnRfZGF0YSkgeworICAgICAgICAgICAgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEoYXJpLT5hZ2VudF9kYXRhKTsKKwl9CisgICAgICAgIFNOTVBfRlJFRShhcmkpOworICAgIH0KK30KKwogb2lkICAgICAgdmVyc2lvbl9zeXNvaWRbXSA9IHsgTkVUU05NUF9TWVNURU1fTUlCIH07CiBpbnQgICAgICB2ZXJzaW9uX3N5c29pZF9sZW4gPSBPSURfTEVOR1RIKHZlcnNpb25fc3lzb2lkKTsKIApAQCAtMjAwLDE1ICsyNTgsMTcgQEAKICAgICBuZXRzbm1wX2NhY2hlbWFwICp0bXBwOwogCiAgICAgdG1wcCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9jYWNoZW1hcCk7Ci0gICAgaWYgKCpjYWNoZV9zdG9yZSkgewotICAgICAgICB0bXBwLT5uZXh0ID0gKmNhY2hlX3N0b3JlOwotICAgICAgICAqY2FjaGVfc3RvcmUgPSB0bXBwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgICpjYWNoZV9zdG9yZSA9IHRtcHA7Ci0gICAgfQorICAgIGlmICh0bXBwICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKCpjYWNoZV9zdG9yZSkgeworICAgICAgICAgICAgdG1wcC0+bmV4dCA9ICpjYWNoZV9zdG9yZTsKKyAgICAgICAgICAgICpjYWNoZV9zdG9yZSA9IHRtcHA7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAqY2FjaGVfc3RvcmUgPSB0bXBwOworICAgICAgICB9CiAKLSAgICB0bXBwLT5nbG9iYWxpZCA9IGdsb2JhbGlkOwotICAgIHRtcHAtPmNhY2hlaWQgPSBsb2NhbGlkOworICAgICAgICB0bXBwLT5nbG9iYWxpZCA9IGdsb2JhbGlkOworICAgICAgICB0bXBwLT5jYWNoZWlkID0gbG9jYWxpZDsKKyAgICB9CiAgICAgcmV0dXJuIHRtcHA7CiB9CiAKQEAgLTU0Myw3ICs2MDMsNyBAQAogCiAKIGludAotZ2V0TmV4dFNlc3NJRCgpCitnZXROZXh0U2Vzc0lEKHZvaWQpCiB7CiAgICAgc3RhdGljIGludCAgICAgIFNlc3Npb25JRCA9IDA7CiAKQEAgLTU5Niw3ICs2NTYsNyBAQAogICAgICAgICB0aW1lcmNsZWFyKHR2cCk7CiAgICAgfQogCi0gICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmZmRzZXQsIDAsIDAsIHR2cCk7CisgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmZmRzZXQsIE5VTEwsIE5VTEwsIHR2cCk7CiAKICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgIC8qCkBAIC0xMjUxLDYgKzEzMTEsNyBAQAogCQkJIk5TQVBcbiIsIGNwdHIpKTsKICAgICAgICAgfQogICAgIH0gd2hpbGUoc3QgJiYgKnN0ICE9ICdcMCcpOworICAgIFNOTVBfRlJFRShidWYpOwogCiAjaWZkZWYgVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUKICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTEyOTEsNyArMTM1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwiYWdlbnRfc2VzaW9uICUwOHAgY3JlYXRlZFxuIiwgYXNwKSk7CisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCJhZ2VudF9zZXNpb24gJThwIGNyZWF0ZWRcbiIsIGFzcCkpOwogICAgIGFzcC0+c2Vzc2lvbiA9IHNlc3Npb247CiAgICAgYXNwLT5wZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwogICAgIGFzcC0+b3JpZ19wZHUgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwpAQCAtMTMxNyw3ICsxMzc4LDcgQEAKICAgICBpZiAoIWFzcCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCJhZ2VudF9zZXNzaW9uICUwOHAgcmVsZWFzZWRcbiIsIGFzcCkpOworICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwiYWdlbnRfc2Vzc2lvbiAlOHAgcmVsZWFzZWRcbiIsIGFzcCkpOwogCiAgICAgbmV0c25tcF9yZW1vdmVfZnJvbV9kZWxlZ2F0ZWQoYXNwKTsKICAgICAKQEAgLTEzODksNyArMTQ1MCw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIGFzcC0+bmV4dCA9IGFnZW50X2RlbGVnYXRlZF9saXN0OwogICAgICAgICAgICAgYWdlbnRfZGVsZWdhdGVkX2xpc3QgPSBhc3A7Ci0gICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJkZWxlZ2F0ZSBzZXNzaW9uID09ICUwOHBcbiIsIGFzcCkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiZGVsZWdhdGUgc2Vzc2lvbiA9PSAlOHBcbiIsIGFzcCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTE0MTYsNyArMTQ3Nyw3IEBACiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGFnZW50X2RlbGVnYXRlZF9saXN0ID0gYXNwLT5uZXh0OwogCi0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgInJlbW92ZSBkZWxlZ2F0ZWQgc2Vzc2lvbiA9PSAlMDhwXG4iLCBhc3ApKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAicmVtb3ZlIGRlbGVnYXRlZCBzZXNzaW9uID09ICU4cFxuIiwgYXNwKSk7CiAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQpAQCAtMTQ2Myw3ICsxNTI0LDcgQEAKICAgICAgKi8KICAgICBpZihjb3VudCkgewogICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJyZW1vdmVkICVkIGRlbGVnYXRlZCByZXF1ZXN0KHMpIGZvciBzZXNzaW9uICIKLSAgICAgICAgICAgICAgICAgICAgIiUwOHBcbiIsIGNvdW50LCBzZXNzKSk7CisgICAgICAgICAgICAgICAgICAgICIlOHBcbiIsIGNvdW50LCBzZXNzKSk7CiAgICAgICAgIG5ldHNubXBfY2hlY2tfb3V0c3RhbmRpbmdfYWdlbnRfcmVxdWVzdHMoKTsKICAgICB9CiAgICAgCkBAIC0xNTI3LDcgKzE1ODgsNyBAQAogICAgICAqIGRvbmUuCiAgICAgICovCiAgICAgaWYgKGFzcCA9PSBuZXRzbm1wX3Byb2Nlc3Npbmdfc2V0KSB7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlNFVCByZXF1ZXN0IGNvbXBsZXRlLCBhc3AgPSAlMDhwXG4iLAorICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJTRVQgcmVxdWVzdCBjb21wbGV0ZSwgYXNwID0gJThwXG4iLAogICAgICAgICAgICAgICAgICAgICBhc3ApKTsKICAgICAgICAgbmV0c25tcF9wcm9jZXNzaW5nX3NldCA9IE5VTEw7CiAgICAgfQpAQCAtMTcxNiw3ICsxNzc3LDcgQEAKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIkRVTVAgYWdlbnRfc2Vzc19saXN0IC0+ICIpKTsKICAgICBmb3IgKGEgPSBhZ2VudF9zZXNzaW9uX2xpc3Q7IGEgIT0gTlVMTDsgYSA9IGEtPm5leHQpIHsKLSAgICAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIiUwOHBbc2Vzc2lvbiAlMDhwXSAtPiAiLCBhLCBhLT5zZXNzaW9uKSk7CisgICAgICAgIERFQlVHTVNHKCgic25tcF9hZ2VudCIsICIlOHBbc2Vzc2lvbiAlOHBdIC0+ICIsIGEsIGEtPnNlc3Npb24pKTsKICAgICB9CiAgICAgREVCVUdNU0coKCJzbm1wX2FnZW50IiwgIltOSUxdXG4iKSk7CiB9CkBAIC0xNzI2LDcgKzE3ODcsNyBAQAogewogICAgIG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYSwgKipwcmV2TmV4dCA9ICZhZ2VudF9zZXNzaW9uX2xpc3Q7CiAKLSAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJSRU1PVkUgc2Vzc2lvbiA9PSAlMDhwXG4iLCBhc3ApKTsKKyAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJSRU1PVkUgc2Vzc2lvbiA9PSAlOHBcbiIsIGFzcCkpOwogCiAgICAgZm9yIChhID0gYWdlbnRfc2Vzc2lvbl9saXN0OyBhICE9IE5VTEw7IGEgPSAqcHJldk5leHQpIHsKICAgICAgICAgaWYgKGEgPT0gYXNwKSB7CkBAIC0xNzU1LDcgKzE4MTYsNyBAQAogewogICAgIG5ldHNubXBfYWdlbnRfc2Vzc2lvbiAqYSwgKm5leHQsICoqcHJldk5leHQgPSAmYWdlbnRfc2Vzc2lvbl9saXN0OwogCi0gICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiUkVNT1ZFIHNlc3Npb24gPT0gJTA4cFxuIiwgc2VzcykpOworICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgIlJFTU9WRSBzZXNzaW9uID09ICU4cFxuIiwgc2VzcykpOwogCiAgICAgZm9yIChhID0gYWdlbnRfc2Vzc2lvbl9saXN0OyBhICE9IE5VTEw7IGEgPSBuZXh0KSB7CiAgICAgICAgIGlmIChhLT5zZXNzaW9uID09IHNlc3MpIHsKQEAgLTE4NzQsNyArMTkzNSw3IEBACiAgICAgLyoKICAgICAgKiBkb25lIAogICAgICAqLwotICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgImVuZCBvZiBoYW5kbGVfc25tcF9wYWNrZXQsIGFzcCA9ICUwOHBcbiIsCisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiZW5kIG9mIGhhbmRsZV9zbm1wX3BhY2tldCwgYXNwID0gJThwXG4iLAogICAgICAgICAgICAgICAgIGFzcCkpOwogICAgIHJldHVybiByYzsKIH0KQEAgLTIzNzUsNiArMjQzNiwxMCBAQAogICAgIGFzcC0+dHJlZWNhY2hlID0KICAgICAgICAgKG5ldHNubXBfdHJlZV9jYWNoZSAqKSBjYWxsb2MoYXNwLT50cmVlY2FjaGVfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF90cmVlX2NhY2hlKSk7CisKKyAgICBpZiAoYXNwLT50cmVlY2FjaGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKwogICAgIGFzcC0+dHJlZWNhY2hlX251bSA9IC0xOwogICAgIGlmIChhc3AtPmNhY2hlX3N0b3JlKSB7CiAgICAgICAgIG5ldHNubXBfZnJlZV9jYWNoZW1hcChhc3AtPmNhY2hlX3N0b3JlKTsKQEAgLTI2OTAsNyArMjc1NSw3IEBACiAKICAgICAgICAgICAgIG5ldHNubXBfcHJvY2Vzc2luZ19zZXQgPSBuZXRzbm1wX2FnZW50X3F1ZXVlZF9saXN0OwogICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAiU0VUIHJlcXVlc3QgcmVtYWlucyBxdWV1ZWQgd2hpbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlZCByZXF1ZXN0cyBmaW5pc2gsIGFzcCA9ICUwOHBcbiIsIGFzcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgImRlbGVnYXRlZCByZXF1ZXN0cyBmaW5pc2gsIGFzcCA9ICU4cFxuIiwgYXNwKSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC0yNzAwLDcgKzI3NjUsNyBAQAogICAgICAgICBhc3AgPSBuZXRzbm1wX2FnZW50X3F1ZXVlZF9saXN0OwogICAgICAgICBuZXRzbm1wX2FnZW50X3F1ZXVlZF9saXN0ID0gYXNwLT5uZXh0OwogICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsCi0gICAgICAgICAgICAgICAgICAgICJwcm9jZXNzaW5nIHF1ZXVlZCByZXF1ZXN0LCBhc3AgPSAlMDhwXG4iLCBhc3ApKTsKKyAgICAgICAgICAgICAgICAgICAgInByb2Nlc3NpbmcgcXVldWVkIHJlcXVlc3QsIGFzcCA9ICU4cFxuIiwgYXNwKSk7CiAKICAgICAgICAgbmV0c25tcF9oYW5kbGVfcmVxdWVzdChhc3AsIGFzcC0+c3RhdHVzKTsKIApAQCAtMjc0Myw3ICsyODA4LDcgQEAKIHsKICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzID0gU05NUF9FUlJfTk9FUlJPUjsKIAotICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwgInByb2Nlc3NpbmcgZGVsZWdhdGVkIHJlcXVlc3QsIGFzcCA9ICUwOHBcbiIsCisgICAgREVCVUdNU0dUTCgoInNubXBfYWdlbnQiLCAicHJvY2Vzc2luZyBkZWxlZ2F0ZWQgcmVxdWVzdCwgYXNwID0gJThwXG4iLAogICAgICAgICAgICAgICAgIGFzcCkpOwogCiAgICAgc3dpdGNoIChhc3AtPm1vZGUpIHsKQEAgLTI5OTIsNiArMzA1Nyw5IEBACiAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOyAgICAgIC8qIHNob3VsZCBuZXZlciByZWFsbHkgaGFwcGVuICovCiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKCFuZXRzbm1wX3J1bm5pbmcpIHsKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CiAKQEAgLTMxMTIsNyArMzE4MCw3IEBACiAgICAgICAgICAgICBuZXRzbm1wX2FkZF9xdWV1ZWQoYXNwKTsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FnZW50IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJyZXF1ZXN0IHF1ZXVlZCB3aGlsZSBwcm9jZXNzaW5nIHNldCwgIgotICAgICAgICAgICAgICAgICAgICAgICAgImFzcCA9ICUwOHBcbiIsIGFzcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgImFzcCA9ICU4cFxuIiwgYXNwKSk7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQogCkBAIC0zMTI4LDcgKzMxOTYsNyBAQAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoYWdlbnRfZGVsZWdhdGVkX2xpc3QpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hZ2VudCIsICJTRVQgcmVxdWVzdCBxdWV1ZWQgd2hpbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxlZ2F0ZWQgcmVxdWVzdHMgZmluaXNoLCBhc3AgPSAlMDhwXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWxlZ2F0ZWQgcmVxdWVzdHMgZmluaXNoLCBhc3AgPSAlOHBcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNwKSk7CiAgICAgICAgICAgICAgICAgbmV0c25tcF9hZGRfcXVldWVkKGFzcCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0zMzg1LDcgKzM0NTMsNyBAQAogICAgICAgICBjYXNlIE1PREVfR0VUTkVYVDoKICAgICAgICAgY2FzZSBNT0RFX0dFVEJVTEs6CiAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnR5cGUgPSBlcnJvcl92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIFRoZXNlIGFyZSB0ZWNobmljYWxseSBpbGxlZ2FsIHRvIHNldCBieSB0aGUKQEAgLTM0MDAsNyArMzQ2OCw3IEBACiAKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IFNOTVBfRVJSX05PU1VDSE5BTUU7ICAgICAgLyogV1dXOiBjb3JyZWN0PyAqLwotICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgIC8qIG5ldmVyIGdldCBoZXJlICovCiAKQEAgLTM0MjEsNyArMzQ4OSw3IEBACiAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgIHJlcXVlc3QtPnN0YXR1cyA9IGVycm9yX3ZhbHVlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CisgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfQpAQCAtMzUzOCw2NyArMzYwNiw2IEBACiB9CiAKIAotCi1ORVRTTk1QX0lOTElORSB2b2lkCi1uZXRzbm1wX2FnZW50X2FkZF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RhdGFfbGlzdCAqbm9kZSkKLXsKLSAgICBpZiAoYXJpKSB7Ci0JaWYgKGFyaS0+YWdlbnRfZGF0YSkgewotICAgICAgICAgICAgbmV0c25tcF9hZGRfbGlzdF9kYXRhKCZhcmktPmFnZW50X2RhdGEsIG5vZGUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgYXJpLT5hZ2VudF9kYXRhID0gbm9kZTsKLQl9Ci0gICAgfQotfQotCi1ORVRTTk1QX0lOTElORSBpbnQKLW5ldHNubXBfYWdlbnRfcmVtb3ZlX2xpc3RfZGF0YShuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBuYW1lKQotewotICAgIGlmICgoTlVMTCA9PSBhcmkpIHx8IChOVUxMID09IGFyaS0+YWdlbnRfZGF0YSkpCi0gICAgICAgIHJldHVybiAxOwotCi0gICAgcmV0dXJuIG5ldHNubXBfcmVtb3ZlX2xpc3Rfbm9kZSgmYXJpLT5hZ2VudF9kYXRhLCBuYW1lKTsKLX0KLQotTkVUU05NUF9JTkxJTkUgdm9pZCAgICAqCi1uZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGEobmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKmFyaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lKQotewotICAgIGlmIChhcmkpIHsKLSAgICAgICAgcmV0dXJuIG5ldHNubXBfZ2V0X2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEsIG5hbWUpOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotTkVUU05NUF9JTkxJTkUgdm9pZAotbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0KG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCi17Ci0gICAgaWYgKGFyaSkgewotICAgICAgICBuZXRzbm1wX2ZyZWVfbGlzdF9kYXRhKGFyaS0+YWdlbnRfZGF0YSk7Ci0gICAgfQotfQotCi1ORVRTTk1QX0lOTElORSB2b2lkCi1uZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICphcmkpCi17Ci0gICAgaWYgKGFyaSkgewotICAgICAgICBuZXRzbm1wX2ZyZWVfYWxsX2xpc3RfZGF0YShhcmktPmFnZW50X2RhdGEpOwotICAgIH0KLX0KLQotTkVUU05NUF9JTkxJTkUgdm9pZAotbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mbyhuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyAqYXJpKQotewotICAgIGlmIChhcmkpIHsKLSAgICAgICAgaWYgKGFyaS0+YWdlbnRfZGF0YSkgewotICAgICAgICAgICAgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEoYXJpLT5hZ2VudF9kYXRhKTsKLQl9Ci0gICAgICAgIFNOTVBfRlJFRShhcmkpOwotICAgIH0KLX0KLQogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqCiAgKiBkZXByZWNhdGVkIGZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcF9wZXJsLmMgYi9hZ2VudC9zbm1wX3BlcmwuYwppbmRleCA0ODIxYWQzLi43Y2FhMzM1IDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wX3BlcmwuYworKysgYi9hZ2VudC9zbm1wX3BlcmwuYwpAQCAtNTMsNiArNTMsMTEgQEAKICAgICAgICAgZ290byBiYWlsX291dDsKIAogICAgIHBlcmxfY29uc3RydWN0KG15X3BlcmwpOworCisjaWZkZWYgUEVSTF9FWElUX0RFU1RSVUNUX0VORAorICAgIFBMX2V4aXRfZmxhZ3MgfD0gUEVSTF9FWElUX0RFU1RSVUNUX0VORDsKKyNlbmRpZgorCiAgICAgaWYgKHBlcmxfcGFyc2UobXlfcGVybCwgeHNfaW5pdCwgMiwgTkVUU05NUF9SRU1PVkVfQ09OU1QoY2hhciAqKiwgZW1iZWRhcmdzKSwgTlVMTCkpCiAgICAgICAgIGdvdG8gYmFpbF9vdXQ7CiAKZGlmZiAtLWdpdCBhL2FnZW50L3NubXBfdmFycy5jIGIvYWdlbnQvc25tcF92YXJzLmMKaW5kZXggYWFmOTE3Zi4uZDhlYzUxZCAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcF92YXJzLmMKKysrIGIvYWdlbnQvc25tcF92YXJzLmMKQEAgLTE0Myw2ICsxNDMsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaD4KICNpbmNsdWRlICJrZXJuZWwuaCIKIAogI2luY2x1ZGUgIm1pYmdyb3VwL3N0cnVjdC5oIgpAQCAtMzEyLDYgKzMxMyw3IEBACiAgICAgbmV0c25tcF9pbml0X2hlbHBlcnMoKTsKICAgICBpbml0X3RyYXBzKCk7CiAgICAgbmV0c25tcF9jb250YWluZXJfaW5pdF9saXN0KCk7CisgICAgaW5pdF9hZ2VudF9zeXNPUlRhYmxlKCk7CiAKICNpZiBkZWZpbmVkKFVTSU5HX0FHRU5UWF9TVUJBR0VOVF9NT0RVTEUpIHx8IGRlZmluZWQoVVNJTkdfQUdFTlRYX01BU1RFUl9NT0RVTEUpCiAgICAgLyoKQEAgLTM2Niw2ICszNjgsNyBAQAogICAgIG5ldHNubXBfY2xlYXJfY2FsbGJhY2tfbGlzdCgpOwogICAgIG5ldHNubXBfY2xlYXJfdGRvbWFpbl9saXN0KCk7CiAgICAgbmV0c25tcF9jbGVhcl9oYW5kbGVyX2xpc3QoKTsKKyAgICBzaHV0ZG93bl9hZ2VudF9zeXNPUlRhYmxlKCk7CiAgICAgbmV0c25tcF9jb250YWluZXJfZnJlZV9saXN0KCk7CiAgICAgY2xlYXJfc2VjX21vZCgpOwogICAgIGNsZWFyX3NubXBfZW51bSgpOwpkaWZmIC0tZ2l0IGEvYWdlbnQvc25tcGQuYyBiL2FnZW50L3NubXBkLmMKaW5kZXggZjQ2NzU5Mi4uZjBhNmVmZSAxMDA2NDQKLS0tIGEvYWdlbnQvc25tcGQuYworKysgYi9hZ2VudC9zbm1wZC5jCkBAIC0xMzgsNiArMTM4LDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaD4KIAogI2luY2x1ZGUgIm0ybS5oIgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmg+CkBAIC0xNzYsNyArMTc3LDcgQEAKICNkZWZpbmUgVElNRVRJQ0sgICAgICAgICA1MDAwMDBMCiAKIGludCAgICAgICAgICAgICBzbm1wX2R1bXBfcGFja2V0OwotaW50ICAgICAgICAgICAgIHJlY29uZmlnID0gMDsKK3N0YXRpYyBpbnQgICAgICByZWNvbmZpZyA9IDA7CiBpbnQgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfREFFTU9OOwogCiAjaWZkZWYgV0lOMzJTRVJWSUNFCkBAIC00MzAsNiArNDMxLDEyIEBACiAgICAgaW50IGZkOwogICAgIEZJTEUgICAgICAgICAgICpQSUQ7CiAjZW5kaWYKKyNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKKyAgICBzdHJ1Y3QgcGFzc3dkICAqaW5mbzsKKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyAgICBjb25zdCBjaGFyICAgICAqcGVyc2lzdGVudF9kaXI7CisjZW5kaWYKIAogI2lmbmRlZiBXSU4zMgogICAgIC8qCkBAIC03NTQsNyArNzYxLDYgQEAKICAgICAgICAgICAgICAgICB1aWQgPSBzdHJ0b3VsKG9wdGFyZywgJmVjcCwgMTApOwogICAgICAgICAgICAgICAgIGlmICgqZWNwKSB7CiAjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICi0gICAgICAgICAgICAgICAgICAgIHN0cnVjdCBwYXNzd2QgICppbmZvOwogICAgICAgICAgICAgICAgICAgICBpbmZvID0gZ2V0cHduYW0ob3B0YXJnKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGluZm8pIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHVpZCA9IGluZm8tPnB3X3VpZDsKQEAgLTg5OCwyMyArOTA0LDYgQEAKICAgICAqY3B0ciA9IDA7CiAgICAgKmFyZ3ZwdHIgPSBOVUxMOwogCi0jaWZkZWYgQlVGU0laCi0gICAgc2V0dmJ1ZihzdGRvdXQsIE5VTEwsIF9JT0xCRiwgQlVGU0laKTsKLSNlbmRpZgotICAgIC8qCi0gICAgICogSW5pdGlhbGl6ZSB0aGUgd29ybGQuICBEZXRhY2ggZnJvbSB0aGUgc2hlbGwuICBDcmVhdGUgaW5pdGlhbCB1c2VyLiAgCi0gICAgICovCi0gICAgaWYoIWRvbnRfZm9yaykgewotICAgICAgICBpbnQgcXVpdCA9ICEgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1FVSVRfSU1NRURJQVRFTFkpOwotICAgICAgICByZXQgPSBuZXRzbm1wX2RhZW1vbml6ZShxdWl0LCBzbm1wX3N0ZGVycmxvZ19zdGF0dXMoKSk7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIHh4eC1ya3M6IGRvIHdlIGNhcmUgaWYgZm9yayBmYWlscz8gSSB0aGluayB3ZSBzaG91bGQuLi4KLSAgICAgICAgICovCi0gICAgICAgIGlmKHJldCAhPSAwKQotICAgICAgICAgICAgRXhpdCgxKTsgICAgICAgICAgICAgICAgLyogIEV4aXQgbG9ncyBleGl0IHZhbCBmb3IgdXMgICovCi0gICAgfQotCiAgICAgU09DS19TVEFSVFVQOwogICAgIGlmIChpbml0X2FnZW50KGFwcF9uYW1lKSAhPSAwKSB7CiAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJBZ2VudCBpbml0aWFsaXphdGlvbiBmYWlsZWRcbiIpOwpAQCAtOTM0LDYgKzkyMywyMCBAQAogICAgICAgICBFeGl0KDEpOyAgICAgICAgICAgICAgICAvKiAgRXhpdCBsb2dzIGV4aXQgdmFsIGZvciB1cyAgKi8KICAgICB9CiAKKyAgICAvKgorICAgICAqIEluaXRpYWxpemUgdGhlIHdvcmxkLiAgRGV0YWNoIGZyb20gdGhlIHNoZWxsLiAgQ3JlYXRlIGluaXRpYWwgdXNlci4gIAorICAgICAqLworICAgIGlmKCFkb250X2ZvcmspIHsKKyAgICAgICAgaW50IHF1aXQgPSAhIG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9RVUlUX0lNTUVESUFURUxZKTsKKyAgICAgICAgcmV0ID0gbmV0c25tcF9kYWVtb25pemUocXVpdCwgc25tcF9zdGRlcnJsb2dfc3RhdHVzKCkpOworICAgICAgICAvKgorICAgICAgICAgKiB4eHgtcmtzOiBkbyB3ZSBjYXJlIGlmIGZvcmsgZmFpbHM/IEkgdGhpbmsgd2Ugc2hvdWxkLi4uCisgICAgICAgICAqLworICAgICAgICBpZihyZXQgIT0gMCkKKyAgICAgICAgICAgIEV4aXQoMSk7ICAgICAgICAgICAgICAgIC8qICBFeGl0IGxvZ3MgZXhpdCB2YWwgZm9yIHVzICAqLworICAgIH0KKwogI2lmIEhBVkVfR0VUUElECiAgICAgaWYgKHBpZF9maWxlICE9IE5VTEwpIHsKICAgICAgICAgLyoKQEAgLTk2NywyMCArOTcwLDE2IEBACiAjZW5kaWYKIAogI2lmIEhBVkVfVU5JU1REX0gKLSAgICB7Ci0gICAgY29uc3QgY2hhciAqY29uc3QgcGVyc2lzdGVudF9kaXIgPSBnZXRfcGVyc2lzdGVudF9kaXJlY3RvcnkoKTsKKyAgICBwZXJzaXN0ZW50X2RpciA9IGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpOwogICAgIG1rZGlyaGllciggcGVyc2lzdGVudF9kaXIsIE5FVFNOTVBfQUdFTlRfRElSRUNUT1JZX01PREUsIDAgKTsKLQorICAgCiAgICAgdWlkID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJICAgICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCk7CiAgICAgZ2lkID0gbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsIAogCQkJICAgICBORVRTTk1QX0RTX0FHRU5UX0dST1VQSUQpOwogICAgIAotI2lmZGVmIEhBVkVfQ0hPV04KICAgICBpZiAoIHVpZCAhPSAwIHx8IGdpZCAhPSAwICkKICAgICAgICAgY2hvd24oIHBlcnNpc3RlbnRfZGlyLCB1aWQsIGdpZCApOwotI2VuZGlmCi0gICAgfQogCiAjaWZkZWYgSEFWRV9TRVRHSUQKICAgICBpZiAoKGdpZCA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKQEAgLTEwMDIsNiArMTAwMSwyMyBAQAogI2lmZGVmIEhBVkVfU0VUVUlECiAgICAgaWYgKCh1aWQgPSBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCiAJCQkJICBORVRTTk1QX0RTX0FHRU5UX1VTRVJJRCkpID4gMCkgeworI2lmIEhBVkVfR0VUUFdOQU0gJiYgSEFWRV9QV0RfSCAmJiBIQVZFX0lOSVRHUk9VUFMKKyAgICAgICAgLyoKKyAgICAgICAgICogU2V0IHN1cHBsZW1lbnRhcnkgZ3JvdXBzIGJlZm9yZSBjaGFuZ2luZyBVSUQKKyAgICAgICAgICogICAod2hpY2ggcHJvYmFibHkgaW52b2x2ZXMgZ2l2aW5nIHVwIHByaXZpbGVnZXMpCisgICAgICAgICAqLworICAgICAgICBpbmZvID0gZ2V0cHd1aWQodWlkKTsKKyAgICAgICAgaWYgKGluZm8pIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9tYWluIiwgIlN1cHBsZW1lbnRhcnkgZ3JvdXBzIGZvciAlcy5cbiIsIGluZm8tPnB3X25hbWUpKTsKKyAgICAgICAgICAgIGlmIChpbml0Z3JvdXBzKGluZm8tPnB3X25hbWUsIChnaWQgIT0gMCA/IGdpZCA6IGluZm8tPnB3X2dpZCkpID09IC0xKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJpbml0Z3JvdXBzIGZhaWxlZCIpOworICAgICAgICAgICAgICAgIGlmICghbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9OT19ST09UX0FDQ0VTUykpIHsKKyAgICAgICAgICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBERUJVR01TR1RMKCgic25tcGQvbWFpbiIsICJDaGFuZ2luZyB1aWQgdG8gJWQuXG4iLCB1aWQpKTsKICAgICAgICAgaWYgKHNldHVpZCh1aWQpID09IC0xKSB7CiAgICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoInNldHVpZCBmYWlsZWQiKTsKQEAgLTExMTksMTMgKzExMzUsMTcgQEAKIHJlY2VpdmUodm9pZCkKIHsKICAgICBpbnQgICAgICAgICAgICAgbnVtZmRzOwotICAgIGZkX3NldCAgICAgICAgICByZWFkZmRzLCB3cml0ZWZkcywgZXhjZXB0ZmRzOworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IHJlYWRmZHMsIHdyaXRlZmRzLCBleGNlcHRmZHM7CiAgICAgc3RydWN0IHRpbWV2YWwgIHRpbWVvdXQsICp0dnAgPSAmdGltZW91dDsKICAgICBpbnQgICAgICAgICAgICAgY291bnQsIGJsb2NrLCBpOwogI2lmZGVmCVVTSU5HX1NNVVhfTU9EVUxFCiAgICAgaW50ICAgICAgICAgICAgIHNkOwogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0lOR19TTVVYX01PRFVMRSAqLwogCisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmcmVhZGZkcywgRkRfU0VUU0laRSk7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmd3JpdGVmZHMsIEZEX1NFVFNJWkUpOworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmV4Y2VwdGZkcywgRkRfU0VUU0laRSk7CisKICAgICAvKgogICAgICAqIGlnbm9yZSBlYXJseSBzaWdodXAgZHVyaW5nIHN0YXJ0dXAKICAgICAgKi8KQEAgLTExNjcsMTggKzExODcsMTggQEAKICAgICAgICAgdHZwLT50dl91c2VjID0gMDsKIAogICAgICAgICBudW1mZHMgPSAwOwotICAgICAgICBGRF9aRVJPKCZyZWFkZmRzKTsKLSAgICAgICAgRkRfWkVSTygmd3JpdGVmZHMpOwotICAgICAgICBGRF9aRVJPKCZleGNlcHRmZHMpOworICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oJnJlYWRmZHMpOworICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oJndyaXRlZmRzKTsKKyAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9aRVJPKCZleGNlcHRmZHMpOwogICAgICAgICBibG9jayA9IDA7Ci0gICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJnJlYWRmZHMsIHR2cCwgJmJsb2NrKTsKKyAgICAgICAgc25tcF9zZWxlY3RfaW5mbzIoJm51bWZkcywgJnJlYWRmZHMsIHR2cCwgJmJsb2NrKTsKICAgICAgICAgaWYgKGJsb2NrID09IDEpIHsKICAgICAgICAgICAgIHR2cCA9IE5VTEw7ICAgICAgICAgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCiAJfQogCiAjaWZkZWYJVVNJTkdfU01VWF9NT0RVTEUKICAgICAgICAgaWYgKHNtdXhfbGlzdGVuX3NkID49IDApIHsKLSAgICAgICAgICAgIEZEX1NFVChzbXV4X2xpc3Rlbl9zZCwgJnJlYWRmZHMpOworICAgICAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9TRVQoc211eF9saXN0ZW5fc2QsICZyZWFkZmRzKTsKICAgICAgICAgICAgIG51bWZkcyA9CiAgICAgICAgICAgICAgICAgc211eF9saXN0ZW5fc2QgPj0gbnVtZmRzID8gc211eF9saXN0ZW5fc2QgKyAxIDogbnVtZmRzOwogCkBAIC0xMTg2LDE0ICsxMjA2LDE0IEBACiAgICAgICAgICAgICAgICAgc2QgPSBzbXV4X3NubXBfc2VsZWN0X2xpc3RfZ2V0X1NEX2Zyb21fTGlzdChpKTsKICAgICAgICAgICAgICAgICBpZiAoc2QgIT0gMCkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgRkRfU0VUKHNkLCAmcmVhZGZkcyk7CisgICAgICAgICAgICAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9TRVQoc2QsICZyZWFkZmRzKTsKICAgICAgICAgICAgICAgICAgICBudW1mZHMgPSBzZCA+PSBudW1mZHMgPyBzZCArIDEgOiBudW1mZHM7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFVTSU5HX1NNVVhfTU9EVUxFICovCiAKLSAgICAgICAgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvKCZudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMpOworICAgICAgICBuZXRzbm1wX2V4dGVybmFsX2V2ZW50X2luZm8yKCZudW1mZHMsICZyZWFkZmRzLCAmd3JpdGVmZHMsICZleGNlcHRmZHMpOwogCiAgICAgcmVzZWxlY3Q6CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBOVU1fRVhURVJOQUxfU0lHUzsgaSsrKSB7CkBAIC0xMjA3LDcgKzEyMjcsNyBAQAogICAgICAgICAgICAgICAgICAgICBudW1mZHMsIHR2cCkpOwogICAgICAgICBpZih0dnApCiAgICAgICAgICAgICBERUJVR01TR1RMKCgidGltZXIiLCAidHZwICVsZC4lbGRcbiIsIHR2cC0+dHZfc2VjLCB0dnAtPnR2X3VzZWMpKTsKLSAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzLCB0dnApOworICAgICAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsIHJlYWRmZHMubGZzX3NldHB0ciwgd3JpdGVmZHMubGZzX3NldHB0ciwgZXhjZXB0ZmRzLmxmc19zZXRwdHIsIHR2cCk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wZC9zZWxlY3QiLCAicmV0dXJuZWQsIGNvdW50ID0gJWRcbiIsIGNvdW50KSk7CiAKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewpAQCAtMTIxOSw3ICsxMjM5LDcgQEAKICAgICAgICAgICAgIGlmIChzbXV4X2xpc3Rlbl9zZCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHNtdXhfc25tcF9zZWxlY3RfbGlzdF9nZXRfbGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICAgICAgICAgICBzZCA9IHNtdXhfc25tcF9zZWxlY3RfbGlzdF9nZXRfU0RfZnJvbV9MaXN0KGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQoc2QsICZyZWFkZmRzKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChzZCwgJnJlYWRmZHMpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc211eF9wcm9jZXNzKHNkKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbXV4X3NubXBfc2VsZWN0X2xpc3RfZGVsKHNkKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMjgsNyArMTI0OCw3IEBACiAgICAgICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAgICAgKiBuZXcgY29ubmVjdGlvbiAKICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBpZiAoRkRfSVNTRVQoc211eF9saXN0ZW5fc2QsICZyZWFkZmRzKSkgeworICAgICAgICAgICAgICAgIGlmIChORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKHNtdXhfbGlzdGVuX3NkLCAmcmVhZGZkcykpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChzZCA9IHNtdXhfYWNjZXB0KHNtdXhfbGlzdGVuX3NkKSkgPj0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgc211eF9zbm1wX3NlbGVjdF9saXN0X2FkZChzZCk7CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTEyMzYsMTEgKzEyNTYsMTEgQEAKICAgICAgICAgICAgIH0KIAogI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBVU0lOR19TTVVYX01PRFVMRSAqLwotICAgICAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMoJmNvdW50LCAmcmVhZGZkcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmd3JpdGVmZHMsICZleGNlcHRmZHMpOworICAgICAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMyKCZjb3VudCwgJnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJndyaXRlZmRzLCAmZXhjZXB0ZmRzKTsKICAgICAgICAgICAgIC8qIElmIHRoZXJlIGFyZSBzdGlsbCBldmVudHMgbGVmdG92ZXIsIHByb2Nlc3MgdGhlbSAqLwogICAgICAgICAgICAgaWYgKGNvdW50ID4gMCkgewotICAgICAgICAgICAgICBzbm1wX3JlYWQoJnJlYWRmZHMpOworICAgICAgICAgICAgICBzbm1wX3JlYWQyKCZyZWFkZmRzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7CkBAIC0xMjc2LDYgKzEyOTYsMTAgQEAKIAogICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmR3aGlsZSAqLwogCisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmcmVhZGZkcyk7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmd3JpdGVmZHMpOworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmV4Y2VwdGZkcyk7CisKICNpZiBkZWZpbmVkKFdJTjMyKQogICAgIGpvaW5fc3RkaW5fd2FpdGVyX3RocmVhZCgpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9hZ2VudC9zbm1wZC5oIGIvYWdlbnQvc25tcGQuaAppbmRleCA5MzVjMGU3Li44OWJjZDMxIDEwMDY0NAotLS0gYS9hZ2VudC9zbm1wZC5oCisrKyBiL2FnZW50L3NubXBkLmgKQEAgLTIsNiArMiwxMCBAQAogICogc25tcGQuaAogICovCiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKwogI2RlZmluZSBNQVNURVJfQUdFTlQgMAogI2RlZmluZSBTVUJfQUdFTlQgICAgMQogZXh0ZXJuIGludCAgICAgIGFnZW50X3JvbGU7CkBAIC0xNywzICsyMSw3IEBACiAgKiBjb25maWcgZmlsZSBwYXJzaW5nIHJvdXRpbmVzIAogICovCiB2b2lkICAgICAgICAgICAgYWdlbnRCb290c19jb25mKGNoYXIgKiwgY2hhciAqKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL2FwcHMvTWFrZWZpbGUuZGVwZW5kIGIvYXBwcy9NYWtlZmlsZS5kZXBlbmQKaW5kZXggYjkyNzZlOC4uNjFhN2E2OSAxMDA2NDQKLS0tIGEvYXBwcy9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYXBwcy9NYWtlZmlsZS5kZXBlbmQKQEAgLTgsMzIgKzgsMTQgQEAKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NCwxMSArMjYsMzEgQEAKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2VuY29kZV9rZXljaGFuZ2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9lbmNvZGVfa2V5Y2hhbmdlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vZW5jb2RlX2tleWNoYW5nZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNzEsMjIgKzczLDQwIEBACiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtOTgsMjEgKzExOCw3IEBACiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wYnVsa2dldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcGJ1bGtnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBidWxrZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xMzgsMzIgKzE0NCwxNCBAQAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTc0LDExICsxNjIsMzEgQEAKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wYnVsa3dhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBidWxrd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcGJ1bGt3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yMDMsMzIgKzIxMSwxNCBAQAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMzksMTAgKzIyOSwzMSBAQAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wZGVsdGEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBkZWx0YS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcGRlbHRhLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNjcsMzEgKzI3OCwxMyBAQAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zMDIsMTEgKzI5NSwzMCBAQAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcGRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBkZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wZGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtMzI4LDIzICszNDAsMzggQEAKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMzU2LDIxICszODMsNyBAQAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcGdldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBnZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wZ2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0zOTYsMzIgKzQwOSwxNCBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MzIsMTAgKzQyNywzMSBAQAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wZ2V0bmV4dC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcGdldG5leHQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBnZXRuZXh0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00NjAsMzEgKzQ3NiwxNCBAQAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTQ5NSwxMSArNDk0LDMwIEBACiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHNldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCiAuL3NubXBzZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtNTIxLDIzICs1MzksMzkgQEAKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtNTQ5LDIxICs1ODMsNyBAQAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHN0YXR1cy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBzdGF0dXMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wc3RhdHVzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC01ODgsMzIgKzYwOCwxNCBAQAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC02MjQsMTAgKzYyNiwzMSBAQAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wdGFibGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0YWJsZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHRhYmxlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC02NTIsMzIgKzY3NSwxNCBAQAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTY4OCwxMSArNjkzLDMxIEBACiAuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0ZXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdGVzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc25tcHRlc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtNzE2LDIxICs3NDEsMzggQEAKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTc0OSwxMCArNzkxLDYgQEAKIC4vc25tcHRyYW5zbGF0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAogLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXB0cmFuc2xhdGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhbnNsYXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTc2MCwzMiArNzk4LDE0IEBACiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNzk2LDExICs4MTYsMzEgQEAKIC4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHRyYXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC04MTcsNiArODU3LDc5IEBACiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wdHJhcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXB0cmFwLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogc25tcHRyYXBkX2hhbmRsZXJzLmggc25tcHRyYXBkX2F1dGguaCBzbm1wdHJhcGRfZHMuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9tb2R1bGVfY29uZmlnLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaAorLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vYWdlbnQvbWliZ3JvdXAvbWliSUkvdmFjbV9jb25mLmgKKy4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTgyNCwzMiArOTM3LDE0IEBACiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTg2MCwxMCArOTU1LDMxIEBACiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB0cmFwZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wdHJhcGQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTkyMCw3NyArMTAzNiw2IEBACiAuL3NubXB0cmFwZC5sbzogc25tcHRyYXBkX2xvZy5oIHNubXB0cmFwZF9kcy5oIHNubXB0cmFwZF9hdXRoLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9ub3RpZmljYXRpb24tbG9nLW1pYi9ub3RpZmljYXRpb25fbG9nLmgKIC4vc25tcHRyYXBkLmxvOiAuLi9hZ2VudC9taWJncm91cC9taWJJSS92YWNtX2NvbmYuaCAuLi9hZ2VudC9zbm1wX3BlcmwuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9zbm1wdHJhcGRfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IHNubXB0cmFwZF9oYW5kbGVycy5oIHNubXB0cmFwZF9hdXRoLmggc25tcHRyYXBkX2RzLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfbW9kdWxlX2NvbmZpZy5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKLS4vc25tcHRyYXBkX2F1dGgubG86IC4uL2FnZW50L21pYmdyb3VwL21pYklJL3ZhY21fY29uZi5oCi0uL3NubXB0cmFwZF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC05OTgsOSArMTA0MywyOSBAQAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xMDEwLDE1ICsxMDc1LDggQEAKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCkBAIC0xMDM2LDE4ICsxMDk0LDcgQEAKIC4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcHRyYXBkX2hhbmRsZXJzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAogLi9zbm1wdHJhcGRfaGFuZGxlcnMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCiAuL3NubXB0cmFwZF9oYW5kbGVycy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKQEAgLTExMDUsMzIgKzExNTIsMTQgQEAKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMTQxLDExICsxMTcwLDMxIEBACiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXB0cmFwZF9sb2cubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTExNjQsNiArMTIxMywxMSBAQAogLi9zbm1wdHJhcGRfbG9nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBzbm1wdHJhcGRfbG9nLmgKIC4vc25tcHRyYXBkX2xvZy5sbzogc25tcHRyYXBkX2RzLmgKKy4vc25tcHRyYXBkX3NxbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wdHJhcGRfc3FsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXB0cmFwZF9zcWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wdHJhcGRfc3FsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc25tcHRyYXBkX3NxbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xMTcxLDMxICsxMjI1LDE0IEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaCAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTIwNiwxMSArMTI0MywzMCBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKQEAgLTEyMzQsMzIgKzEyOTAsMTQgQEAKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMjcwLDExICsxMzA4LDMxIEBACiAuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB2YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaCAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc25tcHZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaApAQCAtMTI5OCwzMiArMTM1NiwxNCBAQAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTEzMzQsMTEgKzEzNzQsMzEgQEAKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9zbm1wd2Fsay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC0xMzU1LDYgKzE0MTUsMTEgQEAKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXB3YWxrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcHdhbGsubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc3NodG9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NzaHRvc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9zc2h0b3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zc2h0b3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9zc2h0b3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTM2MywzMiArMTQyOCwxNCBAQAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xMzk5LDExICsxNDQ2LDMxIEBACiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wbmV0c3RhdC9pZi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNDIzLDczICsxNDkwLDYgQEAKIC4vc25tcG5ldHN0YXQvaWYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcG5ldHN0YXQvaWYubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oCiAuL3NubXBuZXRzdGF0L2lmLmxvOiAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTQ5OCwzMiArMTQ5OCwxNCBAQAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNTM0LDExICsxNTE2LDMxIEBACiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBuZXRzdGF0L2luZXQ2LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNTU3LDYgKzE1NTksNzUgQEAKIC4vc25tcG5ldHN0YXQvaW5ldDYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9zbm1wbmV0c3RhdC9pbmV0Ni5sbzogLi9zbm1wbmV0c3RhdC9tYWluLmggLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc25tcHYzX2FwaS5oCisuL3NubXBuZXRzdGF0L2luZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcG5ldHN0YXQvaW5ldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wbmV0c3RhdC9pbmV0LmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xNTY1LDMyICsxNjM2LDE0IEBACiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTYwMSwxMSArMTY1NCwzMSBAQAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBuZXRzdGF0L21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNjIzLDggKzE2OTYsNyBAQAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaAotLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAorLi9zbm1wbmV0c3RhdC9tYWluLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaCAuL3NubXBuZXRzdGF0L25ldHN0YXQuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC0xNjMzLDMyICsxNzA1LDE0IEBACiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE2NjksMTEgKzE3MjMsMzEgQEAKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvcm91dGUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE2OTEsOCArMTc2NSw3IEBACiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAogLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCi0uL3NubXBuZXRzdGF0L3JvdXRlLmxvOiAuL3NubXBuZXRzdGF0L21haW4uaAotLi9zbm1wbmV0c3RhdC9yb3V0ZS5sbzogLi9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKy4vc25tcG5ldHN0YXQvcm91dGUubG86IC4vc25tcG5ldHN0YXQvbWFpbi5oIC4vc25tcG5ldHN0YXQvbmV0c3RhdC5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTE3MDEsMzIgKzE3NzQsMTQgQEAKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNzM3LDExICsxNzkyLDMxIEBACiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wbmV0c3RhdC93aW5zdHViLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcG5ldHN0YXQvd2luc3R1Yi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3NubXBuZXRzdGF0L3dpbnN0dWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKZGlmZiAtLWdpdCBhL2FwcHMvTWFrZWZpbGUuaW4gYi9hcHBzL01ha2VmaWxlLmluCmluZGV4IDE4MWQzZmYuLmI4NDcwNzMgMTAwNjQ0Ci0tLSBhL2FwcHMvTWFrZWZpbGUuaW4KKysrIGIvYXBwcy9NYWtlZmlsZS5pbgpAQCAtMTcsNiArMTcsOCBAQAogIyBUaGluZ3MgdG8gaW5zdGFsbAogIwogCitTU0hJTlNUQUxMQklOUFJPR1MgPSBAU1NISU5TVEFMTEJJTlBST0dTQAorCiBJTlNUQUxMQklOUFJPR1MJPSBzbm1wZ2V0JChFWEVFWFQpIAkJCVwKIAkJc25tcGdldG5leHQkKEVYRUVYVCkgCQkJXAogCQlzbm1wc2V0JChFWEVFWFQpIAkJCVwKQEAgLTMyLDcgKzM0LDggQEAKIAkJc25tcHRlc3QkKEVYRUVYVCkJCQlcCiAJCWVuY29kZV9rZXljaGFuZ2UkKEVYRUVYVCkgCQlcCiAJCXNubXBkZiQoRVhFRVhUKSAJCQlcCi0JCXNubXB2YWNtJChFWEVFWFQpCisJCXNubXB2YWNtJChFWEVFWFQpICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgJChTU0hJTlNUQUxMQklOUFJPR1MpCiAKIElOU1RBTExTQklOUFJPR1MgPSBzbm1wdHJhcGQkKEVYRUVYVCkKIApAQCAtNTAsNiArNTMsOCBAQAogQUdFTlRMSUIgICAgICAgID0gLi4vYWdlbnQvbGlibmV0c25tcGFnZW50LiQoTElCX0VYVEVOU0lPTikkKExJQl9WRVJTSU9OKQogTUlCTElCICAgICAgICAgID0gLi4vYWdlbnQvbGlibmV0c25tcG1pYnMuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pCiBVU0VBR0VOVExJQlMJPSAkKE1JQkxJQikgJChBR0VOVExJQikgJChIRUxQRVJMSUIpICQoVVNFTElCUykKK01ZU1FMX0xJQlMJPSBATVlTUUxfTElCU0AKK01ZU1FMX0lOQ0xVREVTCT0gQE1ZU1FMX0lOQ0xVREVTQAogCiBMSUJTCQk9ICQoVVNFTElCUykgQExJQlNACiBQRVJMTERPUFRTX0ZPUl9BUFBTID0gQFBFUkxMRE9QVFNfRk9SX0FQUFNACkBAIC01NywyMiArNjIsMjMgQEAKIAogIwogIyBoYWNrIGZvciBjb21waWxpbmcgdHJhcGQgd2hlbiBhZ2VudCBpcyBkaXNhYmxlZAotVFJBUERXSVRIQUdFTlQgID0gJChVU0VUUkFQTElCUykgQEFHRU5UTElCU0AKLVRSQVBEV0lUSE9VVEFHRU5UID0gJChMSUJTKQorVFJBUERXSVRIQUdFTlQgID0gJChVU0VUUkFQTElCUykgJChNWVNRTF9MSUJTKSBAQUdFTlRMSUJTQAorVFJBUERXSVRIT1VUQUdFTlQgPSAkKExJQlMpICQoTVlTUUxfTElCUykKIAogIyB0aGVzZSB3aWxsIGJlIHNldCBieSBjb25maWd1cmUgdG8gb25lIG9mIHRoZSBhYm92ZSAyIGxpbmVzCiBUUkFQTElCUwk9IEBUUkFQTElCU0AgJChQRVJMTERPUFRTX0ZPUl9BUFBTKQogVVNFVFJBUExJQlMJPSBAVVNFVFJBUExJQlNACiAKIENQUEZMQUdTCT0gJChUT1BfSU5DTFVERVMpIC1JLiAkKEFHRU5UX0lOQ0xVREVTKSAkKEhFTFBFUl9JTkNMVURFUykgXAotCQkgICQoTUlCR1JPVVBfSU5DTFVERVMpICAkKFNOTVBMSUJfSU5DTFVERVMpIEBDUFBGTEFHU0AKKwkJICAkKE1JQkdST1VQX0lOQ0xVREVTKSAgXAorCQkgICQoU05NUExJQl9JTkNMVURFUykgJChNWVNRTF9JTkNMVURFUykgQENQUEZMQUdTQAogCiBPU1VGRklYCQk9IGxvCiBUUkFQRF9PQkpFQ1RTICAgPSBzbm1wdHJhcGQuJChPU1VGRklYKSBAb3RoZXJfdHJhcGRfb2JqZWN0c0AKIExJQlRSQVBEX09CSlMgICA9IHNubXB0cmFwZF9oYW5kbGVycy5vICBzbm1wdHJhcGRfbG9nLm8gXAotCQkgIHNubXB0cmFwZF9hdXRoLm8KKwkJICBzbm1wdHJhcGRfYXV0aC5vIHNubXB0cmFwZF9zcWwubwogTExJQlRSQVBEX09CSlMgID0gc25tcHRyYXBkX2hhbmRsZXJzLmxvIHNubXB0cmFwZF9sb2cubG8gXAotCQkgIHNubXB0cmFwZF9hdXRoLmxvCisJCSAgc25tcHRyYXBkX2F1dGgubG8gc25tcHRyYXBkX3NxbC5sbwogT0JKUyAgPSAqLm8KIExPQkpTID0gKi5sbwogCkBAIC0xNTgsNSArMTY0LDkgQEAKIAkgIEBybSAtZiAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikvc25tcF9wZXJsX3RyYXBkLnBsCiAJICBAZWNobyAicmVtb3ZlZCBzbm1wX3BlcmxfdHJhcGQucGwgZnJvbSAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikiCiAKK3NzaHRvc25tcDogc3NodG9zbm1wLiQoT1NVRkZJWCkKKwkkKExJTkspICR7Q0ZMQUdTfSAtbyAkQCBzc2h0b3NubXAuJChPU1VGRklYKQorCisKIGluc3RhbGxkaXJzOgogCUAkKFNIRUxMKSAkKHNyY2RpcikvLi4vbWtpbnN0YWxsZGlycyAkKElOU1RBTExfUFJFRklYKSQoc25tcGxpYmRpcikKZGlmZiAtLWdpdCBhL2FwcHMvZW5jb2RlX2tleWNoYW5nZS5jIGIvYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKaW5kZXggNWI2ODM4ZS4uOTQ0MTcyMyAxMDA2NDQKLS0tIGEvYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKKysrIGIvYXBwcy9lbmNvZGVfa2V5Y2hhbmdlLmMKQEAgLTIzMyw4ICsyMzMsOCBAQAogICAgICAgICBlbmdpbmVpZF9sZW4gPSBoZXhfdG9fYmluYXJ5MihlbmdpbmVpZCArIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmxlbigoY2hhciAqKSBlbmdpbmVpZCkgLSAyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKikgJmVuZ2luZWlkKTsKLSAgICAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZW5naW5lSURMZW46ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICBlbmdpbmVpZF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZW5naW5lSURMZW46ICVsdVxuIiwKKyAgICAgICAgICAgICAgICAgICAgKHVuc2lnbmVkIGxvbmcpZW5naW5laWRfbGVuKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZW5naW5laWRfbGVuID0gc2V0dXBfZW5naW5lSUQoJmVuZ2luZWlkLCAoY2hhciAqKSBlbmdpbmVpZCk7CiAKQEAgLTI5NSwxMiArMjk1LDEyIEBACiAgICAgUVVJVEZVTihydmFsLCBtYWluX3F1aXQpOwogCiAKLSAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJFSUQgKCVkKTogIiwgZW5naW5laWRfbGVuKSk7CisgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiRUlEICglbHUpOiAiLCAodW5zaWduZWQgbG9uZyllbmdpbmVpZF9sZW4pKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgZW5naW5laWRfbGVuOyBpKyspCiAgICAgICAgIERFQlVHTVNHVEwoKCJlbmNvZGVfa2V5Y2hhbmdlIiwgIiUwMngiLCAoaW50KSAoZW5naW5laWRbaV0pKSk7CiAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiXG4iKSk7CiAKLSAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJvbGQgS3UgKCVkKSAoZnJvbSAlcyk6ICIsIG9sZEt1X2xlbiwKKyAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJvbGQgS3UgKCVsdSkgKGZyb20gJXMpOiAiLCAodW5zaWduZWQgbG9uZylvbGRLdV9sZW4sCiAgICAgICAgICAgICAgICAgb2xkcGFzcykpOwogICAgIGZvciAoaSA9IDA7IGkgPCAoaW50KSBvbGRLdV9sZW47IGkrKykKICAgICAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiJTAyeCIsIChpbnQpIChvbGRLdVtpXSkpKTsKQEAgLTMxMiw4ICszMTIsOCBAQAogICAgIFFVSVRGVU4ocnZhbCwgbWFpbl9xdWl0KTsKIAogCi0gICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZ2VuZXJhdGluZyBvbGQgS3VsICglZCkgKGZyb20gS3UpOiAiLAotICAgICAgICAgICAgICAgIG9sZGt1bF9sZW4pKTsKKyAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJnZW5lcmF0aW5nIG9sZCBLdWwgKCVsdSkgKGZyb20gS3UpOiAiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW9sZGt1bF9sZW4pKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgb2xka3VsX2xlbjsgaSsrKQogICAgICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICIlMDJ4IiwgKGludCkgKG9sZGt1bFtpXSkpKTsKICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJcbiIpKTsKQEAgLTMyMyw4ICszMjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmV3S3UsIG5ld0t1X2xlbiwgbmV3a3VsLCAmbmV3a3VsX2xlbik7CiAgICAgUVVJVEZVTihydmFsLCBtYWluX3F1aXQpOwogCi0gICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiZ2VuZXJhdGluZyBuZXcgS3VsICglZCkgKGZyb20gS3UpOiAiLAotICAgICAgICAgICAgICAgIG9sZGt1bF9sZW4pKTsKKyAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICJnZW5lcmF0aW5nIG5ldyBLdWwgKCVsdSkgKGZyb20gS3UpOiAiLAorICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW9sZGt1bF9sZW4pKTsKICAgICBmb3IgKGkgPSAwOyBpIDwgKGludCkgbmV3a3VsX2xlbjsgaSsrKQogICAgICAgICBERUJVR01TR1RMKCgiZW5jb2RlX2tleWNoYW5nZSIsICIlMDJ4IiwgbmV3a3VsW2ldKSk7CiAgICAgREVCVUdNU0dUTCgoImVuY29kZV9rZXljaGFuZ2UiLCAiXG4iKSk7CmRpZmYgLS1naXQgYS9hcHBzL3NubXBkZWx0YS5jIGIvYXBwcy9zbm1wZGVsdGEuYwppbmRleCA0ZjI4ZjQ3Li43Mzg4ZWM3IDEwMDY0NAotLS0gYS9hcHBzL3NubXBkZWx0YS5jCisrKyBiL2FwcHMvc25tcGRlbHRhLmMKQEAgLTM1Nyw3ICszNTcsNyBAQAogICAgIH0KICAgICBjb3VudCA9IDE7CiAgICAgd2hpbGUgKGNvdW50ICE9IDApIHsKLSAgICAgICAgY291bnQgPSBzZWxlY3QoMCwgMCwgMCwgMCwgdHYpOworICAgICAgICBjb3VudCA9IHNlbGVjdCgwLCBOVUxMLCBOVUxMLCBOVUxMLCB0dik7CiAgICAgICAgIHN3aXRjaCAoY291bnQpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgYnJlYWs7CkBAIC00MzksNyArNDM5LDcgQEAKIAkgICAgCU1BWF9BUkdTKTsKIAkgICAgZXhpdCgxKTsKIAl9Ci0gICAgICAgIHZhcmluZm9bY3VycmVudF9uYW1lKytdLm5hbWUgPSAwOworICAgICAgICB2YXJpbmZvW2N1cnJlbnRfbmFtZSsrXS5uYW1lID0gTlVMTDsKICAgICB9CiAKICAgICBTT0NLX1NUQVJUVVA7CkBAIC03MzEsMTIgKzczMSwxMiBAQAogCiAgICAgICAgIH0gZWxzZSBpZiAoc3RhdHVzID09IFNUQVRfVElNRU9VVCkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJUaW1lb3V0OiBObyBSZXNwb25zZSBmcm9tICVzXG4iLCBnYXRld2F5KTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gMDsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gTlVMTDsKICAgICAgICAgICAgIGV4aXRfY29kZSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyogc3RhdHVzID09IFNUQVRfRVJST1IgKi8KICAgICAgICAgICAgIHNubXBfc2Vzc19wZXJyb3IoInNubXBkZWx0YSIsIHNzKTsKLSAgICAgICAgICAgIHJlc3BvbnNlID0gMDsKKyAgICAgICAgICAgIHJlc3BvbnNlID0gTlVMTDsKICAgICAgICAgICAgIGV4aXRfY29kZSA9IDE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wZ2V0LmMgYi9hcHBzL3NubXBnZXQuYwppbmRleCAxMGE2OTY4Li4zM2Q1ZDcxIDEwMDY0NAotLS0gYS9hcHBzL3NubXBnZXQuYworKysgYi9hcHBzL3NubXBnZXQuYwpAQCAtMTI2LDYgKzEyNiw3IEBACiAgICAgaW50ICAgICAgICAgICAgIGZhaWx1cmVzID0gMDsKICAgICBpbnQgICAgICAgICAgICAgZXhpdHZhbCA9IDA7CiAKKwogICAgIC8qCiAgICAgICogZ2V0IHRoZSBjb21tb24gY29tbWFuZCBsaW5lIGFyZ3VtZW50cyAKICAgICAgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuZGVwZW5kIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKaW5kZXggYjA1MzYxYS4uYTMyOTYzNCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmQKQEAgLTcsMzIgKzcsMTQgQEAKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00MywxMSArMjUsMzEgQEAKIC4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAotLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaWYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2lmLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCkBAIC02Niw3MSArNjgsNiBAQAogLi9pZi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9pZi5sbzogbWFpbi5oCiAuL2lmLmxvOiBuZXRzdGF0LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKLS4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAotLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTM5LDMyICs3NiwxNCBAQAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0xNzUsMTAgKzk0LDMxIEBACiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9pbmV0Ni5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTE5Niw2ICsxMzYsNzQgQEAKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL2luZXQ2LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKIC4vaW5ldDYubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmggbWFpbi5oIG5ldHN0YXQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vaW5ldC5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2luZXQubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9pbmV0LmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIG1haW4uaCBuZXRzdGF0LmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMjA0LDMyICsyMTIsMTQgQEAKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yNDAsMTAgKzIzMCwzMSBAQAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9tYWluLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yNjEsOCArMjcyLDcgQEAKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vbWFpbi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL21haW4ubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKLS4vbWFpbi5sbzogbWFpbi5oCi0uL21haW4ubG86IG5ldHN0YXQuaAorLi9tYWluLmxvOiBtYWluLmggbmV0c3RhdC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKQEAgLTI3MSwzMiArMjgxLDE0IEBACiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMwNywxMCArMjk5LDMxIEBACiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3JvdXRlLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTMyOCw4ICszNDEsNyBAQAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKIC4vcm91dGUubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9yb3V0ZS5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9yb3V0ZS5sbzogbWFpbi5oCi0uL3JvdXRlLmxvOiBuZXRzdGF0LmgKKy4vcm91dGUubG86IG1haW4uaCBuZXRzdGF0LmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMzM4LDMyICszNTAsMTQgQEAKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zNzQsMTEgKzM2OCwzMSBAQAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vd2luc3R1Yi5sbzogLi4vLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3dpbnN0dWIubG86IC4uLy4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi93aW5zdHViLmxvOiAuLi8uLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2lmLmMgYi9hcHBzL3NubXBuZXRzdGF0L2lmLmMKaW5kZXggYzg5M2FmZC4uYjA3MzY0MyAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9pZi5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaWYuYwpAQCAtNDksOCArNDksMTIgQEAKICNpZiBIQVZFX05FVF9JRl9ICiAjaW5jbHVkZSA8bmV0L2lmLmg+CiAjZW5kaWYKLSNkZWZpbmUgX19VU0VfWE9QRU4KLSNkZWZpbmUgX19VU0VfWE9QRU5fRVhURU5ERUQKKyNpZm5kZWYgX1hPUEVOX1NPVVJDRQorI2RlZmluZSBfWE9QRU5fU09VUkNFIDEKKyNlbmRpZgorI2lmbmRlZiBfWE9QRU5fU09VUkNFX0VYVEVOREVECisjZGVmaW5lIF9YT1BFTl9TT1VSQ0VfRVhURU5ERUQgMQorI2VuZGlmCiAjaW5jbHVkZSA8c2lnbmFsLmg+CiAKICNpbmNsdWRlICJtYWluLmgiCmRpZmYgLS1naXQgYS9hcHBzL3NubXBuZXRzdGF0L2luZXQuYyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCmluZGV4IDdkYzNmZjEuLmE2OWZiNWIgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCisrKyBiL2FwcHMvc25tcG5ldHN0YXQvaW5ldC5jCkBAIC0xMDYsMjAgKzEwNiw2NSBAQAogfTsKICNkZWZpbmUgVENQX05TVEFURVMgMTEKIAotdm9pZAotdGNwcHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQorc3RhdGljIHZvaWQKK3RjcHByb3RvcHJpbnRfbGluZShjb25zdCBjaGFyICpuYW1lLCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZwLCBpbnQgKmZpcnN0KQogewotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyLCAqdnA7Ci0gICAgb2lkICAgIHRjcENvbm5TdGF0ZV9vaWRbXSA9IHsgMSwzLDYsMSwyLDEsNiwxMywxLDEgfTsKLSAgICBzaXplX3QgdGNwQ29ublN0YXRlX2xlbiAgID0gT0lEX0xFTkdUSCggdGNwQ29ublN0YXRlX29pZCApOwogICAgIGludCAgICBzdGF0ZSwgd2lkdGg7CisgICAgY2hhciAgKmNwOwogICAgIHVuaW9uIHsKICAgICAgICAgc3RydWN0IGluX2FkZHIgYWRkcjsKICAgICAgICAgY2hhciAgICAgIGRhdGFbNF07CiAgICAgfSB0bXBBZGRyOwogICAgIG9pZCAgICBsb2NhbFBvcnQsIHJlbW90ZVBvcnQ7CiAgICAgc3RydWN0IGluX2FkZHIgbG9jYWxBZGRyLCByZW1vdGVBZGRyOwotICAgIGNoYXIgICpjcDsKKworCXN0YXRlID0gKnZwLT52YWwuaW50ZWdlcjsKKwlpZiAoIWFmbGFnICYmIHN0YXRlID09IE1JQl9UQ1BDT05OU1RBVEVfTElTVEVOKSB7CisJCXJldHVybjsKKwl9CisKKwlpZiAoKmZpcnN0KSB7CisJCXByaW50ZigiQWN0aXZlIEludGVybmV0ICglcykgQ29ubmVjdGlvbnMiLCBuYW1lKTsKKwkJaWYgKGFmbGFnKQorCQkJcHJpbnRmKCIgKGluY2x1ZGluZyBzZXJ2ZXJzKSIpOworCQlwdXRjaGFyKCdcbicpOworCQl3aWR0aCA9IEFmbGFnID8gMTggOiAyMjsKKwkJcHJpbnRmKCIlLTUuNXMgJSouKnMgJSouKnMgJXNcbiIsCisJCQkgICAiUHJvdG8iLCAtd2lkdGgsIHdpZHRoLCAiTG9jYWwgQWRkcmVzcyIsCisJCQkJCQktd2lkdGgsIHdpZHRoLCAiUmVtb3RlIEFkZHJlc3MiLCAiKHN0YXRlKSIpOworCQkqZmlyc3QgPSAwOworCX0KKwkKKwkvKiBFeHRyYWN0IHRoZSBsb2NhbC9yZW1vdGUgaW5mb3JtYXRpb24gZnJvbSB0aGUgaW5kZXggdmFsdWVzICovCisJY3AgPSB0bXBBZGRyLmRhdGE7CisJY3BbMF0gPSB2cC0+bmFtZVsgMTAgXSAmIDB4ZmY7CisJY3BbMV0gPSB2cC0+bmFtZVsgMTEgXSAmIDB4ZmY7CisJY3BbMl0gPSB2cC0+bmFtZVsgMTIgXSAmIDB4ZmY7CisJY3BbM10gPSB2cC0+bmFtZVsgMTMgXSAmIDB4ZmY7CisJbG9jYWxBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7CisJbG9jYWxQb3J0ICAgICAgICA9IG50b2hzKHZwLT5uYW1lWyAxNCBdKTsKKwljcCA9IHRtcEFkZHIuZGF0YTsKKwljcFswXSA9IHZwLT5uYW1lWyAxNSBdICYgMHhmZjsKKwljcFsxXSA9IHZwLT5uYW1lWyAxNiBdICYgMHhmZjsKKwljcFsyXSA9IHZwLT5uYW1lWyAxNyBdICYgMHhmZjsKKwljcFszXSA9IHZwLT5uYW1lWyAxOCBdICYgMHhmZjsKKwlyZW1vdGVBZGRyLnNfYWRkciA9IHRtcEFkZHIuYWRkci5zX2FkZHI7CisJcmVtb3RlUG9ydCAgICAgICAgPSBudG9ocyh2cC0+bmFtZVsgMTkgXSk7CisKKwlwcmludGYoIiUtNS41cyIsIG5hbWUpOworCWluZXRwcmludCgmbG9jYWxBZGRyLCAgbG9jYWxQb3J0LCAgbmFtZSwgMSk7CisJaW5ldHByaW50KCZyZW1vdGVBZGRyLCByZW1vdGVQb3J0LCBuYW1lLCAwKTsKKwlpZiAoc3RhdGUgPCAxIHx8IHN0YXRlID4gVENQX05TVEFURVMpIHsKKwkJcHJpbnRmKCIlZFxuIiwgc3RhdGUgKTsKKwl9IGVsc2UgeworCQlwcmludGYoIiVzXG4iLCB0Y3BzdGF0ZXNbc3RhdGVdKTsKKwl9Cit9CisKK3N0YXRpYyB2b2lkCit0Y3Bwcm90b3ByX2dldChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJvb3QsIHNpemVfdCByb290X2xlbikKK3sKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgKnZwOwogICAgIGludCAgICBmaXJzdCA9IDE7CiAKICAgICAvKgpAQCAtMTI3LDcgKzE3Miw3IEBACiAgICAgICogICB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uLgogICAgICAqLwogICAgIHZhciA9IE5VTEw7Ci0gICAgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSggJnZhciwgdGNwQ29ublN0YXRlX29pZCwgdGNwQ29ublN0YXRlX2xlbiwKKyAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKCAmdmFyLCByb290LCByb290X2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX05VTEwsIE5VTEwsICAwKTsKICAgICBpZiAoIXZhcikKICAgICAgICAgcmV0dXJuOwpAQCAtMTM1LDQ1ICsxODAsNyBAQAogICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKHZwID0gdmFyOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7Ci0gICAgICAgIHN0YXRlID0gKnZwLT52YWwuaW50ZWdlcjsKLSAgICAgICAgaWYgKCFhZmxhZyAmJiBzdGF0ZSA9PSBNSUJfVENQQ09OTlNUQVRFX0xJU1RFTikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGlmIChmaXJzdCkgewotICAgICAgICAgICAgcHJpbnRmKCJBY3RpdmUgSW50ZXJuZXQgKCVzKSBDb25uZWN0aW9ucyIsIG5hbWUpOwotICAgICAgICAgICAgaWYgKGFmbGFnKQotICAgICAgICAgICAgICAgIHByaW50ZigiIChpbmNsdWRpbmcgc2VydmVycykiKTsKLSAgICAgICAgICAgIHB1dGNoYXIoJ1xuJyk7Ci0gICAgICAgICAgICB3aWR0aCA9IEFmbGFnID8gMTggOiAyMjsKLSAgICAgICAgICAgIHByaW50ZigiJS01LjVzICUqLipzICUqLipzICVzXG4iLAotICAgICAgICAgICAgICAgICAgICJQcm90byIsIC13aWR0aCwgd2lkdGgsICJMb2NhbCBBZGRyZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAtd2lkdGgsIHdpZHRoLCAiUmVtb3RlIEFkZHJlc3MiLCAiKHN0YXRlKSIpOwotICAgICAgICAgICAgZmlyc3Q9MDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLyogRXh0cmFjdCB0aGUgbG9jYWwvcmVtb3RlIGluZm9ybWF0aW9uIGZyb20gdGhlIGluZGV4IHZhbHVlcyAqLwotICAgICAgICBjcCA9IHRtcEFkZHIuZGF0YTsKLSAgICAgICAgY3BbMF0gPSB2cC0+bmFtZVsgMTAgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzFdID0gdnAtPm5hbWVbIDExIF0gJiAweGZmOwotICAgICAgICBjcFsyXSA9IHZwLT5uYW1lWyAxMiBdICYgMHhmZjsKLSAgICAgICAgY3BbM10gPSB2cC0+bmFtZVsgMTMgXSAmIDB4ZmY7Ci0gICAgICAgIGxvY2FsQWRkci5zX2FkZHIgPSB0bXBBZGRyLmFkZHIuc19hZGRyOwotICAgICAgICBsb2NhbFBvcnQgICAgICAgID0gbnRvaHMoKHVfc2hvcnQpKHZwLT5uYW1lWyAxNCBdKSk7Ci0gICAgICAgIGNwID0gdG1wQWRkci5kYXRhOwotICAgICAgICBjcFswXSA9IHZwLT5uYW1lWyAxNSBdICYgMHhmZjsKLSAgICAgICAgY3BbMV0gPSB2cC0+bmFtZVsgMTYgXSAmIDB4ZmY7Ci0gICAgICAgIGNwWzJdID0gdnAtPm5hbWVbIDE3IF0gJiAweGZmOwotICAgICAgICBjcFszXSA9IHZwLT5uYW1lWyAxOCBdICYgMHhmZjsKLSAgICAgICAgcmVtb3RlQWRkci5zX2FkZHIgPSB0bXBBZGRyLmFkZHIuc19hZGRyOwotICAgICAgICByZW1vdGVQb3J0ICAgICAgICA9IG50b2hzKCh1X3Nob3J0KSh2cC0+bmFtZVsgMTkgXSkpOwotCi0gICAgICAgIHByaW50ZigiJS01LjVzIiwgbmFtZSk7Ci0gICAgICAgIGluZXRwcmludCgmbG9jYWxBZGRyLCAgbG9jYWxQb3J0LCAgbmFtZSwgMSk7Ci0gICAgICAgIGluZXRwcmludCgmcmVtb3RlQWRkciwgcmVtb3RlUG9ydCwgbmFtZSwgMCk7Ci0gICAgICAgIGlmICggc3RhdGUgPCAxIHx8IHN0YXRlID4gVENQX05TVEFURVMgKQotICAgICAgICAgICAgcHJpbnRmKCIlZFxuIiwgc3RhdGUgKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcHJpbnRmKCIlc1xuIiwgdGNwc3RhdGVzWyBzdGF0ZSBdKTsKKyAgICAgICAgdGNwcHJvdG9wcmludF9saW5lKG5hbWUsIHZwLCAmZmlyc3QpOwogICAgIH0KICAgICBzbm1wX2ZyZWVfdmFyYmluZCggdmFyICk7CiB9CkBAIC0yMzAsNiArMjM3LDExMCBAQAogICAgIHNubXBfZnJlZV92YXJiaW5kKCB2YXIgKTsKIH0KIAordm9pZAordGNwcHJvdG9wcl9idWxrZ2V0KGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcm9vdCwgc2l6ZV90IHJvb3RfbGVuKQoreworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdnA7CisJbmV0c25tcF9wZHUgICAgKnBkdSwgKnJlc3BvbnNlOworICAgIG9pZCAgICAgICAgICAgICB0Y3BDb25uU3RhdGVfb2lkW01BWF9PSURfTEVOXTsKKwlzaXplX3QgICAgICAgICAgdGNwQ29ublN0YXRlX2xlbjsKKyAgICBpbnQgICAgZmlyc3QgPSAxOworICAgIGludCAgICBydW5uaW5nID0gMTsKKyAgICBpbnQgICAgc3RhdHVzOworCisJLyoKKyAgICAgKiBzZXR1cCBpbml0aWFsIG9iamVjdCBuYW1lCisgICAgICovCisJbWVtbW92ZSh0Y3BDb25uU3RhdGVfb2lkLCByb290LCBzaXplb2Yob2lkKSAqIHJvb3RfbGVuKTsKKwl0Y3BDb25uU3RhdGVfbGVuID0gcm9vdF9sZW47CisKKyAgICAvKgorICAgICAqIFdhbGtpbmcgdGhlIHRjcENvbm5TdGF0ZSBjb2x1bW4gd2lsbCBwcm92aWRlIGFsbAorICAgICAqICAgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKwl3aGlsZSAocnVubmluZykgeworICAgICAgICAvKgorICAgICAgICAgKiBjcmVhdGUgUERVIGZvciBHRVRCVUxLIHJlcXVlc3QgYW5kIGFkZCBvYmplY3QgbmFtZSB0byByZXF1ZXN0CisgICAgICAgICAqLworICAgICAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfR0VUQlVMSyk7CisgICAgICAgIHBkdS0+bm9uX3JlcGVhdGVycyA9IDA7CisgICAgICAgIHBkdS0+bWF4X3JlcGV0aXRpb25zID0gbWF4X2dldGJ1bGs7ICAgIC8qIGZpbGwgdGhlIHBhY2tldCAqLworICAgICAgICBzbm1wX2FkZF9udWxsX3ZhcihwZHUsIHRjcENvbm5TdGF0ZV9vaWQsIHRjcENvbm5TdGF0ZV9sZW4pOworCisgICAgICAgIC8qCisgICAgICAgICAqIGRvIHRoZSByZXF1ZXN0CisgICAgICAgICAqLworICAgICAgICBzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsICZyZXNwb25zZSk7CisgICAgICAgIGlmIChzdGF0dXMgPT0gU1RBVF9TVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAocmVzcG9uc2UtPmVycnN0YXQgPT0gU05NUF9FUlJfTk9FUlJPUikgeworCQkJCWZvciAodnAgPSByZXNwb25zZS0+dmFyaWFibGVzOyB2cCA7IHZwPXZwLT5uZXh0X3ZhcmlhYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgodnAtPm5hbWVfbGVuZ3RoIDwgcm9vdF9sZW4pIHx8CisJCQkJCQkJKG1lbWNtcChyb290LCB2cC0+bmFtZSwgc2l6ZW9mKG9pZCkgKiByb290X2xlbikgIT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBub3QgcGFydCBvZiB0aGlzIHN1YnRyZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisJCQkJCXRjcHByb3RvcHJpbnRfbGluZShuYW1lLCB2cCwgJmZpcnN0KTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoKHZwLT50eXBlICE9IFNOTVBfRU5ET0ZNSUJWSUVXKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNIT0JKRUNUKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHZwLT50eXBlICE9IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgICAgICogQ2hlY2sgaWYgbGFzdCB2YXJpYWJsZSwgYW5kIGlmIHNvLCBzYXZlIGZvciBuZXh0IHJlcXVlc3QuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2cC0+bmV4dF92YXJpYWJsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtbW92ZSh0Y3BDb25uU3RhdGVfb2lkLCB2cC0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwLT5uYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BDb25uU3RhdGVfbGVuID0gdnAtPm5hbWVfbGVuZ3RoOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGFuIGV4Y2VwdGlvbiB2YWx1ZSwgc28gc3RvcAorICAgICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorCQkJCX0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBlcnJvciBpbiByZXNwb25zZSwgcHJpbnQgaXQKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBydW5uaW5nID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gU1RBVF9USU1FT1VUKSB7CisgICAgICAgICAgICBydW5uaW5nID0gMDsKKyAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgLyogc3RhdHVzID09IFNUQVRfRVJST1IgKi8KKyAgICAgICAgICAgIHJ1bm5pbmcgPSAwOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlc3BvbnNlKSB7CisgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHJlc3BvbnNlKTsKKwkJfQorCX0KK30KKwordm9pZAordGNwcHJvdG9wcihjb25zdCBjaGFyICpuYW1lKQoreworICAgIG9pZCAgICB0Y3BDb25uU3RhdGVfb2lkW10gPSB7IDEsMyw2LDEsMiwxLDYsMTMsMSwxIH07CisgICAgc2l6ZV90IHRjcENvbm5TdGF0ZV9sZW4gICA9IE9JRF9MRU5HVEgoIHRjcENvbm5TdGF0ZV9vaWQgKTsKKwlpbnQgICAgdXNlX2dldGJ1bGsgPSAxOworCisjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9TTk1QVjEKKyAgICBpZiAoc3MtPnZlcnNpb24gPT0gU05NUF9WRVJTSU9OXzEpIHsKKyAgICAgICAgdXNlX2dldGJ1bGsgPSAwOworCX0KKyNlbmRpZgorCisJaWYgKHVzZV9nZXRidWxrKSB7CisJCXRjcHByb3RvcHJfYnVsa2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKwl9IGVsc2UgeworCQl0Y3Bwcm90b3ByX2dldChuYW1lLCB0Y3BDb25uU3RhdGVfb2lkLCB0Y3BDb25uU3RhdGVfbGVuKTsKKwl9Cit9CisKIAogCS8qKioqKioqKioqKioqKioqKioqKioKIAkgKgpAQCAtNDQ5LDcgKzU2MCw3IEBACiB2b2lkCiBpbmV0cHJpbnQoc3RydWN0IGluX2FkZHIgKmluLCBpbnQgcG9ydCwgY29uc3QgY2hhciAqcHJvdG8sIGludCBsb2NhbCkKIHsKLQlzdHJ1Y3Qgc2VydmVudCAqc3AgPSAwOworCXN0cnVjdCBzZXJ2ZW50ICpzcCA9IE5VTEw7CiAJY2hhciBsaW5lWzgwXSwgKmNwOwogCWludCB3aWR0aDsKIApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jIGIvYXBwcy9zbm1wbmV0c3RhdC9pbmV0Ni5jCmluZGV4IDc5OWM5NjEuLjQ1MzVjMGEgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcG5ldHN0YXQvaW5ldDYuYworKysgYi9hcHBzL3NubXBuZXRzdGF0L2luZXQ2LmMKQEAgLTQxMyw3ICs0MTMsNyBAQAogCQkocmV0KSA9IGdldHNlcnZieXBvcnQoKGludCkocG9ydCksIChwcm90bykpOyBcCiAJfSB3aGlsZSAoMCkKIAotCXN0cnVjdCBzZXJ2ZW50ICpzcCA9IDA7CisJc3RydWN0IHNlcnZlbnQgKnNwID0gTlVMTDsKIAljaGFyIGxpbmVbODBdLCAqY3A7CiAJaW50IHdpZHRoOwogCWludCBsZW4gPSBzaXplb2YgbGluZTsKQEAgLTQ3MCw3ICs0NzAsNyBAQAogCQkJZG9tYWluWzBdID0gJ1wwJzsKIAl9CiAjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgotCWNwID0gMDsKKwljcCA9IE5VTEw7CiAJaWYgKCFuZmxhZyAmJiAhSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoaW42cCkpIHsKIAkJaHAgPSBnZXRob3N0YnlhZGRyKChjb25zdCBjaGFyICopaW42cCwgc2l6ZW9mKCppbjZwKSwgQUZfSU5FVDYpOwogCQlpZiAoaHApIHsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvbWFpbi5jIGIvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMKaW5kZXggOTQ3YzAyYi4uYWMyYjA0ZiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9tYWluLmMKQEAgLTc1LDkgKzc1LDExIEBACiBpbnQJdGZsYWc7CQkvKiBzaG93IGkvZiB3YXRjaGRvZyB0aW1lcnMgKi8KIGludAl2ZmxhZzsJCS8qIGJlIHZlcmJvc2UgKi8KIAorCiBpbnQJaW50ZXJ2YWw7CS8qIHJlcGVhdCBpbnRlcnZhbCBmb3IgaS9mIHN0YXRzICovCiBjaGFyCSppbnRyZmFjZTsJLyogZGVzaXJlZCBpL2YgZm9yIHN0YXRzLCBvciBOVUxMIGZvciBhbGwgaS9mcyAqLwogaW50CWFmOwkJLyogYWRkcmVzcyBmYW1pbHkgKi8KK2ludCAgICAgbWF4X2dldGJ1bGsgPSAzMjsgIC8qIHNwZWNpZmllcyB0aGUgbWF4LXJlcGVhdGVycyB2YWx1ZSB0byB1c2Ugd2l0aCBHRVRCVUxLIHJlcXVlc3RzICovCiAKIGNoYXIgICAgKnByb2duYW1lID0gTlVMTDsKIApAQCAtODUsMzAgKzg3LDMyIEBACiAgICAgICogc3RydWN0IG5saXN0IG5sW10gLSBPbWl0dGVkCiAgICAgICovCiAKK3R5cGVkZWYgdm9pZCAoc3RyaW5nZnVuKShjb25zdCBjaGFyKik7CisKIHN0cnVjdCBwcm90b3ggewogICAgICAgICAvKiBwcl9pbmRleC9wcl9zaW5kZXggLSBPbWl0dGVkICovIAotCWludAlwcl93YW50ZWQ7CQkJLyogMSBpZiB3YW50ZWQsIDAgb3RoZXJ3aXNlICovCi0Jdm9pZAkoKnByX2NibG9ja3MpKGNvbnN0IGNoYXIgKik7CS8qIGNvbnRyb2wgYmxvY2tzIHByaW50aW5nIHJvdXRpbmUgKi8KLQl2b2lkCSgqcHJfc3RhdHMpKGNvbnN0IGNoYXIgKik7CS8qIHN0YXRpc3RpY3MgcHJpbnRpbmcgcm91dGluZSAqLwotICBjb25zdCBjaGFyCSpwcl9uYW1lOwkJCS8qIHdlbGwta25vd24gbmFtZSAqLworCWludAkJcHJfd2FudGVkOwkvKiAxIGlmIHdhbnRlZCwgMCBvdGhlcndpc2UgKi8KKwlzdHJpbmdmdW4JKnByX2NibG9ja3M7CS8qIGNvbnRyb2wgYmxvY2tzIHByaW50aW5nIHJvdXRpbmUgKi8KKwlzdHJpbmdmdW4JKnByX3N0YXRzOwkvKiBzdGF0aXN0aWNzIHByaW50aW5nIHJvdXRpbmUgKi8KKwljb25zdCBjaGFyCSpwcl9uYW1lOwkvKiB3ZWxsLWtub3duIG5hbWUgKi8KIH0gcHJvdG94W10gPSB7CiAJeyAxLAl0Y3Bwcm90b3ByLAl0Y3Bfc3RhdHMsCSJ0Y3AiIH0sCQogCXsgMSwJdWRwcHJvdG9wciwJdWRwX3N0YXRzLAkidWRwIiB9LAkKIAotCXsgMSwJMCwJaXBfc3RhdHMsCSJpcCIgfSwJCS8qIHByb3RvcHIgT21pdHRlZCAqLwotCXsgMSwJMCwJaWNtcF9zdGF0cywJImljbXAiIH0sCQorCXsgMSwJKHN0cmluZ2Z1biopMCwJaXBfc3RhdHMsCSJpcCIgfSwJLyogcHJvdG9wciBPbWl0dGVkICovCisJeyAxLAkoc3RyaW5nZnVuKikwLAlpY21wX3N0YXRzLAkiaWNtcCIgfSwKIAkvKiBpZ21wL2FoL2VzcC9pcGVuY2FwL2V0aGVyaXAvaXBjb21wL2NhcnAvcGZzeW5jL3BpbSAtIE9taXR0ZWQgKi8KLQl7IDAsCTAsCTAsCQkwIH0KKwl7IDAsCShzdHJpbmdmdW4qKTAsCShzdHJpbmdmdW4qKTAsCU5VTEwgfQogfTsKIAogc3RydWN0IHByb3RveCBpcDZwcm90b3hbXSA9IHsKLQl7IDEsCXRjcDZwcm90b3ByLAkwLAkidGNwNiIgfSwKLQl7IDEsCXVkcDZwcm90b3ByLAkwLAkidWRwNiIgfSwJCisJeyAxLAl0Y3A2cHJvdG9wciwJKHN0cmluZ2Z1biopMCwJInRjcDYiIH0sCisJeyAxLAl1ZHA2cHJvdG9wciwJKHN0cmluZ2Z1biopMCwJInVkcDYiIH0sCiAKLQl7IDEsCTAsCWlwNl9zdGF0cywJImlwNiIgfSwJLyogaXA2cHJvdG9wciBPbWl0dGVkICovCi0JeyAxLAkwLAlpY21wNl9zdGF0cywJImljbXA2IiB9LAkKKwl7IDEsCShzdHJpbmdmdW4qKTAsCWlwNl9zdGF0cywJImlwNiIgfSwvKiBpcDZwcm90b3ByIE9taXR0ZWQgKi8KKwl7IDEsCShzdHJpbmdmdW4qKTAsCWljbXA2X3N0YXRzLAkiaWNtcDYiIH0sCiAJLyogcGltNi9yaXA2IC0gT21pdHRlZCAqLwotCXsgMCwJMCwJMCwJCTAgfQorCXsgMCwJKHN0cmluZ2Z1biopMCwJKHN0cmluZ2Z1biopMCwJTlVMTCB9CiB9OwogCiAJLyoge2lweCxucyxhdGFsa31wcm90b3ggT21pdHRlZCAqLwpAQCAtMjMxLDYgKzIzNSwyNCBAQAogCQljYXNlICdyJzoKIAkJCXJmbGFnID0gMTsKIAkJCWJyZWFrOworCQljYXNlICdSJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvcHRpbmQgPCBhcmdjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFyZ3Zbb3B0aW5kXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhfZ2V0YnVsayA9IGF0b2koYXJndltvcHRpbmRdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1heF9nZXRidWxrID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzYWdlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIkJhZCAtQ1Igb3B0aW9uOiAlc1xuIiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3Zbb3B0aW5kXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQmFkIC1DUiBvcHRpb246IG5vIGFyZ3VtZW50IGdpdmVuXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW5kKys7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKIAkJY2FzZSAnUyc6CSAgICAgLyogRnJlZUJTRDoKIAkJCQkJTmV0QlNEOiAgU2VtaS1udW1lcmljIGRpc3BsYXkKIAkJCQkJT3BlbkJTRDogU2hvdyByb3V0ZSBzb3VyY2Ugc2VsZWN0b3IgKi8KQEAgLTM5Niw3ICs0MTgsNyBAQAogCQkJZm9yICh0cCA9IHByb3RveDsgdHAtPnByX25hbWU7IHRwKyspCiAJCQkJaWYgKHN0cmNtcCh0cC0+cHJfbmFtZSwgcC0+cF9uYW1lKSA9PSAwKQogCQkJCQlicmVhazsKLQkJCWlmICh0cC0+cHJfbmFtZSA9PSAwIHx8IHRwLT5wcl93YW50ZWQgPT0gMCkKKwkJCWlmICh0cC0+cHJfbmFtZSA9PSBOVUxMIHx8IHRwLT5wcl93YW50ZWQgPT0gMCkKIAkJCQljb250aW51ZTsKIAkJCXByaW50cHJvdG8odHAsIHAtPnBfbmFtZSk7CiAJCX0KZGlmZiAtLWdpdCBhL2FwcHMvc25tcG5ldHN0YXQvbmV0c3RhdC5oIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKaW5kZXggMjc2MjU2OC4uMzU1YzhiMiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKKysrIGIvYXBwcy9zbm1wbmV0c3RhdC9uZXRzdGF0LmgKQEAgLTYyLDYgKzYyLDcgQEAKIGV4dGVybiBjaGFyCSppbnRyZmFjZTsJLyogZGVzaXJlZCBpL2YgZm9yIHN0YXRzLCBvciBOVUxMIGZvciBhbGwgaS9mcyAqLwogCiBleHRlcm4gaW50CWFmOwkJLyogYWRkcmVzcyBmYW1pbHkgKi8KK2V4dGVybiBpbnQgIG1heF9nZXRidWxrOyAgLyogc3BlY2lmaWVzIHRoZSBtYXgtcmVwZWF0ZXJzIHZhbHVlIHRvIHVzZSB3aXRoIEdFVEJVTEsgcmVxdWVzdHMgKi8KIAogZXh0ZXJuCWNoYXIgKl9fcHJvZ25hbWU7IC8qIHByb2dyYW0gbmFtZSwgZnJvbSBjcnQwLm8gKi8KIApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdGFibGUuYyBiL2FwcHMvc25tcHRhYmxlLmMKaW5kZXggMzk3MGU5Ny4uMTQyMmVjZSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdGFibGUuYworKysgYi9hcHBzL3NubXB0YWJsZS5jCkBAIC0yNTYsNyArMjU2LDggQEAKICAgICBuZXRzbm1wX3Nlc3Npb24gc2Vzc2lvbiwgKnNzOwogICAgIGludCAgICAgICAgICAgIHRvdGFsX2VudHJpZXMgPSAwOwogCi0gICAgc2V0dmJ1ZihzdGRvdXQsIE5VTEwsIF9JT0xCRiwgMTAyNCk7CisgICAgbmV0c25tcF9zZXRfbGluZV9idWZmZXJpbmcoc3Rkb3V0KTsKKwogICAgIG5ldHNubXBfZHNfc2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1FVSUNLX1BSSU5ULCAxKTsKIApkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdGVzdC5jIGIvYXBwcy9zbm1wdGVzdC5jCmluZGV4IDQ5OWJhY2YuLjI4ZjkyNTQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRlc3QuYworKysgYi9hcHBzL3NubXB0ZXN0LmMKQEAgLTEyNyw3ICsxMjcsNyBAQAogICAgIH0KIAogICAgIHZhcmNvdW50ID0gMDsKLSAgICB3aGlsZSAoMSkgeworICAgIGZvcig7OykgewogICAgICAgICB2YXJzID0gTlVMTDsKICAgICAgICAgZm9yIChyZXQgPSAxOyByZXQgIT0gMDspIHsKICAgICAgICAgICAgIHZwID0gKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKQpAQCAtMjc3LDggKzI3Nyw3IEBACiAgICAgICAgIHZhcmNvdW50ID0gMDsKICAgICAgICAgbm9uUmVwZWF0ZXJzID0gLTE7CiAgICAgfQotICAgIFNPQ0tfQ0xFQU5VUDsKLSAgICByZXR1cm4gMDsKKyAgICAvKiBOT1RSRUFDSEVEICovCiB9CiAKIGludApAQCAtMjg2LDggKzI4NSw3IEBACiB7CiAgICAgY2hhciAgICAgICAgICAgIGJ1ZlsyNTZdOwogICAgIHNpemVfdCAgICAgICAgICB2YWxfbGVuOwotICAgIHVfY2hhciAgICAgICAgICB2YWx1ZVsyNTZdLCBjaDsKLSAgICBvaWQgICAgICAgICAgICAgbmFtZVtNQVhfT0lEX0xFTl07CisgICAgdV9jaGFyICAgICAgICAgIGNoOwogCiAgICAgcHJpbnRmKCJWYXJpYWJsZTogIik7CiAgICAgZmZsdXNoKHN0ZG91dCk7CkBAIC0zNjgsMTMgKzM2NiwxNSBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdnAtPm5hbWVfbGVuZ3RoID0gTUFYX09JRF9MRU47Ci0gICAgaWYgKCFzbm1wX3BhcnNlX29pZChidWYsIG5hbWUsICZ2cC0+bmFtZV9sZW5ndGgpKSB7Ci0gICAgICAgIHNubXBfcGVycm9yKGJ1Zik7Ci0gICAgICAgIHJldHVybiAtMTsKKyAgICB7CisJb2lkICAgICBuYW1lW01BWF9PSURfTEVOXTsKKwl2cC0+bmFtZV9sZW5ndGggPSBNQVhfT0lEX0xFTjsKKwlpZiAoIXNubXBfcGFyc2Vfb2lkKGJ1ZiwgbmFtZSwgJnZwLT5uYW1lX2xlbmd0aCkpIHsKKwkgICAgc25tcF9wZXJyb3IoYnVmKTsKKwkgICAgcmV0dXJuIC0xOworCX0KKwl2cC0+bmFtZSA9IHNubXBfZHVwbGljYXRlX29iamlkKG5hbWUsIHZwLT5uYW1lX2xlbmd0aCk7CiAgICAgfQotICAgIHZwLT5uYW1lID0gKG9pZCAqKSBtYWxsb2ModnAtPm5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwotICAgIG1lbW1vdmUodnAtPm5hbWUsIG5hbWUsIHZwLT5uYW1lX2xlbmd0aCAqIHNpemVvZihvaWQpKTsKIAogICAgIGlmIChjb21tYW5kID09IFNOTVBfTVNHX1NFVCB8fCBjb21tYW5kID09IFNOTVBfTVNHX0lORk9STQogICAgICAgICB8fCBjb21tYW5kID09IFNOTVBfTVNHX1RSQVAyKSB7CkBAIC00ODEsMTQgKzQ4MSwxNiBAQAogICAgICAgICBjYXNlIEFTTl9PQkpFQ1RfSUQ6CiAgICAgICAgICAgICBpZiAoJ1xuJyA9PSBidWZbc3RybGVuKGJ1ZikgLSAxXSkKICAgICAgICAgICAgICAgICBidWZbc3RybGVuKGJ1ZikgLSAxXSA9ICdcMCc7Ci0gICAgICAgICAgICB2cC0+dmFsX2xlbiA9IE1BWF9PSURfTEVOOzsKLSAgICAgICAgICAgIGlmICgwID09IHJlYWRfb2JqaWQoYnVmLCAob2lkICopIHZhbHVlLCAmdnAtPnZhbF9sZW4pKSB7Ci0gICAgICAgICAgICAgICAgcHJpbnRmKCJVbnJlY29nbmlzZWQgT0lEIHZhbHVlXG4iKTsKLSAgICAgICAgICAgICAgICBnb3RvIGdldFZhbHVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdnAtPnZhbF9sZW4gKj0gc2l6ZW9mKG9pZCk7Ci0gICAgICAgICAgICB2cC0+dmFsLm9iamlkID0gKG9pZCAqKSBtYWxsb2ModnAtPnZhbF9sZW4pOwotICAgICAgICAgICAgbWVtbW92ZSh2cC0+dmFsLm9iamlkLCB2YWx1ZSwgdnAtPnZhbF9sZW4pOworCSAgICBlbHNlIHsKKwkJb2lkIHZhbHVlW01BWF9PSURfTEVOXTsKKwkJdnAtPnZhbF9sZW4gPSBNQVhfT0lEX0xFTjsKKwkJaWYgKDAgPT0gcmVhZF9vYmppZChidWYsIHZhbHVlLCAmdnAtPnZhbF9sZW4pKSB7CisJCSAgICBwcmludGYoIlVucmVjb2duaXNlZCBPSUQgdmFsdWVcbiIpOworCQkgICAgZ290byBnZXRWYWx1ZTsKKwkJfQorCQl2cC0+dmFsLm9iamlkID0gc25tcF9kdXBsaWNhdGVfb2JqaWQodmFsdWUsIHZwLT52YWxfbGVuKTsKKwkJdnAtPnZhbF9sZW4gKj0gc2l6ZW9mKG9pZCk7CisJICAgIH0KICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFTTl9USU1FVElDS1M6CiAgICAgICAgICAgICB2cC0+dmFsLmludGVnZXIgPSAobG9uZyAqKSBtYWxsb2Moc2l6ZW9mKGxvbmcpKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYW5zbGF0ZS5jIGIvYXBwcy9zbm1wdHJhbnNsYXRlLmMKaW5kZXggMWVmOTE5My4uNzUwZDYwZiAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhbnNsYXRlLmMKKysrIGIvYXBwcy9zbm1wdHJhbnNsYXRlLmMKQEAgLTI0MCw2ICsyNDAsNyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgc25tcF9lbmFibGVfc3RkZXJybG9nKCk7CiAgICAgaW5pdF9zbm1wKCJzbm1wYXBwIik7CiAgICAgaWYgKG9wdGluZCA8IGFyZ2MpCiAgICAgICAgIGN1cnJlbnRfbmFtZSA9IGFyZ3Zbb3B0aW5kXTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXAuYyBiL2FwcHMvc25tcHRyYXAuYwppbmRleCBkMTZkMmZhLi41NTMyMGY4IDEwMDY0NAotLS0gYS9hcHBzL3NubXB0cmFwLmMKKysrIGIvYXBwcy9zbm1wdHJhcC5jCkBAIC0xMDQsMjYgKzEwNCw2IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKLWluX2FkZHJfdAotcGFyc2VfYWRkcmVzcyhjaGFyICphZGRyZXNzKQotewotICAgIGluX2FkZHJfdCAgICAgICBhZGRyOwotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzYWRkcjsKLSAgICBzdHJ1Y3QgaG9zdGVudCAqaHA7Ci0KLSAgICBpZiAoKGFkZHIgPSBpbmV0X2FkZHIoYWRkcmVzcykpICE9IC0xKQotICAgICAgICByZXR1cm4gYWRkcjsKLSAgICBocCA9IGdldGhvc3RieW5hbWUoYWRkcmVzcyk7Ci0gICAgaWYgKGhwID09IE5VTEwpIHsKLSAgICAgICAgZnByaW50ZihzdGRlcnIsICJ1bmtub3duIGhvc3Q6ICVzXG4iLCBhZGRyZXNzKTsKLSAgICAgICAgZXhpdCgxKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtZW1jcHkoJnNhZGRyLnNpbl9hZGRyLCBocC0+aF9hZGRyLCBocC0+aF9sZW5ndGgpOwotICAgICAgICByZXR1cm4gc2FkZHIuc2luX2FkZHIuc19hZGRyOwotICAgIH0KLQotfQotCiBzdGF0aWMgdm9pZAogb3B0UHJvYyhpbnQgYXJnYywgY2hhciAqY29uc3QgKmFyZ3YsIGludCBvcHQpCiB7CkBAIC0yOTgsNyArMjc4LDExIEBACiAgICAgICAgIH0KICAgICAgICAgYWdlbnQgPSBhcmd2W2FyZ107CiAgICAgICAgIGlmIChhZ2VudCAhPSBOVUxMICYmIHN0cmxlbihhZ2VudCkgIT0gMCkgewotICAgICAgICAgICAgKnBkdV9pbl9hZGRyX3QgPSBwYXJzZV9hZGRyZXNzKGFnZW50KTsKKyAgICAgICAgICAgIGludCByZXQgPSBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoYWdlbnQsIHBkdV9pbl9hZGRyX3QpOworICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgInVua25vd24gaG9zdDogJXNcbiIsIGFnZW50KTsKKyAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgKnBkdV9pbl9hZGRyX3QgPSBnZXRfbXlhZGRyKCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkLmMgYi9hcHBzL3NubXB0cmFwZC5jCmluZGV4IGI3YzRjZTQuLjRlZTYxNWQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkLmMKKysrIGIvYXBwcy9zbm1wdHJhcGQuYwpAQCAtMTM5LDIyICsxMzksMjcgQEAKICNkZWZpbmUgRkRfWkVSTyhwKSAgICAgIG1lbXNldCgocCksIDAsIHNpemVvZigqKHApKSkKICNlbmRpZgogCi1jaGFyICAgICAgICAgICAqbG9nZmlsZSA9IDA7Ci1pbnQgICAgICAgICAgICAgU3lzbG9nVHJhcCA9IDA7Ci1pbnQgICAgICAgICAgICAgRXZlbnQgPSAwOwotaW50ICAgICAgICAgICAgIGRyb3BhdXRoID0gMDsKLWludCAgICAgICAgICAgICByZWNvbmZpZyA9IDA7CitjaGFyICAgICAgICAgICAqbG9nZmlsZSA9IE5VTEw7CitleHRlcm4gaW50ICAgICAgU3lzbG9nVHJhcDsKK2V4dGVybiBpbnQgICAgICBkcm9wYXV0aDsKK3N0YXRpYyBpbnQgICAgICByZWNvbmZpZyA9IDA7CiBjaGFyICAgICAgICAgICAgZGRlZmF1bHRfcG9ydFtdID0gInVkcDoxNjIiOwkvKiBEZWZhdWx0IGRlZmF1bHQgcG9ydCAqLwogY2hhciAgICAgICAgICAgKmRlZmF1bHRfcG9ydCA9IGRkZWZhdWx0X3BvcnQ7CiAjaWYgSEFWRV9HRVRQSUQKICAgICBGSUxFICAgICAgICAgICAqUElEOwogICAgIGNoYXIgICAgICAgICAgICpwaWRfZmlsZSA9IE5VTEw7CiAjZW5kaWYKK2V4dGVybiB2b2lkIHBhcnNlX2Zvcm1hdChjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSk7CiBjaGFyICAgICAgICAgICAqdHJhcDFfZm10X3N0cl9yZW1lbWJlciA9IE5VTEw7CiBpbnQgICAgICAgICAgICAgZG9mb3JrID0gMTsKIAogZXh0ZXJuIGludCAgICAgIG5ldHNubXBfcnVubmluZzsKIAorI2lmZGVmIE5FVFNOTVBfVVNFX01ZU1FMCitleHRlcm4gaW50ICAgICAgbmV0c25tcF9teXNxbF9pbml0KHZvaWQpOworZXh0ZXJuIHZvaWQgICAgIHNubXB0cmFwZF9yZWdpc3Rlcl9zcWxfY29uZmlncyggdm9pZCApOworI2VuZGlmCisKIC8qCiAgKiBUaGVzZSBkZWZpbml0aW9ucyBoYW5kbGUgNC4yIHN5c3RlbXMgd2l0aG91dCBhZGRpdGlvbmFsIHN5c2xvZyBmYWNpbGl0aWVzLgogICovCkBAIC0yMDUsNyArMjEwLDcgQEAKICNkZWZpbmUgU05NUFRSQVBEX1JVTk5JTkcgMQogI2RlZmluZSBTTk1QVFJBUERfU1RPUFBFRCAwCiBpbnQgICAgICAgICAgICAgdHJhcGRfc3RhdHVzID0gU05NUFRSQVBEX1NUT1BQRUQ7Ci0vKiBhcHBfbmFtZV9sb25nIHVzZWQgZm9yIEV2ZW50IExvZyAoc3lzbG9nKSwgU0NNLCByZWdpc3RyeSBldGMgKi8KKy8qIGFwcF9uYW1lX2xvbmcgdXNlZCBmb3IgU0NNLCByZWdpc3RyeSBldGMgKi8KIExQQ1RTVFIgICAgICAgICBhcHBfbmFtZV9sb25nID0gX1QoIk5ldC1TTk1QIFRyYXAgSGFuZGxlciIpOyAgICAgLyogQXBwbGljYXRpb24gTmFtZSAqLwogI2VuZGlmCiAKQEAgLTIxNSwxMCArMjIwLDYgQEAKIAogdm9pZCAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcodm9pZCk7CiAKLXN0YXRpYyBvaWQgICAgICByaXNpbmdBbGFybVtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAyLCAxLCAxLCAzLCAxIH07Ci1zdGF0aWMgb2lkICAgICAgZmFsbGluZ0FsYXJtW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDIsIDEsIDEsIDMsIDIgfTsKLXN0YXRpYyBvaWQgICAgICB1bmF2YWlsYWJsZUFsYXJtW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDIsIDEsIDEsIDMsIDMgfTsKLQogI2lmZGVmIFdJTjMyU0VSVklDRQogdm9pZCAgICAgICAgICAgIFN0b3BTbm1wVHJhcGQodm9pZCk7CiBpbnQgICAgICAgICAgICAgU25tcFRyYXBkTWFpbihpbnQgYXJnYywgVENIQVIgKiBhcmd2W10pOwpAQCAtMjMxLDcwICsyMzIsNiBAQAogZXh0ZXJuIHZvaWQgICAgICAgICAgICBzdWJhZ2VudF9pbml0KHZvaWQpOwogI2VuZGlmCiAKLXZvaWQKLWV2ZW50X2lucHV0KG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZwKQotewotICAgIGludCAgICAgICAgICAgICBldmVudGlkID0gMDsKLSAgICBvaWQgICAgICAgICAgICAgdmFyaWFibGVbTUFYX09JRF9MRU5dOwotICAgIHVfbG9uZyAgICAgICAgICBkZXN0aXAgPSAwOwotICAgIGludCAgICAgICAgICAgICBzYW1wbGV0eXBlID0gMDsKLSAgICBpbnQgICAgICAgICAgICAgdmFsdWUgPSAwOwotICAgIGludCAgICAgICAgICAgICB0aHJlc2hvbGQgPSAwOwotICAgIGludCAgICAgICAgICAgICBpOwotICAgIGludCAgICAgICAgICAgICBudmFycyA9IDA7Ci0KLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QJKnZwMiA9IHZwOwotICAgIAotICAgIG9pZCAgICAgICAgICAgICpvcCA9IE5VTEw7Ci0KLSAgICAvKiBNYWtlIHN1cmUgdGhlcmUgYXJlIDUgdmFyaWFibGVzLiAgT3RoZXJ3aXNlLCBkb24ndCBib3RoZXIgKi8KLSAgICBmb3IgKGk9MTsgaSA8PSA1OyBpKyspIHsKLSAgICAgIHZwMiA9IHZwMi0+bmV4dF92YXJpYWJsZTsKLSAgICAgIGlmICghdnAyKSB7Ci0JbnZhcnMgPSAtMTsKLQlicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaWYgKG52YXJzICE9IC0xKQotICAgIHsKLSAgICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7ICAgICAvKiBza2lwIHN5c1VwdGltZSAqLwotICAgICAgaWYgKHZwLT52YWxfbGVuICE9IHNpemVvZihyaXNpbmdBbGFybSkgfHwKLQkgICFtZW1jbXAodnAtPnZhbC5vYmppZCwgcmlzaW5nQWxhcm0sIHNpemVvZihyaXNpbmdBbGFybSkpKQotCWV2ZW50aWQgPSAxOwotICAgICAgZWxzZSBpZiAodnAtPnZhbF9sZW4gIT0gc2l6ZW9mKHJpc2luZ0FsYXJtKSB8fAotCSAgIW1lbWNtcCh2cC0+dmFsLm9iamlkLCBmYWxsaW5nQWxhcm0sIHNpemVvZihmYWxsaW5nQWxhcm0pKSkKLQlldmVudGlkID0gMjsKLSAgICAgIGVsc2UgaWYgKHZwLT52YWxfbGVuICE9IHNpemVvZihyaXNpbmdBbGFybSkgfHwKLQkgICFtZW1jbXAodnAtPnZhbC5vYmppZCwgdW5hdmFpbGFibGVBbGFybSwgc2l6ZW9mKHVuYXZhaWxhYmxlQWxhcm0pKSkKLQlldmVudGlkID0gMzsKLSAgICAgIGVsc2UgewotCWZwcmludGYoc3RkZXJyLCAidW5rbm93biBldmVudFxuIik7Ci0JZXZlbnRpZCA9IDA7Ci0gICAgICB9Ci0gICAgICAKLSAgICAgIHZwID0gdnAtPm5leHRfdmFyaWFibGU7Ci0gICAgICBtZW1tb3ZlKHZhcmlhYmxlLCB2cC0+dmFsLm9iamlkLCB2cC0+dmFsX2xlbiAqIHNpemVvZihvaWQpKTsKLSAgICAgIG9wID0gdnAtPm5hbWUgKyAyMjsKLSAgICAgIGRlc3RpcCA9IDA7Ci0gICAgICBkZXN0aXAgfD0gKCpvcCsrKSA8PCAyNDsKLSAgICAgIGRlc3RpcCB8PSAoKm9wKyspIDw8IDE2OwotICAgICAgZGVzdGlwIHw9ICgqb3ArKykgPDwgODsKLSAgICAgIGRlc3RpcCB8PSAqb3ArKzsKLSAgICAgIAotICAgICAgdnAgPSB2cC0+bmV4dF92YXJpYWJsZTsKLSAgICAgIHNhbXBsZXR5cGUgPSAqdnAtPnZhbC5pbnRlZ2VyOwotICAgICAgCi0gICAgICB2cCA9IHZwLT5uZXh0X3ZhcmlhYmxlOwotICAgICAgdmFsdWUgPSAqdnAtPnZhbC5pbnRlZ2VyOwotICAgICAgCi0gICAgICB2cCA9IHZwLT5uZXh0X3ZhcmlhYmxlOwotICAgICAgdGhyZXNob2xkID0gKnZwLT52YWwuaW50ZWdlcjsKLSAgICB9Ci0gICAgcHJpbnRmKCIlZDogMHglMDJsWCAlZCAlZCAlZFxuIiwgZXZlbnRpZCwgZGVzdGlwLCBzYW1wbGV0eXBlLCB2YWx1ZSwKLQl0aHJlc2hvbGQpOwotfQotCiAKIHZvaWQKIHVzYWdlKHZvaWQpCkBAIC0zMTUsOSArMjUyLDcgQEAKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICIgIC1DXHRcdFx0ZG8gbm90IHJlYWQgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlc1xuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgIC1kXHRcdFx0ZHVtcCBzZW50IGFuZCByZWNlaXZlZCBTTk1QIHBhY2tldHNcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtRFtUT0tFTlssLi4uXV1cdFx0dHVybiBvbiBkZWJ1Z2dpbmcgb3V0cHV0XG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICIgIC1lXHRcdFx0cHJpbnQgZXZlbnQgIyAocmlzaW5nL2ZhbGxpbmcgYWxhcm0sIGV0Yy4pXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLURbVE9LRU5bLC4uLl1dXHRcdHR1cm4gb24gZGVidWdnaW5nIG91dHB1dCBmb3IgdGhlIHNwZWNpZmllZCBUT0tFTnNcblx0XHRcdCAgIChBTEwgZ2l2ZXMgZXh0cmVtZWx5IHZlcmJvc2UgZGVidWdnaW5nIG91dHB1dClcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAtZlx0XHRcdGRvIG5vdCBmb3JrIGZyb20gdGhlIHNoZWxsXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICIgIC1GIEZPUk1BVFx0XHR1c2Ugc3BlY2lmaWVkIGZvcm1hdCBmb3IgbG9nZ2luZyB0byBzdGFuZGFyZCBlcnJvclxuIik7CkBAIC0zNjIsMTEgKzI5Nyw2IEBACiAgICAgZnByaW50ZihzdGRlcnIsCiAgICAgICAgICAgICAiICAtTCA8TE9HT1BUUz5cdFx0dG9nZ2xlIG9wdGlvbnMgY29udHJvbGxpbmcgd2hlcmUgdG8gbG9nIHRvXG4iKTsKICAgICBzbm1wX2xvZ19vcHRpb25zX3VzYWdlKCJcdFx0XHQiLCBzdGRlcnIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiXG4gIERlcHJlY2F0ZWQgb3B0aW9uczpcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtbyBGSUxFXHRcdHVzZSAtTGYgPEZJTEU+IGluc3RlYWRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtUFx0XHRcdHVzZSAtZiAtTGUgIGluc3RlYWRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtc1x0XHRcdHVzZSAtTHNkIGluc3RlYWRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtUyBkfGl8MC03XHRcdHVzZSAtTHMgPGZhY2lsaXR5PiBpbnN0ZWFkXG4iKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTM4NSw2ICszMTUsNyBAQAogICAgIGV4dGVybiBuZXRzbm1wX3Nlc3Npb24gKm1haW5fc2Vzc2lvbjsKICNlbmRpZgogICAgIG5ldHNubXBfcnVubmluZyA9IDA7CisKICNpZmRlZiBXSU4zMlNFUlZJQ0UKICAgICAvKgogICAgICAqIEluIGNhc2Ugb2Ygd2luZG93cywgc2VsZWN0KCkgaW4gcmVjZWl2ZSgpIGZ1bmN0aW9uIHdpbGwgbm90IHJldHVybiAKQEAgLTYxNCwxMyArNTQ1LDYgQEAKIH0KIAogdm9pZAotcGFyc2VfY29uZmlnX3ByaW50RXZlbnROdW1iZXJzKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQotewotICBpZiAobmV0c25tcF9kc19wYXJzZV9ib29sZWFuKGNwdHIpID09IDEpCi0gICAgRXZlbnQrKzsKLX0KLQotdm9pZAogcGFyc2VfY29uZmlnX2lnbm9yZUF1dGhGYWlsdXJlKGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQogewogICBpZiAobmV0c25tcF9kc19wYXJzZV9ib29sZWFuKGNwdHIpID09IDEpCkBAIC02NjYsNyArNTkwLDcgQEAKICAgICBjaGFyICAgICAgICAgICAgb3B0aW9uc1sxMjhdID0gImFBYzpDZEQ6OmVmRjpnOmhISTpMOm06TTpubzpPOlBxc1M6dHU6dng6LToiOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc19saXN0ID0gTlVMTCwgKnNzID0gTlVMTDsKICAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0ID0gTlVMTDsKLSAgICBpbnQgICAgICAgICAgICAgYXJnLCBpID0gMCwgZGVwbXNnID0gMDsKKyAgICBpbnQgICAgICAgICAgICAgYXJnLCBpID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdWlkID0gMCwgZ2lkID0gMDsKICAgICBpbnQgICAgICAgICAgICAgY291bnQsIG51bWZkcywgYmxvY2s7CiAgICAgZmRfc2V0ICAgICAgICAgIHJlYWRmZHMsd3JpdGVmZHMsZXhjZXB0ZmRzOwpAQCAtNjc3LDYgKzYwMSw3IEBACiAjZW5kaWYKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogCisKICNpZm5kZWYgV0lOMzIKICAgICAvKgogICAgICAqIGNsb3NlIGFsbCBub24tc3RhbmRhcmQgZmlsZSBkZXNjcmlwdG9ycyB3ZSBtYXkgaGF2ZQpAQCAtNjkzLDYgKzYxOCw3IEBACiAjaWZkZWYgU0lHSFVQCiAgICAgc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7ICAgLyogZG8gbm90IHRlcm1pbmF0ZSBvbiBlYXJseSBTSUdIVVAgKi8KICNlbmRpZgorCiAjaWZkZWYgU0lHSU5UCiAgICAgc2lnbmFsKFNJR0lOVCwgdGVybV9oYW5kbGVyKTsKICNlbmRpZgpAQCAtNzAwLDE0ICs2MjYsMTMgQEAKICAgICBzaWduYWwoU0lHUElQRSwgU0lHX0lHTik7ICAgLyogJ0lubGluZScgZmFpbHVyZSBvZiB3YXl3YXJkIHJlYWRlcnMgKi8KICNlbmRpZgogCi0jaWZkZWYgU0lHSFVQCi0gICAgc2lnbmFsKFNJR0hVUCwgU0lHX0lHTik7ICAgLyogZG8gbm90IHRlcm1pbmF0ZSBvbiBlYXJseSBTSUdIVVAgKi8KLSNlbmRpZgotCiAgICAgLyoKICAgICAgKiByZWdpc3RlciBvdXIgY29uZmlndXJhdGlvbiBoYW5kbGVycyBub3cgc28gLUggcHJvcGVybHkgZGlzcGxheXMgdGhlbSAKICAgICAgKi8KICAgICBzbm1wdHJhcGRfcmVnaXN0ZXJfY29uZmlncyggKTsKKyNpZmRlZiBORVRTTk1QX1VTRV9NWVNRTAorICAgIHNubXB0cmFwZF9yZWdpc3Rlcl9zcWxfY29uZmlncyggKTsKKyNlbmRpZgogICAgIGluaXRfdXNtX2NvbmYoICJzbm1wdHJhcGQiICk7CiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJzbm1wVHJhcGRBZGRyIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJzZV90cmFwZF9hZGRyZXNzLCBmcmVlX3RyYXBkX2FkZHJlc3MsICJzdHJpbmciKTsKQEAgLTczMSwyMSArNjU2LDEyIEBACiAgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJkb05vdEZvcmsiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19kb05vdEZvcmssIE5VTEwsICIoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIpOwogCi0gICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJwcmludEV2ZW50TnVtYmVycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfY29uZmlnX3ByaW50RXZlbnROdW1iZXJzLCBOVUxMLCAiKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiKTsKLQogICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wdHJhcGQiLCAiaWdub3JlQXV0aEZhaWx1cmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2NvbmZpZ19pZ25vcmVBdXRoRmFpbHVyZSwgTlVMTCwgIigxfHllc3x0cnVlfDB8bm98ZmFsc2UpIik7CiAKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgIm91dHB1dE9wdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfY29uZmlnX291dHB1dE9wdGlvbiwgTlVMTCwgInN0cmluZyIpOwogCi0jaWZkZWYgV0lOMzIKLSAgICBzZXR2YnVmKHN0ZG91dCwgTlVMTCwgX0lPTkJGLCBCVUZTSVopOwotI2Vsc2UKLSAgICBzZXR2YnVmKHN0ZG91dCwgTlVMTCwgX0lPTEJGLCBCVUZTSVopOwotI2VuZGlmCi0KICAgICAvKgogICAgICAqIEFkZCBzb21lIG9wdGlvbnMgaWYgdGhleSBhcmUgYXZhaWxhYmxlLiAgCiAgICAgICovCkBAIC04MTEsMTcgKzcyNywyNSBAQAogICAgICAgICAgICAgc25tcF9zZXRfZG9fZGVidWdnaW5nKDEpOwogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgY2FzZSAnZSc6Ci0gICAgICAgICAgICBFdmVudCsrOwotICAgICAgICAgICAgYnJlYWs7Ci0KICAgICAgICAgY2FzZSAnZic6CiAgICAgICAgICAgICBkb2ZvcmsgPSAwOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICBpZiAob3B0YXJnICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyID0gb3B0YXJnOworICAgICAgICAgICAgICAgIGlmICgoIHN0cm5jbXAoIG9wdGFyZywgInByaW50IiwgICA1ICkgPT0gMCApIHx8CisgICAgICAgICAgICAgICAgICAgICggc3RybmNtcCggb3B0YXJnLCAic3lzbG9nIiwgIDYgKSA9PSAwICkgfHwKKyAgICAgICAgICAgICAgICAgICAgKCBzdHJuY21wKCBvcHRhcmcsICJleGVjdXRlIiwgNyApID09IDAgKSkgeworICAgICAgICAgICAgICAgICAgICAvKiBOZXcgc3R5bGU6ICJ0eXBlPWZvcm1hdCIgKi8KKyAgICAgICAgICAgICAgICAgICAgdHJhcDFfZm10X3N0cl9yZW1lbWJlciA9IHN0cmR1cChvcHRhcmcpOworICAgICAgICAgICAgICAgICAgICBjcCA9IHN0cmNociggdHJhcDFfZm10X3N0cl9yZW1lbWJlciwgJz0nICk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICpjcCA9ICcgJzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvKiBPbGQgc3R5bGU6IGltcGxpY2l0bHkgInByaW50PWZvcm1hdCIgKi8KKyAgICAgICAgICAgICAgICAgICAgdHJhcDFfZm10X3N0cl9yZW1lbWJlciA9IG1hbGxvYyhzdHJsZW4ob3B0YXJnKSArIDcpOworICAgICAgICAgICAgICAgICAgICBzcHJpbnRmKCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyLCAicHJpbnQgJXMiLCBvcHRhcmcgKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHVzYWdlKCk7CiAgICAgICAgICAgICAgICAgZXhpdCgxKTsKQEAgLTg2Nyw1MiArNzkxLDggQEAKIAogCWNhc2UgJ1MnOgogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsCi0gICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtUyBvcHRpb24gaXMgZGVwcmVjYXRlZDsgdXNlIC1McyA8ZmFjaWxpdHk+IGluc3RlYWRcbiIpOwotICAgICAgICAgICAgZGVwbXNnID0gMTsKLSAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHN3aXRjaCAoKm9wdGFyZykgewotICAgICAgICAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19EQUVNT047Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgJ2knOgotICAgICAgICAgICAgICAgIGNhc2UgJ0knOgotICAgICAgICAgICAgICAgICAgICBGYWNpbGl0eSA9IExPR19JTkZPOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICcwJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwwOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICcxJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwxOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICcyJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwyOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICczJzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUwzOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc0JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw0OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc1JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw1OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc2JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw2OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlICc3JzoKLSAgICAgICAgICAgICAgICAgICAgRmFjaWxpdHkgPSBMT0dfTE9DQUw3OwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImludmFsaWQgc3lzbG9nIGZhY2lsaXR5OiAtUyVjXG4iLCpvcHRhcmcpOwotICAgICAgICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJubyBzeXNsb2cgZmFjaWxpdHkgc3BlY2lmaWVkXG4iKTsKLSAgICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtUyBvcHRpb24gaGFzIGJlZW4gd2l0aGRyYXduOyB1c2UgLUxzIDxmYWNpbGl0eT4gaW5zdGVhZFxuIik7CisgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAnbSc6CkBAIC05NDAsMTYgKzgyMCw4IEBACiAKICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IC1vIG9wdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgLUxmIDxmaWxlPiBpbnN0ZWFkXG4iKTsKLSAgICAgICAgICAgIGlmIChvcHRhcmcgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIGxvZ2ZpbGUgPSBvcHRhcmc7Ci0gICAgICAgICAgICAgICAgc25tcF9lbmFibGVfZmlsZWxvZyhvcHRhcmcsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUEVORF9MT0dGSUxFUykpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgICAgIGV4aXQoMSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICJXYXJuaW5nOiAtbyBvcHRpb24gaGFzIGJlZW4gd2l0aGRyYXduOyB1c2UgLUxmIDxmaWxlPiBpbnN0ZWFkXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdPJzoKQEAgLTk4MiwyMCArODU0LDE0IEBACiAKICAgICAgICAgY2FzZSAnUCc6CiAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmc6IC1QIG9wdGlvbiBpcyBkZXByZWNhdGVkOyB1c2UgLWYgLUxlIGluc3RlYWRcbiIpOwotICAgICAgICAgICAgZG9mb3JrID0gMDsKLSAgICAgICAgICAgIHNubXBfZW5hYmxlX3N0ZGVycmxvZygpOworICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLVAgb3B0aW9uIGhhcyBiZWVuIHdpdGhkcmF3bjsgdXNlIC1mIC1MZSBpbnN0ZWFkXG4iKTsKKyAgICAgICAgICAgIGV4aXQoMSk7CiAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLAotICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLXMgb3B0aW9uIGlzIGRlcHJlY2F0ZWQ7IHVzZSAtTHNkIGluc3RlYWRcbiIpOwotICAgICAgICAgICAgZGVwbXNnID0gMTsKLSNpZmRlZiBXSU4zMgotICAgICAgICAgICAgc25tcF9lbmFibGVfc3lzbG9nX2lkZW50KGFwcF9uYW1lX2xvbmcsIEZhY2lsaXR5KTsKLSNlbHNlCi0gICAgICAgICAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoYXBwX25hbWUsIEZhY2lsaXR5KTsKLSNlbmRpZgorICAgICAgICAgICAgICAgICAgICAiV2FybmluZzogLXMgb3B0aW9uIGhhcyBiZWVuIHdpdGhkcmF3bjsgdXNlIC1Mc2QgaW5zdGVhZFxuIik7CisgICAgICAgICAgICBleGl0KDEpOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAndCc6CkBAIC0xMDk3LDI0ICs5NjMsNiBAQAogICAgICAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX0xPRzsKICAgICB9CiAKLSAgICBpZiAoRXZlbnQpIHsKLSAgICAgICAgdHJhcGggPSBuZXRzbm1wX2FkZF90cmFwaGFuZGxlcihldmVudF9oYW5kbGVyLCByaXNpbmdBbGFybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHJpc2luZ0FsYXJtKSk7Ci0gICAgICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfTE9HOwotCi0gICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfdHJhcGhhbmRsZXIoZXZlbnRfaGFuZGxlciwgZmFsbGluZ0FsYXJtLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9JRF9MRU5HVEgoZmFsbGluZ0FsYXJtKSk7Ci0gICAgICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfTE9HOwotCi0gICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfdHJhcGhhbmRsZXIoZXZlbnRfaGFuZGxlciwgdW5hdmFpbGFibGVBbGFybSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPSURfTEVOR1RIKHVuYXZhaWxhYmxlQWxhcm0pKTsKLSAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9MT0c7Ci0JLyogWFhYIC0gbWlnaHQgYmUgd29ydGggc2V0dGluZyBzb21lICJtYWdpYyBkYXRhIgotCSAqIGluIHRoZSB0cmFwaGFuZGxlciBzdHJ1Y3R1cmUgdGhhdCAnZXZlbnRfaGFuZGxlcicKLQkgKiBjYW4gdXNlIHRvIGF2b2lkIGNoZWNraW5nIHRoZSB0cmFwIE9JRCB2YWx1ZXMuCi0JICovCi0gICAgfQotCiAjaWYgZGVmaW5lZChVU0lOR19BR0VOVFhfU1VCQUdFTlRfTU9EVUxFKSAmJiAhZGVmaW5lZChORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKICAgICAvKgogICAgICAqIHdlJ3JlIGFuIGFnZW50eCBzdWJhZ2VudD8gCkBAIC0xMjE5LDEwICsxMDY3LDcgQEAKICNlbmRpZgogCiAgICAgaWYgKHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIpIHsKLSAgICAgICAgZnJlZV90cmFwMV9mbXQoKTsKLSAgICAgICAgZnJlZV90cmFwMl9mbXQoKTsKLSAgICAgICAgcHJpbnRfZm9ybWF0MSA9IHN0cmR1cCh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKTsKLSAgICAgICAgcHJpbnRfZm9ybWF0MiA9IHN0cmR1cCh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKTsKKyAgICAgICAgcGFyc2VfZm9ybWF0KCBOVUxMLCB0cmFwMV9mbXRfc3RyX3JlbWVtYmVyICk7CiAgICAgfQogCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCkBAIC0xMjQ1LDYgKzEwOTAsNjMgQEAKICNlbmRpZiAgICAgICAgCiAgICAgfQogCisgICAgaWYgKGxpc3Rlbl9wb3J0cykKKyAgICAgICAgY3AgPSBsaXN0ZW5fcG9ydHM7CisgICAgZWxzZQorICAgICAgICBjcCA9IGRlZmF1bHRfcG9ydDsKKworICAgIHdoaWxlIChjcCAhPSBOVUxMKSB7CisgICAgICAgIGNoYXIgKnNlcCA9IHN0cmNocihjcCwgJywnKTsKKworICAgICAgICBpZiAoc2VwICE9IE5VTEwpIHsKKyAgICAgICAgICAgICpzZXAgPSAwOworICAgICAgICB9CisKKyAgICAgICAgdHJhbnNwb3J0ID0gbmV0c25tcF90cmFuc3BvcnRfb3Blbl9zZXJ2ZXIoInNubXB0cmFwIiwgY3ApOworICAgICAgICBpZiAodHJhbnNwb3J0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBvcGVuICVzIC0tIGVycm5vICVkIChcIiVzXCIpXG4iLAorICAgICAgICAgICAgICAgICAgICAgY3AsIGVycm5vLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgc25tcHRyYXBkX2Nsb3NlX3Nlc3Npb25zKHNlc3NfbGlzdCk7CisgICAgICAgICAgICBTT0NLX0NMRUFOVVA7CisgICAgICAgICAgICBleGl0KDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3MgPSBzbm1wdHJhcGRfYWRkX3Nlc3Npb24odHJhbnNwb3J0KTsKKyAgICAgICAgICAgIGlmIChzcyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgKiBTaG91bGRuJ3QgaGFwcGVuPyAgV2UgaGF2ZSBhbHJlYWR5IG9wZW5lZCB0aGUgdHJhbnNwb3J0CisgICAgICAgICAgICAgICAgICogc3VjY2Vzc2Z1bGx5IHNvIHdoYXQgY291bGQgaGF2ZSBnb25lIHdyb25nPyAgCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgc25tcHRyYXBkX2Nsb3NlX3Nlc3Npb25zKHNlc3NfbGlzdCk7CisgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0cmFuc3BvcnQpOworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJjb3VsZG4ndCBvcGVuIHNubXAgLSAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgICAgICAgICAgU09DS19DTEVBTlVQOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNzLT5uZXh0ID0gc2Vzc19saXN0OworICAgICAgICAgICAgICAgIHNlc3NfbGlzdCA9IHNzOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogUHJvY2VzcyBuZXh0IGxpc3RlbiBhZGRyZXNzLCBpZiB0aGVyZSBpcyBvbmUuICAKKyAgICAgICAgICovCisKKyAgICAgICAgaWYgKHNlcCAhPSBOVUxMKSB7CisgICAgICAgICAgICAqc2VwID0gJywnOworICAgICAgICAgICAgY3AgPSBzZXAgKyAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY3AgPSBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFNOTVBfRlJFRShsaXN0ZW5fcG9ydHMpOyAvKiBkb25lIHdpdGggdGhlbSAqLworCisjaWZkZWYgTkVUU05NUF9VU0VfTVlTUUwKKyAgICBpZiggbmV0c25tcF9teXNxbF9pbml0KCkgKSB7CisgICAgICAgIGZwcmludGYoc3RkZXJyLCAiTXlTUUwgaW5pdGlhbGl6YXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisjZW5kaWYKKwogI2lmbmRlZiBXSU4zMgogICAgIC8qCiAgICAgICogZm9yayB0aGUgcHJvY2VzcyB0byB0aGUgYmFja2dyb3VuZCBpZiB3ZSBhcmUgbm90IHByaW50aW5nIHRvIHN0ZGVyciAKQEAgLTEyOTQsNTggKzExOTYsNiBAQAogI2VuZGlmCiAKICAgICBzbm1wX2xvZyhMT0dfSU5GTywgIk5FVC1TTk1QIHZlcnNpb24gJXNcbiIsIG5ldHNubXBfZ2V0X3ZlcnNpb24oKSk7Ci0gICAgaWYgKGRlcG1zZykgewotICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgIi1zIGFuZCAtUyBvcHRpb25zIGFyZSBkZXByZWNhdGVkOyB1c2UgLUxzIDxmYWNpbGl0eT4gaW5zdGVhZFxuIik7Ci0gICAgfQotICAgIAotICAgIGlmIChsaXN0ZW5fcG9ydHMpCi0gICAgICAgIGNwID0gbGlzdGVuX3BvcnRzOwotICAgIGVsc2UKLSAgICAgICAgY3AgPSBkZWZhdWx0X3BvcnQ7Ci0KLSAgICB3aGlsZSAoY3AgIT0gTlVMTCkgewotICAgICAgICBjaGFyICpzZXAgPSBzdHJjaHIoY3AsICcsJyk7Ci0KLSAgICAgICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAqc2VwID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHRyYW5zcG9ydCA9IG5ldHNubXBfdHJhbnNwb3J0X29wZW5fc2VydmVyKCJzbm1wdHJhcCIsIGNwKTsKLSAgICAgICAgaWYgKHRyYW5zcG9ydCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3Qgb3BlbiAlcyAtLSBlcnJubyAlZCAoXCIlc1wiKVxuIiwKLSAgICAgICAgICAgICAgICAgICAgIGNwLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKTsKLSAgICAgICAgICAgIHNubXB0cmFwZF9jbG9zZV9zZXNzaW9ucyhzZXNzX2xpc3QpOwotICAgICAgICAgICAgU09DS19DTEVBTlVQOwotICAgICAgICAgICAgZXhpdCgxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNzID0gc25tcHRyYXBkX2FkZF9zZXNzaW9uKHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICBpZiAoc3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogU2hvdWxkbid0IGhhcHBlbj8gIFdlIGhhdmUgYWxyZWFkeSBvcGVuZWQgdGhlIHRyYW5zcG9ydAotICAgICAgICAgICAgICAgICAqIHN1Y2Nlc3NmdWxseSBzbyB3aGF0IGNvdWxkIGhhdmUgZ29uZSB3cm9uZz8gIAotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIHNubXB0cmFwZF9jbG9zZV9zZXNzaW9ucyhzZXNzX2xpc3QpOwotICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodHJhbnNwb3J0KTsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3Qgb3BlbiBzbm1wIC0gJXMiLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgICAgIFNPQ0tfQ0xFQU5VUDsKLSAgICAgICAgICAgICAgICBleGl0KDEpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBzcy0+bmV4dCA9IHNlc3NfbGlzdDsKLSAgICAgICAgICAgICAgICBzZXNzX2xpc3QgPSBzczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qCi0gICAgICAgICAqIFByb2Nlc3MgbmV4dCBsaXN0ZW4gYWRkcmVzcywgaWYgdGhlcmUgaXMgb25lLiAgCi0gICAgICAgICAqLwotCi0gICAgICAgIGlmIChzZXAgIT0gTlVMTCkgewotICAgICAgICAgICAgKnNlcCA9ICcsJzsKLSAgICAgICAgICAgIGNwID0gc2VwICsgMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGNwID0gTlVMTDsKLSAgICAgICAgfQotICAgIH0KIAogICAgIC8qCiAgICAgICogaWdub3JlIGVhcmx5IHNpZ2h1cCBkdXJpbmcgc3RhcnR1cApAQCAtMTQwMSwxMCArMTI1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9nZXRfdmVyc2lvbigpKTsKICAgICAgICAgICAgIHRyYXBkX3VwZGF0ZV9jb25maWcoKTsKICAgICAgICAgICAgIGlmICh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKSB7Ci0gICAgICAgICAgICAgICAgZnJlZV90cmFwMV9mbXQoKTsKLSAgICAgICAgICAgICAgICBmcmVlX3RyYXAyX2ZtdCgpOwotICAgICAgICAgICAgICAgIHByaW50X2Zvcm1hdDEgPSBzdHJkdXAodHJhcDFfZm10X3N0cl9yZW1lbWJlcik7Ci0gICAgICAgICAgICAgICAgcHJpbnRfZm9ybWF0MiA9IHN0cmR1cCh0cmFwMV9mbXRfc3RyX3JlbWVtYmVyKTsKKyAgICAgICAgICAgICAgICBwYXJzZV9mb3JtYXQoIE5VTEwsIHRyYXAxX2ZtdF9zdHJfcmVtZW1iZXIgKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlY29uZmlnID0gMDsKICAgICAgICAgfQpAQCAtMTQyMSw3ICsxMjY4LDcgQEAKICAgICAgICAgICAgIHR2cCA9IE5VTEw7ICAgICAgICAgLyogYmxvY2sgd2l0aG91dCB0aW1lb3V0ICovCiAgICAgICAgIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbygmbnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzKTsKICAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmcmVhZGZkcywgJndyaXRlZmRzLCAmZXhjZXB0ZmRzLCB0dnApOwotICAgICAgICBnZXR0aW1lb2ZkYXkoJk5vdywgMCk7CisgICAgICAgIGdldHRpbWVvZmRheSgmTm93LCBOVUxMKTsKICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMoJmNvdW50LCAmcmVhZGZkcywgJndyaXRlZmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4Y2VwdGZkcyk7CmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9hdXRoLmMgYi9hcHBzL3NubXB0cmFwZF9hdXRoLmMKaW5kZXggMTE5ZGU1OC4uYjdmYjYwNSAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfYXV0aC5jCisrKyBiL2FwcHMvc25tcHRyYXBkX2F1dGguYwpAQCAtMTI2LDggKzEyNiwxMCBAQAogICAgICAgICAvKiBwYXNzIHRoZSBQRFUgdG8gdGhlIFZBQ00gcm91dGluZSBmb3IgaGFuZGxpbmcgYXV0aG9yaXphdGlvbiAqLwogICAgICAgICBERUJVR01TR1RMKCgic25tcHRyYXBkOmF1dGgiLCAiQ2FsbGluZyBWQUNNIGZvciBjaGVja2luZyBwaGFzZSAlZDolc1xuIiwKICAgICAgICAgICAgICAgICAgICAgaSwgc2VfZmluZF9sYWJlbF9pbl9zbGlzdChWQUNNX1ZJRVdfRU5VTV9OQU1FLCBpKSkpOwotICAgICAgICBpZiAodmFjbV9jaGVja192aWV3KG5ld3BkdSwgdmFyLT52YWwub2JqaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyLT52YWxfbGVuL3NpemVvZihvaWQpLCAwLCBpKSA9PSBWQUNNX1NVQ0NFU1MpIHsKKyAgICAgICAgaWYgKHZhY21fY2hlY2tfdmlld19jb250ZW50cyhuZXdwZHUsIHZhci0+dmFsLm9iamlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+dmFsX2xlbi9zaXplb2Yob2lkKSwgMCwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWQUNNX0NIRUNLX1ZJRVdfQ09OVEVOVFNfRE5FX0NPTlRFWFRfT0spCisgICAgICAgICAgICA9PSBWQUNNX1NVQ0NFU1MpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQ6YXV0aCIsICIgIHJlc3VsdDogYXV0aG9yaXplZFxuIikpOwogICAgICAgICAgICAgcmV0IHw9IDEgPDwgaTsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5jCmluZGV4IDM3Y2E1YWIuLjAxNzZhYTcgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmMKKysrIGIvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuYwpAQCAtNDEsNiArNDEsMTEgQEAKIGNoYXIgKnN5c2xvZ19mb3JtYXQyID0gTlVMTDsKIGNoYXIgKnByaW50X2Zvcm1hdDEgID0gTlVMTDsKIGNoYXIgKnByaW50X2Zvcm1hdDIgID0gTlVMTDsKK2NoYXIgKmV4ZWNfZm9ybWF0MSAgID0gTlVMTDsKK2NoYXIgKmV4ZWNfZm9ybWF0MiAgID0gTlVMTDsKKworaW50ICAgU3lzbG9nVHJhcCA9IDA7CitpbnQgICBkcm9wYXV0aCA9IDA7CiAKIGNvbnN0IGNoYXIgICAgICp0cmFwMV9zdGRfc3RyID0gIiUuNHktJS4ybS0lLjJsICUuMmg6JS4yajolLjJrICVCIFslYl0gKHZpYSAlQSBbJWFdKTogJU5cblx0JVcgVHJhcCAoJXEpIFVwdGltZTogJSNUXG4ldlxuIjsKIGNvbnN0IGNoYXIgICAgICp0cmFwMl9zdGRfc3RyID0gIiUuNHktJS4ybS0lLjJsICUuMmg6JS4yajolLjJrICVCIFslYl06XG4ldlxuIjsKQEAgLTgxLDE5ICs4NiwyNyBAQAogICAgIGNoYXIgICAgICAgICAgICpjcHRyLCAqY3A7CiAgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICp0cmFwaDsKICAgICBpbnQgICAgICAgICAgICAgZmxhZ3MgPSAwOworICAgIGNoYXIgICAgICAgICAgICpmb3JtYXQgPSBOVUxMOwogCiAgICAgbWVtc2V0KCBidWYsIDAsIHNpemVvZihidWYpKTsKICAgICBtZW1zZXQob2J1ZiwgMCwgc2l6ZW9mKG9idWYpKTsKICAgICBjcHRyID0gY29weV9ud29yZChsaW5lLCBidWYsIHNpemVvZihidWYpKTsKKworICAgIGlmICggYnVmWzBdID09ICctJyAmJiBidWZbMV0gPT0gJ0YnICkgeworICAgICAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWYsIHNpemVvZihidWYpKTsKKyAgICAgICAgZm9ybWF0ID0gc3RyZHVwKCBidWYgKTsKKyAgICAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgfQogICAgIGlmICggIWNwdHIgKSB7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoIk1pc3NpbmcgdHJhcGhhbmRsZSBjb21tYW5kIik7CisgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJNaXNzaW5nIHRyYXBoYW5kbGUgY29tbWFuZCAoJXMpIiwgYnVmKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIERFQlVHTVNHVEwoKCJyZWFkX2NvbmZpZzp0cmFwaGFuZGxlIiwgInJlZ2lzdGVyaW5nIGhhbmRsZXIgZm9yOiAiKSk7CiAgICAgaWYgKCFzdHJjbXAoYnVmLCAiZGVmYXVsdCIpKSB7CiAgICAgICAgIERFQlVHTVNHKCgicmVhZF9jb25maWc6dHJhcGhhbmRsZSIsICJkZWZhdWx0IikpOwotICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2RlZmF1bHRfdHJhcGhhbmRsZXIoIGNvbW1hbmRfaGFuZGxlciApOworICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfREVGQVVMVF9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kX2hhbmRsZXIgKTsKICAgICB9IGVsc2UgewogICAgICAgICBjcCA9IGJ1ZitzdHJsZW4oYnVmKS0xOwogICAgICAgICBpZiAoICpjcCA9PSAnKicgKSB7CkBAIC0xMDgsMTEgKzEyMSw4IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFyZWFkX29iamlkKGJ1Ziwgb2J1ZiwgJm9sZW4pKSB7Ci0gICAgICAgICAgICBjaGFyICAgICAgICAgICAgYnVmMVtTVFJJTkdNQVhdOwotICAgICAgICAgICAgc25wcmludGYoYnVmMSwgIHNpemVvZihidWYxKSwKLSAgICAgICAgICAgICAgICAgICAgIkJhZCB0cmFwIE9JRCBpbiB0cmFwaGFuZGxlIGRpcmVjdGl2ZTogJXMiLCBidWYpOwotICAgICAgICAgICAgYnVmMVsgc2l6ZW9mKGJ1ZjEpLTEgXSA9IDA7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKGJ1ZjEpOworCSAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiQmFkIHRyYXAgT0lEIGluIHRyYXBoYW5kbGUgZGlyZWN0aXZlOiAlcyIsCisJCQkJIGJ1Zik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgREVCVUdNU0dPSUQoKCJyZWFkX2NvbmZpZzp0cmFwaGFuZGxlIiwgb2J1Ziwgb2xlbikpOwpAQCAtMTI1LDYgKzEzNSw4IEBACiAgICAgICAgIHRyYXBoLT5mbGFncyA9IGZsYWdzOwogICAgICAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX0VYRTsKICAgICAgICAgdHJhcGgtPnRva2VuID0gc3RyZHVwKGNwdHIpOworICAgICAgICBpZiAoZm9ybWF0KQorICAgICAgICAgICAgdHJhcGgtPmZvcm1hdCA9IGZvcm1hdDsKICAgICB9CiB9CiAKQEAgLTEzOCwxNyArMTUwLDI2IEBACiAgICAgY2hhciAgICAgICAgICAgKmNwdHIsICpjcDsKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogICAgIGludCAgICAgICAgICAgICBmbGFncyA9IDA7CisgICAgY2hhciAgICAgICAgICAgKmZvcm1hdCA9IE5VTEw7CiAKICAgICBtZW1zZXQoIGJ1ZiwgMCwgc2l6ZW9mKGJ1ZikpOwogICAgIG1lbXNldChvYnVmLCAwLCBzaXplb2Yob2J1ZikpOwogICAgIGNwdHIgPSBjb3B5X253b3JkKGxpbmUsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCisgICAgaWYgKCBidWZbMF0gPT0gJy0nICYmIGJ1ZlsxXSA9PSAnRicgKSB7CisgICAgICAgIGNwdHIgPSBjb3B5X253b3JkKGNwdHIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworICAgICAgICBmb3JtYXQgPSBzdHJkdXAoIGJ1ZiApOworICAgICAgICBjcHRyID0gY29weV9ud29yZChjcHRyLCBidWYsIHNpemVvZihidWYpKTsKKyAgICB9CiAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnOmZvcndhcmQiLCAicmVnaXN0ZXJpbmcgZm9yd2FyZCBmb3I6ICIpKTsKICAgICBpZiAoIXN0cmNtcChidWYsICJkZWZhdWx0IikpIHsKICAgICAgICAgREVCVUdNU0coKCJyZWFkX2NvbmZpZzpmb3J3YXJkIiwgImRlZmF1bHQiKSk7CiAgICAgICAgIGlmICggIXN0cmNtcCggY3B0ciwgImFnZW50eCIgKSkKLSAgICAgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZGVmYXVsdF90cmFwaGFuZGxlciggYXhmb3J3YXJkX2hhbmRsZXIgKTsKKyAgICAgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9ERUZBVUxUX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF4Zm9yd2FyZF9oYW5kbGVyICk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZGVmYXVsdF90cmFwaGFuZGxlciggZm9yd2FyZF9oYW5kbGVyICk7CisgICAgICAgICAgICB0cmFwaCA9IG5ldHNubXBfYWRkX2dsb2JhbF90cmFwaGFuZGxlcihORVRTTk1QVFJBUERfREVGQVVMVF9IQU5ETEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3J3YXJkX2hhbmRsZXIgKTsKICAgICB9IGVsc2UgewogICAgICAgICBjcCA9IGJ1ZitzdHJsZW4oYnVmKS0xOwogICAgICAgICBpZiAoICpjcCA9PSAnKicgKSB7CkBAIC0xNjQsMTEgKzE4NSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBpZiAoIXJlYWRfb2JqaWQoYnVmLCBvYnVmLCAmb2xlbikpIHsKLSAgICAgICAgICAgIGNoYXIgICAgICAgICAgICBidWYxW1NUUklOR01BWF07Ci0gICAgICAgICAgICBzbnByaW50ZihidWYxLCAgc2l6ZW9mKGJ1ZjEpLAotICAgICAgICAgICAgICAgICAgICAiQmFkIHRyYXAgT0lEIGluIGZvcndhcmQgZGlyZWN0aXZlOiAlcyIsIGJ1Zik7Ci0gICAgICAgICAgICBidWYxWyBzaXplb2YoYnVmMSktMSBdID0gMDsKLSAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmMSk7CisJICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKCJCYWQgdHJhcCBPSUQgaW4gZm9yd2FyZCBkaXJlY3RpdmU6ICVzIiwgYnVmKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBERUJVR01TR09JRCgoInJlYWRfY29uZmlnOmZvcndhcmQiLCBvYnVmLCBvbGVuKSk7CkBAIC0xODQsMTQgKzIwMSwxNiBAQAogICAgICAgICB0cmFwaC0+ZmxhZ3MgPSBmbGFnczsKICAgICAgICAgdHJhcGgtPmF1dGh0eXBlcyA9IFRSQVBfQVVUSF9ORVQ7CiAgICAgICAgIHRyYXBoLT50b2tlbiA9IHN0cmR1cChjcHRyKTsKKyAgICAgICAgaWYgKGZvcm1hdCkKKyAgICAgICAgICAgIHRyYXBoLT5mb3JtYXQgPSBmb3JtYXQ7CiAgICAgfQogfQogCiAKLXN0YXRpYyB2b2lkCit2b2lkCiBwYXJzZV9mb3JtYXQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmxpbmUpCiB7Ci0gICAgY2hhciAqY3A7CisgICAgY2hhciAqY3AsICpzZXA7CiAKICAgICAvKgogICAgICAqIEV4dHJhY3QgdGhlIGZpcnN0IHRva2VuIGZyb20gdGhlIHZhbHVlCkBAIC0yMDksOCArMjI4LDkgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIHNlcCA9IGNwOwogICAgICooY3ArKykgPSAnXDAnOwotICAgIHdoaWxlICgqY3AgJiYgIWlzc3BhY2UoKmNwKSkKKyAgICB3aGlsZSAoKmNwICYmIGlzc3BhY2UoKmNwKSkKICAgICAgICAgY3ArKzsKIAogICAgIC8qCkBAIC0yNDAsNyArMjYwLDIwIEBACiAgICAgICAgIFNOTVBfRlJFRSggc3lzbG9nX2Zvcm1hdDIgKTsKICAgICAgICAgc3lzbG9nX2Zvcm1hdDEgPSBzdHJkdXAoY3ApOwogICAgICAgICBzeXNsb2dfZm9ybWF0MiA9IHN0cmR1cChjcCk7CisgICAgfSBlbHNlIGlmICghc3RyY21wKCBsaW5lLCAiZXhlY3V0ZTEiKSkgeworICAgICAgICBTTk1QX0ZSRUUoIGV4ZWNfZm9ybWF0MSApOworICAgICAgICBleGVjX2Zvcm1hdDEgPSBzdHJkdXAoY3ApOworICAgIH0gZWxzZSBpZiAoIXN0cmNtcCggbGluZSwgImV4ZWN1dGUyIikpIHsKKyAgICAgICAgU05NUF9GUkVFKCBleGVjX2Zvcm1hdDIgKTsKKyAgICAgICAgZXhlY19mb3JtYXQyID0gc3RyZHVwKGNwKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAoIGxpbmUsICJleGVjdXRlIikpIHsKKyAgICAgICAgU05NUF9GUkVFKCBleGVjX2Zvcm1hdDEgKTsKKyAgICAgICAgU05NUF9GUkVFKCBleGVjX2Zvcm1hdDIgKTsKKyAgICAgICAgZXhlY19mb3JtYXQxID0gc3RyZHVwKGNwKTsKKyAgICAgICAgZXhlY19mb3JtYXQyID0gc3RyZHVwKGNwKTsKICAgICB9CisKKyAgICAqc2VwID0gJyAnOwogfQogCiAKQEAgLTI4OSw3ICszMjIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX3RyYXAyX2ZtdCwgZnJlZV90cmFwMl9mbXQsICJmb3JtYXQiKTsKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgImZvcm1hdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VfZm9ybWF0LCBOVUxMLAotCQkJICAgICJbcHJpbnR7LDEsMn18c3lzbG9neywxLDJ9XSBmb3JtYXQiKTsKKwkJCSAgICAiW3ByaW50eywxLDJ9fHN5c2xvZ3ssMSwyfXxleGVjdXRleywxLDJ9XSBmb3JtYXQiKTsKICAgICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigic25tcHRyYXBkIiwgImZvcndhcmQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlX2ZvcndhcmQsIE5VTEwsICJPSUR8XCJkZWZhdWx0XCIgZGVzdGluYXRpb24iKTsKIH0KQEAgLTMwOCwxMiArMzQxLDI2IEBACiBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKm5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnMgID0gTlVMTDsKIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqbmV0c25tcF9zcGVjaWZpY190cmFwaGFuZGxlcnMgPSBOVUxMOwogCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2hhbmRsZXJfbWFwX3QgeworICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICoqaGFuZGxlcjsKKyAgIGNvbnN0IGNoYXIgICAgICAgICAgICAgKmRlc2NyOworfSBuZXRzbm1wX2hhbmRsZXJfbWFwOworCitzdGF0aWMgbmV0c25tcF9oYW5kbGVyX21hcCBoYW5kbGVyc1tdID0geworICAgIHsgJm5ldHNubXBfYXV0aF9nbG9iYWxfdHJhcGhhbmRsZXJzLCAiYXV0aCB0cmFwIiB9LAorICAgIHsgJm5ldHNubXBfcHJlX2dsb2JhbF90cmFwaGFuZGxlcnMsICJwcmUtZ2xvYmFsIHRyYXAiIH0sCisgICAgeyBOVUxMLCAidHJhcCBzcGVjaWZpYyIgfSwKKyAgICB7ICZuZXRzbm1wX3Bvc3RfZ2xvYmFsX3RyYXBoYW5kbGVycywgImdsb2JhbCIgfSwKKyAgICB7IE5VTEwsIE5VTEwgfQorfTsKKwogLyoKICAqIFJlZ2lzdGVyIGEgbmV3ICJnbG9iYWwiIHRyYXBoYW5kbGVyLAogICogdG8gYmUgYXBwbGllZCB0byAqYWxsKiBpbmNvbWluZyB0cmFwcwogICovCiBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKgotbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKGludCBsaXN0LCBOZXRzbm1wX1RyYXBfSGFuZGxlciogaGFuZGxlcikgeworbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKGludCBsaXN0LCBOZXRzbm1wX1RyYXBfSGFuZGxlciBoYW5kbGVyKQorewogICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7CiAKICAgICBpZiAoICFoYW5kbGVyICkKQEAgLTMyNCw3ICszNzEsNyBAQAogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qCi0gICAgICogQWRkIHRoaXMgbmV3IGhhbmRsZXIgdG8gdGhlIGZyb250IG9mIHRoZSBhcHByb3ByaWF0ZSBnbG9iYWwgbGlzdAorICAgICAqIEFkZCB0aGlzIG5ldyBoYW5kbGVyIHRvIHRoZSBmcm9udCBvZiB0aGUgYXBwcm9wcmlhdGUgbGlzdAogICAgICAqICAgKG9yIHNob3VsZCBpdCBnbyBvbiB0aGUgZW5kPykKICAgICAgKi8KICAgICB0cmFwaC0+aGFuZGxlciA9IGhhbmRsZXI7CkBAIC0zNDIsNiArMzg5LDEwIEBACiAgICAgICAgIHRyYXBoLT5uZXh0aCAgID0gbmV0c25tcF9wb3N0X2dsb2JhbF90cmFwaGFuZGxlcnM7CiAgICAgICAgIG5ldHNubXBfcG9zdF9nbG9iYWxfdHJhcGhhbmRsZXJzID0gdHJhcGg7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUjoKKyAgICAgICAgdHJhcGgtPm5leHRoICAgPSBuZXRzbm1wX2RlZmF1bHRfdHJhcGhhbmRsZXJzOworICAgICAgICBuZXRzbm1wX2RlZmF1bHRfdHJhcGhhbmRsZXJzID0gdHJhcGg7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGZyZWUoIHRyYXBoICk7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzQ5LDMxICs0MDAsMTQgQEAKICAgICByZXR1cm4gdHJhcGg7CiB9CiAKLQogLyoKICAqIFJlZ2lzdGVyIGEgbmV3ICJkZWZhdWx0IiB0cmFwaGFuZGxlciwgdG8gYmUgYXBwbGllZCB0byBhbGwKICAqIHRyYXBzIHdpdGggbm8gc3BlY2lmaWMgdHJhcCBoYW5kbGVycyBvZiB0aGVpciBvd24uCiAgKi8KIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqCi1uZXRzbm1wX2FkZF9kZWZhdWx0X3RyYXBoYW5kbGVyKCBOZXRzbm1wX1RyYXBfSGFuZGxlciogaGFuZGxlcikgewotICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7Ci0KLSAgICBpZiAoICFoYW5kbGVyICkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICB0cmFwaCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90cmFwZF9oYW5kbGVyKTsKLSAgICBpZiAoICF0cmFwaCApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgLyoKLSAgICAgKiBBZGQgdGhpcyBuZXcgaGFuZGxlciB0byB0aGUgZnJvbnQgb2YgdGhlIGRlZmF1bHQgbGlzdAotICAgICAqICAgKG9yIHNob3VsZCBpdCBnbyBvbiB0aGUgZW5kPykKLSAgICAgKi8KLSAgICB0cmFwaC0+YXV0aHR5cGVzID0gVFJBUF9BVVRIX0FMTDsgLyogY2FsbGVycyB3aWxsIGxpa2VseSBjaGFuZ2UgdGhpcyAqLwotICAgIHRyYXBoLT5oYW5kbGVyID0gaGFuZGxlcjsKLSAgICB0cmFwaC0+bmV4dGggICA9IG5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnM7Ci0gICAgbmV0c25tcF9kZWZhdWx0X3RyYXBoYW5kbGVycyA9IHRyYXBoOwotICAgIHJldHVybiB0cmFwaDsKK25ldHNubXBfYWRkX2RlZmF1bHRfdHJhcGhhbmRsZXIoIE5ldHNubXBfVHJhcF9IYW5kbGVyIGhhbmRsZXIpIHsKKyAgICByZXR1cm4gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9ERUZBVUxUX0hBTkRMRVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKTsKIH0KIAogCkBAIC0zOTksNyArNDMzLDcgQEAKICAgICB0cmFwaC0+YXV0aHR5cGVzICAgPSBUUkFQX0FVVEhfQUxMOyAvKiBjYWxsZXJzIHdpbGwgbGlrZWx5IGNoYW5nZSB0aGlzICovCiAgICAgdHJhcGgtPmhhbmRsZXIgICAgID0gaGFuZGxlcjsKICAgICB0cmFwaC0+dHJhcG9pZF9sZW4gPSB0cmFwT2lkTGVuOwotICAgIHRyYXBoLT50cmFwb2lkID0gbmV0c25tcF9tZW1kdXAodHJhcE9pZCwgc2l6ZW9mKG9pZCkgKiB0cmFwT2lkTGVuKTsKKyAgICB0cmFwaC0+dHJhcG9pZCAgICAgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZCh0cmFwT2lkLCB0cmFwT2lkTGVuKTsKIAogICAgIC8qCiAgICAgICogTm93IHRyeSB0byBmaW5kIHRoZSBhcHByb3ByaWF0ZSBwbGFjZSBpbiB0aGUgdHJhcC1zcGVjaWZpYwpAQCAtNTE0LDggKzU0OCwxMyBAQAogbmV0c25tcF9nZXRfdHJhcGhhbmRsZXIoIG9pZCAqdHJhcE9pZCwgaW50IHRyYXBPaWRMZW4gKSB7CiAgICAgbmV0c25tcF90cmFwZF9oYW5kbGVyICp0cmFwaDsKICAgICAKLSAgICBpZiAoIXRyYXBPaWQgfHwgIXRyYXBPaWRMZW4pCisgICAgaWYgKCF0cmFwT2lkIHx8ICF0cmFwT2lkTGVuKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkOmxvb2t1cCIsICJnZXRfdHJhcGhhbmRsZXIgbm8gT0lEIVxuIikpOwogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQ6bG9va3VwIiwgIkxvb2tpbmcgdXAgVHJhcCBPSUQ6ICIpKTsKKyAgICBERUJVR01TR09JRCgoInNubXB0cmFwZDpsb29rdXAiLCB0cmFwT2lkLCB0cmFwT2lkTGVuKSk7CisgICAgREVCVUdNU0coKCAic25tcHRyYXBkOmxvb2t1cCIsICJcbiIpKTsKIAogICAgIC8qCiAgICAgICogTG9vayBmb3IgYSBtYXRjaGluZyBPSUQsIGFuZCByZXR1cm4gdGhhdCBsaXN0Li4uCkBAIC01MzAsNyArNTY5LDggQEAKICAgICAgICAgaWYgKCEodHJhcGgtPmZsYWdzICYgTkVUU05NUF9UUkFQSEFORExFUl9GTEFHX01BVENIX1RSRUUpKSB7CiAgICAgICAgICAgICBpZiAoc25tcF9vaWRfY29tcGFyZSh0cmFwaC0+dHJhcG9pZCwgdHJhcGgtPnRyYXBvaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcE9pZCwgdHJhcE9pZExlbikgPT0gMCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImdldF90cmFwaGFuZGxlciBleGFjdCBtYXRjaCAoJXgpXG4iLCB0cmFwaCkpOworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkOmxvb2t1cCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZXRfdHJhcGhhbmRsZXIgZXhhY3QgbWF0Y2ggKCVwKVxuIiwgdHJhcGgpKTsKIAkgICAgICAgIHJldHVybiB0cmFwaDsKICAgICAgICAgICAgIH0KIAl9IGVsc2UgewpAQCAtNTQ4LDExICs1ODgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgICAgIGlmIChzbm1wX29pZF9jb21wYXJlKHRyYXBoLT50cmFwb2lkLCB0cmFwaC0+dHJhcG9pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYXBPaWQsIHRyYXBPaWRMZW4pICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImdldF90cmFwaGFuZGxlciBzdHJpY3Qgc3VidHJlZSBtYXRjaCAoJXgpXG4iLCB0cmFwaCkpOworICAgICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQ6bG9va3VwIiwgImdldF90cmFwaGFuZGxlciBzdHJpY3Qgc3VidHJlZSBtYXRjaCAoJXApXG4iLCB0cmFwaCkpOwogCSAgICAgICAgICAgICAgICByZXR1cm4gdHJhcGg7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJnZXRfdHJhcGhhbmRsZXIgc3VidHJlZSBtYXRjaCAoJXgpXG4iLCB0cmFwaCkpOworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZDpsb29rdXAiLCAiZ2V0X3RyYXBoYW5kbGVyIHN1YnRyZWUgbWF0Y2ggKCVwKVxuIiwgdHJhcGgpKTsKIAkgICAgICAgICAgICByZXR1cm4gdHJhcGg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTYyLDcgKzYwMiw3IEBACiAgICAgLyoKICAgICAgKiAuLi4uIG9yIGZhaWxpbmcgdGhhdCwgcmV0dXJuIHRoZSAiZGVmYXVsdCIgbGlzdCAod2hpY2ggbWF5IGJlIE5VTEwpCiAgICAgICovCi0gICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZ2V0X3RyYXBoYW5kbGVyIGRlZmF1bHQgKCV4KVxuIiwKKyAgICBERUJVR01TR1RMKCggInNubXB0cmFwZDpsb29rdXAiLCAiZ2V0X3RyYXBoYW5kbGVyIGRlZmF1bHQgKCVwKVxuIiwKIAkJCSAgICBuZXRzbm1wX2RlZmF1bHRfdHJhcGhhbmRsZXJzKSk7CiAgICAgcmV0dXJuIG5ldHNubXBfZGVmYXVsdF90cmFwaGFuZGxlcnM7CiB9CkBAIC01ODcsNyArNjI3LDYgQEAKICAgICB1X2NoYXIgICAgICAgICAqcmJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90ICAgICAgICAgIHJfbGVuID0gNjQsIG9fbGVuID0gMDsKICAgICBpbnQgICAgICAgICAgICAgdHJ1bmMgPSAwOwotICAgIGV4dGVybiBpbnQgICAgICBTeXNsb2dUcmFwOwogCiAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAic3lzbG9nX2hhbmRsZXJcbiIpKTsKIApAQCAtNjcwLDcgKzcwOSw2IEBACiAgICAgdV9jaGFyICAgICAgICAgKnJidWYgPSBOVUxMOwogICAgIHNpemVfdCAgICAgICAgICByX2xlbiA9IDY0LCBvX2xlbiA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIHRydW5jID0gMDsKLSAgICBleHRlcm4gaW50ICAgICAgZHJvcGF1dGg7CiAKICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJwcmludF9oYW5kbGVyXG4iKSk7CiAKQEAgLTczOCwxNTkgKzc3NiwxMSBAQAogfQogCiAKKyNkZWZpbmUgRVhFQ1VURV9GT1JNQVQJIiVCXG4lYlxuJVZcbiV2XG4iCisKIC8qCiAgKiAgVHJhcCBoYW5kbGVyIGZvciBpbnZva2luZyBhIHN1aXRhYmxlIHNjcmlwdAogICovCi12b2lkCi1zZW5kX2hhbmRsZXJfZGF0YShGSUxFICogZmlsZSwgc3RydWN0IGhvc3RlbnQgKmhvc3QsCi0gICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqcGR1LCBuZXRzbm1wX3RyYW5zcG9ydCAqdHJhbnNwb3J0KQotewotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCB0bXB2YXIsICp2YXJzOwotICAgIHN0YXRpYyBvaWQgICAgICB0cmFwb2lkc1tdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA1LCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIHNubXBzeXN1cHRpbWVbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSwgMSwgMywgMCB9OwotICAgIHN0YXRpYyBvaWQgICAgICBzbm1wdHJhcG9pZFtdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIHNubXB0cmFwZW50W10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDEsIDEsIDQsIDMsIDAgfTsKLSAgICBzdGF0aWMgb2lkICAgICAgc25tcHRyYXBhZGRyW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDE4LCAxLCAzLCAwIH07Ci0gICAgc3RhdGljIG9pZCAgICAgIHNubXB0cmFwY29tW10gPSB7IDEsIDMsIDYsIDEsIDYsIDMsIDE4LCAxLCA0LCAwIH07Ci0gICAgb2lkICAgICAgICAgICAgIGVudHRyYXBvaWRbTUFYX09JRF9MRU5dOwotICAgIGludCAgICAgICAgICAgICBlbnR0cmFwbGVuID0gcGR1LT5lbnRlcnByaXNlX2xlbmd0aDsKLQotICAgIGlmICh0cmFuc3BvcnQgIT0gTlVMTCAmJiB0cmFuc3BvcnQtPmZfZm10YWRkciAhPSBOVUxMKSB7Ci0gICAgICAgIGNoYXIgKnRzdHIgPSB0cmFuc3BvcnQtPmZfZm10YWRkcih0cmFuc3BvcnQsIHBkdS0+dHJhbnNwb3J0X2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7Ci0gICAgICAgIGlmICh0c3RyICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZwcmludGYoZmlsZSwgIiVzXG4lc1xuIiwgaG9zdCA/IGhvc3QtPmhfbmFtZSA6IHRzdHIsIHRzdHIpOwotICAgICAgICAgICAgZnJlZSh0c3RyKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGZwcmludGYoZmlsZSwgIiVzXG48VU5LTk9XTj5cbiIsIGhvc3QgPyBob3N0LT5oX25hbWUgOiAiPFVOS05PV04+Iik7Ci0gICAgfQotICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfVFJBUCkgewotICAgICAgICAvKgotICAgICAgICAgKiBjb252ZXJ0IGEgdjEgdHJhcCB0byBhIHYyIHZhcmlhYmxlIGJpbmRpbmcgbGlzdDoKLSAgICAgICAgICogVGhlIHVwdGltZSBhbmQgdHJhcE9JRCBnbyBmaXJzdCBpbiB0aGUgbGlzdC4gCi0gICAgICAgICAqLwotICAgICAgICB0bXB2YXIudmFsLmludGVnZXIgPSAobG9uZyAqKSAmcGR1LT50aW1lOwotICAgICAgICB0bXB2YXIudmFsX2xlbiA9IHNpemVvZihwZHUtPnRpbWUpOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9USU1FVElDS1M7Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wc3lzdXB0aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNubXBzeXN1cHRpbWUpIC8gc2l6ZW9mKG9pZCksICZ0bXB2YXIpOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9PQkpFQ1RfSUQ7Ci0gICAgICAgIGlmIChwZHUtPnRyYXBfdHlwZSA9PSBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDKSB7Ci0gICAgICAgICAgICBtZW1jcHkoZW50dHJhcG9pZCwgcGR1LT5lbnRlcnByaXNlLCBzaXplb2Yob2lkKSAqIGVudHRyYXBsZW4pOwotICAgICAgICAgICAgaWYgKGVudHRyYXBvaWRbZW50dHJhcGxlbiAtIDFdICE9IDApCi0gICAgICAgICAgICAgICAgZW50dHJhcG9pZFtlbnR0cmFwbGVuKytdID0gMDsKLSAgICAgICAgICAgIGVudHRyYXBvaWRbZW50dHJhcGxlbisrXSA9IHBkdS0+c3BlY2lmaWNfdHlwZTsKLSAgICAgICAgICAgIHRtcHZhci52YWwub2JqaWQgPSBlbnR0cmFwb2lkOwotICAgICAgICAgICAgdG1wdmFyLnZhbF9sZW4gPSBlbnR0cmFwbGVuICogc2l6ZW9mKG9pZCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0cmFwb2lkc1s5XSA9IHBkdS0+dHJhcF90eXBlICsgMTsKLSAgICAgICAgICAgIHRtcHZhci52YWwub2JqaWQgPSB0cmFwb2lkczsKLSAgICAgICAgICAgIHRtcHZhci52YWxfbGVuID0gMTAgKiBzaXplb2Yob2lkKTsKLSAgICAgICAgfQotICAgICAgICBmcHJpbnRfdmFyaWFibGUoZmlsZSwgc25tcHRyYXBvaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yoc25tcHRyYXBvaWQpIC8gc2l6ZW9mKG9pZCksICZ0bXB2YXIpOwotICAgIH0KLSAgICAvKgotICAgICAqIGRvIHRoZSB2YXJpYWJsZXMgaW4gdGhlIHBkdSAKLSAgICAgKi8KLSAgICBmb3IgKHZhcnMgPSBwZHUtPnZhcmlhYmxlczsgdmFyczsgdmFycyA9IHZhcnMtPm5leHRfdmFyaWFibGUpIHsKLSAgICAgICAgZnByaW50X3ZhcmlhYmxlKGZpbGUsIHZhcnMtPm5hbWUsIHZhcnMtPm5hbWVfbGVuZ3RoLCB2YXJzKTsKLSAgICB9Ci0gICAgaWYgKHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19UUkFQKSB7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIGNvbnZlcnQgYSB2MSB0cmFwIHRvIGEgdjIgdmFyaWFibGUgYmluZGluZyBsaXN0OgotICAgICAgICAgKiBUaGUgZW50ZXJwcmlzZSBnb2VzIGxhc3QuIAotICAgICAgICAgKi8KLSAgICAgICAgdG1wdmFyLnZhbC5zdHJpbmcgPSBwZHUtPmFnZW50X2FkZHI7Ci0gICAgICAgIHRtcHZhci52YWxfbGVuID0gNDsKLSAgICAgICAgdG1wdmFyLnR5cGUgPSBBU05fSVBBRERSRVNTOwotICAgICAgICBmcHJpbnRfdmFyaWFibGUoZmlsZSwgc25tcHRyYXBhZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHNubXB0cmFwYWRkcikgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgICAgIHRtcHZhci52YWwuc3RyaW5nID0gcGR1LT5jb21tdW5pdHk7Ci0gICAgICAgIHRtcHZhci52YWxfbGVuID0gcGR1LT5jb21tdW5pdHlfbGVuOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9PQ1RFVF9TVFI7Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wdHJhcGNvbSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzbm1wdHJhcGNvbSkgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgICAgIHRtcHZhci52YWwub2JqaWQgPSBwZHUtPmVudGVycHJpc2U7Ci0gICAgICAgIHRtcHZhci52YWxfbGVuID0gcGR1LT5lbnRlcnByaXNlX2xlbmd0aCAqIHNpemVvZihvaWQpOwotICAgICAgICB0bXB2YXIudHlwZSA9IEFTTl9PQkpFQ1RfSUQ7Ci0gICAgICAgIGZwcmludF92YXJpYWJsZShmaWxlLCBzbm1wdHJhcGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzbm1wdHJhcGVudCkgLyBzaXplb2Yob2lkKSwgJnRtcHZhcik7Ci0gICAgfQotfQotCi12b2lkCi1kb19leHRlcm5hbChjaGFyICpjbWQsIHN0cnVjdCBob3N0ZW50ICpob3N0LAotICAgICAgICAgICAgbmV0c25tcF9wZHUgKnBkdSwgbmV0c25tcF90cmFuc3BvcnQgKnRyYW5zcG9ydCkKLXsKLSAgICBGSUxFICAgICAgICAgICAqZmlsZTsKLSAgICBpbnQgICAgICAgICAgICAgb2xkcXVpY2ssIHJlc3VsdDsKLQotICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQiLCAiUnVubmluZzogJXNcbiIsIGNtZCkpOwotICAgIG9sZHF1aWNrID0gc25tcF9nZXRfcXVpY2tfcHJpbnQoKTsKLSAgICBzbm1wX3NldF9xdWlja19wcmludCgxKTsKLSAgICBpZiAoY21kKSB7Ci0jaWZuZGVmIFdJTjMyCi0gICAgICAgIGludCAgICAgICAgICAgICBmZFsyXTsKLSAgICAgICAgaW50ICAgICAgICAgICAgIHBpZDsKLQotICAgICAgICBpZiAocGlwZShmZCkpIHsKLSAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigicGlwZSIpOwotICAgICAgICB9Ci0gICAgICAgIGlmICgocGlkID0gZm9yaygpKSA9PSAwKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogY2hpbGQgCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGNsb3NlKDApOwotICAgICAgICAgICAgaWYgKGR1cChmZFswXSkgIT0gMCkgewotICAgICAgICAgICAgICAgIHNubXBfbG9nX3BlcnJvcigiZHVwIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbG9zZShmZFsxXSk7Ci0gICAgICAgICAgICBjbG9zZShmZFswXSk7Ci0gICAgICAgICAgICBzeXN0ZW0oY21kKTsKLSAgICAgICAgICAgIGV4aXQoMCk7Ci0gICAgICAgIH0gZWxzZSBpZiAocGlkID4gMCkgewotICAgICAgICAgICAgZmlsZSA9IGZkb3BlbihmZFsxXSwgInciKTsKLSAgICAgICAgICAgIHNlbmRfaGFuZGxlcl9kYXRhKGZpbGUsIGhvc3QsIHBkdSwgdHJhbnNwb3J0KTsKLSAgICAgICAgICAgIGZjbG9zZShmaWxlKTsKLSAgICAgICAgICAgIGNsb3NlKGZkWzBdKTsKLSAgICAgICAgICAgIGNsb3NlKGZkWzFdKTsKLSAgICAgICAgICAgIGlmICh3YWl0cGlkKHBpZCwgJnJlc3VsdCwgMCkgPCAwKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2dfcGVycm9yKCJ3YWl0cGlkIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzbm1wX2xvZ19wZXJyb3IoImZvcmsiKTsKLSAgICAgICAgfQotI2Vsc2UKLSAgICAgICAgY2hhciAgICAgICAgICAgIGNvbW1hbmRfYnVmWzEyOF07Ci0gICAgICAgIGNoYXIgICAgICAgICAgICBmaWxlX2J1ZltMX3RtcG5hbV07Ci0KLSAgICAgICAgdG1wbmFtKGZpbGVfYnVmKTsKLSAgICAgICAgZmlsZSA9IGZvcGVuKGZpbGVfYnVmLCAidyIpOwotICAgICAgICBpZiAoIWZpbGUpIHsKLSAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZm9wZW46ICVzOiAlc1xuIiwgZmlsZV9idWYsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzZW5kX2hhbmRsZXJfZGF0YShmaWxlLCBob3N0LCBwZHUsIHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICBmY2xvc2UoZmlsZSk7Ci0gICAgICAgICAgICBzbnByaW50Zihjb21tYW5kX2J1Ziwgc2l6ZW9mKGNvbW1hbmRfYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICIlcyA8ICVzIiwgY21kLCBmaWxlX2J1Zik7Ci0gICAgICAgICAgICBjb21tYW5kX2J1Zlsgc2l6ZW9mKGNvbW1hbmRfYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgcmVzdWx0ID0gc3lzdGVtKGNvbW1hbmRfYnVmKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJzeXN0ZW06ICVzOiAlc1xuIiwgY29tbWFuZF9idWYsCi0gICAgICAgICAgICAgICAgICAgICAgICBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgZWxzZSBpZiAocmVzdWx0KQotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAic3lzdGVtOiAlczogJWRcbiIsIGNvbW1hbmRfYnVmLCByZXN1bHQpOwotICAgICAgICAgICAgcmVtb3ZlKGZpbGVfYnVmKTsKLSAgICAgICAgfQotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXSU4zMiAqLwotICAgIH0KLSAgICBzbm1wX3NldF9xdWlja19wcmludChvbGRxdWljayk7Ci19Ci0KLSNkZWZpbmUgRVhFQ1VURV9GT1JNQVQJIiVCXG4lYlxuJVZcbiV2XG4iCi0KIGludCAgIGNvbW1hbmRfaGFuZGxlciggbmV0c25tcF9wZHUgICAgICAgICAgICpwZHUsCiAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICAgICAqdHJhbnNwb3J0LAogICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKmhhbmRsZXIpCkBAIC05MjgsMTYgKzgxOCwyNSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlci0+Zm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjJfcGR1LCB0cmFuc3BvcnQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZXhlY3V0ZSBmb3JtYXRcbiIpKTsKLSAgICAgICAgICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoJnJidWYsICZyX2xlbiwgJm9fbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVhFQ1VURV9GT1JNQVQsCisJICAgIGlmICggcGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1RSQVAgJiYgZXhlY19mb3JtYXQxICkgeworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCAic25tcHRyYXBkIiwgImV4ZWMgdjEgPSAnJXMnXG4iLCBleGVjX2Zvcm1hdDEpKTsKKyAgICAgICAgICAgICAgICByZWFsbG9jX2Zvcm1hdF90cmFwKCZyYnVmLCAmcl9sZW4sICZvX2xlbiwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWNfZm9ybWF0MSwgcGR1LCB0cmFuc3BvcnQpOworCSAgICB9IGVsc2UgaWYgKCBwZHUtPmNvbW1hbmQgIT0gU05NUF9NU0dfVFJBUCAmJiBleGVjX2Zvcm1hdDIgKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoICJzbm1wdHJhcGQiLCAiZXhlYyB2Mi8zID0gJyVzJ1xuIiwgZXhlY19mb3JtYXQyKSk7CisgICAgICAgICAgICAgICAgcmVhbGxvY19mb3JtYXRfdHJhcCgmcmJ1ZiwgJnJfbGVuLCAmb19sZW4sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVjX2Zvcm1hdDIsIHBkdSwgdHJhbnNwb3J0KTsKKwkgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJleGVjdXRlIGZvcm1hdFxuIikpOworICAgICAgICAgICAgICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoJnJidWYsICZyX2xlbiwgJm9fbGVuLCAxLCBFWEVDVVRFX0ZPUk1BVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYyX3BkdSwgdHJhbnNwb3J0KTsKKyAgICAgICAgICAgIH0KIAl9CiAKICAgICAgICAgLyoKICAgICAgICAgICogIGFuZCBwYXNzIHRoaXMgZm9ybWF0dGVkIHN0cmluZyB0byB0aGUgY29tbWFuZCBzcGVjaWZpZWQKICAgICAgICAgICovCi0gICAgICAgIHJ1bl9zaGVsbF9jb21tYW5kKGhhbmRsZXItPnRva2VuLCAoY2hhciopcmJ1ZiwgTlVMTCwgMCk7ICAgLyogTm90IGludGVyZXN0ZWQgaW4gb3V0cHV0ICovCisgICAgICAgIHJ1bl9zaGVsbF9jb21tYW5kKGhhbmRsZXItPnRva2VuLCAoY2hhciopcmJ1ZiwgTlVMTCwgTlVMTCk7ICAgLyogTm90IGludGVyZXN0ZWQgaW4gb3V0cHV0ICovCiAgICAgICAgIHNubXBfc2V0X3F1aWNrX3ByaW50KG9sZHF1aWNrKTsKICAgICAgICAgaWYgKHBkdS0+Y29tbWFuZCA9PSBTTk1QX01TR19UUkFQKQogICAgICAgICAgICAgc25tcF9mcmVlX3BkdSh2Ml9wZHUpOwpAQCAtOTUwLDIzICs4NDksNiBAQAogCiAKIC8qCi0gKiAgVHJhcCBoYW5kbGVyIGZvciBkb2luZyBzb21ldGhpbmcgd2l0aCAiZXZlbnQiIHRyYXBzCi0gKiAgICAgIChub3QgZW50aXJlbHkgY2xlYXIgd2hhdCB0aGlzIGlzIGFib3V0ID8/PykKLSAqLwotCS8qIFhYWCAtIGluIHNubXB0cmFwZC5jICovCi12b2lkIGV2ZW50X2lucHV0KG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZwKTsKLQotaW50ICAgZXZlbnRfaGFuZGxlciggbmV0c25tcF9wZHUgICAgICAgICAgICpwZHUsCi0gICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydCAgICAgKnRyYW5zcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqaGFuZGxlcikKLXsKLSAgICBERUJVR01TR1RMKCggInNubXB0cmFwZCIsICJldmVudF9oYW5kbGVyXG4iKSk7Ci0gICAgZXZlbnRfaW5wdXQocGR1LT52YXJpYWJsZXMpOwotICAgIHJldHVybiBORVRTTk1QVFJBUERfSEFORExFUl9PSzsKLX0KLQotCi0vKgogICogIFRyYXAgaGFuZGxlciBmb3IgZm9yd2FyZGluZyB0byB0aGUgQWdlbnRYIG1hc3RlciBhZ2VudAogICovCiBpbnQgYXhmb3J3YXJkX2hhbmRsZXIoIG5ldHNubXBfcGR1ICAgICAgICAgICAqcGR1LApAQCAtMTA1NSw3ICs5MzcsNyBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyczsKICAgICBuZXRzbm1wX3RyYXBkX2hhbmRsZXIgKnRyYXBoOwogICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSAobmV0c25tcF90cmFuc3BvcnQgKikgbWFnaWM7Ci0gICAgaW50IHJldDsKKyAgICBpbnQgcmV0LCBpZHg7CiAgICAgZXh0ZXJuIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqbmV0c25tcF9hdXRoX2dsb2JhbF90cmFwaGFuZGxlcnM7CiAgICAgZXh0ZXJuIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqbmV0c25tcF9wcmVfZ2xvYmFsX3RyYXBoYW5kbGVyczsKICAgICBleHRlcm4gbmV0c25tcF90cmFwZF9oYW5kbGVyICpuZXRzbm1wX3Bvc3RfZ2xvYmFsX3RyYXBoYW5kbGVyczsKQEAgLTExNTYsNzcgKzEwMzgsMjYgQEAKICAgICAgICAgICogIE9LIC0gRW5vdWdoIHdhZmZsaW5nLCBsZXQncyBnZXQgdG8gd29yay4uLi4uCiAJICovCiAKLSAgICAgICAgLyoKLQkgKiAgYSkgYXV0aGVudGljYXRpb24gaGFuZGxlcnMKLQkgKi8KLSAgICAgICAgdHJhcGggPSBuZXRzbm1wX2F1dGhfZ2xvYmFsX3RyYXBoYW5kbGVyczsKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXB0cmFwZCIsICJSdW5uaW5nIGF1dGggdHJhcCBoYW5kbGVyc1xuIikpOwotCXdoaWxlICh0cmFwaCkgewotICAgICAgICAgICAgaWYgKCFuZXRzbm1wX3RyYXBkX2NoZWNrX2F1dGgodHJhcGgtPmF1dGh0eXBlcykpIHsKLSAgICAgICAgICAgICAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogd2UgY29udGludWUgb24gYW5kIHNraXAgdGhpcyBvbmUgKi8KLSAgICAgICAgICAgIH0KLQkgICAgcmV0ID0gKCoodHJhcGgtPmhhbmRsZXIpKShwZHUsIHRyYW5zcG9ydCwgdHJhcGgpOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9GSU5JU0gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0JSRUFLKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCSAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLQl9CisgICAgICAgIGZvciggaWR4ID0gMDsgaGFuZGxlcnNbaWR4XS5kZXNjcjsgKytpZHggKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcHRyYXBkIiwgIlJ1bm5pbmcgJXMgaGFuZGxlcnNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyc1tpZHhdLmRlc2NyKSk7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBoYW5kbGVyc1tpZHhdLmhhbmRsZXIpIC8qIHNwZWNpZmljICovCisgICAgICAgICAgICAgICAgdHJhcGggPSBuZXRzbm1wX2dldF90cmFwaGFuZGxlcih0cmFwT2lkLCB0cmFwT2lkTGVuKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0cmFwaCA9ICpoYW5kbGVyc1tpZHhdLmhhbmRsZXI7CiAKLSAgICAgICAgLyoKLQkgKiAgYikgcHJlLXNwZWNpZmljIGdsb2JhbCBoYW5kbGVycwotCSAqLwotICAgICAgICB0cmFwaCA9IG5ldHNubXBfcHJlX2dsb2JhbF90cmFwaGFuZGxlcnM7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQiLCAiUnVubmluZyBwcmUtZ2xvYmFsIHRyYXAgaGFuZGxlcnNcbiIpKTsKLQl3aGlsZSAodHJhcGgpIHsKLSAgICAgICAgICAgIGlmICghbmV0c25tcF90cmFwZF9jaGVja19hdXRoKHRyYXBoLT5hdXRodHlwZXMpKSB7Ci0gICAgICAgICAgICAgICAgdHJhcGggPSB0cmFwaC0+bmV4dGg7Ci0gICAgICAgICAgICAgICAgY29udGludWU7IC8qIHdlIGNvbnRpbnVlIG9uIGFuZCBza2lwIHRoaXMgb25lICovCi0gICAgICAgICAgICB9Ci0JICAgIHJldCA9ICgqKHRyYXBoLT5oYW5kbGVyKSkocGR1LCB0cmFuc3BvcnQsIHRyYXBoKTsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gTkVUU05NUFRSQVBEX0hBTkRMRVJfRklOSVNIKQotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9CUkVBSykKLSAgICAgICAgICAgICAgICBicmVhazsKLQkgICAgdHJhcGggPSB0cmFwaC0+bmV4dGg7Ci0JfQorICAgICAgICAgICAgZm9yKCA7IHRyYXBoOyB0cmFwaCA9IHRyYXBoLT5uZXh0aCkgeworICAgICAgICAgICAgICAgIGlmICghbmV0c25tcF90cmFwZF9jaGVja19hdXRoKHRyYXBoLT5hdXRodHlwZXMpKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogd2UgY29udGludWUgb24gYW5kIHNraXAgdGhpcyBvbmUgKi8KIAotICAgICAgICAvKgotCSAqICBjKSB0cmFwLXNwZWNpZmljIGhhbmRsZXJzCi0JICovCi0gICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdHJhcGQiLCAiUnVubmluZyB0cmFwIHNwZWNpZmljIGhhbmRsZXJzXG4iKSk7Ci0gICAgICAgIHRyYXBoID0gbmV0c25tcF9nZXRfdHJhcGhhbmRsZXIodHJhcE9pZCwgdHJhcE9pZExlbik7Ci0Jd2hpbGUgKHRyYXBoKSB7Ci0gICAgICAgICAgICBpZiAoIW5ldHNubXBfdHJhcGRfY2hlY2tfYXV0aCh0cmFwaC0+YXV0aHR5cGVzKSkgewotICAgICAgICAgICAgICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvKiB3ZSBjb250aW51ZSBvbiBhbmQgc2tpcCB0aGlzIG9uZSAqLwotICAgICAgICAgICAgfQotCSAgICByZXQgPSAoKih0cmFwaC0+aGFuZGxlcikpKHBkdSwgdHJhbnNwb3J0LCB0cmFwaCk7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0ZJTklTSCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIGlmIChyZXQgPT0gTkVUU05NUFRSQVBEX0hBTkRMRVJfQlJFQUspCi0gICAgICAgICAgICAgICAgYnJlYWs7Ci0JICAgIHRyYXBoID0gdHJhcGgtPm5leHRoOwotCX0KKyAgICAgICAgICAgICAgICByZXQgPSAoKih0cmFwaC0+aGFuZGxlcikpKHBkdSwgdHJhbnNwb3J0LCB0cmFwaCk7CisgICAgICAgICAgICAgICAgaWYoTkVUU05NUFRSQVBEX0hBTkRMRVJfRklOSVNIID09IHJldCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9CUkVBSykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG1vdmUgb24gdG8gbmV4dCB0eXBlICovCisgICAgICAgICAgICB9IC8qIHRyYXBoICovCisgICAgICAgIH0gLyogaGFuZGxlcnMgKi8KIAotICAgICAgICAvKgotCSAqICBkKSBvdGhlciBnbG9iYWwgaGFuZGxlcnMKLQkgKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInNubXB0cmFwZCIsICJSdW5uaW5nIGdsb2JhbCBoYW5kbGVyc1xuIikpOwotICAgICAgICB0cmFwaCA9IG5ldHNubXBfcG9zdF9nbG9iYWxfdHJhcGhhbmRsZXJzOwotCXdoaWxlICh0cmFwaCkgewotICAgICAgICAgICAgaWYgKCFuZXRzbm1wX3RyYXBkX2NoZWNrX2F1dGgodHJhcGgtPmF1dGh0eXBlcykpIHsKLSAgICAgICAgICAgICAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsgLyogd2UgY29udGludWUgb24gYW5kIHNraXAgdGhpcyBvbmUgKi8KLSAgICAgICAgICAgIH0KLQkgICAgcmV0ID0gKCoodHJhcGgtPmhhbmRsZXIpKShwZHUsIHRyYW5zcG9ydCwgdHJhcGgpOwotICAgICAgICAgICAgaWYgKHJldCA9PSBORVRTTk1QVFJBUERfSEFORExFUl9GSU5JU0gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICBpZiAocmV0ID09IE5FVFNOTVBUUkFQRF9IQU5ETEVSX0JSRUFLKQotICAgICAgICAgICAgICAgIGJyZWFrOwotCSAgICB0cmFwaCA9IHRyYXBoLT5uZXh0aDsKLQl9CiAKIAlpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX0lORk9STSkgewogCSAgICBuZXRzbm1wX3BkdSAqcmVwbHkgPSBzbm1wX2Nsb25lX3BkdShwZHUpOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuaCBiL2FwcHMvc25tcHRyYXBkX2hhbmRsZXJzLmgKaW5kZXggOTIxMmQxMi4uMDk3YzAyZCAxMDA2NDQKLS0tIGEvYXBwcy9zbm1wdHJhcGRfaGFuZGxlcnMuaAorKysgYi9hcHBzL3NubXB0cmFwZF9oYW5kbGVycy5oCkBAIC0zNSw2ICszNSw3IEBACiBOZXRzbm1wX1RyYXBfSGFuZGxlciAgIGZvcndhcmRfaGFuZGxlcjsKIE5ldHNubXBfVHJhcF9IYW5kbGVyICAgYXhmb3J3YXJkX2hhbmRsZXI7CiBOZXRzbm1wX1RyYXBfSGFuZGxlciAgIG5vdGlmaWNhdGlvbl9oYW5kbGVyOworTmV0c25tcF9UcmFwX0hhbmRsZXIgICBteXNxbF9oYW5kbGVyOwogCiB2b2lkIGZyZWVfdHJhcDFfZm10KHZvaWQpOwogdm9pZCBmcmVlX3RyYXAyX2ZtdCh2b2lkKTsKQEAgLTQ0LDYgKzQ1LDcgQEAKICNkZWZpbmUgTkVUU05NUFRSQVBEX0FVVEhfSEFORExFUiAgICAxCiAjZGVmaW5lIE5FVFNOTVBUUkFQRF9QUkVfSEFORExFUiAgICAgMgogI2RlZmluZSBORVRTTk1QVFJBUERfUE9TVF9IQU5ETEVSICAgIDMKKyNkZWZpbmUgTkVUU05NUFRSQVBEX0RFRkFVTFRfSEFORExFUiA0CiAKICNkZWZpbmUgTkVUU05NUFRSQVBEX0hBTkRMRVJfT0sgICAgICAxCS8qIFN1Y2NlZWQsICYga2VlcCBnb2luZyAqLwogI2RlZmluZSBORVRTTk1QVFJBUERfSEFORExFUl9GQUlMICAgIDIJLyogRmFpbGVkIGJ1dCBrZWVwIGdvaW5nICovCmRpZmYgLS1naXQgYS9hcHBzL3NubXB0cmFwZF9sb2cuYyBiL2FwcHMvc25tcHRyYXBkX2xvZy5jCmluZGV4IGJjMGIxZTMuLmY0ODgzMDIgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHRyYXBkX2xvZy5jCisrKyBiL2FwcHMvc25tcHRyYXBkX2xvZy5jCkBAIC02MTksNiArNjE5LDggQEAKICAgICBjaGFyICAgICAgICAgICAgZm10X2NtZCA9IG9wdGlvbnMtPmNtZDsgICAgIC8qIHdoYXQgd2UncmUgZm9ybWF0dGluZyAqLwogICAgIHVfY2hhciAgICAgICAgICp0ZW1wX2J1ZiA9IE5VTEw7CiAgICAgc2l6ZV90ICAgICAgICAgIHRlbXBfYnVmX2xlbiA9IDY0LCB0ZW1wX291dF9sZW4gPSAwOworICAgIGNoYXIgICAgICAgICAgICp0c3RyOworICAgIHVuc2lnbmVkIGludCAgICBvZmxhZ3M7CiAKICAgICBpZiAoKHRlbXBfYnVmID0gY2FsbG9jKHRlbXBfYnVmX2xlbiwgMSkpID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIDA7CkBAIC02NzQsMTMwICs2NzYsNTkgQEAKICAgICAgICAgICogV3JpdGUgdGhlIG51bWVyaWNhbCB0cmFuc3BvcnQgaW5mb3JtYXRpb24uICAKICAgICAgICAgICovCiAgICAgICAgIGlmICh0cmFuc3BvcnQgIT0gTlVMTCAmJiB0cmFuc3BvcnQtPmZfZm10YWRkciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBjaGFyICAgICAgICAgICAqdHN0ciA9Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQKLSAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLCAodV9jaGFyICopdHN0cikpIHsKLSAgICAgICAgICAgICAgICBpZiAodHN0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodHN0cik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG9mbGFncyA9IHRyYW5zcG9ydC0+ZmxhZ3M7CisgICAgICAgICAgICB0cmFuc3BvcnQtPmZsYWdzICY9IH5ORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0hPU1ROQU1FOworICAgICAgICAgICAgdHN0ciA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7CisgICAgICAgICAgICB0cmFuc3BvcnQtPmZsYWdzID0gb2ZsYWdzOworICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c3RyKSBnb3RvIG5vaXA7CisgICAgICAgICAgICBpZiAoIXNubXBfc3RyY2F0KCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgKHVfY2hhciAqKXRzdHIpKSB7CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRlbXBfYnVmKTsKKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodHN0cik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodHN0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZnJlZSh0c3RyKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFNOTVBfRlJFRSh0c3RyKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQKLSAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAoY29uc3QgdV9jaGFyKikiPFVOS05PV04+IikpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVtcF9idWYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICB9Citub2lwOgorICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdCgmdGVtcF9idWYsICZ0ZW1wX2J1Zl9sZW4sICZ0ZW1wX291dF9sZW4sIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIqKSI8VU5LTk9XTj4iKSkgeworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0ZW1wX2J1Zik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgLyoKLSAgICAgICAgICogV3JpdGUgYSBob3N0IG5hbWUuICAKLSAgICAgICAgICovCiAgICAgY2FzZSBDSFJfUERVX05BTUU6CiAgICAgICAgIC8qCi0gICAgICAgICAqIFJpZ2h0LCBhcHBhcmVudGx5IGEgbmFtZSBsb29rdXAgaXMgd2FudGVkLiAgVGhpcyBpcyBvbmx5IHJlYXNvbmFibGUKLSAgICAgICAgICogZm9yIHRoZSBVRFAgYW5kIFRDUCB0cmFuc3BvcnQgZG9tYWlucyAod2UgZG9uJ3Qgd2FudCB0byB0cnkgdG8gYmUKLSAgICAgICAgICogdG9vIGNsZXZlciBoZXJlKS4gIAorICAgICAgICAgKiBUcnkgdG8gY29udmVydCB0aGUgbnVtZXJpY2FsIHRyYW5zcG9ydCBpbmZvcm1hdGlvbgorICAgICAgICAgKiAgaW50byBhIGhvc3RuYW1lLiAgT3IgcmF0aGVyLCBoYXZlIHRoZSB0cmFuc3BvcnQtc3BlY2lmaWMKKyAgICAgICAgICogIGFkZHJlc3MgZm9ybWF0dGluZyByb3V0aW5lIGRvIHRoaXMuCisgICAgICAgICAqIE90aGVyd2lzZSBmYWxscyBiYWNrIHRvIHRoZSBudW1lcmljIGFkZHJlc3MgZm9ybWF0LgogICAgICAgICAgKi8KLSNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BfRE9NQUlOCi0gICAgICAgIGlmICh0cmFuc3BvcnQgIT0gTlVMTCAmJiAodHJhbnNwb3J0LT5kb21haW4gPT0gbmV0c25tcFVEUERvbWFpbiB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydC0+ZG9tYWluID09Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zbm1wVENQRG9tYWluKSkgewotI2Vsc2UKLSAgICAgICAgaWYgKHRyYW5zcG9ydCAhPSBOVUxMICYmIHRyYW5zcG9ydC0+ZG9tYWluID09IG5ldHNubXBVRFBEb21haW4pIHsKLSNlbmRpZgotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFRoaXMgaXMga2luZCBvZiBibGV0Y2hlcm91cyAtLSBpdCBicmVha3MgdGhlIG9wYWNpdHkgb2YKLSAgICAgICAgICAgICAqIHRyYW5zcG9ydF9kYXRhIGJ1dCBuZXZlciBtaW5kIC0tIHRoZSBhbHRlcm5hdGl2ZSBpcyBhIGxvdCBvZgotICAgICAgICAgICAgICogbXVuZ2luZyBzdHJpbmdzIGZyb20gZl9mbXRhZGRyLiAgCi0gICAgICAgICAgICAgKi8KLXR5cGVkZWYgc3RydWN0IG5ldHNubXBfdWRwX2FkZHJfcGFpcl9zIHsgICAvKiBGcm9tIHNubXBVRFBEb21haW4uYyAqLwotICAgIHN0cnVjdCBzb2NrYWRkcl9pbiByZW1vdGVfYWRkcjsKLSAgICBzdHJ1Y3QgaW5fYWRkciBsb2NhbF9hZGRyOwotfSBuZXRzbm1wX3VkcF9hZGRyX3BhaXI7Ci0KLSAgICAgICAgICAgIG5ldHNubXBfdWRwX2FkZHJfcGFpciAqYWRkciA9Ci0gICAgICAgICAgICAgICAgKG5ldHNubXBfdWRwX2FkZHJfcGFpciAqKSBwZHUtPnRyYW5zcG9ydF9kYXRhOwotICAgICAgICAgICAgaWYgKGFkZHIgIT0gTlVMTAotICAgICAgICAgICAgICAgICYmIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoID09Ci0gICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfdWRwX2FkZHJfcGFpcikpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfQVBQX05VTUVSSUNfSVApKSB7Ci0gICAgICAgICAgICAgICAgICAgIGhvc3QgPQotICAgICAgICAgICAgICAgICAgICAgICAgZ2V0aG9zdGJ5YWRkcigoY2hhciAqKSAmKGFkZHItPnJlbW90ZV9hZGRyLnNpbl9hZGRyKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSwgQUZfSU5FVCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChob3N0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICAgICAgICAgKCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopaG9zdC0+aF9uYW1lKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRlbXBfYnVmICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICAgICAgICAgKCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwgMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopaW5ldF9udG9hKGFkZHItPnJlbW90ZV9hZGRyLnNpbl9hZGRyKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZSh0ZW1wX2J1Zik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFzbm1wX3N0cmNhdAotICAgICAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAotICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVfY2hhciopIjxVTktOT1dOPiIpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAodHJhbnNwb3J0ICE9IE5VTEwgJiYgdHJhbnNwb3J0LT5mX2ZtdGFkZHIgIT0gTlVMTCkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFNvbWUgb3RoZXIgZG9tYWluIGZvciB3aGljaCB3ZSBkbyBub3Qga25vdyBob3cgdG8gZG8gYSBuYW1lCi0gICAgICAgICAgICAgKiBsb29rdXAuICBGYWxsIGJhY2sgdG8gdGhlIGZvcm1hdHRlZCB0cmFuc3BvcnQgYWRkcmVzcy4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBjaGFyICAgICAgICAgICAqdHN0ciA9Ci0gICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKLSAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQKLSAgICAgICAgICAgICAgICAoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLCAodV9jaGFyICopdHN0cikpIHsKLSAgICAgICAgICAgICAgICBpZiAodHN0ciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodHN0cik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0ZW1wX2J1ZiAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZyZWUodGVtcF9idWYpOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgaWYgKHRyYW5zcG9ydCAhPSBOVUxMICYmIHRyYW5zcG9ydC0+Zl9mbXRhZGRyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG9mbGFncyA9IHRyYW5zcG9ydC0+ZmxhZ3M7CisgICAgICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BUFBfTlVNRVJJQ19JUCkpCisgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5mbGFncyB8PSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0hPU1ROQU1FOworICAgICAgICAgICAgdHN0ciA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7CisgICAgICAgICAgICB0cmFuc3BvcnQtPmZsYWdzID0gb2ZsYWdzOworICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCF0c3RyKSBnb3RvIG5vaG9zdDsKKyAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLCAodV9jaGFyICopdHN0cikpIHsKKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodGVtcF9idWYpOworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0c3RyKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh0c3RyICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBmcmVlKHRzdHIpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgU05NUF9GUkVFKHRzdHIpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFdlIGFyZSBraW5kIG9mIHN0dWNrISAgCi0gICAgICAgICAgICAgKi8KK25vaG9zdDoKICAgICAgICAgICAgIGlmICghc25tcF9zdHJjYXQoJnRlbXBfYnVmLCAmdGVtcF9idWZfbGVuLCAmdGVtcF9vdXRfbGVuLCAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdV9jaGFyKikiPFVOS05PV04+IikpIHsKLSAgICAgICAgICAgICAgICBpZiAodGVtcF9idWYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRlbXBfYnVmKTsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtODY0LDcgKzc5NSw3IEBACiAgICAgICAgIC8qCiAgICAgICAgICAqIFdyaXRlIHRoZSBjb250ZXh0IG9pZC4gIAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKCFzcHJpbnRfcmVhbGxvY19vYmppZAorICAgICAgICBpZiAoIXNwcmludF9yZWFsbG9jX2hleHN0cmluZwogICAgICAgICAgICAgKCZ0ZW1wX2J1ZiwgJnRlbXBfYnVmX2xlbiwgJnRlbXBfb3V0X2xlbiwgMSwgcGR1LT5jb250ZXh0RW5naW5lSUQsCiAgICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURMZW4pKSB7CiAgICAgICAgICAgICBmcmVlKHRlbXBfYnVmKTsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHRyYXBkX3NxbC5jIGIvYXBwcy9zbm1wdHJhcGRfc3FsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOThkM2ZiZQotLS0gL2Rldi9udWxsCisrKyBiL2FwcHMvc25tcHRyYXBkX3NxbC5jCkBAIC0wLDAgKzEsMTExNSBAQAorLyoKKyAqIEZpbGUgICAgICAgOiBzbm1wdHJhcGRfc3FsCisgKiBBdXRob3IgICAgIDogUm9iZXJ0IFN0b3J5CisgKgorICogQ29weXJpZ2h0IMKpIDIwMDkgU2NpZW5jZSBMb2dpYywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqCisgKiBUaGlzIGZpbGUgaW1wbGVtZW50cyBhIGhhbmRsZXIgZm9yIHNubXB0cmFwZCB3aGljaCB3aWxsIGNhY2hlIGluY29taW5nCisgKiB0cmFwcyBhbmQgdGhlbiB3cml0ZSB0aGVtIHRvIGEgTXlTUUwgZGF0YWJhc2UuCisgKgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpZmRlZiBORVRTTk1QX1VTRV9NWVNRTAorCisjaWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgSEFWRV9XSU5TT0NLX0gKKyNpbmNsdWRlIDx3aW5zb2NrLmg+CisjZWxzZQorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSAic25tcHRyYXBkX2hhbmRsZXJzLmgiCisjaW5jbHVkZSAic25tcHRyYXBkX2F1dGguaCIKKyNpbmNsdWRlICJzbm1wdHJhcGRfbG9nLmgiCisKKy8qCisgKiBTUUwgaW5jbHVkZXMKKyAqLworI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCisjdW5kZWYgUEFDS0FHRV9OQU1FCisjdW5kZWYgUEFDS0FHRV9TVFJJTkcKKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KKyNpbmNsdWRlIDxteV9nbG9iYWwuaD4KKyNpbmNsdWRlIDxteV9zeXMuaD4KKyNpbmNsdWRlIDxteXNxbC5oPgorI2luY2x1ZGUgPGVycm1zZy5oPgorCisvKgorICogZGVmaW5lIGEgc3RydWN0dXJlIHRvIGhvbGQgYWxsIHRoZSBmaWxlIGdsb2JhbHMKKyAqLwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9zcWxfZ2xvYmFsc190IHsKKyAgICBjaGFyICAgICAgICAqaG9zdF9uYW1lOyAgICAgICAvKiBzZXJ2ZXIgaG9zdCAoZGVmPWxvY2FsaG9zdCkgKi8KKyAgICBjaGFyICAgICAgICAqdXNlcl9uYW1lOyAgICAgICAvKiB1c2VybmFtZSAoZGVmPWxvZ2luIG5hbWUpICovCisgICAgY2hhciAgICAgICAgKnBhc3N3b3JkOyAgICAgICAgLyogcGFzc3dvcmQgKGRlZj1ub25lKSAqLworICAgIHVfaW50ICAgICAgICBwb3J0X251bTsgICAgICAgIC8qIHBvcnQgbnVtYmVyIChidWlsdC1pbiB2YWx1ZSkgKi8KKyAgICBjaGFyICAgICAgICAqc29ja2V0X25hbWU7ICAgICAvKiBzb2NrZXQgbmFtZSAoYnVpbHQtaW4gdmFsdWUpICovCisgICAgY2hhciAgICAgICAgKmRiX25hbWU7ICAgICAgICAgLyogZGF0YWJhc2UgbmFtZSAoZGVmPW5vbmUpICovCisgICAgdV9pbnQgICAgICAgIGZsYWdzOyAgICAgICAgICAgLyogY29ubmVjdGlvbiBmbGFncyAobm9uZSkgKi8KKyAgICBNWVNRTCAgICAgICAqY29ubjsgICAgICAgICAgICAvKiBjb25uZWN0aW9uICovCisgICAgdV9jaGFyICAgICAgIGNvbm5lY3RlZDsgICAgICAgLyogY29ubmVjdGVkIGZsYWcgKi8KKyAgICBjb25zdCBjaGFyICAqZ3JvdXBzWzNdOworICAgIE1ZU1FMX1NUTVQgICp0cmFwX3N0bXQsICp2Yl9zdG10OyAvKiBwcmVwYXJlZCBzdGF0ZW1lbnRzICovCisgICAgdV9pbnQgICAgICAgIGFsYXJtX2lkOyAgICAgICAgLyogaWQgb2YgcGVyaW9kaWMgc2F2ZSBhbGFybSAqLworICAgIG5ldHNubXBfY29udGFpbmVyICpxdWV1ZTsgICAgIC8qIGNvbnRhaW5lcjsgdHJhcHMgcGVuZGluZyBkYXRhYmFzZSB3cml0ZSAqLworICAgIHVfaW50ICAgICAgICBxdWV1ZV9tYXg7ICAgICAgIC8qIGF1dG8gc2F2ZSBxdWV1ZSB3aGVuIGl0IGdldHMgdGhpcyBiaWcgKi8KKyAgICBpbnQgICAgICAgICAgcXVldWVfaW50ZXJ2YWw7ICAvKiBhdXRvIHNhdmUgZXZlcnkgTiBzZWNvbmRzICovCit9IG5ldHNubXBfc3FsX2dsb2JhbHM7CisKK3N0YXRpYyBuZXRzbm1wX3NxbF9nbG9iYWxzIF9zcWwgPSB7CisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiBob3N0ICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAvKiB1c2VybmFtZSAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogcGFzc3dvcmQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIHBvcnQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHNvY2tldCAqLworICAgICJuZXRfc25tcCIsICAgICAgICAgICAgLyogZGF0YWJhc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm4gZmxhZ3MgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3Rpb24gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgIC8qIGNvbm5lY3RlZCAqLworICAgIHsgImNsaWVudCIsICJzbm1wdHJhcGQiLCBOVUxMIH0sICAvKiBncm91cHMgdG8gcmVhZCBmcm9tIC5teS5jbmYgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHRyYXBfc3RtdCAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgLyogdmJfc3RtdCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgLyogYWxhcm1faWQgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgIC8qIHF1ZXVlICovCisgICAgMSwgICAgICAgICAgICAgICAgICAgICAvKiBxdWV1ZV9tYXggKi8KKyAgICAtMSAgICAgICAgICAgICAgICAgICAgIC8qIHF1ZXVlX2ludGVydmFsICovCit9OworCisvKgorICogbG9nIHRyYXBzIGFzIHRleHQsIG9yIGJpbmFyeSBibG9icz8KKyAqLworI2RlZmluZSBORVRTTk1QX01ZU1FMX1RSQVBfVkFMVUVfVEVYVCAxCisKKy8qCisgKiBXZSB3aWxsIGJlIHVzaW5nIHByZXBhcmVkIHN0YXRlbWVudHMgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMuIFRoaXMKKyAqIHJlcXVpcmVzIGEgc3FsIGJpbmQgc3RydWN0dXJlIGZvciBlYWNoIGNlbGwgdG8gYmUgaW5zZXJ0ZWQgaW4gdGhlCisgKiBkYXRhYmFzZS4gV2Ugd2lsbCBiZSB1c2luZyAyIGdsb2JhbCBzdGF0aWMgc3RydWN0dXJlcyB0byBiaW5kIHRvLAorICogYW5kIGEgbmV0c25tcCBjb250YWluZXIgdG8gc3RvcmUgdGhlIG5lY2Vzc2FyeSBkYXRhIHVudGlsIGl0IGlzCisgKiB3cml0dGVuIHRvIHRoZSBkYXRhYmFzZS4gRml4ZWQgc2l6ZSBidWZmZXJzIGFyZSBhbHNvIHVzZWQgdG8KKyAqIHNpbXBsaWZ5IG1lbW9yeSBtYW5hZ2VtZW50LgorICovCisvKiogZW51bXMgZm9yIHRoZSB0cmFwIGZpZWxkcyB0byBiZSBib3VuZCAqLworZW51bXsKKyAgICBUQklORF9EQVRFID0gMCwgICAgICAgICAgIC8qIHRpbWUgcmVjZWl2ZWQgKi8KKyAgICBUQklORF9IT1NULCAgICAgICAgICAgICAgIC8qIHNyYyBpcCAqLworICAgIFRCSU5EX1VTRVIsICAgICAgICAgICAgICAgLyogYXV0aC91c2VyIGluZm9ybWF0aW9uICovCisgICAgVEJJTkRfVFlQRSwgICAgICAgICAgICAgICAvKiBwZHUgdHlwZSAqLworICAgIFRCSU5EX1ZFUiwgICAgICAgICAgICAgICAgLyogc25tcCB2ZXJzaW9uICovCisgICAgVEJJTkRfUkVRSUQsICAgICAgICAgICAgICAvKiByZXF1ZXN0IGlkICovCisgICAgVEJJTkRfT0lELCAgICAgICAgICAgICAgICAvKiB0cmFwIE9JRCAqLworICAgIFRCSU5EX1RSQU5TUE9SVCwgICAgICAgICAgLyogdHJhbnNwb3J0ICovCisgICAgVEJJTkRfU0VDVVJJVFlfTU9ERUwsICAgICAvKiBzZWN1cml0eSBtb2RlbCAqLworICAgIFRCSU5EX3YzX01TR0lELCAgICAgICAgICAgLyogdjMgbXNnIGlkICovCisgICAgVEJJTkRfdjNfU0VDVVJJVFlfTEVWRUwsICAvKiBzZWN1cml0eSBsZXZlbCAqLworICAgIFRCSU5EX3YzX0NPTlRFWFRfTkFNRSwgICAgLyogY29udGV4dCAqLworICAgIFRCSU5EX3YzX0NPTlRFWFRfRU5HSU5FLCAgLyogY29udGV4dCBlbmdpbmUgaWQgKi8KKyAgICBUQklORF92M19TRUNVUklUWV9OQU1FLCAgIC8qIHNlY3VyaXR5IG5hbWUgKi8KKyAgICBUQklORF92M19TRUNVUklUWV9FTkdJTkUsIC8qIHNlY3VyaXR5IGVuZ2luZSBpZCAqLworICAgIFRCSU5EX01BWAorfTsKKworLyoqIGVudW1zIGZvciB0aGUgdmFyYmluZCBmaWVsZHMgdG8gYmUgYm91bmQgKi8KK2VudW0geworICAgIFZCSU5EX0lEID0gMCwgICAgICAgICAgICAgLyogdHJhcF9pZCAqLworICAgIFZCSU5EX09JRCwgICAgICAgICAgICAgICAgLyogdmFyYmluZCBvaWQgKi8KKyAgICBWQklORF9UWVBFLCAgICAgICAgICAgICAgIC8qIHZhcmJpbmQgdHlwZSAqLworICAgIFZCSU5EX1ZBTCwgICAgICAgICAgICAgICAgLyogdmFyYmluZCB2YWx1ZSAqLworICAgIFZCSU5EX01BWAorfTsKKworLyoqIGJ1ZmZlciBzdHJ1Y3QgZm9yIHZhcmJpbmQgZGF0YSAqLwordHlwZWRlZiBzdHJ1Y3Qgc3FsX3ZiX2J1Zl90IHsKKworICAgIGNoYXIgICAgICAqb2lkOworICAgIHVfbG9uZyAgICAgb2lkX2xlbjsKKworICAgIHVfY2hhciAgICAqdmFsOworICAgIHVfbG9uZyAgICAgdmFsX2xlbjsKKworICAgIHVfaW50MTZfdCAgdHlwZTsKKworfSBzcWxfdmJfYnVmOworCisvKiogYnVmZmVyIHN0cnVjdCBmb3IgdHJhcCBkYXRhICovCit0eXBlZGVmIHN0cnVjdCBzcWxfYnVmX3QgeworICAgIGNoYXIgICAgICAqaG9zdDsKKyAgICB1X2xvbmcgICAgIGhvc3RfbGVuOworCisgICAgY2hhciAgICAgICpvaWQ7CisgICAgdV9sb25nICAgICBvaWRfbGVuOworCisgICAgY2hhciAgICAgICp1c2VyOworICAgIHVfbG9uZyAgICAgdXNlcl9sZW47CisKKyAgICBNWVNRTF9USU1FIHRpbWU7CisgICAgdV9pbnQxNl90ICB2ZXJzaW9uLCB0eXBlOworICAgIHVfaW50MzJfdCAgcmVxaWQ7CisKKyAgICBjaGFyICAgICAgKnRyYW5zcG9ydDsKKyAgICB1X2xvbmcgICAgIHRyYW5zcG9ydF9sZW47CisKKyAgICB1X2ludDE2X3QgIHNlY3VyaXR5X2xldmVsLCBzZWN1cml0eV9tb2RlbDsKKyAgICB1X2ludDMyX3QgIG1zZ2lkOworCisgICAgY2hhciAgICAgICpjb250ZXh0OworICAgIHVfbG9uZyAgICAgY29udGV4dF9sZW47CisKKyAgICBjaGFyICAgICAgKmNvbnRleHRfZW5naW5lOworICAgIHVfbG9uZyAgICAgY29udGV4dF9lbmdpbmVfbGVuOworCisgICAgY2hhciAgICAgICpzZWN1cml0eV9uYW1lOworICAgIHVfbG9uZyAgICAgc2VjdXJpdHlfbmFtZV9sZW47CisKKyAgICBjaGFyICAgICAgKnNlY3VyaXR5X2VuZ2luZTsKKyAgICB1X2xvbmcgICAgIHNlY3VyaXR5X2VuZ2luZV9sZW47CisKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqdmFyYmluZHM7CisKKyAgICBjaGFyICAgICAgIGxvZ2dlZDsKK30gc3FsX2J1ZjsKKworLyoKKyAqIHN0YXRpYyBiaW5kIHN0cnVjdHVyZXMsIHBsdXMgMiBzdGF0aWMgYnVmZmVycyB0byBiaW5kIHRvLgorICovCitzdGF0aWMgTVlTUUxfQklORCBfdGJpbmRbVEJJTkRfTUFYXSwgX3ZiaW5kW1ZCSU5EX01BWF07CitzdGF0aWMgbXlfYm9vbCAgICBfbm9fdjM7CisKK3N0YXRpYyB2b2lkIF9zcWxfcHJvY2Vzc19xdWV1ZSh1X2ludCBkb250Y2FyZSwgdm9pZCAqbWVlaXRoZXIpOworCisvKgorICogcGFyc2UgdGhlIHNxbE1heFF1ZXVlIGNvbmZpZ3VyYXRpb24gdG9rZW4KKyAqLworc3RhdGljIHZvaWQKK19wYXJzZV9xdWV1ZV9mbXQoY29uc3QgY2hhciAqdG9rZW4sIGNoYXIgKmNwdHIpCit7CisgICAgX3NxbC5xdWV1ZV9tYXggPSBhdG9pKGNwdHIpOworICAgIERFQlVHTVNHVEwoKCJzcWw6cXVldWUiLCJxdWV1ZSBtYXggbm93ICVkXG4iLCBfc3FsLnF1ZXVlX21heCkpOworfQorCisvKgorICogcGFyc2UgdGhlIHNxbFNhdmVJbnRlcnZhbCBjb25maWd1cmF0aW9uIHRva2VuCisgKi8KK3N0YXRpYyB2b2lkCitfcGFyc2VfaW50ZXJ2YWxfZm10KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQoreworICAgIF9zcWwucXVldWVfaW50ZXJ2YWwgPSBhdG9pKGNwdHIpOworICAgIERFQlVHTVNHVEwoKCJzcWw6cXVldWUiLCJxdWV1ZSBpbnRlcnZhbCBub3cgJWQgc2Vjb25kc1xuIiwKKyAgICAgICAgICAgICAgICBfc3FsLnF1ZXVlX2ludGVydmFsKSk7Cit9CisKKy8qCisgKiByZWdpc3RlciBzcWwgcmVsYXRlZCBjb25maWd1cmF0aW9uIHRva2VucworICovCit2b2lkCitzbm1wdHJhcGRfcmVnaXN0ZXJfc3FsX2NvbmZpZ3MoIHZvaWQgKQoreworICAgIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wdHJhcGQiLCAic3FsTWF4UXVldWUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJzZV9xdWV1ZV9mbXQsIE5VTEwsICJpbnRlZ2VyIik7CisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXB0cmFwZCIsICJzcWxTYXZlSW50ZXJ2YWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9wYXJzZV9pbnRlcnZhbF9mbXQsIE5VTEwsICJzZWNvbmRzIik7Cit9CisKK3N0YXRpYyB2b2lkCituZXRzbm1wX3NxbF9kaXNjb25uZWN0ZWQodm9pZCkKK3sKKyAgICBERUJVR01TR1RMKCgic3FsOmNvbm5lY3Rpb24iLCJkaXNjb25uZWN0ZWRcbiIpKTsKKworICAgIF9zcWwuY29ubmVjdGVkID0gMDsKKworICAgIC8qKiByZWxlYXNlIHByZXBhcmVkIHN0YXRlbWVudHMgKi8KKyAgICBpZiAoX3NxbC50cmFwX3N0bXQpIHsKKyAgICAgICAgbXlzcWxfc3RtdF9jbG9zZShfc3FsLnRyYXBfc3RtdCk7CisgICAgICAgIF9zcWwudHJhcF9zdG10ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9zcWwudmJfc3RtdCkgeworICAgICAgICBteXNxbF9zdG10X2Nsb3NlKF9zcWwudmJfc3RtdCk7CisgICAgICAgIF9zcWwudmJfc3RtdCA9IE5VTEw7CisgICAgfQorfQorCisvKgorICogY29udmVuaWVuY2UgZnVuY3Rpb24gdG8gbG9nIG15c3FsIGVycm9ycworICovCitzdGF0aWMgdm9pZAorbmV0c25tcF9zcWxfZXJyb3IoY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKyAgICB1X2ludCBlcnIgPSBteXNxbF9lcnJubyhfc3FsLmNvbm4pOworICAgIHNubXBfbG9nKExPR19FUlIsICIlc1xuIiwgbWVzc2FnZSk7CisgICAgaWYgKF9zcWwuY29ubiAhPSBOVUxMKSB7CisjaWYgTVlTUUxfVkVSU0lPTl9JRCA+PSA0MDEwMQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRXJyb3IgJXUgKCVzKTogJXNcbiIsCisgICAgICAgICAgICAgICAgIGVyciwgbXlzcWxfc3Fsc3RhdGUoX3NxbC5jb25uKSwgbXlzcWxfZXJyb3IoX3NxbC5jb25uKSk7CisjZWxzZQorICAgICAgICBzbm1wKExPR19FUlIsICJFcnJvciAldTogJXNcbiIsCisgICAgICAgICAgICAgbXlzcWxfZXJybm8oX3NxbC5jb25uKSwgbXlzcWxfZXJyb3IoX3NxbC5jb25uKSk7CisjZW5kaWYKKyAgICB9CisgICAgaWYgKENSX1NFUlZFUl9HT05FX0VSUk9SID09IGVycikKKyAgICAgICAgbmV0c25tcF9zcWxfZGlzY29ubmVjdGVkKCk7Cit9CisKKy8qCisgKiBjb252ZW5pZW5jZSBmdW5jdGlvbiB0byBsb2cgbXlzcWwgc3RhdGVtZW50IGVycm9ycworICovCitzdGF0aWMgdm9pZAorbmV0c25tcF9zcWxfc3RtdF9lcnJvciAoTVlTUUxfU1RNVCAqc3RtdCwgY29uc3QgY2hhciAqbWVzc2FnZSkKK3sKKyAgICB1X2ludCBlcnIgPSBteXNxbF9lcnJubyhfc3FsLmNvbm4pOworCisgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzXG4iLCBtZXNzYWdlKTsKKyAgICBpZiAoc3RtdCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiU1FMIEVycm9yICV1ICglcyk6ICVzXG4iLAorICAgICAgICAgICAgICAgICBteXNxbF9zdG10X2Vycm5vKHN0bXQpLCBteXNxbF9zdG10X3NxbHN0YXRlKHN0bXQpLAorICAgICAgICAgICAgICAgICBteXNxbF9zdG10X2Vycm9yKHN0bXQpKTsKKyAgICB9CisgICAgCisgICAgaWYgKENSX1NFUlZFUl9HT05FX0VSUk9SID09IGVycikKKyAgICAgICAgbmV0c25tcF9zcWxfZGlzY29ubmVjdGVkKCk7Cit9CisKKy8qCisgKiBzcWwgY2xlYW51cCBmdW5jdGlvbiwgY2FsbGVkIGF0IGV4aXQKKyAqLworc3RhdGljIHZvaWQKK25ldHNubXBfbXlzcWxfY2xlYW51cCh2b2lkKQoreworICAgIERFQlVHTVNHVEwoKCJzcWw6Y2xlYW51cCIsIiBjYWxsZWRcbiIpKTsKKworICAgIC8qKiB1bnJlZ2lzdGVyIGFsYXJtICovCisgICAgaWYgKF9zcWwuYWxhcm1faWQpCisgICAgICAgIHNubXBfYWxhcm1fdW5yZWdpc3Rlcihfc3FsLmFsYXJtX2lkKTsKKworICAgIC8qKiBzYXZlIGFueSBxdWV1ZWQgdHJhcHMgKi8KKyAgICBpZiAoQ09OVEFJTkVSX1NJWkUoX3NxbC5xdWV1ZSkpCisgICAgICAgIF9zcWxfcHJvY2Vzc19xdWV1ZSgwLE5VTEwpOworCisgICAgQ09OVEFJTkVSX0ZSRUUoX3NxbC5xdWV1ZSk7CisgICAgX3NxbC5xdWV1ZSA9IE5VTEw7CisKKyAgICBpZiAoX3NxbC50cmFwX3N0bXQpIHsKKyAgICAgICAgbXlzcWxfc3RtdF9jbG9zZShfc3FsLnRyYXBfc3RtdCk7CisgICAgICAgIF9zcWwudHJhcF9zdG10ID0gTlVMTDsKKyAgICB9CisgICAgaWYgKF9zcWwudmJfc3RtdCkgeworICAgICAgICBteXNxbF9zdG10X2Nsb3NlKF9zcWwudmJfc3RtdCk7CisgICAgICAgIF9zcWwudmJfc3RtdCA9IE5VTEw7CisgICAgfQorICAgIAorICAgIC8qKiBkaXNjb25uZWN0IGZyb20gc2VydmVyICovCisgICAgbmV0c25tcF9zcWxfZGlzY29ubmVjdGVkKCk7CisKKyAgICBpZiAoX3NxbC5jb25uKSB7CisgICAgICAgIG15c3FsX2Nsb3NlKF9zcWwuY29ubik7CisgICAgICAgIF9zcWwuY29ubiA9IE5VTEw7CisgICAgfQorCisgICAgbXlzcWxfbGlicmFyeV9lbmQoKTsKK30KKworLyoKKyAqIHNldHVwIChpbml0aWFsaXplLCBwcmVwYXJlIGFuZCBiaW5kKSBhIHByZXBhcmVkIHN0YXRlbWVudAorICovCitzdGF0aWMgaW50CituZXRzbm1wX215c3FsX2JpbmQoY29uc3QgY2hhciAqdGV4dCwgc2l6ZV90IHRleHRfc2l6ZSwgTVlTUUxfU1RNVCAqKnN0bXQsCisgICAgICAgICAgICAgICAgICAgTVlTUUxfQklORCAqYmluZCkKK3sKKyAgICBpZiAoKE5VTEwgPT0gdGV4dCkgfHwgKE5VTEwgPT0gc3RtdCkgfHwgKE5VTEwgPT0gYmluZCkpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiaW52YWxpZCBwYXJhbWF0ZXJzIHRvIG5ldHNubXBfbXlzcWxfYmluZCgpXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgICpzdG10ID0gbXlzcWxfc3RtdF9pbml0KF9zcWwuY29ubik7CisgICAgaWYgKE5VTEwgPT0gKnN0bXQpIHsKKyAgICAgICAgbmV0c25tcF9zcWxfZXJyb3IoImNvdWxkIG5vdCBpbml0aWFsaXplIHRyYXAgc3RhdGVtZW50IGhhbmRsZXIiKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmIChteXNxbF9zdG10X3ByZXBhcmUoKnN0bXQsIHRleHQsIHRleHRfc2l6ZSkgIT0gMCkgeworICAgICAgICBuZXRzbm1wX3NxbF9zdG10X2Vycm9yKCpzdG10LCAiQ291bGQgbm90IHByZXBhcmUgSU5TRVJUIik7CisgICAgICAgIG15c3FsX3N0bXRfY2xvc2UoKnN0bXQpOworICAgICAgICAqc3RtdCA9IE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIGFuZCBkbyBpbml0aWFsIHNldHVwCisgKi8KK3N0YXRpYyBpbnQKK25ldHNubXBfbXlzcWxfY29ubmVjdCh2b2lkKQoreworICAgIGNoYXIgdHJhcF9zdG10W10gPSAiSU5TRVJUIElOVE8gbm90aWZpY2F0aW9ucyAiCisgICAgICAgICIoZGF0ZV90aW1lLCBob3N0LCBhdXRoLCB0eXBlLCB2ZXJzaW9uLCByZXF1ZXN0X2lkLCBzbm1wVHJhcE9JRCwgdHJhbnNwb3J0LCBzZWN1cml0eV9tb2RlbCwgdjNtc2dpZCwgdjNzZWN1cml0eV9sZXZlbCwgdjNjb250ZXh0X25hbWUsIHYzY29udGV4dF9lbmdpbmUsIHYzc2VjdXJpdHlfbmFtZSwgdjNzZWN1cml0eV9lbmdpbmUpICIKKyAgICAgICAgIlZBTFVFUyg/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPyw/LD8sPykiOworICAgIGNoYXIgdmJfc3RtdFtdID0gIklOU0VSVCBJTlRPIHZhcmJpbmRzICIKKyAgICAgICAgIih0cmFwX2lkLCBvaWQsIHR5cGUsIHZhbHVlKSBWQUxVRVMgKD8sPyw/LD8pIjsKKworICAgIC8qKiBpbml0aWFsaXplIGNvbm5lY3Rpb24gaGFuZGxlciAqLworICAgIGlmIChfc3FsLmNvbm5lY3RlZCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBERUJVR01TR1RMKCgic3FsOmNvbm5lY3Rpb24iLCJjb25uZWN0aW5nXG4iKSk7CisKKyAgICAvKiogY29ubmVjdCB0byBzZXJ2ZXIgKi8KKyAgICBpZiAobXlzcWxfcmVhbF9jb25uZWN0IChfc3FsLmNvbm4sIF9zcWwuaG9zdF9uYW1lLCBfc3FsLnVzZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfc3FsLnBhc3N3b3JkLCBfc3FsLmRiX25hbWUsIF9zcWwucG9ydF9udW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgX3NxbC5zb2NrZXRfbmFtZSwgX3NxbC5mbGFncykgPT0gTlVMTCkgeworICAgICAgICBuZXRzbm1wX3NxbF9lcnJvcigibXlzcWxfcmVhbF9jb25uZWN0KCkgZmFpbGVkIik7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKyAgICBfc3FsLmNvbm5lY3RlZCA9IDE7CisKKyAgICAvKiogZGlzYWJsZSBhdXRvY29tbWl0ICovCisgICAgaWYoMCAhPSBteXNxbF9hdXRvY29tbWl0KF9zcWwuY29ubiwgMCkpIHsKKyAgICAgICAgbmV0c25tcF9zcWxfZXJyb3IoIm15c3FsX2F1dG9jb21taXQoMCkgZmFpbGVkIik7CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIG5ldHNubXBfYXNzZXJ0KChfc3FsLnRyYXBfc3RtdCA9PSBOVUxMKSAmJiAoX3NxbC52Yl9zdG10ID09IE5VTEwpKTsKKworICAgIC8qKiBwcmVwYXJlZCBzdGF0ZW1lbnQgZm9yIGluc2VydHMgKi8KKyAgICBpZiAoMCAhPSBuZXRzbm1wX215c3FsX2JpbmQodHJhcF9zdG10LHNpemVvZih0cmFwX3N0bXQpLCAmX3NxbC50cmFwX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF90YmluZCkpCisgICAgICAgIGdvdG8gZXJyOworCisgICAgaWYgKDAgIT0gbmV0c25tcF9teXNxbF9iaW5kKHZiX3N0bXQsc2l6ZW9mKHZiX3N0bXQpLCZfc3FsLnZiX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF92YmluZCkpIHsKKyAgICAgICAgbXlzcWxfc3RtdF9jbG9zZShfc3FsLnRyYXBfc3RtdCk7CisgICAgICAgIF9zcWwudHJhcF9zdG10ID0gTlVMTDsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgcmV0dXJuIDA7CisKKyAgZXJyOgorICAgIGlmIChfc3FsLmNvbm5lY3RlZCkKKyAgICAgICAgX3NxbC5jb25uZWN0ZWQgPSAwOworCisgICAgcmV0dXJuIC0xOworfQorCisvKiogb25lLXRpbWUgaW5pdGlhbGl6YXRpb24gZm9yIG15c3FsICovCitpbnQKK25ldHNubXBfbXlzcWxfaW5pdCh2b2lkKQoreworICAgIGludCBub3RfYXJnYyA9IDAsIGk7CisgICAgY2hhciAqbm90X2FyZ3NbXSA9IHsgTlVMTCB9OworICAgIGNoYXIgKipub3RfYXJndiA9IG5vdF9hcmdzOworICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqdHJhcGg7CisKKyAgICBERUJVR01TR1RMKCgic3FsOmluaXQiLCJjYWxsZWRcbiIpKTsKKworICAgIC8qKiBuZWdhdGl2ZSBvciAwIGludGVydmFsIGRpc2FibGVzIHNxbCBsb2dnaW5nICovCisgICAgaWYgKF9zcWwucXVldWVfaW50ZXJ2YWwgPD0gMCkgeworICAgICAgICBERUJVR01TR1RMKCgic3FsOmluaXQiLAorICAgICAgICAgICAgICAgICAgICAibXlzcWwgbm90IGVuYWJsZWQgKHNxbFNhdmVJbnRlcnZhbCBpcyA8PSAwKVxuIikpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKiogY3JlYXRlIHF1ZXVlIGZvciBzdG9yaW5nIHRyYXBzIHRpbCB0aGV5IGFyZSB3cml0dGVuIHRvIHRoZSBkYiAqLworICAgIF9zcWwucXVldWUgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJmaWZvIik7CisgICAgaWYgKE5VTEwgPT0gX3NxbC5xdWV1ZSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGFsbG9jYXRlIHNxbCBidWYgY29udGFpbmVyXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworI2lmZGVmIEhBVkVfQlJPS0VOX0xJQk1ZU1FMQ0xJRU5UCisgICAgbXlfaW5pdCgpOworI2Vsc2UKKyAgICBNWV9JTklUKCJzbm1wdHJhcGQiKTsKKyNlbmRpZgorCisgICAgLyoqIGxvYWQgLm15LmNuZiB2YWx1ZXMgKi8KKyAgICBsb2FkX2RlZmF1bHRzICgibXkiLCBfc3FsLmdyb3VwcywgJm5vdF9hcmdjLCAmbm90X2FyZ3YpOworICAgIGZvcihpPTA7IGkgPCBub3RfYXJnYzsgKytpKSB7CisgICAgICAgIGlmIChOVUxMID09IG5vdF9hcmd2W2ldKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLXBhc3N3b3JkPSIsMTEpID09IDApCisgICAgICAgICAgICBfc3FsLnBhc3N3b3JkID0gJm5vdF9hcmd2W2ldWzExXTsKKyAgICAgICAgZWxzZSBpZiAoc3RybmNtcChub3RfYXJndltpXSwiLS1ob3N0PSIsNykgPT0gMCkKKyAgICAgICAgICAgIF9zcWwuaG9zdF9uYW1lID0gJm5vdF9hcmd2W2ldWzddOworICAgICAgICBlbHNlIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLXVzZXI9Iiw3KSA9PSAwKQorICAgICAgICAgICAgX3NxbC51c2VyX25hbWUgPSAmbm90X2FyZ3ZbaV1bN107CisgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAobm90X2FyZ3ZbaV0sIi0tcG9ydD0iLDcpID09IDApCisgICAgICAgICAgICBfc3FsLnBvcnRfbnVtID0gYXRvaSgmbm90X2FyZ3ZbaV1bN10pOworICAgICAgICBlbHNlIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLXNvY2tldD0iLDkpID09IDApCisgICAgICAgICAgICBfc3FsLnNvY2tldF9uYW1lID0gJm5vdF9hcmd2W2ldWzldOworICAgICAgICBlbHNlIGlmIChzdHJuY21wKG5vdF9hcmd2W2ldLCItLWRhdGFiYXNlPSIsMTEpID09IDApCisgICAgICAgICAgICBfc3FsLmRiX25hbWUgPSAmbm90X2FyZ3ZbaV1bMTFdOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywgInVua25vd24gYXJndW1lbnRbJWRdICVzXG4iLCBpLCBub3RfYXJndltpXSk7CisgICAgfQorCisgICAgLyoqIGluaXQgYmluZCBzdHJ1Y3R1cmVzICovCisgICAgbWVtc2V0KF90YmluZCwgMHgwLCBzaXplb2YoX3RiaW5kKSk7CisgICAgbWVtc2V0KF92YmluZCwgMHgwLCBzaXplb2YoX3ZiaW5kKSk7CisKKyAgICAvKiogdHJhcCBzdGF0aWMgYmluZGluZ3MgKi8KKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0ubGVuZ3RoID0gJl90YmluZFtUQklORF9IT1NUXS5idWZmZXJfbGVuZ3RoOworCisgICAgX3RiaW5kW1RCSU5EX09JRF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdGJpbmRbVEJJTkRfT0lEXS5sZW5ndGggPSAmX3RiaW5kW1RCSU5EX09JRF0uYnVmZmVyX2xlbmd0aDsKKworICAgIF90YmluZFtUQklORF9SRVFJRF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX0xPTkc7CisgICAgX3RiaW5kW1RCSU5EX1JFUUlEXS5pc191bnNpZ25lZCA9IDE7CisKKyAgICBfdGJpbmRbVEJJTkRfVkVSXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU0hPUlQ7CisgICAgX3RiaW5kW1RCSU5EX1ZFUl0uaXNfdW5zaWduZWQgPSAxOworCisgICAgX3RiaW5kW1RCSU5EX1RZUEVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TSE9SVDsKKyAgICBfdGJpbmRbVEJJTkRfVFlQRV0uaXNfdW5zaWduZWQgPSAxOworCisgICAgX3RiaW5kW1RCSU5EX0RBVEVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9EQVRFVElNRTsKKworICAgIF90YmluZFtUQklORF9VU0VSXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF9VU0VSXS5sZW5ndGggPSAmX3RiaW5kW1RCSU5EX1VTRVJdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF9UUkFOU1BPUlRdLmxlbmd0aCA9ICZfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXJfbGVuZ3RoOworCisgICAgX3RiaW5kW1RCSU5EX1NFQ1VSSVRZX01PREVMXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU0hPUlQ7CisgICAgX3RiaW5kW1RCSU5EX1NFQ1VSSVRZX01PREVMXS5pc191bnNpZ25lZCA9IDE7CisKKyAgICBfdGJpbmRbVEJJTkRfdjNfTVNHSURdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9MT05HOworICAgIF90YmluZFtUQklORF92M19NU0dJRF0uaXNfdW5zaWduZWQgPSAxOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9MRVZFTF0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NIT1JUOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9MRVZFTF0uaXNfdW5zaWduZWQgPSAxOworICAgIF90YmluZFtUQklORF92M19DT05URVhUX05BTUVdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9OQU1FXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfU1RSSU5HOworICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9OQU1FXS5sZW5ndGggPQorICAgICAgICAmX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmJ1ZmZlcl9sZW5ndGg7CisgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfTkFNRV0ubGVuZ3RoID0KKyAgICAgICAgJl90YmluZFtUQklORF92M19DT05URVhUX05BTUVdLmJ1ZmZlcl9sZW5ndGg7CisgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0VOR0lORV0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NUUklORzsKKyAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5sZW5ndGggPQorICAgICAgICAmX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0VOR0lORV0uYnVmZmVyX2xlbmd0aDsKKyAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmxlbmd0aCA9CisgICAgICAgICZfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9FTkdJTkVdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdGJpbmRbVEJJTkRfdjNfTVNHSURdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTEVWRUxdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9OQU1FXS5pc19udWxsID0KKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5pc19udWxsID0KKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmlzX251bGwgPQorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5pc19udWxsID0gJl9ub192MzsKKyAgICAKKyAgICAvKiogdmFyaWFibGUgc3RhdGljIGJpbmRpbmdzICovCisgICAgX3ZiaW5kW1ZCSU5EX0lEXS5idWZmZXJfdHlwZSA9IE1ZU1FMX1RZUEVfTE9ORzsKKyAgICBfdmJpbmRbVkJJTkRfSURdLmlzX3Vuc2lnbmVkID0gMTsKKworICAgIF92YmluZFtWQklORF9PSURdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisgICAgX3ZiaW5kW1ZCSU5EX09JRF0ubGVuZ3RoID0gJl92YmluZFtWQklORF9PSURdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfdmJpbmRbVkJJTkRfVFlQRV0uYnVmZmVyX3R5cGUgPSBNWVNRTF9UWVBFX1NIT1JUOworICAgIF92YmluZFtWQklORF9UWVBFXS5pc191bnNpZ25lZCA9IDE7CisKKyNpZmRlZiBORVRTTk1QX01ZU1FMX1RSQVBfVkFMVUVfVEVYVAorICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9TVFJJTkc7CisjZWxzZQorICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl90eXBlID0gTVlTUUxfVFlQRV9CTE9COworI2VuZGlmCisgICAgX3ZiaW5kW1ZCSU5EX1ZBTF0ubGVuZ3RoID0gJl92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl9sZW5ndGg7CisKKyAgICBfc3FsLmNvbm4gPSBteXNxbF9pbml0IChOVUxMKTsKKyAgICBpZiAoX3NxbC5jb25uID09IE5VTEwpIHsKKyAgICAgICAgbmV0c25tcF9zcWxfZXJyb3IoIm15c3FsX2luaXQoKSBmYWlsZWQgKG91dCBvZiBtZW1vcnk/KSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqIHRyeSB0byBjb25uZWN0OyB3ZSdsbCB0cnkgYWdhaW4gbGF0ZXIgaWYgd2UgZmFpbCAqLworICAgICh2b2lkKSBuZXRzbm1wX215c3FsX2Nvbm5lY3QoKTsKKworICAgIC8qKiByZWdpc3RlciBwZXJpb2RpYyBxdWV1ZSBzYXZlICovCisgICAgX3NxbC5hbGFybV9pZCA9IHNubXBfYWxhcm1fcmVnaXN0ZXIoX3NxbC5xdWV1ZV9pbnRlcnZhbCwgLyogc2Vjb25kcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICAgICAgICAgICAgICAgICAgIC8qIHJlcGVhdCAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9zcWxfcHJvY2Vzc19xdWV1ZSwgIC8qIGZ1bmN0aW9uICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7ICAgICAgICAgICAgICAgLyogY2xpZW50IGFyZ3MgKi8KKworICAgIC8qKiBhZGQgaGFuZGxlciAqLworICAgIHRyYXBoID0gbmV0c25tcF9hZGRfZ2xvYmFsX3RyYXBoYW5kbGVyKE5FVFNOTVBUUkFQRF9QUkVfSEFORExFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteXNxbF9oYW5kbGVyKTsKKyAgICBpZiAoTlVMTCA9PSB0cmFwaCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGFsbG9jYXRlIHNxbCB0cmFwIGhhbmRsZXJcbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRyYXBoLT5hdXRodHlwZXMgPSBUUkFQX0FVVEhfTE9HOworCisgICAgYXRleGl0KG5ldHNubXBfbXlzcWxfY2xlYW51cCk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBsb2cgQ1NWIHZlcnNpb24gb2YgdHJhcC4KKyAqIGRvbnRjYXJlIHBhcmFtIGlzIHRoZXJlIHNvIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHBhc3NlZCBkaXJlY3RseQorICogdG8gQ09OVEFJTkVSX0ZPUl9FQUNILgorICovCitzdGF0aWMgdm9pZAorX3NxbF9sb2coc3FsX2J1ZiAqc3FsYiwgdm9pZCogZG9udGNhcmUpCit7CisgICAgbmV0c25tcF9pdGVyYXRvciAgICAgKml0OworICAgIHNxbF92Yl9idWYgICAgICAgICAgICpzcWx2YjsKKworICAgIGlmICgoTlVMTCA9PSBzcWxiKSB8fCBzcWxiLT5sb2dnZWQpCisgICAgICAgIHJldHVybjsKKworICAgIC8qCisgICAgICogbG9nIHRyYXAgaW5mbworICAgICAqIG5vdGhpbmcgZG9uZSB0byBwcm90ZWN0IGFnYWluc3QgZGF0YSBpbnNlcnRpb24gYXR0YWNrcyB3aXRoCisgICAgICogcmVzcGVjdCB0byBiYWQgZGF0YSAoY29tbWFzLCBuZXdsaW5lcywgZXRjKQorICAgICAqLworICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgInRyYXA6JWQtJWQtJWQgJWQ6JWQ6JWQsJXMsJWQsJWQsJWQsJXMsJXMsJWQsJWQsJWQsJXMsJXMsJXMsJXNcbiIsCisgICAgICAgICAgICAgc3FsYi0+dGltZS55ZWFyLHNxbGItPnRpbWUubW9udGgsc3FsYi0+dGltZS5kYXksCisgICAgICAgICAgICAgc3FsYi0+dGltZS5ob3VyLHNxbGItPnRpbWUubWludXRlLHNxbGItPnRpbWUuc2Vjb25kLAorICAgICAgICAgICAgIHNxbGItPnVzZXIsCisgICAgICAgICAgICAgc3FsYi0+dHlwZSwgc3FsYi0+dmVyc2lvbiwgc3FsYi0+cmVxaWQsIHNxbGItPm9pZCwKKyAgICAgICAgICAgICBzcWxiLT50cmFuc3BvcnQsIHNxbGItPnNlY3VyaXR5X21vZGVsLCBzcWxiLT5tc2dpZCwKKyAgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9sZXZlbCwgc3FsYi0+Y29udGV4dCwKKyAgICAgICAgICAgICBzcWxiLT5jb250ZXh0X2VuZ2luZSwgc3FsYi0+c2VjdXJpdHlfbmFtZSwKKyAgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9lbmdpbmUpOworCisgICAgc3FsYi0+bG9nZ2VkID0gMTsgLyogcHJldmVudCBtdWx0aXBsZSBsb2dnaW5nICovCisKKyAgICBpdCA9IENPTlRBSU5FUl9JVEVSQVRPUihzcWxiLT52YXJiaW5kcyk7CisgICAgaWYgKE5VTEwgPT0gaXQpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgImVycm9yIGNyZWF0aW5nIGl0ZXJhdG9yOyBpbmNvbXBsZXRlIHRyYXAgbG9nZ2VkXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qKiBsb2cgdmFyYmluZCBpbmZvICovCisgICAgZm9yKCBzcWx2YiA9IElURVJBVE9SX0ZJUlNUKGl0KTsgc3FsdmI7IHNxbHZiID0gSVRFUkFUT1JfTkVYVChpdCkpIHsKKyNpZmRlZiBORVRTTk1QX01ZU1FMX1RSQVBfVkFMVUVfVEVYVAorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJ2YXJiaW5kOiVzLCVzXG4iLCBzcWx2Yi0+b2lkLCBzcWx2Yi0+dmFsKTsKKyNlbHNlCisgICAgICAgIGNoYXIgKmhleDsKKyAgICAgICAgaW50IGxlbiA9IGJpbmFyeV90b19oZXgoc3FsdmItPnZhbCwgc3FsdmItPnZhbF9sZW4sICZoZXgpOworICAgICAgICBpZiAoaGV4KSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJ2YXJiaW5kOiVkLCVzLCVzXG4iLCBzcWx2Yi0+b2lkLCBoZXgpOworICAgICAgICAgICAgZnJlZShoZXgpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwibWFsbG9jIGZhaWxlZCBmb3IgdmFyYmluZCBoZXggdmFsdWVcbiIpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwidmFyYmluZDolcyxcbiIsIHNxbHZiLT5vaWQpOworICAgICAgICB9CisjZW5kaWYKKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7CisgICAKK30KKworLyoKKyAqIGZyZWUgYSBidWZmZXIKKyAqIGRvbnRjYXJlIHBhcmFtIGlzIHRoZXJlIHNvIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHBhc3NlZCBkaXJlY3RseQorICogdG8gQ09OVEFJTkVSX0ZPUl9FQUNILgorICovCitzdGF0aWMgdm9pZAorX3NxbF92Yl9idWZfZnJlZShzcWxfdmJfYnVmICpzcWx2Yiwgdm9pZCogZG9udGNhcmUpCit7CisgICAgaWYgKE5VTEwgPT0gc3FsdmIpCisgICAgICAgIHJldHVybjsKKworICAgIFNOTVBfRlJFRShzcWx2Yi0+b2lkKTsKKyAgICBTTk1QX0ZSRUUoc3FsdmItPnZhbCk7CisKKyAgICBmcmVlKHNxbHZiKTsKK30KKworLyoKKyAqIGZyZWUgYSBidWZmZXIKKyAqIGRvbnRjYXJlIHBhcmFtIGlzIHRoZXJlIHNvIHRoaXMgZnVuY3Rpb24gY2FuIGJlIHBhc3NlZCBkaXJlY3RseQorICogdG8gQ09OVEFJTkVSX0ZPUl9FQUNILgorICovCitzdGF0aWMgdm9pZAorX3NxbF9idWZfZnJlZShzcWxfYnVmICpzcWxiLCB2b2lkKiBkb250Y2FyZSkKK3sKKyAgICBpZiAoTlVMTCA9PSBzcWxiKQorICAgICAgICByZXR1cm47CisKKyAgICAvKiogZG8gdmFyYmluZHMgZmlyc3QgKi8KKyAgICBpZiAoc3FsYi0+dmFyYmluZHMpIHsKKyAgICAgICAgQ09OVEFJTkVSX0NMRUFSKHNxbGItPnZhcmJpbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgKG5ldHNubXBfY29udGFpbmVyX29ial9mdW5jKilfc3FsX3ZiX2J1Zl9mcmVlLCBOVUxMKTsKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUoc3FsYi0+dmFyYmluZHMpOworICAgIH0KKworICAgIFNOTVBfRlJFRShzcWxiLT5ob3N0KTsKKyAgICBTTk1QX0ZSRUUoc3FsYi0+b2lkKTsKKyAgICBTTk1QX0ZSRUUoc3FsYi0+dXNlcik7CisKKyAgICBTTk1QX0ZSRUUoc3FsYi0+Y29udGV4dCk7CisgICAgU05NUF9GUkVFKHNxbGItPnNlY3VyaXR5X25hbWUpOworICAgIFNOTVBfRlJFRShzcWxiLT5jb250ZXh0X2VuZ2luZSk7CisgICAgU05NUF9GUkVFKHNxbGItPnNlY3VyaXR5X2VuZ2luZSk7CisgICAgU05NUF9GUkVFKHNxbGItPnRyYW5zcG9ydCk7CisKKyAgICBmcmVlKHNxbGIpOworfQorCisvKgorICogYWxsb2NhdGUgYnVmZmVyIHRvIHN0b3JlIHRyYXAgYW5kIHZhcmJpbmRzCisgKi8KK3N0YXRpYyBzcWxfYnVmICoKK19zcWxfYnVmX2dldCh2b2lkKQoreworICAgIHNxbF9idWYgKnNxbGI7CisKKyAgICAvKiogYnVmZmVyIGZvciB0cmFwIGluZm8gKi8KKyAgICBzcWxiID0gU05NUF9NQUxMT0NfVFlQRURFRihzcWxfYnVmKTsKKyAgICBpZiAoTlVMTCA9PSBzcWxiKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKKyAgICAvKiogZmlmbyBmb3IgdmFyYmluZHMgKi8KKyAgICBzcWxiLT52YXJiaW5kcyA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImZpZm8iKTsKKyAgICBpZiAoTlVMTCA9PSBzcWxiLT52YXJiaW5kcykgeworICAgICAgICBmcmVlKHNxbGIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gc3FsYjsKK30KKworLyoKKyAqIHNhdmUgaW5mbyBmcm9tIGluY29taW5nIHRyYXAKKyAqCisgKiByZXR1cm4gMCBvbiBzdWNjZXNzLCBhbnl0aGluZyBlbHNlIGlzIGFuIGVycm9yCisgKi8KK3N0YXRpYyBpbnQKK19zcWxfc2F2ZV90cmFwX2luZm8oc3FsX2J1ZiAqc3FsYiwgbmV0c25tcF9wZHUgICpwZHUsCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0ICAgICAqdHJhbnNwb3J0KQoreworICAgIHN0YXRpYyBvaWQgICB0cmFwb2lkc1tdID0geyAxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA1LCAwIH07CisgICAgb2lkICAgICAgICAgKnRyYXBfb2lkLCB0bXBfb2lkW01BWF9PSURfTEVOXTsKKyAgICB0aW1lX3QgICAgICAgbm93OworICAgIHN0cnVjdCB0bSAgICpjdXJfdGltZTsKKyAgICBzaXplX3QgICAgICAgdG1wX3NpemU7CisgICAgc2l6ZV90ICAgICAgIGJ1Zl9ob3N0X2xlbl90LCBidWZfb2lkX2xlbl90LCBidWZfdXNlcl9sZW5fdDsKKyAgICBpbnQgICAgICAgICAgb2lkX292ZXJmbG93LCB0cmFwX29pZF9sZW47CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzOworCisgICAgaWYgKChOVUxMID09IHNxbGIpIHx8IChOVUxMID09IHBkdSkgfHwgKE5VTEwgPT0gdHJhbnNwb3J0KSkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgREVCVUdNU0dUTCgoInNxbDpxdWV1ZSIsICJxdWV1ZWluZyBpbmNvbWluZyB0cmFwXG4iKSk7CisKKyAgICAvKiogdGltZSAqLworICAgICh2b2lkKSB0aW1lKCZub3cpOworICAgIGN1cl90aW1lID0gbG9jYWx0aW1lKCZub3cpOworICAgIHNxbGItPnRpbWUueWVhciA9IGN1cl90aW1lLT50bV95ZWFyICsgMTkwMDsKKyAgICBzcWxiLT50aW1lLm1vbnRoID0gY3VyX3RpbWUtPnRtX21vbiArIDE7CisgICAgc3FsYi0+dGltZS5kYXkgPSBjdXJfdGltZS0+dG1fbWRheTsKKyAgICBzcWxiLT50aW1lLmhvdXIgPSBjdXJfdGltZS0+dG1faG91cjsKKyAgICBzcWxiLT50aW1lLm1pbnV0ZSA9IGN1cl90aW1lLT50bV9taW47CisgICAgc3FsYi0+dGltZS5zZWNvbmQgPSBjdXJfdGltZS0+dG1fc2VjOworICAgIHNxbGItPnRpbWUuc2Vjb25kX3BhcnQgPSAwOworICAgIHNxbGItPnRpbWUubmVnID0gMDsKKworICAgIC8qKiBob3N0IG5hbWUgKi8KKyAgICBidWZfaG9zdF9sZW5fdCA9IDA7CisgICAgdG1wX3NpemUgPSAwOworICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoKHVfY2hhcioqKSZzcWxiLT5ob3N0LCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX2hvc3RfbGVuX3QsIDEsICIlQiIsIHBkdSwgdHJhbnNwb3J0KTsKKyAgICBzcWxiLT5ob3N0X2xlbiA9IGJ1Zl9ob3N0X2xlbl90OworCisgICAgLyogc25tcFRyYXBPSUQgKi8KKyAgICBpZiAocGR1LT5jb21tYW5kID09IFNOTVBfTVNHX1RSQVApIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogY29udmVydCBhIHYxIHRyYXAgdG8gYSB2MiB2YXJiaW5kCisgICAgICAgICAqLworICAgICAgICBpZiAocGR1LT50cmFwX3R5cGUgPT0gU05NUF9UUkFQX0VOVEVSUFJJU0VTUEVDSUZJQykgeworICAgICAgICAgICAgdHJhcF9vaWRfbGVuID0gcGR1LT5lbnRlcnByaXNlX2xlbmd0aDsKKyAgICAgICAgICAgIG1lbWNweSh0bXBfb2lkLCBwZHUtPmVudGVycHJpc2UsIHNpemVvZihvaWQpICogdHJhcF9vaWRfbGVuKTsKKyAgICAgICAgICAgIGlmICh0bXBfb2lkW3RyYXBfb2lkX2xlbiAtIDFdICE9IDApCisgICAgICAgICAgICAgICAgdG1wX29pZFt0cmFwX29pZF9sZW4rK10gPSAwOworICAgICAgICAgICAgdG1wX29pZFt0cmFwX29pZF9sZW4rK10gPSBwZHUtPnNwZWNpZmljX3R5cGU7CisgICAgICAgICAgICB0cmFwX29pZCA9IHRtcF9vaWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0cmFwb2lkc1s5XSA9IHBkdS0+dHJhcF90eXBlICsgMTsKKyAgICAgICAgICAgIHRyYXBfb2lkID0gdHJhcG9pZHM7CisgICAgICAgICAgICB0cmFwX29pZF9sZW4gPSBPSURfTEVOR1RIKHRyYXBvaWRzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgdmFycyA9IHBkdS0+dmFyaWFibGVzOworICAgICAgICBpZiAodmFycyAmJiB2YXJzLT5uZXh0X3ZhcmlhYmxlKSB7CisgICAgICAgICAgICB0cmFwX29pZF9sZW4gPSB2YXJzLT5uZXh0X3ZhcmlhYmxlLT52YWxfbGVuIC8gc2l6ZW9mKG9pZCk7CisgICAgICAgICAgICB0cmFwX29pZCA9IHZhcnMtPm5leHRfdmFyaWFibGUtPnZhbC5vYmppZDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0YXRpYyBvaWQgbnVsbF9vaWRbXSA9IHsgMCwgMCB9OworICAgICAgICAgICAgdHJhcF9vaWRfbGVuID0gT0lEX0xFTkdUSChudWxsX29pZCk7CisgICAgICAgICAgICB0cmFwX29pZCA9IG51bGxfb2lkOworICAgICAgICB9CisgICAgfQorICAgIHRtcF9zaXplID0gMDsKKyAgICBidWZfb2lkX2xlbl90ID0gb2lkX292ZXJmbG93ID0gMDsKKyAgICBuZXRzbm1wX3NwcmludF9yZWFsbG9jX29iamlkX3RyZWUoKHVfY2hhcioqKSZzcWxiLT5vaWQsJnRtcF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX29pZF9sZW5fdCwgMSwgJm9pZF9vdmVyZmxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhcF9vaWQsIHRyYXBfb2lkX2xlbik7CisgICAgc3FsYi0+b2lkX2xlbiA9IGJ1Zl9vaWRfbGVuX3Q7CisgICAgaWYgKG9pZF9vdmVyZmxvdykKKyAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsIk9JRCB0cnVuY2F0ZWQgaW4gc3FsIGJ1ZmZlclxuIik7CisKKyAgICAvKiogcmVxdWVzdCBpZCAqLworICAgIHNxbGItPnJlcWlkID0gcGR1LT5yZXFpZDsKKworICAgIC8qKiB2ZXJzaW9uIChjb252ZXJ0IHRvIDEgYmFzZWQsIGZvciBzcWwgZW51bSkgKi8KKyAgICBzcWxiLT52ZXJzaW9uID0gcGR1LT52ZXJzaW9uICsgMTsKKworICAgIC8qKiBjb21tYW5kIHR5cGUgKGNvbnZlcnQgdG8gMSBiYXNlZCwgZm9yIHNxbCBlbnVtKSAqLworICAgIHNxbGItPnR5cGUgPSBwZHUtPmNvbW1hbmQgLSAxNTk7CisKKyAgICAvKiogY29tbXVuaXR5IHN0cmluZy91c2VyIG5hbWUgKi8KKyAgICB0bXBfc2l6ZSA9IDA7CisgICAgYnVmX3VzZXJfbGVuX3QgPSAwOworICAgIHJlYWxsb2NfZm9ybWF0X3RyYXAoKHVfY2hhcioqKSZzcWxiLT51c2VyLCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX3VzZXJfbGVuX3QsIDEsICIldSIsIHBkdSwgdHJhbnNwb3J0KTsKKyAgICBzcWxiLT51c2VyX2xlbiA9IGJ1Zl91c2VyX2xlbl90OworCisgICAgLyoqIHRyYW5zcG9ydCAqLworICAgIHNxbGItPnRyYW5zcG9ydCA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnRyYW5zcG9ydF9kYXRhX2xlbmd0aCk7CisKKyAgICAvKiogc2VjdXJpdHkgbW9kZWwgKi8KKyAgICBzcWxiLT5zZWN1cml0eV9tb2RlbCA9IHBkdS0+c2VjdXJpdHlNb2RlbDsKKworICAgIGlmICgoU05NUF9NUF9NT0RFTF9TTk1QdjMrMSkgPT0gc3FsYi0+dmVyc2lvbikgeworCisgICAgICAgIHNxbGItPm1zZ2lkID0gcGR1LT5tc2dpZDsKKyAgICAgICAgc3FsYi0+c2VjdXJpdHlfbGV2ZWwgPSBwZHUtPnNlY3VyaXR5TGV2ZWw7CisKKyAgICAgICAgaWYgKHBkdS0+Y29udGV4dE5hbWUpIHsKKyAgICAgICAgICAgIHNxbGItPmNvbnRleHQgPSBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCgodV9jaGFyKilwZHUtPmNvbnRleHROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+Y29udGV4dE5hbWVMZW4pOworICAgICAgICAgICAgc3FsYi0+Y29udGV4dF9sZW4gPSBwZHUtPmNvbnRleHROYW1lTGVuOworICAgICAgICB9CisgICAgICAgIGlmIChwZHUtPmNvbnRleHRFbmdpbmVJRCkgeworICAgICAgICAgICAgc3FsYi0+Y29udGV4dF9lbmdpbmVfbGVuID0gCisgICAgICAgICAgICAgICAgYmluYXJ5X3RvX2hleChwZHUtPmNvbnRleHRFbmdpbmVJRCwgcGR1LT5jb250ZXh0RW5naW5lSURMZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3FsYi0+Y29udGV4dF9lbmdpbmUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lKSB7CisgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9uYW1lID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCgodV9jaGFyKilwZHUtPnNlY3VyaXR5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbik7CisgICAgICAgICAgICBzcWxiLT5zZWN1cml0eV9uYW1lX2xlbiA9IHBkdS0+c2VjdXJpdHlOYW1lTGVuOworICAgICAgICB9CisgICAgICAgIGlmIChwZHUtPnNlY3VyaXR5RW5naW5lSUQpIHsKKyAgICAgICAgICAgIHNxbGItPnNlY3VyaXR5X2VuZ2luZV9sZW4gPSAKKyAgICAgICAgICAgICAgICBiaW5hcnlfdG9faGV4KHBkdS0+c2VjdXJpdHlFbmdpbmVJRCwgcGR1LT5zZWN1cml0eUVuZ2luZUlETGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnNxbGItPnNlY3VyaXR5X2VuZ2luZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHNhdmUgdmFyYmluZCBpbmZvIGZyb20gaW5jb21pbmcgdHJhcAorICoKKyAqIHJldHVybiAwIG9uIHN1Y2Nlc3MsIGFueXRoaW5nIGVsc2UgaXMgYW4gZXJyb3IKKyAqLworc3RhdGljIGludAorX3NxbF9zYXZlX3ZhcmJpbmRfaW5mbyhzcWxfYnVmICpzcWxiLCBuZXRzbm1wX3BkdSAgKnBkdSkKK3sKKyAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcjsKKyAgICBzcWxfdmJfYnVmICAgICAgICpzcWx2YjsKKyAgICBzaXplX3QgICAgICAgICAgICB0bXBfc2l6ZSwgYnVmX29pZF9sZW5fdDsKKyAgICBpbnQgICAgICAgICAgICAgICBvaWRfb3ZlcmZsb3csIHJjOworI2lmZGVmIE5FVFNOTVBfTVlTUUxfVFJBUF9WQUxVRV9URVhUCisgICAgc2l6ZV90ICAgICAgICAgICAgYnVmX3ZhbF9sZW5fdDsKKyNlbmRpZgorCisgICAgaWYgKChOVUxMID09IHNxbGIpIHx8IChOVUxMID09IHBkdSkpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHZhciA9IHBkdS0+dmFyaWFibGVzOworICAgIHdoaWxlKHZhcikgeworICAgICAgICBzcWx2YiA9IFNOTVBfTUFMTE9DX1RZUEVERUYoc3FsX3ZiX2J1Zik7CisgICAgICAgIGlmIChOVUxMID09IHNxbHZiKQorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgLyoqIE9JRCAqLworICAgICAgICB0bXBfc2l6ZSA9IDA7CisgICAgICAgIGJ1Zl9vaWRfbGVuX3QgPSBvaWRfb3ZlcmZsb3cgPSAwOworICAgICAgICBuZXRzbm1wX3NwcmludF9yZWFsbG9jX29iamlkX3RyZWUoKHVfY2hhcioqKSZzcWx2Yi0+b2lkLCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYnVmX29pZF9sZW5fdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsICZvaWRfb3ZlcmZsb3csIHZhci0+bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhci0+bmFtZV9sZW5ndGgpOworICAgICAgICBzcWx2Yi0+b2lkX2xlbiA9IGJ1Zl9vaWRfbGVuX3Q7CisgICAgICAgIGlmIChvaWRfb3ZlcmZsb3cpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywiT0lEIHRydW5jYXRlZCBpbiBzcWwgaW5zZXJ0XG4iKTsKKyAgICAgICAgCisgICAgICAgIC8qKiB0eXBlICovCisgICAgICAgIGlmICh2YXItPnR5cGUgPiBBU05fT0JKRUNUX0lEKQorICAgICAgICAgICAgLyoqIGNvbnZlcnQgYXBwbGljYXRpb24gdHlwZXMgdG8gc3FsIGVudW0gKi8KKyAgICAgICAgICAgIHNxbHZiLT50eXBlID0gQVNOX09CSkVDVF9JRCArIDEgKyAodmFyLT50eXBlICYgfkFTTl9BUFBMSUNBVElPTik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNxbHZiLT50eXBlID0gdmFyLT50eXBlOworCisgICAgICAgIC8qKiB2YWx1ZSAqLworI2lmZGVmIE5FVFNOTVBfTVlTUUxfVFJBUF9WQUxVRV9URVhUCisgICAgICAgIHRtcF9zaXplID0gMDsKKyAgICAgICAgYnVmX3ZhbF9sZW5fdCA9IDA7CisgICAgICAgIHNwcmludF9yZWFsbG9jX2J5X3R5cGUoKHVfY2hhcioqKSZzcWx2Yi0+dmFsLCAmdG1wX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmJ1Zl92YWxfbGVuX3QsIDEsIHZhciwgMCwgMCwgMCk7CisgICAgICAgIHNxbHZiLT52YWxfbGVuID0gYnVmX3ZhbF9sZW5fdDsKKyNlbHNlCisgICAgICAgIHNxbHZiLT52YWwgPSBuZXRzbm1wX21lbWR1cCh2YXItPnZhbC5zdHJpbmcsIHZhci0+dmFsX2xlbik7CisgICAgICAgIHNxbHZiLT52YWxfbGVuID0gdmFyLT52YWxfbGVuOworI2VuZGlmCisKKyAgICAgICAgdmFyID0gdmFyLT5uZXh0X3ZhcmlhYmxlOworCisgICAgICAgIC8qKiBpbnNlcnQgaW50byBjb250YWluZXIgKi8KKyAgICAgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKHNxbGItPnZhcmJpbmRzLHNxbHZiKTsKKyAgICAgICAgaWYocmMpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiY291bGRuJ3QgaW5zZXJ0IHZhcmJpbmQgaW50byB0cmFwIGNvbnRhaW5lclxuIik7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8qCisgKiBzcWwgdHJhcCBoYW5kbGVyCisgKi8KK2ludAorbXlzcWxfaGFuZGxlcihuZXRzbm1wX3BkdSAgICAgICAgICAgKnBkdSwKKyAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnQgICAgICp0cmFuc3BvcnQsCisgICAgICAgICAgICAgIG5ldHNubXBfdHJhcGRfaGFuZGxlciAqaGFuZGxlcikKK3sKKyAgICBzcWxfYnVmICAgICAqc3FsYjsKKyAgICBpbnQgICAgICAgICAgb2xkX2Zvcm1hdCwgcmM7CisKKyAgICBERUJVR01TR1RMKCgic3FsOmhhbmRsZXIiLCAiY2FsbGVkXG4iKSk7CisKKyAgICAvKiogYWxsb2NhdGUgYSBidWZmZXIgdG8gc2F2ZSBkYXRhICovCisgICAgc3FsYiA9IF9zcWxfYnVmX2dldCgpOworICAgIGlmIChOVUxMID09IHNxbGIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkNvdWxkIG5vdCBhbGxvY2F0ZSB0cmFwIHNxbCBidWZmZXJcbiIpOworICAgICAgICByZXR1cm4gc3lzbG9nX2hhbmRsZXIoIHBkdSwgdHJhbnNwb3J0LCBoYW5kbGVyICk7CisgICAgfQorCisgICAgLyoqIHNhdmUgT0lEIG91dHB1dCBmb3JtYXQgYW5kIGNoYW5nZSB0byBudW1lcmljICovCisgICAgb2xkX2Zvcm1hdCA9IG5ldHNubXBfZHNfZ2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVCk7CisgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQsCisgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfT0lEX09VVFBVVF9OVU1FUklDKTsKKworCisgICAgcmMgPSBfc3FsX3NhdmVfdHJhcF9pbmZvKHNxbGIsIHBkdSwgdHJhbnNwb3J0KTsKKyAgICByYyA9IF9zcWxfc2F2ZV92YXJiaW5kX2luZm8oc3FsYiwgcGR1KTsKKworICAgIC8qKiByZXN0b3JlIHByZXZpb3VzIE9JRCBvdXRwdXQgZm9ybWF0ICovCisgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQsCisgICAgICAgICAgICAgICAgICAgICAgIG9sZF9mb3JtYXQpOworCisgICAgLyoqIGluc2VydCBpbnRvIHF1ZXVlICovCisgICAgcmMgPSBDT05UQUlORVJfSU5TRVJUKF9zcWwucXVldWUsIHNxbGIpOworICAgIGlmKHJjKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZCBub3QgbG9nIHF1ZXVlIHNxbCB0cmFwIGJ1ZmZlclxuIik7CisgICAgICAgIF9zcWxfbG9nKHNxbGIsIE5VTEwpOworICAgICAgICBfc3FsX2J1Zl9mcmVlKHNxbGIsIDApOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqIHNhdmUgcXVldWUgaWYgc2l6ZSBpcyA+IG1heCAqLworICAgIGlmIChDT05UQUlORVJfU0laRShfc3FsLnF1ZXVlKSA+PSBfc3FsLnF1ZXVlX21heCkKKyAgICAgICAgX3NxbF9wcm9jZXNzX3F1ZXVlKDAsTlVMTCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIHNhdmUgYSBidWZmZXJlZCB0cmFwIHRvIHNxbCBkYXRhYmFzZQorICovCitzdGF0aWMgdm9pZAorX3NxbF9zYXZlKHNxbF9idWYgKnNxbGIsIHZvaWQgKmRvbnRjYXJlKQoreworICAgIG5ldHNubXBfaXRlcmF0b3IgICAgICppdDsKKyAgICBzcWxfdmJfYnVmICAgICAgICAgICAqc3FsdmI7CisgICAgdV9sb25nICAgICAgICAgICAgICAgIHRyYXBfaWQ7CisKKyAgICAvKgorICAgICAqIGRvbid0IGV2ZW4gdHJ5IGlmIHdlIGRvbid0IGhhdmUgYSBkYXRhYmFzZSBjb25uZWN0aW9uCisgICAgICovCisgICAgaWYgKDAgPT0gX3NxbC5jb25uZWN0ZWQpIHsKKyAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnRzIGFyZSBib3VuZCB0byB0aGUgc3RhdGljIGJ1ZmZlciBvYmplY3RzLAorICAgICAqIHNvIGNvcHkgdGhlIHF1ZXVlZCBkYXRhIHRvIHRoZSBzdGF0aWMgdmVyc2lvbi4KKyAgICAgKi8KKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0uYnVmZmVyID0gc3FsYi0+aG9zdDsKKyAgICBfdGJpbmRbVEJJTkRfSE9TVF0uYnVmZmVyX2xlbmd0aCA9IHNxbGItPmhvc3RfbGVuOworCisgICAgX3RiaW5kW1RCSU5EX09JRF0uYnVmZmVyID0gc3FsYi0+b2lkOworICAgIF90YmluZFtUQklORF9PSURdLmJ1ZmZlcl9sZW5ndGggPSBzcWxiLT5vaWRfbGVuOworCisgICAgX3RiaW5kW1RCSU5EX1JFUUlEXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT5yZXFpZDsKKyAgICBfdGJpbmRbVEJJTkRfVkVSXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT52ZXJzaW9uOworICAgIF90YmluZFtUQklORF9UWVBFXS5idWZmZXIgPSAodm9pZCAqKSZzcWxiLT50eXBlOworICAgIF90YmluZFtUQklORF9TRUNVUklUWV9NT0RFTF0uYnVmZmVyID0gKHZvaWQgKikmc3FsYi0+c2VjdXJpdHlfbW9kZWw7CisKKyAgICBfdGJpbmRbVEJJTkRfREFURV0uYnVmZmVyID0gKHZvaWQgKikmc3FsYi0+dGltZTsKKworICAgIF90YmluZFtUQklORF9VU0VSXS5idWZmZXIgPSBzcWxiLT51c2VyOworICAgIF90YmluZFtUQklORF9VU0VSXS5idWZmZXJfbGVuZ3RoID0gc3FsYi0+dXNlcl9sZW47CisKKyAgICBfdGJpbmRbVEJJTkRfVFJBTlNQT1JUXS5idWZmZXIgPSBzcWxiLT50cmFuc3BvcnQ7CisgICAgaWYgKHNxbGItPnRyYW5zcG9ydCkKKyAgICAgICAgX3RiaW5kW1RCSU5EX1RSQU5TUE9SVF0uYnVmZmVyX2xlbmd0aCA9IHN0cmxlbihzcWxiLT50cmFuc3BvcnQpOworICAgIGVsc2UKKyAgICAgICAgX3RiaW5kW1RCSU5EX1RSQU5TUE9SVF0uYnVmZmVyX2xlbmd0aCA9IDA7CisKKworICAgIGlmICgoU05NUF9NUF9NT0RFTF9TTk1QdjMrMSkgPT0gc3FsYi0+dmVyc2lvbikgeworICAgICAgICBfbm9fdjMgPSAwOworCisgICAgICAgIF90YmluZFtUQklORF92M19NU0dJRF0uYnVmZmVyID0gJnNxbGItPm1zZ2lkOworICAgICAgICAKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX0xFVkVMXS5idWZmZXIgPSAmc3FsYi0+c2VjdXJpdHlfbGV2ZWw7CisgICAgICAgIAorICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9OQU1FXS5idWZmZXIgPSBzcWxiLT5jb250ZXh0OworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfQ09OVEVYVF9OQU1FXS5idWZmZXJfbGVuZ3RoID0gc3FsYi0+Y29udGV4dF9sZW47CisKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5idWZmZXIgPSBzcWxiLT5jb250ZXh0X2VuZ2luZTsKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX0NPTlRFWFRfRU5HSU5FXS5idWZmZXJfbGVuZ3RoID0KKyAgICAgICAgICAgIHNxbGItPmNvbnRleHRfZW5naW5lX2xlbjsKKworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfTkFNRV0uYnVmZmVyID0gc3FsYi0+c2VjdXJpdHlfbmFtZTsKKyAgICAgICAgX3RiaW5kW1RCSU5EX3YzX1NFQ1VSSVRZX05BTUVdLmJ1ZmZlcl9sZW5ndGggPSBzcWxiLT5zZWN1cml0eV9uYW1lX2xlbjsKKworICAgICAgICBfdGJpbmRbVEJJTkRfdjNfU0VDVVJJVFlfRU5HSU5FXS5idWZmZXIgPSBzcWxiLT5zZWN1cml0eV9lbmdpbmU7CisgICAgICAgIF90YmluZFtUQklORF92M19TRUNVUklUWV9FTkdJTkVdLmJ1ZmZlcl9sZW5ndGggPQorICAgICAgICAgICAgc3FsYi0+c2VjdXJpdHlfZW5naW5lX2xlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIF9ub192MyA9IDE7CisgICAgfQorCisgICAgaWYgKG15c3FsX3N0bXRfYmluZF9wYXJhbShfc3FsLnRyYXBfc3RtdCwgX3RiaW5kKSAhPSAwKSB7CisgICAgICAgIG5ldHNubXBfc3FsX3N0bXRfZXJyb3IoX3NxbC50cmFwX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBiaW5kIHBhcmFtZXRlcnMgZm9yIElOU0VSVCIpOworICAgICAgICBfc3FsX2xvZyhzcWxiLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qKiBleGVjdXRlIHRoZSBwcmVwYXJlZCBzdGF0ZW1lbnQgKi8KKyAgICBpZiAobXlzcWxfc3RtdF9leGVjdXRlKF9zcWwudHJhcF9zdG10KSAhPSAwKSB7CisgICAgICAgIG5ldHNubXBfc3FsX3N0bXRfZXJyb3IoX3NxbC50cmFwX3N0bXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBleGVjdXRlIGluc2VydCBzdGF0ZW1lbnQgZm9yIHRyYXAiKTsKKyAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgdHJhcF9pZCA9IG15c3FsX2luc2VydF9pZChfc3FsLmNvbm4pOworCisgICAgLyoKKyAgICAgKiBpdGVyYXRlIG92ZXIgdGhlIHZhcmJpbmRzLCBjb3B5IGRhdGEgYW5kIGluc2VydAorICAgICAqLworICAgIGl0ID0gQ09OVEFJTkVSX0lURVJBVE9SKHNxbGItPnZhcmJpbmRzKTsKKyAgICBpZiAoTlVMTCA9PSBpdCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJDb3VsZCBub3QgYWxsb2NhdGUgaXRlcmF0b3JcbiIpOworICAgICAgICBfc3FsX2xvZyhzcWxiLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGZvciggc3FsdmIgPSBJVEVSQVRPUl9GSVJTVChpdCk7IHNxbHZiOyBzcWx2YiA9IElURVJBVE9SX05FWFQoaXQpKSB7CisKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX0lEXS5idWZmZXIgPSAodm9pZCAqKSZ0cmFwX2lkOworICAgICAgICBfdmJpbmRbVkJJTkRfVFlQRV0uYnVmZmVyID0gKHZvaWQgKikmc3FsdmItPnR5cGU7CisKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX09JRF0uYnVmZmVyID0gc3FsdmItPm9pZDsKKyAgICAgICAgX3ZiaW5kW1ZCSU5EX09JRF0uYnVmZmVyX2xlbmd0aCA9IHNxbHZiLT5vaWRfbGVuOworCisgICAgICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlciA9IHNxbHZiLT52YWw7CisgICAgICAgIF92YmluZFtWQklORF9WQUxdLmJ1ZmZlcl9sZW5ndGggPSBzcWx2Yi0+dmFsX2xlbjsKKworICAgICAgICBpZiAobXlzcWxfc3RtdF9iaW5kX3BhcmFtKF9zcWwudmJfc3RtdCwgX3ZiaW5kKSAhPSAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NxbF9zdG10X2Vycm9yKF9zcWwudmJfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBiaW5kIHBhcmFtZXRlcnMgZm9yIElOU0VSVCIpOworICAgICAgICAgICAgX3NxbF9sb2coc3FsYiwgTlVMTCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChteXNxbF9zdG10X2V4ZWN1dGUoX3NxbC52Yl9zdG10KSAhPSAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NxbF9zdG10X2Vycm9yKF9zcWwudmJfc3RtdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCBleGVjdXRlIGluc2VydCBzdGF0ZW1lbnQgZm9yIHZhcmJpbmQiKTsKKyAgICAgICAgICAgIF9zcWxfbG9nKHNxbGIsIE5VTEwpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgSVRFUkFUT1JfUkVMRUFTRShpdCk7Cit9CisKKy8qCisgKiBwcm9jZXNzIChzYXZlKSBxdWV1ZWQgaXRlbXMgdG8gc3FsIGRhdGFiYXNlLgorICoKKyAqIGRvbnRjYXJlICYgbWVlaXRoZXIgYXJlIGR1bW15IHBhcmFtcyBzbyB0aGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkCisgKiBhcyBhIG5ldHNubXBfYWxhcm0gY2FsbGJhY2sgZnVuY3Rpb24uCisgKi8KK3N0YXRpYyB2b2lkCitfc3FsX3Byb2Nlc3NfcXVldWUodV9pbnQgZG9udGNhcmUsIHZvaWQgKm1lZWl0aGVyKQoreworICAgIGludCAgICAgICAgcmM7CisKKyAgICAvKiogYmFpbCBpZiB0aGUgcXVldWUgaXMgZW1wdHkgKi8KKyAgICBpZiggMCA9PSBDT05UQUlORVJfU0laRShfc3FsLnF1ZXVlKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgREVCVUdNU0dUKCgic3FsOnByb2Nlc3MiLCAicHJvY2Vzc2luZyAlZCBxdWV1ZWQgdHJhcHNcbiIsCisgICAgICAgICAgICAgICBDT05UQUlORVJfU0laRShfc3FsLnF1ZXVlKSkpOworCisgICAgLyoKKyAgICAgKiBpZiB3ZSBkb24ndCBoYXZlIGEgZGF0YWJhc2UgY29ubmVjdGlvbiwgdHJ5IHRvIHJlY29ubmVjdC4gV2UKKyAgICAgKiBkb24ndCBjYXJlIGlmIHdlIGZhaWwgLSB0cmFwcyB3aWxsIGJlIGxvZ2dlZCBpbiB0aGF0IGNhc2UuCisgICAgICovCisgICAgaWYgKDAgPT0gX3NxbC5jb25uZWN0ZWQpIHsKKyAgICAgICAgREVCVUdNU0dUKCgic3FsOnByb2Nlc3MiLCAibm8gc3FsIGNvbm5lY3Rpb247IHJlY29ubmVjdGluZ1xuIikpOworICAgICAgICAodm9pZCkgbmV0c25tcF9teXNxbF9jb25uZWN0KCk7CisgICAgfQorCisgICAgQ09OVEFJTkVSX0ZPUl9FQUNIKF9zcWwucXVldWUsIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX3NxbF9zYXZlLAorICAgICAgICAgICAgICAgICAgICAgICBOVUxMKTsKKworICAgIGlmIChfc3FsLmNvbm5lY3RlZCkgeworICAgICAgICByYyA9IG15c3FsX2NvbW1pdChfc3FsLmNvbm4pOworICAgICAgICBpZiAocmMpIHsgLyogbnV0cy4uLiBub3cgd2hhdD8gKi8KKyAgICAgICAgICAgIG5ldHNubXBfc3FsX2Vycm9yKCJjb21taXQgZmFpbGVkIik7CisgICAgICAgICAgICBDT05UQUlORVJfRk9SX0VBQ0goX3NxbC5xdWV1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKV9zcWxfbG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICB9CisgICAgfQorCisgICAgQ09OVEFJTkVSX0NMRUFSKF9zcWwucXVldWUsIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyopX3NxbF9idWZfZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgTlVMTCk7Cit9CisKKyNlbmRpZiAvKiBORVRTTk1QX1VTRV9NWVNRTCAqLwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wdXNtLmMgYi9hcHBzL3NubXB1c20uYwppbmRleCBkMWNiYTg3Li5mODY1MTVlIDEwMDY0NAotLS0gYS9hcHBzL3NubXB1c20uYworKysgYi9hcHBzL3NubXB1c20uYwpAQCAtMzAxLDcgKzMwMSw3IEBACiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKIAkgICAgY2FzZSAnRSc6IHsKLQkgICAgICAgIHNpemVfdCBlYnVmX2xlbiA9IDMyOyAvKiBYWFg6IE1BWF9FTkdJTkVJRF9MRU5HVEggKi8KKwkgICAgICAgIHNpemVfdCBlYnVmX2xlbiA9IE1BWF9FTkdJTkVJRF9MRU5HVEg7CiAgICAgICAgICAgICAgICAgdV9jaGFyICplYnVmOwogICAgICAgICAgICAgICAgIGlmIChvcHRpbmQgPCBhcmdjKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhcmd2W29wdGluZF0pIHsKZGlmZiAtLWdpdCBhL2FwcHMvc25tcHZhY20uYyBiL2FwcHMvc25tcHZhY20uYwppbmRleCBjZjA3MWYyLi5iZGJhODk2IDEwMDY0NAotLS0gYS9hcHBzL3NubXB2YWNtLmMKKysrIGIvYXBwcy9zbm1wdmFjbS5jCkBAIC05MCwxOSArOTAsMTUgQEAKIAogc3RhdGljIG9pZCAgICAgIHZhY21Hcm91cE5hbWVbTUFYX09JRF9MRU5dID0KICAgICB7IDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCAyLCAxLCAzIH0sCi0gICAgdmFjbVNlYzJHcm91cFN0b3JhZ2VUeXBlW01BWF9PSURfTEVOXSA9IHsKLTEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCAyLCAxLCA0fSwgdmFjbVNlYzJHcm91cFN0YXR1c1tNQVhfT0lEX0xFTl0gPSB7CisgICAgdmFjbVNlYzJHcm91cFN0YXR1c1tNQVhfT0lEX0xFTl0gPSB7CiAxLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgMiwgMSwgNX0sIHZhY21BY2Nlc3NDb250ZXh0TWF0Y2hbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDR9LCB2YWNtQWNjZXNzUmVhZFZpZXdOYW1lW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA0LCAxLCA1fSwgdmFjbUFjY2Vzc1dyaXRlVmlld05hbWVbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDZ9LCB2YWNtQWNjZXNzTm90aWZ5Vmlld05hbWVbTUFYX09JRF9MRU5dID0gewotMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDd9LCB2YWNtQWNjZXNzU3RvcmFnZVR5cGVbTUFYX09JRF9MRU5dID0gewotMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDQsIDEsIDh9LCB2YWNtQWNjZXNzU3RhdHVzW01BWF9PSURfTEVOXSA9IHsKKzEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA0LCAxLCA3fSwgdmFjbUFjY2Vzc1N0YXR1c1tNQVhfT0lEX0xFTl0gPSB7CiAxLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNCwgMSwgOX0sIHZhY21WaWV3VHJlZUZhbWlseU1hc2tbTUFYX09JRF9MRU5dID0gewogMSwgMywgNiwgMSwgNiwgMywgMTYsIDEsIDUsIDIsIDEsIDN9LCB2YWNtVmlld1RyZWVGYW1pbHlUeXBlW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA1LCAyLCAxLCA0fSwKLSAgICB2YWNtVmlld1RyZWVGYW1pbHlTdG9yYWdlVHlwZVtNQVhfT0lEX0xFTl0gPSB7Ci0xLCAzLCA2LCAxLCA2LCAzLCAxNiwgMSwgNSwgMiwgMSwgNX0sCiAgICAgdmFjbVZpZXdUcmVlRmFtaWx5U3RhdHVzW01BWF9PSURfTEVOXSA9IHsKIDEsIDMsIDYsIDEsIDYsIDMsIDE2LCAxLCA1LCAyLCAxLCA2fQogCkBAIC0xMTEsNyArMTA3LDYgQEAKICNkZWZpbmUgTlNWQUNNQUNDRVNTVEFCTEUgICAgMSwgMywgNiwgMSwgNCwgMSwgODA3MiwgMSwgOSwgMQogc3RhdGljIG9pZCBuc1ZhY21Db250ZXh0UGZ4W01BWF9PSURfTEVOXSAgPSB7IE5TVkFDTUFDQ0VTU1RBQkxFLCAxLCAyIH07CiBzdGF0aWMgb2lkIG5zVmFjbVZpZXdOYW1lW01BWF9PSURfTEVOXSAgICA9IHsgTlNWQUNNQUNDRVNTVEFCTEUsIDEsIDMgfTsKLXN0YXRpYyBvaWQgbnNWYWNtU3RvcmFnZVR5cGVbTUFYX09JRF9MRU5dID0geyBOU1ZBQ01BQ0NFU1NUQUJMRSwgMSwgNCB9Owogc3RhdGljIG9pZCBuc1ZhY21Sb3dTdGF0dXNbTUFYX09JRF9MRU5dICAgPSB7IE5TVkFDTUFDQ0VTU1RBQkxFLCAxLCA1IH07CiAKIGludCAgICAgICAgICAgICB2aWV3VHJlZUZhbWlseVR5cGUgPSAxOwpkaWZmIC0tZ2l0IGEvYXBwcy9zbm1wd2Fsay5jIGIvYXBwcy9zbm1wd2Fsay5jCmluZGV4IDM2MTM0MWEuLmIwZGIzZjQgMTAwNjQ0Ci0tLSBhL2FwcHMvc25tcHdhbGsuYworKysgYi9hcHBzL3NubXB3YWxrLmMKQEAgLTgwLDYgKzgwLDggQEAKIG9pZCAgICAgICAgICAgICBvYmppZF9taWJbXSA9IHsgMSwgMywgNiwgMSwgMiwgMSB9OwogaW50ICAgICAgICAgICAgIG51bXByaW50ZWQgPSAwOwogCitjaGFyICAgICAgICAgICAqZW5kX25hbWUgPSBOVUxMOworCiB2b2lkCiB1c2FnZSh2b2lkKQogewpAQCAtOTYsNiArOTgsNyBAQAogICAgICAgICAgICAgIlx0XHRcdCAgYzogIGRvIG5vdCBjaGVjayByZXR1cm5lZCBPSURzIGFyZSBpbmNyZWFzaW5nXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwKICAgICAgICAgICAgICJcdFx0XHQgIHQ6ICBEaXNwbGF5IHdhbGwtY2xvY2sgdGltZSB0byBjb21wbGV0ZSB0aGUgcmVxdWVzdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICJcdFx0XHQgIEUge09JRH06ICBFbmQgdGhlIHdhbGsgYXQgdGhlIHNwZWNpZmllZCBPSURcbiIpOwogfQogCiB2b2lkCkBAIC0xNTEsNiArMTU0LDEwIEBACiAgICAgICAgICAgICAgICAgbmV0c25tcF9kc190b2dnbGVfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19XQUxLX1RJTUVfUkVTVUxUUyk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgJ0UnOgorICAgICAgICAgICAgICAgIGVuZF9uYW1lID0gYXJndltvcHRpbmQrK107CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVW5rbm93biBmbGFnIHBhc3NlZCB0byAtQzogJWNcbiIsCkBAIC0xNzMsNiArMTgwLDggQEAKICAgICBzaXplX3QgICAgICAgICAgbmFtZV9sZW5ndGg7CiAgICAgb2lkICAgICAgICAgICAgIHJvb3RbTUFYX09JRF9MRU5dOwogICAgIHNpemVfdCAgICAgICAgICByb290bGVuOworICAgIG9pZCAgICAgICAgICAgICBlbmRfb2lkW01BWF9PSURfTEVOXTsKKyAgICBzaXplX3QgICAgICAgICAgZW5kX2xlbiA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIGNvdW50OwogICAgIGludCAgICAgICAgICAgICBydW5uaW5nOwogICAgIGludCAgICAgICAgICAgICBzdGF0dXMgPSBTVEFUX0VSUk9SOwpAQCAtMjMzLDYgKzI0MiwyMyBAQAogICAgICAgICByb290bGVuID0gc2l6ZW9mKG9iamlkX21pYikgLyBzaXplb2Yob2lkKTsKICAgICB9CiAKKyAgICAvKgorICAgICAqIElmIHdlJ3ZlIGJlZW4gZ2l2ZW4gYW4gZXhwbGljaXQgZW5kIHBvaW50LAorICAgICAqICB0aGVuIGNvbnZlcnQgdGhpcyB0byBhbiBPSUQsIG90aGVyd2lzZQorICAgICAqICBtb3ZlIHRvIHRoZSBuZXh0IHNpYmxpbmcgb2YgdGhlIHN0YXJ0LgorICAgICAqLworICAgIGlmICggZW5kX25hbWUgKSB7CisgICAgICAgIGVuZF9sZW4gPSBNQVhfT0lEX0xFTjsKKyAgICAgICAgaWYgKHNubXBfcGFyc2Vfb2lkKGVuZF9uYW1lLCBlbmRfb2lkLCAmZW5kX2xlbikgPT0gTlVMTCkgeworICAgICAgICAgICAgc25tcF9wZXJyb3IoZW5kX25hbWUpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1lbW1vdmUoZW5kX29pZCwgcm9vdCwgcm9vdGxlbipzaXplb2Yob2lkKSk7CisgICAgICAgIGVuZF9sZW4gPSByb290bGVuOworICAgICAgICBlbmRfb2lkW2VuZF9sZW4tMV0rKzsKKyAgICB9CisKICAgICBTT0NLX1NUQVJUVVA7CiAKICAgICAvKgpAQCAtMjg0LDkgKzMxMCw4IEBACiAgICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICAgICAgZm9yICh2YXJzID0gcmVzcG9uc2UtPnZhcmlhYmxlczsgdmFyczsKICAgICAgICAgICAgICAgICAgICAgIHZhcnMgPSB2YXJzLT5uZXh0X3ZhcmlhYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgodmFycy0+bmFtZV9sZW5ndGggPCByb290bGVuKQotICAgICAgICAgICAgICAgICAgICAgICAgfHwgKG1lbWNtcChyb290LCB2YXJzLT5uYW1lLCByb290bGVuICogc2l6ZW9mKG9pZCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNubXBfb2lkX2NvbXBhcmUoZW5kX29pZCwgZW5kX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFycy0+bmFtZSwgdmFycy0+bmFtZV9sZW5ndGgpIDw9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICAgICAgICAgKiBub3QgcGFydCBvZiB0aGlzIHN1YnRyZWUgCiAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KZGlmZiAtLWdpdCBhL2FwcHMvc3NodG9zbm1wLmMgYi9hcHBzL3NzaHRvc25tcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MGE0NWQKLS0tIC9kZXYvbnVsbAorKysgYi9hcHBzL3NzaHRvc25tcC5jCkBAIC0wLDAgKzEsMjM0IEBACisvKiBDb3B5cmlnaHQgMjAwOSBTUEFSVEEsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZAorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisvKgorICogVGhpcyBpcyBtZXJlbHkgYSB3cmFwcGVyIGFyb3VuZCBzdGRpbi9vdXQgZm9yIHNzaGQgdG8gY2FsbC4gIEl0CisgKiBzaW1wbHkgcGFzc2VzIHRyYWZmaWMgdG8gdGhlIHJ1bm5pbmcgc25tcGQgdGhyb3VnaCBhIHVuaXggZG9tYWluCisgKiBzb2NrZXQgYWZ0ZXIgZmlyc3QgcGFzc2luZyBhbnkgbmVlZGVkIFNTSCBEb21haW4gaW5mb3JtYXRpb24uCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19VTl9ICisjaW5jbHVkZSA8c3lzL3VuLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpZm5kZWYgTUFYUEFUSExFTgorI3dhcm4gbm8gc3lzdGVtIG1heCBwYXRoIGxlbmd0aCBkZXRlY3RlZAorI2RlZmluZSBNQVhQQVRITEVOIDIwNDgKKyNlbmRpZgorCisjZGVmaW5lIERFRkFVTFRfU09DS19QQVRIICIvdmFyL25ldC1zbm1wL3NzaGRvbWFpbnNvY2tldCIKKworI2RlZmluZSBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OX05VTUJFUiAxCisKKworCisvKgorICogRXh0cmEgZGVidWdnaW5nIG91dHB1dCBmb3IsIHVtLCBkZWJ1Z2dpbmcuCisgKi8KKworI3VuZGVmIERFQlVHR0lORworCisjaWZkZWYgREVCVUdHSU5HCisjZGVmaW5lIERFQlVHKHgpIGRlYih4KQorRklMRSAqZGViZiA9IE5VTEw7Cit2b2lkCitkZWIoY29uc3QgY2hhciAqc3RyaW5nKSB7CisgICAgaWYgKE5VTEwgPT0gZGViZikgeworICAgICAgICBkZWJmID0gZm9wZW4oIi90bXAvc3NodG9zbm1wLmxvZyIsICJhIik7CisgICAgfQorICAgIGlmIChOVUxMICE9IGRlYmYpIHsKKyAgICAgICAgZnByaW50ZihkZWJmLCAiJXNcbiIsIHN0cmluZyk7CisgICAgICAgIGZmbHVzaChkZWJmKTsKKyAgICB9Cit9CisjZWxzZSAgLyogIURFQlVHR0lORyAqLworI2RlZmluZSBERUJVRyh4KQorI2VuZGlmIC8qIERFQlVHR0lORyBjb2RlICovCisKK2ludAorbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKKworICAgIGludCBzb2NrOworICAgIHN0cnVjdCBzb2NrYWRkcl91biBhZGRyOworICAgIHVfY2hhciBidWZbNDA5Nl07CisgICAgc2l6ZV90IGJ1Zl9sZW4gPSBzaXplb2YoYnVmKTsKKyAgICB1X3Nob3J0IG5hbWVfbGVuOworICAgIGludCByYyA9IDAsIHBrdHNpemUgPSAwOworCisgICAgZmRfc2V0IHJlYWRfc2V0OworCisgICAgREVCVUcoIi0tLS0tLS0tLS1cbnN0YXJ0aW5nIHVwIik7CisKKyAgICAvKiBPcGVuIGEgY29ubmVjdGlvbiB0byB0aGUgVU5JWCBkb21haW4gc29ja2V0IG9yIGZhaWwgKi8KKworICAgIGFkZHIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7CisgICAgaWYgKGFyZ2MgPiAxKSB7CisgICAgICAgIHN0cmNweShhZGRyLnN1bl9wYXRoLCBhcmd2WzFdKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzdHJjcHkoYWRkci5zdW5fcGF0aCwgREVGQVVMVF9TT0NLX1BBVEgpOworICAgIH0KKworICAgIHNvY2sgPSBzb2NrZXQoUEZfVU5JWCwgU09DS19TVFJFQU0sIDApOworICAgIERFQlVHKCJjcmVhdGVkIHNvY2tldCIpOworICAgIGlmIChzb2NrIDw9IDApIHsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICAvKiBzZXQgdGhlIFNPX1BBU1NDUkVEIG9wdGlvbiBzbyB3ZSBjYW4gcGFzcyB1aWQgKi8KKyAgICAvKiBYWFg6IGFjY29yZGluZyB0byB0aGUgdW5peCgxKSBtYW51YWwgdGhpcyBzaG91bGRuJ3QgYmUgbmVlZGVkCisgICAgICAgb24gdGhlIHNlbmRpbmcgc2lkZT8gKi8KKyAgICB7CisgICAgICAgIGludCBvbmUgPSAxOworICAgICAgICBzZXRzb2Nrb3B0KHNvY2ssIFNPTF9TT0NLRVQsIFNPX1BBU1NDUkVELCAodm9pZCAqKSAmb25lLAorICAgICAgICAgICAgICAgICAgIHNpemVvZihvbmUpKTsKKyAgICB9CisKKyAgICBpZiAoY29ubmVjdChzb2NrLCAoc3RydWN0IHNvY2thZGRyICopICZhZGRyLAorICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pKSAhPSAwKSB7CisgICAgICAgIERFQlVHKCJGQUlMIENPTk5FQ1QiKTsKKyAgICAgICAgZXhpdCgxKTsKKyAgICB9CisKKyAgICBERUJVRygib3BlbmVkIHNvY2tldCIpOworCisgICAgLyoKKyAgICAgKiB3ZSBhcmUgcnVubmluZyBhcyB0aGUgdXNlciB0aGF0IHNzaCBhdXRoZW50aWNhdGVkIHVzIGFzLCBhbmQgdGhpcworICAgICAqIGlzIHRoZSBuYW1lL3VpZCB0aGF0IHRoZSBhZ2VudCBuZWVkcyBmb3IgcHJvY2Vzc2luZyBhcyBhIFNOTVB2MworICAgICAqIHNlY3VyaXR5IG5hbWUuICBTbyB0aGlzIGlzIHRoZSBvbmx5IHRoaW5nIG5lZWRlZCB0byBwYXNzIHRvIHRoZQorICAgICAqIGFnZW50LgorICAgICAqLworCisgICAgLyogdmVyc2lvbiAxIG9mIG91ciBpbnRlcm5hbCBzc2ggdG8gc25tcCB3cmFwcGVyIGlzIGp1c3QgYSBzaW5nbGUKKyAgICAgICBieXRlIHZlcnNpb24gbnVtYmVyIGFuZCBpbmRpY2F0ZXMgd2UncmUgYWxzbyBwYXNzaW5nIHVuaXgKKyAgICAgICBzb2NrZXQgY3JlZGVudGlhbHMgY29udGFpbmluZyBvdXIgdXNlciBpZCAqLworCisgICAgLyogSW4gY2FzZSBvZiBmdXR1cmUgY2hhbmdlcywgd2UnbGwgcGFzcyBhIHZlcnNpb24gbnVtYmVyIGZpcnN0ICovCisKKyAgICBidWZbMF0gPSBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OX05VTUJFUjsKKyAgICBidWZfbGVuID0gMTsKKyAgICAKKyAgICAvKiBzZW5kIHRoZSBwcmVsaW0gbWVzc2FnZSBhbmQgdGhlIGNyZWRlbnRpYWxzIHRvZ2V0aGVyIHVzaW5nIHNlbmRtc2coKSAqLworICAgIHsKKyAgICAgICAgc3RydWN0IG1zZ2hkciBtOworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICBzdHJ1Y3QgY21zZ2hkciBjbTsKKyAgICAgICAgICAgc3RydWN0IHVjcmVkIG91cnVzZXI7CisgICAgICAgIH0gY21zZzsKKyAgICAgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsgYnVmLCBidWZfbGVuIH07CisKKyAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgZXZlbiBwYWRkaW5nIGZpZWxkcyBnZXQgaW5pdGlhbGl6ZWQuKi8KKyAgICAgICAgbWVtc2V0KCZjbXNnLCAwLCBzaXplb2YoY21zZykpOworICAgICAgICBtZW1zZXQoJm0sIDAsIHNpemVvZihtKSk7CisKKyAgICAgICAgLyogc2V0IHVwIHRoZSBiYXNpYyBtZXNzYWdlICovCisgICAgICAgIGNtc2cuY20uY21zZ19sZW4gPSBzaXplb2Yoc3RydWN0IGNtc2doZHIpICsgc2l6ZW9mKHN0cnVjdCB1Y3JlZCk7CisgICAgICAgIGNtc2cuY20uY21zZ19sZXZlbCA9IFNPTF9TT0NLRVQ7CisgICAgICAgIGNtc2cuY20uY21zZ190eXBlID0gU0NNX0NSRURFTlRJQUxTOworCisgICAgICAgIGNtc2cub3VydXNlci51aWQgPSBnZXR1aWQoKTsKKyAgICAgICAgY21zZy5vdXJ1c2VyLmdpZCA9IGdldGdpZCgpOworICAgICAgICBjbXNnLm91cnVzZXIucGlkID0gZ2V0cGlkKCk7CisKKyAgICAgICAgbS5tc2dfaW92ICAgICAgICAgICAgICAgPSAmaW92OworICAgICAgICBtLm1zZ19pb3ZsZW4gICAgICAgICAgICA9IDE7CisgICAgICAgIG0ubXNnX2NvbnRyb2wgICAgICAgICAgID0gJmNtc2c7CisgICAgICAgIG0ubXNnX2NvbnRyb2xsZW4gICAgICAgID0gc2l6ZW9mKGNtc2cpOworICAgICAgICBtLm1zZ19mbGFncyAgICAgICAgICAgICA9IDA7CisgICAgICAgIAorICAgICAgICBERUJVRygic2VuZGluZyB0byBzb2NrIik7CisgICAgICAgIHJjID0gc2VuZG1zZyhzb2NrLCAmbSwgTVNHX05PU0lHTkFMfE1TR19ET05UV0FJVCk7CisgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZmFpbGVkIHRvIHNlbmQgc3RhcnR1cCBtZXNzYWdlXG4iKTsKKyAgICAgICAgICAgIERFQlVHKCJmYWlsZWQgdG8gc2VuZCBzdGFydHVwIG1lc3NhZ2VcbiIpOworICAgICAgICAgICAgZXhpdCgxKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIERFQlVHKCJzZW50IG5hbWUiKTsKKyAgICAKKyAgICAvKiBub3cgd2UganVzdCBzZW5kIGFuZCByZWNlaXZlIGZyb20gYm90aCB0aGUgc29ja2V0IGFuZCBzdGRpbi9zdGRvdXQgKi8KKworICAgIHdoaWxlKDEpIHsKKyAgICAgICAgLyogcmVhZCBmcm9tIHN0ZGluIGFuZCB0aGUgc29ja2V0ICovCisgICAgICAgIEZEX1NFVChzb2NrLCAmcmVhZF9zZXQpOworICAgICAgICBGRF9TRVQoU1RESU5fRklMRU5PLCAmcmVhZF9zZXQpOworCisgICAgICAgIC8qIGJsb2NraW5nIHdpdGhvdXQgYSB0aW1lb3V0IGJlIGZpbmUgZmluZSAqLworICAgICAgICBzZWxlY3Qoc29jaysxLCAmcmVhZF9zZXQsIE5VTEwsIE5VTEwsIE5VTEwpOworCisgICAgICAgIGlmIChGRF9JU1NFVChTVERJTl9GSUxFTk8sICZyZWFkX3NldCkpIHsKKyAgICAgICAgICAgIC8qIHJlYWQgZnJvbSBzdGRpbiB0byBnZXQgc3R1ZmYgZnJvbSBzc2hkIHRvIHNlbmQgdG8gdGhlIGFnZW50ICovCisgICAgICAgICAgICBERUJVRygiZGF0YSBmcm9tIHN0ZGluIik7CisgICAgICAgICAgICByYyA9IHJlYWQoU1RESU5fRklMRU5PLCBidWYsIHNpemVvZihidWYpKTsKKworICAgICAgICAgICAgaWYgKHJjIDw9IDApIHsKKyAgICAgICAgICAgICAgICAvKiBlbmQtb2YtZmlsZSAqLworI2lmbmRlZiBIQVZFX0NMT1NFU09DS0VUCisgICAgICAgICAgICAgICAgcmMgPSBjbG9zZShzb2NrKTsKKyNlbHNlCisgICAgICAgICAgICAgICAgcmMgPSBjbG9zZXNvY2tldChzb2NrKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGV4aXQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVRygicmVhZCBmcm9tIHN0ZGluIik7CisKKyAgICAgICAgICAgIC8qIHNlbmQgaXQgdXAgdGhlIHBpcGUgKi8KKyAgICAgICAgICAgIHBrdHNpemUgPSByYzsKKyAgICAgICAgICAgIHJjID0gLTE7CisgICAgICAgICAgICB3aGlsZSAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgREVCVUcoInNlbmRpbmcgdG8gc29ja2V0Iik7CisgICAgICAgICAgICAgICAgcmMgPSBzZW5kdG8oc29jaywgYnVmLCBwa3RzaXplLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBERUJVRygiYmFjayBmcm9tIHNlbmR0byIpOworICAgICAgICAgICAgICAgIGlmIChyYyA8IDApCisgICAgICAgICAgICAgICAgICAgIERFQlVHKCJzZW50dG8gZmFpbGVkIik7CisgICAgICAgICAgICAgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmMgPiAwKQorICAgICAgICAgICAgICAgIERFQlVHKCJzZW50IHRvIHNvY2tldCIpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIERFQlVHKCJmYWlsZWQgdG8gc2VuZCB0byBzb2NrZXQhISIpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEZEX0lTU0VUKHNvY2ssICZyZWFkX3NldCkpIHsKKyAgICAgICAgICAgIC8qIHJlYWQgZnJvbSB0aGUgc29ja2V0IGFuZCBzZW5kIHRvIHRvIHN0ZG91dCB3aGljaCBnb2VzIHRvIHNzaGQgKi8KKyAgICAgICAgICAgIERFQlVHKCJkYXRhIG9uIHVuaXggc29ja2V0Iik7CisKKyAgICAgICAgICAgIHJjID0gLTE7CisgICAgICAgICAgICB3aGlsZSAocmMgPCAwKSB7CisgICAgICAgICAgICAgICAgcmMgPSByZWN2ZnJvbShzb2NrLCBidWYsIHNpemVvZihidWYpLCAwLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgICAgIGNsb3NlKHNvY2spOworICAgICAgICAgICAgICAgICAgICBleGl0KDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERFQlVHKCJyZWFkIGZyb20gc29ja2V0Iik7CisKKyAgICAgICAgICAgIHBrdHNpemUgPSByYzsKKyAgICAgICAgICAgIHJjID0gd3JpdGUoU1RET1VUX0ZJTEVOTywgYnVmLCBwa3RzaXplKTsKKyAgICAgICAgICAgIC8qIFhYWDogY2hlY2sgdGhhdCBjb3VudHMgbWF0Y2ggKi8KKyAgICAgICAgICAgIGlmIChyYyA+IDApIHsKKyAgICAgICAgICAgICAgICBERUJVRygid3JvdGUgdG8gc3Rkb3V0Iik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIERFQlVHKCJmYWlsZWQgdG8gd3JpdGUgdG8gc3Rkb3V0Iik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb25maWcuZ3Vlc3MgYi9jb25maWcuZ3Vlc3MKaW5kZXggZjMyMDc5YS4uY2EyYTAzYyAxMDA3NTUKLS0tIGEvY29uZmlnLmd1ZXNzCisrKyBiL2NvbmZpZy5ndWVzcwpAQCAtNCw3ICs0LDcgQEAKICMgICAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4CiAjICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKLXRpbWVzdGFtcD0nMjAwOC0wMS0yMycKK3RpbWVzdGFtcD0nMjAwOC0wMS0wOCcKIAogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAogIyB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQpAQCAtMTQ4NCw5ICsxNDg0LDkgQEAKIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHlvdSBhcmUgdXNpbmcuIEl0IGlzIGFkdmlzZWQgdGhhdCB5b3UKIGRvd25sb2FkIHRoZSBtb3N0IHVwIHRvIGRhdGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIHNjcmlwdHMgZnJvbQogCi0gIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuZ3Vlc3M7aGI9SEVBRAorICBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9jZ2ktYmluL3ZpZXdjdnMvKmNoZWNrb3V0Ki9jb25maWcvY29uZmlnL2NvbmZpZy5ndWVzcwogYW5kCi0gIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Y29uZmlnLmdpdDthPWJsb2JfcGxhaW47Zj1jb25maWcuc3ViO2hiPUhFQUQKKyAgaHR0cDovL3NhdmFubmFoLmdudS5vcmcvY2dpLWJpbi92aWV3Y3ZzLypjaGVja291dCovY29uZmlnL2NvbmZpZy9jb25maWcuc3ViCiAKIElmIHRoZSB2ZXJzaW9uIHlvdSBydW4gKCQwKSBpcyBhbHJlYWR5IHVwIHRvIGRhdGUsIHBsZWFzZQogc2VuZCB0aGUgZm9sbG93aW5nIGRhdGEgYW5kIGFueSBpbmZvcm1hdGlvbiB5b3UgdGhpbmsgbWlnaHQgYmUKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQppbmRleCBmMGFkZWFmLi44YWU5NThhIDEwMDc1NQotLS0gYS9jb25maWd1cmUKKysrIGIvY29uZmlndXJlCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zY2I0Y2RkCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmFjCkBAIC0wLDAgKzEsMTIyIEBACisjIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodC4gIFNlZQorIyB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworIyB0aGF0IG1heSBhcHBseToKKyMKKyMgUG9ydGlvbnMgQ29weXJpZ2h0IKkgMjAwMyBTdW4gTWljcm9zeXN0ZW1zLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyMgZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyMKKworIworIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9jb25mIHRvIHByb2R1Y2UgYSBjb25maWd1cmUgc2NyaXB0LgorIworQUNfSU5JVChbTmV0LVNOTVBdLCBbNS41LjJdLCBbbmV0LXNubXAtY29kZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0pCitBQ19QUkVSRVEoWzIuNjNdKQorQUNfQ09ORklHX1NSQ0RJUihbYWdlbnQvbWliZ3JvdXAvdWNkLXNubXAvZXh0ZW5zaWJsZS5jXSkKK0FDX1JFVklTSU9OKFskUmV2aXNpb24kXSkKKworQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQorQUNfQ09ORklHX0hFQURFUihpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oKQorCitBQ19NU0dfQ0FDSEVfSU5JVCgpCisKKyMKKyMgc2F2ZSB0aGUgY29uZmlndXJlIGFyZ3VtZW50cworIworQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQ09ORklHVVJFX09QVElPTlMsIiRhY19jb25maWd1cmVfYXJncyIsCisgIFtjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWRdKQorQ09ORklHVVJFX09QVElPTlM9IlwiJGFjX2NvbmZpZ3VyZV9hcmdzXCIiCitBQ19TVUJTVChDT05GSUdVUkVfT1BUSU9OUykKKworIyMKKyMjIFJlY29tbWVuZGVkIHN0cnVjdHVyZToKKyMjCisjICAgICBpbmZvcm1hdGlvbiBvbiB0aGUgcGFja2FnZQorIyAgICAgY2hlY2tzIGZvciBwcm9ncmFtcworIyAgICAgY2hlY2tzIGZvciBsaWJyYXJpZXMKKyMgICAgIGNoZWNrcyBmb3IgaGVhZGVyIGZpbGVzCisjICAgICBjaGVja3MgZm9yIHR5cGVzCisjICAgICBjaGVja3MgZm9yIHN0cnVjdHVyZXMKKyMgICAgIGNoZWNrcyBmb3IgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCisjICAgICBjaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zCisjICAgICBjaGVja3MgZm9yIHN5c3RlbSBzZXJ2aWNlcworCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZV0pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfcHJvZ3NdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHNdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnNdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlc10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19saWJdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50XSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMV0pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfbGliczJdKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob25dKQorbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX29zX21pc2MyXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjM10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zXSkKK200X2luY2x1ZGUoW2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVyc10pCittNF9pbmNsdWRlKFtjb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzRdKQorCisjCisjIGRlZmluZSB0aGUgYWdlbnQgbGlicmFyaWVzIHZhcmlhYmxlcworIworQUNfU1VCU1QoTE1JQkxJQlMpCitBQ19TVUJTVChBR0VOVExJQlMpCitBQ19TVUJTVChPVEhFUkFHRU5UTElCT0JKUykKK0FDX1NVQlNUKE9USEVSQUdFTlRMSUJMT0JKUykKKworbTRfaW5jbHVkZShbY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsXSkKKworQUNfU1VCU1QoRExMSUJTKQorCitBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlOk1ha2VmaWxlLnRvcDpNYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCitBQ19DT05GSUdfRklMRVMoW3NubXBsaWIvTWFrZWZpbGU6TWFrZWZpbGUudG9wOnNubXBsaWIvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6c25tcGxpYi9NYWtlZmlsZS5kZXBlbmRdKQorQUNfQ09ORklHX0ZJTEVTKFthcHBzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphcHBzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFwcHMvTWFrZWZpbGUuZGVwZW5kXSkKK0FDX0NPTkZJR19GSUxFUyhbYXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphcHBzL3NubXBuZXRzdGF0L01ha2VmaWxlLmRlcGVuZF0pCitBQ19DT05GSUdfRklMRVMoW2FnZW50L01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphZ2VudC9NYWtlZmlsZS5kZXBlbmRdKQorQUNfQ09ORklHX0ZJTEVTKFthZ2VudC9oZWxwZXJzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9oZWxwZXJzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFnZW50L2hlbHBlcnMvTWFrZWZpbGUuZGVwZW5kXSkKK0FDX0NPTkZJR19GSUxFUyhbYWdlbnQvbWliZ3JvdXAvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFnZW50L21pYmdyb3VwL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOmFnZW50L21pYmdyb3VwL01ha2VmaWxlLmRlcGVuZF0pCitBQ19DT05GSUdfRklMRVMoW2xvY2FsL01ha2VmaWxlOk1ha2VmaWxlLnRvcDpsb2NhbC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCitBQ19DT05GSUdfRklMRVMoW3Rlc3RpbmcvTWFrZWZpbGU6TWFrZWZpbGUudG9wOnRlc3RpbmcvTWFrZWZpbGUuaW5dKQorQUNfQ09ORklHX0ZJTEVTKFttYW4vTWFrZWZpbGU6TWFrZWZpbGUudG9wOm1hbi9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlc10pCitBQ19DT05GSUdfRklMRVMoW21pYnMvTWFrZWZpbGU6TWFrZWZpbGUudG9wOm1pYnMvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQorQUNfQ09ORklHX0ZJTEVTKFtuZXQtc25tcC1jb25maWc6bmV0LXNubXAtY29uZmlnLmluXSwKKwkJW2NobW9kICt4IG5ldC1zbm1wLWNvbmZpZ10pCitBQ19DT05GSUdfRklMRVMoW25ldC1zbm1wLWNyZWF0ZS12My11c2VyOm5ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluXSwKKwkJW2NobW9kICt4IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyXSkKKworQUNfQ09ORklHX0NPTU1BTkRTKFtkZWZhdWx0XSwgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1oKQorCisjCisjIHByb3RlY3QgUEFDS0FHRV8qIHZhcmlhYmxlcworIworQUhfVkVSQkFUSU0oW1BBQ0tBR0VfQlVHUkVQT1JUXSxbLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCisjaWZuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCisjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9OQU1FXSxbLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2lmbmRlZiBQQUNLQUdFX05BTUUKKyN1bmRlZiBQQUNLQUdFX05BTUUKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9TVFJJTkddLFsvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCisjaWZuZGVmIFBBQ0tBR0VfU1RSSU5HCisjdW5kZWYgUEFDS0FHRV9TVFJJTkcKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9UQVJOQU1FXSxbLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2lmbmRlZiBQQUNLQUdFX1RBUk5BTUUKKyN1bmRlZiBQQUNLQUdFX1RBUk5BTUUKKyNlbmRpZl0pCitBSF9WRVJCQVRJTShbUEFDS0FHRV9WRVJTSU9OXSxbLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNpZm5kZWYgUEFDS0FHRV9WRVJTSU9OCisjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCisjZW5kaWZdKQorCitBQ19PVVRQVVQKKworQUNfTVNHX0NBQ0hFX0RJU1BMQVkoKQorIyBMb2NhbCBWYXJpYWJsZXM6CisjIG1vZGU6IEF1dG9jb25mCisjIGNvbW1lbnQtc3RhcnQ6ICIjIgorIyBFbmQ6CmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudCBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2FnZW50Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTU0NDgKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfbW9kdWxlc19hZ2VudApAQCAtMCwwICsxLDc4MCBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjCisjIGdlbmVyYXRlIGVtcHR5IGZpbGVzCisjCisjIENyZWF0ZSBpbmNsdWRlIGZpbGUgbGlzdCBmb3Igc25tcF92YXJzLmggdG8gdXNlLgorbWliZGlyPSJhZ2VudC9taWJncm91cCIKK2lmIHRlc3QgISAtZCBhZ2VudDsgdGhlbgorICBta2RpciBhZ2VudAorZmkKK2lmIHRlc3QgISAtZCBhZ2VudC9taWJncm91cDsgdGhlbgorICBta2RpciBhZ2VudC9taWJncm91cAorZmkKK2o9IiRtaWJkaXIvbWliX21vZHVsZV9pbmNsdWRlcy5oICAkbWliZGlyL2FnZW50X21vZHVsZV9pbmNsdWRlcy5oIFwKKyAgICRtaWJkaXIvbWliX21vZHVsZV9pbml0cy5oICAgICAkbWliZGlyL2FnZW50X21vZHVsZV9pbml0cy5oICAgIFwKKyAgICRtaWJkaXIvbWliX21vZHVsZV9zaHV0ZG93bi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9zaHV0ZG93bi5oIFwKKyAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaCAgIFwKKyAgICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9kb3RfY29uZi5oIgorCitmb3IgaSBpbiAkajsgZG8KKyAgcm0gLWYgJGkKKyAgZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJGkKK2RvbmUKKworIworIyBEbyBoYWlyeSBhZ2VudCBtb2R1bGUgcHJvY2Vzc2luZy4KKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIGFuZCBjb25maWd1cmluZyBtaWIgbW9kdWxlcyB0byB1c2VdKQorCisjIHNldCB1cCB0aGUgQ1BQIGNvbW1hbmQKK01PRFVMRUNQUD0iJENQUCAkUEFSVElBTFRBUkdFVEZMQUdTIC1JJHtzcmNkaXJ9L2luY2x1ZGUgLUkke3NyY2Rpcn0vYWdlbnQvbWliZ3JvdXAiCitpZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCisgIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUyIKK2ZpCisKK21vZHVsZV9saXN0PSIiCittaWJfbW9kdWxlX2xpc3Q9IiIKK2FnZW50X21vZHVsZV9saXN0PSIiCituZXdfd2l0aF9taWJfbW9kdWxlcz1gZWNobyAkd2l0aF9taWJfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKK25ld193aXRoX291dF9taWJfbW9kdWxlcz1gZWNobyAkd2l0aF9vdXRfbWliX21vZHVsZXMgfCAkU0VEICdzLywvIC9nOydgCisKKyMgc2V0IHVwIGluaXRpYWwgbW9kdWxlIGxpc3QKK25ld19tb2R1bGVfbGlzdD0iJG5ld193aXRoX21pYl9tb2R1bGVzIGRlZmF1bHRfbW9kdWxlcyIKKworIyBtaW5vciBtb2RpZmljYXRpb25zCitpZiB0ZXN0ICJ4JGVuYWJsZV9hZ2VudCIgPSAieG5vIjsgdGhlbgorICAgIyBtaW5pbXVtIG1pYiBtb2R1bGUgbGlzdCBmb3Igc25tcHRyYXBkCisgICBuZXdfbW9kdWxlX2xpc3Q9Im1pYklJL3ZhY21fdmFycyBtaWJJSS92YWNtX2NvbmYgdXRpbGl0aWVzL2V4ZWN1dGUgJG5ld193aXRoX21pYl9tb2R1bGVzIgorICAgZGVmYXVsdF9taWJzPVNOTVB2Mi1NSUI6SUYtTUlCOklQLU1JQjpUQ1AtTUlCOlVEUC1NSUIKKyAgIGRlZmF1bHRfbWlic19pbnN0YWxsPSIgIgorZWxpZiB0ZXN0ICJ4JG1pbmlfYWdlbnQiID0gInh5ZXMiOyB0aGVuCisgICAjIGRlZmluZSB0aGUgbWluaSBhZ2VudCBmbGFnIHRvIHJlZHVjZSBvdXIgbG9hZCBsaXN0IGZyb20gZGVmYXVsdF9taWJzLmgKKyAgIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfTUlOSV9BR0VOVCIKK2ZpCisKK3Rlc3RfbW9kdWxlcz0iJG5ld19tb2R1bGVfbGlzdCIKK25ld19tb2R1bGVfbGlzdD0iIgorCisjIHJlbW92ZSBtb2R1bGVzIHRoYXQgd2VyZSBleHBsaWNpdGx5IGV4Y2x1ZGVkCitmb3IgaSBpbiAkdGVzdF9tb2R1bGVzCisgZG8KKyAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgIG1pYl9jZmdfbXNnPSJtaWIgbW9kdWxlICckaScgaXMgYm90aCBpbmNsdWRlZCBhbmQgZXhjbHVkZWQuIgorICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGNvbmZsaWN0XSkKKyAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCisgICAgICBBQ19NU0dfV0FSTihbdXNlciB3aXRoICAgIDogJHdpdGhfbWliX21vZHVsZXNdKQorICAgICAgQUNfTVNHX1dBUk4oW2ZpbmFsIHdpdGggICA6ICRuZXdfbW9kdWxlX2xpc3RdKQorICAgICAgQUNfTVNHX1dBUk4oW3VzZXIgd2l0aG91dCA6ICR3aXRoX291dF9taWJfbW9kdWxlc10pCisgICAgICBBQ19NU0dfV0FSTihbZmluYWwgd2l0aG91dDogJG5ld193aXRoX291dF9taWJfbW9kdWxlc10pCisgICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCisgICAgZWxzZQorICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZyBJdCB3aWxsIGJlIGV4Y2x1ZGVkXSkKKyAgICAgIEFDX01TR19DQUNIRV9BREQoWyoqKiBNSUIgTW9kdWxlIHdhcm5pbmcgKioqICRtaWJfY2ZnX21zZyBJdCBoYXMgYmVlbiBleGNsdWRlZC5dKQorICAgIGZpCisgIGVsc2UKKyAgICBuZXdfbW9kdWxlX2xpc3Q9IiRuZXdfbW9kdWxlX2xpc3QgJGkiCisgIGZpCitkb25lCisKK0FDX01TR19SRVNVTFQoWyRuZXdfbW9kdWxlX2xpc3QuXSkKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBsb29wIG92ZXIgbW9kdWxlIGxpc3QKKyMKK2FsbF93YXJuaW5ncz0iIgoraWYgdGVzdCAieCR3aXRoX21pYl9jZmdfZGVidWciID0gInh5ZXMiOyB0aGVuCisgICBtb2R1bGVfZGVidWc9MQorZWxzZQorICAgbW9kdWxlX2RlYnVnPTAKK2ZpCitmaXJzdF9wYXNzPTEKK291dHB1dF90bz1ub3JtYWwKKworaWYgdGVzdCAhIC1kIG1rIDsgdGhlbgorICBta2RpciBtaworZmkKKworCittb2R1bGVfcnVsZXM9bWsvbW9kdWxlX3J1bGVzLm1rCitlY2hvICIjIGNvbnRlbnRzIGJlbG93IGJ1aWx0IGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlOyBkbyBub3QgZWRpdCBieSBoYW5kIiA+ICRtb2R1bGVfcnVsZXMKKworIworIyBtYWtlIGZpbGUgc3ViLXBpZWNlcworIworZm9yIGkgaW4gbW9kdWxlX2xpc3RfZGVwcyBtaWJfbW9kdWxlX2xpc3RfZGVwcyBhZ2VudF9tb2R1bGVfbGlzdF9kZXBzIDsgZG8KKyAgZXZhbCAiJGk9bWsvJHtpfS5tayIKKyAgZWNobyAiIyBjb250ZW50cyBiZWxvdyBidWlsdCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZTsgZG8gbm90IGVkaXQgYnkgaGFuZCIgPiBtay8ke2l9Lm1rCitkb25lCisKKyMKKyMgdmFyaWFibGUgc2V0dGluZ3Mgc3ViLXBpZWNlcworIworZm9yIGkgaW4gbW9kdWxlX2xpc3RfY29kZSBtaWJfbW9kdWxlX2xpc3RfY29kZSBhZ2VudF9tb2R1bGVfbGlzdF9jb2RlIG1vZHVsZV9saXN0IG1pYl9tb2R1bGVfbGlzdCBhZ2VudF9tb2R1bGVfbGlzdCA7IGRvCisgIGV2YWwgIiRpPW1rLyR7aX0ubWsiCisgIGVjaG8gIiMgY29udGVudHMgYmVsb3cgYnVpbHQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmU7IGRvIG5vdCBlZGl0IGJ5IGhhbmQiID4gbWsvJHtpfS5taworICBlY2hvICIkaT0gXFwiID4+IG1rLyR7aX0ubWsKK2RvbmUKKworZWNobyAkRUNIT19OICJlY2hvICIgJEVDSE9fQyA+IG1rL01PRFVMRV9MSVNULm1rCitNT0RVTEVfTElTVD1tay9NT0RVTEVfTElTVC5taworCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgdW50aWwgd2UgaGF2ZSBhbiBlbXB0eSBtb2R1bGUgbGlzdC4uLgorIyAgIChtb2R1bGVzIG1heSBhZGQgbmV3IG1vZHVsZXMsIGFuZCB1bnRpbCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBkb25lLi4uKQorIword2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KKyAgQUNfTVNHX01PRFVMRV9EQkcoLWUsIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpCisgIEFDX01TR19NT0RVTEVfREJHKCJubWw6ICRuZXdfbW9kdWxlX2xpc3QiKQorCisgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgIyBsb29wIG92ZXIgYWxsIHRoZSBtb2R1bGVzIGluIHRoZSBjdXJyZW50IGxpc3QKKyAgIworICBmb3IgaiBpbiAkbmV3X21vZHVsZV9saXN0CisgICAgZG8KKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIGZpZ3VyZSBvdXQgd2hpY2ggc3ViLWJsb2NrcyB0byBidWlsZCBpbiBwYXJ0cworICAgIGlmIGVjaG8gIiRqIiB8ICRHUkVQICI9IiA7IHRoZW4KKyAgICAgICAjIGJ1aWxkIGEgc2hhcmVkIG9iamVjdCBmaWxlCisgICAgICAgIyBmb3JtYXQ6IHNvZmlsZW5hbWU9bW9kdWxlMTptb2R1bGUyCisgICAgICAgIyBYWFg6IGN1cnJlbnRseSBkb2Vzbid0IGRvIHRoaXMKKyAgICAgICBkbF9uYW1lPWBlY2hvICRqIHwgJFNFRCAncy89LiovLydgCisgICAgICAgZGxfbmFtZXM9IiRkbF9uYW1lcyAkZGxfbmFtZSIKKyAgICAgICBkbF9vYmplY3RzPWBlY2hvICRqIHwgJFNFRCAncy8uKj0vLydgCisgICAgICAgbW9kdWxlX3N1Ymxpc3Q9YGVjaG8gJGRsX29iamVjdHMgfCAkU0VEICdzLzovIC9nJ2AKKyAgICAgICBzYXZlZF9zdWJsaXN0PSIiCisgICAgICAgc2F2ZWRfc3VibGlzdF9jb2RlPSIiCisgICAgICAgb3V0cHV0X3RvPXNlcGFyYXRlCisKKyAgICAgICAjIGNyZWF0ZSBvdXRwdXQgZmlsZXMKKyAgICAgICAjIHRoZXNlIGFjdHVhbGx5IGdldCBudWtlZCBsYXRlcgorICAgICAgIG91dHB1dF9pbml0cz0iYWdlbnQvbWliZ3JvdXAvJHtkbF9uYW1lfS1kbGwuYyIKKyAgICAgICBvdXRwdXRfaGRycz0iYWdlbnQvbWliZ3JvdXAvJHtkbF9uYW1lfS1oZHJzLmgiCisgICAgZWxzZQorICAgICAgICMgbm90IGEgc3BlY2lhbCB0b2tlbiBpbnZvY2F0aW9uCisgICAgICAgbW9kdWxlX3N1Ymxpc3Q9JGoKKyAgICAgICBvdXRwdXRfdG89bm9ybWFsCisgICAgICAgb3V0cHV0X3Q9CisgICAgZmkKKworICAgIHdoaWxlIHRlc3QgIngkbW9kdWxlX3N1Ymxpc3QiICE9ICJ4IiA7IGRvCisKKyAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgIyBsb29wIG92ZXIgYWxsIHRoZSBtb2R1bGVzIGluIHRoZSBzdWIgbGlzdAorICAgIGZvciBpIGluICRtb2R1bGVfc3VibGlzdAorICAgIGRvCisKKyAgICBBQ19NU0dfTU9EVUxFX0RCRygtZSAiXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IikKKyAgICBBQ19NU0dfTU9EVUxFX0RCRygidGVzdGluZyAkaSIpCisgICAgbmVlZF9oZWFkZXI9MAorCisgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgYnVpbGQgYSBwc2V1ZG8gaW5jbHVkZSBoZWFkZXIgdGhhdCBpbmNsdWRlcyBjdXJyZW50IGNvbmZpZyBhbmQKKyAgICAjIHN5c3RlbSBzeW1ib2xzOgorICAgIHJtIC1mIGNvbmZ0ZXN0LiRhY19leHQgbW9kdWxlX3RtcF9oZWFkZXIuaAorICAgIEFDX0xBTkdfQ09ORlRFU1QoQUNfTEFOR19TT1VSQ0UoW1sKKyNpbmNsdWRlIE5FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRQorI2luY2x1ZGUgIiRzcmNkaXIvJG1pYmRpci8kaS5oIl1dKSkKKyAgICBtdiBjb25mdGVzdC4kYWNfZXh0IG1vZHVsZV90bXBfaGVhZGVyLmgKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIG1hY3JvOiBjb25maWdfYmVsb25nc19pbihBUkcpCisgICAgIyAgIEFSRzogZWl0aGVyCisgICAgIyAgICAgLSBtaWJfbW9kdWxlICAgPT4gbGlibmV0c25tcG1pYnMgICAoZGVmYXVsdCkKKyAgICAjICAgICAtIGFnZW50X21vZHVsZSA9PiBsaWJuZXRzbm1wYWdlbnQKKyAgICAjCisgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ19iZWxvbmdzX2luKHgpXSkKKyAgICBtb2R1bGVfdHlwZT1taWJfbW9kdWxlCisgICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuaDsgdGhlbgorICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICBtb2R1bGVfdHlwZT1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2JlbG9uZ3NfaW4gfCAkU0VEICdzQC4qY29uZmlnX2JlbG9uZ3NfaW4oXChbXildKlwpKS4qQFwxQCdgCisgICAgICBjaGFuZ2VxdW90ZShbLCBdKQorICAgIGZpCisgICAgaWYgdGVzdCAieCRtb2R1bGVfdHlwZSIgPSAieCIgOyB0aGVuCisgICAgICBtb2R1bGVfdHlwZT1taWJfbW9kdWxlCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JG91dHB1dF90byIgPSAieG5vcm1hbCIgOyB0aGVuCisgICAgIAlvdXRwdXRfaW5pdHM9IiRtaWJkaXIvJHttb2R1bGVfdHlwZX1faW5pdHMuaCIKKyAgICAgCW91dHB1dF9oZHJzPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luY2x1ZGVzLmgiCisgICAgZmkKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICMgY2hlY2sgZm9yIGR1cGxpY2F0ZXMgd2l0aGluIHRoZSBkbGwgc3lzdGVtLiAKKyAgICAjICAgLSBpZiBmb3VuZCBpbiBhIGRsbCwgdGhlbiByZW1vdmUgZnJvbSB0aGUgZGxsIGFuZCBhZGQgdG8gbWFpbgorICAgIGRibGZpeD0iIgorICAgIGZvciBkbHRlc3QgaW4gJGRsX25hbWVzIDsgZG8KKyAgICAgIGV2YWwgbW9kX2ZpbGVzPSJcIlwkZGxfJHtkbHRlc3R9X2ZpbGVzXCIiCisgICAgICBpZiBlY2hvICIgJG1vZF9maWxlcyAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICMgc29tZSBkbGwgbW9kdWxlIGhhcyBhbHJlYWR5IHNlZW4gdGhpcywgdW5sb2FkIGl0IGZyb20gdGhhdCBsaXN0CisgICAgICAgICMgYW5kIGluY2x1ZGUgaXQgaW4gdGhlIGNvcmUgKGFnYWluKQorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygicmVtb3ZpbmcgJGkgZnJvbSAkZGx0ZXN0IikKKyAgICAgICAgbW9kX2ZpbGVzPWBlY2hvICIgJG1vZF9maWxlcyAiIHwgJFNFRCAic0AgJGkgQEAiYAorICAgICAgICBkYmxmaXg9Il9fWFhYX18iCisgICAgICAgIGV2YWwgImRsXyR7ZGx0ZXN0fV9maWxlcz1cIiRtb2RfZmlsZXNcIiIKKworICAgICAgICBtb2R1bGVfbGlzdD0iJG1vZHVsZV9saXN0ICRpIgorCWVjaG8gInJlYWRfY29uZmlnLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbW9kdWxlX2xpc3RfZGVwcworCWlmIHRlc3QgJG1vZHVsZV90eXBlID0gImFnZW50X21vZHVsZSIgOyB0aGVuCisgCSAgICBlY2hvICJzbm1wX3ZhcnMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRhZ2VudF9tb2R1bGVfbGlzdF9kZXBzCisgICAgICAgIGVsc2UKKyAJICAgIGVjaG8gIm1pYl9tb2R1bGVzLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbWliX21vZHVsZV9saXN0X2RlcHMKKyAgICAgICAgZmkKKyAgICAgICAgZXZhbCAke21vZHVsZV90eXBlfV9saXN0PSJcIlwkJHttb2R1bGVfdHlwZX1fbGlzdCAkaVwiIgorCWVjaG8gIgkkaSBcXCIgPj4gJG1vZHVsZV9saXN0X2NvZGUKKwllY2hvICRFQ0hPX04gIiAkaSIgJEVDSE9fQyA+PiAkTU9EVUxFX0xJU1QKKyAgICAgICAgZXZhbCB0bXBmaWxldmFyPVwkYGVjaG8gJHttb2R1bGVfdHlwZX1fbGlzdF9jb2RlYAorICAgICAgICBlY2hvICIJJGkgXFwiID4+ICR0bXBmaWxldmFyCisKKwkjIFhYWDogYWRkIHRoaXMgdG8gdGhlIG1haW4gaW5pdCBsaXN0OyB0aGlzIGlzIHBvc3NpYmxlIG5vdAorCSMgcXVpdGUgaW4gdGhlIHJpZ2h0IHNwb3QgYW55IGxvbmdlciBidXQgd2UncmUgc3R1Y2sgd2l0aCBpdC4KKwkjIEFkZGluZyBpdCBiYWNrIHRvIHRoZSBvcmlnaW5hbCBvcmRlcmVkIHNwb3Qgd291bGQgYmUgYQorCSMgbmlnaHRtYXJlLiAgT2ssIHdlJ3JlIGFscmVhZHkgaW4gbmlnaHRtYXJlIGNvZGUgc28gdGhhdAorCSMgd29sdWQgaGF2ZSB0byBiZSBhIG5pZ2h0LXRlcnJvci4KKyAgICAgICAgbW5tPWBlY2hvICRpIHwgJFNFRCAncy8uKlwvLy87cy9cLmMkLy87J2AKKwlvdXRwdXRfaW5pdHNfdG1wPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luaXRzLmgiCisJZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBpbml0XyRtbm0oKTsiID4+ICRvdXRwdXRfaW5pdHNfdG1wCisgICAgICAgICMgWFhYOiBldmVuIHdvcnNlLCB3ZSBsb29zZSB3aGV0aGVyIHRoZSBoZWFkZXIgaXMgbmVlZGVkIG9yIG5vdC4KKyAgICAgCW91dHB1dF9oZHJzX3RtcD0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbmNsdWRlcy5oIgorICAgICAgICBlY2hvICcjaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciJyA+PiAkb3V0cHV0X2hkcnNfdG1wCisgICAgICBmaQorICAgIGRvbmUKKworICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAjIG1ha2Ugc3VyZSBtb2R1bGUgd2Fzbid0IGV4cGxpY2l0bHkgZXhjbHVkZWQsIG9yIGFscmVhZHkgYWRkZWQKKyAgICAjCisgICAgaWYgdGVzdCAieCRkYmxmaXgiICE9ICJ4IiA7IHRoZW4KKyAgICAgIEFDX01TR19NT0RVTEVfREJHKCIkaSB3YXMgZHVwbGljYXRlZCAtLSBwdXR0aW5nIGludG8gbWFpbiIpCisgICAgZWxpZiBlY2hvICIgJG5ld193aXRoX291dF9taWJfbW9kdWxlcyAiIHwgJEdSRVAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgd2FzIGV4Y2x1ZGVkIikKKyAgICBlbGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8ICRHUkVQICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGFscmVhZHkgdGVzdGVkIikKKyAgICBlbHNlCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgcHJvY2VzcyBtb2R1bGVzIGhlYWRlciwgY2hlY2tpbmcgZm9yIGNvbmZpZ18gcHNldWRvLW1hY3JvcworICAgICAgIworCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIGRvZXMgdGhlIGhlYWRlciBmaWxlIGZvciB0aGUgbW9kdWxlIGV4aXN0PworICAgICAgIyAgIG1hY3JvcyBhcmUgb25seSBwcm9jZXNzZWQgaWYgaXQgZG9lcworICAgICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuaDsgdGhlbgorICAgICAgICBuZXdfbGlzdD0iIgorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfZXhjbHVkZShtb2R1bGVzKQorICAgICAgCSMgIC0gbGlzdHMgY29uZmxpY3RzIHdpdGggb3RoZXIgbW9kdWxlcworICAgICAgCSMgICAgLSBFRzogbmV3IE1JQiBpbXBsZW1lbnRhdGlvbnMgZXhjbHVkZSBvbGQgYW5kIHZpY2UtdmVyc2EKKyAgICAgIAkjCisgICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBjb25mbGljdHMKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2V4Y2x1ZGUoeCldKQorCW5ld19saXN0X2V4Y2w9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19leGNsdWRlIHwgJFNFRCAncy8uKmNvbmZpZ19leGNsdWRlKFwoLipcKSkuKi9cMS8nYAorCWlmIHRlc3QgIngkbmV3X2xpc3RfZXhjbCIgIT0gIngiOyB0aGVuCisgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGV4Y2x1ZGVzICRuZXdfbGlzdF9leGNsIikKKwkgIGZvciBqIGluICRuZXdfbGlzdF9leGNsCisJICAgIGRvCisJICAgIGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19taWJfbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAiIHwgJEdSRVAgIiAkaiAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICAgIG1pYl9jZmdfbXNnPSJtaWIgbW9kdWxlICckaScgZXhjbHVkZXMgbW9kdWxlICckaicgYnV0IGFub3RoZXIgbW9kdWxlIHJlcXVpcmVzIGl0IgorICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCisgICAgICAgICAgICAgIGlmIHRlc3QgIngkd2l0aF9taWJfY2ZnX2NoZWNrcyIgPSAieHllcyI7IHRoZW4KKwkgICAgICAgIEFDX01TR19FUlJPUihbJG1pYl9jZmdfbXNnXSkKKyAgICAgICAgICAgICAgZWxzZQorCSAgICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZ10pCisgICAgICAgICAgICAgICAgQUNfTVNHX0NBQ0hFX0FERChbKioqIE1JQiBNb2R1bGUgd2FybmluZyAqKiogJG1pYl9jZmdfbXNnXSkKKyAgICAgICAgICAgICAgZmkKKwkgICAgZWxzZQorCSAgICAgIG5ld193aXRoX291dF9taWJfbW9kdWxlcz0iJGogJG5ld193aXRoX291dF9taWJfbW9kdWxlcyIKKyAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRqIGFkZGVkIHRvIGV4Y2x1ZGVkIGxpc3QiKQorCSAgICBmaQorCSAgZG9uZQorCWZpCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCSMgbWFjcm86IGNvbmZpZ19hcmNoX3JlcXVpcmUoQVJDSCxtb2R1bGVzKQorICAgICAgCSMgIC0gbGlzdHMgbW9kdWxlcyByZXF1aXJlZCBmb3IgYSBnaXZlbiBBUkNICisgICAgICAgICMKKyAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGFyY2hpdGVjdHVyZSBzcGVjaWZpYyByZXF1aXJlbWVudHMKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2FyY2hfcmVxdWlyZSh4LHkpXSkKKyAgICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICAgIG5ld19saXN0X2FyY2g9YCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8ICRHUkVQIGNvbmZpZ19hcmNoX3JlcXVpcmUgfCAkU0VEICdzLy4qY29uZmlnX2FyY2hfcmVxdWlyZSggKlwoW14gXSpcKSAqLCAqXChbXiBdKlwpICopLiovXDEteGFyY2h4LVwyLydgCisgICAgICAgIGNoYW5nZXF1b3RlKFssIF0pCisJaWYgdGVzdCAieCRuZXdfbGlzdF9hcmNoIiAhPSAieCI7IHRoZW4KKyAgICAgICAgICBmb3IgaiBpbiAkbmV3X2xpc3RfYXJjaAorCSAgICBkbworCSAgICBhcmNodGVzdD1gZWNobyAkaiB8ICRTRUQgJ3MvLXhhcmNoeC0uKi8vJ2AKKwkgICAgIyB0YXJnZXRfb3MgbWF5IGhhdmUgYmVlbiBjaGFuZ2VkIHRvIGEgI2RlZmluZSBvZiAxLi4uCisJICAgIGlmIHRlc3QgIngkYXJjaHRlc3QiID0gIngxIiAtbyAieCR0YXJnZXRfb3MiID0gIngkYXJjaHRlc3QiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieCRhcmNodGVzdCI7IHRoZW4KKwkgICAgICBuZXdfbGlzdD0iJG5ld19saXN0IGBlY2hvICRqIHwgJFNFRCAncy8uKi14YXJjaHgtLy8nYCIKKyAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAkaSByZXF1aXJlZCBhZGRpbmcgYXJjaCBmaWxlczogYGVjaG8gJGogfCAkU0VEICdzLy4qLXhhcmNoeC0vLydgIikKKwkgICAgZmkKKwkgIGRvbmUKKwlmaQorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHJlcXVpcmVkIGFyY2ggZmlsZXM6ICRuZXdfbGlzdCIpCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgCSMgbWFjcm86IGNvbmZpZ192ZXJzaW9uX3JlcXVpcmUoKGJhc2UsIHZlcnNpb24sIHZlcnNpb24tbW9kdWxlcywgLi4uKSkKKyAgICAgIAkjICAtIGxpc3RzIGFsdGVybmF0aXZlIG1vZHVsZXMgdXNlZCBmcm9tIGRpZmZlcmVudCB2ZXJzaW9ucy4KKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSh4KV0pCisgICAgICAgIFtuZXdfbGlzdF9hbHQzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBcCisgICAgICAgICAgICAkR1JFUCBjb25maWdfdmVyc2lvbl9yZXF1aXJlIHwgXAorICAgICAgICAgICAgJFNFRCAtZSAncy8gICovIC9nJyBcCisgICAgICAgICAgICAgICAgIC1lICdzLy4qY29uZmlnX3ZlcnNpb25fcmVxdWlyZSgoICpcKFteKV0qXCkgKikpLiovXDEvJyBcCisgICAgICAgICAgICAgICAgIC1lICdzLyAqLCAqLywvZycgfCBcCisgICAgICAgICAgICBhd2sgJworICAgICAgICAgICAgICAgIEJFR0lOIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoIiciJGVuYWJsZV9uZXdfZmVhdHVyZXMiJyIgPT0gInllcyIpCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9Im1heCI7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoIiciJGVuYWJsZV9vbGRfZmVhdHVyZXMiJyIgPT0gInllcyIpCisgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Q9Im1heC1sZXNzIjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPSJtYXgtbGVzcy1lcXVhbCI7CisgICAgICAgICAgICAgICAgICAgIEZTID0gIi4iOworICAgICAgICAgICAgICAgICAgICBzcGxpdCgiJyIkd2l0aF9mZWF0dXJlc19vZiInIiwgYSk7CisgICAgICAgICAgICAgICAgICAgIHZlcnNpb249c3ByaW50ZigiJTAzZCUwM2QlMDNkJTAzZCIsIGFbMV0sIGFbMl0sIGFbM10sIGFbNF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIEZTID0gIiwiOworICAgICAgICAgICAgICAgICAgICBuID0gc3BsaXQoJDAsIGEpOworICAgICAgICAgICAgICAgICAgICBGUyA9ICIuIjsKKyAgICAgICAgICAgICAgICAgICAgYWN0dmVyID0gIjAwMDAwMDAwMDAwMCI7CisgICAgICAgICAgICAgICAgICAgIGFjdHN0ciA9IGFbMV07CisgICAgICAgICAgICAgICAgICAgIGZvcihpID0gMjsgaSA8IG47IGkgKz0gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgc3BsaXQoYVtpXSwgYik7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJ2ZXI9c3ByaW50ZigiJTAzZCUwM2QlMDNkJTAzZCIsIGJbMV0sIGJbMl0sIGJbM10sIGJbNF0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnZlciA+IGFjdHZlciAmJiAobWV0aG9kICE9ICJtYXgtbGVzcyIgfHwgY3VydmVyIDwgdmVyc2lvbikgJiYgKG1ldGhvZCAhPSAibWF4LWxlc3MtZXF1YWwiIHx8IGN1cnZlciA8PSB2ZXJzaW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjdHZlciA9IGN1cnZlcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3RzdHIgPSBhW2kgKyAxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmludGYoIiAlcyIsIGFjdHN0cik7CisgICAgICAgICAgICAgICAgfSdgXQorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHJlcXVpcmVkIHZlcnNpb25lZCBmZWF0dXJlczogJG5ld19saXN0X2FsdDMiKQorICAgICAgICBuZXdfbGlzdD0iJHtuZXdfbGlzdH0ke25ld19saXN0X2FsdDN9IgorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfcmVxdWlyZShtb2R1bGVzKQorICAgICAgCSMgIC0gbGlzdHMgbW9kdWxlcyByZXF1aXJlZCBmb3IgdGhpcyBtb2R1bGUKKyAgICAgICAgIworICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgb3RoZXIgcmVxdWlyZWQgbW9kdWxlcworICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfcmVxdWlyZSh4KV0pCisJbmV3X2xpc3Q9IiRuZXdfbGlzdCBgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX3JlcXVpcmUgfCAkU0VEICdzLy4qY29uZmlnX3JlcXVpcmUoXCguKlwpKS4qL1wxLydgIgorICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICRpIHdpbGwgdGVzdDogJG5ld19saXN0IikKKwlpZiB0ZXN0ICJ4JG5ld19saXN0IiAhPSAieCI7IHRoZW4KKwkgIGZvciBqIGluICRuZXdfbGlzdAorCSAgICBkbworICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoLW4gIiAkaSB3YW50cyB0byBhZGQgJGo6ICIpCisJICAgIGlmIHRlc3QgISAtZiAkc3JjZGlyLyRtaWJkaXIvJGouaCAtYSAhIC1mICRzcmNkaXIvJG1pYmRpci8kai5jOyB0aGVuCisgICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKwkgICAgICBBQ19NU0dfRVJST1IoW21pYiBtb2R1bGUgIiRpIiByZXF1aXJlcyBtb2R1bGUgIiRqIiBidXQgJGouaCBvciAkai5jIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiAkc3JjZGlyLyRtaWJkaXJdKQorCSAgICBlbGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzICIgfCAkR1JFUCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICJ4JGkiICE9ICJ4ZGVmYXVsdF9tb2R1bGVzIiA7IHRoZW4KKyAgICAgICAgICAgICAgICBtaWJfY2ZnX21zZz0ibWliIG1vZHVsZSAnJGknIHJlcXVpcmVzIG1vZHVsZSAnJGonIGJ1dCBzb21lb25lIHRvbGQgbWUgdG8gY29tcGlsZSB3aXRob3V0IGl0IgorICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZ10pCisgICAgICAgICAgICAgICAgICBBQ19NU0dfQ0FDSEVfQUREKFsqKiogTUlCIE1vZHVsZSB3YXJuaW5nICoqKiAkbWliX2NmZ19tc2ddKQorICAgICAgICAgICAgICAgIGZpCisjCSAgICBlbGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAkbmV3X21vZHVsZV9saXN0ICIgfCAkR1JFUCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KKyMgICAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRqIGluY2x1ZGVkIHByZXZpb3VzbHkiKQorICAgICAgICAgICAgICBmaQorCSAgICBlbHNlCisJICAgICAgbmV3X2xpc3RfdHdvPSIkbmV3X2xpc3RfdHdvICRqIgorICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaiBpbmNsdWRlZCIpCisJICAgIGZpCisJICBkb25lCisJZmkKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAJIyBtYWNybzogY29uZmlnX2FkZF9taWIoU09NRS1NSUIpCisgICAgICAJIyAgLSBsaXN0cyBNSUJzIHRvIGJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IHRvLWxvYWQgbGlzdC4KKyAgICAgICAgIworICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgbWlicyB0byBhZGQKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCldKQorCW5ld19taWJzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfYWRkX21pYiB8ICRTRUQgJ3MvLipjb25maWdfYWRkX21pYihcKC4qXCkpLiovXDEvJ2AKKwlpZiB0ZXN0ICJ4JG5ld19taWJzIiAhPSAieCI7IHRoZW4KKwkgICAgZm9yIGogaW4gJG5ld19taWJzCisJCWRvCisJCWlmIHRlc3QgInhgZWNobyA6JGRlZmF1bHRfbWliczogfCAkR1JFUCA6JGo6YCIgPSAieCI7IHRoZW4KKwkJICAgIGRlZmF1bHRfbWlicz0iJGRlZmF1bHRfbWliczokaiIKKwkJZmkKKwkJaWYgdGVzdCAtZiAkc3JjZGlyL21pYnMvJGoudHh0OyB0aGVuCisJCSAgICBpZiBlY2hvICRkZWZhdWx0X21pYnNfaW5zdGFsbCB8ICRHUkVQICIgJGogIiA+IC9kZXYvbnVsbDsgdGhlbgorCQkJICAgIDoKKwkJICAgIGVsc2UKKwkJCSAgICBkZWZhdWx0X21pYnNfaW5zdGFsbD0iJGRlZmF1bHRfbWlic19pbnN0YWxsICRqLnR4dCIKKwkJICAgIGZpCisJCWZpCisJICAgIGRvbmUKKwlmaSAjIG5ldyBtaWJzCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyBhZGQgdGhlIGN1cnJlbnQgbW9kdWxlIHRvIHRoZSBsaXN0IG9mIHN0dWZmIHRvIGNvbXBpbGUsIGV0Yy4KKyAgICAgICAgIworICAgICAgICAjIGFkZCAkaSB0byBtb2R1bGUgbGlzdAorICAgICAgICAjCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRpIGFkZGVkIChiYXNlZCBvbiAkaS5oKSIpCisgICAgICAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCisgICAgICAgIGV2YWwgJHttb2R1bGVfdHlwZX1fbGlzdD0iXCJcJCR7bW9kdWxlX3R5cGV9X2xpc3QgJGlcIiIKKworCWVjaG8gInJlYWRfY29uZmlnLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbW9kdWxlX2xpc3RfZGVwcworCWlmIHRlc3QgJG1vZHVsZV90eXBlID0gImFnZW50X21vZHVsZSIgOyB0aGVuCisgCSAgICBlY2hvICJzbm1wX3ZhcnMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRhZ2VudF9tb2R1bGVfbGlzdF9kZXBzCisgICAgICAgIGVsc2UKKyAJICAgIGVjaG8gIm1pYl9tb2R1bGVzLmxvOiBtaWJncm91cC8kaS5oIiA+PiAkbWliX21vZHVsZV9saXN0X2RlcHMKKyAgICAgICAgZmkKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgICAjIGNoZWNrIGZvciB1bnN1cHBvcnRlZCBjb25maWdfbG9hZF9taWIKKyAgICAgICAgIworICAgICAgICBpZiAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfbG9hZF9taWIgPiAvZGV2L251bGwgMj4mMTsgdGhlbgorICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKyAgICAgIAkgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlICIkaSIgdXNlcyB0aGUgImNvbmZpZ19sb2FkX21pYiIgZGlyZWN0aXZlLCB3aGljaCBpcyBubyBsb25nZXIgc3VwcG9ydGVkLiAgSXQgcHJvYmFibHkgd29uJ3Qgd29yay5dKQorICAgICAgICBmaSAjIGdyZXAgY29uZmlnX2xvYWRfbWliCisKKyAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgIyBjaGVjayBmb3IgY29uZmlnX3BhcnNlX2RvdF9jb25mCisgICAgICAgICMgIChnZW5lcmFsbHkgbm90IHVzZWQgYW55IGxvbmdlcjsgb2xkIGF1dG8tbG9hZCBhIC5jb25mIHRva2VuKQorICAgICAgICAjCisgICAgICAgIEFIX1RPUChbI2RlZmluZSBjb25maWdfcGFyc2VfZG90X2NvbmYodyx4LHkseildKQorICAgICAgICBjaGFuZ2VxdW90ZSgsICkKKyAgICAgICAgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX3BhcnNlX2RvdF9jb25mIHwgJFNFRCAnc0AuKmNvbmZpZ19wYXJzZV9kb3RfY29uZihcKFteKV0qXCksICpcKFteKSxdKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCkpLipAcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXBkIixcMSwgXDIsIFwzLCBcNCk7QCcgPj4gJG1pYmRpci9taWJfbW9kdWxlX2RvdF9jb25mLmgKKwljaGFuZ2VxdW90ZShbLCBdKQorCisgICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIAkjIG1hY3JvOiBjb25maWdfZXJyb3IoZXJyb3IgdGV4dCkKKyAgICAgIAkjICAtIHVzZWQgdG8gc2lnbmFsIGEgY29uZmlndXJhdGlvbiBlcnJvciBmcm9tIGEgbW9kdWxlCisgICAgICAgICMKKyAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGVycm9ycywgb3Igd2FybmluZ3MKKyAgICAgICAgIworICAgICAgICBBSF9UT1AoWyNkZWZpbmUgY29uZmlnX2Vycm9yKHgpXSkKKwllcnJvcj1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgJEdSRVAgY29uZmlnX2Vycm9yIHwgJFNFRCAncy8uKmNvbmZpZ19lcnJvcihcKC4qXCkpLiovXDEvJ2AKKwlpZiB0ZXN0ICJ4JGVycm9yIiAhPSAieCI7IHRoZW4KKyAgICAgICAgICBlY2hvCisgICAgICAgICAgZWNobworICAgICAgICAgIEFDX01TR19FUlJPUihbJGk6ICoqKiAkZXJyb3IgKioqXSkKKyAgICAgICAgZmkKKworICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAJIyBtYWNybzogY29uZmlnX3dhcm5pbmcod2FybmluZyB0ZXh0KQorICAgICAgCSMgIC0gdXNlZCB0byBzaWduYWwgYSBjb25maWd1cmF0aW9uICJ3YXJuaW5nIiB0byBiZSBwcmludGVkIHRvIHRoZSB1c2VyCisgICAgICAgICMKKyAgICAgICAgQUhfVE9QKFsjZGVmaW5lIGNvbmZpZ193YXJuaW5nKHgpXSkKKwl3YXJuaW5nPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCAkR1JFUCBjb25maWdfd2FybmluZyB8ICRTRUQgJ3MvLipjb25maWdfd2FybmluZyhcKC4qXCkpLiovXDEvJ2AKKwlpZiB0ZXN0ICJ4JHdhcm5pbmciICE9ICJ4IjsgdGhlbgorICAgICAgICAgIGFsbF93YXJuaW5ncz0iJGFsbF93YXJuaW5ncyAkd2FybmluZworIgorICAgICAgICBmaQorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIENoZWNrIGZvciBhIC5jIGZpbGUgaWYgdGhlIC5oIGRpZG4ndCBleGlzdAorICAgICAgIworICAgICAgZWxpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jOyB0aGVuCisgICAgICAgIGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAkbmV3X21vZHVsZV9saXN0ICIgfCAkR1JFUCAiICRpICAgICAgIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaSBhbHJlYWR5IGluY2x1ZGVkIikKKyAgICAgICAgZWxzZQorICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaSBhZGRlZCAoYmFzZWQgb24gJGkuYykiKQorCSAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCisJICAgbWliX21vZHVsZV9saXN0PSIkbWliX21vZHVsZV9saXN0ICRpIgorICAgICAgICBmaQorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIE5vIC5oIG9yIC5jID0gZXJyb3IhICAodHlwbz8pCisgICAgICAjCisgICAgICBlbHNlICMgbm8gJGkuaCBvciAkaS5jCisgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKKwlBQ19NU0dfRVJST1IoW21vZHVsZSBmaWxlcyAkaS5oIG9yICRpLmMgY291bGQgbm90IGJlIGZvdW5kIGluICRzcmNkaXIvJG1pYmRpcl0pCisgICAgICBmaSAjIG5vICRpLmgKKworICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICMgY2hlY2sgZm9yIGluaXQvc2h1dGRvd24gcm91dGluZXMgdG9vCisgICAgICAjCisgICAgICBoYXNfY19jb2RlPW5vCisgICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngkb3V0cHV0X3RvIiA9ICJ4bm9ybWFsIiA7IHRoZW4KKwkgIGVjaG8gIgkkaSBcXCIgPj4gJG1vZHVsZV9saXN0X2NvZGUKKyAgCSAgZWNobyAkRUNIT19OICIgJGkiICRFQ0hPX0MgPj4gJE1PRFVMRV9MSVNUCisgICAgICAgICAgZXZhbCB0bXBmaWxldmFyPVwkYGVjaG8gJHttb2R1bGVfdHlwZX1fbGlzdF9jb2RlYAorICAgICAgICAgIGVjaG8gIgkkaSBcXCIgPj4gJHRtcGZpbGV2YXIKKyAgICAgICAgZWxzZQorICAgICAgICAgIGV2YWwgImRsXyR7ZGxfbmFtZX1fZmlsZXM9XCJcJGRsXyR7ZGxfbmFtZX1fZmlsZXMgJGlcIiIKKyAgICAgICAgICBzYXZlZF9zdWJsaXN0X2NvZGU9IiRzYXZlZF9zdWJsaXN0X2NvZGUgJGkiCisgICAgICAgIGZpCisgICAgICAgIG1ubT1gZWNobyAkaSB8ICRTRUQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCisgICAgICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJcbmNoZWNraW5nICckc3JjZGlyLyRtaWJkaXIvJGkuYycgKCRtbm0vYGJhc2VuYW1lICRpYCkgQyBmaWxlIGZvciBpbml0L3NodXRkb3duIikKKyAgICAgICAgaWYgdGVzdCAieCRtbm0iICE9ICJ4YGJhc2VuYW1lICRpYCI7IHRoZW4KKyAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQorCSAgIEFDX01TR19FUlJPUihbY29uZmxpY3RpbmcgbmFtZXM6ICRtbm0gIT0gYGJhc2VuYW1lICRpYF0pCisgICAgICAgIGZpCisgICAgICAgIHRlbXBfaW5pdD1gJEdSRVAgaW5pdF8kbW5tICRzcmNkaXIvJG1pYmRpci8kaS5jIHwgJEdSRVAgLXYgX2luaXRfJG1ubWAKKwlpZiB0ZXN0ICJ4JHRlbXBfaW5pdCIgIT0gIngiOyB0aGVuCisgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygtZSAiYWRkaW5nIGluaXRfJG1ubSgpIHRvIGxpc3QiKQorICAgICAgICAgICAgbmVlZF9oZWFkZXI9MQorCSAgICBlY2hvICIgIGlmIChzaG91bGRfaW5pdChcIiRtbm1cIikpIGluaXRfJG1ubSgpOyIgPj4gJG91dHB1dF9pbml0cworCWZpCisJJEdSRVAgc2h1dGRvd25fJG1ubSAkc3JjZGlyLyRtaWJkaXIvJGkuYyA+IC9kZXYvbnVsbAorICAgICAgICBpZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCisgICAgICAgICAgICAgIGVjaG8gLWUgIlxuYWRkaW5nIHNodXRkb3duXyRtbm0oKSB0byBsaXN0IgorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIG5lZWRfaGVhZGVyPTEKKwkgICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBzaHV0ZG93bl8kbW5tKCk7IiA+PiAkbWliZGlyLyR7bW9kdWxlX3R5cGV9X3NodXRkb3duLmgKKwlmaQorICAgICAgZmkgIyB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIGlmIHRoZXJlIGlzIGEgc2h1dGRvd24vaW5pdCBsaXN0LAorICAgICAgIworICAgICAgaWYgdGVzdCAkbmVlZF9oZWFkZXIgLWVxIDEgOyB0aGVuCisgICAgICAgICBlY2hvICcjaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciJyA+PiAkb3V0cHV0X2hkcnMKKyAgICAgIGVsc2UKKyAgICAgICAgIGVjaG8gJy8qI2luY2x1ZGUgIicibWliZ3JvdXAvJGkuaCInIiovJyA+PiAkb3V0cHV0X2hkcnMKKyAgICAgIGZpCisKKyAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAjIGNoZWNrIGZvciBvdXRwdXQgZGlyZWN0b3J5IChmb3IgYnVpbGRpbmcgb3V0c2lkZSBvZiBzb3VyY2UgdHJlZQorICAgICAgIworICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICBpZiB0ZXN0ICJ4YGVjaG8gJGkgfCAkU0VEICdzL1wvLy9nOydgIiAhPSAieCRpIjsgdGhlbgorCW1uZD1gZWNobyAkaSB8ICRTRUQgJ3MvXC9bXi9dKiQvLzsnYAorCWlmIHRlc3QgISAtZCAuLyRtaWJkaXIvJG1uZDsgdGhlbgorCSAgICBtb2R1bGVfZGlyZWN0b3JpZXM9IiRtb2R1bGVfZGlyZWN0b3JpZXMgLi8kbWliZGlyLyRtbmQiCisJZmkKKyAgICAgIGZpICMgbW9kdWxlIGRpcmVjdG9yeSB0ZXN0CisgICAgICBjaGFuZ2VxdW90ZShbLCBdKQorCisgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgICAgIyBkZWZpbmUgVVNJTkdfKl9NT0RVTEUKKyAgICAgICMKKyAgICAgIGNoYW5nZXF1b3RlKCwgKQorICAgICAgc3ltPSJgZWNobyAke2l9IHwgJFNFRCAncy9bXmEtekEtWjAtOV9dL18vZycgfCB0ciAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWidgIgorICAgICAgY2hhbmdlcXVvdGUoWywgXSkKKyAgICAgIGVjaG8gIi8qIERlZmluZSBpZiBjb21waWxpbmcgd2l0aCB0aGUgJHtpfSBtb2R1bGUgZmlsZXMuICAqLyIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAorICAgICAgZWNobyAiI2RlZmluZSBVU0lOR18ke3N5bX1fTU9EVUxFIDEiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKKyAgICAgIGVjaG8gIiAiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKKworICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgIGVjaG8gJEVDSE9fTiAiICRpJEVDSE9fQyIKKyAgICBmaSAjCisgICAgZG9uZSAjIGZvciBpIGluICRtb2R1bGVfc3VibGlzdAorCisgICAgaWYgdGVzdCAiJG91dHB1dF90byIgPSAic2VwYXJhdGUiIDsgdGhlbgorICAgICAgaWYgdGVzdCAieCRuZXdfbGlzdF90d28iID0gIngiIDsgdGhlbgorICAgICAgICAjIG5vIG5ldyBzdWItbW9kdWxlcyB0byBhZGQgdG8gdGhlIGN1cnJlbnQgdGFyZ2V0CisgICAgICAgIG91dHB1dF90bz0ibm9ybWFsIgorCisgICAgICAgIGRsbGNsZWFucz0iJHNhdmVkX3N1Ymxpc3RfbyAkZGxsY2xlYW5zIgorICAgICAgICBvdXRwdXRfaW5pdHM9IiIKKyAgICAgICAgbW9kdWxlX3N1Ymxpc3Q9IiIKKyAgICAgIGVsc2UKKyAgICAgICAgIyBhIG1vZHVsZSBoYWQgc3ViLW1vZHVsZXMgcmVxdWlyZWQ7IGtlZXAgZ29pbicKKyAgICAgICAgc2F2ZWRfc3VibGlzdD0iJHNhdmVkX3N1Ymxpc3QgJG1vZHVsZV9zdWJsaXN0IgorICAgICAgICBtb2R1bGVfc3VibGlzdD0iJG5ld19saXN0X3R3byIKKyAgICAgICAgbmV3X2xpc3RfdHdvPSIiCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIG1vZHVsZV9zdWJsaXN0PSIiCisgICAgZmkKKworICAgIGRvbmUgIyB3aGlsZSBtb2R1bGVfc3VibGlzdAorICBkb25lICMgZm9yIGogaW4gJG5ld19tb2R1bGVfbGlzdAorCisgICMgcmVtZW1iZXIgdGhlIHRvcCBsZXZlbCBtb2R1bGVzIGZvciBsYXRlciByZXBvcnRpbmcKKyAgaWYgdGVzdCAkZmlyc3RfcGFzcyA9IDEgOyB0aGVuCisgICAgIyByZW1lbWJlciB0aGlzIGxpc3QgZm9yIGxhdGVyIHJlcG9ydGluZworICAgIHRvcF9sZXZlbF9tb2R1bGVzPSIkbmV3X21vZHVsZV9saXN0ID0+ICRuZXdfbGlzdF90d28iCisgICAgZmlyc3RfcGFzcz0wCisgIGZpCisgICMtLS0tLS0tLS0tLS0tLS0tLS0tCisgICMgaWYgJGkgYWRkZWQgbmV3IG1vZHVsZXMgdmlzIGNvbmZpZ18qLAorICAjIGNoZWNrIHRob3NlIG1vZHVsZXMgZm9yIHJlcXVpcmVtZW50cyB0b28KKyAgIworICAjIHRyYW5zZmVyIHRoZSBuZXcgbW9kdWxlIHRvIGNoZWNrIGxpc3QgdG8gdGhlIG5vcm1hbCB2YXJpYWJsZQorICAjCisgIGlmIHRlc3QgIngkbmV3X2xpc3RfdHdvIiA7IHRoZW4KKyAgICBvdXRwdXRfdG89bm9ybWFsCisgIGZpCisgIG5ld19tb2R1bGVfbGlzdD0iJG5ld19saXN0X3R3byIKKyAgbmV3X2xpc3RfdHdvPSIiCitkb25lICMgd2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KK2VjaG8gIiIKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGNvbnN0cnVjdCB0aGUgZGxsIGNvZGUgZmlsZXMgYW5kIG1ha2UgcnVsZXMuICBUaGlzIGNhbid0IGJlIGRvbmUKKyMgdW50aWwgbm93IGJlY2F1c2UgZHVwbGljYXRlIHVzZSBvZiBhIG1vZHVsZSBtZWFucyBpdCBnZXRzIHJlbW92ZWQKKyMgZnJvbSB0aGUgZGxsIGFuZCBwdXQgaW50byB0aGUgbWFpbiBhZ2VudC4KKyMKK2ZvciBpIGluICRkbF9uYW1lcyA7IGRvCisgIGV2YWwgbW9kX2ZpbGVzPSJcIlwkZGxfJHtpfV9maWxlc1wiIgorICBlY2hvICJjb21wb25lbnRzIGluIHRoZSAkaSBkbGw6ICRtb2RfZmlsZXMiCisKKyAgb3V0cHV0X2luaXRzPSJhZ2VudC9taWJncm91cC8ke2l9LWRsbC5jIgorICBvdXRwdXRfaGRycz0iYWdlbnQvbWliZ3JvdXAvJHtpfS1oZHJzLmgiCisKKyAgQUNfTVNHX01PRFVMRV9EQkcoImNyZWF0aW5nIGRsbCBmaWxlOiAkb3V0cHV0X2luaXRzIikKKyAgZm9yIG9maWxlIGluICRvdXRwdXRfaW5pdHMgJG91dHB1dF9oZHJzIDsgZG8KKyAgICBpZiB0ZXN0IC1mICRvZmlsZSA7IHRoZW4KKyAgICAgIGlmICRHUkVQICJ0aGlzIGZpbGUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZSIgJG9maWxlID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisgIAk6CisgICAgICBlbHNlCisgIAlBQ19NU0dfRVJST1IoWyRvZmlsZSBhbHJlYWR5IGV4aXN0ZWQgOyBjYW4ndCBidWlsZCBkbGwgb2JqZWN0ICRpXSkKKyAgICAgIGZpCisgICAgZmkKKyAgICBjYXQgPiAkb2ZpbGUgPDwgRU9GSUYKKy8qIHhEbyBub3QgZWRpdDsgdGhpcyBmaWxlIGNyZWF0ZWQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmUgKi8KK0VPRklGCisgIGRvbmUKKworICBjYXQgPj4gJG91dHB1dF9pbml0cyA8PCBFT0ZPQworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlICIke2l9LWhkcnMuaCIKK3ZvaWQKK2luaXRfJGkodm9pZCkgeworRU9GT0MKKworICAjIGNyZWF0ZSB0aGUgLnNvIHJ1bGUKKyAgc2F2ZWRfc3VibGlzdF9vPWBlY2hvICIkbW9kX2ZpbGVzICIgfCAkU0VEICdzL14gKi8vZztzLyAgKi8ubyAvZzsnYAorCisgICMgY3JlYXRlIHRoZSBydWxlcyBmb3IgZWFjaCBvYmplY3QKKyAgZm9yIGogaW4gJG1vZF9maWxlcyA7IGRvCisgICAgY2F0ID4+ICRtb2R1bGVfcnVsZXMgPDwgRU9GUgorJGoubzogJGouYworCVwkKENDKSAtYyBcJChDUFBGTEFHUykgXCQoQ0ZMQUdTKSBcJChETEZMQUdTKSAtbyBcJEAgXCQ8CisKK0VPRlIKKyAgICBtbm09YGVjaG8gJGogfCAkU0VEICdzLy4qXC8vLztzL1wuYyQvLzsnYAorICAgIGVjaG8gIiAgaWYgKHNob3VsZF9pbml0KFwiJG1ubVwiKSkgaW5pdF8kbW5tKCk7IiA+PiAkb3V0cHV0X2luaXRzCisgIGRvbmUKKworICAjIGNyZWF0ZSB0aGUgcnVsZSBmb3IgdGhlIC5zbyBhbmQgd3JhcHBlciBjb2RlCisgIGNhdCA+PiAkbW9kdWxlX3J1bGVzIDw8IEVPRk0KKyR7aX0tZGxsLm86ICR7aX0tZGxsLmMKKwlcJChDQykgLWMgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAIFwkPAorCiske2l9LnNvOiAkc2F2ZWRfc3VibGlzdF9vICR7aX0tZGxsLm8KKwlcJChDQykgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAICRzYXZlZF9zdWJsaXN0X28gJHtpfS1kbGwubworCitFT0ZNCisgICAgICAgIGNhdCA+PiAkb3V0cHV0X2luaXRzIDw8IEVPRk9DRklOCit9CitFT0ZPQ0ZJTgorCitkb25lCisKKyMgY2xlYW51cAorcm0gLWYgY29uZnRlc3QuJGFjX2V4dCBtb2R1bGVfdG1wX2hlYWRlci5oCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tCisjIGJ1aWxkIG1vZHVsZSBsaXN0cyBmb3IgTWFrZWZpbGVzCisjCitjaGFuZ2VxdW90ZSgsICkKKworZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KKyAgZXZhbCAiJGk9bWsvJHtpfS5tayIKK2RvbmUKKworJFNFRCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3RfbworJFNFRCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3RfYworJFNFRCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJG1vZHVsZV9saXN0X2NvZGUgID4gJG1vZHVsZV9saXN0X2xvCisKKyRTRUQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9vCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3RfY29kZS9taWJfbW9kdWxlX2xpc3RfYy87cy9cKFtePV1cKSAgKlxcL1wxLmMgXFwvZycgIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfYworJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2NvZGUvbWliX21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9sbworCiskU0VEICdzL15taWJfbW9kdWxlX2xpc3Rfby9taWJncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9vID4gJG1pYmdyb3VwX2xpc3RfbworJFNFRCAncy9ebWliX21vZHVsZV9saXN0X2xvL21pYmdyb3VwX2xpc3RfbG8vO3NAXChbXiAJXSpcKVwubG9AbWliZ3JvdXAvXDEubG9AZycgPCAkbWliX21vZHVsZV9saXN0X2xvID4gJG1pYmdyb3VwX2xpc3RfbG8KKworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfbworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfYworJFNFRCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJGFnZW50X21vZHVsZV9saXN0X2NvZGUgID4gJGFnZW50X21vZHVsZV9saXN0X2xvCisKKyRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X28vYWdlbnRncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJGFnZW50X21vZHVsZV9saXN0X28gPiAkYWdlbnRncm91cF9saXN0X28KKyRTRUQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2xvL2FnZW50Z3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9sbyA+ICRhZ2VudGdyb3VwX2xpc3RfbG8KKworZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KKwkjIGhwdXggbWFrZSAoYXQgbGVhc3QpIGRvZXNuJ3QgbGlrZSBhIHRyYWlsaW5nIFwgb24gdGhlIGxhc3QKKwkjIGxpbmUgZXZlbiB3aGVuIHRoZSBuZXh0IGxpbmUgY29udGFpbnMgbm90aGluZyBidXQKKwkjIHdoaXRlc3BhY2UuCisJbGFzdHRva2VuPWBhd2sgJ3tsYXN0dG9rZW49JDF9RU5Ee3ByaW50IGxhc3R0b2tlbn0nIG1rLyRpLm1rYAorCSRTRUQgInMjJGxhc3R0b2tlbiBcXFxcIyRsYXN0dG9rZW4jIiA8IG1rLyRpLm1rID4gbWsvJGkubWsudG1wCisJbXYgbWsvJGkubWsudG1wIG1rLyRpLm1rCisKKwkjIGFkZCBhIGNsb3NpbmcgY29tbWVudAorCWVjaG8gIiIgPj4gbWsvJGkubWsKKwllY2hvICIjIGVuZCBjb25maWd1cmUgZ2VuZXJhdGVkIGNvZGUiID4+IG1rLyRpLm1rCitkb25lCisKK2NoYW5nZXF1b3RlKFssIF0pCisKK2lmIHRlc3QgJG1vZHVsZV9kZWJ1ZyAtZXEgMTsgdGhlbgorICAgZWNobyAtZSAiXG5GaW5hbCBtb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGUiCisgICBleGl0CitmaQoraWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgorICBBQ19NU0dfQ0FDSEVfQUREKFtBZ2VudCBNb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGVdKQorZmkKK0FDX1NVQlNUX0ZJTEUoTU9EVUxFX0xJU1QpCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2MpCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X28pCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2xvKQorQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfYykKK0FDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X28pCitBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9sbykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfYykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbG8pCitBQ19TVUJTVF9GSUxFKG1pYmdyb3VwX2xpc3RfbykKK0FDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9sbykKK0FDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X28pCitBQ19TVUJTVF9GSUxFKGFnZW50Z3JvdXBfbGlzdF9sbykKKworQUNfU1VCU1QoZGVmYXVsdF9taWJzX2luc3RhbGwpCitBQ19TVUJTVChkbGxjbGVhbnMpCitBQ19TVUJTVF9GSUxFKG1vZHVsZV9ydWxlcykKK0FDX1NVQlNUX0ZJTEUobW9kdWxlX2xpc3RfZGVwcykKK0FDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X2RlcHMpCitBQ19TVUJTVF9GSUxFKGFnZW50X21vZHVsZV9saXN0X2RlcHMpCisKK0FDX01TR19SRVNVTFQoLikKKworaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCitBQ19NU0dfQ0FDSEVfQUREKEFnZW50IE1JQiBjb2RlOiAgICAgICAgICAgICRtb2R1bGVfbGlzdCkKK2ZpCitBQ19NU0dfQ0FDSEVfQUREKEFnZW50IE1JQiBjb2RlOiAgICAgICAgICAgICR0b3BfbGV2ZWxfbW9kdWxlcykKKworIyBlbmQgaGFpcnkgYWdlbnQgbW9kdWxlIHByb2Nlc3NpbmcKKworQUNfTVNHX0NIRUNLSU5HKFtpZiBkaXJlY3RvcmllcyBuZWVkIHRvIGJlIGNyZWF0ZWRdKQorZm9yIGkgaW4gJG1vZHVsZV9kaXJlY3RvcmllczsgZG8KKyAgJHNyY2Rpci9ta2luc3RhbGxkaXJzICRpCitkb25lCitBQ19NU0dfUkVTVUxUKC4pCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlZmluZSBkZWZhdWx0IG1pYnMKKyMKK0FDX01TR19DSEVDS0lORyhbZGVmYXVsdCBtaWIgZmlsZXMgdG8gcmVhZF0pCitpZiB0ZXN0ICJ4JE5FVFNOTVBfREVGQVVMVF9NSUJTIiA9ICJ4IjsgdGhlbgorICBORVRTTk1QX0RFRkFVTFRfTUlCUz0iJGRlZmF1bHRfbWlicyIKK2ZpCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCisgICMgbWluZ3czMiBhbmQgY3lnd2luIHVzZSAnOycgYXMgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIHNlcGFyYXRvciBjaGFyCisgIEVOVl9TRVBBUkFUT1I9IjsiCisgIE5FVFNOTVBfREVGQVVMVF9NSUJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQlMiIHwgJFNFRCAncy86LzsvZydgCisgIGRlZmF1bHRfbWlicz1gZWNobyAiJGRlZmF1bHRfbWlicyIgfCAkU0VEICdzLzovOy9nJ2AKK2Vsc2UKKyAgRU5WX1NFUEFSQVRPUj0iOiIKK2ZpCitBQ19TVUJTVChFTlZfU0VQQVJBVE9SKQorQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9NSUJTLCIkTkVUU05NUF9ERUZBVUxUX01JQlMiKQorQUNfU1VCU1QoTkVUU05NUF9ERUZBVUxUX01JQlMpCitBQ19NU0dfUkVTVUxUKCRORVRTTk1QX0RFRkFVTFRfTUlCUykKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYiBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19tb2R1bGVzX2xpYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzM0ZjQyCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX21vZHVsZXNfbGliCkBAIC0wLDAgKzEsMzQ1IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMKKyMgTWF5YmUgYWRkIGxpYnJhcnkgZXh0ZW5zaW9ucyBmb3IgdGhyZWFkIG11dGV4IGxvY2tpbmcuCisjCisKK2lmIHRlc3QgIngkd2l0aF9yZXNfbG9ja3MiID0gInh5ZXMiOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX1JFRU5UUkFOVCwgMSwKKyAgICBbRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCByZWVudHJhbnQvdGhyZWFkZWQKKyAgICAgY29kZSAoaW5jb21wbGV0ZSkuXSkKKworICAgIGNhc2UgJHRhcmdldF9vcyBpbgorCisgICAgYWl4KikKKwlDQ19SVU5USU1FX0FSRz0iJENDX1JVTlRJTUVfQVJHIC1scHRocmVhZHMiCisJOzsKKworICAgICopCisJOzsKKworICAgIGVzYWMKK2ZpCisKKyMKKyMgQWRkIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZSBmaWxlcy4KKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZV0pCitvdGhlcl9zcmNfbGlzdD0iIgorb3RoZXJfb2Jqc19saXN0PSIiCitvdGhlcl9sb2Jqc19saXN0PSIiCitvdGhlcl9hZ2VudG9ianM9IiIKK290aGVyX2xhZ2VudG9ianM9IiIKK290aGVyX3RyYXBkX29iamVjdHM9IiIKKworIyBXaW4zMiBzZXJ2aWNlIGNvZGUKK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCisgIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2luc2VydmljZS5jIHdpbnNlcnZpY2VyYy5yYyIKKyAgb3RoZXJfb2Jqc19saXN0PSIkb3RoZXJfb2Jqc19saXN0IHdpbnNlcnZpY2UubyB3aW5zZXJ2aWNlcmMubyIKKyAgb3RoZXJfbG9ianNfbGlzdD0iJG90aGVyX2xvYmpzX2xpc3Qgd2luc2VydmljZS5sbyB3aW5zZXJ2aWNlcmMubG8iCisgIG90aGVyX2FnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubyIKKyAgb3RoZXJfbGFnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubG8iCisgIG90aGVyX3RyYXBkX29iamVjdHM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLm8iIAorZmkKKyAgCisjIFdpbjMyIHBpcGVzCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgorICBvdGhlcl9zcmNfbGlzdD0iJG90aGVyX3NyY19saXN0IHdpbnBpcGUuYyIKKyAgb3RoZXJfb2Jqc19saXN0PSIkb3RoZXJfb2Jqc19saXN0IHdpbnBpcGUubyIKKyAgb3RoZXJfbG9ianNfbGlzdD0iJG90aGVyX2xvYmpzX2xpc3Qgd2lucGlwZS5sbyIKK2ZpCisKK0FDX1NVQlNUKG90aGVyX3NyY19saXN0KQorQUNfU1VCU1Qob3RoZXJfb2Jqc19saXN0KQorQUNfU1VCU1Qob3RoZXJfbG9ianNfbGlzdCkKK0FDX1NVQlNUKG90aGVyX2FnZW50b2JqcykKK0FDX1NVQlNUKG90aGVyX2xhZ2VudG9ianMpCitBQ19TVUJTVChvdGhlcl90cmFwZF9vYmplY3RzKQorCitBQ19NU0dfUkVTVUxUKFskb3RoZXJfc3JjX2xpc3QgJG90aGVyX29ianNfbGlzdCAkb3RoZXJfbG9ianNfbGlzdF0pCitBQ19NU0dfUkVTVUxUKFskb3RoZXJfYWdlbnRvYmpzICRvdGhlcl9sYWdlbnRvYmpzICRvdGhlcl90cmFwZF9vYmplY3RzXSkKKyAgCisjCisjIERvIHRyYW5zcG9ydCBtb2R1bGUgcHJvY2Vzc2luZy4KKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIGFuZCBjb25maWd1cmluZyB0cmFuc3BvcnQgbW9kdWxlcyB0byB1c2VdKQordHJhbnNwb3J0X3NyY19saXN0PSIiCit0cmFuc3BvcnRfaGRyX2xpc3Q9IiIKK3RyYW5zcG9ydF9kZWZfbGlzdD0iIgordHJhbnNwb3J0X3Jlc3VsdF9saXN0PSIiCit0cmFuc3BvcnRfYWRkX2xpc3Q9IiIKK25ld193aXRoX3RyYW5zcG9ydF9saXN0PWBlY2hvICR3aXRoX3RyYW5zcG9ydHMgfCAkU0VEICdzLywvIC9nOydgCituZXdfd2l0aF9vdXRfdHJhbnNwb3J0X2xpc3Q9YGVjaG8gJHdpdGhfb3V0X3RyYW5zcG9ydHMgfCAkU0VEICdzLywvIC9nOydgCisKKyMKKyMgQWRkIHRoZSBkZWZhdWx0IHRyYW5zcG9ydHMgdG8gdGhlIGxpc3QKKyMKK2lmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuIAorICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIEFsaWFzIENhbGxiYWNrIgorZWxzZQorICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIEFsaWFzIFVuaXggQ2FsbGJhY2siCitmaQoraWYgdGVzdCAieCRlbmFibGVfaXB2NiIgPSAieHllcyI7IHRoZW4KKyAgdHJhbnNwb3J0X2RlZmF1bHRfbGlzdD0iVURQSVB2NiBUQ1BJUHY2ICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0IgorZmkKK2ZvciBpIGluICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0OyBkbworICBpZiBlY2hvICIgJG5ld193aXRoX3RyYW5zcG9ydF9saXN0ICIgfCAkR1JFUCAiICRpICIgPi9kZXYvbnVsbDsgdGhlbgorICAgIDoKKyAgZWxzZQorICAgIHRyYW5zcG9ydF9hZGRfbGlzdD0iJGkgJHRyYW5zcG9ydF9hZGRfbGlzdCIKKyAgZmkKK2RvbmUKK25ld190cmFuc3BvcnRfbGlzdD0iJHRyYW5zcG9ydF9hZGRfbGlzdCAkbmV3X3dpdGhfdHJhbnNwb3J0X2xpc3QiCisKK2ZvciBpIGluICRuZXdfdHJhbnNwb3J0X2xpc3Q7IGRvCisgIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X3RyYW5zcG9ydF9saXN0ICIgfCAkR1JFUCAiICRpICIgPi9kZXYvbnVsbDsgdGhlbgorICAgIGlmIHRlc3QgIngkaSIgPSAieFVEUCI7IHRoZW4KKyAgICAgIGVjaG8KKyAgICAgIEFDX01TR19FUlJPUihJdCBpcyBub3QgcG9zc2libGUgdG8gY29tcGlsZSB3aXRob3V0IFVEUC9JUCBzdXBwb3J0LikKKyAgICBmaQorICAgIGNvbnRpbnVlCisgIGVsc2UKKyAgICBpZiB0ZXN0ICJ4JGkiID0gInhBQUw1UFZDIjsgdGhlbgorICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiICE9ICJ4bGludXgiOyB0aGVuCisgICAgICAgIGVjaG8KKyAgICAgICAgQUNfTVNHX0VSUk9SKEFBTDUgUFZDIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0gKExpbnV4IG9ubHkpKQorICAgICAgZmkKKyAgICBmaQorICAgIGlmIHRlc3QgIngkaSIgPSAieElQWCI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiAhPSAieGxpbnV4IjsgdGhlbgorICAgICAgICBlY2hvCisgICAgICAgIEFDX01TR19FUlJPUihJUFggc3VwcG9ydCB1bmF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybSAoTGludXggb25seSkpCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAieCRpIiA9ICJ4VW5peCI7IHRoZW4KKyAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCisgICAgICAgIGVjaG8KKyAgICAgICAgQUNfTVNHX0VSUk9SKFVuaXggZG9tYWluIHByb3RvY29sIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0pCisgICAgICBmaQorICAgIGZpCisgICAgaWYgdGVzdCAhICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JGkiID0gInhVRFBJUHY2IiAtbyAieCRpIiA9ICJ4VENQSVB2NiI7IHRoZW4KKyAgICAgICAgICAgIGVjaG8KKyAgICAgICAgICAgIEFDX01TR19FUlJPUihJUHY2IHRyYW5zcG9ydHMgbm90IGF2YWlsYWJsZSBpZiBJUHY2IHN1cHBvcnQgaXMgbm90IGVuYWJsZWQpCisgICAgICAgIGZpCisgICAgZmkKKyAgICB0cmFuc3BvcnRfc3JjPSJzbm1wIiRpIkRvbWFpbi5jIgorICAgIHRyYW5zcG9ydF9oZHI9InNubXAiJGkiRG9tYWluLmgiCisgICAgcmVsX3RyYW5zcG9ydF9zcmM9InNubXBsaWIvIiR0cmFuc3BvcnRfc3JjCisgICAgcmVsX3RyYW5zcG9ydF9oZHI9ImluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS8iJHRyYW5zcG9ydF9oZHIKKyAgICBpZiB0ZXN0IC1mICIkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X3NyYyI7IHRoZW4KKyAgICAgIHRyYW5zcG9ydF9yZXN1bHRfbGlzdD0iJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCAkaSIKKyAgICAgIHRyYW5zcG9ydF9zcmNfbGlzdD0iJHRyYW5zcG9ydF9zcmMgJHRyYW5zcG9ydF9zcmNfbGlzdCIKKyAgICAgIGlmIHRlc3QgLWYgIiRzcmNkaXIvJHJlbF90cmFuc3BvcnRfaGRyIjsgdGhlbgorICAgICAgICB0cmFuc3BvcnRfaGRyX2xpc3Q9IiR0cmFuc3BvcnRfaGRyICR0cmFuc3BvcnRfaGRyX2xpc3QiCisgICAgICBmaQorICAgICAgdHJhbnNwb3J0X2RlZj1gZWNobyAkaSB8ICRTRUQgJ3kvYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovJ2AKKyAgICAgIHRyYW5zcG9ydF9kZWZfbGlzdD0iTkVUU05NUF9UUkFOU1BPUlRfIiR0cmFuc3BvcnRfZGVmIl9ET01BSU4gJHRyYW5zcG9ydF9kZWZfbGlzdCIKKyAgICBlbHNlCisgICAgICBlY2hvCisgICAgICBBQ19NU0dfRVJST1IoQ2Fubm90IGZpbmQgZmlsZSAkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X3NyYyB0byBzdXBwb3J0IFNOTVAgdHJhbnNwb3J0IGRvbWFpbiAkaS4pCisgICAgZmkKKyAgZmkKK2RvbmUKK3RyYW5zcG9ydF9vYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8ICRTRUQgJ3MvXC5jL1wuby9nJ2AgCSAKK3RyYW5zcG9ydF9sb2JqX2xpc3Q9YGVjaG8gIiAkdHJhbnNwb3J0X3NyY19saXN0ICIgfCAkU0VEICdzL1wuYy9cLmxvL2cnYAorCisjIyBNaW5HVyByZXF1aXJlcyBpbmV0X250b3AoKSBhbmQgaW5ldF9wdG9uKCkuCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgorICBpZiBlY2hvICIkdHJhbnNwb3J0X2RlZl9saXN0IiB8ICRHUkVQICJJUFY2IiA+L2Rldi9udWxsOyB0aGVuCisgICAgdHJhbnNwb3J0X29ial9saXN0PSIkdHJhbnNwb3J0X29ial9saXN0IGluZXRfbnRvcC5vIGluZXRfcHRvbi5vIgorICAgIHRyYW5zcG9ydF9sb2JqX2xpc3Q9IiR0cmFuc3BvcnRfbG9ial9saXN0IGluZXRfbnRvcC5sbyBpbmV0X3B0b24ubG8iCisgIGZpCitmaQorCitBQ19TVUJTVCh0cmFuc3BvcnRfaGRyX2xpc3QpCitBQ19TVUJTVCh0cmFuc3BvcnRfc3JjX2xpc3QpCitBQ19TVUJTVCh0cmFuc3BvcnRfb2JqX2xpc3QpCitBQ19TVUJTVCh0cmFuc3BvcnRfbG9ial9saXN0KQorZm9yIGkgaW4gJHRyYW5zcG9ydF9kZWZfbGlzdDsgZG8KKyAgQUNfREVGSU5FX1VOUVVPVEVEKCRpKQorZG9uZQorQUNfTVNHX1JFU1VMVCgkdHJhbnNwb3J0X3Jlc3VsdF9saXN0LikKK0FDX01TR19DQUNIRV9BREQoTmV0d29yayB0cmFuc3BvcnQgc3VwcG9ydDogJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCkKKworIworIyBTZWN1cml0eSBtb2R1bGVzIHRvIHVzZQorIyAKKworQUNfTVNHX0NIRUNLSU5HKFtmb3Igc2VjdXJpdHkgbW9kdWxlcyB0byB1c2VdKQorc2VjdXJpdHlfZGVmX2xpc3Q9InVzbSIKK3NlY3VyaXR5X3NyY19saXN0PSIiCitzZWN1cml0eV9vYmpfbGlzdD0iIiAJIAorc2VjdXJpdHlfbG9ial9saXN0PSIiCitzZWN1cml0eV9pbml0X2ZpbGU9InNubXBsaWIvc25tcHNtX2luaXQuaCIKK3NlY3VyaXR5X2luY2xfZmlsZT0iaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oIgorbmV3X3dpdGhfc2VjdXJpdHk9YGVjaG8gJHdpdGhfc2VjdXJpdHlfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKK25ld193aXRoX291dF9zZWN1cml0eT1gZWNobyAkd2l0aF9vdXRfc2VjdXJpdHlfbW9kdWxlcyB8ICRTRUQgJ3MvLC8gL2c7J2AKKworaWYgdGVzdCAhIC1kIGluY2x1ZGU7IHRoZW4KKyAgbWtkaXIgaW5jbHVkZQorZmkKK2lmIHRlc3QgISAtZCBpbmNsdWRlL25ldC1zbm1wOyB0aGVuCisgIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAKK2ZpCitpZiB0ZXN0ICEgLWQgaW5jbHVkZS9uZXQtc25tcC9hZ2VudDsgdGhlbgorICBta2RpciBpbmNsdWRlL25ldC1zbm1wL2FnZW50CitmaQoraWYgdGVzdCAhIC1kIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeTsgdGhlbgorICBta2RpciBpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkKK2ZpCitpZiB0ZXN0ICEgLWQgaW5jbHVkZS91Y2Qtc25tcDsgdGhlbgorICBta2RpciBpbmNsdWRlL3VjZC1zbm1wCitmaQorCitpZiB0ZXN0ICEgLWQgc25tcGxpYjsgdGhlbgorICBta2RpciBzbm1wbGliCitmaQorZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luaXRfZmlsZQorZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJHNlY3VyaXR5X2luY2xfZmlsZQorCitmb3IgaSBpbiAkc2VjdXJpdHlfZGVmX2xpc3Q7IGRvCisgIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X3NlY3VyaXR5ICIgfCAkR1JFUCAiICRpICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGkiID0gInh1c20iOyB0aGVuCisJZWNobworICAgICAgICBBQ19NU0dfRVJST1IoVGhlIFVTTSBzZWN1cml0eSBtb2R1bGUgaXMgbWFuZGF0b3J5KQorICAgIGZpCisgIGVsc2UKKyAgICBuZXdfd2l0aF9zZWN1cml0eT0iJG5ld193aXRoX3NlY3VyaXR5ICRpIgorICBmaQorZG9uZQorCitmb3IgaSBpbiAkbmV3X3dpdGhfc2VjdXJpdHk7IGRvCisgIGNmaWxlPSJzbm1wIiRpIi5jIgorICBoZmlsZT0ic25tcCIkaSIuaCIKKworICAjIG1ha2Ugc3VyZSBzdXBwb3J0IGV4aXN0cyBmb3IgaXQKKyAgaWYgdGVzdCAtZiAkc3JjZGlyIi9zbm1wbGliLyIkY2ZpbGUgLWEgLWYgJHNyY2RpciIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5LyIkaGZpbGU7IHRoZW4KKyAgICA6CisgIGVsc2UKKyAgICBlY2hvCisgICAgQUNfTVNHX0VSUk9SKE5vIHN1Y2ggc2VjdXJpdHkgbW9kdWxlOiAkaSAvICRjZmlsZSAvICRoZmlsZSkKKyAgZmkKKworICAjIGRlZmluZSBhIGJ1bmNoIG9mIHN0dWZmIHRvIGVuYWJsZSBpdAorICBzZWN1cml0eV9zcmNfbGlzdD0iJHNlY3VyaXR5X3NyY19saXN0ICRjZmlsZSIKKyAgc2VjdXJpdHlfaGRyX2xpc3Q9IiRzZWN1cml0eV9oZHJfbGlzdCAkaGZpbGUiCisgIHNlY3VyaXR5X29ial9saXN0PSIkc2VjdXJpdHlfb2JqX2xpc3Qgc25tcCIkaSIubyIgCSAKKyAgc2VjdXJpdHlfbG9ial9saXN0PSIkc2VjdXJpdHlfbG9ial9saXN0IHNubXAiJGkiLmxvIgorICBkZWZfbmFtZT0iTkVUU05NUF9TRUNNT0RfImBlY2hvICRpIHwgdHIgJ2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6JyAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVonYAorICBlY2hvICJpbml0XyIkaSIoKTsiID4+ICRzZWN1cml0eV9pbml0X2ZpbGUKKyAgZWNobyAiI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvJGhmaWxlPiIgPj4gJHNlY3VyaXR5X2luY2xfZmlsZQorICBBQ19ERUZJTkVfVU5RVU9URUQoJGRlZl9uYW1lKQorZG9uZQorCitBQ19TVUJTVChzZWN1cml0eV9zcmNfbGlzdCkKK0FDX1NVQlNUKHNlY3VyaXR5X2hkcl9saXN0KQorQUNfU1VCU1Qoc2VjdXJpdHlfb2JqX2xpc3QpIAkgCitBQ19TVUJTVChzZWN1cml0eV9sb2JqX2xpc3QpCitBQ19NU0dfUkVTVUxUKCRuZXdfd2l0aF9zZWN1cml0eSkKK0FDX01TR19DQUNIRV9BREQoU05NUHYzIFNlY3VyaXR5IE1vZHVsZXM6ICAgICRuZXdfd2l0aF9zZWN1cml0eSkKKworIworIyBIYW5kbGUgdGhlIHNwZWNpYWwgY2FzZSBvZiBLU00gdG8gc2VlIHdoaWNoIGNyeXB0byBBUEkgd2Ugc3VwcG9ydAorIworCityZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PQorYWxyZWFkeV9jaGVja2VkX2tyYjU9bm8KKworZm9yIHNlYyBpbiAkbmV3X3dpdGhfc2VjdXJpdHkKK2RvCisgIGlmIHRlc3QgIngkc2VjIiA9ICJ4a3NtIjsgdGhlbgorICAgIGlmIHRlc3QgInh5ZXMiID0gIngkYWxyZWFkeV9jaGVja2VkX2tyYjUiOyB0aGVuCisgICAgICBjb250aW51ZQorICAgIGVsc2UKKyAgICAgIGFscmVhZHlfY2hlY2tlZF9rcmI1PXllcworICAgIGZpCisgIGZpCisKKyAgaWYgdGVzdCB4JHNlYyAhPSB4a3NtOyB0aGVuCisgICAgcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eT0iJHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHkgJHNlYyIKKyAgZWxzZQorICAgIGlmIHRlc3Qgbm8gPSAkdHJ5a3JiNTsgdGhlbgorICAgICAgQUNfTVNHX05PVElDRShbY29uZmlndXJlZCBub3QgdG8gdXNlIGtyYjUuIGRpc2FibGluZyBrc21dKQorICAgICAgY29udGludWUKKyAgICBmaQorCisgICAgQUNfUEFUSF9QUk9HKFtrcmI1X2NvbmZpZ10sa3JiNS1jb25maWcsW25vXSwka3JiNXBhdGgvYmluOiRQQVRIKQorCisgICAgaWYgdGVzdCBubyAhPSAka3JiNV9jb25maWc7IHRoZW4KKyAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgYCRrcmI1X2NvbmZpZyAtLWNmbGFnc2AiCisgICAgICBMSUJTPSIkTElCUyBgJGtyYjVfY29uZmlnIC0tbGlic2AiCisgICAgZWxpZiB0ZXN0ICRrcmI1cGF0aCAhPSBubzsgdGhlbgorICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKCRrcmI1cGF0aCkKKyAgICBlbHNlCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoL3Vzci9rZXJiZXJvcykKKyAgICBmaQorCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3Iga3JiNV0pCisgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2hhdmVfa3JiNSwKKyAgICAgIEFDX0NIRUNLX0xJQihrcmI1LCBrcmI1X2luaXRfY29udGV4dCwKKwlhY19jdl9oYXZlX2tyYjU9eWVzLCBhY19jdl9oYXZlX2tyYjU9bm8KKyAgICAgICkKKyAgICApCisKKyAgICBpZiB0ZXN0ICRhY19jdl9oYXZlX2tyYjUgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAieCRhc2tlZGtyYjUiID0gInh5ZXMiOyB0aGVuCisJQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBrcmI1IGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKQorICAgICAgZmkKKyAgICAgIEFDX01TR19SRVNVTFQobm8uIGRpc2FibGluZyBrc20pCisgICAgICBjb250aW51ZQorICAgIGZpCisgICAgICAKKyAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICByZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PSIkcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eSBrc20iCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW1tmb3IgaGVpbWRhbF1dKQorICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9oZWltZGFsLAorICAgIFtBQ19UUllfQ09NUElMRSgKKyAgICAgIFsjaW5jbHVkZSA8a3JiNS5oPl0sCisgICAgICBbY29uc3QgY2hhciAqdiA9IGhlaW1kYWxfdmVyc2lvbjtdLAorICAgICAgYWNfY3ZfaGVpbWRhbD15ZXMsCisgICAgICBhY19jdl9oZWltZGFsPW5vCisgICAgKV0pCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfaGVpbWRhbCkKKyAgICBpZiB0ZXN0ICRhY19jdl9oZWltZGFsID0geWVzOyB0aGVuCisgICAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfS0VSQkVST1NfSEVJTURBTCwgMSwKKyAgICAgICAgW0RlZmluZSB0aGlzIGlmIHlvdSdyZSB1c2luZyBIZWltZGFsIEtlcmJlcm9zXSkKKyAgICAgIGlmIHRlc3Qgbm8gPSAka3JiNV9jb25maWc7IHRoZW4KKwlMSUJTPSIkTElCUyAtbGtyYjUgLWxhc24xIC1sY29tX2VyciAtbHJva2VuIgorICAgICAgZmkKKyAgICBlbGlmIHRlc3Qgbm8gPSAka3JiNV9jb25maWc7IHRoZW4KKwlMSUJTPSIkTElCUyAtbGtyYjUgLWxjb21fZXJyIgorICAgIGZpCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3RvIHNlZSB3aGljaCBjcnlwdG8gQVBJIHdlIG5lZWQgdG8gdXNlXSkKKyAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfTkVUU05NUF9VU0VfS0VSQkVST1NfTUlULAorICAgICAgQUNfQ0hFQ0tfTElCKGs1Y3J5cHRvLCBrcmI1X2luaXRfY29udGV4dCwKKwlhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ9eWVzLCBhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ9bm8KKyAgICAgICkKKyAgICApCisKKyAgICBpZiB0ZXN0IHllcyA9ICRhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQ7IHRoZW4KKyAgICAgIEFDX01TR19SRVNVTFQobmV3IE1JVCBjcnlwdG8gQVBJKQorICAgICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVCwgMSwKKyAgICAgICAgW0RlZmluZSB0aGlzIGlmIHdlJ3JlIHVzaW5nIHRoZSBuZXcgTUlUIGNyeXB0byBBUEldKQorICAgICAgaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgorCUxJQlM9IiRMSUJTIC1sazVjcnlwdG8iCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIEFDX01TR19SRVNVTFQob2xkIE1JVCBjcnlwdG8gQVBJKQorICAgIGZpCisgICAgQUNfQ0hFQ0tfRlVOQ1MoW2tyYjVfYXV0aF9jb25fZ2V0c2VuZHN1YmtleV0pCisgIGZpCitkb25lCisKK25ld193aXRoX3NlY3VyaXR5PSRyZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5CisKKyMKKyMgRGV0ZWN0IGxtX3NlbnNvcnMgdmVyc2lvbgorIworaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfc2Vuc29yc19zZW5zb3JzX2giID0gInh5ZXMiOyB0aGVuCisgICAgQUNfQ0hFQ0tfREVDTFMoW3NlbnNvcnNfZ2V0X2FsbF9zdWJmZWF0dXJlc10sCisgICAgICAgIFtBQ19ERUZJTkUoTkVUU05NUF9VU0VfU0VOU09SU19WMywgMSwKKyAgICAgICAgICAgIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSBsaW1fc2Vuc29ycyB2MyBvciBsYXRlcl0pXSwsCisgICAgICAgIFtbI2luY2x1ZGUgPHNlbnNvcnMvc2Vuc29ycy5oPl1dKQorZmkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19mdW5jdGlvbnMgYi9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MTYyZDYKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfZnVuY3Rpb25zCkBAIC0wLDAgKzEsMjMwIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIGxpYnJhcnkgZnVuY3Rpb25zLgorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgU3RhbmRhcmQgY2hlY2tzOgorIyMKK0FDX0ZVTkNfQUxMT0NBICAgICAgICAgICMgIGFsbG9jYSgpCitBQ19QUk9HX0dDQ19UUkFESVRJT05BTAorCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllcyAtYSAiJHthY19jdl9mdW5jX21lbWNtcF93b3JraW5nK3NldH0iICE9IHNldAordGhlbgorICAjIENyb3NzLWNvbXBpbGluZyBhbmQgYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZyBoYXMgbm90IGJlZW4gc2V0IC0gYXNzdW1lCisgICMgdGhhdCBtZW1jbXAoKSBpcyBhdmFpbGFibGUuCisgIGFjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzCitlbHNlCisgICMgTmF0aXZlIGNvbXBpbGF0aW9uIC0gdGVzdCBmb3IgdGhlIGF2YWlsYWJpbGl0eSBvZiBtZW1jbXAoKS4KKyAgQUNfRlVOQ19NRU1DTVAKK2ZpCisKK0FDX1RZUEVfU0lHTkFMCisKKyMjCisjICAgU3RhbmQtYWxvbmUgZnVuY3Rpb24gY2hlY2tzOgorIyMKKyMgIENvcmU6CitBQ19DSEVDS19GVU5DUyhbbHJhbmQ0OCAgICAgICAgIHJhbmQgICAgICAgICAgcmFuZG9tICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2lnbmFsICAgICAgICAgIHNpZ3NldCAgICAgICAgICAgICAgICAgIF0gKQorCisjICBMaWJyYXJ5OgorQUNfQ0hFQ0tfRlVOQ1MoW2ZvcmsgICAgICAgICAgICBnYWlfc3RyZXJyb3IgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtnZXRhZGRyaW5mbyAgICAgZ2V0aG9zdG5hbWUgICBnZXRob3N0YnluYW1lICAgIF0gZG5sCisgICAgICAgICAgICAgICBbZ2V0aXBub2RlYnluYW1lICAgICAgICAgICAgICAgZ2V0dGltZW9mZGF5ICAgICBdIGRubAorICAgICAgICAgICAgICAgW2lmX25hbWV0b2luZGV4ICBta3N0ZW1wICAgICAgIHJlZ2NvbXAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtyZWFkZGlyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0ZW52ICAgICAgICAgIHNldGl0aW1lciAgICAgc2V0bG9jYWxlICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3NldHNpZCAgICAgICAgICBzbnByaW50ZiAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzdHJjYXNlc3RyICAgICAgc3RyZHVwICAgICAgICBzdHJlcnJvciAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc3RybGNhdCAgICAgICAgIHN0cmxjcHkgICAgICAgc3RybmNhc2VjbXAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3N0cnRva19yICAgICAgICBzdHJ0b2wgICAgICAgIHN0cnRvdWwgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzdHJ0b3VsbCAgICAgICAgc3lzY29uZiAgICAgICB0aW1lcyAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbdnNucHJpbnRmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdICkKKworIyAgQWdlbnQ6CitBQ19DSEVDS19GVU5DUyhbY2dldG5leHQgICAgICAgIGV4ZWN2ICAgICAgICAgZ2FpX3N0cmVycm9yICAgICBdIGRubAorICAgICAgICAgICAgICAgW2dldGZzc3RhdCAgICAgICBnZXRncm5hbSAgICAgIGdldGhvc3RuYW1lICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFsgICAgICAgICAgICAgICAgZ2V0bG9hZGF2ZyAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbZ2V0cGlkICAgICAgICAgIGdldHB3bmFtICAgICAgZ2V0dmZzc3RhdCAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW2hhc21udG9wdCAgICAgICBpbml0Z3JvdXBzICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtpZl9uYW1laW5kZXggICAgaWZfbmFtZXRvaW5kZXggICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBba2luZm9fZ2V0X2NwdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW21rc3RlbXAgICAgICAgICBta3RpbWUgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtwb2xsICAgICAgICAgICAgcmVnY29tcCAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0Z2lkICAgICAgICAgIHNldGdyb3VwcyAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3NldG1udGVudCAgICAgICBzZXR1aWQgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtzaWdhY3Rpb24gICAgICAgc2lnYmxvY2sgICAgICBzaWdob2xkICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc3RhdGZzICAgICAgICAgIHN0YXR2ZnMgICAgICAgc3RpbWUgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3N0cm5jYXNlY21wICAgICBzeXN0ZW0gICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFt1bmFtZSAgICAgICAgICAgdXNsZWVwICAgICAgICAgICAgICAgICAgICAgICAgIF0gKQorCisjICBBcHBzOgorQUNfQ0hFQ0tfRlVOQ1MoW2dldGR0YWJsZXNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtnZXRncm5hbSAgICAgICAgZ2V0cGlkICAgICAgICBnZXRwd25hbSAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2V0Z2lkICAgICAgICAgIHNldGdyb3VwcyAgICAgc2V0dWlkICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgW3RjZ2V0YXR0ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSApCisKKyMgIE5vdC1Vc2VkOgorQUNfQ0hFQ0tfRlVOQ1MoW2lmX2ZyZWVuYW1laW5kZXggICAgICAgICAgICAgIGdldHBhZ2VzaXplICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgIFtsc2VlazY0ICAgICAgICAgcHJlYWQ2NCAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICBbc2VsZWN0ICAgICAgICAgIHNpZ2Fscm0gICAgICAgc29ja2V0ICAgICAgICAgICBdICkKKworCisjIworIyAgIE1vcmUgY29tcGxleCBmdW5jdGlvbiBjaGVja3M6CisjICAgICAgICAgICAoQWdlbnQpCisjIworCisjICAgICAgIHJwbUdldFBhdGggY2hlY2sgbmVlZHMgY2xlYW4gTElCUyBlbnZpcm9ubWVudCAgIChMaW51eCkKKyMKK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iOyB0aGVuCisgICAgT0xETElCUz0kTElCUworICAgIExJQlM9JExNSUJMSUJTCisgICAgQUNfQ0hFQ0tfRlVOQ1MocnBtR2V0UGF0aCkKKyAgICBMSUJTPSRPTERMSUJTCitmaQorCisjICAgICAgIHN0YXRmcyggY2hhciAqLCBzdHJ1Y3QgZnNfZGF0YSogKSAgICAgICAgICAgICAgIChVbHRyaXgpCisjCitBQ19NU0dfQ0hFQ0tJTkcoW1tmb3IgdHdvLWFyZ3VtZW50IHN0YXRmcyB3aXRoIHN0cnVjdCBmc19kYXRhIChVbHRyaXgpXV0pCitBQ19DQUNIRV9WQUwoCisgICAgZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSwKKyAgICBbQUNfVFJZX1JVTihbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAorI2luY2x1ZGUgPHN5cy9tb3VudC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfRlNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy9mc190eXBlcy5oPgorI2VuZGlmCittYWluICgpCit7CitzdHJ1Y3QgZnNfZGF0YSBmc2Q7CisvKiBVbHRyaXgncyBzdGF0ZnMgcmV0dXJucyAxIGZvciBzdWNjZXNzLAorICAgMCBmb3Igbm90IG1vdW50ZWQsIC0xIGZvciBmYWlsdXJlLiAgKi8KK2V4aXQgKHN0YXRmcyAoIi4iLCAmZnNkKSAhPSAxKTsKK31dLAorICAgIGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGE9eWVzLAorICAgIGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGE9bm8sCisgICAgZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT1ubyldKQorQUNfTVNHX1JFU1VMVCgkZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSkKK2lmIHRlc3QgJGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGEgPSB5ZXM7IHRoZW4KKyAgICBBQ19ERUZJTkUoU1RBVF9TVEFURlNfRlNfREFUQSwgMSwKKyAgICAgICAgW0RlZmluZSBpZiBzdGF0ZnMgdGFrZXMgMiBhcmdzIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGhhcworICAgICAgICAgdHlwZSBzdHJ1Y3QgZnNfZGF0YS4gQDw6QFVsdHJpeEA6PkBdKQorZmkKKworCisjIworIyAgIE90aGVyIGZ1bmN0aW9uLXJlbGF0ZWQgY2hlY2tzOgorIyAgICAgICAgICAgKGdlbmVyYWwgYnVpbGQpCisjIworCisjICAgICAgIEhvdyB0byBnZXQgdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnQgZnVuY3Rpb24KKyMKK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gZ2V0IHRoZSBuYW1lIG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uXSwKKyAgICAgICAgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lXSxbCisgICAgbmV0c25tcF9jdl9fZnVuY19fbmFtZT1ubworICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBBQ19MQU5HX1BST0dSQU0oLFtbY29uc3QgY2hhciogY3AgPSBfX2Z1bmNfXztdXSksCisgICAgICAgIFtuZXRzbm1wX2N2X19mdW5jX19uYW1lPV9fZnVuY19fXSkKKyAgICBpZiB0ZXN0ICIkbmV0c25tcF9jdl9fZnVuY19fbmFtZSIgPSBubyA7IHRoZW4KKyAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBBQ19MQU5HX1BST0dSQU0oLFtbY29uc3QgY2hhciogY3AgPSBfX0ZVTkNUSU9OX187XV0pLAorICAgICAgICBbbmV0c25tcF9jdl9fZnVuY19fbmFtZT1fX0ZVTkNUSU9OX19dKQorICAgIGZpXSkKK2lmIHRlc3QgIiRuZXRzbm1wX2N2X19mdW5jX19uYW1lIiAhPSBubzsgdGhlbgorICAgIEFDX0RFRklORV9VTlFVT1RFRChbTkVUU05NUF9GVU5DVElPTl0sWyRuZXRzbm1wX2N2X19mdW5jX19uYW1lXSwKKyAgICAgICAgW1Nob3VsZCBldmFsdWF0ZSB0byB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBkZWZpbmVkXSkKK2ZpCisKKworIyAgICAgICBXaGV0aGVyIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gICAgICAoU0NPIFVuaXh3YXJlKQorIworQUNfQ0FDSEVfQ0hFQ0soW1t3aGV0aGVyIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gKFVuaXh3YXJlKV1dLAorICAgICAgICAgICAgICAgIFtuZXRzbm1wX2N2X2NfYnJva2VuX2lubGluZV0sCisgICAgQUNfQ09NUElMRV9JRkVMU0UoW1sKK3N0YXRpYyBpbmxpbmUgaW50IG5lc3RlZF9pbmxpbmVfZnVuY3Rpb24odm9pZCkgeworICByZXR1cm4gMDsKK30KK2lubGluZSBpbnQgbWFpbl9pbmxpbmVfZnVuY3Rpb24oIHZvaWQgKSB7CisgIHJldHVybiBuZXN0ZWRfaW5saW5lX2Z1bmN0aW9uKCk7Cit9CisgICAgXV0sCisgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPW5vLAorICAgIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT15ZXMpKQorCisKKyMgICAgICAgWWVzIC0gIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSBicm9rZW4gICAgICAgKFNvbGFyaXMgMi54KQorIworY2FzZSAiJHRhcmdldF9vcyIgaW4KKyAgICBzb2xhcmlzKikKKyAgICAgICAgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPXllcworICAgICAgICA7OworICAgICopCisgICAgICAgIDs7Citlc2FjCisKK2lmIHRlc3QgIiRuZXRzbm1wX2N2X2Jyb2tlbl9pbmxpbmUiID0geWVzIDsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9CUk9LRU5fSU5MSU5FLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHN0YXRpYyBpbmxpbmUgZnVuY3Rpb25zIGFyZSB1bnN1cHBvcnRlZF0pCitmaQorCisKKyMjCisjICAgTWlzLXBsYWNlZCAobm9uLWZ1bmN0aW9uKSBjaGVja3M6CisjIworCitBQ19DQUNIRV9DSEVDSyhbZm9yIFNJT0NHSUZBRERSIGluIHN5cy9pb2N0bC5oXSwKKyAgICAgICAgICAgICAgIG5ldHNubXBfY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSLAorICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFtbCisjaWZkZWYgSEFWRV9TWVNfSU9DVExfSAorI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorI2VuZGlmCisjaWZuZGVmIFNJT0NHSUZBRERSCitObyBTSU9DR0lGQUREUiBmb3VuZCBoZXJlLgorI2VuZGlmCisgICAgICAgIF1dKV0sCisgICAgW25ldHNubXBfY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSPXllc10sCisgICAgW25ldHNubXBfY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSPW5vXSkpCitpZiB0ZXN0ICRuZXRzbm1wX2N2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUiA9IHllczsgdGhlbgorICBBQ19ERUZJTkUoU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSLCAxLAorICAgW2RlZmluZSBpZiBTSU9DR0lGQUREUiBleGlzdHMgaW4gc3lzL2lvY3RsLmhdKQorZmkKKworIyMKKyMgICBDaGVjayBob3cgdG8gcHJpbnQgYSBzaXplX3QgdmFyaWFibGUKKyMjCisKK0FDX0NBQ0hFX0NIRUNLKAorICAgIFt0aGUgdW5kZXJseWluZyB0eXBlIG9mIGEgc2l6ZV90XSwKKyAgICBuZXRzbm1wX2N2X3NpemVfdF90eXBlLAorICAgIFttNF9mb3JlYWNoKFtUWVBFXSwgW1tpbnRdLFtsb25nXSxbbG9uZyBsb25nXSxbc2hvcnRdLFtjaGFyXV0sCisgICAgIFtpZiBbWyB4JG5ldHNubXBfY3Zfc2l6ZV90X3R5cGUgPSB4IF1dIDsgdGhlbgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisJICAgICBbQUNfTEFOR19QUk9HUkFNKAorW0FDX0lOQ0xVREVTX0RFRkFVTFQoKQorZXh0ZXJuIHVuc2lnbmVkIFRZUEUgdmFyaWFibGU7CitleHRlcm4gc2l6ZV90IHZhcmlhYmxlO10sCisgICAgICAgICAgICAgICAgIFtdKV0sCisgICAgICAgICAgICAgW25ldHNubXBfY3Zfc2l6ZV90X3R5cGU9IlRZUEUiXSkKKyAgICAgZmkKKyAgICBdKV0pCisKK0FDX01TR19DSEVDS0lORyhbaG93IHRvIHByaW50ZiBhIHNpemVfdF0pCitjYXNlICIkbmV0c25tcF9jdl9zaXplX3RfdHlwZSIgaW4KKyAgICBjaGFyfHNob3J0fGludCkgbmV0c25tcF9QUkl6PSIiIDs7CisgICAgbG9uZykgbmV0c25tcF9QUkl6PSJsIiA7OworICAgICJsb25nIGxvbmciKSBuZXRzbm1wX1BSSXo9ImxsIiA7OworICAgICopIEFDX01TR19FUlJPUihbdW5kZXJseWluZyB0eXBlIG9mIHNpemVfdCBub3Qga25vd25dKSA7OworZXNhYworQUNfTVNHX1JFU1VMVCgkbmV0c25tcF9QUkl6KQorQUNfREVGSU5FX1VOUVVPVEVEKFtORVRTTk1QX1BSSXpdLCBbIiRuZXRzbm1wX1BSSXoiXSwKKyAgICAgICAgICAgICAgICAgICBbU2l6ZSBwcmVmaXggdG8gdXNlIHRvIHByaW50ZiBhIHNpemVfdCBvciBzc2l6ZV90XSkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2hlYWRlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwMzczNAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19oZWFkZXJzCkBAIC0wLDAgKzEsNTA4IEBACisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciBoZWFkZXIgZmlsZXMuCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTdGFuZGFyZCBjaGVja3M6CisjIworIyAgQ29yZToKK0FDX0hFQURFUl9TVERDICAgICAgICAgICMgIDxzdGRsaWIuaD4sIDxzdGRhcmcuaD4sICAgPHN0cmluZy5oPiAgJiA8ZmxvYXQuaD4KK0FDX0hFQURFUl9ESVJFTlQgICAgICAgICMgIDxkaXJlbnQuaD4sIDxzeXMvbmRpci5oPiwgPHN5cy9kaXIuaD4gJiA8bmRpci5oPgorIyAgQXBwczoKK0FDX0hFQURFUl9TWVNfV0FJVCAgICAgICMgIDxzeXMvd2FpdC5oPgorCisjIworIyAgIFN0YW5kLWFsb25lIGhlYWRlcnM6CisjIworIyAgQ29yZToKK0FDX0NIRUNLX0hFQURFUlMoW2dldG9wdC5oICAgcHRocmVhZC5oICByZWdleC5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N0cmluZy5oICAgc3lzbG9nLmggICB1bmlzdGQuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N0ZGludC5oICAgaW50dHlwZXMuaCAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9wYXJhbS5oICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3NlbGVjdC5oICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc29ja2V0LmggICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90aW1lLmggICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3VuLmggICAgICAgICAgIF0pCisKKyMgIExpYnJhcnkgYW5kIEFnZW50OgorQUNfQ0hFQ0tfSEVBREVSUyhbbmxpc3QuaF0sLCxbCitBQ19JTkNMVURFU19ERUZBVUxUCitbCisjaWZuZGVmIExJQkJTRF9ESVNBQkxFX0RFUFJFQ0FURUQKKyNkZWZpbmUgTElCQlNEX0RJU0FCTEVfREVQUkVDQVRFRCAxCisjZW5kaWYKK11dKQorCisjICBMaWJyYXJ5OgorQUNfQ0hFQ0tfSEVBREVSUyhbZmNudGwuaCAgICBpby5oICAgICAgIGtzdGF0LmggICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtsaW1pdHMuaCAgIGxvY2FsZS5oICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9maWxlLmggICAgICAgc3lzL2lvY3RsLmggICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3NvY2tpby5oICAgICBzeXMvc3RhdC5oICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc3lzdGVtY2ZnLmggIHN5cy9zeXN0ZW1pbmZvLmggICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90aW1lcy5oICAgICAgc3lzL3Vpby5oICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3V0c25hbWUuaCAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpcHgvaXB4LmggICAgICAgXSkKKworIyAgQWdlbnQ6CitBQ19DSEVDS19IRUFERVJTKFtkbGZjbi5oICAgIGVyci5oICAgICAgZmNudGwuaCAgICBmc3RhYi5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgZ3JwLmggICAgICBpby5oICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbaW9jdGxzLmggICBrc3RhdC5oICAgIGt2bS5oICAgICAgbGltaXRzLmggICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFsgICAgICAgICAgIG1udGVudC5oICAgbXRhYi5oICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgWyAgICAgICAgICAgcGtnbG9jcy5oICAgICAgICAgICAgIHB3ZC5oICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbICAgICAgICAgICB1dG1weC5oICAgIHV0c25hbWUuaCAgICAgICAgICAgICAgIF0pCisKK0FDX0NIRUNLX0hFQURFUlMoW3N5cy9kaXNraW8uaCAgc3lzL2RraW8uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvZmlsZS5oICAgIHN5cy9maWxpby5oICAgc3lzL2ZpeHBvaW50LmggICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL2ZzLmggICAgICBzeXMvaW9jdGwuaCAgIHN5cy9sb2FkYXZnLmggIHN5cy9tbnRlbnQuaCAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9tbnR0YWIuaCAgc3lzL3Bvb2wuaCAgICBzeXMvcHJvdG9zdy5oICBzeXMvcHN0YXQuaCAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvc29ja2lvLmggIHN5cy9zdGF0LmggICAgc3lzL3N0YXRmcy5oICAgc3lzL3N0YXR2ZnMuaCBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3N0cmVhbS5oICBzeXMvc3lzZ2V0LmggIHN5cy9zeXNtcC5oICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90Y3BpcHN0YXRzLmggICAgICAgICAgICBzeXMvdXRzbmFtZS5oICBzeXMvdmZzLmggICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvdm0uaCAgICAgIHN5cy92bW1hYy5oICAgc3lzL3ZtbWV0ZXIuaCAgc3lzL3ZtcGFyYW0uaCBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3Ztc3lzdG0uaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworQUNfQ0hFQ0tfSEVBREVSUyhbYXNtL3BhZ2UuaCBhc20vdHlwZXMuaCAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtpbmV0L21pYjIuaCAgICAgICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW2xpbnV4L2hkcmVnLmggbGludXgvdGFza3MuaCAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbWFjaGluZS9wYXJhbS5oICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0L3RjcF9mc20uaCAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3Vmcy9mcy5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbdXZtL3V2bV9leHRlcm4uaCB1dm0vdXZtX3BhcmFtLmggICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFt2bS92bS5oIHZtL3ZtX2V4dGVybi5oIHZtL3ZtX3BhcmFtLmggXSkKKworIyAgQXBwczoKK0FDX0NIRUNLX0hFQURFUlMoW2ZjbnRsLmggICAgZ3JwLmggICAgICBwd2QuaCAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvY2RlZnMuaCAgIHN5cy9pb2N0bC5oICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL3NvY2tldC5oICBzeXMvc29ja2lvLmggICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy90aW1lLmggICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyMgIE5vdC1Vc2VkOgorQUNfQ0hFQ0tfSEVBREVSUyhbc2VhcmNoLmggICBzZ3R0eS5oICAgIHh0aS5oICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9kbWFwLmggc3lzL3BvbGwuaCAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvdGltZW91dC5oICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbWFjaGluZS9wdGUuaCAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3BjaS9wY2kuaCAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKworIyBPcGVuU1NMCitBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2Flcy5oIF0pICAgICAjICAoQ29yZSkKK0FDX0NIRUNLX0hFQURFUlMoW29wZW5zc2wvZGguaCAgXSkgICAgICMgIChBcHBzKQorIyAgTm90LVVzZWQ6CitBQ19DSEVDS19IRUFERVJTKFtvcGVuc3NsL2Rlcy5oICBvcGVuc3NsL2htYWMuaCBdIGRubAorICAgICAgICAgICAgICAgICBbb3BlbnNzbC9ldnAuaCAgc2VjdXJpdHkvY3J5cHRva2kuaF0pCisKKyMgUlBNIHN1YmRpcmVjdG9yeSBwYXRoICAgICAgICAgICAgICAgICAgIChBZ2VudCkKK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iOyB0aGVuCisgIEFDX0NIRUNLX0hFQURFUlMoW3JwbS9ycG10cy5oICAgcnBtL3JwbWZpbGV1dGlsLmhdLCBbXSwgW10sCisJCSAgIFtbI2luY2x1ZGUgPHJwbS9ycG1saWIuaD5dXSkKK2ZpCisKKworIyMKKyMgICBQcmUtcmVxdWlzaXRlIG9uIG90aGVyIGhlYWRlcnM6CisjIworCisjICAgICAgIHJlcXVpcmluZyA8c3lzL3BhcmFtLmg+ICAoTUFYUEFUSExFTikgICAgICAgICAgIChPcGVuQlNEIDMuNCkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc3dhcC5oLCwsCisgICAgQUNfSU5DTFVERVNfREVGQVVMVChbXSkKKyAgICBbCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisgICAgXSkKKworIyAgICAgICByZXF1aXJpbmcgPHN5cy9wYXJhbS5oPiAgICAgICAgICAgICAgICAgICAgICAgICAoRnJlZUJTRCkKKyMKKyMgIENvcmU6ICAgICAgKD8gVGVzdGVkIGFib3ZlPyApCitBQ19DSEVDS19IRUFERVJTKFtzdGRsaWIuaCAgXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisgICAgXV0pCisjCisjICBMaWJyYXJ5OgorQUNfQ0hFQ0tfSEVBREVSUyhbbWFsbG9jLmggICAgICAgIG5ldC9pZl9kbC5oICAgc3lzL3N5c2N0bC5oICAgIF0sLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorICAgIF1dKQorIworIyAgQWdlbnQ6CitBQ19DSEVDS19IRUFERVJTKFttYWxsb2MuaCAgICAgICAgb3NyZWxkYXRlLmggICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW21hY2hpbmUvdHlwZXMuaCBuZXQvaWZfZGwuaCAgIG5ldC9pZl90eXBlcy5oICBdIGRubAorICAgICAgICAgICAgICAgICBbc3lzL2Rrc3RhdC5oICAgIHN5cy9jb25mLmggICAgc3lzL21idWYuaCAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtzeXMvbW91bnQuaCAgICAgc3lzL3Byb2MuaCAgICBzeXMvcXVldWUuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW3N5cy9zeXNjdGwuaCAgICBzeXMvdXNlci5oICAgICAgICAgICAgICAgICAgICBdLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICByZXF1aXJpbmcgPHN5cy9zZW1hLmg+ICAgICAgICAgICAgICAgICAgICAgICAgICAoSVJJWCA2LjUpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoW3N5cy9zZW1hLmhdKQorQUNfQ0hFQ0tfSEVBREVSUyhzeXMvaGFzaGluZy5oLCwsCisgICAgQUNfSU5DTFVERVNfREVGQVVMVChbXSkKKyAgICBbCisjaWYgSEFWRV9TWVNfU0VNQV9ICisjaW5jbHVkZSA8c3lzL3NlbWEuaD4KKyNlbmRpZgorICAgIF0pCisKKyMgICAgICAgcmVxdWlyaW5nIDxzeXMvc29ja2V0Lmg+ICAgICAgICAgICAgICAgICAgICAgICAgKFNvbGFyaXMgOSkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc29ja2V0dmFyLmgsLCwKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKFtdKQorICAgIFsKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorICAgIF0pCisKKyMgICAgICAgcmVxdWlyaW5nIF9LTUVNVVNFUiBhbmQgPHN5cy90eXBlcy5oPiAgICAgICAgICAgKEJTRGkzL0lSSVgpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoc3lzL3Zub2RlLmgsLCwKKyAgICBbCisjZGVmaW5lIF9LTUVNVVNFUiAxCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisgICAgXSkKKworIyAgICAgICByZXF1aXJpbmcgPG1hY2hpbmUvdHlwZXMuaD4gICAgICAgICAgICAgICAgICAgICAoTmV0QlNEKQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHN5cy9kaXNrbGFiZWwuaCwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9NQUNISU5FX1RZUEVTX0gKKyNpbmNsdWRlIDxtYWNoaW5lL3R5cGVzLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBVRlMgaGVhZGVycworIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKFt1ZnMvdWZzL2Rpbm9kZS5oIHVmcy91ZnMvcXVvdGEuaCB1ZnMvdWZzL2lub2RlLmggdWZzL2Zmcy9mcy5oXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9VRlNfVUZTX0RJTk9ERV9ICisjaW5jbHVkZSA8dWZzL3Vmcy9kaW5vZGUuaD4KKyNlbmRpZgorI2lmIEhBVkVfVUZTX1VGU19RVU9UQV9ICisjaW5jbHVkZSA8dWZzL3Vmcy9xdW90YS5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgcmVxdWlyaW5nIDx2bS92bS5oPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEJTRGkyKQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHZtL3N3YXBfcGFnZXIuaCwsLAorICAgIFtbCisjaWYgSEFWRV9WTV9WTV9ICisjaW5jbHVkZSA8dm0vdm0uaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIG5ldGxpbmsvcnRuZXRsaW5rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChMaW51eCkKKyMgIEFnZW50OgorIworQUNfQ0hFQ0tfSEVBREVSUyhbbGludXgvbmV0bGluay5oICBsaW51eC9ydG5ldGxpbmsuaF0sLCwKKyAgICBbWworI2lmIEhBVkVfQVNNX1RZUEVTX0gKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9MSU5VWF9ORVRMSU5LX0gKKyNpbmNsdWRlIDxsaW51eC9uZXRsaW5rLmg+CisjZW5kaWYKKyAgICBdXSkKKworCisjICAgICAgIE5ldHdvcmsgaGVhZGVycworIyAgQ29yZSBvciBMaWJyYXJ5L0FnZW50L0FwcHM6CisjCitBQ19DSEVDS19IRUFERVJTKFthcnBhL2luZXQuaCAgICAgICAgbmV0L2lmLmggICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvaW4uaCAgICAgICBuZXRkYi5oICAgICAgICAgICAgICBdLCwsCisgICAgW1sKKyNpZiBIQVZFX1NZU19UWVBFU19ICisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19USU1FT1VUX0gKKyNpbmNsdWRlIDxzeXMvdGltZW91dC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVRWQVJfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXR2YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbl9zeXN0bS5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfSAorI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAorI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfSUNNUF9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVENQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX1VEUF9ICisjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9UQ1BfVElNRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CisjZW5kaWYKKyAgICBdXSkKKyMKKyMgIEFnZW50OgorQUNfQ0hFQ0tfSEVBREVSUyhbbmV0L2lmX2FycC5oICAgICAgIG5ldC9pZl9taWIuaCAgICAgICAgIG5ldC9pZl92YXIuaCAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvaWZfZXRoZXIuaCBuZXRpbmV0L2luX3N5c3RtLmggICBuZXRpbmV0L2luX3Zhci5oIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0L2lwLmggICAgICAgbmV0aW5ldC9pcF9pY21wLmggICAgICAgICAgICAgICAgICAgICBdIGRubAorICAgICAgICAgICAgICAgICBbbmV0aW5ldC9pY21wX3Zhci5oIG5ldGluZXQvaXBfdmFyLmggICAgICAgICAgICAgICAgICAgICAgXSBkbmwKKyAgICAgICAgICAgICAgICAgW25ldGluZXQvdGNwLmggICAgICBuZXRpbmV0L3RjcF90aW1lci5oICBuZXRpbmV0L3RjcF92YXIuaF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0L3RjcGlwLmggICAgbmV0aW5ldC91ZHAuaCAgICAgICAgbmV0aW5ldC91ZHBfdmFyLmhdIGRubAorICAgICAgICAgICAgICAgICBbbmV0L3JvdXRlLmggICAgICAgIG5ldGluZXQvaWNtcDYuaCAgICAgICAgICAgICAgICAgICAgICAgXSwsLAorICAgIFtbCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVElNRU9VVF9ICisjaW5jbHVkZSA8c3lzL3RpbWVvdXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUVkFSX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0dmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fU1lTVE1fSAorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9JRl9ICisjaW5jbHVkZSA8bmV0L2lmLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVF9JRl9WQVJfSAorI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAorI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVBfSUNNUF9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF9pY21wLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVENQX0gKKyNpbmNsdWRlIDxuZXRpbmV0L3RjcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX1VEUF9ICisjaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9UQ1BfVElNRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSUNNUDZfSAorI2luY2x1ZGUgPG5ldGluZXQvaWNtcDYuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIEtBTUUgKElQdjYpIGhlYWRlcnMKKyMgIEFnZW50OgorIworIyBLQU1FCitBQ19DSEVDS19IRUFERVJTKFtuZXRpbmV0L2lwNi5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni9pbjZfdmFyLmggICAgbmV0aW5ldDYvaW42X3BjYi5oICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni9pcDZfdmFyLmggICAgbmV0aW5ldDYvbmQ2LmggICAgICAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni90Y3A2LmggICAgICAgbmV0aW5ldDYvdGNwNl9mc20uaCAgIF0gZG5sCisgICAgICAgICAgICAgICAgIFtuZXRpbmV0Ni90Y3A2X3RpbWVyLmggbmV0aW5ldDYvdGNwNl92YXIuaF0sLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1FVRVVFX0gKKyNpbmNsdWRlIDxzeXMvcXVldWUuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSVA2X0gKKyNpbmNsdWRlIDxuZXRpbmV0L2lwNi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgcmVxdWlyaW5nIDxuZXRpbmV0L2luLmg+ICAgICAgICAgICAgICAgICAgICAgICAgKE9wZW5CU0QgMi42KQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKG5ldGluZXQvaW5fcGNiLmgsLCwKKyAgICBbWworI2lmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RZUEVTX0gKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1RJTUVPVVRfSAorI2luY2x1ZGUgPHN5cy90aW1lb3V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVFZBUl9ICisjaW5jbHVkZSA8c3lzL3NvY2tldHZhci5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fU1lTVE1fSAorI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JUF9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRfUk9VVEVfSAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorI2VuZGlmCisjaWYgSEFWRV9BUlBBX0lORVRfSAorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMjCisjICAgUHJlLXJlcXVpc2l0ZSBvbiBzcGVjaWZpYyB0eXBlcworIyMKKworIyAgICAgICBTcGVjaWFsIGhhY2sgdG8gZ2V0IGFyb3VuZCB2YXJpb3VzIHByb2JsZW1zIG9uIG9sZGVyIExpbnV4IGtlcm5lbHMKKyMgICAgICAgKG1ham9yIHVnaCEpCisjICBBZ2VudDoKKyMKK0FDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2V0aHRvb2wuaF0sLCwKK1tbCisjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KK3R5cGVkZWYgX191NjQgdTY0OyAgICAgICAgIC8qIGhhY2ssIHNvIHdlIG1heSBpbmNsdWRlIGtlcm5lbCdzIGV0aHRvb2wuaCAqLwordHlwZWRlZiBfX3UzMiB1MzI7ICAgICAgICAgLyogZGl0dG8gKi8KK3R5cGVkZWYgX191MTYgdTE2OyAgICAgICAgIC8qIGRpdHRvICovCit0eXBlZGVmIF9fdTggdTg7ICAgICAgICAgICAvKiBkaXR0byAqLworXV0pCisKKyMjCisjICAgSGVhZGVycyByZXF1aXJpbmcgcGFydGljdWxhciBsaWJyYXJpZXMKKyMjCisKKyMgICAgICAgZm9yIEhvc3RSZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFNvbGFyaXMgMi54KQorIyAgQWdlbnQ6CisjCitBQ19DSEVDS19IRUFERVJTKHBrZ2luZm8uaCwKKyAgICBORVRTTk1QX1NFQVJDSF9MSUJTKHBrZ2luZm8sIGFkbSwKKyAgICAgICAgQUNfREVGSU5FKEhBVkVfUEtHSU5GTywgMSwgW2RlZmluZSBpZiB5b3UgaGF2ZSBwa2dpbmZvXSksLCxMTUlCTElCUykpCisKK2Nhc2UgJHRhcmdldF9vcyBpbgorICAgIGFpeCopCisgICAgICAgICMgICAgICAgZm9yIENQVS9tZW1vcnkgc3RhdGlzdGljcyAgICAgICAgICAgICAgIChBSVgpCisgICAgICAgICMgIEFnZW50OgorICAgICAgICAjCisgICAgICAgIEFDX0NIRUNLX0hFQURFUlMobGlicGVyZnN0YXQuaCwKKyAgICAgICAgICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMocGVyZnN0YXRfY3B1X3RvdGFsLCBwZXJmc3RhdCwKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9QRVJGU1RBVCwgMSwgW29uIGFpeCwgaWYgeW91IGhhdmUgcGVyZnN0YXRdKSwKKyAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoWworCisqKiogVG8gbW9uaXRvciBDUFUvbWVtb3J5IHZhbHVlcyBpbiBBSVggeW91IG5lZWQgdG8gaW5zdGFsbAorKioqIGxpYnBlcmZzdGF0IHdoaWNoIGNhbiBiZSBmb3VuZCBpbiBib3MucGVyZgorXSksLAorICAgICAgICAgICAgICAgIExNSUJMSUJTKSkKKyAgICAgICAgOzsKKyAgICBocHV4KikKKyAgICAgICAgIyAgICAgICBIUC1VWCBhZ2VudCBuZWVkcyBvcGVuX21pYiAgICAgICAoWFhYIC0gbm90IGEgaGVhZGVyIGNoZWNrISkKKyAgICAgICAgIworICAgICAgICBORVRTTk1QX1NFQVJDSF9MSUJTKG9wZW5fbWliLCBubSwKKyAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQk5NLCAxLCBbZGVmaW5lIGlmIHlvdSBoYXZlIGxpYm5tXSksLCxMTUlCTElCUykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICA7OworZXNhYworCisjICAgICAgIGZvciBNSUItMiBpbmZvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDeWd3aW4gYW5kIE1pbkdXKQorIyAgQ29yZToKKyMKK0FDX0NIRUNLX0hFQURFUlMoW3dpbmRvd3MuaCBpcGhscGFwaS5oXSwgW10sIFtdLCBbCisjaWZkZWYgSEFWRV9XSU5ET1dTX0gKKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjZW5kaWYKK10pCisKKyMgICAgICAgZm9yIE1JQi0yIGluZm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1pbkdXKQorIyAgQ29yZToKKyMKK2lmIHRlc3QgeCR3aXRoX3NvY2tsaWIgPSB4d2luc29jazI7IHRoZW4KKyAgQUNfQ0hFQ0tfSEVBREVSUyhbd2luc29jay5oIHdpbnNvY2syLmggd3MydGNwaXAuaF0pCitmaQorCisjCisjIGZvciB1Y2Qtc25tcC9sbXNlbnNvcnNNaWIKKyMKK0FDX0NIRUNLX0hFQURFUlMoW3NlbnNvcnMvc2Vuc29ycy5oXSkKKwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMxCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1ZjA1MmEKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczEKQEAgLTAsMCArMSw5NSBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciBsaWJyYXJpZXMgdGhhdCBhcmUgcnVuCisjIGJlZm9yZSB0aGUgYWdlbnQgbW9kdWxlIHRlc3RzLgorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKworIyMKKyMgICBSUE0gY2hlY2tzCisjCisjIworQUNfQ0hFQ0tfSEVBREVSUyhycG0vcnBtbGliLmggcnBtL2hlYWRlci5oKQorCitBQ19DSEVDS19IRUFERVIocnBtL3JwbWxpYi5oLHJwbWxpYl9oPXllcyxycG1saWJfaD1ubykKK0FDX0NIRUNLX0hFQURFUihycG0vaGVhZGVyLmgscnBtaGVhZGVyX2g9eWVzLHJwbWhlYWRlcl9oPW5vKQorCitpZiB0ZXN0ICJ4JHJwbWhlYWRlcl9oIiA9ICJ4bm8iIC1vICJ4JHJwbWxpYl9oIiA9ICJ4bm8iIDsgdGhlbgorICBpZiB0ZXN0ICJ4JHdpdGhfcnBtIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGVpdGhlciB0aGUgUlBNIGhlYWRlciBmaWxlcyBuZWVkZWQgYW5kIHdhcyBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gdXNlIFJQTSBzdXBwb3J0XSkKKyAgZWxzZQorICAgIHdpdGhfcnBtPW5vCisgIGZpCitmaQorCisjCisjIHJwbSBsaWJyYXJpZXMgb25seSBuZWVkZWQgZm9yIHRoZSBob3N0IHJlc291cmNlcyBtaWIgc29mdHdhcmUKKyMgaW5zdGFsbGVkIHRhYmxlcyAob24gbGludXggaW4gcGFydGljdWxhcikKKyMKK2lmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iOyB0aGVuCisgICMgQVJHLiAgUlBNIGlzIGEgcmVhbCBwYWluLgorICAjIEZXSVcgbGlicnBtLmxhLCBsaWJycG1pby5sYSwgYW5kIGxpYnBvcHQubGEgaGF2ZSBjb3JyZWN0IGRlcGVuZGVuY2llcy4KKyAgX3JwbWxpYnM9IiIKKworICAjIHJwbS00LjAueCBuZWVkcyBycG1pby4KKyAgTkVUU05NUF9TRUFSQ0hfTElCUyhycG1HZXRQYXRoLCBycG1pbywsLCAkTE1JQkxJQlMsIF9ycG1saWJzKQorICAKKyAgIyBycG0tNC4wLjMgbGlicnBtZGIgYWN0dWFsbHkgY29udGFpbnMgd2hhdCB3ZSBuZWVkLgorICBORVRTTk1QX1NFQVJDSF9MSUJTKHJwbWRiT3BlbiwgcnBtZGIsLCwgJExNSUJMSUJTLCBfcnBtbGlicykKKyAgIyBub3cgY2hlY2sgZm9yIHJwbSB1c2luZyB0aGUgYXBwcm9wcmlhdGUgbGlicmFyaWVzLgorICBORVRTTk1QX1NFQVJDSF9MSUJTKHJwbVJlYWRDb25maWdGaWxlcywgcnBtLCBbCisgICAgQUNfREVGSU5FKEhBVkVfTElCUlBNLCAxLAorICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcnBtJyBsaWJyYXJ5ICgtbHJwbSkuXSkKKyAgICBMTUlCTElCUz0iJF9ycG1saWJzICRMTUlCTElCUyIKKyAgXSwsICRMTUlCTElCUywgX3JwbWxpYnMpCisKKyAgIyBycG0gNC42IGhhcyBpbmNvbXBhdGlibGUgQVBJLCB0dXJuIG9uIHRoZSBsZWdhY3kgb25lCisgIEFDX0NIRUNLX0RFQ0woW2hlYWRlckdldEVudHJ5XSwKKyAgICA6ICwKKyAgICBBQ19ERUZJTkUoW19SUE1fNF80X0NPTVBBVF0sIFtdLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFJQTSA0LjYgb3IgbmV3ZXIgdG8gdHVybiBvbiBsZWdhY3kgQVBJXSksCisgICAgW1sjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPl1dCisgICkKK2ZpCisKKyMKKyMgZ2V0ZnNzdGF0L2dldHZmc3N0YXQKKyMKK0FDX1NFQVJDSF9MSUJTKGdldGZzc3RhdCwgW25idXRpbF0pCitBQ19DSEVDS19GVU5DUyhnZXRmc3N0YXQpCitBQ19DSEVDS19GVU5DUyhnZXR2ZnNzdGF0KQorQUNfRlVOQ19HRVRNTlRFTlQKKworIworIyBraW5mb19nZXRfY3B1cworIworQUNfU0VBUkNIX0xJQlMoa2luZm9fZ2V0X2NwdXMsIFtraW5mb10pCitBQ19DSEVDS19GVU5DUyhraW5mb19nZXRfY3B1cykKKworIworIyBkaXNrSU9MQXggcmVxdWlyZXMgZXhwIHdoaWNoIG1heSByZXF1aXJlIC1sbQorIworQUNfU0VBUkNIX0xJQlMoZXhwLCBbbV0pCisKKyMKKyMgICBsaWJrdm0KKyMKK05FVFNOTVBfU0VBUkNIX0xJQlMoa3ZtX3JlYWQsIGt2bSwsLCwgTEFHRU5UTElCUykKK05FVFNOTVBfU0VBUkNIX0xJQlMoa3ZtX29wZW5maWxlcywga3ZtLCwsLCBMQUdFTlRMSUJTKQorTkVUU05NUF9TRUFSQ0hfTElCUyhrdm1fZ2V0cHJvY3MsIGt2bSwsLCwgTE1JQkxJQlMpCitORVRTTk1QX1NFQVJDSF9MSUJTKGt2bV9nZXRwcm9jMiwga3ZtLCwsLCBMTUlCTElCUykKK05FVFNOTVBfU0VBUkNIX0xJQlMoa3ZtX2dldHN3YXBpbmZvLCBrdm0sLCwsIExNSUJMSUJTKQorbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorTElCUz0iJExBR0VOVExJQlMgJExNSUJMSUJTICRMSUJTIgorQUNfQ0hFQ0tfRlVOQ1MoW2t2bV9vcGVuZmlsZXMga3ZtX2dldHByb2NzIGt2bV9nZXRwcm9jMiBrdm1fZ2V0c3dhcGluZm9dKQorTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorCisjCisjICAgZHluYW1pYyBtb2R1bGUgc3VwcG9ydAorIworTkVUU05NUF9TRUFSQ0hfTElCUyhbZGxvcGVuXSwgW2RsXSwsLCBbJExBR0VOVExJQlMgJExTTk1QTElCU10sIFtMTUlCTElCU10pCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTE1JQkxJQlMgJExBR0VOVExJQlMgJExTTk1QTElCUyAkTElCUyIKK0FDX0NIRUNLX0ZVTkNTKFtkbG9wZW5dKQorTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyIGIvY29uZmlndXJlLmQvY29uZmlnX29zX2xpYnMyCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDc1NDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbGliczIKQEAgLTAsMCArMSwzODUgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENoZWNrcyBmb3IgbGlicmFyaWVzIHRoYXQgYXJlIHJ1bgorIyBhZnRlciB0aGUgYWdlbnQgbW9kdWxlIHRlc3RzLgorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgICBIQVZFX0xJQiBEZWZpbml0aW9ucyB1c2VkIGluIHRoZSBOZXQtU05NUCBjb2RlIGJhc2U6CisjCisjICAgICAgIEhBVkVfTElCQ1JZUFRPOglhcHBzCisjICAgICAgIEhBVkVfTElCUlBNOglhZ2VudAorIworCisjIworIyAgIFNpbXBsZSBjaGVja3M6CisjIworCisjIEFDX0NIRUNLX0xJQihkZXMsIG1haW4pCisjIEFDX0NIRUNLX0xJQihtLCAgIGFzaW4pCisKKyMgICBkbWFsbG9jCisjCitpZiB0ZXN0ICIke3dpdGhfZG1hbGxvYytzZXR9IiA9IHNldDsgdGhlbgorICAgaWYgdGVzdCAiJHdpdGhfZG1hbGxvYyIgPSB5ZXMgLWEgLWQgJHdpdGhfZG1hbGxvYyA7IHRoZW4KKyAgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGhfZG1hbGxvYykKKyAgIGZpCisgICBBQ19DSEVDS19IRUFERVJTKFtkbWFsbG9jLmhdKQorICAgQUNfU0VBUkNIX0xJQlMoW2RtYWxsb2NfbWVzc2FnZV0sIFtkbWFsbG9jXSkKK2ZpCisKKyMgICBFRmVuY2UKKyMgICAgICAgKFRoaXMgdXNlZCB0byBiZSBvbiBieSBkZWZhdWx0IGZvciBkZXZlbG9wZXIgY2hlY2tvdXQpCisjCitpZiB0ZXN0ICJ4JHVzZV9lZmVuY2UiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfU0VBUkNIX0xJQlMoW0VGX0V4aXRdLCBbZWZlbmNlXSkKK2ZpCisKKworIyAgIEVMRiBsaWJyYXJpZXMKKyMgICAgICAgVHlwaWNhbGx5IHVzZWQgZm9yICdubGlzdCcgIChuZWVkZWQgZm9yIHVwdGltZSkKKyMKK2lmIHRlc3QgIngkd2l0aF9lbGYiICE9ICJ4bm8iOyB0aGVuCitjYXNlICR0YXJnZXRfb3MgaW4KKwlsaW51eCopICMgYWRkIGhvc3RzIHdoaWNoIGRvbid0IHVzZSBubGlzdCBoZXJlCisgICAgICAgICAgICAgICAgOzsKKwlpcml4KikgIyBDaGVjayBmb3Igbmxpc3QgaW4gbWxkIChpcml4KQorCQlBQ19DSEVDS19MSUIoZWxmLCBubGlzdCkKKwkJQUNfQ0hFQ0tfTElCKGVsZiwgbmxpc3Q2NCkKKwkJQUNfQ0hFQ0tfTElCKG1sZCwgbmxpc3QpCisJCTs7CisJKikgIyBkZWZhdWx0CisJCUFDX0NIRUNLX0xJQihlbGYsIG5saXN0KQorCQk7OworZXNhYworZmkKKyAKKworIyAgIGxpYnNvY2tldAorIyAgICAgICBOZWVkZWQgZm9yICdzb2NrZXQoMiknICAgICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcykKKyMgICAgICAgUG9zc2libHkgYWxzbyBmb3IgJ2dldGhvc3RuYW1lKDMpJyAgICAgICAgICAgICAgKG5vbi1Tb2xhcmlzKQorIyAgICAgICAgICAgKGFsdGVybmF0aXZlbHkgaW4gbGlibnNsICAgICAgICAgICAgICAgICAgICAoU29sYXJpcykKKyMgICAgICAgICAgICBvciBpbiBsaWJ3czJfMzIpICAgICAgICAgICAgICAgICAgICAgICAgICAgKE1pbkdXKQorIworY2FzZSB4JHdpdGhfc29ja2xpYiBpbgoreHdpbnNvY2syKQorICAjICAgbGlid3MyX3czMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisgICMKKyAgbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorICBMSUJTPSIkTElCUyAtbHdzMl8zMiIKKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbCisgICAgI2luY2x1ZGUgPHdpbnNvY2syLmg+CisgIF0sIFsKKyAgICBzb2NrZXQoMCwgMCwgMCk7CisgICAgZ2V0aG9zdGJ5bmFtZSgwKTsKKyAgXSldLCBbCisgICAgIyBLZWVwIExJQlMuCisgICAgdHJ1ZQorICBdLCBbCisgICAgIyBSZXN0b3JlIExJQlMgYW5kIGNvbXBsYWluLgorICAgIExJQlM9IiRuZXRzbm1wX3NhdmVfTElCUyIKKyAgICBBQ19NU0dfRVJST1IoW2xpYndzMl8zMiBub3QgZm91bmQuXSkKKyAgXSkKKyAgOzsKKyopCisgIEFDX1NFQVJDSF9MSUJTKHNvY2tldCwgc29ja2V0LCxBQ19NU0dfRVJST1IoW3NvY2tldCgyKSBub3QgZm91bmQuXSkpCisgIEFDX1NFQVJDSF9MSUJTKGdldGhvc3RieW5hbWUsIFtuc2wgc29ja2V0XSkKKyAgQUNfQ0hFQ0tfRlVOQ1MoZ2V0aG9zdGJ5bmFtZSkKKyAgOzsKK2VzYWMKKworCisjICAgbGliaXBobHBhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChDeWd3aW4gYW5kIE1pbkdXKQorIworbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorTElCUz0iJExJQlMgLWxpcGhscGFwaSIKK0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oWworICAjaW5jbHVkZSA8d2luc29jazIuaD4KKyAgI2luY2x1ZGUgPGlwaGxwYXBpLmg+CitdLCBbCisgIElwUmVuZXdBZGRyZXNzKDApOworXSldLCBbCisgICMgS2VlcCBMSUJTLgorICB0cnVlCitdLCBbCisgICMgUmVzdG9yZSBMSUJTIGFuZCBjb21wbGFpbi4KKyAgTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorICBjYXNlIHgkd2l0aF9zb2NrbGliIGluCisgIHh3aW5zb2NrMikKKyAgICBBQ19NU0dfRVJST1IoW2xpYmlwaGxwYXBpIG5vdCBmb3VuZC5dKQorICAgIDs7CisgIGVzYWMKK10pCisKKworIyAgIGxpYnJlZ2V4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisjCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTElCUyAtbHJlZ2V4IgorQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbCisgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgI2luY2x1ZGUgPHJlZ2V4Lmg+CitdLCBbCisgIHJlZ2NvbXAoMCwgMCwgMCk7CitdKV0sIFsKKyAgIyBLZWVwIExJQlMuCisgIHRydWUKK10sIFsKKyAgIyBSZXN0b3JlIExJQlMuCisgIExJQlM9IiRuZXRzbm1wX3NhdmVfTElCUyIKK10pCisKKworIyAgIGxpYnNubXBhcGkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTWluR1cpCisjCituZXRzbm1wX3NhdmVfTElCUz0iJExJQlMiCitMSUJTPSIkTElCUyAtbHNubXBhcGkiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsKKyAgI2luY2x1ZGUgPHNubXAuaD4KK10sIFsKKyAgU25tcFV0aWxNZW1BbGxvYygwKTsKK10pXSwgWworICAjIEtlZXAgTElCUy4KKyAgdHJ1ZQorXSwgWworICAjIFJlc3RvcmUgTElCUy4KKyAgTElCUz0iJG5ldHNubXBfc2F2ZV9MSUJTIgorXSkKKworCisjICAga3N0YXQgbGlicmFyeSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTb2xhcmlzKQorIworTkVUU05NUF9TRUFSQ0hfTElCUyhrc3RhdF9sb29rdXAsIGtzdGF0LAorICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJLU1RBVCwgMSwKKyAgICAgICAgCVtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGtzdGF0JyBsaWJyYXJ5ICgtbGtzdGF0KS5dKSwsLAorICAgICAgICBMTkVUU05NUExJQlMpCisKKworIyMKKyMgICBNSUItbW9kdWxlLXNwZWNpZmljIGNoZWNrcworIyMKKworIyAgIGxpYmRldnN0YXQKKyMgICAgICAgIChmb3IgZGlza0lPIE1JQikKKyMKKyMgICBOb3QtVXNlZDogSEFWRV9HRVRERVZTL0hBVkVfREVWU1RBVF9HRVRERVZTCisjCitlY2hvICIgJG1vZHVsZV9saXN0ICIgfCAkR1JFUCAiIHVjZC1zbm1wL2Rpc2tpbyAiID4vZGV2L251bGwKK2lmIHRlc3QgJD8gLWVxIDAgOyB0aGVuCisJTkVUU05NUF9TRUFSQ0hfTElCUyhnZXRkZXZzLCBkZXZzdGF0LAorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0dFVERFVlMsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICBbZGVmaW5lIGlmIHlvdSBoYXZlIGdldGRldnMoKV0pLCwsTE1JQkxJQlMpCisJTkVUU05NUF9TRUFSQ0hfTElCUyhkZXZzdGF0X2dldGRldnMsIGRldnN0YXQsCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfREVWU1RBVF9HRVRERVZTLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgW2RlZmluZSBpZiB5b3UgaGF2ZSBkZXZzdGF0X2dldGRldnMoKV0pLCwsTE1JQkxJQlMpCitmaQorCisKKyMgICBMTS1TRU5TT1JTLU1JQiBzdXBwb3J0CisjCitlY2hvICIgJG1vZHVsZV9saXN0ICIgfCAkR1JFUCAtaSAidWNkLXNubXAvbG1zZW5zb3IiID4gL2Rldi9udWxsCitpZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzZW5zb3JzIHN1cHBvcnRdKQorICAgICAgICBjYXNlICR0YXJnZXRfb3MgaW4KKyAgICAgICAgc29sYXJpcyopCisgICAgICAgICAgICAjICBBZ2VudDogIEhBVkVfUElDTF9ICisgICAgICAgICAgICAjCisgICAgICAgICAgICBBQ19DSEVDS19IRUFERVIocGljbC5oLCBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxwaWNsIiwpCisgICAgICAgICAgICBBQ19DSEVDS19IRUFERVJTKHBpY2wuaCkKKyAgICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgICAjICBOb3QtVXNlZDogIEhBVkVfU0VOU09SU19TRU5TT1JTX0gKKyAgICAgICAgICAgICMKKyAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUihzZW5zb3JzL3NlbnNvcnMuaCwsCisgICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbYXNrZWQgdG8gdXNlIGxtX3NlbnNvcnMgYnV0IEkgY291bGRuJ3QgZmluZCBzZW5zb3JzL3NlbnNvcnMuaF0pXSkKKyAgICAgICAgICAgIE5FVFNOTVBfU0VBUkNIX0xJQlMoc2Vuc29yc19nZXRfZGV0ZWN0ZWRfY2hpcHMsIHNlbnNvcnMsLAorICAgICAgICAgICAgICAgIFtBQ19NU0dfRVJST1IoW2Fza2VkIHRvIHVzZSBsbV9zZW5zb3JzIGJ1dCBJIGNvdWxkbid0IGZpbmQgLWxzZW5zb3JzXSldLCwKKyAgICAgICAgICAgICAgICBMTUlCTElCUykKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKK2ZpCisKKyMKKyMgbGlibmwgKG5ldGxpbmspCisjCisKK2lmIHRlc3QgIngkd2l0aF9ubCIgIT0gInhubyI7IHRoZW4KKyAgICBjYXNlICR0YXJnZXRfb3MgaW4KKyAgICBsaW51eCopICMgQ2hlY2sgZm9yIGxpYm5sIChsaW51eCkKKwlORVRTTk1QX1NFQVJDSF9MSUJTKAorCSAgICBubF9jb25uZWN0LCBubCwKKwkgICAgW0FDX0NIRUNLX0hFQURFUlMobmV0bGluay9uZXRsaW5rLmgpXSwsLCBMTUlCTElCUykKKyAgICA7OworICAgIGVzYWMKK2ZpCisKKworCisjIworIyAgIE1vcmUgY29tcGxleCBjaGVja3M6CisjIworCisjICAgU2VjdXJpdHkgcmVsYXRlZCBmdW5jdGlvbnMKKyMKK05PTkFHRU5UTElCUz0kTElCUwkgIyBzYXZlIG9sZCBsaWJyYXJpZXMKK1NTSElOU1RBTExCSU5QUk9HUz0iIgoraWYgdGVzdCAieCR0cnlvcGVuc3NsIiAhPSAieG5vIjsgdGhlbgorICAgIGlmIHRlc3QgIngkYXNrZWRvcGVuc3NsIiAhPSAieHllcyIgLWEgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBQ19DSEVDS19MSUIocGtjczExLCBDX0luaXRpYWxpemUsCisgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJQS0NTMTEsIDEsCisgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGtjczExJyBsaWJyYXJ5ICgtbHBrY3MxMSkuXSkKKyAgICAgICAgICAgIExJQlBLQ1MxMT0iLWxwa2NzMTEiKQorICAgIGVsc2UgCisgICAgICAgIGlmIHRlc3QgIngkdHJ5cnNhcmVmIiAhPSAieG5vIjsgdGhlbgorICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKHJzYXJlZiwgUlNBUHJpdmF0ZURlY3J5cHQpCisgICAgICAgICAgICBBQ19DSEVDS19MSUIoUlNBZ2x1ZSwgUlNBX1BLQ1MxX1JTQXJlZikKKyAgICAgICAgZmkKKworICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAtbGVheTMyXSkKKyAgICAgICAgbmV0c25tcF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgICBMSUJTPSItbGVheTMyIgorICAgICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFsKKyAgICAgICAgICAgICAgICAjaW5jbHVkZSA8b3BlbnNzbC9ldnAuaD5dLAorICAgICAgICAgICAgICAgIFtyZXR1cm4gRVZQX21kNSgpO10pXSwKKyAgICAgICAgICAgIFtBQ19NU0dfUkVTVUxUKHllcyk7IGFjX2N2X2xpYl9lYXkzMl9FVlBfbWQ1PXllczsgQ1JZUFRPPSJlYXkzMiJdLAorICAgICAgICAgICAgW0FDX01TR19SRVNVTFQobm8pXQorICAgICAgICApCisgICAgICAgIExJQlM9IiRuZXRzbm1wX3NhdmVfTElCUyIKKworICAgICAgICBpZiB0ZXN0IHgkQ1JZUFRPID0geDsgdGhlbgorICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKFtjcnlwdG9dLCBbRVZQX21kNV0sIFtDUllQVE89ImNyeXB0byJdKQorICAgICAgICBmaQorCisgICAgICAgIGlmIHRlc3QgeCRDUllQVE8gIT0geDsgdGhlbgorICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfTElCQ1JZUFRPLCAxLAorICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgT3BlblNTTCBsaWJyYXJ5ICgtbGNyeXB0byBvciAtbGVheTMyKS5dKQorICAgICAgICAgICAgTElCQ1JZUFRPPSItbCR7Q1JZUFRPfSIKKyAgICAgICAgICAgIEFDX0NIRUNLX0xJQigke0NSWVBUT30sIEFFU19jZmIxMjhfZW5jcnlwdCwgCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKEhBVkVfQUVTX0NGQjEyOF9FTkNSWVBULCAxLAorICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBBRVNfY2ZiMTI4X2VuY3J5cHQnIGZ1bmN0aW9uLl0pKQorCisgICAgICAgICAgICBBQ19DSEVDS19MSUIoJHtDUllQVE99LCBFVlBfTURfQ1RYX2NyZWF0ZSwKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX01EX0NUWF9DUkVBVEVdLCBbXSwKKyAgICAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgRVZQX01EX0NUWF9jcmVhdGUnIGZ1bmN0aW9uLl0pCisgICAgICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX0VWUF9NRF9DVFhfREVTVFJPWV0sIFtdLAorICAgICAgICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2Rlc3Ryb3knIGZ1bmN0aW9uLl0pKQorICAgICAgICBmaQorICAgICAgICBpZiBlY2hvICIgJHRyYW5zcG9ydF9yZXN1bHRfbGlzdCAiIHwgJEdSRVAgIlRMUyIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgQUNfQ0hFQ0tfTElCKHNzbCwgU1NMX2xpYnJhcnlfaW5pdCwKKyAgICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJTU0wsIDEsCisgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNzbCcgbGlicmFyeSAoLWxzc2wpLl0pCisgICAgICAgICAgICAgICAgTElCQ1JZUFRPPSIgLWxzc2wgJExJQkNSWVBUTyIsCQorCQlBQ19NU0dfRVJST1IoW1RoZSBEVExTIGJhc2VkIHRyYW5zcG9ydHMgcmVxdWlyZSB0aGUgbGlic3NsIGxpYnJhcnkgZnJvbSBPcGVuU1NMIHRvIGJlIGF2YWlsYWJsZV0pCSwtbGNyeXB0bykKKyAgICAgICAgZmkKKyAgICAgICAgaWYgZWNobyAiICR0cmFuc3BvcnRfcmVzdWx0X2xpc3QgIiB8ICRHUkVQICIgU1NIICIgPiAvZGV2L251bGw7IHRoZW4KKwkgICAgQUNfQ0hFQ0tfTElCKHNzaDIsIGxpYnNzaDJfc2Vzc2lvbl9zdGFydHVwLAorICAgICAgICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQlNTSDIsIDEsCisgICAgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNzaDInIGxpYnJhcnkgKC1sc3NoMikuXSkKKyAgICAgICAgICAgICAgICBMSUJDUllQVE89IiAtbHNzaDIgJExJQkNSWVBUTyIsCisgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGUgU1NIIHRyYW5zcG9ydCByZXF1aXJlcyB0aGUgbGlic3NoMiBsaWJyYXJ5IHRvIGJlIGF2YWlsYWJsZV0pLCkKKyAgICAgICAgICAgIFNTSElOU1RBTExCSU5QUk9HUz1zc2h0b3NubXAKKyAgICAgICAgZmkKKyAgICBmaQorZWxpZiB0ZXN0ICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KKyAgICBBQ19DSEVDS19MSUIocGtjczExLCBDX0luaXRpYWxpemUsCisgICAgICAgIEFDX0RFRklORShIQVZFX0xJQlBLQ1MxMSkKKyAgICAgICAgTElCUEtDUzExPSItbHBrY3MxMSIpCitmaQorTElCUz0kTk9OQUdFTlRMSUJTCSAjIHJlc3RvcmUgb2xkIGxpYnJhcmllcworQUNfU1VCU1QoU1NISU5TVEFMTEJJTlBST0dTKQorCisKKyMgICBUQ1Agd3JhcHBlciBzdXBwb3J0CisjCitfY3BwZmxhZ3M9IiR7Q1BQRkxBR1N9IgorX2xkZmxhZ3M9IiR7TERGTEFHU30iCitpZiB0ZXN0ICIkd2l0aF9saWJ3cmFwIiAhPSAibm8iOyB0aGVuCisgIGlmIHRlc3QgIiR3aXRoX2xpYndyYXAiICE9ICJ5ZXMiOyB0aGVuCisgICAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1JJHdpdGhfbGlid3JhcC9pbmNsdWRlIgorICAgIExERkxBR1M9IiR7TERGTEFHU30gLUwkd2l0aF9saWJ3cmFwL2xpYiIKKyAgZmkKKworICBfbGlicz0ke0xJQlN9CisgIEFDX0NIRUNLX0hFQURFUih0Y3BkLmgsICwKKyAgICBBQ19NU0dfRVJST1IoW0Fza2VkIHRvIHVzZSBsaWJ3cmFwIGJ1dCBJIGNvdWxkbid0IGZpbmQgdGNwZC5oLl0pKQorCisgIExJQlM9IiRMSUJTIC1sd3JhcCIKKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwXSkKKyAgIyBYWFg6IHNob3VsZCBjaGVjayBmb3IgaG9zdHNfY3RsCisgIEFDX1RSWV9MSU5LKAorICAgIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgICAgICNpbmNsdWRlIDx0Y3BkLmg+CisgICAgIGludCBhbGxvd19zZXZlcml0eSA9IDA7CisgICAgIGludCBkZW55X3NldmVyaXR5ICA9IDA7XSwKKyAgICBbaG9zdHNfYWNjZXNzKCh2b2lkICopMCldLAorICAgIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKQorICAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfTElCV1JBUCkKKyAgICAgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gbm8gLWEgIiR3aXRoX2xpYndyYXAiICE9IHllcyAmJiBfd3JhcGxpYnM9Ii1MJHdpdGhfbGlid3JhcC9saWIiCisgICAgIF93cmFwbGlicz0iJF93cmFwbGlicyAtbHdyYXAiXSwKKyAgICBbQUNfTVNHX1JFU1VMVChbbm9dKQorICAgICAjIExpbnV4IFJlZEhhdCA2LjEgd29uJ3QgbGluayBsaWJ3cmFwIHdpdGhvdXQgbGlibnNsCisgICAgIEFDX0NIRUNLX0ZVTkMoeXBfZ2V0X2RlZmF1bHRfZG9tYWluLCAsCisgICAgICAgQUNfQ0hFQ0tfTElCKG5zbCwgeXBfZ2V0X2RlZmF1bHRfZG9tYWluKSkKKyAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwIGxpbmtlZCB3aXRoIC1sbnNsXSkKKyAgICAgQUNfVFJZX0xJTksoCisgICAgICAgWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKwkjaW5jbHVkZSA8dGNwZC5oPgorCWludCBhbGxvd19zZXZlcml0eSA9IDA7CisJaW50IGRlbnlfc2V2ZXJpdHkgID0gMDtdLAorICAgICAgIFtob3N0c19hY2Nlc3MoKHZvaWQgKikwKV0sCisgICAgICAgW0FDX01TR19SRVNVTFQoeWVzKQorCUFDX0RFRklORShORVRTTk1QX1VTRV9MSUJXUkFQKQorCXRlc3QgIiR3aXRoX2xpYndyYXAiICE9IG5vIC1hICIkd2l0aF9saWJ3cmFwIiAhPSB5ZXMgJiYgX3dyYXBsaWJzPSItTCR3aXRoX2xpYndyYXAvbGliIgorCV93cmFwbGlicz0iJF93cmFwbGlicyAtbHdyYXAgLWxuc2wiXSwKKyAgICAgICBbQUNfTVNHX1JFU1VMVChubykKKwlBQ19NU0dfRVJST1IoQXNrZWQgdG8gdXNlIGxpYndyYXAgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pXSldKQorICBMQUdFTlRMSUJTPSIkX3dyYXBsaWJzIgorICBDUFBGTEFHUz0ke19jcHBmbGFnc30KKyAgTERGTEFHUz0ke19sZGZsYWdzfQorICBMSUJTPSR7X2xpYnN9CitmaQorCisKKyMjCisjICAgbXlzcWwKKyMjCitpZiB0ZXN0ICJ4JHdpdGhfbXlzcWwiID0gInh5ZXMiIDsgdGhlbgorICBBQ19QQVRIX1BST0dTKE1ZU1FMQ09ORklHLG15c3FsX2NvbmZpZykKKyAgdGVzdCAteCAiJE1ZU1FMQ09ORklHIiBcCisJfHwgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCBteXNxbF9jb25maWcgYW5kIHdhcyBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gdXNlIE15U1FMIHN1cHBvcnRdKQorICBNWVNRTF9MSUJTPWAkTVlTUUxDT05GSUcgLS1saWJzYAorICBNWVNRTF9JTkNMVURFUz1gJE1ZU1FMQ09ORklHIC0taW5jbHVkZWAKKyAgX2xpYnM9IiR7TElCU30iCisgIF9jcHBmbGFncz0iJHtDUFBGTEFHU30iCisgIExJQlM9IiR7TElCU30gJHtNWVNRTF9MSUJTfSIKKyAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9ICR7TVlTUUxfSU5DTFVERVN9IgorICBBQ19DSEVDS19IRUFERVIobXlzcWwuaCwsCisgICAgIFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIG15c3FsLmggYW5kIHdhcyBzcGVjaWZpY2FsbHkgYXNrZWQgdG8gdXNlIE15U1FMIHN1cHBvcnRdKV0pCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBNWV9JTklUKCkgd29ya3NdKQorICBBQ19MSU5LX0lGRUxTRShbCisgICAgQUNfTEFOR19QUk9HUkFNKAorICAgICAgW1sjaW5jbHVkZSA8bXlfZ2xvYmFsLmg+CisgICAgICAgICNpbmNsdWRlIDxteV9zeXMuaD5dXSwKKyAgICAgIFtbTVlfSU5JVCgibXlfaW5pdF90ZXN0IildXSldLAorICAgICAgW0FDX01TR19SRVNVTFQoeWVzKV0sCisgICAgICBbQUNfTVNHX1JFU1VMVChubykKKyAgICAgICBBQ19ERUZJTkUoW0hBVkVfQlJPS0VOX0xJQk1ZU1FMQ0xJRU5UXSwgMSwKKyAgICAgICAgICAgICAgICAgW0RlZmluZSBpZiB1c2luZyBNWV9JTklUKCkgY2F1c2VzIGEgbGlua2VyIGVycm9yXSldKQorICBDUFBGTEFHUz0iJHtfY3BwZmxhZ3N9IgorICBMSUJTPSIke19saWJzfSIKKyAgQUNfTVNHX0NBQ0hFX0FERChNWVNRTCBUcmFwIExvZ2dpbmc6ICAgICAgICAgZW5hYmxlZCkKK2Vsc2UKKyAgQUNfTVNHX0NBQ0hFX0FERChNWVNRTCBUcmFwIExvZ2dpbmc6ICAgICAgICAgdW5hdmFpbGFibGUpCitmaQorQUNfU1VCU1QoTVlTUUxfTElCUykKK0FDX1NVQlNUKE1ZU1FMX0lOQ0xVREVTKQorICAKKworIyMKKyMgICBOb24tbGlicmFyeSBjaGVja3MKKyMjCisKKyMgbmxpc3QKK0FDX0NIRUNLX0ZVTkNTKG5saXN0IG5saXN0NjQga25saXN0KQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmVlYzlhOQotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMQpAQCAtMCwwICsxLDI0IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBNaXNjZWxsYW5lb3VzIGNoZWNrcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgQ29tcGlsYXRpb24tcmVsYXRlZAorIyMKKworIyAgICAgICBEeW5hbWljIG1vZHVsZXMgcmVxdWlyZSBQb3NpdGlvbi1JbmRlcGVuZGVudCBDb2RlCisjCSAgICBMSUJfQ0ZMQUdTL0RMTElCUzogdXNlZCBpbiBhZ2VudCBNYWtlZmlsZSBvbmx5CisjCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgd2UgaGF2ZSB0byBidWlsZCBQSUMgY29kZV0pCitlY2hvICIgJG1vZHVsZV9saXN0ICIgfCAkR1JFUCAiIHVjZC1zbm1wL2RsbW9kICIgPi9kZXYvbnVsbAoraWYgdGVzdCAkPyAtZXEgMCA7IHRoZW4KKyAgICBMSUJfQ0ZMQUdTPSIkTElCX0NGTEFHUyAkU0hMSUJfQ0ZMQUdTIgorICAgIEFDX01TR19SRVNVTFQoeWVzKQorZWxzZQorICAgIERMTElCUz0iIgorICAgIEFDX01TR19SRVNVTFQobm8pCitmaQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q4NjdiMgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMgpAQCAtMCwwICsxLDg4IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBNaXNjZWxsYW5lb3VzIGNoZWNrcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgUGFja2FnZSBjaGFyYWN0ZXJpc3RpY3MKKyMgICAgICAgQXV0aGVudGljYXRpb24vRW5jcnlwdGlvbiBzdXBwb3J0CisjIworCisjICAgICAgIENoZWNrIGZvciBQS0NTMTEKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIGF1dGhlbnRpY2F0aW9uIHN1cHBvcnRdKQordXNlb3BlbnNzbD1ubwordXNlcGtjcz1ubworaWYgdGVzdCAieCRhY19jdl9saWJfcGtjczExX0NfSW5pdGlhbGl6ZSIgIT0gInh5ZXMiIC1vICJ4JGFjX2N2X2hlYWRlcl9zZWN1cml0eV9jcnlwdG9raV9oIiAhPSAieHllcyI7IHRoZW4KKyAgICBpZiB0ZXN0ICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBQS0NTMTEgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pCisgICAgZmkKK2Vsc2UKKyAgICBpZiB0ZXN0ICJ4JGFza2VkcGtjcyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgdXNlcGtjcz15ZXMKKyAgICBmaQorZmkKKworIyAgICAgICBDaGVjayBmb3IgT3BlblNTTAorIworaWYgdGVzdCAieCRhY19jdl9saWJfY3J5cHRvX0VWUF9tZDUiICE9ICJ4eWVzIiAtYSAieCRhY19jdl9saWJfZWF5MzJfRVZQX21kNSIgIT0gInh5ZXMiIC1vICJ4JGFjX2N2X2hlYWRlcl9vcGVuc3NsX2htYWNfaCIgIT0gInh5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIEFDX01TR19FUlJPUihBc2tlZCB0byB1c2UgT3BlblNTTCBidXQgSSBjb3VsZG4ndCBmaW5kIGl0LikKKyAgICBmaQorZWxzZQorICAgIGlmIHRlc3QgIngkYXNrZWRvcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICB1c2VvcGVuc3NsPXllcworICAgIGVsaWYgdGVzdCAieCR0cnlvcGVuc3NsIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JHVzZXBrY3MiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICAgICAgdXNlb3BlbnNzbD15ZXMKKyAgICAgICAgZmkKKyAgICBmaQorZmkKKworIyAgICAgICBBdmFpbGFibGUgYXV0aGVudGljYXRpb24vZW5jcnlwdGlvbiBtb2RlcworIworaWYgdGVzdCAieCR1c2VvcGVuc3NsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBhdXRobW9kZXM9Ik1ENSBTSEExIgorICAgIGlmIHRlc3QgIngkZW5hYmxlX3ByaXZhY3kiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9vcGVuc3NsX2Flc19oIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICAgICAgICAgIGVuY3Jtb2Rlcz0iREVTIEFFUyIKKwllbHNlCisJICAgIGVuY3Jtb2Rlcz0iREVTIgorCWZpCisgICAgZWxzZQorICAgICAgICBlbmNybW9kZXM9IltkaXNhYmxlZF0iCisgICAgZmkKKyAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfT1BFTlNTTCkKKyAgICBMTkVUU05NUExJQlM9IiRMTkVUU05NUExJQlMgJExJQkNSWVBUTyIKKyAgICBBQ19NU0dfUkVTVUxUKE9wZW5TU0wgU3VwcG9ydCkKK2VsaWYgdGVzdCAieCR1c2Vwa2NzIiAhPSAieG5vIiA7IHRoZW4KKyAgICBhdXRobW9kZXM9Ik1ENSBTSEExIgorICAgIGlmIHRlc3QgIngkZW5hYmxlX3ByaXZhY3kiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBlbmNybW9kZXM9IkRFUyIKKyAgICBlbHNlCisgICAgICAgIGVuY3Jtb2Rlcz0iW2Rpc2FibGVkXSIKKyAgICBmaQorICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9QS0NTMTEsIDEsCisgICAgICBbRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGNvZGVTMTEgbGlicmFyeSAuLi5dKQorICAgIExORVRTTk1QTElCUz0iJExORVRTTk1QTElCUyAkTElCUEtDUzExIgorICAgIEFDX01TR19SRVNVTFQoUEtDUzExIFN1cHBvcnQpCitlbGlmIHRlc3QgIngkZW5hYmxlX21kNSIgIT0gInhubyI7IHRoZW4KKyAgICBhdXRobW9kZXM9Ik1ENSIKKyAgICBlbmNybW9kZXM9IiIKKyAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1KQorICAgIEFDX01TR19SRVNVTFQoSW50ZXJuYWwgTUQ1IFN1cHBvcnQpCitmaQoraWYgdGVzdCAieCRlbmFibGVfbWQ1IiA9ICJ4bm8iOyB0aGVuCisgICAgYXV0aG1vZGVzPWBlY2hvICRhdXRobW9kZXMgfCAkU0VEICdzL01ENSAqLy87J2AKK2ZpCitBQ19TVUJTVChMTkVUU05NUExJQlMpCitBQ19TVUJTVChMQUdFTlRMSUJTKQorCitBQ19NU0dfQ0FDSEVfQUREKEF1dGhlbnRpY2F0aW9uIHN1cHBvcnQ6ICAgICAkYXV0aG1vZGVzKQorQUNfTVNHX0NBQ0hFX0FERChFbmNyeXB0aW9uIHN1cHBvcnQ6ICAgICAgICAgJGVuY3Jtb2RlcykKKworaWYgdGVzdCAieCRhbGxfd2FybmluZ3MiICE9ICJ4IjsgdGhlbgorICAgIEFDX01TR19DQUNIRV9BREQoV0FSTklORzogJGFsbF93YXJuaW5ncykKK2ZpCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdhZmY0OAotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19taXNjMwpAQCAtMCwwICsxLDIwIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBNaXNjZWxsYW5lb3VzIGNoZWNrcworIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgQ29tcGlsYXRpb24gY2hhcmFjdGVyaXN0aWNzCisjIworCisjICAgICAgIEJ5dGUgb3JkZXIKKyMKK2lmIHRlc3QgIiR3aXRoX2VuZGlhbm5lc3MiID0gImJpZyI7IHRoZW4KKyAgICBhY19jdl9jX2JpZ2VuZGlhbj15ZXMKK2VsaWYgdGVzdCAiJHdpdGhfZW5kaWFubmVzcyIgPSAibGl0dGxlIiA7IHRoZW4KKyAgICBhY19jdl9jX2JpZ2VuZGlhbj1ubworZmkKK0FDX0NfQklHRU5ESUFOKCwsCisgICAgW0FDX01TR19FUlJPUihbRmFpbGVkIHRvIGZpZ3VyZSBvdXQgaG9zdCBlbmRpYW5uZXNzLCBwbGVhc2UgdXNlIC0td2l0aC1lbmRpYW5uZXNzIHRvIHNwZWNpZnkgaXQuXSldKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0IGIvY29uZmlndXJlLmQvY29uZmlnX29zX21pc2M0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZGRlZDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfb3NfbWlzYzQKQEAgLTAsMCArMSwyODYgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIE1pc2NlbGxhbmVvdXMgT3BlcmF0aW5nLVN5c3RlbSBjaGFyYWN0ZXJpc3RpY3MKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisKKyMJRGV0ZXJtaW5lIGhvdyB0byB0ZXN0IGZvciBjaGFyYWN0ZXIgZGV2aWNlcworIwlbV2UgYXNzdW1lIHRoYXQgL2Rldi9udWxsIGRvZXMgYWN0dWFsbHkgZXhpc3QhXQorIworaWYgdGVzdCAtYyAvZGV2L251bGw7IHRoZW4KKyAgICBDREVWX1RFU1RfRkxBRz0iLWMiCitlbGlmIHRlc3QgLWYgL2Rldi9udWxsOyB0aGVuCisgICAgQ0RFVl9URVNUX0ZMQUc9Ii1mIgorZWxzZQorICAgIEFDX01TR19XQVJOKFtDYW4ndCByZWxpYWJseSBkZXRlY3QgY2hhcmFjdGVyIGRldmljZXNdKQorICAgICMgSXMgaXQgYWN0dWFsbHkgc2Vuc2libGUgdG8gZmFsbCBiYWNrIG9uICJ0ZXN0IC1mIiA/CisgICAgQ0RFVl9URVNUX0ZMQUc9Ii1mIgorZmkKKworIyAgICAgICBLZXJuZWwgTG9jYXRpb24KKyMJICAgIHVzZWQgaW4gbGlicmFyeS9hZ2VudAorIworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsb2NhdGlvbiBvZiBzeXN0ZW0ga2VybmVsXSwKKyAgICBhY19jdl9LRVJORUxfTE9DLAorICAgW2FjX2N2X0tFUk5FTF9MT0M9InVua25vd24iCisgICAgZm9yIGkgaW4gL3ZtdW5peCAvaHAtdXggL3N0YW5kL3ZtdW5peCAvZGV2L2tzeW1zIC9rZXJuZWwvdW5peCAva2VybmVsL2dlbnVuaXggL25ldGJzZCAvdW5peCAva2VybmVsIC9ic2QgL21hY2hfa2VybmVsIC9ib290L2tlcm5lbC9rZXJuZWwKKyAgICBkbworICAgICAgICBpZiB0ZXN0ICRDREVWX1RFU1RfRkxBRyAkaTsgdGhlbgorICAgICAgICAgICAgYWNfY3ZfS0VSTkVMX0xPQz0iJGkiCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgIworICAgICMgSW4gcHJpbmNpcGxlLCB0aGlzIHRlc3QgaXMgbWVhbnQgdG8gcHJvdmlkZSBhIGRlZmF1bHQgcGF0aCB0byB0aGUga2VybmVsCisgICAgIyBJbiBwcmFjdGljZSwgdGhlIHRlc3QgaXMgYnJva2VuIGFuZCB0aGUga2VybmVsIHBhdGggaXMgc2V0IHRvICJ1bmtub3duIgorICAgICMKKyAgICAjIE5vdGUgdGhhdCBvbiBjZXJ0YWluIHN5c3RlbXMgKGUuZy4gc29tZSBMaW51eCBkaXN0cmlidXRpb25zKSwKKyAgICAjICAgIGl0IGlzIGltcG9zc2libGUgdG8gcHJlZGljdCB0aGUgbmFtZSBvZiB0aGUga2VybmVsLAorICAgICMgICAgcGFydGljdWxhcmx5IGlmIGl0IGluY2x1ZGVzIHRoZSBrZXJuZWwgdmVyc2lvbiwgYXJjaGl0ZWN0dXJlLCBldGMKKyAgICAjCisgICAgIyBTaW5jZSB0aGlzIGRlZmF1bHQgd2lsbCBuZXZlciBhY3R1YWxseSBiZSB1c2VkLCB0aGVuIGRvbid0IHRyeSB0byBzZXQgaXQKKyAgICAjCisgICAgaWYgdGVzdCAkaSA9ICJ1bmtub3duIjsgdGhlbgorICAgICAgICBBQ19NU0dfV0FSTihbQ2FuJ3QgZmluZCBzeXN0ZW0ga2VybmVsLi4uIGhvcGVmdWxseSB0aGlzIHdvbid0IGJlIG5lZWRlZCFdKQorICAgIGZpCitdKQorQUNfREVGSU5FX1VOUVVPVEVEKEtFUk5FTF9MT0MsIiRhY19jdl9LRVJORUxfTE9DIiwgW2xvY2F0aW9uIG9mIFVOSVgga2VybmVsXSkKKworCisjICAgICAgIFN3YXAgZGV2aWNlIExvY2F0aW9uCisjICAgICAgICAgICAoL2Rldi9kbWVtIG9yIC9kZXYvZHJ1bSkKKyMJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsb2NhdGlvbiBvZiBzd2FwIGRldmljZV0sCisgICAgYWNfY3ZfRE1FTV9MT0MsCisgICBbaWYgdGVzdCAkQ0RFVl9URVNUX0ZMQUcgL2Rldi9kbWVtOyB0aGVuCisgICAgICAgIGFjX2N2X0RNRU1fTE9DPSIvZGV2L2RtZW0iCisgICAgZWxpZiB0ZXN0ICRDREVWX1RFU1RfRkxBRyAvZGV2L2RydW07IHRoZW4KKyAgICAgICAgYWNfY3ZfRE1FTV9MT0M9Ii9kZXYvZHJ1bSIKKyAgICBlbHNlCisgICAgICAgIGFjX2N2X0RNRU1fTE9DPSJub25lIgorICAgIGZpCitdKQorIworIyAgTm90ZSB0aGF0IGl0J3MgT0sgaWYgdGhpcyBkZXZpY2UgaXMgbm90IGZvdW5kCisjCitpZiB0ZXN0ICJ4JGFjX2N2X0RNRU1fTE9DIiAhPSAieG5vbmUiOyB0aGVuCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKERNRU1fTE9DLCIkYWNfY3ZfRE1FTV9MT0MiLCBbbG9jYXRpb24gb2Ygc3dhcCBkZXZpY2VdKQorZmkKKworCisjICAgICAgIE1vdW50IHRhYmxlIExvY2F0aW9uCisjCSAgICB1c2VkIGluIGFnZW50IG9ubHkKKyMKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgbW91bnQgdGFibGUgbG9jYXRpb25dLAorICAgIGFjX2N2X0VUQ19NTlRUQUIsCisgICBbYWNfY3ZfRVRDX01OVFRBQj0iJHt3aXRoX21udHRhYjotdW5rbm93bn0iCisgICAgaWYgdGVzdCAiJGFjX2N2X0VUQ19NTlRUQUIiID0gInVua25vd24iOyB0aGVuCisgICAgICAgIGZvciBpIGluIC9ldGMvbW50dGFiIC9ldGMvbXRhYiAvZXRjL2ZpbGVzeXN0ZW1zIC9kZXYvbW50dGFiCisgICAgICAgIGRvCisgICAgICAgICAgICBpZiB0ZXN0IC1mICRpIC1vIC1jICRpOyB0aGVuCisgICAgICAgICAgICAgICAgYWNfY3ZfRVRDX01OVFRBQj0iJGkiCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZmkKK10pCitBQ19ERUZJTkVfVU5RVU9URUQoRVRDX01OVFRBQiwiJGFjX2N2X0VUQ19NTlRUQUIiLCBbbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdF0pCisKKworIyAgICAgICBQcmludGluZworIwkgICAgdXNlZCBpbiBhZ2VudCBvbmx5CisjCitBQ19QQVRIX1BST0coW0xQU1RBVF9QQVRIXSxscHN0YXQpCitpZiB0ZXN0IHgkTFBTVEFUX1BBVEggIT0geDsgdGhlbgorICAgIEFDX0RFRklORV9VTlFVT1RFRChMUFNUQVRfUEFUSCwgIiRMUFNUQVRfUEFUSCIsCisJW1BhdGggdG8gdGhlIGxwc3RhdCBjb21tYW5kXSkKKyAgICBBQ19ERUZJTkUoSEFWRV9MUFNUQVQsIDEsIFtTZXQgaWYgdGhlIGxwc3RhdCBjb21tYW5kIGlzIGF2YWlsYWJsZV0pCitmaQoraWYgdGVzdCAtciAvZXRjL3ByaW50Y2FwOyB0aGVuCisgICAgQUNfREVGSU5FKEhBVkVfUFJJTlRDQVAsIDEsIFtTZXQgaWYgL2V0Yy9wcmludGNhcCBleGlzdHNdKQorZmkKKworCisjICAgICAgIENoZWNrIHBzIGFyZ3MKKyMJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworQUNfQ0FDSEVfQ0hFQ0soW2ZvciBjb3JyZWN0IGZsYWdzIHRvIHBzXSwKKyAgICAgYWNfY3ZfcHNfZmxhZ3MsCisgICAgIFsKK2lmIHRlc3QgImAoJFBTUFJPRyAtZSAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgorZWxpZiB0ZXN0ICJgKCRQU1BST0cgLWVsIDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iLWVsIgorZWxpZiB0ZXN0ICJgKCRQU1BST0cgYWN4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iYWN4IgorZWxpZiB0ZXN0ICJgKCRQU1BST0cgLWFjeCAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1hY3giCitlbGlmIHRlc3QgImAoJFBTUFJPRyAtbyBwaWQsdHQsc3RhdGUsdGltZSx1Y29tbSAyPiYxKSB8ICRFR1JFUCAnIHBzICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgorICAgIGFjX2N2X3BzX2ZsYWdzPSItbyBwaWQsdHQsc3RhdGUsdGltZSx1Y29tbSIKK2VsaWYgdGVzdCAiYCgkUFNQUk9HIGF4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KKyAgICBhY19jdl9wc19mbGFncz0iYXgiCitlbGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgorICAgIGFjX2N2X3BzX2ZsYWdzPSItZSIKK2VsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4gCisgICAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgorZWxzZQorICAgIEFDX01TR19XQVJOKFtVbmFibGUgdG8gZGV0ZXJtaW5lIHZhbGlkIHBzIGZsYWdzLi4uICBkZWZhdWx0aW5nLi4uXSkKKyAgICBhY19jdl9wc19mbGFncz0iLWFjeCIKK2ZpCitdKQorCitQU0NNRD0iJFBTUFJPRyAkYWNfY3ZfcHNfZmxhZ3MiCitBQ19TVUJTVChQU0NNRCkKK0FDX0RFRklORV9VTlFVT1RFRChQU0NNRCwgIiRQU1BST0cgJGFjX2N2X3BzX2ZsYWdzIiwKKyAgW0NvbW1hbmQgdG8gZ2VuZXJhdGUgcHMgb3V0cHV0LCB0aGUgZmluYWwgY29sdW1uIG11c3QgYmUgdGhlIHByb2Nlc3MKKyAgIG5hbWUgd2l0aE9VVCBhcmd1bWVudHNdKQorCisKKyMjCisjICAgU3lzdGVtL0NvbXBpbGF0aW9uLXJlbGF0ZWQKKyMjCisKKyMgICAgICAgQ2hlY2sgd2hldGhlciBzeXNjdGwoKSBpcyB1c2FibGUKKyMJICAgIHVzZWQgaW4gbGlicmFyeS9hZ2VudAorIworaWYgdGVzdCAkY3Jvc3NfY29tcGlsaW5nID0geWVzOyB0aGVuCisgICAgQUNfTVNHX1dBUk4oW0Nhbid0IGNoZWNrIHN5c2N0bCwgbWFudWFsbHkgZGVmaW5lIE5FVFNOTVBfQ0FOX1VTRV9TWVNDVEwgaWYgcGxhdGZvcm0gc3VwcG9ydCBhdmFpbGFibGVdKQorZWxzZQorICAgIEFDX0NBQ0hFX0NIRUNLKFtpZiBzeXNjdGwgY2FuIHJlYWQga2VybmVsIGluZm9ybWF0aW9uXSwKKyAgICAgICAgYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTCwKKyAgICAgICBbQUNfVFJZX1JVTihbCisjaWYgVElNRV9XSVRIX1NZU19USU1FCisjIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGluY2x1ZGUgPHRpbWUuaD4KKyNlbHNlCisjIGlmIEhBVkVfU1lTX1RJTUVfSAorIyAgaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyMgZWxzZQorIyAgaW5jbHVkZSA8dGltZS5oPgorIyBlbmRpZgorI2VuZGlmCisjaWYgSEFWRV9TWVNfUEFSQU1fSAorIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmIEhBVkVfU1lTX1NZU0NUTF9ICisjIGluY2x1ZGUgPHN5cy9zeXNjdGwuaD4KKyNlbmRpZgorCittYWluKCkgeworICBpbnQgICAgICAgICAgICAgICAgIG1pYlsyXTsKKyAgc2l6ZV90ICAgICAgICAgICAgICBsZW47CisgIHN0cnVjdCB0aW1ldmFsIGJvb3R0aW1lOworICAKKyAgbWliWzBdID0gQ1RMX0tFUk47CisgIG1pYlsxXSA9IEtFUk5fQk9PVFRJTUU7CisgIAorICBsZW4gPSBzaXplb2YoYm9vdHRpbWUpOworICBzeXNjdGwobWliLCAyLCAmYm9vdHRpbWUsICZsZW4sIE5VTEwsIE5VTEwpOworICBpZiAoYm9vdHRpbWUudHZfc2VjICE9IDApCisgICAgZXhpdCgwKTsKKyAgZWxzZQorICAgIGV4aXQoMSk7Cit9CisgICAgICAgIF0sCisgICAgICAgIGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEw9eWVzLAorICAgICAgICBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPW5vLAorICAgICAgICBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPW5vKV0pCitmaQorCitpZiB0ZXN0ICJ4JGFjX2N2X05FVFNOTVBfQ0FOX1VTRV9TWVNDVEwiID0gInh5ZXMiOyB0aGVuCisgIEFDX0RFRklORShORVRTTk1QX0NBTl9VU0VfU1lTQ1RMLCAxLCBbc3lzY3RsIHdvcmtzIHRvIGdldCBib290dGltZSwgZXRjLi4uXSkKK2ZpCisKKworIyAgIENoZWNrIHdoZXRoZXIgVENQIHRpbWVyIGNvbnN0YW50cyBhcmUgaW5kZWVkIGNvbnN0YW50CisjICAgICAgIG9yIGRlcGVuZCBvbiB0aGUga2VybmVsIGNsb2NrIHRpY2sgJ2h6Jy4gICAgICAgIChGcmVlQlNEIDQueCkKKyMKKyMgICAgICAgSWYgdGhlIGxhdHRlciwgdGhlbiB3ZSB3aWxsIG5lZWQgdG8gaGF2ZSBhIGxvY2FsCisjICAgICAgIHZhcmlhYmxlICdoeicgZGVmaW5lZCBhbmQgd2l0aCBhIHN1aXRhYmxlIHZhbHVlLAorIyAgICAgICB3aGVuZXZlciB3ZSB3YW50IHRvICB1c2Ugb25lIG9uZSBvZiB0aGVzZSAnY29uc3RhbnRzJy4KKyMKKyMgCSAgICB1c2VkIGluIGFnZW50IG9ubHkKKyMKK0FDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIFRDUCB0aW1lcnMgZGVwZW5kIG9uICdoeiddLAorICAgIGFjX2N2X1RDUFRWX05FRURTX0haLAorICAgW0FDX0VHUkVQX0NQUChoeiwKKyAgICAgICAgWworI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CitUQ1BUVl9TUlRUREZMVAorICAgICAgICBdLAorICAgICAgICBhY19jdl9UQ1BUVl9ORUVEU19IWj15ZXMsCisgICAgICAgIGFjX2N2X1RDUFRWX05FRURTX0haPW5vKV0pCisKK2lmIHRlc3QgIngkYWNfY3ZfVENQVFZfTkVFRFNfSFoiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfREVGSU5FKFRDUFRWX05FRURTX0haLCAxLAorICAgICAgICBbRGVmaW5lIGlmIHRoZSBUQ1AgdGltZXIgY29uc3RhbnRzIGluIDxuZXRpbmV0L3RjcF90aW1lci5oPgorICAgICAgICAgZGVwZW5kIG9uIHRoZSBpbnRlZ2VyIHZhcmlhYmxlICdoeicuICBAPDpARnJlZUJTRCA0LnhAOj5AXSkKK2ZpCisKKworIyAgIENoZWNrIHdoZXRoZXIgSVAgUm91dGUgdGFibGUgaXMgY2FjaGVkICAgICAgICAgICAgICAoU29sYXJpcykKKyMJICAgIHVzZWQgaW4gYWdlbnQgb25seQorIworY2FzZSAkdGFyZ2V0X29zIGluCisgIHNvbGFyaXMqKQorICAgICMgICAgSGVhZGVyIGNoZWNrcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcyAyLjYvNykKKyAgICAjCisgICAgQUNfQ0hFQ0tfSEVBREVSUyhpbmV0L2NvbW1vbi5oKQorICAgIEFDX0NIRUNLX0hFQURFUlMoaW5ldC9pcC5oLGFjX2luZXRfaXBfaD15ZXMsYWNfaW5ldF9pcF9oPW5vLAorICAgICAgICBBQ19JTkNMVURFU19ERUZBVUxUKFtdKQorICAgICAgICBbCisjaWYgSEFWRV9TWVNfU1RSRUFNX0gKKyNpbmNsdWRlIDxzeXMvc3RyZWFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX0lORVRfQ09NTU9OX0gKKyNpbmNsdWRlIDxpbmV0L2NvbW1vbi5oPgorI2VuZGlmCisgICAgICAgIF0pCisgICAgaWYgdGVzdCAkYWNfaW5ldF9pcF9oID0geWVzIDsgdGhlbgorICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIG1pYjJfaXBSb3V0ZUVudHJ5X3QgaW4gaW5ldC9taWIyLmhdLAorICAgICAgICAgICAgYWNfY3ZfbWliMl9pcFJvdXRlRW50cnlfdCwKKyAgICAgICAgICAgW0FDX1RSWV9DT01QSUxFKFsKKyNpZiBIQVZFX0lORVRfTUlCMl9ICisjaW5jbHVkZSA8aW5ldC9taWIyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICAgIF0sWworICBtaWIyX2lwUm91dGVFbnRyeV90IHRlc3RpdDsKKyAgaWYoc2l6ZW9mKHRlc3RpdCkpCisgICAgcmV0dXJuKDApOworICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgIGFjX2N2X21pYjJfaXBSb3V0ZUVudHJ5X3Q9eWVzLAorICAgICAgICAgICAgICAgYWNfY3ZfbWliMl9pcFJvdXRlRW50cnlfdD1ubyldKQorCisgICAgICAgIGlmIHRlc3QgIngkYWNfY3ZfbWliMl9pcFJvdXRlRW50cnlfdCIgPSAieHllcyIgOyB0aGVuCisgICAgICAgICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBJUkVfQ0FDSEUgaXMgZGVmaW5lZCBpbiBpbmV0L2lwLmhdLAorICAgICAgICAgICAgICAgIGFjX2N2X2lyZV9jYWNoZSwKKyAgICAgICAgICAgICAgIFtBQ19UUllfQ09NUElMRShbCisjaWYgSEFWRV9JTkVUX0lQX0gKKyNpbmNsdWRlIDxpbmV0L2lwLmg+CisjZW5kaWYKKyAgICAgICAgICAgICAgICAgICBdLFsKKyAgaW50IHRlc3RpdD1JUkVfQ0FDSEU7CisgIGlmKHRlc3RpdCkKKyAgICByZXR1cm4oMCk7CisgICAgICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAgICBhY19jdl9pcmVfY2FjaGU9eWVzLAorICAgICAgICAgICAgICAgICAgIGFjX2N2X2lyZV9jYWNoZT1ubyldKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBhY19jdl9pcmVfY2FjaGU9bm8KKyAgICAgICAgZmkKKworICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X2lyZV9jYWNoZSIgPSAieHllcyIgOyB0aGVuCisgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9ERUZJTkVEX0lSRV9DQUNIRSxbXSwKKyAgICAgICAgICAgICAgICBbZGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgSVJFX0NBQ0hFIGRlZmluZWQgaW4gPGluZXQvaXAuaD4gaGVhZGVyIGZpbGUuXSkKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQUNfTVNHX1dBUk4oW0l0IHNlZW1zIHRoYXQgeW91IGhhdmUgaW5ldC9pcC5oLCBidXQgSVJFX0NBQ0hFIGlzIG5vdCBkZWZpbmVkLiBcCitUaGF0IG1lYW5zIHRoYXQgeW91ciBxdWVyeSB0byBpcFJvdXRlIE1JQiBjb3VsZCBnZW5lcmF0ZSBvdmVyIDIwayByZXN1bHRzISBcCitBbmQgdGhpcyBjYW4gYmUgdmVyeSBzbG93Ll0pCisgICAgICAgIGZpCisgICAgZmkgICAgICAgICAjICJ0ZXN0ICRhY19pbmV0X2lwX2ggPSB5ZXMiCisgICAgOzsKK2VzYWMKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19wcm9ncwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGRiYzcxCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX29zX3Byb2dzCkBAIC0wLDAgKzEsMzk3IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIHByb2dyYW1zCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTaGVsbCBjaGVja3M6CisjIworCisjICAgICAgIENoZWNrIGZvciAnc2gnIG92ZXJmbG93ICAgICAgICAgICAgICAgICAgICAgICAgIChIUC1VWCkKKyMgICAgICAgICAodGFrZW4gZnJvbSBQZXJsJ3MgY29uZmlndXJlIHNjcmlwdCkKKyMKK0FDX01TR19DSEVDS0lORyhbaWYgSSBuZWVkIHRvIGZlZWQgbXlzZWxmIHRvIGtzaF0pCitpZiB0ZXN0IC1mIC9ocC11eCAtYSAtZiAvYmluL2tzaDsgdGhlbgorICBpZiAoUEFUSD0uOyBhbGlhcyAteCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgQUNfTVNHX1JFU1VMVChubykKKyAgZWxzZQorICAgIEFDX01TR19SRVNVTFQoeWVzKQorICAgIGlmIHRlc3QgIngkMSIgPSAieCI7IHRoZW4KKyAgICAgIGV4ZWMgL2Jpbi9rc2ggJDAKKyAgICBlbHNlCisgICAgICBleGVjIC9iaW4va3NoICQwICIkQCIKKyAgICBmaQorICBmaQorZWxzZQorICBBQ19NU0dfUkVTVUxUKG5vKQorZmkKKworCisjIworIyAgIFN0YW5kYXJkIGFuZCBwYXRoIHByb2dyYW0gY2hlY2tzOgorIyMKKworQUNfUFJPR19FR1JFUAorQUNfUFJPR19HUkVQCitBQ19QUk9HX0lOU1RBTEwKK0FDX1BST0dfTE5fUworQUNfUFJPR19NQUtFX1NFVAorQUNfUFJPR19TRUQKKworQUNfQ0hFQ0tfUFJPR1MoRklORCwgICBmaW5kKQorQUNfQ0hFQ0tfUFJPR1MoV0hPQU1JLCB3aG9hbWkgbG9nbmFtZSwgd2hvYW1pKQorCitBQ19QQVRIX1BST0coQVVUT0NPTkYsICAgIGF1dG9jb25mKQorQUNfUEFUSF9QUk9HKEFVVE9IRUFERVIsICBhdXRvaGVhZGVyKQorQUNfUEFUSF9QUk9HKFtQRVJMUFJPR10sICBwZXJsKQorQUNfUEFUSF9QUk9HKFtQU1BST0ddLCAgICBwcykKK0FDX1BBVEhfUFJPRyhbUFlUSE9OUFJPR10scHl0aG9uKQorCitBQ19QQVRIX1BST0coW1VOQU1FUFJPR10sIHVuYW1lKQorQUNfREVGSU5FX1VOUVVPVEVEKFVOQU1FUFJPRywiJFVOQU1FUFJPRyIsIFtXaGVyZSBpcyB0aGUgdW5hbWUgY29tbWFuZF0pCisKK2lmIHRlc3QgIngkYWNfY3ZfcHJvZ19BVVRPQ09ORiIgPSAieCI7IHRoZW4KKwlBVVRPQ09ORj0iOiIKKwlBQ19TVUJTVChBVVRPQ09ORikKK2ZpCitpZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfQVVUT0hFQURFUiIgPSAieCI7IHRoZW4KKwlBVVRPSEVBREVSPSI6IgorCUFDX1NVQlNUKEFVVE9IRUFERVIpCitmaQorCitNQUtFPSR7TUFLRS0ibWFrZSJ9CiskTUFLRSAtdiAtZiAvZGV2L251bGwgMj4vZGV2L251bGwgfCAkR1JFUCBHTlUgPi9kZXYvbnVsbAoraGF2ZV9nbnVfbWFrZT0kPworCisKKyMjCisjICAgQ29tcGlsYXRpb24tcmVsYXRlZCBwcm9ncmFtIGNoZWNrczoKKyMjCisKK0FDX0xBTkcoW0NdKQorQUNfUFJPR19DQworQUNfUFJPR19DUFAKK0xJTktDQz0ke0xJTktDQy0iJENDIn0KK0FDX1NVQlNUKExJTktDQykKKworQUNfQUlYCitBQ19DX0NPTlNUCitBQ19DX0lOTElORQorCisjICAgICAgIGxpYnRvb2wgc3R1ZmYgZm9yIHNoYXJlZC9zdGF0aWMgbGlicmFyaWVzLgorIworTFRfUFJFUkVRKFsyLjIuNl0pCitMVF9JTklUKFt3aW4zMi1kbGxdKQorQUNfU1VCU1QoTElCVE9PTF9ERVBTKQorCisKKyMjCisjICAgQnVpbGQgZW52aXJvbm1lbnQ6CisjIworCisjICAgZGV2ZWxvcGVyIGJ1aWxkIAorIyAgICAgICAoZW5hYmxlZCBieSBkZWZhdWx0IHdoZW4gYnVpbGRpbmcgZnJvbSBTVk4gY2hlY2tvdXQpCisjCitpZiB0ZXN0ICJ4JGRldmVsb3BlciIgIT0gInhubyIgLWEgLWYgJHNyY2Rpci9yZW1vdmUtZmlsZXM7IHRoZW4KKyAgICBkZXZlbG9wZXI9InllcyIKK2ZpCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBkZXZlbG9wZXIgZ2NjIGZsYWdzXSkKK2lmIHRlc3QgIngkZGV2ZWxvcGVyIiA9ICJ4eWVzIiAtYSAieCRHQ0MiID0gInh5ZXMiOyB0aGVuCisKKyAgICAjICAgICAgIFdXV1hYWCAtIHN0cmljdCB0eXBlIGNoZWNraW5nCisgICAgIworICAgIERFVkZMQUdTPSItV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzIC1Xd3JpdGUtc3RyaW5ncyAtV2Nhc3QtcXVhbCIKK2Vsc2UKKyAgICBERVZGTEFHUz0iIgorZmkKK0FDX01TR19SRVNVTFQoJERFVkZMQUdTKQorQUNfU1VCU1QoREVWRkxBR1MpCisKKworIyAgIGJ1aWxkaW5nIG91dHNpZGUgc291cmNlIGRpcmVjdG9yeQorIworIyAgICAgICBhKSBlbnN1cmUgYnVpbGQgaW5jbHVkZSBwYXRocyBhcmUgYmVmb3JlIHNvdXJjZQorIyAgICAgICBiKSBlbnN1cmUgR05VIG1ha2UgdXNlcyAndnBhdGgnIGluc3RlYWQgb2YgJ1ZQQVRIJworIworTk9OX0dOVV9WUEFUSD0iVlBBVEggPSIKK0dOVV92cGF0aD0iI3ZwYXRoIgorCisjICAgICAgIGRlZmluZSBpbmNsdWRlIHBhdGhzIHJlbGF0aXZlIHRvIHRvcF9zcmNkaXIKKyMgICAgICAgdHdlYWsgaW5jbHVkZXMgaWYgd2UncmUgYnVpbGRpbmcgb3V0c2lkZSBvZiB0aGUgc291cmNlIGRpcgorIworaWYgdGVzdCAieCRzcmNkaXIiID0gInguIjsgdGhlbgorICAgIFRPUF9JTkNMVURFUz1TUkNfVE9QX0lOQ0xVREVTCisgICAgU05NUExJQl9JTkNMVURFUz1TUkNfU05NUExJQl9JTkNMVURFUworICAgIEFHRU5UX0lOQ0xVREVTPVNSQ19BR0VOVF9JTkNMVURFUworICAgIEhFTFBFUl9JTkNMVURFUz1TUkNfSEVMUEVSX0lOQ0xVREVTCisgICAgTUlCR1JPVVBfSU5DTFVERVM9U1JDX01JQkdST1VQX0lOQ0xVREVTCitlbHNlCisgICAgVE9QX0lOQ0xVREVTPUJMRF9UT1BfSU5DTFVERVMKKyAgICBTTk1QTElCX0lOQ0xVREVTPUJMRF9TTk1QTElCX0lOQ0xVREVTCisgICAgQUdFTlRfSU5DTFVERVM9QkxEX0FHRU5UX0lOQ0xVREVTCisgICAgSEVMUEVSX0lOQ0xVREVTPUJMRF9IRUxQRVJfSU5DTFVERVMKKyAgICBNSUJHUk9VUF9JTkNMVURFUz1CTERfTUlCR1JPVVBfSU5DTFVERVMKKyAgICBpZiB0ZXN0ICRoYXZlX2dudV9tYWtlIC1lcSAwIDsgdGhlbgorICAgICAgICBOT05fR05VX1ZQQVRIPSIjVlBBVEggPSIKKyAgICAgICAgR05VX3ZwYXRoPSJ2cGF0aCIKKyAgICBmaQorZmkKK0FDX1NVQlNUKFRPUF9JTkNMVURFUykKK0FDX1NVQlNUKFNOTVBMSUJfSU5DTFVERVMpCitBQ19TVUJTVChBR0VOVF9JTkNMVURFUykKK0FDX1NVQlNUKEhFTFBFUl9JTkNMVURFUykKK0FDX1NVQlNUKE1JQkdST1VQX0lOQ0xVREVTKQorQUNfU1VCU1QoR05VX3ZwYXRoKQorQUNfU1VCU1QoTk9OX0dOVV9WUEFUSCkKKworCisjIworIyAgIFN5c3RlbS1yZWxhdGVkIGNvbXBpbGF0aW9uIGNoZWNrczoKKyMjCisKKyMgICAgICAgV2hhdCBzeXN0ZW0gYXJlIHdlIGJ1aWxkaW5nIGZvcgorIworQUNfQ0FOT05JQ0FMX1RBUkdFVAorY2hhbmdlcXVvdGUoLCApCitQQVJUSUFMVEFSR0VUT1M9YGVjaG8gJHRhcmdldF9vcyB8IHNlZCAncy9bLS5fXS4qLy8nYAorY2hhbmdlcXVvdGUoWywgXSkKK0FDX01TR19DQUNIRV9BREQoQnVpbGRpbmcgZm9yOiAgICAgICAgICAgICAgICRQQVJUSUFMVEFSR0VUT1MpCisKKworIworIyAgICBXaGV0aGVyIG9yIG5vdCBDeWd3aW4ncyBsZCByZWNvZ25pemVzIHRoZSBmbGFnIC1uby11bmRlZmluZWQuIAorIworCitjYXNlIHgkdGFyZ2V0X29zIGluCit4Y3lnd2luKikKKyAgc2F2ZWRfTERGTEFHUz0kTERGTEFHUworCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgbGlua2VyIHN1cHBvcnRzIC1uby11bmRlZmluZWRdKQorICBMREZMQUdTPSIkc2F2ZWRfTERGTEFHUyAtV2wsLW5vLXVuZGVmaW5lZCIKKyAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAorICAgICAgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbeWVzXSk7IGRubAorICAgICAgICAgICAgICAgICAgTERfTk9fVU5ERUZJTkVEPS1uby11bmRlZmluZWRdLAorICAgICAgICAgICAgICAgICBbQUNfTVNHX1JFU1VMVChbbm9dKV0pCisgIAorICBMREZMQUdTPSIkc2F2ZWRfTERGTEFHUyIKKyAgOzsKK2VzYWMKKworQUNfU1VCU1QoTERfTk9fVU5ERUZJTkVEKQorCisKKyMKKyMgICBTb2NrZXQgbGlicmFyeTogZWl0aGVyICdkZWZhdWx0JyAobm9uLU1pbkdXKSBvciAnd2luc29jazInIChNaW5HVykuCisjCitjYXNlIHgkdGFyZ2V0X29zIGluCisgIHhtaW5ndyopCisgICAgd2l0aF9zb2NrbGliPXdpbnNvY2syOzsKKyAgKikKKyAgICB3aXRoX3NvY2tsaWI9ZGVmYXVsdDs7Citlc2FjCisKKworIyAgIENoZWNrIHN5c3RlbSBkZWZpbmUgYmVoYXZpb3VyCisjICAgICAgIERvZXMgIi1VeCAtRHg9eCIgd29yayBhcyBleHBlY3RlZD8KKyMKK0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0byB1bi1kZWZpbmUgdGFyZ2V0IHN5c3RlbSB0b2tlbiAoYmVmb3JlIHJlZGVmaW5pbmcpXSkKK09MRF9DUFBGTEFHUz0iJENQUEZMQUdTIgorQ1BQRkxBR1M9Ii1VJFBBUlRJQUxUQVJHRVRPUyAtRCRQQVJUSUFMVEFSR0VUT1M9JFBBUlRJQUxUQVJHRVRPUyIKKworQUNfRUdSRVBfQ1BQKHllcywKKyAgICBbWworI2lmZGVmICRQQVJUSUFMVEFSR0VUT1MKK3llcworI2VuZGlmCisgICAgXV0sCisgICAgWyAgUEFSVElBTFRBUkdFVEZMQUdTPSItVSRQQVJUSUFMVEFSR0VUT1MgLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCisgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSldLAorICAgIFsgIFBBUlRJQUxUQVJHRVRGTEFHUz0iLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCisgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKV0pCitDRkxBR1M9IiRDRkxBR1MgJFBBUlRJQUxUQVJHRVRGTEFHUyIKK0NQUEZMQUdTPSIkT0xEX0NQUEZMQUdTIgorCisKKyMgICAgICAgRGV0ZXJtaW5lIGFwcHJvcHJpYXRlIDxuZXQtc25tcC9zeXN0ZW0ve29zfS5oPiBpbmNsdWRlCisjCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXN0ZW0gaW5jbHVkZSBmaWxlXSkKK2NoYW5nZXF1b3RlKCwgKQorZmlsZWJhc2U9JHRhcmdldF9vcworIyBpZ25vcmUgYmluYXJ5IGZvcm1hdCBpbmRpY2F0aW9uCitmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCAkU0VEICdzL2VsZi8vJ2AKK2ZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvYW91dC8vJ2AKK2ZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvZWNvZmYvLydgCitmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCAkU0VEICdzL2NvZmYvLydgCit3aGlsZSB0ZXN0ICJ4JGZpbGViYXNlIiAhPSAieCRsYXN0IiAtYSAhIC1mICRzcmNkaXIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vJGZpbGViYXNlLmgKK2RvCisgICAgbGFzdD0kZmlsZWJhc2UKKyAgICBmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCAkU0VEICdzL1stLl9dW14tLl9dKiQvLydgCisgICAgaWYgdGVzdCAieCRmaWxlYmFzZSIgPSAieCRsYXN0IjsgdGhlbgorCWZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvWzAtOV0qJC8vJ2AKKyAgICBmaQorZG9uZQorCitpZiB0ZXN0ICJ4JGZpbGViYXNlIiA9ICJ4JGxhc3QiOyB0aGVuCisgICAgZmlsZWJhc2U9ImdlbmVyaWMiCitmaQorYWNfY3ZfTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFPSJuZXQtc25tcC9zeXN0ZW0vJGZpbGViYXNlLmgiCitjaGFuZ2VxdW90ZShbLCBdKQorQUNfTVNHX1JFU1VMVCgkYWNfY3ZfTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFKQorQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRSwgIiRhY19jdl9ORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUiKQorCisKKyMgICAgICAgRGV0ZXJtaW5lIGFwcHJvcHJpYXRlIDxuZXQtc25tcC9tYWNoaW5lL3tjcHV9Lmg+IGluY2x1ZGUKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIG1hY2hpbmUtdHlwZSBpbmNsdWRlIGZpbGVdKQorY2hhbmdlcXVvdGUoLCApCitmaWxlYmFzZT0kdGFyZ2V0X2NwdQord2hpbGUgdGVzdCAieCRmaWxlYmFzZSIgIT0gIngkbGFzdCIgLWEgISAtZiAkc3JjZGlyL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS8kZmlsZWJhc2UuaAorZG8KKyAgICBsYXN0PSRmaWxlYmFzZQorICAgIGZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8ICRTRUQgJ3MvWy0uX11bXi0uX10qJC8vJ2AKK2RvbmUKKworaWYgdGVzdCAieCRmaWxlYmFzZSIgPSAieCRsYXN0IjsgdGhlbgorICAgIGZpbGViYXNlPSJnZW5lcmljIgorZmkKK2FjX2N2X05FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEU9Im5ldC1zbm1wL21hY2hpbmUvJGZpbGViYXNlLmgiCitjaGFuZ2VxdW90ZShbLCBdKQorQUNfTVNHX1JFU1VMVChbJGFjX2N2X05FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEVdKQorQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEUsICIkYWNfY3ZfTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRSIpCisKKworIyMKKyMgICBQbGF0Zm9ybS1zcGVjaWZpYyBjb21waWxhdGlvbiBjaGVja3M6CisjIworCisjICAgUHJlcHJvY2Vzc29yIGNoZWNrczoKKyMKKworIyAgICAgICBNb3JlIHNlbnNpYmxlIHN5c3RlbSBpZGVudGlmaWVyICAgICAgICAgICAgICAgICAoTWluR1cpCisjCitpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgorCUNGTEFHUz0iJENGTEFHUyAtRG1pbmd3MzIiCitmaQorCisjICAgICAgIEhhbmRsZSAuaW4gZmlsZSBleHRlbnNpb24gICAgICAgICAgICAgICAgICAgICAgIChHQ0MpCisjCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBhZGRpdGlvbmFsIGNwcCBmbGFnc10pCitpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyIgLWEgIngkQ1BQIiA9ICJ4JENDIC1FIjsgdGhlbgorICAgIEVYVFJBQ1BQRkxBR1M9Ii14IGMiCitlbHNlCisgICAgRVhUUkFDUFBGTEFHUz0iIgorZmkKKworIyAgICAgICBTb2xhcmlzIGV4dHJhIENQUCBmbGFncyAgICAgICAgICAgICAgICAgICAgICAgICAoU29sYXJpcykKKyMKK2lmIHRlc3QgIngkR0NDIiAhPSAieHllcyI7IHRoZW4KKyAgICBjYXNlICR0YXJnZXRfb3MgaW4KKyAgICAgICAgc29sYXJpcyopIEVYVFJBQ1BQRkxBR1M9IiRFWFRSQUNQUEZMQUdTIC1YcyIgOzsKKyAgICBlc2FjCitmaQorCitBQ19TVUJTVChFWFRSQUNQUEZMQUdTKQorQUNfTVNHX1JFU1VMVCgkRVhUUkFDUFBGTEFHUykKKworCisjICAgQ29tcGlsZXIgY2hlY2tzOgorIworCitBQ19QQVRIX1BST0coW0NDUEFUSF0sJENDKQorY2FzZSAkdGFyZ2V0X29zIGluCisgICAgYnNkaSopCisgICAgICAgICMgICBDaGVjayBmb3IgYnVuZGxlZCBjb21waWxlciAgICAgICAgICAgICAgICAgIChCU0RpKQorICAgICAgICAjCisJaWYgdGVzdCAieCRDQ1BBVEgiID0gIngvdXNyL3VjYi9jYyIgLW8gIngkQ0NQQVRIIiA9ICJ4L3Vzci9iaW4vY2MiOyB0aGVuCisJICAgIEFDX01TR19FUlJPUihbCisKKyoqKiBUaGUgQlNESSAvdXNyL3VjYi9jYyBjb21waWxlciBkb2VzIG5vdCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLiAgCisqKiogUGxlYXNlIHJ1biBjb25maWd1cmUgd2l0aCAtLXdpdGgtY2M9Z2NjCitdKQorCWZpCisgICAgOzsKKyAgICBzb2xhcmlzKikKKyAgICAgICAgIyAgIENoZWNrIGZvciBidW5kbGVkIGNvbXBpbGVyICAgICAgICAgICAgICAgICAgKFNvbGFyaXMpCisgICAgICAgICMKKwlpZiB0ZXN0ICJ4JENDUEFUSCIgPSAieC91c3IvdWNiL2NjIjsgdGhlbgorCSAgICBBQ19NU0dfRVJST1IoWworCisqKiogVGhlIHNvbGFyaXMgL3Vzci91Y2IvY2MgY29tcGlsZXIgZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgcGFja2FnZS4gIAorKioqIFBsZWFzZSBwdXQgYSBkaWZmZXJlbnQgY29tcGlsZXIgaW4geW91ciBwYXRoIGZpcnN0IG9yIHJ1bgorKioqIGNvbmZpZ3VyZSB3aXRoIC0td2l0aC1jYz1YWCwgd2hlcmUgWFggaXMgdGhlIGNvbXBpbGVyIHlvdSB3YW50IHRvIHVzZS4KK10pCisJZmkKKyAgICA7OworZXNhYworCisKKyMgICBDb21waWxlciBmbGFnczoKKyMKKworIyBUaGUgTmV0LVNOTVAgc291cmNlIGNvZGUgaXMgbm90IHN0cmljdC1hbGlhc2luZyBzYWZlLCBzbyBhZGQKKyMgLWZuby1zdHJpY3QtYWxpYXNpbmcgdG8gJENGTEFHUyBpZiB0aGUgY29tcGlsZXIgc3VwcG9ydHMgaXQuCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tc3RyaWN0LWFsaWFzaW5nXSkKK25ldHNubXBfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCitDRkxBR1M9Ii1mbm8tc3RyaWN0LWFsaWFzaW5nICRDRkxBR1MiCitBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLCBbXSldLCBbQUNfTVNHX1JFU1VMVChbeWVzXSldLCBbCisgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgQ0ZMQUdTPSIkbmV0c25tcF9zYXZlX0NGTEFHUyIKK10pCisKKworIyAgIExpbmtlciBjaGVja3M6CisjCisgICAgCitjYXNlICR0YXJnZXRfb3MgaW4KKyAgICBhaXg0LjIqfGFpeDQuMyp8YWl4NSp8YWl4NiopCisgICAgICAgICMgICBSdW50aW1lIGxpbmtpbmcgZmxhZ3MgICAgICAgICAgICAgICAgICAgICAgIChBSVgpCisgICAgICAgICMKKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGF0IGxpbmtlciBmbGFncyB0byBhZGQgdG8gZW5hYmxlIHJ1bnRpbWUgbGlua2luZyBvbiBBSVhdKQorICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KKyAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCisgICAgICAgICAgICAgICAgbmV0c25tcF9haXhfcnVudGltZWxpbmtpbmdfZmxhZ3Nfb2s9eWVzCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICAgICAgaWYgdGVzdCAiWCRuZXRzbm1wX2FpeF9ydW50aW1lbGlua2luZ19mbGFnc19vayIgIT0gIlh5ZXMiOyB0aGVuCisJICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgorCSAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLVdsLC1icnRsIgorCSAgICBlbHNlCisgICAgICAgICAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLWJydGwiCisJICAgIGZpCisgICAgICAgICAgICBMREZMQUdTPSIkbmV0c25tcF9haXhfbGRmbGFncyAkTERGTEFHUyIKKwkgICAgQUNfTVNHX1JFU1VMVCgkbmV0c25tcF9haXhfbGRmbGFncykKKwllbHNlCisJICAgIEFDX01TR19SRVNVTFQoW25vbmVdKQorCWZpCisJOzsKKworICAgIGRhcndpbjgqfGRhcndpbjkqKQorICAgICAgICAjICAgRmxhdCBOYW1lc3BhY2UgbGlua2luZyAgICAgICAgICAgICAgICAgICAgICAoTWFjIE9TL1gpCisgICAgICAgICMKKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGRhcndpbiBsZCBtaWdodCBuZWVkIC1mbGF0X25hbWVzcGFjZV0pCisJaWYgdGVzdCAteiAiJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCI7IHRoZW4KKwkJTERGTEFHUz0iLWZsYXRfbmFtZXNwYWNlICRMREZMQUdTIgorCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQorCWVsc2UKKwkJQUNfTVNHX1JFU1VMVChbbm9dKQorCWZpCisJOzsKKworICAgICopCisgICAgICAgIDs7Citlc2FjCisKKworCisjIworIyAgIE5vbi1wcm9ncmFtL2NvbXBpbGF0aW9uIGNoZWNrczoKKyMjCisKKyMgICAgICAgU3Vic3RpdHV0ZSB2ZXJzaW9uIG51bWJlci4KKyMKK0FDX1NVQlNUKFZFUlNJT04sICRQQUNLQUdFX1ZFUlNJT04pCitBQ19NU0dfQ0FDSEVfQUREKE5ldC1TTk1QIFZlcnNpb246ICAgICAgICAgICAkUEFDS0FHRV9WRVJTSU9OKQorCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMgYi9jb25maWd1cmUuZC9jb25maWdfb3Nfc3RydWN0X21lbWJlcnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNhNzc3YgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19vc19zdHJ1Y3RfbWVtYmVycwpAQCAtMCwwICsxLDcwMyBAQAorIyAtKi0gYXV0b2NvbmYgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMKKyMgQ2hlY2tzIGZvciBkYXRhIHN0cnVjdHVyZXMgJiBtZW1iZXJzCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTaW1wbGUgY2hlY2tzOgorIyMKKworIyAgICAgICBzdHJ1Y3QgYXJwaGQKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBhcnBoZC5hdF9uZXh0XSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaW5jbHVkZSA8bmV0L2lmLmg+CisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSUZfRVRIRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyNlbmRpZgorICAgIF1dKQorCisKKyMgICAgICAgc3RydWN0IGRlc19rc19zdHJ1Y3QKKyMgICAgICAgICAoJ3dlYWtfa2V5JyBpbmRpY2F0ZXMgb2xkZXIgdmVyc2lvbiBvZiBPcGVuU1NMKQorIyAgIExpYnJhcnk6CisjCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9vcGVuc3NsX2Rlc19oIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgZGVzX2tzX3N0cnVjdC53ZWFrX2tleV0sLCxbWworI2lmZGVmIEhBVkVfT1BFTlNTTF9ERVNfSAorI2luY2x1ZGUgPG9wZW5zc2wvZGVzLmg+CisjZW5kaWYKKyAgICBdXSkKK2ZpCisKKyMgICAgICAgc3RydWN0IGRpcmVudAorIyAgICAgICAgIChzZWUgYWxzbyBBQ19TVFJVQ1RfRElSRU5UX0RfVFlQRSkKKyMgICBMaWJyYXJ5OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGRpcmVudC5kX3R5cGVdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX0RJUkVOVF9ICisjaW5jbHVkZSA8ZGlyZW50Lmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgZXRodG9vbF9jbWQKKyMKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2xpbnV4X2V0aHRvb2xfaCIgPSAieHllcyIgOyB0aGVuCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgZXRodG9vbF9jbWQuc3BlZWRfaGldLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAorI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KKyNlbmRpZgorICAgIF1dKQorZmkKKworIyAgICAgICBzdHJ1Y3QgaXBzdGF0CisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaXBzdGF0Lmlwc19jYW50ZnJhZywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX2RlbGl2ZXJlZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX2ZyYWdkcm9wcGVkLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfZnJhZ21lbnRlZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX2xvY2Fsb3V0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlwc3RhdC5pcHNfbm9wcm90bywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX25vcm91dGUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19vZHJvcHBlZCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpcHN0YXQuaXBzX29mcmFnbWVudHMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19yZWFzc2VtYmxlZF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorIworIyAgIE5vdC1Vc2VkOgorQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IGlwc3RhdC5pcHNfY2FudGZvcndhcmQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaXBzdGF0Lmlwc19mcmFndGltZW91dF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBtYnN0YXQKKyMgICBOb3QtVXNlZDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBtYnN0YXQubV9jbHVzdGVycywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBtYnN0YXQubV9jbGZyZWUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgbWJzdGF0Lm1fbWJ1ZnNdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19NQlVGX0gKKyNpbmNsdWRlIDxzeXMvbWJ1Zi5oPgorI2VuZGlmCisgICAgXV0pCisKKyMJc3RydWN0IHV2bWV4cAorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHV2bWV4cC5wZ3N3YXBpbl0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2luY2x1ZGUgPHV2bS91dm1fZXh0ZXJuLmg+CisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IG5saXN0CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgbmxpc3Qubl92YWx1ZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBubGlzdDY0Lm5fdmFsdWVdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX05MSVNUX0gKKyNpbmNsdWRlIDxubGlzdC5oPgorI2VuZGlmCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHNpZ2FjdGlvbgorIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHNpZ2FjdGlvbi5zYV9zaWdhY3Rpb25dLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TSUdOQUxfSAorI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBzb2NrYWRkcgorIyAgIExpYnJhcnk6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc29ja2FkZHIuc2FfbGVuLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHNvY2thZGRyLnNhX3VuaW9uLnNhX2dlbmVyaWMuc2FfZmFtaWx5MiwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlLnNzX2ZhbWlseSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9zdG9yYWdlLl9fc3NfZmFtaWx5XSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZWxpZiBkZWZpbmVkKEhBVkVfV0lOU09DSzJfSCkKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbjYgICAgIChzZWUgUkZDIDI1NTMpCisjICAgTGlicmFyeToKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzb2NrYWRkcl9pbjYuc2luNl9zY29wZV9pZF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBtc2doZHIKKyMgICBMaWJyYXJ5OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IG1zZ2hkci5tc2dfY29udHJvbF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1dJTlNPQ0syX0gKKyNpbmNsdWRlIDx3aW5zb2NrMi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9XUzJUQ1BJUF9ICisjaW5jbHVkZSA8d3MydGNwaXAuaD4KKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCBzdGF0ZnMKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0ZnMuZl9mYXZhaWwsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdGZzLmZfZmZyZWUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdGZzLmZfZmlsZXMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdGZzLmZfZnJzaXplXSwsLFsKKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWYgSEFWRV9TWVNfU1RBVEZTX0gKKyNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICisjaW5jbHVkZSA8c3lzL21vdW50Lmg+CisjZW5kaWYgCisgICAgXV0pCisKKyMgICAgICAgc3RydWN0IHN0YXR2ZnMKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0dmZzLmZfZmlsZXMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdHZmcy5mX2Zyc2l6ZSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0dmZzLm1udF9kaXJdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZiBIQVZFX1NZU19TVEFURlNfSAorI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NUQVRWRlNfSAorI2luY2x1ZGUgPHN5cy9zdGF0dmZzLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3Qgc3dkZXZ0CisjICAgTm90LVVzZWQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3dkZXZ0LnN3X25ibGtzZW5hYmxlZF0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX0NPTkZfSAorI2luY2x1ZGUgPHN5cy9jb25mLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgdGNwc3RhdAorIyAgIEFnZW50OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHRjcHN0YXQudGNwX3Jjdm1lbWRyb3BdLCwsWworICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQorICAgIFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FT1VUX0gKKyNpbmNsdWRlIDxzeXMvdGltZW91dC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRJTkVUX1RDUF9ICisjaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUSU5FVF9UQ1BfVElNRVJfSAorI2luY2x1ZGUgPG5ldGluZXQvdGNwX3RpbWVyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVElORVRfVENQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC90Y3BfdmFyLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgdG0KKyMgICBMaWJyYXJ5OgorIworQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHRtLnRtX2dtdG9mZl0sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIFRJTUVfV0lUSF9TWVNfVElNRQorIyBpbmNsdWRlIDxzeXMvdGltZS5oPgorIyBpbmNsdWRlIDx0aW1lLmg+CisjZWxzZQorIyBpZiBIQVZFX1NZU19USU1FX0gKKyMgIGluY2x1ZGUgPHN5cy90aW1lLmg+CisjIGVsc2UKKyMgIGluY2x1ZGUgPHRpbWUuaD4KKyMgZW5kaWYKKyNlbmRpZgorICAgIF1dKQorCisjICAgICAgIHN0cnVjdCB1ZHBzdGF0CisjICAgQWdlbnQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgdWRwc3RhdC51ZHBzX2Rpc2NhcmQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX2Z1bGxzb2NrLAorICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19ub3BvcnQsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdWRwc3RhdC51ZHBzX25vcG9ydGJjYXN0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHVkcHN0YXQudWRwc19vcGFja2V0c10sLCxbCisgICAgQUNfSU5DTFVERVNfREVGQVVMVCgpCisgICAgWworI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAorI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICisjaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+CisjZW5kaWYKKyAgICBdXSkKKworCisKKyMjCisjICAgaWZuZXQtcmVsYXRlZCBjaGVja3M6CisjIworCisjICAgICAgIERvZXMgInN0cnVjdCBpZm5ldCIgbmVlZCBfS0VSTkVMIGRlZmluZWQ/ICAgICAgIChJcml4KQorIworQUNfQ0FDSEVfQ0hFQ0soW2lmIF9LRVJORUwgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3IgaWZfbXR1XSwKKyAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF0sCisgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9dW5rbm93bgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICisjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgorI2VuZGlmCisgICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKSwKKyAgICAgICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMPW5vXSkKKyAgICAgICAgIGlmIHRlc3QgIiRhY19jdl9JRk5FVF9ORUVEU19LRVJORUwiID0gdW5rbm93biA7IHRoZW4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbCisjZGVmaW5lIF9LRVJORUwgMQorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pLAorICAgICAgICAgICAgIFthY19jdl9JRk5FVF9ORUVEU19LRVJORUw9eWVzXSkKKyAgICAgICAgIGZpXSkKKworaWYgdGVzdCAieCRhY19jdl9JRk5FVF9ORUVEU19LRVJORUwiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfREVGSU5FKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMLCAxLAorICAgICAgICBbaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMIGRlZmluZWRdKQorZmkKKworIyAgICAgICBEb2VzICJzdHJ1Y3QgaWZuZXQiIG5lZWQgX0tFUk5FTF9TVFJVQ1RVUkVTIGRlZmluZWQ/ICAgICAgIChEcmFnb25GbHkgMykKKyMKK0FDX0NBQ0hFX0NIRUNLKFtpZiBfS0VSTkVMX1NUUlVDVFVSRVMgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3IgaWZfbXR1XSwKKyAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTXSwKKyAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTPXVua25vd24KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oWworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICAgICAgICAgICBdLCBbW3N0cnVjdCBpZm5ldCB0ZXN0OyB0ZXN0LmlmX210dSA9IDA7XV0pXSwKKyAgICAgICAgICAgICBbYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVM9bm9dKQorICAgICAgICAgaWYgdGVzdCAiJGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTIiA9IHVua25vd24gOyB0aGVuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKFsKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX0gKKyNpbmNsdWRlIDxuZXQvaWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICisjaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgorI2VuZGlmCisgICAgICAgICAgICAgXSwgW1tzdHJ1Y3QgaWZuZXQgdGVzdDsgdGVzdC5pZl9tdHUgPSAwO11dKV0sCisgICAgICAgICAgICAgW2FjX2N2X0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTPXllc10pCisgICAgICAgICBmaV0pCisKK2lmIHRlc3QgIngkYWNfY3ZfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMiID0gInh5ZXMiOyB0aGVuCisgICAgQUNfREVGSU5FKE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMsIDEsCisgICAgICAgIFtpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUxfU1RSVUNUVVJFUyBkZWZpbmVkXSkKK2ZpCisKKworIyAgICAgICBzdHJ1Y3QgaWZhZGRyCisjICAgTm90LVVzZWQ6CisjCitBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgaWZhZGRyLmlmYV9uZXh0XSwsLFsKKyAgICBbCisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMgMQorI2VuZGlmCisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKKyNkZWZpbmUgS0VSTkVMCisjaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKKyNkZWZpbmUgX0tFUk5FTCAxCisjZW5kaWYKKyNlbmRpZgorICAgIF0KKyAgICBBQ19JTkNMVURFU19ERUZBVUxUKCkKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyAgICBdXSkKKworIyAgICAgICBzdHJ1Y3QgaWZuZXQKKyMgICAgICAgICAoQnJva2VuIG9uIEZyZWVCU0QgLSAjZGVmaW5lJ2QgaW4gPG5ldC9pZi5oPikKKyMgICBBZ2VudDogICAoP29yIE5vdC1Vc2VkPykKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBpZm5ldC5pZl9hZGRybGlzdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9hZGRyaGVhZC50cWhfZmlyc3QsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfYmF1ZHJhdGUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX2lieXRlcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9pbWNhc3RzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX2lxZHJvcHMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfbGFzdGNoYW5nZS50dl9zZWMsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfbGFzdGNoYW5nZS50dl9uc2VjLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX210dSwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9ub3Byb3RvLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX29ieXRlcywKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBpZm5ldC5pZl9vbWNhc3RzLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX3NwZWVkLAorICAgICAgICAgICAgICAgICAgc3RydWN0IGlmbmV0LmlmX3R5cGUsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgaWZuZXQuaWZfeG5hbWVdLCwsW1sKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAorI2RlZmluZSBLRVJORUwKKyNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2RlZmluZSBfS0VSTkVMIDEKKyNlbmRpZgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSAorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19USU1FX0gKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfSAorI2luY2x1ZGUgPG5ldC9pZi5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKKyNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX1NZU19RVUVVRV9ICisjaW5jbHVkZSA8c3lzL3F1ZXVlLmg+CisjZW5kaWYKKyNpZmRlZiBsaW51eAorc3RydWN0IGlmbmV0IHsKKwljaGFyCSppZl9uYW1lOwkJLyogbmFtZSwgZS5nLiAiZW4iIG9yICJsbyIgKi8KKwlzaG9ydAlpZl91bml0OwkJLyogc3ViLXVuaXQgZm9yIGxvd2VyIGxldmVsIGRyaXZlciAqLworCXNob3J0CWlmX210dTsJCQkvKiBtYXhpbXVtIHRyYW5zbWlzc2lvbiB1bml0ICovCisJc2hvcnQJaWZfZmxhZ3M7CQkvKiB1cC9kb3duLCBicm9hZGNhc3QsIGV0Yy4gKi8KKwlpbnQJaWZfbWV0cmljOwkJLyogcm91dGluZyBtZXRyaWMgKGV4dGVybmFsIG9ubHkpICovCisJY2hhciAgICBpZl9od2FkZHIgWzZdOwkJLyogZXRoZXJuZXQgYWRkcmVzcyAqLworCWludAlpZl90eXBlOwkJLyogaW50ZXJmYWNlIHR5cGU6IDE9Z2VuZXJpYywKKwkJCQkJICAgMjg9c2xpcCwgZXRoZXI9NiwgbG9vcGJhY2s9MjQgKi8KKwlpbnQJaWZfc3BlZWQ7CQkvKiBpbnRlcmZhY2Ugc3BlZWQ6IGluIGJpdHMvc2VjICovCisKKwlzdHJ1Y3Qgc29ja2FkZHIgaWZfYWRkcjsJLyogaW50ZXJmYWNlJ3MgYWRkcmVzcyAqLworCXN0cnVjdCBzb2NrYWRkciBpZnVfYnJvYWRhZGRyOwkvKiBicm9hZGNhc3QgYWRkcmVzcyAqLworCXN0cnVjdCBzb2NrYWRkciBpYV9zdWJuZXRtYXNrOyAJLyogaW50ZXJmYWNlJ3MgbWFzayAqLworCisJc3RydWN0CWlmcXVldWUgeworCQlpbnQJaWZxX2xlbjsKKwkJaW50CWlmcV9kcm9wczsKKwl9IGlmX3NuZDsJCQkvKiBvdXRwdXQgcXVldWUgKi8KKwlpbnQJaWZfaWJ5dGVzOwkJLyogb2N0ZXRzIHJlY2VpdmVkIG9uIGludGVyZmFjZSAqLworCWludAlpZl9pcGFja2V0czsJCS8qIHBhY2tldHMgcmVjZWl2ZWQgb24gaW50ZXJmYWNlICovCisJaW50CWlmX2llcnJvcnM7CQkvKiBpbnB1dCBlcnJvcnMgb24gaW50ZXJmYWNlICovCisgICAgICAgIGludCAgICAgaWZfaXFkcm9wczsgICAgICAgICAgICAgLyogaW5wdXQgcXVldWUgb3ZlcnJ1bnMgKi8KKwlpbnQJaWZfb2J5dGVzOwkJLyogb2N0ZXRzIHNlbnQgb24gaW50ZXJmYWNlICovCisJaW50CWlmX29wYWNrZXRzOwkJLyogcGFja2V0cyBzZW50IG9uIGludGVyZmFjZSAqLworCWludAlpZl9vZXJyb3JzOwkJLyogb3V0cHV0IGVycm9ycyBvbiBpbnRlcmZhY2UgKi8KKwlpbnQJaWZfY29sbGlzaW9uczsJCS8qIGNvbGxpc2lvbnMgb24gY3NtYSBpbnRlcmZhY2VzICovCisvKiBlbmQgc3RhdGlzdGljcyAqLworCXN0cnVjdAlpZm5ldCAqaWZfbmV4dDsKK307CisjZW5kaWYKKyAgICBdXSkKKworCisjIworIyAgIHJ0ZW50cnkgc3RydWN0dXJlIGNoZWNrczoKKyMjCisKKyMgQ2hlY2sgc3RydWN0IHJ0ZW50cnkgZm9yIGNvbW1vbiBmaWVsZHMKKyMgICBBZ2VudDoKKyMKK0FDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBydGVudHJ5LnJ0X2RzdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X2hhc2gsCisgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcnRlbnRyeS5ydF9uZXh0LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfcmVmY250LAorICAgICAgICAgICAgICAgICAgc3RydWN0IHJ0ZW50cnkucnRfdW5pdCwKKyAgICAgICAgICAgICAgICAgIHN0cnVjdCBydGVudHJ5LnJ0X3VzZV0sLCwKKyAgICBbCisjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWZkZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUxfU1RSVUNUVVJFUworI2RlZmluZSBfS0VSTkVMX1NUUlVDVFVSRVMgMQorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAorI2RlZmluZSBLRVJORUwKKyNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2RlZmluZSBfS0VSTkVMIDEKKyNlbmRpZgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI3VuZGVmIEtFUk5FTAorI3VuZGVmIF9LRVJORUwKKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUX1JPVVRFX0gKKyNpbmNsdWRlIDxuZXQvcm91dGUuaD4KKyNlbmRpZgorICAgIF0pCisKKworIyBDaGVjayBmb3IgQlNEIDQuMyB2cyA0LjQgc3RydWN0IHJ0ZW50cnkKKyMKK0FDX0NBQ0hFX0NIRUNLKFt0eXBlIG9mIHJ0ZW50cnkgc3RydWN0dXJlXSwKKyAgICBbYWNfY3ZfUlRFTlRSWV9UWVBFXSwKKyAgICBbCisgICAgICAgICMgQlNEIDQuNCBjb21wYXRpYmxlIHN0cnVjdHVyZQorICAgICAgICAjICAgICgncnRfbm9kZXMnIGFycmF5KQorICAgICAgICAjCisgICAgICAgIEFDX1RSWV9DT01QSUxFKFsKKyNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICisjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisjZGVmaW5lIF9LRVJORUxfU1RSVUNUVVJFUyAxCisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTAorI2RlZmluZSBLRVJORUwKKyNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQorI2RlZmluZSBfS0VSTkVMIDEKKyNlbmRpZgorI2VuZGlmCisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI3VuZGVmIEtFUk5FTAorI3VuZGVmIF9LRVJORUwKKyNpbmNsdWRlIDxuZXQvcm91dGUuaD4KKyAgICAgICAgXSxbCisKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QKKyNkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKKyNlbmRpZgorCisgIHN0cnVjdCBydGVudHJ5IHJ0OyAKKyAgcnQucnRfbm9kZXNbMF0ucm5fZmxhZ3MgPSAxOworICBydC5ydF9kc3Q7CisgICAgICAgIF0sIGFjX2N2X1JURU5UUllfVFlQRT0iQlNELTQuNCIpCisKKyAgICAgICAgaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gIngiOyB0aGVuCisgICAgICAgICMgQlNEIDQuMyBjb21wYXRpYmxlIHN0cnVjdHVyZQorICAgICAgICAjICAgICgncnRfaGFzaCcpCisgICAgICAgICMKKyAgICAgICAgQUNfVFJZX0NPTVBJTEUoWworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX1NUUlVDVFVSRVMKKyNkZWZpbmUgX0tFUk5FTF9TVFJVQ1RVUkVTIDEKKyNlbmRpZgorI2lmZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisjZGVmaW5lIEtFUk5FTAorI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCisjZGVmaW5lIF9LRVJORUwgMQorI2VuZGlmCisjZW5kaWYKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjdW5kZWYgS0VSTkVMCisjdW5kZWYgX0tFUk5FTAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorICAgICAgICBdLFsKKworc3RydWN0IHJ0ZW50cnkgcnQ7IAorcnQucnRfaGFzaDsKKyAgICAgICAgXSwgYWNfY3ZfUlRFTlRSWV9UWVBFPSJCU0QtNC4zIikKKyAgICAgICAgZmkKKworICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieCI7IHRoZW4KKyAgICAgICAgIyBOZWl0aGVyIEJTRCA0LjMgbm9yIDQuNCBjb21wYXRpYmxlIHN0cnVjdHVyZQorICAgICAgICAjCisgICAgICAgICAgICBhY19jdl9SVEVOVFJZX1RZUEU9InVua25vd24iCisgICAgICAgIGZpCisgICAgXSkKKworaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gInhCU0QtNC40IjsgdGhlbgorICAgIEFDX0RFRklORShSVEVOVFJZXzRfNCwgMSwgW1VzZSBCU0QgNC40IHJvdXRpbmcgdGFibGUgZW50cmllcz9dKQorZmkKKworIyAgICBDaGVjayBmb3Igb3J0ZW50cnkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQWxwaGEpCisjCitpZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieHVua25vd24iOyB0aGVuCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzdHJ1Y3QgcnRlbnRyeV0sCisgICAgICAgIFthY19jdl9zdHJ1Y3RfcnRlbnRyeV0sCisgICAgICAgIFtBQ19FR1JFUF9DUFAob3J0ZW50cnksCisgICAgICAgICAgICBbCisjZGVmaW5lIEtFUk5FTAorI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgorICAgICAgICAgICAgXSwKKyAgICAgICAgICAgIFthY19jdl9zdHJ1Y3RfcnRlbnRyeT1vcnRlbnRyeV0sCisgICAgICAgICAgICBbYWNfY3Zfc3RydWN0X3J0ZW50cnk9cnRlbnRyeSBdKQorICAgICAgICBpZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9ydGVudHJ5IiA9ICJ4cnRlbnRyeSIgOyB0aGVuCisgICAgICAgICAgICAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9InJ0ZW50cnkiCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0ib3J0ZW50cnkiCisgICAgICAgIGZpCisgICAgXSkKK2Vsc2UKKyAgICBSVEVOVFJZX1RZUEU9InJ0ZW50cnkiCisgICAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9InJ0ZW50cnkiCitmaQorCitpZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9ydGVudHJ5IiA9ICJ4IjsgdGhlbgorICAgIGFjX2N2X3N0cnVjdF9ydGVudHJ5PXJ0ZW50cnkKK2ZpCitBQ19ERUZJTkVfVU5RVU9URUQoUlRFTlRSWSxzdHJ1Y3QgJHthY19jdl9zdHJ1Y3RfcnRlbnRyeX0sCisgICAgICAgIFtkZWZpbmUgcnRlbnRyeSB0byBvcnRlbnRyeSBvbiBTWVNWIG1hY2hpbmVzIChhbHBoYXMpXSkKKwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfaXB2Nl90eXBlcyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X2lwdjZfdHlwZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWExYjNmYgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X2lwdjZfdHlwZXMKQEAgLTAsMCArMSwyMjAgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIENoZWNrcyBmb3IgdHlwZXMKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFN0YW5kYXJkIGNoZWNrczoKKyMjCisKK0FDX0NIRUNLX1NJWkVPRihzaG9ydCkKK0FDX0NIRUNLX1NJWkVPRihpbnQpCitBQ19DSEVDS19TSVpFT0YobG9uZykKK0FDX0NIRUNLX1NJWkVPRihsb25nIGxvbmcpCitBQ19DSEVDS19TSVpFT0YoaW50bWF4X3QpCisKK0FDX1RZUEVfSU5UOF9UCitBQ19UWVBFX0lOVDE2X1QKK0FDX1RZUEVfSU5UMzJfVAorQUNfVFlQRV9JTlQ2NF9UCitBQ19UWVBFX0lOVE1BWF9UCitBQ19UWVBFX1VJTlQ4X1QKK0FDX1RZUEVfVUlOVDE2X1QKK0FDX1RZUEVfVUlOVDMyX1QKK0FDX1RZUEVfVUlOVDY0X1QKK0FDX1RZUEVfVUlOVE1BWF9UCitBQ19UWVBFX0lOVFBUUl9UCitBQ19UWVBFX1VJTlRQVFJfVAorCisjIworIyAgIE90aGVyIHR5cGUgY2hlY2tzOgorIyMKKworQUNfQ0hFQ0tfVFlQRVMoW29mZjY0X3RdKQorQUNfQ0hFQ0tfVFlQRVMoW25mZHNfdF0sLCxbI2luY2x1ZGUgPHN5cy9wb2xsLmg+XSkKKworIyAgIFNvbGFyaXMgc3BlY2lmaWMgY2hlY2tzCisjICAgICAgICh0YWtlbiBmcm9tIFBlcmwncyBjb25maWd1cmUgc2NyaXB0KQorIworQUNfQ0hFQ0tfVFlQRVMoW0NvdW50ZXI2NF0sLCxbI2luY2x1ZGUgPGluZXQvbWliMi5oPl0pCitBQ19DSEVDS19UWVBFUyhbbWliMl9pcElmU3RhdHNFbnRyeV90XSwsLFsjaW5jbHVkZSA8aW5ldC9taWIyLmg+XSkKKworIyAgIE4uQjogIFRoZSBhYm92ZSBjaGVja3MgY291bGQgc2FmZWx5IGJlIG1vdmVkIHRvCisjICAgICAgICAgdGhlIGxhdGVyICdjb25maWdfdHlwZXMnIHN1Yi1zY3JpcHQKKyMKKworCisjIworIyAgIERldGVybWluZSB0aGUgSVB2NiBzdGFjayB0eXBlCisjIworCisjICAgICAgIFRoZXNlIGNoZWNrcyBhbHNvIHNldCB0aGUgTElCUy9DRkxBR1MgdmFyaWFibGVzLAorIyAgICAgICB3aGljaCBtYXkgYmUgbmVlZGVkIGZvciBzdWJzZXF1ZW50IGZ1bmN0aW9uIHRlc3RzCisjCisKK2lmIHRlc3QgIngkZW5hYmxlX2lwdjYiID0gInh5ZXMiOyB0aGVuCisJdjZ0eXBlPXVua25vd24KKwl2NmxpYj1ub25lCisJdjZ0cnlsaWJjPW5vCisKKwlBQ19NU0dfQ0hFQ0tJTkcoW1tpcHY2IHN0YWNrIHR5cGVdXSkKKwlmb3IgaSBpbiB2NmQgdG9zaGliYSBrYW1lIGlucmlhIHpldGEgbGludXgtZ2xpYmMgbGludXgtaW5ldDYgY3lnd2luIHdpbnNvY2syIGdlbmVyaWM7IGRvCisJCWNhc2UgJGkgaW4KKwkJdjZkKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPC91c3IvbG9jYWwvdjYvaW5jbHVkZS9zeXMvdHlwZXMuaD4KKyNpZmRlZiBfX1Y2RF9fCit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsgdjZsaWI9djY7CisJCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7CisJCQkJQ0ZMQUdTPSItSS91c3IvbG9jYWwvdjYvaW5jbHVkZSAkQ0ZMQUdTIl0pCisJCQk7OworCQl0b3NoaWJhKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2lmZGVmIF9UT1NISUJBX0lORVQ2Cit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsgdjZsaWI9aW5ldDY7CisJCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorCQkJOzsKKwkJa2FtZSkKKwkJCUFDX0VHUkVQX0NQUCh5ZXMsIFsKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaWZkZWYgX19LQU1FX18KK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOyB2NmxpYj1pbmV0NjsKKwkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWlucmlhKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpZmRlZiBJUFY2X0lOUklBX1ZFUlNJT04KK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOworCQkJCXY2bGliPWR1bW15OworCQkJCXY2bGliZGlyPW5vbmU7CisJCQkJdjZ0cnlsaWJjPXllczsKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCisJCQk7OworCQl6ZXRhKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2lmZGVmIF9aRVRBX01JTkFNSV9JTkVUNgorQQoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7IHY2bGliPWluZXQ2OworCQkJCXY2bGliZGlyPS91c3IvbG9jYWwvdjYvbGliOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWxpbnV4LWdsaWJjKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisjaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICgoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDEpIHx8IChfX0dMSUJDXyA+IDIpKQoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7CisJCQkJdjZsaWI9ZHVtbXk7CisJCQkJdjZsaWJkaXI9bm9uZTsKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWxpbnV4LWluZXQ2KQorCQkJaWYgdGVzdCAtZCAvdXNyL2luZXQ2OyB0aGVuCisJCQkJdjZ0eXBlPSRpCisJCQkJdjZsaWI9aW5ldDYKKwkJCQl2NmxpYmRpcj0vdXNyL2luZXQ2L2xpYgorCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiCisJCQlmaQorCQkJOzsKKwkJY3lnd2luKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNpZmRlZiBfQ1lHV0lOX0lONl9ICit5ZXMKKyNlbmRpZl0sCisJCQkJW3Y2dHlwZT0kaTsKKwkJCQl2NmxpYj1kdW1teTsKKwkJCQl2NmxpYmRpcj1ub25lCisJCQkJdjZ0cnlsaWJjPXllczsKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCisgICAgICAgICAgICAgICAgICAgICAgIDs7CisJCXdpbnNvY2syKQorCQkJQUNfRUdSRVBfQ1BQKHllcywgWworI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjaWYgZGVmaW5lZChfV1MyVENQSVBfSCkKK3llcworI2VuZGlmXSwKKwkJCQlbdjZ0eXBlPSRpOworCQkJCXY2bGliPWR1bW15OworCQkJCXY2bGliZGlyPW5vbmUKKwkJCQl2NnRyeWxpYmM9eWVzOworCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKKwkJCTs7CisJCWN5Z3dpbikKKwkJCUFDX0VHUkVQX0NQUCh5ZXMsIFsKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjaWZkZWYgX0NZR1dJTl9JTjZfSAoreWVzCisjZW5kaWZdLAorCQkJCVt2NnR5cGU9JGk7CisJCQkJdjZsaWI9ZHVtbXk7CisJCQkJdjZsaWJkaXI9bm9uZQorCQkJCXY2dHJ5bGliYz15ZXM7CisJCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQorICAgICAgICAgICAgICAgICAgICAgICA7OworCQlnZW5lcmljKQorICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbW3Bvc3Rwb25lZF1dKQorCQkJQUNfQ0hFQ0tfTUVNQkVSKFtzdHJ1Y3Qgc29ja2FkZHJfaW42LnNpbjZfYWRkcl0sLCxbCitBQ19JTkNMVURFU19ERUZBVUxUKCkKK1sjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAorI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZmRlZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorXV0pCisJICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbW2lwdjYgc3RhY2sgdHlwZV1dKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAieCRhY19jdl9oYXZlX3N0cnVjdF9zb2NrYWRkcl9pbjZfc2luNl9hZGRyIiA9ICJ4eWVzIjsgdGhlbgorCQkJCXY2dHlwZT0kaQorCQkJCXY2bGliPWR1bW15CisJCQkJdjZsaWJkaXI9bm9uZQorCQkJCXY2dHJ5bGliYz15ZXMKKwkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIgorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKwkJCTs7CisJCWVzYWMKKwkJaWYgdGVzdCAiJHY2dHlwZSIgIT0gInVua25vd24iOyB0aGVuCisJCQlicmVhaworCQlmaQorCWRvbmUKKworCWlmIHRlc3QgIiR2NmxpYiIgIT0gIm5vbmUiOyB0aGVuCisJCWlmIHRlc3QgLWQgJHY2bGliZGlyIC1hIC1mICR2NmxpYmRpci9saWIkdjZsaWIuYTsgdGhlbgorCQkJTElCUz0iLUwkdjZsaWJkaXIgLWwkdjZsaWIgJExJQlMiCisJCQllbmFibGVfaXB2Nj0ieWVzIgorCQkJQUNfTVNHX1JFU1VMVChbIiR2NnR5cGUsICRlbmFibGVfaXB2NiwgdXNpbmcgbGliJHY2bGliIl0pCisJCWVsaWYgdGVzdCAiJHY2dHJ5bGliYyIgPSAieWVzIjsgdGhlbgorCQkJZW5hYmxlX2lwdjY9InllcyIKKwkJCUFDX01TR19SRVNVTFQoWyIkdjZ0eXBlLCAkZW5hYmxlX2lwdjYsIHVzaW5nIGxpYmMiXSkKKwkJZWxzZQorCQkJQUNfTVNHX0VSUk9SKG5vIElQdjYgbGlicmFyeSBsaWIkdjZsaWIuYSBmb3VuZC4pCisJCQlleGl0IDEKKwkJZmkKKwllbHNlCisJCWVuYWJsZV9pcHY2PSJubyIKKwkJQUNfTVNHX1JFU1VMVChbIiR2NnR5cGUsICRlbmFibGVfaXB2NiJdKQorCWZpCitmaQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfbWFudWFsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZWZkZDMKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF9tYW51YWwKQEAgLTAsMCArMSwxNzAgQEAKKyMgLSotIGF1dG9jb25mIC0qLQorIworIyBQcm9tcHQgZm9yIHZhcmlvdXMgYml0cyBvZiB1c2VyIGluZm9ybWF0aW9uCisjCisKK2lmIHRlc3QgIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFIiA9ICJ4IiAtbyAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19MT0MiID0gIngiIC1vICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0NPTlRBQ1QiID0gIngiIC1vICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iID0gIngiOyB0aGVuCitBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHRvIHByb21wdCBmb3IgdmFsdWVzLCBhY19jdl9oYXZlX3dhcm5lZCwKK1sKK2lmIHRlc3QgIngkZGVmYXVsdHMiID0gInhubyI7IHRoZW4KK0FDX01TR19OT1RJQ0UoWworCisJICoqKioqKioqKioqKioqIENvbmZpZ3VyYXRpb24gU2VjdGlvbiAqKioqKioqKioqKioqKgorCisJWW91IGFyZSBhYm91dCB0byBiZSBwcm9tcHRlZCB3aXRoIGEgc2VyaWVzIG9mIHF1ZXN0aW9ucy4gIEFuc3dlcgordGhlbSBjYXJlZnVsbHksIGFzIHRoZXkgZGV0ZXJtaW5lIGhvdyB0aGUgU05NUCBhZ2VudCBhbmQgcmVsYXRlZAorYXBwbGljYXRpb25zIGFyZSB0byBmdW5jdGlvbi4KKworCUFmdGVyIHRoZSBjb25maWd1cmUgc2NyaXB0IGZpbmlzaGVzLCB5b3UgY2FuIGJyb3dzZSB0aGUgbmV3bHkKK2NyZWF0ZWQgbmV0LXNubXAtY29uZmlnLmggZmlsZSBmb3IgZnVydGhlciAtIGxlc3MgaW1wb3J0YW50IC0gcGFyYW1ldGVycyB0bworbW9kaWZ5LiAgQmUgY2FyZWZ1bCBpZiB5b3UgcmUtcnVuIGNvbmZpZ3VyZSB0aG91Z2gsIHNpbmNlIG5ldC1zbm1wLWNvbmZpZy5oIAord2lsbCBiZSBvdmVyd3JpdHRlbi4KKworLVByZXNzIHJldHVybiB0byBjb250aW51ZS0KK10pCisKK3JlYWQgdG1waW5wdXQgPCZBU19PUklHSU5BTF9TVERJTl9GRAorYWNfY3ZfaGF2ZV93YXJuZWQ9InllcyIKK2Vsc2UKKyAgYWNfY3ZfaGF2ZV93YXJuZWQ9Im5vIgorZmkKK10pCitlbHNlCisgIGFjX2N2X2hhdmVfd2FybmVkPSJ5ZXMiCitmaQorCitNRT1gJFdIT0FNSWAKK2lmIHRlc3QgLWYgL2V0Yy9yZXNvbHYuY29uZjsgdGhlbgorICBMT0M9YGF3ayAnL15kb21haW4ve2xvYz0kTkZ9RU5Ee3ByaW50IGxvY30nIC9ldGMvcmVzb2x2LmNvbmZgCitmaQoraWYgdGVzdCAieCRMT0MiID0geDsgdGhlbgorICBMT0M9IkBuby53aGVyZSIKK2ZpCisKK0FDX1BST01QVF9VU0VSKE5FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04sWworCisqKiogRGVmYXVsdCBTTk1QIFZlcnNpb246CisKKwlTdGFydGluZyB3aXRoIE5ldC1TTk1QIDUuMCwgeW91IGNhbiBjaG9vc2UgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZgordGhlIFNOTVAgcHJvdG9jb2wgdG8gdXNlIHdoZW4gbm8gdmVyc2lvbiBpcyBnaXZlbiBleHBsaWNpdGx5IG9uIHRoZQorY29tbWFuZCBsaW5lLCBvciB2aWEgYW4gJ3NubXAuY29uZicgZmlsZS4gIEluIHRoZSBwYXN0IHRoaXMgd2FzIHNldCB0bworU05NUHYxLCBidXQgeW91IGNhbiB1c2UgdGhpcyB0byBzd2l0Y2ggdG8gU05NUHYzIGlmIGRlc2lyZWQuICBTTk1QdjMKK3dpbGwgcHJvdmlkZSBhIG1vcmUgc2VjdXJlIG1hbmFnZW1lbnQgZW52aXJvbm1lbnQgKGFuZCB0aHVzIHlvdSdyZQorZW5jb3VyYWdlZCB0byBzd2l0Y2ggdG8gU05NUHYzKSwgYnV0IG1heSBicmVhayBleGlzdGluZyBzY3JpcHRzIHRoYXQKK3JlbHkgb24gdGhlIG9sZCBiZWhhdmlvdXIuICAoVGhvdWdoIHN1Y2ggc2NyaXB0cyB3aWxsIHByb2JhYmx5IG5lZWQgdG8KK2JlIGNoYW5nZWQgdG8gdXNlIHRoZSAnLWMnIGNvbW11bml0eSBmbGFnIGFueXdheSwgYXMgdGhlIFNOTVB2MQorY29tbWFuZCBsaW5lIHVzYWdlIGhhcyBjaGFuZ2VkIGFzIHdlbGwuKS4KKyAgIEF0IHRoaXMgcHJvbXB0IHlvdSBjYW4gc2VsZWN0IFwiMVwiLCBcIjJcIiAoZm9yIFNOTVB2MmMpLCBvciBcIjNcIiBhcwordGhlIGRlZmF1bHQgdmVyc2lvbiBmb3IgdGhlIGNvbW1hbmQgdG9vbHMgKHNubXBnZXQsIC4uLikgdG8gdXNlLiAgVGhpcworY2FuIGFsd2F5cyBiZSBvdmVycmlkZGVuIGF0IHJ1bnRpbWUgdXNpbmcgdGhlIC12IGZsYWcgdG8gdGhlIHRvb2xzLCBvcgorYnkgdXNpbmcgdGhlIFwiZGVmVmVyc2lvblwiIHRva2VuIGluIHlvdXIgc25tcC5jb25mIGZpbGUuCisgICBQcm92aWRpbmcgdGhlIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbj1cInhcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKK3dpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCisKK0RlZmF1bHQgdmVyc2lvbiBvZiBTTk1QIHRvIHVzZV0sMyx1bnF1b3RlZCkKKworIyB3ZSB0ZXN0ZWQgdGhpcyBhYm92ZSBiZWZvcmUgdGhlIHByb21wdCwgYnV0IHRoZSBwcm9tcHQgbWF5IGdpdmUgYSBuZXcgdmFsdWUuCitjYXNlICIke2FjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT059IiBpbgorICBbWzEyM11dKSA7OworICAyYykgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTj0yIDs7CisgICopCisgICAgQUNfTVNHX0VSUk9SKFtJbGxlZ2FsIHZlcnNpb24gbnVtYmVyLiAgT25seSAxLCAyIChmb3IgU05NUHYyYykgYW5kIDMgYXJlIHN1cHBvcnRlZC5dKQorICAgIDs7Citlc2FjCisKK0FDX1BST01QVF9VU0VSKE5FVFNOTVBfU1lTX0NPTlRBQ1QsWworCisqKiogU3lzdGVtIENvbnRhY3QgSW5mb3JtYXRpb246CisKKwlEZXNjcmliZXMgd2hvIHNob3VsZCBiZSBjb250YWN0ZWQgYWJvdXQgdGhlIGhvc3QgdGhlIGFnZW50IGlzCitydW5uaW5nIG9uLiAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIE1JQi1JSSB0cmVlLiAgVGhpcworY2FuIGFsc28gYmUgb3Zlci1yaWRkZW4gdXNpbmcgdGhlIFwic3lzY29udGFjdFwiIHN5bnRheCBpbiB0aGUgYWdlbnQncworY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtc3lzLWNvbnRhY3Q9XCJjb250YWN0XCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCit3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgorCitTeXN0ZW0gQ29udGFjdCBJbmZvcm1hdGlvbl0sJE1FQCRMT0MscXVvdGVkKQorCitBQ19QUk9NUFRfVVNFUihORVRTTk1QX1NZU19MT0MsWworCisqKiogU3lzdGVtIExvY2F0aW9uOgorCisJRGVzY3JpYmVzIHRoZSBsb2NhdGlvbiBvZiB0aGUgc3lzdGVtLiAgVGhpcyBpbmZvcm1hdGlvbiBpcworYXZhaWxhYmxlIGluIHRoZSBNSUItSUkgdHJlZS4gIHRoaXMgY2FuIGFsc28gYmUgb3Zlci1yaWRkZW4gdXNpbmcgdGhlCitcInN5c2xvY2F0aW9uXCIgc3ludGF4IGluIHRoZSBhZ2VudCdzIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisgIFByb3ZpZGluZyB0aGUgLS13aXRoLXN5cy1sb2NhdGlvbj1cImxvY2F0aW9uXCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCit3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgorCitTeXN0ZW0gTG9jYXRpb25dLFVua25vd24scXVvdGVkKQorCitpZiB0ZXN0IC1kIC92YXIvbG9nOyB0aGVuCisgIGRlZmF1bHRsb2c9Ii92YXIvbG9nL3NubXBkLmxvZyIKK2Vsc2UKKyAgZGVmYXVsdGxvZz0iL3Vzci9hZG0vc25tcGQubG9nIgorZmkKKyAgCitBQ19QUk9NUFRfVVNFUihORVRTTk1QX0xPR0ZJTEUsWworCisqKiogTG9nZmlsZSBsb2NhdGlvbjoKKworCUVudGVyIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciB0aGUgc25tcGQgYWdlbnQgdG8gZHVtcAoraW5mb3JtYXRpb24gJiBlcnJvcnMgdG8uICBJZiBub3QgZGVmaW5lZCAoZW50ZXIgdGhlIGtleXdvcmQgXCJub25lXCIKK2F0IHRoZSBwcm9tcHQgYmVsb3cpIHRoZSBhZ2VudCB3aWxsIHVzZSBzdGRvdXQgYW5kIHN0ZGVyciBpbnN0ZWFkLgorKE5vdGU6IFRoaXMgdmFsdWUgY2FuIGJlIG92ZXItcmlkZGVuIHVzaW5nIGNvbW1hbmQgbGluZSBvcHRpb25zLikKKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtbG9nZmlsZT1cInBhdGhcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKK3dpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCisKK0xvY2F0aW9uIHRvIHdyaXRlIGxvZ2ZpbGVdLCRkZWZhdWx0bG9nLHF1b3RlZCkKKworaWYgdGVzdCAtZCAvdmFyOyB0aGVuCisgIGRlZmF1bHRzdG9yZT0iL3Zhci9uZXQtc25tcCIKKyAgdWNkZGVmYXVsdHN0b3JlPSIvdmFyL3VjZC1zbm1wIgorZWxzZQorICBkZWZhdWx0c3RvcmU9Ii9ldGMvbmV0LXNubXAiCisgIHVjZGRlZmF1bHRzdG9yZT0iL2V0Yy91Y2Qtc25tcCIKK2ZpCisgIAorQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9QRVJTSVNURU5UX0RJUkVDVE9SWSxbCisKKyoqKiBzbm1wZCBwZXJzaXN0ZW50IHN0b3JhZ2UgbG9jYXRpb246CisKKwlFbnRlciBhIGRpcmVjdG9yeSBmb3IgdGhlIFNOTVAgbGlicmFyeSB0byBzdG9yZSBwZXJzaXN0ZW50CitkYXRhIGluIHRoZSBmb3JtIG9mIGEgY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBkZWZhdWx0IGxvY2F0aW9uIGlzCitkaWZmZXJlbnQgdGhhbiB0aGUgb2xkIGRlZmF1bHQgbG9jYXRpb24gKHdoaWNoIHdhcyBmb3IgdWNkLXNubXApLiAgSWYKK3lvdSBzdGF5IHdpdGggdGhlIG5ldyBwYXRoLCBJJ2xsIGFzayB5b3UgaW4gYSBzZWNvbmQgaWYgeW91IHdpc2ggdG8KK2NvcHkgeW91ciBmaWxlcyBvdmVyIHRvIHRoZSBuZXcgbG9jYXRpb24gKG9uY2Ugb25seSkuICBJZiB5b3UgcGljaworc29tZSBvdGhlciBwYXRoIHRoYW4gdGhlIGRlZmF1bHQsIHlvdSdsbCBoYXZlIHRvIGNvcHkgdGhlbSB5b3Vyc2VsZi4KK1RoZXJlIGlzIG5vdGhpbmcgd3Jvbmcgd2l0aCBwaWNraW5nIHRoZSBvbGQgcGF0aCAoJHVjZGRlZmF1bHRzdG9yZSkgaWYKK3lvdSdkIHJhdGhlci4KKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9XCJwYXRoXCIgcGFyYW1ldGVyIHRvCisuL2NvbmZpZ3VyZSB3aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgorCitMb2NhdGlvbiB0byB3cml0ZSBwZXJzaXN0ZW50IGluZm9ybWF0aW9uXSwkZGVmYXVsdHN0b3JlLHF1b3RlZCkKKworUEVSU0lTVEVOVF9ESVJFQ1RPUlk9JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlkKK0FDX1NVQlNUKFBFUlNJU1RFTlRfRElSRUNUT1JZKQorVUNEUEVSU0lTVEVOVF9ESVJFQ1RPUlk9JHVjZGRlZmF1bHRzdG9yZQorQUNfU1VCU1QoVUNEUEVSU0lTVEVOVF9ESVJFQ1RPUlkpCisKK2lmIHRlc3QgJFBFUlNJU1RFTlRfRElSRUNUT1JZID0gIiRkZWZhdWx0c3RvcmUiIC1hIC1kICIkdWNkZGVmYXVsdHN0b3JlIiAtYSAhIC1kICIkZGVmYXVsdHN0b3JlIiA7IHRoZW4KK0FDX0NBQ0hFX0NIRUNLKElmIHdlIHNob3VsZCBjb3B5IHRoZSBvbGQgcGVyc2lzdGVudCBkaXJlY3RvcnksIGFjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUywKK1sKK0FDX1BST01QVF9VU0VSX05PX0RFRklORShhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVMsWworCisqKiogQ29weWluZyBvbGQgdWNkLXNubXAgcGVyc2lzdGVudCBmaWxlcyB0byBuZXQtc25tcCBwZXJzaXN0ZW50IGRpcmVjdG9yeToKKworCVdvdWxkIHlvdSBsaWtlIHRvIGNvcHkgdGhlIG9sZGVyIHVjZC1zbm1wIHBlcnNpc3RlbnQgZmlsZXMKK2ludG8geW91ciBuZXcgbmV0LXNubXAgcGVyc2lzdGVudCBmaWxlIHBhdGg/ICBUaGlzIHdpbGwgZnVuY3Rpb25hbGx5CitzYXZlIGFsbCB5b3VyIHVjZC1zbm1wIGRhdGEgYW5kIGxldCBpdCBiZSB1c2VkIHdpdGhpbiB0aGUgbmV0LXNubXAKK3Rvb2xzLiAgVGhpcyB3aWxsIG9ubHkgYmUgZG9uZSBvbmNlIHdoZW4geW91IHJ1biBtYWtlIGluc3RhbGwuICBJZiB5b3UKK3dpc2ggdG8gZG8gdGhpcywgZW50ZXIgInllcyIgYXQgdGhlIHByb21wdC4KKyAgUHJvdmlkaW5nIHRoZSAtLXdpdGgtY29weS1wZXJzaXN0ZW50LWZpbGVzPVwibm9cIiAob3IgXCJ5ZXNcIikKK3BhcmFtZXRlcnMgdG8gLi9jb25maWd1cmUgd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KKworQ29weSB1Y2Qtc25tcCBkYXRhIGludG8gdGhlIG5ldC1zbm1wIGRhdGEgZGlyZWN0b3J5XSwieWVzIikKK10pCitlbHNlCithY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVM9Im5vIgorZmkKK0NPUFlfUEVSU0lTVEVOVF9GSUxFUz0iJGFjX2N2X3VzZXJfcHJvbXB0X0NPUFlfUEVSU0lTVEVOVF9GSUxFUyIKK0FDX1NVQlNUKENPUFlfUEVSU0lTVEVOVF9GSUxFUykKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BhdGhzIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGF0aHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VlODM2NwotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BhdGhzCkBAIC0wLDAgKzEsMTAxIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDb25maWd1cmUgcGF0aHMKKyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjIworIyAgIFByZWZpeCBwYXRoczoKKyMjCisKKyMgICBNYWluIHByZWZpeAorIworaWYgdGVzdCAieCRwcmVmaXgiID0gInhOT05FIjsgdGhlbgorICBwcmVmaXg9L3Vzci9sb2NhbAorZmkKKworIyAgICAgICBQcmVmaXggbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoCisjICAgICAgICAgICBpLmUuIGJlZ2luIHdpdGggIi8iICAgICAgICAgICAgICAgICAgICAgICAgIChVbml4KQorIyAgICAgICAgICAgICAgICBvciAiW0EtWl06IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoV2luZG93cykKKyMKK2ZpcnN0Y2hhcj1gZWNobyAkcHJlZml4IHwgJFNFRCAncy9cKC5cKS4qL1wxLydgCitpZiB0ZXN0ICJ4JGZpcnN0Y2hhciIgIT0gIngvIiA7IHRoZW4KKyAgIHNlY29uZGNoYXI9YGVjaG8gJHByZWZpeCB8ICRTRUQgJ3MvLlwoLlwpLiovXDEvJ2AKKyAgIGlmIHRlc3QgIngkc2Vjb25kY2hhciIgIT0gIng6IiA7IHRoZW4KKyAgICAgIHByZWZpeD1gcHdkYC8kcHJlZml4CisgICAgICBlY2hvICJhZGp1c3RpbmcgcHJlZml4IHRvICRwcmVmaXgiCisgICBmaQorZmkKKworCisjICAgRXhlYyBwcmVmaXgKKyMKK2lmIHRlc3QgIngkZXhlY19wcmVmaXgiID0gInhOT05FIjsgdGhlbgorICAgIGV4ZWNfcHJlZml4PSRwcmVmaXgKK2ZpCisKKyMgICAgICAgUHJlZml4IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aAorIyAgICAgICAgICAgaS5lLiBiZWdpbiB3aXRoICIvIiAgICAgICAgICAgICAgICAgICAgICAgICAoVW5peCkKKyMgICAgICAgICAgICAgICAgb3IgIltBLVpdOiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdpbmRvd3MpCisjCitmaXJzdGNoYXI9YGVjaG8gJGV4ZWNfcHJlZml4IHwgJFNFRCAncy9cKC5cKS4qL1wxLydgCitpZiB0ZXN0ICJ4JGZpcnN0Y2hhciIgIT0gIngvIiA7IHRoZW4KKyAgIHNlY29uZGNoYXI9YGVjaG8gJGV4ZWNfcHJlZml4IHwgJFNFRCAncy8uXCguXCkuKi9cMS8nYAorICAgaWYgdGVzdCAieCRzZWNvbmRjaGFyIiAhPSAieDoiIDsgdGhlbgorICAgICAgZXhlY19wcmVmaXg9YHB3ZGAvJGV4ZWNfcHJlZml4CisgICAgICBlY2hvICJhZGp1c3RpbmcgZXhlY19wcmVmaXggdG8gJGV4ZWNfcHJlZml4IgorICAgZmkKK2ZpCisKKworIyMKKyMgICBFbnZpcm9ubWVudGFsIHZhcmlhYmxlczoKKyMjCisKKyMgICAgICAgU05NUExJQlBBVEgKKyMKK1NOTVBMSUJQQVRIPSIiCit0bXBzZXQ9IiRsaWJkaXIvc25tcCIKK3doaWxlIHRlc3QgIngkdG1wc2V0IiAhPSAieCRTTk1QTElCUEFUSCI7IGRvCisgICAgU05NUExJQlBBVEg9IiR0bXBzZXQiCisgICAgZXZhbCB0bXBzZXQ9IiR0bXBzZXQiCitkb25lCitBQ19ERUZJTkVfVU5RVU9URUQoU05NUExJQlBBVEgsIiRTTk1QTElCUEFUSCIpCitBQ19TVUJTVChTTk1QTElCUEFUSCkKK0FDX0RFRklORV9VTlFVT1RFRChTTk1QRExNT0RQQVRILCIkU05NUExJQlBBVEgvZGxtb2QiKQorCisjICAgICAgIFNOTVBTSEFSRVBBVEgKKyMKK1NOTVBTSEFSRVBBVEg9IiIKK3RtcHNldD0iJGRhdGFkaXIvc25tcCIKK3doaWxlIHRlc3QgIngkdG1wc2V0IiAhPSAieCRTTk1QU0hBUkVQQVRIIjsgZG8KKyAgICBTTk1QU0hBUkVQQVRIPSIkdG1wc2V0IgorICAgIGV2YWwgdG1wc2V0PSIkdG1wc2V0IgorZG9uZQorQUNfREVGSU5FX1VOUVVPVEVEKFNOTVBTSEFSRVBBVEgsIiRTTk1QU0hBUkVQQVRIIikKK0FDX1NVQlNUKFNOTVBTSEFSRVBBVEgpCisKKyMgICAgICAgTUlCRElSUyAgIChkZWZhdWx0KQorIworaWYgdGVzdCAieCRORVRTTk1QX0RFRkFVTFRfTUlCRElSUyIgPSAieCI7IHRoZW4KKyAgICBORVRTTk1QX0RFRkFVTFRfTUlCRElSUz0iXCRIT01FLy5zbm1wL21pYnM6JFNOTVBTSEFSRVBBVEgvbWlicyIKKyAgICBpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCisgICAgICAgICMKKyAgICAgICAgIyAgICBVU2UgV2luZG93cy1zdHlsZSBwYXRoIHNlcGFyYXRvcgorICAgICAgICBORVRTTk1QX0RFRkFVTFRfTUlCRElSUz1gZWNobyAiJE5FVFNOTVBfREVGQVVMVF9NSUJESVJTIiB8ICRTRUQgJ3MvOi87L2cnYAorICAgIGZpCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9NSUJESVJTLCIkTkVUU05NUF9ERUZBVUxUX01JQkRJUlMiKQorZmkKK0FDX1NVQlNUKE5FVFNOTVBfREVGQVVMVF9NSUJESVJTKQorCisjICAgICAgIFNOTVBDT05GUEFUSAorIworU05NUENPTkZQQVRIPSIiCit0bXBzZXQ9IiRzeXNjb25mZGlyL3NubXAiCit3aGlsZSB0ZXN0ICJ4JHRtcHNldCIgIT0gIngkU05NUENPTkZQQVRIIjsgZG8KKyAgICBTTk1QQ09ORlBBVEg9IiR0bXBzZXQiCisgICAgZXZhbCB0bXBzZXQ9IiR0bXBzZXQiCitkb25lCitBQ19ERUZJTkVfVU5RVU9URUQoU05NUENPTkZQQVRILCIkU05NUENPTkZQQVRIIikKK0FDX1NVQlNUKFNOTVBDT05GUEFUSCkKZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3RfcGVybF9weXRob24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODEyYjY2ZgotLS0gL2Rldi9udWxsCisrKyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3BlcmxfcHl0aG9uCkBAIC0wLDAgKzEsMzYyIEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyAgIFBlcmwgJiBQeXRob24gc3VwcG9ydAorIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMjCisjICAgQ2hlY2sgd2hldGhlciBOZXQtU05NUCBjb25maWd1cmF0aW9uIHdpbGwgc3VwcG9ydCBQZXJsCisjIworCisjICAgSW5wdXRzOgorIyAgICAgICBpbnN0YWxsX3Blcmw6ICAgd2hldGhlciBvciBub3QgdG8gaW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzL25vL3RyeSAgIChpLmUuICdtYXliZScgLSB0aGUgZGVmYXVsdCkKKyMgICAgICAgZW1iZWRfcGVybDogICAgIHdoZXRoZXIgb3Igbm90IHRvIGVtYmVkIFBlcmwgc3VwcG9ydCB3aXRoaW4gdGhlIGFnZW50CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgeWVzL25vL3RyeSAgIChpLmUuICdtYXliZScgLSB0aGUgZGVmYXVsdCkKKyMKKyMgICAgICAgYWNfY3ZfcGF0aF9QRVJMUFJPRzogICAgUGF0aCB0byBwZXJsIGJpbmFyeQorCisKKyMgICAgICAgRW1iZWRkZWQgUGVybCByZXF1aXJlcyBQZXJsIG1vZHVsZXMsIGFuZCB0aGUgcGVybCBiaW5hcnkKKyMKK2lmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInhubyIgOyB0aGVuCisgICAgICAgIGluc3RhbGxfcGVybD0idHJ5IgorICAgIGZpCisgICAgaWYgdGVzdCAieCRhY19jdl9wYXRoX1BFUkxQUk9HIiA9ICJ4IiAtbyAieCRhY19jdl9wYXRoX1BFUkxQUk9HIiA9ICJ4bm8iIDsgdGhlbgorICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICBmaQorZmkKKworIyAgICAgICBQZXJsIG1vZHVsZXMgcmVxdWlyZSB0aGUgcGVybCBiaW5hcnkKKyMKK2lmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBteXBlcmw9JGFjX2N2X3BhdGhfUEVSTFBST0cKKyAgICBpZiB0ZXN0ICRteXBlcmwgPSAibm8iIDsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICBlbHNlCisgICAgICAgICAgICBBQ19NU0dfRVJST1IoLS1lbmFibGUtZW1iZWRkZWQtcGVybCByZXF1ZXN0ZWQgYnV0IG5vIHBlcmwgZXhlY3V0YWJsZSBmb3VuZCkKKyAgICAgICAgZmkKKyAgICBmaQorZmkKKworIyAgICAgICBQZXJsIG1vZHVsZXMgcmVxdWlyZSBzaGFyZWQgbGlicmFyaWVzCisjCitpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgaWYgdGVzdCAieCRlbmFibGVfc2hhcmVkIiAhPSAieHllcyI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFBlcmwgc3VwcG9ydCByZXF1aXJlcyAtLWVuYWJsZS1zaGFyZWQpCisgICAgICAgIGZpCisgICAgZmkKK2ZpCisKKyMgICAgICAgUGVybCBtb2R1bGVzIGNhbiBvbmx5IGJlIGluc3RhbGxlZCBmcm9tIHdpdGhpbiB0aGUgc291cmNlIHRyZWUKKyMKK2lmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGFyZSBpbiB0aGUgc291cmNlIHRyZWUgc28gd2UgY2FuIGluc3RhbGwgUGVybCBtb2R1bGVzXSkKKyAgICBpZiB0ZXN0ICJ4JHNyY2RpciIgPSAieC4iIC1vIC1kIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZSA7IHRoZW4KKyAgICAgICAgQUNfTVNHX1JFU1VMVChbWWVzXSkKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KKyAgICAgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtOb10pCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFDX01TR19FUlJPUihbUGVybCBtb2R1bGVzIGNhbiBub3QgYmUgYnVpbHQgb3V0c2lkZSB0aGUgc291cmNlIGRpcmVjdG9yeV0pCisgICAgICAgIGZpCisgICAgZmkKK2ZpICAgICAgCisKKworIyAgIFRoZSByZXN0IG9mIHRoZSBQZXJsLXJlbGF0ZWQgY2hlY2tzIGFyZW4ndCByZWxldmFudAorIyAgICAgICBpZiB3ZSdyZSBub3QgdXNpbmcgdGhlIFBlcmwgbW9kdWxlcworIworaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorCisKKyMjCisjICAgQ2hlY2sgY29tcGlsZXIgY29tcGF0YWJpbGl0eQorIyMKKworICAgICMgICAgICAgV2hhdCBjb21waWxlciB3YXMgdXNlZCB0byBidWlsZCB0aGUgcGVybCBiaW5hcnk/CisgICAgIworICAgIGlmIHRlc3QgInhlbmFibGVfcGVybF9jY19jaGVja3MiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQZXJsIGNjXSkKKyAgICAgICAgY2hhbmdlcXVvdGUoLCApCisgICAgICAgIFBFUkxDQz1gJG15cGVybCAtVjpjYyB8ICRteXBlcmwgLW4gLWUgJ3ByaW50IGlmIChzL15ccypjYz0uKFstPVx3XHNcL10rKS47XHMqLyQxLyk7J2AKKyAgICAgICAgY2hhbmdlcXVvdGUoWywgXSkKKyAgICAgICAgaWYgdGVzdCAieCRQRVJMQ0MiICE9ICJ4IiA7IHRoZW4KKyAgICAgICAgICAgIEFDX01TR19SRVNVTFQoWyRQRVJMQ0NdKQorICAgICAgICBlbHNlCisgICAgICAgICAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGNvbXBpbGVyIHRoYXQgd2FzIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgcGVybCBiaW5hcnkgb3IgdXNlIC0td2l0aG91dC1wZXJsLW1vZHVsZXMgdG8gYnVpbGQgd2l0aG91dCBQZXJsLl0pCisgICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgIGZpCisKKyAgICAjICAgICAgIFdhcyBHQ0MgdXNlZCB0byBidWlsZCB0aGUgcGVybCBiaW5hcnk/CisgICAgIworICAgIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KKyAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyICRQRVJMQ0MgaXMgYSBHTlUgQyBjb21waWxlcl0pCisgICAgICAgIE9MRENDPSRDQworICAgICAgICBDQz0iJFBFUkxDQyIKKyAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoWworICAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtdLCBbWworI2lmbmRlZiBfX0dOVUNfXworICBjaG9rZSBtZQorI2VuZGlmCisgICAgICAgICAgICBdXSldLCBbcGVybGNjX2lzX2dudT15ZXNdLCBbcGVybGNjX2lzX2dudT1ub10pCisgICAgICAgIEFDX01TR19SRVNVTFQoWyRwZXJsY2NfaXNfZ251XSkKKyAgICAgICAgQ0M9JE9MRENDCisKKyAgICAgICAgIyAgICAgICBDaGVjayBjb21wYXRhYmlsaXR5OiAgR251IE5ldC1TTk1QIHZzIE5vbi1HbnUgcGVybAorICAgICAgICAjCisgICAgICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIiAtYSAieCRwZXJsY2NfaXNfZ251IiA9ICJ4bm8iIDsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgCSAgICAgICAgaW5zdGFsbF9wZXJsPSJubyIKKyAgICAgIAkgICAgZWxzZQorICAgICAgCSAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgR05VIEMgY29tcGlsZXIgKCRDQykgd2hpbGUgUGVybCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGEgbm9uLUdOVSAob3Igbm9uLXdvcmtpbmcpIGNvbXBpbGVyICgkUEVSTENDKS4gVGhpcyBsaWtlbHkgd29uJ3Qgd29yayBmb3IgYnVpbGRpbmcgd2l0aCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzcGVjaWZ5IGEgZGlmZmVyZW50IGNvbXBpbGVyICgtLXdpdGgtY2M9UEFUSCksIGRpc2FibGUgdGhpcyBjaGVjayAoLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzKSBvciBidWlsZCB3aXRob3V0IFBlcmwgKC0td2l0aG91dC1wZXJsLW1vZHVsZXMpLl0pCisgICAgICAJICAgIGZpCisgICAgICAgIGZpCisgICAgZmkKKworICAgICMgICAgICAgQ2hlY2sgY29tcGF0YWJpbGl0eTogIE5vbi1HbnUgTmV0LVNOTVAgdnMgR251IHBlcmwKKyAgICAjCisgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JEdDQyIgIT0gInh5ZXMiIC1hICJ4JHBlcmxjY19pc19nbnUiID0gInh5ZXMiIDsgdGhlbgorICAgICAgCSAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAJICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgCSAgICBlbHNlCisgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgbm9uLUdOVSBDIGNvbXBpbGVyICgkQ0MpIHdoaWxlIFBlcmwgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBhIEdOVSBjb21waWxlciAoJFBFUkxDQykuIFRoaXMgbGlrZWx5IHdvbid0IHdvcmsgZm9yIGJ1aWxkaW5nIHdpdGggUGVybCBzdXBwb3J0LiBFaXRoZXIgc3BlY2lmeSBhIGRpZmZlcmVudCBjb21waWxlciAoLS13aXRoLWNjPVBBVEgpLCBkaXNhYmxlIHRoaXMgY2hlY2sgKC0tZGlzYWJsZS1wZXJsLWNjLWNoZWNrcykgb3IgYnVpbGQgd2l0aG91dCBQZXJsICgtLXdpdGhvdXQtcGVybC1tb2R1bGVzKS5dKQorICAgICAgCSAgICBmaQorICAgICAgICBmaQorICAgIGZpCisKKyAgICAjICAgICAgIEFyZSB3ZSBjbGVhciB0byBwcm9jZWVkPworICAgICMKKyAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCisgICAgICAgIGluc3RhbGxfcGVybD0ieWVzIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInhubyIgOyB0aGVuCisgICAgICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgorICAgICAgICAgICAgZW1iZWRfcGVybD0ibm8iCisgICAgICAgIGZpCisgICAgZmkKKworCisjIworIyAgIERldGVybWluZSBjb21waWxhdGlvbiBlbnZpcm9ubWVudCBuZWVkZWQgZm9yIGVtYmVkZGVkIFBlcmwKKyMjCisKKyMgICAgICAgU3lzdGVtLXNwZWNpZmljIHJlcXVpcmVtZW50cworIworY2FzZSAkdGFyZ2V0X29zIGluCisgICAgc29sYXJpcyopCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgICAgICMgICBDaGVjayBmb3IgTEFSR0VGSUxFIHN1cHBvcnQgICAgICAgICAgICAgICAoU29sYXJpcykKKyAgICAgICAgICAjCisgICAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgcHJvYmxlbWF0aWMgUGVybCBjYyBmbGFncyBvbiBTdW5zXSkKKyAgICAgICAgICBpZiAkbXlwZXJsIC1WOmNjZmxhZ3MgfCAkR1JFUCBMQVJHRUZJTEUgPiAvZGV2L251bGwgOyB0aGVuCisgICAgICAgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFtQZXJsIHdhcyBjb21waWxlZCB3aXRoIExBUkdFRklMRSBzdXBwb3J0IHdoaWNoIHdpbGwgYnJlYWsgTmV0LVNOTVAuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IHBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKFtub25lIGtub3duXSkKKyAgICAgICAgICBmaQorICAgICAgZmkKKyAgICA7OworCisgICAgKikKKyAgICA7OworZXNhYworCisjICAgICAgIENvbXBpbGVyIGZsYWdzCisjCitpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgQ0ZMQUdTXSkKKyAgICBwZXJsY2ZsYWdzPWAkbXlwZXJsIC1NRXh0VXRpbHM6OkVtYmVkIC1lIGNjb3B0c2AKKyAgICBpZiB0ZXN0ICJ4JHBlcmxjZmxhZ3MiICE9ICJ4IiA7IHRoZW4KKyAgICAgIEFDX01TR19SRVNVTFQoWyRwZXJsY2ZsYWdzXSkKKyAgICAgIENGTEFHUz0iJENGTEFHUyAkcGVybGNmbGFncyIKKyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBDIGNvbXBpbGVyIGZsYWdzIHRoYXQgd2VyZSB1c2VkIHRvIGJ1aWxkICRteXBlcmwuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IFBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQorICAgICAgZmkKKyAgICBmaQorZmkKKworIyAgICAgICBMaW5rZXIgZmxhZ3MKKyMKK2lmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBMREZMQUdTXSkKKyAgICBuZXRzbm1wX3BlcmxsZG9wdHM9YCRteXBlcmwgLU1FeHRVdGlsczo6RW1iZWQgLWUgbGRvcHRzYAorICAgIGlmIHRlc3QgIngkbmV0c25tcF9wZXJsbGRvcHRzIiAhPSAieCIgOyB0aGVuCisgICAgICBBQ19NU0dfUkVTVUxUKFskbmV0c25tcF9wZXJsbGRvcHRzXSkKKyAgICBlbHNlCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBsaW5rZXIgb3B0aW9ucyB0aGF0IHdlcmUgdXNlZCB0byBidWlsZCAkbXlwZXJsLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBQZXJsIGJpbmFyeSBvciB1c2UgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgdG8gdHVybiBvZmYgZW1iZWRkZWQgUGVybCBmdW5jdGlvbmFsaXR5IGFsdG9nZXRoZXIuXSkKKyAgICAgIGZpCisgICAgZmkKKyAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9hc19uZWVkZWQiICE9ICJ4bm8iIDsgdGhlbgorICAgICAgIyAgIEp1c3QtaW4tdGltZSBsaW5raW5nIHdpbGwgZW1iZWQgdGhlIFBlcmwgbGlicmFyeSB3aXRoaW4KKyAgICAgICMgICAgICAgdGhlIE5ldC1TTk1QIGxpYnJhcnkgKHJhdGhlciB0aGFuIHRoZSBhZ2VudCBhcHBsaWNhdGlvbikKKyAgICAgICMKKyAgICAgIFBFUkxMRE9QVFNfRk9SX0xJQlM9IiRuZXRzbm1wX3BlcmxsZG9wdHMiCisgICAgICAjICAgUGVybCBjY2RsZmxhZ3MgKFJQQVRIIHRvIGxpYnBlcmwsIGhvcGVmdWxseSkKKyAgICAgICMKKyAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgQ0NETEZMQUdTXSkKKyAgICAgIGNoYW5nZXF1b3RlKCwgKQorICAgICAgbmV0c25tcF9wZXJsY2NkbGZsYWdzPWAkbXlwZXJsIC1WOmNjZGxmbGFncyB8ICRteXBlcmwgLW4gLWUgJ3ByaW50ICQxICciaWYgKC9eXHMqY2NkbGZsYWdzPScoW14nXSspJzsvKTsiYAorICAgICAgY2hhbmdlcXVvdGUoWywgXSkKKyAgICAgIEFDX01TR19SRVNVTFQoWyRuZXRzbm1wX3BlcmxjY2RsZmxhZ3NdKQorICAgICAgUEVSTExET1BUU19GT1JfQVBQUz0iJG5ldHNubXBfcGVybGNjZGxmbGFncyIKKyAgICBlbHNlCisgICAgICAjICAgT3RoZXJ3aXNlIGVtYmVkIHRoZSBQZXJsIGxpYnJhcnkgd2l0aGluIHRoZSBhcHBsaWNhdGlvbgorICAgICAgIworICAgICAgUEVSTExET1BUU19GT1JfTElCUz0iJG5ldHNubXBfcGVybGxkb3B0cyIKKyAgICAgICMgbGluayAqYXBwbGljYXRpb25zKiBhZ2FpbnN0IGxpYnBlcmwKKyAgICAgIFBFUkxMRE9QVFNfRk9SX0FQUFM9IiRuZXRzbm1wX3BlcmxsZG9wdHMiCisgICAgZmkKK2ZpCisKKyMgICAgICAgJ1BlcmxfZXZhbF9wdicgZnVuY3Rpb24gKGFuZCBlcXVpdmFsZW50cykKKyMKK2lmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCisgICAgIyAgIFRocmVlIHBvc3NpYmxlIHZlcnNpb25zIG9mIHRoaXMgcm91dGluZToKKyAgICAjICAgICAgIGV2YWxfcHYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRvIDUuMDAzXzk3ZCkKKyAgICAjICAgICAgIHBlcmxfZXZhbF9wdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDUuMDA0LzUuMDA1KQorICAgICMgICAgICAgUGVybF9ldmFsX3B2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJvbSA1LjZmZikKKyAgICAjCisgICAgT0xETElCUz0iJExJQlMiCisgICAgTElCUz0iJExJQlMgJG5ldHNubXBfcGVybGxkb3B0cyIKKyAgICBBQ19DSEVDS19GVU5DUyhldmFsX3B2KQorICAgIEFDX0NIRUNLX0ZVTkMocGVybF9ldmFsX3B2LAorICAgICAgQUNfREVGSU5FKEhBVkVfUEVSTF9FVkFMX1BWX0xDLCAxLAorICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYHRoZSBwZXJsX2V2YWxfcHYnIGZ1bmN0aW9uLl0pKQorICAgIEFDX0NIRUNLX0ZVTkMoUGVybF9ldmFsX3B2LAorICAgICAgQUNfREVGSU5FKEhBVkVfUEVSTF9FVkFMX1BWX1VDLCAxLAorICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBQZXJsX2V2YWxfcHYnIGZ1bmN0aW9uLl0pKQorICAgIExJQlM9IiRPTERMSUJTIgorICAgICMKKyAgICAjICAgTm90ZSB0aGF0IGF1dG9jb25mIGZsYXR0ZW5zIGNhc2Ugd2hlbiBkZWZpbmluZyB0b2tlbnMsCisgICAgIyAgIHNvIHdlIG5lZWQgdG8gZXhwbGljaXRseSBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSBsYXR0ZXIgdHdvLgorCisgICAgaWYgdGVzdCAieCRhY19jdl9mdW5jX3BlcmxfZXZhbF9wdiIgIT0gInh5ZXMiIC1hICJ4JGFjX2N2X2Z1bmNfUGVybF9ldmFsX3B2IiAhPSAieHllcyIgLWEgIngkYWNfY3ZfZnVuY19ldmFsX3B2IiAhPSAieHllcyIgOyB0aGVuCisgICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgorICAgICAgICBlbWJlZF9wZXJsPSJubyIKKyAgICAgIGVsc2UKKyAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB0aGUgZXZhbF9wdiwgcGVybF9ldmFsX3B2IG9yIFBlcmxfZXZhbF9wdiBmdW5jdGlvbnMgbmVlZGVkIGZvciBlbWJlZGRlZCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IHBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQorICAgICAgZmkKKyAgICBlbHNlCisgICAgICAjICAgQWN0aXZhdGUgRW1iZWRkZWQgUGVybAorICAgICAgIworICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU1CRURERURfUEVSTCwgMSwKKyAgICAgICAgW0RlZmluZSBpZiB5b3UgYXJlIGVtYmVkZGluZyBwZXJsIGluIHRoZSBtYWluIGFnZW50Ll0pCisgICAgICBPVEhFUkFHRU5UTElCT0JKUz0ic25tcF9wZXJsLm8iCisgICAgICBPVEhFUkFHRU5UTElCTE9CSlM9InNubXBfcGVybC5sbyIKKworICAgICAgRU1CRURQRVJMSU5TVEFMTD0iZW1iZWRwZXJsaW5zdGFsbCIKKyAgICAgIEVNQkVEUEVSTFVOSU5TVEFMTD0iZW1iZWRwZXJsdW5pbnN0YWxsIgorICAgICAgZW1iZWRfcGVybD0ieWVzIgorICAgIGZpCitlbHNlCisgICAgICBFTUJFRFBFUkxJTlNUQUxMPSIiCisgICAgICBFTUJFRFBFUkxVTklOU1RBTEw9IiIKKyAgICAgIGVtYmVkX3Blcmw9Im5vIgorICAgIGZpCitmaQorCisKKyMjCisjICAgUmVwb3J0IGFuZCBjb25maWd1cmUgcmVzdWx0cworIyMKKworQUNfU1VCU1QoRU1CRURQRVJMSU5TVEFMTCkKK0FDX1NVQlNUKEVNQkVEUEVSTFVOSU5TVEFMTCkKK0FDX1NVQlNUKFBFUkxMRE9QVFNfRk9SX0xJQlMpCitBQ19TVUJTVChQRVJMTERPUFRTX0ZPUl9BUFBTKQorCisjICAgICAgIFJlc3VsdHMgb2YgRW1iZWRkZWQgUGVybCBjaGVja3MKKyMKK0FDX01TR19DSEVDS0lORyhbZm9yIHBvdGVudGlhbCBlbWJlZGRlZCBQZXJsIHN1cHBvcnRdKQoraWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieHllcyIgOyB0aGVuCisgIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGRpc2FibGVkKQorICBBQ19NU0dfUkVTVUxUKFtkaXNhYmxlZF0pCitlbHNlCisgIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGVuYWJsZWQpCisgIEFDX01TR19SRVNVTFQoW2VuYWJsZWRdKQorZmkKKworIyAgICAgICBSZXN1bHRzIG9mIFBlcmwgTW9kdWxlIGNoZWNrcworIworUEVSTFRBUkdTPSIiCitQRVJMSU5TVEFMTFRBUkdTPSIiCitQRVJMVU5JTlNUQUxMVEFSR1M9IiIKK0FDX01TR19DSEVDS0lORyhbaWYgd2UgY2FuIGluc3RhbGwgdGhlIFBlcmwgbW9kdWxlc10pCitpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHllcyIgOyB0aGVuCisgICAgUEVSTFRBUkdTPSJwZXJsbW9kdWxlcyIKKyAgICBQRVJMSU5TVEFMTFRBUkdTPSJwZXJsaW5zdGFsbCIKKyAgICBQRVJMVU5JTlNUQUxMVEFSR1M9InBlcmx1bmluc3RhbGwiCisgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4eWVzIiA7IHRoZW4KKyAgICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGJ1aWxkaW5nIC0tIGVtYmVkZGFibGUpCisgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXMgLS0gYW5kIGVtYmVkZGFibGVdKQorICAgIGVsc2UKKyAgICAgIEFDX01TR19DQUNIRV9BREQoU05NUCBQZXJsIG1vZHVsZXM6ICAgICAgICAgIGJ1aWxkaW5nIC0tIG5vdCBlbWJlZGRhYmxlKQorICAgICAgQUNfTVNHX1JFU1VMVChbeWVzIC0tIG5vdCBlbWJlZGRhYmxlXSkKKyAgICBmaQorZWxzZQorICAgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBkaXNhYmxlZCkKK2ZpCitBQ19TVUJTVChQRVJMVEFSR1MpCitBQ19TVUJTVChQRVJMSU5TVEFMTFRBUkdTKQorQUNfU1VCU1QoUEVSTFVOSU5TVEFMTFRBUkdTKQorQUNfU1VCU1QoUEVSTEFSR1MpCisKKworIyAgICAgICBSZXNldCBMSUJTIHRvIHByZS1saWJ3cmFwIHZhbHVlICAgKD8/PykKKyMKK0FHRU5UTElCUz0kTElCUworTElCUz0kTk9OQUdFTlRMSUJTCisKKworCisjIworIyAgIFB5dGhvbiBjaGVja3MKKyMjCisKK1BZVEhPTlRBUkdTPSIiCitQWVRIT05JTlNUQUxMVEFSR1M9IiIKK1BZVEhPTlVOSU5TVEFMTFRBUkdTPSIiCitQWVRIT05DTEVBTlRBUkdTPSIiCitBQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIHNob3VsZCBpbnN0YWxsIHRoZSBweXRob24gYmluZGluZ3NdKQoraWYgdGVzdCAieCRpbnN0YWxsX3B5dGhvbiIgPSAieHllcyIgOyB0aGVuCisgICAgUFlUSE9OVEFSR1M9InB5dGhvbm1vZHVsZXMiCisgICAgUFlUSE9OSU5TVEFMTFRBUkdTPSJweXRob25pbnN0YWxsIgorICAgIFBZVEhPTlVOSU5TVEFMTFRBUkdTPSJweXRob251bmluc3RhbGwiCisgICAgUFlUSE9OQ0xFQU5UQVJHUz0icHl0aG9uY2xlYW4iCisgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFB5dGhvbiBtb2R1bGVzOiAgICAgICAgYnVpbGRpbmcgZm9yICRQWVRIT05QUk9HKQorICAgIEFDX01TR19SRVNVTFQoW3llc10pCitlbHNlCisgICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFB5dGhvbiBtb2R1bGVzOiAgICAgICAgZGlzYWJsZWQpCisgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorZmkKK0FDX1NVQlNUKFBZVEhPTlRBUkdTKQorQUNfU1VCU1QoUFlUSE9OSU5TVEFMTFRBUkdTKQorQUNfU1VCU1QoUFlUSE9OVU5JTlNUQUxMVEFSR1MpCitBQ19TVUJTVChQWVRIT05DTEVBTlRBUkdTKQorQUNfU1VCU1QoUFlUSE9OQVJHUykKKworCmRpZmYgLS1naXQgYS9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcyBiL2NvbmZpZ3VyZS5kL2NvbmZpZ19wcm9qZWN0X3R5cGVzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOWM4NWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF90eXBlcwpAQCAtMCwwICsxLDU3IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyBDaGVja3MgZm9yIHR5cGVzCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTdGFuZGFyZCBjaGVja3M6CisjIworCisjIENoZWNrcyBmb3IgdHlwZWRlZnMsIHN0cnVjdHVyZXMsIGFuZCBjb21waWxlciBjaGFyYWN0ZXJpc3RpY3MuCitBQ19UWVBFX09GRl9UCitBQ19UWVBFX1BJRF9UCitBQ19IRUFERVJfVElNRQorCisKKyMjCisjICAgTW9yZSBjb21wbGV4IGNoZWNrczoKKyMjCisKKyMgICBDaGVjayBmb3IgJ3NvY2tsZW5fdCcgICAgICAgICAgICAgICAgICAgICAgICAgICAoSFAtVVgpCisjCitBQ19DSEVDS19UWVBFUyhbc29ja2xlbl90XSwsLFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBTVERDX0hFQURFUlMKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmXSkKKworCisjICAgQ2hlY2sgZm9yICdpbl9hZGRyX3QnCisjICAgICAgIE1heSBiZSBpbiA8bmV0aW5ldC9pbi5oPiAgICAgICAgICAgICAgICAgICAgICAgIChBSVgpCisjCitBQ19DSEVDS19UWVBFUyhbaW5fYWRkcl90XSwsLFsKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBTVERDX0hFQURFUlMKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNlbmRpZgorI2lmZGVmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmXSkKKworCisjICAgQ2hlY2sgZm9yICdzc2l6ZV90JworIyAgICAgICBOb3QgbmVjZXNzYXJpbHkgaW4gPHN5cy90eXBlcy5oPiAgICAgICAgICAgICAgICAob2xkZXIgTWluR1cpCisjCitBQ19DSEVDS19UWVBFUyhbc3NpemVfdF0sLCxbCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaWYgU1REQ19IRUFERVJTCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RkZGVmLmg+CisjZW5kaWZdKQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUgYi9jb25maWd1cmUuZC9jb25maWdfcHJvamVjdF93aXRoX2VuYWJsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTkzZmVjCi0tLSAvZGV2L251bGwKKysrIGIvY29uZmlndXJlLmQvY29uZmlnX3Byb2plY3Rfd2l0aF9lbmFibGUKQEAgLTAsMCArMSwxMDI0IEBACisjIC0qLSBhdXRvY29uZiAtKi0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyAgIENvbW1hbmQtbGluZSBwcm9jZXNzaW5nIC0gLS13aXRoLy0tZW5hYmxlCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworIyMKKyMgICBTeXN0ZW06IENvbXBpbGVyIHNldHRpbmdzCisjIworCitBQ19BUkdfV0lUSChjYywgWworQ29tcGlsZXIgT3B0aW9uczoKKyAgLS13aXRoLWNjPUNDICAgICAgICAgICAgICAgICAgICB1c2UgQ0MgdG8gY29tcGlsZSAoZGVmYXVsdD1nY2MpLl0sCisgICAgW0NDPSR3aXRoX2NjO2V4cG9ydCBDQ10pCisKK0FDX0FSR19XSVRIKGxpbmtjYywgWworICAtLXdpdGgtbGlua2NjPUNDICAgICAgICAgICAgICAgIHVzZSBDQyB0byBsaW5rIChkZWZhdWx0PWdjYykuXSwKKyAgICBbTElOS0NDPSR3aXRoX2xpbmtjYztleHBvcnQgTElOS0NDXSkKKworQUNfQVJHX1dJVEgoYXIsCitbICAtLXdpdGgtYXI9QVIgICAgICAgICAgICAgICAgICAgIHVzZSBBUiBhcyB0aGUgYXJjaGl2ZXIuXSwKKyAgICBbQVI9JHdpdGhfYXI7IGV4cG9ydCBBUl0pCisKK0FDX0FSR19XSVRIKGVuZGlhbm5lc3MsCitbICAtLXdpdGgtZW5kaWFubmVzcz1iaWd8bGl0dGxlICAgIGRlZmluZSBlbmRpYW5uZXNzIG9mIHRhcmdldCBwbGF0Zm9ybSB3aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3Jvc3MtY29tcGlsaW5nLl0sCisgICAgW2lmIHRlc3QgJHdpdGhfZW5kaWFubmVzcyAhPSAiYmlnIiAtYSAkd2l0aF9lbmRpYW5uZXNzICE9ICJsaXR0bGUiIDsgdGhlbgorICAgICAgIEFDX01TR19FUlJPUihbRW5kaWFubmVzcyBtdXN0IGJlIGJpZyBvciBsaXR0bGUsIG5vdCAiJHdpdGhfZW5kaWFubmVzcyIuXSk7CisgICAgIGZpCitdKQorCitBQ19BUkdfV0lUSChjZmxhZ3MsCitbICAtLXdpdGgtY2ZsYWdzPUNGTEFHUyAgICAgICAgICAgIHVzZSBDRkxBR1MgYXMgY29tcGlsZSB0aW1lIGFyZ3VtZW50cy5dLAorICAgIFtDRkxBR1M9JHdpdGhfY2ZsYWdzOyBleHBvcnQgQ0ZMQUdTXSkKKworQUNfQVJHX1dJVEgobGRmbGFncywKK1sgIC0td2l0aC1sZGZsYWdzPUxERkxBR1MgICAgICAgICAgdXNlIExERkxBR1MgYXMgbGluayB0aW1lIGFyZ3VtZW50cyB0byBsZC5dLAorICAgIFtMREZMQUdTPSR3aXRoX2xkZmxhZ3M7IGV4cG9ydCBMREZMQUdTXSkKKworQUNfQVJHX0VOQUJMRShhcy1uZWVkZWQsCitbICAtLWRpc2FibGUtYXMtbmVlZGVkICAgICAgICAgICAgIExpbmsgbGlicGVybCBhZ2FpbnN0IGFwcGxpY2F0aW9ucyByYXRoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGFuIE5ldC1TTk1QIGxpYnJhcmllcy4gVXNlIG9ubHkgaWYgdGhlIG90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2F5IGRvZXNuJ3Qgd29yay5dKQorCitBQ19BUkdfV0lUSChsaWJzLAorWyAgLS13aXRoLWxpYnM9TElCUyAgICAgICAgICAgICAgICB1c2UgTElCUyBhcyBsaW5rIHRpbWUgYXJndW1lbnRzIHRvIGxkLl0sCisgICAgW0xJQlM9JHdpdGhfbGliczsgZXhwb3J0IExJQlNdKQorCitBQ19BUkdfRU5BQkxFKHNpbGVudC1saWJ0b29sLAorWyAgLS1lbmFibGUtc2lsZW50LWxpYnRvb2wgICAgICAgICBQYXNzIC0tc2lsZW50IHRvIGxpYnRvb2wuXSwKKwlMSUJUT09MRkxBR1M9LS1zaWxlbnQpCitBQ19TVUJTVChMSUJUT09MRkxBR1MpCisKKworIyMKKyMgICBTeXN0ZW06IExpYnJhcnkgc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgoZG1hbGxvYywKKyAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1kbWFsbG9jPVBBVEhdLAorICAgICAgICAgICAgICAgIFtVc2UgZG1hbGxvYyBsaWJyYXJ5ICh3d3cuZG1hbGxvYy5jb20pXSkpCisKK05FVFNOTVBfQVJHX1dJVEgoZWZlbmNlLAorWyAgLS13aXRoLWVmZW5jZSAgICAgICAgICAgICAgICAgICBMb29rIGZvciBhbmQgdXNlIGxpYmVmZW5jZSAobWFsbG9jKS5dLAorICAgICAgdXNlX2VmZW5jZT0iJHdpdGh2YWwiKQorCit0cnlyc2FyZWY9bm8KK05FVFNOTVBfQVJHX1dJVEgocnNhcmVmLAorWyAgLS13aXRoLXJzYXJlZj1QQVRIICAgICAgICAgICAgICBMb29rIGZvciBsaWJyc2FyZWYgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICB0cnlyc2FyZWY9eWVzCisgICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KKyAgICAgIHRyeXJzYXJlZj1ubworICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCisgICAgICB0cnlyc2FyZWY9eWVzCisgICAgZmksCispCisKK3RyeW9wZW5zc2w9ZGVmYXVsdHllcworYXNrZWRvcGVuc3NsPW5vCitORVRTTk1QX0FSR19XSVRIKG9wZW5zc2wsCitbICAtLXdpdGgtb3BlbnNzbD1QQVRIICAgICAgICAgICAgIExvb2sgZm9yIG9wZW5zc2wgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICB0cnlvcGVuc3NsPXllcworICAgICAgYXNrZWRvcGVuc3NsPXllcworICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCisgICAgICB0cnlvcGVuc3NsPW5vCisgICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KKyAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKKyAgICAgIHRyeW9wZW5zc2w9eWVzCisgICAgICBhc2tlZG9wZW5zc2w9eWVzCisgICAgZmksCispCitpZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiID0gInhkZWZhdWx0eWVzIjsgdGhlbgorICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKC91c3IvbG9jYWwvc3NsKQorICAgICAgdHJ5b3BlbnNzbD15ZXMKK2ZpCitBQ19BUkdfV0lUSChbc3NsXSwsTkVUU05NUF9JTlZBTElEX1dJVEgoW29wZW5zc2xdKSkKK0FDX0FSR19FTkFCTEUoW3NzbF0sLE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvcGVuc3NsXSkpCisKK2Fza2VkcGtjcz1ubworTkVUU05NUF9BUkdfV0lUSChwa2NzLAorWyAgLS13aXRoLXBrY3M9UEFUSCAgICAgICAgICAgICAgICBMb29rIGZvciBwa2NzMTEgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICBhc2tlZHBrY3M9eWVzCisgICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KKyAgICAgIGFza2VkcGtjcz1ubworICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCisgICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCisgICAgICBhc2tlZHBrY3M9eWVzCisgICAgZmksCispCisKK3RyeWtyYjU9ZGVmYXVsdHllcworYXNrZWRrcmI1PW5vCitORVRTTk1QX0FSR19XSVRIKGtyYjUsCitbICAtLXdpdGgta3JiNT1QQVRIICAgICAgICAgICAgICAgIExvb2sgZm9yIGtyYjUgaW4gUEFUSC9saWIuXSwKKyAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCisgICAgICB0cnlrcmI1PXllcworICAgICAgYXNrZWRrcmI1PXllcworICAgICAga3JiNXBhdGg9dW5kZWYKKyAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgorICAgICAgdHJ5a3JiNT1ubworICAgICAga3JiNXBhdGg9dW5kZWYKKyAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgorICAgICAgdHJ5a3JiNT15ZXMKKyAgICAgIGFza2Vka3JiNT15ZXMKKyAgICAgIGtyYjVwYXRoPSR3aXRodmFsCisgICAgZmksCispCitpZiB0ZXN0ICJ4JHRyeWtyYjUiID0gInhkZWZhdWx0eWVzIjsgdGhlbgorICAgICAgdHJ5a3JiNT15ZXMKKyAgICAgIGtyYjVwYXRoPS91c3Iva2VyYmVyb3MKK2ZpCisKK05FVFNOTVBfQVJHX1dJVEgocnBtLAorWyAgLS13aXRob3V0LXJwbSAgICAgICAgICAgICAgICAgICBEb24ndCBpbmNsdWRlIHN1cHBvcnQgZm9yIHRoZSBSUE0gcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmFnZW1lbnQgc3lzdGVtIHdoZW4gYnVpbGRpbmcgdGhlIGhvc3QgTUlCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLl0pCisKKworIyMKKyMgICBQcm9qZWN0OiBCdWlsZCBjb25maWd1cmF0aW9uIHNldHRpbmdzCisjIworCisjICAgICAgIEluc3RhbGwgcHJlZml4CisjCitBQ19BUkdfV0lUSChpbnN0YWxsLXByZWZpeCwKK1sgIC0td2l0aC1pbnN0YWxsLXByZWZpeD1QQVRIICAgICAgSnVzdCBmb3IgaW5zdGFsbGluZywgcHJlZml4IGFsbCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyB3aXRoIFBBVEguICBUaGlzIGlzIGtub3duIG5vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHdvcmsgb24gc29tZSBzeXN0ZW1zIHdpdGggc2hhcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIChlZywgSFBVWCldLAorICAgICAgSU5TVEFMTF9QUkVGSVg9IiR3aXRodmFsIikKKworaWYgdGVzdCAieCRJTlNUQUxMX1BSRUZJWCIgPSAieHllcyIgOyB0aGVuCisgIEFDX01TR19FUlJPUihbLS13aXRoLWluc3RhbGwtcHJlZml4IHJlcXVpcmVzIGFuIGFyZ3VtZW50XSkKK2ZpCitpZiB0ZXN0ICJ4JElOU1RBTExfUFJFRklYIiA9ICJ4bm8iIDsgdGhlbgorICBJTlNUQUxMX1BSRUZJWD0iIgorZmkKK0FDX1NVQlNUKElOU1RBTExfUFJFRklYKQorCisKKyMgICAKKyMgICBTdWJzeXN0ZW1zIHRvIGJ1aWxkOgorIyAgICAgICBBZ2VudAorIworTkVUU05NUF9BUkdfRU5BQkxFKGFnZW50LAorWyAgLS1kaXNhYmxlLWFnZW50ICAgICAgICAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFnZW50IChzbm1wZCkuXSkKK2lmIHRlc3QgIngkZW5hYmxlX2FnZW50IiAhPSAieG5vIjsgdGhlbgorICAgU05NUEQ9J3NubXBkJChFWEVFWFQpJworICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhZ2VudCIKKyAgIFRSQVBMSUJTPSckKFRSQVBEV0lUSEFHRU5UKScKKyAgIFVTRVRSQVBMSUJTPSckKFVTRUFHRU5UTElCUyknCitlbHNlCisgICBTTk1QRD0iIgorICAgIyB3ZSBzdGlsbCBuZWVkL3dhbnQgdGhlIGFnZW50bGlicyAoZm9yIHN1YmFnZW50cywgZS5nLiBzbm1wdHJhcGQpCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIGFnZW50IgorICAgIyBidWlsZGluZyBzbm1wdHJhcGQgdy9vIGFnZW50bGlicyBkb2Vzbid0IHdvcmsgYXRtCisgICAjVFJBUExJQlM9JyQoVFJBUERXSVRIT1VUQUdFTlQpJworICAgI1VTRVRSQVBMSUJTPSckKFVTRUxJQlMpJworICAgVFJBUExJQlM9JyQoVFJBUERXSVRIQUdFTlQpJworICAgVVNFVFJBUExJQlM9JyQoVVNFQUdFTlRMSUJTKScKK2ZpCitBQ19TVUJTVChTTk1QRCkKK0FDX1NVQlNUKFRSQVBMSUJTKQorQUNfU1VCU1QoVVNFVFJBUExJQlMpCisKKyMgICAgICAgQXBwbGljYXRpb25zCisjCitORVRTTk1QX0FSR19FTkFCTEUoYXBwbGljYXRpb25zLAorWyAgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucyAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFwcHMgKHNubXBnZXQsIC4uLikuXSkKK2lmIHRlc3QgIngkZW5hYmxlX2FwcGxpY2F0aW9ucyIgIT0gInhubyI7IHRoZW4KKyAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYXBwcyIKK2ZpCisKKyMgICAgICAgTWFudWFsIHBhZ2VzCisjCitORVRTTk1QX0FSR19FTkFCTEUobWFudWFscywKK1sgIC0tZGlzYWJsZS1tYW51YWxzICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgdGhlIG1hbnVhbHMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21hbnVhbHMiICE9ICJ4bm8iOyB0aGVuCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIG1hbiIKK2ZpCisKKyMgICAgICAgU3VwcG9ydGluZyBzY3JpcHRzCisjCitORVRTTk1QX0FSR19FTkFCTEUoc2NyaXB0cywKK1sgIC0tZGlzYWJsZS1zY3JpcHRzICAgICAgICAgICAgICAgRG8gbm90IGluc3RhbGwgdGhlIHNjcmlwdHMgKG1pYjJjLCAuLi4pLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9zY3JpcHRzIiAhPSAieG5vIjsgdGhlbgorICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBsb2NhbCIKK2ZpCisKKyMgICAgICAgTUlCIGZpbGVzCisjCitBQ19BUkdfRU5BQkxFKG1pYnMsCitbICAtLWRpc2FibGUtbWlicyAgICAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIHRoZSBtaWIgZmlsZXMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21pYnMiICE9ICJ4bm8iOyB0aGVuCisgICBNQUlOU1VCUz0iJE1BSU5TVUJTIG1pYnMiCitmaQorIyB3aXRoLW1pYnMgaXMgdmFsaWQgdG9vLCBidXQgbWVhbnMgc29tZXRoaW5nIGVsc2UKKworQUNfU1VCU1QoTUFJTlNVQlMpCitBQ19NU0dfQ0hFQ0tJTkcoW3doYXQgdG8gYnVpbGQgYW5kIGluc3RhbGxdKQorQUNfTVNHX1JFU1VMVChbJE1BSU5TVUJTXSkKKworCisjICAgICAgIE1JQiBtb2R1bGUgdmFsaWRhdGlvbiAoZHVyaW5nICJjb25maWd1cmUiKQorIworTkVUU05NUF9BUkdfRU5BQkxFKG1pYi1jb25maWctY2hlY2tpbmcsCitbICAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nICAgIFR1cm5zIG9uIGV4dHJhIGNoZWNrcyBkdXJpbmcgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1pYiBtb2R1bGVzLiBBbnkgY29uZmxpY3RzIHdpbGwgY2F1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgdG8gYWJvcnQgKGRlZmF1bHQgaXMgdG8gaXNzdWUgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgYW5kIGNvbnRpbnVlLildLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgLW8gIiRlbmFibGV2YWwiID0gbm8gOyB0aGVuCisgICAgIHdpdGhfbWliX2NmZ19jaGVja3M9IiRlbmFibGV2YWwiCisgICBlbHNlCisgICAgIEFDX01TR19FUlJPUihbUGxlYXNlIHVzZSAtLWVuYWJsZS8tLWRpc2FibGUtbWliLWNvbmZpZy1jaGVja2luZ10pCisgICBmaV0sCisgIFt3aXRoX21pYl9jZmdfY2hlY2tzPSJubyJdKQorCitORVRTTk1QX0FSR19FTkFCTEUobWliLWNvbmZpZy1kZWJ1ZywKK1sgIC0tZW5hYmxlLW1pYi1jb25maWctZGVidWcgICAgICAgVHVybnMgb24gdmVyYm9zZSBvdXRwdXQgZHVyaW5nIG1pYiBtb2R1bGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgcHJvY2Vzc2luZy5dLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgLW8gIiRlbmFibGV2YWwiID0gbm8gOyB0aGVuCisgICAgIHdpdGhfbWliX2NmZ19kZWJ1Zz0iJGVuYWJsZXZhbCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgdXNlIC0tZW5hYmxlLy0tZGlzYWJsZS1taWItY29uZmlnLWRlYnVnXSkKKyAgIGZpXSwKKyAgW3dpdGhfbWliX2NmZ19kZWJ1Zz0ibm8iXSkKKworCisjICAgICAgIFZlcnNpb24tc3BlY2lmaWMgZmVhdHVyZXMKKyMKK0FDX0FSR19FTkFCTEUoW25ldy1mZWF0dXJlc10sCisgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtbmV3LWZlYXR1cmVzXSwKKyAgICAgICAgICAgICAgICBbQ29tcGlsZSBpbiBuZXcgTUlCIG1vZHVsZXMgYW5kIG90aGVyIGV4cGVyaW1lbnRhbCBmZWF0dXJlcworICAgICAgICAgICAgICAgICB3aGljaCBhcmUgZHVlIHRvIGJlIGluY2x1ZGVkIGluIGZ1dHVyZSByZWxlYXNlcy5dKV0pCisKK0FDX0FSR19FTkFCTEUoW29sZC1mZWF0dXJlc10sCisgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtb2xkLWZlYXR1cmVzXSwKKyAgICAgICAgICAgICAgICBbQ29tcGlsZSBpbiBvbGQgTUlCIG1vZHVsZXMgYW5kIG90aGVyIGRlcHJlY2F0ZWQgZmVhdHVyZXMKKyAgICAgICAgICAgICAgICAgd2hpY2ggd2VyZSByZXBsYWNlZCBpbiB0aGUgZGVmYXVsdCBidWlsZCBvZiB0aGlzIHJlbGVhc2UuXSldKQorCitBQ19BUkdfV0lUSChbZmVhdHVyZXMtb2ZdLAorICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1mZWF0dXJlcy1vZj12ZXJzaW9uXSwKKyAgICAgICAgICAgICAgICBbQ29tcGlsZSBpbiBNSUIgbW9kdWxlcyBhbmQgb3RoZXIgZmVhdHVyZXMgYXMgaWYgdGhpcyB3YXMKKyAgICAgICAgICAgICAgICAgcmVsZWFzZSAidmVyc2lvbiIgKGRlZmF1bHQgaXMgXUFDX1BBQ0tBR0VfVkVSU0lPTlspLl0pXSwsCisgICAgICAgIFt3aXRoX2ZlYXR1cmVzX29mPSRQQUNLQUdFX1ZFUlNJT05dKQorICAgCisKKyMgICAgICAgTWFudWFsIHByb21wdGluZyBkdXJpbmcgImNvbmZpZ3VyZSIKKyMKK05FVFNOTVBfQVJHX1dJVEgoZGVmYXVsdHMsCitbCitNaXNjZWxsYW5lb3VzOgorICAtLXdpdGgtZGVmYXVsdHMgICAgICAgICBVc2UgZGVmYXVsdHMgZm9yIHByb21wdGVkIHZhbHVlcy5dLAorICBbaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzIC1vICIkd2l0aHZhbCIgPSBubyA7IHRoZW4KKyAgICAgZGVmYXVsdHM9IiR3aXRodmFsIgorICAgZWxzZQorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSB1c2UgLS13aXRoLy0td2l0aG91dC1kZWZhdWx0c10pCisgICBmaV0sCisgIFtkZWZhdWx0cz0ibm8iXSkKKworCisjICAgICAgIFVDRCBjb21wYXRhYmlsaXR5CisjCitORVRTTk1QX0FSR19FTkFCTEUodWNkLXNubXAtY29tcGF0aWJpbGl0eSwKK1sgIC0tZW5hYmxlLXVjZC1zbm1wLWNvbXBhdGliaWxpdHkgSW5zdGFsbCB1Y2Qtc25tcCBsb29rLWFsaWtlIGhlYWRlcnMgYW5kIGxpYnMuCitdKQorCitpZiB0ZXN0ICJ4JGVuYWJsZV91Y2Rfc25tcF9jb21wYXRpYmlsaXR5IiA9ICJ4eWVzIiA7IHRoZW4JCisgIGluc3RhbGx1Y2RoZWFkZXJzPWluc3RhbGx1Y2RoZWFkZXJzCisgIGluc3RhbGx1Y2RsaWJzPWluc3RhbGx1Y2RsaWJzCisgIEFDX01TR19DQUNIRV9BREQoVUNELVNOTVAgY29tcGF0YWJpbGl0eTogICAgIGVuYWJsZWQpCitmaQorQUNfU1VCU1QoaW5zdGFsbHVjZGhlYWRlcnMpCitBQ19TVUJTVChpbnN0YWxsdWNkbGlicykKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IE1JQiBjb25maWd1cmF0aW9uIHNldHRpbmdzCisjIworCitORVRTTk1QX0FSR19FTkFCTEUobWliLWxvYWRpbmcsCitbICAtLWRpc2FibGUtbWliLWxvYWRpbmcgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGNvZGUgdGhhdCBwYXJzZXMgYW5kIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlwdWxhdGVzIHRoZSBtaWIgZmlsZXMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21pYl9sb2FkaW5nIiA9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIG1pYiBsb2FkaW5nIGFuZCBwYXJzaW5nIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCitmaQorCitORVRTTk1QX0FSR19XSVRIKG1pYmRpcnMsCitbICAtLXdpdGgtbWliZGlycz0iZGlyMTpkaXIyOiIgICBEZWZhdWx0IGRpcmVjdG9yaWVzIHRvIGxvb2sgZm9yIG1pYnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IFwkSE9NRS8uc25tcC9taWJzOkRBVEFESVIvc25tcC9taWJzKV0sCisgICAgW05FVFNOTVBfREVGQVVMVF9NSUJESVJTPSIkd2l0aF9taWJkaXJzIgorICAgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCRElSUywiJHdpdGhfbWliZGlycyIsCisgICAgICAgIFtkZWZhdWx0IGxvY2F0aW9uIHRvIGxvb2sgZm9yIG1pYnMgdG8gbG9hZCB1c2luZyB0aGUgYWJvdmUgdG9rZW5zCisgICAgICAgICBhbmQvb3IgdGhvc2UgaW4gdGhlIE1JQlMgZW52cmlvbm1lbnQgdmFyaWFibGVdKV0pCisKK0FDX0FSR19XSVRIKG1pYnMsCitbICAtLXdpdGgtbWlicz0iaXRlbTE6aXRlbTI6IiAgICBEZWZhdWx0IG1pYiBJRHMgdG8gcmVhZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVGhlIGRlZmF1bHQgbGlzdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU05NUHYyLU1JQjpJRi1NSUI6SVAtTUlCOlRDUC1NSUI6VURQLU1JQiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHRoZSBhZGRpdGlvbiBvZiBhbnkgbWlicyB1c2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnkgdGhlIG1pYiBtb2R1bGVzIHRoZSBhZ2VudCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyZWQgd2l0aCldLAorICAgIE5FVFNOTVBfREVGQVVMVF9NSUJTPSIkd2l0aF9taWJzIikKKyMgZW5hYmxlLW1pYnMgaXMgdmFsaWQgdG9vLCBidXQgbWVhbnMgc29tZXRoaW5nIGVsc2UKKworTkVUU05NUF9BUkdfV0lUSChtaWJmaWxlcywKK1sgIC0td2l0aC1taWJmaWxlcz0iZmlsZTE6ZmlsZTIiIERlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6ICBub25lLiAgdXNlcyBJRHMgYWJvdmUgaW5zdGVhZC4pXSwKKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQkZJTEVTLCIkd2l0aF9taWJmaWxlcyIsCisgICAgICAgIFtkZWZhdWx0IG1pYiBmaWxlcyB0byBsb2FkLCBzcGVjaWZpZWQgYnkgcGF0aC5dKSkKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IFNlY3VyaXR5IGNvbmZpZ3VyYXRpb24KKyMjCisKK05FVFNOTVBfQVJHX0VOQUJMRShkZXMsCitbICAtLWRpc2FibGUtZGVzICAgICAgICAgICAgICAgICAgIERvIG5vdCBzdXBwb3J0IERFUyBlbmNyeXB0aW9uLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9kZXMiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfREVTXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIERFUyBlbmNyeXB0aW9uIHNob3VsZCBub3QgYmUgc3VwcG9ydGVkXSkKK2ZpCisKK05FVFNOTVBfQVJHX0VOQUJMRShwcml2YWN5LAorWyAgLS1kaXNhYmxlLXByaXZhY3kgICAgICAgICAgICAgICBEb24ndCBjb21waWxlIGluIHN1cHBvcnQgZm9yIHByaXZhY3kgKGVuY3J5cHRpb24pLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9wcml2YWN5IiAhPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYsIDEsCisgICAgW2RlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIHN1cHBvcnQgZm9yIGJvdGggYXV0aGVudGljYXRpb24gYW5kCisgICAgIHByaXZhY3kgc3VwcG9ydC5dKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKG1kNSwKK1sgIC0tZGlzYWJsZS1tZDUgICAgICAgICAgICAgICAgICAgRG8gbm90IHN1cHBvcnQgTUQ1IGF1dGhlbnRpY2F0aW9uLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfTUQ1XSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIE1ENSBhdXRoZW50aWNhdGlvbiBzaG91bGQgbm90IGJlIHN1cHBvcnRlZF0pCitmaQorCitORVRTTk1QX0FSR19FTkFCTEUoaW50ZXJuYWwtbWQ1LAorWyAgLS1lbmFibGUtaW50ZXJuYWwtbWQ1ICAgICAgICAgICBVc2UgdGhlIGludGVybmFsIE1ENSBzdXBwb3J0Ll0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9pbnRlcm5hbF9tZDUiID0gInh5ZXMiOyB0aGVuCisgIGlmIHRlc3QgIngkZW5hYmxlX21kNSIgPSAieG5vIjsgdGhlbgorICAgIEFDX01TR19FUlJPUihZb3UgY2FuIG5vdCBzcGVjaWZ5IGJvdGggLS1lbmFibGUtaW50ZXJuYWwtbWQ1IGFuZCAtLWRpc2FibGUtbWQ1KQorICBlbHNlCisgICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENSwgMSwKKyAgICAgIFtkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgTUQ1IGNvZGUgLi4uXSkKKyAgZmkKK2ZpCisKKworIyMKKyMgICBQcm9qZWN0OiBMaWJyYXJ5OiBNaXNjIGNvbmZpZ3VyYXRpb24KKyMjCisKK05FVFNOTVBfQVJHX1dJVEgob3BhcXVlLXNwZWNpYWwtdHlwZXMsCitbICAtLXdpdGhvdXQtb3BhcXVlLXNwZWNpYWwtdHlwZXMgIERvbid0IHVzZSBzcGVjaWFsIG9wYXF1ZSBlbmNvZGluZ3MuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUCBub3JtYWxseSBjYW5ub3QgaGFuZGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxvYXRpbmcgbnVtYmVycywgbm9yIGxhcmdlIDY0IGJpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVnZXJzIHdlbGwuICBCeSBkZWZhdWx0LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtc25tcCBwYWNrYWdlIGNvbXBpbGVzIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlc2UgZXh0cmEgZGF0YXR5cGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluIGEgbGVnYWwgd2F5KV0pCisjIE9ubHkgZGVmaW5lIGlmIHNwZWNpZmljYWxseSBjaG9zZW4gYXMgLS13aXRob3V0IChpLmUuLCBkZWZhdWx0IHRvIHRydWUpLgoraWYgdGVzdCAieCR3aXRoX29wYXF1ZV9zcGVjaWFsX3R5cGVzIiAhPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTLCAxLAorICAgIFtTaG91bGQgd2UgY29tcGlsZSB0byB1c2Ugc3BlY2lhbCBvcGFxdWUgdHlwZXM6IGZsb2F0LCBkb3VibGUsIGNvdW50ZXI2NCwKKyAgICAgaTY0LCB1aTY0LCB1bmlvbj9dKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKGlwdjYsCitbICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIElQdjYgcmVhZHkgdmVyc2lvbi5dLAorICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgorICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0lQVjYsIDEsCisgICAgICAgIFtkZWZpbmUgaWYgeW91IHdhbnQgdG8gZW5hYmxlIElQdjYgc3VwcG9ydF0pCisgICAgZmldKQorCitORVRTTk1QX0FSR19XSVRIKGxvZ2ZpbGUsCitbICAtLXdpdGgtbG9nZmlsZT0ibG9jYXRpb24iICAgICAgIERlZmF1bHQgbG9nIGZpbGUgbG9jYXRpb24gZm9yIHNubXBkLl0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFPSIkd2l0aF9sb2dmaWxlIikKK2lmIHRlc3QgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0xPR0ZJTEUiID0gIm5vIjsgdGhlbgorICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRT0ibm9uZSIKK2ZpCisKK05FVFNOTVBfQVJHX1dJVEgocGVyc2lzdGVudC1kaXJlY3RvcnksCitbICAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9ImRpcmVjdG9yeSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGRpcmVjdG9yeSBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuXSxhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZPSIkd2l0aF9wZXJzaXN0ZW50X2RpcmVjdG9yeSIpCisKK05FVFNOTVBfQVJHX1dJVEgocGVyc2lzdGVudC1tYXNrLAorWyAgLS13aXRoLXBlcnNpc3RlbnQtbWFzaz0ibWFzayIgIERlZmF1bHQgbWFzayBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IDA3NyldLAorICBbaWYgdGVzdCBbYGV4cHIgIlgkd2l0aHZhbCIgOiAnWFswLTddKiQnYF0gLWVxIDQgOyB0aGVuCisgICAgIEFDX01TR19SRVNVTFQoW3VzaW5nIHBlcnNpc3RlbnQgbWFzayAkd2l0aHZhbF0pCisgICAgIHdpdGh2YWw9IjAkd2l0aHZhbCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgcHJvdmlkZSBhIHRocmVlIGRpZ2l0IG9jdGFsIHBlcnNpc3RlbnQgbWFzayB2YWx1ZV0pCisgICBmaV0sCisgIFt3aXRodmFsPTA3NworICAgQUNfTVNHX1JFU1VMVChbdXNpbmcgZGVmYXVsdCBwZXJzaXN0ZW50IG1hc2sgJHdpdGh2YWxdKV0pCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9QRVJTSVNURU5UX01BU0ssJHdpdGh2YWwsCisgICBbdW1hc2sgcGVybWlzc2lvbnMgdG8gc2V0IHVwIHBlcnNpc3RlbnQgZmlsZXMgd2l0aF0pCisKK05FVFNOTVBfQVJHX1dJVEgoY29weV9wZXJzaXN0ZW50X2ZpbGVzLAorWyAgLS13aXRoLWNvcHktcGVyc2lzdGVudC1maWxlcz0ibm8iIERvbid0IGNvcHkgcGVyc2lzdGVudCBmaWxlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciB1c2UgInllcyIgdG8gY29weSB0aGVtKS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogeWVzKV0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTPSIkd2l0aF9jb3B5X3BlcnNpc3RlbnRfZmlsZXMiKQorCitkZWZhdWx0X3RlbXBfZmlsZV9wYXR0ZXJuPSIvdG1wL3NubXBkWFhYWFhYIgorTkVUU05NUF9BUkdfV0lUSCh0ZW1wLWZpbGUtcGF0dGVybiwKK1sgIC0td2l0aC10ZW1wLWZpbGUtcGF0dGVybj1QQVRURVJOICBQYXR0ZXJuIG9mIHRlbXBvcmFyeSBmaWxlcyAoRGVmYXVsdDogL3RtcC9zbm1wZFhYWFhYWCldLAorICBbaWYgdGVzdCBgZXhwciAiWCR3aXRodmFsIiA6ICIuKlhYWFhYWCQiYCAtbmUgMCA7IHRoZW4KKyAgICAgQUNfTVNHX1JFU1VMVCh1c2luZyB0ZW1wb3JhcnkgZmlsZSBwYXR0ZXJuICR3aXRodmFsKQorICAgZWxzZQorICAgICBBQ19NU0dfRVJST1IoW3RlbXBvcmFyeSBmaWxlIHBhdHRlbnMgbXVzdCBlbmQgd2l0aCA2IFgnc10pCisgICBmaV0sCisgIFt3aXRodmFsPSIkZGVmYXVsdF90ZW1wX2ZpbGVfcGF0dGVybiIKKyAgIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCB0ZW1wb3JhcnkgZmlsZSBwYXR0ZXJuICR3aXRodmFsKV0pCitBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTiwiJHdpdGh2YWwiLAorICBbUGF0dGVybiBvZiB0ZW1wb3JhcnkgZmlsZXNdKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogVmVyc2lvbiBjb25maWd1cmF0aW9uCisjIworCitTTk1QX1ZFUlNJT05TPSIiCitORVRTTk1QX0FSR19FTkFCTEUoc25tcHYxLAorWyAgLS1kaXNhYmxlLXNubXB2MSAgICAgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBjb2RlIHRoYXQgaW1wbGVtZW50cyBTTk1QdjEuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3NubXB2MSIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9TTk1QVjFdLCAxLCAKKyAgICAgICAgICAgIFtEZWZpbmUgaWYgU05NUHYxIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCitlbHNlCisgIFNOTVBfVkVSU0lPTlM9IiRTTk1QX1ZFUlNJT05TIDEiCitmaQorCitORVRTTk1QX0FSR19FTkFCTEUoc25tcHYyYywKK1sgIC0tZGlzYWJsZS1zbm1wdjJjICAgICAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgY29kZSB0aGF0IGltcGxlbWVudHMgU05NUHYyYy5dKQoraWYgdGVzdCAieCRlbmFibGVfc25tcHYyYyIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9TTk1QVjJDXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIFNOTVB2MmMgY29kZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkXSkKK2Vsc2UKKyAgU05NUF9WRVJTSU9OUz0iJFNOTVBfVkVSU0lPTlMgMmMiCitmaQorCitTTk1QX1ZFUlNJT05TPSIkU05NUF9WRVJTSU9OUyAzIgorQUNfTVNHX0NBQ0hFX0FERChTTk1QIFZlcnNpb25zIFN1cHBvcnRlZDogICAkU05NUF9WRVJTSU9OUykKKworTkVUU05NUF9BUkdfV0lUSChkZWZhdWx0LXNubXAtdmVyc2lvbiwKK1sgIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbj0iMyIgRGVmYXVsdCB2ZXJzaW9uIG9mIFNOTVAgdG8gdXNlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IDMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZWdhbCB2YWx1ZXM6IDEsIDIgKGZvciBTTk1QdjJjKSBvciAzLl0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTj0iJHdpdGhfZGVmYXVsdF9zbm1wX3ZlcnNpb24iKQorCisjIHdlIHRlc3QgdGhpcyBub3cgYW5kIGxhdGVyIGFzIHdlbGwuICB3ZSB0ZXN0IGl0IG5vdyBzbyBjb25maWd1cmUgY2FuIGRpZQorIyBlYXJseSBvbiB3aXRoIGFuIGVycm9yIHJhdGhlciB0aGFuIHdhaXRpbmcgdGlsbCB0aGUgZW5kIG9mIHRoZSBzY3JpcHQuCitjYXNlICIke2FjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04tM30iIGluCisgIFtbMTIzXV0pIDs7CisgIDJjKSBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPTIgOzsKKyAgKikKKyAgICBBQ19NU0dfRVJST1IoW0lsbGVnYWwgdmVyc2lvbiBudW1iZXIuICBPbmx5IDEsIDIgKGZvciBTTk1QdjJjKSBhbmQgMyBhcmUgc3VwcG9ydGVkLl0pCisgICAgOzsKK2VzYWMKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IFRyYW5zcG9ydCBtb2R1bGVzCisjIworCitBQ19BUkdfV0lUSCh0cmFuc3BvcnRzLAorWyAgLS13aXRoLXRyYW5zcG9ydHM9InQxIHQyIC4uLiIgICBDb21waWxlIGluIHRoZSBnaXZlbiBTTk1QIHRyYW5zcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlcyAoc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIGxpc3QpLl0pCitBQ19BUkdfV0lUSChvdXRfdHJhbnNwb3J0cywKK1sgIC0td2l0aC1vdXQtdHJhbnNwb3J0cz0idDEgLi4uIiAgRXhjbHVkZSBsaXN0ZWQgU05NUCB0cmFuc3BvcnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3BhY2Ugb3IgY29tbWEgc2VwYXJhdGVkIGxpc3QpLgorCisgIEF2YWlsYWJsZSBTTk1QIHRyYW5zcG9ydCBtb2R1bGVzIGFyZToKKworICAgIFVEUCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVRFAvSVAuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYWx3YXlzIGNvbXBpbGVkIGluLgorICAgIFVEUElQdjYgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVRFAvSVB2Ni4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBhdmFpbGFibGUgZm9yIExpbnV4LCBTb2xhcmlzIGFuZAorICAgICAgICAgICAgICAgIEZyZWVCU0QgYXQgbGVhc3QuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBpZiBJUHY2IHN1cHBvcnQgaXMgZW5hYmxlZC4KKyAgICBUQ1BJUHY2ICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVURQL0lQdjYuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYXZhaWxhYmxlIGZvciBMaW51eCwgU29sYXJpcyBhbmQKKyAgICAgICAgICAgICAgICBGcmVlQlNEIGF0IGxlYXN0LgorICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgaWYgSVB2NiBzdXBwb3J0IGlzIGVuYWJsZWQuCisgICAgVENQICAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFRDUC9JUC4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0LCBidXQgbWF5IGJlIG9taXR0ZWQuCisgICAgVW5peCAgICAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVuaXggZG9tYWluIHByb3RvY29scy4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBjb21waWxlZCBpbiBieSBkZWZhdWx0IGV4Y2VwdCBvbiBXaW4zMgorICAgICAgICAgICAgICAgIHBsYXRmb3JtcywgYW5kIG1heSBiZSBvbWl0dGVkLgorICAgIENhbGxiYWNrICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBhbiBpbnRlcm5hbCBsb2NhbGx5IGNvbm5lY3RlZCBwYWlyCisgICAgICAgICAgICAgICAgb2Ygc25tcF9zZXNzaW9ucy4KKyAgICBBbGlhcyAgICAgICBUaGUgYWxpYXMgdHJhbnNwb3J0IHNpbXBseSBsZXRzIHlvdSBkZWZpbmUgbW9yZSBjb21wbGV4CisgICAgICAgICAgICAgICAgdHJhbnNwb3J0IHN0cmluZ3MgYW5kIGFsaWFzIHRoZW0gdG8gc2ltcGxlIG5hbWVzIGluCisgICAgICAgICAgICAgICAgdGhlIHNubXAuY29uZiBmaWxlLgorICAgIEFBTDVQVkMgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBBQUw1IFBWQ3MuCisgICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgcHJlc2VudGx5IG9ubHkgYXZhaWxhYmxlIGZvciBMaW51eCwKKyAgICAgICAgICAgICAgICBpcyBuZXZlciBjb21waWxlZCBpbiBieSBkZWZhdWx0IGFuZCBtYXkgYmUgb21pdHRlZC4KKyAgICBJUFggICAgICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgSVBYIHBlciBSRkMgMTQyMC4KKyAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBwcmVzZW50bHkgb25seSBhdmFpbGFibGUgZm9yIExpbnV4LAorICAgICAgICAgICAgICAgIGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgYW5kIG1heSBiZSBvbWl0dGVkLgorICAgIFNTSCAgICAgICAgIChhbHBoYSkgc3VwcG9ydCBmb3IgdHVubmVsaW5nIFNOTVAgb3ZlciBTU0gKKyAgICBEVExTVURQICAgICAoYWxwaGEpIHN1cHBvcnQgZm9yIHR1bm5lbGluZyBTTk1QIG92ZXIgRFRMUy9VRFAKK10pCisKKyMKKyMgQ2F0Y2ggY29tbW9uIG1pc3Rha2VzIGluIHRyYW5zcG9ydCBvcHRpb25zCisjCitBQ19BUkdfV0lUSCh0cmFuc3BvcnQsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbdHJhbnNwb3J0c10pKQorQUNfQVJHX1dJVEgob3V0LXRyYW5zcG9ydCwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtdHJhbnNwb3J0c10pKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeTogU2VjdXJpdHkgbW9kdWxlcworIyMKKworTkVUU05NUF9BUkdfV0lUSChzZWN1cml0eS1tb2R1bGVzLAorWyAgLS13aXRoLXNlY3VyaXR5LW1vZHVsZXM9InMxIHMyIC4uLiIgICBDb21waWxlIGluIHRoZSBnaXZlbiBTTk1QIHNlY3VyaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgc2VydmljZXMgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS4KKworICBBdmFpbGFibGUgU05NUCBzZWN1cml0eSBzZXJ2aWNlczoKKworICAgICAgICB1c20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdXNlciBiYXNlZCBTTk1QIHNlY3VyaXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWlyZWQgYW5kIGFsd2F5cyBjb21waWxlZCBpbikKKyAgICAgICAga3NtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIGtlcmJlcm9zIGJhc2VkIFNOTVAgc2VjdXJpdHkKKyAgICAgICAgdHNtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBUcmFuc3BvcnQtYmFzZWQgc2VjdXJpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIChmb3IgdXNlIHdpdGggdGhlIFNTSCBhbmQgRFRMU1VEUCB0cmFuc3BvcnRzKQorXSkKKworCisjIworIyAgIFByb2plY3Q6IExpYnJhcnk6IERldmVsb3Blci1yZWxhdGVkIHNldHRpbmdzCisjIworCitORVRTTk1QX0FSR19FTkFCTEUoZGVidWdnaW5nLAorWyAgLS1lbmFibGUtZGVidWdnaW5nICAgICAgICAgICAgICBPdXRwdXRzIGV4dHJhIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiBhdCBhbGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lcy4gIE5vcm1hbGx5LCB5b3Ugc2hvdWxkIG5vdCBlbmFibGUgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidXQgaW5zdGVhZCB1c2UgdGhlIC1EIGZsYWcgb2YgdGhlIGNvbW1hbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIHRvZ2dsZXMgZGVidWdpbmcgb3V0cHV0IGF0IHJ1bnRpbWUuCisgIC0tZGlzYWJsZS1kZWJ1Z2dpbmcgICAgICAgICAgICAgRGlzYWxsb3dzIGRlYnVnZ2luZyBjb2RlIHRvIGJlIGJ1aWx0IGluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgbWlnaHQgcHJvdmlkZSBzb21lIHNwZWVkIGJlbmVmaXRzLl0sCisgICAgQUNfREVGSU5FKE5FVFNOTVBfQUxXQVlTX0RFQlVHKSkKK2lmIHRlc3QgIngkZW5hYmxlX2RlYnVnZ2luZyIgPSAieG5vIjsgdGhlbgorICAgIEFDX0RFRklORShORVRTTk1QX05PX0RFQlVHR0lORykKK2ZpCisKK05FVFNOTVBfQVJHX0VOQUJMRShkZXZlbG9wZXIsCitbICAtLWVuYWJsZS1kZXZlbG9wZXIgICAgICAgICAgICAgIFR1cm5zIG9uIHN1cGVyLWR1cGVyLWV4dHJhLWNvbXBpbGUtd2FybmluZ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHVzaW5nIGdjYy5dLAorICBbaWYgdGVzdCAiJGVuYWJsZXZhbCIgPSB5ZXMgOyB0aGVuCisgICAgIGRldmVsb3Blcj0ieWVzIgorICAgZWxpZiB0ZXN0ICIkZW5hYmxldmFsIiAhPSBubyA7IHRoZW4KKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgdXNlIC0tZW5hYmxlLy0tZGlzYWJsZS1kZXZlbG9wZXJdKQorICAgZmldKQorCitORVRTTk1QX0FSR19FTkFCTEUodGVzdGluZy1jb2RlLAorWyAgLS1lbmFibGUtdGVzdGluZy1jb2RlICAgICAgICAgICBFbmFibGVzIHNvbWUgY29kZSBzZWN0aW9ucyB0aGF0IHNob3VsZCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGJlIHVzZWQgZm9yIHRlc3Rpbmcgb2YgY2VydGFpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVAgZnVuY3Rpb25hbGl0aWVzLiAgVGhpcyBzaG91bGQgKm5vdCogCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdHVybmVkIG9uIGZvciBwcm9kdWN0aW9uIHVzZS4gIEV2ZXIuXSwKKyAgW2lmIHRlc3QgIiRlbmFibGV2YWwiID0geWVzIDsgdGhlbgorICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFLCAxLCBbdGVzdGluZyBjb2RlIHNlY3Rpb25zLl0pCisgICBlbGlmIHRlc3QgIiRlbmFibGV2YWwiICE9IG5vIDsgdGhlbgorICAgICBBQ19NU0dfRVJST1IoW1BsZWFzZSB1c2UgLS1lbmFibGUvLS1kaXNhYmxlLXRlc3RpbmctY29kZV0pCisgICBmaV0pCisKK05FVFNOTVBfQVJHX0VOQUJMRShyZWVudHJhbnQsCitbICAtLWVuYWJsZS1yZWVudHJhbnQgICAgICAgICAgICAgIEVuYWJsZXMgbG9ja2luZyBmdW5jdGlvbnMgdGhhdCBwcm90ZWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSByZXNvdXJjZXMgaW4gc29tZSBtdWx0aS10aHJlYWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHMuICBUaGlzIGRvZXMgbm90IGd1YXJhbnRlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC1zYWZlIG9wZXJhdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHkgYW4gZXhwZXJpbWVudGFsIHNldHRpbmcuXSwKKyAgW2lmIHRlc3QgIiRlbmFibGV2YWwiID0geWVzIC1vICIkZW5hYmxldmFsIiA9IG5vIDsgdGhlbgorICAgICB3aXRoX3Jlc19sb2Nrcz0iJGVuYWJsZXZhbCIKKyAgIGVsc2UKKyAgICAgQUNfTVNHX0VSUk9SKFtQbGVhc2UgdXNlIC0tZW5hYmxlLy0tZGlzYWJsZS1yZWVudHJhbnRdKQorICAgZmldLAorICBbd2l0aF9yZXNfbG9ja3M9Im5vIl0pCisKK05FVFNOTVBfQVJHX0VOQUJMRShkZXByZWNhdGVkLAorWyAgLS1kaXNhYmxlLWRlcHJlY2F0ZWQgICAgICAgICAgICBEb24ndCBjb21waWxlIGluIGRlcHJlY2F0ZWQgZnVuY3Rpb25zLl0pCitpZiB0ZXN0ICIkZW5hYmxlX2RlcHJlY2F0ZWQiID0gbm8gOyB0aGVuCisgICBBQ19ERUZJTkUoW05FVFNOTVBfTk9fREVQUkVDQVRFRF9GVU5DVElPTlNdLCAxLAorICAgICAgICAgICAgIFtEZWZpbmUgdG8gc3VwcHJlc3MgaW5jbHVzaW9uIG9mIGRlcHJlY2F0ZWQgZnVuY3Rpb25zXSkKK2ZpCisKKworCisjIworIyAgIFByb2plY3Q6IEFnZW50IGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgocm9vdC1hY2Nlc3MsCitbCitDb25maWd1cmluZyB0aGUgYWdlbnQ6CisgIC0td2l0aG91dC1yb290LWFjY2VzcyAgICAgICAgICAgVGhlIHNubXBkIGFnZW50IHdvbid0IHJlcXVpcmUgcm9vdCBhY2Nlc3MgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW4gaXQuICBUaGUgaW5mb3JtYXRpb24gaXQgcmV0dXJucyBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWItSUkgdHJlZSBtYXkgbm90IGJlIGNvcnJlY3QsIGhvd2V2ZXIuXSkKKyMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuCitpZiB0ZXN0ICJ4JHdpdGhfcm9vdF9hY2Nlc3MiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MsIDEsCisgICAgW0lmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIGRvbid0IGV4aXQgdXBvbiBrbWVtIGVycm9yc10pCitmaQorCitORVRTTk1QX0FSR19XSVRIKGttZW0tdXNhZ2UsCitbICAtLXdpdGhvdXQta21lbS11c2FnZSAgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGFueSBjb2RlIHJlbGF0ZWQgdG8gdGhlIHVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGttZW0uXSkKKyMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuCitpZiB0ZXN0ICJ4JHdpdGhfa21lbV91c2FnZSIgPSAieG5vIjsgdGhlbgorICBBQ19ERUZJTkUoTkVUU05NUF9OT19LTUVNX1VTQUdFLCAxLCBbSWYgd2UgZG9uJ3Qgd2FudCB0byB1c2Uga21lbS5dKQorZmkKKworTkVUU05NUF9BUkdfV0lUSChkdW1teS12YWx1ZXMsCitbICAtLXdpdGgtZHVtbXktdmFsdWVzICAgICAgICAgICAgIFByb3ZpZGUgJ3BsYWNlaG9sZGVyJyBkdW1teSB2YWx1ZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIGlzIG5vdCBhdmFpbGFibGUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBpcyB0ZWNobmljYWxseSBub3QgY29tcGxpYW50IHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUCBzcGVjaWZpY2F0aW9ucywgYnV0IHdhcyBob3cgdGhlIGFnZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlcmF0ZWQgZm9yIHZlcnNpb25zIDwgNC4wLl0pCisjIERlZmluZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IHN1cHByZXNzZWQgKGkuZS4sIG9wdGlvbiBkZWZhdWx0cyB0byBmYWxzZSkuCitpZiB0ZXN0ICJ4JHdpdGhfZHVtbXlfdmFsdWVzIiAhPSAieHllcyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfTk9fRFVNTVlfVkFMVUVTLCAxLAorICAgIFtJZiB5b3UgZG9uJ3Qgd2FudCB0aGUgYWdlbnQgdG8gcmVwb3J0IG9uIHZhcmlhYmxlcyBpdCBkb2Vzbid0IGhhdmUKKyAgICAgZGF0YSBmb3JdKQorZmkKKworTkVUU05NUF9BUkdfRU5BQkxFKHNldC1zdXBwb3J0LAorWyAgLS1kaXNhYmxlLXNldC1zdXBwb3J0ICAgICAgICAgICBEbyBub3QgYWxsb3cgU05NUCBzZXQgcmVxdWVzdHMuXSkKK2lmIHRlc3QgIngkZW5hYmxlX3NldF9zdXBwb3J0IiA9ICJ4bm8iOyB0aGVuCisgIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUXSwgMSwgCisgICAgICAgICAgICBbRGVmaW5lIGlmIFNOTVAgU0VUIHN1cHBvcnQgc2hvdWxkIGJlIGRpc2FibGVkXSkKK2ZpCisKKworTkVUU05NUF9BUkdfV0lUSChzeXNfY29udGFjdCwKK1sgIC0td2l0aC1zeXMtY29udGFjdD0id2hvQHdoZXJlIiAgRGVmYXVsdCBzeXN0ZW0gY29udGFjdC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiBMT0dJTkBET01BSU5OQU1FKV0sCisgICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9TWVNfQ09OVEFDVD0iJHdpdGhfc3lzX2NvbnRhY3QiKQorCitORVRTTk1QX0FSR19XSVRIKHN5c19sb2NhdGlvbiwKK1sgIC0td2l0aC1zeXMtbG9jYXRpb249ImxvY2F0aW9uIiAgRGVmYXVsdCBzeXN0ZW0gbG9jYXRpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogVW5rbm93bildLAorICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0xPQz0iJHdpdGhfc3lzX2xvY2F0aW9uIikKKworCisKKyMjCisjICAgUHJvamVjdDogQWdlbnQ6IEV4dGVuc2liaWxpdHkgY29uZmlndXJhdGlvbgorIyMKKworTkVUU05NUF9BUkdfRU5BQkxFKGxvY2FsLXNtdXgsCitbICAtLWVuYWJsZS1sb2NhbC1zbXV4ICAgICAgICAgICAgIFJlc3RyaWN0IFNNVVggY29ubmVjdGlvbnMgdG8gbG9jYWxob3N0IChieSBkZWZhdWx0KS5dLAorICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9sb2NhbF9zbXV4IiA9ICJ4eWVzIjsgdGhlbgorICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVgsIDEsCisgICAgICAgICAgW2RlZmluZSBpZiB5b3Ugd2FudCB0byByZXN0cmljdCBTTVVYIGNvbm5lY3Rpb25zIHRvIGxvY2FsaG9zdAorICAgICAgICAgICBieSBkZWZhdWx0XSkKKyAgICBmaV0pCisKK05FVFNOTVBfQVJHX0VOQUJMRShhZ2VudHgtZG9tLXNvY2stb25seSwKK1sgIC0tZW5hYmxlLWFnZW50eC1kb20tc29jay1vbmx5ICAgRGlzYWJsZSBVRFAvVENQIHRyYW5zcG9ydHMgZm9yIGFnZW50eC5dLAorQUNfREVGSU5FKE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFksIDEsCisgICAgW2RlZmluZSBpZiBhZ2VudHggdHJhbnNwb3J0IGlzIHRvIHVzZSBkb21haW4gc29ja2V0cyBvbmx5XSkpCisKK05FVFNOTVBfQVJHX0VOQUJMRShzbm1wdHJhcGQtc3ViYWdlbnQsCitbICAtLWRpc2FibGUtc25tcHRyYXBkLXN1YmFnZW50ICAgIERpc2FibGUgYWdlbnR4IHN1YmFnZW50IGNvZGUgaW4gc25tcHRyYXBkLl0pCitpZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdHJhcGRfc3ViYWdlbnQiID0gInhubyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYLCAxLAorICAgIFtkZWZpbmUgaWYgeW91IGRvIG5vdCB3YW50IHNubXB0cmFwZCB0byByZWdpc3RlciBhcyBhbiBBZ2VudFggc3ViYWdlbnRdKQorZmkKKworZGVmYXVsdF9hZ2VudHhfc29ja2V0PSIvdmFyL2FnZW50eC9tYXN0ZXIiCitORVRTTk1QX0FSR19XSVRIKGFnZW50eC1zb2NrZXQsCitbICAtLXdpdGgtYWdlbnR4LXNvY2tldD1GSUxFICAgICAgICAgQWdlbnRYIHNvY2tldCAoRGVmYXVsdDogL3Zhci9hZ2VudHgvbWFzdGVyIGFzIHNwZWNpZmllZCBpbiBSRkMyNzQxKV0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGZ1bGwgcGF0aCBdKTsKKyAgZmkKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBBZ2VudFggc29ja2V0ICR3aXRodmFsKQorXSxbCisgIHdpdGh2YWw9JGRlZmF1bHRfYWdlbnR4X3NvY2tldAorICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgQWdlbnRYIHNvY2tldCAkZGVmYXVsdF9hZ2VudHhfc29ja2V0KQorXSkKK0FDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0FHRU5UWF9TT0NLRVQsIiR3aXRodmFsIiwKKyAgICAgICAgW1VuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uXSkKKworCisjIworIyAgIFByb2plY3Q6IEFnZW50OiBNSUIgbW9kdWxlIGNvbmZpZ3VyYXRpb24KKyMjCisKK05FVFNOTVBfQVJHX0VOQUJMRShtaW5pX2FnZW50LAorWyAgLS1lbmFibGUtbWluaS1hZ2VudCAgICAgICAgICAgICBCdWlsZCBhIG1pbmltYWwgYWdlbnQuXSkKK2lmIHRlc3QgIngkZW5hYmxlX21pbmlfYWdlbnQiID0gInh5ZXMiOyB0aGVuCisgICAgbWluaV9hZ2VudD0ieWVzIgorZWxzZQorICAgIG1pbmlfYWdlbnQ9Im5vIgorZmkKK0FDX0FSR19XSVRIKFttaW5pYWdlbnRdLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFttaW5pLWFnZW50XSkpCitBQ19BUkdfRU5BQkxFKFttaW5pYWdlbnRdLCxORVRTTk1QX0lOVkFMSURfRU5BQkxFKFttaW5pLWFnZW50XSkpCisKK05FVFNOTVBfQVJHX0VOQUJMRShtZmQtcmV3cml0ZXMsCitbICAtLWVuYWJsZS1tZmQtcmV3cml0ZXMgICAgICAgICAgIFVzZSBuZXcgTUZEIHJld3JpdGVzIG9mIG1pYiBtb2R1bGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlIGF2YWlsYWJsZS4gKGRlZmF1bHQgaXMgdG8gdXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWwgbWliIG1vZHVsZSBjb2RlKS5dKQoraWYgdGVzdCAieCRlbmFibGVfbWZkX3Jld3JpdGVzIiA9ICJ4eWVzIjsgdGhlbgorICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUywgMSwKKyAgICAgW0RlZmluZSBpZiB5b3Ugd2FudCB0byBidWlsZCBNRkQgbW9kdWxlIHJld3JpdGVzXSkKK2ZpCisKKworTkVUU05NUF9BUkdfV0lUSChtaWJfbW9kdWxlcywKK1sgIC0td2l0aC1taWItbW9kdWxlcz0iaXRlbTEgLi4uIiAgQ29tcGlsZSB3aXRoIGFkZGl0aW9uYWwgbWliIG1vZHVsZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTcGFjZSBzZXBhcmF0ZWQgbGlzdCkuXSkKKworTkVUU05NUF9BUkdfV0lUSChvdXRfbWliX21vZHVsZXMsCitbICAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzPSJsaXN0IiAgIENvbXBpbGUgd2l0aG91dCB0aGVzZSBtaWIgbW9kdWxlcy4KKworICBEZWZhdWx0IG1pYiBtb2R1bGVzIGNvbXBpbGVkIGludG8gdGhlIGFnZW50ICh3aGljaCBjYW4gYmUgcmVtb3ZlZCk6CisgIAorICAgIG1pYklJICAgICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIG1pYi1JSSB0cmVlLgorICAgIHNubXB2M21pYnMgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIHNubXB2MyBtaWIgbW9kdWxlcy4KKyAgICB1Y2Rfc25tcCAgICAgICAgICAgICAgIFVDRC1TTk1QLU1JQiBzcGVjaWZpYyBleHRlbnNpb25zLgorICAgIGFnZW50X21pYnMgICAgICAgICAgICAgTkVULVNOTVAtQUdFTlQtTUlCIGV4dGVuc2lvbnMKKyAgICBhZ2VudHggICAgICAgICAgICAgICAgIEFnZW50WCBzdXBwb3J0IChzZWUgYmVsb3cpCisgICAgbm90aWZpY2F0aW9uICAgICAgICAgICBtaWJzIHN1cHBvcnRpbmcgc3BlY2lmaWNhdGlvbiBvZiB0cmFwIGRlc3RpbmF0aW9ucy4KKyAgICB0YXJnZXQgICAgICAgICAgICAgICAgIFN1cHBvcnQgZm9yIHRoZSBTTk1QIFdHcyBUQVJHRVQtTUlCLgorICAgIHV0aWxpdGllcyAgICAgICAgICAgICAgZ2VuZXJhbCBhZ2VudCBjb25maWd1cmF0aW9uIHV0aWxpdGllcy4KKyAgICBkaXNtYW4vZXZlbnQgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBESVNNQU4tRVZFTlQtTUlCCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdXBwb3J0cyBzZWxmIG1vbml0b3JpbmcgYW5kIG5vdGlmaWNhdGlvbiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJ5IHdoZW4gZXJyb3IgY29uZGl0aW9ucyBhcmUgZm91bmQpCisgICAgZGlzbWFuL3NjaGVkdWxlICAgICAgICBzdXBwb3J0IGZvciB0aGUgRElTTUFOLVNDSEVEVUxFLU1JQgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHJpZ2dlciBTRVQgcmVxdWVzdHMgYXQgc3BlY2lmaWVkIHRpbWVzKQorICAgIGhvc3QgICAgICAgICAgICAgICAgICAgaG9zdCByZXNvdXJjZXMgbWliIHN1cHBvcnQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvbmx5IG9uIG1ham9yIHN1cHBvcnRlZCBwbGF0Zm9ybXMpCisKKyAgT3B0aW9uYWwgbWliIG1vZHVsZXMgdGhhdCBjYW4gYmUgYnVpbHQgaW50byB0aGUgYWdlbnQgaW5jbHVkZToKKyAgICBzbXV4ICAgICAgICAgICAgICAgICAgIHNtdXggc3VwcG9ydCB0byBhbGxvdyBzdWJhZ2VudHMgdG8gYXR0YWNoIHRvIHNubXBkLgorICAgIG1pYklJL210YV9zZW5kbWFpbCAgICAgU2VuZG1haWwgc3RhdGlzdGljcyBtb25pdG9yaW5nIChNVEEtTUlCKQorICAgIHVjZC1zbm1wL2Rpc2tpbyAgICAgICAgVGFibGUgb2YgaW8tZGV2aWNlcyBhbmQgaG93IG11Y2ggZGF0YSB0aGV5IGhhdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQvd3JpdHRlbi4gIChvbmx5IHRlc3RlZCBvbiBTb2xhcmlzLCBMaW51eCkKKyAgICBkaXNtYW4vb2xkLWV2ZW50LW1pYiAgIHByZXZpb3VzIGltcGxlbWVudGF0aW9uIG9mIHRoZSBESVNNQU4tRVZFTlQtTUlCCisKKyAgT3B0aW9uYWwgbW9kdWxlcyBmb3Igc3BlY2lmaWMgcGxhdGZvcm1zCisgICAgTGludXgKKyAgICAgIHVjZC1zbm1wL2xtU2Vuc29ycyAgIGhhcmR3YXJlIG1vbml0b3JpbmcgKExNLVNFTlNPUlMtTUlCKQorICAgICAgaXAtbWliL2lwdjRJbnRlcmZhY2VUYWJsZSAgKGV4cGVyaW1lbnRhbCkKKyAgICAgIGlwLW1pYi9pcHY2SW50ZXJmYWNlVGFibGUgIChleHBlcmltZW50YWwpCisgICAgICB0dW5uZWwgICAgICAgICAgICAgICBMaW51eCBUVU5ORUwtTUlCIHN1cHBvcnQgKGlmVGFibGUgZXh0ZW5zaW9uKQorICAgICAgbWliSUkvaW50ZXJmYWNlcyAgICAgKG9sZCBpZlRhYmxlIGltcGxlbWVudGF0aW9uKQorICAgICAgbWlzYy9pcGZ3YWNjICAgICAgICAgYWNjb3VudGluZyBydWxlcyBJUCBmaXJld2FsbCBpbmZvcm1hdGlvbgorICAgICAgaXBmd2NoYWlucy9pcGZ3Y2hhaW5zICBmaXJld2FsbCBjaGFpbnMgdW5kZXIgaXBmdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU2VlIGFnZW50L21pYmdyb3VwL2lwZndjaGFpbnMvUkVBRE1FKQorICAgICAgc2N0cC1taWIgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIFNDVFAtTUlCCisgICAgICBldGhlcmxpa2UtbWliICAgICAgICBzdXBwb3J0IGZvciB0aGUgRXRoZXJMaWtlLU1JQgorCisgICAgU29sYXJpcworICAgICAgdWNkLXNubXAvbG1TZW5zb3JzICAgaGFyZHdhcmUgbW9uaXRvcmluZyAoTE0tU0VOU09SUy1NSUIpCisgICAgICBpZi1taWIgICAgICAgICAgICAgICBJRi1NSUIgcmV3cml0ZSAoYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKKyAgICAgIHRjcC1taWIgICAgICAgICAgICAgIFRDUC1NSUIgcmV3cml0ZSAodGNwQ29ubmVjdGlvblRhYmxlIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Y3BMaXN0ZW5lclRhYmxlOyBhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQorICAgICAgdWRwLW1pYiAgICAgICAgICAgICAgVURQLU1JQiByZXdyaXRlICh1ZHBFbmRwb2ludFRhYmxlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGQgLS1lbmFibGUtbWZkLXJld3JpdGVzKQorCisgICAgRnJlZUJTRC9PcGVuQlNECisgICAgICBpZi1taWIgICAgICAgICAgICAgICBJRi1NSUIgcmV3cml0ZSAoYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKKworICBBZ2VudFggc3VwcG9ydDoKKyAgICBhZ2VudHgvc3ViYWdlbnQgICAgICAgIGFsbG93cyB0aGUgYWdlbnQgdG8gcnVuIGFzIGVpdGhlciBhIHNubXAgYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGFzIGFuIGFnZW50WCBzdWItYWdlbnQuCisgICAgYWdlbnR4L21hc3RlciAgICAgICAgICBtYWtlcyB0aGUgYWdlbnQgcnVuIGFzIGFuIGFnZW50WCBtYXN0ZXIgYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHdlbGwgYXMgYSBub3JtYWwgc25tcCBhZ2VudC4KKyAgICBhZ2VudHggICAgICAgICAgICAgICAgIGluY2x1ZGVzIGJvdGggYWdlbnR4L21hc3RlciBhbmQgYWdlbnR4L2NsaWVudC4KKworICBPcHRpb25hbCBtb2R1bGVzIGZvciBDIGNvZGVycyB0byBsb29rIGF0IGFuZC9vciBpbmNsdWRlIGFzIGV4dGVuc2lvbiBleGFtcGxlczoKKyAgCisgICAgZXhhbXBsZXMvdWNkRGVtb1B1YmxpYyAgU05NUHYzIGludGVyb3BlcmFiaWxpdHkgdGVzdGluZyBtaWIuCisgICAgZXhhbXBsZXMvZXhhbXBsZSAgICAgICAgZXhhbXBsZSBDIGNvZGUgZXh0ZW5zaW9uLl0pCisKKworIworIyBDYXRjaCBjb21tb24gbWlzdGFrZXMgaW4gY29uZmlndXJlIG9wdGlvbnMKKyMKK0FDX0FSR19XSVRIKG1pYi1tb2R1bGUsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbbWliLW1vZHVsZXNdKSkKK0FDX0FSR19XSVRIKG1vZHVsZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFttaWItbW9kdWxlc10pKQorQUNfQVJHX1dJVEgobW9kdWxlcywsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFttaWItbW9kdWxlc10pKQorCitBQ19BUkdfV0lUSChvdXQtbWliLW1vZHVsZSwsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtbWliLW1vZHVsZXNdKSkKK0FDX0FSR19XSVRIKG91dC1tb2R1bGUsLCBORVRTTk1QX0lOVkFMSURfV0lUSChbb3V0LW1pYi1tb2R1bGVzXSkpCitBQ19BUkdfV0lUSChvdXQtbW9kdWxlcywsIE5FVFNOTVBfSU5WQUxJRF9XSVRIKFtvdXQtbWliLW1vZHVsZXNdKSkKKworCisjIworIyAgIFByb2plY3Q6IEVudGVycHJpc2Ugc2V0dGluZ3MJKD8gQWdlbnQvTGlicmFyeS9Cb3RoPykKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgoZW50ZXJwcmlzZS1vaWQsCitbRW50ZXJwcmlzZSBPSURzOiAgKHdhcm5pbmc6IHRoaXMgc2hvdWxkIGJlIHVzZWQgd2l0aCBjYXV0aW9uLikKKworICAtLXdpdGgtZW50ZXJwcmlzZS1vaWQgICAgICAgICAgICAgIFRoZSBlbnRlcnByaXNlIG51bWJlciBhc3NpZ25lZCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZW5kb3IgYnkgSUFOQS4gIFNlZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuaWFuYS5vcmcvY2dpLWJpbi9lbnRlcnByaXNlLnBsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gZ2V0IG9uZSwgdGhvdWdoIHVzaW5nIHRoZSBkZWZhdWx0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvYmFibHkgdGhlIHJpZ2h0IGNob2ljZSBpcyBtb3N0IGNhc2VzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDgwNzIgPSAiZW50ZXJwcmlzZS5uZXQtc25tcCIpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgdmFsdWUgZm9yIHRoZSBlbnRlcnByaXNlIG51bWJlciBdKTsKKyAgZmkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfRU5URVJQUklTRV9PSUQsICR3aXRodmFsKQorICBlbnRfb2lkPSIxLDMsNiwxLDQsMSwkd2l0aHZhbCIKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfRU5URVJQUklTRV9NSUIsICRlbnRfb2lkKQorICBlbnRfZG90X29pZD0iMS4zLjYuMS40LjEuJHdpdGh2YWwiCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0VOVEVSUFJJU0VfRE9UX01JQiwgJGVudF9kb3Rfb2lkKQorICBBQ19NU0dfUkVTVUxUKHVzaW5nIGVudGVycHJpc2UgbnVtYmVyICR3aXRodmFsKQorXSxbCisgIEFDX01TR19SRVNVTFQodXNpbmcgZGVmYXVsdCAiZW50ZXJwcmlzZS5uZXQtc25tcCIpCitdKQorCitORVRTTk1QX0FSR19XSVRIKGVudGVycHJpc2Utc3lzb2lkLAorWworICAtLXdpdGgtZW50ZXJwcmlzZS1zeXNvaWQgICAgICAgICAgIFRoZSBiYXNlIE9JRCBmb3IgdGhlIHN5c09iamVjdElECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIHN5c3RlbSBncm91cAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC4xLjMuNi4xLjQuMS44MDcyLjMuMi4uLiA9IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibmV0U25tcEFnZW50T0lEcy4uLiIpXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgYmFzZSBPSUQgdmFsdWUgXSk7CisgIGZpCisgIHN5c19vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLycgfCBzZWQgJ3MvXC4vXCwvZydgCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1NZU1RFTV9NSUIsICRzeXNfb2lkKQorICBzeXNfZG90X29pZD1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL15cLi8vJ2AKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX0RPVF9NSUIsICRzeXNfZG90X29pZCkKKyAgc3lzb2lkX2xlbj1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL1teXC5dLy9nJyB8IGF3ayAtRlwuICd7IHByaW50IE5GIH0nYAorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fRE9UX01JQl9MRU5HVEgsICRzeXNvaWRfbGVuKQorICBBQ19NU0dfUkVTVUxUKHVzaW5nIGVudGVycHJpc2Ugc3lzT0lEICR3aXRodmFsIC4uLi4pCitdLFsKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IGVudGVycHJpc2Ugc3lzT0lEICJORVQtU05NUC1NSUI6Om5ldFNubXBBZ2VudE9JRHMuLi4iKQorXSkKKworTkVUU05NUF9BUkdfV0lUSChlbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQsCitbCisgIC0td2l0aC1lbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQgVGhlIE9JRCB1c2VkIGZvciB0aGUgcm9vdCBvZgorCQkJCSAgICAgZW50ZXJwcmlzZSBzcGVjaWZpYyBub3RpZmljYXRpb25zLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC4xLjMuNi4xLjQuMS44MDcyLjQgPSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldFNubXBOb3RpZmljYXRpb25QcmVmaXgiKV0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGJhc2UgT0lEIHZhbHVlIF0pOworICBmaQorICBub3RpZmljYXRpb25fb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nIHwgc2VkICdzL1wuL1wsL2cnYAorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9OT1RJRklDQVRJT05fTUlCLCAkbm90aWZpY2F0aW9uX29pZCkKKyAgbm90aWZpY2F0aW9uX2RvdF9vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLydgCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX05PVElGSUNBVElPTl9ET1RfTUlCLCAkbm90aWZpY2F0aW9uX2RvdF9vaWQpCisgIG5vdGlmaWNhdGlvbm9pZF9sZW49YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9bXlwuXS8vZycgfCBhd2sgLUZcLiAneyBwcmludCBORiB9J2AKKyAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTk9USUZJQ0FUSU9OX0RPVF9NSUJfTEVOR1RILCAkbm90aWZpY2F0aW9ub2lkX2xlbikKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBlbnRlcnByaXNlIG5vdGlmaWNhdGlvbnMgJHdpdGh2YWwpCitdLFsKKyAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgIk5FVC1TTk1QLU1JQjo6bmV0U25tcE5vdGlmaWNhdGlvbnMiKQorXSkKKworCisjIworIyAgIFByb2plY3Q6IFBlcmwgc2V0dGluZ3MKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgocGVybC1tb2R1bGVzLAorWworUGVybDoKKyAgLS13aXRoLXBlcmwtbW9kdWxlc1s9QVJHU10gICAgICBJbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXMgYWxvbmcgd2l0aCB0aGUgcmVzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBuZXQtc25tcCB0b29sa2l0LiAgSWYgQVJHUyBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZmllZCwgdGhleSdyZSBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGUuUEwgc2NyaXB0Ll0sWworICAgIGlmIHRlc3QgIiR3aXRodmFsIiA9ICJubyI7IHRoZW4KKyAgICAgIGluc3RhbGxfcGVybD0ibm8iCisgICAgZWxzZQorICAgICAgaW5zdGFsbF9wZXJsPSJ5ZXMiCisgICAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgIT0gInllcyI7IHRoZW4KKyAgICAgICAgUEVSTEFSR1M9IiR3aXRodmFsIgorICAgICAgZmkKKyAgICBmaQorXSwgaW5zdGFsbF9wZXJsPSJ0cnkiKQorCitORVRTTk1QX0FSR19FTkFCTEUoZW1iZWRkZWQtcGVybCwKK1sgIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsICAgICAgICAgRGlzYWJsZSBlbWJlZGRlZCBQZXJsIGluIHRoZSBTTk1QIGFnZW50IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXB0cmFwZC4gW2VuYWJsZWQgYnkgZGVmYXVsdF1dLAorICAgIGVtYmVkX3Blcmw9IiRlbmFibGV2YWwiLCBlbWJlZF9wZXJsPSJ0cnkiKQorCitORVRTTk1QX0FSR19FTkFCTEUocGVybC1jYy1jaGVja3MsCitbICAtLWRpc2FibGUtcGVybC1jYy1jaGVja3MgICAgICAgIERpc2FibGUgY29uZmlndXJlIGNoZWNrcyBmb3Igd2hldGhlciBQZXJsJ3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDIENvbXBpbGVyIGlzIGNvbXBhdGlibGUgd2l0aCBvdXJzIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZCBQZXJsIGlzIGVuYWJsZWQuXSkKKworCisjIworIyAgIFByb2plY3Q6IFB5dGhvbiBzZXR0aW5ncworIyMKKworQUNfQVJHX1dJVEgocHl0aG9uLW1vZHVsZXMsCitbCitQeXRob246CisgIC0td2l0aC1weXRob24tbW9kdWxlc1s9QVJHU10gICAgSW5zdGFsbCB0aGUgcHl0aG9uIGJpbmRpbmdzIGFsb25nIHdpdGggdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdCBvZiB0aGUgbmV0LXNubXAgdG9vbGtpdC4gIElmIEFSR1MgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHRoZXkncmUgcGFzc2VkIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwLnB5IHNjcmlwdCBhcyBhcmd1bWVudHMuXSxbCisgICAgaW5zdGFsbF9weXRob249InllcyIKKyAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgorICAgICAgUFlUSE9OQVJHUz0iIgorICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgorICAgICAgUFlUSE9OQVJHUz0iIgorICAgICAgaW5zdGFsbF9weXRob249Im5vIgorICAgIGVsc2UKKyAgICAgIFBZVEhPTkFSR1M9IiR3aXRodmFsIgorICAgIGZpCitdLCBpbnN0YWxsX3B5dGhvbj0ibm8iKQorCisKKyMjCisjICAgUHJvamVjdDogTGlicmFyeSBzZXR0aW5ncworIyMKKworTkVUU05NUF9BUkdfV0lUSChzZXJ2ZXItc2VuZC1idWYsCitbCitOZXR3b3JrIEJ1ZmZlcnM6CisgIC0td2l0aC1zZXJ2ZXItc2VuZC1idWZbPUFSR10gICAgVXNlIEFSRyBmb3IgdGhlIGRlZmF1bHQgVURQL1RDUCBzZW5kIGJ1ZmZlciBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIE9TIGJ1ZmZlciBmb3Igc2VydmVyIHNvY2tldHMgdGhhdCBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIChzbm1wZCwgc25tcHRyYXBkKS4gIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgcnVudGltZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZpbGVzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBBUkcgc2hvdWxkIGJlIHRoZSBzaXplIGluIGJ5dGVzXSxbCisgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIG51bWJlciBmb3IgdGhlIHNlcnZlciBzZW5kIGJ1ZmZlciBdKQorICAgZmkKKyAgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1NFTkRfQlVGLCAkd2l0aHZhbCldLAorICAgQUNfTVNHX1JFU1VMVChbdXNpbmcgT1MgZGVmYXVsdCBzZW5kIGJ1ZmZlciBzaXplIGZvciBzZXJ2ZXIgc29ja2V0c10pICkKKworTkVUU05NUF9BUkdfV0lUSChzZXJ2ZXItcmVjdi1idWYsCitbICAtLXdpdGgtc2VydmVyLXJlY3YtYnVmWz1BUkddICAgIFNpbWlsYXIgYXMgcHJldmlvdXMgb3B0aW9uLCBidXQgZm9yIHJlY2VpdmUgYnVmZmVyXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2VydmVyIHJlY3YgYnVmZmVyIF0pCisgIGZpCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1JFQ1ZfQlVGLCAkd2l0aHZhbCldLAorICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUgZm9yIHNlcnZlciBzb2NrZXRzXSkgKQorCitORVRTTk1QX0FSR19XSVRIKGNsaWVudC1zZW5kLWJ1ZiwKK1sgIC0td2l0aC1jbGllbnQtc2VuZC1idWZbPUFSR10gICAgU2ltaWxhciBhcyBwcmV2aW91cyBvcHRpb25zLCBidXQgZm9yIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmUgYnVmZmVyIG9mIGNsaWVudCBzb2NrZXRzXSxbCisgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgorICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgY2xpZW50IHNlbmQgYnVmZmVyIF0pCisgIGZpCisgIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1NFTkRfQlVGLCAkd2l0aHZhbCldLAorICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHNlbmQgYnVmZmVyIHNpemUgZm9yIGNsaWVudCBzb2NrZXRzXSkgKQorCitORVRTTk1QX0FSR19XSVRIKGNsaWVudC1yZWN2LWJ1ZiwKK1sgIC0td2l0aC1jbGllbnQtcmVjdi1idWZbPUFSR10gICAgU2ltaWxhciBhcyBwcmV2aW91cyBvcHRpb25zLCBidXQgZm9yIHRoZSBzZW5kIGJ1ZmZlcl0sWworICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIG51bWJlciBmb3IgdGhlIGNsaWVudCByZWN2IGJ1ZmZlciBdKQorICBmaQorICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX0NMSUVOVF9SRUNWX0JVRiwgJHdpdGh2YWwpXSwKKyAgQUNfTVNHX1JFU1VMVChbdXNpbmcgT1MgZGVmYXVsdCByZWN2IGJ1ZmZlciBzaXplIGZvciBjbGllbnQgc29ja2V0c10pICkKKworIyMKKyMgICBTeXN0ZW06IGxpYnJhcnkgc2V0dGluZ3MgIChtb3JlKQorIyMKKworTkVUU05NUF9BUkdfV0lUSChlbGYsCisgIFtBU19IRUxQX1NUUklORyhbLS13aXRob3V0LWVsZl0sW3VzZSBlbGYgbGlicmFyaWVzXSldKQorCitORVRTTk1QX0FSR19XSVRIKG5sLAorICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1ubF0sW3VzZSBsaWJubCB0byBnZXQgbmV0bGluayBkYXRhIChsaW51eCBvbmx5KS5dKV0pCisKK05FVFNOTVBfQVJHX1dJVEgobGlid3JhcCwKKyAgWyAgLS13aXRoLWxpYndyYXBbPUxJQlBBVEhdICBDb21waWxlIGluIGxpYndyYXAgKHRjcF93cmFwcGVycykgc3VwcG9ydC5dLAorICBbXSwKKyAgW3dpdGhfbGlid3JhcD0ibm8iXSkKKworTkVUU05NUF9BUkdfV0lUSCh6bGliLAorICBbICAtLXdpdGgtemxpYls9RElSXSAgICAgICAgIHVzZSBsaWJ6IGluIERJUl0sCisgIFtdLAorICBbd2l0aF96bGliPSJubyJdKQorCitBQ19BUkdfV0lUSChiemlwMiwKKyAgWyAgLS13aXRoLWJ6aXAyWz1ESVJdICAgICAgICB1c2UgbGliYnoyIGluIERJUl0sCisgIFtdLAorICBbd2l0aF9iemlwMj0ibm8iXSkKKworTkVUU05NUF9BUkdfV0lUSCgKKyBbbW50dGFiXSwKKyBBU19IRUxQX1NUUklORygKKyAgIFstLXdpdGgtbW50dGFiPSIvZXRjL21udHRhYiJdLAorICAgW01vdW50IHRhYmxlIGxvY2F0aW9uLiBUaGUgZGVmYXVsdCBpcyB0byBhdXRvZGV0ZWN0IHRoaXMuXSkpCisKKyMjCisjICAgUHJvamVjdDogbXlzcWwKKyMjCisKK05FVFNOTVBfQVJHX1dJVEgobXlzcWwsCisgIFsgIC0td2l0aC1teXNxbCAgICAgICAgICAgIEluY2x1ZGUgc3VwcG9ydCBmb3IgTXlTUUwuXSkKK2lmIHRlc3QgIngkd2l0aF9teXNxbCIgPSAieHllcyI7IHRoZW4KKyAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX01ZU1FMLCAxLAorICAgIFtkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgbXlzcWwgY29kZSBmb3Igc25tcHRyYXBkIC4uLl0pCitmaQpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTE5OTdmLi4wMDAwMDAwCi0tLSBhL2NvbmZpZ3VyZS5pbgorKysgL2Rldi9udWxsCkBAIC0xLDQ4MTcgKzAsMCBAQAotIyBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQuICBTZWUKLSMgdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKLSMgdGhhdCBtYXkgYXBwbHk6Ci0jCi0jIFBvcnRpb25zIENvcHlyaWdodCCpIDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCi0jIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCi0jCi0KLSMKLSMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvY29uZiB0byBwcm9kdWNlIGEgY29uZmlndXJlIHNjcmlwdC4KLSMKLUFDX0lOSVQoW05ldC1TTk1QXSwgWzUuNC40XSwgW25ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXRdKQotQUNfUFJFUkVRKFsyLjU5XSkKLUFDX0NPTkZJR19TUkNESVIoW2FnZW50L21pYmdyb3VwL3VjZC1zbm1wL2V4dGVuc2libGUuY10pCi1BQ19SRVZJU0lPTihbJFJldmlzaW9uJF0pCi0KLUFDX0NPTkZJR19IRUFERVIoaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCkKLQotQUNfTVNHX0NBQ0hFX0lOSVQoKQotCi0jCi0jIHNhdmUgdGhlIGNvbmZpZ3VyZSBhcmd1bWVudHMKLSMKLUFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0NPTkZJR1VSRV9PUFRJT05TLCIkYWNfY29uZmlndXJlX2FyZ3MiKQotQ09ORklHVVJFX09QVElPTlM9IlwiJGFjX2NvbmZpZ3VyZV9hcmdzIlwiCi1BQ19TVUJTVChDT05GSUdVUkVfT1BUSU9OUykKLQotIwotIyBDb21waWxhdGlvbiBzZXR1cAotIwotQUNfQVJHX1dJVEgoY2MsIFsKLUNvbXBpbGVyIE9wdGlvbnM6Ci0gIC0td2l0aC1jYz1DQyAgICAgICAgICAgICAgICAgICAgdXNlIENDIHRvIGNvbXBpbGUgKGRlZmF1bHQ9Z2NjKS5dLAotICAgIFtDQz0kd2l0aF9jYztleHBvcnQgQ0NdKQotCi1BQ19BUkdfV0lUSChsaW5rY2MsIFsKLSAgLS13aXRoLWxpbmtjYz1DQyAgICAgICAgICAgICAgICB1c2UgQ0MgdG8gbGluayAoZGVmYXVsdD1nY2MpLl0sCi0gICAgW0xJTktDQz0kd2l0aF9saW5rY2M7ZXhwb3J0IExJTktDQ10pCi0KLUFDX0FSR19XSVRIKGFyLAotWyAgLS13aXRoLWFyPUFSICAgICAgICAgICAgICAgICAgICB1c2UgQVIgYXMgdGhlIGFyY2hpdmVyLl0sCi0gICAgW0FSPSR3aXRoX2FyOyBleHBvcnQgQVJdKQotCi1BQ19BUkdfV0lUSChlbmRpYW5uZXNzLAotWyAgLS13aXRoLWVuZGlhbm5lc3M9YmlnfGxpdHRsZSAgICBkZWZpbmUgZW5kaWFubmVzcyBvZiB0YXJnZXQgcGxhdGZvcm0gd2hlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyb3NzLWNvbXBpbGluZy5dLAotICAgIFtpZiB0ZXN0ICR3aXRoX2VuZGlhbm5lc3MgIT0gImJpZyIgLWEgJHdpdGhfZW5kaWFubmVzcyAhPSAibGl0dGxlIiA7IHRoZW4KLSAgICAgICBBQ19NU0dfRVJST1IoW0VuZGlhbm5lc3MgbXVzdCBiZSBiaWcgb3IgbGl0dGxlLCBub3QgIiR3aXRoX2VuZGlhbm5lc3MiLl0pOwotICAgICBmaQotXSkKLQotQUNfQVJHX1dJVEgoY2ZsYWdzLAotWyAgLS13aXRoLWNmbGFncz1DRkxBR1MgICAgICAgICAgICB1c2UgQ0ZMQUdTIGFzIGNvbXBpbGUgdGltZSBhcmd1bWVudHMuXSwKLSAgICBbQ0ZMQUdTPSR3aXRoX2NmbGFnczsgZXhwb3J0IENGTEFHU10pCi0KLUFDX0FSR19XSVRIKGxkZmxhZ3MsCi1bICAtLXdpdGgtbGRmbGFncz1MREZMQUdTICAgICAgICAgIHVzZSBMREZMQUdTIGFzIGxpbmsgdGltZSBhcmd1bWVudHMgdG8gbGQuXSwKLSAgICBbTERGTEFHUz0kd2l0aF9sZGZsYWdzOyBleHBvcnQgTERGTEFHU10pCi0KLUFDX0FSR19FTkFCTEUoYXMtbmVlZGVkLAotWyAgLS1lbmFibGUtYXMtbmVlZGVkICAgICAgICAgICAgICBMaW5rIGxpYnBlcmwgYWdhaW5zdCBOZXQtU05NUCBsaWJyYXJpZXMgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gYXBwbGljYXRpb25zLiBXZSByZWNvbW1lbmQgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgdGhpcyBvcHRpb24gaWYgaXQgd29ya3MuXSkKLQotQUNfQVJHX1dJVEgobGlicywKLVsgIC0td2l0aC1saWJzPUxJQlMgICAgICAgICAgICAgICAgdXNlIExJQlMgYXMgbGluayB0aW1lIGFyZ3VtZW50cyB0byBsZC5dLAotICAgIFtMSUJTPSR3aXRoX2xpYnM7IGV4cG9ydCBMSUJTXSkKLQotQUNfQVJHX0VOQUJMRShzaWxlbnQtbGlidG9vbCwKLVsgIC0tZW5hYmxlLXNpbGVudC1saWJ0b29sICAgICAgICAgUGFzcyAtLXNpbGVudCB0byBsaWJ0b29sLl0sCi0JTElCVE9PTEZMQUdTPS0tc2lsZW50KQotQUNfU1VCU1QoTElCVE9PTEZMQUdTKQotCi1BQ19BUkdfV0lUSChpbnN0YWxsLXByZWZpeCwKLVsgIC0td2l0aC1pbnN0YWxsLXByZWZpeD1QQVRIICAgICAgSnVzdCBmb3IgaW5zdGFsbGluZywgcHJlZml4IGFsbCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyB3aXRoIFBBVEguICBUaGlzIGlzIGtub3duIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHdvcmsgb24gc29tZSBzeXN0ZW1zIHdpdGggc2hhcmVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIChlZywgSFBVWCldLAotICAgICAgSU5TVEFMTF9QUkVGSVg9IiR3aXRodmFsIikKLQotaWYgdGVzdCAieCRJTlNUQUxMX1BSRUZJWCIgPSAieHllcyIgOyB0aGVuCi0gIEFDX01TR19FUlJPUihbLS13aXRoLWluc3RhbGwtcHJlZml4IHJlcXVpcmVzIGFuIGFyZ3VtZW50XSkKLWZpCi1pZiB0ZXN0ICJ4JElOU1RBTExfUFJFRklYIiA9ICJ4bm8iIDsgdGhlbgotICBJTlNUQUxMX1BSRUZJWD0iIgotZmkKLUFDX1NVQlNUKElOU1RBTExfUFJFRklYKQotCi0jIGNoZWNrIGZvciBlcnJvcnMgaW4gYXJncyB0aGF0IHJ1biBhZnRlciBtb2R1bGUgcHJvY2Vzc2luZyBoZXJlLCBzbwotIyB0aGV5IGZhaWwgYmVmb3JlIG1vZHVsZSBwcm9jZXNzaW5nLi4uCi1BQ19BUkdfRU5BQkxFKGxpYndyYXAsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWxpYndyYXAvLS13aXRob3V0LWxpYndyYXAgaW5zdGVhZCBdKSApCi0gIEFDX0FSR19FTkFCTEUoemxpYiwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtemxpYi8tLXdpdGhvdXQtemxpYiBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShtaW5pX2FnZW50LAotWyAgLS1lbmFibGUtbWluaS1hZ2VudCAgICAgICAgICAgICBCdWlsZCBhIG1pbmltYWwgYWdlbnQuXSkKLWlmIHRlc3QgIngkZW5hYmxlX21pbmlfYWdlbnQiID0gInh5ZXMiOyB0aGVuCi0gICAgbWluaV9hZ2VudD0ieWVzIgotZWxzZQotICAgIG1pbmlfYWdlbnQ9Im5vIgotZmkKLUFDX0FSR19XSVRIKG1pbmlfYWdlbnQsLAotICAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taW5pLWFnZW50Ly0tZGlzYWJsZS1taW5pLWFnZW50IGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgobWluaWFnZW50LCwKLSAgICAgICAgIEFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWluaS1hZ2VudC8tLWRpc2FibGUtbWluaS1hZ2VudCBpbnN0ZWFkIF0pICkKLUFDX0FSR19FTkFCTEUobWluaWFnZW50LCwKLSAgICAgICAgIEFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWluaS1hZ2VudC8tLWRpc2FibGUtbWluaS1hZ2VudCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShhZ2VudCwKLVsgIC0tZGlzYWJsZS1hZ2VudCAgICAgICAgICAgICAgICAgRG8gbm90IGJ1aWxkIHRoZSBhZ2VudCAoc25tcGQpLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9hZ2VudCIgIT0gInhubyI7IHRoZW4KLSAgIFNOTVBEPSdzbm1wZCQoRVhFRVhUKScKLSAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYWdlbnQiCi0gICBUUkFQTElCUz0nJChUUkFQRFdJVEhBR0VOVCknCi0gICBVU0VUUkFQTElCUz0nJChVU0VBR0VOVExJQlMpJwotZWxzZQotICAgU05NUEQ9IiIKLSAgICMgd2Ugc3RpbGwgbmVlZC93YW50IHRoZSBhZ2VudGxpYnMgKGZvciBzdWJhZ2VudHMsIGUuZy4gc25tcHRyYXBkKQotICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBhZ2VudCIKLSAgICMgYnVpbGRpbmcgc25tcHRyYXBkIHcvbyBhZ2VudGxpYnMgZG9lc24ndCB3b3JrIGF0bQotICAgI1RSQVBMSUJTPSckKFRSQVBEV0lUSE9VVEFHRU5UKScKLSAgICNVU0VUUkFQTElCUz0nJChVU0VMSUJTKScKLSAgIFRSQVBMSUJTPSckKFRSQVBEV0lUSEFHRU5UKScKLSAgIFVTRVRSQVBMSUJTPSckKFVTRUFHRU5UTElCUyknCi1maQotQUNfU1VCU1QoU05NUEQpCi1BQ19TVUJTVChUUkFQTElCUykKLUFDX1NVQlNUKFVTRVRSQVBMSUJTKQotQUNfQVJHX1dJVEgoYWdlbnQsLAotICAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1hZ2VudC8tLWRpc2FibGUtYWdlbnQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoYXBwbGljYXRpb25zLAotWyAgLS1kaXNhYmxlLWFwcGxpY2F0aW9ucyAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFwcHMgKHNubXBnZXQsIC4uLikuXSkKLWlmIHRlc3QgIngkZW5hYmxlX2FwcGxpY2F0aW9ucyIgIT0gInhubyI7IHRoZW4KLSAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgYXBwcyIKLWZpCi0jIENvbW1vbiBtaXN0YWtlcwotQUNfQVJHX1dJVEgoYXBwbGljYXRpb25zLCwKLSAgICAgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1hcHBsaWNhdGlvbnMvLS1kaXNhYmxlLWFwcGxpY2F0aW9ucyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShtYW51YWxzLAotWyAgLS1kaXNhYmxlLW1hbnVhbHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgbWFudWFscy5dKQotaWYgdGVzdCAieCRlbmFibGVfbWFudWFscyIgIT0gInhubyI7IHRoZW4KLSAgIE1BSU5TVUJTPSIkTUFJTlNVQlMgbWFuIgotZmkKLUFDX0FSR19XSVRIKG1hbnVhbHMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWFudWFscy8tLWRpc2FibGUtbWFudWFscyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShzY3JpcHRzLAotWyAgLS1kaXNhYmxlLXNjcmlwdHMgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgc2NyaXB0cyAobWliMmMsIC4uLikuXSkKLWlmIHRlc3QgIngkZW5hYmxlX3NjcmlwdHMiICE9ICJ4bm8iOyB0aGVuCi0gICBNQUlOU1VCUz0iJE1BSU5TVUJTIGxvY2FsIgotZmkKLUFDX0FSR19XSVRIKHNjcmlwdHMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtc2NyaXB0cy8tLWRpc2FibGUtc2NyaXB0cyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShtaWJzLAotWyAgLS1kaXNhYmxlLW1pYnMgICAgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgbWliIGZpbGVzLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9taWJzIiAhPSAieG5vIjsgdGhlbgotICAgTUFJTlNVQlM9IiRNQUlOU1VCUyBtaWJzIgotZmkKLSMgd2l0aC1taWJzIGlzIHZhbGlkIHRvbywgYnV0IG1lYW5zIHNvbWV0aGluZyBlbHNlCi0KLUFDX1NVQlNUKE1BSU5TVUJTKQotQUNfTVNHX0NIRUNLSU5HKFt3aGF0IHRvIGJ1aWxkIGFuZCBpbnN0YWxsXSkKLUFDX01TR19SRVNVTFQoWyRNQUlOU1VCU10pCi0KLUFDX0FSR19FTkFCTEUobWliLWxvYWRpbmcsCi1bICAtLWRpc2FibGUtbWliLWxvYWRpbmcgICAgICAgICAgIERvIG5vdCBpbmNsdWRlIGNvZGUgdGhhdCBwYXJzZXMgYW5kIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1hbmlwdWxhdGVzIHRoZSBtaWIgZmlsZXMuXSkKLWlmIHRlc3QgIngkZW5hYmxlX21pYl9sb2FkaW5nIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX01JQl9MT0FESU5HXSwgMSwgCi0gICAgICAgICAgICBbRGVmaW5lIGlmIG1pYiBsb2FkaW5nIGFuZCBwYXJzaW5nIGNvZGUgc2hvdWxkIG5vdCBiZSBpbmNsdWRlZF0pCi1maQotQUNfQVJHX1dJVEgobWliLWxvYWRpbmcsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtbWliLWxvYWRpbmcvLS1kaXNhYmxlLW1pYi1sb2FkaW5nIGluc3RlYWQgXSkgKQotCi0jCi1TTk1QX1ZFUlNJT05TPSIiCi1BQ19BUkdfRU5BQkxFKHNubXB2MSwKLVsgIC0tZGlzYWJsZS1zbm1wdjEgICAgICAgICAgICAgICAgRG8gbm90IGluY2x1ZGUgY29kZSB0aGF0IGltcGxlbWVudHMgU05NUHYxLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdjEiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfU05NUFYxXSwgMSwgCi0gICAgICAgICAgICBbRGVmaW5lIGlmIFNOTVB2MSBjb2RlIHNob3VsZCBub3QgYmUgaW5jbHVkZWRdKQotZWxzZQotICBTTk1QX1ZFUlNJT05TPSIkU05NUF9WRVJTSU9OUyAxIgotZmkKLUFDX0FSR19XSVRIKHNubXB2MSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1zbm1wdjEvLS1kaXNhYmxlLXNubXB2MSBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShzbm1wdjJjLAotWyAgLS1kaXNhYmxlLXNubXB2MmMgICAgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBjb2RlIHRoYXQgaW1wbGVtZW50cyBTTk1QdjJjLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9zbm1wdjJjIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShbTkVUU05NUF9ESVNBQkxFX1NOTVBWMkNdLCAxLCAKLSAgICAgICAgICAgIFtEZWZpbmUgaWYgU05NUHYyYyBjb2RlIHNob3VsZCBub3QgYmUgaW5jbHVkZWRdKQotZWxzZQotICBTTk1QX1ZFUlNJT05TPSIkU05NUF9WRVJTSU9OUyAyYyIKLWZpCi1BQ19BUkdfV0lUSChzbm1wdjJjLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXNubXB2MmMvLS1kaXNhYmxlLXNubXB2MmMgaW5zdGVhZCBdKSApCi0KLVNOTVBfVkVSU0lPTlM9IiRTTk1QX1ZFUlNJT05TIDMiCi1BQ19NU0dfQ0FDSEVfQUREKFNOTVAgVmVyc2lvbnMgU3VwcG9ydGVkOiAgICRTTk1QX1ZFUlNJT05TKQotCi1BQ19BUkdfRU5BQkxFKHNldC1zdXBwb3J0LAotWyAgLS1kaXNhYmxlLXNldC1zdXBwb3J0ICAgICAgICAgICBEbyBub3QgYWxsb3cgU05NUCBzZXQgcmVxdWVzdHMgdG8gdGhlIGFnZW50Ll0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9zZXRfc3VwcG9ydCIgPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9TRVRfU1VQUE9SVF0sIDEsIAotICAgICAgICAgICAgW0RlZmluZSBpZiBTTk1QIFNFVCBzdXBwb3J0IHNob3VsZCBiZSBkaXNhYmxlZF0pCi1maQotQUNfQVJHX1dJVEgoc2V0LXN1cHBvcnQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtc2V0LXN1cHBvcnQvLS1kaXNhYmxlLXNldC1zdXBwb3J0IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGRlcywKLVsgIC0tZGlzYWJsZS1kZXMgICAgICAgICAgICAgICAgICAgRG8gbm90IHN1cHBvcnQgREVTIGVuY3J5cHRpb24uXSkKLWlmIHRlc3QgIngkZW5hYmxlX2RlcyIgPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoW05FVFNOTVBfRElTQUJMRV9ERVNdLCAxLCAKLSAgICAgICAgICAgIFtEZWZpbmUgaWYgREVTIGVuY3J5cHRpb24gc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWRdKQotZmkKLUFDX0FSR19XSVRIKGRlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1kZXMvLS1kaXNhYmxlLWRlcyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShwcml2YWN5LAotWyAgLS1kaXNhYmxlLXByaXZhY3kgICAgICAgICAgICAgICBEb24ndCBjb21waWxlIGluIHN1cHBvcnQgZm9yIHByaXZhY3kgKGVuY3J5cHRpb24pLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9wcml2YWN5IiAhPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfU0NBUElfQVVUSFBSSVYpCi1maQotQUNfQVJHX1dJVEgocHJpdmFjeSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1wcml2YWN5Ly0tZGlzYWJsZS1wcml2YWN5IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1kNSwKLVsgIC0tZGlzYWJsZS1tZDUgICAgICAgICAgICAgICAgICAgRG8gbm90IHN1cHBvcnQgTUQ1IGF1dGhlbnRpY2F0aW9uLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiID0gInhubyI7IHRoZW4KLSAgQUNfREVGSU5FKFtORVRTTk1QX0RJU0FCTEVfTUQ1XSwgMSwgCi0gICAgICAgICAgICBbRGVmaW5lIGlmIE1ENSBhdXRoZW50aWNhdGlvbiBzaG91bGQgbm90IGJlIHN1cHBvcnRlZF0pCi1maQotQUNfQVJHX1dJVEgobWQ1LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLW1kNS8tLWRpc2FibGUtbWQ1IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGludGVybmFsLW1kNSwKLVsgIC0tZW5hYmxlLWludGVybmFsLW1kNSAgICAgICAgICAgVXNlIHRoZSBpbnRlcm5hbCBNRDUgc3VwcG9ydC5dKQotaWYgdGVzdCAieCRlbmFibGVfaW50ZXJuYWxfbWQ1IiA9ICJ4eWVzIjsgdGhlbgotICBpZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiID0gInhubyI7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWW91IGNhbiBub3Qgc3BlY2lmeSBib3RoIC0tZW5hYmxlLWludGVybmFsLW1kNSBhbmQgLS1kaXNhYmxlLW1kNSkKLSAgZWxzZQotICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9JTlRFUk5BTF9NRDUpCi0gIGZpCi1maQotQUNfQVJHX1dJVEgoaW50ZXJuYWwtbWQ1LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWludGVybmFsLW1kNS8tLWRpc2FibGUtaW50ZXJuYWwtbWQ1IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGlwdjYsCi1bICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgICAgIEdlbmVyYXRlIElQdjYgcmVhZHkgdmVyc2lvbi5dLAotICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0lQVjYpCi0gICAgZmldKQotQUNfQVJHX1dJVEgoaXB2NiwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1pcHY2Ly0tZGlzYWJsZS1pcHY2IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGxvY2FsLXNtdXgsCi1bICAtLWVuYWJsZS1sb2NhbC1zbXV4ICAgICAgICAgICAgIFJlc3RyaWN0IFNNVVggY29ubmVjdGlvbnMgdG8gbG9jYWxob3N0IChieSBkZWZhdWx0KS5dLAotICAgIFtpZiB0ZXN0ICJ4JGVuYWJsZV9sb2NhbF9zbXV4IiA9ICJ4eWVzIjsgdGhlbgotICAgICAgQUNfREVGSU5FKE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVgpCi0gICAgZmldKQotQUNfQVJHX1dJVEgobG9jYWwtc211eCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1sb2NhbC1zbXV4Ly0tZGlzYWJsZS1sb2NhbC1zbXV4IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGRlYnVnZ2luZywKLVsgIC0tZW5hYmxlLWRlYnVnZ2luZyAgICAgICAgICAgICAgT3V0cHV0cyBleHRyYSBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYXQgYWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZXMuICBOb3JtYWxseSwgeW91IHNob3VsZCBub3QgZW5hYmxlIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnV0IGluc3RlYWQgdXNlIHRoZSAtRCBmbGFnIG9mIHRoZSBjb21tYW5kcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGljaCB0b2dnbGVzIGRlYnVnaW5nIG91dHB1dCBhdCBydW50aW1lLgotICAtLWRpc2FibGUtZGVidWdnaW5nICAgICAgICAgICAgIERpc2FsbG93cyBkZWJ1Z2dpbmcgY29kZSB0byBiZSBidWlsdCBpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIG1pZ2h0IHByb3ZpZGUgc29tZSBzcGVlZCBiZW5lZml0cy5dLAotICAgIEFDX0RFRklORShORVRTTk1QX0FMV0FZU19ERUJVRykpCi1BQ19BUkdfV0lUSChkZWJ1Z2dpbmcsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtZGVidWdnaW5nLy0tZGlzYWJsZS1kZWJ1Z2dpbmcgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoZGV2ZWxvcGVyLAotWyAgLS1lbmFibGUtZGV2ZWxvcGVyICAgICAgICAgICAgICBUdXJucyBvbiBzdXBlci1kdXBlci1leHRyYS1jb21waWxlLXdhcm5pbmdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB1c2luZyBnY2MuXSwKLSAgICBkZXZlbG9wZXI9eWVzKQotQUNfQVJHX1dJVEgoZGV2ZWxvcGVyLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLWRldmVsb3Blci8tLWRpc2FibGUtZGV2ZWxvcGVyIGluc3RlYWQgXSkgKQotCi1pZiB0ZXN0ICJ4JGVuYWJsZV9kZWJ1Z2dpbmciID0gInhubyI7IHRoZW4KLSAgICBBQ19ERUZJTkUoTkVUU05NUF9OT19ERUJVR0dJTkcpCi1maQotCi1BQ19BUkdfV0lUSChkbWFsbG9jLAotWyAgLS13aXRoLWRtYWxsb2M9UEFUSCAgICAgICAgICAgICBVc2UgZG1hbGxvYyBsaWJyYXJ5ICh3d3cuZG1hbGxvYy5jb20pXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICBMSUJTPSIkTElCUyAtbGRtYWxsb2MiCi0gICAgICBBQ19ERUZJTkUoSEFWRV9ETUFMTE9DX0gpCi0gICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKLSAgICAgIExJQlM9IiRMSUJTIC1sZG1hbGxvYyIKLSAgICAgIEFDX0RFRklORShIQVZFX0RNQUxMT0NfSCkKLSAgICBmaQotKQotQUNfU1VCU1QoSEFWRV9ETUFMTE9DX0gpCi1BQ19BUkdfRU5BQkxFKGRtYWxsb2MsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWRtYWxsb2MvLS13aXRob3V0LWRtYWxsb2MgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGVmZW5jZSwKLVsgIC0td2l0aC1lZmVuY2UgICAgICAgICAgICAgICAgICAgTG9vayBmb3IgYW5kIHVzZSBsaWJlZmVuY2UgKG1hbGxvYykuXSwKLSAgICAgIHVzZV9lZmVuY2U9IiR3aXRodmFsIikKLUFDX0FSR19FTkFCTEUoZWZlbmNlLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1lZmVuY2UvLS13aXRob3V0LWVmZW5jZSBpbnN0ZWFkIF0pICkKLQotdHJ5cnNhcmVmPW5vCi1BQ19BUkdfV0lUSChyc2FyZWYsCi1bICAtLXdpdGgtcnNhcmVmPVBBVEggICAgICAgICAgICAgIExvb2sgZm9yIGxpYnJzYXJlZiBpbiBQQVRIL2xpYi5dLAotICAgIGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieHllcyI7IHRoZW4KLSAgICAgIHRyeXJzYXJlZj15ZXMKLSAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgotICAgICAgdHJ5cnNhcmVmPW5vCi0gICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKLSAgICAgIHRyeXJzYXJlZj15ZXMKLSAgICBmaSwKLSkKLUFDX0FSR19FTkFCTEUocnNhcmVmLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1yc2FyZWYvLS13aXRob3V0LXJzYXJlZiBpbnN0ZWFkIF0pICkKLQotdHJ5b3BlbnNzbD1kZWZhdWx0eWVzCi1hc2tlZG9wZW5zc2w9bm8KLUFDX0FSR19XSVRIKG9wZW5zc2wsCi1bICAtLXdpdGgtb3BlbnNzbD1QQVRIICAgICAgICAgICAgIExvb2sgZm9yIG9wZW5zc2wgaW4gUEFUSC9saWIuXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICB0cnlvcGVuc3NsPXllcwotICAgICAgYXNrZWRvcGVuc3NsPXllcwotICAgIGVsaWYgdGVzdCAieCR3aXRodmFsIiA9ICJ4bm8iOyB0aGVuCi0gICAgICB0cnlvcGVuc3NsPW5vCi0gICAgZWxpZiB0ZXN0IC1kICIkd2l0aHZhbCI7IHRoZW4KLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgkd2l0aHZhbCkKLSAgICAgIHRyeW9wZW5zc2w9eWVzCi0gICAgICBhc2tlZG9wZW5zc2w9eWVzCi0gICAgZmksCi0pCi1pZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiID0gInhkZWZhdWx0eWVzIjsgdGhlbgotICAgICAgQUNfQUREX1NFQVJDSF9QQVRIKC91c3IvbG9jYWwvc3NsKQotICAgICAgdHJ5b3BlbnNzbD15ZXMKLWZpCi1BQ19BUkdfRU5BQkxFKG9wZW5zc2wsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW9wZW5zc2wvLS13aXRob3V0LW9wZW5zc2wgaW5zdGVhZCBdKSApCi1BQ19BUkdfV0lUSChzc2wsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW9wZW5zc2wvLS13aXRob3V0LW9wZW5zc2wgaW5zdGVhZCBdKSApCi1BQ19BUkdfRU5BQkxFKHNzbCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtb3BlbnNzbC8tLXdpdGhvdXQtb3BlbnNzbCBpbnN0ZWFkIF0pICkKLQotdHJ5a3JiNT1kZWZhdWx0eWVzCi1hc2tlZGtyYjU9bm8KLUFDX0FSR19XSVRIKGtyYjUsCi1bICAtLXdpdGgta3JiNT1QQVRIICAgICAgICAgICAgICAgIExvb2sgZm9yIGtyYjUgaW4gUEFUSC9saWIuXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICB0cnlrcmI1PXllcwotICAgICAgYXNrZWRrcmI1PXllcwotICAgICAga3JiNXBhdGg9dW5kZWYKLSAgICBlbGlmIHRlc3QgIngkd2l0aHZhbCIgPSAieG5vIjsgdGhlbgotICAgICAgdHJ5a3JiNT1ubwotICAgICAga3JiNXBhdGg9dW5kZWYKLSAgICBlbGlmIHRlc3QgLWQgIiR3aXRodmFsIjsgdGhlbgotICAgICAgdHJ5a3JiNT15ZXMKLSAgICAgIGFza2Vka3JiNT15ZXMKLSAgICAgIGtyYjVwYXRoPSR3aXRodmFsCi0gICAgZmksCi0pCi1pZiB0ZXN0ICJ4JHRyeWtyYjUiID0gInhkZWZhdWx0eWVzIjsgdGhlbgotICAgICAgdHJ5a3JiNT15ZXMKLSAgICAgIGtyYjVwYXRoPS91c3Iva2VyYmVyb3MKLWZpCi1BQ19BUkdfRU5BQkxFKGtyYjUsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWtyYjUvLS13aXRob3V0LWtyYjUgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKHJwbSwKLVsgIC0td2l0aG91dC1ycG0gICAgICAgICAgICAgICAgICAgRG9uJ3QgaW5jbHVkZSBzdXBwb3J0IGZvciB0aGUgUlBNIHBhY2thZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5hZ2VtZW50IHN5c3RlbSB3aGVuIGJ1aWxkaW5nIHRoZSBob3N0IE1JQgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZS5dKQotQUNfQVJHX0VOQUJMRShycG0sLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXJwbS8tLXdpdGhvdXQtcnBtIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKGFnZW50eC1kb20tc29jay1vbmx5LAotWyAgLS1lbmFibGUtYWdlbnR4LWRvbS1zb2NrLW9ubHkgICBEaXNhYmxlIFVEUC9UQ1AgdHJhbnNwb3J0cyBmb3IgYWdlbnR4Ll0sCi1BQ19ERUZJTkUoTkVUU05NUF9BR0VOVFhfRE9NX1NPQ0tfT05MWSkpCi1BQ19BUkdfV0lUSChhZ2VudHgtZG9tLXNvY2stb25seSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1hZ2VudHgtZG9tLXNvY2stb25seS8tLWRpc2FibGUtYWdlbnR4LWRvbS1zb2NrLW9ubHkgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUoc25tcHRyYXBkLXN1YmFnZW50LAotWyAgLS1kaXNhYmxlLXNubXB0cmFwZC1zdWJhZ2VudCAgICBEaXNhYmxlIGFnZW50eCBzdWJhZ2VudCBjb2RlIGluIHNubXB0cmFwZC5dKQotaWYgdGVzdCAieCRlbmFibGVfc25tcHRyYXBkX3N1YmFnZW50IiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX1NOTVBUUkFQRF9ESVNBQkxFX0FHRU5UWCkKLWZpCi1BQ19BUkdfV0lUSChzbm1wdHJhcGQtc3ViYWdlbnQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtc25tcHRyYXBkLXN1YmFnZW50Ly0tZGlzYWJsZS1zbm1wdHJhcGQtc3ViYWdlbnQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG9wYXF1ZS1zcGVjaWFsLXR5cGVzLAotWyAgLS13aXRob3V0LW9wYXF1ZS1zcGVjaWFsLXR5cGVzICBEb24ndCB1c2Ugc3BlY2lhbCBvcGFxdWUgZW5jb2RpbmdzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVAgbm9ybWFsbHkgY2Fubm90IGhhbmRsZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0aW5nIG51bWJlcnMsIG5vciBsYXJnZSA2NCBiaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlZ2VycyB3ZWxsLiAgQnkgZGVmYXVsdCwgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0LXNubXAgcGFja2FnZSBjb21waWxlcyBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIHRoZXNlIGV4dHJhIGRhdGF0eXBlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbiBhIGxlZ2FsIHdheSldKQotQUNfQVJHX0VOQUJMRShvcGFxdWUtc3BlY2lhbC10eXBlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtb3BhcXVlLXNwZWNpYWwtdHlwZXMvLS13aXRob3V0LW9wYXF1ZS1zcGVjaWFsLXR5cGVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChtaWJkaXJzLAotWyAgLS13aXRoLW1pYmRpcnM9ImRpcjE6ZGlyMjoiICAgRGVmYXVsdCBkaXJlY3RvcmllcyB0byBsb29rIGZvciBtaWJzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWZhdWx0OiBcJEhPTUUvLnNubXAvbWliczpEQVRBRElSL3NubXAvbWlicyldLAotICAgIFtORVRTTk1QX0RFRkFVTFRfTUlCRElSUz0iJHdpdGhfbWliZGlycyIKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQkRJUlMsIiR3aXRoX21pYmRpcnMiKV0pCi1BQ19BUkdfRU5BQkxFKG1pYmRpcnMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW1pYmRpcnMvLS13aXRob3V0LW1pYmRpcnMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG1pYnMsCi1bICAtLXdpdGgtbWlicz0iaXRlbTE6aXRlbTI6IiAgICBEZWZhdWx0IG1pYiBJRHMgdG8gcmVhZC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVGhlIGRlZmF1bHQgbGlzdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTTk1QdjItTUlCOklGLU1JQjpJUC1NSUI6VENQLU1JQjpVRFAtTUlCIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggdGhlIGFkZGl0aW9uIG9mIGFueSBtaWJzIHVzZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgbWliIG1vZHVsZXMgdGhlIGFnZW50IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlZCB3aXRoKV0sCi0gICAgTkVUU05NUF9ERUZBVUxUX01JQlM9IiR3aXRoX21pYnMiKQotIyBlbmFibGUtbWlicyBpcyB2YWxpZCB0b28sIGJ1dCBtZWFucyBzb21ldGhpbmcgZWxzZQotCi1BQ19BUkdfV0lUSChtaWJmaWxlcywKLVsgIC0td2l0aC1taWJmaWxlcz0iZmlsZTE6ZmlsZTIiIERlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6ICBub25lLiAgdXNlcyBJRHMgYWJvdmUgaW5zdGVhZC4pXSwKLSAgICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQkZJTEVTLCIkd2l0aF9taWJmaWxlcyIpKQotQUNfQVJHX0VOQUJMRShtaWJmaWxlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtbWliZmlsZXMvLS13aXRob3V0LW1pYmZpbGVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1pYi1jb25maWctY2hlY2tpbmcsCi1bICAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nICAgIFR1cm5zIG9uIGV4dHJhIGNoZWNrcyBkdXJpbmcgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIG1pYiBtb2R1bGVzLiBBbnkgY29uZmxpY3RzIHdpbGwgY2F1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmUgdG8gYWJvcnQgKGRlZmF1bHQgaXMgdG8gaXNzdWUgYQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmcgYW5kIGNvbnRpbnVlLildLAotICAgIHdpdGhfbWliX2NmZ19jaGVja3M9InllcyIsd2l0aF9taWJfY2ZnX2NoZWNrcz0ibm8iKQotQUNfQVJHX1dJVEgobWliLWNvbmZpZy1jaGVja2luZywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nLy0tZGlzYWJsZS1taWItY29uZmlnLWNoZWNraW5nIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1pYi1jb25maWctZGVidWcsCi1bICAtLWVuYWJsZS1taWItY29uZmlnLWRlYnVnICAgICAgIFR1cm5zIG9uIHZlcmJvc2Ugb3V0cHV0IGR1cmluZyBtaWIgbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlndXJlIHByb2Nlc3NpbmcuKV0sCi0gICAgd2l0aF9taWJfY2ZnX2RlYnVnPSJ5ZXMiLHdpdGhfbWliX2NmZ19kZWJ1Zz0ibm8iKQotQUNfQVJHX1dJVEgobWliLWNvbmZpZy1jaGVja2luZywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1taWItY29uZmlnLWNoZWNraW5nLy0tZGlzYWJsZS1taWItY29uZmlnLWNoZWNraW5nIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfRU5BQkxFKG1mZC1yZXdyaXRlcywKLVsgIC0tZW5hYmxlLW1mZC1yZXdyaXRlcyAgICAgICAgICAgVXNlIG5ldyBNRkQgcmV3cml0ZXMgb2YgbWliIG1vZHVsZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmUgYXZhaWxhYmxlLiAoZGVmYXVsdCBpcyB0byB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbCBtaWIgbW9kdWxlIGNvZGUpLl0pCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCi0gICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTKQotZmkKLUFDX0FSR19XSVRIKG1mZC1yZXdyaXRlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS1tZmQtcmV3cml0ZXMvLS1kaXNhYmxlLW1mZC1yZXdyaXRlcyBpbnN0ZWFkIF0pICkKLQotYXNrZWRwa2NzPW5vCi1BQ19BUkdfV0lUSChwa2NzLAotWyAgLS13aXRoLXBrY3M9UEFUSCAgICAgICAgICAgICAgICBMb29rIGZvciBwa2NzMTEgaW4gUEFUSC9saWIuXSwKLSAgICBpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInh5ZXMiOyB0aGVuCi0gICAgICBhc2tlZHBrY3M9eWVzCi0gICAgZWxpZiB0ZXN0ICJ4JHdpdGh2YWwiID0gInhubyI7IHRoZW4KLSAgICAgIGFza2VkcGtjcz1ubwotICAgIGVsaWYgdGVzdCAtZCAiJHdpdGh2YWwiOyB0aGVuCi0gICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJHdpdGh2YWwpCi0gICAgICBhc2tlZHBrY3M9eWVzCi0gICAgZmksCi0pCi1BQ19BUkdfRU5BQkxFKHBrY3MsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXBrY3MvLS13aXRob3V0LXBrY3MgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUodGVzdGluZy1jb2RlLAotWyAgLS1lbmFibGUtdGVzdGluZy1jb2RlICAgICAgICAgICBFbmFibGVzIHNvbWUgY29kZSBzZWN0aW9ucyB0aGF0IHNob3VsZCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbmx5IGJlIHVzZWQgZm9yIHRlc3Rpbmcgb2YgY2VydGFpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVAgZnVuY3Rpb25hbGl0aWVzLiAgVGhpcyBzaG91bGQgKm5vdCogCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdHVybmVkIG9uIGZvciBwcm9kdWN0aW9uIHVzZS4gIEV2ZXIuXSwKLSAgICBBQ19ERUZJTkUoTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFKSkKLUFDX0FSR19XSVRIKHRlc3RpbmctY29kZSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS10ZXN0aW5nLWNvZGUvLS1kaXNhYmxlLXRlc3RpbmctY29kZSBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX0VOQUJMRShyZWVudHJhbnQsCi1bICAtLWVuYWJsZS1yZWVudHJhbnQgICAgICAgICAgICAgIEVuYWJsZXMgbG9ja2luZyBmdW5jdGlvbnMgdGhhdCBwcm90ZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSByZXNvdXJjZXMgaW4gc29tZSBtdWx0aS10aHJlYWRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudHMuICBUaGlzIGRvZXMgbm90IGd1YXJhbnRlZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocmVhZC1zYWZlIG9wZXJhdGlvbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDdXJyZW50bHkgYW4gZXhwZXJpbWVudGFsIHNldHRpbmcuXSwKLSAgICB3aXRoX3Jlc19sb2Nrcz0ieWVzIix3aXRoX3Jlc19sb2Nrcz0ibm8iKQotQUNfQVJHX1dJVEgocmVlbnRyYW50LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXJlZW50cmFudC8tLWRpc2FibGUtcmVlbnRyYW50IGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChyb290LWFjY2VzcywKLVsKLUNvbmZpZ3VyaW5nIHRoZSBhZ2VudDoKLSAgLS13aXRob3V0LXJvb3QtYWNjZXNzICAgICAgICAgICBUaGUgc25tcGQgYWdlbnQgd29uJ3QgcmVxdWlyZSByb290IGFjY2VzcyB0bwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biBpdC4gIFRoZSBpbmZvcm1hdGlvbiBpdCByZXR1cm5zIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pYi1JSSB0cmVlIG1heSBub3QgYmUgY29ycmVjdCwgaG93ZXZlci5dKQotQUNfQVJHX0VOQUJMRShyb290LWFjY2VzcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtcm9vdC1hY2Nlc3MvLS13aXRob3V0LXJvb3QtYWNjZXNzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChrbWVtLXVzYWdlLAotWyAgLS13aXRob3V0LWttZW0tdXNhZ2UgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBhbnkgY29kZSByZWxhdGVkIHRvIHRoZSB1c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBrbWVtLl0pCi1BQ19BUkdfRU5BQkxFKGttZW0tdXNhZ2UsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWttZW0tdXNhZ2UvLS13aXRob3V0LWttZW0tdXNhZ2UgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGR1bW15LXZhbHVlcywKLVsgIC0td2l0aC1kdW1teS12YWx1ZXMgICAgICAgICAgICAgUHJvdmlkZSAncGxhY2Vob2xkZXInIGR1bW15IHZhbHVlcyB3aGVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGlzIHRlY2huaWNhbGx5IG5vdCBjb21wbGlhbnQgd2l0aCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QIHNwZWNpZmljYXRpb25zLCBidXQgd2FzIGhvdyB0aGUgYWdlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVyYXRlZCBmb3IgdmVyc2lvbnMgPCA0LjAuXSkKLUFDX0FSR19FTkFCTEUoZHVtbXktdmFsdWVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1kdW1teS12YWx1ZXMvLS13aXRob3V0LWR1bW15LXZhbHVlcyBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgocGVyc2lzdGVudC1kaXJlY3RvcnksCi1bICAtLXdpdGgtcGVyc2lzdGVudC1kaXJlY3Rvcnk9ImRpcmVjdG9yeSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZWZhdWx0IGRpcmVjdG9yeSBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuXSxhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZPSIkd2l0aF9wZXJzaXN0ZW50X2RpcmVjdG9yeSIpCi1BQ19BUkdfRU5BQkxFKHBlcnNpc3RlbnQtZGlyZWN0b3J5LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1wZXJzaXN0ZW50LWRpcmVjdG9yeS8tLXdpdGhvdXQtcGVyc2lzdGVudC1kaXJlY3RvcnkgaW5zdGVhZCBdKSApCi0KLWRlZmF1bHRfcGVyc2lzdGVudF9tYXNrPTA3NwotQUNfQVJHX1dJVEgocGVyc2lzdGVudC1tYXNrLAotWyAgLS13aXRoLXBlcnNpc3RlbnQtbWFzaz0ibWFzayIgIERlZmF1bHQgbWFzayBmb3IgcGVyc2lzdGVudCBkYXRhIHN0b3JhZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IDA3NyldLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBtYXNrIHZhbHVlIF0pOwotICBmaQotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgcGVyc2lzdGVudCBtYXNrICR3aXRodmFsKQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9QRVJTSVNURU5UX01BU0ssJHdpdGh2YWwpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IHBlcnNpc3RlbnQgbWFzayAkZGVmYXVsdF9wZXJzaXN0ZW50X21hc2spCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1BFUlNJU1RFTlRfTUFTSywkZGVmYXVsdF9wZXJzaXN0ZW50X21hc2spCi1dKQotQUNfQVJHX0VOQUJMRShwZXJzaXN0ZW50LW1hc2ssLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXBlcnNpc3RlbnQtbWFzayBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoY29weV9wZXJzaXN0ZW50X2ZpbGVzLAotWyAgLS13aXRoLWNvcHktcGVyc2lzdGVudC1maWxlcz0ibm8iIERvbid0IGNvcHkgcGVyc2lzdGVudCBmaWxlcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvciB1c2UgInllcyIgdG8gY29weSB0aGVtKS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogeWVzKV0sCi0gICAgYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTPSIkd2l0aF9jb3B5X3BlcnNpc3RlbnRfZmlsZXMiKQotQUNfQVJHX0VOQUJMRShjb3B5X3BlcnNpc3RlbnRfZmlsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWNvcHlfcGVyc2lzdGVudF9maWxlcy8tLXdpdGhvdXQtY29weV9wZXJzaXN0ZW50X2ZpbGVzIGluc3RlYWQgXSkgKQotCi1kZWZhdWx0X3RlbXBfZmlsZV9wYXR0ZXJuPSIvdG1wL3NubXBkWFhYWFhYIgotQUNfQVJHX1dJVEgodGVtcC1maWxlLXBhdHRlcm4sCi1bICAtLXdpdGgtdGVtcC1maWxlLXBhdHRlcm49UEFUVEVSTiAgUGF0dGVybiBvZiB0ZW1wb3JhcnkgZmlsZXMgKERlZmF1bHQ6IC90bXAvc25tcGRYWFhYWFgpXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcGF0dGVybiBdKTsKLSAgZmkKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyB0ZW1wb3JhcnkgZmlsZSBwYXR0ZXJuICR3aXRodmFsKQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTiwiJHdpdGh2YWwiLFtQYXR0ZXJuIG9mIHRlbXBvcmFyeSBmaWxlc10pCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IHRlbXBvcmFyeSBmaWxlIHBhdHRlcm4gJGRlZmF1bHRfdGVtcF9maWxlX3BhdHRlcm4pCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1RFTVBfRklMRV9QQVRURVJOLCIkZGVmYXVsdF90ZW1wX2ZpbGVfcGF0dGVybiIsW1BhdHRlcm4gb2YgdGVtcG9yYXJ5IGZpbGVzXSkKLV0pCi1BQ19BUkdfRU5BQkxFKHRlbXAtZmlsZS1wYXR0ZXJuLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC10ZW1wLWZpbGUtcGF0dGVybiBpbnN0ZWFkIF0pICkKLQotZGVmYXVsdF9hZ2VudHhfc29ja2V0PSIvdmFyL2FnZW50eC9tYXN0ZXIiCi1BQ19BUkdfV0lUSChhZ2VudHgtc29ja2V0LAotWyAgLS13aXRoLWFnZW50eC1zb2NrZXQ9RklMRSAgICAgICAgIEFnZW50WCBzb2NrZXQgKERlZmF1bHQ6IC92YXIvYWdlbnR4L21hc3RlciBhcyBzcGVjaWZpZWQgaW4gUkZDMjc0MSldLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBmdWxsIHBhdGggXSk7Ci0gIGZpCi0gIEFDX01TR19SRVNVTFQodXNpbmcgQWdlbnRYIHNvY2tldCAkd2l0aHZhbCkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQUdFTlRYX1NPQ0tFVCwiJHdpdGh2YWwiLFtVbml4IGRvbWFpbiBzb2NrZXQgZm9yIEFnZW50WCBtYXN0ZXItc3ViYWdlbnQgY29tbXVuaWNhdGlvbl0pCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IEFnZW50WCBzb2NrZXQgJGRlZmF1bHRfYWdlbnR4X3NvY2tldCkKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfQUdFTlRYX1NPQ0tFVCwiJGRlZmF1bHRfYWdlbnR4X3NvY2tldCIsW1VuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uXSkKLV0pCi1BQ19BUkdfRU5BQkxFKGFnZW50eC1zb2NrZXQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWFnZW50eC1zb2NrZXQgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKGRlZmF1bHQtc25tcC12ZXJzaW9uLAotWyAgLS13aXRoLWRlZmF1bHQtc25tcC12ZXJzaW9uPSIzIiBEZWZhdWx0IHZlcnNpb24gb2YgU05NUCB0byB1c2UuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogMykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExlZ2FsIHZhbHVlczogMSwgMiAoZm9yIFNOTVB2MmMpIG9yIDMuXSwKLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPSIkd2l0aF9kZWZhdWx0X3NubXBfdmVyc2lvbiIpCi1BQ19BUkdfRU5BQkxFKGRlZmF1bHQtc25tcC12ZXJzaW9uLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbi8tLXdpdGhvdXQtZGVmYXVsdC1zbm1wLXZlcnNpb24gaW5zdGVhZCBdKSApCi0KLSMgd2UgdGVzdCB0aGlzIG5vdyBhbmQgbGF0ZXIgYXMgd2VsbC4gIHdlIHRlc3QgaXQgbm93IHNvIGNvbmZpZ3VyZSBjYW4gZGllCi0jIGVhcmx5IG9uIHdpdGggYW4gZXJyb3IgcmF0aGVyIHRoYW4gd2FpdGluZyB0aWxsIHRoZSBlbmQgb2YgdGhlIHNjcmlwdC4KLWlmIHRlc3QgIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIngiOyB0aGVuCi0gIGlmIHRlc3QgIiRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiA9ICIyYyI7IHRoZW4KLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OPSIyIgotICBmaQotICBpZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjEiIC1hICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjIiIC1hICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgIT0gIjMiOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKElsbGVnYWwgdmVyc2lvbiBudW1iZXIgcGFzc2VkIHRvIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbikKLSAgZmkKLWZpCi0KLUFDX0FSR19XSVRIKHN5c19jb250YWN0LAotWyAgLS13aXRoLXN5cy1jb250YWN0PSJ3aG9Ad2hlcmUiICBEZWZhdWx0IHN5c3RlbSBjb250YWN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlZmF1bHQ6IExPR0lOQERPTUFJTk5BTUUpXSwKLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19DT05UQUNUPSIkd2l0aF9zeXNfY29udGFjdCIpCi1BQ19BUkdfRU5BQkxFKHN5c19jb250YWN0LCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1zeXMtY29udGFjdC8tLXdpdGhvdXQtc3lzLWNvbnRhY3QgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKHN5c19sb2NhdGlvbiwKLVsgIC0td2l0aC1zeXMtbG9jYXRpb249ImxvY2F0aW9uIiAgRGVmYXVsdCBzeXN0ZW0gbG9jYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVmYXVsdDogVW5rbm93bildLAotICAgIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfU1lTX0xPQz0iJHdpdGhfc3lzX2xvY2F0aW9uIikKLUFDX0FSR19FTkFCTEUoc3lzX2xvY2F0aW9uLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1zeXMtbG9jYXRpb24vLS13aXRob3V0LXN5cy1sb2NhdGlvbiBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgobG9nZmlsZSwKLVsgIC0td2l0aC1sb2dmaWxlPSJsb2NhdGlvbiIgICAgICAgRGVmYXVsdCBsb2cgZmlsZSBsb2NhdGlvbiBmb3Igc25tcGQuXSwKLSAgICBhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0xPR0ZJTEU9IiR3aXRoX2xvZ2ZpbGUiKQotQUNfQVJHX0VOQUJMRShsb2dmaWxlLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1sb2dmaWxlLy0td2l0aG91dC1sb2dmaWxlIGluc3RlYWQgXSkgKQotaWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRSIgPSAibm8iOyB0aGVuCi0gICAgYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9MT0dGSUxFPSJub25lIgotZmkKLQotQUNfQVJHX1dJVEgodHJhbnNwb3J0cywKLVsgIC0td2l0aC10cmFuc3BvcnRzPSJ0MSB0MiAuLi4iICAgQ29tcGlsZSBpbiB0aGUgZ2l2ZW4gU05NUCB0cmFuc3BvcnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZXMgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS5dKQotQUNfQVJHX1dJVEgob3V0X3RyYW5zcG9ydHMsCi1bICAtLXdpdGgtb3V0LXRyYW5zcG9ydHM9InQxIC4uLiIgIEV4Y2x1ZGUgbGlzdGVkIFNOTVAgdHJhbnNwb3J0cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS4KLQotICBBdmFpbGFibGUgU05NUCB0cmFuc3BvcnQgbW9kdWxlcyBhcmU6Ci0KLSAgICBVRFAgICAgICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVURQL0lQLgotICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGFsd2F5cyBjb21waWxlZCBpbi4KLSAgICBVRFBJUHY2ICAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgVURQL0lQdjYuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgYXZhaWxhYmxlIGZvciBMaW51eCwgU29sYXJpcyBhbmQKLSAgICAgICAgICAgICAgICBGcmVlQlNEIGF0IGxlYXN0LgotICAgICAgICAgICAgICAgIEl0IGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQuCi0gICAgVENQSVB2NiAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIFVEUC9JUHY2LgotICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIGF2YWlsYWJsZSBmb3IgTGludXgsIFNvbGFyaXMgYW5kCi0gICAgICAgICAgICAgICAgRnJlZUJTRCBhdCBsZWFzdC4KLSAgICAgICAgICAgICAgICBJdCBpcyBuZXZlciBjb21waWxlZCBpbiBieSBkZWZhdWx0LgotICAgIFRDUCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBUQ1AvSVAuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCwgYnV0IG1heSBiZSBvbWl0dGVkLgotICAgIFVuaXggICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBVbml4IGRvbWFpbiBwcm90b2NvbHMuCi0gICAgICAgICAgICAgICAgVGhpcyB0cmFuc3BvcnQgaXMgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBleGNlcHQgb24gV2luMzIKLSAgICAgICAgICAgICAgICBwbGF0Zm9ybXMsIGFuZCBtYXkgYmUgb21pdHRlZC4KLSAgICBDYWxsYmFjayAgICBzdXBwb3J0IGZvciBTTk1QIG92ZXIgYW4gaW50ZXJuYWwgbG9jYWxseSBjb25uZWN0ZWQgcGFpcgotICAgICAgICAgICAgICAgIG9mIHNubXBfc2Vzc2lvbnMuCi0gICAgQUFMNVBWQyAgICAgc3VwcG9ydCBmb3IgU05NUCBvdmVyIEFBTDUgUFZDcy4KLSAgICAgICAgICAgICAgICBUaGlzIHRyYW5zcG9ydCBpcyBwcmVzZW50bHkgb25seSBhdmFpbGFibGUgZm9yIExpbnV4LAotICAgICAgICAgICAgICAgIGlzIG5ldmVyIGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQgYW5kIG1heSBiZSBvbWl0dGVkLgotICAgIElQWCAgICAgICAgIHN1cHBvcnQgZm9yIFNOTVAgb3ZlciBJUFggcGVyIFJGQyAxNDIwLgotICAgICAgICAgICAgICAgIFRoaXMgdHJhbnNwb3J0IGlzIHByZXNlbnRseSBvbmx5IGF2YWlsYWJsZSBmb3IgTGludXgsCi0gICAgICAgICAgICAgICAgaXMgbmV2ZXIgY29tcGlsZWQgaW4gYnkgZGVmYXVsdCBhbmQgbWF5IGJlIG9taXR0ZWQuCi1dKQotCi0jCi0jIENhdGNoIGNvbW1vbiBtaXN0YWtlcyBpbiB0cmFuc3BvcnQgb3B0aW9ucwotIwotQUNfQVJHX1dJVEgodHJhbnNwb3J0LCwgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtdHJhbnNwb3J0cy8tLXdpdGhvdXQtdHJhbnNwb3J0cyBpbnN0ZWFkIF0pICAgICApCi1BQ19BUkdfV0lUSChvdXQtdHJhbnNwb3J0LCxBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1vdXQtdHJhbnNwb3J0cy8tLXdpdGhvdXQtb3V0LXRyYW5zcG9ydHMgaW5zdGVhZCBdKSApCi0KLSMKLSMgc2VjdXJpdHkgbW9kdWxlcwotIwotCi1BQ19BUkdfV0lUSChzZWN1cml0eS1tb2R1bGVzLAotWyAgLS13aXRoLXNlY3VyaXR5LW1vZHVsZXM9InMxIHMyIC4uLiIgICBDb21waWxlIGluIHRoZSBnaXZlbiBTTk1QIHNlY3VyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUgc2VydmljZXMgKHNwYWNlIHNlcGFyYXRlZCBsaXN0KS4KLQotICBBdmFpbGFibGUgU05NUCBzZWN1cml0eSBzZXJ2aWNlczoKLQotICAgICAgICB1c20gICAgICAgICAgICAgICAgc3VwcG9ydCBmb3IgdXNlciBiYXNlZCBTTk1QIHNlY3VyaXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAocmVxdWlyZWQgYW5kIGFsd2F5cyBjb21waWxlZCBpbikKLSAgICAgICAga3NtICAgICAgICAgICAgICAgIHN1cHBvcnQgZm9yIGtlcmJlcm9zIGJhc2VkIFNOTVAgc2VjdXJpdHkKLV0pCi1BQ19BUkdfRU5BQkxFKHNlY3VyaXR5LW1vZHVsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXNlY3VyaXR5LW1vZHVsZXMvLS13aXRob3V0LXNlY3VyaXR5LW1vZHVsZXMgaW5zdGVhZCBdKSApCi0KLSMKLSMgbWliIG1vZHVsZXMKLSMKLQotQUNfQVJHX1dJVEgobWliX21vZHVsZXMsCi1bICAtLXdpdGgtbWliLW1vZHVsZXM9Iml0ZW0xIC4uLiIgIENvbXBpbGUgd2l0aCBhZGRpdGlvbmFsIG1pYiBtb2R1bGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoU3BhY2Ugc2VwYXJhdGVkIGxpc3QpLl0pCi1BQ19BUkdfRU5BQkxFKG1pYl9tb2R1bGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1taWItbW9kdWxlcy8tLXdpdGhvdXQtbWliLW1vZHVsZXMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19XSVRIKG91dF9taWJfbW9kdWxlcywKLVsgIC0td2l0aC1vdXQtbWliLW1vZHVsZXM9Imxpc3QiICAgQ29tcGlsZSB3aXRob3V0IHRoZXNlIG1pYiBtb2R1bGVzLgotCi0gIERlZmF1bHQgbWliIG1vZHVsZXMgY29tcGlsZWQgaW50byB0aGUgYWdlbnQgKHdoaWNoIGNhbiBiZSByZW1vdmVkKToKLSAgCi0gICAgbWliSUkgICAgICAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgbWliLUlJIHRyZWUuCi0gICAgc25tcHYzbWlicyAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgc25tcHYzIG1pYiBtb2R1bGVzLgotICAgIHVjZF9zbm1wICAgICAgICAgICAgICAgVUNELVNOTVAtTUlCIHNwZWNpZmljIGV4dGVuc2lvbnMuCi0gICAgYWdlbnRfbWlicyAgICAgICAgICAgICBORVQtU05NUC1BR0VOVC1NSUIgZXh0ZW5zaW9ucwotICAgIGFnZW50eCAgICAgICAgICAgICAgICAgQWdlbnRYIHN1cHBvcnQgKHNlZSBiZWxvdykKLSAgICBub3RpZmljYXRpb24gICAgICAgICAgIG1pYnMgc3VwcG9ydGluZyBzcGVjaWZpY2F0aW9uIG9mIHRyYXAgZGVzdGluYXRpb25zLgotICAgIHRhcmdldCAgICAgICAgICAgICAgICAgU3VwcG9ydCBmb3IgdGhlIFNOTVAgV0dzIFRBUkdFVC1NSUIuCi0gICAgdXRpbGl0aWVzICAgICAgICAgICAgICBnZW5lcmFsIGFnZW50IGNvbmZpZ3VyYXRpb24gdXRpbGl0aWVzLgotICAgIGRpc21hbi9ldmVudCAgICAgICAgICAgc3VwcG9ydCBmb3IgdGhlIERJU01BTi1FVkVOVC1NSUIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN1cHBvcnRzIHNlbGYgbW9uaXRvcmluZyBhbmQgbm90aWZpY2F0aW9uIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlcnkgd2hlbiBlcnJvciBjb25kaXRpb25zIGFyZSBmb3VuZCkKLSAgICBkaXNtYW4vc2NoZWR1bGUgICAgICAgIHN1cHBvcnQgZm9yIHRoZSBESVNNQU4tU0NIRURVTEUtTUlCCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0cmlnZ2VyIFNFVCByZXF1ZXN0cyBhdCBzcGVjaWZpZWQgdGltZXMpCi0gICAgaG9zdCAgICAgICAgICAgICAgICAgICBob3N0IHJlc291cmNlcyBtaWIgc3VwcG9ydC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9ubHkgb24gbWFqb3Igc3VwcG9ydGVkIHBsYXRmb3JtcykKLQotICBPcHRpb25hbCBtaWIgbW9kdWxlcyB0aGF0IGNhbiBiZSBidWlsdCBpbnRvIHRoZSBhZ2VudCBpbmNsdWRlOgotICAgIHNtdXggICAgICAgICAgICAgICAgICAgc211eCBzdXBwb3J0IHRvIGFsbG93IHN1YmFnZW50cyB0byBhdHRhY2ggdG8gc25tcGQuCi0gICAgbWliSUkvbXRhX3NlbmRtYWlsICAgICBTZW5kbWFpbCBzdGF0aXN0aWNzIG1vbml0b3JpbmcgKE1UQS1NSUIpCi0gICAgdWNkLXNubXAvZGlza2lvICAgICAgICBUYWJsZSBvZiBpby1kZXZpY2VzIGFuZCBob3cgbXVjaCBkYXRhIHRoZXkgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZC93cml0dGVuLiAgKG9ubHkgdGVzdGVkIG9uIFNvbGFyaXMsIExpbnV4KQotICAgIGRpc21hbi9vbGQtZXZlbnQtbWliICAgcHJldmlvdXMgaW1wbGVtZW50YXRpb24gb2YgdGhlIERJU01BTi1FVkVOVC1NSUIKLQotICBPcHRpb25hbCBtb2R1bGVzIGZvciBzcGVjaWZpYyBwbGF0Zm9ybXMKLSAgICBMaW51eAotICAgICAgdWNkLXNubXAvbG1TZW5zb3JzICAgaGFyZHdhcmUgbW9uaXRvcmluZyAoTE0tU0VOU09SUy1NSUIpCi0gICAgICBpcC1taWIvaXB2NEludGVyZmFjZVRhYmxlICAoZXhwZXJpbWVudGFsKQotICAgICAgaXAtbWliL2lwdjZJbnRlcmZhY2VUYWJsZSAgKGV4cGVyaW1lbnRhbCkKLSAgICAgIHR1bm5lbCAgICAgICAgICAgICAgIExpbnV4IFRVTk5FTC1NSUIgc3VwcG9ydCAoaWZUYWJsZSBleHRlbnNpb24pCi0gICAgICBtaWJJSS9pbnRlcmZhY2VzICAgICAob2xkIGlmVGFibGUgaW1wbGVtZW50YXRpb24pCi0gICAgICBtaXNjL2lwZndhY2MgICAgICAgICBhY2NvdW50aW5nIHJ1bGVzIElQIGZpcmV3YWxsIGluZm9ybWF0aW9uCi0gICAgICBpcGZ3Y2hhaW5zL2lwZndjaGFpbnMgIGZpcmV3YWxsIGNoYWlucyB1bmRlciBpcGZ3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChTZWUgYWdlbnQvbWliZ3JvdXAvaXBmd2NoYWlucy9SRUFETUUpCi0gICAgICBzY3RwLW1pYiAgICAgICAgICAgICBzdXBwb3J0IGZvciB0aGUgU0NUUC1NSUIKLQotICAgIFNvbGFyaXMKLSAgICAgIHVjZC1zbm1wL2xtU2Vuc29ycyAgIGhhcmR3YXJlIG1vbml0b3JpbmcgKExNLVNFTlNPUlMtTUlCKQotICAgICAgaWYtbWliICAgICAgICAgICAgICAgSUYtTUlCIHJld3JpdGUgKGFkZCAtLWVuYWJsZS1tZmQtcmV3cml0ZXMpCi0gICAgICB0Y3AtbWliICAgICAgICAgICAgICBUQ1AtTUlCIHJld3JpdGUgKHRjcENvbm5lY3Rpb25UYWJsZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGNwTGlzdGVuZXJUYWJsZTsgYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKLSAgICAgIHVkcC1taWIgICAgICAgICAgICAgIFVEUC1NSUIgcmV3cml0ZSAodWRwRW5kcG9pbnRUYWJsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkIC0tZW5hYmxlLW1mZC1yZXdyaXRlcykKLQotICAgIEZyZWVCU0QvT3BlbkJTRAotICAgICAgaWYtbWliICAgICAgICAgICAgICAgSUYtTUlCIHJld3JpdGUgKGFkZCAtLWVuYWJsZS1tZmQtcmV3cml0ZXMpCi0KLSAgQWdlbnRYIHN1cHBvcnQ6Ci0gICAgYWdlbnR4L3N1YmFnZW50ICAgICAgICBhbGxvd3MgdGhlIGFnZW50IHRvIHJ1biBhcyBlaXRoZXIgYSBzbm1wIGFnZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBvciBhcyBhbiBhZ2VudFggc3ViLWFnZW50LgotICAgIGFnZW50eC9tYXN0ZXIgICAgICAgICAgbWFrZXMgdGhlIGFnZW50IHJ1biBhcyBhbiBhZ2VudFggbWFzdGVyIGFnZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICBhcyB3ZWxsIGFzIGEgbm9ybWFsIHNubXAgYWdlbnQuCi0gICAgYWdlbnR4ICAgICAgICAgICAgICAgICBpbmNsdWRlcyBib3RoIGFnZW50eC9tYXN0ZXIgYW5kIGFnZW50eC9jbGllbnQuCi0KLSAgT3B0aW9uYWwgbW9kdWxlcyBmb3IgQyBjb2RlcnMgdG8gbG9vayBhdCBhbmQvb3IgaW5jbHVkZSBhcyBleHRlbnNpb24gZXhhbXBsZXM6Ci0gIAotICAgIGV4YW1wbGVzL3VjZERlbW9QdWJsaWMgIFNOTVB2MyBpbnRlcm9wZXJhYmlsaXR5IHRlc3RpbmcgbWliLgotICAgIGV4YW1wbGVzL2V4YW1wbGUgICAgICAgIGV4YW1wbGUgQyBjb2RlIGV4dGVuc2lvbi5dKQotQUNfQVJHX0VOQUJMRShvdXRfbWliX21vZHVsZXMsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLW91dC1taWItbW9kdWxlcy8tLXdpdGhvdXQtb3V0LW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotCi0KLSMKLUFDX0FSR19XSVRIKGVudGVycHJpc2Utb2lkLAotW0VudGVycHJpc2UgT0lEczogICh3YXJuaW5nOiB0aGlzIHNob3VsZCBiZSB1c2VkIHdpdGggY2F1dGlvbi4pCi0KLSAgLS13aXRoLWVudGVycHJpc2Utb2lkICAgICAgICAgICAgICBUaGUgZW50ZXJwcmlzZSBudW1iZXIgYXNzaWduZWQgdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVuZG9yIGJ5IElBTkEuICBTZWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmlhbmEub3JnL2NnaS1iaW4vZW50ZXJwcmlzZS5wbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGdldCBvbmUsIHRob3VnaCB1c2luZyB0aGUgZGVmYXVsdCBpcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2JhYmx5IHRoZSByaWdodCBjaG9pY2UgaXMgbW9zdCBjYXNlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA4MDcyID0gImVudGVycHJpc2UubmV0LXNubXAiKV0sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHZhbHVlIGZvciB0aGUgZW50ZXJwcmlzZSBudW1iZXIgXSk7Ci0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0VOVEVSUFJJU0VfT0lELCAkd2l0aHZhbCkKLSAgZW50X29pZD0iMSwzLDYsMSw0LDEsJHdpdGh2YWwiCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0VOVEVSUFJJU0VfTUlCLCAkZW50X29pZCkKLSAgZW50X2RvdF9vaWQ9IjEuMy42LjEuNC4xLiR3aXRodmFsIgotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9FTlRFUlBSSVNFX0RPVF9NSUIsICRlbnRfZG90X29pZCkKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBlbnRlcnByaXNlIG51bWJlciAkd2l0aHZhbCkKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgImVudGVycHJpc2UubmV0LXNubXAiKQotXSkKLUFDX0FSR19FTkFCTEUoZW50ZXJwcmlzZS1vaWQsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWVudGVycHJpc2Utb2lkLy0td2l0aG91dC1lbnRlcnByaXNlLW9pZCBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoZW50ZXJwcmlzZS1zeXNvaWQsCi1bCi0gIC0td2l0aC1lbnRlcnByaXNlLXN5c29pZCAgICAgICAgICAgVGhlIGJhc2UgT0lEIGZvciB0aGUgc3lzT2JqZWN0SUQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgc3lzdGVtIGdyb3VwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRlZmF1bHQgLjEuMy42LjEuNC4xLjgwNzIuMy4yLi4uID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJuZXRTbm1wQWdlbnRPSURzLi4uIildLFsKLSAgaWYgdGVzdCAiJHdpdGh2YWwiID0geWVzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFsgUGxlYXNlIHByb3ZpZGUgYSBiYXNlIE9JRCB2YWx1ZSBdKTsKLSAgZmkKLSAgc3lzX29pZD1gZWNobyAiJHdpdGh2YWwiIHwgc2VkICdzL15cLi8vJyB8IHNlZCAncy9cLi9cLC9nJ2AKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfU1lTVEVNX01JQiwgJHN5c19vaWQpCi0gIHN5c19kb3Rfb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nYAotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fRE9UX01JQiwgJHN5c19kb3Rfb2lkKQotICBzeXNvaWRfbGVuPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvW15cLl0vL2cnIHwgYXdrIC1GXC4gJ3sgcHJpbnQgTkYgfSdgCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX1NZU1RFTV9ET1RfTUlCX0xFTkdUSCwgJHN5c29pZF9sZW4pCi0gIEFDX01TR19SRVNVTFQodXNpbmcgZW50ZXJwcmlzZSBzeXNPSUQgJHdpdGh2YWwgLi4uLikKLV0sWwotICBBQ19NU0dfUkVTVUxUKHVzaW5nIGRlZmF1bHQgZW50ZXJwcmlzZSBzeXNPSUQgIk5FVC1TTk1QLU1JQjo6bmV0U25tcEFnZW50T0lEcy4uLiIpCi1dKQotQUNfQVJHX0VOQUJMRShlbnRlcnByaXNlLXN5c29pZCwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtZW50ZXJwcmlzZS1zeXNvaWQvLS13aXRob3V0LWVudGVycHJpc2Utc3lzb2lkIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChlbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQsCi1bCi0gIC0td2l0aC1lbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQgVGhlIE9JRCB1c2VkIGZvciB0aGUgcm9vdCBvZgotCQkJCSAgICAgZW50ZXJwcmlzZSBzcGVjaWZpYyBub3RpZmljYXRpb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IC4xLjMuNi4xLjQuMS44MDcyLjQgPSAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5ldFNubXBOb3RpZmljYXRpb25QcmVmaXgiKV0sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIGJhc2UgT0lEIHZhbHVlIF0pOwotICBmaQotICBub3RpZmljYXRpb25fb2lkPWBlY2hvICIkd2l0aHZhbCIgfCBzZWQgJ3MvXlwuLy8nIHwgc2VkICdzL1wuL1wsL2cnYAotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9OT1RJRklDQVRJT05fTUlCLCAkbm90aWZpY2F0aW9uX29pZCkKLSAgbm90aWZpY2F0aW9uX2RvdF9vaWQ9YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9eXC4vLydgCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX05PVElGSUNBVElPTl9ET1RfTUlCLCAkbm90aWZpY2F0aW9uX2RvdF9vaWQpCi0gIG5vdGlmaWNhdGlvbm9pZF9sZW49YGVjaG8gIiR3aXRodmFsIiB8IHNlZCAncy9bXlwuXS8vZycgfCBhd2sgLUZcLiAneyBwcmludCBORiB9J2AKLSAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTk9USUZJQ0FUSU9OX0RPVF9NSUJfTEVOR1RILCAkbm90aWZpY2F0aW9ub2lkX2xlbikKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBlbnRlcnByaXNlIG5vdGlmaWNhdGlvbnMgJHdpdGh2YWwpCi1dLFsKLSAgQUNfTVNHX1JFU1VMVCh1c2luZyBkZWZhdWx0IG5vdGlmaWNhdGlvbnMgIk5FVC1TTk1QLU1JQjo6bmV0U25tcE5vdGlmaWNhdGlvbnMiKQotXSkKLUFDX0FSR19FTkFCTEUoZW50ZXJwcmlzZS1ub3RpZmljYXRpb24tb2lkLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1lbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQvLS13aXRob3V0LWVudGVycHJpc2Utbm90aWZpY2F0aW9uLW9pZCBpbnN0ZWFkIF0pICkKLSMKLSMgQ2F0Y2ggY29tbW9uIG1pc3Rha2VzIGluIGNvbmZpZ3VyZSBvcHRpb25zCi0jCi1BQ19BUkdfV0lUSChtaWItbW9kdWxlLCwgICAgQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24xLiBVc2UgLS13aXRoLW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgICAgICkKLUFDX0FSR19XSVRIKG1vZHVsZSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24zLiBVc2UgLS13aXRoLW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgobW9kdWxlcywsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb240LiBVc2UgLS13aXRoLW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChvdXQtbWliLW1vZHVsZSwsQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb241LiBVc2UgLS13aXRoLW91dC1taWItbW9kdWxlcyBpbnN0ZWFkIF0pICkKLUFDX0FSR19XSVRIKG91dC1tb2R1bGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbjcuIFVzZSAtLXdpdGgtb3V0LW1pYi1tb2R1bGVzIGluc3RlYWQgXSkgKQotQUNfQVJHX1dJVEgob3V0LW1vZHVsZSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb244LiBVc2UgLS13aXRoLW91dC1taWItbW9kdWxlcyBpbnN0ZWFkIF0pICkKLQotIwotIyBQZXJsIHNwZWNpZmljCi0jCi1BQ19BUkdfV0lUSChwZXJsLW1vZHVsZXMsCi1bCi1QZXJsOgotICAtLXdpdGgtcGVybC1tb2R1bGVzWz1BUkdTXSAgICAgIEluc3RhbGwgdGhlIFBlcmwgbW9kdWxlcyBhbG9uZyB3aXRoIHRoZSByZXN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIG5ldC1zbm1wIHRvb2xraXQuICBJZiBBUkdTIGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWVkLCB0aGV5J3JlIHBhc3NlZCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYWtlZmlsZS5QTCBzY3JpcHQuXSxbCi0gICAgaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotICAgICAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICBlbHNlCi0gICAgICBpbnN0YWxsX3Blcmw9InllcyIKLSAgICAgIGlmIHRlc3QgIiR3aXRodmFsIiAhPSAieWVzIjsgdGhlbgotICAgICAgICBQRVJMQVJHUz0iJHdpdGh2YWwiCi0gICAgICBmaQotICAgIGZpCi1dLCBpbnN0YWxsX3Blcmw9InRyeSIpCi0KLUFDX0FSR19FTkFCTEUoZW1iZWRkZWQtcGVybCwKLVsgIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsICAgICAgICAgRGlzYWJsZSBlbWJlZGRlZCBQZXJsIGluIHRoZSBTTk1QIGFnZW50IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXB0cmFwZC4gW2VuYWJsZWQgYnkgZGVmYXVsdF1dLAotICAgIGVtYmVkX3Blcmw9IiRlbmFibGV2YWwiLCBlbWJlZF9wZXJsPSJ0cnkiKQotCi1BQ19BUkdfRU5BQkxFKHBlcmwtY2MtY2hlY2tzLAotWyAgLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzICAgICAgICBEaXNhYmxlIGNvbmZpZ3VyZSBjaGVja3MgZm9yIHdoZXRoZXIgUGVybCdzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQyBDb21waWxlciBpcyBjb21wYXRpYmxlIHdpdGggb3VycyB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWQgUGVybCBpcyBlbmFibGVkLl0pCi0KLSMgQ29tbW9uIHBlcmwgbWlzdGFrZXMKLUFDX0FSR19FTkFCTEUocGVybC1tb2R1bGVzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1wZXJsLW1vZHVsZXMvLS13aXRob3V0LXBlcmwtbW9kdWxlcyBpbnN0ZWFkIF0pICkKLUFDX0FSR19XSVRIKGVtYmVkZGVkLXBlcmwsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS1lbmFibGUtZW1iZWRkZWQtcGVybC8tLWRpc2FibGUtZW1iZWRkZWQtcGVybCBpbnN0ZWFkIF0pICkKLUFDX0FSR19XSVRIKHBlcmwtY2MtY2hlY2tzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0tZW5hYmxlLXBlcmwtY2MtY2hlY2tzLy0tZGlzYWJsZS1wZXJsLWNjLWNoZWNrcyBpbnN0ZWFkIF0pICkKLQotCi0jCi0jIFB5dGhvbiBzcGVjaWZpYwotIwotQUNfQVJHX1dJVEgocHl0aG9uLW1vZHVsZXMsCi1bCi1QeXRob246Ci0gIC0td2l0aC1weXRob24tbW9kdWxlc1s9QVJHU10gICAgSW5zdGFsbCB0aGUgcHl0aG9uIGJpbmRpbmdzIGFsb25nIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdCBvZiB0aGUgbmV0LXNubXAgdG9vbGtpdC4gIElmIEFSR1MgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZpZWQsIHRoZXkncmUgcGFzc2VkIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldHVwLnB5IHNjcmlwdCBhcyBhcmd1bWVudHMuXSxbCi0gICAgaW5zdGFsbF9weXRob249InllcyIKLSAgICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSAieWVzIjsgdGhlbgotICAgICAgUFlUSE9OQVJHUz0iIgotICAgIGVsaWYgdGVzdCAiJHdpdGh2YWwiID0gIm5vIjsgdGhlbgotICAgICAgUFlUSE9OQVJHUz0iIgotICAgICAgaW5zdGFsbF9weXRob249Im5vIgotICAgIGVsc2UKLSAgICAgIFBZVEhPTkFSR1M9IiR3aXRodmFsIgotICAgIGZpCi1dLCBpbnN0YWxsX3B5dGhvbj0ibm8iKQotCi0jIG90aGVyIGZsYWdzCi0KLUFDX0FSR19XSVRIKHNlcnZlci1zZW5kLWJ1ZiwKLVsKLU5ldHdvcmsgQnVmZmVyczoKLSAgLS13aXRoLXNlcnZlci1zZW5kLWJ1Zls9QVJHXSAgICBVc2UgQVJHIGZvciB0aGUgZGVmYXVsdCBVRFAvVENQIHNlbmQgYnVmZmVyIGluc3RlYWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgT1MgYnVmZmVyIGZvciBzZXJ2ZXIgc29ja2V0cyB0aGF0IGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgKHNubXBkLCBzbm1wdHJhcGQpLiAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGluIHRoZSBydW50aW1lIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIEFSRyBzaG91bGQgYmUgdGhlIHNpemUgaW4gYnl0ZXNdLFsKLSAgIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2VydmVyIHNlbmQgYnVmZmVyIF0pCi0gICBmaQotICAgQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfREVGQVVMVF9TRVJWRVJfU0VORF9CVUYsICR3aXRodmFsKV0sCi0gICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHNlbmQgYnVmZmVyIHNpemUgZm9yIHNlcnZlciBzb2NrZXRzXSkgKQotQUNfQVJHX0VOQUJMRShzZXJ2ZXItc2VuZC1idWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXNlcnZlci1zZW5kLWJ1Zi8tLXdpdGhvdXQtc2VydmVyLXNlbmQtYnVmIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChzZXJ2ZXItcmVjdi1idWYsCi1bICAtLXdpdGgtc2VydmVyLXJlY3YtYnVmWz1BUkddICAgIFNpbWlsYXIgYXMgcHJldmlvdXMgb3B0aW9uLCBidXQgZm9yIHJlY2VpdmUgYnVmZmVyXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgc2VydmVyIHJlY3YgYnVmZmVyIF0pCi0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfU0VSVkVSX1JFQ1ZfQlVGLCAkd2l0aHZhbCldLAotICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUgZm9yIHNlcnZlciBzb2NrZXRzXSkgKQotQUNfQVJHX0VOQUJMRShzZXJ2ZXItcmVjdi1idWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLXNlcnZlci1yZWN2LWJ1Zi8tLXdpdGhvdXQtc2VydmVyLXJlY3YtYnVmIGluc3RlYWQgXSkgKQotCi1BQ19BUkdfV0lUSChjbGllbnQtc2VuZC1idWYsCi1bICAtLXdpdGgtY2xpZW50LXNlbmQtYnVmWz1BUkddICAgIFNpbWlsYXIgYXMgcHJldmlvdXMgb3B0aW9ucywgYnV0IGZvciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlIGJ1ZmZlciBvZiBjbGllbnQgc29ja2V0c10sWwotICBpZiB0ZXN0ICIkd2l0aHZhbCIgPSB5ZXM7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoWyBQbGVhc2UgcHJvdmlkZSBhIHBvc2l0aXZlIG51bWJlciBmb3IgdGhlIGNsaWVudCBzZW5kIGJ1ZmZlciBdKQotICBmaQotICBBQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX0NMSUVOVF9TRU5EX0JVRiwgJHdpdGh2YWwpXSwKLSAgQUNfTVNHX1JFU1VMVChbdXNpbmcgT1MgZGVmYXVsdCBzZW5kIGJ1ZmZlciBzaXplIGZvciBjbGllbnQgc29ja2V0c10pICkKLUFDX0FSR19FTkFCTEUoY2xpZW50LXNlbmQtYnVmLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1jbGllbnQtc2VuZC1idWYvLS13aXRob3V0LWNsaWVudC1zZW5kLWJ1ZiBpbnN0ZWFkIF0pICkKLQotQUNfQVJHX1dJVEgoY2xpZW50LXJlY3YtYnVmLAotWyAgLS13aXRoLWNsaWVudC1yZWN2LWJ1Zls9QVJHXSAgICBTaW1pbGFyIGFzIHByZXZpb3VzIG9wdGlvbnMsIGJ1dCBmb3IgdGhlIHNlbmQgYnVmZmVyXSxbCi0gIGlmIHRlc3QgIiR3aXRodmFsIiA9IHllczsgdGhlbgotICAgIEFDX01TR19FUlJPUihbIFBsZWFzZSBwcm92aWRlIGEgcG9zaXRpdmUgbnVtYmVyIGZvciB0aGUgY2xpZW50IHJlY3YgYnVmZmVyIF0pCi0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfQ0xJRU5UX1JFQ1ZfQlVGLCAkd2l0aHZhbCldLAotICBBQ19NU0dfUkVTVUxUKFt1c2luZyBPUyBkZWZhdWx0IHJlY3YgYnVmZmVyIHNpemUgZm9yIGNsaWVudCBzb2NrZXRzXSkgKQotQUNfQVJHX0VOQUJMRShjbGllbnQtcmVjdi1idWYsLAotCUFDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWNsaWVudC1yZWN2LWJ1Zi8tLXdpdGhvdXQtY2xpZW50LXJlY3YtYnVmIGluc3RlYWQgXSkgKQotCi0jCi0jIG90aGVyd2lzZSBwcm9tcHRlZCBpbmZvcm1hdGlvbgotIwotQUNfQVJHX1dJVEgoZGVmYXVsdHMsCi1bCi1NaXNjZWxsYW5lb3VzOgotICAtLXdpdGgtZGVmYXVsdHMgICAgICAgICBVc2UgZGVmYXVsdHMgZm9yIHByb21wdGVkIHZhbHVlcy5dLAotICAgIGRlZmF1bHRzPSJ5ZXMiLGRlZmF1bHRzPSJubyIpCi1BQ19BUkdfRU5BQkxFKGRlZmF1bHRzLCwKLQlBQ19NU0dfRVJST1IoWyBJbnZhbGlkIG9wdGlvbi4gVXNlIC0td2l0aC1kZWZhdWx0cy8tLXdpdGhvdXQtZGVmYXVsdHMgaW5zdGVhZCBdKSApCi0KLUFDX0FSR19FTkFCTEUodWNkLXNubXAtY29tcGF0aWJpbGl0eSwKLVsgIC0tZW5hYmxlLXVjZC1zbm1wLWNvbXBhdGliaWxpdHkgSW5zdGFsbCB1Y2Qtc25tcCBsb29rLWFsaWtlIGhlYWRlcnMgYW5kIGxpYnMuCi1dKQotQUNfQVJHX1dJVEgodWNkLXNubXAtY29tcGF0aWJpbGl0eSwsCi0JQUNfTVNHX0VSUk9SKFsgSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS11Y2Qtc25tcC1jb21wYXRpYmlsaXR5Ly0tZGlzYWJsZS11Y2Qtc25tcC1jb21wYXRpYmlsaXR5IGluc3RlYWQgXSkgKQotCi0jCi0jIHNldHVwIGluc3RhbGwgdGFyZ2V0cwotIwotaWYgdGVzdCAieCRlbmFibGVfdWNkX3NubXBfY29tcGF0aWJpbGl0eSIgPSAieHllcyIgOyB0aGVuCQotICBpbnN0YWxsdWNkaGVhZGVycz1pbnN0YWxsdWNkaGVhZGVycwotICBpbnN0YWxsdWNkbGlicz1pbnN0YWxsdWNkbGlicwotICBBQ19NU0dfQ0FDSEVfQUREKFVDRC1TTk1QIGNvbXBhdGFiaWxpdHk6ICAgICBlbmFibGVkKQotZmkKLUFDX1NVQlNUKGluc3RhbGx1Y2RoZWFkZXJzKQotQUNfU1VCU1QoaW5zdGFsbHVjZGxpYnMpCi0KLSMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuIAotaWYgdGVzdCAieCR3aXRoX3Jvb3RfYWNjZXNzIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX05PX1JPT1RfQUNDRVNTKQotZmkKLQotIyBPbmx5IGRlZmluZSBpZiBzcGVjaWZpY2FsbHkgY2hvc2VuIGFzIC0td2l0aG91dCAoaS5lLiwgZGVmYXVsdCB0byB0cnVlKS4KLWlmIHRlc3QgIngkd2l0aF9rbWVtX3VzYWdlIiA9ICJ4bm8iOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX05PX0tNRU1fVVNBR0UpCi1maQotCi0jIERlZmluZSB1bmxlc3Mgc3BlY2lmaWNhbGx5IHN1cHByZXNzZWQgKGkuZS4sIG9wdGlvbiBkZWZhdWx0cyB0byBmYWxzZSkuIAotaWYgdGVzdCAieCR3aXRoX2R1bW15X3ZhbHVlcyIgIT0gInh5ZXMiOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUykKLWZpCi0KLSMgT25seSBkZWZpbmUgaWYgc3BlY2lmaWNhbGx5IGNob3NlbiBhcyAtLXdpdGhvdXQgKGkuZS4sIGRlZmF1bHQgdG8gdHJ1ZSkuIAotaWYgdGVzdCAieCR3aXRoX29wYXF1ZV9zcGVjaWFsX3R5cGVzIiAhPSAieG5vIjsgdGhlbgotICBBQ19ERUZJTkUoTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTKQotZmkKLQotCi0jIG92ZXJmbG93IHByb2JsZW1zIHdpdGggaHB1eCdzIHNoCi0jIHRha2VuIGZyb20gUGVybCdzIENvbmZpZ3VyZSBzY3JpcHQgCi0KLUFDX01TR19DSEVDS0lORyhbaWYgSSBuZWVkIHRvIGZlZWQgbXlzZWxmIHRvIGtzaF0pCi1pZiB0ZXN0IC1mIC9ocC11eCAtYSAtZiAvYmluL2tzaDsgdGhlbgotICBpZiAoUEFUSD0uOyBhbGlhcyAteCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgQUNfTVNHX1JFU1VMVChubykKLSAgZWxzZQotICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgIGlmIHRlc3QgIngkMSIgPSAieCI7IHRoZW4KLSAgICAgIGV4ZWMgL2Jpbi9rc2ggJDAKLSAgICBlbHNlCi0gICAgICBleGVjIC9iaW4va3NoICQwICIkQCIKLSAgICBmaQotICBmaQotZWxzZQotICBBQ19NU0dfUkVTVUxUKG5vKQotZmkKLQotaWYgdGVzdCAieCRkZXZlbG9wZXIiICE9ICJ4bm8iIC1hIC1mICRzcmNkaXIvcmVtb3ZlLWZpbGVzOyB0aGVuCi0gICMgdHVybiBvbiB0aGUgZGV2ZWxvcGVyIGZsYWcgd2hlbiB0YWtlbiBmcm9tIGEgU1ZOIGNoZWNrb3V0IChub3QgYSByZWxlYXNlKQotICBkZXZlbG9wZXI9InllcyIKLWZpCi0KLUFDX0xBTkcoW0NdKQotQUNfUFJPR19DQwotQUNfUFJPR19DUFAKLUxJTktDQz0ke0xJTktDQy0iJENDIn0KLUFDX1NVQlNUKExJTktDQykKLUFDX0FJWAotCi0jIHN5c3RlbSBjaGVjawotQUNfQ0FOT05JQ0FMX1RBUkdFVAotY2hhbmdlcXVvdGUoLCApCi1QQVJUSUFMVEFSR0VUT1M9YGVjaG8gJHRhcmdldF9vcyB8IHNlZCAncy9bLS5fXS4qLy8nYAotY2hhbmdlcXVvdGUoWywgXSkKLQotIyBwbGF0Zm9ybS1zcGVjaWZpYyBjb21waWxlciBmbGFncwotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4KLQlDRkxBR1M9IiRDRkxBR1MgLURtaW5ndzMyIgotZmkKLQotIyBwbGF0Zm9ybS1zcGVjaWZpYyBsaW5rZXIgZmxhZ3MKLWNhc2UgJHRhcmdldF9vcyBpbgotICAgIGFpeDQuMip8YWl4NC4zKnxhaXg1KnxhaXg2KikKLSAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGF0IGxpbmtlciBmbGFncyB0byBhZGQgdG8gZW5hYmxlIHJ1bnRpbWUgbGlua2luZyBvbiBBSVhdKQotICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLSAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCi0gICAgICAgICAgICAgICAgbmV0c25tcF9haXhfcnVudGltZWxpbmtpbmdfZmxhZ3Nfb2s9eWVzCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgICAgaWYgdGVzdCAiWCRuZXRzbm1wX2FpeF9ydW50aW1lbGlua2luZ19mbGFnc19vayIgIT0gIlh5ZXMiOyB0aGVuCi0JICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIjsgdGhlbgotCSAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLVdsLC1icnRsIgotCSAgICBlbHNlCi0gICAgICAgICAgICAgICAgbmV0c25tcF9haXhfbGRmbGFncz0iLWJydGwiCi0JICAgIGZpCi0gICAgICAgICAgICBMREZMQUdTPSIkbmV0c25tcF9haXhfbGRmbGFncyAkTERGTEFHUyIKLQkgICAgQUNfTVNHX1JFU1VMVCgkbmV0c25tcF9haXhfbGRmbGFncykKLQllbHNlCi0JICAgIEFDX01TR19SRVNVTFQoW25vbmVdKQotCWZpCi0JOzsKLSAgICBkYXJ3aW44KnxkYXJ3aW45KikKLSAgICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGRhcndpbiBsZCBtaWdodCBuZWVkIC1mbGF0X25hbWVzcGFjZV0pCi0JaWYgdGVzdCAteiAiJE1BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVCI7IHRoZW4KLQkJTERGTEFHUz0iLWZsYXRfbmFtZXNwYWNlICRMREZMQUdTIgotCQlBQ19NU0dfUkVTVUxUKFt5ZXNdKQotCWVsc2UKLQkJQUNfTVNHX1JFU1VMVChbbm9dKQotCWZpCi0JOzsKLSAgICAqKQotICAgICAgICA7OwotZXNhYwotCi0jIGxpYnRvb2wgc3R1ZmYgZm9yIHNoYXJlZC9zdGF0aWMgbGlicmFyaWVzLgotQUNfTElCVE9PTF9ETE9QRU4KLUFDX0xJQlRPT0xfV0lOMzJfRExMCi1BQ19QUk9HX0xJQlRPT0wKLUFDX1NVQlNUKExJQlRPT0xfREVQUykKLQotIyBDaGVja3MgZm9yIHByb2dyYW1zLgotQUNfUFJPR19JTlNUQUxMCi1BQ19QUk9HX0xOX1MKLUFDX1BST0dfTUFLRV9TRVQKLUFDX1BST0dfRUdSRVAKLUFDX1BBVEhfUFJPRyhbUFNQUk9HXSxwcykKLUFDX1BBVEhfUFJPRyhbUEVSTFBST0ddLHBlcmwpCi1BQ19QQVRIX1BST0coW1BZVEhPTlBST0ddLHB5dGhvbikKLUFDX0NIRUNLX1BST0dTKFdIT0FNSSwgd2hvYW1pIGxvZ25hbWUsIHdob2FtaSkKLUFDX0NIRUNLX1BST0dTKFNFRCxzZWQgZ3NlZCkKLUFDX0NIRUNLX1BST0dTKEZJTkQsZmluZCkKLUFDX1BBVEhfUFJPRyhBVVRPQ09ORiwgYXV0b2NvbmYpCi1BQ19QQVRIX1BST0coQVVUT0hFQURFUiwgYXV0b2hlYWRlcikKLWlmIHRlc3QgIngkYWNfY3ZfcHJvZ19BVVRPQ09ORiIgPSAieCI7IHRoZW4KLQlBVVRPQ09ORj0iOiIKLQlBQ19TVUJTVChBVVRPQ09ORikKLWZpCi1pZiB0ZXN0ICJ4JGFjX2N2X3Byb2dfQVVUT0hFQURFUiIgPSAieCI7IHRoZW4KLQlBVVRPSEVBREVSPSI6IgotCUFDX1NVQlNUKEFVVE9IRUFERVIpCi1maQotCi1BQ19QQVRIX1BST0coW1VOQU1FUFJPR10sdW5hbWUpCi1BQ19ERUZJTkVfVU5RVU9URUQoVU5BTUVQUk9HLCIkVU5BTUVQUk9HIikKLQotQUNfQ19DT05TVAotQUNfQ19JTkxJTkUKLQotCi0jIGdldCB2ZXJzaW9uIG51bWJlci4KLUFDX01TR19DSEVDS0lORyhbZm9yIG5ldC1zbm1wIHZlcnNpb24gbnVtYmVyXSkKLVZFUlNJT049JFBBQ0tBR0VfVkVSU0lPTgotCi0jIGNyZWF0ZSB0aGUgcmVsZWFzZSB2ZXJzaW9uIG51bWJlci4uLi4gIEknbSBub3Qgc3VyZSB0aGlzIGlzIHVzZWQKLSMgYW55d2hlcmUgYW55IGxvbmdlci4KLV9yZWxlYXNlX3ZlcnNpb249YGVjaG8gJFZFUlNJT04gfCBzZWQgJ3MvIjsuKi8vO3MvLioiLy87cy9wcmUvMC4vOydgCi1jaGFuZ2VxdW90ZSgsICkKLVJFTEVBU0VWRVJTSU9OPWBlY2hvICRfcmVsZWFzZV92ZXJzaW9uIHwgc2VkICdzL15cKFswLTldXClcLlwoWzAtOV1cKS9cMTpcMjowLydgCi1jaGFuZ2VxdW90ZShbLCBdKQotCi1BQ19TVUJTVChWRVJTSU9OKQotQUNfU1VCU1QoUkVMRUFTRVZFUlNJT04pCi1BQ19NU0dfUkVTVUxUKCRWRVJTSU9OKQotQUNfTVNHX0NBQ0hFX0FERChOZXQtU05NUCBWZXJzaW9uOiAgICAgICAgICAgJFZFUlNJT04pCi0KLSMgc3VwZXIgdHlwZSBjaGVja2luZwotIyBXV1dYWFgKLUFDX01TR19DSEVDS0lORyhbZm9yIGRldmVsb3BlciBnY2MgZmxhZ3NdKQotaWYgdGVzdCAieCRkZXZlbG9wZXIiID0gInh5ZXMiIC1hICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KLSAgREVWRkxBR1M9Ii1XYWxsIC1XaW5saW5lIC1Xc3RyaWN0LXByb3RvdHlwZXMgLVd3cml0ZS1zdHJpbmdzIC1XY2FzdC1xdWFsIC1Xbm8tY2hhci1zdWJzY3JpcHRzIgotZWxzZQotICBERVZGTEFHUz0iIgotZmkKLUFDX01TR19SRVNVTFQoJERFVkZMQUdTKQotQUNfU1VCU1QoREVWRkxBR1MpCi0KLSMKLSMgaGFja3MgZm9yIGJ1aWxkaW5nIG91dHNpZGUgb2YgdGhlIHNvdXJjZSBkaXJlY3RvcnkKLSMKLSMgMSkgbWFrZSBzdXJlIGJ1aWxkIGluY2x1ZGUgcGF0aHMgYXJlIGJlZm9yZSBzb3VyY2UKLSMgMikgY2hlY2sgZm9yIEdOVSBtYWtlIHRvIHVzZSB2cGF0aCBpbnN0ZWFkIG9mIFZQQVRICi0jCi1OT05fR05VX1ZQQVRIPSJWUEFUSCA9IgotR05VX3ZwYXRoPSIjdnBhdGgiCi0jCi0jIGRlZmluZSBpbmNsdWRlIHBhdGhzIHJlbGF0aXZlIHRvIHRvcF9zcmNkaXIKLSMgdHdlYWsgaW5jbHVkZXMgaWYgd2UncmUgYnVpbGRpbmcgb3V0c2lkZSBvZiB0aGUgc291cmNlIGRpcgotaWYgdGVzdCAieCRzcmNkaXIiID0gInguIjsgdGhlbgotVE9QX0lOQ0xVREVTPVNSQ19UT1BfSU5DTFVERVMKLVNOTVBMSUJfSU5DTFVERVM9U1JDX1NOTVBMSUJfSU5DTFVERVMKLUFHRU5UX0lOQ0xVREVTPVNSQ19BR0VOVF9JTkNMVURFUwotSEVMUEVSX0lOQ0xVREVTPVNSQ19IRUxQRVJfSU5DTFVERVMKLU1JQkdST1VQX0lOQ0xVREVTPVNSQ19NSUJHUk9VUF9JTkNMVURFUwotZWxzZQotVE9QX0lOQ0xVREVTPUJMRF9UT1BfSU5DTFVERVMKLVNOTVBMSUJfSU5DTFVERVM9QkxEX1NOTVBMSUJfSU5DTFVERVMKLUFHRU5UX0lOQ0xVREVTPUJMRF9BR0VOVF9JTkNMVURFUwotSEVMUEVSX0lOQ0xVREVTPUJMRF9IRUxQRVJfSU5DTFVERVMKLU1JQkdST1VQX0lOQ0xVREVTPUJMRF9NSUJHUk9VUF9JTkNMVURFUwotbWFrZSAtdiAtZiAvZGV2L251bGwgMj4vZGV2L251bGwgfCBncmVwIEdOVSA+L2Rldi9udWxsCi1oYXZlX2dudV9tYWtlPSQ/Ci1pZiB0ZXN0ICRoYXZlX2dudV9tYWtlIC1lcSAwIDsgdGhlbgotICAgIE5PTl9HTlVfVlBBVEg9IiNWUEFUSCA9IgotICAgIEdOVV92cGF0aD0idnBhdGgiCi1maQotZmkKLUFDX1NVQlNUKFRPUF9JTkNMVURFUykKLUFDX1NVQlNUKFNOTVBMSUJfSU5DTFVERVMpCi1BQ19TVUJTVChBR0VOVF9JTkNMVURFUykKLUFDX1NVQlNUKEhFTFBFUl9JTkNMVURFUykKLUFDX1NVQlNUKE1JQkdST1VQX0lOQ0xVREVTKQotQUNfU1VCU1QoR05VX3ZwYXRoKQotQUNfU1VCU1QoTk9OX0dOVV9WUEFUSCkKLQotCi0jCi0jIENoZWNrIHdoZXRoZXIgd2UgY2FuIHVzZSAtVXggLUR4PXggd2l0aCB0aGUgZXhwZWN0ZWQgYmVoYXZpb3VyCi0jCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdW4tZGVmaW5lIHRhcmdldCBzeXN0ZW0gdG9rZW4gKGJlZm9yZSByZWRlZmluaW5nKV0pCi1PTERfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLUNQUEZMQUdTPSItVSRQQVJUSUFMVEFSR0VUT1MgLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCi0KLUFDX0VHUkVQX0NQUCh5ZXMsW1sKLSNpZmRlZiAkUEFSVElBTFRBUkdFVE9TCi15ZXMKLSNlbmRpZgotXV0sCi1bUEFSVElBTFRBUkdFVEZMQUdTPSItVSRQQVJUSUFMVEFSR0VUT1MgLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCi0gQUNfTVNHX1JFU1VMVChbeWVzXSldLAotW1BBUlRJQUxUQVJHRVRGTEFHUz0iLUQkUEFSVElBTFRBUkdFVE9TPSRQQVJUSUFMVEFSR0VUT1MiCi0gQUNfTVNHX1JFU1VMVChbbm9dKV0pCi1DRkxBR1M9IiRDRkxBR1MgJFBBUlRJQUxUQVJHRVRGTEFHUyIKLUNQUEZMQUdTPSIkT0xEX0NQUEZMQUdTIgotQUNfTVNHX0NBQ0hFX0FERChCdWlsZGluZyBmb3I6ICAgICAgICAgICAgICAgJFBBUlRJQUxUQVJHRVRPUykKLQotCi0jCi0jIGNoZWNrIGZvciBzcGVjaWFsIGluY2x1ZGVzIGFuZCBwaWNrIG9uZQotIwotCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXN0ZW0gaW5jbHVkZSBmaWxlXSkKLWNoYW5nZXF1b3RlKCwgKQotZmlsZWJhc2U9JHRhcmdldF9vcwotIyBpZ25vcmUgYmluYXJ5IGZvcm1hdCBpbmRpY2F0aW9uCi1maWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvZWxmLy8nYAotZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgc2VkICdzL2FvdXQvLydgCi1maWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvZWNvZmYvLydgCi1maWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvY29mZi8vJ2AKLXdoaWxlIHRlc3QgIngkZmlsZWJhc2UiICE9ICJ4JGxhc3QiIC1hICEgLWYgJHNyY2Rpci9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS8kZmlsZWJhc2UuaAotZG8KLSAgICBsYXN0PSRmaWxlYmFzZQotICAgIGZpbGViYXNlPWBlY2hvICRmaWxlYmFzZSB8IHNlZCAncy9bLS5fXVteLS5fXSokLy8nYAotICAgIGlmIHRlc3QgIngkZmlsZWJhc2UiID0gIngkbGFzdCI7IHRoZW4KLQlmaWxlYmFzZT1gZWNobyAkZmlsZWJhc2UgfCBzZWQgJ3MvWzAtOV0qJC8vJ2AKLSAgICBmaQotZG9uZQotCi1pZiB0ZXN0ICJ4JGZpbGViYXNlIiA9ICJ4JGxhc3QiOyB0aGVuCi0gICAgZmlsZWJhc2U9ImdlbmVyaWMiCi1maQotYWNfY3ZfTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFPSJuZXQtc25tcC9zeXN0ZW0vJGZpbGViYXNlLmgiCi0KLWNoYW5nZXF1b3RlKFssIF0pCi1BQ19NU0dfUkVTVUxUKCRhY19jdl9ORVRTTk1QX1NZU1RFTV9JTkNMVURFX0ZJTEUpCi1BQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFLCAiJGFjX2N2X05FVFNOTVBfU1lTVEVNX0lOQ0xVREVfRklMRSIpCi0KLSMgc2Vjb25kIHBhcnQsIHRoZSBDUFUgdHlwZS4KLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgbWFjaGluZS10eXBlIGluY2x1ZGUgZmlsZV0pCi1jaGFuZ2VxdW90ZSgsICkKLWZpbGViYXNlPSR0YXJnZXRfY3B1Ci13aGlsZSB0ZXN0ICJ4JGZpbGViYXNlIiAhPSAieCRsYXN0IiAtYSAhIC1mICRzcmNkaXIvaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lLyRmaWxlYmFzZS5oCi1kbwotICAgIGxhc3Q9JGZpbGViYXNlCi0gICAgZmlsZWJhc2U9YGVjaG8gJGZpbGViYXNlIHwgc2VkICdzL1stLl9dW14tLl9dKiQvLydgCi1kb25lCi0KLWlmIHRlc3QgIngkZmlsZWJhc2UiID0gIngkbGFzdCI7IHRoZW4KLSAgICBmaWxlYmFzZT0iZ2VuZXJpYyIKLWZpCi1hY19jdl9ORVRTTk1QX01BQ0hJTkVfSU5DTFVERV9GSUxFPSJuZXQtc25tcC9tYWNoaW5lLyRmaWxlYmFzZS5oIgotY2hhbmdlcXVvdGUoWywgXSkKLUFDX01TR19SRVNVTFQoWyRhY19jdl9ORVRTTk1QX01BQ0hJTkVfSU5DTFVERV9GSUxFXSkKLQotQUNfREVGSU5FX1VOUVVPVEVEKE5FVFNOTVBfTUFDSElORV9JTkNMVURFX0ZJTEUsICIkYWNfY3ZfTkVUU05NUF9NQUNISU5FX0lOQ0xVREVfRklMRSIpCi0KLUFDX1BBVEhfUFJPRyhbQ0NQQVRIXSwkQ0MpCi0jIHdhdGNoIG91dCBmb3IgL3Vzci91Y2IvY2Mgb24gc29sYXJpcywgaXQgZG9lc24ndCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLgotY2FzZSAkdGFyZ2V0X29zIGluCi0gICAgYnNkaSopCi0JaWYgdGVzdCAieCRDQ1BBVEgiID0gIngvdXNyL3VjYi9jYyIgLW8gIngkQ0NQQVRIIiA9ICJ4L3Vzci9iaW4vY2MiOyB0aGVuCi0JICAgIEFDX01TR19FUlJPUihbCi0KLSoqKiBUaGUgQlNESSAvdXNyL3VjYi9jYyBjb21waWxlciBkb2VzIG5vdCB3b3JrIHdpdGggdGhpcyBwYWNrYWdlLiAgCi0qKiogUGxlYXNlIHJ1biBjb25maWd1cmUgd2l0aCAtLXdpdGgtY2M9Z2NjCi1dKQotCWZpCi0gICAgOzsKLSAgICBzb2xhcmlzKikKLQlpZiB0ZXN0ICJ4JENDUEFUSCIgPSAieC91c3IvdWNiL2NjIjsgdGhlbgotCSAgICBBQ19NU0dfRVJST1IoWwotCi0qKiogVGhlIHNvbGFyaXMgL3Vzci91Y2IvY2MgY29tcGlsZXIgZG9lcyBub3Qgd29yayB3aXRoIHRoaXMgcGFja2FnZS4gIAotKioqIFBsZWFzZSBwdXQgYSBkaWZmZXJlbnQgY29tcGlsZXIgaW4geW91ciBwYXRoIGZpcnN0IG9yIHJ1bgotKioqIGNvbmZpZ3VyZSB3aXRoIC0td2l0aC1jYz1YWCwgd2hlcmUgWFggaXMgdGhlIGNvbXBpbGVyIHlvdSB3YW50IHRvIHVzZS4KLV0pCi0JZmkKLSAgICA7OwotZXNhYwotICAgIAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgYWRkaXRpb25hbCBjcHAgZmxhZ3NdKQotIyBnY2MgZXh0cmEgQ1BQRkxBR1MKLWlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIiAtYSAieCRDUFAiID0gIngkQ0MgLUUiOyB0aGVuCi0gICMgZXh0cmEgY3BwIGZsYWdzIGZvciBnbnUgYyBjb21waWxlciB0byBhbGxvdyAuaW4gZmlsZSBleHRlbnNpb25zLgotICBFWFRSQUNQUEZMQUdTPSIteCBjIgotZWxzZQotICBFWFRSQUNQUEZMQUdTPSIiCi1maQotCi0jIFNvbGFyaXMgZXh0cmEgY3BwIGZsYWdzLgotaWYgdGVzdCAieCRHQ0MiICE9ICJ4eWVzIjsgdGhlbgotICBjYXNlICR0YXJnZXRfb3MgaW4KLSAgICBzb2xhcmlzKikgRVhUUkFDUFBGTEFHUz0iJEVYVFJBQ1BQRkxBR1MgLVhzIiA7OwotICBlc2FjCi1maQotCi1BQ19TVUJTVChFWFRSQUNQUEZMQUdTKQotQUNfTVNHX1JFU1VMVCgkRVhUUkFDUFBGTEFHUykKLQotIyAgIENvbXBpbGVyIGZsYWdzOgotIwotCi0jIFRoZSBOZXQtU05NUCBzb3VyY2UgY29kZSBpcyBub3Qgc3RyaWN0LWFsaWFzaW5nIHNhZmUsIHNvIGFkZAotIyAtZm5vLXN0cmljdC1hbGlhc2luZyB0byAkQ0ZMQUdTIGlmIHRoZSBjb21waWxlciBzdXBwb3J0cyBpdC4KLUFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgY29tcGlsZXIgc3VwcG9ydHMgLWZuby1zdHJpY3QtYWxpYXNpbmddKQotbmV0c25tcF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLUNGTEFHUz0iLWZuby1zdHJpY3QtYWxpYXNpbmcgJENGTEFHUyIKLUFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sIFtdKV0sIFtBQ19NU0dfUkVTVUxUKFt5ZXNdKV0sIFsKLSAgQUNfTVNHX1JFU1VMVChbbm9dKQotICBDRkxBR1M9IiRuZXRzbm1wX3NhdmVfQ0ZMQUdTIgotXSkKLQotIyBQcmVmaXhlcyBtdXN0IGJlZ2luIHdpdGggIi8iIG9yIFtBLVpdIGZvbGxvd2VkIGJ5IGNvbG9uLgotCi1pZiB0ZXN0ICJ4JHByZWZpeCIgPSAieE5PTkUiOyB0aGVuCi0gIHByZWZpeD0vdXNyL2xvY2FsCi1maQotCi1mY2g9YGVjaG8gJHByZWZpeCB8IHNlZCAncy9cKC5cKS4qL1wxLydgCi1pZiB0ZXN0ICJ4JGZjaCIgIT0gIngvIiA7IHRoZW4KLSAgIHNjaD1gZWNobyAkcHJlZml4IHwgc2VkICdzLy5cKC5cKS4qL1wxLydgCi0gICBpZiB0ZXN0ICJ4JHNjaCIgIT0gIng6IiA7IHRoZW4KLSAgICAgIHByZWZpeD1gcHdkYC8kcHJlZml4Ci0gICAgICBlY2hvICJhZGp1c3RpbmcgcHJlZml4IHRvICRwcmVmaXgiCi0gICBmaQotZmkKLQotaWYgdGVzdCAieCRleGVjX3ByZWZpeCIgPSAieE5PTkUiOyB0aGVuCi0gIGV4ZWNfcHJlZml4PSRwcmVmaXgKLWZpCi0KLWZjaD1gZWNobyAkZXhlY19wcmVmaXggfCBzZWQgJ3MvXCguXCkuKi9cMS8nYAotaWYgdGVzdCAieCRmY2giICE9ICJ4LyIgOyB0aGVuCi0gICBzY2g9YGVjaG8gJGV4ZWNfcHJlZml4IHwgc2VkICdzLy5cKC5cKS4qL1wxLydgCi0gICBpZiB0ZXN0ICJ4JHNjaCIgIT0gIng6IiA7IHRoZW4KLSAgICAgIGV4ZWNfcHJlZml4PWBwd2RgLyRleGVjX3ByZWZpeAotICAgICAgZWNobyAiYWRqdXN0aW5nIGV4ZWNfcHJlZml4IHRvICRleGVjX3ByZWZpeCIKLSAgIGZpCi1maQotCi0jIFNldCBTTk1QTElCUEFUSCAmIFNOTVBTSEFSRVBBVEgKLQotU05NUExJQlBBVEg9IiIKLXRtcHNldD0iJGxpYmRpci9zbm1wIgotd2hpbGUgdGVzdCAieCR0bXBzZXQiICE9ICJ4JFNOTVBMSUJQQVRIIjsgZG8KLSAgU05NUExJQlBBVEg9IiR0bXBzZXQiCi0gIGV2YWwgdG1wc2V0PSIkdG1wc2V0IgotZG9uZQotQUNfREVGSU5FX1VOUVVPVEVEKFNOTVBMSUJQQVRILCIkU05NUExJQlBBVEgiKQotQUNfU1VCU1QoU05NUExJQlBBVEgpCi1BQ19ERUZJTkVfVU5RVU9URUQoU05NUERMTU9EUEFUSCwiJFNOTVBMSUJQQVRIL2RsbW9kIikKLQotU05NUFNIQVJFUEFUSD0iIgotdG1wc2V0PSIkZGF0YWRpci9zbm1wIgotd2hpbGUgdGVzdCAieCR0bXBzZXQiICE9ICJ4JFNOTVBTSEFSRVBBVEgiOyBkbwotICBTTk1QU0hBUkVQQVRIPSIkdG1wc2V0IgotICBldmFsIHRtcHNldD0iJHRtcHNldCIKLWRvbmUKLUFDX0RFRklORV9VTlFVT1RFRChTTk1QU0hBUkVQQVRILCIkU05NUFNIQVJFUEFUSCIpCi1BQ19TVUJTVChTTk1QU0hBUkVQQVRIKQotCi1pZiB0ZXN0ICJ4JE5FVFNOTVBfREVGQVVMVF9NSUJESVJTIiA9ICJ4IjsgdGhlbgotICBORVRTTk1QX0RFRkFVTFRfTUlCRElSUz0iXCRIT01FLy5zbm1wL21pYnM6JFNOTVBTSEFSRVBBVEgvbWlicyIKLSAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAgIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTPWBlY2hvICIkTkVUU05NUF9ERUZBVUxUX01JQkRJUlMiIHwgJFNFRCAncy86LzsvZydgCi0gIGZpCi0gIEFDX0RFRklORV9VTlFVT1RFRChORVRTTk1QX0RFRkFVTFRfTUlCRElSUywiJE5FVFNOTVBfREVGQVVMVF9NSUJESVJTIikKLWZpCi1BQ19TVUJTVChORVRTTk1QX0RFRkFVTFRfTUlCRElSUykKLQotU05NUENPTkZQQVRIPSIiCi10bXBzZXQ9IiRzeXNjb25mZGlyL3NubXAiCi13aGlsZSB0ZXN0ICJ4JHRtcHNldCIgIT0gIngkU05NUENPTkZQQVRIIjsgZG8KLSAgU05NUENPTkZQQVRIPSIkdG1wc2V0IgotICBldmFsIHRtcHNldD0iJHRtcHNldCIKLWRvbmUKLUFDX0RFRklORV9VTlFVT1RFRChTTk1QQ09ORlBBVEgsIiRTTk1QQ09ORlBBVEgiKQotQUNfU1VCU1QoU05NUENPTkZQQVRIKQotCi1BQ19DSEVDS19TSVpFT0Yoc2hvcnQpCi1BQ19DSEVDS19TSVpFT0YoaW50KQotQUNfQ0hFQ0tfU0laRU9GKGxvbmcpCi1BQ19DSEVDS19TSVpFT0YobG9uZyBsb25nKQotQUNfQ0hFQ0tfU0laRU9GKGludG1heF90KQotQUNfQ0hFQ0tfVFlQRVMoW2ludDhfdCwgIHVpbnQ4X3QsICB1X2ludDhfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50MTZfdCwgdWludDE2X3QsIHVfaW50MTZfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50MzJfdCwgdWludDMyX3QsIHVfaW50MzJfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50NjRfdCwgdWludDY0X3QsIHVfaW50NjRfdF0pCi1BQ19DSEVDS19UWVBFUyhbaW50bWF4X3QsIHVpbnRtYXhfdF0pCi1BQ19DSEVDS19UWVBFUyhbb2ZmNjRfdF0pCi1BQ19DSEVDS19UWVBFUyhbdWludHB0cl90LCBpbnRwdHJfdF0pCi0KLSMgc29sYXJpcyBzcGVjaWZpYyB0eXBlCi1BQ19DSEVDS19UWVBFUyhbQ291bnRlcjY0XSwsLFsjaW5jbHVkZSA8aW5ldC9taWIyLmg+XSkKLQotIyBndWVzcyBJUHY2IHN0YWNrIHR5cGUuCi1pZiB0ZXN0ICJ4JGVuYWJsZV9pcHY2IiA9ICJ4eWVzIjsgdGhlbgotCXY2dHlwZT11bmtub3duCi0JdjZsaWI9bm9uZQotCXY2dHJ5bGliYz1ubwotCi0JQUNfTVNHX0NIRUNLSU5HKFtbaXB2NiBzdGFjayB0eXBlXV0pCi0JZm9yIGkgaW4gdjZkIHRvc2hpYmEga2FtZSBpbnJpYSB6ZXRhIGxpbnV4LWdsaWJjIGxpbnV4LWluZXQ2IGdlbmVyaWM7IGRvCi0JCWNhc2UgJGkgaW4KLQkJdjZkKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPC91c3IvbG9jYWwvdjYvaW5jbHVkZS9zeXMvdHlwZXMuaD4KLSNpZmRlZiBfX1Y2RF9fCi15ZXMKLSNlbmRpZl0sCi0JCQkJW3Y2dHlwZT0kaTsgdjZsaWI9djY7Ci0JCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7Ci0JCQkJQ0ZMQUdTPSItSS91c3IvbG9jYWwvdjYvaW5jbHVkZSAkQ0ZMQUdTIl0pCi0JCQk7OwotCQl0b3NoaWJhKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2lmZGVmIF9UT1NISUJBX0lORVQ2Ci15ZXMKLSNlbmRpZl0sCi0JCQkJW3Y2dHlwZT0kaTsgdjZsaWI9aW5ldDY7Ci0JCQkJdjZsaWJkaXI9L3Vzci9sb2NhbC92Ni9saWI7Ci0JCQkJQ0ZMQUdTPSItRE5FVFNOTVBfRU5BQkxFX0lQVjYgJENGTEFHUyJdKQotCQkJOzsKLQkJa2FtZSkKLQkJCUFDX0VHUkVQX0NQUCh5ZXMsIFsKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jaWZkZWYgX19LQU1FX18KLXllcwotI2VuZGlmXSwKLQkJCQlbdjZ0eXBlPSRpOyB2NmxpYj1pbmV0NjsKLQkJCQl2NmxpYmRpcj0vdXNyL2xvY2FsL3Y2L2xpYjsKLQkJCQl2NnRyeWxpYmM9eWVzOwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKLQkJCTs7Ci0JCWlucmlhKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNpZmRlZiBJUFY2X0lOUklBX1ZFUlNJT04KLXllcwotI2VuZGlmXSwKLQkJCQlbdjZ0eXBlPSRpOwotCQkJCXY2bGliPWR1bW15OwotCQkJCXY2bGliZGlyPW5vbmU7Ci0JCQkJdjZ0cnlsaWJjPXllczsKLQkJCQlDRkxBR1M9Ii1ETkVUU05NUF9FTkFCTEVfSVBWNiAkQ0ZMQUdTIl0pCi0JCQk7OwotCQl6ZXRhKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2lmZGVmIF9aRVRBX01JTkFNSV9JTkVUNgotQQoteWVzCi0jZW5kaWZdLAotCQkJCVt2NnR5cGU9JGk7IHY2bGliPWluZXQ2OwotCQkJCXY2bGliZGlyPS91c3IvbG9jYWwvdjYvbGliOwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKLQkJCTs7Ci0JCWxpbnV4LWdsaWJjKQotCQkJQUNfRUdSRVBfQ1BQKHllcywgWwotI2luY2x1ZGUgPGZlYXR1cmVzLmg+Ci0jaWYgZGVmaW5lZChfX0dMSUJDX18pICYmICgoX19HTElCQ19fID09IDIgJiYgX19HTElCQ19NSU5PUl9fID49IDEpIHx8IChfX0dMSUJDXyA+IDIpKQoteWVzCi0jZW5kaWZdLAotCQkJCVt2NnR5cGU9JGk7Ci0JCQkJdjZsaWI9ZHVtbXk7Ci0JCQkJdjZsaWJkaXI9bm9uZTsKLQkJCQl2NnRyeWxpYmM9eWVzOwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiXSkKLQkJCTs7Ci0JCWxpbnV4LWluZXQ2KQotCQkJaWYgdGVzdCAtZCAvdXNyL2luZXQ2OyB0aGVuCi0JCQkJdjZ0eXBlPSRpCi0JCQkJdjZsaWI9aW5ldDYKLQkJCQl2NmxpYmRpcj0vdXNyL2luZXQ2L2xpYgotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiCi0JCQlmaQotCQkJOzsKLQkJZ2VuZXJpYykKLSAgICAgICAgICAgICAgICAgICAgICAgIEFDX01TR19SRVNVTFQoW1twb3N0cG9uZWRdXSkKLQkJCUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci1dLCBzb2NrYWRkcl9pbjYsIHNpbjZfYWRkciwgbm8pCi0JICAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbW2lwdjYgc3RhY2sgdHlwZV1dKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfaW42X2hhc19zaW42X2FkZHIiID0gInh5ZXMiOyB0aGVuCi0JCQkJdjZ0eXBlPSRpCi0JCQkJdjZsaWI9ZHVtbXkKLQkJCQl2NmxpYmRpcj1ub25lCi0JCQkJdjZ0cnlsaWJjPXllcwotCQkJCUNGTEFHUz0iLURORVRTTk1QX0VOQUJMRV9JUFY2ICRDRkxBR1MiCi0gICAgICAgICAgICAgICAgICAgICAgICBmaQotCQkJOzsKLQkJZXNhYwotCQlpZiB0ZXN0ICIkdjZ0eXBlIiAhPSAidW5rbm93biI7IHRoZW4KLQkJCWJyZWFrCi0JCWZpCi0JZG9uZQotCi0JaWYgdGVzdCAiJHY2bGliIiAhPSAibm9uZSI7IHRoZW4KLQkJaWYgdGVzdCAtZCAkdjZsaWJkaXIgLWEgLWYgJHY2bGliZGlyL2xpYiR2NmxpYi5hOyB0aGVuCi0JCQlMSUJTPSItTCR2NmxpYmRpciAtbCR2NmxpYiAkTElCUyIKLQkJCWVuYWJsZV9pcHY2PSJ5ZXMiCi0JCQlBQ19NU0dfUkVTVUxUKFsiJHY2dHlwZSwgJGVuYWJsZV9pcHY2LCB1c2luZyBsaWIkdjZsaWIiXSkKLQkJZWxpZiB0ZXN0ICIkdjZ0cnlsaWJjIiA9ICJ5ZXMiOyB0aGVuCi0JCQllbmFibGVfaXB2Nj0ieWVzIgotCQkJQUNfTVNHX1JFU1VMVChbIiR2NnR5cGUsICRlbmFibGVfaXB2NiwgdXNpbmcgbGliYyJdKQotCQllbHNlCi0JCQlBQ19NU0dfRVJST1Iobm8gSVB2NiBsaWJyYXJ5IGxpYiR2NmxpYi5hIGZvdW5kLikKLQkJCWV4aXQgMQotCQlmaQotCWVsc2UKLQkJZW5hYmxlX2lwdjY9Im5vIgotCQlBQ19NU0dfUkVTVUxUKFsiJHY2dHlwZSwgJGVuYWJsZV9pcHY2Il0pCi0JZmkKLWZpCi0KLSMKLSMgTWF5YmUgYWRkIGxpYnJhcnkgZXh0ZW5zaW9ucyBmb3IgdGhyZWFkIG11dGV4IGxvY2tpbmcuCi0jCi0KLWlmIHRlc3QgIngkd2l0aF9yZXNfbG9ja3MiID0gInh5ZXMiOyB0aGVuCi0gIEFDX0RFRklORShORVRTTk1QX1JFRU5UUkFOVCkKLQotICAgIGNhc2UgJHRhcmdldF9vcyBpbgotCi0gICAgYWl4KikKLQlDQ19SVU5USU1FX0FSRz0iJENDX1JVTlRJTUVfQVJHIC1scHRocmVhZHMiCi0JOzsKLQotICAgICopCi0JOzsKLQotICAgIGVzYWMKLWZpCi0KLSMKLSMgQWRkIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZSBmaWxlcy4KLSMKLUFDX01TR19DSEVDS0lORyhbZm9yIHBsYXRmb3JtLXNwZWNpZmljIHNvdXJjZV0pCi1vdGhlcl9zcmNfbGlzdD0iIgotb3RoZXJfb2Jqc19saXN0PSIiCi1vdGhlcl9sb2Jqc19saXN0PSIiCi1vdGhlcl9hZ2VudG9ianM9IiIKLW90aGVyX2xhZ2VudG9ianM9IiIKLW90aGVyX3RyYXBkX29iamVjdHM9IiIKLQotIyBXaW4zMiBzZXJ2aWNlIGNvZGUKLWlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCi0gIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2luc2VydmljZS5jIHdpbnNlcnZpY2VyYy5yYyIKLSAgb3RoZXJfb2Jqc19saXN0PSIkb3RoZXJfb2Jqc19saXN0IHdpbnNlcnZpY2UubyB3aW5zZXJ2aWNlcmMubyIKLSAgb3RoZXJfbG9ianNfbGlzdD0iJG90aGVyX2xvYmpzX2xpc3Qgd2luc2VydmljZS5sbyB3aW5zZXJ2aWNlcmMubG8iCi0gIG90aGVyX2FnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubyIKLSAgb3RoZXJfbGFnZW50b2Jqcz0iLi4vc25tcGxpYi93aW5zZXJ2aWNlcmMubG8iCi0gIG90aGVyX3RyYXBkX29iamVjdHM9Ii4uL3NubXBsaWIvd2luc2VydmljZXJjLm8iIAotZmkKLSAgCi0jIFdpbjMyIHBpcGVzCi1pZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gIG90aGVyX3NyY19saXN0PSIkb3RoZXJfc3JjX2xpc3Qgd2lucGlwZS5jIgotICBvdGhlcl9vYmpzX2xpc3Q9IiRvdGhlcl9vYmpzX2xpc3Qgd2lucGlwZS5vIgotICBvdGhlcl9sb2Jqc19saXN0PSIkb3RoZXJfbG9ianNfbGlzdCB3aW5waXBlLmxvIgotZmkKLQotQUNfU1VCU1Qob3RoZXJfc3JjX2xpc3QpCi1BQ19TVUJTVChvdGhlcl9vYmpzX2xpc3QpCi1BQ19TVUJTVChvdGhlcl9sb2Jqc19saXN0KQotQUNfU1VCU1Qob3RoZXJfYWdlbnRvYmpzKQotQUNfU1VCU1Qob3RoZXJfbGFnZW50b2JqcykKLUFDX1NVQlNUKG90aGVyX3RyYXBkX29iamVjdHMpCi0KLUFDX01TR19SRVNVTFQoWyRvdGhlcl9zcmNfbGlzdCAkb3RoZXJfb2Jqc19saXN0ICRvdGhlcl9sb2Jqc19saXN0XSkKLUFDX01TR19SRVNVTFQoWyRvdGhlcl9hZ2VudG9ianMgJG90aGVyX2xhZ2VudG9ianMgJG90aGVyX3RyYXBkX29iamVjdHNdKQotICAKLSMKLSMgRG8gdHJhbnNwb3J0IG1vZHVsZSBwcm9jZXNzaW5nLgotIwotQUNfTVNHX0NIRUNLSU5HKFtmb3IgYW5kIGNvbmZpZ3VyaW5nIHRyYW5zcG9ydCBtb2R1bGVzIHRvIHVzZV0pCi10cmFuc3BvcnRfc3JjX2xpc3Q9IiIKLXRyYW5zcG9ydF9oZHJfbGlzdD0iIgotdHJhbnNwb3J0X2RlZl9saXN0PSIiCi10cmFuc3BvcnRfcmVzdWx0X2xpc3Q9IiIKLXRyYW5zcG9ydF9hZGRfbGlzdD0iIgotdHJhbnNwb3J0X2NhbGxiYWNrX2Rpc2FibGVkPSIiCi1uZXdfd2l0aF90cmFuc3BvcnRfbGlzdD1gZWNobyAkd2l0aF90cmFuc3BvcnRzIHwgc2VkICdzLywvIC9nOydgCi1uZXdfd2l0aF9vdXRfdHJhbnNwb3J0X2xpc3Q9YGVjaG8gJHdpdGhfb3V0X3RyYW5zcG9ydHMgfCBzZWQgJ3MvLC8gL2c7J2AKLQotIwotIyBBZGQgdGhlIGRlZmF1bHQgdHJhbnNwb3J0cyB0byB0aGUgbGlzdAotIwotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gIHRyYW5zcG9ydF9kZWZhdWx0X2xpc3Q9IlVEUCBUQ1AgQ2FsbGJhY2siCi1lbGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuIAotICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIENhbGxiYWNrIgotZWxzZQotICB0cmFuc3BvcnRfZGVmYXVsdF9saXN0PSJVRFAgVENQIFVuaXggQ2FsbGJhY2siCi1maQotaWYgdGVzdCAieCRlbmFibGVfaXB2NiIgPSAieHllcyI7IHRoZW4KLSAgdHJhbnNwb3J0X2RlZmF1bHRfbGlzdD0iVURQSVB2NiBUQ1BJUHY2ICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0IgotZmkKLWZvciBpIGluICR0cmFuc3BvcnRfZGVmYXVsdF9saXN0OyBkbwotICBpZiBlY2hvICIgJG5ld193aXRoX3RyYW5zcG9ydF9saXN0ICIgfCBncmVwICIgJGkgIiA+L2Rldi9udWxsOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgdHJhbnNwb3J0X2FkZF9saXN0PSIkaSAkdHJhbnNwb3J0X2FkZF9saXN0IgotICBmaQotZG9uZQotbmV3X3RyYW5zcG9ydF9saXN0PSIkdHJhbnNwb3J0X2FkZF9saXN0ICRuZXdfd2l0aF90cmFuc3BvcnRfbGlzdCIKLQotZm9yIGkgaW4gJG5ld190cmFuc3BvcnRfbGlzdDsgZG8KLSAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfdHJhbnNwb3J0X2xpc3QgIiB8IGdyZXAgIiAkaSAiID4vZGV2L251bGw7IHRoZW4KLSAgICBpZiB0ZXN0ICJ4JGkiID0gInhVRFAiOyB0aGVuCi0gICAgICBlY2hvCi0gICAgICBBQ19NU0dfRVJST1IoSXQgaXMgbm90IHBvc3NpYmxlIHRvIGNvbXBpbGUgd2l0aG91dCBVRFAvSVAgc3VwcG9ydC4pCi0gICAgZWxpZiB0ZXN0ICJ4JGkiID0gInhDYWxsYmFjayI7IHRoZW4KLSAgICAgIGVjaG8KLSAgICAgIHRyYW5zcG9ydF9jYWxsYmFja19kaXNhYmxlZD0ieWVzIgotICAgIGZpCi0gIGVsc2UKLSAgICBpZiB0ZXN0ICJ4JGkiID0gInhBQUw1UFZDIjsgdGhlbgotICAgICAgaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiICE9ICJ4bGludXgiOyB0aGVuCi0gICAgICAgIGVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKEFBTDUgUFZDIHN1cHBvcnQgdW5hdmFpbGFibGUgZm9yIHRoaXMgcGxhdGZvcm0gKExpbnV4IG9ubHkpKQotICAgICAgZmkKLSAgICBmaQotICAgIGlmIHRlc3QgIngkaSIgPSAieElQWCI7IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiAhPSAieGxpbnV4IjsgdGhlbgotICAgICAgICBlY2hvCi0gICAgICAgIEFDX01TR19FUlJPUihJUFggc3VwcG9ydCB1bmF2YWlsYWJsZSBmb3IgdGhpcyBwbGF0Zm9ybSAoTGludXggb25seSkpCi0gICAgICBmaQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRpIiA9ICJ4VW5peCI7IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAgICAgICBlY2hvCi0gICAgICAgIEFDX01TR19FUlJPUihVbml4IGRvbWFpbiBwcm90b2NvbCBzdXBwb3J0IHVuYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtKQotICAgICAgZWxpZiB0ZXN0ICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzIiIC1vICJ4JFBBUlRJQUxUQVJHRVRPUyIgPSAieG1pbmd3MzJtc3ZjIjsgdGhlbgotICAgICAgICBlY2hvCi0gICAgICAgIEFDX01TR19FUlJPUihVbml4IGRvbWFpbiBwcm90b2NvbCBzdXBwb3J0IHVuYXZhaWxhYmxlIGZvciB0aGlzIHBsYXRmb3JtKQotICAgICAgZmkKLSAgICBmaQotICAgIGlmIHRlc3QgISAieCRlbmFibGVfaXB2NiIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgaWYgdGVzdCAieCRpIiA9ICJ4VURQSVB2NiIgLW8gIngkaSIgPSAieFRDUElQdjYiOyB0aGVuCi0gICAgICAgICAgICBlY2hvCi0gICAgICAgICAgICBBQ19NU0dfRVJST1IoSVB2NiB0cmFuc3BvcnRzIG5vdCBhdmFpbGFibGUgaWYgSVB2NiBzdXBwb3J0IGlzIG5vdCBlbmFibGVkKQotICAgICAgICBmaQotICAgIGZpCi0gICAgdHJhbnNwb3J0X3NyYz0ic25tcCIkaSJEb21haW4uYyIKLSAgICB0cmFuc3BvcnRfaGRyPSJzbm1wIiRpIkRvbWFpbi5oIgotICAgIHJlbF90cmFuc3BvcnRfc3JjPSJzbm1wbGliLyIkdHJhbnNwb3J0X3NyYwotICAgIHJlbF90cmFuc3BvcnRfaGRyPSJpbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvIiR0cmFuc3BvcnRfaGRyCi0gICAgaWYgdGVzdCAtZiAiJHNyY2Rpci8kcmVsX3RyYW5zcG9ydF9zcmMiOyB0aGVuCi0gICAgICB0cmFuc3BvcnRfcmVzdWx0X2xpc3Q9IiR0cmFuc3BvcnRfcmVzdWx0X2xpc3QgJGkiCi0gICAgICB0cmFuc3BvcnRfc3JjX2xpc3Q9IiR0cmFuc3BvcnRfc3JjICR0cmFuc3BvcnRfc3JjX2xpc3QiCi0gICAgICBpZiB0ZXN0IC1mICIkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X2hkciI7IHRoZW4KLSAgICAgICAgdHJhbnNwb3J0X2hkcl9saXN0PSIkdHJhbnNwb3J0X2hkciAkdHJhbnNwb3J0X2hkcl9saXN0IgotICAgICAgZmkKLSAgICAgIHRyYW5zcG9ydF9kZWY9YGVjaG8gJGkgfCBzZWQgJ3kvYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovJ2AKLSAgICAgIHRyYW5zcG9ydF9kZWZfbGlzdD0iTkVUU05NUF9UUkFOU1BPUlRfIiR0cmFuc3BvcnRfZGVmIl9ET01BSU4gJHRyYW5zcG9ydF9kZWZfbGlzdCIKLSAgICBlbHNlCi0gICAgICBlY2hvCi0gICAgICBBQ19NU0dfRVJST1IoQ2Fubm90IGZpbmQgZmlsZSAkc3JjZGlyLyRyZWxfdHJhbnNwb3J0X3NyYyB0byBzdXBwb3J0IFNOTVAgdHJhbnNwb3J0IGRvbWFpbiAkaS4pCi0gICAgZmkKLSAgZmkKLWRvbmUKLXRyYW5zcG9ydF9vYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8IHNlZCAncy9cLmMvXC5vL2cnYCAJIAotdHJhbnNwb3J0X2xvYmpfbGlzdD1gZWNobyAiICR0cmFuc3BvcnRfc3JjX2xpc3QgIiB8IHNlZCAncy9cLmMvXC5sby9nJ2AKLQotIyMgd2luMzIgcGxhdGZvcm1zIHJlcXVpcmUgaW5ldF9udG9wIGV0Yy4KLWlmIHRlc3QgIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMiIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4bWluZ3czMm1zdmMiOyB0aGVuCi0gIGlmIGVjaG8gIiR0cmFuc3BvcnRfZGVmX2xpc3QiIHwgZ3JlcCAiSVBWNiIgPi9kZXYvbnVsbDsgdGhlbgotICAgIHRyYW5zcG9ydF9vYmpfbGlzdD0iJHRyYW5zcG9ydF9vYmpfbGlzdCBpbmV0X250b3AubyBpbmV0X3B0b24ubyIKLSAgICB0cmFuc3BvcnRfbG9ial9saXN0PSIkdHJhbnNwb3J0X2xvYmpfbGlzdCBpbmV0X250b3AubG8gaW5ldF9wdG9uLmxvIgotICBmaQotZmkKLQotQUNfU1VCU1QodHJhbnNwb3J0X2hkcl9saXN0KQotQUNfU1VCU1QodHJhbnNwb3J0X3NyY19saXN0KQotQUNfU1VCU1QodHJhbnNwb3J0X29ial9saXN0KQotQUNfU1VCU1QodHJhbnNwb3J0X2xvYmpfbGlzdCkKLWZvciBpIGluICR0cmFuc3BvcnRfZGVmX2xpc3Q7IGRvCi0gIEFDX0RFRklORV9VTlFVT1RFRCgkaSkKLWRvbmUKLUFDX01TR19SRVNVTFQoJHRyYW5zcG9ydF9yZXN1bHRfbGlzdC4pCi1BQ19NU0dfQ0FDSEVfQUREKE5ldHdvcmsgdHJhbnNwb3J0IHN1cHBvcnQ6ICR0cmFuc3BvcnRfcmVzdWx0X2xpc3QpCi0KLSMKLSMgU2VjdXJpdHkgbW9kdWxlcyB0byB1c2UKLSMgCi0KLUFDX01TR19DSEVDS0lORyhbZm9yIHNlY3VyaXR5IG1vZHVsZXMgdG8gdXNlXSkKLXNlY3VyaXR5X2RlZl9saXN0PSJ1c20iCi1zZWN1cml0eV9zcmNfbGlzdD0iIgotc2VjdXJpdHlfb2JqX2xpc3Q9IiIgCSAKLXNlY3VyaXR5X2xvYmpfbGlzdD0iIgotc2VjdXJpdHlfaW5pdF9maWxlPSJzbm1wbGliL3NubXBzbV9pbml0LmgiCi1zZWN1cml0eV9pbmNsX2ZpbGU9ImluY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaCIKLW5ld193aXRoX3NlY3VyaXR5PWBlY2hvICR3aXRoX3NlY3VyaXR5X21vZHVsZXMgfCBzZWQgJ3MvLC8gL2c7J2AKLW5ld193aXRoX291dF9zZWN1cml0eT1gZWNobyAkd2l0aF9vdXRfc2VjdXJpdHlfbW9kdWxlcyB8IHNlZCAncy8sLyAvZzsnYAotCi1pZiB0ZXN0ICEgLWQgaW5jbHVkZTsgdGhlbgotICBta2RpciBpbmNsdWRlCi1maQotaWYgdGVzdCAhIC1kIGluY2x1ZGUvbmV0LXNubXA7IHRoZW4KLSAgbWtkaXIgaW5jbHVkZS9uZXQtc25tcAotZmkKLWlmIHRlc3QgISAtZCBpbmNsdWRlL25ldC1zbm1wL2FnZW50OyB0aGVuCi0gIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQKLWZpCi1pZiB0ZXN0ICEgLWQgaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5OyB0aGVuCi0gIG1rZGlyIGluY2x1ZGUvbmV0LXNubXAvbGlicmFyeQotZmkKLWlmIHRlc3QgISAtZCBpbmNsdWRlL3VjZC1zbm1wOyB0aGVuCi0gIG1rZGlyIGluY2x1ZGUvdWNkLXNubXAKLWZpCi0KLWlmIHRlc3QgISAtZCBzbm1wbGliOyB0aGVuCi0gIG1rZGlyIHNubXBsaWIKLWZpCi1lY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5pdF9maWxlCi1lY2hvICIvKiBUaGlzIGZpbGUgaXMgYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgY29uZmlndXJlLiAgRG8gbm90IG1vZGlmeSBieSBoYW5kLiAqLyIgPiAkc2VjdXJpdHlfaW5jbF9maWxlCi0KLWZvciBpIGluICRzZWN1cml0eV9kZWZfbGlzdDsgZG8KLSAgaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfc2VjdXJpdHkgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgaWYgdGVzdCAieCRpIiA9ICJ4dXNtIjsgdGhlbgotCWVjaG8KLSAgICAgICAgQUNfTVNHX0VSUk9SKFRoZSBVU00gc2VjdXJpdHkgbW9kdWxlIGlzIG1hbmRhdG9yeSkKLSAgICBmaQotICBlbHNlCi0gICAgbmV3X3dpdGhfc2VjdXJpdHk9IiRuZXdfd2l0aF9zZWN1cml0eSAkaSIKLSAgZmkKLWRvbmUKLQotZm9yIGkgaW4gJG5ld193aXRoX3NlY3VyaXR5OyBkbwotICBjZmlsZT0ic25tcCIkaSIuYyIKLSAgaGZpbGU9InNubXAiJGkiLmgiCi0KLSAgIyBtYWtlIHN1cmUgc3VwcG9ydCBleGlzdHMgZm9yIGl0Ci0gIGlmIHRlc3QgLWYgJHNyY2RpciIvc25tcGxpYi8iJGNmaWxlIC1hIC1mICRzcmNkaXIiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS8iJGhmaWxlOyB0aGVuCi0gICAgOgotICBlbHNlCi0gICAgZWNobwotICAgIEFDX01TR19FUlJPUihObyBzdWNoIHNlY3VyaXR5IG1vZHVsZTogJGkgLyAkY2ZpbGUgLyAkaGZpbGUpCi0gIGZpCi0KLSAgIyBkZWZpbmUgYSBidW5jaCBvZiBzdHVmZiB0byBlbmFibGUgaXQKLSAgc2VjdXJpdHlfc3JjX2xpc3Q9IiRzZWN1cml0eV9zcmNfbGlzdCAkY2ZpbGUiCi0gIHNlY3VyaXR5X2hkcl9saXN0PSIkc2VjdXJpdHlfaGRyX2xpc3QgJGhmaWxlIgotICBzZWN1cml0eV9vYmpfbGlzdD0iJHNlY3VyaXR5X29ial9saXN0IHNubXAiJGkiLm8iIAkgCi0gIHNlY3VyaXR5X2xvYmpfbGlzdD0iJHNlY3VyaXR5X2xvYmpfbGlzdCBzbm1wIiRpIi5sbyIKLSAgZGVmX25hbWU9Ik5FVFNOTVBfU0VDTU9EXyJgZWNobyAkaSB8IHRyICdhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eicgJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaJ2AKLSAgZWNobyAiaW5pdF8iJGkiKCk7IiA+PiAkc2VjdXJpdHlfaW5pdF9maWxlCi0gIGVjaG8gIiNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5LyRoZmlsZT4iID4+ICRzZWN1cml0eV9pbmNsX2ZpbGUKLSAgQUNfREVGSU5FX1VOUVVPVEVEKCRkZWZfbmFtZSkKLWRvbmUKLQotQUNfU1VCU1Qoc2VjdXJpdHlfc3JjX2xpc3QpCi1BQ19TVUJTVChzZWN1cml0eV9oZHJfbGlzdCkKLUFDX1NVQlNUKHNlY3VyaXR5X29ial9saXN0KSAJIAotQUNfU1VCU1Qoc2VjdXJpdHlfbG9ial9saXN0KQotQUNfTVNHX1JFU1VMVCgkbmV3X3dpdGhfc2VjdXJpdHkpCi1BQ19NU0dfQ0FDSEVfQUREKFNOTVB2MyBTZWN1cml0eSBNb2R1bGVzOiAgICAkbmV3X3dpdGhfc2VjdXJpdHkpCi0KLSMKLSMgSGFuZGxlIHRoZSBzcGVjaWFsIGNhc2Ugb2YgS1NNIHRvIHNlZSB3aGljaCBjcnlwdG8gQVBJIHdlIHN1cHBvcnQKLSMKLQotYWNfY3ZfTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUPW5vCi1yZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PQotYWxyZWFkeV9jaGVja2VkX2tyYjU9bm8KLQotZm9yIHNlYyBpbiAkbmV3X3dpdGhfc2VjdXJpdHkKLWRvCi0gIGlmIHRlc3QgIngkc2VjIiA9ICJ4a3NtIiAtYSAieHllcyIgPSAieCRhbHJlYWR5X2NoZWNrZWRfa3JiNSI7IHRoZW4KLSAgICBjb250aW51ZQotICBmaQotICBhbHJlYWR5X2NoZWNrZWRfa3JiNT15ZXMKLQotICBpZiB0ZXN0IHgkc2VjICE9IHhrc207IHRoZW4KLSAgICByZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5PSIkcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eSAkc2VjIgotICBlbHNlCi0gICAgaWYgdGVzdCBubyA9ICR0cnlrcmI1OyB0aGVuCi0gICAgICBBQ19NU0dfTk9USUNFKFtjb25maWd1cmVkIG5vdCB0byB1c2Uga3JiNS4gZGlzYWJsaW5nIGtzbV0pCi0gICAgICBjb250aW51ZQotICAgIGZpCi0KLSAgICBBQ19QQVRIX1BST0coW2tyYjVfY29uZmlnXSxrcmI1LWNvbmZpZyxbbm9dLCRrcmI1cGF0aC9iaW46JFBBVEgpCi0KLSAgICBpZiB0ZXN0IG5vICE9ICRrcmI1X2NvbmZpZzsgdGhlbgotICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyBgJGtyYjVfY29uZmlnIC0tY2ZsYWdzYCIKLSAgICAgIExJQlM9IiRMSUJTIGAka3JiNV9jb25maWcgLS1saWJzYCIKLSAgICBlbGlmIHRlc3QgJGtyYjVwYXRoICE9IG5vOyB0aGVuCi0gICAgICBBQ19BRERfU0VBUkNIX1BBVEgoJGtyYjVwYXRoKQotICAgIGVsc2UKLSAgICAgIEFDX0FERF9TRUFSQ0hfUEFUSCgvdXNyL2tlcmJlcm9zKQotICAgIGZpCi0KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBrcmI1XSkKLSAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9rcmI1LAotICAgICAgQUNfQ0hFQ0tfTElCKGtyYjUsIGtyYjVfaW5pdF9jb250ZXh0LAotCWFjX2N2X2hhdmVfa3JiNT15ZXMsIGFjX2N2X2hhdmVfa3JiNT1ubwotICAgICAgKQotICAgICkKLQotICAgIGlmIHRlc3QgJGFjX2N2X2hhdmVfa3JiNSA9IG5vOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JGFza2Vka3JiNSIgPSAieHllcyI7IHRoZW4KLQlBQ19NU0dfRVJST1IoQXNrZWQgdG8gdXNlIGtyYjUgYnV0IEkgY291bGRuJ3QgZmluZCBpdC4pCi0gICAgICBmaQotICAgICAgQUNfTVNHX1JFU1VMVChuby4gZGlzYWJsaW5nIGtzbSkKLSAgICAgIGNvbnRpbnVlCi0gICAgZmkKLSAgICAgIAotICAgIEFDX01TR19SRVNVTFQoeWVzKQotICAgIHJlYnVpbHRfbmV3X3dpdGhfc2VjdXJpdHk9IiRyZWJ1aWx0X25ld193aXRoX3NlY3VyaXR5IGtzbSIKLQotICAgIEFDX01TR19DSEVDS0lORyhbW2ZvciBoZWltZGFsXV0pCi0gICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2hlaW1kYWwsCi0gICAgW0FDX1RSWV9DT01QSUxFKAotICAgICAgWyNpbmNsdWRlIDxrcmI1Lmg+XSwKLSAgICAgIFtjb25zdCBjaGFyICp2ID0gaGVpbWRhbF92ZXJzaW9uO10sCi0gICAgICBhY19jdl9oZWltZGFsPXllcywKLSAgICAgIGFjX2N2X2hlaW1kYWw9bm8KLSAgICApXSkKLSAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9oZWltZGFsKQotICAgIGlmIHRlc3QgJGFjX2N2X2hlaW1kYWwgPSB5ZXM7IHRoZW4KLSAgICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9LRVJCRVJPU19IRUlNREFMKQotICAgICAgaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgotCUxJQlM9IiRMSUJTIC1sa3JiNSAtbGFzbjEgLWxjb21fZXJyIC1scm9rZW4iCi0gICAgICBmaQotICAgIGVsaWYgdGVzdCBubyA9ICRrcmI1X2NvbmZpZzsgdGhlbgotCUxJQlM9IiRMSUJTIC1sa3JiNSAtbGNvbV9lcnIiCi0gICAgZmkKLQotICAgIEFDX01TR19DSEVDS0lORyhbdG8gc2VlIHdoaWNoIGNyeXB0byBBUEkgd2UgbmVlZCB0byB1c2VdKQotICAgIEFDX0NIRUNLX0ZVTkMoa3JiNV9jX2VuY3J5cHQsWwotICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9ORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQsCi0gICAgICBBQ19DSEVDS19MSUIoazVjcnlwdG8sIGtyYjVfaW5pdF9jb250ZXh0LAotCWFjX2N2X05FVFNOTVBfVVNFX0tFUkJFUk9TX01JVD15ZXMsIGFjX2N2X01JVF9ORVdfQ1JZUFRvPW5vCi0gICAgICApCi0gICAgKQotCi0gICAgaWYgdGVzdCB5ZXMgPSAkYWNfY3ZfTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUOyB0aGVuCi0gICAgICBBQ19NU0dfUkVTVUxUKG5ldyBNSVQgY3J5cHRvIEFQSSkKLSAgICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9LRVJCRVJPU19NSVQpCi0gICAgICBpZiB0ZXN0IG5vID0gJGtyYjVfY29uZmlnOyB0aGVuCi0JTElCUz0iJExJQlMgLWxrNWNyeXB0byIKLSAgICAgIGZpCi0gICAgZWxzZQotICAgICAgQUNfTVNHX1JFU1VMVChvbGQgTUlUIGNyeXB0byBBUEkpXSkKLSAgICBmaQotICBmaQotZG9uZQotCi1uZXdfd2l0aF9zZWN1cml0eT0kcmVidWlsdF9uZXdfd2l0aF9zZWN1cml0eQotCi0jCi0jIGdlbmVyYXRlIGVtcHR5IGZpbGVzCi0jCi0jIENyZWF0ZSBpbmNsdWRlIGZpbGUgbGlzdCBmb3Igc25tcF92YXJzLmggdG8gdXNlLgotbWliZGlyPSJhZ2VudC9taWJncm91cCIKLWlmIHRlc3QgISAtZCBhZ2VudDsgdGhlbgotICBta2RpciBhZ2VudAotZmkKLWlmIHRlc3QgISAtZCBhZ2VudC9taWJncm91cDsgdGhlbgotICBta2RpciBhZ2VudC9taWJncm91cAotZmkKLWo9IiRtaWJkaXIvbWliX21vZHVsZV9pbmNsdWRlcy5oICAkbWliZGlyL2FnZW50X21vZHVsZV9pbmNsdWRlcy5oIFwKLSAgICRtaWJkaXIvbWliX21vZHVsZV9pbml0cy5oICAgICAkbWliZGlyL2FnZW50X21vZHVsZV9pbml0cy5oICAgIFwKLSAgICRtaWJkaXIvbWliX21vZHVsZV9zaHV0ZG93bi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9zaHV0ZG93bi5oIFwKLSAgIGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICBpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaCAgIFwKLSAgICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oICAkbWliZGlyL2FnZW50X21vZHVsZV9kb3RfY29uZi5oIgotCi1mb3IgaSBpbiAkajsgZG8KLSAgcm0gLWYgJGkKLSAgZWNobyAiLyogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZS4gIERvIG5vdCBtb2RpZnkgYnkgaGFuZC4gKi8iID4gJGkKLWRvbmUKLQotIwotIyBEbyBoYWlyeSBhZ2VudCBtb2R1bGUgcHJvY2Vzc2luZy4KLSMKLUFDX01TR19DSEVDS0lORyhbZm9yIGFuZCBjb25maWd1cmluZyBtaWIgbW9kdWxlcyB0byB1c2VdKQotCi0jIHNldCB1cCB0aGUgQ1BQIGNvbW1hbmQKLU1PRFVMRUNQUD0iJENQUCAkUEFSVElBTFRBUkdFVEZMQUdTIC1JJHtzcmNkaXJ9L2luY2x1ZGUgLUkke3NyY2Rpcn0vYWdlbnQvbWliZ3JvdXAiCi1pZiB0ZXN0ICJ4JGVuYWJsZV9tZmRfcmV3cml0ZXMiID0gInh5ZXMiOyB0aGVuCi0gIE1PRFVMRUNQUD0iJE1PRFVMRUNQUCAtRE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUyIKLWZpCi0KLW1vZHVsZV9saXN0PSIiCi1taWJfbW9kdWxlX2xpc3Q9IiIKLWFnZW50X21vZHVsZV9saXN0PSIiCi1uZXdfd2l0aF9taWJfbW9kdWxlcz1gZWNobyAkd2l0aF9taWJfbW9kdWxlcyB8IHNlZCAncy8sLyAvZzsnYAotbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzPWBlY2hvICR3aXRoX291dF9taWJfbW9kdWxlcyB8IHNlZCAncy8sLyAvZzsnYAotCi0jIHNldCB1cCBpbml0aWFsIG1vZHVsZSBsaXN0Ci1uZXdfbW9kdWxlX2xpc3Q9IiRuZXdfd2l0aF9taWJfbW9kdWxlcyBkZWZhdWx0X21vZHVsZXMiCi0KLSMgbWlub3IgbW9kaWZpY2F0aW9ucwotaWYgdGVzdCAieCRlbmFibGVfYWdlbnQiID0gInhubyI7IHRoZW4KLSAgICMgbWluaW11bSBtaWIgbW9kdWxlIGxpc3QgZm9yIHNubXB0cmFwZAotICAgbmV3X21vZHVsZV9saXN0PSJtaWJJSS92YWNtX3ZhcnMgbWliSUkvdmFjbV9jb25mIHV0aWxpdGllcy9leGVjdXRlICRuZXdfd2l0aF9taWJfbW9kdWxlcyIKLSAgIGRlZmF1bHRfbWlicz1TTk1QdjItTUlCOklGLU1JQjpJUC1NSUI6VENQLU1JQjpVRFAtTUlCCi0gICBkZWZhdWx0X21pYnNfaW5zdGFsbD0iICIKLWVsaWYgdGVzdCAieCRtaW5pX2FnZW50IiA9ICJ4eWVzIjsgdGhlbgotICAgIyBkZWZpbmUgdGhlIG1pbmkgYWdlbnQgZmxhZyB0byByZWR1Y2Ugb3VyIGxvYWQgbGlzdCBmcm9tIGRlZmF1bHRfbWlicy5oCi0gICBNT0RVTEVDUFA9IiRNT0RVTEVDUFAgLURORVRTTk1QX01JTklfQUdFTlQiCi1maQotCi10ZXN0X21vZHVsZXM9IiRuZXdfbW9kdWxlX2xpc3QiCi1uZXdfbW9kdWxlX2xpc3Q9IiIKLQotIyByZW1vdmUgbW9kdWxlcyB0aGF0IHdlcmUgZXhwbGljaXRseSBleGNsdWRlZAotZm9yIGkgaW4gJHRlc3RfbW9kdWxlcwotIGRvCi0gIGlmIGVjaG8gIiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzICIgfCBncmVwICIgJGkgIiA+IC9kZXYvbnVsbDsgdGhlbgotICAgIG1pYl9jZmdfbXNnPSJtaWIgbW9kdWxlICckaScgaXMgYm90aCBpbmNsdWRlZCBhbmQgZXhjbHVkZWQuIgotICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGNvbmZsaWN0XSkKLSAgICBpZiB0ZXN0ICJ4JHdpdGhfbWliX2NmZ19jaGVja3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19NU0dfV0FSTihbdXNlciB3aXRoICAgIDogJHdpdGhfbWliX21vZHVsZXNdKQotICAgICAgQUNfTVNHX1dBUk4oW2ZpbmFsIHdpdGggICA6ICRuZXdfbW9kdWxlX2xpc3RdKQotICAgICAgQUNfTVNHX1dBUk4oW3VzZXIgd2l0aG91dCA6ICR3aXRoX291dF9taWJfbW9kdWxlc10pCi0gICAgICBBQ19NU0dfV0FSTihbZmluYWwgd2l0aG91dDogJG5ld193aXRoX291dF9taWJfbW9kdWxlc10pCi0gICAgICBBQ19NU0dfRVJST1IoWyRtaWJfY2ZnX21zZ10pCi0gICAgZWxzZQotICAgICAgQUNfTVNHX1dBUk4oWyRtaWJfY2ZnX21zZyBJdCB3aWxsIGJlIGV4Y2x1ZGVkXSkKLSAgICAgIEFDX01TR19DQUNIRV9BREQoWyoqKiBNSUIgTW9kdWxlIHdhcm5pbmcgKioqICRtaWJfY2ZnX21zZyBJdCBoYXMgYmVlbiBleGNsdWRlZC5dKQotICAgIGZpCi0gIGVsc2UKLSAgICBuZXdfbW9kdWxlX2xpc3Q9IiRuZXdfbW9kdWxlX2xpc3QgJGkiCi0gIGZpCi1kb25lCi0KLUFDX01TR19SRVNVTFQoWyRuZXdfbW9kdWxlX2xpc3QuXSkKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBsb29wIG92ZXIgbW9kdWxlIGxpc3QKLSMKLWFsbF93YXJuaW5ncz0iIgotaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfZGVidWciID0gInh5ZXMiOyB0aGVuCi0gICBtb2R1bGVfZGVidWc9MQotZWxzZQotICAgbW9kdWxlX2RlYnVnPTAKLWZpCi1maXJzdF9wYXNzPTEKLW91dHB1dF90bz1ub3JtYWwKLQotaWYgdGVzdCAhIC1kIG1rIDsgdGhlbgotICBta2RpciBtawotZmkKLQotCi1tb2R1bGVfcnVsZXM9bWsvbW9kdWxlX3J1bGVzLm1rCi1lY2hvICIjIGNvbnRlbnRzIGJlbG93IGJ1aWx0IGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlOyBkbyBub3QgZWRpdCBieSBoYW5kIiA+ICRtb2R1bGVfcnVsZXMKLQotIwotIyBtYWtlIGZpbGUgc3ViLXBpZWNlcwotIwotZm9yIGkgaW4gbW9kdWxlX2xpc3RfZGVwcyBtaWJfbW9kdWxlX2xpc3RfZGVwcyBhZ2VudF9tb2R1bGVfbGlzdF9kZXBzIDsgZG8KLSAgZXZhbCAiJGk9bWsvJHtpfS5tayIKLSAgZWNobyAiIyBjb250ZW50cyBiZWxvdyBidWlsdCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZTsgZG8gbm90IGVkaXQgYnkgaGFuZCIgPiBtay8ke2l9Lm1rCi1kb25lCi0KLSMKLSMgdmFyaWFibGUgc2V0dGluZ3Mgc3ViLXBpZWNlcwotIwotZm9yIGkgaW4gbW9kdWxlX2xpc3RfY29kZSBtaWJfbW9kdWxlX2xpc3RfY29kZSBhZ2VudF9tb2R1bGVfbGlzdF9jb2RlIG1vZHVsZV9saXN0IG1pYl9tb2R1bGVfbGlzdCBhZ2VudF9tb2R1bGVfbGlzdCA7IGRvCi0gIGV2YWwgIiRpPW1rLyR7aX0ubWsiCi0gIGVjaG8gIiMgY29udGVudHMgYmVsb3cgYnVpbHQgYXV0b21hdGljYWxseSBieSBjb25maWd1cmU7IGRvIG5vdCBlZGl0IGJ5IGhhbmQiID4gbWsvJHtpfS5tawotICBlY2hvICIkaT0gXFwiID4+IG1rLyR7aX0ubWsKLWRvbmUKLQotZWNobyAkRUNIT19OICJlY2hvICIgJEVDSE9fQyA+IG1rL01PRFVMRV9MSVNULm1rCi1NT0RVTEVfTElTVD1tay9NT0RVTEVfTElTVC5tawotCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgdW50aWwgd2UgaGF2ZSBhbiBlbXB0eSBtb2R1bGUgbGlzdC4uLgotIyAgIChtb2R1bGVzIG1heSBhZGQgbmV3IG1vZHVsZXMsIGFuZCB1bnRpbCBhbGwgZGVwZW5kZW5jaWVzIGFyZSBkb25lLi4uKQotIwotd2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KLSAgQUNfTVNHX01PRFVMRV9EQkcoLWUsIlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiIpCi0gIEFDX01TR19NT0RVTEVfREJHKCJubWw6ICRuZXdfbW9kdWxlX2xpc3QiKQotCi0gICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgIyBsb29wIG92ZXIgYWxsIHRoZSBtb2R1bGVzIGluIHRoZSBjdXJyZW50IGxpc3QKLSAgIwotICBmb3IgaiBpbiAkbmV3X21vZHVsZV9saXN0Ci0gICAgZG8KLQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGZpZ3VyZSBvdXQgd2hpY2ggc3ViLWJsb2NrcyB0byBidWlsZCBpbiBwYXJ0cwotICAgIGlmIGVjaG8gIiRqIiB8IGdyZXAgIj0iIDsgdGhlbgotICAgICAgICMgYnVpbGQgYSBzaGFyZWQgb2JqZWN0IGZpbGUKLSAgICAgICAjIGZvcm1hdDogc29maWxlbmFtZT1tb2R1bGUxOm1vZHVsZTIKLSAgICAgICAjIFhYWDogY3VycmVudGx5IGRvZXNuJ3QgZG8gdGhpcwotICAgICAgIGRsX25hbWU9YGVjaG8gJGogfCBzZWQgJ3MvPS4qLy8nYAotICAgICAgIGRsX25hbWVzPSIkZGxfbmFtZXMgJGRsX25hbWUiCi0gICAgICAgZGxfb2JqZWN0cz1gZWNobyAkaiB8IHNlZCAncy8uKj0vLydgCi0gICAgICAgbW9kdWxlX3N1Ymxpc3Q9YGVjaG8gJGRsX29iamVjdHMgfCBzZWQgJ3MvOi8gL2cnYAotICAgICAgIHNhdmVkX3N1Ymxpc3Q9IiIKLSAgICAgICBzYXZlZF9zdWJsaXN0X2NvZGU9IiIKLSAgICAgICBvdXRwdXRfdG89c2VwYXJhdGUKLQotICAgICAgICMgY3JlYXRlIG91dHB1dCBmaWxlcwotICAgICAgICMgdGhlc2UgYWN0dWFsbHkgZ2V0IG51a2VkIGxhdGVyCi0gICAgICAgb3V0cHV0X2luaXRzPSJhZ2VudC9taWJncm91cC8ke2RsX25hbWV9LWRsbC5jIgotICAgICAgIG91dHB1dF9oZHJzPSJhZ2VudC9taWJncm91cC8ke2RsX25hbWV9LWhkcnMuaCIKLSAgICBlbHNlCi0gICAgICAgIyBub3QgYSBzcGVjaWFsIHRva2VuIGludm9jYXRpb24KLSAgICAgICBtb2R1bGVfc3VibGlzdD0kagotICAgICAgIG91dHB1dF90bz1ub3JtYWwKLSAgICAgICBvdXRwdXRfdD0KLSAgICBmaQotCi0gICAgd2hpbGUgdGVzdCAieCRtb2R1bGVfc3VibGlzdCIgIT0gIngiIDsgZG8KLQotICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGxvb3Agb3ZlciBhbGwgdGhlIG1vZHVsZXMgaW4gdGhlIHN1YiBsaXN0Ci0gICAgZm9yIGkgaW4gJG1vZHVsZV9zdWJsaXN0Ci0gICAgZG8KLQotICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJcbj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0iKQotICAgIEFDX01TR19NT0RVTEVfREJHKCJ0ZXN0aW5nICRpIikKLSAgICBuZWVkX2hlYWRlcj0wCi0KLSAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBidWlsZCBhIHBzZXVkbyBpbmNsdWRlIGhlYWRlciB0aGF0IGluY2x1ZGVzIGN1cnJlbnQgY29uZmlnIGFuZAotICAgICMgc3lzdGVtIHN5bWJvbHM6Ci0gICAgQUNfTEFOR19DT05GVEVTVChBQ19MQU5HX1NPVVJDRShbWwotI2luY2x1ZGUgTkVUU05NUF9TWVNURU1fSU5DTFVERV9GSUxFCi0jaW5jbHVkZSAiJHNyY2Rpci8kbWliZGlyLyRpLmgiXV0pKQotICAgIG12IGNvbmZ0ZXN0LiRhY19leHQgbW9kdWxlX3RtcF9oZWFkZXIuaAotCi0gICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICMgbWFjcm86IGNvbmZpZ19iZWxvbmdzX2luKEFSRykKLSAgICAjICAgQVJHOiBlaXRoZXIKLSAgICAjICAgICAtIG1pYl9tb2R1bGUgICA9PiBsaWJuZXRzbm1wbWlicyAgIChkZWZhdWx0KQotICAgICMgICAgIC0gYWdlbnRfbW9kdWxlID0+IGxpYm5ldHNubXBhZ2VudAotICAgICMKLSAgICBtb2R1bGVfdHlwZT1taWJfbW9kdWxlCi0gICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuaDsgdGhlbgotICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICBtb2R1bGVfdHlwZT1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfYmVsb25nc19pbiB8IHNlZCAnc0AuKmNvbmZpZ19iZWxvbmdzX2luKFwoW14pXSpcKSkuKkBcMUAnYAotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLSAgICBmaQotICAgIGlmIHRlc3QgIngkbW9kdWxlX3R5cGUiID0gIngiIDsgdGhlbgotICAgICAgbW9kdWxlX3R5cGU9bWliX21vZHVsZQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRvdXRwdXRfdG8iID0gInhub3JtYWwiIDsgdGhlbgotICAgICAJb3V0cHV0X2luaXRzPSIkbWliZGlyLyR7bW9kdWxlX3R5cGV9X2luaXRzLmgiCi0gICAgIAlvdXRwdXRfaGRycz0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbmNsdWRlcy5oIgotICAgIGZpCi0KLSAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAjIGNoZWNrIGZvciBkdXBsaWNhdGVzIHdpdGhpbiB0aGUgZGxsIHN5c3RlbS4gCi0gICAgIyAgIC0gaWYgZm91bmQgaW4gYSBkbGwsIHRoZW4gcmVtb3ZlIGZyb20gdGhlIGRsbCBhbmQgYWRkIHRvIG1haW4KLSAgICBkYmxmaXg9IiIKLSAgICBmb3IgZGx0ZXN0IGluICRkbF9uYW1lcyA7IGRvCi0gICAgICBldmFsIG1vZF9maWxlcz0iXCJcJGRsXyR7ZGx0ZXN0fV9maWxlc1wiIgotICAgICAgaWYgZWNobyAiICRtb2RfZmlsZXMgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICMgc29tZSBkbGwgbW9kdWxlIGhhcyBhbHJlYWR5IHNlZW4gdGhpcywgdW5sb2FkIGl0IGZyb20gdGhhdCBsaXN0Ci0gICAgICAgICMgYW5kIGluY2x1ZGUgaXQgaW4gdGhlIGNvcmUgKGFnYWluKQotICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygicmVtb3ZpbmcgJGkgZnJvbSAkZGx0ZXN0IikKLSAgICAgICAgbW9kX2ZpbGVzPWBlY2hvICIgJG1vZF9maWxlcyAiIHwgc2VkICJzQCAkaSBAQCJgCi0gICAgICAgIGRibGZpeD0iX19YWFhfXyIKLSAgICAgICAgZXZhbCAiZGxfJHtkbHRlc3R9X2ZpbGVzPVwiJG1vZF9maWxlc1wiIgotCi0gICAgICAgIG1vZHVsZV9saXN0PSIkbW9kdWxlX2xpc3QgJGkiCi0JZWNobyAicmVhZF9jb25maWcubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtb2R1bGVfbGlzdF9kZXBzCi0JaWYgdGVzdCAkbW9kdWxlX3R5cGUgPSAiYWdlbnRfbW9kdWxlIiA7IHRoZW4KLSAJICAgIGVjaG8gInNubXBfdmFycy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJGFnZW50X21vZHVsZV9saXN0X2RlcHMKLSAgICAgICAgZWxzZQotIAkgICAgZWNobyAibWliX21vZHVsZXMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtaWJfbW9kdWxlX2xpc3RfZGVwcwotICAgICAgICBmaQotICAgICAgICBldmFsICR7bW9kdWxlX3R5cGV9X2xpc3Q9IlwiXCQke21vZHVsZV90eXBlfV9saXN0ICRpXCIiCi0JZWNobyAiCSRpIFxcIiA+PiAkbW9kdWxlX2xpc3RfY29kZQotCWVjaG8gJEVDSE9fTiAiICRpIiAkRUNIT19DID4+ICRNT0RVTEVfTElTVAotICAgICAgICBldmFsIHRtcGZpbGV2YXI9XCRgZWNobyAke21vZHVsZV90eXBlfV9saXN0X2NvZGVgCi0gICAgICAgIGVjaG8gIgkkaSBcXCIgPj4gJHRtcGZpbGV2YXIKLQotCSMgWFhYOiBhZGQgdGhpcyB0byB0aGUgbWFpbiBpbml0IGxpc3Q7IHRoaXMgaXMgcG9zc2libGUgbm90Ci0JIyBxdWl0ZSBpbiB0aGUgcmlnaHQgc3BvdCBhbnkgbG9uZ2VyIGJ1dCB3ZSdyZSBzdHVjayB3aXRoIGl0LgotCSMgQWRkaW5nIGl0IGJhY2sgdG8gdGhlIG9yaWdpbmFsIG9yZGVyZWQgc3BvdCB3b3VsZCBiZSBhCi0JIyBuaWdodG1hcmUuICBPaywgd2UncmUgYWxyZWFkeSBpbiBuaWdodG1hcmUgY29kZSBzbyB0aGF0Ci0JIyB3b2x1ZCBoYXZlIHRvIGJlIGEgbmlnaHQtdGVycm9yLgotICAgICAgICBtbm09YGVjaG8gJGkgfCBzZWQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCi0Jb3V0cHV0X2luaXRzX3RtcD0iJG1pYmRpci8ke21vZHVsZV90eXBlfV9pbml0cy5oIgotCWVjaG8gIiAgaWYgKHNob3VsZF9pbml0KFwiJG1ubVwiKSkgaW5pdF8kbW5tKCk7IiA+PiAkb3V0cHV0X2luaXRzX3RtcAotICAgICAgICAjIFhYWDogZXZlbiB3b3JzZSwgd2UgbG9vc2Ugd2hldGhlciB0aGUgaGVhZGVyIGlzIG5lZWRlZCBvciBub3QuCi0gICAgIAlvdXRwdXRfaGRyc190bXA9IiRtaWJkaXIvJHttb2R1bGVfdHlwZX1faW5jbHVkZXMuaCIKLSAgICAgICAgZWNobyAnI2luY2x1ZGUgIicibWliZ3JvdXAvJGkuaCInIicgPj4gJG91dHB1dF9oZHJzX3RtcAotICAgICAgZmkKLSAgICBkb25lCi0KLSAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgIyBtYWtlIHN1cmUgbW9kdWxlIHdhc24ndCBleHBsaWNpdGx5IGV4Y2x1ZGVkLCBvciBhbHJlYWR5IGFkZGVkCi0gICAgIwotICAgIGlmIHRlc3QgIngkZGJsZml4IiAhPSAieCIgOyB0aGVuCi0gICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgd2FzIGR1cGxpY2F0ZWQgLS0gcHV0dGluZyBpbnRvIG1haW4iKQotICAgIGVsaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgd2FzIGV4Y2x1ZGVkIikKLSAgICBlbGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiAkaSAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGkgYWxyZWFkeSB0ZXN0ZWQiKQotICAgIGVsc2UKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgIyBwcm9jZXNzIG1vZHVsZXMgaGVhZGVyLCBjaGVja2luZyBmb3IgY29uZmlnXyBwc2V1ZG8tbWFjcm9zCi0gICAgICAjCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgZG9lcyB0aGUgaGVhZGVyIGZpbGUgZm9yIHRoZSBtb2R1bGUgZXhpc3Q/Ci0gICAgICAjICAgbWFjcm9zIGFyZSBvbmx5IHByb2Nlc3NlZCBpZiBpdCBkb2VzCi0gICAgICBpZiB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5oOyB0aGVuCi0gICAgICAgIG5ld19saXN0PSIiCi0KLSAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgCSMgbWFjcm86IGNvbmZpZ19leGNsdWRlKG1vZHVsZXMpCi0gICAgICAJIyAgLSBsaXN0cyBjb25mbGljdHMgd2l0aCBvdGhlciBtb2R1bGVzCi0gICAgICAJIyAgICAtIEVHOiBuZXcgTUlCIGltcGxlbWVudGF0aW9ucyBleGNsdWRlIG9sZCBhbmQgdmljZS12ZXJzYQotICAgICAgCSMKLSAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IGNvbmZsaWN0cwotICAgICAgICAjCi0JbmV3X2xpc3RfZXhjbD1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfZXhjbHVkZSB8IHNlZCAncy8uKmNvbmZpZ19leGNsdWRlKFwoLipcKSkuKi9cMS8nYAotCWlmIHRlc3QgIngkbmV3X2xpc3RfZXhjbCIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiRpIGV4Y2x1ZGVzICRuZXdfbGlzdF9leGNsIikKLQkgIGZvciBqIGluICRuZXdfbGlzdF9leGNsCi0JICAgIGRvCi0JICAgIGlmIGVjaG8gIiAkbW9kdWxlX2xpc3QgJG5ld19taWJfbW9kdWxlX2xpc3QgJG5ld19saXN0X3R3byAiIHwgZ3JlcCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgICAgbWliX2NmZ19tc2c9Im1pYiBtb2R1bGUgJyRpJyBleGNsdWRlcyBtb2R1bGUgJyRqJyBidXQgYW5vdGhlciBtb2R1bGUgcmVxdWlyZXMgaXQiCi0gICAgICAgICAgICAgIEFDX01TR19XQVJOKFttaWIgbW9kdWxlIGVycm9yXSkKLSAgICAgICAgICAgICAgaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgotCSAgICAgICAgQUNfTVNHX0VSUk9SKFskbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICBlbHNlCi0JICAgICAgICBBQ19NU0dfV0FSTihbJG1pYl9jZmdfbXNnXSkKLSAgICAgICAgICAgICAgICBBQ19NU0dfQ0FDSEVfQUREKFsqKiogTUlCIE1vZHVsZSB3YXJuaW5nICoqKiAkbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICBmaQotCSAgICBlbHNlCi0JICAgICAgbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzPSIkaiAkbmV3X3dpdGhfb3V0X21pYl9tb2R1bGVzIgotICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiJGogYWRkZWQgdG8gZXhjbHVkZWQgbGlzdCIpCi0JICAgIGZpCi0JICBkb25lCi0JZmkKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX2FyY2hfcmVxdWlyZShBUkNILG1vZHVsZXMpCi0gICAgICAJIyAgLSBsaXN0cyBtb2R1bGVzIHJlcXVpcmVkIGZvciBhIGdpdmVuIEFSQ0gKLSAgICAgICAgIwotICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIHJlcXVpcmVtZW50cwotICAgICAgICAjCi0gICAgICAgIGNoYW5nZXF1b3RlKCwgKQotICAgICAgICBuZXdfbGlzdF9hcmNoPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19hcmNoX3JlcXVpcmUgfCBzZWQgJ3MvLipjb25maWdfYXJjaF9yZXF1aXJlKCAqXChbXiBdKlwpICosICpcKFteIF0qXCkgKikuKi9cMS14YXJjaHgtXDIvJ2AKLSAgICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLQlpZiB0ZXN0ICJ4JG5ld19saXN0X2FyY2giICE9ICJ4IjsgdGhlbgotICAgICAgICAgIGZvciBqIGluICRuZXdfbGlzdF9hcmNoCi0JICAgIGRvCi0JICAgIGFyY2h0ZXN0PWBlY2hvICRqIHwgc2VkICdzLy14YXJjaHgtLiovLydgCi0JICAgICMgdGFyZ2V0X29zIG1heSBoYXZlIGJlZW4gY2hhbmdlZCB0byBhICNkZWZpbmUgb2YgMS4uLgotCSAgICBpZiB0ZXN0ICJ4JGFyY2h0ZXN0IiA9ICJ4MSIgLW8gIngkdGFyZ2V0X29zIiA9ICJ4JGFyY2h0ZXN0IiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gIngkYXJjaHRlc3QiOyB0aGVuCi0JICAgICAgbmV3X2xpc3Q9IiRuZXdfbGlzdCBgZWNobyAkaiB8IHNlZCAncy8uKi14YXJjaHgtLy8nYCIKLSAgICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAkaSByZXF1aXJlZCBhZGRpbmcgYXJjaCBmaWxlczogYGVjaG8gJGogfCBzZWQgJ3MvLioteGFyY2h4LS8vJ2AiKQotCSAgICBmaQotCSAgZG9uZQotCWZpCi0gICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgcmVxdWlyZWQgYXJjaCBmaWxlczogJG5ld19saXN0IikKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX3JlcXVpcmUobW9kdWxlcykKLSAgICAgIAkjICAtIGxpc3RzIG1vZHVsZXMgcmVxdWlyZWQgZm9yIHRoaXMgbW9kdWxlCi0gICAgICAgICMKLSAgICAgICAgIyBjaGVjayBpZiAkaSBoYXMgYW55IG90aGVyIHJlcXVpcmVkIG1vZHVsZXMKLSAgICAgICAgIwotCW5ld19saXN0PSIkbmV3X2xpc3QgYCRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IGdyZXAgY29uZmlnX3JlcXVpcmUgfCBzZWQgJ3MvLipjb25maWdfcmVxdWlyZShcKC4qXCkpLiovXDEvJ2AiCi0gICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgJGkgd2lsbCB0ZXN0OiAkbmV3X2xpc3QiKQotCWlmIHRlc3QgIngkbmV3X2xpc3QiICE9ICJ4IjsgdGhlbgotCSAgZm9yIGogaW4gJG5ld19saXN0Ci0JICAgIGRvCi0gICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygtbiAiICRpIHdhbnRzIHRvIGFkZCAkajogIikKLQkgICAgaWYgdGVzdCAhIC1mICRzcmNkaXIvJG1pYmRpci8kai5oIC1hICEgLWYgJHNyY2Rpci8kbWliZGlyLyRqLmM7IHRoZW4KLSAgICAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQotCSAgICAgIEFDX01TR19FUlJPUihbbWliIG1vZHVsZSAiJGkiIHJlcXVpcmVzIG1vZHVsZSAiJGoiIGJ1dCAkai5oIG9yICRqLmMgY291bGQgbm90IGJlIGZvdW5kIGluICRzcmNkaXIvJG1pYmRpcl0pCi0JICAgIGVsaWYgZWNobyAiICRuZXdfd2l0aF9vdXRfbWliX21vZHVsZXMgIiB8IGdyZXAgIiAkaiAiID4gL2Rldi9udWxsOyB0aGVuCi0JICAgICAgaWYgdGVzdCAieCRpIiAhPSAieGRlZmF1bHRfbW9kdWxlcyIgOyB0aGVuCi0gICAgICAgICAgICAgICAgbWliX2NmZ19tc2c9Im1pYiBtb2R1bGUgJyRpJyByZXF1aXJlcyBtb2R1bGUgJyRqJyBidXQgc29tZW9uZSB0b2xkIG1lIHRvIGNvbXBpbGUgd2l0aG91dCBpdCIKLSAgICAgICAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0gICAgICAgICAgICAgICAgaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICAgICAgICAgICAgQUNfTVNHX0VSUk9SKFskbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgIEFDX01TR19XQVJOKFskbWliX2NmZ19tc2ddKQotICAgICAgICAgICAgICAgICAgQUNfTVNHX0NBQ0hFX0FERChbKioqIE1JQiBNb2R1bGUgd2FybmluZyAqKiogJG1pYl9jZmdfbXNnXSkKLSAgICAgICAgICAgICAgICBmaQotIwkgICAgZWxpZiBlY2hvICIgJG1vZHVsZV9saXN0ICRuZXdfbGlzdF90d28gJG5ld19tb2R1bGVfbGlzdCAiIHwgZ3JlcCAiICRqICIgPiAvZGV2L251bGw7IHRoZW4KLSMgICAgICAgICAgICAgIEFDX01TR19NT0RVTEVfREJHKCIgICRqIGluY2x1ZGVkIHByZXZpb3VzbHkiKQotICAgICAgICAgICAgICBmaQotCSAgICBlbHNlCi0JICAgICAgbmV3X2xpc3RfdHdvPSIkbmV3X2xpc3RfdHdvICRqIgotICAgICAgICAgICAgICBBQ19NU0dfTU9EVUxFX0RCRygiICAkaiBpbmNsdWRlZCIpCi0JICAgIGZpCi0JICBkb25lCi0JZmkKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX2FkZF9taWIoU09NRS1NSUIpCi0gICAgICAJIyAgLSBsaXN0cyBNSUJzIHRvIGJlIGFkZGVkIHRvIHRoZSBkZWZhdWx0IHRvLWxvYWQgbGlzdC4KLSAgICAgICAgIwotICAgICAgICAjIGNoZWNrIGlmICRpIGhhcyBhbnkgbWlicyB0byBhZGQKLSAgICAgICAgIwotCW5ld19taWJzPWAkTU9EVUxFQ1BQIG1vZHVsZV90bXBfaGVhZGVyLmggfCBncmVwIGNvbmZpZ19hZGRfbWliIHwgc2VkICdzLy4qY29uZmlnX2FkZF9taWIoXCguKlwpKS4qL1wxLydgCi0JaWYgdGVzdCAieCRuZXdfbWlicyIgIT0gIngiOyB0aGVuCi0JICAgIGZvciBqIGluICRuZXdfbWlicwotCQlkbwotCQlpZiB0ZXN0ICJ4YGVjaG8gOiRkZWZhdWx0X21pYnM6IHwgZ3JlcCA6JGo6YCIgPSAieCI7IHRoZW4KLQkJICAgIGRlZmF1bHRfbWlicz0iJGRlZmF1bHRfbWliczokaiIKLQkJZmkKLQkJaWYgdGVzdCAtZiAkc3JjZGlyL21pYnMvJGoudHh0OyB0aGVuCi0JCSAgICBpZiBlY2hvICRkZWZhdWx0X21pYnNfaW5zdGFsbCB8IGdyZXAgIiAkaiAiID4gL2Rldi9udWxsOyB0aGVuCi0JCQkgICAgOgotCQkgICAgZWxzZQotCQkJICAgIGRlZmF1bHRfbWlic19pbnN0YWxsPSIkZGVmYXVsdF9taWJzX2luc3RhbGwgJGoudHh0IgotCQkgICAgZmkKLQkJZmkKLQkgICAgZG9uZQotCWZpICMgbmV3IG1pYnMKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgICAjIGFkZCB0aGUgY3VycmVudCBtb2R1bGUgdG8gdGhlIGxpc3Qgb2Ygc3R1ZmYgdG8gY29tcGlsZSwgZXRjLgotICAgICAgICAjCi0gICAgICAgICMgYWRkICRpIHRvIG1vZHVsZSBsaXN0Ci0gICAgICAgICMKLSAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGkgYWRkZWQgKGJhc2VkIG9uICRpLmgpIikKLSAgICAgICAgbW9kdWxlX2xpc3Q9IiRtb2R1bGVfbGlzdCAkaSIKLSAgICAgICAgZXZhbCAke21vZHVsZV90eXBlfV9saXN0PSJcIlwkJHttb2R1bGVfdHlwZX1fbGlzdCAkaVwiIgotCi0JZWNobyAicmVhZF9jb25maWcubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtb2R1bGVfbGlzdF9kZXBzCi0JaWYgdGVzdCAkbW9kdWxlX3R5cGUgPSAiYWdlbnRfbW9kdWxlIiA7IHRoZW4KLSAJICAgIGVjaG8gInNubXBfdmFycy5sbzogbWliZ3JvdXAvJGkuaCIgPj4gJGFnZW50X21vZHVsZV9saXN0X2RlcHMKLSAgICAgICAgZWxzZQotIAkgICAgZWNobyAibWliX21vZHVsZXMubG86IG1pYmdyb3VwLyRpLmgiID4+ICRtaWJfbW9kdWxlX2xpc3RfZGVwcwotICAgICAgICBmaQotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICMgY2hlY2sgZm9yIHVuc3VwcG9ydGVkIGNvbmZpZ19sb2FkX21pYgotICAgICAgICAjCi0gICAgICAgIGlmICRNT0RVTEVDUFAgbW9kdWxlX3RtcF9oZWFkZXIuaCB8IGdyZXAgY29uZmlnX2xvYWRfbWliID4gL2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0gICAgICAJICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSAiJGkiIHVzZXMgdGhlICJjb25maWdfbG9hZF9taWIiIGRpcmVjdGl2ZSwgd2hpY2ggaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4gIEl0IHByb2JhYmx5IHdvbid0IHdvcmsuXSkKLSAgICAgICAgZmkgIyBncmVwIGNvbmZpZ19sb2FkX21pYgotCi0gICAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAgICMgY2hlY2sgZm9yIGNvbmZpZ19wYXJzZV9kb3RfY29uZgotICAgICAgICAjICAoZ2VuZXJhbGx5IG5vdCB1c2VkIGFueSBsb25nZXI7IG9sZCBhdXRvLWxvYWQgYSAuY29uZiB0b2tlbikKLSAgICAgICAgIwotICAgICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgICAgJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfcGFyc2VfZG90X2NvbmYgfCBzZWQgJ3NALipjb25maWdfcGFyc2VfZG90X2NvbmYoXChbXildKlwpLCAqXChbXiksXSpcKSwgKlwoW14pLF0qXCksICpcKFteKSxdKlwpKS4qQHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wZCIsXDEsIFwyLCBcMywgXDQpO0AnID4+ICRtaWJkaXIvbWliX21vZHVsZV9kb3RfY29uZi5oCi0JY2hhbmdlcXVvdGUoWywgXSkKLQotICAgICAgICAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAJIyBtYWNybzogY29uZmlnX2Vycm9yKGVycm9yIHRleHQpCi0gICAgICAJIyAgLSB1c2VkIHRvIHNpZ25hbCBhIGNvbmZpZ3VyYXRpb24gZXJyb3IgZnJvbSBhIG1vZHVsZQotICAgICAgICAjCi0gICAgICAgICMgY2hlY2sgaWYgJGkgaGFzIGFueSBlcnJvcnMsIG9yIHdhcm5pbmdzCi0gICAgICAgICMKLQllcnJvcj1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfZXJyb3IgfCBzZWQgJ3MvLipjb25maWdfZXJyb3IoXCguKlwpKS4qL1wxLydgCi0JaWYgdGVzdCAieCRlcnJvciIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgZWNobwotICAgICAgICAgIGVjaG8KLSAgICAgICAgICBBQ19NU0dfRVJST1IoWyRpOiAqKiogJGVycm9yICoqKl0pCi0gICAgICAgIGZpCi0KLSAgICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgCSMgbWFjcm86IGNvbmZpZ193YXJuaW5nKHdhcm5pbmcgdGV4dCkKLSAgICAgIAkjICAtIHVzZWQgdG8gc2lnbmFsIGEgY29uZmlndXJhdGlvbiAid2FybmluZyIgdG8gYmUgcHJpbnRlZCB0byB0aGUgdXNlcgotICAgICAgICAjCi0Jd2FybmluZz1gJE1PRFVMRUNQUCBtb2R1bGVfdG1wX2hlYWRlci5oIHwgZ3JlcCBjb25maWdfd2FybmluZyB8IHNlZCAncy8uKmNvbmZpZ193YXJuaW5nKFwoLipcKSkuKi9cMS8nYAotCWlmIHRlc3QgIngkd2FybmluZyIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgYWxsX3dhcm5pbmdzPSIkYWxsX3dhcm5pbmdzICR3YXJuaW5nCi0iCi0gICAgICAgIGZpCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgQ2hlY2sgZm9yIGEgLmMgZmlsZSBpZiB0aGUgLmggZGlkbid0IGV4aXN0Ci0gICAgICAjCi0gICAgICBlbGlmIHRlc3QgLWYgJHNyY2Rpci8kbWliZGlyLyRpLmM7IHRoZW4KLSAgICAgICAgaWYgZWNobyAiICRtb2R1bGVfbGlzdCAkbmV3X2xpc3RfdHdvICRuZXdfbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiAkaSAgICAgICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGkgYWxyZWFkeSBpbmNsdWRlZCIpCi0gICAgICAgIGVsc2UKLSAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoIiAgJGkgYWRkZWQgKGJhc2VkIG9uICRpLmMpIikKLQkgICBtb2R1bGVfbGlzdD0iJG1vZHVsZV9saXN0ICRpIgotCSAgIG1pYl9tb2R1bGVfbGlzdD0iJG1pYl9tb2R1bGVfbGlzdCAkaSIKLSAgICAgICAgZmkKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgICAgIyBObyAuaCBvciAuYyA9IGVycm9yISAgKHR5cG8/KQotICAgICAgIwotICAgICAgZWxzZSAjIG5vICRpLmggb3IgJGkuYwotICAgICAgICBBQ19NU0dfV0FSTihbbWliIG1vZHVsZSBlcnJvcl0pCi0JQUNfTVNHX0VSUk9SKFttb2R1bGUgZmlsZXMgJGkuaCBvciAkaS5jIGNvdWxkIG5vdCBiZSBmb3VuZCBpbiAkc3JjZGlyLyRtaWJkaXJdKQotICAgICAgZmkgIyBubyAkaS5oCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIGNoZWNrIGZvciBpbml0L3NodXRkb3duIHJvdXRpbmVzIHRvbwotICAgICAgIwotICAgICAgaGFzX2NfY29kZT1ubwotICAgICAgaWYgdGVzdCAtZiAkc3JjZGlyLyRtaWJkaXIvJGkuYzsgdGhlbgotICAgICAgICBpZiB0ZXN0ICJ4JG91dHB1dF90byIgPSAieG5vcm1hbCIgOyB0aGVuCi0JICBlY2hvICIJJGkgXFwiID4+ICRtb2R1bGVfbGlzdF9jb2RlCi0gIAkgIGVjaG8gJEVDSE9fTiAiICRpIiAkRUNIT19DID4+ICRNT0RVTEVfTElTVAotICAgICAgICAgIGV2YWwgdG1wZmlsZXZhcj1cJGBlY2hvICR7bW9kdWxlX3R5cGV9X2xpc3RfY29kZWAKLSAgICAgICAgICBlY2hvICIJJGkgXFwiID4+ICR0bXBmaWxldmFyCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBldmFsICJkbF8ke2RsX25hbWV9X2ZpbGVzPVwiXCRkbF8ke2RsX25hbWV9X2ZpbGVzICRpXCIiCi0gICAgICAgICAgc2F2ZWRfc3VibGlzdF9jb2RlPSIkc2F2ZWRfc3VibGlzdF9jb2RlICRpIgotICAgICAgICBmaQotICAgICAgICBtbm09YGVjaG8gJGkgfCBzZWQgJ3MvLipcLy8vO3MvXC5jJC8vOydgCi0gICAgICAgIEFDX01TR19NT0RVTEVfREJHKC1lICJcbmNoZWNraW5nICckc3JjZGlyLyRtaWJkaXIvJGkuYycgKCRtbm0vYGJhc2VuYW1lICRpYCkgQyBmaWxlIGZvciBpbml0L3NodXRkb3duIikKLSAgICAgICAgaWYgdGVzdCAieCRtbm0iICE9ICJ4YGJhc2VuYW1lICRpYCI7IHRoZW4KLSAgICAgICAgICAgQUNfTVNHX1dBUk4oW21pYiBtb2R1bGUgZXJyb3JdKQotCSAgIEFDX01TR19FUlJPUihbY29uZmxpY3RpbmcgbmFtZXM6ICRtbm0gIT0gYGJhc2VuYW1lICRpYF0pCi0gICAgICAgIGZpCi0gICAgICAgIHRlbXBfaW5pdD1gZ3JlcCBpbml0XyRtbm0gJHNyY2Rpci8kbWliZGlyLyRpLmMgfCBncmVwIC12IF9pbml0XyRtbm1gCi0JaWYgdGVzdCAieCR0ZW1wX2luaXQiICE9ICJ4IjsgdGhlbgotICAgICAgICAgICAgQUNfTVNHX01PRFVMRV9EQkcoLWUgImFkZGluZyBpbml0XyRtbm0oKSB0byBsaXN0IikKLSAgICAgICAgICAgIG5lZWRfaGVhZGVyPTEKLQkgICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBpbml0XyRtbm0oKTsiID4+ICRvdXRwdXRfaW5pdHMKLQlmaQotCWdyZXAgc2h1dGRvd25fJG1ubSAkc3JjZGlyLyRtaWJkaXIvJGkuYyA+IC9kZXYvbnVsbAotICAgICAgICBpZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotICAgICAgICAgICAgaWYgdGVzdCAkbW9kdWxlX2RlYnVnIC1lcSAxOyB0aGVuCi0gICAgICAgICAgICAgIGVjaG8gLWUgIlxuYWRkaW5nIHNodXRkb3duXyRtbm0oKSB0byBsaXN0IgotICAgICAgICAgICAgZmkKLSAgICAgICAgICAgIG5lZWRfaGVhZGVyPTEKLQkgICAgZWNobyAiICBpZiAoc2hvdWxkX2luaXQoXCIkbW5tXCIpKSBzaHV0ZG93bl8kbW5tKCk7IiA+PiAkbWliZGlyLyR7bW9kdWxlX3R5cGV9X3NodXRkb3duLmgKLQlmaQotICAgICAgZmkgIyB0ZXN0IC1mICRzcmNkaXIvJG1pYmRpci8kaS5jCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIGlmIHRoZXJlIGlzIGEgc2h1dGRvd24vaW5pdCBsaXN0LAotICAgICAgIwotICAgICAgaWYgdGVzdCAkbmVlZF9oZWFkZXIgLWVxIDEgOyB0aGVuCi0gICAgICAgICBlY2hvICcjaW5jbHVkZSAiJyJtaWJncm91cC8kaS5oIiciJyA+PiAkb3V0cHV0X2hkcnMKLSAgICAgIGVsc2UKLSAgICAgICAgIGVjaG8gJy8qI2luY2x1ZGUgIicibWliZ3JvdXAvJGkuaCInIiovJyA+PiAkb3V0cHV0X2hkcnMKLSAgICAgIGZpCi0KLSAgICAgICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgICAjIGNoZWNrIGZvciBvdXRwdXQgZGlyZWN0b3J5IChmb3IgYnVpbGRpbmcgb3V0c2lkZSBvZiBzb3VyY2UgdHJlZQotICAgICAgIwotICAgICAgY2hhbmdlcXVvdGUoLCApCi0gICAgICBpZiB0ZXN0ICJ4YGVjaG8gJGkgfCBzZWQgJ3MvXC8vL2c7J2AiICE9ICJ4JGkiOyB0aGVuCi0JbW5kPWBlY2hvICRpIHwgc2VkICdzL1wvW14vXSokLy87J2AKLQlpZiB0ZXN0ICEgLWQgLi8kbWliZGlyLyRtbmQ7IHRoZW4KLQkgICAgbW9kdWxlX2RpcmVjdG9yaWVzPSIkbW9kdWxlX2RpcmVjdG9yaWVzIC4vJG1pYmRpci8kbW5kIgotCWZpCi0gICAgICBmaSAjIG1vZHVsZSBkaXJlY3RvcnkgdGVzdAotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgICMgZGVmaW5lIFVTSU5HXypfTU9EVUxFCi0gICAgICAjCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIHN5bT0iYGVjaG8gJHtpfSB8IHNlZCAncy9bXmEtekEtWjAtOV9dL18vZycgfCB0ciAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXonICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWidgIgotICAgICAgY2hhbmdlcXVvdGUoWywgXSkKLSAgICAgIGVjaG8gIi8qIERlZmluZSBpZiBjb21waWxpbmcgd2l0aCB0aGUgJHtpfSBtb2R1bGUgZmlsZXMuICAqLyIgPj4gaW5jbHVkZS9uZXQtc25tcC9hZ2VudC8ke21vZHVsZV90eXBlfV9jb25maWcuaAotICAgICAgZWNobyAiI2RlZmluZSBVU0lOR18ke3N5bX1fTU9EVUxFIDEiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKLSAgICAgIGVjaG8gIiAiID4+IGluY2x1ZGUvbmV0LXNubXAvYWdlbnQvJHttb2R1bGVfdHlwZX1fY29uZmlnLmgKLQotICAgICAgIy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICAgIGVjaG8gJEVDSE9fTiAiICRpJEVDSE9fQyIKLSAgICBmaSAjCi0gICAgZG9uZSAjIGZvciBpIGluICRtb2R1bGVfc3VibGlzdAotCi0gICAgaWYgdGVzdCAiJG91dHB1dF90byIgPSAic2VwYXJhdGUiIDsgdGhlbgotICAgICAgaWYgdGVzdCAieCRuZXdfbGlzdF90d28iID0gIngiIDsgdGhlbgotICAgICAgICAjIG5vIG5ldyBzdWItbW9kdWxlcyB0byBhZGQgdG8gdGhlIGN1cnJlbnQgdGFyZ2V0Ci0gICAgICAgIG91dHB1dF90bz0ibm9ybWFsIgotCi0gICAgICAgIGRsbGNsZWFucz0iJHNhdmVkX3N1Ymxpc3RfbyAkZGxsY2xlYW5zIgotICAgICAgICBvdXRwdXRfaW5pdHM9IiIKLSAgICAgICAgbW9kdWxlX3N1Ymxpc3Q9IiIKLSAgICAgIGVsc2UKLSAgICAgICAgIyBhIG1vZHVsZSBoYWQgc3ViLW1vZHVsZXMgcmVxdWlyZWQ7IGtlZXAgZ29pbicKLSAgICAgICAgc2F2ZWRfc3VibGlzdD0iJHNhdmVkX3N1Ymxpc3QgJG1vZHVsZV9zdWJsaXN0IgotICAgICAgICBtb2R1bGVfc3VibGlzdD0iJG5ld19saXN0X3R3byIKLSAgICAgICAgbmV3X2xpc3RfdHdvPSIiCi0gICAgICBmaQotICAgIGVsc2UKLSAgICAgIG1vZHVsZV9zdWJsaXN0PSIiCi0gICAgZmkKLQotICAgIGRvbmUgIyB3aGlsZSBtb2R1bGVfc3VibGlzdAotICBkb25lICMgZm9yIGogaW4gJG5ld19tb2R1bGVfbGlzdAotCi0gICMgcmVtZW1iZXIgdGhlIHRvcCBsZXZlbCBtb2R1bGVzIGZvciBsYXRlciByZXBvcnRpbmcKLSAgaWYgdGVzdCAkZmlyc3RfcGFzcyA9IDEgOyB0aGVuCi0gICAgIyByZW1lbWJlciB0aGlzIGxpc3QgZm9yIGxhdGVyIHJlcG9ydGluZwotICAgIHRvcF9sZXZlbF9tb2R1bGVzPSIkbmV3X21vZHVsZV9saXN0ID0+ICRuZXdfbGlzdF90d28iCi0gICAgZmlyc3RfcGFzcz0wCi0gIGZpCi0gICMtLS0tLS0tLS0tLS0tLS0tLS0tCi0gICMgaWYgJGkgYWRkZWQgbmV3IG1vZHVsZXMgdmlzIGNvbmZpZ18qLAotICAjIGNoZWNrIHRob3NlIG1vZHVsZXMgZm9yIHJlcXVpcmVtZW50cyB0b28KLSAgIwotICAjIHRyYW5zZmVyIHRoZSBuZXcgbW9kdWxlIHRvIGNoZWNrIGxpc3QgdG8gdGhlIG5vcm1hbCB2YXJpYWJsZQotICAjCi0gIGlmIHRlc3QgIngkbmV3X2xpc3RfdHdvIiA7IHRoZW4KLSAgICBvdXRwdXRfdG89bm9ybWFsCi0gIGZpCi0gIG5ld19tb2R1bGVfbGlzdD0iJG5ld19saXN0X3R3byIKLSAgbmV3X2xpc3RfdHdvPSIiCi1kb25lICMgd2hpbGUgdGVzdCAieCRuZXdfbW9kdWxlX2xpc3QiICE9ICJ4IjsgZG8KLWVjaG8gIiIKLQotIy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGNvbnN0cnVjdCB0aGUgZGxsIGNvZGUgZmlsZXMgYW5kIG1ha2UgcnVsZXMuICBUaGlzIGNhbid0IGJlIGRvbmUKLSMgdW50aWwgbm93IGJlY2F1c2UgZHVwbGljYXRlIHVzZSBvZiBhIG1vZHVsZSBtZWFucyBpdCBnZXRzIHJlbW92ZWQKLSMgZnJvbSB0aGUgZGxsIGFuZCBwdXQgaW50byB0aGUgbWFpbiBhZ2VudC4KLSMKLWZvciBpIGluICRkbF9uYW1lcyA7IGRvCi0gIGV2YWwgbW9kX2ZpbGVzPSJcIlwkZGxfJHtpfV9maWxlc1wiIgotICBlY2hvICJjb21wb25lbnRzIGluIHRoZSAkaSBkbGw6ICRtb2RfZmlsZXMiCi0KLSAgb3V0cHV0X2luaXRzPSJhZ2VudC9taWJncm91cC8ke2l9LWRsbC5jIgotICBvdXRwdXRfaGRycz0iYWdlbnQvbWliZ3JvdXAvJHtpfS1oZHJzLmgiCi0KLSAgQUNfTVNHX01PRFVMRV9EQkcoImNyZWF0aW5nIGRsbCBmaWxlOiAkb3V0cHV0X2luaXRzIikKLSAgZm9yIG9maWxlIGluICRvdXRwdXRfaW5pdHMgJG91dHB1dF9oZHJzIDsgZG8KLSAgICBpZiB0ZXN0IC1mICRvZmlsZSA7IHRoZW4KLSAgICAgIGlmIGdyZXAgInRoaXMgZmlsZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgYnkgY29uZmlndXJlIiAkb2ZpbGUgPiAvZGV2L251bGwgMj4mMSA7IHRoZW4KLSAgCToKLSAgICAgIGVsc2UKLSAgCUFDX01TR19FUlJPUihbJG9maWxlIGFscmVhZHkgZXhpc3RlZCA7IGNhbid0IGJ1aWxkIGRsbCBvYmplY3QgJGldKQotICAgICAgZmkKLSAgICBmaQotICAgIGNhdCA+ICRvZmlsZSA8PCBFT0ZJRgotLyogeERvIG5vdCBlZGl0OyB0aGlzIGZpbGUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IGNvbmZpZ3VyZSAqLwotRU9GSUYKLSAgZG9uZQotCi0gIGNhdCA+PiAkb3V0cHV0X2luaXRzIDw8IEVPRk9DCi0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgotI2luY2x1ZGUgIiR7aX0taGRycy5oIgotdm9pZAotaW5pdF8kaSh2b2lkKSB7Ci1FT0ZPQwotCi0gICMgY3JlYXRlIHRoZSAuc28gcnVsZQotICBzYXZlZF9zdWJsaXN0X289YGVjaG8gIiRtb2RfZmlsZXMgIiB8IHNlZCAncy9eICovL2c7cy8gICovLm8gL2c7J2AKLQotICAjIGNyZWF0ZSB0aGUgcnVsZXMgZm9yIGVhY2ggb2JqZWN0Ci0gIGZvciBqIGluICRtb2RfZmlsZXMgOyBkbwotICAgIGNhdCA+PiAkbW9kdWxlX3J1bGVzIDw8IEVPRlIKLSRqLm86ICRqLmMKLQlcJChDQykgLWMgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAIFwkPAotCi1FT0ZSCi0gICAgbW5tPWBlY2hvICRqIHwgc2VkICdzLy4qXC8vLztzL1wuYyQvLzsnYAotICAgIGVjaG8gIiAgaWYgKHNob3VsZF9pbml0KFwiJG1ubVwiKSkgaW5pdF8kbW5tKCk7IiA+PiAkb3V0cHV0X2luaXRzCi0gIGRvbmUKLQotICAjIGNyZWF0ZSB0aGUgcnVsZSBmb3IgdGhlIC5zbyBhbmQgd3JhcHBlciBjb2RlCi0gIGNhdCA+PiAkbW9kdWxlX3J1bGVzIDw8IEVPRk0KLSR7aX0tZGxsLm86ICR7aX0tZGxsLmMKLQlcJChDQykgLWMgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAIFwkPAotCi0ke2l9LnNvOiAkc2F2ZWRfc3VibGlzdF9vICR7aX0tZGxsLm8KLQlcJChDQykgXCQoQ1BQRkxBR1MpIFwkKENGTEFHUykgXCQoRExGTEFHUykgLW8gXCRAICRzYXZlZF9zdWJsaXN0X28gJHtpfS1kbGwubwotCi1FT0ZNCi0gICAgICAgIGNhdCA+PiAkb3V0cHV0X2luaXRzIDw8IEVPRk9DRklOCi19Ci1FT0ZPQ0ZJTgotCi1kb25lCi0KLSMgY2xlYW51cAotcm0gLWYgbW9kdWxlX3RtcF9oZWFkZXIuaAotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBidWlsZCBtb2R1bGUgbGlzdHMgZm9yIE1ha2VmaWxlcwotIwotY2hhbmdlcXVvdGUoLCApCi0KLWZvciBpIGluIG1vZHVsZV9saXN0X28gbW9kdWxlX2xpc3RfYyBtb2R1bGVfbGlzdF9sbyBtaWJfbW9kdWxlX2xpc3RfbyBtaWJfbW9kdWxlX2xpc3RfYyBtaWJfbW9kdWxlX2xpc3RfbG8gbWliZ3JvdXBfbGlzdF9vIG1pYmdyb3VwX2xpc3RfbG8gYWdlbnRfbW9kdWxlX2xpc3RfbyBhZ2VudF9tb2R1bGVfbGlzdF9jIGFnZW50X21vZHVsZV9saXN0X2xvIGFnZW50Z3JvdXBfbGlzdF9vIGFnZW50Z3JvdXBfbGlzdF9sbyA7IGRvCi0gIGV2YWwgIiRpPW1rLyR7aX0ubWsiCi1kb25lCi0KLXNlZCAncy9ebW9kdWxlX2xpc3RfY29kZS9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbW9kdWxlX2xpc3RfY29kZSAgPiAkbW9kdWxlX2xpc3Rfbwotc2VkICdzL15tb2R1bGVfbGlzdF9jb2RlL21vZHVsZV9saXN0X2MvO3MvXChbXj1dXCkgICpcXC9cMS5jIFxcL2cnICA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9jCi1zZWQgJ3MvXm1vZHVsZV9saXN0X2NvZGUvbW9kdWxlX2xpc3RfbG8vO3MvXChbXj1dXCkgICpcXC9cMS5sbyBcXC9nJyA8ICRtb2R1bGVfbGlzdF9jb2RlICA+ICRtb2R1bGVfbGlzdF9sbwotCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9vLztzL1woW149XVwpICAqXFwvXDEubyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9vCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkbWliX21vZHVsZV9saXN0X2NvZGUgID4gJG1pYl9tb2R1bGVfbGlzdF9jCi1zZWQgJ3MvXm1pYl9tb2R1bGVfbGlzdF9jb2RlL21pYl9tb2R1bGVfbGlzdF9sby87cy9cKFtePV1cKSAgKlxcL1wxLmxvIFxcL2cnIDwgJG1pYl9tb2R1bGVfbGlzdF9jb2RlICA+ICRtaWJfbW9kdWxlX2xpc3RfbG8KLQotc2VkICdzL15taWJfbW9kdWxlX2xpc3Rfby9taWJncm91cF9saXN0X28vO3NAXChbXiAJXSpcKVwub0BtaWJncm91cC9cMS5vQGcnIDwgJG1pYl9tb2R1bGVfbGlzdF9vID4gJG1pYmdyb3VwX2xpc3Rfbwotc2VkICdzL15taWJfbW9kdWxlX2xpc3RfbG8vbWliZ3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRtaWJfbW9kdWxlX2xpc3RfbG8gPiAkbWliZ3JvdXBfbGlzdF9sbwotCi1zZWQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2NvZGUvYWdlbnRfbW9kdWxlX2xpc3Rfby87cy9cKFtePV1cKSAgKlxcL1wxLm8gXFwvZycgIDwgJGFnZW50X21vZHVsZV9saXN0X2NvZGUgID4gJGFnZW50X21vZHVsZV9saXN0X28KLXNlZCAncy9eYWdlbnRfbW9kdWxlX2xpc3RfY29kZS9hZ2VudF9tb2R1bGVfbGlzdF9jLztzL1woW149XVwpICAqXFwvXDEuYyBcXC9nJyAgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfYwotc2VkICdzL15hZ2VudF9tb2R1bGVfbGlzdF9jb2RlL2FnZW50X21vZHVsZV9saXN0X2xvLztzL1woW149XVwpICAqXFwvXDEubG8gXFwvZycgPCAkYWdlbnRfbW9kdWxlX2xpc3RfY29kZSAgPiAkYWdlbnRfbW9kdWxlX2xpc3RfbG8KLQotc2VkICdzL15hZ2VudF9tb2R1bGVfbGlzdF9vL2FnZW50Z3JvdXBfbGlzdF9vLztzQFwoW14gCV0qXClcLm9AbWliZ3JvdXAvXDEub0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9vID4gJGFnZW50Z3JvdXBfbGlzdF9vCi1zZWQgJ3MvXmFnZW50X21vZHVsZV9saXN0X2xvL2FnZW50Z3JvdXBfbGlzdF9sby87c0BcKFteIAldKlwpXC5sb0BtaWJncm91cC9cMS5sb0BnJyA8ICRhZ2VudF9tb2R1bGVfbGlzdF9sbyA+ICRhZ2VudGdyb3VwX2xpc3RfbG8KLQotZm9yIGkgaW4gbW9kdWxlX2xpc3RfbyBtb2R1bGVfbGlzdF9jIG1vZHVsZV9saXN0X2xvIG1pYl9tb2R1bGVfbGlzdF9vIG1pYl9tb2R1bGVfbGlzdF9jIG1pYl9tb2R1bGVfbGlzdF9sbyBtaWJncm91cF9saXN0X28gbWliZ3JvdXBfbGlzdF9sbyBhZ2VudF9tb2R1bGVfbGlzdF9vIGFnZW50X21vZHVsZV9saXN0X2MgYWdlbnRfbW9kdWxlX2xpc3RfbG8gYWdlbnRncm91cF9saXN0X28gYWdlbnRncm91cF9saXN0X2xvIDsgZG8KLQkjIGhwdXggbWFrZSAoYXQgbGVhc3QpIGRvZXNuJ3QgbGlrZSBhIHRyYWlsaW5nIFwgb24gdGhlIGxhc3QKLQkjIGxpbmUgZXZlbiB3aGVuIHRoZSBuZXh0IGxpbmUgY29udGFpbnMgbm90aGluZyBidXQKLQkjIHdoaXRlc3BhY2UuCi0JbGFzdHRva2VuPWB0YWlsIC0xIG1rLyRpLm1rIHwgYXdrICd7cHJpbnQgJDF9J2AKLQlzZWQgInMjJGxhc3R0b2tlbiBcXFxcIyRsYXN0dG9rZW4jIiA8IG1rLyRpLm1rID4gbWsvJGkubWsudG1wCi0JbXYgbWsvJGkubWsudG1wIG1rLyRpLm1rCi0KLQkjIGFkZCBhIGNsb3NpbmcgY29tbWVudAotCWVjaG8gIiIgPj4gbWsvJGkubWsKLQllY2hvICIjIGVuZCBjb25maWd1cmUgZ2VuZXJhdGVkIGNvZGUiID4+IG1rLyRpLm1rCi1kb25lCi0KLWNoYW5nZXF1b3RlKFssIF0pCi0KLWlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyAtZXEgMTsgdGhlbgotICAgZWNobyAtZSAiXG5GaW5hbCBtb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGUiCi0gICBleGl0Ci1maQotaWYgdGVzdCAieCR3aXRoX21pYl9jZmdfY2hlY2tzIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19NU0dfQ0FDSEVfQUREKFtBZ2VudCBNb2R1bGUgbGlzdDogJG1vZHVsZV9saXN0X2NvZGVdKQotZmkKLUFDX1NVQlNUX0ZJTEUoTU9EVUxFX0xJU1QpCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2MpCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X28pCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2xvKQotQUNfU1VCU1RfRklMRShtaWJfbW9kdWxlX2xpc3RfYykKLUFDX1NVQlNUX0ZJTEUobWliX21vZHVsZV9saXN0X28pCi1BQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9sbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfYykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3RfbG8pCi1BQ19TVUJTVF9GSUxFKG1pYmdyb3VwX2xpc3RfbykKLUFDX1NVQlNUX0ZJTEUobWliZ3JvdXBfbGlzdF9sbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRncm91cF9saXN0X28pCi1BQ19TVUJTVF9GSUxFKGFnZW50Z3JvdXBfbGlzdF9sbykKLUFDX1NVQlNUX0ZJTEUoYWdlbnRfbW9kdWxlX2xpc3QpCi0KLSNBQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdCkKLSNBQ19TVUJTVChtb2R1bGVfbGlzdCkKLUFDX1NVQlNUKGRlZmF1bHRfbWlic19pbnN0YWxsKQotQUNfU1VCU1QoZGxsY2xlYW5zKQotQUNfU1VCU1RfRklMRShtb2R1bGVfcnVsZXMpCi1BQ19TVUJTVF9GSUxFKG1vZHVsZV9saXN0X2RlcHMpCi1BQ19TVUJTVF9GSUxFKG1pYl9tb2R1bGVfbGlzdF9kZXBzKQotQUNfU1VCU1RfRklMRShhZ2VudF9tb2R1bGVfbGlzdF9kZXBzKQotCi1BQ19NU0dfUkVTVUxUKC4pCi0KLWlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyAtZXEgMTsgdGhlbgotQUNfTVNHX0NBQ0hFX0FERChBZ2VudCBNSUIgY29kZTogICAgICAgICAgICAkbW9kdWxlX2xpc3QpCi1maQotQUNfTVNHX0NBQ0hFX0FERChBZ2VudCBNSUIgY29kZTogICAgICAgICAgICAkdG9wX2xldmVsX21vZHVsZXMpCi0KLSMgZW5kIGhhaXJ5IGFnZW50IG1vZHVsZSBwcm9jZXNzaW5nCi0KLUFDX01TR19DSEVDS0lORyhbaWYgZGlyZWN0b3JpZXMgbmVlZCB0byBiZSBjcmVhdGVkXSkKLWZvciBpIGluICRtb2R1bGVfZGlyZWN0b3JpZXM7IGRvCi0gICRzcmNkaXIvbWtpbnN0YWxsZGlycyAkaQotZG9uZQotQUNfTVNHX1JFU1VMVCguKQotCi0jLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBEZWZpbmUgZGVmYXVsdCBtaWJzCi0jCi1BQ19NU0dfQ0hFQ0tJTkcoW2RlZmF1bHQgbWliIGZpbGVzIHRvIHJlYWRdKQotaWYgdGVzdCAieCRORVRTTk1QX0RFRkFVTFRfTUlCUyIgPSAieCI7IHRoZW4KLSAgTkVUU05NUF9ERUZBVUxUX01JQlM9IiRkZWZhdWx0X21pYnMiCi1maQotaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyIgLW8gIngkUEFSVElBTFRBUkdFVE9TIiA9ICJ4Y3lnd2luIjsgdGhlbgotICAjIG1pbmd3MzIgYW5kIGN5Z3dpbiB1c2UgJzsnIGFzIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBzZXBhcmF0b3IgY2hhcgotICBFTlZfU0VQQVJBVE9SPSI7IgotICBORVRTTk1QX0RFRkFVTFRfTUlCUz1gZWNobyAiJE5FVFNOTVBfREVGQVVMVF9NSUJTIiB8IHNlZCAncy86LzsvZydgCi0gIGRlZmF1bHRfbWlicz1gZWNobyAiJGRlZmF1bHRfbWlicyIgfCBzZWQgJ3MvOi87L2cnYAotZWxzZQotICBFTlZfU0VQQVJBVE9SPSI6IgotZmkKLUFDX1NVQlNUKEVOVl9TRVBBUkFUT1IpCi1BQ19ERUZJTkVfVU5RVU9URUQoTkVUU05NUF9ERUZBVUxUX01JQlMsIiRORVRTTk1QX0RFRkFVTFRfTUlCUyIpCi1BQ19TVUJTVChORVRTTk1QX0RFRkFVTFRfTUlCUykKLUFDX01TR19SRVNVTFQoJE5FVFNOTVBfREVGQVVMVF9NSUJTKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgd2UgaGF2ZSB0byBidWlsZCBQSUMgY29kZV0pCi1lY2hvICIgJG1vZHVsZV9saXN0ICIgfCBncmVwICIgdWNkLXNubXAvZGxtb2QgIiA+L2Rldi9udWxsCi1pZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotICAgICAgICBMSUJfQ0ZMQUdTPSIkTElCX0NGTEFHUyAkU0hMSUJfQ0ZMQUdTIgotCUFDX01TR19SRVNVTFQoeWVzKQotZWxzZQotCURMTElCUz0iIgotCUFDX01TR19SRVNVTFQobm8pCi1maQotCi0jCi0jIENoZWNrIGZvciBrZXJuZWwgbG9jYXRpb24KLSMKLQotQUNfQ0FDSEVfQ0hFQ0soZm9yIGxvY2F0aW9uIG9mIHN5c3RlbSBrZXJuZWwsYWNfY3ZfS0VSTkVMX0xPQywKLVthY19jdl9LRVJORUxfTE9DPSJ1bmtub3duIgotIyBGaXJzdCBkZXRlcm1pbmUgaWYgdGVzdCBleHBlY3RzIGEgLWYgb3IgYSAtYyAoY2hhcmFjdGVyIGRldmljZSAoU1lTVikpCi0KLWlmIHRlc3QgLWMgL2Rldi9udWxsOyB0aGVuCi0gIENGTEFHPSItYyIKLWVsaWYgdGVzdCAtZiAvZGV2L251bGw7IHRoZW4KLSAgQ0ZMQUc9Ii1mIgotZWxzZQotICAjIGZhbGwgYmFjawotICBDRkxBRz0iLWYiCi1maQotZm9yIGkgaW4gL3ZtdW5peCAvaHAtdXggL3N0YW5kL3ZtdW5peCAvZGV2L2tzeW1zIC9rZXJuZWwvdW5peCAva2VybmVsL2dlbnVuaXggL25ldGJzZCAvdW5peCAva2VybmVsIC9ic2QgL21hY2hfa2VybmVsIC9ib290L2tlcm5lbC9rZXJuZWwKLSAgZG8KLSAgaWYgdGVzdCAtZiAkaSAtbyAkQ0ZMQUcgJGk7IHRoZW4KLSAgICBhY19jdl9LRVJORUxfTE9DPSIkaSIKLSAgICBicmVhazsKLSAgZmkKLWRvbmUKLWlmIHRlc3QgJGkgPSAidW5rbm93biI7IHRoZW4KLSAgQUNfTVNHX1dBUk4oW0Nhbid0IGZpbmQgc3lzdGVtIGtlcm5lbC4uLiAgU2V0dGluZyB0byAvdm11bml4XSkKLSAgYWNfY3ZfS0VSTkVMX0xPQz0iL3ZtdW5peCIKLWZpCi1dKQotCi1BQ19ERUZJTkVfVU5RVU9URUQoS0VSTkVMX0xPQywiJGFjX2N2X0tFUk5FTF9MT0MiKQotCi0jCi0jIENoZWNrIGZvciBtb3VudCB0YWJsZSBsb2NhdGlvbgotIwotCi1BQ19DQUNIRV9DSEVDSyhmb3IgbW91bnQgdGFibGUgbG9jYXRpb24sYWNfY3ZfRVRDX01OVFRBQiwKLVthY19jdl9FVENfTU5UVEFCPSJ1bmtub3duIgotZm9yIGkgaW4gL2V0Yy9tbnR0YWIgL2V0Yy9tdGFiIC9ldGMvZmlsZXN5c3RlbXMgL2Rldi9tbnR0YWIKLSAgZG8KLSAgaWYgdGVzdCAtZiAkaSAtbyAtYyAkaTsgdGhlbgotICAgIGFjX2N2X0VUQ19NTlRUQUI9IiRpIgotICAgIGJyZWFrOwotICBmaQotZG9uZQotXSkKLQotQUNfREVGSU5FX1VOUVVPVEVEKEVUQ19NTlRUQUIsIiRhY19jdl9FVENfTU5UVEFCIikKLQotIyBDaGVjayBmb3IgL2Rldi9kbWVtIG9yIC9kZXYvZHJ1bSBsb2NhdGlvbgotQUNfQ0FDSEVfQ0hFQ0soZm9yIGxvY2F0aW9uIG9mIHN3YXAgZGV2aWNlLGFjX2N2X0RNRU1fTE9DLAotWwotIyBGaXJzdCBkZXRlcm1pbmUgaWYgdGVzdCBleHBlY3RzIGEgLWYgb3IgYSAtYyAoY2hhcmFjdGVyIGRldmljZSAoU1lTVikpCi0KLWlmIHRlc3QgLWYgL2Rldi9rbWVtOyB0aGVuCi0gIENURVNUPSJ0ZXN0IC1mIgotZWxpZiB0ZXN0IC1jIC9kZXYva21lbTsgdGhlbgotICBDVEVTVD0idGVzdCAtYyIKLWVsc2UKLSAgIyBmYWxsIGJhY2sKLSAgQ1RFU1Q9InRlc3QgLWYiCi1maQotCi1pZiAkQ1RFU1QgL2Rldi9kbWVtOyB0aGVuCi0gIGFjX2N2X0RNRU1fTE9DPSIvZGV2L2RtZW0iCi1lbGlmICRDVEVTVCAvZGV2L2RydW07IHRoZW4KLSAgYWNfY3ZfRE1FTV9MT0M9Ii9kZXYvZHJ1bSIKLWVsc2UKLSAgYWNfY3ZfRE1FTV9MT0M9Im5vbmUiCi1maQotXSkKLQotaWYgdGVzdCAieCRhY19jdl9ETUVNX0xPQyIgIT0gInhub25lIjsgdGhlbgotICBBQ19ERUZJTkVfVU5RVU9URUQoRE1FTV9MT0MsIiRhY19jdl9ETUVNX0xPQyIpCi1maQotCi0jIGZvcmNlZCBlZmVuY2UgdHVybmVkIG9mZi4KLSMgaWYgdGVzdCAieCRkZXZlbG9wZXIiID0gInh5ZXMiIC1hICJ4JHVzZV9lZmVuY2UiICE9ICJ4bm8iOyB0aGVuCi0jICAgIHVzZV9lZmVuY2U9InllcyIKLSMgZmkKLQotaWYgdGVzdCAieCR1c2VfZWZlbmNlIiA9ICJ4eWVzIjsgdGhlbgotICAgIEFDX0NIRUNLX0xJQihlZmVuY2UsIEVGX0V4aXQpCi1maQotCi0jIENoZWNrcyBmb3IgbGlicmFyaWVzLgotIyBBQ19DSEVDS19MSUIoZGVzLCBtYWluKQotQUNfQ0hFQ0tfTElCKG0sIHJvdW5kKQotQUNfQ0hFQ0tfTElCKG0sIGV4cCkKLQotQUNfQVJHX1dJVEgoZWxmLAotCVtBU19IRUxQX1NUUklORygtLXdpdGhvdXQtZWxmLFt1c2UgZWxmIGxpYnJhcmllc10pXSwsCi0JW0FDX0FSR19FTkFCTEUoZWxmLCwKLQkJW0FDX01TR19FUlJPUihbIEludmFsaWQgb3B0aW9uLiBVc2UgLS13aXRoLWVsZi8tLXdpdGhvdXQtZWxmIGluc3RlYWQgXSldKV0pCi0KLWlmIHRlc3QgIngkd2l0aF9lbGYiICE9ICJ4bm8iOyB0aGVuCi0jIG5saXN0IGlzIG5lZWRlZCBmb3IgdXB0aW1lIG9uIHNvbWUgc3l0ZW1zIGluIHRoZSBnZW5lcmljIGxpYnJhcnkKLSMgYWRkIGhvc3RzIHdoaWNoIGRvbid0IHVzZSBubGlzdCB0byB0aGUgYmxhbmsgZmlyc3QgbGluZQotY2FzZSAkdGFyZ2V0X29zIGluCi0JbGludXgqKSA7OwotCWlyaXgqKSAjIENoZWNrIGZvciBubGlzdCBpbiBtbGQgKGlyaXgpCi0JCUFDX0NIRUNLX0xJQihlbGYsIG5saXN0KQotCQlBQ19DSEVDS19MSUIoZWxmLCBubGlzdDY0KQotCQlBQ19DSEVDS19MSUIobWxkLCBubGlzdCkKLQkJOzsKLQkqKSAjIGRlZmF1bHQKLQkJQUNfQ0hFQ0tfTElCKGVsZiwgbmxpc3QpCi0JCTs7Ci1lc2FjCi1maQotIAotCi0jIE9uIHNvbWUgcGxhdGZvcm1zIChJcml4KSBsaWJuc2wgYW5kIGxpYnNvY2tldCBzaG91bGQgbm90IGJlIHVzZWQuCi1BQ19DSEVDS19GVU5DKGdldGhvc3RieW5hbWUsIEFDX0RFRklORShIQVZFX0dFVEhPU1RCWU5BTUUpLAotCUFDX0NIRUNLX0xJQihuc2wsIGdldGhvc3RieW5hbWUsIEFDX0RFRklORShIQVZFX0dFVEhPU1RCWU5BTUUpCi0JTElCUz0iJHtMSUJTfSAtbG5zbCIpKQotCi0jIFNDTyBVbml4d2FyZSA3LjEuNCBmaW5kcyBnZXRob3N0YnluYW1lKCkgaW4gLWxzb2NrZXQKLUFDX0NIRUNLX0ZVTkMoZ2V0aG9zdGJ5bmFtZSwgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZTkFNRSksCi0JQUNfQ0hFQ0tfTElCKHNvY2tldCwgZ2V0aG9zdGJ5bmFtZSwgQUNfREVGSU5FKEhBVkVfR0VUSE9TVEJZTkFNRSkKLQlMSUJTPSIke0xJQlN9IC1sc29ja2V0IikpCi0KLSMgU29sYXJpcyBrc3RhdAotQUNfQ0hFQ0tfTElCKGtzdGF0LCBrc3RhdF9sb29rdXAsCi0gICAgICAgIEFDX0RFRklORShIQVZFX0xJQktTVEFULCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrc3RhdCcgbGlicmFyeSAoLWxrc3RhdCkuXSkKLSAgICAgICAgTE5FVFNOTVBMSUJTPSIke0xORVRTTk1QTElCU30gLWxrc3RhdCIpCi0KLSMgQ2hlY2sgZm9yIGxpYnJhcmllcyB0aGF0IHRoZSBhZ2VudCBuZWVkcwotIyBzYXZpbmcgb2xkIGxpYnJhcmllcwotTk9OQUdFTlRMSUJTPSRMSUJTCi0KLSMgQ2hlY2sgZm9yIHNlY3VyaXR5IHJlbGF0ZWQgZnVuY3Rpb25zCi1pZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiICE9ICJ4bm8iOyB0aGVuCi0gICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiICE9ICJ4eWVzIiAtYSAieCRhc2tlZHBrY3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19DSEVDS19MSUIocGtjczExLCBDX0luaXRpYWxpemUsIEFDX0RFRklORShIQVZFX0xJQlBLQ1MxMSwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGtjczExJyBsaWJyYXJ5ICgtbHBrY3MxMSkuXSkKLSAgICAgICAgICAgICAgTElCUEtDUzExPSItbHBrY3MxMSIpCi0gICAgZWxzZSAKLSAgICAgIGlmIHRlc3QgIngkdHJ5cnNhcmVmIiAhPSAieG5vIjsgdGhlbgotICAgICAgICAgQUNfQ0hFQ0tfTElCKHJzYXJlZiwgUlNBUHJpdmF0ZURlY3J5cHQpCi0gICAgICAgICBBQ19DSEVDS19MSUIoUlNBZ2x1ZSwgUlNBX1BLQ1MxX1JTQXJlZikKLSAgICAgIGZpCi0KLSAgICAgIEFDX0NIRUNLX0xJQihjcnlwdG8sIEVWUF9tZDUsIEFDX0RFRklORShIQVZFX0xJQkNSWVBUTywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY3J5cHRvJyBsaWJyYXJ5ICgtbGNyeXB0bykuXSkKLSAgICAgICAgICAgICAgTElCQ1JZUFRPPSItbGNyeXB0byIpCi0gICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBBRVNfY2ZiMTI4X2VuY3J5cHQsIAotICAgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9BRVNfQ0ZCMTI4X0VOQ1JZUFQsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYEFFU19jZmIxMjhfZW5jcnlwdCcgZnVuY3Rpb24uXSkpCi0gICAgICBBQ19DSEVDS19MSUIoY3J5cHRvLCBFVlBfTURfQ1RYX2NyZWF0ZSwKLSAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfRVZQX01EX0NUWF9DUkVBVEVdLCBbXSwKLSAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgRVZQX01EX0NUWF9jcmVhdGUnIGZ1bmN0aW9uLl0pCi0gICAgICAgICAgQUNfREVGSU5FKFtIQVZFX0VWUF9NRF9DVFhfREVTVFJPWV0sIFtdLAotICAgICAgICAgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBFVlBfTURfQ1RYX2Rlc3Ryb3knIGZ1bmN0aW9uLl0pKQotICAgIGZpCi1lbGlmIHRlc3QgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgotICAgIEFDX0NIRUNLX0xJQihwa2NzMTEsIENfSW5pdGlhbGl6ZSwgQUNfREVGSU5FKEhBVkVfTElCUEtDUzExKQotICAgICAgICAgICAgTElCUEtDUzExPSItbHBrY3MxMSIpCi1maQotCi1MSUJTPSROT05BR0VOVExJQlMKLQotIyBjaGVjayBmb3IgdGNwIHdyYXBwZXIgc3VwcG9ydAotX2NwcGZsYWdzPSIke0NQUEZMQUdTfSIKLV9sZGZsYWdzPSIke0xERkxBR1N9IgotCi1BQ19BUkdfV0lUSChsaWJ3cmFwLAotWyAgLS13aXRoLWxpYndyYXBbPUxJQlBBVEhdICBDb21waWxlIGluIGxpYndyYXAgKHRjcF93cmFwcGVycykgc3VwcG9ydC5dLFsKLSAgaWYgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gIm5vIjsgdGhlbgotICAgIGlmIHRlc3QgIiR3aXRoX2xpYndyYXAiICE9ICJ5ZXMiOyB0aGVuCi0gICAgICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLUkkd2l0aF9saWJ3cmFwL2luY2x1ZGUiCi0gICAgICBMREZMQUdTPSIke0xERkxBR1N9IC1MJHdpdGhfbGlid3JhcC9saWIiCi0gICAgZmkKLQotICAgIF9saWJzPSR7TElCU30KLSAgICBBQ19DSEVDS19IRUFERVIodGNwZC5oLCAsCi0JICAgIEFDX01TR19FUlJPUihbQXNrZWQgdG8gdXNlIGxpYndyYXAgYnV0IEkgY291bGRuJ3QgZmluZCB0Y3BkLmguXSkpCi0KLSAgICBMSUJTPSIkTElCUyAtbHdyYXAiCi0JQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwXSkKLQkjIFhYWDogc2hvdWxkIGNoZWNrIGZvciBob3N0c19jdGwKLQlBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotCQkgICAgICNpbmNsdWRlIDx0Y3BkLmg+Ci0JCSAgICAgaW50IGFsbG93X3NldmVyaXR5ID0gMDsKLQkJICAgICBpbnQgZGVueV9zZXZlcml0eSAgPSAwOwotCQkgICAgXSxbaG9zdHNfYWNjZXNzKCh2b2lkICopMCldLFsKLQotCSAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotCSAgICBBQ19ERUZJTkUoTkVUU05NUF9VU0VfTElCV1JBUCkKLQkgICAgdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gbm8gLWEgIiR3aXRoX2xpYndyYXAiICE9IHllcyAmJiBfd3JhcGxpYnM9Ii1MJHdpdGhfbGlid3JhcC9saWIiCi0JICAgIF93cmFwbGlicz0iJF93cmFwbGlicyAtbHdyYXAiXSwKLSAgICAgICAgWwotCSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0JICAgICMgTGludXggUmVkSGF0IDYuMSB3b24ndCBsaW5rIGxpYndyYXAgd2l0aG91dCBsaWJuc2wKLQkgICAgQUNfQ0hFQ0tfRlVOQyh5cF9nZXRfZGVmYXVsdF9kb21haW4sICwKLQkJQUNfQ0hFQ0tfTElCKG5zbCwgeXBfZ2V0X2RlZmF1bHRfZG9tYWluKSkKLQkgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgVENQIHdyYXBwZXJzIGxpYnJhcnkgLWx3cmFwIGxpbmtlZCB3aXRoIC1sbnNsXSkKLQkgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQkJICAgICAgICAgI2luY2x1ZGUgPHRjcGQuaD4KLQkJICAgICAgICAgaW50IGFsbG93X3NldmVyaXR5ID0gMDsKLQkgICAgICAgICAgICAgICAgIGludCBkZW55X3NldmVyaXR5ICA9IDA7Ci0JIAkJXSxbaG9zdHNfYWNjZXNzKCh2b2lkICopMCldLAotCi0JCQlBQ19NU0dfUkVTVUxUKHllcykKLQkJCUFDX0RFRklORShORVRTTk1QX1VTRV9MSUJXUkFQKQotCQkJdGVzdCAiJHdpdGhfbGlid3JhcCIgIT0gbm8gLWEgIiR3aXRoX2xpYndyYXAiICE9IHllcyAmJiBfd3JhcGxpYnM9Ii1MJHdpdGhfbGlid3JhcC9saWIiCi0JCQlfd3JhcGxpYnM9IiRfd3JhcGxpYnMgLWx3cmFwIC1sbnNsIiwKLQotCQkJQUNfTVNHX1JFU1VMVChubykKLQkJCUFDX01TR19FUlJPUihBc2tlZCB0byB1c2UgbGlid3JhcCBidXQgSSBjb3VsZG4ndCBmaW5kIGl0LikpXSkKLSAgICBMQUdFTlRMSUJTPSIkX3dyYXBsaWJzIgotICAgIENQUEZMQUdTPSR7X2NwcGZsYWdzfQotICAgIExERkxBR1M9JHtfbGRmbGFnc30KLSAgICBMSUJTPSR7X2xpYnN9Ci0gIGZpCi1dKQotCi1BQ19DSEVDS19IRUFERVJTKHJwbS9ycG1saWIuaCBycG0vaGVhZGVyLmgpCi0KLUFDX0NIRUNLX0hFQURFUihycG0vcnBtbGliLmgscnBtbGliX2g9eWVzLHJwbWxpYl9oPW5vKQotQUNfQ0hFQ0tfSEVBREVSKHJwbS9oZWFkZXIuaCxycG1oZWFkZXJfaD15ZXMscnBtaGVhZGVyX2g9bm8pCi0KLWlmIHRlc3QgIngkcnBtaGVhZGVyX2giID0gInhubyIgLW8gIngkcnBtbGliX2giID0gInhubyIgOyB0aGVuCi0gIGlmIHRlc3QgIngkd2l0aF9ycG0iID0gInh5ZXMiIDsgdGhlbgotICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgZWl0aGVyIHRoZSBSUE0gaGVhZGVyIGZpbGVzIG5lZWRlZCBhbmQgd2FzIHNwZWNpZmljYWxseSBhc2tlZCB0byB1c2UgUlBNIHN1cHBvcnRdKQotICBlbHNlCi0gICAgd2l0aF9ycG09bm8KLSAgZmkKLWZpCi0KLSMKLSMgcnBtIGxpYnJhcmllcyBvbmx5IG5lZWRlZCBmb3IgdGhlIGhvc3QgcmVzb3VyY2VzIG1pYiBzb2Z0d2FyZQotIyBpbnN0YWxsZWQgdGFibGVzIChvbiBsaW51eCBpbiBwYXJ0aWN1bGFyKQotIwotaWYgdGVzdCAieCR3aXRoX3JwbSIgIT0gInhubyIgJiYgXAotICAgICAgICBlY2hvICIgJG1vZHVsZV9saXN0ICIgfCBncmVwICIgaG9zdC9ocl9zd2luc3QgIiA+IC9kZXYvbnVsbDsgdGhlbgotICAjIEFSRy4gIFJQTSBpcyBhIHJlYWwgcGFpbi4KLSAgIyBGV0lXIGxpYnJwbS5sYSwgbGlicnBtaW8ubGEsIGFuZCBsaWJwb3B0LmxhIGhhdmUgY29ycmVjdCBkZXBlbmRlbmNpZXMuCi0gIF9ycG1saWJzPSIiCi0KLSAgIyBycG0tNC4wLnggbmVlZHMgcnBtaW8uCi0gIEFDX0NIRUNLX0xJQihycG1pbywgcnBtR2V0UGF0aCwgW19ycG1saWJzPSItbHJwbWlvICRfcnBtbGlicyJdLCwkX3JwbWxpYnMpCi0gIAotICAjIG5vdyBjaGVjayBmb3IgcnBtIHVzaW5nIHRoZSBhcHByb3ByaWF0ZSBsaWJyYXJpZXMuCi0gIEFDX0NIRUNLX0xJQihycG0sIHJwbUdldEZpbGVzeXN0ZW1MaXN0LFsKLSAgICBBQ19ERUZJTkUoSEFWRV9MSUJSUE0pCi0gICAgTE1JQkxJQlM9Ii1scnBtICRfcnBtbGlicyAkTE1JQkxJQlMiCi0gICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1JL3Vzci9pbmNsdWRlL3JwbSIKLSAgXSxbCi0gICAgIyBycG0tNC4wLjMgbGlicnBtZGIgYWN0dWFsbHkgY29udGFpbnMgd2hhdCB3ZSBuZWVkLgotICAgIEFDX0NIRUNLX0xJQihycG1kYiwgcnBtZGJPcGVuLFsKLSAgICAgIEFDX0RFRklORShIQVZFX0xJQlJQTSkKLSAgICAgIExNSUJMSUJTPSItbHJwbWRiIC1scnBtICRfcnBtbGlicyAkTE1JQkxJQlMiCi0gICAgICBDRkxBR1M9IiRDRkxBR1MgLUkvdXNyL2luY2x1ZGUvcnBtIgotICAgIF0sLC1scnBtICRfcnBtbGlicykKLSAgXSkKLQotICAjIHJwbSA0LjYgaGFzIGluY29tcGF0aWJsZSBBUEksIHR1cm4gb24gdGhlIGxlZ2FjeSBvbmUKLSAgQUNfQ0hFQ0tfREVDTChbaGVhZGVyR2V0RW50cnldLAotICAgIDogLAotICAgIEFDX0RFRklORShbX1JQTV80XzRfQ09NUEFUXSwgW10sIFtEZWZpbmUgaWYgeW91IGhhdmUgUlBNIDQuNiBvciBuZXdlciB0byB0dXJuIG9uIGxlZ2FjeSBBUEldKSwKLSAgICBbWyNpbmNsdWRlIDxycG0vcnBtbGliLmg+XV0KLSAgKQotZmkKLQotIyBsaWJrdm0KLUFDX0NIRUNLX0xJQihrdm0sIGt2bV9yZWFkLCBbX2xpYmt2bT0iLWxrdm0iXSkKLUFDX0NIRUNLX0ZVTkMoa3ZtX29wZW5maWxlcywgQUNfREVGSU5FKEhBVkVfS1ZNX09QRU5GSUxFUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX29wZW5maWxlcycgZnVuY3Rpb24uXSksCi0JQUNfQ0hFQ0tfTElCKGt2bSwga3ZtX29wZW5maWxlcywgQUNfREVGSU5FKEhBVkVfS1ZNX09QRU5GSUxFUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX29wZW5maWxlcycgZnVuY3Rpb24uXSkKLQlfbGlia3ZtPSItbGt2bSIpKQotQUNfQ0hFQ0tfRlVOQyhrdm1fZ2V0cHJvY3MsIEFDX0RFRklORShIQVZFX0tWTV9HRVRQUk9DUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX2dldHByb2NzJyBmdW5jdGlvbi5dKSwKLQlBQ19DSEVDS19MSUIoa3ZtLCBrdm1fZ2V0cHJvY3MsIEFDX0RFRklORShIQVZFX0tWTV9HRVRQUk9DUywgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3ZtX2dldHByb2NzJyBmdW5jdGlvbi5dKQotCV9saWJrdm09Ii1sa3ZtIikpCi1BQ19DSEVDS19GVU5DKGt2bV9nZXRzd2FwaW5mbywgQUNfREVGSU5FKEhBVkVfS1ZNX0dFVFNXQVBJTkZPLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0c3dhcGluZm8nIGZ1bmN0aW9uLl0pLAotCUFDX0NIRUNLX0xJQihrdm0sIGt2bV9nZXRzd2FwaW5mbywgQUNfREVGSU5FKEhBVkVfS1ZNX0dFVFNXQVBJTkZPLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0c3dhcGluZm8nIGZ1bmN0aW9uLl0pCi0JX2xpYmt2bT0iLWxrdm0iKSkKLWlmIHRlc3QgIngke19saWJrdm19IiAhPSAieCI7IHRoZW4KLQlBQ19ERUZJTkUoSEFWRV9MSUJLVk0sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bScgbGlicmFyeSAoLWxrdm0pLl0pCi0JTEFHRU5UTElCUz0iJExBR0VOVExJQlMgJHtfbGlia3ZtfSIKLWZpCi0KLSMgRFlOQU1JQyBNT0RVTEUgU1VQUE9SVAotQUNfQ0hFQ0tfRlVOQyhkbG9wZW4sIEFDX0RFRklORShIQVZFX0RMT1BFTiwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGxvcGVuJyBmdW5jdGlvbi5dKSwKLQlBQ19DSEVDS19MSUIoZGwsIGRsb3BlbiwgQUNfREVGSU5FKEhBVkVfRExPUEVOLCAxLCBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbG9wZW4nIGZ1bmN0aW9uLl0pCi0JQUNfREVGSU5FKEhBVkVfTElCREwsIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGRsJyBsaWJyYXJ5ICgtbGRsKS5dKQotCUxNSUJMSUJTPSIke0xNSUJMSUJTfSAtbGRsIikpCi0KLSMgbmxpc3QKLUFDX0NIRUNLX0ZVTkNTKG5saXN0IG5saXN0NjQga25saXN0KQotCi0jIHdoZXRoZXIgd2UgbmVlZCAtbGRldnN0YXQgZm9yIGRpc2tpbyBNSUIKLWVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiB1Y2Qtc25tcC9kaXNraW8gIiA+L2Rldi9udWxsCi1pZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotCUFDX0NIRUNLX0ZVTkMoZ2V0ZGV2cywgQUNfREVGSU5FKEhBVkVfR0VUREVWUyksCi0JCUFDX0NIRUNLX0xJQihkZXZzdGF0LCBnZXRkZXZzLCBBQ19ERUZJTkUoSEFWRV9HRVRERVZTKQotCQlMTUlCTElCUz0iJHtMTUlCTElCU30gLWxkZXZzdGF0IikpCi0JQUNfQ0hFQ0tfRlVOQyhnZXRkZXZzLCBBQ19ERUZJTkUoSEFWRV9ERVZTVEFUX0dFVERFVlMpLAotCQlBQ19DSEVDS19MSUIoZGV2c3RhdCwgZGV2c3RhdF9nZXRkZXZzLCBBQ19ERUZJTkUoSEFWRV9ERVZTVEFUX0dFVERFVlMpCi0JCUxNSUJMSUJTPSIke0xNSUJMSUJTfSAtbGRldnN0YXQiKSkKLWZpCi0KLSMgTE0tU0VOU09SUy1NSUIgc3VwcG9ydAotZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgZ3JlcCAiIHVjZC1zbm1wL2xtU2Vuc29ycyAiID4gL2Rldi9udWxsCi1pZiB0ZXN0ICQ/IC1lcSAwIDsgdGhlbgotICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzZW5zb3JzIHN1cHBvcnRdKQotICAgICAgICBjYXNlICR0YXJnZXRfb3MgaW4KLSAgICAgICAgICBzb2xhcmlzKikKLSAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUihwaWNsLmgsIExNSUJMSUJTPSIke0xNSUJMSUJTfSAtbHBpY2wiLCkKLSAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUlMocGljbC5oKQotICAgICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICAgIEFDX0NIRUNLX0hFQURFUihzZW5zb3JzL3NlbnNvcnMuaCwsCi0gICAgICAgICAgICAgICAgW0FDX01TR19FUlJPUihbYXNrZWQgdG8gdXNlIGxtX3NlbnNvcnMgYnV0IEkgY291bGRuJ3QgZmluZCBzZW5zb3JzL3NlbnNvcnMuaF0pXSkKLSAgICAgICAgICAgIEFDX0NIRUNLX0xJQihzZW5zb3JzLCBzZW5zb3JzX2dldF9kZXRlY3RlZF9jaGlwcywgWwotCQkgICBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxzZW5zb3JzIiA7Ci0gICAgICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICAgICBbQUNfTVNHX0VSUk9SKFthc2tlZCB0byB1c2UgbG1fc2Vuc29ycyBidXQgSSBjb3VsZG4ndCBmaW5kIC1sc2Vuc29yc10pXSkKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLWZpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgUEVSTCBTVVBQT1JUCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMKLSMgdGVzdCB0byBzZWUgaWYgd2UgY2FuIGF0dGVtcHQgdG8gYnVpbGQgZW1iZWRkZWQgUGVybCBzbyBmYXIKLSMKLWlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gIGlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4bm8iIDsgdGhlbgotICAgIGluc3RhbGxfcGVybD0idHJ5IgotICBmaQotICBpZiB0ZXN0ICJ4JGFjX2N2X3BhdGhfUEVSTFBST0ciID0gIngiIC1vICJ4JGFjX2N2X3BhdGhfUEVSTFBST0ciID0gInhubyIgOyB0aGVuCi0gICAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICBlbWJlZF9wZXJsPSJubyIKLSAgZmkKLWZpCi0KLQotIwotIyBFbWJlZGRlZCBQZXJsIHNwZWNpZmljIHN0dWZmCi0jCi0KLSMgdGVzdCBwZXJsIHByb2cKLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICBteXBlcmw9JGFjX2N2X3BhdGhfUEVSTFBST0cKLSAgICBpZiB0ZXN0ICRteXBlcmwgPSAibm8iIDsgdGhlbgotICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfRVJST1IoLS1lbmFibGUtZW1iZWRkZWQtcGVybCByZXF1ZXN0ZWQgYnV0IG5vIHBlcmwgZXhlY3V0YWJsZSBmb3VuZCkKLSAgICAgIGZpCi0gICAgZmkKLWZpCi0KLSMgdGVzdCBmb3Igc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0Ci1pZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgIyBlbWJlZGRlZCBQZXJsIHJlcXVpcmVzIHNoYXJlZCBsaWJyYXJpZXMKLSAgICBpZiB0ZXN0ICJ4JGVuYWJsZV9zaGFyZWQiICE9ICJ4eWVzIjsgdGhlbgotICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfRVJST1IoUGVybCBzdXBwb3J0IHJlcXVpcmVzIC0tZW5hYmxlLXNoYXJlZCkKLSAgICAgIGZpCi0gICAgZmkKLWZpCi0KLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgQUNfTVNHX0NIRUNLSU5HKFtpZiB3ZSBhcmUgaW4gdGhlIHNvdXJjZSB0cmVlIHNvIHdlIGNhbiBpbnN0YWxsIFBlcmwgbW9kdWxlc10pCi0gIGlmIHRlc3QgIngkc3JjZGlyIiA9ICJ4LiIgLW8gLWQgcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlIDsgdGhlbgotICAgIEFDX01TR19SRVNVTFQoW1llc10pCi0gIGVsc2UKLSAgICBpZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICBpbnN0YWxsX3Blcmw9Im5vIgotICAgICAgQUNfTVNHX1JFU1VMVChbTm9dKQotICAgIGVsc2UKLSAgICAgIEFDX01TR19FUlJPUihbUGVybCBtb2R1bGVzIGNhbiBub3QgYmUgYnVpbHQgb3V0c2lkZSB0aGUgc291cmNlIGRpcmVjdG9yeV0pCi0gICAgZmkKLSAgZmkKLWZpICAgICAgCi0KLSMgY2hlY2sgdGhlIFBlcmwgY29tcGlsZXIgbmFtZQotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgICMKLSAgICAjIFBlcmwgY2MgY2hlY2tzCi0gICAgIwotICAgIGlmIHRlc3QgInhlbmFibGVfcGVybF9jY19jaGVja3MiICE9ICJ4bm8iIDsgdGhlbgotICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBjY10pCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIFBFUkxDQz1gJG15cGVybCAtVjpjYyB8ICRteXBlcmwgLW4gLWUgJ3ByaW50IGlmIChzL15ccypjYz0uKFstPVx3XHNcL10rKS47XHMqLyQxLyk7J2AKLSAgICAgIGNoYW5nZXF1b3RlKFssIF0pCi0gICAgICBpZiB0ZXN0ICJ4JFBFUkxDQyIgIT0gIngiIDsgdGhlbgotICAgICAgICBBQ19NU0dfUkVTVUxUKFskUEVSTENDXSkKLSAgICAgIGVsc2UKLSAgICAgICAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICAgIGluc3RhbGxfcGVybD0ibm8iCi0gICAgICAgIGVsc2UKLSAgICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGNvbXBpbGVyIHRoYXQgd2FzIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgcGVybCBiaW5hcnkgb3IgdXNlIC0td2l0aG91dC1wZXJsLW1vZHVsZXMgdG8gYnVpbGQgd2l0aG91dCBQZXJsLl0pCi0gICAgICAgIGZpCi0gICAgICBmaQotZmkKLQotIyBjaGVjayB0aGUgUGVybCBjb21waWxlciBjb21wYXRpYmlsaXR5Ci1pZiB0ZXN0ICJ4JGluc3RhbGxfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgJFBFUkxDQyBpcyBhIEdOVSBDIGNvbXBpbGVyXSkKLSAgICAgIE9MRENDPSRDQwotICAgICAgQ0M9IiRQRVJMQ0MiCi0gICAgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLCBbWwotI2lmbmRlZiBfX0dOVUNfXwotICBjaG9rZSBtZQotI2VuZGlmCi0gICAgICBdXSldLCBbcGVybGNjX2lzX2dudT15ZXNdLCBbcGVybGNjX2lzX2dudT1ub10pCi0gICAgICBBQ19NU0dfUkVTVUxUKFskcGVybGNjX2lzX2dudV0pCi0gICAgICBDQz0kT0xEQ0MKLSAgICAgIGlmIHRlc3QgIngkR0NDIiA9ICJ4eWVzIiAtYSAieCRwZXJsY2NfaXNfZ251IiA9ICJ4bm8iIDsgdGhlbgotICAgICAgCWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgIAkgIGluc3RhbGxfcGVybD0ibm8iCi0gICAgICAJZWxzZQotICAgICAgCSAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgR05VIEMgY29tcGlsZXIgKCRDQykgd2hpbGUgUGVybCBoYXMgYmVlbiBjb21waWxlZCB3aXRoIGEgbm9uLUdOVSAob3Igbm9uLXdvcmtpbmcpIGNvbXBpbGVyICgkUEVSTENDKS4gVGhpcyBsaWtlbHkgd29uJ3Qgd29yayBmb3IgYnVpbGRpbmcgd2l0aCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzcGVjaWZ5IGEgZGlmZmVyZW50IGNvbXBpbGVyICgtLXdpdGgtY2M9UEFUSCksIGRpc2FibGUgdGhpcyBjaGVjayAoLS1kaXNhYmxlLXBlcmwtY2MtY2hlY2tzKSBvciBidWlsZCB3aXRob3V0IFBlcmwgKC0td2l0aG91dC1wZXJsLW1vZHVsZXMpLl0pCi0gICAgICAJZmkKLSAgICAgIGZpCi1maQotCi0jIGNoZWNrIGlmIHRoZXkncmUgYm90aCBnbnUKLWlmIHRlc3QgIngkaW5zdGFsbF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICAgIGlmIHRlc3QgIngkR0NDIiAhPSAieHllcyIgLWEgIngkcGVybGNjX2lzX2dudSIgPSAieHllcyIgOyB0aGVuCi0gICAgICAJaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgCSAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICAgIAllbHNlCi0gICAgICAgICAgQUNfTVNHX0VSUk9SKFtUaGlzIGJ1aWxkIGlzIHVzaW5nIGEgbm9uLUdOVSBDIGNvbXBpbGVyICgkQ0MpIHdoaWxlIFBlcmwgaGFzIGJlZW4gY29tcGlsZWQgd2l0aCBhIEdOVSBjb21waWxlciAoJFBFUkxDQykuIFRoaXMgbGlrZWx5IHdvbid0IHdvcmsgZm9yIGJ1aWxkaW5nIHdpdGggUGVybCBzdXBwb3J0LiBFaXRoZXIgc3BlY2lmeSBhIGRpZmZlcmVudCBjb21waWxlciAoLS13aXRoLWNjPVBBVEgpLCBkaXNhYmxlIHRoaXMgY2hlY2sgKC0tZGlzYWJsZS1wZXJsLWNjLWNoZWNrcykgb3IgYnVpbGQgd2l0aG91dCBQZXJsICgtLXdpdGhvdXQtcGVybC1tb2R1bGVzKS5dKQotICAgICAgCWZpCi0gICAgICBmaQotZmkKLQotIyB3ZSBoYXZlIGVub3VnaCBzdXBwb3J0IGZvciBpbnN0YWxsaW5nIHRoZSBtb2R1bGVzIGF0IGxlYXN0LgotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICBpbnN0YWxsX3Blcmw9InllcyIKLWVsc2UKLSAgaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInhubyIgOyB0aGVuCi0gICAgaW5zdGFsbF9wZXJsPSJubyIKLSAgICBlbWJlZF9wZXJsPSJubyIKLSAgZmkKLWZpCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIG9uIHRvIGVtYmVkZGluZy4uLgotCi0jIGNoZWNrIHRoZSBjb21waWxlciBmbGFncyBmb3IgaWxsZWdhbCB0b2tlbnMKLWNhc2UgJHRhcmdldF9vcyBpbgotICAgIHNvbGFyaXMqKQotICAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieG5vIiA7IHRoZW4KLSAgICAgICAgICAjCi0gICAgICAgICAgIyBQZXJsIGNjIGNoZWNrcwotICAgICAgICAgICMKLSAgICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBwcm9ibGVtYXRpYyBQZXJsIGNjIGZsYWdzIG9uIFN1bnNdKQotICAgICAgICAgIGlmICRteXBlcmwgLVY6Y2NmbGFncyB8IGdyZXAgTEFSR0VGSUxFID4gL2Rldi9udWxsIDsgdGhlbgotICAgICAgICAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgICAgICAgICAgZW1iZWRfcGVybD0ibm8iCi0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIEFDX01TR19FUlJPUihbUGVybCB3YXMgY29tcGlsZWQgd2l0aCBMQVJHRUZJTEUgc3VwcG9ydCB3aGljaCB3aWxsIGJyZWFrIE5ldC1TTk1QLiBFaXRoZXIgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBQRVJMUFJPRyB0byBhIGRpZmZlcmVudCBwZXJsIGJpbmFyeSBvciB1c2UgLS1kaXNhYmxlLWVtYmVkZGVkLXBlcmwgdG8gdHVybiBvZmYgZW1iZWRkZWQgUGVybCBmdW5jdGlvbmFsaXR5IGFsdG9nZXRoZXIuXSkKLSAgICAgICAgICAgIGZpCi0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9uZSBrbm93bl0pCi0gICAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgOzsKLQotICAgICopCi0gICAgOzsKLWVzYWMKLQotCi0jIGNoZWNrIHRoZSBjZmxhZ3MKLWlmIHRlc3QgIngkZW1iZWRfcGVybCIgIT0gInhubyIgOyB0aGVuCi0gICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgUGVybCBDRkxBR1NdKQotICAgIHBlcmxjZmxhZ3M9YCRteXBlcmwgLU1FeHRVdGlsczo6RW1iZWQgLWUgY2NvcHRzYAotICAgIGlmIHRlc3QgIngkcGVybGNmbGFncyIgIT0gIngiIDsgdGhlbgotICAgICAgQUNfTVNHX1JFU1VMVChbJHBlcmxjZmxhZ3NdKQotICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRwZXJsY2ZsYWdzIgotICAgIGVsc2UKLSAgICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHRyeSIgOyB0aGVuCi0gICAgICAgIGVtYmVkX3Blcmw9Im5vIgotICAgICAgZWxzZQotICAgICAgICBBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIEMgY29tcGlsZXIgZmxhZ3MgdGhhdCB3ZXJlIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgUGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCi0gICAgICBmaQotICAgIGZpCi1maQotCi0jIGNoZWNrIHRoZSBsZGZsYWdzCi1pZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgIEFDX01TR19DSEVDS0lORyhbZm9yIFBlcmwgTERGTEFHU10pCi0gICAgbmV0c25tcF9wZXJsbGRvcHRzPWAkbXlwZXJsIC1NRXh0VXRpbHM6OkVtYmVkIC1lIGxkb3B0c2AKLSAgICBpZiB0ZXN0ICJ4JG5ldHNubXBfcGVybGxkb3B0cyIgIT0gIngiIDsgdGhlbgotICAgICAgQUNfTVNHX1JFU1VMVChbJG5ldHNubXBfcGVybGxkb3B0c10pCi0gICAgZWxzZQotICAgICAgaWYgdGVzdCAieCRlbWJlZF9wZXJsIiA9ICJ4dHJ5IiA7IHRoZW4KLSAgICAgICAgZW1iZWRfcGVybD0ibm8iCi0gICAgICBlbHNlCi0gICAgICAgIEFDX01TR19FUlJPUihbQ291bGQgbm90IGRldGVybWluZSB0aGUgbGlua2VyIG9wdGlvbnMgdGhhdCB3ZXJlIHVzZWQgdG8gYnVpbGQgJG15cGVybC4gRWl0aGVyIHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgUEVSTFBST0cgdG8gYSBkaWZmZXJlbnQgUGVybCBiaW5hcnkgb3IgdXNlIC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsIHRvIHR1cm4gb2ZmIGVtYmVkZGVkIFBlcmwgZnVuY3Rpb25hbGl0eSBhbHRvZ2V0aGVyLl0pCi0gICAgICBmaQotICAgIGZpCi0gICAgaWYgdGVzdCAieCRlbmFibGVfYXNfbmVlZGVkIiA9ICJ4eWVzIiA7IHRoZW4KLSAgICAgICMgbGluayAqbGlicmFyaWVzKiB3aXRoIGxpYnBlcmwKLSAgICAgIFBFUkxMRE9QVFNfRk9SX0xJQlM9IiRuZXRzbm1wX3BlcmxsZG9wdHMiCi0gICAgICAjIFBlcmwgY2NkbGZsYWdzIChSUEFUSCB0byBsaWJwZXJsLCBob3BlZnVsbHkpCi0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBQZXJsIENDRExGTEFHU10pCi0gICAgICBjaGFuZ2VxdW90ZSgsICkKLSAgICAgIG5ldHNubXBfcGVybGNjZGxmbGFncz1gJG15cGVybCAtVjpjY2RsZmxhZ3MgfCAkbXlwZXJsIC1uIC1lICdwcmludCAkMSAnImlmICgvXlxzKmNjZGxmbGFncz0nKFteJ10rKSc7Lyk7ImAKLSAgICAgIGNoYW5nZXF1b3RlKFssIF0pCi0gICAgICBBQ19NU0dfUkVTVUxUKFskbmV0c25tcF9wZXJsY2NkbGZsYWdzXSkKLSAgICAgIFBFUkxMRE9QVFNfRk9SX0FQUFM9IiRuZXRzbm1wX3BlcmxjY2RsZmxhZ3MiCi0gICAgZWxzZQotICAgICAgIyBsaW5rICphcHBsaWNhdGlvbnMqIGFnYWluc3QgbGlicGVybAotICAgICAgUEVSTExET1BUU19GT1JfQVBQUz0iJG5ldHNubXBfcGVybGxkb3B0cyIKLSAgICBmaQotZmkKLQotIyBjaGVjayBuZWVkZWQgZnVuY3Rpb25zCi1pZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiICE9ICJ4bm8iIDsgdGhlbgotICAgIE9MRExJQlM9IiRMSUJTIgotICAgIExJQlM9IiRMSUJTICRuZXRzbm1wX3BlcmxsZG9wdHMiCi0KLSAgICAjIG5ld2VyIHBlcmwgdnMgb2xkZXIgcGVybCBjYWxsIGZ1bmN0aW9ucwotICAgIEFDX0NIRUNLX0ZVTkNTKGV2YWxfcHYpCi0KLSAgICAjIHNpZ2g6IHRoaXMgaGFzIGEgQ0FQSVRBTCBQIGluIFBlcmwsIHdoaWNoIGVuZHMgdXAgYmVpbmcgdGhlIHNhbWUKLSAgICAjIGF1dG9jb25mIGRlZmluZSBhcyB0aGUgbG93ZXIgY2FzZSBzbyB3ZSBoYXZlIHRvIHRyZWF0IHRoZW0gKkJPVEgqCi0gICAgIyBzcGVjaWFsbHkuICBXb25kZXJmdWwuCi0gICAgQUNfQ0hFQ0tfRlVOQyhwZXJsX2V2YWxfcHYsIEFDX0RFRklORShIQVZFX1BFUkxfRVZBTF9QVl9MQykpCi0gICAgQUNfQ0hFQ0tfRlVOQyhQZXJsX2V2YWxfcHYsIEFDX0RFRklORShIQVZFX1BFUkxfRVZBTF9QVl9VQykpCi0KLSAgICBMSUJTPSIkT0xETElCUyIKLQotCi0gICAgaWYgdGVzdCAieCRhY19jdl9mdW5jX3BlcmxfZXZhbF9wdiIgIT0gInh5ZXMiIC1hICJ4JGFjX2N2X2Z1bmNfUGVybF9ldmFsX3B2IiAhPSAieHllcyIgLWEgIngkYWNfY3ZfZnVuY19ldmFsX3B2IiAhPSAieHllcyIgOyB0aGVuCi0gICAgICBpZiB0ZXN0ICJ4JGVtYmVkX3BlcmwiID0gInh0cnkiIDsgdGhlbgotICAgICAgICBlbWJlZF9wZXJsPSJubyIKLSAgICAgIGVsc2UKLSAgICAgICAgQUNfTVNHX0VSUk9SKFtDb3VsZCBub3QgZmluZCB0aGUgZXZhbF9wdiwgcGVybF9ldmFsX3B2IG9yIFBlcmxfZXZhbF9wdiBmdW5jdGlvbnMgbmVlZGVkIGZvciBlbWJlZGRlZCBQZXJsIHN1cHBvcnQuIEVpdGhlciBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIFBFUkxQUk9HIHRvIGEgZGlmZmVyZW50IHBlcmwgYmluYXJ5IG9yIHVzZSAtLWRpc2FibGUtZW1iZWRkZWQtcGVybCB0byB0dXJuIG9mZiBlbWJlZGRlZCBQZXJsIGZ1bmN0aW9uYWxpdHkgYWx0b2dldGhlci5dKQotICAgICAgZmkKLSAgICBlbHNlCi0gICAgICBBQ19ERUZJTkUoTkVUU05NUF9FTUJFRERFRF9QRVJMKQotICAgICAgT1RIRVJBR0VOVExJQk9CSlM9InNubXBfcGVybC5vIgotICAgICAgT1RIRVJBR0VOVExJQkxPQkpTPSJzbm1wX3BlcmwubG8iCi0KLSAgICAgIEVNQkVEUEVSTElOU1RBTEw9ImVtYmVkcGVybGluc3RhbGwiCi0gICAgICBFTUJFRFBFUkxVTklOU1RBTEw9ImVtYmVkcGVybHVuaW5zdGFsbCIKLSAgICAgICMgeWF5LCB3ZSBnb3QgaGVyZSEKLSAgICAgIGVtYmVkX3Blcmw9InllcyIKLSAgICBmaQotZWxzZQotICAgICAgRU1CRURQRVJMSU5TVEFMTD0iIgotICAgICAgRU1CRURQRVJMVU5JTlNUQUxMPSIiCi0gICAgICBlbWJlZF9wZXJsPSJubyIKLSAgICBmaQotZmkKLUFDX1NVQlNUKEVNQkVEUEVSTElOU1RBTEwpCi1BQ19TVUJTVChFTUJFRFBFUkxVTklOU1RBTEwpCi1BQ19TVUJTVChQRVJMTERPUFRTX0ZPUl9MSUJTKQotQUNfU1VCU1QoUEVSTExET1BUU19GT1JfQVBQUykKLQotIyBlbWJlZGRlZCBQZXJsIHJlc3VsdHMKLUFDX01TR19DSEVDS0lORyhbZm9yIHBvdGVudGlhbCBlbWJlZGRlZCBQZXJsIHN1cHBvcnRdKQotaWYgdGVzdCAieCRlbWJlZF9wZXJsIiAhPSAieHllcyIgOyB0aGVuCi0gIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGRpc2FibGVkKQotICBBQ19NU0dfUkVTVUxUKFtkaXNhYmxlZF0pCi1lbHNlCi0gIEFDX01TR19DQUNIRV9BREQoRW1iZWRkZWQgUGVybCBzdXBwb3J0OiAgICAgIGVuYWJsZWQpCi0gIEFDX01TR19SRVNVTFQoW2VuYWJsZWRdKQotZmkKLQotIyBpbnN0YWxsIFBlcmwgbW9kdWxlIHJlc3VsdHMKLVBFUkxUQVJHUz0iIgotUEVSTElOU1RBTExUQVJHUz0iIgotUEVSTFVOSU5TVEFMTFRBUkdTPSIiCi1BQ19NU0dfQ0hFQ0tJTkcoW2lmIHdlIGNhbiBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNdKQotaWYgdGVzdCAieCRpbnN0YWxsX3BlcmwiID0gInh5ZXMiIDsgdGhlbgotICAgIFBFUkxUQVJHUz0icGVybG1vZHVsZXMiCi0gICAgUEVSTElOU1RBTExUQVJHUz0icGVybGluc3RhbGwiCi0gICAgUEVSTFVOSU5TVEFMTFRBUkdTPSJwZXJsdW5pbnN0YWxsIgotICAgIGlmIHRlc3QgIngkZW1iZWRfcGVybCIgPSAieHllcyIgOyB0aGVuCi0gICAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBidWlsZGluZyAtLSBlbWJlZGRhYmxlKQotICAgICAgQUNfTVNHX1JFU1VMVChbeWVzIC0tIGFuZCBlbWJlZGRhYmxlXSkKLSAgICBlbHNlCi0gICAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUGVybCBtb2R1bGVzOiAgICAgICAgICBidWlsZGluZyAtLSBub3QgZW1iZWRkYWJsZSkKLSAgICAgIEFDX01TR19SRVNVTFQoW3llcyAtLSBub3QgZW1iZWRkYWJsZV0pCi0gICAgZmkKLWVsc2UKLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi0gICAgQUNfTVNHX0NBQ0hFX0FERChTTk1QIFBlcmwgbW9kdWxlczogICAgICAgICAgZGlzYWJsZWQpCi1maQotQUNfU1VCU1QoUEVSTFRBUkdTKQotQUNfU1VCU1QoUEVSTElOU1RBTExUQVJHUykKLUFDX1NVQlNUKFBFUkxVTklOU1RBTExUQVJHUykKLUFDX1NVQlNUKFBFUkxBUkdTKQotCi0KLQotIyByZXNldCBsaWJzCi1BR0VOVExJQlM9JExJQlMKLUxJQlM9JE5PTkFHRU5UTElCUwotCi0KLQotIyBweXRob24gc3VwcG9ydAotUFlUSE9OVEFSR1M9IiIKLVBZVEhPTklOU1RBTExUQVJHUz0iIgotUFlUSE9OVU5JTlNUQUxMVEFSR1M9IiIKLVBZVEhPTkNMRUFOVEFSR1M9IiIKLUFDX01TR19DSEVDS0lORyhbaWYgd2Ugc2hvdWxkIGluc3RhbGwgdGhlIHB5dGhvbiBiaW5kaW5nc10pCi1pZiB0ZXN0ICJ4JGluc3RhbGxfcHl0aG9uIiA9ICJ4eWVzIiA7IHRoZW4KLSAgICBQWVRIT05UQVJHUz0icHl0aG9ubW9kdWxlcyIKLSAgICBQWVRIT05JTlNUQUxMVEFSR1M9InB5dGhvbmluc3RhbGwiCi0gICAgUFlUSE9OVU5JTlNUQUxMVEFSR1M9InB5dGhvbnVuaW5zdGFsbCIKLSAgICBQWVRIT05DTEVBTlRBUkdTPSJweXRob25jbGVhbiIKLSAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUHl0aG9uIG1vZHVsZXM6ICAgICAgICBidWlsZGluZyBmb3IgJFBZVEhPTlBST0cpCi0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLWVsc2UKLSAgICBBQ19NU0dfQ0FDSEVfQUREKFNOTVAgUHl0aG9uIG1vZHVsZXM6ICAgICAgICBkaXNhYmxlZCkKLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCi1maQotQUNfU1VCU1QoUFlUSE9OVEFSR1MpCi1BQ19TVUJTVChQWVRIT05JTlNUQUxMVEFSR1MpCi1BQ19TVUJTVChQWVRIT05VTklOU1RBTExUQVJHUykKLUFDX1NVQlNUKFBZVEhPTkNMRUFOVEFSR1MpCi1BQ19TVUJTVChQWVRIT05BUkdTKQotCi0KLQotIyBDaGVja3MgZm9yIGhlYWRlciBmaWxlcy4KLUFDX0hFQURFUl9TVERDCi1BQ19IRUFERVJfRElSRU5UCi1BQ19IRUFERVJfU1lTX1dBSVQKLUFDX0NIRUNLX0hFQURFUlMoc3RkYXJnLmggc3RyaW5nLmggZmNudGwuaCBsaW1pdHMuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIHN5c2xvZy5oIHVuaXN0ZC5oIHN5cy9kbWFwLmggbWFjaGluZS9wdGUuaCB4dGkuaCBzeXMvc29ja2lvLmggc3lzL3NvY2tldC5oIHN5cy9wYXJhbS5oIHN5cy91aW8uaCkKLSMgYXQgbGVhc3QgU29sYXJpcyA5IG5lZWRzIHN5cy9zb2NrZXQuaCB0byBjb21waWxlIHN5cy9zb2NrZXR2YXIuaAotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvc29ja2V0dmFyLmgsLCwKLUFDX0lOQ0xVREVTX0RFRkFVTFQoW10pCi1bCi0jaWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLV0pCi0jIGF0IGxlYXN0IE9wZW5CU0QgMy40IG5lZWRzIHN5cy9wYXJhbS5oIChNQVhQQVRITEVOKSB0byBjb21waWxlIHN5cy9zd2FwLmgKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N3YXAuaCwsLAotQUNfSU5DTFVERVNfREVGQVVMVChbXSkKLVsKLSNpZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLV0pCi1BQ19DSEVDS19IRUFERVJTKHN5cy90aW1lb3V0Lmggc3lzL3VuLmggZnN0YWIuaCBzeXMvZnMuaCBtdGFiLmggdWZzL2ZzLmggc3lzL2ZpeHBvaW50LmggbWFjaGluZS9wYXJhbS5oIHN5cy92bS5oIHZtL3ZtLmggc3lzL3ZtbWV0ZXIuaCBzeXMvdm1wYXJhbS5oIHN5cy92bW1hYy5oIHN5cy92bXN5c3RtLmggc3lzL3RpbWUuaCBzeXMvdGltZXMuaCBzeXMvc3RhdHZmcy5oIHN5cy92ZnMuaCBzeXMvbW50dGFiLmggc3lzL3NlbGVjdC5oIG1udGVudC5oIHN5cy9tbnRlbnQuaCBrc3RhdC5oIHV0c25hbWUuaCBzeXMvdXRzbmFtZS5oIHN5cy9jZGVmcy5oIGdldG9wdC5oIGxvY2FsZS5oIHB0aHJlYWQuaCBzeXMvbG9hZGF2Zy5oIHJlZ2V4LmggbGludXgvdGFza3MuaCBwd2QuaCBncnAuaCB1dG1weC5oKQotIyBOZXR3b3JrIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlMoYXJwYS9pbmV0LmggbmV0aW5ldC9pbl9zeXN0bS5oIG5ldGluZXQvaW4uaCBuZXRpbmV0L2lwX3Zhci5oIG5ldGluZXQvdGNwLmggbmV0aW5ldC90Y3BpcC5oIG5ldGluZXQvdWRwLmggbmV0L2lmLmggbmV0aW5ldC9pbl92YXIuaCBuZXRpbmV0L2lwLmggbmV0aW5ldC9pcF9pY21wLmggbmV0L2lmX2FycC5oIG5ldC9pZl9taWIuaCBuZXQvaWZfdmFyLmggbmV0aW5ldC9pZl9ldGhlci5oIG5ldGluZXQvdGNwX3RpbWVyLmggbmV0aW5ldC90Y3BfdmFyLmggbmV0aW5ldC91ZHBfdmFyLmggbmV0aW5ldC9pY21wX3Zhci5oIG5ldGRiLmggbmV0L3JvdXRlLmgsLCwKLVtbCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfVElNRU9VVF9ICi0jaW5jbHVkZSA8c3lzL3RpbWVvdXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU09DS0VUVkFSX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0dmFyLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX0FSUEFfSU5FVF9ICi0jaW5jbHVkZSA8YXJwYS9pbmV0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSU5fU1lTVE1fSAotI2luY2x1ZGUgPG5ldGluZXQvaW5fc3lzdG0uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVF9JRl9ICi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX0lDTVBfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfaWNtcC5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1RDUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC90Y3AuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVENQX1RJTUVSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3RjcF90aW1lci5oPgotI2VuZGlmCi1dXSkKLSMgVUZTIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlModWZzL3Vmcy9kaW5vZGUuaCB1ZnMvdWZzL3F1b3RhLmggdWZzL3Vmcy9pbm9kZS5oIHVmcy9mZnMvZnMuaCwsLAotW1sKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1VGU19VRlNfRElOT0RFX0gKLSNpbmNsdWRlIDx1ZnMvdWZzL2Rpbm9kZS5oPgotI2VuZGlmCi0jaWYgSEFWRV9VRlNfVUZTX1FVT1RBX0gKLSNpbmNsdWRlIDx1ZnMvdWZzL3F1b3RhLmg+Ci0jZW5kaWYKLV1dKQotIyBGcmVlQlNEIHJlcXVpcmVkIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlMobWFsbG9jLmggbmV0L2lmX2RsLmggc3lzL3N5c2N0bC5oIHN0ZGxpYi5oIG5ldC9pZl90eXBlcy5oIHN5cy9xdWV1ZS5oIG9zcmVsZGF0ZS5oIG1hY2hpbmUvdHlwZXMuaCBzeXMvdXNlci5oIHN5cy9wcm9jLmggc3lzL21idWYuaCBzeXMvbW91bnQuaCBzeXMvZGtzdGF0Lmggc3lzL2NvbmYuaCwsLAotW1sKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLV1dKQotIyBMaW51eAotQUNfQ0hFQ0tfSEVBREVSUyhuZXRpbmV0L3RjcF9mc20uaCBzeXMvcHJvdG9zdy5oIG5saXN0LmggaW9jdGxzLmggYXNtL3BhZ2UuaCBhc20vdHlwZXMuaCBuZXRpcHgvaXB4LmggcGNpL3BjaS5oKQotIyBTb2xhcmlzCi1BQ19DSEVDS19IRUFERVJTKGluZXQvbWliMi5oKQotIyBOZXRCU0QgcmVxdWlyZWQgaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyhrdm0uaCBzeXMvcG9vbC5oIHV2bS91dm1fcGFyYW0uaCB1dm0vdXZtX2V4dGVybi5oIHZtL3ZtX3BhcmFtLmggdm0vdm1fZXh0ZXJuLmgpCi0jIEJTRGkyIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlModm0vc3dhcF9wYWdlci5oLCwsCi1bWwotI2lmIEhBVkVfVk1fVk1fSAotI2luY2x1ZGUgPHZtL3ZtLmg+Ci0jZW5kaWYKLV1dKQotIyBsaW51eCBldGh0b29sCi0jIHJlcXVpcmVzIHNwZWNpYWwgaGFja3MgdG8gZ2V0IGFyb3VuZCB2YXJpb3VzIHByb2JsZW1zIG9uIG9sZGVyIGxpbnV4IGtlcm5lbHMuCi0jIG1ham9yIHVnaC4uLi4KLUFDX0NIRUNLX0hFQURFUlMoW2xpbnV4L2V0aHRvb2wuaF0sLCwKLVtbCi0jaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLXR5cGVkZWYgX191NjQgdTY0OyAgICAgICAgIC8qIGhhY2ssIHNvIHdlIG1heSBpbmNsdWRlIGtlcm5lbCdzIGV0aHRvb2wuaCAqLwotdHlwZWRlZiBfX3UzMiB1MzI7ICAgICAgICAgLyogZGl0dG8gKi8KLXR5cGVkZWYgX191MTYgdTE2OyAgICAgICAgIC8qIGRpdHRvICovCi10eXBlZGVmIF9fdTggdTg7ICAgICAgICAgICAvKiBkaXR0byAqLwotXV0pCi0jIEJTRGkzIGhlYWRlcnMKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N0YXQuaCkKLSMgQlNEaTMvSVJJWCBoZWFkZXJzCi0jIGF0IGxlYXN0IElSSVggNi41IG5lZWRzIF9LTUVNVVNFUiBhbmQgc3lzL3R5cGVzLmggKG1wcm90X3QpIHRvIGNvbXBpbGUgCi0jICAgc3lzL3Zub2RlLmgKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3Zub2RlLmgsLCwKLVsKLSNkZWZpbmUgX0tNRU1VU0VSIDEKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLV0pCi0jIGF0IGxlYXN0IElSSVggNi41IG5lZWRzIHN5cy9zZW1hLmggKG1ybG9ja190KSB0byBjb21waWxlIHN5cy9oYXNoaW5nLmgKLUFDX0NIRUNLX0hFQURFUlMoc3lzL3NlbWEuaCkKLUFDX0NIRUNLX0hFQURFUlMoc3lzL2hhc2hpbmcuaCwsLAotQUNfSU5DTFVERVNfREVGQVVMVChbXSkKLVsKLSNpZiBIQVZFX1NZU19TRU1BX0gKLSNpbmNsdWRlIDxzeXMvc2VtYS5oPgotI2VuZGlmCi1dKQotIyBtb3JlIElSSVggaGVhZGVycwotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvdGNwaXBzdGF0cy5oIHN5cy9zeXNtcC5oIHN5cy9zeXN0ZW1pbmZvLmggc3lzL3N5c2dldC5oKQotIyBBSVggc3lzdGVtIGNvbmZpZ3VyYXRpb24KLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N5c3RlbWNmZy5oKQotIyBmcm9tIHNtdXggc3R1ZmYKLUFDX0NIRUNLX0hFQURFUlMoZXJyLmggc3lzL2ZpbGlvLmggc2d0dHkuaCkKLSMgQUlYIG5lZWRzIHRoaXMgZm9yIHN0YXRmcyBmdW5jCi1BQ19DSEVDS19IRUFERVJTKHN5cy9zdGF0ZnMuaCkKLSMgZm9yIEhvc3RSZXMgKEhQLVVYIGF0IGxlYXN0KQotQUNfQ0hFQ0tfSEVBREVSUyhzeXMvZGtpby5oIHN5cy9kaXNraW8uaCBzeXMvcHN0YXQuaCBsaW51eC9oZHJlZy5oIHBrZ2xvY3MuaCkKLSMgZm9yIEhvc3RSZXMgKFNvbGFyaXMgMi54IGF0IGxlYXN0KQotQUNfQ0hFQ0tfSEVBREVSUyhwa2dpbmZvLmgsCi0gICAgQUNfQ0hFQ0tfTElCKGFkbSwgcGtnaW5mbywgQUNfREVGSU5FKEhBVkVfUEtHSU5GTykKLSAgICBMTUlCTElCUz0iJHtMTUlCTElCU30gLWxhZG0iKSkKLQotY2FzZSAkdGFyZ2V0X29zIGluCi0gICAgYWl4KikgIyBBSVggcGVyZnN0YXQgbGlicmFyeSwgbmVlZGVkIGZvciBDUFUvbWVtb3J5IHN0YXRpc3RpY3MKLSAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhsaWJwZXJmc3RhdC5oLAotICAgICAgICAgICAgQUNfQ0hFQ0tfTElCKHBlcmZzdGF0LCBwZXJmc3RhdF9jcHVfdG90YWwsIEFDX0RFRklORShIQVZFX1BFUkZTVEFUKQotICAgICAgICAgICAgTE1JQkxJQlM9IiR7TE1JQkxJQlN9IC1scGVyZnN0YXQiKSwgQUNfTVNHX0VSUk9SKFsKLQotKioqIFRvIG1vbml0b3IgQ1BVL21lbW9yeSB2YWx1ZXMgaW4gQUlYIHlvdSBuZWVkIHRvIGluc3RhbGwKLSoqKiBsaWJwZXJmc3RhdCB3aGljaCBjYW4gYmUgZm91bmQgaW4gYm9zLnBlcmYKLV0pKQotICAgICAgICA7OwotICAgIGhwdXgqKSAjIEhQLVVYIGFnZW50IG5lZWRzIG9wZW5fbWliCi0gICAgICAgIEFDX0NIRUNLX0xJQihubSwgb3Blbl9taWIsIEFDX0RFRklORShIQVZFX0xJQk5NKQotICAgICAgICAgICAgTE1JQkxJQlM9IiR7TE1JQkxJQlN9IC1sbm0iKQotICAgICAgICA7OwotICAgICopCi0gICAgICAgIDs7Ci1lc2FjCi0jIFdJTjMyCi0jIChtaW5ndzMyIG11c3QgbGluayB3aW5zb2NrIGV4cGxpY2l0bHkpCi1BQ19DSEVDS19IRUFERVJTKHdpbnNvY2suaCxbCi0gICAgICAgIEFHRU5UTElCUz0iJHtBR0VOVExJQlN9IC1saXBobHBhcGkiCi0gICAgICAgIGNhc2UgJHRhcmdldF9vcyBpbgotICAgICAgICAgICAgICAgIG1pbmd3KikKLSAgICAgICAgICAgICAgICAgICAgICAgIExJQlM9IiR7TElCU30gLWxyZWdleCAtbHdzMl8zMiIKLSAgICAgICAgICAgICAgICAgICAgICAgIEFHRU5UTElCUz0iJHtBR0VOVExJQlN9IC1scmVnZXggLWx3czJfMzIiCi0gICAgICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICAgICopCi0gICAgICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICBlc2FjCi1dKQotQUNfQ0hFQ0tfSEVBREVSUyhpby5oKQotIyBTQ08KLUFDX0NIRUNLX0hFQURFUlMoc3lzL3N0cmVhbS5oKQotIyBLQU1FCi1BQ19DSEVDS19IRUFERVJTKG5ldGluZXQvaXA2LmggbmV0aW5ldDYvaW42X3Zhci5oIG5ldGluZXQ2L2luNl9wY2IuaCBuZXRpbmV0Ni9pcDZfdmFyLmggbmV0aW5ldDYvdGNwNi5oIG5ldGluZXQ2L3RjcDZfZnNtLmggbmV0aW5ldDYvbmQ2LmggbmV0aW5ldDYvdGNwNl90aW1lci5oIG5ldGluZXQ2L3RjcDZfdmFyLmgsLCwKLVtbCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfUVVFVUVfSAotI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVA2X0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwNi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRfSUZfSAotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRfUk9VVEVfSAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotI2VuZGlmCi1dXSkKLSMgRFlOQU1JQyBNT0RVTEUgU1VQUE9SVAotQUNfQ0hFQ0tfSEVBREVSUyhkbGZjbi5oKQotIyB0YWJsZV9hcnJheSBoZWxwZXIgc3VwcG9ydAotQUNfQ0hFQ0tfSEVBREVSUyhzZWFyY2guaCkKLQotIyBSUE0gc3ViZGlyZWN0b3J5IHBhdGggKHNpZ2gpCi1pZiB0ZXN0ICJ4JHdpdGhfcnBtIiAhPSAieG5vIiAmJiBcCi0gICAgICAgIGVjaG8gIiAkbW9kdWxlX2xpc3QgIiB8IGdyZXAgIiBob3N0L2hyX3N3aW5zdCAiID4gL2Rldi9udWxsOyB0aGVuCi0gIEFDX0NIRUNLX0hFQURFUlMocnBtL3JwbXRzLmgsIFtdLCBbXSwgW1sjaW5jbHVkZSA8cnBtL3JwbWxpYi5oPl1dKQotZmkKLQotIyBPcGVuQlNEIDIuNiBuZWVkcyBuZXRpbmV0L2luLmggYmVmb3JlIG5ldGluZXQvaW5fcGNiLmgKLUFDX01TR19DSEVDS0lORyhbW2ZvciBuZXRpbmV0L2luX3BjYi5oXV0pCi1BQ19DQUNIRV9WQUwoY3ZfaGF2ZV9uZXRpbmV0X2luX3BjYl9oLAotWyBBQ19UUllfQ1BQKCBbCi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2luY2x1ZGUgPG5ldGluZXQvaW5fcGNiLmg+Ci1dLCBjdl9oYXZlX25ldGluZXRfaW5fcGNiX2g9eWVzLCBjdl9oYXZlX25ldGluZXRfaW5fcGNiX2g9bm8pXSkKLUFDX01TR19SRVNVTFQoJGN2X2hhdmVfbmV0aW5ldF9pbl9wY2JfaCkKLWlmIHRlc3QgJGN2X2hhdmVfbmV0aW5ldF9pbl9wY2JfaCA9IHllczsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9ORVRJTkVUX0lOX1BDQl9IKQotZmkKLQotIyBOZXRCU0QgbmVlZHMgbWFjaGluZS90eXBlcy5oIGJlZm9yZSBzeXMvZGlza2xhYmVsLmgKLUFDX01TR19DSEVDS0lORyhbW2ZvciBzeXMvZGlza2xhYmVsLmhdXSkKLUFDX0NBQ0hFX1ZBTChjdl9oYXZlX3N5c19kaXNrbGFiZWxfaCwKLVsgQUNfVFJZX0NQUCggWwotI2luY2x1ZGUgPG1hY2hpbmUvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvZGlza2xhYmVsLmg+Ci1dLCBjdl9oYXZlX3N5c19kaXNrbGFiZWxfaD15ZXMsIGN2X2hhdmVfc3lzX2Rpc2tsYWJlbF9oPW5vKV0pCi1BQ19NU0dfUkVTVUxUKCRjdl9oYXZlX3N5c19kaXNrbGFiZWxfaCkKLWlmIHRlc3QgJGN2X2hhdmVfc3lzX2Rpc2tsYWJlbF9oID0geWVzOyB0aGVuCi0gIEFDX0RFRklORShIQVZFX1NZU19ESVNLTEFCRUxfSCkKLWZpCi0KLSMgT3BlblNTTAotQUNfQ0hFQ0tfSEVBREVSUyhvcGVuc3NsL2htYWMuaCBvcGVuc3NsL2V2cC5oIG9wZW5zc2wvYWVzLmggb3BlbnNzbC9kZXMuaCBvcGVuc3NsL2RoLmgpCi1BQ19DSEVDS19IRUFERVJTKHNlY3VyaXR5L2NyeXB0b2tpLmgpCi0KLSMgUHJpbnRpbmcKLUFDX1BBVEhfUFJPRyhbTFBTVEFUX1BBVEhdLGxwc3RhdCkKLWlmIHRlc3QgeCRMUFNUQVRfUEFUSCAhPSB4OyB0aGVuCi0gICAgQUNfREVGSU5FX1VOUVVPVEVEKExQU1RBVF9QQVRILCIkTFBTVEFUX1BBVEgiKQotICAgIEFDX0RFRklORShIQVZFX0xQU1RBVCkKLWZpCi1BQ19DSEVDS19GVU5DUyhjZ2V0bmV4dCkKLWlmIHRlc3QgLXIgL2V0Yy9wcmludGNhcDsgdGhlbgotICAgIEFDX0RFRklORShIQVZFX1BSSU5UQ0FQKQotZmkKLQotQUNfTVNHX0NIRUNLSU5HKFtmb3IgYXV0aGVudGljYXRpb24gc3VwcG9ydF0pCi11c2VvcGVuc3NsPW5vCi11c2Vwa2NzPW5vCi1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9wa2NzMTFfQ19Jbml0aWFsaXplIiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX3NlY3VyaXR5X2NyeXB0b2tpX2giICE9ICJ4eWVzIjsgdGhlbgotICAgIGlmIHRlc3QgIngkYXNrZWRwa2NzIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgIEFDX01TR19FUlJPUihBc2tlZCB0byB1c2UgUEtDUzExIGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKQotICAgIGZpCi1lbHNlCi0gICAgaWYgdGVzdCAieCRhc2tlZHBrY3MiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIHVzZXBrY3M9eWVzCi0gICAgZmkKLWZpCi0KLWlmIHRlc3QgIngkYWNfY3ZfbGliX2NyeXB0b19FVlBfbWQ1IiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfaG1hY19oIiAhPSAieHllcyIgLW8gIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfaG1hY19oIiAhPSAieHllcyI7IHRoZW4KLSAgICBpZiB0ZXN0ICJ4JGFza2Vkb3BlbnNzbCIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgQUNfTVNHX0VSUk9SKEFza2VkIHRvIHVzZSBPcGVuU1NMIGJ1dCBJIGNvdWxkbid0IGZpbmQgaXQuKQotICAgIGZpCi1lbHNlCi0gICAgaWYgdGVzdCAieCRhc2tlZG9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIHVzZW9wZW5zc2w9eWVzCi0gICAgZWxpZiB0ZXN0ICJ4JHRyeW9wZW5zc2wiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgIGlmIHRlc3QgIngkdXNlcGtjcyIgIT0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICB1c2VvcGVuc3NsPXllcwotICAgICAgICBmaQotICAgIGZpCi1maQotCi1pZiB0ZXN0ICJ4JHVzZW9wZW5zc2wiICE9ICJ4bm8iIDsgdGhlbgotICAgIGF1dGhtb2Rlcz0iTUQ1IFNIQTEiCi0gICAgaWYgdGVzdCAieCRlbmFibGVfcHJpdmFjeSIgIT0gInhubyIgOyB0aGVuCi0gICAgICAgIGlmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX29wZW5zc2xfYWVzX2giID0gInh5ZXMiIDsgdGhlbgotICAgICAgICAgICAgZW5jcm1vZGVzPSJERVMgQUVTIgotCWVsc2UKLQkgICAgZW5jcm1vZGVzPSJERVMiCi0JZmkKLSAgICBlbHNlCi0gICAgICAgIGVuY3Jtb2Rlcz0iW2Rpc2FibGVkXSIKLSAgICBmaQotICAgIEFDX0RFRklORShORVRTTk1QX1VTRV9PUEVOU1NMKQotICAgIExORVRTTk1QTElCUz0iJExORVRTTk1QTElCUyAkTElCQ1JZUFRPIgotICAgIEFDX01TR19SRVNVTFQoT3BlblNTTCBTdXBwb3J0KQotZWxpZiB0ZXN0ICJ4JHVzZXBrY3MiICE9ICJ4bm8iIDsgdGhlbgotICAgIGF1dGhtb2Rlcz0iTUQ1IFNIQTEiCi0gICAgaWYgdGVzdCAieCRlbmFibGVfcHJpdmFjeSIgIT0gInhubyIgOyB0aGVuCi0gICAgICAgIGVuY3Jtb2Rlcz0iREVTIgotICAgIGVsc2UKLSAgICAgICAgZW5jcm1vZGVzPSJbZGlzYWJsZWRdIgotICAgIGZpCi0gICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX1BLQ1MxMSkKLSAgICBMTkVUU05NUExJQlM9IiRMTkVUU05NUExJQlMgJExJQlBLQ1MxMSIKLSAgICBBQ19NU0dfUkVTVUxUKFBLQ1MxMSBTdXBwb3J0KQotZWxpZiB0ZXN0ICJ4JGVuYWJsZV9tZDUiICE9ICJ4bm8iOyB0aGVuCi0gICAgYXV0aG1vZGVzPSJNRDUiCi0gICAgZW5jcm1vZGVzPSIiCi0gICAgQUNfREVGSU5FKE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENSkKLSAgICBBQ19NU0dfUkVTVUxUKEludGVybmFsIE1ENSBTdXBwb3J0KQotZmkKLWlmIHRlc3QgIngkZW5hYmxlX21kNSIgPSAieG5vIjsgdGhlbgotICAgIGF1dGhtb2Rlcz1gZWNobyAkYXV0aG1vZGVzIHwgc2VkICdzL01ENSAqLy87J2AKLWZpCi1BQ19TVUJTVChMTkVUU05NUExJQlMpCi1BQ19TVUJTVChMQUdFTlRMSUJTKQotCi1BQ19NU0dfQ0FDSEVfQUREKEF1dGhlbnRpY2F0aW9uIHN1cHBvcnQ6ICAgICAkYXV0aG1vZGVzKQotQUNfTVNHX0NBQ0hFX0FERChFbmNyeXB0aW9uIHN1cHBvcnQ6ICAgICAgICAgJGVuY3Jtb2RlcykKLQotaWYgdGVzdCAieCRhbGxfd2FybmluZ3MiICE9ICJ4IjsgdGhlbgotICAgIEFDX01TR19DQUNIRV9BREQoV0FSTklORzogJGFsbF93YXJuaW5ncykKLWZpCi0KLSMgQ2hlY2tzIGZvciB0eXBlZGVmcywgc3RydWN0dXJlcywgYW5kIGNvbXBpbGVyIGNoYXJhY3RlcmlzdGljcy4KLUFDX1RZUEVfT0ZGX1QKLUFDX1RZUEVfUElEX1QKLUFDX0hFQURFUl9USU1FCi0KLSMgdGhpcyBzaG91bGQgdXNlIEFDX0NIRUNLX1RZUEUsIGJ1dCBpdCdzIGJyb2tlbiBhdCBsZWFzdCBpbiAyLjEzLTE0Ci0jIHNvIHdlIGRvIGl0IGJ5IGhhbmQuCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzb2NrbGVuX3RdKQotQUNfQ0FDSEVfVkFMKGFjX2N2X3R5cGVfJDEsCi1bQUNfRUdSRVBfQ1BQKFtzb2NrbGVuX3RAPDpAXmEtekEtWl8wLTlAOj5AXSwKLVsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgU1REQ19IRUFERVJTCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RkZGVmLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZl0sIFthY19jdl90eXBlX3NvY2tsZW5fdD15ZXNdLCBbYWNfY3ZfdHlwZV9zb2NrbGVuX3Q9bm9dKV0pCi0KLUFDX01TR19SRVNVTFQoWyRhY19jdl90eXBlX3NvY2tsZW5fdF0pCi1pZiB0ZXN0ICRhY19jdl90eXBlX3NvY2tsZW5fdCA9IHllczsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9TT0NLTEVOX1QpCi1maQotCi0jIEFJWCBrZWVwcyBpbl9hZGRyX3QgaW4gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotQUNfTVNHX0NIRUNLSU5HKFtmb3IgaW5fYWRkcl90XSkKLUFDX0NBQ0hFX1ZBTChhY19jdl90eXBlXyQxLAotW0FDX0VHUkVQX0NQUChbaW5fYWRkcl90QDw6QF5hLXpBLVpfMC05QDo+QF0sCi1bI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIFNURENfSEVBREVSUwotI2luY2x1ZGUgPHN0ZGxpYi5oPgotI2luY2x1ZGUgPHN0ZGRlZi5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWZdLCBbYWNfY3ZfdHlwZV9pbl9hZGRyX3Q9eWVzXSwgW2FjX2N2X3R5cGVfaW5fYWRkcl90PW5vXSldKQotCi1BQ19NU0dfUkVTVUxUKFskYWNfY3ZfdHlwZV9pbl9hZGRyX3RdKQotaWYgdGVzdCAkYWNfY3ZfdHlwZV9pbl9hZGRyX3QgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKEhBVkVfSU5fQUREUl9UKQotZmkKLQotIyBPbGRlciB2ZXJzaW9ucyBvZiBNaW5HVyBkbyBub3QgZGVmaW5lIHNzaXplX3QgaW4gc3lzL3R5cGVzCi1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzc2l6ZV90XSkKLUFDX0NBQ0hFX1ZBTChhY19jdl90eXBlXyQxLAotW0FDX0VHUkVQX0NQUChbc3NpemVfdEA8OkBeYS16QS1aXzAtOUA6PkBdLAotWyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBTVERDX0hFQURFUlMKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdGRkZWYuaD4KLSNlbmRpZl0sIFthY19jdl90eXBlX3NzaXplX3Q9eWVzXSwgW2FjX2N2X3R5cGVfc3NpemVfdD1ub10pXSkKLQotQUNfTVNHX1JFU1VMVChbJGFjX2N2X3R5cGVfc3NpemVfdF0pCi1pZiB0ZXN0ICRhY19jdl90eXBlX3NzaXplX3QgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKEhBVkVfU1NJWkVfVCwgMSwgW0RlZmluZSBpZiB0eXBlIHNzaXplX3QgaXMgYXZhaWxhYmxlXSkKLWZpCi0KLSMgQ2hlY2sgcHMgYXJncwotQUNfQ0FDSEVfQ0hFQ0soW2ZvciBjb3JyZWN0IGZsYWdzIHRvIHBzXSwgYWNfY3ZfcHNfZmxhZ3MsCi1baWYgdGVzdCAiYCgkUFNQUk9HIC1lIDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1lIgotZWxpZiB0ZXN0ICJgKCRQU1BST0cgLWVsIDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1lbCIKLWVsaWYgdGVzdCAiYCgkUFNQUk9HIGFjeCAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCi0gIGFjX2N2X3BzX2ZsYWdzPSJhY3giCi1lbGlmIHRlc3QgImAoJFBTUFJPRyAtYWN4IDI+JjEpIHwgJEVHUkVQICcgKHBzKSAqJCcgfCBhd2sgJ3twcmludCAkTkZ9J2AiID0gInBzIiA7IHRoZW4KLSAgYWNfY3ZfcHNfZmxhZ3M9Ii1hY3giCi1lbGlmIHRlc3QgImAoJFBTUFJPRyAtbyBwaWQsdHQsc3RhdGUsdGltZSx1Y29tbSAyPiYxKSB8ICRFR1JFUCAnIHBzICokJyB8IGF3ayAne3ByaW50ICRORn0nYCIgPSAicHMiIDsgdGhlbgotICBhY19jdl9wc19mbGFncz0iLW8gcGlkLHR0LHN0YXRlLHRpbWUsdWNvbW0iCi1lbGlmIHRlc3QgImAoJFBTUFJPRyBheCAyPiYxKSB8ICRFR1JFUCAnIChwcykgKiQnIHwgYXdrICd7cHJpbnQgJE5GfSdgIiA9ICJwcyIgOyB0aGVuCi0gIGFjX2N2X3BzX2ZsYWdzPSJheCIKLWVsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhjeWd3aW4iOyB0aGVuCi0gIGFjX2N2X3BzX2ZsYWdzPSItZSIKLWVsaWYgdGVzdCAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMyIiAtbyAieCRQQVJUSUFMVEFSR0VUT1MiID0gInhtaW5ndzMybXN2YyI7IHRoZW4gCi0gIGFjX2N2X3BzX2ZsYWdzPSItZSIKLWVsc2UKLSAgQUNfTVNHX1dBUk4oW1VuYWJsZSB0byBkZXRlcm1pbmUgdmFsaWQgcHMgZmxhZ3MuLi4gIGRlZmF1bHRpbmcuLi5dKQotICBhY19jdl9wc19mbGFncz0iLWFjeCIKLWZpCi1dKQotCi1QU0NNRD0iJFBTUFJPRyAkYWNfY3ZfcHNfZmxhZ3MiCi1BQ19TVUJTVChQU0NNRCkKLUFDX0RFRklORV9VTlFVT1RFRChQU0NNRCwgIiRQU1BST0cgJGFjX2N2X3BzX2ZsYWdzIikKLQotIyBDaGVja3MgZm9yIGJ5dGUgb3JkZXIKLWlmIHRlc3QgJGNyb3NzX2NvbXBpbGluZyA9IHllczsgdGhlbgotICBpZiB0ZXN0IHgkd2l0aF9lbmRpYW5uZXNzID0geGJpZzsgdGhlbgotICAgIEFDX0RFRklORShXT1JEU19CSUdFTkRJQU4pCi0gIGVsaWYgdGVzdCAteiAkd2l0aF9lbmRpYW5uZXNzOyB0aGVuCi0gICAgQUNfTVNHX0VSUk9SKFtZb3UgYXJlIGNyb3NzLWNvbXBpbGluZywgYnV0IHlvdSBoYXZlIG5vdCBzcGVjaWZpZWQgdGhlIHRhcmdldCdzIGVuZGlhbm5lc3NdKQotICBmaQotZWxzZQotICBpZiB0ZXN0ICR3aXRoX2VuZGlhbm5lc3M7IHRoZW4KLSAgICBBQ19NU0dfRVJST1IoW0VuZGlhbm5lc3MgaGFzIGJlZW4gc3BlY2lmaWVkLCBidXQgeW91IGFyZSBub3QgY3Jvc3MtY29tcGlsaW5nLl0pCi0gIGZpCi0gIEFDX0NfQklHRU5ESUFOCi1maQotCi0jIENoZWNrcyBmb3IgbGlicmFyeSBmdW5jdGlvbnMuCi1BQ19GVU5DX0FMTE9DQQotQUNfUFJPR19HQ0NfVFJBRElUSU9OQUwKLUFDX0ZVTkNfTUVNQ01QCi1BQ19UWVBFX1NJR05BTAotQUNfRlVOQ19HRVRNTlRFTlQKLUFDX0NIRUNLX0ZVTkNTKHNldG1udGVudCBoYXNtbnRvcHQgZ2V0aG9zdG5hbWUgdW5hbWUgZ2V0dGltZW9mZGF5IHNlbGVjdCBzb2NrZXQpCi1BQ19DSEVDS19GVU5DUyhzdHJsY2F0IHN0cmxjcHkgc3RydG9sIHN0cnRvdWwpCi1BQ19DSEVDS19GVU5DUyhzdHJjaHIgc3RydG9rX3Igc3RyZHVwIG1lbWNweSBtZW1tb3ZlIGluZGV4IGJjb3B5IHN0cmNhc2VzdHIgcmVnY29tcCkKLUFDX0NIRUNLX0ZVTkNTKHNpZ25hbCBzZXRzaWQgc2lnc2V0IHNpZ2Jsb2NrIHNpZ2hvbGQgc3RyZXJyb3Igc2V0ZW52IHZzbnByaW50ZiBzbnByaW50ZikKLUFDX0NIRUNLX0ZVTkNTKHNpZ2FjdGlvbikKLUFDX0NIRUNLX0ZVTkNTKHJhbmRvbSBscmFuZDQ4IHJhbmQpCi1BQ19DSEVDS19GVU5DUyhleGVjdiBzeXN0ZW0gZm9yayBnZXRwaWQgc3RybmNhc2VjbXAgc2lnYWxybSkKLUFDX0NIRUNLX0ZVTkNTKGxzZWVrNjQgcHJlYWQ2NCkKLWlmIHRlc3QgIngkd2l0aF9ycG0iICE9ICJ4bm8iICYmIFwKLSAgICAgICAgZWNobyAiICRtb2R1bGVfbGlzdCAiIHwgZ3JlcCAiIGhvc3QvaHJfc3dpbnN0ICIgPiAvZGV2L251bGw7IHRoZW4KLSAgT0xETElCUz0kTElCUwotICBMSUJTPSRMTUlCTElCUwotICBBQ19DSEVDS19GVU5DUyhycG1HZXRQYXRoKQotICBMSUJTPSRPTERMSUJTCi1maQotCi1BQ19DSEVDS19GVU5DUyhnZXRsb2FkYXZnKQotQUNfQ0hFQ0tfRlVOQ1MoZ2V0YWRkcmluZm8gZ2V0aXBub2RlYnluYW1lIGdhaV9zdHJlcnJvcikKLSMgQlNEaTIgZnVuY3Rpb25zIGRpZmZlcgotQUNfQ0hFQ0tfRlVOQ1Moc3RhdHZmcyBzdGF0ZnMpCi1BQ19DSEVDS19GVU5DUyhnZXRkdGFibGVzaXplKQotIyBmcmVlYnNkMiBjaGVja3MKLUFDX0NIRUNLX0ZVTkNTKGdldGZzc3RhdCkKLUFDX0NIRUNLX0ZVTkNTKHVzbGVlcCkKLUFDX0NIRUNLX0ZVTkNTKHNldGxvY2FsZSkKLUFDX0NIRUNLX0ZVTkNTKHRjZ2V0YXR0cikKLUFDX0NIRUNLX0ZVTkNTKGlmX25hbWVpbmRleCBpZl9mcmVlbmFtZWluZGV4KQotQUNfQ0hFQ0tfRlVOQ1Moa2luZm9fZ2V0X2NwdXMpCi0jIHNvbGFyaXMgY2hlY2tzCi1BQ19DSEVDS19GVU5DUyhnZXRwYWdlc2l6ZSkKLUFDX0NIRUNLX0ZVTkNTKG1rc3RlbXApCi1BQ19DSEVDS19GVU5DUyhnZXRwd25hbSBnZXRncm5hbSBzZXRnaWQgc2V0dWlkIHNldGdyb3VwcykKLSMgSGlnaCByZXNvbHV0aW9uIGFsYXJtIHN1cHBvcnQKLUFDX0NIRUNLX0ZVTkNTKHNldGl0aW1lcikKLSMgZnVuY3Rpb25zIHRvIHN1cHBvcnQgdGhlIGNsb2NrLgotQUNfQ0hFQ0tfRlVOQ1MobWt0aW1lIHN0aW1lIHRpbWVzIHN5c2NvbmYpCi0jIG1pc3NpbmcgZnJvbSBocC11eAotQUNfQ0hFQ0tfRlVOQ1MoaWZfbmFtZXRvaW5kZXgpCi0jIG1pc3NpbmcgZnJvbSBNaW5HVwotQUNfQ0hFQ0tfRlVOQ1MoY2hvd24gbG9jYWx0aW1lX3IpCi0KLUFDX01TR19DSEVDS0lORyhbW2ZvciBTSU9DR0lGQUREUiBpbiBzeXMvaW9jdGwuaF1dKQotQUNfQ0FDSEVfVkFMKGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUiwKLVsgQUNfRUdSRVBfQ1BQKHh4eHllc3h4eCwKLVsKLSNpZmRlZiBIQVZFX1NZU19JT0NUTF9ICi0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0jZW5kaWYKLSNpZmRlZiBTSU9DR0lGQUREUgoteHh4eWVzeHh4Ci0jZW5kaWYKLV0sIGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUj15ZXMsIGN2X3N5c19pb2N0bF9oX2hhc19TSU9DR0lGQUREUj1ubyldKQotQUNfTVNHX1JFU1VMVCgkY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSKQotaWYgdGVzdCAkY3Zfc3lzX2lvY3RsX2hfaGFzX1NJT0NHSUZBRERSID0geWVzOyB0aGVuCi0gIEFDX0RFRklORShTWVNfSU9DVExfSF9IQVNfU0lPQ0dJRkFERFIpCi1maQotCi0jIHVsdHJpeAotQUNfTVNHX0NIRUNLSU5HKFtbZm9yIHR3by1hcmd1bWVudCBzdGF0ZnMgd2l0aCBzdHJ1Y3QgZnNfZGF0YSAoVWx0cml4KV1dKQotQUNfQ0FDSEVfVkFMKGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGEsCi1bQUNfVFJZX1JVTihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAotI2luY2x1ZGUgPHN5cy9tb3VudC5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfRlNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy9mc190eXBlcy5oPgotI2VuZGlmCi1tYWluICgpCi17Ci1zdHJ1Y3QgZnNfZGF0YSBmc2Q7Ci0vKiBVbHRyaXgncyBzdGF0ZnMgcmV0dXJucyAxIGZvciBzdWNjZXNzLAotICAgMCBmb3Igbm90IG1vdW50ZWQsIC0xIGZvciBmYWlsdXJlLiAgKi8KLWV4aXQgKHN0YXRmcyAoIi4iLCAmZnNkKSAhPSAxKTsKLX1dLAotZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT15ZXMsCi1mdV9jdl9zeXNfc3RhdF9mc19kYXRhPW5vLAotZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YT1ubyldKQotQUNfTVNHX1JFU1VMVCgkZnVfY3Zfc3lzX3N0YXRfZnNfZGF0YSkKLWlmIHRlc3QgJGZ1X2N2X3N5c19zdGF0X2ZzX2RhdGEgPSB5ZXM7IHRoZW4KLSAgQUNfREVGSU5FKFNUQVRfU1RBVEZTX0ZTX0RBVEEpCi1maQotCi0jIGNoZWNrIGlmIGNvbXBpbGVyIHByZS1wcm9jZXNzb3IgZGVmaW5lcyBfX0ZVTkNUSU9OX18KLUFDX0NBQ0hFX0NIRUNLKGlmIF9fRlVOQ1RJT05fXyBpcyBkZWZpbmVkLGFjX2N2X0hBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQsCi1bCi1BQ19UUllfQ09NUElMRSgsWwotICAgIGNoYXIgKmNwID0gX19GVU5DVElPTl9fOwotXSwgYWNfY3ZfSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRD15ZXMsIGFjX2N2X0hBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQ9bm8pXSkKLQotaWYgdGVzdCAieCRhY19jdl9IQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVEIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRCkKLWZpCi0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBvbiBTQ08gVW5peHdhcmUgNy4xLjQgKFNDTyBjb21waWxlciksICJzdGF0aWMgaW5saW5lIiBmdW5jdGlvbnMKLSMgYXJlIG5vdCBzdXBwb3J0ZWQsIHNvIHRoaXMgZGlzYWJsZXMgdGhlIHdob2xlIGlubGluZSB0aGluZyBpZiBpdAotIyBkb2Vzbid0IHdvcmsgcHJvcGVybHkuIFNob3VsZCBoYXZlIG5vIGVmZmVjdCBvbiBvdGhlciBwbGF0Zm9ybXMuCi1BQ19DQUNIRV9DSEVDSyhbW3doZXRoZXIgc3RhdGljIGlubGluZSBmdW5jdGlvbnMgYXJlIGJyb2tlbiAoVW5peHdhcmUpXV0sCi0gICAgW25ldHNubXBfY3ZfY19icm9rZW5faW5saW5lXSwKLUFDX0NPTVBJTEVfSUZFTFNFKFtbCi1zdGF0aWMgaW5saW5lIGludCBuZXN0ZWRfaW5saW5lX2Z1bmN0aW9uKHZvaWQpIHsKLSAgcmV0dXJuIDA7Ci19Ci1pbmxpbmUgaW50IG1haW5faW5saW5lX2Z1bmN0aW9uKCB2b2lkICkgewotICByZXR1cm4gbmVzdGVkX2lubGluZV9mdW5jdGlvbigpOwotfQotXV0sIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT1ubywgbmV0c25tcF9jdl9icm9rZW5faW5saW5lPXllcykpCi0KLSMgQnV0LCBzYWRseSwgdGhlIHVzYWdlIG9mIGlubGluZSBpbiBORVRfU05NUCBkaXNhZ3JlZXMgc2VyaW91c2x5IHdpdGggYXQgbGVhc3QKLSMgc29sYXJpczIsIHNvIGRpc2FibGUgaXQgZm9yIG5vdy4KLWNhc2UgIiR0YXJnZXRfb3MiIGluCi0gICAgc29sYXJpcyopCi0gICAgICAgIG5ldHNubXBfY3ZfYnJva2VuX2lubGluZT15ZXMKLSAgICAgICAgOzsKLSAgICAqKQotICAgICAgICA7OwotZXNhYwotCi1pZiB0ZXN0ICIkbmV0c25tcF9jdl9icm9rZW5faW5saW5lIiA9IHllcyA7IHRoZW4KLSAgQUNfREVGSU5FKE5FVFNOTVBfQlJPS0VOX0lOTElORSwgMSwKLSAgICAgICAgW0RlZmluZSBpZiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBhcmUgdW5zdXBwb3J0ZWRdKQotZmkKLQotIyBvcGVuYnNkIHNlZW1zIHRvIGhhdmUgZHJvcHBlZCBtX2NsdXN0ZXJzIGFuZCBtX2NsZnJlZSBmcm9tIG1ic3RhdAotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfTUJVRl9ICi0jaW5jbHVkZSA8c3lzL21idWYuaD4KLSNlbmRpZgotXSwgbWJzdGF0LCBtX2NsdXN0ZXJzLCBubykKLQotIyBvcGVuYnNkIHNlZW1zIHRvIGhhdmUgZHJvcHBlZCBtX21idWZzIGZyb20gbWJzdGF0IHRvbwotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfTUJVRl9ICi0jaW5jbHVkZSA8c3lzL21idWYuaD4KLSNlbmRpZgotXSwgbWJzdGF0LCBtX21idWZzLCBubykKLQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+Ci1dLCBzaWdhY3Rpb24sIHNhX3NpZ2FjdGlvbiwgbm8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIFRJTUVfV0lUSF9TWVNfVElNRQotIyBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBpbmNsdWRlIDx0aW1lLmg+Ci0jZWxzZQotIyBpZiBIQVZFX1NZU19USU1FX0gKLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGVsc2UKLSMgIGluY2x1ZGUgPHRpbWUuaD4KLSMgZW5kaWYKLSNlbmRpZgotXSwgdG0sIHRtX2dtdG9mZiwgbm8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpbmNsdWRlIDxuZXQvaWYuaD4KLSNpZmRlZiBIQVZFX05FVF9JRl9WQVJfSAotI2luY2x1ZGUgPG5ldC9pZl92YXIuaD4KLSNlbmRpZgotXSwgaWZuZXQsIGlmX210dSkKLQotaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3RfaWZuZXRfaGFzX2lmX210dSIgPSAieG5vIjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0soaWYgX0tFUk5FTCBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBpZl9tdHUsIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTCwKLVsKLWlmIHRlc3QgIngkYWNfY3Zfc3RydWN0X2lmbmV0X2hhc19pZl9tdHUiID0gInh5ZXMiOyB0aGVuCi0gIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTD1ubwotZWxzZQotQUNfVFJZX0NPTVBJTEUoWwotI2RlZmluZSBfS0VSTkVMIDEKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaWZkZWYgSEFWRV9TWVNfVElNRV9ICi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbmRpZgotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2lmZGVmIEhBVkVfTkVUX0lGX1ZBUl9ICi0jaW5jbHVkZSA8bmV0L2lmX3Zhci5oPgotI2VuZGlmCi1dLFsKLXN0cnVjdCBpZm5ldCB0ZXN0aXQ7Ci10ZXN0aXQuaWZfbXR1ID0gMDsKLV0sIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTD15ZXMsIGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTD1ubykKLWZpCi1dKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X0lGTkVUX05FRURTX0tFUk5FTCIgPSAieHllcyI7IHRoZW4KLSAgQUNfREVGSU5FKElGTkVUX05FRURTX0tFUk5FTCkKLWZpCi1maQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLV0sIHNvY2thZGRyLCBzYV9sZW4sIG5vKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLV0sIHNvY2thZGRyLCBzYV91bmlvbi5zYV9nZW5lcmljLnNhX2ZhbWlseTIsIG5vKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TT0NLRVRfSAotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNlbmRpZgotXSwgc29ja2FkZHJfc3RvcmFnZSwgc3NfZmFtaWx5LCBubykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLV0sIHNvY2thZGRyX3N0b3JhZ2UsIF9fc3NfZmFtaWx5LCBubykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgcnRlbnRyeSwgcnRfZHN0LCBubykKLQotIyBjaGVja2luZyBmb3IgNC4zIHZzIDQuNCBydGVudHJ5LgotQUNfQ0FDSEVfQ0hFQ0sodHlwZSBvZiBydGVudHJ5IHN0cnVjdHVyZSxhY19jdl9SVEVOVFJZX1RZUEUsCi1bCi0KLSMgNC40IGNvbXBhdAotQUNfVFJZX0NPTVBJTEUoWwotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmZGVmIElGTkVUX05FRURTX0tFUk5FTAotI2RlZmluZSBLRVJORUwKLSNpZiAhZGVmaW5lZChfX0RyYWdvbkZseV9fKQotI2RlZmluZSBfS0VSTkVMIDEKLSNlbmRpZgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotI3VuZGVmIEtFUk5FTAotI3VuZGVmIF9LRVJORUwKLSNpbmNsdWRlIDxuZXQvcm91dGUuaD4KLV0sWwotCi0jaWZuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QKLSNkZWZpbmUgcnRfZHN0IHJ0X25vZGVzLT5ybl9rZXkKLSNlbmRpZgotCi0gIHN0cnVjdCBydGVudHJ5IHJ0OyAKLSAgcnQucnRfbm9kZXNbMF0ucm5fZmxhZ3MgPSAxOwotICBydC5ydF9kc3Q7Ci0gIF0sIGFjX2N2X1JURU5UUllfVFlQRT0iQlNELTQuNCIpCi0KLSMgNC4zIGNvbXBhdAotaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gIngiOyB0aGVuCi1BQ19UUllfQ09NUElMRShbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSxbCi1zdHJ1Y3QgcnRlbnRyeSBydDsgCi1ydC5ydF9oYXNoOwotXSwgYWNfY3ZfUlRFTlRSWV9UWVBFPSJCU0QtNC4zIikKLWZpCi0KLSMgZWxzZSBhY2suCi1pZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieCI7IHRoZW4KLSAgQUNfTVNHX1JFU1VMVChVbmtub3duKQotICBhY19jdl9SVEVOVFJZX1RZUEU9InVua25vd24iCi1maQotCi1dKQotCi1pZiB0ZXN0ICJ4JGFjX2N2X1JURU5UUllfVFlQRSIgPSAieEJTRC00LjQiOyB0aGVuCi0gIEFDX0RFRklORShSVEVOVFJZXzRfNCkKLWZpCi0KLSMgY2hlY2tpbmcgZm9yIGFscGhhJ3Mgb3J0ZW50cnkgdnMgcnRlbnRyeQotaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gInh1bmtub3duIjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0soZm9yIHN0cnVjdCBydGVudHJ5LCBhY19jdl9zdHJ1Y3RfcnRlbnRyeSwKLVtBQ19FR1JFUF9DUFAob3J0ZW50cnksIFsjZGVmaW5lIEtFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgIGFjX2N2X3N0cnVjdF9ydGVudHJ5PW9ydGVudHJ5LCAgYWNfY3Zfc3RydWN0X3J0ZW50cnk9cnRlbnRyeSApCi1pZiB0ZXN0ICJ4JGFjX2N2X3N0cnVjdF9ydGVudHJ5IiA9ICJ4cnRlbnRyeSIgOyB0aGVuCi0gIGFjX2N2X3N0cnVjdF9ydGVudHJ5PSJydGVudHJ5IgotZWxzZQotICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0ib3J0ZW50cnkiCi1maQotXSkKLWVsc2UKLSAgUlRFTlRSWV9UWVBFPSJydGVudHJ5IgotICBhY19jdl9zdHJ1Y3RfcnRlbnRyeT0icnRlbnRyeSIKLWZpCi0KLWlmIHRlc3QgIngkYWNfY3Zfc3RydWN0X3J0ZW50cnkiICE9ICJ4IjsgdGhlbgotICBBQ19ERUZJTkVfVU5RVU9URUQoUlRFTlRSWSxzdHJ1Y3QgJHthY19jdl9zdHJ1Y3RfcnRlbnRyeX0pCi1lbHNlCi0gIEFDX0RFRklORShSVEVOVFJZLHN0cnVjdCBydGVudHJ5KQotZmkKLQotIyBjaGVjayBmb3IgNC4zJ3MgcnRlbnRyeS0+cnRfbmV4dAotaWYgdGVzdCAieCRhY19jdl9SVEVOVFJZX1RZUEUiID0gInhCU0QtNC4zIjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0soZm9yIHN0cnVjdCBydGVudHJ5IGhhcyBhIHJ0X25leHQgbm9kZSwgCi0JYWNfY3Zfc3RydWN0X3J0ZW50cnlfcnRfbmV4dCwKLVsKLUFDX1RSWV9DT01QSUxFKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLFsKLXN0cnVjdCBydGVudHJ5IHJ0OyAKLXJ0LnJ0X25leHQ7Ci1dLCBhY19jdl9zdHJ1Y3RfcnRlbnRyeV9ydF9uZXh0PXllcywgIGFjX2N2X3N0cnVjdF9ydGVudHJ5X3J0X25leHQ9bm8gKQotXSkKLQotaWYgdGVzdCAieCRhY19jdl9zdHJ1Y3RfcnRlbnRyeV9ydF9uZXh0IiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoUlRFTlRSWV9SVF9ORVhUKQotZmkKLQotZmkKLQotIyBDaGVjayBzaW42X3Njb3BlX2lkIG1lbWJlciBzcGVjaWZpZWQgaW4gUkZDMjU1MyBhZGRpdGlvbmFsbHkKLUFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzb2NrYWRkcl9pbjYuc2luNl9zY29wZV9pZF0sLCxbCi1BQ19JTkNMVURFU19ERUZBVUxUKCkKLVsjaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfU09DS0VUX0gKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotXV0pCi0KLSMgQ2hlY2sgc3RydWN0IHJ0ZW50cnkgZm9yIHZhcmlvdXMgdGhpbmdzLgotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgcnRlbnRyeSwgcnRfdW5pdCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSUZORVRfTkVFRFNfS0VSTkVMCi0jZGVmaW5lIEtFUk5FTAotI2lmICFkZWZpbmVkKF9fRHJhZ29uRmx5X18pCi0jZGVmaW5lIF9LRVJORUwgMQotI2VuZGlmCi0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jdW5kZWYgS0VSTkVMCi0jdW5kZWYgX0tFUk5FTAotI2luY2x1ZGUgPG5ldC9yb3V0ZS5oPgotXSwgcnRlbnRyeSwgcnRfcmVmY250KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCBydGVudHJ5LCBydF9oYXNoKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSN1bmRlZiBLRVJORUwKLSN1bmRlZiBfS0VSTkVMCi0jaW5jbHVkZSA8bmV0L3JvdXRlLmg+Ci1dLCBydGVudHJ5LCBydF91c2UpCi0KLSMgQ2hlY2sgdGNwc3RhdCBmb3IgdGNwc3RhdC50Y3BfcmN2bWVtZHJvcAotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWZkZWYgSEFWRV9TWVNfVElNRU9VVF9ICi0jaW5jbHVkZSA8c3lzL3RpbWVvdXQuaD4KLSNlbmRpZgotI2luY2x1ZGUgPG5ldGluZXQvdGNwLmg+Ci0jaWZkZWYgSEFWRV9ORVRJTkVUX1RDUF9USU1FUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC90Y3BfdGltZXIuaD4KLSNlbmRpZgotCi0jaWZkZWYgSEFWRV9ORVRJTkVUX1RDUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvdGNwX3Zhci5oPgotI2VuZGlmCi1dLCB0Y3BzdGF0LCB0Y3BfcmN2bWVtZHJvcCkKLQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLSNkZWZpbmUgS0VSTkVMCi0jaWYgIWRlZmluZWQoX19EcmFnb25GbHlfXykKLSNkZWZpbmUgX0tFUk5FTCAxCi0jZW5kaWYKLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNlbmRpZgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KLSNpZmRlZiBIQVZFX1NZU19USU1FX0gKLSNpbmNsdWRlIDxzeXMvdGltZS5oPgotI2VuZGlmCi0jaW5jbHVkZSA8bmV0L2lmLmg+Ci0jaWZkZWYgSEFWRV9ORVRfSUZfVkFSX0gKLSNpbmNsdWRlIDxuZXQvaWZfdmFyLmg+Ci0jZW5kaWYKLV0sIGlmYWRkciwgaWZhX25leHQpCi0KLSMgQ2hlY2sgaWZuZXQgZW50cmllcyB1c2luZyBtYWNybyBkZWZpbmVkIGluIGFjbG9jYWwubTQuCi0jCi0jIFhYWCAgQnJva2VuIG9uIEZyZWVCU0Qgd2hlcmUgdGhlc2UgYXJlICNkZWZpbmUnZCBpbiA8bmV0L2lmLmg+Ci0jCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfYmF1ZHJhdGUpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfYmF1ZHJhdGUuaWZzX3ZhbHVlKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX3NwZWVkKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX3R5cGUpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfaW1jYXN0cykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9pcWRyb3BzKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX25vcHJvdG8pCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfb21jYXN0cykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl94bmFtZSxubykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9sYXN0Y2hhbmdlLnR2X3NlYykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9sYXN0Y2hhbmdlLnR2X25zZWMpCi1BQ19DSEVDS19JRk5FVF9GT1IoaWZfb2J5dGVzKQotQUNfQ0hFQ0tfSUZORVRfRk9SKGlmX2lieXRlcykKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9hZGRybGlzdCkKLUFDX0NIRUNLX0lGTkVUX0ZPUihpZl9hZGRyaGVhZC50cWhfZmlyc3QpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+Ci0jZW5kaWYKLV0sdWRwc3RhdCx1ZHBzX2Rpc2NhcmQpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+Ci0jZW5kaWYKLV0sdWRwc3RhdCx1ZHBzX25vcG9ydCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX1VEUF9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHAuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L3VkcF92YXIuaD4KLSNlbmRpZgotXSx1ZHBzdGF0LHVkcHNfbm9wb3J0YmNhc3QpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9VRFBfSAotI2luY2x1ZGUgPG5ldGluZXQvdWRwLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfVURQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC91ZHBfdmFyLmg+Ci0jZW5kaWYKLV0sdWRwc3RhdCx1ZHBzX2Z1bGxzb2NrKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0jaWZkZWYgSEFWRV9TWVNfVElNRV9ICi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSNlbmRpZgotI2luY2x1ZGUgPG5ldC9pZi5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lGX0VUSEVSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+Ci0jZW5kaWYKLV0sYXJwaGQsYXRfbmV4dCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWYgSEFWRV9TWVNfVFlQRVNfSAotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfQ09ORl9ICi0jaW5jbHVkZSA8c3lzL2NvbmYuaD4KLSNlbmRpZgotXSxzd2RldnQsc3dfbmJsa3NlbmFibGVkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFUVkZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2VuZGlmCi1dLHN0YXR2ZnMsbW50X2RpcikKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVFZGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KLSNlbmRpZgotXSxzdGF0dmZzLGZfZnJzaXplKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFUVkZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdHZmcy5oPgotI2VuZGlmCi1dLHN0YXRmcyxmX2Zyc2l6ZSkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVFZGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXR2ZnMuaD4KLSNlbmRpZgotXSxzdGF0dmZzLGZfZmlsZXMpCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2lmZGVmIEhBVkVfU1lTX1NUQVRfSAotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0jZW5kaWYKLSNpZiBIQVZFX1NZU19TVEFURlNfSAotI2luY2x1ZGUgPHN5cy9zdGF0ZnMuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKLSNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNlbmRpZgotI2lmZGVmIEhBVkVfU1lTX01PVU5UX0gKLSNpbmNsdWRlIDxzeXMvbW91bnQuaD4KLSNlbmRpZgotXSxzdGF0ZnMsZl9maWxlcykKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaWZkZWYgSEFWRV9TWVNfU1RBVF9ICi0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNlbmRpZgotI2lmIEhBVkVfU1lTX1NUQVRGU19ICi0jaW5jbHVkZSA8c3lzL3N0YXRmcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfUEFSQU1fSAotI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWZkZWYgSEFWRV9TWVNfTU9VTlRfSAotI2luY2x1ZGUgPHN5cy9tb3VudC5oPgotI2VuZGlmCi1dLHN0YXRmcyxmX2ZmcmVlKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZmRlZiBIQVZFX1NZU19TVEFUX0gKLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2VuZGlmCi0jaWYgSEFWRV9TWVNfU1RBVEZTX0gKLSNpbmNsdWRlIDxzeXMvc3RhdGZzLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19QQVJBTV9ICi0jaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZmRlZiBIQVZFX1NZU19NT1VOVF9ICi0jaW5jbHVkZSA8c3lzL21vdW50Lmg+Ci0jZW5kaWYKLV0sc3RhdGZzLGZfZmF2YWlsKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX05MSVNUX0gKLSNpbmNsdWRlIDxubGlzdC5oPgotI2VuZGlmCi1dLG5saXN0LG5fdmFsdWUpCi0KLSMgc3RydWN0IG5saXN0NjQgKElSSVgpCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpZiBIQVZFX1NZU19UWVBFU19ICi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05MSVNUX0gKLSNpbmNsdWRlIDxubGlzdC5oPgotI2VuZGlmCi1dLG5saXN0NjQsIG5fdmFsdWUpCi0KLSMgc3RydWN0IGV0aHRvb2xfY21kCi1BQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3QgZXRodG9vbF9jbWQuc3BlZWRfaGldLCwsWwotICAgIEFDX0lOQ0xVREVTX0RFRkFVTFQoKQotICAgIFsKLSNpZmRlZiBIQVZFX0xJTlVYX0VUSFRPT0xfSAotI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KLSNlbmRpZgotICAgIF1dKQotCi0jIGNoZWNrIHN0cnVjdCBpcHN0YXQgZm9yIHZhcmlvdXMgdGhpbmdzCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2NhbnRmb3J3YXJkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2NhbnRmcmFnKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2RlbGl2ZXJlZCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19mcmFnZHJvcHBlZCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19mcmFndGltZW91dCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19mcmFnbWVudGVkKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX2xvY2Fsb3V0KQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX25vcHJvdG8pCi0KLUFDX0NIRUNLX1NUUlVDVF9GT1IoWwotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCi0jaWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pcF92YXIuaD4KLSNlbmRpZgotXSwgaXBzdGF0LCBpcHNfbm9yb3V0ZSkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19vZHJvcHBlZCkKLQotQUNfQ0hFQ0tfU1RSVUNUX0ZPUihbCi0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaWYgSEFWRV9ORVRJTkVUX0lOX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2luLmg+Ci0jZW5kaWYKLSNpZiBIQVZFX05FVElORVRfSVBfVkFSX0gKLSNpbmNsdWRlIDxuZXRpbmV0L2lwX3Zhci5oPgotI2VuZGlmCi1dLCBpcHN0YXQsIGlwc19vZnJhZ21lbnRzKQotCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX05FVElORVRfSU5fSAotI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLSNlbmRpZgotI2lmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSAotI2luY2x1ZGUgPG5ldGluZXQvaXBfdmFyLmg+Ci0jZW5kaWYKLV0sIGlwc3RhdCwgaXBzX3JlYXNzZW1ibGVkKQotCi0jIGNoZWNrIGZvciB0aGUgZGVzX2tzX3N0cnVjdC53ZWFrX2tleSBhdHRyaWJ1dGUsIHdoaWNoIGluZGljYXRlcyB0aGUgCi0jIG9sZGVyIG9wZW5zc2wgdmVyc2lvbiBpcyBiZWluZyB1c2VkLgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfb3BlbnNzbF9kZXNfaCIgPSAieHllcyIgOyB0aGVuCi1BQ19DSEVDS19TVFJVQ1RfRk9SKFsKLSNpbmNsdWRlIDxvcGVuc3NsL2Rlcy5oPgotXSwgZGVzX2tzX3N0cnVjdCwgd2Vha19rZXkpCi1maQotCi0jIGF0dGVtcHQgdG8gZmlndXJlIG91dCBpZiBzeXNjdGwgaXMgdXNhYmxlCi0KLWlmIHRlc3QgJGNyb3NzX2NvbXBpbGluZyA9IHllczsgdGhlbgotICBBQ19NU0dfV0FSTihbQ2FuJ3QgY2hlY2sgc3lzY3RsLCBtYW51YWxseSBkZWZpbmUgTkVUU05NUF9DQU5fVVNFX1NZU0NUTCBpZiBwbGF0Zm9ybSBzdXBwb3J0IGF2YWlsYWJsZV0pCi1lbHNlCi0gIEFDX0NBQ0hFX0NIRUNLKGlmIHN5c2N0bCBjYW4gcmVhZCBrZXJuZWwgaW5mb3JtYXRpb24sYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTCwKLSAgW0FDX1RSWV9SVU4oWwotI2lmIFRJTUVfV0lUSF9TWVNfVElNRQotIyBpbmNsdWRlIDxzeXMvdGltZS5oPgotIyBpbmNsdWRlIDx0aW1lLmg+Ci0jZWxzZQotIyBpZiBIQVZFX1NZU19USU1FX0gKLSMgIGluY2x1ZGUgPHN5cy90aW1lLmg+Ci0jIGVsc2UKLSMgIGluY2x1ZGUgPHRpbWUuaD4KLSMgZW5kaWYKLSNlbmRpZgotI2lmIEhBVkVfU1lTX1BBUkFNX0gKLSMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0jZW5kaWYKLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpZiBIQVZFX1NZU19TWVNDVExfSAotIyBpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0jZW5kaWYKLQotbWFpbigpIHsKLSAgaW50ICAgICAgICAgICAgICAgICBtaWJbMl07Ci0gIHNpemVfdCAgICAgICAgICAgICAgbGVuOwotICBzdHJ1Y3QgdGltZXZhbCBib290dGltZTsKLSAgCi0gIG1pYlswXSA9IENUTF9LRVJOOwotICBtaWJbMV0gPSBLRVJOX0JPT1RUSU1FOwotICAKLSAgbGVuID0gc2l6ZW9mKGJvb3R0aW1lKTsKLSAgc3lzY3RsKG1pYiwgMiwgJmJvb3R0aW1lLCAmbGVuLCBOVUxMLCBOVUxMKTsKLSAgaWYgKGJvb3R0aW1lLnR2X3NlYyAhPSAwKQotICAgIGV4aXQoMCk7Ci0gIGVsc2UKLSAgICBleGl0KDEpOwotfQotICBdLCBhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMPXllcywgYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTD1ubywgYWNfY3ZfTkVUU05NUF9DQU5fVVNFX1NZU0NUTD1ubyldKQotZmkKLQotaWYgdGVzdCAieCRhY19jdl9ORVRTTk1QX0NBTl9VU0VfU1lTQ1RMIiA9ICJ4eWVzIjsgdGhlbgotICBBQ19ERUZJTkUoTkVUU05NUF9DQU5fVVNFX1NZU0NUTCkKLWZpCi0KLSMKLSMgSW4gRnJlZUJTRCA0LngsIHRoZSBUQ1AgdGltZXIgY29uc3RhbnRzIGFyZW4ndC4gIFRoZXkgYXJlIGRlZmluZWQKLSMgaW4gdGVybXMgb2YgJ2h6JywgdGhlIGtlcm5lbCBjbG9jayB0aWNrLiAgSW4gdGhpcyBjYXNlLAotIyB3ZSBuZWVkIHRvIGhhdmUgYSBsb2NhbCB2YXJpYWJsZSAnaHonIGluIHNjb3BlIGFuZCBzZXQgdG8gYSB1c2VmdWwKLSMgdmFsdWUgd2hlbmV2ZXIgd2UgdXNlIG9uZSBvZiB0aGVzZSBjb25zdGFudHMuCi0jCi1BQ19DQUNIRV9DSEVDSyh3aGV0aGVyIFRDUCB0aW1lcnMgZGVwZW5kIG9uICdoeicsYWNfY3ZfVENQVFZfTkVFRFNfSFosCi1bQUNfRUdSRVBfQ1BQKGh6LAotWyNpbmNsdWRlIDxuZXRpbmV0L3RjcF90aW1lci5oPgotVENQVFZfU1JUVERGTFQKLV0sIGFjX2N2X1RDUFRWX05FRURTX0haPXllcywgYWNfY3ZfVENQVFZfTkVFRFNfSFo9bm8pXSkKLQotaWYgdGVzdCAieCRhY19jdl9UQ1BUVl9ORUVEU19IWiIgPSAieHllcyI7IHRoZW4KLSAgQUNfREVGSU5FKFRDUFRWX05FRURTX0haKQotZmkKLQotIwotIyBkZWZpbmUgdGhlIGFnZW50IGxpYnJhcmllcyB2YXJpYWJsZXMKLSMKLUFDX1NVQlNUKExNSUJMSUJTKQotQUNfU1VCU1QoQUdFTlRMSUJTKQotQUNfU1VCU1QoT1RIRVJBR0VOVExJQk9CSlMpCi1BQ19TVUJTVChPVEhFUkFHRU5UTElCTE9CSlMpCi0KLSMKLSMgUHJvbXB0IGZvciB2YXJpb3VzIGJpdHMgb2YgdXNlciBpbmZvcm1hdGlvbgotIwotCi1pZiB0ZXN0ICJ4JGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfTE9HRklMRSIgPSAieCIgLW8gIngkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9TWVNfTE9DIiA9ICJ4IiAtbyAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1NZU19DT05UQUNUIiA9ICJ4IiAtbyAieCRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX0RFRkFVTFRfU05NUF9WRVJTSU9OIiA9ICJ4IjsgdGhlbgotQUNfQ0FDSEVfQ0hFQ0sod2hldGhlciB0byBwcm9tcHQgZm9yIHZhbHVlcywgYWNfY3ZfaGF2ZV93YXJuZWQsCi1bCi1pZiB0ZXN0ICJ4JGRlZmF1bHRzIiA9ICJ4bm8iOyB0aGVuCi1jYXQgPDwgRU9GCi0KLQkgKioqKioqKioqKioqKiogQ29uZmlndXJhdGlvbiBTZWN0aW9uICoqKioqKioqKioqKioqCi0KLQlZb3UgYXJlIGFib3V0IHRvIGJlIHByb21wdGVkIHdpdGggYSBzZXJpZXMgb2YgcXVlc3Rpb25zLiAgQW5zd2VyCi10aGVtIGNhcmVmdWxseSwgYXMgdGhleSBkZXRlcm1pbmUgaG93IHRoZSBTTk1QIGFnZW50IGFuZCByZWxhdGVkCi1hcHBsaWNhdGlvbnMgYXJlIHRvIGZ1bmN0aW9uLgotCi0JQWZ0ZXIgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZmluaXNoZXMsIHlvdSBjYW4gYnJvd3NlIHRoZSBuZXdseQotY3JlYXRlZCBuZXQtc25tcC1jb25maWcuaCBmaWxlIGZvciBmdXJ0aGVyIC0gbGVzcyBpbXBvcnRhbnQgLSBwYXJhbWV0ZXJzIHRvCi1tb2RpZnkuICBCZSBjYXJlZnVsIGlmIHlvdSByZS1ydW4gY29uZmlndXJlIHRob3VnaCwgc2luY2UgbmV0LXNubXAtY29uZmlnLmggCi13aWxsIGJlIG92ZXJ3cml0dGVuLgotCi0tUHJlc3MgcmV0dXJuIHRvIGNvbnRpbnVlLQotRU9GCi0KLXJlYWQgdG1waW5wdXQKLWFjX2N2X2hhdmVfd2FybmVkPSJ5ZXMiCi1lbHNlCi0gIGFjX2N2X2hhdmVfd2FybmVkPSJubyIKLWZpCi1dKQotZWxzZQotICBhY19jdl9oYXZlX3dhcm5lZD0ieWVzIgotZmkKLQotTUU9YCRXSE9BTUlgCi1pZiB0ZXN0IC1mIC9ldGMvcmVzb2x2LmNvbmY7IHRoZW4KLSAgTE9DPWBjYXQgL2V0Yy9yZXNvbHYuY29uZiB8IGdyZXAgJ15kb21haW4nIHwgdGFpbCAtMSB8IGF3ayAne3ByaW50ICRORn0nYAotZWxzZQotICBMT0M9IkBuby53aGVyZSIKLWZpCi0KLUFDX1BST01QVF9VU0VSKE5FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04sWwotCi0qKiogRGVmYXVsdCBTTk1QIFZlcnNpb246Ci0KLQlTdGFydGluZyB3aXRoIE5ldC1TTk1QIDUuMCwgeW91IGNhbiBjaG9vc2UgdGhlIGRlZmF1bHQgdmVyc2lvbiBvZgotdGhlIFNOTVAgcHJvdG9jb2wgdG8gdXNlIHdoZW4gbm8gdmVyc2lvbiBpcyBnaXZlbiBleHBsaWNpdGx5IG9uIHRoZQotY29tbWFuZCBsaW5lLCBvciB2aWEgYW4gJ3NubXAuY29uZicgZmlsZS4gIEluIHRoZSBwYXN0IHRoaXMgd2FzIHNldCB0bwotU05NUHYxLCBidXQgeW91IGNhbiB1c2UgdGhpcyB0byBzd2l0Y2ggdG8gU05NUHYzIGlmIGRlc2lyZWQuICBTTk1QdjMKLXdpbGwgcHJvdmlkZSBhIG1vcmUgc2VjdXJlIG1hbmFnZW1lbnQgZW52aXJvbm1lbnQgKGFuZCB0aHVzIHlvdSdyZQotZW5jb3VyYWdlZCB0byBzd2l0Y2ggdG8gU05NUHYzKSwgYnV0IG1heSBicmVhayBleGlzdGluZyBzY3JpcHRzIHRoYXQKLXJlbHkgb24gdGhlIG9sZCBiZWhhdmlvdXIuICAoVGhvdWdoIHN1Y2ggc2NyaXB0cyB3aWxsIHByb2JhYmx5IG5lZWQgdG8KLWJlIGNoYW5nZWQgdG8gdXNlIHRoZSAnLWMnIGNvbW11bml0eSBmbGFnIGFueXdheSwgYXMgdGhlIFNOTVB2MQotY29tbWFuZCBsaW5lIHVzYWdlIGhhcyBjaGFuZ2VkIGFzIHdlbGwuKS4KLSAgIEF0IHRoaXMgcHJvbXB0IHlvdSBjYW4gc2VsZWN0IFwiMVwiLCBcIjJcIiAoZm9yIFNOTVB2MmMpLCBvciBcIjNcIiBhcwotdGhlIGRlZmF1bHQgdmVyc2lvbiBmb3IgdGhlIGNvbW1hbmQgdG9vbHMgKHNubXBnZXQsIC4uLikgdG8gdXNlLiAgVGhpcwotY2FuIGFsd2F5cyBiZSBvdmVycmlkZGVuIGF0IHJ1bnRpbWUgdXNpbmcgdGhlIC12IGZsYWcgdG8gdGhlIHRvb2xzLCBvcgotYnkgdXNpbmcgdGhlIFwiZGVmVmVyc2lvblwiIHRva2VuIGluIHlvdXIgc25tcC5jb25mIGZpbGUuCi0gICBQcm92aWRpbmcgdGhlIC0td2l0aC1kZWZhdWx0LXNubXAtdmVyc2lvbj1cInhcIiBwYXJhbWV0ZXIgdG8gLi9jb25maWd1cmUKLXdpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCi0KLURlZmF1bHQgdmVyc2lvbiBvZiBTTk1QIHRvIHVzZV0sMyx1bnF1b3RlZCkKLQotIyB3ZSB0ZXN0ZWQgdGhpcyBhYm92ZSBiZWZvcmUgdGhlIHByb21wdCwgYnV0IHRoZSBwcm9tcHQgbWF5IGdpdmUgYSBuZXcgdmFsdWUuCi1pZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTiIgPSAiMmMiOyB0aGVuCi0gIGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT049IjIiCi1maQotaWYgdGVzdCAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iICE9ICIxIiAtYSAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iICE9ICIyIiAtYSAiJGFjX2N2X3VzZXJfcHJvbXB0X05FVFNOTVBfREVGQVVMVF9TTk1QX1ZFUlNJT04iICE9ICIzIjsgdGhlbgotICBBQ19NU0dfRVJST1IoW0lsbGVnYWwgdmVyc2lvbiBudW1iZXIuICBPbmx5IDEsIDIgKGZvciBTTk1QdjJjKSBhbmQgMyBhcmUgc3VwcG9ydGVkLl0pCi1maQotCi1BQ19QUk9NUFRfVVNFUihORVRTTk1QX1NZU19DT05UQUNULFsKLQotKioqIFN5c3RlbSBDb250YWN0IEluZm9ybWF0aW9uOgotCi0JRGVzY3JpYmVzIHdobyBzaG91bGQgYmUgY29udGFjdGVkIGFib3V0IHRoZSBob3N0IHRoZSBhZ2VudCBpcwotcnVubmluZyBvbi4gIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGluIHRoZSBNSUItSUkgdHJlZS4gIFRoaXMKLWNhbiBhbHNvIGJlIG92ZXItcmlkZGVuIHVzaW5nIHRoZSBcInN5c2NvbnRhY3RcIiBzeW50YXggaW4gdGhlIGFnZW50J3MKLWNvbmZpZ3VyYXRpb24gZmlsZXMuCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLXN5cy1jb250YWN0PVwiY29udGFjdFwiIHBhcmFtZXRlciB0byAuL2NvbmZpZ3VyZQotd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotU3lzdGVtIENvbnRhY3QgSW5mb3JtYXRpb25dLCRNRUAkTE9DLHF1b3RlZCkKLQotQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9TWVNfTE9DLFsKLQotKioqIFN5c3RlbSBMb2NhdGlvbjoKLQotCURlc2NyaWJlcyB0aGUgbG9jYXRpb24gb2YgdGhlIHN5c3RlbS4gIFRoaXMgaW5mb3JtYXRpb24gaXMKLWF2YWlsYWJsZSBpbiB0aGUgTUlCLUlJIHRyZWUuICB0aGlzIGNhbiBhbHNvIGJlIG92ZXItcmlkZGVuIHVzaW5nIHRoZQotXCJzeXNsb2NhdGlvblwiIHN5bnRheCBpbiB0aGUgYWdlbnQncyBjb25maWd1cmF0aW9uIGZpbGVzLgotICBQcm92aWRpbmcgdGhlIC0td2l0aC1zeXMtbG9jYXRpb249XCJsb2NhdGlvblwiIHBhcmFtZXRlciB0byAuL2NvbmZpZ3VyZQotd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotU3lzdGVtIExvY2F0aW9uXSxVbmtub3duLHF1b3RlZCkKLQotaWYgdGVzdCAtZCAvdmFyL2xvZzsgdGhlbgotICBkZWZhdWx0bG9nPSIvdmFyL2xvZy9zbm1wZC5sb2ciCi1lbHNlCi0gIGRlZmF1bHRsb2c9Ii91c3IvYWRtL3NubXBkLmxvZyIKLWZpCi0gIAotQUNfUFJPTVBUX1VTRVIoTkVUU05NUF9MT0dGSUxFLFsKLQotKioqIExvZ2ZpbGUgbG9jYXRpb246Ci0KLQlFbnRlciB0aGUgZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGhlIHNubXBkIGFnZW50IHRvIGR1bXAKLWluZm9ybWF0aW9uICYgZXJyb3JzIHRvLiAgSWYgbm90IGRlZmluZWQgKGVudGVyIHRoZSBrZXl3b3JkIFwibm9uZVwiCi1hdCB0aGUgcHJvbXB0IGJlbG93KSB0aGUgYWdlbnQgd2lsbCB1c2Ugc3Rkb3V0IGFuZCBzdGRlcnIgaW5zdGVhZC4KLShOb3RlOiBUaGlzIHZhbHVlIGNhbiBiZSBvdmVyLXJpZGRlbiB1c2luZyBjb21tYW5kIGxpbmUgb3B0aW9ucy4pCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLWxvZ2ZpbGU9XCJwYXRoXCIgcGFyYW1ldGVyIHRvIC4vY29uZmlndXJlCi13aWxsIGF2b2lkIHRoaXMgcHJvbXB0LgotCi1Mb2NhdGlvbiB0byB3cml0ZSBsb2dmaWxlXSwkZGVmYXVsdGxvZyxxdW90ZWQpCi0KLWlmIHRlc3QgLWQgL3ZhcjsgdGhlbgotICBkZWZhdWx0c3RvcmU9Ii92YXIvbmV0LXNubXAiCi0gIHVjZGRlZmF1bHRzdG9yZT0iL3Zhci91Y2Qtc25tcCIKLWVsc2UKLSAgZGVmYXVsdHN0b3JlPSIvZXRjL25ldC1zbm1wIgotICB1Y2RkZWZhdWx0c3RvcmU9Ii9ldGMvdWNkLXNubXAiCi1maQotICAKLUFDX1BST01QVF9VU0VSKE5FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlksWwotCi0qKiogc25tcGQgcGVyc2lzdGVudCBzdG9yYWdlIGxvY2F0aW9uOgotCi0JRW50ZXIgYSBkaXJlY3RvcnkgZm9yIHRoZSBTTk1QIGxpYnJhcnkgdG8gc3RvcmUgcGVyc2lzdGVudAotZGF0YSBpbiB0aGUgZm9ybSBvZiBhIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgZGVmYXVsdCBsb2NhdGlvbiBpcwotZGlmZmVyZW50IHRoYW4gdGhlIG9sZCBkZWZhdWx0IGxvY2F0aW9uICh3aGljaCB3YXMgZm9yIHVjZC1zbm1wKS4gIElmCi15b3Ugc3RheSB3aXRoIHRoZSBuZXcgcGF0aCwgSSdsbCBhc2sgeW91IGluIGEgc2Vjb25kIGlmIHlvdSB3aXNoIHRvCi1jb3B5IHlvdXIgZmlsZXMgb3ZlciB0byB0aGUgbmV3IGxvY2F0aW9uIChvbmNlIG9ubHkpLiAgSWYgeW91IHBpY2sKLXNvbWUgb3RoZXIgcGF0aCB0aGFuIHRoZSBkZWZhdWx0LCB5b3UnbGwgaGF2ZSB0byBjb3B5IHRoZW0geW91cnNlbGYuCi1UaGVyZSBpcyBub3RoaW5nIHdyb25nIHdpdGggcGlja2luZyB0aGUgb2xkIHBhdGggKCR1Y2RkZWZhdWx0c3RvcmUpIGlmCi15b3UnZCByYXRoZXIuCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLXBlcnNpc3RlbnQtZGlyZWN0b3J5PVwicGF0aFwiIHBhcmFtZXRlciB0bwotLi9jb25maWd1cmUgd2lsbCBhdm9pZCB0aGlzIHByb21wdC4KLQotTG9jYXRpb24gdG8gd3JpdGUgcGVyc2lzdGVudCBpbmZvcm1hdGlvbl0sJGRlZmF1bHRzdG9yZSxxdW90ZWQpCi0KLVBFUlNJU1RFTlRfRElSRUNUT1JZPSRhY19jdl91c2VyX3Byb21wdF9ORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZCi1BQ19TVUJTVChQRVJTSVNURU5UX0RJUkVDVE9SWSkKLVVDRFBFUlNJU1RFTlRfRElSRUNUT1JZPSR1Y2RkZWZhdWx0c3RvcmUKLUFDX1NVQlNUKFVDRFBFUlNJU1RFTlRfRElSRUNUT1JZKQotCi1pZiB0ZXN0ICRQRVJTSVNURU5UX0RJUkVDVE9SWSA9ICIkZGVmYXVsdHN0b3JlIiAtYSAtZCAiJHVjZGRlZmF1bHRzdG9yZSIgLWEgISAtZCAiJGRlZmF1bHRzdG9yZSIgOyB0aGVuCi1BQ19DQUNIRV9DSEVDSyhJZiB3ZSBzaG91bGQgY29weSB0aGUgb2xkIHBlcnNpc3RlbnQgZGlyZWN0b3J5LCBhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVMsCi1bCi1BQ19QUk9NUFRfVVNFUl9OT19ERUZJTkUoYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTLFsKLQotKioqIENvcHlpbmcgb2xkIHVjZC1zbm1wIHBlcnNpc3RlbnQgZmlsZXMgdG8gbmV0LXNubXAgcGVyc2lzdGVudCBkaXJlY3Rvcnk6Ci0KLQlXb3VsZCB5b3UgbGlrZSB0byBjb3B5IHRoZSBvbGRlciB1Y2Qtc25tcCBwZXJzaXN0ZW50IGZpbGVzCi1pbnRvIHlvdXIgbmV3IG5ldC1zbm1wIHBlcnNpc3RlbnQgZmlsZSBwYXRoPyAgVGhpcyB3aWxsIGZ1bmN0aW9uYWxseQotc2F2ZSBhbGwgeW91ciB1Y2Qtc25tcCBkYXRhIGFuZCBsZXQgaXQgYmUgdXNlZCB3aXRoaW4gdGhlIG5ldC1zbm1wCi10b29scy4gIFRoaXMgd2lsbCBvbmx5IGJlIGRvbmUgb25jZSB3aGVuIHlvdSBydW4gbWFrZSBpbnN0YWxsLiAgSWYgeW91Ci13aXNoIHRvIGRvIHRoaXMsIGVudGVyICJ5ZXMiIGF0IHRoZSBwcm9tcHQuCi0gIFByb3ZpZGluZyB0aGUgLS13aXRoLWNvcHktcGVyc2lzdGVudC1maWxlcz1cIm5vXCIgKG9yIFwieWVzXCIpCi1wYXJhbWV0ZXJzIHRvIC4vY29uZmlndXJlIHdpbGwgYXZvaWQgdGhpcyBwcm9tcHQuCi0KLUNvcHkgdWNkLXNubXAgZGF0YSBpbnRvIHRoZSBuZXQtc25tcCBkYXRhIGRpcmVjdG9yeV0sInllcyIpCi1dKQotZWxzZQotYWNfY3ZfdXNlcl9wcm9tcHRfQ09QWV9QRVJTSVNURU5UX0ZJTEVTPSJubyIKLWZpCi1DT1BZX1BFUlNJU1RFTlRfRklMRVM9IiRhY19jdl91c2VyX3Byb21wdF9DT1BZX1BFUlNJU1RFTlRfRklMRVMiCi1BQ19TVUJTVChDT1BZX1BFUlNJU1RFTlRfRklMRVMpCi0KLUFDX1NVQlNUKERMTElCUykKLQotQUNfQ09ORklHX0ZJTEVTKFtNYWtlZmlsZTpNYWtlZmlsZS50b3A6TWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQotQUNfQ09ORklHX0ZJTEVTKFtzbm1wbGliL01ha2VmaWxlOk1ha2VmaWxlLnRvcDpzbm1wbGliL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzOnNubXBsaWIvTWFrZWZpbGUuZGVwZW5kXSkKLUFDX0NPTkZJR19GSUxFUyhbYXBwcy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YXBwcy9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphcHBzL01ha2VmaWxlLmRlcGVuZF0pCi1BQ19DT05GSUdfRklMRVMoW2FwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGU6TWFrZWZpbGUudG9wOmFwcHMvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6YXBwcy9zbm1wbmV0c3RhdC9NYWtlZmlsZS5kZXBlbmRdKQotQUNfQ09ORklHX0ZJTEVTKFthZ2VudC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YWdlbnQvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXM6YWdlbnQvTWFrZWZpbGUuZGVwZW5kXSkKLUFDX0NPTkZJR19GSUxFUyhbYWdlbnQvaGVscGVycy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6YWdlbnQvaGVscGVycy9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphZ2VudC9oZWxwZXJzL01ha2VmaWxlLmRlcGVuZF0pCi1BQ19DT05GSUdfRklMRVMoW2FnZW50L21pYmdyb3VwL01ha2VmaWxlOk1ha2VmaWxlLnRvcDphZ2VudC9taWJncm91cC9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlczphZ2VudC9taWJncm91cC9NYWtlZmlsZS5kZXBlbmRdKQotQUNfQ09ORklHX0ZJTEVTKFtsb2NhbC9NYWtlZmlsZTpNYWtlZmlsZS50b3A6bG9jYWwvTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQotQUNfQ09ORklHX0ZJTEVTKFt0ZXN0aW5nL01ha2VmaWxlOk1ha2VmaWxlLnRvcDp0ZXN0aW5nL01ha2VmaWxlLmluXSkKLUFDX0NPTkZJR19GSUxFUyhbbWFuL01ha2VmaWxlOk1ha2VmaWxlLnRvcDptYW4vTWFrZWZpbGUuaW46TWFrZWZpbGUucnVsZXNdKQotQUNfQ09ORklHX0ZJTEVTKFttaWJzL01ha2VmaWxlOk1ha2VmaWxlLnRvcDptaWJzL01ha2VmaWxlLmluOk1ha2VmaWxlLnJ1bGVzXSkKLUFDX0NPTkZJR19GSUxFUyhbbmV0LXNubXAtY29uZmlnOm5ldC1zbm1wLWNvbmZpZy5pbl0sCi0JCVtjaG1vZCAreCBuZXQtc25tcC1jb25maWddKQotCi1BQ19DT05GSUdfQ09NTUFORFMoW2RlZmF1bHRdLCBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWgpCi0KLSMKLSMgcHJvdGVjdCBQQUNLQUdFXyogdmFyaWFibGVzCi0jCi1BSF9WRVJCQVRJTShbUEFDS0FHRV9CVUdSRVBPUlRdLFsvKiBEZWZpbmUgdG8gdGhlIGFkZHJlc3Mgd2hlcmUgYnVnIHJlcG9ydHMgZm9yIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgc2VudC4gKi8KLSNpZm5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKLSN1bmRlZiBQQUNLQUdFX0JVR1JFUE9SVAotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX05BTUVdLFsvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jaWZuZGVmIFBBQ0tBR0VfTkFNRQotI3VuZGVmIFBBQ0tBR0VfTkFNRQotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX1NUUklOR10sWy8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIGFuZCB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KLSNpZm5kZWYgUEFDS0FHRV9TVFJJTkcKLSN1bmRlZiBQQUNLQUdFX1NUUklORwotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX1RBUk5BTUVdLFsvKiBEZWZpbmUgdG8gdGhlIG9uZSBzeW1ib2wgc2hvcnQgbmFtZSBvZiB0aGlzIHBhY2thZ2UuICovCi0jaWZuZGVmIFBBQ0tBR0VfVEFSTkFNRQotI3VuZGVmIFBBQ0tBR0VfVEFSTkFNRQotI2VuZGlmXSkKLUFIX1ZFUkJBVElNKFtQQUNLQUdFX1ZFUlNJT05dLFsvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI2lmbmRlZiBQQUNLQUdFX1ZFUlNJT04KLSN1bmRlZiBQQUNLQUdFX1ZFUlNJT04KLSNlbmRpZl0pCi0KLUFDX09VVFBVVAotCi1BQ19NU0dfQ0FDSEVfRElTUExBWSgpCi0jIExvY2FsIFZhcmlhYmxlczoKLSMgbW9kZTogQXV0b2NvbmYKLSMgY29tbWVudC1zdGFydDogIiMiCi0jIEVuZDoKZGlmZiAtLWdpdCBhL2Rpc3QvTWFrZWZpbGUgYi9kaXN0L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YzhmODQKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L01ha2VmaWxlCkBAIC0wLDAgKzEsMTMzIEBACisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgJFNvdXJjZSQKKyMgJFJldmlzaW9uJAorIyAkRGF0ZSQKKyMgJEF1dGhvciQKKyMgJE5hbWUkCisjICRTdGF0ZSQKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisjIE1ha2VmaWxlIGZvciBnZW5lcmF0aW5nIHJwbSBwYWNrYWdlIGZpbGVzICgucnBtKSBmb3IgbmV0LXNubXAuCisKKyMgR05VICdtYWtlJy1zcGVjaWZpYyBmZWF0dXJlcyBhcmUgdXNlZCBpbiB0aGlzIG1ha2VmaWxlLgorIyBPdGhlciBtYWtlcyBtYXkgb3IgbWF5IG5vdCB3b3JrIHdpdGggaXQuCisjIFNlZSBodHRwOi8vd3d3LmdudS5vcmcvbWFudWFsL21ha2UvaW5kZXguaHRtbCBmb3IgZGV0YWlscy4KKworU0hFTEwgPSAvYmluL3NoCisKKyMgRGVmaW5lIHRoZSBSUE0gcGFja2FnZSBuYW1lCitOQU1FID0gbmV0LXNubXAKKworIyBEZWZpbmUgdGhlIGRlZmF1bHQgUlBNIHJlbGVhc2UgbnVtYmVyLiBTZXQgYnkgVmVyc2lvbi1NdW5nZS5wbAorVkVSU0lPTiA9IDUuNS4yCisKK1ZFUlNJT05fVEFHPWBlY2hvIEV4dC0kKFZFUlNJT04pIHwgc2VkICdzL1wuLy0vZzsnYAorCitXSVRIX1BFUkw9MQorRU1CRURfUEVSTD0xCisKKyMgRGVmaW5lIHRoZSBSUE0gYXJjaGl0ZWN0dXJlLCBpLmUuLCAncHBjJywgJ2kzODYnLCBldGMuCitBUkNIID0gYHVuYW1lIC1pYAorCisjIERpcmVjdG9yeSBzdHJ1Y3R1cmUgZXhwZWN0ZWQgYnkgJ3JwbScgcHJvZ3JhbQorUlBNX0JBU0UgOj0gJChQV0QpL3JwbQorCitSUE1fVFJFRSA6PSBcCisgICAgJChSUE1fQkFTRSkvQlVJTEQgXAorICAgICQoUlBNX0JBU0UpL1JQTVMgXAorICAgICQoUlBNX0JBU0UpL1NPVVJDRVMgXAorICAgICQoUlBNX0JBU0UpL1NQRUNTIFwKKyAgICAkKFJQTV9CQVNFKS9TUlBNUworCisuUEhPTlk6CWFsbCBjbGVhbiBycG1fZmlsZXMgYmluYXJ5X3JwbSBzb3VyY2VfcnBtIGFsbF9ycG0KKworYWxsOglhbGxfcnBtX2ZpbGVzCisKKyMgRGVsZXRlIGFsbCBnZW5lcmF0ZWQgZmlsZXMuCitjbGVhbjoKKwlybSAtcmYgJChSUE1fQkFTRSkKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNYWNyb3MgYW5kIHJ1bGVzIGZvciB1cGRhdGluZyBuZXQtc25tcC14LngueC50YXIuZ3ouCisjICdycG0nIGV4cGVjdHMgYSBjb21wcmVzc2VkIGFyY2hpdmUgKC50YXIuZ3opIG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5CisjIHRvIGV4aXN0IChpbiB0aGUgcnBtL1NPVVJDRVMgZGlyZWN0b3J5KSBiZWZvcmUgaXQgaXMgcnVuLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQ1ZTUk9PVCA9IDpwc2VydmVyOmFub255bW91c0BuZXQtc25tcC5jdnMuc291cmNlZm9yZ2UubmV0Oi9jdnNyb290L25ldC1zbm1wCisKK1BLR19WRVIgOj0gJChOQU1FKS0kKFZFUlNJT04pCisKK0daSVBfVEFSIDo9ICQoUlBNX0JBU0UpL1NPVVJDRVMvJChQS0dfVkVSKS50YXIuZ3oKKworZ3ppcF90YXI6CSQoR1pJUF9UQVIpCisKKyQoR1pJUF9UQVIpOgorCUBlY2hvICJDcmVhdGluZyBhIGNvbXByZXNzZWQgYXJjaGl2ZSBvZiB0aGUgcGFja2FnZSdzIHNvdXJjZSBmaWxlcy4uLiIKKwkoY2QgJChSUE1fQkFTRSkvU09VUkNFUzsgXAorCWN2cyAtZCQoQ1ZTUk9PVCkgbG9naW47IFwKKwljdnMgLXozIC1kJChDVlNST09UKSBleHBvcnQgLXIkKFZFUlNJT05fVEFHKSAkKE5BTUUpOyBcCisJbXYgJChOQU1FKSAkKFBLR19WRVIpOyBcCisJdGFyIGNmICQoUEtHX1ZFUikudGFyICQoUEtHX1ZFUik7IFwKKwlnemlwICQoUEtHX1ZFUikudGFyKQorCUBlY2hvICJBIGNvbXByZXNzZWQgYXJjaGl2ZSBvZiB0aGUgcGFja2FnZSdzIHNvdXJjZS1maWxlIHRyZWUgaGFzIGJlZW4gY3JlYXRlZC4iCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgTWFjcm9zIGFuZCBydWxlcyBmb3IgdXBkYXRpbmcgdGhlIGJpbmFyeSBhbmQgc291cmNlIFJQTSBwYWNrYWdlIGZpbGVzLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZWRlZmluZSAnJV90b3BkaXInIHRvIGFsbG93IGFuIFJQTSBwYWNrYWdlIGZpbGUgdG8gYmUgYnVpbHQgYW55d2hlcmUsCisjIGluc3RlYWQgb2YgaW4gdGhlIC91c3Ivc3JjL3JlZGhhdCBkaXJlY3RvcnkgdHJlZS4KKyMKKyMgRG9uJ3Qgd2FudCAncnBtYnVpbGQnIHRvIHN0cmlwIHlvdXIgZXhlY3V0YWJsZSBwcm9ncmFtcz8KKyMgVGhlbiBhZGQgdGhpcyBsaW5lOgorIyAgIC0tZGVmaW5lPSdfb3NfaW5zdGFsbF9wb3N0IC91c3IvbGliL3JwbS9icnAtY29tcHJlc3MnIFwKKyMgdG8gdGhlIFJQTV9PUFRTIG1hY3JvIGRlZmluaXRpb24uICBUaGlzIHdpbGwgZWxpbWluYXRlIHRoZSAKKyMgc3RyaXBwaW5nIG9mIGJpbmFyaWVzLCBidXQgc3RpbGwgcmV0YWluIHRoZSBjb21wcmVzc2lvbiBvZgorIyBtYW51YWwgcGFnZXMuCisjCitpZmVxICgkKFdJVEhfUEVSTCksMCkKK1BFUkxPUFRTID0gLS13aXRob3V0IHBlcmxfbW9kdWxlcworZW5kaWYKK2lmZXEgKCQoRU1CRURfUEVSTCksMCkKK1BFUkxPUFRTICs9IC0td2l0aG91dCBlbWJlZGRlZF9wZXJsCitlbmRpZgorCitSUE1fT1BUUyA6PSBcCisgICAgLS1kZWZpbmU9J190b3BkaXIgJChSUE1fQkFTRSknIFwKKyAgICAtLWRlZmluZT0nX2luY2x1ZGVkaXIgL3Vzci9pbmNsdWRlL25ldC1zbm1wJyBcCisgICAgLS10YXJnZXQgJChBUkNIKSAkKFBFUkxPUFRTKQorCitTUEVDX0ZJTEUgIDo9ICQoTkFNRSkuc3BlYworUlBNX1NQRUMgICA6PSAkKFJQTV9CQVNFKS9TUEVDUy8kKFNQRUNfRklMRSkKKworQklOQVJZX1JQTSA6PSAkKFJQTV9CQVNFKS9SUE1TLyQoQVJDSCkvJChQS0dfVkVSKS0kKFJFTEVBU0UpLiQoQVJDSCkucnBtCitTT1VSQ0VfUlBNIDo9ICQoUlBNX0JBU0UpL1NSUE1TLyQoUEtHX1ZFUiktJChSRUxFQVNFKS5zcmMucnBtCisKK3JwbV9maWxlczoJJChHWklQX1RBUikgYWxsX3JwbV9maWxlcworYmluYXJ5X3JwbToJJChCSU5BUllfUlBNKQorc291cmNlX3JwbToJJChTT1VSQ0VfUlBNKQorcnBtX3RyZWU6ICQoUlBNX1RSRUUpCisKK2FsbF9ycG1fZmlsZXM6CSQoUlBNX1RSRUUpICQoUlBNX1NQRUMpCisJKGNkICQoUlBNX0JBU0UpL1NQRUNTOyBcCisJcnBtYnVpbGQgLWJhICQoUlBNX09QVFMpICQoU1BFQ19GSUxFKSkKKworJChCSU5BUllfUlBNKToJJChSUE1fVFJFRSkgJChSUE1fU1BFQykKKwkoY2QgJChSUE1fQkFTRSkvU1BFQ1M7IFwKKwlycG1idWlsZCAtYmIgJChSUE1fT1BUUykgJChTUEVDX0ZJTEUpKQorCiskKFNPVVJDRV9SUE0pOgkkKFJQTV9UUkVFKSAkKFJQTV9TUEVDKQorCShjZCAkKFJQTV9CQVNFKS9TUEVDUzsgXAorCXJwbWJ1aWxkIC1icyAkKFJQTV9PUFRTKSAkKFNQRUNfRklMRSkpCisKKyQoUlBNX1NQRUMpOgkkKFJQTV9CQVNFKS9TUEVDUyAkKFNQRUNfRklMRSkKKwljcCAkKFNQRUNfRklMRSkgJEAKKworJChSUE1fVFJFRSk6CisJbWtkaXIgLXAgJEAKKworJChTUEVDX0ZJTEUpOgorCUBlY2hvICJFUlJPUjogbWlzc2luZyAnJChTUEVDX0ZJTEUpJyBpbiB0aGUgY3VycmVudCBkaXJlY3RvcnkiCisJQGV4aXQgMQorCitGT1JDRToKKworIyA9PT0gRW5kIG9mIE1ha2VmaWxlID09PSAjCmRpZmYgLS1naXQgYS9kaXN0L1JFQURNRS5idWlsZC1zY3JpcHRzIGIvZGlzdC9SRUFETUUuYnVpbGQtc2NyaXB0cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTA2ZGZiCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9SRUFETUUuYnVpbGQtc2NyaXB0cwpAQCAtMCwwICsxLDEwOCBAQAorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIFJFQURNRS5idWlsZC1zY3JpcHRzCisqCisqIEF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorKgorKiAkSWQkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCitJbnRyb2R1Y3Rpb24KKz09PT09PT09PT09PQorCitUaGUgYXV0b21hdGVkIGJ1aWxkIHNjcmlwdCB3aWxsIGF1dG9tYXRpY2FsbHkgcnVuIGNvbmZpZ3VyZSwgJ21ha2UgYWxsJywKKydtYWtlIHRlc3QnIGFuZCAnbWFrZSBpbnN0YWxsJy4gTG9nIGZpbGVzIGFyZSBrZXB0IGZvciBlYWNoIHN0ZXAsIGFuZCB0aGUKK3NjcmlwdHMgc2hvdWxkIGFib3J0IHdoZW4gZXJyb3JzIG9jY3VyLgorCitUaGUgdXNhZ2Ugb2YgbnNiLXBhY2thZ2UgaXM6CisKKyBVc2FnZTogbnNiLXBhY2thZ2UgWy1jXSBbLWRdIFstcF0gWy1zIFNSQ0RdIFstYiBCVUlMRERdIFstaSBJTlNUQUxMRF0gVkVSU0lPTgorICAKKyAgICBWRVJTSU9OICAgIDogcmVsZWFzZSBudW1iZXIgKGVnIDUuMi4yKQorICAgIC1zIFNSQ0RJUiAgOiBzb3VyZSBkaXJlY3RvcnkgWyRIT01FL3NyYy9uZXQtc25tcC1WRVJTSU9OXQorICAgIC1iIEJVSUxERCAgOiBidWlsZCBkaXJlY3RvcnkgWyRIT01FL2J1aWxkL10KKyAgICAgICAgICAgICAgICAgTk9URS1wbGF0Zm9ybSB3aWxsIGJlIGFwcGVuZGVkIHRvIGJ1aWxkIGRpcmVjdG9yeQorICAgIC1pIElOU1RBTExEOiBpbnN0YWxsIGRpcmVjdG9yeSBbJEhPTUUvYnVpbGQvXCRQTEFURk9STS91c3IvbG9jYWxdCisgICAKKyAgICAtYyA6IHNraXAgY29uZmlndXJlCisgICAgLWQgOiBkaXJ0eSBidWlsZCAoZG9uJ3QgbWFrZSBkaXN0Y2xlYW4pCisgICAgLW0gOiBza2lwICdtYWtlIGFsbCcKKyAgICAtcCA6IGRvbid0IHBhdXNlIGF0IHByb21wdHMgaW4gYmV0d2VlbiBzdGFnZXMKKyAgICAtdCA6IHNraXAgJ21ha2UgdGVzdCcKKworCitUaGUgZGVmYXVsdHMgYXNzdW1lIHlvdSBoYXZlIGEgJ3NyYycsICdidWlsZCcgYW5kICdiaW5hcmllcycgZGlyZWN0b3J5IGluCit5b3VyIGhvbWUgZGlyZWN0b3J5LgorCisKKworUmVjb21tZW5kZWQgUHJvY2VkdXJlCis9PT09PT09PT09PT09PT09PT09PT0KKworMSkgTG9nIGludG8gU291cmNlZm9yZ2UgQ29tcGlsZSBGYXJtIFNlcnZlcgorCisyKSBVcGRhdGUgc291cmNlICh0aGlzIHdpbGwgbGlrZWx5IGJlIGF1dG9tYXRlZCBpbiB0aGUgZnV0dXJlKQorCisgICBGb3IgZXhhbXBsZSwgZm9yIHJlbGVhc2UgNS4wLjM6CisKKyAgICQgY2Qgfi9zcmMKKyAgICQgQ1ZTX1JTSD1zc2ggY3ZzIC1kICRVU0VSQGN2cy5uZXQtc25tcC5vcmc6L2N2c3Jvb3QvbmV0LXNubXAgXAorICAgICAgICAgLXEgY28gLXIgRXh0LTUtMC0zIC1kIH4vc3JjL25ldC1zbm1wLUV4dC01LTAtMyBuZXQtc25tcAorCiszKSBSdW4gdGhlIHBhY2thZ2Ugc2NyaXB0LiAKKworICAgJCAkSE9NRS9zcmMvbmV0LXNubXAtY3ZzL2Rpc3QvbnNiLXBhY2thZ2UgLXIgXAorICAgICAgICAtcyAkSE9NRS9zcmMvbmV0LXNubXAtNS4wLjUgNS4wLjUKKworNCkgQ3JlYXRlIHRhcmJhbGwgKGFzc3VtaW5nIG5vIGVycm9yczsgc2VlIG5leHQgc2VjdGlvbiBpZiB0aGVyZSBhcmUgZXJyb3JzKQorCisgICAkIGNkIH4vYnVpbGQvYG5zYi1wbGF0Zm9ybWAKKyAgICQgdGFyIGN2ZiBuZXQtc25tcC01LjAuMy1gbnNiLXBsYXRmb3JtYC50YXIgdXNyCisgICAkIGd6aXAgLS1iZXN0ICoudGFyCisKKzUpIENvcHkgdGFyYmFsbCB0byBTb3VyY2Vmb3JnZSBzaGVsbCBzZXZlcgorCisgICAkIHNjcCAqLmd6IG5ldC1zbm1wLnNvdXJjZWZvcmdlLm5ldDp+L2JpbmFyaWVzLworCis2KSBMb2cgb3V0IG9mIGNvbXBpbGUgZmFybSBzZXJ2ZXIsIGxvZyBpbnRvIHNoZWxsIHNlcnZlcgorCis3KSBVcGxvYWQgdG8gU291cmNlZm9yZ2UKKworICAgJCBmdHAgdXBsb2FkLnNvdXJjZWZvcmdlLm5ldAorICAgICA+YmluCisgICAgID5wdXQgKi5negorCis4KSBVcGRhdGUgYmluYXJpZXMgdmlhIFNvdXJjZWZvcmdlIGFkbWluIHBhZ2UKKworCisKK0J1aWxkcyB3aXRoIGVycm9ycworPT09PT09PT09PT09PT09PT09CisKK1Nob3VsZCB5b3UgZW5jb3VudGVyIGEgYnVpbGQgZXJyb3IsIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHdhbnQgdG8gc2tpcCB0aGUKKydtYWtlIGRpc3RjbGVhbicgYW5kIGNvbmZpZ3VyZSBzdGVwIChhc3N1bWluZyB0aGUgcHJvYmxlbSB3YXNuJ3Qgd2l0aAorY29uZmlndXJlISkuIFRvIGRvIHRoaXMsIHNwZWNpZnkgdGhlICdkaXJ0eScgYW5kICdza2lwIGNvbmZpZ3VyZScgb3B0aW9uczoKKworICAgJCBuc2ItcGFja2FnZSAtcCAtZCAtYyBFeHQtNS0wLTMKKworCitTaG91bGQgdGhlIGJ1aWxkIHN1Y2NlZWQsIGJ1dCBzb21lIHRlc3RzIGZhaWwgZHVyaW5nICdtYWtlIHRlc3QnLCB5b3UgcHJvYmFibHkKK2NhbiB0byBza2lwIHRoZSB0ZXN0IHN0ZXAgdG8gZ2V0IHRvIHRoZSBpbnN0YWxsIHN0ZXA6CisKKyAgICQgbnNiLXBhY2thZ2UgLXAgLWQgLWMgLXQgRXh0LTUtMC0zCisKKworT1RIRVIgUFJPQkxFTVMKKy0tLS0tLS0tLS0tLS0tCisqICJDYW5ub3QgZmluZCBuc2ItZnVuY3Rpb25zIgorICAKKyAgIEl0J3MgYSBoYWNrLCBidXQgc3ltbGluayBuc2ItZnVuY3Rpb25zIGFuZCBuc2ItcGFja2FnZSB0byB5b3VyIGxvY2FsCisgICBiaW4gZGlyZWN0b3J5ICgkSE9NRS9iaW4pLiAgSSdtIHRyeWluZyB0byB0aGluayBvZiBhIGJldHRlciBzb2x1dGlvbi4KKworKiAiZ2NjOiBzbm1wX3ZlcnNpb24ubG86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkiCisKKyAgIFRoaXMgaXMgYSBnb29kIGluZGljYXRpb24gdGhhdCB5b3UgaGF2ZSBwcmV2aW91c2x5IGJ1aWxkIGluIHlvdXIKKyAgIHNvdXJjZSBkaXJlY3RvcnkuICdtYWtlIGRpc3RjbGVhbicgaW4geW91ciBzb3VyY2UgZGlyZWN0b3J5LCBvcgorICAgY2hlY2sgb3V0IGEgZnJlc2ggbmV3IHZlcnNpb24gZnJvbSBDVlMuCmRpZmYgLS1naXQgYS9kaXN0L1JFTEVBU0UtSU5TVFJVQ1RJT05TIGIvZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmE0MTYxCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9SRUxFQVNFLUlOU1RSVUNUSU9OUwpAQCAtMCwwICsxLDEwMDEgQEAKK1RoaXMgaXMgYSBzdW1tYXJ5IG9mIHRoZSBzdGVwcyByZXF1aXJlZCB0byBtYWtlIGEgbmV3IHJlbGVhc2UuICBEbyBub3QKK2F0dGVtcHQgdG8gcnVuIHRoZXNlIG1hbnVhbGx5IC0gaW5zdGVhZCB1c2UgdGhlICdtYWtlcmVsZWFzZScKK2FwcGxpY2F0aW9uIGFuZCBtYWtlcmVsZWFzZS54bWwgZmlsZS4gIEdldCAnbWFrZXJlbGVhc2UnIGZyb20gdGhlCittYWtlcmVsZWFzZSBTVk4gcmVwb3NpdG9yeToKKworICBzdm4gY28gaHR0cHM6Ly9tYWtlcmVsZWFzZS5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbWFrZXJlbGVhc2UvdHJ1bmsvbWFrZXJlbGVhc2UKKyAgY2QgbWFrZXJlbGVhc2UKKyAgcGVybCBNYWtlZmlsZS5QTAorICBtYWtlCisgIHN1ZG8gbWFrZSBpbnN0YWxsCisKK1RoZW4gdG8gcnVuIGl0IGZyb20gYSBkaXJlY3RvcnkgdG8gcmVsZWFzZToKKworICBtYWtlcmVsZWFzZSAtYyBORVRTTk1QVFJVTksvZGlzdC9tYWtlcmVsZWFzZS54bWwKKworSXQgd2lsbCBwcm9tcHQgeW91IGZvciBhbGwgbmVlZGVkIGluZm9ybWF0aW9uIGFuZCB0YXNrcyB0byBiZSBkb25lLgorCitJTVBPUlRBTlQgTk9URToKKyAgICBEb24ndCAqZXZlciogcmVsZWFzZSBhIHNlY29uZCB0YXIgYmFsbCB1bmRlciB0aGUgc2FtZSBuYW1lIGFzIHRoZQorICAgIGZpcnN0LiAgSXQncyBtdWNoIG11Y2ggbXVjaCBiZXR0ZXIgdG8gcmVsZWFzZSBhbm90aGVyIHZlcnNpb24KKyAgICBpbnN0ZWFkLCBzaW5jZSB5b3UgZG9uJ3QgaGF2ZSB0byBmaWd1cmUgb3V0IGZyb20gdGhlIGJ1ZyByZXBvcnRzCisgICAgdGhhdCBhIHVzZXIgcmVhbGx5IGdyYWJiZWQgdGhlIGZpcnN0IHNuYXBzaG90IGluc3RlYWQgb2YgdGhlCisgICAgc2Vjb25kIHdoZW4gdGhleSBjb21wbGFpbiBhYm91dCB2ZXJzaW9uICJYWFgiIG5vdCB3b3JraW5nLgorCis9PT09PT0gbWFrZXJlbGVhc2UgLW4gb3V0cHV0IHNob3dpbmcgbWFrZXJlbGVhc2UgZG9jdW1lbnRlZCBzdGVwcyA9PT09PT0KKworU1RFUDogMTogU2V0dXAgU3RlcHMKKworICBUaGlzIHNldCBvZiBzdGVwcyB3aWxsIGRvIHNvbWUgcHJlbGltaW5hcnkgInNhZmV0eSIgY2hlY2tzIHRvIGVuc3VyZSB0aGUKKyAgbG9jYWwgZW52aXJvbm1lbnQgaXMgb2sgYW5kIHNldHVwIHNvbWUgaW1wb3J0YW50IGluZm9ybWF0aW9uLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDEgPT09PT0KKworU1RFUDogMS4xOiBTZXR1cCBDaGVjY2sKKworICBUaGlzIHNob3VsZCBzaG93IHRoZSBsYXN0IHZlcnNpb24gbnVtYmVyIHB1Ymxpc2hlZCBpbiB0aGlzIGJyYW5jaCBieQorICBsb29raW5nIGF0IHRoZSB0aW1lIGxpbmUgaW4gdGhlIFJFQURNRSBmaWxlOgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBoZWFkIC0xIFJFQURNRQorCitTVEVQOiAxLjI6IFBpY2sgYSBWZXJzaW9uIE51bWJlcgorCisgIFBsZWFzZSBlbnRlciB0aGUgdmVyc2lvbiBudW1iZXIgdG8gcHVibGlzaC4gIE5ldC1TTk1QIGNvbnZlbnRpb24gZGljdGF0ZXMKKyAgdGhhdCB0aGlzIGJlIGEgdmVyc2lvbiBudW1iZXIgbGlrZSA1LjQgb3IgNS40LjEuICBQcmUtcmVsZWFzZXMgdGhhdCBvY2N1cgorICBiZWZvcmUgYSBicmFuY2ggZnJlZXplcyBzaG91bGQgYmUgYXBwZW5kZWQgd2l0aCAiLnByZU4iIGxpa2UgNS40LjEucHJlMi4gCisgIFJlbGVhc2UtY2FuZGlkYXRlcyBzaG91bGQgYmUgbGFiZWxlZCAiLnJjTiIgbGlrZSA1LjQuMS5yYzEuCisKKyAgRGVjaWRlIG9uIGEgdmFsdWUgZm9yIHBhcmFtZXRlciAnVkVSU0lPTicKKworICAgIHBhcmFtZXRlcjogVkVSU0lPTgorCisgICAgcHJvbXB0OiAgICBFbnRlciB0aGUgbmV3IHZlcnNpb24gbnVtYmVyOgorCitTVEVQOiAxLjM6IERlZmluaW5nIGEgc2Vjb25kIGludGVybmFsIHZlcnNpb24gc3RyaW5nCisKKyAgSW50ZXJuYWwgcGVybCBjb2RlIHdpbGwgYmUgZXhlY3V0ZWQKKworU1RFUDogMS40OiBSZWxlYXNlIFBhcmFtZXRlciBJbmZvcm1hdGlvbgorCisgIEhlcmUgaXMgdGhlIGNvbmZpZ3VyZWQgaW5mb3JtYXRpb24gd2UnbGwgYmUgdXNpbmc6CisKKyAgVkVSU0lPTjoJCSAgIHtWRVJTSU9OfQorCisgIFZFUlNJT04gd2l0aCBkYXNoZXM6CSAgIHtWRVJTSU9OREFTSEVTfQorCisgIEZsb2F0aW5nIHBvaW50IFZFUlNJT046ICB7VkVSU0lPTkZMT0FUfQorCisgIFNWTiBCcmFuY2ggVVJMOgkgICB7QlJBTkNIUEFUSH0KKworU1RFUDogMS41OiB1cGRhdGUKKworICBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB5b3VyIGNvZGUgaXMgdXAgdG8gZGF0ZSBhbmQgbWF0Y2hlcyB0aGUgbGF0ZXN0CisgIHNvdXJjZXMgaW4gdGhpcyBicmFuY2guCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biB1cGRhdGUKKworU1RFUDogMS42OiBDaGVjayBmb3IgY2hhbmdlcworCisgIFRoaXMgc3RlcHMgbG9va3MgZm9yIG91dHN0YW5kaW5nIGZpbGVzIHRoYXQgaGF2ZSBiZWVuIG1vZGlmaWVkLiAgVGhlcmUKKyAgc2hvdWxkIGJlIG5vIG91dHN0YW5kaW5nIG1vZGlmaWNhdGlvbnMhICBJZiB0aGlzIHN0ZXAgZmluZHMgb3V0c3RhbmRpbmcKKyAgbW9kaWZpZWQgZmlsZXMgeW91IG5lZWQgdG8gY2hlY2sgdGhlbSBpbiBvciByZXZlcnQgdGhlbSBiZWZvcmUKKyAgY29udGludWluZyEKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIC11IHN0YXR1cyB8IGVncmVwICdeW15cP10nCisKKyAgKExlYXZpbmcgU3RlcDogMSkKKworU1RFUDogMjogU291cmNlIENvZGUgU2V0dXAKKworICBUaGlzIHNldCBvZiBzdGVwcyB3aWxsIG1vZGlmeSB2YXJpb3VzIHBsYWNlcyB3aXRoaW4gdGhlIHNvdXJjZSBjb2RlIHRyZWUKKyAgdG8gYnJpbmcgaXQgdXAgdG8gZGF0ZSB3aXRoIHRoZSBuZXcgdmVyc2lvbiBudW1iZXIgYWJvdXQgdG8gYmUgcHVibGlzaGVkLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDIgPT09PT0KKworU1RFUDogMi4xOiBMaWJ0b29sIC8gTGlicmFyeSB2ZXJzaW9uaW5nIHNldHVwCisKKyAgVGhlc2Ugc3RlcHMgd2lsbCBtb2RpZnkgdGhlIHZhcmlvdXMgZmlsZXMgaW4gdGhlIHNvdXJjZSB0cmVlIHRoYXQgY29udGFpbgorICB0aGUgdmVyc2lvbiBudW1iZXIsIHNob3cgeW91IHRoZSBjaGFuZ2VzIHRoYXQgd2lsbCBiZSBtYWRlIGFuZCB0aGVuIGNoZWNrCisgIGluIHRoZSByZXN1bHRpbmcgY2hhbmdlcyBpZiB5b3UgYXBwcm92ZSBvZiB0aGVtLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDIuMSA9PT09PQorCitTVEVQOiAyLjEuMTogdmVyc2lvbjpsaWJ0b29sbWFudWFsZWRpdAorCisgIFlvdSAobWF5KSBuZWVkIHRvIGVkaXQgTWFrZWZpbGUudG9wIHRvIHVwZGF0ZSB0aGUgbGlicmFyeSB2ZXJzaW9uCisgIG51bWJlcmluZyAodXN1YWxseSBqdXN0IGZvciB0aGUgZmlyc3QgcHJlLXJlbGVhc2Ugb2YgYSBnaXZlbiB2ZXJzaW9uKS4gCisgIFNlZSB0aGUgY29tbWVudHMgaW4gUkVMRUFTRS1JTlNUUlVDVElPTlMgYWJvdXQgTElCQ1VSUkVOVCwgTElCQUdFIGFuZAorICBMSUJSRVZJU0lPTi4KKworICBUaGlzIHNjcmlwdCB3aWxsIGNvbW1pdCB0aGUgZmlsZSBmb3IgeW91IGFmdGVyIHlvdSdyZSBkb25lLgorCitTVEVQOiAyLjEuMjogdmVyc2lvbjpjb21taXQKKworICBXZSdsbCBub3cgY29tbWl0IHRoZSBNYWtlZmlsZS50b3AgZmlsZSBpZiB5b3UndmUgbW9kaWZpZWQgaXQuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb21taXQgLW0gInZlcnNpb24gdXBkYXRlIiBNYWtlZmlsZS50b3AKKworICAoTGVhdmluZyBTdGVwOiAyLjEpCisKK1NURVA6IDIuMjogQ2hhbmdlIFRoZSBWZXJzaW9uIE51bWJlcgorCisgIFRoZXNlIHN0ZXBzIHdpbGwgbW9kaWZ5IHRoZSB2YXJpb3VzIGZpbGVzIGluIHRoZSBzb3VyY2UgdHJlZSB0aGF0IGNvbnRhaW4KKyAgdGhlIHZlcnNpb24gbnVtYmVyLCBzaG93IHlvdSB0aGUgY2hhbmdlcyB0aGF0IHdpbGwgYmUgbWFkZSBhbmQgdGhlbiBjaGVjaworICBpbiB0aGUgcmVzdWx0aW5nIGNoYW5nZXMgaWYgeW91IGFwcHJvdmUgb2YgdGhlbS4KKworICA9PT09PSBFbnRlcmluZyBTdGVwOiAyLjIgPT09PT0KKworU1RFUDogMi4yLjE6IE1vZGlmeSB0aGUgc291cmNlIGZpbGVzCisKKyAgV2Ugd2lsbCBub3cgbW9kaWZ5IGZpbGVzIHRocm91Z2ggdGhlIGNvZGUgdG8gcmVwbGFjZSB0aGUgdmVyc2lvbiBudW1iZXIKKyAgd2l0aCB0aGUgbmV3ZXIgb25lLgorCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ1ZFUlNJT04gPSAnKC4qKScnIHdpdGg6ICdWRVJTSU9OID0gXCd7VkVSU0lPTkZMT0FUfVwnJworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM5MDY0KQorCisgICAgICBwZXJsL1NOTVAvU05NUC5wbQorCisgICAgICBwZXJsL2FnZW50L2FnZW50LnBtCisKKyAgICAgIHBlcmwvYWdlbnQvU3VwcG9ydC9TdXBwb3J0LnBtCisKKyAgICAgIHBlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisKKyAgICAgIHBlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisKKyAgICAgIHBlcmwvT0lEL09JRC5wbQorCisgICAgICBwZXJsL0FTTi9BU04ucG0KKworICAgICAgcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQorCisgICAgICBwZXJsL0FueURhdGFfU05NUC9Gb3JtYXQucG0KKworICAgICAgcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ05ldFNubXBWZXJzaW9uSW5mbyA9ICJbXGRcLl0rIicgd2l0aDogJ05ldFNubXBWZXJzaW9uSW5mbyA9CisgICJ7VkVSU0lPTn0iJworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZmQ0KQorCisgICAgICBzbm1wbGliL3NubXBfdmVyc2lvbi5jCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ1ZlcnNpb246IFtcLjAtOWEtekEtWl0rJyB3aXRoOiAnVmVyc2lvbjoge1ZFUlNJT059JworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZjQ0KQorCisgICAgICBSRUFETUUKKworICAgICAgRkFRCisKKyAgICAgIGRpc3QvbmV0LXNubXAuc3BlYworCisKKworICBNb2RpZnlpbmcgZmlsZXM6CisKKyAgICByZXBsYWNpbmc6ICdWRVJTSU9OID0gW1wuMC05YS16QS1aXSsnIHdpdGg6ICdWRVJTSU9OID0ge1ZFUlNJT059JworCisKKyAgICBmaWxlczogIGdsb2I9QVJSQVkoMHg4ZGM4ZWQ0KQorCisgICAgICBkaXN0L01ha2VmaWxlCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ0FDX0lOSVRcKFxbTmV0LVNOTVBcXSwgXFsoW15cXV0rKVxdJyB3aXRoOgorICAnQUNfSU5JVChbTmV0LVNOTVBdLCBbe1ZFUlNJT059XScKKworCisgICAgZmlsZXM6ICBnbG9iPUFSUkFZKDB4OGRjOGU2NCkKKworICAgICAgY29uZmlndXJlLmluCisKKworCisgIE1vZGlmeWluZyBmaWxlczoKKworICAgIHJlcGxhY2luZzogJ05ldFNubXBWZXJzaW9uSW5mbyA9ICJbXiJdKyInIHdpdGg6ICdOZXRTbm1wVmVyc2lvbkluZm8gPQorICAie1ZFUlNJT059IicKKworCisgICAgZmlsZXM6ICBnbG9iPUFSUkFZKDB4OGRjOGRmNCkKKworICAgICAgc25tcGxpYi9zbm1wX3ZlcnNpb24uYworCisKKworU1RFUDogMi4yLjI6IFJ1bm5pbmcgYXV0b2NvbmYgdG8gcmVidWlsZCBjb25maWd1cmUKKworICBXZSBtb2RpZmllZCBjb25maWd1cmUuaW4sIHNvIHdlIG5vdyBuZWVkIHRvIHJ1biBhdXRvY29uZiB0byByZWJ1aWxkCisgIGNvbmZpZ3VyZS4KKworICBYWFg6IGluIHRoZSBmdXR1cmUgd2Ugc2hvdWxkIHZlcmlmeSB0aGUgY29ycmVjdCBhdXRvY29uZiB2ZXJzaW9uIG51bWJlcgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBhdXRvY29uZgorCitTVEVQOiAyLjIuMzogUnVubmluZyBzdm4gZGlmZiB0byBjaGVjayBjaGFuZ2VzCisKKyAgQ2hlY2sgdGhlIGZvbGxvd2luZyBjaGFuZ2VzIGZvciBwcm9wZXIgdmVyc2lvbiBudW1iZXIgZGlmZmVyZW5jZXMgYmVmb3JlCisgIHdlIGNvbW1pdCB0aGUgY2hhbmNlcy4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGRpZmYKKworU1RFUDogMi4yLjQ6IFJ1bm5pbmcgc3ZuIGNvbW1pdCB0byBjb21taXQgdGhlIGNoYW5nZXMKKworICBDaGVjayB0aGUgY2hhbmdlcyBpbiB0aGUgYWJvdmUgZGlmZiBhbmQgdGhlbiB3ZSdsbCBjb21taXQgdGhlIHJlc3VsdHMKKyAgaGVyZSBpZiB0aGV5IGxvb2sgb2suCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb21taXQgLW0gIlZlcnNpb24gbnVtYmVyIHVwZGF0ZSIKKworICAoTGVhdmluZyBTdGVwOiAyLjIpCisKK1NURVA6IDIuMzogZG9jczptYWtlCisKKyAgVGhpcyBzdGVwIHdpbGwgY3JlYXRlIG1hbnVhbCBwYWdlcyBmcm9tIGRveHlnZW4gaW5zdHJ1bWVudGVkIGNvZGUgZmlsZXMuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG1ha2UgZG9jcworCisgICAgbWFrZSBtYW5jcAorCitTVEVQOiAyLjQ6IGRvY3M6dXBkYXRlCisKKyAgVGhpcyB3aWxsIHJ1biBzdm4gc3RhdHVzIHRvIGZpZ3VyZSBvdXQgd2hhdCBmaWxlcyBoYXZlIGNoYW5nZWQgc2luY2UgdGhlCisgIHByZXZpb3VzIG1hbiBwYWdlIGdlbmVyYXRpb24gc3RlcHMgd2VyZSBkb25lLiAgQWZ0ZXIgdGhpcyBzdGVwLCB3ZSdsbAorICBjb21taXQgYWxsIHRoZSBtb2RpZmllZCBmaWxlcy4KKworICBZb3UgbWF5IGZpbmQgYWRkaXRpb25hbCBmaWxlcyAobWFya2VkIHdpdGggYSA/KSB0aGF0IHNob3VsZCBiZSBhZGRlZCB0bworICB0aGUgc3ZuIHJlcG9zaXRvcnkgYW5kIHlvdSdsbCBuZWVkIHRvIGRvIHRoaXMgYnkgaGFuZCBiZWZvcmUgZ29pbmcgb24gdG8KKyAgdGhlIG5leHQgc3RlcC4KKworICBOb3RlOiBiYXNlZCBvbiBhIHJlY2VudCBuZXQtc25tcC1hZG1pbiBkaXNjdXNzaW9uLCB3ZSdyZSBubyBsb25nZXIgZ29pbmcKKyAgdG8gYmUgYWRkaW5nIHRoZSBiYXppbGxpb25zIG9mIG1hbiBwYWdlcyB0aGF0IGRveHlnZW4gZ2VuZXJhdGVzIGJ5CisgIGRlZmF1bHQuICBPbmx5IGltcG9ydGFudCBvbmVzIHNob3VsZCBiZSBhZGRlZC4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIC11IHN0YXR1cyBtYW4KKworU1RFUDogMi41OiBkb2NzOm1hbnVhbGFkZG5ld21hbgorCisgIFVwZGF0ZSBtYW4vTWFrZWZpbGUuaW4gd2l0aCBkZXRhaWxzIG9mIGFueSBuZXcgbWFuIHBhZ2VzLCBhbmQgcnVuICdzdm4KKyAgYWRkJyBvbiB0aGVtLgorCisgIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlciB5b3UncmUgZG9uZS4KKworU1RFUDogMi42OiBkb2NzOmNvbW1pdAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gY29tbWl0IC1tICJkb2N1bWVudGF0aW9uIHVwZGF0ZSIgbWFuCisKKyAgKExlYXZpbmcgU3RlcDogMikKKworU1RFUDogMzogVGVzdGluZyBTdGVwcworCisgIFRoZXNlIHN0ZXBzIHdpbGwgaGVscCB5b3UgdGVzdCB0aGUgc291cmNlIGNvZGUgdG8gZW5zdXJlIGl0IHBhc3NlcyBzb21lCisgIHNpbXBsZSAiaXQgd29ya3MiIHRlc3RzLgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDMgPT09PT0KKworU1RFUDogMy4xOiBidWlsZDpkaXN0Y2xlYW4KKworICBGaXJzdCB3ZSBuZWVkIHRvIGNsZWFuIHRoZSBleGlzdGluZyBidWlsZCB0cmVlIGFuZCBzdGFydCBmcm9tIHNjcmF0Y2guCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG1ha2UgZGlzdGNsZWFuCisKK1NURVA6IDMuMjogYnVpbGQ6Y29uZmlndXJlCisKKyAgV2UgbmVlZCB0byBydW4gY29uZmlndXJlIHRvIHNldCB1cCB0aGUgYnVpbGQgdHJlZS4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgLi9jb25maWd1cmUgLS1jYWNoZT1jb25maWcuY2FjaGUgLS13aXRoLWRlZmF1bHRzCisgIC0td2l0aC1taWItbW9kdWxlcz0naG9zdCBleGFtcGxlcyBleGFtcGxlcy9leGFtcGxlIHRlc3RoYW5kbGVyIHNtdXggUm1vbgorICBkaXNtYW4vZXZlbnQtbWliJyAtLXdpdGgtdHJhbnNwb3J0cz1JUFggLS1lbmFibGUtaXB2NgorICAtLWVuYWJsZS1lbWJlZGRlZC1wZXJsIC0tZW5hYmxlLXNoYXJlZAorCitTVEVQOiAzLjM6IGJ1aWxkOm1ha2UKKworICBUaGVuIHdlIG5lZWQgdG8gYnVpbGQgdGhlIGNvZGUKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbWFrZQorCitTVEVQOiAzLjQ6IGJ1aWxkOnRlc3QKKworICBOb3cgd2UgcnVuICJtYWtlIHRlc3QiIHdoaWNoIHNob3VsZCBwcm9kdWNlIGEgcGVyZmVjdCBzZXQgdXAgdGVzdAorICByZXN1bHRzLiAgSWYgbm90LCB0aGlzIG5lZWRzIHRvIGJlIGZpeGVkIG9yIGF0IGxlYXN0IHVuZGVyc3Rvb2QgYW5kCisgIGFjY2VwdGVkIGFzIGlzIGZvciBzb21lIG90aGVyIHJlYXNvbi4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgbWFrZSB0ZXN0IFRFU1RPUFRTPS1uCisKK1NURVA6IDMuNTogY29kZTpjaGVja2NvbW1lbnRzCisKKyAgVGhpcyBjb21tYW5kIGxvb2tzIGZvciBzb3VyY2UgY29kZSBvZGRpdGllcyBhbmQgcG9saWN5IHZpb2xhdGlvbnMuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG1ha2UgY2hlY2tzCisKKyAgKExlYXZpbmcgU3RlcDogMykKKworU1RFUDogNDogUmVsZWFzZSBGaWxlIFN0ZXBzCisKKyAgQ2VydGFpbiBmaWxlcyBpbiB0aGUgZGlzdHJpYnV0aW9uIGFuZCBidWlsdCBvbiBhIHBlci1yZWxlYXNlIGJhc2lzLiAKKyAgVGhlc2Ugc3RlcHMgd2lsbCBoZWxwIHNldCB1cCB0aGVzZSBmaWxlcy4KKworICA9PT09PSBFbnRlcmluZyBTdGVwOiA0ID09PT09CisKK1NURVA6IDQuMTogY29kZTptYWtlZGVwZW5kCisKKyAgVGhpcyBzdGVwIGNyZWF0ZXMgTWFrZWZpbGUgZGVwZW5kZW5jaWVzIHVzaW5nIHRoZSAiZGlzdGRlcGVuZCIgcnVsZSBpbgorICB0aGUgdG9wIGxldmVsIE1ha2VmaWxlLgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBtYWtlIGRpc3RkZXBlbmQKKworU1RFUDogNC4yOiBjb2RlOmNvbW1pdGRlcGVuZAorCisgIFRoaXMgc3RlcCBjb21taXRzIHRoZSBkZXBlbmRlbmN5IGNoYW5nZXMgZG9uZSBpbiB0aGUgcHJldmlvdXMgc3RlcC4KKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvbW1pdCAtbSAibWFrZSBkZXBlbmQiIGBmaW5kIC4gLW5hbWUgTWFrZWZpbGUuZGVwZW5kYAorCitTVEVQOiA0LjM6IGNoYW5nZWxvZzpzdm4yY2wKKworICBXZSBuZWVkIHRvIGV4dHJhY3QgdGhlIHBvcnRpb25zIG9mIHRoZSBjaGFuZ2UgbG9ncyBjb21taXR0ZWQgdG8gdGhlCisgIHJlcG9zaXRvcnkuCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2bjJjbCAtZiBDaGFuZ2VMb2cuYWRkIC0tYnJlYWstYmVmb3JlLW1zZyAtLXN0b3Atb24tY29weQorCisgICAgcGVybCBkaXN0L2NoYW5nZWxvZ2ZpeCAgPCBDaGFuZ2VMb2cuYWRkID4gQ2hhbmdlTG9nLnJlYWxseWFkZAorCitTVEVQOiA0LjQ6IGNoYW5nZWxvZzptYW51YWxlZGl0CisKKyAgWW91IG5lZWQgdG8gbWFudWFsbHkgaW5zZXJ0IHRoZSAqcmVsZXZlbnQqIHBvcnRpb25zIG9mCisgICdDaGFuZ2VMb2cucmVhbGx5YWRkJyBpbnRvIHRoZSBDaGFuZ2VMb2cgZmlsZS4gSSdsbCBjb21taXQgdGhlc2UgY2hhbmdlcworICBmb3IgeW91IGFmdGVyIHlvdSBmaW5pc2ggY3V0dGluZyBvdXQgdGhlIHByb3BlciBjaGFuZ2VzLgorCitTVEVQOiA0LjU6IGNoYW5nZWxvZzpjb21taXQKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgc3ZuIGNvbW1pdCAtbSAidmVyc2lvbiB1cGRhdGUiIENoYW5nZUxvZworCitTVEVQOiA0LjY6IGRvY3M6bmV3bmV3cworCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBwZXJsIGRpc3QvZXh0cmFjdG5ld3MgLXMgLS0tLS0gLWUgLS0tLS0gQ2hhbmdlTG9nCisKK1NURVA6IDQuNzogZG9jczpuZXduZXdzCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHBlcmwgZGlzdC9leHRyYWN0bmV3cyAtYyBDSEFOR0VTLm5ldzIgLW4gTkVXUy5uZXcyIENoYW5nZUxvZy5yZWFsbHlhZGQKKworU1RFUDogNC44OiBkb2NzOlJFQURNRQorCisgIFlvdSBuZWVkIHRvIG1hbnVhbGx5IGluc2VydCB0aGUgcmVsZXZlbnQgcG9ydGlvbnMgb2YgJ0NIQU5HRVMubmV3JyBhbmQKKyAgJ05FV1MubmV3JyBpbnRvIHRoZSBDSEFOR0VTIGFuZCBORVdTIGZpbGUuIChUaGVyZSBhcmUgYWx0ZXJuYXRpdmUKKyAgdmVyc2lvbnMgaW4gJ0NIQU5HRVMubmV3MicgYW5kICdORVdTLm5ldzInKSBZb3UgbWF5IHdpc2ggdG8gdXBkYXRlIHRoZQorICBSRUFETUUgZmlsZSBhcyB3ZWxsLiBJJ2xsIGNvbW1pdCB0aGVzZSBjaGFuZ2VzIGZvciB5b3UgYWZ0ZXJ3YXJkcworCitTVEVQOiA0Ljk6IGRvY3M6Y29tbWl0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb21taXQgLW0gInZlcnNpb24gdXBkYXRlIiBSRUFETUUgTkVXUyBDSEFOR0VTCisKK1NURVA6IDQuMTA6IHJlbGVhc2U6dXBkYXRlCisKKyAgT25lIG1vcmUgc3ZuIHVwZGF0ZSBhbmQgc3RhdHVzIHRvIG1ha2Ugc3VyZSBub3RoaW5nIG9kZCBleGlzdHMgaW4geW91cgorICBzb3VyY2UgdHJlZS4JUGxlYXNlIGNoZWNrIHRoZSByZXN1bHRzIQorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdm4gLXUgc3RhdHVzCisKKyAgKExlYXZpbmcgU3RlcDogNCkKKworU1RFUDogNTogTWFrZSB0aGUgUmVsZWFzZQorCisgIFRoaXMgaXMgaXQhICBBZnRlciB0aGlzIHBvaW50IGl0J3MgbXVjaCBoYXJkZXIgdG8gdHVybiBiYWNrLglJZgorICBldmVyeXRoaW5nIGlzIG9rIHVudGlsIHRoaXMgcG9pbnQgYW5kIHlvdSdyZSByZWFkeSB0byBhY3R1YWxseSBzdGFtcCB0aGUKKyAgcmVsZWFzZSBpbiBTVk4gYW5kIG1ha2UgcmVsZWFzZSBmaWxlcywgdGhlc2Ugc3RlcHMgd2lsbCBkbyB0aGF0IGZvciB5b3UuCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogNSA9PT09PQorCitTVEVQOiA1LjE6IHJlbGVhc2U6dGFnCisKKyAgVGhpcyB3aWxsIGFjdHVhbGx5IHN2biBjb3B5IHRoZSBjdXJyZW50IGNoZWNrZWQgb3V0IGJyYW5jaCB0byB0aGUgbmV3IHRhZworICBuYW1lLiAgU3BlY2lmaWNhbGx5OgorCisgIHN2biBjb3B5IHtCUkFOQ0hQQVRIfSAuLi4vdGFncy9FeHQte1ZFUlNJT05EQVNIRVN9CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBjb3B5IC1tICJ7VkVSU0lPTn0gcmVsZWFzZSIge0JSQU5DSFBBVEh9CisgIGh0dHBzOi8vbmV0LXNubXAuc3ZuLnNvdXJjZWZvcmdlLm5ldC9zdm5yb290L25ldC1zbm1wL3RhZ3MvRXh0LXtWRVJTSU9OREEKKyAgU0hFU30KKworU1RFUDogNS4yOiByZWxlYXNlOm1ha2VkaXN0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHN2biBleHBvcnQKKyAgaHR0cHM6Ly9uZXQtc25tcC5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbmV0LXNubXAvdGFncy9FeHQte1ZFUlNJT05EQQorICBTSEVTfS9uZXQtc25tcCBuZXQtc25tcC17VkVSU0lPTn0KKworU1RFUDogNS4zOiByZWxlYXNlOnJlbW92ZWZpbGVzCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIG5ldC1zbm1wLXtWRVJTSU9OfS9yZW1vdmUtZmlsZXMgbmV0LXNubXAte1ZFUlNJT059CisKK1NURVA6IDUuNDogcmVsZWFzZTptYWtlZGlzdAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBzdGFyIGFydHlwZT11c3RhciAtYyAteiAtZiBuZXQtc25tcC17VkVSU0lPTn0udGFyLmd6IAorICBuZXQtc25tcC17VkVSU0lPTn0KKworU1RFUDogNS41OiByZWxlYXNlOm1ha2V6aXBjbGVhbgorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBybSAtZiBuZXQtc25tcC17VkVSU0lPTn0uemlwCisKK1NURVA6IDUuNjogcmVsZWFzZTptYWtlemlwCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHppcCAtciBuZXQtc25tcC17VkVSU0lPTn0uemlwICBuZXQtc25tcC17VkVSU0lPTn0KKworU1RFUDogNS43OiByZWxlYXNlOnNlYXJjaGluZy1ncGcta2V5cworCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBncGcgLS1saXN0LXNlY3JldC1rZXlzIG5ldC1zbm1wLWFkbWluCisKK1NURVA6IDUuODogcmVsZWFzZTpncGcKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgZ3BnIC11IDMxN0Y4RjY0IC1hIC0tZGV0YWNoLXNpZ24gbmV0LXNubXAte1ZFUlNJT059LnRhci5negorCitTVEVQOiA1Ljk6IHJlbGVhc2U6Z3BnCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGdwZyAtdSAzMTdGOEY2NCAtYSAtLWRldGFjaC1zaWduIG5ldC1zbm1wLXtWRVJTSU9OfS56aXAKKworU1RFUDogNS4xMDogUmVsZWFzZSBGaWxlIFRlc3QKKworICBXZSdsbCBhbHNvIHJlLWJ1aWxkIHRoZSBzb3VyY2UgYW5kIHJldGVzdCBhIGZldyB0aGluZ3MgdG8gZW5zdXJlIHRoZQorICBwYWNrYWdlZCBmaWxlIGNhbiBhY3R1YWxseSBiZSBidWlsdC4KKworICA9PT09PSBFbnRlcmluZyBTdGVwOiA1LjEwID09PT09CisKK1NURVA6IDUuMTAuMTogcG9zdHRlc3Q6dW50YXIKKworICBDb21tYW5kcyB0byBleGVjdXRlOgorCisgICAgcm0gLXJmIG5ldC1zbm1wLXtWRVJTSU9OfQorCitTVEVQOiA1LjEwLjI6IHBvc3R0ZXN0OnVudGFyCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHRhciB4emYgbmV0LXNubXAte1ZFUlNJT059LnRhci5negorCitTVEVQOiA1LjEwLjM6IHBvc3R0ZXN0OmNvbmZpZ3VyZQorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBjZCBuZXQtc25tcC17VkVSU0lPTn0gJiYgLi9jb25maWd1cmUgLS1jYWNoZT1jb25maWcuY2FjaGUKKyAgLS13aXRoLWRlZmF1bHRzIC0td2l0aC1taWItbW9kdWxlcz0naG9zdCBleGFtcGxlcyBleGFtcGxlcy9leGFtcGxlCQorICB0ZXN0aGFuZGxlciBzbXV4IFJtb24gZGlzbWFuL2V2ZW50LW1pYicgLS13aXRoLXRyYW5zcG9ydHM9SVBYCisgIC0tZW5hYmxlLWlwdjYgLS1lbmFibGUtZW1iZWRkZWQtcGVybCAtLWVuYWJsZS1zaGFyZWQKKworU1RFUDogNS4xMC40OiBwb3N0dGVzdDptYWtlCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGNkIG5ldC1zbm1wLXtWRVJTSU9OfSAmJiBtYWtlCisKK1NURVA6IDUuMTAuNTogcG9zdHRlc3Q6dGVzdAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBjZCBuZXQtc25tcC17VkVSU0lPTn0gJiYgbWFrZSB0ZXN0CisKKyAgKExlYXZpbmcgU3RlcDogNS4xMCkKKworICAoTGVhdmluZyBTdGVwOiA1KQorCitTVEVQOiA2OiBSZWxlYXNlIHRoZSByZXN1bHRzCisKKyAgTm93IHdlJ2xsIHB1Ymxpc2ggdGhlIHJlc3VsdHMgdG8gdGhlIFNGIHNlcnZlcgorCisgID09PT09IEVudGVyaW5nIFN0ZXA6IDYgPT09PT0KKworU1RFUDogNi4xOiByc3luYyB0aGUgbmV3IGZpbGVzCisKKyAgVGhpcyB3aWxsIGNvcHkgdGhlIHJlc3VsdHMgdG8gdGhlIFNGIHVwbG9hZHMgZGlyZWN0b3J5IGluIHlvdXIgYWNjb3VudCBvbgorICBmcnMuc291cmNlZm9yZ2UubmV0CisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIHJzeW5jIC12IG5ldC1zbm1wLXtWRVJTSU9OfS50YXIuZ3ogbmV0LXNubXAte1ZFUlNJT059LnRhci5nei5hc2MKKyAgbmV0LXNubXAte1ZFUlNJT059LnppcCBuZXQtc25tcC17VkVSU0lPTn0uemlwLmFzYworICBmcnMuc291cmNlZm9yZ2UubmV0OnVwbG9hZHMvCisKK1NURVA6IDYuMjogVXBkYXRlIHRoZSBTRiByZWxlYXNlIHdlYiBwYWdlCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGZpcmVmb3gKKyAgJ2h0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9hZG1pbi9lZGl0cGFja2FnZXMucGhwP2dyb3VwX2lkPTEyNjk0JworCisgIChMZWF2aW5nIFN0ZXA6IDYpCisKK1NURVA6IDc6IAorCisgIEJpbmFyaWVzOiBidWlsZCBycG1zLCAudGFyLmd6cywgZXRjLgorCitTVEVQOiA4OiBBZHZlcnRpc2UgaXQhCisKKyAgPT09PT0gRW50ZXJpbmcgU3RlcDogOCA9PT09PQorCitTVEVQOiA4LjE6IAorCisgIEFkZCBhIG5vdGUgdG8gdGhlIHNvdXJjZSBmb3JnZSBuZXdzIHN5c3RlbToKKworICBodHRwOi8vc291cmNlZm9yZ2UubmV0L25ld3Mvc3VibWl0LnBocD9ncm91cF9pZD0xMjY5NAorCisgIENvbW1hbmRzIHRvIGV4ZWN1dGU6CisKKyAgICBmaXJlZm94ICdodHRwOi8vc291cmNlZm9yZ2UubmV0L25ld3Mvc3VibWl0LnBocD9ncm91cF9pZD0xMjY5NCcKKworU1RFUDogOC4yOiAKKworICBTZW5kIGFuIGFubm91bmNlbWVudCBtZXNzYWdlIHRvIG9uZSBvZiB0aGUgZm9sbG93aW5nIG1haWxpbmcgbGlzdHMgYmFzZWQKKyAgb24gaXQncyB0eXBlOgorCisgIHByZToJICBuZXQtc25tcC1jb2RlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0CisKKyAgcmM6CSAgbmV0LXNubXAtdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0CisKKyAgZmluYWw6ICBuZXQtc25tcC1hbm5vdW5jZUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQKKworU1RFUDogOC4zOiAKKworICBVcGRhdGUgdGhlIHRvcGljIG9uIHRoZSAjTmV0LVNOTVAgY2hhbm5lbCBpZiB0aGlzIGlzIGEgdHJ1bmsgYmFzZWQKKyAgcmVsZWFzZS4KKworU1RFUDogOC40OiAKKworICBVcGRhdGUgdGhlIGZyZXNobWVhdCBsaXN0aW5nIChXZXMgbmVlZHMgdG8gZG8gdGhpcyk6CisKKyAgaHR0cDovL2ZyZXNobWVhdC5uZXQvcHJvamVjdHMvbmV0LXNubXAvCisKKyAgQ29tbWFuZHMgdG8gZXhlY3V0ZToKKworICAgIGZpcmVmb3ggaHR0cDovL2ZyZXNobWVhdC5uZXQvcHJvamVjdHMvbmV0LXNubXAvCisKKyAgKExlYXZpbmcgU3RlcDogOCkKKworU1RFUDogOTogCisKKyAgQWR2ZXJ0aXNlOiBORVdTIHVwbG9hZCB0byBzZiwgcHVibGlzaCBvbiAtYW5ub3VuY2UsIGZyZXNobWVhdCwgYW5kIHRoZQorICBHTlUgRlNGIGRpcmVjdG9yeSAoaHR0cDovL2RpcmVjdG9yeS5mc2Yub3JnL3Byb2plY3QvbmV0LXNubXAvKS4uLiAoc2VuZAorICBtYWlsIHRvIGJ1Zy1kaXJlY3RvcnlAZ251Lm9yZykKKworCisKKworCis9PT09PT0gQkVHSU4gT0JTT0xFVEUgKHByZS1tYWtlcmVsZWFzZSkgRE9DVU1FTlRBVElPTiA9PT09PT0KKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitURVNUSU5HOgorCisgIDEpIFVwZGF0ZSB0aGUgc291cmNlIHRyZWUgdG8gY2F0Y2ggYWxsIHJlY2VudCBjb21taXRzLAorICAgICBhbmQgY2hlY2sgdGhhdCBhbGwgbG9jYWwgY2hhbmdlcyBoYXZlIGJlZW4gY29tbWl0dGVkLgorCisgICAgICQgc3ZuIC11IHN0YXR1cworICAgICAkIHN2biAgICB1cGRhdGUKKworICAyKSBDaGFuZ2UgdGhlIGxpYnRvb2wgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBNYWtlZmlsZS50b3AuCisgICAgIFNlZSBNQU5VQUwgLSBTVEVQIDEgbGF0ZXIgaW4gdGhlc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgY29tbWl0IHRoaXMgZmlsZSBhdXRvbWF0aWNhbGx5LgorCisgIDMpIENvbmZpZ3VyZSB0aGUgc3VpdGUgd2l0aCBhcyBtYW55IG1vZHVsZXMgYXMgcG9zc2libGUsCisgICAgIGJ1aWxkIGFuZCB0ZXN0IGl0LiAgVGhlIG1ha2VyZWxlYXNlIHNjcmlwdCB3aWxsIHVzZQorICAgICB0aGUgb3B0aW9uczoKKworICAgICAgJCAuL2NvbmZpZ3VyZSAgJy0td2l0aC1taWItbW9kdWxlcz1ob3N0IGV4YW1wbGVzIGV4YW1wbGVzL2V4YW1wbGUgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RoYW5kbGVyIHNtdXggUm1vbiBkaXNtYW4vZXZlbnQtbWliJyAgICBcCisgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXRyYW5zcG9ydHM9SVBYICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWVtYmVkZGVkLXBlcmwgLS1lbmFibGUtc2hhcmVkCisKKyAgICAgSWRlYWxseSB0aGlzIHNob3VsZCBiZSByZXBlYXRlZCBvbiBhcyBtYW55IHN5c3RlbXMgYXMgcG9zc2libGUKKyAgICAgKGluY2x1ZGluZyBydW5uaW5nICJtYWtlIGluc3RhbGwiKS4gIEhvd2V2ZXIgdGhlIG1ha2VyZWxlYXNlCisgICAgIHNjcmlwdCB3aWxsIG9ubHkgdGVzdCB0aGluZ3Mgb24gdGhlIGN1cnJlbnQgYm94LCBhbmQgd2lsbCBub3QKKyAgICAgdHJ5IHRvIGluc3RhbGwgdGhlIHNvZnR3YXJlLgorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorRE9DVU1FTlRBVElPTjoKKworICA0KSAgVXBkYXRlIHRoZSB2ZXJzaW9uIG51bWJlciBpbiB0aGUgZG94eWdlbi5jb25mIGZpbGUKKyAgICAgIChoYW5kbGVkIGF1dG9tYXRpY2FsbHkgYnkgJ21ha2VyZWxlYXNlJykgYW5kIGdlbmVyYXRlCisgICAgICB0aGUgZG94eWdlbiBleHRyYWN0ZWQgbWFudWFsIHBhZ2VzLgorCisgICAgICAgICQgbWFrZSBkb2NzCisgICAgICAgICQgbWFrZSBtYW5jcAorCisgICAgICdtYWtlcmVsZWFzZScgd2lsbCBjb21taXQgdGhpcyBmaWxlIGF1dG9tYXRpY2FsbHkuCisgICAgIE5vdGUgdGhhdCBhbnkgbmV3IG1hbiBwYWdlcyBzaG91bGQgYmUgYWRkZWQgdG8gTWFrZWZpbGUuaW4uCisgICAgIFRoaXMgaXMgKk5PVCogY3VycmVudGx5IGhhbmRsZWQgYnkgdGhlIG1ha2VyZWxlYXNlIHNjcmlwdC4KKworICA1KSBDaGVjayB0aGUgY29kZSBmb3IgaWxsZWdhbCBjb25zdHJ1Y3RzIChlLmcuIEMrKyBzdHlsZSBjb21tZW50cworICAgICBvciBHTlUgbWFrZSBzcGVjaWZpYyBjb25zdHJ1Y3RzIGluIE1ha2VmaWxlcyk6CisKKyAgICAgICAgJCBtYWtlIGNoZWNrcworCisgIDYpIFVwZGF0ZSBNYWtlZmlsZSBkZXBlbmRlbmNpZXM6CisKKyAgICAgICAgJCBtYWtlIGRpc3RkZXBlbmQKKworICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgY29tbWl0IHRoZXNlIGRlcGVuZGVuY2llcyBhdXRvbWF0aWNhbGx5LgorCisgIDcpIFVwZGF0ZSB0aGUgQ2hhbmdlTG9nIGZpbGUgd2l0aCBkZXRhaWxzIG9mIGFsbCAocmVjZW50KSBjaGFuZ2VzCisgICAgIHRvIHRoZSBzdWl0ZS4gIFNlZSBNQU5VQUwgLSBTVEVQIDIgbGF0ZXIgaW4gdGhlc2UgaW5zdHJ1Y3Rpb25zLgorICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgY29tbWl0IHRoaXMgZmlsZSBhdXRvbWF0aWNhbGx5LgorCisgIDgpIFVwZGF0ZSB0aGUgUkVBRE1FLCBORVdTLCBhbmQgQ0hBTkdFUyBmaWxlcyB3aXRoIGRldGFpbHMgb2YKKyAgICAgc2lnbmlmaWNhbnQgY2hhbmdlcyB0byB0aGUgc3VpdGUuICBTZWUgTUFOVUFMIC0gU1RFUCAzIGxhdGVyCisgICAgIGluIHRoZXNlIGluc3RydWN0aW9ucy4KKyAgICAgJ21ha2VyZWxlYXNlJyB3aWxsIGNvbW1pdCB0aGVzZSBmaWxlcyBhdXRvbWF0aWNhbGx5LgorCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorUkVMRUFTRToKKworICA5KSBNYWtlIHN1cmUgYWxsIGNoYW5nZXMgYXJlIGNoZWNrZWQgaW46CisKKyAgICAgICAkIHN2biAtdSBzdGF0dXMKKyAgICAgICAkIHN2biAgICB1cGRhdGUKKworICAgICBbTm90ZSB0aGF0IHRoaXMgc3RlcCBpcyBvbWl0dGVkIHdoZW4gcnVubmluZyAibWFrZXJlbGVhc2UiXQorCisgMTApIENoYW5nZSB0aGUgdmVyc2lvbiBudW1iZXIgaW4gdmFyaW91cyBmaWxlcworICAgICAgIChSRUFETUUsIEZBUSwgY29uZmlndXJlLmluLCBuZXQtc25tcC5zcGVjIGFuZCBhc3NvcnRlZCBQZXJsIG1vZHVsZXMpLgorICAgICAnbWFrZXJlbGVhc2UnIHdpbGwgdXBkYXRlIGFuZCBjb21taXQgdGhlc2UgZmlsZXMgYXV0b21hdGljYWxseS4KKworIDExKSBDcmVhdGUgYSB0YWcgY2hlY2twb2ludCBmb3IgdGhpcyByZWxlYXNlOgorCisgICAgICAgJCBzdm4gY29weSAgL3RydW5rICAgICAgICAgICAgICAgICAvdGFncy9FeHQtNS14CisgICAgIG9yCisgICAgICAgJCBzdm4gY29weSAgL2JyYW5jaGVzL1Y1LXgtcGF0Y2hlcyAvdGFncy9FeHQtNS14LXkKKworIDEyKSBDb25zdHJ1Y3QgdGhlIHNvdXJjZSBwYWNrYWdlczoKKworICAgICAgICAkIHN2biBleHBvcnQgL3RhZ3MvRXh0LTUteC15L25ldC1zbm1wIG5ldC1zbm1wLTUueC55CisgICAgICAgICQgbmV0LXNubXAtNS54LnkvcmVtb3ZlLWZpbGVzICAgICAgICAgbmV0LXNubXAtNS54LnkKKyAgICAgICAgJCBzdGFyIGFydHlwZT11c3RhciAtYyAteiAtZiBuZXQtc25tcC01LngueS50YXIuZ3ogICAgbmV0LXNubXAtNS54LnkKKyAgICAgICAgJCBybSAtZiBuZXQtc25tcC01LngueS56aXAiCisgICAgICAgICQgemlwIC1yIG5ldC1zbm1wLTUueC55LnppcCBuZXQtc25tcC01LngueSIKKworCisgMTMpIFNpZ24gKG9yIGNoZWNrc3VtKSB0aGUgcGFja2FnZXM6CisKKyAgICAgV2VzL1JvYmVydDoKKyAgICAgICAgJCBncGcgLXUgbmV0LXNubXAtYWRtaW4gLWEgLS1kZXRhY2gtc2lnbiBuZXQtc25tcC01LngueS50YXIuZ3oKKyAgICAgICAgJCBncGcgLXUgbmV0LXNubXAtYWRtaW4gLWEgLS1kZXRhY2gtc2lnbiBuZXQtc25tcC01LngueS56aXAKKyAgICAgT3RoZXJzOgorICAgICAgICAkIG1kNXN1bSBuZXQtc25tcC01LngueS50YXIuZ3ogPiBuZXQtc25tcC01LngueS50YXIuZ3oubWQ1CisgICAgICAgICQgbWQ1c3VtIG5ldC1zbm1wLTUueC55LnppcCAgICA+IG5ldC1zbm1wLTUueC55LnppcC5tZDUKKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK1JFTEVBU0UgVEVTVElORzoKKworIDE0KSBVbnBhY2sgYSBjbGVhbiBjb3B5IG9mIHRoZSB0YXJiYWxsLCBjb25maWd1cmUsIGJ1aWxkIGFuZAorICAgICB0ZXN0IHRoZSByZWxlYXNlIHRhcmJhbGwuCisKKyAxNSkgRG91YmxlLWNoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG91dHN0YW5kaW5nIGNoYW5nZXMgdGhhdCBoYXZlCisgICAgIGJlZW4gbWlzc2VkIGZyb20gdGhlIENWUyBjaGVja2luOgorCisgICAgICAgICQgc3ZuIHN0YXR1cworCitOb3RlOiAgVGhpcyBpcyB0aGUgbGFzdCBzdGFnZSB0aGF0IGlzIGhhbmRsZWQgYnkgdGhlICJtYWtlcmVsZWFzZSIgc2NyaXB0CisgICAgICAgRXZlcnl0aGluZyBmb2xsb3dpbmcgd2lsbCBuZWVkIHRvIGJlIGRvbmUgbWFudWFsbHkuCisKKyAxNSkgVXBsb2FkIHRoZSBwYWNrYWdlcyAoYW5kIHNpZ25hdHVyZSBmaWxlcykgdG8gdGhlIFNvdXJjZUZvcmdlIHNlcnZlcjoKKyAKKyAgICAgICAgJCBuY2Z0cHB1dCB1cGxvYWQuc2YubmV0IGluY29taW5nIG5ldC1zbm1wLTUueC55LnRhci5negorICAgICAgICAkIG5jZnRwcHV0IHVwbG9hZC5zZi5uZXQgaW5jb21pbmcgbmV0LXNubXAtNS54LnkuemlwCisgICAgICAgICogU0YgcGFnZXM6ICAiQWRtaW4iIC0+ICJGaWxlIFJlbGVhc2VzIgorICAgICAgICAqIG5ldC1zbm1wOiAgIkFkZCBSZWxlYXNlIiAob3IgIkVkaXQgUmVsZWFzZSIpCisgICAgICAgICogQ3JlYXRlIChvciBjaG9vc2UpIGFuIGFwcHJvcHJpYXRlIHJlbGVhc2UgbmFtZQorICAgICAgICAgICAgIGUuZy4gICI1LngueSBzb3VyY2UgY29kZSIgIChvciAiNS54LnkgcHJlLXJlbGVhc2VzIikKKyAgICAgICAgKiAiRWRpdCBUaGlzIFJlbGVhc2UiCisgICAgICAgICogU2VsZWN0IHRoZSB0YXJiYWxsIGFuZC9vciBvdGhlciByZWxldmFudCBmaWxlcworCisgMTYpIEFubm91bmNlIHRoZSByZWxlYXNlIG9uIHRoZSBhcHByb3ByaWF0ZSBsaXN0LgorICAgICBQcmUtcmVsZWFzZSBhbm5vdW5jZW1lbnRzIChhbmQgYSBjYWxsIGZvciB0ZXN0aW5nKSBzaG91bGQgYmUKKyAgICAgc2VudCB0byBuZXQtc25tcC1jb2RlcnMsIHJlbGVhc2UtY2FuZGlkYXRlcyB0byBuZXQtc25tcC11c2Vycy4KKworICAgICBGdWxsIHJlbGVhc2VzIHNob3VsZCBiZSBhbm5vdW5jZWQgb24gbmV0LXNubXAtdXNlcnMsIGFuZCBhcyBhCisgICAgIG5ld3MgaXRlbSBvbiB0aGUgcHJvamVjdCBob21lIHBhZ2UgLSBpbmNsdWRpbmcgdGhlIE5FV1Mgc25pcHBldAorICAgICBvZiBzaWduaWZpY2FudCBjaGFuZ2VzIHNpbmNlIHRoZSBsYXN0IHJlbGVhc2UuCisKKyAxNykgVXBkYXRlIHRoZSBmb2xsb3dpbmcgaHRkb2NzIGZpbGVzIChpbiB0aGUgbWFpbiBTVk4gdHJ1bmspOgorICAgICAgICAgaHRkb2NzL2Rvd25sb2FkLmh0bWwKKyAgICAgICAgIGh0ZG9jcy9kZXYvc2NoZWR1bGUuaHRtbAorCisgICAgIFtNYWtlIHN1cmUgeW91IGhhdmUgcGVybWlzc2lvbnMgc2V0IHVwIHByb3Blcmx5IG9uIHRoZSB3ZWIKKyAgICAgIHNlcnZlciBzbyB0aGF0IGZpbGVzIGNyZWF0ZWQgYmVjb21lIGdyb3VwLXdyaXRhYmxlISEhXQorCisgICAgIFRoYXQgY29uY2x1ZGVzIHRoZSBwcm9jZXNzIGZvciBwcmUtcmVsZWFzZXMgYW5kIHJlbGVhc2UtY2FuZGlkYXRlcy4KKyAgICAgRm9yIGZ1bGwgcmVsZWFzZXMsIHdhaXQgYSB3ZWVrIHRvIGVuc3VyZSB0aGF0IHRoZXJlIGFyZSBubyBtYWpvcgorICAgICBwcm9ibGVtcywgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCB0aGUgcmVtYWluaW5nIHN0ZXBzLgorCisgICAgICAgIElmIHRoZXJlIGFyZSBrbm93biBwcm9ibGVtcyBhbmQgYW5vdGhlciByZWxlYXNlIGlzIHBsYW5uZWQgdG8KKyAgICAgZml4IHRoZW0sIGRvbid0IGFubm91bmNlIHRoZSBicm9rZW4gdmVyc2lvbiAtIHdhaXQgZm9yIHRoZSB1cGRhdGVkCisgICAgIG9uZSBpbnN0ZWFkLgorCisgMTgpIE9uY2UgdGhpcyB3ZWVrIGhhcyBlbGFwc2VkLCBzdWJtaXQgYW4gYW5ub3VuZW1lbnQgb2YgdGhlIG5ldworICAgICByZWxlYXNlIHRvIG5ldC1zbm1wLWFubm91bmNlLiAgVGhpcyBtZXNzYWdlIHdpbGwgbmVlZCB0byBiZQorICAgICBleHBsaWNpdGx5IGF1dGhvcml6ZWQgdmlhIE1haWxNYW4uCisKKyAgICAgQWxzbyB1cGRhdGUgdGhlIElSQyB0b3BpYyB0byBpbmNsdWRlIG1lbnRpb24gb2YgdGhpcyByZWxlYXNlLgorCisgMTkpIEZvciBhIHJlbGVhc2Ugb24gdGhlIG1vc3QgcmVjZW50IGRldmVsb3BtZW50IGxpbmUsIHN0YXJ0IGJ1Z2dpbmcKKyAgICAgV2VzIHRvIHVwZGF0ZSB0aGUgZnJlc2htZWF0LCBGcmVlIFNvZnR3YXJlIERpcmVjdG9yeSBhbmQKKyAgICAgV2lraXBlZGlhIGVudHJpZXMuCisKKyAyMCkgRm9yIGEgcmVsZWFzZSBvbiB0aGUgbW9zdCByZWNlbnQgZGV2ZWxvcG1lbnQgbGluZSwgdXBkYXRlIHRoZQorICAgICAnaHRkb2NzL3BhZ2UtdG9wLmh0bWwnIGZpbGUgKGluIHRoZSBtYWluIFNWTiB0cnVuaykgdG8gcmVmZXJlbmNlCisgICAgIHRoZSBsYXRlc3QgdmVyc2lvbi4KKworICAgICBVcGRhdGUgdGhlIGZvbGxvd2luZyBmaWxlcyB3aXRoIGFueSBjaGFuZ2VzOgorCisgICAgICAgICBodGRvY3MvZG9jcy9yZWFkbWVmaWxlcy9ORVdTCisgICAgICAgICBodGRvY3MvZG9jcy9yZWFkbWVmaWxlcy9DSEFOR0VTCisgICAgICAgICBodGRvY3MvZG9jcy9yZWFkbWVmaWxlcy9SRUFETUUqCisgICAgICAgICBodGRvY3MvQ09QWUlORworCisgICAgIFtNYWtlIHN1cmUgeW91IGhhdmUgcGVybWlzc2lvbnMgc2V0IHVwIHByb3Blcmx5IG9uIHRoZSB3ZWIKKyAgICAgIHNlcnZlciBzbyB0aGF0IGZpbGVzIGNyZWF0ZWQgYmVjb21lIGdyb3VwLXdyaXRhYmxlISEhXQorICAgICAgICAgCisKKyAyMSkgRm9yIGEgbWFqb3IgbmV3LWZlYXR1cmUgcmVsZWFzZSAoaS5lLiA1LngpLCBjcmVhdGUgdGhlIHBhdGNoZXMKKyAgICAgYnJhbmNoOgorCisgICAgICAgICQgc3ZuIGNvcHkgIC90YWdzL0V4dC01LXggICAvYnJhbmNoZXMvVjUteC1wYXRjaGVzCisKKyAgICAgYW5kIHVwZGF0ZSB0aGUgU1ZOIG1haW4gdHJ1bmsgd2l0aCBhIG5ldyB2ZXJzaW9uIG51bWJlcjoKKworICAgICAgICAkIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwgLXYgNS4oeCsxKS5kZXYgLU0gLVAgLUMKKworICAgICBUaGUgMSB3ZWVrIGRlbGF5IChhbmQgY29udGludWVkIGNvZGUgZnJlZXplKSBpcyB0byB0byBlbnN1cmUgdGhhdAorICAgICBkZXZlbG9wZXIgZWZmb3J0IGlzIGNvbmNlbnRyYXRlZCBvbiBpbW1lZGlhdGUgcHJvYmxlbXMgZm9sbG93aW5nCisgICAgIHRoZSByZWxlYXNlLiAgQW55IG1ham9yIHByb2JsZW1zIHNob3VsZCBob3BlZnVsbHkgY29tZSB0byBsaWdodAorICAgICBkdXJpbmcgdGhpcyBwZXJpb2QsIHNvIGFmdGVyIGEgd2VlayBpdCBzaG91bGQgYmUgc2FmZSB0byBjcmVhdGUKKyAgICAgdGhlIHBhdGNoZXMgYnJhbmNoIGFuZCBvZmZpY2lhbGx5IGVuZCB0aGUgY29kZSBmcmVlemUgb24gTUFJTi4KKworIDIyKSBVcGRhdGUgdGhlIG9mZmljaWFsIHBhdGNoZXMgdHJhY2tlciBzZXQ6CisKKyAgICAgLSBhbnkgcGF0Y2hlcyBmb3IgdGhpcyBuZXcgcmVsZWFzZSB0YXJiYWxsIHNob3VsZCBiZSBnaXZlbgorICAgICAgIHByaW9yaXR5IDkKKyAgICAgLSBhbGwgcGF0Y2hlcyBmb3IgdGhlIHByZXZpb3VzIHJlbGVhc2Ugb24gdGhpcyBsaW5lIHNob3VsZAorICAgICAgIGJlIG1hcmtlZCBhdCBwcmlvcml0eSA1CisgICAgIC0gYWxsIHBhdGNoZXMgZm9yIGVhcmxpZXIgcmVsZWFzZXMgb24gdGhpcyBsaW5lIHNob3VsZAorICAgICAgIGJlIG1hcmtlZCBhdCBwcmlvcml0eSAxLCBhbmQgY2xvc2VkCisKKyAgICAgSWYgYSBsaW5lIGhhcyBiZWVuIGRlc2lnbmF0ZWQgY2xvc2VkLCB0aGVuIGFsbCBvZmZpY2lhbAorICAgICBwYXRjaGVzIGZvciB0aGF0IGxpbmUgc2hvdWxkIGJlIG1hcmtlZCBhcyBjbG9zZWQgYXMgd2VsbC4KKworIDIzKSBIaWRlIHRoZSBwcmUtcmVsZWFzZSByZXBvc2l0b3J5IGZyb20gdGhlIEZpbGUgUmVsZWFzZXMKKyAgICAgYWRtaW4gcGFnZXMuCisKKyAyNCkgQ2xlYW4gdXAgdGhlICdkaXN0JyBkaXIgb2YgdGhlIHJlbGV2YW50IFY1LXgtcGF0Y2hlcyBicmFuY2guCisgICAgIE9ubHkgbGVhdmUgdGhlIGZvbGxvd2luZyBmaWxlczoKKworICAgICBjaGFuZ2Vsb2dmaXggIGN2c3Nob3cgIGN2c3VwICBleHRyYWN0bmV3cyAgbWFrZXJlbGVhc2UKKyAgICAgbmV0LXNubXAuc3BlYyAgc25tcGQtaW5pdC5kICBzbm1wdHJhcGQtaW5pdC5kCisKKyAgICAgTm90ZSB0aGF0IGFueSBmaWxlcyByZW1vdmVkIHNob3VsZCBhbHNvIGJlIGRlbGV0ZWQgZnJvbQorICAgICBTVk4gcmVwb3NpdG9yeS4KKworCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0NSRUFUSU5HIEJJTkFSWSBESVNUUklCVVRJT05TCisKKyAgMCkgQWx3YXlzIFJFTU9WRSBBTEwgUFJFVklPVVMgSU5TVEFMTFMgRklSU1QsIHRoZW4gZG8gYSBtYWtlIGluc3RhbGwKKyAgICAgZnJvbSB0aGUgdGFyLWJhbGwgZXh0cmFjdGVkIHNvdXJjZXMgYW5kICpUSEVOKiByZWJ1aWxkIGFsbAorICAgICBiaW5hcmllcyBhZ2Fpbi4gIFRoaXMgZW5zdXJlcyB0aGF0IGV2ZXJ5dGhpbmcgKGVzcGVjaWFsbHkgcGVybAorICAgICBtb2R1bGVzKSBhcmUgcHJvcGVybHkgbGlua2VkIGFnYWluc3QgdGhlIHJpZ2h0IGxpYnJhcmllcy4KKworICAxKSBhbHdheXMgYnVpbGQgcmVsZWFzZXMgZnJvbSBhIHRhcmJhbGwsIG5vdCBmcm9tIFNWTi4KKworICAyKSBBZGQgbWliIG1vZHVsZXMgdGhhdCBhcmUgY29tbW9uLiAgQmFzaWNhbGx5LCBhZGQ6CisKKyAgICAgICBob3N0ICAgICAgICAgICAgICAgICAgICAgIC0tIHdoZXJlIHN1cHBvcnRlZC4KKyAgICAgICBkaXNtYW4vZXZlbnQtbWliCisgICAgICAgc211eAorCisgIDMpIHVzZSAtLXdpdGgtZGVmYXVsdHMgLS13aXRoLXN5c2NvbnRhY3Q9IlVua25vd24iIAorICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1zeXNsb2NhdGlvbj0iVW5rbm93biIKKworICA0KSB3aGVuIHJ1bm5pbmcgbWFrZSBpbnN0YWxsLCBkbyBpdCBsaWtlOgorCisgICAgICQgbWFrZSBpbnN0YWxsIHByZWZpeD0vc29tZS9wYXRoL3RvL2hvbWUvQVJDSC91c3IvbG9jYWwgXAorICAgICAgICAgICAgZXhlY19wcmVmaXg9L3NvbWUvcGF0aC90by9ob21lL0FSQ0gvdXNyL2xvY2FsCisgICAgCisgIDUpIFRhciBpdCB1cDoKKworICAgICAkIGNkIC9zb21lL3BhdGgvdG8vaG9tZS9BUkNICisgICAgICQgdGFyIGN6ZiBuZXQtc25tcC01LjAuMy1BUkNILnRhci5neiB1c3IvbG9jYWwKKworICA2KSB1cGxvYWQgYW5kIHJlbGVhc2UsIGxpa2UgeW91IGRpZCBmb3IgdGhlIHNvdXJjZSBjb2RlIGJ1dCB3aXRoIGEKKyAgICAgZGlmZmVyZW50IHBhY2thZ2UgbmFtZSBmb3IgYmluYXJpZXMgKDUuMC4zIGJpbmFyaWVzKS4KKworICA3KSBSUE1zIFtkbyB0aGlzIGluIG1haW4gbGluZSBldmVuIGlmIGl0cyBmb3IgYSBwYXRjaCBicmFuY2hdOgorICAgICAkIGNkIGRpc3QKKyAgICAgJCBjcCAuLi9uZXQtc25tcC01LjAuOC50YXIuZ3ogcnBtL1NPVVJDRVMKKyAgICAgJCBtYWtlIFJFTEVBU0U9MQorICAgICAKKyAgICAgVGhpcyBzaG91bGQgcHV0IG11bHRpcGxlIGJpbmFyeSBycG0gZmlsZXMgaW46CisgICAgICAgZGlzdC9ycG0vUlBNUy9pMzg2LworICAgICBBbmQgb25lIHNvdXJjZSBSUE0gaW46CisgICAgICAgZGlzdC9ycG0vU1JQTVMvCisKKyAgICAgKioqIFRoZXNlIGZpbGVzIG5lZWQgdG8gYmUgcmVuYW1lZCB0byBpbmNsdWRlIHRoZSBPUyB2ZXJzaW9uLgorCisgICAgICAgICBFRzogLi4uaTM4Ni5ycG0gbmVlZHMgdG8gYmVjb21lIC4uLmZjNS5pMzg2LnJwbQorCisgIDgpIFJlbW92ZSAob3IgaGlkZSkgYmluYXJpZXMgZnJvbSBvbGRlciByZWxlYXNlcyBvZiB0aGUgc2FtZSBsaW5lLAorICAgICB3aGVyZSB5b3UgaGF2ZSBzdWJtaXR0ZWQgYSBuZXdlciBiaW5hcnkgZm9yIHRoZSBzYW1lIGFyY2hpdGVjdHVyZS4KKyAgICAgT25jZSB0aGUgbGFzdCBiaW5hcnkgZm9yIGEgcGFydGljdWxhciByZWxlYXNlIHZlcnNpb24gaGFzIGJlZW4KKyAgICAgcmVtb3ZlZCwgaGlkZSB0aGF0IHJlcG9zaXRvcnkuCisgICAgIAorCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorTUFOVUFMIC0gU1RFUCAxCisKKyAgQ2hhbmdpbmcgdGhlIGxpYnRvb2wgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBNYWtlZmlsZS50b3AuCisKKyAgICAgIC0gSWYgYW55IGludGVyZmFjZXMvc3RydWN0dXJlcyBoYXZlIGJlZW4gcmVtb3ZlZCBvciBjaGFuZ2VkIHNpbmNlIHRoZQorICAgICAgICBsYXN0IHVwZGF0ZSwgaW5jcmVtZW50IGN1cnJlbnQgKCs1KSwgYW5kIHNldCBhZ2UgYW5kIHJldmlzaW9uIHRvIDAuCisgICAgICAgIFN0b3AhCisKKyAgICAgIC0gSWYgYW55IGludGVyZmFjZXMgaGF2ZSBiZWVuIGFkZGVkIHNpbmNlIHRoZSBsYXN0IHB1YmxpYyByZWxlYXNlLAorICAgICAgICB0aGVuIGluY3JlbWVudCBjdXJyZW50IGFuZCBhZ2UsIGFuZCBzZXQgcmV2aXNpb24gdG8gMC4KKyAgICAgICAgU3RvcCEKKworICAgICAgLSBJZiB0aGUgc291cmNlIGNvZGUgaGFzIGNoYW5nZWQgYXQgYWxsIHNpbmNlIHRoZSBsYXN0IHVwZGF0ZSwKKyAgICAgICAgdGhlbiBpbmNyZW1lbnQgcmV2aXNpb24gKGM6cjphIGJlY29tZXMgYzpyKzE6YSkuCisKKyAgICAgIE5vdGU6IG1haW50ZW5hbmNlIHJlbGVhc2VzIChlZyA1LjIueCkgc2hvdWxkIG5ldmVyIGhhdmUgY2hhbmdlcworICAgICAgICAgICAgdGhhdCB3b3VsZCByZXF1aXJlIGN1cnJlbnQgdG8gYmUgaW5jcmVtZW50ZWQuCisKKyAgVGhlIGNoZWNrLWFwaS1jaGFuZ2VzIHNjcmlwdCBpbiB0aGUgZGlzdCBkaXJlY3Rvcnkgd2lsbCBjb25zdHJ1Y3QgYQorICBkaWZmIG9mIGFsbCBoZWFkZXJzLCB3aGljaCBjYW4gYmUgdXNlZnVsIGZvciBkZXRlcm1pbmluZyBpZiBhbnl0aGluZworICBuZWVkcyBidW1waW5nLgorCisgICAgIFVwZGF0ZSB0aGVzZSB2YXJpYWJsZXMgbm93LCBzbyB0aGF0IHdoZW4geW91IHJ1bgorICAgICBtYWtlIGluIGEgc2Vjb25kIHRvIHRlc3QgdGhpbmdzIHlvdSBjYW4gc3BvdCBsaWJ0b29sIHllbGxpbmcKKyAgICAgYWJvdXQgaW1wcm9wZXIgbnVtYmVyaW5nIGJlZm9yZSB5b3UgbWFrZSB0aGUgcmVsZWFzZSBhbmQgbm90CisgICAgIGFmdGVyIHlvdSd2ZSB1cGxvYWRlZCB0aGUgdGFyIGJhbGwgOi0vCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitNQU5VQUwgLSBTVEVQIDIKKworICBDaGFuZ2luZyB0aGUgbGlidG9vbCB2ZXJzaW9uIGluZm9ybWF0aW9uIGluIE1ha2VmaWxlLnRvcC4KKyAgVXBkYXRpbmcgdGhlIENoYW5nZUxvZyBmaWxlCisKKyAgICAgIC0gVGhlIENoYW5nZUxvZyBlbnRyaWVzIGFyZSBleHRyYWN0ZWQgKG5vcm1hbGx5IGF1dG9tYXRpY2FsbHkpCisgICAgICAgIHVzaW5nIHRoZSBjb21tYW5kOgorCisgICAgICAgICAgJCBzdm4yY2wgLWYgQ2hhbmdlTG9nLmFkZCAtLWJyZWFrLWJlZm9yZS1tc2cgLS1zdG9wLW9uLWNvcHkKKworICAgICAgICBJZiB5b3UgZG9uJ3QgaGF2ZSBzdm4yY2wgaW5zdGFsbGVkLCB5b3UgY2FuIHRyeSBhbmQgZmluZCBhCisgICAgICAgIHN1aXRhYmxlIGJpbmFyeSBwYWNrYWdlIGZvciB5b3VyIGFyY2hpdGVjdHVyZSwgb3IgeW91IGNhbgorICAgICAgICBnZXQgaXQgZGlyZWN0bHkgZnJvbQorICAgICAgICAgICAgICBodHRwOi8vY2gudHVkZWxmdC5ubC9+YXJ0aHVyL3N2bjJjbAorICAgICAgICBZb3UgbWF5IG5lZWQgdG8gcmVuYW1lIHRoZSBzY3JpcHQgZnJvbSAnc3ZuMmNsLnNoJyB0byAnc3ZuMmNsJworCisgICAgICAtIEluIGVpdGhlciBjYXNlLCB0aGV5IGFyZSBmaXhlZCB1cCAoYXV0b21hdGljYWxseSkgdXNpbmc6CisKKyAgICAgICAgICAkIHBlcmwgZGlzdC9jaGFuZ2Vsb2dmaXggPCBDaGFuZ2VMb2cuYWRkID4gQ2hhbmdlTG9nLnJlYWxseWFkZAorICAgICAgICBvcgorICAgICAgICAgICQgcGVybCBkaXN0L2NoYW5nZWxvZ2ZpeCBWNS17Tn0tcGF0Y2hlcyA8IENoYW5nZUxvZy5hZGQgPiBDaGFuZ2VMb2cucmVhbGx5YWRkCisKKyAgICAgIC0gVGhlIG1hbnVhbCBwcm9jZXNzaW5nIHN0ZXAgaXMgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBwb3J0aW9uCisgICAgICAgIG9mIHRoZSBmaWxlICdDaGFuZ2VMb2cucmVhbGx5YWRkJyBpbnRvICdDaGFuZ2VMb2cnLiAgWW91IGNhbgorICAgICAgICB1c3VhbGx5IGZpbmQgdGhlIHBvaW50IHdoZXJlIHRoZSBwcmV2aW91cyByZWxlYXNlIHN0YXJ0ZWQgaW4KKyAgICAgICAgdGhlIGZpbGUgYnkgc2VhcmNoaW5nIGZvciAidmVyc2lvbiB0YWciLgorCisgICAgICAtIFBsZWFzZSBrZWVwIHRoZSBsaW5lIG9mIGRhc2hlcyBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLCBhcyB0aGlzCisgICAgICAgIG1ha2VzIGl0IGVhc2llciB0byBjb3B5IGR1cmluZyB0aGUgbmV4dCByZWxlYXNlLgorCisgICAgICAtIElmIHVzaW5nIGVtYWNzLCBzd2l0Y2ggZnJvbSBjaGFuZ2Vsb2ctbW9kZSB0byB0ZXh0LW1vZGUuCisKKyAgICAgIC0gQ2hlY2sgaW4gdGhlIG5ldyBDaGFuZ2VMb2c6CisKKyAgICAgICAgICAkIHN2biBjb21taXQgLW0gInVwZGF0ZSBmb3IgcmVsZWFzZSBYIiBDaGFuZ2VMb2cKKworICAgICAgICBUaGlzIGlzIGRvbmUgYXV0b21hdGljYWxseSBieSAibWFrZXJlbGVhc2UiCisKKworKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitNQU5VQUwgLSBTVEVQIDMKKworVXBkYXRpbmcgUkVBRE1FLCBORVdTLCBhbmQgQ0hBTkdFUyBmaWxlcworCisgIFsgVGhpcyBpbmZvcm1hdGlvbiBoYXMgYmVlbiBtb3ZlZCB0bzoKKworICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9Db21taXRfbWVzc2FnZV9hdXRvLWV4dHJhY3Rpb25fZm9ybWF0cworCisgIF0KKworSG93ZXZlciwgbGVhdmluZyBzb21lIGV4YW1wbGVzIGhlcmUgZm9yIHF1aWNrIHJlZmVycmFsOgorCisgIFNWTiBjb21taXQgbWVzc2FnZXMgdGhhdCBnZW5lcmF0ZSBhdXRvLU5FV1MgYW5kIGF1dG8tQ0hBTkdFUworICBleHRyYWN0aW9ucyBzaG91bGQgYmUgZm9ybWF0dGVkIGxpa2UgdGhlIGZvbGxvd2luZyBleGFtcGxlczoKKworICAgIE5FV1M6IHNubXBkOiBJIGRpZCBzb21ldGhpbmcgcmVhbGx5IGNvb2wgdG8gdGhlIGFnZW50CisgICAgQ0hBTkdFUzogc25tcHRyYXBkOiBmaXhlZCBzb21ldGhpbmcgbWlub3IgaW4gc25tcHRyYXBkCisgICAgTkVXUzogcGVybDogUEFUQ0g6IDEyMyw0NTY6IEFwcGxpZWQgcGF0Y2hlcyAxMjMgYW5kIDQ1NiB0byBzdXBwb3J0IHBlcmw2CisgICAgQ0hBTkdFUzogQlVHOiAxMzogRml4ZWQgYnVnIDEzICYgc2VjdXJlZCB0aGUgd29ybGQgYXQgbGFyZ2UgYWdhaW5zdCBoYWNrZXJzCisgICAgTkVXUzogcGVybDogUEFUQ0g6IDEyMzogZnJvbSBSb2JlcnQ6IGRpZCBzb21ldGhpbmcKKyAgICBORVdTOiBwZXJsOiBQQVRDSDogMTIzOiBmcm9tICJSb2JlcnQgU3RvcnkiOiBkaWQgc29tZXRoaW5nIGVsc2UKZGlmZiAtLWdpdCBhL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbiBiL2Rpc3QvYXV0b2NvbmYtdmVyc2lvbgppbmRleCBhY2MwNzk3Li5jOTVmZWE1IDEwMDY0NAotLS0gYS9kaXN0L2F1dG9jb25mLXZlcnNpb24KKysrIGIvZGlzdC9hdXRvY29uZi12ZXJzaW9uCkBAIC0xICsxIEBACi0yLjU5CisyLjYzCmRpZmYgLS1naXQgYS9kaXN0L2NoZWNrLWFwaS1jaGFuZ2UgYi9kaXN0L2NoZWNrLWFwaS1jaGFuZ2UKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMWY2MWU0MgotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvY2hlY2stYXBpLWNoYW5nZQpAQCAtMCwwICsxLDU0IEBACisjIS9iaW4vc2gKKyMKKyMgc2ltcGxpc3RpYyBzY3JpcHQgdG8gY2hlY2sgYWxsIGhlYWRlciBmaWxlcyBmb3IKKyMgZGlmZmVyZW5jZXMuIEludGVuZGVkIHRvIGhlbHAgZGV0ZWN0IGFwaSBjaGFuZ2VzCisjIGJldHdlZW4gcmVsZWFzZXMuCisjCisjIGl0J3Mgbm90IHByZXR0eSBvciBlZmZpY2llbnQsIGFuZCBpbnNwZWN0aW9uIG9mCisjIHRoZSByZXN1bHRzIG11c3QgYmUgZG9uZSBtYW51YWxseS4KKyMKKyMgaXQncyBhbHNvIG5vdCBzZWN1cmUgKGRvbid0IHJ1biBhcyByb290KQorIyBvciBwb3J0YWJsZS4gVGVzdGVkIG9uIExpbnV4LgorIworCitpZiBbICJ4JDEiID0gIngiIC1vICJ4JDIiID0gIngiIF07IHRoZW4KKyAgIGVjaG8gIlVzYWdlOiAkMCA8b2xkLWRpcj4gPG5ldy1kaXI+IgorICAgZXhpdCAxCitmaQorCitvZD0kMQorbmQ9JDIKK0RJUj0vdG1wCitPVVRQVVQ9JERJUi9hcGktZGlmZi5wYXQKK09EVD0kRElSL2FwaS1vZAorCitpZiBbICEgLWQgJG9kIF07IHRoZW4KKyAgIGVjaG8gIm9sZCBkaXIgJG9kIGRvZXNuJ3QgZXhpc3QiCisgICBleGl0IDEKK2ZpCisKK2lmIFsgISAtZCAkbmQgXTsgdGhlbgorICAgZWNobyAib2xkIGRpciAkbmQgZG9lc24ndCBleGlzdCIKKyAgIGV4aXQgMQorZmkKKworIyBmaW5kIGhlYWRlciBpbiBuZAorcm0gLWYgJE9VVFBVVCAkT0RUIDI+L2Rldi9udWxsCisoY2QgJG9kICYmIGZpbmQgLiAtdHlwZSBmIC1uYW1lICIqLmgifHNvcnQgPiAkT0RUKQorCitPSD1gY2F0ICRPRFRgCitmb3IgaCBpbiAkT0gKK2RvCisgICBuaD0kbmQvJGgKKyAgIG9oPSRvZC8kaAorICAgZWNobyAiKiAkbmgiCisgICBpZiBbIC1mICIkbmgiIF07IHRoZW4KKyAgICAgIGVjaG8gIiogZGlmZjogJGggdnMgJG5oIiA+PiAkT1VUUFVUCisgICAgICBkaWZmIC11ICRvaCAkbmggPj4gJE9VVFBVVCAyPiYxCisgICBlbHNlCisgICAgICBlY2hvICIqIE9sZCBoZWFkZXIgJGggbm90IGZvdW5kIGluIG5ldyBoZWFkZXJzIiA+PiAkT1VUUFVUCisgICBmaQorZG9uZQorCitlY2hvICJJbnNwZWN0IG91dHB1dCBpbiAkT1VUUFVUIgorZWNobyAiU2VlIE1ha2VmaWxlLnRvcCBmb3IgbGlidG9vbCB2ZXJzaW9uIGJ1bXBpbmcgcnVsZXMuIgpkaWZmIC0tZ2l0IGEvZGlzdC9jdnNzaG93IGIvZGlzdC9jdnNzaG93CmluZGV4IDYyM2IzMmQuLjc1Mzk1OTUgMTAwNzU1Ci0tLSBhL2Rpc3QvY3Zzc2hvdworKysgYi9kaXN0L2N2c3Nob3cKQEAgLTEsNDYgKzEsNjkgQEAKLSMhL2Jpbi9iYXNoCi0jCi0jICRJZCQKKyMhL2Jpbi9zaAogIwogZXhwb3J0IENWU19SU0g9c3NoCiBUQUc9CiAKLWlmIFsgJCMgLWVxIDAgXTsgdGhlbgotCURJUj0uCi1lbHNlCi0JaWYgWyAkIyAtbmUgMSBdOyB0aGVuCi0JCWVjaG8gInVzYWdlOiAkMCA8d29ya2luZyBkaXJlY3Rvcnk+IgotCQlleGl0Ci0JZmkKLQlESVI9JDEKLWZpCi0KLWlmIFsgISAtZCAkRElSIF07IHRoZW4KLQllY2hvICJubyBzdWNoIGRpcmVjdG9yeSAnJERJUiciCi0JZXhpdAotZmkKLQotaWYgWyAhIC1kICRESVIvQ1ZTIF07IHRoZW4KLQllY2hvICInJERJUicgaGFzIG5vIENWUyBkaXJlY3RvcnkhIgotCWV4aXQKLWZpCi0KLWlmIFsgISAtZiAkRElSL0NWUy9SZXBvc2l0b3J5IF07IHRoZW4KK2RvX2N2cygpCit7CisgICBESVI9JDEKKyAgIGlmIFsgISAtZiAkRElSL0NWUy9SZXBvc2l0b3J5IF07IHRoZW4KIAllY2hvICInJERJUicgaGFzIG5vIENWUy9SZXBvc2l0b3J5ISIKIAlleGl0Ci1maQorICAgZmkKIAotaWYgWyAhIC1mICRESVIvQ1ZTL1Jvb3QgXTsgdGhlbgorICAgaWYgWyAhIC1mICRESVIvQ1ZTL1Jvb3QgXTsgdGhlbgogCWVjaG8gIickRElSJyBoYXMgbm8gQ1ZTL1Jvb3QhIgogCWV4aXQKLWZpCisgICBmaQogCi1pZiBbIC1mICRESVIvQ1ZTL1RhZyBdOyB0aGVuCisgICBpZiBbIC1mICRESVIvQ1ZTL1RhZyBdOyB0aGVuCiAJVEFHPSItciBgY2F0ICRESVIvQ1ZTL1RhZyB8IGN1dCAtYyAyLWAiCisgICBmaQorCisgICBSRVA9ImBjYXQgJERJUi9DVlMvUmVwb3NpdG9yeWAiCisgICBST09UPSJgY2F0ICRESVIvQ1ZTL1Jvb3RgIgorCisgICBlY2hvICJEaXJlY3RvcnkgJERJUiBpcyByb290ZWQgYXQgJFJPT1QsICRUQUcgJFJFUC4uLiIKKyAgIGVjaG8gIiAgIHVwZGF0ZSB3aXRoIGN2cyAtejMgLWQgJFJPT1QgLXEgY28gJFRBRyAtZCAkRElSICRSRVAiCit9CisKK2RvX3N2bigpCit7CisgICBESVI9JDEKKyAgIGlmIFsgISAtZCAkRElSLy5zdm4gXTsgdGhlbgorCWVjaG8gIickRElSJyBoYXMgbm8gLnN2bi8gc3ViZGlyISIKKwlleGl0CisgICBmaQorCisgICBST09UPWBzdm4gaW5mbyB8IGdyZXAgVVJMfGN1dCAtZjIgLWQgIiAiYAorICAgaWYgWyAteiAiJFJPT1QiIF07IHRoZW4KKyAgICAgIGVjaG8gIkNvdWxkbid0IGZpbmQgcm9vdCBmcm9tICRESVIvLnN2bi9lbnRyaWVzIgorICAgICAgZXhpdCAxCisgICBmaQorCisgICBlY2hvICJEaXJlY3RvcnkgJERJUiBpcyByb290ZWQgYXQgJFJPT1QuLi4iCisgICBlY2hvICIgICB1cGRhdGUgd2l0aCBzdm4gY28gJFJPT1QgJERJUiIKK30KKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisJRElSUz0uCitlbHNlCisJRElSUz0kQAogZmkKIAotUkVQPSJgY2F0ICRESVIvQ1ZTL1JlcG9zaXRvcnlgIgotUk9PVD0iYGNhdCAkRElSL0NWUy9Sb290YCIKK2ZvciBkIGluICRESVJTCitkbworICAgaWYgWyAhIC1kICRkIF07IHRoZW4KKwllY2hvICJubyBzdWNoIGRpcmVjdG9yeSAnJGQnIgorCWV4aXQKKyAgIGZpCiAKLWVjaG8gIkRpcmVjdG9yeSAkRElSIGlzIHJvb3RlZCBhdCAkUk9PVCwgJFRBRyAkUkVQLi4uIgotZWNobyAidXBkYXRlIHdpdGggY3ZzIC16MyAtZCAkUk9PVCAtcSBjbyAkVEFHIC1kICRESVIgJFJFUCIKKyAgIGlmIFsgLWQgJGQvQ1ZTIF07IHRoZW4KKwlkb19jdnMgJGQKKyAgIGVsaWYgWyAtZCAkZC8uc3ZuIF07IHRoZW4KKwlkb19zdm4gJGQKKyAgIGVsc2UKKwllY2hvICInJGQnIGhhcyBuZWl0aGVyIENWUyBub3IgU1ZOIGluZm9ybWF0aW9uISIKKyAgIGZpCitkb25lCisKZGlmZiAtLWdpdCBhL2Rpc3QvY3ZzdXAgYi9kaXN0L2N2c3VwCmluZGV4IDA4YzhhNzUuLmNhMDdiMGYgMTAwNzU1Ci0tLSBhL2Rpc3QvY3ZzdXAKKysrIGIvZGlzdC9jdnN1cApAQCAtMSw4ICsxLDggQEAKLSMhL3Vzci9iaW4vZW52IGJhc2gKKyMhL2Jpbi9zaAogIwogIyAkSWQkCiAjCi1leHBvcnQgQ1ZTX1JTSD1zc2gKK0NWU19SU0g9c3NoOyBleHBvcnQgQ1ZTX1JTSAogVEFHPQogV089MAogREVTVD0KQEAgLTE4LDYgKzE4LDcgQEAKICAgICAgICAgVEFSPScvdXNyL2Jpbi9zdGFyIC1IdXN0YXIgLW5vdCAtcGF0PSIqL0NWUy8qIiAtYyAtZicKICAgICBlbGlmIFsgLXggL2Jpbi90YXIgXTsgdGhlbgogICAgICAgICBUQVI9Ii9iaW4vdGFyIC0tZXhjbHVkZT1DVlMgLWMgLWYiCisgICAgICAgIGVjaG8gIndhcm5pbmc6IHN0YXIgbm90IGF2YWlsYWJsZSwgdXNpbmcgKGxlc3MgcG9ydGFibGUpIHRhci4uLiIKICAgICBlbHNlCiAgICAgICAgIGVjaG8gIm5laXRoZXIgL3Vzci9iaW4vc3RhciBub3IgL2Jpbi90YXIgZm91bmQuIgogICAgICAgICBleGl0CmRpZmYgLS1naXQgYS9kaXN0L21ha2VyZWxlYXNlIGIvZGlzdC9tYWtlcmVsZWFzZQpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYjQ2YjlmOS4uMDAwMDAwMAotLS0gYS9kaXN0L21ha2VyZWxlYXNlCisrKyAvZGV2L251bGwKQEAgLTEsMzU1ICswLDAgQEAKLSMhL3Vzci9iaW4vcGVybAotCi11c2Ugc3RyaWN0OwotdXNlIFBvZDo6VXNhZ2U7Ci0KLQotbXkgJW9wdHM7Ci1teSAkZGVzY3I7Ci0KLUxvY2FsR2V0T3B0aW9ucyhcJW9wdHMsCi0JICAgWydyfHJlZ2V4cC1pZ25vcmUtc3RlcHM9cycsJ0lnbm9yZSB0aGVzZSBSRUdFWFAgc3RlcHMnXSwKLQkgICBbJ3N8c3RhcnQtYXQ9cycsICAgICAgICAgICAnU2tpcCBhbGwgc3RlcHMgdW50aWwgQVJHJ10sCi0JICAgWydpfGludGVyYWN0aXZlJywgICAgICAgICAgJ1Byb21wdCB3aGV0aGVyIHRvIGRvIGVhY2ggc3RlcCddLAotCSAgIFsnbnxkcnktcnVuJywgICAgICdEcnkgcnVuIG9ubHkuICBEb25cJ3QgYWN0dWFsbHkgZG8gYW55dGhpbmcuJ10sCi0JICAgWydofGhlbHAnLCAnSGVscCddKTsKLQotcG9kMnVzYWdlKDEpIGlmICgkb3B0c3snaCd9KTsKLW15ICR2ZXJzaW9uID0gc2hpZnQ7Ci1wb2QydXNhZ2UoICJObyB2ZXJzaW9uIHN1cHBsaWVkIiApIGlmICghJHZlcnNpb24pOwotbXkgJGV4dHJhanVuayA9IHNoaWZ0OwotcG9kMnVzYWdlKCAiVW5leHBlY3RlZCBhcmd1bWVudCAoJGV4dHJhanVuaykiICkgaWYgKCRleHRyYWp1bmspOwotbXkgJHZ0YWcgICA9ICR2ZXJzaW9uOwotbXkgJGJyYW5jaCA9ICIiOwotIyBFbnN1cmUgd2UgaGF2ZSBib3RoIG51bWVyaWMgYW5kIHRhZy1zdHlsZSB2ZXJzaW9uIGxhYmVscwotIyBwbHVzIHRoZSBicmFuY2ggdGhhdCB3ZSdyZSB3b3JraW5nIGZyb20gKGlmIHJlbGV2YW50KQotaWYgKCAkdmVyc2lvbiA9fiAvXkV4dC8pIHsKLSAgICAkdmVyc2lvbiA9fiBzL15FeHQtLy9nOwotICAgICR2ZXJzaW9uID1+IHMvLS8uL2c7Ci19IGVsc2UgewotICAgICR2dGFnID1+IHMvXC4vLS9nOwotICAgICR2dGFnID0gIkV4dC0iIC4gJHZ0YWc7Ci19Ci1pZiAoICR2ZXJzaW9uID1+IC9eKFswLTldXC5bMC05XSlcLlswLTldLykgewotICAgICgkYnJhbmNoID0gJHZlcnNpb24pID1+IHMvKFswLTldXC5bMC05XSlcLlswLTldLiovXDEvOwotICAgICRicmFuY2ggPX4gcy9cLi8tLzsKLSAgICAkYnJhbmNoID0gIlYke2JyYW5jaH0tcGF0Y2hlcyI7Ci19Ci0KLSMgTWFrZSBzdXJlIHdlJ3JlIGF0IHRoZSByb290IG9mIHRoZSBidWlsZCB0cmVlCi0jICAoaWYgd2UncmUgaW4gdGhlIGRpc3QgZGlyZWN0b3J5LCB0aGVuIGNkIC4uKQotY2hkaXIoIi4uIikgaWYgKC1mICdtYWtlcmVsZWFzZScpOwotZGllICJOb3QgYXQgcm9vdCBvZiBidWlsZCB0cmVlIiBpZiAoISAtZiAnY29uZmlndXJlLmluJyk7Ci0KLSMKLSMgIFRFU1RJTkc6Ci0jCi0jIFN0ZXAgMSkgRW5zdXJlIHRoZSBidWlsZCB0cmVlIGlzIHVwIHRvIGRhdGUKLVN5c3RlbSgidXBkYXRlIiwic3ZuIC11IHN0YXR1cyIpOwotU3lzdGVtKCJ1cGRhdGUiLCJzdm4gLXEgdXBkYXRlIik7Ci0KLSMgU3RlcCAyKSBDaGFuZ2UgdGhlIGxpYnRvb2wgdmVyc2lvbiBpbmZvcm1hdGlvbiBpbiBNYWtlZmlsZS50b3AKLW1hbnVhbHN0ZXAoJ3ZlcnNpb246bWFudWFsZWRpdCcsCi0JICAgIllvdSAobWF5KSBuZWVkIHRvIGVkaXQgTWFrZWZpbGUudG9wIHRvIHVwZGF0ZSB0aGUgbGlicmFyeSB2ZXJzaW9uIG51bWJlcmluZwotICAgICAodXN1YWxseSBqdXN0IGZvciB0aGUgZmlyc3QgcHJlLXJlbGVhc2Ugb2YgYSBnaXZlbiB2ZXJzaW9uKS4KLSAgICAgICAgU2VlIHRoZSBjb21tZW50cyBpbiBSRUxFQVNFLUlOU1RSVUNUSU9OUwotICAgICAgICBhYm91dCBMSUJDVVJSRU5ULCBMSUJBR0UgYW5kIExJQlJFVklTSU9OLgotCi0gIEknbGwgY29tbWl0IHRoZSBmaWxlIGZvciB5b3UgYWZ0ZXIgeW91J3JlIGRvbmUKLSIpOwotU3lzdGVtKCJ2ZXJzaW9uOmNvbW1pdCIsCi0gICAgICAgInN2biBjb21taXQgLW0gXCJ2ZXJzaW9uIHVwZGF0ZVwiIE1ha2VmaWxlLnRvcCIpOwotCi0jIFN0ZXAgMykgY29uZmlndXJlIGFuZCBidWlsZCBhbmQgdGVzdCBpdAotbXkgJHRyYW5zcG9ydGFyZ3MgPSAiIjsKLWlmICggJF5PIGVxICJsaW51eCIgKSB7Ci0gICAgJHRyYW5zcG9ydGFyZ3MgPSAiLS13aXRoLXRyYW5zcG9ydHM9SVBYIjsKLX0KLW15ICRjb25maWd1cmVhcmdzID0gIi0tY2FjaGU9Y29uZmlnLmNhY2hlIC0td2l0aC1kZWZhdWx0cyAiLgotICAgICItLXdpdGgtbWliLW1vZHVsZXM9JyAgICAgZXhhbXBsZXMgZXhhbXBsZXMvZXhhbXBsZSAgICIuCi0gICAgIiAgdGVzdGhhbmRsZXIgc211eCBSbW9uJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi4KLSAgICAiICR0cmFuc3BvcnRhcmdzICAgICAgICAtLWVuYWJsZS1pcHY2ICAgICAgICAgICAgICAgICAiLgotICAgICItLWVuYWJsZS1lbWJlZGRlZC1wZXJsIC0tZW5hYmxlLXNoYXJlZCI7Ci1TeXN0ZW0oImJ1aWxkOmRpc3RjbGVhbiIsIm1ha2UgZGlzdGNsZWFuIikgaWYgKC1mICdNYWtlZmlsZScpOwotU3lzdGVtKCJidWlsZDpjb25maWd1cmUiLCIuL2NvbmZpZ3VyZSAkY29uZmlndXJlYXJncyIpOwotU3lzdGVtKCJidWlsZDptYWtlIiwibWFrZSIpOwotU3lzdGVtKCJidWlsZDp0ZXN0IiwibWFrZSB0ZXN0IFRFU1RPUFRTPS1uIik7Ci0KLSMKLSMgRE9DVU1FTlRBVElPTgotIwotIyBTdGVwIDQpIFVwZGF0ZSBkb3h5Z2VuIHZlcnNpb24gbnVtYmVyLCBhbmQgZ2VuZXJhdGUgbWFuIHBhZ2VzCi1TeXN0ZW0oImRvY3M6ZG94eWdlbmNvbmYiLAotICAgICAgICJwZXJsIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwgLXYgJHZlcnNpb24gLU0gLVAgLUMgLXQgZG94eWdlbiIpOwotU3lzdGVtKCJkb2NzOm1ha2UiLCJtYWtlIGRvY3MiKTsKLVN5c3RlbSgiZG9jczptYW5jcCIsIm1ha2UgbWFuY3AiKTsKLVN5c3RlbSgiZG9jczp1cGRhdGUiLCJzdm4gLXUgc3RhdHVzIG1hbiIpOwotbWFudWFsc3RlcCgnZG9jczptYW51YWxhZGRuZXdtYW4nLAotICAiVXBkYXRlIG1hbi9NYWtlZmlsZS5pbiB3aXRoIGRldGFpbHMgb2YgYW55IG5ldyBtYW4gcGFnZXMsCi0gIGFuZCBydW4gJ3N2biBhZGQnIG9uIHRoZW0uCi0gIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlciB5b3UncmUgZG9uZQotIik7Ci1TeXN0ZW0oImRvY3M6Y29tbWl0Iiwic3ZuIGNvbW1pdCAtbSBcImRvY3VtZW50YXRpb24gdXBkYXRlXCIgbWFuIik7Ci0KLSMgU3RlcCA1KSBDaGVjayBjb2RlIGZvciBpbGxlZ2FsIGNvbnN0cnVjdHMKLVN5c3RlbSgiY29kZTpjaGVja2NvbW1lbnRzIiwibWFrZSBjaGVja3MiKTsKLQotIyBTdGVwIDYpIFVwZGF0ZSBNYWtlZmlsZSBkZXBlbmRlbmNpZXMKLVN5c3RlbSgiY29kZTptYWtlZGVwZW5kIiwibWFrZSBkaXN0ZGVwZW5kIik7Ci1TeXN0ZW0oImNvZGU6Y29tbWl0ZGVwZW5kIiwic3ZuIGNvbW1pdCAtbSBcIm1ha2UgZGVwZW5kXCIgYGZpbmQgLiAtbmFtZSBNYWtlZmlsZS5kZXBlbmRgIik7Ci0KLSMgU3RlcCA3KSBVcGRhdGUgQ2hhbmdlTG9nCi0jICAgWFhYOiBNYXkgbmVlZCB0byBleHRlbmQgdGhlIGZvbGRpbmcgbGluZS1sZW5ndGgsCi0jICAgICAgICB0byBhdm9pZCBzdm4yY2wgbWFuZ2xpbmcgQ0hBTkdFUy9ORVdTIGVudHJpZXMKLVN5c3RlbSgiY2hhbmdlbG9nOnN2bjJjbCIsCi0gICAgICAgInN2bjJjbCAtZiBDaGFuZ2VMb2cuYWRkIC0tYnJlYWstYmVmb3JlLW1zZyAtLXN0b3Atb24tY29weSIpOwotU3lzdGVtKCJjaGFuZ2Vsb2c6Y2hhbmdlbG9nZml4IiwKLSAgICAgICAicGVybCBkaXN0L2NoYW5nZWxvZ2ZpeCAkYnJhbmNoIDwgQ2hhbmdlTG9nLmFkZCA+IENoYW5nZUxvZy5yZWFsbHlhZGQiKTsKLW1hbnVhbHN0ZXAoImNoYW5nZWxvZzptYW51YWxlZGl0IiwKLSAgICAgICAgICAgIllvdSBuZWVkIHRvIG1hbnVhbGx5IGluc2VydCB0aGUgKnJlbGV2ZW50KiBwb3J0aW9ucyBvZgotICAnQ2hhbmdlTG9nLnJlYWxseWFkZCcgaW50byB0aGUgQ2hhbmdlTG9nIGZpbGUuCi0gIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlcndhcmRzIik7Ci1TeXN0ZW0oImNoYW5nZWxvZzpjb21taXQiLCJzdm4gY29tbWl0IC1tIFwidmVyc2lvbiB1cGRhdGVcIiBDaGFuZ2VMb2ciKTsKLQotIyBTdGVwIDgpIFVwZGF0ZSBSRUFETUUvTkVXUy9DSEFOR0VTCi1TeXN0ZW0oImRvY3M6bmV3bmV3cyIsCi0gICAgICAgInBlcmwgZGlzdC9leHRyYWN0bmV3cyAtcyAtLS0tLSAtZSAtLS0tLSBDaGFuZ2VMb2ciKTsKLVN5c3RlbSgiZG9jczpuZXduZXdzIiwKLSAgICAgICAicGVybCBkaXN0L2V4dHJhY3RuZXdzIC1jIENIQU5HRVMubmV3MiAtbiBORVdTLm5ldzIgQ2hhbmdlTG9nLnJlYWxseWFkZCIpOwotbWFudWFsc3RlcCgiZG9jczpSRUFETUUiLAotICAgICAgICAgICAiWW91IG5lZWQgdG8gbWFudWFsbHkgaW5zZXJ0IHRoZSByZWxldmVudCBwb3J0aW9ucyBvZgotICAnQ0hBTkdFUy5uZXcnIGFuZCAnTkVXUy5uZXcnIGludG8gdGhlIENIQU5HRVMgYW5kIE5FV1MgZmlsZS4KLSAgKFRoZXJlIGFyZSBhbHRlcm5hdGl2ZSB2ZXJzaW9ucyBpbiAnQ0hBTkdFUy5uZXcyJyBhbmQgJ05FV1MubmV3MicpCi0gIFlvdSBtYXkgd2lzaCB0byB1cGRhdGUgdGhlIFJFQURNRSBmaWxlIGFzIHdlbGwuCi0gIEknbGwgY29tbWl0IHRoZXNlIGNoYW5nZXMgZm9yIHlvdSBhZnRlcndhcmRzIik7Ci1TeXN0ZW0oImRvY3M6Y29tbWl0IiwKLSAgICAgICAic3ZuIGNvbW1pdCAtbSBcInZlcnNpb24gdXBkYXRlXCIgUkVBRE1FIE5FV1MgQ0hBTkdFUyIpOwotCi0jCi0jIFJFTEVBU0UKLSMKLSMgU3RlcCAgOSkgIFJlc3luYyBjb2RlIChvbWl0dGVkKQotIyBTdGVwIDEwKSAgVXBkYXRlIHZlcnNpb24KLVN5c3RlbSgicmVsZWFzZTp2ZXJzaW9uc3RhbXAiLAotICAgICAgICJwZXJsIGxvY2FsL1ZlcnNpb24tTXVuZ2UucGwgLXYgJHZlcnNpb24gLU0gLVAgLUMiKTsKLQotIyBTdGVwIDExKSAgQ3JlYXRlIHRoZSByZWxlYXNlIHRhZyBjaGVja3BvaW50Ci1teSAkcm9vdD0iaHR0cHM6Ly9uZXQtc25tcC5zdm4uc291cmNlZm9yZ2UubmV0L3N2bnJvb3QvbmV0LXNubXAiOwotaWYgKCAkYnJhbmNoICkgewotICAgIFN5c3RlbSgicmVsZWFzZTp0YWciLAotICAgICAgICJzdm4gY29weSAtbSBcIiR2ZXJzaW9uIHJlbGVhc2VcIiAkcm9vdC9icmFuY2hlcy8kYnJhbmNoICRyb290L3RhZ3MvJHZ0YWciKTsKLX0gZWxzZSB7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOnRhZyIsCi0gICAgICAgInN2biBjb3B5IC1tIFwiJHZlcnNpb24gcmVsZWFzZVwiICRyb290L3RydW5rICRyb290L3RhZ3MvJHZ0YWciKTsKLX0KLQotIyBTdGVwIDEyKSAgQ29uc3RydWN0IHRoZSB0YXJiYWxsCi1teSAkdGFyID0gInN0YXIgYXJ0eXBlPXVzdGFyIjsgICAgIyBYWFggLSBjaGVjayBmb3Igc3Rhci9ndGFyL2V0YwotU3lzdGVtKCJyZWxlYXNlOm1ha2VkaXN0IiwKLSAgICAgICAic3ZuIGV4cG9ydCAkcm9vdC90YWdzLyR7dnRhZ30vbmV0LXNubXAgbmV0LXNubXAtJHZlcnNpb24iKTsKLVN5c3RlbSgicmVsZWFzZTpyZW1vdmVmaWxlcyIsCi0gICAgICAgIm5ldC1zbm1wLSR2ZXJzaW9uL3JlbW92ZS1maWxlcyBuZXQtc25tcC0kdmVyc2lvbiIpOwotU3lzdGVtKCJyZWxlYXNlOm1ha2VkaXN0IiwKLSAgICAgICAiJHRhciAtYyAteiAtZiBuZXQtc25tcC0ke3ZlcnNpb259LnRhci5neiAgbmV0LXNubXAtJHZlcnNpb24iKTsKLVN5c3RlbSgicmVsZWFzZTptYWtlemlwY2xlYW4iLAotICAgICAgICJybSAtZiBuZXQtc25tcC0ke3ZlcnNpb259LnppcCIpOwotU3lzdGVtKCJyZWxlYXNlOm1ha2V6aXAiLAotICAgICAgICJ6aXAgLXIgbmV0LXNubXAtJHt2ZXJzaW9ufS56aXAgIG5ldC1zbm1wLSR2ZXJzaW9uIik7Ci0KLQotIyBTdGVwIDEzKSAgU2lnbiAob3IgY2hlY2tzdW0pIHRoZSBwYWNrYWdlCi1teSAkc2lnMTsKLW15ICRzaWcyOwotbXkgJHBrZzEgPSAibmV0LXNubXAtJHt2ZXJzaW9ufS50YXIuZ3oiOwotbXkgJHBrZzIgPSAibmV0LXNubXAtJHt2ZXJzaW9ufS56aXAiOwotCi1TeXN0ZW0oInJlbGVhc2U6c2VhcmNoaW5nLWdwZy1rZXlzIiwKLSAgICAgICAiZ3BnIC0tbGlzdC1zZWNyZXQta2V5cyBuZXQtc25tcC1hZG1pbiIpOwotaWYoJD8gIT0gMCkgewotICAgICRzaWcxID0gIiR7cGtnMX0ubWQ1IjsKLSAgICAkc2lnMiA9ICIke3BrZzJ9Lm1kNSI7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOm1kNSIsIm1kNXN1bSAkcGtnMSA+ICRzaWcxIik7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOm1kNSIsIm1kNXN1bSAkcGtnMiA+ICRzaWcyIik7Ci19IGVsc2UgewotICAgICMgY3VycmVudGx5IG9ubHkgcnN0b3J5IGFuZCBoYXJkYWtlciBoYXZlIHRoZSBncGcga2V5cyB0aWxsIFdlcwotICAgICMgc2VlcyBzb21lb25lIGVsc2UgaW4gcGVyc29uIDstKQotICAgICRzaWcxID0gIiR7cGtnMX0uYXNjIjsKLSAgICBTeXN0ZW0oInJlbGVhc2U6Z3BnIiwiZ3BnIC11IG5ldC1zbm1wLWFkbWluIC1hIC0tZGV0YWNoLXNpZ24gJHBrZzEiKTsKLSAgICAkc2lnMiA9ICIke3BrZzJ9LmFzYyI7Ci0gICAgU3lzdGVtKCJyZWxlYXNlOmdwZyIsImdwZyAtdSBuZXQtc25tcC1hZG1pbiAtYSAtLWRldGFjaC1zaWduICRwa2cyIik7Ci19Ci0KLSMKLSMgIFJFTEVBU0UgVEVTVElORzoKLSMKLSMgU3RlcCAxNCkgIFVucGFjaywgYnVpbGQgYW5kIHRlc3QgdGhlIHJlbGVhc2UgdGFyYmFsbAotU3lzdGVtKCJwb3N0dGVzdDp1bnRhciIsICJybSAtcmYgbmV0LXNubXAtJHt2ZXJzaW9ufSIpOwotU3lzdGVtKCJwb3N0dGVzdDp1bnRhciIsICJ0YXIgeHpmIG5ldC1zbm1wLSR7dmVyc2lvbn0udGFyLmd6Iik7Ci1jaGRpcigibmV0LXNubXAtJHt2ZXJzaW9ufSIpOwotU3lzdGVtKCJwb3N0dGVzdDpjb25maWd1cmUiLCIuL2NvbmZpZ3VyZSAkY29uZmlndXJlYXJncyIpOwotU3lzdGVtKCJwb3N0dGVzdDptYWtlIiwibWFrZSIpOwotU3lzdGVtKCJwb3N0dGVzdDp0ZXN0IiwibWFrZSB0ZXN0Iik7Ci1jaGRpcigiLi4iKTsKLQotIyBTdGVwIDE1KSAgRG91YmxlLWNoZWNrIHRoZXJlIGFyZSBubyBvdXRzdGFuZGluZyBjaGFuZ2VzCi1TeXN0ZW0oInJlbGVhc2U6dXBkYXRlIiwic3ZuIC11IHN0YXR1cyIpOwotCi0jCi0jIFN0ZXBzIDE2IGFuZCBmb2xsb3dpbmcgYXJlIE5PVCBoYW5kbGVkIGF1dG9tYXRpY2FsbHkuCi0jIFNlZSB0aGUgUkVMRUFTRS1JTlNUUlVDVElPTlMgZm9yIGZ1bGwgZGV0YWlscy4KLSMKLXByaW50IFNUREVSUiAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiBGSU5JU0hFRCAqKioqKioqKioqKioqKioqKioqKlxuIjsKLXByaW50IFNUREVSUiAiXG5Eb3VibGUgY2hlY2sgdGhlIFNWTiBzdGF0dXMgb3V0cHV0IGFib3ZlIGZvciBhbnkgb3V0c3RhbmRpbmcgY2hhbmdlc1xuXG4iOwotcHJpbnQgU1RERVJSICJSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIHVwbG9hZCB0aGUgcmVsYXNlIHRvIFNGOlxuIjsKLXByaW50IFNUREVSUiAiICByc3luYyAtdiAgJHBrZzEgJHBrZzIgJHNpZzEgJHNpZzIgZnJzLnNvdXJjZWZvcmdlLm5ldDp1cGxvYWRzL1xuIjsKLXByaW50IFNUREVSUiAiU2VlIFJFTEVBU0UtSU5TVFJVQ1RJT05TIGZvciBhbnkgYWRkaXRpb25hbCBzdGVwc1xuIjsKLQotCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi1zdWIgU3lzdGVtIHsKLSAgICBteSAkbmFtZSA9IHNoaWZ0OwotICAgIG15ICRjbWQgPSAkZGVzY3IgPSBqb2luKCIgIiwgQF8pOwotICAgIG15ICRyYzsKLSAgICB3aGlsZSAoZG9zdGVwKCRuYW1lKSkgewotCXByaW50IFNUREVSUiAiICBydW5uaW5nOiAiLCRjbWQsIlxuIjsKLQlsYXN0IGlmICgkb3B0c3snbid9KTsKLQlzeXN0ZW0oQF8pOwotCSRyYyA9IGNoZWNrcmVzdWx0KCk7Ci0gICAgICAgIGxhc3QgaWYgKCRyYyA9PSAwKTsKLSAgICB9Ci19Ci0KLXN1YiBjaGVja3Jlc3VsdCB7Ci0gICAgaWYgKCQ/KSB7Ci0JcHJpbnQgU1RERVJSICJUaGUgYWJvdmUgU1RFUCBmYWlsZWQuICBDb250aW51ZSBhbnl3YXkgKHkvbi9yKT8gICI7Ci0JbXkgJGFucyA9IDxTVERJTj47Ci0gICAgICAgIHJldHVybiAxIGlmICgkYW5zID1+IC9eci8pOwotCWlmICgkYW5zID1+IC9ebi8pIHsKLQkgICAgcHJpbnQgU1RERVJSICIgIEVYSVRJTkdcbiI7Ci0JICAgIGV4aXQ7Ci0JfQotICAgIH0KLSAgIHJldHVybiAwOwotfQotCi1zdWIgZG9zdGVwIHsKLSAgICBteSAkbmFtZSA9IHNoaWZ0OwotICAgIHByaW50IFNUREVSUiAiXG4qKioqKioqKioqIFNURVA6ICRuYW1lICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsKLSAgICBpZiAoJGRlc2NyKSB7Ci0JcHJpbnQgU1RERVJSICIgIFskZGVzY3JdXG4iOwotCSRkZXNjciA9IHVuZGVmOwotICAgIH0KLSAgICBwcmludCAiXG4iOwotICAgIGlmICgkb3B0c3sncyd9ICYmICRuYW1lIG5lICRvcHRzeydzJ30pIHsKLQlwcmludCBTVERFUlIgIiAgICAgIFtza2lwcGluZ11cbiI7Ci0JcmV0dXJuIDA7Ci0gICAgfQotICAgICRvcHRzeydzJ30gPSAnJzsKLSAgICBpZiAoJG9wdHN7cn0gJiYgJG5hbWUgPX4gLyRvcHRze3J9LykgewotCXByaW50IFNUREVSUiAiICAgICAgW3NraXBwaW5nXVxuIjsKLQlyZXR1cm4gMDsKLSAgICB9IGVsc2lmICgkb3B0c3snaSd9KSB7Ci0JcHJpbnQgU1RERVJSICIgIERvIHRoaXMgc3RlcCAoeS9uL3EpPyAgIjsKLQlteSAkYW5zID0gPFNURElOPjsKLQlpZiAoJGFucyA9fiAvXm4vKSB7Ci0JICAgIHByaW50IFNUREVSUiAiICAgICAgW3NraXBwaW5nXVxuIjsKLQkgICAgcmV0dXJuIDA7Ci0JfQotCWlmICgkYW5zID1+IC9ecS8pIHsKLQkgICAgcHJpbnQgU1RERVJSICIgICAgICBRVUlUVElOR1xuIjsKLQkgICAgZXhpdDsKLQl9Ci0gICAgfQotICAgIHJldHVybiAxOwotfQotCi1zdWIgbWFudWFsc3RlcCB7Ci0gICAgbXkgJHRhZyA9IHNoaWZ0OwotCi0gICAgaWYgKGRvc3RlcCgkdGFnKSkgewotCXByaW50IFNUREVSUiAiXG5cbiIsam9pbigiICIsQF8pOwotCi0JcHJpbnQgU1RERVJSICJcblxuICBIaXQgcmV0dXJuIHdoZW4gZG9uZTogICI7Ci0KLQlyZXR1cm4gMSBpZiAoJG9wdHN7J24nfSk7Ci0KLQlteSAkYm9ndXMgPSA8U1RESU4+OwotCXJldHVybiAxOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgZ2V0b3B0IGxvbmcgZ3VpIHBvcnRhYmlsaXR5IGNvZGUKLSMKLXN1YiBMb2NhbEdldE9wdGlvbnMgewotICAgIGlmIChldmFsIHtyZXF1aXJlIEdldG9wdDo6R1VJOjpMb25nO30pIHsKLQlpbXBvcnQgR2V0b3B0OjpHVUk6Okxvbmc7Ci0JR2V0b3B0OjpHVUk6Okxvbmc6OkNvbmZpZ3VyZShxdyhkaXNwbGF5X2hlbHAgbm9faWdub3JlX2Nhc2UpKTsKLQlyZXR1cm4gR2V0T3B0aW9ucyhAXyk7Ci0gICAgfSBlbHNlIHsKLQlyZXF1aXJlIEdldG9wdDo6TG9uZzsKLQlHZXRvcHQ6Okxvbmc6OkNvbmZpZ3VyZShxdyhhdXRvX2hlbHAgbm9faWdub3JlX2Nhc2UpKTsKLQlpbXBvcnQgR2V0b3B0OjpMb25nOwotICAgIH0KLSAgICBHZXRPcHRpb25zKExvY2FsT3B0aW9uc01hcChAXykpOwotfQotCi1zdWIgTG9jYWxPcHRpb25zTWFwIHsKLSAgICBteSAoJHN0LCAkY2IsIEBvcHRzKSA9ICgocmVmKCRfWzBdKSBlcSAnSEFTSCcpCi0JCQkgICAgPyAoMSwgMSwgJF9bMF0pIDogKDAsIDIpKTsKLSAgICBmb3IgKG15ICRpID0gJHN0OyAkaSA8PSAkI187ICRpICs9ICRjYikgewotCWlmICgkX1skaV0pIHsKLQkgICAgbmV4dCBpZiAocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJyAmJiAkX1skaV1bMF0gPX4gL15HVUk6Lyk7Ci0JICAgIHB1c2ggQG9wdHMsICgocmVmKCRfWyRpXSkgZXEgJ0FSUkFZJykgPyAkX1skaV1bMF0gOiAkX1skaV0pOwotCSAgICBwdXNoIEBvcHRzLCAkX1skaSsxXSBpZiAoJGNiID09IDIpOwotCX0KLSAgICB9Ci0gICAgcmV0dXJuIEBvcHRzOwotfQotCi1fX0VORF9fCi0KLT1oZWFkMSBOQU1FCi0KLW1ha2VyZWxlYXNlIC0gc29mdHdhcmUgcGFja2FnZSByZWxlYXNlIHNjcmlwdAotCi09aGVhZDEgU1lOT1BTSVMKLQotbWFrZXJlbGVhc2UgW29wdGlvbnNdIHZlcnNpb24KLQotPWhlYWQxIEFSR1VNRU5UUwotCi1Gb3IgZnVsbCByZWxlYXNlcywgdGhlIHZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9ybSAgSTw1LngueT4KLQotRm9yIHByZS1yZWxlYXNlcywgdGhlIHZlcnNpb24gc2hvdWxkIGJlIHNwZWNpZmllZCBpbiB0aGUgZm9ybSAgSTw1LngueS5wcmVOPgotCi1Gb3IgcmVsZWFzZSBjYW5kaWRhdGVzLCB0aGUgdmVyc2lvbiBzaG91bGQgYmUgc3BlY2lmaWVkIGluIHRoZSBmb3JtICBJPDUueC55LnJjTj4KLQotQWx0ZXJuYXRpdmVseSwgaXQgaXMgYWxzbyBwb3NzaWJsZSB0byBzcGVjaWZ5IHZlcnNpb25zIGluIHRoZSBmb3JtICBFeHQtNS14LXkKLQotPWhlYWQxIE9QVElPTlMKLQotPW92ZXIgOAotCi09aXRlbSBCPC1yIHtzdGVwfXwgLS1yZWdleHAtaWdub3JlLXN0ZXBzPXtzdGVwfT4KLQotSWdub3JlIHN0ZXBzIG1hdGNoaW5nIHRoZSByZWd1bGFyIGV4cHJlc3Npb24ge3N0ZXB9Ci0KLT1pdGVtIEI8LXMge3N0ZXB9fCAtLXN0YXJ0LWF0PXtzdGVwfT4KLQotU2tpcCBhbGwgc3RlcHMgcHJlY2VkaW5nIHRoZSBzcGVjaWZpZWQgKGV4YWN0KSB7c3RlcH0KLQotPWl0ZW0gQjwtaSB8IC0taW50ZXJhY3RpdmU+Ci0KLVByb21wdCB3aGV0aGVyIG9yIG5vdCB0byBleGVjdXRlIGVhY2ggc3RlcAotCi09aXRlbSBCPC1uIHwgLS1kcnktcnVuPgotCi1QcmludCB0aGUgY29tbWFuZHMgdGhhdCB3b3VsZCBiZSBleGVjdXRlZCwgYnV0IGRvIG5vdCBleGVjdXRlIHRoZW0uCi0KLT1pdGVtIEI8LWggfCAtLWhlbHA+Ci0KLURpc3BsYXkgdGhpcyBoZWxwIG1lc3NhZ2UuCi0KLT1iYWNrCmRpZmYgLS1naXQgYS9kaXN0L21ha2VyZWxlYXNlLnhtbCBiL2Rpc3QvbWFrZXJlbGVhc2UueG1sCmluZGV4IDk2N2M1YmUuLmYwZmI4MDMgMTAwNjQ0Ci0tLSBhL2Rpc3QvbWFrZXJlbGVhc2UueG1sCisrKyBiL2Rpc3QvbWFrZXJlbGVhc2UueG1sCkBAIC0yNzksNyArMjc5LDcgQEAKIAkgICAgICA8L3RleHQ+CiAJICAgICAgPGNvbW1hbmRzPgogCSAgICAgICAgPGNvbW1hbmQ+Z2l0IGNoZWNrb3V0IFY1LTQtcGF0Y2hlczwvY29tbWFuZD4KLQkgICAgICAgIDxjb21tYW5kPmVjaG8ge0JSQU5DSFBBVEh9ID4+IGRpc3QvcmVsZWFzZSA8L2NvbW1hbmQ+CisJICAgICAgICA8Y29tbWFuZD5lY2hvIHtCUkFOQ0hQQVRIfSByYyA+PiBkaXN0L3JlbGVhc2UgPC9jb21tYW5kPgogCSAgICAgICAgPGNvbW1hbmQgaWdub3JlZXJyb3I9IjEiPmdpdCBjb21taXQgLW0gIlJlbGVhc2UgQ2FuZGlkYXRlIGZvciB7QlJBTkNIUEFUSH0iIGRpc3QvcmVsZWFzZTwvY29tbWFuZD4KIAkgICAgICAgIDxjb21tYW5kPmdpdCBjaGVja291dCB7QlJBTkNIUEFUSH0gPC9jb21tYW5kPgogCSAgICAgICAgPGNvbW1hbmQ+Z2l0IG1lcmdlIFY1LTQtcGF0Y2hlcyAgICA8L2NvbW1hbmQ+CmRpZmYgLS1naXQgYS9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvREVWRU5WIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL0RFVkVOVgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTA1Y2FlCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL0RFVkVOVgpAQCAtMCwwICsxLDQ0IEBACitQUkVGSVg9L29wdC9PU1MKK2V4cG9ydCBQUkVGSVgKKworUEFUSD0kUFJFRklYL2JpbjovdXNyL2JpbjovdXNyL2R0L2JpbjovdXNyL29wZW53aW4vYmluOi91c3Ivc2JpbjovdXNyL2Njcy9iaW46L3Vzci91Y2IKK2V4cG9ydCBQQVRICisKK0xEX0xJQlJBUllfUEFUSD0kUFJFRklYL2xpYiAKK0xEX1JVTl9QQVRIPSRMRF9MSUJSQVJZX1BBVEgKK2V4cG9ydCBMRF9MSUJSQVJZX1BBVEggTERfUlVOX1BBVEgKKworQ0M9Z2NjCitleHBvcnQgQ0MKKworQ1BQRkxBR1M9Ii1JJFBSRUZJWC9pbmNsdWRlIgorQ0ZMQUdTPSItbXY4IC1tdHVuZT11bHRyYXNwYXJjIgorTERGTEFHUz0iLUwkUFJFRklYL2xpYiAtUiRQUkVGSVgvbGliIgorZXhwb3J0IENQUEZMQUdTIENGTEFHUyBMREZMQUdTCisKK1RNUD0vdG1wCitleHBvcnQgVE1QCisKK1RPUD0vY3RidG8vaWRjL2NpY24vc291cmNlL2J1aWxkL2BiYXNlbmFtZSAkUFJFRklYYAorZXhwb3J0IFRPUAorCitTUkM9JFRPUC9kaXN0CitleHBvcnQgU1JDCisKK1dPUks9JFRPUC93b3JrCitleHBvcnQgV09SSworCisKKyMgZm9yIHN1cGVycGFjazoKKworQ0hFQ0tMSVNUPSRUT1AvQ2hlY2tsaXN0OyBleHBvcnQgQ0hFQ0tMSVNUCitNQUtFPSRQUkVGSVgvYmluL21ha2UKK2V4cG9ydCBNQUtFCisKKyNDQVRFR09SWT1PcGVuU291cmNlOyBleHBvcnQgQ0FURUdPUlkKKyNWRU5ET1I9IkZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiI7IGV4cG9ydCBWRU5ET1IKK0JBU0VESVI9L29wdDsgZXhwb3J0IEJBU0VESVIKK1BSRUZJWD0kQkFTRURJUi9gYmFzZW5hbWUgJFRPUGA7IGV4cG9ydCBQUkVGSVgKK1JFTEVBU0VfQVJFQT0kVE9QLy4uL3BhY2thZ2VzL2AvYmluL3VuYW1lIC1wYC9gL2Jpbi91bmFtZSAtcmA7IGV4cG9ydCBSRUxFQVNFX0FSRUEKKwordW1hc2sgMDIyCmRpZmYgLS1naXQgYS9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvUkVBRE1FIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL1JFQURNRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2UyNWE2Ci0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL1JFQURNRQpAQCAtMCwwICsxLDE5IEBACitUaGUgImJ1aWxkcGFja2FnZS1zb2xhcmlzIiBzY3JpcHQgZG9lcyBhICJvbmUtc2hvdCIgYnVpbGQgCithbmQgcGFja2FnaW5nIG9mIGFuIHVudGFycmVkIG5ldC1zbm1wIGRpc3RyaWJ1dGlvbiAKK29uIFNvbGFyaXMgd2l0aG91dCByZXF1aXJpbmcgcm9vdCBhY2Nlc3MuIAorIAorVGhlIHJlc3VsdGluZyBuYXRpdmUgU29sYXJpcyBwYWNrYWdlIGNhbiB0aGVuIGJlIAorKGF1dG9tYXRpY2FsbHkpIGluc3RhbGxlZC9yZW1vdmVkIHVzaW5nIHRoZSBTb2xhcmlzIAorcGtnYWRkKDEpL3BrZ3JtKDEpIGNvbW1hbmRzLiAKKyAKK1RoZSBzY3JpcHQgcmVxdWlyZXMgY3VzdG9taXphdGlvbiBvZiB5b3VyIAorZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgLSBzZWUgYXR0YWNoZWQgZmlsZSAKK0RFVkVOViAtIGJlZm9yZSBpdCBjYW4gYmUgdXNlZC4gCisgCisgQmFzaWMgdXNhZ2U6IC4vYnVpbGRwYWNrYWdlLXNvbGFyaXMgZGlzdGNsZWFuIAorIAorVGhlIHNjcmlwdCAiZWxmZGVwZW5kLnNoIiBpcyByZXF1aXJlZCB0byAKK2RldGVybWluZSB0aGUgZGVwZW5kZW5jaWVzIG9mIGFsbCBidWlsdCBFTEYgYmluYXJpZXMgCithbmQgbGlicmFyaWVzIHRvIGNyZWF0ZSBhICJwYWNrYWdlIGRlcGVuZGVuY3kgZmlsZSIgLSAKK3NlZSBkZXBlbmQoNCkuIAorIApkaWZmIC0tZ2l0IGEvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL2J1aWxkcGFja2FnZS1zb2xhcmlzIGIvZGlzdC9uZXQtc25tcC1zb2xhcmlzLWJ1aWxkL2J1aWxkcGFja2FnZS1zb2xhcmlzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZjRmMGMKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvYnVpbGRwYWNrYWdlLXNvbGFyaXMKQEAgLTAsMCArMSwxODIgQEAKKyMhL2Jpbi9rc2gKKyMKKyMgYXV0b21hdGljIGJ1aWxkIChjb25maWd1cmUvbWFrZS9wYWNrYWdlKSBzY3JpcHQgCisjIGZvciBORVQtU05NUCBvbiBTb2xhcmlzCisjCisjIDIwMDQvMTEgUmV3cml0ZSB0byBzdHJpY3RseSBidWlsZCB0aGUgcGFja2FnZSBqZnJhbmtAZmFzdHJpZXZlLmNvbQorIyAyMDAyLzExIFN0ZWZhbi5SYWRtYW5AQ1RCVE8uT1JHCisKKworIyBJZiB5b3UgZGVmaW5lIERFQlVHLCB0aGUgc2NyaXB0IHdpbGwgYmUgdmVyYm9zZSwgYW5kIHdlIHdvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKKworI0RFQlVHPVkKK2lmIFsgISAteiAkREVCVUcgXTsgdGhlbgorICAgc2V0IC14ICMgYmUgdmVyYm9zZQorZmkKKworIyBUTVAgaXMgd2hlcmUgd2UgYXJlIHRlbXBvcmFyaWx5IGluc3RhbGxpbmcgdGhlIHBhY2thZ2UgdG8KK1RNUD1gcHdkYC9wa2dyb290CisKKyMgUEtHIGlzIHRoZSBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgbmFtZSBmb3IgdGhlIHBhY2thZ2UKK1BLRz1PU1NuZXQtc25tcAorCisjUFJFRklYIGlzIHRoZSB0b3AgbGV2ZWwgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudCBkaXJlY3RvcnkuCisjIFRoaXMgc2hvdWxkIGJlIG5vcm1hbGx5IGRldGVybWluZWQgYnkgY29uZmlndXJlCisjcHJlZml4PS9vcHQvJHtQS0d9CitwcmVmaXg9L3Vzci9sb2NhbAorCisjIFZBUkRJUiBpcyB0aGUgcGVyc2lzdGVudCBkaXIgZnJvbSBjb25maWd1cmUKK1ZBUkRJUj0vdmFyL25ldC1zbm1wCisKK2V4cGFuZGVkcHJlZml4PSR7VE1QfS8ke3ByZWZpeH0KKworUEVSTD0ke1BFUkw6PWB3aGljaCBwZXJsYH0KK01BS0U9JHtNQUtFOj1gd2hpY2ggbWFrZWB9CisKK2lmIFsgLWQgJHtUTVB9IF07IHRoZW4KKyAgIHJtIC1yZiAke1RNUH07CitmaQorCisjIGluc3RhbGwgdG8gdGVtcG9yYXJ5IHBhY2thZ2UgYnVpbGQgcm9vdAorY2QgLi4vLi4KKworJE1BS0UgaW5zdGFsbCBwcmVmaXg9JHtleHBhbmRlZHByZWZpeH0gZXhlY19wcmVmaXg9JHtleHBhbmRlZHByZWZpeH0gfHwgZXhpdCAxCisKKyMgV2Ugbm93IGhhdmUgdGhlIG1haW4gc29mdHdhcmUgaW5zdGFsbGVkLCBjb3B5IG92ZXIgdGhlIGF1eGlsbGFyeSBmaWxlcworY2QgLQorCithd2sgL15fX19zbm1wZC1pbml0LmQvLC9fX19FT0YvICQwIHwgZ3JlcCAtdiBeX19fIHwgc2VkICJzLEBwcmVmaXhALCRwcmVmaXgsZyIgPnxzbm1wZC1pbml0LmQKKworIyBjcmVhdGUgcGVyc2lzdGVudCBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QgZXhpc3QKK1sgLWQgJFRNUC8kVkFSRElSIF0gfHwgaW5zdGFsbCAtZCAtbSAwNzU1ICRUTVAvJFZBUkRJUiAKKworIyBwb3N0aW5zdGFsbAorTERfTElCUkFSWV9QQVRIPSRUTVAkcHJlZml4L2xpYjokTERfTElCUkFSWV9QQVRIICRUTVAvJHByZWZpeC9iaW4vc25tcHRyYW5zbGF0ZVwKKyAgLU0kVE1QLyRwcmVmaXgvc2hhcmUvc25tcC9taWJzIC1tIFNOTVB2Mi1TTUkgLjEgPiYtIHx8IGV4aXQgJD8gIyBjcmVhdGUgTUlCIGluZGV4CisKKyMgcGFja2FnZQordmVyc2lvbj1gLi4vLi4vbmV0LXNubXAtY29uZmlnIC0tdmVyc2lvbmAKK29zPWB1bmFtZSAtc2AKK3JlbD1gdW5hbWUgLXJgCitjbGFzcz1zbm1wCitvd25lcj0kTE9HTkFNRQorZ3JvdXBzIHwgYXdrICd7cHJpbnQgJDF9JyB8IHJlYWQgZ3JvdXAKK2NhdCA8PD09ID58cGtnaW5mbworUEtHPSIke1BLR30iCitOQU1FPSJuZXQtc25tcC0kdmVyc2lvbiIKK0FSQ0g9ImB1bmFtZSAtcGAiCitWRVJTSU9OPSIkdmVyc2lvbiwgJG9zICRyZWwsIGBkYXRlICslWS4lbS4lZC4lSC4lTS4lU2AiCitDQVRFR09SWT0iT3BlblNvdXJjZSIKK0RFU0M9IlRoZSBORVQtU05NUCBUb29scyBhbmQgTGlicmFyeSIKK1ZFTkRPUj0iaHR0cDovL25ldC1zbm1wLnNvdXJjZWZvcmdlLm5ldCIKK0NMQVNTRVM9IiRjbGFzcyIKK0JBU0VESVI9IiRwcmVmaXgiCis9PQorLiAuL3BrZ2luZm8KKworZWNobyAnY2hlY2tpbmcgZGVwZW5kZW5jaWVzJwordW5zZXQgTERfTElCUkFSWV9QQVRIICMgYmluYXJpZXMgYW5kIGxpYnJhcmllcyBzaG91bGQgaGF2ZSBSUEFUSCBub3cKKy4vZWxmZGVwZW5kLnNoICRUTVAgfCBncmVwIC12ICJQICAqJFBLRyAiID58ZGVwZW5kICMgaWdub3JlIG93biBwYWNrYWdlCisKK2VjaG8gJ2NyZWF0aW5nIHByb3RvdHlwZSBmaWxlJworY2F0IDw8PT0gPnxwcm90b3R5cGUKK2kgcGtnaW5mbworaSBjb3B5cmlnaHQ9Li4vLi4vQ09QWUlORworI2kgcHJlaW5zdGFsbD0uL3ByZWluc3RhbGwtcG9zdHJlbW92ZQorI2kgcG9zdGluc3RhbGw9Li9wcmVpbnN0YWxsLXBvc3RyZW1vdmUKK2kgZGVwZW5kCisjIHNldCBkZWZhdWx0IG1vZGUsIG93bmVyIGFuZCBncm91cAorISBkZWZhdWx0IDA3NzUgcm9vdCBzeXMKK2Qgc25tcCAvZXRjIDA3NTUgcm9vdCBzeXMKK2Qgc25tcCAvZXRjL2luaXQuZCAwNzU1IHJvb3Qgc3lzCitmIHNubXAgL2V0Yy9pbml0LmQvc25tcGQ9Li9zbm1wZC1pbml0LmQgMDc1NSByb290IHN5cworI2wgc25tcCAvZXRjL3JjMi5kL1M3NnNubXBkPS9ldGMvaW5pdC5kL3NubXBkICMgbm90IHlldAorPT0KKworcGtncHJvdG8gLWMgc25tcCAkVE1QPS8gfFwKK2VncmVwIC12ICdeZCAuKiAvIHxeZCAuKiAvdmFyIHxeZCAuKiAvb3B0IHxeIC4qcGVybGxvY2FsLnBvZD0nIHxcCitzZWQgLWUgInMvICRvd25lciAkZ3JvdXBcJC8vIiA+PiBwcm90b3R5cGUgfHwgZXhpdCAkPworIyBhbmQgaWdub3JlIHRvcCBsZXZlbCBkaXJlY3RvcmllcyAobXVzdCBwcmUtZXhpc3QpCisKK2VjaG8gJ2NyZWF0aW5nIHBhY2thZ2UnCitwa2dtayAtb2QgLiB8fCBleGl0ICQ/Citwa2d0cmFucyAuICRQS0ctJHZlcnNpb24tJEFSQ0gtJG9zJHJlbC5wa2cgJFBLRyB8fCBleGl0ICQ/CisKKyMgV2Ugc2hvdWxkIHJlYWxseSBkbyBzb21lIGNsZWFudXAgaGVyZQoraWYgWyAteiAkREVCVUcgXTsgdGhlbgorICAgcm0gLXJmIHNubXBkLWluaXQuZCAkUEtHICRUTVAgcGtnaW5mbyBwcm90b3R5cGUgZGVwZW5kIAorZmkKKworZWNobyAiYnVpbGQgd2FzIHN1Y2Nlc3NmdWxsIgorZXhpdCAwCisKKyMgL2V0Yy9pbml0L3NubXBkCisjIFRoaXMgaXMgcGFja2FnZWQgaW5zaWRlIG9mIGJ1aWxkcGFja2FnZS1zb2xhcmlzIGJlY2F1c2Ugd2UgbmVlZCB0byBzdWJzdGl0dXRlCisjIGluIHRoZSBhY3R1YWwgc2VydmVyIG5hbWUuCisKK19fX3NubXBkLWluaXQuZF9fXworIyEgL2Jpbi9zaAorIworIyBzdGFydC9zdG9wIHRoZSBORVQtU05NUCBtYXN0ZXIgYWdlbnQgKHNubXBkKQorIworIyBMb2NhdGlvbjogICAgICAvZXRjL2luaXQuZC9zbm1wZAorIyAgICAgICAgICAgICAgICAvZXRjL3JjMy5kL1M/P3NubXBkCisjCituYW1lPSJORVQtU05NUCBhZ2VudCIKK2RhZW1vbj1AcHJlZml4QC9zYmluL3NubXBkCisKK2Nhc2UgIiQxIiBpbgorc3RhcnQpCisgICAgICAgIFsgISAteCAkZGFlbW9uIF0gJiYgZWNobyAiRVJST1I6IGNhbm5vdCBzdGFydCAkbmFtZSAoJGRhZW1vbikiICYmIGV4aXQgMQorICAgICAgICBlY2hvICJTdGFydGluZyAkbmFtZSAuLi4gXGMiCisgICAgICAgIFBHUkVQPWB3aGljaCBwZ3JlcGAKKyAgICAgICAgaWYgWyAteiAkUEdSRVAgXTsgdGhlbgorICAgICAgICAgICBwaWQ9YHBncmVwIC1meCAkZGFlbW9uYAorICAgICAgICBlbHNlCisgICAgICAgICAgIHBpZD1gcHMgLWVmIHwgZ3JlcCAkZGFlbW9uIHwgZ3JlcCAtdiBncmVwIHwgYXdrICd7cHJpbnQgJDJ9J2AKKyAgICAgICAgZmkKKworICAgICAgICBbICEgLXogIiRwaWQiIF0gJiYgZWNobyAiYWxyZWFkeSBydW5uaW5nIHdpdGggcGlkICRwaWQuIiAmJiBleGl0IDAKKyAgICAgICAgJGRhZW1vbiAmJiBlY2hvICJkb25lLiIKKyAgICAgICAgOzsKK3N0b3ApCisgICAgICAgIGVjaG8gIlN0b3BwaW5nICRuYW1lIC4uLiBcYyIKKyAgICAgICAgUEdSRVA9YHdoaWNoIHBncmVwYAorICAgICAgICBpZiBbIC16ICRQR1JFUCBdOyB0aGVuCisgICAgICAgICAgIHBpZD1gcGdyZXAgLWZ4ICRkYWVtb25gCisgICAgICAgIGVsc2UKKyAgICAgICAgICAgcGlkPWBwcyAtZWYgfCBncmVwICRkYWVtb24gfCBncmVwIC12IGdyZXAgfCBhd2sgJ3twcmludCAkMn0nYAorICAgICAgICBmaQorICAgICAgICBbICEgLXogIiRwaWQiIF0gJiYgKGtpbGwgJHBpZCAmJiBlY2hvICJkb25lIiApIHx8IGVjaG8gIm5vdCBydW5uaW5nIgorCisgICAgICAgIDs7CitzdGF0dXMpCisgICAgICAgIGVjaG8gIiRuYW1lIGlzIFxjIgorICAgICAgICBQR1JFUD1gd2hpY2ggcGdyZXBgCisgICAgICAgIGlmIFsgLXogJFBHUkVQIF07IHRoZW4KKyAgICAgICAgICAgcGlkPWBwZ3JlcCAtZnggJGRhZW1vbmAKKyAgICAgICAgZWxzZQorICAgICAgICAgICBwaWQ9YHBzIC1lZiB8IGdyZXAgJGRhZW1vbiB8IGdyZXAgLXYgZ3JlcCB8IGF3ayAne3ByaW50ICQyfSdgCisgICAgICAgIGZpCisgICAgICAgIFsgLXogIiRwaWQiIF0gJiYgZWNobyAibm90IHJ1bm5pbmciIHx8IGVjaG8gInJ1bm5pbmcgd2l0aCBwaWQgJHBpZCIKKyAgICAgICAgOzsKK3Jlc3RhcnQpCisgICAgICAgICQwIHN0b3AgJiYgJDAgc3RhcnQKKyAgICAgICAgOzsKK3JlbG9hZCkKKyAgICAgICAgZWNobyAiUmUtaW5pdGlhbGl6aW5nICRuYW1lIC4uLlxjIgorICAgICAgICBQR1JFUD1gd2hpY2ggcGdyZXBgCisgICAgICAgIGlmIFsgLXogJFBHUkVQIF07IHRoZW4KKyAgICAgICAgICAgcGlkPWBwZ3JlcCAtZnggJGRhZW1vbmAKKyAgICAgICAgZWxzZQorICAgICAgICAgICBwaWQ9YHBzIC1lZiB8IGdyZXAgJGRhZW1vbiB8IGdyZXAgLXYgZ3JlcCB8IGF3ayAne3ByaW50ICQyfSdgCisgICAgICAgIGZpCisgICAgICAgIFsgISAteiAiJHBpZCIgXSAmJiAoa2lsbCAtSFVQICRwaWQgJiYgZWNobyAiZG9uZSIgKSB8fCBlY2hvICJub3QgcnVubmluZyIKKyAgICAgICAgOzsKKyopCisgICAgICAgIGVjaG8gIlVzYWdlOiAkMCB7IHN0YXJ0IHwgc3RvcCB8IHN0YXR1cyB8IHJlc3RhcnQgfCByZWxvYWQgfSIKKyAgICAgICAgOzsKK2VzYWMKKworZXhpdCAwCitfX19FT0ZfX18KZGlmZiAtLWdpdCBhL2Rpc3QvbmV0LXNubXAtc29sYXJpcy1idWlsZC9lbGZkZXBlbmQuc2ggYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvZWxmZGVwZW5kLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU0N2M0Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25ldC1zbm1wLXNvbGFyaXMtYnVpbGQvZWxmZGVwZW5kLnNoCkBAIC0wLDAgKzEsODcgQEAKKyMhL2Jpbi9rc2gKKyMKKyMgZWxmZGVwZW5kLnNoCisjCisjIGdpdmVuIGEgcGF0aCwgdGhpcyBzY3JpcHRzIHNlYXJjaGVzIGZvciBFTEYgYmluYXJpZXMgYW5kIGxpYnJhcmllcworIyBhbmQgZ2VuZXJhdGVzIHBhY2thZ2UgZGVwZW5kZW5jeSBmaWxlIGVudHJpZXMgYWNjb3JkaW5nIHRvIHRoZXIgZGVwZW5kZW5jaWVzCisjCisjIFVzYWdlOiBlbGZkZXBlbmQgPEVMRi1iaW5hcnk+fDxkaXJlY3Rvcnk+CisjCisjIDIwMDIvMTEgU3RlZmFuLlJhZG1hbkBDVEJUTy5PUkcKKyMKKyMgL3Zhci9zYWRtL2luc3RhbGwvY29udGVudHMgZm9ybWF0OgorIworIyAvZGV2IGQgbm9uZSAwNzc1IHJvb3Qgc3lzIFNVTldjc3IgU1VOV2NzZAorIyBwYXRoIHR5cGUgY2xhc3MgbW9kZSBvd25lciBncm91cCBwYWNrYWdlcworIyAvZXRjLy5sb2dpbiBmIHJlbmFtZW5ldyAwNjQ0IHJvb3Qgc3lzIDUxNiAzNzk1NiA5MDQ2NDc2OTUgU1VOV2NzcgorIyAvZXRjL2FjY3QvaG9saWRheXMgZSBwcmVzZXJ2ZSAwNjY0IGJpbiBiaW4gMjg5IDIyMDkwIDkwNDY0NzYwMyBTVU5XYWNjcgorIyBwYXRoIHR5cGUgY2xhc3MgbW9kZSBvd25lciBncm91cCB4IHggeCBwYWNrYWdlcworIyAvYmluPS4vdXNyL2JpbiBzIG5vbmUgU1VOV2NzcgorIyBwYXRoPWxpbmsgdHlwZSBjbGFzcyBwYWNrYWdlcworIyAvZGV2aWNlcy9wc2V1ZG8vY2xvbmVAMDpobWUgYyBub25lIDExIDcgMDYwMCByb290IHN5cyBTVU5XY3NkCisjIHBhdGggdHlwZSBjbGFzcyB4IHggb3duZXIgbW9kZSBwYWNrYWdlcworIworIyB0eXBlcyBlIChzZWQpLCB2ICh2b2xhdGlsZSkgaGF2ZSBzYW1lIGZvcm1hdCBsaWtlIHR5cGUgZiAoZmlsZSkKKyMgdHlwZSBsIChoYXJkbGluaykgaGFzIHNhbWUgZm9ybWF0IGxpa2UgdHlwZSBzIChzeW1saW5rKQorIworcHJvZz1gYmFzZW5hbWUgJDBgCitMQVNUX0NIQU5DRT0vb3B0L09TUy9saWIKKworaWYgWyAtZCAiJDEiIF0gOyB0aGVuCisgIGZpbmQgJDEgLXR5cGUgZiAtZXhlYyBmaWxlIHt9IFw7CitlbGlmIFsgLXggIiQxIiBdIDsgdGhlbgorICBmaWxlICQxCitlbHNlCisgIGVjaG8gMT4mMiAidXNhZ2U6ICQwIDxkaXJlY3Rvcnk+fDxFTEYgZXhlY3V0YWJsZT4iCisgIGV4aXQgMQorZmkgfCBhd2sgJyQyID09ICJFTEYiIHsgcHJpbnQgfScgfCBjdXQgLWQ6IC1mMSB8XAord2hpbGUgcmVhZCBlbGYKK2RvCisgIGxkZCAiJGVsZiIgfCB3aGlsZSByZWFkIGxpYiB4IHBhdGgKKyAgZG8KKyAgICBbIC16ICIkcGF0aCIgXSAmJiBjb250aW51ZQorICAgIGlmIFsgIiRwYXRoIiA9ICcoZmlsZSBub3QgZm91bmQpJyBdCisgICAgdGhlbgorICAgICAgaWYgWyAteCAkTEFTVF9DSEFOQ0UvJGxpYiBdCisgICAgICB0aGVuCisgICAgICAgIHBhdGg9IiRMQVNUX0NIQU5DRS8kbGliIgorICAgICAgZWxzZQorICAgICAgICBlY2hvICIjICRwcm9nOiAkbGliICR4ICRwYXRoIgorICAgICAgICBjb250aW51ZSAjIG5vdCBmb3VuZAorICAgICAgZmkKKyAgICBmaQorICAgIGVjaG8gIiRwYXRoIgorICAgICMgbmVlZCBzeW1saW5rIGhhbmRsaW5nIGhlcmUgLSBzZWUgL3Vzci9wbGF0Zm9ybS9TVU5XLCovbGliLyoKKyAgZG9uZQorZG9uZSB8IHNvcnQgLXUgfCB3aGlsZSByZWFkIGxpYnBhdGggb3RoZXIKK2RvCisgIFsgIiRsaWJwYXRoIiA9ICIjIiBdICYmIGVjaG8gIiRsaWJwYXRoICRvdGhlciIgJiYgY29udGludWUgIyBlcnJvciBtZXNzYWdlCisgIHNldCAtLSBgZ3JlcCAiXiRsaWJwYXRoWyA9XSIgIC92YXIvc2FkbS9pbnN0YWxsL2NvbnRlbnRzIHwgaGVhZCAtMWAKKyAgcGF0aD0kMTsgdHlwZT0kMgorICBjYXNlICR0eXBlIGluCisgICAgZikgIyBmaWxlCisgICAgICBzaGlmdCA5ICMgZmlyc3QgcGFja2FnZQorICAgICAgOzsKKyAgICBzfGwpICMgbGluaworICAgICAgc2hpZnQgMyAjIGZpcnN0IHBhY2thZ2UKKyAgICAgIDs7CisgICAgJycpICMgbm90IGZvdW5kCisgICAgICBlY2hvICIjICRwcm9nOiAkbGlicGF0aCBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBwYWNrYWdlIgorICAgICAgY29udGludWUKKyAgICAgIDs7CisgICAgKikgIyBkdWJpb3VzIGZpbGUgdHlwZQorICAgICAgZWNobyAiIyAkcHJvZzogcGF0aCAkMSBoYXMgZHViaW91cyBmaWxlIHR5cGUgJDIiCisgICAgICBjb250aW51ZQorICAgICAgOzsKKyAgZXNhYworICBzZXQgLS0gYGVjaG8gJDEgfCB0ciA6ICcgJ2AKKyAgZWNobyAkMSAjIHN0cmlwIG9mZiBjbGFzc2VzCitkb25lIHwgc29ydCAtdSB8IHdoaWxlIHJlYWQgcGtnIG90aGVyCitkbworICBpZiBbICIkcGtnIiA9ICIjIiBdIDsgdGhlbiAjIGVycm9yIG1lc3NhZ2UKKyAgICBlY2hvIDE+JjIgIiRvdGhlciIgIyBnb2VzIHRvIHN0ZGVycgorICAgIGNvbnRpbnVlCisgIGZpCisgIGV2YWwgYHBrZ3BhcmFtIC12ICRwa2cgUEtHIE5BTUVgCisgIHByaW50ZiAiUCAgJS0xNXMlc1xuIiAiJFBLRyIgIiROQU1FIgorZG9uZQpkaWZmIC0tZ2l0IGEvZGlzdC9uZXQtc25tcC5zcGVjIGIvZGlzdC9uZXQtc25tcC5zcGVjCmluZGV4IDZhYzRhOWYuLmFjMWZlMjAgMTAwNjQ0Ci0tLSBhL2Rpc3QvbmV0LXNubXAuc3BlYworKysgYi9kaXN0L25ldC1zbm1wLnNwZWMKQEAgLTM3LDcgKzM3LDcgQEAKICVlbmRpZgogU3VtbWFyeTogVG9vbHMgYW5kIHNlcnZlcnMgZm9yIHRoZSBTTk1QIHByb3RvY29sCiBOYW1lOiBuZXQtc25tcAotVmVyc2lvbjogNS40LjQKK1ZlcnNpb246IDUuNS4yCiAjIHVwZGF0ZSByZWxlYXNlIGZvciB2ZW5kb3IgcmVsZWFzZS4gKGVnIDEuZmM2LCAxLnJoNzIsIDEueWRsMywgMS55ZGwyMykKIFJlbGVhc2U6IDEKIFVSTDogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvCkBAIC0xMzMsNyArMTMzLDcgQEAKIAktLWVuYWJsZS1zaGFyZWQgXAogCSV7P25ldHNubXBfcGVybF9tb2R1bGVzOiAtLXdpdGgtcGVybC1tb2R1bGVzPSJJTlNUQUxMRElSUz12ZW5kb3IifSBcCiAJJXshP25ldHNubXBfcGVybF9tb2R1bGVzOiAtLXdpdGhvdXQtcGVybC1tb2R1bGVzfSBcCi0JJXs/bmV0c25tcF9lbWJlZGRlZF9wZXJsOiAtLWVuYWJsZS1hcy1uZWVkZWQgLS1lbmFibGUtZW1iZWRkZWQtcGVybH0gXAorCSV7P25ldHNubXBfZW1iZWRkZWRfcGVybDogLS1lbmFibGUtZW1iZWRkZWQtcGVybH0gXAogCSV7IT9uZXRzbm1wX2VtYmVkZGVkX3Blcmw6IC0tZGlzYWJsZS1lbWJlZGRlZC1wZXJsfSBcCiAJLS13aXRoLWNmbGFncz0iJFJQTV9PUFRfRkxBR1MgJXtuZXRzbm1wX2NmbGFnc30iCiAKQEAgLTI1MiwxMiArMjUyLDEyIEBACiAKICogVHVlIE1heSAgNiAyMDA4IEphbiBTYWZyYW5layA8anNhZnJhbmVrQHVzZXJzLnNmLm5ldD4KIC0gcmVtb3ZlICV7bGliY3VycmVudH0KLS0gZG9uJ3QgdXNlIFByb3ZpZGVzOiB1bmxlc3MgbmVjZXNzYXJ5LCBsZXQgcnBtYnVpbGQgY29tcHV0ZSB0aGUgcHJvdmlkZWQKKy0gYWRkIG9wZW5zc2wtZGV2ZWwgdG8gYnVpbGQgcmVxdWlyZW1lbnRzCistIGRvbid0IHVzZSBQcm92aWRlczogdW5sZXNzIG5lY2Vzc2FyeSwgbGV0IHJwbWJ1aWxkIGNvbXB1dGUgdGhlIHByb3ZpZGVkIAogICBsaWJyYXJpZXMKIAotKiBUdWUgSnVuIDMwIDIwMDcgVGhvbWFzIEFuZGVycyA8dGFuZGVyc0B1c2Vycy5zZi5uZXQ+CisqIFR1ZSBKdW4gMTkgMjAwNyBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNmLm5ldD4KIC0gYWRkICJCdWlsZFJlcXVpcmVzOiBwZXJsLUV4dFV0aWxzLUVtYmVkIiwgZS5nLiBmb3IgRmVkb3JhIDcKLS0gYWRkIC0tZW5hYmxlLWFzLW5lZWRlZCBpZiBidWlsZGluZyB3aXRoIGVtYmVkZGVkIFBlcmwgc3VwcG9ydAogCiAqIFdlZCBOb3YgMjMgMjAwNiBUaG9tYXMgQW5kZXJzIDx0YW5kZXJzQHVzZXJzLnNmLm5ldD4KIC0gZml4ZXMgZm9yIDUuNCBhbmQgNjQtYml0IHBsYXRmb3JtcwpkaWZmIC0tZ2l0IGEvZGlzdC9uc2ItY29uZmlnIGIvZGlzdC9uc2ItY29uZmlnCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjA5NDRmZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25zYi1jb25maWcKQEAgLTAsMCArMSw4MiBAQAorIyEvYmluL3NoCisjCisjICRJZCQKKyMgQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCit1c2FnZSgpCit7CisgICBlY2hvICJVc2FnZTogJDAgIFstZHwteF0gWy1zIFNSQ0RdIgorICAgZWNobyAiIgorICAgZWNobyAiIC1zIFNSQ0RJUiAgOiBzb3VyZSBkaXJlY3RvcnkgWyRIT01FL3NyYy9uZXQtc25tcC1WRVJTSU9OXSIKKyAgIGVjaG8gIiIKKyAgIGVjaG8gIiAteCA6IGNvbmZpZ3VyZSBleHRyYSBmZWF0dXJlcyBmb3IgcHJlLXJlbGVhc2UgdGVzdGluZyIKKyAgIGVjaG8gIiAtZCA6IGNvbmZpZ3VyZSBmb3IgYmluYXJ5IGRpc3RyaWJ1dGlvbiIKKyAgIGV4aXQgMQorfQorCisjc2V0IC14CisKKworIworIyBmaW5kIG5zYi1wbGF0Zm9ybSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGlzIHNjcmlwdAorIworRVhFX1BBVEg9YGRpcm5hbWUgJDBgCitpZiBbIC1mICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zIF07dGhlbgorICAgLiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucworZWxpZiBbIC1mICRIT01FL2Jpbi9uc2ItZnVuY3Rpb25zIF07IHRoZW4KKyAgIC4gJEhPTUUvYmluL25zYi1mdW5jdGlvbnMKK2VsaWYgWyAtZiBuc2ItZnVuY3Rpb25zIF07dGhlbgorICAgLiBuc2ItZnVuY3Rpb25zCitlbHNlCisgICBlY2hvICJDYW5ub3QgZmluZCBuc2ItZnVuY3Rpb25zIGluICRFWEVfUEFUSCwgJEhPTUUvYmluIG9yICRQV0QiCisgICBleGl0IDEKK2ZpCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK05TQl9DT05GSUdfQUxMPTIKKworIyAgICAgIHgpICB4PSRPUFRBUkcgOzsKK3doaWxlIGdldG9wdHMgZHM6eCBvcHQKK2RvCisgICAgY2FzZSAiJG9wdCIgaW4KKyAgICAgIGQpICBOU0JfQ09ORklHX0FMTD0wOzsKKyAgICAgIHMpICBTUkNEPSRPUFRBUkcgOzsKKyAgICAgIHgpICBOU0JfQ09ORklHX0FMTD0xOzsKKyAgICAgIFw/KSMgdW5rbm93biBmbGFnCisgICAgICAgIHVzYWdlOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCBgZXhwciAkT1BUSU5EIC0gMWAKKworaWYgWyAkTlNCX0NPTkZJR19BTEwgLWVxIDIgXTsgdGhlbgorICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSAtZCBvciAteCIKKyAgIHVzYWdlCitmaQorCitpZiBbICJ4JFNSQ0QiID0gIngiIF07IHRoZW4KKyAgIGZvciB4IGluIC4gJEhPTUUvc3JjL25ldC1zbm1wCisgICBkbworICAgICAgaWYgWyAtZiAkeC9jb25maWd1cmUgXTsgdGhlbgorICAgICAgICAgU1JDRD0keAorICAgICAgICAgYnJlYWsKKyAgICAgIGZpCisgICBkb25lCisgICBpZiBbICJ4JFNSQ0QiID0gIngiIF07IHRoZW4KKyAgICAgIGVjaG8gIkNvdWxkbid0IGZpbmQgYSBzb3VyY2UgZGlyZWN0b3J5LiBQbGVhc2Ugc3BlY2lmeSBvbmUgZm9yIG1lLiIKKyAgICAgIHVzYWdlCisgICBmaQorZmkKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworaWYgWyAkTlNCX0NPTkZJR19BTEwgLWVxIDAgXTt0aGVuCisgICAgbnNiX2NvbmZpZ19kaXN0ICRTUkNECitlbHNlCisgICAgbnNiX2NvbmZpZ19hbGwgJFNSQ0QKK2ZpCmRpZmYgLS1naXQgYS9kaXN0L25zYi1mdW5jdGlvbnMgYi9kaXN0L25zYi1mdW5jdGlvbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg2NWNjMgotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbnNiLWZ1bmN0aW9ucwpAQCAtMCwwICsxLDUwOCBAQAorIyEvYmluL3NoCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAkSWQkCisjIEF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBzb3VyY2UgdXNlciBjb25maWcKK2lmIFsgLWYgJEhPTUUvLnNubXAvbnNiLXJjIF07IHRoZW4KKyAgIC4gJEhPTUUvLnNubXAvbnNiLXJjCitmaQorCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCituc2Jfc3lzbmFtZSgpCit7CisgICBlY2hvIGB1bmFtZSAtbXJzIHwgdHIgJyAvJyAnX18nYAorfQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIworIyBVdGlsaXR5IHZhcnMKKyMKK05TQl9WRVJTSU9OPSR7TlNCX1ZFUlNJT046PSIifQorTlNCX0JVSUxEX0RJUj0ke05TQl9CVUlMRF9ESVI6PSIifQorTlNCX0JVSUxEX1NVRkZJWD0ke05TQl9CVUlMRF9TVUZGSVg6PSIifQorTlNCX1NSQ19ESVI9JHtOU0JfU1JDX0RJUjo9IiJ9CitOU0JfSU5TVEFMTF9ESVI9JHtOU0JfSU5TVEFMTF9ESVI6PSIifQorTlNCX0lOU1RBTExfRElSX0RFRkFVTFQ9JHtOU0JfSU5TVEFMTF9ESVJfREVGQVVMVDo9IiROU0JfQlVJTERfRElSL3VzciJ9CitOU0JfUExBVEZPUk09JHtOU0JfUExBVEZPUk06PWBuc2Jfc3lzbmFtZWB9CisjIHN1biBkb2Vzbid0IHN1cHBvcnQgaG9zdG5hbWUgLXMKK05TQl9IT1NUPSR7TlNCX0hPU1Q6PWBob3N0bmFtZSB8IGN1dCAtZjEgLWQuYH0KK05TQl9RVUlFVD0ke05TQl9RVUlFVDo9MH0KK05TQl9QUk9NUFQ9JHtOU0JfUFJPTVBUOj0wfQorTlNCX0NMRUFOPSR7TlNCX0NMRUFOOj0xfQorTlNCX0NPTkZJR19BTEw9JHtOU0JfQ09ORklHX0FMTDo9MH0KK05TQl9TS0lQX0NPTkZJRz0ke05TQl9TS0lQX0NPTkZJRzo9MH0KK05TQl9TS0lQX0JVSUxEPSR7TlNCX1NLSVBfQlVJTEQ6PTB9CitOU0JfU0tJUF9URVNUPSR7TlNCX1NLSVBfVEVTVDo9MH0KK05TQl9TS0lQX0lOU1RBTEw9JHtOU0JfU0tJUF9JTlNUQUxMOj0wfQorTlNCX0VSUl9DVFhfTElORVM9JHtOU0JfRVJSX0NUWF9MSU5FUzo9MjV9CitOU0JfRElTVF9UUkFOU1BPUlRTPSJVRFAgVENQIFVuaXggQ2FsbGJhY2siCitOU0JfRVhUUkFfVFJBTlNQT1JUUz0iIgorTlNCX0RJU1RfTU9EVUxFUz0ke05TQl9ESVNUX01PRFVMRVM6PSJob3N0IGRpc21hbi9ldmVudC1taWIgc211eCJ9CitOU0JfRVhUUkFfTU9EVUxFUz0ke05TQl9FWFRSQV9NT0RVTEVTOj0iZXhhbXBsZXMgZXhhbXBsZXMvZXhhbXBsZSBzbXV4IFJtb24ifQorI3Rlc3RoYW5kbGVyCitOU0JfRVhUUkFfQ09ORklHPSR7TlNCX0VYVFJBX0NPTkZJRzo9IiJ9CitOU0JfUFJFRklYPSR7TlNCX1BSRUZJWDo9Ii91c3IifQorTlNCX0VYVFJBX0lOU1RBTEw9JHtOU0JfRVhUUkFfSU5TVEFMTDo9IiJ9CitOU0JfU0hBUkVEPSR7TlNCX1NIQVJFRDo9Ii0tZW5hYmxlLXNoYXJlZCJ9CitOU0JfVklFVz1jYXQKK05TQl9GTE9XPQorTlNCX0RBVEU9JHtOU0JfREFURTo9YGRhdGUgKyV5JW0lZF8lSCVNYH0KKworIyMgZW1iZWRkZWQgcGVybAorTlNCX0RJUkxJTktfRElSUz0icGVybCBtaWJzIGluY2x1ZGUgcHl0aG9uIgorTlNCX1BFUkw9JHtOU0JfUEVSTDo9IiJ9CisjTlNCX1BFUkw9JHtOU0JfUEVSTDo9Ii0tZW5hYmxlLWVtYmVkZGVkLXBlcmwifQoraWYgWyAieCROU0JfUEVSTCIgIT0gIngiIF07IHRoZW4KKyAgTlNCX1NLSVBfRElSTElOSz0ke05TQl9TS0lQX0RJUkxJTks6PTB9CitlbHNlCisgIE5TQl9TS0lQX0RJUkxJTks9JHtOU0JfU0tJUF9ESVJMSU5LOj0xfQorZmkKKworIworIyBTeXN0ZW0gc3BlY2lmaWMgYWRkaXRpb25zCisjCitjYXNlIGB1bmFtZSAtc2AgaW4KKworICAgU3VuT1MpCisgICAgICBOU0JfVEFJTF9BUkdTPSItJE5TQl9FUlJfQ1RYX0xJTkVTIgorICAgICAgOzsKKworICAgKikKKyAgICAgIE5TQl9UQUlMX0FSR1M9Ii1uICROU0JfRVJSX0NUWF9MSU5FUyIKKyAgICAgIDs7Citlc2FjCisKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMKKyMgVXRpbGl0eSBmdW5jdGlvbnMKKyMKKworbnNiX2Fib3J0KCkKK3sKKyAgIGVjaG8KKyAgIGVjaG8gIkFCT1JUSU5HOiAkQCIgPiYyCisgICBleGl0IDI1NQorfQorCituc2JfaW5mbygpCit7CisgICBpZiBbICROU0JfUVVJRVQgLW5lIDEgXTsgdGhlbgorICAgICAgZWNobyAkQAorICAgZmkKK30KKworbnNiX3Byb21wdCgpCit7CisgICBpZiBbICJ4JDEiID0gIngtZiIgXTsgdGhlbgorICAgICAgc2hpZnQgMQorICAgICAgdG1wX25zYl9wcm9tcHQ9MQorICAgZWxzZQorICAgICAgdG1wX25zYl9wcm9tcHQ9JE5TQl9QUk9NUFQKKyAgIGZpCisgICBpZiBbICR0bXBfbnNiX3Byb21wdCAtZXEgMSBdOyB0aGVuCisgICAgICBlY2hvICRACisgICAgICByZWFkIG5zYl9wcm9tcHRfZHVtbXkKKyAgIGVsc2UKKyAgICAgIGVjaG8gIiRAIChQUk9NUFQgU0tJUFBFRCkiCisgICBmaQorfQorCituc2JfZmxvdygpCit7CisgICAgTlNCX0ZMT1c9JE5TQl9GTE9XOiRACisgICAgZWNobyAiUnVubmluZyAkQCIgPiYyCit9CisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjCituc2JfY29uZmlnX2Rpc3QoKQoreworICAgbnNiX2Zsb3cgY29uZmlnX2Rpc3QKKyAgIGlmIFsgJCMgLWx0IDEgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICJ1c2FnZTogbnNiX2NvbmZpZ19kaXN0IHNyY19kaXIiCisgICBmaQorICAgbmdjX3NyYz0kMQorICAgaWYgWyAhIC1kICRuZ2Nfc3JjIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJG5nY19zcmMgZG9lcyBub3QgZXhpc3QhIgorICAgZmkKKyAgIGlmIFsgISAtZCAkbmdjX3NyYy9hZ2VudC9taWJncm91cCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgImFnZW50L21pYmdyb3VwIGRpcmVjdG9yeSBpbiAkbmdjX3NyYyBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorICAgbmdjX2Rlc3Q9JDIKKyAgIGlmIFsgIlgkbmdjX2Rlc3QiICE9ICJYIiAtYSAhIC1kICRuZ2NfZGVzdCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgIiRuZ2NfZGVzdCBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICAjCisgICAjIHNvbWUgbW9kdWxlcyBtaWdodCBiZSByZWxlYXNlIHNwZWNpZmljLCBzbyBtYWtlIHN1cmUgdGhleQorICAgIyBleGlzdCBiZWZvcmUgd2Ugc2VuZCB0aGVtIG9mZiB0byBjb25maWd1cmUKKyAgICMKKyAgIE5TQl9GSU5BTF9NT0RVTEVTPQorICAgZm9yIG5jZF94IGluICROU0JfRElTVF9NT0RVTEVTCisgICBkbworCWlmIFsgLXIgJG5nY19zcmMvYWdlbnQvbWliZ3JvdXAvJG5jZF94LmggXTsgdGhlbgorCQlOU0JfRklOQUxfTU9EVUxFUz0iJE5TQl9GSU5BTF9NT0RVTEVTICRuY2RfeCIKKwlmaQorICAgZG9uZQorCisgICAjCisgICAjIE5PVEU6IGZvciBzb21lIHJlYXNvbiwgYmFzaCBkb2VzIG5vdCBleHBhbmQgdmFyaWFibGVzCisgICAjIGluc2lkZSBvZiBzaW5nbGUgcXVvdGVzLCBzbyB1c2UgZG91YmxlIHF1b3RlcworICAgIworICAgZWNobyAkbmdjX3NyYy9jb25maWd1cmUgLS13aXRoLXN5cy1sb2NhdGlvbj1Vbmtub3duIFwKKyAgICAgIC0tcHJlZml4PSIkTlNCX1BSRUZJWCIgXAorICAgICAgLS1kaXNhYmxlLWRldmVsb3BlciAkTlNCX0VYVFJBX0NPTkZJRyBcCisgICAgICAtLXdpdGgtc3lzLWNvbnRhY3Q9J1N5c3RlbSBBZG1pbmlzdHJhdG9yJyBcCisgICAgICAtLXdpdGgtZGVmYXVsdHMgLS13aXRoLW1pYi1tb2R1bGVzPSIkTlNCX0ZJTkFMX01PRFVMRVMiCisgICAkbmdjX3NyYy9jb25maWd1cmUgLS13aXRoLXN5cy1sb2NhdGlvbj1Vbmtub3duIFwKKyAgICAgIC0tcHJlZml4PSIkTlNCX1BSRUZJWCIgXAorICAgICAgLS1kaXNhYmxlLWRldmVsb3BlciAkTlNCX0VYVFJBX0NPTkZJRyBcCisgICAgICAtLXdpdGgtc3lzLWNvbnRhY3Q9J1N5c3RlbSBBZG1pbmlzdHJhdG9yJyBcCisgICAgICAtLXdpdGgtZGVmYXVsdHMgLS13aXRoLW1pYi1tb2R1bGVzPSIkTlNCX0ZJTkFMX01PRFVMRVMiCisgICAjIEknZCBsaWtlIHRvIGFkZCAnIHwgdGVlIG5zYl9jb25maWcuJE5TQl9EQVRFJyB0byBzYXZlIG91dHB1dCwgYnV0IHRoZW4KKyAgICMgSSdkIGxvc2UgdGhlIHJjIGZyb20gY29uZmlndXJlLCB3aGljaCBJIG5lZWQuLi4gc2lnaAorICAgbmdjX3JjPSQ/CisgICBpZiBbICRuZ2NfcmMgLW5lIDAgXTt0aGVuCisgICAgICBuc2JfYWJvcnQgIkVycm9yIGR1cmluZyBjb25maWd1cmUgZGlzdCAocmM9JG5nY19yYykiCisgICBmaQorfQorCituc2JfY29uZmlnX2FsbCgpCit7CisgICBuc2JfZmxvdyBjb25maWdfYWxsCisgICBpZiBbICQjIC1sdCAxIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAidXNhZ2U6IG5zYl9jb25maWdfYWxsIHNyY19kaXIiCisgICBmaQorICAgbmdjX3NyYz0kMQorICAgaWYgWyAhIC1kICRuZ2Nfc3JjIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJG5nY19zcmMgZG9lcyBub3QgZXhpc3QhIgorICAgZmkKKyAgIGlmIFsgISAtZCAkbmdjX3NyYy9hZ2VudC9taWJncm91cCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgImFnZW50L21pYmdyb3VwIGRpcmVjdG9yeSBpbiAkbmdjX3NyYyBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorICAgbmdjX2Rlc3Q9JDIKKyAgIGlmIFsgIlgkbmdjX2Rlc3QiICE9ICJYIiAtYSAhIC1kICRuZ2NfZGVzdCBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgIiRuZ2NfZGVzdCBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICAjCisgICAjIFN5c3RlbSBzcGVjaWZpYyBhZGRpdGlvbnMKKyAgICMKKyAgIGNhc2UgYHVuYW1lIC1zYCBpbgorCisgICBMaW51eCkKKyAgICAgIE5TQl9JUFY2PSR7TlNCX0lQVjY6PSItLWVuYWJsZS1pcHY2In0KKyAgICAgIE5TQl9FWFRSQV9UUkFOU1BPUlRTPSJJUFgiCisgICAgICA7OworCisgICAjRGFyd2luKQorICAgIyAgIDs7CisKKyAgICopCisgICAgICBOU0JfSVBWNj0ke05TQl9JUFY2Oj0iLS1lbmFibGUtaXB2NiJ9CisgICAgICA7OworICAgZXNhYworCisgICAjCisgICAjIHVzZSBsaWJ3cmFwIGlmIHdlIGNhbiBmaW5kIHRoZSBoZWFkZXIKKyAgICMKKyAgIGlmIFsgLWYgL3Vzci9pbmNsdWRlL3RjcGQuaCBdOyB0aGVuCisgICAgICBOU0JfTElCV1JBUD0ke05TQl9MSUJXUkFQOj0iLS13aXRoLWxpYndyYXAifQorICAgICAgTlNCX0VYVFJBX0NPTkZJRz0iJE5TQl9FWFRSQV9DT05GSUcgJE5TQl9MSUJXUkFQIgorICAgZmkKKworICAgIworICAgIyBzb21lIG1vZHVsZXMgbWlnaHQgYmUgcmVsZWFzZSBzcGVjaWZpYywgc28gbWFrZSBzdXJlIHRoZXkKKyAgICMgZXhpc3QgYmVmb3JlIHdlIHNlbmQgdGhlbSBvZmYgdG8gY29uZmlndXJlCisgICAjCisgICBOU0JfRklOQUxfTU9EVUxFUz0KKyAgIGZvciBuY2RfeCBpbiAkTlNCX0RJU1RfTU9EVUxFUyAkTlNCX0VYVFJBX01PRFVMRVMKKyAgIGRvCisJaWYgWyAtciAkbmdjX3NyYy9hZ2VudC9taWJncm91cC8kbmNkX3guaCBdOyB0aGVuCisJCU5TQl9GSU5BTF9NT0RVTEVTPSIkTlNCX0ZJTkFMX01PRFVMRVMgJG5jZF94IgorCWZpCisgICBkb25lCisKKyAgICMKKyAgICMgY29uZmlndXJlCisgICAjCisgICAjIE5PVEU6IGZvciBzb21lIHJlYXNvbiwgYmFzaCBkb2VzIG5vdCBleHBhbmQgdmFyaWFibGVzCisgICAjIGluc2lkZSBvZiBzaW5nbGUgcXVvdGVzLCBzbyB1c2UgZG91YmxlIHF1b3RlcworICAgIworICAgZWNobyAkbmdjX3NyYy9jb25maWd1cmUgIC0td2l0aC1kZWZhdWx0cyBcCisgICAgICAtLXByZWZpeD0iJE5TQl9QUkVGSVgiIFwKKyAgICAgIC0tZGlzYWJsZS1kZXZlbG9wZXIgJE5TQl9FWFRSQV9DT05GSUcgXAorICAgICAgIi0td2l0aC1taWItbW9kdWxlcz0kTlNCX0ZJTkFMX01PRFVMRVMiIFwKKyAgICAgICItLXdpdGgtdHJhbnNwb3J0cz0kTlNCX0RJU1RfVFJBTlNQT1JUUyAkTlNCX0VYVFJBX1RSQU5TUE9SVFMiIFwKKyAgICAgICROU0JfU0hBUkVEICROU0JfSVBWNiAkTlNCX1BFUkwKKyAgICRuZ2Nfc3JjL2NvbmZpZ3VyZSAgLS13aXRoLWRlZmF1bHRzIFwKKyAgICAgIC0tcHJlZml4PSIkTlNCX1BSRUZJWCIgXAorICAgICAgLS1kaXNhYmxlLWRldmVsb3BlciAkTlNCX0VYVFJBX0NPTkZJRyBcCisgICAgICAiLS13aXRoLW1pYi1tb2R1bGVzPSROU0JfRklOQUxfTU9EVUxFUyIgXAorICAgICAgIi0td2l0aC10cmFuc3BvcnRzPSROU0JfRElTVF9UUkFOU1BPUlRTICROU0JfRVhUUkFfVFJBTlNQT1JUUyIgXAorICAgICAgJE5TQl9TSEFSRUQgJE5TQl9JUFY2ICROU0JfUEVSTAorICAgIyBJJ2QgbGlrZSB0byBhZGQgJyB8IHRlZSBuc2JfY29uZmlnLiROU0JfREFURScgdG8gc2F2ZSBvdXRwdXQsIGJ1dCB0aGVuCisgICAjIEknZCBsb3NlIHRoZSByYyBmcm9tIGNvbmZpZ3VyZSwgd2hpY2ggSSBuZWVkLi4uIHNpZ2gKKyAgIG5nY19yYz0kPworICAgaWYgWyAkbmdjX3JjIC1uZSAwIF07dGhlbgorICAgICAgbnNiX2Fib3J0ICJFcnJvciBkdXJpbmcgY29uZmlndXJlIGFsbCAocmM9JG5nY19yYykiCisgICBmaQorfQorCituc2JfemlwKCkKK3sKKyAgIGlmIFsgJCMgLW5lIDMgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICJ1c2FnZTogJDAgcmVsZWFzZSBidWlsZF9kaXJlY3RvcnkgZGVzdF9kaXIiCisgICBmaQorCisgICByZWxlYXNlPSQxCisgICBidWlsZF9kaXI9JDIKKyAgIGRlc3RfZGlyPSQzCisKKyAgIGJ1aWxkPSRidWlsZF9kaXIvJE5TQl9QTEFURk9STQorCisgICBpZiBbICEgLWQgJGJ1aWxkIF07IHRoZW4KKyAgICAgIG5zYl9hYm9ydCAiJGJ1aWxkIGRpcmVjdG9yeSBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICBpZiBbICEgLWQgJGJ1aWxkL3VzciBdOyB0aGVuCisgICAgICBuc2JfYWJvcnQgImluc3RhbGwgZGlyZWN0b3J5ICRidWlsZC91c3IgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0ISIKKyAgIGZpCisKKyAgIGNkICRidWlsZAorCisgICBybSAtZiAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIKKyAgIG5zYl9pbmZvICJ0YXIgY2YgJGRlc3RfZGlyLyRyZWxlYXNlLSROU0JfUExBVEZPUk0udGFyIHVzciIKKyAgIHRhciBjZiAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIgdXNyCisKKyAgIG5zYl9pbmZvICJnemlwIC0tYmVzdCAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIiCisgICBnemlwIC0tYmVzdCAkZGVzdF9kaXIvJHJlbGVhc2UtJE5TQl9QTEFURk9STS50YXIKKworICAgaWYgWyAkTlNCX1FVSUVUIC1uZSAxIF07IHRoZW4KKyAgICAgIGxzIC1sdCAkZGVzdF9kaXIKKyAgIGZpCit9CisKK25zYl91cGxvYWQoKQoreworICAgYnVpbGRfZGlyPSQxCisgICB0YXJnZXQ9JDIKKyAgIG5zYl9mbG93IHVwbG9hZCB0byAkdGFyZ2V0OiBjb25maWcubG9nIGNvbmZpZ3VyZS1zdW1tYXJ5IG5zYl9tYWtlLWFsbC4kTlNCX0RBVEUgbnNiX21ha2UtdGVzdC4kTlNCX0RBVEUKKyAgIGRpcj0kUFdECisgICBjZCAkYnVpbGRfZGlyCisgICAvdXNyL2Jpbi9zY3AgY29uZmlnLmxvZyBjb25maWd1cmUtc3VtbWFyeSBuc2JfbWFrZS1hbGwuJE5TQl9EQVRFIG5zYl9tYWtlLXRlc3QuJE5TQl9EQVRFXAorICAgICAgICAgICAgICAgICAkdGFyZ2V0CisgICBjZCAkZGlyCit9CisKK25zYl9kaXJfbGluaygpCit7CisgIGlmIFsgJCMgLWx0IDIgXTsgdGhlbgorICAgIG5zYl9hYm9ydCAidXNhZ2U6IG5zYl9kaXJfbGluayBzcmNfZGlyIGRzdF9kaXIiCisgIGZpCisgIGxpbmtfc3JjX2Rpcj0kMQorICBsaW5rX2RzdF9kaXI9JDIKKyAgaWYgWyAtZCAkbGlua19zcmNfZGlyIF07IHRoZW4KKyAgICBuc2JfZmxvdyBzZXQgdXAgc2hhZG93IGRpcmVjdG9yeSAkbGlua19kc3RfZGlyCisgICAgJE5TQl9ESVJMSU5LICRsaW5rX3NyY19kaXIgJGxpbmtfZHN0X2RpcgorICAgIHJjPSQ/CisgICAgaWYgWyAkcmMgLW5lIDAgXTt0aGVuCisgICAgICBuc2JfYWJvcnQgIkVycm9yIGR1cmluZyBuc2JfZGlyX2xpbmsgKHJjPSRyYykiCisgICAgZmkKKyAgZWxzZQorICAgIG5zYl9pbmZvICJTa2lwcGluZyAkbGlua19zcmNfZGlyIgorICBmaQorICB9CisKK25zYl9tYWtlKCkKK3sKKyAgIG5zYl9mbG93IG1ha2UgJDEKKyAgIHRhcmdldD0kMQorICAgc2hpZnQgMQorICAgcGFybXM9JEAKKworICAgaWYgWyAieCROU0JfTUFLRSIgPSAieCIgXTt0aGVuCisgICAgICAjbnNiX2luZm8gIlNlYXJjaGluZyBmb3IgR05VIG1ha2UgKHNldCBOU0JfTUFLRSB0byBza2lwIHRoaXMgc3RlcCkiCisgICAgICBmb3IgcCBpbiBgZWNobyAkUEFUSCB8IHRyICc6JyAnICdgCisgICAgICBkbworICAgICAgICAgI2VjaG8gJHAKKyAgICAgICAgIGlmIFsgLXggJHAvbWFrZSBdO3RoZW4KKyAgICAgICAgICAgIGR1bW15PWAkcC9tYWtlIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCBHTlVgCisgICAgICAgICAgICBpZiBbICQ/IC1lcSAwIF07dGhlbgorCSAgICAgICAjbnNiX2luZm8gInVzaW5nICRwL21ha2UgKCRkdW1teSkiCisgICAgICAgICAgICAgICBOU0JfTUFLRT0kcC9tYWtlCisgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZmkKKyAgICAgICAgIGZpCisgICAgICAgICBpZiBbIC14ICRwL2dtYWtlIF07dGhlbgorICAgICAgICAgICAgZHVtbXk9YCRwL2dtYWtlIC0tdmVyc2lvbiAyPiYxIHwgZ3JlcCBHTlVgCisgICAgICAgICAgICBpZiBbICQ/IC1lcSAwIF07dGhlbgorCSAgICAgICAjbnNiX2luZm8gInVzaW5nICRwL2dtYWtlICgkZHVtbXkpIgorICAgICAgICAgICAgICAgTlNCX01BS0U9JHAvZ21ha2UKKyAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIFsgIngkTlNCX01BS0UiID0gIngiIF07dGhlbgorICAgICAgICAgbnNiX2Fib3J0ICJHTlUgbWFrZSBub3QgZm91bmQuIFNldCBOU0JfTUFLRSB0byB5b3VyIG1ha2UgZXhlY3V0YWJsZS4iCisgICAgICBmaQorICAgZmkKKworICAgbnNiX21ha2VfT1VUUFVUPW5zYl9tYWtlLSR0YXJnZXQuJE5TQl9EQVRFCisgICBuc2JfaW5mbyAiTWFraW5nICR0YXJnZXQuLi4gKGxvZyBpcyAkbnNiX21ha2VfT1VUUFVUKSIKKyAgICMKKyAgIGlmIFsgIngkdGFyZ2V0IiA9ICJ4YWxsIiBdOyB0aGVuCisgICAgICAkTlNCX01BS0UgTk9BVVRPREVQUz15IHRvdWNoaXQgMj4mMSB8IHRlZSAkbnNiX21ha2VfT1VUUFVUCisgICBmaQorICAgJE5TQl9NQUtFICROU0JfTUFLRV9FWFRSQSBOT0FVVE9ERVBTPXkgc3RhcnQtZmxhZyAkdGFyZ2V0ICRwYXJtcyBlbmQtZmxhZyAyPiYxIHwgdGVlIC1hICRuc2JfbWFrZV9PVVRQVVQKKyAgICMgY2hlY2tpbmcgJD8gd291bGQgb25seSBnZXQgdXMgdGhlIHJjIGZyb20gdGVlLCB3aGljaCBpcyB1c2VsZXNzCisKKyAgIG5zYl9pbmZvICJDaGVja2luZyBmb3IgZXJyb3JzLi4uIgorICAgZWdyZXAgLWkgImVycm9yfGZhaWx8d2FybnxubyBzdWNofGV4aXN0c3x0IGZpbmQgfGVybWlzc2lvbiBkZW5pZWQiICRuc2JfbWFrZV9PVVRQVVQgXAorICAgICAgICAgPiBuc2JfbWFrZS0kdGFyZ2V0LWFsbGVycnMuJE5TQl9EQVRFCisgICAjIGFsbG93IGZvciBhIGZldyBleGNlcHRpb25zCisgICBlZ3JlcCAtdiAtaSAiXm9rfHRlc3RpbmcgLipmYWlsdXJlfFthLXomX10oZmFpbHxlcnJvcil8d2FybnxlcnJvcihtaWJ8XC4zKXwoTE9HfFNOTVApX0VSUnxJbiBmdW5jdGlvbnw9IEZBSUxVUkV8REVCVUdNU0d8L1wqfHN0YXRpYyBsaWJyYXJ5IC4qIGlzIG5vdCBwb3J0YWJsZSIgbnNiX21ha2UtJHRhcmdldC1hbGxlcnJzLiROU0JfREFURSBcCisgICAgICAgICA+IG5zYl9tYWtlLSR0YXJnZXQtZXJycy4kTlNCX0RBVEUKKyAgIGlmIFsgLXMgbnNiX21ha2UtJHRhcmdldC1lcnJzLiROU0JfREFURSBdOyB0aGVuCisgICAgICBuc2JfcHJvbXB0ICJwcmVzcyBlbnRlciB0byB2aWV3IGVycm9ycyIKKyMgICAgICBncmVwICc6JyAkbnNiX21ha2VfT1VUUFVUID4gbnNiX21ha2UtJHRhcmdldC1lcnJzMi4kTlNCX0RBVEUKKyMgICAgICB0YWlsIC1uICROU0JfRVJSX0NUWF9MSU5FUyBuc2JfbWFrZS0kdGFyZ2V0LWVycnMyLiROU0JfREFURSA+JjIKKyAgICAgIHRhaWwgJE5TQl9UQUlMX0FSR1MgbnNiX21ha2UtJHRhcmdldC1lcnJzLiROU0JfREFURSA+JjIKKyAgICAgIG5zYl9hYm9ydCAiRXJyb3IocykgZHVyaW5nIG1ha2UgJHRhcmdldCIKKyAgIGZpCisKKyAgIGlmIFsgLWYgYnVpbGQtaW4tcHJvZ3Jlc3MtZmxhZyBdO3RoZW4KKyAgICAgbnNiX2Fib3J0ICJtYWtlICR0YXJnZXQgaW5jb21wbGV0ZSIKKyAgIGZpCit9CisKK25zYl9kZWZhdWx0X3BhdGhzKCkKK3sKKyAgIGlmIFsgIngkTlNCX1ZFUlNJT04iID0gIngiIF07IHRoZW4KKyAgICAgIE5TQl9WRVJTSU9OPSJ1bmtub3duLXZlcnNpb24iCisgICBmaQorICAgaWYgWyAieCROU0JfU1JDX0RJUiIgPSAieCIgXTsgdGhlbgorICAgICAgTlNCX1NSQ19ESVI9JEhPTUUvc3JjL25ldC1zbm1wLSROU0JfVkVSU0lPTgorICAgZmkKKyAgIGlmIFsgIngkTlNCX0JVSUxEX0RJUiIgPSAieCIgXTsgdGhlbgorICAgICAgTlNCX0JVSUxEX0RJUj0kSE9NRS9idWlsZC8kTlNCX1ZFUlNJT04KKyAgICAgIGlmIFsgIngkTlNCX1NVRkZJWCIgIT0gIngiIF07IHRoZW4KKyAgICAgICAgIE5TQl9CVUlMRF9ESVI9JE5TQl9CVUlMRF9ESVIvJE5TQl9TVUZGSVgKKyAgICAgIGZpCisgICBmaQorICAgaWYgWyAieCROU0JfSU5TVEFMTF9ESVIiID0gIngiIF07IHRoZW4KKyAgICAgIE5TQl9JTlNUQUxMX0RJUj0iJE5TQl9JTlNUQUxMX0RJUl9ERUZBVUxUIgorICAgZmkKK30KKworbnNiX2J1aWxkKCkKK3sKKyAgIGlmIFsgJCMgLWx0IDUgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICJ1c2FnZTogJDAgcmVsZWFzZSBzcmNfZGlyIGJ1aWxkX2RpcmVjdG9yeSBkZXN0X2RpciBjb25maWdfYWxsX2ZsYWcgKCRAKSIKKyAgIGZpCisKKyAgIG5zYl9jb25maWdfYWxsX2ZsYWc9MAorICAgcmVsZWFzZT0kMQorICAgc3JjX2Rpcj0kMgorICAgYnVpbGRfZGlyPSQzCisgICBkZXN0X2Rpcj0kNAorICAgbnNiX2NvbmZpZ19hbGxfZmxhZz0kNQorICAgc2hpZnQgNQorCisgICBuc2JfZmxvdyBidWlsZCBpbiAkYnVpbGRfZGlyCisgICBuc2JfZmxvdyBob3N0ICROU0JfSE9TVAorICAgbnNiX2Zsb3cgcGxhdGZvcm0gJE5TQl9QTEFURk9STQorCisgICBpZiBbICEgLWQgJHNyY19kaXIgXTsgdGhlbgorICAgICAgbnNiX2Fib3J0ICIkc3JjX2RpciBkb2VzIG5vdCBleGlzdCEiCisgICBmaQorCisgICBpZiBbICEgLWQgJGJ1aWxkX2RpciBdOyB0aGVuCisgICAgICBta2RpciAkYnVpbGRfZGlyCisgICAgICBpZiBbICEgLWQgJGJ1aWxkX2RpciBdOyB0aGVuCisgICAgICAgICBuc2JfYWJvcnQgIiRidWlsZF9kaXIgZGlyZWN0b3J5IGRvZXMgbm90IGV4aXN0ISIKKyAgICAgIGZpCisgICBmaQorCisgICBuc2JfaW5mbyAiQ2hhbmdpbmcgZGlyZWN0b3JpZXMgdG8gJGJ1aWxkX2RpciIKKyAgIGNkICRidWlsZF9kaXIKKworICAgaWYgWyAkTlNCX0NMRUFOIC1ndCAwIF07IHRoZW4KKyAgICAgIG5zYl9pbmZvICJDbGVhbmluZyB1cC4uLiIKKyAgICAgIGlmIFsgJE5TQl9DTEVBTiAtZXEgMiBdO3RoZW4KKyAgICAgICAgaWYgWyAieCRQV0QiID0gIngvIiBdOyB0aGVuCisgICAgICAgICAgIG5zYl9hYm9ydCAiTm90IHJ1bm5pbmcgcm0gLWZSIGZyb20gLyIKKyAgICAgICAgZmkKKyAgICAgICAgbnNiX2luZm8gInJtIC1mUiAqIC5bYS16QS1aXSogPiAvZGV2L251bGwgMj4mMSIKKyAgICAgICAgcm0gLWZSICogLlthLXpBLVpdKiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICBlbHNlCisgICAgICAgIGlmIFsgIngkZGVzdF9kaXIiICE9ICJ4IiAtYSAieCRkZXN0X2RpciIgIT0gIngvIiBdOyB0aGVuCisgICAgICAgICAgbnNiX2luZm8gInJtIC1mUiBuc2JfKiAkZGVzdF9kaXIgPiAvZGV2L251bGwgMj4mMSIKKyAgICAgICAgICAjcm0gLWZSIG5zYl8qICRkZXN0X2RpciA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgLWYgTWFrZWZpbGUgXTsgdGhlbgorICAgICAgICAgICAgbnNiX21ha2UgTk9BVVRPREVQUz15IGRpc3RjbGVhbgorICAgICAgICAgICAgbnNiX2J1aWxkX3JjPSQ/CisgICAgICAgICAgICBpZiBbICRuc2JfYnVpbGRfcmMgLW5lIDAgXTsgdGhlbgorICAgICAgICAgICAgICAgIG5zYl9hYm9ydCAiRXJyb3IgZHVyaW5nIG1ha2UgZGlzdGNsZWFuIChyYz0kbnNiX2J1aWxkX3JjKSIKKyAgICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgZmkKKworICAgaWYgWyAiWCRkZXN0X2RpciIgIT0gIlgiIC1hICEgLWQgJGRlc3RfZGlyIF07IHRoZW4KKyAgICAgIG1rZGlyIC1wICRkZXN0X2RpcgorICAgICAgaWYgWyAhIC1kICRkZXN0X2RpciBdOyB0aGVuCisgICAgICAgICBuc2JfYWJvcnQgIiRkZXN0X2RpciBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QhIgorICAgICAgZmkKKyAgIGZpCisKKyAgIGlmIFsgJE5TQl9TS0lQX0RJUkxJTksgLWVxIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIlNraXBwaW5nIG5zYl9kaXJfbGluayIKKyAgIGVsc2UKKyAgICAgIGZvciBkIGluICROU0JfRElSTElOS19ESVJTOyBkbworICAgICAgICBuc2JfZGlyX2xpbmsgJHNyY19kaXIvJGQgJGJ1aWxkX2Rpci8kZAorICAgICAgZG9uZQorICAgZmkKKworICAgaWYgWyAkTlNCX1NLSVBfQ09ORklHIC1uZSAxIF07IHRoZW4KKyAgICAgIG5zYl9pbmZvICJDb25maWd1cmluZy4uLiAobG9nIGlzIG5zYl9jb25maWcuJE5TQl9EQVRFKSIKKyAgICAgIGlmIFsgIngkbnNiX2NvbmZpZ19hbGxfZmxhZyIgPSAieDAiIF07IHRoZW4KKyAgICAgICAgICBuc2JfY29uZmlnX2Rpc3QgJHNyY19kaXIgIiRkZXN0X2RpciIKKyAgICAgIGVsc2UKKyAgICAgICAgICBuc2JfY29uZmlnX2FsbCAkc3JjX2RpciAiJGRlc3RfZGlyIgorICAgICAgZmkKKyAgICAgIG5zYl9wcm9tcHQgInByZXNzIGVudGVyIHRvIGNvbnRpbnVlIgorICAgZmkKKworICAgaWYgWyAkTlNCX1NLSVBfQlVJTEQgLWVxIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIlNraXBwaW5nICdtYWtlIGFsbCciCisgICBlbHNlCisgICAgICBuc2JfbWFrZSBhbGwKKyAgIGZpCisKKyAgIGlmIFsgJE5TQl9TS0lQX1RFU1QgLWVxIDEgXTsgdGhlbgorICAgICAgbnNiX2luZm8gIlNraXBwaW5nICdtYWtlIHRlc3QnIgorICAgZWxzZQorICAgICAgbnNiX3Byb21wdCAiTm8gZXJyb3JzIGZvdW5kLCBwcmVzcyBlbnRlciB0byBydW4gdGVzdHMiCisgICAgICBTTk1QX1RNUERJUl9CQVNFPSRidWlsZF9kaXIvdGVzdHMKKyAgICAgIGV4cG9ydCBTTk1QX1RNUERJUl9CQVNFCisgICAgICBuc2JfbWFrZSB0ZXN0CisgICBmaQorCisgICBpZiBbICROU0JfU0tJUF9JTlNUQUxMIC1lcSAxIF07IHRoZW4KKyAgICAgIG5zYl9pbmZvICJTa2lwcGluZyAnbWFrZSBpbnN0YWxsJyIKKyAgIGVsc2UKKyAgICAgIG5zYl9wcm9tcHQgIk5vIGVycm9ycyBmb3VuZCwgcHJlc3MgZW50ZXIgdG8gaW5zdGFsbCIKKyAgICAgICMgREVTVERJUiBtYWtlcyBzdXJlIHRoZSBwZXJsIHN0dWZmIGdvZXMgaW50byAkZGVzdF9kaXIsIHRvbworICAgICAgbnNiX21ha2UgaW5zdGFsbCBERVNURElSPSIkZGVzdF9kaXIiICROU0JfRVhUUkFfSU5TVEFMTAorICAgZmkKKworICAgcmV0dXJuIDAKK30KZGlmZiAtLWdpdCBhL2Rpc3QvbnNiLW5pZ2h0bHkgYi9kaXN0L25zYi1uaWdodGx5Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjMyOThhMjYKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L25zYi1uaWdodGx5CkBAIC0wLDAgKzEsMTg4IEBACisjIS9iaW4vc2gKKyMKKyMgJElkJAorIyBBdXRob3I6IFJvYmVydCBTdG9yeSA8cnN0b3J5QGZyZWVzbm1wLmNvbT4KKyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK3VzYWdlKCkKK3sKKyAgIGVjaG8gIlVzYWdlOiAkMCAgW29wdGlvbmFsIHBhcmFtc10gVkVSU0lPTiIKKyAgIGVjaG8gIiIKKyAgIGVjaG8gIiBvcHRpb25hbCBwYXJhbXM6IFsteF0gWy1zIFNSQ0RdIFstYiBCVUlMRERdIFstaSBJTlNUQUxMRF0iCisgICBlY2hvICIgICAgICAgICAgICAgICAgICBbLWggaG9zdF0gWy1wIHBhdGhdIgorICAgZWNobyAiIFZFUlNJT04gICAgOiByZWxlYXNlIG51bWJlciAoZWcgNS4yLjIpIgorICAgZWNobyAiIC1zIFNSQ0RJUiAgOiBzb3VyZSBkaXJlY3RvcnkgWyRIT01FL3NyYy9uZXQtc25tcC1WRVJTSU9OXSIKKyAgIGVjaG8gIiAtYiBCVUlMREQgIDogYnVpbGQgZGlyZWN0b3J5IFskSE9NRS9idWlsZC9dIgorICAgZWNobyAiICAgICAgICAgICAgICBOT1RFLXBsYXRmb3JtIHdpbGwgYmUgYXBwZW5kZWQgdG8gYnVpbGQgZGlyZWN0b3J5IgorICAgZWNobyAiIC1pIElOU1RBTExEOiBpbnN0YWxsIGRpcmVjdG9yeSBbJEhPTUUvYnVpbGQvXCRQTEFURk9STS91c3JdIgorICAgZWNobyAiIgorICAgZWNobyAiIC14IDogY29uZmlndXJlIGV4dHJhIGZlYXR1cmVzIGZvciBwcmUtcmVsZWFzZSB0ZXN0aW5nIgorICAgZWNobyAiIC1DIDogZG9uJ3Qgc291cmNlICRIT01FLy5zbm1wL25zYi1uaWdodGx5IgorICAgZWNobyAiIgorICAgZWNobyAiIC1mIDogZnJvbSBhZGRyZXNzIGZvciBlbWFpbCByZXN1bHRzIgorICAgZWNobyAiIC1lIDogYWRkcmVzcyB0byBlbWFpbCBlcnJvciByZXN1bHRzIHRvIgorICAgZWNobyAiIC1vIDogYWRkcmVzcyB0byBlbWFpbCBzdWNjZXNzIHJlc3VsdHMgdG8iCisgICBlY2hvICIgLWggOiBob3N0IHRvIHVwbG9hZCByZXN1bHRzIHRvIgorICAgZWNobyAiIC1wIDogcGF0aCB0byB1cGxvYWQgcmVzdWx0cyB0byIKKyAgIGV4aXQgMQorfQorCisjc2V0IC14CisKKyMgbWFrZSBnZXRvcHRzIHdvcmsgb24gVHJ1NjQgYnkgcmVzcGF3bmluZyBpbiBQb3NpeCBtb2RlCitpZiBbICJgdW5hbWVgIiA9ICJPU0YxIiAtYSAiJEJJTl9TSCIgIT0gInhwZzQiIF07IHRoZW4KKyAgICBCSU5fU0g9eHBnNAorICAgIGV4cG9ydCBCSU5fU0gKKyAgICBleGVjICQwICQqCitmaQorCisjCisjIGZpbmQgbnNiLXBsYXRmb3JtIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoaXMgc2NyaXB0CisjCitFWEVfUEFUSD1gZGlybmFtZSAkMGAKK2lmIFsgISAtZiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgIGlmIFsgLWYgJEhPTUUvYmluL25zYi1mdW5jdGlvbnMgXTsgdGhlbgorICAgICAgRVhFX1BBVEg9JEhPTUUvYmluCisgICBlbGlmIFsgLWYgbnNiLWZ1bmN0aW9ucyBdO3RoZW4KKyAgICAgIEVYRV9QQVRIPSRQV0QKKyAgIGVsc2UKKyAgICAgIGVjaG8gIkNhbm5vdCBmaW5kIG5zYi1mdW5jdGlvbnMgaW4gJEVYRV9QQVRILCAkSE9NRS9iaW4gb3IgJFBXRCIKKyAgICAgIGV4aXQgMQorICAgZmkKK2ZpCisKK2lmIFsgIngkMSIgPSAieC1DIiBdOyB0aGVuCisgICAgc2hpZnQKK2Vsc2UKKyAgICBpZiBbIC1mICRIT01FLy5zbm1wL25zYi1uaWdodGx5IF07dGhlbgorICAgICAgICAuICRIT01FLy5zbm1wL25zYi1uaWdodGx5CisgICAgZmkKK2ZpCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgLXIgOiByZW1vdmUgYnVpbGQgZGlyIGJlZm9yZQorIyAtUiA6IHJlbW92ZSBidWlsZCBkaXIgYWZ0ZXIKK1BBUk1TPSIkUEFSTVMgLXIiCitOSUdIVExZX1ZFUkJPU0U9MAorTlNCX0VSUl9SRVNVTFRTX1RPPSIiCitOU0JfT0tfUkVTVUxUU19UTz0iIgorCit3aGlsZSBnZXRvcHRzIGI6ZTpmOmk6bzpzOnhoOnA6diBvcHQKK2RvCisgICAgY2FzZSAiJG9wdCIgaW4KKyAgICAgIGIpICBOU0JfQlVJTERfRElSPSRPUFRBUkc7OworICAgICAgZSkgIE5TQl9FUlJfUkVTVUxUU19UTz0kT1BUQVJHOzsKKyAgICAgIGYpICBOU0JfRlJPTT0kT1BUQVJHOzsKKyAgICAgIG8pICBOU0JfT0tfUkVTVUxUU19UTz0kT1BUQVJHOzsKKyAgICAgIGkpICBQQVJNUz0iLWkgJE9QVEFSRyAkUEFSTVMiOzsKKyAgICAgIHMpICBOU0JfU1JDX0RJUj0kT1BUQVJHOzsKKyAgICAgIGgpICBOU0JfU0NQX0hPU1Q9JE9QVEFSRworICAgICAgICAgIFBBUk1TPSItaCAkTlNCX1NDUF9IT1NUICRQQVJNUyIKKyAgICAgICAgICA7OworICAgICAgcCkgIE5TQl9TQ1BfREVTVD0kT1BUQVJHCisgICAgICAgICAgUEFSTVM9Ii1wICROU0JfU0NQX0RFU1QgJFBBUk1TIgorICAgICAgICAgIDs7CisgICAgICB4KSAgUEFSTVM9Ii14ICRQQVJNUyI7OworICAgICAgdikgIE5JR0hUTFlfVkVSQk9TRT0xOzsKKyAgICAgIFw/KSMgdW5rbm93biBmbGFnCisgICAgICAgIHVzYWdlOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCBgZXhwciAkT1BUSU5EIC0gMWAKKworaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICBlY2hvICJleHBlY3RpbmcgMSBhcmd1bWVudCwgZ290ICQjICgkQCkiCisgICB1c2FnZQorZmkKKworTlNCX1ZFUlNJT049JDEKKworLiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucworCituc2JfZGVmYXVsdF9wYXRocworCitQQVJNUz0iJFBBUk1TIC1iICROU0JfQlVJTERfRElSIC1zICROU0JfU1JDX0RJUiIKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK2VjaG8gIlN0YXJ0OiBgZGF0ZWAiCitlY2hvICJSdW5uaW5nIG5zYi1wYWNrYWdlICRQQVJNUyAkTlNCX1ZFUlNJT04iCitpZiBbICROSUdIVExZX1ZFUkJPU0UgPSAxIF07IHRoZW4KKyAgICAkRVhFX1BBVEgvbnNiLXBhY2thZ2UgJFBBUk1TICROU0JfVkVSU0lPTgorZWxzZQorICAgICRFWEVfUEFUSC9uc2ItcGFja2FnZSAkUEFSTVMgJE5TQl9WRVJTSU9OID4gL2Rldi9udWxsCitmaQorUkM9JD8KK2VjaG8gIkZpbmlzaDogYGRhdGVgIgorY2QgJE5TQl9CVUlMRF9ESVIKK2Nhc2UgJFJDIGluCisgICAgMCkgIFJFU1VMVD0iU3VjY2VzcyIKKyAgICAgICAgTlNCX1JFU1VMVFNfVE89JE5TQl9PS19SRVNVTFRTX1RPCisgICAgICAgIEZJTEVTPSIiCisgICAgICAgIDs7CisgICAgKikgUkVTVUxUPSJFcnJvciAocmMgJFJDKSIKKyAgICAgICBOU0JfUkVTVUxUU19UTz0kTlNCX0VSUl9SRVNVTFRTX1RPCisgICAgICAgRklMRVM9YGxzIG5zYi1tYWtlLSotZXJycy4qIDI+L2Rldi9udWxsYAorICAgICAgIGlmIFsgIngkTlNCX1NDUF9IT1NUIiAhPSAieCIgXTsgdGhlbgorICAgICAgICAgIG5zYl91cGxvYWQgJE5TQl9CVUlMRF9ESVIgJE5TQl9TQ1BfSE9TVDokTlNCX1NDUF9ERVNULyROU0JfVkVSU0lPTi8kTlNCX1NVRkZJWAorICAgICAgIGZpCisgICAgICAgIDs7Citlc2FjCitlY2hvICJSZXN1bHQ6ICRSRVNVTFQiCisKK2lmIFsgIngkTlNCX1JFU1VMVFNfVE8iICE9ICJ4IiBdOyB0aGVuCisgICBTVUJKRUNUPSIkTlNCX1ZFUlNJT04gJFJFU1VMVCBvbiAkTlNCX0hPU1QgKCROU0JfUExBVEZPUk0pIgorICAgZWNobyAiU2VuZGluZyBtYWlsIHRvICROU0JfUkVTVUxUU19UTzogJFNVQkpFQ1QiCisgICBjYXNlIGB1bmFtZSAtc2AgaW4KKyAgICAgIE9wZW5CU0R8RnJlZUJTRCkgIyBtYWlsIGRvZXNuJ3QgYWxsb3cgc2V0dGluZyBGcm9tCisgICAgICAgICAjIHNlZW1zIHRvIGJlIGluIC91c3Ivc2Jpbiwgd2hpY2ggaXNuJ3QgaW4gYWxsIHBhdGhzCisJIFBBVEg9L3Vzci9zYmluLzokUEFUSAorICAgICAgICAgZWNobyAiRnJvbTogJE5TQl9GUk9NIiA+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiVG86ICROU0JfUkVTVUxUU19UTyIgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICAjIG1haWwtcmVsYXRlZCBlcnJvcnMgdG8gT0sgYWRkcmVzcyAodXN1bGx5IGJ1aWxkbWFzdGVyKQorICAgICAgICAgZWNobyAiRXJyb3JzLVRvOiAkTlNCX09LX1JFU1VMVFNfVE8iID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiU3ViamVjdDogJFNVQkpFQ1QiID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiIiA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGdyZXAgQ09ORklHVVJFX09QVElPTlMgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaHxzZWQgJ3M6L2hvbWUvW14gXSovYnVpbGQ6JEhPTUU6ZycgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICJSZXN1bHQ6ICRSRVNVTFQiID4+IG1haWwucmVzdWx0cworICAgICAgICAgaWYgWyAieCRGSUxFUyIgIT0gIngiIF07IHRoZW4KKyAgICAgICAgICAgIGNhdCAkRklMRVMgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBmaQorICAgICAgICAgc2VuZG1haWwgLXQgPCBtYWlsLnJlc3VsdHMKKyAgICAgICAgIDs7CisgICAgICBTdW5PUykgIyBubyBzZW5kbWFpbCwgbm8gbWFpbCAtcywgbmVlZCAtdCBmb3IgVG8gCisgICAgICAgICBlY2hvICJGcm9tOiAkTlNCX0ZST00iID4gbWFpbC5yZXN1bHRzCisgICAgICAgICAjIG1haWwtcmVsYXRlZCBlcnJvcnMgdG8gT0sgYWRkcmVzcyAodXN1bGx5IGJ1aWxkbWFzdGVyKQorICAgICAgICAgZWNobyAiRXJyb3JzLVRvOiAkTlNCX09LX1JFU1VMVFNfVE8iID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiU3ViamVjdDogJFNVQkpFQ1QiID4+IG1haWwucmVzdWx0cworICAgICAgICAgZWNobyAiIiA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGdyZXAgQ09ORklHVVJFX09QVElPTlMgaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaHxzZWQgJ3M6L2hvbWUvW14gXSovYnVpbGQ6JEhPTUU6ZycgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBlY2hvICJSZXN1bHQ6ICRSRVNVTFQiID4+IG1haWwucmVzdWx0cworICAgICAgICAgaWYgWyAieCRGSUxFUyIgIT0gIngiIF07IHRoZW4KKyAgICAgICAgICAgIGNhdCAkRklMRVMgPj4gbWFpbC5yZXN1bHRzCisgICAgICAgICBmaQorICAgICAgICAgbWFpbCAtdCAkTlNCX1JFU1VMVFNfVE8gPCBtYWlsLnJlc3VsdHMKKyAgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICAgZWNobyAiUmVzdWx0OiAkUkVTVUxUIiA+PiBtYWlsLnJlc3VsdHMKKyAgICAgICAgIGlmIFsgIngkRklMRVMiICE9ICJ4IiBdOyB0aGVuCisgICAgICAgICAgICBjYXQgJEZJTEVTID4+IG1haWwucmVzdWx0cworICAgICAgICAgZmkKKyAgICAgICAgIG1haWwgLXMgIiRTVUJKRUNUIiAkTlNCX1JFU1VMVFNfVE8gPCBtYWlsLnJlc3VsdHMKKyAgICAgICAgIDs7CisgICBlc2FjCitmaQorCitpZiBbICRSQyAtZXEgMCBdOyB0aGVuCisgICAgICAgIGlmIFsgIngkTlNCX0JVSUxEX0RJUiIgPSAiLyIgXTsgdGhlbgorICAgICAgICAgICAgbnNiX2Fib3J0ICJOb3QgcnVubmluZyBybSAtZlIgZnJvbSAvIgorICAgICAgICBlbHNlCisgICAgICAgICAgICAvYmluL3JtIC1mUiAkTlNCX0JVSUxEX0RJUiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAgIGZpCitmaQorCitleGl0ICRSQwpkaWZmIC0tZ2l0IGEvZGlzdC9uc2ItcGFja2FnZSBiL2Rpc3QvbnNiLXBhY2thZ2UKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjUxYzE1MAotLS0gL2Rldi9udWxsCisrKyBiL2Rpc3QvbnNiLXBhY2thZ2UKQEAgLTAsMCArMSwxMzcgQEAKKyMhL2Jpbi9zaAorIworIyAkSWQkCisjIEF1dGhvcjogUm9iZXJ0IFN0b3J5IDxyc3RvcnlAZnJlZXNubXAuY29tPgorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwordXNhZ2UoKQoreworICAgZWNobyAiVXNhZ2U6ICQwICBbcGFyYW1zXSBWRVJTSU9OIgorICAgZWNobyAiIgorICAgZWNobyAiICBwYXJhbXM6IFstY10gWy1kXSBbLVBdIFstcyBOU0JfU1JDX0RJUl0gWy1iIEJVSUxERF0gWy1pIE5TQl9JTlNUQUxMX0RJUl0iCisgICBlY2hvICIgICAgICAgICAgWy1oIGhvc3RdIFstcCBwYXRoXSIKKyAgIGVjaG8gIiIKKyAgIGVjaG8gIiBWRVJTSU9OICAgIDogcmVsZWFzZSBudW1iZXIgKGVnIDUuMi4yKSIKKyAgIGVjaG8gIiAtcyBOU0JfU1JDX0RJUiAgOiBzb3VyY2UgZGlyZWN0b3J5IFskSE9NRS9zcmMvbmV0LXNubXAtVkVSU0lPTl0iCisgICBlY2hvICIgLWIgQlVJTEREICA6IGJ1aWxkIGRpcmVjdG9yeSBbJEhPTUUvYnVpbGQvXSIKKyAgIGVjaG8gIiAgICAgICAgICAgICAgTk9URS1wbGF0Zm9ybSB3aWxsIGJlIGFwcGVuZGVkIHRvIGJ1aWxkIGRpcmVjdG9yeSIKKyAgIGVjaG8gIiAtaSBOU0JfSU5TVEFMTF9ESVI6IGluc3RhbGwgZGlyZWN0b3J5IFskSE9NRS9idWlsZC9cJFBMQVRGT1JNL3Vzcl0iCisgICBlY2hvICIiCisgICBlY2hvICIgLXggOiBjb25maWd1cmUgZXh0cmEgZmVhdHVyZXMgZm9yIHByZS1yZWxlYXNlIHRlc3RpbmciCisgICBlY2hvICIgLWMgOiBza2lwIGNvbmZpZ3VyZSIKKyAgIGVjaG8gIiAtZCA6IGRpcnR5IGJ1aWxkIChkb24ndCBtYWtlIGRpc3RjbGVhbikiCisgICBlY2hvICIgLW0gOiBza2lwICdtYWtlIGFsbCciCisgICBlY2hvICIgLVAgOiBwYXVzZSBhdCBwcm9tcHRzIGluIGJldHdlZW4gc3RhZ2VzIgorICAgZWNobyAiIC1yIDogcmVtb3ZlIGJ1aWxkIGRpciAocm0gLWZSKSBiZWZvcmUgYnVpbGQiCisgICBlY2hvICIgLVIgOiByZW1vdmUgYnVpbGQgZGlyIChybSAtZlIpIGFmdGVyIHN1Y2Nlc3NmdWwgYnVpbGQiCisgICBlY2hvICIgLXQgOiBza2lwICdtYWtlIHRlc3QnIgorICAgZWNobyAiIC1DIDogZG9uJ3Qgc291cmNlICRIT01FLy5zbm1wL25zYi1wYWNrYWdlIgorICAgZWNobyAiIgorICAgZWNobyAiIC1oIDogaG9zdCB0byB1cGxvYWQgcmVzdWx0cyB0byIKKyAgIGVjaG8gIiAtcCA6IHBhdGggdG8gdXBsb2FkIHJlc3VsdHMgdG8iCisgICBleGl0IDEKK30KKworI3RyYXAgZXhpdCBTSUdJTlQKKworI3NldCAteAorCisjIG1ha2UgZ2V0b3B0cyB3b3JrIG9uIFRydTY0IGJ5IHJlc3Bhd25pbmcgaW4gUG9zaXggbW9kZQoraWYgWyAiYHVuYW1lYCIgPSAiT1NGMSIgLWEgIiRCSU5fU0giICE9ICJ4cGc0IiBdOyB0aGVuCisgICAgQklOX1NIPXhwZzQKKyAgICBleHBvcnQgQklOX1NICisgICAgZXhlYyAkMCAkKgorZmkKKworIworIyBmaW5kIG5zYi1wbGF0Zm9ybSBiYXNlZCBvbiB0aGUgcGF0aCB0byB0aGlzIHNjcmlwdAorIworRVhFX1BBVEg9YGRpcm5hbWUgJDBgCitpZiBbICEgLWYgJEVYRV9QQVRIL25zYi1mdW5jdGlvbnMgXTt0aGVuCisgICBpZiBbIC1mICRIT01FL2Jpbi9uc2ItZnVuY3Rpb25zIF07IHRoZW4KKyAgICAgIEVYRV9QQVRIPSRIT01FL2JpbgorICAgZWxpZiBbIC1mIG5zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAgICBFWEVfUEFUSD0kUFdECisgICBlbHNlCisgICAgICBlY2hvICJDYW5ub3QgZmluZCBuc2ItZnVuY3Rpb25zIGluICRFWEVfUEFUSCwgJEhPTUUvYmluIG9yICRQV0QiCisgICAgICBleGl0IDEKKyAgIGZpCitmaQorCitpZiBbICJ4JDEiID0gIngtQyIgXTsgdGhlbgorICAgIHNoaWZ0CitlbHNlCisgICAgaWYgWyAtZiAkSE9NRS8uc25tcC9uc2ItcGFja2FnZSBdO3RoZW4KKyAgICAgICAgLiAkSE9NRS8uc25tcC9uc2ItcGFja2FnZQorICAgIGZpCitmaQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCitSRU1PVkVfU1VDQ0VTUz0wCisKKyMgICAgICB4KSAgeD0kT1BUQVJHIDs7Cit3aGlsZSBnZXRvcHRzIGI6Y2RoOmk6bVBwOnJSczp0eCBvcHQKK2RvCisgICAgY2FzZSAiJG9wdCIgaW4KKyAgICAgIGIpICBOU0JfQlVJTERfRElSPSRPUFRBUkcgOzsKKyAgICAgIGMpICBOU0JfU0tJUF9DT05GSUc9MSA7OworICAgICAgZCkgIE5TQl9DTEVBTj0wIDs7CisgICAgICBoKSAgTlNCX1NDUF9IT1NUPSRPUFRBUkcgOzsKKyAgICAgIGkpICBOU0JfSU5TVEFMTF9ESVI9JE9QVEFSRyA7OworICAgICAgbSkgIE5TQl9TS0lQX0JVSUxEPTEgOzsKKyAgICAgIFApICBOU0JfUFJPTVBUPTEgOzsKKyAgICAgIHApICBOU0JfU0NQX0RFU1Q9JE9QVEFSRyA7OworICAgICAgcikgIE5TQl9DTEVBTj0yIDs7CisgICAgICBSKSAgUkVNT1ZFX1NVQ0NFU1M9MSA7OworICAgICAgcykgIE5TQl9TUkNfRElSPSRPUFRBUkcgOzsKKyAgICAgIHQpICBOU0JfU0tJUF9URVNUPTEgOzsKKyAgICAgIHgpICBOU0JfQ09ORklHX0FMTD0xOzsKKyAgICAgIFw/KSMgdW5rbm93biBmbGFnCisgICAgICAgIHVzYWdlOzsKKyAgICBlc2FjCitkb25lCitzaGlmdCBgZXhwciAkT1BUSU5EIC0gMWAKKworaWYgWyAkIyAtbmUgMSBdOyB0aGVuCisgICBlY2hvICJleHBlY3RpbmcgMSBhcmd1bWVudCwgZ290ICQjICgkQCkiCisgICB1c2FnZQorZmkKKworTlNCX1ZFUlNJT049JDEKKworLiAkRVhFX1BBVEgvbnNiLWZ1bmN0aW9ucworCituc2JfZGVmYXVsdF9wYXRocworCitpZiBbICROU0JfQ0xFQU4gLWVxIDEgXTsgdGhlbgorICAgaWYgWyAkTlNCX1NLSVBfQ09ORklHIC1lcSAxIF07IHRoZW4KKyAgICAgIGVjaG8gIkEgY2xlYW4gYnVpbGQgYWxzbyByZXF1aXJlcyBjb25maWd1cmF0aW9uICgtZCBhbmQgLWMiCisgICAgICBlY2hvICJjYW5ub3QgYm90aCBiZSBzcGVjaWZpZWQpLiIKKyAgICAgIHVzYWdlCisgICBmaQorZmkKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworbnNiX3Byb21wdCAicHJlc3MgZW50ZXIgdG8gYnVpbGQgJE5TQl9TUkNfRElSIGluICROU0JfQlVJTERfRElSLCBhbmQgaW5zdGFsbCBpbiAkTlNCX0lOU1RBTExfRElSIgorbnNiX2J1aWxkICROU0JfVkVSU0lPTiAkTlNCX1NSQ19ESVIgJE5TQl9CVUlMRF9ESVIgJE5TQl9JTlNUQUxMX0RJUiAkTlNCX0NPTkZJR19BTEwKK3JjPSQ/CitpZiBbICJ4JE5TQl9TQ1BfSE9TVCIgIT0gIngiIF07IHRoZW4KKyAgIG5zYl91cGxvYWQgJE5TQl9CVUlMRF9ESVIgJE5TQl9TQ1BfSE9TVDokTlNCX1NDUF9ERVNULyROU0JfVkVSU0lPTi8kTlNCX0hPU1QvCitmaQoraWYgWyAkcmMgLWVxIDAgXSAmJiBbICRSRU1PVkVfU1VDQ0VTUyAtZXEgMSBdO3RoZW4KKyAgICBuc2JfcHJvbXB0ICJwcmVzcyBlbnRlciB0byByZW1vdmUgJE5TQl9CVUlMRF9ESVIiCisgICAgaWYgWyAieCROU0JfQlVJTERfRElSIiA9ICIvIiBdOyB0aGVuCisgICAgICAgbnNiX2Fib3J0ICJOb3QgcnVubmluZyBybSAtZlIgZnJvbSAvIgorICAgIGVsc2UKKyAgICAgICAvYmluL3JtIC1mUiAkTlNCX0JVSUxEX0RJUiA+IC9kZXYvbnVsbCAyPiYxCisgICAgZmkKK2ZpCisKK25zYl9wcm9tcHQgInByZXNzIGVudGVyIHRvIGV4aXQgd2l0aCByYyAkUkMiCitleGl0ICRyYwpkaWZmIC0tZ2l0IGEvZGlzdC9uc2ItcGxhdGZvcm0gYi9kaXN0L25zYi1wbGF0Zm9ybQpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hNzU1MGEzCi0tLSAvZGV2L251bGwKKysrIGIvZGlzdC9uc2ItcGxhdGZvcm0KQEAgLTAsMCArMSwyNyBAQAorIyEvYmluL3NoCisjCisjICRJZCQKKyMgQXV0aG9yOiBSb2JlcnQgU3RvcnkgPHJzdG9yeUBmcmVlc25tcC5jb20+CisjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworCisjCisjIGZpbmQgbnNiLXBsYXRmb3JtIGJhc2VkIG9uIHRoZSBwYXRoIHRvIHRoaXMgc2NyaXB0CisjCitFWEVfUEFUSD1gZGlybmFtZSAkMGAKK2lmIFsgLWYgJEVYRV9QQVRIL25zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAuICRFWEVfUEFUSC9uc2ItZnVuY3Rpb25zCitlbGlmIFsgLWYgJEhPTUUvYmluL25zYi1mdW5jdGlvbnMgXTsgdGhlbgorICAgLiAkSE9NRS9iaW4vbnNiLWZ1bmN0aW9ucworZWxpZiBbIC1mIG5zYi1mdW5jdGlvbnMgXTt0aGVuCisgICAuIG5zYi1mdW5jdGlvbnMKK2Vsc2UKKyAgIGVjaG8gIkNhbm5vdCBmaW5kIG5zYi1mdW5jdGlvbnMgaW4gJEVYRV9QQVRILCAkSE9NRS9iaW4gb3IgJFBXRCIKKyAgIGV4aXQgMQorZmkKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbnNiX3N5c25hbWUKZGlmZiAtLWdpdCBhL2Rpc3QvcGF0bWUgYi9kaXN0L3BhdG1lCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjZiNzEwODIKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L3BhdG1lCkBAIC0wLDAgKzEsMzQ3IEBACisjIS91c3IvYmluL3BlcmwKKwordXNlIEdldG9wdDo6R1VJOjpMb25nOwordXNlIFFXaXphcmQ7Cit1c2UgUVdpemFyZDo6QVBJOwordXNlIERhdGE6OkR1bXBlcjsKK3VzZSBDd2Q7CisKK3VzZSBHZXRvcHQ6OlN0ZDsKK0dldG9wdDo6R1VJOjpMb25nOjpDb25maWd1cmUocXcoZGlzcGxheV9oZWxwIG5vX2lnbm9yZV9jYXNlKSk7CisKK3VzZSBzdHJpY3Q7CisKK291ciAlb3B0cyA9CisoCisgJ2QnID0+ICRFTlZ7J0hPTUUnfSAuICIvc3JjL3NubXAvcGF0bWUvIiwKKyAnYicgPT4gJ21haW4sNS40LDUuMyw1LjInLAorICdwJyA9PiAnLXAwJywKKyk7CisKKyMgc2V0cyB0aGUgb3JkZXIgc2hvd24KK291ciBAY29kZXRyZWVzID0gKCdtYWluJywKKwkJICAnNS40JywKKwkJICAnNS4zJywKKwkJICAnNS4yJywKKwkJICAnNS4xJywKKwkJICAnNS4wJywKKwkJICAnVUNEJyk7CisKK291ciAlY29kZXRyZWVzID0gKCc1LjAnID0+ICdWNS0wLXBhdGNoZXMnLAorCQkgICc1LjEnID0+ICdWNS0xLXBhdGNoZXMnLAorCQkgICc1LjInID0+ICdWNS0yLXBhdGNoZXMnLAorCQkgICc1LjMnID0+ICdWNS0zLXBhdGNoZXMnLAorCQkgICc1LjQnID0+ICdWNS00LXBhdGNoZXMnLAorCQkgICdtYWluJyA9PiAnbmV0LXNubXAnLAorCQkgICdVQ0QnID0+ICdWNC0yLXBhdGNoZXMnKTsKKworb3VyIChAY2FwdHVyZXMsICRjYXBmaWx0LCAkcmVzdWx0LCAlY2FwdHVyZXMsICRjYXB0dXJlbnVtKTsKKworR2V0T3B0aW9ucyhcJW9wdHMsCisJICAgWydmfGZpbGU9cycsICAgICAgICAgICAnUGF0Y2ggZmlsZSddLAorCSAgIFsnZHxiYXNlLWRpcmVjdG9yeT1zJywgJ0Jhc2UgZGlyZWN0b3J5IG9mIGNoZWNrb3V0cyddLAorCSAgIFsncHxwYXRjaC1hcmdzPXMnLCAgICAgJ0RlZmF1bHQgcGF0Y2ggYXJndW1lbnRzICgtcDEpJ10sCisKKwkgICBbJ0dVSTpzZXBhcmF0b3InLCAgICdQYXRjaCBhcHBsaWNhdGlvbiBzcGVjaWZpY3M7J10sCisJICAgWydifGJyYWNoZXM9cycsICAgICAnQnJhbmNoZXMgdG8gYXBwbHkgdG8gKGVnIDUuMSw1LjIsLi4uKSddLAorCSAgIFsnbXxjb21taXQtbXNnPXMnLCAgJ0RlZmF1bHQgY29tbWl0IG1lc3NhZ2UgdG8gdXNlJ10sCisJICAgWydEfHN1YmRpcj1zJywgICAgICAnQXBwbHkgcGF0Y2hlcyB0byBhIHN1YmRpcmVjdG9yeSddLAorCSAgIFsndXxuby11cGRhdGUnLCAgICAgJ0RvIG5vdCBydW4gc3ZuIHN0YXR1cy91cGRhdGUgaW4gdGhlIGRpcmVjdG9yeSBmaXJzdC4gIE9ubHkgdXNlIHRoaXMgaWYgaXRcJ3Mga25vd24gY2xlYW4uJ10sCisJICApOworCitteSAlYnM7CitpZiAoJG9wdHN7J2InfSkgeworICAgIG1hcCB7ICRic3skX30gPSAxOyB9IHNwbGl0KC8sXHMqLywkb3B0c3snYid9KTsgCit9Ciskb3B0c3snZCd9IC49ICIvIiBpZiAoJG9wdHN7J2QnfSAhfiAvXC8kLyk7CisKK215ICRxdyA9IG5ldyBRV2l6YXJkKCk7CitteSAkcHJpcyA9IGxvYWRfcHJpbWFyaWVzKCk7CiskcXctPnsncHJpbWFyaWVzJ30gPSAkcHJpczsKKworJHF3LT5xd3BhcmFtKCdzdm5jb21taXQnLCRvcHRzeydtJ30pIGlmICgkb3B0c3snbSd9KTsKKworJHF3LT5tYWdpYygndG9wJyk7CisKK3N1YiBtYWtlX3RvcHMgeworICAgIG15IEB0b3BzOworICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwlwdXNoIEB0b3BzLCAKKwkgIHF3X2NoZWNrYm94KCRrLCAiQXBwbHkgdG8gJGsiLCAxLCAwLCAKKwkJICAgICAgZGVmYXVsdCA9PiAkcXctPnF3cGFyYW0oJGspIHx8ICRic3ska30sCisJCSAgICAgIG92ZXJyaWRlID0+IDEpOworICAgIH0KKyAgICByZXR1cm4gQHRvcHM7Cit9CisKK3N1YiBsb2FkX3ByaW1hcmllcyB7CisgICAgbXkgQHRvcHMgPSBtYWtlX3RvcHMoKTsKKyAgICByZXR1cm4KKyAgICAgIHsKKyAgICAgICB0b3AgPT4KKyAgICAgICBxd19wcmltYXJ5KCd0b3AnLCdTZWxlY3QgcGFja2FnZXMgdG8gYXBwbHkgdGhlIHBhdGNoIHRvOicsICcnLCAKKwkJICBbQHRvcHMsCisJCSAgcXdfdGV4dCgnYmFzZWRpcicsICdCYXNlIGNvZGUgZGlyZWN0b3J5OicsIAorCQkJICBkZWZhdWx0ID0+ICRvcHRzeydkJ30pLAorCQkgIHF3X2hpZGRlbignbm9fY29uZmlybScsMSksCisJCSAgcXdfdGV4dCgncGF0Y2hmaWxlJywnUGF0Y2ggZmlsZTonLCBkZWZhdWx0ID0+ICRvcHRze2Z9LAorCQkJIGNoZWNrX3ZhbHVlID0+IHN1YiB7IAorCQkJICAgICByZXR1cm4gInBhdGNoIGZpbGUgZG9lc24ndCBleGlzdCIgaWYgKCEgLWYgcXdwYXJhbSgncGF0Y2hmaWxlJykpCisJCQkgfSksCisJCSAgcXdfY2hlY2tib3goJ25vdXBkYXRlJywnRG9uXCd0IHJ1biBzdm4gdXBkYXRlL3JldmVydCBmaXJzdDonLCAKKwkJCSAgICAgIDEsIDAsIGRlZmF1bHQgPT4gJG9wdHN7J3UnfSB8fCAwKV0sCisJCSAgW10sW10sc3ViX21vZHVsZXMgPT4gWydjb21taXQnLCAnY29tbWl0bXNnJywgJ21ha2V0ZXN0JywKKwkJCQkJJ2VkaXQnLCAnYXBwbHlpbmcnLCAnY2hlY2snLAorCQkJCQkncGF0Y2hfaW5mbyddKSwKKworICAgICAgIHBhdGNoX2luZm8gPT4KKyAgICAgICBxd19wcmltYXJ5KCdjaGVjaycsJ0NoZWNraW5nIGNvZGUgZGlyZWN0b3J5IHN0YXR1czonLCAnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdwYXRjaCBwaWVjZXM6JywKKwkJCQlzdWIgeyBjYXB0dXJlKCJlZ3JlcCAnXigtLS18XFwrXFwrXFwrKScgIiAuIAorCQkJCQkgICAgICBxd3BhcmFtKCdwYXRjaGZpbGUnKSl9LAorCQkJCXdpZHRoID0+IDgwLAorCQkJCWhlaWdodCA9PiAzMCksCisJCSAgIHF3X3RleHQoJ3BhdGNoYXJncycsJ1BhdGNoIGFyZ3VtZW50cycsCisJCQkgICBkZWZhdWx0ID0+ICRvcHRzeydwJ30pLAorCQkgICBxd190ZXh0KCdzdWJkaXInLCAnQXBwbHkgaW4gcGFja2FnZSBzdWJkaXI6JywKKwkJCSAgIGRlZmF1bHQgPT4gJG9wdHN7J0QnfSksCisJCSAgIHF3X3BhcmFncmFwaCgnTm90ZTonLCdIaXR0aW5nIG5leHQgYmVsb3cgd2lsbCBmaXJzdCBjbGVhbiB5b3VyIGxvY2FsIHJlcG9zaXRvcmllcyB3aGljaCBjb3VsZCB0YWtlIGEgYml0ICh3YXRjaCB0aGUgY29uc29sZSBmb3IgZGVhaWxzIG9uIHdoYXQgaXRcJ3MgZG9pbmcgYXQgYW55IG1vbWVudCknLCBkb2lmID0+IHN1YiB7IXF3cGFyYW0oJ25vdXBkYXRlJyl9KSwKK10pLAorCisKKyAgICAgICBjaGVjayA9PgorICAgICAgIHF3X3ByaW1hcnkoJ2NoZWNrJywnQ2hlY2tpbmcgY29kZSBkaXJlY3Rvcnkgc3RhdHVzOicsICcnLAorCQkgIFtxd19wYXJhZ3JhcGgoJ3JlbW92ZWQgLnJlaiBmaWxlczonLAorCQkJICAgICAgIHN1YiB7IG15ICRpdCA9IGNhcHR1cmVlYWNoZGlyKCdmaW5kIC4gLW5hbWUgXCoucmVqJyk7CisJCQkJICAgICBjYXB0dXJlZWFjaGRpcignZmluZCAuIC1uYW1lIFwqLnJlaiB8IHhhcmdzIHJtIC1mJyk7CisJCQkJICAgICByZXR1cm4gJGl0OworCQkJCSB9LAorCQkJCXByZWZvcm1hdHRlZCA9PiAxLAorCQkJCXdpZHRoID0+IDgwLAorCQkJCWhlaWdodCA9PiA2MCwKKwkJCSAgICAgICApLAorCQkgICBxd19wYXJhZ3JhcGgoJ3N2biB1cGRhdGU6JywKKwkJCQlzdWIgeworCQkJCSAgICBteSAoJHJlcywgJG9uZSk7CisJCQkJICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwkJCQkJbmV4dCBpZiAoIXF3cGFyYW0oJGspKTsKKwkJCQkJJHJlcyAuPSAiJGs6XG4iOworCQkJCQkkb25lID0gY2FwdHVyZWRpcigkY29kZXRyZWVzeyRrfSwgCisJCQkJCQkJICAic3ZuIHVwZGF0ZSIpOworCQkJCQkkcmVzIC49ICRvbmU7CisJCQkJCSRvbmUgPSBjYXB0dXJlZGlyKCRjb2RldHJlZXN7JGt9LCAKKwkJCQkJCQkgICJzdm4gcmV2ZXJ0IC1SIC4iKTsKKwkJCQkJJHJlcyAuPSAkb25lOworCQkJCSAgICB9CisJCQkJICAgIHJldHVybiAkcmVzOworCQkJCSAgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gNjAsCisJCQkJZG9pZiA9PiBzdWJ7IXF3cGFyYW0oJ25vdXBkYXRlJyl9CisJCQkgICAgICAgKQkJICBdLAorCQkgKSwKKworICAgICAgIGFwcGx5aW5nID0+CisgICAgICAgcXdfcHJpbWFyeSgiYXBwbHlpbmciLCAnQXBwbHlpbmcgcGF0Y2hlcyB0byB0aGUgY29kZSBiYXNlcycsICcnLAorCQkgIFt7dHlwZSA9PiAndGFibGUnLAorCQkgICAgdGV4dCA9PiAnUmVzdWx0czonLAorCQkgICAgdmFsdWVzID0+IHN1YiB7CisJCQlteSBAdGFiOworCQkJZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCQkJICAgIG5leHQgaWYgKCFxd3BhcmFtKCRrKSk7CisJCQkgICAgcHVzaCBAdGFiLCBbJGssCisJCQkJCXF3X3BhcmFncmFwaCgiciRrIiwiIiwgCisJCQkJCQkgICAgIHByZWZvcm1hdHRlZCA9PiAxLAorCQkJCQkJICAgICB3aWR0aCA9PiA4MCwKKwkJCQkJCSAgICAgaGVpZ2h0ID0+IDIwLAorCQkJCQkJICAgICB2YWx1ZXMgPT4gCisJCQkJCQkgICAgIHN1YiB7IG15ICRjbWQgPSAicGF0Y2ggIiAuIHF3cGFyYW0oJ3BhdGNoYXJncycpIC4gIiA8ICIgLiBxd3BhcmFtKCdwYXRjaGZpbGUnKTsKKwkJCQkJCQkgICBteSAkcmVzdWx0cyA9ICJSdW5uaW5nIG9uICRrOiAkY21kIiAuICJcbiIgLiBjYXB0dXJlZGlyKCRjb2RldHJlZXN7JGt9LCRjbWQpOworCQkJCQkJCSAgIHJldHVybiAkcmVzdWx0c30pXTsKKwkJCX0KKwkJCXJldHVybiBbXEB0YWJdOworCQkgICAgfX1dLFtdLFtdKSwKKworICAgICAgIGVkaXQgPT4KKyAgICAgICBxd19wcmltYXJ5KCdlZGl0JywnRml4IHRoZSBmb2xsb3dpbmcgZmlsZXM6JywnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdGaXggdGhlc2UgKG1heWJlKTonLAorCQkJICAgICAgIHN1YiB7CisJCQkJICAgJGNhcGZpbHQgPSAnKC4qLnJlaiknOworCQkJCSAgIG15ICRyZXMgPSAKKwkJCQkgICAgIGNhcHR1cmVlYWNoZGlyKCdmaW5kIC4gLW5hbWUgXCoucmVqJyk7CisJCQkJICAgcHJpbnQgRHVtcGVyKFwlY2FwdHVyZXMpOworCQkJCSAgICRjYXBmaWx0ID0gdW5kZWY7CisJCQkJICAgcmV0dXJuICRyZXM7CisJCQkJIH0sCisJCQkJcHJlZm9ybWF0dGVkID0+IDEsCisJCQkJd2lkdGggPT4gODAsCisJCQkJaGVpZ2h0ID0+IDYwLAorCQkJICAgICAgICksCisJCSAgIHF3X2xhYmVsKCdmYWlsZWQgZmlsZXM6JywKKwkJCSAgICBzdWIgeyAkY2FwdHVyZW51bSA9IDA7CisJCQkJICBtYXAgeyAkY2FwdHVyZW51bSArPSAkI3skY2FwdHVyZXN7JF99fSArIDE7CisJCQkJICAgIH0gKGtleXMoJWNhcHR1cmVzKSk7CisJCQkJICByZXR1cm4gJGNhcHR1cmVudW07CisJCQkgICAgICB9KSwKKwkJICBxd19jaGVja2JveCgnZWRpdGhlbScsJ09wZW4gYW4gZWRpdG9yIG9uIHRoZSBmYWlsZWQgZmlsZXM/JywKKwkJCSAgICAgIDEsIDAsIGRvaWYgPT4gc3ViIHsgcmV0dXJuICRjYXB0dXJlbnVtID4gMCB9KSwKKwkJICBxd190ZXh0KCdlZGl0b3InLCdFZGl0b3I6JyxkZWZhdWx0ID0+ICRFTlZ7J0VESVRPUid9IHx8ICd2aScsCisJCQkgIGRvaWYgPT4gc3ViIHsgcmV0dXJuICRjYXB0dXJlbnVtID4gMCB9KV0sCisJCSAgW3N1YiB7CisJCSAgICAgICBpZiAocXdwYXJhbSgnZWRpdGhlbScpKSB7CisJCQkgICBmb3JlYWNoIG15ICRrIChrZXlzKCVjYXB0dXJlcykpIHsKKwkJCSAgICAgICBmb3JlYWNoIG15ICRmIChAeyRjYXB0dXJlc3ska319KSB7CisJCQkJICAgbXkgJGZpbGUgPSBxd3BhcmFtKCdiYXNlZGlyJykgLgorCQkJCSAgICAgJGNvZGV0cmVlc3ska30gLgorCQkJCSAgICAgICBxd3BhcmFtKCdzdWJkaXInKSAuICcvJyAuICRmLT5bMF07CisJCQkJICAgcHJpbnQgU1RERVJSICJlZGl0aW5nOiAkZmlsZVxuIjsKKwkJCQkgICBzeXN0ZW0ocXdwYXJhbSgnZWRpdG9yJykgLiAiICIgLiAkZmlsZSk7CisJCQkgICAgICAgfQorCQkJICAgfQorCQkgICAgICAgfQorCQkgICB9XQorCQkgKSwKKworICAgICAgIG1ha2V0ZXN0ID0+CisgICAgICAgcXdfcHJpbWFyeSgibWFrZXRlc3QiLCAiUnVuIG1ha2U/IiwnJywKKwkJIFtxd19jaGVja2JveCgnbWFrZWl0JywnUnVuIG1ha2U/JywgMSwgMCksCisJCSAgcXdfY2hlY2tib3goJ21ha2V0ZXN0JywgJ1J1biBtYWtlIHRlc3Q/JywgMSwgMCkKKwkJIF0sCisgCQkgW3N1YiB7CisgCQkgICAgICBpZiAocXdwYXJhbSgnbWFrZWl0JykgfHwgcXdwYXJhbSgnbWFrZXRlc3QnKSkgeworIAkJCSAgJF9bMF0tPmFkZF90b2RvcygtZWFybHksICdkb21ha2UnKTsKKyAJCSAgICAgIH0KKyAJCSAgfV0KKwkJICksCisKKyAgICAgICBkb21ha2UgPT4KKyAgICAgICBxd19wcmltYXJ5KCJkb21ha2UiLCAiTWFrZSByZXN1bHRzIiwnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdNYWtlIHJlc3VsdHM6JywKKwkJCQlzdWIgeyByZXR1cm4gY2FwdHVyZWVhY2hkaXIoJ21ha2UnKTsgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gMjAsCisJCQkJZG9pZiA9PiBzdWIgeyBxd3BhcmFtKCdtYWtlaXQnKSB9CisJCQkgICAgICAgKSwKKwkJICAgcXdfcGFyYWdyYXBoKCdNYWtlIHRlc3QgcmVzdWx0czonLAorCQkJCXN1YiB7IHJldHVybiBjYXB0dXJlZWFjaGRpcignbWFrZSB0ZXN0Jyk7IH0sCisJCQkJcHJlZm9ybWF0dGVkID0+IDEsCisJCQkJd2lkdGggPT4gODAsCisJCQkJaGVpZ2h0ID0+IDIwLAorCQkJCWRvaWYgPT4gc3ViIHsgcXdwYXJhbSgnbWFrZXRlc3QnKSB9CisJCQkgICAgICAgKV0KKwkJICApLAorCisgICAgICAgY29tbWl0bXNnID0+CisgICAgICAgcXdfcHJpbWFyeSgiY29tbWl0bXNnIiwgJ0NvbW1pdCBpbmZvOicsICcnLAorCQkgIFtxd190ZXh0KCdzdm5jb21taXQnLCdDb21taXQgbWVzc2FnZScsCisJCQkgICBkZWZhdWx0ID0+IHF3cGFyYW0oJ3N2bmNvbW1pdCcpIHx8ICRvcHRzeydtJ30pLAorCQkgIHt0eXBlID0+ICdkeW5hbWljJywKKwkJICAgdmFsdWVzID0+IHN1YiB7IG15IEB0b3BzID0gbWFrZV90b3BzKDEpOyByZXR1cm4gXEB0b3BzfX1dKSwKKworICAgICAgIGNvbW1pdCA9PgorICAgICAgIHF3X3ByaW1hcnkoImNvbW1pdCIsICdydW5uaW5nIGNvbW1pdDonLCAnJywKKwkJICBbcXdfcGFyYWdyYXBoKCdjb21taXR0aW5nIGZpbGVzOicsCisJCQkgICAgICAgc3ViIHsgbXkgJG1zZyA9IHF3cGFyYW0oJ3N2bmNvbW1pdCcpOworCQkJCSAgICAgJG1zZyA9fiBzL1wnL1wnXCJcJ1wiXCcvZzsgIyBlc2NhcGUgJ3MKKwkJCQkgICAgIHJldHVybiBjYXB0dXJlZGlyKCRvcHRzeydkJ30sCisJCQkJCQkgICAgICAgJ3N2biBjb21taXQgLW0gXCcnIC4gJG1zZyAuICdcJyAnIC4gZ2V0X2NvZGVkaXJzX3N0cigpKTsgfSwKKwkJCQlwcmVmb3JtYXR0ZWQgPT4gMSwKKwkJCQl3aWR0aCA9PiA4MCwKKwkJCQloZWlnaHQgPT4gMjAsCisJCQkgICAgICAgKV0pLAorCisgICAgICAgZWRpdGluZyA9PgorICAgICAgIHF3X3ByaW1hcnkoImFwcGx5aW5nIiwgJ0VkaXQgdGhlIGZvbGxvd2luZyBmaWxlczonLCAnJywKKwkJICBbe3R5cGUgPT4gJ3RhYmxlJywKKwkJICAgIHRleHQgPT4gJ1Jlc3VsdHM6JywKKwkJICAgIHZhbHVlcyA9PiBzdWIgeyByZXR1cm4gW1xAY2FwdHVyZXNdfSwKKwkJICAgfV0sW10sW10pCisgICAgICB9Cit9CisKK3N1YiBjYXB0dXJlIHsKKyAgICBteSAkY21kID0gam9pbigiICIsQF8pOworICAgIG15ICRyZXN1bHRzID0gIlJ1bm5pbmc6ICRjbWRcbiI7CisgICAgbXkgQGE7CisgICAgcHJpbnQgJHJlc3VsdHM7CisgICAgb3BlbihJLCIkY21kIDI+JjF8Iik7CisgICAgd2hpbGUgKDxJPikgeworCSRyZXN1bHRzIC49ICRfOworCXByaW50ICRfOworCWlmICgkY2FwZmlsdCkgeworCSAgICBwcmludCAiY2FwZmlsdDogJGNhcGZpbHRcbiI7CisJICAgIEBhID0gLyRjYXBmaWx0LzsKKwkgICAgcHJpbnQgIiAgY2FwZmlsdDogQGFcbiI7CisJICAgIHB1c2ggQGNhcHR1cmVzLCBbQGFdOworCX0KKyAgICB9CisgICAgY2xvc2UoSSk7CisgICAgJHJlc3VsdCA9ICQ/ID4+IDg7CisgICAgJHJlc3VsdHMgLj0gIlJFU1VMVDogIiAuICgoJHJlc3VsdCkgPyAiRkFJTCIgOiAiU1VDQ0VTUyIpIC4gIigkcmVzdWx0KVxuIjsKKyAgICByZXR1cm4gJHJlc3VsdHM7Cit9CisKK3N1YiBjYXB0dXJlZGlyIHsKKyAgICBteSAkZGlyID0gc2hpZnQ7CisgICAgJGRpciAuPSAiLyIgaWYgKCRkaXIgIX4gL1wvJC8pOworICAgIG15ICRiYXNlZGlyID0gcXdwYXJhbSgnYmFzZWRpcicpOworICAgICRiYXNlZGlyIC49ICIvIiBpZiAoJGJhc2VkaXIgIX4gL1wvJC8pOworICAgIG15ICRvbGRkaXIgPSBnZXRjd2QoKTsKKyAgICBteSAkbmV3ZGlyID0gIiRiYXNlZGlyJGRpciIgLiBxd3BhcmFtKCdzdWJkaXInKTsKKyAgICBteSAkcmVzID0gImNoYW5naW5nIHRvOiAkbmV3ZGlyXG4iOworICAgIHByaW50ICRyZXM7CisgICAgY2hkaXIoJG5ld2Rpcik7CisgICAgJHJlcyAuPSBjYXB0dXJlKEBfKTsKKyAgICBjaGRpcigkb2xkZGlyKTsKKyAgICByZXR1cm4gJHJlczsKK30KKworc3ViIGdldF9jb2RlZGlyc19zdHIoKSB7CisgICAgbXkgJHJlcyA9ICIiOworICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwluZXh0IGlmICghcXdwYXJhbSgkaykpOworCSRyZXMgLj0gIiAkb3B0c3snZCd9JGNvZGV0cmVlc3ska30iOworICAgIH0KKyAgICAkcmVzID1+IHMvXiAvLzsKKyAgICByZXR1cm4gJHJlczsKK30KKworc3ViIGNhcHR1cmVlYWNoZGlyIHsKKyAgICBteSAkb3V0OworICAgICVjYXB0dXJlcyA9ICgpOworICAgIGZvcmVhY2ggbXkgJGsgKEBjb2RldHJlZXMpIHsKKwluZXh0IGlmICghcXdwYXJhbSgkaykpOworCSRvdXQgLj0gIiRrOlxuIjsKKwkkb3V0IC49IGNhcHR1cmVkaXIoJGNvZGV0cmVlc3ska30sIEBfKSAuICJcbiI7CisJaWYgKCQjY2FwdHVyZXMgPiAtMSkgeworCSAgICBAeyRjYXB0dXJlc3ska319ID0gQGNhcHR1cmVzOworCSAgICBAY2FwdHVyZXMgPSAoKTsKKwl9CisgICAgfQorICAgIHJldHVybiAkb3V0OworfQorCitzdWIgZG9kaXIgeworICAgIG15ICR0ZXh0ID0gc2hpZnQ7CisgICAgcmV0dXJuCisgICAgICBbe3R5cGUgPT4gJ3RhYmxlJywKKwl0ZXh0ID0+ICR0ZXh0LAorCXZhbHVlcyA9PiBbW3N1YiB7CisJCQlteSBAdGFiOworCQkJZm9yZWFjaCBteSAkayAoQGNvZGV0cmVlcykgeworCQkJICAgIG5leHQgaWYgKCFxd3BhcmFtKCRrKSk7CisJCQkgICAgcHVzaCBAdGFiLCBbJGssCisJCQkJCXF3X3BhcmFncmFwaCgiciRrIiwiIiwgCisJCQkJCQkgICAgIHByZWZvcm1hdHRlZCA9PiAxLAorCQkJCQkJICAgICB3aWR0aCA9PiA4MCwKKwkJCQkJCSAgICAgaGVpZ2h0ID0+IDIwLAorCQkJCQkJICAgICB2YWx1ZXMgPT4gCisJCQkJCQkgICAgIFtbc3ViIHsgJF8tPlswXSgkayl9LCAKKwkJCQkJCSAgICAgICBAX11dKV07CisJCQl9CisJCQlyZXR1cm4gW1xAdGFiXTsKKwkJICAgIH0sIEBfXV0KKyAgICAgICB9XTsKK30KZGlmZiAtLWdpdCBhL2Rpc3Qvc2NoZW1hLXNubXB0cmFwZC5zcWwgYi9kaXN0L3NjaGVtYS1zbm1wdHJhcGQuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0OTZmMTcKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L3NjaGVtYS1zbm1wdHJhcGQuc3FsCkBAIC0wLDAgKzEsMzEgQEAKK1VTRSBuZXRfc25tcDsKK0RST1AgVEFCTEUgSUYgRVhJU1RTIG5vdGlmaWNhdGlvbnM7CitDUkVBVEUgVEFCTEUgSUYgTk9UIEVYSVNUUyBgbm90aWZpY2F0aW9uc2AgKAorICBgdHJhcF9pZGAgaW50KDExKSB1bnNpZ25lZCBOT1QgTlVMTCBBVVRPX0lOQ1JFTUVOVCwKKyAgYGRhdGVfdGltZWAgZGF0ZXRpbWUgTk9UIE5VTEwsCisgIGBob3N0YCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwsCisgIGBhdXRoYCB2YXJjaGFyKDI1NSkgTk9UIE5VTEwsCisgIGB0eXBlYCBFTlVNKCdnZXQnLCdnZXRuZXh0JywncmVzcG9uc2UnLCdzZXQnLCd0cmFwJywnZ2V0YnVsaycsJ2luZm9ybScsJ3RyYXAyJywncmVwb3J0JykgTk9UIE5VTEwsCisgIGB2ZXJzaW9uYCBFTlVNKCd2MScsJ3YyYycsICd1bnN1cHBvcnRlZCh2MnUpJywndjMnKSBOT1QgTlVMTCwKKyAgYHJlcXVlc3RfaWRgIGludCgxMSkgdW5zaWduZWQgTk9UIE5VTEwsCisgIGBzbm1wVHJhcE9JRGAgdmFyY2hhcigxMDI0KSBOT1QgTlVMTCwKKyAgYHRyYW5zcG9ydGAgdmFyY2hhcigyNTUpIE5PVCBOVUxMLAorICBgc2VjdXJpdHlfbW9kZWxgIEVOVU0oJ3NubXBWMScsJ3NubXBWMmMnLCdVU00nKSBOT1QgTlVMTCwKKyAgYHYzbXNnaWRgIGludCgxMSkgdW5zaWduZWQsCisgIGB2M3NlY3VyaXR5X2xldmVsYCBFTlVNKCdub0F1dGhOb1ByaXYnLCdhdXRoTm9Qcml2JywnYXV0aFByaXYnKSwKKyAgYHYzY29udGV4dF9uYW1lYCB2YXJjaGFyKDMyKSwKKyAgYHYzY29udGV4dF9lbmdpbmVgIHZhcmNoYXIoNjQpLAorICBgdjNzZWN1cml0eV9uYW1lYCB2YXJjaGFyKDMyKSwKKyAgYHYzc2VjdXJpdHlfZW5naW5lYCB2YXJjaGFyKDY0KSwKKyAgUFJJTUFSWSBLRVkgIChgdHJhcF9pZGApCispIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPWxhdGluMTsKKworCitEUk9QIFRBQkxFIElGIEVYSVNUUyB2YXJiaW5kczsKK0NSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIGB2YXJiaW5kc2AgKAorICBgdHJhcF9pZGAgaW50KDExKSB1bnNpZ25lZCBOT1QgTlVMTCBkZWZhdWx0ICcwJywKKyAgYG9pZGAgdmFyY2hhcigxMDI0KSBOT1QgTlVMTCwKKyAgYHR5cGVgIEVOVU0oJ2Jvb2xlYW4nLCdpbnRlZ2VyJywnYml0Jywnb2N0ZXQnLCdudWxsJywnb2lkJywnaXBhZGRyZXNzJywnY291bnRlcicsJ3Vuc2lnbmVkJywndGltZXRpY2tzJywnb3BhcXVlJywndW51c2VkMScsJ2NvdW50ZXI2NCcsJ3VudXNlZDInKSBOT1QgTlVMTCwKKyAgYHZhbHVlYCBibG9iIE5PVCBOVUxMLAorICBLRVkgYHRyYXBfaWRgIChgdHJhcF9pZGApCispIEVOR0lORT1Jbm5vREIgREVGQVVMVCBDSEFSU0VUPWxhdGluMTsKZGlmZiAtLWdpdCBhL2Rpc3Qvc3ZudXAgYi9kaXN0L3N2bnVwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjQwMzUzZjAKLS0tIC9kZXYvbnVsbAorKysgYi9kaXN0L3N2bnVwCkBAIC0wLDAgKzEsMTMwIEBACisjIS9iaW4vc2gKKyMKKyMgJElkOiBjdnN1cCAxNTc4OCAyMDA3LTAxLTI0IDEzOjQ5OjM4WiBkdHMxMiAkCisjCitUQUc9CitXTz0wCitERVNUPQorVE1QRElSPS90bXAKKworaWYgWyAieCQxIiA9ICJ4LXUiIF07IHRoZW4KKyAgICBERVNUPSQyCisgICAgc2hpZnQgMgorCisgICAgIyBnbnUgdGFyIChhcyBvZiAxLjE1LjEpIGlzIHVuYWJsZSB0byBjcmVhdGUgcG9ydGFibGUgdGFyIGFyY2hpdmVzLCAKKyAgICAjIGVzcGVjaWFsbHkgaWYgbG9uZyBmaWxlIG5hbWVzICg+MTAwIGNoYXIpIGFyZSBwcmVzZW50LgorICAgICMgc3RhciBpcyBhIGJldHRlciByZXBsYWNlbWVudC4KKyAgICBpZiBbIC14IC91c3IvYmluL3N0YXIgXTsgdGhlbgorICAgICAgICBUQVI9Jy91c3IvYmluL3N0YXIgLUh1c3RhciAtbm90IC1wYXQ9Ki8uc3ZuLyogLWMgLWYnCisgICAgZWxpZiBbIC14IC9iaW4vdGFyIF07IHRoZW4KKyAgICAgICAgVEFSPSIvYmluL3RhciAtLWV4Y2x1ZGU9LnN2biAtYyAtZiIKKyAgICAgICAgZWNobyAid2FybmluZzogc3RhciBub3QgYXZhaWxhYmxlLCB1c2luZyAobGVzcyBwb3J0YWJsZSkgdGFyLi4uIgorICAgIGVsc2UKKyAgICAgICAgZWNobyAibmVpdGhlciAvdXNyL2Jpbi9zdGFyIG5vciAvYmluL3RhciBmb3VuZC4iCisgICAgICAgIGV4aXQKKyAgICBmaQorZmkKKworaWYgWyAkIyAtZXEgMCBdOyB0aGVuCisgICAgRElSPSRQV0QKK2Vsc2UKKyAgICBpZiBbICQjIC1uZSAxIF07IHRoZW4KKyAgICAgICAgZWNobyAidXNhZ2U6ICQwIDx3b3JraW5nIGRpcmVjdG9yeT4iCisgICAgICAgIGV4aXQKKyAgICBmaQorICAgIERJUj0kMQorZmkKKworaWYgWyAteiAke0RJUiMjKi99IF07dGhlbgorICAgRElSPSR7RElSJS8qfQorZmkKK1NVQkQ9JHtESVIjIyovfQorUEFSRU5UPSR7RElSJSokU1VCRH0KKyNlY2hvICIkRElSID0gJFBBUkVOVCArICRTVUJEIgorCitpZiBbICEgLWQgJERJUiBdOyB0aGVuCisgICAgZWNobyAibm8gc3VjaCBkaXJlY3RvcnkgJyRESVInIgorICAgIGV4aXQKK2ZpCisKK2lmIFsgISAtZCAkRElSLy5zdm4gXTsgdGhlbgorICAgIGVjaG8gIickRElSJyBoYXMgbm8gLnN2biBkaXJlY3RvcnkhIgorICAgIGV4aXQKK2ZpCisKK2lmIFsgISAtZiAkRElSLy5zdm4vZW50cmllcyBdOyB0aGVuCisgICAgZWNobyAiJyRESVInIGhhcyBubyAuc3ZuL2VudHJpZXMhIgorICAgIGV4aXQKK2ZpCisKK1NWTlVSTD1gc3ZuIGluZm8gJERJUnwgZ3JlcCBVUkx8Y3V0IC1mMiAtZCAiICJgCitTVk5UTEQ9YGVjaG8gJFNWTlVSTCB8IHNlZCAnczouKnN2bnJvb3QvbmV0LXNubXAvXChbXi9dKlwpLio6XDE6J2AKK2lmIFsgIngkU1ZOVExEIiA9ICJ4dHJ1bmsiIF07IHRoZW4KKyAgIFRBRz0ibWFpbiIKK2Vsc2UKKyAgIFRBRz1gZWNobyAkU1ZOVVJMIHwgc2VkICdzOi4qc3Zucm9vdC9uZXQtc25tcC9bXi9dKi9cKFteL10qXCkuKjpcMTonYAorZmkKKworaWYgWyAhIC16ICRERVNUIF07IHRoZW4KKyAgICBpZiBbIC16ICRUQUcgXTsgdGhlbgorICAgICAgICBlY2hvICJubyBUQUcgZm91bmQgaW4gJERJUiEiCisgICAgICAgIGV4aXQgMQorICAgIGZpCitmaQorCitDT01NQU5EPSJzdm4gdXBkYXRlIC1xICRTVk5VUkwgJERJUiIKKworaWYgWyAhIC13ICRESVIvLnN2biBdOyB0aGVuCisgICAgaWYgWyAtTyAkRElSLy5zdm4gXTsgdGhlbgorICAgICAgICBXTz0xCisgICAgICAgIGVjaG8gIk1ha2luZyAkRElSIHdyaXRhYmxlIgorICAgICAgICBjaG1vZCAtUiB1K3cgJERJUgorICAgIGZpCitmaQorCitlY2hvICJVcGRhdGluZyBkaXJlY3RvcnkgJERJUiBmcm9tICRUQUcuLi4iCitlY2hvICIkQ09NTUFORCIKKworJENPTU1BTkQKK3JjPSQ/CitpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAic3ZuIGNvbW1hbmQgcmV0dXJuZWQgJD8iCitmaQorCitpZiBbICRXTyAtZXEgMSBdOyB0aGVuCisgICAgZWNobyAiTWFraW5nICRESVIgcmVhZC1vbmx5IgorICAgIGNobW9kIC1SIGEtdyAkRElSCitmaQorCitpZiBbICEgLXogJERFU1QgXTsgdGhlbgorICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgZWNobyAic2tpcHBpbmcgdXBsb2FkIGR1ZSB0byByYyAkcmMgZnJvbSBzdm4gY29tbWFuZCIKKyAgICBleGl0ICRyYworICBlbHNlCisgICAgY2QgJERJUi8uLgorICAgICNlY2hvICRQV0QKKyAgICBEQVRFPWBkYXRlICslWSVtJWRfJUglTWAKKyAgICBTT1VSQ0U9bmV0LXNubXAtc3ZuLSRUQUciXyREQVRFIgorICAgICRUQVIgJFRNUERJUi8kU09VUkNFLnRhciAkU1VCRAorICAgIHJjPSQ/CisgICAgaWYgWyAkcmMgLW5lIDAgXTsgdGhlbgorICAgICAgZWNobyAic2tpcHBpbmcgdXBsb2FkIGR1ZSB0byByYyAkcmMgZnJvbSB0YXIgY29tbWFuZCIKKyAgICAgIHJtIC1mICRUTVBESVIvJFNPVVJDRS50YXIuZ3oKKyAgICAgIGV4aXQgJHJjCisgICAgZmkKKyAgICBnemlwIC1mIC0tYmVzdCAkVE1QRElSLyRTT1VSQ0UudGFyCisgICAgcmM9JD8KKyAgICBpZiBbICRyYyAtbmUgMCBdOyB0aGVuCisgICAgICBlY2hvICJza2lwcGluZyB1cGxvYWQgZHVlIHRvIHJjICRyYyBmcm9tIGd6aXAgY29tbWFuZCIKKyAgICAgIHJtIC1mICRUTVBESVIvJFNPVVJDRS50YXIuZ3oKKyAgICAgIGV4aXQgJHJjCisgICAgZmkKKyAgICBzY3AgJFRNUERJUi8kU09VUkNFLnRhci5neiAkREVTVAorICAgIHJjPSQ/CisgICAgaWYgWyAkcmMgLW5lIDAgXTsgdGhlbgorICAgICAgZWNobyAid2FybmluZzogcmMgJHJjIGZyb20gc2NwIGNvbW1hbmQgKHRhcmJhbGwgaW4gJFRNUERJUikiCisgICAgZWxzZQorICAgICAgcm0gLWYgJFRNUERJUi8kU09VUkNFLnRhci5negorICAgIGZpCisgIGZpCitmaQpkaWZmIC0tZ2l0IGEvZG94eWdlbi5jb25mIGIvZG94eWdlbi5jb25mCmluZGV4IDllMGVmNDUuLjI5ODI0YjEgMTAwNjQ0Ci0tLSBhL2RveHlnZW4uY29uZgorKysgYi9kb3h5Z2VuLmNvbmYKQEAgLTIzLDcgKzIzLDcgQEAKICMgVGhpcyBjb3VsZCBiZSBoYW5keSBmb3IgYXJjaGl2aW5nIHRoZSBnZW5lcmF0ZWQgZG9jdW1lbnRhdGlvbiBvciAKICMgaWYgc29tZSB2ZXJzaW9uIGNvbnRyb2wgc3lzdGVtIGlzIHVzZWQuCiAKLVBST0pFQ1RfTlVNQkVSICAgICAgICAgPSA1LjQuMy5wcmUxCitQUk9KRUNUX05VTUJFUiAgICAgICAgID0gJChWRVJTSU9OKQogCiAjIFRoZSBPVVRQVVRfRElSRUNUT1JZIHRhZyBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIChyZWxhdGl2ZSBvciBhYnNvbHV0ZSkgCiAjIGJhc2UgcGF0aCB3aGVyZSB0aGUgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24gd2lsbCBiZSBwdXQuIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9oYW5kbGVyLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAppbmRleCA2OTE1MWE4Li44NmZhMWM1IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X2hhbmRsZXIuaApAQCAtMjA3LDEyICsyMDcsMTMgQEAKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICoKICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2NyZWF0ZShjb25zdCBjaGFyICpuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbWliX2hhbmRsZXIgKmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbW9kZXMpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKgogICAgIG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKGNvbnN0IGNoYXIgKm5hbWUsIE5ldHNubXBfTm9kZV9IYW5kbGVyKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZXJfYWNjZXNzX21ldGhvZCwgb2lkICpyZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50IG1vZGVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVyX2FjY2Vzc19tZXRob2QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG1vZGVzKTsKIAogICAgIG5ldHNubXBfZGVsZWdhdGVkX2NhY2hlCiAgICAgICAgICpuZXRzbm1wX2NyZWF0ZV9kZWxlZ2F0ZWRfY2FjaGUobmV0c25tcF9taWJfaGFuZGxlciAqLApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9hZ2VudF9yZWdpc3RyeS5oCmluZGV4IGU5ZTI4NDUuLjQ0ZmU0MmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfcmVnaXN0cnkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3JlZ2lzdHJ5LmgKQEAgLTM1LDE0ICszNSwxNiBAQAogfTsKIAogc3RydWN0IHJlZ2lzdGVyX3BhcmFtZXRlcnMgewotICAgIG9pZCAgICAgICAgICAgICpuYW1lOwotICAgIHNpemVfdCAgICAgICAgICBuYW1lbGVuOwotICAgIGludCAgICAgICAgICAgICBwcmlvcml0eTsKLSAgICBpbnQgICAgICAgICAgICAgcmFuZ2Vfc3ViaWQ7Ci0gICAgb2lkICAgICAgICAgICAgIHJhbmdlX3Vib3VuZDsKLSAgICBpbnQgICAgICAgICAgICAgdGltZW91dDsKLSAgICB1X2NoYXIgICAgICAgICAgZmxhZ3M7Ci0gICAgY29uc3QgY2hhciAgICAgKmNvbnRleHROYW1lOworICAgIG9pZCAgICAgICAgICAgICAgICAgICAgICAgICAgKm5hbWU7CisgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWxlbjsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eTsKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV9zdWJpZDsKKyAgICBvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZV91Ym91bmQ7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dDsKKyAgICB1X2NoYXIgICAgICAgICAgICAgICAgICAgICAgICBmbGFnczsKKyAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICAgICpjb250ZXh0TmFtZTsKKyAgICBuZXRzbm1wX3Nlc3Npb24gICAgICAgICAgICAgICpzZXNzaW9uOworICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm87CiB9OwogCiB0eXBlZGVmIHN0cnVjdCBzdWJ0cmVlX2NvbnRleHRfY2FjaGVfcyB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfc3lzT1JUYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2MjZlNGEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3N5c09SVGFibGUuaApAQCAtMCwwICsxLDI4IEBACisjaWZuZGVmIEFHRU5UX1NZU09SVEFCTEVfSAorI2RlZmluZSBBR0VOVF9TWVNPUlRBQkxFX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCitzdHJ1Y3Qgc3lzT1JUYWJsZTsKKworZXh0ZXJuIHZvaWQgICAgIGluaXRfYWdlbnRfc3lzT1JUYWJsZSh2b2lkKTsKK2V4dGVybiB2b2lkICAgICBzaHV0ZG93bl9hZ2VudF9zeXNPUlRhYmxlKHZvaWQpOworCitleHRlcm4gdm9pZCAgICAgbmV0c25tcF9zeXNPUlRhYmxlX2ZvcmVhY2godm9pZCAoKikoY29uc3Qgc3RydWN0IHN5c09SVGFibGUqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKik7CisKK2V4dGVybiBpbnQgICAgICByZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QsIGNvbnN0IGNoYXIgKik7CitleHRlcm4gaW50ICAgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlKG9pZCAqLCBzaXplX3QpOworZXh0ZXJuIGludCAgICAgIHJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiwgc2l6ZV90LCBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqKTsKK2V4dGVybiBpbnQgICAgICB1bnJlZ2lzdGVyX3N5c09SVGFibGVfc2VzcyhvaWQgKiwgc2l6ZV90LCBuZXRzbm1wX3Nlc3Npb24gKik7CitleHRlcm4gdm9pZCAgICAgdW5yZWdpc3Rlcl9zeXNPUlRhYmxlX2J5X3Nlc3Npb24obmV0c25tcF9zZXNzaW9uICopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogQUdFTlRfU1lTT1JUQUJMRV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X3RyYXAuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCmluZGV4IGViYzJiMDYuLjNlZjRjNmUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvYWdlbnRfdHJhcC5oCkBAIC0xNCw3ICsxNCwxMSBAQAogdm9pZCAgICAgICAgICAgIHNlbmRfZWFzeV90cmFwKGludCwgaW50KTsKIHZvaWQgICAgICAgICAgICBzZW5kX3RyYXBfcGR1KG5ldHNubXBfcGR1ICopOwogdm9pZCAgICAgICAgICAgIHNlbmRfdjJ0cmFwKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsKK3ZvaWQgICAgICAgICAgICBzZW5kX3YzdHJhcChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcnMsIGNoYXIgKmNvbnRleHQpOwogdm9pZCAgICAgICAgICAgIHNlbmRfdHJhcF92YXJzKGludCwgaW50LCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKik7Cit2b2lkICAgICAgICAgICAgc2VuZF90cmFwX3ZhcnNfd2l0aF9jb250ZXh0KGludCB0cmFwLCBpbnQgc3BlY2lmaWMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJzLCAKKwkJCQkJCQkJCQkgIGNoYXIgKmNvbnRleHQpOwogdm9pZCAgICAgICAgICAgIHNlbmRfZW50ZXJwcmlzZV90cmFwX3ZhcnMoaW50IHRyYXAsIGludCBzcGVjaWZpYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIGVudGVycHJpc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZW50ZXJwcmlzZV9sZW5ndGgsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2NhY2hlX2hhbmRsZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCmluZGV4IGU1YWM2NTMuLmIwMDIxNTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvY2FjaGVfaGFuZGxlci5oCkBAIC0xLDMgKzEsMTMgQEAKKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLwogI2lmbmRlZiBORVRTTk1QX0NBQ0hFX0hBTkRMRVJfSAogI2RlZmluZSBORVRTTk1QX0NBQ0hFX0hBTkRMRVJfSAogCkBAIC03NCw3ICs4NCw3IEBACiAgICAgaW50ICAgICAgICAgICAgbmV0c25tcF9pc19jYWNoZV92YWxpZCggICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gKik7CiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlcihpbnQsIE5ldHNubXBDYWNoZUxvYWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcENhY2hlRnJlZSAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQqLCBpbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQqLCBpbnQpOwogICAgIGludCAgIG5ldHNubXBfcmVnaXN0ZXJfY2FjaGVfaGFuZGxlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQsIE5ldHNubXBDYWNoZUxvYWQgKiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wQ2FjaGVGcmVlICopOwpAQCAtODQsMTEgKzk0LDEzIEBACiAgICAgbmV0c25tcF9jYWNoZSAqCiAgICAgbmV0c25tcF9jYWNoZV9jcmVhdGUoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcENhY2hlRnJlZSAqIGZyZWVfaG9vaywKLSAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pOworICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbik7CisgICAgaW50IG5ldHNubXBfY2FjaGVfZnJlZShuZXRzbm1wX2NhY2hlICpjYWNoZSk7CisKICAgICBuZXRzbm1wX21pYl9oYW5kbGVyICoKICAgICBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0KG5ldHNubXBfY2FjaGUqIGNhY2hlKTsKIAotICAgIG5ldHNubXBfY2FjaGUgKiBuZXRzbm1wX2NhY2hlX2ZpbmRfYnlfb2lkKG9pZCAqIHJvb3RvaWQsCisgICAgbmV0c25tcF9jYWNoZSAqIG5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQoY29uc3Qgb2lkICogcm9vdG9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcm9vdG9pZF9sZW4pOwogCiAgICAgdW5zaWduZWQgaW50IG5ldHNubXBfY2FjaGVfdGltZXJfc3RhcnQobmV0c25tcF9jYWNoZSAqY2FjaGUpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oCmluZGV4IGFhYmI3OTIuLjg2Yzc0ZDQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvZHNfYWdlbnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKQEAgLTQyLDYgKzQyLDcgQEAKICNkZWZpbmUgTkVUU05NUF9EU19BR0VOVF9QRVJMX0lOSVRfRklMRSAgICA0ICAgIC8qIHVzZWQgYnkgZW1iZWRkZWQgcGVybCAqLwogI2RlZmluZSBORVRTTk1QX0RTX1NNVVhfU09DS0VUICAgIDUgICAgIC8qIGlwOnBvcnQgc29ja2V0IGFkZHIgKi8KICNkZWZpbmUgTkVUU05NUF9EU19OT1RJRl9MT0dfQ1RYICA2ICAgICAvKiAiIiB8ICJzbm1wdHJhcGQiICovCisjZGVmaW5lIE5FVFNOTVBfRFNfQUdFTlRfVFJBUF9BRERSICAgICAgNyAgICAgLyogdXNlZCBhcyB2MSB0cmFwIGFnZW50IGFkZHJlc3MgKi8KIAogLyoKICAqIGludGVnZXJzIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL2ZzeXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDc4ODBjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9oYXJkd2FyZS9mc3lzLmgKQEAgLTAsMCArMSw5MyBAQAordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9mc3lzX2luZm9fcyBuZXRzbm1wX2ZzeXNfaW5mbzsKKworI2RlZmluZSBfTkVUU05NUF9GU19UWVBFX1NLSVBfQklUICAgMHgyMDAwCisjZGVmaW5lIF9ORVRTTk1QX0ZTX1RZUEVfTE9DQUwgICAgICAweDEwMDAKKworICAgLyoKKyAgICAqIEVudW1lcmF0aW9uIGZyb20gSE9TVC1SRVNPVVJDRVMtVFlQRVMgbWliCisgICAgKi8KKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX09USEVSCSAgIDEKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1VOS05PV04JICAgMgorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfQkVSS0VMRVkgICAzCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9TWVNWCSAgIDQKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0ZBVAkgICA1CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9IUEZTCSAgIDYKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0hGUwkgICA3CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9NRlMJICAgOAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfTlRGUwkgICA5CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9WTk9ERQkgICAxMAorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfSkZTCSAgIDExCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9JU085NjYwCSAgIDEyCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9ST0NLUklER0UgIDEzCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9ORlMJICAgMTQKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX05FVFdBUkUJICAgMTUKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0FGUwkgICAxNgorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfREZTCSAgIDE3CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9BUFBMRVNIQVJFIDE4CisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9SRlMJICAgMTkKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0RHQ1MJICAgMjAKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0JPT1RGUwkgICAyMQorI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfRkFUMzIJICAgMjIKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX0VYVDIJICAgMjMKKworICAgLyoKKyAgICAqIEFkZGl0aW9uYWwgZW51bWVyYXRpb25pcyAtIG5vdCBsaXN0ZWQgaW4gdGhhdCBNSUIKKyAgICAqLworI2RlZmluZSBORVRTTk1QX0ZTX1RZUEVfSUdOT1JFCSAgIDEgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMIHwgX05FVFNOTVBfRlNfVFlQRV9TS0lQX0JJVAorCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9QUk9DCSAgIDIgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMIHwgX05FVFNOTVBfRlNfVFlQRV9TS0lQX0JJVAorCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9ERVZQVFMJICAgMyB8IF9ORVRTTk1QX0ZTX1RZUEVfTE9DQUwgfCBfTkVUU05NUF9GU19UWVBFX1NLSVBfQklUCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9TWVNGUwkgICA0IHwgX05FVFNOTVBfRlNfVFlQRV9MT0NBTCB8IF9ORVRTTk1QX0ZTX1RZUEVfU0tJUF9CSVQKKyNkZWZpbmUgTkVUU05NUF9GU19UWVBFX1RNUEZTCSAgIDUgfCBfTkVUU05NUF9GU19UWVBFX0xPQ0FMCisjZGVmaW5lIE5FVFNOTVBfRlNfVFlQRV9VU0JGUwkgICA2IHwgX05FVFNOTVBfRlNfVFlQRV9MT0NBTAorCisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19BQ1RJVkUgICAweDAxCisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19SRU1PVEUgICAweDAyCisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19ST05MWSAgICAweDA0CisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19CT09UQUJMRSAweDA4CisjZGVmaW5lIE5FVFNOTVBfRlNfRkxBR19SRU1PVkUgICAweDEwCisKKyNkZWZpbmUgTkVUU05NUF9GU19GSU5EX0NSRUFURSAgICAgMSAgIC8qIG9yIHVzZSBvbmUgb2YgdGhlIHR5cGUgdmFsdWVzICovCisjZGVmaW5lIE5FVFNOTVBfRlNfRklORF9FWElTVCAgICAgIDAKKworc3RydWN0IG5ldHNubXBfZnN5c19pbmZvX3MgeworICAgICBuZXRzbm1wX2luZGV4ICBpZHg7CisgIC8qIGludCAgaWR4OyAqLworIAorICAgICBjaGFyIHBhdGhbICBTTk1QX01BWFBBVEgrMV07CisgICAgIGNoYXIgZGV2aWNlW1NOTVBfTUFYUEFUSCsxXTsKKyAgICAgaW50ICB0eXBlOworCisgICAgIGxvbmcgc2l6ZTsKKyAgICAgbG9uZyB1c2VkOworICAgICBsb25nIGF2YWlsOworICAgICBsb25nIHVuaXRzOworCisgICAgIGxvbmcgaW51bXNfdG90YWw7CisgICAgIGxvbmcgaW51bXNfYXZhaWw7CisKKyAgICAgbG9uZyBmbGFnczsKKworICAgICBuZXRzbm1wX2ZzeXNfaW5mbyAqbmV4dDsKK307CisKKworICAgIC8qCisgICAgICogUG9zc2libHkgbm90IGFsbCBuZWVkZWQgPz8KKyAgICAgKi8KK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfZ2V0X2ZpcnN0KCB2b2lkICk7CituZXRzbm1wX2ZzeXNfaW5mbyAqbmV0c25tcF9mc3lzX2dldF9uZXh0KCBuZXRzbm1wX2ZzeXNfaW5mbyogKTsKK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfZ2V0X2J5SWR4KCAgaW50LCAgIGludCApOworbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19nZXRfbmV4dF9ieUlkeChpbnQsaW50ICk7CisKK25ldHNubXBfZnN5c19pbmZvICpuZXRzbm1wX2ZzeXNfYnlfZGV2aWNlKCAgY2hhciosIGludCApOworbmV0c25tcF9mc3lzX2luZm8gKm5ldHNubXBfZnN5c19ieV9wYXRoKCAgICBjaGFyKiwgaW50ICk7CisKK25ldHNubXBfY2FjaGUgKm5ldHNubXBfZnN5c19nZXRfY2FjaGUoIHZvaWQgKTsKK2ludCAgbmV0c25tcF9mc3lzX2xvYWQoIG5ldHNubXBfY2FjaGUgKmNhY2hlLCB2b2lkICpkYXRhICk7Cit2b2lkIG5ldHNubXBfZnN5c19mcmVlKCBuZXRzbm1wX2NhY2hlICpjYWNoZSwgdm9pZCAqZGF0YSApOworCit1bnNpZ25lZCBpbnQgbmV0c25tcF9mc3lzX3NpemUoIG5ldHNubXBfZnN5c19pbmZvKiApOwordW5zaWduZWQgaW50IG5ldHNubXBfZnN5c191c2VkKCBuZXRzbm1wX2ZzeXNfaW5mbyogKTsKK3Vuc2lnbmVkIGludCBuZXRzbm1wX2ZzeXNfYXZhaWwobmV0c25tcF9mc3lzX2luZm8qICk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaGFyZHdhcmUvc2Vuc29ycy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YTEwYmQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2hhcmR3YXJlL3NlbnNvcnMuaApAQCAtMCwwICsxLDQ4IEBACisvKgorICogSGFyZHdhcmUgQWJzdHJhY3Rpb24gTGF5ZXIgLSBTZW5zb3JzIG1vZHVsZQorICoKKyAqIFB1YmxpYyBpbnRlcmZhY2UKKyAqLworCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfT1RIRVIgICAgICAgMQorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX1ZPTFRBR0VfQUMgIDMKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9WT0xUQUdFX0RDICA0CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfQ1VSUkVOVCAgICAgNQorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX1BPV0VSICAgICAgIDYKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9GUkVRVUVOQ1kgICA3CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfVEVNUEVSQVRVUkUgOAorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX0hVTUlESVRZICAgIDkKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfVFlQRV9SUE0gICAgICAgIDEwCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX1RZUEVfVk9MVU1FICAgICAxMQorI2RlZmluZSBORVRTTk1QX1NFTlNPUl9UWVBFX0JPT0xFQU4gICAgMTIKKworCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfQUNUSVZFICAgICAweDAxCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfTkFWQUlMICAgICAweDAyCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfQlJPS0VOICAgICAweDA0CisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZMQUdfRElTQUJMRSAgICAweDA4CisKKyNkZWZpbmUgTkVUU05NUF9TRU5TT1JfTUFTS19TVEFUVVMgICAgIDB4MDYgIC8qIE5BVkFJTHxCUk9LRU4gKi8KKworCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZJTkRfQ1JFQVRFICAgICAxICAgLyogb3IgdXNlIG9uZSBvZiB0aGUgc2Vuc29yIHR5cGUgdmFsdWVzICovCisjZGVmaW5lIE5FVFNOTVBfU0VOU09SX0ZJTkRfRVhJU1QgICAgICAwCisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfc2Vuc29yX2luZm9fcyBuZXRzbm1wX3NlbnNvcl9pbmZvOworc3RydWN0IG5ldHNubXBfc2Vuc29yX2luZm9fcyB7CisKKyAgICBuZXRzbm1wX2luZGV4ICBpZHg7CisgICAgLyogaW50ICBpZHg7ICovCisgICAgY2hhciAgbmFtZVsyNTZdOworICAgIAorICAgIGludCAgIHR5cGU7CisgICAgZmxvYXQgdmFsdWU7CisgICAgY2hhciAgZGVzY3JbMjU2XTsKKyAgICBsb25nICBmbGFnczsKK307CisKK25ldHNubXBfY29udGFpbmVyICAgKmdldF9zZW5zb3JfY29udGFpbmVyKCB2b2lkICk7CituZXRzbm1wX2NhY2hlICAgICAgICpnZXRfc2Vuc29yX2NhY2hlKCB2b2lkICk7CituZXRzbm1wX3NlbnNvcl9pbmZvICpzZW5zb3JfYnlfbmFtZSggY2hhciAqLCBpbnQgKTsKK05ldHNubXBDYWNoZUxvYWQgICAgIG5ldHNubXBfc2Vuc29yX2xvYWQ7CitOZXRzbm1wQ2FjaGVGcmVlICAgICBuZXRzbm1wX3NlbnNvcl9mcmVlOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9pbnN0YW5jZS5oCmluZGV4IDBhMDJjMjEuLmVmYzhkZDMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvaW5zdGFuY2UuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2luc3RhbmNlLmgKQEAgLTIwLDggKzIwLDkgQEAKICAqICogaGF2ZSB0byBjaGVjayB0aGUgb2lkIGF0IGFsbC4gIEp1c3QgYW5zd2VyLgogICovCiAKLWludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX2luc3RhbmNlKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9pbnN0YW5jZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICogcmVnaW5mbyk7CisKIGludCAgICAgICAgICAgIAogbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbyk7CiAKQEAgLTI5LDExMSArMzAsMTAzIEBACiAKIG5ldHNubXBfbWliX2hhbmRsZXIgKm5ldHNubXBfZ2V0X2luc3RhbmNlX2hhbmRsZXIodm9pZCk7CiAKLWludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIHN1YmhhbmRsZXIpOwotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOwotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZShjb25zdCBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOwotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyKTsKLWludCAgICAgICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcik7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIAotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIAotaW50ICAgICAgICAgICAgIG5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZShjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiAKIC8qIGlkZW50aWNhbCBmdW5jdGlvbnMgdGhhdCByZWdpc3RlciBhIGluIGEgcGFydGljdWxhciBjb250ZXh0ICovCi1pbnQgIG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKLWludCAgbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnX29pZF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKLWludCAgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdfb2lkX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAoraW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZV9jb250ZXh0KGNvbnN0IGNoYXIgKm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3ViaGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKLWludCAgbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CitpbnQKK25ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgKml0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBzdWJoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHQoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKIAotaW50ICBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOworaW50CituZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YmhhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpjb250ZXh0TmFtZSk7CiAKLWludCAgbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJoYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKK2ludAorbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dChjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqY29udGV4dE5hbWUpOwogCiBpbnQKIG5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2UoY29uc3QgY2hhciAqbmFtZSwKQEAgLTE0MywxMSArMTM2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKTsKIAogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9oZWxwZXJfaGFuZGxlcjsKKyNpZm5kZWYgTkVUU05NUF9OT19ERVBSRUNBVEVEX0ZVTkNUSU9OUwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV9sb25nX2hhbmRsZXI7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2ludF9oYW5kbGVyOwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXI7CiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX2NvdW50ZXIzMl9oYW5kbGVyOworI2VuZGlmCiBOZXRzbm1wX05vZGVfSGFuZGxlciBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXI7CiAKICNpZmRlZiBfX2NwbHVzcGx1cwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zdGFzaF9jYWNoZS5oCmluZGV4IGNmYTg1ZWYuLjM3MDlhMjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvc3Rhc2hfY2FjaGUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N0YXNoX2NhY2hlLmgKQEAgLTIwLDYgKzIwLDcgQEAKIH0gbmV0c25tcF9zdGFzaF9jYWNoZV9kYXRhOwogCiAvKiBmdW5jdGlvbiBwcm90b3R5cGVzICovCit2b2lkIG5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXIodm9pZCk7CiBuZXRzbm1wX21pYl9oYW5kbGVyICpuZXRzbm1wX2dldF9iYXJlX3N0YXNoX2NhY2hlX2hhbmRsZXIodm9pZCk7CiBuZXRzbm1wX21pYl9oYW5kbGVyICpuZXRzbm1wX2dldF9zdGFzaF9jYWNoZV9oYW5kbGVyKHZvaWQpOwogbmV0c25tcF9taWJfaGFuZGxlciAqbmV0c25tcF9nZXRfdGltZWRfYmFyZV9zdGFzaF9jYWNoZV9oYW5kbGVyKGludCB0aW1lb3V0LApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3N5c09SVGFibGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjA4NTkxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9zeXNPUlRhYmxlLmgKQEAgLTAsMCArMSw2MiBAQAorI2lmbmRlZiBORVRTTk1QX1NZU09SVEFCTEVfSAorI2RlZmluZSBORVRTTk1QX1NZU09SVEFCTEVfSAorCitzdHJ1Y3Qgc3lzT1JUYWJsZSB7CisgICAgY2hhciAgICAgICAgICAgICpPUl9kZXNjcjsKKyAgICBvaWQgICAgICAgICAgICAgKk9SX29pZDsKKyAgICBzaXplX3QgICAgICAgICAgIE9SX29pZGxlbjsKKyAgICBuZXRzbm1wX3Nlc3Npb24gKk9SX3Nlc3M7CisgICAgdV9sb25nICAgICAgICAgICBPUl91cHRpbWU7Cit9OworCitzdHJ1Y3QgcmVnaXN0ZXJfc3lzT1JfcGFyYW1ldGVycyB7CisgICAgY2hhciAgICAgICAgICAgICpkZXNjcjsKKyAgICBvaWQgICAgICAgICAgICAgKm5hbWU7CisgICAgc2l6ZV90ICAgICAgICAgICBuYW1lbGVuOworfTsKKworI2RlZmluZSBTWVNfT1JUQUJMRV9SRUdJU1RFUkVEX09LICAgICAgICAgICAgICAwCisjZGVmaW5lIFNZU19PUlRBQkxFX1JFR0lTVFJBVElPTl9GQUlMRUQgICAgICAgLTEKKyNkZWZpbmUgU1lTX09SVEFCTEVfVU5SRUdJU1RFUkVEX09LICAgICAgICAgICAgMAorI2RlZmluZSBTWVNfT1JUQUJMRV9OT19TVUNIX1JFR0lTVFJBVElPTiAgICAgIC0xCisKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9hZ2VudF9jYWxsYmFja3MuaD4KKworI2RlZmluZSBSRUdJU1RFUl9TWVNPUl9UQUJMRSh0aGVvaWQsIGxlbiwgZGVzY3IpICAgICAgICAgICBcCisgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdHJ1Y3Qgc3lzT1JUYWJsZSB0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1JfZGVzY3IgPSBkZXNjcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9vaWQgPSB0aGVvaWQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX29pZGxlbiA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1Jfc2VzcyA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl91cHRpbWUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfQVBQTElDQVRJT04sICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1JFR19TWVNPUiwgJnQpOyBcCisgIH0gd2hpbGUoMCk7CisKKyNkZWZpbmUgUkVHSVNURVJfU1lTT1JfRU5UUlkodGhlb2lkLCBkZXNjcikgICAgICAgICAgICAgICAgICAgICBcCisgIFJFR0lTVEVSX1NZU09SX1RBQkxFKHRoZW9pZCwgc2l6ZW9mKHRoZW9pZCkgLyBzaXplb2Yob2lkKSwgICAgXAorICAgICAgICAgICAgICAgICAgICAgICBkZXNjcikKKworI2RlZmluZSBVTlJFR0lTVEVSX1NZU09SX1RBQkxFKHRoZW9pZCwgbGVuKSAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc3RydWN0IHN5c09SVGFibGUgdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1JfZGVzY3IgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX29pZCA9IHRoZW9pZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdC5PUl9vaWRsZW4gPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHQuT1Jfc2VzcyA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB0Lk9SX3VwdGltZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgc25tcF9jYWxsX2NhbGxiYWNrcyhTTk1QX0NBTExCQUNLX0FQUExJQ0FUSU9OLCAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgU05NUERfQ0FMTEJBQ0tfUkVRX1VOUkVHX1NZU09SLCAmdCk7ICAgIFwKKyAgfSB3aGlsZSgwKTsKKworI2RlZmluZSBVTlJFR0lTVEVSX1NZU09SX0VOVFJZKHRoZW9pZCkgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgVU5SRUdJU1RFUl9TWVNPUl9UQUJMRSh0aGVvaWQsIHNpemVvZih0aGVvaWQpIC8gc2l6ZW9mKG9pZCkpCisKKyNkZWZpbmUgVU5SRUdJU1RFUl9TWVNPUl9TRVNTKHNlc3MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIHNubXBfY2FsbF9jYWxsYmFja3MoU05NUF9DQUxMQkFDS19BUFBMSUNBVElPTiwgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgIFNOTVBEX0NBTExCQUNLX1JFUV9VTlJFR19TWVNPUl9TRVNTLCAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICBzZXNzKTsKKworCisjZW5kaWYgLyogTkVUU05NUF9TWVNPUlRBQkxFX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGUuaAppbmRleCAzYjhiYmMyLi44MjQ5NWVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZS5oCkBAIC05LDYgKzksMTIgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KIC8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisvKgogICogQGZpbGUgdGFibGUuaAogICoKICAqIEBhZGR0b2dyb3VwIHRhYmxlCkBAIC0xMTUsMTUgKzEyMSwxMiBAQAogICAgIG5ldHNubXBfbWliX2hhbmRsZXIKICAgICAgICAgKm5ldHNubXBfZ2V0X3RhYmxlX2hhbmRsZXIobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFicmVxKTsKLSAgICBpbnQgICAgICAgICAgICAgbmV0c25tcF9yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnJlZ2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICp0YWJyZXEpOwotICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX2J1aWxkX29pZChuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRhYmxlX2luZm8pOworICAgIGludCAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUoICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJyZXEpOworICAgIGludCAgIG5ldHNubXBfdW5yZWdpc3Rlcl90YWJsZShuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvKTsKKyAgICBpbnQgICBuZXRzbm1wX3RhYmxlX2J1aWxkX29pZCggbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgICAgICAqcmVxaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gICAqdGFibGVfaW5mbyk7CiAgICAgaW50ICAgICAgICAgICAgCiAgICAgICAgIG5ldHNubXBfdGFibGVfYnVpbGRfb2lkX2Zyb21faW5kZXgobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpyZWdpbmZvLApAQCAtMTQ3LDYgKzE1MCw4IEBACiAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbwogICAgICAgICAqbmV0c25tcF9maW5kX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvKG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmVnaW5mbyk7CisgICAgdm9pZCBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWUobmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqKTsKKwogICAgIG5ldHNubXBfaW5kZXggKiBuZXRzbm1wX3RhYmxlX2luZGV4X2ZpbmRfbmV4dF9yb3cobmV0c25tcF9jb250YWluZXIgKmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mbyAqdGJscmVxKTsKIApAQCAtMTU4LDEzICsxNjMsOSBAQAogCiAjZGVmaW5lIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleCh0aW5mbywgdHlwZSkgc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmdGluZm8tPmluZGV4ZXMsIE5VTEwsIDAsICh1X2NoYXIpdHlwZSwgTlVMTCwgMCk7CiAKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdm9pZCAgICAgICAgICAgCiAgICAgICAgIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnRpbmZvLCAuLi4pOwotI2Vsc2UKLSAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF90YWJsZV9oZWxwZXJfYWRkX2luZGV4ZXModmFfYWxpc3QpOwotI2VuZGlmCiAKICAgICBpbnQgbmV0c25tcF9jaGVja19nZXRuZXh0X3JlcGx5KG5ldHNubXBfcmVxdWVzdF9pbmZvICpyZXF1ZXN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcHJlZml4LCBzaXplX3QgcHJlZml4X2xlbiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2NvbnRhaW5lci5oCmluZGV4IGQ1MWFjYjEuLmRjNmJmYTggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfY29udGFpbmVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaApAQCAtNTIsNiArNTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYnJlcSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIga2V5X3R5cGUpOworICAgIGludCAgICAgICAgICAgIAorICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX3VucmVnaXN0ZXIobmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAqcmVnaW5mbyk7CiAgICAgCiAgICAgLyoqIHJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciAqLwogICAgIG5ldHNubXBfY29udGFpbmVyKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV9kYXRhc2V0LmggYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAppbmRleCBjYzI2ZWI2Li43ZDhhZWVjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX2RhdGFzZXQuaApAQCAtMTEzLDEyICsxMTMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50LCBpbnQsIGludCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgICpkZWZhdWx0X3ZhbHVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGRlZmF1bHRfdmFsdWVfbGVuKTsKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdm9pZCBuZXRzbm1wX3RhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3cobmV0c25tcF90YWJsZV9kYXRhX3NldCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uKTsKLSNlbHNlCi0gICAgdm9pZCBuZXRzbm1wX3RhYmxlX3NldF9tdWx0aV9hZGRfZGVmYXVsdF9yb3codmFfYWxpc3QpOwotI2VuZGlmCiAKIAogLyogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQpAQCAtMTc3LDExICsxNzMsNyBAQAogCiAgICAgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfYWRkX2luZGV4KG5ldHNubXBfdGFibGVfZGF0YV9zZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdGFibGUsIHVfY2hhciB0eXBlKTsKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdm9pZCBuZXRzbm1wX3RhYmxlX3NldF9hZGRfaW5kZXhlcyhuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0c2V0LCAuLi4pOwotI2Vsc2UKLSAgICB2b2lkIG5ldHNubXBfdGFibGVfaGVscGVyX2FkZF9pbmRleGVzKHZhX2FsaXN0KTsKLSNlbmRpZgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvdGFibGVfdGRhdGEuaAppbmRleCAyNDJiMTU5Li4yOGMwNDlkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3RhYmxlX3RkYXRhLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9hZ2VudC90YWJsZV90ZGF0YS5oCkBAIC04Myw5ICs4MywxMCBAQAogCiAgICAgbmV0c25tcF9taWJfaGFuZGxlciAqbmV0c25tcF9nZXRfdGRhdGFfaGFuZGxlcihuZXRzbm1wX3RkYXRhICp0YWJsZSk7CiAKLSAgICBpbnQgbmV0c25tcF90ZGF0YV9yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGRhdGEgICAgICAgICAgICAgICAgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8pOworICAgIGludCBuZXRzbm1wX3RkYXRhX3JlZ2lzdGVyKCAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdGRhdGEgICAgICAgICAgICAgICAgICAgKnRhYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbyk7CisgICAgaW50IG5ldHNubXBfdGRhdGFfdW5yZWdpc3RlcihuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWdpbmZvKTsKIAogICAgIG5ldHNubXBfdGRhdGEgICAgICAqbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlKCAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKTsKICAgICBuZXRzbm1wX2NvbnRhaW5lciAgKm5ldHNubXBfdGRhdGFfZXh0cmFjdF9jb250YWluZXIobmV0c25tcF9yZXF1ZXN0X2luZm8gKik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2FnZW50L3dhdGNoZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCmluZGV4IDQzYTE5ZDcuLjNjNmQ2MDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvYWdlbnQvd2F0Y2hlci5oCkBAIC04LDYgKzgsMTAgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKKy8qKiBAaW5ncm91cCB3YXRjaGVyCisgKiAgQHsKKyAqLworCiAvKgogICogaWYgaGFuZGxlciBmbGFnIGhhcyB0aGlzIGJpdCBzZXQsIHRoZSB0aW1lc3RhbXAgd2lsbCBiZQogICogdHJlYXRlZCBhcyBhIHBvaW50ZXIgdG8gdGhlIHRpbWVzdGFtcC4gSWYgdGhpcyBiaXQgaXMKQEAgLTE2LDggKzIwLDM2IEBACiAgKi8KICNkZWZpbmUgTkVUU05NUF9XQVRDSEVSX0RJUkVDVCBNSUJfSEFORExFUl9DVVNUT00xCiAKLSNkZWZpbmUgV0FUQ0hFUl9GSVhFRF9TSVpFICAgIDB4MDEKLSNkZWZpbmUgV0FUQ0hFUl9NQVhfU0laRSAgICAgIDB4MDIKKy8qKiBUaGUgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgaXMgY29uc3RhbnQuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFdBVENIRVJfRklYRURfU0laRSAgICAgMHgwMQorLyoqIFRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGlzIHN0b3JlZCBpbiBtYXhfc2l6ZS4KKyAqICBJZiBXQVRDSEVSX1NJWkVfU1RSTEVOIGlzIHNldCB0aGVuIGl0IGlzIHN1cHBvc2VkIHRoYXQgbWF4X3NpemUgKyAxCisgKiAgYnl0ZXMgY291bGQgYmUgc3RvcmVkIGluIHRoZSBidWZmZXIuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICovCisjZGVmaW5lIFdBVENIRVJfTUFYX1NJWkUgICAgICAgMHgwMgorLyoqIElmIHNldCB0aGVuIHRoZSB2YXJpYWJsZSBkYXRhX3NpemVfcCBwb2ludHMgdG8gaXMgc3VwcG9zZWQgdG8gaG9sZCB0aGUKKyAqICBjdXJyZW50IHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGFuZCB3aWxsIGJlIHVwZGF0ZWQgb24gd3JpdGVzLgorICogIEBoaWRlaW5pdGlhbGl6ZXIKKyAqICBAc2luY2UgTmV0LVNOTVAgNS41CisgKi8KKyNkZWZpbmUgV0FUQ0hFUl9TSVpFX0lTX1BUUiAgICAweDA0CisvKiogSWYgc2V0IHRoZW4gZGF0YSBpcyBzdXBwcG9zZWQgdG8gYmUgYSB6ZXJvLXRlcm1pbmF0ZWQgY2hhcmFjdGVyIGFycmF5CisgKiAgYW5kIGJvdGggZGF0YV9zaXplIGFuZCBkYXRhX3NpemVfcCBhcmUgaWdub3JlZC4gQWRkaXRpb25hbGx5IFxcMCBpcyBhCisgKiAgZm9yYmlkZGVuIGNoYXJhY3RlciBpbiB0aGUgZGF0YSBzZXQuCisgKiAgQGhpZGVpbml0aWFsaXplcgorICogIEBzaW5jZSBOZXQtU05NUCA1LjUKKyAqLworI2RlZmluZSBXQVRDSEVSX1NJWkVfU1RSTEVOICAgIDB4MDgKKy8qKiBJZiBzZXQgdGhlbiBzaXplIGlzIGluIHVuaXRzIG9mIG9iamVjdCBpZGVudGlmaWVycy4KKyAqICBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhbiBPSUQgYW5kIHRyYWNrcyB0aGUgT0lEX0xFTkdUSCBvZiBpdCBhcworICogIG9wcG9zZWQgdG8gaXQncyBzaXplLgorICogIEBoaWRlaW5pdGlhbGl6ZXIKKyAqICBAc2luY2UgTmV0LVNOTVAgNS41LjEKKyAqLworI2RlZmluZSBXQVRDSEVSX1NJWkVfVU5JVF9PSURTIDB4MTAKIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF93YXRjaGVyX2luZm9fcyB7CiAgICAgdm9pZCAgICAgKmRhdGE7CkBAIC0yNSw4ICs1NywxMSBAQAogICAgIHNpemVfdCAgICBtYXhfc2l6ZTsKICAgICB1X2NoYXIgICAgdHlwZTsKICAgICBpbnQgICAgICAgZmxhZ3M7CisgICAgc2l6ZV90ICAgKmRhdGFfc2l6ZV9wOwogfSBuZXRzbm1wX3dhdGNoZXJfaW5mbzsKIAorLyoqIEB9ICovCisKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfaW5zdGFuY2UoIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3dhdGNoZXJfaW5mbyAgICAgICAgICp3aW5mbyk7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl93YXRjaGVkX3NjYWxhciggICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvLApAQCAtNDQsMzggKzc5LDUxIEBACiAgKi8KIAogaW50IG5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl9sb25nX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXIoY29uc3QgY2hhciAqbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqIGl0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKTsKIGludCBuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfc2NhbGFyKGNvbnN0IGNoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiByZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKiBpdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcik7CiBpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX3NjYWxhcihjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICogaXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOZXRzbm1wX05vZGVfSGFuZGxlciAqIHN1YmhhbmRsZXIpOwogCiAjZGVmaW5lIFdBVENIRVJfSEFORExFUl9OQU1FICJ3YXRjaGVyIgogCiBuZXRzbm1wX21pYl9oYW5kbGVyICAqbmV0c25tcF9nZXRfd2F0Y2hlcl9oYW5kbGVyKHZvaWQpOwotbmV0c25tcF93YXRjaGVyX2luZm8gKm5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbyh2b2lkICosIHNpemVfdCwgdV9jaGFyLCBpbnQpOworCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvKG5ldHNubXBfd2F0Y2hlcl9pbmZvICosIHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCk7CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfaW5pdF93YXRjaGVyX2luZm82KG5ldHNubXBfd2F0Y2hlcl9pbmZvICosCisJCQkgICB2b2lkICosIHNpemVfdCwgdV9jaGFyLCBpbnQsIHNpemVfdCwgc2l6ZV90Kik7CisKK25ldHNubXBfd2F0Y2hlcl9pbmZvICoKK25ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mbyh2b2lkICosIHNpemVfdCwgdV9jaGFyLCBpbnQpOworCituZXRzbm1wX3dhdGNoZXJfaW5mbyAqCituZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82KHZvaWQgKiwgc2l6ZV90LCB1X2NoYXIsIGludCwgc2l6ZV90LCBzaXplX3QqKTsKKwogTmV0c25tcF9Ob2RlX0hhbmRsZXIgIG5ldHNubXBfd2F0Y2hlcl9oZWxwZXJfaGFuZGxlcjsKIAogbmV0c25tcF9taWJfaGFuZGxlciAgKm5ldHNubXBfZ2V0X3dhdGNoZWRfdGltZXN0YW1wX2hhbmRsZXIodm9pZCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaCBiL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCmluZGV4IDY3Y2Q2YTQuLjgwY2Y1ZDYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC04LDYgKzgsNDkgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZVByZWZpeCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikgKHZvaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNhZ2VMaW5lKTsKKyAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikgKHZvaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdXNhZ2VMaW5lKTsKKworLyogVGhlc2UgdHdvIGFyZSBkb2N1bWVudGVkIGFzICJyZWdpc3RlcnssX2FwcH1fcHJlbWliX2hhbmRsZXIoKSAqLworLyo/Ki8gICAgc3RydWN0IGNvbmZpZ19saW5lICpyZWdpc3Rlcl9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKGNvbnN0IGNoYXIgKmZpbGVQcmVmaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwYXJzZXIpIChjb25zdCBjaGFyICosIGNoYXIgKiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcmVsZWFzZXIpICh2b2lkKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVzYWdlTGluZSk7CisvKj8qLyAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX2FwcF9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9rZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcGFyc2VyKSAoY29uc3QgY2hhciAqLCBjaGFyICopLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnJlbGVhc2VyKSAodm9pZCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1c2FnZUxpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgdm9pZCAgICAgICAgICAgIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqZmlsZVByZWZpeCwgY29uc3QgY2hhciAqdG9rZW4pOworICAgIHZvaWQgICAgICAgICAgICB1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlciggICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRva2VuKTsKKyAgICB2b2lkICAgICAgICAgICAgdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKHZvaWQpOworCisvKj8qLyB2b2lkIHJlZ2lzdGVyX21pYl9oYW5kbGVycyh2b2lkKTsKKyAgICB2b2lkICAgICAgICAgICAgcmVhZF9jb25maWdzKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICByZWFkX3ByZW1pYl9jb25maWdzKHZvaWQpOworCisgICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKGNvbnN0IGNoYXIgKmxlYWQpOworICAgIHZvaWQgICAgICAgICAgICBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKik7CisgICAgdm9pZCAgICAgICAgICAgIGNvbmZpZ19wd2Fybihjb25zdCBjaGFyICopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCiAgICAgLyoKICAgICAgKiAgRm9yIHRoZSBpbml0aWFsIHJlbGVhc2UsIHRoaXMgd2lsbCBqdXN0IHJlZmVyIHRvIHRoZQogICAgICAqICByZWxldmFudCBVQ0QgaGVhZGVyIGZpbGVzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvYXJwLmgKaW5kZXggNGM2YmFlMy4uMTFlODMyYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9hcnAuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2FycC5oCkBAIC04Myw2ICs4Myw3IEBACiAgICB1X2NoYXIgICAgYXJwX3R5cGU7ICAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVR5cGUgMS01ICovCiAgICB1X2NoYXIgICAgYXJwX3N0YXRlOyAgICAgICAgICAvKiBpbmV0TmV0VG9NZWRpYVN0YXRlIDEtNyAqLwogCisgICB1X2xvbmcgICAgYXJwX2xhc3RfdXBkYXRlZDsgICAvKiB0aW1ldGlja3Mgb2YgbGFzdCB1cGRhdGUgKi8KIH0gbmV0c25tcF9hcnBfZW50cnk7CiAKIApAQCAtMTE5LDYgKzEyMCw5IEBACiAKIHZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X2ZyZWUobmV0c25tcF9hcnBfZW50cnkgKiBlbnRyeSk7CiAKK3ZvaWQgbmV0c25tcF9hY2Nlc3NfYXJwX2VudHJ5X3VwZGF0ZShuZXRzbm1wX2FycF9lbnRyeSAqZW50cnksCisgICAgICAgIG5ldHNubXBfYXJwX2VudHJ5ICpuZXdfZGF0YSk7CisKIC8qCiAgKiBmaW5kIGVudHJ5IGluIGNvbnRhaW5lcgogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvZGVmYXVsdHJvdXRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzYWMxOGYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2RlZmF1bHRyb3V0ZXIuaApAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIGRlZmF1bHRyb3V0ZXIgZGF0YSBhY2Nlc3MgaGVhZGVyCisgKgorICogJElkOiQKKyAqLworI2lmbmRlZiBORVRTTk1QX0FDQ0VTU19ERUZBVUxUUk9VVEVSX0gKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9ICisKKyMgaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisvKgorICogc3RydWN0dXJlIGRlZmluaXRpb25zCisgKi8KKyNpZiBkZWZpbmVkKCBORVRTTk1QX0VOQUJMRV9JUFY2ICkKKyMgICBkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRSAxNiAgIC8qIFhYWDogMjAsIGZvciBpcDZ6PyAqLworI2Vsc2UKKyMgICBkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRSA0CisjZW5kaWYKKworCisvKgorICogbmV0c25tcF9kZWZhdWx0X3JvdXRlX2VudHJ5CisgKi8KK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfZGVmYXVsdHJvdXRlcl9zIHsKKworICAgIG5ldHNubXBfaW5kZXggb2lkX2luZGV4OyAgIC8qIE1VU1QgQkUgRklSU1QhISBmb3IgY29udGFpbmVyIHVzZSAqLworICAgIG9pZCAgICAgICAgICAgbnNfZHJfaW5kZXg7IC8qIGFyYml0cmFyeSBpbmRleCAqLworCisgICAgaW50ICAgICAgZmxhZ3M7IC8qIGZvciBuZXQtc25tcCB1c2UgKi8KKworICAgIC8qCisgICAgICogbWliIHJlbGF0ZWQgZGF0YQorICAgICAqLworICAgIHVfY2hhciAgIGRyX2FkZHJlc3N0eXBlOyAgICAvKiBpcERlZmF1bHRSb3V0ZXJBZGRyZXNzVHlwZSAqLworICAgIGNoYXIgICAgIGRyX2FkZHJlc3NbTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9CVUZfU0laRV07IC8qIGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgKi8KKyAgICBzaXplX3QgICBkcl9hZGRyZXNzX2xlbjsgICAgLyogbGVuZ3RoIG9mIGlwRGVmYXVsdFJvdXRlckFkZHJlc3MgKi8KKyAgICBvaWQgICAgICBkcl9pZl9pbmRleDsgICAgICAgLyogaXBEZWZhdWx0Um91dGVySWZJbmRleCAqLworICAgIHVpbnQzMl90IGRyX2xpZmV0aW1lOyAgICAgICAvKiBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSAoMC02NTUzNSkgKi8KKyAgICBjaGFyICAgICBkcl9wcmVmZXJlbmNlOyAgICAgLyogaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSAoLTIsLTEsMCwxKSAqLworCit9IG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeTsKKworCisvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLyoKKyAqIEFDQ0VTUyBmdW5jdGlvbiBwcm90b3R5cGVzCisgKi8KKy8qCisgKiBjb250YWluZXIgaW5pdAorICovCituZXRzbm1wX2NvbnRhaW5lciAqCituZXRzbm1wX2FjY2Vzc19kZWZhdWx0cm91dGVyX2NvbnRhaW5lcl9pbml0KHVfaW50IGZsYWdzKTsKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9JTklUX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9JTklUX0FERExfSURYX0JZX0FERFIgICAgICAweDAwMDEKKworLyoKKyAqIGNvbnRhaW5lciBsb2FkCisgKi8KK25ldHNubXBfY29udGFpbmVyKgorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciogY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKTsKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX0lQVjRfT05MWSAgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX0lQVjZfT05MWSAgICAgICAgICAgICAweDAwMDIKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9MT0FEX0FERExfSURYX0JZX0FERFIgICAgICAweDAwMDQKKworLyoKKyAqIGNvbnRhaW5lciBmcmVlCisgKi8KK3ZvaWQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9pbnQgZnJlZV9mbGFncyk7CisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9ET05UX0NMRUFSICAgICAgICAgICAgMHgwMDAxCisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX0RFRkFVTFRST1VURVJfRlJFRV9LRUVQX0NPTlRBSU5FUiAgICAgICAgMHgwMDAyCisKKy8qCisgKiBlbnRyeSBjcmVhdGUKKyAqLworbmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICoKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfY3JlYXRlKHZvaWQpOworCisvKgorICogZW50cnkgbG9hZAorICovCitpbnQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfbG9hZChzaXplX3QgKm51bV9lbnRyaWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZGVmYXVsdHJvdXRlcl9lbnRyeSAqKmVudHJpZXMpOworCisvKgorICogZW50cnkgdXBkYXRlCisgKi8KK2ludAorbmV0c25tcF9hY2Nlc3NfZGVmYXVsdHJvdXRlcl9lbnRyeV91cGRhdGUobmV0c25tcF9kZWZhdWx0cm91dGVyX2VudHJ5ICpsaHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKnJocyk7CisKKy8qCisgKiBlbnRyeSBmcmVlCisgKi8KK3ZvaWQKK25ldHNubXBfYWNjZXNzX2RlZmF1bHRyb3V0ZXJfZW50cnlfZnJlZShuZXRzbm1wX2RlZmF1bHRyb3V0ZXJfZW50cnkgKmVudHJ5KTsKKworCisKKy8qKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKyMgaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogTkVUU05NUF9BQ0NFU1NfREVGQVVMVFJPVVRFUl9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pbnRlcmZhY2UuaAppbmRleCA1M2RmYjM2Li4yMDAxM2VkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2ludGVyZmFjZS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaW50ZXJmYWNlLmgKQEAgLTM0LDYgKzM0LDIwIEBACiAjZGVmaW5lIE5FVFNOTVBfSU5URVJGQUNFX0ZMQUdTX0hBU19WNl9SRUFDSEFCTEUgICAgICAgIDB4MDAwNDAwMDAKICNkZWZpbmUgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfSEFTX1Y2X0lGSUQgICAgICAgICAgICAgMHgwMDA4MDAwMAogI2RlZmluZSBORVRTTk1QX0lOVEVSRkFDRV9GTEFHU19IQVNfVjZfRk9SV0FSRElORyAgICAgICAweDAwMTAwMDAwCisvKiBTb21lIHBsYXRmb3JtcywgZS5nLkxpbnV4LCBkbyBub3QgcHJvdmlkZSBzdGFuZGFsb25lIGNvdW50ZXIKKyAqIGZvciBpbmNvbWluZyB1bmljYXN0IHBhY2tldHMgLSB0aGV5IHByb3ZpZGUgY291bnRlciBvZiBhbGwgcGFja2V0cworICogKyBzZXBhcmF0ZSBjb3VudGVyIGZvciB0aGUgbXVsdGljYXN0IG9uZXMuCisgKiBUaGF0IG1lYW5zIHRoZSBjb3VudGVyIG9mIGFsbCBwYWNrZXRzIG11c3Qgd2F0Y2hlZCBhbmQgY2hlY2tlZAorICogZm9yIG92ZXJmbG93cyB0byByZWNvbnN0cnVjdCBpdHMgNjQtYml0IHZhbHVlIChpLmUuIGFzIHVzdWFsCisgKiBmb3IgY291bnRlciBvZiB1bmljYXN0IHBhY2tldHMpLCBhbmQgYWZ0ZXIgaXRzIGV4cGFuc2lvbiB0byA2NC1iaXRzLAorICogbnIub2YgbXVsdGljYXN0IHBhY2tldHMgbXVzdCBiZSBzdWJzdHJhY3RlZCB0byBnZXQgbnIuIG9mIHVuaWNhc3QKKyAqIHBhY2tldHMuCisgKiBUaGlzIGZsYWcgbWFya3Mgc3RhdHMgb2Ygc3VjaCBwbGF0Zm9ybXMuIE5yLiBvZiBhbGwgaW5jb21pbmcgcGFja2V0cywKKyAqIHByb3ZpZGVkIGJ5IHRoZSBwbGF0Zm9ybSwgbXVzdCBiZSBzdG9yZWQgaW4KKyAqIG5ldHNubXBfaW50ZXJmYWNlX3N0YXRzLmlhbGwgYW5kIG5ldHNubXBfaW50ZXJmYWNlX3N0YXRzLml1Y2FzdCB3aWxsCisgKiBiZSBhdXRvbWF0aWNhbGx5IGNhbGN1bGF0ZWQgbGF0ZXIuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9JTlRFUkZBQ0VfRkxBR1NfQ0FMQ1VMQVRFX1VDQVNUICAgICAgICAgMHgwMDIwMDAwMAogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogY29uc3RhbnRzIGZvciBlbnVtcyBmb3IgdGhlIE1JQiBub2RlCkBAIC05Myw2ICsxMDcsMTEgQEAKICAgICAgKi8KICAgIC8qKiBpbnB1dCAqLwogICAgIHN0cnVjdCBjb3VudGVyNjQgaWJ5dGVzOworICAgIC8qCisgICAgICogbnIuIG9mIGFsbCBwYWNrZXRzICh0byBjYWxjdWxhdGUgaXVjYXN0LCB3aGVuIHVuZGVybHlpbmcgcGxhdGZvcm0gZG9lcworICAgICAqIG5vdCBwcm92aWRlIGl0KQorICAgICAqLworICAgIHN0cnVjdCBjb3VudGVyNjQgaWFsbDsKICAgICBzdHJ1Y3QgY291bnRlcjY0IGl1Y2FzdDsKICAgICBzdHJ1Y3QgY291bnRlcjY0IGltY2FzdDsKICAgICBzdHJ1Y3QgY291bnRlcjY0IGliY2FzdDsKQEAgLTE3OSw3ICsxOTgsNyBAQAogdHlwZWRlZiBzdHJ1Y3QgX2NvbmZfaWZfbGlzdCB7CiAgICAgY29uc3QgY2hhciAgICAgKm5hbWU7CiAgICAgaW50ICAgICAgICAgICAgIHR5cGU7Ci0gICAgdWludDY0X3QgICAgICAgIHNwZWVkOworICAgIHVpbnQ2NF90IHNwZWVkOwogICAgIHN0cnVjdCBfY29uZl9pZl9saXN0ICpuZXh0OwogfSBuZXRzbm1wX2NvbmZfaWZfbGlzdDsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBhZGRyZXNzLmgKaW5kZXggNmI1MTUxOS4uNzUwNTZmMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9pcGFkZHJlc3MuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwYWRkcmVzcy5oCkBAIC00Nyw3ICs0NywxMCBAQAogICAgdV9jaGFyICAgIGlhX3N0YXR1czsgICAgIC8qIElwQWRkcmVzc1N0YXR1cyAoMS03KSAqLwogICAgdV9jaGFyICAgIGlhX29yaWdpbjsgICAgIC8qIElwQWRkcmVzc09yaWdpbiAoMS02KSAqLwogICAgdV9jaGFyICAgIGlhX3N0b3JhZ2V0eXBlOyAvKiBJcEFkZHJlc3NTdG9yYWdlVHlwZSAoMS01KSAqLwotCisgICB1X2NoYXIgICAgaWFfb25saW5rX2ZsYWc7IC8qIElwT25saW5rRmxhZyAqLworICAgdV9jaGFyICAgIGlhX2F1dG9ub21vdXNfZmxhZzsgLypJcEF1dG9ub21vdXNGbGFnICovCisgICB1X2xvbmcgICAgaWFfcHJlZmVyZWRfbGlmZXRpbWU7LypJcFByZWZlcmVkTGlmZVRpbWUqLworICAgdV9sb25nICAgIGlhX3ZhbGlkX2xpZmV0aW1lOy8qSXBWYWxpZExpZmVUaW1lKi8KICAgIG5ldHNubXBfZGF0YV9saXN0ICphcmNoX2RhdGE7ICAgICAgLyogYXJjaCBzcGVjaWZpYyBkYXRhICovCiAKIH0gbmV0c25tcF9pcGFkZHJlc3NfZW50cnk7CkBAIC0xNDIsNyArMTQ1LDE5IEBACiAKIGludCBuZXRzbm1wX2lwYWRkcmVzc19pcHY0X3ByZWZpeF9sZW4oaW5fYWRkcl90IG1hc2spOwogCitpbnQgbmV0c25tcF9pcGFkZHJlc3NfZmxhZ3NfY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeEFkdlByZWZlcnJlZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhPbkxpbmtGbGFnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9sb25nICppcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfbG9uZyAqaWFfcHJlZmVyZWRfbGlmZXRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgKmlhX3ZhbGlkX2xpZmV0aW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICppYV9vbmxpbmtfZmxhZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciAqaWFfYXV0b25vbW91c19mbGFnKTsKIAoraW50IG5ldHNubXBfaXBhZGRyZXNzX3ByZWZpeF9vcmlnaW5fY29weSh1X2xvbmcgKmlwQWRkcmVzc1ByZWZpeE9yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIGlhX29yaWdpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2xvbmcgaXBBZGRyZXNzQWRkclR5cGUpOwogCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL2lwc3RhdHMuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCmluZGV4IDIxNjE0NDUuLmY3ODI0NTkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvaXBzdGF0cy5oCkBAIC0xMCw2ICsxMCw0MCBAQAogZXh0ZXJuICAgICAgICAgICJDIiB7CiAjZW5kaWYKIAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENJTlJFQ0VJVkVTICAgICAgIDEKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDSU5PQ1RFVFMgICAgICAgICAyCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9JTkhEUkVSUk9SUyAgICAgICAgMworI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk5PUk9VVEVTICAgICAgIDQgCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9JTkFERFJFUlJPUlMgICAgICAgNQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSU5VTktOT1dOUFJPVE9TICAgIDYKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0lOVFJVTkNBVEVEUEtUUyAgICA3CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lORk9SV0RBVEFHUkFNUyAgOCAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNUkVRRFMgICAgICAgICA5CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9SRUFTTU9LUyAgICAgICAgICAgMTAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX1JFQVNNRkFJTFMgICAgICAgICAxMQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSU5ESVNDQVJEUyAgICAgICAgIDEyCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOREVMSVZFUlMgICAgICAgMTMKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUUkVRVUVTVFMgICAgICAxNAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVROT1JPVVRFUyAgICAgIDE1CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZPUldEQVRBR1JBTVMgMTYKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURElTQ0FSRFMgICAgICAxNworI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHUkVRRFMgICAgIDE4CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVEZSQUdPS1MgICAgICAgMTkKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VURlJBR0ZBSUxTICAgICAyMAorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRGUkFHQ1JFQVRFUyAgIDIxCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ09VVFRSQU5TTUlUUyAgICAgMjIKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUT0NURVRTICAgICAgICAyMworI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENJTk1DQVNUUEtUUyAgICAgIDI0CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOTUNBU1RPQ1RFVFMgICAgMjUKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUTUNBU1RQS1RTICAgICAyNgorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfSENPVVRNQ0FTVE9DVEVUUyAgIDI3CisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9IQ0lOQkNBU1RQS1RTICAgICAgMjgKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0hDT1VUQkNBU1RQS1RTICAgICAyOQorI2RlZmluZSBJUFNZU1RFTVNUQVRTVEFCTEVfRElTQ09OVElOVUlUWVRJTUUgIDMwCisjZGVmaW5lIElQU1lTVEVNU1RBVFNUQUJMRV9SRUZSRVNIUkFURSAgICAgICAgMzEKKyAgICAKKyNkZWZpbmUgSVBTWVNURU1TVEFUU1RBQkxFX0xBU1QgSVBTWVNURU1TVEFUU1RBQkxFX1JFRlJFU0hSQVRFCisgICAgCiAvKiotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogLyoKICAqIHN0cnVjdHVyZSBkZWZpbml0aW9ucwpAQCAtMjAsMjggKzU0LDQyIEBACiAgKi8KIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfaXBzdGF0c19zIHsKIAorICAgLyogQ29sdW1ucyBvZiBpcFN0YXRzVGFibGUuIFNvbWUgb2YgdGhlbSBhcmUgSEMgZm9yIGNvbXB1dGF0aW9uIG9mIHRoZSAKKyAgICAqIG90aGVyIGNvbHVtbnMsIHdoZW4gdW5kZXJseWluZyBPUyBkb2VzIG5vdCBwcm92aWRlIHRoZW0uCisgICAgKiBBbHdheXMgZmlsbCBhdCBsZWFzdCAzMiBiaXRzLCB0aGUgdGFibGUgaXMgcGVyaW9kaWNhbGx5IHBvbGxlZCAtPiAzMiBiaXQKKyAgICAqIG92ZXJmbG93IHNoYWxsIGJlIGRldGVjdGVkIGFuZCA2NCBiaXQgdmFsdWUgc2hvdWxkIGJlIGNvbXB1dGVkIGF1dG9tYXRpY2FsbHkuICovCiAgICBVNjQgICAgICAgICAgICAgSENJblJlY2VpdmVzOwogICAgVTY0ICAgICAgICAgICAgIEhDSW5PY3RldHM7CiAgICB1X2xvbmcgICAgICAgICAgSW5IZHJFcnJvcnM7Ci0gICB1X2xvbmcgICAgICAgICAgSW5Ob1JvdXRlczsKKyAgIFU2NCAgICAgICAgICAgICBIQ0luTm9Sb3V0ZXM7IAogICAgdV9sb25nICAgICAgICAgIEluQWRkckVycm9yczsKICAgIHVfbG9uZyAgICAgICAgICBJblVua25vd25Qcm90b3M7CiAgICB1X2xvbmcgICAgICAgICAgSW5UcnVuY2F0ZWRQa3RzOwotICAgVTY0ICAgICAgICAgICAgIEhDSW5Gb3J3RGF0YWdyYW1zOworICAgCisgICAvKiBvcHRpb25hbCwgY2FuIGJlIGNvbXB1dGVkIGZyb20gSENJbk5vUm91dGVzIGFuZCBIQ091dEZvcndEYXRhZ3JhbXMgKi8KKyAgIFU2NCAgICAgICAgICAgICBIQ0luRm9yd0RhdGFncmFtczsgCisgICAKICAgIHVfbG9uZyAgICAgICAgICBSZWFzbVJlcWRzOwogICAgdV9sb25nICAgICAgICAgIFJlYXNtT0tzOwogICAgdV9sb25nICAgICAgICAgIFJlYXNtRmFpbHM7CiAgICB1X2xvbmcgICAgICAgICAgSW5EaXNjYXJkczsKICAgIFU2NCAgICAgICAgICAgICBIQ0luRGVsaXZlcnM7CiAgICBVNjQgICAgICAgICAgICAgSENPdXRSZXF1ZXN0czsKLSAgIHVfbG9uZyAgICAgICAgICBPdXROb1JvdXRlczsKKyAgIFU2NCAgICAgICAgICAgICBIQ091dE5vUm91dGVzOwogICAgVTY0ICAgICAgICAgICAgIEhDT3V0Rm9yd0RhdGFncmFtczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXREaXNjYXJkczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXRGcmFnUmVxZHM7Ci0gICB1X2xvbmcgICAgICAgICAgT3V0RnJhZ09LczsKLSAgIHVfbG9uZyAgICAgICAgICBPdXRGcmFnRmFpbHM7Ci0gICB1X2xvbmcgICAgICAgICAgT3V0RnJhZ0NyZWF0ZXM7CisgICBVNjQgICAgICAgICAgICAgSENPdXREaXNjYXJkczsKKyAgIAorICAgLyogb3B0aW9uYWwsIGNhbiBiZSBjb21wdXRlZCBmcm9tIEhDT3V0RnJhZ09LcyArIEhDT3V0RnJhZ0ZhaWxzKi8KKyAgIFU2NCAgICAgICAgICAgICBIQ091dEZyYWdSZXFkczsKKyAgIFU2NCAgICAgICAgICAgICBIQ091dEZyYWdPS3M7CisgICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnRmFpbHM7CisgICBVNjQgICAgICAgICAgICAgSENPdXRGcmFnQ3JlYXRlczsKKyAgIAorICAgLyogb3B0aW9uYWwsIGNhbiBiZSBjb21wdXRlZCBmcm9tIAorICAgICogSENPdXRSZXF1ZXN0cyArSENPdXRGb3J3RGF0YWdyYW1zICsgSENPdXRGcmFnQ3JlYXRlcworICAgICogLSBIQ091dEZyYWdSZXFkcyAtIEhDT3V0Tm9Sb3V0ZXMgIC0gSENPdXREaXNjYXJkcyAqLwogICAgVTY0ICAgICAgICAgICAgIEhDT3V0VHJhbnNtaXRzOworICAgCiAgICBVNjQgICAgICAgICAgICAgSENPdXRPY3RldHM7CiAgICBVNjQgICAgICAgICAgICAgSENJbk1jYXN0UGt0czsKICAgIFU2NCAgICAgICAgICAgICBIQ0luTWNhc3RPY3RldHM7CkBAIC01MCw2ICs5OCw4IEBACiAgICBVNjQgICAgICAgICAgICAgSENJbkJjYXN0UGt0czsKICAgIFU2NCAgICAgICAgICAgICBIQ091dEJjYXN0UGt0czsKIAorICAgLyogQXJyYXkgb2YgYXZhaWxhYmxlIGNvbHVtbnMuKi8KKyAgIGludCAgICAgICAgICAgICBjb2x1bW5BdmFpbFtJUFNZU1RFTVNUQVRTVEFCTEVfTEFTVCsxXTsKIH0gbmV0c25tcF9pcHN0YXRzOwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc2NvcGV6b25lLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNWM4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3Njb3Blem9uZS5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBzY29wZXpvbmUgZGF0YSBhY2Nlc3MgaGVhZGVyCisgKgorICogJElkOiBzY29wZXpvbmUuaCAxNDE3MCAyMDA3LTA0LTI5IDAyOjIyOjEyWiB2YXJ1bl9jICQKKyAqLworI2lmbmRlZiBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfSAorI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMKKyAqCisgKgorICogTk9URTogaWYgeW91IGFkZCBmaWVsZHMsIHVwZGF0ZSBjb2RlIGRlYWxpbmcgd2l0aAorICogICAgICAgdGhlbSBpbiBpcHY2c2NvcGV6b25lX2NvbW1vbi5jCisgKi8KK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnlfcyB7CisgICAgbmV0c25tcF9pbmRleCBvaWRfaW5kZXg7CisgICAgb2lkICAgICAgICAgICBuc19zY29wZXpvbmVfaW5kZXg7CisgICAgdV9pbnQgICBuc19mbGFnczsgLyogbmV0LXNubXAgZmxhZ3MgKi8KKyAgICBvaWQgICAgIGluZGV4OworICAgIGludCAgICAgc2NvcGV6b25lX2xpbmtsb2NhbDsgICAgCisKK30gbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeTsKKworLyoqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy8qCisgKiBBQ0NFU1MgZnVuY3Rpb24gcHJvdG90eXBlcworICovCisKKy8qCisgKiBzY29wZXpvbmUgY29udGFpbmVyIGluaXQKKyAqLworbmV0c25tcF9jb250YWluZXIgKiBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2luaXQodV9pbnQgaW5pdF9mbGFncyk7CisKKy8qCisgKiBzY29wZXpvbmUgY29udGFpbmVyIGxvYWQgYW5kIGZyZWUKKyAqLworbmV0c25tcF9jb250YWluZXIqCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2ludCBsb2FkX2ZsYWdzKTsKKwordm9pZCBuZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZyZWVfZmxhZ3MpOworI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TQ09QRVpPTkVfRlJFRV9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCisjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9GUkVFX0RPTlRfQ0xFQVIgICAgICAgICAgICAweDAwMDEKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU0NPUEVaT05FX0ZSRUVfS0VFUF9DT05UQUlORVIgICAgICAgIDB4MDAwMgorCisKKy8qCisgKiBjcmVhdGUvZnJlZSBhbiBzY29wZXpvbmUgZW50cnkKKyAqLworbmV0c25tcF92NnNjb3Blem9uZV9lbnRyeSAqCituZXRzbm1wX2FjY2Vzc19zY29wZXpvbmVfZW50cnlfY3JlYXRlKHZvaWQpOworCit2b2lkIG5ldHNubXBfYWNjZXNzX3Njb3Blem9uZV9lbnRyeV9mcmVlKG5ldHNubXBfdjZzY29wZXpvbmVfZW50cnkgKiBlbnRyeSk7CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8qIE5FVFNOTVBfQUNDRVNTX1NDT1BFWk9ORV9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3aW5zdC5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTI4ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zd2luc3QuaApAQCAtMCwwICsxLDc3IEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgTkVUU05NUF9TV0lOU1RfSAorI2RlZmluZSBORVRTTk1QX1NXSU5TVF9ICisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKyAgICAvKgorICAgICAqIERhdGEgc3RydWN0dXJlIGZvciBhIHN3aW5zdCBlbnRyeSAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBoclNXSW5zdGFsbGVkVGFibGVfZW50cnkgeworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2luZGV4OworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5kZXggdmFsdWVzOyBNSUIgdHlwZSBpcyBpbnQzMiwgYnV0IHdlIHVzZSBvaWQgc28gdGhpcworICAgICAgICAgKiBzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQgZGlyZWN0bHkgd2l0aCBhIHRhYmxlX2NvbnRhaW5lci4KKyAgICAgICAgICovCisgICAgICAgIG9pZCAgICAgICAgICAgICBzd0luZGV4OworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogQ29sdW1uIHZhbHVlcyAKKyAgICAgICAgICovCisgICAgICAgIGNoYXIgICAgICAgICAgICBzd05hbWVbNjRdOworICAgICAgICBjaGFyICAgICAgICAgICAgc3dEYXRlWzExXTsKKyNpZmRlZiBORVRTTk1QX0hBVkVfU1dJRAorICAgICAgICBvaWQgICAgICAgICAgICAqc3dJRDsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIHN3SURfbGVuOworI2VuZGlmCisgICAgICAgIHVfY2hhciAgICAgICAgICBzd1R5cGU7CisgICAgICAgIHVfY2hhciAgICAgICAgICBzd05hbWVfbGVuOworICAgICAgICB1X2NoYXIgICAgICAgICAgc3dEYXRlX2xlbjsKKyAgICB9IG5ldHNubXBfc3dpbnN0X2VudHJ5OworICAgIAorI2RlZmluZSBIUlNXSU5TVEFMTEVEVFlQRV9VTktOT1dOICAxCisjZGVmaW5lIEhSU1dJTlNUQUxMRURUWVBFX09QRVJBVElOR1NZU1RFTSAgMgorI2RlZmluZSBIUlNXSU5TVEFMTEVEVFlQRV9ERVZJQ0VEUklWRVIgIDMKKyNkZWZpbmUgSFJTV0lOU1RBTExFRFRZUEVfQVBQTElDQVRJT04gIDQKKworCisjZGVmaW5lIE5FVFNOTVBfU1dJTlNUX05PRkxBR1MgICAgICAgICAgICAweDAwMDAwMDAwCisKKyNkZWZpbmUgTkVUU05NUF9TV0lOU1RfQUxMX09SX05PTkUgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTkVUU05NUF9TV0lOU1RfRE9OVF9GUkVFX0lURU1TICAgIDB4MDAwMDAwMDIKKworICAgIG5ldHNubXBfY29udGFpbmVyICoKKyAgICBuZXRzbm1wX3N3aW5zdF9jb250YWluZXJfbG9hZChuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyLCBpbnQgZmxhZ3MgKTsKKworICAgIHZvaWQgbmV0c25tcF9zd2luc3RfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKKyAgICB2b2lkIG5ldHNubXBfc3dpbnN0X2NvbnRhaW5lcl9mcmVlX2l0ZW1zKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIpOworCisgICAgdm9pZCBuZXRzbm1wX3N3aW5zdF9lbnRyeV9yZW1vdmUobmV0c25tcF9jb250YWluZXIgKiBjb250YWluZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zd2luc3RfZW50cnkgKmVudHJ5KTsKKworICAgIG5ldHNubXBfc3dpbnN0X2VudHJ5ICogbmV0c25tcF9zd2luc3RfZW50cnlfY3JlYXRlKGludDMyX3QgaW5kZXgpOworICAgIHZvaWQgbmV0c25tcF9zd2luc3RfZW50cnlfZnJlZShuZXRzbm1wX3N3aW5zdF9lbnRyeSAqZW50cnkpOworCisgICAgaW50MzJfdCBuZXRzbm1wX3N3aW5zdF9hZGRfbmFtZShjb25zdCBjaGFyICpuYW1lKTsKKyAgICBpbnQzMl90IG5ldHNubXBfc3dpbnN0X2dldF9pZChjb25zdCBjaGFyICpuYW1lKTsKKyAgICBjb25zdCBjaGFyICogbmV0c25tcF9zd2luc3RfZ2V0X25hbWUoaW50MzJfdCBpZCk7CisKKyNpZmRlZiAgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisKKyNlbmRpZiAvKiBORVRTTk1QX1NXSU5TVF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmggYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N3cnVuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UxNWM0MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3dydW4uaApAQCAtMCwwICsxLDEwNCBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaWZuZGVmIE5FVFNOTVBfU1dSVU5fSAorI2RlZmluZSBORVRTTk1QX1NXUlVOX0gKKworI2lmZGVmICBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworCisgICAgLyotKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAgICAgKgorICAgICAqIERhdGEgc3RydWN0dXJlIGZvciBhIHJvdyBlbnRyeSAKKyAgICAgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBoclNXUnVuVGFibGVfZW50cnkgeworICAgICAgICBuZXRzbm1wX2luZGV4ICAgb2lkX2luZGV4OworICAgICAgICAKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5kZXggdmFsdWVzIAorICAgICAgICAgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIGhyU1dSdW5JbmRleDsKKyAgICAgICAgCisgICAgICAgIC8qCisgICAgICAgICAqIENvbHVtbiB2YWx1ZXMgCisgICAgICAgICAqLworICAgICAgICBjaGFyICAgICAgICAgICAgaHJTV1J1bk5hbWVbIDY0KzFdOyAgLyogc2l6ZSBwZXIgTUlCICsgMSAqLworICAgICAgICBjaGFyICAgICAgICAgICAgaHJTV1J1blBhdGhbMTI4KzFdOyAgLyogc2l6ZSBwZXIgTUlCICsgMSAqLworICAgICAgICBjaGFyICAgICAgICAgICAgaHJTV1J1blBhcmFtZXRlcnNbMTI4KzFdOyAvKiBzaXplIHBlciBNSUIgKyAxICovCisjaWZkZWYgTkVUU05NUF9TV1JVTl9IQVZFX0lEICAvKiBpZiBub3QgZGVmaW5lZCwgd2lsbCBhbHdheXMgdXNlIG51bGxPaWQgKi8KKyAgICAgICAgb2lkICAgICAgICAgICAgIGhyU1dSdW5JRFtTTk1QX01BWE9JRF07CisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuSURfbGVuOworI2VuZGlmCisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuTmFtZV9sZW47CisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuUGF0aF9sZW47CisgICAgICAgIHVfY2hhciAgICAgICAgICBoclNXUnVuUGFyYW1ldGVyc19sZW47CisKKyAgICAgICAgdV9jaGFyICAgICAgICAgIGhyU1dSdW5UeXBlOworICAgICAgICB1X2NoYXIgICAgICAgICAgaHJTV1J1blN0YXR1czsKKyAgICAgICAgdV9jaGFyICAgICAgICAgIG9sZF9oclNXUnVuU3RhdHVzOworCisgICAgICAgIC8qCisgICAgICAgICAqIFBlcmYgdmFsdWVzCisgICAgICAgICAqLworICAgICAgICBpbnQzMl90ICAgICAgICAgaHJTV1J1blBlcmZDUFU7CisgICAgICAgIGludDMyX3QgICAgICAgICBoclNXUnVuUGVyZk1lbTsKKyAgICAgICAgCisgICAgfSBuZXRzbm1wX3N3cnVuX2VudHJ5OworCisgICAgLyoKKyAgICAgKiBlbnVtcyBmb3IgY29sdW1uIGhyU1dSdW5UeXBlCisgICAgICovCisjZGVmaW5lIEhSU1dSVU5UWVBFX1VOS05PV04gICAgICAgICAgICAgMQorI2RlZmluZSBIUlNXUlVOVFlQRV9PUEVSQVRJTkdTWVNURU0gICAgIDIKKyNkZWZpbmUgSFJTV1JVTlRZUEVfREVWSUNFRFJJVkVSICAgICAgICAzCisjZGVmaW5lIEhSU1dSVU5UWVBFX0FQUExJQ0FUSU9OICAgICAgICAgNAorCisgICAgLyoKKyAgICAgKiBlbnVtcyBmb3IgY29sdW1uIGhyU1dSdW5TdGF0dXMKKyAgICAgKi8KKyNkZWZpbmUgSFJTV1JVTlNUQVRVU19SVU5OSU5HICAgICAgICAgICAxCisjZGVmaW5lIEhSU1dSVU5TVEFUVVNfUlVOTkFCTEUgICAgICAgICAgMgorI2RlZmluZSBIUlNXUlVOU1RBVFVTX05PVFJVTk5BQkxFICAgICAgIDMKKyNkZWZpbmUgSFJTV1JVTlNUQVRVU19JTlZBTElEICAgICAgICAgICA0CisKKyAgICAvKi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogUHJvdG90eXBlcworICAgICAqLworICAgIG5ldHNubXBfY29udGFpbmVyICoKKyAgICBuZXRzbm1wX3N3cnVuX2NvbnRhaW5lcl9sb2FkKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIHVfaW50IGZsYWdzICk7CisKKyAgICB2b2lkIG5ldHNubXBfc3dydW5fY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciwgdV9pbnQgZmxhZ3MpOworICAgIHZvaWQgbmV0c25tcF9zd3J1bl9jb250YWluZXJfZnJlZV9pdGVtcyhuZXRzbm1wX2NvbnRhaW5lciAqIGNvbnRhaW5lcik7CisKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5ICoKKyAgICBuZXRzbm1wX3N3cnVuX2VudHJ5X2NyZWF0ZShpbnQzMl90IHN3SW5kZXgpOworCisgICAgdm9pZCBuZXRzbm1wX3N3cnVuX2VudHJ5X2ZyZWUobmV0c25tcF9zd3J1bl9lbnRyeSAqZW50cnkpOworCisgICAgaW50ICBzd3J1bl9jb3VudF9wcm9jZXNzZXMoIHZvaWQgKTsKKyAgICBpbnQgIHN3cnVuX21heF9wcm9jZXNzZXMoICAgdm9pZCApOworICAgIGludCAgc3dydW5fY291bnRfcHJvY2Vzc2VzX2J5X25hbWUoIGNoYXIgKm5hbWUgKTsKKworI2RlZmluZSBORVRTTk1QX1NXUlVOX05PRkxBR1MgICAgICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIE5FVFNOTVBfU1dSVU5fQUxMX09SX05PTkUgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgTkVUU05NUF9TV1JVTl9ET05UX0ZSRUVfSVRFTVMgICAgMHgwMDAwMDAwMgorLyojZGVmaW5lIE5FVFNOTVBfU1dSVU5feHggICAgICAgICAgICAgICAgMHgwMDAwMDAwNCAqLworCisjaWZkZWYgIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworCisjZW5kaWYgLyogTkVUU05NUF9TV1JVTl9IICovCisKKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oIGIvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy9zeXN0ZW1zdGF0cy5oCmluZGV4IDQzODIzOTcuLjFiYWFjZDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3Mvc3lzdGVtc3RhdHMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3N5c3RlbXN0YXRzLmgKQEAgLTIyLDcgKzIyLDExIEBACiB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3N5c3RlbXN0YXRzX3MgewogCiAgICBuZXRzbm1wX2luZGV4IG9pZF9pbmRleDsgICAvKiBNVVNUIEJFIEZJUlNUISEgZm9yIGNvbnRhaW5lciB1c2UgKi8KLSAgIG9pZCAgICAgICAgICAgbnNfaXBfdmVyc2lvbjsKKyAgIC8qIAorICAgICogSW5kZXggb2YgdGhlIHRhYmxlCisgICAgKiBGaXJzdCBlbnRyeSA9IGlwIHZlcnNpb24KKyAgICAqIFNlY29uZCBlbnRyeSA9IGludGVyZmFjZSBpbmRleCAoMCBmb3IgaXBTeXN0ZW1TdGF0c1RhYmxlICovCisgICBvaWQgICAgICAgICAgIGluZGV4WzJdOyAgICAgICAgICAgCiAKICAgIGludCAgICAgICBmbGFnczsgLyogZm9yIG5ldC1zbm1wIHVzZSAqLwogCkBAIC00OSwxMyArNTMsMTUgQEAKICNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfSU5JVF9OT0ZMQUdTICAgICAgICAgICAgICAgMHgwMDAwCiAjZGVmaW5lIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0lOSVRfQURETF9JRFhfQllfQUREUiAgICAgIDB4MDAwMQogCi0vKgotICogbG9hZCBhbmQgZnJlZQorLyoqCisgKiBMb2FkIGNvbnRhaW5lci4gSWYgdGhlIE5FVFNOTVBfQUNDRVNTX1NZU1RFTVNUQVRTX0xPQURfSUZUQUJMRSBpcyBzZXQKKyAqIHRoZSBpcElmU3lzdGVtU3RhdHMgdGFibGUgaXMgbG9hZGVkLCBlbHNlIGlwU3lzdGVtU3RhdHNUYWJsZSBpcyBsb2FkZWQuCiAgKi8KIG5ldHNubXBfY29udGFpbmVyKgogbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfY29udGFpbmVyX2xvYWQobmV0c25tcF9jb250YWluZXIqIGNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGxvYWRfZmxhZ3MpOwogI2RlZmluZSBORVRTTk1QX0FDQ0VTU19TWVNURU1TVEFUU19MT0FEX05PRkxBR1MgICAgICAgICAgICAgICAweDAwMDAKKyNkZWZpbmUgTkVUU05NUF9BQ0NFU1NfU1lTVEVNU1RBVFNfTE9BRF9JRlRBQkxFICAgICAgICAgICAgICAgMHgwMDAxIAogCiB2b2lkIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZyZWVfZmxhZ3MpOwpAQCAtNjgsNyArNzQsNyBAQAogICogY3JlYXRlL2ZyZWUgYW4gZW50cnkKICAqLwogbmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqCi1uZXRzbm1wX2FjY2Vzc19zeXN0ZW1zdGF0c19lbnRyeV9jcmVhdGUoaW50IHZlcnNpb24pOworbmV0c25tcF9hY2Nlc3Nfc3lzdGVtc3RhdHNfZW50cnlfY3JlYXRlKGludCB2ZXJzaW9uLCBpbnQgaWZfaW5kZXgpOwogCiB2b2lkIG5ldHNubXBfYWNjZXNzX3N5c3RlbXN0YXRzX2VudHJ5X2ZyZWUobmV0c25tcF9zeXN0ZW1zdGF0c19lbnRyeSAqIGVudHJ5KTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaCBiL2luY2x1ZGUvbmV0LXNubXAvZGF0YV9hY2Nlc3MvdWRwX2VuZHBvaW50LmgKaW5kZXggNjQ3MDRkMi4uMzYyMzFlZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9kYXRhX2FjY2Vzcy91ZHBfZW5kcG9pbnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2RhdGFfYWNjZXNzL3VkcF9lbmRwb2ludC5oCkBAIC00MSw2ICs0MSw3IEBACiAgICAgICAgIHVfc2hvcnQgICBybXRfcG9ydDsKIAogICAgICAgICB1X2ludCAgICAgaW5zdGFuY2U7CisgICAgICAgIHVfaW50ICAgICBwaWQ7CiAgICAKICAgICB9IG5ldHNubXBfdWRwX2VuZHBvaW50X2VudHJ5OwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAppbmRleCBmMTMyZjNiLi40NmVkNDQxIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKQEAgLTQxLDkgKzQxLDExIEBACiAjaWZuZGVmIEVJR0hUQklUX1NVQklEUwogICAgIHR5cGVkZWYgdV9sb25nICBvaWQ7CiAjZGVmaW5lIE1BWF9TVUJJRCAgIDB4RkZGRkZGRkYKKyNkZWZpbmUgTkVUU05NUF9QUklvICJsIgogI2Vsc2UKICAgICB0eXBlZGVmIHVfY2hhciAgb2lkOwogI2RlZmluZSBNQVhfU1VCSUQgICAweEZGCisjZGVmaW5lIE5FVFNOTVBfUFJJbyAiIgogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAppbmRleCBhY2Q1ZDQwLi41NWJjYTE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaApAQCAtMjcsNiArMjcsOCBAQAogI2RlZmluZSBTTk1QX0NBTExCQUNLX1BPU1RfUFJFTUlCX1JFQURfQ09ORklHCTMKICNkZWZpbmUgU05NUF9DQUxMQkFDS19MT0dHSU5HCQkJNAogI2RlZmluZSBTTk1QX0NBTExCQUNLX1NFU1NJT05fSU5JVAkJNQorI2RlZmluZSBTTk1QX0NBTExCQUNLX1BSRV9SRUFEX0NPTkZJRwkgICAgICAgIDcKKyNkZWZpbmUgU05NUF9DQUxMQkFDS19QUkVfUFJFTUlCX1JFQURfQ09ORklHCTgKIAogCiAgICAgLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAppbmRleCBjNmE0MDdmLi4zMjQxYTFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCkBAIC0xLDMgKzEsMTMgQEAKKy8qIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvcHlyaWdodChzKS4gIFNlZQorICogdGhlIE5ldC1TTk1QJ3MgQ09QWUlORyBmaWxlIGZvciBtb3JlIGRldGFpbHMgYW5kIG90aGVyIGNvcHlyaWdodHMKKyAqIHRoYXQgbWF5IGFwcGx5OgorICovCisvKgorICogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBjb3B5cmlnaHRlZCBieToKKyAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLwogI2lmbmRlZiBORVRTTk1QX0NPTlRBSU5FUl9ICiAjZGVmaW5lIE5FVFNOTVBfQ09OVEFJTkVSX0gKIApAQCAtMjc2LDYgKzI4Niw5IEBACiAgICAgaW50IG5ldHNubXBfY29tcGFyZV9tZW0oY29uc3QgY2hhciAqIGxocywgc2l6ZV90IGxoc19sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIHJocywgc2l6ZV90IHJoc19sZW4pOwogCisgICAgLyoqIG5vIHN0cnVjdHVyZSwganVzdCAnY2hhciAqJyBwb2ludGVycyAqLworICAgIGludCBuZXRzbm1wX2NvbXBhcmVfZGlyZWN0X2NzdHJpbmcoY29uc3Qgdm9pZCAqIGxocywgY29uc3Qgdm9pZCAqIHJocyk7CisKICAgICAvKiogZm9yX2VhY2ggY2FsbGJhY2sgdG8gY2FsbCBmcmVlIG9uIGRhdGEgaXRlbSAqLwogICAgIHZvaWQgIG5ldHNubXBfY29udGFpbmVyX3NpbXBsZV9mcmVlKHZvaWQgKmRhdGEsIHZvaWQgKmNvbnRleHQpOwogCkBAIC0zOTksNyArNDEyLDggQEAKICAgICAgICAgICAgIHJjMiA9IHgtPnJlbW92ZSh4LGspOwogICAgICAgICAgICAgLyoqIGlnbm9yZSByZW1vdmUgZXJyb3JzIGlmIHRoZXJlIGlzIGEgZmlsdGVyIGluIHBsYWNlICovCiAgICAgICAgICAgICBpZiAoKHJjMikgJiYgKE5VTEwgPT0geC0+aW5zZXJ0X2ZpbHRlcikpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgcmVtb3ZlICglZClcbiIsIHJjMik7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyICclcycgcmVtb3ZlICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgeC0+Y29udGFpbmVyX25hbWUgPyB4LT5jb250YWluZXJfbmFtZSA6ICIiLCByYzIpOwogICAgICAgICAgICAgICAgIHJjID0gcmMyOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgeCA9IHgtPnByZXY7CkBAIC00MjIsMTIgKzQzNiwxNSBAQAogICAgICAgICAgICAgeCA9IHgtPm5leHQ7CiAgICAgICAgIHdoaWxlKHgpIHsKICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyICp0bXA7CisgICAgICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgICAgICAgdG1wID0geC0+cHJldjsKKyAgICAgICAgICAgIG5hbWUgPSB4LT5jb250YWluZXJfbmFtZTsKICAgICAgICAgICAgIGlmIChOVUxMICE9IHgtPmNvbnRhaW5lcl9uYW1lKQogICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh4LT5jb250YWluZXJfbmFtZSk7CiAgICAgICAgICAgICByYzIgPSB4LT5jZnJlZSh4KTsKICAgICAgICAgICAgIGlmIChyYzIpIHsKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgY2ZyZWUgKCVkKVxuIiwgcmMyKTsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyBjZnJlZSAoJWQpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyBuYW1lIDogIiIsIHJjMik7CiAgICAgICAgICAgICAgICAgcmMgPSByYzI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICB4ID0gdG1wOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKaW5kZXggM2E3ZTIzNy4uMzM2YThlOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCkBAIC0zOSw2ICszOSw3IEBACiAKICAgICBpbnQgbmV0c25tcF9iaW5hcnlfYXJyYXlfb3B0aW9uc19zZXQobmV0c25tcF9jb250YWluZXIgKmMsIGludCBzZXQsIHVfaW50IGZsYWdzKTsKIAorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKaW5kZXggYWVkNDM1YS4uOTJmZGViZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0yOSw3ICsyOSw3IEBACiAjZW5kaWYKIAogI2RlZmluZSBORVRTTk1QX0RTX01BWF9JRFMgMwotI2RlZmluZSBORVRTTk1QX0RTX01BWF9TVUJJRFMgNDAgICAgICAgIC8qIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOCAqLworI2RlZmluZSBORVRTTk1QX0RTX01BWF9TVUJJRFMgNDggICAgICAgIC8qIG5lZWRzIHRvIGJlIGEgbXVsdGlwbGUgb2YgOCAqLwogCiAgICAgLyoKICAgICAgKiBiZWdpbiBzdG9yYWdlIGRlZmluaXRpb25zIApAQCAtODgsMjMgKzg4LDMwIEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0RJU0FCTEVfUEVSU0lTVEVOVF9MT0FEICAzNSAvKiBkb24ndCBsb2FkIHBlcnNpc3RlbnQgZmlsZSAqLwogI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ESVNBQkxFX1BFUlNJU1RFTlRfU0FWRSAgMzYgLyogZG9uJ3Qgc2F2ZSBwZXJzaXN0ZW50IGZpbGUgKi8KICNkZWZpbmUgTkVUU05NUF9EU19MSUJfQVBQRU5EX0xPR0ZJTEVTICAgICAzNyAvKiBhcHBlbmQsIGRvbid0IG92ZXJ3cml0ZSwgbG9nIGZpbGVzICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX05PX0RJU0NPVkVSWSAgICAgICAgMzggLyogZG9uJ3Qgc3VwcG9ydCBSRkM1MzQzIGNvbnRleHRFbmdpbmVJRCBkaXNjb3ZlcnkgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfVFNNX1VTRV9QUkVGSVggICAgICAzOSAvKiBUU00ncyBzaW1wbGUgc2VjdXJpdHkgbmFtZSBtYXBwaW5nICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0FMTE9XX1NFTEZfU0lHTkVEICAgNDAgLyogQ2VydHMgZm9yIERUTFMgKi8KIAogICAgIC8qCiAgICAgICogbGlicmFyeSBpbnRlZ2VycyAKICAgICAgKi8KLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfTUlCX1dBUk5JTkdTICAwCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFQ0xFVkVMICAgICAgMQotI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TTk1QVkVSU0lPTiAgIDIKLSNkZWZpbmUgTkVUU05NUF9EU19MSUJfREVGQVVMVF9QT1JUICAzCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX09JRF9PVVRQVVRfRk9STUFUICA0Ci0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1BSSU5UX1NVRkZJWF9PTkxZICBORVRTTk1QX0RTX0xJQl9PSURfT1VUUFVUX0ZPUk1BVAorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9NSUJfV0FSTklOR1MgICAgICAgICAwCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFQ0xFVkVMICAgICAgICAgICAgIDEKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU05NUFZFUlNJT04gICAgICAgICAgMgorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9ERUZBVUxUX1BPUlQgICAgICAgICAzCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX09JRF9PVVRQVVRfRk9STUFUICAgIDQKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfUFJJTlRfU1VGRklYX09OTFkgICAgTkVUU05NUF9EU19MSUJfT0lEX09VVFBVVF9GT1JNQVQKICNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1RSSU5HX09VVFBVVF9GT1JNQVQgNQotI2RlZmluZSBORVRTTk1QX0RTX0xJQl9IRVhfT1VUUFVUX0xFTkdUSCA2Ci0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlNFTkRCVUYgICA3IC8qIHNlbmQgYnVmZmVyIChzZXJ2ZXIpICovCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlJFQ1ZCVUYgICA4IC8qIHJlY2VpdmUgYnVmZmVyIChzZXJ2ZXIpICovCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX0NMSUVOVFNFTkRCVUYgICA5IC8qIHNlbmQgYnVmZmVyIChjbGllbnQpICovCi0jZGVmaW5lIE5FVFNOTVBfRFNfTElCX0NMSUVOVFJFQ1ZCVUYgIDEwIC8qIHJlY2VpdmUgYnVmZmVyIChjbGllbnQpICovCi0KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfSEVYX09VVFBVVF9MRU5HVEggICAgNgorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9TRVJWRVJTRU5EQlVGICAgICAgICA3IC8qIHNlbmQgYnVmZmVyIChzZXJ2ZXIpICovCisjZGVmaW5lIE5FVFNOTVBfRFNfTElCX1NFUlZFUlJFQ1ZCVUYgICAgICAgIDggLyogcmVjZWl2ZSBidWZmZXIgKHNlcnZlcikgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfQ0xJRU5UU0VOREJVRiAgICAgICAgOSAvKiBzZW5kIGJ1ZmZlciAoY2xpZW50KSAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9DTElFTlRSRUNWQlVGICAgICAgIDEwIC8qIHJlY2VpdmUgYnVmZmVyIChjbGllbnQpICovCisjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfUEVSTSAgICAgMTEKKyNkZWZpbmUgTkVUU05NUF9EU19TU0hET01BSU5fRElSX1BFUk0gICAgICAxMgorI2RlZmluZSBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX1VTRVIgICAgIDEyCisjZGVmaW5lIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfR1JPVVAgICAgMTMKKyAgICAKICAgICAvKgogICAgICAqIHNwZWNpYWwgbWVhbmluZ3MgZm9yIHRoZSBkZWZhdWx0IFNOTVAgdmVyc2lvbiBzbG90IChORVRTTk1QX0RTX0xJQl9TTk1QVkVSU0lPTikgCiAgICAgICovCkBAIC0xNDMsNiArMTUwLDE1IEBACiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0FQUFRZUEVTICAgICAgICAgIDIwCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0tTTV9LRVlUQUIgICAgICAgIDIxCiAjZGVmaW5lIE5FVFNOTVBfRFNfTElCX0tTTV9TRVJWSUNFX05BTUUgIDIyCisvKiBmb3IgdGhlIGNsaWVudCAqLworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIgICAyMworI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QUklWICAyNAorI2RlZmluZSBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9DRVJUUyAyNQorLyogZm9yIHRoZSBzZXJ2ZXIgKi8KKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFVCICAgMjYKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfUFJJViAgMjcKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfQ0VSVFMgMjgKKyNkZWZpbmUgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCAgMjkKIAogICAgIC8qCiAgICAgICogZW5kIHN0b3JhZ2UgZGVmaW5pdGlvbnMgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTYyMGQwMAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaApAQCAtMCwwICsxLDQxIEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KKyNpZm5kZWYgTkVUU05NUF9ESVJfVVRJTFNfSAorI2RlZmluZSBORVRTTk1QX0RJUl9VVElMU19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICoKKyAgICAgKiBQcm90b3R5cGVzCisgICAgICovCisgICAgbmV0c25tcF9jb250YWluZXIgKiBuZXRzbm1wX2RpcmVjdG9yeV9jb250YWluZXJfcmVhZChuZXRzbm1wX2NvbnRhaW5lciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfaW50IGZsYWdzKTsKKyAgICB2b2lkIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9mcmVlKG5ldHNubXBfY29udGFpbmVyICpjKTsKKworICAgICAgICAKKworICAgIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICoKKyAgICAgKiBmbGFncworICAgICAqLworI2RlZmluZSBORVRTTk1QX0RJUl9SRUNVUlNFICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgxCisKKyAgICAKKyAgICAgICAgCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYgLyogTkVUU05NUF9ESVJfVVRJTFNfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKaW5kZXggNGI3MjQyZC4uMTRjZGY1MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZkX2V2ZW50X21hbmFnZXIuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oCkBAIC05MCw2ICs5MCwxMSBAQAogICovCiB2b2lkIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbyhpbnQgKm51bWZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcyk7CiAKK3ZvaWQgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMihpbnQgKm51bWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcyk7CisKIC8qCiAgKiBEaXNwYXRjaCBFeHRlcm5hbCBFdmVudHMKICAqCkBAIC0xMTUsNiArMTIwLDEwIEBACiAgKiBTaWRlIEVmZmVjdHM6IE5vbmUKICAqLwogdm9pZCBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cyhpbnQgKmNvdW50LCBmZF9zZXQgKnJlYWRmZHMsIGZkX3NldCAqd3JpdGVmZHMsIGZkX3NldCAqZXhjZXB0ZmRzKTsKK3ZvaWQgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMyKGludCAqY291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICp3cml0ZWZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMpOwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAppbmRleCAwZjRkNjkxLi5mNzBmZmU0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCkBAIC0xLDYgKzEsMTIgQEAKICNpZm5kZWYgX0dFVE9QVF9IXwogI2RlZmluZSBfR0VUT1BUX0hfIDEKIAorI2lmbmRlZiBORVRfU05NUF9DT05GSUdfSAorI2Vycm9yIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4gbXVzdCBiZSBpbmNsdWRlZCBiZWZvcmUgPG5ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0Lmg+LgorI2VuZGlmCisKKyNpZiAhZGVmaW5lZChIQVZFX0dFVE9QVF9IKQorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCkBAIC0xMiw0ICsxOCw3IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgorCisjZW5kaWYgLyogSEFWRV9HRVRPUFRfSCAqLworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZGRmMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCkBAIC0wLDAgKzEsMTY4IEBACisvKioKKyAqIEBmaWxlICBsYXJnZV9mZF9zZXQuaAorICoKKyAqIEBicmllZiBNYWNybydzIGFuZCBmdW5jdGlvbnMgZm9yIG1hbmlwdWxhdGlvbiBvZiBsYXJnZSBmaWxlIGRlc2NyaXB0b3Igc2V0cy4KKyAqLworCisKKyNpZm5kZWYgTEFSR0VfRkRfU0VUX0gKKyNkZWZpbmUgTEFSR0VfRkRfU0VUX0gKKworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKworI2lmZGVmIEhBVkVfU1lTX1NFTEVDVF9ICisjaW5jbHVkZSA8c3lzL3NlbGVjdC5oPgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKEhBVkVfV0lOU09DS19IKSAmJiAhZGVmaW5lZChfV0lOU09DS0FQSV8pICYmICFkZWZpbmVkKF9XSU5TT0NLX0gpCisjZXJyb3IgPHdpbnNvY2suaD4gb3IgPHdpbnNvY2syLmg+IG11c3QgaGF2ZSBiZWVuIGluY2x1ZGVkIGJlZm9yZSB0aGlzIGZpbGUuCisjZW5kaWYKKworCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKworCisvKioKKyAqIEFkZCBzb2NrZXQgZmQgdG8gdGhlIHNldCAqZmRzZXQgaWYgbm90IHlldCBwcmVzZW50LgorICogRW5sYXJnZXMgdGhlIHNldCBpZiBuZWNlc3NhcnkuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9MQVJHRV9GRF9TRVQoZmQsIGZkc2V0KSBcCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ZmQoZmQsIGZkc2V0KQorCisvKioKKyAqIFJlbW92ZSBzb2NrZXQgZmQgZnJvbSB0aGUgc2V0ICpmZHNldC4KKyAqIERvIG5vdGhpbmcgaWYgZmQgaXMgbm90IHByZXNlbnQgaW4gKmZkc2V0LgorICogRG8gbm90aGluZyBpZiBmZCA+PSBmZHNldC0+bGZzX3NldHNpemUuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9MQVJHRV9GRF9DTFIoZmQsIGZkc2V0KSBcCisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfY2xyKGZkLCBmZHNldCkKKworLyoqCisgKiBUZXN0IHdoZXRoZXIgc2V0ICpmZHNldCBjb250YWlucyBzb2NrZXQgZmQuCisgKiBFdmFsdWF0ZXMgdG8gemVybyAoZmFsc2UpIGlmIGZkID49IGZkc2V0LT5sZnNfc2V0c2l6ZS4KKyAqLworI2RlZmluZSBORVRTTk1QX0xBUkdFX0ZEX0lTU0VUKGZkLCBmZHNldCkgXAorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChmZCwgZmRzZXQpCisKKyNpZiAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisKKy8qKgorICogTnVtYmVyIG9mIGJ5dGVzIG5lZWRlZCB0byBzdG9yZSBhIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIGFzIGEKKyAqIHN0cnVjdCBmZF9zZXQuCisgKi8KKyNkZWZpbmUgTkVUU05NUF9GRF9TRVRfQllURVMoc2V0c2l6ZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc2l6ZW9mKGZkX3NldCkgKyAoKHNldHNpemUpID4gRkRfU0VUU0laRSA/ICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgKChzZXRzaXplKSAtIEZEX1NFVFNJWkUpICogc2l6ZW9mKFNPQ0tFVCkgOiAwKSkKKworLyoqIFJlbW92ZSBhbGwgc29ja2V0cyBmcm9tIHRoZSBzZXQgKmZkc2V0LiAqLworI2RlZmluZSBORVRTTk1QX0xBUkdFX0ZEX1pFUk8oZmRzZXQpIFwKKyAgICBkbyB7IChmZHNldCktPmxmc19zZXRwdHItPmZkX2NvdW50ID0gMDsgfSB3aGlsZSgwKQorCisKK3ZvaWQgICBuZXRzbm1wX2xhcmdlX2ZkX3NldGZkKCBTT0NLRVQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCk7Cit2b2lkICAgbmV0c25tcF9sYXJnZV9mZF9jbHIoICAgU09DS0VUIGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOworaW50ICAgIG5ldHNubXBfbGFyZ2VfZmRfaXNfc2V0KFNPQ0tFVCBmZCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmZkc2V0KTsKKworI2Vsc2UKKworLyoqCisgKiBTaXplIG9mIGEgc2luZ2xlIGVsZW1lbnQgb2YgdGhlIGFycmF5IHdpdGggZmlsZSBkZXNjcmlwdG9yIGJpdG1hc2tzLgorICoKKyAqIEFjY29yZGluZyB0byBTVVN2MiwgdGhpcyBhcnJheSBtdXN0IGhhdmUgdGhlIG5hbWUgZmRzX2JpdHMuIFNlZSBhbHNvCisgKiA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5ncm91cC5vcmcvb25saW5lcHVicy8wMDc5MDg3NzUveHNoL3N5c3RpbWUuaC5odG1sIj5UaGUgU2luZ2xlIFVOSVggU3BlY2lmaWNhdGlvbiwgVmVyc2lvbiAyLCAmbHQ7c3lzL3RpbWUuaCZndDs8L2E+LgorICovCisjZGVmaW5lIE5FVFNOTVBfRkRfTUFTS19TSVpFIHNpemVvZigoKGZkX3NldCopMCktPmZkc19iaXRzWzBdKQorCisvKiogTnVtYmVyIG9mIGJpdHMgaW4gb25lIGVsZW1lbnQgb2YgdGhlIGZkX3NldC5mZHNfYml0cyBhcnJheS4gKi8KKyNkZWZpbmUgTkVUU05NUF9CSVRTX1BFUl9GRF9NQVNLICg4ICogTkVUU05NUF9GRF9NQVNLX1NJWkUpCisKKy8qKiBOdW1iZXIgb2YgZWxlbWVudHMgbmVlZGVkIGZvciB0aGUgZmRzX2JpdHMgYXJyYXkuICovCisjZGVmaW5lIE5FVFNOTVBfRkRfU0VUX0VMRU1fQ09VTlQoc2V0c2l6ZSkgXAorICAgIChzZXRzaXplICsgTkVUU05NUF9CSVRTX1BFUl9GRF9NQVNLIC0gMSkgLyBORVRTTk1QX0JJVFNfUEVSX0ZEX01BU0sKKworLyoqCisgKiBOdW1iZXIgb2YgYnl0ZXMgbmVlZGVkIHRvIHN0b3JlIGEgbnVtYmVyIG9mIGZpbGUgZGVzY3JpcHRvcnMgYXMgYQorICogc3RydWN0IGZkX3NldC4KKyAqLworI2RlZmluZSBORVRTTk1QX0ZEX1NFVF9CWVRFUyhzZXRzaXplKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoc2l6ZW9mKGZkX3NldCkgKyAoKHNldHNpemUpID4gRkRfU0VUU0laRSA/ICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRkRfU0VUX0VMRU1fQ09VTlQoKHNldHNpemUpIC0gRkRfU0VUU0laRSkgXAorICAgICAgICAgICAgICAgICAgICAgICAqIE5FVFNOTVBfRkRfTUFTS19TSVpFIDogMCkpCisKKy8qKiBSZW1vdmUgYWxsIGZpbGUgZGVzY3JpcHRvcnMgZnJvbSB0aGUgc2V0ICpmZHNldC4gKi8KKyNkZWZpbmUgTkVUU05NUF9MQVJHRV9GRF9aRVJPKGZkc2V0KSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtZW1zZXQoKGZkc2V0KS0+bGZzX3NldHB0ciwgMCwgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgIE5FVFNOTVBfRkRfU0VUX0JZVEVTKChmZHNldCktPmxmc19zZXRzaXplKSk7ICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworCit2b2lkICAgbmV0c25tcF9sYXJnZV9mZF9zZXRmZCggaW50IGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOwordm9pZCAgIG5ldHNubXBfbGFyZ2VfZmRfY2xyKCAgIGludCBmZCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmZkc2V0KTsKK2ludCAgICBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCk7CisKKyNlbmRpZgorCisvKioKKyAqIEluaXRpYWxpemUgYSBuZXRzbm1wX2xhcmdlX2ZkX3NldCBzdHJ1Y3R1cmUuCisgKgorICogTm90ZTogdGhpcyBmdW5jdGlvbiBvbmx5IGluaXRpYWxpemVzIHRoZSBsZnNfc2V0c2l6ZSBhbmQgbGZzX3NldHB0cgorICogbWVtYmVycyBvZiBuZXRzbm1wX2xhcmdlX2ZkX3NldCwgbm90IHRoZSBmaWxlIGRlc2NyaXB0b3Igc2V0IGl0c2VsZi4KKyAqIFRoZSBmaWxlIGRlc2NyaXB0b3Igc2V0IG11c3QgYmUgaW5pdGlhbGl6ZWQgc2VwYXJhdGVseSwgZS5nLiB2aWEKKyAqIE5FVFNOTVBfTEFSR0VfRkRfQ0xSKCkuCisgKi8KK3ZvaWQgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpmZHNldCwgaW50IHNldHNpemUpOworCisvKioKKyAqIE1vZGlmeSB0aGUgc2l6ZSBvZiBhIGZpbGUgZGVzY3JpcHRvciBzZXQgYW5kIHByZXNlcnZlIHRoZSBmaXJzdAorICogbWluKGZkc2V0LT5sZnNfc2V0c2l6ZSwgc2V0c2l6ZSkgZmlsZSBkZXNjcmlwdG9ycy4KKyAqCisgKiBSZXR1cm5zIDEgdXBvbiBzdWNjZXNzIG9yIDAgaWYgbWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkLgorICovCitpbnQgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQsIGludCBzZXRzaXplKTsKKworLyoqCisgKiBTeW5jaHJvbm91cyBJL08gbXVsdGlwbGV4aW5nIGZvciBsYXJnZSBmaWxlIGRlc2NyaXB0b3Igc2V0cy4KKyAqCisgKiBPbiBQT1NJWCBzeXN0ZW1zLCBhbnkgZmlsZSBkZXNjcmlwdG9yIHNldCB3aXRoIHNpemUgYmVsb3cgbnVtZmRzIHdpbGwgYmUKKyAqIHJlc2l6ZWQgYmVmb3JlIGludm9raW5nIHNlbGVjdCgpLgorICoKKyAqIEBzZWUgU2VlIGFsc28gc2VsZWN0KDIpIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICovCitORVRTTk1QX0lNUE9SVAoraW50ICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3NlbGVjdChpbnQgbnVtZmRzLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqcmVhZGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCk7CisKKy8qKiBEZWFsbG9jYXRlIHRoZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQuICovCit2b2lkICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cChuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZmRzZXQpOworCisvKioKKyAqIENvcHkgYW4gZmRfc2V0IHRvIGEgbmV0c25tcF9sYXJnZV9mZF9zZXQgc3RydWN0dXJlLgorICoKKyAqIEBub3RlIGRzdCBtdXN0IGhhdmUgYmVlbiBpbml0aWFsaXplZCBiZWZvcmUgdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQuCisgKi8KK3ZvaWQgICBuZXRzbm1wX2NvcHlfZmRfc2V0X3RvX2xhcmdlX2ZkX3NldChuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmRfc2V0ICpzcmMpOworCisvKioKKyAqIENvcHkgYSBuZXRzbm1wX2xhcmdlX2ZkX3NldCBzdHJ1Y3R1cmUgaW50byBhbiBmZF9zZXQuCisgKgorICogQHJldHVybiAwIHVwb24gc3VjY2VzcywgLTEgd2hlbiBjb3B5aW5nIGZhaWxzIGJlY2F1c2UgKnNyYyBpcyB0b28gbGFyZ2UgdG8KKyAqICAgICAgICAgZml0IGludG8gKmRzdC4KKyAqLworaW50ICAgIG5ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KCAgICAgICAgICAgICAgZmRfc2V0ICpkc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnNyYyk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKworI2VuZGlmIC8qIExBUkdFX0ZEX1NFVF9IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKaW5kZXggZjdjOGJiYS4uMjk5ZjMxMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaApAQCAtMzQsNyArMzQsMTMgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+ICAgICAgICAgICAgICAvKiBmb3IgRklMRSAqLwogCi0jZGVmaW5lIE1JQiAxLCAzLCA2LCAxLCAyLCAxCisjaW5jbHVkZSA8bmV0LXNubXAvbWliX2FwaS5oPgorCisjZGVmaW5lIE5FVFNOTVBfTUlCMl9PSUQgMSwgMywgNiwgMSwgMiwgMQorCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisjZGVmaW5lIE1JQiBORVRTTk1QX01JQjJfT0lECisjZW5kaWYKIAogI2RlZmluZSBNSUJfSUZUWVBFX09USEVSCQkgICAgMQogI2RlZmluZSBNSUJfSUZUWVBFX1JFR1VMQVIxODIyCQkgICAgMgpAQCAtMTExLDI4ICsxMTcsMTkgQEAKICAgICBzdHJ1Y3QgdmFyaWFibGVfbGlzdDsKICAgICBzdHJ1Y3QgZW51bV9saXN0OwogCi0gICAgdm9pZCAgICAgICAgICAgIHByaW50X21pYihGSUxFICogZnApOwogICAgIHZvaWQgICAgICAgICAgICBwcmludF9hc2NpaV9kdW1wKEZJTEUgKik7Ci0gICAgaW50ICAgICAgICAgICAgIHJlYWRfb2JqaWQoY29uc3QgY2hhciAqLCBvaWQgKiwgc2l6ZV90ICopOwogICAgIHZvaWQgICAgICAgICAgICByZWdpc3Rlcl9taWJfaGFuZGxlcnModm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfc2V0X21pYl9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyKTsKICAgICBjaGFyICAgICAgICAgICAgKm5ldHNubXBfZ2V0X21pYl9kaXJlY3Rvcnkodm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfZml4dXBfbWliX2RpcmVjdG9yeSh2b2lkKTsKLSAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9pbml0X21pYih2b2lkKTsKLSNpZm5kZWYgTkVUU05NUF9DTEVBTl9OQU1FU1BBQ0UKLSAgICB2b2lkICAgICAgICAgICAgaW5pdF9taWIodm9pZCk7Ci0jZW5kaWYKLSAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fbWliKHZvaWQpOwotICAgIHZvaWQgICAgICAgICAgICBwcmludF9kZXNjcmlwdGlvbihvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIHZvaWQgICAgICAgICAgICBmcHJpbnRfZGVzY3JpcHRpb24oRklMRSAqLCBvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIGludCAgICAgICAgICAgICBzbnByaW50X2Rlc2NyaXB0aW9uKGNoYXIgKiwgc2l6ZV90LCBvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY19kZXNjcmlwdGlvbih1X2NoYXIgKiosIHNpemVfdCAqLCBzaXplX3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50LCBvaWQgKiwgc2l6ZV90LCBpbnQpOwotICAgIGludCAgICAgICAgICAgICBnZXRfbW9kdWxlX25vZGUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIG9pZCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICopOworICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX21pYmluZGV4X2xvYWQoIHZvaWQgKTsKKyAgICBjaGFyICogICAgICAgICAgbmV0c25tcF9taWJpbmRleF9sb29rdXAoIGNvbnN0IGNoYXIgKiApOworICAgIEZJTEUgKiAgICAgICAgICBuZXRzbm1wX21pYmluZGV4X25ldyggY29uc3QgY2hhciAqICk7CisgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX2Rlc2NyaXB0aW9uKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpOwogICAgIGludCAgICAgICAgICAgICBnZXRfd2lsZF9ub2RlKGNvbnN0IGNoYXIgKiwgb2lkICosIHNpemVfdCAqKTsKICAgICBpbnQgICAgICAgICAgICAgZ2V0X25vZGUoY29uc3QgY2hhciAqLCBvaWQgKiwgc2l6ZV90ICopOwotICAgIG9pZCAgICAgICAgICAgICpzbm1wX3BhcnNlX29pZChjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CiAgICAgc3RydWN0IHRyZWUgICAgKmdldF90cmVlKGNvbnN0IG9pZCAqLCBzaXplX3QsIHN0cnVjdCB0cmVlICopOwogICAgIHN0cnVjdCB0cmVlICAgICpnZXRfdHJlZV9oZWFkKHZvaWQpOwogICAgIHZvaWQgICAgICAgICAgICBzZXRfZnVuY3Rpb24oc3RydWN0IHRyZWUgKik7CkBAIC0xNTEsMjcgKzE0OCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICogaW5kZXhlcyk7CiAgICAgaW50ICAgICAgICAgICAgIGJ1aWxkX29pZF9zZWdtZW50KG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcik7CiAKLQotICAgIHZvaWQgICAgICAgICAgICBwcmludF92YXJpYWJsZShjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAorICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY192YXJpYWJsZSh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwogCi0gICAgdm9pZCAgICAgICAgICAgIGZwcmludF92YXJpYWJsZShGSUxFICogZnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwotCi0gICAgaW50ICAgICAgICAgICAgIHNucHJpbnRfdmFyaWFibGUoY2hhciAqYnVmLCBzaXplX3QgYnVmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKLQotICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY192YXJpYWJsZSh1X2NoYXIgKiogYnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYWxsb3dfcmVhbGxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvYmppZGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUpOwotCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORwogICAgIHN0cnVjdCB0cmVlICAgICoKICNlbHNlCkBAIC0xOTQsMzkgKzE3NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvYmppZGxlbik7CiAKLSAgICB2b2lkICAgICAgICAgICAgcHJpbnRfdmFsdWUoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwotCi0gICAgdm9pZCAgICAgICAgICAgIGZwcmludF92YWx1ZShGSUxFICogZnAsCisgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX3ZhbHVlKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7CiAKLSAgICBpbnQgICAgICAgICAgICAgc25wcmludF92YWx1ZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyaWFibGUpOwotCi0gICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX3ZhbHVlKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd19yZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9iamlkbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7Ci0KLQotICAgIHZvaWQgICAgICAgICAgICBwcmludF9vYmppZChjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKTsKLQotICAgIHZvaWQgICAgICAgICAgICBmcHJpbnRfb2JqaWQoRklMRSAqIGZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbik7Ci0KLSAgICBpbnQgICAgICAgICAgICAgc25wcmludF9vYmppZChjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOwotCiAgICAgaW50ICAgICAgICAgICAgIHNwcmludF9yZWFsbG9jX29iamlkKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCAqIG91dF9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBhbGxvd19yZWFsbG9jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9iamlkbGVuKTsKLQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKTsKIAogICAgIGludCAgICAgICAgICAgICBzcHJpbnRfcmVhbGxvY19ieV90eXBlKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICogb3V0X2xlbiwKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKaW5kZXggNzg1MTA2ZC4uZjViMGNkNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKQEAgLTQsNiArNCw5IEBACiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9taWJfYXBpLmg+CisKICAgICAvKgogICAgICAqIHBhcnNlLmgKICAgICAgKi8KQEAgLTcwLDMzICs3Myw2IEBACiAgICAgfTsKIAogICAgIC8qCi0gICAgICogQSBsaW5rZWQgbGlzdCBvZiBub2Rlcy4KLSAgICAgKi8KLSAgICBzdHJ1Y3Qgbm9kZSB7Ci0gICAgICAgIHN0cnVjdCBub2RlICAgICpuZXh0OwotICAgICAgICBjaGFyICAgICAgICAgICAqbGFiZWw7ICAvKiBUaGlzIG5vZGUncyAodW5pcXVlKSB0ZXh0dWFsIG5hbWUgKi8KLSAgICAgICAgdV9sb25nICAgICAgICAgIHN1YmlkOyAgLyogVGhpcyBub2RlJ3MgaW50ZWdlciBzdWJpZGVudGlmaWVyICovCi0gICAgICAgIGludCAgICAgICAgICAgICBtb2RpZDsgIC8qIFRoZSBtb2R1bGUgY29udGFpbmluZyB0aGlzIG5vZGUgKi8KLSAgICAgICAgY2hhciAgICAgICAgICAgKnBhcmVudDsgLyogVGhlIHBhcmVudCdzIHRleHR1YWwgbmFtZSAqLwotICAgICAgICBpbnQgICAgICAgICAgICAgdGNfaW5kZXg7ICAgICAgIC8qIGluZGV4IGludG8gdGNsaXN0ICgtMSBpZiBOQSkgKi8KLSAgICAgICAgaW50ICAgICAgICAgICAgIHR5cGU7ICAgLyogVGhlIHR5cGUgb2Ygb2JqZWN0IHRoaXMgcmVwcmVzZW50cyAqLwotICAgICAgICBpbnQgICAgICAgICAgICAgYWNjZXNzOwotICAgICAgICBpbnQgICAgICAgICAgICAgc3RhdHVzOwotICAgICAgICBzdHJ1Y3QgZW51bV9saXN0ICplbnVtczsgICAgICAgIC8qIChvcHRpb25hbCkgbGlzdCBvZiBlbnVtZXJhdGVkIGludGVnZXJzICovCi0gICAgICAgIHN0cnVjdCByYW5nZV9saXN0ICpyYW5nZXM7Ci0gICAgICAgIHN0cnVjdCBpbmRleF9saXN0ICppbmRleGVzOwotICAgICAgICBjaGFyICAgICAgICAgICAqYXVnbWVudHM7Ci0gICAgICAgIHN0cnVjdCB2YXJiaW5kX2xpc3QgKnZhcmJpbmRzOwotICAgICAgICBjaGFyICAgICAgICAgICAqaGludDsKLSAgICAgICAgY2hhciAgICAgICAgICAgKnVuaXRzOwotICAgICAgICBjaGFyICAgICAgICAgICAqZGVzY3JpcHRpb247ICAgIC8qIGRlc2NyaXB0aW9uIChhIHF1b3RlZCBzdHJpbmcpICovCi0gICAgICAgIGNoYXIgICAgICAgICAgICpyZWZlcmVuY2U7ICAgIC8qIHJlZmVyZW5jZXMgKGEgcXVvdGVkIHN0cmluZykgKi8KLSAgICAgICAgY2hhciAgICAgICAgICAgKmRlZmF1bHRWYWx1ZTsKLQljaGFyICAgICAgICAgICAqZmlsZW5hbWU7Ci0gICAgICAgIGludCAgICAgICAgICAgICBsaW5lbm87Ci0gICAgfTsKLQotICAgIC8qCiAgICAgICogQSB0cmVlIGluIHRoZSBmb3JtYXQgb2YgdGhlIHRyZWUgc3RydWN0dXJlIG9mIHRoZSBNSUIuCiAgICAgICovCiAgICAgc3RydWN0IHRyZWUgewpAQCAtMjA5LDIzICsxODUsMTMgQEAKICNkZWZpbmUJQU5PTgkiYW5vbnltb3VzIyIKICNkZWZpbmUJQU5PTl9MRU4gIHN0cmxlbihBTk9OKQogCi0gICAgc3RydWN0IHRyZWUgICAgKm5ldHNubXBfcmVhZF9tb2R1bGUoY29uc3QgY2hhciAqKTsKLSNpZm5kZWYgTkVUU05NUF9DTEVBTl9OQU1FU1BBQ0UKLSAgICBzdHJ1Y3QgdHJlZSAgICAqcmVhZF9tb2R1bGUoY29uc3QgY2hhciAqKTsKLSNlbmRpZgotICAgIHN0cnVjdCB0cmVlICAgICpyZWFkX21pYihjb25zdCBjaGFyICopOwotICAgIHN0cnVjdCB0cmVlICAgICpyZWFkX2FsbF9taWJzKHZvaWQpOwogICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3VubG9hZF9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSk7Ci0jaWZuZGVmIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCiAgICAgaW50ICAgICAgICAgICAgIHVubG9hZF9tb2R1bGUoY29uc3QgY2hhciAqbmFtZSk7Ci0gICAgdm9pZCAgICAgICAgICAgIGluaXRfbWliX2ludGVybmFscyh2b2lkKTsKICNlbmRpZgogICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2luaXRfbWliX2ludGVybmFscyh2b2lkKTsKICAgICB2b2lkICAgICAgICAgICAgdW5sb2FkX2FsbF9taWJzKHZvaWQpOwogICAgIGludCAgICAgICAgICAgICBhZGRfbWliZmlsZShjb25zdCBjaGFyKiwgY29uc3QgY2hhciosIEZJTEUgKik7Ci0gICAgaW50ICAgICAgICAgICAgIGFkZF9taWJkaXIoY29uc3QgY2hhciAqKTsKLSAgICB2b2lkICAgICAgICAgICAgYWRkX21vZHVsZV9yZXBsYWNlbWVudChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICosIGludCk7CiAgICAgaW50ICAgICAgICAgICAgIHdoaWNoX21vZHVsZShjb25zdCBjaGFyICopOwogICAgIGNoYXIgICAgICAgICAgICptb2R1bGVfbmFtZShpbnQsIGNoYXIgKik7CiAgICAgdm9pZCAgICAgICAgICAgIHByaW50X3N1YnRyZWUoRklMRSAqLCBzdHJ1Y3QgdHJlZSAqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAppbmRleCA3OGFmNTZlLi5kZDI4NDExIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaApAQCAtMTUsNyArMTUsNyBAQAogI2RlZmluZSBQUkVNSUJfQ09ORklHIDEKICNkZWZpbmUgRUlUSEVSX0NPTkZJRyAyCiAKLQorI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KIAogICAgIC8qCiAgICAgICogRGVmaW5lcyBhIHNldCBvZiBmaWxlIHR5cGVzIGFuZCB0aGUgcGFyc2UgYW5kIGZyZWUgZnVuY3Rpb25zCkBAIC00Nyw1MCArNDcsMjQgQEAKICAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9jb25maWdfcmVtZW1iZXIoY2hhciAqKTsgICAgLyogcHJvY2VzcyBsYXRlciwgZHVyaW5nIHNubXBfaW5pdCgpICovCiAgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX3Byb2Nlc3NfbWVtb3JpZXModm9pZCk7ICAgICAgLyogcnVuIGFsbCBtZW1vcmllcyB0aHJvdWdoIHBhcnNlciAqLwogICAgIHZvaWQgICAgICAgICAgICByZWFkX2NvbmZpZyhjb25zdCBjaGFyICosIHN0cnVjdCBjb25maWdfbGluZSAqLCBpbnQpOwotICAgIHZvaWQgICAgICAgICAgICByZWFkX2NvbmZpZ3Modm9pZCk7Ci0gICAgdm9pZCAgICAgICAgICAgIHJlYWRfcHJlbWliX2NvbmZpZ3Modm9pZCk7CiAgICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnX2ZpbGVzKGludCk7CiAgICAgdm9pZCAgICAgICAgICAgIGZyZWVfY29uZmlnKHZvaWQpOwotICAgIHZvaWQgICAgICAgICAgICBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKik7Ci0gICAgdm9pZCAgICAgICAgICAgIGNvbmZpZ19wd2Fybihjb25zdCBjaGFyICopOworI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDImJiBfX0dOVUNfTUlOT1JfXyA8IDgpCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yKGNvbnN0IGNoYXIgKiwgLi4uKTsKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9jb25maWdfd2Fybihjb25zdCBjaGFyICosIC4uLik7CisjZWxzZQorICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcihjb25zdCBjaGFyICosIC4uLikKKwlfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDEsIDIpKSk7CisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfY29uZmlnX3dhcm4oY29uc3QgY2hhciAqLCAuLi4pCisJX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLCAxLCAyKSkpOworI2VuZGlmCisKICAgICBjaGFyICAgICAgICAgICAqc2tpcF93aGl0ZShjaGFyICopOwogICAgIGNoYXIgICAgICAgICAgICpza2lwX25vdF93aGl0ZShjaGFyICopOwogICAgIGNoYXIgICAgICAgICAgICpza2lwX3Rva2VuKGNoYXIgKik7CiAgICAgY2hhciAgICAgICAgICAgKmNvcHlfbndvcmQoY2hhciAqLCBjaGFyICosIGludCk7CiAgICAgY2hhciAgICAgICAgICAgKmNvcHlfd29yZChjaGFyICosIGNoYXIgKik7ICAvKiBkbyBub3QgdXNlICovCiAgICAgdm9pZCAgICAgICAgICAgIHJlYWRfY29uZmlnX3dpdGhfdHlwZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gICAgc3RydWN0IGNvbmZpZ19saW5lICpyZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpwYXJzZXIpIChjb25zdCBjaGFyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgY2hhciAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikgKHZvaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqKTsKLSAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikgKGNvbnN0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICgqcmVsZWFzZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpLCBjb25zdCBjaGFyICopOwotICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcihjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCpyZWxlYXNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwotICAgIHN0cnVjdCBjb25maWdfbGluZSAqcmVnaXN0ZXJfYXBwX3ByZW5ldHNubXBfbWliX2hhbmRsZXIoY29uc3QgY2hhciAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKnBhcnNlcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqcmVsZWFzZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICopOwotICAgIHZvaWQgICAgICAgICAgICB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKLSAgICB2b2lkICAgICAgICAgICAgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqKTsKLSAgICB2b2lkICAgICAgICAgICAgdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzKHZvaWQpOwotICAgIHZvaWQgICAgICAgICAgICByZWFkX2NvbmZpZ19wcmludF91c2FnZShjb25zdCBjaGFyICpsZWFkKTsKICAgICBjaGFyICAgICAgICAgICAqcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcoY2hhciAqc2F2ZXRvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1X2NoYXIgKiBzdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKaW5kZXggYmZiNGM1Zi4uZDk1N2JiZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC0xOCw4ICsxOCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdXRjX29mZnNldF9ob3VycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB1dGNfb2Zmc2V0X21pbnV0ZXMpOwogCi0gICAgdV9jaGFyICAgICAgICAgKmRhdGVfbl90aW1lKHRpbWVfdCAqLCBzaXplX3QgKik7Ci0gICAgdGltZV90ICAgICAgICAgIGN0aW1lX3RvX3RpbWV0KGNoYXIgKik7CisgICAgdV9jaGFyICAgICAgICAgKmRhdGVfbl90aW1lKGNvbnN0IHRpbWVfdCAqLCBzaXplX3QgKik7CisgICAgdGltZV90ICAgICAgICAgIGN0aW1lX3RvX3RpbWV0KGNvbnN0IGNoYXIgKik7CiAKICAgICAvKgogICAgICAqIFRydWVWYWx1ZSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQWxpYXNEb21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2FmY2I1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBBbGlhc0RvbWFpbi5oCkBAIC0wLDAgKzEsMzIgQEAKKyNpZm5kZWYgX1NOTVBBTElBU0RPTUFJTl9ICisjZGVmaW5lIF9TTk1QQUxJQVNET01BSU5fSAorCisjaWZkZWYgTkVUU05NUF9UUkFOU1BPUlRfQUxJQVNfRE9NQUlOCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2FzbjEuaD4KKworLyoKKyAqIFNpbXBsZSBhbGlhc2VzIGZvciBjb21wbGV4IHRyYW5zcG9ydCBzdHJpbmdzIHRoYXQgY2FuIGJlIHNwZWNpZmllZAorICogdmlhIHRoZSBzbm1wLmNvbmYgZmlsZSBhbmQgdGhlICdhbGlhcycgdG9rZW4uCisgKi8KKworI2RlZmluZSBUUkFOU1BPUlRfRE9NQUlOX0FMSUFTX0lQCQkxLDMsNiwxLDIsMSwxMDAsMSw1CitORVRTTk1QX0lNUE9SVCBvaWQgbmV0c25tcF9zbm1wQUxJQVNEb21haW5bXTsKKworLyoKKyAqICJDb25zdHJ1Y3RvciIgZm9yIHRyYW5zcG9ydCBkb21haW4gb2JqZWN0LiAgCisgKi8KKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfYWxpYXNfY3Rvcih2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLypORVRTTk1QX1RSQU5TUE9SVF9BTElBU19ET01BSU4gKi8KKworI2VuZGlmLypfU05NUEFMSUFTRE9NQUlOX0gqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTJkZDE3Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBEVExTVURQRG9tYWluLmgKQEAgLTAsMCArMSw2MSBAQAorI2lmbmRlZiBfU05NUERUTFNVRFBET01BSU5fSAorI2RlZmluZSBfU05NUERUTFNVRFBET01BSU5fSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9hc24xLmg+CisKKyNpZiBIQVZFX1NZU19TT0NLRVRfSAorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgorI2VuZGlmCisKKyNkZWZpbmUgVFJBTlNQT1JUX0RPTUFJTl9EVExTX1VEUF9JUAkxLDMsNiwxLDQsMSw4MDcyLDMsMyw4CitORVRTTk1QX0lNUE9SVCBvaWQgbmV0c25tcERUTFNVRFBEb21haW5bXTsKKworbmV0c25tcF90cmFuc3BvcnQgKm5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpOworCisKKy8qCisgKiBDb252ZXJ0IGEgInRyYWRpdGlvbmFsIiBwZWVybmFtZSBpbnRvIGEgc29ja2FkZHJfaW4gc3RydWN0dXJlIHdoaWNoIGlzCisgKiB3cml0dGVuIHRvICphZGRyLiAgUmV0dXJucyAxIGlmIHRoZSBjb252ZXJzaW9uIHdhcyBzdWNjZXNzZnVsLCBvciAwIGlmIGl0CisgKiBmYWlsZWQuICAKKyAqLworCitpbnQgICAgICAgICAgICAgbmV0c25tcF9zb2NrYWRkcl9pbihzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwZWVybmFtZSwgaW50IHJlbW90ZV9wb3J0KTsKKworCisvKgorICogUmVnaXN0ZXIgYW55IGNvbmZpZ3VyYXRpb24gdG9rZW5zIHNwZWNpZmljIHRvIHRoZSBhZ2VudC4gIAorICovCisKK3ZvaWQgICAgICAgICAgICBuZXRzbm1wX2R0bHN1ZHBfYWdlbnRfY29uZmlnX3Rva2Vuc19yZWdpc3Rlcih2b2lkKTsKKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfZHRsc3VkcF9wYXJzZV9zZWN1cml0eShjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqcGFyYW0pOworCitpbnQgICAgICAgICAgICAgbmV0c25tcF9kdGxzdWRwX2dldFNlY05hbWUodm9pZCAqb3BhcXVlLCBpbnQgb2xlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW11bml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb21tdW5pdHlfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciAqKnNlY25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICoqY29udGV4dE5hbWUpOworCitpbnQgICAgICAgICAgICAgbmV0c25tcF9zb2NrX2J1ZmZlcl9zZXQoaW50IHMsIGludCBvcHRuYW1lLCBpbnQgbG9jYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNpemUpOworCisKKy8qCisgKiAiQ29uc3RydWN0b3IiIGZvciB0cmFuc3BvcnQgZG9tYWluIG9iamVjdC4gIAorICovCisKK3ZvaWQgICAgICAgICAgICBuZXRzbm1wX2R0bHN1ZHBfY3Rvcih2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZi8qX1NOTVBEVExTVURQRE9NQUlOX0gqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYxMDgxOAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1NIRG9tYWluLmgKQEAgLTAsMCArMSw0MSBAQAorI2lmbmRlZiBfU05NUFNTSERPTUFJTl9ICisjZGVmaW5lIF9TTk1QU1NIRE9NQUlOX0gKKworI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1NTSF9ET01BSU4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvYXNuMS5oPgorCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorCisvKgorICogVGhlIFNOTVAgb3ZlciBTU0ggb3ZlciBJUHY0IHRyYW5zcG9ydCBkb21haW4gaXMgaWRlbnRpZmllZCBieQorICogdHJhbnNwb3J0RG9tYWluU3NoSXB2NCBhcyBkZWZpbmVkIGluIFJGQyAzNDE5LgorICovCisKKyNkZWZpbmUgVFJBTlNQT1JUX0RPTUFJTl9TU0hfSVAJCTEsMyw2LDEsMiwxLDEwMCwxLDEwMAorTkVUU05NUF9JTVBPUlQgb2lkIG5ldHNubXBfc25tcFNTSERvbWFpbltdOworCituZXRzbm1wX3RyYW5zcG9ydCAqbmV0c25tcF9zc2hfdHJhbnNwb3J0KHN0cnVjdCBzb2NrYWRkcl9pbiAqYWRkciwgaW50IGxvY2FsKTsKKworLyoKKyAqICJDb25zdHJ1Y3RvciIgZm9yIHRyYW5zcG9ydCBkb21haW4gb2JqZWN0LiAgCisgKi8KKwordm9pZCAgICAgICAgICAgIG5ldHNubXBfc3NoX2N0b3Iodm9pZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qTkVUU05NUF9UUkFOU1BPUlRfU1NIX0RPTUFJTiAqLworCisjZW5kaWYvKl9TTk1QU1NIRE9NQUlOX0gqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKaW5kZXggNTQwYWRmNS4uNGVkNzU1OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCkBAIC01Miw2ICs1MiwxOCBAQAogCiB2b2lkICAgICAgICAgICAgbmV0c25tcF91ZHBfY3Rvcih2b2lkKTsKIAorLyoKKyAqIHByb3RlY3RlZC1pc2ggZnVuY3Rpb25zIHVzZWQgYnkgb3RoZXIgY29yZS1jb2RlCisgKi8KK2NoYXIgKm5ldHNubXBfdWRwX2ZtdGFkZHIobmV0c25tcF90cmFuc3BvcnQgKnQsIHZvaWQgKmRhdGEsIGludCBsZW4pOworI2lmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykgfHwgXAorICAgIGRlZmluZWQoSVBfUkVDVkRTVEFERFIpICYmICFkZWZpbmVkKF9NU0NfVkVSKQoraW50IG5ldHNubXBfdWRwX3JlY3Zmcm9tKGludCBzLCB2b2lkICpidWYsIGludCBsZW4sIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrbGVuX3QgKmZyb21sZW4sIHN0cnVjdCBpbl9hZGRyICpkc3RpcCk7CitpbnQgbmV0c25tcF91ZHBfc2VuZHRvKGludCBmZCwgc3RydWN0IGluX2FkZHIgKnNyY2lwLCBzdHJ1Y3Qgc29ja2FkZHIgKnJlbW90ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqZGF0YSwgaW50IGxlbik7CisjZW5kaWYKKwogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKaW5kZXggYzRlYTQ2NC4uNjgyNGE1YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKQEAgLTMxLDkgKzMxLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlbW90ZV9wb3J0KTsKIAogdm9pZCAgICAgICAgICAgIG5ldHNubXBfdWRwNl9hZ2VudF9jb25maWdfdG9rZW5zX3JlZ2lzdGVyKHZvaWQpOworTkVUU05NUF9JTVBPUlQKIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3VkcDZfcGFyc2Vfc2VjdXJpdHkoY29uc3QgY2hhciAqdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBhcmFtKTsKIAorTkVUU05NUF9JTVBPUlQKIGludCAgICAgICAgICAgICBuZXRzbm1wX3VkcDZfZ2V0U2VjTmFtZSh2b2lkICpvcGFxdWUsIGludCBvbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmNvbW11bml0eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29tbXVuaXR5X2xlbiwgY2hhciAqKnNlY25hbWUsCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCmluZGV4IDUxOTA5ZjcuLjVkOWU2MGMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCkBAIC00MSw5ICs0MSwyMCBAQAogCiB2b2lkICAgICAgICAgICAgbmV0c25tcF91bml4X2N0b3Iodm9pZCk7CiAKKy8qCisgKiBTdXBwb3J0IGZ1bmN0aW9ucworICovCit2b2lkICAgICAgICAgICAgbmV0c25tcF91bml4X2NyZWF0ZV9wYXRoX3dpdGhfbW9kZShpbnQgbW9kZSk7Cit2b2lkICAgICAgICAgICAgbmV0c25tcF91bml4X2RvbnRfY3JlYXRlX3BhdGgodm9pZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCisjZWxzZQorCisjZGVmaW5lIG5ldHNubXBfdW5peF9jcmVhdGVfcGF0aF93aXRoX21vZGUoeCkKKyNkZWZpbmUgbmV0c25tcF91bml4X2RvbnRfY3JlYXRlX3BhdGgoKQorCiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qTkVUU05NUF9UUkFOU1BPUlRfVU5JWF9ET01BSU4gKi8KIAogI2VuZGlmLypfU05NUFVOSVhET01BSU5fSCovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCmluZGV4IDJjYWQ5MmUuLmQwYmM5MDcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCkBAIC0yNCw2ICsyNCwxMSBAQAogICogQHsKICAqLwogCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC92YXJiaW5kX2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgorCiAjaWZuZGVmIERPTlRfU0hBUkVfRVJST1JfV0lUSF9PVEhFUl9USFJFQURTCiAjZGVmaW5lIFNFVF9TTk1QX0VSUk9SKHgpIHNubXBfZXJybm89KHgpCiAjZWxzZQpAQCAtNTcsMjU3ICs2Miw3IEBACiBTT0ZUV0FSRS4KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIAotLyoqIEB0eXBlZGVmIHN0cnVjdCB2YXJpYWJsZV9saXN0IG5ldHNubXBfdmFyaWFibGVfbGlzdAotICAgICogVHlwZWRlZnMgdGhlIHZhcmlhYmxlX2xpc3Qgc3RydWN0IGludG8gbmV0c25tcF92YXJpYWJsZV9saXN0ICovCi1zdHJ1Y3QgdmFyaWFibGVfbGlzdDsKLXR5cGVkZWYgc3RydWN0IHZhcmlhYmxlX2xpc3QgbmV0c25tcF92YXJpYWJsZV9saXN0Owogc3RydWN0IHRpbWV2YWw7Ci1zdHJ1Y3QgbmV0c25tcF90cmFuc3BvcnRfczsKLQotI2RlZmluZSBVU01fQVVUSF9LVV9MRU4gICAgIDMyCi0jZGVmaW5lIFVTTV9QUklWX0tVX0xFTiAgICAgMzIKLQotLyoqIEB0eXBlZGVmIHN0cnVjdCBzbm1wX3BkdSB0byBuZXRzbm1wX3BkdQotICAgICogVHlwZWRlZnMgdGhlIHNubXBfcGR1IHN0cnVjdCBpbnRvIG5ldHNubXBfcGR1ICovCi0vKiogQHN0cnVjdCBzbm1wX3BkdQotICogVGhlIHNubXAgcHJvdG9jb2wgZGF0YSB1bml0LgotICovCQotdHlwZWRlZiBzdHJ1Y3Qgc25tcF9wZHUgewotCi0gICAgLyoKLSAgICAgKiBQcm90b2NvbC12ZXJzaW9uIGluZGVwZW5kZW50IGZpZWxkcwotICAgICAqLwotICAgIC8qKiBzbm1wIHZlcnNpb24gKi8KLSAgICBsb25nICAgICAgICAgICAgdmVyc2lvbjsKLSAgICAvKiogVHlwZSBvZiB0aGlzIFBEVSAqLwkKLSAgICBpbnQgICAgICAgICAgICAgY29tbWFuZDsKLSAgICAvKiogUmVxdWVzdCBpZCAtIG5vdGU6IG5vdCBpbmNyZW1lbnRlZCBvbiByZXRyaWVzICovCi0gICAgbG9uZyAgICAgICAgICAgIHJlcWlkOyAgCi0gICAgLyoqIE1lc3NhZ2UgaWQgZm9yIFYzIG1lc3NhZ2VzIG5vdGU6IGluY3JlbWVudGVkIGZvciBlYWNoIHJldHJ5ICovCi0gICAgbG9uZyAgICAgICAgICAgIG1zZ2lkOwotICAgIC8qKiBVbmlxdWUgSUQgZm9yIGluY29taW5nIHRyYW5zYWN0aW9ucyAqLwotICAgIGxvbmcgICAgICAgICAgICB0cmFuc2lkOwotICAgIC8qKiBTZXNzaW9uIGlkIGZvciBBZ2VudFggbWVzc2FnZXMgKi8KLSAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOwotICAgIC8qKiBFcnJvciBzdGF0dXMgKG5vbl9yZXBlYXRlcnMgaW4gR2V0QnVsaykgKi8KLSAgICBsb25nICAgICAgICAgICAgZXJyc3RhdDsKLSAgICAvKiogRXJyb3IgaW5kZXggKG1heF9yZXBldGl0aW9ucyBpbiBHZXRCdWxrKSAqLwotICAgIGxvbmcgICAgICAgICAgICBlcnJpbmRleDsgICAgICAgCi0gICAgLyoqIFVwdGltZSAqLwotICAgIHVfbG9uZyAgICAgICAgICB0aW1lOyAgIAotICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKLQotICAgIGludCAgICAgICAgICAgICBzZWN1cml0eU1vZGVsOwotICAgIC8qKiBub0F1dGhOb1ByaXYsIGF1dGhOb1ByaXYsIGF1dGhQcml2ICovCi0gICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TGV2ZWw7ICAKLSAgICBpbnQgICAgICAgICAgICAgbXNnUGFyc2VNb2RlbDsKLQotICAgIC8qKgotICAgICAqIFRyYW5zcG9ydC1zcGVjaWZpYyBvcGFxdWUgZGF0YS4gIFRoaXMgcmVwbGFjZXMgdGhlIElQLWNlbnRyaWMgYWRkcmVzcwotICAgICAqIGZpZWxkLiAgCi0gICAgICovCi0gICAgCi0gICAgdm9pZCAgICAgICAgICAgKnRyYW5zcG9ydF9kYXRhOwotICAgIGludCAgICAgICAgICAgICB0cmFuc3BvcnRfZGF0YV9sZW5ndGg7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgYWN0dWFsIHRyYW5zcG9ydCBkb21haW4uICBUaGlzIFNIT1VMRCBOT1QgQkUgRlJFRSgpRC4gIAotICAgICAqLwotCi0gICAgY29uc3Qgb2lkICAgICAgKnREb21haW47Ci0gICAgc2l6ZV90ICAgICAgICAgIHREb21haW5MZW47Ci0KLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcmlhYmxlczsKLQotCi0gICAgLyoKLSAgICAgKiBTTk1QdjEgJiBTTk1QdjJjIGZpZWxkcwotICAgICAqLwotICAgIC8qKiBjb21tdW5pdHkgZm9yIG91dGdvaW5nIHJlcXVlc3RzLiAqLwotICAgIHVfY2hhciAgICAgICAgICpjb21tdW5pdHk7Ci0gICAgLyoqIGxlbmd0aCBvZiBjb21tdW5pdHkgbmFtZS4gKi8KLSAgICBzaXplX3QgICAgICAgICAgY29tbXVuaXR5X2xlbjsgIAotCi0gICAgLyoKLSAgICAgKiBUcmFwIGluZm9ybWF0aW9uCi0gICAgICovCi0gICAgLyoqIFN5c3RlbSBPSUQgKi8KLSAgICBvaWQgICAgICAgICAgICAqZW50ZXJwcmlzZTsgICAgIAotICAgIHNpemVfdCAgICAgICAgICBlbnRlcnByaXNlX2xlbmd0aDsKLSAgICAvKiogdHJhcCB0eXBlICovCi0gICAgbG9uZyAgICAgICAgICAgIHRyYXBfdHlwZTsKLSAgICAvKiogc3BlY2lmaWMgdHlwZSAqLwotICAgIGxvbmcgICAgICAgICAgICBzcGVjaWZpY190eXBlOwotICAgIC8qKiBUaGlzIGlzIE9OTFkgdXNlZCBmb3IgdjEgVFJBUHMgICovCi0gICAgdW5zaWduZWQgY2hhciAgIGFnZW50X2FkZHJbNF07ICAKLQotICAgIC8qCi0gICAgICogIFNOTVB2MyBmaWVsZHMKLSAgICAgKi8KLSAgICAvKiogY29udGV4dCBzbm1wRW5naW5lSUQgKi8KLSAgICB1X2NoYXIgICAgICAgICAqY29udGV4dEVuZ2luZUlEOwotICAgIC8qKiBMZW5ndGggb2YgY29udGV4dEVuZ2luZUlEICovCi0gICAgc2l6ZV90ICAgICAgICAgIGNvbnRleHRFbmdpbmVJRExlbjsgICAgIAotICAgIC8qKiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lICovCi0gICAgY2hhciAgICAgICAgICAgKmNvbnRleHROYW1lOwotICAgIC8qKiBMZW5ndGggb2YgY29udGV4dE5hbWUgKi8KLSAgICBzaXplX3QgICAgICAgICAgY29udGV4dE5hbWVMZW47Ci0gICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEIGZvciBzZWN1cml0eSAqLwotICAgIHVfY2hhciAgICAgICAgICpzZWN1cml0eUVuZ2luZUlEOwotICAgIC8qKiBMZW5ndGggb2Ygc2VjdXJpdHlFbmdpbmVJRCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eUVuZ2luZUlETGVuOyAgICAKLSAgICAvKiogb24gYmVoYWxmIG9mIHRoaXMgcHJpbmNpcGFsICovCi0gICAgY2hhciAgICAgICAgICAgKnNlY3VyaXR5TmFtZTsKLSAgICAvKiogTGVuZ3RoIG9mIHNlY3VyaXR5TmFtZS4gKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlOYW1lTGVuOyAgICAgICAgCi0gICAgCi0gICAgLyoKLSAgICAgKiBBZ2VudFggZmllbGRzCi0gICAgICogICAgICAoYWxzbyB1c2VzIFNOTVB2MSBjb21tdW5pdHkgZmllbGQpCi0gICAgICovCi0gICAgaW50ICAgICAgICAgICAgIHByaW9yaXR5OwotICAgIGludCAgICAgICAgICAgICByYW5nZV9zdWJpZDsKLSAgICAKLSAgICB2b2lkICAgICAgICAgICAqc2VjdXJpdHlTdGF0ZVJlZjsKLX0gbmV0c25tcF9wZHU7Ci0KLXN0cnVjdCBzbm1wX3Nlc3Npb247Ci0KLS8qKiBAdHlwZWRlZiBzdHJ1Y3Qgc25tcF9zZXNzaW9uIG5ldHNubXBfc2Vzc2lvbgotICogVHlwZWRlZnMgdGhlIHNubXBfc2Vzc2lvbiBzdHJ1Y3QgaW50b25ldHNubXBfc2Vzc2lvbiAqLwotdHlwZWRlZiBzdHJ1Y3Qgc25tcF9zZXNzaW9uIG5ldHNubXBfc2Vzc2lvbjsKLQotdHlwZWRlZiBpbnQgICAgICgqc25tcF9jYWxsYmFjaykgKGludCwgbmV0c25tcF9zZXNzaW9uICosIGludCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiwgdm9pZCAqKTsKLXR5cGVkZWYgaW50ICAgICAoKm5ldHNubXBfY2FsbGJhY2spIChpbnQsIG5ldHNubXBfc2Vzc2lvbiAqLCBpbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICosIHZvaWQgKik7Ci0vKiogQHN0cnVjdCBzbm1wX3Nlc3Npb24KLSAqIFRoZSBzbm1wIHNlc3Npb24gc3RydWN0dXJlLgotICovCi1zdHJ1Y3Qgc25tcF9zZXNzaW9uIHsKLSAgICAvKgotICAgICAqIFByb3RvY29sLXZlcnNpb24gaW5kZXBlbmRlbnQgZmllbGRzCi0gICAgICovCi0gICAgLyoqIHNubXAgdmVyc2lvbiAqLwotICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOwotICAgIC8qKiBOdW1iZXIgb2YgcmV0cmllcyBiZWZvcmUgdGltZW91dC4gKi8KLSAgICBpbnQgICAgICAgICAgICAgcmV0cmllczsKLSAgICAvKiogTnVtYmVyIG9mIHVTIHVudGlsIGZpcnN0IHRpbWVvdXQsIHRoZW4gZXhwb25lbnRpYWwgYmFja29mZiAqLwotICAgIGxvbmcgICAgICAgICAgICB0aW1lb3V0OyAgICAgICAgCi0gICAgdV9sb25nICAgICAgICAgIGZsYWdzOwotICAgIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnN1YnNlc3Npb247Ci0gICAgc3RydWN0IHNubXBfc2Vzc2lvbiAqbmV4dDsKLQotICAgIC8qKiBuYW1lIG9yIGFkZHJlc3Mgb2YgZGVmYXVsdCBwZWVyIChtYXkgaW5jbHVkZSB0cmFuc3BvcnQgc3BlY2lmaWVyIGFuZC9vciBwb3J0IG51bWJlcikgKi8KLSAgICBjaGFyICAgICAgICAgICAqcGVlcm5hbWU7Ci0gICAgLyoqIFVEUCBwb3J0IG51bWJlciBvZiBwZWVyLiAoTk8gTE9OR0VSIFVTRUQgLSBVU0UgcGVlcm5hbWUgSU5TVEVBRCkgKi8KLSAgICB1X3Nob3J0ICAgICAgICAgcmVtb3RlX3BvcnQ7Ci0gICAgLyoqIE15IERvbWFpbiBuYW1lIG9yIGRvdHRlZCBJUCBhZGRyZXNzLCAwIGZvciBkZWZhdWx0ICovCi0gICAgY2hhciAgICAgICAgICAgKmxvY2FsbmFtZTsKLSAgICAvKiogTXkgVURQIHBvcnQgbnVtYmVyLCAwIGZvciBkZWZhdWx0LCBwaWNrZWQgcmFuZG9tbHkgKi8KLSAgICB1X3Nob3J0ICAgICAgICAgbG9jYWxfcG9ydDsgICAgIAotICAgIC8qKgotICAgICAqIEF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9uIG9yIE5VTEwgaWYgbnVsbCBhdXRoZW50aWNhdGlvbiBpcyB1c2VkIAotICAgICAqLwotICAgIHVfY2hhciAgICAgICAgICooKmF1dGhlbnRpY2F0b3IpICh1X2NoYXIgKiwgc2l6ZV90ICosIHVfY2hhciAqLCBzaXplX3QpOwotICAgIC8qKiBGdW5jdGlvbiB0byBpbnRlcnByZXQgaW5jb21pbmcgZGF0YSAqLwotICAgIG5ldHNubXBfY2FsbGJhY2sgY2FsbGJhY2s7ICAgICAgCi0gICAgLyoqCi0gICAgICogUG9pbnRlciB0byBkYXRhIHRoYXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG1heSBjb25zaWRlciBpbXBvcnRhbnQgCi0gICAgICovCi0gICAgdm9pZCAgICAgICAgICAgKmNhbGxiYWNrX21hZ2ljOwotICAgIC8qKiBjb3B5IG9mIHN5c3RlbSBlcnJubyAqLwotICAgIGludCAgICAgICAgICAgICBzX2Vycm5vOwotICAgIC8qKiBjb3B5IG9mIGxpYnJhcnkgZXJybm8gKi8KLSAgICBpbnQgICAgICAgICAgICAgc19zbm1wX2Vycm5vOyAgIAotICAgIC8qKiBTZXNzaW9uIGlkIC0gQWdlbnRYIG9ubHkgKi8KLSAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOyAKLQotICAgIC8qCi0gICAgICogU05NUHYxICYgU05NUHYyYyBmaWVsZHMKLSAgICAgKi8KLSAgICAvKiogY29tbXVuaXR5IGZvciBvdXRnb2luZyByZXF1ZXN0cy4gKi8KLSAgICB1X2NoYXIgICAgICAgICAqY29tbXVuaXR5OwotICAgIC8qKiBMZW5ndGggb2YgY29tbXVuaXR5IG5hbWUuICovCi0gICAgc2l6ZV90ICAgICAgICAgIGNvbW11bml0eV9sZW47ICAKLSAgICAvKiogIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gcmVjZWl2ZS4gICovCi0gICAgc2l6ZV90ICAgICAgICAgIHJjdk1zZ01heFNpemU7Ci0gICAgLyoqICBMYXJnZXN0IG1lc3NhZ2UgdG8gdHJ5IHRvIHNlbmQuICAqLwotICAgIHNpemVfdCAgICAgICAgICBzbmRNc2dNYXhTaXplOyAgCi0KLSAgICAvKgotICAgICAqIFNOTVB2MyBmaWVsZHMKLSAgICAgKi8KLSAgICAvKiogYXJlIHdlIHRoZSBhdXRob3JpdGF0aXZlIGVuZ2luZT8gKi8KLSAgICB1X2NoYXIgICAgICAgICAgaXNBdXRob3JpdGF0aXZlOwotICAgIC8qKiBhdXRob3JpdGF0aXZlIHNubXBFbmdpbmVJRCAqLwotICAgIHVfY2hhciAgICAgICAgICpjb250ZXh0RW5naW5lSUQ7Ci0gICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KLSAgICBzaXplX3QgICAgICAgICAgY29udGV4dEVuZ2luZUlETGVuOyAgICAgCi0gICAgLyoqIGluaXRpYWwgZW5naW5lQm9vdHMgZm9yIHJlbW90ZSBlbmdpbmUgKi8KLSAgICB1X2ludCAgICAgICAgICAgZW5naW5lQm9vdHM7Ci0gICAgLyoqIGluaXRpYWwgZW5naW5lVGltZSBmb3IgcmVtb3RlIGVuZ2luZSAqLwotICAgIHVfaW50ICAgICAgICAgICBlbmdpbmVUaW1lOwotICAgIC8qKiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lICovCi0gICAgY2hhciAgICAgICAgICAgKmNvbnRleHROYW1lOwotICAgIC8qKiBMZW5ndGggb2YgY29udGV4dE5hbWUgKi8KLSAgICBzaXplX3QgICAgICAgICAgY29udGV4dE5hbWVMZW47Ci0gICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEICovCi0gICAgdV9jaGFyICAgICAgICAgKnNlY3VyaXR5RW5naW5lSUQ7Ci0gICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlFbmdpbmVJRExlbjsgICAgCi0gICAgLyoqIG9uIGJlaGFsZiBvZiB0aGlzIHByaW5jaXBhbCAqLwotICAgIGNoYXIgICAgICAgICAgICpzZWN1cml0eU5hbWU7Ci0gICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eU5hbWUuICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5TmFtZUxlbjsKLQotICAgIC8qKiBhdXRoIHByb3RvY29sIG9pZCAqLwotICAgIG9pZCAgICAgICAgICAgICpzZWN1cml0eUF1dGhQcm90bzsKLSAgICAvKiogTGVuZ3RoIG9mIGF1dGggcHJvdG9jb2wgb2lkICovCi0gICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5QXV0aFByb3RvTGVuOwotICAgIC8qKiBLdSBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KLSAgICB1X2NoYXIgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5W1VTTV9BVVRIX0tVX0xFTl07ICAgICAgIAotICAgIC8qKiBMZW5ndGggb2YgS3UgZm9yIGF1dGggcHJvdG9jb2wgKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5TGVuOwotICAgIC8qKiBLdWwgZm9yIGF1dGggcHJvdG9jb2wgKi8KLSAgICB1X2NoYXIgICAgICAgICAgKnNlY3VyaXR5QXV0aExvY2FsS2V5OyAgICAgICAKLSAgICAvKiogTGVuZ3RoIG9mIEt1bCBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoTG9jYWxLZXlMZW47ICAgICAgIAotCi0gICAgLyoqIHByaXYgcHJvdG9jb2wgb2lkICovCi0gICAgb2lkICAgICAgICAgICAgKnNlY3VyaXR5UHJpdlByb3RvOwotICAgIC8qKiBMZW5ndGggb2YgcHJpdiBwcm90b2NvbCBvaWQgKi8KLSAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlQcml2UHJvdG9MZW47Ci0gICAgLyoqIEt1IGZvciBwcml2YWN5IHByb3RvY29sIFhYWCAqLwotICAgIHVfY2hhciAgICAgICAgICBzZWN1cml0eVByaXZLZXlbVVNNX1BSSVZfS1VfTEVOXTsgICAgICAgCi0gICAgLyoqIExlbmd0aCBvZiBLdSBmb3IgcHJpdiBwcm90b2NvbCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZLZXlMZW47Ci0gICAgLyoqIEt1bCBmb3IgcHJpdiBwcm90b2NvbCAqLwotICAgIHVfY2hhciAgICAgICAgICAqc2VjdXJpdHlQcml2TG9jYWxLZXk7ICAgICAgIAotICAgIC8qKiBMZW5ndGggb2YgS3VsIGZvciBwcml2IHByb3RvY29sIFhYWCAqLwotICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZMb2NhbEtleUxlbjsgICAgICAgCi0KLSAgICAvKiogc25tcCBzZWN1cml0eSBtb2RlbCwgdjEsIHYyYywgdXNtICovCi0gICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TW9kZWw7Ci0gICAgLyoqIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgKi8KLSAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlMZXZlbDsgIAotICAgIC8qKiB0YXJnZXQgcGFyYW0gbmFtZSAqLwotICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7Ci0KLSAgICAvKioKLSAgICAgKiBzZWN1cml0eSBtb2R1bGUgc3BlY2lmaWMgCi0gICAgICovCi0gICAgdm9pZCAgICAgICAgICAgKnNlY3VyaXR5SW5mbzsKLQotICAgIC8qKgotICAgICAqIHVzZSBhcyB5b3Ugd2FudCBkYXRhIAotICAgICAqCi0gICAgICogICAgIHVzZWQgYnkgJ1NOTVBfRkxBR1NfUkVTUF9DQUxMQkFDSycgaGFuZGxpbmcgaW4gdGhlIGFnZW50Ci0gICAgICogWFhYOiBvciBzaG91bGQgd2UgYWRkIGEgbmV3IGZpZWxkIGludG8gdGhpcyBzdHJ1Y3R1cmU/Ci0gICAgICovCi0gICAgdm9pZCAgICAgICAgICAgKm15dm9pZDsKLX07Ci0KIC8qCiAgKiBBIGxpc3Qgb2YgYWxsIHRoZSBvdXRzdGFuZGluZyByZXF1ZXN0cyBmb3IgYSBwYXJ0aWN1bGFyIHNlc3Npb24uCiAgKi8KQEAgLTQwNCw2ICsxNTksNyBAQAogCiAjZGVmaW5lIFNOTVBfREVUQUlMX1NJWkUgICAgICAgIDUxMgogCisjZGVmaW5lIFNOTVBfRkxBR1NfVURQX0JST0FEQ0FTVCAgIDB4ODAwCiAjZGVmaW5lIFNOTVBfRkxBR1NfUkVTUF9DQUxMQkFDSyAgIDB4NDAwICAgICAgLyogQWRkaXRpb25hbCBjYWxsYmFjayBvbiByZXNwb25zZSAqLwogI2RlZmluZSBTTk1QX0ZMQUdTX1VTRVJfQ1JFQVRFRCAgICAweDIwMCAgICAgIC8qIFVTTSB1c2VyIGhhcyBiZWVuIGNyZWF0ZWQgKi8KICNkZWZpbmUgU05NUF9GTEFHU19ET05UX1BST0JFICAgICAgMHgxMDAgICAgICAvKiBkb24ndCBwcm9iZSBmb3IgYW4gZW5naW5lSUQgKi8KQEAgLTUwMCwxMzIgKzI1NiwyNiBAQAogI2RlZmluZSBTTk1QRVJSX0tSQjUJCQkoLTYzKQogI2RlZmluZSBTTk1QRVJSX1BST1RPQ09MCQkoLTY0KQogI2RlZmluZSBTTk1QRVJSX09JRF9OT05JTkNSRUFTSU5HICAgICAgICgtNjUpCisjZGVmaW5lIFNOTVBFUlJfSlVTVF9BX0NPTlRFWFRfUFJPQkUgICAgKC02NikKIAotI2RlZmluZSBTTk1QRVJSX01BWAkJCSgtNjUpCi0KLSNkZWZpbmUgbm9uX3JlcGVhdGVycwllcnJzdGF0Ci0jZGVmaW5lIG1heF9yZXBldGl0aW9ucyBlcnJpbmRleAotCi10eXBlZGVmIHVuaW9uIHsKLSAgIGxvbmcgICAgICAgICAgICppbnRlZ2VyOwotICAgdV9jaGFyICAgICAgICAgKnN0cmluZzsKLSAgIG9pZCAgICAgICAgICAgICpvYmppZDsKLSAgIHVfY2hhciAgICAgICAgICpiaXRzdHJpbmc7Ci0gICBzdHJ1Y3QgY291bnRlcjY0ICpjb3VudGVyNjQ7Ci0jaWZkZWYgTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTCi0gICBmbG9hdCAgICAgICAgICAqZmxvYXRWYWw7Ci0gICBkb3VibGUgICAgICAgICAqZG91YmxlVmFsOwotICAgLyoKLSAgICAqIHRfdW5pb24gKnVuaW9uVmFsOyAKLSAgICAqLwotI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMgKi8KLX0gbmV0c25tcF92YXJkYXRhOwotCi0KLS8qKiBAc3RydWN0IHZhcmlhYmxlX2xpc3QKLSAqIFRoZSBuZXRzbm1wIHZhcmlhYmxlIGxpc3QgYmluZGluZyBzdHJ1Y3R1cmUsIGl0J3MgdHlwZWRlZidkIHRvCi0gKiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QuCi0gKi8KLXN0cnVjdCB2YXJpYWJsZV9saXN0IHsKLSAgIC8qKiBOVUxMIGZvciBsYXN0IHZhcmlhYmxlICovCi0gICBzdHJ1Y3QgdmFyaWFibGVfbGlzdCAqbmV4dF92YXJpYWJsZTsgICAgCi0gICAvKiogT2JqZWN0IGlkZW50aWZpZXIgb2YgdmFyaWFibGUgKi8KLSAgIG9pZCAgICAgICAgICAgICpuYW1lOyAgIAotICAgLyoqIG51bWJlciBvZiBzdWJpZCdzIGluIG5hbWUgKi8KLSAgIHNpemVfdCAgICAgICAgICBuYW1lX2xlbmd0aDsgICAgCi0gICAvKiogQVNOIHR5cGUgb2YgdmFyaWFibGUgKi8KLSAgIHVfY2hhciAgICAgICAgICB0eXBlOyAgIAotICAgLyoqIHZhbHVlIG9mIHZhcmlhYmxlICovCi0gICAgbmV0c25tcF92YXJkYXRhIHZhbDsKLSAgIC8qKiB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBiZSBjb3BpZWQgaW50byBidWYgKi8KLSAgIHNpemVfdCAgICAgICAgICB2YWxfbGVuOwotICAgLyoqIGJ1ZmZlciB0byBob2xkIHRoZSBPSUQgKi8KLSAgIG9pZCAgICAgICAgICAgICBuYW1lX2xvY1tNQVhfT0lEX0xFTl07ICAKLSAgIC8qKiA5MCBwZXJjZW50aWxlIDwgNDAuICovCi0gICB1X2NoYXIgICAgICAgICAgYnVmWzQwXTsKLSAgIC8qKiAoT3BhcXVlKSBob29rIGZvciBhZGRpdGlvbmFsIGRhdGEgKi8KLSAgIHZvaWQgICAgICAgICAgICpkYXRhOwotICAgLyoqIGNhbGxiYWNrIHRvIGZyZWUgYWJvdmUgKi8KLSAgIHZvaWQgICAgICAgICAgICAoKmRhdGFGcmVlSG9vaykodm9pZCAqKTsgICAgCi0gICBpbnQgICAgICAgICAgICAgaW5kZXg7Ci19OwotCi0KLQotICAgIC8qCi0gICAgICogbmV0c25tcF9zZXNzaW9uICpzbm1wX29wZW4oc2Vzc2lvbikKLSAgICAgKiAgICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKLSAgICAgKgotICAgICAqIFNldHMgdXAgdGhlIHNlc3Npb24gd2l0aCB0aGUgc25tcF9zZXNzaW9uIGluZm9ybWF0aW9uIHByb3ZpZGVkCi0gICAgICogYnkgdGhlIHVzZXIuICBUaGVuIG9wZW5zIGFuZCBiaW5kcyB0aGUgbmVjZXNzYXJ5IFVEUCBwb3J0LgotICAgICAqIEEgaGFuZGxlIHRvIHRoZSBjcmVhdGVkIHNlc3Npb24gaXMgcmV0dXJuZWQgKHRoaXMgaXMgZGlmZmVyZW50IHRoYW4KLSAgICAgKiB0aGUgcG9pbnRlciBwYXNzZWQgdG8gc25tcF9vcGVuKCkpLiAgT24gYW55IGVycm9yLCBOVUxMIGlzIHJldHVybmVkCi0gICAgICogYW5kIHNubXBfZXJybm8gaXMgc2V0IHRvIHRoZSBhcHByb3ByaWF0ZSBlcnJvciBjb2RlLgotICAgICAqLwotICAgIG5ldHNubXBfc2Vzc2lvbiAqc25tcF9vcGVuKG5ldHNubXBfc2Vzc2lvbiAqKTsKLQotICAgIC8qCi0gICAgICogaW50IHNubXBfY2xvc2Uoc2Vzc2lvbikKLSAgICAgKiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOwotICAgICAqCi0gICAgICogQ2xvc2UgdGhlIGlucHV0IHNlc3Npb24uICBGcmVlcyBhbGwgZGF0YSBhbGxvY2F0ZWQgZm9yIHRoZSBzZXNzaW9uLAotICAgICAqIGRlcXVldWVzIGFueSBwZW5kaW5nIHJlcXVlc3RzLCBhbmQgY2xvc2VzIGFueSBzb2NrZXRzIGFsbG9jYXRlZCBmb3IKLSAgICAgKiB0aGUgc2Vzc2lvbi4gIFJldHVybnMgMCBvbiBlcnJvciwgMSBvdGhlcndpc2UuCi0gICAgICoKLSAgICAgKiBzbm1wX2Nsb3NlX3Nlc3Npb25zKCkgZG9lcyB0aGUgc2FtZSB0aGluZyBmb3IgYWxsIG9wZW4gc2Vzc2lvbnMKLSAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9zZShuZXRzbm1wX3Nlc3Npb24gKik7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfY2xvc2Vfc2Vzc2lvbnModm9pZCk7CisjZGVmaW5lIFNOTVBFUlJfTUFYCQkJKC02NikKIAogCiAgICAgLyoKLSAgICAgKiBpbnQgc25tcF9zZW5kKHNlc3Npb24sIHBkdSkKLSAgICAgKiAgICAgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uOwotICAgICAqICAgICBuZXRzbm1wX3BkdSAgICAgICpwZHU7Ci0gICAgICoKLSAgICAgKiBTZW5kcyB0aGUgaW5wdXQgcGR1IG9uIHRoZSBzZXNzaW9uIGFmdGVyIGNhbGxpbmcgc25tcF9idWlsZCB0byBjcmVhdGUKLSAgICAgKiBhIHNlcmlhbGl6ZWQgcGFja2V0LiAgSWYgbmVjZXNzYXJ5LCBzZXQgc29tZSBvZiB0aGUgcGR1IGRhdGEgZnJvbSB0aGUKLSAgICAgKiBzZXNzaW9uIGRlZmF1bHRzLiAgQWRkIGEgcmVxdWVzdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgcGR1IHRvIHRoZSBsaXN0Ci0gICAgICogb2Ygb3V0c3RhbmRpbmcgcmVxdWVzdHMgb24gdGhpcyBzZXNzaW9uLCB0aGVuIHNlbmQgdGhlIHBkdS4KLSAgICAgKiBSZXR1cm5zIHRoZSByZXF1ZXN0IGlkIG9mIHRoZSBnZW5lcmF0ZWQgcGFja2V0IGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSAxLgotICAgICAqIE9uIGFueSBlcnJvciwgMCBpcyByZXR1cm5lZC4KLSAgICAgKiBUaGUgcGR1IGlzIGZyZWVkIGJ5IHNubXBfc2VuZCgpIHVubGVzcyBhIGZhaWx1cmUgb2NjdXJlZC4KKyAgICAgKiBHZW5lcmFsIHB1cnBvc2UgbWVtb3J5IGFsbG9jYXRpb24gZnVuY3Rpb25zLiBVc2UgdGhlc2UgZnVuY3Rpb25zIHRvCisgICAgICogYWxsb2NhdGUgbWVtb3J5IHRoYXQgbWF5IGJlIHJlYWxsb2NhdGVkIG9yIGZyZWVkIGJ5IHRoZSBOZXQtU05NUAorICAgICAqIGxpYnJhcnkgb3IgdG8gcmVhbGxvY2F0ZSBvciBmcmVlIG1lbW9yeSB0aGF0IGhhcyBiZWVuIGFsbG9jYXRlZCBieSB0aGUKKyAgICAgKiBOZXQtU05NUCBsaWJyYXJ5LCBhbmQgd2hlbiB3b3JraW5nIGluIGEgY29udGV4dCB3aGVyZSB0aGVyZSBpcyBtb3JlIHRoYW4KKyAgICAgKiBvbmUgaGVhcC4gRXhhbXBsZXMgYXJlOgorICAgICAqIC0gUGVybCBYU1VCJ3MuCisgICAgICogLSBNU1ZDIG9yIE1pbkdXIHdpdGggdGhlIE5ldC1TTk1QIGxpYnJhcnkgY29tcGlsZWQgYXMgYSBETEwgaW5zdGVhZCBvZgorICAgICAqICAgYSBzdGF0aWMgbGlicmFyeS4KICAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZW5kKG5ldHNubXBfc2Vzc2lvbiAqLCBuZXRzbm1wX3BkdSAqKTsKLQotICAgIC8qCi0gICAgICogaW50IHNubXBfYXN5bmNfc2VuZChzZXNzaW9uLCBwZHUsIGNhbGxiYWNrLCBjYl9kYXRhKQotICAgICAqICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgICogICAgIG5ldHNubXBfcGR1ICAgICAgKnBkdTsKLSAgICAgKiAgICAgbmV0c25tcF9jYWxsYmFjayBjYWxsYmFjazsKLSAgICAgKiAgICAgdm9pZCAgICpjYl9kYXRhOwotICAgICAqCi0gICAgICogU2VuZHMgdGhlIGlucHV0IHBkdSBvbiB0aGUgc2Vzc2lvbiBhZnRlciBjYWxsaW5nIHNubXBfYnVpbGQgdG8gY3JlYXRlCi0gICAgICogYSBzZXJpYWxpemVkIHBhY2tldC4gIElmIG5lY2Vzc2FyeSwgc2V0IHNvbWUgb2YgdGhlIHBkdSBkYXRhIGZyb20gdGhlCi0gICAgICogc2Vzc2lvbiBkZWZhdWx0cy4gIEFkZCBhIHJlcXVlc3QgY29ycmVzcG9uZGluZyB0byB0aGlzIHBkdSB0byB0aGUgbGlzdAotICAgICAqIG9mIG91dHN0YW5kaW5nIHJlcXVlc3RzIG9uIHRoaXMgc2Vzc2lvbiBhbmQgc3RvcmUgY2FsbGJhY2sgYW5kIGRhdGEsCi0gICAgICogdGhlbiBzZW5kIHRoZSBwZHUuCi0gICAgICogUmV0dXJucyB0aGUgcmVxdWVzdCBpZCBvZiB0aGUgZ2VuZXJhdGVkIHBhY2tldCBpZiBhcHBsaWNhYmxlLCBvdGhlcndpc2UgMS4KLSAgICAgKiBPbiBhbnkgZXJyb3IsIDAgaXMgcmV0dXJuZWQuCi0gICAgICogVGhlIHBkdSBpcyBmcmVlZCBieSBzbm1wX3NlbmQoKSB1bmxlc3MgYSBmYWlsdXJlIG9jY3VyZWQuCi0gICAgICovCi0gICAgaW50ICAgICAgICAgICAgIHNubXBfYXN5bmNfc2VuZChuZXRzbm1wX3Nlc3Npb24gKiwgbmV0c25tcF9wZHUgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FsbGJhY2ssIHZvaWQgKik7Ci0KLQotICAgIC8qCi0gICAgICogdm9pZCBzbm1wX3JlYWQoZmRzZXQpCi0gICAgICogICAgIGZkX3NldCAgKmZkc2V0OwotICAgICAqCi0gICAgICogQ2hlY2tzIHRvIHNlZSBpZiBhbnkgb2YgdGhlIGZkJ3Mgc2V0IGluIHRoZSBmZHNldCBiZWxvbmcgdG8KLSAgICAgKiBzbm1wLiAgRWFjaCBzb2NrZXQgd2l0aCBpdCdzIGZkIHNldCBoYXMgYSBwYWNrZXQgcmVhZCBmcm9tIGl0Ci0gICAgICogYW5kIHNubXBfcGFyc2UgaXMgY2FsbGVkIG9uIHRoZSBwYWNrZXQgcmVjZWl2ZWQuICBUaGUgcmVzdWx0aW5nIHBkdQotICAgICAqIGlzIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sgcm91dGluZSBmb3IgdGhhdCBzZXNzaW9uLiAgSWYgdGhlIGNhbGxiYWNrCi0gICAgICogcm91dGluZSByZXR1cm5zIHN1Y2Nlc3NmdWxseSwgdGhlIHBkdSBhbmQgaXQncyByZXF1ZXN0IGFyZSBkZWxldGVkLgotICAgICAqLwotICAgIHZvaWQgICAgICAgICAgICBzbm1wX3JlYWQoZmRfc2V0ICopOwotCi0KKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkICpuZXRzbm1wX21hbGxvYyhzaXplX3Qgc2l6ZSk7CisgICAgTkVUU05NUF9JTVBPUlQgdm9pZCAqbmV0c25tcF9jYWxsb2Moc2l6ZV90IG5lbGVtLCBzaXplX3QgZWxzaXplKTsKKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkICpuZXRzbm1wX3JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSk7CisgICAgTkVUU05NUF9JTVBPUlQgdm9pZCBuZXRzbm1wX2ZyZWUodm9pZCAqcHRyKTsKKyAgICBORVRTTk1QX0lNUE9SVCBjaGFyICpuZXRzbm1wX3N0cmR1cChjb25zdCBjaGFyICpzMSk7CiAKICAgICAvKgogICAgICAqIHZvaWQKQEAgLTYzNCw1NyArMjg0LDggQEAKICAgICAgKgogICAgICAqIEZyZWVzIHRoZSBwZHUgYW5kIGFueSBtYWxsb2MnZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCBpdC4KICAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAgc25tcF9mcmVlX3BkdShuZXRzbm1wX3BkdSAqKTsKIAotICAgIHZvaWQgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsgICAgIC8qIGZyZWVzIGp1c3QgdGhpcyBvbmUgKi8KLQotICAgIHZvaWQgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIpOyAgICAgLyogZnJlZXMgYWxsIGluIGxpc3QgKi8KLQotICAgIC8qCi0gICAgICogaW50IHNubXBfc2VsZWN0X2luZm8obnVtZmRzLCBmZHNldCwgdGltZW91dCwgYmxvY2spCi0gICAgICogaW50ICpudW1mZHM7Ci0gICAgICogZmRfc2V0ICAgKmZkc2V0OwotICAgICAqIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0OwotICAgICAqIGludCAqYmxvY2s7Ci0gICAgICoKLSAgICAgKiBSZXR1cm5zIGluZm8gYWJvdXQgd2hhdCBzbm1wIHJlcXVpcmVzIGZyb20gYSBzZWxlY3Qgc3RhdGVtZW50LgotICAgICAqIG51bWZkcyBpcyB0aGUgbnVtYmVyIG9mIGZkcyBpbiB0aGUgbGlzdCB0aGF0IGFyZSBzaWduaWZpY2FudC4KLSAgICAgKiBBbGwgZmlsZSBkZXNjcmlwdG9ycyBvcGVuZWQgZm9yIFNOTVAgYXJlIE9SJ2QgaW50byB0aGUgZmRzZXQuCi0gICAgICogSWYgYWN0aXZpdHkgb2NjdXJzIG9uIGFueSBvZiB0aGVzZSBmaWxlIGRlc2NyaXB0b3JzLCBzbm1wX3JlYWQKLSAgICAgKiBzaG91bGQgYmUgY2FsbGVkIHdpdGggdGhhdCBmaWxlIGRlc2NyaXB0b3Igc2V0LgotICAgICAqCi0gICAgICogVGhlIHRpbWVvdXQgaXMgdGhlIGxhdGVzdCB0aW1lIHRoYXQgU05NUCBjYW4gd2FpdCBmb3IgYSB0aW1lb3V0LiAgVGhlCi0gICAgICogc2VsZWN0IHNob3VsZCBiZSBkb25lIHdpdGggdGhlIG1pbmltdW0gdGltZSBiZXR3ZWVuIHRpbWVvdXQgYW5kIGFueSBvdGhlcgotICAgICAqIHRpbWVvdXRzIG5lY2Vzc2FyeS4gIFRoaXMgc2hvdWxkIGJlIGNoZWNrZWQgdXBvbiBlYWNoIGludm9jYXRpb24gb2Ygc2VsZWN0LgotICAgICAqIElmIGEgdGltZW91dCBpcyByZWNlaXZlZCwgc25tcF90aW1lb3V0IHNob3VsZCBiZSBjYWxsZWQgdG8gY2hlY2sgaWYgdGhlCi0gICAgICogdGltZW91dCB3YXMgZm9yIFNOTVAuICAoc25tcF90aW1lb3V0IGlzIGlkZW1wb3RlbnQpCi0gICAgICoKLSAgICAgKiBCbG9jayBpcyAxIGlmIHRoZSBzZWxlY3QgaXMgcmVxdWVzdGVkIHRvIGJsb2NrIGluZGVmaW5pdGVseSwgcmF0aGVyIHRoYW4KLSAgICAgKiB0aW1lIG91dC4gIElmIGJsb2NrIGlzIGlucHV0IGFzIDEsIHRoZSB0aW1lb3V0IHZhbHVlIHdpbGwgYmUgdHJlYXRlZCBhcwotICAgICAqIHVuZGVmaW5lZCwgYnV0IGl0IG11c3QgYmUgYXZhaWxhYmxlIGZvciBzZXR0aW5nIGluIHNubXBfc2VsZWN0X2luZm8uICBPbgotICAgICAqIHJldHVybiwgaWYgYmxvY2sgaXMgdHJ1ZSwgdGhlIHZhbHVlIG9mIHRpbWVvdXQgd2lsbCBiZSB1bmRlZmluZWQuCi0gICAgICoKLSAgICAgKiBzbm1wX3NlbGVjdF9pbmZvIHJldHVybnMgdGhlIG51bWJlciBvZiBvcGVuIHNvY2tldHMuICAoaS5lLiBUaGUgbnVtYmVyCi0gICAgICogb2Ygc2Vzc2lvbnMgb3BlbikKLSAgICAgKi8KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZWxlY3RfaW5mbyhpbnQgKiwgZmRfc2V0ICosIHN0cnVjdCB0aW1ldmFsICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICopOwotCi0KLQotICAgIC8qCi0gICAgICogdm9pZCBzbm1wX3RpbWVvdXQoKTsKLSAgICAgKgotICAgICAqIHNubXBfdGltZW91dCBzaG91bGQgYmUgY2FsbGVkIHdoZW5ldmVyIHRoZSB0aW1lb3V0IGZyb20gc25tcF9zZWxlY3RfaW5mbwotICAgICAqIGV4cGlyZXMsIGJ1dCBpdCBpcyBpZGVtcG90ZW50LCBzbyBzbm1wX3RpbWVvdXQgY2FuIGJlIHBvbGxlZCAocHJvYmFibHkgYQotICAgICAqIGNwdSBleHBlbnNpdmUgcHJvcG9zaXRpb24pLiAgc25tcF90aW1lb3V0IGNoZWNrcyB0byBzZWUgaWYgYW55IG9mIHRoZQotICAgICAqIHNlc3Npb25zIGhhdmUgYW4gb3V0c3RhbmRpbmcgcmVxdWVzdCB0aGF0IGhhcyB0aW1lZCBvdXQuICBJZiBpdCBmaW5kcyBvbmUKLSAgICAgKiAob3IgbW9yZSksIGFuZCB0aGF0IHBkdSBoYXMgbW9yZSByZXRyaWVzIGF2YWlsYWJsZSwgYSBuZXcgcGFja2V0IGlzIGZvcm1lZAotICAgICAqIGZyb20gdGhlIHBkdSBhbmQgaXMgcmVzZW50LiAgSWYgdGhlcmUgYXJlIG5vIG1vcmUgcmV0cmllcyBhdmFpbGFibGUsIHRoZQotICAgICAqIGNhbGxiYWNrIGZvciB0aGUgc2Vzc2lvbiBpcyB1c2VkIHRvIGFsZXJ0IHRoZSB1c2VyIG9mIHRoZSB0aW1lb3V0LgotICAgICAqLwotCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfdGltZW91dCh2b2lkKTsKKyAgICBORVRTTk1QX0lNUE9SVCB2b2lkIHNubXBfZnJlZV92YXJfaW50ZXJuYWxzKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsgICAgIC8qIGZyZWVzIGNvbnRlbnRzIG9ubHkgKi8KIAogCiAgICAgLyoKQEAgLTc3NCwxNiArMzc1LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgKiBsZW5ndGgpOwogICAgIHZvaWQgICAgICAgICAgICBzbm1wX3N0b3JlKGNvbnN0IGNoYXIgKnR5cGUpOwogICAgIHZvaWQgICAgICAgICAgICBzbm1wX3NodXRkb3duKGNvbnN0IGNoYXIgKnR5cGUpOwotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF9wZHVfYWRkX3ZhcmlhYmxlKG5ldHNubXBfcGR1ICosIGNvbnN0IG9pZCAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCwgdV9jaGFyLCBjb25zdCB1X2NoYXIgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QpOwotICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiogdmFybGlzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5hbWVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdV9jaGFyICogdmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwogICAgIGludCAgICAgICAgICAgICBzbm1wX2FkZF92YXIobmV0c25tcF9wZHUgKiwgY29uc3Qgb2lkICosIHNpemVfdCwgY2hhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKik7CiAgICAgb2lkICAgICAgICAgICAgKnNubXBfZHVwbGljYXRlX29iamlkKGNvbnN0IG9pZCAqIG9ialRvQ29weSwgc2l6ZV90KTsKQEAgLTc5Myw2ICszODQsOCBAQAogICAgIHZvaWQgICAgICAgICAgICBzbm1wX2luaXRfc3RhdGlzdGljcyh2b2lkKTsKICAgICBpbnQgICAgICAgICAgICAgY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24pOwogICAgIGludCBzbm1wX2dldF9mZF9mb3Jfc2Vzc2lvbihzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzZXNzcCk7CisgICAgaW50IHNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0Myh2b2lkICpzbHAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOwogCiAgICAgLyoKICAgICAgKiBOZXcgcmUtYWxsb2NhdGluZyByZXZlcnNlIGVuY29kaW5nIGZ1bmN0aW9ucy4gIApAQCAtODExLDYgKzQwNCw4IEBACiAKIAogCitzdHJ1Y3QgbmV0c25tcF90cmFuc3BvcnRfczsKKwogICAgIC8qCiAgICAgICogRXh0ZW5kZWQgb3BlbjsgZnByZV9wYXJzZSBoYXMgY2hhbmdlZC4gIAogICAgICAqLwpAQCAtODQyLDU2ICs0MzcsMTQgQEAKICAgICBpbnQgICAgICAgICAgICAgc25tcF9nZXRfZG9fZGVidWdnaW5nKHZvaWQpOwogCiAKLSAgICAvKgotICAgICAqIHNubXBfZXJyb3IgLSByZXR1cm4gZXJyb3IgZGF0YQotICAgICAqIElucHV0cyA6ICBhZGRyZXNzIG9mIGVycm5vLCBhZGRyZXNzIG9mIHNubXBfZXJybm8sIGFkZHJlc3Mgb2Ygc3RyaW5nCi0gICAgICogQ2FsbGVyIG11c3QgZnJlZSB0aGUgc3RyaW5nIHJldHVybmVkIGFmdGVyIHVzZS4KLSAgICAgKi8KLSAgICB2b2lkICAgICAgICAgICAgc25tcF9lcnJvcihuZXRzbm1wX3Nlc3Npb24gKiwgaW50ICosIGludCAqLCBjaGFyICoqKTsKLSAgICAvKgotICAgICAqIHNpbmdsZSBzZXNzaW9uIEFQSS4KLSAgICAgKgotICAgICAqIFRoZXNlIGZ1bmN0aW9ucyBwZXJmb3JtIHNpbWlsYXIgYWN0aW9ucyBhcyBzbm1wX1hYIGZ1bmN0aW9ucywKLSAgICAgKiBidXQgb3BlcmF0ZSBvbiBhIHNpbmdsZSBzZXNzaW9uIG9ubHkuCi0gICAgICoKLSAgICAgKiBTeW5vcHNpczoKLSAgICAgCi0gICAgIHZvaWQgKiBzZXNzcDsKLSAgICAgbmV0c25tcF9zZXNzaW9uIHNlc3Npb24sICpzczsKLSAgICAgbmV0c25tcF9wZHUgKnBkdSwgKnJlc3BvbnNlOwotICAgICAKLSAgICAgc25tcF9zZXNzX2luaXQoJnNlc3Npb24pOwotICAgICBzZXNzaW9uLnJldHJpZXMgPSAuLi4KLSAgICAgc2Vzc2lvbi5yZW1vdGVfcG9ydCA9IC4uLgotICAgICBzZXNzcCA9IHNubXBfc2Vzc19vcGVuKCZzZXNzaW9uKTsKLSAgICAgc3MgPSBzbm1wX3Nlc3Nfc2Vzc2lvbihzZXNzcCk7Ci0gICAgIGlmIChzcyA9PSBOVUxMKQotICAgICBleGl0KDEpOwotICAgICAuLi4KLSAgICAgaWYgKHNzLT5jb21tdW5pdHkpIGZyZWUoc3MtPmNvbW11bml0eSk7Ci0gICAgIHNzLT5jb21tdW5pdHkgPSBzdHJkdXAoZ2F0ZXdheSk7Ci0gICAgIHNzLT5jb21tdW5pdHlfbGVuID0gc3RybGVuKGdhdGV3YXkpOwotICAgICAuLi4KLSAgICAgc25tcF9zZXNzX3N5bmNoX3Jlc3BvbnNlKHNlc3NwLCBwZHUsICZyZXNwb25zZSk7Ci0gICAgIC4uLgotICAgICBzbm1wX3Nlc3NfY2xvc2Uoc2Vzc3ApOwotICAgICAKLSAgICAgKiBTZWUgYWxzbzoKLSAgICAgKiBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2UsIGluIHNubXBfY2xpZW50LmguCi0gICAgIAotICAgICAqIE5vdGVzOgotICAgICAqICAxLiBJbnZva2Ugc25tcF9zZXNzX3Nlc3Npb24gYWZ0ZXIgc25tcF9zZXNzX29wZW4uCi0gICAgICogIDIuIHNubXBfc2Vzc19zZXNzaW9uIHJldHVybiB2YWx1ZSBpcyBhbiBvcGFxdWUgcG9pbnRlci4KLSAgICAgKiAgMy4gRG8gTk9UIGZyZWUgbWVtb3J5IHJldHVybmVkIGJ5IHNubXBfc2Vzc19zZXNzaW9uLgotICAgICAqICA0LiBSZXBsYWNlIHNubXBfc2VuZChzcyxwZHUpIHdpdGggc25tcF9zZXNzX3NlbmQoc2Vzc3AscGR1KQotICAgICAqLwogCi0gICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc19pbml0KG5ldHNubXBfc2Vzc2lvbiAqKTsKLSAgICB2b2lkICAgICAgICAgICAqc25tcF9zZXNzX29wZW4obmV0c25tcF9zZXNzaW9uICopOwotICAgIHZvaWQgICAgICAgICAgICpzbm1wX3Nlc3NfcG9pbnRlcihuZXRzbm1wX3Nlc3Npb24gKik7Ci0gICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbih2b2lkICopOwotICAgIE5FVFNOTVBfSU1QT1JUCi0gICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAodm9pZCAqKTsKKyAgICB2b2lkICAgICAgICAgICAgc25tcF9zZXNzX2Vycm9yKHZvaWQgKiwgaW50ICosIGludCAqLCBjaGFyICoqKTsKKyAgICB2b2lkICAgICAgICAgICAgbmV0c25tcF9zZXNzX2xvZ19lcnJvcihpbnQgcHJpb3JpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqcHJvZ19zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogc3MpOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfcGVycm9yKGNvbnN0IGNoYXIgKnByb2dfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqIHNzKTsKKyAgICBjb25zdCBjaGFyICogICAgc25tcF9wZHVfdHlwZShpbnQgdHlwZSk7CiAKICAgICAvKgogICAgICAqIFJldHVybiB0aGUgbmV0c25tcF90cmFuc3BvcnQgc3RydWN0dXJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3BhcXVlCkBAIC05ODEsMjggKzUzNCw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgdm9pZCAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCkKICAgICAgICAgKTsKLQotICAgIC8qCi0gICAgICogdXNlIHJldHVybiB2YWx1ZSBmcm9tIHNubXBfc2Vzc19vcGVuIGFzIHZvaWQgKiBwYXJhbWV0ZXIgCi0gICAgICovCi0KLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3NlbmQodm9pZCAqLCBuZXRzbm1wX3BkdSAqKTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX2FzeW5jX3NlbmQodm9pZCAqLCBuZXRzbm1wX3BkdSAqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NhbGxiYWNrLCB2b2lkICopOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8odm9pZCAqLCBpbnQgKiwgZmRfc2V0ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCAqLCBpbnQgKik7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19yZWFkKHZvaWQgKiwgZmRfc2V0ICopOwotICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfdGltZW91dCh2b2lkICopOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uodm9pZCAqKTsKLQotICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfZXJyb3Iodm9pZCAqLCBpbnQgKiwgaW50ICosIGNoYXIgKiopOwotICAgIHZvaWQgICAgICAgICAgICBuZXRzbm1wX3Nlc3NfbG9nX2Vycm9yKGludCBwcmlvcml0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwcm9nX3N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzcyk7Ci0gICAgdm9pZCAgICAgICAgICAgIHNubXBfc2Vzc19wZXJyb3IoY29uc3QgY2hhciAqcHJvZ19zdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICogc3MpOwotICAgIGNvbnN0IGNoYXIgKiAgICBzbm1wX3BkdV90eXBlKGludCB0eXBlKTsKLQogICAgIC8qCiAgICAgICogZW5kIHNpbmdsZSBzZXNzaW9uIEFQSSAKICAgICAgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKaW5kZXggNTc4YjZjZS4uNTFjYjc1NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKQEAgLTM4LDEzICszOCwxNCBAQAogICogIGlmIGFzc2VydHMgd2VyZW4ndCByZXF1ZXN0ZWQsIGp1c3QgbG9nLCB1bmxlc3MgTkVUU05NUF9OT19ERUJVR0dJTkcgc3BlY2lmaWVkCiAgKi8KICMgICBpZm5kZWYgTkVUU05NUF9OT19ERUJVR0dJTkcKLSMgICAgICBpZmRlZiAgSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRAorIyAgICAgIGlmZGVmICBORVRTTk1QX0ZVTkNUSU9OCiAjICAgICAgICAgZGVmaW5lIG5ldHNubXBfYXNzZXJ0KHgpICBkbyB7IFwKICAgICAgICAgICAgICAgICAgaWYgKCB4ICkgXAogICAgICAgICAgICAgICAgICAgICA7IFwKICAgICAgICAgICAgICAgICAgZWxzZSBcCiAgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsIm5ldHNubXBfYXNzZXJ0ICVzIGZhaWxlZCAlczolZCAlcygpXG4iLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9fU1RSSU5HKHgpLF9fRklMRV9fLF9fTElORV9fLF9fRlVOQ1RJT05fXyk7IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19TVFJJTkcoeCksX19GSUxFX18sX19MSU5FX18sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9GVU5DVElPTik7IFwKICAgICAgICAgICAgICAgfXdoaWxlKDApCiAjICAgICAgZWxzZQogIyAgICAgICAgIGRlZmluZSBuZXRzbm1wX2Fzc2VydCh4KSAgZG8geyBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCmluZGV4IDk5ZTc1YjUuLjFlMTZjZTYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCkBAIC0yNiw2ICsyNiwxMSBAQAogI2lmbmRlZiBTTk1QX0NMSUVOVF9ICiAjZGVmaW5lIFNOTVBfQ0xJRU5UX0gKIAorI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvdmFyYmluZF9hcGkuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9wZHVfYXBpLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvc2Vzc2lvbl9hcGkuaD4KKwogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gICAgICAgICAgIkMiIHsKICNlbmRpZgpAQCAtNDgsMTcgKzUzLDYgQEAKICAgICAgICAgbmV0c25tcF9wZHUgICAgKnBkdTsKICAgICB9OwogCi0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl92YWx1ZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiwgc2l6ZV90KTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX29iamlkKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbmFtZV9sZW5ndGgpOwotICAgIGludCAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUobmV0c25tcF92YXJpYWJsZV9saXN0ICoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ZhciwgdV9jaGFyIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogdmFsX3N0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCB2YWxfbGVuKTsKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIobmV0c25tcF92YXJpYWJsZV9saXN0ICogbmV3dmFyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwgbG9uZyB2YWwpOwogICAgIHZvaWQgICAgICAgICAgICBzbm1wX3JlcGxhY2VfdmFyX3R5cGVzKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZibCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgb2xkX3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIG5ld190eXBlKTsKQEAgLTczLDMyICs2NywyMSBAQAogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqZmluZF92YXJiaW5kX2luX2xpc3QobmV0c25tcF92YXJpYWJsZV9saXN0ICp2Ymxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvaWQgKm5hbWUsIHNpemVfdCBsZW4pOwogCi0gICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX2FkZF9udWxsX3ZhcihuZXRzbm1wX3BkdSAqLCBjb25zdCBvaWQgKiwgc2l6ZV90KTsKLSAgICBuZXRzbm1wX3BkdSAgICAqc25tcF9wZHVfY3JlYXRlKGludCk7Ci0gICAgbmV0c25tcF9wZHUgICAgKnNubXBfZml4X3BkdShuZXRzbm1wX3BkdSAqLCBpbnQpOwotICAgIG5ldHNubXBfcGR1ICAgICpzbm1wX2Nsb25lX3BkdShuZXRzbm1wX3BkdSAqKTsKICAgICBuZXRzbm1wX3BkdSAgICAqc25tcF9zcGxpdF9wZHUobmV0c25tcF9wZHUgKiwgaW50IHNraXBDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNvcHlDb3VudCk7CiAKICAgICB1bnNpZ25lZCBsb25nICAgc25tcF92YXJiaW5kX2xlbihuZXRzbm1wX3BkdSAqcGR1KTsKICAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9uZV92YXIobmV0c25tcF92YXJpYWJsZV9saXN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKTsKLSAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnNubXBfY2xvbmVfdmFyYmluZChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKik7CiAgICAgY29uc3QgY2hhciAgICAgKnNubXBfZXJyc3RyaW5nKGludCk7Ci0gICAgaW50ICAgICAgICAgICAgIHNubXBfc3luY2hfcmVzcG9uc2UobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiopOwogICAgIGludCAgICAgICAgICAgICBzbm1wX3N5bmNoX3Jlc3BvbnNlX2NiKG5ldHNubXBfc2Vzc2lvbiAqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICosIG5ldHNubXBfcGR1ICoqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfY2FsbGJhY2spOwotICAgIGludCAgICAgICAgICAgICBzbm1wX2Nsb25lX21lbSh2b2lkICoqLCB2b2lkICosIHVuc2lnbmVkKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9jbG9uZV9tZW0odm9pZCAqKiwgY29uc3Qgdm9pZCAqLCB1bnNpZ25lZCk7CiAKLSAgICAvKgotICAgICAqIHNpbmdsZSBzZXNzaW9uIEFQSSAtIHNlZSBzbm1wX2FwaS5oIGZvciBmdWxsIGRldGFpbHMgCi0gICAgICovCi0gICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZSh2b2lkICosIG5ldHNubXBfcGR1ICosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqKik7CiAKIHZvaWQgICAgICAgICAgICAgIG5ldHNubXBfcXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbihuZXRzbm1wX3Nlc3Npb24gKik7CituZXRzbm1wX3Nlc3Npb24gKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkKCB2b2lkICk7CiBuZXRzbm1wX3Nlc3Npb24gKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24oIHZvaWQgKTsKIGludCBuZXRzbm1wX3F1ZXJ5X2dldCggICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqLCBuZXRzbm1wX3Nlc3Npb24gKik7CiBpbnQgbmV0c25tcF9xdWVyeV9nZXRuZXh0KCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiwgbmV0c25tcF9zZXNzaW9uICopOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKaW5kZXggOWUzZDVhOS4uNzY1Y2M0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCkBAIC0xOSwxNiArMTksMjEgQEAKICAgICAgKiBUaGVzZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSB1c2VkLCBpZiBhdCBhbGwgcG9zc2libGUuICBJbnN0ZWFkLCB1c2UKICAgICAgKiB0aGUgbWFjcm9zIGJlbG93LiAKICAgICAgKi8KLSNpZiBIQVZFX1NUREFSR19ICisjaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IF9fR05VQ19fIDwgMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA8IDgpCiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnbXNnKGNvbnN0IGNoYXIgKnRva2VuLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnbXNndG9rZW4oY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwogICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z19jb21ib19uYyhjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pOwogI2Vsc2UKLSAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2codmFfYWxpc3QpOwotICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZ3Rva2VuKHZhX2FsaXN0KTsKLSAgICB2b2lkICAgICAgICAgICAgZGVidWdfY29tYm9fbmModmFfYWxpc3QpOworICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZyhjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCisgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKKyAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2d0b2tlbihjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLikKKyAgICAgICAgICAgICAgICAgICAgICAgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOworICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z19jb21ib19uYyhjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi4pCisgICAgICAgICAgICAgICAgICAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMiwgMykpKTsKICNlbmRpZgogICAgIHZvaWQgICAgICAgICAgICBkZWJ1Z21zZ19vaWQoY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IG9pZCAqIHRoZW9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBsZW4pOwpAQCAtNDQsNyArNDksMTMgQEAKICAgICB2b2lkICAgICAgICAgICAgZGVidWdtc2dfaGV4dGxpKGNvbnN0IGNoYXIgKnRva2VuLCB1X2NoYXIgKiB0aGVkYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbik7CiAgICAgdm9pZCAgICAgICAgICAgIGRlYnVnX2luZGVudF9hZGQoaW50IGFtb3VudCk7Ci0gICAgY2hhciAgICAgICAgICAgKmRlYnVnX2luZGVudCh2b2lkKTsKKyAgICBpbnQgICAgICAgICAgICAgZGVidWdfaW5kZW50X2dldCh2b2lkKTsKKyAgICAvKgorICAgICAqIFdoYXQgaXMgc2FpZCBhYm92ZSBpcyB0cnVlIGZvciB0aGlzIGZ1bmN0aW9uIGFzIHdlbGwuIEZ1cnRoZXIgdGhpcworICAgICAqIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQgYW5kIG9ubHkgcHJvdmlkZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgorICAgICAqIFBsZWFzZSB1c2UgIiUqcyIsIGRlYnVnX2luZGVudF9nZXQoKSwgIiIgaWYgeW91IHVzZWQgdGhpcyBvbmUgYmVmb3JlLgorICAgICAqLworICAgIGNvbnN0IGNoYXIgICAgICpkZWJ1Z19pbmRlbnQodm9pZCk7CiAKICAgICAvKgogICAgICAqIFVzZSB0aGVzZSBtYWNyb3MgaW5zdGVhZCBvZiB0aGUgZnVuY3Rpb25zIGFib3ZlIHRvIGFsbG93IHRoZW0gdG8gYmUKQEAgLTEyMSw5ICsxMzIsOSBAQAogI2RlZmluZSBfX0RCR01TR0xfTkMoeCkgIF9fREJHVFJBQ0U7IGRlYnVnbXNnIHgKICNkZWZpbmUgX19EQkdNU0dUTF9OQyh4KSBfX0RCR1RSQUNFOyBkZWJ1Z19jb21ib19uYyB4CiAKLSNpZmRlZiAgSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRAotI2RlZmluZSBfX0RCR1RSQUNFICAgICAgIF9fREJHTVNHVCgoInRyYWNlIiwiJXMoKTogJXMsICVkOlxuIixfX0ZVTkNUSU9OX18sXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX19GSUxFX18sX19MSU5FX18pKQorI2lmZGVmICBORVRTTk1QX0ZVTkNUSU9OCisjZGVmaW5lIF9fREJHVFJBQ0UgICAgICAgX19EQkdNU0dUKCgidHJhY2UiLCIlcygpOiAlcywgJWQ6XG4iLFwKKwkJCQlORVRTTk1QX0ZVTkNUSU9OLF9fRklMRV9fLF9fTElORV9fKSkKICNlbHNlCiAjZGVmaW5lIF9fREJHVFJBQ0UgICAgICAgX19EQkdNU0dUKCgidHJhY2UiLCIgJXMsICVkOlxuIiwgX19GSUxFX18sX19MSU5FX18pKQogI2VuZGlmCkBAIC0xMzYsMTEgKzE0NywxMSBAQAogI2RlZmluZSBfX0RCR01TR09JRFJBTkdFKHgpIGRlYnVnbXNnX29pZHJhbmdlIHgKICNkZWZpbmUgX19EQkdNU0dIRVgoeCkgICAgIGRlYnVnbXNnX2hleCB4CiAjZGVmaW5lIF9fREJHTVNHSEVYVExJKHgpICBkZWJ1Z21zZ19oZXh0bGkgeAotI2RlZmluZSBfX0RCR0lOREVOVCgpICAgICAgZGVidWdfaW5kZW50KCkKKyNkZWZpbmUgX19EQkdJTkRFTlQoKSAgICAgIGRlYnVnX2luZGVudF9nZXQoKQogI2RlZmluZSBfX0RCR0lOREVOVEFERCh4KSAgZGVidWdfaW5kZW50X2FkZCh4KQogI2RlZmluZSBfX0RCR0lOREVOVE1PUkUoKSAgZGVidWdfaW5kZW50X2FkZCgyKQogI2RlZmluZSBfX0RCR0lOREVOVExFU1MoKSAgZGVidWdfaW5kZW50X2FkZCgtMikKLSNkZWZpbmUgX19EQkdQUklOVElOREVOVCh0b2tlbikgX19EQkdNU0dUTCgodG9rZW4sICIlcyIsIF9fREJHSU5ERU5UKCkpKQorI2RlZmluZSBfX0RCR1BSSU5USU5ERU5UKHRva2VuKSBfX0RCR01TR1RMKCh0b2tlbiwgIiUqcyIsIF9fREJHSU5ERU5UKCksICIiKSkKIAogI2RlZmluZSBfX0RCR0RVTVBIRUFERVIodG9rZW4seCkgXAogICAgICAgICBfX0RCR1BSSU5USU5ERU5UKCJkdW1waF8iIHRva2VuKTsgXApAQCAtMTU3LDEyICsxNjgsMTEgQEAKIAogI2RlZmluZSBfX0RCR0RVTVBTRUNUSU9OKHRva2VuLHgpIFwKICAgICAgICAgX19EQkdQUklOVElOREVOVCgiZHVtcGhfIiB0b2tlbik7IFwKLSAgICAgICAgZGVidWdtc2coImR1bXBoXyIgdG9rZW4seCk7IFwKLSAgICAgICAgZGVidWdtc2coImR1bXBoXyIgdG9rZW4sIlxuIik7IFwKKyAgICAgICAgZGVidWdtc2coImR1bXBoXyIgdG9rZW4sIiVzXG4iLHgpO1wKICAgICAgICAgX19EQkdJTkRFTlRNT1JFKCkKIAogI2RlZmluZSBfX0RCR0RVTVBTRVRVUCh0b2tlbixidWYsbGVuKSBcCi0gICAgICAgIGRlYnVnbXNnKCJkdW1weCIgdG9rZW4sICJkdW1weF8lczolcyIsIHRva2VuLCBfX0RCR0lOREVOVCgpKTsgXAorICAgICAgICBkZWJ1Z21zZygiZHVtcHgiIHRva2VuLCAiZHVtcHhfJXM6JSpzIiwgdG9rZW4sIF9fREJHSU5ERU5UKCksICIiKTsgXAogICAgICAgICBfX0RCR01TR0hFWCgoImR1bXB4XyIgdG9rZW4sYnVmLGxlbikpOyBcCiAgICAgICAgIGlmIChkZWJ1Z19pc190b2tlbl9yZWdpc3RlcmVkKCJkdW1wdiIgdG9rZW4pID09IFNOTVBFUlJfU1VDQ0VTUyB8fCBcCiAgICAgICAgICAgICBkZWJ1Z19pc190b2tlbl9yZWdpc3RlcmVkKCJkdW1wdl8iIHRva2VuKSAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsgXApAQCAtMTcwLDcgKzE4MCw3IEBACiAgICAgICAgIH0gZWxzZSB7IFwKICAgICAgICAgICAgIGRlYnVnbXNnKCJkdW1weF8iIHRva2VuLCIgICIpOyBcCiAgICAgICAgIH0gXAotICAgICAgICBkZWJ1Z21zZygiZHVtcHYiIHRva2VuLCAiZHVtcHZfJXM6JXMiLCB0b2tlbiwgX19EQkdJTkRFTlQoKSk7CisgICAgICAgIGRlYnVnbXNnKCJkdW1wdiIgdG9rZW4sICJkdW1wdl8lczolKnMiLCB0b2tlbiwgX19EQkdJTkRFTlQoKSwgIiIpOwogCiAvKioqKioqKioqKioqKioqKioqKiBFbmQgICBwcml2YXRlIG1hY3JvcyAqKioqKioqKioqKioqKioqKioqKioqKiovCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCkBAIC0xODksNyArMTk5LDYgQEAKICNkZWZpbmUgREVCVUdNU0dPSURSQU5HRSh4KSBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdNU0dPSURSQU5HRSh4KTt9IH13aGlsZSgwKQogI2RlZmluZSBERUJVR01TR0hFWCh4KSAgICAgZG8ge2lmIChfREJHX0lGXykge19fREJHTVNHSEVYKHgpO30gfXdoaWxlKDApCiAjZGVmaW5lIERFQlVHTVNHSEVYVExJKHgpICBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdNU0dIRVhUTEkoeCk7fSB9d2hpbGUoMCkKLSNkZWZpbmUgREVCVUdJTkRFTlQoKSAgICAgIGRvIHtpZiAoX0RCR19JRl8pIHtfX0RCR0lOREVOVCgpO30gfXdoaWxlKDApCiAjZGVmaW5lIERFQlVHSU5ERU5UQUREKHgpICBkbyB7aWYgKF9EQkdfSUZfKSB7X19EQkdJTkRFTlRBREQoeCk7fSB9d2hpbGUoMCkKICNkZWZpbmUgREVCVUdJTkRFTlRNT1JFKCkgIGRvIHtpZiAoX0RCR19JRl8pIHtfX0RCR0lOREVOVE1PUkUoKTt9IH13aGlsZSgwKQogI2RlZmluZSBERUJVR0lOREVOVExFU1MoKSAgZG8ge2lmIChfREJHX0lGXykge19fREJHSU5ERU5UTEVTUygpO30gfXdoaWxlKDApCkBAIC0yMjMsNyArMjMyLDYgQEAKICNkZWZpbmUgREVCVUdNU0dIRVgoeCkKICNkZWZpbmUgREVCVUdJRih4KSAgICAgICAgaWYoMCkKICNkZWZpbmUgREVCVUdEVU1QKHQsYixsLHApCi0jZGVmaW5lIERFQlVHSU5ERU5UKCkKICNkZWZpbmUgREVCVUdJTkRFTlRNT1JFKCkKICNkZWZpbmUgREVCVUdJTkRFTlRMRVNTKCkKICNkZWZpbmUgREVCVUdJTkRFTlRBREQoeCkKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAppbmRleCAwZDMyYzQ0Li5mNzlhZWJkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCkBAIC03MiwxMCArNzIsMTUgQEAKICAgICAvKgogICAgICAqIEFjY2VzcyBjb250cm9sIHN0YXRlbWVudHMgZm9yIHRoZSBhZ2VudCAKICAgICAgKi8KLSNkZWZpbmUgUk9OTFkJMHgxICAgICAgICAgICAgIC8qIHJlYWQgYWNjZXNzIG9ubHkgKi8KLSNkZWZpbmUgUldSSVRFCTB4MiAgICAgICAgICAgICAvKiByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgKG11c3QgaGF2ZSAweDIgYml0IHNldCkgKi8KKyNkZWZpbmUgTkVUU05NUF9PTERBUElfUk9OTFkJMHgxICAgICAvKiByZWFkIGFjY2VzcyBvbmx5ICovCisjZGVmaW5lIE5FVFNOTVBfT0xEQVBJX1JXUklURQkweDIgICAgIC8qIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyAobXVzdCBoYXZlIDB4MiBiaXQgc2V0KSAqLworI2RlZmluZSBORVRTTk1QX09MREFQSV9OT0FDQ0VTUyAweDAwMDAgIC8qIG5vIGFjY2VzcyBmb3IgYW55Ym9keSAqLwogCi0jZGVmaW5lIE5PQUNDRVNTIDB4MDAwMCAgICAgICAgIC8qIG5vIGFjY2VzcyBmb3IgYW55Ym9keSAqLworI2lmbmRlZiBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUworI2RlZmluZSBST05MWSAgICAgICAgICAgTkVUU05NUF9PTERBUElfUk9OTFkKKyNkZWZpbmUgUldSSVRFICAgICAgICAgIE5FVFNOTVBfT0xEQVBJX1JXUklURQorI2RlZmluZSBOT0FDQ0VTUyAgICAgICAgTkVUU05NUF9PTERBUElfTk9BQ0NFU1MKKyNlbmRpZgogCiAgICAgLyoKICAgICAgKiBkZWZpbmVkIHR5cGVzIChmcm9tIHRoZSBTTUksIFJGQyAxMTU3KSAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAppbmRleCAwZGRlN2FlLi41NTBlNjY0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCkBAIC01LDE1ICs1LDExIEBACiBleHRlcm4gICAgICAgICAgIkMiIHsKICNlbmRpZgogCi0jaW5jbHVkZSA8c3RkaW8uaD4KICNpZiBIQVZFX1NZU0xPR19ICiAjaW5jbHVkZSA8c3lzbG9nLmg+CiAjZW5kaWYKLSNpZiBIQVZFX1NUREFSR19ICisjaW5jbHVkZSA8c3RkaW8uaD4KICNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCiAKICNpZm5kZWYgTE9HX0VSUgogI2RlZmluZSBMT0dfRU1FUkcgICAgICAgMCAgICAgICAvKiBzeXN0ZW0gaXMgdW51c2FibGUgKi8KQEAgLTM1LDYgKzMxLDE0IEBACiAjZGVmaW5lIERFRkFVTFRfTE9HX0lEICJuZXQtc25tcCIKICNlbmRpZgogCisjZGVmaW5lIE5FVFNOTVBfTE9HT05DRSh4KSBkbyB7IFwKKyAgICAgICAgc3RhdGljIGNoYXIgbG9nZ2VkID0gMDsgXAorICAgICAgICBpZiAoIWxvZ2dlZCkgeyAgICAgICAgICBcCisgICAgICAgICAgICBsb2dnZWQgPSAxOyAgICAgICAgIFwKKyAgICAgICAgICAgIHNubXBfbG9nIHggOyAgICAgICAgXAorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSgwKQorCiAgICAgdm9pZCAgICAgICAgICAgIGluaXRfc25tcF9sb2dnaW5nKHZvaWQpOwogICAgIHZvaWQgICAgICAgICAgICBzaHV0ZG93bl9zbm1wX2xvZ2dpbmcodm9pZCk7CiAgICAgaW50ICAgICAgICAgICAgIHNubXBfZ2V0X2RvX2xvZ2dpbmcodm9pZCk7CkBAIC01MywxNSArNTcsMTEgQEAKIAogICAgIGludCAgICAgICAgICAgICBzbm1wX3N0ZGVycmxvZ19zdGF0dXModm9pZCk7CiAKLSNpZiBIQVZFX1NUREFSR19ICi0jIGlmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA4KQorI2lmICFkZWZpbmVkKF9fR05VQ19fKSB8fCBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA4KQogICAgIGludCAgICAgICAgICAgICBzbm1wX2xvZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKTsKLSMgZWxzZQorI2Vsc2UKICAgICBpbnQgICAgICAgICAgICAgc25tcF9sb2coaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKICAgICAgICAgICAgICAgICAgICAgCV9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwotIyBlbmRpZgotI2Vsc2UKLSAgICBpbnQgICAgICAgICAgICAgc25tcF9sb2codmFfYWxpc3QpOwogI2VuZGlmCiAgICAgaW50ICAgICAgICAgICAgIHNubXBfdmxvZyhpbnQgcHJpb3JpdHksIGNvbnN0IGNoYXIgKmZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2xpc3QgYXApOwpAQCAtODgsNiArODgsNyBAQAogI2RlZmluZSBORVRTTk1QX0xPR0hBTkRMRVJfQ0FMTEJBQ0sJNQogI2RlZmluZSBORVRTTk1QX0xPR0hBTkRMRVJfTk9ORQkJNgogCisgICAgdm9pZCBuZXRzbm1wX3NldF9saW5lX2J1ZmZlcmluZyhGSUxFICpzdHJlYW0pOwogICAgIGludCBzbm1wX2xvZ19vcHRpb25zKGNoYXIgKm9wdGFyZywgaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2KTsKICAgICB2b2lkIHNubXBfbG9nX29wdGlvbnNfdXNhZ2UoY29uc3QgY2hhciAqbGVhZCwgRklMRSAqb3V0Zik7CiAgICAgY2hhciAqc25tcF9sb2dfc3lzbG9nbmFtZShjb25zdCBjaGFyICpzeXNsb2duYW1lKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDkyZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCkBAIC0wLDAgKzEsMTcgQEAKKy8qCisgKiBIZWFkZXIgZmlsZSBmb3IgdGhlIE9wZW5TU0wgV3JhcHBlcgorICovCisKKyNpZm5kZWYgU05NUF9PUEVOU1NMX0gKKyNkZWZpbmUgU05NUF9PUEVOU1NMX0gKKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgdm9pZCBuZXRzbm1wX2luaXRfb3BlbnNzbCh2b2lkKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU05NUF9PUEVOU1NMX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKaW5kZXggYWVlYjI0YS4uNmE2ODdkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKQEAgLTExLDcgKzExLDcgQEAKICAqIChOZXQtU05NUCBlbnRlcnByaXNlIG51bWJlciA9IDgwNzIpKjI1NiArIGxvY2FsX251bQogICovCiAjZGVmaW5lIE5FVFNOTVBfS1NNX1NFQ1VSSVRZX01PREVMICAgICAyMDY2NDMyCi0jZGVmaW5lIE5FVFNOTVBfTE9DQUxTTV9TRUNVUklUWV9NT0RFTCAyMDY2NDMzCisjZGVmaW5lIE5FVFNOTVBfVFNNX1NFQ1VSSVRZX01PREVMICAgICAyMDY2NDM0CiAKIHN0cnVjdCBzbm1wX3NlY21vZF9kZWY7CiAKQEAgLTkwLDYgKzkwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXNzaW9uICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICpvcmlncGR1KTsKK3R5cGVkZWYgaW50ICAgICAoU2VjbW9kRGlzY292ZXJ5TWV0aG9kKSAodm9pZCAqc2xwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb24pOwogCiAvKgogICogZGVmaW5pdGlvbiBvZiBhIHNlY3VyaXR5IG1vZHVsZQpAQCAtMTI1LDYgKzEyNywxMSBAQAogICAgICogZXJyb3IgYW5kIHJlcG9ydCBoYW5kbGluZwogICAgICovCiAgICBTZWNtb2RIYW5kbGVSZXBvcnQgKmhhbmRsZV9yZXBvcnQ7CisKKyAgIC8qCisgICAgKiBkZWZhdWx0IGVuZ2luZUlEIGRpc2NvdmVyeSBtZWNoYW5pc20KKyAgICAqLworICAgU2VjbW9kRGlzY292ZXJ5TWV0aG9kICpwcm9iZV9lbmdpbmVpZDsKIH07CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAppbmRleCBjZTc0MmQ1Li5jZDRlYzM3IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaApAQCAtMTYsOSArMTYsMTMgQEAKIAogLyogIFNvbWUgdHJhbnNwb3J0LXR5cGUgZmxhZ3MuICAqLwogCi0jZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1NUUkVBTQkweDAxCi0jZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0xJU1RFTgkweDAyCi0jZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1RVTk5FTEVECTB4MDQKKyNkZWZpbmUJCU5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNCSAweDAxCisjZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0xJU1RFTgkgMHgwMgorI2RlZmluZQkJTkVUU05NUF9UUkFOU1BPUlRfRkxBR19UVU5ORUxFRAkgMHgwNAorI2RlZmluZSAgICAgICAgIE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfVE1TVEFURSAgIDB4MDggIC8qIGluZGljYXRlcyBvcGFxdWUgaXMgYQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRTTSB0bVN0YXRlUmVmZXJlbmNlICovCisjZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0VNUFRZX1BLVCAweDEwCisjZGVmaW5lCQlORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0hPU1ROQU1FCSAweDgwICAvKiBmb3IgZm10YWRkciBob29rICovCiAKIC8qICBUaGUgc3RhbmRhcmQgU05NUCBkb21haW5zLiAgKi8KIApAQCAtMzMsNiArMzcsMzUgQEAKIE5FVFNOTVBfSU1QT1JUIHNpemVfdCAgIG5ldHNubXBERFBEb21haW5fbGVuOwogTkVUU05NUF9JTVBPUlQgc2l6ZV90ICAgbmV0c25tcElQWERvbWFpbl9sZW47CiAKKy8qIFN0cnVjdHVyZSB3aGljaCBzdG9yZXMgdHJhbnNwb3J0IHNlY3VyaXR5IG1vZGVsIHNwZWNpZmljIHBhcmFtZXRlcnMgKi8KKy8qIGlzbXMtc2Vjc2hlbGwtMTEgc2VjdGlvbiA0LjEgKi8KKworLyogY29udGVudHMgZG9jdW1lbnRlZCBpbiBkcmFmdC1pZXRmLWlzbXMtdHJhbnNwb3J0LXNlY3VyaXR5LW1vZGVsCisgICBTZWN0aW9uIDMuMiAqLworLyogbm90ZTogVkFDTSBvbmx5IGFsbG93cyA8PSAzMiBzbyB0aGlzIGlzIG92ZXJraWxsIHRpbGwgYW5vdGhlciBBQ00gY29tZXMgKi8KKyNkZWZpbmUgTkVUU05NUF9UTV9NQVhfU0VDTkFNRSAyNTYKKwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9hZGRyX3BhaXJfcyB7CisgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7CisgICBzdHJ1Y3QgaW5fYWRkciBsb2NhbF9hZGRyOworfSBuZXRzbm1wX2FkZHJfcGFpcjsKKwordHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlX3MgeworICAgb2lkICAgIHRyYW5zcG9ydERvbWFpbltNQVhfT0lEX0xFTl07CisgICBzaXplX3QgdHJhbnNwb3J0RG9tYWluTGVuOworICAgY2hhciAgIHNlY3VyaXR5TmFtZVtORVRTTk1QX1RNX01BWF9TRUNOQU1FXTsKKyAgIHNpemVfdCBzZWN1cml0eU5hbWVMZW47CisgICBpbnQgICAgcmVxdWVzdGVkU2VjdXJpdHlMZXZlbDsKKyAgIGludCAgICB0cmFuc3BvcnRTZWN1cml0eUxldmVsOworICAgY2hhciAgIHNhbWVTZWN1cml0eTsKKyAgIGludCAgICBzZXNzaW9uSUQ7CisgICAKKyAgIGNoYXIgICBoYXZlX2FkZHJlc3NlczsKKyAgIG5ldHNubXBfYWRkcl9wYWlyIGFkZHJlc3NlczsKKworICAgdm9pZCAqb3RoZXJUcmFuc3BvcnRPcGFxdWU7IC8qIFhYWDogTWF5IGhhdmUgbWVtIGxlYWsgaXNzdWVzICovCit9IG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZTsKKwogLyogIFN0cnVjdHVyZSB3aGljaCBkZWZpbmVzIHRoZSB0cmFuc3BvcnQtaW5kZXBlbmRlbnQgQVBJLiAgKi8KIAogdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF90cmFuc3BvcnRfcyB7CkBAIC02OCw2ICsxMDEsOSBAQAogCiAgICAgc2l6ZV90ICAgICAgICAgIG1zZ01heFNpemU7CiAKKyAgICAvKiBUTSBzdGF0ZSByZWZlcmVuY2UgcGVyIElTTVMgV0cgc29sdXRpb24gKi8KKyAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWY7CisKICAgICAvKiAgQ2FsbGJhY2tzLiAgQXJndW1lbnRzIGFyZToKICAgICAgKgkJCiAgICAgICogICAgICAgICAgICAgICJ0aGlzIiBwb2ludGVyLCBmZCwgYnVmLCBzaXplLCAqb3BhcXVlLCAqb3BhcXVlX2xlbmd0aCAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGQ1YTE5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB0c20uaApAQCAtMCwwICsxLDMwIEBACisvKgorICogSGVhZGVyIGZpbGUgZm9yIFRyYW5zcG9ydCBTZWN1cml0eSBNb2RlbCBzdXBwb3J0CisgKi8KKworI2lmbmRlZiBTTk1QVFNNX0gKKyNkZWZpbmUgU05NUFRTTV9ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIGludCAgICAgICAgICAgICB0c21fcmdlbmVyYXRlX291dF9tc2coc3RydWN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX3NlY21vZF9vdXRnb2luZ19wYXJhbXMgKik7CisgICAgaW50ICAgICAgICAgICAgIHRzbV9wcm9jZXNzX2luX21zZyhzdHJ1Y3Qgc25tcF9zZWNtb2RfaW5jb21pbmdfcGFyYW1zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKTsKKyAgICB2b2lkICAgICAgICAgICAgaW5pdF91c20odm9pZCk7CisKKyAgICAjZGVmaW5lIE5FVFNOTVBfVE1fU0FNRV9TRUNVUklUWV9OT1RfUkVRVUlSRUQgMAorICAgICNkZWZpbmUgTkVUU05NUF9UTV9VU0VfU0FNRV9TRUNVUklUWSAgICAgICAgICAxCisKKyAgICAvKiBiYXNpY2FsbHkgd2Ugc3RvcmUgYWxtb3N0IG5vdGhpbmcgZWxzZSBidXQgYSB0bSByZWYgKi8KKyAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlX3MgeworICAgICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZjsKKyAgICAgICBpbnQgc2VjdXJpdHlMZXZlbDsKKyAgICB9IG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2U7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNOTVBUU01fSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKaW5kZXggNWQxNDMwMy4uMThjZjExOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCkBAIC03NSw2ICs3NSw3IEBACiAgICAgICAgIHVfY2hhciAgICAgICAgICpwcml2S2V5OwogICAgICAgICBzaXplX3QgICAgICAgICAgcHJpdktleUxlbjsKICAgICAgICAgdV9jaGFyICAgICAgICAgKnVzZXJQdWJsaWNTdHJpbmc7CisgICAgICAgIHNpemVfdCAgICAgICAgICB1c2VyUHVibGljU3RyaW5nTGVuOwogICAgICAgICBpbnQgICAgICAgICAgICAgdXNlclN0YXR1czsKICAgICAgICAgaW50ICAgICAgICAgICAgIHVzZXJTdG9yYWdlVHlwZTsKICAgICAgICAvKiB0aGVzZSBhcmUgYWN0dWFsbHkgREggKiBwb2ludGVycyBidXQgb25seSBpZiBvcGVuc3NsIGlzIGF2YWlsLiAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oIGIvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCmluZGV4IGUyNDg0NDEuLmYzZDI5NWYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKQEAgLTksMTIgKzksMTMgQEAKIGV4dGVybiAgICAgICAgICAiQyIgewogI2VuZGlmCiAKLSNkZWZpbmUgTUFYX0VOR0lORUlEX0xFTkdUSCAxMjgKKyNkZWZpbmUgTUFYX0VOR0lORUlEX0xFTkdUSCAzMiAvKiBwZXIgU05NUC1GUkFNRVdPUkstTUlCIFNubXBFbmdpbmVJRCBUQyAqLwogCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfSVBWNCAgICAxCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfSVBWNiAgICAyCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfTUFDQUREUiAzCiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfVEVYVCAgICA0CisjZGVmaW5lIEVOR0lORUlEX1RZUEVfRVhBQ1QgICA1CiAjZGVmaW5lIEVOR0lORUlEX1RZUEVfTkVUU05NUF9STkQgMTI4CiAKICNkZWZpbmUJREVGQVVMVF9OSUMgImV0aDAiCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmggYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKaW5kZXggZjMyYzQzZi4uMDNjMmIwNyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaApAQCAtNTEsMTEgKzUxLDE0IEBACiAKICAgICAvKgogICAgICAqIERlZmluaXRpb25zIGZvciB0aGUgc3lzdGVtIGRlcGVuZGVudCBsaWJyYXJ5IGZpbGUKKyAgICAgKgorICAgICAqIERvIG5vdCBkZWZpbmUgJ3N0cnVjdCBkaXJlY3QnIHdoZW4gTVNWQ19QRVJMIGlzIGRlZmluZWQgYmVjYXVzZSBhCisgICAgICogc3RydWN0dXJlIHdpdGggdGhhdCBuYW1lIGlzIGFsc28gZGVmaW5lZCBpbiB0aGUgUGVybCBoZWFkZXIKKyAgICAgKiBsaWJcQ09SRVxkaXJlbnQuaC4gRG8gbm90IGRlY2xhcmUgZ2V0dGltZW9mZGF5KCkgZWl0aGVyLgogICAgICAqLwogI2lmbmRlZiBNU1ZDX1BFUkwKLSNpZmRlZiBXSU4zMgogCi0jaWZuZGVmIEhBVkVfRElSRU5UX0ggLyogTWluZ0dXIGhhcyBkaXJlbnQuaCBidXQgYWxzbyBkZWZpbmVzIFdJTjMyICovCisjaWZuZGVmIEhBVkVfUkVBRERJUgogICAgIC8qCiAgICAgICogc3RydWN0dXJlIG9mIGEgZGlyZWN0b3J5IGVudHJ5IAogICAgICAqLwpAQCAtNzksMzIgKzgyLDM2IEBACiAgICAgRElSICAgICAgICAgICAgKm9wZW5kaXIoY29uc3QgY2hhciAqZmlsZW5hbWUpOwogICAgIHN0cnVjdCBkaXJlY3QgICpyZWFkZGlyKERJUiAqIGRpcnApOwogICAgIGludCAgICAgICAgICAgICBjbG9zZWRpcihESVIgKiBkaXJwKTsKLSNlbmRpZiAvKiBIQVZFX0RJUkVOVF9IICovCisjZW5kaWYgLyogSEFWRV9SRUFERElSICovCiAKICNpZm5kZWYgSEFWRV9HRVRUSU1FT0ZEQVkKICAgICBpbnQgICAgICAgICAgICAgZ2V0dGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICosIHN0cnVjdCB0aW1lem9uZSAqdHopOwogI2VuZGlmCisKKyNlbmRpZgkJCQkvKiBNU1ZDX1BFUkwgKi8KKwogI2lmbmRlZiBIQVZFX1NUUk5DQVNFQ01QCiAgICAgaW50ICAgICAgICAgICAgIHN0cmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKICAgICBpbnQgICAgICAgICAgICAgc3RybmNhc2VjbXAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyLCBzaXplX3Qgbik7CiAjZW5kaWYKIAorI2lmZGVmIFdJTjMyCiAgICAgY2hhciAgICAgICAgICAgKndpbnNvY2tfc3RhcnR1cCh2b2lkKTsKICAgICB2b2lkICAgICAgICAgICAgd2luc29ja19jbGVhbnVwKHZvaWQpOwotCiAjZGVmaW5lIFNPQ0tfU1RBUlRVUCB3aW5zb2NrX3N0YXJ0dXAoKQogI2RlZmluZSBTT0NLX0NMRUFOVVAgd2luc29ja19jbGVhbnVwKCkKLQogI2Vsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAhV0lOMzIgKi8KLQogI2RlZmluZSBTT0NLX1NUQVJUVVAKICNkZWZpbmUgU09DS19DTEVBTlVQCi0KICNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV0lOMzIgKi8KLSNlbmRpZgkJCQkvKiBNU1ZDX1BFUkwgKi8KIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+ICAgICAvKiBGb3IgZGVmaW5pdGlvbiBvZiBpbl9hZGRyX3QgKi8KIAorICAgIC8qIFNpbXBseSByZXNvbHZlIGEgaG9zdG5hbWUgYW5kIHJldHVybiBmaXJzdCBJUHY0IGFkZHJlc3MuCisgICAgICogUmV0dXJucyAtMSBvbiBlcnJvciAqLworICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQoY29uc3QgY2hhciogbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2FkZHJfdCAqYWRkcl9vdXQpOworCiAgICAgaW5fYWRkcl90ICAgICAgIGdldF9teWFkZHIodm9pZCk7CiAgICAgbG9uZyAgICAgICAgICAgIGdldF91cHRpbWUodm9pZCk7CiAKQEAgLTEyOSw2ICsxMzYsOSBAQAogI2lmbmRlZiBIQVZFX1NUUlRPVUwKICAgICB1bnNpZ25lZCBsb25nICAgc3RydG91bChjb25zdCBjaGFyICosIGNoYXIgKiosIGludCk7CiAjZW5kaWYKKyNpZm5kZWYgSEFWRV9TVFJUT1VMTAorICAgIE5FVFNOTVBfSU1QT1JUIHVpbnQ2NF90IHN0cnRvdWxsKGNvbnN0IGNoYXIgKiwgY2hhciAqKiwgaW50KTsKKyNlbmRpZgogI2lmbmRlZiBIQVZFX1NUUlRPS19SCiAgICAgY2hhciAgICAgICAgICAgKnN0cnRva19yKGNoYXIgKiwgY29uc3QgY2hhciAqLCBjaGFyICoqKTsKICNlbmRpZgpAQCAtMTUxLDYgKzE2MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqb3NwbXJlbHByZWZpeCk7CiAgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfb3Nfa2VybmVsX3dpZHRoKHZvaWQpOwogCisgICAgaW50ICAgICAgICAgICAgIG5ldHNubXBfc3RyX3RvX3VpZChjb25zdCBjaGFyICp1c2Vyb3J1aWQpOworICAgIGludCAgICAgICAgICAgICBuZXRzbm1wX3N0cl90b19naWQoY29uc3QgY2hhciAqZ3JvdXBvcmdpZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaCBiL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxNzQyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaApAQCAtMCwwICsxLDcwIEBACisjaWZuZGVmIE5FVF9TTk1QX0xJQlJBUllfVFlQRVNfSAorI2RlZmluZSBORVRfU05NUF9MSUJSQVJZX1RZUEVTX0gKKworI2lmbmRlZiBORVRfU05NUF9DT05GSUdfSAorI2Vycm9yICJQbGVhc2UgaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+IGJlZm9yZSB0aGlzIGZpbGUiCisjZW5kaWYKKworCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKworCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2luZGV4X3MgeworICAgIHNpemVfdCAgICAgICAgICBsZW47CisgICAgb2lkICAgICAgICAgICAgKm9pZHM7Cit9IG5ldHNubXBfaW5kZXg7CisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfdm9pZF9hcnJheV9zIHsKKyAgICBzaXplX3QgICAgICAgICAgc2l6ZTsKKyAgICB2b2lkICAgICAgICAgICoqYXJyYXk7Cit9IG5ldHNubXBfdm9pZF9hcnJheTsKKworLyoKKyAqIHJlZmVyZW5jZXMgdG8gdmFyaW91cyB0eXBlcworICovCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl92b2lkIHsKKyAgICB2b2lkICAgICAgICAgICAqdmFsOworfSBuZXRzbm1wX3JlZl92b2lkOworCit0eXBlZGVmIHVuaW9uIHsKKyAgICB1X2xvbmcgICAgICAgICAgdWw7CisgICAgdV9pbnQgICAgICAgICAgIHVpOworICAgIHVfc2hvcnQgICAgICAgICB1czsKKyAgICB1X2NoYXIgICAgICAgICAgdWM7CisgICAgbG9uZyAgICAgICAgICAgIHNsOworICAgIGludCAgICAgICAgICAgICBzaTsKKyAgICBzaG9ydCAgICAgICAgICAgc3M7CisgICAgY2hhciAgICAgICAgICAgIHNjOworICAgIGNoYXIgICAgICAgICAgICpjcDsKKyAgICB2b2lkICAgICAgICAgICAqdnA7Cit9IG5ldHNubXBfY3ZhbHVlOworCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl9zaXplX3RfcyB7CisgICAgc2l6ZV90ICAgICAgICAgIHZhbDsKK30gICAgICAgICAgICAgICpuZXRzbm1wX3JlZl9zaXplX3Q7CisKKy8qCisgKiBTdHJ1Y3R1cmUgZm9yIGhvbGRpbmcgYSBzZXQgb2YgZmlsZSBkZXNjcmlwdG9ycywgc2ltaWxhciB0byBmZF9zZXQuCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgaG93ZXZlciBjYW4gaG9sZCBzby1jYWxsZWQgbGFyZ2UgZmlsZSBkZXNjcmlwdG9ycworICogKD49IEZEX1NFVFNJWkUgb3IgMTAyNCkgb24gVW5peCBzeXN0ZW1zIG9yIG1vcmUgdGhhbiBGRF9TRVRTSVpFICg2NCkKKyAqIHNvY2tldHMgb24gV2luZG93cyBzeXN0ZW1zLgorICoKKyAqIEl0IGlzIHNhZmUgdG8gYWxsb2NhdGUgdGhpcyBzdHJ1Y3R1cmUgb24gdGhlIHN0YWNrLgorICoKKyAqIFRoaXMgc3RydWN0dXJlIG11c3QgYmUgaW5pdGlhbGl6ZWQgYnkgY2FsbGluZyBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCkKKyAqIGFuZCBtdXN0IGJlIGNsZWFuZWQgdXAgdmlhIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoKS4gSWYgdGhpcyBsYXN0CisgKiBmdW5jdGlvbiBpcyBub3QgY2FsbGVkIHRoaXMgbWF5IHJlc3VsdCBpbiBhIG1lbW9yeSBsZWFrLgorICoKKyAqIFRoZSBtZW1iZXJzIG9mIHRoaXMgc3RydWN0dXJlIGFyZToKKyAqIGxmc19zZXRzaXplOiBtYXhpbXVtIHNldCBzaXplLgorICogbHNmX3NldHB0cjogIHBvaW50cyB0byBsZnNfc2V0IGlmIGxmc19zZXRzaXplIDw9IEZEX1NFVFNJWkUsIGFuZCBvdGhlcndpc2UKKyAqICAgICAgICAgICAgICB0byBkeW5hbWljYWxseSBhbGxvY2F0ZWQgbWVtb3J5LgorICogbGZzX3NldDogICAgIGZpbGUgZGVzY3JpcHRvciAvIHNvY2tldCBzZXQgZGF0YSBpZiBsZnNfc2V0c2l6ZSA8PSBGRF9TRVRTSVpFLgorICovCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX2xhcmdlX2ZkX3NldF9zIHsKKyAgICB1bnNpZ25lZCAgICAgICAgbGZzX3NldHNpemU7CisgICAgZmRfc2V0ICAgICAgICAgKmxmc19zZXRwdHI7CisgICAgZmRfc2V0ICAgICAgICAgIGxmc19zZXQ7Cit9IG5ldHNubXBfbGFyZ2VfZmRfc2V0OworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRfU05NUF9MSUJSQVJZX1RZUEVTX0ggKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oIGIvaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKaW5kZXggMDlmZjVmNS4uNzA2OGJmYiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKQEAgLTcsNiArNyw2MCBAQAogCiAjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KIAorI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gICAgICAgICAgIkMiIHsKKyNlbmRpZgorCisgICAgLyogSW5pdGlhbGlzYXRpb24gYW5kIFNodXRkb3duICovCisgICAgdm9pZCAgICAgICAgICAgIG5ldHNubXBfaW5pdF9taWIodm9pZCk7CisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCisgICAgdm9pZCAgICAgICAgICAgIGluaXRfbWliKHZvaWQpOworICAgIHZvaWQgICAgICAgICAgICBpbml0X21pYl9pbnRlcm5hbHModm9pZCk7CisjZW5kaWYKKyAgICB2b2lkICAgICAgICAgICAgc2h1dGRvd25fbWliKHZvaWQpOworCisgICAgIC8qIFJlYWRpbmcgYW5kIFBhcnNpbmcgTUlCcyAqLworICAgIGludCAgICAgICAgICAgICBhZGRfbWliZGlyKGNvbnN0IGNoYXIgKik7CisgICAgTkVUU05NUF9JTVBPUlQKKyAgICBzdHJ1Y3QgdHJlZSAgICAqbmV0c25tcF9yZWFkX21vZHVsZShjb25zdCBjaGFyICopOworI2lmbmRlZiBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUworICAgIHN0cnVjdCB0cmVlICAgICpyZWFkX21vZHVsZShjb25zdCBjaGFyICopOworI2VuZGlmCisgICAgc3RydWN0IHRyZWUgICAgKnJlYWRfbWliKGNvbnN0IGNoYXIgKik7CisgICAgc3RydWN0IHRyZWUgICAgKnJlYWRfYWxsX21pYnModm9pZCk7CisgICAgdm9pZCAgICAgICAgICAgIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqLCBpbnQpOworCisgICAgICAgICAvKiBmcm9tIHVjZC1jb21wYXQuaCAqLworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3NldF9taWJfd2FybmluZ3MoaW50KTsKKyAgICB2b2lkICAgICAgICAgICAgc25tcF9zZXRfbWliX2Vycm9ycyhpbnQpOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucyhpbnQpOworCisKKyAgICAgLyogU2VhcmNoaW5nIHRoZSBNSUIgVHJlZSAqLworICAgIG9pZCAgICAgICAgICAgICpzbm1wX3BhcnNlX29pZChjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CisgICAgaW50ICAgICAgICAgICAgIHJlYWRfb2JqaWQoY29uc3QgY2hhciAqLCBvaWQgKiwgc2l6ZV90ICopOworICAgIGludCAgICAgICAgICAgICBnZXRfbW9kdWxlX25vZGUoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIG9pZCAqLCBzaXplX3QgKik7CisKKyAgICAgLyogT3V0cHV0ICovCisgICAgdm9pZCAgICAgICAgICAgIHByaW50X21pYihGSUxFICogZnApOworCisgICAgdm9pZCAgICAgICAgICAgIHByaW50X29iamlkKGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOworICAgIHZvaWQgICAgICAgICAgIGZwcmludF9vYmppZChGSUxFICogZnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pOworICAgIGludCAgICAgICAgICAgc25wcmludF9vYmppZChjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuKTsKKworICAgIHZvaWQgICAgICAgICAgICBwcmludF9kZXNjcmlwdGlvbihvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpOworICAgIHZvaWQgICAgICAgICAgIGZwcmludF9kZXNjcmlwdGlvbihGSUxFICogZnAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCk7CisgICAgaW50ICAgICAgICAgICBzbnByaW50X2Rlc2NyaXB0aW9uKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sIGludCB3aWR0aCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCkBAIC0xOCw3ICs3Miw2IEBACiAgICAgICovCiAKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+Ci0KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L21pYi5oPgogI2lmbmRlZiBORVRTTk1QX0RJU0FCTEVfTUlCX0xPQURJTkcKICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3BhcnNlLmg+CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbgppbmRleCAzYzVkN2MyLi4wZWU2MDUyIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmguaW4KQEAgLTEsNCArMSw0IEBACi0vKiBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluLiAgR2VuZXJhdGVkIGZyb20gY29uZmlndXJlLmluIGJ5IGF1dG9oZWFkZXIuICAqLworLyogaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbi4gIEdlbmVyYXRlZCBmcm9tIGNvbmZpZ3VyZS5hYyBieSBhdXRvaGVhZGVyLiAgKi8KIC8qIAogICogbmV0LXNubXAgY29uZmlndXJhdGlvbiBoZWFkZXIgZmlsZQogICovCkBAIC0yNCwyMzYgKzI0LDcgQEAKICAqLwogI2lmbmRlZiBORVRTTk1QX05PX0FVVE9DT05GX0RFRklOSVRJT05TCiAKLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludDMyX3QgKi8KLSN1bmRlZiBIQVZFX0lOVDMyX1QKIAotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdWludDMyX3QgKi8KLSN1bmRlZiBIQVZFX1VJTlQzMl9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVfaW50MzJfdCAqLwotI3VuZGVmIEhBVkVfVV9JTlQzMl9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludDY0X3QgKi8KLSN1bmRlZiBIQVZFX0lOVDY0X1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIHR5cGUgdWludDY0X3QgKi8KLSN1bmRlZiBIQVZFX1VJTlQ2NF9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIHVfaW50NjRfdCAqLwotI3VuZGVmIEhBVkVfVV9JTlQ2NF9UCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0eXBlIGludHB0cl90ICovCi0jdW5kZWYgSEFWRV9JTlRQVFJfVAotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdHlwZSB1aW50cHRyX3QgKi8KLSN1bmRlZiBIQVZFX1VJTlRQVFJfVAotCi0vKiBnb3Qgc29ja2xlbl90PyAqLwotI3VuZGVmIEhBVkVfU09DS0xFTl9UCi0KLS8qIGdvdCBpbl9hZGRyX3Q/ICovCi0jdW5kZWYgSEFWRV9JTl9BRERSX1QKLQotLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGRldnMoKSAqLwotI3VuZGVmIEhBVkVfR0VUREVWUwotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgZGV2c3RhdF9nZXRkZXZzKCkgKi8KLSN1bmRlZiBIQVZFX0RFVlNUQVRfR0VUREVWUwotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgPG5ldGluZXQvaW5fcGNiLmg+ICovCi0jdW5kZWYgSEFWRV9ORVRJTkVUX0lOX1BDQl9ICi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSA8c3lzL2Rpc2tsYWJlbC5oPiAqLwotI3VuZGVmIEhBVkVfU1lTX0RJU0tMQUJFTF9ICi0KLS8qIGRlZmluZSBpZiB5b3VyIGNvbXBpbGVyIChwcm9jZXNzb3IpIGRlZmluZXMgX19GVU5DVElPTl9fIGZvciB5b3UgKi8KLSN1bmRlZiBIQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVECi0KLS8qIG9uIGFpeCwgaWYgeW91IGhhdmUgcGVyZnN0YXQgKi8KLSN1bmRlZiBIQVZFX1BFUkZTVEFUCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBsaWJkYiwgbGlibm0gb3IgbGlicnBtLCByZXNwZWN0aXZlbHkgKi8KLSN1bmRlZiBIQVZFX0xJQkRCCi0jdW5kZWYgSEFWRV9MSUJOTQotI3VuZGVmIEhBVkVfTElCUlBNCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBwa2dpbmZvICovCi0jdW5kZWYgSEFWRV9QS0dJTkZPCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSBnZXRob3N0YnluYW1lICovCi0jdW5kZWYgSEFWRV9HRVRIT1NUQllOQU1FCi0KLS8qIGRlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcGVybF9ldmFsX3B2KCkgZnVuY3Rpb24gKi8KLSN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9MQwotCi0vKiBkZWZpbmUgaWYgeW91IGhhdmUgdGhlIFBlcmxfZXZhbF9wdigpIGZ1bmN0aW9uICovCi0jdW5kZWYgSEFWRV9QRVJMX0VWQUxfUFZfVUMKLQotLyogcHJpbnRpbmcgc3lzdGVtICovCi0jdW5kZWYgSEFWRV9MUFNUQVQKLSN1bmRlZiBMUFNUQVRfUEFUSAotI3VuZGVmIEhBVkVfUFJJTlRDQVAKLS8qIFVzZSBkbWFsbG9jIHRvIGRvIG1hbGxvYyBkZWJ1Z2dpbmc/ICovCi0jdW5kZWYgSEFWRV9ETUFMTE9DX0gKLQotLyogbG9jYXRpb24gb2YgVU5JWCBrZXJuZWwgKi8KLSNkZWZpbmUgS0VSTkVMX0xPQyAiL3ZtdW5peCIKLQotLyogbG9jYXRpb24gb2YgbW91bnQgdGFibGUgbGlzdCAqLwotI2RlZmluZSBFVENfTU5UVEFCICIvZXRjL21udHRhYiIKLQotLyogbG9jYXRpb24gb2Ygc3dhcCBkZXZpY2UgKG9rIGlmIG5vdCBmb3VuZCkgKi8KLSN1bmRlZiBETUVNX0xPQwotCi0vKiBDb21tYW5kIHRvIGdlbmVyYXRlIHBzIG91dHB1dCwgdGhlIGZpbmFsIGNvbHVtbiBtdXN0IGJlIHRoZSBwcm9jZXNzCi0gICBuYW1lIHdpdGhPVVQgYXJndW1lbnRzICovCi0jZGVmaW5lIFBTQ01EICIvYmluL3BzIgotCi0vKiBXaGVyZSBpcyB0aGUgdW5hbWUgY29tbWFuZCAqLwotI2RlZmluZSBVTkFNRVBST0cgIi9iaW4vdW5hbWUiCi0KLS8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIGxpbnV4IGFuZCAvcHJvYy9uZXQvZGV2IGhhcyB0aGUgY29tcHJlc3NlZAotICAgZmllbGQsIHdoaWNoIGV4aXN0cyBpbiBsaW51eCBrZXJuZWxzIDIuMiBhbmQgZ3JlYXRlci4gKi8KLSN1bmRlZiBQUk9DX05FVF9ERVZfSEFTX0NPTVBSRVNTRUQKLQotLyogZGVmaW5lIHJ0ZW50cnkgdG8gb3J0ZW50cnkgb24gU1lTViBtYWNoaW5lcyAoYWxwaGFzKSAqLwotI3VuZGVmIFJURU5UUlkKLQotLyogVXNlIEJTRCA0LjQgcm91dGluZyB0YWJsZSBlbnRyaWVzPyAqLwotI3VuZGVmIFJURU5UUllfNF80Ci0KLS8qIERvZXMgc3RydWN0IHNpZ2FjdGlvbiBoYXZlIGEgc2Ffc2lnYWN0aW9uIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TSUdBQ1RJT05fSEFTX1NBX1NJR0FDVElPTgotCi0vKiBEb2VzIHN0cnVjdCB0bSBoYXZlIGEgdG1fZ210b2ZmIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9UTV9IQVNfVE1fR01UT0ZGRgotCi0vKiBEb2VzIHN0cnVjdCBzb2NrYWRkciBoYXZlIGEgc2FfbGVuIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfTEVOCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9mYW1pbHkyIGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgaGF2ZSBhIHNzX2ZhbWlseSBmaWVsZD8gKi8KLSN1bmRlZiBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfU1NfRkFNSUxZCi0KLS8qIERvZXMgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgaGF2ZSBhIF9fc3NfZmFtaWx5IGZpZWxkPyAqLwotI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19fX1NTX0ZBTUlMWQotCi0vKiBEb2VzIHN0cnVjdCBpbjZfYWRkciBoYXZlIGEgczZfdW4uc2E2X2xhZGQgZmllbGQ/ICovCi0jdW5kZWYgU1RSVUNUX0lONl9BRERSX0hBU19TNl9VTl9TQTZfTEFERFIKLQotLyogcnRlbnRyeSBzdHJ1Y3R1cmUgdGVzdHMgKi8KLSN1bmRlZiBSVEVOVFJZX1JUX05FWFQKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUCi0jdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VOSVQKLSN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVVNFCi0jdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1JFRkNOVAotI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNICi0KLS8qIGlmbmV0IHN0cnVjdHVyZSB0ZXN0cyAqLwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEUKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFX0lGU19WQUxVRQotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfU1BFRUQKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1RZUEUKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lRRFJPUFMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfU0VDCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9MQVNUQ0hBTkdFX1RWX05TRUMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX05PUFJPVE8KLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09NQ0FTVFMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1hOQU1FCi0jdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PQllURVMKLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lCWVRFUwotI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQUREUkxJU1QKLQotLyogdGNwc3RhdC50Y3BzX3Jjdm1lbWRyb3AgKi8KLSN1bmRlZiBTVFJVQ1RfVENQU1RBVF9IQVNfVENQU19SQ1ZNRU1EUk9QCi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRElTQ0FSRAotCi0vKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVAotCi0vKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVEJDQVNUCi0KLS8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0jdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRlVMTFNPQ0sKLQotLyogYXJwaGQuYXRfbmV4dCAqLwotI3VuZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVAotCi0vKiBpZmFkZHIuaWZhX25leHQgKi8KLSN1bmRlZiBTVFJVQ1RfSUZBRERSX0hBU19JRkFfTkVYVAotCi0vKiBpZm5ldC5pZl9tdHUgKi8KLSN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX01UVQotCi0vKiBzd2RldnQuc3dfbmJsa3NlbmFibGVkICovCi0jdW5kZWYgU1RSVUNUX1NXREVWVF9IQVNfU1dfTkJMS1NFTkFCTEVECi0KLS8qIG5saXN0Lm5fdmFsdWUgKi8KLSN1bmRlZiBTVFJVQ1RfTkxJU1RfSEFTX05fVkFMVUUKLQotLyogbmxpc3Q2NC5uX3ZhbHVlICovCi0jdW5kZWYgU1RSVUNUX05MSVNUNjRfSEFTX05fVkFMVUUKLQotLyogaXBzdGF0IHN0cnVjdHVyZSB0ZXN0cyAqLwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URk9SV0FSRAotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URlJBRwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19ERUxJVkVSRUQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR0RST1BQRUQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR1RJTUVPVVQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTE9DQUxPVVQKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9QUk9UTwotI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1JPVVRFCi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09EUk9QUEVECi0jdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09GUkFHTUVOVFMKLSN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfUkVBU1NFTUJMRUQKLQotLyogdmZzc3RhdC5mX2Zyc2l6ZSAqLwotI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRQotCi0vKiB2ZnNzdGF0LmZfZmlsZXMgKi8KLSN1bmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GSUxFUwotCi0vKiBzdGF0ZnMgaW5vZGUgc3RydWN0dXJlIHRlc3RzKi8KLSN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZJTEVTCi0jdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GRlJFRQotI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRkFWQUlMCi0KLS8qIGRlc19rc19zdHJ1Y3Qud2Vha19rZXkgKi8KLSN1bmRlZiBTVFJVQ1RfREVTX0tTX1NUUlVDVF9IQVNfV0VBS19LRVkKLQotLyogaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMIGRlZmluZWQgKi8KLSN1bmRlZiBJRk5FVF9ORUVEU19LRVJORUwKLQotLyogc3lzY3RsIHdvcmtzIHRvIGdldCBib290dGltZSwgZXRjLi4uICovCi0jdW5kZWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTAotCi0vKiBkZWZpbmUgaWYgU0lPQ0dJRkFERFIgZXhpc3RzIGluIHN5cy9pb2N0bC5oICovCi0jdW5kZWYgU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSCi0KLS8qIERlZmluZSBpZiBzdGF0ZnMgdGFrZXMgMiBhcmdzIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IGhhcwotICAgdHlwZSBzdHJ1Y3QgZnNfZGF0YS4gW1VsdHJpeF0gKi8KLSN1bmRlZiBTVEFUX1NUQVRGU19GU19EQVRBCi0KLS8qIERlZmluZSBpZiB0aGUgVENQIHRpbWVyIGNvbnN0YW50cyBpbiA8bmV0aW5ldC90Y3BfdGltZXIuaD4KLSAgIGRlcGVuZCBvbiB0aGUgaW50ZWdlciB2YXJpYWJsZSBgaHonLiAgW0ZyZWVCU0QgNC54XSAqLwotI3VuZGVmIFRDUFRWX05FRURTX0haCi0KLS8qIE5vdC10by1iZS1jb21waWxlZCBtYWNyb3MgZm9yIHVzZSBieSBjb25maWd1cmUgb25seSAqLwotI2RlZmluZSBjb25maWdfcmVxdWlyZSh4KQotI2RlZmluZSBjb25maWdfZXhjbHVkZSh4KQotI2RlZmluZSBjb25maWdfYXJjaF9yZXF1aXJlKHgseSkKLSNkZWZpbmUgY29uZmlnX3BhcnNlX2RvdF9jb25mKHcseCx5LHopCi0jZGVmaW5lIGNvbmZpZ19hZGRfbWliKHgpCi0jZGVmaW5lIGNvbmZpZ19iZWxvbmdzX2luKHgpCi0jZGVmaW5lIGNvbmZpZ19lcnJvcih4KQotI2RlZmluZSBjb25maWdfd2FybmluZyh4KQotICAKICNpZiBkZWZpbmVkIChXSU4zMikgfHwgZGVmaW5lZCAobWluZ3czMikgfHwgZGVmaW5lZCAoY3lnd2luKQogI2RlZmluZSBFTlZfU0VQQVJBVE9SICI7IgogI2RlZmluZSBFTlZfU0VQQVJBVE9SX0NIQVIgJzsnCkBAIC0yNjQsNiArMzUsMjcgQEAKIAogLyogZGVmaW5pdGlvbnMgYWRkZWQgYnkgY29uZmlndXJlIG9uLXRoZS1mbHkgKi8KIAorI2RlZmluZSBjb25maWdfYmVsb25nc19pbih4KQorCisjZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpCisKKyNkZWZpbmUgY29uZmlnX2FyY2hfcmVxdWlyZSh4LHkpCisKKyNkZWZpbmUgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSh4KQorCisjZGVmaW5lIGNvbmZpZ19yZXF1aXJlKHgpCisKKyNkZWZpbmUgY29uZmlnX2FkZF9taWIoeCkKKworI2RlZmluZSBjb25maWdfcGFyc2VfZG90X2NvbmYodyx4LHkseikKKworI2RlZmluZSBjb25maWdfZXJyb3IoeCkKKworI2RlZmluZSBjb25maWdfd2FybmluZyh4KQorCisvKiBEZWZpbmUgaWYgYnVpbGRpbmcgdW5pdmVyc2FsIChpbnRlcm5hbCBoZWxwZXIgbWFjcm8pICovCisjdW5kZWYgQUNfQVBQTEVfVU5JVkVSU0FMX0JVSUxECisKIC8qIERlZmluZSB0byBvbmUgb2YgYF9nZXRiNjcnLCBgR0VUQjY3JywgYGdldGI2NycgZm9yIENyYXktMiBhbmQgQ3JheS1ZTVAKICAgIHN5c3RlbXMuIFRoaXMgZnVuY3Rpb24gaXMgcmVxdWlyZWQgZm9yIGBhbGxvY2EuYycgc3VwcG9ydCBvbiB0aG9zZSBzeXN0ZW1zLgogICAgKi8KQEAgLTI3Miw2ICs2NCwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgdXNpbmcgYGFsbG9jYS5jJy4gKi8KICN1bmRlZiBDX0FMTE9DQQogCisvKiBsb2NhdGlvbiBvZiBzd2FwIGRldmljZSAqLworI3VuZGVmIERNRU1fTE9DCisKKy8qIGxvY2F0aW9uIG9mIG1vdW50IHRhYmxlIGxpc3QgKi8KKyN1bmRlZiBFVENfTU5UVEFCCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgQUVTX2NmYjEyOF9lbmNyeXB0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0FFU19DRkIxMjhfRU5DUllQVAogCkBAIC0yOTEsMTggKzg5LDI1IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGFzbS90eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0FTTV9UWVBFU19ICiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgYmNvcHknIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfQkNPUFkKKy8qIERlZmluZSBpZiB1c2luZyBNWV9JTklUKCkgY2F1c2VzIGEgbGlua2VyIGVycm9yICovCisjdW5kZWYgSEFWRV9CUk9LRU5fTElCTVlTUUxDTElFTlQKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjZ2V0bmV4dCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9DR0VUTkVYVAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNob3duJyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX0NIT1dOCi0KIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBDb3VudGVyNjQnLiAqLwogI3VuZGVmIEhBVkVfQ09VTlRFUjY0CiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgc2Vuc29yc19nZXRfYWxsX3N1YmZlYXR1cmVzJywKKyAgIGFuZCB0byAwIGlmIHlvdSBkb24ndC4gKi8KKyN1bmRlZiBIQVZFX0RFQ0xfU0VOU09SU19HRVRfQUxMX1NVQkZFQVRVUkVTCisKKy8qIGRlZmluZSB0byAxIGlmIHlvdSBoYXZlIElSRV9DQUNIRSBkZWZpbmVkIGluIDxpbmV0L2lwLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfREVGSU5FRF9JUkVfQ0FDSEUKKworLyogZGVmaW5lIGlmIHlvdSBoYXZlIGRldnN0YXRfZ2V0ZGV2cygpICovCisjdW5kZWYgSEFWRV9ERVZTVEFUX0dFVERFVlMKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlbnQuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLgogICAgKi8KICN1bmRlZiBIQVZFX0RJUkVOVF9ICkBAIC0zMTMsNiArMTE4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGxvcGVuJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0RMT1BFTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRtYWxsb2MuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9ETUFMTE9DX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxlcnIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9FUlJfSAogCkBAIC0zNDMsNiArMTUxLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0YWRkcmluZm8nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUQUREUklORk8KIAorLyogZGVmaW5lIGlmIHlvdSBoYXZlIGdldGRldnMoKSAqLworI3VuZGVmIEhBVkVfR0VUREVWUworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldGR0YWJsZXNpemUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VURFRBQkxFU0laRQogCkBAIC0zNTIsNiArMTYzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0Z3JuYW0nIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfR0VUR1JOQU0KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0YnluYW1lJyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUUKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBnZXRob3N0bmFtZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9HRVRIT1NUTkFNRQogCkBAIC0zNzksNiArMTkzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZ2V0dGltZW9mZGF5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0dFVFRJTUVPRkRBWQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGdldHZmc3N0YXQnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfR0VUVkZTU1RBVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGdycC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0dSUF9ICiAKQEAgLTM5NCwyMyArMjExLDE3IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGlmX25hbWV0b2luZGV4JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0lGX05BTUVUT0lOREVYCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgaW5kZXgnIGZ1bmN0aW9uLiAqLwotI3VuZGVmIEhBVkVfSU5ERVgKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW5ldC9jb21tb24uaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9JTkVUX0NPTU1PTl9ICisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW5ldC9pcC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0lORVRfSVBfSAogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGluZXQvbWliMi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lORVRfTUlCMl9ICiAKLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBpbnQxNl90Jy4gKi8KLSN1bmRlZiBIQVZFX0lOVDE2X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYGludDMyX3QnLiAqLwotI3VuZGVmIEhBVkVfSU5UMzJfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgaW50NjRfdCcuICovCi0jdW5kZWYgSEFWRV9JTlQ2NF9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBpbnQ4X3QnLiAqLwotI3VuZGVmIEhBVkVfSU5UOF9UCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGluaXRncm91cHMnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfSU5JVEdST1VQUwogCiAvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgaW50bWF4X3QnLiAqLwogI3VuZGVmIEhBVkVfSU5UTUFYX1QKQEAgLTQyMSwyMSArMjMyLDMzIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfSU5UVFlQRVNfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgaW5fYWRkcl90Jy4gKi8KKyN1bmRlZiBIQVZFX0lOX0FERFJfVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGlvY3Rscy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lPQ1RMU19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9JT19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8aXBobHBhcGkuaD4gaGVhZGVyIGZpbGUuICovCisjdW5kZWYgSEFWRV9JUEhMUEFQSV9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga2luZm9fZ2V0X2NwdXMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS0lORk9fR0VUX0NQVVMKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrbmxpc3QnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS05MSVNUCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3JiNV9hdXRoX2Nvbl9nZXRzZW5kc3Via2V5JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX0tSQjVfQVVUSF9DT05fR0VUU0VORFNVQktFWQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGtzdGF0Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfS1NUQVRfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bV9nZXRwcm9jMicgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9LVk1fR0VUUFJPQzIKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm1fZ2V0cHJvY3MnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS1ZNX0dFVFBST0NTCiAKQEAgLTQ0OCwzMCArMjcxLDIxIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bV9vcGVuZmlsZXMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfS1ZNX09QRU5GSUxFUwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNyeXB0bycgbGlicmFyeSAoLWxjcnlwdG8pLiAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE9wZW5TU0wgbGlicmFyeSAoLWxjcnlwdG8gb3IgLWxlYXkzMikuICovCiAjdW5kZWYgSEFWRV9MSUJDUllQVE8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbCcgbGlicmFyeSAoLWxkbCkuICovCi0jdW5kZWYgSEFWRV9MSUJETAotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGVmZW5jZScgbGlicmFyeSAoLWxlZmVuY2UpLiAqLwotI3VuZGVmIEhBVkVfTElCRUZFTkNFCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZWxmJyBsaWJyYXJ5ICgtbGVsZikuICovCiAjdW5kZWYgSEFWRV9MSUJFTEYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrc3RhdCcgbGlicmFyeSAoLWxrc3RhdCkuICovCiAjdW5kZWYgSEFWRV9MSUJLU1RBVAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bScgbGlicmFyeSAoLWxrdm0pLiAqLwotI3VuZGVmIEhBVkVfTElCS1ZNCi0KLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbScgbGlicmFyeSAoLWxtKS4gKi8KLSN1bmRlZiBIQVZFX0xJQk0KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtbGQnIGxpYnJhcnkgKC1sbWxkKS4gKi8KICN1bmRlZiBIQVZFX0xJQk1MRAogCisvKiBkZWZpbmUgaWYgeW91IGhhdmUgbGlibm0gKi8KKyN1bmRlZiBIQVZFX0xJQk5NCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbnNsJyBsaWJyYXJ5ICgtbG5zbCkuICovCiAjdW5kZWYgSEFWRV9MSUJOU0wKIApAQCAtNDgxLDEyICsyOTUsMjEgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcGtjczExJyBsaWJyYXJ5ICgtbHBrY3MxMSkuICovCiAjdW5kZWYgSEFWRV9MSUJQS0NTMTEKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBycG0nIGxpYnJhcnkgKC1scnBtKS4gKi8KKyN1bmRlZiBIQVZFX0xJQlJQTQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYFJTQWdsdWUnIGxpYnJhcnkgKC1sUlNBZ2x1ZSkuICovCiAjdW5kZWYgSEFWRV9MSUJSU0FHTFVFCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcnNhcmVmJyBsaWJyYXJ5ICgtbHJzYXJlZikuICovCiAjdW5kZWYgSEFWRV9MSUJSU0FSRUYKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzc2gyJyBsaWJyYXJ5ICgtbHNzaDIpLiAqLworI3VuZGVmIEhBVkVfTElCU1NIMgorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNzbCcgbGlicmFyeSAoLWxzc2wpLiAqLworI3VuZGVmIEhBVkVfTElCU1NMCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGltaXRzLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTElNSVRTX0gKIApAQCAtNDk2LDE0ICszMTksMjMgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvaGRyZWcuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9IRFJFR19ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvbmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX05FVExJTktfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxpbnV4L3J0bmV0bGluay5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX0xJTlVYX1JUTkVUTElOS19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGludXgvdGFza3MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9MSU5VWF9UQVNLU19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bG9jYWxlLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTE9DQUxFX0gKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWVfcicgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9MT0NBTFRJTUVfUgorLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYGxvbmcgbG9uZyBpbnQnLiAqLworI3VuZGVmIEhBVkVfTE9OR19MT05HX0lOVAorCisvKiBTZXQgaWYgdGhlIGxwc3RhdCBjb21tYW5kIGlzIGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfTFBTVEFUCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbHJhbmQ0OCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9MUkFORDQ4CkBAIC01MjMsMTUgKzM1NSwxMiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtYWxsb2MuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9NQUxMT0NfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1lbWNweScgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9NRU1DUFkKLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1tb3ZlJyBmdW5jdGlvbi4gKi8KLSN1bmRlZiBIQVZFX01FTU1PVkUKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxtZW1vcnkuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9NRU1PUllfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgbWliMl9pcElmU3RhdHNFbnRyeV90Jy4gKi8KKyN1bmRlZiBIQVZFX01JQjJfSVBJRlNUQVRTRU5UUllfVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG1rc3RlbXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfTUtTVEVNUAogCkBAIC01NzQsNiArNDAzLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldDYvdGNwNl92YXIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJTkVUNl9UQ1A2X1ZBUl9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pY21wNi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfSUNNUDZfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaWNtcF92YXIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lDTVBfVkFSX0gKIApAQCAtNTgzLDYgKzQxNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaW4uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lOX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2luX3BjYi5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX05FVElORVRfSU5fUENCX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2luX3N5c3RtLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUSU5FVF9JTl9TWVNUTV9ICiAKQEAgLTYyNSw2ICs0NjAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpcHgvaXB4Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUSVBYX0lQWF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0bGluay9uZXRsaW5rLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfTkVUTElOS19ORVRMSU5LX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXQvaWZfYXJwLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfTkVUX0lGX0FSUF9ICiAKQEAgLTY0Niw2ICs0ODQsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXQvcm91dGUuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9ORVRfUk9VVEVfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgbmZkc190Jy4gKi8KKyN1bmRlZiBIQVZFX05GRFNfVAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG5saXN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX05MSVNUCiAKQEAgLTY3OSwxOCArNTIwLDM2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBjaS9wY2kuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QQ0lfUENJX0gKIAorLyogb24gYWl4LCBpZiB5b3UgaGF2ZSBwZXJmc3RhdCAqLworI3VuZGVmIEhBVkVfUEVSRlNUQVQKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgYHRoZSBwZXJsX2V2YWxfcHYnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUEVSTF9FVkFMX1BWX0xDCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgUGVybF9ldmFsX3B2JyBmdW5jdGlvbi4gKi8KKyN1bmRlZiBIQVZFX1BFUkxfRVZBTF9QVl9VQworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHBpY2wuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9QSUNMX0gKIAorLyogZGVmaW5lIGlmIHlvdSBoYXZlIHBrZ2luZm8gKi8KKyN1bmRlZiBIQVZFX1BLR0lORk8KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxwa2dpbmZvLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfUEtHSU5GT19ICiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cGtnbG9jcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BLR0xPQ1NfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBvbGwnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUE9MTAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHByZWFkNjQnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUFJFQUQ2NAogCisvKiBTZXQgaWYgL2V0Yy9wcmludGNhcCBleGlzdHMgKi8KKyN1bmRlZiBIQVZFX1BSSU5UQ0FQCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cHRocmVhZC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1BUSFJFQURfSAogCkBAIC03MDMsNiArNTYyLDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgcmFuZG9tJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1JBTkRPTQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlYWRkaXInIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfUkVBRERJUgorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHJlZ2NvbXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfUkVHQ09NUAogCkBAIC03MTUsNiArNTc3LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cnBtL2hlYWRlci5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1JQTV9IRUFERVJfSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHJwbS9ycG1maWxldXRpbC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1JQTV9SUE1GSUxFVVRJTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8cnBtL3JwbWxpYi5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1JQTV9SUE1MSUJfSAogCkBAIC03MzAsNiArNTk1LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2VsZWN0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFTEVDVAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNlbnNvcnMvc2Vuc29ycy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1NFTlNPUlNfU0VOU09SU19ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc2V0ZW52JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NFVEVOVgogCkBAIC03ODEsNyArNjQ5LDEwIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNvY2tldCcgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TT0NLRVQKIAotLyogRGVmaW5lIGlmIHR5cGUgc3NpemVfdCBpcyBhdmFpbGFibGUgKi8KKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBzb2NrbGVuX3QnLiAqLworI3VuZGVmIEhBVkVfU09DS0xFTl9UCisKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBzc2l6ZV90Jy4gKi8KICN1bmRlZiBIQVZFX1NTSVpFX1QKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdGF0ZnMnIGZ1bmN0aW9uLiAqLwpAQCAtNzkwLDkgKzY2MSw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0YXR2ZnMnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RBVFZGUwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGFyZy5oPiBoZWFkZXIgZmlsZS4gKi8KLSN1bmRlZiBIQVZFX1NUREFSR19ICi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW50Lmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1RESU5UX0gKIApAQCAtODA1LDkgKzY3Myw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNhc2VzdHInIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSQ0FTRVNUUgogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cmNocicgZnVuY3Rpb24uICovCi0jdW5kZWYgSEFWRV9TVFJDSFIKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJkdXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfU1RSRFVQCiAKQEAgLTgzOCwxMiArNzAzLDIxMSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NUUlRPVUwKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b3VsbCcgZnVuY3Rpb24uICovCisjdW5kZWYgSEFWRV9TVFJUT1VMTAorCisvKiBEZWZpbmUgdG8gMSBpZiBgYXRfbmV4dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgYXJwaGQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0FSUEhEX0FUX05FWFQKKworLyogRGVmaW5lIHRvIDEgaWYgYHdlYWtfa2V5JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBkZXNfa3Nfc3RydWN0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9ERVNfS1NfU1RSVUNUX1dFQUtfS0VZCisKKy8qIERlZmluZSB0byAxIGlmIGBkX3R5cGUnIGlzIG1lbWJlciBvZiBgc3RydWN0IGRpcmVudCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfRElSRU5UX0RfVFlQRQorCiAvKiBEZWZpbmUgdG8gMSBpZiBgc3BlZWRfaGknIGlzIG1lbWJlciBvZiBgc3RydWN0IGV0aHRvb2xfY21kJy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9FVEhUT09MX0NNRF9TUEVFRF9ISQogCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZhX25leHQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmYWRkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZBRERSX0lGQV9ORVhUCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9hZGRyaGVhZC50cWhfZmlyc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9BRERSSEVBRF9UUUhfRklSU1QKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2FkZHJsaXN0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQUREUkxJU1QKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2JhdWRyYXRlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQkFVRFJBVEUKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2JhdWRyYXRlLmlmc192YWx1ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0JBVURSQVRFX0lGU19WQUxVRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfaWJ5dGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSUJZVEVTCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9pbWNhc3RzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSU1DQVNUUworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfaXFkcm9wcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lRRFJPUFMKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX2xhc3RjaGFuZ2UudHZfbnNlYycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfTlNFQworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbGFzdGNoYW5nZS50dl9zZWMnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9MQVNUQ0hBTkdFX1RWX1NFQworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfbXR1JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTVRVCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9ub3Byb3RvJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTk9QUk9UTworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfb2J5dGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT0JZVEVTCisKKy8qIERlZmluZSB0byAxIGlmIGBpZl9vbWNhc3RzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT01DQVNUUworCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfc3BlZWQnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlmbmV0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9TUEVFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaWZfdHlwZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaWZuZXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1RZUEUKKworLyogRGVmaW5lIHRvIDEgaWYgYGlmX3huYW1lJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpZm5ldCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfWE5BTUUKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19jYW50Zm9yd2FyZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0NBTlRGT1JXQVJECisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfY2FudGZyYWcnIGlzIG1lbWJlciBvZiBgc3RydWN0IGlwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URlJBRworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2RlbGl2ZXJlZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0RFTElWRVJFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWdkcm9wcGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR0RST1BQRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19mcmFnbWVudGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR01FTlRFRAorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX2ZyYWd0aW1lb3V0JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR1RJTUVPVVQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19sb2NhbG91dCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0xPQ0FMT1VUCisKKy8qIERlZmluZSB0byAxIGlmIGBpcHNfbm9wcm90bycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgaXBzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUFJPVE8KKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19ub3JvdXRlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTk9ST1VURQorCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX29kcm9wcGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0RST1BQRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYGlwc19vZnJhZ21lbnRzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0ZSQUdNRU5UUworCisvKiBEZWZpbmUgdG8gMSBpZiBgaXBzX3JlYXNzZW1ibGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBpcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfUkVBU1NFTUJMRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYG1fY2xmcmVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBtYnN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX01CU1RBVF9NX0NMRlJFRQorCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9jbHVzdGVycycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9NQlNUQVRfTV9DTFVTVEVSUworCisvKiBEZWZpbmUgdG8gMSBpZiBgbV9tYnVmcycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgbWJzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9NQlNUQVRfTV9NQlVGUworCisvKiBEZWZpbmUgdG8gMSBpZiBgbXNnX2NvbnRyb2wnIGlzIG1lbWJlciBvZiBgc3RydWN0IG1zZ2hkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19DT05UUk9MCisKKy8qIERlZmluZSB0byAxIGlmIGBuX3ZhbHVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBubGlzdDY0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9OTElTVDY0X05fVkFMVUUKKworLyogRGVmaW5lIHRvIDEgaWYgYG5fdmFsdWUnIGlzIG1lbWJlciBvZiBgc3RydWN0IG5saXN0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFCisKKy8qIERlZmluZSB0byAxIGlmIGBydF9kc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfRFNUCisKKy8qIERlZmluZSB0byAxIGlmIGBydF9oYXNoJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0hBU0gKKworLyogRGVmaW5lIHRvIDEgaWYgYHJ0X25leHQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfTkVYVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfcmVmY250JyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBydGVudHJ5Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1JFRkNOVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgcnRfdW5pdCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgcnRlbnRyeScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9VTklUCisKKy8qIERlZmluZSB0byAxIGlmIGBydF91c2UnIGlzIG1lbWJlciBvZiBgc3RydWN0IHJ0ZW50cnknLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVVNFCisKKy8qIERlZmluZSB0byAxIGlmIGBzYV9zaWdhY3Rpb24nIGlzIG1lbWJlciBvZiBgc3RydWN0IHNpZ2FjdGlvbicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU0lHQUNUSU9OX1NBX1NJR0FDVElPTgorCiAvKiBEZWZpbmUgdG8gMSBpZiBgc2luNl9zY29wZV9pZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfaW42Jy4gKi8KICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRAogCisvKiBEZWZpbmUgdG8gMSBpZiBgc2FfbGVuJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzb2NrYWRkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfTEVOCisKKy8qIERlZmluZSB0byAxIGlmIGBzYV91bmlvbi5zYV9nZW5lcmljLnNhX2ZhbWlseTInIGlzIG1lbWJlciBvZiBgc3RydWN0CisgICBzb2NrYWRkcicuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyCisKKy8qIERlZmluZSB0byAxIGlmIGBzc19mYW1pbHknIGlzIG1lbWJlciBvZiBgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZCisKKy8qIERlZmluZSB0byAxIGlmIGBfX3NzX2ZhbWlseScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZScuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9fX1NTX0ZBTUlMWQorCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mYXZhaWwnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXRmcycuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkFWQUlMCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2ZmcmVlJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZGUkVFCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2ZpbGVzJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzdGF0ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZJTEVTCisKKy8qIERlZmluZSB0byAxIGlmIGBmX2Zyc2l6ZScgaXMgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdGZzJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GUlNJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgYGZfZmlsZXMnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GSUxFUworCisvKiBEZWZpbmUgdG8gMSBpZiBgZl9mcnNpemUnIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUKKworLyogRGVmaW5lIHRvIDEgaWYgYG1udF9kaXInIGlzIG1lbWJlciBvZiBgc3RydWN0IHN0YXR2ZnMnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfTU5UX0RJUgorCisvKiBEZWZpbmUgdG8gMSBpZiBgc3dfbmJsa3NlbmFibGVkJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCBzd2RldnQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1NXREVWVF9TV19OQkxLU0VOQUJMRUQKKworLyogRGVmaW5lIHRvIDEgaWYgYHRjcF9yY3ZtZW1kcm9wJyBpcyBtZW1iZXIgb2YgYHN0cnVjdCB0Y3BzdGF0Jy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9UQ1BTVEFUX1RDUF9SQ1ZNRU1EUk9QCisKKy8qIERlZmluZSB0byAxIGlmIGB0bV9nbXRvZmYnIGlzIG1lbWJlciBvZiBgc3RydWN0IHRtJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZGlzY2FyZCcgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0RJU0NBUkQKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfZnVsbHNvY2snIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19GVUxMU09DSworCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19ub3BvcnQnIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlQKKworLyogRGVmaW5lIHRvIDEgaWYgYHVkcHNfbm9wb3J0YmNhc3QnIGlzIG1lbWJlciBvZiBgc3RydWN0IHVkcHN0YXQnLiAqLworI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19OT1BPUlRCQ0FTVAorCisvKiBEZWZpbmUgdG8gMSBpZiBgdWRwc19vcGFja2V0cycgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdWRwc3RhdCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX09QQUNLRVRTCisKKy8qIERlZmluZSB0byAxIGlmIGBwZ3N3YXBpbicgaXMgbWVtYmVyIG9mIGBzdHJ1Y3QgdXZtZXhwJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9VVk1FWFBfUEdTV0FQSU4KKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzeXNjb25mJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1NZU0NPTkYKIApAQCAtODY2LDYgKzkzMCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9kaXNraW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfRElTS0lPX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvZGlza2xhYmVsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX0RJU0tMQUJFTF9ICisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL2RraW8uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfREtJT19ICiAKQEAgLTkxNSw2ICs5ODIsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzeXMvcGFyYW0uaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TWVNfUEFSQU1fSAogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wb2xsLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfU1lTX1BPTExfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9wb29sLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfU1lTX1BPT0xfSAogCkBAIC0xMDQ3LDE4ICsxMTE3LDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dWZzL3Vmcy9xdW90YS5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VGU19VRlNfUVVPVEFfSAogCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludDE2X3QnLiAqLwotI3VuZGVmIEhBVkVfVUlOVDE2X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVpbnQzMl90Jy4gKi8KLSN1bmRlZiBIQVZFX1VJTlQzMl9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1aW50NjRfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UNjRfVAotCi0vKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgdWludDhfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UOF9UCi0KIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1aW50bWF4X3QnLiAqLwogI3VuZGVmIEhBVkVfVUlOVE1BWF9UCiAKQEAgLTEwNzEsNiArMTEyOSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VOSVNURF9ICiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1bnNpZ25lZCBsb25nIGxvbmcgaW50Jy4gKi8KKyN1bmRlZiBIQVZFX1VOU0lHTkVEX0xPTkdfTE9OR19JTlQKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1c2xlZXAnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVVNMRUVQCiAKQEAgLTEwODYsMTggKzExNDcsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1dm0vdXZtX3BhcmFtLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVVZNX1VWTV9QQVJBTV9ICiAKLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDE2X3QnLiAqLwotI3VuZGVmIEhBVkVfVV9JTlQxNl9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDMyX3QnLiAqLwotI3VuZGVmIEhBVkVfVV9JTlQzMl9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDY0X3QnLiAqLwotI3VuZGVmIEhBVkVfVV9JTlQ2NF9UCi0KLS8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGB1X2ludDhfdCcuICovCi0jdW5kZWYgSEFWRV9VX0lOVDhfVAotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHZtL3N3YXBfcGFnZXIuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9WTV9TV0FQX1BBR0VSX0gKIApAQCAtMTExMywxOCArMTE2Miw1MyBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB2c25wcmludGYnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfVlNOUFJJTlRGCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8d2luZG93cy5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1dJTkRPV1NfSAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHdpbnNvY2syLmg+IGhlYWRlciBmaWxlLiAqLworI3VuZGVmIEhBVkVfV0lOU09DSzJfSAorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHdpbnNvY2suaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9XSU5TT0NLX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx3czJ0Y3BpcC5oPiBoZWFkZXIgZmlsZS4gKi8KKyN1bmRlZiBIQVZFX1dTMlRDUElQX0gKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx4dGkuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9YVElfSAogCisvKiBsb2NhdGlvbiBvZiBVTklYIGtlcm5lbCAqLworI3VuZGVmIEtFUk5FTF9MT0MKKworLyogUGF0aCB0byB0aGUgbHBzdGF0IGNvbW1hbmQgKi8KKyN1bmRlZiBMUFNUQVRfUEFUSAorCisvKiBEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLgorICAgKi8KKyN1bmRlZiBMVF9PQkpESVIKKworLyogZGVmaW5lIGlmIGFnZW50eCB0cmFuc3BvcnQgaXMgdG8gdXNlIGRvbWFpbiBzb2NrZXRzIG9ubHkgKi8KKyN1bmRlZiBORVRTTk1QX0FHRU5UWF9ET01fU09DS19PTkxZCisKIC8qIFVuaXggZG9tYWluIHNvY2tldCBmb3IgQWdlbnRYIG1hc3Rlci1zdWJhZ2VudCBjb21tdW5pY2F0aW9uICovCiAjdW5kZWYgTkVUU05NUF9BR0VOVFhfU09DS0VUCiAKIC8qIERlZmluZSBpZiBzdGF0aWMgaW5saW5lIGZ1bmN0aW9ucyBhcmUgdW5zdXBwb3J0ZWQgKi8KICN1bmRlZiBORVRTTk1QX0JST0tFTl9JTkxJTkUKIAorLyogc3lzY3RsIHdvcmtzIHRvIGdldCBib290dGltZSwgZXRjLi4uICovCisjdW5kZWYgTkVUU05NUF9DQU5fVVNFX1NZU0NUTAorCisvKiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWQgKi8KKyN1bmRlZiBORVRTTk1QX0NPTkZJR1VSRV9PUFRJT05TCisKKy8qIGRlZmF1bHQgbG9jYXRpb24gdG8gbG9vayBmb3IgbWlicyB0byBsb2FkIHVzaW5nIHRoZSBhYm92ZSB0b2tlbnMgYW5kL29yCisgICB0aG9zZSBpbiB0aGUgTUlCUyBlbnZyaW9ubWVudCB2YXJpYWJsZSAqLworI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJESVJTCisKKy8qIGRlZmF1bHQgbWliIGZpbGVzIHRvIGxvYWQsIHNwZWNpZmllZCBieSBwYXRoLiAqLworI3VuZGVmIE5FVFNOTVBfREVGQVVMVF9NSUJGSUxFUworCiAvKiBEZWZpbmUgaWYgREVTIGVuY3J5cHRpb24gc2hvdWxkIG5vdCBiZSBzdXBwb3J0ZWQgKi8KICN1bmRlZiBORVRTTk1QX0RJU0FCTEVfREVTCiAKQEAgLTExNDMsOSArMTIyNyw4NSBAQAogLyogRGVmaW5lIGlmIFNOTVB2MmMgY29kZSBzaG91bGQgbm90IGJlIGluY2x1ZGVkICovCiAjdW5kZWYgTkVUU05NUF9ESVNBQkxFX1NOTVBWMkMKIAorLyogRGVmaW5lIGlmIHlvdSBhcmUgZW1iZWRkaW5nIHBlcmwgaW4gdGhlIG1haW4gYWdlbnQuICovCisjdW5kZWYgTkVUU05NUF9FTUJFRERFRF9QRVJMCisKKy8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byBlbmFibGUgSVB2NiBzdXBwb3J0ICovCisjdW5kZWYgTkVUU05NUF9FTkFCTEVfSVBWNgorCisvKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gcmVzdHJpY3QgU01VWCBjb25uZWN0aW9ucyB0byBsb2NhbGhvc3QgYnkgZGVmYXVsdCAqLworI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVgKKworLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE1GRCBtb2R1bGUgcmV3cml0ZXMgKi8KKyN1bmRlZiBORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMKKworLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGNvbXBpbGUgc3VwcG9ydCBmb3IgYm90aCBhdXRoZW50aWNhdGlvbiBhbmQgcHJpdmFjeQorICAgc3VwcG9ydC4gKi8KKyN1bmRlZiBORVRTTk1QX0VOQUJMRV9TQ0FQSV9BVVRIUFJJVgorCisvKiB0ZXN0aW5nIGNvZGUgc2VjdGlvbnMuICovCisjdW5kZWYgTkVUU05NUF9FTkFCTEVfVEVTVElOR19DT0RFCisKKy8qIFNob3VsZCBldmFsdWF0ZSB0byB0aGUgbmFtZSBvZiB0aGUgY3VycmVudCBmdW5jdGlvbiBpZiBkZWZpbmVkICovCisjdW5kZWYgTkVUU05NUF9GVU5DVElPTgorCisvKiBpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUwgZGVmaW5lZCAqLworI3VuZGVmIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMCisKKy8qIGlmbmV0IG5lZWRzIHRvIGhhdmUgX0tFUk5FTF9TVFJVQ1RVUkVTIGRlZmluZWQgKi8KKyN1bmRlZiBORVRTTk1QX0lGTkVUX05FRURTX0tFUk5FTF9TVFJVQ1RVUkVTCisKKy8qIERlZmluZSB0byBzdXBwcmVzcyBpbmNsdXNpb24gb2YgZGVwcmVjYXRlZCBmdW5jdGlvbnMgKi8KKyN1bmRlZiBORVRTTk1QX05PX0RFUFJFQ0FURURfRlVOQ1RJT05TCisKKy8qIElmIHlvdSBkb24ndCB3YW50IHRoZSBhZ2VudCB0byByZXBvcnQgb24gdmFyaWFibGVzIGl0IGRvZXNuJ3QgaGF2ZSBkYXRhIGZvcgorICAgKi8KKyN1bmRlZiBORVRTTk1QX05PX0RVTU1ZX1ZBTFVFUworCisvKiBJZiB3ZSBkb24ndCB3YW50IHRvIHVzZSBrbWVtLiAqLworI3VuZGVmIE5FVFNOTVBfTk9fS01FTV9VU0FHRQorCisvKiBJZiB5b3UgZG9uJ3QgaGF2ZSByb290IGFjY2VzcyBkb24ndCBleGl0IHVwb24ga21lbSBlcnJvcnMgKi8KKyN1bmRlZiBORVRTTk1QX05PX1JPT1RfQUNDRVNTCisKKy8qIHVtYXNrIHBlcm1pc3Npb25zIHRvIHNldCB1cCBwZXJzaXN0ZW50IGZpbGVzIHdpdGggKi8KKyN1bmRlZiBORVRTTk1QX1BFUlNJU1RFTlRfTUFTSworCisvKiBTaXplIHByZWZpeCB0byB1c2UgdG8gcHJpbnRmIGEgc2l6ZV90IG9yIHNzaXplX3QgKi8KKyN1bmRlZiBORVRTTk1QX1BSSXoKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aCByZWVudHJhbnQvdGhyZWFkZWQgY29kZSAoaW5jb21wbGV0ZSkuCisgICAqLworI3VuZGVmIE5FVFNOTVBfUkVFTlRSQU5UCisKKy8qIGRlZmluZSBpZiB5b3UgZG8gbm90IHdhbnQgc25tcHRyYXBkIHRvIHJlZ2lzdGVyIGFzIGFuIEFnZW50WCBzdWJhZ2VudCAqLworI3VuZGVmIE5FVFNOTVBfU05NUFRSQVBEX0RJU0FCTEVfQUdFTlRYCisKIC8qIFBhdHRlcm4gb2YgdGVtcG9yYXJ5IGZpbGVzICovCiAjdW5kZWYgTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTgogCisvKiBkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgTUQ1IGNvZGUgLi4uICovCisjdW5kZWYgTkVUU05NUF9VU0VfSU5URVJOQUxfTUQ1CisKKy8qIERlZmluZSB0aGlzIGlmIHlvdSdyZSB1c2luZyBIZWltZGFsIEtlcmJlcm9zICovCisjdW5kZWYgTkVUU05NUF9VU0VfS0VSQkVST1NfSEVJTURBTAorCisvKiBEZWZpbmUgdGhpcyBpZiB3ZSdyZSB1c2luZyB0aGUgbmV3IE1JVCBjcnlwdG8gQVBJICovCisjdW5kZWYgTkVUU05NUF9VU0VfS0VSQkVST1NfTUlUCisKKy8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBteXNxbCBjb2RlIGZvciBzbm1wdHJhcGQgLi4uICovCisjdW5kZWYgTkVUU05NUF9VU0VfTVlTUUwKKworLyogRGVmaW5lIGlmIHlvdSBhcmUgdXNpbmcgdGhlIGNvZGVTMTEgbGlicmFyeSAuLi4gKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9QS0NTMTEKKworLyogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgbGltX3NlbnNvcnMgdjMgb3IgbGF0ZXIgKi8KKyN1bmRlZiBORVRTTk1QX1VTRV9TRU5TT1JTX1YzCisKKy8qIFNob3VsZCB3ZSBjb21waWxlIHRvIHVzZSBzcGVjaWFsIG9wYXF1ZSB0eXBlczogZmxvYXQsIGRvdWJsZSwgY291bnRlcjY0LAorICAgaTY0LCB1aTY0LCB1bmlvbj8gKi8KKyN1bmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKKwogLyogRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuICovCiAjaWZuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUCiAjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQKQEAgLTExNzEsNTIgKzEzMzEsMTI0IEBACiAjdW5kZWYgUEFDS0FHRV9WRVJTSU9OCiAjZW5kaWYKIAorLyogQ29tbWFuZCB0byBnZW5lcmF0ZSBwcyBvdXRwdXQsIHRoZSBmaW5hbCBjb2x1bW4gbXVzdCBiZSB0aGUgcHJvY2VzcyBuYW1lCisgICB3aXRoT1VUIGFyZ3VtZW50cyAqLworI3VuZGVmIFBTQ01ECisKIC8qIERlZmluZSBhcyB0aGUgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIChgaW50JyBvciBgdm9pZCcpLiAqLwogI3VuZGVmIFJFVFNJR1RZUEUKIAotLyogVGhlIHNpemUgb2YgYSBgaW50JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworLyogZGVmaW5lIHJ0ZW50cnkgdG8gb3J0ZW50cnkgb24gU1lTViBtYWNoaW5lcyAoYWxwaGFzKSAqLworI3VuZGVmIFJURU5UUlkKKworLyogVXNlIEJTRCA0LjQgcm91dGluZyB0YWJsZSBlbnRyaWVzPyAqLworI3VuZGVmIFJURU5UUllfNF80CisKKy8qIFRoZSBzaXplIG9mIGBpbnQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjdW5kZWYgU0laRU9GX0lOVAogCi0vKiBUaGUgc2l6ZSBvZiBhIGBpbnRtYXhfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBpbnRtYXhfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICN1bmRlZiBTSVpFT0ZfSU5UTUFYX1QKIAotLyogVGhlIHNpemUgb2YgYSBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI3VuZGVmIFNJWkVPRl9MT05HCiAKLS8qIFRoZSBzaXplIG9mIGEgYGxvbmcgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBsb25nIGxvbmcnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjdW5kZWYgU0laRU9GX0xPTkdfTE9ORwogCi0vKiBUaGUgc2l6ZSBvZiBhIGBzaG9ydCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKy8qIFRoZSBzaXplIG9mIGBzaG9ydCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICN1bmRlZiBTSVpFT0ZfU0hPUlQKIAogLyogSWYgdXNpbmcgdGhlIEMgaW1wbGVtZW50YXRpb24gb2YgYWxsb2NhLCBkZWZpbmUgaWYgeW91IGtub3cgdGhlCiAgICBkaXJlY3Rpb24gb2Ygc3RhY2sgZ3Jvd3RoIGZvciB5b3VyIHN5c3RlbTsgb3RoZXJ3aXNlIGl0IHdpbGwgYmUKLSAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW4tdGltZS4KKyAgIGF1dG9tYXRpY2FsbHkgZGVkdWNlZCBhdCBydW50aW1lLgogCVNUQUNLX0RJUkVDVElPTiA+IDAgPT4gZ3Jvd3MgdG93YXJkIGhpZ2hlciBhZGRyZXNzZXMKIAlTVEFDS19ESVJFQ1RJT04gPCAwID0+IGdyb3dzIHRvd2FyZCBsb3dlciBhZGRyZXNzZXMKIAlTVEFDS19ESVJFQ1RJT04gPSAwID0+IGRpcmVjdGlvbiBvZiBncm93dGggdW5rbm93biAqLwogI3VuZGVmIFNUQUNLX0RJUkVDVElPTgogCisvKiBEZWZpbmUgaWYgc3RhdGZzIHRha2VzIDIgYXJncyBhbmQgdGhlIHNlY29uZCBhcmd1bWVudCBoYXMgdHlwZSBzdHJ1Y3QKKyAgIGZzX2RhdGEuIFtVbHRyaXhdICovCisjdW5kZWYgU1RBVF9TVEFURlNfRlNfREFUQQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgQU5TSSBDIGhlYWRlciBmaWxlcy4gKi8KICN1bmRlZiBTVERDX0hFQURFUlMKIAorLyogZGVmaW5lIGlmIFNJT0NHSUZBRERSIGV4aXN0cyBpbiBzeXMvaW9jdGwuaCAqLworI3VuZGVmIFNZU19JT0NUTF9IX0hBU19TSU9DR0lGQUREUgorCisvKiBEZWZpbmUgaWYgdGhlIFRDUCB0aW1lciBjb25zdGFudHMgaW4gPG5ldGluZXQvdGNwX3RpbWVyLmg+IGRlcGVuZCBvbiB0aGUKKyAgIGludGVnZXIgdmFyaWFibGUgJ2h6Jy4gW0ZyZWVCU0QgNC54XSAqLworI3VuZGVmIFRDUFRWX05FRURTX0haCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBjYW4gc2FmZWx5IGluY2x1ZGUgYm90aCA8c3lzL3RpbWUuaD4gYW5kIDx0aW1lLmg+LiAqLwogI3VuZGVmIFRJTUVfV0lUSF9TWVNfVElNRQogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3VyIHByb2Nlc3NvciBzdG9yZXMgd29yZHMgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlCi0gICBmaXJzdCAobGlrZSBNb3Rvcm9sYSBhbmQgU1BBUkMsIHVubGlrZSBJbnRlbCBhbmQgVkFYKS4gKi8KLSN1bmRlZiBXT1JEU19CSUdFTkRJQU4KKy8qIFdoZXJlIGlzIHRoZSB1bmFtZSBjb21tYW5kICovCisjdW5kZWYgVU5BTUVQUk9HCiAKLS8qIERlZmluZSB0byAxIGlmIG9uIEFJWCAzLgotICAgU3lzdGVtIGhlYWRlcnMgc29tZXRpbWVzIGRlZmluZSB0aGlzLgotICAgV2UganVzdCB3YW50IHRvIGF2b2lkIGEgcmVkZWZpbml0aW9uIGVycm9yIG1lc3NhZ2UuICAqLworLyogRW5hYmxlIGV4dGVuc2lvbnMgb24gQUlYIDMsIEludGVyaXguICAqLwogI2lmbmRlZiBfQUxMX1NPVVJDRQogIyB1bmRlZiBfQUxMX1NPVVJDRQogI2VuZGlmCisvKiBFbmFibGUgR05VIGV4dGVuc2lvbnMgb24gc3lzdGVtcyB0aGF0IGhhdmUgdGhlbS4gICovCisjaWZuZGVmIF9HTlVfU09VUkNFCisjIHVuZGVmIF9HTlVfU09VUkNFCisjZW5kaWYKKy8qIEVuYWJsZSB0aHJlYWRpbmcgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8KKyNpZm5kZWYgX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTCisjIHVuZGVmIF9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUworI2VuZGlmCisvKiBFbmFibGUgZXh0ZW5zaW9ucyBvbiBIUCBOb25TdG9wLiAgKi8KKyNpZm5kZWYgX1RBTkRFTV9TT1VSQ0UKKyMgdW5kZWYgX1RBTkRFTV9TT1VSQ0UKKyNlbmRpZgorLyogRW5hYmxlIGdlbmVyYWwgZXh0ZW5zaW9ucyBvbiBTb2xhcmlzLiAgKi8KKyNpZm5kZWYgX19FWFRFTlNJT05TX18KKyMgdW5kZWYgX19FWFRFTlNJT05TX18KKyNlbmRpZgorCisKKy8qIERlZmluZSBXT1JEU19CSUdFTkRJQU4gdG8gMSBpZiB5b3VyIHByb2Nlc3NvciBzdG9yZXMgd29yZHMgd2l0aCB0aGUgbW9zdAorICAgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdCAobGlrZSBNb3Rvcm9sYSBhbmQgU1BBUkMsIHVubGlrZSBJbnRlbCkuICovCisjaWYgZGVmaW5lZCBBQ19BUFBMRV9VTklWRVJTQUxfQlVJTEQKKyMgaWYgZGVmaW5lZCBfX0JJR19FTkRJQU5fXworIyAgZGVmaW5lIFdPUkRTX0JJR0VORElBTiAxCisjIGVuZGlmCisjZWxzZQorIyBpZm5kZWYgV09SRFNfQklHRU5ESUFOCisjICB1bmRlZiBXT1JEU19CSUdFTkRJQU4KKyMgZW5kaWYKKyNlbmRpZgorCisvKiBEZWZpbmUgdG8gMSBpZiBvbiBNSU5JWC4gKi8KKyN1bmRlZiBfTUlOSVgKKworLyogRGVmaW5lIHRvIDIgaWYgdGhlIHN5c3RlbSBkb2VzIG5vdCBwcm92aWRlIFBPU0lYLjEgZmVhdHVyZXMgZXhjZXB0IHdpdGgKKyAgIHRoaXMgZGVmaW5lZC4gKi8KKyN1bmRlZiBfUE9TSVhfMV9TT1VSQ0UKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IG5lZWQgdG8gaW4gb3JkZXIgZm9yIGBzdGF0JyBhbmQgb3RoZXIgdGhpbmdzIHRvIHdvcmsuICovCisjdW5kZWYgX1BPU0lYX1NPVVJDRQogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgUlBNIDQuNiBvciBuZXdlciB0byB0dXJuIG9uIGxlZ2FjeSBBUEkgKi8KICN1bmRlZiBfUlBNXzRfNF9DT01QQVQKIAorLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50MzJfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KKyN1bmRlZiBfVUlOVDMyX1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50NjRfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKKyAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQorICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KKyN1bmRlZiBfVUlOVDY0X1QKKworLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50OF90IHR5cGVkZWYgZnJvbSA8c3lzL3N5bmNoLmg+LAorICAgPHB0aHJlYWQuaD4sIG9yIDxzZW1hcGhvcmUuaD4gaXMgbm90IHVzZWQuIElmIHRoZSB0eXBlZGVmIHdlcmUgYWxsb3dlZCwgdGhlCisgICAjZGVmaW5lIGJlbG93IHdvdWxkIGNhdXNlIGEgc3ludGF4IGVycm9yLiAqLworI3VuZGVmIF9VSU5UOF9UCisKIC8qIERlZmluZSB0byBlbXB0eSBpZiBgY29uc3QnIGRvZXMgbm90IGNvbmZvcm0gdG8gQU5TSSBDLiAqLwogI3VuZGVmIGNvbnN0CiAKQEAgLTEyMjYsNTUgKzE0NTgsNjIgQEAKICN1bmRlZiBpbmxpbmUKICNlbmRpZgogCi0vKiBEZWZpbmUgdG8gYGxvbmcnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDE2IGJpdHMgaWYKKyAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCisjdW5kZWYgaW50MTZfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQzMl90CisKKy8qIERlZmluZSB0byB0aGUgdHlwZSBvZiBhIHNpZ25lZCBpbnRlZ2VyIHR5cGUgb2Ygd2lkdGggZXhhY3RseSA2NCBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludDY0X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDggYml0cyBpZiBzdWNoCisgICBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiBpbnQ4X3QKKworLyogRGVmaW5lIHRvIHRoZSB3aWRlc3Qgc2lnbmVkIGludGVnZXIgdHlwZSBpZiA8c3RkaW50Lmg+IGFuZCA8aW50dHlwZXMuaD4gZG8KKyAgIG5vdCBkZWZpbmUuICovCisjdW5kZWYgaW50bWF4X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSB3aWRlIGVub3VnaCB0byBob2xkIGEgcG9pbnRlciwKKyAgIGlmIHN1Y2ggYSB0eXBlIGV4aXN0cywgYW5kIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIGludHB0cl90CisKKy8qIERlZmluZSB0byBgbG9uZyBpbnQnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLiAqLwogI3VuZGVmIG9mZl90CiAKIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KICN1bmRlZiBwaWRfdAogCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMTYgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiB1aW50MTZfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiB1aW50MzJfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgorICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KKyN1bmRlZiB1aW50NjRfdAorCisvKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgOCBiaXRzIGlmCisgICBzdWNoIGEgdHlwZSBleGlzdHMgYW5kIHRoZSBzdGFuZGFyZCBpbmNsdWRlcyBkbyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnQ4X3QKKworLyogRGVmaW5lIHRvIHRoZSB3aWRlc3QgdW5zaWduZWQgaW50ZWdlciB0eXBlIGlmIDxzdGRpbnQuaD4gYW5kIDxpbnR0eXBlcy5oPgorICAgZG8gbm90IGRlZmluZS4gKi8KKyN1bmRlZiB1aW50bWF4X3QKKworLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGFuIHVuc2lnbmVkIGludGVnZXIgdHlwZSB3aWRlIGVub3VnaCB0byBob2xkIGEKKyAgIHBvaW50ZXIsIGlmIHN1Y2ggYSB0eXBlIGV4aXN0cywgYW5kIGlmIHRoZSBzeXN0ZW0gZG9lcyBub3QgZGVmaW5lIGl0LiAqLworI3VuZGVmIHVpbnRwdHJfdAorCiAvKiBlbmQgb2YgZGVmaW5pdGlvbnMgYWRkZWQgYnkgY29uZmlndXJlIG9uLXRoZS1mbHkgKi8KIAotI2lmbmRlZiBIQVZFX1NUUkNIUgotI2lmZGVmIEhBVkVfSU5ERVgKLSMgZGVmaW5lIHN0cmNociBpbmRleAotIyBkZWZpbmUgc3RycmNociByaW5kZXgKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9JTkRFWAotI2lmZGVmIEhBVkVfU1RSQ0hSCi0jaWZkZWYgbWluZ3czMgotIyBkZWZpbmUgaW5kZXgoYSxiKSBzdHJjaHIoYSxiKQotIyBkZWZpbmUgcmluZGV4KGEsYikgc3RycmNocihhLGIpCi0jZWxzZQotIyBkZWZpbmUgaW5kZXggc3RyY2hyCi0jIGRlZmluZSByaW5kZXggc3RycmNocgotI2VuZGlmCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNQ1BZCi0jaWZkZWYgSEFWRV9CQ09QWQotIyBkZWZpbmUgbWVtY3B5KGQsIHMsIG4pIGJjb3B5ICgocyksIChkKSwgKG4pKQotIyBkZWZpbmUgbWVtbW92ZShkLCBzLCBuKSBiY29weSAoKHMpLCAoZCksIChuKSkKLSMgZGVmaW5lIG1lbWNtcCBiY21wCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfTUVNTU9WRQotI2lmZGVmIEhBVkVfTUVNQ1BZCi0jIGRlZmluZSBtZW1tb3ZlIG1lbWNweQotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX0JDT1BZCi0jaWZkZWYgSEFWRV9NRU1DUFkKLSMgZGVmaW5lIGJjb3B5KHMsIGQsIG4pIG1lbWNweSAoKGQpLCAocyksIChuKSkKLSMgZGVmaW5lIGJ6ZXJvKHAsbikgbWVtc2V0KChwKSwoMCksKG4pKQotIyBkZWZpbmUgYmNtcCBtZW1jbXAKLSNlbmRpZgotI2VuZGlmCi0KIC8qIElmIHlvdSBoYXZlIG9wZW5zc2wgMC45Ljcgb3IgYWJvdmUsIHlvdSBsaWtlbHkgaGF2ZSBBRVMgc3VwcG9ydC4gKi8KICN1bmRlZiBORVRTTk1QX1VTRV9PUEVOU1NMCiAjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9PUEVOU1NMKSAmJiBkZWZpbmVkKEhBVkVfT1BFTlNTTF9BRVNfSCkgJiYgZGVmaW5lZChIQVZFX0FFU19DRkIxMjhfRU5DUllQVCkKQEAgLTEzMzEsMjcgKzE1NzAsNiBAQAogLyogZGVmYXVsdCBsaXN0IG9mIG1pYnMgdG8gbG9hZCAqLwogI2RlZmluZSBORVRTTk1QX0RFRkFVTFRfTUlCUyAiSVAtTUlCOklGLU1JQjpUQ1AtTUlCOlVEUC1NSUI6U05NUHYyLU1JQjpSRkMxMjEzLU1JQiIKIAotLyogZGVmYXVsdCBsb2NhdGlvbiB0byBsb29rIGZvciBtaWJzIHRvIGxvYWQgdXNpbmcgdGhlIGFib3ZlIHRva2VucwotICAgYW5kL29yIHRob3NlIGluIHRoZSBNSUJTIGVudnJpb25tZW50IHZhcmlhYmxlKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRElSUwotCi0vKiBkZWZhdWx0IG1pYiBmaWxlcyB0byBsb2FkLCBzcGVjaWZpZWQgYnkgcGF0aC4gKi8KLSN1bmRlZiBORVRTTk1QX0RFRkFVTFRfTUlCRklMRVMKLQotLyogc2hvdWxkIHdlIGNvbXBpbGUgdG8gdXNlIHNwZWNpYWwgb3BhcXVlIHR5cGVzOiBmbG9hdCwgZG91YmxlLAotICAgY291bnRlcjY0LCBpNjQsIHVpNjQsIHVuaW9uPyAqLwotI3VuZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwotCi0vKiBkZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBzdXBwb3J0IGZvciBib3RoIGF1dGhlbnRpY2F0aW9uIGFuZAotICAgcHJpdmFjeSBzdXBwb3J0LiAqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX1NDQVBJX0FVVEhQUklWCi0KLS8qIGRlZmluZSBpZiB5b3UgYXJlIHVzaW5nIHRoZSBNRDUgY29kZSAuLi4qLwotI3VuZGVmIE5FVFNOTVBfVVNFX0lOVEVSTkFMX01ENQotCi0vKiBkZWZpbmUgaWYgeW91IGFyZSB1c2luZyB0aGUgY29kZVMxMSBsaWJyYXJ5IC4uLiovCi0jdW5kZWYgTkVUU05NUF9VU0VfUEtDUzExCi0KIC8qIGRlYnVnZ2luZyBzdHVmZiAqLwogLyogaWYgZGVmaW5lZCwgd2Ugb3B0aW1pemUgdGhlIGNvZGUgdG8gZXhjbHVkZSBhbGwgZGVidWdnaW5nIGNhbGxzLiAqLwogI3VuZGVmIE5FVFNOTVBfTk9fREVCVUdHSU5HCkBAIC0xMzY3LDkgKzE1ODUsNiBAQAogICAgbGluZXM6IFBFUlNJU1RFTlRfRElSRUNUT1JZL05BTUUucGVyc2lzdGVudC5jb25mICovCiAjZGVmaW5lIE5FVFNOTVBfUEVSU0lTVEVOVF9ESVJFQ1RPUlkgIi92YXIvc25tcCIKIAotLyogUEVSU0lTVEVOVF9NQVNLOiB0aGUgdW1hc2sgcGVybWlzc2lvbnMgdG8gc2V0IHVwIHBlcnNpc3RlbnQgZmlsZXMgd2l0aCAqLwotI2RlZmluZSBORVRTTk1QX1BFUlNJU1RFTlRfTUFTSyAwNzcKLQogLyogQUdFTlRfRElSRUNUT1JZX01PREU6IHRoZSBtb2RlIHRoZSBhZ2VudHMgc2hvdWxkIHVzZSB0byBjcmVhdGUKICAgIGRpcmVjdG9yaWVzIHdpdGguIFNpbmNlIHRoZSBkYXRhIHN0b3JlZCBoZXJlIGlzIHByb2JhYmx5IHNlbnNpdGl2ZSwgaXQKICAgIHByb2JhYmx5IHNob3VsZCBiZSByZWFkLW9ubHkgYnkgcm9vdC9hZG1pbmlzdHJhdG9yLiAqLwpAQCAtMTQxNCwxOSArMTYyOSw2IEBACiAvKiBVc2UgbGlid3JhcCB0byBoYW5kbGUgYWxsb3cvZGVueSBob3N0cz8gKi8KICN1bmRlZiBORVRTTk1QX1VTRV9MSUJXUkFQCiAKLS8qIHRlc3RpbmcgY29kZSBzZWN0aW9ucy4gKi8KLSN1bmRlZiBORVRTTk1QX0VOQUJMRV9URVNUSU5HX0NPREUgCi0KLS8qIElmIHlvdSBkb24ndCBoYXZlIHJvb3QgYWNjZXNzIGRvbid0IGV4aXQgdXBvbiBrbWVtIGVycm9ycyAqLwotI3VuZGVmIE5FVFNOTVBfTk9fUk9PVF9BQ0NFU1MKLQotLyogSWYgd2UgZG9uJ3Qgd2FudCB0byB1c2Uga21lbS4gKi8KLSN1bmRlZiBORVRTTk1QX05PX0tNRU1fVVNBR0UKLQotLyogSWYgeW91IGRvbid0IHdhbnQgdGhlIGFnZW50IHRvIHJlcG9ydCBvbiB2YXJpYWJsZXMgaXQgZG9lc24ndCBoYXZlIGRhdGEgZm9yICovCi0jdW5kZWYgTkVUU05NUF9OT19EVU1NWV9WQUxVRVMKLQotCiAvKiBNaWItMiB0cmVlIEluZm8gKi8KIC8qIFRoZXNlIGFyZSB0aGUgc3lzdGVtIGluZm9ybWF0aW9uIHZhcmlhYmxlcy4gKi8KIApAQCAtMTYyMSw5ICsxODIzLDYgQEAKIC8qIGludGVybmFsIGRlZmluZSAqLwogI2RlZmluZSBORVRTTk1QX0xBU1RGSUVMRCAtMQogCi0vKiBjb25maWd1cmUgb3B0aW9ucyBzcGVjaWZpZWQgKi8KLSNkZWZpbmUgTkVUU05NUF9DT05GSUdVUkVfT1BUSU9OUyAiIgotCiAvKiAgUGx1Z2dhYmxlIHRyYW5zcG9ydHMuICAqLwogCiAvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBVRFAvSVAgdHJhbnNwb3J0IGRvbWFpbiBpcwpAQCAtMTY1OCwxMCArMTg1NywyMiBAQAogICAgIGF2YWlsYWJsZS4gICovCiAjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfVENQSVBWNl9ET01BSU4KIAotLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciB0aGUgVURQL0lQIHRyYW5zcG9ydCBkb21haW4gaXMKKy8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFRMUyB0cmFuc3BvcnQgZG9tYWluIGlzCiAgICAgYXZhaWxhYmxlLiAgICovCiAjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfVExTX0RPTUFJTgogCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBBbGlhcyB0cmFuc3BvcnQgZG9tYWluIGlzCisgICAgYXZhaWxhYmxlLiAgICovCisjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfQUxJQVNfRE9NQUlOCisKKy8qICBUaGlzIGlzIGRlZmluZWQgaWYgc3VwcG9ydCBmb3IgdGhlIFNTSCB0cmFuc3BvcnQgZG9tYWluIGlzCisgICAgYXZhaWxhYmxlLiAgICovCisjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfU1NIX0RPTUFJTgorCisvKiAgVGhpcyBpcyBkZWZpbmVkIGlmIHN1cHBvcnQgZm9yIHRoZSBEVExTL1VEUCB0cmFuc3BvcnQgZG9tYWluIGlzCisgICAgYXZhaWxhYmxlLiAgICovCisjdW5kZWYgTkVUU05NUF9UUkFOU1BPUlRfRFRMU1VEUF9ET01BSU4KKwogLyogIFRoaXMgaXMgZGVmaW5lZCBpZiBzdXBwb3J0IGZvciBzdGRpbi9vdXQgdHJhbnNwb3J0IGRvbWFpbiBpcyBhdmFpbGFibGUuICAgKi8KICN1bmRlZiBORVRTTk1QX1RSQU5TUE9SVF9TVERfRE9NQUlOCiAKQEAgLTE2NzQsMTggKzE4ODUsOSBAQAogLyogZGVmaW5lIHRoaXMgaWYgdGhlIGxvY2FsIHNlY3VyaXR5IG1vZHVsZSBpcyBhdmFpbGFibGUgKi8KICN1bmRlZiBORVRTTk1QX1NFQ01PRF9MT0NBTFNNCiAKLS8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byBidWlsZCB3aXRoIHJlZW50cmFudC90aHJlYWRlZCBjb2RlIChpbmNvbXBsZXRlKSovCi0jdW5kZWYgTkVUU05NUF9SRUVOVFJBTlQKLQogLyogZGVmaW5lIGlmIGNvbmZpZ3VyZWQgYXMgYSAibWluaS1hZ2VudCIgKi8KICN1bmRlZiBORVRTTk1QX01JTklfQUdFTlQKIAotLyogZGVmaW5lIGlmIHlvdSBhcmUgZW1iZWRkaW5nIHBlcmwgaW4gdGhlIG1haW4gYWdlbnQgKi8KLSN1bmRlZiBORVRTTk1QX0VNQkVEREVEX1BFUkwKLQotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGJ1aWxkIE1GRCBtb2R1bGUgcmV3cml0ZXMqLwotI3VuZGVmIE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUwotCiAvKiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgbmV0LXNubXAgbWliIHRyZWUuICBJdCBzaG91bGRuJ3QgYmUKICAgIGNoYW5nZWQsIGFzIHRoZSBwbGFjZXMgaXQgaXMgdXNlZCBhcmUgZXhwZWN0ZWQgdG8gYmUgY29uc3RhbnQKICAgIHZhbHVlcyBvciBhcmUgZGlyZWN0bHkgdGllZCB0byB0aGUgVUNELVNOTVAtTUlCLiAqLwpAQCAtMTc1MywyNCArMTk1NSw2IEBACiAjICBkZWZpbmUgTkVUU05NUF9JTVBPUlQgZXh0ZXJuCiAjZW5kaWYKIAotLyogZGVmaW5lIGlmIHlvdSB3YW50IHRvIGVuYWJsZSBJUHY2IHN1cHBvcnQgKi8KLSN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2Ci0KLS8qIGRlZmluZSBpZiB5b3Ugd2FudCB0byByZXN0cmljdCBTTVVYIGNvbm5lY3Rpb25zIHRvIGxvY2FsaG9zdCBieSBkZWZhdWx0ICovCi0jdW5kZWYgTkVUU05NUF9FTkFCTEVfTE9DQUxfU01VWAotCi0vKiBkZWZpbmUgaWYgYWdlbnR4IHRyYW5zcG9ydCBpcyB0byB1c2UgZG9tYWluIHNvY2tldHMgb25seSAqLwotI3VuZGVmIE5FVFNOTVBfQUdFTlRYX0RPTV9TT0NLX09OTFkKLQotLyogZGVmaW5lIGlmIHlvdSBkbyBub3Qgd2FudCBzbm1wdHJhcGQgdG8gcmVnaXN0ZXIgYXMgYW4gQWdlbnRYIHN1YmFnZW50ICovCi0jdW5kZWYgTkVUU05NUF9TTk1QVFJBUERfRElTQUJMRV9BR0VOVFgKLQotLyogZGVmaW5lIHRoaXMgaWYgd2UncmUgdXNpbmcgdGhlIG5ldyBNSVQgY3J5cHRvIEFQSSAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX01JVAotCi0vKiBkZWZpbmUgdGhpcyBpZiB5b3UncmUgdXNpbmcgSGVpbWRhbCBLZXJiZXJvcyAqLwotI3VuZGVmIE5FVFNOTVBfVVNFX0tFUkJFUk9TX0hFSU1EQUwKLQogLyogY29tbWVudCB0aGUgbmV4dCBsaW5lIGlmIHlvdSBhcmUgY29tcGlsaW5nIHdpdGggbGlic25tcC5oIAogICAgYW5kIGFyZSBub3QgdXNpbmcgdGhlIFVDLURhdmlzIFNOTVAgbGlicmFyeS4gKi8KICNkZWZpbmUgVUNEX1NOTVBfTElCUkFSWSAxCkBAIC0xNzc5LDcgKzE5NjMsNyBAQAogI3VuZGVmIENNVV9DT01QQVRJQkxFCiAKIC8qIGZpbmFsIGNvbmNsdXNpb24gb24gbmxpc3QgdXNhZ2UgKi8KLSNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoU1RSVUNUX05MSVNUX0hBU19OX1ZBTFVFKSAmJiAhZGVmaW5lZChORVRTTk1QX0RPTlRfVVNFX05MSVNUKSAmJiAhZGVmaW5lZChORVRTTk1QX05PX0tNRU1fVVNBR0UpCisjaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUpICYmICFkZWZpbmVkKE5FVFNOTVBfRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKICNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oIGIvaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCmluZGV4IDUzZGM3YjguLjNhZWEwOTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKQEAgLTcxLDYgKzcxLDcgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9kZWZpbml0aW9ucy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL3Nlc3Npb25fYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvcGR1X2FwaS5oPgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAppbmRleCBhM2ExZGQ2Li44N2MxMDExIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaApAQCAtNyw2ICs3LDE5IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKK25ldHNubXBfcGR1ICAgICpzbm1wX3BkdV9jcmVhdGUoaW50IHR5cGUpOworbmV0c25tcF9wZHUgICAgKnNubXBfY2xvbmVfcGR1KG5ldHNubXBfcGR1ICpwZHUpOworbmV0c25tcF9wZHUgICAgKnNubXBfZml4X3BkdSggIG5ldHNubXBfcGR1ICpwZHUsIGludCBpZHgpOwordm9pZCAgICAgICAgICAgIHNubXBfZnJlZV9wZHUoIG5ldHNubXBfcGR1ICpwZHUpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCiAgICAgLyoKICAgICAgKiAgRm9yIHRoZSBpbml0aWFsIHJlbGVhc2UsIHRoaXMgd2lsbCBqdXN0IHJlZmVyIHRvIHRoZQogICAgICAqICByZWxldmFudCBVQ0QgaGVhZGVyIGZpbGVzLgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCmluZGV4IDMzMjdmODkuLjkwN2I3YjkgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKQEAgLTgsNiArOCwyMzQgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICAgICAgICAgICJDIiB7CisjZW5kaWYKKworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfaW5pdChuZXRzbm1wX3Nlc3Npb24gKik7CisKKyAgICAvKgorICAgICAqIG5ldHNubXBfc2Vzc2lvbiAqc25tcF9vcGVuKHNlc3Npb24pCisgICAgICogICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247CisgICAgICoKKyAgICAgKiBTZXRzIHVwIHRoZSBzZXNzaW9uIHdpdGggdGhlIHNubXBfc2Vzc2lvbiBpbmZvcm1hdGlvbiBwcm92aWRlZAorICAgICAqIGJ5IHRoZSB1c2VyLiAgVGhlbiBvcGVucyBhbmQgYmluZHMgdGhlIG5lY2Vzc2FyeSBVRFAgcG9ydC4KKyAgICAgKiBBIGhhbmRsZSB0byB0aGUgY3JlYXRlZCBzZXNzaW9uIGlzIHJldHVybmVkICh0aGlzIGlzIGRpZmZlcmVudCB0aGFuCisgICAgICogdGhlIHBvaW50ZXIgcGFzc2VkIHRvIHNubXBfb3BlbigpKS4gIE9uIGFueSBlcnJvciwgTlVMTCBpcyByZXR1cm5lZAorICAgICAqIGFuZCBzbm1wX2Vycm5vIGlzIHNldCB0byB0aGUgYXBwcm9wcmlhdGUgZXJyb3IgY29kZS4KKyAgICAgKi8KKyAgICBuZXRzbm1wX3Nlc3Npb24gKnNubXBfb3BlbihuZXRzbm1wX3Nlc3Npb24gKik7CisKKyAgICAvKgorICAgICAqIGludCBzbm1wX2Nsb3NlKHNlc3Npb24pCisgICAgICogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgKgorICAgICAqIENsb3NlIHRoZSBpbnB1dCBzZXNzaW9uLiAgRnJlZXMgYWxsIGRhdGEgYWxsb2NhdGVkIGZvciB0aGUgc2Vzc2lvbiwKKyAgICAgKiBkZXF1ZXVlcyBhbnkgcGVuZGluZyByZXF1ZXN0cywgYW5kIGNsb3NlcyBhbnkgc29ja2V0cyBhbGxvY2F0ZWQgZm9yCisgICAgICogdGhlIHNlc3Npb24uICBSZXR1cm5zIDAgb24gZXJyb3IsIDEgb3RoZXJ3aXNlLgorICAgICAqCisgICAgICogc25tcF9jbG9zZV9zZXNzaW9ucygpIGRvZXMgdGhlIHNhbWUgdGhpbmcgZm9yIGFsbCBvcGVuIHNlc3Npb25zCisgICAgICovCisgICAgaW50ICAgICAgICAgICAgIHNubXBfY2xvc2UobmV0c25tcF9zZXNzaW9uICopOworICAgIGludCAgICAgICAgICAgICBzbm1wX2Nsb3NlX3Nlc3Npb25zKHZvaWQpOworCisKKyAgICAvKgorICAgICAqIGludCBzbm1wX3NlbmQoc2Vzc2lvbiwgcGR1KQorICAgICAqICAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247CisgICAgICogICAgIG5ldHNubXBfcGR1ICAgICAgKnBkdTsKKyAgICAgKgorICAgICAqIFNlbmRzIHRoZSBpbnB1dCBwZHUgb24gdGhlIHNlc3Npb24gYWZ0ZXIgY2FsbGluZyBzbm1wX2J1aWxkIHRvIGNyZWF0ZQorICAgICAqIGEgc2VyaWFsaXplZCBwYWNrZXQuICBJZiBuZWNlc3NhcnksIHNldCBzb21lIG9mIHRoZSBwZHUgZGF0YSBmcm9tIHRoZQorICAgICAqIHNlc3Npb24gZGVmYXVsdHMuICBBZGQgYSByZXF1ZXN0IGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBwZHUgdG8gdGhlIGxpc3QKKyAgICAgKiBvZiBvdXRzdGFuZGluZyByZXF1ZXN0cyBvbiB0aGlzIHNlc3Npb24sIHRoZW4gc2VuZCB0aGUgcGR1LgorICAgICAqIFJldHVybnMgdGhlIHJlcXVlc3QgaWQgb2YgdGhlIGdlbmVyYXRlZCBwYWNrZXQgaWYgYXBwbGljYWJsZSwgb3RoZXJ3aXNlIDEuCisgICAgICogT24gYW55IGVycm9yLCAwIGlzIHJldHVybmVkLgorICAgICAqIFRoZSBwZHUgaXMgZnJlZWQgYnkgc25tcF9zZW5kKCkgdW5sZXNzIGEgZmFpbHVyZSBvY2N1cmVkLgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbmQobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICopOworCisgICAgLyoKKyAgICAgKiBpbnQgc25tcF9hc3luY19zZW5kKHNlc3Npb24sIHBkdSwgY2FsbGJhY2ssIGNiX2RhdGEpCisgICAgICogICAgIG5ldHNubXBfc2Vzc2lvbiAqc2Vzc2lvbjsKKyAgICAgKiAgICAgbmV0c25tcF9wZHUgICAgICAqcGR1OworICAgICAqICAgICBuZXRzbm1wX2NhbGxiYWNrIGNhbGxiYWNrOworICAgICAqICAgICB2b2lkICAgKmNiX2RhdGE7CisgICAgICoKKyAgICAgKiBTZW5kcyB0aGUgaW5wdXQgcGR1IG9uIHRoZSBzZXNzaW9uIGFmdGVyIGNhbGxpbmcgc25tcF9idWlsZCB0byBjcmVhdGUKKyAgICAgKiBhIHNlcmlhbGl6ZWQgcGFja2V0LiAgSWYgbmVjZXNzYXJ5LCBzZXQgc29tZSBvZiB0aGUgcGR1IGRhdGEgZnJvbSB0aGUKKyAgICAgKiBzZXNzaW9uIGRlZmF1bHRzLiAgQWRkIGEgcmVxdWVzdCBjb3JyZXNwb25kaW5nIHRvIHRoaXMgcGR1IHRvIHRoZSBsaXN0CisgICAgICogb2Ygb3V0c3RhbmRpbmcgcmVxdWVzdHMgb24gdGhpcyBzZXNzaW9uIGFuZCBzdG9yZSBjYWxsYmFjayBhbmQgZGF0YSwKKyAgICAgKiB0aGVuIHNlbmQgdGhlIHBkdS4KKyAgICAgKiBSZXR1cm5zIHRoZSByZXF1ZXN0IGlkIG9mIHRoZSBnZW5lcmF0ZWQgcGFja2V0IGlmIGFwcGxpY2FibGUsIG90aGVyd2lzZSAxLgorICAgICAqIE9uIGFueSBlcnJvciwgMCBpcyByZXR1cm5lZC4KKyAgICAgKiBUaGUgcGR1IGlzIGZyZWVkIGJ5IHNubXBfc2VuZCgpIHVubGVzcyBhIGZhaWx1cmUgb2NjdXJlZC4KKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgc25tcF9hc3luY19zZW5kKG5ldHNubXBfc2Vzc2lvbiAqLCBuZXRzbm1wX3BkdSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jYWxsYmFjaywgdm9pZCAqKTsKKworCisgICAgLyoKKyAgICAgKiB2b2lkIHNubXBfcmVhZChmZHNldCkKKyAgICAgKiAgICAgZmRfc2V0ICAqZmRzZXQ7CisgICAgICoKKyAgICAgKiBDaGVja3MgdG8gc2VlIGlmIGFueSBvZiB0aGUgZmQncyBzZXQgaW4gdGhlIGZkc2V0IGJlbG9uZyB0bworICAgICAqIHNubXAuICBFYWNoIHNvY2tldCB3aXRoIGl0J3MgZmQgc2V0IGhhcyBhIHBhY2tldCByZWFkIGZyb20gaXQKKyAgICAgKiBhbmQgc25tcF9wYXJzZSBpcyBjYWxsZWQgb24gdGhlIHBhY2tldCByZWNlaXZlZC4gIFRoZSByZXN1bHRpbmcgcGR1CisgICAgICogaXMgcGFzc2VkIHRvIHRoZSBjYWxsYmFjayByb3V0aW5lIGZvciB0aGF0IHNlc3Npb24uICBJZiB0aGUgY2FsbGJhY2sKKyAgICAgKiByb3V0aW5lIHJldHVybnMgc3VjY2Vzc2Z1bGx5LCB0aGUgcGR1IGFuZCBpdCdzIHJlcXVlc3QgYXJlIGRlbGV0ZWQuCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgIHNubXBfcmVhZChmZF9zZXQgKik7CisKKyAgICAvKgorICAgICAqIHNubXBfcmVhZDIoKSBpcyBzaW1pbGFyIHRvIHNubXBfcmVhZCgpLCBidXQgYWNjZXB0cyBhIHBvaW50ZXIgdG8gYQorICAgICAqIGxhcmdlIGZpbGUgZGVzY3JpcHRvciBzZXQgaW5zdGVhZCBvZiBhIHBvaW50ZXIgdG8gYSByZWd1bGFyIGZpbGUKKyAgICAgKiBkZXNjcmlwdG9yIHNldC4KKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9yZWFkMihuZXRzbm1wX2xhcmdlX2ZkX3NldCAqKTsKKworCisgICAgaW50ICAgICAgICAgICAgIHNubXBfc3luY2hfcmVzcG9uc2UobmV0c25tcF9zZXNzaW9uICosIG5ldHNubXBfcGR1ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiopOworCisgICAgLyoKKyAgICAgKiBpbnQgc25tcF9zZWxlY3RfaW5mbyhudW1mZHMsIGZkc2V0LCB0aW1lb3V0LCBibG9jaykKKyAgICAgKiBpbnQgKm51bWZkczsKKyAgICAgKiBmZF9zZXQgICAqZmRzZXQ7CisgICAgICogc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQ7CisgICAgICogaW50ICpibG9jazsKKyAgICAgKgorICAgICAqIFJldHVybnMgaW5mbyBhYm91dCB3aGF0IHNubXAgcmVxdWlyZXMgZnJvbSBhIHNlbGVjdCBzdGF0ZW1lbnQuCisgICAgICogbnVtZmRzIGlzIHRoZSBudW1iZXIgb2YgZmRzIGluIHRoZSBsaXN0IHRoYXQgYXJlIHNpZ25pZmljYW50LgorICAgICAqIEFsbCBmaWxlIGRlc2NyaXB0b3JzIG9wZW5lZCBmb3IgU05NUCBhcmUgT1InZCBpbnRvIHRoZSBmZHNldC4KKyAgICAgKiBJZiBhY3Rpdml0eSBvY2N1cnMgb24gYW55IG9mIHRoZXNlIGZpbGUgZGVzY3JpcHRvcnMsIHNubXBfcmVhZAorICAgICAqIHNob3VsZCBiZSBjYWxsZWQgd2l0aCB0aGF0IGZpbGUgZGVzY3JpcHRvciBzZXQuCisgICAgICoKKyAgICAgKiBUaGUgdGltZW91dCBpcyB0aGUgbGF0ZXN0IHRpbWUgdGhhdCBTTk1QIGNhbiB3YWl0IGZvciBhIHRpbWVvdXQuICBUaGUKKyAgICAgKiBzZWxlY3Qgc2hvdWxkIGJlIGRvbmUgd2l0aCB0aGUgbWluaW11bSB0aW1lIGJldHdlZW4gdGltZW91dCBhbmQgYW55IG90aGVyCisgICAgICogdGltZW91dHMgbmVjZXNzYXJ5LiAgVGhpcyBzaG91bGQgYmUgY2hlY2tlZCB1cG9uIGVhY2ggaW52b2NhdGlvbiBvZiBzZWxlY3QuCisgICAgICogSWYgYSB0aW1lb3V0IGlzIHJlY2VpdmVkLCBzbm1wX3RpbWVvdXQgc2hvdWxkIGJlIGNhbGxlZCB0byBjaGVjayBpZiB0aGUKKyAgICAgKiB0aW1lb3V0IHdhcyBmb3IgU05NUC4gIChzbm1wX3RpbWVvdXQgaXMgaWRlbXBvdGVudCkKKyAgICAgKgorICAgICAqIEJsb2NrIGlzIDEgaWYgdGhlIHNlbGVjdCBpcyByZXF1ZXN0ZWQgdG8gYmxvY2sgaW5kZWZpbml0ZWx5LCByYXRoZXIgdGhhbgorICAgICAqIHRpbWUgb3V0LiAgSWYgYmxvY2sgaXMgaW5wdXQgYXMgMSwgdGhlIHRpbWVvdXQgdmFsdWUgd2lsbCBiZSB0cmVhdGVkIGFzCisgICAgICogdW5kZWZpbmVkLCBidXQgaXQgbXVzdCBiZSBhdmFpbGFibGUgZm9yIHNldHRpbmcgaW4gc25tcF9zZWxlY3RfaW5mby4gIE9uCisgICAgICogcmV0dXJuLCBpZiBibG9jayBpcyB0cnVlLCB0aGUgdmFsdWUgb2YgdGltZW91dCB3aWxsIGJlIHVuZGVmaW5lZC4KKyAgICAgKgorICAgICAqIHNubXBfc2VsZWN0X2luZm8gcmV0dXJucyB0aGUgbnVtYmVyIG9mIG9wZW4gc29ja2V0cy4gIChpLmUuIFRoZSBudW1iZXIKKyAgICAgKiBvZiBzZXNzaW9ucyBvcGVuKQorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbGVjdF9pbmZvKGludCAqLCBmZF9zZXQgKiwgc3RydWN0IHRpbWV2YWwgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKik7CisKKyAgICAvKgorICAgICAqIHNubXBfc2VsZWN0X2luZm8yKCkgaXMgc2ltaWxhciB0byBzbm1wX3NlbGVjdF9pbmZvKCksIGJ1dCBhY2NlcHRzIGEKKyAgICAgKiBwb2ludGVyIHRvIGEgbGFyZ2UgZmlsZSBkZXNjcmlwdG9yIHNldCBpbnN0ZWFkIG9mIGEgcG9pbnRlciB0byBhCisgICAgICogcmVndWxhciBmaWxlIGRlc2NyaXB0b3Igc2V0LgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NlbGVjdF9pbmZvMihpbnQgKiwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKiwgaW50ICopOworCisKKyAgICAvKgorICAgICAqIHZvaWQgc25tcF90aW1lb3V0KCk7CisgICAgICoKKyAgICAgKiBzbm1wX3RpbWVvdXQgc2hvdWxkIGJlIGNhbGxlZCB3aGVuZXZlciB0aGUgdGltZW91dCBmcm9tIHNubXBfc2VsZWN0X2luZm8KKyAgICAgKiBleHBpcmVzLCBidXQgaXQgaXMgaWRlbXBvdGVudCwgc28gc25tcF90aW1lb3V0IGNhbiBiZSBwb2xsZWQgKHByb2JhYmx5IGEKKyAgICAgKiBjcHUgZXhwZW5zaXZlIHByb3Bvc2l0aW9uKS4gIHNubXBfdGltZW91dCBjaGVja3MgdG8gc2VlIGlmIGFueSBvZiB0aGUKKyAgICAgKiBzZXNzaW9ucyBoYXZlIGFuIG91dHN0YW5kaW5nIHJlcXVlc3QgdGhhdCBoYXMgdGltZWQgb3V0LiAgSWYgaXQgZmluZHMgb25lCisgICAgICogKG9yIG1vcmUpLCBhbmQgdGhhdCBwZHUgaGFzIG1vcmUgcmV0cmllcyBhdmFpbGFibGUsIGEgbmV3IHBhY2tldCBpcyBmb3JtZWQKKyAgICAgKiBmcm9tIHRoZSBwZHUgYW5kIGlzIHJlc2VudC4gIElmIHRoZXJlIGFyZSBubyBtb3JlIHJldHJpZXMgYXZhaWxhYmxlLCB0aGUKKyAgICAgKiBjYWxsYmFjayBmb3IgdGhlIHNlc3Npb24gaXMgdXNlZCB0byBhbGVydCB0aGUgdXNlciBvZiB0aGUgdGltZW91dC4KKyAgICAgKi8KKworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3RpbWVvdXQodm9pZCk7CisKKyAgICAvKgorICAgICAqIHNubXBfZXJyb3IgLSByZXR1cm4gZXJyb3IgZGF0YQorICAgICAqIElucHV0cyA6ICBhZGRyZXNzIG9mIGVycm5vLCBhZGRyZXNzIG9mIHNubXBfZXJybm8sIGFkZHJlc3Mgb2Ygc3RyaW5nCisgICAgICogQ2FsbGVyIG11c3QgZnJlZSB0aGUgc3RyaW5nIHJldHVybmVkIGFmdGVyIHVzZS4KKyAgICAgKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9lcnJvcihuZXRzbm1wX3Nlc3Npb24gKiwgaW50ICosIGludCAqLCBjaGFyICoqKTsKKworICAgIC8qCisgICAgICogc2luZ2xlIHNlc3Npb24gQVBJLgorICAgICAqCisgICAgICogVGhlc2UgZnVuY3Rpb25zIHBlcmZvcm0gc2ltaWxhciBhY3Rpb25zIGFzIHNubXBfWFggZnVuY3Rpb25zLAorICAgICAqIGJ1dCBvcGVyYXRlIG9uIGEgc2luZ2xlIHNlc3Npb24gb25seS4KKyAgICAgKgorICAgICAqIFN5bm9wc2lzOgorICAgICAKKyAgICAgdm9pZCAqIHNlc3NwOworICAgICBuZXRzbm1wX3Nlc3Npb24gc2Vzc2lvbiwgKnNzOworICAgICBuZXRzbm1wX3BkdSAqcGR1LCAqcmVzcG9uc2U7CisgICAgIAorICAgICBzbm1wX3Nlc3NfaW5pdCgmc2Vzc2lvbik7CisgICAgIHNlc3Npb24ucmV0cmllcyA9IC4uLgorICAgICBzZXNzaW9uLnJlbW90ZV9wb3J0ID0gLi4uCisgICAgIHNlc3NwID0gc25tcF9zZXNzX29wZW4oJnNlc3Npb24pOworICAgICBzcyA9IHNubXBfc2Vzc19zZXNzaW9uKHNlc3NwKTsKKyAgICAgaWYgKHNzID09IE5VTEwpCisgICAgIGV4aXQoMSk7CisgICAgIC4uLgorICAgICBpZiAoc3MtPmNvbW11bml0eSkgZnJlZShzcy0+Y29tbXVuaXR5KTsKKyAgICAgc3MtPmNvbW11bml0eSA9IHN0cmR1cChnYXRld2F5KTsKKyAgICAgc3MtPmNvbW11bml0eV9sZW4gPSBzdHJsZW4oZ2F0ZXdheSk7CisgICAgIC4uLgorICAgICBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uoc2Vzc3AsIHBkdSwgJnJlc3BvbnNlKTsKKyAgICAgLi4uCisgICAgIHNubXBfc2Vzc19jbG9zZShzZXNzcCk7CisgICAgIAorICAgICAqIFNlZSBhbHNvOgorICAgICAqIHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZSwgaW4gc25tcF9jbGllbnQuaC4KKyAgICAgCisgICAgICogTm90ZXM6CisgICAgICogIDEuIEludm9rZSBzbm1wX3Nlc3Nfc2Vzc2lvbiBhZnRlciBzbm1wX3Nlc3Nfb3Blbi4KKyAgICAgKiAgMi4gc25tcF9zZXNzX3Nlc3Npb24gcmV0dXJuIHZhbHVlIGlzIGFuIG9wYXF1ZSBwb2ludGVyLgorICAgICAqICAzLiBEbyBOT1QgZnJlZSBtZW1vcnkgcmV0dXJuZWQgYnkgc25tcF9zZXNzX3Nlc3Npb24uCisgICAgICogIDQuIFJlcGxhY2Ugc25tcF9zZW5kKHNzLHBkdSkgd2l0aCBzbm1wX3Nlc3Nfc2VuZChzZXNzcCxwZHUpCisgICAgICovCisKKyAgICB2b2lkICAgICAgICAgICAqc25tcF9zZXNzX29wZW4obmV0c25tcF9zZXNzaW9uICopOworICAgIHZvaWQgICAgICAgICAgICpzbm1wX3Nlc3NfcG9pbnRlcihuZXRzbm1wX3Nlc3Npb24gKik7CisgICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbih2b2lkICopOworICAgIE5FVFNOTVBfSU1QT1JUCisgICAgbmV0c25tcF9zZXNzaW9uICpzbm1wX3Nlc3Nfc2Vzc2lvbl9sb29rdXAodm9pZCAqKTsKKworCisgICAgLyoKKyAgICAgKiB1c2UgcmV0dXJuIHZhbHVlIGZyb20gc25tcF9zZXNzX29wZW4gYXMgdm9pZCAqIHBhcmFtZXRlciAKKyAgICAgKi8KKworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc2VuZCh2b2lkICosIG5ldHNubXBfcGR1ICopOworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfYXN5bmNfc2VuZCh2b2lkICosIG5ldHNubXBfcGR1ICosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY2FsbGJhY2ssIHZvaWQgKik7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2Vzc19zZWxlY3RfaW5mbyh2b2lkICosIGludCAqLCBmZF9zZXQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICosIGludCAqKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3NlbGVjdF9pbmZvMih2b2lkICosIGludCAqLAorCQkJCQkgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1ldmFsICosIGludCAqKTsKKyAgICAvKgorICAgICAqIFJldHVybnMgMCBpZiBzdWNjZXNzLCAtMSBpZiBmYWlsLgorICAgICAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfcmVhZCh2b2lkICosIGZkX3NldCAqKTsKKyAgICAvKgorICAgICAqIFNpbWlsYXIgdG8gc25tcF9zZXNzX3JlYWQoKSwgYnV0IGFjY2VwdHMgYSBwb2ludGVyIHRvIGEgbGFyZ2UgZmlsZQorICAgICAqIGRlc2NyaXB0b3Igc2V0IGluc3RlYWQgb2YgYSBwb2ludGVyIHRvIGEgZmlsZSBkZXNjcmlwdG9yIHNldC4KKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXNzX3JlYWQyKHZvaWQgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICopOworICAgIHZvaWQgICAgICAgICAgICBzbm1wX3Nlc3NfdGltZW91dCh2b2lkICopOworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uodm9pZCAqKTsKKworICAgIGludCAgICAgICAgICAgICBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uodm9pZCAqLCBuZXRzbm1wX3BkdSAqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9wZHUgKiopOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9haXguaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oCmluZGV4IDQzMjcyZjEuLjAyZDQ5ODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2FpeC5oCkBAIC0yMiwzICsyMiw2IEBACiAKIC8qIGRlZmluZSB0aGUgZXh0cmEgbWliIG1vZHVsZXMgdGhhdCBhcmUgc3VwcG9ydGVkICovCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IT1NUX1JFU09VUkNFUworCisvKiB0aGUgbGVnYWN5IHN5bWJvbCBOT0FDQ0VTUyBjbGFzaGVzIHdpdGggdGhlIHN5c3RlbSBoZWFkZXJzLiBSZW1vdmUgaXQuICovCisjZGVmaW5lIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9kYXJ3aW45LmgKaW5kZXggNjJkOGQzMC4uYjU1NmQ5MCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZGFyd2luOS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2RhcndpbjkuaApAQCAtMyw2ICszLDE2IEBACiAgKiBzdWJzdGFudGlhbGx5IGVub3VnaCB0byBub3Qgd2FycmFudCBwcmV0ZW5kaW5nIGl0IGlzIGEgQlNEIGZsYXZvci4KICAqIFRoaXMgZmlyc3Qgc2VjdGlvbiBhcmUgdGhlIHZlc3RpZ2FsIEJTRCByZW1uYW50cy4KICAqLworLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCiAKIC8qCiAgKiBCU0Qgc3lzdGVtcyB1c2UgYSBkaWZmZXJlbnQgbWV0aG9kIG9mIGxvb2tpbmcgdXAgc29ja2FkZHJfaW4gdmFsdWVzIApAQCAtMzUsNiArNDUsOSBAQAogICogVGhpcyBzZWN0aW9uIGRlZmluZXMgTWFjIE9TIFggMTAuNSAoYW5kIGxhdGVyKSBzcGVjaWZpYyBhZGRpdGlvbnMuCiAgKi8KICNkZWZpbmUgZGFyd2luIDkKKyNpZm5kZWYgZGFyd2luOQorIyAgIGRlZmluZSBkYXJ3aW45IGRhcndpbgorI2VuZGlmCiAKIC8qCiAgKiBNYWMgT1MgWCBzaG91bGQgb25seSB1c2UgdGhlIG1vZGVybiBBUEkgYW5kIGRlZmluaXRpb25zLgpAQCAtNTAsNiArNjMsMTQgQEAKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0lGVEFCTEVfUkVXUklURVMKIAogLyoKKyAqIHVzZSBuZXcgaG9zdCByZXNvdXJjZXMgZmlsZXMgYXMgd2VsbAorICovCisjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IUlNXSU5TVF9SRVdSSVRFUworI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSFJTV1JVTl9SRVdSSVRFUworI3VuZGVmIE5FVFNOTVBfSU5DTFVERV9IUlNXUlVOX1dSSVRFX1NVUFBPUlQKKyNkZWZpbmUgTkVUU05NUF9DQU5fR0VUX0RJU0tfTEFCRUwgMQorCisvKgogICogRW5hYmxpbmcgdGhpcyByZXN0cmljdHMgdGhlIGNvbXBpbGVyIHRvIG1vc3RseSBwdWJsaWMgQVBJcy4KICAqLwogI2lmbmRlZiBfX0FQUExFX0FQSV9TVFJJQ1RfQ09ORk9STUFOQ0UKQEAgLTEyMCw2ICsxNDEsMTEgQEAKICN1bmRlZiBTVFJVQ1RfaW42cGNiX0hBU19pbnBfdmZsYWcKIAogLyoKKyAqIHV0aWxpdHkgbWFjcm8gdXNlZCBpbiBzZXZlcmFsIGRhcndpbiBzcGVjaWZpYyBmaWxlcworICovCisjZGVmaW5lIFNOTVBfQ0ZSZWxlYXNlKHgpIGRvIHsgaWYgKHgpIHsgQ0ZSZWxlYXNlKHgpOyB4ID0gTlVMTDsgfSB9IHdoaWxlKDApCisKKy8qCiAgKiBNYWMgT1MgWCBydW5zIG9uIGJvdGggUFBDIGFuZCBJbnRlbCBoYXJkd2FyZSwKICAqICAgd2hpY2ggaGFuZGxlIHVkcFRhYmxlIGluZGV4IHZhbHVlcyBkaWZmZXJlbnRseQogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkLmgKaW5kZXggNDEwODQyOS4uYTMwNjgzZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2QuaApAQCAtMjQsNiArMjQsNCBAQAogCiAvKiBkZWZpbmUgdGhlIGV4dHJhIG1pYiBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZCAqLwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKLSNpZmRlZiBORVRTTk1QX0VOQUJMRV9NRkRfUkVXUklURVMKICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0lGVEFCTEVfUkVXUklURVMKLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDUuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2ZyZWVic2Q1LmgKaW5kZXggZWZiYzViMy4uMzY5YzFhNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZnJlZWJzZDUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9mcmVlYnNkNS5oCkBAIC00LDUgKzQsNSBAQAogCiAvKiBkb24ndCBkZWZpbmUgX0tFUk5FTCBvbiBGcmVlQlNEIDUuMyBldmVuIGlmIGNvbmZpZ3VyZSB0aGlua3Mgd2UgbmVlZCBpdCAqLwogI2lmZGVmIGZyZWVic2Q1Ci0jdW5kZWYgSUZORVRfTkVFRFNfS0VSTkVMCisjdW5kZWYgTkVUU05NUF9JRk5FVF9ORUVEU19LRVJORUwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaHB1eC5oCmluZGV4IDBiNjI3ZTkuLjU3Y2VhNDIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2hwdXguaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9ocHV4LmgKQEAgLTgwLDUgKzgwLDE1IEBACiAjICBkZWZpbmUgTkVUU05NUF9FTkFCTEVfSU5MSU5FIDAKICNlbmRpZgogCisvKgorICogcHJldmVudCBzaWdhY3Rpb24gYmVpbmcgcmVkZWZpbmVkIHRvIGNtYV9zaWdhY3Rpb24KKyAqIChjYXVzaW5nIGJ1aWxkIGVycm9ycyBvbiBIUC1VWCAxMC4yMCwgYXQgbGVhc3QpCisgKi8KKyNpZmRlZiBocHV4MTAKKyNpZm5kZWYgX0NNQV9OT1dSQVBQRVJTXworIyAgZGVmaW5lIF9DTUFfTk9XUkFQUEVSU18gMQorI2VuZGlmCisjZW5kaWYKKwogLyogZGVmaW5lIHRoZSBleHRyYSBtaWIgbW9kdWxlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgKi8KICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9pcml4LmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9pcml4LmgKaW5kZXggNzlkNDFhOC4uOTMzZmU2MyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vaXJpeC5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2lyaXguaApAQCAtMjMsNyArMjMsNyBAQAogLyoKICAqIGRvbid0IGRlZmluZSBfS0VSTkVMIGJlZm9yZSBpbmNsdWRpbmcgc3lzL3VuaXN0ZC5oIAogICovCi0jZGVmaW5lIElGTkVUX05FRURTX0tFUk5FTF9MQVRFICAxCisjZGVmaW5lIE5FVFNOTVBfSUZORVRfTkVFRFNfS0VSTkVMX0xBVEUgIDEKIAogI2RlZmluZSBTVFJFQU1fTkVFRFNfS0VSTkVMX0lTTEFORFMKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0va2ZyZWVic2QuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2tmcmVlYnNkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmNzAyNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2tmcmVlYnNkLmgKQEAgLTAsMCArMSw5IEBACisjaW5jbHVkZSAiZnJlZWJzZDYuaCIKKyNkZWZpbmUgZnJlZWJzZDYgZnJlZWJzZDYKKworI2luY2x1ZGUgPG9zcmVsZGF0ZS5oPgorI2RlZmluZSBfX0ZyZWVCU0RfdmVyc2lvbiBfX0ZyZWVCU0Rfa2VybmVsX3ZlcnNpb24KKworI2luY2x1ZGUgPHN5cy9xdWV1ZS5oPgorI2luY2x1ZGUgPHN5cy9fdHlwZXMuaD4KKwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbmV0YnNkLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaAppbmRleCAxM2FkN2VhLi5jNjcyNjBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9uZXRic2QuaApAQCAtNDQsMyArNDQsNCBAQAogCiAvKiBkZWZpbmUgdGhlIGV4dHJhIG1pYiBtb2R1bGVzIHRoYXQgYXJlIHN1cHBvcnRlZCAqLwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSE9TVF9SRVNPVVJDRVMKKyNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0lGVEFCTEVfUkVXUklURVMKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaCBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL29wZW5ic2QuaAppbmRleCA3MTY3OTRjLi44ZGIwZWFjIDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9vcGVuYnNkLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vb3BlbmJzZC5oCkBAIC0xNSw2ICsxNSw0IEBACiAKIC8qIGRlZmluZSB0aGUgZXh0cmEgbWliIG1vZHVsZXMgdGhhdCBhcmUgc3VwcG9ydGVkICovCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9IT1NUX1JFU09VUkNFUwotI2lmZGVmIE5FVFNOTVBfRU5BQkxFX01GRF9SRVdSSVRFUwogI2RlZmluZSBORVRTTk1QX0lOQ0xVREVfSUZUQUJMRV9SRVdSSVRFUwotI2VuZGlmCmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmggYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zb2xhcmlzLmgKaW5kZXggZDNkY2I3Mi4uZWM2MWMzOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc29sYXJpcy5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3NvbGFyaXMuaApAQCAtMjUsMTQgKzI1LDkgQEAKICNkZWZpbmUgVURQX1BPUlRTX0lOX0hPU1RfT1JERVIgMQogI2RlZmluZSBUQ1BfUE9SVFNfSU5fSE9TVF9PUkRFUiAxCiAKLS8qIGdldCBzb21lIHJlcXVpcmVkIHByb3RvdHlwZXMgKHN0cnRva19yKSBmcm9tIGluY2x1ZGUgZmlsZXMgKi8KLSNkZWZpbmUgX19FWFRFTlNJT05TX18KLQogLyogZGVmaW5lIHRoZSBleHRyYSBtaWIgbW9kdWxlcyB0aGF0IGFyZSBzdXBwb3J0ZWQgKi8KICNkZWZpbmUgTkVUU05NUF9JTkNMVURFX0hPU1RfUkVTT1VSQ0VTCi0jaWZkZWYgTkVUU05NUF9FTkFCTEVfTUZEX1JFV1JJVEVTCiAjZGVmaW5lIE5FVFNOTVBfSU5DTFVERV9JRlRBQkxFX1JFV1JJVEVTCi0jZW5kaWYKIAogLyogU29sYXJpcyAyLjYrICovCiAjZGVmaW5lIF9TTEFTSF9QUk9DX01FVEhPRF8gMQpAQCAtNDMsNiArMzgsNiBAQAogLyoKICAqIE5FV19NSUJfQ09NUExJQU5UIGlzIGEgZGVmaW5lIHVzZWQgaW4gU29sYXJpcyAxMFU0KyB0byBlbmFibGUgYWRkaXRpb25hbAogICogTUlCIGluZm9ybWF0aW9uIChpdCBhZmZlY3RzIHRoZSBzdHJ1Y3RzIGluIDxpbmV0L21pYjIuaD4pCi0gKi8KLQorICovIAorIAogI2RlZmluZSBORVdfTUlCX0NPTVBMSUFOVApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3ZyNS5oIGIvaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3ZyNS5oCmluZGV4IGM0YTlmOWEuLjAxN2M3YzEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N2cjUuaAorKysgYi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zdnI1LmgKQEAgLTcsMTggKzcsMTIgQEAKIC8qCiAgKiB1c2luZyBDQ1MgImNjIiwgImNvbmZpZ3VyZSIgZG9lcyBub3QgZmluZCB0aGlzIGl0ZW0gCiAgKi8KLSNkZWZpbmUgSEFWRV9NRU1DUFkgMQotLyoKLSAqIHNvLCB1bmRvIHRoZSBkYW1hZ2UgZG9uZSBlYXJsaWVyIGluIGNvbmZpZy5oIAotICovCi0jdW5kZWYgbWVtY3B5Ci0jdW5kZWYgbWVtbW92ZQogI2RlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUUgMQogCiAvKgogICogbGllIGFib3V0IHRoaXMgbmV4dCBkZWZpbmUgdG8gYXZvaWQgc2FfbGVuIGFuZCBzYV9mYW1pbHkgTUFDUk9TICEhIAogICovCi0jZGVmaW5lIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyIDEKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyIDEKIAogLyoKICAqIHRoaXMgaGVhZGVyIHJlcXVpcmVzIHF1ZXVlX3QsIG5vdCBlYXNpbHkgZG9uZSB3aXRob3V0IGtlcm5lbCBoZWFkZXJzIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oIGIvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCmluZGV4IGQ5MGRmMDc1Li4yOTMwY2M0IDEwMDY0NAotLS0gYS9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKysrIGIvaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCkBAIC05OCwxNDIgKzk4LDEwIEBACiAjZW5kaWYKICNlbmRpZgogCi0gICAgLyoKLSAgICAgKiBUcnkgdG8gZW5zdXJlIHdlIGhhdmUgMzItYml0IChhbmQgaG9wZWZ1bGx5IDY0LWJpdCkKLSAgICAgKiAgICBpbnRlZ2VyIHR5cGVzIGF2YWlsYWJsZS4KLSAgICAgKi8KLQotI2lmbmRlZiBIQVZFX0lOVDhfVAotdHlwZWRlZiBzaWduZWQgY2hhciBpbnQ4X3Q7Ci0jZW5kaWYgLyogIUhBVkVfSU5UOF9UICovCi0KLSNpZm5kZWYgSEFWRV9VSU5UOF9UCi0jaWZkZWYgSEFWRV9VX0lOVDhfVAotdHlwZWRlZiB1X2ludDhfdCAgICAgIHVpbnQ4X3Q7Ci0jZWxzZQotdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7Ci0jZW5kaWYKLSNlbmRpZiAvKiAhSEFWRV9VSU5UOF9UICovCi0KLSNpZm5kZWYgSEFWRV9JTlQxNl9UCi0jaWYgICBTSVpFT0ZfSU5UID09IDIKLSNkZWZpbmUgSU5UMTZfVCBpbnQKLSNlbGlmIFNJWkVPRl9TSE9SVCA9PSAyCi0jZGVmaW5lIElOVDE2X1Qgc2hvcnQKLSNlbHNlCi0jZGVmaW5lIF9JTlQxNl9JU19OT1RfMTZCSVQKLSNkZWZpbmUgSU5UMTZfVCBzaG9ydAotI2VuZGlmCi10eXBlZGVmIElOVDE2X1QgaW50MTZfdDsKLSNlbmRpZiAvKiAhSEFWRV9JTlQxNl9UICovCi0KLSNpZm5kZWYgSEFWRV9VSU5UMTZfVAotI2lmZGVmIEhBVkVfVV9JTlQxNl9UCi10eXBlZGVmIHVfaW50MTZfdCAgICAgICAgdWludDE2X3Q7Ci0jZWxzZQotI2lmZGVmIElOVDE2X1QKLXR5cGVkZWYgdW5zaWduZWQgSU5UMTZfVCB1aW50MTZfdDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIHNob3J0ICAgdWludDE2X3Q7Ci0jZW5kaWYKLSNlbmRpZgotI2VuZGlmIC8qICFIQVZFX1VJTlQxNl9UICovCi0KLSNpZm5kZWYgSEFWRV9JTlQzMl9UCi0jaWYgICBTSVpFT0ZfSU5UID09IDQKLSNkZWZpbmUgSU5UMzJfVCBpbnQgCi0jZWxpZiBTSVpFT0ZfTE9ORyA9PSA0Ci0jZGVmaW5lIElOVDMyX1QgbG9uZyAKLSNlbGlmIFNJWkVPRl9TSE9SVCA9PSA0Ci0jZGVmaW5lIElOVDMyX1Qgc2hvcnQgCi0jZWxzZQotI2RlZmluZSBfSU5UMzJfSVNfTk9UXzMyQklUCi0jZGVmaW5lIElOVDMyX1QgaW50IAotI2VuZGlmCi10eXBlZGVmIElOVDMyX1QgaW50MzJfdDsKLSNlbmRpZiAvKiAhSEFWRV9JTlQzMl9UICovCi0KLSNpZm5kZWYgSEFWRV9VSU5UMzJfVAotI2lmZGVmIEhBVkVfVV9JTlQzMl9UCi10eXBlZGVmIHVfaW50MzJfdCAgICAgICAgdWludDMyX3Q7Ci0jZWxzZQotI2lmZGVmIElOVDMyX1QKLXR5cGVkZWYgdW5zaWduZWQgSU5UMzJfVCB1aW50MzJfdDsKLSNlbHNlCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICAgdWludDMyX3Q7Ci0jZW5kaWYKLSNlbmRpZgotI2VuZGlmIC8qICFIQVZFX1VJTlQzMl9UICovCi0KLSNpZm5kZWYgSEFWRV9JTlQ2NF9UCi0jaWYgU0laRU9GX0xPTkcgPT0gOAotI2RlZmluZSBJTlQ2NF9UIGxvbmcgCi0jZWxpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSU5UNjRfVCBsb25nIGxvbmcKLSNlbGlmICAgU0laRU9GX0lOVCA9PSA4Ci0jZGVmaW5lIElOVDY0X1QgaW50IAotI2VsaWYgU0laRU9GX0xPTkcgPj0gOAotI2RlZmluZSBJTlQ2NF9UIGxvbmcgCi0jZGVmaW5lIF9JTlQ2NF9JU19OT1RfNjRCSVQKLSNlbmRpZgotI2lmZGVmIElOVDY0X1QKLXR5cGVkZWYgSU5UNjRfVCBpbnQ2NF90OwotI2RlZmluZSBIQVZFX0lOVDY0X1QgMQotI2VuZGlmCi0jZW5kaWYgLyogIUhBVkVfSU5UNjRfVCAqLwotCi0jaWZuZGVmIEhBVkVfVUlOVDY0X1QKLSNpZmRlZiBIQVZFX1VfSU5UNjRfVAotdHlwZWRlZiB1X2ludDY0X3QgICAgICAgIHVpbnQ2NF90OwotI2VsaWYgZGVmaW5lZChJTlQ2NF9UKQotdHlwZWRlZiB1bnNpZ25lZCBJTlQ2NF9UIHVpbnQ2NF90OwotI2VuZGlmCi0jZGVmaW5lIEhBVkVfVUlOVDY0X1QgMQorI2lmbmRlZiBIQVZFX05GRFNfVAordHlwZWRlZiB1bnNpZ25lZCBsb25nIGludCBuZmRzX3Q7CiAjZW5kaWYKIAotI2lmbmRlZiBIQVZFX0lOVE1BWF9UCi0jaWZkZWYgU0laRU9GX0xPTkdfTE9ORwotdHlwZWRlZiBsb25nIGxvbmcgaW50bWF4X3Q7Ci0jZGVmaW5lIFNJWkVPRl9JTlRNQVhfVCBTSVpFT0ZfTE9OR19MT05HCi0jZWxpZiBkZWZpbmVkKEhBVkVfSU5UNjRfVCkgJiYgIWRlZmluZWQoX0lOVDY0X0lTX05PVF82NEJJVCkKLXR5cGVkZWYgaW50NjRfdCAgIGludG1heF90OwotI2RlZmluZSBTSVpFT0ZfSU5UTUFYX1QgOAotI2Vsc2UKLXR5cGVkZWYgbG9uZyAgICAgIGludG1heF90OwotI2RlZmluZSBTSVpFT0ZfSU5UTUFYX1QgU0laRU9GX0xPTkcKLSNlbmRpZgotI2RlZmluZSBIQVZFX0lOVE1BWF9UIDEKLSNlbmRpZgotCi0jaWZuZGVmIEhBVkVfVUlOVE1BWF9UCi0jaWZkZWYgU0laRU9GX0xPTkdfTE9ORwotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludG1heF90OwotI2VsaWYgZGVmaW5lZChIQVZFX1VJTlQ2NF9UKSAmJiAhZGVmaW5lZChfSU5UNjRfSVNfTk9UXzY0QklUKQotdHlwZWRlZiB1aW50NjRfdCAgICAgICAgICAgdWludG1heF90OwotI2Vsc2UKLXR5cGVkZWYgdW5zaWduZWQgbG9uZyAgICAgIHVpbnRtYXhfdDsKLSNlbmRpZgotI2RlZmluZSBIQVZFX1VJTlRNQVhfVCAxCi0jZW5kaWYKLQotI2lmbmRlZiBIQVZFX1VJTlRQVFJfVAotI2lmIFNJWkVPRl9MT05HID09IDgKLS8qIGxpa2VseSA2NGJpdCBtYWNoaW5lIHdpdGggNjRiaXQgYWRkcmVzc2luZz8gKi8KLSAgICB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgdWludHB0cl90OwotI2Vsc2UKLSAgICB0eXBlZGVmIHVuc2lnbmVkIHVpbnRwdHJfdDsKLSNlbmRpZgotI2VuZGlmCi0KLSNpZm5kZWYgSEFWRV9JTlRQVFJfVAotI2lmIFNJWkVPRl9MT05HID09IDgKLS8qIGxpa2VseSA2NGJpdCBtYWNoaW5lIHdpdGggNjRiaXQgYWRkcmVzc2luZz8gKi8KLSAgICB0eXBlZGVmIGxvbmcgaW50cHRyX3Q7Ci0jZWxzZQotICAgIHR5cGVkZWYgaW50IGludHB0cl90OwotI2VuZGlmCi0jZW5kaWYKLSAgICAKICAgICAvKgogICAgICAqICBGb3IgdGhlIGluaXRpYWwgcmVsZWFzZSwgdGhpcyB3aWxsIGp1c3QgcmVmZXIgdG8gdGhlCiAgICAgICogIHJlbGV2YW50IFVDRCBoZWFkZXIgZmlsZXMuCkBAIC0yNDQsNjkgKzExMiwzMDYgQEAKICAgICAgKiAgdG8gYWxsb3cgYXBwbGljYXRpb24gd3JpdGVycyB0byBhZG9wdCB0aGUgbmV3IGhlYWRlciBmaWxlIG5hbWVzLgogICAgICAqLwogCit0eXBlZGVmIHVuaW9uIHsKKyAgIGxvbmcgICAgICAgICAgICppbnRlZ2VyOworICAgdV9jaGFyICAgICAgICAgKnN0cmluZzsKKyAgIG9pZCAgICAgICAgICAgICpvYmppZDsKKyAgIHVfY2hhciAgICAgICAgICpiaXRzdHJpbmc7CisgICBzdHJ1Y3QgY291bnRlcjY0ICpjb3VudGVyNjQ7CisjaWZkZWYgTkVUU05NUF9XSVRIX09QQVFVRV9TUEVDSUFMX1RZUEVTCisgICBmbG9hdCAgICAgICAgICAqZmxvYXRWYWw7CisgICBkb3VibGUgICAgICAgICAqZG91YmxlVmFsOworICAgLyoKKyAgICAqIHRfdW5pb24gKnVuaW9uVmFsOyAKKyAgICAqLworI2VuZGlmICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMgKi8KK30gbmV0c25tcF92YXJkYXRhOwogCi0jaW5jbHVkZSA8bmV0LXNubXAvZGVmaW5pdGlvbnMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+Ci0vKgotICogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbGlic25tcC5oPiAKKworI2RlZmluZSBNQVhfT0lEX0xFTgkgICAgMTI4IC8qIG1heCBzdWJpZCdzIGluIGFuIG9pZCAqLworCisvKiogQHR5cGVkZWYgc3RydWN0IHZhcmlhYmxlX2xpc3QgbmV0c25tcF92YXJpYWJsZV9saXN0CisgKiBUeXBlZGVmcyB0aGUgdmFyaWFibGVfbGlzdCBzdHJ1Y3QgaW50byBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKi8KKy8qKiBAc3RydWN0IHZhcmlhYmxlX2xpc3QKKyAqIFRoZSBuZXRzbm1wIHZhcmlhYmxlIGxpc3QgYmluZGluZyBzdHJ1Y3R1cmUsIGl0J3MgdHlwZWRlZidkIHRvCisgKiBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QuCiAgKi8KLQotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfaW5kZXhfcyB7Ci0gICAgICAgc2l6ZV90ICAgICAgbGVuOwotICAgICAgIG9pZCAgICAgICAgICpvaWRzOwotICAgIH0gbmV0c25tcF9pbmRleDsKK3R5cGVkZWYgc3RydWN0IHZhcmlhYmxlX2xpc3QgeworICAgLyoqIE5VTEwgZm9yIGxhc3QgdmFyaWFibGUgKi8KKyAgIHN0cnVjdCB2YXJpYWJsZV9saXN0ICpuZXh0X3ZhcmlhYmxlOyAgICAKKyAgIC8qKiBPYmplY3QgaWRlbnRpZmllciBvZiB2YXJpYWJsZSAqLworICAgb2lkICAgICAgICAgICAgKm5hbWU7ICAgCisgICAvKiogbnVtYmVyIG9mIHN1YmlkJ3MgaW4gbmFtZSAqLworICAgc2l6ZV90ICAgICAgICAgIG5hbWVfbGVuZ3RoOyAgICAKKyAgIC8qKiBBU04gdHlwZSBvZiB2YXJpYWJsZSAqLworICAgdV9jaGFyICAgICAgICAgIHR5cGU7ICAgCisgICAvKiogdmFsdWUgb2YgdmFyaWFibGUgKi8KKyAgICBuZXRzbm1wX3ZhcmRhdGEgdmFsOworICAgLyoqIHRoZSBsZW5ndGggb2YgdGhlIHZhbHVlIHRvIGJlIGNvcGllZCBpbnRvIGJ1ZiAqLworICAgc2l6ZV90ICAgICAgICAgIHZhbF9sZW47CisgICAvKiogYnVmZmVyIHRvIGhvbGQgdGhlIE9JRCAqLworICAgb2lkICAgICAgICAgICAgIG5hbWVfbG9jW01BWF9PSURfTEVOXTsgIAorICAgLyoqIDkwIHBlcmNlbnRpbGUgPCA0MC4gKi8KKyAgIHVfY2hhciAgICAgICAgICBidWZbNDBdOworICAgLyoqIChPcGFxdWUpIGhvb2sgZm9yIGFkZGl0aW9uYWwgZGF0YSAqLworICAgdm9pZCAgICAgICAgICAgKmRhdGE7CisgICAvKiogY2FsbGJhY2sgdG8gZnJlZSBhYm92ZSAqLworICAgdm9pZCAgICAgICAgICAgICgqZGF0YUZyZWVIb29rKSh2b2lkICopOyAgICAKKyAgIGludCAgICAgICAgICAgICBpbmRleDsKK30gbmV0c25tcF92YXJpYWJsZV9saXN0OwogCiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3ZvaWRfYXJyYXlfcyB7Ci0gICAgICAgc2l6ZV90ICBzaXplOwotICAgICAgIHZvaWQgKiAqYXJyYXk7Ci0gICAgfSBuZXRzbm1wX3ZvaWRfYXJyYXk7CisvKiogQHR5cGVkZWYgc3RydWN0IHNubXBfcGR1IHRvIG5ldHNubXBfcGR1CisgKiBUeXBlZGVmcyB0aGUgc25tcF9wZHUgc3RydWN0IGludG8gbmV0c25tcF9wZHUgKi8KKy8qKiBAc3RydWN0IHNubXBfcGR1CisgKiBUaGUgc25tcCBwcm90b2NvbCBkYXRhIHVuaXQuCisgKi8JCit0eXBlZGVmIHN0cnVjdCBzbm1wX3BkdSB7CisKKyNkZWZpbmUgbm9uX3JlcGVhdGVycwllcnJzdGF0CisjZGVmaW5lIG1heF9yZXBldGl0aW9ucyBlcnJpbmRleAogCiAgICAgLyoKLSAgICAgKiByZWZlcmVuY2VzIHRvIHZhcmlvdXMgdHlwZXMKKyAgICAgKiBQcm90b2NvbC12ZXJzaW9uIGluZGVwZW5kZW50IGZpZWxkcwogICAgICAqLwotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3ZvaWQgewotICAgICAgIHZvaWQgKiB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl92b2lkOworICAgIC8qKiBzbm1wIHZlcnNpb24gKi8KKyAgICBsb25nICAgICAgICAgICAgdmVyc2lvbjsKKyAgICAvKiogVHlwZSBvZiB0aGlzIFBEVSAqLwkKKyAgICBpbnQgICAgICAgICAgICAgY29tbWFuZDsKKyAgICAvKiogUmVxdWVzdCBpZCAtIG5vdGU6IG5vdCBpbmNyZW1lbnRlZCBvbiByZXRyaWVzICovCisgICAgbG9uZyAgICAgICAgICAgIHJlcWlkOyAgCisgICAgLyoqIE1lc3NhZ2UgaWQgZm9yIFYzIG1lc3NhZ2VzIG5vdGU6IGluY3JlbWVudGVkIGZvciBlYWNoIHJldHJ5ICovCisgICAgbG9uZyAgICAgICAgICAgIG1zZ2lkOworICAgIC8qKiBVbmlxdWUgSUQgZm9yIGluY29taW5nIHRyYW5zYWN0aW9ucyAqLworICAgIGxvbmcgICAgICAgICAgICB0cmFuc2lkOworICAgIC8qKiBTZXNzaW9uIGlkIGZvciBBZ2VudFggbWVzc2FnZXMgKi8KKyAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOworICAgIC8qKiBFcnJvciBzdGF0dXMgKG5vbl9yZXBlYXRlcnMgaW4gR2V0QnVsaykgKi8KKyAgICBsb25nICAgICAgICAgICAgZXJyc3RhdDsKKyAgICAvKiogRXJyb3IgaW5kZXggKG1heF9yZXBldGl0aW9ucyBpbiBHZXRCdWxrKSAqLworICAgIGxvbmcgICAgICAgICAgICBlcnJpbmRleDsgICAgICAgCisgICAgLyoqIFVwdGltZSAqLworICAgIHVfbG9uZyAgICAgICAgICB0aW1lOyAgIAorICAgIHVfbG9uZyAgICAgICAgICBmbGFnczsKIAotICAgIHR5cGVkZWYgdW5pb24gewotICAgICAgICB1X2xvbmcgIHVsOwotICAgICAgICB1X2ludCAgIHVpOwotICAgICAgICB1X3Nob3J0IHVzOwotICAgICAgICB1X2NoYXIgIHVjOwotICAgICAgICBsb25nICAgIHNsOwotICAgICAgICBpbnQgICAgIHNpOwotICAgICAgICBzaG9ydCAgIHNzOwotICAgICAgICBjaGFyICAgIHNjOwotICAgICAgICBjaGFyICogIGNwOwotICAgICAgICB2b2lkICogIHZwOwotICAgIH0gbmV0c25tcF9jdmFsdWU7CisgICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TW9kZWw7CisgICAgLyoqIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgKi8KKyAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlMZXZlbDsgIAorICAgIGludCAgICAgICAgICAgICBtc2dQYXJzZU1vZGVsOwogCi0jaWYgMAotICAgIHR5cGVkZWYgc3RydWN0IG5ldHNubXBfcmVmX3VfY2hhciB7Ci0gICAgICAgdV9jaGFyICogdmFsOwotICAgIH0gbmV0c25tcF9yZWZfVV9jaGFyOworICAgIC8qKgorICAgICAqIFRyYW5zcG9ydC1zcGVjaWZpYyBvcGFxdWUgZGF0YS4gIFRoaXMgcmVwbGFjZXMgdGhlIElQLWNlbnRyaWMgYWRkcmVzcworICAgICAqIGZpZWxkLiAgCisgICAgICovCisgICAgCisgICAgdm9pZCAgICAgICAgICAgKnRyYW5zcG9ydF9kYXRhOworICAgIGludCAgICAgICAgICAgICB0cmFuc3BvcnRfZGF0YV9sZW5ndGg7CiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl9jaGFyIHsKLSAgICAgICBjaGFyICogdmFsOwotICAgIH0gbmV0c25tcF9yZWZfdm9pZDsKKyAgICAvKioKKyAgICAgKiBUaGUgYWN0dWFsIHRyYW5zcG9ydCBkb21haW4uICBUaGlzIFNIT1VMRCBOT1QgQkUgRlJFRSgpRC4gIAorICAgICAqLwogCi0gICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9yZWZfaW50X3MgewotICAgICAgIGludCB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl9pbnQ7CisgICAgY29uc3Qgb2lkICAgICAgKnREb21haW47CisgICAgc2l6ZV90ICAgICAgICAgIHREb21haW5MZW47CiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl91X2ludF9zIHsKLSAgICAgICB1X2ludCB2YWw7Ci0gICAgfSBuZXRzbm1wX3JlZl9pbnQ7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJpYWJsZXM7CiAKLSAgICB0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3JlZl91X2xvbmdfcyB7Ci0gICAgICAgdV9sb25nIHZhbDsKLSAgICB9IG5ldHNubXBfcmVmX3VfbG9uZzsKLSNlbmRpZgogCi0gICAgdHlwZWRlZiBzdHJ1Y3QgbmV0c25tcF9yZWZfc2l6ZV90X3MgewotICAgICAgIHNpemVfdCB2YWw7Ci0gICAgfSAqIG5ldHNubXBfcmVmX3NpemVfdDsKKyAgICAvKgorICAgICAqIFNOTVB2MSAmIFNOTVB2MmMgZmllbGRzCisgICAgICovCisgICAgLyoqIGNvbW11bml0eSBmb3Igb3V0Z29pbmcgcmVxdWVzdHMuICovCisgICAgdV9jaGFyICAgICAgICAgKmNvbW11bml0eTsKKyAgICAvKiogbGVuZ3RoIG9mIGNvbW11bml0eSBuYW1lLiAqLworICAgIHNpemVfdCAgICAgICAgICBjb21tdW5pdHlfbGVuOyAgCisKKyAgICAvKgorICAgICAqIFRyYXAgaW5mb3JtYXRpb24KKyAgICAgKi8KKyAgICAvKiogU3lzdGVtIE9JRCAqLworICAgIG9pZCAgICAgICAgICAgICplbnRlcnByaXNlOyAgICAgCisgICAgc2l6ZV90ICAgICAgICAgIGVudGVycHJpc2VfbGVuZ3RoOworICAgIC8qKiB0cmFwIHR5cGUgKi8KKyAgICBsb25nICAgICAgICAgICAgdHJhcF90eXBlOworICAgIC8qKiBzcGVjaWZpYyB0eXBlICovCisgICAgbG9uZyAgICAgICAgICAgIHNwZWNpZmljX3R5cGU7CisgICAgLyoqIFRoaXMgaXMgT05MWSB1c2VkIGZvciB2MSBUUkFQcyAgKi8KKyAgICB1bnNpZ25lZCBjaGFyICAgYWdlbnRfYWRkcls0XTsgIAorCisgICAgLyoKKyAgICAgKiAgU05NUHYzIGZpZWxkcworICAgICAqLworICAgIC8qKiBjb250ZXh0IHNubXBFbmdpbmVJRCAqLworICAgIHVfY2hhciAgICAgICAgICpjb250ZXh0RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KKyAgICBzaXplX3QgICAgICAgICAgY29udGV4dEVuZ2luZUlETGVuOyAgICAgCisgICAgLyoqIGF1dGhvcml0YXRpdmUgY29udGV4dE5hbWUgKi8KKyAgICBjaGFyICAgICAgICAgICAqY29udGV4dE5hbWU7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0TmFtZSAqLworICAgIHNpemVfdCAgICAgICAgICBjb250ZXh0TmFtZUxlbjsKKyAgICAvKiogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgZm9yIHNlY3VyaXR5ICovCisgICAgdV9jaGFyICAgICAgICAgKnNlY3VyaXR5RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eUVuZ2luZUlEICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5RW5naW5lSURMZW47ICAgIAorICAgIC8qKiBvbiBiZWhhbGYgb2YgdGhpcyBwcmluY2lwYWwgKi8KKyAgICBjaGFyICAgICAgICAgICAqc2VjdXJpdHlOYW1lOworICAgIC8qKiBMZW5ndGggb2Ygc2VjdXJpdHlOYW1lLiAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eU5hbWVMZW47ICAgICAgICAKKyAgICAKKyAgICAvKgorICAgICAqIEFnZW50WCBmaWVsZHMKKyAgICAgKiAgICAgIChhbHNvIHVzZXMgU05NUHYxIGNvbW11bml0eSBmaWVsZCkKKyAgICAgKi8KKyAgICBpbnQgICAgICAgICAgICAgcHJpb3JpdHk7CisgICAgaW50ICAgICAgICAgICAgIHJhbmdlX3N1YmlkOworICAgIAorICAgIHZvaWQgICAgICAgICAgICpzZWN1cml0eVN0YXRlUmVmOworfSBuZXRzbm1wX3BkdTsKKworCisvKiogQHR5cGVkZWYgc3RydWN0IHNubXBfc2Vzc2lvbiBuZXRzbm1wX3Nlc3Npb24KKyAqIFR5cGVkZWZzIHRoZSBzbm1wX3Nlc3Npb24gc3RydWN0IGludG9uZXRzbm1wX3Nlc3Npb24gKi8KKyAgICAgICAgc3RydWN0IHNubXBfc2Vzc2lvbjsKK3R5cGVkZWYgc3RydWN0IHNubXBfc2Vzc2lvbiBuZXRzbm1wX3Nlc3Npb247CisKKyNkZWZpbmUgVVNNX0FVVEhfS1VfTEVOICAgICAzMgorI2RlZmluZSBVU01fUFJJVl9LVV9MRU4gICAgIDMyCisKK3R5cGVkZWYgaW50ICAgICAgICAoKnNubXBfY2FsbGJhY2spIChpbnQsIG5ldHNubXBfc2Vzc2lvbiAqLCBpbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3BkdSAqLCB2b2lkICopOwordHlwZWRlZiBpbnQgICAgICgqbmV0c25tcF9jYWxsYmFjaykgKGludCwgbmV0c25tcF9zZXNzaW9uICosIGludCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfcGR1ICosIHZvaWQgKik7CisvKiogQHN0cnVjdCBzbm1wX3Nlc3Npb24KKyAqIFRoZSBzbm1wIHNlc3Npb24gc3RydWN0dXJlLgorICovCitzdHJ1Y3Qgc25tcF9zZXNzaW9uIHsKKyAgICAvKgorICAgICAqIFByb3RvY29sLXZlcnNpb24gaW5kZXBlbmRlbnQgZmllbGRzCisgICAgICovCisgICAgLyoqIHNubXAgdmVyc2lvbiAqLworICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOworICAgIC8qKiBOdW1iZXIgb2YgcmV0cmllcyBiZWZvcmUgdGltZW91dC4gKi8KKyAgICBpbnQgICAgICAgICAgICAgcmV0cmllczsKKyAgICAvKiogTnVtYmVyIG9mIHVTIHVudGlsIGZpcnN0IHRpbWVvdXQsIHRoZW4gZXhwb25lbnRpYWwgYmFja29mZiAqLworICAgIGxvbmcgICAgICAgICAgICB0aW1lb3V0OyAgICAgICAgCisgICAgdV9sb25nICAgICAgICAgIGZsYWdzOworICAgIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnN1YnNlc3Npb247CisgICAgc3RydWN0IHNubXBfc2Vzc2lvbiAqbmV4dDsKKworICAgIC8qKiBuYW1lIG9yIGFkZHJlc3Mgb2YgZGVmYXVsdCBwZWVyIChtYXkgaW5jbHVkZSB0cmFuc3BvcnQgc3BlY2lmaWVyIGFuZC9vciBwb3J0IG51bWJlcikgKi8KKyAgICBjaGFyICAgICAgICAgICAqcGVlcm5hbWU7CisgICAgLyoqIFVEUCBwb3J0IG51bWJlciBvZiBwZWVyLiAoTk8gTE9OR0VSIFVTRUQgLSBVU0UgcGVlcm5hbWUgSU5TVEVBRCkgKi8KKyAgICB1X3Nob3J0ICAgICAgICAgcmVtb3RlX3BvcnQ7CisgICAgLyoqIE15IERvbWFpbiBuYW1lIG9yIGRvdHRlZCBJUCBhZGRyZXNzLCAwIGZvciBkZWZhdWx0ICovCisgICAgY2hhciAgICAgICAgICAgKmxvY2FsbmFtZTsKKyAgICAvKiogTXkgVURQIHBvcnQgbnVtYmVyLCAwIGZvciBkZWZhdWx0LCBwaWNrZWQgcmFuZG9tbHkgKi8KKyAgICB1X3Nob3J0ICAgICAgICAgbG9jYWxfcG9ydDsgICAgIAorICAgIC8qKgorICAgICAqIEF1dGhlbnRpY2F0aW9uIGZ1bmN0aW9uIG9yIE5VTEwgaWYgbnVsbCBhdXRoZW50aWNhdGlvbiBpcyB1c2VkIAorICAgICAqLworICAgIHVfY2hhciAgICAgICAgICooKmF1dGhlbnRpY2F0b3IpICh1X2NoYXIgKiwgc2l6ZV90ICosIHVfY2hhciAqLCBzaXplX3QpOworICAgIC8qKiBGdW5jdGlvbiB0byBpbnRlcnByZXQgaW5jb21pbmcgZGF0YSAqLworICAgIG5ldHNubXBfY2FsbGJhY2sgY2FsbGJhY2s7ICAgICAgCisgICAgLyoqCisgICAgICogUG9pbnRlciB0byBkYXRhIHRoYXQgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIG1heSBjb25zaWRlciBpbXBvcnRhbnQgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKmNhbGxiYWNrX21hZ2ljOworICAgIC8qKiBjb3B5IG9mIHN5c3RlbSBlcnJubyAqLworICAgIGludCAgICAgICAgICAgICBzX2Vycm5vOworICAgIC8qKiBjb3B5IG9mIGxpYnJhcnkgZXJybm8gKi8KKyAgICBpbnQgICAgICAgICAgICAgc19zbm1wX2Vycm5vOyAgIAorICAgIC8qKiBTZXNzaW9uIGlkIC0gQWdlbnRYIG9ubHkgKi8KKyAgICBsb25nICAgICAgICAgICAgc2Vzc2lkOyAKKworICAgIC8qCisgICAgICogU05NUHYxICYgU05NUHYyYyBmaWVsZHMKKyAgICAgKi8KKyAgICAvKiogY29tbXVuaXR5IGZvciBvdXRnb2luZyByZXF1ZXN0cy4gKi8KKyAgICB1X2NoYXIgICAgICAgICAqY29tbXVuaXR5OworICAgIC8qKiBMZW5ndGggb2YgY29tbXVuaXR5IG5hbWUuICovCisgICAgc2l6ZV90ICAgICAgICAgIGNvbW11bml0eV9sZW47ICAKKyAgICAvKiogIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gcmVjZWl2ZS4gICovCisgICAgc2l6ZV90ICAgICAgICAgIHJjdk1zZ01heFNpemU7CisgICAgLyoqICBMYXJnZXN0IG1lc3NhZ2UgdG8gdHJ5IHRvIHNlbmQuICAqLworICAgIHNpemVfdCAgICAgICAgICBzbmRNc2dNYXhTaXplOyAgCisKKyAgICAvKgorICAgICAqIFNOTVB2MyBmaWVsZHMKKyAgICAgKi8KKyAgICAvKiogYXJlIHdlIHRoZSBhdXRob3JpdGF0aXZlIGVuZ2luZT8gKi8KKyAgICB1X2NoYXIgICAgICAgICAgaXNBdXRob3JpdGF0aXZlOworICAgIC8qKiBhdXRob3JpdGF0aXZlIHNubXBFbmdpbmVJRCAqLworICAgIHVfY2hhciAgICAgICAgICpjb250ZXh0RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KKyAgICBzaXplX3QgICAgICAgICAgY29udGV4dEVuZ2luZUlETGVuOyAgICAgCisgICAgLyoqIGluaXRpYWwgZW5naW5lQm9vdHMgZm9yIHJlbW90ZSBlbmdpbmUgKi8KKyAgICB1X2ludCAgICAgICAgICAgZW5naW5lQm9vdHM7CisgICAgLyoqIGluaXRpYWwgZW5naW5lVGltZSBmb3IgcmVtb3RlIGVuZ2luZSAqLworICAgIHVfaW50ICAgICAgICAgICBlbmdpbmVUaW1lOworICAgIC8qKiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lICovCisgICAgY2hhciAgICAgICAgICAgKmNvbnRleHROYW1lOworICAgIC8qKiBMZW5ndGggb2YgY29udGV4dE5hbWUgKi8KKyAgICBzaXplX3QgICAgICAgICAgY29udGV4dE5hbWVMZW47CisgICAgLyoqIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEICovCisgICAgdV9jaGFyICAgICAgICAgKnNlY3VyaXR5RW5naW5lSUQ7CisgICAgLyoqIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlFbmdpbmVJRExlbjsgICAgCisgICAgLyoqIG9uIGJlaGFsZiBvZiB0aGlzIHByaW5jaXBhbCAqLworICAgIGNoYXIgICAgICAgICAgICpzZWN1cml0eU5hbWU7CisgICAgLyoqIExlbmd0aCBvZiBzZWN1cml0eU5hbWUuICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5TmFtZUxlbjsKKworICAgIC8qKiBhdXRoIHByb3RvY29sIG9pZCAqLworICAgIG9pZCAgICAgICAgICAgICpzZWN1cml0eUF1dGhQcm90bzsKKyAgICAvKiogTGVuZ3RoIG9mIGF1dGggcHJvdG9jb2wgb2lkICovCisgICAgc2l6ZV90ICAgICAgICAgIHNlY3VyaXR5QXV0aFByb3RvTGVuOworICAgIC8qKiBLdSBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KKyAgICB1X2NoYXIgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5W1VTTV9BVVRIX0tVX0xFTl07ICAgICAgIAorICAgIC8qKiBMZW5ndGggb2YgS3UgZm9yIGF1dGggcHJvdG9jb2wgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoS2V5TGVuOworICAgIC8qKiBLdWwgZm9yIGF1dGggcHJvdG9jb2wgKi8KKyAgICB1X2NoYXIgICAgICAgICAgKnNlY3VyaXR5QXV0aExvY2FsS2V5OyAgICAgICAKKyAgICAvKiogTGVuZ3RoIG9mIEt1bCBmb3IgYXV0aCBwcm90b2NvbCBYWFggKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlBdXRoTG9jYWxLZXlMZW47ICAgICAgIAorCisgICAgLyoqIHByaXYgcHJvdG9jb2wgb2lkICovCisgICAgb2lkICAgICAgICAgICAgKnNlY3VyaXR5UHJpdlByb3RvOworICAgIC8qKiBMZW5ndGggb2YgcHJpdiBwcm90b2NvbCBvaWQgKi8KKyAgICBzaXplX3QgICAgICAgICAgc2VjdXJpdHlQcml2UHJvdG9MZW47CisgICAgLyoqIEt1IGZvciBwcml2YWN5IHByb3RvY29sIFhYWCAqLworICAgIHVfY2hhciAgICAgICAgICBzZWN1cml0eVByaXZLZXlbVVNNX1BSSVZfS1VfTEVOXTsgICAgICAgCisgICAgLyoqIExlbmd0aCBvZiBLdSBmb3IgcHJpdiBwcm90b2NvbCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZLZXlMZW47CisgICAgLyoqIEt1bCBmb3IgcHJpdiBwcm90b2NvbCAqLworICAgIHVfY2hhciAgICAgICAgICAqc2VjdXJpdHlQcml2TG9jYWxLZXk7ICAgICAgIAorICAgIC8qKiBMZW5ndGggb2YgS3VsIGZvciBwcml2IHByb3RvY29sIFhYWCAqLworICAgIHNpemVfdCAgICAgICAgICBzZWN1cml0eVByaXZMb2NhbEtleUxlbjsgICAgICAgCisKKyAgICAvKiogc25tcCBzZWN1cml0eSBtb2RlbCwgdjEsIHYyYywgdXNtICovCisgICAgaW50ICAgICAgICAgICAgIHNlY3VyaXR5TW9kZWw7CisgICAgLyoqIG5vQXV0aE5vUHJpdiwgYXV0aE5vUHJpdiwgYXV0aFByaXYgKi8KKyAgICBpbnQgICAgICAgICAgICAgc2VjdXJpdHlMZXZlbDsgIAorICAgIC8qKiB0YXJnZXQgcGFyYW0gbmFtZSAqLworICAgIGNoYXIgICAgICAgICAgICpwYXJhbU5hbWU7CisKKyAgICAvKioKKyAgICAgKiBzZWN1cml0eSBtb2R1bGUgc3BlY2lmaWMgCisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKnNlY3VyaXR5SW5mbzsKKworICAgIC8qKgorICAgICAqIHVzZSBhcyB5b3Ugd2FudCBkYXRhIAorICAgICAqCisgICAgICogICAgIHVzZWQgYnkgJ1NOTVBfRkxBR1NfUkVTUF9DQUxMQkFDSycgaGFuZGxpbmcgaW4gdGhlIGFnZW50CisgICAgICogWFhYOiBvciBzaG91bGQgd2UgYWRkIGEgbmV3IGZpZWxkIGludG8gdGhpcyBzdHJ1Y3R1cmU/CisgICAgICovCisgICAgdm9pZCAgICAgICAgICAgKm15dm9pZDsKK307CisKKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9kZWZpbml0aW9ucy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmggYi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKaW5kZXggZWQ1NzQ4Yi4uOTI0OTc3ZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisrKyBiL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaApAQCAtNyw2ICs3LDY1IEBACiAKICNpbmNsdWRlIDxuZXQtc25tcC90eXBlcy5oPgogCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAgICAgICAgICAiQyIgeworI2VuZGlmCisKKyAgICAvKiBDcmVhdGlvbiAqLworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCisgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKG5ldHNubXBfcGR1ICpwZHUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbik7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKKyAgICAgICBzbm1wX3Zhcmxpc3RfYWRkX3ZhcmlhYmxlKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqKiB2YXJsaXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogdmFsdWUsIHNpemVfdCBsZW4pOworICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqCisgICAgICAgc25tcF9hZGRfbnVsbF92YXIobmV0c25tcF9wZHUgKnBkdSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCk7CisgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoKKyAgICAgICBzbm1wX2Nsb25lX3ZhcmJpbmQobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFybGlzdCk7CisKKyAgICAvKiBTZXR0aW5nIFZhbHVlcyAqLworICAgIGludCAgICAgICAgICAgICBzbm1wX3NldF92YXJfdmFsdWUobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqIHZhbHVlLCBzaXplX3QgbGVuKTsKKyAgICBpbnQgICAgICAgICAgICAgc25tcF9zZXRfdmFyX29iamlkKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCk7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbik7CisgICAgaW50ICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLCBsb25nIHZhbCk7CisKKyAgICAgLyogT3V0cHV0ICovCisgICAgdm9pZCAgICAgICAgICAgIHByaW50X3ZhcmlhYmxlKGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKyAgICB2b2lkICAgICAgICAgICBmcHJpbnRfdmFyaWFibGUoRklMRSAqIGZwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7CisgICAgaW50ICAgICAgICAgICBzbnByaW50X3ZhcmlhYmxlKGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1Zl9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKworICAgIHZvaWQgICAgICAgICAgICAgcHJpbnRfdmFsdWUoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKyAgICB2b2lkICAgICAgICAgICAgZnByaW50X3ZhbHVlKEZJTEUgKiBmcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiB2YXJpYWJsZSk7CisgICAgaW50ICAgICAgICAgICAgc25wcmludF92YWx1ZShjaGFyICpidWYsIHNpemVfdCBidWZfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcmlhYmxlKTsKKworICAgIC8qIERlbGV0aW9uICovCisgICAgdm9pZCAgICAgICAgICAgIHNubXBfZnJlZV92YXIoICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFyKTsgICAgIC8qIGZyZWVzIGp1c3QgdGhpcyBvbmUgKi8KKyAgICB2b2lkICAgICAgICAgICAgc25tcF9mcmVlX3ZhcmJpbmQobmV0c25tcF92YXJpYWJsZV9saXN0ICp2YXJsaXN0KTsgLyogZnJlZXMgYWxsIGluIGxpc3QgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKwogICAgIC8qCiAgICAgICogIEZvciB0aGUgaW5pdGlhbCByZWxlYXNlLCB0aGlzIHdpbGwganVzdCByZWZlciB0byB0aGUKICAgICAgKiAgcmVsZXZhbnQgVUNEIGhlYWRlciBmaWxlcy4KQEAgLTE2LDcgKzc1LDYgQEAKICAgICAgKiAgQnV0IGZvciB0aGUgdGltZSBiZWluZywgdGhpcyBoZWFkZXIgZmlsZSBpcyBhIHBsYWNlaG9sZGVyLAogICAgICAqICB0byBhbGxvdyBhcHBsaWNhdGlvbiB3cml0ZXJzIHRvIGFkb3B0IHRoZSBuZXcgaGVhZGVyIGZpbGUgbmFtZXMuCiAgICAgICovCi0KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbWliLmg+CmRpZmYgLS1naXQgYS9pbnN0YWxsLXNoIGIvaW5zdGFsbC1zaAppbmRleCAyYzIxMmNjLi5hNTg5N2RlIDEwMDc1NQotLS0gYS9pbnN0YWxsLXNoCisrKyBiL2luc3RhbGwtc2gKQEAgLTEsMTkgKzEsMzggQEAKLSMhIC9iaW4vc2gKLSMKKyMhL2Jpbi9zaAogIyBpbnN0YWxsIC0gaW5zdGFsbCBhIHByb2dyYW0sIHNjcmlwdCwgb3IgZGF0YWZpbGUKLSMgVGhpcyBjb21lcyBmcm9tIFgxMVI1IChtaXQvdXRpbC9zY3JpcHRzL2luc3RhbGwuc2gpLgorCitzY3JpcHR2ZXJzaW9uPTIwMDYtMTItMjUuMDAKKworIyBUaGlzIG9yaWdpbmF0ZXMgZnJvbSBYMTFSNSAobWl0L3V0aWwvc2NyaXB0cy9pbnN0YWxsLnNoKSwgd2hpY2ggd2FzCisjIGxhdGVyIHJlbGVhc2VkIGluIFgxMVI2ICh4Yy9jb25maWcvdXRpbC9pbnN0YWxsLnNoKSB3aXRoIHRoZQorIyBmb2xsb3dpbmcgY29weXJpZ2h0IGFuZCBsaWNlbnNlLgogIwotIyBDb3B5cmlnaHQgMTk5MSBieSB0aGUgTWFzc2FjaHVzZXR0cyBJbnN0aXR1dGUgb2YgVGVjaG5vbG9neQorIyBDb3B5cmlnaHQgKEMpIDE5OTQgWCBDb25zb3J0aXVtCiAjCi0jIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGRpc3RyaWJ1dGUsIGFuZCBzZWxsIHRoaXMgc29mdHdhcmUgYW5kIGl0cwotIyBkb2N1bWVudGF0aW9uIGZvciBhbnkgcHVycG9zZSBpcyBoZXJlYnkgZ3JhbnRlZCB3aXRob3V0IGZlZSwgcHJvdmlkZWQgdGhhdAotIyB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKLSMgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBhcHBlYXIgaW4gc3VwcG9ydGluZwotIyBkb2N1bWVudGF0aW9uLCBhbmQgdGhhdCB0aGUgbmFtZSBvZiBNLkkuVC4gbm90IGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3IKLSMgcHVibGljaXR5IHBlcnRhaW5pbmcgdG8gZGlzdHJpYnV0aW9uIG9mIHRoZSBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljLAotIyB3cml0dGVuIHByaW9yIHBlcm1pc3Npb24uICBNLkkuVC4gbWFrZXMgbm8gcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZQotIyBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIKLSMgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCisjIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyMgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvCisjIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlCisjIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorIyBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcworIyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorIworIyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbgorIyBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyMKKyMgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IKKyMgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisjIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyMgWCBDT05TT1JUSVVNIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTgorIyBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUMtCisjIFRJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisjCisjIEV4Y2VwdCBhcyBjb250YWluZWQgaW4gdGhpcyBub3RpY2UsIHRoZSBuYW1lIG9mIHRoZSBYIENvbnNvcnRpdW0gc2hhbGwgbm90CisjIGJlIHVzZWQgaW4gYWR2ZXJ0aXNpbmcgb3Igb3RoZXJ3aXNlIHRvIHByb21vdGUgdGhlIHNhbGUsIHVzZSBvciBvdGhlciBkZWFsLQorIyBpbmdzIGluIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIGF1dGhvcml6YXRpb24gZnJvbSB0aGUgWCBDb25zb3ItCisjIHRpdW0uCisjCisjCisjIEZTRiBjaGFuZ2VzIHRvIHRoaXMgZmlsZSBhcmUgaW4gdGhlIHB1YmxpYyBkb21haW4uCiAjCiAjIENhbGxpbmcgdGhpcyBzY3JpcHQgaW5zdGFsbC1zaCBpcyBwcmVmZXJyZWQgb3ZlciBpbnN0YWxsLnNoLCB0byBwcmV2ZW50CiAjIGBtYWtlJyBpbXBsaWNpdCBydWxlcyBmcm9tIGNyZWF0aW5nIGEgZmlsZSBjYWxsZWQgaW5zdGFsbCBmcm9tIGl0CkBAIC0yMSwyMzAgKzQwLDQ4MCBAQAogIwogIyBUaGlzIHNjcmlwdCBpcyBjb21wYXRpYmxlIHdpdGggdGhlIEJTRCBpbnN0YWxsIHNjcmlwdCwgYnV0IHdhcyB3cml0dGVuCiAjIGZyb20gc2NyYXRjaC4KLSMKIAorbmw9JworJworSUZTPSIgIiIJJG5sIgogCiAjIHNldCBET0lUUFJPRyB0byBlY2hvIHRvIHRlc3QgdGhpcyBzY3JpcHQKIAogIyBEb24ndCB1c2UgOi0gc2luY2UgNC4zQlNEIGFuZCBlYXJsaWVyIHNoZWxscyBkb24ndCBsaWtlIGl0LgotZG9pdD0iJHtET0lUUFJPRy19IgotCi0KLSMgcHV0IGluIGFic29sdXRlIHBhdGhzIGlmIHlvdSBkb24ndCBoYXZlIHRoZW0gaW4geW91ciBwYXRoOyBvciB1c2UgZW52LiB2YXJzLgotCi1tdnByb2c9IiR7TVZQUk9HLW12fSIKLWNwcHJvZz0iJHtDUFBST0ctY3B9IgotY2htb2Rwcm9nPSIke0NITU9EUFJPRy1jaG1vZH0iCi1jaG93bnByb2c9IiR7Q0hPV05QUk9HLWNob3dufSIKLWNoZ3JwcHJvZz0iJHtDSEdSUFBST0ctY2hncnB9Igotc3RyaXBwcm9nPSIke1NUUklQUFJPRy1zdHJpcH0iCi1ybXByb2c9IiR7Uk1QUk9HLXJtfSIKLW1rZGlycHJvZz0iJHtNS0RJUlBST0ctbWtkaXJ9IgotCi10cmFuc2Zvcm1iYXNlbmFtZT0iIgotdHJhbnNmb3JtX2FyZz0iIgotaW5zdGNtZD0iJG12cHJvZyIKLWNobW9kY21kPSIkY2htb2Rwcm9nIDA3NTUiCi1jaG93bmNtZD0iIgotY2hncnBjbWQ9IiIKLXN0cmlwY21kPSIiCi1ybWNtZD0iJHJtcHJvZyAtZiIKLW12Y21kPSIkbXZwcm9nIgotc3JjPSIiCi1kc3Q9IiIKLWRpcl9hcmc9IiIKLQotd2hpbGUgWyB4IiQxIiAhPSB4IF07IGRvCi0gICAgY2FzZSAkMSBpbgotCS1jKSBpbnN0Y21kPSIkY3Bwcm9nIgotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQktZCkgZGlyX2FyZz10cnVlCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLQotCS1tKSBjaG1vZGNtZD0iJGNobW9kcHJvZyAkMiIKLQkgICAgc2hpZnQKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLW8pIGNob3duY21kPSIkY2hvd25wcm9nICQyIgotCSAgICBzaGlmdAotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQktZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCi0JICAgIHNoaWZ0Ci0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLQotCS1zKSBzdHJpcGNtZD0iJHN0cmlwcHJvZyIKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLXQ9KikgdHJhbnNmb3JtYXJnPWBlY2hvICQxIHwgc2VkICdzLy10PS8vJ2AKLQkgICAgc2hpZnQKLQkgICAgY29udGludWU7OwotCi0JLWI9KikgdHJhbnNmb3JtYmFzZW5hbWU9YGVjaG8gJDEgfCBzZWQgJ3MvLWI9Ly8nYAotCSAgICBzaGlmdAotCSAgICBjb250aW51ZTs7Ci0KLQkqKSAgaWYgWyB4IiRzcmMiID0geCBdCi0JICAgIHRoZW4KLQkJc3JjPSQxCi0JICAgIGVsc2UKLQkJIyB0aGlzIGNvbG9uIGlzIHRvIHdvcmsgYXJvdW5kIGEgMzg2QlNEIC9iaW4vc2ggYnVnCi0JCToKLQkJZHN0PSQxCi0JICAgIGZpCi0JICAgIHNoaWZ0Ci0JICAgIGNvbnRpbnVlOzsKLSAgICBlc2FjCi1kb25lCi0KLWlmIFsgeCIkc3JjIiA9IHggXQotdGhlbgotCWVjaG8gImluc3RhbGw6CW5vIGlucHV0IGZpbGUgc3BlY2lmaWVkIgotCWV4aXQgMQorZG9pdD0ke0RPSVRQUk9HLX0KK2lmIHRlc3QgLXogIiRkb2l0IjsgdGhlbgorICBkb2l0X2V4ZWM9ZXhlYwogZWxzZQotCXRydWUKKyAgZG9pdF9leGVjPSRkb2l0CiBmaQogCi1pZiBbIHgiJGRpcl9hcmciICE9IHggXTsgdGhlbgotCWRzdD0kc3JjCi0Jc3JjPSIiCi0JCi0JaWYgWyAtZCAkZHN0IF07IHRoZW4KLQkJaW5zdGNtZD06Ci0JZWxzZQotCQlpbnN0Y21kPW1rZGlyCi0JZmkKLWVsc2UKKyMgUHV0IGluIGFic29sdXRlIGZpbGUgbmFtZXMgaWYgeW91IGRvbid0IGhhdmUgdGhlbSBpbiB5b3VyIHBhdGg7CisjIG9yIHVzZSBlbnZpcm9ubWVudCB2YXJzLgogCi0jIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkaW5zdGNtZCAkc3JjICRkc3R0bXAiIGNvbW1hbmQKLSMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQgCi0jIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KK2NoZ3JwcHJvZz0ke0NIR1JQUFJPRy1jaGdycH0KK2NobW9kcHJvZz0ke0NITU9EUFJPRy1jaG1vZH0KK2Nob3ducHJvZz0ke0NIT1dOUFJPRy1jaG93bn0KK2NtcHByb2c9JHtDTVBQUk9HLWNtcH0KK2NwcHJvZz0ke0NQUFJPRy1jcH0KK21rZGlycHJvZz0ke01LRElSUFJPRy1ta2Rpcn0KK212cHJvZz0ke01WUFJPRy1tdn0KK3JtcHJvZz0ke1JNUFJPRy1ybX0KK3N0cmlwcHJvZz0ke1NUUklQUFJPRy1zdHJpcH0KIAotCWlmIFsgLWYgJHNyYyAtbyAtZCAkc3JjIF0KLQl0aGVuCi0JCXRydWUKLQllbHNlCi0JCWVjaG8gImluc3RhbGw6ICAkc3JjIGRvZXMgbm90IGV4aXN0IgotCQlleGl0IDEKLQlmaQotCQotCWlmIFsgeCIkZHN0IiA9IHggXQotCXRoZW4KLQkJZWNobyAiaW5zdGFsbDoJbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkIgotCQlleGl0IDEKLQllbHNlCi0JCXRydWUKLQlmaQotCi0jIElmIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LCBhcHBlbmQgdGhlIGlucHV0IGZpbGVuYW1lOyBpZiB5b3VyIHN5c3RlbQotIyBkb2VzIG5vdCBsaWtlIGRvdWJsZSBzbGFzaGVzIGluIGZpbGVuYW1lcywgeW91IG1heSBuZWVkIHRvIGFkZCBzb21lIGxvZ2ljCi0KLQlpZiBbIC1kICRkc3QgXQotCXRoZW4KLQkJZHN0PSIkZHN0Ii9gYmFzZW5hbWUgJHNyY2AKLQllbHNlCi0JCXRydWUKLQlmaQotZmkKLQotIyMgdGhpcyBzZWQgY29tbWFuZCBlbXVsYXRlcyB0aGUgZGlybmFtZSBjb21tYW5kCi1kc3RkaXI9YGVjaG8gJGRzdCB8IHNlZCAtZSAncyxbXi9dKiQsLDtzLC8kLCw7cyxeJCwuLCdgCi0KLSMgTWFrZSBzdXJlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSBleGlzdHMuCi0jICB0aGlzIHBhcnQgaXMgdGFrZW4gZnJvbSBOb2FoIEZyaWVkbWFuJ3MgbWtpbnN0YWxsZGlycyBzY3JpcHQKLQotIyBTa2lwIGxvdHMgb2Ygc3RhdCBjYWxscyBpbiB0aGUgdXN1YWwgY2FzZS4KLWlmIFsgISAtZCAiJGRzdGRpciIgXTsgdGhlbgotZGVmYXVsdElGUz0nCQorcG9zaXhfZ2xvYj0nPycKK2luaXRpYWxpemVfcG9zaXhfZ2xvYj0nCisgIHRlc3QgIiRwb3NpeF9nbG9iIiAhPSAiPyIgfHwgeworICAgIGlmIChzZXQgLWYpIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICBwb3NpeF9nbG9iPQorICAgIGVsc2UKKyAgICAgIHBvc2l4X2dsb2I9OgorICAgIGZpCisgIH0KICcKLUlGUz0iJHtJRlMtJHtkZWZhdWx0SUZTfX0iCiAKLW9JRlM9IiR7SUZTfSIKLSMgU29tZSBzaCdzIGNhbid0IGhhbmRsZSBJRlM9LyBmb3Igc29tZSByZWFzb24uCi1JRlM9JyUnCi1zZXQgLSBgZWNobyAke2RzdGRpcn0gfCBzZWQgLWUgJ3NAL0AlQGcnIC1lICdzQF4lQC9AJ2AKLUlGUz0iJHtvSUZTfSIKK3Bvc2l4X21rZGlyPQogCi1wYXRoY29tcD0nJworIyBEZXNpcmVkIG1vZGUgb2YgaW5zdGFsbGVkIGZpbGUuCittb2RlPTA3NTUKIAotd2hpbGUgWyAkIyAtbmUgMCBdIDsgZG8KLQlwYXRoY29tcD0iJHtwYXRoY29tcH0kezF9IgotCXNoaWZ0CitjaGdycGNtZD0KK2NobW9kY21kPSRjaG1vZHByb2cKK2Nob3duY21kPQorbXZjbWQ9JG12cHJvZworcm1jbWQ9IiRybXByb2cgLWYiCitzdHJpcGNtZD0KIAotCWlmIFsgISAtZCAiJHtwYXRoY29tcH0iIF0gOwotICAgICAgICB0aGVuCi0JCSRta2RpcnByb2cgIiR7cGF0aGNvbXB9IgotCWVsc2UKLQkJdHJ1ZQotCWZpCitzcmM9Citkc3Q9CitkaXJfYXJnPQorZHN0X2FyZz0KIAotCXBhdGhjb21wPSIke3BhdGhjb21wfS8iCitjb3B5X29uX2NoYW5nZT1mYWxzZQorbm9fdGFyZ2V0X2RpcmVjdG9yeT0KKwordXNhZ2U9IlwKK1VzYWdlOiAkMCBbT1BUSU9OXS4uLiBbLVRdIFNSQ0ZJTEUgRFNURklMRQorICAgb3I6ICQwIFtPUFRJT05dLi4uIFNSQ0ZJTEVTLi4uIERJUkVDVE9SWQorICAgb3I6ICQwIFtPUFRJT05dLi4uIC10IERJUkVDVE9SWSBTUkNGSUxFUy4uLgorICAgb3I6ICQwIFtPUFRJT05dLi4uIC1kIERJUkVDVE9SSUVTLi4uCisKK0luIHRoZSAxc3QgZm9ybSwgY29weSBTUkNGSUxFIHRvIERTVEZJTEUuCitJbiB0aGUgMm5kIGFuZCAzcmQsIGNvcHkgYWxsIFNSQ0ZJTEVTIHRvIERJUkVDVE9SWS4KK0luIHRoZSA0dGgsIGNyZWF0ZSBESVJFQ1RPUklFUy4KKworT3B0aW9uczoKKyAgICAgLS1oZWxwICAgICBkaXNwbGF5IHRoaXMgaGVscCBhbmQgZXhpdC4KKyAgICAgLS12ZXJzaW9uICBkaXNwbGF5IHZlcnNpb24gaW5mbyBhbmQgZXhpdC4KKworICAtYyAgICAgICAgICAgIChpZ25vcmVkKQorICAtQyAgICAgICAgICAgIGluc3RhbGwgb25seSBpZiBkaWZmZXJlbnQgKHByZXNlcnZlIHRoZSBsYXN0IGRhdGEgbW9kaWZpY2F0aW9uIHRpbWUpCisgIC1kICAgICAgICAgICAgY3JlYXRlIGRpcmVjdG9yaWVzIGluc3RlYWQgb2YgaW5zdGFsbGluZyBmaWxlcy4KKyAgLWcgR1JPVVAgICAgICAkY2hncnBwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBHUk9VUC4KKyAgLW0gTU9ERSAgICAgICAkY2htb2Rwcm9nIGluc3RhbGxlZCBmaWxlcyB0byBNT0RFLgorICAtbyBVU0VSICAgICAgICRjaG93bnByb2cgaW5zdGFsbGVkIGZpbGVzIHRvIFVTRVIuCisgIC1zICAgICAgICAgICAgJHN0cmlwcHJvZyBpbnN0YWxsZWQgZmlsZXMuCisgIC10IERJUkVDVE9SWSAgaW5zdGFsbCBpbnRvIERJUkVDVE9SWS4KKyAgLVQgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IgaWYgRFNURklMRSBpcyBhIGRpcmVjdG9yeS4KKworRW52aXJvbm1lbnQgdmFyaWFibGVzIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGNvbW1hbmRzOgorICBDSEdSUFBST0cgQ0hNT0RQUk9HIENIT1dOUFJPRyBDTVBQUk9HIENQUFJPRyBNS0RJUlBST0cgTVZQUk9HCisgIFJNUFJPRyBTVFJJUFBST0cKKyIKKword2hpbGUgdGVzdCAkIyAtbmUgMDsgZG8KKyAgY2FzZSAkMSBpbgorICAgIC1jKSA7OworCisgICAgLUMpIGNvcHlfb25fY2hhbmdlPXRydWU7OworCisgICAgLWQpIGRpcl9hcmc9dHJ1ZTs7CisKKyAgICAtZykgY2hncnBjbWQ9IiRjaGdycHByb2cgJDIiCisJc2hpZnQ7OworCisgICAgLS1oZWxwKSBlY2hvICIkdXNhZ2UiOyBleGl0ICQ/OzsKKworICAgIC1tKSBtb2RlPSQyCisJY2FzZSAkbW9kZSBpbgorCSAgKicgJyogfCAqJwknKiB8IConCisnKgkgIHwgKicqJyogfCAqJz8nKiB8IConWycqKQorCSAgICBlY2hvICIkMDogaW52YWxpZCBtb2RlOiAkbW9kZSIgPiYyCisJICAgIGV4aXQgMTs7CisJZXNhYworCXNoaWZ0OzsKKworICAgIC1vKSBjaG93bmNtZD0iJGNob3ducHJvZyAkMiIKKwlzaGlmdDs7CisKKyAgICAtcykgc3RyaXBjbWQ9JHN0cmlwcHJvZzs7CisKKyAgICAtdCkgZHN0X2FyZz0kMgorCXNoaWZ0OzsKKworICAgIC1UKSBub190YXJnZXRfZGlyZWN0b3J5PXRydWU7OworCisgICAgLS12ZXJzaW9uKSBlY2hvICIkMCAkc2NyaXB0dmVyc2lvbiI7IGV4aXQgJD87OworCisgICAgLS0pCXNoaWZ0CisJYnJlYWs7OworCisgICAgLSopCWVjaG8gIiQwOiBpbnZhbGlkIG9wdGlvbjogJDEiID4mMgorCWV4aXQgMTs7CisKKyAgICAqKSAgYnJlYWs7OworICBlc2FjCisgIHNoaWZ0CiBkb25lCisKK2lmIHRlc3QgJCMgLW5lIDAgJiYgdGVzdCAteiAiJGRpcl9hcmckZHN0X2FyZyI7IHRoZW4KKyAgIyBXaGVuIC1kIGlzIHVzZWQsIGFsbCByZW1haW5pbmcgYXJndW1lbnRzIGFyZSBkaXJlY3RvcmllcyB0byBjcmVhdGUuCisgICMgV2hlbiAtdCBpcyB1c2VkLCB0aGUgZGVzdGluYXRpb24gaXMgYWxyZWFkeSBzcGVjaWZpZWQuCisgICMgT3RoZXJ3aXNlLCB0aGUgbGFzdCBhcmd1bWVudCBpcyB0aGUgZGVzdGluYXRpb24uICBSZW1vdmUgaXQgZnJvbSAkQC4KKyAgZm9yIGFyZworICBkbworICAgIGlmIHRlc3QgLW4gIiRkc3RfYXJnIjsgdGhlbgorICAgICAgIyAkQCBpcyBub3QgZW1wdHk6IGl0IGNvbnRhaW5zIGF0IGxlYXN0ICRhcmcuCisgICAgICBzZXQgZm5vcmQgIiRAIiAiJGRzdF9hcmciCisgICAgICBzaGlmdCAjIGZub3JkCisgICAgZmkKKyAgICBzaGlmdCAjIGFyZworICAgIGRzdF9hcmc9JGFyZworICBkb25lCiBmaQogCi1pZiBbIHgiJGRpcl9hcmciICE9IHggXQotdGhlbgotCSRkb2l0ICRpbnN0Y21kICRkc3QgJiYKK2lmIHRlc3QgJCMgLWVxIDA7IHRoZW4KKyAgaWYgdGVzdCAteiAiJGRpcl9hcmciOyB0aGVuCisgICAgZWNobyAiJDA6IG5vIGlucHV0IGZpbGUgc3BlY2lmaWVkLiIgPiYyCisgICAgZXhpdCAxCisgIGZpCisgICMgSXQncyBPSyB0byBjYWxsIGBpbnN0YWxsLXNoIC1kJyB3aXRob3V0IGFyZ3VtZW50LgorICAjIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGNyZWF0aW5nIGNvbmRpdGlvbmFsIGRpcmVjdG9yaWVzLgorICBleGl0IDAKK2ZpCiAKLQlpZiBbIHgiJGNob3duY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNob3duY21kICRkc3Q7IGVsc2UgdHJ1ZSA7IGZpICYmCi0JaWYgWyB4IiRjaGdycGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaGdycGNtZCAkZHN0OyBlbHNlIHRydWUgOyBmaSAmJgotCWlmIFsgeCIkc3RyaXBjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkc3RyaXBjbWQgJGRzdDsgZWxzZSB0cnVlIDsgZmkgJiYKLQlpZiBbIHgiJGNobW9kY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNobW9kY21kICRkc3Q7IGVsc2UgdHJ1ZSA7IGZpCi1lbHNlCitpZiB0ZXN0IC16ICIkZGlyX2FyZyI7IHRoZW4KKyAgdHJhcCAnKGV4aXQgJD8pOyBleGl0JyAxIDIgMTMgMTUKIAotIyBJZiB3ZSdyZSBnb2luZyB0byByZW5hbWUgdGhlIGZpbmFsIGV4ZWN1dGFibGUsIGRldGVybWluZSB0aGUgbmFtZSBub3cuCisgICMgU2V0IHVtYXNrIHNvIGFzIG5vdCB0byBjcmVhdGUgdGVtcHMgd2l0aCB0b28tZ2VuZXJvdXMgbW9kZXMuCisgICMgSG93ZXZlciwgJ3N0cmlwJyByZXF1aXJlcyBib3RoIHJlYWQgYW5kIHdyaXRlIGFjY2VzcyB0byB0ZW1wcy4KKyAgY2FzZSAkbW9kZSBpbgorICAgICMgT3B0aW1pemUgY29tbW9uIGNhc2VzLgorICAgICo2NDQpIGNwX3VtYXNrPTEzMzs7CisgICAgKjc1NSkgY3BfdW1hc2s9MjI7OwogCi0JaWYgWyB4IiR0cmFuc2Zvcm1hcmciID0geCBdIAotCXRoZW4KLQkJZHN0ZmlsZT1gYmFzZW5hbWUgJGRzdGAKKyAgICAqWzAtN10pCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0nJSAyMDAnCisgICAgICBmaQorICAgICAgY3BfdW1hc2s9YGV4cHIgJygnIDc3NyAtICRtb2RlICUgMTAwMCAnKScgJHVfcGx1c19yd2A7OworICAgICopCisgICAgICBpZiB0ZXN0IC16ICIkc3RyaXBjbWQiOyB0aGVuCisJdV9wbHVzX3J3PQorICAgICAgZWxzZQorCXVfcGx1c19ydz0sdStydworICAgICAgZmkKKyAgICAgIGNwX3VtYXNrPSRtb2RlJHVfcGx1c19ydzs7CisgIGVzYWMKK2ZpCisKK2ZvciBzcmMKK2RvCisgICMgUHJvdGVjdCBuYW1lcyBzdGFydGluZyB3aXRoIGAtJy4KKyAgY2FzZSAkc3JjIGluCisgICAgLSopIHNyYz0uLyRzcmM7OworICBlc2FjCisKKyAgaWYgdGVzdCAtbiAiJGRpcl9hcmciOyB0aGVuCisgICAgZHN0PSRzcmMKKyAgICBkc3RkaXI9JGRzdAorICAgIHRlc3QgLWQgIiRkc3RkaXIiCisgICAgZHN0ZGlyX3N0YXR1cz0kPworICBlbHNlCisKKyAgICAjIFdhaXRpbmcgZm9yIHRoaXMgdG8gYmUgZGV0ZWN0ZWQgYnkgdGhlICIkY3Bwcm9nICRzcmMgJGRzdHRtcCIgY29tbWFuZAorICAgICMgbWlnaHQgY2F1c2UgZGlyZWN0b3JpZXMgdG8gYmUgY3JlYXRlZCwgd2hpY2ggd291bGQgYmUgZXNwZWNpYWxseSBiYWQKKyAgICAjIGlmICRzcmMgKGFuZCB0aHVzICRkc3R0bXApIGNvbnRhaW5zICcqJy4KKyAgICBpZiB0ZXN0ICEgLWYgIiRzcmMiICYmIHRlc3QgISAtZCAiJHNyYyI7IHRoZW4KKyAgICAgIGVjaG8gIiQwOiAkc3JjIGRvZXMgbm90IGV4aXN0LiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgaWYgdGVzdCAteiAiJGRzdF9hcmciOyB0aGVuCisgICAgICBlY2hvICIkMDogbm8gZGVzdGluYXRpb24gc3BlY2lmaWVkLiIgPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorCisgICAgZHN0PSRkc3RfYXJnCisgICAgIyBQcm90ZWN0IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nLgorICAgIGNhc2UgJGRzdCBpbgorICAgICAgLSopIGRzdD0uLyRkc3Q7OworICAgIGVzYWMKKworICAgICMgSWYgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnksIGFwcGVuZCB0aGUgaW5wdXQgZmlsZW5hbWU7IHdvbid0IHdvcmsKKyAgICAjIGlmIGRvdWJsZSBzbGFzaGVzIGFyZW4ndCBpZ25vcmVkLgorICAgIGlmIHRlc3QgLWQgIiRkc3QiOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkbm9fdGFyZ2V0X2RpcmVjdG9yeSI7IHRoZW4KKwllY2hvICIkMDogJGRzdF9hcmc6IElzIGEgZGlyZWN0b3J5IiA+JjIKKwlleGl0IDEKKyAgICAgIGZpCisgICAgICBkc3RkaXI9JGRzdAorICAgICAgZHN0PSRkc3RkaXIvYGJhc2VuYW1lICIkc3JjImAKKyAgICAgIGRzdGRpcl9zdGF0dXM9MAorICAgIGVsc2UKKyAgICAgICMgUHJlZmVyIGRpcm5hbWUsIGJ1dCBmYWxsIGJhY2sgb24gYSBzdWJzdGl0dXRlIGlmIGRpcm5hbWUgZmFpbHMuCisgICAgICBkc3RkaXI9YAorCShkaXJuYW1lICIkZHN0IikgMj4vZGV2L251bGwgfHwKKwlleHByIFgiJGRzdCIgOiAnWFwoLipbXi9dXCkvLypbXi9dW14vXSovKiQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKVteL10nIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoLy9cKSQnIFx8IFwKKwkgICAgIFgiJGRzdCIgOiAnWFwoL1wpJyBcfCAuIDI+L2Rldi9udWxsIHx8CisJZWNobyBYIiRkc3QiIHwKKwkgICAgc2VkICcvXlhcKC4qW14vXVwpXC9cLypbXi9dW14vXSpcLyokL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpW14vXS4qL3sKKwkJICAgcy8vXDEvCisJCSAgIHEKKwkJIH0KKwkJIC9eWFwoXC9cL1wpJC97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSAvXlhcKFwvXCkuKi97CisJCSAgIHMvL1wxLworCQkgICBxCisJCSB9CisJCSBzLy4qLy4vOyBxJworICAgICAgYAorCisgICAgICB0ZXN0IC1kICIkZHN0ZGlyIgorICAgICAgZHN0ZGlyX3N0YXR1cz0kPworICAgIGZpCisgIGZpCisKKyAgb2Jzb2xldGVfbWtkaXJfdXNlZD1mYWxzZQorCisgIGlmIHRlc3QgJGRzdGRpcl9zdGF0dXMgIT0gMDsgdGhlbgorICAgIGNhc2UgJHBvc2l4X21rZGlyIGluCisgICAgICAnJykKKwkjIENyZWF0ZSBpbnRlcm1lZGlhdGUgZGlycyB1c2luZyBtb2RlIDc1NSBhcyBtb2RpZmllZCBieSB0aGUgdW1hc2suCisJIyBUaGlzIGlzIGxpa2UgRnJlZUJTRCAnaW5zdGFsbCcgYXMgb2YgMTk5Ny0xMC0yOC4KKwl1bWFzaz1gdW1hc2tgCisJY2FzZSAkc3RyaXBjbWQuJHVtYXNrIGluCisJICAjIE9wdGltaXplIGNvbW1vbiBjYXNlcy4KKwkgICpbMjM2N11bMjM2N10pIG1rZGlyX3VtYXNrPSR1bWFzazs7CisJICAuKjBbMDJdWzAyXSB8IC5bMDJdWzAyXSB8IC5bMDJdKSBta2Rpcl91bWFzaz0yMjs7CisKKwkgICpbMC03XSkKKwkgICAgbWtkaXJfdW1hc2s9YGV4cHIgJHVtYXNrICsgMjIgXAorCSAgICAgIC0gJHVtYXNrICUgMTAwICUgNDAgKyAkdW1hc2sgJSAyMCBcCisJICAgICAgLSAkdW1hc2sgJSAxMCAlIDQgKyAkdW1hc2sgJSAyCisJICAgIGA7OworCSAgKikgbWtkaXJfdW1hc2s9JHVtYXNrLGdvLXc7OworCWVzYWMKKworCSMgV2l0aCAtZCwgY3JlYXRlIHRoZSBuZXcgZGlyZWN0b3J5IHdpdGggdGhlIHVzZXItc3BlY2lmaWVkIG1vZGUuCisJIyBPdGhlcndpc2UsIHJlbHkgb24gJG1rZGlyX3VtYXNrLgorCWlmIHRlc3QgLW4gIiRkaXJfYXJnIjsgdGhlbgorCSAgbWtkaXJfbW9kZT0tbSRtb2RlCiAJZWxzZQotCQlkc3RmaWxlPWBiYXNlbmFtZSAkZHN0ICR0cmFuc2Zvcm1iYXNlbmFtZSB8IAotCQkJc2VkICR0cmFuc2Zvcm1hcmdgJHRyYW5zZm9ybWJhc2VuYW1lCisJICBta2Rpcl9tb2RlPQogCWZpCiAKLSMgZG9uJ3QgYWxsb3cgdGhlIHNlZCBjb21tYW5kIHRvIGNvbXBsZXRlbHkgZWxpbWluYXRlIHRoZSBmaWxlbmFtZQorCXBvc2l4X21rZGlyPWZhbHNlCisJY2FzZSAkdW1hc2sgaW4KKwkgICpbMTIzNTY3XVswLTddWzAtN10pCisJICAgICMgUE9TSVggbWtkaXIgLXAgc2V0cyB1K3d4IGJpdHMgcmVnYXJkbGVzcyBvZiB1bWFzaywgd2hpY2gKKwkgICAgIyBpcyBpbmNvbXBhdGlibGUgd2l0aCBGcmVlQlNEICdpbnN0YWxsJyB3aGVuICh1bWFzayAmIDMwMCkgIT0gMC4KKwkgICAgOzsKKwkgICopCisJICAgIHRtcGRpcj0ke1RNUERJUi0vdG1wfS9pbnMkUkFORE9NLSQkCisJICAgIHRyYXAgJ3JldD0kPzsgcm1kaXIgIiR0bXBkaXIvZCIgIiR0bXBkaXIiIDI+L2Rldi9udWxsOyBleGl0ICRyZXQnIDAKIAotCWlmIFsgeCIkZHN0ZmlsZSIgPSB4IF0gCi0JdGhlbgotCQlkc3RmaWxlPWBiYXNlbmFtZSAkZHN0YAorCSAgICBpZiAodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJCWV4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJHRtcGRpci9kIikgPi9kZXYvbnVsbCAyPiYxCisJICAgIHRoZW4KKwkgICAgICBpZiB0ZXN0IC16ICIkZGlyX2FyZyIgfHwgeworCQkgICAjIENoZWNrIGZvciBQT1NJWCBpbmNvbXBhdGliaWxpdGllcyB3aXRoIC1tLgorCQkgICAjIEhQLVVYIDExLjIzIGFuZCBJUklYIDYuNSBta2RpciAtbSAtcCBzZXRzIGdyb3VwLSBvcgorCQkgICAjIG90aGVyLXdyaXRlYWJsZSBiaXQgb2YgcGFyZW50IGRpcmVjdG9yeSB3aGVuIGl0IHNob3VsZG4ndC4KKwkJICAgIyBGcmVlQlNEIDYuMSBta2RpciAtbSAtcCBzZXRzIG1vZGUgb2YgZXhpc3RpbmcgZGlyZWN0b3J5LgorCQkgICBsc19sZF90bXBkaXI9YGxzIC1sZCAiJHRtcGRpciJgCisJCSAgIGNhc2UgJGxzX2xkX3RtcGRpciBpbgorCQkgICAgIGQ/Pz8/LT9yLSopIGRpZmZlcmVudF9tb2RlPTcwMDs7CisJCSAgICAgZD8/Pz8tPy0tKikgZGlmZmVyZW50X21vZGU9NzU1OzsKKwkJICAgICAqKSBmYWxzZTs7CisJCSAgIGVzYWMgJiYKKwkJICAgJG1rZGlycHJvZyAtbSRkaWZmZXJlbnRfbW9kZSAtcCAtLSAiJHRtcGRpciIgJiYgeworCQkgICAgIGxzX2xkX3RtcGRpcl8xPWBscyAtbGQgIiR0bXBkaXIiYAorCQkgICAgIHRlc3QgIiRsc19sZF90bXBkaXIiID0gIiRsc19sZF90bXBkaXJfMSIKKwkJICAgfQorCQkgfQorCSAgICAgIHRoZW4gcG9zaXhfbWtkaXI9OgorCSAgICAgIGZpCisJICAgICAgcm1kaXIgIiR0bXBkaXIvZCIgIiR0bXBkaXIiCisJICAgIGVsc2UKKwkgICAgICAjIFJlbW92ZSBhbnkgZGlycyBsZWZ0IGJlaGluZCBieSBhbmNpZW50IG1rZGlyIGltcGxlbWVudGF0aW9ucy4KKwkgICAgICBybWRpciAuLyRta2Rpcl9tb2RlIC4vLXAgLi8tLSAyPi9kZXYvbnVsbAorCSAgICBmaQorCSAgICB0cmFwICcnIDA7OworCWVzYWM7OworICAgIGVzYWMKKworICAgIGlmCisgICAgICAkcG9zaXhfbWtkaXIgJiYgKAorCXVtYXNrICRta2Rpcl91bWFzayAmJgorCSRkb2l0X2V4ZWMgJG1rZGlycHJvZyAkbWtkaXJfbW9kZSAtcCAtLSAiJGRzdGRpciIKKyAgICAgICkKKyAgICB0aGVuIDoKKyAgICBlbHNlCisKKyAgICAgICMgVGhlIHVtYXNrIGlzIHJpZGljdWxvdXMsIG9yIG1rZGlyIGRvZXMgbm90IGNvbmZvcm0gdG8gUE9TSVgsCisgICAgICAjIG9yIGl0IGZhaWxlZCBwb3NzaWJseSBkdWUgdG8gYSByYWNlIGNvbmRpdGlvbi4gIENyZWF0ZSB0aGUKKyAgICAgICMgZGlyZWN0b3J5IHRoZSBzbG93IHdheSwgc3RlcCBieSBzdGVwLCBjaGVja2luZyBmb3IgcmFjZXMgYXMgd2UgZ28uCisKKyAgICAgIGNhc2UgJGRzdGRpciBpbgorCS8qKSBwcmVmaXg9Jy8nOzsKKwktKikgcHJlZml4PScuLyc7OworCSopICBwcmVmaXg9Jyc7OworICAgICAgZXNhYworCisgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIgorCisgICAgICBvSUZTPSRJRlMKKyAgICAgIElGUz0vCisgICAgICAkcG9zaXhfZ2xvYiBzZXQgLWYKKyAgICAgIHNldCBmbm9yZCAkZHN0ZGlyCisgICAgICBzaGlmdAorICAgICAgJHBvc2l4X2dsb2Igc2V0ICtmCisgICAgICBJRlM9JG9JRlMKKworICAgICAgcHJlZml4ZXM9CisKKyAgICAgIGZvciBkCisgICAgICBkbworCXRlc3QgLXogIiRkIiAmJiBjb250aW51ZQorCisJcHJlZml4PSRwcmVmaXgkZAorCWlmIHRlc3QgLWQgIiRwcmVmaXgiOyB0aGVuCisJICBwcmVmaXhlcz0KIAllbHNlCi0JCXRydWUKKwkgIGlmICRwb3NpeF9ta2RpcjsgdGhlbgorCSAgICAodW1hc2s9JG1rZGlyX3VtYXNrICYmCisJICAgICAkZG9pdF9leGVjICRta2RpcnByb2cgJG1rZGlyX21vZGUgLXAgLS0gIiRkc3RkaXIiKSAmJiBicmVhaworCSAgICAjIERvbid0IGZhaWwgaWYgdHdvIGluc3RhbmNlcyBhcmUgcnVubmluZyBjb25jdXJyZW50bHkuCisJICAgIHRlc3QgLWQgIiRwcmVmaXgiIHx8IGV4aXQgMQorCSAgZWxzZQorCSAgICBjYXNlICRwcmVmaXggaW4KKwkgICAgICAqXCcqKSBxcHJlZml4PWBlY2hvICIkcHJlZml4IiB8IHNlZCAicy8nLydcXFxcXFxcXCcnL2ciYDs7CisJICAgICAgKikgcXByZWZpeD0kcHJlZml4OzsKKwkgICAgZXNhYworCSAgICBwcmVmaXhlcz0iJHByZWZpeGVzICckcXByZWZpeCciCisJICBmaQogCWZpCisJcHJlZml4PSRwcmVmaXgvCisgICAgICBkb25lCiAKLSMgTWFrZSBhIHRlbXAgZmlsZSBuYW1lIGluIHRoZSBwcm9wZXIgZGlyZWN0b3J5LgorICAgICAgaWYgdGVzdCAtbiAiJHByZWZpeGVzIjsgdGhlbgorCSMgRG9uJ3QgZmFpbCBpZiB0d28gaW5zdGFuY2VzIGFyZSBydW5uaW5nIGNvbmN1cnJlbnRseS4KKwkodW1hc2sgJG1rZGlyX3VtYXNrICYmCisJIGV2YWwgIlwkZG9pdF9leGVjIFwkbWtkaXJwcm9nICRwcmVmaXhlcyIpIHx8CisJICB0ZXN0IC1kICIkZHN0ZGlyIiB8fCBleGl0IDEKKwlvYnNvbGV0ZV9ta2Rpcl91c2VkPXRydWUKKyAgICAgIGZpCisgICAgZmkKKyAgZmkKIAotCWRzdHRtcD0kZHN0ZGlyLyNpbnN0LiQkIworICBpZiB0ZXN0IC1uICIkZGlyX2FyZyI7IHRoZW4KKyAgICB7IHRlc3QgLXogIiRjaG93bmNtZCIgfHwgJGRvaXQgJGNob3duY21kICIkZHN0IjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNoZ3JwY21kIiB8fCAkZG9pdCAkY2hncnBjbWQgIiRkc3QiOyB9ICYmCisgICAgeyB0ZXN0ICIkb2Jzb2xldGVfbWtkaXJfdXNlZCRjaG93bmNtZCRjaGdycGNtZCIgPSBmYWxzZSB8fAorICAgICAgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3QiOyB9IHx8IGV4aXQgMQorICBlbHNlCiAKLSMgTW92ZSBvciBjb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZQorICAgICMgTWFrZSBhIGNvdXBsZSBvZiB0ZW1wIGZpbGUgbmFtZXMgaW4gdGhlIHByb3BlciBkaXJlY3RvcnkuCisgICAgZHN0dG1wPSRkc3RkaXIvX2luc3QuJCRfCisgICAgcm10bXA9JGRzdGRpci9fcm0uJCRfCiAKLQkkZG9pdCAkaW5zdGNtZCAkc3JjICRkc3R0bXAgJiYKKyAgICAjIFRyYXAgdG8gY2xlYW4gdXAgdGhvc2UgdGVtcCBmaWxlcyBhdCBleGl0LgorICAgIHRyYXAgJ3JldD0kPzsgcm0gLWYgIiRkc3R0bXAiICIkcm10bXAiICYmIGV4aXQgJHJldCcgMAogCi0JdHJhcCAicm0gLWYgJHtkc3R0bXB9IiAwICYmCisgICAgIyBDb3B5IHRoZSBmaWxlIG5hbWUgdG8gdGhlIHRlbXAgbmFtZS4KKyAgICAodW1hc2sgJGNwX3VtYXNrICYmICRkb2l0X2V4ZWMgJGNwcHJvZyAiJHNyYyIgIiRkc3R0bXAiKSAmJgogCi0jIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMKKyAgICAjIGFuZCBzZXQgYW55IG9wdGlvbnM7IGRvIGNobW9kIGxhc3QgdG8gcHJlc2VydmUgc2V0dWlkIGJpdHMuCisgICAgIworICAgICMgSWYgYW55IG9mIHRoZXNlIGZhaWwsIHdlIGFib3J0IHRoZSB3aG9sZSB0aGluZy4gIElmIHdlIHdhbnQgdG8KKyAgICAjIGlnbm9yZSBlcnJvcnMgZnJvbSBhbnkgb2YgdGhlc2UsIGp1c3QgbWFrZSBzdXJlIG5vdCB0byBpZ25vcmUKKyAgICAjIGVycm9ycyBmcm9tIHRoZSBhYm92ZSAiJGRvaXQgJGNwcHJvZyAkc3JjICRkc3R0bXAiIGNvbW1hbmQuCisgICAgIworICAgIHsgdGVzdCAteiAiJGNob3duY21kIiB8fCAkZG9pdCAkY2hvd25jbWQgIiRkc3R0bXAiOyB9ICYmCisgICAgeyB0ZXN0IC16ICIkY2hncnBjbWQiIHx8ICRkb2l0ICRjaGdycGNtZCAiJGRzdHRtcCI7IH0gJiYKKyAgICB7IHRlc3QgLXogIiRzdHJpcGNtZCIgfHwgJGRvaXQgJHN0cmlwY21kICIkZHN0dG1wIjsgfSAmJgorICAgIHsgdGVzdCAteiAiJGNobW9kY21kIiB8fCAkZG9pdCAkY2htb2RjbWQgJG1vZGUgIiRkc3R0bXAiOyB9ICYmCiAKLSMgSWYgYW55IG9mIHRoZXNlIGZhaWwsIHdlIGFib3J0IHRoZSB3aG9sZSB0aGluZy4gIElmIHdlIHdhbnQgdG8KLSMgaWdub3JlIGVycm9ycyBmcm9tIGFueSBvZiB0aGVzZSwganVzdCBtYWtlIHN1cmUgbm90IHRvIGlnbm9yZQotIyBlcnJvcnMgZnJvbSB0aGUgYWJvdmUgIiRkb2l0ICRpbnN0Y21kICRzcmMgJGRzdHRtcCIgY29tbWFuZC4KKyAgICAjIElmIC1DLCBkb24ndCBib3RoZXIgdG8gY29weSBpZiBpdCB3b3VsZG4ndCBjaGFuZ2UgdGhlIGZpbGUuCisgICAgaWYgJGNvcHlfb25fY2hhbmdlICYmCisgICAgICAgb2xkPWBMQ19BTEw9QyBscyAtZGxMICIkZHN0IgkyPi9kZXYvbnVsbGAgJiYKKyAgICAgICBuZXc9YExDX0FMTD1DIGxzIC1kbEwgIiRkc3R0bXAiCTI+L2Rldi9udWxsYCAmJgogCi0JaWYgWyB4IiRjaG93bmNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG93bmNtZCAkZHN0dG1wOyBlbHNlIHRydWU7ZmkgJiYKLQlpZiBbIHgiJGNoZ3JwY21kIiAhPSB4IF07IHRoZW4gJGRvaXQgJGNoZ3JwY21kICRkc3R0bXA7IGVsc2UgdHJ1ZTtmaSAmJgotCWlmIFsgeCIkc3RyaXBjbWQiICE9IHggXTsgdGhlbiAkZG9pdCAkc3RyaXBjbWQgJGRzdHRtcDsgZWxzZSB0cnVlO2ZpICYmCi0JaWYgWyB4IiRjaG1vZGNtZCIgIT0geCBdOyB0aGVuICRkb2l0ICRjaG1vZGNtZCAkZHN0dG1wOyBlbHNlIHRydWU7ZmkgJiYKKyAgICAgICBldmFsICIkaW5pdGlhbGl6ZV9wb3NpeF9nbG9iIiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCAtZiAmJgorICAgICAgIHNldCBYICRvbGQgJiYgb2xkPTokMjokNDokNTokNiAmJgorICAgICAgIHNldCBYICRuZXcgJiYgbmV3PTokMjokNDokNTokNiAmJgorICAgICAgICRwb3NpeF9nbG9iIHNldCArZiAmJgogCi0jIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisgICAgICAgdGVzdCAiJG9sZCIgPSAiJG5ldyIgJiYKKyAgICAgICAkY21wcHJvZyAiJGRzdCIgIiRkc3R0bXAiID4vZGV2L251bGwgMj4mMQorICAgIHRoZW4KKyAgICAgIHJtIC1mICIkZHN0dG1wIgorICAgIGVsc2UKKyAgICAgICMgUmVuYW1lIHRoZSBmaWxlIHRvIHRoZSByZWFsIGRlc3RpbmF0aW9uLgorICAgICAgJGRvaXQgJG12Y21kIC1mICIkZHN0dG1wIiAiJGRzdCIgMj4vZGV2L251bGwgfHwKIAotCSRkb2l0ICRybWNtZCAtZiAkZHN0ZGlyLyRkc3RmaWxlICYmCi0JJGRvaXQgJG12Y21kICRkc3R0bXAgJGRzdGRpci8kZHN0ZmlsZSAKKyAgICAgICMgVGhlIHJlbmFtZSBmYWlsZWQsIHBlcmhhcHMgYmVjYXVzZSBtdiBjYW4ndCByZW5hbWUgc29tZXRoaW5nIGVsc2UKKyAgICAgICMgdG8gaXRzZWxmLCBvciBwZXJoYXBzIGJlY2F1c2UgbXYgaXMgc28gYW5jaWVudCB0aGF0IGl0IGRvZXMgbm90CisgICAgICAjIHN1cHBvcnQgLWYuCisgICAgICB7CisJIyBOb3cgcmVtb3ZlIG9yIG1vdmUgYXNpZGUgYW55IG9sZCBmaWxlIGF0IGRlc3RpbmF0aW9uIGxvY2F0aW9uLgorCSMgV2UgdHJ5IHRoaXMgdHdvIHdheXMgc2luY2Ugcm0gY2FuJ3QgdW5saW5rIGl0c2VsZiBvbiBzb21lCisJIyBzeXN0ZW1zIGFuZCB0aGUgZGVzdGluYXRpb24gZmlsZSBtaWdodCBiZSBidXN5IGZvciBvdGhlcgorCSMgcmVhc29ucy4gIEluIHRoaXMgY2FzZSwgdGhlIGZpbmFsIGNsZWFudXAgbWlnaHQgZmFpbCBidXQgdGhlIG5ldworCSMgZmlsZSBzaG91bGQgc3RpbGwgaW5zdGFsbCBzdWNjZXNzZnVsbHkuCisJeworCSAgdGVzdCAhIC1mICIkZHN0IiB8fAorCSAgJGRvaXQgJHJtY21kIC1mICIkZHN0IiAyPi9kZXYvbnVsbCB8fAorCSAgeyAkZG9pdCAkbXZjbWQgLWYgIiRkc3QiICIkcm10bXAiIDI+L2Rldi9udWxsICYmCisJICAgIHsgJGRvaXQgJHJtY21kIC1mICIkcm10bXAiIDI+L2Rldi9udWxsOyA6OyB9CisJICB9IHx8CisJICB7IGVjaG8gIiQwOiBjYW5ub3QgdW5saW5rIG9yIHJlbmFtZSAkZHN0IiA+JjIKKwkgICAgKGV4aXQgMSk7IGV4aXQgMQorCSAgfQorCX0gJiYKIAotZmkgJiYKKwkjIE5vdyByZW5hbWUgdGhlIGZpbGUgdG8gdGhlIHJlYWwgZGVzdGluYXRpb24uCisJJGRvaXQgJG12Y21kICIkZHN0dG1wIiAiJGRzdCIKKyAgICAgIH0KKyAgICBmaSB8fCBleGl0IDEKIAorICAgIHRyYXAgJycgMAorICBmaQorZG9uZQogCi1leGl0IDAKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBldmFsOiAoYWRkLWhvb2sgJ3dyaXRlLWZpbGUtaG9va3MgJ3RpbWUtc3RhbXApCisjIHRpbWUtc3RhbXAtc3RhcnQ6ICJzY3JpcHR2ZXJzaW9uPSIKKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCisjIHRpbWUtc3RhbXAtZW5kOiAiJCIKKyMgRW5kOgpkaWZmIC0tZ2l0IGEvbG9jYWwvTWFrZWZpbGUuaW4gYi9sb2NhbC9NYWtlZmlsZS5pbgppbmRleCA4MjNiNjZjLi42ZDVjYmUwIDEwMDY0NAotLS0gYS9sb2NhbC9NYWtlZmlsZS5pbgorKysgYi9sb2NhbC9NYWtlZmlsZS5pbgpAQCAtMjgsNyArMjgsOCBAQAogCW1pYjJjLmNoZWNrX3ZhbHVlcy5jb25mIG1pYjJjLmNoZWNrX3ZhbHVlc19sb2NhbC5jb25mIFwKIAltaWIyYy5hY2Nlc3NfZnVuY3Rpb25zLmNvbmYgbWliMmMubm90aWZ5LmNvbmYgXAogCW1pYjJjLmludF93YXRjaC5jb25mIG1pYjJjLmdlbmh0bWwuY29uZiBcCi0JbWliMmMudGFibGVfZGF0YS5jb25mIG1pYjJjLmNvbnRhaW5lci5jb25mIG1pYjJjLnBlcmwuY29uZgorCW1pYjJjLnJhdy10YWJsZS5jb25mIG1pYjJjLnRhYmxlX2RhdGEuY29uZiBcCisJbWliMmMuY29udGFpbmVyLmNvbmYgbWliMmMucGVybC5jb25mCiBNSUIyQ0lOU1RBTExESVI9JChzbm1wbGliZGlyKS9taWIyYy1kYXRhCiBNSUIyQ0RBVEFTUkM9bWliMmMtY29uZi5kCiBNSUIyQ0ZJTEVTPWRlZmF1bHQtbWZkLXRvcC5tMmMgZGV0YWlscy1lbnVtcy5tMmkgZGV0YWlscy1ub2RlLm0yaSBcCmRpZmYgLS1naXQgYS9sb2NhbC9WZXJzaW9uLU11bmdlLnBsIGIvbG9jYWwvVmVyc2lvbi1NdW5nZS5wbAppbmRleCBmZGU1OTM5Li4yNDljZmVjIDEwMDc1NQotLS0gYS9sb2NhbC9WZXJzaW9uLU11bmdlLnBsCisrKyBiL2xvY2FsL1ZlcnNpb24tTXVuZ2UucGwKQEAgLTMzLDEyICszMyw2IEBACiB9CiAKIG15IEBleHBycyA9ICgKLQkgICAgICMgYyBmaWxlcyB3aXRoIGEgZXF1YWwgc2lnbiBhbmQgYSBzcGVjaWZpYyB2YXJpYWJsZQotCSAgICAgeyB0eXBlID0+ICdjJywKLQkgICAgICAgZXhwciA9PiAnVmVyc2lvbkluZm8oXHMqPVxzKlteIl0qKSIoLiopIicsCi0JICAgICAgIHJlcGwgPT4gJ1ZlcnNpb25JbmZvJDEiJFZFUlNJT04iJywgCi0JICAgICAgIGZpbGVzID0+IFtxdyhzbm1wbGliL3NubXBfdmVyc2lvbi5jKV19LAotCiAJICAgICAjIGRvY3VtZW50YXRpb24gZmlsZXMKIAkgICAgIHsgdHlwZSA9PiAnZG9jcycsCiAJICAgICAgIGV4cHIgPT4gJ1ZlcnNpb246IFtcLjAtOWEtekEtWl0rJywKQEAgLTQ3LDEyICs0MSw2IEBACiAJICAgICAgIG5vdF9yZXF1aXJlZCA9PiB7J2Rpc3QvbmV0LXNubXAuc3BlYycgPT4gMX0KIAkgICAgIH0sCiAKLQkgICAgICMgc2VkIGZpbGVzCi0JICAgICB7IHR5cGUgPT4gJ3NlZCcsCi0JICAgICAgIGV4cHIgPT4gJ15zXC9WRVJTSU9OSU5GT1wvW15cL10qJywKLQkgICAgICAgcmVwbCA9PiAnc1wvVkVSU0lPTklORk9cLyRWRVJTSU9OJywKLQkgICAgICAgZmlsZXMgPT4gW3F3KHNlZHNjcmlwdC5pbildfSwKLQogCSAgICAgIyBNYWtlZmlsZXMKIAkgICAgIHsgdHlwZSA9PiAnTWFrZWZpbGUnLAogCSAgICAgICBleHByID0+ICdWRVJTSU9OID0gW1wuMC05YS16QS1aXSsnLApAQCAtNjEsMTMgKzQ5LDYgQEAKIAkgICAgICAgbm90X3JlcXVpcmVkID0+IHsnZGlzdC9NYWtlZmlsZScgPT4gMX0KIAkgICAgIH0sCiAKLQkgICAgICMgRG94eWdlbiBjb25maWcKLQkgICAgIHsgdHlwZSA9PiAnZG94eWdlbicsCi0JICAgICAgIGV4cHIgPT4gJ1BST0pFQ1RfTlVNQkVSKFxzKyk9KFxzKylcJyguKilcJycsCi0JICAgICAgIHJlcGwgPT4gJ1BST0pFQ1RfTlVNQkVSJDE9JDJcJyRWRVJTSU9OXCcnLAotCSAgICAgICBmaWxlcyA9PiBbcXcoZG94eWdlbi5jb25mKV0KLQkgICAgIH0sCi0KIAkgICAgICMgcGVybCBmaWxlcwogCSAgICAgeyB0eXBlID0+ICdwZXJsJywKIAkgICAgICAgZXhwciA9PiAnVkVSU0lPTiA9IFwnKC4qKVwnJywKQEAgLTk1LDEyICs3Niw2IEBACiAJICAgICAgIGV4ZmlsZXMgPT4gW3F3KGNvbmZpZ3VyZSldLAogCSAgICAgfSwKIAotCSAgICAgIyBjb25maWd1cmUgc2NyaXB0IGZpbGVzCi0JICAgICB7IHR5cGUgPT4gJ2RveHlnZW4nLAotCSAgICAgICBleHByID0+ICdQUk9KRUNUX05VTUJFUlxzKj0gKC4qKScsCi0JICAgICAgIHJlcGwgPT4gJ1BST0pFQ1RfTlVNQkVSICAgICAgICAgPSAkVkVSU0lPTicsCi0JICAgICAgIGZpbGVzID0+IFtxdyhkb3h5Z2VuLmNvbmYpXSwKLQkgICAgIH0sCiAJICAgICk7CiAKICMKZGlmZiAtLWdpdCBhL2xvY2FsL2h0bWwtYWRkLWhlYWRlci1mb290ZXIucGwgYi9sb2NhbC9odG1sLWFkZC1oZWFkZXItZm9vdGVyLnBsCmluZGV4IDk2ZTQ2YTUuLmMzY2I5MDIgMTAwNzU1Ci0tLSBhL2xvY2FsL2h0bWwtYWRkLWhlYWRlci1mb290ZXIucGwKKysrIGIvbG9jYWwvaHRtbC1hZGQtaGVhZGVyLWZvb3Rlci5wbApAQCAtMjEsNyArMjEsNyBAQAogdXNlIEZpbGU6OnN0YXQ7CiB1c2UgR2V0b3B0OjpMb25nOwogCi1teSAkdGlkeV9vcHRpb25zID0gJy1mIC9kZXYvbnVsbCAtbSAtaSAtYXN4aHRtbCAtd3JhcCAxMzAgLXF1aWV0JzsKK215ICR0aWR5X29wdGlvbnMgPSAnLWYgL2Rldi9udWxsIC1tIC1pIC1hc3hodG1sIC13cmFwIDEzMCAtcXVpZXQgLS1xdW90ZS1uYnNwIG4nOwogCiBteSAkcGF0dGVybiA9ICcnOwogbXkgJHNlY3Rpb24gPSAnJzsKZGlmZiAtLWdpdCBhL2xvY2FsL2h0bWwtdGV4dGZpbGUtZml4LnBsIGIvbG9jYWwvaHRtbC10ZXh0ZmlsZS1maXgucGwKaW5kZXggZjk0MTE5Ny4uYjcyMDc1YiAxMDA3NTUKLS0tIGEvbG9jYWwvaHRtbC10ZXh0ZmlsZS1maXgucGwKKysrIGIvbG9jYWwvaHRtbC10ZXh0ZmlsZS1maXgucGwKQEAgLTgsNiArOCw3IEBACiAjIERhdGU6ICAgICAgICAgICBEZWNlbWJlciAyOXRoLCAyMDA1CiAjIAogQGZpbGVzID0gcXciCitDSEFOR0VTCiBFUlJBVEEKIElOU1RBTEwKIE5FV1MKQEAgLTE3LDYgKzE4LDcgQEAKIFJFQURNRS5hZ2VudHgKIFJFQURNRS5haXgKIFJFQURNRS5ocHV4MTEKK1JFQURNRS5pcml4CiBSRUFETUUua3JiNQogUkVBRE1FLm1pYjJjCiBSRUFETUUubWlicwpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpIGIvbG9jYWwvbWliMmMtY29uZi5kL2dlbmVyaWMtdGFibGUtaW5kZXhlcy10by1vaWQubTJpCmluZGV4IGIyYWEwNzcuLmMxN2RlNGMgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9nZW5lcmljLXRhYmxlLWluZGV4ZXMtdG8tb2lkLm0yaQorKysgYi9sb2NhbC9taWIyYy1jb25mLmQvZ2VuZXJpYy10YWJsZS1pbmRleGVzLXRvLW9pZC5tMmkKQEAgLTI0LDExICsyNCwxMCBAQAogQCAgICAgICAgaW5jbHVkZSBtMmNfc2V0dXBfbm9kZS5tMmlACiAgICAgICAgIC8qICRtMmNfbm9kZV9zdW1tYXJ5ICovCiBAICAgICAgICBpZiAkbTJjX25vZGVfbmVlZGxlbmd0aCA9PSAxQAotICAgIHNubXBfc2V0X3Zhcl92YWx1ZSgmdmFyXyRub2RlLCAodV9jaGFyKikmbWliX2lkeC0+JG5vZGUsCisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKCZ2YXJfJG5vZGUsICZtaWJfaWR4LT4kbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgbWliX2lkeC0+JHtub2RlfV9sZW4gKiBzaXplb2YobWliX2lkeC0+JHtub2RlfVswXSkpOwogQCAgICAgICAgZWxzZUAKLSAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl8kbm9kZSwgKHVfY2hhciopJm1pYl9pZHgtPiRub2RlLAotICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YobWliX2lkeC0+JG5vZGUpKTsKKyAgICBzbm1wX3NldF92YXJfdmFsdWUoJnZhcl8kbm9kZSwgJm1pYl9pZHgtPiRub2RlLCBzaXplb2YobWliX2lkeC0+JG5vZGUpKTsKIEAgICAgICAgIGVuZEAKIAogQCAgICBlbmRAICMgZm9yIGVhY2ggY29sdW1uCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMgYi9sb2NhbC9taWIyYy1jb25mLmQvbWZkLWludGVyZmFjZS5tMmMKaW5kZXggN2VjYTMwOC4uYTdkMTg5MiAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMtY29uZi5kL21mZC1pbnRlcmZhY2UubTJjCisrKyBiL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtaW50ZXJmYWNlLm0yYwpAQCAtMjE1LDE0ICsyMTUsNyBAQAogc3RhdGljIE5ldHNubXBfTm9kZV9IYW5kbGVyIF9tZmRfJHtjb250ZXh0fV9jaGVja19kZXBlbmRlbmNpZXM7CiBAICAgICAgZW5kQAogCi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50IF8ke2NvbnRleHR9X3VuZG9fY29sdW1uKCAke2NvbnRleHR9X3Jvd3JlcV9jdHggKnJvd3JlcV9jdHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhciwgaW50IGNvbHVtbiApOwotCiBAICAgZW5kQCAjIHdyaXRhYmxlCi1AaWYgKCRtMmNfdGFibGVfcGVyc2lzdGVudCA9PSAxKSB8fCAoJG0yY190YWJsZV9yb3dfY3JlYXRpb24gPT0gMSlACi1ORVRTTk1QX1NUQVRJQ19JTkxJTkUgaW50IF8ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCk7Ci0KLUBlbmRACiBAICAgaWYgKCIkbTJjX2RhdGFfY29udGV4dCIgZXEgImdlbmVyYXRlZCIpICYmICgoJG0yY191bmRvX2VtYmVkID09IDApIHx8ICgkbTJjX2RhdGFfYWxsb2NhdGUgPT0gMSkpQAogJHtjb250ZXh0fV9kYXRhICoke2NvbnRleHR9X2FsbG9jYXRlX2RhdGEodm9pZCk7CiAKQEAgLTY2MSw2ICs2NTQsNTEgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMKIEBpZiAoJG0yY190YWJsZV9yb3dfY3JlYXRpb24gPT0gMSkgfHwgKCRtMmNfdGFibGVfcGVyc2lzdGVudCA9PSAxKUAKK05FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKK18ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOiR7Y29udGV4dH06XyR7Y29udGV4dH1fY2hlY2tfaW5kZXhlcyIsImNhbGxlZFxuIikpOworCisgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKKworIyMKK0BpZiAkbTJjX3RhYmxlX2V4dGVybmFsX2luZGV4ZXMgIT0gMEAKKyAgICAvKgorICAgICAqIGNoZWNrIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgRVhURVJOQUwgcm93IGV4aXN0cworICAgICAqLworQCAgIGZvcmVhY2ggJG5vZGUgZXh0ZXJuYWxpbmRleEAKK0AgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKKworICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KKyAgICByYyA9ICR7Y29udGV4dH1fJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOworICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKK0AgICBlbmRAICMgZm9yIGVhY2ggbm9uaW5kZXgKKworQGVuZEAgIyBleHRlcm5hbCBpbmRleAorQCAgIGZvcmVhY2ggJG5vZGUgaW50ZXJuYWxpbmRleEAKK0AgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKKworICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KK0AgICBldmFsICRtMmNfbnZfdmFsID0gInJvd3JlcV9jdHgtPnRibF9pZHguJG5vZGUiQAorQCAgIGV2YWwgJG0yY19udl9sZW4gPSAicm93cmVxX2N0eC0+dGJsX2lkeC4ke25vZGV9X2xlbiJACitAICAgZXZhbCAkbTJjX252X3N0ciA9ICJyb3dyZXFfY3R4LT50YmxfaWR4LiRub2RlIkAKK0AgICBpbmNsdWRlIG5vZGUtdmFsaWRhdGUubTJpQAorICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKKyAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgIHJjID0gJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOworICAgICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQorICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKK0AgICBlbmRAICMgZm9yIGVhY2ggaW50ZXJuYWxpbmRleAorCisgICAgLyoKKyAgICAgKiBpZiBpbmRpdmlkdWFsIHBhcnRzIGxvb2sgb2ssIGNoZWNrIHRoZW0gYXMgYSB3aG9sZQorICAgICAqLworICAgIHJldHVybiAke2NvbnRleHR9X3ZhbGlkYXRlX2luZGV4KCAke2NvbnRleHR9X2lmX2N0eC51c2VyX2N0eCwgcm93cmVxX2N0eCApOworfSAvKiBfJHtjb250ZXh0fV9jaGVja19pbmRleGVzICovCisjIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8qKgogICogQGludGVybmFsCiAgKiB3cmFwcGVyCkBAIC05NzUsNTQgKzEwMTMsNiBAQAogICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwogfSAvKiBfbWZkXyR7Y29udGV4dH1fZ2V0X3ZhbHVlcyAqLwogCi0jIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUBpZiAoJG0yY190YWJsZV9yb3dfY3JlYXRpb24gPT0gMSkgfHwgKCRtMmNfdGFibGVfcGVyc2lzdGVudCA9PSAxKUAKLU5FVFNOTVBfU1RBVElDX0lOTElORSBpbnQKLV8ke2NvbnRleHR9X2NoZWNrX2luZGV4ZXMoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICogcm93cmVxX2N0eCkKLXsKLSAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgIHJjID0gU05NUEVSUl9TVUNDRVNTOwotCi0gICAgREVCVUdNU0dUTCgoImludGVybmFsOiR7Y29udGV4dH06XyR7Y29udGV4dH1fY2hlY2tfaW5kZXhlcyIsImNhbGxlZFxuIikpOwotCi0gICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSByb3dyZXFfY3R4KTsKLQotIyMKLUBpZiAkbTJjX3RhYmxlX2V4dGVybmFsX2luZGV4ZXMgIT0gMEAKLSAgICAvKgotICAgICAqIGNoZWNrIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcgRVhURVJOQUwgcm93IGV4aXN0cwotICAgICAqLwotQCAgIGZvcmVhY2ggJG5vZGUgZXh0ZXJuYWxpbmRleEAKLUAgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKLQotICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KLSAgICByYyA9ICR7Y29udGV4dH1fJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOwotICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQotICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKLUAgICBlbmRAICMgZm9yIGVhY2ggbm9uaW5kZXgKLQotQGVuZEAgIyBleHRlcm5hbCBpbmRleAotQCAgIGZvcmVhY2ggJG5vZGUgaW50ZXJuYWxpbmRleEAKLUAgICAgICBpbmNsdWRlIG0yY19zZXR1cF9ub2RlLm0yaUAKLQotICAgIC8qIChJTkRFWCkgJG0yY19ub2RlX3N1bW1hcnkgKi8KLUAgICBldmFsICRtMmNfbnZfdmFsID0gInJvd3JlcV9jdHgtPnRibF9pZHguJG5vZGUiQAotQCAgIGV2YWwgJG0yY19udl9sZW4gPSAicm93cmVxX2N0eC0+dGJsX2lkeC4ke25vZGV9X2xlbiJACi1AICAgZXZhbCAkbTJjX252X3N0ciA9ICJyb3dyZXFfY3R4LT50YmxfaWR4LiRub2RlIkAKLUAgICBpbmNsdWRlIG5vZGUtdmFsaWRhdGUubTJpQAotICAgICAgIGlmIChNRkRfU1VDQ0VTUyAhPSByYykKLSAgICAgICAgICByZXR1cm4gcmM7Ci0gICAgICAgIHJjID0gJHtub2RlfV9jaGVja19pbmRleCggcm93cmVxX2N0eCApOwotICAgICAgIGlmKE1GRF9TVUNDRVNTICE9IHJjKQotICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9DUkVBVElPTjsKLUAgICBlbmRAICMgZm9yIGVhY2ggaW50ZXJuYWxpbmRleAotCi0gICAgLyoKLSAgICAgKiBpZiBpbmRpdmlkdWFsIHBhcnRzIGxvb2sgb2ssIGNoZWNrIHRoZW0gYXMgYSB3aG9sZQotICAgICAqLwotICAgIHJldHVybiAke2NvbnRleHR9X3ZhbGlkYXRlX2luZGV4KCAke2NvbnRleHR9X2lmX2N0eC51c2VyX2N0eCwgcm93cmVxX2N0eCApOwotfSAvKiBfJHtjb250ZXh0fV9jaGVja19pbmRleGVzICovCi1AZW5kQCAjICRtMmNfdGFibGVfcm93X2NyZWF0aW9uCi0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMtY29uZi5kL21mZC10b3AubTJjIGIvbG9jYWwvbWliMmMtY29uZi5kL21mZC10b3AubTJjCmluZGV4IDEyY2Y5ZGQuLmRiMGYzOTggMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLWNvbmYuZC9tZmQtdG9wLm0yYworKysgYi9sb2NhbC9taWIyYy1jb25mLmQvbWZkLXRvcC5tMmMKQEAgLTI1Miw4ICsyNTIsOCBAQAogaW50ICR7Y29udGV4dH1fcm93X3JlZl9kZWNyZW1lbnQoJHtjb250ZXh0fV9yb3dyZXFfY3R4ICpyb3dyZXFfY3R4KTsKIAogQCAgIGVuZEAKLWV4dGVybiBvaWQgJHtjb250ZXh0fV9vaWRbXTsKLWV4dGVybiBpbnQgJHtjb250ZXh0fV9vaWRfc2l6ZTsKK2V4dGVybiBjb25zdCBvaWQgJHtjb250ZXh0fV9vaWRbXTsKK2V4dGVybiBjb25zdCBpbnQgJHtjb250ZXh0fV9vaWRfc2l6ZTsKIAogQGVuZEAgIyBmb3IgZWFjaAogCkBAIC0zMDksOCArMzA5LDggQEAKIAogQGZvcmVhY2ggJHRhYmxlIHRhYmxlQAogQCAgICBpbmNsdWRlIG0yY19zZXR1cF90YWJsZS5tMmlACi1vaWQgJHtjb250ZXh0fV9vaWRbXSA9IHsgJGNvbnRleHQudWNfT0lEIH07Ci1pbnQgJHtjb250ZXh0fV9vaWRfc2l6ZSA9IE9JRF9MRU5HVEgoJHtjb250ZXh0fV9vaWQpOworY29uc3Qgb2lkICR7Y29udGV4dH1fb2lkW10gPSB7ICRjb250ZXh0LnVjX09JRCB9OworY29uc3QgaW50ICR7Y29udGV4dH1fb2lkX3NpemUgPSBPSURfTEVOR1RIKCR7Y29udGV4dH1fb2lkKTsKIAogQCAgICBpZiAieCRtMmNfY29udGV4dF9yZWciIG5lICJ4IkAKICAgICAke2NvbnRleHR9X3JlZ2lzdHJhdGlvbiAgJHtjb250ZXh0fV91c2VyX2NvbnRleHQ7CmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy11cGRhdGUgYi9sb2NhbC9taWIyYy11cGRhdGUKaW5kZXggNjY5YTc0NS4uMjIzZWM2MyAxMDA3NTUKLS0tIGEvbG9jYWwvbWliMmMtdXBkYXRlCisrKyBiL2xvY2FsL21pYjJjLXVwZGF0ZQpAQCAtMSw0ICsxLDQgQEAKLSMhL2Jpbi9iYXNoCisjIS9iaW4vc2gKICMKICMgJElkJAogIwpAQCAtMzksNyArMzksNyBAQAogCiBlcnJvcigpCiB7Ci0gICAgZWNobyAiRVJST1I6ICRAIiA+IC9kZXYvc3RkZXJyCisgICAgZWNobyAiRVJST1I6ICRAIiA+MgogfQogCiBkaWUoKQpkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mIGIvbG9jYWwvbWliMmMuYWNjZXNzX2Z1bmN0aW9ucy5jb25mCmluZGV4IDgzM2E4NTcuLmMyMDliMjkgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLmFjY2Vzc19mdW5jdGlvbnMuY29uZgorKysgYi9sb2NhbC9taWIyYy5hY2Nlc3NfZnVuY3Rpb25zLmNvbmYKQEAgLTc5LDcgKzc5LDcgQEAKICAgICB2cHRyID0gcHV0X2luZGV4X2RhdGE7CiAgICAgCiAgICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKLSAgICBzbm1wX3NldF92YXJfdmFsdWUodnB0ciwgKHVfY2hhciAqKSAvKiogWFhYOiAkaWR4IGRhdGEgKi8sIC8qKiBYWFg6IGxlbmd0aCBvZiAkaWR4IGRhdGEgKi8pOworICAgIHNubXBfc2V0X3Zhcl92YWx1ZSh2cHRyLCAvKiogWFhYOiAkaWR4IGRhdGEgKi8sIC8qKiBYWFg6IGxlbmd0aCBvZiAkaWR4IGRhdGEgKi8pOwogICAgIHZwdHIgPSB2cHRyLT5uZXh0X3ZhcmlhYmxlOwogICAgIEBlbmRACiAKQEAgLTEwNyw3ICsxMDcsNyBAQAogICAgIHZwdHIgPSBwdXRfaW5kZXhfZGF0YTsKICAgICAKICAgICBAZm9yZWFjaCAkaWR4IGluZGV4QAotICAgIHNubXBfc2V0X3Zhcl92YWx1ZSh2cHRyLCAodV9jaGFyICopIC8qKiBYWFg6ICRpZHggZGF0YSAqLywgLyoqIFhYWDogbGVuZ3RoIG9mICRpZHggZGF0YSAqLyk7CisgICAgc25tcF9zZXRfdmFyX3ZhbHVlKHZwdHIsIC8qKiBYWFg6ICRpZHggZGF0YSAqLywgLyoqIFhYWDogbGVuZ3RoIG9mICRpZHggZGF0YSAqLyk7CiAgICAgdnB0ciA9IHZwdHItPm5leHRfdmFyaWFibGU7CiAgICAgQGVuZEAKIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mIGIvbG9jYWwvbWliMmMuYXJyYXktdXNlci5jb25mCmluZGV4IGQzZTAyNmUuLjMxNTU5YWMgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLmFycmF5LXVzZXIuY29uZgorKysgYi9sb2NhbC9taWIyYy5hcnJheS11c2VyLmNvbmYKQEAgLTEzNiw4ICsxMzYsOCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICAqIG9pZCBkZWNsYXJhdGlvbnMKICAqLwotZXh0ZXJuIG9pZCAke2l9X29pZFtdOwotZXh0ZXJuIHNpemVfdCAke2l9X29pZF9sZW47CitleHRlcm4gY29uc3Qgb2lkICR7aX1fb2lkW107CitleHRlcm4gY29uc3Qgc2l6ZV90ICR7aX1fb2lkX2xlbjsKIAogI2RlZmluZSAke2l9X1RBQkxFX09JRCAkaS5jb21tYW9pZAogICAgIApAQCAtMjYxLDggKzI2MSw4IEBACiBzdGF0aWMgICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15X2hhbmRsZXIgPSBOVUxMOwogc3RhdGljICAgICBuZXRzbm1wX3RhYmxlX2FycmF5X2NhbGxiYWNrcyBjYjsKIAotb2lkICR7aX1fb2lkW10gPSB7ICR7aX1fVEFCTEVfT0lEIH07Ci1zaXplX3QgJHtpfV9vaWRfbGVuID0gT0lEX0xFTkdUSCgke2l9X29pZCk7Citjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHsgJHtpfV9UQUJMRV9PSUQgfTsKK2NvbnN0IHNpemVfdCAke2l9X29pZF9sZW4gPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKIAogCiAjaWZkZWYgJHtpfV9DVVNUT01fU09SVApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuY29udGFpbmVyLmNvbmYgYi9sb2NhbC9taWIyYy5jb250YWluZXIuY29uZgppbmRleCAyNjZmMDA3Li5lNzY2MjFmIDEwMDY0NAotLS0gYS9sb2NhbC9taWIyYy5jb250YWluZXIuY29uZgorKysgYi9sb2NhbC9taWIyYy5jb250YWluZXIuY29uZgpAQCAtMSw0ICsxLDcgQEAKICMjIC0qLSBjIC0qLQorIyMgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyIENvcHlyaWdodCAoQykgQXBwbGUsIEluYy4KKyMjIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyMjIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIyBEbyB0aGUgLmggZmlsZQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtMzYsOCArMzksMTUgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2FnZW50L25ldC1zbm1wLWFnZW50LWluY2x1ZGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvYWdlbnQvbmV0LXNubXAtYWdlbnQtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC90YWJsZV9jb250YWluZXIuaD4KICNpbmNsdWRlICIke25hbWV9LmgiCiAKKyNpZmRlZiAke2kudWN9X1VTRV9DQUNIRQorc3RhdGljIHZvaWQgX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYyk7CitzdGF0aWMgaW50IF9jYWNoZV9sb2FkKG5ldHNubXBfY2FjaGUgKiBjYWNoZSwgdm9pZCAqdm1hZ2ljKTsKKyNlbmRpZgorCiAvKiogSW5pdGlhbGl6ZXMgdGhlICRuYW1lIG1vZHVsZSAqLwogdm9pZAogaW5pdF8kbmFtZSh2b2lkKQpAQCAtNDcsOSArNTcsOSBAQAogICAgIGluaXRpYWxpemVfdGFibGVfJGkoKTsKICAgQGVuZEAKIH0KLQorIyMKIEBmb3JlYWNoICRpIHRhYmxlQAotICAjIERldGVybWluZSB0aGUgZmlyc3QvbGFzdCBjb2x1bW4gbmFtZXMKKyMjIERldGVybWluZSB0aGUgZmlyc3QvbGFzdCBjb2x1bW4gbmFtZXMKICAgQGV2YWwgJGZpcnN0X2NvbHVtbiA9ICItIkAKICAgQGV2YWwgJGxhc3RfY29sdW1uID0gIi0iQAogICBAZm9yZWFjaCAkYyBjb2x1bW5ACkBAIC02NSwxMiArNzUsMTggQEAKIHZvaWQKIGluaXRpYWxpemVfdGFibGVfJGkodm9pZCkKIHsKLSAgICBzdGF0aWMgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OwotICAgIHNpemVfdCAke2l9X29pZF9sZW4gICA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOwotICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKLSAgICBuZXRzbm1wX2NvbnRhaW5lciAgICAgICAgICAgICAgICpjb250YWluZXI7Ci0gICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07CisgICAgY29uc3Qgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CisgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnID0gTlVMTDsKKyAgICBuZXRzbm1wX21pYl9oYW5kbGVyICAgICAgICAgICAgICpoYW5kbGVyID0gTlVMTDsKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAgICAgICAgICAgICAgICpjb250YWluZXIgPSBOVUxMOworICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm8gPSBOVUxMOworI2lmZGVmICR7aS51Y31fVVNFX0NBQ0hFCisgICAgbmV0c25tcF9jYWNoZSAgKmNhY2hlID0gTlVMTDsKKyNlbmRpZgogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aW5pdCIsICJpbml0aWFsaXppbmcgdGFibGUgJGlcbiIpKTsKKyAgICAKICAgICByZWcgPSBuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvbigKICAgICAgICAgICAgICAgIiRpIiwgICAgICR7aX1faGFuZGxlciwKICAgICAgICAgICAgICAgJHtpfV9vaWQsICR7aX1fb2lkX2xlbiwKQEAgLTgwLDkgKzk2LDI2IEBACiAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCiBAZW5kQAogICAgICAgICAgICAgICApOworICAgIGlmIChOVUxMID09IHJlZykgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBjcmVhdGluZyBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorQGlmICRpLnNldHRhYmxlQAorICAgIC8qKiBzaG91bGQgYSBzZXQgb24gYSBub24tZXhpc3RlbnQgcm93IGNyZWF0ZSBhIG5ldyBvbmU/ICovCisgICAgLyoqIHJlZy0+bW9kZXMgfD0gSEFORExFUl9DQU5fTk9UX0NSRUFURTsgKi8KK0BlbmRACiAKLSAgICBjb250YWluZXIgID0gbmV0c25tcF9jb250YWluZXJfZmluZCggInRhYmxlX2NvbnRhaW5lciIgKTsKKyAgICBjb250YWluZXIgID0gbmV0c25tcF9jb250YWluZXJfZmluZCggIiRpOnRhYmxlX2NvbnRhaW5lciIgKTsKKyAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgY3JlYXRpbmcgY29udGFpbmVyIGZvciAkaVxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKICAgICB0YWJsZV9pbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRiggbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyApOworICAgIGlmIChOVUxMID09IHRhYmxlX2luZm8pIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KICAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLAogICAgIEBmb3JlYWNoICRpZHggaW5kZXhACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWR4LnR5cGUsICAvKiBpbmRleDogJGlkeCAqLwpAQCAtOTEsMTMgKzEyNCw5MiBAQAogICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fJGZpcnN0X2NvbHVtbi51YzsKICAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OXyRsYXN0X2NvbHVtbi51YzsKICAgICAKLSAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yZWdpc3RlciggcmVnLCB0YWJsZV9pbmZvLCBjb250YWluZXIsIDAgKTsKKyAgICAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICAgICAqCisgICAgICogaW5qZWN0IGNvbnRhaW5lcl90YWJsZSBoZWxwZXIKKyAgICAgKi8KKyAgICBoYW5kbGVyID0gbmV0c25tcF9jb250YWluZXJfdGFibGVfaGFuZGxlcl9nZXQodGFibGVfaW5mbywgY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUJMRV9DT05UQUlORVJfS0VZX05FVFNOTVBfSU5ERVgpOworICAgIGlmIChOVUxMID09IGhhbmRsZXIpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgYWxsb2NhdGluZyB0YWJsZSByZWdpc3RyYXRpb24gZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBpZiAoU05NUEVSUl9TVUNDRVNTICE9IG5ldHNubXBfaW5qZWN0X2hhbmRsZXIocmVnLCBoYW5kbGVyKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBpbmplY3RpbmcgY29udGFpbmVyX3RhYmxlIGhhbmRsZXIgZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCwgd2lsbCByZXVzZSBiZWxvdyAqLwogCi0gICAgLyogSW5pdGlhbGlzZSB0aGUgY29udGVudHMgb2YgdGhlIHRhYmxlIGhlcmUgKi8KKyNpZmRlZiAke2kudWN9X1VTRV9DQUNIRQorICAgIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICoKKyAgICAgKiBpbmplY3QgY2FjaGUgaGVscGVyCisgICAgICovCisgICAgY2FjaGUgPSBuZXRzbm1wX2NhY2hlX2NyZWF0ZSgzMCwgICAgLyogdGltZW91dCBpbiBzZWNvbmRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfY2FjaGVfbG9hZCwgX2NhY2hlX2ZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2l9X29pZCwgJHtpfV9vaWRfbGVuKTsKKworICAgIGlmIChOVUxMID09IGNhY2hlKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjcmVhdGluZyBjYWNoZSBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorICAgIGNhY2hlLT5mbGFncyA9IE5FVFNOTVBfQ0FDSEVfRE9OVF9JTlZBTElEQVRFX09OX1NFVDsKKyAgICBjYWNoZS0+bWFnaWMgPSBjb250YWluZXI7CisKKyAgICBoYW5kbGVyID0gbmV0c25tcF9jYWNoZV9oYW5kbGVyX2dldChjYWNoZSk7CisgICAgaWYgKE5VTEwgPT0gaGFuZGxlcikgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3IgY3JlYXRpbmcgY2FjaGUgaGFuZGxlciBmb3IgJGlcbiIpOworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX2luamVjdF9oYW5kbGVyKHJlZywgaGFuZGxlcikpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgaW5qZWN0aW5nIGNhY2hlIGhhbmRsZXIgZm9yICRpXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKyAgICBoYW5kbGVyID0gTlVMTDsgLyogcmVnIGhhcyBpdCovCisjZW5kaWYKKworICAgIC8qCisgICAgICogcmVnaXN0ZXIgdGhlIHRhYmxlCisgICAgICovCisgICAgaWYgKFNOTVBFUlJfU1VDQ0VTUyAhPSBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlKHJlZywgdGFibGVfaW5mbykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3IgcmVnaXN0ZXJpbmcgdGFibGUgaGFuZGxlciBmb3IgJGlcbiIpOworICAgICAgICByZWcgPSBOVUxMOyAvKiBpdCB3YXMgZnJlZWQgaW5zaWRlIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUgKi8KKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIC8qCisgICAgICogSW5pdGlhbGlzZSB0aGUgY29udGVudHMgb2YgdGhlIHRhYmxlIGhlcmUKKyAgICAgKi8KKworICAgIAorICAgIHJldHVybjsgLyogb2sgKi8KKworICAgIC8qCisgICAgICogU29tZSBlcnJvciBvY2N1cnJlZCBkdXJpbmcgcmVnaXN0cmF0aW9uLiBDbGVhbiB1cCBhbmQgYmFpbC4KKyAgICAgKi8KKyAgYmFpbDogLyogbm90IG9rICovCisgICAgCisgICAgaWYgKGhhbmRsZXIpCisgICAgICAgIG5ldHNubXBfaGFuZGxlcl9mcmVlKGhhbmRsZXIpOworCisjaWZkZWYgJHtpLnVjfV9VU0VfQ0FDSEUKKyAgICBpZiAoY2FjaGUpCisgICAgICAgIG5ldHNubXBfY2FjaGVfZnJlZShjYWNoZSk7CisjZW5kaWYKKyAgICAKKyAgICBpZiAodGFibGVfaW5mbykKKyAgICAgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19mcmVlKHRhYmxlX2luZm8pOworCisgICAgaWYgKGNvbnRhaW5lcikKKyAgICAgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKKworICAgIGlmIChyZWcpIAorICAgICAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnKTsKIH0KIAotICAgIC8qIFR5cGljYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5ICovCi1zdHJ1Y3QgJHtpfV9lbnRyeSB7CisvKiogVHlwaWNhbCBkYXRhIHN0cnVjdHVyZSBmb3IgYSByb3cgZW50cnkgKi8KK3R5cGVkZWYgc3RydWN0ICR7aX1fZW50cnlfcyB7CiAgICAgbmV0c25tcF9pbmRleCBvaWRfaW5kZXg7CiAKICAgICAvKiBJbmRleCB2YWx1ZXMgKi8KQEAgLTEzMywxMCArMjQ1LDEwIEBACiAgICAgQGVuZEAKIAogICAgIGludCAgIHZhbGlkOwotfTsKK30gJHtpfV9lbnRyeTsKIAotLyogY3JlYXRlIGEgbmV3IHJvdyBpbiB0aGUgdGFibGUgKi8KLXN0cnVjdCAke2l9X2VudHJ5ICoKKy8qKiBjcmVhdGUgYSBuZXcgcm93IGluIHRoZSB0YWJsZSAqLworJHtpfV9lbnRyeSAqCiAke2l9X2NyZWF0ZUVudHJ5KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIAogICBAZm9yZWFjaCAkaWR4IGluZGV4QAogICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACkBAIC0xNDcsOSArMjU5LDkgQEAKICAgICBAZW5kQAogICBAZW5kQAogICAgICAgICAgICAgICAgICkgewotICAgIHN0cnVjdCAke2l9X2VudHJ5ICplbnRyeTsKKyAgICAke2l9X2VudHJ5ICplbnRyeTsKIAotICAgIGVudHJ5ID0gU05NUF9NQUxMT0NfVFlQRURFRihzdHJ1Y3QgJHtpfV9lbnRyeSk7CisgICAgZW50cnkgPSBTTk1QX01BTExPQ19UWVBFREVGKCR7aX1fZW50cnkpOwogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCkBAIC0xNjcsMTAgKzI3OSwxMCBAQAogICAgIHJldHVybiBlbnRyeTsKIH0KIAotLyogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCisvKiogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCiB2b2lkCiAke2l9X3JlbW92ZUVudHJ5KG5ldHNubXBfY29udGFpbmVyICpjb250YWluZXIsIAotICAgICAgICAgICAgICAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAqZW50cnkpIHsKKyAgICAgICAgICAgICAgICAgJHtpfV9lbnRyeSAqZW50cnkpIHsKIAogICAgIGlmICghZW50cnkpCiAgICAgICAgIHJldHVybjsgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KQEAgLTE3OSw2ICsyOTEsMTUgQEAKICAgICAgICAgU05NUF9GUkVFKCBlbnRyeSApOyAgIC8qIFhYWCAtIHJlbGVhc2UgYW55IG90aGVyIGludGVybmFsIHJlc291cmNlcyAqLwogfQogCisvKiogcmVtb3ZlIGEgcm93IGZyb20gdGhlIHRhYmxlICovCit2b2lkCiske2l9X2ZyZWVFbnRyeSgke2l9X2VudHJ5ICplbnRyeSkgeworCisgICAgaWYgKCFlbnRyeSkKKyAgICAgICAgcmV0dXJuOyAgICAvKiBOb3RoaW5nIHRvIHJlbW92ZSAqLworICAgIFNOTVBfRlJFRSggZW50cnkgKTsgICAvKiBYWFggLSByZWxlYXNlIGFueSBvdGhlciBpbnRlcm5hbCByZXNvdXJjZXMgKi8KK30KKwogLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSAkaSB0YWJsZSAqLwogaW50CiAke2l9X2hhbmRsZXIoCkBAIC0xODksMTAgKzMxMCwxMyBAQAogCiAgICAgbmV0c25tcF9yZXF1ZXN0X2luZm8gICAgICAgKnJlcXVlc3Q7CiAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87Ci0gICAgbmV0c25tcF90YWJsZV9kYXRhICAgICAgICAgKnRhYmxlX2RhdGE7CiAgICAgbmV0c25tcF9jb250YWluZXIgICAgICAgICAgKmNvbnRhaW5lcjsKLSAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAgICAgICAgICAqdGFibGVfZW50cnk7CisgICAgJHtpfV9lbnRyeSAgICAgICAgICAgICAgICAgKnRhYmxlX2VudHJ5OworQGlmICRpLnNldHRhYmxlQAogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICByZXQ7CitAZW5kQAorCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aGFuZGxlciIsICJQcm9jZXNzaW5nIHJlcXVlc3QgKCVkKVxuIiwgcmVxaW5mby0+bW9kZSkpOwogCiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIC8qCkBAIC0yMDAsOSArMzI0LDE4IEBACiAgICAgICAgICAqLwogICAgIGNhc2UgTU9ERV9HRVQ6CiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQApAQCAtMjE1LDcgKzM0OCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKil0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKQEAgLTIzOCw5ICszNzEsMTggQEAKICAgICAgICAgICovCiAgICAgY2FzZSBNT0RFX1NFVF9SRVNFUlZFMToKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiAgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACkBAIC0yNTEsNyArMzkzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAodGFibGVfZW50cnkgPyBSU19BQ1RJVkUgOiBSU19OT05FWElTVEVOVCApKTsKICAgICAgICAgICAgIEBlbHNlQAogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACi0JICAgICAgICAvKiBvciBwb3NzaWJsYyAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLworCSAgICAgICAgLyogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZScgKi8KICAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKICAgICAgICAgICAgIEBlbHNlQApAQCAtMjc3LDEwICs0MTksMTggQEAKICAgICBjYXNlIE1PREVfU0VUX1JFU0VSVkUyOgogQGlmICRpLmNyZWF0YWJsZUAKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKLSAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogQGlmICRpLnJvd3N0YXR1c0AKQEAgLTI5MCw2ICs0NDAsMTQgQEAKICAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRHTzoKICAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFORFdBSVQ6CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gJHtpfV9jcmVhdGVFbnRyeShjb250YWluZXIKICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKICAgICBAaWYgJGlkeC5uZWVkbGVuZ3RoQApAQCAtMzE3LDYgKzQ3NSwxNCBAQAogICAgICAgICAgICAgQGVuZEAKICAgICAgICAgICAgIEBlbmRACiAgICAgICAgICAgICAgICAgaWYgKCAhdGFibGVfZW50cnkgKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChOVUxMID09IGNvbnRhaW5lcikgeworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gJHtpfV9jcmVhdGVFbnRyeShjb250YWluZXIKICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKICAgICBAaWYgJGlkeC5uZWVkbGVuZ3RoQApAQCAtMzQ1LDEwICs1MTEsMjYgQEAKICAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CiBAaWYgJGkuY3JlYXRhYmxlQAogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBjb250YWluZXIgZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogQGlmICRpLnJvd3N0YXR1c0AKQEAgLTM4Miw5ICs1NjQsMTggQEAKIAogICAgIGNhc2UgTU9ERV9TRVRfQUNUSU9OOgogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewotICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoc3RydWN0ICR7aX1fZW50cnkgKikKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCisgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKCR7aX1fZW50cnkgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKICAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBTTk1QX0VSUl9HRU5FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKICAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKQEAgLTQxNyw5ICs2MDgsMTggQEAKIEBpZiAkaS5yb3dzdGF0dXNACiAgICAgICAgIC8qIENoZWNrIHRoZSBpbnRlcm5hbCBjb25zaXN0ZW5jeSBvZiBhbiBhY3RpdmUgcm93ICovCiAgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKHJlcXVlc3QtPnByb2Nlc3NlZCkKKyAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAoJHtpfV9lbnRyeSAqKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdF9jb250ZXh0KHJlcXVlc3QpOwogICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8ocmVxdWVzdCk7CisgICAgICAgICAgICBpZiAoKE5VTEwgPT0gdGFibGVfZW50cnkpIHx8IChOVUxMID09IHRhYmxlX2luZm8pKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgZW50cnkgb3IgaW5mbyBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsIFNOTVBfRVJSX0dFTkVSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CiAgICAgCiAgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgewogICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQApAQCAtNDQzLDEwICs2NDMsMjYgQEAKIAogICAgIGNhc2UgTU9ERV9TRVRfVU5ETzoKICAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIGlmIChyZXF1ZXN0LT5wcm9jZXNzZWQpCisgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGNvbnRhaW5lciAgID0gICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3QocmVxdWVzdCk7Ci0gICAgICAgICAgICB0YWJsZV9lbnRyeSA9IChzdHJ1Y3QgJHtpfV9lbnRyeSAqKQorICAgICAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGV4dHJhY3QgdGFibGUgY29udGFpbmVyIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfR0VORVJSLCBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKCR7aX1fZW50cnkgKikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2V4dHJhY3RfY29udGV4dChyZXF1ZXN0KTsKICAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKHJlcXVlc3QpOworICAgICAgICAgICAgaWYgKChOVUxMID09IHRhYmxlX2VudHJ5KSB8fCAoTlVMTCA9PSB0YWJsZV9pbmZvKSkgeworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGVudHJ5IG9yIGluZm8gZm9yICRpXG4iKTsKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCBTTk1QX0VSUl9HRU5FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgIAogICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKICAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKQEAgLTUxOCwxMCArNzM0LDE4IEBACiAgICAgY2FzZSBNT0RFX1NFVF9DT01NSVQ6CiBAaWYgJGkuY3JlYXRhYmxlQAogICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgewotICAgICAgICAgICAgY29udGFpbmVyICAgPSAgICAgbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKLSAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gKHN0cnVjdCAke2l9X2VudHJ5ICopCisgICAgICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkKQorICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICgke2l9X2VudHJ5ICopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9leHRyYWN0X2NvbnRleHQocmVxdWVzdCk7CiAgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyhyZXF1ZXN0KTsKKyAgICAgICAgICAgIGlmICgoTlVMTCA9PSB0YWJsZV9lbnRyeSkgfHwgKE5VTEwgPT0gdGFibGVfaW5mbykpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZCBub3QgZXh0cmFjdCB0YWJsZSBlbnRyeSBvciBpbmZvIGZvciAkaVxuIik7CisgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwgU05NUF9FUlJfR0VORVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCAwKTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KICAgICAKICAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CiBAaWYgJGkucm93c3RhdHVzQApAQCAtNTQ0LDYgKzc2OCwxNCBAQAogICAgICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIGNhc2UgUlNfREVTVFJPWToKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyID0gbmV0c25tcF9jb250YWluZXJfdGFibGVfZXh0cmFjdChyZXF1ZXN0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkIG5vdCBleHRyYWN0IHRhYmxlIGNvbnRhaW5lciBmb3IgJGlcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHJlcXVlc3QtPnJlcXVlc3R2YiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9HRU5FUlIsIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeShjb250YWluZXIsIHRhYmxlX2VudHJ5ICk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgQGVuZEAKQEAgLTU2Niw0ICs3OTgsNjcgQEAKICAgICB9CiAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CiB9CisKKyNpZmRlZiAke2kudWN9X1VTRV9DQUNIRQorLyoqCisgKiBAaW50ZXJuYWwKKyAqLworc3RhdGljIGludAorX2NhY2hlX2xvYWQobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICp2bWFnaWMpCit7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcjsKKyAgICAKKyAgICBERUJVR01TR1RMKCgiaW50ZXJuYWw6JHtpfTpfY2FjaGVfbG9hZCIsICJjYWxsZWRcbiIpKTsKKworICAgIGlmICgoTlVMTCA9PSBjYWNoZSkgfHwgKE5VTEwgPT0gY2FjaGUtPm1hZ2ljKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiaW52YWxpZCBjYWNoZSBmb3IgJHtpfV9jYWNoZV9sb2FkXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKiljYWNoZS0+bWFnaWM7CisKKyAgICAvKiogc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZvciBhbiBpbnZhbGlkIG9yIGV4cGlyZWQgY2FjaGUgKi8KKyAgICBuZXRzbm1wX2Fzc2VydCgoMCA9PSBjYWNoZS0+dmFsaWQpIHx8ICgxID09IGNhY2hlLT5leHBpcmVkKSk7CisKKyAgICAvKgorICAgICAqIGxvYWQgY2FjaGUgaGVyZSAob3IgY2FsbCBmdW5jdGlvbiB0byBkbyBpdCkKKyAgICAgKi8KKyAgICAvKiogQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIHJlY29yZCk7ICovCisKKyAgICByZXR1cm4gMDsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2xvYWQgKi8KKworLyoqCisgKiBASW50ZXJuYWwKKyAqLworLyoqIHJlbW92ZSBhIHJvdyBmcm9tIHRoZSB0YWJsZSAqLworc3RhdGljIHZvaWQKKyR7aX1fZnJlZUVudHJ5X2NiKCR7aX1fZW50cnkgKmVudHJ5LCB2b2lkICptYWdpYykgeworCisgICAgJHtpfV9mcmVlRW50cnkoZW50cnkpOworfQorCisvKioKKyAqIEBpbnRlcm5hbAorICovCitzdGF0aWMgdm9pZAorX2NhY2hlX2ZyZWUobmV0c25tcF9jYWNoZSAqIGNhY2hlLCB2b2lkICptYWdpYykKK3sKKyAgICBuZXRzbm1wX2NvbnRhaW5lciAqY29udGFpbmVyOworCisgICAgREVCVUdNU0dUTCgoImludGVybmFsOiR7aX06X2NhY2hlX2ZyZWUiLCAiY2FsbGVkXG4iKSk7CisKKyAgICBpZiAoKE5VTEwgPT0gY2FjaGUpIHx8IChOVUxMID09IGNhY2hlLT5tYWdpYykpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImludmFsaWQgY2FjaGUgaW4gJHtpfV9jYWNoZV9mcmVlXG4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBjb250YWluZXIgPSAobmV0c25tcF9jb250YWluZXIgKikgY2FjaGUtPm1hZ2ljOworCisgICAgLyoKKyAgICAgKiBlbXB0eSAoYnV0IGRvbid0IGZyZWUpIGNhY2hlIGhlcmUKKyAgICAgKi8KKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLAorICAgICAgICAgICAgICAgICAgICAobmV0c25tcF9jb250YWluZXJfb2JqX2Z1bmMqKSR7aX1fZnJlZUVudHJ5X2NiLAorICAgICAgICAgICAgICAgICAgICBOVUxMKTsKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogX2NhY2hlX2ZyZWUgKi8KKyNlbmRpZiAvKiAke2kudWN9X1VTRV9DQUNIRSAqLwogQGVuZEAKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYgYi9sb2NhbC9taWIyYy5jcmVhdGUtZGF0YXNldC5jb25mCmluZGV4IDExZmQ1ZDIuLjljZjc1ZmQgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLmNyZWF0ZS1kYXRhc2V0LmNvbmYKKysrIGIvbG9jYWwvbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZgpAQCAtNDMsOCArNDMsNyBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07Ci0gICAgc2l6ZV90ICR7aX1fb2lkX2xlbiA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKICAgICBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0ICp0YWJsZV9zZXQ7CiAKICAgICAvKiBjcmVhdGUgdGhlIHRhYmxlIHN0cnVjdHVyZSBpdHNlbGYgKi8KQEAgLTc4LDcgKzc3LDcgQEAKICAgICAgICBvZiB0aGUgcmVxdWVzdCwgY2hhbmdlICR7aX1faGFuZGxlciB0byAiTlVMTCIgKi8KICAgICBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGFfc2V0KG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKCIkaSIsICR7aX1faGFuZGxlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpfV9vaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7aX1fb2lkX2xlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT0lEX0xFTkdUSCgke2l9X29pZCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfc2V0LCBOVUxMKTsKIH0KZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLmludF93YXRjaC5jb25mIGIvbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYKaW5kZXggNzc4N2EyZi4uZWNjNWQxMCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYKKysrIGIvbG9jYWwvbWliMmMuaW50X3dhdGNoLmNvbmYKQEAgLTUwLDEyICs1MCwxMiBAQAogaW5pdF8ke25hbWV9KHZvaWQpCiB7CiAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZzsKLSAgbmV0c25tcF93YXRjaGVyX2luZm8gICAgICAgICAqd2luZm87CiAKICAgQGZvcmVhY2ggJGkgc2NhbGFyQAogICAgIEBpZiAhJGkubmVlZGxlbmd0aEAKLSAgICBzdGF0aWMgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CiAgICAgQGVuZEAKKyAgc3RhdGljIG5ldHNubXBfd2F0Y2hlcl9pbmZvICR7aX1fd2luZm87CiAgIEBlbmRACiAKICAgLyoKQEAgLTkyLDEwICs5Miw5IEBACiAgICAgQGVsc2VACiAgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZKTsKICAgICBAZW5kQAotICAgIHdpbmZvID0gbmV0c25tcF9jcmVhdGVfd2F0Y2hlcl9pbmZvKAotICAgICAgICAgICAgICAgICYkaSwgc2l6ZW9mKCRpLmRlY2wpLAotICAgICAgICAgICAgICAgICAkaS50eXBlLCBXQVRDSEVSX0ZJWEVEX1NJWkUpOwotICAgIGlmIChuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCByZWcsIHdpbmZvICkgPCAwICkgeworICAgIG5ldHNubXBfaW5pdF93YXRjaGVyX2luZm8oJiR7aX1fd2luZm8sICYkaSwgc2l6ZW9mKCRpLmRlY2wpLAorCQkJICAgICAgJGkudHlwZSwgV0FUQ0hFUl9GSVhFRF9TSVpFKTsKK2lmIChuZXRzbm1wX3JlZ2lzdGVyX3dhdGNoZWRfc2NhbGFyKCByZWcsICYke2l9X3dpbmZvICkgPCAwICkgewogICAgICAgICBzbm1wX2xvZyggTE9HX0VSUiwgIkZhaWxlZCB0byByZWdpc3RlciB3YXRjaGVkICRpIiApOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mIGIvbG9jYWwvbWliMmMuaXRlcmF0ZS5jb25mCmluZGV4IDNhNTVkMjMuLmU0MDliYTkgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLml0ZXJhdGUuY29uZgorKysgYi9sb2NhbC9taWIyYy5pdGVyYXRlLmNvbmYKQEAgLTcyLDEyICs3MiwxNCBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07Ci0gICAgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OworICAgIGNvbnN0IHNpemVfdCAke2l9X29pZF9sZW4gICA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKICAgICBuZXRzbm1wX2l0ZXJhdG9yX2luZm8gICAgICAgICAgICppaW5mbzsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aW5pdCIsICJpbml0aWFsaXppbmcgdGFibGUgJGlcbiIpKTsKKwogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAiJGkiLCAgICAgJHtpfV9oYW5kbGVyLAogICAgICAgICAgICAgICAke2l9X29pZCwgJHtpfV9vaWRfbGVuLApAQCAtMzA3LDYgKzMwOSw4IEBACiAgICAgbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm8gKnRhYmxlX2luZm87CiAgICAgc3RydWN0ICR7aX1fZW50cnkgICAgICAgICAgKnRhYmxlX2VudHJ5OwogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aGFuZGxlciIsICJQcm9jZXNzaW5nIHJlcXVlc3QgKCVkKVxuIiwgcmVxaW5mby0+bW9kZSkpOworCiAgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIFJlYWQtc3VwcG9ydCAoYWxzbyBjb3ZlcnMgR2V0TmV4dCByZXF1ZXN0cykKQEAgLTMyOCw3ICszMzIsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAogICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciopdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuKTsKICAgICAgICAgICAgIEBlbHNlQAogICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCkBAIC0zNjQsNyArMzY4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAodGFibGVfZW50cnkgPyBSU19BQ1RJVkUgOiBSU19OT05FWElTVEVOVCApKTsKICAgICAgICAgICAgIEBlbHNlQAogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACi0JICAgICAgICAvKiBvciBwb3NzaWJsYyAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLworCSAgICAgICAgLyogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZScgKi8KICAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKAogICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKICAgICAgICAgICAgIEBlbHNlQApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZiBiL2xvY2FsL21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYKaW5kZXggZGM3ZWFlMy4uOTBiODUwOCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuaXRlcmF0ZV9hY2Nlc3MuY29uZgorKysgYi9sb2NhbC9taWIyYy5pdGVyYXRlX2FjY2Vzcy5jb25mCkBAIC03NywxMSArNzcsMTMgQEAKIHZvaWQKIGluaXRpYWxpemVfdGFibGVfJGkodm9pZCkKIHsKLSAgICBzdGF0aWMgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKICAgICBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvICp0YWJsZV9pbmZvOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKm15X2hhbmRsZXI7CiAgICAgbmV0c25tcF9pdGVyYXRvcl9pbmZvICppaW5mbzsKIAorICAgIERFQlVHTVNHVEwoKCIke25hbWV9OmluaXQiLCAiaW5pdGlhbGl6aW5nIHRhYmxlICRpXG4iKSk7CisKICAgICAvKiogY3JlYXRlIHRoZSB0YWJsZSByZWdpc3RyYXRpb24gaW5mb3JtYXRpb24gc3RydWN0dXJlcyAqLwogICAgIHRhYmxlX2luZm8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8pOwogICAgIGlpbmZvID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2l0ZXJhdG9yX2luZm8pOwpAQCAtMTc3LDE0ICsxNzksMTQgQEAKIAogICAgIHZvaWQgKmRhdGFfY29udGV4dCA9IE5VTEw7CiAKLSAgICBvaWQgKnN1ZmZpeDsKLSAgICBzaXplX3Qgc3VmZml4X2xlbjsKLQogICAgIC8qKiBjb2x1bW4gYW5kIHJvdyBpbmRleCBlbmNvZGVkIHBvcnRpb24gKi8KLSAgICBzdWZmaXggPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lICsgcmVnaW5mby0+cm9vdG9pZF9sZW4gKyAxOwotICAgIHN1ZmZpeF9sZW4gPSByZXF1ZXN0cy0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aCAtCisgICAgY29uc3Qgb2lkICogY29uc3Qgc3VmZml4ID0KKyAgICAgICAgcmVxdWVzdHMtPnJlcXVlc3R2Yi0+bmFtZSArIHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMTsKKyAgICBjb25zdCBzaXplX3Qgc3VmZml4X2xlbiA9IHJlcXVlc3RzLT5yZXF1ZXN0dmItPm5hbWVfbGVuZ3RoIC0KICAgICAgICAgKHJlZ2luZm8tPnJvb3RvaWRfbGVuICsgMSk7CiAgICAgCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aGFuZGxlciIsICJQcm9jZXNzaW5nIHJlcXVlc3QgKCVkKVxuIiwgcmVxaW5mby0+bW9kZSkpOworCiAgICAgZm9yKHJlcXVlc3QgPSByZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdCA9IHJlcXVlc3QtPm5leHQpIHsKICAgICAgICAgdmFyID0gcmVxdWVzdC0+cmVxdWVzdHZiOwogICAgICAgICBpZiAocmVxdWVzdC0+cHJvY2Vzc2VkICE9IDApCkBAIC0yNDIsOCArMjQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gZ2V0XyRjKGRhdGFfY29udGV4dCwgJnJldHZhbF9sZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmV0dmFsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKHZhciwgJGMudHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1X2NoYXIgKikgcmV0dmFsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsX2xlbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHZhbF9sZW4pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5ub3RpZnkuY29uZiBiL2xvY2FsL21pYjJjLm5vdGlmeS5jb25mCmluZGV4IGQyMTE2MTkuLjZjMWViMWEgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLm5vdGlmeS5jb25mCisrKyBiL2xvY2FsL21pYjJjLm5vdGlmeS5jb25mCkBAIC0zMCwyMCArMzAsMjAgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgIiR7bmFtZX0uaCIKIAotc3RhdGljIG9pZCBzbm1wdHJhcF9vaWRbXSA9IHsxLCAzLCA2LCAxLCA2LCAzLCAxLCAxLCA0LCAxLCAwfTsKK3N0YXRpYyBjb25zdCBvaWQgc25tcHRyYXBfb2lkW10gPSB7MSwgMywgNiwgMSwgNiwgMywgMSwgMSwgNCwgMSwgMH07CiAKIEBmb3JlYWNoICRpIG5vdGlmaWNhdGlvbnNACiBpbnQKIHNlbmRfJHtpfV90cmFwKCB2b2lkICkKIHsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgICp2YXJfbGlzdCA9IE5VTEw7Ci0gICAgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7ICRpLmNvbW1hb2lkIH07CiAgICAgQGZvcmVhY2ggJHYgdmFyYmluZHNACiAgICAgQGlmICR2Lmlzc2NhbGFyQAotICAgIG9pZCAke3Z9X29pZFtdID0geyAkdi5jb21tYW9pZCwgMCB9OworICAgIGNvbnN0IG9pZCAke3Z9X29pZFtdID0geyAkdi5jb21tYW9pZCwgMCB9OwogICAgIEBlbmRACiAgICAgQGlmICEkdi5pc3NjYWxhckAKLSAgICBvaWQgJHt2fV9vaWRbXSA9IHsgJHYuY29tbWFvaWQsIC8qIGluc2VydCBpbmRleCBoZXJlICovIH07CisgICAgY29uc3Qgb2lkICR7dn1fb2lkW10gPSB7ICR2LmNvbW1hb2lkLCAvKiBpbnNlcnQgaW5kZXggaGVyZSAqLyB9OwogICAgIEBlbmRACiAgICAgQGVuZEAKIApkaWZmIC0tZ2l0IGEvbG9jYWwvbWliMmMub2xkLWFwaS5jb25mIGIvbG9jYWwvbWliMmMub2xkLWFwaS5jb25mCmluZGV4IDhkYWY4ZjEuLjhmYTI3MGIgMTAwNjQ0Ci0tLSBhL2xvY2FsL21pYjJjLm9sZC1hcGkuY29uZgorKysgYi9sb2NhbC9taWIyYy5vbGQtYXBpLmNvbmYKQEAgLTY5LDEwICs2OSwxMiBAQAogICAgIEBldmFsICRzdWZmaXhsZW4gPSAkaS5vaWRsZW5ndGggLSAkbmFtZS5vaWRsZW5ndGhACiAjZGVmaW5lICRpLnVjCQkkbWFnaWMKICAgICBAaWYgJGkuc2V0dGFibGVACi17JGkudWMsICAkaS50eXBlLCAgUldSSVRFLCAgdmFyXyR7bmFtZX0sICRzdWZmaXhsZW4sICB7ICRzdWZmaXggfX0sCit7JGkudWMsICAkaS50eXBlLCAgTkVUU05NUF9PTERBUElfUldSSVRFLAorIHZhcl8ke25hbWV9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4IH19LAogICAgIEBlbmRACiAgICAgQGlmICEkaS5zZXR0YWJsZUAKLXskaS51YywgICRpLnR5cGUsICBST05MWSAsICB2YXJfJHtuYW1lfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCB9fSwKK3skaS51YywgICRpLnR5cGUsICBORVRTTk1QX09MREFQSV9ST05MWSwKKyB2YXJfJHtuYW1lfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCB9fSwKICAgICBAZW5kQAogQGVuZEAKIApAQCAtOTEsMTAgKzkzLDEyIEBACiAgICAgQGV2YWwgJG1hZ2ljID0gJG1hZ2ljICsgMUAKICNkZWZpbmUgJGMudWMJCSRtYWdpYwogICAgIEBpZiAkYy5zZXR0YWJsZUAKLXskYy51YywgICRjLnR5cGUsICBSV1JJVEUsICB2YXJfJHtpfSwgJHN1ZmZpeGxlbiwgIHsgJHN1ZmZpeCAkY3RtcCAxLCAkYy5zdWJpZCB9fSwKK3skYy51YywgICRjLnR5cGUsICBORVRTTk1QX09MREFQSV9SV1JJVEUsCisgdmFyXyR7aX0sICRzdWZmaXhsZW4sICB7ICRzdWZmaXggJGN0bXAgMSwgJGMuc3ViaWQgfX0sCiAgICAgQGVuZEAKICAgICBAaWYgISRjLnNldHRhYmxlQAoteyRjLnVjLCAgJGMudHlwZSwgIFJPTkxZLCAgIHZhcl8ke2l9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4ICRjdG1wIDEsICRjLnN1YmlkIH19LAoreyRjLnVjLCAgJGMudHlwZSwgIE5FVFNOTVBfT0xEQVBJX1JPTkxZLAorIHZhcl8ke2l9LCAkc3VmZml4bGVuLCAgeyAkc3VmZml4ICRjdG1wIDEsICRjLnN1YmlkIH19LAogICAgIEBlbmRACiAgQGVuZEAKIEBlbmRACmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy5yYXctdGFibGUuY29uZiBiL2xvY2FsL21pYjJjLnJhdy10YWJsZS5jb25mCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNGQ0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9sb2NhbC9taWIyYy5yYXctdGFibGUuY29uZgpAQCAtMCwwICsxLDYxMiBAQAorIyMgLSotIGMgLSotCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIyBEbyB0aGUgLmggZmlsZQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworQG9wZW4gJHtuYW1lfS5oQAorLyoKKyAqIE5vdGU6IHRoaXMgZmlsZSBvcmlnaW5hbGx5IGF1dG8tZ2VuZXJhdGVkIGJ5IG1pYjJjIHVzaW5nCisgKiAgJElkOiBtaWIyYy5yYXctdGFibGUuY29uZiAxNzQzNiAyMDA5LTAzLTMxIDE1OjEyOjE5WiBkdHMxMiAkCisgKi8KKyNpZm5kZWYgJG5hbWUudWNfSAorI2RlZmluZSAkbmFtZS51Y19ICisKK3ZvaWQgaW5pdF8kbmFtZSh2b2lkKTsKKworI2VuZGlmIC8qICRuYW1lLnVjX0ggKi8KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIERvIHRoZSAuYyBmaWxlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitAb3BlbiAke25hbWV9LmNACisvKgorICogTm90ZTogdGhpcyBmaWxlIG9yaWdpbmFsbHkgYXV0by1nZW5lcmF0ZWQgYnkgbWliMmMgdXNpbmcKKyAqICAkSWQ6IG1pYjJjLnJhdy10YWJsZS5jb25mIDE3NDM2IDIwMDktMDMtMzEgMTU6MTI6MTlaIGR0czEyICQKKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9uZXQtc25tcC1hZ2VudC1pbmNsdWRlcy5oPgorI2luY2x1ZGUgIiR7bmFtZX0uaCIKKworQGZvcmVhY2ggJGkgdGFibGVACisgICMjIERldGVybWluZSB0aGUgZmlyc3QvbGFzdCBjb2x1bW4gbmFtZXMKKyAgQGV2YWwgJGZpcnN0X2NvbHVtbiA9ICItIkAKKyAgQGV2YWwgJGxhc3RfY29sdW1uID0gIi0iQAorICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgQGlmICRjLnJlYWRhYmxlQAorICAgICAgQGlmICIkZmlyc3RfY29sdW1uIiBlcSAiLSJACisgICAgICAgIEBldmFsICRmaXJzdF9jb2x1bW4gPSAkY0AKKyAgICAgIEBlbmRACisgICAgICBAZXZhbCAkbGFzdF9jb2x1bW4gPSAkY0AKKyAgICBAZW5kQAorICBAZW5kQAorCisvKiBjb2x1bW4gbnVtYmVyIGRlZmluaXRpb25zIGZvciB0YWJsZSAkaSAqLworICBAZm9yZWFjaCAkYyBjb2x1bW5ACisjZGVmaW5lIENPTFVNTl8kYy51YwkJJGMuc3ViaWQKKyAgQGVuZEAKKworICAgIC8qIFR5cGljYWwgZGF0YSBzdHJ1Y3R1cmUgZm9yIGEgcm93IGVudHJ5ICovCitzdHJ1Y3QgJHtpfV9lbnRyeSB7CisgICAgLyogSW5kZXggdmFsdWVzICovCisgICAgQGZvcmVhY2ggJGlkeCBpbmRleEAKKyAgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKKyAgICAkaWR4LmRlY2wgJGlkeFtOTk5dOworICAgIHNpemVfdCAke2lkeH1fbGVuOworICAgICBAZWxzZUAKKyAgICAkaWR4LmRlY2wgJGlkeDsKKyAgICAgQGVuZEAKKyAgICBAZW5kQAorCisgICAgLyogQ29sdW1uIHZhbHVlcyAqLworICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICBAaWYgJGMucmVhZGFibGVACisgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICRjLmRlY2wgJGNbTk5OXTsKKyAgICBzaXplX3QgJHtjfV9sZW47CisgICAgIEBlbHNlQAorICAgICRjLmRlY2wgJGM7CisgICAgIEBlbmRACisgICAgIEBpZiAkYy5zZXR0YWJsZUAKKyAgICAgIEBpZiAhJGMucm93c3RhdHVzQAorICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICRjLmRlY2wgb2xkXyRjW05OTl07CisgICAgc2l6ZV90IG9sZF8ke2N9X2xlbjsKKyAgICAgICBAZWxzZUAKKyAgICAkYy5kZWNsIG9sZF8kYzsKKyAgICAgICBAZW5kQAorICAgICAgQGVuZEAKKyAgICAgQGVuZEAKKyAgICBAZW5kQAorICAgIEBlbmRACisKKyAgICBpbnQgICB2YWxpZDsKK307CisKKy8qIGNyZWF0ZSBhIG5ldyByb3cgaW4gdGhlIHRhYmxlICovCitzdGF0aWMgc3RydWN0ICR7aX1fZW50cnkgKgorJHtpfV9jcmVhdGVFbnRyeSggaW50IGR1bW15CisgIEBmb3JlYWNoICRpZHggaW5kZXhACisgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICAgLCAkaWR4LmRlY2wqICRpZHgKKyAgICAgICAgICAgICAgICAgLCBzaXplX3QgJHtpZHh9X2xlbgorICAgIEBlbHNlQAorICAgICAgICAgICAgICAgICAsICRpZHguZGVjbCAgJGlkeAorICAgIEBlbmRACisgIEBlbmRACisgICAgICAgICAgICAgICAgKSB7CisgICAgc3RydWN0ICR7aX1fZW50cnkgKmVudHJ5OworCisgICAgZW50cnkgPSBTTk1QX01BTExPQ19UWVBFREVGKHN0cnVjdCAke2l9X2VudHJ5KTsKKyAgICBpZiAoIWVudHJ5KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFhYWCAtIGluc2VydCBlbnRyeSBpbnRvIGxvY2FsIGRhdGEgc3RydWN0dXJlICovCisgICAgcmV0dXJuIGVudHJ5OworfQorCisvKiByZW1vdmUgYSByb3cgZnJvbSB0aGUgdGFibGUgKi8KK3N0YXRpYyB2b2lkCiske2l9X3JlbW92ZUVudHJ5KHN0cnVjdCAke2l9X2VudHJ5ICplbnRyeSkgeworICAgIGlmICghZW50cnkpCisgICAgICAgIHJldHVybjsgICAgLyogTm90aGluZyB0byByZW1vdmUgKi8KKworICAgIC8qIFhYWCAtIHJlbW92ZSBlbnRyeSBmcm9tIGxvY2FsIGRhdGEgc3RydWN0dXJlICovCisKKyAgICBpZiAoZW50cnkpCisgICAgICAgIFNOTVBfRlJFRSggZW50cnkgKTsgICAvKiBYWFggLSByZWxlYXNlIGFueSBvdGhlciBpbnRlcm5hbCByZXNvdXJjZXMgKi8KK30KKworCisvKiogZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSByb3cgZm9yIGFuIGV4YWN0IHJlcXVlc3QgKi8KK3N0YXRpYyBzdHJ1Y3QgJHtpfV9lbnRyeSAqCiske2l9X2dldF9lbnRyeSggbmV0c25tcF92YXJpYWJsZV9saXN0ICppbmRleGVzICkgeworICAgIHN0cnVjdCAke2l9X2VudHJ5ICpyb3cgPSBOVUxMOworCisgICAgLyogWFhYIC0gVXNlIHRoZSAnaW5kZXhlcycgcGFyYW1ldGVyIHRvIHJldHJpZXZlIHRoZSBkYXRhCisgICAgICAgc3RydWN0dXJlIGZvciB0aGUgcmVxdWVzdGVkIHJvdywgYW5kIHJldHVybiB0aGlzLiAqLworICAgIHJldHVybiByb3c7Cit9CisKKy8qKiBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHJvdyBmb3IgYW4gZnV6enkgcmVxdWVzdCAqLworc3RhdGljIHN0cnVjdCAke2l9X2VudHJ5ICoKKyR7aX1fZ2V0X25leHRfZW50cnkoIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gKnJlZ2luZm8sCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAgICAgICAgICpyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sdW1uLAorICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICAgICAgICAqaW5kZXhlcyApIHsKKyAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAqcm93ID0gTlVMTDsKKyAgICBvaWQgICAgICAgICAgICAgYnVpbGRfc3BhY2VbTUFYX09JRF9MRU5dOworICAgIHNpemVfdCAgICAgICAgICBidWlsZF9zcGFjZV9sZW4gPSAwOworICAgIHNpemVfdCAgICAgICAgICBpbmRleF9vaWRfbGVuID0gMDsKKworICAgIC8qIFhYWCAtIFVzZSB0aGUgJ2luZGV4ZXMnIHBhcmFtZXRlciB0byBpZGVudGlmeSB0aGUKKyAgICAgICAgICAgICBuZXh0IHJvdyBpbiB0aGUgdGFibGUuLi4uICovCisKKyAgICAvKiBYWFggICAuLi4uIHVwZGF0ZSB0aGUgJ2luZGV4ZXMnIHBhcmFtZXRlciB3aXRoIHRoZQorICAgICAgICAgICAgIGFwcHJvcHJpYXRlIGluZGV4IHZhbHVlcyAuLi4gKi8KKworICAgIC8qIC4uLiBhbmQgdXBkYXRlIHRoZSByZXF1ZXN0ZWQgT0lEIHRvIG1hdGNoIHRoaXMgaW5zdGFuY2UgKi8KKyAgICBtZW1jcHkoYnVpbGRfc3BhY2UsIHJlZ2luZm8tPnJvb3RvaWQsICAgLyogcmVnaXN0ZXJlZCBvaWQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2luZm8tPnJvb3RvaWRfbGVuICogc2l6ZW9mKG9pZCkpOworICAgIGJ1aWxkX3NwYWNlX2xlbiA9IHJlZ2luZm8tPnJvb3RvaWRfbGVuOworICAgIGJ1aWxkX3NwYWNlW2J1aWxkX3NwYWNlX2xlbisrXSA9IDE7ICAvKiBlbnRyeSAqLworICAgIGJ1aWxkX3NwYWNlW2J1aWxkX3NwYWNlX2xlbisrXSA9IGNvbHVtbjsgLyogY29sdW1uICovCisgICAgYnVpbGRfb2lkX25vYWxsb2MoYnVpbGRfc3BhY2UgKyBidWlsZF9zcGFjZV9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgTUFYX09JRF9MRU4gLSBidWlsZF9zcGFjZV9sZW4sICZpbmRleF9vaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIGluZGV4ZXMpOworICAgIHNubXBfc2V0X3Zhcl9vYmppZChyZXF1ZXN0LT5yZXF1ZXN0dmIsIGJ1aWxkX3NwYWNlLAorICAgICAgICAgICAgICAgICAgICAgICBidWlsZF9zcGFjZV9sZW4gKyBpbmRleF9vaWRfbGVuKTsKKworICAgIC8qICBGaW5hbGx5LCByZXR1cm4gdGhlIGRhdGEgc3RydWN0dXJlIGZvciB0aGlzIHJvdyAqLworICAgIHJldHVybiByb3c7Cit9CisKKworLyoqIGhhbmRsZXMgcmVxdWVzdHMgZm9yIHRoZSAkaSB0YWJsZSAqLworc3RhdGljIGludAorJHtpfV9oYW5kbGVyKAorICAgIG5ldHNubXBfbWliX2hhbmRsZXIgICAgICAgICAgICAgICAqaGFuZGxlciwKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICAgKnJlZ2luZm8sCisgICAgbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm8gICAgICAgICpyZXFpbmZvLAorICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICAgICAgICAqcmVxdWVzdHMpIHsKKworICAgIG5ldHNubXBfcmVxdWVzdF9pbmZvICAgICAgICpyZXF1ZXN0OworICAgIG5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvICp0YWJsZV9pbmZvOworICAgIHN0cnVjdCAke2l9X2VudHJ5ICAgICAgICAgICp0YWJsZV9lbnRyeTsKKyAgICBAaWYgJGkuc2V0dGFibGVACisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJldDsKKyAgICBAZW5kQAorCisgICAgc3dpdGNoIChyZXFpbmZvLT5tb2RlKSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFJlYWQtc3VwcG9ydAorICAgICAgICAgKi8KKyAgICBjYXNlIE1PREVfR0VUOgorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMucmVhZGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgICAgICBpZiAoICF0YWJsZV9lbnRyeSApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvcihyZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNISU5TVEFOQ0UpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbik7CisgICAgICAgICAgICBAZWxzZUAKKyAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfaW50ZWdlciggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMpOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX05PU1VDSE9CSkVDVCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfR0VUTkVYVDoKKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X25leHRfZW50cnkoIHJlZ2luZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2luZm8tPmNvbG51bSwgdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5yZWFkYWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIGlmICggIXRhYmxlX2VudHJ5ICkgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9OT1NVQ0hJTlNUQU5DRSk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggcmVxdWVzdC0+cmVxdWVzdHZiLCAkYy50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuKTsKKyAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyk7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IocmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfTk9TVUNIT0JKRUNUKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworQGlmICRpLnNldHRhYmxlQAorICAgICAgICAvKgorICAgICAgICAgKiBXcml0ZS1zdXBwb3J0CisgICAgICAgICAqLworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTE6CisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyggcmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICAgICAke2l9X2dldF9lbnRyeSggdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5zZXR0YWJsZUAKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3Jvd3N0YXR1cyhyZXF1ZXN0LT5yZXF1ZXN0dmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgKHRhYmxlX2VudHJ5ID8gUlNfQUNUSVZFIDogUlNfTk9ORVhJU1RFTlQgKSk7CisgICAgICAgICAgICBAZWxzZUAKKyAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorCSAgICAgICAgLyogb3IgcG9zc2libHkgJ25ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfc2l6ZScgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX21heF9zaXplKAorICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgIC8qIG9yIHBvc3NpYmx5ICduZXRzbm1wX2NoZWNrX3ZiX2ludF9yYW5nZScgKi8KKyAgICAgICAgICAgICAgICByZXQgPSBuZXRzbm1wX2NoZWNrX3ZiX2ludCggcmVxdWVzdC0+cmVxdWVzdHZiICk7CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBpZiAoIHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SICkgeworICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKCByZXFpbmZvLCByZXF1ZXN0LCByZXQgKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX05PRVJST1I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfTk9UV1JJVEFCTEUgKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgIGNhc2UgTU9ERV9TRVRfUkVTRVJWRTI6CitAaWYgJGkuY3JlYXRhYmxlQAorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyA9IG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworQGlmICRpLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5yb3dzdGF0dXNACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpyZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5pbnRlZ2VyKSB7CisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRHTzoKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFORFdBSVQ6CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gJHtpfV9jcmVhdGVFbnRyeSggMAorICBAZm9yZWFjaCAkaWR4IGluZGV4QAorICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACisgICAgICAgICAgICAgICAgICAgICAgICAsICB0YWJsZV9pbmZvLT5pbmRleGVzLT52YWwuc3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAsICB0YWJsZV9pbmZvLT5pbmRleGVzLT52YWxfbGVuCisgICAgQGVsc2VACisgICAgICAgICAgICAgICAgICAgICAgICAsICp0YWJsZV9pbmZvLT5pbmRleGVzLT52YWwuaW50ZWdlcgorICAgIEBlbmRACisgIEBlbmRACisgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgICAgICBpZiAoICF0YWJsZV9lbnRyeSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3IoIHJlcWluZm8sIHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0VSUl9SRVNPVVJDRVVOQVZBSUxBQkxFICk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU05NUF9FUlJfTk9FUlJPUjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorQGVsc2VACisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMuY3JlYXRhYmxlQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBpZiAoICF0YWJsZV9lbnRyeSApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnkgPSAke2l9X2NyZWF0ZUVudHJ5KCAwCisgIEBmb3JlYWNoICRpZHggaW5kZXhACisgICAgQGlmICRpZHgubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICAgICAgICAgICwgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5zdHJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICwgIHRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbF9sZW4KKyAgICBAZWxzZUAKKyAgICAgICAgICAgICAgICAgICAgICAgICwgKnRhYmxlX2luZm8tPmluZGV4ZXMtPnZhbC5pbnRlZ2VyCisgICAgQGVuZEAKKyAgQGVuZEAKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGlmICggIXRhYmxlX2VudHJ5ICkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9zZXRfcmVxdWVzdF9lcnJvciggcmVxaW5mbywgcmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorQGVuZEAKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0ZSRUU6CitAaWYgJGkuY3JlYXRhYmxlQAorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CitAaWYgJGkucm93c3RhdHVzQAorICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFOREdPOgorICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5EV0FJVDoKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhYmxlX2VudHJ5ICYmICF0YWJsZV9lbnRyeS0+dmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICR7aX1fcmVtb3ZlRW50cnkodGFibGVfZW50cnkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACitAZWxzZUAKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5jcmVhdGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGlmICggdGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorQGVuZEAKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0FDVElPTjoKKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnNldHRhYmxlQAorICAgICAgICAgICAgQGlmICEkYy5yb3dzdGF0dXNACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICBtZW1jcHkoIHRhYmxlX2VudHJ5LT5vbGRfJGMsCisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8ke2N9X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW47CisgICAgICAgICAgICAgICAgbWVtc2V0KCB0YWJsZV9lbnRyeS0+JGMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgbWVtY3B5KCB0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW4pOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LT5yZXF1ZXN0dmItPnZhbF9sZW47CisgICAgICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYyA9IHRhYmxlX2VudHJ5LT4kYzsKKyAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgICAgID0gKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXI7CisgICAgICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorQGlmICRpLnJvd3N0YXR1c0AKKyAgICAgICAgLyogQ2hlY2sgdGhlIGludGVybmFsIGNvbnNpc3RlbmN5IG9mIGFuIGFjdGl2ZSByb3cgKi8KKyAgICAgICAgZm9yIChyZXF1ZXN0PXJlcXVlc3RzOyByZXF1ZXN0OyByZXF1ZXN0PXJlcXVlc3QtPm5leHQpIHsKKyAgICAgICAgICAgIHRhYmxlX2luZm8gID0gICAgIG5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvKCByZXF1ZXN0KTsKKyAgICAgICAgICAgIHRhYmxlX2VudHJ5ID0gICAgICR7aX1fZ2V0X2VudHJ5KCB0YWJsZV9pbmZvLT5pbmRleGVzICk7CisgICAgCisgICAgICAgICAgICBzd2l0Y2ggKHRhYmxlX2luZm8tPmNvbG51bSkgeworICAgICAgICAgICAgQGZvcmVhY2ggJGMgY29sdW1uQAorICAgICAgICAgICAgQGlmICRjLnJvd3N0YXR1c0AKKyAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgorICAgICAgICAgICAgICAgIHN3aXRjaCAoKnJlcXVlc3QtPnJlcXVlc3R2Yi0+dmFsLmludGVnZXIpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0FDVElWRToKKyAgICAgICAgICAgICAgICBjYXNlIFJTX0NSRUFURUFOREdPOgorICAgICAgICAgICAgICAgICAgICBpZiAoLyogWFhYICovKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yKCByZXFpbmZvLCByZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU05NUF9FUlJfSU5DT05TSVNURU5UVkFMVUUgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICB9CisgICAgICAgIH0KK0BlbmRACisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBNT0RFX1NFVF9VTkRPOgorICAgICAgICBmb3IgKHJlcXVlc3Q9cmVxdWVzdHM7IHJlcXVlc3Q7IHJlcXVlc3Q9cmVxdWVzdC0+bmV4dCkgeworICAgICAgICAgICAgdGFibGVfaW5mbyAgPSAgICAgbmV0c25tcF9leHRyYWN0X3RhYmxlX2luZm8oIHJlcXVlc3QpOworICAgICAgICAgICAgdGFibGVfZW50cnkgPSAgICAgJHtpfV9nZXRfZW50cnkoIHRhYmxlX2luZm8tPmluZGV4ZXMgKTsKKyAgICAKKyAgICAgICAgICAgIHN3aXRjaCAodGFibGVfaW5mby0+Y29sbnVtKSB7CisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMuc2V0dGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKK0BpZiAkaS5yb3dzdGF0dXNACisgIEBpZiAkYy5yb3dzdGF0dXNACisgICAgICAgICAgICAgICAgc3dpdGNoICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikgeworICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5ER086CisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRXQUlUOgorICAgICAgICAgICAgICAgICAgICBpZiAodGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgIEBlbHNlQAorICAgICAgICAgICAgICAgIEBpZiAkYy5uZWVkbGVuZ3RoQAorICAgICAgICAgICAgICAgIG1lbWNweSggdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZih0YWJsZV9lbnRyeS0+JGMpKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQoIHRhYmxlX2VudHJ5LT5vbGRfJGMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiR7Y31fbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJHtjfV9sZW47CisgICAgICAgICAgICAgICAgQGVsc2VACisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjICAgICA9IHRhYmxlX2VudHJ5LT5vbGRfJGM7CisgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYyA9IDA7CisgICAgICAgICAgICAgICAgQGVuZEAKKyAgQGVuZEAKK0BlbHNlQAorICBAaWYgJGMuY3JlYXRhYmxlQAorICAgICAgICAgICAgICAgIGlmICggdGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACisgICAgICAgICAgICAgICAgICAgIG1lbWNweSggdGFibGVfZW50cnktPiRjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQoIHRhYmxlX2VudHJ5LT5vbGRfJGMsIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4gPQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJHtjfV9sZW47CisgICAgICAgICAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgICAgID0gdGFibGVfZW50cnktPm9sZF8kYzsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPm9sZF8kYyA9IDA7CisgICAgICAgICAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICAgICAgfQorICBAZWxzZUAKKyAgICAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKKyAgICAgICAgICAgICAgICBtZW1jcHkoIHRhYmxlX2VudHJ5LT4kYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJGMsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YodGFibGVfZW50cnktPiRjKSk7CisgICAgICAgICAgICAgICAgbWVtc2V0KCB0YWJsZV9lbnRyeS0+b2xkXyRjLCAwLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4ke2N9X2xlbiA9CisgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+b2xkXyR7Y31fbGVuOworICAgICAgICAgICAgICAgIEBlbHNlQAorICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT4kYyAgICAgPSB0YWJsZV9lbnRyeS0+b2xkXyRjOworICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT5vbGRfJGMgPSAwOworICAgICAgICAgICAgICAgIEBlbmRACisgIEBlbmRACitAZW5kQAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIE1PREVfU0VUX0NPTU1JVDoKK0BpZiAkaS5jcmVhdGFibGVACisgICAgICAgIGZvciAocmVxdWVzdD1yZXF1ZXN0czsgcmVxdWVzdDsgcmVxdWVzdD1yZXF1ZXN0LT5uZXh0KSB7CisgICAgICAgICAgICB0YWJsZV9pbmZvICA9ICAgICBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyggICAgcmVxdWVzdCk7CisgICAgICAgICAgICB0YWJsZV9lbnRyeSA9ICAgICAke2l9X2dldF9lbnRyeSggdGFibGVfaW5mby0+aW5kZXhlcyApOworICAgIAorICAgICAgICAgICAgc3dpdGNoICh0YWJsZV9pbmZvLT5jb2xudW0pIHsKK0BpZiAkaS5yb3dzdGF0dXNACisgICAgICAgICAgICBAZm9yZWFjaCAkYyBjb2x1bW5ACisgICAgICAgICAgICBAaWYgJGMucm93c3RhdHVzQAorICAgICAgICAgICAgY2FzZSBDT0xVTU5fJGMudWM6CisgICAgICAgICAgICAgICAgc3dpdGNoICgqcmVxdWVzdC0+cmVxdWVzdHZiLT52YWwuaW50ZWdlcikgeworICAgICAgICAgICAgICAgIGNhc2UgUlNfQ1JFQVRFQU5ER086CisgICAgICAgICAgICAgICAgICAgIHRhYmxlX2VudHJ5LT52YWxpZCA9IDE7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhbGwtdGhyb3VnaCAqLworICAgICAgICAgICAgICAgIGNhc2UgUlNfQUNUSVZFOgorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMgPSBSU19BQ1RJVkU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgY2FzZSBSU19DUkVBVEVBTkRXQUlUOgorICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+dmFsaWQgPSAxOworICAgICAgICAgICAgICAgICAgICAvKiBGYWxsLXRocm91Z2ggKi8KKyAgICAgICAgICAgICAgICBjYXNlIFJTX05PVElOU0VSVklDRToKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPiRjID0gUlNfTk9USU5TRVJWSUNFOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIGNhc2UgUlNfREVTVFJPWToKKyAgICAgICAgICAgICAgICAgICAgJHtpfV9yZW1vdmVFbnRyeSh0YWJsZV9lbnRyeSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgQGVuZEAKKyAgICAgICAgICAgIEBlbmRACitAZWxzZUAKKyAgICAgICAgICAgIEBmb3JlYWNoICRjIGNvbHVtbkAKKyAgICAgICAgICAgIEBpZiAkYy5jcmVhdGFibGVACisgICAgICAgICAgICBjYXNlIENPTFVNTl8kYy51YzoKKyAgICAgICAgICAgIEBlbmRACisgICAgICAgICAgICBAZW5kQAorICAgICAgICAgICAgICAgIGlmICggdGFibGVfZW50cnkgJiYgIXRhYmxlX2VudHJ5LT52YWxpZCApIHsKKyAgICAgICAgICAgICAgICAgICAgdGFibGVfZW50cnktPnZhbGlkID0gMTsKKyAgICAgICAgICAgICAgICB9CitAZW5kQAorICAgICAgICAgICAgfQorICAgICAgICB9CitAZW5kQAorICAgICAgICBicmVhazsKK0BlbmRACisgICAgfQorICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOworfQorCisvKiogSW5pdGlhbGl6ZSB0aGUgJGkgdGFibGUgYnkgZGVmaW5pbmcgaXRzIGNvbnRlbnRzIGFuZCBob3cgaXQncyBzdHJ1Y3R1cmVkICovCitzdGF0aWMgdm9pZAoraW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQoreworICAgIGNvbnN0IG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKKyAgICBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICAgICpyZWc7CisgICAgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyAqdGFibGVfaW5mbzsKKworICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAorICAgICAgICAgICAgICAiJGkiLCAgICAgJHtpfV9oYW5kbGVyLAorICAgICAgICAgICAgICAke2l9X29pZCwgT0lEX0xFTkdUSCgke2l9X29pZCksCitAaWYgJGkuc2V0dGFibGVACisgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JXUklURQorQGVsc2VACisgICAgICAgICAgICAgIEhBTkRMRVJfQ0FOX1JPTkxZCitAZW5kQAorICAgICAgICAgICAgICApOworCisgICAgdGFibGVfaW5mbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYoIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKTsKKyAgICBuZXRzbm1wX3RhYmxlX2hlbHBlcl9hZGRfaW5kZXhlcyh0YWJsZV9pbmZvLAorICAgIEBmb3JlYWNoICRpZHggaW5kZXhACisgICAgICAgICAgICAgICAgICAgICAgICAgICAkaWR4LnR5cGUsICAvKiBpbmRleDogJGlkeCAqLworICAgIEBlbmRACisgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKKworICAgIHRhYmxlX2luZm8tPm1pbl9jb2x1bW4gPSBDT0xVTU5fJGZpcnN0X2NvbHVtbi51YzsKKyAgICB0YWJsZV9pbmZvLT5tYXhfY29sdW1uID0gQ09MVU1OXyRsYXN0X2NvbHVtbi51YzsKKworICAgIG5ldHNubXBfcmVnaXN0ZXJfdGFibGUoIHJlZywgdGFibGVfaW5mbyApOworCisgICAgLyogSW5pdGlhbGlzZSB0aGUgY29udGVudHMgb2YgdGhlIHRhYmxlIGhlcmUgKi8KK30KKworQGVuZEAKKy8qKiBJbml0aWFsaXplcyB0aGUgJG5hbWUgbW9kdWxlICovCit2b2lkCitpbml0XyRuYW1lKHZvaWQpCit7CisgIC8qIGhlcmUgd2UgaW5pdGlhbGl6ZSBhbGwgdGhlIHRhYmxlcyB3ZSdyZSBwbGFubmluZyBvbiBzdXBwb3J0aW5nICovCisgIEBmb3JlYWNoICRpIHRhYmxlQAorICAgIGluaXRpYWxpemVfdGFibGVfJGkoKTsKKyAgQGVuZEAKK30KZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLnJvdy5jb25mIGIvbG9jYWwvbWliMmMucm93LmNvbmYKaW5kZXggNDY2MTVjMC4uZjczNmJhYSAxMDA3NTUKLS0tIGEvbG9jYWwvbWliMmMucm93LmNvbmYKKysrIGIvbG9jYWwvbWliMmMucm93LmNvbmYKQEAgLTExNywxNiArMTE3LDE3IEBACiB2b2lkCiBpbml0aWFsaXplX3RhYmxlXyRpKHZvaWQpCiB7Ci0gICAgc3RhdGljIG9pZCAke2l9X29pZFtdID0geyRpLmNvbW1hb2lkfTsKLSAgICBzaXplX3QgJHtpfV9vaWRfbGVuICAgPSBPSURfTEVOR1RIKCR7aX1fb2lkKTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07CiAgICAgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiAgICAqcmVnOwogICAgIHN0cnVjdCAke2l9X2VudHJ5ICAgICAgICAgICAgICAgKnJvdzsKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgICAgICAgICAgICppZHhzOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTppbml0IiwgImluaXRpYWxpemluZyB0YWJsZSAkaVxuIikpOworCiAgICAgcmVnID0gbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb24oCiAgICAgICAgICAgICAgICIkaSIsICAgICAke2l9X2hhbmRsZXIsCi0gICAgICAgICAgICAgICR7aX1fb2lkLCAke2l9X29pZF9sZW4sCisgICAgICAgICAgICAgICR7aX1fb2lkLCBPSURfTEVOR1RIKCR7aX1fb2lkKSwKIEBpZiAkaS5zZXR0YWJsZUAKICAgICAgICAgICAgICAgSEFORExFUl9DQU5fUldSSVRFCiBAZWxzZUAKQEAgLTIxMiwxMCArMjEzLDkgQEAKICAgICB2MiA9IHYyLT5uZXh0X3ZhcmlhYmxlOwogICAgQGVuZEAKICAgIEBpZiAkaWR4Lm5lZWRsZW5ndGhACi0gICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCB2MiwgJGlkeC50eXBlLCAodV9jaGFyKilyb3ctPiRpZHgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3ctPiR7aWR4fV9sZW4pOworICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggdjIsICRpZHgudHlwZSwgcm93LT4kaWR4LCByb3ctPiR7aWR4fV9sZW4pOwogICAgQGVsc2VACi0gICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHYyLCAkaWR4LnR5cGUsICh1X2NoYXIqKXJvdy0+JGlkeCk7CisgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHYyLCAkaWR4LnR5cGUsIHJvdy0+JGlkeCk7CiAgICBAZW5kQAogICAgQGV2YWwgJGZpcnN0PTBACiAgIEBlbmRACkBAIC0yMzcsNiArMjM3LDggQEAKICAgICBzdHJ1Y3QgJHtpfV9lbnRyeSAgICAgICAgICAqdGFibGVfZW50cnk7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIHJldDsKIAorICAgIERFQlVHTVNHVEwoKCIke25hbWV9OmhhbmRsZXIiLCAiUHJvY2Vzc2luZyByZXF1ZXN0ICglZClcbiIsIHJlcWluZm8tPm1vZGUpKTsKKwogICAgIHN3aXRjaCAocmVxaW5mby0+bW9kZSkgewogICAgICAgICAvKgogICAgICAgICAgKiBSZWFkLXN1cHBvcnQgKGFsc28gY292ZXJzIEdldE5leHQgcmVxdWVzdHMpCkBAIC0yNTIsNyArMjU0LDcgQEAKICAgICAgICAgICAgIGNhc2UgQ09MVU1OXyRjLnVjOgogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKil0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKZGlmZiAtLWdpdCBhL2xvY2FsL21pYjJjLnNjYWxhci5jb25mIGIvbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYKaW5kZXggNDM4MzYxYi4uMzAyNGZhNCAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYKKysrIGIvbG9jYWwvbWliMmMuc2NhbGFyLmNvbmYKQEAgLTM2LDcgKzM2LDcgQEAKIGluaXRfJG5hbWUodm9pZCkKIHsKICAgQGZvcmVhY2ggJGkgc2NhbGFyQAotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKKyAgICBjb25zdCBvaWQgJHtpfV9vaWRbXSA9IHsgJGkuY29tbWFvaWQgfTsKICAgQGVuZEAKIAogICBERUJVR01TR1RMKCgiJG5hbWUiLCAiSW5pdGlhbGl6aW5nXG4iKSk7CkBAIC03NSw3ICs3NSw3IEBACiAKICAgICAgICAgY2FzZSBNT0RFX0dFVDoKICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0cy0+cmVxdWVzdHZiLCAkaS50eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgLyogWFhYOiBhIHBvaW50ZXIgdG8gdGhlIHNjYWxhcidzIGRhdGEgKi8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYOiBhIHBvaW50ZXIgdG8gdGhlIHNjYWxhcidzIGRhdGEgKi8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogWFhYOiB0aGUgbGVuZ3RoIG9mIHRoZSBkYXRhIGluIGJ5dGVzICovKTsKICAgICAgICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9sb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmYgYi9sb2NhbC9taWIyYy50YWJsZV9kYXRhLmNvbmYKaW5kZXggZWRmZjA2Yy4uNzc1YzAyMSAxMDA2NDQKLS0tIGEvbG9jYWwvbWliMmMudGFibGVfZGF0YS5jb25mCisrKyBiL2xvY2FsL21pYjJjLnRhYmxlX2RhdGEuY29uZgpAQCAtNzAsOCArNzAsOCBAQAogdm9pZAogaW5pdGlhbGl6ZV90YWJsZV8kaSh2b2lkKQogewotICAgIHN0YXRpYyBvaWQgJHtpfV9vaWRbXSA9IHskaS5jb21tYW9pZH07Ci0gICAgc2l6ZV90ICR7aX1fb2lkX2xlbiAgID0gT0lEX0xFTkdUSCgke2l9X29pZCk7CisgICAgY29uc3Qgb2lkICR7aX1fb2lkW10gPSB7JGkuY29tbWFvaWR9OworICAgIGNvbnN0IHNpemVfdCAke2l9X29pZF9sZW4gICA9IE9JRF9MRU5HVEgoJHtpfV9vaWQpOwogICAgIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gICAgKnJlZzsKICAgICBuZXRzbm1wX3RkYXRhICAgICAgICAgICAgICAgICAgICp0YWJsZV9kYXRhOwogICAgIG5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKnRhYmxlX2luZm87CkBAIC03OSw2ICs3OSw4IEBACiAgICAgbmV0c25tcF9jYWNoZSAgICAgICAgICAgICAgICAgICAqY2FjaGU7CiBAZW5kQAogCisgICAgREVCVUdNU0dUTCgoIiR7bmFtZX06aW5pdCIsICJpbml0aWFsaXppbmcgdGFibGUgJGlcbiIpKTsKKwogICAgIHJlZyA9IG5ldHNubXBfY3JlYXRlX2hhbmRsZXJfcmVnaXN0cmF0aW9uKAogICAgICAgICAgICAgICAiJGkiLCAgICAgJHtpfV9oYW5kbGVyLAogICAgICAgICAgICAgICAke2l9X29pZCwgJHtpfV9vaWRfbGVuLApAQCAtMjg1LDYgKzI4Nyw4IEBACiAgICAgc3RydWN0ICR7aX1fZW50cnkgICAgICAgICAgKnRhYmxlX2VudHJ5OwogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICByZXQ7CiAKKyAgICBERUJVR01TR1RMKCgiJHtuYW1lfTpoYW5kbGVyIiwgIlByb2Nlc3NpbmcgcmVxdWVzdCAoJWQpXG4iLCByZXFpbmZvLT5tb2RlKSk7CisKICAgICBzd2l0Y2ggKHJlcWluZm8tPm1vZGUpIHsKICAgICAgICAgLyoKICAgICAgICAgICogUmVhZC1zdXBwb3J0IChhbHNvIGNvdmVycyBHZXROZXh0IHJlcXVlc3RzKQpAQCAtMzA5LDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgQGlmICRjLm5lZWRsZW5ndGhACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlKCByZXF1ZXN0LT5yZXF1ZXN0dmIsICRjLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKil0YWJsZV9lbnRyeS0+JGMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JGMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZV9lbnRyeS0+JHtjfV9sZW4pOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICAgICAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwKQEAgLTM0OCw3ICszNTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICh0YWJsZV9lbnRyeSA/IFJTX0FDVElWRSA6IFJTX05PTkVYSVNURU5UICkpOwogICAgICAgICAgICAgQGVsc2VACiAgICAgICAgICAgICBAaWYgJGMubmVlZGxlbmd0aEAKLQkgICAgICAgIC8qIG9yIHBvc3NpYmxjICduZXRzbm1wX2NoZWNrX3ZiX3R5cGVfYW5kX3NpemUnICovCisJICAgICAgICAvKiBvciBwb3NzaWJseSAnbmV0c25tcF9jaGVja192Yl90eXBlX2FuZF9zaXplJyAqLwogICAgICAgICAgICAgICAgIHJldCA9IG5ldHNubXBfY2hlY2tfdmJfdHlwZV9hbmRfbWF4X3NpemUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2YiwgJGMudHlwZSwgc2l6ZW9mKHRhYmxlX2VudHJ5LT4kYykpOwogICAgICAgICAgICAgQGVsc2VACmRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCAyN2Q0OThhLi5iMzZjNGFkCi0tLSBhL2x0bWFpbi5zaAorKysgYi9sdG1haW4uc2gKQEAgLTEsNTIgKzEsODMgQEAKLSMgbHRtYWluLnNoIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCi0jIE5PVEU6IENoYW5naW5nIHRoaXMgZmlsZSB3aWxsIG5vdCBhZmZlY3QgYW55dGhpbmcgdW50aWwgeW91IHJlcnVuIGNvbmZpZ3VyZS4KLSMKLSMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAotIyAyMDA3LCAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSMKLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCisKKyMgbHRtYWluLnNoIChHTlUgbGlidG9vbCkgMi4yLjYKKyMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKKworIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsIDIwMDcgMjAwOCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisKKyMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQogIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQogIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgogIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyBpZiB5b3UgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gb3IgbGlicmFyeSB0aGF0CisjIGlzIGJ1aWx0IHVzaW5nIEdOVSBMaWJ0b29sLCB5b3UgbWF5IGluY2x1ZGUgdGhpcyBmaWxlIHVuZGVyIHRoZQorIyBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyMKKyMgR05VIExpYnRvb2wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0CiAjIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogIwogIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotIyBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCBHTlUgTGlidG9vbDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIGEgY29weQorIyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCwKKyMgb3Igb2J0YWluZWQgYnkgd3JpdGluZyB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAorIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKworIyBVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIFtNT0RFLUFSR10uLi4KICMKLSMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQotIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSB0aGF0IGNvbnRhaW5zIGEKLSMgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB5b3UgbWF5IGluY2x1ZGUgaXQgdW5kZXIKLSMgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIHRoYXQgeW91IHVzZSBmb3IgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotCi1iYXNlbmFtZT0icyxeLiovLCxnIgotCi0jIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKLSMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCi0jIHRoZSBfWFBHIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBlcXVhbCB0byAxIChvbmUpLCB0aGUgc3BlY2lhbAotIyBwb3NpdGlvbmFsIHBhcmFtZXRlciAkMCwgd2l0aGluIGEgZnVuY3Rpb24gY2FsbCwgaXMgdGhlIG5hbWUgb2YgdGhlCi0jIGZ1bmN0aW9uLgotcHJvZ3BhdGg9IiQwIgotCi0jIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbToKLXByb2duYW1lPWBlY2hvICIkcHJvZ3BhdGgiIHwgJFNFRCAkYmFzZW5hbWVgCi1tb2RlbmFtZT0iJHByb2duYW1lIgotCi0jIEdsb2JhbCB2YXJpYWJsZXM6Ci1FWElUX1NVQ0NFU1M9MAotRVhJVF9GQUlMVVJFPTEKKyMgUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCisjCisjICAgICAtLWNvbmZpZyAgICAgICAgICAgICBzaG93IGFsbCBjb25maWd1cmF0aW9uIHZhcmlhYmxlcworIyAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworIyAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKKyMgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAorIyAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKyMgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyMgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyMgICAgIC0tdGFnPVRBRyAgICAgICAgICAgIHVzZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmcm9tIHRhZyBUQUcKKyMgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCisjICAgICAtLXZlcnNpb24gICAgICAgICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uCisjIC1oLCAtLWhlbHAgICAgICAgICAgICAgICBwcmludCBzaG9ydCBvciBsb25nIGhlbHAgbWVzc2FnZQorIworIyBNT0RFIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisjCisjICAgICAgIGNsZWFuICAgICAgICAgICAgICByZW1vdmUgZmlsZXMgZnJvbSB0aGUgYnVpbGQgZGlyZWN0b3J5CisjICAgICAgIGNvbXBpbGUgICAgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0CisjICAgICAgIGV4ZWN1dGUgICAgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorIyAgICAgICBmaW5pc2ggICAgICAgICAgICAgY29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcworIyAgICAgICBpbnN0YWxsICAgICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKKyMgICAgICAgbGluayAgICAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorIyAgICAgICB1bmluc3RhbGwgICAgICAgICAgcmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxlZCBkaXJlY3RvcnkKKyMKKyMgTU9ERS1BUkdTIHZhcnkgZGVwZW5kaW5nIG9uIHRoZSBNT0RFLgorIyBUcnkgYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KKyMKKyMgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCisjIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKKyMKKyMgICAgICAgaG9zdC10cmlwbGV0OgkkaG9zdAorIyAgICAgICBzaGVsbDoJCSRTSEVMTAorIyAgICAgICBjb21waWxlcjoJCSRMVENDCisjICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCisjICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCisjICAgICAgICRwcm9nbmFtZToJCShHTlUgbGlidG9vbCkgMi4yLjYKKyMgICAgICAgYXV0b21ha2U6CQkkYXV0b21ha2VfdmVyc2lvbgorIyAgICAgICBhdXRvY29uZjoJCSRhdXRvY29uZl92ZXJzaW9uCisjCisjIFJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4KIAogUFJPR1JBTT1sdG1haW4uc2gKIFBBQ0tBR0U9bGlidG9vbAotVkVSU0lPTj0xLjUuMjYKLVRJTUVTVEFNUD0iICgxLjEyMjAuMi40OTIgMjAwOC8wMS8zMCAwNjo0MDo1NikiCitWRVJTSU9OPTIuMi42CitUSU1FU1RBTVA9IiIKK3BhY2thZ2VfcmV2aXNpb249MS4zMDEyCiAKLSMgQmUgQm91cm5lIGNvbXBhdGlibGUgKHRha2VuIGZyb20gQXV0b2NvbmY6X0FTX0JPVVJORV9DT01QQVRJQkxFKS4KKyMgQmUgQm91cm5lIGNvbXBhdGlibGUKIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBlbXVsYXRlIHNoCiAgIE5VTExDTUQ9OgpAQCAtNjAsMTggKzkxLDQ4MyBAQAogQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKIERVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKIAotIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRlY2hvLgorIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KKyMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCisjIFRoZXNlIG11c3Qgbm90IGJlIHNldCB1bmNvbmRpdGlvbmFsbHkgYmVjYXVzZSBub3QgYWxsIHN5c3RlbXMgdW5kZXJzdGFuZAorIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgorbHRfdXNlcl9sb2NhbGU9CitsdF9zYWZlX2xvY2FsZT0KK2ZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUworZG8KKyAgZXZhbCAiaWYgdGVzdCBcIlwkeyRsdF92YXIrc2V0fVwiID0gc2V0OyB0aGVuCisgICAgICAgICAgc2F2ZV8kbHRfdmFyPVwkJGx0X3ZhcgorICAgICAgICAgICRsdF92YXI9QworCSAgZXhwb3J0ICRsdF92YXIKKwkgIGx0X3VzZXJfbG9jYWxlPVwiJGx0X3Zhcj1cXFwkc2F2ZV9cJGx0X3ZhcjsgXCRsdF91c2VyX2xvY2FsZVwiCisJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCisJZmkiCitkb25lCisKKyRsdF91bnNldCBDRFBBVEgKKworCisKKworCis6ICR7Q1A9ImNwIC1mIn0KKzogJHtFQ0hPPSJlY2hvIn0KKzogJHtFR1JFUD0iL3Vzci9iaW4vZ3JlcCAtRSJ9Cis6ICR7RkdSRVA9Ii91c3IvYmluL2dyZXAgLUYifQorOiAke0dSRVA9Ii91c3IvYmluL2dyZXAifQorOiAke0xOX1M9ImxuIC1zIn0KKzogJHtNQUtFPSJtYWtlIn0KKzogJHtNS0RJUj0ibWtkaXIifQorOiAke01WPSJtdiAtZiJ9Cis6ICR7Uk09InJtIC1mIn0KKzogJHtTRUQ9Ii9vcHQvbG9jYWwvYmluL2dzZWQifQorOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9Cis6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KKworIyBHbG9iYWwgdmFyaWFibGVzOgorRVhJVF9TVUNDRVNTPTAKK0VYSVRfRkFJTFVSRT0xCitFWElUX01JU01BVENIPTYzICAjICQ/ID0gNjMgaXMgdXNlZCB0byBpbmRpY2F0ZSB2ZXJzaW9uIG1pc21hdGNoIHRvIG1pc3NpbmcuCitFWElUX1NLSVA9NzcJICAjICQ/ID0gNzcgaXMgdXNlZCB0byBpbmRpY2F0ZSBhIHNraXBwZWQgdGVzdCB0byBhdXRvbWFrZS4KKworZXhpdF9zdGF0dXM9JEVYSVRfU1VDQ0VTUworCisjIE1ha2Ugc3VyZSBJRlMgaGFzIGEgc2Vuc2libGUgZGVmYXVsdAorbHRfbmw9JworJworSUZTPSIgCSRsdF9ubCIKKworZGlybmFtZT0icywvW14vXSokLCwiCitiYXNlbmFtZT0icyxeLiovLCwiCisKKyMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyMgY2FsbDoKKyMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCisjICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKyMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisjICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCisjIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCisjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKK3sKKyAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKyAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCisgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKyAgZWxzZQorICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKyAgZmkKKyAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKK30KKworIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCisKKyMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKKyMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCisjIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKKyMgZnVuY3Rpb24uCitwcm9ncGF0aD0iJDAiCisKKyMgVGhlIG5hbWUgb2YgdGhpcyBwcm9ncmFtOgorIyBJbiB0aGUgdW5saWtlbHkgZXZlbnQgJHByb2duYW1lIGJlZ2FuIHdpdGggYSAnLScsIGl0IHdvdWxkIHBsYXkgaGF2b2Mgd2l0aAorIyBmdW5jX2VjaG8gKGltYWdpbmUgcHJvZ25hbWU9LW4pLCBzbyB3ZSBwcmVwZW5kIC4vIGluIHRoYXQgY2FzZToKK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRwcm9ncGF0aCIKK3Byb2duYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorY2FzZSAkcHJvZ25hbWUgaW4KKyAgLSopIHByb2duYW1lPS4vJHByb2duYW1lIDs7Citlc2FjCisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gYWJzb2x1dGUgcGF0aCBmb3IgcmVleGVjdXRpb246CitjYXNlICRwcm9ncGF0aCBpbgorICBbXFwvXSp8W0EtWmEtel06XFwqKSA7OworICAqW1xcL10qKQorICAgICBwcm9nZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgICAgIHByb2dkaXI9YGNkICIkcHJvZ2RpciIgJiYgcHdkYAorICAgICBwcm9ncGF0aD0iJHByb2dkaXIvJHByb2duYW1lIgorICAgICA7OworICAqKQorICAgICBzYXZlX0lGUz0iJElGUyIKKyAgICAgSUZTPToKKyAgICAgZm9yIHByb2dkaXIgaW4gJFBBVEg7IGRvCisgICAgICAgSUZTPSIkc2F2ZV9JRlMiCisgICAgICAgdGVzdCAteCAiJHByb2dkaXIvJHByb2duYW1lIiAmJiBicmVhaworICAgICBkb25lCisgICAgIElGUz0iJHNhdmVfSUZTIgorICAgICB0ZXN0IC1uICIkcHJvZ2RpciIgfHwgcHJvZ2Rpcj1gcHdkYAorICAgICBwcm9ncGF0aD0iJHByb2dkaXIvJHByb2duYW1lIgorICAgICA7OworZXNhYworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorWHNlZD0iJHtTRUR9IicgLWUgMXMvXlgvLycKK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJworCisjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQorIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJworIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCisjIFNpbmNlIGVhY2ggaW5wdXQgYFwnIGlzIG5vdyB0d28gYFwncywgbG9vayBmb3IgYW55IG51bWJlciBvZiBydW5zIG9mCisjIGZvdXIgYFwncyBmb2xsb3dlZCBieSB0d28gYFwncyBhbmQgdGhlbiBhICckJy4gIGBcJyB0aGF0ICckJy4KK2JzPSdcXCcKK2JzMj0nXFxcXCcKK2JzND0nXFxcXFxcXFwnCitkb2xsYXI9J1wkJworc2VkX2RvdWJsZV9iYWNrc2xhc2g9IlwKKyAgcy8kYnM0LyZcXAorL2cKKyAgcy9eJGJzMiRkb2xsYXIvJGJzJi8KKyAgcy9cXChbXiRic11cXCkkYnMyJGRvbGxhci9cXDEkYnMyJGJzJGRvbGxhci9nCisgIHMvXG4vL2ciCisKKyMgU3RhbmRhcmQgb3B0aW9uczoKK29wdF9kcnlfcnVuPWZhbHNlCitvcHRfaGVscD1mYWxzZQorb3B0X3F1aWV0PWZhbHNlCitvcHRfdmVyYm9zZT1mYWxzZQorb3B0X3dhcm5pbmc9OgorCisjIGZ1bmNfZWNobyBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSwgYWxvbmcgd2l0aCB0aGUgY3VycmVudCBtb2RlCisjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KK2Z1bmNfZWNobyAoKQoreworICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgorfQorCisjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSBpbiB2ZXJib3NlIG1vZGUgb25seS4KK2Z1bmNfdmVyYm9zZSAoKQoreworICAgICRvcHRfdmVyYm9zZSAmJiBmdW5jX2VjaG8gJHsxKyIkQCJ9CisKKyAgICAjIEEgYnVnIGluIGJhc2ggaGFsdHMgdGhlIHNjcmlwdCBpZiB0aGUgbGFzdCBsaW5lIG9mIGEgZnVuY3Rpb24KKyAgICAjIGZhaWxzIHdoZW4gc2V0IC1lIGlzIGluIGZvcmNlLCBzbyB3ZSBuZWVkIGFub3RoZXIgY29tbWFuZCB0bworICAgICMgd29yayBhcm91bmQgdGhhdDoKKyAgICA6Cit9CisKKyMgZnVuY19lcnJvciBhcmcuLi4KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KK2Z1bmNfZXJyb3IgKCkKK3sKKyAgICAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiAiJHsxKyIkQCJ9IDE+JjIKK30KKworIyBmdW5jX3dhcm5pbmcgYXJnLi4uCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KK2Z1bmNfd2FybmluZyAoKQoreworICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKworICAgICMgYmFzaCBidWcgYWdhaW46CisgICAgOgorfQorCisjIGZ1bmNfZmF0YWxfZXJyb3IgYXJnLi4uCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGFuZCBleGl0LgorZnVuY19mYXRhbF9lcnJvciAoKQoreworICAgIGZ1bmNfZXJyb3IgJHsxKyIkQCJ9CisgICAgZXhpdCAkRVhJVF9GQUlMVVJFCit9CisKKyMgZnVuY19mYXRhbF9oZWxwIGFyZy4uLgorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQorIyBhIGhlbHAgaGludCwgYW5kIGV4aXQuCitmdW5jX2ZhdGFsX2hlbHAgKCkKK3sKKyAgICBmdW5jX2Vycm9yICR7MSsiJEAifQorICAgIGZ1bmNfZmF0YWxfZXJyb3IgIiRoZWxwIgorfQoraGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uIiAgIyMgZGVmYXVsdAorCisKKyMgZnVuY19ncmVwIGV4cHJlc3Npb24gZmlsZW5hbWUKKyMgQ2hlY2sgd2hldGhlciBFWFBSRVNTSU9OIG1hdGNoZXMgYW55IGxpbmUgb2YgRklMRU5BTUUsIHdpdGhvdXQgb3V0cHV0LgorZnVuY19ncmVwICgpCit7CisgICAgJEdSRVAgIiQxIiAiJDIiID4vZGV2L251bGwgMj4mMQorfQorCisKKyMgZnVuY19ta2Rpcl9wIGRpcmVjdG9yeS1wYXRoCisjIE1ha2Ugc3VyZSB0aGUgZW50aXJlIHBhdGggdG8gRElSRUNUT1JZLVBBVEggaXMgYXZhaWxhYmxlLgorZnVuY19ta2Rpcl9wICgpCit7CisgICAgbXlfZGlyZWN0b3J5X3BhdGg9IiQxIgorICAgIG15X2Rpcl9saXN0PQorCisgICAgaWYgdGVzdCAtbiAiJG15X2RpcmVjdG9yeV9wYXRoIiAmJiB0ZXN0ICIkb3B0X2RyeV9ydW4iICE9ICI6IjsgdGhlbgorCisgICAgICAjIFByb3RlY3QgZGlyZWN0b3J5IG5hbWVzIHN0YXJ0aW5nIHdpdGggYC0nCisgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbgorICAgICAgICAtKikgbXlfZGlyZWN0b3J5X3BhdGg9Ii4vJG15X2RpcmVjdG9yeV9wYXRoIiA7OworICAgICAgZXNhYworCisgICAgICAjIFdoaWxlIHNvbWUgcG9ydGlvbiBvZiBESVIgZG9lcyBub3QgeWV0IGV4aXN0Li4uCisgICAgICB3aGlsZSB0ZXN0ICEgLWQgIiRteV9kaXJlY3RvcnlfcGF0aCI7IGRvCisgICAgICAgICMgLi4ubWFrZSBhIGxpc3QgaW4gdG9wbW9zdCBmaXJzdCBvcmRlci4gIFVzZSBhIGNvbG9uIGRlbGltaXRlZAorCSMgbGlzdCBpbmNhc2Ugc29tZSBwb3J0aW9uIG9mIHBhdGggY29udGFpbnMgd2hpdGVzcGFjZS4KKyAgICAgICAgbXlfZGlyX2xpc3Q9IiRteV9kaXJlY3RvcnlfcGF0aDokbXlfZGlyX2xpc3QiCisKKyAgICAgICAgIyBJZiB0aGUgbGFzdCBwb3J0aW9uIGFkZGVkIGhhcyBubyBzbGFzaCBpbiBpdCwgdGhlIGxpc3QgaXMgZG9uZQorICAgICAgICBjYXNlICRteV9kaXJlY3RvcnlfcGF0aCBpbiAqLyopIDs7ICopIGJyZWFrIDs7IGVzYWMKKworICAgICAgICAjIC4uLm90aGVyd2lzZSB0aHJvdyBhd2F5IHRoZSBjaGlsZCBkaXJlY3RvcnkgYW5kIGxvb3AKKyAgICAgICAgbXlfZGlyZWN0b3J5X3BhdGg9YCRFQ0hPICJYJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRYc2VkIC1lICIkZGlybmFtZSJgCisgICAgICBkb25lCisgICAgICBteV9kaXJfbGlzdD1gJEVDSE8gIlgkbXlfZGlyX2xpc3QiIHwgJFhzZWQgLWUgJ3MsOiokLCwnYAorCisgICAgICBzYXZlX21rZGlyX3BfSUZTPSIkSUZTIjsgSUZTPSc6JworICAgICAgZm9yIG15X2RpciBpbiAkbXlfZGlyX2xpc3Q7IGRvCisJSUZTPSIkc2F2ZV9ta2Rpcl9wX0lGUyIKKyAgICAgICAgIyBta2RpciBjYW4gZmFpbCB3aXRoIGEgYEZpbGUgZXhpc3QnIGVycm9yIGlmIHR3byBwcm9jZXNzZXMKKyAgICAgICAgIyB0cnkgdG8gY3JlYXRlIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgY29uY3VycmVudGx5LiAgRG9uJ3QKKyAgICAgICAgIyBzdG9wIGluIHRoYXQgY2FzZSEKKyAgICAgICAgJE1LRElSICIkbXlfZGlyIiAyPi9kZXYvbnVsbCB8fCA6CisgICAgICBkb25lCisgICAgICBJRlM9IiRzYXZlX21rZGlyX3BfSUZTIgorCisgICAgICAjIEJhaWwgb3V0IGlmIHdlIChvciBzb21lIG90aGVyIHByb2Nlc3MpIGZhaWxlZCB0byBjcmVhdGUgYSBkaXJlY3RvcnkuCisgICAgICB0ZXN0IC1kICIkbXlfZGlyZWN0b3J5X3BhdGgiIHx8IFwKKyAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiRmFpbGVkIHRvIGNyZWF0ZSBcYCQxJyIKKyAgICBmaQorfQorCisKKyMgZnVuY19ta3RlbXBkaXIgW3N0cmluZ10KKyMgTWFrZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhhdCB3b24ndCBjbGFzaCB3aXRoIG90aGVyIHJ1bm5pbmcKKyMgbGlidG9vbCBwcm9jZXNzZXMsIGFuZCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGlmIHBvc3NpYmxlLiAgSWYKKyMgZ2l2ZW4sIFNUUklORyBpcyB0aGUgYmFzZW5hbWUgZm9yIHRoYXQgZGlyZWN0b3J5LgorZnVuY19ta3RlbXBkaXIgKCkKK3sKKyAgICBteV90ZW1wbGF0ZT0iJHtUTVBESVItL3RtcH0vJHsxLSRwcm9nbmFtZX0iCisKKyAgICBpZiB0ZXN0ICIkb3B0X2RyeV9ydW4iID0gIjoiOyB0aGVuCisgICAgICAjIFJldHVybiBhIGRpcmVjdG9yeSBuYW1lLCBidXQgZG9uJ3QgY3JlYXRlIGl0IGluIGRyeS1ydW4gbW9kZQorICAgICAgbXlfdG1wZGlyPSIke215X3RlbXBsYXRlfS0kJCIKKyAgICBlbHNlCisKKyAgICAgICMgSWYgbWt0ZW1wIHdvcmtzLCB1c2UgdGhhdCBmaXJzdCBhbmQgZm9yZW1vc3QKKyAgICAgIG15X3RtcGRpcj1gbWt0ZW1wIC1kICIke215X3RlbXBsYXRlfS1YWFhYWFhYWCIgMj4vZGV2L251bGxgCisKKyAgICAgIGlmIHRlc3QgISAtZCAiJG15X3RtcGRpciI7IHRoZW4KKyAgICAgICAgIyBGYWlsaW5nIHRoYXQsIGF0IGxlYXN0IHRyeSBhbmQgdXNlICRSQU5ET00gdG8gYXZvaWQgYSByYWNlCisgICAgICAgIG15X3RtcGRpcj0iJHtteV90ZW1wbGF0ZX0tJHtSQU5ET00tMH0kJCIKKworICAgICAgICBzYXZlX21rdGVtcGRpcl91bWFzaz1gdW1hc2tgCisgICAgICAgIHVtYXNrIDAwNzcKKyAgICAgICAgJE1LRElSICIkbXlfdG1wZGlyIgorICAgICAgICB1bWFzayAkc2F2ZV9ta3RlbXBkaXJfdW1hc2sKKyAgICAgIGZpCisKKyAgICAgICMgSWYgd2UncmUgbm90IGluIGRyeS1ydW4gbW9kZSwgYm9tYiBvdXQgb24gZmFpbHVyZQorICAgICAgdGVzdCAtZCAiJG15X3RtcGRpciIgfHwgXAorICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgXGAkbXlfdG1wZGlyJyIKKyAgICBmaQorCisgICAgJEVDSE8gIlgkbXlfdG1wZGlyIiB8ICRYc2VkCit9CisKKworIyBmdW5jX3F1b3RlX2Zvcl9ldmFsIGFyZworIyBBZXN0aGV0aWNhbGx5IHF1b3RlIEFSRyB0byBiZSBldmFsZWQgbGF0ZXIuCisjIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0d28gdmFsdWVzOiBGVU5DX1FVT1RFX0ZPUl9FVkFMX1JFU1VMVAorIyBpcyBkb3VibGUtcXVvdGVkLCBzdWl0YWJsZSBmb3IgYSBzdWJzZXF1ZW50IGV2YWwsIHdoZXJlYXMKKyMgRlVOQ19RVU9URV9GT1JfRVZBTF9VTlFVT1RFRF9SRVNVTFQgaGFzIG1lcmVseSBhbGwgY2hhcmFjdGVycworIyB3aGljaCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUgcXVvdGVzIGJhY2tzbGFzaGlmaWVkLgorZnVuY19xdW90ZV9mb3JfZXZhbCAoKQoreworICAgIGNhc2UgJDEgaW4KKyAgICAgICpbXFxcYFwiXCRdKikKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIlgkMSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgIDs7CisgICAgICAqKQorICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD0iJDEiIDs7CisgICAgZXNhYworCisgICAgY2FzZSAkZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQgaW4KKyAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycyB0byBkZWxheQorICAgICAgIyB3b3JkIHNwbGl0dGluZywgY29tbWFuZCBzdWJzdGl0dXRpb24gYW5kIGFuZCB2YXJpYWJsZQorICAgICAgIyBleHBhbnNpb24gZm9yIGEgc3Vic2VxdWVudCBldmFsLgorICAgICAgIyBNYW55IEJvdXJuZSBzaGVsbHMgY2Fubm90IGhhbmRsZSBjbG9zZSBicmFja2V0cyBjb3JyZWN0bHkKKyAgICAgICMgaW4gc2NhbiBzZXRzLCBzbyB3ZSBzcGVjaWZ5IGl0IHNlcGFyYXRlbHkuCisgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKyAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQ9IlwiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0XCIiCisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdD0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0IgorICAgIGVzYWMKK30KKworCisjIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCBhcmcKKyMgQWVzdGhldGljYWxseSBxdW90ZSBBUkcgdG8gYmUgZXZhbGVkIGxhdGVyOyBzYW1lIGFzIGFib3ZlLAorIyBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCitmdW5jX3F1b3RlX2Zvcl9leHBhbmQgKCkKK3sKKyAgICBjYXNlICQxIGluCisgICAgICAqW1xcXGBcIl0qKQorCW15X2FyZz1gJEVDSE8gIlgkMSIgfCAkWHNlZCBcCisJICAgIC1lICIkZG91YmxlX3F1b3RlX3N1YnN0IiAtZSAiJHNlZF9kb3VibGVfYmFja3NsYXNoImAgOzsKKyAgICAgICopCisgICAgICAgIG15X2FyZz0iJDEiIDs7CisgICAgZXNhYworCisgICAgY2FzZSAkbXlfYXJnIGluCisgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgc2hlbGwgbWV0YWNoYXJhY3RlcnMgdG8gZGVsYXkKKyAgICAgICMgd29yZCBzcGxpdHRpbmcgYW5kIGNvbW1hbmQgc3Vic3RpdHV0aW9uIGZvciBhIHN1YnNlcXVlbnQgZXZhbC4KKyAgICAgICMgTWFueSBCb3VybmUgc2hlbGxzIGNhbm5vdCBoYW5kbGUgY2xvc2UgYnJhY2tldHMgY29ycmVjdGx5CisgICAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgorICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCisgICAgICAgIG15X2FyZz0iXCIkbXlfYXJnXCIiCisgICAgICAgIDs7CisgICAgZXNhYworCisgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdD0iJG15X2FyZyIKK30KKworCisjIGZ1bmNfc2hvd19ldmFsIGNtZCBbZmFpbF9leHBdCisjIFVubGVzcyBvcHRfc2lsZW50IGlzIHRydWUsIHRoZW4gb3V0cHV0IENNRC4gIFRoZW4sIGlmIG9wdF9kcnlydW4gaXMKKyMgbm90IHRydWUsIGV2YWx1YXRlIENNRC4gIElmIHRoZSBldmFsdWF0aW9uIG9mIENNRCBmYWlscywgYW5kIEZBSUxfRVhQCisjIGlzIGdpdmVuLCB0aGVuIGV2YWx1YXRlIGl0LgorZnVuY19zaG93X2V2YWwgKCkKK3sKKyAgICBteV9jbWQ9IiQxIgorICAgIG15X2ZhaWxfZXhwPSIkezItOn0iCisKKyAgICAke29wdF9zaWxlbnQtZmFsc2V9IHx8IHsKKyAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJG15X2NtZCIKKyAgICAgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKKyAgICB9CisKKyAgICBpZiAke29wdF9kcnlfcnVuLWZhbHNlfTsgdGhlbiA6OyBlbHNlCisgICAgICBldmFsICIkbXlfY21kIgorICAgICAgbXlfc3RhdHVzPSQ/CisgICAgICBpZiB0ZXN0ICIkbXlfc3RhdHVzIiAtZXEgMDsgdGhlbiA6OyBlbHNlCisJZXZhbCAiKGV4aXQgJG15X3N0YXR1cyk7ICRteV9mYWlsX2V4cCIKKyAgICAgIGZpCisgICAgZmkKK30KKworCisjIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSBjbWQgW2ZhaWxfZXhwXQorIyBVbmxlc3Mgb3B0X3NpbGVudCBpcyB0cnVlLCB0aGVuIG91dHB1dCBDTUQuICBUaGVuLCBpZiBvcHRfZHJ5cnVuIGlzCisjIG5vdCB0cnVlLCBldmFsdWF0ZSBDTUQuICBJZiB0aGUgZXZhbHVhdGlvbiBvZiBDTUQgZmFpbHMsIGFuZCBGQUlMX0VYUAorIyBpcyBnaXZlbiwgdGhlbiBldmFsdWF0ZSBpdC4gIFVzZSB0aGUgc2F2ZWQgbG9jYWxlIGZvciBldmFsdWF0aW9uLgorZnVuY19zaG93X2V2YWxfbG9jYWxlICgpCit7CisgICAgbXlfY21kPSIkMSIKKyAgICBteV9mYWlsX2V4cD0iJHsyLTp9IgorCisgICAgJHtvcHRfc2lsZW50LWZhbHNlfSB8fCB7CisgICAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRteV9jbWQiCisgICAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCisgICAgfQorCisgICAgaWYgJHtvcHRfZHJ5X3J1bi1mYWxzZX07IHRoZW4gOjsgZWxzZQorICAgICAgZXZhbCAiJGx0X3VzZXJfbG9jYWxlCisJICAgICRteV9jbWQiCisgICAgICBteV9zdGF0dXM9JD8KKyAgICAgIGV2YWwgIiRsdF9zYWZlX2xvY2FsZSIKKyAgICAgIGlmIHRlc3QgIiRteV9zdGF0dXMiIC1lcSAwOyB0aGVuIDo7IGVsc2UKKwlldmFsICIoZXhpdCAkbXlfc3RhdHVzKTsgJG15X2ZhaWxfZXhwIgorICAgICAgZmkKKyAgICBmaQorfQorCisKKworCisKKyMgZnVuY192ZXJzaW9uCisjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KK2Z1bmNfdmVyc2lvbiAoKQoreworICAgICRTRUQgLW4gJy9eIyAnJFBST0dSQU0nIChHTlUgLywvIyB3YXJyYW50eTsgLyB7CisgICAgICAgIHMvXiMgLy8KKwlzL14jICokLy8KKyAgICAgICAgcy9cKChDKVwpWyAwLTksLV0qXCggWzEtOV1bMC05XSpcKS9cMVwyLworICAgICAgICBwCisgICAgIH0nIDwgIiRwcm9ncGF0aCIKKyAgICAgZXhpdCAkPworfQorCisjIGZ1bmNfdXNhZ2UKKyMgRWNobyBzaG9ydCBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorZnVuY191c2FnZSAoKQoreworICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIC1oLyB7CisgICAgICAgIHMvXiMgLy8KKwlzL14jICokLy8KKwlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCisJcAorICAgIH0nIDwgIiRwcm9ncGF0aCIKKyAgICAkRUNITworICAgICRFQ0hPICJydW4gXGAkcHJvZ25hbWUgLS1oZWxwIHwgbW9yZScgZm9yIGZ1bGwgdXNhZ2UiCisgICAgZXhpdCAkPworfQorCisjIGZ1bmNfaGVscAorIyBFY2hvIGxvbmcgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KK2Z1bmNfaGVscCAoKQoreworICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7CisgICAgICAgIHMvXiMgLy8KKwlzL14jICokLy8KKwlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCisJcypcJGhvc3QqJyIkaG9zdCInKgorCXMqXCRTSEVMTConIiRTSEVMTCInKgorCXMqXCRMVENDKiciJExUQ0MiJyoKKwlzKlwkTFRDRkxBR1MqJyIkTFRDRkxBR1MiJyoKKwlzKlwkTEQqJyIkTEQiJyoKKwlzL1wkd2l0aF9nbnVfbGQvJyIkd2l0aF9nbnVfbGQiJy8KKwlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKwlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoYXV0b2NvbmYgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKwlwCisgICAgIH0nIDwgIiRwcm9ncGF0aCIKKyAgICBleGl0ICQ/Cit9CisKKyMgZnVuY19taXNzaW5nX2FyZyBhcmduYW1lCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IgYW5kIHNldCBnbG9iYWwKKyMgZXhpdF9jbWQuCitmdW5jX21pc3NpbmdfYXJnICgpCit7CisgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCisgICAgZXhpdF9jbWQ9ZXhpdAorfQorCitleGl0X2NtZD06CisKKworCisKKworIyBDaGVjayB0aGF0IHdlIGhhdmUgYSB3b3JraW5nICRFQ0hPLgogaWYgdGVzdCAiWCQxIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgogICAjIERpc2NhcmQgdGhlIC0tbm8tcmVleGVjIGZsYWcsIGFuZCBjb250aW51ZS4KICAgc2hpZnQKIGVsaWYgdGVzdCAiWCQxIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KICAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgogICA6Ci1lbGlmIHRlc3QgIlhgKCRlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotICAjIFlpcHBlZSwgJGVjaG8gd29ya3MhCitlbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgorICAjIFlpcHBlZSwgJEVDSE8gd29ya3MhCiAgIDoKIGVsc2UKLSAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSAkZWNobyB3aWxsIHdvcmsuCisgICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbCwgYW5kIHRoZW4gbWF5YmUgJEVDSE8gd2lsbCB3b3JrLgogICBleGVjICRTSEVMTCAiJHByb2dwYXRoIiAtLW5vLXJlZXhlYyAkezErIiRAIn0KIGZpCiAKQEAgLTg0LDE2MSArNTgwLDQyNCBAQAogICBleGl0ICRFWElUX1NVQ0NFU1MKIGZpCiAKLWRlZmF1bHRfbW9kZT0KLWhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKLW1rZGlyPSJta2RpciIKLW12PSJtdiAtZiIKLXJtPSJybSAtZiIKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwotIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLVhzZWQ9IiR7U0VEfSInIC1lIDFzL15YLy8nCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbXFxgXFwiJFxcXFxdXCkvXFxcMS9nJwotIyB0ZXN0IEVCQ0RJQyBvciBBU0NJSQotY2FzZSBgZWNobyBYfHRyIFggJ1wxMDEnYCBpbgotIEEpICMgQVNDSUkgYmFzZWQgc3lzdGVtCi0gICAgIyBcbiBpcyBub3QgaW50ZXJwcmV0ZWQgY29ycmVjdGx5IGJ5IFNvbGFyaXMgOCAvdXNyL3VjYi90cgotICBTUDJOTD0ndHIgXDA0MCBcMDEyJwotICBOTDJTUD0ndHIgXDAxNVwwMTIgXDA0MFwwNDAnCi0gIDs7Ci0gKikgIyBFQkNESUMgYmFzZWQgc3lzdGVtCi0gIFNQMk5MPSd0ciBcMTAwIFxuJwotICBOTDJTUD0ndHIgXHJcbiBcMTAwXDEwMCcKLSAgOzsKLWVzYWMKLQotIyBOTFMgbnVpc2FuY2VzLgotIyBPbmx5IHNldCBMQU5HIGFuZCBMQ19BTEwgdG8gQyBpZiBhbHJlYWR5IHNldC4KLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCi0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCi0jIFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgotbHRfZW52PQotZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCi1kbwotICBldmFsICJpZiB0ZXN0IFwiXCR7JGx0X3ZhcitzZXR9XCIgPSBzZXQ7IHRoZW4KLQkgIHNhdmVfJGx0X3Zhcj1cJCRsdF92YXIKLQkgIGx0X2Vudj1cIiRsdF92YXI9XCQkbHRfdmFyIFwkbHRfZW52XCIKLQkgICRsdF92YXI9QwotCSAgZXhwb3J0ICRsdF92YXIKLQlmaSIKLWRvbmUKLQotaWYgdGVzdCAtbiAiJGx0X2VudiI7IHRoZW4KLSAgbHRfZW52PSJlbnYgJGx0X2VudiIKLWZpCi0KLSMgTWFrZSBzdXJlIElGUyBoYXMgYSBzZW5zaWJsZSBkZWZhdWx0Ci1sdF9ubD0nCi0nCi1JRlM9IiAJJGx0X25sIgotCi1pZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSAgJGVjaG8gIiRtb2RlbmFtZTogbm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIgMT4mMgotICAkZWNobyAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4gIFNlZSB0aGUgJFBBQ0tBR0UgZG9jcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iIDE+JjIKLSAgZXhpdCAkRVhJVF9GQUlMVVJFCi1maQorbWFnaWNfZXhlPSIlJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUiCiAKICMgR2xvYmFsIHZhcmlhYmxlcy4KLW1vZGU9JGRlZmF1bHRfbW9kZQorIyAkbW9kZSBpcyB1bnNldAogbm9ub3B0PQotcHJldj0KLXByZXZvcHQ9Ci1ydW49Ci1zaG93PSIkZWNobyIKLXNob3dfaGVscD0KIGV4ZWN1dGVfZGxmaWxlcz0KLWR1cGxpY2F0ZV9kZXBzPW5vCiBwcmVzZXJ2ZV9hcmdzPQogbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgogbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgogZXh0cmFjdGVkX2FyY2hpdmVzPQogZXh0cmFjdGVkX3NlcmlhbD0wCiAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgU2hlbGwgZnVuY3Rpb24gZGVmaW5pdGlvbnM6Ci0jIFRoaXMgc2VlbXMgdG8gYmUgdGhlIGJlc3QgcGxhY2UgZm9yIHRoZW0KK29wdF9kcnlfcnVuPWZhbHNlCitvcHRfZHVwbGljYXRlX2RlcHM9ZmFsc2UKK29wdF9zaWxlbnQ9ZmFsc2UKK29wdF9kZWJ1Zz06CiAKLSMgZnVuY19ta3RlbXBkaXIgW3N0cmluZ10KLSMgTWFrZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhhdCB3b24ndCBjbGFzaCB3aXRoIG90aGVyIHJ1bm5pbmcKLSMgbGlidG9vbCBwcm9jZXNzZXMsIGFuZCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGlmIHBvc3NpYmxlLiAgSWYKLSMgZ2l2ZW4sIFNUUklORyBpcyB0aGUgYmFzZW5hbWUgZm9yIHRoYXQgZGlyZWN0b3J5LgotZnVuY19ta3RlbXBkaXIgKCkKKyMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAorIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCisjIGxlZnQgb3ZlciBieSBzaGVsbHMuCitleGVjX2NtZD0KKworIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CisjIGEgY29uZmlndXJhdGlvbiBmYWlsdXJlIGhpbnQsIGFuZCBleGl0LgorZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICgpCiB7Ci0gICAgbXlfdGVtcGxhdGU9IiR7VE1QRElSLS90bXB9LyR7MS0kcHJvZ25hbWV9IgotCi0gICAgaWYgdGVzdCAiJHJ1biIgPSAiOiI7IHRoZW4KLSAgICAgICMgUmV0dXJuIGEgZGlyZWN0b3J5IG5hbWUsIGJ1dCBkb24ndCBjcmVhdGUgaXQgaW4gZHJ5LXJ1biBtb2RlCi0gICAgICBteV90bXBkaXI9IiR7bXlfdGVtcGxhdGV9LSQkIgotICAgIGVsc2UKLQotICAgICAgIyBJZiBta3RlbXAgd29ya3MsIHVzZSB0aGF0IGZpcnN0IGFuZCBmb3JlbW9zdAotICAgICAgbXlfdG1wZGlyPWBta3RlbXAgLWQgIiR7bXlfdGVtcGxhdGV9LVhYWFhYWFhYIiAyPi9kZXYvbnVsbGAKLQotICAgICAgaWYgdGVzdCAhIC1kICIkbXlfdG1wZGlyIjsgdGhlbgotCSMgRmFpbGluZyB0aGF0LCBhdCBsZWFzdCB0cnkgYW5kIHVzZSAkUkFORE9NIHRvIGF2b2lkIGEgcmFjZQotCW15X3RtcGRpcj0iJHtteV90ZW1wbGF0ZX0tJHtSQU5ET00tMH0kJCIKLQotCXNhdmVfbWt0ZW1wZGlyX3VtYXNrPWB1bWFza2AKLQl1bWFzayAwMDc3Ci0JJG1rZGlyICIkbXlfdG1wZGlyIgotCXVtYXNrICRzYXZlX21rdGVtcGRpcl91bWFzawotICAgICAgZmkKLQotICAgICAgIyBJZiB3ZSdyZSBub3QgaW4gZHJ5LXJ1biBtb2RlLCBib21iIG91dCBvbiBmYWlsdXJlCi0gICAgICB0ZXN0IC1kICIkbXlfdG1wZGlyIiB8fCB7Ci0gICAgICAgICRlY2hvICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgXGAkbXlfdG1wZGlyJyIgMT4mMgotCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgfQotICAgIGZpCi0KLSAgICAkZWNobyAiWCRteV90bXBkaXIiIHwgJFhzZWQKKyAgICBmdW5jX2Vycm9yICR7MSsiJEAifQorICAgIGZ1bmNfZXJyb3IgIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisgICAgZnVuY19mYXRhbF9lcnJvciAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4iCiB9CiAKIAotIyBmdW5jX3dpbjMyX2xpYmlkIGFyZwotIyByZXR1cm4gdGhlIGxpYnJhcnkgdHlwZSBvZiBmaWxlICdhcmcnCi0jCi0jIE5lZWQgYSBsb3Qgb2YgZ29vIHRvIGhhbmRsZSAqYm90aCogRExMcyBhbmQgaW1wb3J0IGxpYnMKLSMgSGFzIHRvIGJlIGEgc2hlbGwgZnVuY3Rpb24gaW4gb3JkZXIgdG8gJ2VhdCcgdGhlIGFyZ3VtZW50Ci0jIHRoYXQgaXMgc3VwcGxpZWQgd2hlbiAkZmlsZV9tYWdpY19jb21tYW5kIGlzIGNhbGxlZC4KLWZ1bmNfd2luMzJfbGliaWQgKCkKKyMgZnVuY19jb25maWcKKyMgRGlzcGxheSB0aGUgY29uZmlndXJhdGlvbiBmb3IgYWxsIHRoZSB0YWdzIGluIHRoaXMgc2NyaXB0LgorZnVuY19jb25maWcgKCkKIHsKLSAgd2luMzJfbGliaWRfdHlwZT0idW5rbm93biIKLSAgd2luMzJfZmlsZXJlcz1gZmlsZSAtTCAkMSAyPi9kZXYvbnVsbGAKLSAgY2FzZSAkd2luMzJfZmlsZXJlcyBpbgotICAqYXJcIGFyY2hpdmVcIGltcG9ydFwgbGlicmFyeSopICMgZGVmaW5pdGVseSBpbXBvcnQKLSAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCi0gICAgOzsKLSAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYwotICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwgXAotICAgICAgJEVHUkVQIC1lICdmaWxlIGZvcm1hdCBwZS1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nID4vZGV2L251bGwgOyB0aGVuCi0gICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgJDEgfCBcCi0JJFNFRCAtbiAtZSAnMSwxMDB7Ci0JCS8gSSAvewotCQkJcywuKixpbXBvcnQsCi0JCQlwCi0JCQlxCi0JCQl9Ci0JCX0nYAotICAgICAgY2FzZSAkd2luMzJfbm1yZXMgaW4KLSAgICAgIGltcG9ydCopICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiOzsKLSAgICAgICopICAgICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBzdGF0aWMiOzsKLSAgICAgIGVzYWMKKyAgICByZV9iZWdpbmNmPSdeIyAjIyMgQkVHSU4gTElCVE9PTCcKKyAgICByZV9lbmRjZj0nXiMgIyMjIEVORCBMSUJUT09MJworCisgICAgIyBEZWZhdWx0IGNvbmZpZ3VyYXRpb24uCisgICAgJFNFRCAiMSwvJHJlX2JlZ2luY2YgQ09ORklHL2Q7LyRyZV9lbmRjZiBDT05GSUcvLFwkZCIgPCAiJHByb2dwYXRoIgorCisgICAgIyBOb3cgcHJpbnQgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgdGFncy4KKyAgICBmb3IgdGFnbmFtZSBpbiAkdGFnbGlzdDsgZG8KKyAgICAgICRTRUQgLW4gIi8kcmVfYmVnaW5jZiBUQUcgQ09ORklHOiAkdGFnbmFtZVwkLywvJHJlX2VuZGNmIFRBRyBDT05GSUc6ICR0YWduYW1lXCQvcCIgPCAiJHByb2dwYXRoIgorICAgIGRvbmUKKworICAgIGV4aXQgJD8KK30KKworIyBmdW5jX2ZlYXR1cmVzCisjIERpc3BsYXkgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGlzIHNjcmlwdC4KK2Z1bmNfZmVhdHVyZXMgKCkKK3sKKyAgICAkRUNITyAiaG9zdDogJGhvc3QiCisgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgICRFQ0hPICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICBlbHNlCisgICAgICAkRUNITyAiZGlzYWJsZSBzaGFyZWQgbGlicmFyaWVzIgogICAgIGZpCi0gICAgOzsKLSAgKkRMTCopCi0gICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IERMTCIKLSAgICA7OwotICAqZXhlY3V0YWJsZSopICMgYnV0IHNoZWxsIHNjcmlwdHMgYXJlICJleGVjdXRhYmxlIiB0b28uLi4KLSAgICBjYXNlICR3aW4zMl9maWxlcmVzIGluCi0gICAgKk1TXCBXaW5kb3dzXCBQRVwgSW50ZWwqKQotICAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IERMTCIKKyAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisgICAgICAkRUNITyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgZWxzZQorICAgICAgJEVDSE8gImRpc2FibGUgc3RhdGljIGxpYnJhcmllcyIKKyAgICBmaQorCisgICAgZXhpdCAkPworfQorCisjIGZ1bmNfZW5hYmxlX3RhZyB0YWduYW1lCisjIFZlcmlmeSB0aGF0IFRBR05BTUUgaXMgdmFsaWQsIGFuZCBlaXRoZXIgZmxhZyBhbiBlcnJvciBhbmQgZXhpdCwgb3IKKyMgZW5hYmxlIHRoZSBUQUdOQU1FIHRhZy4gIFdlIGFsc28gYWRkIFRBR05BTUUgdG8gdGhlIGdsb2JhbCAkdGFnbGlzdAorIyB2YXJpYWJsZSBoZXJlLgorZnVuY19lbmFibGVfdGFnICgpCit7CisgICMgR2xvYmFsIHZhcmlhYmxlOgorICB0YWduYW1lPSIkMSIKKworICByZV9iZWdpbmNmPSJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZVwkIgorICByZV9lbmRjZj0iXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXCQiCisgIHNlZF9leHRyYWN0Y2Y9Ii8kcmVfYmVnaW5jZi8sLyRyZV9lbmRjZi9wIgorCisgICMgVmFsaWRhdGUgdGFnbmFtZS4KKyAgY2FzZSAkdGFnbmFtZSBpbgorICAgICpbIS1fQS1aYS16MC05LC9dKikKKyAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgdGFnIG5hbWU6ICR0YWduYW1lIgogICAgICAgOzsKLSAgICBlc2FjCisgIGVzYWMKKworICAjIERvbid0IHRlc3QgZm9yIHRoZSAiZGVmYXVsdCIgQyB0YWcsIGFzIHdlIGtub3cgaXQncworICAjIHRoZXJlIGJ1dCBub3Qgc3BlY2lhbGx5IG1hcmtlZC4KKyAgY2FzZSAkdGFnbmFtZSBpbgorICAgIENDKSA7OworICAgICopCisgICAgICBpZiAkR1JFUCAiJHJlX2JlZ2luY2YiICIkcHJvZ3BhdGgiID4vZGV2L251bGwgMj4mMTsgdGhlbgorCXRhZ2xpc3Q9IiR0YWdsaXN0ICR0YWduYW1lIgorCisJIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4gIEJlIGNhcmVmdWwgdG8gcXVvdGUgdGhlIHBhdGgKKwkjIGFuZCB0aGUgc2VkIHNjcmlwdCwgdG8gYXZvaWQgc3BsaXR0aW5nIG9uIHdoaXRlc3BhY2UsIGJ1dAorCSMgYWxzbyBkb24ndCB1c2Ugbm9uLXBvcnRhYmxlIHF1b3RlcyB3aXRoaW4gYmFja3F1b3RlcyB3aXRoaW4KKwkjIHF1b3RlcyB3ZSBoYXZlIHRvIGRvIGl0IGluIDIgc3RlcHM6CisJZXh0cmFjdGVkY2Y9YCRTRUQgLW4gLWUgIiRzZWRfZXh0cmFjdGNmIiA8ICIkcHJvZ3BhdGgiYAorCWV2YWwgIiRleHRyYWN0ZWRjZiIKKyAgICAgIGVsc2UKKwlmdW5jX2Vycm9yICJpZ25vcmluZyB1bmtub3duIHRhZyAkdGFnbmFtZSIKKyAgICAgIGZpCisgICAgICA7OworICBlc2FjCit9CisKKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluCisjIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgoreworCisgICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAorICBjYXNlICQxIGluCisgIGNsZWFufGNsZWF8Y2xlfGNsKQorICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKKyAgICA7OworICBjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQorICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAorICAgIDs7CisgIGV4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0CisgICAgOzsKKyAgZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKKyAgICA7OworICBpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQorICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorICAgIDs7CisgIGxpbmt8bGlufGxpfGwpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0CisgICAgOzsKKyAgdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCisgICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKICAgICA7OwogICBlc2FjCi0gICRlY2hvICR3aW4zMl9saWJpZF90eXBlCisKKyAgIyBQYXJzZSBub24tbW9kZSBzcGVjaWZpYyBhcmd1bWVudHM6CisgIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KKyAgICBvcHQ9IiQxIgorICAgIHNoaWZ0CisKKyAgICBjYXNlICRvcHQgaW4KKyAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7CisKKyAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorCQkJb3B0X2RlYnVnPSdzZXQgLXgnCisJCQkkb3B0X2RlYnVnCisJCQk7OworCisgICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCisJCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCisJCQlzaGlmdAorCQkJOzsKKworICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7CisgICAgICAtLWZlYXR1cmVzKSAgICAgICBmdW5jX2ZlYXR1cmVzCQkJCQk7OworICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OworCisgICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKwkJCWNhc2UgJDEgaW4KKwkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKwkJCSAgY2xlYW4pCTs7CisJCQkgIGNvbXBpbGUpCTs7CisJCQkgIGV4ZWN1dGUpCTs7CisJCQkgIGZpbmlzaCkJOzsKKwkJCSAgaW5zdGFsbCkJOzsKKwkJCSAgbGluaykJCTs7CisJCQkgIHJlbGluaykJOzsKKwkJCSAgdW5pbnN0YWxsKQk7OworCisJCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorCQkJICAqKSBmdW5jX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IGZvciAkb3B0IgorCQkJICAgICBleGl0X2NtZD1leGl0CisJCQkgICAgIGJyZWFrCisJCQkgICAgIDs7CisJCSAgICAgICAgZXNhYworCisJCQltb2RlPSIkMSIKKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQorCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKKworICAgICAgLS1xdWlldHwtLXNpbGVudCkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKwkJCW9wdF9zaWxlbnQ9OgorCQkJOzsKKworICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKwkJCW9wdF9zaWxlbnQ9ZmFsc2UKKwkJCTs7CisKKyAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCisJCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgorCQkJZnVuY19lbmFibGVfdGFnICIkMSIJIyB0YWduYW1lIGlzIHNldCBoZXJlCisJCQlzaGlmdAorCQkJOzsKKworICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKKyAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQorCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCisJCQlzZXQgZHVtbXkgIiRmdW5jX29wdF9zcGxpdF9vcHQiICIkZnVuY19vcHRfc3BsaXRfYXJnIiAkezErIiRAIn0KKwkJCXNoaWZ0CisJCQk7OworCisgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OworICAgICAgLS1oZWxwKQkJb3B0X2hlbHA9OgkJCQkJOzsKKyAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OworCisgICAgICAtKikJCWZ1bmNfZmF0YWxfaGVscCAidW5yZWNvZ25pemVkIG9wdGlvbiBcYCRvcHQnIgk7OworCisgICAgICAqKQkJbm9ub3B0PSIkb3B0IgorCQkJYnJlYWsKKwkJCTs7CisgICAgZXNhYworICBkb25lCisKKworICBjYXNlICRob3N0IGluCisgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKikKKyAgICAgICMgZG9uJ3QgZWxpbWluYXRlIGR1cGxpY2F0aW9ucyBpbiAkcG9zdGRlcHMgYW5kICRwcmVkZXBzCisgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPToKKyAgICAgIDs7CisgICAgKikKKyAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9JG9wdF9kdXBsaWNhdGVfZGVwcworICAgICAgOzsKKyAgZXNhYworCisgICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgorICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKK30KKworIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKyMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKKyMgcmVsZWFzZSBvZiBsaWJ0b29sLgorZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCit7CisgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgorICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisgICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgorJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorX0xUX0VPRgorICAgICAgZWxzZQorICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgorJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorX0xUX0VPRgorICAgICAgZmkKKyAgICBlbHNlCisgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCiskcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCiskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCiskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCitfTFRfRU9GCisgICAgZmkKKworICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKKyAgZmkKK30KKworCisjIyAtLS0tLS0tLS0tLSAjIworIyMgICAgTWFpbi4gICAgIyMKKyMjIC0tLS0tLS0tLS0tICMjCisKKyRvcHRfaGVscCB8fCB7CisgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKyAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisKKyAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCisgICAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorICBmaQorCisgIHRlc3QgLXogIiRtb2RlIiAmJiBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogeW91IG11c3Qgc3BlY2lmeSBhIE1PREUuIgorCisKKyAgIyBEYXJ3aW4gc3Vja3MKKyAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKKworCisgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCisgIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCisgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgorICAgICRFQ0hPICIkaGVscCIgMT4mMgorICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICBmaQorCisgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKyAgZ2VuZXJpY19oZWxwPSIkaGVscCIKKyAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKK30KKworCisjIGZ1bmNfbGFsaWJfcCBmaWxlCisjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCisjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CisjIGRldGVybWluZWQgaW1wb3N0ZXJzLgorZnVuY19sYWxpYl9wICgpCit7CisgICAgdGVzdCAtZiAiJDEiICYmCisgICAgICAkU0VEIC1lIDRxICIkMSIgMj4vZGV2L251bGwgXAorICAgICAgICB8ICRHUkVQICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIgPiAvZGV2L251bGwgMj4mMQorfQorCisjIGZ1bmNfbGFsaWJfdW5zYWZlX3AgZmlsZQorIyBUcnVlIGlmZiBGSUxFIGlzIGEgbGlidG9vbCBgLmxhJyBsaWJyYXJ5IG9yIGAubG8nIG9iamVjdCBmaWxlLgorIyBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgdGhlIHNhbWUgY2hlY2sgYXMgZnVuY19sYWxpYl9wIHdpdGhvdXQKKyMgcmVzb3J0aW5nIHRvIGV4dGVybmFsIHByb2dyYW1zLiAgVG8gdGhpcyBlbmQsIGl0IHJlZGlyZWN0cyBzdGRpbiBhbmQKKyMgY2xvc2VzIGl0IGFmdGVyd2FyZHMsIHdpdGhvdXQgc2F2aW5nIHRoZSBvcmlnaW5hbCBmaWxlIGRlc2NyaXB0b3IuCisjIEFzIGEgc2FmZXR5IG1lYXN1cmUsIHVzZSBpdCBvbmx5IHdoZXJlIGEgbmVnYXRpdmUgcmVzdWx0IHdvdWxkIGJlCisjIGZhdGFsIGFueXdheS4gIFdvcmtzIGlmIGBmaWxlJyBkb2VzIG5vdCBleGlzdC4KK2Z1bmNfbGFsaWJfdW5zYWZlX3AgKCkKK3sKKyAgICBsYWxpYl9wPW5vCisgICAgaWYgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXIgIiQxIiAmJiBleGVjIDU8JjAgPCIkMSI7IHRoZW4KKwlmb3IgbGFsaWJfcF9sIGluIDEgMiAzIDQKKwlkbworCSAgICByZWFkIGxhbGliX3BfbGluZQorCSAgICBjYXNlICIkbGFsaWJfcF9saW5lIiBpbgorCQlcI1wgR2VuZXJhdGVkXCBieVwgKiRQQUNLQUdFKiApIGxhbGliX3A9eWVzOyBicmVhazs7CisJICAgIGVzYWMKKwlkb25lCisJZXhlYyAwPCY1IDU8Ji0KKyAgICBmaQorICAgIHRlc3QgIiRsYWxpYl9wIiA9IHllcworfQorCisjIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wIGZpbGUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQKKyMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKKyMgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCitmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAoKQoreworICAgIGZ1bmNfbGFsaWJfcCAiJDEiCit9CisKKyMgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wIGZpbGUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgd3JhcHBlciBleGVjdXRhYmxlCisjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CisjIGRldGVybWluZWQgaW1wb3N0ZXJzLgorZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCit7CisgICAgZnVuY19sdHdyYXBwZXJfZXhlY19zdWZmaXg9CisgICAgY2FzZSAkMSBpbgorICAgICouZXhlKSA7OworICAgICopIGZ1bmNfbHR3cmFwcGVyX2V4ZWNfc3VmZml4PS5leGUgOzsKKyAgICBlc2FjCisgICAgJEdSRVAgIiRtYWdpY19leGUiICIkMSRmdW5jX2x0d3JhcHBlcl9leGVjX3N1ZmZpeCIgPi9kZXYvbnVsbCAyPiYxCit9CisKKyMgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSBmaWxlCisjIEFzc3VtZXMgZmlsZSBpcyBhbiBsdHdyYXBwZXJfZXhlY3V0YWJsZQorIyB1c2VzICRmaWxlIHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgZmlsZW5hbWUgZm9yIGEKKyMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCitmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCit7CisgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKKyAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgorCWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKwlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCisgICAgZmkKK30KKworIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb3Igd3JhcHBlciBleGVjdXRhYmxlCisjIFRoaXMgZnVuY3Rpb24gaXMgb25seSBhIGJhc2ljIHNhbml0eSBjaGVjazsgaXQgd2lsbCBoYXJkbHkgZmx1c2ggb3V0CisjIGRldGVybWluZWQgaW1wb3N0ZXJzLgorZnVuY19sdHdyYXBwZXJfcCAoKQoreworICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdF9wICIkMSIgfHwgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSIKK30KKworCisjIGZ1bmNfZXhlY3V0ZV9jbWRzIGNvbW1hbmRzIGZhaWxfY21kCisjIEV4ZWN1dGUgdGlsZGUtZGVsaW1pdGVkIENPTU1BTkRTLgorIyBJZiBGQUlMX0NNRCBpcyBnaXZlbiwgZXZhbCB0aGF0IHVwb24gZmFpbHVyZS4KKyMgRkFJTF9DTUQgbWF5IHJlYWQtYWNjZXNzIHRoZSBjdXJyZW50IGNvbW1hbmQgaW4gdmFyaWFibGUgQ01EIQorZnVuY19leGVjdXRlX2NtZHMgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JworICAgIGZvciBjbWQgaW4gJDE7IGRvCisgICAgICBJRlM9JHNhdmVfaWZzCisgICAgICBldmFsIGNtZD1cIiRjbWRcIgorICAgICAgZnVuY19zaG93X2V2YWwgIiRjbWQiICIkezItOn0iCisgICAgZG9uZQorICAgIElGUz0kc2F2ZV9pZnMKK30KKworCisjIGZ1bmNfc291cmNlIGZpbGUKKyMgU291cmNlIEZJTEUsIGFkZGluZyBkaXJlY3RvcnkgY29tcG9uZW50IGlmIG5lY2Vzc2FyeS4KKyMgTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3Nhcnkgb24gY3lnd2luL21pbmd3IHRvIGFwcGVuZCBhIGRvdCB0bworIyBGSUxFIGV2ZW4gaWYgYm90aCBGSUxFIGFuZCBGSUxFLmV4ZSBleGlzdDogYXV0b21hdGljLWFwcGVuZC0uZXhlCisjIGJlaGF2aW9yIGhhcHBlbnMgb25seSBmb3IgZXhlYygzKSwgbm90IGZvciBvcGVuKDIpISAgQWxzbywgc291cmNpbmcKKyMgYEZJTEUuJyBkb2VzIG5vdCB3b3JrIG9uIGN5Z3dpbiBtYW5hZ2VkIG1vdW50cy4KK2Z1bmNfc291cmNlICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIGNhc2UgJDEgaW4KKyAgICAqLyogfCAqXFwqKQkuICIkMSIgOzsKKyAgICAqKQkJLiAiLi8kMSIgOzsKKyAgICBlc2FjCiB9CiAKIApAQCAtMjUwLDM5ICsxMDA5LDMyIEBACiAjIGFyZyBpcyB1c3VhbGx5IG9mIHRoZSBmb3JtICdnY2MgLi4uJwogZnVuY19pbmZlcl90YWcgKCkKIHsKKyAgICAkb3B0X2RlYnVnCiAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KICAgICAgIENDX3F1b3RlZD0KICAgICAgIGZvciBhcmcgaW4gJENDOyBkbwotCWNhc2UgJGFyZyBpbgotCSAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICBhcmc9IlwiJGFyZ1wiIgotCSAgOzsKLQllc2FjCi0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRhcmciCisgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKICAgICAgIGRvbmUKICAgICAgIGNhc2UgJEAgaW4KICAgICAgICMgQmxhbmtzIGluIHRoZSBjb21tYW5kIG1heSBoYXZlIGJlZW4gc3RyaXBwZWQgYnkgdGhlIGNhbGxpbmcgc2hlbGwsCiAgICAgICAjIGJ1dCBub3QgZnJvbSB0aGUgQ0MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBjb25maWd1cmUgd2FzIHJ1bi4KLSAgICAgICIgJENDICIqIHwgIiRDQyAiKiB8ICIgYCRlY2hvICRDQ2AgIiogfCAiYCRlY2hvICRDQ2AgIiogfCAiICRDQ19xdW90ZWQiKiB8ICIkQ0NfcXVvdGVkICIqIHwgIiBgJGVjaG8gJENDX3F1b3RlZGAgIiogfCAiYCRlY2hvICRDQ19xdW90ZWRgICIqKSA7OworICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopIDs7CiAgICAgICAjIEJsYW5rcyBhdCB0aGUgc3RhcnQgb2YgJGJhc2VfY29tcGlsZSB3aWxsIGNhdXNlIHRoaXMgdG8gZmFpbAogICAgICAgIyBpZiB3ZSBkb24ndCBjaGVjayBmb3IgdGhlbSBhcyB3ZWxsLgogICAgICAgKikKIAlmb3IgeiBpbiAkYXZhaWxhYmxlX3RhZ3M7IGRvCi0JICBpZiBncmVwICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkeiQiIDwgIiRwcm9ncGF0aCIgPiAvZGV2L251bGw7IHRoZW4KKwkgIGlmICRHUkVQICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkeiQiIDwgIiRwcm9ncGF0aCIgPiAvZGV2L251bGw7IHRoZW4KIAkgICAgIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4KIAkgICAgZXZhbCAiYCR7U0VEfSAtbiAtZSAnL14jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICckeickLywvXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICckeickL3AnIDwgJHByb2dwYXRoYCIKIAkgICAgQ0NfcXVvdGVkPQogCSAgICBmb3IgYXJnIGluICRDQzsgZG8KLQkgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotCSAgICBjYXNlICRhcmcgaW4KLQkgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgICAgICBhcmc9IlwiJGFyZ1wiIgotCSAgICAgIDs7Ci0JICAgIGVzYWMKLQkgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRhcmciCi0JICBkb25lCisJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgorCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJICAgICAgQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgICAgZG9uZQogCSAgICBjYXNlICIkQCAiIGluCi0JICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJGVjaG8gJENDYCAiKiB8ICJgJGVjaG8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkZWNobyAkQ0NfcXVvdGVkYCAiKiB8ICJgJGVjaG8gJENDX3F1b3RlZGAgIiopCisJICAgICAgIiAkQ0MgIiogfCAiJENDICIqIHwgIiBgJEVDSE8gJENDYCAiKiB8ICJgJEVDSE8gJENDYCAiKiB8ICIgJENDX3F1b3RlZCIqIHwgIiRDQ19xdW90ZWQgIiogfCAiIGAkRUNITyAkQ0NfcXVvdGVkYCAiKiB8ICJgJEVDSE8gJENDX3F1b3RlZGAgIiopCiAJICAgICAgIyBUaGUgY29tcGlsZXIgaW4gdGhlIGJhc2UgY29tcGlsZSBjb21tYW5kIG1hdGNoZXMKIAkgICAgICAjIHRoZSBvbmUgaW4gdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uLgogCSAgICAgICMgQXNzdW1lIHRoaXMgaXMgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9uIHdlIHdhbnQuCkBAIC0yOTYsMTEgKzEwNDgsMTAgQEAKIAkjIHdhcyBmb3VuZCBhbmQgbGV0IHRoZSB1c2VyIGtub3cgdGhhdCB0aGUgIi0tdGFnIiBjb21tYW5kCiAJIyBsaW5lIG9wdGlvbiBtdXN0IGJlIHVzZWQuCiAJaWYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiB1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24iCi0JICAkZWNobyAiJG1vZGVuYW1lOiBzcGVjaWZ5IGEgdGFnIHdpdGggXGAtLXRhZyciIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotIyAgICAgICAgZWxzZQotIyAgICAgICAgICAkZWNobyAiJG1vZGVuYW1lOiB1c2luZyAkdGFnbmFtZSB0YWdnZWQgY29uZmlndXJhdGlvbiIKKwkgIGZ1bmNfZWNobyAidW5hYmxlIHRvIGluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIgorCSAgZnVuY19mYXRhbF9lcnJvciAic3BlY2lmeSBhIHRhZyB3aXRoIFxgLS10YWcnIgorIwllbHNlCisjCSAgZnVuY192ZXJib3NlICJ1c2luZyAkdGFnbmFtZSB0YWdnZWQgY29uZmlndXJhdGlvbiIKIAlmaQogCTs7CiAgICAgICBlc2FjCkBAIC0zMDgsMzU0ICsxMDU5LDQ4IEBACiB9CiAKIAotIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCi1mdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAoKQorCisjIGZ1bmNfd3JpdGVfbGlidG9vbF9vYmplY3Qgb3V0cHV0X25hbWUgcGljX25hbWUgbm9ucGljX25hbWUKKyMgQ3JlYXRlIGEgbGlidG9vbCBvYmplY3QgZmlsZSAoYW5hbG9nb3VzIHRvIGEgIi5sYSIgZmlsZSksCisjIGJ1dCBkb24ndCBjcmVhdGUgaXQgaWYgd2UncmUgZG9pbmcgYSBkcnkgcnVuLgorZnVuY193cml0ZV9saWJ0b29sX29iamVjdCAoKQogewotICAgIGZfZXhfYW5fYXJfZGlyPSIkMSI7IHNoaWZ0Ci0gICAgZl9leF9hbl9hcl9vbGRsaWI9IiQxIgotCi0gICAgJHNob3cgIihjZCAkZl9leF9hbl9hcl9kaXIgJiYgJEFSIHggJGZfZXhfYW5fYXJfb2xkbGliKSIKLSAgICAkcnVuIGV2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwkZl9leF9hbl9hcl9vbGRsaWIpIiB8fCBleGl0ICQ/Ci0gICAgaWYgKCRBUiB0ICIkZl9leF9hbl9hcl9vbGRsaWIiIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KLSAgICAgOgotICAgIGVsc2UKLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IEVSUk9SOiBvYmplY3QgbmFtZSBjb25mbGljdHM6ICRmX2V4X2FuX2FyX2Rpci8kZl9leF9hbl9hcl9vbGRsaWIiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi19Ci0KLSMgZnVuY19leHRyYWN0X2FyY2hpdmVzIGdlbnRvcCBvbGRsaWIgLi4uCi1mdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKLXsKLSAgICBteV9nZW50b3A9IiQxIjsgc2hpZnQKLSAgICBteV9vbGRsaWJzPSR7MSsiJEAifQotICAgIG15X29sZG9ianM9IiIKLSAgICBteV94bGliPSIiCi0gICAgbXlfeGFicz0iIgotICAgIG15X3hkaXI9IiIKLSAgICBteV9zdGF0dXM9IiIKLQotICAgICRzaG93ICIke3JtfXIgJG15X2dlbnRvcCIKLSAgICAkcnVuICR7cm19ciAiJG15X2dlbnRvcCIKLSAgICAkc2hvdyAiJG1rZGlyICRteV9nZW50b3AiCi0gICAgJHJ1biAkbWtkaXIgIiRteV9nZW50b3AiCi0gICAgbXlfc3RhdHVzPSQ/Ci0gICAgaWYgdGVzdCAiJG15X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkbXlfZ2VudG9wIjsgdGhlbgotICAgICAgZXhpdCAkbXlfc3RhdHVzCi0gICAgZmkKLQotICAgIGZvciBteV94bGliIGluICRteV9vbGRsaWJzOyBkbwotICAgICAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgotICAgICAgY2FzZSAkbXlfeGxpYiBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgbXlfeGFicz0iJG15X3hsaWIiIDs7Ci0JKikgbXlfeGFicz1gcHdkYCIvJG15X3hsaWIiIDs7Ci0gICAgICBlc2FjCi0gICAgICBteV94bGliPWAkZWNobyAiWCRteV94bGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0gICAgICBteV94bGliX3U9JG15X3hsaWIKLSAgICAgIHdoaWxlIDo7IGRvCi0gICAgICAgIGNhc2UgIiAkZXh0cmFjdGVkX2FyY2hpdmVzICIgaW4KLQkqIiAkbXlfeGxpYl91ICIqKQotCSAgZXh0cmFjdGVkX3NlcmlhbD1gZXhwciAkZXh0cmFjdGVkX3NlcmlhbCArIDFgCi0JICBteV94bGliX3U9bHQkZXh0cmFjdGVkX3NlcmlhbC0kbXlfeGxpYiA7OwotCSopIGJyZWFrIDs7Ci0JZXNhYwotICAgICAgZG9uZQotICAgICAgZXh0cmFjdGVkX2FyY2hpdmVzPSIkZXh0cmFjdGVkX2FyY2hpdmVzICRteV94bGliX3UiCi0gICAgICBteV94ZGlyPSIkbXlfZ2VudG9wLyRteV94bGliX3UiCi0KLSAgICAgICRzaG93ICIke3JtfXIgJG15X3hkaXIiCi0gICAgICAkcnVuICR7cm19ciAiJG15X3hkaXIiCi0gICAgICAkc2hvdyAiJG1rZGlyICRteV94ZGlyIgotICAgICAgJHJ1biAkbWtkaXIgIiRteV94ZGlyIgotICAgICAgZXhpdF9zdGF0dXM9JD8KLSAgICAgIGlmIHRlc3QgIiRleGl0X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkbXlfeGRpciI7IHRoZW4KLQlleGl0ICRleGl0X3N0YXR1cwotICAgICAgZmkKLSAgICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICotZGFyd2luKikKLQkkc2hvdyAiRXh0cmFjdGluZyAkbXlfeGFicyIKLQkjIERvIG5vdCBib3RoZXIgZG9pbmcgYW55dGhpbmcgaWYganVzdCBhIGRyeSBydW4KLQlpZiB0ZXN0IC16ICIkcnVuIjsgdGhlbgotCSAgZGFyd2luX29yaWdfZGlyPWBwd2RgCi0JICBjZCAkbXlfeGRpciB8fCBleGl0ICQ/Ci0JICBkYXJ3aW5fYXJjaGl2ZT0kbXlfeGFicwotCSAgZGFyd2luX2N1cmRpcj1gcHdkYAotCSAgZGFyd2luX2Jhc2VfYXJjaGl2ZT1gJGVjaG8gIlgkZGFyd2luX2FyY2hpdmUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQkgIGRhcndpbl9hcmNoZXM9YGxpcG8gLWluZm8gIiRkYXJ3aW5fYXJjaGl2ZSIgMj4vZGV2L251bGwgfCAkRUdSRVAgQXJjaGl0ZWN0dXJlcyAyPi9kZXYvbnVsbGAKLQkgIGlmIHRlc3QgLW4gIiRkYXJ3aW5fYXJjaGVzIjsgdGhlbiAKLQkgICAgZGFyd2luX2FyY2hlcz1gZWNobyAiJGRhcndpbl9hcmNoZXMiIHwgJFNFRCAtZSAncy8uKmFyZTovLydgCi0JICAgIGRhcndpbl9hcmNoPQotCSAgICAkc2hvdyAiJGRhcndpbl9iYXNlX2FyY2hpdmUgaGFzIG11bHRpcGxlIGFyY2hpdGVjdHVyZXMgJGRhcndpbl9hcmNoZXMiCi0JICAgIGZvciBkYXJ3aW5fYXJjaCBpbiAgJGRhcndpbl9hcmNoZXMgOyBkbwotCSAgICAgIG1rZGlyIC1wICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgotCSAgICAgIGxpcG8gLXRoaW4gJGRhcndpbl9hcmNoIC1vdXRwdXQgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0vJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIgIiR7ZGFyd2luX2FyY2hpdmV9IgotCSAgICAgIGNkICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgotCSAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICJgcHdkYCIgIiR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCi0JICAgICAgY2QgIiRkYXJ3aW5fY3VyZGlyIgotCSAgICAgICRybSAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofS8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9IgotCSAgICBkb25lICMgJGRhcndpbl9hcmNoZXMKLSAgICAgICMjIE9rYXkgbm93IHdlIGhhdmUgYSBidW5jaCBvZiB0aGluIG9iamVjdHMsIGdvdHRhIGZhdHRlbiB0aGVtIHVwIDopCi0JICAgIGRhcndpbl9maWxlbGlzdD1gZmluZCB1bmZhdC0kJCAtdHlwZSBmIC1uYW1lIFwqLm8gLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludHwgeGFyZ3MgYmFzZW5hbWUgfCBzb3J0IC11IHwgJE5MMlNQYAotCSAgICBkYXJ3aW5fZmlsZT0KLQkgICAgZGFyd2luX2ZpbGVzPQotCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKLQkgICAgICBsaXBvIC1jcmVhdGUgLW91dHB1dCAiJGRhcndpbl9maWxlIiAkZGFyd2luX2ZpbGVzCi0JICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0Ci0JICAgICR7cm19ciB1bmZhdC0kJAotCSAgICBjZCAiJGRhcndpbl9vcmlnX2RpciIKLQkgIGVsc2UKLQkgICAgY2QgIiRkYXJ3aW5fb3JpZ19kaXIiCi0gCSAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKLQkgIGZpICMgJGRhcndpbl9hcmNoZXMKLQlmaSAjICRydW4KLQk7OwotICAgICAgKikKLSAgICAgICAgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgIiRteV94ZGlyIiAiJG15X3hhYnMiCi0gICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAotICAgIGRvbmUKLSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKLX0KLSMgRW5kIG9mIFNoZWxsIGZ1bmN0aW9uIGRlZmluaXRpb25zCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0KLSMgRGFyd2luIHN1Y2tzCi1ldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotCi1kaXNhYmxlX2xpYnM9bm8KLQotIyBQYXJzZSBvdXIgY29tbWFuZCBsaW5lIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4KLXdoaWxlIHRlc3QgIiQjIiAtZ3QgMAotZG8KLSAgYXJnPSIkMSIKLSAgc2hpZnQKLQotICBjYXNlICRhcmcgaW4KLSAgLSo9Kikgb3B0YXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MvWy1fYS16QS1aMC05XSo9Ly8nYCA7OwotICAqKSBvcHRhcmc9IDs7Ci0gIGVzYWMKLQotICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KLSAgaWYgdGVzdCAtbiAiJHByZXYiOyB0aGVuCi0gICAgY2FzZSAkcHJldiBpbgotICAgIGV4ZWN1dGVfZGxmaWxlcykKLSAgICAgIGV4ZWN1dGVfZGxmaWxlcz0iJGV4ZWN1dGVfZGxmaWxlcyAkYXJnIgotICAgICAgOzsKLSAgICB0YWcpCi0gICAgICB0YWduYW1lPSIkYXJnIgotICAgICAgcHJlc2VydmVfYXJncz0iJHtwcmVzZXJ2ZV9hcmdzfT0kYXJnIgotCi0gICAgICAjIENoZWNrIHdoZXRoZXIgdGFnbmFtZSBjb250YWlucyBvbmx5IHZhbGlkIGNoYXJhY3RlcnMKLSAgICAgIGNhc2UgJHRhZ25hbWUgaW4KLSAgICAgICpbIS1fQS1aYS16MC05LC9dKikKLQkkZWNobyAiJHByb2duYW1lOiBpbnZhbGlkIHRhZyBuYW1lOiAkdGFnbmFtZSIgMT4mMgotCWV4aXQgJEVYSVRfRkFJTFVSRQotCTs7Ci0gICAgICBlc2FjCi0KLSAgICAgIGNhc2UgJHRhZ25hbWUgaW4KLSAgICAgIENDKQotCSMgRG9uJ3QgdGVzdCBmb3IgdGhlICJkZWZhdWx0IiBDIHRhZywgYXMgd2Uga25vdywgaXQncyB0aGVyZSwgYnV0Ci0JIyBub3Qgc3BlY2lhbGx5IG1hcmtlZC4KLQk7OwotICAgICAgKikKLQlpZiBncmVwICJeIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZSQiIDwgIiRwcm9ncGF0aCIgPiAvZGV2L251bGw7IHRoZW4KLQkgIHRhZ2xpc3Q9IiR0YWdsaXN0ICR0YWduYW1lIgotCSAgIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4KLQkgIGV2YWwgImAke1NFRH0gLW4gLWUgJy9eIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAnJHRhZ25hbWUnJC8sL14jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAnJHRhZ25hbWUnJC9wJyA8ICRwcm9ncGF0aGAiCi0JZWxzZQotCSAgJGVjaG8gIiRwcm9nbmFtZTogaWdub3JpbmcgdW5rbm93biB0YWcgJHRhZ25hbWUiIDE+JjIKLQlmaQotCTs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgICopCi0gICAgICBldmFsICIkcHJldj1cJGFyZyIKLSAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgcHJldj0KLSAgICBwcmV2b3B0PQotICAgIGNvbnRpbnVlCi0gIGZpCi0KLSAgIyBIYXZlIHdlIHNlZW4gYSBub24tb3B0aW9uYWwgYXJndW1lbnQgeWV0PwotICBjYXNlICRhcmcgaW4KLSAgLS1oZWxwKQotICAgIHNob3dfaGVscD15ZXMKLSAgICA7OwotCi0gIC0tdmVyc2lvbikKLSAgICBlY2hvICJcCi0kUFJPR1JBTSAoR05VICRQQUNLQUdFKSAkVkVSU0lPTiRUSU1FU1RBTVAKLQotQ29weXJpZ2h0IChDKSAyMDA4ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLVRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCi13YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4iCi0gICAgZXhpdCAkPwotICAgIDs7Ci0KLSAgLS1jb25maWcpCi0gICAgJHtTRUR9IC1lICcxLC9eIyAjIyMgQkVHSU4gTElCVE9PTCBDT05GSUcvZCcgLWUgJy9eIyAjIyMgRU5EIExJQlRPT0wgQ09ORklHLywkZCcgJHByb2dwYXRoCi0gICAgIyBOb3cgcHJpbnQgdGhlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgdGFncy4KLSAgICBmb3IgdGFnbmFtZSBpbiAkdGFnbGlzdDsgZG8KLSAgICAgICR7U0VEfSAtbiAtZSAiL14jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lJC8sL14jICMjIyBFTkQgTElCVE9PTCBUQUcgQ09ORklHOiAkdGFnbmFtZSQvcCIgPCAiJHByb2dwYXRoIgotICAgIGRvbmUKLSAgICBleGl0ICQ/Ci0gICAgOzsKLQotICAtLWRlYnVnKQotICAgICRlY2hvICIkcHJvZ25hbWU6IGVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCi0gICAgc2V0IC14Ci0gICAgcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJGFyZyIKLSAgICA7OwotCi0gIC0tZHJ5LXJ1biB8IC1uKQotICAgIHJ1bj06Ci0gICAgOzsKLQotICAtLWZlYXR1cmVzKQotICAgICRlY2hvICJob3N0OiAkaG9zdCIKKyAgICB3cml0ZV9saWJvYmo9JHsxfQogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkZWNobyAiZW5hYmxlIHNoYXJlZCBsaWJyYXJpZXMiCisgICAgICB3cml0ZV9sb2JqPVwnJHsyfVwnCiAgICAgZWxzZQotICAgICAgJGVjaG8gImRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyIKKyAgICAgIHdyaXRlX2xvYmo9bm9uZQogICAgIGZpCisKICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICAkZWNobyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCisgICAgICB3cml0ZV9vbGRvYmo9XCckezN9XCcKICAgICBlbHNlCi0gICAgICAkZWNobyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgorICAgICAgd3JpdGVfb2xkb2JqPW5vbmUKICAgICBmaQotICAgIGV4aXQgJD8KLSAgICA7OwogCi0gIC0tZmluaXNoKSBtb2RlPSJmaW5pc2giIDs7CisgICAgJG9wdF9kcnlfcnVuIHx8IHsKKyAgICAgIGNhdCA+JHt3cml0ZV9saWJvYmp9VCA8PEVPRgorIyAkd3JpdGVfbGlib2JqIC0gYSBsaWJ0b29sIG9iamVjdCBmaWxlCisjIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04KKyMKKyMgUGxlYXNlIERPIE5PVCBkZWxldGUgdGhpcyBmaWxlIQorIyBJdCBpcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgdGhlIGxpYnJhcnkuCiAKLSAgLS1tb2RlKSBwcmV2b3B0PSItLW1vZGUiIHByZXY9bW9kZSA7OwotICAtLW1vZGU9KikgbW9kZT0iJG9wdGFyZyIgOzsKKyMgTmFtZSBvZiB0aGUgUElDIG9iamVjdC4KK3BpY19vYmplY3Q9JHdyaXRlX2xvYmoKIAotICAtLXByZXNlcnZlLWR1cC1kZXBzKSBkdXBsaWNhdGVfZGVwcz0ieWVzIiA7OworIyBOYW1lIG9mIHRoZSBub24tUElDIG9iamVjdAorbm9uX3BpY19vYmplY3Q9JHdyaXRlX29sZG9iagogCi0gIC0tcXVpZXQgfCAtLXNpbGVudCkKLSAgICBzaG93PToKLSAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkYXJnIgotICAgIDs7CitFT0YKKyAgICAgICRNViAiJHt3cml0ZV9saWJvYmp9VCIgIiR7d3JpdGVfbGlib2JqfSIKKyAgICB9Cit9CiAKLSAgLS10YWcpCi0gICAgcHJldm9wdD0iLS10YWciCi0gICAgcHJldj10YWcKLSAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAtLXRhZyIKLSAgICA7OwotICAtLXRhZz0qKQotICAgIHNldCB0YWcgIiRvcHRhcmciICR7MSsiJEAifQotICAgIHNoaWZ0Ci0gICAgcHJldj10YWcKLSAgICBwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAtLXRhZyIKLSAgICA7OwotCi0gIC1kbG9wZW4pCi0gICAgcHJldm9wdD0iLWRsb3BlbiIKLSAgICBwcmV2PWV4ZWN1dGVfZGxmaWxlcwotICAgIDs7Ci0KLSAgLSopCi0gICAgJGVjaG8gIiRtb2RlbmFtZTogdW5yZWNvZ25pemVkIG9wdGlvbiBcYCRhcmcnIiAxPiYyCi0gICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgOzsKLQotICAqKQotICAgIG5vbm9wdD0iJGFyZyIKLSAgICBicmVhawotICAgIDs7Ci0gIGVzYWMKLWRvbmUKLQotaWYgdGVzdCAtbiAiJHByZXZvcHQiOyB0aGVuCi0gICRlY2hvICIkbW9kZW5hbWU6IG9wdGlvbiBcYCRwcmV2b3B0JyByZXF1aXJlcyBhbiBhcmd1bWVudCIgMT4mMgotICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgZXhpdCAkRVhJVF9GQUlMVVJFCi1maQotCi1jYXNlICRkaXNhYmxlX2xpYnMgaW4KLW5vKSAKLSAgOzsKLXNoYXJlZCkKLSAgYnVpbGRfbGlidG9vbF9saWJzPW5vCi0gIGJ1aWxkX29sZF9saWJzPXllcwotICA7Owotc3RhdGljKQotICBidWlsZF9vbGRfbGlicz1gY2FzZSAkYnVpbGRfbGlidG9vbF9saWJzIGluIHllcykgZWNobyBubzs7ICopIGVjaG8geWVzOzsgZXNhY2AKLSAgOzsKLWVzYWMKLQotIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0Ci0jIHdpbGwgYmUgZXhlY2VkIGF0IHRoZSBlbmQuICBUaGlzIHByZXZlbnRzIGhlcmUtZG9jdW1lbnRzIGZyb20gYmVpbmcKLSMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KLWV4ZWNfY21kPQotCi1pZiB0ZXN0IC16ICIkc2hvd19oZWxwIjsgdGhlbgotCi0gICMgSW5mZXIgdGhlIG9wZXJhdGlvbiBtb2RlLgotICBpZiB0ZXN0IC16ICIkbW9kZSI7IHRoZW4KLSAgICAkZWNobyAiKioqIFdhcm5pbmc6IGluZmVycmluZyB0aGUgbW9kZSBvZiBvcGVyYXRpb24gaXMgZGVwcmVjYXRlZC4iIDE+JjIKLSAgICAkZWNobyAiKioqIEZ1dHVyZSB2ZXJzaW9ucyBvZiBMaWJ0b29sIHdpbGwgcmVxdWlyZSAtLW1vZGU9TU9ERSBiZSBzcGVjaWZpZWQuIiAxPiYyCi0gICAgY2FzZSAkbm9ub3B0IGluCi0gICAgKmNjIHwgY2MqIHwgKisrIHwgZ2NjKiB8ICotZ2NjKiB8IGcrKyogfCB4bGMqKQotICAgICAgbW9kZT1saW5rCi0gICAgICBmb3IgYXJnCi0gICAgICBkbwotCWNhc2UgJGFyZyBpbgotCS1jKQotCSAgIG1vZGU9Y29tcGlsZQotCSAgIGJyZWFrCi0JICAgOzsKLQllc2FjCi0gICAgICBkb25lCi0gICAgICA7OwotICAgICpkYiB8ICpkYnggfCAqc3RyYWNlIHwgKnRydXNzKQotICAgICAgbW9kZT1leGVjdXRlCi0gICAgICA7OwotICAgICppbnN0YWxsKnxjcHxtdikKLSAgICAgIG1vZGU9aW5zdGFsbAotICAgICAgOzsKLSAgICAqcm0pCi0gICAgICBtb2RlPXVuaW5zdGFsbAotICAgICAgOzsKLSAgICAqKQotICAgICAgIyBJZiB3ZSBoYXZlIG5vIG1vZGUsIGJ1dCBkbGZpbGVzIHdlcmUgc3BlY2lmaWVkLCB0aGVuIGRvIGV4ZWN1dGUgbW9kZS4KLSAgICAgIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIG1vZGU9ZXhlY3V0ZQotCi0gICAgICAjIEp1c3QgdXNlIHRoZSBkZWZhdWx0IG9wZXJhdGlvbiBtb2RlLgotICAgICAgaWYgdGVzdCAteiAiJG1vZGUiOyB0aGVuCi0JaWYgdGVzdCAtbiAiJG5vbm9wdCI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCBpbmZlciBvcGVyYXRpb24gbW9kZSBmcm9tIFxgJG5vbm9wdCciIDE+JjIKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjYW5ub3QgaW5mZXIgb3BlcmF0aW9uIG1vZGUgd2l0aG91dCBNT0RFLUFSR1MiIDE+JjIKLQlmaQotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgZXNhYwotICBmaQotCi0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCi0gIGlmIHRlc3QgLW4gIiRleGVjdXRlX2RsZmlsZXMiICYmIHRlc3QgIiRtb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0gICAgJGVjaG8gIiRtb2RlbmFtZTogdW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIiAxPiYyCi0gICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gIGZpCi0KLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotICBnZW5lcmljX2hlbHA9IiRoZWxwIgotICBoZWxwPSJUcnkgXGAkbW9kZW5hbWUgLS1oZWxwIC0tbW9kZT0kbW9kZScgZm9yIG1vcmUgaW5mb3JtYXRpb24uIgotCi0gICMgVGhlc2UgbW9kZXMgYXJlIGluIG9yZGVyIG9mIGV4ZWN1dGlvbiBmcmVxdWVuY3kgc28gdGhhdCB0aGV5IHJ1biBxdWlja2x5LgotICBjYXNlICRtb2RlIGluCi0gICMgbGlidG9vbCBjb21waWxlIG1vZGUKLSAgY29tcGlsZSkKLSAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBjb21waWxlIgorIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KK2Z1bmNfbW9kZV9jb21waWxlICgpCit7CisgICAgJG9wdF9kZWJ1ZwogICAgICMgR2V0IHRoZSBjb21waWxhdGlvbiBjb21tYW5kIGFuZCB0aGUgc291cmNlIGZpbGUuCiAgICAgYmFzZV9jb21waWxlPQogICAgIHNyY2ZpbGU9IiRub25vcHQiICAjICBhbHdheXMga2VlcCBhIG5vbi1lbXB0eSB2YWx1ZSBpbiAic3JjZmlsZSIKQEAgLTY2NCw2ICsxMTA5LDcgQEAKICAgICBhcmdfbW9kZT1ub3JtYWwKICAgICBsaWJvYmo9CiAgICAgbGF0ZXI9CisgICAgcGllX2ZsYWc9CiAKICAgICBmb3IgYXJnCiAgICAgZG8KQEAgLTY4NCwxNSArMTEzMCwxOCBAQAogCSMgQWNjZXB0IGFueSBjb21tYW5kLWxpbmUgb3B0aW9ucy4KIAljYXNlICRhcmcgaW4KIAktbykKLQkgIGlmIHRlc3QgLW4gIiRsaWJvYmoiIDsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgY2Fubm90IHNwZWNpZnkgXGAtbycgbW9yZSB0aGFuIG9uY2UiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQorCSAgdGVzdCAtbiAiJGxpYm9iaiIgJiYgXAorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJ5b3UgY2Fubm90IHNwZWNpZnkgXGAtbycgbW9yZSB0aGFuIG9uY2UiCiAJICBhcmdfbW9kZT10YXJnZXQKIAkgIGNvbnRpbnVlCiAJICA7OwogCi0JLXN0YXRpYyB8IC1wcmVmZXItcGljIHwgLXByZWZlci1ub24tcGljKQorCS1waWUgfCAtZnBpZSB8IC1mUElFKQorICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKwkgIGNvbnRpbnVlCisJICA7OworCisJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKIAkgIGxhdGVyPSIkbGF0ZXIgJGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwpAQCAtNzA4LDMxICsxMTU3LDI1IEBACiAJICA7OyAgICAgICAgICAgICMgIHJlcGxhY2VkIGxhdGVyLiAgSSB3b3VsZCBndWVzcyB0aGF0IHdvdWxkIGJlIGEgYnVnLgogCiAJLVdjLCopCi0JICBhcmdzPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgInMvXi1XYywvLyJgCisJICBmdW5jX3N0cmlwbmFtZSAnLVdjLCcgJycgIiRhcmciCisJICBhcmdzPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgIGxhc3Rhcmc9CiAJICBzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKLSAJICBmb3IgYXJnIGluICRhcmdzOyBkbworCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0KLQkgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotCSAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQotCSAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgotCSAgICBjYXNlICRhcmcgaW4KLQkgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgICAgICBhcmc9IlwiJGFyZ1wiIgotCSAgICAgIDs7Ci0JICAgIGVzYWMKLQkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGFyZyIKKwkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKwkgICAgbGFzdGFyZz0iJGxhc3RhcmcgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCSAgZG9uZQogCSAgSUZTPSIkc2F2ZV9pZnMiCi0JICBsYXN0YXJnPWAkZWNobyAiWCRsYXN0YXJnIiB8ICRYc2VkIC1lICJzL14gLy8iYAorCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKKwkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCiAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KIAkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCi0JKiApCisJKikKIAkgICMgQWNjZXB0IHRoZSBjdXJyZW50IGFyZ3VtZW50IGFzIHRoZSBzb3VyY2UgZmlsZS4KIAkgICMgVGhlIHByZXZpb3VzICJzcmNmaWxlIiBiZWNvbWVzIHRoZSBjdXJyZW50IGFyZ3VtZW50LgogCSAgIwpAQCAtNzQ0LDY2ICsxMTg3LDQyIEBACiAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCiAKICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCi0gICAgICBsYXN0YXJnPWAkZWNobyAiWCRsYXN0YXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQotICAgICAgY2FzZSAkbGFzdGFyZyBpbgotICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotICAgICAgIyBNYW55IEJvdXJuZSBzaGVsbHMgY2Fubm90IGhhbmRsZSBjbG9zZSBicmFja2V0cyBjb3JyZWN0bHkKLSAgICAgICMgaW4gc2NhbiBzZXRzLCBhbmQgc29tZSBTdW5PUyBrc2ggbWlzdHJlYXQgYmFja3NsYXNoLWVzY2FwaW5nCi0gICAgICAjIGluIHNjYW4gc2V0cyAod29ya2VkIGFyb3VuZCB3aXRoIHZhcmlhYmxlIGV4cGFuc2lvbiksCi0gICAgICAjIGFuZCBmdXJ0aGVybW9yZSBjYW5ub3QgaGFuZGxlICd8JyAnJicgJygnICcpJyBpbiBzY2FuIHNldHMgCi0gICAgICAjIGF0IGFsbCwgc28gd2Ugc3BlY2lmeSB0aGVtIHNlcGFyYXRlbHkuCi0gICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQlsYXN0YXJnPSJcIiRsYXN0YXJnXCIiCi0JOzsKLSAgICAgIGVzYWMKLQotICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRsYXN0YXJnIgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCisgICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogICAgIGRvbmUgIyBmb3IgYXJnCiAKICAgICBjYXNlICRhcmdfbW9kZSBpbgogICAgIGFyZykKLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYW4gYXJndW1lbnQgZm9yIC1YY29tcGlsZSIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZnVuY19mYXRhbF9lcnJvciAieW91IG11c3Qgc3BlY2lmeSBhbiBhcmd1bWVudCBmb3IgLVhjb21waWxlIgogICAgICAgOzsKICAgICB0YXJnZXQpCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgdGFyZ2V0IHdpdGggXGAtbyciIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgZnVuY19mYXRhbF9lcnJvciAieW91IG11c3Qgc3BlY2lmeSBhIHRhcmdldCB3aXRoIFxgLW8nIgogICAgICAgOzsKICAgICAqKQogICAgICAgIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgb2JqZWN0LgotICAgICAgWyAteiAiJGxpYm9iaiIgXSAmJiBsaWJvYmo9YCRlY2hvICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICAgIHRlc3QgLXogIiRsaWJvYmoiICYmIHsKKwlmdW5jX2Jhc2VuYW1lICIkc3JjZmlsZSIKKwlsaWJvYmo9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICAgIH0KICAgICAgIDs7CiAgICAgZXNhYwogCiAgICAgIyBSZWNvZ25pemUgc2V2ZXJhbCBkaWZmZXJlbnQgZmlsZSBzdWZmaXhlcy4KICAgICAjIElmIHRoZSB1c2VyIHNwZWNpZmllcyAtbyBmaWxlLm8sIGl0IGlzIHJlcGxhY2VkIHdpdGggZmlsZS5sbwotICAgIHhmb3JtPSdbY0NGU2lmbXNvXScKICAgICBjYXNlICRsaWJvYmogaW4KLSAgICAqLmFkYSkgeGZvcm09YWRhIDs7Ci0gICAgKi5hZGIpIHhmb3JtPWFkYiA7OwotICAgICouYWRzKSB4Zm9ybT1hZHMgOzsKLSAgICAqLmFzbSkgeGZvcm09YXNtIDs7Ci0gICAgKi5jKyspIHhmb3JtPWMrKyA7OwotICAgICouY2MpIHhmb3JtPWNjIDs7Ci0gICAgKi5paSkgeGZvcm09aWkgOzsKLSAgICAqLmNsYXNzKSB4Zm9ybT1jbGFzcyA7OwotICAgICouY3BwKSB4Zm9ybT1jcHAgOzsKLSAgICAqLmN4eCkgeGZvcm09Y3h4IDs7Ci0gICAgKi5bZkZdWzA5XT8pIHhmb3JtPVtmRl1bMDldLiA7OwotICAgICouZm9yKSB4Zm9ybT1mb3IgOzsKLSAgICAqLmphdmEpIHhmb3JtPWphdmEgOzsKLSAgICAqLm9iaikgeGZvcm09b2JqIDs7Ci0gICAgKi5zeCkgeGZvcm09c3ggOzsKKyAgICAqLltjQ0ZTaWZtc29dIHwgXAorICAgICouYWRhIHwgKi5hZGIgfCAqLmFkcyB8ICouYXNtIHwgXAorICAgICouYysrIHwgKi5jYyB8ICouaWkgfCAqLmNsYXNzIHwgKi5jcHAgfCAqLmN4eCB8IFwKKyAgICAqLltmRl1bMDldPyB8ICouZm9yIHwgKi5qYXZhIHwgKi5vYmogfCAqLnN4KQorICAgICAgZnVuY194Zm9ybSAiJGxpYm9iaiIKKyAgICAgIGxpYm9iaj0kZnVuY194Zm9ybV9yZXN1bHQKKyAgICAgIDs7CiAgICAgZXNhYwogCi0gICAgbGlib2JqPWAkZWNobyAiWCRsaWJvYmoiIHwgJFhzZWQgLWUgInMvXC4keGZvcm0kLy5sby8iYAotCiAgICAgY2FzZSAkbGlib2JqIGluCi0gICAgKi5sbykgb2JqPWAkZWNobyAiWCRsaWJvYmoiIHwgJFhzZWQgLWUgIiRsbzJvImAgOzsKKyAgICAqLmxvKSBmdW5jX2xvMm8gIiRsaWJvYmoiOyBvYmo9JGZ1bmNfbG8yb19yZXN1bHQgOzsKICAgICAqKQotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGRldGVybWluZSBuYW1lIG9mIGxpYnJhcnkgb2JqZWN0IGZyb20gXGAkbGlib2JqJyIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZGV0ZXJtaW5lIG5hbWUgb2YgbGlicmFyeSBvYmplY3QgZnJvbSBcYCRsaWJvYmonIgogICAgICAgOzsKICAgICBlc2FjCiAKQEAgLTgxMSw3ICsxMjMwLDE1IEBACiAKICAgICBmb3IgYXJnIGluICRsYXRlcjsgZG8KICAgICAgIGNhc2UgJGFyZyBpbgorICAgICAgLXNoYXJlZCkKKwl0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgXAorCSAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJjYW4gbm90IGJ1aWxkIGEgc2hhcmVkIGxpYnJhcnkiCisJYnVpbGRfb2xkX2xpYnM9bm8KKwljb250aW51ZQorCTs7CisKICAgICAgIC1zdGF0aWMpCisJYnVpbGRfbGlidG9vbF9saWJzPW5vCiAJYnVpbGRfb2xkX2xpYnM9eWVzCiAJY29udGludWUKIAk7OwpAQCAtODI4LDI4ICsxMjU1LDE3IEBACiAgICAgICBlc2FjCiAgICAgZG9uZQogCi0gICAgcWxpYm9iaj1gJGVjaG8gIlgkbGlib2JqIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICBjYXNlICRxbGlib2JqIGluCi0gICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQlxbGlib2JqPSJcIiRxbGlib2JqXCIiIDs7Ci0gICAgZXNhYwotICAgIHRlc3QgIlgkbGlib2JqIiAhPSAiWCRxbGlib2JqIiBcCi0JJiYgJGVjaG8gIlgkbGlib2JqIiB8IGdyZXAgJ1tdfiNeKnt9Ozw+PyInIiciJyAJJigpfGAkW10nIFwKLQkmJiAkZWNobyAiJG1vZGVuYW1lOiBsaWJvYmogbmFtZSBcYCRsaWJvYmonIG1heSBub3QgY29udGFpbiBzaGVsbCBzcGVjaWFsIGNoYXJhY3RlcnMuIgotICAgIG9iam5hbWU9YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotICAgIHhkaXI9YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotICAgIGlmIHRlc3QgIlgkeGRpciIgPSAiWCRvYmoiOyB0aGVuCi0gICAgICB4ZGlyPQotICAgIGVsc2UKLSAgICAgIHhkaXI9JHhkaXIvCi0gICAgZmkKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGlib2JqIgorICAgIHRlc3QgIlgkbGlib2JqIiAhPSAiWCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIgXAorICAgICAgJiYgJEVDSE8gIlgkbGlib2JqIiB8ICRHUkVQICdbXX4jXip7fTs8Pj8iJyInIicJICYoKXxgJFtdJyBcCisgICAgICAmJiBmdW5jX3dhcm5pbmcgImxpYm9iaiBuYW1lIFxgJGxpYm9iaicgbWF5IG5vdCBjb250YWluIHNoZWxsIHNwZWNpYWwgY2hhcmFjdGVycy4iCisgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJG9iaiIgIi8iICIiCisgICAgb2JqbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogICAgIGxvYmo9JHt4ZGlyfSRvYmpkaXIvJG9iam5hbWUKIAotICAgIGlmIHRlc3QgLXogIiRiYXNlX2NvbXBpbGUiOyB0aGVuCi0gICAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgY29tcGlsYXRpb24gY29tbWFuZCIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQorICAgIHRlc3QgLXogIiRiYXNlX2NvbXBpbGUiICYmIFwKKyAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIGNvbXBpbGF0aW9uIGNvbW1hbmQiCiAKICAgICAjIERlbGV0ZSBhbnkgbGVmdG92ZXIgbGlicmFyeSBvYmplY3RzLgogICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KQEAgLTg1OCwxMiArMTI3NCw5IEBACiAgICAgICByZW1vdmVsaXN0PSIkbG9iaiAkbGlib2JqICR7bGlib2JqfVQiCiAgICAgZmkKIAotICAgICRydW4gJHJtICRyZW1vdmVsaXN0Ci0gICAgdHJhcCAiJHJ1biAkcm0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1Ci0KICAgICAjIE9uIEN5Z3dpbiB0aGVyZSdzIG5vICJyZWFsIiBQSUMgZmxhZyBzbyB3ZSBtdXN0IGJ1aWxkIGJvdGggb2JqZWN0IHR5cGVzCiAgICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IG9zMiopCisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKICAgICAgIHBpY19tb2RlPWRlZmF1bHQKICAgICAgIDs7CiAgICAgZXNhYwpAQCAtODc1LDEwICsxMjg4LDggQEAKICAgICAjIENhbGN1bGF0ZSB0aGUgZmlsZW5hbWUgb2YgdGhlIG91dHB1dCBvYmplY3QgaWYgY29tcGlsZXIgZG9lcwogICAgICMgbm90IHN1cHBvcnQgLW8gd2l0aCAtYwogICAgIGlmIHRlc3QgIiRjb21waWxlcl9jX28iID0gbm87IHRoZW4KLSAgICAgIG91dHB1dF9vYmo9YCRlY2hvICJYJHNyY2ZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJyAtZSAncyVcLlteLl0qJCUlJ2AuJHtvYmpleHR9CisgICAgICBvdXRwdXRfb2JqPWAkRUNITyAiWCRzcmNmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJScgLWUgJ3MlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQogICAgICAgbG9ja2ZpbGU9IiRvdXRwdXRfb2JqLmxvY2siCi0gICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkb3V0cHV0X29iaiAkbG9ja2ZpbGUiCi0gICAgICB0cmFwICIkcnVuICRybSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKICAgICBlbHNlCiAgICAgICBvdXRwdXRfb2JqPQogICAgICAgbmVlZF9sb2Nrcz1ubwpAQCAtODg4LDEzICsxMjk5LDEzIEBACiAgICAgIyBMb2NrIHRoaXMgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCBpcyBuZWVkZWQKICAgICAjIFdlIHVzZSB0aGlzIHNjcmlwdCBmaWxlIHRvIG1ha2UgdGhlIGxpbmssIGl0IGF2b2lkcyBjcmVhdGluZyBhIG5ldyBmaWxlCiAgICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0geWVzOyB0aGVuCi0gICAgICB1bnRpbCAkcnVuIGxuICIkcHJvZ3BhdGgiICIkbG9ja2ZpbGUiIDI+L2Rldi9udWxsOyBkbwotCSRzaG93ICJXYWl0aW5nIGZvciAkbG9ja2ZpbGUgdG8gYmUgcmVtb3ZlZCIKKyAgICAgIHVudGlsICRvcHRfZHJ5X3J1biB8fCBsbiAiJHByb2dwYXRoIiAiJGxvY2tmaWxlIiAyPi9kZXYvbnVsbDsgZG8KKwlmdW5jX2VjaG8gIldhaXRpbmcgZm9yICRsb2NrZmlsZSB0byBiZSByZW1vdmVkIgogCXNsZWVwIDIKICAgICAgIGRvbmUKICAgICBlbGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm47IHRoZW4KICAgICAgIGlmIHRlc3QgLWYgIiRsb2NrZmlsZSI7IHRoZW4KLQkkZWNobyAiXAorCSRFQ0hPICJcCiAqKiogRVJST1IsICRsb2NrZmlsZSBleGlzdHMgYW5kIGNvbnRhaW5zOgogYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgCiAKQEAgLTkwNSwzNCArMTMxNiwyMiBAQAogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKIAotCSRydW4gJHJtICRyZW1vdmVsaXN0CisJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAogCWV4aXQgJEVYSVRfRkFJTFVSRQogICAgICAgZmkKLSAgICAgICRlY2hvICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgorICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCisgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKICAgICBmaQogCisgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAorICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKKyAgICB0cmFwICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnIDEgMiAxNQorCiAgICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCiAgICAgICBldmFsIHNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiCiAgICAgZmkKLSAgICBxc3JjZmlsZT1gJGVjaG8gIlgkc3JjZmlsZSIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgY2FzZSAkcXNyY2ZpbGUgaW4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotICAgICAgcXNyY2ZpbGU9IlwiJHFzcmNmaWxlXCIiIDs7Ci0gICAgZXNhYwotCi0gICAgJHJ1biAkcm0gIiRsaWJvYmoiICIke2xpYm9ian1UIgotCi0gICAgIyBDcmVhdGUgYSBsaWJ0b29sIG9iamVjdCBmaWxlIChhbmFsb2dvdXMgdG8gYSAiLmxhIiBmaWxlKSwKLSAgICAjIGJ1dCBkb24ndCBjcmVhdGUgaXQgaWYgd2UncmUgZG9pbmcgYSBkcnkgcnVuLgotICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+ICR7bGlib2JqfVQgPDxFT0YKLSMgJGxpYm9iaiAtIGEgbGlidG9vbCBvYmplY3QgZmlsZQotIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QCi0jCi0jIFBsZWFzZSBETyBOT1QgZGVsZXRlIHRoaXMgZmlsZSEKLSMgSXQgaXMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHRoZSBsaWJyYXJ5LgotCi0jIE5hbWUgb2YgdGhlIFBJQyBvYmplY3QuCi1FT0YKKyAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKKyAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKIAogICAgICMgT25seSBidWlsZCBhIFBJQyBvYmplY3QgaWYgd2UgYXJlIGJ1aWxkaW5nIGxpYnRvb2wgbGlicmFyaWVzLgogICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCkBAIC05NDYsMzIgKzEzNDUsMTkgQEAKIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSIKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgISAtZCAiJHt4ZGlyfSRvYmpkaXIiOyB0aGVuCi0JJHNob3cgIiRta2RpciAke3hkaXJ9JG9iamRpciIKLQkkcnVuICRta2RpciAke3hkaXJ9JG9iamRpcgotCWV4aXRfc3RhdHVzPSQ/Ci0JaWYgdGVzdCAiJGV4aXRfc3RhdHVzIiAtbmUgMCAmJiB0ZXN0ICEgLWQgIiR7eGRpcn0kb2JqZGlyIjsgdGhlbgotCSAgZXhpdCAkZXhpdF9zdGF0dXMKLQlmaQotICAgICAgZmkKKyAgICAgIGZ1bmNfbWtkaXJfcCAiJHhkaXIkb2JqZGlyIgogCiAgICAgICBpZiB0ZXN0IC16ICIkb3V0cHV0X29iaiI7IHRoZW4KIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKIAljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKICAgICAgIGZpCiAKLSAgICAgICRydW4gJHJtICIkbG9iaiIgIiRvdXRwdXRfb2JqIgotCi0gICAgICAkc2hvdyAiJGNvbW1hbmQiCi0gICAgICBpZiAkcnVuIGV2YWwgJGx0X2VudiAiJGNvbW1hbmQiOyB0aGVuIDoKLSAgICAgIGVsc2UKLQl0ZXN0IC1uICIkb3V0cHV0X29iaiIgJiYgJHJ1biAkcm0gJHJlbW92ZWxpc3QKLQlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgIGZpCisgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIglcCisgICAgICAgICAgJ3Rlc3QgLW4gIiRvdXRwdXRfb2JqIiAmJiAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScKIAogICAgICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0gd2FybiAmJgogCSB0ZXN0ICJYYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgIiAhPSAiWCRzcmNmaWxlIjsgdGhlbgotCSRlY2hvICJcCisJJEVDSE8gIlwKICoqKiBFUlJPUiwgJGxvY2tmaWxlIGNvbnRhaW5zOgogYGNhdCAkbG9ja2ZpbGUgMj4vZGV2L251bGxgCiAKQEAgLTk4NSw0NSArMTM3MSwyNyBAQAogYXZvaWQgcGFyYWxsZWwgYnVpbGRzIChtYWtlIC1qKSBpbiB0aGlzIHBsYXRmb3JtLCBvciBnZXQgYSBiZXR0ZXIKIGNvbXBpbGVyLiIKIAotCSRydW4gJHJtICRyZW1vdmVsaXN0CisJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAogCWV4aXQgJEVYSVRfRkFJTFVSRQogICAgICAgZmkKIAogICAgICAgIyBKdXN0IG1vdmUgdGhlIG9iamVjdCBpZiBuZWVkZWQsIHRoZW4gZ28gb24gdG8gY29tcGlsZSB0aGUgbmV4dCBvbmUKICAgICAgIGlmIHRlc3QgLW4gIiRvdXRwdXRfb2JqIiAmJiB0ZXN0ICJYJG91dHB1dF9vYmoiICE9ICJYJGxvYmoiOyB0aGVuCi0JJHNob3cgIiRtdiAkb3V0cHV0X29iaiAkbG9iaiIKLQlpZiAkcnVuICRtdiAkb3V0cHV0X29iaiAkbG9iajsgdGhlbiA6Ci0JZWxzZQotCSAgZXJyb3I9JD8KLQkgICRydW4gJHJtICRyZW1vdmVsaXN0Ci0JICBleGl0ICRlcnJvcgotCWZpCisJZnVuY19zaG93X2V2YWwgJyRNViAiJG91dHB1dF9vYmoiICIkbG9iaiInIFwKKwkgICdlcnJvcj0kPzsgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkZXJyb3InCiAgICAgICBmaQogCi0gICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgUElDIG9iamVjdCB0byB0aGUgbGlidG9vbCBvYmplY3QgZmlsZS4KLSAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCi1waWNfb2JqZWN0PSckb2JqZGlyLyRvYmpuYW1lJwotCi1FT0YKLQogICAgICAgIyBBbGxvdyBlcnJvciBtZXNzYWdlcyBvbmx5IGZyb20gdGhlIGZpcnN0IGNvbXBpbGF0aW9uLgogICAgICAgaWYgdGVzdCAiJHN1cHByZXNzX29wdCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgc3VwcHJlc3Nfb3V0cHV0PScgPi9kZXYvbnVsbCAyPiYxJworCXN1cHByZXNzX291dHB1dD0nID4vZGV2L251bGwgMj4mMScKICAgICAgIGZpCi0gICAgZWxzZQotICAgICAgIyBObyBQSUMgb2JqZWN0IHNvIGluZGljYXRlIGl0IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGxpYnRvb2wKLSAgICAgICMgb2JqZWN0IGZpbGUuCi0gICAgICB0ZXN0IC16ICIkcnVuIiAmJiBjYXQgPj4gJHtsaWJvYmp9VCA8PEVPRgotcGljX29iamVjdD1ub25lCi0KLUVPRgogICAgIGZpCiAKICAgICAjIE9ubHkgYnVpbGQgYSBwb3NpdGlvbi1kZXBlbmRlbnQgb2JqZWN0IGlmIHdlIGJ1aWxkIG9sZCBsaWJyYXJpZXMuCiAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgogICAgICAgaWYgdGVzdCAiJHBpY19tb2RlIiAhPSB5ZXM7IHRoZW4KIAkjIERvbid0IGJ1aWxkIFBJQyBjb2RlCi0JY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUiCisJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUkcGllX2ZsYWciCiAgICAgICBlbHNlCiAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgogICAgICAgZmkKQEAgLTEwMzMsMTcgKzE0MDEsMTIgQEAKIAogICAgICAgIyBTdXBwcmVzcyBjb21waWxlciBvdXRwdXQgaWYgd2UgYWxyZWFkeSBkaWQgYSBQSUMgY29tcGlsYXRpb24uCiAgICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCi0gICAgICAkcnVuICRybSAiJG9iaiIgIiRvdXRwdXRfb2JqIgotICAgICAgJHNob3cgIiRjb21tYW5kIgotICAgICAgaWYgJHJ1biBldmFsICRsdF9lbnYgIiRjb21tYW5kIjsgdGhlbiA6Ci0gICAgICBlbHNlCi0JJHJ1biAkcm0gJHJlbW92ZWxpc3QKLQlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgIGZpCisgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCisgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCiAKICAgICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHdhcm4gJiYKIAkgdGVzdCAiWGBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYCIgIT0gIlgkc3JjZmlsZSI7IHRoZW4KLQkkZWNobyAiXAorCSRFQ0hPICJcCiAqKiogRVJST1IsICRsb2NrZmlsZSBjb250YWluczoKIGBjYXQgJGxvY2tmaWxlIDI+L2Rldi9udWxsYAogCkBAIC0xMDU3LDUzICsxNDIwLDI2MjAgQEAKIGF2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCiBjb21waWxlci4iCiAKLQkkcnVuICRybSAkcmVtb3ZlbGlzdAorCSRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3QKIAlleGl0ICRFWElUX0ZBSUxVUkUKICAgICAgIGZpCiAKICAgICAgICMgSnVzdCBtb3ZlIHRoZSBvYmplY3QgaWYgbmVlZGVkCiAgICAgICBpZiB0ZXN0IC1uICIkb3V0cHV0X29iaiIgJiYgdGVzdCAiWCRvdXRwdXRfb2JqIiAhPSAiWCRvYmoiOyB0aGVuCi0JJHNob3cgIiRtdiAkb3V0cHV0X29iaiAkb2JqIgotCWlmICRydW4gJG12ICRvdXRwdXRfb2JqICRvYmo7IHRoZW4gOgotCWVsc2UKLQkgIGVycm9yPSQ/Ci0JICAkcnVuICRybSAkcmVtb3ZlbGlzdAotCSAgZXhpdCAkZXJyb3IKLQlmaQorCWZ1bmNfc2hvd19ldmFsICckTVYgIiRvdXRwdXRfb2JqIiAiJG9iaiInIFwKKwkgICdlcnJvcj0kPzsgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkZXJyb3InCiAgICAgICBmaQotCi0gICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUuCi0gICAgICAjIE9ubHkgYXBwZW5kIGlmIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlIGV4aXN0cy4KLSAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCi0jIE5hbWUgb2YgdGhlIG5vbi1QSUMgb2JqZWN0Lgotbm9uX3BpY19vYmplY3Q9JyRvYmpuYW1lJwotCi1FT0YKLSAgICBlbHNlCi0gICAgICAjIEFwcGVuZCB0aGUgbmFtZSBvZiB0aGUgbm9uLVBJQyBvYmplY3QgdGhlIGxpYnRvb2wgb2JqZWN0IGZpbGUuCi0gICAgICAjIE9ubHkgYXBwZW5kIGlmIHRoZSBsaWJ0b29sIG9iamVjdCBmaWxlIGV4aXN0cy4KLSAgICAgIHRlc3QgLXogIiRydW4iICYmIGNhdCA+PiAke2xpYm9ian1UIDw8RU9GCi0jIE5hbWUgb2YgdGhlIG5vbi1QSUMgb2JqZWN0Lgotbm9uX3BpY19vYmplY3Q9bm9uZQotCi1FT0YKICAgICBmaQogCi0gICAgJHJ1biAkbXYgIiR7bGlib2JqfVQiICIke2xpYm9ian0iCisgICAgJG9wdF9kcnlfcnVuIHx8IHsKKyAgICAgIGZ1bmNfd3JpdGVfbGlidG9vbF9vYmplY3QgIiRsaWJvYmoiICIkb2JqZGlyLyRvYmpuYW1lIiAiJG9iam5hbWUiCiAKLSAgICAjIFVubG9jayB0aGUgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCB3YXMgbG9ja2VkCi0gICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0aGVuCi0gICAgICAkcnVuICRybSAiJGxvY2tmaWxlIgotICAgIGZpCisgICAgICAjIFVubG9jayB0aGUgY3JpdGljYWwgc2VjdGlvbiBpZiBpdCB3YXMgbG9ja2VkCisgICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgIT0gbm87IHRoZW4KKwlyZW1vdmVsaXN0PSRsb2NrZmlsZQorICAgICAgICAkUk0gIiRsb2NrZmlsZSIKKyAgICAgIGZpCisgICAgfQogCiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgOzsKK30KIAotICAjIGxpYnRvb2wgbGluayBtb2RlCi0gIGxpbmsgfCByZWxpbmspCi0gICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogbGluayIKKyRvcHRfaGVscCB8fCB7Cit0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorfQorCitmdW5jX21vZGVfaGVscCAoKQoreworICAgICMgV2UgbmVlZCB0byBkaXNwbGF5IGhlbHAgZm9yIGVhY2ggb2YgdGhlIG1vZGVzLgorICAgIGNhc2UgJG1vZGUgaW4KKyAgICAgICIiKQorICAgICAgICAjIEdlbmVyaWMgaGVscCBpcyBleHRyYWN0ZWQgZnJvbSB0aGUgdXNhZ2UgY29tbWVudHMKKyAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgorICAgICAgICBmdW5jX2hlbHAKKyAgICAgICAgOzsKKworICAgICAgY2xlYW4pCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1jbGVhbiBSTSBbUk0tT1BUSU9OXS4uLiBGSUxFLi4uCisKK1JlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkuCisKK1JNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQorKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAordG8gUk0uCisKK0lmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIG9iamVjdCBvciBwcm9ncmFtLCBhbGwgdGhlIGZpbGVzIGFzc29jaWF0ZWQKK3dpdGggaXQgYXJlIGRlbGV0ZWQuIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKKyAgICAgICAgOzsKKworICAgICAgY29tcGlsZSkKKyAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1jb21waWxlIENPTVBJTEUtQ09NTUFORC4uLiBTT1VSQ0VGSUxFCisKK0NvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBsaWJyYXJ5IG9iamVjdC4KKworVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CisKKyAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCisgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcworICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQorICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKKyAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgLXN0YXRpYyAgICAgICAgICAgb25seSBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCisKK0NPTVBJTEUtQ09NTUFORCBpcyBhIGNvbW1hbmQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyBhIFxgc3RhbmRhcmQnIG9iamVjdCBmaWxlCitmcm9tIHRoZSBnaXZlbiBTT1VSQ0VGSUxFLgorCitUaGUgb3V0cHV0IGZpbGUgbmFtZSBpcyBkZXRlcm1pbmVkIGJ5IHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IGZyb20KK1NPVVJDRUZJTEUsIHRoZW4gc3Vic3RpdHV0aW5nIHRoZSBDIHNvdXJjZSBjb2RlIHN1ZmZpeCBcYC5jJyB3aXRoIHRoZQorbGlicmFyeSBvYmplY3Qgc3VmZml4LCBcYC5sbycuIgorICAgICAgICA7OworCisgICAgICBleGVjdXRlKQorICAgICAgICAkRUNITyBcCisiVXNhZ2U6ICRwcm9nbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9ZXhlY3V0ZSBDT01NQU5EIFtBUkdTXS4uLgorCitBdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbS4KKworVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CisKKyAgLWRsb3BlbiBGSUxFICAgICAgYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyBGSUxFIHRvIHRoZSBsaWJyYXJ5IHBhdGgKKworVGhpcyBtb2RlIHNldHMgdGhlIGxpYnJhcnkgcGF0aCBlbnZpcm9ubWVudCB2YXJpYWJsZSBhY2NvcmRpbmcgdG8gXGAtZGxvcGVuJworZmxhZ3MuCisKK0lmIGFueSBvZiB0aGUgQVJHUyBhcmUgbGlidG9vbCBleGVjdXRhYmxlIHdyYXBwZXJzLCB0aGVuIHRoZXkgYXJlIHRyYW5zbGF0ZWQKK2ludG8gdGhlaXIgY29ycmVzcG9uZGluZyB1bmluc3RhbGxlZCBiaW5hcnksIGFuZCBhbnkgb2YgdGhlaXIgcmVxdWlyZWQgbGlicmFyeQorZGlyZWN0b3JpZXMgYXJlIGFkZGVkIHRvIHRoZSBsaWJyYXJ5IHBhdGguCisKK1RoZW4sIENPTU1BTkQgaXMgZXhlY3V0ZWQsIHdpdGggQVJHUyBhcyBhcmd1bWVudHMuIgorICAgICAgICA7OworCisgICAgICBmaW5pc2gpCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1maW5pc2ggW0xJQkRJUl0uLi4KKworQ29tcGxldGUgdGhlIGluc3RhbGxhdGlvbiBvZiBsaWJ0b29sIGxpYnJhcmllcy4KKworRWFjaCBMSUJESVIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBsaWJ0b29sIGxpYnJhcmllcy4KKworVGhlIGNvbW1hbmRzIHRoYXQgdGhpcyBtb2RlIGV4ZWN1dGVzIG1heSByZXF1aXJlIHN1cGVydXNlciBwcml2aWxlZ2VzLiAgVXNlCit0aGUgXGAtLWRyeS1ydW4nIG9wdGlvbiBpZiB5b3UganVzdCB3YW50IHRvIHNlZSB3aGF0IHdvdWxkIGJlIGV4ZWN1dGVkLiIKKyAgICAgICAgOzsKKworICAgICAgaW5zdGFsbCkKKyAgICAgICAgJEVDSE8gXAorIlVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gLS1tb2RlPWluc3RhbGwgSU5TVEFMTC1DT01NQU5ELi4uCisKK0luc3RhbGwgZXhlY3V0YWJsZXMgb3IgbGlicmFyaWVzLgorCitJTlNUQUxMLUNPTU1BTkQgaXMgdGhlIGluc3RhbGxhdGlvbiBjb21tYW5kLiAgVGhlIGZpcnN0IGNvbXBvbmVudCBzaG91bGQgYmUKK2VpdGhlciB0aGUgXGBpbnN0YWxsJyBvciBcYGNwJyBwcm9ncmFtLgorCitUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgSU5TVEFMTC1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKKworICAtaW5zdC1wcmVmaXggUFJFRklYLURJUiAgVXNlIFBSRUZJWC1ESVIgYXMgYSBzdGFnaW5nIGFyZWEgZm9yIGluc3RhbGxhdGlvbgorCitUaGUgcmVzdCBvZiB0aGUgY29tcG9uZW50cyBhcmUgaW50ZXJwcmV0ZWQgYXMgYXJndW1lbnRzIHRvIHRoYXQgY29tbWFuZCAob25seQorQlNELWNvbXBhdGlibGUgaW5zdGFsbCBvcHRpb25zIGFyZSByZWNvZ25pemVkKS4iCisgICAgICAgIDs7CisKKyAgICAgIGxpbmspCisgICAgICAgICRFQ0hPIFwKKyJVc2FnZTogJHByb2duYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1saW5rIExJTkstQ09NTUFORC4uLgorCitMaW5rIG9iamVjdCBmaWxlcyBvciBsaWJyYXJpZXMgdG9nZXRoZXIgdG8gZm9ybSBhbm90aGVyIGxpYnJhcnksIG9yIHRvCitjcmVhdGUgYW4gZXhlY3V0YWJsZSBwcm9ncmFtLgorCitMSU5LLUNPTU1BTkQgaXMgYSBjb21tYW5kIHVzaW5nIHRoZSBDIGNvbXBpbGVyIHRoYXQgeW91IHdvdWxkIHVzZSB0byBjcmVhdGUKK2EgcHJvZ3JhbSBmcm9tIHNldmVyYWwgb2JqZWN0IGZpbGVzLgorCitUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgb2YgTElOSy1DT01NQU5EIGFyZSB0cmVhdGVkIHNwZWNpYWxseToKKworICAtYWxsLXN0YXRpYyAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBhdCBhbGwKKyAgLWF2b2lkLXZlcnNpb24gICAgZG8gbm90IGFkZCBhIHZlcnNpb24gc3VmZml4IGlmIHBvc3NpYmxlCisgIC1kbG9wZW4gRklMRSAgICAgIFxgLWRscHJlb3BlbicgRklMRSBpZiBpdCBjYW5ub3QgYmUgZGxvcGVuZWQgYXQgcnVudGltZQorICAtZGxwcmVvcGVuIEZJTEUgICBsaW5rIGluIEZJTEUgYW5kIGFkZCBpdHMgc3ltYm9scyB0byBsdF9wcmVsb2FkZWRfc3ltYm9scworICAtZXhwb3J0LWR5bmFtaWMgICBhbGxvdyBzeW1ib2xzIGZyb20gT1VUUFVULUZJTEUgdG8gYmUgcmVzb2x2ZWQgd2l0aCBkbHN5bSgzKQorICAtZXhwb3J0LXN5bWJvbHMgU1lNRklMRQorICAgICAgICAgICAgICAgICAgICB0cnkgdG8gZXhwb3J0IG9ubHkgdGhlIHN5bWJvbHMgbGlzdGVkIGluIFNZTUZJTEUKKyAgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IFJFR0VYCisgICAgICAgICAgICAgICAgICAgIHRyeSB0byBleHBvcnQgb25seSB0aGUgc3ltYm9scyBtYXRjaGluZyBSRUdFWAorICAtTExJQkRJUiAgICAgICAgICBzZWFyY2ggTElCRElSIGZvciByZXF1aXJlZCBpbnN0YWxsZWQgbGlicmFyaWVzCisgIC1sTkFNRSAgICAgICAgICAgIE9VVFBVVC1GSUxFIHJlcXVpcmVzIHRoZSBpbnN0YWxsZWQgbGlicmFyeSBsaWJOQU1FCisgIC1tb2R1bGUgICAgICAgICAgIGJ1aWxkIGEgbGlicmFyeSB0aGF0IGNhbiBkbG9wZW5lZAorICAtbm8tZmFzdC1pbnN0YWxsICBkaXNhYmxlIHRoZSBmYXN0LWluc3RhbGwgbW9kZQorICAtbm8taW5zdGFsbCAgICAgICBsaW5rIGEgbm90LWluc3RhbGxhYmxlIGV4ZWN1dGFibGUKKyAgLW5vLXVuZGVmaW5lZCAgICAgZGVjbGFyZSB0aGF0IGEgbGlicmFyeSBkb2VzIG5vdCByZWZlciB0byBleHRlcm5hbCBzeW1ib2xzCisgIC1vIE9VVFBVVC1GSUxFICAgIGNyZWF0ZSBPVVRQVVQtRklMRSBmcm9tIHRoZSBzcGVjaWZpZWQgb2JqZWN0cworICAtb2JqZWN0bGlzdCBGSUxFICBVc2UgYSBsaXN0IG9mIG9iamVjdCBmaWxlcyBmb3VuZCBpbiBGSUxFIHRvIHNwZWNpZnkgb2JqZWN0cworICAtcHJlY2lvdXMtZmlsZXMtcmVnZXggUkVHRVgKKyAgICAgICAgICAgICAgICAgICAgZG9uJ3QgcmVtb3ZlIG91dHB1dCBmaWxlcyBtYXRjaGluZyBSRUdFWAorICAtcmVsZWFzZSBSRUxFQVNFICBzcGVjaWZ5IHBhY2thZ2UgcmVsZWFzZSBpbmZvcm1hdGlvbgorICAtcnBhdGggTElCRElSICAgICB0aGUgY3JlYXRlZCBsaWJyYXJ5IHdpbGwgZXZlbnR1YWxseSBiZSBpbnN0YWxsZWQgaW4gTElCRElSCisgIC1SWyBdTElCRElSICAgICAgIGFkZCBMSUJESVIgdG8gdGhlIHJ1bnRpbWUgcGF0aCBvZiBwcm9ncmFtcyBhbmQgbGlicmFyaWVzCisgIC1zaGFyZWQgICAgICAgICAgIG9ubHkgZG8gZHluYW1pYyBsaW5raW5nIG9mIGxpYnRvb2wgbGlicmFyaWVzCisgIC1zaHJleHQgU1VGRklYICAgIG92ZXJyaWRlIHRoZSBzdGFuZGFyZCBzaGFyZWQgbGlicmFyeSBmaWxlIGV4dGVuc2lvbgorICAtc3RhdGljICAgICAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBvZiB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcworICAtc3RhdGljLWxpYnRvb2wtbGlicworICAgICAgICAgICAgICAgICAgICBkbyBub3QgZG8gYW55IGR5bmFtaWMgbGlua2luZyBvZiBsaWJ0b29sIGxpYnJhcmllcworICAtdmVyc2lvbi1pbmZvIENVUlJFTlRbOlJFVklTSU9OWzpBR0VdXQorICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGxpYnJhcnkgdmVyc2lvbiBpbmZvIFtlYWNoIHZhcmlhYmxlIGRlZmF1bHRzIHRvIDBdCisgIC13ZWFrIExJQk5BTUUgICAgIGRlY2xhcmUgdGhhdCB0aGUgdGFyZ2V0IHByb3ZpZGVzIHRoZSBMSUJOQU1FIGludGVyZmFjZQorCitBbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgorCitFdmVyeSBvdGhlciBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWUuICBGaWxlcyBlbmRpbmcgaW4gXGAubGEnIGFyZQordHJlYXRlZCBhcyB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcywgb3RoZXIgZmlsZXMgYXJlIHN0YW5kYXJkIG9yIGxpYnJhcnkKK29iamVjdCBmaWxlcy4KKworSWYgdGhlIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubGEnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5IGlzIGNyZWF0ZWQsCitvbmx5IGxpYnJhcnkgb2JqZWN0cyAoXGAubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgXGAtcnBhdGgnIGlzCityZXF1aXJlZCwgZXhjZXB0IHdoZW4gY3JlYXRpbmcgYSBjb252ZW5pZW5jZSBsaWJyYXJ5LgorCitJZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmEnIG9yIFxgLmxpYicsIHRoZW4gYSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGNyZWF0ZWQKK3VzaW5nIFxgYXInIGFuZCBcYHJhbmxpYicsIG9yIG9uIFdpbmRvd3MgdXNpbmcgXGBsaWInLgorCitJZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxvJyBvciBcYC4ke29iamV4dH0nLCB0aGVuIGEgcmVsb2FkYWJsZSBvYmplY3QgZmlsZQoraXMgY3JlYXRlZCwgb3RoZXJ3aXNlIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBpcyBjcmVhdGVkLiIKKyAgICAgICAgOzsKKworICAgICAgdW5pbnN0YWxsKQorICAgICAgICAkRUNITyBcCisiVXNhZ2U6ICRwcm9nbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9dW5pbnN0YWxsIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KKworUmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCisKK1JNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQorKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAordG8gUk0uCisKK0lmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGl0IGFyZSBkZWxldGVkLgorT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgorICAgICAgICA7OworCisgICAgICAqKQorICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCisgICAgICAgIDs7CisgICAgZXNhYworCisgICAgJEVDSE8KKyAgICAkRUNITyAiVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgorCisgICAgZXhpdCAkPworfQorCisgICMgTm93IHRoYXQgd2UndmUgY29sbGVjdGVkIGEgcG9zc2libGUgLS1tb2RlIGFyZywgc2hvdyBoZWxwIGlmIG5lY2Vzc2FyeQorICAkb3B0X2hlbHAgJiYgZnVuY19tb2RlX2hlbHAKKworCisjIGZ1bmNfbW9kZV9leGVjdXRlIGFyZy4uLgorZnVuY19tb2RlX2V4ZWN1dGUgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgaXMgdGhlIGNvbW1hbmQgbmFtZS4KKyAgICBjbWQ9IiRub25vcHQiCisgICAgdGVzdCAteiAiJGNtZCIgJiYgXAorICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgQ09NTUFORCIKKworICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCisgICAgZm9yIGZpbGUgaW4gJGV4ZWN1dGVfZGxmaWxlczsgZG8KKyAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCisJfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSBmaWxlIgorCisgICAgICBkaXI9CisgICAgICBjYXNlICRmaWxlIGluCisgICAgICAqLmxhKQorCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCisJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKKwkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisKKwkjIFJlYWQgdGhlIGxpYnRvb2wgbGlicmFyeS4KKwlkbG5hbWU9CisJbGlicmFyeV9uYW1lcz0KKwlmdW5jX3NvdXJjZSAiJGZpbGUiCisKKwkjIFNraXAgdGhpcyBsaWJyYXJ5IGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZC4KKwlpZiB0ZXN0IC16ICIkZGxuYW1lIjsgdGhlbgorCSAgIyBXYXJuIGlmIGl0IHdhcyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiICYmIFwKKwkgICAgZnVuY193YXJuaW5nICJcYCRmaWxlJyB3YXMgbm90IGxpbmtlZCB3aXRoIFxgLWV4cG9ydC1keW5hbWljJyIKKwkgIGNvbnRpbnVlCisJZmkKKworCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgorCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisKKwlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KKwkgIGRpcj0iJGRpci8kb2JqZGlyIgorCWVsc2UKKwkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgorCSAgZmkKKwlmaQorCTs7CisKKyAgICAgICoubG8pCisJIyBKdXN0IGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIC5sbyBmaWxlLgorCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgorCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJOzsKKworICAgICAgKikKKwlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igbm9uLWxpYnRvb2wgbGlicmFyaWVzIGFuZCBvYmplY3RzIgorCWNvbnRpbnVlCisJOzsKKyAgICAgIGVzYWMKKworICAgICAgIyBHZXQgdGhlIGFic29sdXRlIHBhdGhuYW1lLgorICAgICAgYWJzZGlyPWBjZCAiJGRpciIgJiYgcHdkYAorICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgorCisgICAgICAjIE5vdyBhZGQgdGhlIGRpcmVjdG9yeSB0byBzaGxpYnBhdGhfdmFyLgorICAgICAgaWYgZXZhbCAidGVzdCAteiBcIlwkJHNobGlicGF0aF92YXJcIiI7IHRoZW4KKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCisgICAgICBlbHNlCisJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCisgICAgICBmaQorICAgIGRvbmUKKworICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgc2hsaWJwYXRoX3ZhcgorICAgICMgcmF0aGVyIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KKyAgICBsaWJ0b29sX2V4ZWN1dGVfbWFnaWM9IiRtYWdpYyIKKworICAgICMgQ2hlY2sgaWYgYW55IG9mIHRoZSBhcmd1bWVudHMgaXMgYSB3cmFwcGVyIHNjcmlwdC4KKyAgICBhcmdzPQorICAgIGZvciBmaWxlCisgICAgZG8KKyAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgIC0qKSA7OworICAgICAgKikKKwkjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyByZWFsbHkgYSBsaWJ0b29sIHByb2dyYW0uCisJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiRmaWxlIjsgdGhlbgorCSAgZnVuY19zb3VyY2UgIiRmaWxlIgorCSAgIyBUcmFuc2Zvcm0gYXJnIHRvIHdyYXBwZWQgbmFtZS4KKwkgIGZpbGU9IiRwcm9nZGlyLyRwcm9ncmFtIgorCWVsaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkZmlsZSI7IHRoZW4KKwkgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorCSAgZnVuY19zb3VyY2UgIiRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKwkgICMgVHJhbnNmb3JtIGFyZyB0byB3cmFwcGVkIG5hbWUuCisJICBmaWxlPSIkcHJvZ2Rpci8kcHJvZ3JhbSIKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgICAjIFF1b3RlIGFyZ3VtZW50cyAodG8gcHJlc2VydmUgc2hlbGwgbWV0YWNoYXJhY3RlcnMpLgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCisgICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgZG9uZQorCisgICAgaWYgdGVzdCAiWCRvcHRfZHJ5X3J1biIgPSBYZmFsc2U7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorCSMgRXhwb3J0IHRoZSBzaGxpYnBhdGhfdmFyLgorCWV2YWwgImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKKyAgICAgIGZpCisKKyAgICAgICMgUmVzdG9yZSBzYXZlZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKKyAgICAgIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUworICAgICAgZG8KKwlldmFsICJpZiB0ZXN0IFwiXCR7c2F2ZV8kbHRfdmFyK3NldH1cIiA9IHNldDsgdGhlbgorICAgICAgICAgICAgICAgICRsdF92YXI9XCRzYXZlXyRsdF92YXI7IGV4cG9ydCAkbHRfdmFyCisJICAgICAgZWxzZQorCQkkbHRfdW5zZXQgJGx0X3ZhcgorCSAgICAgIGZpIgorICAgICAgZG9uZQorCisgICAgICAjIE5vdyBwcmVwYXJlIHRvIGFjdHVhbGx5IGV4ZWMgdGhlIGNvbW1hbmQuCisgICAgICBleGVjX2NtZD0iXCRjbWQkYXJncyIKKyAgICBlbHNlCisgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKKwkkRUNITyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgorICAgICAgZmkKKyAgICAgICRFQ0hPICIkY21kJGFyZ3MiCisgICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICBmaQorfQorCit0ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorCisKKyMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KK2Z1bmNfbW9kZV9maW5pc2ggKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgbGliZGlycz0iJG5vbm9wdCIKKyAgICBhZG1pbmNtZHM9CisKKyAgICBpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMkZmluaXNoX2V2YWwiICYmIHRlc3QgLW4gIiRsaWJkaXJzIjsgdGhlbgorICAgICAgZm9yIGRpcgorICAgICAgZG8KKwlsaWJkaXJzPSIkbGliZGlycyAkZGlyIgorICAgICAgZG9uZQorCisgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworCWlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyI7IHRoZW4KKwkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJGZpbmlzaF9jbWRzIiAnYWRtaW5jbWRzPSIkYWRtaW5jbWRzCisnIiRjbWQiJyInCisJZmkKKwlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCisJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCisJICBldmFsIGNtZHM9XCIkZmluaXNoX2V2YWxcIgorCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKKyAgICAgICAkY21kcyIKKwlmaQorICAgICAgZG9uZQorICAgIGZpCisKKyAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KKyAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKKworICAgICRFQ0hPICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAorICAgICRFQ0hPICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCisgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKyAgICAgICRFQ0hPICIgICAkbGliZGlyIgorICAgIGRvbmUKKyAgICAkRUNITworICAgICRFQ0hPICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKKyAgICAkRUNITyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCisgICAgJEVDSE8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCisgICAgJEVDSE8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKKyAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKyAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorICAgICAgJEVDSE8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKyAgICBmaQorICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KKyAgICAgICRFQ0hPICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKKyAgICAgICRFQ0hPICIgICAgIGR1cmluZyBsaW5raW5nIgorICAgIGZpCisgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisgICAgICBsaWJkaXI9TElCRElSCisgICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisKKyAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisgICAgZmkKKyAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorICAgIGZpCisgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KKyAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKyAgICBmaQorICAgICRFQ0hPCisKKyAgICAkRUNITyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCiAgICAgY2FzZSAkaG9zdCBpbgotICAgICotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqKQorICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKKyAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCisJJEVDSE8gInBhZ2VzLiIKKwk7OworICAgICAgKikKKyAgICAgICAgJEVDSE8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgorICAgICAgICA7OworICAgIGVzYWMKKyAgICAkRUNITyAiWC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iIHwgJFhzZWQKKyAgICBleGl0ICRFWElUX1NVQ0NFU1MKK30KKwordGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CisKKworIyBmdW5jX21vZGVfaW5zdGFsbCBhcmcuLi4KK2Z1bmNfbW9kZV9pbnN0YWxsICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgICMgVGhlcmUgbWF5IGJlIGFuIG9wdGlvbmFsIHNoKDEpIGFyZ3VtZW50IGF0IHRoZSBiZWdpbm5pbmcgb2YKKyAgICAjIGluc3RhbGxfcHJvZyAoZXNwZWNpYWxseSBvbiBXaW5kb3dzIE5UKS4KKyAgICBpZiB0ZXN0ICIkbm9ub3B0IiA9ICIkU0hFTEwiIHx8IHRlc3QgIiRub25vcHQiID0gL2Jpbi9zaCB8fAorICAgICAgICMgQWxsb3cgdGhlIHVzZSBvZiBHTlUgc2h0b29sJ3MgaW5zdGFsbCBjb21tYW5kLgorICAgICAgICRFQ0hPICJYJG5vbm9wdCIgfCAkR1JFUCBzaHRvb2wgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJG5vbm9wdCIKKyAgICAgIGluc3RhbGxfcHJvZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0ICIKKyAgICAgIGFyZz0kMQorICAgICAgc2hpZnQKKyAgICBlbHNlCisgICAgICBpbnN0YWxsX3Byb2c9CisgICAgICBhcmc9JG5vbm9wdAorICAgIGZpCisKKyAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCisgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCisgICAgIyBXZSBuZWVkIHRvIGFjY2VwdCBhdCBsZWFzdCBhbGwgdGhlIEJTRCBpbnN0YWxsIGZsYWdzLgorICAgIGRlc3Q9CisgICAgZmlsZXM9CisgICAgb3B0cz0KKyAgICBwcmV2PQorICAgIGluc3RhbGxfdHlwZT0KKyAgICBpc2Rpcj1ubworICAgIHN0cmlwbWU9CisgICAgZm9yIGFyZworICAgIGRvCisgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KKwlmaWxlcz0iJGZpbGVzICRkZXN0IgorCWRlc3Q9JGFyZworCWNvbnRpbnVlCisgICAgICBmaQorCisgICAgICBjYXNlICRhcmcgaW4KKyAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKKyAgICAgIC1mKQorCWNhc2UgIiAkaW5zdGFsbF9wcm9nICIgaW4KKwkqW1xcXCAvXWNwXCAqKSA7OworCSopIHByZXY9JGFyZyA7OworCWVzYWMKKwk7OworICAgICAgLWcgfCAtbSB8IC1vKQorCXByZXY9JGFyZworCTs7CisgICAgICAtcykKKwlzdHJpcG1lPSIgLXMiCisJY29udGludWUKKwk7OworICAgICAgLSopCisJOzsKKyAgICAgICopCisJIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgorCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgorCSAgcHJldj0KKwllbHNlCisJICBkZXN0PSRhcmcKKwkgIGNvbnRpbnVlCisJZmkKKwk7OworICAgICAgZXNhYworCisgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgorICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKyAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgZG9uZQorCisgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAorICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGFuIGluc3RhbGwgcHJvZ3JhbSIKKworICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2JyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCisKKyAgICBpZiB0ZXN0IC16ICIkZmlsZXMiOyB0aGVuCisgICAgICBpZiB0ZXN0IC16ICIkZGVzdCI7IHRoZW4KKwlmdW5jX2ZhdGFsX2hlbHAgIm5vIGZpbGUgb3IgZGVzdGluYXRpb24gc3BlY2lmaWVkIgorICAgICAgZWxzZQorCWZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIGRlc3RpbmF0aW9uIgorICAgICAgZmkKKyAgICBmaQorCisgICAgIyBTdHJpcCBhbnkgdHJhaWxpbmcgc2xhc2ggZnJvbSB0aGUgZGVzdGluYXRpb24uCisgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZGVzdCIKKyAgICBkZXN0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKworICAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIGRlc3RpbmF0aW9uIGlzIGEgZGlyZWN0b3J5LgorICAgIHRlc3QgLWQgIiRkZXN0IiAmJiBpc2Rpcj15ZXMKKyAgICBpZiB0ZXN0ICIkaXNkaXIiID0geWVzOyB0aGVuCisgICAgICBkZXN0ZGlyPSIkZGVzdCIKKyAgICAgIGRlc3RuYW1lPQorICAgIGVsc2UKKyAgICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRkZXN0IiAiIiAiLiIKKyAgICAgIGRlc3RkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorICAgICAgZGVzdG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKworICAgICAgIyBOb3QgYSBkaXJlY3RvcnksIHNvIGNoZWNrIHRvIHNlZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIGZpbGUgc3BlY2lmaWVkLgorICAgICAgc2V0IGR1bW15ICRmaWxlczsgc2hpZnQKKyAgICAgIHRlc3QgIiQjIiAtZ3QgMSAmJiBcCisJZnVuY19mYXRhbF9oZWxwICJcYCRkZXN0JyBpcyBub3QgYSBkaXJlY3RvcnkiCisgICAgZmkKKyAgICBjYXNlICRkZXN0ZGlyIGluCisgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworICAgICopCisgICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCisJY2FzZSAkZmlsZSBpbgorCSoubG8pIDs7CisJKikKKwkgIGZ1bmNfZmF0YWxfaGVscCAiXGAkZGVzdGRpcicgbXVzdCBiZSBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSIKKwkgIDs7CisJZXNhYworICAgICAgZG9uZQorICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBzY3JpcHRzIGp1c3QgdG8gc2V0IHZhcmlhYmxlcyByYXRoZXIKKyAgICAjIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KKyAgICBsaWJ0b29sX2luc3RhbGxfbWFnaWM9IiRtYWdpYyIKKworICAgIHN0YXRpY2xpYnM9CisgICAgZnV0dXJlX2xpYmRpcnM9CisgICAgY3VycmVudF9saWJkaXJzPQorICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KKworICAgICAgIyBEbyBlYWNoIGluc3RhbGxhdGlvbi4KKyAgICAgIGNhc2UgJGZpbGUgaW4KKyAgICAgICouJGxpYmV4dCkKKwkjIERvIHRoZSBzdGF0aWMgbGlicmFyaWVzIGxhdGVyLgorCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgorCTs7CisKKyAgICAgICoubGEpCisJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KKwlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisKKwlsaWJyYXJ5X25hbWVzPQorCW9sZF9saWJyYXJ5PQorCXJlbGlua19jb21tYW5kPQorCWZ1bmNfc291cmNlICIkZmlsZSIKKworCSMgQWRkIHRoZSBsaWJkaXIgdG8gY3VycmVudF9saWJkaXJzIGlmIGl0IGlzIHRoZSBkZXN0aW5hdGlvbi4KKwlpZiB0ZXN0ICJYJGRlc3RkaXIiID0gIlgkbGliZGlyIjsgdGhlbgorCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCisJICAqIiAkbGliZGlyICIqKSA7OworCSAgKikgY3VycmVudF9saWJkaXJzPSIkY3VycmVudF9saWJkaXJzICRsaWJkaXIiIDs7CisJICBlc2FjCisJZWxzZQorCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgorCSAgY2FzZSAiJGZ1dHVyZV9saWJkaXJzICIgaW4KKwkgICoiICRsaWJkaXIgIiopIDs7CisJICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisJICBlc2FjCisJZmkKKworCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgorCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJZGlyPSIkZGlyJG9iamRpciIKKworCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKwkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCisJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJGRlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGxpYmRpclwkJSUiYAorCisJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCisJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CisJICAjIGFyZSBpbnN0YWxsZWQgdG8gdGhlIHNhbWUgcHJlZml4LgorCSAgIyBBdCBwcmVzZW50LCB0aGlzIGNoZWNrIGRvZXNuJ3QgYWZmZWN0IHdpbmRvd3MgLmRsbCdzIHRoYXQKKwkgICMgYXJlIGluc3RhbGxlZCBpbnRvICRsaWJkaXIvLi4vYmluIChjdXJyZW50bHksIHRoYXQgd29ya3MgZmluZSkKKwkgICMgYnV0IGl0J3Mgc29tZXRoaW5nIHRvIGtlZXAgYW4gZXllIG9uLgorCSAgdGVzdCAiJGluc3RfcHJlZml4X2RpciIgPSAiJGRlc3RkaXIiICYmIFwKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IGNhbm5vdCBpbnN0YWxsIFxgJGZpbGUnIHRvIGEgZGlyZWN0b3J5IG5vdCBlbmRpbmcgaW4gJGxpYmRpciIKKworCSAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKwkgICAgIyBTdGljayB0aGUgaW5zdF9wcmVmaXhfZGlyIGRhdGEgaW50byB0aGUgbGluayBjb21tYW5kLgorCSAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSJgCisJICBlbHNlCisJICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKKwkgIGZpCisKKwkgIGZ1bmNfd2FybmluZyAicmVsaW5raW5nIFxgJGZpbGUnIgorCSAgZnVuY19zaG93X2V2YWwgIiRyZWxpbmtfY29tbWFuZCIgXAorCSAgICAnZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHJlbGluayBcYCRmaWxlJ1wnJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0IicKKwlmaQorCisJIyBTZWUgdGhlIG5hbWVzIG9mIHRoZSBzaGFyZWQgbGlicmFyeS4KKwlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXM7IHNoaWZ0CisJaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisJICByZWFsbmFtZT0iJDEiCisJICBzaGlmdAorCisJICBzcmNuYW1lPSIkcmVhbG5hbWUiCisJICB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiICYmIHNyY25hbWU9IiRyZWFsbmFtZSJUCisKKwkgICMgSW5zdGFsbCB0aGUgc2hhcmVkIGxpYnJhcnkgYW5kIGJ1aWxkIHRoZSBzeW1saW5rcy4KKwkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRkaXIvJHNyY25hbWUgJGRlc3RkaXIvJHJlYWxuYW1lIiBcCisJICAgICAgJ2V4aXQgJD8nCisJICB0c3RyaXBtZT0iJHN0cmlwbWUiCisJICBjYXNlICRob3N0X29zIGluCisJICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisJICAgIGNhc2UgJHJlYWxuYW1lIGluCisJICAgICouZGxsLmEpCisJICAgICAgdHN0cmlwbWU9IiIKKwkgICAgICA7OworCSAgICBlc2FjCisJICAgIDs7CisJICBlc2FjCisJICBpZiB0ZXN0IC1uICIkdHN0cmlwbWUiICYmIHRlc3QgLW4gIiRzdHJpcGxpYiI7IHRoZW4KKwkgICAgZnVuY19zaG93X2V2YWwgIiRzdHJpcGxpYiAkZGVzdGRpci8kcmVhbG5hbWUiICdleGl0ICQ/JworCSAgZmkKKworCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisJICAgICMgRGVsZXRlIHRoZSBvbGQgc3ltbGlua3MsIGFuZCBjcmVhdGUgbmV3IG9uZXMuCisJICAgICMgVHJ5IGBsbiAtc2YnIGZpcnN0LCBiZWNhdXNlIHRoZSBgbG4nIGJpbmFyeSBtaWdodCBkZXBlbmQgb24KKwkgICAgIyB0aGUgc3ltbGluayB3ZSByZXBsYWNlISAgU29sYXJpcyAvYmluL2xuIGRvZXMgbm90IHVuZGVyc3RhbmQgLWYsCisJICAgICMgc28gd2UgYWxzbyBuZWVkIHRvIHRyeSBybSAmJiBsbiAtcy4KKwkgICAgZm9yIGxpbmtuYW1lCisJICAgIGRvCisJICAgICAgdGVzdCAiJGxpbmtuYW1lIiAhPSAiJHJlYWxuYW1lIiBcCisJCSYmIGZ1bmNfc2hvd19ldmFsICIoY2QgJGRlc3RkaXIgJiYgeyAkTE5fUyAtZiAkcmVhbG5hbWUgJGxpbmtuYW1lIHx8IHsgJFJNICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lOyB9OyB9KSIKKwkgICAgZG9uZQorCSAgZmkKKworCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgorCSAgbGliPSIkZGVzdGRpci8kcmVhbG5hbWUiCisJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RpbnN0YWxsX2NtZHMiICdleGl0ICQ/JworCWZpCisKKwkjIEluc3RhbGwgdGhlIHBzZXVkby1saWJyYXJ5IGZvciBpbmZvcm1hdGlvbiBwdXJwb3Nlcy4KKwlmdW5jX2Jhc2VuYW1lICIkZmlsZSIKKwluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJaW5zdG5hbWU9IiRkaXIvJG5hbWUiaQorCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCisKKwkjIE1heWJlIGluc3RhbGwgdGhlIHN0YXRpYyBsaWJyYXJ5LCB0b28uCisJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKKwk7OworCisgICAgICAqLmxvKQorCSMgSW5zdGFsbCAoaS5lLiBjb3B5KSBhIGxpYnRvb2wgb2JqZWN0LgorCisJIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgorCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KKwkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCisJZWxzZQorCSAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisJICBkZXN0ZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKKwlmaQorCisJIyBEZWR1Y2UgdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIG9sZC1zdHlsZSBvYmplY3QgZmlsZS4KKwljYXNlICRkZXN0ZmlsZSBpbgorCSoubG8pCisJICBmdW5jX2xvMm8gIiRkZXN0ZmlsZSIKKwkgIHN0YXRpY2Rlc3Q9JGZ1bmNfbG8yb19yZXN1bHQKKwkgIDs7CisJKi4kb2JqZXh0KQorCSAgc3RhdGljZGVzdD0iJGRlc3RmaWxlIgorCSAgZGVzdGZpbGU9CisJICA7OworCSopCisJICBmdW5jX2ZhdGFsX2hlbHAgImNhbm5vdCBjb3B5IGEgbGlidG9vbCBvYmplY3QgdG8gXGAkZGVzdGZpbGUnIgorCSAgOzsKKwllc2FjCisKKwkjIEluc3RhbGwgdGhlIGxpYnRvb2wgb2JqZWN0IGlmIHJlcXVlc3RlZC4KKwl0ZXN0IC1uICIkZGVzdGZpbGUiICYmIFwKKwkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRmaWxlICRkZXN0ZmlsZSIgJ2V4aXQgJD8nCisKKwkjIEluc3RhbGwgdGhlIG9sZCBvYmplY3QgaWYgZW5hYmxlZC4KKwlpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisJICAjIERlZHVjZSB0aGUgbmFtZSBvZiB0aGUgb2xkLXN0eWxlIG9iamVjdCBmaWxlLgorCSAgZnVuY19sbzJvICIkZmlsZSIKKwkgIHN0YXRpY29iaj0kZnVuY19sbzJvX3Jlc3VsdAorCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgXCRzdGF0aWNvYmogXCRzdGF0aWNkZXN0IiAnZXhpdCAkPycKKwlmaQorCWV4aXQgJEVYSVRfU1VDQ0VTUworCTs7CisKKyAgICAgICopCisJIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgorCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KKwkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCisJZWxzZQorCSAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisJICBkZXN0ZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKKwlmaQorCisJIyBJZiB0aGUgZmlsZSBpcyBtaXNzaW5nLCBhbmQgdGhlcmUgaXMgYSAuZXhlIG9uIHRoZSBlbmQsIHN0cmlwIGl0CisJIyBiZWNhdXNlIGl0IGlzIG1vc3QgbGlrZWx5IGEgbGlidG9vbCBzY3JpcHQgd2UgYWN0dWFsbHkgd2FudCB0bworCSMgaW5zdGFsbAorCXN0cmlwcGVkX2V4dD0iIgorCWNhc2UgJGZpbGUgaW4KKwkgICouZXhlKQorCSAgICBpZiB0ZXN0ICEgLWYgIiRmaWxlIjsgdGhlbgorCSAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZpbGUiCisJICAgICAgZmlsZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisJICAgICAgc3RyaXBwZWRfZXh0PSIuZXhlIgorCSAgICBmaQorCSAgICA7OworCWVzYWMKKworCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KKwljYXNlICRob3N0IGluCisJKmN5Z3dpbiogfCAqbWluZ3cqKQorCSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiRmaWxlIjsgdGhlbgorCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorCSAgICAgIHdyYXBwZXI9JGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CisJICAgIGVsc2UKKwkgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmaWxlIgorCSAgICAgIHdyYXBwZXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmaQorCSAgICA7OworCSopCisJICAgIHdyYXBwZXI9JGZpbGUKKwkgICAgOzsKKwllc2FjCisJaWYgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgIiR3cmFwcGVyIjsgdGhlbgorCSAgbm90aW5zdF9kZXBsaWJzPQorCSAgcmVsaW5rX2NvbW1hbmQ9CisKKwkgIGZ1bmNfc291cmNlICIkd3JhcHBlciIKKworCSAgIyBDaGVjayB0aGUgdmFyaWFibGVzIHRoYXQgc2hvdWxkIGhhdmUgYmVlbiBzZXQuCisJICB0ZXN0IC16ICIkZ2VuZXJhdGVkX2J5X2xpYnRvb2xfdmVyc2lvbiIgJiYgXAorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgXGAkd3JhcHBlciciCisKKwkgIGZpbmFsaXplPXllcworCSAgZm9yIGxpYiBpbiAkbm90aW5zdF9kZXBsaWJzOyBkbworCSAgICAjIENoZWNrIHRvIHNlZSB0aGF0IGVhY2ggbGlicmFyeSBpcyBpbnN0YWxsZWQuCisJICAgIGxpYmRpcj0KKwkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KKwkgICAgICBmdW5jX3NvdXJjZSAiJGxpYiIKKwkgICAgZmkKKwkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisJICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCisJICAgICAgZnVuY193YXJuaW5nICJcYCRsaWInIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gXGAkbGliZGlyJyIKKwkgICAgICBmaW5hbGl6ZT1ubworCSAgICBmaQorCSAgZG9uZQorCisJICByZWxpbmtfY29tbWFuZD0KKwkgIGZ1bmNfc291cmNlICIkd3JhcHBlciIKKworCSAgb3V0cHV0bmFtZT0KKwkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0gbm8gJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgIGlmIHRlc3QgIiRmaW5hbGl6ZSIgPSB5ZXM7IHRoZW4KKwkgICAgICAgIHRtcGRpcj1gZnVuY19ta3RlbXBkaXJgCisJCWZ1bmNfYmFzZW5hbWUgIiRmaWxlJHN0cmlwcGVkX2V4dCIKKwkJZmlsZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICAgICAgb3V0cHV0bmFtZT0iJHRtcGRpci8kZmlsZSIKKwkgICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KKwkgICAgICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZydgCisKKwkgICAgICAgICRvcHRfc2lsZW50IHx8IHsKKwkgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkcmVsaW5rX2NvbW1hbmQiCisJCSAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorCSAgICAgICAgfQorCSAgICAgICAgaWYgZXZhbCAiJHJlbGlua19jb21tYW5kIjsgdGhlbiA6CisJICAgICAgICAgIGVsc2UKKwkJICBmdW5jX2Vycm9yICJlcnJvcjogcmVsaW5rIFxgJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiCisJCSAgJG9wdF9kcnlfcnVuIHx8ICR7Uk19ciAiJHRtcGRpciIKKwkJICBjb250aW51ZQorCSAgICAgICAgZmkKKwkgICAgICAgIGZpbGU9IiRvdXRwdXRuYW1lIgorCSAgICAgIGVsc2UKKwkgICAgICAgIGZ1bmNfd2FybmluZyAiY2Fubm90IHJlbGluayBcYCRmaWxlJyIKKwkgICAgICBmaQorCSAgICB9CisJICBlbHNlCisJICAgICMgSW5zdGFsbCB0aGUgYmluYXJ5IHRoYXQgd2UgY29tcGlsZWQgZWFybGllci4KKwkgICAgZmlsZT1gJEVDSE8gIlgkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFhzZWQgLWUgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCisJICBmaQorCWZpCisKKwkjIHJlbW92ZSAuZXhlIHNpbmNlIGN5Z3dpbiAvdXNyL2Jpbi9pbnN0YWxsIHdpbGwgYXBwZW5kIGFub3RoZXIKKwkjIG9uZSBhbnl3YXkKKwljYXNlICRpbnN0YWxsX3Byb2csJGhvc3QgaW4KKwkqL3Vzci9iaW4vaW5zdGFsbCosKmN5Z3dpbiopCisJICBjYXNlICRmaWxlOiRkZXN0ZmlsZSBpbgorCSAgKi5leGU6Ki5leGUpCisJICAgICMgdGhpcyBpcyBvaworCSAgICA7OworCSAgKi5leGU6KikKKwkgICAgZGVzdGZpbGU9JGRlc3RmaWxlLmV4ZQorCSAgICA7OworCSAgKjoqLmV4ZSkKKwkgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZGVzdGZpbGUiCisJICAgIGRlc3RmaWxlPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKwkgICAgOzsKKwkgIGVzYWMKKwkgIDs7CisJZXNhYworCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nXCRzdHJpcG1lIFwkZmlsZSBcJGRlc3RmaWxlIiAnZXhpdCAkPycKKwkkb3B0X2RyeV9ydW4gfHwgaWYgdGVzdCAtbiAiJG91dHB1dG5hbWUiOyB0aGVuCisJICAke1JNfXIgIiR0bXBkaXIiCisJZmkKKwk7OworICAgICAgZXNhYworICAgIGRvbmUKKworICAgIGZvciBmaWxlIGluICRzdGF0aWNsaWJzOyBkbworICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCisgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisKKyAgICAgICMgU2V0IHVwIHRoZSByYW5saWIgcGFyYW1ldGVycy4KKyAgICAgIG9sZGxpYj0iJGRlc3RkaXIvJG5hbWUiCisKKyAgICAgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nIFwkZmlsZSBcJG9sZGxpYiIgJ2V4aXQgJD8nCisKKyAgICAgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkb2xkX3N0cmlwbGliIjsgdGhlbgorCWZ1bmNfc2hvd19ldmFsICIkb2xkX3N0cmlwbGliICRvbGRsaWIiICdleGl0ICQ/JworICAgICAgZmkKKworICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3RpbnN0YWxsIGNvbW1hbmRzLgorICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgJ2V4aXQgJD8nCisgICAgZG9uZQorCisgICAgdGVzdCAtbiAiJGZ1dHVyZV9saWJkaXJzIiAmJiBcCisgICAgICBmdW5jX3dhcm5pbmcgInJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCisKKyAgICBpZiB0ZXN0IC1uICIkY3VycmVudF9saWJkaXJzIjsgdGhlbgorICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KKyAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCisgICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCisgICAgZWxzZQorICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgZmkKK30KKwordGVzdCAiJG1vZGUiID0gaW5zdGFsbCAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KKworCisjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcAorIyBFeHRyYWN0IHN5bWJvbHMgZnJvbSBkbHByZWZpbGVzIGFuZCBjcmVhdGUgJHtvdXRwdXRuYW1lfVMubyB3aXRoCisjIGEgZGxwcmVvcGVuIHN5bWJvbCB0YWJsZS4KK2Z1bmNfZ2VuZXJhdGVfZGxzeW1zICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIG15X291dHB1dG5hbWU9IiQxIgorICAgIG15X29yaWdpbmF0b3I9IiQyIgorICAgIG15X3BpY19wPSIkezMtbm99IgorICAgIG15X3ByZWZpeD1gJEVDSE8gIiRteV9vcmlnaW5hdG9yIiB8IHNlZCAncyVbXmEtekEtWjAtOV0lXyVnJ2AKKyAgICBteV9kbHN5bXM9CisKKyAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJE5NIiAmJiB0ZXN0IC1uICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgorCW15X2Rsc3ltcz0iJHtteV9vdXRwdXRuYW1lfVMuYyIKKyAgICAgIGVsc2UKKwlmdW5jX2Vycm9yICJub3QgY29uZmlndXJlZCB0byBleHRyYWN0IGdsb2JhbCBzeW1ib2xzIGZyb20gZGxwcmVvcGVuZWQgZmlsZXMiCisgICAgICBmaQorICAgIGZpCisKKyAgICBpZiB0ZXN0IC1uICIkbXlfZGxzeW1zIjsgdGhlbgorICAgICAgY2FzZSAkbXlfZGxzeW1zIGluCisgICAgICAiIikgOzsKKyAgICAgICouYykKKwkjIERpc2NvdmVyIHRoZSBubGlzdCBvZiBlYWNoIG9mIHRoZSBkbGZpbGVzLgorCW5saXN0PSIkb3V0cHV0X29iamRpci8ke215X291dHB1dG5hbWV9Lm5tIgorCisJZnVuY19zaG93X2V2YWwgIiRSTSAkbmxpc3QgJHtubGlzdH1TICR7bmxpc3R9VCIKKworCSMgUGFyc2UgdGhlIG5hbWUgbGlzdCBpbnRvIGEgc291cmNlIGZpbGUuCisJZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgorCisJJG9wdF9kcnlfcnVuIHx8ICRFQ0hPID4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisvKiAkbXlfZGxzeW1zIC0gc3ltYm9sIHJlc29sdXRpb24gdGFibGUgZm9yIFxgJG15X291dHB1dG5hbWUnIGRsc3ltIGVtdWxhdGlvbi4gKi8KKy8qIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04gKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gXCJDXCIgeworI2VuZGlmCisKKy8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCisiCisKKwlpZiB0ZXN0ICIkZGxzZWxmIiA9IHllczsgdGhlbgorCSAgZnVuY192ZXJib3NlICJnZW5lcmF0aW5nIHN5bWJvbCBsaXN0IGZvciBcYCRvdXRwdXQnIgorCisJICAkb3B0X2RyeV9ydW4gfHwgZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCisKKwkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KKwkgIHByb2dmaWxlcz1gJEVDSE8gIlgkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCisJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgorCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRwcm9nZmlsZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisJICBkb25lCisKKwkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgZXZhbCAnJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCisJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKwkgICAgfQorCSAgZmkKKworCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworCSAgICB9CisJICBmaQorCisJICAjIFByZXBhcmUgdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scworCSAgaWYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgorCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKKwkgICAgICBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKKwkgICAgICBjYXNlICRob3N0IGluCisJICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCisgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAgICAgICAgICAgICAgICBldmFsICdjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisJICAgICAgICA7OworCSAgICAgIGVzYWMKKwkgICAgfQorCSAgZWxzZQorCSAgICAkb3B0X2RyeV9ydW4gfHwgeworCSAgICAgIGV2YWwgIiR7U0VEfSAtZSAncy9cKFtdLlsqXiRdXCkvXFxcXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIicgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiJworCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCisJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKwkgICAgICBjYXNlICRob3N0IGluCisJICAgICAgICAqY3lnd2luIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgICAgICAgICBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCisJICAgICAgICAgIDs7CisJICAgICAgZXNhYworCSAgICB9CisJICBmaQorCWZpCisKKwlmb3IgZGxwcmVmaWxlIGluICRkbHByZWZpbGVzOyBkbworCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgorCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKKwkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisJICAgIGV2YWwgIiROTSAkZGxwcmVmaWxlIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKwkgIH0KKwlkb25lCisKKwkkb3B0X2RyeV9ydW4gfHwgeworCSAgIyBNYWtlIHN1cmUgd2UgaGF2ZSBhdCBsZWFzdCBhbiBlbXB0eSBmaWxlLgorCSAgdGVzdCAtZiAiJG5saXN0IiB8fCA6ID4gIiRubGlzdCIKKworCSAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KKwkgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKKwkgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorCSAgZmkKKworCSAgIyBUcnkgc29ydGluZyBhbmQgdW5pcXVpZnlpbmcgdGhlIG91dHB1dC4KKwkgIGlmICRHUkVQIC12ICJeOiAiIDwgIiRubGlzdCIgfAorCSAgICAgIGlmIHNvcnQgLWsgMyA8L2Rldi9udWxsID4vZGV2L251bGwgMj4mMTsgdGhlbgorCQlzb3J0IC1rIDMKKwkgICAgICBlbHNlCisJCXNvcnQgKzIKKwkgICAgICBmaSB8CisJICAgICAgdW5pcSA+ICIkbmxpc3QiUzsgdGhlbgorCSAgICA6CisJICBlbHNlCisJICAgICRHUkVQIC12ICJeOiAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlMKKwkgIGZpCisKKwkgIGlmIHRlc3QgLWYgIiRubGlzdCJTOyB0aGVuCisJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IlMgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiJworCSAgZWxzZQorCSAgICAkRUNITyAnLyogTk9ORSAqLycgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisJICBmaQorCisJICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKworLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwordHlwZWRlZiBzdHJ1Y3QgeworICBjb25zdCBjaGFyICpuYW1lOworICB2b2lkICphZGRyZXNzOworfSBsdF9kbHN5bWxpc3Q7CisiCisJICBjYXNlICRob3N0IGluCisJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKwkgICAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCisgICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgorICAgb24gcHNldWRvLXJlbG9jcy4gICovIgorCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKKwkgICpvc2Y1KikKKwkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCisJICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworCSAgKikKKwkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKKwkgIGVzYWMKKworCSAgJEVDSE8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCitleHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdOworJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAorbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KK3tcCisgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgorCisJICBjYXNlICRuZWVkX2xpYl9wcmVmaXggaW4KKwkgIG5vKQorCSAgICBldmFsICIkZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgPCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKKwkgICAgOzsKKwkgICopCisJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIDwgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiCisJICAgIDs7CisJICBlc2FjCisJICAkRUNITyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKKyAgezAsICh2b2lkICopIDB9Cit9OworCisvKiBUaGlzIHdvcmtzIGFyb3VuZCBhIHByb2JsZW0gaW4gRnJlZUJTRCBsaW5rZXIgKi8KKyNpZmRlZiBGUkVFQlNEX1dPUktBUk9VTkQKK3N0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgIHJldHVybiBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzOworfQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmXAorIgorCX0gIyAhJG9wdF9kcnlfcnVuCisKKwlwaWNfZmxhZ19mb3Jfc3ltdGFibGU9CisJY2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCisJKiIgLXN0YXRpYyAiKikgOzsKKwkqKQorCSAgY2FzZSAkaG9zdCBpbgorCSAgIyBjb21waWxpbmcgdGhlIHN5bWJvbCB0YWJsZSBmaWxlIHdpdGggcGljX2ZsYWcgd29ya3MgYXJvdW5kCisJICAjIGEgRnJlZUJTRCBidWcgdGhhdCBjYXVzZXMgcHJvZ3JhbXMgdG8gY3Jhc2ggd2hlbiAtbG0gaXMKKwkgICMgbGlua2VkIGJlZm9yZSBhbnkgb3RoZXIgUElDIG9iamVjdC4gIEJ1dCB3ZSBtdXN0IG5vdCB1c2UKKwkgICMgcGljX2ZsYWcgd2hlbiBsaW5raW5nIHdpdGggLXN0YXRpYy4gIFRoZSBwcm9ibGVtIGV4aXN0cyBpbgorCSAgIyBGcmVlQlNEIDIuMi42IGFuZCBpcyBmaXhlZCBpbiBGcmVlQlNEIDMuMS4KKwkgICotKi1mcmVlYnNkMip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKKwkgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIC1ERlJFRUJTRF9XT1JLQVJPVU5EIiA7OworCSAgKi0qLWhwdXgqKQorCSAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWciICA7OworCSAgKikKKwkgICAgaWYgdGVzdCAiWCRteV9waWNfcCIgIT0gWG5vOyB0aGVuCisJICAgICAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPSIgJHBpY19mbGFnIgorCSAgICBmaQorCSAgICA7OworCSAgZXNhYworCSAgOzsKKwllc2FjCisJc3ltdGFiX2NmbGFncz0KKwlmb3IgYXJnIGluICRMVENGTEFHUzsgZG8KKwkgIGNhc2UgJGFyZyBpbgorCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7CisJICAqKSBzeW10YWJfY2ZsYWdzPSIkc3ltdGFiX2NmbGFncyAkYXJnIiA7OworCSAgZXNhYworCWRvbmUKKworCSMgTm93IGNvbXBpbGUgdGhlIGR5bmFtaWMgc3ltYm9sIGZpbGUuCisJZnVuY19zaG93X2V2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkTFRDQyRzeW10YWJfY2ZsYWdzIC1jJG5vX2J1aWx0aW5fZmxhZyRwaWNfZmxhZ19mb3Jfc3ltdGFibGUgIiRteV9kbHN5bXMiKScgJ2V4aXQgJD8nCisKKwkjIENsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCisJZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCInCisKKwkjIFRyYW5zZm9ybSB0aGUgc3ltYm9sIGZpbGUgaW50byB0aGUgY29ycmVjdCBuYW1lLgorCXN5bWZpbGVvYmo9IiRvdXRwdXRfb2JqZGlyLyR7bXlfb3V0cHV0bmFtZX1TLiRvYmpleHQiCisJY2FzZSAkaG9zdCBpbgorCSpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorCSAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmIjsgdGhlbgorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJG91dHB1dF9vYmpkaXIvJG15X291dHB1dG5hbWUuZGVmICRzeW1maWxlb2JqJSJgCisJICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiAkc3ltZmlsZW9iaiUiYAorCSAgZWxzZQorCSAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGZpCisJICA7OworCSopCisJICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyVAU1lNRklMRUAlJHN5bWZpbGVvYmolImAKKwkgIGZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRzeW1maWxlb2JqJSJgCisJICA7OworCWVzYWMKKwk7OworICAgICAgKikKKwlmdW5jX2ZhdGFsX2Vycm9yICJ1bmtub3duIHN1ZmZpeCBmb3IgXGAkbXlfZGxzeW1zJyIKKwk7OworICAgICAgZXNhYworICAgIGVsc2UKKyAgICAgICMgV2Uga2VlcCBnb2luZyBqdXN0IGluIGNhc2UgdGhlIHVzZXIgZGlkbid0IHJlZmVyIHRvCisgICAgICAjIGx0X3ByZWxvYWRlZF9zeW1ib2xzLiAgVGhlIGxpbmtlciB3aWxsIGZhaWwgaWYgZ2xvYmFsX3N5bWJvbF9waXBlCisgICAgICAjIHJlYWxseSB3YXMgcmVxdWlyZWQuCisKKyAgICAgICMgTnVsbGlmeSB0aGUgc3ltYm9sIGZpbGUuCisgICAgICBjb21waWxlX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAorICAgICAgZmluYWxpemVfY29tbWFuZD1gJEVDSE8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiYAorICAgIGZpCit9CisKKyMgZnVuY193aW4zMl9saWJpZCBhcmcKKyMgcmV0dXJuIHRoZSBsaWJyYXJ5IHR5cGUgb2YgZmlsZSAnYXJnJworIworIyBOZWVkIGEgbG90IG9mIGdvbyB0byBoYW5kbGUgKmJvdGgqIERMTHMgYW5kIGltcG9ydCBsaWJzCisjIEhhcyB0byBiZSBhIHNoZWxsIGZ1bmN0aW9uIGluIG9yZGVyIHRvICdlYXQnIHRoZSBhcmd1bWVudAorIyB0aGF0IGlzIHN1cHBsaWVkIHdoZW4gJGZpbGVfbWFnaWNfY29tbWFuZCBpcyBjYWxsZWQuCitmdW5jX3dpbjMyX2xpYmlkICgpCit7CisgICRvcHRfZGVidWcKKyAgd2luMzJfbGliaWRfdHlwZT0idW5rbm93biIKKyAgd2luMzJfZmlsZXJlcz1gZmlsZSAtTCAkMSAyPi9kZXYvbnVsbGAKKyAgY2FzZSAkd2luMzJfZmlsZXJlcyBpbgorICAqYXJcIGFyY2hpdmVcIGltcG9ydFwgbGlicmFyeSopICMgZGVmaW5pdGVseSBpbXBvcnQKKyAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCisgICAgOzsKKyAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYworICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKyAgICAgICAkRUdSRVAgJ2ZpbGUgZm9ybWF0IHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycgPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSAkMSB8CisJJFNFRCAtbiAtZSAnCisJICAgIDEsMTAweworCQkvIEkgL3sKKwkJICAgIHMsLiosaW1wb3J0LAorCQkgICAgcAorCQkgICAgcQorCQl9CisJICAgIH0nYAorICAgICAgY2FzZSAkd2luMzJfbm1yZXMgaW4KKyAgICAgIGltcG9ydCopICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiOzsKKyAgICAgICopICAgICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBzdGF0aWMiOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICAgIDs7CisgICpETEwqKQorICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBETEwiCisgICAgOzsKKyAgKmV4ZWN1dGFibGUqKSAjIGJ1dCBzaGVsbCBzY3JpcHRzIGFyZSAiZXhlY3V0YWJsZSIgdG9vLi4uCisgICAgY2FzZSAkd2luMzJfZmlsZXJlcyBpbgorICAgICpNU1wgV2luZG93c1wgUEVcIEludGVsKikKKyAgICAgIHdpbjMyX2xpYmlkX3R5cGU9Ing4NiBETEwiCisgICAgICA7OworICAgIGVzYWMKKyAgICA7OworICBlc2FjCisgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKK30KKworCisKKyMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgorZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgKCkKK3sKKyAgICAkb3B0X2RlYnVnCisgICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKKyAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCisgICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgJ2V4aXQgJD8nCisgICAgaWYgKCRBUiB0ICIkZl9leF9hbl9hcl9vbGRsaWIiIHwgc29ydCB8IHNvcnQgLXVjID4vZGV2L251bGwgMj4mMSk7IHRoZW4KKyAgICAgOgorICAgIGVsc2UKKyAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9iamVjdCBuYW1lIGNvbmZsaWN0cyBpbiBhcmNoaXZlOiAkZl9leF9hbl9hcl9kaXIvJGZfZXhfYW5fYXJfb2xkbGliIgorICAgIGZpCit9CisKKworIyBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgZ2VudG9wIG9sZGxpYiAuLi4KK2Z1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBteV9nZW50b3A9IiQxIjsgc2hpZnQKKyAgICBteV9vbGRsaWJzPSR7MSsiJEAifQorICAgIG15X29sZG9ianM9IiIKKyAgICBteV94bGliPSIiCisgICAgbXlfeGFicz0iIgorICAgIG15X3hkaXI9IiIKKworICAgIGZvciBteV94bGliIGluICRteV9vbGRsaWJzOyBkbworICAgICAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgorICAgICAgY2FzZSAkbXlfeGxpYiBpbgorCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgbXlfeGFicz0iJG15X3hsaWIiIDs7CisJKikgbXlfeGFicz1gcHdkYCIvJG15X3hsaWIiIDs7CisgICAgICBlc2FjCisgICAgICBmdW5jX2Jhc2VuYW1lICIkbXlfeGxpYiIKKyAgICAgIG15X3hsaWI9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICAgIG15X3hsaWJfdT0kbXlfeGxpYgorICAgICAgd2hpbGUgOjsgZG8KKyAgICAgICAgY2FzZSAiICRleHRyYWN0ZWRfYXJjaGl2ZXMgIiBpbgorCSoiICRteV94bGliX3UgIiopCisJICBmdW5jX2FyaXRoICRleHRyYWN0ZWRfc2VyaWFsICsgMQorCSAgZXh0cmFjdGVkX3NlcmlhbD0kZnVuY19hcml0aF9yZXN1bHQKKwkgIG15X3hsaWJfdT1sdCRleHRyYWN0ZWRfc2VyaWFsLSRteV94bGliIDs7CisJKikgYnJlYWsgOzsKKwllc2FjCisgICAgICBkb25lCisgICAgICBleHRyYWN0ZWRfYXJjaGl2ZXM9IiRleHRyYWN0ZWRfYXJjaGl2ZXMgJG15X3hsaWJfdSIKKyAgICAgIG15X3hkaXI9IiRteV9nZW50b3AvJG15X3hsaWJfdSIKKworICAgICAgZnVuY19ta2Rpcl9wICIkbXlfeGRpciIKKworICAgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKi1kYXJ3aW4qKQorCWZ1bmNfdmVyYm9zZSAiRXh0cmFjdGluZyAkbXlfeGFicyIKKwkjIERvIG5vdCBib3RoZXIgZG9pbmcgYW55dGhpbmcgaWYganVzdCBhIGRyeSBydW4KKwkkb3B0X2RyeV9ydW4gfHwgeworCSAgZGFyd2luX29yaWdfZGlyPWBwd2RgCisJICBjZCAkbXlfeGRpciB8fCBleGl0ICQ/CisJICBkYXJ3aW5fYXJjaGl2ZT0kbXlfeGFicworCSAgZGFyd2luX2N1cmRpcj1gcHdkYAorCSAgZGFyd2luX2Jhc2VfYXJjaGl2ZT1gYmFzZW5hbWUgIiRkYXJ3aW5fYXJjaGl2ZSJgCisJICBkYXJ3aW5fYXJjaGVzPWAkTElQTyAtaW5mbyAiJGRhcndpbl9hcmNoaXZlIiAyPi9kZXYvbnVsbCB8ICRHUkVQIEFyY2hpdGVjdHVyZXMgMj4vZGV2L251bGwgfHwgdHJ1ZWAKKwkgIGlmIHRlc3QgLW4gIiRkYXJ3aW5fYXJjaGVzIjsgdGhlbgorCSAgICBkYXJ3aW5fYXJjaGVzPWAkRUNITyAiJGRhcndpbl9hcmNoZXMiIHwgJFNFRCAtZSAncy8uKmFyZTovLydgCisJICAgIGRhcndpbl9hcmNoPQorCSAgICBmdW5jX3ZlcmJvc2UgIiRkYXJ3aW5fYmFzZV9hcmNoaXZlIGhhcyBtdWx0aXBsZSBhcmNoaXRlY3R1cmVzICRkYXJ3aW5fYXJjaGVzIgorCSAgICBmb3IgZGFyd2luX2FyY2ggaW4gICRkYXJ3aW5fYXJjaGVzIDsgZG8KKwkgICAgICBmdW5jX21rZGlyX3AgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0iCisJICAgICAgJExJUE8gLXRoaW4gJGRhcndpbl9hcmNoIC1vdXRwdXQgInVuZmF0LSQkLyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0tJHtkYXJ3aW5fYXJjaH0vJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfSIgIiR7ZGFyd2luX2FyY2hpdmV9IgorCSAgICAgIGNkICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgorCSAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICJgcHdkYCIgIiR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCisJICAgICAgY2QgIiRkYXJ3aW5fY3VyZGlyIgorCSAgICAgICRSTSAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofS8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9IgorCSAgICBkb25lICMgJGRhcndpbl9hcmNoZXMKKyAgICAgICAgICAgICMjIE9rYXkgbm93IHdlJ3ZlIGEgYnVuY2ggb2YgdGhpbiBvYmplY3RzLCBnb3R0YSBmYXR0ZW4gdGhlbSB1cCA6KQorCSAgICBkYXJ3aW5fZmlsZWxpc3Q9YGZpbmQgdW5mYXQtJCQgLXR5cGUgZiAtbmFtZSBcKi5vIC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkU0VEIC1lICIkYmFzZW5hbWUiIHwgc29ydCAtdWAKKwkgICAgZGFyd2luX2ZpbGU9CisJICAgIGRhcndpbl9maWxlcz0KKwkgICAgZm9yIGRhcndpbl9maWxlIGluICRkYXJ3aW5fZmlsZWxpc3Q7IGRvCisJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCisJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKKwkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKKwkgICAgJFJNIC1yZiB1bmZhdC0kJAorCSAgICBjZCAiJGRhcndpbl9vcmlnX2RpciIKKwkgIGVsc2UKKwkgICAgY2QgJGRhcndpbl9vcmlnX2RpcgorCSAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKKwkgIGZpICMgJGRhcndpbl9hcmNoZXMKKwl9ICMgISRvcHRfZHJ5X3J1bgorCTs7CisgICAgICAqKQorICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKKwk7OworICAgICAgZXNhYworICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKKyAgICBkb25lCisKKyAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKK30KKworCisKKyMgZnVuY19lbWl0X3dyYXBwZXJfcGFydDEgW2FyZz1ub10KKyMKKyMgRW1pdCB0aGUgZmlyc3QgcGFydCBvZiBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgorIyBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSBkZXNjcmlwdGlvbiBhc3NvY2lhdGVkIHdpdGgKKyMgZnVuY19lbWl0X3dyYXBwZXIoKSwgYmVsb3cuCitmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAoKQoreworCWZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxX2FyZzE9bm8KKwlpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCisJICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MV9hcmcxPSQxCisJZmkKKworCSRFQ0hPICJcCisjISAkU0hFTEwKKworIyAkb3V0cHV0IC0gdGVtcG9yYXJ5IHdyYXBwZXIgc2NyaXB0IGZvciAkb2JqZGlyLyRvdXRwdXRuYW1lCisjIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04KKyMKKyMgVGhlICRvdXRwdXQgcHJvZ3JhbSBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgdW50aWwgYWxsIHRoZSBsaWJ0b29sCisjIGxpYnJhcmllcyB0aGF0IGl0IGRlcGVuZHMgb24gYXJlIGluc3RhbGxlZC4KKyMKKyMgVGhpcyB3cmFwcGVyIHNjcmlwdCBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCisjIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KKworIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcworIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KK1hzZWQ9JyR7U0VEfSAtZSAxcy9eWC8vJworc2VkX3F1b3RlX3N1YnN0PSckc2VkX3F1b3RlX3N1YnN0JworCisjIEJlIEJvdXJuZSBjb21wYXRpYmxlCitpZiB0ZXN0IC1uIFwiXCR7WlNIX1ZFUlNJT04rc2V0fVwiICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgZW11bGF0ZSBzaAorICBOVUxMQ01EPToKKyAgIyBac2ggMy54IGFuZCA0LnggcGVyZm9ybXMgd29yZCBzcGxpdHRpbmcgb24gXCR7MStcIlwkQFwifSwgd2hpY2gKKyAgIyBpcyBjb250cmFyeSB0byBvdXIgdXNhZ2UuICBEaXNhYmxlIHRoaXMgZmVhdHVyZS4KKyAgYWxpYXMgLWcgJ1wkezErXCJcJEBcIn0nPSdcIlwkQFwiJworICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorZWxzZQorICBjYXNlIFxgKHNldCAtbykgMj4vZGV2L251bGxcYCBpbiAqcG9zaXgqKSBzZXQgLW8gcG9zaXg7OyBlc2FjCitmaQorQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKK0RVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKKworIyBUaGUgSFAtVVgga3NoIGFuZCBQT1NJWCBzaGVsbCBwcmludCB0aGUgdGFyZ2V0IGRpcmVjdG9yeSB0byBzdGRvdXQKKyMgaWYgQ0RQQVRIIGlzIHNldC4KKyh1bnNldCBDRFBBVEgpID4vZGV2L251bGwgMj4mMSAmJiB1bnNldCBDRFBBVEgKKworcmVsaW5rX2NvbW1hbmQ9XCIkcmVsaW5rX2NvbW1hbmRcIgorCisjIFRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgZGV0ZXJtaW5lcyBvdXIgb3BlcmF0aW9uIG1vZGUuCitpZiB0ZXN0IFwiXCRsaWJ0b29sX2luc3RhbGxfbWFnaWNcIiA9IFwiJG1hZ2ljXCI7IHRoZW4KKyAgIyBpbnN0YWxsIG1vZGUgbmVlZHMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXM6CisgIGdlbmVyYXRlZF9ieV9saWJ0b29sX3ZlcnNpb249JyRtYWNyb192ZXJzaW9uJworICBub3RpbnN0X2RlcGxpYnM9JyRub3RpbnN0X2RlcGxpYnMnCitlbHNlCisgICMgV2hlbiB3ZSBhcmUgc291cmNlZCBpbiBleGVjdXRlIG1vZGUsIFwkZmlsZSBhbmQgXCRFQ0hPIGFyZSBhbHJlYWR5IHNldC4KKyAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgorICAgIEVDSE89XCIkcWVjaG9cIgorICAgIGZpbGU9XCJcJDBcIgorICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCisgICAgaWYgdGVzdCBcIlhcJDFcIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgorICAgICAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCisgICAgICBzaGlmdAorICAgIGVsaWYgdGVzdCBcIlhcYHsgXCRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxcYFwiID0gJ1hcdCc7IHRoZW4KKyAgICAgICMgWWlwcGVlLCBcJEVDSE8gd29ya3MhCisgICAgICA6CisgICAgZWxzZQorICAgICAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSBcJEVDSE8gd2lsbCB3b3JrLgorICAgICAgZXhlYyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9CisgICAgZmkKKyAgZmlcCisiCisJJEVDSE8gIlwKKworICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgorICB0aGlzZGlyPVxgXCRFQ0hPIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKiQlJSdcYAorICB0ZXN0IFwieFwkdGhpc2RpclwiID0gXCJ4XCRmaWxlXCIgJiYgdGhpc2Rpcj0uCisKKyAgIyBGb2xsb3cgc3ltYm9saWMgbGlua3MgdW50aWwgd2UgZ2V0IHRvIHRoZSByZWFsIHRoaXNkaXIuCisgIGZpbGU9XGBscyAtbGQgXCJcJGZpbGVcIiB8ICR7U0VEfSAtbiAncy8uKi0+IC8vcCdcYAorICB3aGlsZSB0ZXN0IC1uIFwiXCRmaWxlXCI7IGRvCisgICAgZGVzdGRpcj1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyUvW14vXSpcJCUlJ1xgCisKKyAgICAjIElmIHRoZXJlIHdhcyBhIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gY2hhbmdlIHRoaXNkaXIuCisgICAgaWYgdGVzdCBcInhcJGRlc3RkaXJcIiAhPSBcInhcJGZpbGVcIjsgdGhlbgorICAgICAgY2FzZSBcIlwkZGVzdGRpclwiIGluCisgICAgICBbXFxcXC9dKiB8IFtBLVphLXpdOltcXFxcL10qKSB0aGlzZGlyPVwiXCRkZXN0ZGlyXCIgOzsKKyAgICAgICopIHRoaXNkaXI9XCJcJHRoaXNkaXIvXCRkZXN0ZGlyXCIgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorCisgICAgZmlsZT1cYFwkRUNITyBcIlhcJGZpbGVcIiB8IFwkWHNlZCAtZSAncyVeLiovJSUnXGAKKyAgICBmaWxlPVxgbHMgLWxkIFwiXCR0aGlzZGlyL1wkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCisgIGRvbmUKKyIKK30KKyMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MQorCisjIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyIFthcmc9bm9dCisjCisjIEVtaXQgdGhlIHNlY29uZCBwYXJ0IG9mIGEgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBvbiBzdGRvdXQuCisjIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIGRlc2NyaXB0aW9uIGFzc29jaWF0ZWQgd2l0aAorIyBmdW5jX2VtaXRfd3JhcHBlcigpLCBiZWxvdy4KK2Z1bmNfZW1pdF93cmFwcGVyX3BhcnQyICgpCit7CisJZnVuY19lbWl0X3dyYXBwZXJfcGFydDJfYXJnMT1ubworCWlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKwkgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQyX2FyZzE9JDEKKwlmaQorCisJJEVDSE8gIlwKKworICAjIFVzdWFsbHkgJ25vJywgZXhjZXB0IG9uIGN5Z3dpbi9taW5ndyB3aGVuIGVtYmVkZGVkIGludG8KKyAgIyB0aGUgY3dyYXBwZXIuCisgIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSPSRmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0Ml9hcmcxCisgIGlmIHRlc3QgXCJcJFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSXCIgPSBcInllc1wiOyB0aGVuCisgICAgIyBzcGVjaWFsIGNhc2UgZm9yICcuJworICAgIGlmIHRlc3QgXCJcJHRoaXNkaXJcIiA9IFwiLlwiOyB0aGVuCisgICAgICB0aGlzZGlyPVxgcHdkXGAKKyAgICBmaQorICAgICMgcmVtb3ZlIC5saWJzIGZyb20gdGhpc2RpcgorICAgIGNhc2UgXCJcJHRoaXNkaXJcIiBpbgorICAgICpbXFxcXC9dJG9iamRpciApIHRoaXNkaXI9XGBcJEVDSE8gXCJYXCR0aGlzZGlyXCIgfCBcJFhzZWQgLWUgJ3MlW1xcXFwvXVteXFxcXC9dKiQlJSdcYCA7OworICAgICRvYmpkaXIgKSAgIHRoaXNkaXI9LiA7OworICAgIGVzYWMKKyAgZmkKKworICAjIFRyeSB0byBnZXQgdGhlIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lLgorICBhYnNkaXI9XGBjZCBcIlwkdGhpc2RpclwiICYmIHB3ZFxgCisgIHRlc3QgLW4gXCJcJGFic2RpclwiICYmIHRoaXNkaXI9XCJcJGFic2RpclwiCisiCisKKwlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgorCSAgJEVDSE8gIlwKKyAgcHJvZ3JhbT1sdC0nJG91dHB1dG5hbWUnJGV4ZWV4dAorICBwcm9nZGlyPVwiXCR0aGlzZGlyLyRvYmpkaXJcIgorCisgIGlmIHRlc3QgISAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiB8fAorICAgICB7IGZpbGU9XGBscyAtMWR0IFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwiXCRwcm9nZGlyLy4uL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHwgJHtTRUR9IDFxXGA7IFxcCisgICAgICAgdGVzdCBcIlhcJGZpbGVcIiAhPSBcIlhcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH07IHRoZW4KKworICAgIGZpbGU9XCJcJFwkLVwkcHJvZ3JhbVwiCisKKyAgICBpZiB0ZXN0ICEgLWQgXCJcJHByb2dkaXJcIjsgdGhlbgorICAgICAgJE1LRElSIFwiXCRwcm9nZGlyXCIKKyAgICBlbHNlCisgICAgICAkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKKyAgICBmaSIKKworCSAgJEVDSE8gIlwKKworICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5CisgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgorICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6CisgICAgICBlbHNlCisJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgorCSRSTSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgorCWV4aXQgMQorICAgICAgZmkKKyAgICBmaQorCisgICAgJE1WIFwiXCRwcm9nZGlyL1wkZmlsZVwiIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHx8CisgICAgeyAkUk0gXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7CisgICAgICAkTVYgXCJcJHByb2dkaXIvXCRmaWxlXCIgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH0KKyAgICAkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKKyAgZmkiCisJZWxzZQorCSAgJEVDSE8gIlwKKyAgcHJvZ3JhbT0nJG91dHB1dG5hbWUnCisgIHByb2dkaXI9XCJcJHRoaXNkaXIvJG9iamRpclwiCisiCisJZmkKKworCSRFQ0hPICJcCisKKyAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKKworCSMgRXhwb3J0IG91ciBzaGxpYnBhdGhfdmFyIGlmIHdlIGhhdmUgb25lLgorCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KKwkgICRFQ0hPICJcCisgICAgIyBBZGQgb3VyIG93biBsaWJyYXJ5IHBhdGggdG8gJHNobGlicGF0aF92YXIKKyAgICAkc2hsaWJwYXRoX3Zhcj1cIiR0ZW1wX3JwYXRoXCQkc2hsaWJwYXRoX3ZhclwiCisKKyAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNobGlicGF0aF92YXIKKyAgICAjIFRoZSBzZWNvbmQgY29sb24gaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBCZU9TIFI0IHNlZAorICAgICRzaGxpYnBhdGhfdmFyPVxgXCRFQ0hPIFwiWFwkJHNobGlicGF0aF92YXJcIiB8IFwkWHNlZCAtZSAncy86OipcJC8vJ1xgCisKKyAgICBleHBvcnQgJHNobGlicGF0aF92YXIKKyIKKwlmaQorCisJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKwkgICRFQ0hPICJcCisgICAgIyBBZGQgdGhlIGRsbCBzZWFyY2ggcGF0aCBjb21wb25lbnRzIHRvIHRoZSBleGVjdXRhYmxlIFBBVEgKKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAorIgorCWZpCisKKwkkRUNITyAiXAorICAgIGlmIHRlc3QgXCJcJGxpYnRvb2xfZXhlY3V0ZV9tYWdpY1wiICE9IFwiJG1hZ2ljXCI7IHRoZW4KKyAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCisiCisJY2FzZSAkaG9zdCBpbgorCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCisJICAkRUNITyAiXAorICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisiCisJICA7OworCisJKikKKwkgICRFQ0hPICJcCisgICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKyIKKwkgIDs7CisJZXNhYworCSRFQ0hPICJcCisgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCisgICAgICBleGl0IDEKKyAgICBmaQorICBlbHNlCisgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgorICAgIFwkRUNITyBcIlwkMDogZXJyb3I6IFxcXGBcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKKyAgICBcJEVDSE8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKKyAgICAkRUNITyBcIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cIiAxPiYyCisgICAgZXhpdCAxCisgIGZpCitmaVwKKyIKK30KKyMgZW5kOiBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MgorCisKKyMgZnVuY19lbWl0X3dyYXBwZXIgW2FyZz1ub10KKyMKKyMgRW1pdCBhIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQgb24gc3Rkb3V0LgorIyBEb24ndCBkaXJlY3RseSBvcGVuIGEgZmlsZSBiZWNhdXNlIHdlIG1heSB3YW50IHRvCisjIGluY29ycG9yYXRlIHRoZSBzY3JpcHQgY29udGVudHMgd2l0aGluIGEgY3lnd2luL21pbmd3CisjIHdyYXBwZXIgZXhlY3V0YWJsZS4gIE11c3QgT05MWSBiZSBjYWxsZWQgZnJvbSB3aXRoaW4KKyMgZnVuY19tb2RlX2xpbmsgYmVjYXVzZSBpdCBkZXBlbmRzIG9uIGEgbnVtYmVyIG9mIHZhcmlhYmxlcworIyBzZXQgdGhlcmVpbi4KKyMKKyMgQVJHIGlzIHRoZSB2YWx1ZSB0aGF0IHRoZSBXUkFQUEVSX1NDUklQVF9CRUxPTkdTX0lOX09CSkRJUgorIyB2YXJpYWJsZSB3aWxsIHRha2UuICBJZiAneWVzJywgdGhlbiB0aGUgZW1pdHRlZCBzY3JpcHQKKyMgd2lsbCBhc3N1bWUgdGhhdCB0aGUgZGlyZWN0b3J5IGluIHdoaWNoIGl0IGlzIHN0b3JlZCBpcworIyB0aGUgJG9iamRpciBkaXJlY3RvcnkuICBUaGlzIGlzIGEgY3lnd2luL21pbmd3LXNwZWNpZmljCisjIGJlaGF2aW9yLgorZnVuY19lbWl0X3dyYXBwZXIgKCkKK3sKKwlmdW5jX2VtaXRfd3JhcHBlcl9hcmcxPW5vCisJaWYgdGVzdCAtbiAiJDEiIDsgdGhlbgorCSAgZnVuY19lbWl0X3dyYXBwZXJfYXJnMT0kMQorCWZpCisKKwkjIHNwbGl0IHRoaXMgdXAgc28gdGhhdCBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCisJIyBjYW4gY2FsbCBlYWNoIHBhcnQgaW5kZXBlbmRlbnRseS4KKwlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MSAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKKwlmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiAiJHtmdW5jX2VtaXRfd3JhcHBlcl9hcmcxfSIKK30KKworCisjIGZ1bmNfdG9faG9zdF9wYXRoIGFyZworIworIyBDb252ZXJ0IHBhdGhzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgorIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCisjIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQorIyBidWlsZCBlbnZpcm9ubWVudHM6CisjICAgICRidWlsZCAgICAgICAgICAkaG9zdAorIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KKyMgICAgY3lnd2luICAgICAgICAgIG1pbmd3CisjICAgICpuaXggKyB3aW5lICAgICBtaW5ndworIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KKyMgSW4gdGhlIG5hdGl2ZSBtaW5ndyBjYXNlLCB0aGUgKG1zeXMpIHNoZWxsIGF1dG9tYXRpY2FsbHkKKyMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCisjIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCisjIFNpbWlsYXIgYWNjb21tb2RhdGlvbnMgYXJlIG5lY2Vzc2FyeSBmb3IgJGhvc3QgbWluZ3cgYW5kCisjICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgorIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCisjCisjIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKyMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCisjIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCitmdW5jX3RvX2hvc3RfcGF0aCAoKQoreworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICBpZiB0ZXN0IC1uICIkMSIgOyB0aGVuCisgICAgY2FzZSAkaG9zdCBpbgorICAgICAgKm1pbmd3KiApCisgICAgICAgIGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKyAgICAgICAgY2FzZSAkYnVpbGQgaW4KKyAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cworICAgICAgICAgICAgIyBhd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0CisgICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gKCBjbWQgLy9jIGVjaG8gIiQxIiB8XAorICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX3N0cmlwX3RyYWlsaW5nX3NwYWNlcyIgKSAyPi9kZXYvbnVsbCB8fCBlY2hvICIiYAorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfFwKKyAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICAgICAgICAgOzsKKyAgICAgICAgICAqY3lnd2luKiApCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWBjeWdwYXRoIC13ICIkMSJgCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8XAorICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisgICAgICAgICAgICA7OworICAgICAgICAgICogKQorICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybworICAgICAgICAgICAgIyBlcnJvciBjb2RlLCBzbyB3ZSBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZgorICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKKyAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorICAgICAgICAgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoCisgICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKKyAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiIHxcCisgICAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iIgorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCisgICAgICAgICAgZnVuY19lcnJvciAiQ291bGQgbm90IGRldGVybWluZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKKyAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCisgICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgICAgICAgIyBGYWxsYmFjazoKKyAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorICAgICAgICBmaQorICAgICAgICA7OworICAgIGVzYWMKKyAgZmkKK30KKyMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAorCisjIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKKyMKKyMgQ29udmVydCBwYXRobGlzdHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCisjIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKKyMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCisjIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGhlcmUpOgorIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKKyMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCisjICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndworIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKKyMKKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8KKyMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCisjIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKKyMgb24gb3V0cHV0LgorIworIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKyMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBvbiAkaG9zdC4gVGhlIHJlc3VsdCBpcyBzdG9yZWQKKyMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCitmdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKK3sKKyAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCisgIGlmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgICBjYXNlICRob3N0IGluCisgICAgICAqbWluZ3cqICkKKyAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJworICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKyAgICAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMj0iJDEiCisgICAgICAgICMgT25jZSBzZXQgZm9yIHRoaXMgY2FsbCwgdGhpcyB2YXJpYWJsZSBzaG91bGQgbm90IGJlCisgICAgICAgICMgcmVhc3NpZ25lZC4gSXQgaXMgdXNlZCBpbiB0aGEgZmFsbGJhY2sgY2FzZS4KKyAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9YGVjaG8gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMiIgfFwKKyAgICAgICAgICAkU0VEIC1lICdzfF46Knx8JyAtZSAnc3w6KiR8fCdgCisgICAgICAgIGNhc2UgJGJ1aWxkIGluCisgICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCisgICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCisgICAgICAgICAgICBsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzPSJzL1sgXSpcJC8vIgorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YCggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfc3RyaXBfdHJhaWxpbmdfc3BhY2VzIiApIDI+L2Rldi9udWxsIHx8IGVjaG8gIiJgCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKmN5Z3dpbiogKQorICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDI9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSJgCisgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDIiIHxcCisgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKiApCisgICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKKyAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlM9JElGUworICAgICAgICAgICAgSUZTPToKKyAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbworICAgICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKKyAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KKyAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgorICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgorICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBJRlM9OgorICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IiA7IHRoZW4KKyAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKKyAgICAgICAgICBmdW5jX2Vycm9yICIgICckMSciCisgICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisgICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCisgICAgICAgICAgIyBzcGVjaWZpY2F0aW9ucy4gVGhlIGZpeCBpcyBub3QgdG8gY29tcGxpY2F0ZSB0aGUgZXhwcmVzc2lvbgorICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KKyAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndworICAgICAgICAgICMgY2FzZSB3b3JrcyBwcm9wZXJseS4KKyAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKKyAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCisgICAgICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX25peF90b19kb3MiYAorICAgICAgICBmaQorICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjaworICAgICAgICBjYXNlICIkMSIgaW4KKyAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgY2FzZSAiJDEiIGluCisgICAgICAgICAgKjogKSBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdDsiCisgICAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisgICAgZXNhYworICBmaQorfQorIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAorCisjIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMKKyMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAorIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKKyMgaXQgZGVwZW5kcyBvbiBhIG51bWJlciBvZiB2YXJpYWJsZSBzZXQgdGhlcmVpbi4KK2Z1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgKCkKK3sKKwljYXQgPDxFT0YKKworLyogJGN3cmFwcGVyc291cmNlIC0gdGVtcG9yYXJ5IHdyYXBwZXIgZXhlY3V0YWJsZSBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQorICAgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorCisgICBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKKyAgIGxpYnJhcmllcyB0aGF0IGl0IGRlcGVuZHMgb24gYXJlIGluc3RhbGxlZC4KKworICAgVGhpcyB3cmFwcGVyIGV4ZWN1dGFibGUgc2hvdWxkIG5ldmVyIGJlIG1vdmVkIG91dCBvZiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgorCisgICBDdXJyZW50bHksIGl0IHNpbXBseSBleGVjcyB0aGUgd3JhcHBlciAqc2NyaXB0KiAiJFNIRUxMICRvdXRwdXQiLAorICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAorICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgorKi8KK0VPRgorCSAgICBjYXQgPDwiRU9GIgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaWZkZWYgX01TQ19WRVIKKyMgaW5jbHVkZSA8ZGlyZWN0Lmg+CisjIGluY2x1ZGUgPHByb2Nlc3MuaD4KKyMgaW5jbHVkZSA8aW8uaD4KKyMgZGVmaW5lIHNldG1vZGUgX3NldG1vZGUKKyNlbHNlCisjIGluY2x1ZGUgPHVuaXN0ZC5oPgorIyBpbmNsdWRlIDxzdGRpbnQuaD4KKyMgaWZkZWYgX19DWUdXSU5fXworIyAgaW5jbHVkZSA8aW8uaD4KKyMgIGRlZmluZSBIQVZFX1NFVEVOVgorIyAgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCitjaGFyICpyZWFscGF0aCAoY29uc3QgY2hhciAqLCBjaGFyICopOworaW50IHB1dGVudiAoY2hhciAqKTsKK2ludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworIyAgZW5kaWYKKyMgZW5kaWYKKyNlbmRpZgorI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPGFzc2VydC5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CisKKyNpZiBkZWZpbmVkKFBBVEhfTUFYKQorIyBkZWZpbmUgTFRfUEFUSE1BWCBQQVRIX01BWAorI2VsaWYgZGVmaW5lZChNQVhQQVRITEVOKQorIyBkZWZpbmUgTFRfUEFUSE1BWCBNQVhQQVRITEVOCisjZWxzZQorIyBkZWZpbmUgTFRfUEFUSE1BWCAxMDI0CisjZW5kaWYKKworI2lmbmRlZiBTX0lYT1RICisjIGRlZmluZSBTX0lYT1RIIDAKKyNlbmRpZgorI2lmbmRlZiBTX0lYR1JQCisjIGRlZmluZSBTX0lYR1JQIDAKKyNlbmRpZgorCisjaWZkZWYgX01TQ19WRVIKKyMgZGVmaW5lIFNfSVhVU1IgX1NfSUVYRUMKKyMgZGVmaW5lIHN0YXQgX3N0YXQKKyMgaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECisjICBkZWZpbmUgaW50cHRyX3QgaW50CisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBESVJfU0VQQVJBVE9SCisjIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJworIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCisjZW5kaWYKKworI2lmIGRlZmluZWQgKF9XSU4zMikgfHwgZGVmaW5lZCAoX19NU0RPU19fKSB8fCBkZWZpbmVkIChfX0RKR1BQX18pIHx8IFwKKyAgZGVmaW5lZCAoX19PUzJfXykKKyMgZGVmaW5lIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNCisjIGRlZmluZSBGT1BFTl9XQiAid2IiCisjIGlmbmRlZiBESVJfU0VQQVJBVE9SXzIKKyMgIGRlZmluZSBESVJfU0VQQVJBVE9SXzIgJ1xcJworIyBlbmRpZgorIyBpZm5kZWYgUEFUSF9TRVBBUkFUT1JfMgorIyAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SXzIgJzsnCisjIGVuZGlmCisjZW5kaWYKKworI2lmbmRlZiBESVJfU0VQQVJBVE9SXzIKKyMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpICgoY2gpID09IERJUl9TRVBBUkFUT1IpCisjZWxzZSAvKiBESVJfU0VQQVJBVE9SXzIgKi8KKyMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpIFwKKwkoKChjaCkgPT0gRElSX1NFUEFSQVRPUikgfHwgKChjaCkgPT0gRElSX1NFUEFSQVRPUl8yKSkKKyNlbmRpZiAvKiBESVJfU0VQQVJBVE9SXzIgKi8KKworI2lmbmRlZiBQQVRIX1NFUEFSQVRPUl8yCisjIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1IpCisjZWxzZSAvKiBQQVRIX1NFUEFSQVRPUl8yICovCisjIGRlZmluZSBJU19QQVRIX1NFUEFSQVRPUihjaCkgKChjaCkgPT0gUEFUSF9TRVBBUkFUT1JfMikKKyNlbmRpZiAvKiBQQVRIX1NFUEFSQVRPUl8yICovCisKKyNpZmRlZiBfX0NZR1dJTl9fCisjIGRlZmluZSBGT1BFTl9XQiAid2IiCisjZW5kaWYKKworI2lmbmRlZiBGT1BFTl9XQgorIyBkZWZpbmUgRk9QRU5fV0IgInciCisjZW5kaWYKKyNpZm5kZWYgX09fQklOQVJZCisjIGRlZmluZSBfT19CSU5BUlkgMAorI2VuZGlmCisKKyNkZWZpbmUgWE1BTExPQyh0eXBlLCBudW0pICAgICAgKCh0eXBlICopIHhtYWxsb2MgKChudW0pICogc2l6ZW9mKHR5cGUpKSkKKyNkZWZpbmUgWEZSRUUoc3RhbGUpIGRvIHsgXAorICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAorfSB3aGlsZSAoMCkKKworI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgorI2lmIGRlZmluZWQgREVCVUdXUkFQUEVSCisjIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKK3N0YXRpYyB2b2lkCitsdHdyYXBwZXJfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKyAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKKyAgICB2YV9lbmQgKGFyZ3MpOworfQorI2Vsc2UKKyMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKQorI2VuZGlmCisKK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9IE5VTEw7CisKK3ZvaWQgKnhtYWxsb2MgKHNpemVfdCBudW0pOworY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKK2NvbnN0IGNoYXIgKmJhc2VfbmFtZSAoY29uc3QgY2hhciAqbmFtZSk7CitjaGFyICpmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpOworY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKK2ludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworaW50IGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Cit2b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwordm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKK2NoYXIgKmx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCk7Cit2b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKGNvbnN0IGNoYXIgKmFyZyk7Cit2b2lkIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpOwordm9pZCBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChjb25zdCBjaGFyICphcmcpOworaW50IGx0X3NwbGl0X25hbWVfdmFsdWUgKGNvbnN0IGNoYXIgKmFyZywgY2hhcioqIG5hbWUsIGNoYXIqKiB2YWx1ZSk7Cit2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwordm9pZCBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKKworc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQxID0KK0VPRgorCisJICAgIGZ1bmNfZW1pdF93cmFwcGVyX3BhcnQxIHllcyB8CisJICAgICAgICAkU0VEIC1lICdzL1woW1xcIl1cKS9cXFwxL2cnIFwKKwkgICAgICAgICAgICAgLWUgJ3MvXi8gICIvJyAtZSAncy8kL1xcbiIvJworCSAgICBlY2hvICI7IgorCSAgICBjYXQgPDxFT0YKKworc3RhdGljIGNvbnN0IGNoYXIgKnNjcmlwdF90ZXh0X3BhcnQyID0KK0VPRgorCSAgICBmdW5jX2VtaXRfd3JhcHBlcl9wYXJ0MiB5ZXMgfAorCSAgICAgICAgJFNFRCAtZSAncy9cKFtcXCJdXCkvXFxcMS9nJyBcCisJICAgICAgICAgICAgIC1lICdzL14vICAiLycgLWUgJ3MvJC9cXG4iLycKKwkgICAgZWNobyAiOyIKKworCSAgICBjYXQgPDxFT0YKK2NvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Citjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CitFT0YKKworCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJHRlbXBfcnBhdGgiCisJICAgICAgY2F0IDw8RU9GCitjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CitFT0YKKwkgICAgZWxzZQorCSAgICAgIGNhdCA8PCJFT0YiCitjb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIiOworRU9GCisJICAgIGZpCisKKwkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgorCSAgICAgIGNhdCA8PEVPRgorY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7Citjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CitFT0YKKwkgICAgZWxzZQorCSAgICAgIGNhdCA8PCJFT0YiCitjb25zdCBjaGFyICogRVhFX1BBVEhfVkFSTkFNRSA9ICIiOworY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiIjsKK0VPRgorCSAgICBmaQorCisJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCisJICAgICAgY2F0IDw8RU9GCitjb25zdCBjaGFyICogVEFSR0VUX1BST0dSQU1fTkFNRSA9ICJsdC0kb3V0cHV0bmFtZSI7IC8qIGhvcGVmdWxseSwgbm8gLmV4ZSAqLworRU9GCisJICAgIGVsc2UKKwkgICAgICBjYXQgPDxFT0YKK2NvbnN0IGNoYXIgKiBUQVJHRVRfUFJPR1JBTV9OQU1FID0gIiRvdXRwdXRuYW1lIjsgLyogaG9wZWZ1bGx5LCBubyAuZXhlICovCitFT0YKKwkgICAgZmkKKworCisJICAgIGNhdCA8PCJFT0YiCisKKyNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCisjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYX0xFTkdUSCAgNQorCitzdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7CitzdGF0aWMgY29uc3QgY2hhciAqbHR3cmFwcGVyX29wdGlvbl9wcmVmaXggPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWDsKKworc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKKworc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfc2V0X29wdF9sZW4gICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgNzsKK3N0YXRpYyBjb25zdCBjaGFyICplbnZfc2V0X29wdCAgICAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtc2V0IjsKKyAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgdmFsdWUgb2YgZm9vIGlzIHNldCB0byBiYXIgKi8KKworc3RhdGljIGNvbnN0IHNpemVfdCBlbnZfcHJlcGVuZF9vcHRfbGVuID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICsgMTE7CitzdGF0aWMgY29uc3QgY2hhciAqZW52X3ByZXBlbmRfb3B0ICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZW52LXByZXBlbmQiOworICAvKiBhcmd1bWVudCBpcyBwdXRlbnYtc3R5bGUgImZvbz1iYXIiLCBuZXcgdmFsdWUgb2YgZm9vIGlzIGJhciR7Zm9vfSAqLworCitzdGF0aWMgY29uc3Qgc2l6ZV90IGVudl9hcHBlbmRfb3B0X2xlbiAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggKyAxMDsKK3N0YXRpYyBjb25zdCBjaGFyICplbnZfYXBwZW5kX29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJlbnYtYXBwZW5kIjsKKyAgLyogYXJndW1lbnQgaXMgcHV0ZW52LXN0eWxlICJmb289YmFyIiwgbmV3IHZhbHVlIG9mIGZvbyBpcyAke2Zvb31iYXIgKi8KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBjaGFyICoqbmV3YXJnejsKKyAgaW50ICBuZXdhcmdjOworICBjaGFyICp0bXBfcGF0aHNwZWM7CisgIGNoYXIgKmFjdHVhbF9jd3JhcHBlcl9wYXRoOworICBjaGFyICphY3R1YWxfY3dyYXBwZXJfbmFtZTsKKyAgY2hhciAqdGFyZ2V0X25hbWU7CisgIGNoYXIgKmx0X2FyZ3ZfemVybzsKKyAgaW50cHRyX3QgcnZhbCA9IDEyNzsKKworICBpbnQgaTsKKworICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIiwgYXJndlswXSkpOworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKKworICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdCAqLworICBmb3IgKGkgPSAxOyBpIDwgYXJnYzsgaSsrKQorICAgIHsKKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQorCXsKK0VPRgorCSAgICBjYXNlICIkaG9zdCIgaW4KKwkgICAgICAqbWluZ3cqIHwgKmN5Z3dpbiogKQorCQkjIG1ha2Ugc3Rkb3V0IHVzZSAidW5peCIgbGluZSBlbmRpbmdzCisJCWVjaG8gIiAgICAgICAgICBzZXRtb2RlKDEsX09fQklOQVJZKTsiCisJCTs7CisJICAgICAgZXNhYworCisJICAgIGNhdCA8PCJFT0YiCisJICBwcmludGYgKCIlcyIsIHNjcmlwdF90ZXh0X3BhcnQxKTsKKwkgIHByaW50ZiAoIiVzIiwgc2NyaXB0X3RleHRfcGFydDIpOworCSAgcmV0dXJuIDA7CisJfQorICAgIH0KKworICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisgIHRtcF9wYXRoc3BlYyA9IGZpbmRfZXhlY3V0YWJsZSAoYXJndlswXSk7CisgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKKyAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdCA6ICVzXG4iLAorCQkJICB0bXBfcGF0aHNwZWMpKTsKKworICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKwkJCSAgYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgWEZSRUUgKHRtcF9wYXRoc3BlYyk7CisKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKworICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLworICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9uYW1lLCAiLmV4ZSIpOworICB0bXBfcGF0aHNwZWMgPSBsdF9leHRlbmRfc3RyIChhY3R1YWxfY3dyYXBwZXJfbmFtZSwgIi5leGUiLCAxKTsKKyAgWEZSRUUgKGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB0bXBfcGF0aHNwZWM7CisgIHRtcF9wYXRoc3BlYyA9IDA7CisKKyAgLyogdGFyZ2V0X25hbWUgdHJhbnNmb3JtcyAtLSB1c2UgYWN0dWFsIHRhcmdldCBwcm9ncmFtIG5hbWU7IG1pZ2h0IGhhdmUgbHQtIHByZWZpeCAqLworICB0YXJnZXRfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoVEFSR0VUX1BST0dSQU1fTkFNRSkpOworICBzdHJlbmR6YXAgKHRhcmdldF9uYW1lLCAiLmV4ZSIpOworICB0bXBfcGF0aHNwZWMgPSBsdF9leHRlbmRfc3RyICh0YXJnZXRfbmFtZSwgIi5leGUiLCAxKTsKKyAgWEZSRUUgKHRhcmdldF9uYW1lKTsKKyAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7CisgIHRtcF9wYXRoc3BlYyA9IDA7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKKwkJCSAgdGFyZ2V0X25hbWUpKTsKK0VPRgorCisJICAgIGNhdCA8PEVPRgorICBuZXdhcmd6WzBdID0KKyAgICBYTUFMTE9DIChjaGFyLCAoc3RybGVuIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkgKworCQkgICAgc3RybGVuICgiJG9iamRpciIpICsgMSArIHN0cmxlbiAoYWN0dWFsX2N3cmFwcGVyX25hbWUpICsgMSkpOworICBzdHJjcHkgKG5ld2FyZ3pbMF0sIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKKyAgc3RyY2F0IChuZXdhcmd6WzBdLCAiJG9iamRpciIpOworICBzdHJjYXQgKG5ld2FyZ3pbMF0sICIvIik7CitFT0YKKworCSAgICBjYXQgPDwiRU9GIgorICAvKiBzdG9wIGhlcmUsIGFuZCBjb3B5IHNvIHdlIGRvbid0IGhhdmUgdG8gZG8gdGhpcyB0d2ljZSAqLworICB0bXBfcGF0aHNwZWMgPSB4c3RyZHVwIChuZXdhcmd6WzBdKTsKKworICAvKiBkbyBOT1Qgd2FudCB0aGUgbHQtIHByZWZpeCBoZXJlLCBzbyB1c2UgYWN0dWFsX2N3cmFwcGVyX25hbWUgKi8KKyAgc3RyY2F0IChuZXdhcmd6WzBdLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CisKKyAgLyogRE8gd2FudCB0aGUgbHQtIHByZWZpeCBoZXJlIGlmIGl0IGV4aXN0cywgc28gdXNlIHRhcmdldF9uYW1lICovCisgIGx0X2FyZ3ZfemVybyA9IGx0X2V4dGVuZF9zdHIgKHRtcF9wYXRoc3BlYywgdGFyZ2V0X25hbWUsIDEpOworICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKyAgdG1wX3BhdGhzcGVjID0gTlVMTDsKK0VPRgorCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBtaW5ndyopCisJICAgIGNhdCA8PCJFT0YiCisgIHsKKyAgICBjaGFyKiBwOworICAgIHdoaWxlICgocCA9IHN0cmNociAobmV3YXJnelswXSwgJ1xcJykpICE9IE5VTEwpCisgICAgICB7CisJKnAgPSAnLyc7CisgICAgICB9CisgICAgd2hpbGUgKChwID0gc3RyY2hyIChsdF9hcmd2X3plcm8sICdcXCcpKSAhPSBOVUxMKQorICAgICAgeworCSpwID0gJy8nOworICAgICAgfQorICB9CitFT0YKKwkgICAgOzsKKwkgICAgZXNhYworCisJICAgIGNhdCA8PCJFT0YiCisgIFhGUkVFICh0YXJnZXRfbmFtZSk7CisgIFhGUkVFIChhY3R1YWxfY3dyYXBwZXJfcGF0aCk7CisgIFhGUkVFIChhY3R1YWxfY3dyYXBwZXJfbmFtZSk7CisKKyAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCisgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KKyAgbHRfdXBkYXRlX2xpYl9wYXRoIChMSUJfUEFUSF9WQVJOQU1FLCBMSUJfUEFUSF9WQUxVRSk7CisgIGx0X3VwZGF0ZV9leGVfcGF0aCAoRVhFX1BBVEhfVkFSTkFNRSwgRVhFX1BBVEhfVkFMVUUpOworCisgIG5ld2FyZ2M9MDsKKyAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKyAgICB7CisgICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgZW52X3NldF9vcHQsIGVudl9zZXRfb3B0X2xlbikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9zZXRfb3B0X2xlbl0gPT0gJz0nKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICBjb25zdCBjaGFyICpwID0gYXJndltpXSArIGVudl9zZXRfb3B0X2xlbiArIDE7CisgICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9zZXQgKHApOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3NldF9vcHRfbGVuXSA9PSAnXDAnICYmIGkgKyAxIDwgYXJnYykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3NldCAoYXJndlsrK2ldKTsgLyogZG9uJ3QgY29weSAqLworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGx0X2ZhdGFsICgiJXMgbWlzc2luZyByZXF1aXJlZCBhcmd1bWVudCIsIGVudl9zZXRfb3B0KTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9wcmVwZW5kX29wdCwgZW52X3ByZXBlbmRfb3B0X2xlbikgPT0gMCkKKyAgICAgICAgeworICAgICAgICAgIGlmIChhcmd2W2ldW2Vudl9wcmVwZW5kX29wdF9sZW5dID09ICc9JykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfcHJlcGVuZF9vcHRfbGVuICsgMTsKKyAgICAgICAgICAgICAgbHRfb3B0X3Byb2Nlc3NfZW52X3ByZXBlbmQgKHApOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV1bZW52X3ByZXBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChhcmd2WysraV0pOyAvKiBkb24ndCBjb3B5ICovCisgICAgICAgICAgICB9CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgbHRfZmF0YWwgKCIlcyBtaXNzaW5nIHJlcXVpcmVkIGFyZ3VtZW50IiwgZW52X3ByZXBlbmRfb3B0KTsKKyAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorICAgICAgaWYgKHN0cm5jbXAgKGFyZ3ZbaV0sIGVudl9hcHBlbmRfb3B0LCBlbnZfYXBwZW5kX29wdF9sZW4pID09IDApCisgICAgICAgIHsKKyAgICAgICAgICBpZiAoYXJndltpXVtlbnZfYXBwZW5kX29wdF9sZW5dID09ICc9JykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqcCA9IGFyZ3ZbaV0gKyBlbnZfYXBwZW5kX29wdF9sZW4gKyAxOworICAgICAgICAgICAgICBsdF9vcHRfcHJvY2Vzc19lbnZfYXBwZW5kIChwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldW2Vudl9hcHBlbmRfb3B0X2xlbl0gPT0gJ1wwJyAmJiBpICsgMSA8IGFyZ2MpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGx0X29wdF9wcm9jZXNzX2Vudl9hcHBlbmQgKGFyZ3ZbKytpXSk7IC8qIGRvbid0IGNvcHkgKi8KKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsdF9mYXRhbCAoIiVzIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnQiLCBlbnZfYXBwZW5kX29wdCk7CisgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCisgICAgICAgIHsKKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCisgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKyAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKyAgICAgICAgICAgKi8KKyAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworICAgICAgICB9CisgICAgICAvKiBvdGhlcndpc2UgLi4uICovCisgICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKKyAgICB9CisgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICAgICAoKCIobWFpbikgbHRfYXJndl96ZXJvIDogJXNcbiIsIChsdF9hcmd2X3plcm8gPyBsdF9hcmd2X3plcm8gOiAiPE5VTEw+IikpKTsKKyAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKKyAgICB7CisgICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7CisgICAgfQorCitFT0YKKworCSAgICBjYXNlICRob3N0X29zIGluCisJICAgICAgbWluZ3cqKQorCQljYXQgPDwiRU9GIgorICAvKiBleGVjdiBkb2Vzbid0IGFjdHVhbGx5IHdvcmsgb24gbWluZ3cgYXMgZXhwZWN0ZWQgb24gdW5peCAqLworICBydmFsID0gX3NwYXdudiAoX1BfV0FJVCwgbHRfYXJndl96ZXJvLCAoY29uc3QgY2hhciAqIGNvbnN0ICopIG5ld2FyZ3opOworICBpZiAocnZhbCA9PSAtMSkKKyAgICB7CisgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLworICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmYWlsZWQgdG8gbGF1bmNoIHRhcmdldCBcIiVzXCI6IGVycm5vID0gJWRcbiIsIGx0X2FyZ3ZfemVybywgZXJybm8pKTsKKyAgICAgIHJldHVybiAxMjc7CisgICAgfQorICByZXR1cm4gcnZhbDsKK0VPRgorCQk7OworCSAgICAgICopCisJCWNhdCA8PCJFT0YiCisgIGV4ZWN2IChsdF9hcmd2X3plcm8sIG5ld2FyZ3opOworICByZXR1cm4gcnZhbDsgLyogPTEyNywgYnV0IGF2b2lkcyB1bnVzZWQgdmFyaWFibGUgd2FybmluZyAqLworRU9GCisJCTs7CisJICAgIGVzYWMKKworCSAgICBjYXQgPDwiRU9GIgorfQorCit2b2lkICoKK3htYWxsb2MgKHNpemVfdCBudW0pCit7CisgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7CisgIGlmICghcCkKKyAgICBsdF9mYXRhbCAoIk1lbW9yeSBleGhhdXN0ZWQiKTsKKworICByZXR1cm4gcDsKK30KKworY2hhciAqCit4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpCit7CisgIHJldHVybiBzdHJpbmcgPyBzdHJjcHkgKChjaGFyICopIHhtYWxsb2MgKHN0cmxlbiAoc3RyaW5nKSArIDEpLAorCQkJICBzdHJpbmcpIDogTlVMTDsKK30KKworY29uc3QgY2hhciAqCitiYXNlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCit7CisgIGNvbnN0IGNoYXIgKmJhc2U7CisKKyNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKKyAgLyogU2tpcCBvdmVyIHRoZSBkaXNrIG5hbWUgaW4gTVNET1MgcGF0aG5hbWVzLiAqLworICBpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIG5hbWVbMF0pICYmIG5hbWVbMV0gPT0gJzonKQorICAgIG5hbWUgKz0gMjsKKyNlbmRpZgorCisgIGZvciAoYmFzZSA9IG5hbWU7ICpuYW1lOyBuYW1lKyspCisgICAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKCpuYW1lKSkKKyAgICAgIGJhc2UgPSBuYW1lICsgMTsKKyAgcmV0dXJuIGJhc2U7Cit9CisKK2ludAorY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKK3sKKyAgc3RydWN0IHN0YXQgc3Q7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihjaGVja19leGVjdXRhYmxlKSAgOiAlc1xuIiwKKwkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQorICAgIHJldHVybiAwOworCisgIGlmICgoc3RhdCAocGF0aCwgJnN0KSA+PSAwKQorICAgICAgJiYgKHN0LnN0X21vZGUgJiAoU19JWFVTUiB8IFNfSVhHUlAgfCBTX0lYT1RIKSkpCisgICAgcmV0dXJuIDE7CisgIGVsc2UKKyAgICByZXR1cm4gMDsKK30KKworaW50CittYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCit7CisgIGludCBydmFsID0gMDsKKyAgc3RydWN0IHN0YXQgc3Q7CisKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKKwkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisgIGlmICgoIXBhdGgpIHx8ICghKnBhdGgpKQorICAgIHJldHVybiAwOworCisgIGlmIChzdGF0IChwYXRoLCAmc3QpID49IDApCisgICAgeworICAgICAgcnZhbCA9IGNobW9kIChwYXRoLCBzdC5zdF9tb2RlIHwgU19JWE9USCB8IFNfSVhHUlAgfCBTX0lYVVNSKTsKKyAgICB9CisgIHJldHVybiBydmFsOworfQorCisvKiBTZWFyY2hlcyBmb3IgdGhlIGZ1bGwgcGF0aCBvZiB0aGUgd3JhcHBlci4gIFJldHVybnMKKyAgIG5ld2x5IGFsbG9jYXRlZCBmdWxsIHBhdGggbmFtZSBpZiBmb3VuZCwgTlVMTCBvdGhlcndpc2UKKyAgIERvZXMgbm90IGNoYXNlIHN5bWxpbmtzLCBldmVuIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgdGhlbS4KKyovCitjaGFyICoKK2ZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKK3sKKyAgaW50IGhhc19zbGFzaCA9IDA7CisgIGNvbnN0IGNoYXIgKnA7CisgIGNvbnN0IGNoYXIgKnBfbmV4dDsKKyAgLyogc3RhdGljIGJ1ZmZlciBmb3IgZ2V0Y3dkICovCisgIGNoYXIgdG1wW0xUX1BBVEhNQVggKyAxXTsKKyAgaW50IHRtcF9sZW47CisgIGNoYXIgKmNvbmNhdF9uYW1lOworCisgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCisJCQkgIHdyYXBwZXIgPyAoKndyYXBwZXIgPyB3cmFwcGVyIDogIkVNUFRZISIpIDogIk5VTEwhIikpOworCisgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogQWJzb2x1dGUgcGF0aD8gKi8KKyNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKKyAgaWYgKGlzYWxwaGEgKCh1bnNpZ25lZCBjaGFyKSB3cmFwcGVyWzBdKSAmJiB3cmFwcGVyWzFdID09ICc6JykKKyAgICB7CisgICAgICBjb25jYXRfbmFtZSA9IHhzdHJkdXAgKHdyYXBwZXIpOworICAgICAgaWYgKGNoZWNrX2V4ZWN1dGFibGUgKGNvbmNhdF9uYW1lKSkKKwlyZXR1cm4gY29uY2F0X25hbWU7CisgICAgICBYRlJFRSAoY29uY2F0X25hbWUpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyNlbmRpZgorICAgICAgaWYgKElTX0RJUl9TRVBBUkFUT1IgKHdyYXBwZXJbMF0pKQorCXsKKwkgIGNvbmNhdF9uYW1lID0geHN0cmR1cCAod3JhcHBlcik7CisJICBpZiAoY2hlY2tfZXhlY3V0YWJsZSAoY29uY2F0X25hbWUpKQorCSAgICByZXR1cm4gY29uY2F0X25hbWU7CisJICBYRlJFRSAoY29uY2F0X25hbWUpOworCX0KKyNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKKyAgICB9CisjZW5kaWYKKworICBmb3IgKHAgPSB3cmFwcGVyOyAqcDsgcCsrKQorICAgIGlmICgqcCA9PSAnLycpCisgICAgICB7CisJaGFzX3NsYXNoID0gMTsKKwlicmVhazsKKyAgICAgIH0KKyAgaWYgKCFoYXNfc2xhc2gpCisgICAgeworICAgICAgLyogbm8gc2xhc2hlczsgc2VhcmNoIFBBVEggKi8KKyAgICAgIGNvbnN0IGNoYXIgKnBhdGggPSBnZXRlbnYgKCJQQVRIIik7CisgICAgICBpZiAocGF0aCAhPSBOVUxMKQorCXsKKwkgIGZvciAocCA9IHBhdGg7ICpwOyBwID0gcF9uZXh0KQorCSAgICB7CisJICAgICAgY29uc3QgY2hhciAqcTsKKwkgICAgICBzaXplX3QgcF9sZW47CisJICAgICAgZm9yIChxID0gcDsgKnE7IHErKykKKwkJaWYgKElTX1BBVEhfU0VQQVJBVE9SICgqcSkpCisJCSAgYnJlYWs7CisJICAgICAgcF9sZW4gPSBxIC0gcDsKKwkgICAgICBwX25leHQgPSAoKnEgPT0gJ1wwJyA/IHEgOiBxICsgMSk7CisJICAgICAgaWYgKHBfbGVuID09IDApCisJCXsKKwkJICAvKiBlbXB0eSBwYXRoOiBjdXJyZW50IGRpcmVjdG9yeSAqLworCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKwkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworCQkgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7CisJCSAgY29uY2F0X25hbWUgPQorCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CisJCSAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKKwkJICBjb25jYXRfbmFtZVt0bXBfbGVuXSA9ICcvJzsKKwkJICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgdG1wX2xlbiArIDEsIHdyYXBwZXIpOworCQl9CisJICAgICAgZWxzZQorCQl7CisJCSAgY29uY2F0X25hbWUgPQorCQkgICAgWE1BTExPQyAoY2hhciwgcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOworCQkgIG1lbWNweSAoY29uY2F0X25hbWUsIHAsIHBfbGVuKTsKKwkJICBjb25jYXRfbmFtZVtwX2xlbl0gPSAnLyc7CisJCSAgc3RyY3B5IChjb25jYXRfbmFtZSArIHBfbGVuICsgMSwgd3JhcHBlcik7CisJCX0KKwkgICAgICBpZiAoY2hlY2tfZXhlY3V0YWJsZSAoY29uY2F0X25hbWUpKQorCQlyZXR1cm4gY29uY2F0X25hbWU7CisJICAgICAgWEZSRUUgKGNvbmNhdF9uYW1lKTsKKwkgICAgfQorCX0KKyAgICAgIC8qIG5vdCBmb3VuZCBpbiBQQVRIOyBhc3N1bWUgY3VyZGlyICovCisgICAgfQorICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCisgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKKyAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKKyAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAgY29uY2F0X25hbWUgPSBYTUFMTE9DIChjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbiAod3JhcHBlcikgKyAxKTsKKyAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKKyAgY29uY2F0X25hbWVbdG1wX2xlbl0gPSAnLyc7CisgIHN0cmNweSAoY29uY2F0X25hbWUgKyB0bXBfbGVuICsgMSwgd3JhcHBlcik7CisKKyAgaWYgKGNoZWNrX2V4ZWN1dGFibGUgKGNvbmNhdF9uYW1lKSkKKyAgICByZXR1cm4gY29uY2F0X25hbWU7CisgIFhGUkVFIChjb25jYXRfbmFtZSk7CisgIHJldHVybiBOVUxMOworfQorCitjaGFyICoKK2NoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKK3sKKyNpZm5kZWYgU19JU0xOSworICByZXR1cm4geHN0cmR1cCAocGF0aHNwZWMpOworI2Vsc2UKKyAgY2hhciBidWZbTFRfUEFUSE1BWF07CisgIHN0cnVjdCBzdGF0IHM7CisgIGNoYXIgKnRtcF9wYXRoc3BlYyA9IHhzdHJkdXAgKHBhdGhzcGVjKTsKKyAgY2hhciAqcDsKKyAgaW50IGhhc19zeW1saW5rcyA9IDA7CisgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKKyAgICB7CisgICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKKwkJCSAgICAgIHRtcF9wYXRoc3BlYykpOworICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQorCXsKKwkgIGlmIChTX0lTTE5LIChzLnN0X21vZGUpICE9IDApCisJICAgIHsKKwkgICAgICBoYXNfc3ltbGlua3MgPSAxOworCSAgICAgIGJyZWFrOworCSAgICB9CisKKwkgIC8qIHNlYXJjaCBiYWNrd2FyZHMgZm9yIGxhc3QgRElSX1NFUEFSQVRPUiAqLworCSAgcCA9IHRtcF9wYXRoc3BlYyArIHN0cmxlbiAodG1wX3BhdGhzcGVjKSAtIDE7CisJICB3aGlsZSAoKHAgPiB0bXBfcGF0aHNwZWMpICYmICghSVNfRElSX1NFUEFSQVRPUiAoKnApKSkKKwkgICAgcC0tOworCSAgaWYgKChwID09IHRtcF9wYXRoc3BlYykgJiYgKCFJU19ESVJfU0VQQVJBVE9SICgqcCkpKQorCSAgICB7CisJICAgICAgLyogbm8gbW9yZSBESVJfU0VQQVJBVE9SUyBsZWZ0ICovCisJICAgICAgYnJlYWs7CisJICAgIH0KKwkgICpwID0gJ1wwJzsKKwl9CisgICAgICBlbHNlCisJeworCSAgY2hhciAqZXJyc3RyID0gc3RyZXJyb3IgKGVycm5vKTsKKwkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKKwl9CisgICAgfQorICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKKworICBpZiAoIWhhc19zeW1saW5rcykKKyAgICB7CisgICAgICByZXR1cm4geHN0cmR1cCAocGF0aHNwZWMpOworICAgIH0KKworICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7CisgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKKyAgICB7CisgICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOworICAgIH0KKyAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7CisjZW5kaWYKK30KKworY2hhciAqCitzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQoreworICBzaXplX3QgbGVuLCBwYXRsZW47CisKKyAgYXNzZXJ0IChzdHIgIT0gTlVMTCk7CisgIGFzc2VydCAocGF0ICE9IE5VTEwpOworCisgIGxlbiA9IHN0cmxlbiAoc3RyKTsKKyAgcGF0bGVuID0gc3RybGVuIChwYXQpOworCisgIGlmIChwYXRsZW4gPD0gbGVuKQorICAgIHsKKyAgICAgIHN0ciArPSBsZW4gLSBwYXRsZW47CisgICAgICBpZiAoc3RyY21wIChzdHIsIHBhdCkgPT0gMCkKKwkqc3RyID0gJ1wwJzsKKyAgICB9CisgIHJldHVybiBzdHI7Cit9CisKK3N0YXRpYyB2b2lkCitsdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCisJICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIHZhX2xpc3QgYXApCit7CisgIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKyAgdmZwcmludGYgKHN0ZGVyciwgbWVzc2FnZSwgYXApOworICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKKworICBpZiAoZXhpdF9zdGF0dXMgPj0gMCkKKyAgICBleGl0IChleGl0X3N0YXR1cyk7Cit9CisKK3ZvaWQKK2x0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCit7CisgIHZhX2xpc3QgYXA7CisgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7CisgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworICB2YV9lbmQgKGFwKTsKK30KKwordm9pZAorbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisgIHsKKyNpZmRlZiBIQVZFX1NFVEVOVgorICAgIC8qIGFsd2F5cyBtYWtlIGEgY29weSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggIUhBVkVfU0VURU5WICovCisgICAgY2hhciAqc3RyID0geHN0cmR1cCAodmFsdWUpOworICAgIHNldGVudiAobmFtZSwgc3RyLCAxKTsKKyNlbHNlCisgICAgaW50IGxlbiA9IHN0cmxlbiAobmFtZSkgKyAxICsgc3RybGVuICh2YWx1ZSkgKyAxOworICAgIGNoYXIgKnN0ciA9IFhNQUxMT0MgKGNoYXIsIGxlbik7CisgICAgc3ByaW50ZiAoc3RyLCAiJXM9JXMiLCBuYW1lLCB2YWx1ZSk7CisgICAgaWYgKHB1dGVudiAoc3RyKSAhPSBFWElUX1NVQ0NFU1MpCisgICAgICB7CisgICAgICAgIFhGUkVFIChzdHIpOworICAgICAgfQorI2VuZGlmCisgIH0KK30KKworY2hhciAqCitsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpCit7CisgIGNoYXIgKm5ld192YWx1ZTsKKyAgaWYgKG9yaWdfdmFsdWUgJiYgKm9yaWdfdmFsdWUpCisgICAgeworICAgICAgaW50IG9yaWdfdmFsdWVfbGVuID0gc3RybGVuIChvcmlnX3ZhbHVlKTsKKyAgICAgIGludCBhZGRfbGVuID0gc3RybGVuIChhZGQpOworICAgICAgbmV3X3ZhbHVlID0gWE1BTExPQyAoY2hhciwgYWRkX2xlbiArIG9yaWdfdmFsdWVfbGVuICsgMSk7CisgICAgICBpZiAodG9fZW5kKQorICAgICAgICB7CisgICAgICAgICAgc3RyY3B5IChuZXdfdmFsdWUsIG9yaWdfdmFsdWUpOworICAgICAgICAgIHN0cmNweSAobmV3X3ZhbHVlICsgb3JpZ192YWx1ZV9sZW4sIGFkZCk7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIHN0cmNweSAobmV3X3ZhbHVlLCBhZGQpOworICAgICAgICAgIHN0cmNweSAobmV3X3ZhbHVlICsgYWRkX2xlbiwgb3JpZ192YWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgIGVsc2UKKyAgICB7CisgICAgICBuZXdfdmFsdWUgPSB4c3RyZHVwIChhZGQpOworICAgIH0KKyAgcmV0dXJuIG5ld192YWx1ZTsKK30KKworaW50CitsdF9zcGxpdF9uYW1lX3ZhbHVlIChjb25zdCBjaGFyICphcmcsIGNoYXIqKiBuYW1lLCBjaGFyKiogdmFsdWUpCit7CisgIGNvbnN0IGNoYXIgKnA7CisgIGludCBsZW47CisgIGlmICghYXJnIHx8ICEqYXJnKQorICAgIHJldHVybiAxOworCisgIHAgPSBzdHJjaHIgKGFyZywgKGludCknPScpOworCisgIGlmICghcCkKKyAgICByZXR1cm4gMTsKKworICAqdmFsdWUgPSB4c3RyZHVwICgrK3ApOworCisgIGxlbiA9IHN0cmxlbiAoYXJnKSAtIHN0cmxlbiAoKnZhbHVlKTsKKyAgKm5hbWUgPSBYTUFMTE9DIChjaGFyLCBsZW4pOworICBzdHJuY3B5ICgqbmFtZSwgYXJnLCBsZW4tMSk7CisgICgqbmFtZSlbbGVuIC0gMV0gPSAnXDAnOworCisgIHJldHVybiAwOworfQorCit2b2lkCitsdF9vcHRfcHJvY2Vzc19lbnZfc2V0IChjb25zdCBjaGFyICphcmcpCit7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworICBjaGFyICp2YWx1ZSA9IE5VTEw7CisKKyAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKKyAgICB7CisgICAgICBYRlJFRSAobmFtZSk7CisgICAgICBYRlJFRSAodmFsdWUpOworICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3NldF9vcHQsIGFyZyk7CisgICAgfQorCisgIGx0X3NldGVudiAobmFtZSwgdmFsdWUpOworICBYRlJFRSAobmFtZSk7CisgIFhGUkVFICh2YWx1ZSk7Cit9CisKK3ZvaWQKK2x0X29wdF9wcm9jZXNzX2Vudl9wcmVwZW5kIChjb25zdCBjaGFyICphcmcpCit7CisgIGNoYXIgKm5hbWUgPSBOVUxMOworICBjaGFyICp2YWx1ZSA9IE5VTEw7CisgIGNoYXIgKm5ld192YWx1ZSA9IE5VTEw7CisKKyAgaWYgKGx0X3NwbGl0X25hbWVfdmFsdWUgKGFyZywgJm5hbWUsICZ2YWx1ZSkgIT0gMCkKKyAgICB7CisgICAgICBYRlJFRSAobmFtZSk7CisgICAgICBYRlJFRSAodmFsdWUpOworICAgICAgbHRfZmF0YWwgKCJiYWQgYXJndW1lbnQgZm9yICVzOiAnJXMnIiwgZW52X3ByZXBlbmRfb3B0LCBhcmcpOworICAgIH0KKworICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMCk7CisgIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKKyAgWEZSRUUgKG5ld192YWx1ZSk7CisgIFhGUkVFIChuYW1lKTsKKyAgWEZSRUUgKHZhbHVlKTsKK30KKwordm9pZAorbHRfb3B0X3Byb2Nlc3NfZW52X2FwcGVuZCAoY29uc3QgY2hhciAqYXJnKQoreworICBjaGFyICpuYW1lID0gTlVMTDsKKyAgY2hhciAqdmFsdWUgPSBOVUxMOworICBjaGFyICpuZXdfdmFsdWUgPSBOVUxMOworCisgIGlmIChsdF9zcGxpdF9uYW1lX3ZhbHVlIChhcmcsICZuYW1lLCAmdmFsdWUpICE9IDApCisgICAgeworICAgICAgWEZSRUUgKG5hbWUpOworICAgICAgWEZSRUUgKHZhbHVlKTsKKyAgICAgIGx0X2ZhdGFsICgiYmFkIGFyZ3VtZW50IGZvciAlczogJyVzJyIsIGVudl9hcHBlbmRfb3B0LCBhcmcpOworICAgIH0KKworICBuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMSk7CisgIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKKyAgWEZSRUUgKG5ld192YWx1ZSk7CisgIFhGUkVFIChuYW1lKTsKKyAgWEZSRUUgKHZhbHVlKTsKK30KKwordm9pZAorbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKK3sKKyAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworCisgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKKyAgICB7CisgICAgICBjaGFyICpuZXdfdmFsdWUgPSBsdF9leHRlbmRfc3RyIChnZXRlbnYgKG5hbWUpLCB2YWx1ZSwgMCk7CisgICAgICAvKiBzb21lIHN5c3RlbXMgY2FuJ3QgY29wZSB3aXRoIGEgJzonLXRlcm1pbmF0ZWQgcGF0aCAjJyAqLworICAgICAgaW50IGxlbiA9IHN0cmxlbiAobmV3X3ZhbHVlKTsKKyAgICAgIHdoaWxlICgoKGxlbiA9IHN0cmxlbiAobmV3X3ZhbHVlKSkgPiAwKSAmJiBJU19QQVRIX1NFUEFSQVRPUiAobmV3X3ZhbHVlW2xlbi0xXSkpCisgICAgICAgIHsKKyAgICAgICAgICBuZXdfdmFsdWVbbGVuLTFdID0gJ1wwJzsKKyAgICAgICAgfQorICAgICAgbHRfc2V0ZW52IChuYW1lLCBuZXdfdmFsdWUpOworICAgICAgWEZSRUUgKG5ld192YWx1ZSk7CisgICAgfQorfQorCit2b2lkCitsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQoreworICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7CisKKyAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQorICAgIHsKKyAgICAgIGNoYXIgKm5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAwKTsKKyAgICAgIGx0X3NldGVudiAobmFtZSwgbmV3X3ZhbHVlKTsKKyAgICAgIFhGUkVFIChuZXdfdmFsdWUpOworICAgIH0KK30KKworCitFT0YKK30KKyMgZW5kOiBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCisKKyMgZnVuY19tb2RlX2xpbmsgYXJnLi4uCitmdW5jX21vZGVfbGluayAoKQoreworICAgICRvcHRfZGVidWcKKyAgICBjYXNlICRob3N0IGluCisgICAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKICAgICAgICMgSXQgaXMgaW1wb3NzaWJsZSB0byBsaW5rIGEgZGxsIHdpdGhvdXQgdGhpcyBzZXR0aW5nLCBhbmQKICAgICAgICMgd2Ugc2hvdWxkbid0IGZvcmNlIHRoZSBtYWtlZmlsZSBtYWludGFpbmVyIHRvIGZpZ3VyZSBvdXQKICAgICAgICMgd2hpY2ggc3lzdGVtIHdlIGFyZSBjb21waWxpbmcgZm9yIGluIG9yZGVyIHRvIHBhc3MgYW4gZXh0cmEKQEAgLTExMjEsMTAgKzQwNTEsMTAgQEAKICAgICAgIGFsbG93X3VuZGVmaW5lZD15ZXMKICAgICAgIDs7CiAgICAgZXNhYwotICAgIGxpYnRvb2xfYXJncz0iJG5vbm9wdCIKKyAgICBsaWJ0b29sX2FyZ3M9JG5vbm9wdAogICAgIGJhc2VfY29tcGlsZT0iJG5vbm9wdCAkQCIKLSAgICBjb21waWxlX2NvbW1hbmQ9IiRub25vcHQiCi0gICAgZmluYWxpemVfY29tbWFuZD0iJG5vbm9wdCIKKyAgICBjb21waWxlX2NvbW1hbmQ9JG5vbm9wdAorICAgIGZpbmFsaXplX2NvbW1hbmQ9JG5vbm9wdAogCiAgICAgY29tcGlsZV9ycGF0aD0KICAgICBmaW5hbGl6ZV9ycGF0aD0KQEAgLTExMzksNiArNDA2OSw3IEBACiAgICAgZGxsc2VhcmNocGF0aD0KICAgICBsaWJfc2VhcmNoX3BhdGg9YHB3ZGAKICAgICBpbnN0X3ByZWZpeF9kaXI9CisgICAgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9CiAKICAgICBhdm9pZF92ZXJzaW9uPW5vCiAgICAgZGxmaWxlcz0KQEAgLTExNTQsNyArNDA4NSw2IEBACiAgICAgbm9faW5zdGFsbD1ubwogICAgIG9ianM9CiAgICAgbm9uX3BpY19vYmplY3RzPQotICAgIG5vdGluc3RfcGF0aD0gIyBwYXRocyB0aGF0IGNvbnRhaW4gbm90LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcwogICAgIHByZWNpb3VzX2ZpbGVzX3JlZ2V4PQogICAgIHByZWZlcl9zdGF0aWNfbGlicz1ubwogICAgIHByZWxvYWQ9bm8KQEAgLTExNjgsMTkgKzQwOTgsMjUgQEAKICAgICB0aHJlYWRfc2FmZT1ubwogICAgIHZpbmZvPQogICAgIHZpbmZvX251bWJlcj1ubworICAgIHdlYWtfbGlicz0KICAgICBzaW5nbGVfbW9kdWxlPSIke3dsfS1zaW5nbGVfbW9kdWxlIgotCiAgICAgZnVuY19pbmZlcl90YWcgJGJhc2VfY29tcGlsZQogCiAgICAgIyBXZSBuZWVkIHRvIGtub3cgLXN0YXRpYywgdG8gZ2V0IHRoZSByaWdodCBvdXRwdXQgZmlsZW5hbWVzLgogICAgIGZvciBhcmcKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCisgICAgICAtc2hhcmVkKQorCXRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBcCisJICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gImNhbiBub3QgYnVpbGQgYSBzaGFyZWQgbGlicmFyeSIKKwlidWlsZF9vbGRfbGlicz1ubworCWJyZWFrCisJOzsKICAgICAgIC1hbGwtc3RhdGljIHwgLXN0YXRpYyB8IC1zdGF0aWMtbGlidG9vbC1saWJzKQogCWNhc2UgJGFyZyBpbgogCS1hbGwtc3RhdGljKQogCSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAteiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNvbXBsZXRlIHN0YXRpYyBsaW5raW5nIGlzIGltcG9zc2libGUgaW4gdGhpcyBjb25maWd1cmF0aW9uIiAxPiYyCisJICAgIGZ1bmNfd2FybmluZyAiY29tcGxldGUgc3RhdGljIGxpbmtpbmcgaXMgaW1wb3NzaWJsZSBpbiB0aGlzIGNvbmZpZ3VyYXRpb24iCiAJICBmaQogCSAgaWYgdGVzdCAtbiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCiAJICAgIGRsb3Blbl9zZWxmPSRkbG9wZW5fc2VsZl9zdGF0aWMKQEAgLTEyMTQsMjAgKzQxNTAsMTYgQEAKICAgICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCiAgICAgICBhcmc9IiQxIgogICAgICAgc2hpZnQKLSAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JcWFyZz1cImAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYFwiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAotCTs7Ci0gICAgICAqKSBxYXJnPSRhcmcgOzsKLSAgICAgIGVzYWMKLSAgICAgIGxpYnRvb2xfYXJncz0iJGxpYnRvb2xfYXJncyAkcWFyZyIKKyAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisgICAgICBxYXJnPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdAorICAgICAgZnVuY19hcHBlbmQgbGlidG9vbF9hcmdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCiAgICAgICAjIElmIHRoZSBwcmV2aW91cyBvcHRpb24gbmVlZHMgYW4gYXJndW1lbnQsIGFzc2lnbiBpdC4KICAgICAgIGlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgogCWNhc2UgJHByZXYgaW4KIAlvdXRwdXQpCi0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgQE9VVFBVVEAiCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCBAT1VUUFVUQCIKKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiIEBPVVRQVVRAIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiIEBPVVRQVVRAIgogCSAgOzsKIAllc2FjCiAKQEAgLTEyMzUsOCArNDE2Nyw4IEBACiAJZGxmaWxlc3xkbHByZWZpbGVzKQogCSAgaWYgdGVzdCAiJHByZWxvYWQiID0gbm87IHRoZW4KIAkgICAgIyBBZGQgdGhlIHN5bWJvbCBvYmplY3QgaW50byB0aGUgbGlua2luZyBjb21tYW5kcy4KLQkgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIEBTWU1GSUxFQCIKLQkgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgQFNZTUZJTEVAIgorCSAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiBAU1lNRklMRUAiCisJICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiBAU1lNRklMRUAiCiAJICAgIHByZWxvYWQ9eWVzCiAJICBmaQogCSAgY2FzZSAkYXJnIGluCkBAIC0xMjc0LDEwICs0MjA2LDggQEAKIAkgIDs7CiAJZXhwc3ltcykKIAkgIGV4cG9ydF9zeW1ib2xzPSIkYXJnIgotCSAgaWYgdGVzdCAhIC1mICIkYXJnIjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBzeW1ib2wgZmlsZSBcYCRhcmcnIGRvZXMgbm90IGV4aXN0IgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCisJICB0ZXN0IC1mICIkYXJnIiBcCisJICAgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgInN5bWJvbCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CkBAIC0xMjg2LDU4ICs0MjE2LDUyIEBACiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CisJZnJhbWV3b3JrKQorCSAgY2FzZSAkaG9zdCBpbgorCSAgICAqLSotZGFyd2luKikKKwkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCisJCSoiICRxYXJnLmx0ZnJhbWV3b3JrICIqKSA7OworCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisJCSAgIDs7CisJICAgICAgZXNhYworCSAgICAgIDs7CisJICBlc2FjCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CiAJaW5zdF9wcmVmaXgpCiAJICBpbnN0X3ByZWZpeF9kaXI9IiRhcmciCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7Ci0JcHJlY2lvdXNfcmVnZXgpCi0JICBwcmVjaW91c19maWxlc19yZWdleD0iJGFyZyIKLQkgIHByZXY9Ci0JICBjb250aW51ZQotCSAgOzsKLQlyZWxlYXNlKQotCSAgcmVsZWFzZT0iLSRhcmciCi0JICBwcmV2PQotCSAgY29udGludWUKLQkgIDs7CiAJb2JqZWN0bGlzdCkKIAkgIGlmIHRlc3QgLWYgIiRhcmciOyB0aGVuCiAJICAgIHNhdmVfYXJnPSRhcmcKIAkgICAgbW9yZWFyZ3M9Ci0JICAgIGZvciBmaWwgaW4gYGNhdCAkc2F2ZV9hcmdgCisJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKIAkgICAgZG8KICMJICAgICAgbW9yZWFyZ3M9IiRtb3JlYXJncyAkZmlsIgogCSAgICAgIGFyZz0kZmlsCiAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCiAKIAkgICAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBvYmplY3QuCi0JICAgICAgaWYgKCR7U0VEfSAtZSAnMnEnICRhcmcgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgICAgIGlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRhcmciOyB0aGVuCiAJCXBpY19vYmplY3Q9CiAJCW5vbl9waWNfb2JqZWN0PQogCiAJCSMgUmVhZCB0aGUgLmxvIGZpbGUKLQkJIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCi0JCWNhc2UgJGFyZyBpbgotCQkqLyogfCAqXFwqKSAuICRhcmcgOzsKLQkJKikgLiAuLyRhcmcgOzsKLQkJZXNhYworCQlmdW5jX3NvdXJjZSAiJGFyZyIKIAotCQlpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwgXAorCQlpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwKIAkJICAgdGVzdCAteiAiJG5vbl9waWNfb2JqZWN0IiB8fAotCQkgICB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lICYmIFwKKwkJICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJgogCQkgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiID0gbm9uZTsgdGhlbgotCQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIG5hbWUgb2Ygb2JqZWN0IGZvciBcYCRhcmcnIiAxPiYyCi0JCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yIFxgJGFyZyciCiAJCWZpCiAKIAkJIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLQkJeGRpcj1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JCWlmIHRlc3QgIlgkeGRpciIgPSAiWCRhcmciOyB0aGVuCi0JCSAgeGRpcj0KLQkJZWxzZQotCQkgIHhkaXI9IiR4ZGlyLyIKLQkJZmkKKwkJZnVuY19kaXJuYW1lICIkYXJnIiAiLyIgIiIKKwkJeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAkJaWYgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KIAkJICAjIFByZXBlbmQgdGhlIHN1YmRpcmVjdG9yeSB0aGUgb2JqZWN0IGlzIGZvdW5kIGluLgpAQCAtMTM2Miw3ICs0Mjg2LDcgQEAKIAkJICBmaQogCiAJCSAgIyBBIFBJQyBvYmplY3QuCi0JCSAgbGlib2Jqcz0iJGxpYm9ianMgJHBpY19vYmplY3QiCisJCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRwaWNfb2JqZWN0IgogCQkgIGFyZz0iJHBpY19vYmplY3QiCiAJCWZpCiAKQEAgLTEzNzIsNyArNDI5Niw3IEBACiAJCSAgbm9uX3BpY19vYmplY3Q9IiR4ZGlyJG5vbl9waWNfb2JqZWN0IgogCiAJCSAgIyBBIHN0YW5kYXJkIG5vbi1QSUMgb2JqZWN0Ci0JCSAgbm9uX3BpY19vYmplY3RzPSIkbm9uX3BpY19vYmplY3RzICRub25fcGljX29iamVjdCIKKwkJICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJCSAgaWYgdGVzdCAteiAiJHBpY19vYmplY3QiIHx8IHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgOyB0aGVuCiAJCSAgICBhcmc9IiRub25fcGljX29iamVjdCIKIAkJICBmaQpAQCAtMTM4MCw0NiArNDMwNCw0OCBAQAogCQkgICMgSWYgdGhlIFBJQyBvYmplY3QgZXhpc3RzLCB1c2UgaXQgaW5zdGVhZC4KIAkJICAjICR4ZGlyIHdhcyBwcmVwZW5kZWQgdG8gJHBpY19vYmplY3QgYWJvdmUuCiAJCSAgbm9uX3BpY19vYmplY3Q9IiRwaWNfb2JqZWN0IgotCQkgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJCSAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgogCQlmaQogCSAgICAgIGVsc2UKIAkJIyBPbmx5IGFuIGVycm9yIGlmIG5vdCBkb2luZyBhIGRyeS1ydW4uCi0JCWlmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0JCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIgMT4mMgotCQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCQllbHNlCi0JCSAgIyBEcnktcnVuIGNhc2UuCi0KKwkJaWYgJG9wdF9kcnlfcnVuOyB0aGVuCiAJCSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLQkJICB4ZGlyPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkJICBpZiB0ZXN0ICJYJHhkaXIiID0gIlgkYXJnIjsgdGhlbgotCQkgICAgeGRpcj0KLQkJICBlbHNlCi0JCSAgICB4ZGlyPSIkeGRpci8iCi0JCSAgZmkKKwkJICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgorCQkgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCi0JCSAgcGljX29iamVjdD1gJGVjaG8gIlgke3hkaXJ9JHtvYmpkaXJ9LyR7YXJnfSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotCQkgIG5vbl9waWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke2FyZ30iIHwgJFhzZWQgLWUgIiRsbzJvImAKLQkJICBsaWJvYmpzPSIkbGlib2JqcyAkcGljX29iamVjdCIKLQkJICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCQkgIGZ1bmNfbG8ybyAiJGFyZyIKKwkJICBwaWNfb2JqZWN0PSR4ZGlyJG9iamRpci8kZnVuY19sbzJvX3Jlc3VsdAorCQkgIG5vbl9waWNfb2JqZWN0PSR4ZGlyJGZ1bmNfbG8yb19yZXN1bHQKKwkJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCisJCSAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgorCSAgICAgICAgZWxzZQorCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGFyZycgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBvYmplY3QiCiAJCWZpCiAJICAgICAgZmkKIAkgICAgZG9uZQogCSAgZWxzZQotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBsaW5rIGlucHV0IGZpbGUgXGAkc2F2ZV9hcmcnIGRvZXMgbm90IGV4aXN0IgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZnVuY19mYXRhbF9lcnJvciAibGluayBpbnB1dCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCiAJICBmaQogCSAgYXJnPSRzYXZlX2FyZwogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OworCXByZWNpb3VzX3JlZ2V4KQorCSAgcHJlY2lvdXNfZmlsZXNfcmVnZXg9IiRhcmciCisJICBwcmV2PQorCSAgY29udGludWUKKwkgIDs7CisJcmVsZWFzZSkKKwkgIHJlbGVhc2U9Ii0kYXJnIgorCSAgcHJldj0KKwkgIGNvbnRpbnVlCisJICA7OwogCXJwYXRoIHwgeHJwYXRoKQogCSAgIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJICBjYXNlICRhcmcgaW4KIAkgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKIAkgICopCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IG9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGFic29sdXRlIHJ1bi1wYXRocyBhcmUgYWxsb3dlZCIKIAkgICAgOzsKIAkgIGVzYWMKIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCkBAIC0xNDM2LDM5ICs0MzYyLDM3IEBACiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7Ci0JeGNvbXBpbGVyKQotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKwlzaHJleHQpCisJICBzaHJleHRfY21kcz0iJGFyZyIKIAkgIHByZXY9Ci0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHFhcmciCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCXhsaW5rZXIpCi0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRxYXJnIgorCXdlYWspCisJICB3ZWFrX2xpYnM9IiR3ZWFrX2xpYnMgJGFyZyIKIAkgIHByZXY9Ci0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJHdsJHFhcmciCi0JICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkd2wkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCXhjY2xpbmtlcikKIAkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKIAkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCiAJICBwcmV2PQotCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRxYXJnIgotCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHFhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCXNocmV4dCkKLSAgCSAgc2hyZXh0X2NtZHM9IiRhcmciCisJeGNvbXBpbGVyKQorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKIAkgIHByZXY9CisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwotCWRhcndpbl9mcmFtZXdvcmt8ZGFyd2luX2ZyYW1ld29ya19za2lwKQotCSAgdGVzdCAiJHByZXYiID0gImRhcndpbl9mcmFtZXdvcmsiICYmIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLQkgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkYXJnIgotCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKKwl4bGlua2VyKQorCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKIAkgIHByZXY9CisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wkcWFyZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKIAkgIGNvbnRpbnVlCiAJICA7OwogCSopCkBAIC0xNDg0LDE2ICs0NDA4LDE2IEBACiAgICAgICBjYXNlICRhcmcgaW4KICAgICAgIC1hbGwtc3RhdGljKQogCWlmIHRlc3QgLW4gIiRsaW5rX3N0YXRpY19mbGFnIjsgdGhlbgotCSAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRsaW5rX3N0YXRpY19mbGFnIgotCSAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGxpbmtfc3RhdGljX2ZsYWciCisJICAjIFNlZSBjb21tZW50IGZvciAtc3RhdGljIGZsYWcgYmVsb3csIGZvciBtb3JlIGRldGFpbHMuCisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkbGlua19zdGF0aWNfZmxhZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkbGlua19zdGF0aWNfZmxhZyIKIAlmaQogCWNvbnRpbnVlCiAJOzsKIAogICAgICAgLWFsbG93LXVuZGVmaW5lZCkKIAkjIEZJWE1FOiByZW1vdmUgdGhpcyBmbGFnIHNvbWV0aW1lIGluIHRoZSBmdXR1cmUuCi0JJGVjaG8gIiRtb2RlbmFtZTogXGAtYWxsb3ctdW5kZWZpbmVkJyBpcyBkZXByZWNhdGVkIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQiIDE+JjIKLQljb250aW51ZQorCWZ1bmNfZmF0YWxfZXJyb3IgIlxgLWFsbG93LXVuZGVmaW5lZCcgbXVzdCBub3QgYmUgdXNlZCBiZWNhdXNlIGl0IGlzIHRoZSBkZWZhdWx0IgogCTs7CiAKICAgICAgIC1hdm9pZC12ZXJzaW9uKQpAQCAtMTUxOCw4ICs0NDQyLDcgQEAKIAogICAgICAgLWV4cG9ydC1zeW1ib2xzIHwgLWV4cG9ydC1zeW1ib2xzLXJlZ2V4KQogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogbW9yZSB0aGFuIG9uZSAtZXhwb3J0ZWQtc3ltYm9scyBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAibW9yZSB0aGFuIG9uZSAtZXhwb3J0ZWQtc3ltYm9scyBhcmd1bWVudCBpcyBub3QgYWxsb3dlZCIKIAlmaQogCWlmIHRlc3QgIlgkYXJnIiA9ICJYLWV4cG9ydC1zeW1ib2xzIjsgdGhlbgogCSAgcHJldj1leHBzeW1zCkBAIC0xNTI5LDE1ICs0NDUyLDggQEAKIAljb250aW51ZQogCTs7CiAKLSAgICAgIC1mcmFtZXdvcmt8LWFyY2h8LWlzeXNyb290KQotCWNhc2UgIiAkQ0MgIiBpbgotCSAgKiIgJHthcmd9ICR7MX0gIiogfCAqIiAke2FyZ30JJHsxfSAiKikgCi0JCXByZXY9ZGFyd2luX2ZyYW1ld29ya19za2lwIDs7Ci0JICAqKSBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0JICAgICBwcmV2PWRhcndpbl9mcmFtZXdvcmsgOzsKLQllc2FjCi0JY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0JZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKKyAgICAgIC1mcmFtZXdvcmspCisJcHJldj1mcmFtZXdvcmsKIAljb250aW51ZQogCTs7CiAKQEAgLTE1NTEsMjUgKzQ0NjcsMzAgQEAKICAgICAgIC1MW0EtWl1bQS1aXSo6KikKIAljYXNlICR3aXRoX2djYy8kaG9zdCBpbgogCW5vLyotKi1pcml4KiB8IC8qLSotaXJpeCopCi0JICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLQkgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCisJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAJICA7OwogCWVzYWMKIAljb250aW51ZQogCTs7CiAKICAgICAgIC1MKikKLQlkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncy9eLUwvLydgCisJZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGFyZyIKKwlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCisJICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KKwkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKKwkgIGVsc2UKKwkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCisJICBmaQorCWZpCiAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCiAJY2FzZSAkZGlyIGluCiAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OwogCSopCiAJICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCi0JICBpZiB0ZXN0IC16ICIkYWJzZGlyIjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGRpciciIDE+JjIKLQkgICAgYWJzZGlyPSIkZGlyIgotCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGRpciIKLQkgIGZpCisJICB0ZXN0IC16ICIkYWJzZGlyIiAmJiBcCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkZGlyJyIKIAkgIGRpcj0iJGFic2RpciIKIAkgIDs7CiAJZXNhYwpAQCAtMTU4MSwxNCArNDUwMiwxNiBAQAogCSAgOzsKIAllc2FjCiAJY2FzZSAkaG9zdCBpbgotCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqKQotCSAgdGVzdGJpbmRpcj1gJGVjaG8gIlgkZGlyIiB8ICRYc2VkIC1lICdzKi9saWIkKi9iaW4qJ2AKKwkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotY2VnY2MqKQorCSAgdGVzdGJpbmRpcj1gJEVDSE8gIlgkZGlyIiB8ICRYc2VkIC1lICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSRkaXI7OwogCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKIAkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwpAQCAtMTU5OSw3ICs0NTIyLDcgQEAKICAgICAgIC1sKikKIAlpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgfHwgdGVzdCAiWCRhcmciID0gIlgtbG0iOyB0aGVuCiAJICBjYXNlICRob3N0IGluCi0JICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKikKIAkgICAgIyBUaGVzZSBzeXN0ZW1zIGRvbid0IGFjdHVhbGx5IGhhdmUgYSBDIG9yIG1hdGggbGlicmFyeSAoYXMgc3VjaCkKIAkgICAgY29udGludWUKIAkgICAgOzsKQEAgLTE2MTMsNyArNDUzNiw3IEBACiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBhbmQgbWF0aCBsaWJyYXJpZXMgYXJlIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1mcmFtZXdvcmsgU3lzdGVtIgorCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCkBAIC0xNjM3LDYzICs0NTYwLDM1IEBACiAJY29udGludWUKIAk7OwogCi0gICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCi0gICAgICAjIGNsYXNzZXMsIG5hbWUgbWFuZ2xpbmcsIGFuZCBleGNlcHRpb24gaGFuZGxpbmcuCi0gICAgICAtbW9kZWwpCi0JY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotCWZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRhcmciCi0JcHJldj14Y29tcGlsZXIKLQljb250aW51ZQotCTs7Ci0KLSAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0JY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0JZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJGFyZyIKLQljb250aW51ZQotCTs7Ci0KLSAgICAgIC1tdWx0aV9tb2R1bGUpCi0Jc2luZ2xlX21vZHVsZT0iJHt3bH0tbXVsdGlfbW9kdWxlIgotCWNvbnRpbnVlCi0JOzsKLQogICAgICAgLW1vZHVsZSkKIAltb2R1bGU9eWVzCiAJY29udGludWUKIAk7OwogCi0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgotICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKLSAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCi0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgotICAgICAgIyAtbSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBjb21waWxlciBhcmdzIGZvciBHQ0MKLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYwotICAgICAgIyBjb21waWxlciBhcmdzIGZvciBHQ0MKLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLSAgICAgICMgQGZpbGUgR0NDIHJlc3BvbnNlIGZpbGVzCi0gICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKLSAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKikKKyAgICAgICMgVHJ1NjQgVU5JWCB1c2VzIC1tb2RlbCBbYXJnXSB0byBkZXRlcm1pbmUgdGhlIGxheW91dCBvZiBDKysKKyAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KKyAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCisgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290KQorCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKKwlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorCXByZXY9eGNvbXBpbGVyCisJY29udGludWUKKwk7OwogCi0JIyBVbmtub3duIGFyZ3VtZW50cyBpbiBib3RoIGZpbmFsaXplX2NvbW1hbmQgYW5kIGNvbXBpbGVfY29tbWFuZCBuZWVkCi0JIyB0byBiZSBhZXN0aGV0aWNhbGx5IHF1b3RlZCBiZWNhdXNlIHRoZXkgYXJlIGV2YWxlZCBsYXRlci4KLQlhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0JY2FzZSAkYXJnIGluCi0JKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICBhcmc9IlwiJGFyZ1wiIgotCSAgOzsKKyAgICAgIC1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmV8LXRocmVhZHMpCisJY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKwkgICAgKiIgJGFyZyAiKikgOzsKKwkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKIAllc2FjCi0gICAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkYXJnIgotICAgICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgotICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCi0gICAgICAgIGNvbnRpbnVlCi0gICAgICAgIDs7CisJY29udGludWUKKwk7OwogCi0gICAgICAtc2hyZXh0KQotCXByZXY9c2hyZXh0CisgICAgICAtbXVsdGlfbW9kdWxlKQorCXNpbmdsZV9tb2R1bGU9IiR7d2x9LW11bHRpX21vZHVsZSIKIAljb250aW51ZQogCTs7CiAKQEAgLTE3MDQsMTEgKzQ1OTksMTEgQEAKIAogICAgICAgLW5vLWluc3RhbGwpCiAJY2FzZSAkaG9zdCBpbgotCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWRhcndpbiopCisJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotZGFyd2luKiB8ICotY2VnY2MqKQogCSAgIyBUaGUgUEFUSCBoYWNrZXJ5IGluIHdyYXBwZXIgc2NyaXB0cyBpcyByZXF1aXJlZCBvbiBXaW5kb3dzCiAJICAjIGFuZCBEYXJ3aW4gaW4gb3JkZXIgZm9yIHRoZSBsb2FkZXIgdG8gZmluZCBhbnkgZGxscyBpdCBuZWVkcy4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLW5vLWluc3RhbGwnIGlzIGlnbm9yZWQgZm9yICRob3N0IiAxPiYyCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBhc3N1bWluZyBcYC1uby1mYXN0LWluc3RhbGwnIGluc3RlYWQiIDE+JjIKKwkgIGZ1bmNfd2FybmluZyAiXGAtbm8taW5zdGFsbCcgaXMgaWdub3JlZCBmb3IgJGhvc3QiCisJICBmdW5jX3dhcm5pbmcgImFzc3VtaW5nIFxgLW5vLWZhc3QtaW5zdGFsbCcgaW5zdGVhZCIKIAkgIGZhc3RfaW5zdGFsbD1ubwogCSAgOzsKIAkqKSBub19pbnN0YWxsPXllcyA7OwpAQCAtMTc0OSwxMyArNDY0NCwxMyBAQAogCTs7CiAKICAgICAgIC1SKikKLQlkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncy9eLVIvLydgCisJZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGFyZyIKKwlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCWNhc2UgJGRpciBpbgogCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKIAkqKQotCSAgJGVjaG8gIiRtb2RlbmFtZTogb25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCiAJICA7OwogCWVzYWMKIAljYXNlICIkeHJwYXRoICIgaW4KQEAgLTE3NjUsNiArNDY2MCwxNiBAQAogCWNvbnRpbnVlCiAJOzsKIAorICAgICAgLXNoYXJlZCkKKwkjIFRoZSBlZmZlY3RzIG9mIC1zaGFyZWQgYXJlIGRlZmluZWQgaW4gYSBwcmV2aW91cyBsb29wLgorCWNvbnRpbnVlCisJOzsKKworICAgICAgLXNocmV4dCkKKwlwcmV2PXNocmV4dAorCWNvbnRpbnVlCisJOzsKKwogICAgICAgLXN0YXRpYyB8IC1zdGF0aWMtbGlidG9vbC1saWJzKQogCSMgVGhlIGVmZmVjdHMgb2YgLXN0YXRpYyBhcmUgZGVmaW5lZCBpbiBhIHByZXZpb3VzIGxvb3AuCiAJIyBXZSB1c2VkIHRvIGRvIHRoZSBzYW1lIGFzIC1hbGwtc3RhdGljIG9uIHBsYXRmb3JtcyB0aGF0CkBAIC0xNzgzLDQ3ICs0Njg4LDQ5IEBACiAJcHJldj12aW5mbwogCWNvbnRpbnVlCiAJOzsKKwogICAgICAgLXZlcnNpb24tbnVtYmVyKQogCXByZXY9dmluZm8KIAl2aW5mb19udW1iZXI9eWVzCiAJY29udGludWUKIAk7OwogCisgICAgICAtd2VhaykKKyAgICAgICAgcHJldj13ZWFrCisJY29udGludWUKKwk7OworCiAgICAgICAtV2MsKikKLQlhcmdzPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiIC1lICdzL14tV2MsLy8nYAorCWZ1bmNfc3RyaXBuYW1lICctV2MsJyAnJyAiJGFyZyIKKwlhcmdzPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAlhcmc9CiAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCiAJICBJRlM9IiRzYXZlX2lmcyIKLQkgIGNhc2UgJGZsYWcgaW4KLQkgICAgKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICAgIGZsYWc9IlwiJGZsYWdcIiIKLQkgICAgOzsKLQkgIGVzYWMKLQkgIGFyZz0iJGFyZyAkd2wkZmxhZyIKLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGZsYWciCisgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCisJICBhcmc9IiRhcmcgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICJzL14gLy8iYAorCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKKwlhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCTs7CiAKICAgICAgIC1XbCwqKQotCWFyZ3M9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCIgLWUgJ3MvXi1XbCwvLydgCisJZnVuY19zdHJpcG5hbWUgJy1XbCwnICcnICIkYXJnIgorCWFyZ3M9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCWFyZz0KIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nLCcKIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgotCSAgY2FzZSAkZmxhZyBpbgotCSAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgICAgZmxhZz0iXCIkZmxhZ1wiIgotCSAgICA7OwotCSAgZXNhYwotCSAgYXJnPSIkYXJnICR3bCRmbGFnIgotCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZmxhZyIKLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZmxhZyIKKyAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKKwkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJZG9uZQogCUlGUz0iJHNhdmVfaWZzIgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICJzL14gLy8iYAorCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKKwlhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCTs7CiAKICAgICAgIC1YY29tcGlsZXIpCkBAIC0xODQxLDE2ICs0NzQ4LDM2IEBACiAJY29udGludWUKIAk7OwogCisgICAgICAjIC1tc2dfKiBmb3Igb3NmIGNjCisgICAgICAtbXNnXyopCisJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKwlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwk7OworCisgICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgorICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKKyAgICAgICMgLXhhcmNoPSosIC14dGFyZ2V0PSogZW5hYmxlIDY0LWJpdCBtb2RlIG9uIHRoZSBTdW4gY29tcGlsZXIKKyAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCisgICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBwYXNzIHRocm91Z2ggYXJjaGl0ZWN0dXJlLXNwZWNpZmljCisgICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQworICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiBwYXNzIHRocm91Z2ggcHJvZmlsaW5nIGZsYWcgZm9yIEdDQworICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKKyAgICAgIC02NHwtbWlwc1swLTldfC1yWzAtOV1bMC05XSp8LXhhcmNoPSp8LXh0YXJnZXQ9KnwrREEqfCtERCp8LXEqfC1tKnwgXAorICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqKQorICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorICAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorICAgICAgICBjb250aW51ZQorICAgICAgICA7OworCiAgICAgICAjIFNvbWUgb3RoZXIgY29tcGlsZXIgZmxhZy4KICAgICAgIC0qIHwgKyopCi0JIyBVbmtub3duIGFyZ3VtZW50cyBpbiBib3RoIGZpbmFsaXplX2NvbW1hbmQgYW5kIGNvbXBpbGVfY29tbWFuZCBuZWVkCi0JIyB0byBiZSBhZXN0aGV0aWNhbGx5IHF1b3RlZCBiZWNhdXNlIHRoZXkgYXJlIGV2YWxlZCBsYXRlci4KLQlhcmc9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0JY2FzZSAkYXJnIGluCi0JKltcW1x+XCNcXlwmXCpcKFwpXHtcfVx8XDtcPFw+XD9cJ1wgXAldKnwqXSp8IiIpCi0JICBhcmc9IlwiJGFyZ1wiIgotCSAgOzsKLQllc2FjCisgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCisJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCiAJOzsKIAogICAgICAgKi4kb2JqZXh0KQpAQCAtMTg2MiwzMiArNDc4OSwyMyBAQAogCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgogCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgb2JqZWN0LgotCWlmICgke1NFRH0gLWUgJzJxJyAkYXJnIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkYXJnIjsgdGhlbgogCSAgcGljX29iamVjdD0KIAkgIG5vbl9waWNfb2JqZWN0PQogCiAJICAjIFJlYWQgdGhlIC5sbyBmaWxlCi0JICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgIGNhc2UgJGFyZyBpbgotCSAgKi8qIHwgKlxcKikgLiAkYXJnIDs7Ci0JICAqKSAuIC4vJGFyZyA7OwotCSAgZXNhYworCSAgZnVuY19zb3VyY2UgIiRhcmciCiAKLQkgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCBcCisJICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwKIAkgICAgIHRlc3QgLXogIiRub25fcGljX29iamVjdCIgfHwKLQkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgJiYgXAorCSAgICAgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSAmJgogCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiA9IG5vbmU7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yIFxgJGFyZyciIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2Ygb2JqZWN0IGZvciBcYCRhcmcnIgogCSAgZmkKIAogCSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLQkgIHhkaXI9YCRlY2hvICJYJGFyZyIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotCSAgaWYgdGVzdCAiWCR4ZGlyIiA9ICJYJGFyZyI7IHRoZW4KLQkgICAgeGRpcj0KLSAJICBlbHNlCi0JICAgIHhkaXI9IiR4ZGlyLyIKLQkgIGZpCisJICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgorCSAgeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAkgIGlmIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCiAJICAgICMgUHJlcGVuZCB0aGUgc3ViZGlyZWN0b3J5IHRoZSBvYmplY3QgaXMgZm91bmQgaW4uCkBAIC0xOTEyLDcgKzQ4MzAsNyBAQAogCSAgICBmaQogCiAJICAgICMgQSBQSUMgb2JqZWN0LgotCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkcGljX29iamVjdCIKKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRwaWNfb2JqZWN0IgogCSAgICBhcmc9IiRwaWNfb2JqZWN0IgogCSAgZmkKIApAQCAtMTkyMiw3ICs0ODQwLDcgQEAKIAkgICAgbm9uX3BpY19vYmplY3Q9IiR4ZGlyJG5vbl9waWNfb2JqZWN0IgogCiAJICAgICMgQSBzdGFuZGFyZCBub24tUElDIG9iamVjdAotCSAgICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJICAgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lIDsgdGhlbgogCSAgICAgIGFyZz0iJG5vbl9waWNfb2JqZWN0IgogCSAgICBmaQpAQCAtMTkzMCwyOCArNDg0OCwyMiBAQAogCSAgICAjIElmIHRoZSBQSUMgb2JqZWN0IGV4aXN0cywgdXNlIGl0IGluc3RlYWQuCiAJICAgICMgJHhkaXIgd2FzIHByZXBlbmRlZCB0byAkcGljX29iamVjdCBhYm92ZS4KIAkgICAgbm9uX3BpY19vYmplY3Q9IiRwaWNfb2JqZWN0IgotCSAgICBub25fcGljX29iamVjdHM9IiRub25fcGljX29iamVjdHMgJG5vbl9waWNfb2JqZWN0IgorCSAgICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJICBmaQogCWVsc2UKIAkgICMgT25seSBhbiBlcnJvciBpZiBub3QgZG9pbmcgYSBkcnktcnVuLgotCSAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGVsc2UKLQkgICAgIyBEcnktcnVuIGNhc2UuCi0KKwkgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgogCSAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotCSAgICB4ZGlyPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkgICAgaWYgdGVzdCAiWCR4ZGlyIiA9ICJYJGFyZyI7IHRoZW4KLQkgICAgICB4ZGlyPQotCSAgICBlbHNlCi0JICAgICAgeGRpcj0iJHhkaXIvIgotCSAgICBmaQorCSAgICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgorCSAgICB4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKIAotCSAgICBwaWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke29iamRpcn0vJHthcmd9IiB8ICRYc2VkIC1lICIkbG8ybyJgCi0JICAgIG5vbl9waWNfb2JqZWN0PWAkZWNobyAiWCR7eGRpcn0ke2FyZ30iIHwgJFhzZWQgLWUgIiRsbzJvImAKLQkgICAgbGlib2Jqcz0iJGxpYm9ianMgJHBpY19vYmplY3QiCi0JICAgIG5vbl9waWNfb2JqZWN0cz0iJG5vbl9waWNfb2JqZWN0cyAkbm9uX3BpY19vYmplY3QiCisJICAgIGZ1bmNfbG8ybyAiJGFyZyIKKwkgICAgcGljX29iamVjdD0keGRpciRvYmpkaXIvJGZ1bmNfbG8yb19yZXN1bHQKKwkgICAgbm9uX3BpY19vYmplY3Q9JHhkaXIkZnVuY19sbzJvX3Jlc3VsdAorCSAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCisJICAgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKKwkgIGVsc2UKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIKIAkgIGZpCiAJZmkKIAk7OwpAQCAtMTk4NCw3MCArNDg5Niw1MSBAQAogICAgICAgKikKIAkjIFVua25vd24gYXJndW1lbnRzIGluIGJvdGggZmluYWxpemVfY29tbWFuZCBhbmQgY29tcGlsZV9jb21tYW5kIG5lZWQKIAkjIHRvIGJlIGFlc3RoZXRpY2FsbHkgcXVvdGVkIGJlY2F1c2UgdGhleSBhcmUgZXZhbGVkIGxhdGVyLgotCWFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQljYXNlICRhcmcgaW4KLQkqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQkgIGFyZz0iXCIkYXJnXCIiCi0JICA7OwotCWVzYWMKKwlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCTs7CiAgICAgICBlc2FjICMgYXJnCiAKICAgICAgICMgTm93IGFjdHVhbGx5IHN1YnN0aXR1dGUgdGhlIGFyZ3VtZW50IGludG8gdGhlIGNvbW1hbmRzLgogICAgICAgaWYgdGVzdCAtbiAiJGFyZyI7IHRoZW4KLQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGFyZyIKLQlmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAgICAgICBmaQogICAgIGRvbmUgIyBhcmd1bWVudCBwYXJzaW5nIGxvb3AKIAotICAgIGlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogdGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQorICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2YXJnJyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCiAKICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCiAgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgotICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICRhcmciCi0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkYXJnIgorICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgogICAgIGZpCiAKICAgICBvbGRsaWJzPQogICAgICMgY2FsY3VsYXRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB3aXRob3V0IGl0cyBkaXJlY3RvcnkKLSAgICBvdXRwdXRuYW1lPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICBmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgorICAgIG91dHB1dG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKICAgICBsaWJvYmpzX3NhdmU9IiRsaWJvYmpzIgogCiAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCiAgICAgICAjIGdldCB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluICRzaGxpYnBhdGhfdmFyCi0gICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRlY2hvIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiWFwkeyRzaGxpYnBhdGhfdmFyfVwiIFx8IFwkWHNlZCAtZSBcJ3MvOi8gL2dcJ1xgCiAgICAgZWxzZQogICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9CiAgICAgZmkKICAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKICAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCiAKLSAgICBvdXRwdXRfb2JqZGlyPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLSAgICBpZiB0ZXN0ICJYJG91dHB1dF9vYmpkaXIiID0gIlgkb3V0cHV0IjsgdGhlbgotICAgICAgb3V0cHV0X29iamRpcj0iJG9iamRpciIKLSAgICBlbHNlCi0gICAgICBvdXRwdXRfb2JqZGlyPSIkb3V0cHV0X29iamRpci8kb2JqZGlyIgotICAgIGZpCisgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKKyAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCiAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCi0gICAgaWYgdGVzdCAhIC1kICIkb3V0cHV0X29iamRpciI7IHRoZW4KLSAgICAgICRzaG93ICIkbWtkaXIgJG91dHB1dF9vYmpkaXIiCi0gICAgICAkcnVuICRta2RpciAkb3V0cHV0X29iamRpcgotICAgICAgZXhpdF9zdGF0dXM9JD8KLSAgICAgIGlmIHRlc3QgIiRleGl0X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkb3V0cHV0X29iamRpciI7IHRoZW4KLQlleGl0ICRleGl0X3N0YXR1cwotICAgICAgZmkKLSAgICBmaQorICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCiAKICAgICAjIERldGVybWluZSB0aGUgdHlwZSBvZiBvdXRwdXQKICAgICBjYXNlICRvdXRwdXQgaW4KICAgICAiIikKLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUiIDE+JjIKLSAgICAgICRlY2hvICIkaGVscCIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYW4gb3V0cHV0IGZpbGUiCiAgICAgICA7OwogICAgICouJGxpYmV4dCkgbGlua21vZGU9b2xkbGliIDs7CiAgICAgKi5sbyB8ICouJG9iamV4dCkgbGlua21vZGU9b2JqIDs7CkBAIC0yMDU1LDIyICs0OTQ4LDEzIEBACiAgICAgKikgbGlua21vZGU9cHJvZyA7OyAjIEFueXRoaW5nIGVsc2Ugc2hvdWxkIGJlIGEgcHJvZ3JhbS4KICAgICBlc2FjCiAKLSAgICBjYXNlICRob3N0IGluCi0gICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqKQotICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKLSAgICAgIGR1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz15ZXMKLSAgICAgIDs7Ci0gICAgKikKLSAgICAgIGR1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kZHVwbGljYXRlX2RlcHMKLSAgICAgIDs7Ci0gICAgZXNhYwogICAgIHNwZWNpYWxkZXBsaWJzPQogCiAgICAgbGlicz0KICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKICAgICAjIHRoYXQgYXJlIGxpbmtlZCBtb3JlIHRoYW4gb25jZSAoZS5nLiAtbGEgLWxiIC1sYSkKICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotICAgICAgaWYgdGVzdCAiWCRkdXBsaWNhdGVfZGVwcyIgPSAiWHllcyIgOyB0aGVuCisgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgogCWNhc2UgIiRsaWJzICIgaW4KIAkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CiAJZXNhYwpAQCAtMjA4NSw3ICs0OTY5LDcgQEAKICAgICAgICMgJHBvc3RkZXBzIGFuZCBtYXJrIHRoZW0gYXMgc3BlY2lhbCAoaS5lLiwgd2hvc2UgZHVwbGljYXRlcyBhcmUKICAgICAgICMgbm90IHRvIGJlIGVsaW1pbmF0ZWQpLgogICAgICAgcHJlX3Bvc3RfZGVwcz0KLSAgICAgIGlmIHRlc3QgIlgkZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KKyAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCiAJZm9yIHByZV9wb3N0X2RlcCBpbiAkcHJlZGVwcyAkcG9zdGRlcHM7IGRvCiAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCiAJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OwpAQCAtMjEwMSwxNSArNDk4NSwxNiBAQAogICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0KICAgICBuZWVkX3JlbGluaz1ubyAjIHdoZXRoZXIgd2UncmUgbGlua2luZyBhbnkgdW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMKICAgICBub3RpbnN0X2RlcGxpYnM9ICMgbm90LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcworICAgIG5vdGluc3RfcGF0aD0gIyBwYXRocyB0aGF0IGNvbnRhaW4gbm90LWluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcworCiAgICAgY2FzZSAkbGlua21vZGUgaW4KICAgICBsaWIpCi0JcGFzc2VzPSJjb252IGxpbmsiCisJcGFzc2VzPSJjb252IGRscHJlb3BlbiBsaW5rIgogCWZvciBmaWxlIGluICRkbGZpbGVzICRkbHByZWZpbGVzOyBkbwogCSAgY2FzZSAkZmlsZSBpbgogCSAgKi5sYSkgOzsKIAkgICopCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGxpYnJhcmllcyBjYW4gXGAtZGxvcGVuJyBvbmx5IGxpYnRvb2wgbGlicmFyaWVzOiAkZmlsZSIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZnVuY19mYXRhbF9oZWxwICJsaWJyYXJpZXMgY2FuIFxgLWRsb3Blbicgb25seSBsaWJ0b29sIGxpYnJhcmllczogJGZpbGUiCiAJICAgIDs7CiAJICBlc2FjCiAJZG9uZQpAQCAtMjEyNSw3ICs1MDEwLDIwIEBACiAgICAgKikgIHBhc3Nlcz0iY29udiIKIAk7OwogICAgIGVzYWMKKwogICAgIGZvciBwYXNzIGluICRwYXNzZXM7IGRvCisgICAgICAjIFRoZSBwcmVvcGVuIHBhc3MgaW4gbGliIG1vZGUgcmV2ZXJzZXMgJGRlcGxpYnM7IHB1dCBpdCBiYWNrIGhlcmUKKyAgICAgICMgc28gdGhhdCAtTCBjb21lcyBiZWZvcmUgbGlicyB0aGF0IG5lZWQgaXQgZm9yIGluc3RhbmNlLi4uCisgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIjsgdGhlbgorCSMjIEZJWE1FOiBGaW5kIHRoZSBwbGFjZSB3aGVyZSB0aGUgbGlzdCBpcyByZWJ1aWx0IGluIHRoZSB3cm9uZworCSMjICAgICAgICBvcmRlciwgYW5kIGZpeCBpdCB0aGVyZSBwcm9wZXJseQorICAgICAgICB0bXBfZGVwbGlicz0KKwlmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbworCSAgdG1wX2RlcGxpYnM9IiRkZXBsaWIgJHRtcF9kZXBsaWJzIgorCWRvbmUKKwlkZXBsaWJzPSIkdG1wX2RlcGxpYnMiCisgICAgICBmaQorCiAgICAgICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiI7IHRoZW4KIAlsaWJzPSIkZGVwbGlicyIKQEAgLTIxMzgsMTEgKzUwMzYsMzMgQEAKIAlsaW5rKSBsaWJzPSIkZGVwbGlicyAlREVQTElCUyUgJGRlcGVuZGVuY3lfbGlicyIgOzsKIAllc2FjCiAgICAgICBmaQorICAgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsZGxwcmVvcGVuIjsgdGhlbgorCSMgQ29sbGVjdCBhbmQgZm9yd2FyZCBkZXBsaWJzIG9mIHByZW9wZW5lZCBsaWJ0b29sIGxpYnMKKwlmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbworCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicworCSAgZGVwZW5kZW5jeV9saWJzPQorCSAgY2FzZSAkbGliIGluCisJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKKwkgIGVzYWMKKworCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5CisJICAjIGhhcyBkZWNsYXJlZCBhcyB3ZWFrIGxpYnMKKwkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAgICAgICAgICAgIGRlcGxpYl9iYXNlPWAkRUNITyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KKwkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OworCSAgICAqKSBkZXBsaWJzPSIkZGVwbGlicyAkZGVwbGliIiA7OworCSAgICBlc2FjCisJICBkb25lCisJZG9uZQorCWxpYnM9IiRkbHByZWZpbGVzIgorICAgICAgZmkKICAgICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRsb3BlbjsgdGhlbgogCSMgQ29sbGVjdCBkbHByZW9wZW5lZCBsaWJyYXJpZXMKIAlzYXZlX2RlcGxpYnM9IiRkZXBsaWJzIgogCWRlcGxpYnM9CiAgICAgICBmaQorCiAgICAgICBmb3IgZGVwbGliIGluICRsaWJzOyBkbwogCWxpYj0KIAlmb3VuZD1ubwpAQCAtMjE1MywxNSArNTA3MywyMiBAQAogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZWxzZQogCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisJCSAgICAqIiAkZGVwbGliICIqKSA7OworCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJZXNhYworCSAgICBmaQogCSAgZmkKIAkgIGNvbnRpbnVlCiAJICA7OwogCS1sKikKIAkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZzsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1sJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIiAxPiYyCisJICAgIGZ1bmNfd2FybmluZyAiXGAtbCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKIAkgICAgY29udGludWUKIAkgIGZpCi0JICBuYW1lPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MvXi1sLy8nYAorCSAgZnVuY19zdHJpcG5hbWUgJy1sJyAnJyAiJGRlcGxpYiIKKwkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgogCSAgICBzZWFyY2hkaXJzPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsaWJfc2VhcmNoX3BhdGggJGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycyAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGgiCiAJICBlbHNlCkBAIC0yMTk3LDIxICs1MTI0LDE3IEBACiAJICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkgICAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKQotCQlpZiAoJHtTRUR9IC1lICcycScgJGxpYiB8Ci0gICAgICAgICAgICAgICAgICAgIGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisJCWlmIGZ1bmNfbGFsaWJfcCAiJGxpYiI7IHRoZW4KIAkJICBsaWJyYXJ5X25hbWVzPQogCQkgIG9sZF9saWJyYXJ5PQotCQkgIGNhc2UgJGxpYiBpbgotCQkgICovKiB8ICpcXCopIC4gJGxpYiA7OwotCQkgICopIC4gLi8kbGliIDs7Ci0JCSAgZXNhYworCQkgIGZ1bmNfc291cmNlICIkbGliIgogCQkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KIAkJICAgIGxsPSIkbCIKIAkJICBkb25lCiAJCSAgaWYgdGVzdCAiWCRsbCIgPSAiWCRvbGRfbGlicmFyeSIgOyB0aGVuICMgb25seSBzdGF0aWMgdmVyc2lvbiBhdmFpbGFibGUKIAkJICAgIGZvdW5kPW5vCi0JCSAgICBsYWRpcj1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JCSAgICB0ZXN0ICJYJGxhZGlyIiA9ICJYJGxpYiIgJiYgbGFkaXI9Ii4iCisJCSAgICBmdW5jX2Rpcm5hbWUgIiRsaWIiICIiICIuIgorCQkgICAgbGFkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCQkgICAgbGliPSRsYWRpci8kb2xkX2xpYnJhcnkKIAkJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgogCQkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKQEAgLTIyMjMsMTkgKzUxNDYsMzUgQEAKIAkJICAgIGNvbnRpbnVlCiAJCSAgZmkKIAkJZmkKLQkgICAgICAgIDs7CisJCTs7CiAJICAgICAgKikgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAJICBmaQogCSAgOzsgIyAtbAorCSoubHRmcmFtZXdvcmspCisJICBpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csbGluayI7IHRoZW4KKwkgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisJICBlbHNlCisJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisJCSAgICAqIiAkZGVwbGliICIqKSA7OworCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKKwkJZXNhYworCSAgICBmaQorCSAgZmkKKwkgIGNvbnRpbnVlCisJICA7OwogCS1MKikKIAkgIGNhc2UgJGxpbmttb2RlIGluCiAJICBsaWIpCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAiYCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLUwvLydgCisJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisJICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgogCSAgICA7OwogCSAgcHJvZykKIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgpAQCAtMjI0OCwxNyArNTE4NywxOSBAQAogCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCiAJICAgIGZpCi0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAiYCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLUwvLydgCisJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisJICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgogCSAgICA7OwogCSAgKikKLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIgMT4mMgorCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCiAJICAgIDs7CiAJICBlc2FjICMgbGlua21vZGUKIAkgIGNvbnRpbnVlCiAJICA7OyAjIC1MCiAJLVIqKQogCSAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotCSAgICBkaXI9YCRlY2hvICJYJGRlcGxpYiIgfCAkWHNlZCAtZSAncy9eLVIvLydgCisJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCisJICAgIGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCiAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgogCSAgICAqIiAkZGlyICIqKSA7OwpAQCAtMjI3NiwzNSArNTIxNyw0MSBAQAogCSAgZmkKIAkgIGNhc2UgJGxpbmttb2RlIGluCiAJICBsaWIpCi0JICAgIHZhbGlkX2FfbGliPW5vCi0JICAgIGNhc2UgJGRlcGxpYnNfY2hlY2tfbWV0aG9kIGluCi0JICAgICAgbWF0Y2hfcGF0dGVybiopCi0JCXNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2QKLQkgICAgICAgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDIgXCguKlwpImAKLQkJaWYgZXZhbCAkZWNobyBcIiRkZXBsaWJcIiAyPi9kZXYvbnVsbCBcCi0JCSAgICB8ICRTRUQgMTBxIFwKKwkgICAgIyBMaW5raW5nIGNvbnZlbmllbmNlIG1vZHVsZXMgaW50byBzaGFyZWQgbGlicmFyaWVzIGlzIGFsbG93ZWQsCisJICAgICMgYnV0IGxpbmtpbmcgb3RoZXIgc3RhdGljIGxpYnJhcmllcyBpcyBub24tcG9ydGFibGUuCisJICAgIGNhc2UgIiAkZGxwcmVjb252ZW5pZW5jZWxpYnMgIiBpbgorCSAgICAqIiAkZGVwbGliICIqKSA7OworCSAgICAqKQorCSAgICAgIHZhbGlkX2FfbGliPW5vCisJICAgICAgY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KKwkJbWF0Y2hfcGF0dGVybiopCisJCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKKwkJICBtYXRjaF9wYXR0ZXJuX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQxIFwoLipcKSJgCisJCSAgaWYgZXZhbCAiXCRFQ0hPIFwiWCRkZXBsaWJcIiIgMj4vZGV2L251bGwgfCAkWHNlZCAtZSAxMHEgXAogCQkgICAgfCAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorCQkgICAgdmFsaWRfYV9saWI9eWVzCisJCSAgZmkKKwkJOzsKKwkJcGFzc19hbGwpCiAJCSAgdmFsaWRfYV9saWI9eWVzCi0JCWZpCiAJCTs7Ci0JICAgICAgcGFzc19hbGwpCi0JCXZhbGlkX2FfbGliPXllcwotCQk7OwotICAgICAgICAgICAgZXNhYwotCSAgICBpZiB0ZXN0ICIkdmFsaWRfYV9saWIiICE9IHllczsgdGhlbgotCSAgICAgICRlY2hvCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKLQkgICAgICAkZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKLQkgICAgICAkZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkgICAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCSAgICAgICRlY2hvICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKLQkgICAgICAkZWNobyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZWQgaGVyZS4iCi0JICAgIGVsc2UKLQkgICAgICAkZWNobwotCSAgICAgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSIKLQkgICAgICAkZWNobyAiKioqIHN0YXRpYyBsaWJyYXJ5ICRkZXBsaWIgaXMgbm90IHBvcnRhYmxlISIKLQkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCSAgICBmaQorCSAgICAgIGVzYWMKKwkgICAgICBpZiB0ZXN0ICIkdmFsaWRfYV9saWIiICE9IHllczsgdGhlbgorCQkkRUNITworCQkkRUNITyAiKioqIFdhcm5pbmc6IFRyeWluZyB0byBsaW5rIHdpdGggc3RhdGljIGxpYiBhcmNoaXZlICRkZXBsaWIuIgorCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSRFQ0hPICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKKwkJJEVDSE8gIioqKiB0aGF0IGl0IGlzIGp1c3QgYSBzdGF0aWMgYXJjaGl2ZSB0aGF0IEkgc2hvdWxkIG5vdCB1c2UgaGVyZS4iCisJICAgICAgZWxzZQorCQkkRUNITworCQkkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUiCisJCSRFQ0hPICIqKiogc3RhdGljIGxpYnJhcnkgJGRlcGxpYiBpcyBub3QgcG9ydGFibGUhIgorCQlkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgorCSAgICAgIGZpCisJICAgICAgOzsKKwkgICAgZXNhYwogCSAgICBjb250aW51ZQogCSAgICA7OwogCSAgcHJvZykKQEAgLTIzMzksMjEgKzUyODYsMTggQEAKIAkgIGNvbnRpbnVlCiAJICA7OwogCWVzYWMgIyBjYXNlICRkZXBsaWIKKwogCWlmIHRlc3QgIiRmb3VuZCIgPSB5ZXMgfHwgdGVzdCAtZiAiJGxpYiI7IHRoZW4gOgogCWVsc2UKLQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIHRoZSBsaWJyYXJ5IFxgJGxpYicgb3IgdW5oYW5kbGVkIGFyZ3VtZW50IFxgJGRlcGxpYiciIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgdGhlIGxpYnJhcnkgXGAkbGliJyBvciB1bmhhbmRsZWQgYXJndW1lbnQgXGAkZGVwbGliJyIKIAlmaQogCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLQlpZiAoJHtTRUR9IC1lICcycScgJGxpYiB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKKwlmdW5jX2xhbGliX3Vuc2FmZV9wICIkbGliIiBcCisJICB8fCBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAotCWxhZGlyPWAkZWNobyAiWCRsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQl0ZXN0ICJYJGxhZGlyIiA9ICJYJGxpYiIgJiYgbGFkaXI9Ii4iCisJZnVuY19kaXJuYW1lICIkbGliIiAiIiAiLiIKKwlsYWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCiAKIAlkbG5hbWU9CiAJZGxvcGVuPQpAQCAtMjM2MSw2ICs1MzA1LDcgQEAKIAlsaWJkaXI9CiAJbGlicmFyeV9uYW1lcz0KIAlvbGRfbGlicmFyeT0KKwlpbmhlcml0ZWRfbGlua2VyX2ZsYWdzPQogCSMgSWYgdGhlIGxpYnJhcnkgd2FzIGluc3RhbGxlZCB3aXRoIGFuIG9sZCByZWxlYXNlIG9mIGxpYnRvb2wsCiAJIyBpdCB3aWxsIG5vdCByZWRlZmluZSB2YXJpYWJsZXMgaW5zdGFsbGVkLCBvciBzaG91bGRub3RsaW5rCiAJaW5zdGFsbGVkPXllcwpAQCAtMjM2OSwxMSArNTMxNCwxOSBAQAogCiAKIAkjIFJlYWQgdGhlIC5sYSBmaWxlCi0JY2FzZSAkbGliIGluCi0JKi8qIHwgKlxcKikgLiAkbGliIDs7Ci0JKikgLiAuLyRsaWIgOzsKLQllc2FjCisJZnVuY19zb3VyY2UgIiRsaWIiCiAKKwkjIENvbnZlcnQgIi1mcmFtZXdvcmsgZm9vIiB0byAiZm9vLmx0ZnJhbWV3b3JrIgorCWlmIHRlc3QgLW4gIiRpbmhlcml0ZWRfbGlua2VyX2ZsYWdzIjsgdGhlbgorCSAgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9YCRFQ0hPICJYJGluaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MvLWZyYW1ld29yayBcKFteICRdKlwpL1wxLmx0ZnJhbWV3b3JrL2cnYAorCSAgZm9yIHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgaW4gJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWdzOyBkbworCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKwkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKKwkgICAgICAqKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisJICAgIGVzYWMKKwkgIGRvbmUKKwlmaQorCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIlggJGRlcGVuZGVuY3lfbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAogCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAogCSAgIHsgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB9OyB0aGVuCkBAIC0yMzg2LDI2ICs1MzM5LDI0IEBACiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KIAkgICAgaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotCSAgICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIiAxPiYyCi0JICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCiAJICAgIGZpCiAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KIAkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCiAJICAgIG9sZF9jb252ZW5pZW5jZT0iJG9sZF9jb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCi0JICAgIHRtcF9saWJzPQotCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0JICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLSAgICAgICAgICAgICAgaWYgdGVzdCAiWCRkdXBsaWNhdGVfZGVwcyIgPSAiWHllcyIgOyB0aGVuCi0JICAgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotCSAgICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwotCSAgICAgICAgZXNhYwotICAgICAgICAgICAgICBmaQotCSAgICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLQkgICAgZG9uZQogCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KLQkgICAgJGVjaG8gIiRtb2RlbmFtZTogXGAkbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IiAxPiYyCi0JICAgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCiAJICBmaQorCSAgdG1wX2xpYnM9CisJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KKwkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7CisJICAgICAgZXNhYworCSAgICBmaQorCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisJICBkb25lCiAJICBjb250aW51ZQogCWZpICMgJHBhc3MgPSBjb252CiAKQEAgLTI0MTYsMTUgKzUzNjcsMTMgQEAKIAkgIGxpbmtsaWI9IiRsIgogCWRvbmUKIAlpZiB0ZXN0IC16ICIkbGlua2xpYiI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgogCWZpCiAKIAkjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KIAlpZiB0ZXN0ICIkcGFzcyIgPSBkbG9wZW47IHRoZW4KIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCAtZGxvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IC1kbG9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgogCSAgZmkKIAkgIGlmIHRlc3QgLXogIiRkbG5hbWUiIHx8CiAJICAgICB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fApAQCAtMjQ0NiwxOCArNTM5NSwxOSBAQAogCSopCiAJICBhYnNfbGFkaXI9YGNkICIkbGFkaXIiICYmIHB3ZGAKIAkgIGlmIHRlc3QgLXogIiRhYnNfbGFkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkbGFkaXInIiAxPiYyCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHBhc3NpbmcgaXQgbGl0ZXJhbGx5IHRvIHRoZSBsaW5rZXIsIGFsdGhvdWdoIGl0IG1pZ2h0IGZhaWwiIDE+JjIKKwkgICAgZnVuY193YXJuaW5nICJjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGxhZGlyJyIKKwkgICAgZnVuY193YXJuaW5nICJwYXNzaW5nIGl0IGxpdGVyYWxseSB0byB0aGUgbGlua2VyLCBhbHRob3VnaCBpdCBtaWdodCBmYWlsIgogCSAgICBhYnNfbGFkaXI9IiRsYWRpciIKIAkgIGZpCiAJICA7OwogCWVzYWMKLQlsYW5hbWU9YCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCWZ1bmNfYmFzZW5hbWUgIiRsaWIiCisJbGFuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAKIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KIAlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCiAJICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IGxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIiAxPiYyCisJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCiAJICAgIGRpcj0iJGxhZGlyIgogCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCiAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKQEAgLTI0NzksMTggKzU0MjksMjIgQEAKIAkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCiAJICBmaQogCWZpICMgJGluc3RhbGxlZCA9IHllcwotCW5hbWU9YCRlY2hvICJYJGxhbmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJyAtZSAncy9ebGliLy8nYAorCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgorCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCiAJIyBUaGlzIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCiAJaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuOyB0aGVuCi0JICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCiAJICBmaQogCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCiAJICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KIAkgIGlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSI7IHRoZW4KIAkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCisJICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworCSAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KKwkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgogCSAgIyBPdGhlcndpc2UsIHVzZSB0aGUgZGxuYW1lLCBzbyB0aGF0IGx0X2Rsb3BlbiBmaW5kcyBpdC4KIAkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KIAkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgpAQCAtMjUyNiw3ICs1NDgwLDkgQEAKIAkgIHRtcF9saWJzPQogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICBjYXNlICRkZXBsaWIgaW4KLQkgICAgLUwqKSBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggImAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MvXi1MLy8nYDs7ICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCisJICAgICAgICAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisJCSA7OwogCSAgICBlc2FjCiAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KIAkgICAgaWYgdGVzdCAiJGxpbmthbGxkZXBsaWJzIiA9IHllczsgdGhlbgpAQCAtMjUzNiw3ICs1NDkyLDcgQEAKIAkgICAgICAjIG9yL2FuZCBsaW5rIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcwogCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBmaQotCSAgICBpZiB0ZXN0ICJYJGR1cGxpY2F0ZV9kZXBzIiA9ICJYeWVzIiA7IHRoZW4KKwkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgogCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKIAkgICAgICBlc2FjCkBAIC0yNTQ5LDE1ICs1NTA1LDE0IEBACiAJaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCiAJICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYKIAkgICAgIHsgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IG5vIHx8Ci0JCSB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LHllcyI7IH0gfHwKKwkgICAgICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LHllcyI7IH0gfHwKIAkgICAgICAgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgfTsgdGhlbgogCSAgICAjIFdlIG5lZWQgdG8gaGFyZGNvZGUgdGhlIGxpYnJhcnkgcGF0aAogCSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAteiAiJGF2b2lkdGVtcHJwYXRoIiA7IHRoZW4KIAkgICAgICAjIE1ha2Ugc3VyZSB0aGUgcnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCi0JICAgICAgY2FzZSAiJHRlbXBfcnBhdGggIiBpbgotCSAgICAgICoiICRkaXIgIiopIDs7Ci0JICAgICAgKiIgJGFic2RpciAiKikgOzsKLQkgICAgICAqKSB0ZW1wX3JwYXRoPSIkdGVtcF9ycGF0aCAkYWJzZGlyIiA7OworCSAgICAgIGNhc2UgIiR0ZW1wX3JwYXRoOiIgaW4KKwkgICAgICAqIiRhYnNkaXI6IiopIDs7CisJICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCiAKQEAgLTI1OTUsMjcgKzU1NTAsNDMgQEAKIAogCWxpbmtfc3RhdGljPW5vICMgV2hldGhlciB0aGUgZGVwbGliIHdpbGwgYmUgbGlua2VkIHN0YXRpY2FsbHkKIAl1c2Vfc3RhdGljX2xpYnM9JHByZWZlcl9zdGF0aWNfbGlicwotCWlmIHRlc3QgIiR1c2Vfc3RhdGljX2xpYnMiID0gYnVpbHQgJiYgdGVzdCAiJGluc3RhbGxlZCIgPSB5ZXMgOyB0aGVuCisJaWYgdGVzdCAiJHVzZV9zdGF0aWNfbGlicyIgPSBidWlsdCAmJiB0ZXN0ICIkaW5zdGFsbGVkIiA9IHllczsgdGhlbgogCSAgdXNlX3N0YXRpY19saWJzPW5vCiAJZmkKIAlpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYKIAkgICB7IHRlc3QgIiR1c2Vfc3RhdGljX2xpYnMiID0gbm8gfHwgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgfTsgdGhlbgotCSAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgotCSAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKLQkgICAgbmVlZF9yZWxpbms9eWVzCi0JICBmaQorCSAgY2FzZSAkaG9zdCBpbgorCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKKwkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCisJICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisJICAgICAgbmVlZF9yZWxpbms9bm8KKwkgICAgOzsKKwkgICopCisJICAgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm87IHRoZW4KKwkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKKwkgICAgICBuZWVkX3JlbGluaz15ZXMKKwkgICAgZmkKKwkgICAgOzsKKwkgIGVzYWMKIAkgICMgVGhpcyBpcyBhIHNoYXJlZCBsaWJyYXJ5CiAKLQkgICMgV2FybiBhYm91dCBwb3J0YWJpbGl0eSwgY2FuJ3QgbGluayBhZ2FpbnN0IC1tb2R1bGUncyBvbgotCSAgIyBzb21lIHN5c3RlbXMgKGRhcndpbikKLQkgIGlmIHRlc3QgIiRzaG91bGRub3RsaW5rIiA9IHllcyAmJiB0ZXN0ICIkcGFzcyIgPSBsaW5rIDsgdGhlbgotCSAgICAkZWNobwotCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgotCSAgICAgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgZXhlY3V0YWJsZSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKLQkgICAgZWxzZQotCSAgICAgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBsb2FkYWJsZSBtb2R1bGUiCisJICAjIFdhcm4gYWJvdXQgcG9ydGFiaWxpdHksIGNhbid0IGxpbmsgYWdhaW5zdCAtbW9kdWxlJ3Mgb24gc29tZQorCSAgIyBzeXN0ZW1zIChkYXJ3aW4pLiAgRG9uJ3QgYmxlYXQgYWJvdXQgZGxvcGVuZWQgbW9kdWxlcyB0aG91Z2ghCisJICBkbG9wZW5tb2R1bGU9IiIKKwkgIGZvciBkbHByZW1vZHVsZXRlc3QgaW4gJGRscHJlZmlsZXM7IGRvCisJICAgIGlmIHRlc3QgIlgkZGxwcmVtb2R1bGV0ZXN0IiA9ICJYJGxpYiI7IHRoZW4KKwkgICAgICBkbG9wZW5tb2R1bGU9IiRkbHByZW1vZHVsZXRlc3QiCisJICAgICAgYnJlYWsKIAkgICAgZmkKLQkgICAgJGVjaG8gIioqKiAkbGlua2xpYiBpcyBub3QgcG9ydGFibGUhIgorCSAgZG9uZQorCSAgaWYgdGVzdCAteiAiJGRsb3Blbm1vZHVsZSIgJiYgdGVzdCAiJHNob3VsZG5vdGxpbmsiID0geWVzICYmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKwkgICAgJEVDSE8KKwkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KKwkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIGV4ZWN1dGFibGUgJG91dHB1dCBhZ2FpbnN0IHRoZSBsb2FkYWJsZSBtb2R1bGUiCisJICAgIGVsc2UKKwkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgorCSAgICBmaQorCSAgICAkRUNITyAiKioqICRsaW5rbGliIGlzIG5vdCBwb3J0YWJsZSEiCiAJICBmaQogCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiAmJgogCSAgICAgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgPSB5ZXM7IHRoZW4KQEAgLTI2NDUsMTcgKzU2MTYsMTkgQEAKIAkgIGlmIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyI7IHRoZW4KIAkgICAgIyBmaWd1cmUgb3V0IHRoZSBzb25hbWUKIAkgICAgc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCi0JICAgIHJlYWxuYW1lPSIkMiIKLQkgICAgc2hpZnQ7IHNoaWZ0Ci0JICAgIGxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKKwkgICAgc2hpZnQKKwkgICAgcmVhbG5hbWU9IiQxIgorCSAgICBzaGlmdAorCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/CiAJICAgIGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCiAJICAgICAgc29uYW1lPSIkZGxuYW1lIgogCSAgICBlbGlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KIAkgICAgICAjIGJsZWggd2luZG93cwogCSAgICAgIGNhc2UgJGhvc3QgaW4KLQkgICAgICAqY3lnd2luKiB8IG1pbmd3KikKLQkJbWFqb3I9YGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgICAgICpjeWd3aW4qIHwgbWluZ3cqIHwgKmNlZ2NjKikKKwkgICAgICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCisJCW1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAogCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCiAJCTs7CiAJICAgICAgZXNhYwpAQCAtMjY2NiwzNiArNTYzOSwyMiBAQAogCiAJICAgICMgTWFrZSBhIG5ldyBuYW1lIGZvciB0aGUgZXh0cmFjdF9leHBzeW1zX2NtZHMgdG8gdXNlCiAJICAgIHNvcm9vdD0iJHNvbmFtZSIKLQkgICAgc29uYW1lPWAkZWNobyAkc29yb290IHwgJHtTRUR9IC1lICdzL14uKlwvLy8nYAotCSAgICBuZXdsaWI9ImxpYmltcC1gJGVjaG8gJHNvbmFtZSB8ICR7U0VEfSAncy9ebGliLy87cy9cLmRsbCQvLydgLmEiCisJICAgIGZ1bmNfYmFzZW5hbWUgIiRzb3Jvb3QiCisJICAgIHNvbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCSAgICBmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmRsbCcgIiRzb25hbWUiCisJICAgIG5ld2xpYj1saWJpbXAtJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC5hCiAKIAkgICAgIyBJZiB0aGUgbGlicmFyeSBoYXMgbm8gZXhwb3J0IGxpc3QsIHRoZW4gY3JlYXRlIG9uZSBub3cKIAkgICAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHNvbmFtZS1kZWYiOyB0aGVuIDoKIAkgICAgZWxzZQotCSAgICAgICRzaG93ICJleHRyYWN0aW5nIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gXGAkc29uYW1lJyIKLQkgICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgICAgICBjbWRzPSRleHRyYWN0X2V4cHN5bXNfY21kcwotCSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JCUlGUz0iJHNhdmVfaWZzIgotCQlldmFsIGNtZD1cIiRjbWRcIgotCQkkc2hvdyAiJGNtZCIKLQkJJHJ1biBldmFsICIkY21kIiB8fCBleGl0ICQ/Ci0JICAgICAgZG9uZQotCSAgICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBleHBvcnRlZCBzeW1ib2wgbGlzdCBmcm9tIFxgJHNvbmFtZSciCisJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRleHRyYWN0X2V4cHN5bXNfY21kcyIgJ2V4aXQgJD8nCiAJICAgIGZpCiAKIAkgICAgIyBDcmVhdGUgJG5ld2xpYgogCSAgICBpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8kbmV3bGliIjsgdGhlbiA6OyBlbHNlCi0JICAgICAgJHNob3cgImdlbmVyYXRpbmcgaW1wb3J0IGxpYnJhcnkgZm9yIFxgJHNvbmFtZSciCi0JICAgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICAgICAgY21kcz0kb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMKLQkgICAgICBmb3IgY21kIGluICRjbWRzOyBkbwotCQlJRlM9IiRzYXZlX2lmcyIKLQkJZXZhbCBjbWQ9XCIkY21kXCIKLQkJJHNob3cgIiRjbWQiCi0JCSRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotCSAgICAgIGRvbmUKLQkgICAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgaW1wb3J0IGxpYnJhcnkgZm9yIFxgJHNvbmFtZSciCisJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIgJ2V4aXQgJD8nCiAJICAgIGZpCiAJICAgICMgbWFrZSBzdXJlIHRoZSBsaWJyYXJ5IHZhcmlhYmxlcyBhcmUgcG9pbnRpbmcgdG8gdGhlIG5ldyBsaWJyYXJ5CiAJICAgIGRpcj0kb3V0cHV0X29iamRpcgpAQCAtMjcxNywxNyArNTY3NiwyMSBAQAogCQkgICotKi1zeXN2NU9wZW5VTklYKiB8ICotKi1zeXN2NVVuaXhXYXJlNy5bMDFdLlsxMF0qIHwgXAogCQkgICAgKi0qLXVuaXh3YXJlNyopIGFkZF9kaXI9Ii1MJGRpciIgOzsKIAkJICAqLSotZGFyd2luKiApCi0JCSAgICAjIGlmIHRoZSBsaWIgaXMgYSBtb2R1bGUgdGhlbiB3ZSBjYW4gbm90IGxpbmsgYWdhaW5zdAotCQkgICAgIyBpdCwgc29tZW9uZSBpcyBpZ25vcmluZyB0aGUgbmV3IHdhcm5pbmdzIEkgYWRkZWQKKwkJICAgICMgaWYgdGhlIGxpYiBpcyBhIChub24tZGxvcGVuZWQpIG1vZHVsZSB0aGVuIHdlIGNhbiBub3QKKwkJICAgICMgbGluayBhZ2FpbnN0IGl0LCBzb21lb25lIGlzIGlnbm9yaW5nIHRoZSBlYXJsaWVyIHdhcm5pbmdzCiAJCSAgICBpZiAvdXNyL2Jpbi9maWxlIC1MICRhZGQgMj4gL2Rldi9udWxsIHwKLSAgICAgICAgICAgICAgICAgICAgICAkRUdSRVAgIjogW146XSogYnVuZGxlIiA+L2Rldi9udWxsIDsgdGhlbgotCQkgICAgICAkZWNobyAiKiogV2FybmluZywgbGliICRsaW5rbGliIGlzIGEgbW9kdWxlLCBub3QgYSBzaGFyZWQgbGlicmFyeSIKLQkJICAgICAgaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IiA7IHRoZW4KLQkJICAgICAgICAkZWNobwotCQkgICAgICAgICRlY2hvICIqKiBBbmQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlIGEgc3RhdGljIGFyY2hpdmUgYXZhaWxhYmxlIgotCQkgICAgICAgICRlY2hvICIqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgotCQkgICAgICBlbHNlCi0JCSAgICAgICAgYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKKwkJCSAkR1JFUCAiOiBbXjpdKiBidW5kbGUiID4vZGV2L251bGwgOyB0aGVuCisJCSAgICAgIGlmIHRlc3QgIlgkZGxvcGVubW9kdWxlIiAhPSAiWCRsaWIiOyB0aGVuCisJCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpYiAkbGlua2xpYiBpcyBhIG1vZHVsZSwgbm90IGEgc2hhcmVkIGxpYnJhcnkiCisJCQlpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiIDsgdGhlbgorCQkJICAkRUNITworCQkJICAkRUNITyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCisJCQkgICRFQ0hPICIqKiogVGhlIGxpbmsgd2lsbCBwcm9iYWJseSBmYWlsLCBzb3JyeSIKKwkJCWVsc2UKKwkJCSAgYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKKwkJCWZpCisJCSAgICAgIGVsaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgorCQkJYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKIAkJICAgICAgZmkKIAkJICAgIGZpCiAJCWVzYWMKQEAgLTI3NDUsNyArNTcwOCw4IEBACiAJICAgICAgZmkKIAkgICAgICA7OwogCSAgICByZWxpbmspCi0JICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgPSB5ZXM7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllcyAmJgorCSAgICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KIAkJYWRkPSIkZGlyLyRsaW5rbGliIgogCSAgICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCiAJCWFkZF9kaXI9Ii1MJGRpciIKQEAgLTI3NjksOCArNTczMyw3IEBACiAJICAgIGVzYWMKIAogCSAgICBpZiB0ZXN0ICIkbGliX2xpbmtlZCIgIT0geWVzOyB0aGVuCi0JICAgICAgJGVjaG8gIiRtb2RlbmFtZTogY29uZmlndXJhdGlvbiBlcnJvcjogdW5zdXBwb3J0ZWQgaGFyZGNvZGUgcHJvcGVydGllcyIKLQkgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gInVuc3VwcG9ydGVkIGhhcmRjb2RlIHByb3BlcnRpZXMiCiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCkBAIC0yNzg1LDggKzU3NDgsOCBAQAogCSAgICBlbHNlCiAJICAgICAgdGVzdCAtbiAiJGFkZF9kaXIiICYmIGRlcGxpYnM9IiRhZGRfZGlyICRkZXBsaWJzIgogCSAgICAgIHRlc3QgLW4gIiRhZGQiICYmIGRlcGxpYnM9IiRhZGQgJGRlcGxpYnMiCi0JICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgIT0geWVzICYmIFwKLQkJIHRlc3QgIiRoYXJkY29kZV9taW51c19MIiAhPSB5ZXMgJiYgXAorCSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiICE9IHllcyAmJgorCQkgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiICE9IHllcyAmJgogCQkgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCiAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJCSoiOiRsaWJkaXI6IiopIDs7CkBAIC0yODAxLDcgKzU3NjQsOCBAQAogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CiAJICAgICMgRmluYWxpemUgY29tbWFuZCBmb3IgYm90aCBpcyBzaW1wbGU6IGp1c3QgaGFyZGNvZGUgaXQuCi0JICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzOyB0aGVuCisJICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzICYmCisJICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KIAkgICAgICBhZGQ9IiRsaWJkaXIvJGxpbmtsaWIiCiAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCiAJICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgpAQCAtMjgxNSw5ICs1Nzc5LDkgQEAKIAkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfYXV0b21hdGljIiA9IHllczsgdGhlbgogCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiICYmCiAJCSB0ZXN0IC1mICIkaW5zdF9wcmVmaXhfZGlyJGxpYmRpci8kbGlua2xpYiIgOyB0aGVuCi0JICAgICAgICBhZGQ9IiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIgorCQlhZGQ9IiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIgogCSAgICAgIGVsc2UKLQkgICAgICAgIGFkZD0iJGxpYmRpci8kbGlua2xpYiIKKwkJYWRkPSIkbGliZGlyLyRsaW5rbGliIgogCSAgICAgIGZpCiAJICAgIGVsc2UKIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgpAQCAtMjg2MSwyMSArNTgyNSwyMSBAQAogCiAJICAgICMgSnVzdCBwcmludCBhIHdhcm5pbmcgYW5kIGFkZCB0aGUgbGlicmFyeSB0byBkZXBlbmRlbmN5X2xpYnMgc28KIAkgICAgIyB0aGF0IHRoZSBwcm9ncmFtIGNhbiBiZSBsaW5rZWQgYWdhaW5zdCB0aGUgc3RhdGljIGxpYnJhcnkuCi0JICAgICRlY2hvCi0JICAgICRlY2hvICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2FuIG5vdCBsaW5rIHRvIHN0YXRpYyBsaWIgYXJjaGl2ZSAkbGliLiIKLQkgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCSAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlLiIKKwkgICAgJEVDSE8KKwkgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBUaGlzIHN5c3RlbSBjYW4gbm90IGxpbmsgdG8gc3RhdGljIGxpYiBhcmNoaXZlICRsaWIuIgorCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkgICAgJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJICAgICRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgogCSAgICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgotCSAgICAgICRlY2hvICIqKiogQnV0IGFzIHlvdSB0cnkgdG8gYnVpbGQgYSBtb2R1bGUgbGlicmFyeSwgbGlidG9vbCB3aWxsIHN0aWxsIGNyZWF0ZSAiCi0JICAgICAgJGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIGFwcGxpY2F0aW9uIgotCSAgICAgICRlY2hvICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCisJICAgICAgJEVDSE8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKKwkgICAgICAkRUNITyAiKioqIGEgc3RhdGljIG1vZHVsZSwgdGhhdCBzaG91bGQgd29yayBhcyBsb25nIGFzIHRoZSBkbG9wZW5pbmcgYXBwbGljYXRpb24iCisJICAgICAgJEVDSE8gIioqKiBpcyBsaW5rZWQgd2l0aCB0aGUgLWRsb3BlbiBmbGFnIHRvIHJlc29sdmUgc3ltYm9scyBhdCBydW50aW1lLiIKIAkgICAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCQkkZWNobwotCQkkZWNobyAiKioqIEhvd2V2ZXIsIHRoaXMgd291bGQgb25seSB3b3JrIGlmIGxpYnRvb2wgd2FzIGFibGUgdG8gZXh0cmFjdCBzeW1ib2wiCi0JCSRlY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgotCQkkZWNobyAiKioqIG5vdCBmaW5kIHN1Y2ggYSBwcm9ncmFtLiAgU28sIHRoaXMgbW9kdWxlIGlzIHByb2JhYmx5IHVzZWxlc3MuIgotCQkkZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJCSRFQ0hPCisJCSRFQ0hPICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKKwkJJEVDSE8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgXGBubScgb3IgZXF1aXZhbGVudCwgYnV0IGxpYnRvb2wgY291bGQiCisJCSRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJCSRFQ0hPICIqKiogXGBubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC0yODk5LDcgKzU4NjMsOCBAQAogCSAgICB0ZW1wX2RlcGxpYnM9CiAJICAgIGZvciBsaWJkaXIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgICBjYXNlICRsaWJkaXIgaW4KLQkgICAgICAtUiopIHRlbXBfeHJwYXRoPWAkZWNobyAiWCRsaWJkaXIiIHwgJFhzZWQgLWUgJ3MvXi1SLy8nYAorCSAgICAgIC1SKikgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGxpYmRpciIKKwkgICAgICAgICAgIHRlbXBfeHJwYXRoPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgogCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7CiAJCSAgICopIHhycGF0aD0iJHhycGF0aCAkdGVtcF94cnBhdGgiOzsKQEAgLTI5MTcsNyArNTg4Miw3IEBACiAJICB0bXBfbGlicz0KIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIGlmIHRlc3QgIlgkZHVwbGljYXRlX2RlcHMiID0gIlh5ZXMiIDsgdGhlbgorCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgogCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCiAJICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKQEAgLTI5MzEsOTQgKzU4OTYsNzEgQEAKIAkgICAgICBjYXNlICRkZXBsaWIgaW4KIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7CiAJICAgICAgKi5sYSkKLQkJZGlyPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AKLQkJdGVzdCAiWCRkaXIiID0gIlgkZGVwbGliIiAmJiBkaXI9Ii4iCisJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgorCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAkJY2FzZSAkZGlyIGluCiAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OwogCQkqKQogCQkgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKIAkJICBpZiB0ZXN0IC16ICIkYWJzZGlyIjsgdGhlbgotCQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIiAxPiYyCisJCSAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkZGlyJyIKIAkJICAgIGFic2Rpcj0iJGRpciIKIAkJICBmaQogCQkgIDs7CiAJCWVzYWMKLQkJaWYgZ3JlcCAiXmluc3RhbGxlZD1ubyIgJGRlcGxpYiA+IC9kZXYvbnVsbDsgdGhlbgotCQkgIHBhdGg9IiRhYnNkaXIvJG9iamRpciIKLQkJZWxzZQotCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0JCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLQkJICAgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCi0JCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkJICBmaQotCQkgIGlmIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIjsgdGhlbgotCQkgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkZGVwbGliJyBzZWVtcyB0byBiZSBtb3ZlZCIgMT4mMgotCQkgIGZpCi0JCSAgcGF0aD0iJGFic2RpciIKLQkJZmkKLQkJZGVwZGVwbD0KKwkJaWYgJEdSRVAgIl5pbnN0YWxsZWQ9bm8iICRkZXBsaWIgPiAvZGV2L251bGw7IHRoZW4KIAkJY2FzZSAkaG9zdCBpbgogCQkqLSotZGFyd2luKikKLQkJICAjIHdlIGRvIG5vdCB3YW50IHRvIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicywKLQkJICAjIGJ1dCBuZWVkIHRvIGxpbmsgYWdhaW5zdCBzaGFyZWQKKwkJICBkZXBkZXBsPQogCQkgIGV2YWwgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLQkJICBldmFsIGRlcGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAogCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KIAkJICAgIGZvciB0bXAgaW4gJGRlcGxpYnJhcnlfbmFtZXMgOyBkbwogCQkgICAgICBkZXBkZXBsPSR0bXAKIAkJICAgIGRvbmUKLQkJICAgIGlmIHRlc3QgLWYgIiRkZXBsaWJkaXIvJGRlcGRlcGwiIDsgdGhlbgotCQkgICAgICBkZXBkZXBsPSIkZGVwbGliZGlyLyRkZXBkZXBsIgotCSAgICAgIAkgICAgZWxpZiB0ZXN0IC1mICIkcGF0aC8kZGVwZGVwbCIgOyB0aGVuCi0JCSAgICAgIGRlcGRlcGw9IiRwYXRoLyRkZXBkZXBsIgotCQkgICAgZWxzZQotCQkgICAgICAjIENhbid0IGZpbmQgaXQsIG9oIHdlbGwuLi4KLQkJICAgICAgZGVwZGVwbD0KKwkJICAgIGlmIHRlc3QgLWYgIiRhYnNkaXIvJG9iamRpci8kZGVwZGVwbCIgOyB0aGVuCisJCSAgICAgIGRlcGRlcGw9IiRhYnNkaXIvJG9iamRpci8kZGVwZGVwbCIKKwkJICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTH0gLUwgJGRlcGRlcGwgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGRhcndpbl9pbnN0YWxsX25hbWUiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAorICAgICAgICAgICAgICAgICAgICAgIGZpCisJCSAgICAgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKKwkJICAgICAgcGF0aD0KIAkJICAgIGZpCi0JCSAgICAjIGRvIG5vdCBhZGQgcGF0aHMgd2hpY2ggYXJlIGFscmVhZHkgdGhlcmUKLQkJICAgIGNhc2UgIiAkbmV3bGliX3NlYXJjaF9wYXRoICIgaW4KLQkJICAgICoiICRwYXRoICIqKSA7OwotCQkgICAgKikgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRwYXRoIjs7Ci0JCSAgICBlc2FjCiAJCSAgZmkKLQkJICBwYXRoPSIiCiAJCSAgOzsKIAkJKikKLQkJICBwYXRoPSItTCRwYXRoIgorCQkgIHBhdGg9Ii1MJGFic2Rpci8kb2JqZGlyIgogCQkgIDs7CiAJCWVzYWMKKwkJZWxzZQorCQkgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCSAgdGVzdCAiJGFic2RpciIgIT0gIiRsaWJkaXIiICYmIFwKKwkJICAgIGZ1bmNfd2FybmluZyAiXGAkZGVwbGliJyBzZWVtcyB0byBiZSBtb3ZlZCIKKworCQkgIHBhdGg9Ii1MJGFic2RpciIKKwkJZmkKIAkJOzsKLQkgICAgICAtbCopCi0JCWNhc2UgJGhvc3QgaW4KLQkJKi0qLWRhcndpbiopCi0JCSAgIyBBZ2Fpbiwgd2Ugb25seSB3YW50IHRvIGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyaWVzCi0JCSAgZXZhbCB0bXBfbGlicz1gJGVjaG8gIlgkZGVwbGliIiB8ICRYc2VkIC1lICJzLF5cLWwsLCJgCi0JCSAgZm9yIHRtcCBpbiAkbmV3bGliX3NlYXJjaF9wYXRoIDsgZG8KLQkJICAgIGlmIHRlc3QgLWYgIiR0bXAvbGliJHRtcF9saWJzLmR5bGliIiA7IHRoZW4KLQkJICAgICAgZXZhbCBkZXBkZXBsPSIkdG1wL2xpYiR0bXBfbGlicy5keWxpYiIKLQkJICAgICAgYnJlYWsKLQkJICAgIGZpCi0JCSAgZG9uZQotCQkgIHBhdGg9IiIKLQkJICA7OwotCQkqKSBjb250aW51ZSA7OwotCQllc2FjCi0JCTs7Ci0JICAgICAgKikgY29udGludWUgOzsKIAkgICAgICBlc2FjCiAJICAgICAgY2FzZSAiICRkZXBsaWJzICIgaW4KIAkgICAgICAqIiAkcGF0aCAiKikgOzsKIAkgICAgICAqKSBkZXBsaWJzPSIkcGF0aCAkZGVwbGlicyIgOzsKIAkgICAgICBlc2FjCi0JICAgICAgY2FzZSAiICRkZXBsaWJzICIgaW4KLQkgICAgICAqIiAkZGVwZGVwbCAiKikgOzsKLQkgICAgICAqKSBkZXBsaWJzPSIkZGVwZGVwbCAkZGVwbGlicyIgOzsKLQkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgIGZpICMgbGlua19hbGxfZGVwbGlicyAhPSBubwogCWZpICMgbGlua21vZGUgPSBsaWIKICAgICAgIGRvbmUgIyBmb3IgZGVwbGliIGluICRsaWJzCisgICAgICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCisJaWYgdGVzdCAiJGxpbmttb2RlIiA9ICJwcm9nIjsgdGhlbgorCSAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGNvbXBpbGVfZGVwbGlicyIKKwkgIGZpbmFsaXplX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZmluYWxpemVfZGVwbGlicyIKKwllbHNlCisJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIlggJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzIiB8ICRYc2VkIC1lICdzJSBcKFteICRdKlwpLmx0ZnJhbWV3b3JrJSAtZnJhbWV3b3JrIFwxJWcnYAorCWZpCisgICAgICBmaQogICAgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgogICAgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuOyB0aGVuCiAJIyBMaW5rIHRoZSBkbHByZW9wZW5lZCBsaWJyYXJpZXMgYmVmb3JlIG90aGVyIGxpYnJhcmllcwpAQCAtMzExNywzOSArNjA1OSwzNiBAQAogICAgIGRvbmUgIyBmb3IgcGFzcwogICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCiAgICAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKKyAgICBmaQorICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KICAgICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogICAgIGZpCiAKICAgICBjYXNlICRsaW5rbW9kZSBpbgogICAgIG9sZGxpYikKKyAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCisJZnVuY193YXJuaW5nICJcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgorICAgICAgZmkKKwogICAgICAgY2FzZSAiICRkZXBsaWJzIiBpbgogICAgICAgKlwgLWwqIHwgKlwgLUwqKQotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIgOzsKKwlmdW5jX3dhcm5pbmcgIlxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDs7CiAgICAgICBlc2FjCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiRycGF0aCIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAtbiAiJHhycGF0aCIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtUicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiR4cnBhdGgiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtUicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mby8tdmVyc2lvbi1udW1iZXInIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkdmluZm8iOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtdmVyc2lvbi1pbmZvLy12ZXJzaW9uLW51bWJlcicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkcmVsZWFzZSIgJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIiAxPiYyCi0gICAgICBmaQotCi0gICAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiIHx8IHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1leHBvcnQtc3ltYm9scycgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLWV4cG9ydC1zeW1ib2xzJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KQEAgLTMxNjEsNDggKzYxMDAsNDggQEAKICAgICAgICMgTWFrZSBzdXJlIHdlIG9ubHkgZ2VuZXJhdGUgbGlicmFyaWVzIG9mIHRoZSBmb3JtIGBsaWJOQU1FLmxhJy4KICAgICAgIGNhc2UgJG91dHB1dG5hbWUgaW4KICAgICAgIGxpYiopCi0JbmFtZT1gJGVjaG8gIlgkb3V0cHV0bmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJyAtZSAncy9ebGliLy8nYAorCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKKwluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgogCWV2YWwgbGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIgogCTs7CiAgICAgICAqKQotCWlmIHRlc3QgIiRtb2R1bGUiID0gbm87IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIG11c3QgYmVnaW4gd2l0aCBcYGxpYiciIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKKwl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKKwkgIGZ1bmNfZmF0YWxfaGVscCAibGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgbXVzdCBiZWdpbiB3aXRoIFxgbGliJyIKKwogCWlmIHRlc3QgIiRuZWVkX2xpYl9wcmVmaXgiICE9IG5vOyB0aGVuCiAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCi0JICBuYW1lPWAkZWNobyAiWCRvdXRwdXRuYW1lIiB8ICRYc2VkIC1lICdzL1wubGEkLy8nYAorCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgorCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICBldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgogCSAgZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCiAJZWxzZQotCSAgbGlibmFtZT1gJGVjaG8gIlgkb3V0cHV0bmFtZSIgfCAkWHNlZCAtZSAncy9cLmxhJC8vJ2AKKwkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKKwkgIGxpYm5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCWZpCiAJOzsKICAgICAgIGVzYWMKIAogICAgICAgaWYgdGVzdCAtbiAiJG9ianMiOyB0aGVuCiAJaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiIDI+JjEKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnRvb2wgbGlicmFyeSBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiCiAJZWxzZQotCSAgJGVjaG8KLQkgICRlY2hvICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKLQkgICRlY2hvICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgorCSAgJEVDSE8KKwkgICRFQ0hPICIqKiogV2FybmluZzogTGlua2luZyB0aGUgc2hhcmVkIGxpYnJhcnkgJG91dHB1dCBhZ2FpbnN0IHRoZSBub24tbGlidG9vbCIKKwkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgogCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCiAJZmkKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtZGxvcGVuIHNlbGYnIGlzIGlnbm9yZWQgZm9yIGxpYnRvb2wgbGlicmFyaWVzIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAiJGRsc2VsZiIgIT0gbm8gJiYgXAorCWZ1bmNfd2FybmluZyAiXGAtZGxvcGVuIHNlbGYnIGlzIGlnbm9yZWQgZm9yIGxpYnRvb2wgbGlicmFyaWVzIgogCiAgICAgICBzZXQgZHVtbXkgJHJwYXRoCi0gICAgICBpZiB0ZXN0ICIkIyIgLWd0IDI7IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIgMT4mMgotICAgICAgZmkKLSAgICAgIGluc3RhbGxfbGliZGlyPSIkMiIKKyAgICAgIHNoaWZ0CisgICAgICB0ZXN0ICIkIyIgLWd0IDEgJiYgXAorCWZ1bmNfd2FybmluZyAiaWdub3JpbmcgbXVsdGlwbGUgXGAtcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCisKKyAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKIAogICAgICAgb2xkbGlicz0KICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KQEAgLTMyMTYsMjUgKzYxNTUsMjEgQEAKIAkgIGJ1aWxkX29sZF9saWJzPXllcwogCWZpCiAKLQlpZiB0ZXN0IC1uICIkdmluZm8iOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiIDE+JjIKLQlmaQorCXRlc3QgLW4gIiR2aW5mbyIgJiYgXAorCSAgZnVuY193YXJuaW5nICJcYC12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiCiAKLQlpZiB0ZXN0IC1uICIkcmVsZWFzZSI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcyIgMT4mMgotCWZpCisJdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKKwkgIGZ1bmNfd2FybmluZyAiXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIgogICAgICAgZWxzZQogCiAJIyBQYXJzZSB0aGUgdmVyc2lvbiBpbmZvcm1hdGlvbiBhcmd1bWVudC4KIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nOicKIAlzZXQgZHVtbXkgJHZpbmZvIDAgMCAwCisJc2hpZnQKIAlJRlM9IiRzYXZlX2lmcyIKIAotCWlmIHRlc3QgLW4gIiQ4IjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogdG9vIG1hbnkgcGFyYW1ldGVycyB0byBcYC12ZXJzaW9uLWluZm8nIiAxPiYyCi0JICAkZWNobyAiJGhlbHAiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCWZpCisJdGVzdCAtbiAiJDciICYmIFwKKwkgIGZ1bmNfZmF0YWxfaGVscCAidG9vIG1hbnkgcGFyYW1ldGVycyB0byBcYC12ZXJzaW9uLWluZm8nIgogCiAJIyBjb252ZXJ0IGFic29sdXRlIHZlcnNpb24gbnVtYmVycyB0byBsaWJ0b29sIGFnZXMKIAkjIHRoaXMgcmV0YWlucyBjb21wYXRpYmlsaXR5IHdpdGggLmxhIGZpbGVzIGFuZCBhdHRlbXB0cwpAQCAtMzI0Miw5ICs2MTc3LDkgQEAKIAogCWNhc2UgJHZpbmZvX251bWJlciBpbgogCXllcykKLQkgIG51bWJlcl9tYWpvcj0iJDIiCi0JICBudW1iZXJfbWlub3I9IiQzIgotCSAgbnVtYmVyX3JldmlzaW9uPSIkNCIKKwkgIG51bWJlcl9tYWpvcj0iJDEiCisJICBudW1iZXJfbWlub3I9IiQyIgorCSAgbnVtYmVyX3JldmlzaW9uPSIkMyIKIAkgICMKIAkgICMgVGhlcmUgYXJlIHJlYWxseSBvbmx5IHR3byBraW5kcyAtLSB0aG9zZSB0aGF0CiAJICAjIHVzZSB0aGUgY3VycmVudCByZXZpc2lvbiBhcyB0aGUgbWFqb3IgdmVyc2lvbgpAQCAtMzI1NCw3ICs2MTg5LDggQEAKIAkgICMKIAkgIGNhc2UgJHZlcnNpb25fdHlwZSBpbgogCSAgZGFyd2lufGxpbnV4fG9zZnx3aW5kb3dzfG5vbmUpCi0JICAgIGN1cnJlbnQ9YGV4cHIgJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3JgCisJICAgIGZ1bmNfYXJpdGggJG51bWJlcl9tYWpvciArICRudW1iZXJfbWlub3IKKwkgICAgY3VycmVudD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgYWdlPSIkbnVtYmVyX21pbm9yIgogCSAgICByZXZpc2lvbj0iJG51bWJlcl9yZXZpc2lvbiIKIAkgICAgOzsKQEAgLTMyNjQsNyArNjIwMCw4IEBACiAJICAgIGFnZT0iMCIKIAkgICAgOzsKIAkgIGlyaXh8bm9uc3RvcHV4KQotCSAgICBjdXJyZW50PWBleHByICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yYAorCSAgICBmdW5jX2FyaXRoICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yCisJICAgIGN1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICAgIGFnZT0iJG51bWJlcl9taW5vciIKIAkgICAgcmV2aXNpb249IiRudW1iZXJfbWlub3IiCiAJICAgIGx0X2lyaXhfaW5jcmVtZW50PW5vCkBAIC0zMjcyLDkgKzYyMDksOSBAQAogCSAgZXNhYwogCSAgOzsKIAlubykKLQkgIGN1cnJlbnQ9IiQyIgotCSAgcmV2aXNpb249IiQzIgotCSAgYWdlPSIkNCIKKwkgIGN1cnJlbnQ9IiQxIgorCSAgcmV2aXNpb249IiQyIgorCSAgYWdlPSIkMyIKIAkgIDs7CiAJZXNhYwogCkBAIC0zMjgyLDM0ICs2MjE5LDMwIEBACiAJY2FzZSAkY3VycmVudCBpbgogCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKIAkqKQotCSAgJGVjaG8gIiRtb2RlbmFtZTogQ1VSUkVOVCBcYCRjdXJyZW50JyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIgMT4mMgotCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIiAxPiYyCi0JICBleGl0ICRFWElUX0ZBSUxVUkUKKwkgIGZ1bmNfZXJyb3IgIkNVUlJFTlQgXGAkY3VycmVudCcgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCisJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJICA7OwogCWVzYWMKIAogCWNhc2UgJHJldmlzaW9uIGluCiAJMHxbMS05XXxbMS05XVswLTldfFsxLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XXxbMS05XVswLTldWzAtOV1bMC05XVswLTldKSA7OwogCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiBSRVZJU0lPTiBcYCRyZXZpc2lvbicgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiIDE+JjIKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2Vycm9yICJSRVZJU0lPTiBcYCRyZXZpc2lvbicgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCisJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJICA7OwogCWVzYWMKIAogCWNhc2UgJGFnZSBpbgogCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKIAkqKQotCSAgJGVjaG8gIiRtb2RlbmFtZTogQUdFIFxgJGFnZScgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiIDE+JjIKLQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2Vycm9yICJBR0UgXGAkYWdlJyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAkgIDs7CiAJZXNhYwogCiAJaWYgdGVzdCAiJGFnZSIgLWd0ICIkY3VycmVudCI7IHRoZW4KLQkgICRlY2hvICIkbW9kZW5hbWU6IEFHRSBcYCRhZ2UnIGlzIGdyZWF0ZXIgdGhhbiB0aGUgY3VycmVudCBpbnRlcmZhY2UgbnVtYmVyIFxgJGN1cnJlbnQnIiAxPiYyCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQorCSAgZnVuY19lcnJvciAiQUdFIFxgJGFnZScgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGludGVyZmFjZSBudW1iZXIgXGAkY3VycmVudCciCisJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJZmkKIAogCSMgQ2FsY3VsYXRlIHRoZSB2ZXJzaW9uIHZhcmlhYmxlcy4KQEAgLTMzMjIsMTAgKzYyNTUsMTIgQEAKIAlkYXJ3aW4pCiAJICAjIExpa2UgTGludXgsIGJ1dCB3aXRoIHRoZSBjdXJyZW50IHZlcnNpb24gYXZhaWxhYmxlIGluCiAJICAjIHZlcnN0cmluZyBmb3IgY29kaW5nIGl0IGludG8gdGhlIGxpYnJhcnkgaGVhZGVyCi0JICBtYWpvcj0uYGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKKwkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKIAkgIHZlcnN1ZmZpeD0iJG1ham9yLiRhZ2UuJHJldmlzaW9uIgogCSAgIyBEYXJ3aW4gbGQgZG9lc24ndCBsaWtlIDAgZm9yIHRoZXNlIG9wdGlvbnMuLi4KLQkgIG1pbm9yX2N1cnJlbnQ9YGV4cHIgJGN1cnJlbnQgKyAxYAorCSAgZnVuY19hcml0aCAkY3VycmVudCArIDEKKwkgIG1pbm9yX2N1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICB4bGN2ZXJzdHJpbmc9IiR7d2x9LWNvbXBhdGliaWxpdHlfdmVyc2lvbiAke3dsfSRtaW5vcl9jdXJyZW50ICR7d2x9LWN1cnJlbnRfdmVyc2lvbiAke3dsfSRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKIAkgIHZlcnN0cmluZz0iLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkbWlub3JfY3VycmVudCAtY3VycmVudF92ZXJzaW9uICRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKIAkgIDs7CkBAIC0zMzM3LDE1ICs2MjcyLDE3IEBACiAKIAlmcmVlYnNkLWVsZikKIAkgIG1ham9yPSIuJGN1cnJlbnQiCi0JICB2ZXJzdWZmaXg9Ii4kY3VycmVudCI7CisJICB2ZXJzdWZmaXg9Ii4kY3VycmVudCIKIAkgIDs7CiAKIAlpcml4IHwgbm9uc3RvcHV4KQogCSAgaWYgdGVzdCAiWCRsdF9pcml4X2luY3JlbWVudCIgPSAiWG5vIjsgdGhlbgotCSAgICBtYWpvcj1gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCiAJICBlbHNlCi0JICAgIG1ham9yPWBleHByICRjdXJyZW50IC0gJGFnZSArIDFgCisJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlICsgMQogCSAgZmkKKwkgIG1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAorCiAJICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KIAkgICAgbm9uc3RvcHV4KSB2ZXJzdHJpbmdfcHJlZml4PW5vbnN0b3B1eCA7OwogCSAgICAqKSAgICAgICAgIHZlcnN0cmluZ19wcmVmaXg9c2dpIDs7CkBAIC0zMzU1LDggKzYyOTIsMTAgQEAKIAkgICMgQWRkIGluIGFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IHdlIGFyZSBjb21wYXRpYmxlIHdpdGguCiAJICBsb29wPSRyZXZpc2lvbgogCSAgd2hpbGUgdGVzdCAiJGxvb3AiIC1uZSAwOyBkbwotCSAgICBpZmFjZT1gZXhwciAkcmV2aXNpb24gLSAkbG9vcGAKLQkgICAgbG9vcD1gZXhwciAkbG9vcCAtIDFgCisJICAgIGZ1bmNfYXJpdGggJHJldmlzaW9uIC0gJGxvb3AKKwkgICAgaWZhY2U9JGZ1bmNfYXJpdGhfcmVzdWx0CisJICAgIGZ1bmNfYXJpdGggJGxvb3AgLSAxCisJICAgIGxvb3A9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICAgIHZlcnN0cmluZz0iJHZlcnN0cmluZ19wcmVmaXgkbWFqb3IuJGlmYWNlOiR2ZXJzdHJpbmciCiAJICBkb25lCiAKQEAgLTMzNjYsMjAgKzYzMDUsMjQgQEAKIAkgIDs7CiAKIAlsaW51eCkKLQkgIG1ham9yPS5gZXhwciAkY3VycmVudCAtICRhZ2VgCisJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQorCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgdmVyc3VmZml4PSIkbWFqb3IuJGFnZS4kcmV2aXNpb24iCiAJICA7OwogCiAJb3NmKQotCSAgbWFqb3I9LmBleHByICRjdXJyZW50IC0gJGFnZWAKKwkgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCisJICBtYWpvcj0uJGZ1bmNfYXJpdGhfcmVzdWx0CiAJICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kYWdlLiRyZXZpc2lvbiIKIAkgIHZlcnN0cmluZz0iJGN1cnJlbnQuJGFnZS4kcmV2aXNpb24iCiAKIAkgICMgQWRkIGluIGFsbCB0aGUgaW50ZXJmYWNlcyB0aGF0IHdlIGFyZSBjb21wYXRpYmxlIHdpdGguCiAJICBsb29wPSRhZ2UKIAkgIHdoaWxlIHRlc3QgIiRsb29wIiAtbmUgMDsgZG8KLQkgICAgaWZhY2U9YGV4cHIgJGN1cnJlbnQgLSAkbG9vcGAKLQkgICAgbG9vcD1gZXhwciAkbG9vcCAtIDFgCisJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkbG9vcAorCSAgICBpZmFjZT0kZnVuY19hcml0aF9yZXN1bHQKKwkgICAgZnVuY19hcml0aCAkbG9vcCAtIDEKKwkgICAgbG9vcD0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7aWZhY2V9LjAiCiAJICBkb25lCiAKQEAgLTMzODcsNiArNjMzMCwxMSBAQAogCSAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nOiR7Y3VycmVudH0uMCIKIAkgIDs7CiAKKwlxbngpCisJICBtYWpvcj0iLiRjdXJyZW50IgorCSAgdmVyc3VmZml4PSIuJGN1cnJlbnQiCisJICA7OworCiAJc3Vub3MpCiAJICBtYWpvcj0iLiRjdXJyZW50IgogCSAgdmVyc3VmZml4PSIuJGN1cnJlbnQuJHJldmlzaW9uIgpAQCAtMzM5NSwxNCArNjM0MywxMyBAQAogCXdpbmRvd3MpCiAJICAjIFVzZSAnLScgcmF0aGVyIHRoYW4gJy4nLCBzaW5jZSB3ZSBvbmx5IHdhbnQgb25lCiAJICAjIGV4dGVuc2lvbiBvbiBET1MgOC4zIGZpbGVzeXN0ZW1zLgotCSAgbWFqb3I9YGV4cHIgJGN1cnJlbnQgLSAkYWdlYAorCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKKwkgIG1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAogCSAgdmVyc3VmZml4PSItJG1ham9yIgogCSAgOzsKIAogCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiB1bmtub3duIGxpYnJhcnkgdmVyc2lvbiB0eXBlIFxgJHZlcnNpb25fdHlwZSciIDE+JjIKLQkgICRlY2hvICJGYXRhbCBjb25maWd1cmF0aW9uIGVycm9yLiAgU2VlIHRoZSAkUEFDS0FHRSBkb2NzIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCisJICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gInVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgXGAkdmVyc2lvbl90eXBlJyIKIAkgIDs7CiAJZXNhYwogCkBAIC0zNDM2LDcgKzYzODMsNyBAQAogCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBhcmNoaXZlIHdpbGwgaGF2ZSB1bmRlZmluZWQgc3ltYm9scy4KIAlpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IHllczsgdGhlbgogCSAgaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIiA9IHVuc3VwcG9ydGVkOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHVuZGVmaW5lZCBzeW1ib2xzIG5vdCBhbGxvd2VkIGluICRob3N0IHNoYXJlZCBsaWJyYXJpZXMiIDE+JjIKKwkgICAgZnVuY193YXJuaW5nICJ1bmRlZmluZWQgc3ltYm9scyBub3QgYWxsb3dlZCBpbiAkaG9zdCBzaGFyZWQgbGlicmFyaWVzIgogCSAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KIAkgICAgYnVpbGRfb2xkX2xpYnM9eWVzCiAJICBmaQpAQCAtMzQ0NCwyMSArNjM5MSwyNiBAQAogCSAgIyBEb24ndCBhbGxvdyB1bmRlZmluZWQgc3ltYm9scy4KIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIkbm9fdW5kZWZpbmVkX2ZsYWciCiAJZmkKKwogICAgICAgZmkKIAorICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCisgICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKKyAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisKICAgICAgIGlmIHRlc3QgIiRtb2RlIiAhPSByZWxpbms7IHRoZW4KIAkjIFJlbW92ZSBvdXIgb3V0cHV0cywgYnV0IGRvbid0IHJlbW92ZSBvYmplY3QgZmlsZXMgc2luY2UgdGhleQogCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgogCXJlbW92ZWxpc3Q9Ci0JdGVtcHJlbW92ZWxpc3Q9YCRlY2hvICIkb3V0cHV0X29iamRpci8qImAKKwl0ZW1wcmVtb3ZlbGlzdD1gJEVDSE8gIiRvdXRwdXRfb2JqZGlyLyoiYAogCWZvciBwIGluICR0ZW1wcmVtb3ZlbGlzdDsgZG8KIAkgIGNhc2UgJHAgaW4KLQkgICAgKi4kb2JqZXh0KQorCSAgICAqLiRvYmpleHQgfCAqLmdjbm8pCiAJICAgICAgIDs7CiAJICAgICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIHwgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuKiB8ICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX0ke3JlbGVhc2V9LiopCiAJICAgICAgIGlmIHRlc3QgIlgkcHJlY2lvdXNfZmlsZXNfcmVnZXgiICE9ICJYIjsgdGhlbgotCSAgICAgICAgIGlmIGVjaG8gJHAgfCAkRUdSRVAgLWUgIiRwcmVjaW91c19maWxlc19yZWdleCIgPi9kZXYvbnVsbCAyPiYxCi0JICAgICAgICAgdGhlbgorCQkgaWYgJEVDSE8gIiRwIiB8ICRFR1JFUCAtZSAiJHByZWNpb3VzX2ZpbGVzX3JlZ2V4IiA+L2Rldi9udWxsIDI+JjEKKwkJIHRoZW4KIAkJICAgY29udGludWUKIAkJIGZpCiAJICAgICAgIGZpCkBAIC0zNDY3LDEwICs2NDE5LDggQEAKIAkgICAgKikgOzsKIAkgIGVzYWMKIAlkb25lCi0JaWYgdGVzdCAtbiAiJHJlbW92ZWxpc3QiOyB0aGVuCi0JICAkc2hvdyAiJHtybX1yICRyZW1vdmVsaXN0IgotCSAgJHJ1biAke3JtfXIgJHJlbW92ZWxpc3QKLQlmaQorCXRlc3QgLW4gIiRyZW1vdmVsaXN0IiAmJiBcCisJICBmdW5jX3Nob3dfZXZhbCAiJHtSTX1yIFwkcmVtb3ZlbGlzdCIKICAgICAgIGZpCiAKICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgpAQCAtMzQ3OCwxNCArNjQyOCwxNCBAQAogCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCiAKIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCi0Jb2xkb2Jqcz0iJG9ianMgImAkZWNobyAiWCRsaWJvYmpzIiB8ICRTUDJOTCB8ICRYc2VkIC1lICcvXC4nJHtsaWJleHR9JyQvZCcgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0nJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYAogICAgICAgZmkKIAogICAgICAgIyBFbGltaW5hdGUgYWxsIHRlbXBvcmFyeSBkaXJlY3Rvcmllcy4KICAgICAgICNmb3IgcGF0aCBpbiAkbm90aW5zdF9wYXRoOyBkbwotICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRlY2hvICIkbGliX3NlYXJjaF9wYXRoICIgfCAke1NFRH0gLWUgInMlICRwYXRoICUgJWciYAotICAgICAgIwlkZXBsaWJzPWAkZWNobyAiJGRlcGxpYnMgIiB8ICR7U0VEfSAtZSAicyUgLUwkcGF0aCAlICVnImAKLSAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkZWNobyAiJGRlcGVuZGVuY3lfbGlicyAiIHwgJHtTRUR9IC1lICJzJSAtTCRwYXRoICUgJWciYAorICAgICAgIwlsaWJfc2VhcmNoX3BhdGg9YCRFQ0hPICJYJGxpYl9zZWFyY2hfcGF0aCAiIHwgJFhzZWQgLWUgInMlICRwYXRoICUgJWciYAorICAgICAgIwlkZXBsaWJzPWAkRUNITyAiWCRkZXBsaWJzICIgfCAkWHNlZCAtZSAicyUgLUwkcGF0aCAlICVnImAKKyAgICAgICMJZGVwZW5kZW5jeV9saWJzPWAkRUNITyAiWCRkZXBlbmRlbmN5X2xpYnMgIiB8ICRYc2VkIC1lICJzJSAtTCRwYXRoICUgJWciYAogICAgICAgI2RvbmUKIAogICAgICAgaWYgdGVzdCAtbiAiJHhycGF0aCI7IHRoZW4KQEAgLTM1MjYsMTIgKzY0NzYsMTIgQEAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHJwYXRoIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyopCisJICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotKi1iZW9zKiB8ICotY2VnY2MqKQogCSAgICAjIHRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIGMgbGlicmFyeSAoYXMgc3VjaCkhCiAJICAgIDs7CiAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCiAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1mcmFtZXdvcmsgU3lzdGVtIgorCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCiAJICAgIDs7CiAJICAqLSotbmV0YnNkKikKIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCkBAIC0zNTQ1LDcgKzY0OTUsNyBAQAogCSAgKi0qLXN5c3Y0LjJ1dzIqIHwgKi0qLXN5c3Y1KiB8ICotKi11bml4d2FyZSogfCAqLSotT3BlblVOSVgqKQogCSAgICAjIENvbXBpbGVyIGluc2VydHMgbGliYyBpbiB0aGUgY29ycmVjdCBwbGFjZSBmb3IgdGhyZWFkcyB0byB3b3JrCiAJICAgIDs7Ci0gCSAgKikKKwkgICopCiAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCiAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KIAkgICAgICBkZXBsaWJzPSIkZGVwbGlicyAtbGMiCkBAIC0zNTgyLDE3ICs2NTMyLDE4IEBACiAJICAjIGxpbWl0cy4gTWF5YmUgZXZlbiBicmVha3MgaXQuICBXZSBjb21waWxlIGEgcHJvZ3JhbSwgbGlua2luZyBpdAogCSAgIyBhZ2FpbnN0IHRoZSBkZXBsaWJzIGFzIGEgcHJveHkgZm9yIHRoZSBsaWJyYXJ5LiAgVGhlbiB3ZSBjYW4gY2hlY2sKIAkgICMgd2hldGhlciB0aGV5IGxpbmtlZCBpbiBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IHdpdGggbGRkLgotCSAgJHJtIGNvbmZ0ZXN0LmMKKwkgICRvcHRfZHJ5X3J1biB8fCAkUk0gY29uZnRlc3QuYwogCSAgY2F0ID4gY29uZnRlc3QuYyA8PEVPRgogCSAgaW50IG1haW4oKSB7IHJldHVybiAwOyB9CiBFT0YKLQkgICRybSBjb25mdGVzdAorCSAgJG9wdF9kcnlfcnVuIHx8ICRSTSBjb25mdGVzdAogCSAgaWYgJExUQ0MgJExUQ0ZMQUdTIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LmMgJGRlcGxpYnM7IHRoZW4KIAkgICAgbGRkX291dHB1dD1gbGRkIGNvbmZ0ZXN0YAogCSAgICBmb3IgaSBpbiAkZGVwbGliczsgZG8KLQkgICAgICBuYW1lPWBleHByICRpIDogJy1sXCguKlwpJ2AKLQkgICAgICAjIElmICRuYW1lIGlzIGVtcHR5IHdlIGFyZSBvcGVyYXRpbmcgb24gYSAtTCBhcmd1bWVudC4KLSAgICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiICE9ICIiICYmIHRlc3QgIiRuYW1lIiAhPSAiMCI7IHRoZW4KKwkgICAgICBjYXNlICRpIGluCisJICAgICAgLWwqKQorCQlmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGkiCisJCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgKiIgJGkgIiopCkBAIC0zNjAwLDM3ICs2NTUxLDQwIEBACiAJCSAgICBpPSIiCiAJCSAgICA7OwogCQkgIGVzYWMKLQkgICAgICAgIGZpCisJCWZpCiAJCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLQkJICBsaWJuYW1lPWBldmFsIFxcJGVjaG8gXCIkbGlibmFtZV9zcGVjXCJgCi0JCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgXFwkZWNobyBcIiRsaWJyYXJ5X25hbWVzX3NwZWNcImAKLQkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzCi0JCSAgZGVwbGliX21hdGNoPSQyCisJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CisJCSAgZGVwbGliX21hdGNoPSQxCiAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgogCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCiAJCSAgZWxzZQogCQkgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAkZWNobwotCQkgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBkeW5hbWljIGxpbmtlciBkb2VzIG5vdCBhY2NlcHQgbmVlZGVkIGxpYnJhcnkgJGkuIgotCQkgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAkZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJICAgICRlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIEkgYmVsaWV2ZSB5b3UgZG8gbm90IGhhdmUiCi0JCSAgICAkZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgaXQgZm9yIgotCQkgICAgJGVjaG8gIioqKiBpdHMgZHluYW1pYyBkZXBlbmRlbmN5IGxpc3QgdGhhdCBwcm9ncmFtcyBnZXQgcmVzb2x2ZWQgd2l0aCBhdCBydW50aW1lLiIKKwkJICAgICRFQ0hPCisJCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGR5bmFtaWMgbGlua2VyIGRvZXMgbm90IGFjY2VwdCBuZWVkZWQgbGlicmFyeSAkaS4iCisJCSAgICAkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgJEVDSE8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggSSBiZWxpZXZlIHlvdSBkbyBub3QgaGF2ZSIKKwkJICAgICRFQ0hPICIqKiogYmVjYXVzZSBhIHRlc3RfY29tcGlsZSBkaWQgcmV2ZWFsIHRoYXQgdGhlIGxpbmtlciBkaWQgbm90IHVzZSBpdCBmb3IiCisJCSAgICAkRUNITyAiKioqIGl0cyBkeW5hbWljIGRlcGVuZGVuY3kgbGlzdCB0aGF0IHByb2dyYW1zIGdldCByZXNvbHZlZCB3aXRoIGF0IHJ1bnRpbWUuIgogCQkgIGZpCiAJCWZpCi0JICAgICAgZWxzZQorCQk7OworCSAgICAgICopCiAJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotCSAgICAgIGZpCisJCTs7CisJICAgICAgZXNhYwogCSAgICBkb25lCiAJICBlbHNlCiAJICAgICMgRXJyb3Igb2NjdXJyZWQgaW4gdGhlIGZpcnN0IGNvbXBpbGUuICBMZXQncyB0cnkgdG8gc2FsdmFnZQogCSAgICAjIHRoZSBzaXR1YXRpb246IENvbXBpbGUgYSBzZXBhcmF0ZSBwcm9ncmFtIGZvciBlYWNoIGxpYnJhcnkuCiAJICAgIGZvciBpIGluICRkZXBsaWJzOyBkbwotCSAgICAgIG5hbWU9YGV4cHIgJGkgOiAnLWxcKC4qXCknYAotCSAgICAgICMgSWYgJG5hbWUgaXMgZW1wdHkgd2UgYXJlIG9wZXJhdGluZyBvbiBhIC1MIGFyZ3VtZW50LgotICAgICAgICAgICAgICBpZiB0ZXN0ICIkbmFtZSIgIT0gIiIgJiYgdGVzdCAiJG5hbWUiICE9ICIwIjsgdGhlbgotCQkkcm0gY29uZnRlc3QKKwkgICAgICBjYXNlICRpIGluCisJICAgICAgLWwqKQorCQlmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGkiCisJCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCQkkb3B0X2RyeV9ydW4gfHwgJFJNIGNvbmZ0ZXN0CiAJCWlmICRMVENDICRMVENGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jICRpOyB0aGVuCiAJCSAgbGRkX291dHB1dD1gbGRkIGNvbmZ0ZXN0YAogCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KQEAgLTM2NDIsNDQgKzY1OTYsNDcgQEAKIAkJICAgIGVzYWMKIAkJICBmaQogCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLQkJICAgIGxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKLQkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsIFxcJGVjaG8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCJgCi0JCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzCi0JCSAgICBkZXBsaWJfbWF0Y2g9JDIKKwkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorCQkgICAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKKwkJICAgIGRlcGxpYl9tYXRjaD0kMQogCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgogCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKIAkJICAgIGVsc2UKIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCi0JCSAgICAgICRlY2hvCi0JCSAgICAgICRlY2hvICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKLQkJICAgICAgJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSAgICAgICRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkgICAgICAkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkgICAgICAkZWNobyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCi0JCSAgICAgICRlY2hvICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCisJCSAgICAgICRFQ0hPCisJCSAgICAgICRFQ0hPICIqKiogV2FybmluZzogZHluYW1pYyBsaW5rZXIgZG9lcyBub3QgYWNjZXB0IG5lZWRlZCBsaWJyYXJ5ICRpLiIKKwkJICAgICAgJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSAgICAgICRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkgICAgICAkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQkgICAgICAkRUNITyAiKioqIGJlY2F1c2UgYSB0ZXN0X2NvbXBpbGUgZGlkIHJldmVhbCB0aGF0IHRoZSBsaW5rZXIgZGlkIG5vdCB1c2UgdGhpcyBvbmUiCisJCSAgICAgICRFQ0hPICIqKiogYXMgYSBkeW5hbWljIGRlcGVuZGVuY3kgdGhhdCBwcm9ncmFtcyBjYW4gZ2V0IHJlc29sdmVkIHdpdGggYXQgcnVudGltZS4iCiAJCSAgICBmaQogCQkgIGZpCiAJCWVsc2UKIAkJICBkcm9wcGVkZGVwcz15ZXMKLQkJICAkZWNobwotCQkgICRlY2hvICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCi0JCSAgJGVjaG8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKLQkJICAkZWNobyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKLQkJICAkZWNobyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKKwkJICAkRUNITworCQkgICRFQ0hPICIqKiogV2FybmluZyEgIExpYnJhcnkgJGkgaXMgbmVlZGVkIGJ5IHRoaXMgbGlicmFyeSBidXQgSSB3YXMgbm90IGFibGUgdG8iCisJCSAgJEVDSE8gIioqKiBtYWtlIGl0IGxpbmsgaW4hICBZb3Ugd2lsbCBwcm9iYWJseSBuZWVkIHRvIGluc3RhbGwgaXQgb3Igc29tZSIKKwkJICAkRUNITyAiKioqIGxpYnJhcnkgdGhhdCBpdCBkZXBlbmRzIG9uIGJlZm9yZSB0aGlzIGxpYnJhcnkgd2lsbCBiZSBmdWxseSIKKwkJICAkRUNITyAiKioqIGZ1bmN0aW9uYWwuICBJbnN0YWxsaW5nIGl0IGJlZm9yZSBjb250aW51aW5nIHdvdWxkIGJlIGV2ZW4gYmV0dGVyLiIKIAkJZmkKLQkgICAgICBlbHNlCisJCTs7CisJICAgICAgKikKIAkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0JICAgICAgZmkKKwkJOzsKKwkgICAgICBlc2FjCiAJICAgIGRvbmUKIAkgIGZpCiAJICA7OwogCWZpbGVfbWFnaWMqKQotCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZAotCSAgZmlsZV9tYWdpY19yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMiBcKC4qXCkiYAorCSAgc2V0IGR1bW15ICRkZXBsaWJzX2NoZWNrX21ldGhvZDsgc2hpZnQKKwkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDEgXCguKlwpImAKIAkgIGZvciBhX2RlcGxpYiBpbiAkZGVwbGliczsgZG8KLQkgICAgbmFtZT1gZXhwciAkYV9kZXBsaWIgOiAnLWxcKC4qXCknYAotCSAgICAjIElmICRuYW1lIGlzIGVtcHR5IHdlIGFyZSBvcGVyYXRpbmcgb24gYSAtTCBhcmd1bWVudC4KLSAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiAhPSAiIiAmJiB0ZXN0ICAiJG5hbWUiICE9ICIwIjsgdGhlbgorCSAgICBjYXNlICRhX2RlcGxpYiBpbgorCSAgICAtbCopCisJICAgICAgZnVuY19zdHJpcG5hbWUgLWwgJycgIiRhX2RlcGxpYiIKKwkgICAgICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCiAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgogCQkqIiAkYV9kZXBsaWIgIiopCkBAIC0zNjg5LDEzICs2NjQ2LDEzIEBACiAJCWVzYWMKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCi0JCWxpYm5hbWU9YGV2YWwgXFwkZWNobyBcIiRsaWJuYW1lX3NwZWNcImAKKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwogCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KLQkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIFwKLQkJCSB8IGdyZXAgIiAtPiAiID4vZGV2L251bGw7IHRoZW4KKwkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKKwkJCSAkR1JFUCAiIC0+ICIgPi9kZXYvbnVsbDsgdGhlbgogCQkJY29udGludWUKIAkJICAgICAgZmkKIAkJICAgICAgIyBUaGUgc3RhdGVtZW50IGFib3ZlIHRyaWVzIHRvIGF2b2lkIGVudGVyaW5nIGFuCkBAIC0zNzA4LDEyICs2NjY1LDEyIEBACiAJCQlwb3RsaWJsaW5rPWBscyAtbGQgJHBvdGxpYiB8ICR7U0VEfSAncy8uKiAtPiAvLydgCiAJCQljYXNlICRwb3RsaWJsaW5rIGluCiAJCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHBvdGxpYj0iJHBvdGxpYmxpbmsiOzsKLQkJCSopIHBvdGxpYj1gJGVjaG8gIlgkcG90bGliIiB8ICRYc2VkIC1lICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKKwkJCSopIHBvdGxpYj1gJEVDSE8gIlgkcG90bGliIiB8ICRYc2VkIC1lICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKIAkJCWVzYWMKIAkJICAgICAgZG9uZQotCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgXAotCQkJIHwgJHtTRUR9IDEwcSBcCi0JCQkgfCAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorCQkgICAgICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIgMj4vZGV2L251bGwgfAorCQkJICRTRUQgLWUgMTBxIHwKKwkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgogCQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgogCQkJYV9kZXBsaWI9IiIKIAkJCWJyZWFrIDIKQEAgLTM3MjMsMzIgKzY2ODAsMzUgQEAKIAkgICAgICBmaQogCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCiAJCWRyb3BwZWRkZXBzPXllcwotCQkkZWNobwotCQkkZWNobyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCi0JCSRlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgotCQkkZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKLQkJJGVjaG8gIioqKiBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSwgd2hpY2ggeW91IGRvIG5vdCBhcHBlYXIgdG8gaGF2ZSIKLQkJJGVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCisJCSRFQ0hPCisJCSRFQ0hPICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKKwkJJEVDSE8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCisJCSRFQ0hPICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgorCQkkRUNITyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgorCQkkRUNITyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKIAkJaWYgdGVzdCAteiAiJHBvdGxpYiIgOyB0aGVuCi0JCSAgJGVjaG8gIioqKiB3aXRoICRsaWJuYW1lIGJ1dCBubyBjYW5kaWRhdGVzIHdlcmUgZm91bmQuICguLi5mb3IgZmlsZSBtYWdpYyB0ZXN0KSIKKwkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciBmaWxlIG1hZ2ljIHRlc3QpIgogCQllbHNlCi0JCSAgJGVjaG8gIioqKiB3aXRoICRsaWJuYW1lIGFuZCBub25lIG9mIHRoZSBjYW5kaWRhdGVzIHBhc3NlZCBhIGZpbGUgZm9ybWF0IHRlc3QiCi0JCSAgJGVjaG8gIioqKiB1c2luZyBhIGZpbGUgbWFnaWMuIExhc3QgZmlsZSBjaGVja2VkOiAkcG90bGliIgorCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBhbmQgbm9uZSBvZiB0aGUgY2FuZGlkYXRlcyBwYXNzZWQgYSBmaWxlIGZvcm1hdCB0ZXN0IgorCQkgICRFQ0hPICIqKiogdXNpbmcgYSBmaWxlIG1hZ2ljLiBMYXN0IGZpbGUgY2hlY2tlZDogJHBvdGxpYiIKIAkJZmkKIAkgICAgICBmaQotCSAgICBlbHNlCisJICAgICAgOzsKKwkgICAgKikKIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgogCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKLQkgICAgZmkKKwkgICAgICA7OworCSAgICBlc2FjCiAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgogCSAgOzsKIAltYXRjaF9wYXR0ZXJuKikKLQkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2QKLQkgIG1hdGNoX3BhdHRlcm5fcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiJDIgXCguKlwpImAKKwkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2Q7IHNoaWZ0CisJICBtYXRjaF9wYXR0ZXJuX3JlZ2V4PWBleHByICIkZGVwbGlic19jaGVja19tZXRob2QiIDogIiQxIFwoLipcKSJgCiAJICBmb3IgYV9kZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0JICAgIG5hbWU9YGV4cHIgJGFfZGVwbGliIDogJy1sXCguKlwpJ2AKLQkgICAgIyBJZiAkbmFtZSBpcyBlbXB0eSB3ZSBhcmUgb3BlcmF0aW5nIG9uIGEgLUwgYXJndW1lbnQuCi0JICAgIGlmIHRlc3QgLW4gIiRuYW1lIiAmJiB0ZXN0ICIkbmFtZSIgIT0gIjAiOyB0aGVuCisJICAgIGNhc2UgJGFfZGVwbGliIGluCisJICAgIC1sKikKKwkgICAgICBmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGFfZGVwbGliIgorCSAgICAgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKQEAgLTM3NTgsMTQgKzY3MTgsMTMgQEAKIAkJZXNhYwogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KLQkJbGlibmFtZT1gZXZhbCBcXCRlY2hvIFwiJGxpYm5hbWVfc3BlY1wiYAorCQlsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCiAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCiAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwogCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKLQkJICAgIGlmIGV2YWwgJGVjaG8gXCIkcG90ZW50X2xpYlwiIDI+L2Rldi9udWxsIFwKLQkJICAgICAgICB8ICR7U0VEfSAxMHEgXAotCQkgICAgICAgIHwgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKwkJICAgIGlmIGV2YWwgIlwkRUNITyBcIlgkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRYc2VkIC1lIDEwcSB8IFwKKwkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKIAkJICAgICAgYV9kZXBsaWI9IiIKIAkJICAgICAgYnJlYWsgMgpAQCAtMzc3NSw0NCArNjczNCw0NiBAQAogCSAgICAgIGZpCiAJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCi0JCSRlY2hvCi0JCSRlY2hvICIqKiogV2FybmluZzogbGlua2VyIHBhdGggZG9lcyBub3QgaGF2ZSByZWFsIGZpbGUgZm9yIGxpYnJhcnkgJGFfZGVwbGliLiIKLQkJJGVjaG8gIioqKiBJIGhhdmUgdGhlIGNhcGFiaWxpdHkgdG8gbWFrZSB0aGF0IGxpYnJhcnkgYXV0b21hdGljYWxseSBsaW5rIGluIHdoZW4iCi0JCSRlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgotCQkkZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgotCQkkZWNobyAiKioqIGJlY2F1c2UgSSBkaWQgY2hlY2sgdGhlIGxpbmtlciBwYXRoIGxvb2tpbmcgZm9yIGEgZmlsZSBzdGFydGluZyIKKwkJJEVDSE8KKwkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgorCQkkRUNITyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKKwkJJEVDSE8gIioqKiB5b3UgbGluayB0byB0aGlzIGxpYnJhcnkuICBCdXQgSSBjYW4gb25seSBkbyB0aGlzIGlmIHlvdSBoYXZlIGEiCisJCSRFQ0hPICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCisJCSRFQ0hPICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgogCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KLQkJICAkZWNobyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciByZWdleCBwYXR0ZXJuIHRlc3QpIgorCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIHJlZ2V4IHBhdHRlcm4gdGVzdCkiCiAJCWVsc2UKLQkJICAkZWNobyAiKioqIHdpdGggJGxpYm5hbWUgYW5kIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgcGFzc2VkIGEgZmlsZSBmb3JtYXQgdGVzdCIKLQkJICAkZWNobyAiKioqIHVzaW5nIGEgcmVnZXggcGF0dGVybi4gTGFzdCBmaWxlIGNoZWNrZWQ6ICRwb3RsaWIiCisJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGFuZCBub25lIG9mIHRoZSBjYW5kaWRhdGVzIHBhc3NlZCBhIGZpbGUgZm9ybWF0IHRlc3QiCisJCSAgJEVDSE8gIioqKiB1c2luZyBhIHJlZ2V4IHBhdHRlcm4uIExhc3QgZmlsZSBjaGVja2VkOiAkcG90bGliIgogCQlmaQogCSAgICAgIGZpCi0JICAgIGVsc2UKKwkgICAgICA7OworCSAgICAqKQogCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCiAJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotCSAgICBmaQorCSAgICAgIDs7CisJICAgIGVzYWMKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW5vbmUgfCB1bmtub3duIHwgKikKIAkgIG5ld2RlcGxpYnM9IiIKLQkgIHRtcF9kZXBsaWJzPWAkZWNobyAiWCAkZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjJC8vJyBcCi0JICAgIC1lICdzLyAtW0xSXVteIF0qLy9nJ2AKKwkgIHRtcF9kZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCBcCisJICAgICAgLWUgJ3MvIC1sYyQvLycgLWUgJ3MvIC1bTFJdW14gXSovL2cnYAogCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgogCSAgICBmb3IgaSBpbiAkcHJlZGVwcyAkcG9zdGRlcHMgOyBkbwogCSAgICAgICMgY2FuJ3QgdXNlIFhzZWQgYmVsb3csIGJlY2F1c2UgJGkgbWlnaHQgY29udGFpbiAnLycKLQkgICAgICB0bXBfZGVwbGlicz1gJGVjaG8gIlggJHRtcF9kZXBsaWJzIiB8ICR7U0VEfSAtZSAiMXMsXlgsLCIgLWUgInMsJGksLCJgCisJICAgICAgdG1wX2RlcGxpYnM9YCRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAicywkaSwsImAKIAkgICAgZG9uZQogCSAgZmkKLQkgIGlmICRlY2hvICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bIAldLy9nJyBcCi0JICAgIHwgZ3JlcCAuID4vZGV2L251bGw7IHRoZW4KLQkgICAgJGVjaG8KKwkgIGlmICRFQ0hPICJYICR0bXBfZGVwbGlicyIgfCAkWHNlZCAtZSAncy9bCSBdLy9nJyB8CisJICAgICAkR1JFUCAuID4vZGV2L251bGw7IHRoZW4KKwkgICAgJEVDSE8KIAkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBsYXRmb3JtLiIKKwkgICAgICAkRUNITyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgogCSAgICBlbHNlCi0JICAgICAgJGVjaG8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCisJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyBhcmUgbm90IGtub3duIHRvIGJlIHN1cHBvcnRlZC4iCiAJICAgIGZpCi0JICAgICRlY2hvICIqKiogQWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBiZWluZyBkcm9wcGVkLiIKKwkgICAgJEVDSE8gIioqKiBBbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSBkZXBlbmRlbmNpZXMgYXJlIGJlaW5nIGRyb3BwZWQuIgogCSAgICBkcm9wcGVkZGVwcz15ZXMKIAkgIGZpCiAJICA7OwpAQCAtMzgyNSwyNCArNjc4NiwyNCBAQAogCiAJY2FzZSAkaG9zdCBpbgogCSotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKLQkgICMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JICBuZXdkZXBsaWJzPWAkZWNobyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gLWZyYW1ld29yayBTeXN0ZW0gLydgCisJICAjIE9uIFJoYXBzb2R5IHJlcGxhY2UgdGhlIEMgbGlicmFyeSB3aXRoIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCisJICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gU3lzdGVtLmx0ZnJhbWV3b3JrIC8nYAogCSAgOzsKIAllc2FjCiAKIAlpZiB0ZXN0ICIkZHJvcHBlZGRlcHMiID0geWVzOyB0aGVuCiAJICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgotCSAgICAkZWNobwotCSAgICAkZWNobyAiKioqIFdhcm5pbmc6IGxpYnRvb2wgY291bGQgbm90IHNhdGlzZnkgYWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkiCi0JICAgICRlY2hvICIqKiogZGVwZW5kZW5jaWVzIG9mIG1vZHVsZSAkbGlibmFtZS4gIFRoZXJlZm9yZSwgbGlidG9vbCB3aWxsIGNyZWF0ZSIKLQkgICAgJGVjaG8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgotCSAgICAkZWNobyAiKioqIGFwcGxpY2F0aW9uIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcuIgorCSAgICAkRUNITworCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IGxpYnRvb2wgY291bGQgbm90IHNhdGlzZnkgYWxsIGRlY2xhcmVkIGludGVyLWxpYnJhcnkiCisJICAgICRFQ0hPICIqKiogZGVwZW5kZW5jaWVzIG9mIG1vZHVsZSAkbGlibmFtZS4gIFRoZXJlZm9yZSwgbGlidG9vbCB3aWxsIGNyZWF0ZSIKKwkgICAgJEVDSE8gIioqKiBhIHN0YXRpYyBtb2R1bGUsIHRoYXQgc2hvdWxkIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGxvcGVuaW5nIgorCSAgICAkRUNITyAiKioqIGFwcGxpY2F0aW9uIGlzIGxpbmtlZCB3aXRoIHRoZSAtZGxvcGVuIGZsYWcuIgogCSAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgotCSAgICAgICRlY2hvCi0JICAgICAgJGVjaG8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgotCSAgICAgICRlY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgotCSAgICAgICRlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JICAgICAgJGVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgorCSAgICAgICRFQ0hPCisJICAgICAgJEVDSE8gIioqKiBIb3dldmVyLCB0aGlzIHdvdWxkIG9ubHkgd29yayBpZiBsaWJ0b29sIHdhcyBhYmxlIHRvIGV4dHJhY3Qgc3ltYm9sIgorCSAgICAgICRFQ0hPICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCSAgICAgICRFQ0hPICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCisJICAgICAgJEVDSE8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICBmaQogCSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KIAkgICAgICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgpAQCAtMzg1MiwxNiArNjgxMywxNiBAQAogCSAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCSAgICBmaQogCSAgZWxzZQotCSAgICAkZWNobyAiKioqIFRoZSBpbnRlci1saWJyYXJ5IGRlcGVuZGVuY2llcyB0aGF0IGhhdmUgYmVlbiBkcm9wcGVkIGhlcmUgd2lsbCBiZSIKLQkgICAgJGVjaG8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCi0JICAgICRlY2hvICIqKiogb3IgaXMgZGVjbGFyZWQgdG8gLWRsb3BlbiBpdC4iCisJICAgICRFQ0hPICIqKiogVGhlIGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIHRoYXQgaGF2ZSBiZWVuIGRyb3BwZWQgaGVyZSB3aWxsIGJlIgorCSAgICAkRUNITyAiKioqIGF1dG9tYXRpY2FsbHkgYWRkZWQgd2hlbmV2ZXIgYSBwcm9ncmFtIGlzIGxpbmtlZCB3aXRoIHRoaXMgbGlicmFyeSIKKwkgICAgJEVDSE8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKIAogCSAgICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IG5vOyB0aGVuCi0JICAgICAgJGVjaG8KLQkgICAgICAkZWNobyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKLQkgICAgICAkZWNobyAiKioqIGJlY2F1c2UgZWl0aGVyIHRoZSBwbGF0Zm9ybSBkb2VzIG5vdCBzdXBwb3J0IHRoZW0gb3IiCi0JICAgICAgJGVjaG8gIioqKiBpdCB3YXMgZXhwbGljaXRseSByZXF1ZXN0ZWQgd2l0aCAtbm8tdW5kZWZpbmVkLCIKLQkgICAgICAkZWNobyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKKwkgICAgICAkRUNITworCSAgICAgICRFQ0hPICIqKiogU2luY2UgdGhpcyBsaWJyYXJ5IG11c3Qgbm90IGNvbnRhaW4gdW5kZWZpbmVkIHN5bWJvbHMsIgorCSAgICAgICRFQ0hPICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKKwkgICAgICAkRUNITyAiKioqIGl0IHdhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB3aXRoIC1uby11bmRlZmluZWQsIgorCSAgICAgICRFQ0hPICIqKiogbGlidG9vbCB3aWxsIG9ubHkgY3JlYXRlIGEgc3RhdGljIHZlcnNpb24gb2YgaXQuIgogCSAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSBubzsgdGhlbgogCQlvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCQlidWlsZF9saWJ0b29sX2xpYnM9bW9kdWxlCkBAIC0zODc1LDcgKzY4MzYsMTQgQEAKIAkjIERvbmUgY2hlY2tpbmcgZGVwbGlicyEKIAlkZXBsaWJzPSRuZXdkZXBsaWJzCiAgICAgICBmaQotCisgICAgICAjIFRpbWUgdG8gY2hhbmdlIGFsbCBvdXIgImZvby5sdGZyYW1ld29yayIgc3R1ZmYgYmFjayB0byAiLWZyYW1ld29yayBmb28iCisgICAgICBjYXNlICRob3N0IGluCisJKi0qLWRhcndpbiopCisJICBuZXdkZXBsaWJzPWAkRUNITyAiWCAkbmV3ZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPWAkRUNITyAiWCAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFhzZWQgLWUgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCisJICBkZXBsaWJzPWAkRUNITyAiWCAkZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwkgIDs7CisgICAgICBlc2FjCiAKICAgICAgICMgbW92ZSBsaWJyYXJ5IHNlYXJjaCBwYXRocyB0aGF0IGNvaW5jaWRlIHdpdGggcGF0aHMgdG8gbm90IHlldAogICAgICAgIyBpbnN0YWxsZWQgbGlicmFyaWVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpYnJhcnkgc2VhcmNoIGxpc3QKQEAgLTM5MDQsNyArNjg3Miw2IEBACiAgICAgICBkb25lCiAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCiAKLQogICAgICAgIyBBbGwgdGhlIGxpYnJhcnktc3BlY2lmaWMgdmFyaWFibGVzIChpbnN0YWxsX2xpYmRpciBpcyBzZXQgYWJvdmUpLgogICAgICAgbGlicmFyeV9uYW1lcz0KICAgICAgIG9sZF9saWJyYXJ5PQpAQCAtMzk0OSwxMCArNjkxNiw3IEBACiAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KIAkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCi0JICAgICAgY2FzZSAkYXJjaGl2ZV9jbWRzIGluCi0JICAgICAgKlwkTEQqKSBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIgOzsKLQkgICAgICAqKSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiA7OwotCSAgICAgIGVzYWMKKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIKIAkgICAgZWxzZQogCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgogCSAgICBmaQpAQCAtMzk3OCw4ICs2OTQyLDkgQEAKIAlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgogCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgogCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcwotCXJlYWxuYW1lPSIkMiIKLQlzaGlmdDsgc2hpZnQKKwlzaGlmdAorCXJlYWxuYW1lPSIkMSIKKwlzaGlmdAogCiAJaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgogCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgpAQCAtMzk5OCw3MSArNjk2MywxMjIgQEAKIAlkb25lCiAKIAkjIFVzZSBzdGFuZGFyZCBvYmplY3RzIGlmIHRoZXkgYXJlIHBpYwotCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJGVjaG8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgLXogIiRwaWNfZmxhZyIgJiYgbGlib2Jqcz1gJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJGxvMm8iIHwgJE5MMlNQYAorCXRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisKKwlkZWxmaWxlcz0KKwlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCisJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKwkgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzIgorCWZpCisKKwlvcmlnX2V4cG9ydF9zeW1ib2xzPQorCWNhc2UgJGhvc3Rfb3MgaW4KKwljeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC16ICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCisJICAgICMgZXhwb3J0aW5nIHVzaW5nIHVzZXIgc3VwcGxpZWQgc3ltZmlsZQorCSAgICBpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgIT0geEVYUE9SVFM7IHRoZW4KKwkgICAgICAjIGFuZCBpdCdzIE5PVCBhbHJlYWR5IGEgLmRlZiBmaWxlLiBNdXN0IGZpZ3VyZSBvdXQKKwkgICAgICAjIHdoaWNoIG9mIHRoZSBnaXZlbiBzeW1ib2xzIGFyZSBkYXRhIHN5bWJvbHMgYW5kIHRhZworCSAgICAgICMgdGhlbSBhcyBzdWNoLiBTbywgdHJpZ2dlciB1c2Ugb2YgZXhwb3J0X3N5bWJvbHNfY21kcy4KKwkgICAgICAjIGV4cG9ydF9zeW1ib2xzIGdldHMgcmVhc3NpZ25lZCBpbnNpZGUgdGhlICJwcmVwYXJlCisJICAgICAgIyB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIiBpZiBzdGF0ZW1lbnQsIHNvIHRoZQorCSAgICAgICMgaW5jbHVkZV9leHBzeW1zIGxvZ2ljIHN0aWxsIHdvcmtzLgorCSAgICAgIG9yaWdfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKwkgICAgICBleHBvcnRfc3ltYm9scz0KKwkgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisJICAgIGZpCisJICBmaQorCSAgOzsKKwllc2FjCiAKIAkjIFByZXBhcmUgdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scwogCWlmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9scyI7IHRoZW4KIAkgIGlmIHRlc3QgIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiID0geWVzIHx8IHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLQkgICAgJHNob3cgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgorCSAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgogCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZXhwIgotCSAgICAkcnVuICRybSAkZXhwb3J0X3N5bWJvbHMKKwkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKIAkgICAgY21kcz0kZXhwb3J0X3N5bWJvbHNfY21kcwogCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKIAkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKIAkgICAgICBldmFsIGNtZD1cIiRjbWRcIgotCSAgICAgIGlmIGxlbj1gZXhwciAiWCRjbWQiIDogIi4qImAgJiYKLQkgICAgICAgdGVzdCAiJGxlbiIgLWxlICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCi0JICAgICAgICAkc2hvdyAiJGNtZCIKLQkgICAgICAgICRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotCSAgICAgICAgc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKwkgICAgICBmdW5jX2xlbiAiICRjbWQiCisJICAgICAgbGVuPSRmdW5jX2xlbl9yZXN1bHQKKwkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKwkJZnVuY19zaG93X2V2YWwgIiRjbWQiICdleGl0ICQ/JworCQlza2lwcGVkX2V4cG9ydD1mYWxzZQogCSAgICAgIGVsc2UKLQkgICAgICAgICMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgotCSAgICAgICAgJHNob3cgInVzaW5nIHJlbG9hZGFibGUgb2JqZWN0IGZpbGUgZm9yIGV4cG9ydCBsaXN0Li4uIgotCSAgICAgICAgc2tpcHBlZF9leHBvcnQ9OgorCQkjIFRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gZXhlY3V0ZSBpbiBvbmUgc3RlcC4KKwkJZnVuY192ZXJib3NlICJ1c2luZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlIGZvciBleHBvcnQgbGlzdC4uLiIKKwkJc2tpcHBlZF9leHBvcnQ9OgogCQkjIEJyZWFrIG91dCBlYXJseSwgb3RoZXJ3aXNlIHNraXBwZWRfZXhwb3J0IG1heSBiZQogCQkjIHNldCB0byBmYWxzZSBieSBhIGxhdGVyIGJ1dCBzaG9ydGVyIGNtZC4KIAkJYnJlYWsKIAkgICAgICBmaQogCSAgICBkb25lCiAJICAgIElGUz0iJHNhdmVfaWZzIgotCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0JICAgICAgJHNob3cgIiRFR1JFUCAtZSBcIiRleHBvcnRfc3ltYm9sc19yZWdleFwiIFwiJGV4cG9ydF9zeW1ib2xzXCIgPiBcIiR7ZXhwb3J0X3N5bWJvbHN9VFwiIgotCSAgICAgICRydW4gZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkZXhwb3J0X3N5bWJvbHMiID4gIiR7ZXhwb3J0X3N5bWJvbHN9VCInCi0JICAgICAgJHNob3cgIiRtdiBcIiR7ZXhwb3J0X3N5bWJvbHN9VFwiIFwiJGV4cG9ydF9zeW1ib2xzXCIiCi0JICAgICAgJHJ1biBldmFsICckbXYgIiR7ZXhwb3J0X3N5bWJvbHN9VCIgIiRleHBvcnRfc3ltYm9scyInCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IjsgdGhlbgorCSAgICAgIGZ1bmNfc2hvd19ldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRleHBvcnRfc3ltYm9scyIgPiAiJHtleHBvcnRfc3ltYm9sc31UIicKKwkgICAgICBmdW5jX3Nob3dfZXZhbCAnJE1WICIke2V4cG9ydF9zeW1ib2xzfVQiICIkZXhwb3J0X3N5bWJvbHMiJwogCSAgICBmaQogCSAgZmkKIAlmaQogCiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgotCSAgJHJ1biBldmFsICckZWNobyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkZXhwb3J0X3N5bWJvbHMiJworCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiWCRpbmNsdWRlX2V4cHN5bXMiIHwgJFhzZWQgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworCWZpCisKKwlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorCSAgIyBUaGUgZ2l2ZW4gZXhwb3J0c19zeW1ib2xzIGZpbGUgaGFzIHRvIGJlIGZpbHRlcmVkLCBzbyBmaWx0ZXIgaXQuCisJICBmdW5jX3ZlcmJvc2UgImZpbHRlciBzeW1ib2wgbGlzdCBmb3IgXGAkbGlibmFtZS5sYScgdG8gdGFnIERBVEEgZXhwb3J0cyIKKwkgICMgRklYTUU6ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciBwb3RlbnRpYWxseSBjb250YWlucyBsb3RzIG9mCisJICAjICdzJyBjb21tYW5kcyB3aGljaCBub3QgYWxsIHNlZHMgY2FuIGhhbmRsZS4gR05VIHNlZCBzaG91bGQgYmUgZmluZQorCSAgIyB0aG91Z2guIEFsc28sIHRoZSBmaWx0ZXIgc2NhbGVzIHN1cGVybGluZWFybHkgd2l0aCB0aGUgbnVtYmVyIG9mCisJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKwkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1lICcvWyAsXURBVEEvIWQ7cyxcKC4qXClcKFsgXCxdLipcKSxzfF5cMSR8XDFcMnwsJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlcgorCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCisJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwogCWZpCiAKIAl0bXBfZGVwbGlicz0KIAlmb3IgdGVzdF9kZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0JCWNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgotCQkqIiAkdGVzdF9kZXBsaWIgIiopIDs7Ci0JCSopCi0JCQl0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKLQkJCTs7Ci0JCWVzYWMKKwkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgorCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OworCSAgKikKKwkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCisJICAgIDs7CisJICBlc2FjCiAJZG9uZQogCWRlcGxpYnM9IiR0bXBfZGVwbGlicyIKIAogCWlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKwkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyIgJiYKKwkgICAgdGVzdCAiJGNvbXBpbGVyX25lZWRzX29iamVjdCIgPSB5ZXMgJiYKKwkgICAgdGVzdCAteiAiJGxpYm9ianMiOyB0aGVuCisJICAgICMgZXh0cmFjdCB0aGUgYXJjaGl2ZXMsIHNvIHdlIGhhdmUgb2JqZWN0cyB0byBsaXN0LgorCSAgICAjIFRPRE86IGNvdWxkIG9wdGltaXplIHRoaXMgdG8ganVzdCBleHRyYWN0IG9uZSBhcmNoaXZlLgorCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0KKwkgIGZpCiAJICBpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCiAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcwogCSAgICBldmFsIGxpYm9ianM9XCJcJGxpYm9ianMgJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKKwkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KIAkgIGVsc2UKIAkgICAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKIAkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCiAKIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCiAJICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQogCSAgZmkKIAlmaQotCQorCiAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgogCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCiAJICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCkBAIC00MDcwLDcgKzcwODYsNyBAQAogCiAJIyBNYWtlIGEgYmFja3VwIG9mIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IHdoZW4gcmVsaW5raW5nCiAJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0JICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJHtyZWFsbmFtZX1VICYmICRtdiAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPworCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKScgfHwgZXhpdCAkPwogCWZpCiAKIAkjIERvIGVhY2ggb2YgdGhlIGFyY2hpdmUgY29tbWFuZHMuCkBAIC00MDgzLDIyICs3MDk5LDI0IEBACiAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCiAJICBmaQogCWVsc2UKLQlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgotCSAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCi0JICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCi0JZWxzZQotCSAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKLQkgIGNtZHM9JGFyY2hpdmVfY21kcworCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkYXJjaGl2ZV9leHBzeW1fY21kcyI7IHRoZW4KKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCisJICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKKwkgIGVsc2UKKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKKwkgICAgY21kcz0kYXJjaGl2ZV9jbWRzCiAJICBmaQogCWZpCiAKIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmCi0JICAgbGVuPWBleHByICJYJHRlc3RfY21kcyIgOiAiLioiIDI+L2Rldi9udWxsYCAmJgotCSAgIHRlc3QgIiRsZW4iIC1sZSAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCSAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIgJiYKKwkgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdCAmJgorCSAgIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIHBpZWNld2lzZS4KLQkgICRlY2hvICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKKwkgICMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBsaW5rIGluIG9uZSBzdGVwLCBsaW5rIHBpZWNld2lzZQorCSAgIyBvciwgaWYgdXNpbmcgR05VIGxkIGFuZCBza2lwcGVkX2V4cG9ydCBpcyBub3QgOiwgdXNlIGEgbGlua2VyCisJICAjIHNjcmlwdC4KIAogCSAgIyBTYXZlIHRoZSB2YWx1ZSBvZiAkb3V0cHV0IGFuZCAkbGlib2JqcyBiZWNhdXNlIHdlIHdhbnQgdG8KIAkgICMgdXNlIHRoZW0gbGF0ZXIuICBJZiB3ZSBoYXZlIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCB3ZQpAQCAtNDExMiw3NyArNzEzMCwxNjIgQEAKIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCiAJICBmaQogCSAgc2F2ZV9vdXRwdXQ9JG91dHB1dAotCSAgb3V0cHV0X2xhPWAkZWNobyAiWCRvdXRwdXQiIHwgJFhzZWQgLWUgIiRiYXNlbmFtZSJgCisJICBvdXRwdXRfbGE9YCRFQ0hPICJYJG91dHB1dCIgfCAkWHNlZCAtZSAiJGJhc2VuYW1lImAKIAogCSAgIyBDbGVhciB0aGUgcmVsb2FkYWJsZSBvYmplY3QgY3JlYXRpb24gY29tbWFuZCBxdWV1ZSBhbmQKIAkgICMgaW5pdGlhbGl6ZSBrIHRvIG9uZS4KIAkgIHRlc3RfY21kcz0KIAkgIGNvbmNhdF9jbWRzPQogCSAgb2JqbGlzdD0KLQkgIGRlbGZpbGVzPQogCSAgbGFzdF9yb2JqPQogCSAgaz0xCi0JICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKLQkgICMgTG9vcCBvdmVyIHRoZSBsaXN0IG9mIG9iamVjdHMgdG8gYmUgbGlua2VkLgotCSAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCi0JICBkbwotCSAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKLQkgICAgaWYgdGVzdCAiWCRvYmpsaXN0IiA9IFggfHwKLQkgICAgICAgeyBsZW49YGV4cHIgIlgkdGVzdF9jbWRzIiA6ICIuKiIgMj4vZGV2L251bGxgICYmCi0JCSB0ZXN0ICIkbGVuIiAtbGUgIiRtYXhfY21kX2xlbiI7IH07IHRoZW4KLQkgICAgICBvYmpsaXN0PSIkb2JqbGlzdCAkb2JqIgotCSAgICBlbHNlCi0JICAgICAgIyBUaGUgY29tbWFuZCAkdGVzdF9jbWRzIGlzIGFsbW9zdCB0b28gbG9uZywgYWRkIGEKLQkgICAgICAjIGNvbW1hbmQgdG8gdGhlIHF1ZXVlLgotCSAgICAgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KLQkJIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLQkJZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKLQkgICAgICBlbHNlCi0JCSMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCi0JCSMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0JCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKLQkgICAgICBmaQotCSAgICAgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotCSAgICAgIGs9YGV4cHIgJGsgKyAxYAotCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotCSAgICAgIG9iamxpc3Q9JG9iagotCSAgICAgIGxlbj0xCisKKwkgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICBvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubG5rc2NyaXB0CisJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgR05VIGxkIHNjcmlwdDogJG91dHB1dCIKKwkgICAgJEVDSE8gJ0lOUFVUICgnID4gJG91dHB1dAorCSAgICBmb3Igb2JqIGluICRzYXZlX2xpYm9ianMKKwkgICAgZG8KKwkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorCSAgICBkb25lCisJICAgICRFQ0hPICcpJyA+PiAkb3V0cHV0CisJICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKwkgIGVsaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0ICJYJGZpbGVfbGlzdF9zcGVjIiAhPSBYOyB0aGVuCisJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKKwkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorCSAgICA6ID4gJG91dHB1dAorCSAgICBzZXQgeCAkc2F2ZV9saWJvYmpzCisJICAgIHNoaWZ0CisJICAgIGZpcnN0b2JqPQorCSAgICBpZiB0ZXN0ICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiA9IHllczsgdGhlbgorCSAgICAgIGZpcnN0b2JqPSIkMSAiCisJICAgICAgc2hpZnQKIAkgICAgZmkKLQkgIGRvbmUKLQkgICMgSGFuZGxlIHRoZSByZW1haW5pbmcgb2JqZWN0cyBieSBjcmVhdGluZyBvbmUgbGFzdAotCSAgIyByZWxvYWRhYmxlIG9iamVjdCBmaWxlLiAgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QKLQkgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgotCSAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0JICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCSAgICBmb3Igb2JqCisJICAgIGRvCisJICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKwkgICAgZG9uZQorCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCisJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRvdXRwdXRcIgorCSAgZWxzZQorCSAgICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIjsgdGhlbgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCisJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CisJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgorCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKwkgICAgICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKwkgICAgICBsZW49JGxlbjAKIAotCSAgaWYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KLQkgICAgJHNob3cgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgotCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZXhwIgotCSAgICAkcnVuICRybSAkZXhwb3J0X3N5bWJvbHMKLQkgICAgbGlib2Jqcz0kb3V0cHV0Ci0JICAgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIGNyZWF0ZSB0aGUgZXhwb3J0IGZpbGUuCi0JICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRleHBvcnRfc3ltYm9sc19jbWRzXCIKLSAgICAgICAgICBmaQorCSAgICAgICMgTG9vcCBvdmVyIHRoZSBsaXN0IG9mIG9iamVjdHMgdG8gYmUgbGlua2VkLgorCSAgICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcworCSAgICAgIGRvCisJCWZ1bmNfbGVuICIgJG9iaiIKKwkJZnVuY19hcml0aCAkbGVuICsgJGZ1bmNfbGVuX3Jlc3VsdAorCQlsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CisJCWlmIHRlc3QgIlgkb2JqbGlzdCIgPSBYIHx8CisJCSAgIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIjsgdGhlbgorCQkgIGZ1bmNfYXBwZW5kIG9iamxpc3QgIiAkb2JqIgorCQllbHNlCisJCSAgIyBUaGUgY29tbWFuZCAkdGVzdF9jbWRzIGlzIGFsbW9zdCB0b28gbG9uZywgYWRkIGEKKwkJICAjIGNvbW1hbmQgdG8gdGhlIHF1ZXVlLgorCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KKwkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCisJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmpcIgorCQkgIGVsc2UKKwkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCisJCSAgICAjIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgorCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzICRvYmpsaXN0ICRsYXN0X3JvYmp+XCRSTSAkbGFzdF9yb2JqXCIKKwkJICBmaQorCQkgIGxhc3Rfcm9iaj0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAorCQkgIGZ1bmNfYXJpdGggJGsgKyAxCisJCSAgaz0kZnVuY19hcml0aF9yZXN1bHQKKwkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKwkJICBvYmpsaXN0PSRvYmoKKwkJICBmdW5jX2xlbiAiICRsYXN0X3JvYmoiCisJCSAgZnVuY19hcml0aCAkbGVuMCArICRmdW5jX2xlbl9yZXN1bHQKKwkJICBsZW49JGZ1bmNfYXJpdGhfcmVzdWx0CisJCWZpCisJICAgICAgZG9uZQorCSAgICAgICMgSGFuZGxlIHRoZSByZW1haW5pbmcgb2JqZWN0cyBieSBjcmVhdGluZyBvbmUgbGFzdAorCSAgICAgICMgcmVsb2FkYWJsZSBvYmplY3QgZmlsZS4gIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0CisJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCisJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kcyAkb2JqbGlzdCAkbGFzdF9yb2JqXCIKKwkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgorCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgorCSAgICAgIGZpCisJICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgogCi0JICAjIFNldCB1cCBhIGNvbW1hbmQgdG8gcmVtb3ZlIHRoZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcwotCSAgIyBhZnRlciB0aGV5IGFyZSB1c2VkLgotCSAgaT0wCi0JICB3aGlsZSB0ZXN0ICIkaSIgLWx0ICIkayIKLQkgIGRvCi0JICAgIGk9YGV4cHIgJGkgKyAxYAotCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtpfS4kb2JqZXh0IgotCSAgZG9uZQorCSAgICBlbHNlCisJICAgICAgb3V0cHV0PQorCSAgICBmaQogCi0JICAkZWNobyAiY3JlYXRpbmcgYSB0ZW1wb3JhcnkgcmVsb2FkYWJsZSBvYmplY3QgZmlsZTogJG91dHB1dCIKKwkgICAgaWYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KKwkgICAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgorCSAgICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCisJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKKwkgICAgICBsaWJvYmpzPSRvdXRwdXQKKwkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgorCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgorCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIgorCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCisJCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCisJICAgICAgZmkKKwkgICAgZmkKIAotCSAgIyBMb29wIHRocm91Z2ggdGhlIGNvbW1hbmRzIGdlbmVyYXRlZCBhYm92ZSBhbmQgZXhlY3V0ZSB0aGVtLgotCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0JICBmb3IgY21kIGluICRjb25jYXRfY21kczsgZG8KKwkgICAgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYKKwkgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nIGEgdGVtcG9yYXJ5IHJlbG9hZGFibGUgb2JqZWN0IGZpbGU6ICRvdXRwdXQiCisKKwkgICAgIyBMb29wIHRocm91Z2ggdGhlIGNvbW1hbmRzIGdlbmVyYXRlZCBhYm92ZSBhbmQgZXhlY3V0ZSB0aGVtLgorCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKwkgICAgZm9yIGNtZCBpbiAkY29uY2F0X2NtZHM7IGRvCisJICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICAgJG9wdF9zaWxlbnQgfHwgeworCQkgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKKwkJICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCisJICAgICAgfQorCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kIiB8fCB7CisJCWx0X2V4aXQ9JD8KKworCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKwkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKKwkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorCQlmaQorCisJCWV4aXQgJGx0X2V4aXQKKwkgICAgICB9CisJICAgIGRvbmUKIAkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgICRzaG93ICIkY21kIgotCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLQkgIGRvbmUKLQkgIElGUz0iJHNhdmVfaWZzIgorCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KKwkgICAgICBmdW5jX3Nob3dfZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkZXhwb3J0X3N5bWJvbHMiID4gIiR7ZXhwb3J0X3N5bWJvbHN9VCInCisJICAgICAgZnVuY19zaG93X2V2YWwgJyRNViAiJHtleHBvcnRfc3ltYm9sc31UIiAiJGV4cG9ydF9zeW1ib2xzIicKKwkgICAgZmkKKwkgIGZpCisKKyAgICAgICAgICBpZiAke3NraXBwZWRfZXhwb3J0LWZhbHNlfTsgdGhlbgorCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCisJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCisJICAgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyRFQ0hPICJYJGluY2x1ZGVfZXhwc3ltcyIgfCAkWHNlZCB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyInCisJICAgIGZpCisKKwkgICAgaWYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCisJICAgICAgIyBUaGUgZ2l2ZW4gZXhwb3J0c19zeW1ib2xzIGZpbGUgaGFzIHRvIGJlIGZpbHRlcmVkLCBzbyBmaWx0ZXIgaXQuCisJICAgICAgZnVuY192ZXJib3NlICJmaWx0ZXIgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIHRvIHRhZyBEQVRBIGV4cG9ydHMiCisJICAgICAgIyBGSVhNRTogJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIHBvdGVudGlhbGx5IGNvbnRhaW5zIGxvdHMgb2YKKwkgICAgICAjICdzJyBjb21tYW5kcyB3aGljaCBub3QgYWxsIHNlZHMgY2FuIGhhbmRsZS4gR05VIHNlZCBzaG91bGQgYmUgZmluZQorCSAgICAgICMgdGhvdWdoLiBBbHNvLCB0aGUgZmlsdGVyIHNjYWxlcyBzdXBlcmxpbmVhcmx5IHdpdGggdGhlIG51bWJlciBvZgorCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CisJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKwkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCisJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKKwkgICAgZmkKKwkgIGZpCiAKIAkgIGxpYm9ianM9JG91dHB1dAogCSAgIyBSZXN0b3JlIHRoZSB2YWx1ZSBvZiBvdXRwdXQuCkBAIC00MTkwLDYgKzcyOTMsNyBAQAogCiAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiICYmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBmaQogCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKIAkgICMgdmFsdWUgb2YgJGxpYm9ianMgZm9yIHBpZWNld2lzZSBsaW5raW5nLgpAQCAtNDIwMiwyOCArNzMwNiw0NSBAQAogCSAgICAgIGNtZHM9JG1vZHVsZV9jbWRzCiAJICAgIGZpCiAJICBlbHNlCi0JICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgotCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCi0JICBlbHNlCi0JICAgIGNtZHM9JGFyY2hpdmVfY21kcworCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgorCSAgICAgIGNtZHM9JGFyY2hpdmVfZXhwc3ltX2NtZHMKKwkgICAgZWxzZQorCSAgICAgIGNtZHM9JGFyY2hpdmVfY21kcwogCSAgICBmaQogCSAgZmkKLQotCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRoZSByZWxvYWRhYmxlIG9iamVjdCBmaWxlcwotCSAgIyB0byB0aGUganVzdC1yZXNldCAkY21kcy4KLQkgIGV2YWwgY21kcz1cIlwkY21kc35cJHJtICRkZWxmaWxlc1wiCiAJZmkKKworCWlmIHRlc3QgLW4gIiRkZWxmaWxlcyI7IHRoZW4KKwkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMgdG8gJGNtZHMuCisJICBldmFsIGNtZHM9XCJcJGNtZHN+XCRSTSAkZGVsZmlsZXNcIgorCWZpCisKKwkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKKwlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKwkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKworCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKwkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKwlmaQorCiAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCiAJZm9yIGNtZCBpbiAkY21kczsgZG8KIAkgIElGUz0iJHNhdmVfaWZzIgogCSAgZXZhbCBjbWQ9XCIkY21kXCIKLQkgICRzaG93ICIkY21kIgotCSAgJHJ1biBldmFsICIkY21kIiB8fCB7CisJICAkb3B0X3NpbGVudCB8fCB7CisJICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKKwkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgorCSAgfQorCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWQiIHx8IHsKIAkgICAgbHRfZXhpdD0kPwogCiAJICAgICMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAogCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLQkgICAgICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJHtyZWFsbmFtZX1UICYmICRtdiAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScKKwkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorCSAgICAgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKKwkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKIAkgICAgZmkKIAogCSAgICBleGl0ICRsdF9leGl0CkBAIC00MjMzLDEyICs3MzU0LDExIEBACiAKIAkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKIAlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLQkgICRydW4gZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRybSAke3JlYWxuYW1lfVQgJiYgJG12ICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJG12ICIkcmVhbG5hbWUiVSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CisJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CiAKIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KIAkgICAgaWYgdGVzdCAteiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotCSAgICAgICRzaG93ICIke3JtfXIgJGdlbnRvcCIKLQkgICAgICAkcnVuICR7cm19ciAiJGdlbnRvcCIKKwkgICAgICBmdW5jX3Nob3dfZXZhbCAnJHtSTX1yICIkZ2VudG9wIicKIAkgICAgZmkKIAkgIGZpCiAKQEAgLTQyNDgsOCArNzM2OCw3IEBACiAJIyBDcmVhdGUgbGlua3MgdG8gdGhlIHJlYWwgbGlicmFyeS4KIAlmb3IgbGlua25hbWUgaW4gJGxpbmtuYW1lczsgZG8KIAkgIGlmIHRlc3QgIiRyZWFsbmFtZSIgIT0gIiRsaW5rbmFtZSI7IHRoZW4KLQkgICAgJHNob3cgIihjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWUpIgotCSAgICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJGxpbmtuYW1lICYmICRMTl9TICRyZWFsbmFtZSAkbGlua25hbWUpJyB8fCBleGl0ICQ/CisJICAgIGZ1bmNfc2hvd19ldmFsICcoY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiAkUk0gIiRsaW5rbmFtZSIgJiYgJExOX1MgIiRyZWFsbmFtZSIgIiRsaW5rbmFtZSIpJyAnZXhpdCAkPycKIAkgIGZpCiAJZG9uZQogCkBAIC00MjYyLDM5ICs3MzgxLDM1IEBACiAgICAgICA7OwogCiAgICAgb2JqKQorICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KKwlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKKyAgICAgIGZpCisKICAgICAgIGNhc2UgIiAkZGVwbGlicyIgaW4KICAgICAgICpcIC1sKiB8ICpcIC1MKikKLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1sJyBhbmQgXGAtTCcgYXJlIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIgOzsKKwlmdW5jX3dhcm5pbmcgIlxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3Igb2JqZWN0cyIgOzsKICAgICAgIGVzYWMKIAotICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCAiJGRsc2VsZiIgIT0gbm87IHRoZW4KLQkkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkcnBhdGgiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXJwYXRoJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkcnBhdGgiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcnBhdGgnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkeHJwYXRoIiAmJiBcCisJZnVuY193YXJuaW5nICJcYC1SJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCi0gICAgICBpZiB0ZXN0IC1uICIkeHJwYXRoIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLVInIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKIAotICAgICAgaWYgdGVzdCAtbiAiJHZpbmZvIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgotICAgICAgZmkKLQotICAgICAgaWYgdGVzdCAtbiAiJHJlbGVhc2UiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAtcmVsZWFzZScgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIgMT4mMgotICAgICAgZmkKKyAgICAgIHRlc3QgLW4gIiRyZWxlYXNlIiAmJiBcCisJZnVuY193YXJuaW5nICJcYC1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgogCiAgICAgICBjYXNlICRvdXRwdXQgaW4KICAgICAgICoubG8pCi0JaWYgdGVzdCAtbiAiJG9ianMkb2xkX2RlcGxpYnMiOyB0aGVuCi0JICAkZWNobyAiJG1vZGVuYW1lOiBjYW5ub3QgYnVpbGQgbGlicmFyeSBvYmplY3QgXGAkb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCWZpCi0JbGlib2JqPSIkb3V0cHV0IgotCW9iaj1gJGVjaG8gIlgkb3V0cHV0IiB8ICRYc2VkIC1lICIkbG8ybyJgCisJdGVzdCAtbiAiJG9ianMkb2xkX2RlcGxpYnMiICYmIFwKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBidWlsZCBsaWJyYXJ5IG9iamVjdCBcYCRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyIKKworCWxpYm9iaj0kb3V0cHV0CisJZnVuY19sbzJvICIkbGlib2JqIgorCW9iaj0kZnVuY19sbzJvX3Jlc3VsdAogCTs7CiAgICAgICAqKQogCWxpYm9iaj0KQEAgLTQzMDMsNyArNzQxOCw3IEBACiAgICAgICBlc2FjCiAKICAgICAgICMgRGVsZXRlIHRoZSBvbGQgb2JqZWN0cy4KLSAgICAgICRydW4gJHJtICRvYmogJGxpYm9iagorICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkb2JqICRsaWJvYmoKIAogICAgICAgIyBPYmplY3RzIGZyb20gY29udmVuaWVuY2UgbGlicmFyaWVzLiAgVGhpcyBhc3N1bWVzCiAgICAgICAjIHNpbmdsZS12ZXJzaW9uIGNvbnZlbmllbmNlIGxpYnJhcmllcy4gIFdoZW5ldmVyIHdlIGNyZWF0ZQpAQCAtNDMxOSw3ICs3NDM0LDcgQEAKICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KIAlpZiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCiAJICBldmFsIHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIKLQkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJGVjaG8gIlgkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MiIHwgJFhzZWQgLWUgJ3N8LHwgfGcnYAorCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiWCR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkWHNlZCAtZSAnc3wsfCB8ZydgCiAJZWxzZQogCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgogCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCkBAIC00MzMwLDI0ICs3NDQ1LDE1IEBACiAgICAgICBmaQogCiAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KLSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqcyRvbGRfZGVwbGlicyAiYCRlY2hvICJYJGxpYm9ianMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJy9cLicke2xpYmV4dH0kJy9kJyAtZSAnL1wubGliJC9kJyAtZSAiJGxvMm8iIHwgJE5MMlNQYCIgJHJlbG9hZF9jb252X29ianMiICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIlgkbGlib2JqcyIgfCAkU1AyTkwgfCAkWHNlZCAtZSAnL1wuJyR7bGliZXh0fSQnL2QnIC1lICcvXC5saWIkL2QnIC1lICIkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CiAKICAgICAgIG91dHB1dD0iJG9iaiIKLSAgICAgIGNtZHM9JHJlbG9hZF9jbWRzCi0gICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JSUZTPSIkc2F2ZV9pZnMiCi0JZXZhbCBjbWQ9XCIkY21kXCIKLQkkc2hvdyAiJGNtZCIKLQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLSAgICAgIGRvbmUKLSAgICAgIElGUz0iJHNhdmVfaWZzIgorICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRyZWxvYWRfY21kcyIgJ2V4aXQgJD8nCiAKICAgICAgICMgRXhpdCBpZiB3ZSBhcmVuJ3QgZG9pbmcgYSBsaWJyYXJ5IG9iamVjdCBmaWxlLgogICAgICAgaWYgdGVzdCAteiAiJGxpYm9iaiI7IHRoZW4KIAlpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgotCSAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSAgJHJ1biAke3JtfXIgJGdlbnRvcAorCSAgZnVuY19zaG93X2V2YWwgJyR7Uk19ciAiJGdlbnRvcCInCiAJZmkKIAogCWV4aXQgJEVYSVRfU1VDQ0VTUwpAQCAtNDM1NSwxNCArNzQ2MSwxMyBAQAogCiAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KIAlpZiB0ZXN0IC1uICIkZ2VudG9wIjsgdGhlbgotCSAgJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSAgJHJ1biAke3JtfXIgJGdlbnRvcAorCSAgZnVuY19zaG93X2V2YWwgJyR7Uk19ciAiJGdlbnRvcCInCiAJZmkKIAogCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0CiAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KIAkjICRzaG93ICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiCi0JIyAkcnVuIGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPworCSMgJG9wdF9kcnlfcnVuIHx8IGV2YWwgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIgfHwgZXhpdCAkPwogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIApAQCAtNDM3MCwyMCArNzQ3NSwxMSBAQAogCSMgT25seSBkbyBjb21tYW5kcyBpZiB3ZSByZWFsbHkgaGF2ZSBkaWZmZXJlbnQgUElDIG9iamVjdHMuCiAJcmVsb2FkX29ianM9IiRsaWJvYmpzICRyZWxvYWRfY29udl9vYmpzIgogCW91dHB1dD0iJGxpYm9iaiIKLQljbWRzPSRyZWxvYWRfY21kcwotCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCWZvciBjbWQgaW4gJGNtZHM7IGRvCi0JICBJRlM9IiRzYXZlX2lmcyIKLQkgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAkc2hvdyAiJGNtZCIKLQkgICRydW4gZXZhbCAiJGNtZCIgfHwgZXhpdCAkPwotCWRvbmUKLQlJRlM9IiRzYXZlX2lmcyIKKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHJlbG9hZF9jbWRzIiAnZXhpdCAkPycKICAgICAgIGZpCiAKICAgICAgIGlmIHRlc3QgLW4gIiRnZW50b3AiOyB0aGVuCi0JJHNob3cgIiR7cm19ciAkZ2VudG9wIgotCSRydW4gJHtybX1yICRnZW50b3AKKwlmdW5jX3Nob3dfZXZhbCAnJHtSTX1yICIkZ2VudG9wIicKICAgICAgIGZpCiAKICAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwpAQCAtNDM5MSwzOSArNzQ4Nyw0NSBAQAogCiAgICAgcHJvZykKICAgICAgIGNhc2UgJGhvc3QgaW4KLQkqY3lnd2luKikgb3V0cHV0PWAkZWNobyAkb3V0cHV0IHwgJHtTRUR9IC1lICdzLC5leGUkLCw7cywkLC5leGUsJ2AgOzsKKwkqY3lnd2luKikgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkb3V0cHV0IgorCSAgICAgICAgICBvdXRwdXQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC5leGU7OwogICAgICAgZXNhYwotICAgICAgaWYgdGVzdCAtbiAiJHZpbmZvIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiIDE+JjIKLSAgICAgIGZpCisgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3IgcHJvZ3JhbXMiCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRyZWxlYXNlIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIiAxPiYyCi0gICAgICBmaQorICAgICAgdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKKwlmdW5jX3dhcm5pbmcgIlxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIgogCi0gICAgICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXM7IHRoZW4KLQlpZiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0gdW5rbm93biAmJiB0ZXN0ICIkZGxvcGVuX3NlbGYiID0gdW5rbm93biAmJgotCSAgIHRlc3QgIiRkbG9wZW5fc2VsZl9zdGF0aWMiID0gdW5rbm93bjsgdGhlbgotCSAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGBBQ19MSUJUT09MX0RMT1BFTicgbm90IHVzZWQuIEFzc3VtaW5nIG5vIGRsb3BlbiBzdXBwb3J0LiIKLQlmaQotICAgICAgZmkKKyAgICAgIHRlc3QgIiRwcmVsb2FkIiA9IHllcyBcCisgICAgICAgICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB1bmtub3duIFwKKwkmJiB0ZXN0ICIkZGxvcGVuX3NlbGYiID0gdW5rbm93biBcCisJJiYgdGVzdCAiJGRsb3Blbl9zZWxmX3N0YXRpYyIgPSB1bmtub3duICYmIFwKKwkgIGZ1bmNfd2FybmluZyAiXGBMVF9JTklUKFtkbG9wZW5dKScgbm90IHVzZWQuIEFzc3VtaW5nIG5vIGRsb3BlbiBzdXBwb3J0LiIKIAogICAgICAgY2FzZSAkaG9zdCBpbgogICAgICAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQogCSMgT24gUmhhcHNvZHkgcmVwbGFjZSB0aGUgQyBsaWJyYXJ5IGlzIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0JY29tcGlsZV9kZXBsaWJzPWAkZWNobyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyAtZnJhbWV3b3JrIFN5c3RlbSAvJ2AKLQlmaW5hbGl6ZV9kZXBsaWJzPWAkZWNobyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncy8gLWxjIC8gLWZyYW1ld29yayBTeXN0ZW0gLydgCisJY29tcGlsZV9kZXBsaWJzPWAkRUNITyAiWCAkY29tcGlsZV9kZXBsaWJzIiB8ICRYc2VkIC1lICdzLyAtbGMgLyBTeXN0ZW0ubHRmcmFtZXdvcmsgLydgCisJZmluYWxpemVfZGVwbGlicz1gJEVDSE8gIlggJGZpbmFsaXplX2RlcGxpYnMiIHwgJFhzZWQgLWUgJ3MvIC1sYyAvIFN5c3RlbS5sdGZyYW1ld29yayAvJ2AKIAk7OwogICAgICAgZXNhYwogCiAgICAgICBjYXNlICRob3N0IGluCi0gICAgICAqZGFyd2luKikKLSAgICAgICAgIyBEb24ndCBhbGxvdyBsYXp5IGxpbmtpbmcsIGl0IGJyZWFrcyBDKysgZ2xvYmFsIGNvbnN0cnVjdG9ycwotICAgICAgICBpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCi0gICAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0gICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLSAgICAgICAgZmkKLSAgICAgICAgOzsKKyAgICAgICotKi1kYXJ3aW4qKQorCSMgRG9uJ3QgYWxsb3cgbGF6eSBsaW5raW5nLCBpdCBicmVha3MgQysrIGdsb2JhbCBjb25zdHJ1Y3RvcnMKKwkjIEJ1dCBpcyBzdXBwb3NlZGx5IGZpeGVkIG9uIDEwLjQgb3IgbGF0ZXIgKHlheSEpLgorCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KKwkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KKwkgICAgMTAuWzAxMjNdKQorCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCisJICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorCSAgICA7OworCSAgZXNhYworCWZpCisJIyBUaW1lIHRvIGNoYW5nZSBhbGwgb3VyICJmb28ubHRmcmFtZXdvcmsiIHN0dWZmIGJhY2sgdG8gIi1mcmFtZXdvcmsgZm9vIgorCWNvbXBpbGVfZGVwbGlicz1gJEVDSE8gIlggJGNvbXBpbGVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwlmaW5hbGl6ZV9kZXBsaWJzPWAkRUNITyAiWCAkZmluYWxpemVfZGVwbGlicyIgfCAkWHNlZCAtZSAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKKwk7OwogICAgICAgZXNhYwogCiAKQEAgLTQ0OTgsMTQgKzc2MDAsMTYgQEAKIAkgIGVzYWMKIAlmaQogCWNhc2UgJGhvc3QgaW4KLQkqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKikKLQkgIHRlc3RiaW5kaXI9YCRlY2hvICJYJGxpYmRpciIgfCAkWHNlZCAtZSAncyovbGliJCovYmluKidgCisJKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKwkgIHRlc3RiaW5kaXI9YCR7RUNIT30gIiRsaWJkaXIiIHwgJHtTRUR9IC1lICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGxpYmRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OwogCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OwogCSAgZXNhYwogCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCiAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKKwkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKIAkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CiAJICBlc2FjCiAJICA7OwpAQCAtNDU1NywyODEgKzc2NjEsNTEgQEAKIAogICAgICAgaWYgdGVzdCAtbiAiJGxpYm9ianMiICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KIAkjIFRyYW5zZm9ybSBhbGwgdGhlIGxpYnJhcnkgb2JqZWN0cyBpbnRvIHN0YW5kYXJkIG9iamVjdHMuCi0JY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKLQlmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCisJY29tcGlsZV9jb21tYW5kPWAkRUNITyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKKwlmaW5hbGl6ZV9jb21tYW5kPWAkRUNITyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCi0gICAgICBkbHN5bXM9Ci0gICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgotCWlmIHRlc3QgLW4gIiROTSIgJiYgdGVzdCAtbiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KLQkgIGRsc3ltcz0iJHtvdXRwdXRuYW1lfVMuYyIKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiBub3QgY29uZmlndXJlZCB0byBleHRyYWN0IGdsb2JhbCBzeW1ib2xzIGZyb20gZGxwcmVvcGVuZWQgZmlsZXMiIDE+JjIKLQlmaQorICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRvdXRwdXRuYW1lIiAiQFBST0dSQU1AIiAibm8iCisKKyAgICAgICMgdGVtcGxhdGUgcHJlbGlua2luZyBzdGVwCisgICAgICBpZiB0ZXN0IC1uICIkcHJlbGlua19jbWRzIjsgdGhlbgorCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcHJlbGlua19jbWRzIiAnZXhpdCAkPycKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRkbHN5bXMiOyB0aGVuCi0JY2FzZSAkZGxzeW1zIGluCi0JIiIpIDs7Ci0JKi5jKQotCSAgIyBEaXNjb3ZlciB0aGUgbmxpc3Qgb2YgZWFjaCBvZiB0aGUgZGxmaWxlcy4KLQkgIG5saXN0PSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Lm5tIgotCi0JICAkc2hvdyAiJHJtICRubGlzdCAke25saXN0fVMgJHtubGlzdH1UIgotCSAgJHJ1biAkcm0gIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCIKLQotCSAgIyBQYXJzZSB0aGUgbmFtZSBsaXN0IGludG8gYSBzb3VyY2UgZmlsZS4KLQkgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0X29iamRpci8kZGxzeW1zIgotCi0JICB0ZXN0IC16ICIkcnVuIiAmJiAkZWNobyA+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotLyogJGRsc3ltcyAtIHN5bWJvbCByZXNvbHV0aW9uIHRhYmxlIGZvciBcYCRvdXRwdXRuYW1lJyBkbHN5bSBlbXVsYXRpb24uICovCi0vKiBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gLSBHTlUgJFBBQ0tBR0UgJFZFUlNJT04kVElNRVNUQU1QICovCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuIFwiQ1wiIHsKLSNlbmRpZgotCi0vKiBQcmV2ZW50IHRoZSBvbmx5IGtpbmQgb2YgZGVjbGFyYXRpb24gY29uZmxpY3RzIHdlIGNhbiBtYWtlLiAqLwotI2RlZmluZSBsdF9wcmVsb2FkZWRfc3ltYm9scyBzb21lX290aGVyX3N5bWJvbAotCi0vKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAotIgotCi0JICBpZiB0ZXN0ICIkZGxzZWxmIiA9IHllczsgdGhlbgotCSAgICAkc2hvdyAiZ2VuZXJhdGluZyBzeW1ib2wgbGlzdCBmb3IgXGAkb3V0cHV0JyIKLQotCSAgICB0ZXN0IC16ICIkcnVuIiAmJiAkZWNobyAnOiBAUFJPR1JBTUAgJyA+ICIkbmxpc3QiCi0KLQkgICAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgotCSAgICBwcm9nZmlsZXM9YCRlY2hvICJYJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFhzZWQgLWUgIiRsbzJvIiB8ICROTDJTUGAKLQkgICAgZm9yIGFyZyBpbiAkcHJvZ2ZpbGVzOyBkbwotCSAgICAgICRzaG93ICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRhcmcnIgotCSAgICAgICRydW4gZXZhbCAiJE5NICRhcmcgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotCSAgICBkb25lCi0KLQkgICAgaWYgdGVzdCAtbiAiJGV4Y2x1ZGVfZXhwc3ltcyI7IHRoZW4KLQkgICAgICAkcnVuIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJwotCSAgICAgICRydW4gZXZhbCAnJG12ICIkbmxpc3QiVCAiJG5saXN0IicKLQkgICAgZmkKLQotCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCi0JICAgICAgJHJ1biBldmFsICckRUdSRVAgLWUgIiRleHBvcnRfc3ltYm9sc19yZWdleCIgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0JICAgICAgJHJ1biBldmFsICckbXYgIiRubGlzdCJUICIkbmxpc3QiJwotCSAgICBmaQotCi0JICAgICMgUHJlcGFyZSB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzCi0JICAgIGlmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9scyI7IHRoZW4KLQkgICAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgotCSAgICAgICRydW4gJHJtICRleHBvcnRfc3ltYm9scwotCSAgICAgICRydW4gZXZhbCAiJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgIic8ICIkbmxpc3QiID4gIiRleHBvcnRfc3ltYm9scyInCi0gICAgICAgICAgICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqICkKLQkgICAgICAgICRydW4gZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLQkJJHJ1biBldmFsICdjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICAgZXNhYwotCSAgICBlbHNlCi0JICAgICAgJHJ1biBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKLQkgICAgICAkcnVuIGV2YWwgJ2dyZXAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLQkgICAgICAkcnVuIGV2YWwgJ212ICIkbmxpc3QiVCAiJG5saXN0IicKLSAgICAgICAgICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQotCSAgICAgICAgJHJ1biBldmFsICJlY2hvIEVYUE9SVFMgIic+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJwotCQkkcnVuIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgICBlc2FjCi0JICAgIGZpCi0JICBmaQotCi0JICBmb3IgYXJnIGluICRkbHByZWZpbGVzOyBkbwotCSAgICAkc2hvdyAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkYXJnJyIKLQkgICAgbmFtZT1gJGVjaG8gIiRhcmciIHwgJHtTRUR9IC1lICdzJV4uKi8lJSdgCi0JICAgICRydW4gZXZhbCAnJGVjaG8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLQkgICAgJHJ1biBldmFsICIkTk0gJGFyZyB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0JICBkb25lCi0KLQkgIGlmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0JICAgICMgTWFrZSBzdXJlIHdlIGhhdmUgYXQgbGVhc3QgYW4gZW1wdHkgZmlsZS4KLQkgICAgdGVzdCAtZiAiJG5saXN0IiB8fCA6ID4gIiRubGlzdCIKLQotCSAgICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgotCSAgICAgICRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUCi0JICAgICAgJG12ICIkbmxpc3QiVCAiJG5saXN0IgotCSAgICBmaQotCi0JICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCi0JICAgIGlmIGdyZXAgLXYgIl46ICIgPCAiJG5saXN0IiB8Ci0JCWlmIHNvcnQgLWsgMyA8L2Rldi9udWxsID4vZGV2L251bGwgMj4mMTsgdGhlbgotCQkgIHNvcnQgLWsgMwotCQllbHNlCi0JCSAgc29ydCArMgotCQlmaSB8Ci0JCXVuaXEgPiAiJG5saXN0IlM7IHRoZW4KLQkgICAgICA6Ci0JICAgIGVsc2UKLQkgICAgICBncmVwIC12ICJeOiAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlMKLQkgICAgZmkKLQotCSAgICBpZiB0ZXN0IC1mICIkbmxpc3QiUzsgdGhlbgotCSAgICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NkZWNsIicgPCAiJG5saXN0IlMgPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiJwotCSAgICBlbHNlCi0JICAgICAgJGVjaG8gJy8qIE5PTkUgKi8nID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIgotCSAgICBmaQotCi0JICAgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotCi0jdW5kZWYgbHRfcHJlbG9hZGVkX3N5bWJvbHMKLQotI2lmIGRlZmluZWQgKF9fU1REQ19fKSAmJiBfX1NURENfXwotIyBkZWZpbmUgbHRfcHRyIHZvaWQgKgotI2Vsc2UKLSMgZGVmaW5lIGx0X3B0ciBjaGFyICoKLSMgZGVmaW5lIGNvbnN0Ci0jZW5kaWYKLQotLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICovCi0iCi0KLQkgICAgY2FzZSAkaG9zdCBpbgotCSAgICAqY3lnd2luKiB8ICptaW5ndyogKQotCSAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNhbid0IGJlIGNvbnN0LCBiZWNhdXNlCi0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgotICAgb24gcHNldWRvLXJlbG9jcyAqLwotc3RydWN0IHsKLSIKLQkgICAgICA7OwotCSAgICAqICkKLQkgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotY29uc3Qgc3RydWN0IHsKLSIKLQkgICAgICA7OwotCSAgICBlc2FjCi0KLQotCSAgJGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRkbHN5bXMiICJcCi0gIGNvbnN0IGNoYXIgKm5hbWU7Ci0gIGx0X3B0ciBhZGRyZXNzOwotfQotbHRfcHJlbG9hZGVkX3N5bWJvbHNbXSA9Ci17XAotIgotCi0JICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiA8ICIkbmxpc3QiID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIgotCi0JICAgICRlY2hvID4+ICIkb3V0cHV0X29iamRpci8kZGxzeW1zIiAiXAotICB7MCwgKGx0X3B0cikgMH0KLX07Ci0KLS8qIFRoaXMgd29ya3MgYXJvdW5kIGEgcHJvYmxlbSBpbiBGcmVlQlNEIGxpbmtlciAqLwotI2lmZGVmIEZSRUVCU0RfV09SS0FST1VORAotc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSAgcmV0dXJuIGx0X3ByZWxvYWRlZF9zeW1ib2xzOwotfQotI2VuZGlmCi0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmXAotIgotCSAgZmkKLQotCSAgcGljX2ZsYWdfZm9yX3N5bXRhYmxlPQotCSAgY2FzZSAkaG9zdCBpbgotCSAgIyBjb21waWxpbmcgdGhlIHN5bWJvbCB0YWJsZSBmaWxlIHdpdGggcGljX2ZsYWcgd29ya3MgYXJvdW5kCi0JICAjIGEgRnJlZUJTRCBidWcgdGhhdCBjYXVzZXMgcHJvZ3JhbXMgdG8gY3Jhc2ggd2hlbiAtbG0gaXMKLQkgICMgbGlua2VkIGJlZm9yZSBhbnkgb3RoZXIgUElDIG9iamVjdC4gIEJ1dCB3ZSBtdXN0IG5vdCB1c2UKLQkgICMgcGljX2ZsYWcgd2hlbiBsaW5raW5nIHdpdGggLXN0YXRpYy4gIFRoZSBwcm9ibGVtIGV4aXN0cyBpbgotCSAgIyBGcmVlQlNEIDIuMi42IGFuZCBpcyBmaXhlZCBpbiBGcmVlQlNEIDMuMS4KLQkgICotKi1mcmVlYnNkMip8Ki0qLWZyZWVic2QzLjAqfCotKi1mcmVlYnNkZWxmMy4wKikKLQkgICAgY2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCi0JICAgICoiIC1zdGF0aWMgIiopIDs7Ci0JICAgICopIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyAtREZSRUVCU0RfV09SS0FST1VORCI7OwotCSAgICBlc2FjOzsKLQkgICotKi1ocHV4KikKLQkgICAgY2FzZSAiJGNvbXBpbGVfY29tbWFuZCAiIGluCi0JICAgICoiIC1zdGF0aWMgIiopIDs7Ci0JICAgICopIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyI7OwotCSAgICBlc2FjCi0JICBlc2FjCi0KLQkgICMgTm93IGNvbXBpbGUgdGhlIGR5bmFtaWMgc3ltYm9sIGZpbGUuCi0JICAkc2hvdyAiKGNkICRvdXRwdXRfb2JqZGlyICYmICRMVENDICAkTFRDRkxBR1MgLWMkbm9fYnVpbHRpbl9mbGFnJHBpY19mbGFnX2Zvcl9zeW10YWJsZSBcIiRkbHN5bXNcIikiCi0JICAkcnVuIGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkTFRDQyAgJExUQ0ZMQUdTIC1jJG5vX2J1aWx0aW5fZmxhZyRwaWNfZmxhZ19mb3Jfc3ltdGFibGUgIiRkbHN5bXMiKScgfHwgZXhpdCAkPwotCi0JICAjIENsZWFuIHVwIHRoZSBnZW5lcmF0ZWQgZmlsZXMuCi0JICAkc2hvdyAiJHJtICRvdXRwdXRfb2JqZGlyLyRkbHN5bXMgJG5saXN0ICR7bmxpc3R9UyAke25saXN0fVQiCi0JICAkcnVuICRybSAiJG91dHB1dF9vYmpkaXIvJGRsc3ltcyIgIiRubGlzdCIgIiR7bmxpc3R9UyIgIiR7bmxpc3R9VCIKLQotCSAgIyBUcmFuc2Zvcm0gdGhlIHN5bWJvbCBmaWxlIGludG8gdGhlIGNvcnJlY3QgbmFtZS4KLSAgICAgICAgICBjYXNlICRob3N0IGluCi0gICAgICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqICkKLSAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX0uZGVmIiA7IHRoZW4KLSAgICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX0uZGVmICRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9LmRlZiAkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lIiB8ICROTDJTUGAKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kPWAkZWNobyAiWCRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgICBmaW5hbGl6ZV9jb21tYW5kPWAkZWNobyAiWCRmaW5hbGl6ZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lIiB8ICROTDJTUGAKLSAgICAgICAgICAgICBmaQotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqICkKLSAgICAgICAgICAgIGNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJUBTWU1GSUxFQCUkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0lIiB8ICROTDJTUGAKLSAgICAgICAgICAgIGZpbmFsaXplX2NvbW1hbmQ9YCRlY2hvICJYJGZpbmFsaXplX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFhzZWQgLWUgInMlQFNZTUZJTEVAJSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSUiIHwgJE5MMlNQYAotICAgICAgICAgICAgOzsKLSAgICAgICAgICBlc2FjCi0JICA7OwotCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiB1bmtub3duIHN1ZmZpeCBmb3IgXGAkZGxzeW1zJyIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICA7OwotCWVzYWMKLSAgICAgIGVsc2UKLQkjIFdlIGtlZXAgZ29pbmcganVzdCBpbiBjYXNlIHRoZSB1c2VyIGRpZG4ndCByZWZlciB0bwotCSMgbHRfcHJlbG9hZGVkX3N5bWJvbHMuICBUaGUgbGlua2VyIHdpbGwgZmFpbCBpZiBnbG9iYWxfc3ltYm9sX3BpcGUKLQkjIHJlYWxseSB3YXMgcmVxdWlyZWQuCi0KLQkjIE51bGxpZnkgdGhlIHN5bWJvbCBmaWxlLgotCWNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICJzJSBAU1lNRklMRUAlJSIgfCAkTkwyU1BgCi0JZmluYWxpemVfY29tbWFuZD1gJGVjaG8gIlgkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAicyUgQFNZTUZJTEVAJSUiIHwgJE5MMlNQYAotICAgICAgZmkKLQotICAgICAgaWYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IG5vIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgorICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9eWVzCisgICAgICBjYXNlICRob3N0IGluCisgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQorICAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgKmNlZ2NjKQorICAgICAgICAjIERpc2FibGUgd3JhcHBlcnMgZm9yIGNlZ2NjLCB3ZSBhcmUgY3Jvc3MgY29tcGlsaW5nIGFueXdheS4KKyAgICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9bm8KKyAgICAgICAgOzsKKyAgICAgICopCisgICAgICAgIGlmIHRlc3QgIiRuZWVkX3JlbGluayIgPSBubyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubworICAgICAgICBmaQorICAgICAgICA7OworICAgICAgZXNhYworICAgICAgaWYgdGVzdCAiJHdyYXBwZXJzX3JlcXVpcmVkIiA9IG5vOyB0aGVuCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCWNvbXBpbGVfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIHwgJE5MMlNQYAorCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIlgkY29tcGlsZV9jb21tYW5kIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnYAogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCiAJIyBXZSBoYXZlIG5vIHVuaW5zdGFsbGVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzLCBzbyBmaW5hbGl6ZSByaWdodCBub3cuCi0JJHNob3cgIiRsaW5rX2NvbW1hbmQiCi0JJHJ1biBldmFsICIkbGlua19jb21tYW5kIgotCWV4aXRfc3RhdHVzPSQ/CisJZXhpdF9zdGF0dXM9MAorCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCiAKIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotCWlmIHRlc3QgLW4gIiRkbHN5bXMiOyB0aGVuCi0JICAkc2hvdyAiJHJtICRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSIKLQkgICRydW4gJHJtICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iCisJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgorCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKIAlmaQogCiAJZXhpdCAkZXhpdF9zdGF0dXMKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotCSMgV2Ugc2hvdWxkIHNldCB0aGUgc2hsaWJwYXRoX3ZhcgotCXJwYXRoPQotCWZvciBkaXIgaW4gJHRlbXBfcnBhdGg7IGRvCi0JICBjYXNlICRkaXIgaW4KLQkgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikKLQkgICAgIyBBYnNvbHV0ZSBwYXRoLgotCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCi0JICAgIDs7Ci0JICAqKQotCSAgICAjIFJlbGF0aXZlIHBhdGg6IGFkZCBhIHRoaXNkaXIgZW50cnkuCi0JICAgIHJwYXRoPSIkcnBhdGhcJHRoaXNkaXIvJGRpcjoiCi0JICAgIDs7Ci0JICBlc2FjCi0JZG9uZQotCXRlbXBfcnBhdGg9IiRycGF0aCIKLSAgICAgIGZpCi0KICAgICAgIGlmIHRlc3QgLW4gIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGgiOyB0aGVuCiAJY29tcGlsZV9jb21tYW5kPSIkc2hsaWJwYXRoX3Zhcj1cIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIgJGNvbXBpbGVfY29tbWFuZCIKICAgICAgIGZpCkBAIC00ODY0LDEyICs3NzM4LDExIEBACiAJIyBXZSBkb24ndCBuZWVkIHRvIGNyZWF0ZSBhIHdyYXBwZXIgc2NyaXB0LgogCWxpbmtfY29tbWFuZD0iJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIgogCSMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KLQlsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKKwlsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGxpbmtfY29tbWFuZCIgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAkjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlLgotCSRydW4gJHJtICRvdXRwdXQKKwkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKIAkjIExpbmsgdGhlIGV4ZWN1dGFibGUgYW5kIGV4aXQKLQkkc2hvdyAiJGxpbmtfY29tbWFuZCIKLQkkcnVuIGV2YWwgIiRsaW5rX2NvbW1hbmQiIHx8IGV4aXQgJD8KKwlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCiAJZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgICBmaQogCkBAIC00ODc4LDEzICs3NzUxLDEzIEBACiAJbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCiAJcmVsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkZmluYWxpemVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKIAotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHRoaXMgcGxhdGZvcm0gZG9lcyBub3QgbGlrZSB1bmluc3RhbGxlZCBzaGFyZWQgbGlicmFyaWVzIiAxPiYyCi0JJGVjaG8gIiRtb2RlbmFtZTogXGAkb3V0cHV0JyB3aWxsIGJlIHJlbGlua2VkIGR1cmluZyBpbnN0YWxsYXRpb24iIDE+JjIKKwlmdW5jX3dhcm5pbmcgInRoaXMgcGxhdGZvcm0gZG9lcyBub3QgbGlrZSB1bmluc3RhbGxlZCBzaGFyZWQgbGlicmFyaWVzIgorCWZ1bmNfd2FybmluZyAiXGAkb3V0cHV0JyB3aWxsIGJlIHJlbGlua2VkIGR1cmluZyBpbnN0YWxsYXRpb24iCiAgICAgICBlbHNlCiAJaWYgdGVzdCAiJGZhc3RfaW5zdGFsbCIgIT0gbm87IHRoZW4KIAkgIGxpbmtfY29tbWFuZD0iJGZpbmFsaXplX3ZhciRjb21waWxlX2NvbW1hbmQkZmluYWxpemVfcnBhdGgiCiAJICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgotCSAgICByZWxpbmtfY29tbWFuZD1gJGVjaG8gIlgkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiIHwgJFNQMk5MIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJyB8ICROTDJTUGAKKwkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICJYJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRYc2VkIC1lICdzJUBPVVRQVVRAJVwkcHJvZ2Rpci9cJGZpbGUlZydgCiAJICBlbHNlCiAJICAgICMgZmFzdF9pbnN0YWxsIGlzIHNldCB0byBuZWVkbGVzcwogCSAgICByZWxpbmtfY29tbWFuZD0KQEAgLTQ4OTYsNjA4ICs3NzY5LDEwMyBAQAogICAgICAgZmkKIAogICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotICAgICAgbGlua19jb21tYW5kPWAkZWNobyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAorICAgICAgbGlua19jb21tYW5kPWAkRUNITyAiWCRsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSInJWcnYAogCiAgICAgICAjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlcy4KLSAgICAgICRydW4gJHJtICRvdXRwdXQgJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUgJG91dHB1dF9vYmpkaXIvbHQtJG91dHB1dG5hbWUKKyAgICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJG91dHB1dCAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSAkb3V0cHV0X29iamRpci9sdC0kb3V0cHV0bmFtZQogCi0gICAgICAkc2hvdyAiJGxpbmtfY29tbWFuZCIKLSAgICAgICRydW4gZXZhbCAiJGxpbmtfY29tbWFuZCIgfHwgZXhpdCAkPworICAgICAgZnVuY19zaG93X2V2YWwgIiRsaW5rX2NvbW1hbmQiICdleGl0ICQ/JwogCiAgICAgICAjIE5vdyBjcmVhdGUgdGhlIHdyYXBwZXIgc2NyaXB0LgotICAgICAgJHNob3cgImNyZWF0aW5nICRvdXRwdXQiCisgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCiAKICAgICAgICMgUXVvdGUgdGhlIHJlbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIGlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KIAkjIFByZXNlcnZlIGFueSB2YXJpYWJsZXMgdGhhdCBtYXkgYWZmZWN0IGNvbXBpbGVyIGJlaGF2aW9yCiAJZm9yIHZhciBpbiAkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms7IGRvCiAJICBpZiBldmFsIHRlc3QgLXogXCJcJHskdmFyK3NldH1cIjsgdGhlbgotCSAgICByZWxpbmtfY29tbWFuZD0ieyB0ZXN0IC16IFwiXCR7JHZhcitzZXR9XCIgfHwgdW5zZXQgJHZhciB8fCB7ICR2YXI9OyBleHBvcnQgJHZhcjsgfTsgfTsgJHJlbGlua19jb21tYW5kIgorCSAgICByZWxpbmtfY29tbWFuZD0ieyB0ZXN0IC16IFwiXCR7JHZhcitzZXR9XCIgfHwgJGx0X3Vuc2V0ICR2YXIgfHwgeyAkdmFyPTsgZXhwb3J0ICR2YXI7IH07IH07ICRyZWxpbmtfY29tbWFuZCIKIAkgIGVsaWYgZXZhbCB2YXJfdmFsdWU9XCQkdmFyOyB0ZXN0IC16ICIkdmFyX3ZhbHVlIjsgdGhlbgogCSAgICByZWxpbmtfY29tbWFuZD0iJHZhcj07IGV4cG9ydCAkdmFyOyAkcmVsaW5rX2NvbW1hbmQiCiAJICBlbHNlCi0JICAgIHZhcl92YWx1ZT1gJGVjaG8gIlgkdmFyX3ZhbHVlIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQkgICAgcmVsaW5rX2NvbW1hbmQ9IiR2YXI9XCIkdmFyX3ZhbHVlXCI7IGV4cG9ydCAkdmFyOyAkcmVsaW5rX2NvbW1hbmQiCisJICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR2YXJfdmFsdWUiCisJICAgIHJlbGlua19jb21tYW5kPSIkdmFyPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdDsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKIAkgIGZpCiAJZG9uZQogCXJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRyZWxpbmtfY29tbWFuZCkiCi0JcmVsaW5rX2NvbW1hbmQ9YCRlY2hvICJYJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0IiB8ICROTDJTUGAKKwlyZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgZmkKIAotICAgICAgIyBRdW90ZSAkZWNobyBmb3Igc2hpcHBpbmcuCi0gICAgICBpZiB0ZXN0ICJYJGVjaG8iID0gIlgkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7IHRoZW4KKyAgICAgICMgUXVvdGUgJEVDSE8gZm9yIHNoaXBwaW5nLgorICAgICAgaWYgdGVzdCAiWCRFQ0hPIiA9ICJYJFNIRUxMICRwcm9ncGF0aCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCiAJY2FzZSAkcHJvZ3BhdGggaW4KIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIHFlY2hvPSIkU0hFTEwgJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwogCSopIHFlY2hvPSIkU0hFTEwgYHB3ZGAvJHByb2dwYXRoIC0tZmFsbGJhY2stZWNobyI7OwogCWVzYWMKLQlxZWNobz1gJGVjaG8gIlgkcWVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXFlY2hvPWAkRUNITyAiWCRxZWNobyIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCiAgICAgICBlbHNlCi0JcWVjaG89YCRlY2hvICJYJGVjaG8iIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorCXFlY2hvPWAkRUNITyAiWCRFQ0hPIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKICAgICAgIGZpCiAKLSAgICAgICMgT25seSBhY3R1YWxseSBkbyB0aGluZ3MgaWYgb3VyIHJ1biBjb21tYW5kIGlzIG5vbi1udWxsLgotICAgICAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KKyAgICAgICMgT25seSBhY3R1YWxseSBkbyB0aGluZ3MgaWYgbm90IGluIGRyeSBydW4gbW9kZS4KKyAgICAgICRvcHRfZHJ5X3J1biB8fCB7CiAJIyB3aW4zMiB3aWxsIHRoaW5rIHRoZSBzY3JpcHQgaXMgYSBiaW5hcnkgaWYgaXQgaGFzCiAJIyBhIC5leGUgc3VmZml4LCBzbyB3ZSBzdHJpcCBpdCBvZmYgaGVyZS4KIAljYXNlICRvdXRwdXQgaW4KLQkgICouZXhlKSBvdXRwdXQ9YCRlY2hvICRvdXRwdXR8JHtTRUR9ICdzLC5leGUkLCwnYCA7OworCSAgKi5leGUpIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJG91dHB1dCIKKwkgICAgICAgICBvdXRwdXQ9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwogCWVzYWMKIAkjIHRlc3QgZm9yIGN5Z3dpbiBiZWNhdXNlIG12IGZhaWxzIHcvbyAuZXhlIGV4dGVuc2lvbnMKIAljYXNlICRob3N0IGluCiAJICAqY3lnd2luKikKIAkgICAgZXhlZXh0PS5leGUKLQkgICAgb3V0cHV0bmFtZT1gJGVjaG8gJG91dHB1dG5hbWV8JHtTRUR9ICdzLC5leGUkLCwnYCA7OworCSAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRvdXRwdXRuYW1lIgorCSAgICBvdXRwdXRuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKIAkgICopIGV4ZWV4dD0gOzsKIAllc2FjCiAJY2FzZSAkaG9zdCBpbgogCSAgKmN5Z3dpbiogfCAqbWluZ3cqICkKLSAgICAgICAgICAgIG91dHB1dF9uYW1lPWBiYXNlbmFtZSAkb3V0cHV0YAotICAgICAgICAgICAgb3V0cHV0X3BhdGg9YGRpcm5hbWUgJG91dHB1dGAKLSAgICAgICAgICAgIGN3cmFwcGVyc291cmNlPSIkb3V0cHV0X3BhdGgvJG9iamRpci9sdC0kb3V0cHV0X25hbWUuYyIKLSAgICAgICAgICAgIGN3cmFwcGVyPSIkb3V0cHV0X3BhdGgvJG91dHB1dF9uYW1lLmV4ZSIKLSAgICAgICAgICAgICRybSAkY3dyYXBwZXJzb3VyY2UgJGN3cmFwcGVyCi0gICAgICAgICAgICB0cmFwICIkcm0gJGN3cmFwcGVyc291cmNlICRjd3JhcHBlcjsgZXhpdCAkRVhJVF9GQUlMVVJFIiAxIDIgMTUKKwkgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJG91dHB1dCIgIiIgIi4iCisJICAgIG91dHB1dF9uYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCSAgICBvdXRwdXRfcGF0aD0kZnVuY19kaXJuYW1lX3Jlc3VsdAorCSAgICBjd3JhcHBlcnNvdXJjZT0iJG91dHB1dF9wYXRoLyRvYmpkaXIvbHQtJG91dHB1dF9uYW1lLmMiCisJICAgIGN3cmFwcGVyPSIkb3V0cHV0X3BhdGgvJG91dHB1dF9uYW1lLmV4ZSIKKwkgICAgJFJNICRjd3JhcHBlcnNvdXJjZSAkY3dyYXBwZXIKKwkgICAgdHJhcCAiJFJNICRjd3JhcHBlcnNvdXJjZSAkY3dyYXBwZXI7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CiAKLQkgICAgY2F0ID4gJGN3cmFwcGVyc291cmNlIDw8RU9GCisJICAgIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgPiAkY3dyYXBwZXJzb3VyY2UKIAotLyogJGN3cmFwcGVyc291cmNlIC0gdGVtcG9yYXJ5IHdyYXBwZXIgZXhlY3V0YWJsZSBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQotICAgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIC0gR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUAorCSAgICAjIFRoZSB3cmFwcGVyIGV4ZWN1dGFibGUgaXMgYnVpbHQgdXNpbmcgdGhlICRob3N0IGNvbXBpbGVyLAorCSAgICAjIGJlY2F1c2UgaXQgY29udGFpbnMgJGhvc3QgcGF0aHMgYW5kIGZpbGVzLiBJZiBjcm9zcy0KKwkgICAgIyBjb21waWxpbmcsIGl0LCBsaWtlIHRoZSB0YXJnZXQgZXhlY3V0YWJsZSwgbXVzdCBiZQorCSAgICAjIGV4ZWN1dGVkIG9uIHRoZSAkaG9zdCBvciB1bmRlciBhbiBlbXVsYXRpb24gZW52aXJvbm1lbnQuCisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1vICRjd3JhcHBlciAkY3dyYXBwZXJzb3VyY2UKKwkgICAgICAkU1RSSVAgJGN3cmFwcGVyCisJICAgIH0KIAotICAgVGhlICRvdXRwdXQgcHJvZ3JhbSBjYW5ub3QgYmUgZGlyZWN0bHkgZXhlY3V0ZWQgdW50aWwgYWxsIHRoZSBsaWJ0b29sCi0gICBsaWJyYXJpZXMgdGhhdCBpdCBkZXBlbmRzIG9uIGFyZSBpbnN0YWxsZWQuCi0KLSAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSAgIElmIGl0IGlzLCBpdCB3aWxsIG5vdCBvcGVyYXRlIGNvcnJlY3RseS4KLQotICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIi9iaW4vc2ggJG91dHB1dCIsCi0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCi0gICBleGVjICRvYmpkaXIvJG91dHB1dG5hbWUgZGlyZWN0bHkuCi0qLwotRU9GCi0JICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2U8PCJFT0YiCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxtYWxsb2MuaD4KLSNpbmNsdWRlIDxzdGRhcmcuaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxjdHlwZS5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0KLSNpZiBkZWZpbmVkKFBBVEhfTUFYKQotIyBkZWZpbmUgTFRfUEFUSE1BWCBQQVRIX01BWAotI2VsaWYgZGVmaW5lZChNQVhQQVRITEVOKQotIyBkZWZpbmUgTFRfUEFUSE1BWCBNQVhQQVRITEVOCi0jZWxzZQotIyBkZWZpbmUgTFRfUEFUSE1BWCAxMDI0Ci0jZW5kaWYKLQotI2lmbmRlZiBESVJfU0VQQVJBVE9SCi0jIGRlZmluZSBESVJfU0VQQVJBVE9SICcvJwotIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCi0jZW5kaWYKLQotI2lmIGRlZmluZWQgKF9XSU4zMikgfHwgZGVmaW5lZCAoX19NU0RPU19fKSB8fCBkZWZpbmVkIChfX0RKR1BQX18pIHx8IFwKLSAgZGVmaW5lZCAoX19PUzJfXykKLSMgZGVmaW5lIEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNCi0jIGlmbmRlZiBESVJfU0VQQVJBVE9SXzIKLSMgIGRlZmluZSBESVJfU0VQQVJBVE9SXzIgJ1xcJwotIyBlbmRpZgotIyBpZm5kZWYgUEFUSF9TRVBBUkFUT1JfMgotIyAgZGVmaW5lIFBBVEhfU0VQQVJBVE9SXzIgJzsnCi0jIGVuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBESVJfU0VQQVJBVE9SXzIKLSMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpICgoY2gpID09IERJUl9TRVBBUkFUT1IpCi0jZWxzZSAvKiBESVJfU0VQQVJBVE9SXzIgKi8KLSMgZGVmaW5lIElTX0RJUl9TRVBBUkFUT1IoY2gpIFwKLSAgICAgICAgKCgoY2gpID09IERJUl9TRVBBUkFUT1IpIHx8ICgoY2gpID09IERJUl9TRVBBUkFUT1JfMikpCi0jZW5kaWYgLyogRElSX1NFUEFSQVRPUl8yICovCi0KLSNpZm5kZWYgUEFUSF9TRVBBUkFUT1JfMgotIyBkZWZpbmUgSVNfUEFUSF9TRVBBUkFUT1IoY2gpICgoY2gpID09IFBBVEhfU0VQQVJBVE9SKQotI2Vsc2UgLyogUEFUSF9TRVBBUkFUT1JfMiAqLwotIyBkZWZpbmUgSVNfUEFUSF9TRVBBUkFUT1IoY2gpICgoY2gpID09IFBBVEhfU0VQQVJBVE9SXzIpCi0jZW5kaWYgLyogUEFUSF9TRVBBUkFUT1JfMiAqLwotCi0jZGVmaW5lIFhNQUxMT0ModHlwZSwgbnVtKSAgICAgICgodHlwZSAqKSB4bWFsbG9jICgobnVtKSAqIHNpemVvZih0eXBlKSkpCi0jZGVmaW5lIFhGUkVFKHN0YWxlKSBkbyB7IFwKLSAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKLX0gd2hpbGUgKDApCi0KLS8qIC1EREVCVUcgaXMgZmFpcmx5IGNvbW1vbiBpbiBDRkxBR1MuICAqLwotI3VuZGVmIERFQlVHCi0jaWYgZGVmaW5lZCBERUJVR1dSQVBQRVIKLSMgZGVmaW5lIERFQlVHKGZvcm1hdCwgLi4uKSBmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBfX1ZBX0FSR1NfXykKLSNlbHNlCi0jIGRlZmluZSBERUJVRyhmb3JtYXQsIC4uLikKLSNlbmRpZgotCi1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOwotCi12b2lkICogeG1hbGxvYyAoc2l6ZV90IG51bSk7Ci1jaGFyICogeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKLWNvbnN0IGNoYXIgKiBiYXNlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpOwotY2hhciAqIGZpbmRfZXhlY3V0YWJsZShjb25zdCBjaGFyICp3cmFwcGVyKTsKLWludCAgICBjaGVja19leGVjdXRhYmxlKGNvbnN0IGNoYXIgKnBhdGgpOwotY2hhciAqIHN0cmVuZHphcChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Ci12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwotCi1pbnQKLW1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCi17Ci0gIGNoYXIgKipuZXdhcmd6OwotICBpbnQgaTsKLQotICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLSAgREVCVUcoIihtYWluKSBhcmd2WzBdICAgICAgOiAlc1xuIixhcmd2WzBdKTsKLSAgREVCVUcoIihtYWluKSBwcm9ncmFtX25hbWUgOiAlc1xuIixwcm9ncmFtX25hbWUpOwotICBuZXdhcmd6ID0gWE1BTExPQyhjaGFyICosIGFyZ2MrMik7Ci1FT0YKLQotICAgICAgICAgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PEVPRgotICBuZXdhcmd6WzBdID0gKGNoYXIgKikgeHN0cmR1cCgiJFNIRUxMIik7Ci1FT0YKLQotICAgICAgICAgICAgY2F0ID4+ICRjd3JhcHBlcnNvdXJjZSA8PCJFT0YiCi0gIG5ld2FyZ3pbMV0gPSBmaW5kX2V4ZWN1dGFibGUoYXJndlswXSk7Ci0gIGlmIChuZXdhcmd6WzFdID09IE5VTEwpCi0gICAgbHRfZmF0YWwoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSAgREVCVUcoIihtYWluKSBmb3VuZCBleGUgYXQgOiAlc1xuIixuZXdhcmd6WzFdKTsKLSAgLyogd2Uga25vdyB0aGUgc2NyaXB0IGhhcyB0aGUgc2FtZSBuYW1lLCB3aXRob3V0IHRoZSAuZXhlICovCi0gIC8qIHNvIG1ha2Ugc3VyZSBuZXdhcmd6WzFdIGRvZXNuJ3QgZW5kIGluIC5leGUgKi8KLSAgc3RyZW5kemFwKG5ld2FyZ3pbMV0sIi5leGUiKTsKLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKLSAgICBuZXdhcmd6W2krMV0gPSB4c3RyZHVwKGFyZ3ZbaV0pOwotICBuZXdhcmd6W2FyZ2MrMV0gPSBOVUxMOwotCi0gIGZvciAoaT0wOyBpPGFyZ2MrMTsgaSsrKQotICB7Ci0gICAgREVCVUcoIihtYWluKSBuZXdhcmd6WyVkXSAgIDogJXNcbiIsaSxuZXdhcmd6W2ldKTsKLSAgICA7Ci0gIH0KLQotRU9GCi0KLSAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgICAgICAgICAgbWluZ3cqKQotICAgICAgICAgICAgICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2UgPDxFT0YKLSAgZXhlY3YoIiRTSEVMTCIsKGNoYXIgY29uc3QgKiopbmV3YXJneik7Ci1FT0YKLSAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICAgKikKLSAgICAgICAgICAgICAgICBjYXQgPj4gJGN3cmFwcGVyc291cmNlIDw8RU9GCi0gIGV4ZWN2KCIkU0hFTEwiLG5ld2FyZ3opOwotRU9GCi0gICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICBlc2FjCi0KLSAgICAgICAgICAgIGNhdCA+PiAkY3dyYXBwZXJzb3VyY2UgPDwiRU9GIgotICByZXR1cm4gMTI3OwotfQotCi12b2lkICoKLXhtYWxsb2MgKHNpemVfdCBudW0pCi17Ci0gIHZvaWQgKiBwID0gKHZvaWQgKikgbWFsbG9jIChudW0pOwotICBpZiAoIXApCi0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7Ci0KLSAgcmV0dXJuIHA7Ci19Ci0KLWNoYXIgKgoteHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKQotewotICByZXR1cm4gc3RyaW5nID8gc3RyY3B5ICgoY2hhciAqKSB4bWFsbG9jIChzdHJsZW4gKHN0cmluZykgKyAxKSwgc3RyaW5nKSA6IE5VTEwKLTsKLX0KLQotY29uc3QgY2hhciAqCi1iYXNlX25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCi17Ci0gIGNvbnN0IGNoYXIgKmJhc2U7Ci0KLSNpZiBkZWZpbmVkIChIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTSkKLSAgLyogU2tpcCBvdmVyIHRoZSBkaXNrIG5hbWUgaW4gTVNET1MgcGF0aG5hbWVzLiAqLwotICBpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpbmFtZVswXSkgJiYgbmFtZVsxXSA9PSAnOicpCi0gICAgbmFtZSArPSAyOwotI2VuZGlmCi0KLSAgZm9yIChiYXNlID0gbmFtZTsgKm5hbWU7IG5hbWUrKykKLSAgICBpZiAoSVNfRElSX1NFUEFSQVRPUiAoKm5hbWUpKQotICAgICAgYmFzZSA9IG5hbWUgKyAxOwotICByZXR1cm4gYmFzZTsKLX0KLQotaW50Ci1jaGVja19leGVjdXRhYmxlKGNvbnN0IGNoYXIgKiBwYXRoKQotewotICBzdHJ1Y3Qgc3RhdCBzdDsKLQotICBERUJVRygiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLCBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpOwotICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKLSAgICByZXR1cm4gMDsKLQotICBpZiAoKHN0YXQgKHBhdGgsICZzdCkgPj0gMCkgJiYKLSAgICAgICgKLSAgICAgICAgLyogTWluR1cgJiBuYXRpdmUgV0lOMzIgZG8gbm90IHN1cHBvcnQgU19JWE9USCBvciBTX0lYR1JQICovCi0jaWYgZGVmaW5lZCAoU19JWE9USCkKLSAgICAgICAoKHN0LnN0X21vZGUgJiBTX0lYT1RIKSA9PSBTX0lYT1RIKSB8fAotI2VuZGlmCi0jaWYgZGVmaW5lZCAoU19JWEdSUCkKLSAgICAgICAoKHN0LnN0X21vZGUgJiBTX0lYR1JQKSA9PSBTX0lYR1JQKSB8fAotI2VuZGlmCi0gICAgICAgKChzdC5zdF9tb2RlICYgU19JWFVTUikgPT0gU19JWFVTUikpCi0gICAgICApCi0gICAgcmV0dXJuIDE7Ci0gIGVsc2UKLSAgICByZXR1cm4gMDsKLX0KLQotLyogU2VhcmNoZXMgZm9yIHRoZSBmdWxsIHBhdGggb2YgdGhlIHdyYXBwZXIuICBSZXR1cm5zCi0gICBuZXdseSBhbGxvY2F0ZWQgZnVsbCBwYXRoIG5hbWUgaWYgZm91bmQsIE5VTEwgb3RoZXJ3aXNlICovCi1jaGFyICoKLWZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciogd3JhcHBlcikKLXsKLSAgaW50IGhhc19zbGFzaCA9IDA7Ci0gIGNvbnN0IGNoYXIqIHA7Ci0gIGNvbnN0IGNoYXIqIHBfbmV4dDsKLSAgLyogc3RhdGljIGJ1ZmZlciBmb3IgZ2V0Y3dkICovCi0gIGNoYXIgdG1wW0xUX1BBVEhNQVggKyAxXTsKLSAgaW50IHRtcF9sZW47Ci0gIGNoYXIqIGNvbmNhdF9uYW1lOwotCi0gIERFQlVHKCIoZmluZF9leGVjdXRhYmxlKSAgOiAlc1xuIiwgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKTsKLQotICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQotICAgIHJldHVybiBOVUxMOwotCi0gIC8qIEFic29sdXRlIHBhdGg/ICovCi0jaWYgZGVmaW5lZCAoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0pCi0gIGlmIChpc2FscGhhICgodW5zaWduZWQgY2hhcil3cmFwcGVyWzBdKSAmJiB3cmFwcGVyWzFdID09ICc6JykKLSAgewotICAgIGNvbmNhdF9uYW1lID0geHN0cmR1cCAod3JhcHBlcik7Ci0gICAgaWYgKGNoZWNrX2V4ZWN1dGFibGUoY29uY2F0X25hbWUpKQotICAgICAgcmV0dXJuIGNvbmNhdF9uYW1lOwotICAgIFhGUkVFKGNvbmNhdF9uYW1lKTsKLSAgfQotICBlbHNlCi0gIHsKLSNlbmRpZgotICAgIGlmIChJU19ESVJfU0VQQVJBVE9SICh3cmFwcGVyWzBdKSkKLSAgICB7Ci0gICAgICBjb25jYXRfbmFtZSA9IHhzdHJkdXAgKHdyYXBwZXIpOwotICAgICAgaWYgKGNoZWNrX2V4ZWN1dGFibGUoY29uY2F0X25hbWUpKQotICAgICAgICByZXR1cm4gY29uY2F0X25hbWU7Ci0gICAgICBYRlJFRShjb25jYXRfbmFtZSk7Ci0gICAgfQotI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQotICB9Ci0jZW5kaWYKLQotICBmb3IgKHAgPSB3cmFwcGVyOyAqcDsgcCsrKQotICAgIGlmICgqcCA9PSAnLycpCi0gICAgewotICAgICAgaGFzX3NsYXNoID0gMTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgaWYgKCFoYXNfc2xhc2gpCi0gIHsKLSAgICAvKiBubyBzbGFzaGVzOyBzZWFyY2ggUEFUSCAqLwotICAgIGNvbnN0IGNoYXIqIHBhdGggPSBnZXRlbnYgKCJQQVRIIik7Ci0gICAgaWYgKHBhdGggIT0gTlVMTCkKLSAgICB7Ci0gICAgICBmb3IgKHAgPSBwYXRoOyAqcDsgcCA9IHBfbmV4dCkKLSAgICAgIHsKLSAgICAgICAgY29uc3QgY2hhciogcTsKLSAgICAgICAgc2l6ZV90IHBfbGVuOwotICAgICAgICBmb3IgKHEgPSBwOyAqcTsgcSsrKQotICAgICAgICAgIGlmIChJU19QQVRIX1NFUEFSQVRPUigqcSkpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgcF9sZW4gPSBxIC0gcDsKLSAgICAgICAgcF9uZXh0ID0gKCpxID09ICdcMCcgPyBxIDogcSArIDEpOwotICAgICAgICBpZiAocF9sZW4gPT0gMCkKLSAgICAgICAgewotICAgICAgICAgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCi0gICAgICAgICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotICAgICAgICAgICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0gICAgICAgICAgdG1wX2xlbiA9IHN0cmxlbih0bXApOwotICAgICAgICAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyhjaGFyLCB0bXBfbGVuICsgMSArIHN0cmxlbih3cmFwcGVyKSArIDEpOwotICAgICAgICAgIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7Ci0gICAgICAgICAgY29uY2F0X25hbWVbdG1wX2xlbl0gPSAnLyc7Ci0gICAgICAgICAgc3RyY3B5IChjb25jYXRfbmFtZSArIHRtcF9sZW4gKyAxLCB3cmFwcGVyKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICBjb25jYXRfbmFtZSA9IFhNQUxMT0MoY2hhciwgcF9sZW4gKyAxICsgc3RybGVuKHdyYXBwZXIpICsgMSk7Ci0gICAgICAgICAgbWVtY3B5IChjb25jYXRfbmFtZSwgcCwgcF9sZW4pOwotICAgICAgICAgIGNvbmNhdF9uYW1lW3BfbGVuXSA9ICcvJzsKLSAgICAgICAgICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgcF9sZW4gKyAxLCB3cmFwcGVyKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY2hlY2tfZXhlY3V0YWJsZShjb25jYXRfbmFtZSkpCi0gICAgICAgICAgcmV0dXJuIGNvbmNhdF9uYW1lOwotICAgICAgICBYRlJFRShjb25jYXRfbmFtZSk7Ci0gICAgICB9Ci0gICAgfQotICAgIC8qIG5vdCBmb3VuZCBpbiBQQVRIOyBhc3N1bWUgY3VyZGlyICovCi0gIH0KLSAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLwotICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCi0gICAgbHRfZmF0YWwgKCJnZXRjd2QgZmFpbGVkIik7Ci0gIHRtcF9sZW4gPSBzdHJsZW4odG1wKTsKLSAgY29uY2F0X25hbWUgPSBYTUFMTE9DKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuKHdyYXBwZXIpICsgMSk7Ci0gIG1lbWNweSAoY29uY2F0X25hbWUsIHRtcCwgdG1wX2xlbik7Ci0gIGNvbmNhdF9uYW1lW3RtcF9sZW5dID0gJy8nOwotICBzdHJjcHkgKGNvbmNhdF9uYW1lICsgdG1wX2xlbiArIDEsIHdyYXBwZXIpOwotCi0gIGlmIChjaGVja19leGVjdXRhYmxlKGNvbmNhdF9uYW1lKSkKLSAgICByZXR1cm4gY29uY2F0X25hbWU7Ci0gIFhGUkVFKGNvbmNhdF9uYW1lKTsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLWNoYXIgKgotc3RyZW5kemFwKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQotewotICBzaXplX3QgbGVuLCBwYXRsZW47Ci0KLSAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKLSAgYXNzZXJ0KHBhdCAhPSBOVUxMKTsKLQotICBsZW4gPSBzdHJsZW4oc3RyKTsKLSAgcGF0bGVuID0gc3RybGVuKHBhdCk7Ci0KLSAgaWYgKHBhdGxlbiA8PSBsZW4pCi0gIHsKLSAgICBzdHIgKz0gbGVuIC0gcGF0bGVuOwotICAgIGlmIChzdHJjbXAoc3RyLCBwYXQpID09IDApCi0gICAgICAqc3RyID0gJ1wwJzsKLSAgfQotICByZXR1cm4gc3RyOwotfQotCi1zdGF0aWMgdm9pZAotbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICogbW9kZSwKLSAgICAgICAgICBjb25zdCBjaGFyICogbWVzc2FnZSwgdmFfbGlzdCBhcCkKLXsKLSAgZnByaW50ZiAoc3RkZXJyLCAiJXM6ICVzOiAiLCBwcm9ncmFtX25hbWUsIG1vZGUpOwotICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7Ci0gIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOwotCi0gIGlmIChleGl0X3N0YXR1cyA+PSAwKQotICAgIGV4aXQgKGV4aXRfc3RhdHVzKTsKLX0KLQotdm9pZAotbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKLXsKLSAgdmFfbGlzdCBhcDsKLSAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKLSAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7Ci0gIHZhX2VuZCAoYXApOwotfQotRU9GCi0gICAgICAgICAgIyB3ZSBzaG91bGQgcmVhbGx5IHVzZSBhIGJ1aWxkLXBsYXRmb3JtIHNwZWNpZmljIGNvbXBpbGVyCi0gICAgICAgICAgIyBoZXJlLCBidXQgT1RPSCwgdGhlIHdyYXBwZXJzIChzaGVsbCBzY3JpcHQgYW5kIHRoaXMgQyBvbmUpCi0gICAgICAgICAgIyBhcmUgb25seSB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZXhlY3V0ZSB0aGUgInJlYWwiIGJpbmFyeS4KLSAgICAgICAgICAjIFNpbmNlIHRoZSAicmVhbCIgYmluYXJ5IGlzIGJ1aWx0IGZvciAkaG9zdCwgdGhlbiB0aGlzCi0gICAgICAgICAgIyB3cmFwcGVyIG1pZ2h0IGFzIHdlbGwgYmUgYnVpbHQgZm9yICRob3N0LCB0b28uCi0gICAgICAgICAgJHJ1biAkTFRDQyAkTFRDRkxBR1MgLXMgLW8gJGN3cmFwcGVyICRjd3JhcHBlcnNvdXJjZQotICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgICAgJHJtICRvdXRwdXQKLSAgICAgICAgdHJhcCAiJHJtICRvdXRwdXQ7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1Ci0KLQkkZWNobyA+ICRvdXRwdXQgIlwKLSMhICRTSEVMTAotCi0jICRvdXRwdXQgLSB0ZW1wb3Jhcnkgd3JhcHBlciBzY3JpcHQgZm9yICRvYmpkaXIvJG91dHB1dG5hbWUKLSMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIC0gR05VICRQQUNLQUdFICRWRVJTSU9OJFRJTUVTVEFNUAotIwotIyBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKLSMgbGlicmFyaWVzIHRoYXQgaXQgZGVwZW5kcyBvbiBhcmUgaW5zdGFsbGVkLgotIwotIyBUaGlzIHdyYXBwZXIgc2NyaXB0IHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLSMgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgotCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCi0jIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgotWHNlZD0nJHtTRUR9IC1lIDFzL15YLy8nCi1zZWRfcXVvdGVfc3Vic3Q9JyRzZWRfcXVvdGVfc3Vic3QnCi0KLSMgQmUgQm91cm5lIGNvbXBhdGlibGUgKHRha2VuIGZyb20gQXV0b2NvbmY6X0FTX0JPVVJORV9DT01QQVRJQkxFKS4KLWlmIHRlc3QgLW4gXCJcJHtaU0hfVkVSU0lPTitzZXR9XCIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotICBlbXVsYXRlIHNoCi0gIE5VTExDTUQ9OgotICAjIFpzaCAzLnggYW5kIDQueCBwZXJmb3JtcyB3b3JkIHNwbGl0dGluZyBvbiBcJHsxK1wiXCRAXCJ9LCB3aGljaAotICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgotICBhbGlhcyAtZyAnXCR7MStcIlwkQFwifSc9J1wiXCRAXCInCi0gIHNldG9wdCBOT19HTE9CX1NVQlNUCi1lbHNlCi0gIGNhc2UgXGAoc2V0IC1vKSAyPi9kZXYvbnVsbFxgIGluICpwb3NpeCopIHNldCAtbyBwb3NpeDs7IGVzYWMKLWZpCi1CSU5fU0g9eHBnNDsgZXhwb3J0IEJJTl9TSCAjIGZvciBUcnU2NAotRFVBTENBU0U9MTsgZXhwb3J0IERVQUxDQVNFICMgZm9yIE1LUyBzaAotCi0jIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAotIyBpZiBDRFBBVEggaXMgc2V0LgotKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAotCi1yZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiCi0KLSMgVGhpcyBlbnZpcm9ubWVudCB2YXJpYWJsZSBkZXRlcm1pbmVzIG91ciBvcGVyYXRpb24gbW9kZS4KLWlmIHRlc3QgXCJcJGxpYnRvb2xfaW5zdGFsbF9tYWdpY1wiID0gXCIkbWFnaWNcIjsgdGhlbgotICAjIGluc3RhbGwgbW9kZSBuZWVkcyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlOgotICBub3RpbnN0X2RlcGxpYnM9JyRub3RpbnN0X2RlcGxpYnMnCi1lbHNlCi0gICMgV2hlbiB3ZSBhcmUgc291cmNlZCBpbiBleGVjdXRlIG1vZGUsIFwkZmlsZSBhbmQgXCRlY2hvIGFyZSBhbHJlYWR5IHNldC4KLSAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgotICAgIGVjaG89XCIkcWVjaG9cIgotICAgIGZpbGU9XCJcJDBcIgotICAgICMgTWFrZSBzdXJlIGVjaG8gd29ya3MuCi0gICAgaWYgdGVzdCBcIlhcJDFcIiA9IFgtLW5vLXJlZXhlYzsgdGhlbgotICAgICAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCi0gICAgICBzaGlmdAotICAgIGVsaWYgdGVzdCBcIlhcYChcJGVjaG8gJ1x0JykgMj4vZGV2L251bGxcYFwiID0gJ1hcdCc7IHRoZW4KLSAgICAgICMgWWlwcGVlLCBcJGVjaG8gd29ya3MhCi0gICAgICA6Ci0gICAgZWxzZQotICAgICAgIyBSZXN0YXJ0IHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLCBhbmQgdGhlbiBtYXliZSBcJGVjaG8gd2lsbCB3b3JrLgotICAgICAgZXhlYyAkU0hFTEwgXCJcJDBcIiAtLW5vLXJlZXhlYyBcJHsxK1wiXCRAXCJ9Ci0gICAgZmkKLSAgZmlcCi0iCi0JJGVjaG8gPj4gJG91dHB1dCAiXAotCi0gICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCi0gIHRoaXNkaXI9XGBcJGVjaG8gXCJYXCRmaWxlXCIgfCBcJFhzZWQgLWUgJ3MlL1teL10qJCUlJ1xgCi0gIHRlc3QgXCJ4XCR0aGlzZGlyXCIgPSBcInhcJGZpbGVcIiAmJiB0aGlzZGlyPS4KLQotICAjIEZvbGxvdyBzeW1ib2xpYyBsaW5rcyB1bnRpbCB3ZSBnZXQgdG8gdGhlIHJlYWwgdGhpc2Rpci4KLSAgZmlsZT1cYGxzIC1sZCBcIlwkZmlsZVwiIHwgJHtTRUR9IC1uICdzLy4qLT4gLy9wJ1xgCi0gIHdoaWxlIHRlc3QgLW4gXCJcJGZpbGVcIjsgZG8KLSAgICBkZXN0ZGlyPVxgXCRlY2hvIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJS9bXi9dKlwkJSUnXGAKLQotICAgICMgSWYgdGhlcmUgd2FzIGEgZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBjaGFuZ2UgdGhpc2Rpci4KLSAgICBpZiB0ZXN0IFwieFwkZGVzdGRpclwiICE9IFwieFwkZmlsZVwiOyB0aGVuCi0gICAgICBjYXNlIFwiXCRkZXN0ZGlyXCIgaW4KLSAgICAgIFtcXFxcL10qIHwgW0EtWmEtel06W1xcXFwvXSopIHRoaXNkaXI9XCJcJGRlc3RkaXJcIiA7OwotICAgICAgKikgdGhpc2Rpcj1cIlwkdGhpc2Rpci9cJGRlc3RkaXJcIiA7OwotICAgICAgZXNhYwotICAgIGZpCi0KLSAgICBmaWxlPVxgXCRlY2hvIFwiWFwkZmlsZVwiIHwgXCRYc2VkIC1lICdzJV4uKi8lJSdcYAotICAgIGZpbGU9XGBscyAtbGQgXCJcJHRoaXNkaXIvXCRmaWxlXCIgfCAke1NFRH0gLW4gJ3MvLiotPiAvL3AnXGAKLSAgZG9uZQotCi0gICMgVHJ5IHRvIGdldCB0aGUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUuCi0gIGFic2Rpcj1cYGNkIFwiXCR0aGlzZGlyXCIgJiYgcHdkXGAKLSAgdGVzdCAtbiBcIlwkYWJzZGlyXCIgJiYgdGhpc2Rpcj1cIlwkYWJzZGlyXCIKLSIKLQotCWlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAkZWNobyA+PiAkb3V0cHV0ICJcCi0gIHByb2dyYW09bHQtJyRvdXRwdXRuYW1lJyRleGVleHQKLSAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKLQotICBpZiB0ZXN0ICEgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgfHwgXFwKLSAgICAgeyBmaWxlPVxgbHMgLTFkdCBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcIlwkcHJvZ2Rpci8uLi9cJHByb2dyYW1cIiAyPi9kZXYvbnVsbCB8ICR7U0VEfSAxcVxgOyBcXAotICAgICAgIHRlc3QgXCJYXCRmaWxlXCIgIT0gXCJYXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB9OyB0aGVuCi0KLSAgICBmaWxlPVwiXCRcJC1cJHByb2dyYW1cIgotCi0gICAgaWYgdGVzdCAhIC1kIFwiXCRwcm9nZGlyXCI7IHRoZW4KLSAgICAgICRta2RpciBcIlwkcHJvZ2RpclwiCi0gICAgZWxzZQotICAgICAgJHJtIFwiXCRwcm9nZGlyL1wkZmlsZVwiCi0gICAgZmkiCi0KLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLQotICAgICMgcmVsaW5rIGV4ZWN1dGFibGUgaWYgbmVjZXNzYXJ5Ci0gICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgotICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6Ci0gICAgICBlbHNlCi0JJGVjaG8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgotCSRybSBcIlwkcHJvZ2Rpci9cJGZpbGVcIgotCWV4aXQgJEVYSVRfRkFJTFVSRQotICAgICAgZmkKLSAgICBmaQotCi0gICAgJG12IFwiXCRwcm9nZGlyL1wkZmlsZVwiIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDI+L2Rldi9udWxsIHx8Ci0gICAgeyAkcm0gXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7Ci0gICAgICAkbXYgXCJcJHByb2dkaXIvXCRmaWxlXCIgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IH0KLSAgICAkcm0gXCJcJHByb2dkaXIvXCRmaWxlXCIKLSAgZmkiCi0JZWxzZQotCSAgJGVjaG8gPj4gJG91dHB1dCAiXAotICBwcm9ncmFtPSckb3V0cHV0bmFtZScKLSAgcHJvZ2Rpcj1cIlwkdGhpc2Rpci8kb2JqZGlyXCIKLSIKLQlmaQotCi0JJGVjaG8gPj4gJG91dHB1dCAiXAotCi0gIGlmIHRlc3QgLWYgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCI7IHRoZW4iCi0KLQkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KLQlpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCi0JICAkZWNobyA+PiAkb3V0cHV0ICJcCi0gICAgIyBBZGQgb3VyIG93biBsaWJyYXJ5IHBhdGggdG8gJHNobGlicGF0aF92YXIKLSAgICAkc2hsaWJwYXRoX3Zhcj1cIiR0ZW1wX3JwYXRoXCQkc2hsaWJwYXRoX3ZhclwiCi0KLSAgICAjIFNvbWUgc3lzdGVtcyBjYW5ub3QgY29wZSB3aXRoIGNvbG9uLXRlcm1pbmF0ZWQgJHNobGlicGF0aF92YXIKLSAgICAjIFRoZSBzZWNvbmQgY29sb24gaXMgYSB3b3JrYXJvdW5kIGZvciBhIGJ1ZyBpbiBCZU9TIFI0IHNlZAotICAgICRzaGxpYnBhdGhfdmFyPVxgXCRlY2hvIFwiWFwkJHNobGlicGF0aF92YXJcIiB8IFwkWHNlZCAtZSAncy86OipcJC8vJ1xgCi0KLSAgICBleHBvcnQgJHNobGlicGF0aF92YXIKLSIKLQlmaQotCi0JIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICi0iCi0JZmkKLQotCSRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCi0gICAgICAjIFJ1biB0aGUgYWN0dWFsIHByb2dyYW0gd2l0aCBvdXIgYXJndW1lbnRzLgotIgotCWNhc2UgJGhvc3QgaW4KLQkjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLQkqLSotbWluZ3cgfCAqLSotb3MyKikKLQkgICRlY2hvID4+ICRvdXRwdXQgIlwKLSAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotIgorCSAgICAjIE5vdywgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdCBmb3IgZnVuY19zb3VyY2UgdXNlOgorCSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICRjd3JhcHBlcgorCSAgICAkUk0gJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CisJICAgIHRyYXAgIiRSTSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CisJICAgICRvcHRfZHJ5X3J1biB8fCB7CisJICAgICAgIyBub3RlOiB0aGlzIHNjcmlwdCB3aWxsIG5vdCBiZSBleGVjdXRlZCwgc28gZG8gbm90IGNobW9kLgorCSAgICAgIGlmIHRlc3QgIngkYnVpbGQiID0gIngkaG9zdCIgOyB0aGVuCisJCSRjd3JhcHBlciAtLWx0LWR1bXAtc2NyaXB0ID4gJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CisJICAgICAgZWxzZQorCQlmdW5jX2VtaXRfd3JhcHBlciBubyA+ICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAorCSAgICAgIGZpCisJICAgIH0KIAkgIDs7CisJICAqICkKKwkgICAgJFJNICRvdXRwdXQKKwkgICAgdHJhcCAiJFJNICRvdXRwdXQ7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CiAKLQkqKQotCSAgJGVjaG8gPj4gJG91dHB1dCAiXAotICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0iCisJICAgIGZ1bmNfZW1pdF93cmFwcGVyIG5vID4gJG91dHB1dAorCSAgICBjaG1vZCAreCAkb3V0cHV0CiAJICA7OwogCWVzYWMKLQkkZWNobyA+PiAkb3V0cHV0ICJcCi0gICAgICBcJGVjaG8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLSAgZWxzZQotICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KLSAgICBcJGVjaG8gXCJcJDA6IGVycm9yOiBcXFxgXCRwcm9nZGlyL1wkcHJvZ3JhbScgZG9lcyBub3QgZXhpc3RcIiAxPiYyCi0gICAgXCRlY2hvIFwiVGhpcyBzY3JpcHQgaXMganVzdCBhIHdyYXBwZXIgZm9yIFwkcHJvZ3JhbS5cIiAxPiYyCi0gICAgJGVjaG8gXCJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgotICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICBmaQotZmlcCi0iCi0JY2htb2QgK3ggJG91dHB1dAotICAgICAgZmkKKyAgICAgIH0KICAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgOzsKICAgICBlc2FjCkBAIC01NTA2LDcgKzc4NzQsNyBAQAogICAgIGZvciBvbGRsaWIgaW4gJG9sZGxpYnM7IGRvCiAKICAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gY29udmVuaWVuY2U7IHRoZW4KLQlvbGRvYmpzPSIkbGlib2Jqc19zYXZlIgorCW9sZG9ianM9IiRsaWJvYmpzX3NhdmUgJHN5bWZpbGVvYmoiCiAJYWRkbGlicz0iJGNvbnZlbmllbmNlIgogCWJ1aWxkX2xpYnRvb2xfbGlicz1ubwogICAgICAgZWxzZQpAQCAtNTUxNSw2ICs3ODgzLDkgQEAKIAkgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwogCWVsc2UKIAkgIG9sZG9ianM9IiRvbGRfZGVwbGlicyAkbm9uX3BpY19vYmplY3RzIgorCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgorCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKKwkgIGZpCiAJZmkKIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgogICAgICAgZmkKQEAgLTU1MjksOCArNzkwMCwxOCBAQAogCiAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KICAgICAgIGlmIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzIiAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgotICAgICAgIGNtZHM9JG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMKKwljbWRzPSRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzCiAgICAgICBlbHNlCisKKwkjIEFkZCBhbnkgb2JqZWN0cyBmcm9tIHByZWxvYWRlZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMKKwlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KKwkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKworCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKKwkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorCWZpCisKIAkjIFBPU0lYIGRlbWFuZHMgbm8gcGF0aHMgdG8gYmUgZW5jb2RlZCBpbiBhcmNoaXZlcy4gIFdlIGhhdmUKIAkjIHRvIGF2b2lkIGNyZWF0aW5nIGFyY2hpdmVzIHdpdGggZHVwbGljYXRlIGJhc2VuYW1lcyBpZiB3ZQogCSMgbWlnaHQgaGF2ZSB0byBleHRyYWN0IHRoZW0gYWZ0ZXJ3YXJkcywgZS5nLiwgd2hlbiBjcmVhdGluZyBhCkBAIC01NTM5LDMyICs3OTIwLDIyIEBACiAJIyBub3Qgc3VwcG9ydGVkIGJ5IGxpYnRvb2wpLgogCWlmIChmb3Igb2JqIGluICRvbGRvYmpzCiAJICAgIGRvCi0JICAgICAgJGVjaG8gIlgkb2JqIiB8ICRYc2VkIC1lICdzJV4uKi8lJScKKwkgICAgICBmdW5jX2Jhc2VuYW1lICIkb2JqIgorCSAgICAgICRFQ0hPICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgIGRvbmUgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgogCSAgOgogCWVsc2UKLQkgICRlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCi0KLQkgIGlmIHRlc3QgLXogIiRnZW50b3AiOyB0aGVuCi0JICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0JICAgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotCi0JICAgICRzaG93ICIke3JtfXIgJGdlbnRvcCIKLQkgICAgJHJ1biAke3JtfXIgIiRnZW50b3AiCi0JICAgICRzaG93ICIkbWtkaXIgJGdlbnRvcCIKLQkgICAgJHJ1biAkbWtkaXIgIiRnZW50b3AiCi0JICAgIGV4aXRfc3RhdHVzPSQ/Ci0JICAgIGlmIHRlc3QgIiRleGl0X3N0YXR1cyIgLW5lIDAgJiYgdGVzdCAhIC1kICIkZ2VudG9wIjsgdGhlbgotCSAgICAgIGV4aXQgJGV4aXRfc3RhdHVzCi0JICAgIGZpCi0JICBmaQotCisJICAkRUNITyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgorCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKwkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorCSAgZnVuY19ta2Rpcl9wICIkZ2VudG9wIgogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCiAJICBvbGRvYmpzPQogCSAgY291bnRlcj0xCiAJICBmb3Igb2JqIGluICRzYXZlX29sZG9ianMKIAkgIGRvCi0JICAgIG9iamJhc2U9YCRlY2hvICJYJG9iaiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAorCSAgICBmdW5jX2Jhc2VuYW1lICIkb2JqIgorCSAgICBvYmpiYXNlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCiAJICAgIGNhc2UgIiAkb2xkb2JqcyAiIGluCiAJICAgICIgIikgb2xkb2Jqcz0kb2JqIDs7CiAJICAgICpbXCAvXSIkb2JqYmFzZSAiKikKQEAgLTU1NzIsNTggKzc5NDMsNjIgQEAKIAkJIyBNYWtlIHN1cmUgd2UgZG9uJ3QgcGljayBhbiBhbHRlcm5hdGUgbmFtZSB0aGF0IGFsc28KIAkJIyBvdmVybGFwcy4KIAkJbmV3b2JqPWx0JGNvdW50ZXItJG9iamJhc2UKLQkJY291bnRlcj1gZXhwciAkY291bnRlciArIDFgCisJCWZ1bmNfYXJpdGggJGNvdW50ZXIgKyAxCisJCWNvdW50ZXI9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJCWNhc2UgIiAkb2xkb2JqcyAiIGluCiAJCSpbXCAvXSIkbmV3b2JqICIqKSA7OwogCQkqKSBpZiB0ZXN0ICEgLWYgIiRnZW50b3AvJG5ld29iaiI7IHRoZW4gYnJlYWs7IGZpIDs7CiAJCWVzYWMKIAkgICAgICBkb25lCi0JICAgICAgJHNob3cgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgotCSAgICAgICRydW4gbG4gIiRvYmoiICIkZ2VudG9wLyRuZXdvYmoiIHx8Ci0JICAgICAgJHJ1biBjcCAiJG9iaiIgIiRnZW50b3AvJG5ld29iaiIKKwkgICAgICBmdW5jX3Nob3dfZXZhbCAibG4gJG9iaiAkZ2VudG9wLyRuZXdvYmogfHwgY3AgJG9iaiAkZ2VudG9wLyRuZXdvYmoiCiAJICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgogCSAgICAgIDs7CiAJICAgICopIG9sZG9ianM9IiRvbGRvYmpzICRvYmoiIDs7CiAJICAgIGVzYWMKIAkgIGRvbmUKIAlmaQotCiAJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgogCi0JaWYgbGVuPWBleHByICJYJGNtZHMiIDogIi4qImAgJiYKLQkgICAgIHRlc3QgIiRsZW4iIC1sZSAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorCWZ1bmNfbGVuICIgJGNtZHMiCisJbGVuPSRmdW5jX2xlbl9yZXN1bHQKKwlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KIAkgIGNtZHM9JG9sZF9hcmNoaXZlX2NtZHMKIAllbHNlCiAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cwotCSAgJGVjaG8gInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCiAJICBzYXZlX1JBTkxJQj0kUkFOTElCCiAJICBSQU5MSUI9OgogCSAgb2JqbGlzdD0KIAkgIGNvbmNhdF9jbWRzPQogCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCi0KKwkgIG9sZG9ianM9CiAJICAjIElzIHRoZXJlIGEgYmV0dGVyIHdheSBvZiBmaW5kaW5nIHRoZSBsYXN0IG9iamVjdCBpbiB0aGUgbGlzdD8KIAkgIGZvciBvYmogaW4gJHNhdmVfb2xkb2JqcwogCSAgZG8KIAkgICAgbGFzdF9vbGRvYmo9JG9iagogCSAgZG9uZQorCSAgZXZhbCB0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiCisJICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCisJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKwkgIGxlbj0kbGVuMAogCSAgZm9yIG9iaiBpbiAkc2F2ZV9vbGRvYmpzCiAJICBkbwotCSAgICBvbGRvYmpzPSIkb2JqbGlzdCAkb2JqIgotCSAgICBvYmpsaXN0PSIkb2JqbGlzdCAkb2JqIgotCSAgICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKLQkgICAgaWYgbGVuPWBleHByICJYJHRlc3RfY21kcyIgOiAiLioiIDI+L2Rldi9udWxsYCAmJgotCSAgICAgICB0ZXN0ICIkbGVuIiAtbGUgIiRtYXhfY21kX2xlbiI7IHRoZW4KKwkgICAgZnVuY19sZW4gIiAkb2JqIgorCSAgICBmdW5jX2FyaXRoICRsZW4gKyAkZnVuY19sZW5fcmVzdWx0CisJICAgIGxlbj0kZnVuY19hcml0aF9yZXN1bHQKKwkgICAgZnVuY19hcHBlbmQgb2JqbGlzdCAiICRvYmoiCisJICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIjsgdGhlbgogCSAgICAgIDoKIAkgICAgZWxzZQogCSAgICAgICMgdGhlIGFib3ZlIGNvbW1hbmQgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIGl0IGdldHMgdG9vIGxvbmcKIAkgICAgICBvbGRvYmpzPSRvYmpsaXN0CiAJICAgICAgaWYgdGVzdCAiJG9iaiIgPSAiJGxhc3Rfb2xkb2JqIiA7IHRoZW4KLQkgICAgICAgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKKwkJUkFOTElCPSRzYXZlX1JBTkxJQgogCSAgICAgIGZpCiAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CiAJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKIAkgICAgICBvYmpsaXN0PQorCSAgICAgIGxlbj0kbGVuMAogCSAgICBmaQogCSAgZG9uZQogCSAgUkFOTElCPSRzYXZlX1JBTkxJQgpAQCAtNTYzNSw0OSArODAxMCwzOSBAQAogCSAgZmkKIAlmaQogICAgICAgZmkKLSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotICAgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KLSAgICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKLQlJRlM9IiRzYXZlX2lmcyIKLQkkc2hvdyAiJGNtZCIKLQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLSAgICAgIGRvbmUKLSAgICAgIElGUz0iJHNhdmVfaWZzIgorICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRjbWRzIiAnZXhpdCAkPycKICAgICBkb25lCiAKLSAgICBpZiB0ZXN0IC1uICIkZ2VuZXJhdGVkIjsgdGhlbgotICAgICAgJHNob3cgIiR7cm19ciRnZW5lcmF0ZWQiCi0gICAgICAkcnVuICR7cm19ciRnZW5lcmF0ZWQKLSAgICBmaQorICAgIHRlc3QgLW4gIiRnZW5lcmF0ZWQiICYmIFwKKyAgICAgIGZ1bmNfc2hvd19ldmFsICIke1JNfXIkZ2VuZXJhdGVkIgogCiAgICAgIyBOb3cgY3JlYXRlIHRoZSBsaWJ0b29sIGFyY2hpdmUuCiAgICAgY2FzZSAkb3V0cHV0IGluCiAgICAgKi5sYSkKICAgICAgIG9sZF9saWJyYXJ5PQogICAgICAgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllcyAmJiBvbGRfbGlicmFyeT0iJGxpYm5hbWUuJGxpYmV4dCIKLSAgICAgICRzaG93ICJjcmVhdGluZyAkb3V0cHV0IgorICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgogCiAgICAgICAjIFByZXNlcnZlIGFueSB2YXJpYWJsZXMgdGhhdCBtYXkgYWZmZWN0IGNvbXBpbGVyIGJlaGF2aW9yCiAgICAgICBmb3IgdmFyIGluICR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluazsgZG8KIAlpZiBldmFsIHRlc3QgLXogXCJcJHskdmFyK3NldH1cIjsgdGhlbgotCSAgcmVsaW5rX2NvbW1hbmQ9InsgdGVzdCAteiBcIlwkeyR2YXIrc2V0fVwiIHx8IHVuc2V0ICR2YXIgfHwgeyAkdmFyPTsgZXhwb3J0ICR2YXI7IH07IH07ICRyZWxpbmtfY29tbWFuZCIKKwkgIHJlbGlua19jb21tYW5kPSJ7IHRlc3QgLXogXCJcJHskdmFyK3NldH1cIiB8fCAkbHRfdW5zZXQgJHZhciB8fCB7ICR2YXI9OyBleHBvcnQgJHZhcjsgfTsgfTsgJHJlbGlua19jb21tYW5kIgogCWVsaWYgZXZhbCB2YXJfdmFsdWU9XCQkdmFyOyB0ZXN0IC16ICIkdmFyX3ZhbHVlIjsgdGhlbgogCSAgcmVsaW5rX2NvbW1hbmQ9IiR2YXI9OyBleHBvcnQgJHZhcjsgJHJlbGlua19jb21tYW5kIgogCWVsc2UKLQkgIHZhcl92YWx1ZT1gJGVjaG8gIlgkdmFyX3ZhbHVlIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLQkgIHJlbGlua19jb21tYW5kPSIkdmFyPVwiJHZhcl92YWx1ZVwiOyBleHBvcnQgJHZhcjsgJHJlbGlua19jb21tYW5kIgorCSAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHZhcl92YWx1ZSIKKwkgIHJlbGlua19jb21tYW5kPSIkdmFyPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdDsgZXhwb3J0ICR2YXI7ICRyZWxpbmtfY29tbWFuZCIKIAlmaQogICAgICAgZG9uZQogICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KICAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKLSAgICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCIgfCAkTkwyU1BgCisgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIlgkcmVsaW5rX2NvbW1hbmQiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAogICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXMgOyB0aGVuCiAJcmVsaW5rX2NvbW1hbmQ9CiAgICAgICBmaQogCi0KICAgICAgICMgT25seSBjcmVhdGUgdGhlIG91dHB1dCBpZiBub3QgYSBkcnkgcnVuLgotICAgICAgaWYgdGVzdCAteiAiJHJ1biI7IHRoZW4KKyAgICAgICRvcHRfZHJ5X3J1biB8fCB7CiAJZm9yIGluc3RhbGxlZCBpbiBubyB5ZXM7IGRvCiAJICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IHllczsgdGhlbgogCSAgICBpZiB0ZXN0IC16ICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCkBAIC01Njg5LDEyICs4MDU0LDExIEBACiAJICAgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICAgICBjYXNlICRkZXBsaWIgaW4KIAkgICAgICAqLmxhKQotCQluYW1lPWAkZWNobyAiWCRkZXBsaWIiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKwkJZnVuY19iYXNlbmFtZSAiJGRlcGxpYiIKKwkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgogCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotCQlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCQkgICRlY2hvICIkbW9kZW5hbWU6IFxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIiAxPiYyCi0JCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JCWZpCisJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKwkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCiAJCTs7CiAJICAgICAgKikgbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRkZXBsaWIiIDs7CkBAIC01NzAyLDI1ICs4MDY2LDM3IEBACiAJICAgIGRvbmUKIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBuZXdkbGZpbGVzPQorCiAJICAgIGZvciBsaWIgaW4gJGRsZmlsZXM7IGRvCi0JICAgICAgbmFtZT1gJGVjaG8gIlgkbGliIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0JICAgICAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKLQkgICAgICBpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgotCQkkZWNobyAiJG1vZGVuYW1lOiBcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIgMT4mMgotCQlleGl0ICRFWElUX0ZBSUxVUkUKLQkgICAgICBmaQotCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisJICAgICAgY2FzZSAkbGliIGluCisJICAgICAgKi5sYSkKKwkgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRsaWIiCisJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKKwkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgorCQk7OworCSAgICAgICopIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWIiIDs7CisJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgogCSAgICBuZXdkbHByZWZpbGVzPQogCSAgICBmb3IgbGliIGluICRkbHByZWZpbGVzOyBkbwotCSAgICAgIG5hbWU9YCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgICAgIGV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCi0JICAgICAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLQkJJGVjaG8gIiRtb2RlbmFtZTogXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkJZXhpdCAkRVhJVF9GQUlMVVJFCi0JICAgICAgZmkKLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkbGliZGlyLyRuYW1lIgorCSAgICAgIGNhc2UgJGxpYiBpbgorCSAgICAgICoubGEpCisJCSMgT25seSBwYXNzIHByZW9wZW5lZCBmaWxlcyB0byB0aGUgcHNldWRvLWFyY2hpdmUgKGZvcgorCQkjIGV2ZW50dWFsIGxpbmtpbmcgd2l0aCB0aGUgYXBwLiB0aGF0IGxpbmtzIGl0KSBpZiB3ZQorCQkjIGRpZG4ndCBhbHJlYWR5IGxpbmsgdGhlIHByZW9wZW5lZCBvYmplY3RzIGRpcmVjdGx5IGludG8KKwkJIyB0aGUgbGlicmFyeToKKwkJZnVuY19iYXNlbmFtZSAiJGxpYiIKKwkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCisJCTs7CisJICAgICAgZXNhYwogCSAgICBkb25lCiAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogCSAgZWxzZQpAQCAtNTc0MywxNSArODExOSwxNSBAQAogCSAgICBkb25lCiAJICAgIGRscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzIgogCSAgZmkKLQkgICRybSAkb3V0cHV0CisJICAkUk0gJG91dHB1dAogCSAgIyBwbGFjZSBkbG5hbWUgaW4gY29ycmVjdCBwb3NpdGlvbiBmb3IgY3lnd2luCiAJICB0ZGxuYW1lPSRkbG5hbWUKIAkgIGNhc2UgJGhvc3QsJG91dHB1dCwkaW5zdGFsbGVkLCRtb2R1bGUsJGRsbmFtZSBpbgotCSAgICAqY3lnd2luKiwqbGFpLHllcyxubywqLmRsbCB8ICptaW5ndyosKmxhaSx5ZXMsbm8sKi5kbGwpIHRkbG5hbWU9Li4vYmluLyRkbG5hbWUgOzsKKwkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkgdGRsbmFtZT0uLi9iaW4vJGRsbmFtZSA7OwogCSAgZXNhYwotCSAgJGVjaG8gPiAkb3V0cHV0ICJcCisJICAkRUNITyA+ICRvdXRwdXQgIlwKICMgJG91dHB1dG5hbWUgLSBhIGxpYnRvb2wgbGlicmFyeSBmaWxlCi0jIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAtIEdOVSAkUEFDS0FHRSAkVkVSU0lPTiRUSU1FU1RBTVAKKyMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgogIwogIyBQbGVhc2UgRE8gTk9UIGRlbGV0ZSB0aGlzIGZpbGUhCiAjIEl0IGlzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyB0aGUgbGlicmFyeS4KQEAgLTU3NjUsOSArODE0MSwxNSBAQAogIyBUaGUgbmFtZSBvZiB0aGUgc3RhdGljIGFyY2hpdmUuCiBvbGRfbGlicmFyeT0nJG9sZF9saWJyYXJ5JwogCisjIExpbmtlciBmbGFncyB0aGF0IGNhbiBub3QgZ28gaW4gZGVwZW5kZW5jeV9saWJzLgoraW5oZXJpdGVkX2xpbmtlcl9mbGFncz0nJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzJworCiAjIExpYnJhcmllcyB0aGF0IHRoaXMgb25lIGRlcGVuZHMgdXBvbi4KIGRlcGVuZGVuY3lfbGlicz0nJGRlcGVuZGVuY3lfbGlicycKIAorIyBOYW1lcyBvZiBhZGRpdGlvbmFsIHdlYWsgbGlicmFyaWVzIHByb3ZpZGVkIGJ5IHRoaXMgbGlicmFyeQord2Vha19saWJyYXJ5X25hbWVzPSckd2Vha19saWJzJworCiAjIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yICRsaWJuYW1lLgogY3VycmVudD0kY3VycmVudAogYWdlPSRhZ2UKQEAgLTU3ODYsNzQ4ICs4MTY4LDI5IEBACiAjIERpcmVjdG9yeSB0aGF0IHRoaXMgbGlicmFyeSBuZWVkcyB0byBiZSBpbnN0YWxsZWQgaW46CiBsaWJkaXI9JyRpbnN0YWxsX2xpYmRpciciCiAJICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vICYmIHRlc3QgIiRuZWVkX3JlbGluayIgPSB5ZXM7IHRoZW4KLQkgICAgJGVjaG8gPj4gJG91dHB1dCAiXAorCSAgICAkRUNITyA+PiAkb3V0cHV0ICJcCiByZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgogCSAgZmkKIAlkb25lCi0gICAgICBmaQorICAgICAgfQogCiAgICAgICAjIERvIGEgc3ltYm9saWMgbGluayBzbyB0aGF0IHRoZSBsaWJ0b29sIGFyY2hpdmUgY2FuIGJlIGZvdW5kIGluCiAgICAgICAjIExEX0xJQlJBUllfUEFUSCBiZWZvcmUgdGhlIHByb2dyYW0gaXMgaW5zdGFsbGVkLgotICAgICAgJHNob3cgIihjZCAkb3V0cHV0X29iamRpciAmJiAkcm0gJG91dHB1dG5hbWUgJiYgJExOX1MgLi4vJG91dHB1dG5hbWUgJG91dHB1dG5hbWUpIgotICAgICAgJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICRvdXRwdXRuYW1lICYmICRMTl9TIC4uLyRvdXRwdXRuYW1lICRvdXRwdXRuYW1lKScgfHwgZXhpdCAkPworICAgICAgZnVuY19zaG93X2V2YWwgJyggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiAkUk0gIiRvdXRwdXRuYW1lIiAmJiAkTE5fUyAiLi4vJG91dHB1dG5hbWUiICIkb3V0cHV0bmFtZSIgKScgJ2V4aXQgJD8nCiAgICAgICA7OwogICAgIGVzYWMKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSAgICA7OworfQogCi0gICMgbGlidG9vbCBpbnN0YWxsIG1vZGUKLSAgaW5zdGFsbCkKLSAgICBtb2RlbmFtZT0iJG1vZGVuYW1lOiBpbnN0YWxsIgoreyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgorICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQogCi0gICAgIyBUaGVyZSBtYXkgYmUgYW4gb3B0aW9uYWwgc2goMSkgYXJndW1lbnQgYXQgdGhlIGJlZ2lubmluZyBvZgotICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgotICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8Ci0gICAgICAgIyBBbGxvdyB0aGUgdXNlIG9mIEdOVSBzaHRvb2wncyBpbnN0YWxsIGNvbW1hbmQuCi0gICAgICAgJGVjaG8gIlgkbm9ub3B0IiB8IGdyZXAgc2h0b29sID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCi0gICAgICBhcmc9YCRlY2hvICJYJG5vbm9wdCIgfCAkWHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0gICAgICBjYXNlICRhcmcgaW4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotCWFyZz0iXCIkYXJnXCIiCi0JOzsKLSAgICAgIGVzYWMKLSAgICAgIGluc3RhbGxfcHJvZz0iJGFyZyAiCi0gICAgICBhcmc9IiQxIgotICAgICAgc2hpZnQKLSAgICBlbHNlCi0gICAgICBpbnN0YWxsX3Byb2c9Ci0gICAgICBhcmc9JG5vbm9wdAotICAgIGZpCiAKLSAgICAjIFRoZSByZWFsIGZpcnN0IGFyZ3VtZW50IHNob3VsZCBiZSB0aGUgbmFtZSBvZiB0aGUgaW5zdGFsbGF0aW9uIHByb2dyYW0uCi0gICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgotICAgIGFyZz1gJGVjaG8gIlgkYXJnIiB8ICRYc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICBjYXNlICRhcmcgaW4KLSAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLSAgICAgIGFyZz0iXCIkYXJnXCIiCi0gICAgICA7OwotICAgIGVzYWMKLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckYXJnIgotCi0gICAgIyBXZSBuZWVkIHRvIGFjY2VwdCBhdCBsZWFzdCBhbGwgdGhlIEJTRCBpbnN0YWxsIGZsYWdzLgotICAgIGRlc3Q9Ci0gICAgZmlsZXM9Ci0gICAgb3B0cz0KLSAgICBwcmV2PQotICAgIGluc3RhbGxfdHlwZT0KLSAgICBpc2Rpcj1ubwotICAgIHN0cmlwbWU9Ci0gICAgZm9yIGFyZwotICAgIGRvCi0gICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KLQlmaWxlcz0iJGZpbGVzICRkZXN0IgotCWRlc3Q9JGFyZwotCWNvbnRpbnVlCi0gICAgICBmaQotCi0gICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKLSAgICAgIC1mKSAKLSAgICAgIAljYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCi0JKltcXFwgL11jcFwgKikgOzsKLQkqKSBwcmV2PSRhcmcgOzsKLQllc2FjCi0JOzsKLSAgICAgIC1nIHwgLW0gfCAtbykgcHJldj0kYXJnIDs7Ci0gICAgICAtcykKLQlzdHJpcG1lPSIgLXMiCi0JY29udGludWUKLQk7OwotICAgICAgLSopCi0JOzsKLSAgICAgICopCi0JIyBJZiB0aGUgcHJldmlvdXMgb3B0aW9uIG5lZWRlZCBhbiBhcmd1bWVudCwgdGhlbiBza2lwIGl0LgotCWlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgotCSAgcHJldj0KLQllbHNlCi0JICBkZXN0PSRhcmcKLQkgIGNvbnRpbnVlCi0JZmkKLQk7OwotICAgICAgZXNhYwotCi0gICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgotICAgICAgYXJnPWAkZWNobyAiWCRhcmciIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKLQlhcmc9IlwiJGFyZ1wiIgotCTs7Ci0gICAgICBlc2FjCi0gICAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2cgJGFyZyIKLSAgICBkb25lCi0KLSAgICBpZiB0ZXN0IC16ICIkaW5zdGFsbF9wcm9nIjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhbiBpbnN0YWxsIHByb2dyYW0iIDE+JjIKLSAgICAgICRlY2hvICIkaGVscCIgMT4mMgotICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgZmkKLQotICAgIGlmIHRlc3QgLW4gIiRwcmV2IjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogdGhlIFxgJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIgMT4mMgotICAgICAgJGVjaG8gIiRoZWxwIiAxPiYyCi0gICAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgICBmaQotCi0gICAgaWYgdGVzdCAteiAiJGZpbGVzIjsgdGhlbgotICAgICAgaWYgdGVzdCAteiAiJGRlc3QiOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogbm8gZmlsZSBvciBkZXN0aW5hdGlvbiBzcGVjaWZpZWQiIDE+JjIKLSAgICAgIGVsc2UKLQkkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgZGVzdGluYXRpb24iIDE+JjIKLSAgICAgIGZpCi0gICAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi0KLSAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KLSAgICBkZXN0PWAkZWNobyAiWCRkZXN0IiB8ICRYc2VkIC1lICdzJS8kJSUnYAotCi0gICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgZGVzdGluYXRpb24gaXMgYSBkaXJlY3RvcnkuCi0gICAgdGVzdCAtZCAiJGRlc3QiICYmIGlzZGlyPXllcwotICAgIGlmIHRlc3QgIiRpc2RpciIgPSB5ZXM7IHRoZW4KLSAgICAgIGRlc3RkaXI9IiRkZXN0IgotICAgICAgZGVzdG5hbWU9Ci0gICAgZWxzZQotICAgICAgZGVzdGRpcj1gJGVjaG8gIlgkZGVzdCIgfCAkWHNlZCAtZSAncyUvW14vXSokJSUnYAotICAgICAgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGRlc3QiICYmIGRlc3RkaXI9LgotICAgICAgZGVzdG5hbWU9YCRlY2hvICJYJGRlc3QiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQotICAgICAgIyBOb3QgYSBkaXJlY3RvcnksIHNvIGNoZWNrIHRvIHNlZSB0aGF0IHRoZXJlIGlzIG9ubHkgb25lIGZpbGUgc3BlY2lmaWVkLgotICAgICAgc2V0IGR1bW15ICRmaWxlcwotICAgICAgaWYgdGVzdCAiJCMiIC1ndCAyOyB0aGVuCi0JJGVjaG8gIiRtb2RlbmFtZTogXGAkZGVzdCcgaXMgbm90IGEgZGlyZWN0b3J5IiAxPiYyCi0JJGVjaG8gIiRoZWxwIiAxPiYyCi0JZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgICBmaQotICAgIGZpCi0gICAgY2FzZSAkZGVzdGRpciBpbgotICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLSAgICAqKQotICAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotCWNhc2UgJGZpbGUgaW4KLQkqLmxvKSA7OwotCSopCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCRkZXN0ZGlyJyBtdXN0IGJlIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIiAxPiYyCi0JICAkZWNobyAiJGhlbHAiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCSAgOzsKLQllc2FjCi0gICAgICBkb25lCi0gICAgICA7OwotICAgIGVzYWMKLQotICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgdmFyaWFibGVzIHJhdGhlcgotICAgICMgdGhhbiBydW5uaW5nIHRoZWlyIHByb2dyYW1zLgotICAgIGxpYnRvb2xfaW5zdGFsbF9tYWdpYz0iJG1hZ2ljIgotCi0gICAgc3RhdGljbGlicz0KLSAgICBmdXR1cmVfbGliZGlycz0KLSAgICBjdXJyZW50X2xpYmRpcnM9Ci0gICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotCi0gICAgICAjIERvIGVhY2ggaW5zdGFsbGF0aW9uLgotICAgICAgY2FzZSAkZmlsZSBpbgotICAgICAgKi4kbGliZXh0KQotCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCi0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCi0JOzsKLQotICAgICAgKi5sYSkKLQkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLQllbHNlCi0JICAkZWNobyAiJG1vZGVuYW1lOiBcYCRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKLQotCWxpYnJhcnlfbmFtZXM9Ci0Jb2xkX2xpYnJhcnk9Ci0JcmVsaW5rX2NvbW1hbmQ9Ci0JIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCi0JY2FzZSAkZmlsZSBpbgotCSovKiB8ICpcXCopIC4gJGZpbGUgOzsKLQkqKSAuIC4vJGZpbGUgOzsKLQllc2FjCi0KLQkjIEFkZCB0aGUgbGliZGlyIHRvIGN1cnJlbnRfbGliZGlycyBpZiBpdCBpcyB0aGUgZGVzdGluYXRpb24uCi0JaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KLQkgIGNhc2UgIiRjdXJyZW50X2xpYmRpcnMgIiBpbgotCSAgKiIgJGxpYmRpciAiKikgOzsKLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OwotCSAgZXNhYwotCWVsc2UKLQkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KLQkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCi0JICAqIiAkbGliZGlyICIqKSA7OwotCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OwotCSAgZXNhYwotCWZpCi0KLQlkaXI9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlL1teL10qJCUlJ2AvCi0JdGVzdCAiWCRkaXIiID0gIlgkZmlsZS8iICYmIGRpcj0KLQlkaXI9IiRkaXIkb2JqZGlyIgotCi0JaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KLQkgIGluc3RfcHJlZml4X2Rpcj1gJGVjaG8gIiRkZXN0ZGlyIiB8ICRTRUQgInMlJGxpYmRpclwkJSUiYAotCi0JICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCi0JICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0Ci0JICAjIGFyZSBpbnN0YWxsZWQgdG8gdGhlIHNhbWUgcHJlZml4LgotCSAgIyBBdCBwcmVzZW50LCB0aGlzIGNoZWNrIGRvZXNuJ3QgYWZmZWN0IHdpbmRvd3MgLmRsbCdzIHRoYXQKLQkgICMgYXJlIGluc3RhbGxlZCBpbnRvICRsaWJkaXIvLi4vYmluIChjdXJyZW50bHksIHRoYXQgd29ya3MgZmluZSkKLQkgICMgYnV0IGl0J3Mgc29tZXRoaW5nIHRvIGtlZXAgYW4gZXllIG9uLgotCSAgaWYgdGVzdCAiJGluc3RfcHJlZml4X2RpciIgPSAiJGRlc3RkaXIiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGVycm9yOiBjYW5ub3QgaW5zdGFsbCBcYCRmaWxlJyB0byBhIGRpcmVjdG9yeSBub3QgZW5kaW5nIGluICRsaWJkaXIiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQotCi0JICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotCSAgICAjIFN0aWNrIHRoZSBpbnN0X3ByZWZpeF9kaXIgZGF0YSBpbnRvIHRoZSBsaW5rIGNvbW1hbmQuCi0JICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlLWluc3QtcHJlZml4LWRpciAkaW5zdF9wcmVmaXhfZGlyJSIgfCAkTkwyU1BgCi0JICBlbHNlCi0JICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiJHJlbGlua19jb21tYW5kIiB8ICRTUDJOTCB8ICRTRUQgInMlQGluc3RfcHJlZml4X2RpckAlJSIgfCAkTkwyU1BgCi0JICBmaQotCi0JICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiByZWxpbmtpbmcgXGAkZmlsZSciIDE+JjIKLQkgICRzaG93ICIkcmVsaW5rX2NvbW1hbmQiCi0JICBpZiAkcnVuIGV2YWwgIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4gOgotCSAgZWxzZQotCSAgICAkZWNobyAiJG1vZGVuYW1lOiBlcnJvcjogcmVsaW5rIFxgJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQotCWZpCi0KLQkjIFNlZSB0aGUgbmFtZXMgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5LgotCXNldCBkdW1teSAkbGlicmFyeV9uYW1lcwotCWlmIHRlc3QgLW4gIiQyIjsgdGhlbgotCSAgcmVhbG5hbWU9IiQyIgotCSAgc2hpZnQKLQkgIHNoaWZ0Ci0KLQkgIHNyY25hbWU9IiRyZWFsbmFtZSIKLQkgIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCIgJiYgc3JjbmFtZT0iJHJlYWxuYW1lIlQKLQotCSAgIyBJbnN0YWxsIHRoZSBzaGFyZWQgbGlicmFyeSBhbmQgYnVpbGQgdGhlIHN5bWxpbmtzLgotCSAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiCi0JICAkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2cgJGRpci8kc3JjbmFtZSAkZGVzdGRpci8kcmVhbG5hbWUiIHx8IGV4aXQgJD8KLQkgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkc3RyaXBsaWIiOyB0aGVuCi0JICAgICRzaG93ICIkc3RyaXBsaWIgJGRlc3RkaXIvJHJlYWxuYW1lIgotCSAgICAkcnVuIGV2YWwgIiRzdHJpcGxpYiAkZGVzdGRpci8kcmVhbG5hbWUiIHx8IGV4aXQgJD8KLQkgIGZpCi0KLQkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotCSAgICAjIERlbGV0ZSB0aGUgb2xkIHN5bWxpbmtzLCBhbmQgY3JlYXRlIG5ldyBvbmVzLgotCSAgICAjIFRyeSBgbG4gLXNmJyBmaXJzdCwgYmVjYXVzZSB0aGUgYGxuJyBiaW5hcnkgbWlnaHQgZGVwZW5kIG9uCi0JICAgICMgdGhlIHN5bWxpbmsgd2UgcmVwbGFjZSEgIFNvbGFyaXMgL2Jpbi9sbiBkb2VzIG5vdCB1bmRlcnN0YW5kIC1mLAotCSAgICAjIHNvIHdlIGFsc28gbmVlZCB0byB0cnkgcm0gJiYgbG4gLXMuCi0JICAgIGZvciBsaW5rbmFtZQotCSAgICBkbwotCSAgICAgIGlmIHRlc3QgIiRsaW5rbmFtZSIgIT0gIiRyZWFsbmFtZSI7IHRoZW4KLSAgICAgICAgICAgICAgICAkc2hvdyAiKGNkICRkZXN0ZGlyICYmIHsgJExOX1MgLWYgJHJlYWxuYW1lICRsaW5rbmFtZSB8fCB7ICRybSAkbGlua25hbWUgJiYgJExOX1MgJHJlYWxuYW1lICRsaW5rbmFtZTsgfTsgfSkiCi0gICAgICAgICAgICAgICAgJHJ1biBldmFsICIoY2QgJGRlc3RkaXIgJiYgeyAkTE5fUyAtZiAkcmVhbG5hbWUgJGxpbmtuYW1lIHx8IHsgJHJtICRsaW5rbmFtZSAmJiAkTE5fUyAkcmVhbG5hbWUgJGxpbmtuYW1lOyB9OyB9KSIKLQkgICAgICBmaQotCSAgICBkb25lCi0JICBmaQotCi0JICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgcG9zdGluc3RhbGwgY29tbWFuZHMuCi0JICBsaWI9IiRkZXN0ZGlyLyRyZWFsbmFtZSIKLQkgIGNtZHM9JHBvc3RpbnN0YWxsX2NtZHMKLQkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAgICRzaG93ICIkY21kIgotCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IHsKLQkgICAgICBsdF9leGl0PSQ/Ci0KLQkgICAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkgICAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLQkJJHJ1biBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJHJtICR7cmVhbG5hbWV9VCAmJiAkbXYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknCi0JICAgICAgZmkKLQotCSAgICAgIGV4aXQgJGx0X2V4aXQKLQkgICAgfQotCSAgZG9uZQotCSAgSUZTPSIkc2F2ZV9pZnMiCi0JZmkKLQotCSMgSW5zdGFsbCB0aGUgcHNldWRvLWxpYnJhcnkgZm9yIGluZm9ybWF0aW9uIHB1cnBvc2VzLgotCW5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQlpbnN0bmFtZT0iJGRpci8kbmFtZSJpCi0JJHNob3cgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIgotCSRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiIHx8IGV4aXQgJD8KLQotCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgotCTs7Ci0KLSAgICAgICoubG8pCi0JIyBJbnN0YWxsIChpLmUuIGNvcHkpIGEgbGlidG9vbCBvYmplY3QuCi0KLQkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCi0JaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKLQllbHNlCi0JICBkZXN0ZmlsZT1gJGVjaG8gIlgkZmlsZSIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0ZmlsZSIKLQlmaQotCi0JIyBEZWR1Y2UgdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIG9sZC1zdHlsZSBvYmplY3QgZmlsZS4KLQljYXNlICRkZXN0ZmlsZSBpbgotCSoubG8pCi0JICBzdGF0aWNkZXN0PWAkZWNobyAiWCRkZXN0ZmlsZSIgfCAkWHNlZCAtZSAiJGxvMm8iYAotCSAgOzsKLQkqLiRvYmpleHQpCi0JICBzdGF0aWNkZXN0PSIkZGVzdGZpbGUiCi0JICBkZXN0ZmlsZT0KLQkgIDs7Ci0JKikKLQkgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBjb3B5IGEgbGlidG9vbCBvYmplY3QgdG8gXGAkZGVzdGZpbGUnIiAxPiYyCi0JICAkZWNobyAiJGhlbHAiIDE+JjIKLQkgIGV4aXQgJEVYSVRfRkFJTFVSRQotCSAgOzsKLQllc2FjCi0KLQkjIEluc3RhbGwgdGhlIGxpYnRvb2wgb2JqZWN0IGlmIHJlcXVlc3RlZC4KLQlpZiB0ZXN0IC1uICIkZGVzdGZpbGUiOyB0aGVuCi0JICAkc2hvdyAiJGluc3RhbGxfcHJvZyAkZmlsZSAkZGVzdGZpbGUiCi0JICAkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2cgJGZpbGUgJGRlc3RmaWxlIiB8fCBleGl0ICQ/Ci0JZmkKLQotCSMgSW5zdGFsbCB0aGUgb2xkIG9iamVjdCBpZiBlbmFibGVkLgotCWlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLQkgICMgRGVkdWNlIHRoZSBuYW1lIG9mIHRoZSBvbGQtc3R5bGUgb2JqZWN0IGZpbGUuCi0JICBzdGF0aWNvYmo9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgIiRsbzJvImAKLQotCSAgJHNob3cgIiRpbnN0YWxsX3Byb2cgJHN0YXRpY29iaiAkc3RhdGljZGVzdCIKLQkgICRydW4gZXZhbCAiJGluc3RhbGxfcHJvZyBcJHN0YXRpY29iaiBcJHN0YXRpY2Rlc3QiIHx8IGV4aXQgJD8KLQlmaQotCWV4aXQgJEVYSVRfU1VDQ0VTUwotCTs7Ci0KLSAgICAgICopCi0JIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgotCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KLQkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCi0JZWxzZQotCSAgZGVzdGZpbGU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKLQkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdGZpbGUiCi0JZmkKLQotCSMgSWYgdGhlIGZpbGUgaXMgbWlzc2luZywgYW5kIHRoZXJlIGlzIGEgLmV4ZSBvbiB0aGUgZW5kLCBzdHJpcCBpdAotCSMgYmVjYXVzZSBpdCBpcyBtb3N0IGxpa2VseSBhIGxpYnRvb2wgc2NyaXB0IHdlIGFjdHVhbGx5IHdhbnQgdG8KLQkjIGluc3RhbGwKLQlzdHJpcHBlZF9leHQ9IiIKLQljYXNlICRmaWxlIGluCi0JICAqLmV4ZSkKLQkgICAgaWYgdGVzdCAhIC1mICIkZmlsZSI7IHRoZW4KLQkgICAgICBmaWxlPWAkZWNobyAkZmlsZXwke1NFRH0gJ3MsLmV4ZSQsLCdgCi0JICAgICAgc3RyaXBwZWRfZXh0PSIuZXhlIgotCSAgICBmaQotCSAgICA7OwotCWVzYWMKLQotCSMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIHJlYWxseSBhIGxpYnRvb2wgcHJvZ3JhbS4KLQljYXNlICRob3N0IGluCi0JKmN5Z3dpbip8Km1pbmd3KikKLQkgICAgd3JhcHBlcj1gJGVjaG8gJGZpbGUgfCAke1NFRH0gLWUgJ3MsLmV4ZSQsLCdgCi0JICAgIDs7Ci0JKikKLQkgICAgd3JhcHBlcj0kZmlsZQotCSAgICA7OwotCWVzYWMKLQlpZiAoJHtTRUR9IC1lICc0cScgJHdyYXBwZXIgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICBub3RpbnN0X2RlcGxpYnM9Ci0JICByZWxpbmtfY29tbWFuZD0KLQotCSAgIyBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyeSBvbiBjeWd3aW4vbWluZ3cgdG8gYXBwZW5kIGEgZG90IHRvCi0JICAjIGZvbyBldmVuIGlmIGJvdGggZm9vIGFuZCBGSUxFLmV4ZSBleGlzdDogYXV0b21hdGljLWFwcGVuZC0uZXhlCi0JICAjIGJlaGF2aW9yIGhhcHBlbnMgb25seSBmb3IgZXhlYygzKSwgbm90IGZvciBvcGVuKDIpISAgQWxzbywgc291cmNpbmcKLQkgICMgYEZJTEUuJyBkb2VzIG5vdCB3b3JrIG9uIGN5Z3dpbiBtYW5hZ2VkIG1vdW50cy4KLQkgICMKLQkgICMgSWYgdGhlcmUgaXMgbm8gZGlyZWN0b3J5IGNvbXBvbmVudCwgdGhlbiBhZGQgb25lLgotCSAgY2FzZSAkd3JhcHBlciBpbgotCSAgKi8qIHwgKlxcKikgLiAke3dyYXBwZXJ9IDs7Ci0JICAqKSAuIC4vJHt3cmFwcGVyfSA7OwotCSAgZXNhYwotCi0JICAjIENoZWNrIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHNldC4KLQkgIGlmIHRlc3QgLXogIiRub3RpbnN0X2RlcGxpYnMiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGludmFsaWQgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBcYCR3cmFwcGVyJyIgMT4mMgotCSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLQkgIGZpCi0KLQkgIGZpbmFsaXplPXllcwotCSAgZm9yIGxpYiBpbiAkbm90aW5zdF9kZXBsaWJzOyBkbwotCSAgICAjIENoZWNrIHRvIHNlZSB0aGF0IGVhY2ggbGlicmFyeSBpcyBpbnN0YWxsZWQuCi0JICAgIGxpYmRpcj0KLQkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KLQkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgICAgICBjYXNlICRsaWIgaW4KLQkgICAgICAqLyogfCAqXFwqKSAuICRsaWIgOzsKLQkgICAgICAqKSAuIC4vJGxpYiA7OwotCSAgICAgIGVzYWMKLQkgICAgZmkKLQkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRlY2hvICJYJGxpYiIgfCAkWHNlZCAtZSAncyVeLiovJSVnJ2AgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0Ci0JICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCi0JICAgICAgJGVjaG8gIiRtb2RlbmFtZTogd2FybmluZzogXGAkbGliJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIFxgJGxpYmRpciciIDE+JjIKLQkgICAgICBmaW5hbGl6ZT1ubwotCSAgICBmaQotCSAgZG9uZQotCi0JICByZWxpbmtfY29tbWFuZD0KLQkgICMgTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3Nhcnkgb24gY3lnd2luL21pbmd3IHRvIGFwcGVuZCBhIGRvdCB0bwotCSAgIyBmb28gZXZlbiBpZiBib3RoIGZvbyBhbmQgRklMRS5leGUgZXhpc3Q6IGF1dG9tYXRpYy1hcHBlbmQtLmV4ZQotCSAgIyBiZWhhdmlvciBoYXBwZW5zIG9ubHkgZm9yIGV4ZWMoMyksIG5vdCBmb3Igb3BlbigyKSEgIEFsc28sIHNvdXJjaW5nCi0JICAjIGBGSUxFLicgZG9lcyBub3Qgd29yayBvbiBjeWd3aW4gbWFuYWdlZCBtb3VudHMuCi0JICAjCi0JICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgIGNhc2UgJHdyYXBwZXIgaW4KLQkgICovKiB8ICpcXCopIC4gJHt3cmFwcGVyfSA7OwotCSAgKikgLiAuLyR7d3JhcHBlcn0gOzsKLQkgIGVzYWMKLQotCSAgb3V0cHV0bmFtZT0KLQkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0gbm8gJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgotCSAgICBpZiB0ZXN0ICIkZmluYWxpemUiID0geWVzICYmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0JICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKLQkgICAgICBmaWxlPWAkZWNobyAiWCRmaWxlJHN0cmlwcGVkX2V4dCIgfCAkWHNlZCAtZSAncyVeLiovJSUnYAotCSAgICAgIG91dHB1dG5hbWU9IiR0bXBkaXIvJGZpbGUiCi0JICAgICAgIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgotCSAgICAgIHJlbGlua19jb21tYW5kPWAkZWNobyAiWCRyZWxpbmtfY29tbWFuZCIgfCAkU1AyTkwgfCAkWHNlZCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRuYW1lIiclZycgfCAkTkwyU1BgCi0KLQkgICAgICAkc2hvdyAiJHJlbGlua19jb21tYW5kIgotCSAgICAgIGlmICRydW4gZXZhbCAiJHJlbGlua19jb21tYW5kIjsgdGhlbiA6Ci0JICAgICAgZWxzZQotCQkkZWNobyAiJG1vZGVuYW1lOiBlcnJvcjogcmVsaW5rIFxgJGZpbGUnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQiIDE+JjIKLQkJJHtybX1yICIkdG1wZGlyIgotCQljb250aW51ZQotCSAgICAgIGZpCi0JICAgICAgZmlsZT0iJG91dHB1dG5hbWUiCi0JICAgIGVsc2UKLQkgICAgICAkZWNobyAiJG1vZGVuYW1lOiB3YXJuaW5nOiBjYW5ub3QgcmVsaW5rIFxgJGZpbGUnIiAxPiYyCi0JICAgIGZpCi0JICBlbHNlCi0JICAgICMgSW5zdGFsbCB0aGUgYmluYXJ5IHRoYXQgd2UgY29tcGlsZWQgZWFybGllci4KLQkgICAgZmlsZT1gJGVjaG8gIlgkZmlsZSRzdHJpcHBlZF9leHQiIHwgJFhzZWQgLWUgInMlXChbXi9dKlwpJCUkb2JqZGlyL1wxJSJgCi0JICBmaQotCWZpCi0KLQkjIHJlbW92ZSAuZXhlIHNpbmNlIGN5Z3dpbiAvdXNyL2Jpbi9pbnN0YWxsIHdpbGwgYXBwZW5kIGFub3RoZXIKLQkjIG9uZSBhbnl3YXkgCi0JY2FzZSAkaW5zdGFsbF9wcm9nLCRob3N0IGluCi0JKi91c3IvYmluL2luc3RhbGwqLCpjeWd3aW4qKQotCSAgY2FzZSAkZmlsZTokZGVzdGZpbGUgaW4KLQkgICouZXhlOiouZXhlKQotCSAgICAjIHRoaXMgaXMgb2sKLQkgICAgOzsKLQkgICouZXhlOiopCi0JICAgIGRlc3RmaWxlPSRkZXN0ZmlsZS5leGUKLQkgICAgOzsKLQkgICo6Ki5leGUpCi0JICAgIGRlc3RmaWxlPWAkZWNobyAkZGVzdGZpbGUgfCAke1NFRH0gLWUgJ3MsLmV4ZSQsLCdgCi0JICAgIDs7Ci0JICBlc2FjCi0JICA7OwotCWVzYWMKLQkkc2hvdyAiJGluc3RhbGxfcHJvZyRzdHJpcG1lICRmaWxlICRkZXN0ZmlsZSIKLQkkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2dcJHN0cmlwbWUgXCRmaWxlIFwkZGVzdGZpbGUiIHx8IGV4aXQgJD8KLQl0ZXN0IC1uICIkb3V0cHV0bmFtZSIgJiYgJHtybX1yICIkdG1wZGlyIgotCTs7Ci0gICAgICBlc2FjCi0gICAgZG9uZQotCi0gICAgZm9yIGZpbGUgaW4gJHN0YXRpY2xpYnM7IGRvCi0gICAgICBuYW1lPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJV4uKi8lJSdgCi0KLSAgICAgICMgU2V0IHVwIHRoZSByYW5saWIgcGFyYW1ldGVycy4KLSAgICAgIG9sZGxpYj0iJGRlc3RkaXIvJG5hbWUiCi0KLSAgICAgICRzaG93ICIkaW5zdGFsbF9wcm9nICRmaWxlICRvbGRsaWIiCi0gICAgICAkcnVuIGV2YWwgIiRpbnN0YWxsX3Byb2cgXCRmaWxlIFwkb2xkbGliIiB8fCBleGl0ICQ/Ci0KLSAgICAgIGlmIHRlc3QgLW4gIiRzdHJpcG1lIiAmJiB0ZXN0IC1uICIkb2xkX3N0cmlwbGliIjsgdGhlbgotCSRzaG93ICIkb2xkX3N0cmlwbGliICRvbGRsaWIiCi0JJHJ1biBldmFsICIkb2xkX3N0cmlwbGliICRvbGRsaWIiIHx8IGV4aXQgJD8KLSAgICAgIGZpCi0KLSAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0aW5zdGFsbCBjb21tYW5kcy4KLSAgICAgIGNtZHM9JG9sZF9wb3N0aW5zdGFsbF9jbWRzCi0gICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JSUZTPSIkc2F2ZV9pZnMiCi0JZXZhbCBjbWQ9XCIkY21kXCIKLQkkc2hvdyAiJGNtZCIKLQkkcnVuIGV2YWwgIiRjbWQiIHx8IGV4aXQgJD8KLSAgICAgIGRvbmUKLSAgICAgIElGUz0iJHNhdmVfaWZzIgotICAgIGRvbmUKLQotICAgIGlmIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyI7IHRoZW4KLSAgICAgICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IHJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciIDE+JjIKLSAgICBmaQotCi0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KLSAgICAgICMgTWF5YmUganVzdCBkbyBhIGRyeSBydW4uCi0gICAgICB0ZXN0IC1uICIkcnVuIiAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCi0gICAgICBleGVjX2NtZD0nJFNIRUxMICRwcm9ncGF0aCAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCi0gICAgZWxzZQotICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgZmkKLSAgICA7OwotCi0gICMgbGlidG9vbCBmaW5pc2ggbW9kZQotICBmaW5pc2gpCi0gICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogZmluaXNoIgotICAgIGxpYmRpcnM9IiRub25vcHQiCi0gICAgYWRtaW5jbWRzPQotCi0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KLSAgICAgIGZvciBkaXIKLSAgICAgIGRvCi0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKLSAgICAgIGRvbmUKLQotICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLQlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCi0JICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgZmluaXNoIGNvbW1hbmRzLgotCSAgY21kcz0kZmluaXNoX2NtZHMKLQkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgZm9yIGNtZCBpbiAkY21kczsgZG8KLQkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGV2YWwgY21kPVwiJGNtZFwiCi0JICAgICRzaG93ICIkY21kIgotCSAgICAkcnVuIGV2YWwgIiRjbWQiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcwotICAgICAgICRjbWQiCi0JICBkb25lCi0JICBJRlM9IiRzYXZlX2lmcyIKLQlmaQotCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KLQkgICMgRG8gdGhlIHNpbmdsZSBmaW5pc2hfZXZhbC4KLQkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCi0JICAkcnVuIGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKLSAgICAgICAkY21kcyIKLQlmaQotICAgICAgZG9uZQotICAgIGZpCi0KLSAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KLSAgICB0ZXN0ICIkc2hvdyIgPSA6ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwotCi0gICAgJGVjaG8gIlgtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIiB8ICRYc2VkCi0gICAgJGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKLSAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbwotICAgICAgJGVjaG8gIiAgICRsaWJkaXIiCi0gICAgZG9uZQotICAgICRlY2hvCi0gICAgJGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgotICAgICRlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSAgICAkZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKLSAgICAkZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgotICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotICAgICAgJGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCi0gICAgICAkZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotICAgIGZpCi0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotICAgICAgJGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgotICAgICAgJGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAgICAgIGxpYmRpcj1MSUJESVIKLSAgICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLQotICAgICAgJGVjaG8gIiAgIC0gdXNlIHRoZSBcYCRmbGFnJyBsaW5rZXIgZmxhZyIKLSAgICBmaQotICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCi0gICAgICAkZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCi0gICAgZmkKLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotICAgICAgJGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgotICAgIGZpCi0gICAgJGVjaG8KLSAgICAkZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0gICAgJGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwgcGFnZXMuIgotICAgICRlY2hvICJYLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIgfCAkWHNlZAotICAgIGV4aXQgJEVYSVRfU1VDQ0VTUwotICAgIDs7Ci0KLSAgIyBsaWJ0b29sIGV4ZWN1dGUgbW9kZQotICBleGVjdXRlKQotICAgIG1vZGVuYW1lPSIkbW9kZW5hbWU6IGV4ZWN1dGUiCi0KLSAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29tbWFuZCBuYW1lLgotICAgIGNtZD0iJG5vbm9wdCIKLSAgICBpZiB0ZXN0IC16ICIkY21kIjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiIDE+JjIKLSAgICAgICRlY2hvICIkaGVscCIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi0KLSAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgotICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCi0gICAgICBpZiB0ZXN0ICEgLWYgIiRmaWxlIjsgdGhlbgotCSRlY2hvICIkbW9kZW5hbWU6IFxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiIDE+JjIKLQkkZWNobyAiJGhlbHAiIDE+JjIKLQlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgIGZpCi0KLSAgICAgIGRpcj0KLSAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgICoubGEpCi0JIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLQlpZiAoJHtTRUR9IC1lICcycScgJGZpbGUgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0JZWxzZQotCSAgJGVjaG8gIiRtb2RlbmFtZTogXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiIDE+JjIKLQkgICRlY2hvICIkaGVscCIgMT4mMgotCSAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JZmkKLQotCSMgUmVhZCB0aGUgbGlidG9vbCBsaWJyYXJ5LgotCWRsbmFtZT0KLQlsaWJyYXJ5X25hbWVzPQotCi0JIyBJZiB0aGVyZSBpcyBubyBkaXJlY3RvcnkgY29tcG9uZW50LCB0aGVuIGFkZCBvbmUuCi0JY2FzZSAkZmlsZSBpbgotCSovKiB8ICpcXCopIC4gJGZpbGUgOzsKLQkqKSAuIC4vJGZpbGUgOzsKLQllc2FjCi0KLQkjIFNraXAgdGhpcyBsaWJyYXJ5IGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZC4KLQlpZiB0ZXN0IC16ICIkZGxuYW1lIjsgdGhlbgotCSAgIyBXYXJuIGlmIGl0IHdhcyBhIHNoYXJlZCBsaWJyYXJ5LgotCSAgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiICYmICRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmc6IFxgJGZpbGUnIHdhcyBub3QgbGlua2VkIHdpdGggXGAtZXhwb3J0LWR5bmFtaWMnIgotCSAgY29udGludWUKLQlmaQotCi0JZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JdGVzdCAiWCRkaXIiID0gIlgkZmlsZSIgJiYgZGlyPS4KLQotCWlmIHRlc3QgLWYgIiRkaXIvJG9iamRpci8kZGxuYW1lIjsgdGhlbgotCSAgZGlyPSIkZGlyLyRvYmpkaXIiCi0JZWxzZQotCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCi0JICAgICRlY2hvICIkbW9kZW5hbWU6IGNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciIDE+JjIKLQkgICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0JICBmaQotCWZpCi0JOzsKLQotICAgICAgKi5sbykKLQkjIEp1c3QgYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgLmxvIGZpbGUuCi0JZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0JdGVzdCAiWCRkaXIiID0gIlgkZmlsZSIgJiYgZGlyPS4KLQk7OwotCi0gICAgICAqKQotCSRlY2hvICIkbW9kZW5hbWU6IHdhcm5pbmcgXGAtZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBub24tbGlidG9vbCBsaWJyYXJpZXMgYW5kIG9iamVjdHMiIDE+JjIKLQljb250aW51ZQotCTs7Ci0gICAgICBlc2FjCi0KLSAgICAgICMgR2V0IHRoZSBhYnNvbHV0ZSBwYXRobmFtZS4KLSAgICAgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKLSAgICAgIHRlc3QgLW4gIiRhYnNkaXIiICYmIGRpcj0iJGFic2RpciIKLQotICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KLSAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCi0JZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpclwiIgotICAgICAgZWxzZQotCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXI6XCQkc2hsaWJwYXRoX3ZhclwiIgotICAgICAgZmkKLSAgICBkb25lCi0KLSAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBzY3JpcHRzIGp1c3QgdG8gc2V0IHNobGlicGF0aF92YXIKLSAgICAjIHJhdGhlciB0aGFuIHJ1bm5pbmcgdGhlaXIgcHJvZ3JhbXMuCi0gICAgbGlidG9vbF9leGVjdXRlX21hZ2ljPSIkbWFnaWMiCi0KLSAgICAjIENoZWNrIGlmIGFueSBvZiB0aGUgYXJndW1lbnRzIGlzIGEgd3JhcHBlciBzY3JpcHQuCi0gICAgYXJncz0KLSAgICBmb3IgZmlsZQotICAgIGRvCi0gICAgICBjYXNlICRmaWxlIGluCi0gICAgICAtKikgOzsKLSAgICAgICopCi0JIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgcmVhbGx5IGEgbGlidG9vbCBwcm9ncmFtLgotCWlmICgke1NFRH0gLWUgJzRxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAjIElmIHRoZXJlIGlzIG5vIGRpcmVjdG9yeSBjb21wb25lbnQsIHRoZW4gYWRkIG9uZS4KLQkgIGNhc2UgJGZpbGUgaW4KLQkgICovKiB8ICpcXCopIC4gJGZpbGUgOzsKLQkgICopIC4gLi8kZmlsZSA7OwotCSAgZXNhYwotCi0JICAjIFRyYW5zZm9ybSBhcmcgdG8gd3JhcHBlZCBuYW1lLgotCSAgZmlsZT0iJHByb2dkaXIvJHByb2dyYW0iCi0JZmkKLQk7OwotICAgICAgZXNhYwotICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KLSAgICAgIGZpbGU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotICAgICAgYXJncz0iJGFyZ3MgXCIkZmlsZVwiIgotICAgIGRvbmUKLQotICAgIGlmIHRlc3QgLXogIiRydW4iOyB0aGVuCi0gICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLQkjIEV4cG9ydCB0aGUgc2hsaWJwYXRoX3Zhci4KLQlldmFsICJleHBvcnQgJHNobGlicGF0aF92YXIiCi0gICAgICBmaQotCi0gICAgICAjIFJlc3RvcmUgc2F2ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gICAgICBmb3IgbHRfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKLSAgICAgIGRvCi0JZXZhbCAiaWYgdGVzdCBcIlwke3NhdmVfJGx0X3ZhcitzZXR9XCIgPSBzZXQ7IHRoZW4KLQkJJGx0X3Zhcj1cJHNhdmVfJGx0X3ZhcjsgZXhwb3J0ICRsdF92YXIKLQkgICAgICBmaSIKLSAgICAgIGRvbmUKLQotICAgICAgIyBOb3cgcHJlcGFyZSB0byBhY3R1YWxseSBleGVjIHRoZSBjb21tYW5kLgotICAgICAgZXhlY19jbWQ9IlwkY21kJGFyZ3MiCi0gICAgZWxzZQotICAgICAgIyBEaXNwbGF5IHdoYXQgd291bGQgYmUgZG9uZS4KLSAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotCWV2YWwgIlwkZWNobyBcIlwkc2hsaWJwYXRoX3Zhcj1cJCRzaGxpYnBhdGhfdmFyXCIiCi0JJGVjaG8gImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKLSAgICAgIGZpCi0gICAgICAkZWNobyAiJGNtZCRhcmdzIgotICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gICAgZmkKLSAgICA7OwotCi0gICMgbGlidG9vbCBjbGVhbiBhbmQgdW5pbnN0YWxsIG1vZGUKLSAgY2xlYW4gfCB1bmluc3RhbGwpCi0gICAgbW9kZW5hbWU9IiRtb2RlbmFtZTogJG1vZGUiCi0gICAgcm09IiRub25vcHQiCisjIGZ1bmNfbW9kZV91bmluc3RhbGwgYXJnLi4uCitmdW5jX21vZGVfdW5pbnN0YWxsICgpCit7CisgICAgJG9wdF9kZWJ1ZworICAgIFJNPSIkbm9ub3B0IgogICAgIGZpbGVzPQogICAgIHJtZm9yY2U9CiAgICAgZXhpdF9zdGF0dXM9MApAQCAtNjUzOSwzMCArODIwMiwyOCBAQAogICAgIGZvciBhcmcKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCi0gICAgICAtZikgcm09IiRybSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLSAgICAgIC0qKSBybT0iJHJtICRhcmciIDs7CisgICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKKyAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7CiAgICAgICAqKSBmaWxlcz0iJGZpbGVzICRhcmciIDs7CiAgICAgICBlc2FjCiAgICAgZG9uZQogCi0gICAgaWYgdGVzdCAteiAiJHJtIjsgdGhlbgotICAgICAgJGVjaG8gIiRtb2RlbmFtZTogeW91IG11c3Qgc3BlY2lmeSBhbiBSTSBwcm9ncmFtIiAxPiYyCi0gICAgICAkZWNobyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCisgICAgdGVzdCAteiAiJFJNIiAmJiBcCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYW4gUk0gcHJvZ3JhbSIKIAogICAgIHJtZGlycz0KIAogICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCiAgICAgZm9yIGZpbGUgaW4gJGZpbGVzOyBkbwotICAgICAgZGlyPWAkZWNobyAiWCRmaWxlIiB8ICRYc2VkIC1lICdzJS9bXi9dKiQlJSdgCi0gICAgICBpZiB0ZXN0ICJYJGRpciIgPSAiWCRmaWxlIjsgdGhlbgotCWRpcj0uCisgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKKyAgICAgIGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgogCW9iamRpcj0iJG9yaWdvYmpkaXIiCiAgICAgICBlbHNlCiAJb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgogICAgICAgZmkKLSAgICAgIG5hbWU9YCRlY2hvICJYJGZpbGUiIHwgJFhzZWQgLWUgJ3MlXi4qLyUlJ2AKKyAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgorICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgogICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKIAogICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwpAQCAtNjU3NCw5ICs4MjM1LDkgQEAKICAgICAgIGZpCiAKICAgICAgICMgRG9uJ3QgZXJyb3IgaWYgdGhlIGZpbGUgZG9lc24ndCBleGlzdCBhbmQgcm0gLWYgd2FzIHVzZWQuCi0gICAgICBpZiAodGVzdCAtTCAiJGZpbGUiKSA+L2Rldi9udWxsIDI+JjEgXAotCXx8ICh0ZXN0IC1oICIkZmlsZSIpID4vZGV2L251bGwgMj4mMSBcCi0JfHwgdGVzdCAtZiAiJGZpbGUiOyB0aGVuCisgICAgICBpZiB7IHRlc3QgLUwgIiRmaWxlIjsgfSA+L2Rldi9udWxsIDI+JjEgfHwKKwkgeyB0ZXN0IC1oICIkZmlsZSI7IH0gPi9kZXYvbnVsbCAyPiYxIHx8CisJIHRlc3QgLWYgIiRmaWxlIjsgdGhlbgogCToKICAgICAgIGVsaWYgdGVzdCAtZCAiJGZpbGUiOyB0aGVuCiAJZXhpdF9zdGF0dXM9MQpAQCAtNjU5MCw4ICs4MjUxLDggQEAKICAgICAgIGNhc2UgJG5hbWUgaW4KICAgICAgICoubGEpCiAJIyBQb3NzaWJseSBhIGxpYnRvb2wgYXJjaGl2ZSwgc28gdmVyaWZ5IGl0LgotCWlmICgke1NFRH0gLWUgJzJxJyAkZmlsZSB8IGdyZXAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0JICAuICRkaXIvJG5hbWUKKwlpZiBmdW5jX2xhbGliX3AgIiRmaWxlIjsgdGhlbgorCSAgZnVuY19zb3VyY2UgJGRpci8kbmFtZQogCiAJICAjIERlbGV0ZSB0aGUgbGlidG9vbCBsaWJyYXJpZXMgYW5kIHN5bWxpbmtzLgogCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCkBAIC02NjA2LDM5ICs4MjY3LDE3IEBACiAJICAgICoiICRkbG5hbWUgIiopIDs7CiAJICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKIAkgICAgZXNhYwotCSAgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgorCSAgICB0ZXN0IC1uICIkbGliZGlyIiAmJiBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfWkiCiAJICAgIDs7CiAJICB1bmluc3RhbGwpCiAJICAgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIjsgdGhlbgogCSAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0dW5pbnN0YWxsIGNvbW1hbmRzLgotCSAgICAgIGNtZHM9JHBvc3R1bmluc3RhbGxfY21kcwotCSAgICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JwotCSAgICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0JCUlGUz0iJHNhdmVfaWZzIgotCQlldmFsIGNtZD1cIiRjbWRcIgotCQkkc2hvdyAiJGNtZCIKLQkJJHJ1biBldmFsICIkY21kIgotCQlpZiB0ZXN0ICIkPyIgLW5lIDAgJiYgdGVzdCAiJHJtZm9yY2UiICE9IHllczsgdGhlbgotCQkgIGV4aXRfc3RhdHVzPTEKLQkJZmkKLQkgICAgICBkb25lCi0JICAgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0dW5pbnN0YWxsX2NtZHMiICd0ZXN0ICIkcm1mb3JjZSIgPSB5ZXMgfHwgZXhpdF9zdGF0dXM9MScKIAkgICAgZmkKIAogCSAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCiAJICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIG9sZF9wb3N0dW5pbnN0YWxsIGNvbW1hbmRzLgotCSAgICAgIGNtZHM9JG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMKLQkgICAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLQkgICAgICBmb3IgY21kIGluICRjbWRzOyBkbwotCQlJRlM9IiRzYXZlX2lmcyIKLQkJZXZhbCBjbWQ9XCIkY21kXCIKLQkJJHNob3cgIiRjbWQiCi0JCSRydW4gZXZhbCAiJGNtZCIKLQkJaWYgdGVzdCAiJD8iIC1uZSAwICYmIHRlc3QgIiRybWZvcmNlIiAhPSB5ZXM7IHRoZW4KLQkJICBleGl0X3N0YXR1cz0xCi0JCWZpCi0JICAgICAgZG9uZQotCSAgICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkb2xkX3Bvc3R1bmluc3RhbGxfY21kcyIgJ3Rlc3QgIiRybWZvcmNlIiA9IHllcyB8fCBleGl0X3N0YXR1cz0xJwogCSAgICBmaQogCSAgICAjIEZJWE1FOiBzaG91bGQgcmVpbnN0YWxsIHRoZSBiZXN0IHJlbWFpbmluZyBzaGFyZWQgbGlicmFyeS4KIAkgICAgOzsKQEAgLTY2NDgsMjAgKzgyODcsMjAgQEAKIAogICAgICAgKi5sbykKIAkjIFBvc3NpYmx5IGEgbGlidG9vbCBvYmplY3QsIHNvIHZlcmlmeSBpdC4KLQlpZiAoJHtTRUR9IC1lICcycScgJGZpbGUgfCBncmVwICJeIyBHZW5lcmF0ZWQgYnkgLiokUEFDS0FHRSIpID4vZGV2L251bGwgMj4mMTsgdGhlbgorCWlmIGZ1bmNfbGFsaWJfcCAiJGZpbGUiOyB0aGVuCiAKIAkgICMgUmVhZCB0aGUgLmxvIGZpbGUKLQkgIC4gJGRpci8kbmFtZQorCSAgZnVuY19zb3VyY2UgJGRpci8kbmFtZQogCiAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KLQkgIGlmIHRlc3QgLW4gIiRwaWNfb2JqZWN0IiBcCi0JICAgICAmJiB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCisJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgogCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRwaWNfb2JqZWN0IgogCSAgZmkKIAogCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiBcCi0JICAgICAmJiB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKKwkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgogCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKIAkgIGZpCiAJZmkKQEAgLTY2NzIsMTcgKzgzMTEsMjYgQEAKIAkgIG5vZXhlbmFtZT0kbmFtZQogCSAgY2FzZSAkZmlsZSBpbgogCSAgKi5leGUpCi0JICAgIGZpbGU9YCRlY2hvICRmaWxlfCR7U0VEfSAncywuZXhlJCwsJ2AKLQkgICAgbm9leGVuYW1lPWAkZWNobyAkbmFtZXwke1NFRH0gJ3MsLmV4ZSQsLCdgCisJICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZpbGUiCisJICAgIGZpbGU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorCSAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRuYW1lIgorCSAgICBub2V4ZW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCiAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQogCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZmlsZSIKIAkgICAgOzsKIAkgIGVzYWMKIAkgICMgRG8gYSB0ZXN0IHRvIHNlZSBpZiB0aGlzIGlzIGEgbGlidG9vbCBwcm9ncmFtLgotCSAgaWYgKCR7U0VEfSAtZSAnNHEnICRmaWxlIHwgZ3JlcCAiXiMgR2VuZXJhdGVkIGJ5IC4qJFBBQ0tBR0UiKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQkgICAgcmVsaW5rX2NvbW1hbmQ9Ci0JICAgIC4gJGRpci8kbm9leGVuYW1lCisJICBpZiBmdW5jX2x0d3JhcHBlcl9wICIkZmlsZSI7IHRoZW4KKwkgICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkZmlsZSI7IHRoZW4KKwkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKKwkgICAgICByZWxpbmtfY29tbWFuZD0KKwkgICAgICBmdW5jX3NvdXJjZSAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKKwkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCisJICAgIGVsc2UKKwkgICAgICByZWxpbmtfY29tbWFuZD0KKwkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKKwkgICAgZmkKIAogCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQogCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwpAQCAtNjY5NywyMzkgKzgzNDUsMzggQEAKIAlmaQogCTs7CiAgICAgICBlc2FjCi0gICAgICAkc2hvdyAiJHJtICRybWZpbGVzIgotICAgICAgJHJ1biAkcm0gJHJtZmlsZXMgfHwgZXhpdF9zdGF0dXM9MQorICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCiAgICAgZG9uZQogICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCiAKICAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCiAgICAgICBpZiB0ZXN0IC1kICIkZGlyIjsgdGhlbgotCSRzaG93ICJybWRpciAkZGlyIgotCSRydW4gcm1kaXIgJGRpciA+L2Rldi9udWxsIDI+JjEKKwlmdW5jX3Nob3dfZXZhbCAicm1kaXIgJGRpciA+L2Rldi9udWxsIDI+JjEiCiAgICAgICBmaQogICAgIGRvbmUKIAogICAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gICAgOzsKK30KIAotICAiIikKLSAgICAkZWNobyAiJG1vZGVuYW1lOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIgMT4mMgotICAgICRlY2hvICIkZ2VuZXJpY19oZWxwIiAxPiYyCi0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0gICAgOzsKLSAgZXNhYworeyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKKyAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQogCi0gIGlmIHRlc3QgLXogIiRleGVjX2NtZCI7IHRoZW4KLSAgICAkZWNobyAiJG1vZGVuYW1lOiBpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIiAxPiYyCi0gICAgJGVjaG8gIiRnZW5lcmljX2hlbHAiIDE+JjIKLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgZmkKLWZpICMgdGVzdCAteiAiJHNob3dfaGVscCIKK3Rlc3QgLXogIiRtb2RlIiAmJiB7CisgIGhlbHA9IiRnZW5lcmljX2hlbHAiCisgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCit9CisKK3Rlc3QgLXogIiRleGVjX2NtZCIgJiYgXAorICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCiAKIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KLSAgZXZhbCBleGVjICRleGVjX2NtZAorICBldmFsIGV4ZWMgIiRleGVjX2NtZCIKICAgZXhpdCAkRVhJVF9GQUlMVVJFCiBmaQogCi0jIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KLWNhc2UgJG1vZGUgaW4KLSIiKSAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiBbTU9ERS1BUkddLi4uCitleGl0ICRleGl0X3N0YXR1cwogCi1Qcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KLQotICAgIC0tY29uZmlnICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCi0gICAgLS1kZWJ1ZyAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZwotLW4sIC0tZHJ5LXJ1biAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCi0gICAgLS1mZWF0dXJlcyAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0Ci0gICAgLS1maW5pc2ggICAgICAgICAgc2FtZSBhcyBcYC0tbW9kZT1maW5pc2gnCi0gICAgLS1oZWxwICAgICAgICAgICAgZGlzcGxheSB0aGlzIGhlbHAgbWVzc2FnZSBhbmQgZXhpdAotICAgIC0tbW9kZT1NT0RFICAgICAgIHVzZSBvcGVyYXRpb24gbW9kZSBNT0RFIFtkZWZhdWx0PWluZmVycmVkIGZyb20gTU9ERS1BUkdTXQotICAgIC0tcXVpZXQgICAgICAgICAgIHNhbWUgYXMgXGAtLXNpbGVudCcKLSAgICAtLXNpbGVudCAgICAgICAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0gICAgLS10YWc9VEFHICAgICAgICAgdXNlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZyb20gdGFnIFRBRwotICAgIC0tdmVyc2lvbiAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KLQotTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgotCi0gICAgICBjbGVhbiAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQotICAgICAgY29tcGlsZSAgICAgICAgIGNvbXBpbGUgYSBzb3VyY2UgZmlsZSBpbnRvIGEgbGlidG9vbCBvYmplY3QKLSAgICAgIGV4ZWN1dGUgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQotICAgICAgZmluaXNoICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKLSAgICAgIGluc3RhbGwgICAgICAgICBpbnN0YWxsIGxpYnJhcmllcyBvciBleGVjdXRhYmxlcwotICAgICAgbGluayAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQotICAgICAgdW5pbnN0YWxsICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5Ci0KLU1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFRyeSBcYCRtb2RlbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvcgotYSBtb3JlIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9mIE1PREUuCi0KLVJlcG9ydCBidWdzIHRvIDxidWctbGlidG9vbEBnbnUub3JnPi4iCi0gIGV4aXQgJEVYSVRfU1VDQ0VTUwotICA7OwotCi1jbGVhbikKLSAgJGVjaG8gXAotIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWNsZWFuIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KLQotUmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KLQotUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCi0odHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCi10byBSTS4KLQotSWYgRklMRSBpcyBhIGxpYnRvb2wgbGlicmFyeSwgb2JqZWN0IG9yIHByb2dyYW0sIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZAotd2l0aCBpdCBhcmUgZGVsZXRlZC4gT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgotICA7OwotCi1jb21waWxlKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9Y29tcGlsZSBDT01QSUxFLUNPTU1BTkQuLi4gU09VUkNFRklMRQotCi1Db21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgbGlicmFyeSBvYmplY3QuCi0KLVRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgotCi0gIC1vIE9VVFBVVC1GSUxFICAgIHNldCB0aGUgb3V0cHV0IGZpbGUgbmFtZSB0byBPVVRQVVQtRklMRQotICAtcHJlZmVyLXBpYyAgICAgICB0cnkgdG8gYnVpbGRpbmcgUElDIG9iamVjdHMgb25seQotICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKLSAgLXN0YXRpYyAgICAgICAgICAgYWx3YXlzIGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKLQotQ09NUElMRS1DT01NQU5EIGlzIGEgY29tbWFuZCB0byBiZSB1c2VkIGluIGNyZWF0aW5nIGEgXGBzdGFuZGFyZCcgb2JqZWN0IGZpbGUKLWZyb20gdGhlIGdpdmVuIFNPVVJDRUZJTEUuCi0KLVRoZSBvdXRwdXQgZmlsZSBuYW1lIGlzIGRldGVybWluZWQgYnkgcmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgZnJvbQotU09VUkNFRklMRSwgdGhlbiBzdWJzdGl0dXRpbmcgdGhlIEMgc291cmNlIGNvZGUgc3VmZml4IFxgLmMnIHdpdGggdGhlCi1saWJyYXJ5IG9iamVjdCBzdWZmaXgsIFxgLmxvJy4iCi0gIDs7Ci0KLWV4ZWN1dGUpCi0gICRlY2hvIFwKLSJVc2FnZTogJG1vZGVuYW1lIFtPUFRJT05dLi4uIC0tbW9kZT1leGVjdXRlIENPTU1BTkQgW0FSR1NdLi4uCi0KLUF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtLgotCi1UaGlzIG1vZGUgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgb3B0aW9uczoKLQotICAtZGxvcGVuIEZJTEUgICAgICBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIEZJTEUgdG8gdGhlIGxpYnJhcnkgcGF0aAotCi1UaGlzIG1vZGUgc2V0cyB0aGUgbGlicmFyeSBwYXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGFjY29yZGluZyB0byBcYC1kbG9wZW4nCi1mbGFncy4KLQotSWYgYW55IG9mIHRoZSBBUkdTIGFyZSBsaWJ0b29sIGV4ZWN1dGFibGUgd3JhcHBlcnMsIHRoZW4gdGhleSBhcmUgdHJhbnNsYXRlZAotaW50byB0aGVpciBjb3JyZXNwb25kaW5nIHVuaW5zdGFsbGVkIGJpbmFyeSwgYW5kIGFueSBvZiB0aGVpciByZXF1aXJlZCBsaWJyYXJ5Ci1kaXJlY3RvcmllcyBhcmUgYWRkZWQgdG8gdGhlIGxpYnJhcnkgcGF0aC4KLQotVGhlbiwgQ09NTUFORCBpcyBleGVjdXRlZCwgd2l0aCBBUkdTIGFzIGFyZ3VtZW50cy4iCi0gIDs7Ci0KLWZpbmlzaCkKLSAgJGVjaG8gXAotIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWZpbmlzaCBbTElCRElSXS4uLgotCi1Db21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzLgotCi1FYWNoIExJQkRJUiBpcyBhIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIGxpYnRvb2wgbGlicmFyaWVzLgotCi1UaGUgY29tbWFuZHMgdGhhdCB0aGlzIG1vZGUgZXhlY3V0ZXMgbWF5IHJlcXVpcmUgc3VwZXJ1c2VyIHByaXZpbGVnZXMuICBVc2UKLXRoZSBcYC0tZHJ5LXJ1bicgb3B0aW9uIGlmIHlvdSBqdXN0IHdhbnQgdG8gc2VlIHdoYXQgd291bGQgYmUgZXhlY3V0ZWQuIgotICA7OwotCi1pbnN0YWxsKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9aW5zdGFsbCBJTlNUQUxMLUNPTU1BTkQuLi4KLQotSW5zdGFsbCBleGVjdXRhYmxlcyBvciBsaWJyYXJpZXMuCi0KLUlOU1RBTEwtQ09NTUFORCBpcyB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmQuICBUaGUgZmlyc3QgY29tcG9uZW50IHNob3VsZCBiZQotZWl0aGVyIHRoZSBcYGluc3RhbGwnIG9yIFxgY3AnIHByb2dyYW0uCi0KLVRoZSByZXN0IG9mIHRoZSBjb21wb25lbnRzIGFyZSBpbnRlcnByZXRlZCBhcyBhcmd1bWVudHMgdG8gdGhhdCBjb21tYW5kIChvbmx5Ci1CU0QtY29tcGF0aWJsZSBpbnN0YWxsIG9wdGlvbnMgYXJlIHJlY29nbml6ZWQpLiIKLSAgOzsKLQotbGluaykKLSAgJGVjaG8gXAotIlVzYWdlOiAkbW9kZW5hbWUgW09QVElPTl0uLi4gLS1tb2RlPWxpbmsgTElOSy1DT01NQU5ELi4uCi0KLUxpbmsgb2JqZWN0IGZpbGVzIG9yIGxpYnJhcmllcyB0b2dldGhlciB0byBmb3JtIGFub3RoZXIgbGlicmFyeSwgb3IgdG8KLWNyZWF0ZSBhbiBleGVjdXRhYmxlIHByb2dyYW0uCi0KLUxJTkstQ09NTUFORCBpcyBhIGNvbW1hbmQgdXNpbmcgdGhlIEMgY29tcGlsZXIgdGhhdCB5b3Ugd291bGQgdXNlIHRvIGNyZWF0ZQotYSBwcm9ncmFtIGZyb20gc2V2ZXJhbCBvYmplY3QgZmlsZXMuCi0KLVRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBMSU5LLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgotCi0gIC1hbGwtc3RhdGljICAgICAgIGRvIG5vdCBkbyBhbnkgZHluYW1pYyBsaW5raW5nIGF0IGFsbAotICAtYXZvaWQtdmVyc2lvbiAgICBkbyBub3QgYWRkIGEgdmVyc2lvbiBzdWZmaXggaWYgcG9zc2libGUKLSAgLWRsb3BlbiBGSUxFICAgICAgXGAtZGxwcmVvcGVuJyBGSUxFIGlmIGl0IGNhbm5vdCBiZSBkbG9wZW5lZCBhdCBydW50aW1lCi0gIC1kbHByZW9wZW4gRklMRSAgIGxpbmsgaW4gRklMRSBhbmQgYWRkIGl0cyBzeW1ib2xzIHRvIGx0X3ByZWxvYWRlZF9zeW1ib2xzCi0gIC1leHBvcnQtZHluYW1pYyAgIGFsbG93IHN5bWJvbHMgZnJvbSBPVVRQVVQtRklMRSB0byBiZSByZXNvbHZlZCB3aXRoIGRsc3ltKDMpCi0gIC1leHBvcnQtc3ltYm9scyBTWU1GSUxFCi0gICAgICAgICAgICAgICAgICAgIHRyeSB0byBleHBvcnQgb25seSB0aGUgc3ltYm9scyBsaXN0ZWQgaW4gU1lNRklMRQotICAtZXhwb3J0LXN5bWJvbHMtcmVnZXggUkVHRVgKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHRvIGV4cG9ydCBvbmx5IHRoZSBzeW1ib2xzIG1hdGNoaW5nIFJFR0VYCi0gIC1MTElCRElSICAgICAgICAgIHNlYXJjaCBMSUJESVIgZm9yIHJlcXVpcmVkIGluc3RhbGxlZCBsaWJyYXJpZXMKLSAgLWxOQU1FICAgICAgICAgICAgT1VUUFVULUZJTEUgcmVxdWlyZXMgdGhlIGluc3RhbGxlZCBsaWJyYXJ5IGxpYk5BTUUKLSAgLW1vZHVsZSAgICAgICAgICAgYnVpbGQgYSBsaWJyYXJ5IHRoYXQgY2FuIGRsb3BlbmVkCi0gIC1uby1mYXN0LWluc3RhbGwgIGRpc2FibGUgdGhlIGZhc3QtaW5zdGFsbCBtb2RlCi0gIC1uby1pbnN0YWxsICAgICAgIGxpbmsgYSBub3QtaW5zdGFsbGFibGUgZXhlY3V0YWJsZQotICAtbm8tdW5kZWZpbmVkICAgICBkZWNsYXJlIHRoYXQgYSBsaWJyYXJ5IGRvZXMgbm90IHJlZmVyIHRvIGV4dGVybmFsIHN5bWJvbHMKLSAgLW8gT1VUUFVULUZJTEUgICAgY3JlYXRlIE9VVFBVVC1GSUxFIGZyb20gdGhlIHNwZWNpZmllZCBvYmplY3RzCi0gIC1vYmplY3RsaXN0IEZJTEUgIFVzZSBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGZvdW5kIGluIEZJTEUgdG8gc3BlY2lmeSBvYmplY3RzCi0gIC1wcmVjaW91cy1maWxlcy1yZWdleCBSRUdFWAotICAgICAgICAgICAgICAgICAgICBkb24ndCByZW1vdmUgb3V0cHV0IGZpbGVzIG1hdGNoaW5nIFJFR0VYCi0gIC1yZWxlYXNlIFJFTEVBU0UgIHNwZWNpZnkgcGFja2FnZSByZWxlYXNlIGluZm9ybWF0aW9uCi0gIC1ycGF0aCBMSUJESVIgICAgIHRoZSBjcmVhdGVkIGxpYnJhcnkgd2lsbCBldmVudHVhbGx5IGJlIGluc3RhbGxlZCBpbiBMSUJESVIKLSAgLVJbIF1MSUJESVIgICAgICAgYWRkIExJQkRJUiB0byB0aGUgcnVudGltZSBwYXRoIG9mIHByb2dyYW1zIGFuZCBsaWJyYXJpZXMKLSAgLXN0YXRpYyAgICAgICAgICAgZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgb2YgdW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMKLSAgLXN0YXRpYy1saWJ0b29sLWxpYnMKLSAgICAgICAgICAgICAgICAgICAgZG8gbm90IGRvIGFueSBkeW5hbWljIGxpbmtpbmcgb2YgbGlidG9vbCBsaWJyYXJpZXMKLSAgLXZlcnNpb24taW5mbyBDVVJSRU5UWzpSRVZJU0lPTls6QUdFXV0KLSAgICAgICAgICAgICAgICAgICAgc3BlY2lmeSBsaWJyYXJ5IHZlcnNpb24gaW5mbyBbZWFjaCB2YXJpYWJsZSBkZWZhdWx0cyB0byAwXQotCi1BbGwgb3RoZXIgb3B0aW9ucyAoYXJndW1lbnRzIGJlZ2lubmluZyB3aXRoIFxgLScpIGFyZSBpZ25vcmVkLgotCi1FdmVyeSBvdGhlciBhcmd1bWVudCBpcyB0cmVhdGVkIGFzIGEgZmlsZW5hbWUuICBGaWxlcyBlbmRpbmcgaW4gXGAubGEnIGFyZQotdHJlYXRlZCBhcyB1bmluc3RhbGxlZCBsaWJ0b29sIGxpYnJhcmllcywgb3RoZXIgZmlsZXMgYXJlIHN0YW5kYXJkIG9yIGxpYnJhcnkKLW9iamVjdCBmaWxlcy4KLQotSWYgdGhlIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubGEnLCB0aGVuIGEgbGlidG9vbCBsaWJyYXJ5IGlzIGNyZWF0ZWQsCi1vbmx5IGxpYnJhcnkgb2JqZWN0cyAoXGAubG8nIGZpbGVzKSBtYXkgYmUgc3BlY2lmaWVkLCBhbmQgXGAtcnBhdGgnIGlzCi1yZXF1aXJlZCwgZXhjZXB0IHdoZW4gY3JlYXRpbmcgYSBjb252ZW5pZW5jZSBsaWJyYXJ5LgotCi1JZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmEnIG9yIFxgLmxpYicsIHRoZW4gYSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGNyZWF0ZWQKLXVzaW5nIFxgYXInIGFuZCBcYHJhbmxpYicsIG9yIG9uIFdpbmRvd3MgdXNpbmcgXGBsaWInLgotCi1JZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxvJyBvciBcYC4ke29iamV4dH0nLCB0aGVuIGEgcmVsb2FkYWJsZSBvYmplY3QgZmlsZQotaXMgY3JlYXRlZCwgb3RoZXJ3aXNlIGFuIGV4ZWN1dGFibGUgcHJvZ3JhbSBpcyBjcmVhdGVkLiIKLSAgOzsKLQotdW5pbnN0YWxsKQotICAkZWNobyBcCi0iVXNhZ2U6ICRtb2RlbmFtZSBbT1BUSU9OXS4uLiAtLW1vZGU9dW5pbnN0YWxsIFJNIFtSTS1PUFRJT05dLi4uIEZJTEUuLi4KLQotUmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0KLVJNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQotKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAotdG8gUk0uCi0KLUlmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIGFsbCB0aGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGl0IGFyZSBkZWxldGVkLgotT3RoZXJ3aXNlLCBvbmx5IEZJTEUgaXRzZWxmIGlzIGRlbGV0ZWQgdXNpbmcgUk0uIgotICA7OwotCi0qKQotICAkZWNobyAiJG1vZGVuYW1lOiBpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG1vZGUnIiAxPiYyCi0gICRlY2hvICIkaGVscCIgMT4mMgotICBleGl0ICRFWElUX0ZBSUxVUkUKLSAgOzsKLWVzYWMKLQotJGVjaG8KLSRlY2hvICJUcnkgXGAkbW9kZW5hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBvdGhlciBtb2Rlcy4iCi0KLWV4aXQgJD8KIAogIyBUaGUgVEFHcyBiZWxvdyBhcmUgZGVmaW5lZCBzdWNoIHRoYXQgd2UgbmV2ZXIgZ2V0IGludG8gYSBzaXR1YXRpb24KICMgaW4gd2hpY2ggd2UgZGlzYWJsZSBib3RoIGtpbmRzIG9mIGxpYnJhcmllcy4gIEdpdmVuIGNvbmZsaWN0aW5nCkBAIC02OTQzLDE0ICs4MzkwLDE3IEBACiAjIGNvbmZpZ3VyYXRpb24uICBCdXQgd2UnbGwgbmV2ZXIgZ28gZnJvbSBzdGF0aWMtb25seSB0byBzaGFyZWQtb25seS4KIAogIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiBkaXNhYmxlLXNoYXJlZAotZGlzYWJsZV9saWJzPXNoYXJlZAorYnVpbGRfbGlidG9vbF9saWJzPW5vCitidWlsZF9vbGRfbGlicz15ZXMKICMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6IGRpc2FibGUtc2hhcmVkCiAKICMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogZGlzYWJsZS1zdGF0aWMKLWRpc2FibGVfbGlicz1zdGF0aWMKK2J1aWxkX29sZF9saWJzPWBjYXNlICRidWlsZF9saWJ0b29sX2xpYnMgaW4geWVzKSBlY2hvIG5vOzsgKikgZWNobyB5ZXM7OyBlc2FjYAogIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogZGlzYWJsZS1zdGF0aWMKIAogIyBMb2NhbCBWYXJpYWJsZXM6CiAjIG1vZGU6c2hlbGwtc2NyaXB0CiAjIHNoLWluZGVudGF0aW9uOjIKICMgRW5kOgorIyB2aTpzdz0yCisKZGlmZiAtLWdpdCBhL200L2FjX2FkZF9zZWFyY2hfcGF0aC5tNCBiL200L2FjX2FkZF9zZWFyY2hfcGF0aC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTBhODE5Ci0tLSAvZGV2L251bGwKKysrIGIvbTQvYWNfYWRkX3NlYXJjaF9wYXRoLm00CkBAIC0wLDAgKzEsMTMgQEAKK2RubAorZG5sIEFkZCBhIHNlYXJjaCBwYXRoIHRvIHRoZSBMSUJTIGFuZCBDUFBGTEFHUyB2YXJpYWJsZXMKK2RubAorQUNfREVGVU4oW0FDX0FERF9TRUFSQ0hfUEFUSF0sWworICBpZiB0ZXN0ICJ4JDEiICE9IHggLWEgLWQgJDE7IHRoZW4KKyAgICAgaWYgdGVzdCAtZCAkMS9saWI7IHRoZW4KKyAgICAgICBMREZMQUdTPSItTCQxL2xpYiAkTERGTEFHUyIKKyAgICAgZmkKKyAgICAgaWYgdGVzdCAtZCAkMS9pbmNsdWRlOyB0aGVuCisJQ1BQRkxBR1M9Ii1JJDEvaW5jbHVkZSAkQ1BQRkxBR1MiCisgICAgIGZpCisgIGZpCitdKQpkaWZmIC0tZ2l0IGEvbTQvYWNfbXNnX2NhY2hlLm00IGIvbTQvYWNfbXNnX2NhY2hlLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZDdjZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9hY19tc2dfY2FjaGUubTQKQEAgLTAsMCArMSwyNCBAQAorZG5sCitkbmwgU3RvcmUgaW5mb3JtYXRpb24gZm9yIGRpc3BsYXlpbmcgbGF0ZXIuCitkbmwKK0FDX0RFRlVOKFtBQ19NU0dfQ0FDSEVfSU5JVF0sWworICBybSAtZiBjb25maWd1cmUtc3VtbWFyeQorXSkKKworQUNfREVGVU4oW0FDX01TR19DQUNIRV9BRERdLFsKKyAgY2F0ID4+IGNvbmZpZ3VyZS1zdW1tYXJ5IDw8IEVPRgorICAkMQorRU9GCitdKQorCitBQ19ERUZVTihbQUNfTVNHX0NBQ0hFX0RJU1BMQVldLFsKKyAgZWNobyAiIgorICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgIGVjaG8gIiAgICAgICAgICAgIE5ldC1TTk1QIGNvbmZpZ3VyYXRpb24gc3VtbWFyeToiCisgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKyAgZWNobyAiIgorICBjYXQgY29uZmlndXJlLXN1bW1hcnkKKyAgZWNobyAiIgorICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCisgIGVjaG8gIiIKK10pCmRpZmYgLS1naXQgYS9tNC9hY19tc2dfbW9kdWxlX2RiZy5tNCBiL200L2FjX21zZ19tb2R1bGVfZGJnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyY2IzMTcKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9hY19tc2dfbW9kdWxlX2RiZy5tNApAQCAtMCwwICsxLDcgQEAKK0FDX0RFRlVOKFtBQ19NU0dfTU9EVUxFX0RCR10sCitbCisgIGlmIHRlc3QgJG1vZHVsZV9kZWJ1ZyA9IDE7IHRoZW4KKyAgICBlY2hvICQxICQyICQzICQ0CisgIGZpCitdCispCmRpZmYgLS1naXQgYS9tNC9hY19wcm9tcHRfdXNlci5tNCBiL200L2FjX3Byb21wdF91c2VyLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiMmRkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9hY19wcm9tcHRfdXNlci5tNApAQCAtMCwwICsxLDUyIEBACitkbmwgQHN5bm9wc2lzIEFDX1BST01QVF9VU0VSX05PX0RFRklORShWQVJJQUJMRU5BTUUsUVVFU1RJT04sW0RFRkFVTFRdKQorZG5sCitkbmwgQXNrcyBhIFFVRVNUSU9OIGFuZCBwdXRzIHRoZSByZXN1bHRzIGluIFZBUklBQkxFTkFNRSB3aXRoIGFuIG9wdGlvbmFsCitkbmwgREVGQVVMVCB2YWx1ZSBpZiB0aGUgdXNlciBtZXJlbHkgaGl0cyByZXR1cm4uCitkbmwKK2RubCBAdmVyc2lvbiAxLjE1CitkbmwgQGF1dGhvciBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK2RubAorQUNfREVGVU4oW0FDX1BST01QVF9VU0VSX05PX0RFRklORV0sCitbCitpZiB0ZXN0ICJ4JGRlZmF1bHRzIiA9ICJ4bm8iOyB0aGVuCitlY2hvICRFQ0hPX04gIiQyICgkMyk6ICRFQ0hPX0MiCityZWFkIHRtcGlucHV0IDwmQVNfT1JJR0lOQUxfU1RESU5fRkQKK2lmIHRlc3QgIiR0bXBpbnB1dCIgPSAiIiAtYSAiJDMiICE9ICIiOyB0aGVuCisgIHRtcGlucHV0PSIkMyIKK2ZpCitldmFsICQxPVwiJHRtcGlucHV0XCIKK2Vsc2UKK3RtcGlucHV0PSIkMyIKK2V2YWwgJDE9XCIkdG1waW5wdXRcIgorZmkKK10pIGRubCBkb25lIEFDX1BST01QVF9VU0VSCisKK2RubCBAc3lub3BzaXMgQUNfUFJPTVBUX1VTRVIoVkFSSUFCTEVOQU1FLFFVRVNUSU9OLFtERUZBVUxUXSxRVU9URUQpCitkbmwKK2RubCBBc2tzIGEgUVVFU1RJT04gYW5kIHB1dHMgdGhlIHJlc3VsdHMgaW4gVkFSSUFCTEVOQU1FIHdpdGggYW4gb3B0aW9uYWwKK2RubCBERUZBVUxUIHZhbHVlIGlmIHRoZSB1c2VyIG1lcmVseSBoaXRzIHJldHVybi4gIEFsc28gY2FsbHMKK2RubCBBQ19ERUZJTkVfVU5RVU9URUQoKSBvbiB0aGUgVkFSSUFCTEVOQU1FIGZvciBWQVJJQUJMRU5BTUVzIHRoYXQgc2hvdWxkCitkbmwgYmUgZW50ZXJlZCBpbnRvIHRoZSBjb25maWcuaCBmaWxlIGFzIHdlbGwuICBJZiBRVU9URUQgaXMgInF1b3RlZCIgdGhlbgorZG5sIHRoZSByZXN1bHQgd2lsbCBiZSBkZWZpbmVkIHdpdGhpbiBxdW90ZXMuCitkbmwKK2RubCBAdmVyc2lvbiAxLjE1CitkbmwgQGF1dGhvciBXZXMgSGFyZGFrZXIgPGhhcmRha2VyQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK2RubAorQUNfREVGVU4oW0FDX1BST01QVF9VU0VSXSwKK1sKK01TR19DSEVDSz0icGF0c3Vic3QoWyQyXSwgWy4qCitdLCBbXSkiCitBQ19DQUNIRV9DSEVDSygkTVNHX0NIRUNLLCBhY19jdl91c2VyX3Byb21wdF8kMSwKK1tlY2hvICIiID4mQVNfTUVTU0FHRV9GRAorQUNfUFJPTVBUX1VTRVJfTk9fREVGSU5FKCQxLFskMl0sJDMpCitldmFsIGFjX2N2X3VzZXJfcHJvbXB0XyQxPVwkJDEKK2VjaG8gJEVDSE9fTiAic2V0dGluZyAkTVNHX0NIRUNLIHRvLi4uICAkRUNIT19DIiA+JkFTX01FU1NBR0VfRkQKK10pCitpZiB0ZXN0ICIkYWNfY3ZfdXNlcl9wcm9tcHRfJDEiICE9ICJub25lIjsgdGhlbgorICBpZiB0ZXN0ICJ4JDQiID0gInhxdW90ZWQiIC1vICJ4JDQiID0gInhRVU9URUQiOyB0aGVuCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKCQxLCIkYWNfY3ZfdXNlcl9wcm9tcHRfJDEiKQorICBlbHNlCisgICAgQUNfREVGSU5FX1VOUVVPVEVEKCQxLCRhY19jdl91c2VyX3Byb21wdF8kMSkKKyAgZmkKK2ZpCitdKSBkbmwKZGlmZiAtLWdpdCBhL200L2xpYnRvb2wubTQgYi9tNC9saWJ0b29sLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5YmE5OTYKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9saWJ0b29sLm00CkBAIC0wLDAgKzEsNzM1NyBAQAorIyBsaWJ0b29sLm00IC0gQ29uZmlndXJlIGxpYnRvb2wgZm9yIHRoZSBob3N0IHN5c3RlbS4gLSotQXV0b2NvbmYtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCisjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCittNF9kZWZpbmUoW19MVF9DT1BZSU5HXSwgW2RubAorIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorIworIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorIworIyBHTlUgTGlidG9vbCBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLAorIyBpZiB5b3UgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gb3IgbGlicmFyeSB0aGF0CisjIGlzIGJ1aWx0IHVzaW5nIEdOVSBMaWJ0b29sLCB5b3UgbWF5IGluY2x1ZGUgdGhpcyBmaWxlIHVuZGVyIHRoZQorIyBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKyMKKyMgR05VIExpYnRvb2wgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIEdOVSBMaWJ0b29sOyBzZWUgdGhlIGZpbGUgQ09QWUlORy4gIElmIG5vdCwgYSBjb3B5CisjIGNhbiBiZSBkb3dubG9hZGVkIGZyb20gaHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzL2dwbC5odG1sLCBvcgorIyBvYnRhaW5lZCBieSB3cml0aW5nIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCisjIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorXSkKKworIyBzZXJpYWwgNTYgTFRfSU5JVAorCisKKyMgTFRfUFJFUkVRKFZFUlNJT04pCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb21wbGFpbiBhbmQgZXhpdCBpZiB0aGlzIGxpYnRvb2wgdmVyc2lvbiBpcyBsZXNzIHRoYXQgVkVSU0lPTi4KK200X2RlZnVuKFtMVF9QUkVSRVFdLAorW200X2lmKG00X3ZlcnNpb25fY29tcGFyZShtNF9kZWZuKFtMVF9QQUNLQUdFX1ZFUlNJT05dKSwgWyQxXSksIC0xLAorICAgICAgIFttNF9kZWZhdWx0KFskM10sCisJCSAgIFttNF9mYXRhbChbTGlidG9vbCB2ZXJzaW9uICQxIG9yIGhpZ2hlciBpcyByZXF1aXJlZF0sCisJCSAgICAgICAgICAgICA2MyldKV0sCisgICAgICAgWyQyXSldKQorCisKKyMgX0xUX0NIRUNLX0JVSUxERElSCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorIyBDb21wbGFpbiBpZiB0aGUgYWJzb2x1dGUgYnVpbGQgZGlyZWN0b3J5IG5hbWUgY29udGFpbnMgdW51c3VhbCBjaGFyYWN0ZXJzCittNF9kZWZ1bihbX0xUX0NIRUNLX0JVSUxERElSXSwKK1tjYXNlIGBwd2RgIGluCisgICpcICogfCAqXAkqKQorICAgIEFDX01TR19XQVJOKFtMaWJ0b29sIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHdoaXRlc3BhY2UgaW4gYHB3ZGBdKSA7OworZXNhYworXSkKKworCisjIExUX0lOSVQoW09QVElPTlNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9JTklUXSwKK1tBQ19QUkVSRVEoWzIuNThdKWRubCBXZSB1c2UgQUNfSU5DTFVERVNfREVGQVVMVAorQUNfQkVGT1JFKFskMF0sIFtMVF9MQU5HXSlkbmwKK0FDX0JFRk9SRShbJDBdLCBbTFRfT1VUUFVUXSlkbmwKK0FDX0JFRk9SRShbJDBdLCBbTFRETF9JTklUXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19CVUlMRERJUl0pZG5sCisKK2RubCBBdXRvY29uZiBkb2Vzbid0IGNhdGNoIHVuZXhwYW5kZWQgTFRfIG1hY3JvcyBieSBkZWZhdWx0OgorbTRfcGF0dGVybl9mb3JiaWQoW15fP0xUX1tBLVpfXSskXSlkbmwKK200X3BhdHRlcm5fYWxsb3coW14oX0xUX0VPRnxMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XfExUX01VTFRJX01PRFVMRSkkXSlkbmwKK2RubCBhY2xvY2FsIGRvZXNuJ3QgcHVsbCBsdG9wdGlvbnMubTQsIGx0c3VnYXIubTQsIG9yIGx0dmVyc2lvbi5tNAorZG5sIHVubGVzcyB3ZSByZXF1aXJlIGFuIEFDX0RFRlVOZWQgbWFjcm86CitBQ19SRVFVSVJFKFtMVE9QVElPTlNfVkVSU0lPTl0pZG5sCitBQ19SRVFVSVJFKFtMVFNVR0FSX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbTFRWRVJTSU9OX1ZFUlNJT05dKWRubAorQUNfUkVRVUlSRShbTFRPQlNPTEVURV9WRVJTSU9OXSlkbmwKK200X3JlcXVpcmUoW19MVF9QUk9HX0xUTUFJTl0pZG5sCisKK2RubCBQYXJzZSBPUFRJT05TCitfTFRfU0VUX09QVElPTlMoWyQwXSwgWyQxXSkKKworIyBUaGlzIGNhbiBiZSB1c2VkIHRvIHJlYnVpbGQgbGlidG9vbCB3aGVuIG5lZWRlZAorTElCVE9PTF9ERVBTPSIkbHRtYWluIgorCisjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCitBQ19TVUJTVChMSUJUT09MKWRubAorCitfTFRfU0VUVVAKKworIyBPbmx5IGV4cGFuZCBvbmNlOgorbTRfZGVmaW5lKFtMVF9JTklUXSkKK10pIyBMVF9JTklUCisKKyMgT2xkIG5hbWVzOgorQVVfQUxJQVMoW0FDX1BST0dfTElCVE9PTF0sIFtMVF9JTklUXSkKK0FVX0FMSUFTKFtBTV9QUk9HX0xJQlRPT0xdLCBbTFRfSU5JVF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX1BST0dfTElCVE9PTF0sIFtdKQorZG5sIEFDX0RFRlVOKFtBTV9QUk9HX0xJQlRPT0xdLCBbXSkKKworCisjIF9MVF9DQ19CQVNFTkFNRShDQykKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDYWxjdWxhdGUgY2NfYmFzZW5hbWUuICBTa2lwIGtub3duIGNvbXBpbGVyIHdyYXBwZXJzIGFuZCBjcm9zcy1wcmVmaXguCittNF9kZWZ1bihbX0xUX0NDX0JBU0VOQU1FXSwKK1tmb3IgY2NfdGVtcCBpbiAkMSIiOyBkbworICBjYXNlICRjY190ZW1wIGluCisgICAgY29tcGlsZSB8ICpbW1xcL11dY29tcGlsZSB8IGNjYWNoZSB8ICpbW1xcL11dY2NhY2hlICkgOzsKKyAgICBkaXN0Y2MgfCAqW1tcXC9dXWRpc3RjYyB8IHB1cmlmeSB8ICpbW1xcL11dcHVyaWZ5ICkgOzsKKyAgICBcLSopIDs7CisgICAgKikgYnJlYWs7OworICBlc2FjCitkb25lCitjY19iYXNlbmFtZT1gJEVDSE8gIlgkY2NfdGVtcCIgfCAkWHNlZCAtZSAncyUuKi8lJScgLWUgInMlXiRob3N0X2FsaWFzLSUlImAKK10pCisKKworIyBfTFRfRklMRVVUSUxTX0RFRkFVTFRTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSXQgaXMgb2theSB0byB1c2UgdGhlc2UgZmlsZSBjb21tYW5kcyBhbmQgYXNzdW1lIHRoZXkgaGF2ZSBiZWVuIHNldAorIyBzZW5zaWJseSBhZnRlciBgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pJy4KK200X2RlZnVuKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSwKK1s6ICR7Q1A9ImNwIC1mIn0KKzogJHtNVj0ibXYgLWYifQorOiAke1JNPSJybSAtZiJ9CitdKSMgX0xUX0ZJTEVVVElMU19ERUZBVUxUUworCisKKyMgX0xUX1NFVFVQCisjIC0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9TRVRVUF0sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0JVSUxEXSlkbmwKK19MVF9ERUNMKFtdLCBbaG9zdF9hbGlhc10sIFswXSwgW1RoZSBob3N0IHN5c3RlbV0pZG5sCitfTFRfREVDTChbXSwgW2hvc3RdLCBbMF0pZG5sCitfTFRfREVDTChbXSwgW2hvc3Rfb3NdLCBbMF0pZG5sCitkbmwKK19MVF9ERUNMKFtdLCBbYnVpbGRfYWxpYXNdLCBbMF0sIFtUaGUgYnVpbGQgc3lzdGVtXSlkbmwKK19MVF9ERUNMKFtdLCBbYnVpbGRdLCBbMF0pZG5sCitfTFRfREVDTChbXSwgW2J1aWxkX29zXSwgWzBdKWRubAorZG5sCitBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAorQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCitkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfTE5fU10pZG5sCit0ZXN0IC16ICIkTE5fUyIgJiYgTE5fUz0ibG4gLXMiCitfTFRfREVDTChbXSwgW0xOX1NdLCBbMV0sIFtXaGV0aGVyIHdlIG5lZWQgc29mdCBvciBoYXJkIGxpbmtzXSlkbmwKK2RubAorQUNfUkVRVUlSRShbTFRfQ01EX01BWF9MRU5dKWRubAorX0xUX0RFQ0woW29iamV4dF0sIFthY19vYmpleHRdLCBbMF0sIFtPYmplY3QgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICJvIildKWRubAorX0xUX0RFQ0woW10sIFtleGVleHRdLCBbMF0sIFtFeGVjdXRhYmxlIGZpbGUgc3VmZml4IChub3JtYWxseSAiIildKWRubAorZG5sCittNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10pZG5sCittNF9yZXF1aXJlKFtfTFRfQ01EX1JFTE9BRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9EXSlkbmwKK200X3JlcXVpcmUoW19MVF9DTURfT0xEX0FSQ0hJVkVdKWRubAorbTRfcmVxdWlyZShbX0xUX0NNRF9HTE9CQUxfU1lNQk9MU10pZG5sCisKK19MVF9DT05GSUdfTElCVE9PTF9JTklUKFsKKyMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKKyMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzIElOSVQuCitpZiB0ZXN0IC1uICJcJHtaU0hfVkVSU0lPTitzZXR9IiA7IHRoZW4KKyAgIHNldG9wdCBOT19HTE9CX1NVQlNUCitmaQorXSkKK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCisgICBzZXRvcHQgTk9fR0xPQl9TVUJTVAorZmkKKworX0xUX0NIRUNLX09CSkRJUgorCittNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKK19MVF9QUk9HX0VDSE9fQkFDS1NMQVNICisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeDMqKQorICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKKyAgIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCisgICMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KKyAgaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgICAgQ09MTEVDVF9OQU1FUz0KKyAgICBleHBvcnQgQ09MTEVDVF9OQU1FUworICBmaQorICA7OworZXNhYworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBoZWxwcyB1cyBkbyByb2J1c3QgcXVvdGluZy4gIEl0IGJhY2tzbGFzaGlmaWVzCisjIG1ldGFjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlLXF1b3RlZCBzdHJpbmdzLgorc2VkX3F1b3RlX3N1YnN0PSdzL1woW1siYCRcXF1dXCkvXFxcMS9nJworCisjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KK2RvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFtbImBcXF1dXCkvXFxcMS9nJworCisjIFNlZCBzdWJzdGl0dXRpb24gdG8gZGVsYXkgZXhwYW5zaW9uIG9mIGFuIGVzY2FwZWQgc2hlbGwgdmFyaWFibGUgaW4gYQorIyBkb3VibGVfcXVvdGVfc3Vic3QnZWQgc3RyaW5nLgorZGVsYXlfdmFyaWFibGVfc3Vic3Q9J3MvXFxcXFxcXFxcXFwkL1xcXFxcXCQvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRvIGRlbGF5IGV4cGFuc2lvbiBvZiBhbiBlc2NhcGVkIHNpbmdsZSBxdW90ZS4KK2RlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdD0ncy8nXCcnLydcJ1xcXFxcXFwnXCcnL2cnCisKKyMgU2VkIHN1YnN0aXR1dGlvbiB0byBhdm9pZCBhY2NpZGVudGFsIGdsb2JiaW5nIGluIGV2YWxlZCBleHByZXNzaW9ucworbm9fZ2xvYl9zdWJzdD0ncy9cKi9cXFwqL2cnCisKKyMgR2xvYmFsIHZhcmlhYmxlczoKK29maWxlPWxpYnRvb2wKK2Nhbl9idWlsZF9zaGFyZWQ9eWVzCisKKyMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyB3aGljaCBuZWVkcyAnLmxpYicpLgorbGliZXh0PWEKKword2l0aF9nbnVfbGQ9IiRsdF9jdl9wcm9nX2dudV9sZCIKKworb2xkX0NDPSIkQ0MiCitvbGRfQ0ZMQUdTPSIkQ0ZMQUdTIgorCisjIFNldCBzYW5lIGRlZmF1bHRzIGZvciB2YXJpb3VzIHZhcmlhYmxlcwordGVzdCAteiAiJENDIiAmJiBDQz1jYwordGVzdCAteiAiJExUQ0MiICYmIExUQ0M9JENDCit0ZXN0IC16ICIkTFRDRkxBR1MiICYmIExUQ0ZMQUdTPSRDRkxBR1MKK3Rlc3QgLXogIiRMRCIgJiYgTEQ9bGQKK3Rlc3QgLXogIiRhY19vYmpleHQiICYmIGFjX29iamV4dD1vCisKK19MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKKworIyBPbmx5IHBlcmZvcm0gdGhlIGNoZWNrIGZvciBmaWxlLCBpZiB0aGUgY2hlY2sgbWV0aG9kIHJlcXVpcmVzIGl0Cit0ZXN0IC16ICIkTUFHSUNfQ01EIiAmJiBNQUdJQ19DTUQ9ZmlsZQorY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KK2ZpbGVfbWFnaWMqKQorICBpZiB0ZXN0ICIkZmlsZV9tYWdpY19jbWQiID0gJyRNQUdJQ19DTUQnOyB0aGVuCisgICAgX0xUX1BBVEhfTUFHSUMKKyAgZmkKKyAgOzsKK2VzYWMKKworIyBVc2UgQyBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpbiB0aGUgbGlidG9vbCBzY3JpcHQKK0xUX1NVUFBPUlRFRF9UQUcoW0NDXSkKK19MVF9MQU5HX0NfQ09ORklHCitfTFRfTEFOR19ERUZBVUxUX0NPTkZJRworX0xUX0NPTkZJR19DT01NQU5EUworXSkjIF9MVF9TRVRVUAorCisKKyMgX0xUX1BST0dfTFRNQUlOCisjIC0tLS0tLS0tLS0tLS0tLQorIyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIGNhbGxlZCBib3RoIGZyb20gYGNvbmZpZ3VyZScsIGFuZCBgY29uZmlnLnN0YXR1cycKKyMgbm93IHRoYXQgd2UgdXNlIEFDX0NPTkZJR19DT01NQU5EUyB0byBnZW5lcmF0ZSBsaWJ0b29sLiAgTm90YWJseSwKKyMgYGNvbmZpZy5zdGF0dXMnIGhhcyBubyB2YWx1ZSBmb3IgYWNfYXV4X2RpciB1bmxlc3Mgd2UgYXJlIHVzaW5nIEF1dG9tYWtlLAorIyBzbyB3ZSBwYXNzIGEgY29weSBhbG9uZyB0byBtYWtlIHN1cmUgaXQgaGFzIGEgc2Vuc2libGUgdmFsdWUgYW55d2F5LgorbTRfZGVmdW4oW19MVF9QUk9HX0xUTUFJTl0sCitbbTRfaWZkZWYoW0FDX1JFUVVJUkVfQVVYX0ZJTEVdLCBbQUNfUkVRVUlSRV9BVVhfRklMRShbbHRtYWluLnNoXSldKWRubAorX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW2FjX2F1eF9kaXI9JyRhY19hdXhfZGlyJ10pCitsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKK10pIyBfTFRfUFJPR19MVE1BSU4KKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBBY2N1bXVsYXRlIGNvZGUgZm9yIGNyZWF0aW5nIGxpYnRvb2wuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgU28gdGhhdCB3ZSBjYW4gcmVjcmVhdGUgYSBmdWxsIGxpYnRvb2wgc2NyaXB0IGluY2x1ZGluZyBhZGRpdGlvbmFsCisjIHRhZ3MsIHdlIGFjY3VtdWxhdGUgdGhlIGNodW5rcyBvZiBjb2RlIHRvIHNlbmQgdG8gQUNfQ09ORklHX0NPTU1BTkRTCisjIGluIG1hY3JvcyBhbmQgdGhlbiBtYWtlIGEgc2luZ2xlIGNhbGwgYXQgdGhlIGVuZCB1c2luZyB0aGUgYGxpYnRvb2wnCisjIGxhYmVsLgorCisKKyMgX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW0lOSVQtQ09NTUFORFNdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZ2lzdGVyIElOSVQtQ09NTUFORFMgdG8gYmUgcGFzc2VkIHRvIEFDX0NPTkZJR19DT01NQU5EUyBsYXRlci4KK200X2RlZmluZShbX0xUX0NPTkZJR19MSUJUT09MX0lOSVRdLAorW200X2lmdmFsKFskMV0sCisgICAgICAgICAgW200X2FwcGVuZChbX0xUX09VVFBVVF9MSUJUT09MX0lOSVRdLAorICAgICAgICAgICAgICAgICAgICAgWyQxCitdKV0pXSkKKworIyBJbml0aWFsaXplLgorbTRfZGVmaW5lKFtfTFRfT1VUUFVUX0xJQlRPT0xfSU5JVF0pCisKKworIyBfTFRfQ09ORklHX0xJQlRPT0woW0NPTU1BTkRTXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZ2lzdGVyIENPTU1BTkRTIHRvIGJlIHBhc3NlZCB0byBBQ19DT05GSUdfQ09NTUFORFMgbGF0ZXIuCittNF9kZWZpbmUoW19MVF9DT05GSUdfTElCVE9PTF0sCitbbTRfaWZ2YWwoWyQxXSwKKyAgICAgICAgICBbbTRfYXBwZW5kKFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNdLAorICAgICAgICAgICAgICAgICAgICAgWyQxCitdKV0pXSkKKworIyBJbml0aWFsaXplLgorbTRfZGVmaW5lKFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNdKQorCisKKyMgX0xUX0NPTkZJR19TQVZFX0NPTU1BTkRTKFtDT01NQU5EU10sIFtJTklUX0NPTU1BTkRTXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfQ09ORklHX1NBVkVfQ09NTUFORFNdLAorW19MVF9DT05GSUdfTElCVE9PTChbJDFdKQorX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWyQyXSkKK10pCisKKworIyBfTFRfRk9STUFUX0NPTU1FTlQoW0NPTU1FTlRdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBZGQgbGVhZGluZyBjb21tZW50IG1hcmtzIHRvIHRoZSBzdGFydCBvZiBlYWNoIGxpbmUsIGFuZCBhIHRyYWlsaW5nCisjIGZ1bGwtc3RvcCB0byB0aGUgd2hvbGUgY29tbWVudCBpZiBvbmUgaXMgbm90IHByZXNlbnQgYWxyZWFkeS4KK200X2RlZmluZShbX0xUX0ZPUk1BVF9DT01NRU5UXSwKK1ttNF9pZnZhbChbJDFdLCBbCittNF9icGF0c3Vic3QoW200X2JwYXRzdWJzdChbJDFdLCBbXiAqXSwgWyMgXSldLAorICAgICAgICAgICAgICBbWydgJFxdXSwgW1xcXCZdKV1tNF9ibWF0Y2goWyQxXSwgW1shPy5dJF0sIFtdLCBbLl0pCispXSkKKworCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgRklYTUU6IEVsaW1pbmF0ZSBWQVJOQU1FICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworCisjIF9MVF9ERUNMKFtDT05GSUdOQU1FXSwgVkFSTkFNRSwgVkFMVUUsIFtERVNDUklQVElPTl0sIFtJUy1UQUdHRUQ/XSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDT05GSUdOQU1FIGlzIHRoZSBuYW1lIGdpdmVuIHRvIHRoZSB2YWx1ZSBpbiB0aGUgbGlidG9vbCBzY3JpcHQuCisjIFZBUk5BTUUgaXMgdGhlIChiYXNlKSBuYW1lIHVzZWQgaW4gdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCisjIFZBTFVFIG1heSBiZSAwLCAxIG9yIDIgZm9yIGEgY29tcHV0ZWQgcXVvdGUgZXNjYXBlZCB2YWx1ZSBiYXNlZCBvbgorIyBWQVJOQU1FLiAgQW55IG90aGVyIHZhbHVlIHdpbGwgYmUgdXNlZCBkaXJlY3RseS4KK200X2RlZmluZShbX0xUX0RFQ0xdLAorW2x0X2lmX2FwcGVuZF91bmlxKFtsdF9kZWNsX3Zhcm5hbWVzXSwgWyQyXSwgWywgXSwKKyAgICBbbHRfZGljdF9hZGRfc3Via2V5KFtsdF9kZWNsX2RpY3RdLCBbJDJdLCBbbGlidG9vbF9uYW1lXSwKKwlbbTRfaWZ2YWwoWyQxXSwgWyQxXSwgWyQyXSldKQorICAgIGx0X2RpY3RfYWRkX3N1YmtleShbbHRfZGVjbF9kaWN0XSwgWyQyXSwgW3ZhbHVlXSwgWyQzXSkKKyAgICBtNF9pZnZhbChbJDRdLAorCVtsdF9kaWN0X2FkZF9zdWJrZXkoW2x0X2RlY2xfZGljdF0sIFskMl0sIFtkZXNjcmlwdGlvbl0sIFskNF0pXSkKKyAgICBsdF9kaWN0X2FkZF9zdWJrZXkoW2x0X2RlY2xfZGljdF0sIFskMl0sCisJW3RhZ2dlZD9dLCBbbTRfaWZ2YWwoWyQ1XSwgW3llc10sIFtub10pXSldKQorXSkKKworCisjIF9MVF9UQUdERUNMKFtDT05GSUdOQU1FXSwgVkFSTkFNRSwgVkFMVUUsIFtERVNDUklQVElPTl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVF9UQUdERUNMXSwgW19MVF9ERUNMKFskMV0sIFskMl0sIFskM10sIFskNF0sIFt5ZXNdKV0pCisKKworIyBsdF9kZWNsX3RhZ192YXJuYW1lcyhbU0VQQVJBVE9SXSwgW1ZBUk5BTUUxLi4uXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RlY2xfdGFnX3Zhcm5hbWVzXSwKK1tfbHRfZGVjbF9maWx0ZXIoW3RhZ2dlZD9dLCBbeWVzXSwgJEApXSkKKworCisjIF9sdF9kZWNsX2ZpbHRlcihTVUJLRVksIFZBTFVFLCBbU0VQQVJBVE9SXSwgW1ZBUk5BTUUxLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX2x0X2RlY2xfZmlsdGVyXSwKK1ttNF9jYXNlKFskI10sCisgIFswXSwgW200X2ZhdGFsKFskMDogdG9vIGZldyBhcmd1bWVudHM6ICQjXSldLAorICBbMV0sIFttNF9mYXRhbChbJDA6IHRvbyBmZXcgYXJndW1lbnRzOiAkIzogJDFdKV0sCisgIFsyXSwgW2x0X2RpY3RfZmlsdGVyKFtsdF9kZWNsX2RpY3RdLCBbJDFdLCBbJDJdLCBbXSwgbHRfZGVjbF92YXJuYW1lcyldLAorICBbM10sIFtsdF9kaWN0X2ZpbHRlcihbbHRfZGVjbF9kaWN0XSwgWyQxXSwgWyQyXSwgWyQzXSwgbHRfZGVjbF92YXJuYW1lcyldLAorICBbbHRfZGljdF9maWx0ZXIoW2x0X2RlY2xfZGljdF0sICRAKV0pW11kbmwKK10pCisKKworIyBsdF9kZWNsX3F1b3RlX3Zhcm5hbWVzKFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kZWNsX3F1b3RlX3Zhcm5hbWVzXSwKK1tfbHRfZGVjbF9maWx0ZXIoW3ZhbHVlXSwgWzFdLCAkQCldKQorCisKKyMgbHRfZGVjbF9kcXVvdGVfdmFybmFtZXMoW1NFUEFSQVRPUl0sIFtWQVJOQU1FMS4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kZWNsX2RxdW90ZV92YXJuYW1lc10sCitbX2x0X2RlY2xfZmlsdGVyKFt2YWx1ZV0sIFsyXSwgJEApXSkKKworCisjIGx0X2RlY2xfdmFybmFtZXNfdGFnZ2VkKFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfZGVjbF92YXJuYW1lc190YWdnZWRdLAorW200X2Fzc2VydChbJCMgPD0gMl0pZG5sCitfJDAobTRfcXVvdGUobTRfZGVmYXVsdChbJDFdLCBbWywgXV0pKSwKKyAgICBtNF9pZnZhbChbJDJdLCBbWyQyXV0sIFttNF9kcXVvdGUobHRfZGVjbF90YWdfdmFybmFtZXMpXSksCisgICAgbTRfc3BsaXQobTRfbm9ybWFsaXplKG00X3F1b3RlKF9MVF9UQUdTKSksIFsgXSkpXSkKK200X2RlZmluZShbX2x0X2RlY2xfdmFybmFtZXNfdGFnZ2VkXSwKK1ttNF9pZnZhbChbJDNdLCBbbHRfY29tYmluZShbJDFdLCBbJDJdLCBbX10sICQzKV0pXSkKKworCisjIGx0X2RlY2xfYWxsX3Zhcm5hbWVzKFtTRVBBUkFUT1JdLCBbVkFSTkFNRTEuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfZGVjbF9hbGxfdmFybmFtZXNdLAorW18kMChtNF9xdW90ZShtNF9kZWZhdWx0KFskMV0sIFtbLCBdXSkpLAorICAgICBtNF9pZihbJDJdLCBbXSwKKwkgICBtNF9xdW90ZShsdF9kZWNsX3Zhcm5hbWVzKSwKKwltNF9xdW90ZShtNF9zaGlmdCgkQCkpKSlbXWRubAorXSkKK200X2RlZmluZShbX2x0X2RlY2xfYWxsX3Zhcm5hbWVzXSwKK1tsdF9qb2luKCRALCBsdF9kZWNsX3Zhcm5hbWVzX3RhZ2dlZChbJDFdLAorCQkJbHRfZGVjbF90YWdfdmFybmFtZXMoW1ssIF1dLCBtNF9zaGlmdCgkQCkpKSlkbmwKK10pCisKKworIyBfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFKFtWQVJOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFF1b3RlIGEgdmFyaWFibGUgdmFsdWUsIGFuZCBmb3J3YXJkIGl0IHRvIGBjb25maWcuc3RhdHVzJyBzbyB0aGF0IGl0cworIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gYGNvbmZpZ3VyZScuICBWQVJOQU1FCisjIG11c3QgaGF2ZSBhIHNpbmdsZSBxdW90ZSBkZWxpbWl0ZWQgdmFsdWUgZm9yIHRoaXMgdG8gd29yay4KK200X2RlZmluZShbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRV0sCitbJDE9J2AkRUNITyAiWCRdWyQxIiB8ICRYc2VkIC1lICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnXSkKKworCisjIF9MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkFUSU9OUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgV2UgZGVsaW1pdCBsaWJ0b29sIGNvbmZpZyB2YXJpYWJsZXMgd2l0aCBzaW5nbGUgcXVvdGVzLCBzbyB3aGVuCisjIHdlIHdyaXRlIHRoZW0gdG8gY29uZmlnLnN0YXR1cywgd2UgaGF2ZSB0byBiZSBzdXJlIHRvIHF1b3RlIGFsbAorIyBlbWJlZGRlZCBzaW5nbGUgcXVvdGVzIHByb3Blcmx5LiAgSW4gY29uZmlndXJlLCB0aGlzIG1hY3JvIGV4cGFuZHMKKyMgZWFjaCB2YXJpYWJsZSBkZWNsYXJlZCB3aXRoIF9MVF9ERUNMIChhbmQgX0xUX1RBR0RFQ0wpIGludG86CisjCisjICAgIDx2YXI+PSdgJEVDSE8gIlgkPHZhcj4iIHwgJFhzZWQgLWUgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK200X2RlZnVuKFtfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlNdLAorW200X2ZvcmVhY2goW19sdF92YXJdLCBtNF9xdW90ZShsdF9kZWNsX2FsbF92YXJuYW1lcyksCisgICAgW200X24oW19MVF9DT05GSUdfU1RBVFVTX0RFQ0xBUkUoX2x0X3ZhcildKV0pXSkKKworCisjIF9MVF9MSUJUT09MX1RBR1MKKyMgLS0tLS0tLS0tLS0tLS0tLQorIyBPdXRwdXQgY29tbWVudCBhbmQgbGlzdCBvZiB0YWdzIHN1cHBvcnRlZCBieSB0aGUgc2NyaXB0CittNF9kZWZ1bihbX0xUX0xJQlRPT0xfVEFHU10sCitbX0xUX0ZPUk1BVF9DT01NRU5UKFtUaGUgbmFtZXMgb2YgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHRdKWRubAorYXZhaWxhYmxlX3RhZ3M9Il9MVF9UQUdTImRubAorXSkKKworCisjIF9MVF9MSUJUT09MX0RFQ0xBUkUoVkFSTkFNRSwgW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4dHJhY3QgdGhlIGRpY3Rpb25hcnkgdmFsdWVzIGZvciBWQVJOQU1FIChvcHRpb25hbGx5IHdpdGggVEFHKSBhbmQKKyMgZXhwYW5kIHRvIGEgY29tbWVudGVkIHNoZWxsIHZhcmlhYmxlIHNldHRpbmc6CisjCisjICAgICMgU29tZSBjb21tZW50IGFib3V0IHdoYXQgVkFSIGlzIGZvci4KKyMgICAgdmlzaWJsZV9uYW1lPSRsdF9pbnRlcm5hbF9uYW1lCittNF9kZWZpbmUoW19MVF9MSUJUT09MX0RFQ0xBUkVdLAorW19MVF9GT1JNQVRfQ09NTUVOVChtNF9xdW90ZShsdF9kaWN0X2ZldGNoKFtsdF9kZWNsX2RpY3RdLCBbJDFdLAorCQkJCQkgICBbZGVzY3JpcHRpb25dKSkpW11kbmwKK200X3B1c2hkZWYoW19saWJ0b29sX25hbWVdLAorICAgIG00X3F1b3RlKGx0X2RpY3RfZmV0Y2goW2x0X2RlY2xfZGljdF0sIFskMV0sIFtsaWJ0b29sX25hbWVdKSkpW11kbmwKK200X2Nhc2UobTRfcXVvdGUobHRfZGljdF9mZXRjaChbbHRfZGVjbF9kaWN0XSwgWyQxXSwgW3ZhbHVlXSkpLAorICAgIFswXSwgW19saWJ0b29sX25hbWU9WyRdJDFdLAorICAgIFsxXSwgW19saWJ0b29sX25hbWU9JGx0X1tdJDFdLAorICAgIFsyXSwgW19saWJ0b29sX25hbWU9JGx0X1tdJDFdLAorICAgIFtfbGlidG9vbF9uYW1lPWx0X2RpY3RfZmV0Y2goW2x0X2RlY2xfZGljdF0sIFskMV0sIFt2YWx1ZV0pXSlbXWRubAorbTRfaWZ2YWwoWyQyXSwgW18kMl0pW11tNF9wb3BkZWYoW19saWJ0b29sX25hbWVdKVtdZG5sCitdKQorCisKKyMgX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBjb21tZW50ZWQgZGVjbGFyYXRpb25zIG9mIG5vbi10YWdnZWQgbGlidG9vbCBjb25maWcgdmFyaWFibGVzCisjIHN1aXRhYmxlIGZvciBpbnNlcnRpb24gaW4gdGhlIExJQlRPT0wgQ09ORklHIHNlY3Rpb24gb2YgdGhlIGBsaWJ0b29sJworIyBzY3JpcHQuICBUYWdnZWQgbGlidG9vbCBjb25maWcgdmFyaWFibGVzIChldmVuIGZvciB0aGUgTElCVE9PTCBDT05GSUcKKyMgc2VjdGlvbikgYXJlIHByb2R1Y2VkIGJ5IF9MVF9MSUJUT09MX1RBR19WQVJTLgorbTRfZGVmdW4oW19MVF9MSUJUT09MX0NPTkZJR19WQVJTXSwKK1ttNF9mb3JlYWNoKFtfbHRfdmFyXSwKKyAgICBtNF9xdW90ZShfbHRfZGVjbF9maWx0ZXIoW3RhZ2dlZD9dLCBbbm9dLCBbXSwgbHRfZGVjbF92YXJuYW1lcykpLAorICAgIFttNF9uKFtfTFRfTElCVE9PTF9ERUNMQVJFKF9sdF92YXIpXSldKV0pCisKKworIyBfTFRfTElCVE9PTF9UQUdfVkFSUyhUQUcpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX0xJQlRPT0xfVEFHX1ZBUlNdLAorW200X2ZvcmVhY2goW19sdF92YXJdLCBtNF9xdW90ZShsdF9kZWNsX3RhZ192YXJuYW1lcyksCisgICAgW200X24oW19MVF9MSUJUT09MX0RFQ0xBUkUoX2x0X3ZhciwgWyQxXSldKV0pXSkKKworCisjIF9MVF9UQUdWQVIoVkFSTkFNRSwgW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX1RBR1ZBUl0sIFttNF9pZnZhbChbJDJdLCBbJDFfJDJdLCBbJDFdKV0pCisKKworIyBfTFRfQ09ORklHX0NPTU1BTkRTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VuZCBhY2N1bXVsYXRlZCBvdXRwdXQgdG8gJENPTkZJR19TVEFUVVMuICBUaGFua3MgdG8gdGhlIGxpc3RzIG9mCisjIHZhcmlhYmxlcyBmb3Igc2luZ2xlIGFuZCBkb3VibGUgcXVvdGUgZXNjYXBpbmcgd2Ugc2F2ZWQgZnJvbSBjYWxscworIyB0byBfTFRfREVDTCwgd2UgY2FuIHB1dCBxdW90ZSBlc2NhcGVkIHZhcmlhYmxlcyBkZWNsYXJhdGlvbnMKKyMgaW50byBgY29uZmlnLnN0YXR1cycsIGFuZCB0aGVuIHRoZSBzaGVsbCBjb2RlIHRvIHF1b3RlIGVzY2FwZSB0aGVtIGluCisjIGZvciBsb29wcyBpbiBgY29uZmlnLnN0YXR1cycuICBGaW5hbGx5LCBhbnkgYWRkaXRpb25hbCBjb2RlIGFjY3VtdWxhdGVkCisjIGZyb20gY2FsbHMgdG8gX0xUX0NPTkZJR19MSUJUT09MX0lOSVQgaXMgZXhwYW5kZWQuCittNF9kZWZ1bihbX0xUX0NPTkZJR19DT01NQU5EU10sCitbQUNfUFJPVklERV9JRkVMU0UoW0xUX09VVFBVVF0sCisJZG5sIElmIHRoZSBsaWJ0b29sIGdlbmVyYXRpb24gY29kZSBoYXMgYmVlbiBwbGFjZWQgaW4gJENPTkZJR19MVCwKKwlkbmwgaW5zdGVhZCBvZiBkdXBsaWNhdGluZyBpdCBhbGwgb3ZlciBhZ2FpbiBpbnRvIGNvbmZpZy5zdGF0dXMsCisJZG5sIHRoZW4gd2Ugd2lsbCBoYXZlIGNvbmZpZy5zdGF0dXMgcnVuICRDT05GSUdfTFQgbGF0ZXIsIHNvIGl0CisJZG5sIG5lZWRzIHRvIGtub3cgd2hhdCBuYW1lIGlzIHN0b3JlZCB0aGVyZToKKyAgICAgICAgW0FDX0NPTkZJR19DT01NQU5EUyhbbGlidG9vbF0sCisgICAgICAgICAgICBbJFNIRUxMICRDT05GSUdfTFQgfHwgQVNfRVhJVCgxKV0sIFtDT05GSUdfTFQ9JyRDT05GSUdfTFQnXSldLAorICAgIGRubCBJZiB0aGUgbGlidG9vbCBnZW5lcmF0aW9uIGNvZGUgaXMgZGVzdGluZWQgZm9yIGNvbmZpZy5zdGF0dXMsCisgICAgZG5sIGV4cGFuZCB0aGUgYWNjdW11bGF0ZWQgY29tbWFuZHMgYW5kIGluaXQgY29kZSBub3c6CisgICAgW0FDX0NPTkZJR19DT01NQU5EUyhbbGlidG9vbF0sCisgICAgICAgIFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNdLCBbX0xUX09VVFBVVF9MSUJUT09MX0NPTU1BTkRTX0lOSVRdKV0pCitdKSNfTFRfQ09ORklHX0NPTU1BTkRTCisKKworIyBJbml0aWFsaXplLgorbTRfZGVmaW5lKFtfTFRfT1VUUFVUX0xJQlRPT0xfQ09NTUFORFNfSU5JVF0sCitbCisKKyMgVGhlIEhQLVVYIGtzaCBhbmQgUE9TSVggc2hlbGwgcHJpbnQgdGhlIHRhcmdldCBkaXJlY3RvcnkgdG8gc3Rkb3V0CisjIGlmIENEUEFUSCBpcyBzZXQuCisodW5zZXQgQ0RQQVRIKSA+L2Rldi9udWxsIDI+JjEgJiYgdW5zZXQgQ0RQQVRICisKK3NlZF9xdW90ZV9zdWJzdD0nJHNlZF9xdW90ZV9zdWJzdCcKK2RvdWJsZV9xdW90ZV9zdWJzdD0nJGRvdWJsZV9xdW90ZV9zdWJzdCcKK2RlbGF5X3ZhcmlhYmxlX3N1YnN0PSckZGVsYXlfdmFyaWFibGVfc3Vic3QnCitfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJBVElPTlMKK0xUQ0M9JyRMVENDJworTFRDRkxBR1M9JyRMVENGTEFHUycKK2NvbXBpbGVyPSckY29tcGlsZXJfREVGQVVMVCcKKworIyBRdW90ZSBldmFsZWQgc3RyaW5ncy4KK2ZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAorXV0sIGx0X2RlY2xfcXVvdGVfdmFybmFtZXMpOyBkbworICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gIlhcXFxcXCRcJHZhciJcYCBpbgorICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiWFxcXCRcJHZhclxcIiB8IFxcXCRYc2VkIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIDs7CisgICAgKikKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFwkXCR2YXJcXFxcXFwiIgorICAgICAgOzsKKyAgICBlc2FjCitkb25lCisKKyMgRG91YmxlLXF1b3RlIGRvdWJsZS1ldmFsZWQgc3RyaW5ncy4KK2ZvciB2YXIgaW4gbHRfZGVjbF9hbGxfdmFybmFtZXMoW1sgXAorXV0sIGx0X2RlY2xfZHF1b3RlX3Zhcm5hbWVzKTsgZG8KKyAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPICJYXFxcXFwkXCR2YXIiXGAgaW4KKyAgICAqW1tcXFxcXFxcYFxcIlxcXCRdXSopCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlhcXFwkXCR2YXJcXCIgfCBcXFwkWHNlZCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICA7OworICAgICopCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKKyAgICAgIDs7CisgICAgZXNhYworZG9uZQorCisjIEZpeC11cCBmYWxsYmFjayBlY2hvIGlmIGl0IHdhcyBtYW5nbGVkIGJ5IHRoZSBhYm92ZSBxdW90aW5nIHJ1bGVzLgorY2FzZSBcJGx0X0VDSE8gaW4KKyonXFxcWyRdMCAtLWZhbGxiYWNrLWVjaG8iJylkbmwgIgorICBsdF9FQ0hPPVxgXCRFQ0hPICJYXCRsdF9FQ0hPIiB8IFwkWHNlZCAtZSAncy9cXFxcXFxcXFxcXFxcXFxbJF0wIC0tZmFsbGJhY2stZWNobyJcWyRdL1xbJF0wIC0tZmFsbGJhY2stZWNobyIvJ1xgCisgIDs7Citlc2FjCisKK19MVF9PVVRQVVRfTElCVE9PTF9JTklUCitdKQorCisKKyMgTFRfT1VUUFVUCisjIC0tLS0tLS0tLQorIyBUaGlzIG1hY3JvIGFsbG93cyBlYXJseSBnZW5lcmF0aW9uIG9mIHRoZSBsaWJ0b29sIHNjcmlwdCAoYmVmb3JlCisjIEFDX09VVFBVVCBpcyBjYWxsZWQpLCBpbmNhc2UgaXQgaXMgdXNlZCBpbiBjb25maWd1cmUgZm9yIGNvbXBpbGF0aW9uCisjIHRlc3RzLgorQUNfREVGVU4oW0xUX09VVFBVVF0sCitbOiAke0NPTkZJR19MVD0uL2NvbmZpZy5sdH0KK0FDX01TR19OT1RJQ0UoW2NyZWF0aW5nICRDT05GSUdfTFRdKQorY2F0ID4iJENPTkZJR19MVCIgPDxfTFRFT0YKKyMhICRTSEVMTAorIyBHZW5lcmF0ZWQgYnkgJGFzX21lLgorIyBSdW4gdGhpcyBmaWxlIHRvIHJlY3JlYXRlIGEgbGlidG9vbCBzdHViIHdpdGggdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKworbHRfY2xfc2lsZW50PWZhbHNlCitTSEVMTD1cJHtDT05GSUdfU0hFTEwtJFNIRUxMfQorX0xURU9GCisKK2NhdCA+PiIkQ09ORklHX0xUIiA8PFxfTFRFT0YKK0FTX1NIRUxMX1NBTklUSVpFCitfQVNfUFJFUEFSRQorCitleGVjIEFTX01FU1NBR0VfRkQ+JjEKK2V4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+PmNvbmZpZy5sb2cKK3sKKyAgZWNobworICBBU19CT1goW1J1bm5pbmcgJGFzX21lLl0pCit9ID4mQVNfTUVTU0FHRV9MT0dfRkQKKworbHRfY2xfaGVscD0iXAorXGAkYXNfbWUnIGNyZWF0ZXMgYSBsb2NhbCBsaWJ0b29sIHN0dWIgZnJvbSB0aGUgY3VycmVudCBjb25maWd1cmF0aW9uLAorZm9yIHVzZSBpbiBmdXJ0aGVyIGNvbmZpZ3VyZSB0aW1lIHRlc3RzIGJlZm9yZSB0aGUgcmVhbCBsaWJ0b29sIGlzCitnZW5lcmF0ZWQuCisKK1VzYWdlOiAkWzBdIFtbT1BUSU9OU11dCisKKyAgLWgsIC0taGVscCAgICAgIHByaW50IHRoaXMgaGVscCwgdGhlbiBleGl0CisgIC1WLCAtLXZlcnNpb24gICBwcmludCB2ZXJzaW9uIG51bWJlciwgdGhlbiBleGl0CisgIC1xLCAtLXF1aWV0ICAgICBkbyBub3QgcHJpbnQgcHJvZ3Jlc3MgbWVzc2FnZXMKKyAgLWQsIC0tZGVidWcgICAgIGRvbid0IHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMKKworUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LiIKKworbHRfY2xfdmVyc2lvbj0iXAorbTRfaWZzZXQoW0FDX1BBQ0tBR0VfTkFNRV0sIFtBQ19QQUNLQUdFX05BTUUgXSljb25maWcubHRbXWRubAorbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKK2NvbmZpZ3VyZWQgYnkgJFswXSwgZ2VuZXJhdGVkIGJ5IG00X1BBQ0tBR0VfU1RSSU5HLgorCitDb3B5cmlnaHQgKEMpIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitUaGlzIGNvbmZpZy5sdCBzY3JpcHQgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgorCit3aGlsZSB0ZXN0ICRbI10gIT0gMAorZG8KKyAgY2FzZSAkWzFdIGluCisgICAgLS12ZXJzaW9uIHwgLS12KiB8IC1WICkKKyAgICAgIGVjaG8gIiRsdF9jbF92ZXJzaW9uIjsgZXhpdCAwIDs7CisgICAgLS1oZWxwIHwgLS1oKiB8IC1oICkKKyAgICAgIGVjaG8gIiRsdF9jbF9oZWxwIjsgZXhpdCAwIDs7CisgICAgLS1kZWJ1ZyB8IC0tZCogfCAtZCApCisgICAgICBkZWJ1Zz06IDs7CisgICAgLS1xdWlldCB8IC0tcSogfCAtLXNpbGVudCB8IC0tcyogfCAtcSApCisgICAgICBsdF9jbF9zaWxlbnQ9OiA7OworCisgICAgLSopIEFDX01TR19FUlJPUihbdW5yZWNvZ25pemVkIG9wdGlvbjogJFsxXQorVHJ5IFxgJFswXSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLl0pIDs7CisKKyAgICAqKSBBQ19NU0dfRVJST1IoW3VucmVjb2duaXplZCBhcmd1bWVudDogJFsxXQorVHJ5IFxgJFswXSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLl0pIDs7CisgIGVzYWMKKyAgc2hpZnQKK2RvbmUKKworaWYgJGx0X2NsX3NpbGVudDsgdGhlbgorICBleGVjIEFTX01FU1NBR0VfRkQ+L2Rldi9udWxsCitmaQorX0xURU9GCisKK2NhdCA+PiIkQ09ORklHX0xUIiA8PF9MVEVPRgorX0xUX09VVFBVVF9MSUJUT09MX0NPTU1BTkRTX0lOSVQKK19MVEVPRgorCitjYXQgPj4iJENPTkZJR19MVCIgPDxcX0xURU9GCitBQ19NU0dfTk9USUNFKFtjcmVhdGluZyAkb2ZpbGVdKQorX0xUX09VVFBVVF9MSUJUT09MX0NPTU1BTkRTCitBU19FWElUKDApCitfTFRFT0YKK2NobW9kICt4ICIkQ09ORklHX0xUIgorCisjIGNvbmZpZ3VyZSBpcyB3cml0aW5nIHRvIGNvbmZpZy5sb2csIGJ1dCBjb25maWcubHQgZG9lcyBpdHMgb3duIHJlZGlyZWN0aW9uLAorIyBhcHBlbmRpbmcgdG8gY29uZmlnLmxvZywgd2hpY2ggZmFpbHMgb24gRE9TLCBhcyBjb25maWcubG9nIGlzIHN0aWxsIGtlcHQKKyMgb3BlbiBieSBjb25maWd1cmUuICBIZXJlIHdlIGV4ZWMgdGhlIEZEIHRvIC9kZXYvbnVsbCwgZWZmZWN0aXZlbHkgY2xvc2luZworIyBjb25maWcubG9nLCBzbyBpdCBjYW4gYmUgcHJvcGVybHkgKHJlKW9wZW5lZCBhbmQgYXBwZW5kZWQgdG8gYnkgY29uZmlnLmx0LgoraWYgdGVzdCAiJG5vX2NyZWF0ZSIgIT0geWVzOyB0aGVuCisgIGx0X2NsX3N1Y2Nlc3M9OgorICB0ZXN0ICIkc2lsZW50IiA9IHllcyAmJgorICAgIGx0X2NvbmZpZ19sdF9hcmdzPSIkbHRfY29uZmlnX2x0X2FyZ3MgLS1xdWlldCIKKyAgZXhlYyBBU19NRVNTQUdFX0xPR19GRD4vZGV2L251bGwKKyAgJFNIRUxMICIkQ09ORklHX0xUIiAkbHRfY29uZmlnX2x0X2FyZ3MgfHwgbHRfY2xfc3VjY2Vzcz1mYWxzZQorICBleGVjIEFTX01FU1NBR0VfTE9HX0ZEPj5jb25maWcubG9nCisgICRsdF9jbF9zdWNjZXNzIHx8IEFTX0VYSVQoMSkKK2ZpCitdKSMgTFRfT1VUUFVUCisKKworIyBfTFRfQ09ORklHKFRBRykKKyMgLS0tLS0tLS0tLS0tLS0tCisjIElmIFRBRyBpcyB0aGUgYnVpbHQtaW4gdGFnLCBjcmVhdGUgYW4gaW5pdGlhbCBsaWJ0b29sIHNjcmlwdCB3aXRoIGEKKyMgZGVmYXVsdCBjb25maWd1cmF0aW9uIGZyb20gdGhlIHVudGFnZ2VkIGNvbmZpZyB2YXJzLiAgT3RoZXJ3aXNlIGFkZCBjb2RlCisjIHRvIGNvbmZpZy5zdGF0dXMgZm9yIGFwcGVuZGluZyB0aGUgY29uZmlndXJhdGlvbiBuYW1lZCBieSBUQUcgZnJvbSB0aGUKKyMgbWF0Y2hpbmcgdGFnZ2VkIGNvbmZpZyB2YXJzLgorbTRfZGVmdW4oW19MVF9DT05GSUddLAorW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorX0xUX0NPTkZJR19TQVZFX0NPTU1BTkRTKFsKKyAgbTRfZGVmaW5lKFtfTFRfVEFHXSwgbTRfaWYoWyQxXSwgW10sIFtDXSwgWyQxXSkpZG5sCisgIG00X2lmKF9MVF9UQUcsIFtDXSwgWworICAgICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKKyAgICAjIGNvbW1hbmRzIHRocm91Z2ggd2l0aG91dCByZW1vdmFsIG9mIFwgZXNjYXBlcy4KKyAgICBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbgorICAgICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKKyAgICBmaQorCisgICAgY2ZnZmlsZT0iJHtvZmlsZX1UIgorICAgIHRyYXAgIiRSTSBcIiRjZmdmaWxlXCI7IGV4aXQgMSIgMSAyIDE1CisgICAgJFJNICIkY2ZnZmlsZSIKKworICAgIGNhdCA8PF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorIyEgJFNIRUxMCisKKyMgYCRFQ0hPICIkb2ZpbGUiIHwgc2VkICdzJV4uKi8lJSdgIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCisjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRhc19tZSAoJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgOgorIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisjCitfTFRfQ09QWUlORworX0xUX0xJQlRPT0xfVEFHUworCisjICMjIyBCRUdJTiBMSUJUT09MIENPTkZJRworX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlMKK19MVF9MSUJUT09MX1RBR19WQVJTCisjICMjIyBFTkQgTElCVE9PTCBDT05GSUcKKworX0xUX0VPRgorCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgYWl4MyopCisgICAgY2F0IDw8XF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorIyBBSVggc29tZXRpbWVzIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBHQ0MgY29sbGVjdDIgcHJvZ3JhbS4gIEZvciBzb21lCisjIHJlYXNvbiwgaWYgd2Ugc2V0IHRoZSBDT0xMRUNUX05BTUVTIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgcHJvYmxlbXMKKyMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KK2lmIHRlc3QgIlgke0NPTExFQ1RfTkFNRVMrc2V0fSIgIT0gWHNldDsgdGhlbgorICBDT0xMRUNUX05BTUVTPQorICBleHBvcnQgQ09MTEVDVF9OQU1FUworZmkKK19MVF9FT0YKKyAgICA7OworICBlc2FjCisKKyAgX0xUX1BST0dfTFRNQUlOCisKKyAgIyBXZSB1c2Ugc2VkIGluc3RlYWQgb2YgY2F0IGJlY2F1c2UgYmFzaCBvbiBESkdQUCBnZXRzIGNvbmZ1c2VkIGlmCisgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKyAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorCisgIF9MVF9QUk9HX1hTSV9TSEVMTEZOUworCisgIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorCisgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICBjaG1vZCAreCAiJG9maWxlIgorXSwKK1tjYXQgPDxfTFRfRU9GID4+ICIkb2ZpbGUiCisKK2RubCBVbmZvcnR1bmF0ZWx5IHdlIGhhdmUgdG8gdXNlICQxIGhlcmUsIHNpbmNlIF9MVF9UQUcgaXMgbm90IGV4cGFuZGVkCitkbmwgaW4gYSBjb21tZW50IChpZSBhZnRlciBhICMpLgorIyAjIyMgQkVHSU4gTElCVE9PTCBUQUcgQ09ORklHOiAkMQorX0xUX0xJQlRPT0xfVEFHX1ZBUlMoX0xUX1RBRykKKyMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICQxCitfTFRfRU9GCitdKWRubCAvbTRfaWYKK10sCitbbTRfaWYoWyQxXSwgW10sIFsKKyAgICBQQUNLQUdFPSckUEFDS0FHRScKKyAgICBWRVJTSU9OPSckVkVSU0lPTicKKyAgICBUSU1FU1RBTVA9JyRUSU1FU1RBTVAnCisgICAgUk09JyRSTScKKyAgICBvZmlsZT0nJG9maWxlJ10sIFtdKQorXSlkbmwgL19MVF9DT05GSUdfU0FWRV9DT01NQU5EUworXSkjIF9MVF9DT05GSUcKKworCisjIExUX1NVUFBPUlRFRF9UQUcoVEFHKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVHJhY2UgdGhpcyBtYWNybyB0byBkaXNjb3ZlciB3aGF0IHRhZ3MgYXJlIHN1cHBvcnRlZCBieSB0aGUgbGlidG9vbAorIyAtLXRhZyBvcHRpb24sIHVzaW5nOgorIyAgICBhdXRvY29uZiAtLXRyYWNlICdMVF9TVVBQT1JURURfVEFHOiQxJworQUNfREVGVU4oW0xUX1NVUFBPUlRFRF9UQUddLCBbXSkKKworCisjIEMgc3VwcG9ydCBpcyBidWlsdC1pbiBmb3Igbm93CittNF9kZWZpbmUoW19MVF9MQU5HX0NfZW5hYmxlZF0sIFtdKQorbTRfZGVmaW5lKFtfTFRfVEFHU10sIFtdKQorCisKKyMgTFRfTEFORyhMQU5HKQorIyAtLS0tLS0tLS0tLS0tCisjIEVuYWJsZSBsaWJ0b29sIHN1cHBvcnQgZm9yIHRoZSBnaXZlbiBsYW5ndWFnZSBpZiBub3QgYWxyZWFkeSBlbmFibGVkLgorQUNfREVGVU4oW0xUX0xBTkddLAorW0FDX0JFRk9SRShbJDBdLCBbTFRfT1VUUFVUXSlkbmwKK200X2Nhc2UoWyQxXSwKKyAgW0NdLAkJCVtfTFRfTEFORyhDKV0sCisgIFtDKytdLAkJW19MVF9MQU5HKENYWCldLAorICBbSmF2YV0sCQlbX0xUX0xBTkcoR0NKKV0sCisgIFtGb3J0cmFuIDc3XSwJCVtfTFRfTEFORyhGNzcpXSwKKyAgW0ZvcnRyYW5dLAkJW19MVF9MQU5HKEZDKV0sCisgIFtXaW5kb3dzIFJlc291cmNlXSwJW19MVF9MQU5HKFJDKV0sCisgIFttNF9pZmRlZihbX0xUX0xBTkdfXSQxW19DT05GSUddLAorICAgIFtfTFRfTEFORygkMSldLAorICAgIFttNF9mYXRhbChbJDA6IHVuc3VwcG9ydGVkIGxhbmd1YWdlOiAiJDEiXSldKV0pZG5sCitdKSMgTFRfTEFORworCisKKyMgX0xUX0xBTkcoTEFOR05BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9MQU5HXSwKK1ttNF9pZmRlZihbX0xUX0xBTkdfXSQxW19lbmFibGVkXSwgW10sCisgIFtMVF9TVVBQT1JURURfVEFHKFskMV0pZG5sCisgIG00X2FwcGVuZChbX0xUX1RBR1NdLCBbJDEgXSlkbmwKKyAgbTRfZGVmaW5lKFtfTFRfTEFOR19dJDFbX2VuYWJsZWRdLCBbXSlkbmwKKyAgX0xUX0xBTkdfJDFfQ09ORklHKCQxKV0pZG5sCitdKSMgX0xUX0xBTkcKKworCisjIF9MVF9MQU5HX0RFRkFVTFRfQ09ORklHCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0xBTkdfREVGQVVMVF9DT05GSUddLAorW0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0NYWF0sCisgIFtMVF9MQU5HKENYWCldLAorICBbbTRfZGVmaW5lKFtBQ19QUk9HX0NYWF0sIGRlZm4oW0FDX1BST0dfQ1hYXSlbTFRfTEFORyhDWFgpXSldKQorCitBQ19QUk9WSURFX0lGRUxTRShbQUNfUFJPR19GNzddLAorICBbTFRfTEFORyhGNzcpXSwKKyAgW200X2RlZmluZShbQUNfUFJPR19GNzddLCBkZWZuKFtBQ19QUk9HX0Y3N10pW0xUX0xBTkcoRjc3KV0pXSkKKworQUNfUFJPVklERV9JRkVMU0UoW0FDX1BST0dfRkNdLAorICBbTFRfTEFORyhGQyldLAorICBbbTRfZGVmaW5lKFtBQ19QUk9HX0ZDXSwgZGVmbihbQUNfUFJPR19GQ10pW0xUX0xBTkcoRkMpXSldKQorCitkbmwgVGhlIGNhbGwgdG8gW0FdW01fUFJPR19HQ0pdIGlzIHF1b3RlZCBsaWtlIHRoYXQgdG8gc3RvcCBhY2xvY2FsCitkbmwgcHVsbGluZyB0aGluZ3MgaW4gbmVlZGxlc3NseS4KK0FDX1BST1ZJREVfSUZFTFNFKFtBQ19QUk9HX0dDSl0sCisgIFtMVF9MQU5HKEdDSildLAorICBbQUNfUFJPVklERV9JRkVMU0UoW0FdW01fUFJPR19HQ0pdLAorICAgIFtMVF9MQU5HKEdDSildLAorICAgIFtBQ19QUk9WSURFX0lGRUxTRShbTFRfUFJPR19HQ0pdLAorICAgICAgW0xUX0xBTkcoR0NKKV0sCisgICAgICBbbTRfaWZkZWYoW0FDX1BST0dfR0NKXSwKKwlbbTRfZGVmaW5lKFtBQ19QUk9HX0dDSl0sIGRlZm4oW0FDX1BST0dfR0NKXSlbTFRfTEFORyhHQ0opXSldKQorICAgICAgIG00X2lmZGVmKFtBXVtNX1BST0dfR0NKXSwKKwlbbTRfZGVmaW5lKFtBXVtNX1BST0dfR0NKXSwgZGVmbihbQV1bTV9QUk9HX0dDSl0pW0xUX0xBTkcoR0NKKV0pXSkKKyAgICAgICBtNF9pZmRlZihbTFRfUFJPR19HQ0pdLAorCVttNF9kZWZpbmUoW0xUX1BST0dfR0NKXSwgZGVmbihbTFRfUFJPR19HQ0pdKVtMVF9MQU5HKEdDSildKV0pXSldKV0pCisKK0FDX1BST1ZJREVfSUZFTFNFKFtMVF9QUk9HX1JDXSwKKyAgW0xUX0xBTkcoUkMpXSwKKyAgW200X2RlZmluZShbTFRfUFJPR19SQ10sIGRlZm4oW0xUX1BST0dfUkNdKVtMVF9MQU5HKFJDKV0pXSkKK10pIyBfTFRfTEFOR19ERUZBVUxUX0NPTkZJRworCisjIE9ic29sZXRlIG1hY3JvczoKK0FVX0RFRlVOKFtBQ19MSUJUT09MX0NYWF0sIFtMVF9MQU5HKEMrKyldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW0xUX0xBTkcoRm9ydHJhbiA3NyldKQorQVVfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbTFRfTEFORyhGb3J0cmFuKV0pCitBVV9ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbTFRfTEFORyhKYXZhKV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ1hYXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRjc3XSwgW10pCitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfRkNdLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9HQ0pdLCBbXSkKKworCisjIF9MVF9UQUdfQ09NUElMRVIKKyMgLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9UQUdfQ09NUElMRVJdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorCitfTFRfREVDTChbTFRDQ10sIFtDQ10sIFsxXSwgW0EgQyBjb21waWxlcl0pZG5sCitfTFRfREVDTChbTFRDRkxBR1NdLCBbQ0ZMQUdTXSwgWzFdLCBbTFRDQyBjb21waWxlciBmbGFnc10pZG5sCitfTFRfVEFHREVDTChbQ0NdLCBbY29tcGlsZXJdLCBbMV0sIFtBIGxhbmd1YWdlIHNwZWNpZmljIGNvbXBpbGVyXSlkbmwKK19MVF9UQUdERUNMKFt3aXRoX2djY10sIFtHQ0NdLCBbMF0sIFtJcyB0aGUgY29tcGlsZXIgdGhlIEdOVSBjb21waWxlcj9dKWRubAorCisjIElmIG5vIEMgY29tcGlsZXIgd2FzIHNwZWNpZmllZCwgdXNlIENDLgorTFRDQz0ke0xUQ0MtIiRDQyJ9CisKKyMgSWYgbm8gQyBjb21waWxlciBmbGFncyB3ZXJlIHNwZWNpZmllZCwgdXNlIENGTEFHUy4KK0xUQ0ZMQUdTPSR7TFRDRkxBR1MtIiRDRkxBR1MifQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorY29tcGlsZXI9JENDCitdKSMgX0xUX1RBR19DT01QSUxFUgorCisKKyMgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayBmb3IgY29tcGlsZXIgYm9pbGVycGxhdGUgb3V0cHV0IG9yIHdhcm5pbmdzIHdpdGgKKyMgdGhlIHNpbXBsZSBjb21waWxlciB0ZXN0IGNvZGUuCittNF9kZWZ1bihbX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFXSwKK1ttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorYWNfb3V0ZmlsZT1jb25mdGVzdC4kYWNfb2JqZXh0CitlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+Y29uZnRlc3QuJGFjX2V4dAorZXZhbCAiJGFjX2NvbXBpbGUiIDI+JjEgPi9kZXYvbnVsbCB8ICRTRUQgJy9eJC9kOyAvXiAqKy9kJyA+Y29uZnRlc3QuZXJyCitfbHRfY29tcGlsZXJfYm9pbGVycGxhdGU9YGNhdCBjb25mdGVzdC5lcnJgCiskUk0gY29uZnRlc3QqCitdKSMgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisKKworIyBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgQ2hlY2sgZm9yIGxpbmtlciBib2lsZXJwbGF0ZSBvdXRwdXQgb3Igd2FybmluZ3Mgd2l0aAorIyB0aGUgc2ltcGxlIGxpbmsgdGVzdCBjb2RlLgorbTRfZGVmdW4oW19MVF9MSU5LRVJfQk9JTEVSUExBVEVdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCithY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHQKK2VjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID5jb25mdGVzdC4kYWNfZXh0CitldmFsICIkYWNfbGluayIgMj4mMSA+L2Rldi9udWxsIHwgJFNFRCAnL14kL2Q7IC9eICorL2QnID5jb25mdGVzdC5lcnIKK19sdF9saW5rZXJfYm9pbGVycGxhdGU9YGNhdCBjb25mdGVzdC5lcnJgCiskUk0gLXIgY29uZnRlc3QqCitdKSMgX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIF9MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuX29uY2UoW19MVF9SRVFVSVJFRF9EQVJXSU5fQ0hFQ0tTXSxbCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICByaGFwc29keSogfCBkYXJ3aW4qKQorICAgIEFDX0NIRUNLX1RPT0woW0RTWU1VVElMXSwgW2RzeW11dGlsXSwgWzpdKQorICAgIEFDX0NIRUNLX1RPT0woW05NRURJVF0sIFtubWVkaXRdLCBbOl0pCisgICAgQUNfQ0hFQ0tfVE9PTChbTElQT10sIFtsaXBvXSwgWzpdKQorICAgIEFDX0NIRUNLX1RPT0woW09UT09MXSwgW290b29sXSwgWzpdKQorICAgIEFDX0NIRUNLX1RPT0woW09UT09MNjRdLCBbb3Rvb2w2NF0sIFs6XSkKKyAgICBfTFRfREVDTChbXSwgW0RTWU1VVElMXSwgWzFdLAorICAgICAgW1Rvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFhdKQorICAgIF9MVF9ERUNMKFtdLCBbTk1FRElUXSwgWzFdLAorICAgICAgW1Rvb2wgdG8gY2hhbmdlIGdsb2JhbCB0byBsb2NhbCBzeW1ib2xzIG9uIE1hYyBPUyBYXSkKKyAgICBfTFRfREVDTChbXSwgW0xJUE9dLCBbMV0sCisgICAgICBbVG9vbCB0byBtYW5pcHVsYXRlIGZhdCBvYmplY3RzIGFuZCBhcmNoaXZlcyBvbiBNYWMgT1MgWF0pCisgICAgX0xUX0RFQ0woW10sIFtPVE9PTF0sIFsxXSwKKyAgICAgIFtsZGQvcmVhZGVsZiBsaWtlIHRvb2wgZm9yIE1hY2gtTyBiaW5hcmllcyBvbiBNYWMgT1MgWF0pCisgICAgX0xUX0RFQ0woW10sIFtPVE9PTDY0XSwgWzFdLAorICAgICAgW2xkZC9yZWFkZWxmIGxpa2UgdG9vbCBmb3IgNjQgYml0IE1hY2gtTyBiaW5hcmllcyBvbiBNYWMgT1MgWCAxMC40XSkKKworICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgLXNpbmdsZV9tb2R1bGUgbGlua2VyIGZsYWddLFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kXSwKKyAgICAgIFtsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPW5vCisgICAgICBpZiB0ZXN0IC16ICIke0xUX01VTFRJX01PRFVMRX0iOyB0aGVuCisJIyBCeSBkZWZhdWx0IHdlIHdpbGwgYWRkIHRoZSAtc2luZ2xlX21vZHVsZSBmbGFnLiBZb3UgY2FuIG92ZXJyaWRlCisJIyBieSBlaXRoZXIgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTFRfTVVMVElfTU9EVUxFCisJIyBub24tZW1wdHkgYXQgY29uZmlndXJlIHRpbWUsIG9yIGJ5IGFkZGluZyAtbXVsdGlfbW9kdWxlIHRvIHRoZQorCSMgbGluayBmbGFncy4KKwlybSAtcmYgbGliY29uZnRlc3QuZHlsaWIqCisJZWNobyAiaW50IGZvbyh2b2lkKXtyZXR1cm4gMTt9IiA+IGNvbmZ0ZXN0LmMKKwllY2hvICIkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gbGliY29uZnRlc3QuZHlsaWIgXAorLWR5bmFtaWNsaWIgLVdsLC1zaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKwkkTFRDQyAkTFRDRkxBR1MgJExERkxBR1MgLW8gbGliY29uZnRlc3QuZHlsaWIgXAorCSAgLWR5bmFtaWNsaWIgLVdsLC1zaW5nbGVfbW9kdWxlIGNvbmZ0ZXN0LmMgMj5jb25mdGVzdC5lcnIKKyAgICAgICAgX2x0X3Jlc3VsdD0kPworCWlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAhIC1zIGNvbmZ0ZXN0LmVyciAmJiB0ZXN0ICRfbHRfcmVzdWx0ID0gMDsgdGhlbgorCSAgbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZD15ZXMKKwllbHNlCisJICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKwlmaQorCXJtIC1yZiBsaWJjb25mdGVzdC5keWxpYioKKwlybSAtZiBjb25mdGVzdC4qCisgICAgICBmaV0pCisgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtZXhwb3J0ZWRfc3ltYm9sc19saXN0IGxpbmtlciBmbGFnXSwKKyAgICAgIFtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3RdLAorICAgICAgW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ubworICAgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgICAgICBlY2hvICJfbWFpbiIgPiBjb25mdGVzdC5zeW0KKyAgICAgIExERkxBR1M9IiRMREZMQUdTIC1XbCwtZXhwb3J0ZWRfc3ltYm9sc19saXN0LGNvbmZ0ZXN0LnN5bSIKKyAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sW10pXSwKKwlbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PXllc10sCisJW2x0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdD1ub10pCisJTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgICBdKQorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICByaGFwc29keSogfCBkYXJ3aW4xLltbMDEyXV0pCisgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisgICAgZGFyd2luMS4qKQorICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LWZsYXRfbmFtZXNwYWNlICR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OworICAgIGRhcndpbiopICMgZGFyd2luIDUueCBvbgorICAgICAgIyBpZiBydW5uaW5nIG9uIDEwLjUgb3IgbGF0ZXIsIHRoZSBkZXBsb3ltZW50IHRhcmdldCBkZWZhdWx0cworICAgICAgIyB0byB0aGUgT1MgdmVyc2lvbiwgaWYgb24geDg2LCBhbmQgMTAuNCwgdGhlIGRlcGxveW1lbnQKKyAgICAgICMgdGFyZ2V0IGRlZmF1bHRzIHRvIDEwLjQuIERvbid0IHlvdSBsb3ZlIGl0PworICAgICAgY2FzZSAke01BQ09TWF9ERVBMT1lNRU5UX1RBUkdFVC0xMC4wfSwkaG9zdCBpbgorCTEwLjAsKjg2Ki1kYXJ3aW44KnwxMC4wLCotZGFyd2luW1s5MV1dKikKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1keW5hbWljX2xvb2t1cCcgOzsKKwkxMC5bWzAxMl1dKikKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKKwkxMC4qKQorCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OworICAgICAgZXNhYworICAgIDs7CisgIGVzYWMKKyAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPSAieWVzIjsgdGhlbgorICAgICAgX2x0X2Rhcl9zaW5nbGVfbW9kPSckc2luZ2xlX21vZHVsZScKKyAgICBmaQorICAgIGlmIHRlc3QgIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID0gInllcyI7IHRoZW4KKyAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9JyAke3dsfS1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bScKKyAgICBlbHNlCisgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKKyAgICBmaQorICAgIGlmIHRlc3QgIiREU1lNVVRJTCIgIT0gIjoiOyB0aGVuCisgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JworICAgIGVsc2UKKyAgICAgIF9sdF9kc3ltdXRpbD0KKyAgICBmaQorICAgIDs7CisgIGVzYWMKK10pCisKKworIyBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVja3MgZm9yIGxpbmtlciBhbmQgY29tcGlsZXIgZmVhdHVyZXMgb24gZGFyd2luCittNF9kZWZ1bihbX0xUX0RBUldJTl9MSU5LRVJfRkVBVFVSRVNdLAorWworICBtNF9yZXF1aXJlKFtfTFRfUkVRVUlSRURfREFSV0lOX0NIRUNLU10pCisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9eWVzCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCisgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJworICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCisgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgIGlmb3J0KikgX2x0X2Rhcl9jYW5fc2hhcmVkPXllcyA7OworICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OworICBlc2FjCisgIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KKyAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1lY2hvCisgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKKyAgICBfTFRfVEFHVkFSKG1vZHVsZV9jbWRzLCAkMSk9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKKyAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgorICAgIF9MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBtNF9pZihbJDFdLCBbQ1hYXSwKK1sgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgIT0gInllcyI7IHRoZW4KKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJHtsaWJ9LW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCR7bGlifS1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcke19sdF9kc3ltdXRpbH0iCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBmaQorXSxbXSkKKyAgZWxzZQorICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgIGZpCitdKQorCisjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIExpbmtzIGEgbWluaW1hbCBwcm9ncmFtIGFuZCBjaGVja3MgdGhlIGV4ZWN1dGFibGUKKyMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAorIyB0aGlzIGlzIC91c3IvbGliOi9saWIsIGJ1dCB3aGVuIHRoZSBNUEkgY29tcGlsZXJzIGFyZSB1c2VkCisjIHRoZSBsb2NhdGlvbiBvZiB0aGUgY29tbXVuaWNhdGlvbiBhbmQgTVBJIGxpYnMgYXJlIGluY2x1ZGVkIHRvby4KKyMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKKyMgdG8gdGhlIGFpeCBsZCBtYW51YWwuCittNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAorW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCitBQ19MSU5LX0lGRUxTRShBQ19MQU5HX1BST0dSQU0sWworbHRfYWl4X2xpYnBhdGhfc2VkPScKKyAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisJL14wLyB7CisJICAgIHMvXjAgICpcKC4qXCkkL1wxLworCSAgICBwCisJfQorICAgIH0nCithaXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKyMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KK2lmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKyAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCitmaV0sW10pCitpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKK10pIyBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCisKKyMgX0xUX1NIRUxMX0lOSVQoQVJHKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW19MVF9TSEVMTF9JTklUXSwKK1tpZmRlZihbQUNfRElWRVJTSU9OX05PVElDRV0sCisJICAgICBbQUNfRElWRVJUX1BVU0goQUNfRElWRVJTSU9OX05PVElDRSldLAorCSBbQUNfRElWRVJUX1BVU0goTk9USUNFKV0pCiskMQorQUNfRElWRVJUX1BPUAorXSkjIF9MVF9TSEVMTF9JTklUCisKKworIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBZGQgc29tZSBjb2RlIHRvIHRoZSBzdGFydCBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgd2hpY2gKKyMgd2lsbCBmaW5kIGFuIGVjaG8gY29tbWFuZCB3aGljaCBkb2Vzbid0IGludGVycHJldCBiYWNrc2xhc2hlcy4KK200X2RlZnVuKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0sCitbX0xUX1NIRUxMX0lOSVQoWworIyBDaGVjayB0aGF0IHdlIGFyZSBydW5uaW5nIHVuZGVyIHRoZSBjb3JyZWN0IHNoZWxsLgorU0hFTEw9JHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0KKworY2FzZSBYJGx0X0VDSE8gaW4KK1gqLS1mYWxsYmFjay1lY2hvKQorICAjIFJlbW92ZSBvbmUgbGV2ZWwgb2YgcXVvdGF0aW9uICh3aGljaCB3YXMgcmVxdWlyZWQgZm9yIE1ha2UpLgorICBFQ0hPPWBlY2hvICIkbHRfRUNITyIgfCBzZWQgJ3MsXFxcXFxbJF1cXFskXTAsJ1skXTAnLCdgCisgIDs7Citlc2FjCisKK0VDSE89JHtsdF9FQ0hPLWVjaG99CitpZiB0ZXN0ICJYWyRdMSIgPSBYLS1uby1yZWV4ZWM7IHRoZW4KKyAgIyBEaXNjYXJkIHRoZSAtLW5vLXJlZXhlYyBmbGFnLCBhbmQgY29udGludWUuCisgIHNoaWZ0CitlbGlmIHRlc3QgIlhbJF0xIiA9IFgtLWZhbGxiYWNrLWVjaG87IHRoZW4KKyAgIyBBdm9pZCBpbmxpbmUgZG9jdW1lbnQgaGVyZSwgaXQgbWF5IGJlIGxlZnQgb3ZlcgorICA6CitlbGlmIHRlc3QgIlhgeyAkRUNITyAnXHQnOyB9IDI+L2Rldi9udWxsYCIgPSAnWFx0JyA7IHRoZW4KKyAgIyBZaXBwZWUsICRFQ0hPIHdvcmtzIQorICA6CitlbHNlCisgICMgUmVzdGFydCB1bmRlciB0aGUgY29ycmVjdCBzaGVsbC4KKyAgZXhlYyAkU0hFTEwgIlskXTAiIC0tbm8tcmVleGVjICR7MSsiWyRdQCJ9CitmaQorCitpZiB0ZXN0ICJYWyRdMSIgPSBYLS1mYWxsYmFjay1lY2hvOyB0aGVuCisgICMgdXNlZCBhcyBmYWxsYmFjayBlY2hvCisgIHNoaWZ0CisgIGNhdCA8PF9MVF9FT0YKK1skXSoKK19MVF9FT0YKKyAgZXhpdCAwCitmaQorCisjIFRoZSBIUC1VWCBrc2ggYW5kIFBPU0lYIHNoZWxsIHByaW50IHRoZSB0YXJnZXQgZGlyZWN0b3J5IHRvIHN0ZG91dAorIyBpZiBDRFBBVEggaXMgc2V0LgorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAorCitpZiB0ZXN0IC16ICIkbHRfRUNITyI7IHRoZW4KKyAgaWYgdGVzdCAiWCR7ZWNob190ZXN0X3N0cmluZytzZXR9IiAhPSBYc2V0OyB0aGVuCisgICAgIyBmaW5kIGEgc3RyaW5nIGFzIGxhcmdlIGFzIHBvc3NpYmxlLCBhcyBsb25nIGFzIHRoZSBzaGVsbCBjYW4gY29wZSB3aXRoIGl0CisgICAgZm9yIGNtZCBpbiAnc2VkIDUwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCAxMHEgIlskXTAiJyAnc2VkIDJxICJbJF0wIicgJ2VjaG8gdGVzdCc7IGRvCisgICAgICAjIGV4cGVjdGVkIHNpemVzOiBsZXNzIHRoYW4gMktiLCAxS2IsIDUxMiBieXRlcywgMTYgYnl0ZXMsIC4uLgorICAgICAgaWYgeyBlY2hvX3Rlc3Rfc3RyaW5nPWBldmFsICRjbWRgOyB9IDI+L2Rldi9udWxsICYmCisJIHsgdGVzdCAiWCRlY2hvX3Rlc3Rfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsCisgICAgICB0aGVuCisgICAgICAgIGJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgZmkKKworICBpZiB0ZXN0ICJYYHsgJEVDSE8gJ1x0JzsgfSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKyAgICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgorICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgICA6CisgIGVsc2UKKyAgICAjIFRoZSBTb2xhcmlzLCBBSVgsIGFuZCBEaWdpdGFsIFVuaXggZGVmYXVsdCBlY2hvIHByb2dyYW1zIHVucXVvdGUKKyAgICAjIGJhY2tzbGFzaGVzLiAgVGhpcyBtYWtlcyBpdCBpbXBvc3NpYmxlIHRvIHF1b3RlIGJhY2tzbGFzaGVzIHVzaW5nCisgICAgIyAgIGVjaG8gIiRzb21ldGhpbmciIHwgc2VkICdzL1xcL1xcXFwvZycKKyAgICAjCisgICAgIyBTbywgZmlyc3Qgd2UgbG9vayBmb3IgYSB3b3JraW5nIGVjaG8gaW4gdGhlIHVzZXIncyBQQVRILgorCisgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgICAgZm9yIGRpciBpbiAkUEFUSCAvdXNyL3VjYjsgZG8KKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgaWYgKHRlc3QgLWYgJGRpci9lY2hvIHx8IHRlc3QgLWYgJGRpci9lY2hvJGFjX2V4ZWV4dCkgJiYKKyAgICAgICAgIHRlc3QgIlhgKCRkaXIvZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAiID0gJ1hcdCcgJiYKKyAgICAgICAgIGVjaG9fdGVzdGluZ19zdHJpbmc9YCgkZGlyL2VjaG8gIiRlY2hvX3Rlc3Rfc3RyaW5nIikgMj4vZGV2L251bGxgICYmCisgICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgICAgICAgRUNITz0iJGRpci9lY2hvIgorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICBkb25lCisgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisKKyAgICBpZiB0ZXN0ICJYJEVDSE8iID0gWGVjaG87IHRoZW4KKyAgICAgICMgV2UgZGlkbid0IGZpbmQgYSBiZXR0ZXIgZWNobywgc28gbG9vayBmb3IgYWx0ZXJuYXRpdmVzLgorICAgICAgaWYgdGVzdCAiWGB7IHByaW50IC1yICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCisgICAgICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWB7IHByaW50IC1yICIkZWNob190ZXN0X3N0cmluZyI7IH0gMj4vZGV2L251bGxgICYmCisgICAgICAgICB0ZXN0ICJYJGVjaG9fdGVzdGluZ19zdHJpbmciID0gIlgkZWNob190ZXN0X3N0cmluZyI7IHRoZW4KKyAgICAgICAgIyBUaGlzIHNoZWxsIGhhcyBhIGJ1aWx0aW4gcHJpbnQgLXIgdGhhdCBkb2VzIHRoZSB0cmljay4KKyAgICAgICAgRUNITz0ncHJpbnQgLXInCisgICAgICBlbGlmIHsgdGVzdCAtZiAvYmluL2tzaCB8fCB0ZXN0IC1mIC9iaW4va3NoJGFjX2V4ZWV4dDsgfSAmJgorCSAgIHRlc3QgIlgkQ09ORklHX1NIRUxMIiAhPSBYL2Jpbi9rc2g7IHRoZW4KKyAgICAgICAgIyBJZiB3ZSBoYXZlIGtzaCwgdHJ5IHJ1bm5pbmcgY29uZmlndXJlIGFnYWluIHdpdGggaXQuCisgICAgICAgIE9SSUdJTkFMX0NPTkZJR19TSEVMTD0ke0NPTkZJR19TSEVMTC0vYmluL3NofQorICAgICAgICBleHBvcnQgT1JJR0lOQUxfQ09ORklHX1NIRUxMCisgICAgICAgIENPTkZJR19TSEVMTD0vYmluL2tzaAorICAgICAgICBleHBvcnQgQ09ORklHX1NIRUxMCisgICAgICAgIGV4ZWMgJENPTkZJR19TSEVMTCAiWyRdMCIgLS1uby1yZWV4ZWMgJHsxKyJbJF1AIn0KKyAgICAgIGVsc2UKKyAgICAgICAgIyBUcnkgdXNpbmcgcHJpbnRmLgorICAgICAgICBFQ0hPPSdwcmludGYgJXNcbicKKyAgICAgICAgaWYgdGVzdCAiWGB7ICRFQ0hPICdcdCc7IH0gMj4vZGV2L251bGxgIiA9ICdYXHQnICYmCisJICAgZWNob190ZXN0aW5nX3N0cmluZz1geyAkRUNITyAiJGVjaG9fdGVzdF9zdHJpbmciOyB9IDI+L2Rldi9udWxsYCAmJgorCSAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorCSAgIyBDb29sLCBwcmludGYgd29ya3MKKwkgIDoKKyAgICAgICAgZWxpZiBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICdcdCcpIDI+L2Rldi9udWxsYCAmJgorCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICdYXHQnICYmCisJICAgICBlY2hvX3Rlc3Rpbmdfc3RyaW5nPWAoJE9SSUdJTkFMX0NPTkZJR19TSEVMTCAiWyRdMCIgLS1mYWxsYmFjay1lY2hvICIkZWNob190ZXN0X3N0cmluZyIpIDI+L2Rldi9udWxsYCAmJgorCSAgICAgdGVzdCAiWCRlY2hvX3Rlc3Rpbmdfc3RyaW5nIiA9ICJYJGVjaG9fdGVzdF9zdHJpbmciOyB0aGVuCisJICBDT05GSUdfU0hFTEw9JE9SSUdJTkFMX0NPTkZJR19TSEVMTAorCSAgZXhwb3J0IENPTkZJR19TSEVMTAorCSAgU0hFTEw9IiRDT05GSUdfU0hFTEwiCisJICBleHBvcnQgU0hFTEwKKwkgIEVDSE89IiRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iCisgICAgICAgIGVsaWYgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAnXHQnKSAyPi9kZXYvbnVsbGAgJiYKKwkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAnWFx0JyAmJgorCSAgICAgZWNob190ZXN0aW5nX3N0cmluZz1gKCRDT05GSUdfU0hFTEwgIlskXTAiIC0tZmFsbGJhY2stZWNobyAiJGVjaG9fdGVzdF9zdHJpbmciKSAyPi9kZXYvbnVsbGAgJiYKKwkgICAgIHRlc3QgIlgkZWNob190ZXN0aW5nX3N0cmluZyIgPSAiWCRlY2hvX3Rlc3Rfc3RyaW5nIjsgdGhlbgorCSAgRUNITz0iJENPTkZJR19TSEVMTCBbJF0wIC0tZmFsbGJhY2stZWNobyIKKyAgICAgICAgZWxzZQorCSAgIyBtYXliZSB3aXRoIGEgc21hbGxlciBzdHJpbmcuLi4KKwkgIHByZXY9OgorCisJICBmb3IgY21kIGluICdlY2hvIHRlc3QnICdzZWQgMnEgIlskXTAiJyAnc2VkIDEwcSAiWyRdMCInICdzZWQgMjBxICJbJF0wIicgJ3NlZCA1MHEgIlskXTAiJzsgZG8KKwkgICAgaWYgeyB0ZXN0ICJYJGVjaG9fdGVzdF9zdHJpbmciID0gIlhgZXZhbCAkY21kYCI7IH0gMj4vZGV2L251bGwKKwkgICAgdGhlbgorCSAgICAgIGJyZWFrCisJICAgIGZpCisJICAgIHByZXY9IiRjbWQiCisJICBkb25lCisKKwkgIGlmIHRlc3QgIiRwcmV2IiAhPSAnc2VkIDUwcSAiWyRdMCInOyB0aGVuCisJICAgIGVjaG9fdGVzdF9zdHJpbmc9YGV2YWwgJHByZXZgCisJICAgIGV4cG9ydCBlY2hvX3Rlc3Rfc3RyaW5nCisJICAgIGV4ZWMgJHtPUklHSU5BTF9DT05GSUdfU0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19ICJbJF0wIiAkezErIlskXUAifQorCSAgZWxzZQorCSAgICAjIE9vcHMuICBXZSBsb3N0IGNvbXBsZXRlbHksIHNvIGp1c3Qgc3RpY2sgd2l0aCBlY2hvLgorCSAgICBFQ0hPPWVjaG8KKwkgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisgIGZpCitmaQorCisjIENvcHkgZWNobyBhbmQgcXVvdGUgdGhlIGNvcHkgc3VpdGFibHkgZm9yIHBhc3NpbmcgdG8gbGlidG9vbCBmcm9tCisjIHRoZSBNYWtlZmlsZSwgaW5zdGVhZCBvZiBxdW90aW5nIHRoZSBvcmlnaW5hbCwgd2hpY2ggaXMgdXNlZCBsYXRlci4KK2x0X0VDSE89JEVDSE8KK2lmIHRlc3QgIlgkbHRfRUNITyIgPSAiWCRDT05GSUdfU0hFTEwgWyRdMCAtLWZhbGxiYWNrLWVjaG8iOyB0aGVuCisgICBsdF9FQ0hPPSIkQ09ORklHX1NIRUxMIFxcXCRcWyRdMCAtLWZhbGxiYWNrLWVjaG8iCitmaQorCitBQ19TVUJTVChsdF9FQ0hPKQorXSkKK19MVF9ERUNMKFtdLCBbU0hFTExdLCBbMV0sIFtTaGVsbCB0byB1c2Ugd2hlbiBpbnZva2luZyBzaGVsbCBzY3JpcHRzXSkKK19MVF9ERUNMKFtdLCBbRUNIT10sIFsxXSwKKyAgICBbQW4gZWNobyBwcm9ncmFtIHRoYXQgZG9lcyBub3QgaW50ZXJwcmV0IGJhY2tzbGFzaGVzXSkKK10pIyBfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSAorCisKKyMgX0xUX0VOQUJMRV9MT0NLCisjIC0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9FTkFCTEVfTE9DS10sCitbQUNfQVJHX0VOQUJMRShbbGlidG9vbC1sb2NrXSwKKyAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtbGlidG9vbC1sb2NrXSwKKyAgICBbYXZvaWQgbG9ja2luZyAobWlnaHQgYnJlYWsgcGFyYWxsZWwgYnVpbGRzKV0pXSkKK3Rlc3QgIngkZW5hYmxlX2xpYnRvb2xfbG9jayIgIT0geG5vICYmIGVuYWJsZV9saWJ0b29sX2xvY2s9eWVzCisKKyMgU29tZSBmbGFncyBuZWVkIHRvIGJlIHByb3BhZ2F0ZWQgdG8gdGhlIGNvbXBpbGVyIG9yIGxpbmtlciBmb3IgZ29vZAorIyBsaWJ0b29sIHN1cHBvcnQuCitjYXNlICRob3N0IGluCitpYTY0LSotaHB1eCopCisgICMgRmluZCBvdXQgd2hpY2ggQUJJIHdlIGFyZSB1c2luZy4KKyAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqRUxGLTMyKikKKwlIUFVYX0lBNjRfTU9ERT0iMzIiCisJOzsKKyAgICAgICpFTEYtNjQqKQorCUhQVVhfSUE2NF9NT0RFPSI2NCIKKwk7OworICAgIGVzYWMKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorICA7OworKi0qLWlyaXg2KikKKyAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICBlY2hvICdbI11saW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgorCSozMi1iaXQqKQorCSAgTEQ9IiR7TEQtbGR9IC1tZWxmMzJic21pcCIKKwkgIDs7CisJKk4zMiopCisJICBMRD0iJHtMRC1sZH0gLW1lbGYzMmJtaXBuMzIiCisJICA7OworCSo2NC1iaXQqKQorCSAgTEQ9IiR7TEQtbGR9IC1tZWxmNjRibWlwIgorCTs7CisgICAgICBlc2FjCisgICAgZWxzZQorICAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgorCSozMi1iaXQqKQorCSAgTEQ9IiR7TEQtbGR9IC0zMiIKKwkgIDs7CisJKk4zMiopCisJICBMRD0iJHtMRC1sZH0gLW4zMiIKKwkgIDs7CisJKjY0LWJpdCopCisJICBMRD0iJHtMRC1sZH0gLTY0IgorCSAgOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisKK3g4Nl82NC0qa2ZyZWVic2QqLWdudXx4ODZfNjQtKmxpbnV4KnxwcGMqLSpsaW51eCp8cG93ZXJwYyotKmxpbnV4KnwgXAorczM5MCotKmxpbnV4KnxzMzkwKi0qdHBmKnxzcGFyYyotKmxpbnV4KikKKyAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KKyAgICAgICozMi1iaXQqKQorCWNhc2UgJGhvc3QgaW4KKwkgIHg4Nl82NC0qa2ZyZWVic2QqLWdudSkKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl9pMzg2X2Zic2QiCisJICAgIDs7CisJICB4ODZfNjQtKmxpbnV4KikKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl9pMzg2IgorCSAgICA7OworCSAgcHBjNjQtKmxpbnV4Knxwb3dlcnBjNjQtKmxpbnV4KikKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZjMycHBjbGludXgiCisJICAgIDs7CisJICBzMzkweC0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3MzOTAiCisJICAgIDs7CisJICBzcGFyYzY0LSpsaW51eCopCisJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMl9zcGFyYyIKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgICo2NC1iaXQqKQorCWNhc2UgJGhvc3QgaW4KKwkgIHg4Nl82NC0qa2ZyZWVic2QqLWdudSkKKwkgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl94ODZfNjRfZmJzZCIKKwkgICAgOzsKKwkgIHg4Nl82NC0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKKwkgICAgOzsKKwkgIHBwYyotKmxpbnV4Knxwb3dlcnBjKi0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRwcGMiCisJICAgIDs7CisJICBzMzkwKi0qbGludXgqfHMzOTAqLSp0cGYqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfczM5MCIKKwkgICAgOzsKKwkgIHNwYXJjKi0qbGludXgqKQorCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiCisJICAgIDs7CisJZXNhYworCTs7CisgICAgZXNhYworICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisKKyotKi1zY28zLjJ2NSopCisgICMgT24gU0NPIE9wZW5TZXJ2ZXIgNSwgd2UgbmVlZCAtYmVsZiB0byBnZXQgZnVsbC1mZWF0dXJlZCBiaW5hcmllcy4KKyAgU0FWRV9DRkxBR1M9IiRDRkxBR1MiCisgIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKKyAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGZdLCBsdF9jdl9jY19uZWVkc19iZWxmLAorICAgIFtBQ19MQU5HX1BVU0goQykKKyAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLFtbXV0pXSxbbHRfY3ZfY2NfbmVlZHNfYmVsZj15ZXNdLFtsdF9jdl9jY19uZWVkc19iZWxmPW5vXSkKKyAgICAgQUNfTEFOR19QT1BdKQorICBpZiB0ZXN0IHgiJGx0X2N2X2NjX25lZWRzX2JlbGYiICE9IHgieWVzIjsgdGhlbgorICAgICMgdGhpcyBpcyBwcm9iYWJseSBnY2MgMi44LjAsIGVnY3MgMS4wIG9yIG5ld2VyOyBubyBuZWVkIGZvciAtYmVsZgorICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgorICBmaQorICA7Oworc3BhcmMqLSpzb2xhcmlzKikKKyAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KKyAgICAqNjQtYml0KikKKyAgICAgIGNhc2UgJGx0X2N2X3Byb2dfZ251X2xkIGluCisgICAgICB5ZXMqKSBMRD0iJHtMRC1sZH0gLW0gZWxmNjRfc3BhcmMiIDs7CisgICAgICAqKQorCWlmICR7TEQtbGR9IC02NCAtciAtbyBjb25mdGVzdDIubyBjb25mdGVzdC5vID4vZGV2L251bGwgMj4mMTsgdGhlbgorCSAgTEQ9IiR7TEQtbGR9IC02NCIKKwlmaQorCTs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIGVzYWMKKyAgZmkKKyAgcm0gLXJmIGNvbmZ0ZXN0KgorICA7OworZXNhYworCituZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKK10pIyBfTFRfRU5BQkxFX0xPQ0sKKworCisjIF9MVF9DTURfT0xEX0FSQ0hJVkUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DTURfT0xEX0FSQ0hJVkVdLAorW0FDX0NIRUNLX1RPT0woQVIsIGFyLCBmYWxzZSkKK3Rlc3QgLXogIiRBUiIgJiYgQVI9YXIKK3Rlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CitfTFRfREVDTChbXSwgW0FSXSwgWzFdLCBbVGhlIGFyY2hpdmVyXSkKK19MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0pCisKK0FDX0NIRUNLX1RPT0woU1RSSVAsIHN0cmlwLCA6KQordGVzdCAteiAiJFNUUklQIiAmJiBTVFJJUD06CitfTFRfREVDTChbXSwgW1NUUklQXSwgWzFdLCBbQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW1dKQorCitBQ19DSEVDS19UT09MKFJBTkxJQiwgcmFubGliLCA6KQordGVzdCAteiAiJFJBTkxJQiIgJiYgUkFOTElCPToKK19MVF9ERUNMKFtdLCBbUkFOTElCXSwgWzFdLAorICAgIFtDb21tYW5kcyB1c2VkIHRvIGluc3RhbGwgYW4gb2xkLXN0eWxlIGFyY2hpdmVdKQorCisjIERldGVybWluZSBjb21tYW5kcyB0byBjcmVhdGUgb2xkLXN0eWxlIHN0YXRpYyBhcmNoaXZlcy4KK29sZF9hcmNoaXZlX2NtZHM9JyRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJworb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworb2xkX3Bvc3R1bmluc3RhbGxfY21kcz0KKworaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBvcGVuYnNkKikKKyAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkb2xkbGliIgorICAgIDs7CisgICopCisgICAgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9IiRvbGRfcG9zdGluc3RhbGxfY21kc35cJFJBTkxJQiBcJG9sZGxpYiIKKyAgICA7OworICBlc2FjCisgIG9sZF9hcmNoaXZlX2NtZHM9IiRvbGRfYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkb2xkbGliIgorZmkKK19MVF9ERUNMKFtdLCBbb2xkX3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0pCitfTFRfREVDTChbXSwgW29sZF9wb3N0dW5pbnN0YWxsX2NtZHNdLCBbMl0pCitfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYW4gb2xkLXN0eWxlIGFyY2hpdmVdKQorXSkjIF9MVF9DTURfT0xEX0FSQ0hJVkUKKworCisjIF9MVF9DT01QSUxFUl9PUFRJT04oTUVTU0FHRSwgVkFSSUFCTEUtTkFNRSwgRkxBR1MsCisjCQlbT1VUUFVULUZJTEVdLCBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGNvbXBpbGVyIG9wdGlvbiB3b3JrcworQUNfREVGVU4oW19MVF9DT01QSUxFUl9PUFRJT05dLAorW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFskMV0sIFskMl0sCisgIFskMj1ubworICAgbTRfaWYoWyQ0XSwgLCBbYWNfb3V0ZmlsZT1jb25mdGVzdC4kYWNfb2JqZXh0XSwgW2FjX291dGZpbGU9JDRdKQorICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisgICBsdF9jb21waWxlcl9mbGFnPSIkMyIKKyAgICMgSW5zZXJ0IHRoZSBvcHRpb24gZWl0aGVyICgxKSBhZnRlciB0aGUgbGFzdCAqRkxBR1MgdmFyaWFibGUsIG9yCisgICAjICgyKSBiZWZvcmUgYSB3b3JkIGNvbnRhaW5pbmcgImNvbmZ0ZXN0LiIsIG9yICgzKSBhdCB0aGUgZW5kLgorICAgIyBOb3RlIHRoYXQgJGFjX2NvbXBpbGUgaXRzZWxmIGRvZXMgbm90IGNvbnRhaW4gYmFja3NsYXNoZXMgYW5kIGJlZ2lucworICAgIyB3aXRoIGEgZG9sbGFyIHNpZ24gKG5vdCBhIGh5cGhlbiksIHNvIHRoZSBlY2hvIHNob3VsZCB3b3JrIGNvcnJlY3RseS4KKyAgICMgVGhlIG9wdGlvbiBpcyByZWZlcmVuY2VkIHZpYSBhIHZhcmlhYmxlIHRvIGF2b2lkIGNvbmZ1c2luZyBzZWQuCisgICBsdF9jb21waWxlPWBlY2hvICIkYWNfY29tcGlsZSIgfCAkU0VEIFwKKyAgIC1lICdzOi4qRkxBR1N9XHswLDFcfSA6JiRsdF9jb21waWxlcl9mbGFnIDo7IHQnIFwKKyAgIC1lICdzOiBbW14gXV0qY29uZnRlc3RcLjogJGx0X2NvbXBpbGVyX2ZsYWcmOjsgdCcgXAorICAgLWUgJ3M6JDogJGx0X2NvbXBpbGVyX2ZsYWc6J2AKKyAgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186ICRsdF9jb21waWxlXCIiID4mQVNfTUVTU0FHRV9MT0dfRkQpCisgICAoZXZhbCAiJGx0X2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQorICAgYWNfc3RhdHVzPSQ/CisgICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgIiRhY19vdXRmaWxlIjsgdGhlbgorICAgICAjIFRoZSBjb21waWxlciBjYW4gb25seSB3YXJuIGFuZCBpZ25vcmUgdGhlIG9wdGlvbiBpZiBub3QgcmVjb2duaXplZAorICAgICAjIFNvIHNheSBubyBpZiB0aGVyZSBhcmUgd2FybmluZ3Mgb3RoZXIgdGhhbiB0aGUgdXN1YWwgb3V0cHV0LgorICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+Y29uZnRlc3QuZXhwCisgICAgICRTRUQgJy9eJC9kOyAvXiAqKy9kJyBjb25mdGVzdC5lcnIgPmNvbmZ0ZXN0LmVyMgorICAgICBpZiB0ZXN0ICEgLXMgY29uZnRlc3QuZXIyIHx8IGRpZmYgY29uZnRlc3QuZXhwIGNvbmZ0ZXN0LmVyMiA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgJDI9eWVzCisgICAgIGZpCisgICBmaQorICAgJFJNIGNvbmZ0ZXN0KgorXSkKKworaWYgdGVzdCB4IlskXSQyIiA9IHh5ZXM7IHRoZW4KKyAgICBtNF9pZihbJDVdLCAsIDosIFskNV0pCitlbHNlCisgICAgbTRfaWYoWyQ2XSwgLCA6LCBbJDZdKQorZmkKK10pIyBfTFRfQ09NUElMRVJfT1BUSU9OCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTElCVE9PTF9DT01QSUxFUl9PUFRJT05dLCBbX0xUX0NPTVBJTEVSX09QVElPTl0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfQ09NUElMRVJfT1BUSU9OXSwgW10pCisKKworIyBfTFRfTElOS0VSX09QVElPTihNRVNTQUdFLCBWQVJJQUJMRS1OQU1FLCBGTEFHUywKKyMgICAgICAgICAgICAgICAgICBbQUNUSU9OLVNVQ0NFU1NdLCBbQUNUSU9OLUZBSUxVUkVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHdoZXRoZXIgdGhlIGdpdmVuIGxpbmtlciBvcHRpb24gd29ya3MKK0FDX0RFRlVOKFtfTFRfTElOS0VSX09QVElPTl0sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorQUNfQ0FDSEVfQ0hFQ0soWyQxXSwgWyQyXSwKKyAgWyQyPW5vCisgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgTERGTEFHUz0iJExERkxBR1MgJDMiCisgICBlY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKyAgIGlmIChldmFsICRhY19saW5rIDI+Y29uZnRlc3QuZXJyKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dDsgdGhlbgorICAgICAjIFRoZSBsaW5rZXIgY2FuIG9ubHkgd2FybiBhbmQgaWdub3JlIHRoZSBvcHRpb24gaWYgbm90IHJlY29nbml6ZWQKKyAgICAgIyBTbyBzYXkgbm8gaWYgdGhlcmUgYXJlIHdhcm5pbmdzCisgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyOyB0aGVuCisgICAgICAgIyBBcHBlbmQgYW55IGVycm9ycyB0byB0aGUgY29uZmlnLmxvZy4KKyAgICAgICBjYXQgY29uZnRlc3QuZXJyIDE+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgJEVDSE8gIlgkX2x0X2xpbmtlcl9ib2lsZXJwbGF0ZSIgfCAkWHNlZCAtZSAnL14kL2QnID4gY29uZnRlc3QuZXhwCisgICAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIGNvbmZ0ZXN0LmVyciA+Y29uZnRlc3QuZXIyCisgICAgICAgaWYgZGlmZiBjb25mdGVzdC5leHAgY29uZnRlc3QuZXIyID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICQyPXllcworICAgICAgIGZpCisgICAgIGVsc2UKKyAgICAgICAkMj15ZXMKKyAgICAgZmkKKyAgIGZpCisgICAkUk0gLXIgY29uZnRlc3QqCisgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorXSkKKworaWYgdGVzdCB4IlskXSQyIiA9IHh5ZXM7IHRoZW4KKyAgICBtNF9pZihbJDRdLCAsIDosIFskNF0pCitlbHNlCisgICAgbTRfaWYoWyQ1XSwgLCA6LCBbJDVdKQorZmkKK10pIyBfTFRfTElOS0VSX09QVElPTgorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xJQlRPT0xfTElOS0VSX09QVElPTl0sIFtfTFRfTElOS0VSX09QVElPTl0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfTElOS0VSX09QVElPTl0sIFtdKQorCisKKyMgTFRfQ01EX01BWF9MRU4KKyMtLS0tLS0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9DTURfTUFYX0xFTl0sCitbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorIyBmaW5kIHRoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzCitBQ19NU0dfQ0hFQ0tJTkcoW3RoZSBtYXhpbXVtIGxlbmd0aCBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzXSkKK0FDX0NBQ0hFX1ZBTChbbHRfY3Zfc3lzX21heF9jbWRfbGVuXSwgW2RubAorICBpPTAKKyAgdGVzdHN0cmluZz0iQUJDRCIKKworICBjYXNlICRidWlsZF9vcyBpbgorICBtc2Rvc2RqZ3BwKikKKyAgICAjIE9uIERKR1BQLCB0aGlzIHRlc3QgY2FuIGJsb3cgdXAgcHJldHR5IGJhZGx5IGR1ZSB0byBwcm9ibGVtcyBpbiBsaWJjCisgICAgIyAoYW55IHNpbmdsZSBhcmd1bWVudCBleGNlZWRpbmcgMjAwMCBieXRlcyBjYXVzZXMgYSBidWZmZXIgb3ZlcnJ1bgorICAgICMgZHVyaW5nIGdsb2IgZXhwYW5zaW9uKS4gIEV2ZW4gaWYgaXQgd2VyZSBmaXhlZCwgdGhlIHJlc3VsdCBvZiB0aGlzCisgICAgIyBjaGVjayB3b3VsZCBiZSBsYXJnZXIgdGhhbiBpdCBzaG91bGQgYmUuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTEyMjg4OyAgICAjIDEySyBpcyBhYm91dCByaWdodAorICAgIDs7CisKKyAgZ251KikKKyAgICAjIFVuZGVyIEdOVSBIdXJkLCB0aGlzIHRlc3QgaXMgbm90IHJlcXVpcmVkIGJlY2F1c2UgdGhlcmUgaXMKKyAgICAjIG5vIGxpbWl0IHRvIHRoZSBsZW5ndGggb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKyAgICAjIExpYnRvb2wgd2lsbCBpbnRlcnByZXQgLTEgYXMgbm8gbGltaXQgd2hhdHNvZXZlcgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj0tMTsKKyAgICA7OworCisgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCisgICAgIyBPbiBXaW45eC9NRSwgdGhpcyB0ZXN0IGJsb3dzIHVwIC0tIGl0IHN1Y2NlZWRzLCBidXQgdGFrZXMKKyAgICAjIGFib3V0IDUgbWludXRlcyBhcyB0aGUgdGVzdHN0cmluZyBncm93cyBleHBvbmVudGlhbGx5LgorICAgICMgV29yc2UsIHNpbmNlIDl4L01FIGFyZSBub3QgcHJlLWVtcHRpdmVseSBtdWx0aXRhc2tpbmcsCisgICAgIyB5b3UgZW5kIHVwIHdpdGggYSAiZnJvemVuIiBjb21wdXRlciwgZXZlbiB0aG91Z2ggd2l0aCBwYXRpZW5jZQorICAgICMgdGhlIHRlc3QgZXZlbnR1YWxseSBzdWNjZWVkcyAod2l0aCBhIG1heCBsaW5lIGxlbmd0aCBvZiAyNTZrKS4KKyAgICAjIEluc3RlYWQsIGxldCdzIGp1c3QgcHVudDogdXNlIHRoZSBtaW5pbXVtIGxpbmVsZW5ndGggcmVwb3J0ZWQgYnkKKyAgICAjIGFsbCBvZiB0aGUgc3VwcG9ydGVkIHBsYXRmb3JtczogODE5MiAob24gTlQvMksvWFApLgorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj04MTkyOworICAgIDs7CisKKyAgYW1pZ2FvcyopCisgICAgIyBPbiBBbWlnYU9TIHdpdGggcGRrc2gsIHRoaXMgdGVzdCB0YWtlcyBob3VycywgbGl0ZXJhbGx5LgorICAgICMgU28gd2UganVzdCBwdW50IGFuZCB1c2UgYSBtaW5pbXVtIGxpbmUgbGVuZ3RoIG9mIDgxOTIuCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CisgICAgOzsKKworICBuZXRic2QqIHwgZnJlZWJzZCogfCBvcGVuYnNkKiB8IGRhcndpbiogfCBkcmFnb25mbHkqKQorICAgICMgVGhpcyBoYXMgYmVlbiBhcm91bmQgc2luY2UgMzg2QlNELCBhdCBsZWFzdC4gIExpa2VseSBmdXJ0aGVyLgorICAgIGlmIHRlc3QgLXggL3NiaW4vc3lzY3RsOyB0aGVuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YC9zYmluL3N5c2N0bCAtbiBrZXJuLmFyZ21heGAKKyAgICBlbGlmIHRlc3QgLXggL3Vzci9zYmluL3N5c2N0bDsgdGhlbgorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAvdXNyL3NiaW4vc3lzY3RsIC1uIGtlcm4uYXJnbWF4YAorICAgIGVsc2UKKyAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj02NTUzNgkjIHVzYWJsZSBkZWZhdWx0IGZvciBhbGwgQlNEcworICAgIGZpCisgICAgIyBBbmQgYWRkIGEgc2FmZXR5IHpvbmUKKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyA0YAorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwqIDNgCisgICAgOzsKKworICBpbnRlcml4KikKKyAgICAjIFdlIGtub3cgdGhlIHZhbHVlIDI2MjE0NCBhbmQgaGFyZGNvZGUgaXQgd2l0aCBhIHNhZmV0eSB6b25lIChsaWtlIEJTRCkKKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTk2NjA4CisgICAgOzsKKworICBvc2YqKQorICAgICMgRHIuIEhhbnMgRWtrZWhhcmQgUGxlc3NlciByZXBvcnRzIHNlZWluZyBhIGtlcm5lbCBwYW5pYyBydW5uaW5nIGNvbmZpZ3VyZQorICAgICMgZHVlIHRvIHRoaXMgdGVzdCB3aGVuIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXQgaXMgMSBvbiBUcnU2NC4gSXQgaXMgbm90CisgICAgIyBuaWNlIHRvIGNhdXNlIGtlcm5lbCBwYW5pY3Mgc28gbGV0cyBhdm9pZCB0aGUgbG9vcCBiZWxvdy4KKyAgICAjIEZpcnN0IHNldCBhIHJlYXNvbmFibGUgZGVmYXVsdC4KKyAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49MTYzODQKKyAgICAjCisgICAgaWYgdGVzdCAteCAvc2Jpbi9zeXNjb25maWc7IHRoZW4KKyAgICAgIGNhc2UgYC9zYmluL3N5c2NvbmZpZyAtcSBwcm9jIGV4ZWNfZGlzYWJsZV9hcmdfbGltaXRgIGluCisgICAgICAgICoxKikgbHRfY3Zfc3lzX21heF9jbWRfbGVuPS0xIDs7CisgICAgICBlc2FjCisgICAgZmkKKyAgICA7OworICBzY28zLjJ2NSopCisgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTEwMjQwMAorICAgIDs7CisgIHN5c3Y1KiB8IHNjbzV2NiogfCBzeXN2NC4ydXcyKikKKyAgICBrYXJnbWF4PWBncmVwIEFSR19NQVggL2V0Yy9jb25mL2NmLmQvc3R1bmUgMj4vZGV2L251bGxgCisgICAgaWYgdGVzdCAtbiAiJGthcmdtYXgiOyB0aGVuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGVjaG8gJGthcmdtYXggfCBzZWQgJ3MvLipbWwkgXV0vLydgCisgICAgZWxzZQorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTMyNzY4CisgICAgZmkKKyAgICA7OworICAqKQorICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gKGdldGNvbmYgQVJHX01BWCkgMj4gL2Rldi9udWxsYAorICAgIGlmIHRlc3QgLW4gIiRsdF9jdl9zeXNfbWF4X2NtZF9sZW4iOyB0aGVuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgJGx0X2N2X3N5c19tYXhfY21kX2xlbiBcLyA0YAorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXCogM2AKKyAgICBlbHNlCisgICAgICAjIE1ha2UgdGVzdHN0cmluZyBhIGxpdHRsZSBiaWdnZXIgYmVmb3JlIHdlIGRvIGFueXRoaW5nIHdpdGggaXQuCisgICAgICAjIGEgMUsgc3RyaW5nIHNob3VsZCBiZSBhIHJlYXNvbmFibGUgc3RhcnQuCisgICAgICBmb3IgaSBpbiAxIDIgMyA0IDUgNiA3IDggOyBkbworICAgICAgICB0ZXN0c3RyaW5nPSR0ZXN0c3RyaW5nJHRlc3RzdHJpbmcKKyAgICAgIGRvbmUKKyAgICAgIFNIRUxMPSR7U0hFTEwtJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH19CisgICAgICAjIElmIHRlc3QgaXMgbm90IGEgc2hlbGwgYnVpbHQtaW4sIHdlJ2xsIHByb2JhYmx5IGVuZCB1cCBjb21wdXRpbmcgYQorICAgICAgIyBtYXhpbXVtIGxlbmd0aCB0aGF0IGlzIG9ubHkgaGFsZiBvZiB0aGUgYWN0dWFsIG1heGltdW0gbGVuZ3RoLCBidXQKKyAgICAgICMgd2UgY2FuJ3QgdGVsbC4KKyAgICAgIHdoaWxlIHsgdGVzdCAiWCJgJFNIRUxMIFskXTAgLS1mYWxsYmFjay1lY2hvICJYJHRlc3RzdHJpbmckdGVzdHN0cmluZyIgMj4vZGV2L251bGxgIFwKKwkgICAgICAgICA9ICJYWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgorCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAorICAgICAgZG8KKyAgICAgICAgaT1gZXhwciAkaSArIDFgCisgICAgICAgIHRlc3RzdHJpbmc9JHRlc3RzdHJpbmckdGVzdHN0cmluZworICAgICAgZG9uZQorICAgICAgIyBPbmx5IGNoZWNrIHRoZSBzdHJpbmcgbGVuZ3RoIG91dHNpZGUgdGhlIGxvb3AuCisgICAgICBsdF9jdl9zeXNfbWF4X2NtZF9sZW49YGV4cHIgIlgkdGVzdHN0cmluZyIgOiAiLioiIDI+JjFgCisgICAgICB0ZXN0c3RyaW5nPQorICAgICAgIyBBZGQgYSBzaWduaWZpY2FudCBzYWZldHkgZmFjdG9yIGJlY2F1c2UgQysrIGNvbXBpbGVycyBjYW4gdGFjayBvbgorICAgICAgIyBtYXNzaXZlIGFtb3VudHMgb2YgYWRkaXRpb25hbCBhcmd1bWVudHMgYmVmb3JlIHBhc3NpbmcgdGhlbSB0byB0aGUKKyAgICAgICMgbGlua2VyLiAgSXQgYXBwZWFycyBhcyB0aG91Z2ggMS8yIGlzIGEgdXNhYmxlIHZhbHVlLgorICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gMmAKKyAgICBmaQorICAgIDs7CisgIGVzYWMKK10pCitpZiB0ZXN0IC1uICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gOyB0aGVuCisgIEFDX01TR19SRVNVTFQoJGx0X2N2X3N5c19tYXhfY21kX2xlbikKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChub25lKQorZmkKK21heF9jbWRfbGVuPSRsdF9jdl9zeXNfbWF4X2NtZF9sZW4KK19MVF9ERUNMKFtdLCBbbWF4X2NtZF9sZW5dLCBbMF0sCisgICAgW1doYXQgaXMgdGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgY29tbWFuZD9dKQorXSkjIExUX0NNRF9NQVhfTEVOCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfTElCVE9PTF9TWVNfTUFYX0NNRF9MRU5dLCBbTFRfQ01EX01BWF9MRU5dKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19NQVhfQ01EX0xFTl0sIFtdKQorCisKKyMgX0xUX0hFQURFUl9ETEZDTgorIyAtLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0hFQURFUl9ETEZDTl0sCitbQUNfQ0hFQ0tfSEVBREVSUyhbZGxmY24uaF0sIFtdLCBbXSwgW0FDX0lOQ0xVREVTX0RFRkFVTFRdKWRubAorXSkjIF9MVF9IRUFERVJfRExGQ04KKworCisjIF9MVF9UUllfRExPUEVOX1NFTEYgKEFDVElPTi1JRi1UUlVFLCBBQ1RJT04tSUYtVFJVRS1XLVVTQ09SRSwKKyMgICAgICAgICAgICAgICAgICAgICAgQUNUSU9OLUlGLUZBTFNFLCBBQ1RJT04tSUYtQ1JPU1MtQ09NUElMSU5HKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX1RSWV9ETE9QRU5fU0VMRl0sCitbbTRfcmVxdWlyZShbX0xUX0hFQURFUl9ETEZDTl0pZG5sCitpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIFskNF0KK2Vsc2UKKyAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorWyNsaW5lIF9fb2xpbmVfXyAiY29uZmlndXJlIgorI2luY2x1ZGUgImNvbmZkZWZzLmgiCisKKyNpZiBIQVZFX0RMRkNOX0gKKyNpbmNsdWRlIDxkbGZjbi5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWZkZWYgUlRMRF9HTE9CQUwKKyMgIGRlZmluZSBMVF9ETEdMT0JBTAkJUlRMRF9HTE9CQUwKKyNlbHNlCisjICBpZmRlZiBETF9HTE9CQUwKKyMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQlETF9HTE9CQUwKKyMgIGVsc2UKKyMgICAgZGVmaW5lIExUX0RMR0xPQkFMCQkwCisjICBlbmRpZgorI2VuZGlmCisKKy8qIFdlIG1heSBoYXZlIHRvIGRlZmluZSBMVF9ETExBWllfT1JfTk9XIGluIHRoZSBjb21tYW5kIGxpbmUgaWYgd2UKKyAgIGZpbmQgb3V0IGl0IGRvZXMgbm90IHdvcmsgaW4gc29tZSBwbGF0Zm9ybS4gKi8KKyNpZm5kZWYgTFRfRExMQVpZX09SX05PVworIyAgaWZkZWYgUlRMRF9MQVpZCisjICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlSVExEX0xBWlkKKyMgIGVsc2UKKyMgICAgaWZkZWYgRExfTEFaWQorIyAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCQlETF9MQVpZCisjICAgIGVsc2UKKyMgICAgICBpZmRlZiBSVExEX05PVworIyAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJUlRMRF9OT1cKKyMgICAgICBlbHNlCisjICAgICAgICBpZmRlZiBETF9OT1cKKyMgICAgICAgICAgZGVmaW5lIExUX0RMTEFaWV9PUl9OT1cJRExfTk9XCisjICAgICAgICBlbHNlCisjICAgICAgICAgIGRlZmluZSBMVF9ETExBWllfT1JfTk9XCTAKKyMgICAgICAgIGVuZGlmCisjICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgIGVuZGlmCisjZW5kaWYKKwordm9pZCBmbm9yZCgpIHsgaW50IGk9NDI7fQoraW50IG1haW4gKCkKK3sKKyAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CisgIGludCBzdGF0dXMgPSAkbHRfZGx1bmtub3duOworCisgIGlmIChzZWxmKQorICAgIHsKKyAgICAgIGlmIChkbHN5bSAoc2VsZiwiZm5vcmQiKSkgICAgICAgc3RhdHVzID0gJGx0X2Rsbm9fdXNjb3JlOworICAgICAgZWxzZSBpZiAoZGxzeW0oIHNlbGYsIl9mbm9yZCIpKSBzdGF0dXMgPSAkbHRfZGxuZWVkX3VzY29yZTsKKyAgICAgIC8qIGRsY2xvc2UgKHNlbGYpOyAqLworICAgIH0KKyAgZWxzZQorICAgIHB1dHMgKGRsZXJyb3IgKCkpOworCisgIHJldHVybiBzdGF0dXM7Cit9XQorX0xUX0VPRgorICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCisgICAgKC4vY29uZnRlc3Q7IGV4aXQ7ICkgPiZBU19NRVNTQUdFX0xPR19GRCAyPi9kZXYvbnVsbAorICAgIGx0X3N0YXR1cz0kPworICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KKyAgICAgIHgkbHRfZGxub191c2NvcmUpICQxIDs7CisgICAgICB4JGx0X2RsbmVlZF91c2NvcmUpICQyIDs7CisgICAgICB4JGx0X2RsdW5rbm93bnx4KikgJDMgOzsKKyAgICBlc2FjCisgIGVsc2UgOgorICAgICMgY29tcGlsYXRpb24gZmFpbGVkCisgICAgJDMKKyAgZmkKK2ZpCitybSAtZnIgY29uZnRlc3QqCitdKSMgX0xUX1RSWV9ETE9QRU5fU0VMRgorCisKKyMgTFRfU1lTX0RMT1BFTl9TRUxGCisjIC0tLS0tLS0tLS0tLS0tLS0tLQorQUNfREVGVU4oW0xUX1NZU19ETE9QRU5fU0VMRl0sCitbbTRfcmVxdWlyZShbX0xUX0hFQURFUl9ETEZDTl0pZG5sCitpZiB0ZXN0ICJ4JGVuYWJsZV9kbG9wZW4iICE9IHh5ZXM7IHRoZW4KKyAgZW5hYmxlX2Rsb3Blbj11bmtub3duCisgIGVuYWJsZV9kbG9wZW5fc2VsZj11bmtub3duCisgIGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9dW5rbm93bgorZWxzZQorICBsdF9jdl9kbG9wZW49bm8KKyAgbHRfY3ZfZGxvcGVuX2xpYnM9CisKKyAgY2FzZSAkaG9zdF9vcyBpbgorICBiZW9zKikKKyAgICBsdF9jdl9kbG9wZW49ImxvYWRfYWRkX29uIgorICAgIGx0X2N2X2Rsb3Blbl9saWJzPQorICAgIGx0X2N2X2Rsb3Blbl9zZWxmPXllcworICAgIDs7CisKKyAgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgbHRfY3ZfZGxvcGVuPSJMb2FkTGlicmFyeSIKKyAgICBsdF9jdl9kbG9wZW5fbGlicz0KKyAgICA7OworCisgIGN5Z3dpbiopCisgICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgOzsKKworICBkYXJ3aW4qKQorICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAorICAgIEFDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKKwkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLFsKKyAgICBsdF9jdl9kbG9wZW49ImR5bGQiCisgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CisgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCisgICAgXSkKKyAgICA7OworCisgICopCisgICAgQUNfQ0hFQ0tfRlVOQyhbc2hsX2xvYWRdLAorCSAgW2x0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiXSwKKyAgICAgIFtBQ19DSEVDS19MSUIoW2RsZF0sIFtzaGxfbG9hZF0sCisJICAgIFtsdF9jdl9kbG9wZW49InNobF9sb2FkIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiXSwKKwlbQUNfQ0hFQ0tfRlVOQyhbZGxvcGVuXSwKKwkgICAgICBbbHRfY3ZfZGxvcGVuPSJkbG9wZW4iXSwKKwkgIFtBQ19DSEVDS19MSUIoW2RsXSwgW2Rsb3Blbl0sCisJCVtsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGwiXSwKKwkgICAgW0FDX0NIRUNLX0xJQihbc3ZsZF0sIFtkbG9wZW5dLAorCQkgIFtsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sc3ZsZCJdLAorCSAgICAgIFtBQ19DSEVDS19MSUIoW2RsZF0sIFtkbGRfbGlua10sCisJCSAgICBbbHRfY3ZfZGxvcGVuPSJkbGRfbGluayIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sZGxkIl0pCisJICAgICAgXSkKKwkgICAgXSkKKwkgIF0pCisJXSkKKyAgICAgIF0pCisgICAgOzsKKyAgZXNhYworCisgIGlmIHRlc3QgIngkbHRfY3ZfZGxvcGVuIiAhPSB4bm87IHRoZW4KKyAgICBlbmFibGVfZGxvcGVuPXllcworICBlbHNlCisgICAgZW5hYmxlX2Rsb3Blbj1ubworICBmaQorCisgIGNhc2UgJGx0X2N2X2Rsb3BlbiBpbgorICBkbG9wZW4pCisgICAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICAgIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2RsZmNuX2giID0geHllcyAmJiBDUFBGTEFHUz0iJENQUEZMQUdTIC1ESEFWRV9ETEZDTl9IIgorCisgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCisKKyAgICBzYXZlX0xJQlM9IiRMSUJTIgorICAgIExJQlM9IiRsdF9jdl9kbG9wZW5fbGlicyAkTElCUyIKKworICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCisJICBsdF9jdl9kbG9wZW5fc2VsZiwgW2RubAorCSAgX0xUX1RSWV9ETE9QRU5fU0VMRigKKwkgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzLCBsdF9jdl9kbG9wZW5fc2VsZj15ZXMsCisJICAgIGx0X2N2X2Rsb3Blbl9zZWxmPW5vLCBsdF9jdl9kbG9wZW5fc2VsZj1jcm9zcykKKyAgICBdKQorCisgICAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW5fc2VsZiIgPSB4eWVzOyB0aGVuCisgICAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljXCIKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCisJICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMsIFtkbmwKKwkgIF9MVF9UUllfRExPUEVOX1NFTEYoCisJICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz15ZXMsCisJICAgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1ubywgIGx0X2N2X2Rsb3Blbl9zZWxmX3N0YXRpYz1jcm9zcykKKyAgICAgIF0pCisgICAgZmkKKworICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgIExJQlM9IiRzYXZlX0xJQlMiCisgICAgOzsKKyAgZXNhYworCisgIGNhc2UgJGx0X2N2X2Rsb3Blbl9zZWxmIGluCisgIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmPSRsdF9jdl9kbG9wZW5fc2VsZiA7OworICAqKSBlbmFibGVfZGxvcGVuX3NlbGY9dW5rbm93biA7OworICBlc2FjCisKKyAgY2FzZSAkbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIGluCisgIHllc3xubykgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz0kbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIDs7CisgICopIGVuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWM9dW5rbm93biA7OworICBlc2FjCitmaQorX0xUX0RFQ0woW2Rsb3Blbl9zdXBwb3J0XSwgW2VuYWJsZV9kbG9wZW5dLCBbMF0sCisJIFtXaGV0aGVyIGRsb3BlbiBpcyBzdXBwb3J0ZWRdKQorX0xUX0RFQ0woW2Rsb3Blbl9zZWxmXSwgW2VuYWJsZV9kbG9wZW5fc2VsZl0sIFswXSwKKwkgW1doZXRoZXIgZGxvcGVuIG9mIHByb2dyYW1zIGlzIHN1cHBvcnRlZF0pCitfTFRfREVDTChbZGxvcGVuX3NlbGZfc3RhdGljXSwgW2VuYWJsZV9kbG9wZW5fc2VsZl9zdGF0aWNdLCBbMF0sCisJIFtXaGV0aGVyIGRsb3BlbiBvZiBzdGF0aWNhbGx5IGxpbmtlZCBwcm9ncmFtcyBpcyBzdXBwb3J0ZWRdKQorXSkjIExUX1NZU19ETE9QRU5fU0VMRgorCisjIE9sZCBuYW1lOgorQVVfQUxJQVMoW0FDX0xJQlRPT0xfRExPUEVOX1NFTEZdLCBbTFRfU1lTX0RMT1BFTl9TRUxGXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5fU0VMRl0sIFtdKQorCisKKyMgX0xUX0NPTVBJTEVSX0NfTyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDaGVjayB0byBzZWUgaWYgb3B0aW9ucyAtYyBhbmQgLW8gYXJlIHNpbXVsdGFuZW91c2x5IHN1cHBvcnRlZCBieSBjb21waWxlci4KKyMgVGhpcyBtYWNybyBkb2VzIG5vdCBoYXJkIGNvZGUgdGhlIGNvbXBpbGVyIGxpa2UgQUNfUFJPR19DQ19DX08uCittNF9kZWZ1bihbX0xUX0NPTVBJTEVSX0NfT10sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCitBQ19DQUNIRV9DSEVDSyhbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1jIC1vIGZpbGUuJGFjX29iamV4dF0sCisgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSldLAorICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpPW5vCisgICAkUk0gLXIgY29uZnRlc3QgMj4vZGV2L251bGwKKyAgIG1rZGlyIGNvbmZ0ZXN0CisgICBjZCBjb25mdGVzdAorICAgbWtkaXIgb3V0CisgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKKworICAgbHRfY29tcGlsZXJfZmxhZz0iLW8gb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0IgorICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKKyAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCisgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCisgICAjIHdpdGggYSBkb2xsYXIgc2lnbiAobm90IGEgaHlwaGVuKSwgc28gdGhlIGVjaG8gc2hvdWxkIHdvcmsgY29ycmVjdGx5LgorICAgbHRfY29tcGlsZT1gZWNobyAiJGFjX2NvbXBpbGUiIHwgJFNFRCBcCisgICAtZSAnczouKkZMQUdTfVx7MCwxXH0gOiYkbHRfY29tcGlsZXJfZmxhZyA6OyB0JyBcCisgICAtZSAnczogW1teIF1dKmNvbmZ0ZXN0XC46ICRsdF9jb21waWxlcl9mbGFnJjo7IHQnIFwKKyAgIC1lICdzOiQ6ICRsdF9jb21waWxlcl9mbGFnOidgCisgICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkbHRfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAgKGV2YWwgIiRsdF9jb21waWxlIiAyPm91dC9jb25mdGVzdC5lcnIpCisgICBhY19zdGF0dXM9JD8KKyAgIGNhdCBvdXQvY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGVjaG8gIiRhc19tZTpfX29saW5lX186IFwkPyA9ICRhY19zdGF0dXMiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgIGlmIChleGl0ICRhY19zdGF0dXMpICYmIHRlc3QgLXMgb3V0L2NvbmZ0ZXN0Mi4kYWNfb2JqZXh0CisgICB0aGVuCisgICAgICMgVGhlIGNvbXBpbGVyIGNhbiBvbmx5IHdhcm4gYW5kIGlnbm9yZSB0aGUgb3B0aW9uIGlmIG5vdCByZWNvZ25pemVkCisgICAgICMgU28gc2F5IG5vIGlmIHRoZXJlIGFyZSB3YXJuaW5ncworICAgICAkRUNITyAiWCRfbHRfY29tcGlsZXJfYm9pbGVycGxhdGUiIHwgJFhzZWQgLWUgJy9eJC9kJyA+IG91dC9jb25mdGVzdC5leHAKKyAgICAgJFNFRCAnL14kL2Q7IC9eICorL2QnIG91dC9jb25mdGVzdC5lcnIgPm91dC9jb25mdGVzdC5lcjIKKyAgICAgaWYgdGVzdCAhIC1zIG91dC9jb25mdGVzdC5lcjIgfHwgZGlmZiBvdXQvY29uZnRlc3QuZXhwIG91dC9jb25mdGVzdC5lcjIgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKKyAgICAgZmkKKyAgIGZpCisgICBjaG1vZCB1K3cgLiAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgJFJNIGNvbmZ0ZXN0KgorICAgIyBTR0kgQysrIGNvbXBpbGVyIHdpbGwgY3JlYXRlIGRpcmVjdG9yeSBvdXQvaWlfZmlsZXMvIGZvcgorICAgIyB0ZW1wbGF0ZSBpbnN0YW50aWF0aW9uCisgICB0ZXN0IC1kIG91dC9paV9maWxlcyAmJiAkUk0gb3V0L2lpX2ZpbGVzLyogJiYgcm1kaXIgb3V0L2lpX2ZpbGVzCisgICAkUk0gb3V0LyogJiYgcm1kaXIgb3V0CisgICBjZCAuLgorICAgJFJNIC1yIGNvbmZ0ZXN0CisgICAkUk0gY29uZnRlc3QqCitdKQorX0xUX1RBR0RFQ0woW2NvbXBpbGVyX2Nfb10sIFtsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb10sIFsxXSwKKwlbRG9lcyBjb21waWxlciBzaW11bHRhbmVvdXNseSBzdXBwb3J0IC1jIGFuZCAtbyBvcHRpb25zP10pCitdKSMgX0xUX0NPTVBJTEVSX0NfTworCisKKyMgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHRvIHNlZSBpZiB3ZSBjYW4gZG8gaGFyZCBsaW5rcyB0byBsb2NrIHNvbWUgZmlsZXMgaWYgbmVlZGVkCittNF9kZWZ1bihbX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1NdLAorW200X3JlcXVpcmUoW19MVF9FTkFCTEVfTE9DS10pZG5sCittNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK19MVF9DT01QSUxFUl9DX08oWyQxXSkKKworaGFyZF9saW5rcz0ibm90dGVzdGVkIgoraWYgdGVzdCAiJF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKSIgPSBubyAmJiB0ZXN0ICIkbmVlZF9sb2NrcyIgIT0gbm87IHRoZW4KKyAgIyBkbyBub3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZSBvZiBuZWVkX2xvY2tzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyCisgIEFDX01TR19DSEVDS0lORyhbaWYgd2UgY2FuIGxvY2sgd2l0aCBoYXJkIGxpbmtzXSkKKyAgaGFyZF9saW5rcz15ZXMKKyAgJFJNIGNvbmZ0ZXN0KgorICBsbiBjb25mdGVzdC5hIGNvbmZ0ZXN0LmIgMj4vZGV2L251bGwgJiYgaGFyZF9saW5rcz1ubworICB0b3VjaCBjb25mdGVzdC5hCisgIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPiY1IHx8IGhhcmRfbGlua3M9bm8KKyAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+L2Rldi9udWxsICYmIGhhcmRfbGlua3M9bm8KKyAgQUNfTVNHX1JFU1VMVChbJGhhcmRfbGlua3NdKQorICBpZiB0ZXN0ICIkaGFyZF9saW5rcyIgPSBubzsgdGhlbgorICAgIEFDX01TR19XQVJOKFtgJENDJyBkb2VzIG5vdCBzdXBwb3J0IGAtYyAtbycsIHNvIGBtYWtlIC1qJyBtYXkgYmUgdW5zYWZlXSkKKyAgICBuZWVkX2xvY2tzPXdhcm4KKyAgZmkKK2Vsc2UKKyAgbmVlZF9sb2Nrcz1ubworZmkKK19MVF9ERUNMKFtdLCBbbmVlZF9sb2Nrc10sIFsxXSwgW011c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uP10pCitdKSMgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MKKworCisjIF9MVF9DSEVDS19PQkpESVIKKyMgLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DSEVDS19PQkpESVJdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3Igb2JqZGlyXSwgW2x0X2N2X29iamRpcl0sCitbcm0gLWYgLmxpYnMgMj4vZGV2L251bGwKK21rZGlyIC5saWJzIDI+L2Rldi9udWxsCitpZiB0ZXN0IC1kIC5saWJzOyB0aGVuCisgIGx0X2N2X29iamRpcj0ubGlicworZWxzZQorICAjIE1TLURPUyBkb2VzIG5vdCBhbGxvdyBmaWxlbmFtZXMgdGhhdCBiZWdpbiB3aXRoIGEgZG90LgorICBsdF9jdl9vYmpkaXI9X2xpYnMKK2ZpCitybWRpciAubGlicyAyPi9kZXYvbnVsbF0pCitvYmpkaXI9JGx0X2N2X29iamRpcgorX0xUX0RFQ0woW10sIFtvYmpkaXJdLCBbMF0sCisgICAgICAgICBbVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzXSlkbmwKK200X3BhdHRlcm5fYWxsb3coW0xUX09CSkRJUl0pZG5sCitBQ19ERUZJTkVfVU5RVU9URUQoTFRfT0JKRElSLCAiJGx0X2N2X29iamRpci8iLAorICBbRGVmaW5lIHRvIHRoZSBzdWItZGlyZWN0b3J5IGluIHdoaWNoIGxpYnRvb2wgc3RvcmVzIHVuaW5zdGFsbGVkIGxpYnJhcmllcy5dKQorXSkjIF9MVF9DSEVDS19PQkpESVIKKworCisjIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSChbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIGhhcmRjb2RpbmcgYXR0cmlidXRlcy4KK200X2RlZnVuKFtfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEhdLAorW0FDX01TR19DSEVDS0lORyhbaG93IHRvIGhhcmRjb2RlIGxpYnJhcnkgcGF0aHMgaW50byBwcm9ncmFtc10pCitfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPQoraWYgdGVzdCAtbiAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIiB8fAorICAgdGVzdCAtbiAiJF9MVF9UQUdWQVIocnVucGF0aF92YXIsICQxKSIgfHwKKyAgIHRlc3QgIlgkX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKSIgPSAiWHllcyIgOyB0aGVuCisKKyAgIyBXZSBjYW4gaGFyZGNvZGUgbm9uLWV4aXN0ZW50IGRpcmVjdG9yaWVzLgorICBpZiB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKSIgIT0gbm8gJiYKKyAgICAgIyBJZiB0aGUgb25seSBtZWNoYW5pc20gdG8gYXZvaWQgaGFyZGNvZGluZyBpcyBzaGxpYnBhdGhfdmFyLCB3ZQorICAgICAjIGhhdmUgdG8gcmVsaW5rLCBvdGhlcndpc2Ugd2UgbWlnaHQgbGluayB3aXRoIGFuIGluc3RhbGxlZCBsaWJyYXJ5CisgICAgICMgd2hlbiB3ZSBzaG91bGQgYmUgbGlua2luZyB3aXRoIGEgeWV0LXRvLWJlLWluc3RhbGxlZCBvbmUKKyAgICAgIyMgdGVzdCAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpIiAhPSBubyAmJgorICAgICB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSkiICE9IG5vOyB0aGVuCisgICAgIyBMaW5raW5nIGFsd2F5cyBoYXJkY29kZXMgdGhlIHRlbXBvcmFyeSBsaWJyYXJ5IGRpcmVjdG9yeS4KKyAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPXJlbGluaworICBlbHNlCisgICAgIyBXZSBjYW4gbGluayB3aXRob3V0IGhhcmRjb2RpbmcsIGFuZCB3ZSBjYW4gaGFyZGNvZGUgbm9uZXhpc3RpbmcgZGlycy4KKyAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPWltbWVkaWF0ZQorICBmaQorZWxzZQorICAjIFdlIGNhbm5vdCBoYXJkY29kZSBhbnl0aGluZywgb3IgZWxzZSB3ZSBjYW4gb25seSBoYXJkY29kZSBleGlzdGluZworICAjIGRpcmVjdG9yaWVzLgorICBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPXVuc3VwcG9ydGVkCitmaQorQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSldKQorCitpZiB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKSIgPSByZWxpbmsgfHwKKyAgIHRlc3QgIiRfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKSIgPSB5ZXM7IHRoZW4KKyAgIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCisgIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8KK2VsaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgfHwKKyAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gbm87IHRoZW4KKyAgIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3QgbmVjZXNzYXJ5CisgIGVuYWJsZV9mYXN0X2luc3RhbGw9bmVlZGxlc3MKK2ZpCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2FjdGlvbl0sIFswXSwKKyAgICBbSG93IHRvIGhhcmRjb2RlIGEgc2hhcmVkIGxpYnJhcnkgcGF0aCBpbnRvIGFuIGV4ZWN1dGFibGVdKQorXSkjIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSAorCisKKyMgX0xUX0NNRF9TVFJJUExJQgorIyAtLS0tLS0tLS0tLS0tLS0tCittNF9kZWZ1bihbX0xUX0NNRF9TVFJJUExJQl0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorc3RyaXBsaWI9CitvbGRfc3RyaXBsaWI9CitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgc3RyaXBwaW5nIGxpYnJhcmllcyBpcyBwb3NzaWJsZV0pCitpZiB0ZXN0IC1uICIkU1RSSVAiICYmICRTVFJJUCAtViAyPiYxIHwgJEdSRVAgIkdOVSBzdHJpcCIgPi9kZXYvbnVsbDsgdGhlbgorICB0ZXN0IC16ICIkb2xkX3N0cmlwbGliIiAmJiBvbGRfc3RyaXBsaWI9IiRTVFJJUCAtLXN0cmlwLWRlYnVnIgorICB0ZXN0IC16ICIkc3RyaXBsaWIiICYmIHN0cmlwbGliPSIkU1RSSVAgLS1zdHJpcC11bm5lZWRlZCIKKyAgQUNfTVNHX1JFU1VMVChbeWVzXSkKK2Vsc2UKKyMgRklYTUUgLSBpbnNlcnQgc29tZSByZWFsIHRlc3RzLCBob3N0X29zIGlzbid0IHJlYWxseSBnb29kIGVub3VnaAorICBjYXNlICRob3N0X29zIGluCisgIGRhcndpbiopCisgICAgaWYgdGVzdCAtbiAiJFNUUklQIiA7IHRoZW4KKyAgICAgIHN0cmlwbGliPSIkU1RSSVAgLXgiCisgICAgICBvbGRfc3RyaXBsaWI9IiRTVFJJUCAtUyIKKyAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCisgICAgZWxzZQorICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorICAgIGZpCisgICAgOzsKKyAgKikKKyAgICBBQ19NU0dfUkVTVUxUKFtub10pCisgICAgOzsKKyAgZXNhYworZmkKK19MVF9ERUNMKFtdLCBbb2xkX3N0cmlwbGliXSwgWzFdLCBbQ29tbWFuZHMgdG8gc3RyaXAgbGlicmFyaWVzXSkKK19MVF9ERUNMKFtdLCBbc3RyaXBsaWJdLCBbMV0pCitdKSMgX0xUX0NNRF9TVFJJUExJQgorCisKKyMgX0xUX1NZU19EWU5BTUlDX0xJTktFUihbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUE9SVE1FIEZpbGwgaW4geW91ciBsZC5zbyBjaGFyYWN0ZXJpc3RpY3MKK200X2RlZnVuKFtfTFRfU1lTX0RZTkFNSUNfTElOS0VSXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfRklMRVVUSUxTX0RFRkFVTFRTXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK0FDX01TR19DSEVDS0lORyhbZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzXSkKK200X2lmKFskMV0sCisJW10sIFsKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBkYXJ3aW4qKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovLC9MUi8iIDs7CisgICAgKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LyIgOzsKKyAgZXNhYworICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAorICBpZiAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJzsnID4vZGV2L251bGwgOyB0aGVuCisgICAgIyBpZiB0aGUgcGF0aCBjb250YWlucyAiOyIgdGhlbiB3ZSBhc3N1bWUgaXQgdG8gYmUgdGhlIHNlcGFyYXRvcgorICAgICMgb3RoZXJ3aXNlIGRlZmF1bHQgdG8gdGhlIHN0YW5kYXJkIHBhdGggc2VwYXJhdG9yIChpLmUuICI6IikgLSBpdCBpcworICAgICMgYXNzdW1lZCB0aGF0IG5vIHBhcnQgb2YgYSBub3JtYWwgcGF0aG5hbWUgY29udGFpbnMgIjsiIGJ1dCB0aGF0IHNob3VsZAorICAgICMgb2theSBpbiB0aGUgcmVhbCB3b3JsZCB3aGVyZSAiOyIgaW4gZGlycGF0aHMgaXMgaXRzZWxmIHByb2JsZW1hdGljLgorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKyAgZWxzZQorICAgIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKyAgZmkKKyAgIyBPaywgbm93IHdlIGhhdmUgdGhlIHBhdGgsIHNlcGFyYXRlZCBieSBzcGFjZXMsIHdlIGNhbiBzdGVwIHRocm91Z2ggaXQKKyAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuCisgIGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPQorICBsdF9tdWx0aV9vc19kaXI9YCRDQyAkQ1BQRkxBR1MgJENGTEFHUyAkTERGTEFHUyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IDI+L2Rldi9udWxsYAorICBmb3IgbHRfc3lzX3BhdGggaW4gJGx0X3NlYXJjaF9wYXRoX3NwZWM7IGRvCisgICAgaWYgdGVzdCAtZCAiJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCisgICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aC8kbHRfbXVsdGlfb3NfZGlyIgorICAgIGVsc2UKKyAgICAgIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCIgJiYgXAorCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgorICAgIGZpCisgIGRvbmUKKyAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjIHwgYXdrICcKK0JFR0lOIHtSUz0iICI7IEZTPSIvfFxuIjt9IHsKKyAgbHRfZm9vPSIiOworICBsdF9jb3VudD0wOworICBmb3IgKGx0X2kgPSBORjsgbHRfaSA+IDA7IGx0X2ktLSkgeworICAgIGlmICgkbHRfaSAhPSAiIiAmJiAkbHRfaSAhPSAiLiIpIHsKKyAgICAgIGlmICgkbHRfaSA9PSAiLi4iKSB7CisgICAgICAgIGx0X2NvdW50Kys7CisgICAgICB9IGVsc2UgeworICAgICAgICBpZiAobHRfY291bnQgPT0gMCkgeworICAgICAgICAgIGx0X2Zvbz0iLyIgJGx0X2kgbHRfZm9vOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIGx0X2NvdW50LS07CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgIH0KKyAgaWYgKGx0X2ZvbyAhPSAiIikgeyBsdF9mcmVxW1tsdF9mb29dXSsrOyB9CisgIGlmIChsdF9mcmVxW1tsdF9mb29dXSA9PSAxKSB7IHByaW50IGx0X2ZvbzsgfQorfSdgCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gJGx0X3NlYXJjaF9wYXRoX3NwZWNgCitlbHNlCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKK2ZpXSkKK2xpYnJhcnlfbmFtZXNfc3BlYz0KK2xpYm5hbWVfc3BlYz0nbGliJG5hbWUnCitzb25hbWVfc3BlYz0KK3NocmV4dF9jbWRzPSIuc28iCitwb3N0aW5zdGFsbF9jbWRzPQorcG9zdHVuaW5zdGFsbF9jbWRzPQorZmluaXNoX2NtZHM9CitmaW5pc2hfZXZhbD0KK3NobGlicGF0aF92YXI9CitzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9dW5rbm93bgordmVyc2lvbl90eXBlPW5vbmUKK2R5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBsZC5zbyIKK3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliIgorbmVlZF9saWJfcHJlZml4PXVua25vd24KK2hhcmRjb2RlX2ludG9fbGlicz1ubworCisjIHdoZW4geW91IHNldCBuZWVkX3ZlcnNpb24gdG8gbm8sIG1ha2Ugc3VyZSBpdCBkb2VzIG5vdCBjYXVzZSAtc2V0X3ZlcnNpb24KKyMgZmxhZ3MgdG8gYmUgbGVmdCB3aXRob3V0IGFyZ3VtZW50cworbmVlZF92ZXJzaW9uPXVua25vd24KKworY2FzZSAkaG9zdF9vcyBpbgorYWl4MyopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKKyAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisKKyAgIyBBSVggMyBoYXMgbm8gdmVyc2lvbmluZyBzdXBwb3J0LCBzbyB3ZSBhcHBlbmQgYSBtYWpvciB2ZXJzaW9uIHRvIHRoZSBuYW1lLgorICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICA7OworCithaXhbWzQtOV1dKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGVsc2UKKyAgICAjIFdpdGggR0NDIHVwIHRvIDIuOTUueCwgY29sbGVjdDIgd291bGQgY3JlYXRlIGFuIGltcG9ydCBmaWxlCisgICAgIyBmb3IgZGVwZW5kZW5jZSBsaWJyYXJpZXMuICBUaGUgaW1wb3J0IGZpbGUgd291bGQgc3RhcnQgd2l0aAorICAgICMgdGhlIGxpbmUgYCMhIC4nLiAgVGhpcyB3b3VsZCBjYXVzZSB0aGUgZ2VuZXJhdGVkIGxpYnJhcnkgdG8KKyAgICAjIGRlcGVuZCBvbiBgLicsIGFsd2F5cyBhbiBpbnZhbGlkIGxpYnJhcnkuICBUaGlzIHdhcyBmaXhlZCBpbgorICAgICMgZGV2ZWxvcG1lbnQgc25hcHNob3RzIG9mIEdDQyBwcmlvciB0byAzLjAuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4NCB8IGFpeDQuW1swMV1dIHwgYWl4NC5bWzAxXV0uKikKKyAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCisJICAgZWNobyAnIHllcyAnCisJICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KKwk6CisgICAgICBlbHNlCisJY2FuX2J1aWxkX3NoYXJlZD1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYworICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW4gbm90IGhhcmRjb2RlIGNvcnJlY3QKKyAgICAjIHNvbmFtZSBpbnRvIGV4ZWN1dGFibGUuIFByb2JhYmx5IHdlIGNhbiBhZGQgdmVyc2lvbmluZyBzdXBwb3J0IHRvCisgICAgIyBjb2xsZWN0Miwgc28gYWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgdXNlZnVsIGluIGZ1dHVyZS4KKyAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICAgICMgSWYgdXNpbmcgcnVuIHRpbWUgbGlua2luZyAob24gQUlYIDQuMiBvciBsYXRlcikgdXNlIGxpYjxuYW1lPi5zbworICAgICAgIyBpbnN0ZWFkIG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNlIGFyZSBub3QKKyAgICAgICMgdHlwaWNhbCBBSVggc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGVsc2UKKyAgICAgICMgV2UgcHJlc2VydmUgLmEgYXMgZXh0ZW5zaW9uIGZvciBzaGFyZWQgbGlicmFyaWVzIHRocm91Z2ggQUlYNC4yCisgICAgICAjIGFuZCBsYXRlciB3aGVuIHdlIGFyZSBub3QgZG9pbmcgcnVuIHRpbWUgbGlua2luZy4KKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uYSAkbGlibmFtZS5hJworICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBmaQorICAgIHNobGlicGF0aF92YXI9TElCUEFUSAorICBmaQorICA7OworCithbWlnYW9zKikKKyAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgcG93ZXJwYykKKyAgICAjIFNpbmNlIEp1bHkgMjAwNyBBbWlnYU9TNCBvZmZpY2lhbGx5IHN1cHBvcnRzIC5zbyBsaWJyYXJpZXMuCisgICAgIyBXaGVuIGNvbXBpbGluZyB0aGUgZXhlY3V0YWJsZSwgYWRkIC11c2UtZHlubGQgLUxzb2JqczogdG8gdGhlIGNvbXBpbGVsaW5lLgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIDs7CisgIG02OGspCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKKyAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgorICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gJEVDSE8gIlgkbGliIiB8ICRYc2VkIC1lICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCisgICAgOzsKKyAgZXNhYworICA7OworCitiZW9zKikKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGxkLnNvIgorICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICA7OworCitic2RpW1s0NV1dKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgJGxpYmRpcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvc2hsaWIgL3Vzci9saWIgL3Vzci9YMTEvbGliIC91c3IvY29udHJpYi9saWIgL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9zaGxpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgIyB0aGUgZGVmYXVsdCBsZC5zby5jb25mIGFsc28gY29udGFpbnMgL3Vzci9jb250cmliL2xpYiBhbmQKKyAgIyAvdXNyL1gxMVI2L2xpYiAoL3Vzci9YMTEgaXMgYSBsaW5rIHRvIC91c3IvWDExUjYpLCBidXQgbGV0IHVzIGFsbG93CisgICMgbGlidG9vbCB0byBoYXJkLWNvZGUgdGhlc2UgaW50byBwcm9ncmFtcworICA7OworCitjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgIHZlcnNpb25fdHlwZT13aW5kb3dzCisgIHNocmV4dF9jbWRzPSIuZGxsIgorICBuZWVkX3ZlcnNpb249bm8KKyAgbmVlZF9saWJfcHJlZml4PW5vCisKKyAgY2FzZSAkR0NDLCRob3N0X29zIGluCisgIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CisgICAgICBjaG1vZCBhK3ggXCRkbGRpci8kZGxuYW1lfgorICAgICAgaWYgdGVzdCAtbiAnXCcnJHN0cmlwbWUnXCcnICYmIHRlc3QgLW4gJ1wnJyRzdHJpcGxpYidcJyc7IHRoZW4KKyAgICAgICAgZXZhbCAnXCcnJHN0cmlwbGliIFwkZGxkaXIvJGRsbmFtZSdcJycgfHwgZXhpdCBcJD87CisgICAgICBmaScKKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKyAgICAgICAkUk0gXCRkbHBhdGgnCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGN5Z3dpbiopCisgICAgICAjIEN5Z3dpbiBETExzIHVzZSAnY3lnJyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKKyAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvY3lnLydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiAvbGliL3czMmFwaSAvbGliIC91c3IvbG9jYWwvbGliIgorICAgICAgOzsKKyAgICBtaW5ndyogfCBjZWdjYyopCisgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAorICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRDQyAtcHJpbnQtc2VhcmNoLWRpcnMgfCAkR1JFUCAiXmxpYnJhcmllczoiIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAicyw9LywvLGciYAorICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSCBwcmludGVkIGJ5CisgICAgICAgICMgbWluZ3cgZ2NjLCBidXQgd2UgYXJlIHJ1bm5pbmcgb24gQ3lnd2luLiBHY2MgcHJpbnRzIGl0cyBzZWFyY2gKKyAgICAgICAgIyBwYXRoIHdpdGggOyBzZXBhcmF0b3JzLCBhbmQgd2l0aCBkcml2ZSBsZXR0ZXJzLiBXZSBjYW4gaGFuZGxlIHRoZQorICAgICAgICAjIGRyaXZlIGxldHRlcnMgKGN5Z3dpbiBmaWxldXRpbHMgdW5kZXJzdGFuZHMgdGhlbSksIHNvIGxlYXZlIHRoZW0sCisgICAgICAgICMgZXNwZWNpYWxseSBhcyB3ZSBtaWdodCBwYXNzIGZpbGVzIGZvdW5kIHRoZXJlIHRvIGEgbWluZ3cgb2JqZHVtcCwKKyAgICAgICAgIyB3aGljaCB3b3VsZG4ndCB1bmRlcnN0YW5kIGEgY3lnd2luaWZpZWQgcGF0aC4gQWhoLgorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorICAgICAgZWxzZQorICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorICAgICAgZmkKKyAgICAgIDs7CisgICAgcHczMiopCisgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKworICAqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgOzsKKyAgZXNhYworICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgc2hsaWJwYXRoX3Zhcj1QQVRICisgIDs7CisKK2RhcndpbiogfCByaGFwc29keSopCisgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkeWxkIgorICB2ZXJzaW9uX3R5cGU9ZGFyd2luCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQgJHtsaWJuYW1lfSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke21ham9yfSRzaGFyZWRfZXh0JworICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHNobGlicGF0aF92YXI9RFlMRF9MSUJSQVJZX1BBVEgKKyAgc2hyZXh0X2NtZHM9J2B0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIC5zbyB8fCBlY2hvIC5keWxpYmAnCittNF9pZihbJDFdLCBbXSxbCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xvY2FsL2xpYiJdKQorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9sb2NhbC9saWIgL2xpYiAvdXNyL2xpYicKKyAgOzsKKworZGd1eCopCisgIHZlcnNpb25fdHlwZT1saW51eAorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgOzsKKworZnJlZWJzZDEqKQorICBkeW5hbWljX2xpbmtlcj1ubworICA7OworCitmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICMgRHJhZ29uRmx5IGRvZXMgbm90IGhhdmUgYW91dC4gIFdoZW4vaWYgdGhleSBpbXBsZW1lbnQgYSBuZXcKKyAgIyB2ZXJzaW9uaW5nIG1lY2hhbmlzbSwgYWRqdXN0IHRoaXMuCisgIGlmIHRlc3QgLXggL3Vzci9iaW4vb2JqZm9ybWF0OyB0aGVuCisgICAgb2JqZm9ybWF0PWAvdXNyL2Jpbi9vYmpmb3JtYXRgCisgIGVsc2UKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgZnJlZWJzZFtbMTIzXV0qKSBvYmpmb3JtYXQ9YW91dCA7OworICAgICopIG9iamZvcm1hdD1lbGYgOzsKKyAgICBlc2FjCisgIGZpCisgIHZlcnNpb25fdHlwZT1mcmVlYnNkLSRvYmpmb3JtYXQKKyAgY2FzZSAkdmVyc2lvbl90eXBlIGluCisgICAgZnJlZWJzZC1lbGYqKQorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgICBuZWVkX3ZlcnNpb249bm8KKyAgICAgIG5lZWRfbGliX3ByZWZpeD1ubworICAgICAgOzsKKyAgICBmcmVlYnNkLSopCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICAgIG5lZWRfdmVyc2lvbj15ZXMKKyAgICAgIDs7CisgIGVzYWMKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgY2FzZSAkaG9zdF9vcyBpbgorICBmcmVlYnNkMiopCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgIDs7CisgIGZyZWVic2QzLltbMDFdXSogfCBmcmVlYnNkZWxmMy5bWzAxXV0qKQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgOzsKKyAgZnJlZWJzZDMuW1syLTldXSogfCBmcmVlYnNkZWxmMy5bWzItOV1dKiB8IFwKKyAgZnJlZWJzZDQuW1swLTVdXSB8IGZyZWVic2RlbGY0LltbMC01XV0gfCBmcmVlYnNkNC4xLjEgfCBmcmVlYnNkZWxmNC4xLjEpCisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgIDs7CisgICopICMgZnJvbSA0LjYgb24sIGFuZCBEcmFnb25GbHkKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgIDs7CisgIGVzYWMKKyAgOzsKKworZ251KikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK2hwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQorICAjIEdpdmUgYSBzb25hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgbWFqb3IgdmVyc2lvbiBzbyB0aGF0IGRsZC5zbCByZWZ1c2VzIHRvCisgICMgbGluayBhZ2FpbnN0IG90aGVyIHZlcnNpb25zLgorICB2ZXJzaW9uX3R5cGU9c3Vub3MKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBjYXNlICRob3N0X2NwdSBpbgorICBpYTY0KikKKyAgICBzaHJleHRfY21kcz0nLnNvJworICAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNvIgorICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyAjIFVubGVzcyArbm9lbnZ2YXIgaXMgc3BlY2lmaWVkLgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgaWYgdGVzdCAiWCRIUFVYX0lBNjRfTU9ERSIgPSBYMzI7IHRoZW4KKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYiIKKyAgICBlbHNlCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXg2NCAvdXNyL2xvY2FsL2xpYi9ocHV4NjQiCisgICAgZmkKKyAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCisgICAgOzsKKyAgaHBwYSo2NCopCisgICAgc2hyZXh0X2NtZHM9Jy5zbCcKKyAgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKKyAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSCAjIEhvdyBzaG91bGQgd2UgaGFuZGxlIFNITElCX1BBVEgKKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL3BhMjBfNjQgL3Vzci9jY3MvbGliL3BhMjBfNjQiCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYworICAgIDs7CisgICopCisgICAgc2hyZXh0X2NtZHM9Jy5zbCcKKyAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNsIgorICAgIHNobGlicGF0aF92YXI9U0hMSUJfUEFUSAorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubyAjICtzIGlzIHJlcXVpcmVkIHRvIGVuYWJsZSBTSExJQl9QQVRICisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICA7OworICBlc2FjCisgICMgSFAtVVggcnVucyAqcmVhbGx5KiBzbG93bHkgdW5sZXNzIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG1vZGUgNTU1LgorICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA1NTUgJGxpYicKKyAgOzsKKworaW50ZXJpeFtbMy05XV0qKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBkeW5hbWljX2xpbmtlcj0nSW50ZXJpeCAzLnggbGQuc28uMSAoUEUsIGxpa2UgRUxGKScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgY2FzZSAkaG9zdF9vcyBpbgorICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKKyAgICAqKQorCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkJdmVyc2lvbl90eXBlPWxpbnV4CisJZWxzZQorCQl2ZXJzaW9uX3R5cGU9aXJpeAorCWZpIDs7CisgIGVzYWMKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgaXJpeDUqIHwgbm9uc3RvcHV4KikKKyAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9CisgICAgOzsKKyAgKikKKyAgICBjYXNlICRMRCBpbiAjIGxpYnRvb2wubTQgd2lsbCBhZGQgb25lIG9mIHRoZXNlIHN3aXRjaGVzIHRvIExECisgICAgKi0zMnwqIi0zMiAifCotbWVsZjMyYnNtaXB8KiItbWVsZjMyYnNtaXAgIikKKyAgICAgIGxpYnN1ZmY9IHNobGlic3VmZj0gbGlibWFnaWM9MzItYml0OzsKKyAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKQorICAgICAgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIGxpYm1hZ2ljPU4zMjs7CisgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpCisgICAgICBsaWJzdWZmPTY0IHNobGlic3VmZj02NCBsaWJtYWdpYz02NC1iaXQ7OworICAgICopIGxpYnN1ZmY9IHNobGlic3VmZj0gbGlibWFnaWM9bmV2ZXItbWF0Y2g7OworICAgIGVzYWMKKyAgICA7OworICBlc2FjCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWSR7c2hsaWJzdWZmfV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSAvdXNyL2xvY2FsL2xpYiR7bGlic3VmZn0iCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0iCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgOzsKKworIyBObyBzaGFyZWQgbGliIHN1cHBvcnQgZm9yIExpbnV4IG9sZGxkLCBhb3V0LCBvciBjb2ZmLgorbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKKyAgZHluYW1pY19saW5rZXI9bm8KKyAgOzsKKworIyBUaGlzIG11c3QgYmUgTGludXggRUxGLgorbGludXgqIHwgaypic2QqLWdudSkKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1uICRsaWJkaXInCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAjIFNvbWUgYmludXRpbHMgbGQgYXJlIHBhdGNoZWQgdG8gc2V0IERUX1JVTlBBVEgKKyAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgIHNhdmVfbGliZGlyPSRsaWJkaXIKKyAgZXZhbCAibGliZGlyPS9mb287IHdsPVwiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpXCI7IFwKKyAgICAgICBMREZMQUdTPVwiXCRMREZMQUdTICRfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKVwiIgorICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtdLFtdKV0sCisgICAgW0FTX0lGKFsgKCRPQkpEVU1QIC1wIGNvbmZ0ZXN0JGFjX2V4ZWV4dCkgMj4vZGV2L251bGwgfCBncmVwICJSVU5QQVRILiokbGliZGlyIiA+L2Rldi9udWxsXSwKKyAgICAgICBbc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllc10pXSkKKyAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgIGxpYmRpcj0kc2F2ZV9saWJkaXIKKworICAjIFRoaXMgaW1wbGllcyBubyBmYXN0X2luc3RhbGwsIHdoaWNoIGlzIHVuYWNjZXB0YWJsZS4KKyAgIyBTb21lIHJld29yayB3aWxsIGJlIG5lZWRlZCB0byBhbGxvdyBmb3IgZmFzdF9pbnN0YWxsCisgICMgYmVmb3JlIHRoaXMgY2FuIGJlIGVuYWJsZWQuCisgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKworICAjIEFwcGVuZCBsZC5zby5jb25mIGNvbnRlbnRzIHRvIHRoZSBzZWFyY2ggcGF0aAorICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7L14kL2QnIHwgdHIgJ1xuJyAnICdgCisgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii9saWIgL3Vzci9saWIgJGx0X2xkX2V4dHJhIgorICBmaQorCisgICMgV2UgdXNlZCB0byB0ZXN0IGZvciAvbGliL2xkLnNvLjEgYW5kIGRpc2FibGUgc2hhcmVkIGxpYnJhcmllcyBvbgorICAjIHBvd2VycGMsIGJlY2F1c2UgTWtMaW51eCBvbmx5IHN1cHBvcnRlZCBzaGFyZWQgbGlicmFyaWVzIHdpdGggdGhlCisgICMgR05VIGR5bmFtaWMgbGlua2VyLiAgU2luY2UgdGhpcyB3YXMgYnJva2VuIHdpdGggY3Jvc3MgY29tcGlsZXJzLAorICAjIG1vc3QgcG93ZXJwYy1saW51eCBib3hlcyBzdXBwb3J0IGR5bmFtaWMgbGlua2luZyB0aGVzZSBkYXlzIGFuZAorICAjIHBlb3BsZSBjYW4gYWx3YXlzIC0tZGlzYWJsZS1zaGFyZWQsIHRoZSB0ZXN0IHdhcyByZW1vdmVkLCBhbmQgd2UKKyAgIyBhc3N1bWUgdGhlIEdOVS9MaW51eCBkeW5hbWljIGxpbmtlciBpcyBpbiB1c2UuCisgIGR5bmFtaWNfbGlua2VyPSdHTlUvTGludXggbGQuc28nCisgIDs7CisKK25ldGJzZCopCisgIHZlcnNpb25fdHlwZT1zdW5vcworICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbSAkbGliZGlyJworICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgKGEub3V0KSBsZC5zbycKKyAgZWxzZQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCisgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBkeW5hbWljX2xpbmtlcj0nTmV0QlNEIGxkLmVsZl9zbycKKyAgZmkKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK25ld3NvczYpCisgIHZlcnNpb25fdHlwZT1saW51eAorICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICA7OworCisqbnRvKiB8ICpxbngqKQorICB2ZXJzaW9uX3R5cGU9cW54CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIGR5bmFtaWNfbGlua2VyPSdsZHFueC5zbycKKyAgOzsKKworb3BlbmJzZCopCisgIHZlcnNpb25fdHlwZT1zdW5vcworICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIiCisgIG5lZWRfbGliX3ByZWZpeD1ubworICAjIFNvbWUgb2xkZXIgdmVyc2lvbnMgb2YgT3BlbkJTRCAoMy4zIGF0IGxlYXN0KSAqZG8qIG5lZWQgdmVyc2lvbmVkIGxpYnMuCisgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICBvcGVuYnNkMy4zIHwgb3BlbmJzZDMuMy4qKQluZWVkX3ZlcnNpb249eWVzIDs7CisgICAgKikJCQkJbmVlZF92ZXJzaW9uPW5vICA7OworICBlc2FjCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBvcGVuYnNkMi5bWzg5XV0gfCBvcGVuYnNkMi5bWzg5XV0uKikKKwlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KKwk7OworICAgICAgKikKKwlzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisJOzsKKyAgICAgIGVzYWMKKyAgZWxzZQorICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgZmkKKyAgOzsKKworb3MyKikKKyAgbGlibmFtZV9zcGVjPSckbmFtZScKKyAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICBkeW5hbWljX2xpbmtlcj0nT1MvMiBsZC5leGUnCisgIHNobGlicGF0aF92YXI9TElCUEFUSAorICA7OworCitvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgIHZlcnNpb25fdHlwZT1vc2YKKyAgbmVlZF9saWJfcHJlZml4PW5vCisgIG5lZWRfdmVyc2lvbj1ubworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL3NobGliIC91c3IvY2NzL2xpYiAvdXNyL2xpYi9jbXBscnMvY2MgL3Vzci9saWIgL3Vzci9sb2NhbC9saWIgL3Zhci9zaGxpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCisgIDs7CisKK3Jkb3MqKQorICBkeW5hbWljX2xpbmtlcj1ubworICA7OworCitzb2xhcmlzKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAjIGxkZCBjb21wbGFpbnMgdW5sZXNzIGxpYnJhcmllcyBhcmUgZXhlY3V0YWJsZQorICBwb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCAreCAkbGliJworICA7OworCitzdW5vczQqKQorICB2ZXJzaW9uX3R5cGU9c3Vub3MKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovdXNyL2V0YyIgbGRjb25maWcgJGxpYmRpcicKKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgbmVlZF9saWJfcHJlZml4PW5vCisgIGZpCisgIG5lZWRfdmVyc2lvbj15ZXMKKyAgOzsKKworc3lzdjQgfCBzeXN2NC4zKikKKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBjYXNlICRob3N0X3ZlbmRvciBpbgorICAgIHNuaSkKKyAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAorICAgICAgOzsKKyAgICBzaWVtZW5zKQorICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICA7OworICAgIG1vdG9yb2xhKQorICAgICAgbmVlZF9saWJfcHJlZml4PW5vCisgICAgICBuZWVkX3ZlcnNpb249bm8KKyAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvbGliIC91c3IvbGliIC91c3IvY2NzL2xpYicKKyAgICAgIDs7CisgIGVzYWMKKyAgOzsKKworc3lzdjQqTVAqKQorICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCisgICAgdmVyc2lvbl90eXBlPWxpbnV4CisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvcicKKyAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBmaQorICA7OworCitzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgdmVyc2lvbl90eXBlPWZyZWVic2QtZWxmCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvdXNyL2dudS9saWIgL3Vzci9jY3MvbGliIC91c3IvbGliIC9saWInCisgIGVsc2UKKyAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvY2NzL2xpYiAvdXNyL2xpYicKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBzY28zLjJ2NSopCisgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvbGliIgorCTs7CisgICAgZXNhYworICBmaQorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9saWInCisgIDs7CisKK3RwZiopCisgICMgVFBGIGlzIGEgY3Jvc3MtdGFyZ2V0IG9ubHkuICBQcmVmZXJyZWQgY3Jvc3MtaG9zdCA9IEdOVS9MaW51eC4KKyAgdmVyc2lvbl90eXBlPWxpbnV4CisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubworICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgIDs7CisKK3V0czQqKQorICB2ZXJzaW9uX3R5cGU9bGludXgKKyAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICisgIDs7CisKKyopCisgIGR5bmFtaWNfbGlua2VyPW5vCisgIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKFskZHluYW1pY19saW5rZXJdKQordGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KKwordmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9IlBBVEggJHNobGlicGF0aF92YXIgJHJ1bnBhdGhfdmFyIgoraWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9IiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayBHQ0NfRVhFQ19QUkVGSVggQ09NUElMRVJfUEFUSCBMSUJSQVJZX1BBVEgiCitmaQorCitpZiB0ZXN0ICIke2x0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgorICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRsdF9jdl9zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCitmaQoraWYgdGVzdCAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIgorZmkKKworX0xUX0RFQ0woW10sIFt2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGlua10sIFsxXSwKKyAgICBbVmFyaWFibGVzIHdob3NlIHZhbHVlcyBzaG91bGQgYmUgc2F2ZWQgaW4gbGlidG9vbCB3cmFwcGVyIHNjcmlwdHMgYW5kCisgICAgcmVzdG9yZWQgYXQgbGluayB0aW1lXSkKK19MVF9ERUNMKFtdLCBbbmVlZF9saWJfcHJlZml4XSwgWzBdLAorICAgIFtEbyB3ZSBuZWVkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXM/XSkKK19MVF9ERUNMKFtdLCBbbmVlZF92ZXJzaW9uXSwgWzBdLCBbRG8gd2UgbmVlZCBhIHZlcnNpb24gZm9yIGxpYnJhcmllcz9dKQorX0xUX0RFQ0woW10sIFt2ZXJzaW9uX3R5cGVdLCBbMF0sIFtMaWJyYXJ5IHZlcnNpb25pbmcgdHlwZV0pCitfTFRfREVDTChbXSwgW3J1bnBhdGhfdmFyXSwgWzBdLCAgW1NoYXJlZCBsaWJyYXJ5IHJ1bnRpbWUgcGF0aCB2YXJpYWJsZV0pCitfTFRfREVDTChbXSwgW3NobGlicGF0aF92YXJdLCBbMF0sW1NoYXJlZCBsaWJyYXJ5IHBhdGggdmFyaWFibGVdKQorX0xUX0RFQ0woW10sIFtzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGhdLCBbMF0sCisgICAgW0lzIHNobGlicGF0aCBzZWFyY2hlZCBiZWZvcmUgdGhlIGhhcmQtY29kZWQgbGlicmFyeSBzZWFyY2ggcGF0aD9dKQorX0xUX0RFQ0woW10sIFtsaWJuYW1lX3NwZWNdLCBbMV0sIFtGb3JtYXQgb2YgbGlicmFyeSBuYW1lIHByZWZpeF0pCitfTFRfREVDTChbXSwgW2xpYnJhcnlfbmFtZXNfc3BlY10sIFsxXSwKKyAgICBbW0xpc3Qgb2YgYXJjaGl2ZSBuYW1lcy4gIEZpcnN0IG5hbWUgaXMgdGhlIHJlYWwgb25lLCB0aGUgcmVzdCBhcmUgbGlua3MuCisgICAgVGhlIGxhc3QgbmFtZSBpcyB0aGUgb25lIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aXRoIC1sTkFNRV1dKQorX0xUX0RFQ0woW10sIFtzb25hbWVfc3BlY10sIFsxXSwKKyAgICBbW1RoZSBjb2RlZCBuYW1lIG9mIHRoZSBsaWJyYXJ5LCBpZiBkaWZmZXJlbnQgZnJvbSB0aGUgcmVhbCBuYW1lXV0pCitfTFRfREVDTChbXSwgW3Bvc3RpbnN0YWxsX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmQgdG8gdXNlIGFmdGVyIGluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9ERUNMKFtdLCBbcG9zdHVuaW5zdGFsbF9jbWRzXSwgWzJdLAorICAgIFtDb21tYW5kIHRvIHVzZSBhZnRlciB1bmluc3RhbGxhdGlvbiBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9ERUNMKFtdLCBbZmluaXNoX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIHVzZWQgdG8gZmluaXNoIGEgbGlidG9vbCBsaWJyYXJ5IGluc3RhbGxhdGlvbiBpbiBhIGRpcmVjdG9yeV0pCitfTFRfREVDTChbXSwgW2ZpbmlzaF9ldmFsXSwgWzFdLAorICAgIFtbQXMgImZpbmlzaF9jbWRzIiwgZXhjZXB0IGEgc2luZ2xlIHNjcmlwdCBmcmFnbWVudCB0byBiZSBldmFsZWQgYnV0CisgICAgbm90IHNob3duXV0pCitfTFRfREVDTChbXSwgW2hhcmRjb2RlX2ludG9fbGlic10sIFswXSwKKyAgICBbV2hldGhlciB3ZSBzaG91bGQgaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIGxpYnJhcmllc10pCitfTFRfREVDTChbXSwgW3N5c19saWJfc2VhcmNoX3BhdGhfc3BlY10sIFsyXSwKKyAgICBbQ29tcGlsZS10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzXSkKK19MVF9ERUNMKFtdLCBbc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNdLCBbMl0sCisgICAgW1J1bi10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzXSkKK10pIyBfTFRfU1lTX0RZTkFNSUNfTElOS0VSCisKKworIyBfTFRfUEFUSF9UT09MX1BSRUZJWChUT09MKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGNhbiByZWNvZ25pemUgc2hhcmVkIGxpYnJhcnkKK0FDX0RFRlVOKFtfTFRfUEFUSF9UT09MX1BSRUZJWF0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgJDFdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3BhdGhfTUFHSUNfQ01ELAorW2Nhc2UgJE1BR0lDX0NNRCBpbgorW1tcXC8qXSB8ICA/OltcXC9dKl0pCisgIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyopCisgIGx0X3NhdmVfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIgorICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2RubCAkYWNfZHVtbXkgZm9yY2VzIHNwbGl0dGluZyBvbiBjb25zdGFudCB1c2VyLXN1cHBsaWVkIHBhdGhzLgorZG5sIFBPU0lYLjIgd29yZCBzcGxpdHRpbmcgaXMgZG9uZSBvbmx5IG9uIHRoZSBvdXRwdXQgb2Ygd29yZCBleHBhbnNpb25zLAorZG5sIG5vdCBldmVyeSB3b3JkLiAgVGhpcyBjbG9zZXMgYSBsb25nc3RhbmRpbmcgc2ggc2VjdXJpdHkgaG9sZS4KKyAgYWNfZHVtbXk9Im00X2lmKFskMl0sICwgJFBBVEgsIFskMl0pIgorICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KKyAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgIGlmIHRlc3QgLWYgJGFjX2Rpci8kMTsgdGhlbgorICAgICAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9IiRhY19kaXIvJDEiCisgICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190ZXN0X2ZpbGUiOyB0aGVuCisJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KKwkiZmlsZV9tYWdpYyAiKikKKwkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiZmlsZV9tYWdpYyBcKC4qXCkiYAorCSAgTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiCisJICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcJGZpbGVfbWFnaWNfdGVzdF9maWxlIDI+IC9kZXYvbnVsbCB8CisJICAgICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCisJICAgIDoKKwkgIGVsc2UKKwkgICAgY2F0IDw8X0xUX0VPRiAxPiYyCisKKyoqKiBXYXJuaW5nOiB0aGUgY29tbWFuZCBsaWJ0b29sIHVzZXMgdG8gZGV0ZWN0IHNoYXJlZCBsaWJyYXJpZXMsCisqKiogJGZpbGVfbWFnaWNfY21kLCBwcm9kdWNlcyBvdXRwdXQgdGhhdCBsaWJ0b29sIGNhbm5vdCByZWNvZ25pemUuCisqKiogVGhlIHJlc3VsdCBpcyB0aGF0IGxpYnRvb2wgbWF5IGZhaWwgdG8gcmVjb2duaXplIHNoYXJlZCBsaWJyYXJpZXMKKyoqKiBhcyBzdWNoLiAgVGhpcyB3aWxsIGFmZmVjdCB0aGUgY3JlYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMgdGhhdAorKioqIGRlcGVuZCBvbiBzaGFyZWQgbGlicmFyaWVzLCBidXQgcHJvZ3JhbXMgbGlua2VkIHdpdGggc3VjaCBsaWJ0b29sCisqKiogbGlicmFyaWVzIHdpbGwgd29yayByZWdhcmRsZXNzIG9mIHRoaXMgcHJvYmxlbS4gIE5ldmVydGhlbGVzcywgeW91CisqKiogbWF5IHdhbnQgdG8gcmVwb3J0IHRoZSBwcm9ibGVtIHRvIHlvdXIgc3lzdGVtIG1hbmFnZXIgYW5kL29yIHRvCisqKiogYnVnLWxpYnRvb2xAZ251Lm9yZworCitfTFRfRU9GCisJICBmaSA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICBicmVhaworICAgIGZpCisgIGRvbmUKKyAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgIE1BR0lDX0NNRD0iJGx0X3NhdmVfTUFHSUNfQ01EIgorICA7OworZXNhY10pCitNQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK2lmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoJE1BR0lDX0NNRCkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChubykKK2ZpCitfTFRfREVDTChbXSwgW01BR0lDX0NNRF0sIFswXSwKKwkgW1VzZWQgdG8gZXhhbWluZSBsaWJyYXJpZXMgd2hlbiBmaWxlX21hZ2ljX2NtZCBiZWdpbnMgd2l0aCAiZmlsZSJdKWRubAorXSkjIF9MVF9QQVRIX1RPT0xfUFJFRklYCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfUEFUSF9UT09MX1BSRUZJWF0sIFtfTFRfUEFUSF9UT09MX1BSRUZJWF0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX1BBVEhfVE9PTF9QUkVGSVhdLCBbXSkKKworCisjIF9MVF9QQVRIX01BR0lDCisjIC0tLS0tLS0tLS0tLS0tCisjIGZpbmQgYSBmaWxlIHByb2dyYW0gd2hpY2ggY2FuIHJlY29nbml6ZSBhIHNoYXJlZCBsaWJyYXJ5CittNF9kZWZ1bihbX0xUX1BBVEhfTUFHSUNdLAorW19MVF9QQVRIX1RPT0xfUFJFRklYKCR7YWNfdG9vbF9wcmVmaXh9ZmlsZSwgL3Vzci9iaW4kUEFUSF9TRVBBUkFUT1IkUEFUSCkKK2lmIHRlc3QgLXogIiRsdF9jdl9wYXRoX01BR0lDX0NNRCI7IHRoZW4KKyAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIF9MVF9QQVRIX1RPT0xfUFJFRklYKGZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCisgIGVsc2UKKyAgICBNQUdJQ19DTUQ9OgorICBmaQorZmkKK10pIyBfTFRfUEFUSF9NQUdJQworCisKKyMgTFRfUEFUSF9MRAorIyAtLS0tLS0tLS0tCisjIGZpbmQgdGhlIHBhdGhuYW1lIHRvIHRoZSBHTlUgb3Igbm9uLUdOVSBsaW5rZXIKK0FDX0RFRlVOKFtMVF9QQVRIX0xEXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorCitBQ19BUkdfV0lUSChbZ251LWxkXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLAorCVthc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgQDw6QGRlZmF1bHQ9bm9AOj5AXSldLAorICAgIFt0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXNdLAorICAgIFt3aXRoX2dudV9sZD1ub10pZG5sCisKK2FjX3Byb2c9bGQKK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5ICRDQ10pCisgIGNhc2UgJGhvc3QgaW4KKyAgKi0qLW1pbmd3KikKKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CisgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OworICAqKQorICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKKyAgZXNhYworICBjYXNlICRhY19wcm9nIGluCisgICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCisgICAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQorICAgICAgcmVfZGlyZWx0PScvW1teL11dW1teL11dKi9cLlwuLycKKyAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRobmFtZSBvZiBsZAorICAgICAgYWNfcHJvZz1gJEVDSE8gIiRhY19wcm9nInwgJFNFRCAncyVcXFxcJS8lZydgCisgICAgICB3aGlsZSAkRUNITyAiJGFjX3Byb2ciIHwgJEdSRVAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCisJYWNfcHJvZz1gJEVDSE8gJGFjX3Byb2d8ICRTRUQgInMlJHJlX2RpcmVsdCUvJSJgCisgICAgICBkb25lCisgICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJvZyIKKyAgICAgIDs7CisgICIiKQorICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgorICAgIGFjX3Byb2c9bGQKKyAgICA7OworICAqKQorICAgICMgSWYgaXQgaXMgcmVsYXRpdmUsIHRoZW4gc2VhcmNoIGZvciB0aGUgZmlyc3QgbGQgaW4gUEFUSC4KKyAgICB3aXRoX2dudV9sZD11bmtub3duCisgICAgOzsKKyAgZXNhYworZWxpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCitlbHNlCisgIEFDX01TR19DSEVDS0lORyhbZm9yIG5vbi1HTlUgbGRdKQorZmkKK0FDX0NBQ0hFX1ZBTChsdF9jdl9wYXRoX0xELAorW2lmIHRlc3QgLXogIiRMRCI7IHRoZW4KKyAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCisgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KKyAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KKyAgICAgIGx0X2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUgcHJvZ3JhbSBpcyBHTlUgbGQuICBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24sCisgICAgICAjIGJ1dCBhcHBhcmVudGx5IHNvbWUgdmFyaWFudHMgb2YgR05VIGxkIG9ubHkgYWNjZXB0IC12LgorICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCisgICAgICBjYXNlIGAiJGx0X2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKyAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQorCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJlYWsKKwk7OworICAgICAgKikKKwl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCTs7CisgICAgICBlc2FjCisgICAgZmkKKyAgZG9uZQorICBJRlM9IiRsdF9zYXZlX2lmcyIKK2Vsc2UKKyAgbHRfY3ZfcGF0aF9MRD0iJExEIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KK2ZpXSkKK0xEPSIkbHRfY3ZfcGF0aF9MRCIKK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVCgkTEQpCitlbHNlCisgIEFDX01TR19SRVNVTFQobm8pCitmaQordGVzdCAteiAiJExEIiAmJiBBQ19NU0dfRVJST1IoW25vIGFjY2VwdGFibGUgbGQgZm91bmQgaW4gXCRQQVRIXSkKK19MVF9QQVRIX0xEX0dOVQorQUNfU1VCU1QoW0xEXSkKKworX0xUX1RBR0RFQ0woW10sIFtMRF0sIFsxXSwgW1RoZSBsaW5rZXIgdXNlZCB0byBidWlsZCBsaWJyYXJpZXNdKQorXSkjIExUX1BBVEhfTEQKKworIyBPbGQgbmFtZXM6CitBVV9BTElBUyhbQU1fUFJPR19MRF0sIFtMVF9QQVRIX0xEXSkKK0FVX0FMSUFTKFtBQ19QUk9HX0xEXSwgW0xUX1BBVEhfTERdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBTV9QUk9HX0xEXSwgW10pCitkbmwgQUNfREVGVU4oW0FDX1BST0dfTERdLCBbXSkKKworCisjIF9MVF9QQVRIX0xEX0dOVQorIy0gLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfUEFUSF9MRF9HTlVdLAorW0FDX0NBQ0hFX0NIRUNLKFtpZiB0aGUgbGlua2VyICgkTEQpIGlzIEdOVSBsZF0sIGx0X2N2X3Byb2dfZ251X2xkLAorWyMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkcyBvbmx5IGFjY2VwdCAtdi4KK2Nhc2UgYCRMRCAtdiAyPiYxIDwvZGV2L251bGxgIGluCisqR05VKiB8ICond2l0aCBCRkQnKikKKyAgbHRfY3ZfcHJvZ19nbnVfbGQ9eWVzCisgIDs7CisqKQorICBsdF9jdl9wcm9nX2dudV9sZD1ubworICA7OworZXNhY10pCit3aXRoX2dudV9sZD0kbHRfY3ZfcHJvZ19nbnVfbGQKK10pIyBfTFRfUEFUSF9MRF9HTlUKKworCisjIF9MVF9DTURfUkVMT0FECisjIC0tLS0tLS0tLS0tLS0tCisjIGZpbmQgcmVsb2FkIGZsYWcgZm9yIGxpbmtlcgorIyAgIC0tIFBPUlRNRSBTb21lIGxpbmtlcnMgbWF5IG5lZWQgYSBkaWZmZXJlbnQgcmVsb2FkIGZsYWcuCittNF9kZWZ1bihbX0xUX0NNRF9SRUxPQURdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzXSwKKyAgbHRfY3ZfbGRfcmVsb2FkX2ZsYWcsCisgIFtsdF9jdl9sZF9yZWxvYWRfZmxhZz0nLXInXSkKK3JlbG9hZF9mbGFnPSRsdF9jdl9sZF9yZWxvYWRfZmxhZworY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyIiIHwgIiAiKikgOzsKKyopIHJlbG9hZF9mbGFnPSIgJHJlbG9hZF9mbGFnIiA7OworZXNhYworcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworY2FzZSAkaG9zdF9vcyBpbgorICBkYXJ3aW4qKQorICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgICAgZWxzZQorICAgICAgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworICAgIGZpCisgICAgOzsKK2VzYWMKK19MVF9ERUNMKFtdLCBbcmVsb2FkX2ZsYWddLCBbMV0sIFtIb3cgdG8gY3JlYXRlIHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzXSlkbmwKK19MVF9ERUNMKFtdLCBbcmVsb2FkX2NtZHNdLCBbMl0pZG5sCitdKSMgX0xUX0NNRF9SRUxPQUQKKworCisjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBob3cgdG8gY2hlY2sgZm9yIGxpYnJhcnkgZGVwZW5kZW5jaWVzCisjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCittNF9kZWZ1bihbX0xUX0NIRUNLX01BR0lDX01FVEhPRF0sCitbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pCitBQ19DQUNIRV9DSEVDSyhbaG93IHRvIHJlY29nbml6ZSBkZXBlbmRlbnQgbGlicmFyaWVzXSwKK2x0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kLAorW2x0X2N2X2ZpbGVfbWFnaWNfY21kPSckTUFHSUNfQ01EJworbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9CitsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0ndW5rbm93bicKKyMgTmVlZCB0byBzZXQgdGhlIHByZWNlZGluZyB2YXJpYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAorIyBpbnRlcmxpYnJhcnkgZGVwZW5kZW5jaWVzLgorIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCisjIGB1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KKyMgJ3Bhc3NfYWxsJyAtLSBhbGwgZGVwZW5kZW5jaWVzIHBhc3NlZCB3aXRoIG5vIGNoZWNrcy4KKyMgJ3Rlc3RfY29tcGlsZScgLS0gY2hlY2sgYnkgbWFraW5nIHRlc3QgcHJvZ3JhbS4KKyMgJ2ZpbGVfbWFnaWMgW1tyZWdleF1dJyAtLSBjaGVjayBieSBsb29raW5nIGZvciBmaWxlcyBpbiBsaWJyYXJ5IHBhdGgKKyMgd2hpY2ggcmVzcG9uZHMgdG8gdGhlICRmaWxlX21hZ2ljX2NtZCB3aXRoIGEgZ2l2ZW4gZXh0ZW5kZWQgcmVnZXguCisjIElmIHlvdSBoYXZlIGBmaWxlJyBvciBlcXVpdmFsZW50IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3UncmUgbm90IHN1cmUKKyMgd2hldGhlciBgcGFzc19hbGwnIHdpbGwgKmFsd2F5cyogd29yaywgeW91IHByb2JhYmx5IHdhbnQgdGhpcyBvbmUuCisKK2Nhc2UgJGhvc3Rfb3MgaW4KK2FpeFtbNC05XV0qKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitiZW9zKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworYnNkaVtbNDVdXSopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTUxdXVNCIChzaGFyZWQgb2JqZWN0fGR5bmFtaWMgbGliKScKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy91c3IvYmluL2ZpbGUgLUwnCisgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9zaGxpYi9saWJjLnNvCisgIDs7CisKK2N5Z3dpbiopCisgICMgZnVuY193aW4zMl9saWJpZCBpcyBhIHNoZWxsIGZ1bmN0aW9uIGRlZmluZWQgaW4gbHRtYWluLnNoCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICA7OworCittaW5ndyogfCBwdzMyKikKKyAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQorICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKKyAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KKyAgaWYgKCBmaWxlIC8gKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICBlbHNlCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICBmaQorICA7OworCitjZWdjYykKKyAgIyB1c2UgdGhlIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJy4gU2VlIG1pbmd3Ki4KKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGUtYXJtLS4qbGl0dGxlKC4qYXJjaGl0ZWN0dXJlOiBhcm0pPycKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICA7OworCitkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgaSo4NiApCisgICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgdGhlIHByZXNlbmNlIG9mIE9wZW5CU0QgaGVyZSB3YXMgYSBtaXN0YWtlLgorICAgICAgIyBMZXQncyBhY2NlcHQgYm90aCBvZiB0aGVtIHVudGlsIHRoaXMgaXMgY2xlYXJlZCB1cC4KKyAgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIChGcmVlQlNEfE9wZW5CU0R8RHJhZ29uRmx5KS9pW1szLTldXTg2IChjb21wYWN0ICk/ZGVtYW5kIHBhZ2VkIHNoYXJlZCBsaWJyYXJ5JworICAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQorICAgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9YGVjaG8gL3Vzci9saWIvbGliYy5zby4qYAorICAgICAgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICBmaQorICA7OworCitnbnUqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitocHV4MTAuMjAqIHwgaHB1eDExKikKKyAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9L3Vzci9iaW4vZmlsZQorICBjYXNlICRob3N0X2NwdSBpbgorICBpYTY0KikKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyAoc1tbMC05XV1bWzAtOV1dW1swLTldXXxFTEYtW1swLTldXVtbMC05XV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIElBNjQnCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvaHB1eDMyL2xpYmMuc28KKyAgICA7OworICBocHBhKjY0KikKKyAgICBbbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbMC05XVswLTldWzAtOV18RUxGLVswLTldWzAtOV0pIHNoYXJlZCBvYmplY3QgZmlsZSAtIFBBLVJJU0MgWzAtOV0uWzAtOV0nXQorICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL3BhMjBfNjQvbGliYy5zbAorICAgIDs7CisgICopCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgKHNbWzAtOV1dW1swLTldXVtbMC05XV18UEEtUklTQ1tbMC05XV0uW1swLTldXSkgc2hhcmVkIGxpYnJhcnknCisgICAgbHRfY3ZfZmlsZV9tYWdpY190ZXN0X2ZpbGU9L3Vzci9saWIvbGliYy5zbAorICAgIDs7CisgIGVzYWMKKyAgOzsKKworaW50ZXJpeFtbMy05XV0qKQorICAjIFBJQyBjb2RlIGlzIGJyb2tlbiBvbiBJbnRlcml4IDMueCwgdGhhdCdzIHdoeSB8XC5hIG5vdCB8X3BpY1wuYSBoZXJlCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc298XC5hKSQnCisgIDs7CisKK2lyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgIGNhc2UgJExEIGluCisgICotMzJ8KiItMzIgIikgbGlibWFnaWM9MzItYml0OzsKKyAgKi1uMzJ8KiItbjMyICIpIGxpYm1hZ2ljPU4zMjs7CisgICotNjR8KiItNjQgIikgbGlibWFnaWM9NjQtYml0OzsKKyAgKikgbGlibWFnaWM9bmV2ZXItbWF0Y2g7OworICBlc2FjCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKKyMgVGhpcyBtdXN0IGJlIExpbnV4IEVMRi4KK2xpbnV4KiB8IGsqYnNkKi1nbnUpCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK25ldGJzZCopCisgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCisgIGVsc2UKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nbWF0Y2hfcGF0dGVybiAvbGliW1teL11dKyhcLnNvfF9waWNcLmEpJCcKKyAgZmkKKyAgOzsKKworbmV3b3M2KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tNTF1dU0IgKGV4ZWN1dGFibGV8ZHluYW1pYyBsaWIpJworICBsdF9jdl9maWxlX21hZ2ljX2NtZD0vdXNyL2Jpbi9maWxlCisgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS91c3IvbGliL2xpYm5scy5zbworICA7OworCisqbnRvKiB8ICpxbngqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitvcGVuYnNkKikKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xcLnNvfF9waWNcLmEpJCcKKyAgZWxzZQorICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdtYXRjaF9wYXR0ZXJuIC9saWJbW14vXV0rKFwuc29cLltbMC05XV0rXC5bWzAtOV1dK3xfcGljXC5hKSQnCisgIGZpCisgIDs7CisKK29zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworcmRvcyopCisgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPXBhc3NfYWxsCisgIDs7CisKK3NvbGFyaXMqKQorICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICA7OworCitzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKKworc3lzdjQgfCBzeXN2NC4zKikKKyAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KKyAgbW90b3JvbGEpCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgRUxGIFtbMC05XV1bWzAtOV1dKi1iaXQgW1tNTF1dU0IgKHNoYXJlZCBvYmplY3R8ZHluYW1pYyBsaWIpIE1bWzAtOV1dW1swLTldXSogVmVyc2lvbiBbWzAtOV1dJworICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC91c3IvbGliL2xpYmMuc28qYAorICAgIDs7CisgIG5jcikKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICAgIDs7CisgIHNlcXVlbnQpCisgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9Jy9iaW4vZmlsZScKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBFTEYgW1swLTldXVtbMC05XV0qLWJpdCBbW0xNXV1TQiAoc2hhcmVkIG9iamVjdHxkeW5hbWljIGxpYiApJworICAgIDs7CisgIHNuaSkKKyAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nL2Jpbi9maWxlJworICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSJmaWxlX21hZ2ljIEVMRiBbWzAtOV1dW1swLTldXSotYml0IFtbTE1dXVNCIGR5bmFtaWMgbGliIgorICAgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPS9saWIvbGliYy5zbworICAgIDs7CisgIHNpZW1lbnMpCisgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgICA7OworICBwYykKKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAorICAgIDs7CisgIGVzYWMKKyAgOzsKKwordHBmKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKK2VzYWMKK10pCitmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKK2RlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAordGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisKK19MVF9ERUNMKFtdLCBbZGVwbGlic19jaGVja19tZXRob2RdLCBbMV0sCisgICAgW01ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzXSkKK19MVF9ERUNMKFtdLCBbZmlsZV9tYWdpY19jbWRdLCBbMV0sCisgICAgW0NvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiXSkKK10pIyBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ECisKKworIyBMVF9QQVRIX05NCisjIC0tLS0tLS0tLS0KKyMgZmluZCB0aGUgcGF0aG5hbWUgdG8gYSBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXIKK0FDX0RFRlVOKFtMVF9QQVRIX05NXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX0NBQ0hFX0NIRUNLKFtmb3IgQlNELSBvciBNUy1jb21wYXRpYmxlIG5hbWUgbGlzdGVyIChubSldLCBsdF9jdl9wYXRoX05NLAorW2lmIHRlc3QgLW4gIiROTSI7IHRoZW4KKyAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisgIGx0X2N2X3BhdGhfTk09IiROTSIKK2Vsc2UKKyAgbHRfbm1fdG9fY2hlY2s9IiR7YWNfdG9vbF9wcmVmaXh9bm0iCisgIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCIgJiYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKyAgICBsdF9ubV90b19jaGVjaz0iJGx0X25tX3RvX2NoZWNrIG5tIgorICBmaQorICBmb3IgbHRfdG1wX25tIGluICRsdF9ubV90b19jaGVjazsgZG8KKyAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgICBmb3IgYWNfZGlyIGluICRQQVRIIC91c3IvY2NzL2Jpbi9lbGYgL3Vzci9jY3MvYmluIC91c3IvdWNiIC9iaW47IGRvCisgICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgICB0bXBfbm09IiRhY19kaXIvJGx0X3RtcF9ubSIKKyAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IiA7IHRoZW4KKwkjIENoZWNrIHRvIHNlZSBpZiB0aGUgbm0gYWNjZXB0cyBhIEJTRC1jb21wYXQgZmxhZy4KKwkjIEFkZGluZyB0aGUgYHNlZCAxcScgcHJldmVudHMgZmFsc2UgcG9zaXRpdmVzIG9uIEhQLVVYLCB3aGljaCBzYXlzOgorCSMgICBubTogdW5rbm93biBvcHRpb24gIkIiIGlnbm9yZWQKKwkjIFRydTY0J3Mgbm0gY29tcGxhaW5zIHRoYXQgL2Rldi9udWxsIGlzIGFuIGludmFsaWQgb2JqZWN0IGZpbGUKKwljYXNlIGAiJHRtcF9ubSIgLUIgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKwkqL2Rldi9udWxsKiB8IConSW52YWxpZCBmaWxlIG9yIG9iamVjdCB0eXBlJyopCisJICBsdF9jdl9wYXRoX05NPSIkdG1wX25tIC1CIgorCSAgYnJlYWsKKwkgIDs7CisJKikKKwkgIGNhc2UgYCIkdG1wX25tIiAtcCAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorCSAgKi9kZXYvbnVsbCopCisJICAgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLXAiCisJICAgIGJyZWFrCisJICAgIDs7CisJICAqKQorCSAgICBsdF9jdl9wYXRoX05NPSR7bHRfY3ZfcGF0aF9OTT0iJHRtcF9ubSJ9ICMga2VlcCB0aGUgZmlyc3QgbWF0Y2gsIGJ1dAorCSAgICBjb250aW51ZSAjIHNvIHRoYXQgd2UgY2FuIHRyeSB0byBmaW5kIG9uZSB0aGF0IHN1cHBvcnRzIEJTRCBmbGFncworCSAgICA7OworCSAgZXNhYworCSAgOzsKKwllc2FjCisgICAgICBmaQorICAgIGRvbmUKKyAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgZG9uZQorICA6ICR7bHRfY3ZfcGF0aF9OTT1ub30KK2ZpXSkKK2lmIHRlc3QgIiRsdF9jdl9wYXRoX05NIiAhPSAibm8iOyB0aGVuCisgIE5NPSIkbHRfY3ZfcGF0aF9OTSIKK2Vsc2UKKyAgIyBEaWRuJ3QgZmluZCBhbnkgQlNEIGNvbXBhdGlibGUgbmFtZSBsaXN0ZXIsIGxvb2sgZm9yIGR1bXBiaW4uCisgIEFDX0NIRUNLX1RPT0xTKERVTVBCSU4sIFsiZHVtcGJpbiAtc3ltYm9scyIgImxpbmsgLWR1bXAgLXN5bWJvbHMiXSwgOikKKyAgQUNfU1VCU1QoW0RVTVBCSU5dKQorICBpZiB0ZXN0ICIkRFVNUEJJTiIgIT0gIjoiOyB0aGVuCisgICAgTk09IiREVU1QQklOIgorICBmaQorZmkKK3Rlc3QgLXogIiROTSIgJiYgTk09bm0KK0FDX1NVQlNUKFtOTV0pCitfTFRfREVDTChbXSwgW05NXSwgWzFdLCBbQSBCU0QtIG9yIE1TLWNvbXBhdGlibGUgbmFtZSBsaXN0ZXJdKWRubAorCitBQ19DQUNIRV9DSEVDSyhbdGhlIG5hbWUgbGlzdGVyICgkTk0pIGludGVyZmFjZV0sIFtsdF9jdl9ubV9pbnRlcmZhY2VdLAorICBbbHRfY3Zfbm1faW50ZXJmYWNlPSJCU0Qgbm0iCisgIGVjaG8gImludCBzb21lX3ZhcmlhYmxlID0gMDsiID4gY29uZnRlc3QuJGFjX2V4dAorICAoZXZhbCBlY2hvICJcIlwkYXNfbWU6X19vbGluZV9fOiAkYWNfY29tcGlsZVwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCAiJGFjX2NvbXBpbGUiIDI+Y29uZnRlc3QuZXJyKQorICBjYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgKGV2YWwgZWNobyAiXCJcJGFzX21lOl9fb2xpbmVfXzogJE5NIFxcXCJjb25mdGVzdC4kYWNfb2JqZXh0XFxcIlwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICAoZXZhbCAiJE5NIFwiY29uZnRlc3QuJGFjX29iamV4dFwiIiAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dCkKKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECisgIChldmFsIGVjaG8gIlwiXCRhc19tZTpfX29saW5lX186IG91dHB1dFwiIiA+JkFTX01FU1NBR0VfTE9HX0ZEKQorICBjYXQgY29uZnRlc3Qub3V0ID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgaWYgJEdSRVAgJ0V4dGVybmFsLipzb21lX3ZhcmlhYmxlJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKyAgICBsdF9jdl9ubV9pbnRlcmZhY2U9Ik1TIGR1bXBiaW4iCisgIGZpCisgIHJtIC1mIGNvbmZ0ZXN0Kl0pCitdKSMgTFRfUEFUSF9OTQorCisjIE9sZCBuYW1lczoKK0FVX0FMSUFTKFtBTV9QUk9HX05NXSwgW0xUX1BBVEhfTk1dKQorQVVfQUxJQVMoW0FDX1BST0dfTk1dLCBbTFRfUEFUSF9OTV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FNX1BST0dfTk1dLCBbXSkKK2RubCBBQ19ERUZVTihbQUNfUFJPR19OTV0sIFtdKQorCisKKyMgTFRfTElCX00KKyMgLS0tLS0tLS0KKyMgY2hlY2sgZm9yIG1hdGggbGlicmFyeQorQUNfREVGVU4oW0xUX0xJQl9NXSwKK1tBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCitMSUJNPQorY2FzZSAkaG9zdCBpbgorKi0qLWJlb3MqIHwgKi0qLWN5Z3dpbiogfCAqLSotcHczMiogfCAqLSotZGFyd2luKikKKyAgIyBUaGVzZSBzeXN0ZW0gZG9uJ3QgaGF2ZSBsaWJtLCBvciBkb24ndCBuZWVkIGl0CisgIDs7CisqLW5jci1zeXN2NC4zKikKKyAgQUNfQ0hFQ0tfTElCKG13LCBfbXd2YWxpZGNoZWNrbCwgTElCTT0iLWxtdyIpCisgIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09IiRMSUJNIC1sbSIpCisgIDs7CisqKQorICBBQ19DSEVDS19MSUIobSwgY29zLCBMSUJNPSItbG0iKQorICA7OworZXNhYworQUNfU1VCU1QoW0xJQk1dKQorXSkjIExUX0xJQl9NCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbQUNfQ0hFQ0tfTElCTV0sIFtMVF9MSUJfTV0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0NIRUNLX0xJQk1dLCBbXSkKKworCisjIF9MVF9DT01QSUxFUl9OT19SVFRJKFtUQUdOQU1FXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DT01QSUxFUl9OT19SVFRJXSwKK1ttNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKworX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQorCitpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCisKKyAgX0xUX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIHN1cHBvcnRzIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnNdLAorICAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zLAorICAgIFstZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zXSwgW10sCisgICAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSAtZm5vLXJ0dGkgLWZuby1leGNlcHRpb25zIl0pCitmaQorX0xUX1RBR0RFQ0woW25vX2J1aWx0aW5fZmxhZ10sIFtsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ10sIFsxXSwKKwlbQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9uc10pCitdKSMgX0xUX0NPTVBJTEVSX05PX1JUVEkKKworCisjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmdW4oW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAorQUNfUkVRVUlSRShbTFRfUEFUSF9OTV0pZG5sCitBQ19SRVFVSVJFKFtMVF9QQVRIX0xEXSlkbmwKK200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCittNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKKworIyBDaGVjayBmb3IgY29tbWFuZCB0byBncmFiIHRoZSByYXcgc3ltYm9sIG5hbWUgZm9sbG93ZWQgYnkgQyBzeW1ib2wgZnJvbSBubS4KK0FDX01TR19DSEVDS0lORyhbY29tbWFuZCB0byBwYXJzZSAkTk0gb3V0cHV0IGZyb20gJGNvbXBpbGVyIG9iamVjdF0pCitBQ19DQUNIRV9WQUwoW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLAorWworIyBUaGVzZSBhcmUgc2FuZSBkZWZhdWx0cyB0aGF0IHdvcmsgb24gYXQgbGVhc3QgYSBmZXcgb2xkIHN5c3RlbXMuCisjIFtUaGV5IGNvbWUgZnJvbSBVbHRyaXguICBXaGF0IGNvdWxkIGJlIG9sZGVyIHRoYW4gVWx0cml4PyEhIDspXQorCisjIENoYXJhY3RlciBjbGFzcyBkZXNjcmliaW5nIE5NIGdsb2JhbCBzeW1ib2wgY29kZXMuCitzeW1jb2RlPSdbW0JDREVHUlNUXV0nCisKKyMgUmVnZXhwIHRvIG1hdGNoIHN5bWJvbHMgdGhhdCBjYW4gYmUgYWNjZXNzZWQgZGlyZWN0bHkgZnJvbSBDLgorc3ltcGF0PSdcKFtbX0EtWmEtel1dW1tfQS1aYS16MC05XV0qXCknCisKKyMgRGVmaW5lIHN5c3RlbS1zcGVjaWZpYyB2YXJpYWJsZXMuCitjYXNlICRob3N0X29zIGluCithaXgqKQorICBzeW1jb2RlPSdbW0JDRFRdXScKKyAgOzsKK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgc3ltY29kZT0nW1tBQkNER0lTVFddXScKKyAgOzsKK2hwdXgqKQorICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgIHN5bWNvZGU9J1tbQUJDREVHUlNUXV0nCisgIGZpCisgIDs7Citpcml4KiB8IG5vbnN0b3B1eCopCisgIHN5bWNvZGU9J1tbQkNERUdSU1RdXScKKyAgOzsKK29zZiopCisgIHN5bWNvZGU9J1tbQkNERUdRUlNUXV0nCisgIDs7Citzb2xhcmlzKikKKyAgc3ltY29kZT0nW1tCRFJUXV0nCisgIDs7CitzY28zLjJ2NSopCisgIHN5bWNvZGU9J1tbRFRdXScKKyAgOzsKK3N5c3Y0LjJ1dzIqKQorICBzeW1jb2RlPSdbW0RUXV0nCisgIDs7CitzeXN2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQorICBzeW1jb2RlPSdbW0FCRFRdXScKKyAgOzsKK3N5c3Y0KQorICBzeW1jb2RlPSdbW0RGTlNUVV1dJworICA7OworZXNhYworCisjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB1c2UgaXRzIHN0YW5kYXJkIHN5bWJvbCBjb2Rlcy4KK2Nhc2UgYCROTSAtViAyPiYxYCBpbgorKkdOVSogfCAqJ3dpdGggQkZEJyopCisgIHN5bWNvZGU9J1tbQUJDREdJUlNUV11dJyA7OworZXNhYworCisjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBhIHByb3BlciBDIGRlY2xhcmF0aW9uLgorIyBTb21lIHN5c3RlbXMgKGVzcC4gb24gaWE2NCkgbGluayBkYXRhIGFuZCBjb2RlIHN5bWJvbHMgZGlmZmVyZW50bHksCisjIHNvIHVzZSB0aGlzIGdlbmVyYWwgYXBwcm9hY2guCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorCisjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisKKyMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorb3B0X2NyPQorY2FzZSAkYnVpbGRfb3MgaW4KK21pbmd3KikKKyAgb3B0X2NyPWAkRUNITyAneFx7MCwxXH0nIHwgdHIgeCAnXDAxNSdgICMgb3B0aW9uIGNyIGluIHJlZ2V4cAorICA7OworZXNhYworCisjIFRyeSB3aXRob3V0IGEgcHJlZml4IHVuZGVyc2NvcmUsIHRoZW4gd2l0aCBpdC4KK2ZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKworICAjIFRyYW5zZm9ybSBzeW1jb2RlLCBzeW1wYXQsIGFuZCBzeW1wcmZ4IGludG8gYSByYXcgc3ltYm9sIGFuZCBhIEMgc3ltYm9sLgorICBzeW14ZnJtPSJcXDEgJGFjX3N5bXByZnhcXDIgXFwyIgorCisgICMgV3JpdGUgdGhlIHJhdyBhbmQgQyBpZGVudGlmaWVycy4KKyAgaWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKyAgICAjIEZha2UgaXQgZm9yIGR1bXBiaW4gYW5kIHNheSBUIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbgorICAgICMgYW5kIEQgZm9yIGFueSBnbG9iYWwgdmFyaWFibGUuCisgICAgIyBBbHNvIGZpbmQgQysrIGFuZCBfX2Zhc3RjYWxsIHN5bWJvbHMgZnJvbSBNU1ZDKyssCisgICAgIyB3aGljaCBzdGFydCB3aXRoIEAgb3IgPy4KKyAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkQVdLIFsnIlwKKyIgICAgIHtsYXN0X3NlY3Rpb249c2VjdGlvbjsgc2VjdGlvbj1cJCAzfTsiXAorIiAgICAgL1NlY3Rpb24gbGVuZ3RoIC4qI3JlbG9jcy4qKHBpY2sgYW55KS97aGlkZVtsYXN0X3NlY3Rpb25dPTF9OyJcCisiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAorIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXAorIiAgICAge2lmKGhpZGVbc2VjdGlvbl0pIG5leHR9OyJcCisiICAgICB7Zj0wfTsgXCQgMH4vXChcKS4qXHwve2Y9MX07IHtwcmludGYgZiA/IFwiVCBcIiA6IFwiRCBcIn07IlwKKyIgICAgIHtzcGxpdChcJCAwLCBhLCAvXHx8XHIvKTsgc3BsaXQoYVsyXSwgcyl9OyJcCisiICAgICBzWzFdfi9eW0A/XS97cHJpbnQgc1sxXSwgc1sxXTsgbmV4dH07IlwKKyIgICAgIHNbMV1+cHJmeCB7c3BsaXQoc1sxXSx0LFwiQFwiKTsgcHJpbnQgdFsxXSwgc3Vic3RyKHRbMV0sbGVuZ3RoKHByZngpKX0iXAorIiAgICAgJyBwcmZ4PV4kYWNfc3ltcHJmeF0iCisgIGVsc2UKKyAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qW1sJIF1dXCgkc3ltY29kZSRzeW1jb2RlKlwpW1sJIF1dW1sJIF1dKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICBmaQorCisgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICBwaXBlX3dvcmtzPW5vCisKKyAgcm0gLWYgY29uZnRlc3QqCisgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCitjaGFyIG5tX3Rlc3RfdmFyOwordm9pZCBubV90ZXN0X2Z1bmModm9pZCk7Cit2b2lkIG5tX3Rlc3RfZnVuYyh2b2lkKXt9CisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgoraW50IG1haW4oKXtubV90ZXN0X3Zhcj0nYSc7bm1fdGVzdF9mdW5jKCk7cmV0dXJuKDApO30KK19MVF9FT0YKKworICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgorICAgICMgTm93IHRyeSB0byBncmFiIHRoZSBzeW1ib2xzLgorICAgIG5saXN0PWNvbmZ0ZXN0Lm5tCisgICAgaWYgQUNfVFJZX0VWQUwoTk0gY29uZnRlc3QuJGFjX29iamV4dCBcfCAkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcPiAkbmxpc3QpICYmIHRlc3QgLXMgIiRubGlzdCI7IHRoZW4KKyAgICAgICMgVHJ5IHNvcnRpbmcgYW5kIHVuaXF1aWZ5aW5nIHRoZSBvdXRwdXQuCisgICAgICBpZiBzb3J0ICIkbmxpc3QiIHwgdW5pcSA+ICIkbmxpc3QiVDsgdGhlbgorCW12IC1mICIkbmxpc3QiVCAiJG5saXN0IgorICAgICAgZWxzZQorCXJtIC1mICIkbmxpc3QiVAorICAgICAgZmkKKworICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3ZSBzbmFnZ2VkIGFsbCB0aGUgc3ltYm9scyB3ZSBuZWVkLgorICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKwkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK19MVF9FT0YKKwkgICMgTm93IGdlbmVyYXRlIHRoZSBzeW1ib2wgZmlsZS4KKwkgIGV2YWwgIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCInIDwgIiRubGlzdCIgfCAkR1JFUCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQnCisKKwkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorCisvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCitjb25zdCBzdHJ1Y3QgeworICBjb25zdCBjaGFyICpuYW1lOworICB2b2lkICAgICAgICphZGRyZXNzOworfQorbHRfX1BST0dSQU1fX0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tbXV0gPQoreworICB7ICJAUFJPR1JBTUAiLCAodm9pZCAqKSAwIH0sCitfTFRfRU9GCisJICAkU0VEICJzL14kc3ltY29kZSRzeW1jb2RlKiBcKC4qXCkgXCguKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC8iIDwgIiRubGlzdCIgfCAkR1JFUCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQKKwkgIGNhdCA8PFxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAgezAsICh2b2lkICopIDB9Cit9OworCisvKiBUaGlzIHdvcmtzIGFyb3VuZCBhIHByb2JsZW0gaW4gRnJlZUJTRCBsaW5rZXIgKi8KKyNpZmRlZiBGUkVFQlNEX1dPUktBUk9VTkQKK3N0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgIHJldHVybiBsdF9fUFJPR1JBTV9fTFRYX3ByZWxvYWRlZF9zeW1ib2xzOworfQorI2VuZGlmCisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCitfTFRfRU9GCisJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CisJICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKKwkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKwkgICAgcGlwZV93b3Jrcz15ZXMKKwkgIGZpCisJICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisJZWxzZQorCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAorCWZpCisgICAgICBlbHNlCisJZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF92YXIgaW4gJG5saXN0IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGVjaG8gImNhbm5vdCBydW4gJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICBmaQorICBlbHNlCisgICAgZWNobyAiJHByb2duYW1lOiBmYWlsZWQgcHJvZ3JhbSB3YXM6IiA+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgY2F0IGNvbmZ0ZXN0LiRhY19leHQgPiY1CisgIGZpCisgIHJtIC1yZiBjb25mdGVzdCogY29uZnRzdCoKKworICAjIERvIG5vdCB1c2UgdGhlIGdsb2JhbF9zeW1ib2xfcGlwZSB1bmxlc3MgaXQgd29ya3MuCisgIGlmIHRlc3QgIiRwaXBlX3dvcmtzIiA9IHllczsgdGhlbgorICAgIGJyZWFrCisgIGVsc2UKKyAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPQorICBmaQorZG9uZQorXSkKK2lmIHRlc3QgLXogIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0KK2ZpCitpZiB0ZXN0IC16ICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCI7IHRoZW4KKyAgQUNfTVNHX1JFU1VMVChmYWlsZWQpCitlbHNlCisgIEFDX01TR19SRVNVTFQob2spCitmaQorCitfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF9waXBlXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLCBbMV0sCisgICAgW1Rha2UgdGhlIG91dHB1dCBvZiBubSBhbmQgcHJvZHVjZSBhIGxpc3Rpbmcgb2YgcmF3IHN5bWJvbHMgYW5kIEMgbmFtZXNdKQorX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2xdLCBbMV0sCisgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgcHJvcGVyIEMgZGVjbGFyYXRpb25dKQorX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLAorICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc10sIFsxXSwKKyAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyXSkKK19MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXhdLAorICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAorICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZF0pCitdKSAjIF9MVF9DTURfR0xPQkFMX1NZTUJPTFMKKworCisjIF9MVF9DT01QSUxFUl9QSUMoW1RBR05BTUVdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfQ09NUElMRVJfUElDXSwKK1ttNF9yZXF1aXJlKFtfTFRfVEFHX0NPTVBJTEVSXSlkbmwKK19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPQorCitBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKK200X2lmKFskMV0sIFtDWFhdLCBbCisgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KKyAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgYWl4KikKKyAgICAgICMgQWxsIEFJWCBjb2RlIGlzIFBJQy4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBwb3dlcnBjKQorICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAorICAgICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKyAgICAgICAgOzsKKyAgICAgIG02OGspCisgICAgICAgICAgICAjIEZJWE1FOiB3ZSBuZWVkIGF0IGxlYXN0IDY4MDIwIGNvZGUgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcywgYnV0CisgICAgICAgICAgICAjIGFkZGluZyB0aGUgYC1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKKyAgICAgICAgICAgICMgbGlrZSBgLW02ODA0MCcuCisgICAgICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBiZW9zKiB8IGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCogfCBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgT1Nlcy4KKyAgICAgIDs7CisgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKyAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCisgICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCisgICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcworICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAorCVtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorICAgICAgOzsKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQorICAgICAgIyBDb21tb24gc3ltYm9scyBub3QgYWxsb3dlZCBpbiBNSF9EWUxJQiBmaWxlcworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKKyAgICAgIDs7CisgICAgKmRqZ3BwKikKKyAgICAgICMgREpHUFAgZG9lcyBub3Qgc3VwcG9ydCBzaGFyZWQgbGlicmFyaWVzIGF0IGFsbAorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorICAgICAgOzsKKyAgICBpbnRlcml4W1szLTldXSopCisgICAgICAjIEludGVyaXggMy54IGdjYyAtZnBpYy8tZlBJQyBvcHRpb25zIGdlbmVyYXRlIGJyb2tlbiBjb2RlLgorICAgICAgIyBJbnN0ZWFkLCB3ZSByZWxvY2F0ZSBzaGFyZWQgbGlicmFyaWVzIGF0IHJ1bnRpbWUuCisgICAgICA7OworICAgIHN5c3Y0Kk1QKikKKyAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9LUtjb25mb3JtX3BpYworICAgICAgZmkKKyAgICAgIDs7CisgICAgaHB1eCopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKKyAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZworICAgICAgIyBzZXRzIHRoZSBkZWZhdWx0IFRMUyBtb2RlbCBhbmQgYWZmZWN0cyBpbmxpbmluZy4KKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBocHBhKjY0KikKKwk7OworICAgICAgKikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworCTs7CisgICAgICBlc2FjCisgICAgICA7OworICAgICpxbngqIHwgKm50byopCisgICAgICAjIFFOWCB1c2VzIEdOVSBDKyssIGJ1dCBuZWVkIHRvIGRlZmluZSAtc2hhcmVkIG9wdGlvbiB0b28sIG90aGVyd2lzZQorICAgICAgIyBpdCB3aWxsIGNvcmVkdW1wLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQyAtc2hhcmVkJworICAgICAgOzsKKyAgICAqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKyAgICAgIDs7CisgICAgZXNhYworICBlbHNlCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4W1s0LTldXSopCisJIyBBbGwgQUlYIGNvZGUgaXMgUElDLgorCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJICAjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgorCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwllbHNlCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ibnNvIC1iSTovbGliL3N5c2NhbGxzLmV4cCcKKwlmaQorCTs7CisgICAgICBjaG9ydXMqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJY3hjaDY4KikKKwkgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAjIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0iLS1ub19hdXRvX2luc3RhbnRpYXRpb24gLXUgX19tYWluIC11IF9fcHJlbWFpbiAtdSBfYWJvcnQgLXIgJENPT0xfRElSL2xpYi9saWJPcmIuYSAkTVZNRV9ESVIvbGliL0NDL2xpYkMuYSAkTVZNRV9ESVIvbGliL2NsYXNzaXgvbGliY3gucy5hIgorCSAgOzsKKwllc2FjCisJOzsKKyAgICAgIGRndXgqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBlYysrKikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgOzsKKwkgIGdoY3gqKQorCSAgICAjIEdyZWVuIEhpbGxzIEMrKyBDb21waWxlcgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorCSMgRnJlZUJTRCB1c2VzIEdOVSBDKysKKwk7OworICAgICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIENDKikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHt3bH0tYSAke3dsfWFyY2hpdmUnCisJICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorCSAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCisJICAgIGZpCisJICAgIDs7CisJICBhQ0MqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKwkgICAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgaHBwYSo2NCp8aWE2NCopCisJICAgICAgIyArWiB0aGUgZGVmYXVsdAorCSAgICAgIDs7CisJICAgICopCisJICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPScrWicKKwkgICAgICA7OworCSAgICBlc2FjCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgaW50ZXJpeCopCisJIyBUaGlzIGlzIGM4OSwgd2hpY2ggaXMgTVMgVmlzdWFsIEMrKyAobm8gc2hhcmVkIGxpYnMpCisJIyBBbnlvbmUgd2FudHMgdG8gZG8gYSBwb3J0PworCTs7CisgICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQyopCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworCSAgICAjIENDIHBpYyBmbGFnIC1LUElDIGlzIHRoZSBkZWZhdWx0LgorCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIEtDQyopCisJICAgICMgS0FJIEMrKyBDb21waWxlcgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLS1iYWNrZW5kIC1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICAgIDs7CisJICBlY3BjKiApCisJICAgICMgb2xkIEludGVsIEMrKyBmb3IgeDg2XzY0IHdoaWNoIHN0aWxsIHN1cHBvcnRlZCAtS1BJQy4KKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKwkgICAgOzsKKwkgIGljcGMqICkKKwkgICAgIyBJbnRlbCBDKyssIHVzZWQgdG8gYmUgaW5jb21wYXRpYmxlIHdpdGggR0NDLgorCSAgICAjIElDQyAxMCBkb2Vzbid0IGFjY2VwdCAtS1BJQyBhbnkgbW9yZS4KKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXN0YXRpYycKKwkgICAgOzsKKwkgIHBnQ0MqIHwgcGdjcHAqKQorCSAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZnBpYycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgICAgOzsKKwkgIGN4eCopCisJICAgICMgQ29tcGFxIEMrKworCSAgICAjIE1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgaXMgZW1wdHkuICBJdCBhcHBlYXJzIHRoYXQgYWxsIEFscGhhCisJICAgICMgTGludXggYW5kIENvbXBhcSBUcnU2NCBVbml4IG9iamVjdHMgYXJlIFBJQy4KKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworCSAgICA7OworCSAgeGxjKiB8IHhsQyopCisJICAgICMgSUJNIFhMIDguMCBvbiBQUEMKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLXFwaWMnCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLXFzdGF0aWNsaW5rJworCSAgICA7OworCSAgKikKKwkgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisJICAgICpTdW5cIEMqKQorCSAgICAgICMgU3VuIEMrKyA1LjkKKwkgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisJICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKKwkgICAgICA7OworCSAgICBlc2FjCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBseW54b3MqKQorCTs7CisgICAgICBtODhrKikKKwk7OworICAgICAgbXZzKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgY3h4KikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctVyBjLGV4cG9ydGFsbCcKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBuZXRic2QqKQorCTs7CisgICAgICAqcW54KiB8ICpudG8qKQorICAgICAgICAjIFFOWCB1c2VzIEdOVSBDKyssIGJ1dCBuZWVkIHRvIGRlZmluZSAtc2hhcmVkIG9wdGlvbiB0b28sIG90aGVyd2lzZQorICAgICAgICAjIGl0IHdpbGwgY29yZWR1bXAuCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMgLXNoYXJlZCcKKyAgICAgICAgOzsKKyAgICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgS0NDKikKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy0tYmFja2VuZCAtV2wsJworCSAgICA7OworCSAgUkNDKikKKwkgICAgIyBSYXRpb25hbCBDKysgMi40LjEKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJworCSAgICA7OworCSAgY3h4KikKKwkgICAgIyBEaWdpdGFsL0NvbXBhcSBDKysKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJICAgICMgTWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBpcyBlbXB0eS4gIEl0IGFwcGVhcnMgdGhhdCBhbGwgQWxwaGEKKwkgICAgIyBMaW51eCBhbmQgQ29tcGFxIFRydTY0IFVuaXggb2JqZWN0cyBhcmUgUElDLgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLW5vbl9zaGFyZWQnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgcHNvcyopCisJOzsKKyAgICAgIHNvbGFyaXMqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQyopCisJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1Rb3B0aW9uIGxkICcKKwkgICAgOzsKKwkgIGdjeCopCisJICAgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKwkgICAgOzsKKwkgICopCisJICAgIDs7CisJZXNhYworCTs7CisgICAgICBzdW5vczQqKQorCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJICBDQyopCisJICAgICMgU3VuIEMrKyA0LngKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcGljJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgICA7OworCSAgbGNjKikKKwkgICAgIyBMdWNpZAorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisJICAgIDs7CisJICAqKQorCSAgICA7OworCWVzYWMKKwk7OworICAgICAgc3lzdjUqIHwgdW5peHdhcmUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IE9wZW5VTklYKikKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgQ0MqKQorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKwkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIHRhbmRlbSopCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKwkgIE5DQyopCisJICAgICMgTm9uU3RvcC1VWCBOQ0MgMy4yMAorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgICA7OworCSAgKikKKwkgICAgOzsKKwllc2FjCisJOzsKKyAgICAgIHZ4d29ya3MqKQorCTs7CisgICAgICAqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9jYW5fYnVpbGRfc2hhcmVkLCAkMSk9bm8KKwk7OworICAgIGVzYWMKKyAgZmkKK10sCitbCisgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4KikKKyAgICAgICMgQWxsIEFJWCBjb2RlIGlzIFBJQy4KKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBwb3dlcnBjKQorICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAorICAgICAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKyAgICAgICAgOzsKKyAgICAgIG02OGspCisgICAgICAgICAgICAjIEZJWE1FOiB3ZSBuZWVkIGF0IGxlYXN0IDY4MDIwIGNvZGUgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcywgYnV0CisgICAgICAgICAgICAjIGFkZGluZyB0aGUgYC1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKKyAgICAgICAgICAgICMgbGlrZSBgLW02ODA0MCcuCisgICAgICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBiZW9zKiB8IGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCogfCBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgdGhlc2UgT1Nlcy4KKyAgICAgIDs7CisKKyAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQorICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKyAgICAgICMgQWx0aG91Z2ggdGhlIGN5Z3dpbiBnY2MgaWdub3JlcyAtZlBJQywgc3RpbGwgbmVlZCB0aGlzIGZvciBvbGQtc3R5bGUKKyAgICAgICMgKC0tZGlzYWJsZS1hdXRvLWltcG9ydCkgbGlicmFyaWVzCisgICAgICBtNF9pZihbJDFdLCBbR0NKXSwgW10sCisJW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCisgICAgICA7OworCisgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IG9uIHRoaXMgcGxhdGZvcm0KKyAgICAgICMgQ29tbW9uIHN5bWJvbHMgbm90IGFsbG93ZWQgaW4gTUhfRFlMSUIgZmlsZXMKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZuby1jb21tb24nCisgICAgICA7OworCisgICAgaHB1eCopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBmb3IgNjQtYml0IFBBIEhQLVVYLCBidXQgbm90IGZvciAzMi1iaXQKKyAgICAgICMgUEEgSFAtVVguICBPbiBJQTY0IEhQLVVYLCBQSUMgaXMgdGhlIGRlZmF1bHQgYnV0IHRoZSBwaWMgZmxhZworICAgICAgIyBzZXRzIHRoZSBkZWZhdWx0IFRMUyBtb2RlbCBhbmQgYWZmZWN0cyBpbmxpbmluZy4KKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBocHBhKjY0KikKKwkjICtaIHRoZSBkZWZhdWx0CisJOzsKKyAgICAgICopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwk7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgIGludGVyaXhbWzMtOV1dKikKKyAgICAgICMgSW50ZXJpeCAzLnggZ2NjIC1mcGljLy1mUElDIG9wdGlvbnMgZ2VuZXJhdGUgYnJva2VuIGNvZGUuCisgICAgICAjIEluc3RlYWQsIHdlIHJlbG9jYXRlIHNoYXJlZCBsaWJyYXJpZXMgYXQgcnVudGltZS4KKyAgICAgIDs7CisKKyAgICBtc2Rvc2RqZ3BwKikKKyAgICAgICMgSnVzdCBiZWNhdXNlIHdlIHVzZSBHQ0MgZG9lc24ndCBtZWFuIHdlIHN1ZGRlbmx5IGdldCBzaGFyZWQgbGlicmFyaWVzCisgICAgICAjIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBzdXBwb3J0IHRoZW0uCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisgICAgICBlbmFibGVfc2hhcmVkPW5vCisgICAgICA7OworCisgICAgKm50byogfCAqcW54KikKKyAgICAgICMgUU5YIHVzZXMgR05VIEMrKywgYnV0IG5lZWQgdG8gZGVmaW5lIC1zaGFyZWQgb3B0aW9uIHRvbywgb3RoZXJ3aXNlCisgICAgICAjIGl0IHdpbGwgY29yZWR1bXAuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDIC1zaGFyZWQnCisgICAgICA7OworCisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0tS2NvbmZvcm1fcGljCisgICAgICBmaQorICAgICAgOzsKKworICAgICopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJworICAgICAgOzsKKyAgICBlc2FjCisgIGVsc2UKKyAgICAjIFBPUlRNRSBDaGVjayBmb3IgZmxhZyB0byBwYXNzIGxpbmtlciBmbGFncyB0aHJvdWdoIHRoZSBzeXN0ZW0gY29tcGlsZXIuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGFpeCopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLWJuc28gLWJJOi9saWIvc3lzY2FsbHMuZXhwJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQorICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKyAgICAgIG00X2lmKFskMV0sIFtHQ0pdLCBbXSwKKwlbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKyAgICAgIDs7CisKKyAgICBocHV4OSogfCBocHV4MTAqIHwgaHB1eDExKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgZm9yIElBNjQgSFAtVVggYW5kIDY0LWJpdCBIUC1VWCwgYnV0CisgICAgICAjIG5vdCBmb3IgUEEgSFAtVVguCisgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgaHBwYSo2NCp8aWE2NCopCisJIyArWiB0aGUgZGVmYXVsdAorCTs7CisgICAgICAqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nK1onCisJOzsKKyAgICAgIGVzYWMKKyAgICAgICMgSXMgdGhlcmUgYSBiZXR0ZXIgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgdGhhdCB3b3JrcyB3aXRoIHRoZSBidW5kbGVkIENDPworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKyAgICAgIDs7CisKKyAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICAjIFBJQyAod2l0aCAtS1BJQykgaXMgdGhlIGRlZmF1bHQuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworICAgICAgOzsKKworICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUpCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCisgICAgICBlY2MqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworICAgICAgICA7OworICAgICAgIyBpY2MgdXNlZCB0byBiZSBpbmNvbXBhdGlibGUgd2l0aCBHQ0MuCisgICAgICAjIElDQyAxMCBkb2Vzbid0IGFjY2VwdCAtS1BJQyBhbnkgbW9yZS4KKyAgICAgIGljYyogfCBpZm9ydCopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCisgICAgICAgIDs7CisgICAgICAjIExhaGV5IEZvcnRyYW4gOC4xLgorICAgICAgbGY5NSopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctLXNoYXJlZCcKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy0tc3RhdGljJworCTs7CisgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikKKyAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKwkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZwaWMnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgICAgOzsKKyAgICAgIGNjYyopCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgICAjIEFsbCBBbHBoYSBjb2RlIGlzIFBJQy4KKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKyAgICAgICAgOzsKKyAgICAgIHhsKikKKwkjIElCTSBYTCBDIDguMC9Gb3J0cmFuIDEwLjEgb24gUFBDCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctcXBpYycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1xc3RhdGljbGluaycKKwk7OworICAgICAgKikKKwljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDKikKKwkgICMgU3VuIEMgNS45CisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCSAgOzsKKwkqU3VuXCBGKikKKwkgICMgU3VuIEZvcnRyYW4gOC4zIHBhc3NlcyBhbGwgdW5yZWNvZ25pemVkIGZsYWdzIHRvIHRoZSBsaW5rZXIKKwkgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisJICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9JycKKwkgIDs7CisJZXNhYworCTs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgbmV3c29zNikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgICpudG8qIHwgKnFueCopCisgICAgICAjIFFOWCB1c2VzIEdOVSBDKyssIGJ1dCBuZWVkIHRvIGRlZmluZSAtc2hhcmVkIG9wdGlvbiB0b28sIG90aGVyd2lzZQorICAgICAgIyBpdCB3aWxsIGNvcmVkdW1wLgorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQyAtc2hhcmVkJworICAgICAgOzsKKworICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgIyBBbGwgT1NGLzEgY29kZSBpcyBQSUMuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1ub25fc2hhcmVkJworICAgICAgOzsKKworICAgIHJkb3MqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctbm9uX3NoYXJlZCcKKyAgICAgIDs7CisKKyAgICBzb2xhcmlzKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVFvcHRpb24gbGQgJzs7CisgICAgICAqKQorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJzs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgc3Vub3M0KikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1QSUMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKikKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisgICAgICA7OworCisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtjb25mb3JtX3BpYycKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1LUElDJworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgIDs7CisKKyAgICB1bmljb3MqKQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisgICAgICA7OworCisgICAgdXRzNCopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1waWMnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJworICAgICAgOzsKKworICAgICopCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfY2FuX2J1aWxkX3NoYXJlZCwgJDEpPW5vCisgICAgICA7OworICAgIGVzYWMKKyAgZmkKK10pCitjYXNlICRob3N0X29zIGluCisgICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgorICAqZGpncHAqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyAgICA7OworICAqKQorICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKUAmdEBtNF9pZihbJDFdLFtdLFsgLURQSUNdLFttNF9pZihbJDFdLFtDWFhdLFsgLURQSUNdLFtdKV0pIgorICAgIDs7Citlc2FjCitBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKK19MVF9UQUdERUNMKFt3bF0sIFtsdF9wcm9nX2NvbXBpbGVyX3dsXSwgWzFdLAorCVtIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyXSkKKworIworIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorIworaWYgdGVzdCAtbiAiJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSI7IHRoZW4KKyAgX0xUX0NPTVBJTEVSX09QVElPTihbaWYgJGNvbXBpbGVyIFBJQyBmbGFnICRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkgd29ya3NdLAorICAgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzLCAkMSldLAorICAgIFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpQCZ0QG00X2lmKFskMV0sW10sWyAtRFBJQ10sW200X2lmKFskMV0sW0NYWF0sWyAtRFBJQ10sW10pXSldLCBbXSwKKyAgICBbY2FzZSAkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpIGluCisgICAgICIiIHwgIiAiKikgOzsKKyAgICAgKikgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSIgJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKSIgOzsKKyAgICAgZXNhY10sCisgICAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0KKyAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX2Nhbl9idWlsZF9zaGFyZWQsICQxKT1ub10pCitmaQorX0xUX1RBR0RFQ0woW3BpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfcGljXSwgWzFdLAorCVtBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHNdKQorCisjCisjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisjCit3bD0kX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSkgZXZhbCBsdF90bXBfc3RhdGljX2ZsYWc9XCIkX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpXCIKK19MVF9MSU5LRVJfT1BUSU9OKFtpZiAkY29tcGlsZXIgc3RhdGljIGZsYWcgJGx0X3RtcF9zdGF0aWNfZmxhZyB3b3Jrc10sCisgIF9MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3MsICQxKSwKKyAgJGx0X3RtcF9zdGF0aWNfZmxhZywKKyAgW10sCisgIFtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9XSkKK19MVF9UQUdERUNMKFtsaW5rX3N0YXRpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfc3RhdGljXSwgWzFdLAorCVtDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nXSkKK10pIyBfTFRfQ09NUElMRVJfUElDCisKKworIyBfTFRfTElOS0VSX1NITElCUyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VlIGlmIHRoZSBsaW5rZXIgc3VwcG9ydHMgYnVpbGRpbmcgc2hhcmVkIGxpYnJhcmllcy4KK200X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCitbQUNfUkVRVUlSRShbTFRfUEFUSF9MRF0pZG5sCitBQ19SRVFVSVJFKFtMVF9QQVRIX05NXSlkbmwKK200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKK200X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAorbTRfcmVxdWlyZShbX0xUX1RBR19DT01QSUxFUl0pZG5sCitBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCittNF9pZihbJDFdLCBbQ1hYXSwgWworICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICBjYXNlICRob3N0X29zIGluCisgIGFpeFtbNC05XV0qKQorICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgorICAgICMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gQUlYIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgd2l0aCBHTlUgbm0KKyAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgIGVsc2UKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgIGZpCisgICAgOzsKKyAgcHczMiopCisgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9IiRsdGRsbF9jbWRzIgorICA7OworICBjeWd3aW4qIHwgbWluZ3cqIHwgY2VnY2MqKQorICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvOy9eLipbWyBdXV9fbm1fXy9zL14uKltbIF1dX19ubV9fXChbW14gXV0qXClbWyBdXVtbXiBdXSovXDEgREFUQS87L15JW1sgXV0vZDsvXltbQUlUV11dW1sgXV0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKyAgOzsKKyAgKikKKyAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworICA7OworICBlc2FjCisgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorXSwgWworICBydW5wYXRoX3Zhcj0KKyAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPQorICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9CisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPQorICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPW5vCisgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPW5vCisgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9CisgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfYXV0b21hdGljLCAkMSk9bm8KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0KKyAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCisgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPXVuc3VwcG9ydGVkCisgIF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPW5vCisgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KKyAgX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQorICBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPQorICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0KKyAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcywgJDEpPQorICBfTFRfVEFHVkFSKHRocmVhZF9zYWZlX2ZsYWdfc3BlYywgJDEpPQorICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CisgICMgaW5jbHVkZV9leHBzeW1zIHNob3VsZCBiZSBhIGxpc3Qgb2Ygc3BhY2Utc2VwYXJhdGVkIHN5bWJvbHMgdG8gYmUgKmFsd2F5cyoKKyAgIyBpbmNsdWRlZCBpbiB0aGUgc3ltYm9sIGxpc3QKKyAgX0xUX1RBR1ZBUihpbmNsdWRlX2V4cHN5bXMsICQxKT0KKyAgIyBleGNsdWRlX2V4cHN5bXMgY2FuIGJlIGFuIGV4dGVuZGVkIHJlZ2V4cCBvZiBzeW1ib2xzIHRvIGV4Y2x1ZGUKKyAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgYCAoJyBhbmQgYCkkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgorICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogYGF8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyBgYScgYW5kIGBiYycsCisgICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgYGQnLgorICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KKyAgIyBBbHRob3VnaCBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaXMgYSB2YWxpZCBzeW1ib2wgQyBuYW1lLCBtb3N0IGEub3V0CisgICMgcGxhdGZvcm1zIChhYil1c2UgaXQgaW4gUElDIGNvZGUsIGJ1dCB0aGVpciBsaW5rZXJzIGdldCBjb25mdXNlZCBpZgorICAjIHRoZSBzeW1ib2wgaXMgZXhwbGljaXRseSByZWZlcmVuY2VkLiAgU2luY2UgcG9ydGFibGUgY29kZSBjYW5ub3QKKyAgIyByZWx5IG9uIHRoaXMgc3ltYm9sIG5hbWUsIGl0J3MgcHJvYmFibHkgZmluZSB0byBuZXZlciBpbmNsdWRlIGl0IGluCisgICMgcHJlbG9hZGVkIHN5bWJvbCB0YWJsZXMuCisgICMgRXhjbHVkZSBzaGFyZWQgbGlicmFyeSBpbml0aWFsaXphdGlvbi9maW5hbGl6YXRpb24gc3ltYm9scy4KK2RubCBOb3RlIGFsc28gYWRqdXN0IGV4Y2x1ZGVfZXhwc3ltcyBmb3IgQysrIGFib3ZlLgorICBleHRyYWN0X2V4cHN5bXNfY21kcz0KKworICBjYXNlICRob3N0X29zIGluCisgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAjIEZJWE1FOiB0aGUgTVNWQysrIHBvcnQgaGFzbid0IGJlZW4gdGVzdGVkIGluIGEgbG9vb29uZyB0aW1lCisgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICBmaQorICAgIDs7CisgIGludGVyaXgqKQorICAgICMgd2UganVzdCBob3BlL2Fzc3VtZSB0aGlzIGlzIGdjYyBhbmQgbm90IGM4OSAoPSBNU1ZDKyspCisgICAgd2l0aF9nbnVfbGQ9eWVzCisgICAgOzsKKyAgb3BlbmJzZCopCisgICAgd2l0aF9nbnVfbGQ9bm8KKyAgICA7OworICBlc2FjCisKKyAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CisgICAgd2xhcmM9JyR7d2x9JworCisgICAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKKyAgICAjIGFyZSByZXNldCBsYXRlciBpZiBzaGFyZWQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBQdXR0aW5nIHRoZW0KKyAgICAjIGhlcmUgYWxsb3dzIHRoZW0gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWNlc3NhcnkuCisgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKyAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICAjIGFuY2llbnQgR05VIGxkIGRpZG4ndCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZSBldC4gYWwuCisgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisgICAgZWxzZQorICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorICAgIGZpCisgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCisgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAqXCBbWzAxXV0uKiB8ICpcIDIuW1swLTldXS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQorICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KKyAgICAgICpcIDIuMTEuOTIuMC4xMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIE1hbmRyYWtlIDguMiAuLi4KKyAgICAgICpcIDIuMTEuKikgOzsgIyBvdGhlciAyLjExIHZlcnNpb25zCisgICAgICAqKSBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9eWVzIDs7CisgICAgZXNhYworCisgICAgIyBTZWUgaWYgR05VIGxkIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGFpeFtbMy05XV0qKQorICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCWNhdCA8PF9MVF9FT0YgMT4mMgorCisqKiogV2FybmluZzogdGhlIEdOVSBsaW5rZXIsIGF0IGxlYXN0IHVwIHRvIHJlbGVhc2UgMi45LjEsIGlzIHJlcG9ydGVkCisqKiogdG8gYmUgdW5hYmxlIHRvIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIEFJWC4KKyoqKiBUaGVyZWZvcmUsIGxpYnRvb2wgaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIElmIHlvdQorKioqIHJlYWxseSBjYXJlIGZvciBzaGFyZWQgbGlicmFyaWVzLCB5b3UgbWF5IHdhbnQgdG8gbW9kaWZ5IHlvdXIgUEFUSAorKioqIHNvIHRoYXQgYSBub24tR05VIGxpbmtlciBpcyBmb3VuZCwgYW5kIHRoZW4gcmVzdGFydC4KKworX0xUX0VPRgorICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBhbWlnYW9zKikKKyAgICAgIGNhc2UgJGhvc3RfY3B1IGluCisgICAgICBwb3dlcnBjKQorICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAorICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJworICAgICAgICA7OworICAgICAgbTY4aykKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRFQ0hPICIjZGVmaW5lIE5BTUUgJGxpYm5hbWUiID4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBMSUJSQVJZX0lEIDEiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgVkVSU0lPTiAkbWFqb3IiID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgUkVWSVNJT04gJHJldmlzaW9uIiA+PiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRBUiAkQVJfRkxBR1MgJGxpYiAkbGlib2Jqc34kUkFOTElCICRsaWJ+KGNkICRvdXRwdXRfb2JqZGlyICYmIGEyaXhsaWJyYXJ5IC0zMiknCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworCisgICAgYmVvcyopCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYworCSMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorICAgICAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bW0FJVFddXVtbIF1dL3MvLipbWyBdXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKwkjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCWVsc2UKKwkgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworCSAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwlmaX4KKwkkQ0MgLXNoYXJlZCAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIGludGVyaXhbWzMtOV1dKikKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICAjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCisgICAgICAjIEluc3RlYWQsIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGxvYWRlZCBhdCBhbiBpbWFnZSBiYXNlICgweDEwMDAwMDAwIGJ5CisgICAgICAjIGRlZmF1bHQpIGFuZCByZWxvY2F0ZWQgaWYgdGhleSBjb25mbGljdCwgd2hpY2ggaXMgYSBzbG93IHZlcnkgbWVtb3J5CisgICAgICAjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCisgICAgICAjIDI1NiBLaUItYWxpZ25lZCBpbWFnZSBiYXNlIGJldHdlZW4gMHg1MDAwMDAwMCBhbmQgMHg2RkZDMDAwMCBhdCBsaW5rCisgICAgICAjIHRpbWUuICBNb3ZpbmcgdXAgZnJvbSAweDEwMDAwMDAwIGFsc28gYWxsb3dzIG1vcmUgc2JyaygyKSBzcGFjZS4KKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKyAgICAgIDs7CisKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUpCisgICAgICB0bXBfZGlldD1ubworICAgICAgaWYgdGVzdCAiJGhvc3Rfb3MiID0gbGludXgtZGlldGxpYmM7IHRoZW4KKwljYXNlICRjY19iYXNlbmFtZSBpbgorCSAgZGlldFwgKikgdG1wX2RpZXQ9eWVzOzsJIyBsaW51eC1kaWV0bGliYyB3aXRoIHN0YXRpYyBsaW5raW5nICghZGlldC1keW4pCisJZXNhYworICAgICAgZmkKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKKwkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCisgICAgICB0aGVuCisJdG1wX2FkZGZsYWc9CisJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCisJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCisgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCisJICA7OworCXBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KikJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgJEVDSE8gXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcgLU1ub21haW4nIDs7CisJZWNjKixpYTY0KiB8IGljYyosaWE2NCopCSMgSW50ZWwgQyBjb21waWxlciBvbiBpYTY0CisJICB0bXBfYWRkZmxhZz0nIC1pX2R5bmFtaWMnIDs7CisJZWZjKixpYTY0KiB8IGlmb3J0KixpYTY0KikJIyBJbnRlbCBGb3J0cmFuIGNvbXBpbGVyIG9uIGlhNjQKKwkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYyAtbm9mb3JfbWFpbicgOzsKKwlpZmMqIHwgaWZvcnQqKQkJCSMgSW50ZWwgRm9ydHJhbiBjb21waWxlcgorCSAgdG1wX2FkZGZsYWc9JyAtbm9mb3JfbWFpbicgOzsKKwlsZjk1KikJCQkJIyBMYWhleSBGb3J0cmFuIDguMQorCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OworCXhsW1tjQ11dKikJCQkjIElCTSBYTCBDIDguMCBvbiBQUEMgKGRlYWwgd2l0aCB4bGYgYmVsb3cpCisJICB0bXBfc2hhcmVkZmxhZz0nLXFta3Nocm9iaicKKwkgIHRtcF9hZGRmbGFnPSA7OworCWVzYWMKKwljYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKwkqU3VuXCBDKikJCQkjIFN1biBDIDUuOQorCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzCisJICB0bXBfc2hhcmVkZmxhZz0nLUcnIDs7CisJKlN1blwgRiopCQkJIyBTdW4gRm9ydHJhbiA4LjMKKwkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKKwllc2FjCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKworICAgICAgICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgICAgICAgIGZpCisKKwljYXNlICRjY19iYXNlbmFtZSBpbgorCXhsZiopCisJICAjIElCTSBYTCBGb3J0cmFuIDEwLjEgb24gUFBDIGNhbm5vdCBjcmVhdGUgc2hhcmVkIGxpYnMgaXRzZWxmCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPSctcnBhdGggJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKwkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgZmkKKwkgIDs7CisJZXNhYworICAgICAgZWxzZQorICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIG5ldGJzZCopCisgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisJd2xhcmM9CisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICBzb2xhcmlzKikKKyAgICAgIGlmICRMRCAtdiAyPiYxIHwgJEdSRVAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwljYXQgPDxfTFRfRU9GIDE+JjIKKworKioqIFdhcm5pbmc6IFRoZSByZWxlYXNlcyAyLjguKiBvZiB0aGUgR05VIGxpbmtlciBjYW5ub3QgcmVsaWFibHkKKyoqKiBjcmVhdGUgc2hhcmVkIGxpYnJhcmllcyBvbiBTb2xhcmlzIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKKyoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKKyoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuOS4xIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CisqKiogeW91ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgbmF0aXZlIGxpbmtlciBpcworKioqIHVzZWQsIGFuZCB0aGVuIHJlc3RhcnQuCisKK19MVF9FT0YKKyAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICBmaQorICAgICAgOzsKKworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCopCisgICAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICAgICAgKlwgW1swMV1dLiogfCAqXCAyLltbMC05XV0uKiB8ICpcIDIuMVtbMC01XV0uKikKKwlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJY2F0IDw8X0xUX0VPRiAxPiYyCisKKyoqKiBXYXJuaW5nOiBSZWxlYXNlcyBvZiB0aGUgR05VIGxpbmtlciBwcmlvciB0byAyLjE2LjkxLjAuMyBjYW4gbm90CisqKiogcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gU0NPIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKKyoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKKyoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuMTYuOTEuMC4zIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CisqKiogeW91ciBQQVRIIG9yIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gc28gdGhhdCB0aGUgbmF0aXZlIGxpbmtlciBpcworKioqIHVzZWQsIGFuZCB0aGVuIHJlc3RhcnQuCisKK19MVF9FT0YKKwk7OworCSopCisJICAjIEZvciBzZWN1cml0eSByZWFzb25zLCBpdCBpcyBoaWdobHkgcmVjb21tZW5kZWQgdGhhdCB5b3UgYWx3YXlzCisJICAjIHVzZSBhYnNvbHV0ZSBwYXRocyBmb3IgbmFtaW5nIHNoYXJlZCBsaWJyYXJpZXMsIGFuZCBleGNsdWRlIHRoZQorCSAgIyBEVF9SVU5QQVRIIHRhZyBmcm9tIGV4ZWN1dGFibGVzIGFuZCBsaWJyYXJpZXMuICBCdXQgZG9pbmcgc28KKwkgICMgcmVxdWlyZXMgdGhhdCB5b3UgY29tcGlsZSBldmVyeXRoaW5nIHR3aWNlLCB3aGljaCBpcyBhIHBhaW4uCisJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICBlbHNlCisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgIGZpCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBzdW5vczQqKQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc2hhcmVhYmxlIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIHdsYXJjPQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgKikKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgZXNhYworCisgICAgaWYgdGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm87IHRoZW4KKyAgICAgIHJ1bnBhdGhfdmFyPQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPQorICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorICAgIGZpCisgIGVsc2UKKyAgICAjIFBPUlRNRSBmaWxsIGluIGEgZGVzY3JpcHRpb24gb2YgeW91ciBzeXN0ZW0ncyBsaW5rZXIgKG5vdCBHTlUgbGQpCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgIGFpeDMqKQorICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRMRCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLWJFOiRleHBvcnRfc3ltYm9scyAtVDUxMiAtSDUxMiAtYk06U1JFfiRBUiAkQVJfRkxBR1MgJGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lJworICAgICAgIyBOb3RlOiB0aGlzIGxpbmtlciBoYXJkY29kZXMgdGhlIGRpcmVjdG9yaWVzIGluIExJQlBBVEggaWYgdGhlcmUKKyAgICAgICMgYXJlIG5vIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieSAtTC4KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAteiAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIjsgdGhlbgorCSMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQorCSMgYnJva2VuIGNvbGxlY3QyLgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgIGZpCisgICAgICA7OworCisgICAgYWl4W1s0LTldXSopCisgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKKwkjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KKwlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisJZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKKwlub19lbnRyeV9mbGFnPSIiCisgICAgICBlbHNlCisJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCisJIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQorCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KKwkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJZWxzZQorCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJZmkKKwlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisKKwkjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKKwkjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKKwkjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorCWNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzIzXV18YWl4NC5bWzIzXV0uKnxhaXhbWzUtOV1dKikKKwkgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbworCSAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KKwkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKwkgICAgYnJlYWsKKwkgIGZpCisJICBkb25lCisJICA7OworCWVzYWMKKworCWV4cF9zeW1fZmxhZz0nLWJleHBvcnQnCisJbm9fZW50cnlfZmxhZz0nLWJub2VudHJ5JworICAgICAgZmkKKworICAgICAgIyBXaGVuIGxhcmdlIGV4ZWN1dGFibGVzIG9yIHNoYXJlZCBvYmplY3RzIGFyZSBidWlsdCwgQUlYIGxkIGNhbgorICAgICAgIyBoYXZlIHByb2JsZW1zIGNyZWF0aW5nIHRoZSB0YWJsZSBvZiBjb250ZW50cy4gIElmIGxpbmtpbmcgYSBsaWJyYXJ5CisgICAgICAjIG9yIHByb2dyYW0gcmVzdWx0cyBpbiAiZXJyb3IgVE9DIG92ZXJmbG93IiBhZGQgLW1taW5pbWFsLXRvYyB0bworICAgICAgIyBDWFhGTEFHUy9DRkxBR1MgZm9yIGcrKy9nY2MuICBJbiB0aGUgY2FzZXMgd2hlcmUgdGhhdCBpcyBub3QKKyAgICAgICMgZW5vdWdoIHRvIGZpeCB0aGUgcHJvYmxlbSwgYWRkIC1XbCwtYmJpZ3RvYyB0byBMREZMQUdTLgorCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPScnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JworICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9JyR7d2x9LWYsJworCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCWNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzAxMl1dfGFpeDQuW1swMTJdXS4qKQorCSMgV2Ugb25seSB3YW50IHRvIGRvIHRoaXMgb24gQUlYIDQuMiBhbmQgbG93ZXIsIHRoZSBjaGVjaworCSMgYmVsb3cgZm9yIGJyb2tlbiBjb2xsZWN0MiBkb2Vzbid0IHdvcmsgdW5kZXIgNC4zKworCSAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAorCSAgaWYgdGVzdCAtZiAiJGNvbGxlY3QybmFtZSIgJiYKKwkgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8ICRHUkVQIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorCSAgdGhlbgorCSAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCisJICA6CisJICBlbHNlCisJICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXVuc3VwcG9ydGVkCisJICAjIEl0IGZhaWxzIHRvIGZpbmQgdW5pbnN0YWxsZWQgbGlicmFyaWVzIHdoZW4gdGhlIHVuaW5zdGFsbGVkCisJICAjIHBhdGggaXMgbm90IGxpc3RlZCBpbiB0aGUgbGlicGF0aC4gIFNldHRpbmcgaGFyZGNvZGVfbWludXNfTAorCSAgIyB0byB1bnN1cHBvcnRlZCBmb3JjZXMgcmVsaW5raW5nCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KKwkgIGZpCisJICA7OworCWVzYWMKKwlzaGFyZWRfZmxhZz0nLXNoYXJlZCcKKwlpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkgIHNoYXJlZF9mbGFnPSIkc2hhcmVkX2ZsYWcgIicke3dsfS1HJworCWZpCisgICAgICBlbHNlCisJIyBub3QgdXNpbmcgZ2NjCisJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQorCSMgY2hva2VzIG9uIC1XbCwtRy4gVGhlIGZvbGxvd2luZyBsaW5lIGlzIGNvcnJlY3Q6CisJICBzaGFyZWRfZmxhZz0nLUcnCisJZWxzZQorCSAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJICAgIHNoYXJlZF9mbGFnPScke3dsfS1HJworCSAgZWxzZQorCSAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgZmkKKwlmaQorICAgICAgZmkKKworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmV4cGFsbCcKKyAgICAgICMgSXQgc2VlbXMgdGhhdCAtYmV4cGFsbCBkb2VzIG5vdCBleHBvcnQgc3ltYm9scyBiZWdpbm5pbmcgd2l0aAorICAgICAgIyB1bmRlcnNjb3JlIChfKSwgc28gaXQgaXMgYmV0dGVyIHRvIGdlbmVyYXRlIGEgbGlzdCBvZiBzeW1ib2xzIHRvIGV4cG9ydC4KKyAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisgICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKKwkjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCisgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICBlbHNlCisJaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30gJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCisJZWxzZQorCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKwkgIyBlbXB0eSBleGVjdXRhYmxlLgorCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKwkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCisJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisJICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKKwkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm9rJworCSAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyRjb252ZW5pZW5jZScKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKwkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJworCWZpCisgICAgICBmaQorICAgICAgOzsKKworICAgIGFtaWdhb3MqKQorICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIHBvd2VycGMpCisgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0CisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPScnCisgICAgICAgIDs7CisgICAgICBtNjhrKQorICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEVDSE8gIiNkZWZpbmUgTkFNRSAkbGlibmFtZSIgPiAkb3V0cHV0X29iamRpci9hMml4bGlicmFyeS5kYXRhfiRFQ0hPICIjZGVmaW5lIExJQlJBUllfSUQgMSIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBWRVJTSU9OICRtYWpvciIgPj4gJG91dHB1dF9vYmpkaXIvYTJpeGxpYnJhcnkuZGF0YX4kRUNITyAiI2RlZmluZSBSRVZJU0lPTiAkcmV2aXNpb24iID4+ICRvdXRwdXRfb2JqZGlyL2EyaXhsaWJyYXJ5LmRhdGF+JEFSICRBUl9GTEFHUyAkbGliICRsaWJvYmpzfiRSQU5MSUIgJGxpYn4oY2QgJG91dHB1dF9vYmpkaXIgJiYgYTJpeGxpYnJhcnkgLTMyKScKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKKyAgICBic2RpW1s0NV1dKikKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9LXJkeW5hbWljCisgICAgICA7OworCisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisgICAgICBsaWJleHQ9bGliCisgICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKyAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGAkRUNITyAiWCRkZXBsaWJzIiB8ICRYc2VkIC1lICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisgICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisgICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKyAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKyAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworICAgICAgOzsKKworICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKKyAgICAgIDs7CisKKyAgICBkZ3V4KikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIGZyZWVic2QxKikKKyAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICAjIEZyZWVCU0QgMi4yLlswMTJdIGFsbG93cyB1cyB0byBpbmNsdWRlIGMrK3J0MC5vIHRvIGdldCBDKysgY29uc3RydWN0b3IKKyAgICAjIHN1cHBvcnQuICBGdXR1cmUgdmVyc2lvbnMgZG8gdGhpcyBhdXRvbWF0aWNhbGx5LCBidXQgYW4gZXhwbGljaXQgYysrcnQwLm8KKyAgICAjIGRvZXMgbm90IGJyZWFrIGFueXRoaW5nLCBhbmQgaGVscHMgc2lnbmlmaWNhbnRseSAoYXQgdGhlIGNvc3Qgb2YgYSBsaXR0bGUKKyAgICAjIGV4dHJhIHNwYWNlKS4KKyAgICBmcmVlYnNkMi4yKikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgL3Vzci9saWIvYysrcnQwLm8nCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgIyBVbmZvcnR1bmF0ZWx5LCBvbGRlciB2ZXJzaW9ucyBvZiBGcmVlQlNEIDIgZG8gbm90IGhhdmUgdGhpcyBmZWF0dXJlLgorICAgIGZyZWVic2QyKikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBocHV4OSopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICBlbHNlCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKworICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKyAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworICAgICAgOzsKKworICAgIGhwdXgxMCopCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAtYSAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQsICQxKT0nK2IgJGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisJIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgaHB1eDExKikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzIC1hICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwljYXNlICRob3N0X2NwdSBpbgorCWhwcGEqNjQqKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCWlhNjQqKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCSopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgOzsKKwllc2FjCisgICAgICBlbHNlCisJY2FzZSAkaG9zdF9jcHUgaW4KKwlocHBhKjY0KikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJaWE2NCopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworCSopCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJZXNhYworICAgICAgZmkKKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwljYXNlICRob3N0X2NwdSBpbgorCWhwcGEqNjQqfGlhNjQqKQorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwkgIDs7CisJKikKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKworCSAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisJICA7OworCWVzYWMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCisgICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKyAgICAgICAgQUNfTElOS19JRkVMU0UoaW50IGZvbyh2b2lkKSB7fSwKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICAgKQorICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT0nbm8nCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorICAgICAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKyAgICAgIDs7CisKKyAgICBuZXRic2QqKQorICAgICAgaWYgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fID4vZGV2L251bGw7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgIyBhLm91dAorICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycgICAgICAjIEVMRgorICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIDs7CisKKyAgICBuZXdzb3M2KQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgICpudG8qIHwgKnFueCopCisgICAgICA7OworCisgICAgb3BlbmJzZCopCisgICAgICBpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgorCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisJX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCWlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisJZWxzZQorCSAgY2FzZSAkaG9zdF9vcyBpbgorCSAgIG9wZW5ic2RbWzAxXV0uKiB8IG9wZW5ic2QyLltbMC03XV0gfCBvcGVuYnNkMi5bWzAtN11dLiopCisJICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKwkgICAgIDs7CisJICAgKikKKwkgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJworCSAgICAgOzsKKwkgIGVzYWMKKwlmaQorICAgICAgZWxzZQorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgIGZpCisgICAgICA7OworCisgICAgb3MyKikKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gREFUQSA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+JEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIDs7CisKKyAgICBvc2YzKikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICA7OworCisgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KKwkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyIgfCAkWHNlZGAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKworCSMgQm90aCBjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKKyAgICAgIDs7CisKKyAgICBzb2xhcmlzKikKKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC16IGRlZnMnCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCXdsYXJjPScke3dsfScKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgIGVsc2UKKwljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKwkqIkNvbXBpbGVycyA1LjAiKikKKwkgIHdsYXJjPScnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CisJICAkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kUk0gJGxpYi5leHAnCisJICA7OworCSopCisJICB3bGFyYz0nJHt3bH0nCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKwkgICRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1NICRsaWIuZXhwIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCSAgOzsKKwllc2FjCisgICAgICBmaQorICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OworICAgICAgKikKKwkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAorCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCBgJHdsJywKKwkjIGJ1dCBpcyBjYXJlZnVsIGVub3VnaCBub3QgdG8gcmVvcmRlci4KKwkjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQorCWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR7d2x9LXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKKwllbHNlCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy16IGFsbGV4dHJhY3QkY29udmVuaWVuY2UgLXogZGVmYXVsdGV4dHJhY3QnCisJZmkKKwk7OworICAgICAgZXNhYworICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICA7OworCisgICAgc3Vub3M0KikKKyAgICAgIGlmIHRlc3QgIngkaG9zdF92ZW5kb3IiID0geHNlcXVlbnQ7IHRoZW4KKwkjIFVzZSAkQ0MgdG8gbGluayB1bmRlciBzZXF1ZW50LCBiZWNhdXNlIGl0IHRocm93cyBpbiBzb21lIGV4dHJhIC5vCisJIyBmaWxlcyB0aGF0IG1ha2UgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zIHdvcmsuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWFzc2VydCBwdXJlLXRleHQgLUJzdGF0aWMgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgIHN5c3Y0KQorICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KKwlzbmkpCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KKwk7OworCXNpZW1lbnMpCisJICAjIyBMRCBpcyBsZCBpdCBtYWtlcyBhIFBMQU1MSUIKKwkgICMjIENDIGp1c3QgbWFrZXMgYSBHcm9zc01vZHVsZS4KKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKHJlbG9hZF9jbWRzLCAkMSk9JyRDQyAtciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICAgICAgICA7OworCW1vdG9yb2xhKQorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICA7OworCisgICAgc3lzdjQuMyopCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nLUJleHBvcnQnCisgICAgICA7OworCisgICAgc3lzdjQqTVAqKQorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCXJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICisJaGFyZGNvZGVfcnVucGF0aF92YXI9eWVzCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgICAgIGZpCisgICAgICA7OworCisgICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuW1swMV1dLltbMTBdXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bWzAyNF1dKikKKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJworCisgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgZWxzZQorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBmaQorICAgICAgOzsKKworICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCisgICAgICAjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorICAgICAgIyBsaW5rIHdpdGggLWxjLCBhbmQgdGhhdCB3b3VsZCBjYXVzZSBhbnkgc3ltYm9scyB1c2VkIGZyb20gbGliYyB0bworICAgICAgIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCisgICAgICAjIGV2ZXIgbGluayBjb3JyZWN0bHkuICBJZiB3ZSdyZSBub3QgdXNpbmcgR05VIGxkIHdlIHVzZSAteiB0ZXh0CisgICAgICAjIHRob3VnaCwgd2hpY2ggZG9lcyBjYXRjaCBzb21lIGJhZCBzeW1ib2xzIGJ1dCBpc24ndCBhcyBoZWF2eS1oYW5kZWQKKyAgICAgICMgYXMgLXogZGVmcy4KKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LG5vZGVmcycKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SLCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKKyAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tQmV4cG9ydCcKKyAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKKworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGVsc2UKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgZmkKKyAgICAgIDs7CisKKyAgICB1dHM0KikKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworICAgICAgOzsKKworICAgICopCisgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICA7OworICAgIGVzYWMKKworICAgIGlmIHRlc3QgeCRob3N0X3ZlbmRvciA9IHhzbmk7IHRoZW4KKyAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKKwlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1CbGFyZ2VkeW5zeW0nCisJOzsKKyAgICAgIGVzYWMKKyAgICBmaQorICBmaQorXSkKK0FDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpXSkKK3Rlc3QgIiRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KKworX0xUX1RBR1ZBUih3aXRoX2dudV9sZCwgJDEpPSR3aXRoX2dudV9sZAorCitfTFRfREVDTChbXSwgW2xpYmV4dF0sIFswXSwgW09sZCBhcmNoaXZlIHN1ZmZpeCAobm9ybWFsbHkgImEiKV0pZG5sCitfTFRfREVDTChbXSwgW3NocmV4dF9jbWRzXSwgWzFdLCBbU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiLnNvIildKWRubAorX0xUX0RFQ0woW10sIFtleHRyYWN0X2V4cHN5bXNfY21kc10sIFsyXSwKKyAgICBbVGhlIGNvbW1hbmRzIHRvIGV4dHJhY3QgdGhlIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gYSBzaGFyZWQgYXJjaGl2ZV0pCisKKyMKKyMgRG8gd2UgbmVlZCB0byBleHBsaWNpdGx5IGxpbmsgbGliYz8KKyMKK2Nhc2UgIngkX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpIiBpbgoreHx4eWVzKQorICAjIEFzc3VtZSAtbGMgc2hvdWxkIGJlIGFkZGVkCisgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKworICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICBjYXNlICRfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIGluCisgICAgKid+JyopCisgICAgICAjIEZJWE1FOiB3ZSBtYXkgaGF2ZSB0byBkZWFsIHdpdGggbXVsdGktY29tbWFuZCBzZXF1ZW5jZXMuCisgICAgICA7OworICAgICckQ0MgJyopCisgICAgICAjIFRlc3Qgd2hldGhlciB0aGUgY29tcGlsZXIgaW1wbGljaXRseSBsaW5rcyB3aXRoIC1sYyBzaW5jZSBvbiBzb21lCisgICAgICAjIHN5c3RlbXMsIC1sZ2NjIGhhcyB0byBjb21lIGJlZm9yZSAtbGMuIElmIGdjYyBhbHJlYWR5IHBhc3NlcyAtbGMKKyAgICAgICMgdG8gbGQsIGRvbid0IGFkZCAtbGMgYmVmb3JlIC1sZ2NjLgorICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIC1sYyBzaG91bGQgYmUgZXhwbGljaXRseSBsaW5rZWQgaW5dKQorICAgICAgJFJNIGNvbmZ0ZXN0KgorICAgICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0CisKKyAgICAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpIDI+Y29uZnRlc3QuZXJyOyB0aGVuCisgICAgICAgIHNvbmFtZT1jb25mdGVzdAorICAgICAgICBsaWI9Y29uZnRlc3QKKyAgICAgICAgbGlib2Jqcz1jb25mdGVzdC4kYWNfb2JqZXh0CisgICAgICAgIGRlcGxpYnM9CisgICAgICAgIHdsPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKQorCXBpY19mbGFnPSRfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKKyAgICAgICAgY29tcGlsZXJfZmxhZ3M9LXYKKyAgICAgICAgbGlua2VyX2ZsYWdzPS12CisgICAgICAgIHZlcnN0cmluZz0KKyAgICAgICAgb3V0cHV0X29iamRpcj0uCisgICAgICAgIGxpYm5hbWU9Y29uZnRlc3QKKyAgICAgICAgbHRfc2F2ZV9hbGxvd191bmRlZmluZWRfZmxhZz0kX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpCisgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KKyAgICAgICAgaWYgQUNfVFJZX0VWQUwoX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKSAyXD5cJjEgXHwgJEdSRVAgXCIgLWxjIFwiIFw+L2Rldi9udWxsIDJcPlwmMSkKKyAgICAgICAgdGhlbgorCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisgICAgICAgIGVsc2UKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKKyAgICAgICAgZmkKKyAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSRsdF9zYXZlX2FsbG93X3VuZGVmaW5lZF9mbGFnCisgICAgICBlbHNlCisgICAgICAgIGNhdCBjb25mdGVzdC5lcnIgMT4mNQorICAgICAgZmkKKyAgICAgICRSTSBjb25mdGVzdCoKKyAgICAgIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSldKQorICAgICAgOzsKKyAgICBlc2FjCisgIGZpCisgIDs7Citlc2FjCisKK19MVF9UQUdERUNMKFtidWlsZF9saWJ0b29sX25lZWRfbGNdLCBbYXJjaGl2ZV9jbWRzX25lZWRfbGNdLCBbMF0sCisgICAgW1doZXRoZXIgb3Igbm90IHRvIGFkZCAtbGMgZm9yIGJ1aWxkaW5nIHNoYXJlZCBsaWJyYXJpZXNdKQorX0xUX1RBR0RFQ0woW2FsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lc10sCisgICAgW2VuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNdLCBbMF0sCisgICAgW1doZXRoZXIgb3Igbm90IHRvIGRpc2FsbG93IHNoYXJlZCBsaWJzIHdoZW4gcnVudGltZSBsaWJzIGFyZSBzdGF0aWNdKQorX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfZHluYW1pY19mbGFnX3NwZWNdLCBbMV0sCisgICAgW0NvbXBpbGVyIGZsYWcgdG8gYWxsb3cgcmVmbGV4aXZlIGRsb3BlbnNdKQorX0xUX1RBR0RFQ0woW10sIFt3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY10sIFsxXSwKKyAgICBbQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSBzaGFyZWQgb2JqZWN0cyBkaXJlY3RseSBmcm9tIGFyY2hpdmVzXSkKK19MVF9UQUdERUNMKFtdLCBbY29tcGlsZXJfbmVlZHNfb2JqZWN0XSwgWzFdLAorICAgIFtXaGV0aGVyIHRoZSBjb21waWxlciBjb3BlcyB3aXRoIHBhc3Npbmcgbm8gb2JqZWN0cyBkaXJlY3RseV0pCitfTFRfVEFHREVDTChbXSwgW29sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHNdLCBbMl0sCisgICAgW0NyZWF0ZSBhbiBvbGQtc3R5bGUgYXJjaGl2ZSBmcm9tIGEgc2hhcmVkIGFyY2hpdmVdKQorX0xUX1RBR0RFQ0woW10sIFtvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kc10sIFsyXSwKKyAgICBbQ3JlYXRlIGEgdGVtcG9yYXJ5IG9sZC1zdHlsZSBhcmNoaXZlIHRvIGxpbmsgaW5zdGVhZCBvZiBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9UQUdERUNMKFtdLCBbYXJjaGl2ZV9jbWRzXSwgWzJdLCBbQ29tbWFuZHMgdXNlZCB0byBidWlsZCBhIHNoYXJlZCBhcmNoaXZlXSkKK19MVF9UQUdERUNMKFtdLCBbYXJjaGl2ZV9leHBzeW1fY21kc10sIFsyXSkKK19MVF9UQUdERUNMKFtdLCBbbW9kdWxlX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIHVzZWQgdG8gYnVpbGQgYSBsb2FkYWJsZSBtb2R1bGUgaWYgZGlmZmVyZW50IGZyb20gYnVpbGRpbmcKKyAgICBhIHNoYXJlZCBhcmNoaXZlLl0pCitfTFRfVEFHREVDTChbXSwgW21vZHVsZV9leHBzeW1fY21kc10sIFsyXSkKK19MVF9UQUdERUNMKFtdLCBbd2l0aF9nbnVfbGRdLCBbMV0sCisgICAgW1doZXRoZXIgd2UgYXJlIGJ1aWxkaW5nIHdpdGggR05VIGxkIG9yIG5vdF0pCitfTFRfVEFHREVDTChbXSwgW2FsbG93X3VuZGVmaW5lZF9mbGFnXSwgWzFdLAorICAgIFtGbGFnIHRoYXQgYWxsb3dzIHNoYXJlZCBsaWJyYXJpZXMgd2l0aCB1bmRlZmluZWQgc3ltYm9scyB0byBiZSBidWlsdF0pCitfTFRfVEFHREVDTChbXSwgW25vX3VuZGVmaW5lZF9mbGFnXSwgWzFdLAorICAgIFtGbGFnIHRoYXQgZW5mb3JjZXMgbm8gdW5kZWZpbmVkIHN5bWJvbHNdKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXSwgWzFdLAorICAgIFtGbGFnIHRvIGhhcmRjb2RlICRsaWJkaXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KKyAgICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdKQorX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXSwgWzFdLAorICAgIFtbSWYgbGQgaXMgdXNlZCB3aGVuIGxpbmtpbmcsIGZsYWcgdG8gaGFyZGNvZGUgJGxpYmRpciBpbnRvIGEgYmluYXJ5CisgICAgZHVyaW5nIGxpbmtpbmcuICBUaGlzIG11c3Qgd29yayBldmVuIGlmICRsaWJkaXIgZG9lcyBub3QgZXhpc3RdXSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl0sIFsxXSwKKyAgICBbV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudF0pCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2RpcmVjdF0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyAgICBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeV0pCitfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZV0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyAgICBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeSBhbmQgdGhlIHJlc3VsdGluZyBsaWJyYXJ5IGRlcGVuZGVuY3kgaXMKKyAgICAiYWJzb2x1dGUiLCBpLmUgaW1wb3NzaWJsZSB0byBjaGFuZ2UgYnkgc2V0dGluZyAke3NobGlicGF0aF92YXJ9IGlmIHRoZQorICAgIGxpYnJhcnkgaXMgcmVsb2NhdGVkXSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbWludXNfTF0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIKKyAgICBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5XSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl0sIFswXSwKKyAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIFNITElCUEFUSF9WQVI9RElSIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIKKyAgICBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5XSkKK19MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfYXV0b21hdGljXSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgYnVpbGRpbmcgYSBzaGFyZWQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGhhcmRjb2RlcyBESVIKKyAgICBpbnRvIHRoZSBsaWJyYXJ5IGFuZCBhbGwgc3Vic2VxdWVudCBsaWJyYXJpZXMgYW5kIGV4ZWN1dGFibGVzIGxpbmtlZAorICAgIGFnYWluc3QgaXRdKQorX0xUX1RBR0RFQ0woW10sIFtpbmhlcml0X3JwYXRoXSwgWzBdLAorICAgIFtTZXQgdG8geWVzIGlmIGxpbmtlciBhZGRzIHJ1bnRpbWUgcGF0aHMgb2YgZGVwZW5kZW50IGxpYnJhcmllcworICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKK19MVF9UQUdERUNMKFtdLCBbbGlua19hbGxfZGVwbGlic10sIFswXSwKKyAgICBbV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzXSkKK19MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKKyAgICBbRml4IHRoZSBzaGVsbCB2YXJpYWJsZSAkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyXSkKK19MVF9UQUdERUNMKFtdLCBbYWx3YXlzX2V4cG9ydF9zeW1ib2xzXSwgWzBdLAorICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQorX0xUX1RBR0RFQ0woW10sIFtleHBvcnRfc3ltYm9sc19jbWRzXSwgWzJdLAorICAgIFtUaGUgY29tbWFuZHMgdG8gbGlzdCBleHBvcnRlZCBzeW1ib2xzXSkKK19MVF9UQUdERUNMKFtdLCBbZXhjbHVkZV9leHBzeW1zXSwgWzFdLAorICAgIFtTeW1ib2xzIHRoYXQgc2hvdWxkIG5vdCBiZSBsaXN0ZWQgaW4gdGhlIHByZWxvYWRlZCBzeW1ib2xzXSkKK19MVF9UQUdERUNMKFtdLCBbaW5jbHVkZV9leHBzeW1zXSwgWzFdLAorICAgIFtTeW1ib2xzIHRoYXQgbXVzdCBhbHdheXMgYmUgZXhwb3J0ZWRdKQorX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCisgICAgW0NvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzXSkKK19MVF9UQUdERUNMKFtdLCBbZmlsZV9saXN0X3NwZWNdLCBbMV0sCisgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCitkbmwgRklYTUU6IE5vdCB5ZXQgaW1wbGVtZW50ZWQKK2RubCBfTFRfVEFHREVDTChbXSwgW3RocmVhZF9zYWZlX2ZsYWdfc3BlY10sIFsxXSwKK2RubCAgICBbQ29tcGlsZXIgZmxhZyB0byBnZW5lcmF0ZSB0aHJlYWQgc2FmZSBvYmplY3RzXSkKK10pIyBfTFRfTElOS0VSX1NITElCUworCisKKyMgX0xUX0xBTkdfQ19DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQyBjb21waWxlciBhcmUgc3VpdGFibHkKKyMgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRyB0byB3cml0ZQorIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfQ19DT05GSUddLAorW200X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKK2x0X3NhdmVfQ0M9IiRDQyIKK0FDX0xBTkdfUFVTSChDKQorCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgQyB0ZXN0IHNvdXJjZXMuCithY19leHQ9YworCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgQyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCitsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9ImludCBzb21lX3ZhcmlhYmxlID0gMDsiCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKCl7cmV0dXJuKDApO30nCisKK19MVF9UQUdfQ09NUElMRVIKKyMgU2F2ZSB0aGUgZGVmYXVsdCBjb21waWxlciwgc2luY2UgaXQgZ2V0cyBvdmVyd3JpdHRlbiB3aGVuIHRoZSBvdGhlcgorIyB0YWdzIGFyZSBiZWluZyB0ZXN0ZWQsIGFuZCBfTFRfVEFHVkFSKGNvbXBpbGVyLCBbXSkgaXMgYSBOT1AuCitjb21waWxlcl9ERUZBVUxUPSRDQworCisjIHNhdmUgd2FybmluZ3MvYm9pbGVycGxhdGUgb2Ygc2ltcGxlIHRlc3QgY29kZQorX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCitfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyMjIENBVkVBVCBFTVBUT1I6CisjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQorIyMgdGhlIHJ1bm5pbmcgb3JkZXIgb3Igb3RoZXJ3aXNlIG1vdmUgdGhlbSBhcm91bmQgdW5sZXNzIHlvdSBrbm93IGV4YWN0bHkKKyMjIHdoYXQgeW91IGFyZSBkb2luZy4uLgoraWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICBfTFRfQ09NUElMRVJfTk9fUlRUSSgkMSkKKyAgX0xUX0NPTVBJTEVSX1BJQygkMSkKKyAgX0xUX0NPTVBJTEVSX0NfTygkMSkKKyAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgIF9MVF9MSU5LRVJfU0hMSUJTKCQxKQorICBfTFRfU1lTX0RZTkFNSUNfTElOS0VSKCQxKQorICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisgIExUX1NZU19ETE9QRU5fU0VMRgorICBfTFRfQ01EX1NUUklQTElCCisKKyAgIyBSZXBvcnQgd2hpY2ggbGlicmFyeSB0eXBlcyB3aWxsIGFjdHVhbGx5IGJlIGJ1aWx0CisgIEFDX01TR19DSEVDS0lORyhbaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKKyAgQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQorCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKKyAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisKKyAgIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCisgICMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KKyAgY2FzZSAkaG9zdF9vcyBpbgorICBhaXgzKikKKyAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgICAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCisgICAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCisgICAgZmkKKyAgICA7OworCisgIGFpeFtbNC05XV0qKQorICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KKyAgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgZmkKKyAgICA7OworICBlc2FjCisgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkXSkKKworICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc3RhdGljIGxpYnJhcmllc10pCisgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgorICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKKyAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQorCisgIF9MVF9DT05GSUcoJDEpCitmaQorQUNfTEFOR19QT1AKK0NDPSIkbHRfc2F2ZV9DQyIKK10pIyBfTFRfTEFOR19DX0NPTkZJRworCisKKyMgX0xUX1BST0dfQ1hYCisjIC0tLS0tLS0tLS0tLQorIyBTaW5jZSBBQ19QUk9HX0NYWCBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyBnKysgaWYgdGhlcmUgaXMgbm8gYysrCisjIGNvbXBpbGVyLCB3ZSBoYXZlIG91ciBvd24gdmVyc2lvbiBoZXJlLgorbTRfZGVmdW4oW19MVF9QUk9HX0NYWF0sCitbCitwdXNoZGVmKFtBQ19NU0dfRVJST1JdLCBbX2x0X2NhdWdodF9DWFhfZXJyb3I9eWVzXSkKK0FDX1BST0dfQ1hYCitpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3QgIlgkQ1hYIiAhPSAiWG5vIiAmJgorICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAorICAgICh0ZXN0ICJYJENYWCIgIT0gIlhnKysiKSkpIDsgdGhlbgorICBBQ19QUk9HX0NYWENQUAorZWxzZQorICBfbHRfY2F1Z2h0X0NYWF9lcnJvcj15ZXMKK2ZpCitwb3BkZWYoW0FDX01TR19FUlJPUl0pCitdKSMgX0xUX1BST0dfQ1hYCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbX0xUX1BST0dfQ1hYXSwgW10pCisKKworIyBfTFRfTEFOR19DWFhfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgQysrIGNvbXBpbGVyIGFyZSBzdWl0YWJseQorIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCisjIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtfTFRfUFJPR19DWFhdKWRubAorbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCittNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCisKK0FDX0xBTkdfUFVTSChDKyspCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KK19MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KK19MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KK19MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPQorX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT1ubworX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAorX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubworX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9bm8KK19MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCitfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEMrKyB0ZXN0IHNvdXJjZXMuCithY19leHQ9Y3BwCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBDKysgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIE5vIHNlbnNlIGluIHJ1bm5pbmcgYWxsIHRoZXNlIHRlc3RzIGlmIHdlIGFscmVhZHkgZGV0ZXJtaW5lZCB0aGF0CisjIHRoZSBDWFggY29tcGlsZXIgaXNuJ3Qgd29ya2luZy4gIFNvbWUgdmFyaWFibGVzIChsaWtlIGVuYWJsZV9zaGFyZWQpCisjIGFyZSBjdXJyZW50bHkgYXNzdW1lZCB0byBhcHBseSB0byBhbGwgY29tcGlsZXJzIG9uIHRoaXMgcGxhdGZvcm0sCisjIGFuZCB3aWxsIGJlIGNvcnJ1cHRlZCBieSBzZXR0aW5nIHRoZW0gYmFzZWQgb24gYSBub24td29ya2luZyBjb21waWxlci4KK2lmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCisgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iaW50IHNvbWVfdmFyaWFibGUgPSAwOyIKKworICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworICBsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J2ludCBtYWluKGludCwgY2hhciAqW1tdXSkgeyByZXR1cm4oMCk7IH0nCisKKyAgIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorICBfTFRfVEFHX0NPTVBJTEVSCisKKyAgIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKKyAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisgIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICBsdF9zYXZlX0NDPSRDQworICBsdF9zYXZlX0xEPSRMRAorICBsdF9zYXZlX0dDQz0kR0NDCisgIEdDQz0kR1hYCisgIGx0X3NhdmVfd2l0aF9nbnVfbGQ9JHdpdGhfZ251X2xkCisgIGx0X3NhdmVfcGF0aF9MRD0kbHRfY3ZfcGF0aF9MRAorICBpZiB0ZXN0IC1uICIke2x0X2N2X3Byb2dfZ251X2xkY3h4K3NldH0iOyB0aGVuCisgICAgbHRfY3ZfcHJvZ19nbnVfbGQ9JGx0X2N2X3Byb2dfZ251X2xkY3h4CisgIGVsc2UKKyAgICAkYXNfdW5zZXQgbHRfY3ZfcHJvZ19nbnVfbGQKKyAgZmkKKyAgaWYgdGVzdCAtbiAiJHtsdF9jdl9wYXRoX0xEQ1hYK3NldH0iOyB0aGVuCisgICAgbHRfY3ZfcGF0aF9MRD0kbHRfY3ZfcGF0aF9MRENYWAorICBlbHNlCisgICAgJGFzX3Vuc2V0IGx0X2N2X3BhdGhfTEQKKyAgZmkKKyAgdGVzdCAteiAiJHtMRENYWCtzZXR9IiB8fCBMRD0kTERDWFgKKyAgQ0M9JHtDWFgtImMrKyJ9CisgIGNvbXBpbGVyPSRDQworICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKKworICBpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgICAgIyBXZSBkb24ndCB3YW50IC1mbm8tZXhjZXB0aW9uIHdoZW4gY29tcGlsaW5nIEMrKyBjb2RlLCBzbyBzZXQgdGhlCisgICAgIyBub19idWlsdGluX2ZsYWcgc2VwYXJhdGVseQorICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9JyAtZm5vLWJ1aWx0aW4nCisgICAgZWxzZQorICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZywgJDEpPQorICAgIGZpCisKKyAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgICAgIyBTZXQgdXAgZGVmYXVsdCBHTlUgQysrIGNvbmZpZ3VyYXRpb24KKworICAgICAgTFRfUEFUSF9MRAorCisgICAgICAjIENoZWNrIGlmIEdOVSBDKysgdXNlcyBHTlUgbGQgYXMgdGhlIHVuZGVybHlpbmcgbGlua2VyLCBzaW5jZSB0aGUKKyAgICAgICMgYXJjaGl2aW5nIGNvbW1hbmRzIGJlbG93IGFzc3VtZSB0aGF0IEdOVSBsZCBpcyBiZWluZyB1c2VkLgorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCisgICAgICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CisgICAgICAgICMgWFhYIEkgdGhpbmsgd2xhcmMgY2FuIGJlIGVsaW1pbmF0ZWQgaW4gbHRjZi1jeHgsIGJ1dCBJIG5lZWQgdG8KKyAgICAgICAgIyAgICAgaW52ZXN0aWdhdGUgaXQgYSBsaXR0bGUgYml0IG1vcmUuIChNTSkKKyAgICAgICAgd2xhcmM9JyR7d2x9JworCisgICAgICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KKyAgICAgICAgaWYgZXZhbCAiYCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkYCAtLWhlbHAgMj4mMSIgfAorCSAgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworICAgICAgICBlbHNlCisgICAgICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorICAgICAgICBmaQorICAgICAgZWxzZQorICAgICAgICB3aXRoX2dudV9sZD1ubworICAgICAgICB3bGFyYz0KKworICAgICAgICAjIEEgZ2VuZXJpYyBhbmQgdmVyeSBzaW1wbGUgZGVmYXVsdCBzaGFyZWQgbGlicmFyeSBjcmVhdGlvbgorICAgICAgICAjIGNvbW1hbmQgZm9yIEdOVSBDKysgZm9yIHRoZSBjYXNlIHdoZXJlIGl0IHVzZXMgdGhlIG5hdGl2ZQorICAgICAgICAjIGxpbmtlciwgaW5zdGVhZCBvZiBHTlUgbGQuICBJZiBwb3NzaWJsZSwgdGhpcyBzZXR0aW5nIHNob3VsZAorICAgICAgICAjIG92ZXJyaWRkZW4gdG8gdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIG5hdGl2ZSBsaW5rZXIgZmVhdHVyZXMgb24KKyAgICAgICAgIyB0aGUgcGxhdGZvcm0gaXQgaXMgYmVpbmcgdXNlZCBvbi4KKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJworICAgICAgZmkKKworICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCisgICAgZWxzZQorICAgICAgR1hYPW5vCisgICAgICB3aXRoX2dudV9sZD1ubworICAgICAgd2xhcmM9CisgICAgZmkKKworICAgICMgUE9SVE1FOiBmaWxsIGluIGEgZGVzY3JpcHRpb24gb2YgeW91ciBzeXN0ZW0ncyBDKysgbGluayBjaGFyYWN0ZXJpc3RpY3MKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKyAgICBjYXNlICRob3N0X29zIGluCisgICAgICBhaXgzKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKyAgICAgIGFpeFtbNC05XV0qKQorICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKKyAgICAgICAgICAjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KKyAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisgICAgICAgICAgZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKKyAgICAgICAgICBub19lbnRyeV9mbGFnPSIiCisgICAgICAgIGVsc2UKKyAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCisKKyAgICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKKyAgICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKKyAgICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bWzIzXV18YWl4NC5bWzIzXV0uKnxhaXhbWzUtOV1dKikKKwkgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCisJICAgICAgY2FzZSAkbGRfZmxhZyBpbgorCSAgICAgICotYnJ0bCopCisJICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICAgICAgYnJlYWsKKwkgICAgICAgIDs7CisJICAgICAgZXNhYworCSAgICBkb25lCisJICAgIDs7CisgICAgICAgICAgZXNhYworCisgICAgICAgICAgZXhwX3N5bV9mbGFnPSctYmV4cG9ydCcKKyAgICAgICAgICBub19lbnRyeV9mbGFnPSctYm5vZW50cnknCisgICAgICAgIGZpCisKKyAgICAgICAgIyBXaGVuIGxhcmdlIGV4ZWN1dGFibGVzIG9yIHNoYXJlZCBvYmplY3RzIGFyZSBidWlsdCwgQUlYIGxkIGNhbgorICAgICAgICAjIGhhdmUgcHJvYmxlbXMgY3JlYXRpbmcgdGhlIHRhYmxlIG9mIGNvbnRlbnRzLiAgSWYgbGlua2luZyBhIGxpYnJhcnkKKyAgICAgICAgIyBvciBwcm9ncmFtIHJlc3VsdHMgaW4gImVycm9yIFRPQyBvdmVyZmxvdyIgYWRkIC1tbWluaW1hbC10b2MgdG8KKyAgICAgICAgIyBDWFhGTEFHUy9DRkxBR1MgZm9yIGcrKy9nY2MuICBJbiB0aGUgY2FzZXMgd2hlcmUgdGhhdCBpcyBub3QKKyAgICAgICAgIyBlbm91Z2ggdG8gZml4IHRoZSBwcm9ibGVtLCBhZGQgLVdsLC1iYmlndG9jIHRvIExERkxBR1MuCisKKyAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0nOicKKyAgICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCisgICAgICAgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nJHt3bH0tZiwnCisKKyAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuW1swMTJdXXxhaXg0LltbMDEyXV0uKikKKyAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKKyAgICAgICAgICAjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKKwkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmCisJICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8ICRHUkVQIHJlc29sdmVfbGliX25hbWUgPi9kZXYvbnVsbAorCSAgdGhlbgorCSAgICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKKwkgICAgOgorCSAgZWxzZQorCSAgICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9dW5zdXBwb3J0ZWQKKwkgICAgIyBJdCBmYWlscyB0byBmaW5kIHVuaW5zdGFsbGVkIGxpYnJhcmllcyB3aGVuIHRoZSB1bmluc3RhbGxlZAorCSAgICAjIHBhdGggaXMgbm90IGxpc3RlZCBpbiB0aGUgbGlicGF0aC4gIFNldHRpbmcgaGFyZGNvZGVfbWludXNfTAorCSAgICAjIHRvIHVuc3VwcG9ydGVkIGZvcmNlcyByZWxpbmtpbmcKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPQorCSAgZmkKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCisJICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJICBmaQorICAgICAgICBlbHNlCisgICAgICAgICAgIyBub3QgdXNpbmcgZ2NjCisgICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKwkgICMgVmlzdWFsQWdlIEMrKywgVmVyc2lvbiA1LjUgZm9yIEFJWCA1TCBmb3IgSUEtNjQsIEJldGEgMyBSZWxlYXNlCisJICAjIGNob2tlcyBvbiAtV2wsLUcuIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBjb3JyZWN0OgorCSAgc2hhcmVkX2ZsYWc9Jy1HJworICAgICAgICAgIGVsc2UKKwkgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJICAgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LUcnCisJICAgIGVsc2UKKwkgICAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgICBmaQorICAgICAgICAgIGZpCisgICAgICAgIGZpCisKKyAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmV4cGFsbCcKKyAgICAgICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCisgICAgICAgICMgdW5kZXJzY29yZSAoXyksIHNvIGl0IGlzIGJldHRlciB0byBnZW5lcmF0ZSBhIGxpc3Qgb2Ygc3ltYm9scyB0bworCSMgZXhwb3J0LgorICAgICAgICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPXllcworICAgICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKKyAgICAgICAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisgICAgICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSctYmVyb2snCisgICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuIGVtcHR5CisgICAgICAgICAgIyBleGVjdXRhYmxlLgorICAgICAgICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gJEVDSE8gIlgke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiB8ICRYc2VkOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgIGVsc2UKKyAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCisJICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKyAgICAgICAgICBlbHNlCisJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCisJICAgIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCisJICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJworCSAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJvaycKKwkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9eWVzCisJICAgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZAorCSAgICAjIGxpYnJhcmllcy4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICA7OworCisgICAgICBiZW9zKikKKwlpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKwkgICMgSm9zZXBoIEJlY2tlbmJhY2ggPGpyYjNAYmVzdC5jb20+IHNheXMgc29tZSByZWxlYXNlcyBvZiBnY2MKKwkgICMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwllbHNlCisJICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJZmkKKwk7OworCisgICAgICBjaG9ydXMqKQorICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgICopCisJICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKyAgICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubworICAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKworICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKyAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgZWxzZQorCSAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKwkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICBmaX4KKyAgICAgICAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisgICAgICAgIGVsc2UKKyAgICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKKwk7OworCisgICAgICBkZ3V4KikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBlYysrKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICBnaGN4KikKKwkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICAqKQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisKKyAgICAgIGZyZWVic2RbWzEyXV0qKQorICAgICAgICAjIEMrKyBzaGFyZWQgbGlicmFyaWVzIHJlcG9ydGVkIHRvIGJlIGZhaXJseSBicm9rZW4gYmVmb3JlCisJIyBzd2l0Y2ggdG8gRUxGCisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKworICAgICAgZnJlZWJzZC1lbGYqKQorICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICAgICAgOzsKKworICAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorICAgICAgICAjIEZyZWVCU0QgMyBhbmQgbGF0ZXIgdXNlIEdOVSBDKysgYW5kIEdOVSBsZCB3aXRoIHN0YW5kYXJkIEVMRgorICAgICAgICAjIGNvbnZlbnRpb25zCisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9eWVzCisgICAgICAgIDs7CisKKyAgICAgIGdudSopCisgICAgICAgIDs7CisKKyAgICAgIGhwdXg5KikKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcyAjIE5vdCBpbiB0aGUgc2VhcmNoIFBBVEgsCisJCQkJICAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0CisJCQkJICAgICAgICAgICAgICMgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgICAgIDs7CisgICAgICAgICAgYUNDKikKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtYiAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworICAgICAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisgICAgICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKyAgICAgICAgICAgICMKKyAgICAgICAgICAgICMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKyAgICAgICAgICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisgICAgICAgICAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisgICAgICAgICAgICAjIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkRUdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgJEVDSE8gIlgkbGlzdCIgfCAkWHNlZCcKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKikKKyAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgaHB1eDEwKnxocHV4MTEqKQorICAgICAgICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKyAgICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgICAgaHBwYSo2NCp8aWE2NCopCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorCSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUUnCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICBmaQorICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgIGhwcGEqNjQqfGlhNjQqKQorICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKyAgICAgICAgICAgIDs7CisgICAgICAgICAgKikKKyAgICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisgICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworICAgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzICMgTm90IGluIHRoZSBzZWFyY2ggUEFUSCwKKwkJCQkJICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQKKwkJCQkJICAgICAgICAgIyBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKworICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIENDKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgICBhQ0MqKQorCSAgICBjYXNlICRob3N0X2NwdSBpbgorCSAgICAgIGhwcGEqNjQqKQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgOzsKKwkgICAgICBpYTY0KikKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIDs7CisJICAgICAgKikKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgOzsKKwkgICAgZXNhYworCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgIworCSAgICAjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKwkgICAgIyBkZXBlbmRlbmNpZXMuCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICA7OworICAgICAgICAgICopCisJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisJICAgICAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgorCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KKwkgICAgICAgICAgaHBwYSo2NCopCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIDs7CisJICAgICAgICAgIGlhNjQqKQorCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICA7OworCSAgICAgICAgICAqKQorCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIDs7CisJICAgICAgICBlc2FjCisJICAgICAgZmkKKwkgICAgZWxzZQorCSAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgZmkKKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICBpbnRlcml4W1szLTldXSopCisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworCV9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwkjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCisJIyBJbnN0ZWFkLCBzaGFyZWQgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgYW4gaW1hZ2UgYmFzZSAoMHgxMDAwMDAwMCBieQorCSMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKKwkjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCisJIyAyNTYgS2lCLWFsaWduZWQgaW1hZ2UgYmFzZSBiZXR3ZWVuIDB4NTAwMDAwMDAgYW5kIDB4NkZGQzAwMDAgYXQgbGluaworCSMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisJOzsKKyAgICAgIGlyaXg1KiB8IGlyaXg2KikKKyAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisJICAgICMgU0dJIEMrKworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWC1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisKKwkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCisJICAgICMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcworCSAgICAjIG5lY2Vzc2FyeSB0byBtYWtlIHN1cmUgaW5zdGFudGlhdGVkIHRlbXBsYXRlcyBhcmUgaW5jbHVkZWQKKwkgICAgIyBpbiB0aGUgYXJjaGl2ZS4KKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYXIgLVdSLC11IC1vICRvbGRsaWIgJG9sZG9ianMnCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciIHwgJFhzZWRgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgZWxzZQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiWCR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgLW8gJGxpYicKKwkgICAgICBmaQorCSAgICBmaQorCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisgICAgICAgIF9MVF9UQUdWQVIoaW5oZXJpdF9ycGF0aCwgJDEpPXllcworICAgICAgICA7OworCisgICAgICBsaW51eCogfCBrKmJzZCotZ251KQorICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICAgIEtDQyopCisJICAgICMgS3VjayBhbmQgQXNzb2NpYXRlcywgSW5jLiAoS0FJKSBDKysgQ29tcGlsZXIKKworCSAgICAjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCisJICAgICMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKKwkgICAgIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHM7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KKwkgICAgIworCSAgICAjIFRoZXJlIGRvZXNuJ3QgYXBwZWFyIHRvIGJlIGEgd2F5IHRvIHByZXZlbnQgdGhpcyBjb21waWxlciBmcm9tCisJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCisJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKKwkgICAgIyBkZXBlbmRlbmNpZXMuCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKworCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKKwkgICAgIyAiQ0MgLUJzdGF0aWMiLCB3aGVyZSAiQ0MiIGlzIHRoZSBLQUkgQysrIGNvbXBpbGVyLgorCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1Cc3RhdGljIC1vICRvbGRsaWIgJG9sZG9ianMnCisJICAgIDs7CisJICBpY3BjKiB8IGVjcGMqICkKKwkgICAgIyBJbnRlbCBDKysKKwkgICAgd2l0aF9nbnVfbGQ9eWVzCisJICAgICMgdmVyc2lvbiA4LjAgYW5kIGFib3ZlIG9mIGljcGMgY2hva2Ugb24gbXVsdGlwbHkgZGVmaW5lZCBzeW1ib2xzCisJICAgICMgaWYgd2UgYWRkICRwcmVkZXBfb2JqZWN0cyBhbmQgJHBvc3RkZXBfb2JqZWN0cywgaG93ZXZlciA3LjEgYW5kCisJICAgICMgZWFybGllciBkbyBub3QgYWRkIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMuCisJICAgIGNhc2UgYCRDQyAtViAyPiYxYCBpbgorCSAgICAgICoiVmVyc2lvbiA3LiIqKQorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkJOzsKKwkgICAgICAqKSAgIyBWZXJzaW9uIDguMCBvciBuZXdlcgorCSAgICAgICAgdG1wX2lkeW49CisJICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorCQkgIGlhNjQqKSB0bXBfaWR5bj0nIC1pX2R5bmFtaWMnOzsKKwkJZXNhYworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQnIiR0bXBfaWR5biInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQnIiR0bXBfaWR5biInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCQk7OworCSAgICBlc2FjCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICA7OworICAgICAgICAgIHBnQ0MqIHwgcGdjcHAqKQorICAgICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBDKysgY29tcGlsZXIKKwkgICAgY2FzZSBgJENDIC1WYCBpbgorCSAgICAqcGdDQ1wgW1sxLTVdXSogfCAqcGdjcHBcIFtbMS01XV0qKQorCSAgICAgIF9MVF9UQUdWQVIocHJlbGlua19jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisJCXJtIC1yZiAkdHBsZGlyfgorCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+CisJCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgIicKKwkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKwkJcm0gLXJmICR0cGxkaXJ+CisJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CisJCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+CisJCSRSQU5MSUIgJG9sZGxpYicKKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgorCQlybSAtcmYgJHRwbGRpcn4KKwkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CisJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisJCXJtIC1yZiAkdHBsZGlyfgorCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICAgIDs7CisJICAgICopICMgVmVyc2lvbiA2IHdpbGwgdXNlIHdlYWsgc3ltYm9scworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICAgIDs7CisJICAgIGVzYWMKKworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXJwYXRoICR7d2x9JGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1keW5hbWljJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7ICRFQ0hPIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKyAgICAgICAgICAgIDs7CisJICBjeHgqKQorCSAgICAjIENvbXBhcSBDKysKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgIC1vICRsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMnCisKKwkgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CisKKwkgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KKwkgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICMKKwkgICAgIyBUaGVyZSBkb2Vzbid0IGFwcGVhciB0byBiZSBhIHdheSB0byBwcmV2ZW50IHRoaXMgY29tcGlsZXIgZnJvbQorCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQorCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CisJICAgICMgZGVwZW5kZW5jaWVzLgorCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyAkRUNITyAiWCRsaXN0IiB8ICRYc2VkJworCSAgICA7OworCSAgeGwqKQorCSAgICAjIElCTSBYTCA4LjAgb24gUFBDLCB3aXRoIEdOVSBsZAorCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJCWNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKwkJZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisJCSRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS12ZXJzaW9uLXNjcmlwdCAke3dsfSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworCSAgICBmaQorCSAgICA7OworCSAgKikKKwkgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCisJICAgICpTdW5cIEMqKQorCSAgICAgICMgU3VuIEMrKyA1LjkKKwkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scycKKwkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJworCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyAkRUNITyBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKKworCSAgICAgICMgTm90IHN1cmUgd2hldGhlciBzb21ldGhpbmcgYmFzZWQgb24KKwkgICAgICAjICRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxCisJICAgICAgIyB3b3VsZCBiZSBiZXR0ZXIuCisJICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J2VjaG8nCisKKwkgICAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKKwkgICAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKKwkgICAgICAjIG5lY2Vzc2FyeSB0byBtYWtlIHN1cmUgaW5zdGFudGlhdGVkIHRlbXBsYXRlcyBhcmUgaW5jbHVkZWQKKwkgICAgICAjIGluIHRoZSBhcmNoaXZlLgorCSAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLXhhciAtbyAkb2xkbGliICRvbGRvYmpzJworCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwllc2FjCisJOzsKKworICAgICAgbHlueG9zKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisKKyAgICAgIG04OGsqKQorICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKyAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCTs7CisKKyAgICAgIG12cyopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgY3h4KikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKwkgICopCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisJZXNhYworCTs7CisKKyAgICAgIG5ldGJzZCopCisgICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUJzaGFyZWFibGUgIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGxpbmtlcl9mbGFncycKKwkgIHdsYXJjPQorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubworCWZpCisJIyBXb3JrYXJvdW5kIHNvbWUgYnJva2VuIHByZS0xLjUgdG9vbGNoYWlucworCW91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIGNvbmZ0ZXN0LiRvYmpleHQgfCAkU0VEIC1lICJzOi1sZ2NjIC1sYyAtbGdjYzo6IicKKwk7OworCisgICAgICAqbnRvKiB8ICpxbngqKQorICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcworCTs7CisKKyAgICAgIG9wZW5ic2QyKikKKyAgICAgICAgIyBDKysgc2hhcmVkIGxpYnJhcmllcyBhcmUgZmFpcmx5IGJyb2tlbgorCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwk7OworCisgICAgICBvcGVuYnNkKikKKwlpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworCSAgZmkKKwkgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWVjaG8KKwllbHNlCisJICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJZmkKKwk7OworCisgICAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgS0NDKikKKwkgICAgIyBLdWNrIGFuZCBBc3NvY2lhdGVzLCBJbmMuIChLQUkpIEMrKyBDb21waWxlcgorCisJICAgICMgS0NDIHdpbGwgb25seSBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeSBpZiB0aGUgb3V0cHV0IGZpbGUKKwkgICAgIyBlbmRzIHdpdGggIi5zbyIgKG9yICIuc2wiIGZvciBIUC1VWCksIHNvIHJlbmFtZSB0aGUgbGlicmFyeQorCSAgICAjIHRvIGl0cyBwcm9wZXIgbmFtZSAod2l0aCB2ZXJzaW9uKSBhZnRlciBsaW5raW5nLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gIiRsaWIiIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKKworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSAgICAjIHRoZSBLQUkgQysrIGNvbXBpbGVyLgorCSAgICBjYXNlICRob3N0IGluCisJICAgICAgb3NmMyopIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLUJzdGF0aWMgLW8gJG9sZGxpYiAkb2xkb2JqcycgOzsKKwkgICAgICAqKSBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvbGRsaWIgJG9sZG9ianMnIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKyAgICAgICAgICBSQ0MqKQorCSAgICAjIFJhdGlvbmFsIEMrKyAyLjQuMQorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICAgIGN4eCopCisJICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgICBvc2YzKikKKwkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIlgke3dsfS1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nIiB8ICRYc2VkYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCQk7OworCSAgICAgICopCisJICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdmb3IgaSBpbiBgY2F0ICRleHBvcnRfc3ltYm9sc2A7IGRvIHByaW50ZiAiJXMgJXNcXG4iIC1leHBvcnRlZF9zeW1ib2wgIlwkaSIgPj4gJGxpYi5leHA7IGRvbmV+CisJICAgICAgICAgIGVjaG8gIi1oaWRkZW4iPj4gJGxpYi5leHB+CisJICAgICAgICAgICRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgJHt3bH0taW5wdXQgJHt3bH0kbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciIHwgJFhzZWRgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4KKwkgICAgICAgICAgJFJNICRsaWIuZXhwJworCSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJworCQk7OworCSAgICBlc2FjCisKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCisJICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgICAjCisJICAgICMgVGhlcmUgZG9lc24ndCBhcHBlYXIgdG8gYmUgYSB3YXkgdG8gcHJldmVudCB0aGlzIGNvbXBpbGVyIGZyb20KKwkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KKwkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQorCSAgICAjIGRlcGVuZGVuY2llcy4KKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWAkRUNITyAiWCR0ZW1wbGlzdCIgfCAkWHNlZCAtZSAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7ICRFQ0hPICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIDs7CisJICAqKQorCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKwkgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworCSAgICAgIGNhc2UgJGhvc3QgaW4KKwkgICAgICAgIG9zZjMqKQorCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICJYJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nIiB8ICRYc2VkYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCQkgIDs7CisJICAgICAgICAqKQorCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyIgfCAkWHNlZGAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkJICA7OworCSAgICAgIGVzYWMKKworCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgorCisJICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworCSAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgorCSAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSckQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJcLUwiJworCisJICAgIGVsc2UKKwkgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIGZpCisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgcHNvcyopCisgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICAgIDs7CisKKyAgICAgIHN1bm9zNCopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgQ0MqKQorCSAgICAjIFN1biBDKysgNC54CisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgICAgbGNjKikKKwkgICAgIyBMdWNpZAorCSAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworCSAgICA7OworICAgICAgICAgICopCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKworICAgICAgc29sYXJpcyopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgQ0MqKQorCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCQxKT15ZXMKKwkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXpkZWZzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAgLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCSAgICAgICRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisJICAgIGNhc2UgJGhvc3Rfb3MgaW4KKwkgICAgICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OworCSAgICAgICopCisJCSMgVGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGNvbWJpbmUgYW5kIHJlb3JkZXIgbGlua2VyIG9wdGlvbnMsCisJCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuCisJICAgICAgICAjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQorCQlfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9Jy16IGFsbGV4dHJhY3QkY29udmVuaWVuY2UgLXogZGVmYXVsdGV4dHJhY3QnCisJICAgICAgICA7OworCSAgICBlc2FjCisJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSdlY2hvJworCisJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZworCSAgICAjICJDQyAteGFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgU3VuIEMrKyBjb21waWxlci4gIFRoaXMgaXMKKwkgICAgIyBuZWNlc3NhcnkgdG8gbWFrZSBzdXJlIGluc3RhbnRpYXRlZCB0ZW1wbGF0ZXMgYXJlIGluY2x1ZGVkCisJICAgICMgaW4gdGhlIGFyY2hpdmUuCisJICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSckQ0MgLXhhciAtbyAkb2xkbGliICRvbGRvYmpzJworCSAgICA7OworICAgICAgICAgIGdjeCopCisJICAgICMgR3JlZW4gSGlsbHMgQysrIENvbXBpbGVyCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKworCSAgICAjIFRoZSBDKysgY29tcGlsZXIgbXVzdCBiZSB1c2VkIHRvIGNyZWF0ZSB0aGUgYXJjaGl2ZS4KKwkgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAkTERGTEFHUyAtYXJjaGl2ZSAtbyAkb2xkbGliICRvbGRvYmpzJworCSAgICA7OworICAgICAgICAgICopCisJICAgICMgR05VIEMrKyBjb21waWxlciB3aXRoIFNvbGFyaXMgbGlua2VyCisJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LXogJHt3bH1kZWZzJworCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKwkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisKKwkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAiXC1MIicKKwkgICAgICBlbHNlCisJICAgICAgICAjIGcrKyAyLjcgYXBwZWFycyB0byByZXF1aXJlIGAtRycgTk9UIGAtc2hhcmVkJyBvbiB0aGlzCisJICAgICAgICAjIHBsYXRmb3JtLgorCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorCQkgICRDQyAtRyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisKKwkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKKwkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorCSAgICAgICAgIyBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgIlwtTCInCisJICAgICAgZmkKKworCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICR3bCRsaWJkaXInCisJICAgICAgY2FzZSAkaG9zdF9vcyBpbgorCQlzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OworCQkqKQorCQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0teiAke3dsfWFsbGV4dHJhY3QkY29udmVuaWVuY2UgJHt3bH0teiAke3dsfWRlZmF1bHRleHRyYWN0JworCQkgIDs7CisJICAgICAgZXNhYworCSAgICBmaQorCSAgICA7OworICAgICAgICBlc2FjCisgICAgICAgIDs7CisKKyAgICBzeXN2NCp1dzIqIHwgc3lzdjVPcGVuVU5JWCogfCBzeXN2NVVuaXhXYXJlNy5bWzAxXV0uW1sxMF1dKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLltbMDI0XV0qKQorICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LHRleHQnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCisgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCisKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgIENDKikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIDs7CisJKikKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICA7OworICAgICAgZXNhYworICAgICAgOzsKKworICAgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKKwkjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorCSMgbGluayB3aXRoIC1sYywgYW5kIHRoYXQgd291bGQgY2F1c2UgYW55IHN5bWJvbHMgdXNlZCBmcm9tIGxpYmMgdG8KKwkjIGFsd2F5cyBiZSB1bnJlc29sdmVkLCB3aGljaCBtZWFucyBqdXN0IGFib3V0IG5vIGxpYnJhcnkgd291bGQKKwkjIGV2ZXIgbGluayBjb3JyZWN0bHkuICBJZiB3ZSdyZSBub3QgdXNpbmcgR05VIGxkIHdlIHVzZSAteiB0ZXh0CisJIyB0aG91Z2gsIHdoaWNoIGRvZXMgY2F0Y2ggc29tZSBiYWQgc3ltYm9scyBidXQgaXNuJ3QgYXMgaGVhdnktaGFuZGVkCisJIyBhcyAteiBkZWZzLgorCV9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teixub2RlZnMnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCisJX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tUiwkbGliZGlyJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JworCV9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJleHBvcnQnCisJcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJworCisJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgICAgICAgICBDQyopCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICA7OworCSAgKikKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICA7OworCWVzYWMKKyAgICAgIDs7CisKKyAgICAgIHRhbmRlbSopCisgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICAgICAgTkNDKikKKwkgICAgIyBOb25TdG9wLVVYIE5DQyAzLjIwCisJICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorCSAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisJICAgIDs7CisgICAgICAgICAgKikKKwkgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKwkgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworCisgICAgICB2eHdvcmtzKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKworICAgICAgKikKKyAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0CisgICAgICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KKyAgICAgICAgOzsKKyAgICBlc2FjCisKKyAgICBBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKV0pCisgICAgdGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworCisgICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0iJEdYWCIKKyAgICBfTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKKworICAgICMjIENBVkVBVCBFTVBUT1I6CisgICAgIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKKyAgICAjIyB0aGUgcnVubmluZyBvcmRlciBvciBvdGhlcndpc2UgbW92ZSB0aGVtIGFyb3VuZCB1bmxlc3MgeW91IGtub3cgZXhhY3RseQorICAgICMjIHdoYXQgeW91IGFyZSBkb2luZy4uLgorICAgIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoJDEpCisgICAgX0xUX0NPTVBJTEVSX1BJQygkMSkKKyAgICBfTFRfQ09NUElMRVJfQ19PKCQxKQorICAgIF9MVF9DT01QSUxFUl9GSUxFX0xPQ0tTKCQxKQorICAgIF9MVF9MSU5LRVJfU0hMSUJTKCQxKQorICAgIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIoJDEpCisgICAgX0xUX0xJTktFUl9IQVJEQ09ERV9MSUJQQVRIKCQxKQorCisgICAgX0xUX0NPTkZJRygkMSkKKyAgZmkgIyB0ZXN0IC1uICIkY29tcGlsZXIiCisKKyAgQ0M9JGx0X3NhdmVfQ0MKKyAgTERDWFg9JExECisgIExEPSRsdF9zYXZlX0xECisgIEdDQz0kbHRfc2F2ZV9HQ0MKKyAgd2l0aF9nbnVfbGQ9JGx0X3NhdmVfd2l0aF9nbnVfbGQKKyAgbHRfY3ZfcGF0aF9MRENYWD0kbHRfY3ZfcGF0aF9MRAorICBsdF9jdl9wYXRoX0xEPSRsdF9zYXZlX3BhdGhfTEQKKyAgbHRfY3ZfcHJvZ19nbnVfbGRjeHg9JGx0X2N2X3Byb2dfZ251X2xkCisgIGx0X2N2X3Byb2dfZ251X2xkPSRsdF9zYXZlX3dpdGhfZ251X2xkCitmaSAjIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzCisKK0FDX0xBTkdfUE9QCitdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRworCisKKyMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaWd1cmUgb3V0ICJoaWRkZW4iIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGZyb20gdmVyYm9zZQorIyBjb21waWxlciBvdXRwdXQgd2hlbiBsaW5raW5nIGEgc2hhcmVkIGxpYnJhcnkuCisjIFBhcnNlIHRoZSBjb21waWxlciBvdXRwdXQgYW5kIGV4dHJhY3QgdGhlIG5lY2Vzc2FyeQorIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCittNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCitbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisjIERlcGVuZGVuY2llcyB0byBwbGFjZSBiZWZvcmUgYW5kIGFmdGVyIHRoZSBvYmplY3QgYmVpbmcgbGlua2VkOgorX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQorX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0KK19MVF9UQUdWQVIocHJlZGVwcywgJDEpPQorX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPQorX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKT0KKworZG5sIHdlIGNhbid0IHVzZSB0aGUgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIGhlcmUsCitkbmwgYmVjYXVzZSBpdCBjb250YWlucyBjb2RlIGludGVuZGVkIGZvciBhbiBleGVjdXRhYmxlLAorZG5sIG5vdCBhIGxpYnJhcnkuICBJdCdzIHBvc3NpYmxlIHdlIHNob3VsZCBsZXQgZWFjaAorZG5sIHRhZyBkZWZpbmUgYSBuZXcgbHRfPz8/P19saW5rX3Rlc3RfY29kZSB2YXJpYWJsZSwKK2RubCBidXQgaXQncyBvbmx5IHVzZWQgaGVyZS4uLgorbTRfaWYoWyQxXSwgW10sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgoraW50IGE7Cit2b2lkIGZvbyAodm9pZCkgeyBhID0gMDsgfQorX0xUX0VPRgorXSwgWyQxXSwgW0NYWF0sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorY2xhc3MgRm9vCit7CitwdWJsaWM6CisgIEZvbyAodm9pZCkgeyBhID0gMDsgfQorcHJpdmF0ZToKKyAgaW50IGE7Cit9OworX0xUX0VPRgorXSwgWyQxXSwgW0Y3N10sIFtjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorICAgICAgc3Vicm91dGluZSBmb28KKyAgICAgIGltcGxpY2l0IG5vbmUKKyAgICAgIGludGVnZXIqNCBhCisgICAgICBhPTAKKyAgICAgIHJldHVybgorICAgICAgZW5kCitfTFRfRU9GCitdLCBbJDFdLCBbRkNdLCBbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKyAgICAgIHN1YnJvdXRpbmUgZm9vCisgICAgICBpbXBsaWNpdCBub25lCisgICAgICBpbnRlZ2VyIGEKKyAgICAgIGE9MAorICAgICAgcmV0dXJuCisgICAgICBlbmQKK19MVF9FT0YKK10sIFskMV0sIFtHQ0pdLCBbY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKK3B1YmxpYyBjbGFzcyBmb28geworICBwcml2YXRlIGludCBhOworICBwdWJsaWMgdm9pZCBiYXIgKHZvaWQpIHsKKyAgICBhID0gMDsKKyAgfQorfTsKK19MVF9FT0YKK10pCitkbmwgUGFyc2UgdGhlIGNvbXBpbGVyIG91dHB1dCBhbmQgZXh0cmFjdCB0aGUgbmVjZXNzYXJ5Citkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgoraWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgIyBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKKyAgIyBvYmplY3RzLCBsaWJyYXJpZXMgYW5kIGxpYnJhcnkgZmxhZ3MuCisKKyAgIyBTZW50aW5lbCB1c2VkIHRvIGtlZXAgdHJhY2sgb2Ygd2hldGhlciBvciBub3Qgd2UgYXJlIGJlZm9yZQorICAjIHRoZSBjb25mdGVzdCBvYmplY3QgZmlsZS4KKyAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubworCisgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KKyAgICBjYXNlICRwIGluCisKKyAgICAtTCogfCAtUiogfCAtbCopCisgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KKyAgICAgICAjIFJlbW92ZSB0aGUgc3BhY2UuCisgICAgICAgaWYgdGVzdCAkcCA9ICItTCIgfHwKKyAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgorCSBwcmV2PSRwCisJIGNvbnRpbnVlCisgICAgICAgZWxzZQorCSBwcmV2PQorICAgICAgIGZpCisKKyAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorCSBjYXNlICRwIGluCisJIC1MKiB8IC1SKikKKwkgICAjIEludGVybmFsIGNvbXBpbGVyIGxpYnJhcnkgcGF0aHMgc2hvdWxkIGNvbWUgYWZ0ZXIgdGhvc2UKKwkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKKwkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KKwkgICBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKSI7IHRoZW4KKwkgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9IiR7cHJldn0ke3B9IgorCSAgIGVsc2UKKwkgICAgIF9MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSk9IiR7X0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKX0gJHtwcmV2fSR7cH0iCisJICAgZmkKKwkgICA7OworCSAjIFRoZSAiLWwiIGNhc2Ugd291bGQgbmV2ZXIgY29tZSBiZWZvcmUgdGhlIG9iamVjdCBiZWluZworCSAjIGxpbmtlZCwgc28gZG9uJ3QgYm90aGVyIGhhbmRsaW5nIHRoaXMgY2FzZS4KKwkgZXNhYworICAgICAgIGVsc2UKKwkgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIocG9zdGRlcHMsICQxKSI7IHRoZW4KKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9IiR7cHJldn0ke3B9IgorCSBlbHNlCisJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCisJIGZpCisgICAgICAgZmkKKyAgICAgICA7OworCisgICAgKi4kb2JqZXh0KQorICAgICAgICMgVGhpcyBhc3N1bWVzIHRoYXQgdGhlIHRlc3Qgb2JqZWN0IGZpbGUgb25seSBzaG93cyB1cAorICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgorICAgICAgIGlmIHRlc3QgIiRwIiA9ICJjb25mdGVzdC4kb2JqZXh0IjsgdGhlbgorCSBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPXllcworCSBjb250aW51ZQorICAgICAgIGZpCisKKyAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorCSBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpIjsgdGhlbgorCSAgIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0iJHAiCisJIGVsc2UKKwkgICBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9IiRfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSkgJHAiCisJIGZpCisgICAgICAgZWxzZQorCSBpZiB0ZXN0IC16ICIkX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKSI7IHRoZW4KKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpPSIkcCIKKwkgZWxzZQorCSAgIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9IiRfTFRfVEFHVkFSKHBvc3RkZXBfb2JqZWN0cywgJDEpICRwIgorCSBmaQorICAgICAgIGZpCisgICAgICAgOzsKKworICAgICopIDs7ICMgSWdub3JlIHRoZSByZXN0LgorCisgICAgZXNhYworICBkb25lCisKKyAgIyBDbGVhbiB1cC4KKyAgcm0gLWYgYS5vdXQgYS5leGUKK2Vsc2UKKyAgZWNobyAibGlidG9vbC5tNDogZXJyb3I6IHByb2JsZW0gY29tcGlsaW5nICQxIHRlc3QgcHJvZ3JhbSIKK2ZpCisKKyRSTSAtZiBjb25mZXN0LiRvYmpleHQKKworIyBQT1JUTUU6IG92ZXJyaWRlIGFib3ZlIHRlc3Qgb24gc3lzdGVtcyB3aGVyZSBpdCBpcyBicm9rZW4KK200X2lmKFskMV0sIFtDWFhdLAorW2Nhc2UgJGhvc3Rfb3MgaW4KK2ludGVyaXhbWzMtOV1dKikKKyAgIyBJbnRlcml4IDMuNSBpbnN0YWxscyBjb21wbGV0ZWx5IGhvc2VkIC5sYSBmaWxlcyBmb3IgQysrLCBzbyByYXRoZXIgdGhhbgorICAjIGhhY2sgYWxsIGFyb3VuZCBpdCwgbGV0J3MganVzdCB0cnVzdCAiZysrIiB0byBEVFJULgorICBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCQxKT0KKyAgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsJDEpPQorICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0KKyAgOzsKKworbGludXgqKQorICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKyAgKlN1blwgQyopCisgICAgIyBTdW4gQysrIDUuOQorCisgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCisgICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCisgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcworICAgICMgLWxpYnJhcnk9c3RscG9ydDQgZGVwZW5kcyBvbiBpdC4KKyAgICBjYXNlICIgJENYWCAkQ1hYRkxBR1MgIiBpbgorICAgICoiIC1saWJyYXJ5PXN0bHBvcnQ0ICIqKQorICAgICAgc29sYXJpc191c2Vfc3RscG9ydDQ9eWVzCisgICAgICA7OworICAgIGVzYWMKKworICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJworICAgIGZpCisgICAgOzsKKyAgZXNhYworICA7OworCitzb2xhcmlzKikKKyAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKyAgQ0MqKQorICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcworICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZworICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKKyAgICAjIC1saWJyYXJ5PXN0bHBvcnQ0IGRlcGVuZHMgb24gaXQuCisgICAgY2FzZSAiICRDWFggJENYWEZMQUdTICIgaW4KKyAgICAqIiAtbGlicmFyeT1zdGxwb3J0NCAiKikKKyAgICAgIHNvbGFyaXNfdXNlX3N0bHBvcnQ0PXllcworICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAjIEFkZGluZyB0aGlzIHJlcXVpcmVzIGEga25vd24tZ29vZCBzZXR1cCBvZiBzaGFyZWQgbGlicmFyaWVzIGZvcgorICAgICMgU3VuIGNvbXBpbGVyIHZlcnNpb25zIGJlZm9yZSA1LjYsIGVsc2UgUElDIG9iamVjdHMgZnJvbSBhbiBvbGQKKyAgICAjIGFyY2hpdmUgd2lsbCBiZSBsaW5rZWQgaW50byB0aGUgb3V0cHV0LCBsZWFkaW5nIHRvIHN1YnRsZSBidWdzLgorICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCisgICAgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJworICAgIGZpCisgICAgOzsKKyAgZXNhYworICA7OworZXNhYworXSkKKworY2FzZSAiICRfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSkgIiBpbgorKiIgLWxjICIqKSBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8gOzsKK2VzYWMKKyBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPQoraWYgdGVzdCAtbiAiJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSI7IHRoZW4KKyBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPWBlY2hvICIgJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSIgfCAke1NFRH0gLWUgJ3MhIC1MISAhZycgLWUgJ3MhXiAhISdgCitmaQorX0xUX1RBR0RFQ0woW10sIFtjb21waWxlcl9saWJfc2VhcmNoX2RpcnNdLCBbMV0sCisgICAgW1RoZSBkaXJlY3RvcmllcyBzZWFyY2hlZCBieSB0aGlzIGNvbXBpbGVyIHdoZW4gY3JlYXRpbmcgYSBzaGFyZWQgbGlicmFyeV0pCitfTFRfVEFHREVDTChbXSwgW3ByZWRlcF9vYmplY3RzXSwgWzFdLAorICAgIFtEZXBlbmRlbmNpZXMgdG8gcGxhY2UgYmVmb3JlIGFuZCBhZnRlciB0aGUgb2JqZWN0cyBiZWluZyBsaW5rZWQgdG8KKyAgICBjcmVhdGUgYSBzaGFyZWQgbGlicmFyeV0pCitfTFRfVEFHREVDTChbXSwgW3Bvc3RkZXBfb2JqZWN0c10sIFsxXSkKK19MVF9UQUdERUNMKFtdLCBbcHJlZGVwc10sIFsxXSkKK19MVF9UQUdERUNMKFtdLCBbcG9zdGRlcHNdLCBbMV0pCitfTFRfVEFHREVDTChbXSwgW2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aF0sIFsxXSwKKyAgICBbVGhlIGxpYnJhcnkgc2VhcmNoIHBhdGggdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBjb21waWxlciB3aGVuIGxpbmtpbmcKKyAgICBhIHNoYXJlZCBsaWJyYXJ5XSkKK10pIyBfTFRfU1lTX0hJRERFTl9MSUJERVBTCisKKworIyBfTFRfUFJPR19GNzcKKyMgLS0tLS0tLS0tLS0tCisjIFNpbmNlIEFDX1BST0dfRjc3IGlzIGJyb2tlbiwgaW4gdGhhdCBpdCByZXR1cm5zIHRoZSBlbXB0eSBzdHJpbmcKKyMgaWYgdGhlcmUgaXMgbm8gZm9ydHJhbiBjb21waWxlciwgd2UgaGF2ZSBvdXIgb3duIHZlcnNpb24gaGVyZS4KK200X2RlZnVuKFtfTFRfUFJPR19GNzddLAorWworcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0Y3Nz15ZXNdKQorQUNfUFJPR19GNzcKK2lmIHRlc3QgLXogIiRGNzciIHx8IHRlc3QgIlgkRjc3IiA9ICJYbm8iOyB0aGVuCisgIF9sdF9kaXNhYmxlX0Y3Nz15ZXMKK2ZpCitwb3BkZWYoW0FDX01TR19FUlJPUl0pCitdKSMgX0xUX1BST0dfRjc3CisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbX0xUX1BST0dfRjc3XSwgW10pCisKKworIyBfTFRfTEFOR19GNzdfQ09ORklHKFtUQUddKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiA3NyBjb21waWxlciBhcmUKKyMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRworIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfRjc3X0NPTkZJR10sCitbQUNfUkVRVUlSRShbX0xUX1BST0dfRjc3XSlkbmwKK0FDX0xBTkdfUFVTSChGb3J0cmFuIDc3KQorCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KK19MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0KK19MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KK19MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPQorX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPW5vCitfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT1ubworX0xUX1RBR1ZBUihtb2R1bGVfY21kcywgJDEpPQorX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXVua25vd24KK19MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpPSRvbGRfYXJjaGl2ZV9jbWRzCitfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9CitfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT1ubworCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgZjc3IHRlc3Qgc291cmNlcy4KK2FjX2V4dD1mCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBmNzcgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIE5vIHNlbnNlIGluIHJ1bm5pbmcgYWxsIHRoZXNlIHRlc3RzIGlmIHdlIGFscmVhZHkgZGV0ZXJtaW5lZCB0aGF0CisjIHRoZSBGNzcgY29tcGlsZXIgaXNuJ3Qgd29ya2luZy4gIFNvbWUgdmFyaWFibGVzIChsaWtlIGVuYWJsZV9zaGFyZWQpCisjIGFyZSBjdXJyZW50bHkgYXNzdW1lZCB0byBhcHBseSB0byBhbGwgY29tcGlsZXJzIG9uIHRoaXMgcGxhdGZvcm0sCisjIGFuZCB3aWxsIGJlIGNvcnJ1cHRlZCBieSBzZXR0aW5nIHRoZW0gYmFzZWQgb24gYSBub24td29ya2luZyBjb21waWxlci4KK2lmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgorICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworICBsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9IlwKKyAgICAgIHN1YnJvdXRpbmUgdAorICAgICAgcmV0dXJuCisgICAgICBlbmQKKyIKKworICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgbGluayB0ZXN0cworICBsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IlwKKyAgICAgIHByb2dyYW0gdAorICAgICAgZW5kCisiCisKKyAgIyBsdG1haW4gb25seSB1c2VzICRDQyBmb3IgdGFnZ2VkIGNvbmZpZ3VyYXRpb25zIHNvIG1ha2Ugc3VyZSAkQ0MgaXMgc2V0LgorICBfTFRfVEFHX0NPTVBJTEVSCisKKyAgIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKKyAgX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFCisgIF9MVF9MSU5LRVJfQk9JTEVSUExBVEUKKworICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICBsdF9zYXZlX0NDPSIkQ0MiCisgIGx0X3NhdmVfR0NDPSRHQ0MKKyAgQ0M9JHtGNzctImY3NyJ9CisgIGNvbXBpbGVyPSRDQworICBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCisgIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKKyAgR0NDPSRHNzcKKyAgaWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKKyAgICBBQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllc10pCisgICAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisKKyAgICAjIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKKyAgICAjIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCisgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgYWl4MyopCisgICAgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgICAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCisgICAgICAgICAgYXJjaGl2ZV9jbWRzPSIkYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkbGliIgorICAgICAgICAgIHBvc3RpbnN0YWxsX2NtZHM9JyRSQU5MSUIgJGxpYicKKyAgICAgICAgZmkKKyAgICAgICAgOzsKKyAgICAgIGFpeFtbNC05XV0qKQorCWlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KKwkgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisJZmkKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zaGFyZWRdKQorCisgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQorICAgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgorICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcworICAgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc3RhdGljXSkKKworICAgIF9MVF9UQUdWQVIoR0NDLCAkMSk9IiRHNzciCisgICAgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCisKKyAgICAjIyBDQVZFQVQgRU1QVE9SOgorICAgICMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCisgICAgIyMgdGhlIHJ1bm5pbmcgb3JkZXIgb3Igb3RoZXJ3aXNlIG1vdmUgdGhlbSBhcm91bmQgdW5sZXNzIHlvdSBrbm93IGV4YWN0bHkKKyAgICAjIyB3aGF0IHlvdSBhcmUgZG9pbmcuLi4KKyAgICBfTFRfQ09NUElMRVJfUElDKCQxKQorICAgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgICAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgICAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgICAgX0xUX1NZU19EWU5BTUlDX0xJTktFUigkMSkKKyAgICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisKKyAgICBfTFRfQ09ORklHKCQxKQorICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKworICBHQ0M9JGx0X3NhdmVfR0NDCisgIENDPSIkbHRfc2F2ZV9DQyIKK2ZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCisKK0FDX0xBTkdfUE9QCitdKSMgX0xUX0xBTkdfRjc3X0NPTkZJRworCisKKyMgX0xUX1BST0dfRkMKKyMgLS0tLS0tLS0tLS0KKyMgU2luY2UgQUNfUFJPR19GQyBpcyBicm9rZW4sIGluIHRoYXQgaXQgcmV0dXJucyB0aGUgZW1wdHkgc3RyaW5nCisjIGlmIHRoZXJlIGlzIG5vIGZvcnRyYW4gY29tcGlsZXIsIHdlIGhhdmUgb3VyIG93biB2ZXJzaW9uIGhlcmUuCittNF9kZWZ1bihbX0xUX1BST0dfRkNdLAorWworcHVzaGRlZihbQUNfTVNHX0VSUk9SXSwgW19sdF9kaXNhYmxlX0ZDPXllc10pCitBQ19QUk9HX0ZDCitpZiB0ZXN0IC16ICIkRkMiIHx8IHRlc3QgIlgkRkMiID0gIlhubyI7IHRoZW4KKyAgX2x0X2Rpc2FibGVfRkM9eWVzCitmaQorcG9wZGVmKFtBQ19NU0dfRVJST1JdKQorXSkjIF9MVF9QUk9HX0ZDCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbX0xUX1BST0dfRkNdLCBbXSkKKworCisjIF9MVF9MQU5HX0ZDX0NPTkZJRyhbVEFHXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIGEgRm9ydHJhbiBjb21waWxlciBhcmUKKyMgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRworIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfRkNfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtfTFRfUFJPR19GQ10pZG5sCitBQ19MQU5HX1BVU0goRm9ydHJhbikKKworX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCitfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CitfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCitfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0KK19MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPW5vCitfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0KK19MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPQorX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9CitfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT1ubworX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKT1ubworX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9bm8KK19MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0KK19MVF9UQUdWQVIobW9kdWxlX2V4cHN5bV9jbWRzLCAkMSk9CitfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT11bmtub3duCitfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0kb2xkX2FyY2hpdmVfY21kcworX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPQorX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQorX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9bm8KKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIGZjIHRlc3Qgc291cmNlcy4KK2FjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQorCisjIE9iamVjdCBmaWxlIGV4dGVuc2lvbiBmb3IgY29tcGlsZWQgZmMgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIE5vIHNlbnNlIGluIHJ1bm5pbmcgYWxsIHRoZXNlIHRlc3RzIGlmIHdlIGFscmVhZHkgZGV0ZXJtaW5lZCB0aGF0CisjIHRoZSBGQyBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKKyMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKKyMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgoraWYgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXM7IHRoZW4KKyAgIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGNvbXBpbGUgdGVzdHMKKyAgbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJcCisgICAgICBzdWJyb3V0aW5lIHQKKyAgICAgIHJldHVybgorICAgICAgZW5kCisiCisKKyAgIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKKyAgbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlPSJcCisgICAgICBwcm9ncmFtIHQKKyAgICAgIGVuZAorIgorCisgICMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KKyAgX0xUX1RBR19DT01QSUxFUgorCisgICMgc2F2ZSB3YXJuaW5ncy9ib2lsZXJwbGF0ZSBvZiBzaW1wbGUgdGVzdCBjb2RlCisgIF9MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorICBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisKKyAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgbHRfc2F2ZV9DQz0iJENDIgorICBsdF9zYXZlX0dDQz0kR0NDCisgIENDPSR7RkMtImY5NSJ9CisgIGNvbXBpbGVyPSRDQworICBHQ0M9JGFjX2N2X2ZjX2NvbXBpbGVyX2dudQorCisgIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisgIGlmIHRlc3QgLW4gIiRjb21waWxlciI7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2lmIGxpYnRvb2wgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllc10pCisgICAgQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQorCisgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQorICAgIHRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxlX3NoYXJlZD1ubworCisgICAgIyBPbiBBSVgsIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHN0YXRpYyBsaWJyYXJpZXMgdXNlIHRoZSBzYW1lIG5hbWVzcGFjZSwgYW5kCisgICAgIyBhcmUgYWxsIGJ1aWx0IGZyb20gUElDLgorICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIGFpeDMqKQorICAgICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgICAgICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgorICAgICAgICAgIGFyY2hpdmVfY21kcz0iJGFyY2hpdmVfY21kc35cJFJBTkxJQiBcJGxpYiIKKyAgICAgICAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgICBhaXhbWzQtOV1dKikKKwlpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCisJICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworCWZpCisgICAgICAgIDs7CisgICAgZXNhYworICAgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc2hhcmVkXSkKKworICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKKyAgICAjIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KKyAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKKyAgICBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3N0YXRpY10pCisKKyAgICBfTFRfVEFHVkFSKEdDQywgJDEpPSIkYWNfY3ZfZmNfY29tcGlsZXJfZ251IgorICAgIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorCisgICAgIyMgQ0FWRUFUIEVNUFRPUjoKKyAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQorICAgICMjIHRoZSBydW5uaW5nIG9yZGVyIG9yIG90aGVyd2lzZSBtb3ZlIHRoZW0gYXJvdW5kIHVubGVzcyB5b3Uga25vdyBleGFjdGx5CisgICAgIyMgd2hhdCB5b3UgYXJlIGRvaW5nLi4uCisgICAgX0xUX1NZU19ISURERU5fTElCREVQUygkMSkKKyAgICBfTFRfQ09NUElMRVJfUElDKCQxKQorICAgIF9MVF9DT01QSUxFUl9DX08oJDEpCisgICAgX0xUX0NPTVBJTEVSX0ZJTEVfTE9DS1MoJDEpCisgICAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgICAgX0xUX1NZU19EWU5BTUlDX0xJTktFUigkMSkKKyAgICBfTFRfTElOS0VSX0hBUkRDT0RFX0xJQlBBVEgoJDEpCisKKyAgICBfTFRfQ09ORklHKCQxKQorICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKworICBHQ0M9JGx0X3NhdmVfR0NDCisgIENDPSIkbHRfc2F2ZV9DQyIKK2ZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0ZDIiAhPSB5ZXMKKworQUNfTEFOR19QT1AKK10pIyBfTFRfTEFOR19GQ19DT05GSUcKKworCisjIF9MVF9MQU5HX0dDSl9DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIEdOVSBKYXZhIENvbXBpbGVyIGNvbXBpbGVyCisjIGFyZSBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KK200X2RlZnVuKFtfTFRfTEFOR19HQ0pfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtMVF9QUk9HX0dDSl0pZG5sCitBQ19MQU5HX1NBVkUKKworIyBTb3VyY2UgZmlsZSBleHRlbnNpb24gZm9yIEphdmEgdGVzdCBzb3VyY2VzLgorYWNfZXh0PWphdmEKKworIyBPYmplY3QgZmlsZSBleHRlbnNpb24gZm9yIGNvbXBpbGVkIEphdmEgdGVzdCBzb3VyY2VzLgorb2JqZXh0PW8KK19MVF9UQUdWQVIob2JqZXh0LCAkMSk9JG9iamV4dAorCisjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cworbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlPSJjbGFzcyBmb28ge30iCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9J3B1YmxpYyBjbGFzcyBjb25mdGVzdCB7IHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tbXV0gYXJndikge307IH0nCisKKyMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KK19MVF9UQUdfQ09NUElMRVIKKworIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKK19MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9HQ0M9JEdDQworR0NDPXllcworQ0M9JHtHQ0otImdjaiJ9Citjb21waWxlcj0kQ0MKK19MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKK19MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorCisjIEdDSiBkaWQgbm90IGV4aXN0IGF0IHRoZSB0aW1lIEdDQyBkaWRuJ3QgaW1wbGljaXRseSBsaW5rIGxpYmMgaW4uCitfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KKworX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9JG9sZF9hcmNoaXZlX2NtZHMKKworIyMgQ0FWRUFUIEVNUFRPUjoKKyMjIFRoZXJlIGlzIG5vIGVuY2Fwc3VsYXRpb24gd2l0aGluIHRoZSBmb2xsb3dpbmcgbWFjcm9zLCBkbyBub3QgY2hhbmdlCisjIyB0aGUgcnVubmluZyBvcmRlciBvciBvdGhlcndpc2UgbW92ZSB0aGVtIGFyb3VuZCB1bmxlc3MgeW91IGtub3cgZXhhY3RseQorIyMgd2hhdCB5b3UgYXJlIGRvaW5nLi4uCitpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCisgIF9MVF9DT01QSUxFUl9OT19SVFRJKCQxKQorICBfTFRfQ09NUElMRVJfUElDKCQxKQorICBfTFRfQ09NUElMRVJfQ19PKCQxKQorICBfTFRfQ09NUElMRVJfRklMRV9MT0NLUygkMSkKKyAgX0xUX0xJTktFUl9TSExJQlMoJDEpCisgIF9MVF9MSU5LRVJfSEFSRENPREVfTElCUEFUSCgkMSkKKworICBfTFRfQ09ORklHKCQxKQorZmkKKworQUNfTEFOR19SRVNUT1JFCisKK0dDQz0kbHRfc2F2ZV9HQ0MKK0NDPSIkbHRfc2F2ZV9DQyIKK10pIyBfTFRfTEFOR19HQ0pfQ09ORklHCisKKworIyBfTFRfTEFOR19SQ19DT05GSUcoW1RBR10pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciB0aGUgV2luZG93cyByZXNvdXJjZSBjb21waWxlcgorIyBhcmUgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRworIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCittNF9kZWZ1bihbX0xUX0xBTkdfUkNfQ09ORklHXSwKK1tBQ19SRVFVSVJFKFtMVF9QUk9HX1JDXSlkbmwKK0FDX0xBTkdfU0FWRQorCisjIFNvdXJjZSBmaWxlIGV4dGVuc2lvbiBmb3IgUkMgdGVzdCBzb3VyY2VzLgorYWNfZXh0PXJjCisKKyMgT2JqZWN0IGZpbGUgZXh0ZW5zaW9uIGZvciBjb21waWxlZCBSQyB0ZXN0IHNvdXJjZXMuCitvYmpleHQ9bworX0xUX1RBR1ZBUihvYmpleHQsICQxKT0kb2JqZXh0CisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCitsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9J3NhbXBsZSBNRU5VIHsgTUVOVUlURU0gIiZTb3VwIiwgMTAwLCBDSEVDS0VEIH0nCisKKyMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBsaW5rIHRlc3RzCitsdF9zaW1wbGVfbGlua190ZXN0X2NvZGU9IiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiCisKKyMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KK19MVF9UQUdfQ09NUElMRVIKKworIyBzYXZlIHdhcm5pbmdzL2JvaWxlcnBsYXRlIG9mIHNpbXBsZSB0ZXN0IGNvZGUKK19MVF9DT01QSUxFUl9CT0lMRVJQTEFURQorX0xUX0xJTktFUl9CT0lMRVJQTEFURQorCisjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9HQ0M9JEdDQworR0NDPQorQ0M9JHtSQy0id2luZHJlcyJ9Citjb21waWxlcj0kQ0MKK19MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKK19MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKK19MVF9UQUdWQVIobHRfY3ZfcHJvZ19jb21waWxlcl9jX28sICQxKT15ZXMKKworaWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgorICA6CisgIF9MVF9DT05GSUcoJDEpCitmaQorCitHQ0M9JGx0X3NhdmVfR0NDCitBQ19MQU5HX1JFU1RPUkUKK0NDPSIkbHRfc2F2ZV9DQyIKK10pIyBfTFRfTEFOR19SQ19DT05GSUcKKworCisjIExUX1BST0dfR0NKCisjIC0tLS0tLS0tLS0tCitBQ19ERUZVTihbTFRfUFJPR19HQ0pdLAorW200X2lmZGVmKFtBQ19QUk9HX0dDSl0sIFtBQ19QUk9HX0dDSl0sCisgIFttNF9pZmRlZihbQV1bTV9QUk9HX0dDSl0sIFtBXVtNX1BST0dfR0NKXSwKKyAgICBbQUNfQ0hFQ0tfVE9PTChHQ0osIGdjaiwpCisgICAgICB0ZXN0ICJ4JHtHQ0pGTEFHUytzZXR9IiA9IHhzZXQgfHwgR0NKRkxBR1M9Ii1nIC1PMiIKKyAgICAgIEFDX1NVQlNUKEdDSkZMQUdTKV0pXSlbXWRubAorXSkKKworIyBPbGQgbmFtZToKK0FVX0FMSUFTKFtMVF9BQ19QUk9HX0dDSl0sIFtMVF9QUk9HX0dDSl0pCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0xUX0FDX1BST0dfR0NKXSwgW10pCisKKworIyBMVF9QUk9HX1JDCisjIC0tLS0tLS0tLS0KK0FDX0RFRlVOKFtMVF9QUk9HX1JDXSwKK1tBQ19DSEVDS19UT09MKFJDLCB3aW5kcmVzLCkKK10pCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbTFRfQUNfUFJPR19SQ10sIFtMVF9QUk9HX1JDXSkKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbTFRfQUNfUFJPR19SQ10sIFtdKQorCisKKyMgX0xUX0RFQ0xfRUdSRVAKKyMgLS0tLS0tLS0tLS0tLS0KKyMgSWYgd2UgZG9uJ3QgaGF2ZSBhIG5ldyBlbm91Z2ggQXV0b2NvbmYgdG8gY2hvb3NlIHRoZSBiZXN0IGdyZXAKKyMgYXZhaWxhYmxlLCBjaG9vc2UgdGhlIG9uZSBmaXJzdCBpbiB0aGUgdXNlcidzIFBBVEguCittNF9kZWZ1bihbX0xUX0RFQ0xfRUdSRVBdLAorW0FDX1JFUVVJUkUoW0FDX1BST0dfRUdSRVBdKWRubAorQUNfUkVRVUlSRShbQUNfUFJPR19GR1JFUF0pZG5sCit0ZXN0IC16ICIkR1JFUCIgJiYgR1JFUD1ncmVwCitfTFRfREVDTChbXSwgW0dSRVBdLCBbMV0sIFtBIGdyZXAgcHJvZ3JhbSB0aGF0IGhhbmRsZXMgbG9uZyBsaW5lc10pCitfTFRfREVDTChbXSwgW0VHUkVQXSwgWzFdLCBbQW4gRVJFIG1hdGNoZXJdKQorX0xUX0RFQ0woW10sIFtGR1JFUF0sIFsxXSwgW0EgbGl0ZXJhbCBzdHJpbmcgbWF0Y2hlcl0pCitkbmwgTm9uLWJsZWVkaW5nLWVkZ2UgYXV0b2NvbmYgZG9lc24ndCBzdWJzdCBHUkVQLCBzbyBkbyBpdCBoZXJlIHRvbworQUNfU1VCU1QoW0dSRVBdKQorXSkKKworCisjIF9MVF9ERUNMX09CSkRVTVAKKyMgLS0tLS0tLS0tLS0tLS0KKyMgSWYgd2UgZG9uJ3QgaGF2ZSBhIG5ldyBlbm91Z2ggQXV0b2NvbmYgdG8gY2hvb3NlIHRoZSBiZXN0IG9iamR1bXAKKyMgYXZhaWxhYmxlLCBjaG9vc2UgdGhlIG9uZSBmaXJzdCBpbiB0aGUgdXNlcidzIFBBVEguCittNF9kZWZ1bihbX0xUX0RFQ0xfT0JKRFVNUF0sCitbQUNfQ0hFQ0tfVE9PTChPQkpEVU1QLCBvYmpkdW1wLCBmYWxzZSkKK3Rlc3QgLXogIiRPQkpEVU1QIiAmJiBPQkpEVU1QPW9iamR1bXAKK19MVF9ERUNMKFtdLCBbT0JKRFVNUF0sIFsxXSwgW0FuIG9iamVjdCBzeW1ib2wgZHVtcGVyXSkKK0FDX1NVQlNUKFtPQkpEVU1QXSkKK10pCisKKworIyBfTFRfREVDTF9TRUQKKyMgLS0tLS0tLS0tLS0tCisjIENoZWNrIGZvciBhIGZ1bGx5LWZ1bmN0aW9uYWwgc2VkIHByb2dyYW0sIHRoYXQgdHJ1bmNhdGVzCisjIGFzIGZldyBjaGFyYWN0ZXJzIGFzIHBvc3NpYmxlLiAgUHJlZmVyIEdOVSBzZWQgaWYgZm91bmQuCittNF9kZWZ1bihbX0xUX0RFQ0xfU0VEXSwKK1tBQ19QUk9HX1NFRAordGVzdCAteiAiJFNFRCIgJiYgU0VEPXNlZAorWHNlZD0iJFNFRCAtZSAxcy9eWC8vIgorX0xUX0RFQ0woW10sIFtTRURdLCBbMV0sIFtBIHNlZCBwcm9ncmFtIHRoYXQgZG9lcyBub3QgdHJ1bmNhdGUgb3V0cHV0XSkKK19MVF9ERUNMKFtdLCBbWHNlZF0sIFsiXCRTRUQgLWUgMXMvXlgvLyJdLAorICAgIFtTZWQgdGhhdCBoZWxwcyB1cyBhdm9pZCBhY2NpZGVudGFsbHkgdHJpZ2dlcmluZyBlY2hvKDEpIG9wdGlvbnMgbGlrZSAtbl0pCitdKSMgX0xUX0RFQ0xfU0VECisKK200X2lmbmRlZihbQUNfUFJPR19TRURdLCBbCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTk9URTogVGhpcyBtYWNybyBoYXMgYmVlbiBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbnRvICAgIworIyAgR05VIEF1dG9jb25mIGFzIEFDX1BST0dfU0VELiAgV2hlbiBpdCBpcyBhdmFpbGFibGUgaW4gICAjCisjICBhIHJlbGVhc2VkIHZlcnNpb24gb2YgQXV0b2NvbmYgd2Ugc2hvdWxkIHJlbW92ZSB0aGlzICAgICMKKyMgIG1hY3JvIGFuZCB1c2UgaXQgaW5zdGVhZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK200X2RlZnVuKFtBQ19QUk9HX1NFRF0sCitbQUNfTVNHX0NIRUNLSU5HKFtmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXRdKQorQUNfQ0FDSEVfVkFMKGx0X2N2X3BhdGhfU0VELAorWyMgTG9vcCB0aHJvdWdoIHRoZSB1c2VyJ3MgcGF0aCBhbmQgdGVzdCBmb3Igc2VkIGFuZCBnc2VkLgorIyBUaGVuIHVzZSB0aGF0IGxpc3Qgb2Ygc2VkJ3MgYXMgb25lcyB0byB0ZXN0IGZvciB0cnVuY2F0aW9uLgorYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICBmb3IgbHRfYWNfcHJvZyBpbiBzZWQgZ3NlZDsgZG8KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgICAgIGlmICRhc19leGVjdXRhYmxlX3AgIiRhc19kaXIvJGx0X2FjX3Byb2ckYWNfZXhlY19leHQiOyB0aGVuCisgICAgICAgIGx0X2FjX3NlZF9saXN0PSIkbHRfYWNfc2VkX2xpc3QgJGFzX2Rpci8kbHRfYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGZpCisgICAgZG9uZQorICBkb25lCitkb25lCitJRlM9JGFzX3NhdmVfSUZTCitsdF9hY19tYXg9MAorbHRfYWNfY291bnQ9MAorIyBBZGQgL3Vzci94cGc0L2Jpbi9zZWQgYXMgaXQgaXMgdHlwaWNhbGx5IGZvdW5kIG9uIFNvbGFyaXMKKyMgYWxvbmcgd2l0aCAvYmluL3NlZCB0aGF0IHRydW5jYXRlcyBvdXRwdXQuCitmb3IgbHRfYWNfc2VkIGluICRsdF9hY19zZWRfbGlzdCAvdXNyL3hwZzQvYmluL3NlZDsgZG8KKyAgdGVzdCAhIC1mICRsdF9hY19zZWQgJiYgY29udGludWUKKyAgY2F0IC9kZXYvbnVsbCA+IGNvbmZ0ZXN0LmluCisgIGx0X2FjX2NvdW50PTAKKyAgZWNobyAkRUNIT19OICIwMTIzNDU2Nzg5JEVDSE9fQyIgPmNvbmZ0ZXN0LmluCisgICMgQ2hlY2sgZm9yIEdOVSBzZWQgYW5kIHNlbGVjdCBpdCBpZiBpdCBpcyBmb3VuZC4KKyAgaWYgIiRsdF9hY19zZWQiIC0tdmVyc2lvbiAyPiYxIDwgL2Rldi9udWxsIHwgZ3JlcCAnR05VJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgIGx0X2N2X3BhdGhfU0VEPSRsdF9hY19zZWQKKyAgICBicmVhaworICBmaQorICB3aGlsZSB0cnVlOyBkbworICAgIGNhdCBjb25mdGVzdC5pbiBjb25mdGVzdC5pbiA+Y29uZnRlc3QudG1wCisgICAgbXYgY29uZnRlc3QudG1wIGNvbmZ0ZXN0LmluCisgICAgY3AgY29uZnRlc3QuaW4gY29uZnRlc3QubmwKKyAgICBlY2hvID4+Y29uZnRlc3QubmwKKyAgICAkbHRfYWNfc2VkIC1lICdzL2EkLy8nIDwgY29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCB8fCBicmVhaworICAgIGNtcCAtcyBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgfHwgYnJlYWsKKyAgICAjIDEwMDAwIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRsdF9hY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgICBsdF9hY19jb3VudD1gZXhwciAkbHRfYWNfY291bnQgKyAxYAorICAgIGlmIHRlc3QgJGx0X2FjX2NvdW50IC1ndCAkbHRfYWNfbWF4OyB0aGVuCisgICAgICBsdF9hY19tYXg9JGx0X2FjX2NvdW50CisgICAgICBsdF9jdl9wYXRoX1NFRD0kbHRfYWNfc2VkCisgICAgZmkKKyAgZG9uZQorZG9uZQorXSkKK1NFRD0kbHRfY3ZfcGF0aF9TRUQKK0FDX1NVQlNUKFtTRURdKQorQUNfTVNHX1JFU1VMVChbJFNFRF0pCitdKSNBQ19QUk9HX1NFRAorXSkjbTRfaWZuZGVmCisKKyMgT2xkIG5hbWU6CitBVV9BTElBUyhbTFRfQUNfUFJPR19TRURdLCBbQUNfUFJPR19TRURdKQorZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtMVF9BQ19QUk9HX1NFRF0sIFtdKQorCisKKyMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBGaW5kIG91dCB3aGV0aGVyIHRoZSBzaGVsbCBpcyBCb3VybmUgb3IgWFNJIGNvbXBhdGlibGUsCisjIG9yIGhhcyBzb21lIG90aGVyIHVzZWZ1bCBmZWF0dXJlcy4KK200X2RlZnVuKFtfTFRfQ0hFQ0tfU0hFTExfRkVBVFVSRVNdLAorW0FDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0c10pCisjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworeHNpX3NoZWxsPW5vCisoIF9sdF9kdW1teT0iYS9iL2MiCisgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisgICAgICA9IGMsYS9iLCwgXAorICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAmJiB4c2lfc2hlbGw9eWVzCitBQ19NU0dfUkVTVUxUKFskeHNpX3NoZWxsXSkKK19MVF9DT05GSUdfTElCVE9PTF9JTklUKFt4c2lfc2hlbGw9JyR4c2lfc2hlbGwnXSkKKworQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyAiKz0iXSkKK2x0X3NoZWxsX2FwcGVuZD1ubworKCBmb289YmFyOyBzZXQgZm9vIGJhejsgZXZhbCAiJFsxXSs9XCRbMl0iICYmIHRlc3QgIiRmb28iID0gYmFyYmF6ICkgXAorICAgID4vZGV2L251bGwgMj4mMSBcCisgICYmIGx0X3NoZWxsX2FwcGVuZD15ZXMKK0FDX01TR19SRVNVTFQoWyRsdF9zaGVsbF9hcHBlbmRdKQorX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW2x0X3NoZWxsX2FwcGVuZD0nJGx0X3NoZWxsX2FwcGVuZCddKQorCitpZiAoIChNQUlMPTYwOyB1bnNldCBNQUlMKSB8fCBleGl0KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgbHRfdW5zZXQ9dW5zZXQKK2Vsc2UKKyAgbHRfdW5zZXQ9ZmFsc2UKK2ZpCitfTFRfREVDTChbXSwgW2x0X3Vuc2V0XSwgWzBdLCBbd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgInVuc2V0Il0pZG5sCisKKyMgdGVzdCBFQkNESUMgb3IgQVNDSUkKK2Nhc2UgYGVjaG8gWHx0ciBYICdcMTAxJ2AgaW4KKyBBKSAjIEFTQ0lJIGJhc2VkIHN5c3RlbQorICAgICMgXG4gaXMgbm90IGludGVycHJldGVkIGNvcnJlY3RseSBieSBTb2xhcmlzIDggL3Vzci91Y2IvdHIKKyAgbHRfU1AyTkw9J3RyIFwwNDAgXDAxMicKKyAgbHRfTkwyU1A9J3RyIFwwMTVcMDEyIFwwNDBcMDQwJworICA7OworICopICMgRUJDRElDIGJhc2VkIHN5c3RlbQorICBsdF9TUDJOTD0ndHIgXDEwMCBcbicKKyAgbHRfTkwyU1A9J3RyIFxyXG4gXDEwMFwxMDAnCisgIDs7Citlc2FjCitfTFRfREVDTChbU1AyTkxdLCBbbHRfU1AyTkxdLCBbMV0sIFt0dXJuIHNwYWNlcyBpbnRvIG5ld2xpbmVzXSlkbmwKK19MVF9ERUNMKFtOTDJTUF0sIFtsdF9OTDJTUF0sIFsxXSwgW3R1cm4gbmV3bGluZXMgaW50byBzcGFjZXNdKWRubAorXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUworCisKKyMgX0xUX1BST0dfWFNJX1NIRUxMRk5TCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBCb3VybmUgYW5kIFhTSSBjb21wYXRpYmxlIHZhcmlhbnRzIG9mIHNvbWUgdXNlZnVsIHNoZWxsIGZ1bmN0aW9ucy4KK200X2RlZnVuKFtfTFRfUFJPR19YU0lfU0hFTExGTlNdLAorW2Nhc2UgJHhzaV9zaGVsbCBpbgorICB5ZXMpCisgICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKworIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KK2Z1bmNfZGlybmFtZSAoKQoreworICBjYXNlICR7MX0gaW4KKyAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKyAgZXNhYworfQorCisjIGZ1bmNfYmFzZW5hbWUgZmlsZQorZnVuY19iYXNlbmFtZSAoKQoreworICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCit9CisKKyMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKyMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyMgY2FsbDoKKyMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCisjICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKyMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisjICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKyMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCisjIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCisjIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKK3sKKyAgY2FzZSAkezF9IGluCisgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKyAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisgIGVzYWMKKyAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorfQorCisjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KK2Z1bmNfc3RyaXBuYW1lICgpCit7CisgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKyAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorfQorCisjIGZ1bmNfb3B0X3NwbGl0CitmdW5jX29wdF9zcGxpdCAoKQoreworICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKyAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KK30KKworIyBmdW5jX2xvMm8gb2JqZWN0CitmdW5jX2xvMm8gKCkKK3sKKyAgY2FzZSAkezF9IGluCisgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKyAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKyAgZXNhYworfQorCisjIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorZnVuY194Zm9ybSAoKQoreworICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCit9CisKKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KK2Z1bmNfYXJpdGggKCkKK3sKKyAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKK30KKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorfQorCitfTFRfRU9GCisgICAgOzsKKyAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCisgICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKworIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCisjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KK2Z1bmNfZGlybmFtZSAoKQoreworICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRkaXJuYW1lImAKKyAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorICBlbHNlCisgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorICBmaQorfQorCisjIGZ1bmNfYmFzZW5hbWUgZmlsZQorZnVuY19iYXNlbmFtZSAoKQoreworICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkYmFzZW5hbWUiYAorfQorCitkbmwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZQorZG5sIEEgcG9ydGFibGUgdmVyc2lvbiBvZiB0aGlzIGZ1bmN0aW9uIGlzIGFscmVhZHkgZGVmaW5lZCBpbiBnZW5lcmFsLm00c2gKK2RubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgorCisjIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKK2Z1bmNfc3RyaXBuYW1lICgpCit7CisgIGNhc2UgJHsyfSBpbgorICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJYJHszfSIgXAorICAgICAgICAgICB8ICRYc2VkIC1lICJzJV4kezF9JSUiIC1lICJzJVxcXFwkezJ9XCQlJSJgOzsKKyAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiWCR7M30iIFwKKyAgICAgICAgICAgfCAkWHNlZCAtZSAicyVeJHsxfSUlIiAtZSAicyUkezJ9XCQlJSJgOzsKKyAgZXNhYworfQorCisjIHNlZCBzY3JpcHRzOgorbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW1tePV1dKlwpPS4qL1wxLztxJworbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtbXj1dXSo9Ly8nCisKKyMgZnVuY19vcHRfc3BsaXQKK2Z1bmNfb3B0X3NwbGl0ICgpCit7CisgIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIlgkezF9IiB8ICRYc2VkIC1lICIkbXlfc2VkX2xvbmdfb3B0ImAKKyAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRteV9zZWRfbG9uZ19hcmciYAorfQorCisjIGZ1bmNfbG8ybyBvYmplY3QKK2Z1bmNfbG8ybyAoKQoreworICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiWCR7MX0iIHwgJFhzZWQgLWUgIiRsbzJvImAKK30KKworIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKK2Z1bmNfeGZvcm0gKCkKK3sKKyAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICJYJHsxfSIgfCAkWHNlZCAtZSAncy9cLltbXi5dXSokLy5sby8nYAorfQorCisjIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCitmdW5jX2FyaXRoICgpCit7CisgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkW0BdImAKK30KKworIyBmdW5jX2xlbiBzdHJpbmcKKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KK2Z1bmNfbGVuICgpCit7CisgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorfQorCitfTFRfRU9GCitlc2FjCisKK2Nhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorICB5ZXMpCisgICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKworIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorZnVuY19hcHBlbmQgKCkKK3sKKyAgZXZhbCAiJFsxXSs9XCRbMl0iCit9CitfTFRfRU9GCisgICAgOzsKKyAgKikKKyAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorCisjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCitmdW5jX2FwcGVuZCAoKQoreworICBldmFsICIkWzFdPVwkJFsxXVwkWzJdIgorfQorCitfTFRfRU9GCisgICAgOzsKKyAgZXNhYworXSkKZGlmZiAtLWdpdCBhL200L2x0b3B0aW9ucy5tNCBiL200L2x0b3B0aW9ucy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDE1MWEzCi0tLSAvZGV2L251bGwKKysrIGIvbTQvbHRvcHRpb25zLm00CkBAIC0wLDAgKzEsMzY4IEBACisjIEhlbHBlciBmdW5jdGlvbnMgZm9yIG9wdGlvbiBoYW5kbGluZy4gICAgICAgICAgICAgICAgICAgIC0qLSBBdXRvY29uZiAtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcsIDIwMDggRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBHYXJ5IFYuIFZhdWdoYW4sIDIwMDQKKyMKKyMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKKyMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCisjIHNlcmlhbCA2IGx0b3B0aW9ucy5tNAorCisjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgorQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQorCisKKyMgX0xUX01BTkdMRV9PUFRJT04oTUFDUk8tTkFNRSwgT1BUSU9OLU5BTUUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtfTFRfTUFOR0xFX09QVElPTl0sCitbW19MVF9PUFRJT05fXW00X2JwYXRzdWJzdCgkMV9fJDIsIFtbXmEtekEtWjAtOV9dXSwgW19dKV0pCisKKworIyBfTFRfU0VUX09QVElPTihNQUNSTy1OQU1FLCBPUFRJT04tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFNldCBvcHRpb24gT1BUSU9OLU5BTUUgZm9yIG1hY3JvIE1BQ1JPLU5BTUUsIGFuZCBpZiB0aGVyZSBpcyBhCisjIG1hdGNoaW5nIGhhbmRsZXIgZGVmaW5lZCwgZGlzcGF0Y2ggdG8gaXQuICBPdGhlciBPUFRJT04tTkFNRXMgYXJlCisjIHNhdmVkIGFzIGEgZmxhZy4KK200X2RlZmluZShbX0xUX1NFVF9PUFRJT05dLAorW200X2RlZmluZShfTFRfTUFOR0xFX09QVElPTihbJDFdLCBbJDJdKSlkbmwKK200X2lmZGVmKF9MVF9NQU5HTEVfREVGVU4oWyQxXSwgWyQyXSksCisgICAgICAgIF9MVF9NQU5HTEVfREVGVU4oWyQxXSwgWyQyXSksCisgICAgW200X3dhcm5pbmcoW1Vua25vd24gJDEgb3B0aW9uIGAkMiddKV0pW11kbmwKK10pCisKKworIyBfTFRfSUZfT1BUSU9OKE1BQ1JPLU5BTUUsIE9QVElPTi1OQU1FLCBJRi1TRVQsIFtJRi1OT1QtU0VUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4ZWN1dGUgSUYtU0VUIGlmIE9QVElPTiBpcyBzZXQsIElGLU5PVC1TRVQgb3RoZXJ3aXNlLgorbTRfZGVmaW5lKFtfTFRfSUZfT1BUSU9OXSwKK1ttNF9pZmRlZihfTFRfTUFOR0xFX09QVElPTihbJDFdLCBbJDJdKSwgWyQzXSwgWyQ0XSldKQorCisKKyMgX0xUX1VOTEVTU19PUFRJT05TKE1BQ1JPLU5BTUUsIE9QVElPTi1MSVNULCBJRi1OT1QtU0VUKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEV4ZWN1dGUgSUYtTk9ULVNFVCB1bmxlc3MgYWxsIG9wdGlvbnMgaW4gT1BUSU9OLUxJU1QgZm9yIE1BQ1JPLU5BTUUKKyMgYXJlIHNldC4KK200X2RlZmluZShbX0xUX1VOTEVTU19PUFRJT05TXSwKK1ttNF9mb3JlYWNoKFtfTFRfT3B0aW9uXSwgbTRfc3BsaXQobTRfbm9ybWFsaXplKFskMl0pKSwKKwkgICAgW200X2lmZGVmKF9MVF9NQU5HTEVfT1BUSU9OKFskMV0sIF9MVF9PcHRpb24pLAorCQkgICAgICBbbTRfZGVmaW5lKFskMF9mb3VuZF0pXSldKVtdZG5sCittNF9pZmRlZihbJDBfZm91bmRdLCBbbTRfdW5kZWZpbmUoWyQwX2ZvdW5kXSldLCBbJDMKK10pW11kbmwKK10pCisKKworIyBfTFRfU0VUX09QVElPTlMoTUFDUk8tTkFNRSwgT1BUSU9OLUxJU1QpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgT1BUSU9OLUxJU1QgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBMaWJ0b29sIG9wdGlvbnMgYXNzb2NpYXRlZAorIyB3aXRoIE1BQ1JPLU5BTUUuICBJZiBhbnkgT1BUSU9OIGhhcyBhIG1hdGNoaW5nIGhhbmRsZXIgZGVjbGFyZWQgd2l0aAorIyBMVF9PUFRJT05fREVGSU5FLCBkaXNwYXRjaCB0byB0aGF0IG1hY3JvOyBvdGhlcndpc2UgY29tcGxhaW4gYWJvdXQKKyMgdGhlIHVua25vd24gb3B0aW9uIGFuZCBleGl0LgorbTRfZGVmdW4oW19MVF9TRVRfT1BUSU9OU10sCitbIyBTZXQgb3B0aW9ucworbTRfZm9yZWFjaChbX0xUX09wdGlvbl0sIG00X3NwbGl0KG00X25vcm1hbGl6ZShbJDJdKSksCisgICAgW19MVF9TRVRfT1BUSU9OKFskMV0sIF9MVF9PcHRpb24pXSkKKworbTRfaWYoWyQxXSxbTFRfSU5JVF0sWworICBkbmwKKyAgZG5sIFNpbXBseSBzZXQgc29tZSBkZWZhdWx0IHZhbHVlcyAoaS5lIG9mZikgaWYgYm9vbGVhbiBvcHRpb25zIHdlcmUgbm90CisgIGRubCBzcGVjaWZpZWQ6CisgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtkbG9wZW5dLCBbZW5hYmxlX2Rsb3Blbj1ubworICBdKQorICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbd2luMzItZGxsXSwgW2VuYWJsZV93aW4zMl9kbGw9bm8KKyAgXSkKKyAgZG5sCisgIGRubCBJZiBubyByZWZlcmVuY2Ugd2FzIG1hZGUgdG8gdmFyaW91cyBwYWlycyBvZiBvcHBvc2luZyBvcHRpb25zLCB0aGVuCisgIGRubCB3ZSBydW4gdGhlIGRlZmF1bHQgbW9kZSBoYW5kbGVyIGZvciB0aGUgcGFpci4gIEZvciBleGFtcGxlLCBpZiBuZWl0aGVyCisgIGRubCBgc2hhcmVkJyBub3IgYGRpc2FibGUtc2hhcmVkJyB3YXMgcGFzc2VkLCB3ZSBlbmFibGUgYnVpbGRpbmcgb2Ygc2hhcmVkCisgIGRubCBhcmNoaXZlcyBieSBkZWZhdWx0OgorICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbc2hhcmVkIGRpc2FibGUtc2hhcmVkXSwgW19MVF9FTkFCTEVfU0hBUkVEXSkKKyAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW3N0YXRpYyBkaXNhYmxlLXN0YXRpY10sIFtfTFRfRU5BQkxFX1NUQVRJQ10pCisgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtwaWMtb25seSBuby1waWNdLCBbX0xUX1dJVEhfUElDXSkKKyAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW2Zhc3QtaW5zdGFsbCBkaXNhYmxlLWZhc3QtaW5zdGFsbF0sCisgIAkJICAgW19MVF9FTkFCTEVfRkFTVF9JTlNUQUxMXSkKKyAgXSkKK10pIyBfTFRfU0VUX09QVElPTlMKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIE1hY3JvcyB0byBoYW5kbGUgTFRfSU5JVCBvcHRpb25zLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgX0xUX01BTkdMRV9ERUZVTihNQUNSTy1OQU1FLCBPUFRJT04tTkFNRSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbX0xUX01BTkdMRV9ERUZVTl0sCitbW19MVF9PUFRJT05fREVGVU5fXW00X2JwYXRzdWJzdChtNF90b3VwcGVyKFskMV9fJDJdKSwgW1teQS1aMC05X11dLCBbX10pXSkKKworCisjIExUX09QVElPTl9ERUZJTkUoTUFDUk8tTkFNRSwgT1BUSU9OLU5BTUUsIENPREUpCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW0xUX09QVElPTl9ERUZJTkVdLAorW200X2RlZmluZShfTFRfTUFOR0xFX0RFRlVOKFskMV0sIFskMl0pLCBbJDNdKVtdZG5sCitdKSMgTFRfT1BUSU9OX0RFRklORQorCisKKyMgZGxvcGVuCisjIC0tLS0tLQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkbG9wZW5dLCBbZW5hYmxlX2Rsb3Blbj15ZXMKK10pCisKK0FVX0RFRlVOKFtBQ19MSUJUT09MX0RMT1BFTl0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGxvcGVuXSkKK0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCitbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91CitwdXQgdGhlIGBkbG9wZW4nIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK10pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQUNfTElCVE9PTF9ETE9QRU5dLCBbXSkKKworCisjIHdpbjMyLWRsbAorIyAtLS0tLS0tLS0KKyMgRGVjbGFyZSBwYWNrYWdlIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIHdpbjMyIGRsbCdzLgorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFt3aW4zMi1kbGxdLAorW2VuYWJsZV93aW4zMl9kbGw9eWVzCisKK2Nhc2UgJGhvc3QgaW4KKyotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotY2VnY2MqKQorICBBQ19DSEVDS19UT09MKEFTLCBhcywgZmFsc2UpCisgIEFDX0NIRUNLX1RPT0woRExMVE9PTCwgZGxsdG9vbCwgZmFsc2UpCisgIEFDX0NIRUNLX1RPT0woT0JKRFVNUCwgb2JqZHVtcCwgZmFsc2UpCisgIDs7Citlc2FjCisKK3Rlc3QgLXogIiRBUyIgJiYgQVM9YXMKK19MVF9ERUNMKFtdLCBbQVNdLCAgICAgIFswXSwgW0Fzc2VtYmxlciBwcm9ncmFtXSlkbmwKKwordGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzBdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKWRubAorCit0ZXN0IC16ICIkT0JKRFVNUCIgJiYgT0JKRFVNUD1vYmpkdW1wCitfTFRfREVDTChbXSwgW09CSkRVTVBdLCBbMF0sIFtPYmplY3QgZHVtcGVyIHByb2dyYW1dKWRubAorXSkjIHdpbjMyLWRsbAorCitBVV9ERUZVTihbQUNfTElCVE9PTF9XSU4zMl9ETExdLAorW0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKK19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgW3dpbjMyLWRsbF0pCitBQ19ESUFHTk9TRShbb2Jzb2xldGVdLAorWyQwOiBSZW1vdmUgdGhpcyB3YXJuaW5nIGFuZCB0aGUgY2FsbCB0byBfTFRfU0VUX09QVElPTiB3aGVuIHlvdQorcHV0IHRoZSBgd2luMzItZGxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCitdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0xJQlRPT0xfV0lOMzJfRExMXSwgW10pCisKKworIyBfTFRfRU5BQkxFX1NIQVJFRChbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zaGFyZWQgZmxhZywgYW5kIHN1cHBvcnRzIHRoZSBgc2hhcmVkJyBhbmQKKyMgYGRpc2FibGUtc2hhcmVkJyBMVF9JTklUIG9wdGlvbnMuCisjIERFRkFVTFQgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgeWVzJy4KK200X2RlZmluZShbX0xUX0VOQUJMRV9TSEFSRURdLAorW200X2RlZmluZShbX0xUX0VOQUJMRV9TSEFSRURfREVGQVVMVF0sIFttNF9pZigkMSwgbm8sIG5vLCB5ZXMpXSlkbmwKK0FDX0FSR19FTkFCTEUoW3NoYXJlZF0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1zaGFyZWRAPDpAPVBLR1NAOj5AXSwKKwlbYnVpbGQgc2hhcmVkIGxpYnJhcmllcyBAPDpAZGVmYXVsdD1dX0xUX0VOQUJMRV9TSEFSRURfREVGQVVMVFtAOj5AXSldLAorICAgIFtwPSR7UEFDS0FHRS1kZWZhdWx0fQorICAgIGNhc2UgJGVuYWJsZXZhbCBpbgorICAgIHllcykgZW5hYmxlX3NoYXJlZD15ZXMgOzsKKyAgICBubykgZW5hYmxlX3NoYXJlZD1ubyA7OworICAgICopCisgICAgICBlbmFibGVfc2hhcmVkPW5vCisgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCisgICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGZvciBwa2cgaW4gJGVuYWJsZXZhbDsgZG8KKwlJRlM9IiRsdF9zYXZlX2lmcyIKKwlpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgorCSAgZW5hYmxlX3NoYXJlZD15ZXMKKwlmaQorICAgICAgZG9uZQorICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICA7OworICAgIGVzYWNdLAorICAgIFtlbmFibGVfc2hhcmVkPV1fTFRfRU5BQkxFX1NIQVJFRF9ERUZBVUxUKQorCisgICAgX0xUX0RFQ0woW2J1aWxkX2xpYnRvb2xfbGlic10sIFtlbmFibGVfc2hhcmVkXSwgWzBdLAorCVtXaGV0aGVyIG9yIG5vdCB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKK10pIyBfTFRfRU5BQkxFX1NIQVJFRAorCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW3NoYXJlZF0sIFtfTFRfRU5BQkxFX1NIQVJFRChbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkaXNhYmxlLXNoYXJlZF0sIFtfTFRfRU5BQkxFX1NIQVJFRChbbm9dKV0pCisKKyMgT2xkIG5hbWVzOgorQUNfREVGVU4oW0FDX0VOQUJMRV9TSEFSRURdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgbTRfaWYoWyQxXSwgW25vXSwgW2Rpc2FibGUtXSlbc2hhcmVkXSkKK10pCisKK0FDX0RFRlVOKFtBQ19ESVNBQkxFX1NIQVJFRF0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGlzYWJsZS1zaGFyZWRdKQorXSkKKworQVVfREVGVU4oW0FNX0VOQUJMRV9TSEFSRURdLCBbQUNfRU5BQkxFX1NIQVJFRCgkQCldKQorQVVfREVGVU4oW0FNX0RJU0FCTEVfU0hBUkVEXSwgW0FDX0RJU0FCTEVfU0hBUkVEKCRAKV0pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQU1fRU5BQkxFX1NIQVJFRF0sIFtdKQorZG5sIEFDX0RFRlVOKFtBTV9ESVNBQkxFX1NIQVJFRF0sIFtdKQorCisKKworIyBfTFRfRU5BQkxFX1NUQVRJQyhbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zdGF0aWMgZmxhZywgYW5kIHN1cHBvcnQgdGhlIGBzdGF0aWMnIGFuZAorIyBgZGlzYWJsZS1zdGF0aWMnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NUQVRJQ10sCitbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NUQVRJQ19ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAorQUNfQVJHX0VOQUJMRShbc3RhdGljXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXN0YXRpY0A8OkA9UEtHU0A6PkBdLAorCVtidWlsZCBzdGF0aWMgbGlicmFyaWVzIEA8OkBkZWZhdWx0PV1fTFRfRU5BQkxFX1NUQVRJQ19ERUZBVUxUW0A6PkBdKV0sCisgICAgW3A9JHtQQUNLQUdFLWRlZmF1bHR9CisgICAgY2FzZSAkZW5hYmxldmFsIGluCisgICAgeWVzKSBlbmFibGVfc3RhdGljPXllcyA7OworICAgIG5vKSBlbmFibGVfc3RhdGljPW5vIDs7CisgICAgKikKKyAgICAgZW5hYmxlX3N0YXRpYz1ubworICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KKwkgIGVuYWJsZV9zdGF0aWM9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjXSwKKyAgICBbZW5hYmxlX3N0YXRpYz1dX0xUX0VOQUJMRV9TVEFUSUNfREVGQVVMVCkKKworICAgIF9MVF9ERUNMKFtidWlsZF9vbGRfbGlic10sIFtlbmFibGVfc3RhdGljXSwgWzBdLAorCVtXaGV0aGVyIG9yIG5vdCB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKK10pIyBfTFRfRU5BQkxFX1NUQVRJQworCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW3N0YXRpY10sIFtfTFRfRU5BQkxFX1NUQVRJQyhbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkaXNhYmxlLXN0YXRpY10sIFtfTFRfRU5BQkxFX1NUQVRJQyhbbm9dKV0pCisKKyMgT2xkIG5hbWVzOgorQUNfREVGVU4oW0FDX0VOQUJMRV9TVEFUSUNdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgbTRfaWYoWyQxXSwgW25vXSwgW2Rpc2FibGUtXSlbc3RhdGljXSkKK10pCisKK0FDX0RFRlVOKFtBQ19ESVNBQkxFX1NUQVRJQ10sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGlzYWJsZS1zdGF0aWNdKQorXSkKKworQVVfREVGVU4oW0FNX0VOQUJMRV9TVEFUSUNdLCBbQUNfRU5BQkxFX1NUQVRJQygkQCldKQorQVVfREVGVU4oW0FNX0RJU0FCTEVfU1RBVElDXSwgW0FDX0RJU0FCTEVfU1RBVElDKCRAKV0pCisKK2RubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKK2RubCBBQ19ERUZVTihbQU1fRU5BQkxFX1NUQVRJQ10sIFtdKQorZG5sIEFDX0RFRlVOKFtBTV9ESVNBQkxFX1NUQVRJQ10sIFtdKQorCisKKworIyBfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTChbREVGQVVMVF0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1mYXN0LWluc3RhbGwgZmxhZywgYW5kIHN1cHBvcnQgdGhlIGBmYXN0LWluc3RhbGwnCisjIGFuZCBgZGlzYWJsZS1mYXN0LWluc3RhbGwnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgYHllcycgb3IgYG5vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGB5ZXMnLgorbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF0sCitbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAorQUNfQVJHX0VOQUJMRShbZmFzdC1pbnN0YWxsXSwKKyAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWZhc3QtaW5zdGFsbEA8OkA9UEtHU0A6PkBdLAorICAgIFtvcHRpbWl6ZSBmb3IgZmFzdCBpbnN0YWxsYXRpb24gQDw6QGRlZmF1bHQ9XV9MVF9FTkFCTEVfRkFTVF9JTlNUQUxMX0RFRkFVTFRbQDo+QF0pXSwKKyAgICBbcD0ke1BBQ0tBR0UtZGVmYXVsdH0KKyAgICBjYXNlICRlbmFibGV2YWwgaW4KKyAgICB5ZXMpIGVuYWJsZV9mYXN0X2luc3RhbGw9eWVzIDs7CisgICAgbm8pIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8gOzsKKyAgICAqKQorICAgICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubworICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgorICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCisJSUZTPSIkbHRfc2F2ZV9pZnMiCisJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KKwkgIGVuYWJsZV9mYXN0X2luc3RhbGw9eWVzCisJZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgOzsKKyAgICBlc2FjXSwKKyAgICBbZW5hYmxlX2Zhc3RfaW5zdGFsbD1dX0xUX0VOQUJMRV9GQVNUX0lOU1RBTExfREVGQVVMVCkKKworX0xUX0RFQ0woW2Zhc3RfaW5zdGFsbF0sIFtlbmFibGVfZmFzdF9pbnN0YWxsXSwgWzBdLAorCSBbV2hldGhlciBvciBub3QgdG8gb3B0aW1pemUgZm9yIGZhc3QgaW5zdGFsbGF0aW9uXSlkbmwKK10pIyBfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTAorCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2Zhc3QtaW5zdGFsbF0sIFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTChbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtkaXNhYmxlLWZhc3QtaW5zdGFsbF0sIFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTChbbm9dKV0pCisKKyMgT2xkIG5hbWVzOgorQVVfREVGVU4oW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgbTRfaWYoWyQxXSwgW25vXSwgW2Rpc2FibGUtXSlbZmFzdC1pbnN0YWxsXSkKK0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCitbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91IHB1dAordGhlIGBmYXN0LWluc3RhbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK10pCisKK0FVX0RFRlVOKFtBQ19ESVNBQkxFX0ZBU1RfSU5TVEFMTF0sCitbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGlzYWJsZS1mYXN0LWluc3RhbGxdKQorQUNfRElBR05PU0UoW29ic29sZXRlXSwKK1skMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UgcHV0Cit0aGUgYGRpc2FibGUtZmFzdC1pbnN0YWxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCitdKQorCitkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CitkbmwgQUNfREVGVU4oW0FDX0VOQUJMRV9GQVNUX0lOU1RBTExdLCBbXSkKK2RubCBBQ19ERUZVTihbQU1fRElTQUJMRV9GQVNUX0lOU1RBTExdLCBbXSkKKworCisjIF9MVF9XSVRIX1BJQyhbTU9ERV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIGltcGxlbWVudCB0aGUgLS13aXRoLXBpYyBmbGFnLCBhbmQgc3VwcG9ydCB0aGUgYHBpYy1vbmx5JyBhbmQgYG5vLXBpYycKKyMgTFRfSU5JVCBvcHRpb25zLgorIyBNT0RFIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYGJvdGgnLgorbTRfZGVmaW5lKFtfTFRfV0lUSF9QSUNdLAorW0FDX0FSR19XSVRIKFtwaWNdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLXBpY10sCisJW3RyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIEA8OkBkZWZhdWx0PXVzZSBib3RoQDo+QF0pXSwKKyAgICBbcGljX21vZGU9IiR3aXRodmFsIl0sCisgICAgW3BpY19tb2RlPWRlZmF1bHRdKQorCit0ZXN0IC16ICIkcGljX21vZGUiICYmIHBpY19tb2RlPW00X2RlZmF1bHQoWyQxXSwgW2RlZmF1bHRdKQorCitfTFRfREVDTChbXSwgW3BpY19tb2RlXSwgWzBdLCBbV2hhdCB0eXBlIG9mIG9iamVjdHMgdG8gYnVpbGRdKWRubAorXSkjIF9MVF9XSVRIX1BJQworCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW3BpYy1vbmx5XSwgW19MVF9XSVRIX1BJQyhbeWVzXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFtuby1waWNdLCBbX0xUX1dJVEhfUElDKFtub10pXSkKKworIyBPbGQgbmFtZToKK0FVX0RFRlVOKFtBQ19MSUJUT09MX1BJQ01PREVdLAorW19MVF9TRVRfT1BUSU9OKFtMVF9JTklUXSwgW3BpYy1vbmx5XSkKK0FDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCitbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91CitwdXQgdGhlIGBwaWMtb25seScgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQorXSkKKworZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgorZG5sIEFDX0RFRlVOKFtBQ19MSUJUT09MX1BJQ01PREVdLCBbXSkKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIExURExfSU5JVCBPcHRpb25zICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworCittNF9kZWZpbmUoW19MVERMX01PREVdLCBbXSkKK0xUX09QVElPTl9ERUZJTkUoW0xURExfSU5JVF0sIFtub25yZWN1cnNpdmVdLAorCQkgW200X2RlZmluZShbX0xURExfTU9ERV0sIFtub25yZWN1cnNpdmVdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVERMX0lOSVRdLCBbcmVjdXJzaXZlXSwKKwkJIFttNF9kZWZpbmUoW19MVERMX01PREVdLCBbcmVjdXJzaXZlXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRETF9JTklUXSwgW3N1YnByb2plY3RdLAorCQkgW200X2RlZmluZShbX0xURExfTU9ERV0sIFtzdWJwcm9qZWN0XSldKQorCittNF9kZWZpbmUoW19MVERMX1RZUEVdLCBbXSkKK0xUX09QVElPTl9ERUZJTkUoW0xURExfSU5JVF0sIFtpbnN0YWxsYWJsZV0sCisJCSBbbTRfZGVmaW5lKFtfTFRETF9UWVBFXSwgW2luc3RhbGxhYmxlXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRETF9JTklUXSwgW2NvbnZlbmllbmNlXSwKKwkJIFttNF9kZWZpbmUoW19MVERMX1RZUEVdLCBbY29udmVuaWVuY2VdKV0pCmRpZmYgLS1naXQgYS9tNC9sdHN1Z2FyLm00IGIvbTQvbHRzdWdhci5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDAwYTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbTQvbHRzdWdhci5tNApAQCAtMCwwICsxLDEyMyBAQAorIyBsdHN1Z2FyLm00IC0tIGxpYnRvb2wgbTQgYmFzZSBsYXllci4gICAgICAgICAgICAgICAgICAgICAgICAgLSotQXV0b2NvbmYtKi0KKyMKKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAwNAorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDYgbHRzdWdhci5tNAorCisjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgorQUNfREVGVU4oW0xUU1VHQVJfVkVSU0lPTl0sIFttNF9pZihbMC4xXSldKQorCisKKyMgbHRfam9pbihTRVAsIEFSRzEsIFtBUkcyLi4uXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJvZHVjZSBBUkcxU0VQQVJHMi4uLlNFUEFSR24sIG9taXR0aW5nIFtdIGFyZ3VtZW50cyBhbmQgdGhlaXIKKyMgYXNzb2NpYXRlZCBzZXBhcmF0b3IuCisjIE5lZWRlZCB1bnRpbCB3ZSBjYW4gcmVseSBvbiBtNF9qb2luIGZyb20gQXV0b2NvbmYgMi42Miwgc2luY2UgYWxsIGVhcmxpZXIKKyMgdmVyc2lvbnMgaW4gbTRzdWdhciBoYWQgYnVncy4KK200X2RlZmluZShbbHRfam9pbl0sCitbbTRfaWYoWyQjXSwgWzFdLCBbXSwKKyAgICAgICBbJCNdLCBbMl0sIFtbJDJdXSwKKyAgICAgICBbbTRfaWYoWyQyXSwgW10sIFtdLCBbWyQyXV9dKSQwKFskMV0sIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSldKQorbTRfZGVmaW5lKFtfbHRfam9pbl0sCitbbTRfaWYoWyQjJDJdLCBbMl0sIFtdLAorICAgICAgIFttNF9pZihbJDJdLCBbXSwgW10sIFtbJDEkMl1dKSQwKFskMV0sIG00X3NoaWZ0KG00X3NoaWZ0KCRAKSkpXSldKQorCisKKyMgbHRfY2FyKExJU1QpCisjIGx0X2NkcihMSVNUKQorIyAtLS0tLS0tLS0tLS0KKyMgTWFuaXB1bGF0ZSBtNCBsaXN0cy4KKyMgVGhlc2UgbWFjcm9zIGFyZSBuZWNlc3NhcnkgYXMgbG9uZyBhcyB3aWxsIHN0aWxsIG5lZWQgdG8gc3VwcG9ydAorIyBBdXRvY29uZi0yLjU5IHdoaWNoIHF1b3RlcyBkaWZmZXJlbnRseS4KK200X2RlZmluZShbbHRfY2FyXSwgW1skMV1dKQorbTRfZGVmaW5lKFtsdF9jZHJdLAorW200X2lmKFskI10sIDAsIFttNF9mYXRhbChbJDA6IGNhbm5vdCBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHNdKV0sCisgICAgICAgWyQjXSwgMSwgW10sCisgICAgICAgW200X2RxdW90ZShtNF9zaGlmdCgkQCkpXSldKQorbTRfZGVmaW5lKFtsdF91bnF1b3RlXSwgJDEpCisKKworIyBsdF9hcHBlbmQoTUFDUk8tTkFNRSwgU1RSSU5HLCBbU0VQQVJBVE9SXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJlZGVmaW5lIE1BQ1JPLU5BTUUgdG8gaG9sZCBpdHMgZm9ybWVyIGNvbnRlbnQgcGx1cyBgU0VQQVJBVE9SJ2BTVFJJTkcnLgorIyBOb3RlIHRoYXQgbmVpdGhlciBTRVBBUkFUT1Igbm9yIFNUUklORyBhcmUgZXhwYW5kZWQ7IHRoZXkgYXJlIGFwcGVuZGVkCisjIHRvIE1BQ1JPLU5BTUUgYXMgaXMgKGxlYXZpbmcgdGhlIGV4cGFuc2lvbiBmb3Igd2hlbiBNQUNSTy1OQU1FIGlzIGludm9rZWQpLgorIyBObyBTRVBBUkFUT1IgaXMgb3V0cHV0IGlmIE1BQ1JPLU5BTUUgd2FzIHByZXZpb3VzbHkgdW5kZWZpbmVkIChkaWZmZXJlbnQKKyMgdGhhbiBkZWZpbmVkIGFuZCBlbXB0eSkuCisjCisjIFRoaXMgbWFjcm8gaXMgbmVlZGVkIHVudGlsIHdlIGNhbiByZWx5IG9uIEF1dG9jb25mIDIuNjIsIHNpbmNlIGVhcmxpZXIKKyMgdmVyc2lvbnMgb2YgbTRzdWdhciBtaXN0YWtlbmx5IGV4cGFuZGVkIFNFUEFSQVRPUiBidXQgbm90IFNUUklORy4KK200X2RlZmluZShbbHRfYXBwZW5kXSwKK1ttNF9kZWZpbmUoWyQxXSwKKwkgICBtNF9pZmRlZihbJDFdLCBbbTRfZGVmbihbJDFdKVskM11dKVskMl0pXSkKKworCisKKyMgbHRfY29tYmluZShTRVAsIFBSRUZJWC1MSVNULCBJTkZJWCwgU1VGRklYMSwgW1NVRkZJWDIuLi5dKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb2R1Y2UgYSBTRVAgZGVsaW1pdGVkIGxpc3Qgb2YgYWxsIHBhaXJlZCBjb21iaW5hdGlvbnMgb2YgZWxlbWVudHMgb2YKKyMgUFJFRklYLUxJU1Qgd2l0aCBTVUZGSVgxIHRocm91Z2ggU1VGRklYbi4gIEVhY2ggZWxlbWVudCBvZiB0aGUgbGlzdAorIyBoYXMgdGhlIGZvcm0gUFJFRklYbUlORklYU1VGRklYbi4KKyMgTmVlZGVkIHVudGlsIHdlIGNhbiByZWx5IG9uIG00X2NvbWJpbmUgYWRkZWQgaW4gQXV0b2NvbmYgMi42Mi4KK200X2RlZmluZShbbHRfY29tYmluZV0sCitbbTRfaWYobTRfZXZhbChbJCMgPiAzXSksIFsxXSwKKyAgICAgICBbbTRfcHVzaGRlZihbX0x0X3NlcF0sIFttNF9kZWZpbmUoW19MdF9zZXBdLCBtNF9kZWZuKFtsdF9jYXJdKSldKV1dZG5sCitbW200X2ZvcmVhY2goW19MdF9wcmVmaXhdLCBbJDJdLAorCSAgICAgW200X2ZvcmVhY2goW19MdF9zdWZmaXhdLAorCQldbTRfZHF1b3RlKG00X2RxdW90ZShtNF9zaGlmdChtNF9zaGlmdChtNF9zaGlmdCgkQCkpKSkpWywKKwlbX0x0X3NlcChbJDFdKVtdbTRfZGVmbihbX0x0X3ByZWZpeF0pWyQzXW00X2RlZm4oW19MdF9zdWZmaXhdKV0pXSldKV0pCisKKworIyBsdF9pZl9hcHBlbmRfdW5pcShNQUNSTy1OQU1FLCBWQVJOQU1FLCBbU0VQQVJBVE9SXSwgW1VOSVFdLCBbTk9ULVVOSVFdKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBJZmYgTUFDUk8tTkFNRSBkb2VzIG5vdCB5ZXQgY29udGFpbiBWQVJOQU1FLCB0aGVuIGFwcGVuZCBpdCAoZGVsaW1pdGVkCisjIGJ5IFNFUEFSQVRPUiBpZiBzdXBwbGllZCkgYW5kIGV4cGFuZCBVTklRLCBlbHNlIE5PVC1VTklRLgorbTRfZGVmaW5lKFtsdF9pZl9hcHBlbmRfdW5pcV0sCitbbTRfaWZkZWYoWyQxXSwKKwkgIFttNF9pZihtNF9pbmRleChbJDNdbTRfZGVmbihbJDFdKVskM10sIFskMyQyJDNdKSwgWy0xXSwKKwkJIFtsdF9hcHBlbmQoWyQxXSwgWyQyXSwgWyQzXSkkNF0sCisJCSBbJDVdKV0sCisJICBbbHRfYXBwZW5kKFskMV0sIFskMl0sIFskM10pJDRdKV0pCisKKworIyBsdF9kaWN0X2FkZChESUNULCBLRVksIFZBTFVFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kaWN0X2FkZF0sCitbbTRfZGVmaW5lKFskMSgkMildLCBbJDNdKV0pCisKKworIyBsdF9kaWN0X2FkZF9zdWJrZXkoRElDVCwgS0VZLCBTVUJLRVksIFZBTFVFKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbTRfZGVmaW5lKFtsdF9kaWN0X2FkZF9zdWJrZXldLAorW200X2RlZmluZShbJDEoJDI6JDMpXSwgWyQ0XSldKQorCisKKyMgbHRfZGljdF9mZXRjaChESUNULCBLRVksIFtTVUJLRVldKQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RpY3RfZmV0Y2hdLAorW200X2lmdmFsKFskM10sCisJbTRfaWZkZWYoWyQxKCQyOiQzKV0sIFttNF9kZWZuKFskMSgkMjokMyldKV0pLAorICAgIG00X2lmZGVmKFskMSgkMildLCBbbTRfZGVmbihbJDEoJDIpXSldKSldKQorCisKKyMgbHRfaWZfZGljdF9mZXRjaChESUNULCBLRVksIFtTVUJLRVldLCBWQUxVRSwgSUYtVFJVRSwgW0lGLUZBTFNFXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZmluZShbbHRfaWZfZGljdF9mZXRjaF0sCitbbTRfaWYobHRfZGljdF9mZXRjaChbJDFdLCBbJDJdLCBbJDNdKSwgWyQ0XSwKKwlbJDVdLAorICAgIFskNl0pXSkKKworCisjIGx0X2RpY3RfZmlsdGVyKERJQ1QsIFtTVUJLRVldLCBWQUxVRSwgW1NFUEFSQVRPUl0sIEtFWSwgWy4uLl0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCittNF9kZWZpbmUoW2x0X2RpY3RfZmlsdGVyXSwKK1ttNF9pZihbJDVdLCBbXSwgW10sCisgIFtsdF9qb2luKG00X3F1b3RlKG00X2RlZmF1bHQoWyQ0XSwgW1ssIF1dKSksCisgICAgICAgICAgIGx0X3VucXVvdGUobTRfc3BsaXQobTRfbm9ybWFsaXplKG00X2ZvcmVhY2goX0x0X2tleSwgbHRfY2FyKFttNF9zaGlmdG4oNCwgJEApXSksCisJCSAgICAgIFtsdF9pZl9kaWN0X2ZldGNoKFskMV0sIF9MdF9rZXksIFskMl0sIFskM10sIFtfTHRfa2V5IF0pXSkpKSkpXSlbXWRubAorXSkKZGlmZiAtLWdpdCBhL200L2x0dmVyc2lvbi5tNCBiL200L2x0dmVyc2lvbi5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGUxNTRmCi0tLSAvZGV2L251bGwKKysrIGIvbTQvbHR2ZXJzaW9uLm00CkBAIC0wLDAgKzEsMjMgQEAKKyMgbHR2ZXJzaW9uLm00IC0tIHZlcnNpb24gbnVtYmVycwkJCS0qLSBBdXRvY29uZiAtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBTY290dCBKYW1lcyBSZW1uYW50LCAyMDA0CisjCisjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCisjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBHZW5lcmF0ZWQgZnJvbSBsdHZlcnNpb24uaW4uCisKKyMgc2VyaWFsIDMwMTIgbHR2ZXJzaW9uLm00CisjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sCisKK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuMi42XSkKK200X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMwMTJdKQorCitBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAorW21hY3JvX3ZlcnNpb249JzIuMi42JworbWFjcm9fcmV2aXNpb249JzEuMzAxMicKK19MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQorX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKK10pCmRpZmYgLS1naXQgYS9tNC9sdH5vYnNvbGV0ZS5tNCBiL200L2x0fm9ic29sZXRlLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzN2JiMjAKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9sdH5vYnNvbGV0ZS5tNApAQCAtMCwwICsxLDkyIEBACisjIGx0fm9ic29sZXRlLm00IC0tIGFjbG9jYWwgc2F0aXNmeWluZyBvYnNvbGV0ZSBkZWZpbml0aW9ucy4gICAgLSotQXV0b2NvbmYtKi0KKyMKKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjICAgV3JpdHRlbiBieSBTY290dCBKYW1lcyBSZW1uYW50LCAyMDA0LgorIworIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcworIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKKyMgc2VyaWFsIDQgbHR+b2Jzb2xldGUubTQKKworIyBUaGVzZSBleGlzdCBlbnRpcmVseSB0byBmb29sIGFjbG9jYWwgd2hlbiBib290c3RyYXBwaW5nIGxpYnRvb2wuCisjCisjIEluIHRoZSBwYXN0IGxpYnRvb2wubTQgaGFzIHByb3ZpZGVkIG1hY3JvcyB2aWEgQUNfREVGVU4gKG9yIEFVX0RFRlVOKQorIyB3aGljaCBoYXZlIGxhdGVyIGJlZW4gY2hhbmdlZCB0byBtNF9kZWZpbmUgYXMgdGhleSBhcmVuJ3QgcGFydCBvZiB0aGUKKyMgZXhwb3J0ZWQgQVBJLCBvciBtb3ZlZCB0byBBdXRvY29uZiBvciBBdXRvbWFrZSB3aGVyZSB0aGV5IGJlbG9uZy4KKyMKKyMgVGhlIHRyb3VibGUgaXMsIGFjbG9jYWwgaXMgYSBiaXQgdGhpY2suICBJdCdsbCBzZWUgdGhlIG9sZCBBQ19ERUZVTgorIyBpbiAvdXNyL3NoYXJlL2FjbG9jYWwvbGlidG9vbC5tNCBhbmQgcmVtZW1iZXIgaXQsIHRoZW4gd2hlbiBpdCBzZWVzIHVzCisjIHVzaW5nIGEgbWFjcm8gd2l0aCB0aGUgc2FtZSBuYW1lIGluIG91ciBsb2NhbCBtNC9saWJ0b29sLm00IGl0J2xsCisjIHB1bGwgdGhlIG9sZCBsaWJ0b29sLm00IGluIChpdCBkb2Vzbid0IHNlZSBvdXIgc2hpbnkgbmV3IG00X2RlZmluZQorIyBhbmQgZG9lc24ndCBrbm93IGFib3V0IEF1dG9jb25mIG1hY3JvcyBhdCBhbGwuKQorIworIyBTbyB3ZSBwcm92aWRlIHRoaXMgZmlsZSwgd2hpY2ggaGFzIGEgc2lsbHkgZmlsZW5hbWUgc28gaXQncyBhbHdheXMKKyMgaW5jbHVkZWQgYWZ0ZXIgZXZlcnl0aGluZyBlbHNlLiAgVGhpcyBwcm92aWRlcyBhY2xvY2FsIHdpdGggdGhlCisjIEFDX0RFRlVOcyBpdCB3YW50cywgYnV0IHdoZW4gbTQgcHJvY2Vzc2VzIGl0LCBpdCBkb2Vzbid0IGRvIGFueXRoaW5nCisjIGJlY2F1c2UgdGhvc2UgbWFjcm9zIGFscmVhZHkgZXhpc3QsIG9yIHdpbGwgYmUgb3ZlcndyaXR0ZW4gbGF0ZXIuCisjIFdlIHVzZSBBQ19ERUZVTiBvdmVyIEFVX0RFRlVOIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYWNsb2NhbC0xLjYuIAorIworIyBBbnl0aW1lIHdlIHdpdGhkcmF3IGFuIEFDX0RFRlVOIG9yIEFVX0RFRlVOLCByZW1lbWJlciB0byBhZGQgaXQgaGVyZS4KKyMgWWVzLCB0aGF0IG1lYW5zIGV2ZXJ5IG5hbWUgb25jZSB0YWtlbiB3aWxsIG5lZWQgdG8gcmVtYWluIGhlcmUgdW50aWwKKyMgd2UgZ2l2ZSB1cCBjb21wYXRpYmlsaXR5IHdpdGggdmVyc2lvbnMgYmVmb3JlIDEuNywgYXQgd2hpY2ggcG9pbnQKKyMgd2UgbmVlZCB0byBrZWVwIG9ubHkgdGhvc2UgbmFtZXMgd2hpY2ggd2Ugc3RpbGwgcmVmZXIgdG8uCisKKyMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCitBQ19ERUZVTihbTFRPQlNPTEVURV9WRVJTSU9OXSwgW200X2lmKFsxXSldKQorCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfTElOS0VSX09QVElPTl0sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MSU5LRVJfT1BUSU9OXSldKQorbTRfaWZuZGVmKFtBQ19QUk9HX0VHUkVQXSwJCVtBQ19ERUZVTihbQUNfUFJPR19FR1JFUF0pXSkKK200X2lmbmRlZihbX0xUX0FDX1BST0dfRUNIT19CQUNLU0xBU0hdLAlbQUNfREVGVU4oW19MVF9BQ19QUk9HX0VDSE9fQkFDS1NMQVNIXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfU0hFTExfSU5JVF0sCQlbQUNfREVGVU4oW19MVF9BQ19TSEVMTF9JTklUXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfU1lTX0xJQlBBVEhfQUlYXSwJW0FDX0RFRlVOKFtfTFRfQUNfU1lTX0xJQlBBVEhfQUlYXSldKQorbTRfaWZuZGVmKFtfTFRfUFJPR19MVE1BSU5dLAkJW0FDX0RFRlVOKFtfTFRfUFJPR19MVE1BSU5dKV0pCittNF9pZm5kZWYoW19MVF9BQ19UQUdWQVJdLAkJW0FDX0RFRlVOKFtfTFRfQUNfVEFHVkFSXSldKQorbTRfaWZuZGVmKFtBQ19MVERMX0VOQUJMRV9JTlNUQUxMXSwJW0FDX0RFRlVOKFtBQ19MVERMX0VOQUJMRV9JTlNUQUxMXSldKQorbTRfaWZuZGVmKFtBQ19MVERMX1BSRU9QRU5dLAkJW0FDX0RFRlVOKFtBQ19MVERMX1BSRU9QRU5dKV0pCittNF9pZm5kZWYoW19MVF9BQ19TWVNfQ09NUElMRVJdLAlbQUNfREVGVU4oW19MVF9BQ19TWVNfQ09NUElMRVJdKV0pCittNF9pZm5kZWYoW19MVF9BQ19MT0NLXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xPQ0tdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfU1lTX09MRF9BUkNISVZFXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19PTERfQVJDSElWRV0pXSkKK200X2lmbmRlZihbX0xUX0FDX1RSWV9ETE9QRU5fU0VMRl0sCVtBQ19ERUZVTihbX0xUX0FDX1RSWV9ETE9QRU5fU0VMRl0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9QUk9HX0NDX0NfT10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9QUk9HX0NDX0NfT10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfSEFSRF9MSU5LX0xPQ0tTXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19IQVJEX0xJTktfTE9DS1NdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfT0JKRElSXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9PQkpESVJdKV0pCittNF9pZm5kZWYoW0FDX0xURExfT0JKRElSXSwJCVtBQ19ERUZVTihbQUNfTFRETF9PQkpESVJdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19MRF9IQVJEQ09ERV9MSUJQQVRIXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfTERfSEFSRENPREVfTElCUEFUSF0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfTElCX1NUUklQXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19MSUJfU1RSSVBdKV0pCittNF9pZm5kZWYoW0FDX1BBVEhfTUFHSUNdLAkJW0FDX0RFRlVOKFtBQ19QQVRIX01BR0lDXSldKQorbTRfaWZuZGVmKFtBQ19QUk9HX0xEX0dOVV0sCQlbQUNfREVGVU4oW0FDX1BST0dfTERfR05VXSldKQorbTRfaWZuZGVmKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSwJW0FDX0RFRlVOKFtBQ19QUk9HX0xEX1JFTE9BRF9GTEFHXSldKQorbTRfaWZuZGVmKFtBQ19ERVBMSUJTX0NIRUNLX01FVEhPRF0sCVtBQ19ERUZVTihbQUNfREVQTElCU19DSEVDS19NRVRIT0RdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9OT19SVFRJXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfTk9fUlRUSV0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfR0xPQkFMX1NZTUJPTF9QSVBFXSwgW0FDX0RFRlVOKFtBQ19MSUJUT09MX1NZU19HTE9CQUxfU1lNQk9MX1BJUEVdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUNdLCBbQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19DT01QSUxFUl9QSUNdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUFJPR19MRF9TSExJQlNdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfUFJPR19MRF9TSExJQlNdKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfUE9TVERFUF9QUkVERVBdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfUE9TVERFUF9QUkVERVBdKV0pCittNF9pZm5kZWYoW0xUX0FDX1BST0dfRUdSRVBdLAkJW0FDX0RFRlVOKFtMVF9BQ19QUk9HX0VHUkVQXSldKQorbTRfaWZuZGVmKFtMVF9BQ19QUk9HX1NFRF0sCQlbQUNfREVGVU4oW0xUX0FDX1BST0dfU0VEXSldKQorbTRfaWZuZGVmKFtfTFRfQ0NfQkFTRU5BTUVdLAkJW0FDX0RFRlVOKFtfTFRfQ0NfQkFTRU5BTUVdKV0pCittNF9pZm5kZWYoW19MVF9DT01QSUxFUl9CT0lMRVJQTEFURV0sCVtBQ19ERUZVTihbX0xUX0NPTVBJTEVSX0JPSUxFUlBMQVRFXSldKQorbTRfaWZuZGVmKFtfTFRfTElOS0VSX0JPSUxFUlBMQVRFXSwJW0FDX0RFRlVOKFtfTFRfTElOS0VSX0JPSUxFUlBMQVRFXSldKQorbTRfaWZuZGVmKFtfQUNfUFJPR19MSUJUT09MXSwJCVtBQ19ERUZVTihbX0FDX1BST0dfTElCVE9PTF0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TRVRVUF0sCQlbQUNfREVGVU4oW0FDX0xJQlRPT0xfU0VUVVBdKV0pCittNF9pZm5kZWYoW19MVF9BQ19DSEVDS19ETEZDTl0sCQlbQUNfREVGVU4oW19MVF9BQ19DSEVDS19ETEZDTl0pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVJdLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfU1lTX0RZTkFNSUNfTElOS0VSXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfVEFHQ09ORklHXSwJCVtBQ19ERUZVTihbX0xUX0FDX1RBR0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfRElTQUJMRV9GQVNUX0lOU1RBTExdLAlbQUNfREVGVU4oW0FDX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DWFhdLAkJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhdKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0Y3N10sCQlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0Y3N10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfR0NKXSwJCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX1JDXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9SQ10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfQ19DT05GSUddKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0NfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DX0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX0NYWF9DT05GSUddLAlbQUNfREVGVU4oW0FDX0xJQlRPT0xfTEFOR19DWFhfQ09ORklHXSldKQorbTRfaWZuZGVmKFtfTFRfQUNfTEFOR19DWFhfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19DWFhfQ09ORklHXSldKQorbTRfaWZuZGVmKFtBQ19MSUJUT09MX0xBTkdfRjc3X0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX0Y3N19DT05GSUddKV0pCittNF9pZm5kZWYoW19MVF9BQ19MQU5HX0Y3N19DT05GSUddLAlbQUNfREVGVU4oW19MVF9BQ19MQU5HX0Y3N19DT05GSUddKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfTEFOR19HQ0pfQ09ORklHXSwJW0FDX0RFRlVOKFtBQ19MSUJUT09MX0xBTkdfR0NKX0NPTkZJR10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfR0NKX0NPTkZJR10sCVtBQ19ERUZVTihbX0xUX0FDX0xBTkdfR0NKX0NPTkZJR10pXSkKK200X2lmbmRlZihbQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJR10sCVtBQ19ERUZVTihbQUNfTElCVE9PTF9MQU5HX1JDX0NPTkZJR10pXSkKK200X2lmbmRlZihbX0xUX0FDX0xBTkdfUkNfQ09ORklHXSwJW0FDX0RFRlVOKFtfTFRfQUNfTEFOR19SQ19DT05GSUddKV0pCittNF9pZm5kZWYoW0FDX0xJQlRPT0xfQ09ORklHXSwJCVtBQ19ERUZVTihbQUNfTElCVE9PTF9DT05GSUddKV0pCittNF9pZm5kZWYoW19MVF9BQ19GSUxFX0xURExMX0NdLAlbQUNfREVGVU4oW19MVF9BQ19GSUxFX0xURExMX0NdKV0pCmRpZmYgLS1naXQgYS9tNC9uZXRzbm1wX2FyZy5tNCBiL200L25ldHNubXBfYXJnLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjMzMGIKLS0tIC9kZXYvbnVsbAorKysgYi9tNC9uZXRzbm1wX2FyZy5tNApAQCAtMCwwICsxLDI3IEBACitkbmwgUmVwb3J0cyBhbiBpbnZhbGlkIG9wdGlvbiBhbmQgc3VnZ2VzdHMgLS1lbmFibGUtPEFSR1VNRU5UIDE+IGluc3RlYWQKK0FDX0RFRlVOKFtORVRTTk1QX0lOVkFMSURfRU5BQkxFXSwKKyAgW0FDX01TR19FUlJPUihbSW52YWxpZCBvcHRpb24uIFVzZSAtLWVuYWJsZS0kMS8tLWRpc2FibGUtJDEgaW5zdGVhZF0pXSkKKworZG5sIFJlcG9ydHMgYW4gaW52YWxpZCBvcHRpb24gYW5kIHN1Z2dlc3RzIC0td2l0aC08QVJHVU1FTlQgMT4gaW5zdGVhZAorQUNfREVGVU4oW05FVFNOTVBfSU5WQUxJRF9XSVRIXSwKKyAgW0FDX01TR19FUlJPUihbSW52YWxpZCBvcHRpb24uIFVzZSAtLXdpdGgtJDEvLS13aXRob3V0LSQxIGluc3RlYWRdKV0pCisKK2RubCBTaW1pbGFyIHRvIEFDX0FSR19FTkFCTEUgYnV0IGFsc28gZGVmaW5lcyBhIG1hdGNoaW5nIFdJVEggb3B0aW9uIHRoYXQKK2RubCBzdWdnZXN0cyB0aGUgdXNlIG9mIHRoZSBFTkFCTEUgb3B0aW9uIGlmIGNhbGxlZAorQUNfREVGVU4oW05FVFNOTVBfQVJHX0VOQUJMRV0sCisgIFtBQ19BUkdfRU5BQkxFKFskMV0sWyQyXWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgMyksMSxbXSxbLFskM11dKWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgNCksMSxbXSxbLFskNF1dKSkKKyAgIEFDX0FSR19XSVRIKAorICAgICBbJDFdLCwKKyAgICAgW05FVFNOTVBfSU5WQUxJRF9FTkFCTEUoWyQxXSldKV0pCisKK2RubCBTaW1pbGFyIHRvIEFDX0FSR19XSVRIIGJ1dCBhbHNvIGRlZmluZXMgYSBtYXRjaGluZyBFTkFCTEUgb3B0aW9uIHRoYXQKK2RubCBzdWdnZXN0cyB0aGUgdXNlIG9mIHRoZSBXSVRIIG9wdGlvbiBpZiBjYWxsZWQKK0FDX0RFRlVOKFtORVRTTk1QX0FSR19XSVRIXSwKKyAgW0FDX0FSR19XSVRIKFskMV0sWyQyXWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgMyksMSxbXSxbLFskM11dKWRubAorICAgICBtNF9pZihtNF9ldmFsKCQjIDwgNCksMSxbXSxbLFskNF1dKSkKKyAgIEFDX0FSR19FTkFCTEUoCisgICAgIFskMV0sLAorICAgICBbTkVUU05NUF9JTlZBTElEX1dJVEgoWyQxXSldKV0pCmRpZmYgLS1naXQgYS9tNC9uZXRzbm1wX3NlYXJjaF9saWJzLm00IGIvbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGQ4YTEyCi0tLSAvZGV2L251bGwKKysrIGIvbTQvbmV0c25tcF9zZWFyY2hfbGlicy5tNApAQCAtMCwwICsxLDM1IEBACitkbmwgQHN5bm9wc2lzIE5FVFNOTVBfU0VBUkNIX0xJQlMoRlVOQ1RJT04sIFNFQVJDSC1MSUJTLCBbQUNUSU9OLUlGLUZPVU5EXSwKK2RubCAgICAgICAgICAgICBbQUNUSU9OLUlGLU5PVC1GT1VORF0sIFtPVEhFUi1MSUJSQVJJRVNdLCBbVEFSR0VULVZBUklBQkxFXSkKK2RubCBTaW1pbGFyIHRvIEFDX1NFQVJDSF9MSUJTIGJ1dCBjaGFuZ2VzIFRBUkdFVC1WQVJJQUJMRSBpbnN0ZWFkIG9mIExJQlMKK2RubCBJZiBUQVJHRVQtVkFSSUFCTEUgaXMgdW5zZXQgdGhlbiBMSUJTIGlzIHVzZWQKK0FDX0RFRlVOKFtORVRTTk1QX1NFQVJDSF9MSUJTXSwKK1ttNF9wdXNoZGVmKFtuZXRzbm1wX3RhcmdldF0sbTRfaWZ2YWwoWyQ2XSxbJDZdLFtMSUJTXSkpCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsaWJyYXJ5IGNvbnRhaW5pbmcgJDFdLAorICAgIFtuZXRzbm1wX2N2X2Z1bmNfJDFfXW5ldHNubXBfdGFyZ2V0LAorICAgIFtuZXRzbm1wX2Z1bmNfc2VhcmNoX3NhdmVfTElCUz0iJExJQlMiCisgICAgIG00X2lmKG5ldHNubXBfdGFyZ2V0LCBbTElCU10sCisgICAgICAgICBbbmV0c25tcF90YXJnZXRfdmFsPSIkTElCUyIKKyAgICAgICAgICBuZXRzbm1wX3RlbXBfTElCUz0iJDUgJHtMSUJTfSJdLAorICAgICAgICAgW25ldHNubXBfdGFyZ2V0X3ZhbD0iJG5ldHNubXBfdGFyZ2V0IgorICAgICAgICAgIG5ldHNubXBfdGVtcF9MSUJTPSIke25ldHNubXBfdGFyZ2V0X3ZhbH0gJDUgJHtMSUJTfSJdKQorICAgICBuZXRzbm1wX3Jlc3VsdD1ubworICAgICBMSUJTPSIke25ldHNubXBfdGVtcF9MSUJTfSIKKyAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfQ0FMTChbXSxbJDFdKV0sCisgICAgICAgICBbbmV0c25tcF9yZXN1bHQ9Im5vbmUgcmVxdWlyZWQiXSwKKyAgICAgICAgIFtmb3IgbmV0c25tcF9jdXJfbGliIGluICQyIDsgZG8KKyAgICAgICAgICAgICAgTElCUz0iLWwke25ldHNubXBfY3VyX2xpYn0gJHtuZXRzbm1wX3RlbXBfTElCU30iCisgICAgICAgICAgICAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX0NBTEwoW10sWyQxXSldLAorICAgICAgICAgICAgICAgICAgW25ldHNubXBfcmVzdWx0PS1sJHtuZXRzbm1wX2N1cl9saWJ9CisgICAgICAgICAgICAgICAgICAgYnJlYWtdKQorICAgICAgICAgIGRvbmVdKQorICAgICBMSUJTPSIke25ldHNubXBfZnVuY19zZWFyY2hfc2F2ZV9MSUJTfSIKKyAgICAgW25ldHNubXBfY3ZfZnVuY18kMV9dbmV0c25tcF90YXJnZXQ9IiR7bmV0c25tcF9yZXN1bHR9Il0pCisgaWYgdGVzdCAiJHtbbmV0c25tcF9jdl9mdW5jXyQxX11uZXRzbm1wX3RhcmdldH0iICE9ICJubyIgOyB0aGVuCisgICAgaWYgdGVzdCAiJHtbbmV0c25tcF9jdl9mdW5jXyQxX11uZXRzbm1wX3RhcmdldH0iICE9ICJub25lIHJlcXVpcmVkIiA7IHRoZW4KKyAgICAgICBuZXRzbm1wX3RhcmdldD0iJHtuZXRzbm1wX3Jlc3VsdH0gJHtuZXRzbm1wX3RhcmdldF92YWx9IgorICAgIGZpCisgICAgJDMKKyBtNF9pZnZhbChbJDRdLCBbZWxzZQorICAgICQ0XSkKKyBmaQorIG00X3BvcGRlZihbbmV0c25tcF90YXJnZXRdKV0pCmRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUuaW4gYi9tYW4vTWFrZWZpbGUuaW4KaW5kZXggYWIxODM3NS4uZDkwMzcxMyAxMDA2NDQKLS0tIGEvbWFuL01ha2VmaWxlLmluCisrKyBiL21hbi9NYWtlZmlsZS5pbgpAQCAtMTksNyArMTksOCBAQAogCXNubXBidWxrd2Fsay4xIHNubXBnZXRuZXh0LjEgc25tcHRlc3QuMSBzbm1wdHJhbnNsYXRlLjEgc25tcHRyYXAuMSBcCiAJc25tcHVzbS4xIHNubXB2YWNtLjEgc25tcHRhYmxlLjEgc25tcHN0YXR1cy4xIHNubXBjb25mLjEgbWliMmMuMSBcCiAJc25tcG5ldHN0YXQuMSBzbm1wZGVsdGEuMSBzbm1wZGYuMSBlbmNvZGVfa2V5Y2hhbmdlLjEgZml4cHJvYy4xIFwKLQluZXQtc25tcC1jb25maWcuMSBtaWIyYy11cGRhdGUuMSB0a21pYi4xIHRyYXB0b2VtYWlsLjEKKwluZXQtc25tcC1jb25maWcuMSBtaWIyYy11cGRhdGUuMSB0a21pYi4xIHRyYXB0b2VtYWlsLjEgXAorCW5ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEKIAogTUFOMyAgPSBzbm1wX2Nsb3NlLjMgc25tcF9mcmVlX3BkdS4zIHNubXBfb3Blbi4zIHNubXBfcmVhZC4zIFwKIAlzbm1wX3NlbGVjdF9pbmZvLjMgc25tcF9zZW5kLjMgc25tcF90aW1lb3V0LjMJCQkgICAgICAgXApAQCAtNDYsMTAgKzQ3LDE4IEBACiAJbmV0c25tcF9jb250YWluZXIuMyBuZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zIG5ldHNubXBfbGVhZi4zICAgXAogCW5ldHNubXBfcm93X21lcmdlLjMJCSAgICAgICBcCiAJbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMyBuZXRzbm1wX3N0YXNoX2NhY2hlLjMJICAgICAgIFwKLQluZXRzbm1wX3V0aWxpdGllcy4zCisJbmV0c25tcF91dGlsaXRpZXMuMyBcCisJbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zIFwKKwluZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zIFwKKwluZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zIFwKKwluZXRzbm1wX3RhYmxlX3Jvdy4zIFwKKwluZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zIFwKKwluZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zIFwKKwluZXRzbm1wX251bGxfY29udGFpbmVyLjMgXAorCW5ldHNubXBfdG9vbHMuaC4zCiAKLU1BTjNHID0gZGVmYXVsdF9zdG9yZS4zIG1pYl9hcGkuMyByZWFkX2NvbmZpZy4zIHNubXBfYWdlbnRfYXBpLjMgc25tcF9hbGFybS4zIFwKLQlzbm1wX2FwaS4zIHNubXBfc2Vzc19hcGkuMyBzbm1wX3RyYXBfYXBpLjMKK01BTjNHID0gZGVmYXVsdF9zdG9yZS4zIG1pYl9hcGkuMyBjb25maWdfYXBpLjMgc25tcF9hZ2VudF9hcGkuMyBzbm1wX2FsYXJtLjMgXAorCXNlc3Npb25fYXBpLjMgc25tcF9zZXNzX2FwaS4zIHNubXBfdHJhcF9hcGkuMyB2YXJiaW5kX2FwaS4zIHBkdV9hcGkuMyAKIE1BTjVHID0gc25tcGQuY29uZi41IHNubXB0cmFwZC5jb25mLjUgc25tcC5jb25mLjUgc25tcF9jb25maWcuNSB2YXJpYWJsZXMuNSBcCiAgICAgICAgIG1pYjJjLmNvbmYuNSBzbm1wZC5leGFtcGxlcy41IHNubXBkLmludGVybmFsLjUKIE1BTjhHID0gc25tcHRyYXBkLjggc25tcGQuOApAQCAtNjQsNyArNzMsNyBAQAogCXJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlci4zIHJlZ2lzdGVyX2FwcF9wcmVtaWJfaGFuZGxlci4zCVwKIAlyZWdpc3Rlcl9jb25maWdfaGFuZGxlci4zIHJlZ2lzdGVyX21pYl9oYW5kbGVycy4zIAkJXAogCXJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyLjMgCQkJCQlcCi0JdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIuMyB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLjMKKwl1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlci4zIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIuMyByZWFkX2NvbmZpZy4zCiBTTk1QX0FMQVJNX0FMSUFTRVMgPSBzbm1wX2FsYXJtX3JlZ2lzdGVyLjMgc25tcF9hbGFybV9yZWdpc3Rlcl9oci4zIAlcCiAJc25tcF9hbGFybV91bnJlZ2lzdGVyLjMKIFNOTVBfU0VUX1NBVkVfREVTQ1JJUFRJT05TX0FMSUFTRVMgPSBmcHJpbnRfZGVzY3JpcHRpb24uMyBmcHJpbnRfb2JqaWQuMyBcCkBAIC05Miw4ICsxMDEsOCBAQAogCQllY2hvICIuc28gbWFuMy9kZWZhdWx0X3N0b3JlLjMiID4gJCRpIDsgCQlcCiAJZG9uZQogCUBmb3IgaSBpbiAkKFJFQURfQ09ORklHX0FMSUFTRVMpIDsgZG8JCQkJXAotCQllY2hvICJtYWtpbmcgbWFuIHBhZ2UgYWxpYXMgJCRpIC0+IHJlYWRfY29uZmlnIEFQSXMiIDsJXAotCQllY2hvICIuc28gbWFuMy9yZWFkX2NvbmZpZy4zIiA+ICQkaSA7IAkJCVwKKwkJZWNobyAibWFraW5nIG1hbiBwYWdlIGFsaWFzICQkaSAtPiBjb25maWdfYXBpIEFQSXMiIDsJXAorCQllY2hvICIuc28gbWFuMy9jb25maWdfYXBpLjMiID4gJCRpIDsgCQkJXAogCWRvbmUKIAlAZm9yIGkgaW4gJChTTk1QX0FMQVJNX0FMSUFTRVMpIDsgZG8JCQkJXAogCQllY2hvICJtYWtpbmcgbWFuIHBhZ2UgYWxpYXMgJCRpIC0+IHNubXBfYWxhcm0gQVBJcyIgOwlcCkBAIC0xMDcsNiArMTE2LDcgQEAKIAkJZWNobyAibWFraW5nIG1hbiBwYWdlIGFsaWFzICQkaSAtPiBzbm1wX3RyYXAgQVBJcyIgOwlcCiAJCWVjaG8gIi5zbyBtYW4zL3NubXBfdHJhcF9hcGkuMyIgPiAkJGkgOwkJCVwKIAlkb25lCisJZWNobyAiLnNvIG1hbjMvc2Vzc2lvbl9hcGkuMyIgPiBzbm1wX2FwaS4zCiAKIHNubXBidWxrZ2V0LjE6ICQoc3JjZGlyKS9zbm1wYnVsa2dldC4xLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3NubXBidWxrZ2V0LjEuZGVmID4gc25tcGJ1bGtnZXQuMQpAQCAtMTgwLDE3ICsxOTAsMjkgQEAKIG5ldC1zbm1wLWNvbmZpZy4xOiAkKHNyY2RpcikvbmV0LXNubXAtY29uZmlnLjEuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvbmV0LXNubXAtY29uZmlnLjEuZGVmID4gbmV0LXNubXAtY29uZmlnLjEKIAorbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMTogJChzcmNkaXIpL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmIC4uL3NlZHNjcmlwdAorCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYgPiBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci4xCisKIHRrbWliLjE6ICQoc3JjZGlyKS90a21pYi4xLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3RrbWliLjEuZGVmID4gdGttaWIuMQogCiB0cmFwdG9lbWFpbC4xOiAkKHNyY2RpcikvdHJhcHRvZW1haWwuMS5kZWYgLi4vc2Vkc2NyaXB0CiAJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS90cmFwdG9lbWFpbC4xLmRlZiA+IHRyYXB0b2VtYWlsLjEKIAordmFyYmluZF9hcGkuMzogJChzcmNkaXIpL3ZhcmJpbmRfYXBpLjMuZGVmIC4uL3NlZHNjcmlwdAorCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvdmFyYmluZF9hcGkuMy5kZWYgPiB2YXJiaW5kX2FwaS4zCisKK3BkdV9hcGkuMzogJChzcmNkaXIpL3BkdV9hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0CisJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9wZHVfYXBpLjMuZGVmID4gcGR1X2FwaS4zCisKK3Nlc3Npb25fYXBpLjM6ICQoc3JjZGlyKS9zZXNzaW9uX2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKKwkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3Nlc3Npb25fYXBpLjMuZGVmID4gc2Vzc2lvbl9hcGkuMworCiBtaWJfYXBpLjM6ICQoc3JjZGlyKS9taWJfYXBpLjMuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2RpcikvbWliX2FwaS4zLmRlZiA+IG1pYl9hcGkuMwogCi1yZWFkX2NvbmZpZy4zOiAkKHNyY2RpcikvcmVhZF9jb25maWcuMy5kZWYgLi4vc2Vkc2NyaXB0Ci0JJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9yZWFkX2NvbmZpZy4zLmRlZiA+IHJlYWRfY29uZmlnLjMKK2NvbmZpZ19hcGkuMzogJChzcmNkaXIpL2NvbmZpZ19hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0CisJJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9jb25maWdfYXBpLjMuZGVmID4gY29uZmlnX2FwaS4zCiAKIHNubXBfYWdlbnRfYXBpLjM6ICQoc3JjZGlyKS9zbm1wX2FnZW50X2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3NubXBfYWdlbnRfYXBpLjMuZGVmID4gc25tcF9hZ2VudF9hcGkuMwpAQCAtMTk4LDkgKzIyMCw2IEBACiBzbm1wX2FsYXJtLjM6ICQoc3JjZGlyKS9zbm1wX2FsYXJtLjMuZGVmIC4uL3NlZHNjcmlwdAogCSQoU0VEKSAtZiAuLi9zZWRzY3JpcHQgPCAkKHNyY2Rpcikvc25tcF9hbGFybS4zLmRlZiA+IHNubXBfYWxhcm0uMwogCi1zbm1wX2FwaS4zOiAkKHNyY2Rpcikvc25tcF9hcGkuMy5kZWYgLi4vc2Vkc2NyaXB0Ci0JJChTRUQpIC1mIC4uL3NlZHNjcmlwdCA8ICQoc3JjZGlyKS9zbm1wX2FwaS4zLmRlZiA+IHNubXBfYXBpLjMKLQogc25tcF9zZXNzX2FwaS4zOiAkKHNyY2Rpcikvc25tcF9zZXNzX2FwaS4zLmRlZiAuLi9zZWRzY3JpcHQKIAkkKFNFRCkgLWYgLi4vc2Vkc2NyaXB0IDwgJChzcmNkaXIpL3NubXBfc2Vzc19hcGkuMy5kZWYgPiBzbm1wX3Nlc3NfYXBpLjMKIApAQCAtMjc0LDExICsyOTMsMTEgQEAKICMKIGh0bWw6ICQoTUFOQUxMKQogCWZvciBpIGluICQoTUFOQUxMKTsgZG8gXAotCSAgIGlmIHRlc3QgYHdjIC1sICQkaSB8IGF3ayAne3ByaW50ICQkMX0nYCAhPSAxIDsgdGhlbiBcCisjCSAgIGlmIHRlc3QgYHdjIC1sICQkaSB8IGF3ayAne3ByaW50ICQkMX0nYCAhPSAxIDsgdGhlbiBcCiAJCSAgIGJhc2U9YGVjaG8gJCRpIHwgc2VkICdzLy5bMC05XSQkLy87J2AgOyBcCiAJCSAgIGVjaG8gIjxIVE1MPjxCT0RZIGJnY29sb3I9XCIjZmZmZmZmXCIgYmFja2dyb3VuZD1cIi4uL3VjZC1zbm1wLWJnMy5naWZcIj48UFJFPiIgPiAkJGJhc2UuaHRtbDsgXAogCQkgICBtYW4yaHRtbCAtciAuLyQkaSB8ICQoUEVSTCkgLXAgLWUgJ3MvSFJFRj1cIi4uXC9tYW4uXC8vSFJFRj1cIi9nO3MvXC5bMS05XVwuaHRtbC8uaHRtbC9nOycgfCBncmVwIC12ICdDb250ZW50LXR5cGU6JyA+PiAkJGJhc2UuaHRtbDsgXAogCQkgICBhPSIkJGEgJCRpIjsgXAotCSAgIGZpIDsgXAorIwkgICBmaSA7IFwKIAlkb25lIDtcCiAJJChQRVJMKSBtYWtlX2luZGV4LnBsIG1hbl9zZWN0aW9ucy50eHQgJCRhID4gaW5kZXguaHRtbApkaWZmIC0tZ2l0IGEvbWFuL2NvbmZpZ19hcGkuMy5kZWYgYi9tYW4vY29uZmlnX2FwaS4zLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTA3ZTZlCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL2NvbmZpZ19hcGkuMy5kZWYKQEAgLTAsMCArMSwzMzMgQEAKKy5USCBDT05GSUdfQVBJIDMgIjIxIEFwciAyMDA5IiAiIiAiTmV0LVNOTVAiCisuU0ggTkFNRQorcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyCit1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLCByZWdpc3Rlcl9taWJfaGFuZGxlcnMsIHJlYWRfY29uZmlncywKK3JlYWRfcHJlbWliX2NvbmZpZ3MsIGNvbmZpZ19wZXJyb3IsIGNvbmZpZ19wd2FybiAtIGNvbmZpZ19hcGkgZnVuY3Rpb25zCisuU0ggU1lOT1BTSVMKKy5CICNpbmNsdWRlIDxuZXQtc25tcC9jb25maWdfYXBpLmg+CisuUFAKKy5CIHN0cnVjdCBjb25maWdfbGluZSAqCisuYnIKKy5CSSAiICByZWdpc3Rlcl9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIGZpbGVQcmVmaXggIiwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHRva2VuICwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqInVzYWdlTGluZSAiKTsiCisuUFAKKy5CIHN0cnVjdCBjb25maWdfbGluZSAqCisuYnIKKy5CSSAiICByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcihjb25zdCBjaGFyICoiIGZpbGVQcmVmaXggIiwgCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB0b2tlbiAsCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdXNhZ2VMaW5lICIpOyIKKy5QUAorLkIgInZvaWQgcmVnaXN0ZXJfbWliX2hhbmRsZXJzKHZvaWQpOyIKKy5QUAorLkJJICJ2b2lkIHVucmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqIiBmaWxlUHJlZml4ICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdG9rZW4gIik7IgorLmJyCisuUFAKKy5CSSAidm9pZCB1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnModm9pZCk7IgorLmJyCisuU1MgQXBwbGljYXRpb24gSGFuZGxlcnMKKy5QUAorLkIgc3RydWN0IGNvbmZpZ19saW5lICoKKy5icgorLkJJICIgIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIHRva2VuICwKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqInVzYWdlTGluZSAiKTsiCisuUFAKKy5CIHN0cnVjdCBjb25maWdfbGluZSAqCisuYnIKKy5CSSAiICByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAsCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdXNhZ2VMaW5lICIpOyIKKy5QUAorLkJJICJ2b2lkIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gIik7IgorLmJyCisuU1MgUmVhZGluZyBDb25maWd1cmF0aW9uIEZpbGVzCisuUFAKKy5CICJ2b2lkIHJlYWRfcHJlbWliX2NvbmZpZ3Modm9pZCk7IgorLmJyCisuQiAidm9pZCByZWFkX2NvbmZpZ3Modm9pZCk7IgorLmJyCisuU1MgSGVscCBTdHJpbmdzIGFuZCBFcnJvcnMKKy5QUAorLkJJICJ2b2lkIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKGNoYXIgKiIgbGVhZCAiKTsiCisuYnIKKy5CSSAidm9pZCBjb25maWdfcHdhcm4oY29uc3QgY2hhciAqIiBzdHJpbmcgIik7IgorLmJyCisuQkkgInZvaWQgY29uZmlnX3BlcnJvcihjb25zdCBjaGFyICoiIHN0cmluZyAiKTsiCisKKy5TSCBERVNDUklQVElPTgorVGhlIGZ1bmN0aW9ucyBhcmUgYSBmYWlybHkgZXh0ZW5zaWJsZSBzeXN0ZW0gb2YgcGFyc2luZyB2YXJpb3VzCitjb25maWd1cmF0aW9uIGZpbGVzIGF0IHRoZSBydW4gdGltZSBvZiBhbiBhcHBsaWNhdGlvbi4gIFRoZQorY29uZmlndXJhdGlvbiBmaWxlIGZsb3cgaXMgYnJva2VuIGludG8gdGhlIGZvbGxvd2luZyBwaGFzZXM6CisuUlMgNAorLlRQIDQKKzEuCitSZWdpc3RyYXRpb24gb2YgaGFuZGxlcnMuCisuVFAKKzIuCitSZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBwcmUtTUlCIHBhcnNpbmcgcmVxdWlyZW1lbnRzLgorLlRQCiszLgorUmVhZGluZyBhbmQgcGFyc2luZyBvZiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMuCisuVFAKKzQuCitSZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMuCisuVFAKKzUuCitPcHRpb25hbGx5IHJlLXJlYWRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXQgYSBmdXR1cmUgZGF0ZS4KKy5SRQorLlBQCitUaGUgaWRlYSBpcyB0aGF0IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uIGlzIGFibGUgdG8gcmVnaXN0ZXIKKy5JIGhhbmRsZXJzCitmb3IgY2VydGFpbgorLkkgdG9rZW5zCitzcGVjaWZpZWQgaW4gY2VydGFpbiBuYW1lZAorLkkgImNvbmZpZ3VyYXRpb24gZmlsZXMuIgorVGhlIAorLkIgcmVhZF9jb25maWdzKCkKK2Z1bmN0aW9uIGNhbiB0aGVuIGJlIGNhbGxlZCB0byBsb29rIGZvciBhbGwgcmVsZXZhbnQgY29uZmlndXJhdGlvbiBmaWxlcywKK21hdGNoIHRoZSBmaXJzdCB3b3JkIG9uIGVhY2ggbGluZSBhZ2FpbnN0IHRoZSBsaXN0IG9mIHJlZ2lzdGVyZWQgdG9rZW5zCithbmQgcGFzcyB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaW5lIHRvIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlcmVkIGhhbmRsZXIuCisuU0ggUkVHSVNURVJJTkcgQSBIQU5ETEVSCisuVFAKKy5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKK1JlZ2lzdGVycyBhIGNvbmZpZ3VyYXRpb24gaGFuZGxlciByb3V0aW5lLCB3aGljaCBzaG91bGQgYmUgY2FsbGVkCit0byBwcm9jZXNzIGNvbmZpZ3VyYXRpb24gZGlyZWN0aXZlcyBzdGFydGluZyB3aXRoIHRoZSBzcGVjaWZpZWQgdG9rZW4uCitGb3IgZXhhbXBsZToKKy5QUAorLlJTCisuUlMKK3JlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImV4YW1wbGVUb2tlbiIsIGV4YW1wbGVfaGFuZGxlciwgTlVMTCwgIkFSRzEgW0FSRzJdIik7CisuUkUKKy5SRQorLklQCit3b3VsZCByZWdpc3RlciB0aGUKKy5CIGV4YW1wbGVfaGFuZGxlcigpCitmdW5jdGlvbiBzbyB0aGF0IGl0IHdpbGwgZ2V0IGNhbGxlZCBldmVyeSB0aW1lIHRoZSBmaXJzdCB3b3JkIG9mIGEKK2xpbmUgaW4gdGhlIAorLkkgc25tcC5jb25mCitjb25maWd1cmF0aW9uIGZpbGUocykgbWF0Y2hlcyAiZXhhbXBsZVRva2VuIi4KKy5icgorQ2FsbGluZyB0aGUgYXBwcm9wcmlhdGUgaGFuZGxlcnMgdG8gcHJvY2VzcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGRpcmVjdGl2ZXMKK2lzIHRoZSByZXNwb25zaWJpbGl0eSBvZiAKKy5CIHJlYWRfY29uZmlncygpIAorKHNlZSBiZWxvdykuCisuVFAKKy5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkKK1NpbWlsYXIgdG8gdGhlCisuQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCitmdW5jdGlvbiwgYnV0IHRoZSByZWdpc3RlcmVkIGhhbmRsZXIgcm91dGluZSB3aWxsIGJlIGNhbGxlZAorXGZJYmVmb3JlXGZQIHRoZSB0ZXh0dWFsIE1JQnMgYXJlIHJlYWQgaW4uCitUaGlzIGlzIHR5cGljYWxseSB1c2VkIGZvciB0b2tlbnMgdGhhdCB3aWxsIGFmZmVjdCB0aGUgY29uZmlndXJhdGlvbiBvZgordGhlIE1JQiBwYXJzZXIsIGFuZCB3aWxsIG5vcm1hbGx5IG9ubHkgYmUgdXNlZCB3aXRoaW4gdGhlIFNOTVAgbGlicmFyeSBpdHNlbGYuCisuVFAKKy5CIHJlZ2lzdGVyX21pYl9oYW5kbGVycygpCitJbml0aWFsaXNhdGlvbiByb3V0aW5lIHRvIHJlZ2lzdGVyIHRoZSBpbnRlcm5hbCBTTk1QIGxpYnJhcnkgY29uZmlndXJhdGlvbiBoYW5kbGVycy4KKy5UUAorLkIgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCitSZW1vdmVzIHRoZSByZWdpc3RlcmVkIGNvbmZpZ3VyYXRpb24gaGFuZGxlciBmb3IgdGhlIHNwZWNpZmllZAorLkkgZmlsZVByZWZpeAorYW5kCisuSVIgdG9rZW4gLgorLlRQCisuQiB1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnMoKQorUmVtb3ZlcyBhbGwgcmVnaXN0ZXJlZCBjb25maWd1cmF0aW9uIGhhbmRsZXJzLgorCisuU1MgVG9rZW4gSGFuZGxlcnMKKy5QUAorSGFuZGxlciBmdW5jdGlvbnMgc2hvdWxkIGhhdmUgdGhlIGZvbGxvd2luZyBzaWduYXR1cmU6CisuUFAKKy5SUworLkJJICJ2b2lkIGhhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAiLCBjaGFyICoiIGxpbmUgIik7IgorLlJFCisuUFAKK1RoZSBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aXRoIHR3byBhcmd1bWVudHMsIHRoZSBmaXJzdCBiZWluZyB0aGUKK3Rva2VuIHRoYXQgdHJpZ2dlcmVkIHRoZSBjYWxsIHRvIHRoaXMgZnVuY3Rpb24gKGkuZS4gdGhlIHRva2VuIHVzZWQKK3doZW4gcmVnaXN0ZXJpbmcgdGhlIGhhbmRsZXIpLCBhbmQgdGhlIHNlY29uZAorYmVpbmcgdGhlIHJlbWFpbmRlciBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGxpbmUgKGkuZS4gZXZlcnl0aGluZworZm9sbG93aW5nIHRoZSB3aGl0ZSBzcGFjZSBmb2xsb3dpbmcgdGhlIG1hdGNoZWQgdG9rZW4pLgorCisuU1MgRnJlZWluZyBIYW5kbGVycworLlBQCitJZiB0aGUgdG9rZW4gaGFuZGxlciBmdW5jdGlvbiBkeW5hbWljYWxseSBhbGxvY2F0ZXMgcmVzb3VyY2VzIHdoZW4KK3Byb2Nlc3NpbmcgYSBjb25maWd1cmF0aW9uIGVudHJ5LCB0aGVuIHRoZXNlIG1heSBuZWVkIHRvIGJlIHJlbGVhc2VkCitiZWZvcmUgcmUtcmVhZGluZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4KK0lmIHRoZSBmb3VydGggcGFyYW1ldGVyICgKKy5JIHJlbGVhc2VyCispIHBhc3NlZCB0bworLkIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIKK2lzIG5vbi1OVUxMLCB0aGVuIHRoaXMgc3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJlZm9yZQorcmUtcmVhZGluZyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4gIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGZyZWUgYW55CityZXNvdXJjZXMgYWxsb2NhdGVkIGJ5IHRoZSB0b2tlbiBoYW5kbGVyIGZ1bmN0aW9uIGFuZCByZXNldCBpdHMgbm90aW9uCitvZiB0aGUgY29uZmlndXJhdGlvbiB0byBpdHMgZGVmYXVsdC4gIFRoZSB0b2tlbiBoYW5kbGVyIGZ1bmN0aW9uIGNhbgordGhlbiBzYWZlbHkgYmUgY2FsbGVkIGFnYWluLgorTm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHJlc291cmNlIGZyZWVpbmcgaGFuZGxlci4KKy5icgorTm90ZSB0aGF0IHRoaXMgZnVuY3Rpb24gaXMgbm90IGNhbGxlZCB3aGVuIHRoZSBoYW5kbGVyIGlzCit1bnJlZ2lzdGVyZWQgaW5kaXZpZHVhbGx5IChidXQgXGZJaXNcZlAgY2FsbGVkIGFzIHBhcnQgb2YKKy5CIHVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycygpCispLgorCisuU1MgQXBwbGljYXRpb24gSGFuZGxlcnMKKy5UUAorLkIgcmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKCkKKy5UUAorLkIgcmVnaXN0ZXJfYXBwX3ByZW1pYl9oYW5kbGVyKCkKKy5UUAorLkIgdW5yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoKQorVGhlc2UgZnVuY3Rpb25zIGFyZSBhbmFsYWdvdXMgdG8gCisuQlIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKSAiLCAiIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkgIiBhbmQgIgorLkIgdW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCitidXQgZG8gbm90IHJlcXVpcmUgdGhlIGZpbGUgdHlwZSBhcmd1bWVudCAod2hpY2ggaXMgZmlsbGVkIGluIGJ5IHRoZQorYXBwbGljYXRpb24pLiAgSXQgaXMgaW50ZW5kZWQgdGhhdCBNSUIgbW9kdWxlcyB3cml0dGVuIGZvciB0aGUgYWdlbnQKK3VzZSB0aGVzZSBmdW5jdGlvbnMgdG8gYWxsb3cgdGhlIGFnZW50IHRvIGhhdmUgbW9yZSBjb250cm9sIG92ZXIgd2hpY2gKK2NvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlYWQgKHR5cGljYWxseSB0aGUKKy5JIHNubXBkLmNvbmYKK2ZpbGVzKS4KKy5TSCBSRUFESU5HIENPTkZJR1VSQVRJT04gRklMRVMKKy5UUAorLkIgcmVhZF9wcmVtaWJfY29uZmlncygpCisuVFAKKy5CIHJlYWRfY29uZmlncygpCitUaGVzZSByb3V0aW5lcyBwcm9jZXNzIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvdW5kIGluIHRoZQorY29uZmlndXJhdGlvbiBzZWFyY2ggcGF0aCAoc2VlIGJlbG93KS4gIEZvciBlYWNoIGVudHJ5LCB0aGUKK2hhbmRsZXIgcmVnaXN0ZXJlZCBmb3IgdGhhdCBjb25maWd1cmF0aW9uIHRva2VuIGlzIGNhbGxlZC4KKy5QUAorLkIgcmVhZF9wcmVtaWJfY29uZmlncygpCitpcyBydW4gYmVmb3JlIHRoZSBNSUIgZmlsZXMgYXJlIHJlYWQgaW4sIGFuZCBwcm9jZXNzZXMgdGhvc2UKK2NvbmZpZ3VyYXRpb24gdG9rZW5zIHJlZ2lzdGVyZWQgdXNpbmcKKy5CIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyKCkKKyhvcgorLkIgcmVnaXN0ZXJfYXBwX3ByZW1pYl9oYW5kbGVyKCkKKykuCitBbGwgb3RoZXIgZW50cmllcyBhcmUgaWdub3JlZC4KKy5QUAorLkIgcmVhZF9jb25maWdzKCkKK2lzIHJ1biBhZnRlciB0aGUgTUlCIGZpbGVzIGhhdmUgYmVlbiByZWFkIGluLCBhbmQgcHJvY2Vzc2VzIHRob3NlCitjb25maWd1cmF0aW9uIHRva2VucyByZWdpc3RlcmVkIHVzaW5nCisuQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCisob3IKKy5CIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigpCispLgorSWYgaXQgZW5jb3VudGVycyBhIGNvbmZpZ3VyYXRpb24gdG9rZW4gZm9yIHdoaWNoIG5vIGhhbmRsZXIgaGFzCitiZWVuIHJlZ2lzdGVyZWQgKGVpdGhlciBwcmUtIG9yIHBvc3QtbWliKSwgdGhlbiBpdCB3aWxsIGRpc3BsYXkKK2Egd2FybmluZyBtZXNzYWdlLCBhbmQgY29udGludWUgcHJvY2Vzc2luZyB3aXRoIHRoZSBuZXh0IGxpbmUKK29mIHRoZSBjb25maWd1cmF0aW9uIGZpbGUuCisuU1MgQ29uZmlndXJhdGlvbiBTZWFyY2ggUGF0aAorLlBQCitUaGUgY29uZmlndXJhdGlvbiBmaWxlcyB0byBiZSByZWFkIGFyZSBmb3VuZCBieSBzZWFyY2hpbmcgYSBsaXN0CitvZiBjb25maWd1cmF0aW9uIGRpcmVjdG9yaWVzIGZvciBhcHByb3ByaWF0ZWx5IG5hbWVkIGZpbGVzLgorSW4gZWFjaCBzdWNoIGRpcmVjdG9yeSwgdGhlIGxpYnJhcnkgd2lsbCBsb29rIGZvciBmaWxlcyBuYW1lZAorXGZDIHNubXAuY29uZlxmUCwKK1xmQyBzbm1wLmxvY2FsLmNvbmZcZlAsCitcZklhcHBcZlAuY29uZlxmUCwKK1xmSWFwcFxmUC5sb2NhbC5jb25mXGZQLAorKHdoZXJlIFxmSWFwcFxmUCBpcyB0aGUgYXBwaWNhdGlvbi1zcGVjaWZpYyBmaWxlUHJlZml4IHVzZWQgdG8KK3JlZ2lzdGVyIGNvbmZpZ3VyYXRpb24gaGFuZGxlcnMpLgorSXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgYW55IG9yIGFsbCBvZiB0aGVzZSBmaWxlcyB0byBiZSBwcmVzZW50CitpbiBlYWNoIGRpcmVjdG9yeS4gIE1pc3NpbmcgZmlsZXMgd2lsbCBiZSBzaWxlbnRseSBza2lwcGVkLgorLmJyCitUaGUgaWRlYSBiZWhpbmQgdGhlIHR3byBkaWZmZXJlbnQgc3VmZml4ZXMgaXMgdGhhdCB0aGUgZmlyc3QgZmlsZSBjYW4KK2JlIHNoYXJlZCAodmlhIHJkaXN0IG9yIGFuIE5GUyBtb3VudCkgYWNyb3NzIGEgbGFyZ2UgbnVtYmVyIG9mCittYWNoaW5lcyBhbmQgdGhlIHNlY29uZCBmaWxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBsb2NhbCBzZXR0aW5ncworZm9yIG9uZSBwYXJ0aWN1bGFyIG1hY2hpbmUuCisuUFAKK1RoZSBkZWZhdWx0IGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGlzCitTWVNDT05GRElSL3NubXAsIGZvbGxvd2VkIGJ5IERBVEFESVIvc25tcCwgZm9sbG93ZWQgYnkgTElCRElSL3NubXAsCitmb2xsb3dlZCBieSAkSE9NRS8uc25tcC4KK1RoaXMgbGlzdCBjYW4gYmUgY2hhbmdlZCBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlCisuSSBTTk1QQ09ORlBBVEgKK3RvIGJlIGEgKGNvbG9uIHNlcGFyYXRlZCkgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2guCisuYnIKKy5TUyBpbml0X3NubXAoKQorLlBQCitUaGUgbm9ybWFsIG1vZGUgb2Ygb3BlcmF0aW9uIHdvdWxkIGJlIHRvIHJlZ2lzdGVyIHRoZSBhcHBsaWNhdGlvbi1zcGVjaWZpYworY29uZmlndXJhdGlvbiBoYW5kbGVycywgYW5kIHRoZW4gaW52b2tlCisuQlIgaW5pdF9zbm1wKCkgIi4iCitUaGlzIHdvdWxkIGNhbGwgdGhlIHJvdXRpbmVzIGxpc3RlZCBhYm92ZSB0byByZWdpc3RlciB0aGUgaW50ZXJuYWwgbGlicmFyeQorY29uZmlndXJhdGlvbiBoYW5kbGVycywgcHJvY2VzcyBhbnkgY29uZmlndXJhdGlvbiB0b2tlbnMgcmVnaXN0ZXJlZCB3aXRoCisuQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpLAorcmVhZCBpbiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMgdXNpbmcKKy5CIGluaXRfbWliKCksCithbmQgZmluYWxseSBwYXJzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRva2VucyByZWdpc3RlcmVkIHdpdGggCisuQlIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKSAuCisuUFAKK0lmIHRoZSAKKy5CIGluaXRfc25tcCgpCitmdW5jdGlvbiBpcyB1c2VkLCBub25lIG9mIHRoZXNlIGZ1bmN0aW9ucyBuZWVkIHRvIGJlIGV4cGxpY2l0bHkKK2NhbGxlZCBieSB0aGUgYXBwbGljYXRpb24uCisuU0ggSEVMUCBTVFJJTkdTIEFORCBFUlJPUlMKKy5QUAorVGhlCisuSSB1c2FnZUxpbmUKK3BhcmFtZXRlciBwYXNzZWQgdG8KKy5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKK2FuZCBzaW1pbGFyIGNhbGxzLCBpcyB1c2VkIHRvIGRpc3BsYXkgaGVscCBpbmZvcm1hdGlvbiB3aGVuIHRoZQorLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQorZnVuY3Rpb24gaXMgY2FsbGVkLiAgVGhpcyBmdW5jdGlvbiBpcyB1c2VkIGJ5IGFsbCBvZiB0aGUgYXBwbGljYXRpb25zCit3aGVuIHRoZSAKKy5CIC1ICitmbGFnIGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLiAgSXQgcHJpbnRzIGEgc3VtbWFyeSBvZiBhbGwgb2YgdGhlCitjb25maWd1cmF0aW9uIGZpbGUgbGluZXMsIGFuZCB0aGUgYXNzb2NpYXRlZCBmaWxlcywgdGhhdCB0aGUKK2NvbmZpZ3VyYXRpb24gc3lzdGVtIHVuZGVyc3RhbmRzLiAgVGhlCisuSSB1c2FnZUxpbmUKK3BhcmFtZXRlciBzaG91bGQgYmUgYSBsaXN0IG9mIGFyZ3VtZW50cyBleHBlY3RlZCBhZnRlciB0aGUgdG9rZW4sIGFuZAorbm90IGEgbGVuZ3RoeSBkZXNjcmlwdGlvbiAod2hpY2ggc2hvdWxkIGdvIGludG8gYSBtYW51YWwgcGFnZQoraW5zdGVhZCkuICBUaGUKKy5JIGxlYWQKK3ByZWZpeCB3aWxsIGJlIHByZXBlbmRlZCB0byBlYWNoIGxpbmUgdGhhdCB0aGUgZnVuY3Rpb24gcHJpbnRzIHRvCitzdGRlcnIsIHdoZXJlIGl0IGRpc3BsYXlzIGl0cyBvdXRwdXQuCisuUFAKK1RoZQorLkIgaW5pdF9zbm1wKCkKK2Z1bmN0aW9uIHNob3VsZCBiZSBjYWxsZWQgYmVmb3JlIHRoZQorLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQorZnVuY3Rpb24gaXMgY2FsbGVkLCBzbyB0aGF0IHRoZSBsaWJyYXJ5IGNhbiByZWdpc3RlciBpdHMgY29uZmlndXJhdGlvbiAKK2ZpbGUgZGlyZWN0aXZlcyBhcyB3ZWxsIGZvciB0aGUgCisuQiByZWFkX2NvbmZpZ19wcmludF91c2FnZSgpCitmdW5jdGlvbiB0byBkaXNwbGF5LgorLlNTIEVycm9yIEhhbmRsaW5nIEZ1bmN0aW9ucworLlBQCitUaGUgdHdvIGZ1bmN0aW9ucworLkIgY29uZmlnX3B3YXJuKCkKK2FuZAorLkIgY29uZmlnX3BlcnJvcigpCitib3RoIHRha2UgYW4gZXJyb3Igc3RyaW5nIGFzIGFuIGFyZ3VtZW50IGFuZCBwcmludCBpdCB0byBzdGRlcnIgYWxvbmcKK3dpdGggdGhlIGZpbGUgYW5kIGxpbmUgbnVtYmVyIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4gIEEgY2FsbCB0byB0aGUKK3NlY29uZCBmdW5jdGlvbiB3aWxsIGFsc28gZm9yY2UgCisuQiByZWFkX2NvbmZpZ3MoKSAKK3RvIGV2ZW50dWFsbHkgcmV0dXJuIHdpdGggYW4gZXJyb3IgY29kZSBpbmRpY2F0aW5nIHRvIGl0J3MgY2FsbGluZworZnVuY3Rpb24gdGhhdCBpdCBzaG91bGQgYWJvcnQgdGhlIG9wZXJhdGlvbiBvZiB0aGUgYXBwbGljYXRpb24uCisuU0ggIkVOVklST05NRU5UIFZBUklBQkxFUyIKKy5UUCAxMAorU05NUENPTkZQQVRICitBIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3IgY29uZmlndXJhdGlvbgorZmlsZXMgaW4uCitEZWZhdWx0OiBTWVNDT05GRElSL3NubXA6REFUQURJUi9zbm1wOkxJQkRJUi9zbm1wOiRIT01FLy5zbm1wCisuU0ggIlNFRSBBTFNPIgorLkJSIG1pYl9hcGkgIigzKSwgIiBzbm1wX2FwaSAoMykKKy5cIiBMb2NhbCBWYXJpYWJsZXM6CisuXCIgIG1vZGU6IG5yb2ZmCisuXCIgRW5kOgpkaWZmIC0tZ2l0IGEvbWFuL21ha2VfaW5kZXgucGwgYi9tYW4vbWFrZV9pbmRleC5wbAppbmRleCA3YWIxZGQyLi4zNzU2NmJhIDEwMDY0NAotLS0gYS9tYW4vbWFrZV9pbmRleC5wbAorKysgYi9tYW4vbWFrZV9pbmRleC5wbApAQCAtMjUsNiArMjUsNyBAQAogCWNob21wKCRuYW1lKTsKIAlpZiAoIWV4aXN0cygkcGFnZXN7JG5hbWV9KSkgewogCSAgICBwcmludCBTVERFUlIgIiRuYW1lIGlzIGluICRpbmZpbGUsIGJ1dCBub3QgaW4gdGhlIHJlc3Qgb2YgdGhlIGFyZ3MuXG4iOworCSAgICBwcmludCBTVERFUlIgIk1ha2Ugc3VyZSBpdCdzIG5vdCBsaXN0ZWQgdHdpY2UgaW4gJGluZmlsZSFcbiI7CiAJfQogCW9wZW4oSCwiJG5hbWUuaHRtbCIpOwogCXdoaWxlICg8SD4pIHsKZGlmZiAtLWdpdCBhL21hbi9tYW5fc2VjdGlvbnMudHh0IGIvbWFuL21hbl9zZWN0aW9ucy50eHQKaW5kZXggYjgxOGIwZC4uZmNjZThmOSAxMDA2NDQKLS0tIGEvbWFuL21hbl9zZWN0aW9ucy50eHQKKysrIGIvbWFuL21hbl9zZWN0aW9ucy50eHQKQEAgLTEsNCArMSw1IEBACiAjIFNOTVAgYmFzaWMgYXBwbGljYXRpb25zCitlbmNvZGVfa2V5Y2hhbmdlCiBzbm1wY21kCiBzbm1wdHJhbnNsYXRlCiBzbm1wZ2V0CkBAIC04LDYgKzksNyBAQAogc25tcGJ1bGt3YWxrCiBzbm1wc2V0CiBzbm1wdGVzdAordGttaWIKICMgU05NUCAic2Vjb25kLWxldmVsIiBhcHBsaWNhdGlvbnMKIHNubXB0YWJsZQogc25tcGRlbHRhCkBAIC0xNywxOCArMTksMjUgQEAKIHNubXBuZXRzdGF0CiBzbm1wZGYKICMgTm90aWZpY2F0aW9uIG1hbnVhbCBwYWdlcworc25tcGluZm9ybQogc25tcHRyYXAKIHNubXB0cmFwZAogc25tcHRyYXBkLmNvbmYKK3RyYXB0b2VtYWlsCiAjIFNOTVAgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiBtYW51YWwgcGFnZXMKK25ldC1zbm1wLWNvbmZpZwogc25tcGNvbmYKIHNubXBfY29uZmlnCiBzbm1wLmNvbmYKICMgQWdlbnQgbWFudWFsIHBhZ2VzCitmaXhwcm9jCiBzbm1wZAogc25tcGQuY29uZgorc25tcGQuZXhhbXBsZXMKK3NubXBkLmludGVybmFsCiBtaWIyYwogbWliMmMuY29uZgorbWliMmMtdXBkYXRlCiAjIFNOTVAgYmFzZSBsaWJyYXJ5IEFQSXMKIG5ldHNubXBfbGlicmFyeQogcmVhZF9jb25maWcKQEAgLTQxLDMzICs1MCwxMDkgQEAKIG5ldHNubXBfbWliX3V0aWxpdGllcwogbmV0c25tcF9kZWJ1ZwogIyBBZ2VudCBBUEkgbWFudWFscworYWRkX21pYmRpcgorYWRkX21vZHVsZV9yZXBsYWNlbWVudAorY29uZmlnX3BlcnJvcgorY29uZmlnX3B3YXJuCitmcHJpbnRfZGVzY3JpcHRpb24KK2ZwcmludF9vYmppZAorZnByaW50X3ZhbHVlCitmcHJpbnRfdmFyaWFibGUKK2dldF9tb2R1bGVfbm9kZQoraW5pdF9taWIKK2luaXRfbWliX2ludGVybmFscwogbmV0c25tcF9hZ2VudAotc25tcF9hZ2VudF9hcGkKLXNubXBfdHJhcF9hcGkKLW5ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcwotbmV0c25tcF91dGlsaXRpZXMKLW5ldHNubXBfaGFuZGxlcgotbmV0c25tcF9zY2FsYXIKIG5ldHNubXBfYmFieV9zdGVwcwogbmV0c25tcF9idWxrX3RvX25leHQKLW5ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwCi1uZXRzbm1wX2V4YW1wbGVfc2NhbGFyX2ludAotbmV0c25tcF90YWJsZV9kYXRhc2V0Ci1uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcwotbmV0c25tcF9vbGRfYXBpCi1uZXRzbm1wX3dhdGNoZXIKLW5ldHNubXBfdGFibGVfYXJyYXkKLW5ldHNubXBfbXVsdGlwbGV4ZXIKLW5ldHNubXBfc2VyaWFsaXplCiBuZXRzbm1wX2NhY2hlX2hhbmRsZXIKLW5ldHNubXBfQ29udGFpbmVyX2l0ZXJhdG9yCi1uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yCi1uZXRzbm1wX3RhYmxlCi1uZXRzbm1wX3RhYmxlX2RhdGEKLW5ldHNubXBfc3Rhc2hfY2FjaGUKLW5ldHNubXBfcm93X21lcmdlCi1uZXRzbm1wX3JlYWRfb25seQotbmV0c25tcF9sZWFmCi1uZXRzbm1wX2luc3RhbmNlCiBuZXRzbm1wX2NvbnRhaW5lcgorbmV0c25tcF9Db250YWluZXJfaXRlcmF0b3IKK25ldHNubXBfZHNfZ2V0X2Jvb2xlYW4KK25ldHNubXBfZHNfZ2V0X2ludAorbmV0c25tcF9kc19nZXRfc3RyaW5nCituZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZworbmV0c25tcF9kc19yZWdpc3Rlcl9wcmVtaWIKK25ldHNubXBfZHNfc2V0X2Jvb2xlYW4KK25ldHNubXBfZHNfc2V0X2ludAorbmV0c25tcF9kc19zZXRfc3RyaW5nCituZXRzbm1wX2RzX3NodXRkb3duCituZXRzbm1wX2V4YW1wbGVfc2NhbGFyX2ludAorbmV0c25tcF9oYW5kbGVyCituZXRzbm1wX2luc3RhbmNlCituZXRzbm1wX2l0ZXJhdG9yX2luZm9fcworbmV0c25tcF9sZWFmCituZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMKIG5ldHNubXBfbW9kZV9lbmRfY2FsbAorbmV0c25tcF9tdWx0aXBsZXhlcgorbmV0c25tcF9vbGRfYXBpCituZXRzbm1wX3JlYWRfb25seQorbmV0c25tcF9yb3dfbWVyZ2UKK25ldHNubXBfc2NhbGFyCituZXRzbm1wX3NjYWxhcl9ncm91cF9ncm91cAorbmV0c25tcF9zZXJpYWxpemUKK25ldHNubXBfc3Rhc2hfY2FjaGUKK25ldHNubXBfdGFibGUKK25ldHNubXBfdGFibGVfYXJyYXkKK25ldHNubXBfdGFibGVfZGF0YQorbmV0c25tcF90YWJsZV9kYXRhc2V0CituZXRzbm1wX3RhYmxlX2l0ZXJhdG9yCituZXRzbm1wX3V0aWxpdGllcworbmV0c25tcF93YXRjaGVyCitwcmludF9kZXNjcmlwdGlvbgorcHJpbnRfbWliCitwcmludF9vYmppZAorcHJpbnRfdmFsdWUKK3ByaW50X3ZhcmlhYmxlCityZWFkX2FsbF9taWJzCityZWFkX2NvbmZpZ19wcmludF91c2FnZQorcmVhZF9jb25maWdzCityZWFkX21pYgorcmVhZF9tb2R1bGUKK3JlYWRfbW9kdWxlX25vZGUKK3JlYWRfb2JqaWQKK3JlYWRfcHJlbWliX2NvbmZpZ3MKK3JlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcgorcmVnaXN0ZXJfYXBwX3ByZW1pYl9oYW5kbGVyCityZWdpc3Rlcl9jb25maWdfaGFuZGxlcgorcmVnaXN0ZXJfbWliX2hhbmRsZXJzCityZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcgorc2VuZF9lYXN5X3RyYXAKK3NlbmRfdHJhcF92YXJzCitzZW5kX3YydHJhcAorc2h1dGRvd25fbWliCitzbm1wX2FnZW50X2FwaQorc25tcF9hbGFybV9yZWdpc3Rlcgorc25tcF9hbGFybV9yZWdpc3Rlcl9ocgorc25tcF9hbGFybV91bnJlZ2lzdGVyCitzbm1wX2FwaV9lcnJzdHJpbmcKK3NubXBfY2xvc2UKK3NubXBfZXJyb3IKK3NubXBfZnJlZV9wZHUKK3NubXBfb3Blbgorc25tcF9wZXJyb3IKK3NubXBfcmVhZAorc25tcF9zZWxlY3RfaW5mbworc25tcF9zZW5kCitzbm1wX3Nlc3NfYXN5bmNfc2VuZAorc25tcF9zZXNzX2Nsb3NlCitzbm1wX3Nlc3NfZXJyb3IKK3NubXBfc2Vzc19pbml0Citzbm1wX3Nlc3Nfb3Blbgorc25tcF9zZXNzX3BlcnJvcgorc25tcF9zZXNzX3JlYWQKK3NubXBfc2Vzc19zZWxlY3RfaW5mbworc25tcF9zZXNzX3NlbmQKK3NubXBfc2Vzc19zZXNzaW9uCitzbm1wX3Nlc3NfdGltZW91dAorc25tcF9zZXRfbWliX3dhcm5pbmdzCitzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucworc25tcF90aW1lb3V0Citzbm1wX3RyYXBfYXBpCitzbnByaW50X29iamlkCitzbnByaW50X3ZhbHVlCitzbnByaW50X3ZhcmlhYmxlCitzcHJpbnRfcmVhbGxvY19vYmppZAorc3ByaW50X3JlYWxsb2NfdmFsdWUKK3NwcmludF9yZWFsbG9jX3ZhcmlhYmxlCit1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcgordW5yZWdpc3Rlcl9jb25maWdfaGFuZGxlcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21hbi9taWJfYXBpLjMuZGVmIGIvbWFuL21pYl9hcGkuMy5kZWYKaW5kZXggNWI2ZDFiMC4uYjA1ZWQ5NCAxMDA2NDQKLS0tIGEvbWFuL21pYl9hcGkuMy5kZWYKKysrIGIvbWFuL21pYl9hcGkuMy5kZWYKQEAgLTEsMTIwICsxLDE0OSBAQAogLlRIIE1JQl9BUEkgMyAiMjIgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogaW5pdF9taWIsIGFkZF9taWJkaXIsIGluaXRfbWliX2ludGVybmFscywKLWFkZF9tb2R1bGVfcmVwbGFjZW1lbnQsCi1yZWFkX21vZHVsZSwgcmVhZF9taWIsIHJlYWRfYWxsX21pYnMsCi1yZWFkX29iamlkLCByZWFkX21vZHVsZV9ub2RlLCBnZXRfbW9kdWxlX25vZGUsCi1zbm1wX3NldF9taWJfd2FybmluZ3MsIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zLAogc2h1dGRvd25fbWliLAorbmV0c25tcF9yZWFkX21vZHVsZSwgcmVhZF9taWIsIHJlYWRfYWxsX21pYnMsCithZGRfbW9kdWxlX3JlcGxhY2VtZW50LAorcmVhZF9vYmppZCwgc25tcF9wYXJzZV9vaWQsIGdldF9tb2R1bGVfbm9kZSwKK3NubXBfc2V0X21pYl9lcnJvcnMsIHNubXBfc2V0X21pYl93YXJuaW5ncywgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnMsCiBwcmludF9taWIsCi1wcmludF92YXJpYWJsZSwgZnByaW50X3ZhcmlhYmxlLCBzbnByaW50X3ZhcmlhYmxlLCBzcHJpbnRfcmVhbGxvY192YXJpYWJsZSwKLXByaW50X3ZhbHVlLCBmcHJpbnRfdmFsdWUsIHNucHJpbnRfdmFsdWUsIHNwcmludF9yZWFsbG9jX3ZhbHVlLAotcHJpbnRfb2JqaWQsIGZwcmludF9vYmppZCwgc25wcmludF9vYmppZCwgc3ByaW50X3JlYWxsb2Nfb2JqaWQsCi1wcmludF9kZXNjcmlwdGlvbiwgZnByaW50X2Rlc2NyaXB0aW9uIC0gbWliX2FwaSBmdW5jdGlvbnMKK3ByaW50X29iamlkLCBmcHJpbnRfb2JqaWQsIHNucHJpbnRfb2JqaWQsCitwcmludF9kZXNjcmlwdGlvbiwgZnByaW50X2Rlc2NyaXB0aW9uLCBzbnByaW50X2Rlc2NyaXB0aW9uIC0gbWliX2FwaSBmdW5jdGlvbnMKIC5TSCBTWU5PUFNJUwogLkIgI2luY2x1ZGUgPG5ldC1zbm1wL21pYl9hcGkuaD4KIC5QUAogLkIgInZvaWQgaW5pdF9taWIodm9pZCk7Ci0uYnIKKy5QUAogLkJJICJpbnQgYWRkX21pYmRpcihjb25zdCBjaGFyICoiICJkaXJuYW1lIiApOwogLmJyCi0uQkkgImludCBhZGRfbW9kdWxlX3JlcGxhY2VtZW50KGNvbnN0IGNoYXIgKiIgIm9sZF9tb2R1bGUiICIsIGNvbnN0IGNoYXIgKiIgIm5ld19tb2R1bGUiICIsIGNvbnN0IGNoYXIgKiIgInRhZyIgIiwgaW50ICIgImxlbiIgKTsKLS5icgogLkIgInZvaWQgaW5pdF9taWJfaW50ZXJuYWxzKHZvaWQpOwotLmJyCi0uQkkgInN0cnVjdCB0cmVlICpyZWFkX21vZHVsZShjb25zdCBjaGFyICoiICJuYW1lIiApOworLlBQCisuQiAidm9pZCBzaHV0ZG93bl9taWIodm9pZCk7CisuU1MgUmVhZGluZyBhbmQgUGFyc2luZyBNSUJzCisuUFAKKy5CSSAic3RydWN0IHRyZWUgKm5ldHNubXBfcmVhZF9tb2R1bGUoY29uc3QgY2hhciAqIiAibmFtZSIgKTsKIC5icgogLkJJICJzdHJ1Y3QgdHJlZSAqcmVhZF9taWIoY29uc3QgY2hhciAqIiAiZmlsZW5hbWUiICk7CiAuYnIKIC5CICJzdHJ1Y3QgdHJlZSAqcmVhZF9hbGxfbWlicyh2b2lkKTsKIC5QUAotLkIgInZvaWQgc2h1dGRvd25fbWliKHZvaWQpOwotLlBQCi0uQkkgInZvaWQgcHJpbnRfbWliKEZJTEUgKiIgImZwIiApOwotLlBQCi0uQkkgImludCByZWFkX29iamlkKGNvbnN0IGNoYXIgKiIgImlucHV0IiAiLCBvaWQgKiIgIm91dHB1dCIgIiwgc2l6ZV90ICoiICJvdXRfbGVuIiApOworLkJJICJpbnQgYWRkX21vZHVsZV9yZXBsYWNlbWVudChjb25zdCBjaGFyICoiICJvbGRfbW9kdWxlIiAiLCIKIC5icgotLkJJICJpbnQgZ2V0X21vZHVsZV9ub2RlKGNvbnN0IGNoYXIgKiIgIm5hbWUiICIsIGNvbnN0IGNoYXIgKiIgIm1vZHVsZSIgIiwgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICoiICJvYmppZGxlbiIgKTsKLS5QUAotLkJJICJ2b2lkIHByaW50X3ZhcmlhYmxlKGNvbnN0IG9pZCAqIiAib2JqaWQiICIsIHNpemVfdCAiICJvYmppZGxlbiIgIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiICJ2YXJpYWJsZSIgKTsKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiAibmV3X21vZHVsZSIgIiwiCiAuYnIKLS5CSSAidm9pZCBmcHJpbnRfdmFyaWFibGUoRklMRSAqIiBmcCAiLCBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICk7Ci0uYnIKLS5CSSAiaW50IHNucHJpbnRfdmFyaWFibGUoY2hhciAqIiAiYnVmIiAiLCBzaXplX3QgIiAibGVuIiAiLCBjb25zdCBvaWQgKiIgIm9iamlkIiAiLCBzaXplX3QgIiAib2JqaWRsZW4iICIsIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiAidmFyaWFibGUiICk7Ci0uYnIKLS5CSSAiaW50IHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlKHVfY2hhciAqKiIgYnVmICIsIHNpemVfdCAqIiBidWZfbGVuICIsIHNpemVfdCAqIiBvdXRfbGVuICIsIGludCAiIGFsbG93X3JlYWxsb2MgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSApOwotLlBQCi0uQkkgInZvaWQgcHJpbnRfdmFsdWUob2lkICpvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZhcmlhYmxlKQotLmJyCi0uQkkgInZvaWQgZnByaW50X3ZhbHVlKEZJTEUgKiIgZnAgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSApOwotLmJyCi0uQkkgImludCBzbnByaW50X3ZhbHVlKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgKTsKLS5icgotLkJJICJpbnQgc3ByaW50X3JlYWxsb2NfdmFsdWUodV9jaGFyICoqIiBidWYgIiwgc2l6ZV90ICoiIGJ1Zl9sZW4gIiwgc2l6ZV90ICoiIG91dF9sZW4gIiwgaW50ICIgYWxsb3dfcmVhbGxvYyAiLCBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICk7Ci0uUFAKLS5CSSAidm9pZCBwcmludF9vYmppZChjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gKTsKLS5icgotLkJJICJ2b2lkIGZwcmludF9vYmppZChGSUxFICoiIGZwICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiApOwotLmJyCi0uQkkgImludCBzbnByaW50X29iamlkKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiApOwotLmJyCi0uQkkgImludCBzcHJpbnRfcmVhbGxvY19vYmppZCh1X2NoYXIgKioiIGJ1ZiAiLCBzaXplX3QgKiIgYnVmX2xlbiAiLCBzaXplX3QgKiIgb3V0X2xlbiAiLCBpbnQgImFsbG93X3JlYWxsb2MgIiwgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICk7Ci0uUFAKLS5CSSAidm9pZCBwcmludF9kZXNjcmlwdGlvbihvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgaW50ICIgd2lkdGggKTsKLS5icgotLkJJICJ2b2lkIGZwcmludF9kZXNjcmlwdGlvbihGSUxFICoiIGZwICIsIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCBpbnQgIiB3aWR0aCApOworLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiICJ0YWciICIsIGludCAiICJsZW4iICk7CiAuUFAKIC5CSSAidm9pZCBzbm1wX3NldF9taWJfd2FybmluZ3MoaW50ICIgbGV2ZWwgKTsKIC5icgorLkJJICJ2b2lkIHNubXBfc2V0X21pYl9lcnJvcnMoICBpbnQgIiBsZXZlbCApOworLmJyCiAuQkkgInZvaWQgc25tcF9zZXRfc2F2ZV9kZXNjcmlwdGlvbnMoaW50ICIgc2F2ZSAiKTsiCisuU1MgU2VhcmNoaW5nIHRoZSBNSUIgVHJlZQorLlBQCisuQkkgImludCAgcmVhZF9vYmppZChjb25zdCBjaGFyICoiICJpbnB1dCIgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgIG9pZCAqIiAib2JqaWQiICIsIHNpemVfdCAqIiAib2JqaWRsZW4iICk7CisuYnIKKy5CSSAib2lkICpzbm1wX3BhcnNlX29pZChjb25zdCBjaGFyICoiICJpbnB1dCIgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgIG9pZCAqIiAib2JqaWQiICIsIHNpemVfdCAqIiAib2JqaWRsZW4iICk7CisuYnIKKy5CSSAiaW50ICBnZXRfbW9kdWxlX25vZGUoY29uc3QgY2hhciAqIiAibmFtZSIgIiwgY29uc3QgY2hhciAqIiAibW9kdWxlIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICoiICJvYmppZGxlbiIgKTsKKy5TUyBPdXRwdXQKKy5QUAorLkJJICJ2b2lkICBwcmludF9taWIoRklMRSAqIiAiZnAiICk7CisuUFAKKy5CSSAidm9pZCAgcHJpbnRfb2JqaWQoY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICk7CisuYnIKKy5CSSAidm9pZCBmcHJpbnRfb2JqaWQoRklMRSAqIiBmcCAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIik7IgorLmJyCisuQkkgImludCBzbnByaW50X29iamlkKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiKTsiCisuUFAKKy5CSSAidm9pZCAgcHJpbnRfZGVzY3JpcHRpb24oY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIGludCAiIHdpZHRoICk7CisuYnIKKy5CSSAidm9pZCBmcHJpbnRfZGVzY3JpcHRpb24oRklMRSAqIiBmcCAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgaW50ICIgd2lkdGggKTsKKy5icgorLkJJICJpbnQgc25wcmludF9kZXNjcmlwdGlvbihjaGFyICoiIGJ1ZiAiLCBzaXplX3QgIiAibGVuIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwgaW50ICIgd2lkdGggKTsKKy5icgogLlBQCiAuU0ggREVTQ1JJUFRJT04KLVRoZSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIE1JQiBtb2R1bGVzIGZhbGwgaW50byBmb3VyIGdyb3Vwcy4gIFRob3NlCi1kZWFsaW5nIHdpdGggaW5pdGlhbGlzYXRpb24gYW5kIHNodXRkb3duLCB0aG9zZSB0aGF0IHJlYWQgaW4gYW5kCi1wYXJzZSBNSUIgZmlsZXMsIHRob3NlIHRoYXQgc2VhcmNoIHRoZSBNSUIgdHJlZSwgYW5kIHZhcmlvdXMgb3V0cHV0Ci1yb3V0aW5lcy4KK1RoZSBmdW5jdGlvbnMgZGVhbGluZyB3aXRoIE1JQiBtb2R1bGVzIGZhbGwgaW50byBmb3VyIGdyb3VwcyAtIHRob3NlCitkZWFsaW5nIHdpdGggaW5pdGlhbGlzYXRpb24gYW5kIHNodXRkb3duLCB3aXRoIHJlYWRpbmcgaW4gYW5kIHBhcnNpbmcKK01JQiBmaWxlcywgd2l0aCBzZWFyY2hpbmcgdGhlIE1JQiB0cmVlLCBhbmQgb3V0cHV0IHJvdXRpbmVzLgogLlNTIEluaXRpYWxpc2F0aW9uIGFuZCBTaHV0ZG93bgotLkIgaW5pdF9taWIKLWlzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBoYW5kbGVzIGFsbCBjYWxscyB0bwotLkJSIGFkZF9taWJkaXIgIiwgIiByZWFkX21vZHVsZSAiIGFuZCAiIHJlYWRfbWliCi1mb3Igc3RhbmRhcmQgYXBwbGljYXRpb25zLiAgSXQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyCi1yb3V0aW5lIHRoYXQgbWFuaXB1bGF0ZXMgb3IgYWNjZXNzZXMgdGhlIE1JQiB0cmVlLiAgVGhpcyByb3V0aW5lIHNldHMKLXVwIHZhcmlvdXMgaW50ZXJuYWwgc3RydWN0dXJlcywgYXMgd2VsbCBhcyByZWFkaW5nIGluIHRoZSBkZWZhdWx0IE1JQgotbW9kdWxlcywgYXMgZGV0YWlsZWQgYmVsb3cuCiAuUFAKIC5CIGFkZF9taWJkaXIKLWlzIHVzZWQgdG8gZGVmaW5lIHRoZSByYW5nZSBvZiBkaXJlY3RvcnkgbG9jYXRpb25zIHdoaWNoIGFyZSBzZWFyY2hlZAotZm9yIGZpbGVzIGNvbnRhaW5pbmcgTUlCIG1vZHVsZXMgKG9uZSBtb2R1bGUgcGVyIGZpbGUpLiAgQnkgZGVmYXVsdCwKLXRoaXMgd2lsbCBiZSBzZXQgdG8gdGhlIGRpcmVjdG9yeQotLkkgREFUQURJUi9taWJzCi1idXQgdGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotLkkgTUlCRElSUwotdG8gYSAoY29sb24tc2VwYXJhdGVkKSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIHNlYXJjaC4KK2lzIHVzZWQgdG8gYWRkIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5IHRvIHRoZSBwYXRoIG9mIGxvY2F0aW9ucyB3aGljaCBhcmUKK3NlYXJjaGVkIGZvciBmaWxlcyBjb250YWluaW5nIE1JQiBtb2R1bGVzLgogTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgYWN0dWFsbHkgbG9hZCB0aGUgTUlCIG1vZHVsZXMgbG9jYXRlZAotaW4gdGhhdCBkaXJlY3RvcnksIGJ1dCBpcyBhbiBpbml0aWFsaXNhdGlvbiBzdGVwIHRvIG1ha2UgdGhlbSBhdmFpbGFibGUuCitpbiB0aGF0IGRpcmVjdG9yeSwgYnV0IGlzIHNpbXBseSBhbiBpbml0aWFsaXNhdGlvbiBzdGVwIHRvIG1ha2UKK3RoZW0gYXZhaWxhYmxlIHRvCisuQlIgbmV0c25tcF9yZWFkX21vZHVsZSAuCiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSBjb3VudCBvZiBmaWxlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3J5LCBvciBhIC0xCiBpZiB0aGVyZSBpcyBhbiBlcnJvci4gIAogLlBQCiAuQiBpbml0X21pYl9pbnRlcm5hbHMKIHNldHMgdXAgdGhlIGludGVybmFsIHN0cnVjdHVyZXMsIHByZXBhcmF0b3J5IHRvIHJlYWRpbmcgaW4gTUlCCi1tb2R1bGVzLiAgSXQgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciBhbGwgY2FsbHMgdG8KK21vZHVsZXMuICBJdCBzaG91bGQgYmUgY2FsbGVkIFxmSWFmdGVyXGZQIGFsbCBjYWxscyB0bwogLkJSIGFkZF9taWJkaXIgLAotYW5kIGJlZm9yZSBhbmQgY2FsbHMgdG8KLS5CUiByZWFkX21vZHVsZSAuCi1UaGlzIGlzIGNhbGxlZCBhdXRvbWF0aWNhbGx5IGlmCithbmQgYmVmb3JlIGFueSBjYWxscyB0bworLkJSIG5ldHNubXBfcmVhZF9tb2R1bGUgLgorLlBQCiAuQiBpbml0X21pYgotaXMgdXNlZC4KK2lzIGEgY29udmVuaWVuY2UgZnVuY3Rpb24gdGhhdCBjb25maWd1cmVzIHRoZSBNSUIgZGlyZWN0b3J5IHNlYXJjaCBwYXRoICh1c2luZworLkIgYWRkX21pYmRpcgorKSwgc2V0IHVwIHRoZSBpbnRlcm5hbCBNSUIgZnJhbWV3b3JrICh1c2luZworLkIgaW5pdF9taWJfaW50ZXJuYWxzCispLCBhbmQgdGhlbiBsb2FkcyB0aGUgYXBwcm9wcmlhdGUgTUlCIG1vZHVsZXMgKHVzaW5nCisuQlIgbmV0c25tcF9yZWFkX21vZHVsZSAiIGFuZCAiIHJlYWRfbWliICIpLiIKK1NlZSB0aGUgRU5WSVJPTk1FTlRBTCBWQVJJQUJMRVMgc2VjdGlvbiBmb3IgZGV0YWlscy4KKy5icgorSXQgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyCityb3V0aW5lIHRoYXQgbWFuaXB1bGF0ZXMgb3IgYWNjZXNzZXMgdGhlIE1JQiB0cmVlLgogLlBQCiAuQiBzaHV0ZG93bl9taWIKIHdpbGwgY2xlYXIgdGhlIGluZm9ybWF0aW9uIHRoYXQgd2FzIGdhdGhlcmVkIGJ5IAotLkJSIHJlYWRfbW9kdWxlICIsICIgYWRkX21pYmRpciAiIGFuZCAiIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQgLgorLkJSIG5ldHNubXBfcmVhZF9tb2R1bGUgIiwgIiBhZGRfbWliZGlyICIgYW5kICIgYWRkX21vZHVsZV9yZXBsYWNlbWVudCAuCiBJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IG9uZSBkb2VzIG5vdCBpbnZva2UKIC5CUiBzaHV0ZG93bl9taWIKIHdoaWxlIHRoZXJlIGFyZSBTTk1QIHNlc3Npb25zIGJlaW5nIGFjdGl2ZWx5IG1hbmFnZWQuCiAuU1MgUmVhZGluZyBhbmQgUGFyc2luZyBNSUJzCisuUFAKKy5CIG5ldHNubXBfcmVhZF9tb2R1bGUKK3Rha2VzIHRoZSBuYW1lIG9mIGEgTUlCIG1vZHVsZSAod2hpY2ggbmVlZCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlCituYW1lIG9mIHRoZSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSksIGxvY2F0ZXMgdGhpcyB3aXRoaW4gdGhlCitjb25maWd1cmVkIGxpc3Qgb2YgTUlCIGRpcmVjdG9yaWVzLCBhbmQgbG9hZHMgdGhlIGRlZmluaXRpb25zIGZyb20KK3RoZSBtb2R1bGUgaW50byB0aGUgYWN0aXZlIE1JQiB0cmVlLgorSXQgYWxzbyBsb2FkcyBhbnkgTUlCIG1vZHVsZXMgbGlzdGVkIGluIHRoZSBJTVBPUlRTIGNsYXVzZSBvZiB0aGlzIG1vZHVsZS4KKy5QUAorLkIgcmVhZF9taWIKK2lzIHNpbWlsYXIsIGJ1dCB0YWtlcyB0aGUgbmFtZSBvZiB0aGUgZmlsZSBjb250YWluaW5nIHRoZSBNSUIgbW9kdWxlLgorTm90ZSB0aGF0IHRoaXMgZmlsZSBuZWVkIG5vdCBiZSBsb2NhdGVkIHdpdGhpbiB0aGUgTUlCIGRpcmVjdG9yeQorc2VhcmNoIGxpc3QgKGFsdGhvdWdoIGFueSBtb2R1bGVzIGxpc3RlZCBpbiB0aGUgSU1QT1JUUyBjbGF1c2UgZG8pLgorLlBQCisuQiByZWFkX2FsbF9taWJzCit3aWxsIHJlYWQgaW4gYWxsIHRoZSBNSUIgbW9kdWxlcyBmb3VuZCBvbiB0aGUgTUlCIGRpcmVjdG9yeSBzZWFyY2ggbGlzdC4KKy5QUAorSW4gZ2VuZXJhbCB0aGUgcGFyc2VyIGlzIHNpbGVudCBhYm91dCB3aGF0IHN0cmFuZ2VuZXNzZXMgaXQgc2VlcyBpbgordGhlIE1JQiBmaWxlcy4gVG8gZ2V0IHdhcm5pbmdzIHJlcG9ydGVkLCBjYWxsCisuQiBzbm1wX3NldF9taWJfd2FybmluZ3MKK3dpdGggYQorLkkgbGV2ZWwKK29mIDEgKG9yIDIgZm9yIGV2ZW4gbW9yZSB3YXJuaW5ncykuCisuUFAKIC5CIGFkZF9tb2R1bGVfcmVwbGFjZW1lbnQKIGNhbiBiZSB1c2VkIHRvIGFsbG93IG5ldyBNSUIgbW9kdWxlcyB0byBvYnNvbGV0ZSBvbGRlciBvbmVzLCB3aXRob3V0Ci1uZWVkaW5nIHRvIGFtZW5kIHRoZSBpbXBvcnRzIGNsYXVzZXMgb2Ygb3RoZXIgbW9kdWxlcy4gIEl0IHRha2VzIHRoZQorbmVlZGluZyB0byBhbWVuZCB0aGUgSU1QT1JUUyBjbGF1c2VzIG9mIG90aGVyIG1vZHVsZXMuICBJdCB0YWtlcyB0aGUKIG5hbWVzIG9mIHRoZSBvbGQgYW5kIG5ldyBtb2R1bGVzLCB0b2dldGhlciB3aXRoIGFuIGluZGljYXRpb24gb2Ygd2hpY2gKIHBvcnRpb25zIG9mIHRoZSBvbGQgbW9kdWxlIGFyZSBhZmZlY3RlZC4KIC5SUwpAQCAtMTMwLDQ4ICsxNTksMTEgQEAKIC5URQogLlJFCiBJdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGhhbmRsZSBlcnJvcnMgaW4gdGhlIG1vZHVsZSBpZGVudGlmaWVycyB1c2VkCi1pbiBNSUIgaW1wb3J0IGNsYXVzZXMgKHN1Y2ggYXMgcmVmZXJyaW5nIHRvCitpbiBNSUIgSU1QT1JUUyBjbGF1c2VzIChzdWNoIGFzIHJlZmVycmluZyB0bwogLkkgUkZDMTIxMwogaW5zdGVhZCBvZgogLklSIFJGQzEyMTMtTUlCICkuCi0uUFAKLS5CIHJlYWRfbW9kdWxlCi1sb2NhdGVzIGFuZCBwYXJzZXMgdGhlIG1vZHVsZSBzcGVjaWZpZWQsIHRvZ2V0aGVyIHdpdGggYW55IG1vZHVsZXMKLXRoYXQgaXQgaW1wb3J0cyBmcm9tLCBhbmQgYWRkcyB0aGUgY29udGVudHMgb2YgdGhlc2UgbW9kdWxlcyB0byB0aGUKLWFjdGl2ZSBNSUIgdHJlZS4gIE5vdGUgdGhhdAotLkIgYWRkX21pYmRpcgotbXVzdCBmaXJzdCBiZSBjYWxsZWQgdG8gYWRkIHRoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgZmlsZSB3aXRoIHRoZQotbW9kdWxlIGRlZmluaXRpb24sIGlmIHRoaXMgaXMgbm90IGluIHRoZSBzdGFuZGFyZCBwYXRoLgotLmJyCi1CeSBkZWZhdWx0LCB0aGUgZm9sbG93aW5nIE1JQiBtb2R1bGVzIHdpbGwgYmUgbG9hZGVkOiAgSVAtTUlCLCBJRi1NSUIsCi1UQ1AtTUlCLCBVRFAtTUlCLCBTTk1QdjItTUlCLCBSRkMxMjEzLU1JQiwgVUNELVNOTVAtTUlCLgotVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBzZXR0aW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZQotLkkgTUlCUwotdG8gYSAoY29sb24tc2VwYXJhdGVkKSBsaXN0IG9mIG1vZHVsZXMgdG8gbG9hZC4KLUlmIHRoaXMgdmFyaWFibGUgc3RhcnRzIHdpdGggYSBwbHVzIGNoYXJhY3RlciwgdGhlbiB0aGUgc3BlY2lmaWVkIG1vZHVsZXMKLWFyZSBhZGRlZCB0byB0aGUgZGVmYXVsdCBsaXN0LiAgT3RoZXJ3aXNlIG9ubHkgdGhvc2UgbW9kdWxlcyBsaXN0ZWQgYXJlCi1sb2FkZWQgKHRvZ2V0aGVyIHdpdGggYW55IG90aGVycyB0aGV5IGltcG9ydCBmcm9tKS4KLUlmCi0uSSBNSUJTCi1pcyBzZXQgdG8KLS5JUiBBTEwgLAotLkIgcmVhZF9hbGxfbWlicwotaXMgY2FsbGVkIHRvIGxvYWQgYWxsIHRoZSBNSUIgZmlsZXMgZm91bmQgaW4gYWxsIHRoZSBzcGVjaWZpZWQKLS5JUiBNSUJESVJTIC4KLS5QUAotLkIgcmVhZF9taWIKLXBhcnNlcyB0aGUgZmlsZSBzcGVjaWZpZWQsIHRvZ2V0aGVyIHdpdGggYW55IG1vZHVsZXMgdGhhdCBpdCBpbXBvcnRzCi1mcm9tLCBhbmQgYWRkcyB0aGUgY29udGVudHMgdG8gdGhlIGFjdGl2ZSBNSUIgdHJlZS4gIFN1Y2ggYSBmaWxlIGNhbgotY29udGFpbiBtb3JlIHRoZW4gb25lIG1vZHVsZSwgdGhvdWdoIGNhcmUgbXVzdCBiZSB0YWtlbiB0aGF0IGFueQotaW1wb3J0cyBvY2N1ciBlYXJsaWVyIGluIHRoZSBmaWxlLCBpZiB0aGV5IGFyZSBub3QgdG8gYmUgcmVhZCBmcm9tIHRoZQotaW5zdGFsbGVkIG1vZHVsZXMuICBOb3RlIHRoYXQgdGhlIGZpbGUgc3BlY2lmaWVkIGRvZXMgbm90IG5lZWQgdG8gYmUKLWluIGFueSBvZiB0aGUgZGlyZWN0b3JpZXMgaW5pdGlhbGlzZWQgYnkKLS5CIGFkZF9taWJkaXIKLShvciB0aGUgZGVmYXVsdCBzZXR1cCksIHRob3VnaCBhbnkgaW1wb3J0ZWQgbW9kdWxlcyBkby4KLS5icgotVGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0uSSBNSUJGSUxFUwotY2FuIGJlIHNldCB0byBhIChjb2xvbi1zZXBhcmF0ZWQpIGxpc3Qgb2YgZmlsZXMgY29udGFpbmluZyBNSUJzIHRvIGxvYWQuCisuU1MgU2VhcmNoaW5nIHRoZSBNSUIgVHJlZQogLlBQCiAuQiByZWFkX29iamlkCiB0YWtlcyBhIHN0cmluZyBjb250YWluaW5nIGEgdGV4dHVhbCB2ZXJzaW9uIG9mIGFuIG9iamVjdCBpZGVudGlmaWVyCkBAIC0xODksNyArMTgxLDEwIEBACiBsZW5ndGggc2hvdWxkIGJlIHJlc2V0IGJlZm9yZSBlYWNoIGNhbGwuCiBUaGlzIGZ1bmN0aW9uIHJldHVybnMgYSB2YWx1ZSBvZiAxIGlmIGl0IHN1Y2NlZWRzIGluIHBhcnNpbmcgdGhlIHN0cmluZwogYW5kIDAgb3RoZXJ3aXNlLgotLlNTIFNlYXJjaGluZyB0aGUgTUlCIFRyZWUKKy5QUAorLkIgc25tcF9wYXJzZV9vaWQKK2lzIHNpbWlsYXIsIGJ1dCByZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgcGFyc2VkIE9JRCBidWZmZXIgKG9yIE5VTEwpLgorLlBQCiAuQiBnZXRfbW9kdWxlX25vZGUKIHRha2VzIGEgZGVzY3JpcHRvciBhbmQgdGhlIG5hbWUgb2YgYSBtb2R1bGUsIGFuZCByZXR1cm5zIHRoZSBjb3JyZXNwb25kaW5nCiBvaWQgbGlzdCwgaW4gdGhlIHNhbWUgd2F5IGFzCkBAIC0yMDEsMTIyICsxOTYsOTcgQEAKIHJldHVybiB0aGUgbWF0Y2hpbmcgZW50cnkuICBJZiB0aGlzIGFzc3VtcHRpb24gaXMgaW52YWxpZCwgdGhlbiB0aGUKIGJlaGF2aW91ciBhcyB0byB3aGljaCB2YXJpYWJsZSBpcyByZXR1cm5lZCBpcyBpbXBsZW1lbnRhdGlvbgogZGVwZW5kZW50LgorLmJyCiAuU1MgT3V0cHV0CiAuQiBwcmludF9taWIKIHdpbGwgcHJpbnQgb3V0IGEgcmVwcmVzZW50YXRpb24gb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgTUlCIHRyZWUgdG8KIHRoZSBzcGVjaWZpZWQgRklMRSBwb2ludGVyLgogLlBQCi0uQiBwcmludF92YXJpYWJsZQorLkIgcHJpbnRfb2JqaWQKIHdpbGwgdGFrZSBhbiBvYmplY3QgaWRlbnRpZmllciAoYXMgcmV0dXJuZWQgYnkKLS5CIHJlYWRfb2JqaWQKLW9yCi0uQlIgZ2V0X21vZHVsZV9ub2RlICkKLWFuZCBhbiBpbnN0YW5jZSBvZiBzdWNoIGEgdmFyaWFibGUsIGFuZCBwcmludHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dAotdGhlIHRleHR1YWwgZm9ybSBvZiB0aGUgb2JqZWN0IGlkZW50aWZpZXIgdG9nZXRoZXIgd2l0aCB0aGUgdmFsdWUKLW9mIHRoZSB2YXJpYWJsZS4KLS5CIGZwcmludF92YXJpYWJsZQorLkJSIHJlYWRfb2JqaWQgIiwgIiBzbm1wX3BhcnNlX29pZCAiIG9yICIgZ2V0X21vZHVsZV9ub2RlICIpLCIKK2FuZCBwcmludHMgdGhlIHRleHR1YWwgZm9ybSBvZiB0aGlzIE9JRCB0byB0aGUgc3RhbmRhcmQgb3V0cHV0LgorLlBQCisuQiBmcHJpbnRfb2JqaWQKIGRvZXMgdGhlIHNhbWUsIGJ1dCBwcmludHMgdG8gdGhlIEZJTEUgcG9pbnRlciBzcGVjaWZpZWQgYnkgdGhlIGluaXRpYWwKIHBhcmFtZXRlci4KLS5icgotLkIgc25wcmludF92YXJpYWJsZQorLlBQCisuQiBzbnByaW50X29iamlkCiBwcmludHMgdGhlIHNhbWUgaW5mb3JtYXRpb24gaW50byB0aGUgYnVmZmVyIHBvaW50ZWQgdG8gYnkKIC5JIGJ1Zgogd2hpY2ggaXMgb2YgbGVuZ3RoCi0uSVIgbGVuIAotYW5kIHJldHVybnMgZWl0aGVyIHRoZSBudW1iZXIgb2YgY2hhcmFjdGVycyBwcmludGVkLCBvciAtMSBpZiB0aGUKKy5JUiBsZW4gLgorSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgb3IgLTEgaWYgdGhlCiBidWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2guICBJbiB0aGUgbGF0dGVyIGNhc2UsCiAuSSBidWYKLXdpbGwgdHlwaWNhbGx5IGNvbnRhaW5lZCBhIHRydW5jYXRlZCB2ZXJzaW9uIG9mIHRoZSBpbmZvcm1hdGlvbiAoYnV0Ci10aGlzIGJlaGF2aW91ciBpcyBub3QgZ3VhcmFudGVlZCkuICBUaGlzIGZ1bmN0aW9uIHJlcGxhY2VzIHRoZQotb2Jzb2xldGUgZnVuY3Rpb24KLS5CUiBzcHJpbnRfdmFyaWFibGUgLgotLmJyCi0uQiBzcHJpbnRfcmVhbGxvY192YXJpYWJsZQotaXMgdGhlIGxvdy1sZXZlbCBmdW5jdGlvbiB1c2VkIHRvIGltcGxlbWVudCBhbGwgdGhlc2UgZnVuY3Rpb25zLiAgSXQKLXByaW50cyB0byBhIHNwZWNpZmllZCBvZmZzZXQgaW4gYSBzdHJpbmcgYnVmZmVyLiAgVGhlCi0uSSBidWYKLXBhcmFtZXRlciBwb2ludHMgdG8gYSBwb2ludGVyIHRvIHRoYXQgYnVmZmVyOwotLkkgYnVmX2xlbgotcG9pbnRzIHRvIGEgdmFyaWFibGUgaG9sZGluZyB0aGUgY3VycmVudCBzaXplIG9mIHRoYXQgYnVmZmVyLCBhbmQKLS5JIG91dF9sZW4KLXBvaW50cyB0byBhIHZhcmlhYmxlIGhvbGRpbmcgdGhlIG9mZnNldCB0byB3aGljaCB0byBwcmludC4KLS5JIG91dF9sZW4KLXdpbGwgYmUgdXBkYXRlZCB0byBob2xkIHRoZSBvZmZzZXQgb2YgdGhlIGNoYXJhY3RlciBmb2xsb3dpbmcgdGhlIGxhc3QKLW9uZSBhZGRlZCB0byB0aGUgYnVmZmVyLiAgSWYKLS5JIGFsbG93X3JlYWxsb2MKLWlzIDEsIHRoZSBidWZmZXIgd2lsbCBiZSBkeW5hbWljYWxseSBleHBhbmRlZCwgYXMgbmVjZXNzYXJ5LCB0byBob2xkCi10aGUgb3V0cHV0OyB0aGUgdmFyaWFibGVzIHBvaW50ZWQgdG8gYnkKLS5JIGJ1ZgotYW5kCi0uSSBidWZfbGVuCi13aWxsIGJlIHVwZGF0ZWQuICBJZgotLkkgYWxsb3dfcmVhbGxvYwotaXMgMCwgdGhlIGJ1ZmZlciB3aWxsIG5vdCBiZSBkeW5hbWljYWxseSBleHBhbmRlZC4KLS5CIHNwcmludF9yZWFsbG9jX3ZhcmlhYmxlCi1yZXR1cm5zIDAgaWYKLS5JIGFsbG93X3JlYWxsb2MKLWlzIDEgYW5kIGFuIGF0dGVtcHQgdG8gYWxsb2NhdGUgbWVtb3J5IHRvIGV4cGFuZCB0aGUgYnVmZmVyIGZhaWxzLCBvcgotaWYKLS5JIGFsbG93X3JlYWxsb2MKLWlzIDAgYW5kIHRoZSBvdXRwdXQgd291bGRuJ3QgZml0IGluIHRoZSBidWZmZXIuICBPdGhlcndpc2UgaXQgcmV0dXJucwotMS4gIFdoZW4gdXNpbmcgdGhpcyBmdW5jdGlvbiB5b3Ugc2hvdWxkIGJlIGNhcmVmdWwgdG8gY2FsbAotLkJSIGZyZWUgKDMpCi1vbgotLkkgKmJ1Zgotd2hlbiB5b3UgaGF2ZSBmaW5pc2hlZCB3aXRoIGl0Lgord2lsbCB0eXBpY2FsbHkgY29udGFpbiBhIHRydW5jYXRlZCB2ZXJzaW9uIG9mIHRoZSBpbmZvcm1hdGlvbiAoYnV0Cit0aGlzIGJlaGF2aW91ciBpcyBub3QgZ3VhcmFudGVlZCkuCiAuUFAKLS5CUiBwcmludF92YWx1ZSAsCi0uQlIgZnByaW50X3ZhbHVlICwKLS5CUiBzbnByaW50X3ZhbHVlCisuQlIgcHJpbnRfZGVzY3JpcHRpb24gLAorLkJSIGZwcmludF9kZXNjcmlwdGlvbiAsCiBhbmQKLS5CIHNwcmludF9yZWFsbG9jX3ZhbHVlCi1kbyB0aGUgc2FtZSBhcyB0aGUgZXF1aXZhbGVudAotLkIgcHJpbnRfdmFyaWFibGUKLXJvdXRpbmVzLCBidXQgb25seSBkaXNwbGF5aW5nIHRoZSB2YWx1ZSBvZiB0aGUgdmFyaWFibGUsIHdpdGhvdXQgdGhlCi1jb3JyZXNwb25kaW5nIG9iamVjdCBpZGVudGlmaWVyLgotLlBQCi0uQlIgcHJpbnRfb2JqaWQgLAotLkJSIGZwcmludF9vYmppZCAsCi0uQlIgc25wcmludF9vYmppZCAsCi1hbmQKLS5CIHNwcmludF9yZWFsbG9jX29iamlkCi10YWtlIGFuIG9iamVjdCBpZGVudGlmaWVyICh3aXRob3V0IGFuIGFjY29tcGFueWluZyB2YXJpYWJsZSBpbnN0YW5jZSkKLWFuZCBwcmludCBvdXQgdGhlIHRleHR1YWwgcmVwcmVzZW50YXRpb24uCi0uUFAKLS5CSSBwcmludF9kZXNjcmlwdGlvbiAsCi0uQkkgZnByaW50X2Rlc2NyaXB0aW9uICwKLS5CSSBzbnByaW50X2Rlc2NyaXB0aW9uICwKLWFuZAotLkIgc3ByaW50X3JlYWxsb2NfZGVzY3JpcHRpb24KLXRha2UgYW4gb2JqZWN0IGlkZW50aWZpZXIgKGFzIGZvcgotLkIgcHJpbnRfb2JqaWQKLWFib3ZlKSBhbmQgcHJpbnQgb3V0IGEgdmVyc2lvbiBvZiB0aGUgTUlCIGRlZmluaXRpb24gZm9yIHRoYXQgb2JqZWN0LAorLkIgc25wcmludF9kZXNjcmlwdGlvbgordGFrZSBhIHNpbWlsYXIgb2JqZWN0IGlkZW50aWZpZXIKK2FuZCBwcmludCBvdXQgYSB2ZXJzaW9uIG9mIHRoZSBNSUIgZGVmaW5pdGlvbiBmb3IgdGhhdCBvYmplY3QsCiB0b2dldGhlciB3aXRoIHRoZSBmdWxsIE9JRC4gVGhlCiAuSSB3aWR0aAogYXJndW1lbnQgY29udHJvbHMgaG93IHRoZSBPSUQgaXMgbGF5ZWQgb3V0LgogLlBQCiBCeSBkZWZhdWx0IHRoZSBwYXJzZXIgZG9lcyBub3Qgc2F2ZSBkZXNjcmlwdGlvbnMgc2luY2UgdGhleSBtYXkgYmUKLWh1Z2UuICBJbiBvcmRlciB0byBiZSBhYmxlIHRvIHByaW50IHRoZW0sIHlvdSBtdXN0IGNhbGwKLS5CUiBzbm1wX3NldF9zYXZlX2Rlc2NyaXB0aW9ucygxKSAuCi0uUFAKLUluIGdlbmVyYWwgdGhlIHBhcnNlciBpcyBzaWxlbnQgYWJvdXQgd2hhdCBzdHJhbmdlbmVzc2VzIGl0IHNlZXMgaW4KLXRoZSBNSUIgZmlsZXMuIFRvIGdldCB3YXJuaW5ncyByZXBvcnRlZCwgY2FsbAotLkIgc25tcF9zZXRfbWliX3dhcm5pbmdzCi13aXRoIGEKLS5JIGxldmVsCi1vZiAxIChvciAyIGZvciBldmVuIG1vcmUgd2FybmluZ3MpLgoraHVnZS4gIEluIG9yZGVyIHRvIGJlIGFibGUgdG8gcHJpbnQgdGhlbSwgaXQgaXMgbmVjZXNzYXJ5IHRvIGludm9rZQorLkJJIHNubXBfc2V0X3NhdmVfZGVzY3JpcHRpb25zKDEpIGJlZm9yZQorY2FsbGluZworLkIgaW5pdF9taWIKKyhvciBzaW1pbGFyKS4KIC5TSCAiRU5WSVJPTk1FTlQgVkFSSUFCTEVTIgorLlBQCitUaGUgbWFpbiB1c2Ugb2YgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgd2l0aCByZXNwZWN0IHRvIHRoZXNlIEFQSSBjYWxscworaXMgdG8gY29uZmlndXJlIHdoaWNoIE1JQiBtb2R1bGVzIHNob3VsZCBiZSBsb2FkZWQsIGFuZCB3aGVyZSB0aGV5IGFyZQorbG9jYXRlZC4KIC5UUCAxMAogTUlCRElSUwogQSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBzZWFyY2ggZm9yIE1JQiBtb2R1bGVzLgorLmJyCiBEZWZhdWx0OiBEQVRBRElSL3NubXAvbWlicwotLlRQIDEwCi1NSUJGSUxFUwotQSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBmaWxlcyB0byBsb2FkLgotRGVmYXVsdDogKG5vbmUpCisuYnIKK1VzZWQgYnkKKy5CUiBpbml0X21pYiAiLCAiIG5ldHNubXBfcmVhZF9tb2R1bGUgIiwgIiByZWFkX2FsbF9taWJzCithbmQgKGltcGxpY2l0bHkpIGJ5CisuQlIgcmVhZF9taWIgLgogLlRQIDEwCiBNSUJTCiBBIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIE1JQiBtb2R1bGVzIHRvIGxvYWQuCi1EZWZhdWx0OiBJUC1NSUI6SUYtTUlCOlRDUC1NSUI6VURQLU1JQjpTTk1QdjItTUlCOiBSRkMxMjEzLU1JQjpVQ0QtU05NUC1NSUIuCisuYnIKK1RoZSBkZWZhdWx0IGxpc3Qgb2YgbW9kdWxlcyB3aWxsIGRlcGVuZCBvbiBob3cgdGhlIE5ldC1TTk1QIHNvZnR3YXJlCit3YXMgb3JpZ2luYWxseSBjb21waWxlZCwgYnV0IGlzIHR5cGljYWxseToKK0lQLU1JQjpJRi1NSUI6VENQLU1JQjpVRFAtTUlCOlNOTVB2Mi1NSUI6UkZDMTIxMy1NSUI6IFVDRC1TTk1QLU1JQjpIT1NULVJFU09VUkNFUy1NSUIKKy5JUAorSWYgdGhlIHZhbHVlIG9mIHRoZQorLkIgTUlCUworZW52aXJvbm1lbnRhbCB2YXJpYWJsZSBzdGFydHMgd2l0aCBhICcrJyBjaGFyYWN0ZXIsCit0aGVuIHRoZXNlIE1JQiBtb2R1bGVzIHdpbGwgYmUgYWRkZWQgdG8gdGhlIGRlZmF1bHQgbGlzdC4KK090aGVyd2lzZSB0aGVzZSBtb2R1bGVzIChwbHVzIGFueSB0aGF0IHRoZXkgSU1QT1JUIGZyb20pIHdpbGwgYmUgbG9hZGVkCisuSSBpbnN0ZWFkCitvZiB0aGUgZGVmYXVsdCBsaXN0LgorLklQCitJZiB0aGUgCisuQiBNSUJTCitlbnZpcm9ubWVudGFsIHZhcmlhYmxlIGhhcyB0aGUgdmFsdWUKKy5CUiBBTEwgIiB0aGVuICIgcmVhZF9hbGxfbWlicword2lsbCBiZSBjYWxsZWQgdG8gbG9hZCB0aGUgZnVsbCBjb2xsZWN0aW9uIG9mIGFsbCBhdmFpbGFibGUgTUlCIG1vZHVsZXMuCisuSVAKK1VzZWQgYnkKKy5CIGluaXRfbWliCitvbmx5LgorLlRQIDEwCitNSUJGSUxFUworQSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBmaWxlcyB0byBsb2FkLgorLmJyCitEZWZhdWx0OiAobm9uZSkKKy5icgorVXNlZCBieQorLkIgaW5pdF9taWIKK29ubHkuCiAuU0ggIlNFRSBBTFNPIgotLkJSIHNubXBfYXBpICIoMykiCisuQlIgc25tcF9hcGkgIigzKSwiCisuQlIgb3V0cHV0X2FwaSAiKDMpIgpkaWZmIC0tZ2l0IGEvbWFuL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmIGIvbWFuL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLjEuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNjk0NGMKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuMS5kZWYKQEAgLTAsMCArMSwyOCBAQAorLlRIIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIDEgIjE3IFNlcCAyMDA4IiBWVkVSU0lPTklORk8gIk5ldC1TTk1QIgorLlNIIE5BTUUKK25ldC1zbm1wLWNyZWF0ZS12My11c2VyIFwtIGNyZWF0ZSBhIFNOTVB2MyB1c2VyIGluIG5ldC1zbm1wIGNvbmZpZ3VyYXRpb24gZmlsZQorLlNIIFNZTk9QU0lTCisuUFAKKy5CIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIFstcm9dIFstYSBhdXRocGFzc10gWy14IHByaXZwYXNzXSBbLVggREVTfEFFU10KKy5CIFt1c2VybmFtZV0KKy5TSCBERVNDUklQVElPTgorLlBQCitUaGUgXGZJbmV0LXNubXAtY3JlYXRlLXYzLXVzZXJcZlAgc2hlbGwgc2NyaXB0IGlzIGRlc2lnbmVkIHRvIGNyZWF0ZSBhCituZXcgdXNlciBpbiBuZXQtc25tcCBjb25maWd1cmF0aW9uIGZpbGUgKC92YXIvbmV0LXNubXAvc25tcGQuY29uZiBieSBkZWZhdWx0KS4KKworLlNIIE9QVElPTlMKKy5UUAorXGZCXC1cLXZlcnNpb25cZlIKK2Rpc3BsYXlzIHRoZSBuZXQtc25tcCB2ZXJzaW9uIG51bWJlcgorLlRQCitcZkJcLXJvXGZSCitjcmVhdGUgYW4gdXNlciB3aXRoIHJlYWQtb25seSBwZXJtaXNzaW9ucworLlRQCitcZkJcLWEgYXV0aHBhc3NcZlIKK3NwZWNpZnkgYXV0aGVudGljYXRpb24gcGFzc3dvcmQKKy5UUAorXGZCXC14IHByaXZwYXNzXGZSCitzcGVjaWZ5IGVuY3J5cHRpb24gcGFzc3dvcmQKKy5UUAorXGZCXC1YIERFU3xBRVNcZlIKK3NwZWNpZnkgZW5jcnlwdGlvbiBhbGdvcml0aG0KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zIGIvbWFuL25ldHNubXBfYWNjZXNzX211bHRpcGxleGVyLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2I1OGVhMgotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX2FjY2Vzc19tdWx0aXBsZXhlci4zCkBAIC0wLDAgKzEsMjYgQEAKKy5USCAiYmFieV9zdGVwc19hY2Nlc3NfbXVsdGlwbGV4ZXI6IGNhbGxzIGluZGl2aWR1YWwgYWNjZXNzIG1ldGhvZHMgYmFzZWQgb24gYmFieV9zdGVwIG1vZGUuIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCitiYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcjogY2FsbHMgaW5kaXZpZHVhbCBhY2Nlc3MgbWV0aG9kcyBiYXNlZCBvbiBiYWJ5X3N0ZXAgbW9kZS4gXC0gCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogXGZCbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcl9nZXRcZlAgKFxmQm5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kc1xmUCAqYW0pIgorLmJyCisuUkkgIlxmSXJldHVybnMgYSBiYWJ5X3N0ZXBzIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfYmFieV9zdGVwX21vZGUyZmxhZ1xmUCAodV9pbnQgbW9kZSkiCisuYnIKKy5pbiAtMWMKKy5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKKy5QUCAKKy5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9iYWJ5X3N0ZXBzX2FjY2Vzc19tdWx0aXBsZXhlcl9nZXQgKFxmQm5ldHNubXBfYmFieV9zdGVwc19hY2Nlc3NfbWV0aG9kc1xmUCAqIGFtKSIKKy5QUAorcmV0dXJucyBhIGJhYnlfc3RlcHMgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAzMzYgb2YgZmlsZSBiYWJ5X3N0ZXBzLmMuCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYWdlbnQuMyBiL21hbi9uZXRzbm1wX2FnZW50LjMKaW5kZXggZjNjN2RkNS4uZDQ1YWU2NCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfYWdlbnQuMworKysgYi9tYW4vbmV0c25tcF9hZ2VudC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJUaGUgTmV0LVNOTVAgYWdlbnQiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiVGhlIE5ldC1TTk1QIGFnZW50IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMyBiL21hbi9uZXRzbm1wX2FnZW50X2hhbmRsZXIuaC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNDI5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0c25tcF9hZ2VudF9oYW5kbGVyLmguMwpAQCAtMCwwICsxLDI0MCBAQAorLlRIICJhZ2VudF9oYW5kbGVyLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK2FnZW50X2hhbmRsZXIuaCBcLSAKKy5TSCBTWU5PUFNJUworLmJyCisuUFAKKy5TUyAiRGF0YSBTdHJ1Y3R1cmVzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInN0cnVjdCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyX3NcZlAiCisuYnIKKy5SSSAiXGZJdGhlIG1pYiBoYW5kbGVyIHN0cnVjdHVyZSB0byBiZSByZWdpc3RlcmVkIFxmUCIKKy50aSAtMWMKKy5SSSAic3RydWN0IFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fc1xmUCIKKy5icgorLlJJICJcZklSb290IHJlZ2lzdHJhdGlvbiBpbmZvLiBcZlAiCisudGkgLTFjCisuUkkgInN0cnVjdCBcZkJuZXRzbm1wX2hhbmRsZXJfYXJnc19zXGZQIgorLmJyCisudGkgLTFjCisuUkkgInN0cnVjdCBcZkJuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZV9zXGZQIgorLmJyCisuaW4gLTFjCisuU1MgIkRlZmluZXMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9BVVRPX05FWFRcZlAgICAweDAwMDAwMDAxIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfQVVUT19ORVhUX09WRVJSSURFX09OQ0VcZlAgICAweDAwMDAwMDAyIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfSU5TVEFOQ0VcZlAgICAweDAwMDAwMDA0IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfQ1VTVE9NNFxmUCAgIDB4MTAwMDAwMDAiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJNSUJfSEFORExFUl9DVVNUT00zXGZQICAgMHgyMDAwMDAwMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQk1JQl9IQU5ETEVSX0NVU1RPTTJcZlAgICAweDQwMDAwMDAwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTUlCX0hBTkRMRVJfQ1VTVE9NMVxmUCAgIDB4ODAwMDAwMDAiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9HRVRBTkRHRVRORVhUXGZQICAgMHgwMSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX1NFVFxmUCAgIDB4MDIiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9HRVRCVUxLXGZQICAgMHgwNCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX05PVF9DUkVBVEVcZlAgICAweDA4IgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fQkFCWV9TVEVQXGZQICAgMHgxMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX1NUQVNIXGZQICAgMHgyMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhBTkRMRVJfQ0FOX1JPTkxZXGZQICAgKEhBTkRMRVJfQ0FOX0dFVEFOREdFVE5FWFQpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fUldSSVRFXGZQICAgKEhBTkRMRVJfQ0FOX0dFVEFOREdFVE5FWFQgfCBIQU5ETEVSX0NBTl9TRVQpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCSEFORExFUl9DQU5fU0VUX09OTFlcZlAgICAoSEFORExFUl9DQU5fU0VUIHwgSEFORExFUl9DQU5fTk9UX0NSRUFURSkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJIQU5ETEVSX0NBTl9ERUZBVUxUXGZQICAgKEhBTkRMRVJfQ0FOX1JPTkxZIHwgSEFORExFUl9DQU5fTk9UX0NSRUFURSkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJSRVFVRVNUX0lTX0RFTEVHQVRFRFxmUCAgIDEiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJSRVFVRVNUX0lTX05PVF9ERUxFR0FURURcZlAgICAwIgorLmJyCisuaW4gLTFjCisuU1MgIlR5cGVkZWZzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInR5cGVkZWYgc3RydWN0IFxmQm5ldHNubXBfbWliX2hhbmRsZXJfc1xmUCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQIgorLmJyCisuUkkgIlxmSVR5cGVkZWZzIHRoZSBcZkJuZXRzbm1wX21pYl9oYW5kbGVyX3NcZlAgc3RydWN0IGludG8gbmV0c25tcF9taWJfaGFuZGxlci4gXGZQIgorLnRpIC0xYworLlJJICJ0eXBlZGVmIHN0cnVjdCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3NcZlAgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCIKKy5icgorLlJJICJcZklUeXBlZGVmcyB0aGUgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zXGZQIHN0cnVjdCBpbnRvIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24uIFxmUCIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfTm9kZV9IYW5kbGVyXGZQICkoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBzdHJ1Y3QgXGZCbmV0c25tcF9oYW5kbGVyX2FyZ3Nfc1xmUCBcZkJuZXRzbm1wX2hhbmRsZXJfYXJnc1xmUCIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIHN0cnVjdCBcZkJuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZV9zXGZQIFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlXGZQIgorLmJyCisuaW4gLTFjCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF9oYW5kbGVyX2NvbmZcZlAgKHZvaWQpIgorLmJyCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXJcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisuUkkgIlxmSXJlZ2lzdGVyIGEgaGFuZGxlciwgYXMgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBwb2ludGVyLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX3VucmVnaXN0ZXJfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy5SSSAiXGZJdW5yZWdpc3RlciBhIGhhbmRsZXIsIGFzIGRlZmluZWQgYnkgdGhlIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gcG9pbnRlci4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyX25vY2FsbGJhY2tcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisuUkkgIlxmSXJlZ2lzdGVyIGEgaGFuZGxlciwgYXMgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBwb2ludGVyLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJuZXRzbm1wX2luamVjdF9oYW5kbGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyKSIKKy5icgorLlJJICJcZklpbmplY3QgYSBuZXcgaGFuZGxlciBpbnRvIHRoZSBjYWxsaW5nIGNoYWluIG9mIHRoZSBoYW5kbGVycyBkZWZpbmVkIGJ5IHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHBvaW50ZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfaW5qZWN0X2hhbmRsZXJfYmVmb3JlXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBjb25zdCBjaGFyICpiZWZvcmVfd2hhdCkiCisuYnIKKy5SSSAiXGZJaW5qZWN0IGEgbmV3IGhhbmRsZXIgaW50byB0aGUgY2FsbGluZyBjaGFpbiBvZiB0aGUgaGFuZGxlcnMgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBwb2ludGVyLiBcZlAiCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX2ZpbmRfaGFuZGxlcl9ieV9uYW1lXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLlJJICJcZklSZXR1cm5zIGEgaGFuZGxlciBmcm9tIGEgY2hhaW4gYmFzZWQgb24gdGhlIG5hbWUuIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfZmluZF9oYW5kbGVyX2RhdGFfYnlfbmFtZVxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgY29uc3QgY2hhciAqbmFtZSkiCisuYnIKKy5SSSAiXGZJUmV0dXJucyBhIGhhbmRsZXIncyB2b2lkICogcG9pbnRlciBmcm9tIGEgY2hhaW4gYmFzZWQgb24gdGhlIG5hbWUuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfY2FsbF9oYW5kbGVyc1xmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgaW50IFxmQm5ldHNubXBfY2FsbF9oYW5kbGVyXGZQIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpuZXh0X2hhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMpIgorLmJyCisuUkkgIlxmSWNhbGxzIGEgaGFuZGxlciB3aXRoIHdpdGggYXBwcm9wcmlhdGUgTlVMTCBjaGVja2luZyBvZiBhcmd1bWVudHMsIGV0Yy4gXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSBpbnQgXGZCbmV0c25tcF9jYWxsX25leHRfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqY3VycmVudCwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCisuYnIKKy5SSSAiXGZJY2FsbHMgdGhlIG5leHQgaGFuZGxlciBpbiB0aGUgY2hhaW4gYWZ0ZXIgdGhlIGN1cnJlbnQgb25lIHdpdGggd2l0aCBhcHByb3ByaWF0ZSBOVUxMIGNoZWNraW5nLCBldGMuIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgaW50IFxmQm5ldHNubXBfY2FsbF9uZXh0X2hhbmRsZXJfb25lX3JlcXVlc3RcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmN1cnJlbnQsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMpIgorLmJyCisuUkkgIlxmSWNhbGxzIHRoZSBuZXh0IGhhbmRsZXIgaW4gdGhlIGNoYWluIGFmdGVyIHRoZSBjdXJyZW50IG9uZSB3aXRoIHdpdGggYXBwcm9wcmlhdGUgTlVMTCBjaGVja2luZywgZXRjLiBcZlAiCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyXGZQIChjb25zdCBjaGFyICpuYW1lLCBOZXRzbm1wX05vZGVfSGFuZGxlciAqaGFuZGxlcl9hY2Nlc3NfbWV0aG9kKSIKKy5icgorLlJJICJcZkljcmVhdGVzIGEgbmV0c25tcF9taWJfaGFuZGxlciBzdHJ1Y3R1cmUgZ2l2ZW4gYSBuYW1lIGFuZCBhIGFjY2VzcyBtZXRob2QuIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fY3JlYXRlXGZQIChjb25zdCBjaGFyICpuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50IG1vZGVzKSIKKy5icgorLlJJICJcZkljcmVhdGVzIGEgaGFuZGxlciByZWdpc3RyYXRpb24gc3RydWN0dXJlIGdpdmVuIGEgbmFtZSwgYSBhY2Nlc3NfbWV0aG9kIGZ1bmN0aW9uLCBhIHJlZ2lzdHJhdGlvbiBsb2NhdGlvbiBvaWQgYW5kIHRoZSBtb2RlcyB0aGUgaGFuZGxlciBzdXBwb3J0cy4gXGZQIgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogXGZCbmV0c25tcF9jcmVhdGVfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKGNvbnN0IGNoYXIgKm5hbWUsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpoYW5kbGVyX2FjY2Vzc19tZXRob2QsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlXGZQICogXGZCbmV0c25tcF9jcmVhdGVfZGVsZWdhdGVkX2NhY2hlXGZQIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzLCB2b2lkICpsb2NhbGluZm8pIgorLmJyCisuUkkgIlxmSWNyZWF0ZXMgYSBjYWNoZSBvZiBpbmZvcm1hdGlvbiB3aGljaCBjYW4gYmUgc2F2ZWQgZm9yIGZ1dHVyZSByZWZlcmVuY2UuIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfZGVsZWdhdGVkX2NhY2hlXGZQIChcZkJuZXRzbm1wX2RlbGVnYXRlZF9jYWNoZVxmUCAqZGNhY2hlKSIKKy5icgorLlJJICJcZklmcmVlcyBhIGNhY2hlIG9uY2UgeW91J3JlIGZpbmlzaGVkIHVzaW5nIGl0IFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF9kZWxlZ2F0ZWRfY2FjaGVcZlAgKiBcZkJuZXRzbm1wX2hhbmRsZXJfY2hlY2tfY2FjaGVcZlAgKFxmQm5ldHNubXBfZGVsZWdhdGVkX2NhY2hlXGZQICpkY2FjaGUpIgorLmJyCisuUkkgIlxmSWNoZWNrJ3MgYSBnaXZlbiBjYWNoZSBhbmQgcmV0dXJucyBpdCBpZiBpdCBpcyBzdGlsbCB2YWxpZCAoaWUsIHRoZSBhZ2VudCBzdGlsbCBjb25zaWRlcnMgaXQgdG8gYmUgYW4gb3V0c3RhbmRpbmcgcmVxdWVzdC4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcl9ieV9uYW1lXGZQIChjb25zdCBjaGFyICpuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICpoYW5kbGVyKSIKKy5icgorLlJJICJcZklyZWdpc3RlcnMgYSBnaXZlbiBoYW5kbGVyIGJ5IG5hbWUgc28gdGhhdCBpdCBjYW4gYmUgZm91bmQgZWFzaWx5IGxhdGVyLiBcZlAiCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jbGVhcl9oYW5kbGVyX2xpc3RcZlAgKHZvaWQpIgorLmJyCisuUkkgIlxmSWNsZWFycyB0aGUgZW50aXJlIGhhbmRsZXItcmVnaXN0cmF0aW9uIGxpc3QgXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfcmVxdWVzdF9hZGRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgorLmJyCisuUkkgIlxmSWFkZCBkYXRhIHRvIGEgcmVxdWVzdCB0aGF0IGNhbiBiZSBleHRyYWN0ZWQgbGF0ZXIgYnkgc3VibW9kdWxlcyBcZlAiCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU5MSU5FIGludCBcZkJuZXRzbm1wX3JlcXVlc3RfcmVtb3ZlX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QsIGNvbnN0IGNoYXIgKm5hbWUpIgorLmJyCisuUkkgIlxmSXJlbW92ZSBkYXRhIGZyb20gYSByZXF1ZXN0IFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfcmVxdWVzdF9nZXRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgY29uc3QgY2hhciAqbmFtZSkiCisuYnIKKy5SSSAiXGZJZXh0cmFjdCBkYXRhIGZyb20gYSByZXF1ZXN0IHRoYXQgd2FzIGFkZGVkIHByZXZpb3VzbHkgYnkgYSBwYXJlbnQgXGZCbW9kdWxlXGZQIFxmUCIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfcmVxdWVzdF9kYXRhX3NldFxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QpIgorLmJyCisuUkkgIlxmSUZyZWUgdGhlIGV4dHJhIGRhdGEgc3RvcmVkIGluIGEgcmVxdWVzdC4gXGZQIgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9yZXF1ZXN0X2RhdGFfc2V0c1xmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QpIgorLmJyCisuUkkgIlxmSUZyZWUgdGhlIGV4dHJhIGRhdGEgc3RvcmVkIGluIGEgYnVuY2ggb2YgcmVxdWVzdHMgKGFsbCBkYXRhIGluIHRoZSBjaGFpbikuIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2hhbmRsZXJfZnJlZVxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlcikiCisuYnIKKy5SSSAiXGZJZnJlZXMgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBoYW5kbGVyIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfaGFuZGxlcl9kdXBcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIpIgorLmJyCisuUkkgIlxmSWR1cGxpY2F0ZXMgYSBoYW5kbGVyIGFuZCBhbGwgc3Vic2VxdWVudCBoYW5kbGVycyBzZWUgYWxzbyBfY2xvbmVfaGFuZGxlciBcZlAiCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2R1cFxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy5SSSAiXGZJZHVwbGljYXRlcyB0aGUgaGFuZGxlciByZWdpc3RyYXRpb24gb2JqZWN0IFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWVcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisuUkkgIlxmSWZyZWUgdGhlIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggYSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBvYmplY3QgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfaGFuZGxlcl9tYXJrX3JlcXVlc3RzX2FzX2RlbGVnYXRlZFxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3RzLCBpbnQgaXNkZWxlZ2F0ZWQpIgorLmJyCisuUkkgIlxmSW1hcmtzIGEgbGlzdCBvZiByZXF1ZXN0cyBhcyBkZWxlZ2F0ZWQgKG9yIG5vdCBpZiBpc2RlbGVnYWRlZCA9IDApIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfaGFuZGxlcl9nZXRfcGFyZW50X2RhdGFcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICosIGNvbnN0IGNoYXIgKikiCisuYnIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCisKKy5QUAorRGVmaW5pdGlvbiBpbiBmaWxlIFxmQmFnZW50X2hhbmRsZXIuaFxmUC4KKy5TSCAiQXV0aG9yIgorLlBQIAorR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zIGIvbWFuL25ldHNubXBfYWdlbnRfcmVnaXN0cnkuMwppbmRleCAxMGJhMmYyLi4zNmM4ZDlmIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9hZ2VudF9yZWdpc3RyeS4zCisrKyBiL21hbi9uZXRzbm1wX2FnZW50X3JlZ2lzdHJ5LjMKQEAgLTEsNCArMSw0IEBACi0uVEggIk1haW50YWluIGEgcmVnaXN0cnkgb2YgTUlCIHN1YnRyZWVzLCB0b2dldGhlciB3aXRoIHJlbGF0ZWQgaW5mb3JtYXRpb24gcmVnYXJkaW5nIG1pYm1vZHVsZSwgc2Vzc2lvbnMsIGV0YyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJNYWludGFpbiBhIHJlZ2lzdHJ5IG9mIE1JQiBzdWJ0cmVlcywgdG9nZXRoZXIgd2l0aCByZWxhdGVkIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBtaWJtb2R1bGUsIHNlc3Npb25zLCBldGMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTQwLDkgKzQwLDYgQEAKIAogLmluICsxYwogLnRpIC0xYwotLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJpbnZhbGlkYXRlX2xvb2t1cF9jYWNoZVxmUCAoY29uc3QgY2hhciAqY29udGV4dCkiCi0uYnIKLS50aSAtMWMKIC5SSSAidm9pZCBcZkJuZXRzbm1wX3NldF9sb29rdXBfY2FjaGVfc2l6ZVxmUCAoaW50IG5ld3NpemUpIgogLmJyCiAuUkkgIlxmSXNldCB0aGUgbG9va3VwIGNhY2hlIHNpemUgZm9yIG9wdGltaXplZCBhZ2VudCByZWdpc3RyYXRpb24gcGVyZm9ybWFuY2UuIFxmUCIKQEAgLTUxLDYgKzQ4LDIxIEBACiAuYnIKIC5SSSAiXGZJcmV0cmlldmVzIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBcZlAiCiAudGkgLTFjCisuUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSBcZkJsb29rdXBfY2FjaGVfY29udGV4dFxmUCAqIFxmQmdldF9jb250ZXh0X2xvb2t1cF9jYWNoZVxmUCAoY29uc3QgY2hhciAqY29udGV4dCkiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQgXGZCbG9va3VwX2NhY2hlX2FkZFxmUCAoY29uc3QgY2hhciAqY29udGV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpuZXh0LCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKnByZXZpb3VzKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJsb29rdXBfY2FjaGVfcmVwbGFjZVxmUCAoXGZCbG9va3VwX2NhY2hlXGZQICpwdHIsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqbmV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpwcmV2aW91cykiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIFxmQmxvb2t1cF9jYWNoZVxmUCAqIFxmQmxvb2t1cF9jYWNoZV9maW5kXGZQIChjb25zdCBjaGFyICpjb250ZXh0LCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbiwgaW50ICpyZXRjbXApIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkIFxmQmludmFsaWRhdGVfbG9va3VwX2NhY2hlXGZQIChjb25zdCBjaGFyICpjb250ZXh0KSIKKy5icgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQm5ldHNubXBfc3VidHJlZV9mcmVlXGZQIChcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKmEpIgogLmJyCiAudGkgLTFjCkBAIC0xNDAsMTggKzE1Miw2IEBACiAuYnIKIC5SSSAiXGZJY2hlY2tzIHRvIHNlZSBpZiBldmVyeXRoaW5nIHdpdGhpbiBhIGdpdmVuIHN1YnRyZWUgaXMgZWl0aGVyOiBpbiB2aWV3LCBub3QgaW4gdmlldywgb3IgcG9zc2libHkgYm90aC4gXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgXGZCbG9va3VwX2NhY2hlX2NvbnRleHRcZlAgKiBcZkJnZXRfY29udGV4dF9sb29rdXBfY2FjaGVcZlAgKGNvbnN0IGNoYXIgKmNvbnRleHQpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSB2b2lkIFxmQmxvb2t1cF9jYWNoZV9hZGRcZlAgKGNvbnN0IGNoYXIgKmNvbnRleHQsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqbmV4dCwgXGZCbmV0c25tcF9zdWJ0cmVlXGZQICpwcmV2aW91cykiCi0uYnIKLS50aSAtMWMKLS5SSSAiTkVUU05NUF9TVEFUSUNfSU5MSU5FIHZvaWQgXGZCbG9va3VwX2NhY2hlX3JlcGxhY2VcZlAgKFxmQmxvb2t1cF9jYWNoZVxmUCAqcHRyLCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKm5leHQsIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqcHJldmlvdXMpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfU1RBVElDX0lOTElORSBcZkJsb29rdXBfY2FjaGVcZlAgKiBcZkJsb29rdXBfY2FjaGVfZmluZFxmUCAoY29uc3QgY2hhciAqY29udGV4dCwgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW4sIGludCAqcmV0Y21wKSIKLS5icgotLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKiBcZkJuZXRzbm1wX3N1YnRyZWVfZmluZF9wcmV2XGZQIChvaWQgKm5hbWUsIHNpemVfdCBsZW4sIFxmQm5ldHNubXBfc3VidHJlZVxmUCAqc3VidHJlZSwgY29uc3QgY2hhciAqY29udGV4dF9uYW1lKSIKIC5icgogLnRpIC0xYwpAQCAtMjAxLDEwICsyMDEsMTAgQEAKIAogLmluICsxYwogLnRpIC0xYwotLlJJICJcZkJzdWJ0cmVlX2NvbnRleHRfY2FjaGVcZlAgKiBcZkJjb250ZXh0X3N1YnRyZWVzXGZQID0gTlVMTCIKKy5SSSAiaW50IFxmQmxvb2t1cF9jYWNoZV9zaXplXGZQID0gMCIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbG9va3VwX2NhY2hlX3NpemVcZlAgPSAwIgorLlJJICJcZkJzdWJ0cmVlX2NvbnRleHRfY2FjaGVcZlAgKiBcZkJjb250ZXh0X3N1YnRyZWVzXGZQID0gTlVMTCIKIC5icgogLnRpIC0xYwogLlJJICJpbnQgXGZCZXh0ZXJuYWxfc2lnbmFsX3NjaGVkdWxlZFxmUCBbTlVNX0VYVEVSTkFMX1NJR1NdIgpAQCAtMjI2LDcgKzIyNiw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTMyMyBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTQ3NSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU1MgImludCBuZXRzbm1wX2dldF9sb29rdXBfY2FjaGVfc2l6ZSAodm9pZCkiCiAuUFAKIHJldHJpZXZlcyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgbG9va3VwIGNhY2hlIHNpemUgXGZCUmV0dXJuczpcZlAKQEAgLTIzNiw3ICsyMzYsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzOTYgb2YgZmlsZSBhZ2VudF9yZWdpc3RyeS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExOCBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU1MgInZvaWQgbmV0c25tcF9zZXRfbG9va3VwX2NhY2hlX3NpemUgKGludCBuZXdzaXplKSIKIC5QUAogc2V0IHRoZSBsb29rdXAgY2FjaGUgc2l6ZSBmb3Igb3B0aW1pemVkIGFnZW50IHJlZ2lzdHJhdGlvbiBwZXJmb3JtYW5jZS4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTI0Niw3ICsyNDYsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzODMgb2YgZmlsZSBhZ2VudF9yZWdpc3RyeS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwNSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU1MgImludCB1bnJlZ2lzdGVyX21pYl9jb250ZXh0IChvaWQgKiBuYW1lLCBzaXplX3QgbGVuLCBpbnQgcHJpb3JpdHksIGludCByYW5nZV9zdWJpZCwgb2lkIHJhbmdlX3Vib3VuZCwgY29uc3QgY2hhciAqIGNvbnRleHQpIgogLlBQCiBVbnJlZ2lzdGVycyBhbiBPSUQgdGhhdCBoYXMgYW4gYXNzb2NpYXRlZCBjb250ZXh0IG5hbWUgdmFsdWUuIFR5cGljYWxseSB1c2VkIHdoZW4gYSBcZkJtb2R1bGVcZlAgaGFzIG11bHRpcGxlIGNvbnRleHRzIGRlZmluZWQuIFRoZSBwYXJhbWV0ZXJzIHByaW9yaXR5LCByYW5nZV9zdWJpZCwgYW5kIHJhbmdlX3Vib3VuZCBzaG91bGQgYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGFnZW50eCwgc2VlIFJGQyAyNzQxLCBvdGhlcndpc2UgdGhlc2UgdmFsdWVzIHNob3VsZCBhbHdheXMgYmUgMC4KQEAgLTI3Miw3ICsyNzIsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk2OSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTEyMSBvZiBmaWxlIGFnZW50X3JlZ2lzdHJ5LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zIGIvbWFuL25ldHNubXBfYWdlbnRfdHJhcC4zCmluZGV4IDViNTE3MWQuLmQzNjI2MTcgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2FnZW50X3RyYXAuMworKysgYi9tYW4vbmV0c25tcF9hZ2VudF90cmFwLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIlRyYXAgZ2VuZXJhdGlvbiByb3V0aW5lcyBmb3IgbWliIG1vZHVsZXMgdG8gdXNlIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIlRyYXAgZ2VuZXJhdGlvbiByb3V0aW5lcyBmb3IgbWliIG1vZHVsZXMgdG8gdXNlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC03NCw2ICs3NCw5IEBACiAuUkkgInZvaWQgXGZCc2VuZF90cmFwX3ZhcnNcZlAgKGludCB0cmFwLCBpbnQgc3BlY2lmaWMsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycykiCiAuYnIKIC50aSAtMWMKKy5SSSAidm9pZCBcZkJzZW5kX3RyYXBfdmFyc193aXRoX2NvbnRleHRcZlAgKGludCB0cmFwLCBpbnQgc3BlY2lmaWMsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycywgY2hhciAqY29udGV4dCkiCisuYnIKKy50aSAtMWMKIC5SSSAidm9pZCBcZkJzZW5kX2Vhc3lfdHJhcFxmUCAoaW50IHRyYXAsIGludCBzcGVjaWZpYykiCiAuYnIKIC5SSSAiXGZJU2VuZHMgYW4gU05NUHYxIHRyYXAgKG9yIHRoZSBTTk1QdjIgZXF1aXZhbGVudCkgdG8gdGhlIGxpc3Qgb2YgY29uZmlndXJlZCB0cmFwIGRlc3RpbmF0aW9ucyAob3IgJ3NpbmtzJyksIHVzaW5nIHRoZSBwcm92aWRlZCB2YWx1ZXMgZm9yIHRoZSBnZW5lcmljIHRyYXAgdHlwZSBhbmQgc3BlY2lmaWMgdHJhcCB2YWx1ZS4gXGZQIgpAQCAtODIsNiArODUsMTAgQEAKIC5icgogLlJJICJcZklVc2VzIHRoZSBzdXBwbGllZCBsaXN0IG9mIFxmQnZhcmlhYmxlXGZQIGJpbmRpbmdzIHRvIGZvcm0gYW4gU05NUHYyIHRyYXAsIHdoaWNoIGlzIHNlbnQgdG8gU05NUHYyLWNhcGFibGUgc2lua3Mgb24gdGhlIGNvbmZpZ3VyZWQgbGlzdC4gXGZQIgogLnRpIC0xYworLlJJICJ2b2lkIFxmQnNlbmRfdjN0cmFwXGZQIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKnZhcnMsIGNoYXIgKmNvbnRleHQpIgorLmJyCisuUkkgIlxmSVNpbWlsYXIgdG8gXGZCc2VuZF92MnRyYXAoKVxmUCwgd2l0aCB0aGUgYWRkZWQgYWJpbGl0eSB0byBzcGVjaWZ5IGEgY29udGV4dC4gXGZQIgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNlbmRfdHJhcF9wZHVcZlAgKFxmQm5ldHNubXBfcGR1XGZQICpwZHUpIgogLmJyCiAudGkgLTFjCkBAIC0xODIsNyArMTg5LDcgQEAKIC5SSSAiY2hhciAqIFxmQnNubXBfdHJhcGNvbW11bml0eVxmUCA9IE5VTEwiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQnNubXBfZW5hYmxlYXV0aGVudHJhcHNcZlAgPSBTTk1QX0FVVEhFTlRJQ0FURURfVFJBUFNfRElTQUJMRUQiCisuUkkgImxvbmcgXGZCc25tcF9lbmFibGVhdXRoZW50cmFwc1xmUCA9IFNOTVBfQVVUSEVOVElDQVRFRF9UUkFQU19ESVNBQkxFRCIKIC5icgogLnRpIC0xYwogLlJJICJpbnQgXGZCc25tcF9lbmFibGVhdXRoZW50cmFwc3NldFxmUCA9IDAiCkBAIC0xOTQsNyArMjAxLDcgQEAKIC5QUAogQ2FwdHVyZXMgcmVzcG9uc2VzIG9yIHRoZSBsYWNrIHRoZXJlIG9mIGZyb20gSU5GT1JNcyB0aGF0IHdlcmUgc2VudCAxKSBhIHJlc3BvbnNlIGlzIHJlY2VpdmVkIGZyb20gYW4gSU5GT1JNIDIpIG9uZSBpc24ndCByZWNlaXZlZCBhbmQgdGhlIHJldHJpZXMvdGltZW91dHMgaGF2ZSBmYWlsZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODUwIG9mIGZpbGUgYWdlbnRfdHJhcC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg3NSBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TUyAiaW50IG5ldHNubXBfc2VuZF90cmFwcyAoaW50IHRyYXAsIGludCBzcGVjaWZpYywgb2lkICogZW50ZXJwcmlzZSwgaW50IGVudGVycHJpc2VfbGVuZ3RoLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJzLCBjaGFyICogY29udGV4dCwgaW50IGZsYWdzKSIKIC5QUAogVGhpcyBmdW5jdGlvbiBhbGxvd3MgeW91IHRvIG1ha2UgYSBkaXN0aW5jdGlvbiBiZXR3ZWVuIGdlbmVyaWMgdHJhcHMgZnJvbSBkaWZmZXJlbnQgY2xhc3NlcyBvZiBlcXVpcG1lbnQuIEZvciBleGFtcGxlLCB5b3UgbWF5IHdhbnQgdG8gaGFuZGxlIGEgU05NUF9UUkFQX0xJTktET1dOIHRyYXAgZm9yIGEgcGFydGljdWxhciBkZXZpY2UgaW4gYSBkaWZmZXJlbnQgbWFubmVyIHRvIGEgZ2VuZXJpYyBzeXN0ZW0gU05NUF9UUkFQX0xJTktET1dOIHRyYXAuCkBAIC0yNDUsNyArMjUyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2Mjkgb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjMyIG9mIGZpbGUgYWdlbnRfdHJhcC5jLgogLlNTICJ2b2lkIHNlbmRfZWFzeV90cmFwIChpbnQgdHJhcCwgaW50IHNwZWNpZmljKSIKIC5QUAogU2VuZHMgYW4gU05NUHYxIHRyYXAgKG9yIHRoZSBTTk1QdjIgZXF1aXZhbGVudCkgdG8gdGhlIGxpc3Qgb2YgY29uZmlndXJlZCB0cmFwIGRlc3RpbmF0aW9ucyAob3IgJ3NpbmtzJyksIHVzaW5nIHRoZSBwcm92aWRlZCB2YWx1ZXMgZm9yIHRoZSBnZW5lcmljIHRyYXAgdHlwZSBhbmQgc3BlY2lmaWMgdHJhcCB2YWx1ZS4gVGhpcyBmdW5jdGlvbiBldmVudHVhbGx5IGNhbGxzIHNlbmRfZW50ZXJwcmlzZV90cmFwX3ZhcnMuIElmIHRoZSB0cmFwIHR5cGUgaXMgbm90IHNldCB0byBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDIHRoZSBlbnRlcnByaXNlIGFuZCBlbnRlcnByaXNlX2xlbmd0aCBwYXJhbWF0ZXIgaXMgc2V0IHRvIHRoZSBwcmUgZGVmaW5lZCBORVRTTk1QX1NZU1RFTV9NSUIgb2lkIGFuZCBsZW5ndGggcmVzcGVjdGl2ZWx5LiBJZiB0aGUgdHJhcCB0eXBlIGlzIHNldCB0byBTTk1QX1RSQVBfRU5URVJQUklTRVNQRUNJRklDIHRoZSBlbnRlcnByaXNlIGFuZCBlbnRlcnByaXNlX2xlbmd0aCBwYXJhbWV0ZXJzIGFyZSBzZXQgdG8gdGhlIHByZS1kZWZpbmVkIE5FVFNOTVBfTk9USUZJQ0FUSU9OX01JQiBvaWQgYW5kIGxlbmd0aCByZXNwZWN0aXZlbHkuCkBAIC0yNzEsNyArMjc4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5Nzggb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTAxOCBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TUyAidm9pZCBzZW5kX3YydHJhcCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFycykiCiAuUFAKIFVzZXMgdGhlIHN1cHBsaWVkIGxpc3Qgb2YgXGZCdmFyaWFibGVcZlAgYmluZGluZ3MgdG8gZm9ybSBhbiBTTk1QdjIgdHJhcCwgd2hpY2ggaXMgc2VudCB0byBTTk1QdjItY2FwYWJsZSBzaW5rcyBvbiB0aGUgY29uZmlndXJlZCBsaXN0LiBBbiBlcXVpdmFsZW50IElORk9STSBpcyBzZW50IHRvIHRoZSBjb25maWd1cmVkIGxpc3Qgb2YgaW5mb3JtIHNpbmtzLiBTaW5rcyB0aGF0IGNhbiBvbmx5IGhhbmRsZSBTTk1QdjEgdHJhcHMgYXJlIHNraXBwZWQuCkBAIC0zMDEsNyArMzA4LDMxIEBACiAuaW4gKzFjCiBcZkJub3RpZmljYXRpb24uY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwMDcgb2YgZmlsZSBhZ2VudF90cmFwLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTA0NyBvZiBmaWxlIGFnZW50X3RyYXAuYy4KKy5TUyAidm9pZCBzZW5kX3YzdHJhcCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFycywgY2hhciAqIGNvbnRleHQpIgorLlBQCitTaW1pbGFyIHRvIFxmQnNlbmRfdjJ0cmFwKClcZlAsIHdpdGggdGhlIGFkZGVkIGFiaWxpdHkgdG8gc3BlY2lmeSBhIGNvbnRleHQuIElmIHRoZSBsYXN0IHBhcmFtZXRlciBpcyBOVUxMLCB0aGVuIHRoaXMgY2FsbCBpcyBlcXVpdmFsZW50IHRvIFxmQnNlbmRfdjJ0cmFwKClcZlAuCisuUFAKK1xmQlBhcmFtZXRlcnM6XGZQCisuUlMgNAorXGZJdmFyc1xmUCBpcyB1c2VkIHRvIHN1cHBseSB0aGUgbGlzdCBvZiBcZkJ2YXJpYWJsZVxmUCBiaW5kaW5ncyBmb3IgdGhlIHRyYXAuCisuYnIKK1xmSWNvbnRleHRcZlAgaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBjb250ZXh0IG9mIHRoZSB0cmFwLgorLlJFCisuUFAKK1xmQlJldHVybnM6XGZQCisuUlMgNAordm9pZAorLlJFCisuUFAKK1xmQlNlZSBhbHNvOlxmUAorLlJTIDQKK1xmQnNlbmRfdjJ0cmFwXGZQIAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMTA2NCBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TSCAiVmFyaWFibGUgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAib2lkIHNubXB0cmFwZW50ZXJwcmlzZV9vaWRbXSJcZkJJbml0aWFsIHZhbHVlOlxmUApAQCAtMzExLDcgKzM0Miw3IEBACiAgICAgeyBTTk1QVjJfVFJBUF9PQkpTX1BSRUZJWCwgMywgMCB9CiAuZmkKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk5IG9mIGZpbGUgYWdlbnRfdHJhcC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwMCBvZiBmaWxlIGFnZW50X3RyYXAuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zIGIvbWFuL25ldHNubXBfYXNuMV9wYWNrZXRfcGFyc2UuMwppbmRleCBhNTJkNWIwLi5lYjg2NmQ1IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9hc24xX3BhY2tldF9wYXJzZS4zCisrKyBiL21hbi9uZXRzbm1wX2FzbjFfcGFja2V0X3BhcnNlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggImFzbjEgcGFyc2luZyBhbmQgZGF0YXR5cGUgbWFuaXB1bGF0aW9uIHJvdXRpbmVzLiIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJhc24xIHBhcnNpbmcgYW5kIGRhdGF0eXBlIG1hbmlwdWxhdGlvbiByb3V0aW5lcy4iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMyBiL21hbi9uZXRzbm1wX2JhYnlfc3RlcHMuMwppbmRleCBmYTg3NGJiLi4xZWU0ZTYwIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9iYWJ5X3N0ZXBzLjMKKysrIGIvbWFuL25ldHNubXBfYmFieV9zdGVwcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJiYWJ5X3N0ZXBzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImJhYnlfc3RlcHMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2J1bGtfdG9fbmV4dC4zIGIvbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMKaW5kZXggOWQyODIyMC4uNjJiNDdmZCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMKKysrIGIvbWFuL25ldHNubXBfYnVsa190b19uZXh0LjMKQEAgLTEsNCArMSw0IEBACi0uVEggImJ1bGtfdG9fbmV4dCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJidWxrX3RvX25leHQiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTM2LDE3ICszNiwxNyBAQAogLlBQCiB0YWtlcyBhbnN3ZXJlZCByZXF1ZXN0cyBhbmQgZGVjcmVtZW50cyB0aGUgcmVwZWF0IGNvdW50IGFuZCB1cGRhdGVzIHRoZSByZXF1ZXN0cyB0byB0aGUgbmV4dCB0by1kbyB2YXJiaW5kIGluIHRoZSBsaXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDIgb2YgZmlsZSBidWxrX3RvX25leHQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNiBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2dldF9idWxrX3RvX25leHRfaGFuZGxlciAodm9pZCkiCiAuUFAKIHJldHVybnMgYSBidWxrX3RvX25leHQgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNyBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIxIG9mIGZpbGUgYnVsa190b19uZXh0LmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X2J1bGtfdG9fbmV4dF9oZWxwZXIgKHZvaWQpIgogLlBQCiBpbml0aWFsaXplcyB0aGUgYnVsa190b19uZXh0IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIGJ1bGtfdG9fbmV4dCBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzOSBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzMyBvZiBmaWxlIGJ1bGtfdG9fbmV4dC5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMyBiL21hbi9uZXRzbm1wX2NhY2hlX2hhbmRsZXIuMwppbmRleCBiNTNiYjgxLi5lMGE5YWQwIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9jYWNoZV9oYW5kbGVyLjMKKysrIGIvbWFuL25ldHNubXBfY2FjaGVfaGFuZGxlci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJjYWNoZV9oYW5kbGVyIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggImNhY2hlX2hhbmRsZXIiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE0LDE0ICsxNCwxOCBAQAogLmJyCiAuUkkgIlxmSWdldCBjYWNoZSBoZWFkIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWRcZlAgKG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKKy5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWRcZlAgKGNvbnN0IG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5icgogLlJJICJcZklmaW5kIGV4aXN0aW5nIGNhY2hlIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfY3JlYXRlXGZQIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICpmcmVlX2hvb2ssIG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKKy5SSSAiXGZCbmV0c25tcF9jYWNoZVxmUCAqIFxmQm5ldHNubXBfY2FjaGVfY3JlYXRlXGZQIChpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICpmcmVlX2hvb2ssIGNvbnN0IG9pZCAqcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKIC5icgogLlJJICJcZklyZXR1cm5zIGEgY2FjaGUgXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9jYWNoZV9mcmVlXGZQIChcZkJuZXRzbm1wX2NhY2hlXGZQICpjYWNoZSkiCisuYnIKKy5SSSAiXGZJZnJlZXMgYSBjYWNoZSBcZlAiCisudGkgLTFjCiAuUkkgInVuc2lnbmVkIGludCBcZkJuZXRzbm1wX2NhY2hlX3RpbWVyX3N0YXJ0XGZQIChcZkJuZXRzbm1wX2NhY2hlXGZQICpjYWNoZSkiCiAuYnIKIC5SSSAiXGZJc3RhcnRzIHRoZSByZWN1cnJpbmcgY2FjaGVfbG9hZCBjYWxsYmFjayBcZlAiCkBAIC0zNCw3ICszOCw3IEBACiAuYnIKIC5SSSAiXGZJcmV0dXJucyBhIGNhY2hlIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIFxmUCIKIC50aSAtMWMKLS5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXJcZlAgKGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICpsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKmZyZWVfaG9vaywgb2lkICpyb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgorLlJJICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogXGZCbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlclxmUCAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKmxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqZnJlZV9ob29rLCBjb25zdCBvaWQgKnJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuYnIKIC5SSSAiXGZJcmV0dXJucyBhIGNhY2hlIGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIFxmUCIKIC50aSAtMWMKQEAgLTk1LDcgKzk5LDcgQEAKIC5QUAogVG8gbWluaW16ZSByZXNvdXJjZSB1c2UgYnkgdGhlIGFnZW50LCBhIHBlcmlvZGljIGNhbGxiYWNrIGNoZWNrcyBmb3IgZXhwaXJlZCBjYWNoZXMsIGFuZCB3aWxsIGNhbGwgdGhlIGZyZWVfY2FjaGUgZnVuY3Rpb24gZm9yIGFueSBleHBpcmVkIGNhY2hlLgogLlBQCi1UaGUgbG9hZF9jYWNoZSByb3V0ZSBzaG91bGQgcmV0dXJuIGEgbmVnYXRpdmUgbnVtYmVyIGlmIHRoZSBjYWNoZSB3YXMgbm90IHN1Y2Nlc3NmdWxseSBsb2FkZWQuIDAgb3IgYW55IHBvc2l0aXZlIG51bWJlciBpbmRpY2F0ZXMgc3VjY2Vzc3MuCitUaGUgbG9hZF9jYWNoZSByb3V0aW5lIHNob3VsZCByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIgaWYgdGhlIGNhY2hlIHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IGxvYWRlZC4gMCBvciBhbnkgcG9zaXRpdmUgbnVtYmVyIGluZGljYXRlcyBzdWNjZXNzcy4KIC5QUAogU2V2ZXJhbCBmbGFncyBjYW4gYmUgc2V0IHRvIGFmZmVjdCB0aGUgb3BlcmF0aW9ucyBvbiB0aGUgY2FjaGUuCiAuUFAKQEAgLTEyNiwzNyArMTMwLDQyIEBACiAuUFAKIFJlbG9hZCB0aGUgY2FjaGUgaWYgcmVxdWlyZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzg1IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQyOSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KIC5TUyAiaW50IG5ldHNubXBfY2FjaGVfY2hlY2tfZXhwaXJlZCAoXGZCbmV0c25tcF9jYWNoZVxmUCAqIGNhY2hlKSIKIC5QUAogQ2hlY2sgaWYgdGhlIGNhY2hlIHRpbWVvdXQgaGFzIHBhc3NlZC4gU2V0cyBhbmQgcmV0dXJuIHRoZSBleHBpcmVkIGZsYWcuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzcwIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgotLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2NhY2hlX2NyZWF0ZSAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssIG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCitEZWZpbml0aW9uIGF0IGxpbmUgNDE0IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2NhY2hlX2NyZWF0ZSAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssIGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuUFAKIHJldHVybnMgYSBjYWNoZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzNiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KLS5TUyAiXGZCbmV0c25tcF9jYWNoZVxmUCogbmV0c25tcF9jYWNoZV9maW5kX2J5X29pZCAob2lkICogcm9vdG9pZCwgaW50IHJvb3RvaWRfbGVuKSIKK0RlZmluaXRpb24gYXQgbGluZSAxNDYgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCisuU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfY2FjaGVfZmluZF9ieV9vaWQgKGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuUFAKIGZpbmQgZXhpc3RpbmcgY2FjaGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTMwIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgorLlNTICJpbnQgbmV0c25tcF9jYWNoZV9mcmVlIChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgorLlBQCitmcmVlcyBhIGNhY2hlIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgMTg5IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2NhY2hlX2dldF9oZWFkICh2b2lkKSIKIC5QUAogZ2V0IGNhY2hlIGhlYWQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTIgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTIyIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2NhY2hlX2hhbmRsZXJfZ2V0IChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgogLlBQCiByZXR1cm5zIGEgY2FjaGUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDcgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjkxIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJpbnQgbmV0c25tcF9jYWNoZV9oYW5kbGVyX3JlZ2lzdGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9jYWNoZVxmUCAqIGNhY2hlKSIKIC5QUAogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKClcZlAgYnV0IGFsc28gaW5qZWN0cyBhIGNhY2hlIGhhbmRsZXIgYXQgdGhlIHNhbWUgdGltZSBmb3IgeW91LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI5NSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzMzkgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX2NhY2hlX2hlbHBlcl9oYW5kbGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiCiAuUFAKIEltcGxlbWVudHMgdGhlIGNhY2hlIGhhbmRsZXIuIApAQCAtMTY3LDU5ICsxNzYsNTkgQEAKIC5QUAogbmV4dCBoYW5kbGVyIGNhbGxlZCBhdXRvbWF0aWNhbGx5IC0gJ0FVVE9fTkVYVCcgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MjAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDY0IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJpbnQgbmV0c25tcF9jYWNoZV9pc192YWxpZCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBjb25zdCBjaGFyICogbmFtZSkiCiAuUFAKIElzIHRoZSBjYWNoZSB2YWxpZCBmb3IgYSBnaXZlbiByZXF1ZXN0PyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQwMiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NDYgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgIlxmQm5ldHNubXBfY2FjaGVcZlAqIG5ldHNubXBfY2FjaGVfcmVxaW5mb19leHRyYWN0IChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogRXh0cmFjdCB0aGUgY2FjaGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcmVxdWVzdCAoUERVKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNTAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzk0IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJ2b2lkIG5ldHNubXBfY2FjaGVfcmVxaW5mb19pbnNlcnQgKFxmQm5ldHNubXBfY2FjaGVcZlAgKiBjYWNoZSwgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBjb25zdCBjaGFyICogbmFtZSkiCiAuUFAKIEluc2VydCB0aGUgY2FjaGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcmVxdWVzdCAoUERVKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMzMgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzc3IG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJ1bnNpZ25lZCBpbnQgbmV0c25tcF9jYWNoZV90aW1lcl9zdGFydCAoXGZCbmV0c25tcF9jYWNoZVxmUCAqIGNhY2hlKSIKIC5QUAogc3RhcnRzIHRoZSByZWN1cnJpbmcgY2FjaGVfbG9hZCBjYWxsYmFjayAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5MSBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMzUgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgInZvaWQgbmV0c25tcF9jYWNoZV90aW1lcl9zdG9wIChcZkJuZXRzbm1wX2NhY2hlXGZQICogY2FjaGUpIgogLlBQCiBzdG9wcyB0aGUgcmVjdXJyaW5nIGNhY2hlX2xvYWQgY2FsbGJhY2sgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjYgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjcwIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJcZkJuZXRzbm1wX2NhY2hlXGZQKiBuZXRzbm1wX2V4dHJhY3RfY2FjaGVfaW5mbyAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvKSIKIC5QUAogRXh0cmFjdCB0aGUgY2FjaGUgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4gcmVxdWVzdCAoUERVKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNjIgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCi0uU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X2NhY2hlX2hhbmRsZXIgKGludCB0aW1lb3V0LCBOZXRzbm1wQ2FjaGVMb2FkICogbG9hZF9ob29rLCBOZXRzbm1wQ2FjaGVGcmVlICogZnJlZV9ob29rLCBvaWQgKiByb290b2lkLCBpbnQgcm9vdG9pZF9sZW4pIgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwNiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KKy5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfY2FjaGVfaGFuZGxlciAoaW50IHRpbWVvdXQsIE5ldHNubXBDYWNoZUxvYWQgKiBsb2FkX2hvb2ssIE5ldHNubXBDYWNoZUZyZWUgKiBmcmVlX2hvb2ssIGNvbnN0IG9pZCAqIHJvb3RvaWQsIGludCByb290b2lkX2xlbikiCiAuUFAKIHJldHVybnMgYSBjYWNoZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3NiBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzMjAgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX2lzX2NhY2hlX3ZhbGlkIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8pIgogLlBQCiBJcyB0aGUgY2FjaGUgdmFsaWQgZm9yIGEgZ2l2ZW4gcmVxdWVzdD8gZm9yIGJhY2t3YXJkcyBjb21wYXRhYmlsaXR5LiBmb3IgYmFja3dhcmRzIGNvbXBhdAogLlBQCiBcZkJuZXRzbm1wX2NhY2hlX2lzX3ZhbGlkKClcZlAgaXMgcHJlZmVycmVkLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQxMyBvZiBmaWxlIGNhY2hlX2hhbmRsZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NTcgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX2NhY2hlX2hhbmRsZXIgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBpbnQgdGltZW91dCwgTmV0c25tcENhY2hlTG9hZCAqIGxvYWRfaG9vaywgTmV0c25tcENhY2hlRnJlZSAqIGZyZWVfaG9vaykiCiAuUFAKIGZ1bmN0aW9uYWxseSB0aGUgc2FtZSBhcyBjYWxsaW5nIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpXGZQIGJ1dCBhbHNvIGluamVjdHMgYSBjYWNoZSBoYW5kbGVyIGF0IHRoZSBzYW1lIHRpbWUgZm9yIHlvdS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMDggb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzUyIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNTICJ2b2lkIHJlbGVhc2VfY2FjaGVkX3Jlc291cmNlcyAodW5zaWduZWQgaW50IHJlZ05vLCB2b2lkICogY2xpZW50YXJncykiCiAuUFAKIHJ1biByZWd1bGFybHkgdG8gYXV0b21hdGljYWxseSByZWxlYXNlIGNhY2hlZCByZXNvdXJjZXMuIHh4eCAtIG1ldGhvZCB0byBwcmV2ZW50IGNhY2hlIGZyb20gZXhwaXJpbmcgd2hpbGUgYSByZXF1ZXN0IGlzIGJlaW5nIHByb2Nlc3NlZCAoZS5nLiBkZWxlZ2F0ZWQgcmVxdWVzdCkuIHByb3Bvc2FsOiBzZXQgYSBmbGFnLCB3aGljaCB3b3VsZCBiZSBjbGVhcmVkIHdoZW4gcmVxdWVzdCBmaW5pc2hlZCAod2hpY2ggY291bGQgYmUgYWNvbXBsaXNoZWQgYnkgYSBkdW1teSBkYXRhIGxpc3QgaXRlbSBpbiBhZ2VudCByZXEgaW5mbyAmIGN1c3RvbSBmcmVlIGZ1bmN0aW9uKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1ODEgb2YgZmlsZSBjYWNoZV9oYW5kbGVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjIzIG9mIGZpbGUgY2FjaGVfaGFuZGxlci5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NhbGxiYWNrLjMgYi9tYW4vbmV0c25tcF9jYWxsYmFjay4zCmluZGV4IGNmZWVjODkuLmU2OTFhYjggMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2NhbGxiYWNrLjMKKysrIGIvbWFuL25ldHNubXBfY2FsbGJhY2suMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiQSBnZW5lcmljIGNhbGxiYWNrIG1lY2hhbmlzbSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJBIGdlbmVyaWMgY2FsbGJhY2sgbWVjaGFuaXNtIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9jb250YWluZXIuMyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lci4zCmluZGV4IGIyZjQxNGQuLmY3NWJlNGMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2NvbnRhaW5lci4zCisrKyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJjb250YWluZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiY29udGFpbmVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMyBiL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZmNmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuMwpAQCAtMCwwICsxLDQzIEBACisuVEggIkNvbnRhaW5lcl9pdGVyYXRvciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuYWQgbAorLm5oCisuU0ggTkFNRQorQ29udGFpbmVyX2l0ZXJhdG9yIFwtIAorLlNTICJUeXBlZGVmcyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleVxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmtleSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfTG9vcF9EYXRhXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqZGF0YSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfQ3R4XGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpsb29wX2N0eCkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfQ3R4X0R1cFxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmR1cF9jdHgsIGludCByZXVzZSkiCisuYnIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfT3BcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0RhdGFcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIGNvbnN0IHZvaWQgKmRhdGEpIgorLmJyCisuaW4gLTFjCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yX2luaXRcZlAgKHZvaWQpIgorLmJyCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfY29udGFpbmVyXGZQICogXGZCbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3JfZ2V0XGZQICh2b2lkICppdGVyYXRvcl91c2VyX2N0eCwgbmV0c25tcF9jb250YWluZXJfY29tcGFyZSAqY29tcGFyZSwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleSAqZ2V0X2ZpcnN0LCBOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfS2V5ICpnZXRfbmV4dCwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0RhdGEgKmdldF9kYXRhLCBOZXRzbm1wX0l0ZXJhdG9yX0N0eF9EdXAgKnNhdmVfcG9zLCBOZXRzbm1wX0l0ZXJhdG9yX0N0eCAqaW5pdF9sb29wX2N0eCwgTmV0c25tcF9JdGVyYXRvcl9DdHggKmNsZWFudXBfbG9vcF9jdHgsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqZnJlZV91c2VyX2N0eCwgaW50IHNvcnRlZCkiCisuYnIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvcl9zZXRfZGF0YV9jYlxmUCAoXGZCbmV0c25tcF9jb250YWluZXJcZlAgKmMsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqaW5zZXJ0X2RhdGEsIE5ldHNubXBfSXRlcmF0b3JfRGF0YSAqcmVtb3ZlX2RhdGEsIE5ldHNubXBfSXRlcmF0b3JfT3AgKmdldF9zaXplKSIKKy5icgorLmluIC0xYworLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvci5oLjMgYi9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmZWM1ODUKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3IuaC4zCkBAIC0wLDAgKzEsNTQgQEAKKy5USCAiY29udGFpbmVyX2l0ZXJhdG9yLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK2NvbnRhaW5lcl9pdGVyYXRvci5oIFwtIAorLlNIIFNZTk9QU0lTCisuYnIKKy5QUAorXGZDI2luY2x1ZGUgJ2NvbnRhaW5lci5oJ1xmUAorLmJyCisKKy5TUyAiVHlwZWRlZnMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBpbnQoIFxmQk5ldHNubXBfSXRlcmF0b3JfTG9vcF9LZXlcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmxvb3BfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICprZXkpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0xvb3BfRGF0YVxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmRhdGEpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0N0eFxmUCApKHZvaWQgKml0ZXJhdG9yX2N0eCwgXGZCbmV0c25tcF9yZWZfdm9pZFxmUCAqbG9vcF9jdHgpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX0N0eF9EdXBcZlAgKSh2b2lkICppdGVyYXRvcl9jdHgsIFxmQm5ldHNubXBfcmVmX3ZvaWRcZlAgKmxvb3BfY3R4LCBcZkJuZXRzbm1wX3JlZl92b2lkXGZQICpkdXBfY3R4LCBpbnQgcmV1c2UpIgorLmJyCisudGkgLTFjCisuUkkgInR5cGVkZWYgaW50KCBcZkJOZXRzbm1wX0l0ZXJhdG9yX09wXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4KSIKKy5icgorLnRpIC0xYworLlJJICJ0eXBlZGVmIGludCggXGZCTmV0c25tcF9JdGVyYXRvcl9EYXRhXGZQICkodm9pZCAqaXRlcmF0b3JfY3R4LCBjb25zdCB2b2lkICpkYXRhKSIKKy5icgorLmluIC0xYworLlNTICJGdW5jdGlvbnMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX2NvbnRhaW5lcl9pdGVyYXRvcl9pbml0XGZQICh2b2lkKSIKKy5icgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqIFxmQm5ldHNubXBfY29udGFpbmVyX2l0ZXJhdG9yX2dldFxmUCAodm9pZCAqaXRlcmF0b3JfdXNlcl9jdHgsIG5ldHNubXBfY29udGFpbmVyX2NvbXBhcmUgKmNvbXBhcmUsIE5ldHNubXBfSXRlcmF0b3JfTG9vcF9LZXkgKmdldF9maXJzdCwgTmV0c25tcF9JdGVyYXRvcl9Mb29wX0tleSAqZ2V0X25leHQsIE5ldHNubXBfSXRlcmF0b3JfTG9vcF9EYXRhICpnZXRfZGF0YSwgTmV0c25tcF9JdGVyYXRvcl9DdHhfRHVwICpzYXZlX3BvcywgTmV0c25tcF9JdGVyYXRvcl9DdHggKmluaXRfbG9vcF9jdHgsIE5ldHNubXBfSXRlcmF0b3JfQ3R4ICpjbGVhbnVwX2xvb3BfY3R4LCBOZXRzbm1wX0l0ZXJhdG9yX0RhdGEgKmZyZWVfdXNlcl9jdHgsIGludCBzb3J0ZWQpIgorLmJyCisudGkgLTFjCisuUkkgInZvaWQgXGZCbmV0c25tcF9jb250YWluZXJfaXRlcmF0b3Jfc2V0X2RhdGFfY2JcZlAgKFxmQm5ldHNubXBfY29udGFpbmVyXGZQICpjLCBOZXRzbm1wX0l0ZXJhdG9yX0RhdGEgKmluc2VydF9kYXRhLCBOZXRzbm1wX0l0ZXJhdG9yX0RhdGEgKnJlbW92ZV9kYXRhLCBOZXRzbm1wX0l0ZXJhdG9yX09wICpnZXRfc2l6ZSkiCisuYnIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCisKKy5QUAorRGVmaW5pdGlvbiBpbiBmaWxlIFxmQmNvbnRhaW5lcl9pdGVyYXRvci5oXGZQLgorLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2RhdGFfbGlzdC4zIGIvbWFuL25ldHNubXBfZGF0YV9saXN0LjMKaW5kZXggMGVjY2FmZS4uY2NhMTA4YSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfZGF0YV9saXN0LjMKKysrIGIvbWFuL25ldHNubXBfZGF0YV9saXN0LjMKQEAgLTEsNCArMSw0IEBACi0uVEggImdlbmVyaWMgbGlua2VkLWxpc3QgZGF0YSBoYW5kbGluZyB3aXRoIGEgc3RyaW5nIGFzIGEga2V5LiIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJnZW5lcmljIGxpbmtlZC1saXN0IGRhdGEgaGFuZGxpbmcgd2l0aCBhIHN0cmluZyBhcyBhIGtleS4iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE5LDExICsxOSwxMSBAQAogLmJyCiAuUkkgIlxmSWFkZHMgY3JlYXRlcyBhIGRhdGFfbGlzdCBcZkJub2RlXGZQIGdpdmVuIGEgbmFtZSwgZGF0YSBhbmQgYSBmcmVlIGZ1bmN0aW9uIHB0ci4gXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfYWRkX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKipoZWFkLCBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqXGZCbm9kZVxmUCkiCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGVcZlAgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqaGVhZCwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgogLmJyCiAuUkkgIlxmSWFkZHMgZGF0YSB0byBhIGRhdGFsaXN0IFxmUCIKIC50aSAtMWMKLS5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2RhdGFfbGlzdF9hZGRfbm9kZVxmUCAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKipoZWFkLCBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqXGZCbm9kZVxmUCkiCisuUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9hZGRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqKmhlYWQsIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICpcZkJub2RlXGZQKSIKIC5icgogLlJJICJcZklhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdCBcZlAiCiAudGkgLTFjCkBAIC03OSw3ICs3OSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODcgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjEgb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAqIG5ldHNubXBfY3JlYXRlX2RhdGFfbGlzdCAoY29uc3QgY2hhciAqIG5hbWUsIHZvaWQgKiBkYXRhLCBOZXRzbm1wX0ZyZWVfTGlzdF9EYXRhICogYmVlcikiCiAuUFAKIGFkZHMgY3JlYXRlcyBhIGRhdGFfbGlzdCBcZkJub2RlXGZQIGdpdmVuIGEgbmFtZSwgZGF0YSBhbmQgYSBmcmVlIGZ1bmN0aW9uIHB0ci4gXGZCUGFyYW1ldGVyczpcZlAKQEAgLTEwMiw3ICsxMDIsNyBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjAgb2YgZmlsZSBkYXRhX2xpc3QuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1MyBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCogbmV0c25tcF9kYXRhX2xpc3RfYWRkX2RhdGEgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqIGhlYWQsIGNvbnN0IGNoYXIgKiBuYW1lLCB2b2lkICogZGF0YSwgTmV0c25tcF9GcmVlX0xpc3RfRGF0YSAqIGJlZXIpIgogLlBQCiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMTIzLDcgKzEyMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTQxIG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTM0IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqIGhlYWQsIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogbm9kZSkiCiAuUFAKIGFkZHMgZGF0YSB0byBhIGRhdGFsaXN0IFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0xMzUsNyArMTM1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5NyBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc4IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF9mcmVlX2FsbF9saXN0X2RhdGEgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogaGVhZCkiCiAuUFAKIGZyZWVzIGFsbCBkYXRhIGFuZCBub2RlcyBpbiBhIGxpc3QuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0xNDUsNyArMTQ1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MiBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF9mcmVlX2xpc3RfZGF0YSAoXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKiBub2RlKSIKIC5QUAogZnJlZXMgdGhlIGRhdGEgYW5kIGEgbmFtZSBhdCBhIGdpdmVuIGRhdGFfbGlzdCBcZkJub2RlXGZQLiBOb3RlIHRoYXQgdGhpcyBkb2Vzbid0IGZyZWUgdGhlIFxmQm5vZGVcZlAgaXRzZWxmLiAKQEAgLTE1Nyw3ICsxNTcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTkgb2YgZmlsZSBkYXRhX2xpc3QuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCogbmV0c25tcF9nZXRfbGlzdF9kYXRhIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqIGhlYWQsIGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogcmV0dXJucyBhIGRhdGFfbGlzdCBub2RlJ3MgZGF0YSBmb3IgYSBnaXZlbiBuYW1lIHdpdGhpbiBhIGRhdGFfbGlzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMTc0LDcgKzE3NCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTY2IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTU5IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQKiBuZXRzbm1wX2dldF9saXN0X25vZGUgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICogaGVhZCwgY29uc3QgY2hhciAqIG5hbWUpIgogLlBQCiByZXR1cm5zIGEgZGF0YV9saXN0IFxmQm5vZGVcZlAgZm9yIGEgZ2l2ZW4gbmFtZSB3aXRoaW4gYSBkYXRhX2xpc3QgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTE5MSw3ICsxOTEsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE4NCBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE3NyBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJ2b2lkIG5ldHNubXBfcmVhZF9kYXRhX2NhbGxiYWNrIChjb25zdCBjaGFyICogdG9rZW4sIGNoYXIgKiBsaW5lKSIKIC5QUAogaW50ZW5kZWQgdG8gYmUgcmVnaXN0ZXJkIGFzIGEgLmNvbmYgcGFyc2VyIEl0IHNob3VsZCBiZSByZWdpc3RlcmVkIHVzaW5nOiByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoJ3Rva2VuJywgbmV0c25tcF9yZWFkX2RhdGFfY2FsbGJhY2ssIFhYWCkKQEAgLTIwNSw3ICsyMDUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMzNyBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJ2b2lkIG5ldHNubXBfcmVnaXN0ZXJfc2F2ZV9saXN0IChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqKiBkYXRhbGlzdCwgY29uc3QgY2hhciAqIHR5cGUsIGNvbnN0IGNoYXIgKiB0b2tlbiwgTmV0c25tcF9TYXZlX0xpc3RfRGF0YSAqIGRhdGFfbGlzdF9zYXZlX3B0ciwgTmV0c25tcF9SZWFkX0xpc3RfRGF0YSAqIGRhdGFfbGlzdF9yZWFkX3B0ciwgTmV0c25tcF9GcmVlX0xpc3RfRGF0YSAqIGRhdGFfbGlzdF9mcmVlX3B0cikiCiAuUFAKIHJlZ2lzdGVycyB0byBzdG9yZSBhIGRhdGFfbGlzdCBzZXQgb2YgZGF0YSBhdCBwZXJzaXN0ZW50IHN0b3JhZ2UgdGltZSBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtMjMyLDcgKzIzMiw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM1IG9mIGZpbGUgZGF0YV9saXN0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjI4IG9mIGZpbGUgZGF0YV9saXN0LmMuCiAuU1MgImludCBuZXRzbm1wX3JlbW92ZV9saXN0X25vZGUgKFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICoqIHJlYWxoZWFkLCBjb25zdCBjaGFyICogbmFtZSkiCiAuUFAKIFJlbW92ZXMgYSBuYW1lZCBcZkJub2RlXGZQIGZyb20gYSBkYXRhX2xpc3QgKGFuZCBmcmVlcyBpdCkuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0yNDksMTIgKzI0OSwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwMiBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5NSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJpbnQgbmV0c25tcF9zYXZlX2FsbF9kYXRhIChcZkJuZXRzbm1wX2RhdGFfbGlzdFxmUCAqIGhlYWQsIGNvbnN0IGNoYXIgKiB0eXBlLCBjb25zdCBjaGFyICogdG9rZW4sIE5ldHNubXBfU2F2ZV9MaXN0X0RhdGEgKiBkYXRhX2xpc3Rfc2F2ZV9wdHIpIgogLlBQCiBpbnRlbmRlZCB0byBiZSBjYWxsZWQgYXMgYSBjYWxsYmFjayBkdXJpbmcgcGVyc2lzdGVudCBzYXZlIG9wZXJhdGlvbnMuIFNlZSB0aGUgbmV0c25tcF9zYXZlX2FsbF9kYXRhX2NhbGxiYWNrIGZvciB3aGVyZSB0aGlzIGlzIHR5cGljYWxseSB1c2VkLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDMwMSBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5OSBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNTICJpbnQgbmV0c25tcF9zYXZlX2FsbF9kYXRhX2NhbGxiYWNrIChpbnQgbWFqb3IsIGludCBtaW5vciwgdm9pZCAqIHNlcnZlcmFyZywgdm9pZCAqIGNsaWVudGFyZykiCiAuUFAKIGludGVuZGVkIHRvIGJlIHJlZ2lzdGVyZCBhcyBhIGNhbGxiYWNrIG9wZXJhdGlvbi4gSXQgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgdXNpbmc6CkBAIC0yNjMsNyArMjYzLDcgQEAKIC5QUAogd2hlcmUgSU5GT19QT0lOVEVSIGlzIGEgcG9pbnRlciB0byBhIG5ldHNubXBfZGF0YV9saXN0X3NhdmVpbmZvIG9iamVjdCBjb250YWluaW5nIGFwcG9ycHJpYXRlIHJlZ2lzdHJhdGlvbiBpbmZvcm1hdGlvbiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4NCBvZiBmaWxlIGRhdGFfbGlzdC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI4MiBvZiBmaWxlIGRhdGFfbGlzdC5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX2RlYnVnLjMgYi9tYW4vbmV0c25tcF9kZWJ1Zy4zCmluZGV4IDYzYThiODkuLjQ1ZDcxMDIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2RlYnVnLjMKKysrIGIvbWFuL25ldHNubXBfZGVidWcuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiZGVidWciIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiZGVidWciIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTI0LDMzICsyNCw2IEBACiAuYnIKIC5SSSAiXGZJaW5pdGlhbGl6ZXMgdGhlIGRlYnVnIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIGRlYnVnIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIFxmUCIKIC5pbiAtMWMKLS5TUyAiaGFuZGxlciIKLSAKLS5pbiArMWMKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2luaXRfc2VyaWFsaXplXGZQICh2b2lkKSIKLS5icgotLlJJICJcZklpbml0aWFsaXplcyB0aGUgc2VyaWFsaXplIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHNlcmlhbGl6ZSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiBcZlAiCi0udGkgLTFjCi0uUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X3JlYWRfb25seV9oZWxwZXJcZlAgKHZvaWQpIgotLmJyCi0uUkkgIlxmSWluaXRpYWxpemVzIHRoZSByZWFkX29ubHkgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgcmVhZF9vbmx5IGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIFxmUCIKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2luaXRfYnVsa190b19uZXh0X2hlbHBlclxmUCAodm9pZCkiCi0uYnIKLS5SSSAiXGZJaW5pdGlhbGl6ZXMgdGhlIGJ1bGtfdG9fbmV4dCBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBidWxrX3RvX25leHQgaGFuZGxlciBhcyBhIHJ1bi10aW1lIGluamVjdGFibGUgaGFuZGxlciBmb3IgY29uZmlndXJhdGlvbiBmaWxlIHVzZS4gXGZQIgotLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF90YWJsZV9kYXRhc2V0XGZQICh2b2lkKSIKLS5icgotLnRpIC0xYwotLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5pdF9zdGFzaF9jYWNoZV9oZWxwZXJcZlAgKHZvaWQpIgotLmJyCi0uUkkgIlxmSWluaXRpYWxpemVzIHRoZSBzdGFzaF9jYWNoZSBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiBcZlAiCi0udGkgLTFjCi0uUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X2hlbHBlcnNcZlAgKHZvaWQpIgotLmJyCi0uUkkgIlxmSWNhbGwgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBhbGwgaGFuZGxlcnMgd2l0aCBpbml0XyByb3V0aW5lcy4gXGZQIgotLmluIC0xYwogLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKIC5QUCAKIFByaW50IG91dCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGhhbmRsZXIgY2hhaW4gYmVpbmcgY2FsbGVkLiAKQEAgLTcwLDM3ICs0MywxMiBAQAogLlBQCiByZXR1cm5zIGEgZGVidWcgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1MSBvZiBmaWxlIGRlYnVnX2hhbmRsZXIuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfYnVsa190b19uZXh0X2hlbHBlciAodm9pZCkiCi0uUFAKLWluaXRpYWxpemVzIHRoZSBidWxrX3RvX25leHQgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgYnVsa190b19uZXh0IGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAotLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM5IG9mIGZpbGUgYnVsa190b19uZXh0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDQgb2YgZmlsZSBkZWJ1Z19oYW5kbGVyLmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X2RlYnVnX2hlbHBlciAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSBkZWJ1ZyBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBkZWJ1ZyBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1NSBvZiBmaWxlIGRlYnVnX2hhbmRsZXIuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfaGVscGVycyAodm9pZCkiCi0uUFAKLWNhbGwgdGhlIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlIGZvciBhbGwgaGFuZGxlcnMgd2l0aCBpbml0XyByb3V0aW5lcy4gCi0uUFAKLURlZmluaXRpb24gYXQgbGluZSAzNiBvZiBmaWxlIGFsbF9oZWxwZXJzLmMuCi0uU1MgInZvaWQgbmV0c25tcF9pbml0X3JlYWRfb25seV9oZWxwZXIgKHZvaWQpIgotLlBQCi1pbml0aWFsaXplcyB0aGUgcmVhZF9vbmx5IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHJlYWRfb25seSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKLS5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgxIG9mIGZpbGUgcmVhZF9vbmx5LmMuCi0uU1MgInZvaWQgbmV0c25tcF9pbml0X3NlcmlhbGl6ZSAodm9pZCkiCi0uUFAKLWluaXRpYWxpemVzIHRoZSBzZXJpYWxpemUgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgc2VyaWFsaXplIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAotLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSBzZXJpYWxpemUuYy4KLS5TUyAidm9pZCBuZXRzbm1wX2luaXRfc3Rhc2hfY2FjaGVfaGVscGVyICh2b2lkKSIKLS5QUAotaW5pdGlhbGl6ZXMgdGhlIHN0YXNoX2NhY2hlIGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHN0YXNoX2NhY2hlIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAotLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM4IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDggb2YgZmlsZSBkZWJ1Z19oYW5kbGVyLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zIGIvbWFuL25ldHNubXBfZGVmYXVsdF9zdG9yZS4zCmluZGV4IDRhMzI4N2IuLjA3Y2RiNTMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2RlZmF1bHRfc3RvcmUuMworKysgYi9tYW4vbmV0c25tcF9kZWZhdWx0X3N0b3JlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInN0b3JhZ2Ugc3BhY2UgZm9yIGRlZmF1bHRzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInN0b3JhZ2Ugc3BhY2UgZm9yIGRlZmF1bHRzIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC02NCw3ICs2NCw3IEBACiAuUkkgImludCBcZkJuZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYlxmUCAodV9jaGFyIHR5cGUsIGNvbnN0IGNoYXIgKmZ0eXBlLCBjb25zdCBjaGFyICp0b2tlbiwgaW50IHN0b3JlaWQsIGludCB3aGljaCkiCiAuYnIKIC50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2RzX3NodXRkb3duXGZQICgpIgorLlJJICJ2b2lkIFxmQm5ldHNubXBfZHNfc2h1dGRvd25cZlAgKHZvaWQpIgogLmJyCiAuaW4gLTFjCiAuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfaGFuZGxlci4zIGIvbWFuL25ldHNubXBfaGFuZGxlci4zCmluZGV4IDExY2EzYTAuLjNmMzM3NzggMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2hhbmRsZXIuMworKysgYi9tYW4vbmV0c25tcF9oYW5kbGVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIk5ldC1TTk1QIEFnZW50IGhhbmRsZXIgYW5kIGV4dGVuc2liaWxpdHkgQVBJIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIk5ldC1TTk1QIEFnZW50IGhhbmRsZXIgYW5kIGV4dGVuc2liaWxpdHkgQVBJIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0xNTQsMTEgKzE1NCwxMSBAQAogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIHN0cnVjdHVyZSBnaXZlbiBhIG5hbWUgYW5kIGEgYWNjZXNzIG1ldGhvZC4gXGZQIgogLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGVcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgorLlJJICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGVcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSBoYW5kbGVyIHJlZ2lzdHJhdGlvbiBzdHJ1Y3R1cmUgZ2l2ZW4gYSBuYW1lLCBhIGFjY2Vzc19tZXRob2QgZnVuY3Rpb24sIGEgcmVnaXN0cmF0aW9uIGxvY2F0aW9uIG9pZCBhbmQgdGhlIG1vZGVzIHRoZSBoYW5kbGVyIHN1cHBvcnRzLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAoY29uc3QgY2hhciAqbmFtZSwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKmhhbmRsZXJfYWNjZXNzX21ldGhvZCwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCisuUkkgIlxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAoY29uc3QgY2hhciAqbmFtZSwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKmhhbmRsZXJfYWNjZXNzX21ldGhvZCwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCBtb2RlcykiCiAuYnIKIC50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCkBAIC0zODIsNyArMzgyLDcgQEAKIC5TUyAidm9pZCBuZXRzbm1wX2hhbmRsZXJfbWFya19yZXF1ZXN0c19hc19kZWxlZ2F0ZWQgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMsIGludCBpc2RlbGVnYXRlZCkiCiAuUFAKIG1hcmtzIGEgbGlzdCBvZiByZXF1ZXN0cyBhcyBkZWxlZ2F0ZWQgKG9yIG5vdCBpZiBpc2RlbGVnYWRlZCA9IDApIAotLlNTICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUgKGNvbnN0IGNoYXIgKiBuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgorLlNTICJcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9jcmVhdGUgKGNvbnN0IGNoYXIgKiBuYW1lLCBcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgY29uc3Qgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgbW9kZXMpIgogLlBQCiBjcmVhdGVzIGEgaGFuZGxlciByZWdpc3RyYXRpb24gc3RydWN0dXJlIGdpdmVuIGEgbmFtZSwgYSBhY2Nlc3NfbWV0aG9kIGZ1bmN0aW9uLCBhIHJlZ2lzdHJhdGlvbiBsb2NhdGlvbiBvaWQgYW5kIHRoZSBtb2RlcyB0aGUgaGFuZGxlciBzdXBwb3J0cy4gSWYgbW9kZXMgPT0gMCwgdGhlbiBtb2RlcyB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgc2V0IHRvIHRoZSBkZWZhdWx0IHZhbHVlIG9mIG9ubHkgSEFORExFUl9DQU5fREVGQVVMVCwgd2hpY2ggaXMgYnkgZGVmYXVsdCByZWFkLW9ubHkgR0VUIGFuZCBHRVRORVhUIHJlcXVlc3RzLiBBIGhhbmRlciB3aGljaCBzdXBwb3J0cyBzZXRzIGJ1dCBub3Qgcm93IGNyZWF0aW9uIHNob3VsZCBzZXQgdXMgYSBtb2RlIG9mIEhBTkRMRVJfQ0FOX1NFVF9PTkxZLiAKIC5QUApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfaW5zdGFuY2UuMyBiL21hbi9uZXRzbm1wX2luc3RhbmNlLjMKaW5kZXggZjM4NzcyNS4uOGVkODFkZCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfaW5zdGFuY2UuMworKysgYi9tYW4vbmV0c25tcF9pbnN0YW5jZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJpbnN0YW5jZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJpbnN0YW5jZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMjIsNjEgKzIyLDYxIEBACiAuYnIKIC5SSSAiXGZJVGhpcyBmdW5jdGlvbiBpbmplY3RzIGEgJ3JlYWQgb25seScgaGFuZGxlciBpbnRvIHRoZSBoYW5kbGVyIGNoYWluIHByaW9yIHRvIHNlcmlhbGl6aW5nL3JlZ2lzdGVyaW5nIHRoZSBoYW5kbGVyLiBcZlAiCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3Vsb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2xvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3VpbnRfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1bnNpZ25lZCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVuc2lnbmVkIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJyZWdpc3Rlcl9yZWFkX29ubHlfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfdWxvbmdfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV91bG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2NvdW50ZXIzMl9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9sb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9sb25nX2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfbG9uZ19pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlX2NvbnRleHRcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9pbnRfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9pbnN0YW5jZV9jb250ZXh0XGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIsIGNvbnN0IGNoYXIgKmNvbnRleHROYW1lKSIKKy5SSSAiaW50IFxmQnJlZ2lzdGVyX3JlYWRfb25seV9pbnRfaW5zdGFuY2VfY29udGV4dFxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfbnVtX2ZpbGVfaW5zdGFuY2VcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBjaGFyICpmaWxlX25hbWUsIGludCBhc25fdHlwZSwgaW50IG1vZGUsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyLCBjb25zdCBjaGFyICpjb250ZXh0TmFtZSkiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX251bV9maWxlX2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgY29uc3QgY2hhciAqZmlsZV9uYW1lLCBpbnQgYXNuX3R5cGUsIGludCBtb2RlLCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlciwgY29uc3QgY2hhciAqY29udGV4dE5hbWUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZVxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGludCAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAuUkkgIlxmSVRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGFuIGludCBoZWxwZXIgaGFuZGxlciB0byBhIHNwZWNpZmllZCBPSUQuIFxmUCIKIC50aSAtMWMKQEAgLTExNSwxMiArMTE1LDUyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDggb2YgZmlsZSBpbnN0YW5jZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ5IG9mIGZpbGUgaW5zdGFuY2UuYy4KKy5TUyAiaW50IG5ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSJcZkJEZXByZWNhdGVkXGZQCisuUlMgNAorVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA1NzIgb2YgZmlsZSBpbnN0YW5jZS5jLgorLlNTICJpbnQgbmV0c25tcF9pbnN0YW5jZV9pbnRfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIlxmQkRlcHJlY2F0ZWRcZlAKKy5SUyA0CitUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDY4OSBvZiBmaWxlIGluc3RhbmNlLmMuCisuU1MgImludCBuZXRzbm1wX2luc3RhbmNlX2xvbmdfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIlxmQkRlcHJlY2F0ZWRcZlAKKy5SUyA0CitUaGlzIGZ1bmN0aW9uIGlzIHVudXNlZCBhbmQgc2NoZWR1bGVkIGZvciByZW1vdmFsIGluIE5ldC1TTk1QIDUuNiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDYxMSBvZiBmaWxlIGluc3RhbmNlLmMuCiAuU1MgImludCBuZXRzbm1wX2luc3RhbmNlX251bV9maWxlX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSIKIC5QUAogZmFsbCB0aHJvdWdoIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzQyIG9mIGZpbGUgaW5zdGFuY2UuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3NzEgb2YgZmlsZSBpbnN0YW5jZS5jLgorLlNTICJpbnQgbmV0c25tcF9pbnN0YW5jZV91aW50X2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSJcZkJEZXByZWNhdGVkXGZQCisuUlMgNAorVGhpcyBmdW5jdGlvbiBpcyB1bnVzZWQgYW5kIHNjaGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBOZXQtU05NUCA1LjYgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA5MDUgb2YgZmlsZSBpbnN0YW5jZS5jLgorLlNTICJpbnQgbmV0c25tcF9pbnN0YW5jZV91bG9uZ19oYW5kbGVyIChcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQICogaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0cykiXGZCRGVwcmVjYXRlZFxmUAorLlJTIDQKK1RoaXMgZnVuY3Rpb24gaXMgdW51c2VkIGFuZCBzY2hlZHVsZWQgZm9yIHJlbW92YWwgaW4gTmV0LVNOTVAgNS42IAorLlJFCisuUFAKKworLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNDkyIG9mIGZpbGUgaW5zdGFuY2UuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfaW5zdGFuY2UgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogVGhpcyBmdW5jdGlvbiByZWdpc3RlcnMgYW4gaW5zdGFuY2UgaGVscGVyIGhhbmRsZXIsIHdoaWNoIGlzIGEgd2F5IG9mIHJlZ2lzdGVyaW5nIGFuIGV4YWN0IE9JRCBzdWNoIHRoYXQgR0VORVhUIHJlcXVlc3RzIGFyZSBoYW5kbGVkIGVudGlyZWx5IGJ5IHRoZSBoZWxwZXIuIEZpcnN0IG5lZWQgdG8gaW5qZWN0IGl0IGludG8gdGhlIGNhbGxpbmcgY2hhaW4gb2YgdGhlIGhhbmRsZXIgZGVmaW5lZCBieSB0aGUgbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbiBzdHJ1Y3QsIHJlZ2luZm8uIFRoZSBuZXcgaGFuZGxlciBpcyBpbmplY3RlZCBhdCB0aGUgdG9wIG9mIHRoZSBsaXN0IGFuZCB3aWxsIGJlIHRoZSBuZXcgaGFuZGxlciB0byBiZSBjYWxsZWQgZmlyc3QuIFRoaXMgZnVuY3Rpb24gYWxzbyBpbmplY3RzIGEgc2VyaWFsaXplIGhhbmRsZXIgYmVmb3JlIGFjdHVhbGx5IGNhbGxpbmcgbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGUsIHJlZ2lzdGVyaW5nIHJlZ2luZm8uCkBAIC0xNDEsOCArMTgxLDggQEAKIC5pbiArMWMKIFxmQmRlbGF5ZWRfaW5zdGFuY2UuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDczIG9mIGZpbGUgaW5zdGFuY2UuYy4KLS5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfaW50X2luc3RhbmNlIChjb25zdCBjaGFyICogbmFtZSwgb2lkICogcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKiBpdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKiBzdWJoYW5kbGVyKSIKK0RlZmluaXRpb24gYXQgbGluZSA3NCBvZiBmaWxlIGluc3RhbmNlLmMuCisuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX2ludF9pbnN0YW5jZSAoY29uc3QgY2hhciAqIG5hbWUsIGNvbnN0IG9pZCAqIHJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICogaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICogc3ViaGFuZGxlcikiCiAuUFAKIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGFuIGludCBoZWxwZXIgaGFuZGxlciB0byBhIHNwZWNpZmllZCBPSUQuIFxmQlBhcmFtZXRlcnM6XGZQCiAuUlMgNApAQCAtMTY0LDcgKzIwNCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDYxIG9mIGZpbGUgaW5zdGFuY2UuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NzUgb2YgZmlsZSBpbnN0YW5jZS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfaW5zdGFuY2UgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogVGhpcyBmdW5jdGlvbiBpbmplY3RzIGEgJ3JlYWQgb25seScgaGFuZGxlciBpbnRvIHRoZSBoYW5kbGVyIGNoYWluIHByaW9yIHRvIHNlcmlhbGl6aW5nL3JlZ2lzdGVyaW5nIHRoZSBoYW5kbGVyLiBUaGUgb25seSBwdXJwb3NlIG9mIHRoaXMgJ3JlYWQgb25seScgaGFuZGxlciBpcyB0byByZXR1cm4gYW4gYXBwcm9wcmlhdGUgZXJyb3IgZm9yIGFueSByZXF1ZXN0cyBwYXNzZWQgdG8gaXQgaW4gYSBTRVQgbW9kZS4gSW5zZXJ0aW5nIGl0IGludG8geW91ciBoYW5kbGVyIGNoYWluIHdpbGwgZW5zdXJlIHlvdSdyZSBuZXZlciBhc2tlZCB0byBwZXJmb3JtIGEgU0VUIHJlcXVlc3Qgc28geW91IGNhbiBpZ25vcmUgdGhvc2UgZXJyb3IgY29uZGl0aW9ucy4KQEAgLTE4MSw3ICsyMjEsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwMCBvZiBmaWxlIGluc3RhbmNlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTAxIG9mIGZpbGUgaW5zdGFuY2UuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMyBiL21hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCmluZGV4IDAzMGJjYzAuLjgyOTY2MGUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCisrKyBiL21hbi9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJpdGVyYXRvcl9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiaXRlcmF0b3JfaW5mb19zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9sZWFmLjMgYi9tYW4vbmV0c25tcF9sZWFmLjMKaW5kZXggYjhiNjlhMC4uMTlmMjg4OCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbGVhZi4zCisrKyBiL21hbi9uZXRzbm1wX2xlYWYuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibGVhZl9oYW5kbGVycyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJsZWFmX2hhbmRsZXJzIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9saWJyYXJ5LjMgYi9tYW4vbmV0c25tcF9saWJyYXJ5LjMKaW5kZXggODA5NmQzOC4uNDFjYzZmYyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbGlicmFyeS4zCisrKyBiL21hbi9uZXRzbm1wX2xpYnJhcnkuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiVGhlIE5ldC1TTk1QIGxpYnJhcnkiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiVGhlIE5ldC1TTk1QIGxpYnJhcnkiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE5MCw2ICsxOTAsNyBAQAogLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNubXBfc2Vzc19pbml0XGZQIChcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3Npb24pIgogLmJyCisuUkkgIlxmSUxpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIHNwZWNpZnlpbmcgYW5kIHVzaW5nIFNOTVAgJ3Nlc3Npb25zJyBpbmNsdWRpbmcgc2VuZGluZyBhbmQgcmVjZWl2aW5nIHJlcXVlc3RzLiBcZlAiCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCaW5pdF9zbm1wXGZQIChjb25zdCBjaGFyICp0eXBlKSIKIC5icgpAQCAtMjA4LDYgKzIwOSwxMCBAQAogLlJJICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBcZkJzbm1wX29wZW5fZXhcZlAgKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqc2Vzc2lvbiwgaW50KCpmcHJlX3BhcnNlKShcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiwgXGZCbmV0c25tcF90cmFuc3BvcnRcZlAgKiwgdm9pZCAqLCBpbnQpLCBpbnQoKmZwYXJzZSkoXGZCbmV0c25tcF9zZXNzaW9uXGZQICosIFxmQm5ldHNubXBfcGR1XGZQICosIHVfY2hhciAqLCBzaXplX3QpLCBpbnQoKmZwb3N0X3BhcnNlKShcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiwgXGZCbmV0c25tcF9wZHVcZlAgKiwgaW50KSwgaW50KCpmYnVpbGQpKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqLCBcZkJuZXRzbm1wX3BkdVxmUCAqLCB1X2NoYXIgKiwgc2l6ZV90ICopLCBpbnQoKmZyYnVpbGQpKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqLCBcZkJuZXRzbm1wX3BkdVxmUCAqLCB1X2NoYXIgKiosIHNpemVfdCAqLCBzaXplX3QgKiksIGludCgqZmNoZWNrKSh1X2NoYXIgKiwgc2l6ZV90KSkiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXB2M19wcm9iZV9jb250ZXh0RW5naW5lSURfcmZjNTM0M1xmUCAodm9pZCAqc2xwLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3Npb24pIgorLmJyCisuUkkgIlxmSXByb2JlIGZvciBlbmdpbmVJRCB1c2luZyBSRkMgNTM0MyBwcm9iaW5nIG1lY2hhbmlzbXMgXGZQIgorLnRpIC0xYwogLlJJICJpbnQgXGZCc25tcHYzX2VuZ2luZUlEX3Byb2JlXGZQIChzdHJ1Y3QgXGZCc2Vzc2lvbl9saXN0XGZQICpzbHAsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqaW5fc2Vzc2lvbikiCiAuYnIKIC5SSSAiXGZJcHJvYmUgZm9yIHBlZXIgZW5naW5lSUQgXGZQIgpAQCAtMjg0LDYgKzI4OSw5IEBACiAuUkkgImludCBcZkJzbm1wX3Nlc3NfYXN5bmNfc2VuZFxmUCAodm9pZCAqc2Vzc3AsIFxmQm5ldHNubXBfcGR1XGZQICpwZHUsIHNubXBfY2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmNiX2RhdGEpIgogLmJyCiAudGkgLTFjCisuUkkgInZvaWQgXGZCc25tcF9mcmVlX3Zhcl9pbnRlcm5hbHNcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFyKSIKKy5icgorLnRpIC0xYwogLlJJICJ2b2lkIFxmQnNubXBfZnJlZV92YXJcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFyKSIKIC5icgogLnRpIC0xYwpAQCAtMjk5LDE4ICszMDcsMzAgQEAKIC5SSSAidm9pZCBcZkJzbm1wX3JlYWRcZlAgKGZkX3NldCAqZmRzZXQpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJfc2Vzc19yZWFkXGZQICh2b2lkICpzZXNzcCwgZmRfc2V0ICpmZHNldCkiCisuUkkgInZvaWQgXGZCc25tcF9yZWFkMlxmUCAoXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0KSIKKy5icgorLnRpIC0xYworLlJJICJpbnQgXGZCX3Nlc3NfcmVhZFxmUCAodm9pZCAqc2Vzc3AsIFxmQm5ldHNubXBfbGFyZ2VfZmRfc2V0XGZQICpmZHNldCkiCiAuYnIKIC50aSAtMWMKIC5SSSAiaW50IFxmQnNubXBfc2Vzc19yZWFkXGZQICh2b2lkICpzZXNzcCwgZmRfc2V0ICpmZHNldCkiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfc2Vzc19yZWFkMlxmUCAodm9pZCAqc2Vzc3AsIFxmQm5ldHNubXBfbGFyZ2VfZmRfc2V0XGZQICpmZHNldCkiCisuYnIKKy50aSAtMWMKIC5SSSAiaW50IFxmQnNubXBfc2VsZWN0X2luZm9cZlAgKGludCAqbnVtZmRzLCBmZF9zZXQgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfc2VsZWN0X2luZm8yXGZQIChpbnQgKm51bWZkcywgXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCisuYnIKKy50aSAtMWMKIC5SSSAiaW50IFxmQnNubXBfc2Vzc19zZWxlY3RfaW5mb1xmUCAodm9pZCAqc2Vzc3AsIGludCAqbnVtZmRzLCBmZF9zZXQgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQnNubXBfc2Vzc19zZWxlY3RfaW5mbzJcZlAgKHZvaWQgKnNlc3NwLCBpbnQgKm51bWZkcywgXGZCbmV0c25tcF9sYXJnZV9mZF9zZXRcZlAgKmZkc2V0LCBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykiCisuYnIKKy50aSAtMWMKIC5SSSAidm9pZCBcZkJzbm1wX3RpbWVvdXRcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCkBAIC0zNDcsMTAgKzM2NywxMSBAQAogLmJyCiAuUkkgIlxmSUdpdmVuIHR3byBPSURzLCBkZXRlcm1pbmUgdGhlIGNvbW1vbiBwcmVmaXggdG8gdGhlbSBib3RoLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIFxmQnNubXBfcGR1X2FkZF92YXJpYWJsZVxmUCAoXGZCbmV0c25tcF9wZHVcZlAgKnBkdSwgY29uc3Qgb2lkICpuYW1lLCBzaXplX3QgbmFtZV9sZW5ndGgsIHVfY2hhciB0eXBlLCBjb25zdCB1X2NoYXIgKnZhbHVlLCBzaXplX3QgbGVuKSIKKy5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCc25tcF9wZHVfYWRkX3ZhcmlhYmxlXGZQIChcZkJuZXRzbm1wX3BkdVxmUCAqcGR1LCBjb25zdCBvaWQgKm5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCwgdV9jaGFyIHR5cGUsIGNvbnN0IHZvaWQgKnZhbHVlLCBzaXplX3QgbGVuKSIKIC5icgorLlJJICJcZklMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBcZkJ2YXJpYWJsZVxmUCBiaW5kaW5ncyBhbmQgdmFsdWVzLiBcZlAiCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIFxmQnNubXBfdmFybGlzdF9hZGRfdmFyaWFibGVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqKnZhcmxpc3QsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCB1X2NoYXIgdHlwZSwgY29uc3QgdV9jaGFyICp2YWx1ZSwgc2l6ZV90IGxlbikiCisuUkkgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIFxmQnNubXBfdmFybGlzdF9hZGRfdmFyaWFibGVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqKnZhcmxpc3QsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCB1X2NoYXIgdHlwZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBsZW4pIgogLmJyCiAudGkgLTFjCiAuUkkgImludCBcZkJzbm1wX2FkZF92YXJcZlAgKFxmQm5ldHNubXBfcGR1XGZQICpwZHUsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoLCBjaGFyIHR5cGUsIGNvbnN0IGNoYXIgKnZhbHVlKSIKQEAgLTQzNiwxNiArNDU3LDE2IEBACiAgICAgICAgICh0dnApLT50dl91c2VjIGNtcCAodXZwKS0+dHZfdXNlYykpCiAuZmkKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0OCBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTQ5IG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKIC5QUCAKLS5TUyAiaW50IF9zZXNzX3JlYWQgKHZvaWQgKiBzZXNzcCwgZmRfc2V0ICogZmRzZXQpIgorLlNTICJpbnQgX3Nlc3NfcmVhZCAodm9pZCAqIHNlc3NwLCBcZkJuZXRzbm1wX2xhcmdlX2ZkX3NldFxmUCAqIGZkc2V0KSIKIC5QUAogWFhYLXJrczogd2h5IG5vIFNOTVBfRlJFRShpc3AtPnBhY2tldCk7ID8/CiAuUFAKIFhYWC1ya3M6IHdoeSBubyBTTk1QX0ZSRUUoaXNwLT5wYWNrZXQpOyA/PyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0NDggb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU3MTUgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgaW5pdF9hZ2VudCAoY29uc3QgY2hhciAqIGFwcCkiCiAuUFAKIEluaXRpYWxpemUgdGhlIGFnZW50LiBDYWxscyBpbnRvIGluaXRfYWdlbnRfcmVhZF9jb25maWcgdG8gc2V0IHRoYSBhcHAncyBjb25maWd1cmF0aW9uIGZpbGUgaW4gdGhlIGFwcHJvcHJpYXRlIGRlZmF1bHQgc3RvcmFnZSBzcGFjZSwgTkVUU05NUF9EU19MSUJfQVBQVFlQRS4gTmVlZCB0byBjYWxsIGluaXRfYWdlbnQgYmVmb3JlIGNhbGxpbmcgaW5pdF9zbm1wLgpAQCAtNDY3LDcgKzQ4OCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjcwIG9mIGZpbGUgc25tcF92YXJzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjc3IG9mIGZpbGUgc25tcF92YXJzLmMuCiAuU1MgInZvaWQgaW5pdF9zbm1wIChjb25zdCBjaGFyICogdHlwZSkiCiAuUFAKIENhbGxzIHRoZSBmdW5jdGlvbnMgdG8gZG8gY29uZmlnIGZpbGUgbG9hZGluZyBhbmQgbWliIFxmQm1vZHVsZVxmUCBwYXJzaW5nIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDg3LDcgKzUwOCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzg3IG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3OTYgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9vaWRfY29tcGFyZV9sbCAoY29uc3Qgb2lkICogaW5fbmFtZTEsIHNpemVfdCBsZW4xLCBjb25zdCBvaWQgKiBpbl9uYW1lMiwgc2l6ZV90IGxlbjIsIHNpemVfdCAqIG9mZnB0KSIKIC5QUAogbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmUgdHdvIG9iamVjdCBpZGVudGlmaWVycyBhbmQgcmV0dXJuIHRoZSBwb2ludCB3aGVyZSB0aGV5IGRpZmZlciBDYXV0aW9uOiB0aGlzIG1ldGhvZCBpcyBjYWxsZWQgb2Z0ZW4gYnkgY29tbWFuZCByZXNwb25kZXIgYXBwbGljYXRpb25zIChpZSwgYWdlbnQpLgpAQCAtNDk5LDcgKzUyMCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjM4NiBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjcxNiBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBuZXRzbm1wX29pZF9lcXVhbHMgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogQ29tcGFyZXMgMiBPSURzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBleGFjdGx5IGVxdWFsLiBUaGlzIHNob3VsZCBiZSBmYXN0ZXIgdGhhbiBkb2luZyBhIHNubXBfb2lkX2NvbXBhcmUgZm9yIGRpZmZlcmVudCBsZW5ndGggT0lEcywgc2luY2UgdGhlIGxlbmd0aCBpcyBjaGVja2VkIGZpcnN0IGFuZCBpZiAhPSByZXR1cm5zIGltbWVkaWF0ZWx5LiBNaWdodCBiZSB2ZXJ5IHNsaWdobHkgZmFzdGVyIGlmIGxlbmd0aHMgYXJlID09LiAKQEAgLTUyMiw3ICs1NDMsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY0Njcgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3OTcgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9vaWRfZmluZF9wcmVmaXggKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogR2l2ZW4gdHdvIE9JRHMsIGRldGVybWluZSB0aGUgY29tbW9uIHByZWZpeCB0byB0aGVtIGJvdGguIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC01NDMsNyArNTY0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NTMxIG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2ODYxIG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TUyAiaW50IG5ldHNubXBfb2lkX2lzX3N1YnRyZWUgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogSWRlbnRpY2FsIHRvIG5ldHNubXBfb2lkX2VxdWFscywgZXhjZXB0IG9ubHkgdGhlIGxlbmd0aCB1cCB0byBsZW4xIGlzIGNvbXBhcmVkLiBGdW5jdGlvbmFsbHksIHRoaXMgZGV0ZXJtaW5lcyBpZiBpbl9uYW1lMiBpcyBlcXVhbCBvciBhIHN1YnRyZWUgb2YgaW5fbmFtZTEgCkBAIC01NjYsNyArNTg3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NTEwIG9mIGZpbGUgc25tcF9hcGkuYy4KK0RlZmluaXRpb24gYXQgbGluZSA2ODQwIG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TUyAiaW50IHNubXBfb2lkX2NvbXBhcmUgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogbGV4aWNvZ3JhcGhpY2FsIGNvbXBhcmUgdHdvIG9iamVjdCBpZGVudGlmaWVycy4gQ2F1dGlvbjogdGhpcyBtZXRob2QgaXMgY2FsbGVkIG9mdGVuIGJ5IGNvbW1hbmQgcmVzcG9uZGVyIGFwcGxpY2F0aW9ucyAoaWUsIGFnZW50KS4KQEAgLTU3OCw3ICs1OTksNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDYzMzcgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY2Njcgb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJpbnQgc25tcF9vaWR0cmVlX2NvbXBhcmUgKGNvbnN0IG9pZCAqIGluX25hbWUxLCBzaXplX3QgbGVuMSwgY29uc3Qgb2lkICogaW5fbmFtZTIsIHNpemVfdCBsZW4yKSIKIC5QUAogQ29tcGFyZXMgMiBPSURzIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBlcXVhbCB1cCB1bnRpbCB0aGUgc2hvcnRlc3QgbGVuZ3RoLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNTk5LDcgKzYyMCwxNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY0Mzkgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3Njkgb2YgZmlsZSBzbm1wX2FwaS5jLgorLlNTICJcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAqIHNubXBfcGR1X2FkZF92YXJpYWJsZSAoXGZCbmV0c25tcF9wZHVcZlAgKiBwZHUsIGNvbnN0IG9pZCAqIG5hbWUsIHNpemVfdCBuYW1lX2xlbmd0aCwgdV9jaGFyIHR5cGUsIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbikiCisuUFAKK0xpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIFxmQnZhcmlhYmxlXGZQIGJpbmRpbmdzIGFuZCB2YWx1ZXMuIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNjkzMiBvZiBmaWxlIHNubXBfYXBpLmMuCisuU1MgInZvaWQgc25tcF9zZXNzX2luaXQgKFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIHNlc3Npb24pIgorLlBQCitMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBzcGVjaWZ5aW5nIGFuZCB1c2luZyBTTk1QICdzZXNzaW9ucycgaW5jbHVkaW5nIHNlbmRpbmcgYW5kIHJlY2VpdmluZyByZXF1ZXN0cy4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA3MTggb2YgZmlsZSBzbm1wX2FwaS5jLgogLlNTICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAqIHNubXBfc2Vzc19zZXNzaW9uX2xvb2t1cCAodm9pZCAqIHNlc3NwKSIKIC5QUAogTG9vayB1cCBhIHNlc3Npb24gdGhhdCBhbHJlYWR5IG1heSBoYXZlIGJlZW4gY2xvc2VkLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjE5LDcgKzY1MCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzE5NyBvZiBmaWxlIHNubXBfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzUyNSBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgInZvaWQgc25tcF9zaHV0ZG93biAoY29uc3QgY2hhciAqIHR5cGUpIgogLlBQCiBTaHV0cyBkb3duIHRoZSBhcHBsaWNhdGlvbiwgc2F2aW5nIGFueSBuZWVkZWQgcGVyc2lzdGVudCBzdG9yYWdlLCBhbmQgYXBwcm9wcmlhdGUgY2xlYW4gdXAuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02MzQsNyArNjY1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NTMgb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg2MiBvZiBmaWxlIHNubXBfYXBpLmMuCiAuU1MgImludCBzbm1wdjNfZW5naW5lSURfcHJvYmUgKHN0cnVjdCBcZkJzZXNzaW9uX2xpc3RcZlAgKiBzbHAsIFxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIGluX3Nlc3Npb24pIgogLlBQCiBwcm9iZSBmb3IgcGVlciBlbmdpbmVJRCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjY0LDcgKzY5NSwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyNzggb2YgZmlsZSBzbm1wX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzNzcgb2YgZmlsZSBzbm1wX2FwaS5jLgorLlNTICJpbnQgc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzICh2b2lkICogc2xwLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBzZXNzaW9uKSIKKy5QUAorcHJvYmUgZm9yIGVuZ2luZUlEIHVzaW5nIFJGQyA1MzQzIHByb2JpbmcgbWVjaGFuaXNtcyBEZXNpZ25lZCB0byBiZSBhIGNhbGxiYWNrIGZvciB3aXRoaW4gYSBzZWN1cml0eSBtb2RlbCdzIHByb2JlX2VuZ2luZWlkIGhvb2suIFNpbmNlIGl0J3MgbGlrZWx5IG11bHRpcGxlIHNlY3VyaXR5IG1vZGVscyB3b24ndCBoYXZlIGVuZ2luZUlEcyB0byBwcm9iZSBmb3IgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGEgY2FsbGJhY2sgbGlrZWx5IHRvIGJlIHVzZWQgYnkgbXVsdGlwbGUgZnV0dXJlIHNlY3VyaXR5IG1vZGVscy4gRS5HLiBib3RoIFNTSCBhbmQgRFRMUy4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxMjc5IG9mIGZpbGUgc25tcF9hcGkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9taWJfbWFpbnRlbmFuY2UuMyBiL21hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zCmluZGV4IDY1YjM5MTYuLmY0MDg4MDYgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zCisrKyBiL21hbi9uZXRzbm1wX21pYl9tYWludGVuYW5jZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJtaWJfbWFpbnRlbmFuY2UiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibWliX21haW50ZW5hbmNlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMgYi9tYW4vbmV0c25tcF9taWJfdXRpbGl0aWVzLjMKaW5kZXggMDc3MjdiZC4uNTQyZDM4MSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbWliX3V0aWxpdGllcy4zCisrKyBiL21hbi9uZXRzbm1wX21pYl91dGlsaXRpZXMuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibWliIHBhcnNpbmcgYW5kIGRhdGF0eXBlIG1hbmlwdWxhdGlvbiByb3V0aW5lcy4iIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibWliIHBhcnNpbmcgYW5kIGRhdGF0eXBlIG1hbmlwdWxhdGlvbiByb3V0aW5lcy4iIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTE1MSw2ICsxNTEsMTggQEAKIC5SSSAidm9pZCBcZkJpbml0X21pYlxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKKy5SSSAiaW50IFxmQl9taWJpbmRleF9hZGRcZlAgKGNvbnN0IGNoYXIgKmRpcm5hbWUsIGludCBpKSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfbWliaW5kZXhfbG9hZFxmUCAodm9pZCkiCisuYnIKKy50aSAtMWMKKy5SSSAiY2hhciAqIFxmQm5ldHNubXBfbWliaW5kZXhfbG9va3VwXGZQIChjb25zdCBjaGFyICpkaXJuYW1lKSIKKy5icgorLnRpIC0xYworLlJJICJGSUxFICogXGZCbmV0c25tcF9taWJpbmRleF9uZXdcZlAgKGNvbnN0IGNoYXIgKmRpcm5hbWUpIgorLmJyCisudGkgLTFjCiAuUkkgInZvaWQgXGZCc2h1dGRvd25fbWliXGZQICh2b2lkKSIKIC5icgogLlJJICJcZklVbmxvYWRzIGFsbCBtaWJzLiBcZlAiCkBAIC0zODYsNiArMzk4LDkgQEAKIC50aSAtMWMKIC5SSSAiXGZCUHJlZml4TGlzdFxmUCBcZkJtaWJfcHJlZml4ZXNcZlAgW10iCiAuYnIKKy50aSAtMWMKKy5SSSAiY2hhciAqKiBcZkJfbWliaW5kZXhlc1xmUCA9IE5VTEwiCisuYnIKIC5pbiAtMWMKIC5TSCAiRnVuY3Rpb24gRG9jdW1lbnRhdGlvbiIKIC5QUCAKQEAgLTQxNywxMiArNDMyLDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjc0IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjkyIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBidWlsZF9vaWQgKG9pZCAqKiBvdXQsIHNpemVfdCAqIG91dF9sZW4sIG9pZCAqIHByZWZpeCwgc2l6ZV90IHByZWZpeF9sZW4sIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIGluZGV4ZXMpIgogLlBQCiB4eHgtcmtzOiBzaG91bGQgZnJlZSBwcmV2aW91cyB2YWx1ZT8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNTgyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzczMSBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgYnVpbGRfb2lkX3NlZ21lbnQgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcikiCiAuUFAKIFRha2VzIHRoZSB2YWx1ZSBpbiBWQVIgYW5kIHR1cm5zIGl0IGludG8gYW4gT0lEIHNlZ21lbnQgaW4gdmFyLT5uYW1lLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDM3LDcgKzQ1Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzQ0OCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1OTcgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBmcHJpbnRfZGVzY3JpcHRpb24gKEZJTEUgKiBmLCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpIgogLlBQCiBQcmludHMgb24gb2lkIGRlc2NyaXB0aW9uIGludG8gYSBmaWxlIGRlc2NyaXB0b3IuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00NTMsNyArNDY4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NDUyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDYwMSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIGZwcmludF9vYmppZCAoRklMRSAqIGYsIGNvbnN0IG9pZCAqIG9iamlkLCBzaXplX3Qgb2JqaWRsZW4pIgogLlBQCiBQcmludHMgYW4gb2lkIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDY3LDcgKzQ4Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzE2NyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMjAgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBmcHJpbnRfdmFyaWFibGUgKEZJTEUgKiBmLCBjb25zdCBvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJpYWJsZSkiCiAuUFAKIFByaW50cyBhIFxmQnZhcmlhYmxlXGZQIHRvIGEgZmlsZSBkZXNjcmlwdG9yLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDgzLDcgKzQ5OCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzMyMSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0NzQgb2YgZmlsZSBtaWIuYy4KIC5TUyAic3RydWN0IFxmQnRyZWVcZlAqIGdldF90cmVlX2hlYWQgKHZvaWQpXGZDIFtyZWFkXVxmUCIKIC5QUAogUmV0cmlldmVzIHRoZSBcZkJ0cmVlXGZQIGhlYWQuIFxmQlJldHVybnM6XGZQCkBAIC00OTMsNyArNTA4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDIwIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjAzMSBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgZ2V0X3dpbGRfbm9kZSAoY29uc3QgY2hhciAqIG5hbWUsIG9pZCAqIG9iamlkLCBzaXplX3QgKiBvYmppZGxlbikiXGZCU2VlIGFsc286XGZQCiAuUlMgNAogY29tbWVudHMgb24gZmluZF9iZXN0X3RyZWVfbm9kZSBmb3IgdXNhZ2UgYWZ0ZXIgZmlyc3QgdGltZS4gCkBAIC01MDEsMjQgKzUxNiwyNiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0OTEgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1NjM5IG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgbmV0c25tcF9maXh1cF9taWJfZGlyZWN0b3J5ICh2b2lkKSIKIC5QUAogc3dhcCBpbiB0aGUgbmV3IHZhbHVlIGFuZCByZXBlYXQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDgzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ5NiBvZiBmaWxlIG1pYi5jLgogLlNTICJjaGFyKiBuZXRzbm1wX2dldF9taWJfZGlyZWN0b3J5ICh2b2lkKSIKIC5QUAogQ2hlY2sgaWYgdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIGlzIHNldAogLlBQCiBOb3Qgc2V0IHVzZSBoYXJkIGNvZGVkIHBhdGggCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDM2IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ0OSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIG5ldHNubXBfaW5pdF9taWIgKHZvaWQpIgogLlBQCi1Jbml0aWFsaXNlcyB0aGUgbWliIHJlYWRlci4gUmVhZHMgaW4gYWxsIHNldHRpbmdzIGZyb20gdGhlIGVudmlyb25tZW50LiAKK0luaXRpYWxpc2VzIHRoZSBtaWIgcmVhZGVyLiBMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBNSUIgZmlsZXMgYW5kIG9iamVjdHMsIGFuZCBPSURzLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjUzMCBvZiBmaWxlIG1pYi5jLgorUmVhZHMgaW4gYWxsIHNldHRpbmdzIGZyb20gdGhlIGVudmlyb25tZW50LiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDI1NDMgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IG5ldHNubXBfb2lkMmNoYXJzIChjaGFyICogQywgaW50IEwsIGNvbnN0IG9pZCAqIE8pIgogLlBQCiBDb252ZXJ0cyBhbiBPSUQgdG8gaXRzIGNoYXJhY3RlciBmb3JtLiBpbiBleGFtcGxlIDUgLiAxIC4gMiAuIDMgLiA0IC4gNSA9IDEyMzQ1CkBAIC01NDEsNyArNTU4LDcgQEAKIC5QUAogbGVuZ3RoIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjI3OCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY0MjUgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IG5ldHNubXBfb2lkMnN0ciAoY2hhciAqIFMsIGludCBMLCBvaWQgKiBPKSIKIC5QUAogQ29udmVydHMgYW4gT0lEIHRvIGl0cyBzdHJpbmcgZm9ybS4gaW4gZXhhbXBsZSA1IC4gJ2gnIC4gJ2UnIC4gJ2wnIC4gJ2wnIC4gJ28nID0gJ2hlbGxvXFwwJyAobnVsbCB0ZXJtaW5hdGVkKQpAQCAtNTYyLDcgKzU3OSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjMwNiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY0NTMgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3NldF9taWJfZGlyZWN0b3J5IChjb25zdCBjaGFyICogZGlyKSIKIC5QUAogTmV3IGRpciBzdGFydHMgd2l0aCAnKycsIHRodXMgd2UgYWRkIGl0LgpAQCAtNTcxLDcgKzU4OCw3IEBACiAuUFAKIHNldF9zdHJpbmcgY2FsbHMgc3RyZHVwLCBzbyBpZiB3ZSBhbGxvY2F0ZWQgbWVtb3J5LCBmcmVlIGl0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM4MSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzOTQgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IG5ldHNubXBfc3RyMm9pZCAoY29uc3QgY2hhciAqIFMsIG9pZCAqIE8sIGludCBMKSIKIC5QUAogQ29udmVydHMgYSBzdHJpbmcgdG8gaXRzIE9JRCBmb3JtLiBpbiBleGFtcGxlICdoZWxsbycgPSA1IC4gJ2gnIC4gJ2UnIC4gJ2wnIC4gJ2wnIC4gJ28nCkBAIC01OTIsNyArNjA5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2MjQzIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjM5MCBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHByaW50X2Rlc2NyaXB0aW9uIChvaWQgKiBvYmppZCwgc2l6ZV90IG9iamlkbGVuLCBpbnQgd2lkdGgpIgogLlBQCiBQcmludHMgb24gb2lkIGRlc2NyaXB0aW9uIG9uIHN0ZG91dC4gXGZCU2VlIGFsc286XGZQCkBAIC02MDIsNyArNjE5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NDM2IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDU4NSBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHByaW50X21pYiAoRklMRSAqIGZwKSIKIC5QUAogUHJpbnRzIHRoZSBNSUJzIHRvIHRoZSBmaWxlIGZwLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjEyLDcgKzYyOSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjc0NSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5MDEgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBwcmludF9vYmppZCAoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbikiCiAuUFAKIFByaW50cyBhbiBvaWQgdG8gc3Rkb3V0LiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjI0LDcgKzY0MSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzE1MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMDYgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBwcmludF92YXJpYWJsZSAoY29uc3Qgb2lkICogb2JqaWQsIHNpemVfdCBvYmppZGxlbiwgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyaWFibGUpIgogLlBQCiBQcmludHMgYSBcZkJ2YXJpYWJsZVxmUCB0byBzdGRvdXQuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02MzgsNyArNjU1LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMzA1IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzQ1OCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgcmVhZF9vYmppZCAoY29uc3QgY2hhciAqIGlucHV0LCBvaWQgKiBvdXRwdXQsIHNpemVfdCAqIG91dF9sZW4pIgogLlBQCiBSZWFkcyBhbiBvYmplY3QgaWRlbnRpZmllciBmcm9tIGFuIGlucHV0IHN0cmluZyBpbnRvIGludGVybmFsIE9JRCBmb3JtLiBXaGVuIGNhbGxlZCwgb3V0X2xlbiBtdXN0IGhvbGQgdGhlIG1heGltdW0gbGVuZ3RoIG9mIHRoZSBvdXRwdXQgYXJyYXkuCkBAIC02NTksNyArNjc2LDcgQEAKIC5QUAogSWYgYW4gZXJyb3Igb2NjdXJzLCB0aGlzIGZ1bmN0aW9uIHJldHVybnMgMCBhbmQgTUFZIHNldCBzbm1wX2Vycm5vLiBzbm1wX2Vycm5vIGlzIE5PVCBzZXQgaWYgU0VUX1NOTVBfRVJST1IgZXZhbHVhdGVzIHRvIG5vdGhpbmcuIFRoaXMgY2FuIG1ha2UgbXVsdGktdGhyZWFkZWQgdXNlIGEgdGlueSBiaXQgbW9yZSByb2J1c3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjg0MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI5OTkgb2YgZmlsZSBtaWIuYy4KIC5TUyAidm9pZCBzZXRfZnVuY3Rpb24gKHN0cnVjdCBcZkJ0cmVlXGZQICogc3VidHJlZSkiCiAuUFAKIFNldCdzIHRoZSBwcmludGluZyBmdW5jdGlvbiBwcmludG9tYXQgaW4gYSBzdWJ0cmVlIGFjY29yZGluZyBpdCdzIHR5cGUuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC02NjksMTIgKzY4NiwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3NjYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyOTIyIG9mIGZpbGUgbWliLmMuCiAuU1MgInZvaWQgc2h1dGRvd25fbWliICh2b2lkKSIKIC5QUAogVW5sb2FkcyBhbGwgbWlicy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzIwIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjg2NyBvZiBmaWxlIG1pYi5jLgogLlNTICJ2b2lkIHNubXBfaW5fdG9nZ2xlX29wdGlvbnNfdXNhZ2UgKGNvbnN0IGNoYXIgKiBsZWFkLCBGSUxFICogb3V0ZikiCiAuUFAKIFByaW50cyBvdXQgYSBoZWxwIHVzYWdlIGZvciB0aGUgaW4qIHRvZ2dsZSBvcHRpb25zLiBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNjg2LDcgKzcwMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjI5MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzMDQgb2YgZmlsZSBtaWIuYy4KIC5TUyAib2lkKiBzbm1wX3BhcnNlX29pZCAoY29uc3QgY2hhciAqIGFyZ3YsIG9pZCAqIHJvb3QsIHNpemVfdCAqIHJvb3RsZW4pIgogLlBQCiBHaXZlbiBhIHN0cmluZywgcGFyc2VzIGFuIG9pZCBvdXQgb2YgaXQgKGlmIHBvc3NpYmxlKS4gSXQgd2lsbCB0cnkgdG8gcGFyc2UgaXQgYmFzZWQgb24gcHJlZGV0ZXJtaW5lZCBjb25maWd1cmF0aW9uIGlmIHByZXNlbnQgb3IgYnkgZXZlcnkgbWV0aG9kIHBvc3NpYmxlIG90aGVyd2lzZS4gSWYgYSBzdWZmaXggaGFzIGJlZW4gcmVnaXN0ZXJlZCB1c2luZyBORVRTTk1QX0RTX0xJQl9PSURTVUZGSVgsIGl0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIGlucHV0IHN0cmluZyBiZWZvcmUgcHJvY2Vzc2luZy4KQEAgLTcwNyw3ICs3MjQsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU4NDkgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1OTk2IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19hc2NpaXN0cmluZyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IHVfY2hhciAqIGNwLCBzaXplX3QgbGVuKSIKIC5QUAogUHJpbnRzIGFuIGFzY2lpIHN0cmluZyBpbnRvIGEgYnVmZmVyLiBUaGUgY2hhcmFjdGVycyBwb2ludGVkIGJ5ICpjcCBhcmUgZW5jb2RlZCBhcyBhbiBhc2NpaSBzdHJpbmcuCkBAIC03MzYsNyArNzUzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzODggb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2JhZHR5cGUgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIEZhbGxiYWNrIHJvdXRpbmUgZm9yIGEgYmFkIHR5cGUsIHByaW50cyAnVmFyaWFibGUgaGFzIGJhZCB0eXBlJyBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC03NjcsNyArNzg0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxOTA1IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTkxNiBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfYml0c3RyaW5nICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYSBiaXQgc3RyaW5nIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTc5OCw3ICs4MTUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE3NjYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNzc3IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19ieV90eXBlICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBVbml2ZXJzYWwgcHJpbnQgcm91dGluZSwgcHJpbnRzIGEgXGZCdmFyaWFibGVcZlAgaW50byBhIGJ1ZmZlciBhY2NvcmRpbmcgdG8gdGhlIFxmQnZhcmlhYmxlXGZQIHR5cGUuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTgyOSw3ICs4NDYsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NDAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxOTUxIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19jb3VudGVyICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYSBjb3VudGVyIHZhbHVlIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTg2MCw3ICs4NzcsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MzMgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTQ0IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19jb3VudGVyNjQgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIGNvdW50ZXIgaW50byBhIGJ1ZmZlci4gVGhlIFxmQnZhcmlhYmxlXGZQIHZhciBpcyBlbmNvZGVkIGFzIGEgY291bnRlciB2YWx1ZS4KQEAgLTg5Myw3ICs5MTAsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg0OSBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg2MCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfZ2F1Z2UgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIGdhdWdlIHZhbHVlIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTkyNCw3ICs5NDEsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0NjAgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDcxIG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19oaW50ZWRfaW50ZWdlciAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGxvbmcgdmFsLCBjb25zdCBjaGFyIGRlY2ltYWx0eXBlLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGFuIGludGVnZXIgYWNjb3JkaW5nIHRvIHRoZSBoaW50IGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTk1NSw3ICs5NzIsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDExODYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTk3IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19pbnRlZ2VyICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gaW50ZWdlciBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC05ODYsNyArMTAwMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI2MCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyNzEgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX2lwYWRkcmVzcyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGFuIGlwLWFkZHJlc3MgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTAxNyw3ICsxMDM0LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjYyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTY3MyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfbmV0d29ya2FkZHJlc3MgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhIG5ldHdvcmsgYWRkcmVzcyBpbnRvIGEgYnVmZmVyLiBJZiBhbGxvd19yZWFsbG9jIGlzIHRydWUgdGhlIGJ1ZmZlciB3aWxsIGJlIChyZSlhbGxvY2F0ZWQgdG8gZml0IGluIHRoZSBuZWVkZWQgc2l6ZS4gKE5vdGU6ICpidWYgbWF5IGNoYW5nZSBkdWUgdG8gdGhpcy4pCkBAIC0xMDQ4LDcgKzEwNjUsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1OTYgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNjA3IG9mIGZpbGUgbWliLmMuCiAuU1MgImludCBzcHJpbnRfcmVhbGxvY19udWxsICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYSBudWxsIHZhbHVlIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTEwNzksNyArMTA5Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTcyMiBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE3MzMgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX29iamVjdF9pZGVudGlmaWVyICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gb2JqZWN0IGlkZW50aWZpZXIgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTExMCw3ICsxMTI3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDQyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTA1MyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2Nfb2N0ZXRfc3RyaW5nICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gb2N0ZXQgc3RyaW5nIGludG8gYSBidWZmZXIuIFRoZSBcZkJ2YXJpYWJsZVxmUCB2YXIgaXMgZW5jb2RlZCBhcyBvY3RldCBzdHJpbmcuCkBAIC0xMTQzLDcgKzExNjAsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQzMCBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ0OCBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2Nfb3BhcXVlICh1X2NoYXIgKiogYnVmLCBzaXplX3QgKiBidWZfbGVuLCBzaXplX3QgKiBvdXRfbGVuLCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogdmFyLCBjb25zdCBzdHJ1Y3QgXGZCZW51bV9saXN0XGZQICogZW51bXMsIGNvbnN0IGNoYXIgKiBoaW50LCBjb25zdCBjaGFyICogdW5pdHMpIgogLlBQCiBQcmludHMgYW4gb2JqZWN0IGlkZW50aWZpZXIgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTE3NCw3ICsxMTkxLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5NTIgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5NjMgb2YgZmlsZSBtaWIuYy4KIC5TUyAiaW50IHNwcmludF9yZWFsbG9jX3RpbWV0aWNrcyAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhciwgY29uc3Qgc3RydWN0IFxmQmVudW1fbGlzdFxmUCAqIGVudW1zLCBjb25zdCBjaGFyICogaGludCwgY29uc3QgY2hhciAqIHVuaXRzKSIKIC5QUAogUHJpbnRzIGEgdGltZXRpY2sgXGZCdmFyaWFibGVcZlAgaW50byBhIGJ1ZmZlci4gSWYgYWxsb3dfcmVhbGxvYyBpcyB0cnVlIHRoZSBidWZmZXIgd2lsbCBiZSAocmUpYWxsb2NhdGVkIHRvIGZpdCBpbiB0aGUgbmVlZGVkIHNpemUuIChOb3RlOiAqYnVmIG1heSBjaGFuZ2UgZHVlIHRvIHRoaXMuKQpAQCAtMTIwNSw3ICsxMjIyLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTEyIG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTEyMyBvZiBmaWxlIG1pYi5jLgogLlNTICJpbnQgc3ByaW50X3JlYWxsb2NfdWludGVnZXIgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG91dF9sZW4sIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXIsIGNvbnN0IHN0cnVjdCBcZkJlbnVtX2xpc3RcZlAgKiBlbnVtcywgY29uc3QgY2hhciAqIGhpbnQsIGNvbnN0IGNoYXIgKiB1bml0cykiCiAuUFAKIFByaW50cyBhbiB1bnNpZ25lZCBpbnRlZ2VyIGludG8gYSBidWZmZXIuIElmIGFsbG93X3JlYWxsb2MgaXMgdHJ1ZSB0aGUgYnVmZmVyIHdpbGwgYmUgKHJlKWFsbG9jYXRlZCB0byBmaXQgaW4gdGhlIG5lZWRlZCBzaXplLiAoTm90ZTogKmJ1ZiBtYXkgY2hhbmdlIGR1ZSB0byB0aGlzLikKQEAgLTEyMzYsNyArMTI1Myw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM2MyBvZiBmaWxlIG1pYi5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEzNzQgb2YgZmlsZSBtaWIuYy4KIC5TUyAiY2hhciogdXB0aW1lX3N0cmluZyAodV9sb25nIHRpbWV0aWNrcywgY2hhciAqIGJ1ZikiCiAuUFAKIENvbnZlcnRzIHRpbWV0aWNrcyB0byBob3VycywgbWludXRlcywgc2Vjb25kcyBzdHJpbmcuIENNVSBjb21wYXRpYmxlIGRvZXMgbm90IHNob3cgY2VudGlzZWNvbmRzLgpAQCAtMTI2MCw3ICsxMjc3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1ODE0IG9mIGZpbGUgbWliLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTk2MSBvZiBmaWxlIG1pYi5jLgogLlNIICJWYXJpYWJsZSBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJcZkJQcmVmaXhMaXN0XGZQIG1pYl9wcmVmaXhlc1tdIlxmQkluaXRpYWwgdmFsdWU6XGZQCkBAIC0xMjc3LDcgKzEyOTQsNyBAQAogfQogLmZpCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjMgb2YgZmlsZSBtaWIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxODEgb2YgZmlsZSBtaWIuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMgYi9tYW4vbmV0c25tcF9tb2RlX2VuZF9jYWxsLjMKaW5kZXggZTk0MWIwOS4uZDM2NjkyMSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbW9kZV9lbmRfY2FsbC4zCisrKyBiL21hbi9uZXRzbm1wX21vZGVfZW5kX2NhbGwuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibW9kZV9lbmRfY2FsbCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJtb2RlX2VuZF9jYWxsIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zIGIvbWFuL25ldHNubXBfbXVsdGlwbGV4ZXIuMwppbmRleCBjNmIyYzRkLi5lMzc0MzY1IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9tdWx0aXBsZXhlci4zCisrKyBiL21hbi9uZXRzbm1wX211bHRpcGxleGVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm11bHRpcGxleGVyIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm11bHRpcGxleGVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zLjMKaW5kZXggMmZlNmZlNC4uZDM3MDk2MSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcy4zCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb19zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9uZXRzbm1wX2NvbHVtbl9pbmZvX3QuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zCmluZGV4IDdlODUyYmMuLmU4YTI5MWMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfY29sdW1uX2luZm9fdC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX2NvbHVtbl9pbmZvX3QiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9jb2x1bW5faW5mb190IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC00MywxNCArNDMsMTQgQEAKIAogT1ZFUkxBUFBJTkcgUkFOR0VTIEFSRSBOT1QgU1VQUE9SVEVELiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUyIG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA1OCBvZiBmaWxlIHRhYmxlLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgImNoYXIgXGZCbmV0c25tcF9jb2x1bW5faW5mb190OjpsaXN0X2NvdW50XGZQIgogLlBQCiBvbmx5IHVzZWZ1bCBpZiBpc1JhbmdlID09IDAgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NSBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNjEgb2YgZmlsZSB0YWJsZS5oLgogCiAuU0ggIkF1dGhvciIKIC5QUCAKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfZGF0YV9saXN0X3MuMwppbmRleCBkZTU3OWE4Li4xY2ZkNjlkIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX2RhdGFfbGlzdF9zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9kYXRhX2xpc3Rfcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX2RhdGFfbGlzdF9zIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfZGF0YV9saXN0X3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMKaW5kZXggMDczMWFkMi4uODVkZDNlMSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25fcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX2l0ZXJhdG9yX2luZm9fcy4zCmluZGV4IDM1OWY3ODguLjQyNjZlMDIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfaXRlcmF0b3JfaW5mb19zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9pdGVyYXRvcl9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF9pdGVyYXRvcl9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9pdGVyYXRvcl9pbmZvX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMyBiL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMuMwppbmRleCAzNjc5MWIxLi42YWI1N2EwIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9hY2Nlc3NfbWV0aG9kcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJuZXRzbm1wX21pYl9oYW5kbGVyX2FjY2Vzc19tZXRob2RzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfbWliX2hhbmRsZXJfYWNjZXNzX21ldGhvZHMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMKaW5kZXggOTM0YWUwOS4uNzQ5NDFmOSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9tZXRob2RzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfbWliX2hhbmRsZXJfbWV0aG9kcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX21pYl9oYW5kbGVyX21ldGhvZHMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbWliX2hhbmRsZXJfcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMKaW5kZXggNjVmYjNjYS4uNTU1NjI2MSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMKKysrIGIvbWFuL25ldHNubXBfbmV0c25tcF9taWJfaGFuZGxlcl9zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfbWliX2hhbmRsZXJfcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXRzbm1wX21pYl9oYW5kbGVyX3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE0YzVhNgotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX25ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfcy4zCkBAIC0wLDAgKzEsODUgQEAKKy5USCAibmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCituZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3MgXC0gCisuUFAKK2NhbGxiYWNrIGhlYWRlciAgCisKKy5TSCBTWU5PUFNJUworLmJyCisuUFAKKy5QUAorXGZDI2luY2x1ZGUgPG9iamVjdF9tb25pdG9yLmg+XGZQCisuU1MgIkRhdGEgRmllbGRzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInVuc2lnbmVkIGludCBcZkJldmVudFxmUCIKKy5icgorLlJJICJcZkljYWxsYmFjayB0eXBlIFxmUCIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF9pbmRleFxmUCBcZkJtb25pdG9yZWRfb2JqZWN0XGZQIgorLmJyCisuUkkgIlxmSXJlZ2lzdGVyZWQgb2lkIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQnByaW9yaXR5XGZQIgorLmJyCisuUkkgIlxmSXByaW9yaXR5IFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQndhdGNoZXJfZGF0YVxmUCIKKy5icgorLlJJICJcZklwb2ludGVyIGdpdmVuIGJ5IHdhdGNoZXIgYXQgcmVnaXN0cmF0aW9uIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm9iamVjdF9pbmZvXGZQIgorLmJyCisuUkkgIlxmSXBvaW50ZXIgcGFzc2VkIGZyb20gdGhlIG1vbml0b3JlZCBvYmplY3QgXGZQIgorLnRpIC0xYworLlJJICJzdHJ1Y3QgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zXGZQICogXGZCcHJpdmF0ZVxmUCIKKy5icgorLlJJICJcZklETyBOT1QgVVNFLCBJTlRFUk5BTCBVU0UgT05MWS4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCcmVmc1xmUCIKKy5icgorLmluIC0xYworLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKKy5QUCAKK2NhbGxiYWNrIGhlYWRlciAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDY0IG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKKy5QUCAKKy5TUyAidW5zaWduZWQgaW50IFxmQm5ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfczo6ZXZlbnRcZlAiCisuUFAKK2NhbGxiYWNrIHR5cGUgCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA2NyBvZiBmaWxlIG9iamVjdF9tb25pdG9yLmguCisuU1MgIlxmQm5ldHNubXBfaW5kZXhcZlAgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zOjptb25pdG9yZWRfb2JqZWN0XGZQIgorLlBQCityZWdpc3RlcmVkIG9pZCAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDcwIG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TUyAidm9pZCogXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zOjpvYmplY3RfaW5mb1xmUCIKKy5QUAorcG9pbnRlciBwYXNzZWQgZnJvbSB0aGUgbW9uaXRvcmVkIG9iamVjdCAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDc5IG9mIGZpbGUgb2JqZWN0X21vbml0b3IuaC4KKy5TUyAiaW50IFxmQm5ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfczo6cHJpb3JpdHlcZlAiCisuUFAKK3ByaW9yaXR5IAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzMgb2YgZmlsZSBvYmplY3RfbW9uaXRvci5oLgorLlNTICJzdHJ1Y3QgXGZCbmV0c25tcF9tb25pdG9yX2NhbGxiYWNrX2hlYWRlcl9zXGZQKiBcZkJuZXRzbm1wX21vbml0b3JfY2FsbGJhY2tfaGVhZGVyX3M6OnByaXZhdGVcZlBcZkMgW3JlYWRdXGZQIgorLlBQCitETyBOT1QgVVNFLCBJTlRFUk5BTCBVU0UgT05MWS4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA4MiBvZiBmaWxlIG9iamVjdF9tb25pdG9yLmguCisuU1MgInZvaWQqIFxmQm5ldHNubXBfbW9uaXRvcl9jYWxsYmFja19oZWFkZXJfczo6d2F0Y2hlcl9kYXRhXGZQIgorLlBQCitwb2ludGVyIGdpdmVuIGJ5IHdhdGNoZXIgYXQgcmVnaXN0cmF0aW9uIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzYgb2YgZmlsZSBvYmplY3RfbW9uaXRvci5oLgorCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF9yZXF1ZXN0X2luZm9fcy4zCmluZGV4IDE1YmQxNjguLjZmNGFmMTggMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfcmVxdWVzdF9pbmZvX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3JlcXVlc3RfaW5mb19zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfcmVxdWVzdF9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF9yZXF1ZXN0X2luZm9fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zLjMgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMwppbmRleCAxZWM1ZTliLi5lOGIwYzMzIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX3MuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAibmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzksMzQgKzM5LDM0IEBACiAuUFAgCiBUYWJsZSByZWdpc3RyYXRpb24gc3RydWN0dXJlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc0IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA4MCBvZiBmaWxlIHRhYmxlLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgIlxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCogXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjppbmRleGVzXGZQIgogLlBQCiBsaXN0IG9mIHZhcmJpbmRzIHdpdGggb25seSAndHlwZScgc2V0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzYgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgyIG9mIGZpbGUgdGFibGUuaC4KIC5TUyAidW5zaWduZWQgaW50IFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9fczo6bWF4X2NvbHVtblxmUCIKIC5QUAogdGhlIG1heGltdW0gY29sdW1ucyBudW1iZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NyBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjptaW5fY29sdW1uXGZQIgogLlBQCiB0aGUgbWluaW11bSBjb2x1bW5zIG51bWJlci4gSWYgdGhlcmUgYXJlIGNvbHVtbnMgaW4tYmV0d2VlbiB3aGljaCBhcmUgbm90IHZhbGlkLCB1c2UgdmFsaWRfY29sdW1ucyB0byBnZXQgYXV0b21hdGljIGNvbHVtbiByYW5nZSBjaGVja2luZy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgOTEgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjpudW1iZXJfaW5kZXhlc1xmUCIKIC5QUAogY2FsY3VsYXRlZCBhdXRvbWF0aWNhbGx5IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzggb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg0IG9mIGZpbGUgdGFibGUuaC4KIC5TUyAiXGZCbmV0c25tcF9jb2x1bW5faW5mb1xmUCogXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb19zOjp2YWxpZF9jb2x1bW5zXGZQIgogLlBQCiBtb3JlIGRldGFpbHMgb24gY29sdW1ucyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkwIG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSA5NiBvZiBmaWxlIHRhYmxlLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zIGIvbWFuL25ldHNubXBfbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcy4zCmluZGV4IDU1NmM4NjkuLjNiOTQzOTcgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX25ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MuMworKysgYi9tYW4vbmV0c25tcF9uZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvX3MiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAibmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNDAsMjQgKzQwLDI0IEBACiAuUFAgCiBUaGUgdGFibGUgcmVxdWVzdCBpbmZvIHN0cnVjdHVyZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDIgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwOCBvZiBmaWxlIHRhYmxlLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgInVuc2lnbmVkIGludCBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zOjpjb2xudW1cZlAiCiAuUFAKIDAgaWYgT0lEIG5vdCBsb25nIGVub3VnaCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEwNCBvZiBmaWxlIHRhYmxlLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgdGFibGUuaC4KIC5TUyAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQKiBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb19zOjppbmRleGVzXGZQIgogLlBQCiBjb250ZW50cyBmcmVlZCBieSBoZWxwZXIgdXBvbiBleGl0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA4IG9mIGZpbGUgdGFibGUuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMTQgb2YgZmlsZSB0YWJsZS5oLgogLlNTICJ1bnNpZ25lZCBpbnQgXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9fczo6bnVtYmVyX2luZGV4ZXNcZlAiCiAuUFAKIDAgaWYgZmFpbHVyZSB0byBwYXJzZSBhbnkgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDYgb2YgZmlsZSB0YWJsZS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExMiBvZiBmaWxlIHRhYmxlLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfbnVsbF9jb250YWluZXIuMyBiL21hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNjMmZiNAotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX251bGxfY29udGFpbmVyLjMKQEAgLTAsMCArMSwzMyBAQAorLlRIICJudWxsX2NvbnRhaW5lciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuYWQgbAorLm5oCisuU0ggTkFNRQorbnVsbF9jb250YWluZXIgXC0gCisuUFAKK0hlbHBzIHlvdSBpbXBsZW1lbnQgc3BlY2lhbGl6ZWQgY29udGFpbmVycy4gIAorCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqIFxmQm5ldHNubXBfY29udGFpbmVyX2dldF9udWxsXGZQICh2b2lkKSIKKy5icgorLnRpIC0xYworLlJJICJcZkJuZXRzbm1wX2ZhY3RvcnlcZlAgKiBcZkJuZXRzbm1wX2NvbnRhaW5lcl9nZXRfbnVsbF9mYWN0b3J5XGZQICh2b2lkKSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29udGFpbmVyX251bGxfaW5pdFxmUCAodm9pZCkiCisuYnIKKy5pbiAtMWMKKy5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCisuUFAgCitIZWxwcyB5b3UgaW1wbGVtZW50IHNwZWNpYWxpemVkIGNvbnRhaW5lcnMuIAorCitUaGlzIGlzIGEgc2ltcGxlIGNvbnRhaW5lciB0aGF0IGRvZXNuJ3QgYWN0dWFsbHkgY29udGFpbiBhbnl0aGluZy4gQWxsIHRoZSBtZXRob2RzIHNpbXBseSBsb2cgYSBkZWJ1ZyBtZXNzYWdlIGFuZCByZXR1cm4uCisuUFAKK1RoZSBvcmlnaW5hbCBpbnRlbnQgZm9yIHRoaXMgY29udGFpbmVyIGlzIGFzIGEgd3JhcHBlciBmb3IgYSBzcGVjaWFsaXplZCBjb250YWluZXIuIEltcGxlbWVudCB0aGUgZnVuY3Rpb25zIHlvdSBuZWVkLCBjcmVhdGUgYSBudWxsX2NvbnRhaW5lciwgYW5kIG92ZXJyaWRlIHRoZSBkZWZhdWx0IGZ1bmN0aW9ucyB3aXRoIHlvdXIgc3BlY2lhbGl6ZWQgdmVyc2lvbnMuCisuUFAKK1lvdSBjYW4gdXNlIHRoZSAnY29udGFpbmVyOm51bGwnIGRlYnVnIHRva2VuIHRvIHNlZSB3aGF0IGZ1bmN0aW9ucyBhcmUgYmVpbmcgY2FsbGVkLCB0byBoZWxwIGRldGVybWluZSBpZiB5b3UgbmVlZCB0byBpbXBsZW1lbnQgdGhlbS4gCisuU0ggIkF1dGhvciIKKy5QUCAKK0dlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfb2lkX3N0YXNoLjMgYi9tYW4vbmV0c25tcF9vaWRfc3Rhc2guMwppbmRleCA4YWIwMzRiLi5mYWQyOGU5IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9vaWRfc3Rhc2guMworKysgYi9tYW4vbmV0c25tcF9vaWRfc3Rhc2guMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiU3RvcmUgYW5kIHJldHJpZXZlIGRhdGEgcmVmZXJlbmNlZCBieSBhbiBPSUQuIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggIlN0b3JlIGFuZCByZXRyaWV2ZSBkYXRhIHJlZmVyZW5jZWQgYnkgYW4gT0lELiIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTgsMTEgKzE4LDExIEBACiAuYnIKIC5SSSAiXGZJQ3JlYXRlcyBhIG5ldHNubXBfb2lkX3N0YXNoX25vZGUuIFxmUCIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfb2lkX3N0YXNoX2FkZF9kYXRhXGZQIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICoqcm9vdCwgb2lkICpsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuLCB2b2lkICpteWRhdGEpIgorLlJJICJpbnQgXGZCbmV0c25tcF9vaWRfc3Rhc2hfYWRkX2RhdGFcZlAgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKipyb290LCBjb25zdCBvaWQgKmxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4sIHZvaWQgKm15ZGF0YSkiCiAuYnIKIC5SSSAiXGZJYWRkcyBkYXRhIHRvIHRoZSBzdGFzaCBhdCBhIGdpdmVuIG9pZC4gXGZQIgogLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICogXGZCbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X25vZGVcZlAgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKnJvb3QsIG9pZCAqbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikiCisuUkkgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiBcZkJuZXRzbm1wX29pZF9zdGFzaF9nZXRfbm9kZVxmUCAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqcm9vdCwgY29uc3Qgb2lkICpsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKIC5icgogLlJJICJcZklyZXR1cm5zIGEgXGZCbm9kZVxmUCBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuIFxmUCIKIC50aSAtMWMKQEAgLTMwLDcgKzMwLDcgQEAKIC5icgogLlJJICJcZklyZXR1cm5zIHRoZSBuZXh0IFxmQm5vZGVcZlAgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELiBcZlAiCiAudGkgLTFjCi0uUkkgInZvaWQgKiBcZkJuZXRzbm1wX29pZF9zdGFzaF9nZXRfZGF0YVxmUCAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqcm9vdCwgb2lkICpsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfb2lkX3N0YXNoX2dldF9kYXRhXGZQIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICpyb290LCBjb25zdCBvaWQgKmxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4pIgogLmJyCiAuUkkgIlxmSXJldHVybnMgYSBkYXRhIHBvaW50ZXIgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gT0lELiBcZlAiCiAudGkgLTFjCkBAIC02MCw3ICs2MCw3IEBACiBJdCBzdG9yZXMgYSBidW5jaCBvZiBkYXRhIHBvaW50ZXJzIHdpdGhpbiBhIG1lbW9yeSBcZkJ0cmVlXGZQIHRoYXQgYWxsb3dzIGZhaXJseSBlZmZpY2llbnQgbG9va3VwcyB3aXRoIGEgaGVhdmlseSBwb3B1bGF0ZWQgXGZCdHJlZVxmUC4gCiAuU0ggIkZ1bmN0aW9uIERvY3VtZW50YXRpb24iCiAuUFAgCi0uU1MgImludCBuZXRzbm1wX29pZF9zdGFzaF9hZGRfZGF0YSAoXGZCbmV0c25tcF9vaWRfc3Rhc2hfbm9kZVxmUCAqKiByb290LCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuLCB2b2lkICogbXlkYXRhKSIKKy5TUyAiaW50IG5ldHNubXBfb2lkX3N0YXNoX2FkZF9kYXRhIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICoqIHJvb3QsIGNvbnN0IG9pZCAqIGxvb2t1cCwgc2l6ZV90IGxvb2t1cF9sZW4sIHZvaWQgKiBteWRhdGEpIgogLlBQCiBhZGRzIGRhdGEgdG8gdGhlIHN0YXNoIGF0IGEgZ2l2ZW4gb2lkLiBcZkJQYXJhbWV0ZXJzOlxmUAogLlJTIDQKQEAgLTEyMCw3ICsxMjAsNyBAQAogCiAuUFAKIERlZmluaXRpb24gYXQgbGluZSA0MDEgb2YgZmlsZSBvaWRfc3Rhc2guYy4KLS5TUyAidm9pZCogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X2RhdGEgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiByb290LCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKKy5TUyAidm9pZCogbmV0c25tcF9vaWRfc3Rhc2hfZ2V0X2RhdGEgKFxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAgKiByb290LCBjb25zdCBvaWQgKiBsb29rdXAsIHNpemVfdCBsb29rdXBfbGVuKSIKIC5QUAogcmV0dXJucyBhIGRhdGEgcG9pbnRlciBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBPSUQuIFRoaXMgaXMgZXF1aXZlbGVudCB0byBuZXRzbm1wX29pZF9zdGFzaF9nZXRfbm9kZSwgYnV0IHJldHVybnMgb25seSB0aGUgZGF0YSBub3QgdGhlIGVudGlyZSBcZkJub2RlXGZQLgogLlBQCkBAIC0xMzYsNyArMTM2LDcgQEAKIAogLlBQCiBEZWZpbml0aW9uIGF0IGxpbmUgMjgyIG9mIGZpbGUgb2lkX3N0YXNoLmMuCi0uU1MgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAqIG5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICogcm9vdCwgb2lkICogbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikiCisuU1MgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAqIG5ldHNubXBfb2lkX3N0YXNoX2dldF9ub2RlIChcZkJuZXRzbm1wX29pZF9zdGFzaF9ub2RlXGZQICogcm9vdCwgY29uc3Qgb2lkICogbG9va3VwLCBzaXplX3QgbG9va3VwX2xlbikiCiAuUFAKIHJldHVybnMgYSBcZkJub2RlXGZQIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIE9JRC4gXGZCUGFyYW1ldGVyczpcZlAKIC5SUyA0CmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9vbGRfYXBpLjMgYi9tYW4vbmV0c25tcF9vbGRfYXBpLjMKaW5kZXggMWU2Y2M3NS4uYTEzMjhkZSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfb2xkX2FwaS4zCisrKyBiL21hbi9uZXRzbm1wX29sZF9hcGkuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAib2xkX2FwaSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJvbGRfYXBpIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zNywyNCArMzcsMjQgQEAKIC5QUAogcmV0dXJucyBhIG9sZF9hcGkgaGFuZGxlciB0aGF0IHNob3VsZCBiZSB0aGUgZmluYWwgY2FsbGluZyBoYW5kbGVyLiBEb24ndCB1c2UgdGhpcyBmdW5jdGlvbi4gVXNlIHRoZSBcZkJuZXRzbm1wX3JlZ2lzdGVyX29sZF9hcGkoKVxmUCBmdW5jdGlvbiBpbnN0ZWFkLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM3IG9mIGZpbGUgb2xkX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4IG9mIGZpbGUgb2xkX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9vbGRfYXBpX2hlbHBlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIgogLlBQCiBpbXBsZW1lbnRzIHRoZSBvbGRfYXBpIGhhbmRsZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjYgb2YgZmlsZSBvbGRfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjM1IG9mIGZpbGUgb2xkX2FwaS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9taWJfdGFibGVfcm93IChjb25zdCBjaGFyICogbW9kdWxlTmFtZSwgc3RydWN0IFxmQnZhcmlhYmxlXGZQICogdmFyLCBzaXplX3QgdmFyc2l6ZSwgc2l6ZV90IG51bXZhcnMsIG9pZCAqIG1pYmxvYywgc2l6ZV90IG1pYmxvY2xlbiwgaW50IHByaW9yaXR5LCBpbnQgdmFyX3N1YmlkLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBzcywgY29uc3QgY2hhciAqIGNvbnRleHQsIGludCB0aW1lb3V0LCBpbnQgZmxhZ3MpIgogLlBQCiByZWdpc3RlcnMgYSByb3cgd2l0aGluIGEgbWliIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA3IG9mIGZpbGUgb2xkX2FwaS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExNiBvZiBmaWxlIG9sZF9hcGkuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfb2xkX2FwaSAoY29uc3QgY2hhciAqIG1vZHVsZU5hbWUsIHN0cnVjdCBcZkJ2YXJpYWJsZVxmUCAqIHZhciwgc2l6ZV90IHZhcnNpemUsIHNpemVfdCBudW12YXJzLCBvaWQgKiBtaWJsb2MsIHNpemVfdCBtaWJsb2NsZW4sIGludCBwcmlvcml0eSwgaW50IHJhbmdlX3N1YmlkLCBvaWQgcmFuZ2VfdWJvdW5kLCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBzcywgY29uc3QgY2hhciAqIGNvbnRleHQsIGludCB0aW1lb3V0LCBpbnQgZmxhZ3MpIgogLlBQCiBSZWdpc3RlcnMgYW4gb2xkIEFQSSBzZXQgaW50byB0aGUgbWliIFxmQnRyZWVcZlAuIEZ1bmN0aW9uYWxseSB0aGlzIG1pbWljcyB0aGUgb2xkIHJlZ2lzdGVyX21pYl9jb250ZXh0KCkgZnVuY3Rpb24gKGFuZCBpbiBmYWN0IHRoZSBuZXcgcmVnaXN0ZXJfbWliX2NvbnRleHQoKSBmdW5jdGlvbiBtZXJlbHkgY2FsbHMgdGhpcyBuZXcgb2xkX2FwaSBvbmUpLiAKIC5QUAogbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbl9mcmVlKHJlZ2luZm8pOyBhbHJlYWR5IGZyZWVkIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDggb2YgZmlsZSBvbGRfYXBpLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDkgb2YgZmlsZSBvbGRfYXBpLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfcmVhZF9jb25maWcuMyBiL21hbi9uZXRzbm1wX3JlYWRfY29uZmlnLjMKaW5kZXggZDI0MGUxYi4uNTNjMTM3YSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfcmVhZF9jb25maWcuMworKysgYi9tYW4vbmV0c25tcF9yZWFkX2NvbmZpZy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJwYXJzaW5nIHZhcmlvdXMgY29uZmlndXJhdGlvbiBmaWxlcyBhdCBydW4gdGltZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJwYXJzaW5nIHZhcmlvdXMgY29uZmlndXJhdGlvbiBmaWxlcyBhdCBydW4gdGltZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzcsNyArMzcsNyBAQAogLlJJICJ2b2lkIFxmQnVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyXGZQIChjb25zdCBjaGFyICp0b2tlbikiCiAuYnIKIC50aSAtMWMKLS5SSSAidm9pZCBcZkJ1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnNcZlAgKCkiCisuUkkgInZvaWQgXGZCdW5yZWdpc3Rlcl9hbGxfY29uZmlnX2hhbmRsZXJzXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYwogLlJJICJzdHJ1Y3QgXGZCY29uZmlnX2xpbmVcZlAgKiBcZkJyZWFkX2NvbmZpZ19nZXRfaGFuZGxlcnNcZlAgKGNvbnN0IGNoYXIgKnR5cGUpIgpAQCAtOTcsMTkgKzk3LDE5IEBACiAuUkkgInZvaWQgXGZCc2V0X2NvbmZpZ3VyYXRpb25fZGlyZWN0b3J5XGZQIChjb25zdCBjaGFyICpkaXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfY29uZmlndXJhdGlvbl9kaXJlY3RvcnlcZlAgKCkiCisuUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfY29uZmlndXJhdGlvbl9kaXJlY3RvcnlcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5XGZQIChjb25zdCBjaGFyICpkaXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfcGVyc2lzdGVudF9kaXJlY3RvcnlcZlAgKCkiCisuUkkgImNvbnN0IGNoYXIgKiBcZkJnZXRfcGVyc2lzdGVudF9kaXJlY3RvcnlcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc2V0X3RlbXBfZmlsZV9wYXR0ZXJuXGZQIChjb25zdCBjaGFyICpwYXR0ZXJuKSIKIC5icgogLnRpIC0xYwotLlJJICJjb25zdCBjaGFyICogXGZCZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuXGZQICgpIgorLlJJICJjb25zdCBjaGFyICogXGZCZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYwogLlJJICJ2b2lkIFxmQnJlYWRfY29uZmlnX2ZpbGVzXGZQIChpbnQgd2hlbikiCkBAIC0xMzEsNiArMTMxLDEyIEBACiAuUkkgInZvaWQgXGZCc25tcF9jbGVhbl9wZXJzaXN0ZW50XGZQIChjb25zdCBjaGFyICp0eXBlKSIKIC5icgogLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29uZmlnX2Vycm9yXGZQIChjb25zdCBjaGFyICpzdHIsLi4uKSIKKy5icgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfY29uZmlnX3dhcm5cZlAgKGNvbnN0IGNoYXIgKnN0ciwuLi4pIgorLmJyCisudGkgLTFjCiAuUkkgInZvaWQgXGZCY29uZmlnX3BlcnJvclxmUCAoY29uc3QgY2hhciAqc3RyKSIKIC5icgogLnRpIC0xYwpAQCAtMjUyLDcgKzI1OCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTgzNiBvZiBmaWxlIHJlYWRfY29uZmlnLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTg1OSBvZiBmaWxlIHJlYWRfY29uZmlnLmMuCiAuU1MgInZvaWQgcmVhZF9jb25maWdfc3RvcmUgKGNvbnN0IGNoYXIgKiB0eXBlLCBjb25zdCBjaGFyICogbGluZSkiCiAuUFAKIHJlYWRfY29uZmlnX3N0b3JlIGludGVuZGVkIGZvciB1c2UgYnkgYXBwbGljYXRpb25zIHRvIHN0b3JlIHBlcm1lbmFudCBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGdlbmVyYXRlZCBieSBzZXRzIG9yIHBlcnNpc3RlbnQgY291bnRlcnMuIEFwcGVuZHMgbGluZSB0byBhIGZpbGUgbmFtZWQgZWl0aGVyIEVOVihTTk1QX1BFUlNJU1RFTlRfRklMRSkgb3IgJzxORVRTTk1QX1BFUlNJU1RFTlRfRElSRUNUT1JZPi88dHlwZT4uY29uZicuIEFkZHMgYSB0cmFpbGluZyBuZXdsaW5lIHRvIHRoZSBzdG9yZWQgZmlsZSBpZiBuZWNlc3NhcnkuCkBAIC0yNzEsNyArMjc3LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjcyIG9mIGZpbGUgcmVhZF9jb25maWcuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjYyIG9mIGZpbGUgcmVhZF9jb25maWcuYy4KIC5TUyAiY2hhciogcmVhZF9jb25maWdfc3RvcmVfZGF0YSAoaW50IHR5cGUsIGNoYXIgKiBzdG9yZXRvLCB2b2lkICogZGF0YXB0ciwgc2l6ZV90ICogbGVuKSIKIC5QUAogcmVhZF9jb25maWdfc3RvcmVfZGF0YSBzdG9yZXMgZGF0YSBvZiBhIGdpdmVuIHR5cGUgdG8gYSBjb25maWd1cmF0aW9uIGxpbmUgaW50byB0aGUgc3RvcmV0byBidWZmZXIuIENhbGxzIHJlYWRfY29uZmlnX3N0b3JlX2RhdGFfcHJlZml4IHdpdGggdGhlIHByZWZpeCBwYXJhbWV0ZXIgc2V0IHRvIGEgY2hhciBzcGFjZS4gVGhlIHN1cHBvcnRlZCB0eXBlcyBhcmU6CkBAIC0zMDgsMTAgKzMxNCwxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5OTUgb2YgZmlsZSByZWFkX2NvbmZpZy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIwMTMgb2YgZmlsZSByZWFkX2NvbmZpZy5jLgogLlNTICJzdHJ1Y3QgXGZCY29uZmlnX2xpbmVcZlAqIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyIChjb25zdCBjaGFyICogdHlwZSwgY29uc3QgY2hhciAqIHRva2VuLCB2b2lkKCopKGNvbnN0IGNoYXIgKiwgY2hhciAqKSBwYXJzZXIsIHZvaWQoKikodm9pZCkgcmVsZWFzZXIsIGNvbnN0IGNoYXIgKiBoZWxwKVxmQyBbcmVhZF1cZlAiCiAuUFAKLXJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyIHJlZ2lzdGVycyBoYW5kbGVycyBmb3IgY2VydGFpbiB0b2tlbnMgc3BlY2lmaWVkIGluIGNlcnRhaW4gdHlwZXMgb2YgZmlsZXMuIEFsbG93cyBhIFxmQm1vZHVsZVxmUCB3cml0ZXIgdXNlL3JlZ2lzdGVyIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYmFzZWQgb2ZmIG9mIHRoZSB0eXBlIHBhcmFtZXRlci4gQSBcZkJtb2R1bGVcZlAgd3JpdGVyIG1heSB3YW50IHRvIHNldCB1cCBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHNlcGFyYXRlIG91dCByZWxhdGVkIHRhc2tzL3ZhcmlhYmxlcyBvciBqdXN0IGZvciBtYW5hZ2VtZW50IG9mIHdoZXJlIHRvIHB1dCB0b2tlbnMgYXMgdGhlIFxmQm1vZHVsZVxmUCBvciBtb2R1bGVzIGdldCBtb3JlIGNvbXBsZXggaW4gcmVnYXJkIHRvIGhhbmRsaW5nIHRva2VuIHJlZ2lzdHJhdGlvbnMuCityZWdpc3Rlcl9jb25maWdfaGFuZGxlciByZWdpc3RlcnMgaGFuZGxlcnMgZm9yIGNlcnRhaW4gdG9rZW5zIHNwZWNpZmllZCBpbiBjZXJ0YWluIHR5cGVzIG9mIGZpbGVzLiBMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIG9mIHRoZSBiZWhhdmlvdXIgb2YgdGhlIGxpYnJhcnksIGFnZW50IGFuZCBvdGhlciBhcHBsaWNhdGlvbnMuCisuUFAKK0FsbG93cyBhIFxmQm1vZHVsZVxmUCB3cml0ZXIgdXNlL3JlZ2lzdGVyIG11bHRpcGxlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYmFzZWQgb2ZmIG9mIHRoZSB0eXBlIHBhcmFtZXRlci4gQSBcZkJtb2R1bGVcZlAgd3JpdGVyIG1heSB3YW50IHRvIHNldCB1cCBtdWx0aXBsZSBjb25maWd1cmF0aW9uIGZpbGVzIHRvIHNlcGFyYXRlIG91dCByZWxhdGVkIHRhc2tzL3ZhcmlhYmxlcyBvciBqdXN0IGZvciBtYW5hZ2VtZW50IG9mIHdoZXJlIHRvIHB1dCB0b2tlbnMgYXMgdGhlIFxmQm1vZHVsZVxmUCBvciBtb2R1bGVzIGdldCBtb3JlIGNvbXBsZXggaW4gcmVnYXJkIHRvIGhhbmRsaW5nIHRva2VuIHJlZ2lzdHJhdGlvbnMuCiAuUFAKIFxmQlBhcmFtZXRlcnM6XGZQCiAuUlMgNApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfcmVhZF9vbmx5LjMgYi9tYW4vbmV0c25tcF9yZWFkX29ubHkuMwppbmRleCA1M2E0MGZkLi4xZTVhMzViIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9yZWFkX29ubHkuMworKysgYi9tYW4vbmV0c25tcF9yZWFkX29ubHkuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAicmVhZF9vbmx5IiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInJlYWRfb25seSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzIsMTIgKzMyLDEyIEBACiAuUFAKIHJldHVybnMgYSByZWFkX29ubHkgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOSBvZiBmaWxlIHJlYWRfb25seS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzIG9mIGZpbGUgcmVhZF9vbmx5LmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X3JlYWRfb25seV9oZWxwZXIgKHZvaWQpIgogLlBQCiBpbml0aWFsaXplcyB0aGUgcmVhZF9vbmx5IGhlbHBlciB3aGljaCB0aGVuIHJlZ2lzdGVycyBhIHJlYWRfb25seSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgxIG9mIGZpbGUgcmVhZF9vbmx5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzIgb2YgZmlsZSByZWFkX29ubHkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9yb3dfbWVyZ2UuMyBiL21hbi9uZXRzbm1wX3Jvd19tZXJnZS4zCmluZGV4IDk2YzYyZDIuLmM2ZGFhNGUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3Jvd19tZXJnZS4zCisrKyBiL21hbi9uZXRzbm1wX3Jvd19tZXJnZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJyb3dfbWVyZ2UiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAicm93X21lcmdlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zY2FsYXIuMyBiL21hbi9uZXRzbm1wX3NjYWxhci4zCmluZGV4IDg5ZWQ0Y2MuLmRjY2E2NzEgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NjYWxhci4zCisrKyBiL21hbi9uZXRzbm1wX3NjYWxhci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJzY2FsYXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic2NhbGFyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC00Niw3ICs0Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDYgb2YgZmlsZSBzY2FsYXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NyBvZiBmaWxlIHNjYWxhci5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfc2NhbGFyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbykiCiAuUFAKIFRoaXMgZnVuY3Rpb24gcmVnaXN0ZXJzIGEgcmVhZCBvbmx5IHNjYWxhciBoZWxwZXIgaGFuZGxlci4gVGhpcyBmdW5jdGlvbiBpcyB2ZXJ5IHNpbWlsYXIgdG8gbmV0c25tcF9yZWdpc3Rlcl9zY2FsYXIgdGhlIG9ubHkgYWRkaXRpb24gaXMgdGhhdCB0aGUgJ3JlYWRfb25seScgaGFuZGxlciBpcyBpbmplY3RlZCBpbnRvIHRoZSBoYW5kbGVyIGNoYWluIHByaW9yIHRvIGluamVjdGluZyB0aGUgc2VyaWFsaXplIGhhbmRsZXIgYW5kIHJlZ2lzdGVyaW5nIHJlZ2luZm8uCkBAIC03MCw3ICs3MCw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA5IG9mIGZpbGUgc2NhbGFyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgc2NhbGFyLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3NjYWxhciAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8pIgogLlBQCiBUaGlzIGZ1bmN0aW9uIHJlZ2lzdGVycyBhIHNjYWxhciBoZWxwZXIgaGFuZGxlci4gVGhlIHJlZ2lzdGVyZWQgT0lELCByZWdpbmZvLT5yb290b2lkLCBzcGFjZSBpcyBleHRlbmRlZCBmb3IgdGhlIGluc3RhbmNlIHN1YmlkIHVzaW5nIHJlYWxsb2MoKSBidXQgdGhlIHJlZ2luZm8tPnJvb3RvaWRfbGVuIGxlbmd0aCBpcyBub3QgZXh0ZW5kZWQganVzdCB5ZXQuIC5UaGlzIGZ1bmN0aW9uIHN1YnNlcXVlbnRseSBpbmplY3RzIHRoZSBpbnN0YW5jZSwgc2NhbGFyLCBhbmQgc2VyaWFsaXplIGhlbHBlciBoYW5kbGVycyBiZWZvcmUgYWN0dWFsbHkgcmVnaXN0ZXJpbmcgcmVnaW5mby4KQEAgLTk2LDcgKzk2LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NCBvZiBmaWxlIHNjYWxhci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc1IG9mIGZpbGUgc2NhbGFyLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc2NhbGFyX2dyb3VwX2dyb3VwLjMgYi9tYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMwppbmRleCBjYmJhOWIwLi41NDAyZmJjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMworKysgYi9tYW4vbmV0c25tcF9zY2FsYXJfZ3JvdXBfZ3JvdXAuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic2NhbGFyX2dyb3VwIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInNjYWxhcl9ncm91cCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc2VyaWFsaXplLjMgYi9tYW4vbmV0c25tcF9zZXJpYWxpemUuMwppbmRleCA0NDc0ZjNkLi5kZjA4ZTg5IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zZXJpYWxpemUuMworKysgYi9tYW4vbmV0c25tcF9zZXJpYWxpemUuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic2VyaWFsaXplIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInNlcmlhbGl6ZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMzcsMjIgKzM3LDIyIEBACiAuUFAKIHJldHVybnMgYSBzZXJpYWxpemUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMSBvZiBmaWxlIHNlcmlhbGl6ZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1IG9mIGZpbGUgc2VyaWFsaXplLmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X3NlcmlhbGl6ZSAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSBzZXJpYWxpemUgaGVscGVyIHdoaWNoIHRoZW4gcmVnaXN0ZXJzIGEgc2VyaWFsaXplIGhhbmRsZXIgYXMgYSBydW4tdGltZSBpbmplY3RhYmxlIGhhbmRsZXIgZm9yIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2UuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSBzZXJpYWxpemUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4NyBvZiBmaWxlIHNlcmlhbGl6ZS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl9zZXJpYWxpemUgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogZnVuY3Rpb25hbGx5IHRoZSBzYW1lIGFzIGNhbGxpbmcgXGZCbmV0c25tcF9yZWdpc3Rlcl9oYW5kbGVyKClcZlAgYnV0IGFsc28gaW5qZWN0cyBhIHNlcmlhbGl6ZSBoYW5kbGVyIGF0IHRoZSBzYW1lIHRpbWUgZm9yIHlvdS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MCBvZiBmaWxlIHNlcmlhbGl6ZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0IG9mIGZpbGUgc2VyaWFsaXplLmMuCiAuU1MgImludCBuZXRzbm1wX3NlcmlhbGl6ZV9oZWxwZXJfaGFuZGxlciAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIGhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMpIgogLlBQCiBJbXBsZW1lbnRzIHRoZSBzZXJpYWwgaGFuZGxlci4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0OCBvZiBmaWxlIHNlcmlhbGl6ZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQyIG9mIGZpbGUgc2VyaWFsaXplLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc25tcF9hZ2VudC4zIGIvbWFuL25ldHNubXBfc25tcF9hZ2VudC4zCmluZGV4IGI5MjFkYWQuLmQ2ZjQ3ODQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NubXBfYWdlbnQuMworKysgYi9tYW4vbmV0c25tcF9zbm1wX2FnZW50LjMKQEAgLTEsNCArMSw0IEBACi0uVEggIm5ldC1zbm1wIGFnZW50IHJlbGF0ZWQgcHJvY2Vzc2luZyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJuZXQtc25tcCBhZ2VudCByZWxhdGVkIHByb2Nlc3NpbmciIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTUwLDYgKzUwLDI0IEBACiAKIC5pbiArMWMKIC50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2FnZW50X2FkZF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIFxmQm5ldHNubXBfZGF0YV9saXN0XGZQICpcZkJub2RlXGZQKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSBpbnQgXGZCbmV0c25tcF9hZ2VudF9yZW1vdmVfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpLCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkICogXGZCbmV0c25tcF9hZ2VudF9nZXRfbGlzdF9kYXRhXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpLCBjb25zdCBjaGFyICpuYW1lKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldFxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSkiCisuYnIKKy50aSAtMWMKKy5SSSAiTkVUU05NUF9JTkxJTkUgdm9pZCBcZkJuZXRzbm1wX2ZyZWVfYWdlbnRfZGF0YV9zZXRzXGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpKSIKKy5icgorLnRpIC0xYworLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmkpIgorLmJyCisudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX2FnZW50X2NoZWNrX3BhY2tldFxmUCAoXGZCbmV0c25tcF9zZXNzaW9uXGZQICosIHN0cnVjdCBcZkJuZXRzbm1wX3RyYW5zcG9ydF9zXGZQICosIHZvaWQgKiwgaW50KSIKIC5icgogLnRpIC0xYwpAQCAtNjEsNyArNzksNiBAQAogLnRpIC0xYwogLlJJICJpbnQgXGZCaGFuZGxlX3BkdVxmUCAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICphc3ApIgogLmJyCi0uUkkgIlxmSVRoaXMgZnVuY3Rpb24gY2FsbHMgaW50byBuZXRzbm1wX3NldF9tb2RlX3JlcXVlc3RfZXJyb3IsIHNldHMgZXJyb3JfdmFsdWUgZ2l2ZW4gYSByZXFpbmZvLT5tb2RlIHZhbHVlLiBcZlAiCiAudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX2hhbmRsZV9yZXF1ZXN0XGZQIChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKmFzcCwgaW50IHN0YXR1cykiCiAuYnIKQEAgLTExMiw3ICsxMjksNyBAQAogLlJJICJORVRTTk1QX1NUQVRJQ19JTkxJTkUgdm9pZCBcZkJfZml4X2VuZG9mbWlidmlld1xmUCAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICphc3ApIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJnZXROZXh0U2Vzc0lEXGZQICgpIgorLlJJICJpbnQgXGZCZ2V0TmV4dFNlc3NJRFxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKIC5SSSAiaW50IFxmQmFnZW50X2NoZWNrX2FuZF9wcm9jZXNzXGZQIChpbnQgYmxvY2spIgpAQCAtMjQ5LDI0ICsyNjYsNiBAQAogLlJJICJ1X2xvbmcgXGZCbmV0c25tcF9nZXRfYWdlbnRfdXB0aW1lXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfYWdlbnRfYWRkX2xpc3RfZGF0YVxmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSwgXGZCbmV0c25tcF9kYXRhX2xpc3RcZlAgKlxmQm5vZGVcZlApIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIGludCBcZkJuZXRzbm1wX2FnZW50X3JlbW92ZV9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIGNvbnN0IGNoYXIgKm5hbWUpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgKiBcZkJuZXRzbm1wX2FnZW50X2dldF9saXN0X2RhdGFcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmksIGNvbnN0IGNoYXIgKm5hbWUpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX2FnZW50X2RhdGFfc2V0XGZQIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqYXJpKSIKLS5icgotLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfZnJlZV9hZ2VudF9kYXRhX3NldHNcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICphcmkpIgotLmJyCi0udGkgLTFjCi0uUkkgIk5FVFNOTVBfSU5MSU5FIHZvaWQgXGZCbmV0c25tcF9mcmVlX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAoXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKmFyaSkiCi0uYnIKLS50aSAtMWMKIC5SSSAiaW50IFxmQm5ldHNubXBfc2V0X3JlcXVlc3RfZXJyb3JcZlAgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCwgaW50IGVycm9yX3ZhbHVlKSIKIC5icgogLlJJICJcZklzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCBcZlAiCkBAIC0zMTYsNyArMzE1LDcgQEAKIC5QUAogc2V0IGVycm9yIGZvciBhIHJlcXVlc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNDE3IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0MzEgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBhZ2VudF9jaGVja19hbmRfcHJvY2VzcyAoaW50IGJsb2NrKSIKIC5QUAogVGhpcyBmdW5jdGlvbiBjaGVja3MgZm9yIHBhY2tldHMgYXJyaXZpbmcgb24gdGhlIFNOTVAgcG9ydCBhbmQgcHJvY2Vzc2VzIHRoZW0oc25tcF9yZWFkKSBpZiBzb21lIGFyZSBmb3VuZCwgdXNpbmcgdGhlIHNlbGVjdCgpLiBJZiBibG9jayBpcyBub24gemVybywgdGhlIGZ1bmN0aW9uIGNhbGwgYmxvY2tzIHVudGlsIGEgcGFja2V0IGFycml2ZXMKQEAgLTMzMyw5MiArMzMyLDIyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTY2IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDYyNiBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IGNoZWNrX2dldG5leHRfcmVzdWx0cyAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICogYXNwKSIKIC5QUAogcmV0dXJucyAxIGlmIHRoZXJlIGFyZSB2YWxpZCBHRVRORVhUIHJlcXVlc3RzIGxlZnQuIFJldHVybnMgMCBpZiBub3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjgxOCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyODgzIG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgaGFuZGxlX2dldG5leHRfbG9vcCAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICogYXNwKSIKIC5QUAogcmVwZWF0ZWRseSBjYWxscyBnZXRuZXh0IGhhbmRsZXJzIGxvb2tpbmcgZm9yIGFuIGFuc3dlciB0aWxsIGFsbCByZXF1ZXN0cyBhcmUgc2F0aXNpZmllZC4gSXQncyBleHBlY3RlZCB0aGF0IG9uZSBwYXNzIGhhcyBiZWVuIG1hZGUgYmVmb3JlIGVudGVyaW5nIHRoaXMgZnVuY3Rpb24gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOTM1IG9mIGZpbGUgc25tcF9hZ2VudC5jLgotLlNTICJpbnQgaGFuZGxlX3BkdSAoXGZCbmV0c25tcF9hZ2VudF9zZXNzaW9uXGZQICogYXNwKSIKLS5QUAotVGhpcyBmdW5jdGlvbiBjYWxscyBpbnRvIG5ldHNubXBfc2V0X21vZGVfcmVxdWVzdF9lcnJvciwgc2V0cyBlcnJvcl92YWx1ZSBnaXZlbiBhIHJlcWluZm8tPm1vZGUgdmFsdWUuIEl0J3MgdXNlZCB0byBzZW5kIHNwZWNpZmljIGVycm9ycyBiYWNrIHRvIHRoZSBhZ2VudCB0byBwcm9jZXNzIGFjY29yZGluZ2x5LgotLlBQCi1JZiBlcnJvcl92YWx1ZSBpcyBzZXQgdG8gU05NUF9OT1NVQ0hPQkpFQ1QsIFNOTVBfTk9TVUNISU5TVEFOQ0UsIG9yIFNOTVBfRU5ET0ZNSUJWSUVXIHRoZSBmb2xsb3dpbmcgaXMgYXBwbGljYWJsZTogU2V0cyB0aGUgZXJyb3JfdmFsdWUgdG8gcmVxdWVzdC0+cmVxdWVzdHZiLT50eXBlIGlmIHJlcWluZm8tPm1vZGUgdmFsdWUgaXMgc2V0IHRvIE1PREVfR0VULiBJZiB0aGUgcmVxaW5mby0+bW9kZSB2YWx1ZSBpcyBzZXQgdG8gTU9ERV9HRVRORVhUIG9yIE1PREVfR0VUQlVMSyB0aGUgY29kZSBjYWxscyBzbm1wX2xvZyBsb2dnaW5nIGFuIGVycm9yIG1lc3NhZ2UuCi0uUFAKLU90aGVyd2lzZSwgdGhlIHJlcXVlc3QtPnN0YXR1cyB2YWx1ZSBpcyBjaGVja2VkLCBpZiBpdCdzIDwgMCBzbm1wX2xvZyBpcyBjYWxsZWQgd2l0aCBhbiBlcnJvciBtZXNzYWdlIGFuZCBTTk1QX0VSUl9HRU5FUlIgaXMgYXNzaWduZWQgdG8gcmVxdWVzdC0+c3RhdHVzLiBJZiB0aGUgcmVxdWVzdC0+c3RhdHVzIHZhbHVlIGlzID49IDAgdGhlIGVycm9yX3ZhbHVlIGlzIHNldCB0byByZXF1ZXN0LT5zdGF0dXMuCi0uUFAKLVxmQlBhcmFtZXRlcnM6XGZQCi0uUlMgNAotXGZJcmVxaW5mb1xmUCBpcyBhIHBvaW50ZXIgdG8gdGhlIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvIHN0cnVjdC4gSXQgY29udGFpbnMgdGhlIHJlcWluZm8tPm1vZGUgd2hpY2ggaXMgcmVxdWlyZWQgdG8gc2V0IGVycm9yX3ZhbHVlIG9yIGxvZyBlcnJvciBtZXNzYWdlcy4KLS5icgotXGZJcmVxdWVzdFxmUCBpcyBhIHBvaW50ZXIgdG8gdGhlIG5ldHNubXBfcmVxdWVzdF9pbmZvIHN0cnVjdC4gVGhlIGVycm9yX3ZhbHVlIGlzIHNldCB0byByZXF1ZXN0LT5yZXF1ZXN0dmItPnR5cGUKLS5icgotXGZJZXJyb3JfdmFsdWVcZlAgaXMgdGhlIGV4Y2VwdGlvbiB2YWx1ZSB5b3Ugd2FudCB0byBzZXQsIGJlbG93IGFyZSBwb3NzaWJsZSB2YWx1ZXMuCi0uSVAgIlwoYnUiIDIKLVNOTVBfTk9TVUNIT0JKRUNUCi0uSVAgIlwoYnUiIDIKLVNOTVBfTk9TVUNISU5TVEFOQ0UKLS5JUCAiXChidSIgMgotU05NUF9FTkRPRk1JQlZJRVcKLS5JUCAiXChidSIgMgotU05NUF9FUlJfTk9FUlJPUgotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9UT09CSUcKLS5JUCAiXChidSIgMgotU05NUF9FUlJfTk9TVUNITkFNRQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9CQURWQUxVRQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9SRUFET05MWQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9HRU5FUlIKLS5JUCAiXChidSIgMgotU05NUF9FUlJfTk9BQ0NFU1MKLS5JUCAiXChidSIgMgotU05NUF9FUlJfV1JPTkdUWVBFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1dST05HTEVOR1RICi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1dST05HRU5DT0RJTkcKLS5JUCAiXChidSIgMgotU05NUF9FUlJfV1JPTkdWQUxVRQotLklQICJcKGJ1IiAyCi1TTk1QX0VSUl9OT0NSRUFUSU9OCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX0lOQ09OU0lTVEVOVFZBTFVFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1JFU09VUkNFVU5BVkFJTEFCTEUKLS5JUCAiXChidSIgMgotU05NUF9FUlJfQ09NTUlURkFJTEVECi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX1VORE9GQUlMRUQKLS5JUCAiXChidSIgMgotU05NUF9FUlJfQVVUSE9SSVpBVElPTkVSUk9SCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX05PVFdSSVRBQkxFCi0uSVAgIlwoYnUiIDIKLVNOTVBfRVJSX0lOQ09OU0lTVEVOVE5BTUUKLS5QUAotLlJFCi0uUFAKLVxmQlJldHVybnM6XGZQCi0uUlMgNAotUmV0dXJucyBlcnJvcl92YWx1ZSB1bmRlciBhbGwgY29uZGl0aW9ucy4gCi0uUkUKLS5QUAotCi0uUFAKLURlZmluaXRpb24gYXQgbGluZSAzMjI5IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwMDAgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBoYW5kbGVfc25tcF9wYWNrZXQgKGludCBvcCwgXGZCbmV0c25tcF9zZXNzaW9uXGZQICogc2Vzc2lvbiwgaW50IHJlcWlkLCBcZkJuZXRzbm1wX3BkdVxmUCAqIHBkdSwgdm9pZCAqIG1hZ2ljKSIKIC5QUAogaGFuZGxlcyBhbiBpbmNvbWluZyBTTk1QIHBhY2tldCBpbnRvIHRoZSBhZ2VudCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE3NzQgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTgzNSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAqIG5ldHNubXBfYWRkX3ZhcmJpbmRfdG9fY2FjaGUgKFxmQm5ldHNubXBfYWdlbnRfc2Vzc2lvblxmUCAqIGFzcCwgaW50IHZiY291bnQsIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcmJpbmRfcHRyLCBcZkJuZXRzbm1wX3N1YnRyZWVcZlAgKiB0cCkiCiAuUFAKIFxmQlRvZG9cZlAKQEAgLTQyOCwxNCArMzU3LDE0IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg4MyBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxOTQ0IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9jaGVja190cmFuc2FjdGlvbl9pZCAoaW50IHRyYW5zYWN0aW9uX2lkKSIKIC5QUAogRGVjaWRlIGlmIHRoZSByZXF1ZXN0ZWQgdHJhbnNhY3Rpb25faWQgaXMgc3RpbGwgYmVpbmcgcHJvY2Vzc2VkIHdpdGhpbiB0aGUgYWdlbnQuIFRoaXMgaXMgdXNlZCB0byB2YWxpZGF0ZSB3aGV0aGVyIGEgZGVsYXllZCBjYWNoZSAoY29udGFpbmluZyBwb3NzaWJseSBmcmVlZCBwb2ludGVycykgaXMgc3RpbGwgdXNhYmxlLgogLlBQCiByZXR1cm5zIFNOTVBFUlJfU1VDQ0VTUyBpZiBpdCdzIHN0aWxsIHZhbGlkLCBvciBTTk1QRVJSX0dFTkVSUiBpZiBub3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjcyMSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNzg2IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvciAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBpbnQgZXJyb3JfdmFsdWUpIgogLlBQCiBzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDQ3LDcgKzM3Niw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzQ4NSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNDk5IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJORVRTTk1QX0lOTElORSBpbnQgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvcl9hbGwgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMsIGludCBlcnJvcikiCiAuUFAKIHNldCBlcnJvciBmb3IgYWxsIHJlcXVlc3RzIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC00NjYsNyArMzk1LDcgQEAKIC5QUAogcGFyYW5vaWQgc2FuaXR5IGNoZWNrcyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM1Mjggb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzU0MiBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3JfaWR4IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIGludCBlcnJvcl92YWx1ZSwgaW50IGlkeCkiCiAuUFAKIHNldCBlcnJvciBmb3IgYSByZXF1ZXN0IHdpdGhpbiBhIHJlcXVlc3QgbGlzdCBcZkJQYXJhbWV0ZXJzOlxmUApAQCAtNDgwLDcgKzQwOSw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzUwMCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNTE0IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9zZXRfYWxsX3JlcXVlc3RzX2Vycm9yIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdHMsIGludCBlcnJvcl92YWx1ZSkiCiAuUFAKIHNldCBlcnJvciBmb3IgYWxsIHJlcXVlc3QgXGZCRGVwcmVjYXRlZFxmUApAQCAtNTA0LDcgKzQzMyw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzcwMiBvZiBmaWxlIHNubXBfYWdlbnQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNjU1IG9mIGZpbGUgc25tcF9hZ2VudC5jLgogLlNTICJpbnQgbmV0c25tcF9zZXRfbW9kZV9yZXF1ZXN0X2Vycm9yIChpbnQgbW9kZSwgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBpbnQgZXJyb3JfdmFsdWUpIgogLlBQCiBzZXQgZXJyb3IgZm9yIGEgcmVxdWVzdCBkZXByZWNhdGVkLCB1c2UgbmV0c25tcF9yZXF1ZXN0X3NldF9lcnJvciBpbnN0ZWFkCkBAIC01MzAsNyArNDU5LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNjg2IG9mIGZpbGUgc25tcF9hZ2VudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2Mzkgb2YgZmlsZSBzbm1wX2FnZW50LmMuCiAuU1MgImludCBuZXRzbm1wX3NldF9yZXF1ZXN0X2Vycm9yIChcZkJuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCwgaW50IGVycm9yX3ZhbHVlKSIKIC5QUAogc2V0IGVycm9yIGZvciBhIHJlcXVlc3QgZGVwcmVjYXRlZCwgdXNlIG5ldHNubXBfcmVxdWVzdF9zZXRfZXJyb3IgaW5zdGVhZApAQCAtNTYwLDEyICs0ODksMTIgQEAKIC5pbiArMWMKIFxmQmRlbGF5ZWRfaW5zdGFuY2UuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM2Njcgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzYyMCBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TUyAiaW50IG5ldHNubXBfd3JhcF91cF9yZXF1ZXN0IChcZkJuZXRzbm1wX2FnZW50X3Nlc3Npb25cZlAgKiBhc3AsIGludCBzdGF0dXMpIgogLlBQCiBpZiBhc3AtPnBkdSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MjAgb2YgZmlsZSBzbm1wX2FnZW50LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTU4MSBvZiBmaWxlIHNubXBfYWdlbnQuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMgYi9tYW4vbmV0c25tcF9zbm1wX2FsYXJtLjMKaW5kZXggNmI4M2Q1OC4uMDFiY2JhZCAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc25tcF9hbGFybS4zCisrKyBiL21hbi9uZXRzbm1wX3NubXBfYWxhcm0uMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic25tcF9hbGFybSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJzbm1wX2FsYXJtIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zIGIvbWFuL25ldHNubXBfc25tcF9jbGllbnQuMwppbmRleCA0ZmZmMWM1Li44YzhjMWFiIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zbm1wX2NsaWVudC4zCisrKyBiL21hbi9uZXRzbm1wX3NubXBfY2xpZW50LjMKQEAgLTEsNCArMSw0IEBACi0uVEggInZhcmlvdXMgUERVIHByb2Nlc3Npbmcgcm91dGluZXMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidmFyaW91cyBQRFUgcHJvY2Vzc2luZyByb3V0aW5lcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtOSw2ICs5LDcgQEAKIC50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF9wZHVcZlAgKiBcZkJzbm1wX3BkdV9jcmVhdGVcZlAgKGludCBjb21tYW5kKSIKIC5icgorLlJJICJcZklMaWJyYXJ5IEFQSSByb3V0aW5lcyBjb25jZXJuZWQgd2l0aCBTTk1QIFBEVXMuIFxmUCIKIC50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCc25tcF9hZGRfbnVsbF92YXJcZlAgKFxmQm5ldHNubXBfcGR1XGZQICpwZHUsIGNvbnN0IG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuZ3RoKSIKIC5icgpAQCAtMTYsNyArMTcsNyBAQAogLlJJICJpbnQgXGZCc25tcF9jbG9uZV92YXJcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFyLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKm5ld3ZhcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQnNubXBfY2xvbmVfbWVtXGZQICh2b2lkICoqZHN0UHRyLCB2b2lkICpzcmNQdHIsIHVuc2lnbmVkIGxlbikiCisuUkkgImludCBcZkJzbm1wX2Nsb25lX21lbVxmUCAodm9pZCAqKmRzdFB0ciwgY29uc3Qgdm9pZCAqc3JjUHRyLCB1bnNpZ25lZCBsZW4pIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc25tcF9yZXNldF92YXJfYnVmZmVyc1xmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YXIpIgpAQCAtNDAsNyArNDEsNyBAQAogLlJJICJpbnQgXGZCc25tcF9zZXRfdmFyX29iamlkXGZQIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKnZwLCBjb25zdCBvaWQgKm9iamlkLCBzaXplX3QgbmFtZV9sZW5ndGgpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJzbm1wX3NldF92YXJfdHlwZWRfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqbmV3dmFyLCB1X2NoYXIgdHlwZSwgY29uc3QgdV9jaGFyICp2YWxfc3RyLCBzaXplX3QgdmFsX2xlbikiCisuUkkgImludCBcZkJzbm1wX3NldF92YXJfdHlwZWRfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqbmV3dmFyLCB1X2NoYXIgdHlwZSwgY29uc3Qgdm9pZCAqdmFsX3N0ciwgc2l6ZV90IHZhbF9sZW4pIgogLmJyCiAuUkkgIlxmSXNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSBpcyB1c2VkIHRvIHNldCBkYXRhIGludG8gdGhlIG5ldHNubXBfdmFyaWFibGVfbGlzdCBzdHJ1Y3R1cmUuIFxmUCIKIC50aSAtMWMKQEAgLTU5LDcgKzYwLDcgQEAKIC5SSSAiXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogXGZCZmluZF92YXJiaW5kX2luX2xpc3RcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmJsaXN0LCBvaWQgKm5hbWUsIHNpemVfdCBsZW4pIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJzbm1wX3NldF92YXJfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycywgY29uc3QgdV9jaGFyICp2YWx1ZSwgc2l6ZV90IGxlbikiCisuUkkgImludCBcZkJzbm1wX3NldF92YXJfdmFsdWVcZlAgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqdmFycywgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCBsZW4pIgogLmJyCiAudGkgLTFjCiAuUkkgInZvaWQgXGZCc25tcF9yZXBsYWNlX3Zhcl90eXBlc1xmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICp2YmwsIHVfY2hhciBvbGRfdHlwZSwgdV9jaGFyIG5ld190eXBlKSIKQEAgLTgzLDggKzg0LDEzIEBACiAuUkkgInZvaWQgXGZCbmV0c25tcF9xdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uXGZQIChcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3MpIgogLmJyCiAudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfc2Vzc2lvblxmUCAqIFxmQm5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbl91bmNoZWNrZWRcZlAgKHZvaWQpIgorLmJyCisuUkkgIlxmSVJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgaW50ZXJuYWwgcXVlcnkgc2Vzc2lvbi4gXGZQIgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKiBcZkJuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25cZlAgKHZvaWQpIgogLmJyCisuUkkgIlxmSVJldHVybiBhIHBvaW50ZXIgdG8gdGhlIGRlZmF1bHQgaW50ZXJuYWwgcXVlcnkgc2Vzc2lvbiBhbmQgbG9nIGEgd2FybmluZyBtZXNzYWdlIG9uY2UgaWYgdGhpcyBzZXNzaW9uIGRvZXMgbm90IGV4aXN0LiBcZlAiCiAudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX3F1ZXJ5X2dldFxmUCAoXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICpsaXN0LCBcZkJuZXRzbm1wX3Nlc3Npb25cZlAgKnNlc3Npb24pIgogLmJyCkBAIC0xMDAsNyArMTA2LDIyIEBACiAuaW4gLTFjCiAuU0ggIkZ1bmN0aW9uIERvY3VtZW50YXRpb24iCiAuUFAgCi0uU1MgImludCBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIG5ld3ZhciwgdV9jaGFyIHR5cGUsIGNvbnN0IHVfY2hhciAqIHZhbF9zdHIsIHNpemVfdCB2YWxfbGVuKSIKKy5TUyAiXGZCbmV0c25tcF9zZXNzaW9uXGZQKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24gKHZvaWQpIgorLlBQCitSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24gYW5kIGxvZyBhIHdhcm5pbmcgbWVzc2FnZSBvbmNlIGlmIHRoaXMgc2Vzc2lvbiBkb2VzIG5vdCBleGlzdC4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxMjQyIG9mIGZpbGUgc25tcF9jbGllbnQuYy4KKy5TUyAiXGZCbmV0c25tcF9zZXNzaW9uXGZQKiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkICh2b2lkKSIKKy5QUAorUmV0dXJuIGEgcG9pbnRlciB0byB0aGUgZGVmYXVsdCBpbnRlcm5hbCBxdWVyeSBzZXNzaW9uLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDEyMzIgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorLlNTICJcZkJuZXRzbm1wX3BkdVxmUCogc25tcF9wZHVfY3JlYXRlIChpbnQgY29tbWFuZCkiCisuUFAKK0xpYnJhcnkgQVBJIHJvdXRpbmVzIGNvbmNlcm5lZCB3aXRoIFNOTVAgUERVcy4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAxMzEgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorLlNTICJpbnQgc25tcF9zZXRfdmFyX3R5cGVkX3ZhbHVlIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBuZXd2YXIsIHVfY2hhciB0eXBlLCBjb25zdCB2b2lkICogdmFsX3N0ciwgc2l6ZV90IHZhbF9sZW4pIgogLlBQCiBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUgaXMgdXNlZCB0byBzZXQgZGF0YSBpbnRvIHRoZSBuZXRzbm1wX3ZhcmlhYmxlX2xpc3Qgc3RydWN0dXJlLiBVc2VkIHRvIHJldHVybiBkYXRhIHRvIHRoZSBzbm1wIHJlcXVlc3QgdmlhIHRoZSBuZXRzbm1wX3JlcXVlc3RfaW5mbyBzdHJ1Y3R1cmUncyByZXF1ZXN0dmIgcG9pbnRlci4KIC5QUApAQCAtMTI2LDEyICsxNDcsMTIgQEAKIC5pbiArMWMKIFxmQmRlbGF5ZWRfaW5zdGFuY2UuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDY4NyBvZiBmaWxlIHNubXBfY2xpZW50LmMuCi0uU1MgImludCBzbm1wX3NldF92YXJfdmFsdWUgKFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqIHZhcnMsIGNvbnN0IHVfY2hhciAqIHZhbHVlLCBzaXplX3QgbGVuKSIKK0RlZmluaXRpb24gYXQgbGluZSA3MTkgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorLlNTICJpbnQgc25tcF9zZXRfdmFyX3ZhbHVlIChcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiB2YXJzLCBjb25zdCB2b2lkICogdmFsdWUsIHNpemVfdCBsZW4pIgogLlBQCiBGQUxMIFRIUk9VR0ggCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3NTQgb2YgZmlsZSBzbm1wX2NsaWVudC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc4NCBvZiBmaWxlIHNubXBfY2xpZW50LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc25tcF9sb2dnaW5nLjMgYi9tYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMwppbmRleCA3ZGZjZmJhLi4zNTUyZTVlIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMworKysgYi9tYW4vbmV0c25tcF9zbm1wX2xvZ2dpbmcuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiZ2VuZXJpYyBsb2dnaW5nIGZvciBuZXQtc25tcCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJnZW5lcmljIGxvZ2dpbmcgZm9yIG5ldC1zbm1wIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zMiw2ICszMiw5IEBACiAuUkkgInZvaWQgXGZCc2h1dGRvd25fc25tcF9sb2dnaW5nXGZQICh2b2lkKSIKIC5icgogLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nXGZQIChGSUxFICpzdHJlYW0pIgorLmJyCisudGkgLTFjCiAuUkkgImludCBcZkJkZWNvZGVfcHJpb3JpdHlcZlAgKGNoYXIgKipvcHRhcmcsIGludCAqcHJpX21heCkiCiAuYnIKIC50aSAtMWMKQEAgLTE1OSw3ICsxNjIsNyBAQAogLlBQCiBobW0sIGRvbid0IHplcm8gc3RhdHVzIGlzbid0IHNhdmVkLi4gaSB0aGluayBpdCdzIHNhZmVyIG5vdCB0byBvdmVyd3JpdGUsIGluIGNhc2UgYSBodXAgaXMganVzdCB0byByZS1yZWFkIGNvbmZpZyBmaWxlcy4uLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjM5IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjU3IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCiAuU1MgImludCBzbm1wX2dldF9kb19sb2dnaW5nICh2b2lkKSIKIC5QUAogSXMgbG9nZ2luZyBkb25lPyBcZkJSZXR1cm5zOlxmUApAQCAtMTY5LDcgKzE3Miw3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDk2IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTE0IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCiAuU1MgImludCBzbm1wX2xvZyAoaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICogZm9ybWF0LCAgLi4uKSIKIC5QUAogVGhpcyBzbm1wIGxvZ2dpbmcgZnVuY3Rpb24gYWxsb3dzIFxmQnZhcmlhYmxlXGZQIGFyZ3VtZW50IGxpc3QgZ2l2ZW4gdGhlIHNwZWNpZmllZCBmb3JtYXQgYW5kIHByaW9yaXR5LiBDYWxscyB0aGUgc25tcF92bG9nIGZ1bmN0aW9uLiBUaGUgZGVmYXVsdCBsb2dmaWxlIHRoaXMgZnVuY3Rpb24gd3JpdGVzIHRvIGlzIC92YXIvbG9nL3NubXBkLmxvZy4KQEAgLTE4NSw3ICsxODgsNyBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI3OCBvZiBmaWxlIHNubXBfbG9nZ2luZy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEyODYgb2YgZmlsZSBzbm1wX2xvZ2dpbmcuYy4KIC5TUyAiaW50IHNubXBfdmxvZyAoaW50IHByaW9yaXR5LCBjb25zdCBjaGFyICogZm9ybWF0LCB2YV9saXN0IGFwKSIKIC5QUAogVGhpcyBzbm1wIGxvZ2dpbmcgZnVuY3Rpb24gYWxsb3dzIFxmQnZhcmlhYmxlXGZQIGFyZ3VtZW50IGxpc3QgZ2l2ZW4gdGhlIHNwZWNpZmllZCBwcmlvcml0eSwgZm9ybWF0IGFuZCBhIHBvcHVsYXRlZCB2YV9saXN0IHN0cnVjdHVyZS4gVGhlIGRlZmF1bHQgbG9nZmlsZSB0aGlzIGZ1bmN0aW9uIHdyaXRlcyB0byBpcyAvdmFyL2xvZy9zbm1wZC5sb2cuCkBAIC0yNDAsNyArMjQzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMjE3IG9mIGZpbGUgc25tcF9sb2dnaW5nLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTIyNiBvZiBmaWxlIHNubXBfbG9nZ2luZy5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3NubXBfcGR1LjMgYi9tYW4vbmV0c25tcF9zbm1wX3BkdS4zCmluZGV4IDc5NjQ4MjcuLmFkNjU4ZjQgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3NubXBfcGR1LjMKKysrIGIvbWFuL25ldHNubXBfc25tcF9wZHUuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic25tcF9wZHUiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAic25tcF9wZHUiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTEwLDcgKzEwLDcgQEAKIC5icgogLlBQCiAuUFAKLVxmQyNpbmNsdWRlIDxzbm1wX2FwaS5oPlxmUAorXGZDI2luY2x1ZGUgPHR5cGVzLmg+XGZQCiAuU1MgIkRhdGEgRmllbGRzIgogCiAuaW4gKzFjCkBAIC0xNTMsMTM5ICsxNTMsMTM5IEBACiAuUFAgCiBUaGUgc25tcCBwcm90b2NvbCBkYXRhIHVuaXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE2OSBvZiBmaWxlIHR5cGVzLmguCiAuU0ggIkZpZWxkIERvY3VtZW50YXRpb24iCiAuUFAgCiAuU1MgInVuc2lnbmVkIGNoYXIgXGZCc25tcF9wZHU6OmFnZW50X2FkZHJcZlBbNF0iCiAuUFAKIFRoaXMgaXMgT05MWSB1c2VkIGZvciB2MSBUUkFQcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzOSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3BkdTo6Y29tbWFuZFxmUCIKIC5QUAogVHlwZSBvZiB0aGlzIFBEVS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTgwIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3BkdTo6Y29tbXVuaXR5XGZQIgogLlBQCiBjb21tdW5pdHkgZm9yIG91dGdvaW5nIHJlcXVlc3RzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyNyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjI0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfcGR1Ojpjb21tdW5pdHlfbGVuXGZQIgogLlBQCiBsZW5ndGggb2YgY29tbXVuaXR5IG5hbWUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI5IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMjYgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfcGR1Ojpjb250ZXh0RW5naW5lSURcZlAiCiAuUFAKIGNvbnRleHQgc25tcEVuZ2luZUlEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTQ4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNDUgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9wZHU6OmNvbnRleHRFbmdpbmVJRExlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHRFbmdpbmVJRC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNTAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI0NyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfcGR1Ojpjb250ZXh0TmFtZVxmUCIKIC5QUAogYXV0aG9yaXRhdGl2ZSBjb250ZXh0TmFtZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfcGR1Ojpjb250ZXh0TmFtZUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHROYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1NCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjUxIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAib2lkKiBcZkJzbm1wX3BkdTo6ZW50ZXJwcmlzZVxmUCIKIC5QUAogU3lzdGVtIE9JRC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMzUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzMiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6OmVycmluZGV4XGZQIgogLlBQCiBFcnJvciBpbmRleCAobWF4X3JlcGV0aXRpb25zIGluIEdldEJ1bGspLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk1IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxOTIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1OjplcnJzdGF0XGZQIgogLlBQCiBFcnJvciBzdGF0dXMgKG5vbl9yZXBlYXRlcnMgaW4gR2V0QnVsaykuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTMgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6Om1zZ2lkXGZQIgogLlBQCiBNZXNzYWdlIGlkIGZvciBWMyBtZXNzYWdlcyBub3RlOiBpbmNyZW1lbnRlZCBmb3IgZWFjaCByZXRyeS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTg0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6cmVxaWRcZlAiCiAuUFAKIFJlcXVlc3QgaWQgLSBub3RlOiBub3QgaW5jcmVtZW50ZWQgb24gcmV0cmllcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTgyIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3BkdTo6c2VjdXJpdHlFbmdpbmVJRFxmUCIKIC5QUAogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgZm9yIHNlY3VyaXR5IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTU2IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyNTMgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9wZHU6OnNlY3VyaXR5RW5naW5lSURMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBzZWN1cml0eUVuZ2luZUlELiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjU1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiaW50IFxmQnNubXBfcGR1OjpzZWN1cml0eUxldmVsXGZQIgogLlBQCiBub0F1dGhOb1ByaXYsIGF1dGhOb1ByaXYsIGF1dGhQcml2IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTAyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxOTkgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJjaGFyKiBcZkJzbm1wX3BkdTo6c2VjdXJpdHlOYW1lXGZQIgogLlBQCiBvbiBiZWhhbGYgb2YgdGhpcyBwcmluY2lwYWwgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1NyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3BkdTo6c2VjdXJpdHlOYW1lTGVuXGZQIgogLlBQCiBMZW5ndGggb2Ygc2VjdXJpdHlOYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE2MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjU5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6c2Vzc2lkXGZQIgogLlBQCiBTZXNzaW9uIGlkIGZvciBBZ2VudFggbWVzc2FnZXMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgOTEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE4OCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9wZHU6OnNwZWNpZmljX3R5cGVcZlAiCiAuUFAKIHNwZWNpZmljIHR5cGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzNyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNvbnN0IG9pZCogXGZCc25tcF9wZHU6OnREb21haW5cZlAiCiAuUFAKIFRoZSBhY3R1YWwgdHJhbnNwb3J0IGRvbWFpbi4gVGhpcyBTSE9VTEQgTk9UIEJFIEZSRUUoKUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMTQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2xvbmcgXGZCc25tcF9wZHU6OnRpbWVcZlAiCiAuUFAKIFVwdGltZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA5NyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTk0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6dHJhbnNpZFxmUCIKIC5QUAogVW5pcXVlIElEIGZvciBpbmNvbWluZyB0cmFuc2FjdGlvbnMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODkgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE4NiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnNubXBfcGR1Ojp0cmFuc3BvcnRfZGF0YVxmUCIKIC5QUAogVHJhbnNwb3J0LXNwZWNpZmljIG9wYXF1ZSBkYXRhLiBUaGlzIHJlcGxhY2VzIHRoZSBJUC1jZW50cmljIGFkZHJlc3MgZmllbGQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyMDcgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJsb25nIFxmQnNubXBfcGR1Ojp0cmFwX3R5cGVcZlAiCiAuUFAKIHRyYXAgdHlwZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzOCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjM1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3BkdTo6dmVyc2lvblxmUCIKIC5QUAogc25tcCB2ZXJzaW9uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE3OCBvZiBmaWxlIHR5cGVzLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfc25tcF9zZXNzaW9uLjMgYi9tYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMwppbmRleCAwMGUzODNmLi4wNGFiOTQ0IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMworKysgYi9tYW4vbmV0c25tcF9zbm1wX3Nlc3Npb24uMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic25tcF9zZXNzaW9uIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInNubXBfc2Vzc2lvbiIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTAsNyArMTAsNyBAQAogLmJyCiAuUFAKIC5QUAotXGZDI2luY2x1ZGUgPHNubXBfYXBpLmg+XGZQCitcZkMjaW5jbHVkZSA8dHlwZXMuaD5cZlAKIC5TUyAiRGF0YSBGaWVsZHMiCiAKIC5pbiArMWMKQEAgLTIwOCw3ICsyMDgsNyBAQAogLlBQIAogVGhlIHNubXAgc2Vzc2lvbiBzdHJ1Y3R1cmUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAyODcgb2YgZmlsZSB0eXBlcy5oLgogLlNIICJGaWVsZCBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJ1X2NoYXIqKCogXGZCc25tcF9zZXNzaW9uOjphdXRoZW50aWNhdG9yXGZQKSh1X2NoYXIgKiwgc2l6ZV90ICosIHVfY2hhciAqLCBzaXplX3QpIgpAQCAtMjE4LDIyMiArMjE4LDIyMiBAQAogLlBQCiBGdW5jdGlvbiB0byBpbnRlcnByZXQgaW5jb21pbmcgZGF0YS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMTQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMxNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnNubXBfc2Vzc2lvbjo6Y2FsbGJhY2tfbWFnaWNcZlAiCiAuUFAKIFBvaW50ZXIgdG8gZGF0YSB0aGF0IHRoZSBjYWxsYmFjayBmdW5jdGlvbiBtYXkgY29uc2lkZXIgaW1wb3J0YW50LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIxOCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzE4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyKiBcZkJzbm1wX3Nlc3Npb246OmNvbW11bml0eVxmUCIKIC5QUAogY29tbXVuaXR5IGZvciBvdXRnb2luZyByZXF1ZXN0cy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OmNvbW11bml0eV9sZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBjb21tdW5pdHkgbmFtZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciogXGZCc25tcF9zZXNzaW9uOjpjb250ZXh0RW5naW5lSURcZlAiCiAuUFAKIGF1dGhvcml0YXRpdmUgc25tcEVuZ2luZUlEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjQ0IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNDQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpjb250ZXh0RW5naW5lSURMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjQ2IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNDYgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJjaGFyKiBcZkJzbm1wX3Nlc3Npb246OmNvbnRleHROYW1lXGZQIgogLlBQCiBhdXRob3JpdGF0aXZlIGNvbnRleHROYW1lIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjUyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNTIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpjb250ZXh0TmFtZUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIGNvbnRleHROYW1lLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI1NCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzU0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9pbnQgXGZCc25tcF9zZXNzaW9uOjplbmdpbmVCb290c1xmUCIKIC5QUAogaW5pdGlhbCBlbmdpbmVCb290cyBmb3IgcmVtb3RlIGVuZ2luZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzQ4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9pbnQgXGZCc25tcF9zZXNzaW9uOjplbmdpbmVUaW1lXGZQIgogLlBQCiBpbml0aWFsIGVuZ2luZVRpbWUgZm9yIHJlbW90ZSBlbmdpbmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciBcZkJzbm1wX3Nlc3Npb246OmlzQXV0aG9yaXRhdGl2ZVxmUCIKIC5QUAogYXJlIHdlIHRoZSBhdXRob3JpdGF0aXZlIGVuZ2luZT8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNDIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM0MiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfc2hvcnQgXGZCc25tcF9zZXNzaW9uOjpsb2NhbF9wb3J0XGZQIgogLlBQCiBNeSBVRFAgcG9ydCBudW1iZXIsIDAgZm9yIGRlZmF1bHQsIHBpY2tlZCByYW5kb21seS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDggb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwOCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfc2Vzc2lvbjo6bG9jYWxuYW1lXGZQIgogLlBQCiBNeSBEb21haW4gbmFtZSBvciBkb3R0ZWQgSVAgYWRkcmVzcywgMCBmb3IgZGVmYXVsdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwNiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnNubXBfc2Vzc2lvbjo6bXl2b2lkXGZQIgogLlBQCiB1c2UgYXMgeW91IHdhbnQgZGF0YSB1c2VkIGJ5ICdTTk1QX0ZMQUdTX1JFU1BfQ0FMTEJBQ0snIGhhbmRsaW5nIGluIHRoZSBhZ2VudCBYWFg6IG9yIHNob3VsZCB3ZSBhZGQgYSBuZXcgZmllbGQgaW50byB0aGlzIHN0cnVjdHVyZT8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMDggb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwOCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfc2Vzc2lvbjo6cGFyYW1OYW1lXGZQIgogLlBQCiB0YXJnZXQgcGFyYW0gbmFtZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI5NSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzk1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiY2hhciogXGZCc25tcF9zZXNzaW9uOjpwZWVybmFtZVxmUCIKIC5QUAogbmFtZSBvciBhZGRyZXNzIG9mIGRlZmF1bHQgcGVlciAobWF5IGluY2x1ZGUgdHJhbnNwb3J0IHNwZWNpZmllciBhbmQvb3IgcG9ydCBudW1iZXIpIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjAyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzMDIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpyY3ZNc2dNYXhTaXplXGZQIgogLlBQCiBMYXJnZXN0IG1lc3NhZ2UgdG8gdHJ5IHRvIHJlY2VpdmUuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjM0IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzMzQgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X3Nob3J0IFxmQnNubXBfc2Vzc2lvbjo6cmVtb3RlX3BvcnRcZlAiCiAuUFAKIFVEUCBwb3J0IG51bWJlciBvZiBwZWVyLiAoTk8gTE9OR0VSIFVTRUQgLSBVU0UgcGVlcm5hbWUgSU5TVEVBRCkgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMwNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3Nlc3Npb246OnJldHJpZXNcZlAiCiAuUFAKIE51bWJlciBvZiByZXRyaWVzIGJlZm9yZSB0aW1lb3V0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjk0IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAiaW50IFxmQnNubXBfc2Vzc2lvbjo6c19lcnJub1xmUCIKIC5QUAogY29weSBvZiBzeXN0ZW0gZXJybm8gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMyMCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImludCBcZkJzbm1wX3Nlc3Npb246OnNfc25tcF9lcnJub1xmUCIKIC5QUAogY29weSBvZiBsaWJyYXJ5IGVycm5vIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjIyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzMjIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUF1dGhLZXlcZlBbVVNNX0FVVEhfS1VfTEVOXSIKIC5QUAogS3UgZm9yIGF1dGggcHJvdG9jb2wgWFhYLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI2OSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzY5IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlBdXRoS2V5TGVuXGZQIgogLlBQCiBMZW5ndGggb2YgS3UgZm9yIGF1dGggcHJvdG9jb2wuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjcxIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNzEgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlBdXRoTG9jYWxLZXlcZlAiCiAuUFAKIEt1bCBmb3IgYXV0aCBwcm90b2NvbC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzMgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM3MyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5QXV0aExvY2FsS2V5TGVuXGZQIgogLlBQCiBMZW5ndGggb2YgS3VsIGZvciBhdXRoIHByb3RvY29sIFhYWC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNzUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM3NSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgIm9pZCogXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUF1dGhQcm90b1xmUCIKIC5QUAogYXV0aCBwcm90b2NvbCBvaWQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2NSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5QXV0aFByb3RvTGVuXGZQIgogLlBQCiBMZW5ndGggb2YgYXV0aCBwcm90b2NvbCBvaWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjY3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNjcgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ1X2NoYXIqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlFbmdpbmVJRFxmUCIKIC5QUAogYXV0aG9yaXRhdGl2ZSBzbm1wRW5naW5lSUQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1NiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5RW5naW5lSURMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBjb250ZXh0RW5naW5lSUQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjU4IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzNTggb2YgZmlsZSB0eXBlcy5oLgogLlNTICJ2b2lkKiBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5SW5mb1xmUCIKIC5QUAogc2VjdXJpdHkgXGZCbW9kdWxlXGZQIHNwZWNpZmljIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzAwIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSA0MDAgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJpbnQgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eUxldmVsXGZQIgogLlBQCiBub0F1dGhOb1ByaXYsIGF1dGhOb1ByaXYsIGF1dGhQcml2IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjkzIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzOTMgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJpbnQgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eU1vZGVsXGZQIgogLlBQCiBzbm1wIHNlY3VyaXR5IG1vZGVsLCB2MSwgdjJjLCB1c20gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyOTEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM5MSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImNoYXIqIFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlOYW1lXGZQIgogLlBQCiBvbiBiZWhhbGYgb2YgdGhpcyBwcmluY2lwYWwgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5TmFtZUxlblxmUCIKIC5QUAogTGVuZ3RoIG9mIHNlY3VyaXR5TmFtZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjIgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM2MiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5UHJpdktleVxmUFtVU01fUFJJVl9LVV9MRU5dIgogLlBQCiBLdSBmb3IgcHJpdmFjeSBwcm90b2NvbCBYWFguIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjgyIG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAzODIgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJzaXplX3QgXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eVByaXZLZXlMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBLdSBmb3IgcHJpdiBwcm90b2NvbC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyODQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4NCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInVfY2hhciogXGZCc25tcF9zZXNzaW9uOjpzZWN1cml0eVByaXZMb2NhbEtleVxmUCIKIC5QUAogS3VsIGZvciBwcml2IHByb3RvY29sLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4NiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzg2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlQcml2TG9jYWxLZXlMZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBLdWwgZm9yIHByaXYgcHJvdG9jb2wgWFhYLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzg4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAib2lkKiBcZkJzbm1wX3Nlc3Npb246OnNlY3VyaXR5UHJpdlByb3RvXGZQIgogLlBQCiBwcml2IHByb3RvY29sIG9pZCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI3OCBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMzc4IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic2l6ZV90IFxmQnNubXBfc2Vzc2lvbjo6c2VjdXJpdHlQcml2UHJvdG9MZW5cZlAiCiAuUFAKIExlbmd0aCBvZiBwcml2IHByb3RvY29sIG9pZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyODAgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4MCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9zZXNzaW9uOjpzZXNzaWRcZlAiCiAuUFAKIFNlc3Npb24gaWQgLSBBZ2VudFggb25seS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjQgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMyNCBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJzbm1wX3Nlc3Npb246OnNuZE1zZ01heFNpemVcZlAiCiAuUFAKIExhcmdlc3QgbWVzc2FnZSB0byB0cnkgdG8gc2VuZC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzYgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNiBvZiBmaWxlIHR5cGVzLmguCiAuU1MgImxvbmcgXGZCc25tcF9zZXNzaW9uOjp0aW1lb3V0XGZQIgogLlBQCiBOdW1iZXIgb2YgdVMgdW50aWwgZmlyc3QgdGltZW91dCwgdGhlbiBleHBvbmVudGlhbCBiYWNrb2ZmLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5NiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjk2IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAibG9uZyBcZkJzbm1wX3Nlc3Npb246OnZlcnNpb25cZlAiCiAuUFAKIHNubXAgdmVyc2lvbiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE5MiBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMjkyIG9mIGZpbGUgdHlwZXMuaC4KIAogLlNIICJBdXRob3IiCiAuUFAgCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zIGIvbWFuL25ldHNubXBfc3Rhc2hfY2FjaGUuMwppbmRleCAwZjNhNDc0Li4zNGUyMzdmIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF9zdGFzaF9jYWNoZS4zCisrKyBiL21hbi9uZXRzbm1wX3N0YXNoX2NhY2hlLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInN0YXNoX2NhY2hlIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInN0YXNoX2NhY2hlIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC01OCwzNyArNTgsMzcgQEAKIC5QUAogdXBkYXRlcyBhIGdpdmVuIGNhY2hlIGRlcGVuZGluZyBvbiB3aGV0aGVyIGl0IG5lZWRzIHRvIG9yIG5vdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxOTUgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5MCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfb2lkX3N0YXNoX25vZGVcZlAqKiBuZXRzbm1wX2V4dHJhY3Rfc3Rhc2hfY2FjaGUgKFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICogcmVxaW5mbykiCiAuUFAKIGV4dHJhY3RzIGEgcG9pbnRlciB0byB0aGUgc3Rhc2hfY2FjaGUgaW5mbyBmcm9tIHRoZSByZXFpbmZvIHN0cnVjdHVyZS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMTMgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwOSBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X2JhcmVfc3Rhc2hfY2FjaGVfaGFuZGxlciAodm9pZCkiCiAuUFAKIHJldHVybnMgYSBzaW5nbGUgc3Rhc2hfY2FjaGUgaGFuZGxlciB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gaGFuZGxlciBjaGFpbiAod2l0aCBhIGZpeGVkIHRpbWVvdXQpLCBidXQgKm9ubHkqIGlmIHRoYXQgaGFuZGxlciBjaGFpbiBleHBsaWNpdGx5IHN1cHBvcnRzIHN0YXNoIGNhY2hlIHByb2Nlc3NpbmcuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzkgb2YgZmlsZSBzdGFzaF9jYWNoZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc1IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfc3Rhc2hfY2FjaGVfaGFuZGxlciAodm9pZCkiCiAuUFAKIHJldHVybnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIHN1Yi1jaGFpbiB0aGF0IGNhbiBiZSBpbmplY3RlZCBpbnRvIGEgZ2l2ZW4gKGFyYml0cmFyeSkgaGFuZGxlciBjaGFpbiwgdXNpbmcgYSBmaXhlZCBjYWNoZSB0aW1lb3V0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg4IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4NCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X3RpbWVkX2JhcmVfc3Rhc2hfY2FjaGVfaGFuZGxlciAoaW50IHRpbWVvdXQsIG9pZCAqIHJvb3RvaWQsIHNpemVfdCByb290b2lkX2xlbikiCiAuUFAKIHJldHVybnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIHRoYXQgY2FuIGJlIGluamVjdGVkIGludG8gYSBnaXZlbiBoYW5kbGVyIGNoYWluICh3aXRoIHRoZSBzcGVjaWZpZWQgdGltZW91dCBhbmQgcm9vdCBPSUQgdmFsdWVzKSwgYnV0ICpvbmx5KiBpZiB0aGF0IGhhbmRsZXIgY2hhaW4gZXhwbGljaXRseSBzdXBwb3J0cyBzdGFzaCBjYWNoZSBwcm9jZXNzaW5nLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQ0IG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X3RpbWVkX3N0YXNoX2NhY2hlX2hhbmRsZXIgKGludCB0aW1lb3V0LCBvaWQgKiByb290b2lkLCBzaXplX3Qgcm9vdG9pZF9sZW4pIgogLlBQCiByZXR1cm5zIGEgc3Rhc2hfY2FjaGUgaGFuZGxlciBzdWItY2hhaW4gdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIChhcmJpdHJhcnkpIGhhbmRsZXIgY2hhaW4sIHVzaW5nIGEgY29uZmlndXJhYmxlIGNhY2hlIHRpbWVvdXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTAxIG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5NyBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCiAuU1MgInZvaWQgbmV0c25tcF9pbml0X3N0YXNoX2NhY2hlX2hlbHBlciAodm9pZCkiCiAuUFAKIGluaXRpYWxpemVzIHRoZSBzdGFzaF9jYWNoZSBoZWxwZXIgd2hpY2ggdGhlbiByZWdpc3RlcnMgYSBzdGFzaF9jYWNoZSBoYW5kbGVyIGFzIGEgcnVuLXRpbWUgaW5qZWN0YWJsZSBoYW5kbGVyIGZvciBjb25maWd1cmF0aW9uIGZpbGUgdXNlLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzOCBvZiBmaWxlIHN0YXNoX2NhY2hlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjMzIG9mIGZpbGUgc3Rhc2hfY2FjaGUuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMgYi9tYW4vbmV0c25tcF9zdGFzaF90b19uZXh0LjMKaW5kZXggNDc4MjIwZS4uMjQwYmRlYSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfc3Rhc2hfdG9fbmV4dC4zCisrKyBiL21hbi9uZXRzbm1wX3N0YXNoX3RvX25leHQuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAic3Rhc2hfdG9fbmV4dCIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJzdGFzaF90b19uZXh0IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0yOCw3ICsyOCw3IEBACiAuUFAKIHJldHVybnMgYSBzdGFzaF90b19uZXh0IGhhbmRsZXIgdGhhdCBjYW4gYmUgaW5qZWN0ZWQgaW50byBhIGdpdmVuIGhhbmRsZXIgY2hhaW4uIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjggb2YgZmlsZSBzdGFzaF90b19uZXh0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjMgb2YgZmlsZSBzdGFzaF90b19uZXh0LmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGUuMyBiL21hbi9uZXRzbm1wX3RhYmxlLjMKaW5kZXggMDllNTUxNS4uYTA3MGE1YSAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGUuMworKysgYi9tYW4vbmV0c25tcF90YWJsZS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0YWJsZSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNzEsNiArNzEsOSBAQAogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSB0YWJsZSBoYW5kbGVyIGdpdmVuIHRoZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwgaW5zZXJ0cyBpdCBpbnRvIHRoZSByZXF1ZXN0IGNoYWluIGFuZCB0aGVuIGNhbGxzIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpXGZQIHRvIHJlZ2lzdGVyIHRoZSB0YWJsZSBpbnRvIHRoZSBhZ2VudC4gXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKKy5icgorLnRpIC0xYwogLlJJICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb1xmUCAqIFxmQm5ldHNubXBfZXh0cmFjdF90YWJsZV9pbmZvXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCkiCiAuYnIKIC5SSSAiXGZJRXh0cmFjdHMgdGhlIHByb2Nlc3NlZCB0YWJsZSBpbmZvcm1hdGlvbiBmcm9tIGEgZ2l2ZW4gcmVxdWVzdC4gXGZQIgpAQCAtMTE0LDYgKzExNyw5IEBACiAuUkkgImludCBcZkJuZXRzbm1wX2NoZWNrX2dldG5leHRfcmVwbHlcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0LCBvaWQgKnByZWZpeCwgc2l6ZV90IHByZWZpeF9sZW4sIFxmQm5ldHNubXBfdmFyaWFibGVfbGlzdFxmUCAqbmV3dmFyLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKipvdXR2YXIpIgogLmJyCiAuUkkgIlxmSWNoZWNrcyB0aGUgb3JpZ2luYWwgcmVxdWVzdCBhZ2FpbnN0IHRoZSBjdXJyZW50IGRhdGEgYmVpbmcgcGFzc2VkIGluIGlmIGl0cyBncmVhdGVyIHRoYW4gdGhlIHJlcXVlc3Qgb2lkIGJ1dCBsZXNzIHRoYW4gdGhlIGN1cnJlbnQgdmFsaWQgcmV0dXJuLCBzZXQgdGhlIGN1cnJlbnQgdmFsaWQgcmV0dXJuIHRvIHRoZSBuZXcgdmFsdWUuIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvX2ZyZWVcZlAgKFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKnRyaSkiCisuYnIKIC5pbiAtMWMKIC5TSCAiRGV0YWlsZWQgRGVzY3JpcHRpb24iCiAuUFAgCkBAIC0xMzAsNyArMTM2LDcgQEAKIC5QUAogY2hlY2tzIHRoZSBvcmlnaW5hbCByZXF1ZXN0IGFnYWluc3QgdGhlIGN1cnJlbnQgZGF0YSBiZWluZyBwYXNzZWQgaW4gaWYgaXRzIGdyZWF0ZXIgdGhhbiB0aGUgcmVxdWVzdCBvaWQgYnV0IGxlc3MgdGhhbiB0aGUgY3VycmVudCB2YWxpZCByZXR1cm4sIHNldCB0aGUgY3VycmVudCB2YWxpZCByZXR1cm4gdG8gdGhlIG5ldyB2YWx1ZS4gcmV0dXJucyAxIGlmIG91dHZhciB3YXMgcmVwbGFjZWQgd2l0aCB0aGUgb2lkIGZyb20gbmV3dmFyIChzdWNjZXNzKS4gcmV0dXJucyAwIGlmIG5vdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4ODEgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDkyOSBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQKiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfaW5mbyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogRXh0cmFjdHMgdGhlIHByb2Nlc3NlZCB0YWJsZSBpbmZvcm1hdGlvbiBmcm9tIGEgZ2l2ZW4gcmVxdWVzdC4gQ2FsbCB0aGlzIGZyb20gc3ViaGFuZGxlcnMgb24gYSByZXF1ZXN0IHRvIGV4dHJhY3QgdGhlIHByb2Nlc3NlZCBuZXRzbm1wX3JlcXVlc3RfaW5mbyBpbmZvcm1hdGlvbi4gVGhlIHJlc3VsdGluZyBpbmZvcm1hdGlvbiBpbmNsdWRlcyB0aGUgaW5kZXggdmFsdWVzIGFuZCB0aGUgY29sdW1uIG51bWJlci4KQEAgLTE0NywxMiArMTUzLDEyIEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI1IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDMgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQKiBuZXRzbm1wX2ZpbmRfdGFibGVfcmVnaXN0cmF0aW9uX2luZm8gKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvKSIKIC5QUAogZXh0cmFjdHMgdGhlIHJlZ2lzdGVyZWQgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyBvYmplY3QgZnJvbSBhIG5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb24gb2JqZWN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTM0IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNTIgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX2dldF90YWJsZV9oYW5kbGVyIChcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFicmVxKSIKIC5QUAogR2l2ZW4gYSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwgY3JlYXRlcyBhIHRhYmxlIGhhbmRsZXIuIFlvdSBjYW4gdXNlIHRoaXMgdGFibGUgaGFuZGxlciBieSBpbmplY3RpbmcgaXQgaW50byBhIGNhbGxpbmcgY2hhaW4uIFdoZW4gdGhlIGhhbmRsZXIgZ2V0cyBjYWxsZWQsIGl0J2xsIGRvIHByb2Nlc3NpbmcgYW5kIHN0b3JlIGl0J3MgaW5mb3JtYXRpb24gaW50byB0aGUgcmVxdWVzdC0+cGFyZW50X2RhdGEgc3RydWN0dXJlLgpAQCAtMTcxLDIyICsxNzcsMjYgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTEgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF9yZWdpc3Rlcl90YWJsZSAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJyZXEpIgogLlBQCiBjcmVhdGVzIGEgdGFibGUgaGFuZGxlciBnaXZlbiB0aGUgbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mbyBvYmplY3QsIGluc2VydHMgaXQgaW50byB0aGUgcmVxdWVzdCBjaGFpbiBhbmQgdGhlbiBjYWxscyBcZkJuZXRzbm1wX3JlZ2lzdGVyX2hhbmRsZXIoKVxmUCB0byByZWdpc3RlciB0aGUgdGFibGUgaW50byB0aGUgYWdlbnQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTA4IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTQgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX3NwYXJzZV90YWJsZV9oYW5kbGVyX2dldCAodm9pZCkiCiAuUFAKIGNyZWF0ZSBzcGFyc2UgdGFibGUgaGFuZGxlciAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDcyMiBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzQ1IG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfc3BhcnNlX3RhYmxlX3JlZ2lzdGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYnJlcSkiCiAuUFAKIGNyZWF0ZXMgYSB0YWJsZSBoYW5kbGVyIGdpdmVuIHRoZSBuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvIG9iamVjdCwgaW5zZXJ0cyBpdCBpbnRvIHRoZSByZXF1ZXN0IGNoYWluIGFuZCB0aGVuIGNhbGxzIFxmQm5ldHNubXBfcmVnaXN0ZXJfaGFuZGxlcigpXGZQIHRvIHJlZ2lzdGVyIHRoZSB0YWJsZSBpbnRvIHRoZSBhZ2VudC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3MzMgb2YgZmlsZSB0YWJsZS5jLgoraGFuZGxlcjEgaXMgaW4gcmVnaW5mby4uLiByZW1vdmUgYW5kIGZyZWU/PworLlBQCitib3RoIGhhbmRsZXJzIG5vdyBpbiByZWdpbmZvLCBzbyBub3RoaW5nIHRvIGRvIG9uIGVycm9yIAorLlBQCitEZWZpbml0aW9uIGF0IGxpbmUgNzU2IG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfdGFibGVfYnVpbGRfb2lkIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiBnaXZlbiBhIHJlZ2lzdHJhdGlvbiBpbmZvIG9iamVjdCwgYSByZXF1ZXN0IG9iamVjdCBhbmQgdGhlIHRhYmxlIGluZm8gb2JqZWN0IGl0IGJ1aWxkcyB0aGUgcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lIG9pZCBmcm9tIHRoZSBpbmRleCB2YWx1ZXMgYW5kIGNvbHVtbiBpbmZvcm1hdGlvbiBmb3VuZCBpbiB0aGUgdGFibGVfaW5mbyBvYmplY3QuIEluZGV4IHZhbHVlcyBhcmUgZXh0cmFjdGVkIGZyb20gdGhlIHRhYmxlX2luZm8gdmFyYmluZHMuIApAQCAtMTk1LDI3ICsyMDUsMjcgQEAKIC5QUAogLmNvbHVtbiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc4NCBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODMyIG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfdGFibGVfYnVpbGRfb2lkX2Zyb21faW5kZXggKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdGFibGVfaW5mbykiCiAuUFAKIGdpdmVuIGEgcmVnaXN0cmF0aW9uIGluZm8gb2JqZWN0LCBhIHJlcXVlc3Qgb2JqZWN0IGFuZCB0aGUgdGFibGUgaW5mbyBvYmplY3QgaXQgYnVpbGRzIHRoZSByZXF1ZXN0LT5yZXF1ZXN0dmItPm5hbWUgb2lkIGZyb20gdGhlIGluZGV4IHZhbHVlcyBhbmQgY29sdW1uIGluZm9ybWF0aW9uIGZvdW5kIGluIHRoZSB0YWJsZV9pbmZvIG9iamVjdC4gSW5kZXggdmFsdWVzIGFyZSBleHRyYWN0ZWQgZnJvbSB0aGUgdGFibGVfaW5mbyBpbmRleCBvaWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODIxIG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4Njkgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9idWlsZF9yZXN1bHQgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcWluZm8sIFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdGFibGVfaW5mbywgdV9jaGFyIHR5cGUsIHVfY2hhciAqIHJlc3VsdCwgc2l6ZV90IHJlc3VsdF9sZW4pIgogLlBQCiBCdWlsZHMgdGhlIHJlc3VsdCB0byBiZSByZXR1cm5lZCB0byB0aGUgYWdlbnQgZ2l2ZW4gdGhlIHRhYmxlIGluZm9ybWF0aW9uLiBVc2UgdGhpcyBmdW5jdGlvbiB0byByZXR1cm4gcmVzdWx0cyBmcm9tIGxvd2VsIGxldmVsIGhhbmRsZXJzIHRvIHRoZSBhZ2VudC4gSXQgdGFrZXMgY2FyZSBvZiBidWlsZGluZyB0aGUgcHJvcGVyIHJlc3VsdGluZyBvaWQgKGNvbnRhaW5pbmcgcHJvcGVyIGluZGV4aW5nKSBhbmQgaW5zZXJ0cyB0aGUgcmVzdWx0IHZhbHVlIGludG8gdGhlIHJldHVybmluZyB2YXJiaW5kLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc1MSBvZiBmaWxlIHRhYmxlLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzk5IG9mIGZpbGUgdGFibGUuYy4KIC5TUyAiaW50IG5ldHNubXBfdXBkYXRlX2luZGV4ZXNfZnJvbV92YXJpYWJsZV9saXN0IChcZkJuZXRzbm1wX3RhYmxlX3JlcXVlc3RfaW5mb1xmUCAqIHRyaSkiCiAuUFAKIGJ1aWxkcyBhbiBvaWQgZ2l2ZW4gYSBzZXQgb2YgaW5kZXhlcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NjMgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDkxMSBvZiBmaWxlIHRhYmxlLmMuCiAuU1MgImludCBuZXRzbm1wX3VwZGF0ZV92YXJpYWJsZV9saXN0X2Zyb21faW5kZXggKFxmQm5ldHNubXBfdGFibGVfcmVxdWVzdF9pbmZvXGZQICogdHJpKSIKIC5QUAogcGFyc2VzIGFuIE9JRCBpbnRvIHRhYmxlIGluZGV4c2VzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODQ3IG9mIGZpbGUgdGFibGUuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4OTUgb2YgZmlsZSB0YWJsZS5jLgogLlNTICJpbnQgdGFibGVfaGVscGVyX2hhbmRsZXIgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBoYW5kbGVyLCBcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKiByZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3RzKSIKIC5QUAogaW1wbGVtZW50cyB0aGUgdGFibGUgaGVscGVyIGhhbmRsZXIgCkBAIC0yMjgsNyArMjM4LDcgQEAKIC5QUAogZm9yIGxvb3AgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNDIgb2YgZmlsZSB0YWJsZS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE2MCBvZiBmaWxlIHRhYmxlLmMuCiAuU0ggIkF1dGhvciIKIC5QUCAKIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5IERveHlnZW4gZm9yIG5ldC1zbm1wIGZyb20gdGhlIHNvdXJjZSBjb2RlLgpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2FycmF5LjMKaW5kZXggNGRlYjQwNC4uMzhiMWJlYyAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGVfYXJyYXkuMworKysgYi9tYW4vbmV0c25tcF90YWJsZV9hcnJheS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9hcnJheSIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJ0YWJsZV9hcnJheSIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNjQsMjIgKzY0LDIyIEBACiAuUFAKIGZpbmQgdGhlIGNvbnRleHQgZGF0YSB1c2VkIGJ5IHRoZSB0YWJsZV9hcnJheSBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMjkgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzMCBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZmluZF90YWJsZV9hcnJheV9oYW5kbGVyIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICogcmVnaW5mbykiCiAuUFAKIGZpbmQgdGhlIGhhbmRsZXIgZm9yIHRoZSB0YWJsZV9hcnJheSBoZWxwZXIuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjEyIG9mIGZpbGUgdGFibGVfYXJyYXkuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyMTMgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9hcnJheV9jaGVja19yb3dfc3RhdHVzIChcZkJuZXRzbm1wX3RhYmxlX2FycmF5X2NhbGxiYWNrc1xmUCAqIGNiLCBcZkJuZXRzbm1wX3JlcXVlc3RfZ3JvdXBcZlAgKiBhZywgbG9uZyAqIHJzX25ldywgbG9uZyAqIHJzX29sZCkiCiAuUFAKIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHZhbGlkYXRlIFJvd1N0YXR1cyB0cmFuc2l0aW9ucy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMzYgb2YgZmlsZSB0YWJsZV9hcnJheS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIzNyBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCiAuU1MgImludCBuZXRzbm1wX3RhYmxlX2NvbnRhaW5lcl9yZWdpc3RlciAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJyZWcsIFxmQm5ldHNubXBfdGFibGVfYXJyYXlfY2FsbGJhY2tzXGZQICogY2IsIFxmQm5ldHNubXBfY29udGFpbmVyXGZQICogY29udGFpbmVyLCBpbnQgZ3JvdXBfcm93cykiCiAuUFAKIHJlZ2lzdGVyIHNwZWNpZmllZCBjYWxsYmFja3MgZm9yIHRoZSBzcGVjaWZpZWQgdGFibGUvb2lkLiBJZiB0aGUgZ3JvdXBfcm93cyBwYXJhbWV0ZXIgaXMgc2V0LCB0aGUgcm93IHJlbGF0ZWQgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIG9uY2UgZm9yIGVhY2ggdW5pcXVlIHJvdyBpbmRleC4gT3RoZXJ3aXNlLCBlYWNoIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIG9ubHkgb25jZSwgZm9yIGFsbCBvYmplY3RzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE0OSBvZiBmaWxlIHRhYmxlX2FycmF5LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTUwIG9mIGZpbGUgdGFibGVfYXJyYXkuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF90YWJsZV9jb250YWluZXIuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zCmluZGV4IGMwODcyNTguLmUyNWVjMDIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlX2NvbnRhaW5lci4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9jb250YWluZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfY29udGFpbmVyIiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KIC5hZCBsCiAubmgKIC5TSCBOQU1FCkBAIC0zMiw2ICszMiw5IEBACiAuUkkgImludCBcZkJuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yZWdpc3RlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqdGFicmVnLCBcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqY29udGFpbmVyLCBjaGFyIGtleV90eXBlKSIKIC5icgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9jb250YWluZXJfdGFibGVfdW5yZWdpc3RlclxmUCAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbykiCisuYnIKKy50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF9jb250YWluZXJcZlAgKiBcZkJuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9jb250YWluZXJfZXh0cmFjdFxmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QpIgogLmJyCiAuUkkgIlxmSXJldHJpZXZlIHRoZSBjb250YWluZXIgdXNlZCBieSB0aGUgdGFibGVfY29udGFpbmVyIGhlbHBlciBcZlAiCkBAIC04NywxNyArOTAsMTcgQEAKIC5QUAogcmV0cmlldmUgdGhlIGNvbnRhaW5lciB1c2VkIGJ5IHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzIwIG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzM5IG9mIGZpbGUgdGFibGVfY29udGFpbmVyLmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfY29udGFpbmVyX3RhYmxlX2hhbmRsZXJfZ2V0IChcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICogdGFicmVnLCBcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCAqIGNvbnRhaW5lciwgY2hhciBrZXlfdHlwZSkiCiAuUFAKIHJldHVybnMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIG9iamVjdCBmb3IgdGhlIHRhYmxlX2NvbnRhaW5lciBoZWxwZXIgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTQgb2YgZmlsZSB0YWJsZV9jb250YWluZXIuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNTUgb2YgZmlsZSB0YWJsZV9jb250YWluZXIuYy4KIC5TUyAidm9pZCBuZXRzbm1wX2NvbnRhaW5lcl90YWJsZV9yb3dfaW5zZXJ0IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIFxmQm5ldHNubXBfaW5kZXhcZlAgKiByb3cpIgogLlBQCiBpbnNlcnRzIGEgbmV3bHkgY3JlYXRlZCB0YWJsZV9jb250YWluZXIgZW50cnkgaW50byBhIHJlcXVlc3QgbGlzdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM1MSBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM3MCBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgogLlNTICJcZkJuZXRzbm1wX2luZGV4XGZQKiBuZXRzbm1wX3RhYmxlX2luZGV4X2ZpbmRfbmV4dF9yb3cgKFxmQm5ldHNubXBfY29udGFpbmVyXGZQICogYywgXGZCbmV0c25tcF90YWJsZV9yZXF1ZXN0X2luZm9cZlAgKiB0YmxyZXEpIgogLlBQCiBkZXByZWNhdGVkLCBiYWNrd2FyZHMgY29tcGF0YWJpbGl0eSBvbmx5IGV4cGVjdGVkIGltcGFjdCB0byByZW1vdmU6IG5vbmUKQEAgLTExMSw3ICsxMTQsNyBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDcyMSBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDc0MCBvZiBmaWxlIHRhYmxlX2NvbnRhaW5lci5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2RhdGEuMwppbmRleCBlMzMyOTBiLi5jODFkODc0IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9kYXRhLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfZGF0YS4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9kYXRhIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2RhdGEiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTQzLDcgKzQzLDcgQEAKIC5icgogLlJJICJcZklBZGRzIGEgcm93IG9mIGRhdGEgdG8gYSBnaXZlbiB0YWJsZSAoc3RvcmVkIGluIHByb3BlciBsZXhvZ3JhcGhpY2FsIG9yZGVyKS4gXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfdGFibGVfZGF0YV9yZXBsYWNlX3Jvd1xmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICp0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKm9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpuZXdyb3cpIgorLlJJICJ2b2lkIFxmQm5ldHNubXBfdGFibGVfZGF0YV9yZXBsYWNlX3Jvd1xmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICp0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKm9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpuZXdyb3cpIgogLmJyCiAuUkkgIlxmSXN3YXBzIG91dCBvcmlncm93IHdpdGggbmV3cm93LiBcZlAiCiAudGkgLTFjCkBAIC04Miw2ICs4Miw5IEBACiAuYnIKIC5SSSAiXGZJcmVnaXN0ZXJzIGEgaGFuZGxlciBhcyBhIHJlYWQtb25seSBkYXRhIHRhYmxlIElmIHRhYmxlX2luZm8gIT0gTlVMTCwgaXQgcmVnaXN0ZXJzIGl0IGFzIGEgbm9ybWFsIHRhYmxlIHRvby4gXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF91bnJlZ2lzdGVyX3RhYmxlX2RhdGFcZlAgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8pIgorLmJyCisudGkgLTFjCiAuUkkgImludCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfaGVscGVyX2hhbmRsZXJcZlAgKFxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKmhhbmRsZXIsIFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKnJlZ2luZm8sIFxmQm5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvXGZQICpyZXFpbmZvLCBcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdHMpIgogLmJyCiAudGkgLTFjCkBAIC05Nyw3ICsxMDAsNyBAQAogLmJyCiAuUkkgIlxmSWV4dHJhY3RzIHRoZSBkYXRhIGZyb20gdGhlIHJvdyBiZWluZyBhY2Nlc3NlZCBwYXNzZWQgZnJvbSB0aGUgdGFibGVfZGF0YSBoZWxwZXIgXGZQIgogLnRpIC0xYwotLlJJICJORVRTTk1QX0lOTElORSB2b2lkIFxmQm5ldHNubXBfaW5zZXJ0X3RhYmxlX3Jvd1xmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3cpIgorLlJJICJ2b2lkIFxmQm5ldHNubXBfaW5zZXJ0X3RhYmxlX3Jvd1xmUCAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKnJlcXVlc3QsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3cpIgogLmJyCiAuUkkgIlxmSWluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2RhdGEgcm93IGludG8gYSByZXF1ZXN0IFxmUCIKIC50aSAtMWMKQEAgLTE4MSw3ICsxODQsNyBAQAogLlBQCiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0YWJsZSBkYXRhIHNldCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUyIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDUzIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF9jcmVhdGVfdGFibGVfZGF0YV9yb3cgKHZvaWQpIgogLlBQCiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byB0YWJsZSBkYXRhIHNldCAKQEAgLTE5MCw0MiArMTkzLDQyIEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjIgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjMgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCogbmV0c25tcF9leHRyYWN0X3RhYmxlIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgdGFibGUgYmVpbmcgYWNjZXNzZWQgcGFzc2VkIGZyb20gdGhlIHRhYmxlX2RhdGEgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjU2IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY2MiBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfZXh0cmFjdF90YWJsZV9yb3cgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIHRoZSByb3cgYmVpbmcgYWNjZXNzZWQgcGFzc2VkIGZyb20gdGhlIHRhYmxlX2RhdGEgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjY0IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3MCBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF9leHRyYWN0X3RhYmxlX3Jvd19kYXRhIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgZGF0YSBmcm9tIHRoZSByb3cgYmVpbmcgYWNjZXNzZWQgcGFzc2VkIGZyb20gdGhlIHRhYmxlX2RhdGEgaGVscGVyIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjczIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY3OSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCogbmV0c25tcF9nZXRfdGFibGVfZGF0YV9oYW5kbGVyIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSkiCiAuUFAKIENyZWF0ZXMgYSB0YWJsZV9kYXRhIGhhbmRsZXIgYW5kIHJldHVybnMgaXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzc4IG9mIGZpbGUgdGFibGVfZGF0YS5jLgotLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfaW5zZXJ0X3RhYmxlX3JvdyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCitEZWZpbml0aW9uIGF0IGxpbmUgMzc3IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorLlNTICJ2b2lkIG5ldHNubXBfaW5zZXJ0X3RhYmxlX3JvdyAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0LCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGluc2VydHMgYSBuZXdseSBjcmVhdGVkIHRhYmxlX2RhdGEgcm93IGludG8gYSByZXF1ZXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjg1IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDY5MSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3RhYmxlX2RhdGEgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiByZWdpc3RlcnMgYSBoYW5kbGVyIGFzIGEgcmVhZC1vbmx5IGRhdGEgdGFibGUgSWYgdGFibGVfaW5mbyAhPSBOVUxMLCBpdCByZWdpc3RlcnMgaXQgYXMgYSBub3JtYWwgdGFibGUgdG9vLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQxMiBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MTEgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3JlZ2lzdGVyX3RhYmxlX2RhdGEgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiByZWdpc3RlcnMgYSBoYW5kbGVyIGFzIGEgZGF0YSB0YWJsZS4gSWYgdGFibGVfaW5mbyAhPSBOVUxMLCBpdCByZWdpc3RlcnMgaXQgYXMgYSBub3JtYWwgdGFibGUgdG9vLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQwMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MDAgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RhYmxlX2RhdGFfYWRkX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogQWRkcyBhIHJvdyBvZiBkYXRhIHRvIGEgZ2l2ZW4gdGFibGUgKHN0b3JlZCBpbiBwcm9wZXIgbGV4b2dyYXBoaWNhbCBvcmRlcikuIHJldHVybnMgU05NUEVSUl9TVUNDRVNTIG9uIHN1Y2Nlc3NmdWwgYWRkaXRpb24uIG9yIFNOTVBFUlJfR0VORVJSIG9uIGZhaWx1cmUgKEUuRy4sIGluZGV4ZXMgYWxyZWFkeSBleGlzdGVkKSAKQEAgLTIzNyw3ICsyNDAsNyBAQAogLlBQCiBjbG9uZXMgYSBkYXRhIHJvdy4gRE9FUyBOT1QgQ0xPTkUgVEhFIENPTlRBSU5FRCBEQVRBLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDcwIG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDcxIG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJ2b2lkKiBuZXRzbm1wX3RhYmxlX2RhdGFfZGVsZXRlX3JvdyAoXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiBkZWxldGVzIGEgcm93J3MgbWVtb3J5LiByZXR1cm5zIHRoZSB2b2lkIGRhdGEgdGhhdCBpdCBkb2Vzbid0IGtub3cgaG93IHRvIGRlbGV0ZS4gCkBAIC0yNDcsMjIgKzI1MCwyMiBAQAogLlBQCiBmaW5kcyB0aGUgZGF0YSBpbiAnZGF0YWxpc3QnIHN0b3JlZCBhdCAnaW5kZXhlcycgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4MTEgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODE3IG9mIGZpbGUgdGFibGVfZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX2dldF9maXJzdF9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlKSIKIC5QUAogcmV0dXJucyB0aGUgZmlyc3Qgcm93IGluIHRoZSB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc5MiBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3OTggb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQKiBuZXRzbm1wX3RhYmxlX2RhdGFfZ2V0X2Zyb21fb2lkIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFcZlAgKiB0YWJsZSwgb2lkICogc2VhcmNoZm9yLCBzaXplX3Qgc2VhcmNoZm9yX2xlbikiCiAuUFAKIGZpbmRzIHRoZSBkYXRhIGluICdkYXRhbGlzdCcgc3RvcmVkIGF0IHRoZSBzZWFyY2hmb3Igb2lkIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODI1IG9mIGZpbGUgdGFibGVfZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgzMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfdGFibGVfZGF0YV9nZXRfbmV4dF9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIHJldHVybnMgdGhlIG5leHQgcm93IGluIHRoZSB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgwMSBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4MDcgb2YgZmlsZSB0YWJsZV9kYXRhLmMuCiAuU1MgInZvaWQqIG5ldHNubXBfdGFibGVfZGF0YV9yZW1vdmVfYW5kX2RlbGV0ZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIHJlbW92ZXMgYW5kIGZyZWVzIGEgcm93IG9mIGRhdGEgdG8gYSBnaXZlbiB0YWJsZSBhbmQgcmV0dXJucyB0aGUgdm9pZCAqIHJldHVybnMgdGhlIHZvaWQgKiBkYXRhIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24uIG9yIE5VTEwgb24gZmFpbHVyZSAoYmFkIGFyZ3VtZW50cykgCkBAIC0yNzMsNyArMjc2LDcgQEAKIHJlbW92ZXMgYSByb3cgb2YgZGF0YSB0byBhIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIGl0IChubyBmcmVlJ3MgY2FsbGVkKSByZXR1cm5zIHRoZSByb3cgcG9pbnRlciBpdHNlbGYgb24gc3VjY2Vzc2Z1bCByZW1vdmluZy4gb3IgTlVMTCBvbiBmYWlsdXJlIChiYWQgYXJndW1lbnRzKSAKIC5QUAogRGVmaW5pdGlvbiBhdCBsaW5lIDI0OCBvZiBmaWxlIHRhYmxlX2RhdGEuYy4KLS5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFfcmVwbGFjZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIG9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogbmV3cm93KSIKKy5TUyAidm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFfcmVwbGFjZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIG9yaWdyb3csIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogbmV3cm93KSIKIC5QUAogc3dhcHMgb3V0IG9yaWdyb3cgd2l0aCBuZXdyb3cuIFRoaXMgZG9lcyAqbm90KiBkZWxldGUvZnJlZSBhbnl0aGluZyEgCiAuUFAKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2RhdGFzZXQuMwppbmRleCA4YTAxYzNjLi40YTBjZDRjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9kYXRhc2V0LjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfZGF0YXNldC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9kYXRhc2V0IiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2RhdGFzZXQiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTEzLDE3ICsxMyw2IEBACiAuUkkgInZvaWQgXGZCbmV0c25tcF9pbml0X3RhYmxlX2RhdGFzZXRcZlAgKHZvaWQpIgogLmJyCiAudGkgLTFjCi0uUkkgIlxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV90YWJsZV9kYXRhX3NldFxmUCAoY29uc3QgY2hhciAqdGFibGVfbmFtZSkiCi0uYnIKLS5SSSAiXGZJQ3JlYXRlIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBzdHJ1Y3R1cmUgZ2l2ZW4gYSB0YWJsZV9kYXRhIGRlZmluaXRpb24uIFxmUCIKLS50aSAtMWMKLS5SSSAidm9pZCBcZkJuZXRzbm1wX2RlbGV0ZV90YWJsZV9kYXRhX3NldFxmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqdGFibGVfc2V0KSIKLS5icgotLnRpIC0xYwotLlJJICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfY2xvbmVfcm93XGZQIChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqcm93KSIKLS5icgotLlJJICJcZkljbG9uZXMgYSBkYXRhc2V0IHJvdywgaW5jbHVkaW5nIGFsbCBkYXRhLiBcZlAiCi0udGkgLTFjCiAuUkkgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCAqIFxmQm5ldHNubXBfdGFibGVfZGF0YXNldF9kZWxldGVfZGF0YVxmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICpkYXRhKSIKIC5icgogLlJJICJcZklkZWxldGVzIGEgc2luZ2xlIGRhdGFzZXQgdGFibGUgZGF0YS4gXGZQIgpAQCAtNTIsNiArNDEsMTcgQEAKIC5icgogLlJJICJcZklyZW1vdmVzIGEgcm93IGZyb20gdGhlIHRhYmxlIGFuZCB0aGVuIGRlbGV0ZXMgaXQgKGFuZCBhbGwgaXRzIGRhdGEpIFxmUCIKIC50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIFxmQm5ldHNubXBfY3JlYXRlX3RhYmxlX2RhdGFfc2V0XGZQIChjb25zdCBjaGFyICp0YWJsZV9uYW1lKSIKKy5icgorLlJJICJcZklDcmVhdGUgYSBuZXRzbm1wX3RhYmxlX2RhdGFfc2V0IHN0cnVjdHVyZSBnaXZlbiBhIHRhYmxlX2RhdGEgZGVmaW5pdGlvbi4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQm5ldHNubXBfZGVsZXRlX3RhYmxlX2RhdGFfc2V0XGZQIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICp0YWJsZV9zZXQpIgorLmJyCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfdGFibGVfcm93XGZQICogXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3dcZlAgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3cpIgorLmJyCisuUkkgIlxmSWNsb25lcyBhIGRhdGFzZXQgcm93LCBpbmNsdWRpbmcgYWxsIGRhdGEuIFxmUCIKKy50aSAtMWMKIC5SSSAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X2NyZWF0ZV9yb3dfZnJvbV9kZWZhdWx0c1xmUCAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICpkZWZyb3cpIgogLmJyCiAuUkkgIlxmSWNyZWF0ZXMgYSBuZXcgcm93IGZyb20gYW4gZXhpc3RpbmcgZGVmaW5lZCBkZWZhdWx0IHNldCBcZlAiCkBAIC0xMTUsNyArMTE1LDcgQEAKIC5icgogLlJJICJcZkltYXJrcyBhIGdpdmVuIGNvbHVtbiBpbiBhIHJvdyBhcyB3cml0YWJsZSBvciBub3QuIFxmUCIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfc2V0X3Jvd19jb2x1bW5cZlAgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICpyb3csIHVuc2lnbmVkIGludCBjb2x1bW4sIGludCB0eXBlLCBjb25zdCBjaGFyICp2YWx1ZSwgc2l6ZV90IHZhbHVlX2xlbikiCisuUkkgImludCBcZkJuZXRzbm1wX3NldF9yb3dfY29sdW1uXGZQIChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqcm93LCB1bnNpZ25lZCBpbnQgY29sdW1uLCBpbnQgdHlwZSwgY29uc3Qgdm9pZCAqdmFsdWUsIHNpemVfdCB2YWx1ZV9sZW4pIgogLmJyCiAuUkkgIlxmSXNldHMgYSBnaXZlbiBjb2x1bW4gaW4gYSByb3cgd2l0aCBkYXRhIGdpdmVuIGEgdHlwZSwgdmFsdWUsIGFuZCBsZW5ndGguIFxmUCIKIC50aSAtMWMKQEAgLTE0NCwyMiArMTQ0LDIyIEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzcgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTY1IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJORVRTTk1QX0lOTElORSBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQKiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfZGF0YV9zZXQgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBwb2ludGVyIGZyb20gYSBnaXZlbiByZXF1ZXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODM4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgzOSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQKiBuZXRzbm1wX2V4dHJhY3RfdGFibGVfZGF0YV9zZXRfY29sdW1uIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QsIHVuc2lnbmVkIGludCBjb2x1bW4pIgogLlBQCiBleHRyYWN0cyBhIG5ldHNubXBfdGFibGVfZGF0YV9zZXQgcG9pbnRlciBmcm9tIGEgZ2l2ZW4gcmVxdWVzdCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDg0OCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4NDkgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAqIG5ldHNubXBfZ2V0X3RhYmxlX2RhdGFfc2V0X2hhbmRsZXIgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiBkYXRhX3NldCkiCiAuUFAKIEdpdmVuIGEgbmV0c25tcF90YWJsZV9kYXRhX3NldCBkZWZpbml0aW9uLCBjcmVhdGUgYSBoYW5kbGVyIGZvciBpdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzIgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzYzIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJpbnQgbmV0c25tcF9tYXJrX3Jvd19jb2x1bW5fd3JpdGFibGUgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93LCBpbnQgY29sdW1uLCBpbnQgd3JpdGFibGUpIgogLlBQCiBtYXJrcyBhIGdpdmVuIGNvbHVtbiBpbiBhIHJvdyBhcyB3cml0YWJsZSBvciBub3QuIApAQCAtMTY4LDcgKzE2OCw3IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTIxNCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjE3IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJ2b2lkIG5ldHNubXBfcmVnaXN0ZXJfYXV0b19kYXRhX3RhYmxlIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGVfc2V0LCBjaGFyICogcmVnaXN0cmF0aW9uX25hbWUpIgogLlBQCiByZWdpc3RlcnMgYSB0YWJsZV9kYXRhc2V0IHNvIHRoYXQgdGhlICdhZGRfcm93JyBzbm1wZC5jb25mIHRva2VuIGNhbiBiZSB1c2VkIHRvIGFkZCBkYXRhIHRvIHRoaXMgdGFibGUuIElmIHJlZ2lzdHJhdGlvbl9uYW1lIGlzIE5VTEwgdGhlbiB0aGUgbmFtZSB1c2VkIHdoZW4gdGhlIHRhYmxlIHdhcyBjcmVhdGVkIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgpAQCAtMTg0LDcgKzE4NCw3IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODc1IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg3NiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiaW50IG5ldHNubXBfcmVnaXN0ZXJfdGFibGVfZGF0YV9zZXQgKFxmQm5ldHNubXBfaGFuZGxlcl9yZWdpc3RyYXRpb25cZlAgKiByZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogZGF0YV9zZXQsIFxmQm5ldHNubXBfdGFibGVfcmVnaXN0cmF0aW9uX2luZm9cZlAgKiB0YWJsZV9pbmZvKSIKIC5QUAogcmVnaXN0ZXIgYSBnaXZlbiBkYXRhX3NldCBhdCBhIGdpdmVuIG9pZCAoc3BlY2lmaWVkIGluIHRoZSBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uIHBvaW50ZXIpLiBUaGUgcmVnaW5mby0+aGFuZGxlci0+YWNjZXNzX21ldGhvZCAqbWF5KiBiZSBudWxsIGlmIHRoZSBjYWxsIGRvZXNuJ3QgZXZlciB3YW50IHRvIGJlIGNhbGxlZCBmb3IgU05NUCBvcGVyYXRpb25zLiAKQEAgLTE5Myw4ICsxOTMsOCBAQAogLmluICsxYwogXGZCZGF0YV9zZXQuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM5OCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KLS5TUyAiaW50IG5ldHNubXBfc2V0X3Jvd19jb2x1bW4gKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93LCB1bnNpZ25lZCBpbnQgY29sdW1uLCBpbnQgdHlwZSwgY29uc3QgY2hhciAqIHZhbHVlLCBzaXplX3QgdmFsdWVfbGVuKSIKK0RlZmluaXRpb24gYXQgbGluZSAzODkgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCisuU1MgImludCBuZXRzbm1wX3NldF9yb3dfY29sdW1uIChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdywgdW5zaWduZWQgaW50IGNvbHVtbiwgaW50IHR5cGUsIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IHZhbHVlX2xlbikiCiAuUFAKIHNldHMgYSBnaXZlbiBjb2x1bW4gaW4gYSByb3cgd2l0aCBkYXRhIGdpdmVuIGEgdHlwZSwgdmFsdWUsIGFuZCBsZW5ndGguIERhdGEgaXMgbWVtZHVwJ2VkIGJ5IHRoZSBmdW5jdGlvbi4gCiAuUFAKQEAgLTIwMiwzMiArMjAyLDMyIEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTI0OSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMjUyIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9jbG9uZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogY2xvbmVzIGEgZGF0YXNldCByb3csIGluY2x1ZGluZyBhbGwgZGF0YS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxMDggb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTk2IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9jcmVhdGVfcm93X2Zyb21fZGVmYXVsdHMgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCAqIGRlZnJvdykiCiAuUFAKIGNyZWF0ZXMgYSBuZXcgcm93IGZyb20gYW4gZXhpc3RpbmcgZGVmaW5lZCBkZWZhdWx0IHNldCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0MiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyNDQgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIlxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCogbmV0c25tcF90YWJsZV9kYXRhX3NldF9maW5kX2NvbHVtbiAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldF9zdG9yYWdlXGZQICogc3RhcnQsIHVuc2lnbmVkIGludCBjb2x1bW4pIgogLlBQCiBGaW5kcyBhIGNvbHVtbiB3aXRoaW4gYSBnaXZlbiBzdG9yYWdlIHNldCwgZ2l2ZW4gdGhlIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzdG9yYWdlIHNldCBsaXN0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyMDIgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTIwNSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfZ2V0X2ZpcnN0X3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRhYmxlKSIKIC5QUAogcmV0dXJucyB0aGUgZmlyc3Qgcm93IGluIHRoZSB0YWJsZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDExNzEgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTE3NCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiXGZCbmV0c25tcF90YWJsZV9yb3dcZlAqIG5ldHNubXBfdGFibGVfZGF0YV9zZXRfZ2V0X25leHRfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogcmV0dXJucyB0aGUgbmV4dCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE3OCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMTgxIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJ2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9hZGRfaW5kZXggKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZSwgdV9jaGFyIHR5cGUpIgogLlBQCiBhZGRzIGFuIGluZGV4IHRvIHRoZSB0YWJsZS4gQ2FsbCB0aGlzIHJlcGVhdGx5IGZvciBlYWNoIGluZGV4LiAKQEAgLTIzNiw3ICsyMzYsNyBAQAogLmluICsxYwogXGZCZGF0YV9zZXQuY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEzMDMgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTMwNiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfYWRkX3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGFkZHMgYSBuZXcgcm93IHRvIGEgZGF0YXNldCB0YWJsZSAKQEAgLTI0NSw0OSArMjQ1LDQ5IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg3IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDExNyBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfZGVsZXRlX2FsbF9kYXRhIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAgKiBkYXRhKSIKIC5QUAogZGVsZXRlcyBhbGwgdGhlIGRhdGEgZnJvbSB0aGlzIFxmQm5vZGVcZlAgYW5kIGJleW9uZCBpbiB0aGUgbGlua2VkIGxpc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxNjQgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTQgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRfc3RvcmFnZVxmUCogbmV0c25tcF90YWJsZV9kYXRhc2V0X2RlbGV0ZV9kYXRhIChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0X3N0b3JhZ2VcZlAgKiBkYXRhKSIKIC5QUAogZGVsZXRlcyBhIHNpbmdsZSBkYXRhc2V0IHRhYmxlIGRhdGEuIHJldHVybnMgdGhlIChwb3NzaWJseSBzdGlsbCBnb29kKSBuZXh0IHBvaW50ZXIgb2YgdGhlIGRlbGV0ZWQgZGF0YSBvYmplY3QuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTUxIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgxIG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJORVRTTk1QX0lOTElORSB2b2lkIG5ldHNubXBfdGFibGVfZGF0YXNldF9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RhYmxlX3Jvd1xmUCAqIHJvdykiCiAuUFAKIGRlbGV0ZXMgYWxsIHRoZSBkYXRhIGZyb20gdGhpcyBcZkJub2RlXGZQIGFuZCBiZXlvbmQgaW4gdGhlIGxpbmtlZCBsaXN0IAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTc0IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDEwNCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX3RhYmxlX2RhdGFzZXRfcmVtb3ZlX2FuZF9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogcm93KSIKIC5QUAogcmVtb3ZlcyBhIHJvdyBmcm9tIHRoZSB0YWJsZSBhbmQgdGhlbiBkZWxldGVzIGl0IChhbmQgYWxsIGl0cyBkYXRhKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIxOSBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxNDkgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF90YWJsZV9kYXRhc2V0X3JlbW92ZV9yb3cgKFxmQm5ldHNubXBfdGFibGVfZGF0YV9zZXRcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiByb3cpIgogLlBQCiByZW1vdmVzIGEgcm93IGZyb20gdGhlIHRhYmxlLCBidXQgZG9lc24ndCBkZWxldGUvZnJlZSB0aGUgY29sdW1uIHZhbHVlcyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIwOCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzggb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCiAuU1MgIk5FVFNOTVBfSU5MSU5FIHZvaWQgbmV0c25tcF90YWJsZV9kYXRhc2V0X3JlcGxhY2Vfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGUsIFxmQm5ldHNubXBfdGFibGVfcm93XGZQICogb3JpZ3JvdywgXGZCbmV0c25tcF90YWJsZV9yb3dcZlAgKiBuZXdyb3cpIgogLlBQCiBhZGRzIGEgbmV3IHJvdyB0byBhIGRhdGFzZXQgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxOTcgb2YgZmlsZSB0YWJsZV9kYXRhc2V0LmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTI3IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJpbnQgbmV0c25tcF90YWJsZV9zZXRfYWRkX2RlZmF1bHRfcm93IChcZkJuZXRzbm1wX3RhYmxlX2RhdGFfc2V0XGZQICogdGFibGVfc2V0LCB1bnNpZ25lZCBpbnQgY29sdW1uLCBpbnQgdHlwZSwgaW50IHdyaXRhYmxlLCB2b2lkICogZGVmYXVsdF92YWx1ZSwgc2l6ZV90IGRlZmF1bHRfdmFsdWVfbGVuKSIKIC5QUAogYWRkcyBhIG5ldyBkZWZhdWx0IHJvdyB0byBhIHRhYmxlX3NldC4gQXJndW1lbnRzIHNob3VsZCBiZSB0aGUgdGFibGVfc2V0LCBjb2x1bW4gbnVtYmVyLCBcZkJ2YXJpYWJsZVxmUCB0eXBlIGFuZCBmaW5hbGx5IGEgMSBpZiBpdCBpcyBhbGxvd2VkIHRvIGJlIHdyaXRhYmxlLCBvciBhIDAgaWYgbm90LiBJZiB0aGUgZGVmYXVsdF92YWx1ZSBmaWVsZCBpcyBub3QgTlVMTCwgaXQgd2lsbCBiZSB1c2VkIHRvIHBvcHVsYXRlIG5ldyB2YWx1c2UgaW4gdGhhdCBjb2x1bW4gZnJvIG5ld2x5IGNyZWF0ZWQgcm93cy4gSXQgaXMgY29waWVkIGludG8gdGhlIHN0b3JhZ2UgdGVtcGxhdGUgKGZyZWUgeW91ciBjYWxsaW5nIGFyZ3VtZW50KS4KIC5QUAogcmV0dXJucyBTTk1QRVJSX1NVQ0NFU1Mgb3IgU05NUEVSUl9GQUlMVVJFIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjY4IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI3MCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3RhYmxlX3NldF9hZGRfaW5kZXhlcyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRzZXQsICAuLi4pIgogLlBQCiBhZGRzIG11bHRpcGxlIGluZGV4ZXMgdG8gYSB0YWJsZV9kYXRhc2V0IGhlbHBlciBvYmplY3QuIFRvIGVuZCB0aGUgbGlzdCwgdXNlIGEgMCBhZnRlciB0aGUgbGlzdCBvZiBBU04gaW5kZXggdHlwZXMuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTMxNCBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxMzE2IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgogLlNTICJ2b2lkIG5ldHNubXBfdGFibGVfc2V0X211bHRpX2FkZF9kZWZhdWx0X3JvdyAoXGZCbmV0c25tcF90YWJsZV9kYXRhX3NldFxmUCAqIHRzZXQsICAuLi4pIgogLlBQCiBhZGRzIG11bHRpcGxlIGRhdGEgY29sdW1uIGRlZmluaXRpb25zIHRvIGVhY2ggcm93LiBGdW5jdGlvbmFsbHksIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBjYWxsaW5nIG5ldHNubXBfdGFibGVfc2V0X2FkZF9kZWZhdWx0X3JvdyByZXBlYXRlZGx5IGZvciB5b3UuIApAQCAtMjk2LDcgKzI5Niw3IEBACiAuaW4gKzFjCiBcZkJkYXRhX3NldC5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzI5IG9mIGZpbGUgdGFibGVfZGF0YXNldC5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzMiBvZiBmaWxlIHRhYmxlX2RhdGFzZXQuYy4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMgYi9tYW4vbmV0c25tcF90YWJsZV9nZW5lcmljLjMKaW5kZXggYWViYzg5ZS4uZGQ0NDU2ZiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdGFibGVfZ2VuZXJpYy4zCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlX2dlbmVyaWMuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAiZ2VuZXJpY190YWJsZV9BUEkiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAiZ2VuZXJpY190YWJsZV9BUEkiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMyBiL21hbi9uZXRzbm1wX3RhYmxlX2luZGV4ZXMuMwppbmRleCAxZTk0NjY3Li41ZDBmZWI0IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9pbmRleGVzLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfaW5kZXhlcy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9pbmRleGVzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2luZGV4ZXMiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMgYi9tYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci4zCmluZGV4IDU3NjVhZWEuLjc2Y2M0YWMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidGFibGVfaXRlcmF0b3IiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfaXRlcmF0b3IiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMyBiL21hbi9uZXRzbm1wX3RhYmxlX2l0ZXJhdG9yLmguMwppbmRleCAyYzA2ZGI0Li41ZmEzYWYzIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9pdGVyYXRvci5oLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfaXRlcmF0b3IuaC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9pdGVyYXRvci5oIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX2l0ZXJhdG9yLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMgYi9tYW4vbmV0c25tcF90YWJsZV9tYWludGVuYW5jZS4zCmluZGV4IDg0NDYzYWYuLmMzMThlY2IgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RhYmxlX21haW50ZW5hbmNlLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfbWFpbnRlbmFuY2UuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidGFibGVfbWFpbnRlbmFuY2UiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGFibGVfbWFpbnRlbmFuY2UiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zIGIvbWFuL25ldHNubXBfdGFibGVfcm93LjMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDY1OWRjZgotLS0gL2Rldi9udWxsCisrKyBiL21hbi9uZXRzbm1wX3RhYmxlX3Jvdy4zCkBAIC0wLDAgKzEsNDEgQEAKKy5USCAidGFibGVfcm93IiAzICIzMSBNYXkgMjAxMiIgIlZlcnNpb24gNS41LjIucmMyIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5hZCBsCisubmgKKy5TSCBOQU1FCit0YWJsZV9yb3cgXC0gCisuUFAKK0hlbHBzIHlvdSBpbXBsZW1lbnQgYSB0YWJsZSBzaGFyZWQgYWNyb3NzIHR3byBvciBtb3JlIHN1YmFnZW50cywgb3Igb3RoZXJ3aXNlIHNwbGl0IGludG8gaW5kaXZpZHVhbCByb3cgc2xpY2VzLiAgCisKKy5TUyAiRnVuY3Rpb25zIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgIlxmQm5ldHNubXBfbWliX2hhbmRsZXJcZlAgKiBcZkJuZXRzbm1wX3RhYmxlX3Jvd19oYW5kbGVyX2dldFxmUCAodm9pZCAqcm93KSIKKy5icgorLlJJICJcZklyZXR1cm5zIGEgbmV0c25tcF9taWJfaGFuZGxlciBvYmplY3QgZm9yIHRoZSB0YWJsZV9jb250YWluZXIgaGVscGVyIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfdGFibGVfcm93X3JlZ2lzdGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvLCBcZkJuZXRzbm1wX3RhYmxlX3JlZ2lzdHJhdGlvbl9pbmZvXGZQICp0YWJyZWcsIHZvaWQgKnJvdywgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICppbmRleCkiCisuYnIKKy50aSAtMWMKKy5SSSAidm9pZCAqIFxmQm5ldHNubXBfdGFibGVfcm93X2V4dHJhY3RcZlAgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0KSIKKy5icgorLlJJICJcZklyZXR1cm4gdGhlIHJvdyBkYXRhIHN0cnVjdHVyZSBzdXBwbGllZCB0byB0aGUgdGFibGVfcm93IGhlbHBlciBcZlAiCisuaW4gLTFjCisuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgorLlBQIAorSGVscHMgeW91IGltcGxlbWVudCBhIHRhYmxlIHNoYXJlZCBhY3Jvc3MgdHdvIG9yIG1vcmUgc3ViYWdlbnRzLCBvciBvdGhlcndpc2Ugc3BsaXQgaW50byBpbmRpdmlkdWFsIHJvdyBzbGljZXMuIAorLlNIICJGdW5jdGlvbiBEb2N1bWVudGF0aW9uIgorLlBQIAorLlNTICJ2b2lkKiBuZXRzbm1wX3RhYmxlX3Jvd19leHRyYWN0IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgorLlBQCityZXR1cm4gdGhlIHJvdyBkYXRhIHN0cnVjdHVyZSBzdXBwbGllZCB0byB0aGUgdGFibGVfcm93IGhlbHBlciAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDE1OCBvZiBmaWxlIHRhYmxlX3Jvdy5jLgorLlNTICJcZkJuZXRzbm1wX21pYl9oYW5kbGVyXGZQKiBuZXRzbm1wX3RhYmxlX3Jvd19oYW5kbGVyX2dldCAodm9pZCAqIHJvdykiCisuUFAKK3JldHVybnMgYSBuZXRzbm1wX21pYl9oYW5kbGVyIG9iamVjdCBmb3IgdGhlIHRhYmxlX2NvbnRhaW5lciBoZWxwZXIgCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA3NSBvZiBmaWxlIHRhYmxlX3Jvdy5jLgorLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMyBiL21hbi9uZXRzbm1wX3RhYmxlX3Jvd3MuMwppbmRleCBjZjM3YjJkLi40YWJmMzg4IDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF90YWJsZV9yb3dzLjMKKysrIGIvbWFuL25ldHNubXBfdGFibGVfcm93cy4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJ0YWJsZV9yb3dzIiAzICIyNCBKdW4gMjAxMSIgIlZlcnNpb24gNS40LjMucHJlMSIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCisuVEggInRhYmxlX3Jvd3MiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3RkYXRhLjMgYi9tYW4vbmV0c25tcF90ZGF0YS4zCmluZGV4IDE2YmQ2YTIuLmUxNTQ3OGMgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3RkYXRhLjMKKysrIGIvbWFuL25ldHNubXBfdGRhdGEuMwpAQCAtMSw0ICsxLDQgQEAKLS5USCAidGRhdGEiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidGRhdGEiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQogLmFkIGwKIC5uaAogLlNIIE5BTUUKQEAgLTY0LDYgKzY0LDkgQEAKIC5icgogLlJJICJcZklyZWdpc3RlcnMgYSB0ZGF0YS1iYXNlZCBNSUIgdGFibGUgXGZQIgogLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF90ZGF0YV91bnJlZ2lzdGVyXGZQIChcZkJuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uXGZQICpyZWdpbmZvKSIKKy5icgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3RkYXRhXGZQICogXGZCbmV0c25tcF90ZGF0YV9leHRyYWN0X3RhYmxlXGZQIChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqcmVxdWVzdCkiCiAuYnIKIC5SSSAiXGZJZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlIFxmUCIKQEAgLTE1MSwzMiArMTU0LDMyIEBACiAuUFAKIENyZWF0ZXMgYSB0ZGF0YSBoYW5kbGVyIGFuZCByZXR1cm5zIGl0LiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI4NCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjgzIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiTkVUU05NUF9JTkxJTkUgdm9pZCBuZXRzbm1wX2luc2VydF90ZGF0YV9yb3cgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBpbnNlcnRzIGEgbmV3bHkgY3JlYXRlZCB0ZGF0YSByb3cgaW50byBhIHJlcXVlc3QgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzOTkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQwNSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RkYXRhX2FkZF9yb3cgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBBZGRzIGEgcm93IHRvIHRoZSBnaXZlbiB0YWJsZSAoc3RvcmVkIGluIHByb3BlciBsZXhvZ3JhcGhpY2FsIG9yZGVyKS4gcmV0dXJucyBTTk1QRVJSX1NVQ0NFU1Mgb24gc3VjY2Vzc2Z1bCBhZGRpdGlvbi4gb3IgU05NUEVSUl9HRU5FUlIgb24gZmFpbHVyZSAoRS5HLiwgaW5kZXhlcyBhbHJlYWR5IGV4aXN0ZWQpIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTg2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAxODUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9jbG9uZV9yb3cgKFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogY2xvbmVzIGEgJ3RkYXRhJyByb3cuIERPRVMgTk9UIENMT05FIFRIRSBUQUJMRS1TUEVDSUZJQyBFTlRSWSBEQVRBLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkyIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA5MyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgImludCBuZXRzbm1wX3RkYXRhX2NvbXBhcmVfaWR4IChcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCAqIHJvdywgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogaW5kZXhlcykiCiAuUFAKIGNvbXBhcmUgYSByb3cgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggdmFsdWVzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTE4IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1MjQgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJpbnQgbmV0c25tcF90ZGF0YV9jb21wYXJlX29pZCAoXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3csIG9pZCAqIGNvbXBhcmV0bywgc2l6ZV90IGNvbXBhcmV0b19sZW4pIgogLlBQCiBjb21wYXJlIGEgcm93IHdpdGggdGhlIGdpdmVuIGluZGV4IE9JRCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzMSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNTM3IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiaW50IG5ldHNubXBfdGRhdGFfY29weV9yb3cgKFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogZHN0X3JvdywgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiBzcmNfcm93KSIKIC5QUAogY29weSB0aGUgY29udGVudHMgb2YgYSAndGRhdGEnIHJvdy4gRE9FUyBOT1QgQ09QWSBUSEUgVEFCTEUtU1BFQ0lGSUMgRU5UUlkgREFUQS4gCkBAIC0xODYsMTAyICsxODksMTAyIEBACiAuUFAKIGNyZWF0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIG5ldyByb3cgZGF0YSBzdHJ1Y3R1cmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhXGZQKiBuZXRzbm1wX3RkYXRhX2NyZWF0ZV90YWJsZSAoY29uc3QgY2hhciAqIG5hbWUsIGxvbmcgZmxhZ3MpIgogLlBQCiBjcmVhdGVzIGFuZCByZXR1cm5zIGEgJ3RkYXRhJyB0YWJsZSBkYXRhIHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA1NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgInZvaWQqIG5ldHNubXBfdGRhdGFfZGVsZXRlX3JvdyAoXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiBkZWxldGVzIHRoZSBtZW1vcnkgdXNlZCBieSB0aGUgc3BlY2lmaWVkIHJvdyByZXR1cm5zIHRoZSB0YWJsZS1zcGVjaWZpYyBlbnRyeSBkYXRhICh0aGF0IGl0IGRvZXNuJ3Qga25vdyBob3cgdG8gZGVsZXRlKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1NyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTU2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3RkYXRhX2RlbGV0ZV90YWJsZSAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlKSIKIC5QUAogY3JlYXRlcyBhbmQgcmV0dXJucyBhICd0ZGF0YScgdGFibGUgZGF0YSBzdHJ1Y3R1cmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2OCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNjkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX2NvbnRhaW5lclxmUCogbmV0c25tcF90ZGF0YV9leHRyYWN0X2NvbnRhaW5lciAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogZXh0cmFjdHMgdGhlIHRkYXRhIGNvbnRhaW5lciBmcm9tIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM3MCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzc2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF90ZGF0YV9leHRyYWN0X2VudHJ5IChcZkJuZXRzbm1wX3JlcXVlc3RfaW5mb1xmUCAqIHJlcXVlc3QpIgogLlBQCiBleHRyYWN0cyB0aGUgKHRhYmxlLXNwZWNpZmljKSBlbnRyeSBiZWluZyBhY2Nlc3NlZCBmcm9tIHRoZSByZXF1ZXN0IHN0cnVjdHVyZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDM4NyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMzkzIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfZXh0cmFjdF9yb3cgKFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICogcmVxdWVzdCkiCiAuUFAKIGV4dHJhY3RzIHRoZSB0ZGF0YSByb3cgYmVpbmcgYWNjZXNzZWQgZnJvbSB0aGUgcmVxdWVzdCBzdHJ1Y3R1cmUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNzkgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM4NSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFcZlAqIG5ldHNubXBfdGRhdGFfZXh0cmFjdF90YWJsZSAoXGZCbmV0c25tcF9yZXF1ZXN0X2luZm9cZlAgKiByZXF1ZXN0KSIKIC5QUAogZXh0cmFjdHMgdGhlIHRkYXRhIHRhYmxlIGZyb20gdGhlIHJlcXVlc3Qgc3RydWN0dXJlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMzYyIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSAzNjggb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJpbnQgbmV0c25tcF90ZGF0YV9yZWdpc3RlciAoXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqIHJlZ2luZm8sIFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90YWJsZV9yZWdpc3RyYXRpb25faW5mb1xmUCAqIHRhYmxlX2luZm8pIgogLlBQCiByZWdpc3RlcnMgYSB0ZGF0YS1iYXNlZCBNSUIgdGFibGUgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzNTEgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDM1MCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgInZvaWQqIG5ldHNubXBfdGRhdGFfcmVtb3ZlX2FuZF9kZWxldGVfcm93IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogcmVtb3ZlcyBhbmQgZnJlZXMgYSByb3cgb2YgdGhlIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIHRoZSB0YWJsZS1zcGVjaWZpYyBlbnRyeSBkYXRhIHJldHVybnMgdGhlIHZvaWQgKiBwb2ludGVyIG9uIHN1Y2Nlc3NmdWwgZGVsZXRpb24uIG9yIE5VTEwgb24gZmFpbHVyZSAoYmFkIGFyZ3VtZW50cykgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNjAgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI1OSBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3JlbW92ZV9yb3cgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiByb3cpIgogLlBQCiByZW1vdmVzIGEgcm93IGZyb20gdGhlIGdpdmVuIHRhYmxlIGFuZCByZXR1cm5zIGl0IChubyBmcmVlJ3MgY2FsbGVkKSByZXR1cm5zIHRoZSByb3cgcG9pbnRlciBpdHNlbGYgb24gc3VjY2Vzc2Z1bCByZW1vdmluZy4gb3IgTlVMTCBvbiBmYWlsdXJlIChiYWQgYXJndW1lbnRzKSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDI0MiBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjQxIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCBuZXRzbm1wX3RkYXRhX3JlcGxhY2Vfcm93IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogb3JpZ3JvdywgXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAgKiBuZXdyb3cpIgogLlBQCiBzd2FwcyBvdXQgb3JpZ3JvdyB3aXRoIG5ld3Jvdy4gVGhpcyBkb2VzICpub3QqIGRlbGV0ZS9mcmVlIGFueXRoaW5nISAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIyNyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMjI2IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAidm9pZCogbmV0c25tcF90ZGF0YV9yb3dfZW50cnkgKFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogcmV0dXJucyB0aGUgKHRhYmxlLXNwZWNpZmljKSBlbnRyeSBkYXRhIGZvciBhIGdpdmVuIHJvdyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDQxNCBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNDIwIG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KIC5TUyAiXGZCbmV0c25tcF90ZGF0YV9yb3dcZlAqIG5ldHNubXBfdGRhdGFfcm93X2ZpcnN0IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUpIgogLlBQCiByZXR1cm5zIHRoZSBmaXJzdCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDI0IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0MzAgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9yb3dfZ2V0IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogZmluZHMgYSByb3cgaW4gdGhlICd0ZGF0YScgdGFibGUgZ2l2ZW4gYW5vdGhlciByb3cgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0MzEgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQzNyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19nZXRfYnlpZHggKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgXGZCbmV0c25tcF92YXJpYWJsZV9saXN0XGZQICogaW5kZXhlcykiCiAuUFAKIGZpbmRzIGEgcm93IGluIHRoZSAndGRhdGEnIHRhYmxlIGdpdmVuIHRoZSBpbmRleCB2YWx1ZXMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NDcgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ1MyBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19nZXRfYnlvaWQgKFxmQm5ldHNubXBfdGRhdGFcZlAgKiB0YWJsZSwgb2lkICogc2VhcmNoZm9yLCBzaXplX3Qgc2VhcmNoZm9yX2xlbikiCiAuUFAKIGZpbmRzIGEgcm93IGluIHRoZSAndGRhdGEnIHRhYmxlIGdpdmVuIHRoZSBpbmRleCBPSUQgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0NjAgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ2NiBvZiBmaWxlIHRhYmxlX3RkYXRhLmMuCiAuU1MgIlxmQm5ldHNubXBfdGRhdGFfcm93XGZQKiBuZXRzbm1wX3RkYXRhX3Jvd19uZXh0IChcZkJuZXRzbm1wX3RkYXRhXGZQICogdGFibGUsIFxmQm5ldHNubXBfdGRhdGFfcm93XGZQICogcm93KSIKIC5QUAogcmV0dXJucyB0aGUgbmV4dCByb3cgaW4gdGhlIHRhYmxlIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDM5IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0NDUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9yb3dfbmV4dF9ieWlkeCAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBcZkJuZXRzbm1wX3ZhcmlhYmxlX2xpc3RcZlAgKiBpbmRleGVzKSIKIC5QUAogZmluZHMgdGhlIGxleGljYWxseSBuZXh0IHJvdyBpbiB0aGUgJ3RkYXRhJyB0YWJsZSBnaXZlbiB0aGUgaW5kZXggdmFsdWVzIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDc1IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0ODEgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNTICJcZkJuZXRzbm1wX3RkYXRhX3Jvd1xmUCogbmV0c25tcF90ZGF0YV9yb3dfbmV4dF9ieW9pZCAoXGZCbmV0c25tcF90ZGF0YVxmUCAqIHRhYmxlLCBvaWQgKiBzZWFyY2hmb3IsIHNpemVfdCBzZWFyY2hmb3JfbGVuKSIKIC5QUAogZmluZHMgdGhlIGxleGljYWxseSBuZXh0IHJvdyBpbiB0aGUgJ3RkYXRhJyB0YWJsZSBnaXZlbiB0aGUgaW5kZXggT0lEIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDg5IG9mIGZpbGUgdGFibGVfdGRhdGEuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0OTUgb2YgZmlsZSB0YWJsZV90ZGF0YS5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3Rvb2xzLmguMyBiL21hbi9uZXRzbm1wX3Rvb2xzLmguMwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDBlZWMwCi0tLSAvZGV2L251bGwKKysrIGIvbWFuL25ldHNubXBfdG9vbHMuaC4zCkBAIC0wLDAgKzEsMjM5IEBACisuVEggInRvb2xzLmgiIDMgIjMxIE1heSAyMDEyIiAiVmVyc2lvbiA1LjUuMi5yYzIiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLmFkIGwKKy5uaAorLlNIIE5BTUUKK3Rvb2xzLmggXC0gCisuU0ggU1lOT1BTSVMKKy5icgorLlBQCitcZkMjaW5jbHVkZSA8aW50dHlwZXMuaD5cZlAKKy5icgorCisuU1MgIkRlZmluZXMiCisKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BWFBBVEhcZlAgICBQQVRIX01BWCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYQlVGXGZQICAgKDEwMjQgKiA0KSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYQlVGX01FRElVTVxmUCAgIDEwMjQiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BWEJVRl9TTUFMTFxmUCAgIDUxMiIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYQlVGX01FU1NBR0VcZlAgICAxNTAwIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQVhPSURcZlAgICA2NCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFYX0NNRExJTkVfT0lEU1xmUCAgIDEyOCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfRklMRU1PREVfQ0xPU0VEXGZQICAgMDYwMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfRklMRU1PREVfT1BFTlxmUCAgIDA2NDQiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJCWVRFU0laRVxmUChiaXRzaXplKSAgICgoYml0c2l6ZSArIDcpID4+IDMpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCUk9VTkRVUDhcZlAoeCkgICAoICggKHgrNykgPj4gMyApICogOCApIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9TVFJPUk5VTExcZlAoeCkgICAoIHggPyB4IDogJyhudWxsKScpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9GUkVFXGZQKHMpICAgZG8geyBpZiAocykgeyBmcmVlKCh2b2lkICopcyk7IHM9TlVMTDsgfSB9IHdoaWxlKDApIgorLmJyCisuUkkgIlxmSUZyZWVzIGEgcG9pbnRlciBvbmx5IGlmIGl0IGlzICFOVUxMIGFuZCBzZXRzIGl0cyB2YWx1ZSB0byBOVUxMLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9TV0lQRV9NRU1cZlAobiwgcykgICBkbyB7IGlmIChuKSBmcmVlKCh2b2lkICopbik7IG4gPSBzOyBzPU5VTEw7IH0gd2hpbGUoMCkiCisuYnIKKy5SSSAiXGZJRnJlZXMgcG9pbnRlciBuIG9ubHkgaWYgaXQgaXMgIU5VTEwsIHNldHMgbiB0byBzIGFuZCBzZXRzIHMgdG8gTlVMTC4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFMTE9DX1NUUlVDVFxmUChzKSAgIChzdHJ1Y3QgcyAqKSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzKSkiCisuYnIKKy5SSSAiXGZJTWFsbG9jcyBtZW1vcnkgb2Ygc2l6ZW9mKHN0cnVjdCBzKSwgemVyb3MgaXQgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NQUxMT0NfVFlQRURFRlxmUCh0ZCkgICAodGQgKikgY2FsbG9jKDEsIHNpemVvZih0ZCkpIgorLmJyCisuUkkgIlxmSU1hbGxvY3MgbWVtb3J5IG9mIHNpemVvZih0KSwgemVyb3MgaXQgYW5kIHJldHVybnMgYSBwb2ludGVyIHRvIGl0LiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9aRVJPXGZQKHMsIGwpICAgZG8geyBpZiAocykgbWVtc2V0KHMsIDAsIGwpOyB9IHdoaWxlKDApIgorLmJyCisuUkkgIlxmSVplcm9zIGwgYnl0ZXMgb2YgbWVtb3J5IHN0YXJ0aW5nIGF0IHMuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJORVRTTk1QX1JFTU9WRV9DT05TVFxmUCh0LCBlKSAgICgodCkodWludHB0cl90KShlKSkiCisuYnIKKy5SSSAiXGZJQ2FzdCBhd2F5IGNvbnN0bmVzcyB3aXRob3V0IHRoYXQgZ2NjIC1XY2FzdC1xdWFsIHByaW50cyBhIGNvbXBpbGVyIHdhcm5pbmcsIHNpbWlsYXIgdG8gY29uc3RfY2FzdDw+IGluIEMrKy4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlRPVVBQRVJcZlAoYykgICAoYyA+PSAnYScgJiYgYyA8PSAneicgPyBjIC0gKCdhJyAtICdBJykgOiBjKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlRPTE9XRVJcZlAoYykgICAoYyA+PSAnQScgJiYgYyA8PSAnWicgPyBjICsgKCdhJyAtICdBJykgOiBjKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkhFWDJWQUxcZlAocykgICAoKGlzYWxwaGEocykgPyAoVE9MT1dFUihzKS0nYScrMTApIDogKFRPTE9XRVIocyktJzAnKSkgJiAweGYpIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCVkFMMkhFWFxmUChzKSAgICggKHMpICsgKCgocykgPj0gMTApID8gKCdhJy0xMCkgOiAnMCcpICkiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BWFxmUChhLCBiKSAgICgoYSkgPiAoYikgPyAoYSkgOiAoYikpIgorLmJyCisuUkkgIlxmSUNvbXB1dGVycyB0aGUgbWF4aW11bSBvZiBhIGFuZCBiLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCU05NUF9NSU5cZlAoYSwgYikgICAoKGEpID4gKGIpID8gKGIpIDogKGEpKSIKKy5icgorLlJJICJcZklDb21wdXRlcnMgdGhlIG1pbmltdW0gb2YgYSBhbmQgYi4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQlNOTVBfTUFDUk9fVkFMX1RPX1NUUlxmUChzKSAgIFNOTVBfTUFDUk9fVkFMX1RPX1NUUl9QUklWKHMpIgorLmJyCisuUkkgIlxmSUV4cGFuZHMgdG8gc3RyaW5nIHdpdGggdmFsdWUgb2YgdGhlIHMuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJTTk1QX01BQ1JPX1ZBTF9UT19TVFJfUFJJVlxmUChzKSAgICNzIgorLmJyCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCUVVJVEZVTlxmUChlLCBsKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkRJRkZUSU1FVkFMXGZQKG5vdywgdGhlbiwgZGlmZikiCisuYnIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk1cZlAgICAxMCIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQklTVFJBTlNGT1JNXGZQKHR0eXBlLCB0b2lkKSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkVOR0lORVRJTUVfTUFYXGZQICAgMjE0NzQ4MzY0NyIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQkVOR0lORUJPT1RfTUFYXGZQICAgMjE0NzQ4MzY0NyIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQnNubXBfY3N0cmNhdFxmUChiLCBsLCBvLCBhLCBzKSAgIHNubXBfc3RyY2F0KGIsbCxvLGEsKGNvbnN0IHVfY2hhciAqKXMpIgorLmJyCisuaW4gLTFjCisuU1MgIlR5cGVkZWZzIgorCisuaW4gKzFjCisudGkgLTFjCisuUkkgInR5cGVkZWYgdm9pZCAqIFxmQm1hcmtlcl90XGZQIgorLmJyCisuaW4gLTFjCisuU1MgIkZ1bmN0aW9ucyIKKworLmluICsxYworLnRpIC0xYworLlJJICJpbnQgXGZCc25tcF9yZWFsbG9jXGZQICh1X2NoYXIgKipidWYsIHNpemVfdCAqYnVmX2xlbikiCisuYnIKKy5SSSAiXGZJVGhpcyBmdW5jdGlvbiBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIHBvaW50ZWQgYXQgYnkgKmJ1Ziwgd2hpY2ggaXMgaW5pdGlhbGx5IG9mIHNpemUgKmJ1Zl9sZW4uIFxmUCIKKy50aSAtMWMKKy5SSSAidm9pZCBcZkJmcmVlX3plcm9cZlAgKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUpIgorLmJyCisuUkkgIlxmSXplcm9zIG1lbW9yeSBiZWZvcmUgZnJlZWluZyBpdC4gXGZQIgorLnRpIC0xYworLlJJICJ1X2NoYXIgKiBcZkJtYWxsb2NfcmFuZG9tXGZQIChzaXplX3QgKnNpemUpIgorLmJyCisuUkkgIlxmSVJldHVybnMgcG9pbnRlciB0byBhbGxvY2FlZCAmIHNldCBidWZmZXIgb24gc3VjY2Vzcywgc2l6ZSBjb250YWlucyBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIGZpbGxlZC4gXGZQIgorLnRpIC0xYworLlJJICJ1X2NoYXIgKiBcZkJtYWxsb2NfemVyb1xmUCAoc2l6ZV90IHNpemUpIgorLmJyCisudGkgLTFjCisuUkkgImludCBcZkJtZW1kdXBcZlAgKHVfY2hhciAqKnRvLCBjb25zdCB2b2lkICpmcm9tLCBzaXplX3Qgc2l6ZSkiCisuYnIKKy5SSSAiXGZJRHVwbGljYXRlcyBhIG1lbW9yeSBibG9jay4gXGZQIgorLnRpIC0xYworLlJJICJ1X2ludCBcZkJiaW5hcnlfdG9faGV4XGZQIChjb25zdCB1X2NoYXIgKmlucHV0LCBzaXplX3QgbGVuLCBjaGFyICoqb3V0cHV0KSIKKy5icgorLlJJICJcZkljb252ZXJ0cyBiaW5hcnkgdG8gaGV4aWRlY2ltYWwgXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCbmV0c25tcF9oZXhfdG9fYmluYXJ5XGZQICh1X2NoYXIgKipidWYsIHNpemVfdCAqYnVmX2xlbiwgc2l6ZV90ICpvZmZzZXQsIGludCBhbGxvd19yZWFsbG9jLCBjb25zdCBjaGFyICpoZXgsIGNvbnN0IGNoYXIgKmRlbGltKSIKKy5icgorLlJJICJcZkljb252ZXJ0IGFuIEFTQ0lJIGhleCBzdHJpbmcgKHdpdGggc3BlY2lmaWVkIGRlbGltaXRlcnMpIHRvIGJpbmFyeSBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJzbm1wX2hleF90b19iaW5hcnlcZlAgKHVfY2hhciAqKmJ1Ziwgc2l6ZV90ICpidWZfbGVuLCBzaXplX3QgKm9mZnNldCwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IGNoYXIgKmhleCkiCisuYnIKKy5SSSAiXGZJY29udmVydCBhbiBBU0NJSSBoZXggc3RyaW5nIHRvIGJpbmFyeSBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJoZXhfdG9fYmluYXJ5MlxmUCAoY29uc3QgdV9jaGFyICppbnB1dCwgc2l6ZV90IGxlbiwgY2hhciAqKm91dHB1dCkiCisuYnIKKy5SSSAiXGZJaGV4X3RvX2JpbmFyeTIgXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCc25tcF9kZWNpbWFsX3RvX2JpbmFyeVxmUCAodV9jaGFyICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4sIHNpemVfdCAqb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IGNoYXIgKmRlY2ltYWwpIgorLmJyCisudGkgLTFjCisuUkkgImludCBcZkJzbm1wX3N0cmNhdFxmUCAodV9jaGFyICoqYnVmLCBzaXplX3QgKmJ1Zl9sZW4sIHNpemVfdCAqb3V0X2xlbiwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IHVfY2hhciAqcykiCisuYnIKKy50aSAtMWMKKy5SSSAiY2hhciAqIFxmQm5ldHNubXBfc3RyZHVwX2FuZF9udWxsXGZQIChjb25zdCB1X2NoYXIgKmZyb20sIHNpemVfdCBmcm9tX2xlbikiCisuYnIKKy5SSSAiXGZJY29waWVzIGEgKHBvc3NpYmxlKSB1bnRlcm1pbmF0ZWQgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGludG8gYSBuZXcgYnVmZmVyIGFuZCBudWxsIHRlcm1pbmF0ZXMgaXQgYXMgd2VsbCAobmV3IGJ1ZmZlciBNQVkgYmUgb25lIGJ5dGUgbG9uZ2VyIHRvIGFjY291bnQgZm9yIHRoaXMgXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQmR1bXBfY2h1bmtcZlAgKGNvbnN0IGNoYXIgKmRlYnVndG9rZW4sIGNvbnN0IGNoYXIgKnRpdGxlLCBjb25zdCB1X2NoYXIgKmJ1ZiwgaW50IHNpemUpIgorLmJyCisudGkgLTFjCisuUkkgImNoYXIgKiBcZkJkdW1wX3NubXBFbmdpbmVJRFxmUCAoY29uc3QgdV9jaGFyICpidWYsIHNpemVfdCAqYnVmbGVuKSIKKy5icgorLnRpIC0xYworLlJJICJtYXJrZXJfdCBcZkJhdGltZV9uZXdNYXJrZXJcZlAgKHZvaWQpIgorLmJyCisuUkkgIlxmSWNyZWF0ZSBhIG5ldyB0aW1lIG1hcmtlci4gXGZQIgorLnRpIC0xYworLlJJICJ2b2lkIFxmQmF0aW1lX3NldE1hcmtlclxmUCAobWFya2VyX3QgcG0pIgorLmJyCisuUkkgIlxmSXNldCBhIHRpbWUgbWFya2VyLiBcZlAiCisudGkgLTFjCisuUkkgImxvbmcgXGZCYXRpbWVfZGlmZlxmUCAobWFya2VyX3QgZmlyc3QsIG1hcmtlcl90IHNlY29uZCkiCisuYnIKKy5SSSAiXGZJUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMuIFxmUCIKKy50aSAtMWMKKy5SSSAidV9sb25nIFxmQnVhdGltZV9kaWZmXGZQIChtYXJrZXJfdCBmaXJzdCwgbWFya2VyX3Qgc2Vjb25kKSIKKy5icgorLlJJICJcZklSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiB1X2xvbmcgbXNlYykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMuIFxmUCIKKy50aSAtMWMKKy5SSSAidV9sb25nIFxmQnVhdGltZV9oZGlmZlxmUCAobWFya2VyX3QgZmlyc3QsIG1hcmtlcl90IHNlY29uZCkiCisuYnIKKy5SSSAiXGZJUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gdV9sb25nIDEvMTAwdGggc2VjcykgYmV0d2VlbiB0aGUgdHdvIG1hcmtlcnMgKGZ1bmN0aW9uYWxseSB0aGlzIGlzIHdoYXQgc3lzVXBUaW1lIG5lZWRzKS4gXGZQIgorLnRpIC0xYworLlJJICJpbnQgXGZCYXRpbWVfcmVhZHlcZlAgKG1hcmtlcl90IHBtLCBpbnQgZGVsdGFUKSIKKy5icgorLlJJICJcZklUZXN0OiBIYXMgKG1hcmtlZCB0aW1lIHBsdXMgZGVsdGEpIGV4Y2VlZGVkIGN1cnJlbnQgdGltZSAoaW4gbXNlYykgPyBSZXR1cm5zIDAgaWYgdGVzdCBmYWlscyBvciBjYW5ub3QgYmUgdGVzdGVkIChubyBtYXJrZXIpLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJ1YXRpbWVfcmVhZHlcZlAgKG1hcmtlcl90IHBtLCB1bnNpZ25lZCBpbnQgZGVsdGFUKSIKKy5icgorLlJJICJcZklUZXN0OiBIYXMgKG1hcmtlZCB0aW1lIHBsdXMgZGVsdGEpIGV4Y2VlZGVkIGN1cnJlbnQgdGltZSAoaW4gbXNlYykgPyBSZXR1cm5zIDAgaWYgdGVzdCBmYWlscyBvciBjYW5ub3QgYmUgdGVzdGVkIChubyBtYXJrZXIpLiBcZlAiCisudGkgLTFjCisuUkkgImludCBcZkJtYXJrZXJfdHRpY2tzXGZQIChtYXJrZXJfdCBwbSkiCisuYnIKKy5SSSAiXGZJUmV0dXJuIHRoZSBudW1iZXIgb2YgdGltZVRpY2tzIHNpbmNlIHRoZSBnaXZlbiBtYXJrZXIuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQnRpbWV2YWxfdHRpY2tzXGZQIChzdHJ1Y3QgdGltZXZhbCAqdHYpIgorLmJyCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU1QT1JUIGNoYXIgKiBcZkJuZXRzbm1wX2dldGVudlxmUCAoY29uc3QgY2hhciAqbmFtZSkiCisuYnIKKy5SSSAiXGZJTm9uIFdpbmRvd3M6IFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIG9yIE5VTEwgaWYgdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIGRvZXMgbm90IGV4aXN0LiBcZlAiCisudGkgLTFjCisuUkkgIk5FVFNOTVBfSU1QT1JUIGludCBcZkJuZXRzbm1wX3NldGVudlxmUCAoY29uc3QgY2hhciAqZW52bmFtZSwgY29uc3QgY2hhciAqZW52dmFsLCBpbnQgb3ZlcndyaXRlKSIKKy5icgorLlJJICJcZklTZXQgYW4gZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAuIFxmUCIKKy50aSAtMWMKKy5SSSAiaW50IFxmQm5ldHNubXBfYWRkcnN0cl9odG9uXGZQIChjaGFyICpwdHIsIHNpemVfdCBsZW4pIgorLmJyCisuaW4gLTFjCisuU0ggIkRldGFpbGVkIERlc2NyaXB0aW9uIgorLlBQIAorCisuUFAKK0RlZmluaXRpb24gaW4gZmlsZSBcZkJ0b29scy5oXGZQLgorLlNIICJBdXRob3IiCisuUFAgCitHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3V0aWwuMyBiL21hbi9uZXRzbm1wX3V0aWwuMwppbmRleCBjMDQ2ZDkwLi5mNjcwNjNjIDEwMDY0NAotLS0gYS9tYW4vbmV0c25tcF91dGlsLjMKKysrIGIvbWFuL25ldHNubXBfdXRpbC4zCkBAIC0xLDQgKzEsNCBAQAotLlRIICJNZW1vcnkgVXRpbGl0eSBSb3V0aW5lcyIgMyAiMjQgSnVuIDIwMTEiICJWZXJzaW9uIDUuNC4zLnByZTEiICJuZXQtc25tcCIgXCIgLSotIG5yb2ZmIC0qLQorLlRIICJNZW1vcnkgVXRpbGl0eSBSb3V0aW5lcyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtNjMsNiArNjMsMTAgQEAKIC5icgogLlJJICJcZklaZXJvcyBsIGJ5dGVzIG9mIG1lbW9yeSBzdGFydGluZyBhdCBzLiBcZlAiCiAudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCTkVUU05NUF9SRU1PVkVfQ09OU1RcZlAodCwgZSkgICAoKHQpKHVpbnRwdHJfdCkoZSkpIgorLmJyCisuUkkgIlxmSUNhc3QgYXdheSBjb25zdG5lc3Mgd2l0aG91dCB0aGF0IGdjYyAtV2Nhc3QtcXVhbCBwcmludHMgYSBjb21waWxlciB3YXJuaW5nLCBzaW1pbGFyIHRvIGNvbnN0X2Nhc3Q8PiBpbiBDKysuIFxmUCIKKy50aSAtMWMKIC5SSSAiI2RlZmluZSBcZkJUT1VQUEVSXGZQKGMpICAgKGMgPj0gJ2EnICYmIGMgPD0gJ3onID8gYyAtICgnYScgLSAnQScpIDogYykiCiAuYnIKIC50aSAtMWMKQEAgLTEzNyw3ICsxNDEsNyBAQAogLlJJICJ1X2NoYXIgKiBcZkJtYWxsb2NfemVyb1xmUCAoc2l6ZV90IHNpemUpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJtZW1kdXBcZlAgKHVfY2hhciAqKnRvLCBjb25zdCB1X2NoYXIgKmZyb20sIHNpemVfdCBzaXplKSIKKy5SSSAiaW50IFxmQm1lbWR1cFxmUCAodV9jaGFyICoqdG8sIGNvbnN0IHZvaWQgKmZyb20sIHNpemVfdCBzaXplKSIKIC5icgogLlJJICJcZklEdXBsaWNhdGVzIGEgbWVtb3J5IGJsb2NrLiBcZlAiCiAudGkgLTFjCkBAIC0yMDgsMTAgKzIxMiwxNCBAQAogLlJJICJpbnQgXGZCdGltZXZhbF90dGlja3NcZlAgKHN0cnVjdCB0aW1ldmFsICp0dikiCiAuYnIKIC50aSAtMWMKLS5SSSAiY2hhciAqIFxmQm5ldHNubXBfZ2V0ZW52XGZQIChjb25zdCBjaGFyICpuYW1lKSIKKy5SSSAiTkVUU05NUF9JTVBPUlQgY2hhciAqIFxmQm5ldHNubXBfZ2V0ZW52XGZQIChjb25zdCBjaGFyICpuYW1lKSIKIC5icgogLlJJICJcZklOb24gV2luZG93czogUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGRlc2lyZWQgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgb3IgTlVMTCBpZiB0aGUgZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgZG9lcyBub3QgZXhpc3QuIFxmUCIKIC50aSAtMWMKKy5SSSAiTkVUU05NUF9JTVBPUlQgaW50IFxmQm5ldHNubXBfc2V0ZW52XGZQIChjb25zdCBjaGFyICplbnZuYW1lLCBjb25zdCBjaGFyICplbnZ2YWwsIGludCBvdmVyd3JpdGUpIgorLmJyCisuUkkgIlxmSVNldCBhbiBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUC4gXGZQIgorLnRpIC0xYwogLlJJICJpbnQgXGZCbmV0c25tcF9hZGRyc3RyX2h0b25cZlAgKGNoYXIgKnB0ciwgc2l6ZV90IGxlbikiCiAuYnIKIC5pbiAtMWMKQEAgLTIyMCw3ICsyMjgsNyBAQAogLlNTICIjZGVmaW5lIERJRkZUSU1FVkFMKG5vdywgdGhlbiwgZGlmZikiXGZCVmFsdWU6XGZQCiAuUFAKIC5uZgoteyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCit7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIG5vdy50dl9zZWMtLTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICAgICAgbm93LnR2X3VzZWMgKz0gMTAwMDAwMEw7ICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICBkaWZmLnR2X3NlYyAgPSBub3cudHZfc2VjICAtIHRoZW4udHZfc2VjOyAgICAgICBcCkBAIC0yMzIsNyArMjQwLDcgQEAKIH0KIC5maQogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTMxIG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNTIgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIElTVFJBTlNGT1JNKHR0eXBlLCB0b2lkKSJcZkJWYWx1ZTpcZlAKIC5QUAogLm5mCkBAIC0yNDAsNzkgKzI0OCw5MSBAQAogICAgICAgICAgICAgICAgIHVzbSAjIyB0b2lkICMjIFByb3RvY29sLCBVU01fTEVOR1RIX09JRF9UUkFOU0ZPUk0pCiAuZmkKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDE1MCBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTcxIG9mIGZpbGUgdG9vbHMuaC4KKy5TUyAiI2RlZmluZSBORVRTTk1QX1JFTU9WRV9DT05TVCh0LCBlKSAgICgodCkodWludHB0cl90KShlKSkiCisuUFAKK0Nhc3QgYXdheSBjb25zdG5lc3Mgd2l0aG91dCB0aGF0IGdjYyAtV2Nhc3QtcXVhbCBwcmludHMgYSBjb21waWxlciB3YXJuaW5nLCBzaW1pbGFyIHRvIGNvbnN0X2Nhc3Q8PiBpbiBDKysuIFxmQlBhcmFtZXRlcnM6XGZQCisuUlMgNAorXGZJdFxmUCBBIHBvaW50ZXIgdHlwZS4gCisuYnIKK1xmSWVcZlAgQW4gZXhwcmVzc2lvbiBvZiBhIHR5cGUgdGhhdCBjYW4gYmUgYXNzaWduZWQgdG8gdGhlIHR5cGUgKGNvbnN0IHQpLiAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDkyIG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBRVUlURlVOKGUsIGwpIlxmQlZhbHVlOlxmUAogLlBQCiAubmYKLWlmICggKGUpICE9IFNOTVBFUlJfU1VDQ0VTUykgeyAgIFwKK2lmICggKGUpICE9IFNOTVBFUlJfU1VDQ0VTUykgeyAgICAgXAogICAgICAgICAgICAgICAgIHJ2YWwgPSBTTk1QRVJSX0dFTkVSUjsgIFwKICAgICAgICAgICAgICAgICBnb3RvIGwgOyAgICAgICAgICAgICAgICBcCiAgICAgICAgIH0KIC5maQogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMTE4IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMzkgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfRlJFRShzKSAgIGRvIHsgaWYgKHMpIHsgZnJlZSgodm9pZCAqKXMpOyBzPU5VTEw7IH0gfSB3aGlsZSgwKSIKIC5QUAogRnJlZXMgYSBwb2ludGVyIG9ubHkgaWYgaXQgaXMgIU5VTEwgYW5kIHNldHMgaXRzIHZhbHVlIHRvIE5VTEwuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTMgb2YgZmlsZSB0b29scy5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDU3IG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX01BQ1JPX1ZBTF9UT19TVFIocykgICBTTk1QX01BQ1JPX1ZBTF9UT19TVFJfUFJJVihzKSIKIC5QUAotRXhwYW5kcyB0byBzdHJpbmcgd2l0aCB2YWx1ZSBvZiB0aGUgcy4gSWYgcyBpcyBtYWNybywgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgdmFsdWUgb2YgdGhlIG1hY3JvLiBFeGFtcGxlOiBkZWZpbmUgVEVTVCAxMjM0IFxmQlNOTVBfTUFDUk9fVkFMX1RPX1NUUihURVNUKVxmUCBleHBhbmRzIHRvICcxMjM0JyBTTk1QX01BQ1JPX1ZBTF9UT19TVFIoVEVTVCsxKSBleHBhbmRzIHRvICcxMjM0KzEnIAorRXhwYW5kcyB0byBzdHJpbmcgd2l0aCB2YWx1ZSBvZiB0aGUgcy4gSWYgcyBpcyBtYWNybywgdGhlIHJlc3VsdGluZyBzdHJpbmcgaXMgdmFsdWUgb2YgdGhlIG1hY3JvLiBFeGFtcGxlOiAjZGVmaW5lIFRFU1QgMTIzNCBcZkJTTk1QX01BQ1JPX1ZBTF9UT19TVFIoVEVTVClcZlAgZXhwYW5kcyB0byAnMTIzNCcgU05NUF9NQUNST19WQUxfVE9fU1RSKFRFU1QrMSkgZXhwYW5kcyB0byAnMTIzNCsxJyAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDk5IG9mIGZpbGUgdG9vbHMuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxMjAgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfTUFMTE9DX1NUUlVDVChzKSAgIChzdHJ1Y3QgcyAqKSBjYWxsb2MoMSwgc2l6ZW9mKHN0cnVjdCBzKSkiCiAuUFAKIE1hbGxvY3MgbWVtb3J5IG9mIHNpemVvZihzdHJ1Y3QgcyksIHplcm9zIGl0IGFuZCByZXR1cm5zIGEgcG9pbnRlciB0byBpdC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA2NCBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNjggb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfTUFMTE9DX1RZUEVERUYodGQpICAgKHRkICopIGNhbGxvYygxLCBzaXplb2YodGQpKSIKIC5QUAogTWFsbG9jcyBtZW1vcnkgb2Ygc2l6ZW9mKHQpLCB6ZXJvcyBpdCBhbmQgcmV0dXJucyBhIHBvaW50ZXIgdG8gaXQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNjggb2YgZmlsZSB0b29scy5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDcyIG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX01BWChhLCBiKSAgICgoYSkgPiAoYikgPyAoYSkgOiAoYikpIgogLlBQCiBDb21wdXRlcnMgdGhlIG1heGltdW0gb2YgYSBhbmQgYi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NSBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTA2IG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX01JTihhLCBiKSAgICgoYSkgPiAoYikgPyAoYikgOiAoYSkpIgogLlBQCiBDb21wdXRlcnMgdGhlIG1pbmltdW0gb2YgYSBhbmQgYi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4OSBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTEwIG9mIGZpbGUgdG9vbHMuaC4KIC5TUyAiI2RlZmluZSBTTk1QX1NXSVBFX01FTShuLCBzKSAgIGRvIHsgaWYgKG4pIGZyZWUoKHZvaWQgKiluKTsgbiA9IHM7IHM9TlVMTDsgfSB3aGlsZSgwKSIKIC5QUAogRnJlZXMgcG9pbnRlciBuIG9ubHkgaWYgaXQgaXMgIU5VTEwsIHNldHMgbiB0byBzIGFuZCBzZXRzIHMgdG8gTlVMTC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NyBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNjEgb2YgZmlsZSB0b29scy5oLgogLlNTICIjZGVmaW5lIFNOTVBfWkVSTyhzLCBsKSAgIGRvIHsgaWYgKHMpIG1lbXNldChzLCAwLCBsKTsgfSB3aGlsZSgwKSIKIC5QUAogWmVyb3MgbCBieXRlcyBvZiBtZW1vcnkgc3RhcnRpbmcgYXQgcy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3MiBvZiBmaWxlIHRvb2xzLmguCitEZWZpbml0aW9uIGF0IGxpbmUgNzYgb2YgZmlsZSB0b29scy5oLgogLlNIICJGdW5jdGlvbiBEb2N1bWVudGF0aW9uIgogLlBQIAogLlNTICJsb25nIGF0aW1lX2RpZmYgKG1hcmtlcl90IGZpcnN0LCBtYXJrZXJfdCBzZWNvbmQpIgogLlBQCiBSZXR1cm5zIHRoZSBkaWZmZXJlbmNlIChpbiBtc2VjKSBiZXR3ZWVuIHRoZSB0d28gbWFya2Vycy4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA3OTggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDgwMyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgIm1hcmtlcl90IGF0aW1lX25ld01hcmtlciAodm9pZCkiCiAuUFAKIGNyZWF0ZSBhIG5ldyB0aW1lIG1hcmtlci4gTk9URTogQ2FsbGVyIG11c3QgZnJlZSB0aW1lIG1hcmtlciB3aGVuIG5vIGxvbmdlciBuZWVkZWQuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNzc0IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA3Nzkgb2YgZmlsZSB0b29scy5jLgogLlNTICJpbnQgYXRpbWVfcmVhZHkgKG1hcmtlcl90IHBtLCBpbnQgZGVsdGFUKSIKIC5QUAogVGVzdDogSGFzIChtYXJrZWQgdGltZSBwbHVzIGRlbHRhKSBleGNlZWRlZCBjdXJyZW50IHRpbWUgKGluIG1zZWMpID8gUmV0dXJucyAwIGlmIHRlc3QgZmFpbHMgb3IgY2Fubm90IGJlIHRlc3RlZCAobm8gbWFya2VyKS4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA4NTMgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDg1OCBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgInZvaWQgYXRpbWVfc2V0TWFya2VyIChtYXJrZXJfdCBwbSkiCiAuUFAKIHNldCBhIHRpbWUgbWFya2VyLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDc4NSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgNzkwIG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidV9pbnQgYmluYXJ5X3RvX2hleCAoY29uc3QgdV9jaGFyICogaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKiogb3V0cHV0KSIKIC5QUAogY29udmVydHMgYmluYXJ5IHRvIGhleGlkZWNpbWFsIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0zMzEsNyArMzUxLDcgQEAKIC5QUAogRklYIElzIHRoZXJlIGFscmVhZHkgb25lIG9mIHRoZXNlIGluIHRoZSBVQ0QgU05NUCBjb2RlYmFzZT8gVGhlIG9sZCBvbmUgc2hvdWxkIGJlIHVzZWQsIG9yIHRoaXMgb25lIHNob3VsZCBiZSBtb3ZlZCB0byBcZkJzbm1wbGliL3NubXBfYXBpLmNcZlAuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgMjkwIG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSAyOTkgb2YgZmlsZSB0b29scy5jLgogLlNTICJ2b2lkIGZyZWVfemVybyAodm9pZCAqIGJ1Ziwgc2l6ZV90IHNpemUpIgogLlBQCiB6ZXJvcyBtZW1vcnkgYmVmb3JlIGZyZWVpbmcgaXQuIFxmQlBhcmFtZXRlcnM6XGZQCkBAIC0zNDMsNyArMzYzLDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAxODggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE5NyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBoZXhfdG9fYmluYXJ5MiAoY29uc3QgdV9jaGFyICogaW5wdXQsIHNpemVfdCBsZW4sIGNoYXIgKiogb3V0cHV0KSIKIC5QUAogaGV4X3RvX2JpbmFyeTIgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTM2NCw3ICszODQsNyBAQAogLlBQCiBGSVggQW5vdGhlciB2ZXJzaW9uIG9mICdoZXgtdG8tYmluYXJ5JyB3aGljaCB0YWtlcyBvZGQgbGVuZ3RoIGlucHV0IHN0cmluZ3MuIEl0IGFsc28gYWxsb2NhdGVzIHRoZSBtZW1vcnkgdG8gaG9sZCB0aGUgYmluYXJ5IGRhdGEuIFNob3VsZCBiZSBpbnRlZ3JhdGVkIHdpdGggdGhlIG9mZmljaWFsIGhleF90b19iaW5hcnkoKSBmdW5jdGlvbi4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAzMjcgb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDMzNiBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgInVfY2hhciogbWFsbG9jX3JhbmRvbSAoc2l6ZV90ICogc2l6ZSkiCiAuUFAKIFJldHVybnMgcG9pbnRlciB0byBhbGxvY2FlZCAmIHNldCBidWZmZXIgb24gc3VjY2Vzcywgc2l6ZSBjb250YWlucyBudW1iZXIgb2YgcmFuZG9tIGJ5dGVzIGZpbGxlZC4gYnVmIGlzIE5VTEwgYW5kICpzaXplIHNldCB0byBLTVQgZXJyb3IgdmFsdWUgdXBvbiBmYWlsdXJlLgpAQCAtMzgxLDEyICs0MDEsMTIgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyMDggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDIxNyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBtYXJrZXJfdHRpY2tzIChtYXJrZXJfdCBwbSkiCiAuUFAKIFJldHVybiB0aGUgbnVtYmVyIG9mIHRpbWVUaWNrcyBzaW5jZSB0aGUgZ2l2ZW4gbWFya2VyLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkwMSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTA2IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidm9pZCAqIG5ldHNubXBfbWVtZHVwIChjb25zdCB2b2lkICogZnJvbSwgc2l6ZV90IHNpemUpIgogLlBQCiBEdXBsaWNhdGVzIGEgbWVtb3J5IGJsb2NrLiBDb3BpZXMgYSBleGlzdGluZyBtZW1vcnkgbG9jYXRpb24gZnJvbSBhIHBvaW50ZXIgdG8gYW5vdGhlciwgbmV3bHkgbWFsbG9jZWQsIHBvaW50ZXIuCkBAIC00MDcsMTIgKzQyNywxMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDIzOSBvZiBmaWxlIHRvb2xzLmMuCi0uU1MgImNoYXIqIG5ldHNubXBfZ2V0ZW52IChjb25zdCBjaGFyICogbmFtZSkiCitEZWZpbml0aW9uIGF0IGxpbmUgMjQ4IG9mIGZpbGUgdG9vbHMuYy4KKy5TUyAiTkVUU05NUF9JTVBPUlQgY2hhciogbmV0c25tcF9nZXRlbnYgKGNvbnN0IGNoYXIgKiBuYW1lKSIKIC5QUAogTm9uIFdpbmRvd3M6IFJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBkZXNpcmVkIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIG9yIE5VTEwgaWYgdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQIGRvZXMgbm90IGV4aXN0LiBXaW5kb3dzOiBSZXR1cm5zIGEgcG9pbnRlciB0byB0aGUgZGVzaXJlZCBlbnZpcm9ubWVudCBcZkJ2YXJpYWJsZVxmUCBpZiBpdCBleGlzdHMuIElmIGl0IGRvZXMgbm90LCB0aGUgXGZCdmFyaWFibGVcZlAgaXMgbG9va2VkIHVwIGluIHRoZSByZWdpc3RyeSBpbiBIS0NVXFxOZXQtU05NUCBvciBIS0xNXFxOZXQtU05NUCAod2hpY2hldmVyIGl0IGZpbmRzIGZpcnN0KSBhbmQgc3RvcmVzIHRoZSByZXN1bHQgaW4gdGhlIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQLiBJdCB0aGVuIHJldHVybnMgYSBwb2ludGVyIHRvIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDkyOSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgOTM0IG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAiaW50IG5ldHNubXBfaGV4X3RvX2JpbmFyeSAodV9jaGFyICoqIGJ1Ziwgc2l6ZV90ICogYnVmX2xlbiwgc2l6ZV90ICogb2Zmc2V0LCBpbnQgYWxsb3dfcmVhbGxvYywgY29uc3QgY2hhciAqIGhleCwgY29uc3QgY2hhciAqIGRlbGltKSIKIC5QUAogY29udmVydCBhbiBBU0NJSSBoZXggc3RyaW5nICh3aXRoIHNwZWNpZmllZCBkZWxpbWl0ZXJzKSB0byBiaW5hcnkgXGZCUGFyYW1ldGVyczpcZlAKQEAgLTQzOSwxMiArNDU5LDE3IEBACiAuUFAKIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNDI4IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA0Mzcgb2YgZmlsZSB0b29scy5jLgorLlNTICJORVRTTk1QX0lNUE9SVCBpbnQgbmV0c25tcF9zZXRlbnYgKGNvbnN0IGNoYXIgKiBlbnZuYW1lLCBjb25zdCBjaGFyICogZW52dmFsLCBpbnQgb3ZlcndyaXRlKSIKKy5QUAorU2V0IGFuIGVudmlyb25tZW50IFxmQnZhcmlhYmxlXGZQLiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgbmVjZXNzYXJ5IG9uIFdpbmRvd3MgZm9yIHRoZSBNU1ZDIGFuZCBNaW5HVyBlbnZpcm9ubWVudHMuIElmIHRoZSBwcm9jZXNzIHRoYXQgdXNlcyB0aGUgTmV0LVNOTVAgRExMIChlLmcuIGEgUGVybCBpbnRlcnByZXRlcikgYW5kIHRoZSBOZXQtU05NUCBoYXZlIGJlZW4gYnVpbHQgd2l0aCBhIGRpZmZlcmVudCBjb21waWxlciB2ZXJzaW9uIHRoZW4gZWFjaCB3aWxsIGhhdmUgYSBzZXBhcmF0ZSBzZXQgb2YgZW52aXJvbm1lbnQgdmFyaWFibGVzLiBUaGlzIGZ1bmN0aW9uIGFsbG93cyB0byBzZXQgYW4gZW52aXJvbm1lbnQgXGZCdmFyaWFibGVcZlAgc3VjaCB0aGF0IGl0IGdldHMgbm90aWNlZCBieSB0aGUgTmV0LVNOTVAgRExMLiAKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDEwNjcgb2YgZmlsZSB0b29scy5jLgogLlNTICJjaGFyKiBuZXRzbm1wX3N0cmR1cF9hbmRfbnVsbCAoY29uc3QgdV9jaGFyICogZnJvbSwgc2l6ZV90IGZyb21fbGVuKSIKIC5QUAogY29waWVzIGEgKHBvc3NpYmxlKSB1bnRlcm1pbmF0ZWQgc3RyaW5nIG9mIGEgZ2l2ZW4gbGVuZ3RoIGludG8gYSBuZXcgYnVmZmVyIGFuZCBudWxsIHRlcm1pbmF0ZXMgaXQgYXMgd2VsbCAobmV3IGJ1ZmZlciBNQVkgYmUgb25lIGJ5dGUgbG9uZ2VyIHRvIGFjY291bnQgZm9yIHRoaXMgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSAyNTggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDI2NyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBzbm1wX2hleF90b19iaW5hcnkgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4sIHNpemVfdCAqIG9mZnNldCwgaW50IGFsbG93X3JlYWxsb2MsIGNvbnN0IGNoYXIgKiBoZXgpIgogLlBQCiBjb252ZXJ0IGFuIEFTQ0lJIGhleCBzdHJpbmcgdG8gYmluYXJ5IFxmQk5vdGU6XGZQCkBAIC00NjMsNyArNDg4LDcgQEAKIC5QUAogCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA0ODggb2YgZmlsZSB0b29scy5jLgorRGVmaW5pdGlvbiBhdCBsaW5lIDQ5NyBvZiBmaWxlIHRvb2xzLmMuCiAuU1MgImludCBzbm1wX3JlYWxsb2MgKHVfY2hhciAqKiBidWYsIHNpemVfdCAqIGJ1Zl9sZW4pIgogLlBQCiBUaGlzIGZ1bmN0aW9uIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCBhdCBieSAqYnVmLCB3aGljaCBpcyBpbml0aWFsbHkgb2Ygc2l6ZSAqYnVmX2xlbi4gQ29udGVudHMgYXJlIHByZXNlcnZlZCAqKkFUIFRIRSBCT1RUT00gRU5EIE9GIFRIRSBCVUZGRVIqKi4gSWYgbWVtb3J5IGNhbiBiZSAocmUtKWFsbG9jYXRlZCB0aGVuIGl0IHJldHVybnMgMSwgZWxzZSBpdCByZXR1cm5zIDAuCkBAIC00ODIsMjIgKzUwNywyMiBAQAogLlBQCiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDEyNCBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgMTMzIG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidV9sb25nIHVhdGltZV9kaWZmIChtYXJrZXJfdCBmaXJzdCwgbWFya2VyX3Qgc2Vjb25kKSIKIC5QUAogUmV0dXJucyB0aGUgZGlmZmVyZW5jZSAoaW4gdV9sb25nIG1zZWMpIGJldHdlZW4gdGhlIHR3byBtYXJrZXJzLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDgxNSBvZiBmaWxlIHRvb2xzLmMuCitEZWZpbml0aW9uIGF0IGxpbmUgODIwIG9mIGZpbGUgdG9vbHMuYy4KIC5TUyAidV9sb25nIHVhdGltZV9oZGlmZiAobWFya2VyX3QgZmlyc3QsIG1hcmtlcl90IHNlY29uZCkiCiAuUFAKIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgKGluIHVfbG9uZyAxLzEwMHRoIHNlY3MpIGJldHdlZW4gdGhlIHR3byBtYXJrZXJzIChmdW5jdGlvbmFsbHkgdGhpcyBpcyB3aGF0IHN5c1VwVGltZSBuZWVkcykuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODMzIG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4Mzggb2YgZmlsZSB0b29scy5jLgogLlNTICJpbnQgdWF0aW1lX3JlYWR5IChtYXJrZXJfdCBwbSwgdW5zaWduZWQgaW50IGRlbHRhVCkiCiAuUFAKIFRlc3Q6IEhhcyAobWFya2VkIHRpbWUgcGx1cyBkZWx0YSkgZXhjZWVkZWQgY3VycmVudCB0aW1lIChpbiBtc2VjKSA/IFJldHVybnMgMCBpZiB0ZXN0IGZhaWxzIG9yIGNhbm5vdCBiZSB0ZXN0ZWQgKG5vIG1hcmtlcikuIAogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgODc1IG9mIGZpbGUgdG9vbHMuYy4KK0RlZmluaXRpb24gYXQgbGluZSA4ODAgb2YgZmlsZSB0b29scy5jLgogLlNIICJBdXRob3IiCiAuUFAgCiBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSBEb3h5Z2VuIGZvciBuZXQtc25tcCBmcm9tIHRoZSBzb3VyY2UgY29kZS4KZGlmZiAtLWdpdCBhL21hbi9uZXRzbm1wX3V0aWxpdGllcy4zIGIvbWFuL25ldHNubXBfdXRpbGl0aWVzLjMKaW5kZXggOTZiZjUzMy4uZGExMDY5NiAxMDA2NDQKLS0tIGEvbWFuL25ldHNubXBfdXRpbGl0aWVzLjMKKysrIGIvbWFuL25ldHNubXBfdXRpbGl0aWVzLjMKQEAgLTEsNCArMSw0IEBACi0uVEggInV0aWxpdHlfaGFuZGxlcnMiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidXRpbGl0eV9oYW5kbGVycyIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zIGIvbWFuL25ldHNubXBfdmFyaWFibGVfbGlzdC4zCmluZGV4IDE4OTdjNWUuLjFhNTg0MWIgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3ZhcmlhYmxlX2xpc3QuMworKysgYi9tYW4vbmV0c25tcF92YXJpYWJsZV9saXN0LjMKQEAgLTEsNCArMSw0IEBACi0uVEggInZhcmlhYmxlX2xpc3QiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAidmFyaWFibGVfbGlzdCIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTAsNyArMTAsNyBAQAogLmJyCiAuUFAKIC5QUAotXGZDI2luY2x1ZGUgPHNubXBfYXBpLmg+XGZQCitcZkMjaW5jbHVkZSA8dHlwZXMuaD5cZlAKIC5TUyAiRGF0YSBGaWVsZHMiCiAKIC5pbiArMWMKQEAgLTY3LDE5ICs2NywxOSBAQAogLlBQCiBcZkJub3RpZmljYXRpb24uY1xmUC4KIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUyOSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTM5IG9mIGZpbGUgdHlwZXMuaC4KIC5TSCAiRmllbGQgRG9jdW1lbnRhdGlvbiIKIC5QUCAKIC5TUyAidV9jaGFyIFxmQnZhcmlhYmxlX2xpc3Q6OmJ1ZlxmUFs0MF0iCiAuUFAKIDkwIHBlcmNlbnRpbGUgPCA0MC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NDUgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE1NSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInZvaWQqIFxmQnZhcmlhYmxlX2xpc3Q6OmRhdGFcZlAiCiAuUFAKIChPcGFxdWUpIGhvb2sgZm9yIGFkZGl0aW9uYWwgZGF0YSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0NyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTU3IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidm9pZCgqIFxmQnZhcmlhYmxlX2xpc3Q6OmRhdGFGcmVlSG9va1xmUCkodm9pZCAqKSIKIC5QUAogY2FsbGJhY2sgdG8gZnJlZSBhYm92ZSAKQEAgLTg3LDIyICs4NywyMiBAQAogLlBQCiBPYmplY3QgaWRlbnRpZmllciBvZiBcZkJ2YXJpYWJsZVxmUC4gCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1MzMgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0MyBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJ2YXJpYWJsZV9saXN0OjpuYW1lX2xlbmd0aFxmUCIKIC5QUAogbnVtYmVyIG9mIHN1YmlkJ3MgaW4gbmFtZSAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzNSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTQ1IG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAib2lkIFxmQnZhcmlhYmxlX2xpc3Q6Om5hbWVfbG9jXGZQW01BWF9PSURfTEVOXSIKIC5QUAogYnVmZmVyIHRvIGhvbGQgdGhlIE9JRCAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDU0MyBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTUzIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAic3RydWN0IFxmQnZhcmlhYmxlX2xpc3RcZlAqIFxmQnZhcmlhYmxlX2xpc3Q6Om5leHRfdmFyaWFibGVcZlBcZkMgW3JlYWRdXGZQIgogLlBQCiBOVUxMIGZvciBsYXN0IFxmQnZhcmlhYmxlXGZQLiAKIC5QUAotRGVmaW5pdGlvbiBhdCBsaW5lIDUzMSBvZiBmaWxlIHNubXBfYXBpLmguCitEZWZpbml0aW9uIGF0IGxpbmUgMTQxIG9mIGZpbGUgdHlwZXMuaC4KIC5TUyAidV9jaGFyIFxmQnZhcmlhYmxlX2xpc3Q6OnR5cGVcZlAiCiAuUFAKIEFTTiB0eXBlIG9mIFxmQnZhcmlhYmxlXGZQLiAKQEAgLTExMSw3ICsxMTEsNyBAQAogLmluICsxYwogXGZCZGVsYXllZF9pbnN0YW5jZS5jXGZQLgogLlBQCi1EZWZpbml0aW9uIGF0IGxpbmUgNTM3IG9mIGZpbGUgc25tcF9hcGkuaC4KK0RlZmluaXRpb24gYXQgbGluZSAxNDcgb2YgZmlsZSB0eXBlcy5oLgogLlNTICJcZkJuZXRzbm1wX3ZhcmRhdGFcZlAgXGZCdmFyaWFibGVfbGlzdDo6dmFsXGZQIgogLlBQCiB2YWx1ZSBvZiBcZkJ2YXJpYWJsZVxmUCAKQEAgLTEyMCwxMiArMTIwLDEyIEBACiAuaW4gKzFjCiBcZkJkZWxheWVkX2luc3RhbmNlLmNcZlAuCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1Mzkgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE0OSBvZiBmaWxlIHR5cGVzLmguCiAuU1MgInNpemVfdCBcZkJ2YXJpYWJsZV9saXN0Ojp2YWxfbGVuXGZQIgogLlBQCiB0aGUgbGVuZ3RoIG9mIHRoZSB2YWx1ZSB0byBiZSBjb3BpZWQgaW50byBidWYgCiAuUFAKLURlZmluaXRpb24gYXQgbGluZSA1NDEgb2YgZmlsZSBzbm1wX2FwaS5oLgorRGVmaW5pdGlvbiBhdCBsaW5lIDE1MSBvZiBmaWxlIHR5cGVzLmguCiAKIC5TSCAiQXV0aG9yIgogLlBQIApkaWZmIC0tZ2l0IGEvbWFuL25ldHNubXBfd2F0Y2hlci4zIGIvbWFuL25ldHNubXBfd2F0Y2hlci4zCmluZGV4IDU1OGY0ZjYuLmRlNTMxNGUgMTAwNjQ0Ci0tLSBhL21hbi9uZXRzbm1wX3dhdGNoZXIuMworKysgYi9tYW4vbmV0c25tcF93YXRjaGVyLjMKQEAgLTEsNCArMSw0IEBACi0uVEggIndhdGNoZXIiIDMgIjI0IEp1biAyMDExIiAiVmVyc2lvbiA1LjQuMy5wcmUxIiAibmV0LXNubXAiIFwiIC0qLSBucm9mZiAtKi0KKy5USCAid2F0Y2hlciIgMyAiMzEgTWF5IDIwMTIiICJWZXJzaW9uIDUuNS4yLnJjMiIgIm5ldC1zbm1wIiBcIiAtKi0gbnJvZmYgLSotCiAuYWQgbAogLm5oCiAuU0ggTkFNRQpAQCAtMTMsNiArMTMsMTUgQEAKIC5SSSAiXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqIFxmQm5ldHNubXBfZ2V0X3dhdGNoZXJfaGFuZGxlclxmUCAodm9pZCkiCiAuYnIKIC50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKiBcZkJuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvNlxmUCAoXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKndpbmZvLCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsIGludCBmbGFncywgc2l6ZV90IG1heF9zaXplLCBzaXplX3QgKnNpemVfcCkiCisuYnIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKiBcZkJuZXRzbm1wX2NyZWF0ZV93YXRjaGVyX2luZm82XGZQICh2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSwgdV9jaGFyIHR5cGUsIGludCBmbGFncywgc2l6ZV90IG1heF9zaXplLCBzaXplX3QgKnNpemVfcCkiCisuYnIKKy50aSAtMWMKKy5SSSAiXGZCbmV0c25tcF93YXRjaGVyX2luZm9cZlAgKiBcZkJuZXRzbm1wX2luaXRfd2F0Y2hlcl9pbmZvXGZQIChcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqd2luZm8sIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplLCB1X2NoYXIgdHlwZSwgaW50IGZsYWdzKSIKKy5icgorLnRpIC0xYwogLlJJICJcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCAqIFxmQm5ldHNubXBfY3JlYXRlX3dhdGNoZXJfaW5mb1xmUCAodm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIHVfY2hhciB0eXBlLCBpbnQgZmxhZ3MpIgogLmJyCiAudGkgLTFjCkBAIC00NiwzMCArNTUsMTA4IEBACiAuUkkgImludCBcZkJuZXRzbm1wX3dhdGNoZWRfc3BpbmxvY2tfaGFuZGxlclxmUCAoXGZCbmV0c25tcF9taWJfaGFuZGxlclxmUCAqaGFuZGxlciwgXGZCbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvblxmUCAqcmVnaW5mbywgXGZCbmV0c25tcF9hZ2VudF9yZXF1ZXN0X2luZm9cZlAgKnJlcWluZm8sIFxmQm5ldHNubXBfcmVxdWVzdF9pbmZvXGZQICpyZXF1ZXN0cykiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfdWxvbmdfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl91bG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCB1X2xvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X3Vsb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9sb25nX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIGxvbmcgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2xvbmdfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKIC5icgogLnRpIC0xYwotLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfbG9uZ19zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBsb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX2ludF9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCiAuYnIKIC50aSAtMWMKLS5SSSAiaW50IFxmQm5ldHNubXBfcmVnaXN0ZXJfcmVhZF9vbmx5X2ludF9zY2FsYXJcZlAgKGNvbnN0IGNoYXIgKm5hbWUsIG9pZCAqcmVnX29pZCwgc2l6ZV90IHJlZ19vaWRfbGVuLCBpbnQgKml0LCBOZXRzbm1wX05vZGVfSGFuZGxlciAqc3ViaGFuZGxlcikiCisuUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9pbnRfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgaW50ICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgogLmJyCiAudGkgLTFjCi0uUkkgImludCBcZkJuZXRzbm1wX3JlZ2lzdGVyX3JlYWRfb25seV9jb3VudGVyMzJfc2NhbGFyXGZQIChjb25zdCBjaGFyICpuYW1lLCBvaWQgKnJlZ19vaWQsIHNpemVfdCByZWdfb2lkX2xlbiwgdV9sb25nICppdCwgTmV0c25tcF9Ob2RlX0hhbmRsZXIgKnN1YmhhbmRsZXIpIgorLlJJICJpbnQgXGZCbmV0c25tcF9yZWdpc3Rlcl9yZWFkX29ubHlfY291bnRlcjMyX3NjYWxhclxmUCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgb2lkICpyZWdfb2lkLCBzaXplX3QgcmVnX29pZF9sZW4sIHVfbG9uZyAqaXQsIE5ldHNubXBfTm9kZV9IYW5kbGVyICpzdWJoYW5kbGVyKSIKKy5icgorLmluIC0xYyAKKy5pbiArMWMKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJORVRTTk1QX1dBVENIRVJfRElSRUNUXGZQICAgTUlCX0hBTkRMRVJfQ1VTVE9NMSIKKy5icgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQldBVENIRVJfRklYRURfU0laRVxmUCIKKy5icgorLlJJICJcZklUaGUgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgaXMgY29uc3RhbnQuIFxmUCIKKy50aSAtMWMKKy5SSSAiI2RlZmluZSBcZkJXQVRDSEVSX01BWF9TSVpFXGZQIgorLmJyCisuUkkgIlxmSVRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGlzIHN0b3JlZCBpbiBtYXhfc2l6ZS4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQldBVENIRVJfU0laRV9JU19QVFJcZlAiCisuYnIKKy5SSSAiXGZJSWYgc2V0IHRoZW4gdGhlIFxmQnZhcmlhYmxlXGZQIGRhdGFfc2l6ZV9wIHBvaW50cyB0byBpcyBzdXBwb3NlZCB0byBob2xkIHRoZSBjdXJyZW50IHNpemUgb2YgdGhlIHdhdGNoZWQgb2JqZWN0IGFuZCB3aWxsIGJlIHVwZGF0ZWQgb24gd3JpdGVzLiBcZlAiCisudGkgLTFjCisuUkkgIiNkZWZpbmUgXGZCV0FUQ0hFUl9TSVpFX1NUUkxFTlxmUCIKKy5icgorLlJJICJcZklJZiBzZXQgdGhlbiBkYXRhIGlzIHN1cHBwb3NlZCB0byBiZSBhIHplcm8tdGVybWluYXRlZCBjaGFyYWN0ZXIgYXJyYXkgYW5kIGJvdGggZGF0YV9zaXplIGFuZCBkYXRhX3NpemVfcCBhcmUgaWdub3JlZC4gXGZQIgorLnRpIC0xYworLlJJICIjZGVmaW5lIFxmQldBVENIRVJfU0laRV9VTklUX09JRFNcZlAiCisuYnIKKy5SSSAiXGZJSWYgc2V0IHRoZW4gc2l6ZSBpcyBpbiB1bml0cyBvZiBvYmplY3QgaWRlbnRpZmllcnMuIFxmUCIKKy50aSAtMWMKKy5SSSAidHlwZWRlZiBzdHJ1Y3QgXGZCbmV0c25tcF93YXRjaGVyX2luZm9fc1xmUCBcZkJuZXRzbm1wX3dhdGNoZXJfaW5mb1xmUCIKIC5icgogLmluIC0xYwogLlNIICJEZXRhaWxlZCBEZXNjcmlwdGlvbiIKIC5QUCAKIFdhdGNoIGEgc3BlY2lmaWVkIFxmQnZhcmlhYmxlXGZQIGFuZCBwcm9jZXNzIGl0IGFzIGFuIGluc3RhbmNlIG9yIHNjYWxhciBvYmplY3QuIAorLlNIICJEZWZpbmUgRG9jdW1lbnRhdGlvbiIKKy5QUCAKKy5TUyAiI2RlZmluZSBXQVRDSEVSX0ZJWEVEX1NJWkUiCisuUFAKK1RoZSBzaXplIG9mIHRoZSB3YXRjaGVkIG9iamVjdCBpcyBjb25zdGFudC4gCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAyNiBvZiBmaWxlIHdhdGNoZXIuaC4KKy5TUyAiI2RlZmluZSBXQVRDSEVSX01BWF9TSVpFIgorLlBQCitUaGUgbWF4aW11bSBzaXplIG9mIHRoZSB3YXRjaGVkIG9iamVjdCBpcyBzdG9yZWQgaW4gbWF4X3NpemUuIElmIFdBVENIRVJfU0laRV9TVFJMRU4gaXMgc2V0IHRoZW4gaXQgaXMgc3VwcG9zZWQgdGhhdCBtYXhfc2l6ZSArIDEgYnl0ZXMgY291bGQgYmUgc3RvcmVkIGluIHRoZSBidWZmZXIuIAorLlBQCitcZkJFeGFtcGxlczogXGZQCisuaW4gKzFjCitcZkJ3YXRjaGVkLmNcZlAuCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSAzMiBvZiBmaWxlIHdhdGNoZXIuaC4KKy5TUyAiI2RlZmluZSBXQVRDSEVSX1NJWkVfSVNfUFRSIgorLlBQCitJZiBzZXQgdGhlbiB0aGUgXGZCdmFyaWFibGVcZlAgZGF0YV9zaXplX3AgcG9pbnRzIHRvIGlzIHN1cHBvc2VkIHRvIGhvbGQgdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUgd2F0Y2hlZCBvYmplY3QgYW5kIHdpbGwgYmUgdXBkYXRlZCBvbiB3cml0ZXMuIFxmQlNpbmNlOlxmUAorLlJTIDQKK05ldC1TTk1QIDUuNSAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDM4IG9mIGZpbGUgd2F0Y2hlci5oLgorLlNTICIjZGVmaW5lIFdBVENIRVJfU0laRV9TVFJMRU4iCisuUFAKK0lmIHNldCB0aGVuIGRhdGEgaXMgc3VwcHBvc2VkIHRvIGJlIGEgemVyby10ZXJtaW5hdGVkIGNoYXJhY3RlciBhcnJheSBhbmQgYm90aCBkYXRhX3NpemUgYW5kIGRhdGFfc2l6ZV9wIGFyZSBpZ25vcmVkLiBBZGRpdGlvbmFsbHkgXFwwIGlzIGEgZm9yYmlkZGVuIGNoYXJhY3RlciBpbiB0aGUgZGF0YSBzZXQuCisuUFAKK1xmQlNpbmNlOlxmUAorLlJTIDQKK05ldC1TTk1QIDUuNSAKKy5SRQorLlBQCisKKy5QUAorRGVmaW5pdGlvbiBhdCBsaW5lIDQ1IG9mIGZpbGUgd2F0Y2hlci5oLgorLlNTICIjZGVmaW5lIFdBVENIRVJfU0laRV9VTklUX09JRFMiCisuUFAKK0lmIHNldCB0aGVuIHNpemUgaXMgaW4gdW5pdHMgb2Ygb2JqZWN0IGlkZW50aWZpZXJzLiBUaGlzIGlzIHVzZWZ1bCBpZiB5b3UgaGF2ZSBhbiBPSUQgYW5kIHRyYWNrcyB0aGUgT0lEX0xFTkdUSCBvZiBpdCBhcyBvcHBvc2VkIHRvIGl0J3Mgc2l6ZS4KKy5QUAorXGZCU2luY2U6XGZQCisuUlMgNAorTmV0LVNOTVAgNS41LjEgCisuUkUKKy5QUAorCisuUFAKK0RlZmluaXRpb24gYXQgbGluZSA1MiBvZiBmaWxlIHdhdGNoZXIuaC4KIC5TSCAiQXV0aG9yIgogLlBQIAogR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgRG94eWdlbiBmb3IgbmV0LXNubXAgZnJvbSB0aGUgc291cmNlIGNvZGUuCmRpZmYgLS1naXQgYS9tYW4vcGR1X2FwaS4zLmRlZiBiL21hbi9wZHVfYXBpLjMuZGVmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OGI0YTcKLS0tIC9kZXYvbnVsbAorKysgYi9tYW4vcGR1X2FwaS4zLmRlZgpAQCAtMCwwICsxLDI4IEBACisuVEggUERVX0FQSSAzICIyMCBBcHIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5TSCBOQU1FCitzbm1wX3BkdV9jcmVhdGUsIHNubXBfY2xvbmVfcGR1LCBzbm1wX2ZpeF9wZHUsCitzbm1wX2ZyZWVfcGR1IC0gcGR1X2FwaSBmdW5jdGlvbnMKKy5TSCBTWU5PUFNJUworLkIgI2luY2x1ZGUgPG5ldC1zbm1wL3BkdV9hcGkuaD4KKy5QUAorLkJJICJuZXRzbm1wX3BkdSAqc25tcF9wZHVfY3JlYXRlKCBpbnQiICJ0eXBlIiAiKTsiCisuUFAKKy5CSSAibmV0c25tcF9wZHUgKnNubXBfY2xvbmVfcGR1KCBuZXRzbm1wX3BkdSoiICJwZHUiICIpOyIKKy5QUAorLkJJICJuZXRzbm1wX3BkdSAqc25tcF9maXhfcGR1KCBuZXRzbm1wX3BkdSoiICJwZHUiICIsIGludCAiICJpZHgiICIpOyIKKy5QUAorLkJJICJuZXRzbm1wX3BkdSAqc25tcF9mcmVlX3BkdSggbmV0c25tcF9wZHUqIiAicGR1IiAiKTsiCisuUFAKKy5TSCBERVNDUklQVElPTgorVGhlc2UgZnVuY3Rpb25zIGRlYWwgd2l0aCBTTk1QIHJlcXVlc3Qgc3RydWN0dXJlcy4KKy5QUAorLkIgc25tcF9wZHVfY3JlYXRlCisuUFAKKy5CIHNubXBfY2xvbmVfcGR1CisuUFAKKy5CIHNubXBfZml4X3BkdQorLlBQCisuQiBzbm1wX2ZyZWVfcGR1CisuU0ggIlNFRSBBTFNPIgorLkJSIHZhcmJpbmRfYXBpICIoMykiCisuQlIgc2Vzc2lvbl9hcGkgIigzKSIKZGlmZiAtLWdpdCBhL21hbi9yZWFkX2NvbmZpZy4zLmRlZiBiL21hbi9yZWFkX2NvbmZpZy4zLmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI4MGQyMS4uMDAwMDAwMAotLS0gYS9tYW4vcmVhZF9jb25maWcuMy5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwyOTIgKzAsMCBAQAotLlRIIFJFQURfQ09ORklHIDMgIjIzIEZlYiAyMDAzIiAiIiAiTmV0LVNOTVAiCi0uU0ggTkFNRQotcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIsIHJlZ2lzdGVyX3ByZW1pYl9oYW5kbGVyCi11bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyLCByZWdpc3Rlcl9taWJfaGFuZGxlcnMsIHJlYWRfY29uZmlncywKLXJlYWRfcHJlbWliX2NvbmZpZ3MsIGNvbmZpZ19wZXJyb3IsIGNvbmZpZ19wd2FybiAtIHJlYWRfY29uZmlnIGZ1bmN0aW9ucwotLlNIIFNZTk9QU0lTCi0uQiAjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgotLlBQCi0uQiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgotLmJyCi0uQkkgIiAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoY29uc3QgY2hhciAqIiBmaWxlUHJlZml4ICIsCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIiB0b2tlbiAsCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiJ1c2FnZUxpbmUgIik7IgotLlBQCi0uQiBzdHJ1Y3QgY29uZmlnX2xpbmUgKgotLmJyCi0uQkkgIiAgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIoY29uc3QgY2hhciAqIiBmaWxlUHJlZml4ICIsIAotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdG9rZW4gLAotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHBhcnNlciAiKShjb25zdCBjaGFyICosIGNoYXIgKiksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIHZvaWQgKCoiIHJlbGVhc2VyICIpKHZvaWQpLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHVzYWdlTGluZSAiKTsiCi0uUFAKLS5CSSAidm9pZCB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgZmlsZVByZWZpeCAiLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoiIHRva2VuICIpOyIKLS5QUAotLkIgc3RydWN0IGNvbmZpZ19saW5lICoKLS5icgotLkJJICIgIHJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcihjb25zdCBjaGFyICoiIHRva2VuICwKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiBwYXJzZXIgIikoY29uc3QgY2hhciAqLCBjaGFyICopLCIKLS5icgotLkJJICIgICAgICAgICAgICAgICAgICAgICB2b2lkICgqIiByZWxlYXNlciAiKSh2b2lkKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqInVzYWdlTGluZSAiKTsiCi0uUFAKLS5CIHN0cnVjdCBjb25maWdfbGluZSAqCi0uYnIKLS5CSSAiICByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoY29uc3QgY2hhciAqIiB0b2tlbiAsCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcGFyc2VyICIpKGNvbnN0IGNoYXIgKiwgY2hhciAqKSwiCi0uYnIKLS5CSSAiICAgICAgICAgICAgICAgICAgICAgdm9pZCAoKiIgcmVsZWFzZXIgIikodm9pZCksIgotLmJyCi0uQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiIgdXNhZ2VMaW5lICIpOyIKLS5QUAotLkJJICJ2b2lkIHVucmVnaXN0ZXJfYXBwX2NvbmZpZ19oYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gIik7IgotLlBQCi0uQkkgInZvaWQgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoY2hhciAqIiBsZWFkICIpOyIKLS5QUAotLkIgInZvaWQgcmVhZF9jb25maWdzKHZvaWQpOyIKLS5QUAotLkIgInZvaWQgcmVhZF9wcmVtaWJfY29uZmlncyh2b2lkKTsiCi0uUFAKLS5CSSAidm9pZCBjb25maWdfcHdhcm4oY29uc3QgY2hhciAqIiBzdHJpbmcgIik7IgotLmJyCi0uQkkgInZvaWQgY29uZmlnX3BlcnJvcihjb25zdCBjaGFyICoiIHN0cmluZyAiKTsiCi0KLS5TSCBERVNDUklQVElPTgotVGhlIGZ1bmN0aW9ucyBhcmUgYSBmYWlybHkgZXh0ZW5zaWJsZSBzeXN0ZW0gb2YgcGFyc2luZyB2YXJpb3VzCi1jb25maWd1cmF0aW9uIGZpbGVzIGF0IHRoZSBydW4gdGltZSBvZiBhbiBhcHBsaWNhdGlvbi4gIFRoZQotY29uZmlndXJhdGlvbiBmaWxlIGZsb3cgaXMgYnJva2VuIGludG8gdGhlIGZvbGxvd2luZyBwaGFzZXM6Ci0uUlMgNAotLlRQIDQKLTEuCi1SZWdpc3RyYXRpb24gb2YgaGFuZGxlcnMuCi0uVFAKLTIuCi1SZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBwcmUtTUlCIHBhcnNpbmcgcmVxdWlyZW1lbnRzLgotLlRQCi0zLgotUmVhZGluZyBhbmQgcGFyc2luZyBvZiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMuCi0uVFAKLTQuCi1SZWFkaW5nIG9mIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGZvciBjb25maWd1cmF0aW9uIGRpcmVjdGl2ZXMuCi0uVFAKLTUuCi1PcHRpb25hbGx5IHJlLXJlYWRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgYXQgYSBmdXR1cmUgZGF0ZS4KLS5SRQotLlBQCi1UaGUgaWRlYSBpcyB0aGF0IHRoZSBjYWxsaW5nIGFwcGxpY2F0aW9uIGlzIGFibGUgdG8gcmVnaXN0ZXIKLS5JIGhhbmRsZXJzCi1mb3IgY2VydGFpbgotLkkgdG9rZW5zCi1zcGVjaWZpZWQgaW4gY2VydGFpbiB0eXBlcyBvZgotLkkgZmlsZXMuCi1UaGUgCi0uQiByZWFkX2NvbmZpZ3MoKQotZnVuY3Rpb24gY2FuIHRoZW4gYmUgY2FsbGVkIHRvIGxvb2sgZm9yIGFsbCB0aGUgZmlsZXMgdGhhdCBpdCBoYXMKLXJlZ2lzdHJhdGlvbnMgZm9yLCBmaW5kIHRoZSBmaXJzdCB3b3JkIG9uIGVhY2ggbGluZSwgYW5kIHBhc3MgdGhlCi1yZW1haW5kZXIgdG8gdGhlIGFwcHJvcHJpYXRlbHkgcmVnaXN0ZXJlZCBoYW5kbGVyLgotLlNIIFRPS0VOIEhBTkRMRVJTCi0uUFAKLUhhbmRsZXIgZnVuY3Rpb25zIHNob3VsZCBoYXZlIHRoZSBmb2xsb3dpbmcgc2lnbmF0dXJlOgotLlBQCi0uUlMKLS5CSSAidm9pZCBoYW5kbGVyKGNvbnN0IGNoYXIgKiIgdG9rZW4gIiwgY2hhciAqIiBsaW5lICIpOyIKLS5SRQotLlBQCi1UaGUgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzLCB0aGUgZmlyc3QgYmVpbmcgdGhlCi10b2tlbiB0aGF0IHRyaWdnZXJlZCB0aGUgY2FsbCB0byB0aGlzIGZ1bmN0aW9uICh3aGljaCB3b3VsZCBiZSBvbmUgb2YKLXRoZSB0b2tlbnMgdGhhdCB0aGUgZnVuY3Rpb24gaGFkIGJlZW4gcmVnaXN0ZXJlZCBmb3IpLCBhbmQgdGhlIHNlY29uZAotYmVpbmcgdGhlIHJlbWFpbmRlciBvZiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGxpbmUgYmV5b25kIHRoZSB3aGl0ZQotc3BhY2UgZm9sbG93aW5nIHRoZSB0b2tlbi4KLS5TSCBSRVNPVVJDRSBGUkVFSU5HIEhBTkRMRVJTCi0uUFAKLUlmIHRoZSBwYXJhbWV0ZXIKLS5JIHJlbGVhc2VyCi1wYXNzZWQgdG8KLS5CIHJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyCi1pcyBub24tTlVMTCwgdGhlbiB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGlzIGNhbGxlZCBpZiBhbmQgd2hlbiB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZXMgYXJlIHJlLXJlYWQuICBUaGlzIGZ1bmN0aW9uIHNob3VsZCBmcmVlIGFueQotcmVzb3VyY2VzIGFsbG9jYXRlZCBieSB0aGUgdG9rZW4gaGFuZGxlciBmdW5jdGlvbiBhbmQgcmVzZXQgaXRzIG5vdGlvbgotb2YgdGhlIGNvbmZpZ3VyYXRpb24gdG8gaXRzIGRlZmF1bHQuICBUaGUgdG9rZW4gaGFuZGxlciBmdW5jdGlvbiB3aWxsCi10aGVuIGJlIGNhbGxlZCBhZ2Fpbi4gIE5vIGFyZ3VtZW50cyBhcmUgcGFzc2VkIHRvIHRoZSByZXNvdXJjZSBmcmVlaW5nCi1oYW5kbGVyLgotLlNIIFJFR0lTVEVSSU5HIEEgSEFORExFUgotLlRQCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1UaGUKLS5CIGhhbmRsZXIoKQotZnVuY3Rpb24gYWJvdmUgY291bGQgYmUgcmVnaXN0ZXJlZCBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZQotLkkgc25tcC5jb25mLAotd2l0aCB0aGUgdG9rZW4KLS5JIGdlbmVyaWNUb2tlbgotYW5kIHRoZSBoZWxwIHN0cmluZyAoZGlzY3Vzc2VkIGxhdGVyKQotLkkgIiIiQVJHMSBbQVJHMl0iIiIKLXVzaW5nIHRoZSBmb2xsb3dpbmcgY2FsbCB0byB0aGUgCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1mdW5jdGlvbjoKLS5QUAotLlJTCi0uUlMKLXJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCJzbm1wIiwgImdlbmVyaWNUb2tlbiIsIGhhbmRsZXIsIE5VTEwsICJBUkcxIFtBUkcyXSIpOwotLlJFCi0uUkUKLS5JUAotVGhpcyB3b3VsZCByZWdpc3RlciB0aGUKLS5CIGhhbmRsZXIoKQotZnVuY3Rpb24gc28gdGhhdCBpdCB3aWxsIGdldCBjYWxsZWQgZXZlcnkgdGltZSB0aGUgZmlyc3Qgd29yZCBvZiBhCi1saW5lIGluIHRoZSAKLS5JIHNubXAuY29uZgotY29uZmlndXJhdGlvbiBmaWxlKHMpIG1hdGNoZXMgImdlbmVyaWNUb2tlbiIgKHNlZSAKLS5CIHJlYWRfY29uZmlncygpIAotYmVsb3cpLgotLlRQCi0uQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpCi1UaGUgCi0uQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpCi1mdW5jdGlvbiB3b3JrcyBpZGVudGljYWxseSB0byB0aGUgCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1mdW5jdGlvbiBidXQgaXMgaW50ZW5kZWQgZm9yIGNvbmZpZyBmaWxlIHRva2VucyB0aGF0IG5lZWQgdG8gYmUgcmVhZAotaW4gYmVmb3JlIHRoZSB0ZXh0dWFsIE1JQnMgYXJlIHJlYWQgaW4sIHByb2JhYmx5IGJlY2F1c2UgdGhleSB3aWxsIGJlCi11c2VkIHRvIGNvbmZpZ3VyZSB0aGUgTUlCIHBhcnNlci4gIEl0IGlzIHJhcmVseSB0aGUgY2FzZSB0aGF0IGFueXRoaW5nIAotYnV0IHRoZSBTTk1QIGxpYnJhcnkgaXRzZWxmIHNob3VsZCBuZWVkIHRvIHVzZSB0aGlzIGZ1bmN0aW9uLgotLlRQCi0uQiB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLVJlbW92ZXMgdGhlIHJlZ2lzdGVyZWQgY29uZmlndXJhdGlvbiBoYW5kbGVyIGZvciB0aGUKLS5JIGZpbGVQcmVmaXgKLWFuZAotLklSIHRva2VuIC4KLQotLlRQCi0uQiByZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIoKQotLlRQCi0uQiByZWdpc3Rlcl9hcHBfcHJlbWliX2hhbmRsZXIoKQotLlRQCi0uQiB1bnJlZ2lzdGVyX2FwcF9jb25maWdfaGFuZGxlcigpCi1UaGVzZSBmdW5jdGlvbnMgYXJlIGFuYWxhZ291cyB0byAKLS5CUiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpICIsICIgcmVnaXN0ZXJfcHJlbWliX2hhbmRsZXIoKSAiIGFuZCAiCi0uQiB1bnJlZ2lzdGVyX2NvbmZpZ19oYW5kbGVyKCkKLWJ1dCBkb24ndCByZXF1aXJlIHRoZSBmaWxlIHR5cGUgYXJndW1lbnQgKHdoaWNoIGlzIGZpbGxlZCBpbiBieSB0aGUKLWFwcGxpY2F0aW9uKS4gIEl0IGlzIGludGVuZGVkIHRoYXQgTUlCIG1vZHVsZXMgd3JpdHRlbiBmb3IgdGhlIGFnZW50Ci11c2UgdGhlc2UgZnVuY3Rpb25zIHRvIGFsbG93IHRoZSBhZ2VudCB0byBoYXZlIG1vcmUgY29udHJvbCBvdmVyIHdoaWNoCi1jb25maWd1cmF0aW9uIGZpbGVzIGFyZSByZWFkICh0eXBpY2FsbHkgdGhlCi0uSSBzbm1wZC5jb25mCi1maWxlcykuCi0uU0ggSEVMUCBTVFJJTkdTCi0uUFAKLVRoZQotLkkgdXNhZ2VMaW5lCi1wYXJhbWV0ZXIgcGFzc2VkIHRvCi0uQiByZWdpc3Rlcl9jb25maWdfaGFuZGxlcigpCi1hbmQgc2ltaWxhciBjYWxscywgaXMgdXNlZCB0byBkaXNwbGF5IGhlbHAgaW5mb3JtYXRpb24gd2hlbiB0aGUKLS5CIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKCkKLWZ1bmN0aW9uIGlzIGNhbGxlZC4gIFRoaXMgZnVuY3Rpb24gaXMgdXNlZCBieSBhbGwgb2YgdGhlIGFwcGxpY2F0aW9ucwotd2hlbiB0aGUgCi0uQiAtSAotZmxhZyBpcyBwYXNzZWQgb24gdGhlIGNvbW1hbmQgbGluZS4gIEl0IHByaW50cyBhIHN1bW1hcnkgb2YgYWxsIG9mIHRoZQotY29uZmlndXJhdGlvbiBmaWxlIGxpbmVzLCBhbmQgdGhlIGFzc29jaWF0ZWQgZmlsZXMsIHRoYXQgdGhlCi1jb25maWd1cmF0aW9uIHN5c3RlbSB1bmRlcnN0YW5kcy4gIFRoZQotLkkgdXNhZ2VMaW5lCi1wYXJhbWV0ZXIgc2hvdWxkIGJlIGEgbGlzdCBvZiBhcmd1bWVudHMgZXhwZWN0ZWQgYWZ0ZXIgdGhlIHRva2VuLCBhbmQKLW5vdCBhIGxlbmd0aHkgZGVzY3JpcHRpb24gKHdoaWNoIHNob3VsZCBnbyBpbnRvIGEgbWFudWFsIHBhZ2UKLWluc3RlYWQpLiAgVGhlCi0uSSBsZWFkCi1wcmVmaXggd2lsbCBiZSBwcmVwZW5kZWQgdG8gZWFjaCBsaW5lIHRoYXQgdGhlIGZ1bmN0aW9uIHByaW50cyB0bwotc3RkZXJyLCB3aGVyZSBpdCBkaXNwbGF5cyBpdHMgb3V0cHV0LgotLlBQCi1UaGUKLS5CIGluaXRfc25tcCgpCi1mdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSB0aGUKLS5CIHJlYWRfY29uZmlnX3ByaW50X3VzYWdlKCkKLWZ1bmN0aW9uIGlzIGNhbGxlZCwgc28gdGhhdCB0aGUgbGlicmFyeSBjYW4gcmVnaXN0ZXIgaXRzIGNvbmZpZ3VyYXRpb24gCi1maWxlIGRpcmVjdGl2ZXMgYXMgd2VsbCBmb3IgdGhlIAotLkIgcmVhZF9jb25maWdfcHJpbnRfdXNhZ2UoKQotZnVuY3Rpb24gdG8gZGlzcGxheS4KLS5TSCBSRUFESU5HIENPTkZJR1VSQVRJT04gRklMRVMKLS5UUAotLkIgaW5pdF9zbm1wKCkKLU9uY2UgdGhlIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gdG9rZW4gcGFyc2VycyBoYXZlIGJlZW4gcmVnaXN0ZXJlZCwKLS5CIGluaXRfc25tcCgpCi1zaG91bGQgYmUgY2FsbGVkLiAgSXQgd2lsbCBwYXJzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRva2VucwotcmVnaXN0ZXJlZCB3aXRoCi0uQiByZWdpc3Rlcl9wcmVtaWJfaGFuZGxlcigpLAotcmVhZCBpbiB0aGUgdGV4dHVhbCBNSUIgZmlsZXMgdXNpbmcKLS5CIGluaXRfbWliKCksCi1hbmQgZmluYWxseSBwYXJzZSB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHRva2VucyByZWdpc3RlcmVkIHdpdGggCi0uQlIgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoKSAuCi0uUFAKLUlmIHRoZSAKLS5CIGluaXRfc25tcCgpCi1mdW5jdGlvbiBpcyB1c2VkLCBub25lIG9mIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zIG5lZWQgdG8gYmUgY2FsbGVkIGJ5IAotdGhlIGFwcGxpY2F0aW9uOgotLlRQCi0uQiByZWdpc3Rlcl9taWJfaGFuZGxlcnMoKQotVGhlIFNOTVAgbGlicmFyeSdzIHJvdXRpbmUgdG8gcmVnaXN0ZXIgaXRzIGNvbmZpZ3VyYXRpb24gZmlsZQotaGFuZGxlcnMuCi0uVFAKLS5CIHJlYWRfcHJlbWliX2NvbmZpZ3MoKQotVGhlIHJvdXRpbmUgdGhhdCBwYXJzZXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIHRva2VucyByZWdpc3RlcmVkCi10byBiZSBkZWFsdCB3aXRoIGJlZm9yZSB0aGUgdGV4dHVhbCBNSUJzIGFyZSByZWFkIGluLiAgU2VlIAotLkIgcmVhZF9jb25maWdzKCkKLWJlbG93LgotLlRQCi0uQiByZWFkX2NvbmZpZ3MoKQotUmVhZHMgYWxsIHRoZSBjb25maWd1cmF0aW9uIGZpbGVzIGl0IGNhbiBmaW5kIGluIHRoZSAKLS5JIFNOTVBDT05GUEFUSAotZW52aXJvbm1lbnQgdmFyaWFibGUgKG9yIGl0cyBkZWZhdWx0IHZhbHVlKSBmb3IgdG9rZW5zIGFuZAotYXBwcm9wcmlhdGVseSBjYWxscyB0aGUgaGFuZGxlcnMgcmVnaXN0ZXJlZCB0byBpdCwgb3IgcHJpbnRzIGEKLSJVbmtub3duIHRva2VuIiB3YXJuaW5nIG1lc3NhZ2UuICBJdCBsb29rcyBmb3IgYW55IGZpbGUgdGhhdCBpdCBoYXMKLXByZXZpb3VzbHkgcmVjZWl2ZWQgYSByZWdpc3RyYXRpb24gcmVxdWVzdCBmb3IuCi0uU0ggQ09ORklHVVJBVElPTiBGSUxFUyBSRUFECi0uUFAKLVRoZSBjb25maWd1cmF0aW9uIGZpbGVzIHJlYWQgYXJlIGZvdW5kIGJ5IHVzaW5nIHRoZSBjb2xvbiBzZXBhcmF0ZWQKLS5JIFNOTVBDT05GUEFUSAotZW52aXJvbm1lbnQgdmFyaWFibGUgKG9yIGl0cyBkZWZhdWx0IHZhbHVlLCB3aGljaCB3aWxsIGJlCi1TWVNDT05GRElSL3NubXAsIGZvbGxvd2VkIGJ5Ci1EQVRBRElSL3NubXAsIGZvbGxvd2VkIGJ5IExJQkRJUi9zbm1wLCBmb2xsb3dlZCBieSAkSE9NRS8uc25tcCkgYW5kCi1yZWFkaW5nIGluIHRoZSBmaWxlcyBmb3VuZCB0aGF0IG1hdGNoIGJvdGggdGhlIHByZWZpeCByZWdpc3RlcmVkIGFuZAotdGhlIHR3byBzdWZmaXhlcwotLkkgLmNvbmYKLWFuZAotLkkgLmxvY2FsLmNvbmYuCi1UaGUgaWRlYSBiZWhpbmQgdGhlIHR3byBkaWZmZXJlbnQgc3VmZml4ZXMgaXMgdGhhdCB0aGUgZmlyc3QgZmlsZSBjYW4KLWJlIHNoYXJlZCAodmlhIHJkaXN0IG9yIGFuIE5GUyBtb3VudCkgYWNyb3NzIGEgbGFyZ2UgbnVtYmVyIG9mCi1tYWNoaW5lcyBhbmQgdGhlIHNlY29uZCBmaWxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSBsb2NhbCBzZXR0aW5ncwotZm9yIG9uZSBwYXJ0aWN1bGFyIG1hY2hpbmUuICBUaGV5IGRvIG5vdCBuZWVkIHRvIGJlIHByZXNlbnQsIGFuZCB3aWxsCi1vbmx5IGJlIHJlYWQgaWYgZm91bmQuCi0uU0ggRVJST1IgSEFORExJTkcgRlVOQ1RJT05TCi0uUFAKLVRoZSB0d28gZnVuY3Rpb25zCi0uQiBjb25maWdfcHdhcm4oKQotYW5kCi0uQiBjb25maWdfcGVycm9yKCkKLWJvdGggdGFrZSBhbiBlcnJvciBzdHJpbmcgYXMgYW4gYXJndW1lbnQgYW5kIHByaW50IGl0IHRvIHN0ZGVyciBhbG9uZwotd2l0aCB0aGUgZmlsZSBhbmQgbGluZSBudW1iZXIgdGhhdCBjYXVzZWQgdGhlIGVycm9yLiAgQSBjYWxsIHRvIHRoZQotc2Vjb25kIGZ1bmN0aW9uIHdpbGwgYWxzbyBmb3JjZSAKLS5CIHJlYWRfY29uZmlncygpIAotdG8gZXZlbnR1YWxseSByZXR1cm4gd2l0aCBhbiBlcnJvciBjb2RlIGluZGljYXRpbmcgdG8gaXQncyBjYWxsaW5nCi1mdW5jdGlvbiB0aGF0IGl0IHNob3VsZCBhYm9ydCB0aGUgb3BlcmF0aW9uIG9mIHRoZSBhcHBsaWNhdGlvbi4KLS5TSCAiRU5WSVJPTk1FTlQgVkFSSUFCTEVTIgotLlRQIDEwCi1TTk1QQ09ORlBBVEgKLUEgY29sb24gc2VwYXJhdGVkIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBjb25maWd1cmF0aW9uCi1maWxlcyBpbi4KLURlZmF1bHQ6IFNZU0NPTkZESVIvc25tcDpEQVRBRElSL3NubXA6TElCRElSL3NubXA6JEhPTUUvLnNubXAKLS5TSCAiU0VFIEFMU08iCi0uQlIgbWliX2FwaSAiKDMpLCAiIHNubXBfYXBpICgzKQotLlwiIExvY2FsIFZhcmlhYmxlczoKLS5cIiAgbW9kZTogbnJvZmYKLS5cIiBFbmQ6CmRpZmYgLS1naXQgYS9tYW4vc25tcF9hcGkuMy5kZWYgYi9tYW4vc2Vzc2lvbl9hcGkuMy5kZWYKc2ltaWxhcml0eSBpbmRleCA5MyUKcmVuYW1lIGZyb20gbWFuL3NubXBfYXBpLjMuZGVmCnJlbmFtZSB0byBtYW4vc2Vzc2lvbl9hcGkuMy5kZWYKaW5kZXggZDFjYjk5MS4uOWFjMmQ1ZSAxMDA2NDQKLS0tIGEvbWFuL3NubXBfYXBpLjMuZGVmCisrKyBiL21hbi9zZXNzaW9uX2FwaS4zLmRlZgpAQCAtMSwzICsxLDcgQEAKKy5cIiAtKi0gbnJvZmYgLSotCisuXCIgUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0LiAKKy5cIiBTZWUgdGhlIE5ldC1TTk1QIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlcgorLlwiIGNvcHlyaWdodHMgdGhhdCBtYXkgYXBwbHk6CiAuXCIgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAuXCIgCUNvcHlyaWdodCAxOTg5IGJ5IENhcm5lZ2llIE1lbGxvbiBVbml2ZXJzaXR5CiAuXCIgCkBAIC0xOSw5ICsyMyw5IEBACiAuXCIgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUwogLlwiIFNPRlRXQVJFLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QX0FQSSAzICIxOSBNYXkgMjAxMSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTRVNTSU9OX0FQSSAzICIxOSBNYXkgMjAxMSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCi1zbm1wX3Nlc3NfaW5pdCwgc25tcF9vcGVuLCBzbm1wX3NlbmQsIHNubXBfYXN5bmNfc2VuZCwgc25tcF9mcmVlX3BkdSwgc25tcF9zZWxlY3RfaW5mbywgc25tcF9yZWFkLCBzbm1wX3RpbWVvdXQsIHNubXBfc3luY2hfcmVzcG9uc2UsIHNubXBfY2xvc2UsIHNubXBfcGVycm9yLCBzbm1wX3Nlc3NfcGVycm9yLCBzbm1wX2Vycm9yLCBzbm1wX2FwaV9lcnJzdHJpbmcgXC0gc2VuZCBhbmQgcmVjZWl2ZSBTTk1QIG1lc3NhZ2VzCitzbm1wX3Nlc3NfaW5pdCwgc25tcF9vcGVuLCBzbm1wX3NlbmQsIHNubXBfYXN5bmNfc2VuZCwgc25tcF9zZWxlY3RfaW5mbywgc25tcF9yZWFkLCBzbm1wX3RpbWVvdXQsIHNubXBfc3luY2hfcmVzcG9uc2UsIHNubXBfY2xvc2UsIHNubXBfcGVycm9yLCBzbm1wX3Nlc3NfcGVycm9yLCBzbm1wX2Vycm9yLCBzbm1wX2FwaV9lcnJzdHJpbmcgXC0gc2Vzc2lvbl9hcGkgZnVuY3Rpb25zCiAuU0ggU1lOT1BTSVMKICNpbmNsdWRlIDxuZXQtc25tcC9zZXNzaW9uX2FwaS5oPgogLlBQCkBAIC02MSw5ICs2NSw2IEBACiAuUFAKIGludCBzbm1wX2Nsb3NlICggc3RydWN0IHNubXBfc2Vzc2lvbiAqc2Vzc2lvbiApOwogLlBQCi12b2lkIHNubXBfZnJlZV9wZHUgKAotc3RydWN0IHNubXBfcGR1ICpwZHUgKTsKLS5QUAogdm9pZCBzbm1wX2Vycm9yICgKIHN0cnVjdCBzbm1wX3Nlc3Npb24gKnNlc3Npb24sCiAuUlMKQEAgLTk4LDkgKzk5LDkgQEAKIG9iamVjdCwgd2hpY2ggdGhlIGFwcGxpY2F0aW9uIG11c3QgdXNlIHRvIHJlZmVyZW5jZSB0aGUKIGFjdGl2ZSBTTk1QIHNlc3Npb24uCiAuUFAKLS5JIFNubXBfc2VuZCwgc25tcF9hc3luY19zZW5kCisuSSBTbm1wX3NlbmQKIGFuZAotLkkgc25tcF9mcmVlX3BkdQorLkkgc25tcF9hc3luY19zZW5kCiBlYWNoIHRha2UgYXMgaW5wdXQgYSBwb2ludGVyIHRvIGEKIC5JIHN0cnVjdCBzbm1wX3BkdQogb2JqZWN0LgpkaWZmIC0tZ2l0IGEvbWFuL3NubXAuY29uZi41LmRlZiBiL21hbi9zbm1wLmNvbmYuNS5kZWYKaW5kZXggNDMyZTA0Yi4uMTNjMTVhOSAxMDA2NDQKLS0tIGEvbWFuL3NubXAuY29uZi41LmRlZgorKysgYi9tYW4vc25tcC5jb25mLjUuZGVmCkBAIC0xLDQgKzEsNCBAQAotLlRIIFNOTVAuQ09ORiA1ICIyMSBGZWIgMjAwNyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QLkNPTkYgNSAiMDEgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogc25tcC5jb25mIC0gY29uZmlndXJhdGlvbiBmaWxlcyBmb3IgdGhlIE5ldC1TTk1QIGFwcGxpY2F0aW9ucwogLlNIIERFU0NSSVBUSU9OCkBAIC00NSw2ICs0NSwxMyBAQAogZGVmaW5lcyB0aGUgZGVmYXVsdCBjb21tdW5pdHkgdG8gdXNlIGZvciBTTk1QdjEgYW5kIFNOTVB2MmMgcmVxdWVzdHMuCiBUaGlzIGNhbiBiZSBvdmVycmlkZGVuIHVzaW5nIHRoZSBcZkItY1xmUiBvcHRpb24uCiAuXCIuSVAgImR1bXBQYWNrZXQgKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCisuSVAgImFsaWFzIE5BTUUgREVGSU5JVElPTiIKK0NyZWF0ZXMgYW4gYWxpYXNlZCB0aWVkIHRvIE5BTUUgZm9yIGEgZ2l2ZW4gdHJhbnNwb3J0IGRlZmluaXRpb24uICBUaGUKK2FsaWFzIGNhbiB0aGUgYmUgcmVmZXJyZWQgdG8gdXNpbmcgYW4gYWxpYXM6IHByZWZpeC4gIEVnLCBhIGxpbmUgb2YKKyJhbGlhcyBoZXJlIHVkcDoxMjcuMC4wLjE6NjE2MSIgd291bGQgYWxsb3cgeW91IHRvIHVzZSBhIGRlc3RpbmF0aW9uCitob3N0IG9mICJhbGlhczpoZXJlIiBpbnN0ZWFkIG9mICJ1ZHA6MTI3LjAuMC4xOjYxNjEiLiAgVGhpcyBiZWNvbWVzCittb3JlIHVzZWZ1bCB3aXRoIGNvbXBsZXggdHJhbnNwb3J0IGFkZHJlc3NlcyBpbnZvbHZpbmcgSVB2NiBhZGRyZXNzZXMsCitldGMuCiAuSVAgImR1bXBQYWNrZXQgeWVzIgogZGVmaW5lcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBoZXhhZGVjaW1hbCBkdW1wIG9mIHRoZSByYXcgU05NUCByZXF1ZXN0cwogc2VudCBhbmQgcmVjZWl2ZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgpAQCAtMTkyLDYgKzE5OSwxNyBAQAogYmVpbmcgdXNlZCAoYXV0aCBrZXlzOiBNRDU9MTYgYnl0ZXMsIFNIQTE9MjAgYnl0ZXM7CiBwcml2IGtleXM6IERFUz0xNiBieXRlcyAoOAogYnl0ZXMgb2Ygd2hpY2ggaXMgdXNlZCBhcyBhbiBJViBhbmQgbm90IGEga2V5KSwgYW5kIEFFUz0xNiBieXRlcykuCisuSVAgInNzaHRvc25tcHNvY2tldCBQQVRIIgorU2V0cyB0aGUgcGF0aCBvZiB0aGUgXGZCc3NodG9zbm1wXGZSIHNvY2tldCBjcmVhdGVkIGJ5IGFuIGFwcGxpY2F0aW9uCisoZS5nLiBzbm1wZCkgbGlzdGVuaW5nIGZvciBpbmNvbWluZyBzc2ggY29ubmVjdGlvbnMgdGhyb3VnaCB0aGUKK1xmQnNzaHRvc25tcFxmUiB1bml4IHNvY2tldC4KKy5JUCAic3NodG9zbm1wc29ja2V0cGVybXMgTU9ERSBbT1dORVIgW0dST1VQXV0iCitTZXRzIHRoZSBtb2RlLCBvd25lciBhbmQgZ3JvdXAgb2YgdGhlIFxmQnNzaHRvc25tcFxmUiBzb2NrZXQgY3JlYXRlZCBieQorYW4gYXBwbGljYXRpb24gKGUuZy4gXGZCc25tcGRcZlIpIGxpc3RlbmluZyBmb3IgaW5jb21pbmcgc3NoIGNvbm5lY3Rpb25zCit0aHJvdWdoIHRoZSBcZkJzc2h0b3NubXBcZlIgdW5peCBzb2NrZXQuICBUaGUgc29ja2V0IG5lZWRzIHRvIGJlIHJlYWQvd3JpdGUKK3ByaXZpbGVnZWQgZm9yIFNTSCB1c2VycyB0aGF0IGFyZSBhbGxvd2VkIHRvIGNvbm5lY3QgdG8gdGhlIFNOTVAKK3NlcnZpY2UgKFZBQ00gYWNjZXNzIHN0aWxsIG5lZWRzIHRvIGJlIGdyYW50ZWQgYXMgd2VsbCwgbW9zdCBsaWtlbHkKK3Rocm91Z2ggdGhlIFRTTSBzZWN1cml0eSBtb2RlbCkuCiAuXCIKIC5cIiBYWFggLSBhcmUgdGhlc2UgbGVuZ3RocyBzdGlsbCBjb3JyZWN0ID8KIC5cIgpAQCAtMjE1LDcgKzIzMyw3IEBACiBmb3IgaGFuZGxpbmcgaW5wdXQgdG8gYW5kIG91dHB1dCBmcm9tIGV4dGVybmFsIHNoZWxsIGNvbW1hbmRzLgogVXNlZCBieSB0aGUgXGZJbWtzdGVtcCgpXGZSIGFuZCBcZklta3RlbXAoKVxmUiBmdW5jdGlvbnMuCiAuSVAKLUlmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHBhdHRlcm4gaXMgXGZDL3RtcC9zbm1wZFhYWFhYWFxmUi4KK0lmIG5vdCBzcGVjaWZpZWQsIHRoZSBkZWZhdWx0IHBhdHRlcm4gaXMgXGZDTkVUU05NUF9URU1QX0ZJTEVfUEFUVEVSTlxmUi4KIC5JUCAic2VydmVyUmVjdkJ1ZiBJTlRFR0VSIgogc3BlY2lmaWVzIHRoZSBkZXNpcmVkIHNpemUgb2YgdGhlIGJ1ZmZlciB0byBiZSB1c2VkIHdoZW4gcmVjZWl2aW5nCiBpbmNvbWluZyBTTk1QIHJlcXVlc3RzLgpAQCAtMjUyLDE0ICsyNzAsMTUgQEAKIGVudmlyb25tZW50IHZhcmlhYmxlLgogLklQICJzaG93TWliRXJyb3JzICgxfHllc3x0cnVlfDB8bm98ZmFsc2UpIgogd2hldGhlciB0byBkaXNwbGF5IE1JQiBwYXJzaW5nIGVycm9ycy4KLS5JUCAic3RyaWN0Q29tbWVudFRlcm0gKDF8eWVzfHRydWV8MHxub3xmYWxzZSkiCisuSVAgImNvbW1lbnRUb0VPTCAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIHdoZXRoZXIgTUlCIHBhcnNpbmcgc2hvdWxkIGJlIHN0cmljdCBhYm91dCBjb21tZW50IHRlcm1pbmF0aW9uLgogTWFueSBNSUIgd3JpdGVycyBhc3N1bWUgdGhhdCBBU04uMSBjb21tZW50cyBleHRlbmQgdG8gdGhlIGVuZCBvZgogdGhlIHRleHQgbGluZSwgcmF0aGVyIHRoYW4gYmVpbmcgdGVybWluYXRlZCBieSB0aGUgbmV4dCAiLS0iIHRva2VuLgogVGhpcyB0b2tlbiBjYW4gYmUgdXNlZCB0byBhY2NlcHQgc3VjaCAoc3RyaWN0bHkgaW5jb3JyZWN0KSBNSUJzLgogLmJyCi1Ob3RlIHRoYXQgdGhpcyBkaXJlY3RpdmUgaXMgcG9vcmx5IG5hbWVkLCBzaW5jZSBhIHZhbHVlIG9mICJ0cnVlIgotd2lsbCB0dXJuIFxmSW9mZlxmUCB0aGUgc3RyaWN0IGludGVycHJldGF0aW9uIG9mIE1JQiBjb21tZW50cy4KK05vdGUgdGhhdCB0aGlzIGRpcmVjdGl2ZSB3YXMgcHJldmlvdXMgKG1pcy0pbmFtZWQgXGZJc3RyaWN0Q29tbWVudFRlcm1cZlIsCitidXQgd2l0aCB0aGUgcmV2ZXJzZSBiZWhhdmlvdXIgZnJvbSB0aGF0IGltcGxpZWQgYnkgdGhlIG5hbWUuCitUaGlzIGVhcmxpZXIgdG9rZW4gaXMgc3RpbGwgYWNjZXB0ZWQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LgogLklQICJtaWJBbGxvd1VuZGVybGluZSAoMXx5ZXN8dHJ1ZXwwfG5vfGZhbHNlKSIKIHdoZXRoZXIgdG8gYWxsb3cgdW5kZXJsaW5lIGNoYXJhY3RlcnMgaW4gTUlCIG9iamVjdCBuYW1lcyBhbmQKIGVudW1lcmF0aW9uIHZhbHVlcy4KZGlmZiAtLWdpdCBhL21hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMyBiL21hbi9zbm1wX2FwaV9lcnJzdHJpbmcuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9hcGlfZXJyc3RyaW5nLjMKKysrIGIvbWFuL3NubXBfYXBpX2VycnN0cmluZy4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9jbG9zZS4zIGIvbWFuL3NubXBfY2xvc2UuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9jbG9zZS4zCisrKyBiL21hbi9zbm1wX2Nsb3NlLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX2NvbmZpZy41LmRlZiBiL21hbi9zbm1wX2NvbmZpZy41LmRlZgppbmRleCBlN2FjNGE2Li44NzAxZDkzIDEwMDY0NAotLS0gYS9tYW4vc25tcF9jb25maWcuNS5kZWYKKysrIGIvbWFuL3NubXBfY29uZmlnLjUuZGVmCkBAIC0xMSw5ICsxMSwxMCBAQAogY29uZmlndXJhdGlvbiBmaWxlcyBpbiB0aGUgZm9sbG93aW5nIDQgZGlyZWN0b3JpZXMsIGluIG9yZGVyOgogU1lTQ09ORkRJUi9zbm1wLAogREFUQURJUi9zbm1wLCBMSUJESVIvc25tcCwgYW5kICRIT01FLy5zbm1wLiAgSW4gZWFjaCBvZiB0aGVzZQotZGlyZWN0b3JpZXMsIGl0IGxvb2tzIGZvciBmaWxlcyB3aXRoIHRoZSBleHRlbnNpb24gb2YgYm90aAotLklSIGNvbmYgIiBhbmQgIiBsb2NhbC5jb25mCi0ocmVhZGluZyB0aGUgc2Vjb25kIG9uZXMgbGFzdCkuICBJbiB0aGlzIG1hbm5lciwgdGhlcmUgYXJlCitkaXJlY3RvcmllcywgaXQgbG9va3MgZm9yIGZpbGVzIHNubXAuY29uZiwgc25tcGQuY29uZiBhbmQvb3IKK3NubXB0cmFwZC5jb25mLCBhcyB3ZWxsIGFzIHNubXAubG9jYWwuY29uZiwgc25tcGQubG9jYWwuY29uZgorYW5kL29yIHNubXB0cmFwZC5sb2NhbC5jb25mLiAqLmxvY2FsLmNvbmYgYXJlIGFsd2F5cworcmVhZCBsYXN0LiBJbiB0aGlzIG1hbm5lciwgdGhlcmUgYXJlCiA4IGRlZmF1bHQgcGxhY2VzIGEgY29uZmlndXJhdGlvbiBmaWxlIGNhbiBleGlzdCBmb3IgYW55IGdpdmVuCiBjb25maWd1cmF0aW9uIGZpbGUgdHlwZS4KIC5QUApkaWZmIC0tZ2l0IGEvbWFuL3NubXBfZXJyb3IuMyBiL21hbi9zbm1wX2Vycm9yLjMKaW5kZXggNGMxNmJhZi4uZmUwYTQ4YiAxMDA2NDQKLS0tIGEvbWFuL3NubXBfZXJyb3IuMworKysgYi9tYW4vc25tcF9lcnJvci4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9mcmVlX3BkdS4zIGIvbWFuL3NubXBfZnJlZV9wZHUuMwppbmRleCA0YzE2YmFmLi40NTZkNjZkIDEwMDY0NAotLS0gYS9tYW4vc25tcF9mcmVlX3BkdS4zCisrKyBiL21hbi9zbm1wX2ZyZWVfcGR1LjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3BkdV9hcGkuMwpkaWZmIC0tZ2l0IGEvbWFuL3NubXBfb3Blbi4zIGIvbWFuL3NubXBfb3Blbi4zCmluZGV4IDRjMTZiYWYuLmZlMGE0OGIgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wX29wZW4uMworKysgYi9tYW4vc25tcF9vcGVuLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3BlcnJvci4zIGIvbWFuL3NubXBfcGVycm9yLjMKaW5kZXggNGMxNmJhZi4uZmUwYTQ4YiAxMDA2NDQKLS0tIGEvbWFuL3NubXBfcGVycm9yLjMKKysrIGIvbWFuL3NubXBfcGVycm9yLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3JlYWQuMyBiL21hbi9zbm1wX3JlYWQuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9yZWFkLjMKKysrIGIvbWFuL3NubXBfcmVhZC4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9zZWxlY3RfaW5mby4zIGIvbWFuL3NubXBfc2VsZWN0X2luZm8uMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9zZWxlY3RfaW5mby4zCisrKyBiL21hbi9zbm1wX3NlbGVjdF9pbmZvLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3NlbmQuMyBiL21hbi9zbm1wX3NlbmQuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9zZW5kLjMKKysrIGIvbWFuL3NubXBfc2VuZC4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcF9zZXNzX3BlcnJvci4zIGIvbWFuL3NubXBfc2Vzc19wZXJyb3IuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF9zZXNzX3BlcnJvci4zCisrKyBiL21hbi9zbm1wX3Nlc3NfcGVycm9yLjMKQEAgLTEgKzEgQEAKLS5zbyBtYW4zL3NubXBfYXBpLjMKKy5zbyBtYW4zL3Nlc3Npb25fYXBpLjMKZGlmZiAtLWdpdCBhL21hbi9zbm1wX3RpbWVvdXQuMyBiL21hbi9zbm1wX3RpbWVvdXQuMwppbmRleCA0YzE2YmFmLi5mZTBhNDhiIDEwMDY0NAotLS0gYS9tYW4vc25tcF90aW1lb3V0LjMKKysrIGIvbWFuL3NubXBfdGltZW91dC4zCkBAIC0xICsxIEBACi0uc28gbWFuMy9zbm1wX2FwaS4zCisuc28gbWFuMy9zZXNzaW9uX2FwaS4zCmRpZmYgLS1naXQgYS9tYW4vc25tcGNtZC4xLmRlZiBiL21hbi9zbm1wY21kLjEuZGVmCmluZGV4IDQ4NTNjYWYuLmY2NWIzZmQgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wY21kLjEuZGVmCisrKyBiL21hbi9zbm1wY21kLjEuZGVmCkBAIC0yNyw3ICsyNyw3IEBACiAuXCIgVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQogLlwiIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAuXCIgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotLlRIIFNOTVBDTUQgMSAiMDEgU2VwIDIwMDYiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUENNRCAxICIyMCBNYXIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wY21kIC0gb3B0aW9ucyBhbmQgYmVoYXZpb3VyIGNvbW1vbiB0byBtb3N0IG9mIHRoZSBOZXQtU05NUCBjb21tYW5kLWxpbmUgdG9vbHMKIC5TSCBTWU5PUFNJUwpAQCAtOTUsMTMgKzk1LDExIEBACiAuVFAKIC5CSSAtZSAiIGVuZ2luZUlEIgogU2V0IHRoZSBhdXRob3JpdGF0aXZlIChzZWN1cml0eSkgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QKLW1lc3NhZ2VzLCBnaXZlbiBhcyBhIGhleGFkZWNpbWFsIHN0cmluZyAob3B0aW9uYWxseSBwcmVmaXhlZCBieSAiMHgiKS4KLUl0IGlzIHR5cGljYWxseSBub3QgbmVjZXNzYXJ5IHRvIHNwZWNpZnkgdGhpcyBlbmdpbmUgSUQsIGFzIGl0IHdpbGwKK21lc3NhZ2VzLiAgSXQgaXMgdHlwaWNhbGx5IG5vdCBuZWNlc3NhcnkgdG8gc3BlY2lmeSB0aGlzLCBhcyBpdCB3aWxsCiB1c3VhbGx5IGJlIGRpc2NvdmVyZWQgYXV0b21hdGljYWxseS4KIC5UUAogLkJJIC1FICIgZW5naW5lSUQiCi1TZXQgdGhlIGNvbnRleHQgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QgbWVzc2FnZXMgc2NvcGVkUGR1LAotZ2l2ZW4gYXMgYSBoZXhhZGVjaW1hbCBzdHJpbmcuCitTZXQgdGhlIGNvbnRleHQgZW5naW5lSUQgdXNlZCBmb3IgU05NUHYzIFJFUVVFU1QgbWVzc2FnZXMgc2NvcGVkUGR1LgogSWYgbm90IHNwZWNpZmllZCwgdGhpcyB3aWxsIGRlZmF1bHQgdG8gdGhlIGF1dGhvcml0YXRpdmUgZW5naW5lSUQuCiAuVFAKIC5CIC1oLCAtLWhlbHAKQEAgLTIwNCw2ICsyMDIsNyBAQAogLlRQCiAuQkkgLXQgIiB0aW1lb3V0IgogU3BlY2lmaWVzIHRoZSB0aW1lb3V0IGluIHNlY29uZHMgYmV0d2VlbiByZXRyaWVzLiBUaGUgZGVmYXVsdCBpcyAxLgorRmxvYXRpbmcgcG9pbnQgbnVtYmVycyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IGZyYWN0aW9ucyBvZiBzZWNvbmRzLgogLlRQCiAuQkkgLXUgIiBzZWNOYW1lIgogU2V0IHRoZSBzZWN1cml0eU5hbWUgdXNlZCBmb3IgYXV0aGVudGljYXRlZCBTTk1QdjMgbWVzc2FnZXMuCkBAIC0zNTIsNiArMzUxLDE2IEBACiBkZWZhdWx0IHRyYW5zcG9ydCBpZmYgdGhlIGZpcnN0IGNoYXJhY3RlciBvZiB0aGUgPHRyYW5zcG9ydC1hZGRyZXNzPgogaXMgYSAnLycuCiAuVFAgMjQKKy5JUiAiYWxpYXM6bXluYW1lIgorcGVyZm9ybSBhIGNvbm5lY3Rpb24gdG8gdGhlCisuSSBteW5hbWUKK2FsaWFzIHdoaWNoIG5lZWRzIHRvIGJlIGRlZmluZWQgaW4gdGhlIHNubXAuY29uZiBmaWxlIHVzaW5nIGEgbGluZQorbGlrZSAiCisuSSAiYWxpYXMgbXluYW1lIHVkcDoxMjcuMC4wLjE6OTE2MSIKKyIuICBBbnkgdHlwZSBvZiB0cmFuc3BvcnQgZGVmaW5pdGlvbiBjYW4gYmUgdXNlZCBhcyB0aGUgYWxpYXMgZXhwYW5zaW9uCitwYXJhbWV0ZXIuICBBbGlhc2VzIGFyZSBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciB1c2luZyByZXBlYXRlZCBjb21wbGV4Cit0cmFuc3BvcnQgc3RyaW5ncy4KKy5UUCAyNAogLklSICJBQUw1UFZDOjEwMCIKIHBlcmZvcm0gdGhlIHF1ZXJ5IHVzaW5nIEFBTDUgUERVcyBzZW50IG9uIHRoZSBwZXJtYW5lbnQgdmlydHVhbAogY2lyY3VpdCB3aXRoIFZQST0wIGFuZCBWQ0k9MTAwIChkZWNpbWFsKSBvbiB0aGUgZmlyc3QgQVRNIGFkYXB0ZXIgaW4gdGhlCkBAIC0zNzcsNiArMzg2LDIxIEBACiBjb25uZWN0IHRvIHBvcnQgMTYxMSBvbiB0aGUgbG9jYWwgaG9zdAogLklSICIiICggOjoxIAogaW4gSVB2NiBwYXJsYW5jZSkgdXNpbmcgVENQL0lQdjYgYW5kIHBlcmZvcm0gcXVlcnkgb3ZlciB0aGF0IGNvbm5lY3Rpb24uCisuVFAgMjQKKy5JUiAiZHRsc3VkcDpob3N0bmFtZTo5MTYxIgorQ29ubmVjdHMgdXNpbmcgU05NUCBvdmVyIERUTFMvVURQIGFzIGRvY3VtZW50ZWQgYnkgdGhlIElTTVMgd29ya2luZyBncm91cAorKFJGQ3Mgbm90IHlldCBwdWJsaXNoZWQgYXMgb2YgdGhpcyBkYXRlKS4gIFRoaXMgd2lsbCByZXF1aXJlIHRoYXQgdGhlCitUU00gc2VjdXJpdHkgbW9kZWwgaXMgaW4gdXNlICgtLWRlZlNlY3VyaXR5TW9kZWw9dHNtKSBhbmQgdGhhdCB0aGUKKy5JUiBkZWZYNTA5U2VydmVyQ2VydHMsCisuSVIgZGVmWDUwOUNsaWVudFByaXYsCithbmQKKy5JUiBkZWZYNTA5Q2xpZW50UHViCitjb25maWd1cmF0aW9uIHRva2VucyBoYXZlIGJlZW4gc2V0LgorLlRQIDI0CisuSVIgInNzaDpob3N0bmFtZToyMiIKK0Nvbm5lY3RzIHVzaW5nIFNOTVAgb3ZlciBTU0ggYXMgZG9jdW1lbnRlZCBieSB0aGUgSVNNUyB3b3JraW5nIGdyb3VwCisoUkZDcyBub3QgeWV0IHB1Ymxpc2hlZCBhcyBvZiB0aGlzIGRhdGUpLiAgVGhpcyB3aWxsIHJlcXVpcmUgdGhhdCB0aGUKK1RTTSBzZWN1cml0eSBtb2RlbCBpcyBpbiB1c2UgKC0tZGVmU2VjdXJpdHlNb2RlbD10c20pLgogLlBQCiBOb3RlIHRoYXQgbm90IGFsbCB0aGUgdHJhbnNwb3J0IGRvbWFpbnMgbGlzdGVkIGFib3ZlIHdpbGwgYWx3YXlzIGJlCiBhdmFpbGFibGU7IGZvciBpbnN0YW5jZSwgaG9zdHMgd2l0aCBubyBJUHY2IHN1cHBvcnQgd2lsbCBub3QgYmUgYWJsZQpAQCAtMzg0LDcgKzQwOCw2IEBACiB0aGUgZXJyb3IgIlVua25vd24gaG9zdCIuICBMaWtld2lzZSwgc2luY2UgQUFMNSBQVkMgc3VwcG9ydCBpcyBvbmx5CiBjdXJyZW50bHkgYXZhaWxhYmxlIG9uIExpbnV4LCBpdCB3aWxsIGZhaWwgd2l0aCB0aGUgc2FtZSBlcnJvciBvbgogb3RoZXIgcGxhdGZvcm1zLgotCiAuU0ggIk1JQiBQQVJTSU5HIE9QVElPTlMiCiBUaGUgTmV0LVNOTVAgTUlCIHBhcnNlciBtb3N0bHkgYWRoZXJlcyB0byB0aGUgU3RydWN0dXJlIG9mIE1hbmFnZW1lbnQKIEluZm9ybWF0aW9uIChTTUkpLiAgQXMgdGhhdCBzcGVjaWZpY2F0aW9uIGhhcyBjaGFuZ2VkIHRocm91Z2ggdGltZSwgYW5kCkBAIC0zOTcsNyArNDIwLDcgQEAKIFN0cmljdGx5IHNwZWFraW5nLCBhIHNlY29uZCBhcHBlYXJhbmNlIG9mICItLSIgc2hvdWxkIHRlcm1pbmF0ZSB0aGUKIGNvbW1lbnQsIGJ1dCB0aGlzIGJyZWFrcyBzb21lIE1JQiBmaWxlcy4KIFRoZSBkZWZhdWx0IGJlaGF2aW91ciAodG8gaW50ZXJwcmV0IGNvbW1lbnRzIGNvcnJlY3RseSkgY2FuIGFsc28KLWJlIHNldCB3aXRoIHRoZSAobWlzbmFtZWQpIGNvbmZpZ3VyYXRpb24gdG9rZW4gXGZJc3RyaWN0Q29tbWVudFRlcm1cZlIuCitiZSBzZXQgd2l0aCB0aGUgY29uZmlndXJhdGlvbiB0b2tlbiBcZkljb21tZW50VG9FT0xcZlIuCiAuVFAKIC5CICItUGQiCiBEaXNhYmxlcyB0aGUgbG9hZGluZyBvZiBNSUIgb2JqZWN0IERFU0NSSVBUSU9OcyB3aGVuIHBhcnNpbmcgTUlCIGZpbGVzLgpkaWZmIC0tZ2l0IGEvbWFuL3NubXBkLjguZGVmIGIvbWFuL3NubXBkLjguZGVmCmluZGV4IDJhMjA4NmYuLmI4ODQ3MDAgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC44LmRlZgorKysgYi9tYW4vc25tcGQuOC5kZWYKQEAgLTEsNCArMSw0IEBACi0uVEggU05NUEQgOCAiMTAgSmFuIDIwMDciIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuVEggU05NUEQgOCAiMDEgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCiAuU0ggTkFNRQogc25tcGQgLSBkYWVtb24gdG8gcmVzcG9uZCB0byBTTk1QIHJlcXVlc3QgcGFja2V0cy4KIC5TSCBTWU5PUFNJUwpAQCAtMTkzLDYgKzE5MywxMiBAQAogaG9zdG5hbWVbOnBvcnRdCiAuSSBvcgogSVB2Ni1hZGRyZXNzWzpwb3J0XQorLlRQIDI4CisuSVIgIiIgInNzaCIKK2hvc3RuYW1lOnBvcnQKKy5UUCAyOAorLklSICIiICJkdGxzdWRwIgoraG9zdG5hbWU6cG9ydAogLlJFCiAuUFAKIE5vdGUgdGhhdCA8dHJhbnNwb3J0LXNwZWNpZmllcj4gc3RyaW5ncyBhcmUgY2FzZS1pbnNlbnNpdGl2ZSBzbyB0aGF0LApAQCAtMjI1LDYgKzIzMSwxOSBAQAogLlRQIDI0CiAuSVIgInVkcDY6MTAxNjEiCiBsaXN0ZW4gb24gcG9ydCAxMDE2MSBvbiBhbGwgSVB2NiBpbnRlcmZhY2VzLgorLlRQIDI0CisuSVIgInNzaDoxMjcuMC4wLjE6MjIiCitBbGxvd3MgY29ubmVjdGlvbnMgZnJvbSB0aGUgc25tcCBzdWJzeXN0ZW0gb24gdGhlIHNzaCBzZXJ2ZXIgb24gcG9ydAorMjIuICBUaGUgZGV0YWlscyBvZiB1c2luZyBTTk1QIG92ZXIgU1NIIGFyZSBkZWZpbmVkIGJlbG93LgorLlRQIDI0CisuSVIgImR0bHN1ZHA6MTI3LjAuMC4xOjkxNjEiCitMaXN0ZW4gZm9yIGNvbm5lY3Rpb25zIG92ZXIgRFRMUyBvbiBVRFAgcG9ydCA5MTYxLiAgVGhlIHNubXAuY29uZiBmaWxlCittdXN0IGhhdmUgdGhlCisuSVIgZGVmWDUwOVNlcnZlclB1YiwKKy5JUiBkZWZYNTA5U2VydmVyUHJpdiwKK2FuZAorLklSIGRlZlg1MDlDbGllbnRDZXJ0cworY29uZmlndXJhdGlvbiB0b2tlbnMgZGVmaW5lZC4KIC5QUAogTm90ZSB0aGF0IG5vdCBhbGwgdGhlIHRyYW5zcG9ydCBkb21haW5zIGxpc3RlZCBhYm92ZSB3aWxsIGFsd2F5cyBiZQogYXZhaWxhYmxlOyBmb3IgaW5zdGFuY2UsIGhvc3RzIHdpdGggbm8gSVB2NiBzdXBwb3J0IHdpbGwgbm90IGJlIGFibGUKQEAgLTIzMiw2ICsyNTEsNzcgQEAKIHRoZSBlcnJvciAiRXJyb3Igb3BlbmluZyBzcGVjaWZpZWQgZW5kcG9pbnQiLiAgTGlrZXdpc2UsIHNpbmNlIEFBTDUKIFBWQyBzdXBwb3J0IGlzIG9ubHkgY3VycmVudGx5IGF2YWlsYWJsZSBvbiBMaW51eCwgaXQgd2lsbCBmYWlsIHdpdGgKIHRoZSBzYW1lIGVycm9yIG9uIG90aGVyIHBsYXRmb3Jtcy4KKy5TSCBUcmFuc3BvcnQgU3BlY2lmaWMgTm90ZXMKKy5SUyAwCisuVFAgOAorc3NoCitUaGUgU1NIIHRyYW5zcG9ydCwgb24gdGhlIHNlcnZlciBzaWRlLCBpcyBhY3R1YWxseSBqdXN0IGEgdW5peAorbmFtZWQgcGlwZSB0aGF0IGNhbiBiZSBjb25uZWN0ZWQgdG8gdmlhIGEgc3NoIHN1YnN5c3RlbSBjb25maWd1cmVkIGluCit0aGUgbWFpbiBzc2ggc2VydmVyLiAgVGhlIHBpcGUgbG9jYXRpb24gKGNvbmZpZ3VyYWJsZSB3aXRoIHRoZQorc3NodG9zbm1wc29ja2V0IHRva2VuIGluIHNubXAuY29uZikgaXMKKy5JIC92YXIvbmV0LXNubXAvc3NodG9zbm1wLgorUGFja2V0cyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIGl0IHZpYSB0aGUgc3NodG9zbm1wIGFwcGxpY2F0aW9uLCB3aGljaAorYWxzbyBzZW5kcyB0aGUgdXNlciBJRCBhcyB3ZWxsIHdoZW4gc3RhcnRpbmcgdGhlIGNvbm5lY3Rpb24uICBUaGUgVFNNCitzZWN1cml0eSBtb2RlbCBzaG91bGQgYmUgdXNlZCB3aGVuIHBhY2tldHMgc2hvdWxkIHByb2Nlc3MgaXQuCisuSVAKK1RoZQorLkkgc3NodG9zbm1wCitjb21tYW5kIGtub3dzIGhvdyB0byBjb25uZWN0IHRvIHRoaXMgcGlwZSBhbmQgdGFsayB0bworaXQuICBJdCBzaG91bGQgYmUgY29uZmlndXJlZCBpbiB0aGUKKy5JUiAiT3BlblNTSCBzc2hkIgorY29uZmlndXJhdGlvbiBmaWxlICh3aGljaCBpcyBub3JtYWxseQorLklSICIvZXRjL3NzaC9zc2hkX2NvbmZpZyIKK3VzaW5nIHRoZSBmb2xsb3dpbmcgY29uZmlndXJhdGlvbiBsaW5lOgorLlRQIDgKKy5JUAorU3Vic3lzdGVtIHNubXAgL3Vzci9sb2NhbC9iaW4vc3NodG9zbm1wCisuSVAKK1RoZQorLkkgc3NodG9zbm1wCitjb21tYW5kIHdpbGwgbmVlZCByZWFkL3dyaXRlIGFjY2VzcyB0byB0aGUgCisuSSAvdmFyL25ldC1zbm1wL3NzaHRvc25tcAorcGlwZS4gIEFsdGhvdWdoIGl0IHNob3VsZCBiZSBmYWlybHkgc2FmZSB0byBncmFudCBhY2Nlc3MgdG8gdGhlCithdmVyYWdlIHVzZXIgc2luY2UgaXQgc3RpbGwgcmVxdWlyZXMgbW9kaWZpY2F0aW9ucyB0byB0aGUgQUNNIHNldHRpbmdzCitiZWZvcmUgdGhlIHVzZXIgY2FuIHBlcmZvcm0gb3BlcmF0aW9ucywgcGFyYW5vaWQgYWRtaW5pc3RyYXRvcnMgbWF5Cit3YW50IHRvIG1ha2UgdGhlIC92YXIvbmV0LXNubXAgZGlyZWN0b3J5IGFjY2Vzc2libGUgb25seSBieSB1c2VycyBpbiBhCitwYXJ0aWN1bGFyIGdyb3VwLiAgVXNlIHRoZQorLkkgc3NodG9zbm1wc29ja2V0cGVybXMKK3NubXAuY29uZiBjb25maWd1cmUgb3B0aW9uIHRvIHNldCB0aGUgcGVybWlzc2lvbnMsIG93bmVyIGFuZCBncm91cCBvZgordGhlIGNyZWF0ZWQgc29ja2V0LgorLklQCitBY2Nlc3MgY29udHJvbCBjYW4gYmUgZ3JhbnRlZCB0byB0aGUgdXNlciAiZm9vIiB1c2luZyB0aGUgZm9sbG93aW5nCitzdHlsZSBvZiBzaW1wbGUgc25tcGQuY29uZiBzZXR0aW5nczoKKy5UUCA4CisuSVAKK3JvdXNlciAtcyB0c20gZm9vIGF1dGhwcml2CisuSVAKK05vdGUgdGhhdCAiYXV0aHByaXYiIGlzIGFjY2VwdGFibGUgYXNzdW1pbmcgYXMgU1NIIHByb3RlY3RzIGV2ZXJ5dGhpbmcKK3RoYXQgd2F5IChhc3N1bWluZyB5b3UgaGF2ZSBhIG5vbi1pbnNhbmUgc2V0dXApLgorc25tcGQgaGFzIG5vIG5vdGlvbiBvZiBob3cgU1NIIGhhcyBhY3R1YWxseSBwcm90ZWN0ZWQgYSBwYWNrZXQgYW5kCit0aHVzIHRoZSBzbm1wIGFnZW50IGFzc3VtZXMgYWxsIHBhY2tldHMgcGFzc2VkIHRocm91Z2ggdGhlIFNTSAordHJhbnNwb3J0IGhhdmUgYmVlbiBwcm90ZWN0ZWQgYXQgdGhlIGF1dGhwcml2IGxldmVsLgorLlRQIDgKK2R0bHN1ZHAKK1RoZSBEVExTIHByb3RvY29sLCB3aGljaCBpcyBiYXNlZCBvZmYgb2YgVExTLCByZXF1aXJlcyBib3RoIGNsaWVudCBhbmQKK3NlcnZlciBjZXJ0aWZpY2F0ZXMgdG8gZXN0YWJsaXNoIHRoZSBjb25uZWN0aW9uIGFuZCBhdXRoZW50aWNhdGUgYm90aAorc2lkZXMuICBJbiBvcmRlciB0byBkbyB0aGlzLCB0aGUgY2xpZW50IHdpbGwgbmVlZCB0byBjb25maWd1cmUgdGhlCitzbm1wLmNvbmYgZmlsZQord2l0aCB0aGUKKy5JUiBkZWZYNTA5U2VydmVyQ2VydHMsCisuSVIgZGVmWDUwOUNsaWVudFByaXYsCithbmQKKy5JUiBkZWZYNTA5Q2xpZW50UHViCitjb25maWd1cmF0aW9uIHRva2Vucy4gIFRoZSBzZXJ2ZXIgd2lsbCBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUgc25tcC5jb25mCitmaWxlIHdpdGggdGhlCisuSVIgZGVmWDUwOVNlcnZlclB1YiwKKy5JUiBkZWZYNTA5U2VydmVyUHJpdiwKK2FuZAorLklSIGRlZlg1MDlDbGllbnRDZXJ0cworY29uZmlndXJhdGlvbiB0b2tlbnMgZGVmaW5lZC4KKy5JUAorQWNjZXNzIGNvbnRyb2wgc2V0dXAgaXMgc2ltaWxhciB0byB0aGUgc3NoIHRyYW5zcG9ydCBhcyB0aGUgVFNNCitzZWN1cml0eSBtb2RlbCBzaG91bGQgYmUgdXNlZCB0byBwcm90ZWN0IHRoZSBwYWNrZXQuCisuUkUKIC5TSCBDT05GSUdVUkFUSU9OIEZJTEVTCiAuUFAKIC5CIHNubXBkCmRpZmYgLS1naXQgYS9tYW4vc25tcGQuY29uZi41LmRlZiBiL21hbi9zbm1wZC5jb25mLjUuZGVmCmluZGV4IDFlN2NiMmMuLmM3ZTRiNmEgMTAwNjQ0Ci0tLSBhL21hbi9zbm1wZC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wZC5jb25mLjUuZGVmCkBAIC05Nyw3ICs5Nyw3IEBACiBpbiBvcmRlciB0byByZXNwb25kIHRvIFNOTVB2MyByZXF1ZXN0cy4KIFRoaXMgSUQgd2lsbCBub3JtYWxseSBiZSBkZXRlcm1pbmVkIGF1dG9tYXRpY2FsbHksIHVzaW5nIHR3byByZWFzb25hYmx5CiBub24tcHJlZGljdGFibGUgdmFsdWVzIC0gYSAocHNldWRvLSlyYW5kb20gbnVtYmVyIGFuZCB0aGUgY3VycmVudAotdXB0aW1lIGluIHNlY29uZHMuIFRoaXMgaXMgdGhlIHJlY29tbWVuZGVkIGFwcHJvYWNoLiBIb3dldmVyIHRoZQordGltZSBpbiBzZWNvbmRzLiBUaGlzIGlzIHRoZSByZWNvbW1lbmRlZCBhcHByb2FjaC4gSG93ZXZlciB0aGUKIGNhcGFjaXR5IGV4aXN0cyB0byBkZWZpbmUgdGhlIGVuZ2luZUlEIGluIG90aGVyIHdheXM6CiAuSVAgImVuZ2luZUlEIFNUUklORyIKIHNwZWNpZmllcyB0aGF0IHRoZSBlbmdpbmVJRCBzaG91bGQgYmUgYnVpbHQgZnJvbSB0aGUgZ2l2ZW4gdGV4dCBTVFJJTkcuCkBAIC0xMTQsMTMgKzExNCwyMSBAQAogLlwiCiAuXCIgV2hhdCBpZiB0aGlzIGRvZXNuJ3QgZXhpc3QgPwogLlwiCi0uU0ggQUNDRVNTIENPTlRST0wKLS5CIHNubXBkCi1zdXBwb3J0cyB0aGUgVmlldy1CYXNlZCBBY2Nlc3MgQ29udHJvbCBNb2RlbCAoVkFDTSkgYXMgZGVmaW5lZCBpbiBSRkMKLTI1NzUsIHRvIGNvbnRyb2wgd2hvIGNhbiByZXRyaWV2ZSBvciB1cGRhdGUgaW5mb3JtYXRpb24uICBUbyB0aGlzIGVuZCwKLWl0IHJlY29nbml6ZXMgdmFyaW91cyBkaXJlY3RpdmVzIHJlbGF0aW5nIHRvIGFjY2VzcyBjb250cm9sLgotVGhlc2UgZmFsbCBpbnRvIGZvdXIgYmFzaWMgZ3JvdXBzLgotLlNTIFNOTVB2MyBVc2VycworLlNIIFNOTVB2MyBBVVRIRU5USUNBVElPTgorU05NUHYzIHdhcyBvcmlnaW5hbGx5IGRlZmluZWQgdXNpbmcgdGhlIFVzZXItQmFzZWQgU2VjdXJpdHkgTW9kZWwKKyhVU00pLCB3aGljaCBjb250YWlucyBhIHByaXZhdGUgbGlzdCBvZiB1c2VycyBhbmQga2V5cyBzcGVjaWZpYyB0byB0aGUKK1NOTVB2MyBwcm90b2NvbC4gIFRoZSBvcGVyYXRpb25hbCBjb21tdW5pdHksIGhvd2V2ZXIsIGRlY2xhcmVkIGl0IGEKK3BhaW4gdG8gbWFuaXB1bGF0ZSB5ZXQgYW5vdGhlciBkYXRhYmFzZSBhbmQgd291bGQgcHJlZmVyIHRvIHVzZQorZXhpc3RpbmcgaW5mcmFzdHJ1Y3R1cmUuICBUbyB0aGF0IGVuZCB0aGUgSUVURiBjcmVhdGVkIHRoZSBJU01TCit3b3JraW5nIGdyb3VwIHRvIGJhdHRsZSB0aGF0IHByb2JsZW0sIGFuZCB0aGUgSVNNUyB3b3JraW5nIGdyb3VwCitkZWNpZGVkIHRvIHR1bm5lbCBTTk1QIG92ZXIgU1NIIGFuZCBEVExTIHRvIG1ha2UgdXNlIGV4aXN0aW5nIHVzZXIgYW5kCithdXRoZW50aWNhdGlvbiBpbmZyYXN0cnVjdHVyZXMuCisuU1MgU05NUHYzIFVTTSBVc2VycworVG8gdXNlIHRoZSBVU00gYmFzZWQgU05NUHYzLXNwZWNpZmljIHVzZXJzLCB5b3UnbGwgbmVlZCB0byBjcmVhdGUKK3RoZW0uICBJdCBpcyByZWNvbW1lbmRlZCB5b3UKKy5CICJ1c2UgdGhlIG5ldC1zbm1wLWNvbmZpZyBjb21tYW5kIgordG8gZG8gdGhpcywgYnV0IHlvdSBjYW4gYWxzbyBkbyBpdCBieSBkaXJlY3RseSBzcGVjaWZ5aW5nIGNyZWF0ZVVzZXIKK2RpcmVjdGl2ZXMgeW91cnNlbGYgaW5zdGVhZDoKIC5JUCAiY3JlYXRlVXNlciBbLWUgRU5HSU5FSURdIHVzZXJuYW1lIChNRDV8U0hBKSBhdXRocGFzc3BocmFzZSBbREVTfEFFU10gW3ByaXZwYXNzcGhyYXNlXSIKIC5JUAogTUQ1IGFuZCBTSEEgYXJlIHRoZSBhdXRoZW50aWNhdGlvbiB0eXBlcyB0byB1c2UuICBERVMgYW5kIEFFUyBhcmUgdGhlCkBAIC0xNzcsMTIgKzE4NSw0MyBAQAogc3VwcG9ydGVkIGFsZ29yaXRobXMpLiAgTWFzdGVyIGVuY3J5cHRpb24ga2V5cywgdGhvdWdoLCBuZWVkIHRvIGJlIHRoZQogbGVuZ3RoIHJlcXVpcmVkIGJ5IHRoZSBhdXRoZW50aWNhdGlvbiBhbGdvcml0aG0gbm90IHRoZSBsZW5ndGgKIHJlcXVpcmVkIGJ5IHRoZSBlbmNyeXB0aW5nIGFsZ29yaXRobSAoTUQ1OiAxNiBieXRlcywgU0hBOiAyMCBieXRlcykuCisuU1MgU1NIIFN1cHBvcnQKK1RvIHVzZSBTU0gsIHlvdSdsbCBuZWVkIHRvIGNvbmZpZ3VyZSBzc2hkIHRvIGludm9rZSBzc2h0b3NubXAgYXMgd2VsbAorYXMgY29uZmlndXJlIHRoZSBhY2Nlc3MgY29udHJvbCBzZXR0aW5ncyB0byBhbGxvdyBhY2Nlc3MgdGhyb3VnaCB0aGUKK3RzbSBzZWN1cml0eSBtb2RlbCB1c2luZyB0aGUgdXNlciBuYW1lIHByb3ZpZGVkIHRvIHNubXBkIGJ5IHRoZSBzc2gKK3RyYW5zcG9ydC4KKy5TUyBEVExTIFN1cHBvcnQKK0ZvciBEVExTLAorLkIgc25tcGQKK3dpbGwgbmVlZCB0byBiZSBjb25maWd1cmVkIHdpdGggaXQncyBvd24gWC41MDkgY2VydGlmaWNhdGUgYXMgd2VsbCBhcwordGhlIGNlcnRpZmljYXRlcyBvZiB0aGUgY2xpZW50IHVzZXJzIHRvIGJlIGFsbG93ZWQgdG8gY29ubmVjdCB0byB0aGUKK2FnZW50LiAgVGhlIGFjY2VzcyBjb250cm9sIHdpbGwgbmVlZCB0byBiZSBzZXQgdXAgYXMgd2VsbCB0byBhbGxvdworYWNjZXNzIHRocm91Z2ggdGhlCisuSSB0c20KK3NlY3VyaXR5IG1vZGVsLiAgVGhlIENvbW1vbk5hbWUgb2YgdGhlIFN1YmplY3QgZnJvbSB0aGUgWC41MDkKK2NlcnRpZmljYXRlIHdpbGwgYmUgcGFzc2VkIHRvIHNubXBkIGFzIHRoZSBTTk1QdjMgdXNlcm5hbWUgdG8gdXNlLgorU2VlIHRoZSBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy93aWtpL2luZGV4LnBocC9Vc2luZ19EVExTIHdlYiBwYWdlIGZvcgorbW9yZSBkZXRhaWxlZCBpbnN0cnVjdGlvbnMgZm9yIHNldHRpbmcgdXAgRFRMUy4KKy5JUCAiZGVmWDUwOVNlcnZlclB1YiBGSUxFIgorLklQICJkZWZYNTA5U2VydmVyUHJpdiBGSUxFIgorVGhlc2UgdHdvIGRpcmVjdGl2ZXMgc3BlY2lmeSB0aGUgcHVibGljIGFuZCBwcml2YXRlIGtleSBmaWxlcyBmb3IgdGhlCitjZXJ0aWZpY2F0ZSB0aGF0CisuQiBzbm1wZAorc2hvdWxkIHByZXNlbnQgdG8gaW5jb21pbmcgY29ubmVjdGlvbnMuCisuSVAgImRlZlg1MDlDbGllbnRDZXJ0cyBGSUxFIgorVGhpcyBkaXJlY3RpdmUgc3BlY2lmaWVzIGEgZmlsZSBjb250YWluaW5nIGFsbCBvZiB0aGUgcHVibGljIGtleXMgKG9yCitDQXMgb2YgcHVibGljIGtleXMpIGZvciBjbGllbnRzIHRvIGNvbm5lY3QgdGhlIHNlcnZlciB3aXRoLgorLlNIIEFDQ0VTUyBDT05UUk9MCisuQiBzbm1wZAorc3VwcG9ydHMgdGhlIFZpZXctQmFzZWQgQWNjZXNzIENvbnRyb2wgTW9kZWwgKFZBQ00pIGFzIGRlZmluZWQgaW4gUkZDCisyNTc1LCB0byBjb250cm9sIHdobyBjYW4gcmV0cmlldmUgb3IgdXBkYXRlIGluZm9ybWF0aW9uLiAgVG8gdGhpcyBlbmQsCitpdCByZWNvZ25pemVzIHZhcmlvdXMgZGlyZWN0aXZlcyByZWxhdGluZyB0byBhY2Nlc3MgY29udHJvbC4KIC5TUyBUcmFkaXRpb25hbCBBY2Nlc3MgQ29udHJvbAogTW9zdCBzaW1wbGUgYWNjZXNzIGNvbnRyb2wgcmVxdWlyZW1lbnRzIGNhbiBiZSBzcGVjaWZpZWQgdXNpbmcgdGhlCiBkaXJlY3RpdmVzIFxmSXJvdXNlclxmUi9cZklyd3VzZXJcZlIgKGZvciBTTk1QdjMpIG9yCiBcZklyb2NvbW11bml0eVxmUi9cZklyd2NvbW11bml0eVxmUiAoZm9yIFNOTVB2MSBvciBTTk1QdjJjKS4KLS5JUCAicm91c2VyIFVTRVIgW25vYXV0aHxhdXRofHByaXYgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCi0uSVAgInJ3dXNlciBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyb3VzZXIgWy1zIFNFQ01PREVMXSBVU0VSIFtub2F1dGh8YXV0aHxwcml2IFtPSUQgfCAtViBWSUVXIFtDT05URVhUXV1dIgorLklQICJyd3VzZXIgWy1zIFNFQ01PREVMXSAgVVNFUiBbbm9hdXRofGF1dGh8cHJpdiBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKIHNwZWNpZnkgYW4gU05NUHYzIHVzZXIgdGhhdCB3aWxsIGJlIGFsbG93ZWQgcmVhZC1vbmx5IChHRVQgYW5kIEdFVE5FWFQpCiBvciByZWFkLXdyaXRlIChHRVQsIEdFVE5FWFQgYW5kIFNFVCkgYWNjZXNzIHJlc3BlY3RpdmVseS4KIEJ5IGRlZmF1bHQsIHRoaXMgd2lsbCBwcm92aWRlIGFjY2VzcyB0byB0aGUgZnVsbCBPSUQgdHJlZSBmb3IgYXV0aGVudGljYXRlZApAQCAtMTk0LDYgKzIzMywxMyBAQAogQW4gb3B0aW9uYWwgY29udGV4dCBjYW4gYWxzbyBiZSBzcGVjaWZpZWQsIG9yICJjb250ZXh0KiIgdG8gZGVub3RlIGEgY29udGV4dAogcHJlZml4LiAgSWYgbm8gY29udGV4dCBmaWVsZCBpcyBzcGVjaWZpZWQgKG9yIHRoZSB0b2tlbiAiKiIgaXMgdXNlZCksIHRoZQogZGlyZWN0aXZlIHdpbGwgbWF0Y2ggYWxsIHBvc3NpYmxlIGNvbnRleHRzLgorLklQCitJZiBTRUNNT0RFTCBpcyBzcGVjaWZpZWQgdGhlbiBpdCB3aWxsIGJlIHRoZSBzZWN1cml0eSBtb2RlbCByZXF1aXJlZAorZm9yIHRoYXQgdXNlciAobm90ZSB0aGF0IGlkZW50aWNhbCB1c2VyIG5hbWVzIG1heSBjb21lIGluIG92ZXIKK2RpZmZlcmVudCBzZWN1cml0eSBtb2RlbHMgYW5kIHdpbGwgYmUgYXBwcm9wcmlhdGVseSBzZXBhcmF0ZWQgdmlhIHRoZQorYWNjZXNzIGNvbnRyb2wgc2V0dGluZ3MpLiAgVGhlIGRlZmF1bHQgc2VjdXJpdHkgbW9kZWwgaXMgInVzbSIgYW5kIHRoZQorb3RoZXIgY29tbW9uIHNlY3VyaXR5IG1vZGVscyBhcmUgbGlrZWx5ICJ0c20iIHdoZW4gdXNpbmcgU1NIIG9yIERUTFMKK3N1cHBvcnQgYW5kICJrc20iIGlmIHRoZSBLZXJiZXJvcyBzdXBwb3J0IGhhcyBiZWVuIGNvbXBpbGVkIGluLgogLklQICJyb2NvbW11bml0eSBDT01NVU5JVFkgW1NPVVJDRSBbT0lEIHwgLVYgVklFVyBbQ09OVEVYVF1dXSIKIC5JUCAicndjb21tdW5pdHkgQ09NTVVOSVRZIFtTT1VSQ0UgW09JRCB8IC1WIFZJRVcgW0NPTlRFWFRdXV0iCiBzcGVjaWZ5IGFuIFNOTVB2MSBvciBTTk1QdjJjIGNvbW11bml0eSB0aGF0IHdpbGwgYmUgYWxsb3dlZCByZWFkLW9ubHkKQEAgLTI0OCw3ICsyOTQsNyBAQAogZGVmYXVsdCBjb250ZXh0ICgiIikgd2lsbCBiZSB1c2VkLgogLklQICJjb20yc2VjdW5peCBbLUNuIENPTlRFWFRdIFNFQ05BTUUgU09DS1BBVEggQ09NTVVOSVRZIgogaXMgdGhlIFVuaXggZG9tYWluIHNvY2tldHMgdmVyc2lvbiBvZiBcZkljb20yc2VjXGZSLgotLklQICJncm91cCBHUk9VUCB7djF8djJjfHVzbX0gU0VDTkFNRSIKKy5JUCAiZ3JvdXAgR1JPVVAge3YxfHYyY3x1c218dHNtfGtzbX0gU0VDTkFNRSIKIG1hcHMgYSBzZWN1cml0eSBuYW1lIChpbiB0aGUgc3BlY2lmaWVkIHNlY3VyaXR5IG1vZGVsKSBpbnRvCiBhIG5hbWVkIGdyb3VwLiAgU2V2ZXJhbCBcZklncm91cFxmUiBkaXJlY3RpdmVzIGNhbiBzcGVjaWZ5IHRoZQogc2FtZSBncm91cCBuYW1lLCBhbGxvd2luZyBhIHNpbmdsZSBhY2Nlc3Mgc2V0dGluZyB0byBhcHBseSB0byBzZXZlcmFsIApAQCAtMjkzLDcgKzMzOSw3IEBACiAuSVAKIE5vdGUgdGhhdCBhIG1hc2sgbG9uZ2VyIHRoYW4gOCBiaXRzIG11c3QgdXNlICc6JyB0byBzZXBhcmF0ZSB0aGUgaW5kaXZpZHVhbAogb2N0ZXRzLgotLklQICJhY2Nlc3MgR1JPVVAgQ09OVEVYVCB7YW55fHYxfHYyY3x1c219IExFVkVMIFBSRUZYIFJFQUQgV1JJVEUgTk9USUZZIgorLklQICJhY2Nlc3MgR1JPVVAgQ09OVEVYVCB7YW55fHYxfHYyY3x1c218dHNtfGtzbX0gTEVWRUwgUFJFRlggUkVBRCBXUklURSBOT1RJRlkiCiBtYXBzIGZyb20gYSBncm91cCBvZiB1c2Vycy9jb21tdW5pdGllcyAod2l0aCBhIHBhcnRpY3VsYXIgc2VjdXJpdHkgbW9kZWwKIGFuZCBtaW5pbXVtIHNlY3VyaXR5IGxldmVsLCBhbmQgaW4gYSBzcGVjaWZpYyBjb250ZXh0KSB0byBvbmUgb2YgdGhyZWUgdmlld3MsCiBkZXBlbmRpbmcgb24gdGhlIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgpAQCAtMzgwLDYgKzQyNiwxOCBAQAogaW50ZXJmYWNlcyB3aGVyZSB0aGUgYWdlbnQgZmFpbHMgdG8gZGV0ZXJtaW5lIHRoaXMgaW5mb3JtYXRpb24gY29ycmVjdGx5LgogVFlQRSBpcyBhIHR5cGUgdmFsdWUgYXMgZ2l2ZW4gaW4gdGhlIElBTkFpZlR5cGUtTUlCLAogYW5kIGNhbiBiZSBzcGVjaWZpZWQgbnVtZXJpY2FsbHkgb3IgYnkgbmFtZSAoYXNzdW1pbmcgdGhpcyBNSUIgaXMgbG9hZGVkKS4KKy5JUCAiaW50ZXJmYWNlX2ZhZGVvdXQgVElNRU9VVCIKK3NwZWNpZmllcywgZm9yIGhvdyBsb25nIHRoZSBhZ2VudCBrZWVwcyBlbnRyaWVzIGluIFxmQ2lmVGFibGVcZlIgYWZ0ZXIKK2FwcHJvcHJpYXRlIGludGVyZmFjZXMgaGF2ZSBiZWVuIHJlbW92ZWQgZnJvbSBzeXN0ZW0gKHR5cGljYWxseSB2YXJpb3VzIHBwcCwKK3RhcCBvciB0dW4gaW50ZXJmYWNlcykuIFRpbWVvdXQgdmFsdWUgaXMgaW4gc2Vjb25kcy4gRGVmYXVsdCB2YWx1ZSBpcyAzMDAKKyg9NSBtaW51dGVzKS4KKy5JUCAiaW50ZXJmYWNlX3JlcGxhY2Vfb2xkIHllcyIKK2NhbiBiZSB1c2VkIHRvIHJlbW92ZSBhbHJlYWR5IGV4aXN0aW5nIGVudHJpZXMgaW4gXGZDaWZUYWJsZVxmUiB3aGVuIGFuCitpbnRlcmZhY2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFwcGVhcnMgb24gdGhlIHN5c3RlbS4gRS5nLiB3aGVuIHBwcDAgaW50ZXJmYWNlCitpcyByZW1vdmVkLCBpdCBpcyBzdGlsbCBsaXN0ZWQgaW4gdGhlIHRhYmxlIGZvciBcZklpbnRlcmZhY2VfZmFkZW91dFxmUgorc2Vjb25kcy4gVGhpcyBvcHRpb24gZW5zdXJlcywgdGhhdCB0aGUgb2xkIHBwcDAgaW50ZXJmYWNlIGlzIHJlbW92ZWQgZXZlbgorYmVmb3JlIHRoZSBcZklpbnRlcmZhY2VfZmFkZW91dFxmUiB0aW1lb3VyIHdoZW4gbmV3IHBwcDAgKHdpdGggZGlmZmVyZW50CitcZkNpZkluZGV4XGZSKSBzaG93cyB1cC4KIC5TUyBIb3N0IFJlc291cmNlcyBHcm91cAogVGhpcyByZXF1aXJlcyB0aGF0IHRoZSBhZ2VudCB3YXMgYnVpbHQgd2l0aCBzdXBwb3J0IGZvciB0aGUKIFxmSWhvc3RcZlIgbW9kdWxlICh3aGljaCBpcyBub3cgaW5jbHVkZWQgYXMgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCAKQEAgLTY2OCw2ICs3MjYsMTIgQEAKIG9iamVjdCAoXGZDc25tcEVuYWJsZUF1dGhlblRyYXBzLjBcZlIpIGlzIHJlYWQtd3JpdGUsIGJ1dCBzcGVjaWZ5aW5nCiB0aGlzIGRpcmVjdGl2ZSBtYWtlcyB0aGlzIG9iamVjdCByZWFkLW9ubHksIGFuZCBhdHRlbXB0cyB0byBzZXQgdGhlCiB2YWx1ZSB2aWEgU0VUIHJlcXVlc3RzIHdpbGwgcmVzdWx0IGluIGEgXGZJbm90V3JpdGFibGVcZlIgZXJyb3IgcmVzcG9uc2UuCisuUkUKKy5JUCAidjF0cmFwYWRkcmVzcyBIT1NUIgorZGVmaW5lcyB0aGUgYWdlbnQgYWRkcmVzcywgd2hpY2ggaXMgaW5zZXJ0ZWQgaW50byBTTk1QdjEgVFJBUHMuIEFyYml0cmFyeSBsb2NhbCAKK0lQdjQgYWRkcmVzcyBpcyBjaG9zZW4gaWYgdGhpcyBvcHRpb24gaXMgb21taXRlZC4gVGhpcyBvcHRpb24gaXMgdXNlZnVsIG1haW5seSAKK3doZW4gdGhlIGFnZW50IGlzIHZpc2libGUgZnJvbSBvdXRzaWRlIHdvcmxkIGJ5IHNwZWNpZmljIGFkZHJlc3Mgb25seSAoZS5nLiAKK2JlY2F1c2Ugb2YgbmV0d29yayBhZGRyZXNzIHRyYW5zbGF0aW9uIG9yIGZpcmV3YWxsKS4KIC5TUyAiRGlzTWFuIEV2ZW50IE1JQiIKIFRoZSBwcmV2aW91cyBkaXJlY3RpdmVzIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZSB3aGVyZSB0cmFwcyBzaG91bGQKIGJlIHNlbnQsIGJ1dCBhcmUgbm90IGNvbmNlcm5lZCB3aXRoIFxmSXdoZW5cZlIgdG8gc2VuZCBzdWNoIHRyYXBzCmRpZmYgLS1naXQgYS9tYW4vc25tcG5ldHN0YXQuMS5kZWYgYi9tYW4vc25tcG5ldHN0YXQuMS5kZWYKaW5kZXggOGUxNDUwYS4uOTJjZmVlNCAxMDA2NDQKLS0tIGEvbWFuL3NubXBuZXRzdGF0LjEuZGVmCisrKyBiL21hbi9zbm1wbmV0c3RhdC4xLmRlZgpAQCAtOTEsNiArOTEsMTIgQEAKIHRyYWZmaWMgb24gdGhlIGNvbmZpZ3VyZWQgbmV0d29yayBpbnRlcmZhY2VzLgogVGhlIGZvdXJ0aCBmb3JtIGRpc3BsYXlzIHN0YXRpc3RpY3MgYWJvdXQgdGhlIG5hbWVkIHByb3RvY29sLgogLlBQCisuQiBzbm1wbmV0c3RhdAord2lsbCBpc3N1ZSBHRVRCVUxLIHJlcXVlc3RzIHRvIHF1ZXJ5IGZvciBpbmZvcm1hdGlvbgoraWYgYXQgbGVhc3QgcHJvdG9jb2wgdmVyc2lvbgorLkkgdjIKK2lzIHVzZWQuCisuUFAKIEFHRU5UIGlkZW50aWZpZXMgYSB0YXJnZXQgU05NUCBhZ2VudCwgd2hpY2ggaXMKIGluc3RydW1lbnRlZCB0byBtb25pdG9yIHRoZSBnaXZlbiBvYmplY3RzLgogQXQgaXRzIHNpbXBsZXN0LCB0aGUgQUdFTlQgc3BlY2lmaWNhdGlvbiB3aWxsCkBAIC0xNjMsNiArMTY5LDExIEBACiBpcyBhbHNvIHByZXNlbnQsIHNob3cgcGVyLXByb3RvY29sIHJvdXRpbmcgc3RhdGlzdGljcyBpbnN0ZWFkIG9mIAogdGhlIHJvdXRpbmcgdGFibGVzLgogLlBQCisuQkkgXC1DUiAiIHJlcGVhdGVycyIKK0ZvciBHRVRCVUxLIHJlcXVlc3RzLAorLkkgcmVwZWF0ZXJzCitzcGVjaWZpZXMgdGhlIG1heC1yZXBlYXRlcnMgdmFsdWUgdG8gdXNlLgorLlBQCiBXaGVuICBzbm1wbmV0c3RhdCBpcyBpbnZva2VkIHdpdGggYW4gaW50ZXJ2YWwgYXJndW1lbnQsIGl0CiBkaXNwbGF5cyBhIHJ1bm5pbmcgY291bnQgb2Ygc3RhdGlzdGljcyByZWxhdGVkIHRvICBuZXR3b3JrCiBpbnRlcmZhY2VzLgpkaWZmIC0tZ2l0IGEvbWFuL3NubXB0cmFwZC44LmRlZiBiL21hbi9zbm1wdHJhcGQuOC5kZWYKaW5kZXggMjlkNTY1YS4uYjYyNDdiZiAxMDA2NDQKLS0tIGEvbWFuL3NubXB0cmFwZC44LmRlZgorKysgYi9tYW4vc25tcHRyYXBkLjguZGVmCkBAIC01MSw3ICs1MSw4IEBACiAuQkkgIi1jIiAiIEZJTEUiCiBSZWFkIAogLkkgRklMRQotYXMgYSBjb25maWd1cmF0aW9uIGZpbGUuCithcyBhIGNvbmZpZ3VyYXRpb24gZmlsZQorKG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBmaWxlcykuCiAuVFAKIC5CIC1DCiBEbyBub3QgcmVhZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyBleGNlcHQgdGhlIG9uZSBvcHRpb25hbGx5IHNwZWNpZmllZCBieSB0aGUgCkBAIC02OCwxMSArNjksNiBAQAogLklSIEFMTAogZm9yIGV4dHJlbWVseSB2ZXJib3NlIG91dHB1dC4KIC5UUAotLkIgLWUKLVByaW50IGV2ZW50IG51bWJlcnMgKHJpc2luZy9mYWxsaW5nIGFsYXJtIGV0Yy4pIGZyb20gdGhlIChvYnNvbGV0ZSkgTTJNLU1JQi4KLS5icgotVGhpcyBmdW5jdGlvbmFsaXR5IGlzIGJlaW5nIGRlcHJlY2F0ZWQgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBkdWUgY291cnNlLgotLlRQCiAuQiAtZgogRG8gbm90IGZvcmsoKSBmcm9tIHRoZSBjYWxsaW5nIHNoZWxsLgogLlRQCmRpZmYgLS1naXQgYS9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYgYi9tYW4vc25tcHRyYXBkLmNvbmYuNS5kZWYKaW5kZXggMzJlM2FmNS4uZGNjMDE3ZCAxMDA2NDQKLS0tIGEvbWFuL3NubXB0cmFwZC5jb25mLjUuZGVmCisrKyBiL21hbi9zbm1wdHJhcGQuY29uZi41LmRlZgpAQCAtMSw0ICsxLDQgQEAKLS5USCBTTk1QVFJBUEQuQ09ORiA1ICIyNSBTZXAgMjAwNiIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QVFJBUEQuQ09ORiA1ICIxOSBGZWIgMjAwOSIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wdHJhcGQuY29uZiAtIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIE5ldC1TTk1QIG5vdGlmaWNhdGlvbiByZWNlaXZlcgogLlNIIERFU0NSSVBUSU9OCkBAIC0xNTUsMTMgKzE1NSwxOCBAQAogc2hvdWxkIGJlIGRpc3BsYXllZC4KIFNlZSB0aGUgc2VjdGlvbiBPVVRQVVQgT1BUSU9OUyBpbiB0aGUKIFxmSXNubXBjbWQoMSlcZlIgbWFudWFsIHBhZ2UgZm9yIGRldGFpbHMuCi0uSVAgInByaW50RXZlbnROdW1iZXJzIHllcyIKLWVuYWJsZXMgc3BlY2lhbGlzZWQgbG9nZ2luZyBvZiBldmVudC1yZWxhdGVkIG5vdGlmaWNhdGlvbnMgZnJvbQotdGhlIChsb25nIG9ic29sZXRlKSBNMk0tTUlCLgotLlwiCi0uXCIgWFhYIC0gQ0hFQ0sgRVhBQ1RMWSBXSElDSCBUUkFQUwotLlwiIFhYWCAtIFRISVMgRkVFTFMgT0JTT0xFVEUgVE8gTUUhCi0uXCIKKy5TSCBNeVNRTCBMb2dnaW5nCitUaGVyZSBhcmUgdHdvIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgd29yayB0b2dldGhlciB0byBjb250cm9sCit3aGVuIHF1ZXVlZCB0cmFwcyBhcmUgbG9nZ2VkIHRvIHRoZSBNeVNRTCBkYXRhYmFzZS4gQSBub24temVybwordmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQgZm9yIHNxbFNhdmVJbnRlcnZhbCB0byBlbmFibGUgTXlTUUwgbG9nZ2luZy4KKy5SRQorLklQICJzcWxNYXhRdWV1ZSBtYXgiCitzcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHRyYXBzIHRvIHF1ZXVlIGJlZm9yZSBhIGZvcmNlZCBmbHVzaAordG8gdGhlIE15U1FMIGRhdGFiYXNlLgorLlJFCisuSVAgInNxbFNhdmVJbnRlcnZhbCBzZWNvbmRzIgorc3BlY2lmaWVkIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZXR3ZWVuIHBlcmlvZGljIHF1ZXVlIGZsdXNoZXMuCitBIHZhbHVlIG9mIDAgZm9yIHdpbGwgZGlzYWJsZSBNeVNRTCBsb2dnaW5nLgogLlNIIE5PVElGSUNBVElPTiBQUk9DRVNTSU5HCiBBcyB3ZWxsIGFzIGxvZ2dpbmcgaW5jb21pbmcgbm90aWZpY2F0aW9ucywgdGhleSBjYW4gYWxzbwogYmUgZm9yd2FyZGVkIG9uIHRvIGFub3RoZXIgbm90aWZpY2F0aW9uIHJlY2VpdmVyLCBvciBwYXNzZWQKZGlmZiAtLWdpdCBhL21hbi9zbm1wd2Fsay4xLmRlZiBiL21hbi9zbm1wd2Fsay4xLmRlZgppbmRleCAwYzU1ZDcyLi42ZTE1MjAxIDEwMDY0NAotLS0gYS9tYW4vc25tcHdhbGsuMS5kZWYKKysrIGIvbWFuL3NubXB3YWxrLjEuZGVmCkBAIC0yMyw3ICsyMyw3IEBACiAuXCIgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUwogLlwiIFNPRlRXQVJFLgogLlwiICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KLS5USCBTTk1QV0FMSyAxICIyMyBBdWcgMjAwNCIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKKy5USCBTTk1QV0FMSyAxICIyOCBNYXkgMjAwNyIgVlZFUlNJT05JTkZPICJOZXQtU05NUCIKIC5TSCBOQU1FCiBzbm1wd2FsayAtIHJldHJpZXZlIGEgc3VidHJlZSBvZiBtYW5hZ2VtZW50IHZhbHVlcyB1c2luZyBTTk1QIEdFVE5FWFQgcmVxdWVzdHMKIC5TSCBTWU5PUFNJUwpAQCAtNjcsNiArNjcsMTEgQEAKIC5CIC1DYwogdG8gdHVybiBvZmYgdGhpcyBjaGVjay4KIC5UUAorLkIgLUNFIHtPSUR9CitFbmQgdGhlIHdhbGsgYXQgdGhlIHNwZWNpZmllZCBPSUQsIHJhdGhlciB0aGFuIGEgc2ltcGxlIHN1YnRyZWUuCitUaGlzIGNhbiBiZSB1c2VkIHRvIHdhbGsgYSBwYXJ0aWFsIHN1YnRyZWUsIHNlbGVjdGVkIGNvbHVtbnMgb2YKK2EgdGFibGUsIG9yIGV2ZW4gdHdvIG9yIG1vcmUgdGFibGVzIHdpdGhpbiBhIHNpbmdsZSBjb21tYW5kLgorLlRQCiAuQiAtQ2kKIEluY2x1ZGUgdGhlIGdpdmVuIE9JRCBpbiB0aGUgc2VhcmNoIHJhbmdlLiAgTm9ybWFsbHkKIC5CIHNubXB3YWxrCkBAIC0xMDAsMTIgKzEwNSwxMiBAQAogdGFrZXMgdGhlIGNvbW1vbiBvcHRpb25zIGRlc2NyaWJlZCBpbiB0aGUgCiAuSSBzbm1wY21kKDEpCiBtYW51YWwgcGFnZS4KKy5TSCBFWEFNUExFUwogLmJyCiBOb3RlIHRoYXQKIC5CIHNubXBidWxrZ2V0CiBSRVFVSVJFUyAgYW4gYXJndW1lbnQgc3BlY2lmeWluZyB0aGUgYWdlbnQgdG8gcXVlcnkKIGFuZCBhdCBtb3N0IG9uZSBPSUQgYXJndW1lbnQsIGFzIGRlc2NyaWJlZCB0aGVyZS4KLS5TSCBFWEFNUExFCiBUaGUgY29tbWFuZDoKIC5QUAogc25tcHdhbGsgLU9zIC1jIHB1YmxpYyAtdiAxIHpldXMgc3lzdGVtCkBAIC0xMjUsNSArMTMwLDEzIEBACiBzeXNMb2NhdGlvbi4wID0gU1RSSU5HOiAiIgogLmJyCiBzeXNTZXJ2aWNlcy4wID0gSU5URUdFUjogNzIKKy5icgorKHBsdXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBzeXNPUlRhYmxlKS4KKworVGhlIGNvbW1hbmQ6CisuUFAKK3NubXB3YWxrIC1PcyAtYyBwdWJsaWMgLXYgMSAtQ0Ugc3lzT1JUYWJsZSB6ZXVzIHN5c3RlbQorLlBQCit3aWxsIHJldHJpZXZlIHRoZSBzY2FsYXIgdmFsdWVzLCBidXQgb21pdCB0aGUgc3lzT1JUYWJsZS4KIC5TSCAiU0VFIEFMU08iCiBzbm1wY21kKDEpLCBzbm1wYnVsa3dhbGsoMSksIHZhcmlhYmxlcyg1KS4KZGlmZiAtLWdpdCBhL21hbi92YXJiaW5kX2FwaS4zLmRlZiBiL21hbi92YXJiaW5kX2FwaS4zLmRlZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDYxYzc1Ci0tLSAvZGV2L251bGwKKysrIGIvbWFuL3ZhcmJpbmRfYXBpLjMuZGVmCkBAIC0wLDAgKzEsMTk2IEBACisuVEggVkFSQklORF9BUEkgMyAiMjAgQXByIDIwMDkiIFZWRVJTSU9OSU5GTyAiTmV0LVNOTVAiCisuU0ggTkFNRQorc25tcF9wZHVfYWRkX3Zhciwgc25tcF92YXJsaXN0X2FkZF92YXIsIHNubXBfYWRkX251bGxfdmFyLAorc25tcF9jbG9uZV92YXJiaW5kLCBzbm1wX2ZyZWVfdmFyYmluZCwgc25tcF9mcmVlX3ZhciwKK3ByaW50X3ZhcmlhYmxlLCBmcHJpbnRfdmFyaWFibGUsIHNucHJpbnRfdmFyaWFibGUsCitwcmludF92YWx1ZSwgZnByaW50X3ZhbHVlLCBzbnByaW50X3ZhbHVlIC0gdmFyYmluZF9hcGkgZnVuY3Rpb25zCisuU0ggU1lOT1BTSVMKKy5CICNpbmNsdWRlIDxuZXQtc25tcC92YXJiaW5kX2FwaS5oPgorLlNTIENyZWF0aW9uCisuUFAKKy5CICJuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnNubXBfcGR1X2FkZF92YXJpYWJsZSgiCisuYnIKKy5CSSAiICAgICAgICBuZXRzbm1wX3BkdSAqIiBwZHUgIiwiCisuYnIKKy5CSSAiICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwiCisuYnIKKy5CSSAiICAgICAgICB1X2NoYXIgIiB0eXBlICIsIGNvbnN0IHZvaWQgKiIgdmFsdWUgIiwgc2l6ZV90ICIgbGVuICIpOyIKKy5icgorLkIgIm5ldHNubXBfdmFyaWFibGVfbGlzdCAqc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgiCisuYnIKKy5CSSAiICAgICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFybGlzdCAiLCIKKy5icgorLkJJICIgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgIHVfY2hhciAiIHR5cGUgIiwgY29uc3Qgdm9pZCAqIiB2YWx1ZSAiLCBzaXplX3QgIiBsZW4gIik7IgorLmJyCisuQiAibmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX2FkZF9udWxsX3ZhcigiCisuYnIKKy5CSSAiICAgICAgICBuZXRzbm1wX3BkdSAqIiBwZHUgIiwiCisuYnIKKy5CSSAiICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIik7IgorLlBQCisuQiAibmV0c25tcF92YXJpYWJsZV9saXN0ICpzbm1wX2Nsb25lX3ZhcmJpbmQoIgorLmJyCisuQkkgIiAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmxpc3QgIik7IgorLlNTIFNldHRpbmcgVmFsdWVzCisuUFAKKy5CSSAiaW50ICBzbm1wX3NldF92YXJfb2JqaWQoIG5ldHNubXBfdmFyaWFibGVfbGlzdCogIiB2YXJpYWJsZSAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICogIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiKTsiCisuYnIKKy5CSSAiaW50ICBzbm1wX3NldF92YXJfdmFsdWUoIG5ldHNubXBfdmFyaWFibGVfbGlzdCogIiB2YXJpYWJsZSAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqICIgdmFsdWUgIiwgc2l6ZV90ICIgdmFsbGVuICIpOyIKKy5icgorLkJJICJpbnQgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZSggbmV0c25tcF92YXJpYWJsZV9saXN0KiAiIHZhcmlhYmxlICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgIiB0eXBlICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICogIiB2YWx1ZSAiLCBzaXplX3QgIiB2YWxsZW4gIik7IgorLmJyCisuQkkgImludCAgc25tcF9zZXRfdmFyX3R5cGVkX2ludGVnZXIoIG5ldHNubXBfdmFyaWFibGVfbGlzdCogIiB2YXJpYWJsZSAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyICIgdHlwZSAiLCBsb25nICIgdmFsdWUgIik7IgorLmJyCisuU1MgT3V0cHV0CisuUFAKKy5CSSAidm9pZCAgcHJpbnRfdmFyaWFibGUoY29uc3Qgb2lkICoiICJvYmppZCIgIiwgc2l6ZV90ICIgIm9iamlkbGVuIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLmJyCisuQkkgInZvaWQgZnByaW50X3ZhcmlhYmxlKEZJTEUgKiIgZnAgIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3Qgb2lkICoiIG9iamlkICIsIHNpemVfdCAiIG9iamlkbGVuICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSAiKTsiCisuYnIKKy5CSSAiaW50IHNucHJpbnRfdmFyaWFibGUoY2hhciAqIiAiYnVmIiAiLCBzaXplX3QgIiAibGVuIiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICIpOyIKKy5QUAorLkJJICJ2b2lkICBwcmludF92YWx1ZShjb25zdCBvaWQgKiIgb2JqaWQgIiwgc2l6ZV90ICIgb2JqaWRsZW4gIiwiCisuYnIKKy5CSSAiICAgICAgICAgICAgICAgICAgY29uc3QgbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlICIpOyIKKy5icgorLkJJICJ2b2lkIGZwcmludF92YWx1ZShGSUxFICoiIGZwICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLmJyCisuQkkgImludCBzbnByaW50X3ZhbHVlKGNoYXIgKiIgYnVmICIsIHNpemVfdCAiICJsZW4iICIsIgorLmJyCisuQkkgIiAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIiBvYmppZCAiLCBzaXplX3QgIiBvYmppZGxlbiAiLCIKKy5icgorLkJJICIgICAgICAgICAgICAgICAgICBjb25zdCBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiIgdmFyaWFibGUgIik7IgorLmJyCisuYnIKKy5TUyBEZWxldGlvbgorLlBQCisuQkkgInZvaWQgc25tcF9mcmVlX3ZhciggICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIiB2YXJpYWJsZSAiKTsiCisuYnIKKy5CSSAidm9pZCBzbm1wX2ZyZWVfdmFyYmluZCggbmV0c25tcF92YXJpYWJsZV9saXN0ICoiIHZhcmlhYmxlcyAiKTsiCisuYnIKKy5QUAorLlNIIERFU0NSSVBUSU9OCitUaGUgZnVuY3Rpb25zIGRlYWxpbmcgd2l0aCB2YXJpYWJsZSBiaW5kaW5ncyBmYWxsIGludG8gZm91ciBncm91cHMgLSAKK2RlYWxpbmcgd2l0aCB0aGUgY3JlYXRpb24sIHNldHRpbmcgb2YgdmFsdWVzLCBvdXRwdXQgYW5kIGRlbGV0aW9uIG9mIHZhcmJpbmRzLgorLlNTIENyZWF0aW9uCisuQiBzbm1wX3BkdV9hZGRfdmFyaWFibGUKK3dpbGwgY3JlYXRlIGEgbmV3IHZhcmJpbmQgc3RydWN0dXJlLCBpbml0aWFsaXNlZCB3aXRoIHRoZSBuYW1lICgKKy5JUiBvYmppZCAiLCAiIG9iamlkbGVuCispLCBzeW50YXggKAorLkkgdHlwZQorKSBhbmQgdmFsdWUgKAorLkkgdmFsdWUgIiwgIiBsZW4KKykgcHJvdmlkZWQuCitUaGlzIHZhcmJpbmQgaXMgdGhlbiBhZGRlZCB0byB0aGUgZW5kIG9mIHRoZSB2YXJiaW5kIGxpc3QgaW4KK3RoZSBnaXZlbiBQRFUuCisuUFAKKy5CIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUKK2lzIHNpbWlsYXIsIGJ1dCBhcHBlbmRzIHRoZSBuZXcgdmFyYmluZCB0byB0aGUgZW5kIG9mIHRoZQordmFyYmluZCBsaXN0IHByb3ZpZGVkLgorV2hlbiBhZGRpbmcgdGhlIGZpcnN0IHZhcmJpbmQgdG8gYW4gZW1wdHkgbGlzdCwgc2ltcGx5CitwYXNzIHRoZSBhZGRyZXNzIG9mIHRoZSBoZWFkIG9mIHRoZSBsaXN0OgorLklQCisiW0luc2VydCBleGFtcGxlIGNvZGUgaGVyZV0iCisuUFAKK0luIGJvdGggY2FzZXMsIHRoZSByb3V0aW5lIHdpbGwgcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgbmV3Cit2YXJiaW5kIHN0cnVjdHVyZSAob3IgTlVMTCBpZiB0aGUgdmFyYmluZCBjcmVhdGlvbiBmYWlscykuCisuUFAKKy5CIHNubXBfYWRkX251bGxfdmFyCitpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGFkZCBhbiBlbXB0eSB2YXJiaW5kIHRvIHRoZSBQRFUuCit3aXRob3V0IG5lZWRpbmcgdG8gc3BlY2lmeSB0aGUgTlVMTCB2YWx1ZSBleHBsaWNpdGx5LgorVGhpcyBpcyB0aGUgbm9ybWFsIG1lY2hhbmlzbSBmb3IgY29uc3RydWN0aW5nIGEgR0VUIChvciBzaW1pbGFyKQoraW5mb3JtYXRpb24gcmV0cmlldmFsIHJlcXVlc3QuCisuYnIKK0FnYWluLCB0aGlzIHJldHVybnMgYSBwb2ludGVyIHRvIHRoZSBuZXcgdmFyYmluZCwgb3IgTlVMTC4KKy5QUAorLkIgc25tcF9jbG9uZV92YXJiaW5kCitjcmVhdGVzIGEgY29weSBvZiBlYWNoIHZhcmJpbmQgaW4gdGhlIHNwZWNpZmllZCBsaXN0LAorcmV0dXJuaW5nIGEgcG9pbnRlciB0byB0aGUgaGVhZCBvZiB0aGUgbmV3IGxpc3QKKyhvciBOVUxMIGlmIHRoZSBjbG9uaW5nIGZhaWxzKS4KKy5icgorLlNTIFNldHRpbmcgb2YgdmFsdWVzCisuQiBzbm1wX3NldF92YXJfb2JqaWQKK3NldHMgdGhlIG5hbWUgb2YgdGhlIHZhcmJpbmQgc3RydWN0dXJlIHRvIHRoZSBzcGVjaWZpZWQgT0lELgorLmJyCisuQiBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUKK3NldHMgdGhlIHN5bnRheCB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgdmFyYmluZCBzdHJ1Y3R1cmUuCisuYnIKKy5CIHNubXBfc2V0X3Zhcl92YWx1ZQorc2V0cyB0aGUgdmFsdWUgb2YgdGhlIHZhcmJpbmQgc3RydWN0dXJlLCBsZWF2aW5nIHRoZSBzeW50YXggdHlwZSB1bmNoYW5nZWQuCisuYnIKKy5CIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyCitpcyBhIGNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHNldCB0aGUgc3ludGF4IHR5cGUgYW5kIHZhbHVlIGZvcgorYSAzMi1iaXQgaW50ZWdlci1iYXNlZCB2YXJiaW5kLgorLlBQCitBbGwgZm91ciBvZiB0aGVzZSByZXR1cm4gMCBpZiB0aGUgYXNzaWdubWVudCBpcyBzdWNjZXNzZnVsLAorb3IgMSBpZiBpdCBpcyBub3QuCisuU1MgT3V0cHV0CisuQiBwcmludF92YXJpYWJsZQord2lsbCB0YWtlIGFuIG9iamVjdCBpZGVudGlmaWVyIChhcyByZXR1cm5lZCBieQorLkJSIHJlYWRfb2JqaWQgIiwgIiBzbm1wX3BhcnNlX29pZCAiIG9yICIgZ2V0X21vZHVsZV9ub2RlICkKK2FuZCBhbiBpbnN0YW5jZSBvZiBzdWNoIGEgdmFyaWFibGUsIGFuZCBwcmludHMgdG8gdGhlIHN0YW5kYXJkIG91dHB1dAordGhlIHRleHR1YWwgZm9ybSBvZiB0aGUgb2JqZWN0IGlkZW50aWZpZXIgdG9nZXRoZXIgd2l0aCB0aGUgdmFsdWUKK29mIHRoZSB2YXJpYWJsZS4KKy5QUAorLkIgZnByaW50X3ZhcmlhYmxlCitkb2VzIHRoZSBzYW1lLCBidXQgcHJpbnRzIHRvIHRoZSBGSUxFIHBvaW50ZXIgc3BlY2lmaWVkIGJ5IHRoZSBpbml0aWFsCitwYXJhbWV0ZXIuCisuUFAKKy5CIHNucHJpbnRfdmFyaWFibGUKK3ByaW50cyB0aGUgc2FtZSBpbmZvcm1hdGlvbiBpbnRvIHRoZSBidWZmZXIgcG9pbnRlZCB0byBieQorLkkgYnVmCit3aGljaCBpcyBvZiBsZW5ndGgKKy5JUiBsZW4gLgorSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgcHJpbnRlZCwgb3IgLTEgaWYgdGhlCitidWZmZXIgd2FzIG5vdCBsYXJnZSBlbm91Z2guICBJbiB0aGUgbGF0dGVyIGNhc2UsCisuSSBidWYKK3dpbGwgdHlwaWNhbGx5IGNvbnRhaW5lZCBhIHRydW5jYXRlZCB2ZXJzaW9uIG9mIHRoZSBpbmZvcm1hdGlvbiAoYnV0Cit0aGlzIGJlaGF2aW91ciBpcyBub3QgZ3VhcmFudGVlZCkuICBUaGlzIGZ1bmN0aW9uIHJlcGxhY2VzIHRoZQorb2Jzb2xldGUgZnVuY3Rpb24KKy5CUiBzcHJpbnRfdmFyaWFibGUgLgorLlBQCisuQlIgcHJpbnRfdmFsdWUgLAorLkJSIGZwcmludF92YWx1ZSAsCithbmQKKy5CIHNucHJpbnRfdmFsdWUKK2RvIHRoZSBzYW1lIGFzIHRoZSBlcXVpdmFsZW50CisuQiBwcmludF92YXJpYWJsZQorcm91dGluZXMsIGJ1dCBvbmx5IGRpc3BsYXlpbmcgdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSwgd2l0aG91dCB0aGUKK2NvcnJlc3BvbmRpbmcgb2JqZWN0IGlkZW50aWZpZXIuCisuYnIKKy5TUyBEZWxldGlvbgorLkIgc25tcF9mcmVlX3ZhcgorcmVsZWFzZXMgYWxsIG1lbW9yeSB1c2VkIGJ5IHRoZSBnaXZlbiB2YXJiaW5kIHN0cnVjdHVyZS4KKy5icgorLkIgc25tcF9mcmVlX3ZhcmJpbmQKK3JlbGVhc2VzIGFsbCBtZW1vcnkgdXNlZCBieSBlYWNoIHZhcmJpbmQgc3RydWN0dXJlIGluIHRoZSB2YXJiaW5kIGxpc3QgcHJvdmlkZWQuCisuYnIKKy5TSCAiU0VFIEFMU08iCisuQlIgcGR1X2FwaSAiKDMpIgorLkJSIG1pYl9hcGkgIigzKSIKZGlmZiAtLWdpdCBhL21pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQgYi9taWJzL0RJU01BTi1FVkVOVC1NSUIudHh0CmluZGV4IGJkZTFjZGIuLmYwMGM3Y2MgMTAwNjQ0Ci0tLSBhL21pYnMvRElTTUFOLUVWRU5ULU1JQi50eHQKKysrIGIvbWlicy9ESVNNQU4tRVZFTlQtTUlCLnR4dApAQCAtOCw3ICs4LDYgQEAKICAgICBURVhUVUFMLUNPTlZFTlRJT04sIFJvd1N0YXR1cywKICAgICBUcnV0aFZhbHVlICAgICAgICAgICAgICAgIEZST00gU05NUHYyLVRDCiAKLQogICAgIE1PRFVMRS1DT01QTElBTkNFLCBPQkpFQ1QtR1JPVVAsCiAgICAgTk9USUZJQ0FUSU9OLUdST1VQICAgICAgICAgICAgIEZST00gU05NUHYyLUNPTkYKICAgICBzeXNVcFRpbWUgICAgICAgICAgICAgICAgIEZST00gU05NUHYyLU1JQgpAQCAtNTgsNyArNTcsNiBAQAogICAgICAgICBwYXJ0aWN1bGFyIGVycm9yIGNvZGUgaGVyZSBkb2VzIG5vdCBpbXBseSB0aGF0IGFsbAogICAgICAgICBpbXBsZW1lbnRhdGlvbnMgYXJlIGNhcGFibGUgb2Ygc2Vuc2luZyB0aGF0IGVycm9yIGFuZAogCi0KICAgICAgICAgcmV0dXJuaW5nIHRoYXQgY29kZS4KIAogICAgICAgICBUaGUgc2Vjb25kIGdyb3VwLCBudW1iZXJlZCBncmVhdGVyIHRoYW4gMCwgYXJlIGNvcGllZApAQCAtNzgsMTYgKzc2LDEzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIG5vdCBhcyBleHBlY3RlZAogICAgICAgICBzYW1wbGVPdmVycnVuICAgICAgICAgICBhbm90aGVyIHNhbXBsZSBhdHRlbXB0IG9jY3VycmVkIGJlZm9yZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgcHJldmlvdXMgb25lIGNvbXBsZXRlZCIKLQogICAgIFNZTlRBWCAgICAgIElOVEVHRVIgeyBsb2NhbFJlc291cmNlTGFjaygtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZERlc3RpbmF0aW9uKC0yKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdGluYXRpb25VbnJlYWNoYWJsZSgtMyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vUmVzcG9uc2UoLTQpLAogICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRUeXBlKC01KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlT3ZlcnJ1bigtNiksCi0KICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9FcnJvcigwKSwKLQogICAgICAgICAgICAgICAgICAgICAgICAgICB0b29CaWcoMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vU3VjaE5hbWUoMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZFZhbHVlKDMpLApAQCAtMTA4LDcgKzEwMyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29uc2lzdGVudE5hbWUoMTgpIH0KIC0tCiAKLQogLS0gUmVzb3VyY2UgQ29udHJvbCBTZWN0aW9uCiAtLQogCkBAIC0xNTcsOCArMTUxLDYgQEAKICAgICAgICAgQ2hhbmdpbmcgdGhpcyB2YWx1ZSB3aWxsIG5vdCBlbGltaW5hdGUgb3IgaW5oaWJpdCBleGlzdGluZwogICAgICAgICBzYW1wbGUgc3RhdGUgYnV0IGNvdWxkIHByZXZlbnQgYWxsb2NhdGlvbiBvZiBhZGRpdGlvbmFsIHN0YXRlCiAgICAgICAgIGluZm9ybWF0aW9uLiIKLQotCiAgICAgOjo9IHsgbXRlUmVzb3VyY2UgMiB9CiAKIG10ZVJlc291cmNlU2FtcGxlSW5zdGFuY2VzIE9CSkVDVC1UWVBFCkBAIC0yMDgsNyArMjAwLDYgQEAKICAgICAgICAgY29uZGl0aW9uIGhhcyBmYWlsZWQuICBUaGlzIGNvdW50cyBpbmRpdmlkdWFsbHkgZm9yIGVhY2gKICAgICAgICAgYXR0ZW1wdCBpbiBhIGdyb3VwIG9mIHRhcmdldHMgb3IgZWFjaCBhdHRlbXB0IGZvciBhCiAKLQogICAgICAgICB3aWxkY2FyZGVkIG9iamVjdC4iCiAgICAgOjo9IHsgbXRlVHJpZ2dlciAxIH0KIApAQCAtMjU3LDggKzI0OCw2IEBACiAgICBNQVgtQUNDRVNTICBub3QtYWNjZXNzaWJsZQogICAgU1RBVFVTICAgICAgY3VycmVudAogICAgREVTQ1JJUFRJT04KLQotCiAgICAgICAgICJUaGUgb3duZXIgb2YgdGhpcyBlbnRyeS4gVGhlIGV4YWN0IHNlbWFudGljcyBvZiB0aGlzCiAgICAgICAgIHN0cmluZyBhcmUgc3ViamVjdCB0byB0aGUgc2VjdXJpdHkgcG9saWN5IGRlZmluZWQgYnkgdGhlCiAgICAgICAgIHNlY3VyaXR5IGFkbWluaXN0cmF0b3IuIgpAQCAtMzA4LDcgKzI5Nyw2IEBACiAKICAgICAgICAgRm9yICd0aHJlc2hvbGQnIHRoZSB0ZXN0IHdvcmtzIGFzIGRlc2NyaWJlZCBiZWxvdyBmb3IKIAotCiAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwLCBtdGVUcmlnZ2VyVGhyZXNob2xkUmlzaW5nLCBhbmQKICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmcuCiAKQEAgLTM1OCw3ICszNDYsNiBAQAogICAgICAgICBpbnN0YW5jZSBwb3J0aW9uLCBpbiB3aGljaCBjYXNlIHRoZSB2YWx1ZSBpcyBvYnRhaW5lZAogICAgICAgICBhcyBpZiB3aXRoIGEgR2V0TmV4dCBmdW5jdGlvbiwgY2hlY2tpbmcgbXVsdGlwbGUgdmFsdWVzCiAKLQogICAgICAgICBpZiB0aGV5IGV4aXN0LiAgSWYgc3VjaCB3aWxkY2FyZGluZyBpcyBhcHBsaWVkLAogICAgICAgICBtdGVUcmlnZ2VyVmFsdWVJRFdpbGRjYXJkIG11c3QgYmUgJ3RydWUnIGFuZCBpZiBub3QgaXQgbXVzdAogICAgICAgICBiZSAnZmFsc2UnLgpAQCAtNDA4LDcgKzM5NSw2IEBACiAKICAgICAgICAgT3RoZXJ3aXNlIGFjY2VzcyByaWdodHMgYXJlIGNoZWNrZWQgYWNjb3JkaW5nIHRvIHRoZSBzZWN1cml0eQogCi0KICAgICAgICAgcGFyYW1ldGVycyByZXN1bHRpbmcgZnJvbSB0aGUgdGFnLiIKICAgICBERUZWQUwgeyAnJ0ggfQogICAgIDo6PSB7IG10ZVRyaWdnZXJFbnRyeSA4IH0KQEAgLTQ1Nyw4ICs0NDMsNiBAQAogICAgIFVOSVRTICAgICAgICJzZWNvbmRzIgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCiAgICAgU1RBVFVTICAgICAgY3VycmVudAotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAiVGhlIG51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgYmV0d2VlbiB0cmlnZ2VyIHNhbXBsZXMuICBUbwogICAgICAgICBlbmNvdXJhZ2UgY29uc2lzdGVuY3kgaW4gc2FtcGxpbmcsIHRoZSBpbnRlcnZhbCBpcyBtZWFzdXJlZApAQCAtNTA3LDggKzQ5MSw2IEBACiAgICAgICAgIEEgbGlzdCBvZiBvYmplY3RzIG1heSBhbHNvIGJlIGFkZGVkIGJhc2VkIG9uIHRoZSBldmVudCBvciBvbgogICAgICAgICB0aGUgdmFsdWUgb2YgbXRlVHJpZ2dlclRlc3QuCiAKLQotCiAgICAgICAgIEEgbGVuZ3RoIG9mIDAgaW5kaWNhdGVzIG5vIGFkZGl0aW9uYWwgb2JqZWN0cy4iCiAgICAgREVGVkFMIHsgJydIIH0KICAgICA6Oj0geyBtdGVUcmlnZ2VyRW50cnkgMTMgfQpAQCAtNTU3LDggKzUzOSw2IEBACiAgICAgSU5ERVggICAgICAgeyBtdGVPd25lciwgSU1QTElFRCBtdGVUcmlnZ2VyTmFtZSB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlckRlbHRhVGFibGUgMSB9CiAKLQotCiBNdGVUcmlnZ2VyRGVsdGFFbnRyeSA6Oj0gU0VRVUVOQ0UgewogICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRCAgICAgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICBtdGVUcmlnZ2VyRGVsdGFEaXNjb250aW51aXR5SURXaWxkY2FyZCAgICAgICAgVHJ1dGhWYWx1ZSwKQEAgLTYwOCw3ICs1ODgsNiBAQAogICAgICAgICBiZSB0aGUgc2FtZSBhcyB0aGF0IG9mIHRoZSBjb3JyZXNwb25kaW5nIGluc3RhbmNlIG9mCiAgICAgICAgIG10ZVRyaWdnZXJWYWx1ZUlEV2lsZGNhcmQgd2hlbiB0aGUgY29ycmVzcG9uZGluZwogCi0KICAgICAgICAgbXRlVHJpZ2dlclNhbXBsZVR5cGUgaXMgJ2RlbHRhVmFsdWUnLiIKICAgICBERUZWQUwgeyBmYWxzZSB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlckRlbHRhRW50cnkgMiB9CkBAIC02NTgsNyArNjM3LDYgQEAKICAgICBtdGVUcmlnZ2VyRXhpc3RlbmNlRXZlbnQgICAgICAgICAgICAgU25tcEFkbWluU3RyaW5nCiB9CiAKLQogbXRlVHJpZ2dlckV4aXN0ZW5jZVRlc3QgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBCSVRTIHsgcHJlc2VudCgwKSwgYWJzZW50KDEpLCBjaGFuZ2VkKDIpIH0KICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCkBAIC03MDcsOCArNjg1LDYgQEAKIAogbXRlVHJpZ2dlckV4aXN0ZW5jZU9iamVjdHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBTbm1wQWRtaW5TdHJpbmcgKFNJWkUgKDAuLjMyKSkKLQotCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtNzU4LDcgKzczNCw2IEBACiAgICAgICAgIHRyaWdnZXJzLiIKICAgICA6Oj0geyBtdGVUcmlnZ2VyIDUgfQogCi0KIG10ZVRyaWdnZXJCb29sZWFuRW50cnkgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBNdGVUcmlnZ2VyQm9vbGVhbkVudHJ5CiAgICAgTUFYLUFDQ0VTUyAgbm90LWFjY2Vzc2libGUKQEAgLTgwNyw4ICs3ODIsNiBAQAogICAgIERFRlZBTCB7IDAgfQogICAgIDo6PSB7IG10ZVRyaWdnZXJCb29sZWFuRW50cnkgMiB9CiAKLQotCiBtdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXAgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBUcnV0aFZhbHVlCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQpAQCAtODU3LDggKzgzMCw2IEBACiAgICAgICAgICJUbyBnbyB3aXRoIG10ZVRyaWdnZXJCb29sZWFuRXZlbnQsIHRoZSBtdGVPd25lciBvZiBhbiBldmVudAogICAgICAgICBlbnRyeSBmcm9tIG10ZUV2ZW50VGFibGUuIgogICAgIERFRlZBTCB7ICcnSCB9Ci0KLQogICAgIDo6PSB7IG10ZVRyaWdnZXJCb29sZWFuRW50cnkgNiB9CiAKIG10ZVRyaWdnZXJCb29sZWFuRXZlbnQgT0JKRUNULVRZUEUKQEAgLTkwNyw4ICs4NzgsNiBAQAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudE93bmVyICAgICAgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRSaXNpbmdFdmVudCAgICAgICAgICAgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nRXZlbnRPd25lciAgICAgICAgU25tcEFkbWluU3RyaW5nLAotCi0KICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRmFsbGluZ0V2ZW50ICAgICAgICAgICAgIFNubXBBZG1pblN0cmluZywKICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudE93bmVyICAgIFNubXBBZG1pblN0cmluZywKICAgICBtdGVUcmlnZ2VyVGhyZXNob2xkRGVsdGFSaXNpbmdFdmVudCAgICAgICAgIFNubXBBZG1pblN0cmluZywKQEAgLTk1Nyw4ICs5MjYsNiBAQAogICAgICAgICB0cmlnZ2VyZWQgdW50aWwgdGhlIHNhbXBsZWQgdmFsdWUgZmFsbHMgYmVsb3cgdGhpcyB0aHJlc2hvbGQKICAgICAgICAgYW5kIHJlYWNoZXMgbXRlVHJpZ2dlclRocmVzaG9sZEZhbGxpbmcuIgogICAgIERFRlZBTCB7IDAgfQotCi0KICAgICA6Oj0geyBtdGVUcmlnZ2VyVGhyZXNob2xkRW50cnkgMiB9CiAKIG10ZVRyaWdnZXJUaHJlc2hvbGRGYWxsaW5nIE9CSkVDVC1UWVBFCkBAIC0xMDA3LDggKzk3NCw2IEBACiAgICAgICAgIHRyaWdnZXJlZCB1bnRpbCB0aGUgZGVsdGEgdmFsdWUgZmFsbHMgYmVsb3cgdGhpcyB0aHJlc2hvbGQgYW5kCiAgICAgICAgIHJlYWNoZXMgbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZy4iCiAgICAgREVGVkFMIHsgMCB9Ci0KLQogICAgIDo6PSB7IG10ZVRyaWdnZXJUaHJlc2hvbGRFbnRyeSA0IH0KIAogbXRlVHJpZ2dlclRocmVzaG9sZERlbHRhRmFsbGluZyBPQkpFQ1QtVFlQRQpAQCAtMTA1OCw3ICsxMDIzLDYgQEAKIAogICAgICAgICBBIGxpc3Qgb2Ygb2JqZWN0cyBtYXkgYWxzbyBiZSBhZGRlZCBiYXNlZCBvbiB0aGUgb3ZlcmFsbAogCi0KICAgICAgICAgdHJpZ2dlciwgdGhlIGV2ZW50IG9yIG90aGVyIHNldHRpbmdzIGluIG10ZVRyaWdnZXJUZXN0LgogCiAgICAgICAgIEEgbGVuZ3RoIG9mIDAgaW5kaWNhdGVzIG5vIGFkZGl0aW9uYWwgb2JqZWN0cy4iCkBAIC0xMTA3LDggKzEwNzEsNiBAQAogICAgIERFRlZBTCB7ICcnSCB9CiAgICAgOjo9IHsgbXRlVHJpZ2dlclRocmVzaG9sZEVudHJ5IDExIH0KIAotCi0KIG10ZVRyaWdnZXJUaHJlc2hvbGREZWx0YVJpc2luZ0V2ZW50T3duZXIgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBTbm1wQWRtaW5TdHJpbmcgKFNJWkUgKDAuLjMyKSkKICAgICBNQVgtQUNDRVNTICByZWFkLXdyaXRlCkBAIC0xMTU3LDggKzExMTksNiBAQAogLS0gT2JqZWN0cyBUYWJsZQogLS0KIAotCi0KIG10ZU9iamVjdHNUYWJsZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFNFUVVFTkNFIE9GIE10ZU9iamVjdHNFbnRyeQogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCkBAIC0xMjA4LDcgKzExNjgsNiBAQAogICAgICAgICAiQW4gYXJiaXRyYXJ5IGludGVnZXIgZm9yIHRoZSBwdXJwb3NlIG9mIGlkZW50aWZ5aW5nCiAgICAgICAgIGluZGl2aWR1YWwgb2JqZWN0cyB3aXRoaW4gYSBtdGVPYmplY3RzTmFtZSBncm91cC4KIAotCiAgICAgICAgIE9iamVjdHMgd2l0aGluIGEgZ3JvdXAgYXJlIHBsYWNlZCBpbiB0aGUgbm90aWZpY2F0aW9uIGluIHRoZQogICAgICAgICBudW1lcmljYWwgb3JkZXIgb2YgdGhpcyBpbmRleC4KIApAQCAtMTI1OCw3ICsxMjE3LDYgQEAKICAgICBERUZWQUwgeyBmYWxzZSB9CiAgICAgOjo9IHsgbXRlT2JqZWN0c0VudHJ5IDQgfQogCi0KIG10ZU9iamVjdHNFbnRyeVN0YXR1cyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFJvd1N0YXR1cwogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCkBAIC0xMzA4LDcgKzEyNjYsNiBAQAogICAgIElOREVYICAgICAgIHsgbXRlT3duZXIsIElNUExJRUQgbXRlRXZlbnROYW1lIH0KICAgICA6Oj0geyBtdGVFdmVudFRhYmxlIDEgfQogCi0KIE10ZUV2ZW50RW50cnkgOjo9IFNFUVVFTkNFIHsKICAgICBtdGVFdmVudE5hbWUgICAgICAgICAgICAgICAgICAgICAgICBTbm1wQWRtaW5TdHJpbmcsCiAgICAgbXRlRXZlbnRDb21tZW50ICAgICAgICAgICAgICAgICAgICAgU25tcEFkbWluU3RyaW5nLApAQCAtMTM1OCw3ICsxMzE1LDYgQEAKICAgICAgICAgIkEgY29udHJvbCB0byBhbGxvdyBhbiBldmVudCB0byBiZSBjb25maWd1cmVkIGJ1dCBub3QgdXNlZC4KICAgICAgICAgV2hlbiB0aGUgdmFsdWUgaXMgJ2ZhbHNlJyB0aGUgZXZlbnQgZG9lcyBub3QgZXhlY3V0ZSBldmVuIGlmCiAKLQogICAgICAgICB0cmlnZ2VyZWQuIgogICAgIERFRlZBTCB7IGZhbHNlIH0KICAgICA6Oj0geyBtdGVFdmVudEVudHJ5IDQgfQpAQCAtMTQwNyw4ICsxMzYzLDYgQEAKICAgICBTWU5UQVggICAgICBPQkpFQ1QgSURFTlRJRklFUgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtd3JpdGUKICAgICBTVEFUVVMgICAgICBjdXJyZW50Ci0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgb2JqZWN0IGlkZW50aWZpZXIgZnJvbSB0aGUgTk9USUZJQ0FUSU9OLVRZUEUgZm9yIHRoZQogICAgICAgICBub3RpZmljYXRpb24gdG8gdXNlIGlmIG1ldEV2ZW50QWN0aW9ucyBoYXMgJ25vdGlmaWNhdGlvbicgc2V0LiIKQEAgLTE0NTcsOCArMTQxMSw2IEBACiBtdGVFdmVudFNldEVudHJ5IE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgTXRlRXZlbnRTZXRFbnRyeQogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCi0KLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAiSW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgZXZlbnQncyBzZXQgb3B0aW9uLiAgRW50cmllcwpAQCAtMTUwOCw3ICsxNDYwLDYgQEAKICAgICBERUZWQUwgeyB6ZXJvRG90WmVybyB9CiAgICAgOjo9IHsgbXRlRXZlbnRTZXRFbnRyeSAxIH0KIAotCiBtdGVFdmVudFNldE9iamVjdFdpbGRjYXJkIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgVHJ1dGhWYWx1ZQogICAgIE1BWC1BQ0NFU1MgIHJlYWQtd3JpdGUKQEAgLTE1NTcsOCArMTUwOCw2IEBACiBtdGVFdmVudFNldENvbnRleHROYW1lIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgU25tcEFkbWluU3RyaW5nCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQotCi0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgIlRoZSBtYW5hZ2VtZW50IGNvbnRleHQgaW4gd2hpY2ggdG8gc2V0IG10ZUV2ZW50T2JqZWN0SUQuCkBAIC0xNjA3LDggKzE1NTYsNiBAQAogICAgICAgICAiVGhlIG5hbWUgb2YgdGhlIHRyaWdnZXIgY2F1c2luZyB0aGUgbm90aWZpY2F0aW9uLiIKICAgICA6Oj0geyBkaXNtYW5FdmVudE1JQk5vdGlmaWNhdGlvbk9iamVjdHMgMSB9CiAKLQotCiBtdGVIb3RUYXJnZXROYW1lIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICAgU25tcEFkbWluU3RyaW5nCiAgICAgTUFYLUFDQ0VTUyAgYWNjZXNzaWJsZS1mb3Itbm90aWZ5CkBAIC0xNjU3LDggKzE2MDQsNiBAQAogICAgIFNZTlRBWCAgICAgIEZhaWx1cmVSZWFzb24KICAgICBNQVgtQUNDRVNTICBhY2Nlc3NpYmxlLWZvci1ub3RpZnkKICAgICBTVEFUVVMgICAgICBjdXJyZW50Ci0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgcmVhc29uIGZvciB0aGUgZmFpbHVyZSBvZiBhbiBhdHRlbXB0IHRvIGNoZWNrIGZvciBhCiAgICAgICAgIHRyaWdnZXIgY29uZGl0aW9uIG9yIHNldCBhbiBvYmplY3QgaW4gcmVzcG9uc2UgdG8gYW4gZXZlbnQuIgpAQCAtMTcwNyw4ICsxNjUyLDYgQEAKIAogbXRlVHJpZ2dlckZhaWx1cmUgTk9USUZJQ0FUSU9OLVRZUEUKICAgICBPQkpFQ1RTIHsgbXRlSG90VHJpZ2dlciwKLQotCiAgICAgICAgICAgICAgIG10ZUhvdFRhcmdldE5hbWUsCiAgICAgICAgICAgICAgIG10ZUhvdENvbnRleHROYW1lLAogICAgICAgICAgICAgICBtdGVIb3RPSUQsCkBAIC0xNzU3LDggKzE3MDAsNiBAQAogZGlzbWFuRXZlbnRNSUJDb21wbGlhbmNlIE1PRFVMRS1DT01QTElBTkNFCiAgICAgICAgIFNUQVRVUyBjdXJyZW50CiAgICAgICAgIERFU0NSSVBUSU9OCi0KLQogICAgICAgICAgICAgICAgICJUaGUgY29tcGxpYW5jZSBzdGF0ZW1lbnQgZm9yIGVudGl0aWVzIHdoaWNoIGltcGxlbWVudAogICAgICAgICAgICAgICAgIHRoZSBFdmVudCBNSUIuIgogICAgICAgICBNT0RVTEUgIC0tIHRoaXMgbW9kdWxlCkBAIC0xNzk3LDcgKzE3MzgsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIldyaXRlIGFjY2VzcyBpcyBub3QgcmVxdWlyZWQsIHRodXMgYWxsb3dpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzeXN0ZW0gbm90IHRvIGltcGxlbWVudCB3aWxkY2FyZGluZy4iCiAKLQogICAgICAgICAgICAgICAgIE9CSkVDVCBtdGVPYmplY3RzSURXaWxkY2FyZAogICAgICAgICAgICAgICAgIE1JTi1BQ0NFU1MgIHJlYWQtb25seQogICAgICAgICAgICAgICAgIERFU0NSSVBUSU9OCkBAIC0xODA3LDExICsxNzQ3LDggQEAKICAgICAgICAgICAgICAgICBPQkpFQ1QgbXRlRXZlbnRTZXRDb250ZXh0TmFtZVdpbGRjYXJkCiAgICAgICAgICAgICAgICAgTUlOLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICAgICAgICAgICAgICAgREVTQ1JJUFRJT04KLQotCiAgICAgICAgICAgICAgICAgICAgICAgICAiV3JpdGUgYWNjZXNzIGlzIG5vdCByZXF1aXJlZCwgdGh1cyBhbGxvd2luZwogICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHN5c3RlbSBub3QgdG8gaW1wbGVtZW50IHdpbGRjYXJkaW5nLiIKLQogICAgICAgICA6Oj0geyBkaXNtYW5FdmVudE1JQkNvbXBsaWFuY2VzIDEgfQogCiAtLSBVbml0cyBvZiBDb25mb3JtYW5jZQpAQCAtMTgzMiw3ICsxNzY5LDYgQEAKIGRpc21hbkV2ZW50VHJpZ2dlckdyb3VwIE9CSkVDVC1HUk9VUAogICAgICAgICBPQkpFQ1RTIHsKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyRmFpbHVyZXMsCi0KICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQ29tbWVudCwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyVGVzdCwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyU2FtcGxlVHlwZSwKQEAgLTE4NDYsNyArMTc4Miw2IEBACiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlck9iamVjdHMsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckVuYWJsZWQsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckVudHJ5U3RhdHVzLAotCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckRlbHRhRGlzY29udGludWl0eUlELAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFdpbGRjYXJkLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJEZWx0YURpc2NvbnRpbnVpdHlJRFR5cGUsCkBAIC0xODU2LDkgKzE3OTEsNiBAQAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VPYmplY3RzLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudE93bmVyLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJFeGlzdGVuY2VFdmVudCwKLQotCi0KICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhbkNvbXBhcmlzb24sCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckJvb2xlYW5WYWx1ZSwKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhblN0YXJ0dXAsCkBAIC0xODY2LDcgKzE3OTgsNiBAQAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJCb29sZWFuT2JqZWN0cywKICAgICAgICAgICAgICAgICBtdGVUcmlnZ2VyQm9vbGVhbkV2ZW50T3duZXIsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlckJvb2xlYW5FdmVudCwKLQogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRTdGFydHVwLAogICAgICAgICAgICAgICAgIG10ZVRyaWdnZXJUaHJlc2hvbGRPYmplY3RzT3duZXIsCiAgICAgICAgICAgICAgICAgbXRlVHJpZ2dlclRocmVzaG9sZE9iamVjdHMsCkBAIC0xOTAyLDE3ICsxODMzLDEzIEBACiBkaXNtYW5FdmVudEV2ZW50R3JvdXAgT0JKRUNULUdST1VQCiAgICAgICAgIE9CSkVDVFMgewogICAgICAgICAgICAgICAgIG10ZUV2ZW50RmFpbHVyZXMsCi0KICAgICAgICAgICAgICAgICBtdGVFdmVudENvbW1lbnQsCiAgICAgICAgICAgICAgICAgbXRlRXZlbnRBY3Rpb25zLAogICAgICAgICAgICAgICAgIG10ZUV2ZW50RW5hYmxlZCwKICAgICAgICAgICAgICAgICBtdGVFdmVudEVudHJ5U3RhdHVzLAotCi0KICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvbiwKICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvbk9iamVjdHNPd25lciwKICAgICAgICAgICAgICAgICBtdGVFdmVudE5vdGlmaWNhdGlvbk9iamVjdHMsCi0KICAgICAgICAgICAgICAgICBtdGVFdmVudFNldE9iamVjdCwKICAgICAgICAgICAgICAgICBtdGVFdmVudFNldE9iamVjdFdpbGRjYXJkLAogICAgICAgICAgICAgICAgIG10ZUV2ZW50U2V0VmFsdWUsCmRpZmYgLS1naXQgYS9taWJzL0RJU01BTi1FWFBSRVNTSU9OLU1JQi50eHQgYi9taWJzL0RJU01BTi1FWFBSRVNTSU9OLU1JQi50eHQKaW5kZXggNDk5ZWU4Ni4uZjczZTViZiAxMDA2NDQKLS0tIGEvbWlicy9ESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0CisrKyBiL21pYnMvRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dApAQCAtMjksNyArMjksNiBAQAogICAgICAgICAgICAgICAgICAgICBQdWJsaXNoZWQgYXMgUkZDIDI5ODIiCiAgICAgOjo9IHsgbWliLTIgOTAgfQogCi0KIGRpc21hbkV4cHJlc3Npb25NSUJPYmplY3RzIE9CSkVDVCBJREVOVElGSUVSIDo6PQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGRpc21hbkV4cHJlc3Npb25NSUIgMSB9CiAKQEAgLTQxLDcgKzQwLDYgQEAKIC0tIFJlc291cmNlIENvbnRyb2wKIC0tCiAKLQogZXhwUmVzb3VyY2VEZWx0YU1pbmltdW0gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBJbnRlZ2VyMzIgKC0xIHwgMS4uNjAwKQogICAgIFVOSVRTICAgICAgICJzZWNvbmRzIgpAQCAtOTAsNyArODgsNiBAQAogICAgICBVbmxlc3MgZXhwbGljaXRseSByZXNvdXJjZSBsaW1pdGVkLCBhIHN5c3RlbSdzIHZhbHVlIGZvcgogICAgICB0aGlzIG9iamVjdCBzaG91bGQgYmUgMC4KIAotCiAgICAgIENoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCBub3QgZWxpbWluYXRlIG9yIGluaGliaXQgZXhpc3RpbmcgZGVsdGEKICAgICAgd2lsZGNhcmQgaW5zdGFuY2Ugb2JqZWN0cyBidXQgd2lsbCBwcmV2ZW50IHRoZSBjcmVhdGlvbiBvZiBtb3JlCiAgICAgIHN1Y2ggb2JqZWN0cy4KQEAgLTEzOSw3ICsxMzYsNiBAQAogLS0KIAogZXhwRXhwcmVzc2lvblRhYmxlIE9CSkVDVC1UWVBFCi0KICAgICBTWU5UQVggICAgICBTRVFVRU5DRSBPRiBFeHBFeHByZXNzaW9uRW50cnkKICAgICBNQVgtQUNDRVNTICBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKQEAgLTMzNSw3ICszMzEsNiBAQAogCiAgICAgICAgICAgSWYgZWl0aGVyIHNpZGUgaXMgSXBBZGRyZXNzLCB1c2UgdGhhdC4KIAotCiAgICAgICAgICAgSWYgZWl0aGVyIHNpZGUgaXMgVGltZVRpY2tzLCB1c2UgdGhhdC4KIAogICAgICAgICAgIElmIGVpdGhlciBzaWRlIGlzIENvdW50ZXIzMiwgdXNlIHRoYXQuCkBAIC0zODQsNyArMzc5LDYgQEAKICAgICAgICAgICBzdW0KICAgICAgICAgICBleGlzdHMKIAotCiAgICAgIFRoZSBmb2xsb3dpbmcgZnVuY3Rpb24gZGVmaW5pdGlvbnMgaW5kaWNhdGUgdGhlaXIgcGFyYW1ldGVycyBieQogICAgICBuYW1pbmcgdGhlIGRhdGEgdHlwZSBvZiB0aGUgcGFyYW1ldGVyIGluIHRoZSBwYXJhbWV0ZXIncyBwb3NpdGlvbgogICAgICBpbiB0aGUgcGFyYW1ldGVyIGxpc3QuICBUaGUgcGFyYW1ldGVyIG11c3QgYmUgb2YgdGhlIHR5cGUgaW5kaWNhdGVkCkBAIC00MzMsNyArNDI3LDYgQEAKICAgICAgZXhpc3RzKGFueVR5cGVPYmplY3QpIC0gdmVyaWZpZXMgdGhlIG9iamVjdCBpbnN0YW5jZSBleGlzdHMuIEEKICAgICAgcmV0dXJuIHZhbHVlIG9mIDAgaW5kaWNhdGVzIE5vU3VjaEluc3RhbmNlIChpLmUuIGJvb2xlYW4KICAgICAgZmFsc2UpLiIKLQogICAgIDo6PSB7IGV4cEV4cHJlc3Npb25FbnRyeSAzIH0KIAogZXhwRXhwcmVzc2lvblZhbHVlVHlwZSBPQkpFQ1QtVFlQRQpAQCAtNTMxLDcgKzUyNCw2IEBACiAgICAgOjo9IHsgZXhwRXhwcmVzc2lvbkVudHJ5IDcgfQogCiBleHBFeHByZXNzaW9uRXJyb3JzIE9CSkVDVC1UWVBFCi0KICAgICBTWU5UQVggICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgICBjdXJyZW50CkBAIC01ODAsNyArNTcyLDYgQEAKICAgICAgZXJyb3IgZm9yIHRoYXQgZXhwcmVzc2lvbiBhcyByZWZsZWN0ZWQgYnkgdGhlIGVycm9yIGNvZGVzCiAgICAgIGRlZmluZWQgZm9yIGV4cEVycm9yQ29kZS4iCiAgICAgSU5ERVggICAgICAgeyBleHBFeHByZXNzaW9uT3duZXIsIGV4cEV4cHJlc3Npb25OYW1lIH0KLQogICAgIDo6PSB7IGV4cEVycm9yVGFibGUgMSB9CiAKIEV4cEVycm9yRW50cnkgOjo9IFNFUVVFTkNFIHsKQEAgLTY3OCw3ICs2NjksNiBAQAogZXhwRXJyb3JJbnN0YW5jZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5Ci0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBleHBWYWx1ZUluc3RhbmNlIGJlaW5nIGV2YWx1YXRlZCB3aGVuIHRoZSBlcnJvcgpAQCAtNzI3LDcgKzcxNyw2IEBACiAgICAgZXhwT2JqZWN0SW5kZXggICAgICAgICAgICAgICAgICAgICBVbnNpZ25lZDMyLAogICAgIGV4cE9iamVjdElEICAgICAgICAgICAgICAgICAgICAgICAgT0JKRUNUIElERU5USUZJRVIsCiAgICAgZXhwT2JqZWN0SURXaWxkY2FyZCAgICAgICAgICAgICAgICBUcnV0aFZhbHVlLAotCiAgICAgZXhwT2JqZWN0U2FtcGxlVHlwZSAgICAgICAgICAgICAgICBJTlRFR0VSLAogICAgIGV4cE9iamVjdERlbHRhRGlzY29udGludWl0eUlEICAgICAgT0JKRUNUIElERU5USUZJRVIsCiAgICAgZXhwT2JqZWN0RGlzY29udGludWl0eUlEV2lsZGNhcmQgICBUcnV0aFZhbHVlLApAQCAtNzc2LDcgKzc2NSw2IEBACiAgICAgICAgICJBIHRydWUgdmFsdWUgaW5kaWNhdGVzIHRoZSBleHBPYmplY0lEIG9mIHRoaXMgcm93IGlzIGEgd2lsZGNhcmQKICAgICAgICAgb2JqZWN0LiBGYWxzZSBpbmRpY2F0ZXMgdGhhdCBleHBPYmplY3RJRCBpcyBmdWxseSBpbnN0YW5jZWQuCiAgICAgICAgIElmIGFsbCBleHBPYmplY3RXaWxkY2FyZCB2YWx1ZXMgZm9yIGEgZ2l2ZW4gZXhwcmVzc2lvbiBhcmUgRkFMU0UsCi0KICAgICAgICAgZXhwRXhwcmVzc2lvblByZWZpeCB3aWxsIHJlZmxlY3QgYSBzY2FsYXIgb2JqZWN0IChpLmUuIHdpbGwKICAgICAgICAgYmUgMC4wKS4KIApAQCAtODI1LDcgKzgxMyw2IEBACiAgICAgIERhdGVBbmRUaW1lIG9iamVjdCB0aGF0IGluZGljYXRlcyBhIGRpc2NvbnRpbnVpdHkgaW4gdGhlIHZhbHVlCiAgICAgIGF0IGV4cE9iamVjdElELgogCi0KICAgICAgVGhpcyBvYmplY3QgaXMgaW5zdGFudGlhdGVkIG9ubHkgaWYgZXhwT2JqZWN0U2FtcGxlVHlwZSBpcwogICAgICAnZGVsdGFWYWx1ZScgb3IgJ2NoYW5nZWRWYWx1ZScuCiAKQEAgLTg3NCw3ICs4NjEsNiBAQAogICAgIERFRlZBTCAgICAgIHsgdGltZVRpY2tzIH0KICAgICAgOjo9IHsgZXhwT2JqZWN0RW50cnkgNyB9CiAKLQogZXhwT2JqZWN0Q29uZGl0aW9uYWwgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBPQkpFQ1QgSURFTlRJRklFUgogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCkBAIC05MTAsNyArODk2LDYgQEAKICAgICAgTUFYLUFDQ0VTUyAgcmVhZC1jcmVhdGUKICAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgICBERVNDUklQVElPTgotCiAgICAgICJBIHRydWUgdmFsdWUgaW5kaWNhdGVzIHRoZSBleHBPYmplY3RDb25kaXRpb25hbCBvZiB0aGlzIHJvdyBpcwogICAgICBhIHdpbGRjYXJkIG9iamVjdC4gRmFsc2UgaW5kaWNhdGVzIHRoYXQgZXhwT2JqZWN0Q29uZGl0aW9uYWwgaXMKICAgICAgZnVsbHkgaW5zdGFuY2VkLgpAQCAtOTIzLDcgKzkwOCw2IEBACiBleHBPYmplY3RFbnRyeVN0YXR1cyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFJvd1N0YXR1cwogICAgIE1BWC1BQ0NFU1MgIHJlYWQtY3JlYXRlCi0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBjb250cm9sIHRoYXQgYWxsb3dzIGNyZWF0aW9uL2RlbGV0aW9uIG9mIGVudHJpZXMuCkBAIC0xMDIxLDcgKzEwMDUsNiBAQAogZXhwVmFsdWVDb3VudGVyMzJWYWwgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKLQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAiVGhlIHZhbHVlIHdoZW4gZXhwRXhwcmVzc2lvblZhbHVlVHlwZSBpcyAnY291bnRlcjMyJy4iCkBAIC0xMDYwLDcgKzEwNDMsNyBAQAogICAgIDo6PSB7IGV4cFZhbHVlRW50cnkgNiB9CiAKIGV4cFZhbHVlT2N0ZXRTdHJpbmdWYWwgT0JKRUNULVRZUEUKLSAgICBTWU5UQVggICAgICBPQ1RFVCBTVFJJTkcgLS0gKFNJWkUgKDAuLjY1NTM2KSkKKyAgICBTWU5UQVggICAgICBPQ1RFVCBTVFJJTkcgKFNJWkUgKDAuLjY1NTM2KSkKICAgICBNQVgtQUNDRVNTICByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTEwNzAsNyArMTA1Myw2IEBACiBleHBWYWx1ZU9pZFZhbCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5Ci0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSB2YWx1ZSB3aGVuIGV4cEV4cHJlc3Npb25WYWx1ZVR5cGUgaXMgJ29iamVjdElkJy4iCkBAIC0xMTM2LDcgKzExMTgsNiBAQAogICAgICBXUklURS1TWU5UQVggICBJTlRFR0VSIHsgZmFsc2UoMikgfQogICAgICBERVNDUklQVElPTgogICAgICAgICAgICJJbXBsZW1lbnRhdGlvbiBuZWVkIG5vdCBhbGxvdyBkZWx0YXMgd2lsZGNhcmRzLiIKLQogICAgICA6Oj0geyBkaXNtYW5FeHByZXNzaW9uTUlCQ29tcGxpYW5jZXMgMSB9CiAKIC0tIFVuaXRzIG9mIENvbmZvcm1hbmNlCkBAIC0xMTYzLDEyICsxMTQ0LDEwIEBACiAgICAgICAgICAgZXhwRXhwcmVzc2lvblByZWZpeCwKICAgICAgICAgICBleHBFeHByZXNzaW9uRXJyb3JzLAogICAgICAgICAgIGV4cEV4cHJlc3Npb25FbnRyeVN0YXR1cywKLQogICAgICAgICAgIGV4cEVycm9yVGltZSwKICAgICAgICAgICBleHBFcnJvckluZGV4LAogICAgICAgICAgIGV4cEVycm9yQ29kZSwKICAgICAgICAgICBleHBFcnJvckluc3RhbmNlLAotCiAgICAgICAgICAgZXhwT2JqZWN0SUQsCiAgICAgICAgICAgZXhwT2JqZWN0SURXaWxkY2FyZCwKICAgICAgICAgICBleHBPYmplY3RTYW1wbGVUeXBlLApAQCAtMTIwMSw1ICsxMTgwLDMgQEAKICAgICAgOjo9IHsgZGlzbWFuRXhwcmVzc2lvbk1JQkdyb3VwcyAzIH0KIAogRU5ECi0KLQpkaWZmIC0tZ2l0IGEvbWlicy9JQU5BLUFERFJFU1MtRkFNSUxZLU5VTUJFUlMtTUlCLnR4dCBiL21pYnMvSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQi50eHQKaW5kZXggMTY4MGFjZS4uM2Q4OGEwZiAxMDA2NDQKLS0tIGEvbWlicy9JQU5BLUFERFJFU1MtRkFNSUxZLU5VTUJFUlMtTUlCLnR4dAorKysgYi9taWJzL0lBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgVVNBCiAKICAgICAgICAgICBUZWw6ICAgICsxICAzMTAtODIzLTkzNTgKLSAgICAgICAgICBFLU1haWw6IGlhbmFAaWFuYS5vcmciCisgICAgICAgICAgRS1NYWlsOiBpYW5hJmlhbmEub3JnIgogICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAiVGhlIE1JQiBtb2R1bGUgZGVmaW5lcyB0aGUgQWRkcmVzc0ZhbWlseU51bWJlcnMKICAgICAgICAgICB0ZXh0dWFsIGNvbnZlbnRpb24uIgpAQCAtODYsMTAgKzg2LDExIEBACiAgICAgICAgICAgZmlicmVDaGFubmVsV1dQTigyMiksICAtLSBGaWJyZSBDaGFubmVsIFdvcmxkLVdpZGUgUG9ydCBOYW1lIAogICAgICAgICAgIGZpYnJlQ2hhbm5lbFdXTk4oMjMpLCAgLS0gRmlicmUgQ2hhbm5lbCBXb3JsZC1XaWRlIE5vZGUgTmFtZQogICAgICAgICAgIGd3aWQoMjQpLCAgICAtLSBHYXRld2F5IElkZW50aWZpZXIgCisgICAgICAgICAgYWZpKDI1KSwgIC0tIEFGSSBmb3IgTDJWUE4gaW5mb3JtYXRpb24KICAgICAgICAgICByZXNlcnZlZCg2NTUzNSkKIAogICAgICAgICAgIFJlcXVlc3RzIGZvciBuZXcgdmFsdWVzIHNob3VsZCBiZSBtYWRlIHRvIElBTkEgdmlhCi0gICAgICAgICAgZW1haWwgKGlhbmFAaWFuYS5vcmcpLiIKKyAgICAgICAgICBlbWFpbCAoaWFuYSZpYW5hLm9yZykuIgogICAgICAgU1lOVEFYICBJTlRFR0VSIHsKICAgICAgICAgICAgICAgICAgIG90aGVyKDApLAogICAgICAgICAgICAgICAgICAgaXBWNCgxKSwKQEAgLTExNiw2ICsxMTcsNyBAQAogICAgICAgICAgICAgICAgICAgZmlicmVDaGFubmVsV1dQTigyMiksCiAgICAgICAgICAgICAgICAgICBmaWJyZUNoYW5uZWxXV05OKDIzKSwKICAgICAgICAgICAgICAgICAgIGd3aWQoMjQpLAorICAgICAgICAgICAgICAgICAgYWZpKDI1KSwKICAgICAgICAgICAgICAgICAgIHJlc2VydmVkKDY1NTM1KQogICAgICAgICAgICAgICB9CiAgICAgICBFTkQKZGlmZiAtLWdpdCBhL21pYnMvSUFOQS1MQU5HVUFHRS1NSUIudHh0IGIvbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQKaW5kZXggYjBhZDNlZC4uNzczYzEwMSAxMDA2NDQKLS0tIGEvbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQKKysrIGIvbWlicy9JQU5BLUxBTkdVQUdFLU1JQi50eHQKQEAgLTE1LDcgKzE1LDcgQEAKICAgICAgICAgICAgICAgICAgTWFyaW5hIGRlbCBSZXksIENBIDkwMjkyCiAKICAgICAgICAgIFRlbDogICAgKzEgMzEwIDgyMyA5MzU4IHgyMAotICAgICAgICAgRS1NYWlsOiBpYW5hQGlhbmEub3JnIgorICAgICAgICAgRS1NYWlsOiBpYW5hJmlhbmEub3JnIgogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICJUaGUgTUlCIG1vZHVsZSByZWdpc3RlcnMgb2JqZWN0IGlkZW50aWZpZXIgdmFsdWVzIGZvcgogICAgICAgICAgd2VsbC1rbm93biBwcm9ncmFtbWluZyBhbmQgc2NyaXB0aW5nIGxhbmd1YWdlcy4gRXZlcnkKZGlmZiAtLWdpdCBhL21pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQgYi9taWJzL0lBTkEtUlRQUk9UTy1NSUIudHh0CmluZGV4IDU3ZTczYTIuLjZmMDQxNDMgMTAwNjQ0Ci0tLSBhL21pYnMvSUFOQS1SVFBST1RPLU1JQi50eHQKKysrIGIvbWlicy9JQU5BLVJUUFJPVE8tTUlCLnR4dApAQCAtMSw0ICsxLDMgQEAKLQogSUFOQS1SVFBST1RPLU1JQiBERUZJTklUSU9OUyA6Oj0gQkVHSU4KIAogSU1QT1JUUwpAQCAtMTUsNyArMTQsNyBAQAogICAgICAgICAgICAgICBNYXJpbmEgZGVsIFJleSwgQ0EgOTAyOTItNjYwMQogCiAgICAgICAgICAgICAgIFBob25lOiArMSAzMTAgODIzIDkzNTgKLSAgICAgICAgICAgICAgRU1haWw6IGlhbmFAaWFuYS5vcmciCisgICAgICAgICAgICAgIEVNYWlsOiBpYW5hJmlhbmEub3JnIgogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiVGhpcyBNSUIgbW9kdWxlIGRlZmluZXMgdGhlIElBTkFpcFJvdXRlUHJvdG9jb2wgYW5kCiAgICAgICAgICAgICBJQU5BaXBNUm91dGVQcm90b2NvbCB0ZXh0dWFsIGNvbnZlbnRpb25zIGZvciB1c2UgaW4gTUlCcwpAQCAtMzIsMTIgKzMxLDEwIEBACiAgICAgUkVWSVNJT04gICAgICIyMDAwMDkyNjAwMDBaIiAgLS0gU2VwdGVtYmVyIDI2LCAyMDAwIAogICAgIERFU0NSSVBUSU9OICAiT3JpZ2luYWwgdmVyc2lvbiwgcHVibGlzaGVkIGluIGNvb3JkaW5hdGlvbgogICAgICAgICAgICAgICAgICB3aXRoIFJGQyAyOTMyLiIKLQogICAgIDo6PSB7IG1pYi0yIDg0IH0KIAogSUFOQWlwUm91dGVQcm90b2NvbCA6Oj0gVEVYVFVBTC1DT05WRU5USU9OCiAgICBTVEFUVVMgICAgICBjdXJyZW50Ci0KICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiQSBtZWNoYW5pc20gZm9yIGxlYXJuaW5nIHJvdXRlcy4gIEluY2x1c2lvbiBvZiB2YWx1ZXMgZm9yCiAgICAgICAgICAgICByb3V0aW5nIHByb3RvY29scyBpcyBub3QgaW50ZW5kZWQgdG8gaW1wbHkgdGhhdCB0aG9zZQpAQCAtODgsNSArODUsMyBAQAogICAgICAgICAgICAgICAgfQogCiBFTkQKLQotCmRpZmYgLS1naXQgYS9taWJzL0lBTkFpZlR5cGUtTUlCLnR4dCBiL21pYnMvSUFOQWlmVHlwZS1NSUIudHh0CmluZGV4IDU0MmUyNDcuLjk1OTQ2NTAgMTAwNjQ0Ci0tLSBhL21pYnMvSUFOQWlmVHlwZS1NSUIudHh0CisrKyBiL21pYnMvSUFOQWlmVHlwZS1NSUIudHh0CkBAIC01LDcgKzUsNyBAQAogICAgICAgIFRFWFRVQUwtQ09OVkVOVElPTiAgICAgICAgICBGUk9NIFNOTVB2Mi1UQzsKIAogICAgaWFuYWlmVHlwZSBNT0RVTEUtSURFTlRJVFkKLSAgICAgICBMQVNULVVQREFURUQgIjIwMDUxMDEwMDAwMFoiICAtLSBPY3RvYmVyIDEwLCAyMDA1CisgICAgICAgTEFTVC1VUERBVEVEICIyMDA5MDUwNjAwMDBaIiAgLS0gTWF5IDA2LCAyMDA5CiAgICAgICAgT1JHQU5JWkFUSU9OICJJQU5BIgogICAgICAgIENPTlRBQ1QtSU5GTyAiICAgICAgICBJbnRlcm5ldCBBc3NpZ25lZCBOdW1iZXJzIEF1dGhvcml0eQogCkBAIC0xNCwxMiArMTQsNzUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFyaW5hIGRlbCBSZXksIENBIDkwMjkyCiAKICAgICAgICAgICAgICAgICAgICAgIFRlbDogICAgKzEgMzEwIDgyMyA5MzU4Ci0gICAgICAgICAgICAgICAgICAgICBFLU1haWw6IGlhbmFAaWFuYS5vcmciCi0KKyAgICAgICAgICAgICAgICAgICAgIEUtTWFpbDogaWFuYSZpYW5hLm9yZyIKICAgICAgICBERVNDUklQVElPTiAgIlRoaXMgTUlCIG1vZHVsZSBkZWZpbmVzIHRoZSBJQU5BaWZUeXBlIFRleHR1YWwKICAgICAgICAgICAgICAgICAgICAgIENvbnZlbnRpb24sIGFuZCB0aHVzIHRoZSBlbnVtZXJhdGVkIHZhbHVlcyBvZgogICAgICAgICAgICAgICAgICAgICAgdGhlIGlmVHlwZSBvYmplY3QgZGVmaW5lZCBpbiBNSUItSUkncyBpZlRhYmxlLiIKIAorICAgICAgIFJFVklTSU9OICAgICAiMjAwOTA1MDYwMDAwWiIgIC0tIE1heSAwNiwgMjAwOQorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlIDI1MS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDkwMjA2MDAwMFoiICAtLSBGZWJydWFyeSAwNiwgMjAwOQorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BdHVubmVsVHlwZSAxNS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDgxMDA5MDAwMFoiICAtLSBPY3RvYmVyIDA5LCAyMDA4CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMjUwLiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwODA4MTIwMDAwWiIgIC0tIEF1Z3VzdCAxMiwgMjAwOAorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlIDI0OS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDgwNzIyMDAwMFoiICAtLSBKdWx5IDIyLCAyMDA4CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzIDI0NyBhbmQgMjQ4LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwODA2MjQwMDAwWiIgIC0tIEp1bmUgMjQsIDIwMDgKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZSAyNDYuIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA4MDUyOTAwMDBaIiAgLS0gTWF5IDI5LCAyMDA4CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMjQ1LiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNzA5MTMwMDAwWiIgIC0tIFNlcHRlbWJlciAxMywgMjAwNworICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcyAyNDMgYW5kIDI0NC4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDcwNTI5MDAwMFoiICAtLSBNYXkgMjksIDIwMDcKKyAgICAgICBERVNDUklQVElPTiAgIkNoYW5nZWQgdGhlIGRlc2NyaXB0aW9uIGZvciBJQU5BaWZUeXBlIDIyOC4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDcwMzA4MDAwMFoiICAtLSBNYXJjaCAwOCwgMjAwNworICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlIDI0Mi4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDcwMTIzMDAwMFoiICAtLSBKYW51YXJ5IDIzLCAyMDA3CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzIDIzOSwgMjQwLCBhbmQgMjQxLiIgCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYxMDE3MDAwMFoiICAtLSBPY3RvYmVyIDE3LCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJEZXByZWNhdGVkL09ic29sZXRlZCBJQU5BaWZUeXBlIDIzMC4gIFJlZ2lzdHJhdGlvbiBvZiAKKyAgICAgICAgICAgICAgICAgICAgIElBTkFpZlR5cGUgMjM4LiIgCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwOTI1MDAwMFoiICAtLSBTZXB0ZW1iZXIgMjUsIDIwMDYKKyAgICAgICBERVNDUklQVElPTiAgIkNoYW5nZWQgdGhlIGRlc2NyaXB0aW9uIGZvciBJQU5BIGlmVHlwZSAKKyAgICAgICAgICAgICAgICAgICAgIDE4NCBhbmQgYWRkZWQgbmV3IElBTkEgaWZUeXBlIDIzNy4iICAKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjA4MTcwMDAwWiIgIC0tIEF1Z3VzdCAxNywgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiQ2hhbmdlZCB0aGUgZGVzY3JpcHRpb25zIGZvciBJQU5BaWZUeXBlcworICAgICAgICAgICAgICAgICAgICAgMjAgYW5kIDIxLiIgICAKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNjA4MTEwMDAwWiIgIC0tIEF1Z3VzdCAxMSwgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiQ2hhbmdlZCB0aGUgZGVzY3JpcHRpb25zIGZvciBJQU5BaWZUeXBlcworICAgICAgICAgICAgICAgICAgICAgNywgMTEsIDYyLCA2OSwgYW5kIDExNy4iICAgCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwNzI1MDAwMFoiICAtLSBKdWx5IDI1LCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIzNi4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwNjE0MDAwMFoiICAtLSBKdW5lIDE0LCAyMDA2CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIzNS4iCisKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDYwMzMxMDAwMFoiICAtLSBNYXJjaCAzMSwgMjAwNgorICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BIGlmVHlwZSAyMzQuIgorCisgICAgICAgUkVWSVNJT04gICAgICIyMDA2MDMzMDAwMDBaIiAgLS0gTWFyY2ggMzAsIDIwMDYKKyAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQSBpZlR5cGUgMjMzLiIKKworICAgICAgIFJFVklTSU9OICAgICAiMjAwNTEyMjIwMDAwWiIgIC0tIERlY2VtYmVyIDIyLCAyMDA1CisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlcyAyMzEgYW5kIDIzMi4iCisKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDUxMDEwMDAwMFoiICAtLSBPY3RvYmVyIDEwLCAyMDA1CiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIzMC4iCiAKQEAgLTMxLDExICs5NCwxMCBAQAogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDA1MDMwMzAwMDBaIiAgLS0gTWFyY2ggMywgMjAwNQogICAgICAgIERFU0NSSVBUSU9OICAiQWRkZWQgdGhlIElBTkF0dW5uZWxUeXBlIFRDIGFuZCBkZXByZWNhdGVkCi0JICAgICAgICAgICAgICAgICBJQU5BaWZUeXBlIHNpeFRvRm91ciAoMjE1KSBwZXIgCi0JICAgICAgICAgICAgICAgICBSRkM0MDg3LiIKKwkgICAgICAgICAgICAgICAgIElBTkFpZlR5cGUgc2l4VG9Gb3VyICgyMTUpIHBlciBSRkM0MDg3LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwNDExMjIwMDAwWiIgIC0tIE5vdmVtYmVyIDIyLCAyMDA0Ci0gICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIyNy4iCisgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIyNyBwZXIgUkZDNDYzMS4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDQwNjE3MDAwMFoiICAtLSBKdW5lIDE3LCAyMDA0CiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkEgaWZUeXBlIDIyNi4iCkBAIC01MCw5MiArMTEyLDkyIEBACiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDMwODI1MDAwMFoiICAtLSBBdWcgMjUsIDIwMDMKICAgICAgICBERVNDUklQVElPTiAgIkRlcHJlY2F0ZWQgSUFOQWlmVHlwZXMgNyBhbmQgMTEuIE9ic29sZXRlZAotICAgICAgICAgICAgICAgICAgICBJQU5BaWZUeXBlcyA2MiwgNjksIGFuZCAxMTcuICBldGhlcm5ldENzbWFjZCAoNikKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZCBvZiB0aGVzZSB2YWx1ZXMiCisgICAgICAgICAgICAgICAgICAgICBJQU5BaWZUeXBlcyA2MiwgNjksIGFuZCAxMTcuICBldGhlcm5ldENzbWFjZCAoNikKKyAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSB1c2VkIGluc3RlYWQgb2YgdGhlc2UgdmFsdWVzIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAzMDgxODAwMDBaIiAgLS0gQXVnIDE4LCAyMDAzCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjI0LiIKKyAgICAgICAgICAgICAgICAgICAgIDIyNC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDMwODA3MDAwMFoiICAtLSBBdWcgNywgMjAwMwogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAyMjIgYW5kIDIyMy4iCisgICAgICAgICAgICAgICAgICAgICAyMjIgYW5kIDIyMy4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDMwMzE4MDAwMFoiICAtLSBNYXIgMTgsIDIwMDMKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAyMjEuIgorICAgICAgICAgICAgICAgICAgICAgMjIxLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMzAxMTMwMDAwWiIgIC0tIEphbiAxMywgMjAwMwogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDIyMC4iCisgICAgICAgICAgICAgICAgICAgICAyMjAuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAyMTAxNzAwMDBaIiAgLS0gT2N0IDE3LCAyMDAyCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjE5LiIKKyAgICAgICAgICAgICAgICAgICAgIDIxOS4iCiAKLQkgICBSRVZJU0lPTiAgICAgIjIwMDIwNzE2MDAwMFoiICAtLSBKdWwgMTYsIDIwMDIKKyAgICAgICBSRVZJU0lPTiAgICAgIjIwMDIwNzE2MDAwMFoiICAtLSBKdWwgMTYsIDIwMDIKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMjE3IGFuZCAyMTguIgorICAgICAgICAgICAgICAgICAgICAgMjE3IGFuZCAyMTguIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAyMDcxMDAwMDBaIiAgLS0gSnVsIDEwLCAyMDAyCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDIxNSBhbmQgMjE2LiIKKyAgICAgICAgICAgICAgICAgICAgIDIxNSBhbmQgMjE2LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMjA2MTkwMDAwWiIgIC0tIEp1biAxOSwgMjAwMgogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDIxNC4iCisgICAgICAgICAgICAgICAgICAgICAyMTQuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAyMDEwNDAwMDBaIiAgLS0gSmFuIDQsIDIwMDIKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMjExLCAyMTIgYW5kIDIxMy4iCisgICAgICAgICAgICAgICAgICAgICAyMTEsIDIxMiBhbmQgMjEzLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMTEyMjAwMDAwWiIgIC0tIERlYyAyMCwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAyMDkgYW5kIDIxMC4iCisgICAgICAgICAgICAgICAgICAgICAyMDkgYW5kIDIxMC4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDExMTE1MDAwMFoiICAtLSBOb3YgMTUsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMjA3IGFuZCAyMDguIgorICAgICAgICAgICAgICAgICAgICAgMjA3IGFuZCAyMDguIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMTEwNjAwMDBaIiAgLS0gTm92IDYsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAyMDYuIgorICAgICAgICAgICAgICAgICAgICAgMjA2LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMTExMDIwMDAwWiIgIC0tIE5vdiAyLCAyMDAxCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMjA1LiIKKyAgICAgICAgICAgICAgICAgICAgIDIwNS4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDExMDE2MDAwMFoiICAtLSBPY3QgMTYsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIGFuZCAyMDQuIgorICAgICAgICAgICAgICAgICAgICAgMTk5LCAyMDAsIDIwMSwgMjAyLCAyMDMsIGFuZCAyMDQuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMDkxOTAwMDBaIiAgLS0gU2VwdCAxOSwgMjAwMQogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlCi0gICAgICAgICAgICAgICAgICAgIDE5OC4iCisgICAgICAgICAgICAgICAgICAgICAxOTguIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAxMDUxMTAwMDBaIiAgLS0gTWF5IDExLCAyMDAxCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUKLSAgICAgICAgICAgICAgICAgICAgMTk3LiIKKyAgICAgICAgICAgICAgICAgICAgIDE5Ny4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDEwMTEyMDAwMFoiICAtLSBKYW4gMTIsIDIwMDEKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZXMKLSAgICAgICAgICAgICAgICAgICAgMTk1IGFuZCAxOTYuIgorICAgICAgICAgICAgICAgICAgICAgMTk1IGFuZCAxOTYuIgogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAwMTIxOTAwMDBaIiAgLS0gRGVjIDE5LCAyMDAwCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGVzCi0gICAgICAgICAgICAgICAgICAgIDE5MyBhbmQgMTk0LiIKKyAgICAgICAgICAgICAgICAgICAgIDE5MyBhbmQgMTk0LiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMDEyMDcwMDAwWiIgIC0tIERlYyAwNywgMjAwMAogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAxOTEgYW5kIDE5Mi4iCisgICAgICAgICAgICAgICAgICAgICAxOTEgYW5kIDE5Mi4iCiAKICAgICAgICBSRVZJU0lPTiAgICAgIjIwMDAxMjA0MDAwMFoiICAtLSBEZWMgMDQsIDIwMDAKICAgICAgICBERVNDUklQVElPTiAgIlJlZ2lzdHJhdGlvbiBvZiBuZXcgSUFOQWlmVHlwZQotICAgICAgICAgICAgICAgICAgICAxOTAuIgorICAgICAgICAgICAgICAgICAgICAgMTkwLiIKIAogICAgICAgIFJFVklTSU9OICAgICAiMjAwMDEwMTcwMDAwWiIgIC0tIE9jdCAxNywgMjAwMAogICAgICAgIERFU0NSSVBUSU9OICAiUmVnaXN0cmF0aW9uIG9mIG5ldyBJQU5BaWZUeXBlcwotICAgICAgICAgICAgICAgICAgICAxODggYW5kIDE4OS4iICAKKyAgICAgICAgICAgICAgICAgICAgIDE4OCBhbmQgMTg5LiIgIAogCiAgICAgICAgUkVWSVNJT04gICAgICIyMDAwMTAwMjAwMDBaIiAgLS0gT2N0IDAyLCAyMDAwCiAgICAgICAgREVTQ1JJUFRJT04gICJSZWdpc3RyYXRpb24gb2YgbmV3IElBTkFpZlR5cGUgMTg3LiIgCkBAIC0xOTEsNyArMjUzLDcgQEAKICAgICAgICAgICAgICAgIElBTkEuKQogCiAgICAgICAgICAgICAgICBSZXF1ZXN0cyBmb3IgbmV3IHZhbHVlcyBzaG91bGQgYmUgbWFkZSB0byBJQU5BIHZpYQotICAgICAgICAgICAgICAgZW1haWwgKGlhbmFAaWFuYS5vcmcpLgorICAgICAgICAgICAgICAgZW1haWwgKGlhbmEmaWFuYS5vcmcpLgogCiAgICAgICAgICAgICAgICBUaGUgcmVsYXRpb25zaGlwIGJldHdlZW4gdGhlIGFzc2lnbm1lbnQgb2YgaWZUeXBlCiAgICAgICAgICAgICAgICB2YWx1ZXMgYW5kIG9mIE9JRHMgdG8gcGFydGljdWxhciBtZWRpYS1zcGVjaWZpYyBNSUJzCkBAIC0yMTEsMTEgKzI3MywxMyBAQAogICAgICAgICAgICAgICAgICAgIHJmYzg3N3gyNSg1KSwKICAgICAgICAgICAgICAgICAgICBldGhlcm5ldENzbWFjZCg2KSwgLS0gZm9yIGFsbCBldGhlcm5ldC1saWtlIGludGVyZmFjZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIHJlZ2FyZGxlc3Mgb2Ygc3BlZWQsIGFzIHBlciBSRkMzNjM1Ci0gICAgICAgICAgICAgICAgICAgaXNvODgwMjNDc21hY2QoNyksIC0tIERlcHJlY2F0ZWQgdmlhIFJGQy1kcmFmdC1pZXRmLWh1Ym1pYi1ldGhlcmlmLW1pYi12MyAgZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICBpc284ODAyM0NzbWFjZCg3KSwgLS0gRGVwcmVjYXRlZCB2aWEgUkZDMzYzNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIGlzbzg4MDI0VG9rZW5CdXMoOCksCiAgICAgICAgICAgICAgICAgICAgaXNvODgwMjVUb2tlblJpbmcoOSksCiAgICAgICAgICAgICAgICAgICAgaXNvODgwMjZNYW4oMTApLAotICAgICAgICAgICAgICAgICAgIHN0YXJMYW4oMTEpLCAtLSBEZXByZWNhdGVkIHZpYSBSRkMtZHJhZnQtaWV0Zi1odWJtaWItZXRoZXJpZi1taWItdjMgIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgc3RhckxhbigxMSksIC0tIERlcHJlY2F0ZWQgdmlhIFJGQzM2MzUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKICAgICAgICAgICAgICAgICAgICBwcm90ZW9uMTBNYml0KDEyKSwKICAgICAgICAgICAgICAgICAgICBwcm90ZW9uODBNYml0KDEzKSwKICAgICAgICAgICAgICAgICAgICBoeXBlcmNoYW5uZWwoMTQpLApAQCAtMjI0LDggKzI4OCwxMCBAQAogICAgICAgICAgICAgICAgICAgIHNkbGMoMTcpLAogICAgICAgICAgICAgICAgICAgIGRzMSgxOCksICAgICAgICAgICAgLS0gRFMxLU1JQgogICAgICAgICAgICAgICAgICAgIGUxKDE5KSwgICAgICAgICAgICAgLS0gT2Jzb2xldGUgc2VlIERTMS1NSUIKLSAgICAgICAgICAgICAgICAgICBiYXNpY0lTRE4oMjApLAotICAgICAgICAgICAgICAgICAgIHByaW1hcnlJU0ROKDIxKSwKKyAgICAgICAgICAgICAgICAgICBiYXNpY0lTRE4oMjApLCAgICAgICAgICAgICAgLS0gbm8gbG9uZ2VyIHVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gc2VlIGFsc28gUkZDMjEyNworICAgICAgICAgICAgICAgICAgIHByaW1hcnlJU0ROKDIxKSwgICAgICAgICAgICAtLSBubyBsb25nZXIgdXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBzZWUgYWxzbyBSRkMyMTI3CiAgICAgICAgICAgICAgICAgICAgcHJvcFBvaW50VG9Qb2ludFNlcmlhbCgyMiksIC0tIHByb3ByaWV0YXJ5IHNlcmlhbAogICAgICAgICAgICAgICAgICAgIHBwcCgyMyksCiAgICAgICAgICAgICAgICAgICAgc29mdHdhcmVMb29wYmFjaygyNCksCkBAIC0yNjgsMTcgKzMzNCwxOSBAQAogICAgICAgICAgICAgICAgICAgIGFmbGFuZTgwMjMoNTkpLCAgICAgLS0gQVRNIEVtdWxhdGVkIExBTiBmb3IgODAyLjMKICAgICAgICAgICAgICAgICAgICBhZmxhbmU4MDI1KDYwKSwgICAgIC0tIEFUTSBFbXVsYXRlZCBMQU4gZm9yIDgwMi41CiAgICAgICAgICAgICAgICAgICAgY2N0RW11bCg2MSksICAgICAgICAtLSBBVE0gRW11bGF0ZWQgY2lyY3VpdCAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICBmYXN0RXRoZXIoNjIpLCAgICAgIC0tIE9ic29sZXRlZCB2aWEgUkZDLWRyYWZ0LWlldGYtaHVibWliLWV0aGVyaWYtbWliLXYzICBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIGZhc3RFdGhlcig2MiksICAgICAgLS0gT2Jzb2xldGVkIHZpYSBSRkMzNjM1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIGlzZG4oNjMpLCAgICAgICAgICAgLS0gSVNETiBhbmQgWC4yNSAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdjExKDY0KSwgICAgICAgICAgICAtLSBDQ0lUVCBWLjExL1guMjEgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgdjM2KDY1KSwgICAgICAgICAgICAtLSBDQ0lUVCBWLjM2ICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgZzcwM2F0NjRrKDY2KSwgICAgICAtLSBDQ0lUVCBHNzAzIGF0IDY0S2JwcwogICAgICAgICAgICAgICAgICAgIGc3MDNhdDJtYig2NyksICAgICAgLS0gT2Jzb2xldGUgc2VlIERTMS1NSUIKICAgICAgICAgICAgICAgICAgICBxbGxjKDY4KSwgICAgICAgICAgIC0tIFNOQSBRTExDICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICBmYXN0RXRoZXJGWCg2OSksICAgIC0tIE9ic29sZXRlZCB2aWEgUkZDLWRyYWZ0LWlldGYtaHVibWliLWV0aGVyaWYtbWliLXYzICBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAorICAgICAgICAgICAgICAgICAgIGZhc3RFdGhlckZYKDY5KSwgICAgLS0gT2Jzb2xldGVkIHZpYSBSRkMzNjM1CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBldGhlcm5ldENzbWFjZCAoNikgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZAogICAgICAgICAgICAgICAgICAgIGNoYW5uZWwoNzApLCAgICAgICAgLS0gY2hhbm5lbCAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgIGllZWU4MDIxMSg3MSksICAgICAgLS0gcmFkaW8gc3ByZWFkIHNwZWN0cnVtICAgICAgIAotCSAgICAgICAgICAgaWJtMzcwcGFyQ2hhbig3MiksICAtLSBJQk0gU3lzdGVtIDM2MC8zNzAgT0VNSSBDaGFubmVsCisgICAgICAgICAgICAgICAgICAgaWJtMzcwcGFyQ2hhbig3MiksICAtLSBJQk0gU3lzdGVtIDM2MC8zNzAgT0VNSSBDaGFubmVsCiAgICAgICAgICAgICAgICAgICAgZXNjb24oNzMpLCAgICAgICAgICAtLSBJQk0gRW50ZXJwcmlzZSBTeXN0ZW1zIENvbm5lY3Rpb24KICAgICAgICAgICAgICAgICAgICBkbHN3KDc0KSwgICAgICAgICAgIC0tIERhdGEgTGluayBTd2l0Y2hpbmcKICAgICAgICAgICAgICAgICAgICBpc2Rucyg3NSksICAgICAgICAgIC0tIElTRE4gUy9UIGludGVyZmFjZQpAQCAtMzEzLDYxICszODEsNjIgQEAKICAgICAgICAgICAgICAgICAgICB2b2ljZU92ZXJJcCgxMDQpLCAgIC0tIHZvaWNlIG92ZXIgSVAgZW5jYXBzdWxhdGlvbgogICAgICAgICAgICAgICAgICAgIGF0bUR4aSgxMDUpLCAgICAgICAgLS0gQVRNIERYSQogICAgICAgICAgICAgICAgICAgIGF0bUZ1bmkoMTA2KSwgICAgICAgLS0gQVRNIEZVTkkKLQkJICAgYXRtSW1hICgxMDcpLCAgICAgICAtLSBBVE0gSU1BCQkgICAKKyAgICAgICAgICAgICAgICAgICBhdG1JbWEgKDEwNyksICAgICAgIC0tIEFUTSBJTUEJCSAgIAogICAgICAgICAgICAgICAgICAgIHBwcE11bHRpbGlua0J1bmRsZSgxMDgpLCAtLSBQUFAgTXVsdGlsaW5rIEJ1bmRsZQogICAgICAgICAgICAgICAgICAgIGlwT3ZlckNkbGMgKDEwOSksICAgLS0gSUJNIGlwT3ZlckNkbGMKLQkJICAgaXBPdmVyQ2xhdyAoMTEwKSwgICAtLSBJQk0gQ29tbW9uIExpbmsgQWNjZXNzIHRvIFdvcmtzdG4KKyAgICAgICAgICAgICAgICAgICBpcE92ZXJDbGF3ICgxMTApLCAgIC0tIElCTSBDb21tb24gTGluayBBY2Nlc3MgdG8gV29ya3N0bgogICAgICAgICAgICAgICAgICAgIHN0YWNrVG9TdGFjayAoMTExKSwgLS0gSUJNIHN0YWNrVG9TdGFjawogICAgICAgICAgICAgICAgICAgIHZpcnR1YWxJcEFkZHJlc3MgKDExMiksIC0tIElCTSBWSVBBCi0JCSAgIG1wYyAoMTEzKSwgICAgICAgICAgLS0gSUJNIG11bHRpLXByb3RvY29sIGNoYW5uZWwgc3VwcG9ydAotCQkgICBpcE92ZXJBdG0gKDExNCksICAgIC0tIElCTSBpcE92ZXJBdG0KLQkJICAgaXNvODgwMjVGaWJlciAoMTE1KSwgLS0gSVNPIDgwMi41aiBGaWJlciBUb2tlbiBSaW5nCi0JCSAgIHRkbGMgKDExNiksCSAgICAgICAtLSBJQk0gdHdpbmF4aWFsIGRhdGEgbGluayBjb250cm9sCi0JCSAgIGdpZ2FiaXRFdGhlcm5ldCAoMTE3KSwgLS0gT2Jzb2xldGVkIHZpYSBSRkMtZHJhZnQtaWV0Zi1odWJtaWItZXRoZXJpZi1taWItdjMgIGV0aGVybmV0Q3NtYWNkICg2KSBzaG91bGQgYmUgdXNlZCBpbnN0ZWFkCi0JCSAgIGhkbGMgKDExOCksICAgICAgICAgLS0gSERMQwotCQkgICBsYXBmICgxMTkpLAkgICAgICAgLS0gTEFQIEYKLQkJICAgdjM3ICgxMjApLAkgICAgICAgLS0gVi4zNwotCQkgICB4MjVtbHAgKDEyMSksICAgICAgIC0tIE11bHRpLUxpbmsgUHJvdG9jb2wKLQkJICAgeDI1aHVudEdyb3VwICgxMjIpLCAtLSBYMjUgSHVudCBHcm91cAotCQkgICB0cmFzbnBIZGxjICgxMjMpLCAgIC0tIFRyYW5zcCBIRExDCi0JCSAgIGludGVybGVhdmUgKDEyNCksICAgLS0gSW50ZXJsZWF2ZSBjaGFubmVsCi0JCSAgIGZhc3QgKDEyNSksICAgICAgICAgLS0gRmFzdCBjaGFubmVsCi0JCSAgIGlwICgxMjYpLAkgICAgICAgLS0gSVAgKGZvciBBUFBOIEhQUiBpbiBJUCBuZXR3b3JrcykKLQkJICAgZG9jc0NhYmxlTWFjbGF5ZXIgKDEyNyksICAtLSBDQVRWIE1hYyBMYXllcgotCQkgICBkb2NzQ2FibGVEb3duc3RyZWFtICgxMjgpLCAtLSBDQVRWIERvd25zdHJlYW0gaW50ZXJmYWNlCi0JCSAgIGRvY3NDYWJsZVVwc3RyZWFtICgxMjkpLCAgLS0gQ0FUViBVcHN0cmVhbSBpbnRlcmZhY2UKLQkJICAgYTEyTXBwU3dpdGNoICgxMzApLCAtLSBBdmFsb24gUGFyYWxsZWwgUHJvY2Vzc29yCi0JCSAgIHR1bm5lbCAoMTMxKSwgICAgICAgLS0gRW5jYXBzdWxhdGlvbiBpbnRlcmZhY2UKLQkJICAgY29mZmVlICgxMzIpLCAgICAgICAtLSBjb2ZmZWUgcG90Ci0JCSAgIGNlcyAoMTMzKSwgICAgICAgICAgLS0gQ2lyY3VpdCBFbXVsYXRpb24gU2VydmljZQotCQkgICBhdG1TdWJJbnRlcmZhY2UgKDEzNCksIC0tIEFUTSBTdWIgSW50ZXJmYWNlCi0JCSAgIGwydmxhbiAoMTM1KSwgICAgICAgLS0gTGF5ZXIgMiBWaXJ0dWFsIExBTiB1c2luZyA4MDIuMVEKLQkJICAgbDNpcHZsYW4gKDEzNiksICAgICAtLSBMYXllciAzIFZpcnR1YWwgTEFOIHVzaW5nIElQCi0JCSAgIGwzaXB4dmxhbiAoMTM3KSwgICAgLS0gTGF5ZXIgMyBWaXJ0dWFsIExBTiB1c2luZyBJUFgKLQkJICAgZGlnaXRhbFBvd2VybGluZSAoMTM4KSwgLS0gSVAgb3ZlciBQb3dlciBMaW5lcwkKLQkJICAgbWVkaWFNYWlsT3ZlcklwICgxMzkpLCAtLSBNdWx0aW1lZGlhIE1haWwgb3ZlciBJUAotCQkgICBkdG0gKDE0MCksICAgICAgICAtLSBEeW5hbWljIHN5bmNyb25vdXMgVHJhbnNmZXIgTW9kZQotCQkgICBkY24gKDE0MSksICAgIC0tIERhdGEgQ29tbXVuaWNhdGlvbnMgTmV0d29yawotCQkgICBpcEZvcndhcmQgKDE0MiksICAgIC0tIElQIEZvcndhcmRpbmcgSW50ZXJmYWNlCi0JCSAgIG1zZHNsICgxNDMpLCAgICAgICAtLSBNdWx0aS1yYXRlIFN5bW1ldHJpYyBEU0wKLQkJICAgaWVlZTEzOTQgKDE0NCksIC0tIElFRUUxMzk0IEhpZ2ggUGVyZm9ybWFuY2UgU2VyaWFsIEJ1cwotCQkgICBpZi1nc24gKDE0NSksICAgICAgIC0tICAgSElQUEktNjQwMCAKLQkJICAgZHZiUmNjTWFjTGF5ZXIgKDE0NiksIC0tIERWQi1SQ0MgTUFDIExheWVyCi0JCSAgIGR2YlJjY0Rvd25zdHJlYW0gKDE0NyksICAtLSBEVkItUkNDIERvd25zdHJlYW0gQ2hhbm5lbAotCQkgICBkdmJSY2NVcHN0cmVhbSAoMTQ4KSwgIC0tIERWQi1SQ0MgVXBzdHJlYW0gQ2hhbm5lbAotCQkgICBhdG1WaXJ0dWFsICgxNDkpLCAgIC0tIEFUTSBWaXJ0dWFsIEludGVyZmFjZQotCQkgICBtcGxzVHVubmVsICgxNTApLCAgIC0tIE1QTFMgVHVubmVsIFZpcnR1YWwgSW50ZXJmYWNlCi0JCSAgIHNycCAoMTUxKSwJLS0gU3BhdGlhbCBSZXVzZSBQcm90b2NvbAkKLQkJICAgdm9pY2VPdmVyQXRtICgxNTIpLCAgLS0gVm9pY2UgT3ZlciBBVE0KLQkJICAgdm9pY2VPdmVyRnJhbWVSZWxheSAoMTUzKSwgICAtLSBWb2ljZSBPdmVyIEZyYW1lIFJlbGF5IAotCQkgICBpZHNsICgxNTQpLAkJLS0gRGlnaXRhbCBTdWJzY3JpYmVyIExvb3Agb3ZlciBJU0ROCi0JCSAgIGNvbXBvc2l0ZUxpbmsgKDE1NSksICAtLSBBdmljaSBDb21wb3NpdGUgTGluayBJbnRlcmZhY2UKLQkJICAgc3M3U2lnTGluayAoMTU2KSwgICAgIC0tIFNTNyBTaWduYWxpbmcgTGluayAKLQkJICAgcHJvcFdpcmVsZXNzUDJQICgxNTcpLCAgLS0gIFByb3AuIFAyUCB3aXJlbGVzcyBpbnRlcmZhY2UKLQkJICAgZnJGb3J3YXJkICgxNTgpLCAgICAtLSBGcmFtZSBGb3J3YXJkIEludGVyZmFjZQotCQkgICByZmMxNDgzICgxNTkpLAktLSBNdWx0aXByb3RvY29sIG92ZXIgQVRNIEFBTDUKLQkJICAgdXNiICgxNjApLAkJLS0gVVNCIEludGVyZmFjZQotCQkgICBpZWVlODAyM2FkTGFnICgxNjEpLCAgLS0gSUVFRSA4MDIuM2FkIExpbmsgQWdncmVnYXRlCisgICAgICAgICAgICAgICAgICAgbXBjICgxMTMpLCAgICAgICAgICAtLSBJQk0gbXVsdGktcHJvdG9jb2wgY2hhbm5lbCBzdXBwb3J0CisgICAgICAgICAgICAgICAgICAgaXBPdmVyQXRtICgxMTQpLCAgICAtLSBJQk0gaXBPdmVyQXRtCisgICAgICAgICAgICAgICAgICAgaXNvODgwMjVGaWJlciAoMTE1KSwgLS0gSVNPIDgwMi41aiBGaWJlciBUb2tlbiBSaW5nCisgICAgICAgICAgICAgICAgICAgdGRsYyAoMTE2KSwJICAgICAgIC0tIElCTSB0d2luYXhpYWwgZGF0YSBsaW5rIGNvbnRyb2wKKyAgICAgICAgICAgICAgICAgICBnaWdhYml0RXRoZXJuZXQgKDExNyksIC0tIE9ic29sZXRlZCB2aWEgUkZDMzYzNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gZXRoZXJuZXRDc21hY2QgKDYpIHNob3VsZCBiZSB1c2VkIGluc3RlYWQKKyAgICAgICAgICAgICAgICAgICBoZGxjICgxMTgpLCAgICAgICAgIC0tIEhETEMKKyAgICAgICAgICAgICAgICAgICBsYXBmICgxMTkpLAkgICAgICAgLS0gTEFQIEYKKyAgICAgICAgICAgICAgICAgICB2MzcgKDEyMCksCSAgICAgICAtLSBWLjM3CisgICAgICAgICAgICAgICAgICAgeDI1bWxwICgxMjEpLCAgICAgICAtLSBNdWx0aS1MaW5rIFByb3RvY29sCisgICAgICAgICAgICAgICAgICAgeDI1aHVudEdyb3VwICgxMjIpLCAtLSBYMjUgSHVudCBHcm91cAorICAgICAgICAgICAgICAgICAgIHRyYW5zcEhkbGMgKDEyMyksICAgLS0gVHJhbnNwIEhETEMKKyAgICAgICAgICAgICAgICAgICBpbnRlcmxlYXZlICgxMjQpLCAgIC0tIEludGVybGVhdmUgY2hhbm5lbAorICAgICAgICAgICAgICAgICAgIGZhc3QgKDEyNSksICAgICAgICAgLS0gRmFzdCBjaGFubmVsCisgICAgICAgICAgICAgICAgICAgaXAgKDEyNiksCSAgICAgICAtLSBJUCAoZm9yIEFQUE4gSFBSIGluIElQIG5ldHdvcmtzKQorICAgICAgICAgICAgICAgICAgIGRvY3NDYWJsZU1hY2xheWVyICgxMjcpLCAgLS0gQ0FUViBNYWMgTGF5ZXIKKyAgICAgICAgICAgICAgICAgICBkb2NzQ2FibGVEb3duc3RyZWFtICgxMjgpLCAtLSBDQVRWIERvd25zdHJlYW0gaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgZG9jc0NhYmxlVXBzdHJlYW0gKDEyOSksICAtLSBDQVRWIFVwc3RyZWFtIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIGExMk1wcFN3aXRjaCAoMTMwKSwgLS0gQXZhbG9uIFBhcmFsbGVsIFByb2Nlc3NvcgorICAgICAgICAgICAgICAgICAgIHR1bm5lbCAoMTMxKSwgICAgICAgLS0gRW5jYXBzdWxhdGlvbiBpbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBjb2ZmZWUgKDEzMiksICAgICAgIC0tIGNvZmZlZSBwb3QKKyAgICAgICAgICAgICAgICAgICBjZXMgKDEzMyksICAgICAgICAgIC0tIENpcmN1aXQgRW11bGF0aW9uIFNlcnZpY2UKKyAgICAgICAgICAgICAgICAgICBhdG1TdWJJbnRlcmZhY2UgKDEzNCksIC0tIEFUTSBTdWIgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgbDJ2bGFuICgxMzUpLCAgICAgICAtLSBMYXllciAyIFZpcnR1YWwgTEFOIHVzaW5nIDgwMi4xUQorICAgICAgICAgICAgICAgICAgIGwzaXB2bGFuICgxMzYpLCAgICAgLS0gTGF5ZXIgMyBWaXJ0dWFsIExBTiB1c2luZyBJUAorICAgICAgICAgICAgICAgICAgIGwzaXB4dmxhbiAoMTM3KSwgICAgLS0gTGF5ZXIgMyBWaXJ0dWFsIExBTiB1c2luZyBJUFgKKyAgICAgICAgICAgICAgICAgICBkaWdpdGFsUG93ZXJsaW5lICgxMzgpLCAtLSBJUCBvdmVyIFBvd2VyIExpbmVzCQorICAgICAgICAgICAgICAgICAgIG1lZGlhTWFpbE92ZXJJcCAoMTM5KSwgLS0gTXVsdGltZWRpYSBNYWlsIG92ZXIgSVAKKyAgICAgICAgICAgICAgICAgICBkdG0gKDE0MCksICAgICAgICAtLSBEeW5hbWljIHN5bmNyb25vdXMgVHJhbnNmZXIgTW9kZQorICAgICAgICAgICAgICAgICAgIGRjbiAoMTQxKSwgICAgLS0gRGF0YSBDb21tdW5pY2F0aW9ucyBOZXR3b3JrCisgICAgICAgICAgICAgICAgICAgaXBGb3J3YXJkICgxNDIpLCAgICAtLSBJUCBGb3J3YXJkaW5nIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIG1zZHNsICgxNDMpLCAgICAgICAtLSBNdWx0aS1yYXRlIFN5bW1ldHJpYyBEU0wKKyAgICAgICAgICAgICAgICAgICBpZWVlMTM5NCAoMTQ0KSwgLS0gSUVFRTEzOTQgSGlnaCBQZXJmb3JtYW5jZSBTZXJpYWwgQnVzCisgICAgICAgICAgICAgICAgICAgaWYtZ3NuICgxNDUpLCAgICAgICAtLSAgIEhJUFBJLTY0MDAgCisgICAgICAgICAgICAgICAgICAgZHZiUmNjTWFjTGF5ZXIgKDE0NiksIC0tIERWQi1SQ0MgTUFDIExheWVyCisgICAgICAgICAgICAgICAgICAgZHZiUmNjRG93bnN0cmVhbSAoMTQ3KSwgIC0tIERWQi1SQ0MgRG93bnN0cmVhbSBDaGFubmVsCisgICAgICAgICAgICAgICAgICAgZHZiUmNjVXBzdHJlYW0gKDE0OCksICAtLSBEVkItUkNDIFVwc3RyZWFtIENoYW5uZWwKKyAgICAgICAgICAgICAgICAgICBhdG1WaXJ0dWFsICgxNDkpLCAgIC0tIEFUTSBWaXJ0dWFsIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIG1wbHNUdW5uZWwgKDE1MCksICAgLS0gTVBMUyBUdW5uZWwgVmlydHVhbCBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBzcnAgKDE1MSksCS0tIFNwYXRpYWwgUmV1c2UgUHJvdG9jb2wJCisgICAgICAgICAgICAgICAgICAgdm9pY2VPdmVyQXRtICgxNTIpLCAgLS0gVm9pY2UgT3ZlciBBVE0KKyAgICAgICAgICAgICAgICAgICB2b2ljZU92ZXJGcmFtZVJlbGF5ICgxNTMpLCAgIC0tIFZvaWNlIE92ZXIgRnJhbWUgUmVsYXkgCisgICAgICAgICAgICAgICAgICAgaWRzbCAoMTU0KSwJCS0tIERpZ2l0YWwgU3Vic2NyaWJlciBMb29wIG92ZXIgSVNETgorICAgICAgICAgICAgICAgICAgIGNvbXBvc2l0ZUxpbmsgKDE1NSksICAtLSBBdmljaSBDb21wb3NpdGUgTGluayBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBzczdTaWdMaW5rICgxNTYpLCAgICAgLS0gU1M3IFNpZ25hbGluZyBMaW5rIAorICAgICAgICAgICAgICAgICAgIHByb3BXaXJlbGVzc1AyUCAoMTU3KSwgIC0tICBQcm9wLiBQMlAgd2lyZWxlc3MgaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgZnJGb3J3YXJkICgxNTgpLCAgICAtLSBGcmFtZSBGb3J3YXJkIEludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIHJmYzE0ODMgKDE1OSksCS0tIE11bHRpcHJvdG9jb2wgb3ZlciBBVE0gQUFMNQorICAgICAgICAgICAgICAgICAgIHVzYiAoMTYwKSwJCS0tIFVTQiBJbnRlcmZhY2UKKyAgICAgICAgICAgICAgICAgICBpZWVlODAyM2FkTGFnICgxNjEpLCAgLS0gSUVFRSA4MDIuM2FkIExpbmsgQWdncmVnYXRlCiAgICAgICAgICAgICAgICAgICAgYmdwcG9saWN5YWNjb3VudGluZyAoMTYyKSwgLS0gQkdQIFBvbGljeSBBY2NvdW50aW5nCiAgICAgICAgICAgICAgICAgICAgZnJmMTZNZnJCdW5kbGUgKDE2MyksIC0tIEZSRiAuMTYgTXVsdGlsaW5rIEZyYW1lIFJlbGF5IAogICAgICAgICAgICAgICAgICAgIGgzMjNHYXRla2VlcGVyICgxNjQpLCAtLSBIMzIzIEdhdGVrZWVwZXIKQEAgLTM5MSw2ICs0NjAsOSBAQAogICAgICAgICAgICAgICAgICAgIHByb3BEb2NzV2lyZWxlc3NVcHN0cmVhbSAoMTgyKSwgLS0gQ2lzY28gcHJvcHJpZXRhcnkgVXBzdHJlYW0KICAgICAgICAgICAgICAgICAgICBoaXBlcmxhbjIgKDE4MyksIC0tIEhJUEVSTEFOIFR5cGUgMiBSYWRpbyBJbnRlcmZhY2UKICAgICAgICAgICAgICAgICAgICBwcm9wQldBcDJNcCAoMTg0KSwgLS0gUHJvcEJyb2FkYmFuZFdpcmVsZXNzQWNjZXNzcHQybXVsdGlwdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSB1c2Ugb2YgdGhpcyBpZnR5cGUgZm9yIElFRUUgODAyLjE2IFdNQU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gaW50ZXJmYWNlcyBhcyBwZXIgSUVFRSBTdGQgODAyLjE2ZiBpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBkZXByZWNhdGVkIGFuZCBpZlR5cGUgMjM3IHNob3VsZCBiZSB1c2VkIGluc3RlYWQuCiAgICAgICAgICAgICAgICAgICAgc29uZXRPdmVyaGVhZENoYW5uZWwgKDE4NSksIC0tIFNPTkVUIE92ZXJoZWFkIENoYW5uZWwKICAgICAgICAgICAgICAgICAgICBkaWdpdGFsV3JhcHBlck92ZXJoZWFkQ2hhbm5lbCAoMTg2KSwgLS0gRGlnaXRhbCBXcmFwcGVyCiAgICAgICAgICAgICAgICAgICAgYWFsMiAoMTg3KSwgLS0gQVRNIGFkYXB0YXRpb24gbGF5ZXIgMgpAQCAtNDM0LDEwICs1MDYsMzQgQEAKICAgICAgICAgICAgICAgICAgICBycHIgKDIyNSksIC0tIFJlc2lsaWVudCBQYWNrZXQgUmluZyBJbnRlcmZhY2UgVHlwZQogICAgICAgICAgICAgICAgICAgIHFhbSAoMjI2KSwgLS0gUkYgUWFtIEludGVyZmFjZQogICAgICAgICAgICAgICAgICAgIGxtcCAoMjI3KSwgLS0gTGluayBNYW5hZ2VtZW50IFByb3RvY29sCi0gICAgICAgICAgICAgICAgICAgY2JsVmVjdGFTdGFyICgyMjgpLCAtLSBDYW1icmlkZ2UgQnJvYWRiYW5kIExpbWl0ZWQgVmVjdGFTdGFyCisgICAgICAgICAgICAgICAgICAgY2JsVmVjdGFTdGFyICgyMjgpLCAtLSBDYW1icmlkZ2UgQnJvYWRiYW5kIE5ldHdvcmtzIExpbWl0ZWQgVmVjdGFTdGFyCiAgICAgICAgICAgICAgICAgICAgZG9jc0NhYmxlTUNtdHNEb3duc3RyZWFtICgyMjkpLCAtLSBDQVRWIE1vZHVsYXIgQ01UUyBEb3duc3RyZWFtIEludGVyZmFjZQotICAgICAgICAgICAgICAgICAgIGFkc2wyICgyMzApIC0tIEFzeW1tZXRyaWMgRGlnaXRhbCBTdWJzY3JpYmVyIExvb3AgVmVyc2lvbiAyCi0gICAgCQkJICAgfQorICAgICAgICAgICAgICAgICAgIGFkc2wyICgyMzApLCAtLSBBc3ltbWV0cmljIERpZ2l0YWwgU3Vic2NyaWJlciBMb29wIFZlcnNpb24gMiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0gKERFUFJFQ0FURUQvT0JTT0xFVEVEIC0gcGxlYXNlIHVzZSBhZHNsMnBsdXMgMjM4IGluc3RlYWQpCisgICAgICAgICAgICAgICAgICAgbWFjU2VjQ29udHJvbGxlZElGICgyMzEpLCAtLSBNQUNTZWNDb250cm9sbGVkIAorICAgICAgICAgICAgICAgICAgIG1hY1NlY1VuY29udHJvbGxlZElGICgyMzIpLCAtLSBNQUNTZWNVbmNvbnRyb2xsZWQKKyAgICAgICAgICAgICAgICAgICBhdmljaU9wdGljYWxFdGhlciAoMjMzKSwgLS0gQXZpY2kgT3B0aWNhbCBFdGhlcm5ldCBBZ2dyZWdhdGUKKyAgICAgICAgICAgICAgICAgICBhdG1ib25kICgyMzQpLCAtLSBhdG1ib25kCisgICAgICAgICAgICAgICAgICAgdm9pY2VGR0RPUyAoMjM1KSwgLS0gdm9pY2UgRkdEIE9wZXJhdG9yIFNlcnZpY2VzCisgICAgICAgICAgICAgICAgICAgbW9jYVZlcnNpb24xICgyMzYpLCAtLSBNdWx0aU1lZGlhIG92ZXIgQ29heCBBbGxpYW5jZSAoTW9DQSkgSW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tIGFzIGRvY3VtZW50ZWQgaW4gaW5mb3JtYXRpb24gcHJvdmlkZWQgcHJpdmF0ZWx5IHRvIElBTkEKKyAgICAgICAgICAgICAgICAgICBpZWVlODAyMTZXTUFOICgyMzcpLCAtLSBJRUVFIDgwMi4xNiBXTUFOIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgIGFkc2wycGx1cyAoMjM4KSwgLS0gQXN5bW1ldHJpYyBEaWdpdGFsIFN1YnNjcmliZXIgTG9vcCBWZXJzaW9uIDIsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLSBWZXJzaW9uIDIgUGx1cyBhbmQgYWxsIHZhcmlhbnRzCisgICAgICAgICAgICAgICAgICAgZHZiUmNzTWFjTGF5ZXIgKDIzOSksIC0tIERWQi1SQ1MgTUFDIExheWVyCisgICAgICAgICAgICAgICAgICAgZHZiVGRtICgyNDApLCAtLSBEVkIgU2F0ZWxsaXRlIFRETQorICAgICAgICAgICAgICAgICAgIGR2YlJjc1RkbWEgKDI0MSksIC0tIERWQi1SQ1MgVERNQQorICAgICAgICAgICAgICAgICAgIHg4NkxhcHMgKDI0MiksIC0tIExBUFMgYmFzZWQgb24gSVRVLVQgWC44Ni9ZLjEzMjMKKyAgICAgICAgICAgICAgICAgICB3d2FuUFAgKDI0MyksIC0tIDNHUFAgV1dBTgorICAgICAgICAgICAgICAgICAgIHd3YW5QUDIgKDI0NCksIC0tIDNHUFAyIFdXQU4KKyAgICAgICAgICAgICAgICAgICB2b2ljZUVCUyAoMjQ1KSwgLS0gdm9pY2UgUC1waG9uZSBFQlMgcGh5c2ljYWwgaW50ZXJmYWNlCisgICAgICAgICAgICAgICAgICAgaWZQd1R5cGUgKDI0NiksIC0tIFBzZXVkb3dpcmUgaW50ZXJmYWNlIHR5cGUKKyAgICAgICAgICAgICAgICAgICBpbGFuICgyNDcpLCAtLSBJbnRlcm5hbCBMQU4gb24gYSBicmlkZ2UgcGVyIElFRUUgODAyLjFhcAorICAgICAgICAgICAgICAgICAgIHBpcCAoMjQ4KSwgLS0gUHJvdmlkZXIgSW5zdGFuY2UgUG9ydCBvbiBhIGJyaWRnZSBwZXIgSUVFRSA4MDIuMWFoIFBCQgorICAgICAgICAgICAgICAgICAgIGFsdUVMUCAoMjQ5KSwgLS0gQWxjYXRlbC1MdWNlbnQgRXRoZXJuZXQgTGluayBQcm90ZWN0aW9uCisgICAgICAgICAgICAgICAgICAgZ3BvbiAoMjUwKSwgLS0gR2lnYWJpdC1jYXBhYmxlIHBhc3NpdmUgb3B0aWNhbCBuZXR3b3JrcyAoRy1QT04pIGFzIHBlciBJVFUtVCBHLjk0OAorICAgICAgICAgICAgICAgICAgIHZkc2wyICgyNTEpIC0tIFZlcnkgaGlnaCBzcGVlZCBkaWdpdGFsIHN1YnNjcmliZXIgbGluZSBWZXJzaW9uIDIgKGFzIHBlciBJVFUtVCBSZWNvbW1lbmRhdGlvbiBHLjk5My4yKQorICAgICAgICAgICAgICAgICAgIH0KIAogSUFOQXR1bm5lbFR5cGUgOjo9IFRFWFRVQUwtQ09OVkVOVElPTgogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtNDgxLDcgKzU3Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgc2l4VG9Gb3VyKDExKSwgICAtLSA2dG80IGVuY2Fwc3VsYXRpb24KICAgICAgICAgICAgICAgICAgICBzaXhPdmVyRm91cigxMiksIC0tIDZvdmVyNCBlbmNhcHN1bGF0aW9uCiAgICAgICAgICAgICAgICAgICAgaXNhdGFwKDEzKSwgICAgICAtLSBJU0FUQVAgZW5jYXBzdWxhdGlvbgotICAgICAgICAgICAgICAgICAgIHRlcmVkbygxNCkgICAgICAgLS0gVGVyZWRvIGVuY2Fwc3VsYXRpb24KKyAgICAgICAgICAgICAgICAgICB0ZXJlZG8oMTQpLCAgICAgIC0tIFRlcmVkbyBlbmNhcHN1bGF0aW9uCisgICAgICAgICAgICAgICAgICAgaXBIdHRwcygxNSkgICAgICAtLSBJUEhUVFBTCiAgICAgICAgICAgICAgICB9CiAKICAgIEVORApkaWZmIC0tZ2l0IGEvbWlicy9JUC1GT1JXQVJELU1JQi50eHQgYi9taWJzL0lQLUZPUldBUkQtTUlCLnR4dAppbmRleCAzMDkwZmY3Li4zNDdiNWUwIDEwMDY0NAotLS0gYS9taWJzL0lQLUZPUldBUkQtTUlCLnR4dAorKysgYi9taWJzL0lQLUZPUldBUkQtTUlCLnR4dApAQCAtNiw4ICs2LDYgQEAKICAgICBDb3VudGVyMzIgICAgICAgICAgICAgICAgICAgICAgICAgIEZST00gU05NUHYyLVNNSQogICAgIFJvd1N0YXR1cyAgICAgICAgICAgICAgICAgICAgICAgICAgRlJPTSBTTk1QdjItVEMKIAotCi0KICAgICBNT0RVTEUtQ09NUExJQU5DRSwgT0JKRUNULUdST1VQICAgIEZST00gU05NUHYyLUNPTkYKICAgICBJbnRlcmZhY2VJbmRleE9yWmVybyAgICAgICAgICAgICAgIEZST00gSUYtTUlCCiAgICAgaXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUk9NIElQLU1JQgpAQCAtNTYsOSArNTQsNiBAQAogICAgICAgICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIElQIEZvcndhcmRpbmcgTUlCIGluIGEKICAgICAgICAgICAgIHJlYWQtb25seSBtb2RlLgogCi0KLQotCiAgICAgICAgICAgICBUaGUgaW5ldENpZHJSb3V0ZVRhYmxlIHJlcGxhY2VzIHRoZSBJUHY0LXNwZWNpZmljCiAgICAgICAgICAgICBpcENpZHJSb3V0ZVRhYmxlLCBpdHMgcmVsYXRlZCBvYmplY3RzLCBhbmQgcmVsYXRlZAogICAgICAgICAgICAgY29uZm9ybWFuY2Ugc3RhdGVtZW50cy4KQEAgLTEwNyw5ICsxMDIsNiBAQAogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhpcyBlbnRpdHkncyBJUCBSb3V0aW5nIHRhYmxlLiIKICAgICBSRUZFUkVOQ0UKICAgICAgICAgICAgIlJGQyAxMjEzIFNlY3Rpb24gNi42LCBUaGUgSVAgR3JvdXAiCkBAIC0xNTgsOSArMTUwLDYgQEAKICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzEgICAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGluZXRDaWRyUm91dGVNZXRyaWMyICAgICAgSW50ZWdlcjMyLAogICAgICAgICBpbmV0Q2lkclJvdXRlTWV0cmljMyAgICAgIEludGVnZXIzMiwKLQotCi0KICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzQgICAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGluZXRDaWRyUm91dGVNZXRyaWM1ICAgICAgSW50ZWdlcjMyLAogICAgICAgICBpbmV0Q2lkclJvdXRlU3RhdHVzICAgICAgIFJvd1N0YXR1cwpAQCAtMTk4LDcgKzE4Nyw2IEBACiAgICAgICAgICAgICBlcXVhbCB0byB4LiAgSWYgbm90LCB0aGVuIHRoZSBpbmRleCBwYWlyIGlzIG5vdAogICAgICAgICAgICAgY29uc2lzdGVudCBhbmQgYW4gaW5jb25zaXN0ZW50TmFtZSBlcnJvciBtdXN0IGJlCiAgICAgICAgICAgICByZXR1cm5lZCBvbiBTRVQgb3IgQ1JFQVRFIHJlcXVlc3RzLiIKLQogICAgIDo6PSB7IGluZXRDaWRyUm91dGVFbnRyeSAyIH0KIAogaW5ldENpZHJSb3V0ZVBmeExlbiBPQkpFQ1QtVFlQRQpAQCAtMjEwLDggKzE5OCw2IEBACiAgICAgICAgICAgICBtYXNrIHRvIGJlIGxvZ2ljYWwtQU5EZWQgd2l0aCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcwogICAgICAgICAgICAgYmVmb3JlIGJlaW5nIGNvbXBhcmVkIHRvIHRoZSB2YWx1ZSBpbiB0aGUKIAotCi0KICAgICAgICAgICAgIGluZXRDaWRyUm91dGVEZXN0IGZpZWxkLgogCiAgICAgICAgICAgICBUaGUgdmFsdWVzIGZvciB0aGUgaW5kZXggb2JqZWN0cyBpbmV0Q2lkclJvdXRlRGVzdCBhbmQKQEAgLTIyMyw3ICsyMDksNiBAQAogICAgICAgICAgICAgZXF1YWwgdG8geC4gIElmIG5vdCwgdGhlbiB0aGUgaW5kZXggcGFpciBpcyBub3QKICAgICAgICAgICAgIGNvbnNpc3RlbnQgYW5kIGFuIGluY29uc2lzdGVudE5hbWUgZXJyb3IgbXVzdCBiZQogICAgICAgICAgICAgcmV0dXJuZWQgb24gU0VUIG9yIENSRUFURSByZXF1ZXN0cy4iCi0KICAgICA6Oj0geyBpbmV0Q2lkclJvdXRlRW50cnkgMyB9CiAKIGluZXRDaWRyUm91dGVQb2xpY3kgT0JKRUNULVRZUEUKQEAgLTI2MSw4ICsyNDYsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJPbiByZW1vdGUgcm91dGVzLCB0aGUgYWRkcmVzcyBvZiB0aGUgbmV4dCBzeXN0ZW0gZW4KIAotCi0KICAgICAgICAgICAgIHJvdXRlLiAgRm9yIG5vbi1yZW1vdGUgcm91dGVzLCBhIHplcm8gbGVuZ3RoIHN0cmluZy4KIAogICAgICAgICAgICAgVGhlIHR5cGUgb2YgdGhpcyBhZGRyZXNzIGlzIGRldGVybWluZWQgYnkgdGhlIHZhbHVlIG9mCkBAIC0zMTIsOSArMjk1LDYgQEAKICAgICAgICAgICAgIGRpc2NhcmRzIHRoZSBtZXNzYWdlIHNpbGVudGx5LiIKICAgICA6Oj0geyBpbmV0Q2lkclJvdXRlRW50cnkgOCB9CiAKLQotCi0KIGluZXRDaWRyUm91dGVQcm90byBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSUFOQWlwUm91dGVQcm90b2NvbAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CkBAIC0zNjIsOSArMzQyLDYgQEAKICAgICAgICAgICAgIHZhbHVlLiAgSWYgdGhpcyBtZXRyaWMgaXMgbm90IHVzZWQsIGl0cyB2YWx1ZSBzaG91bGQgYmUKICAgICAgICAgICAgIHNldCB0byAtMS4iCiAgICAgREVGVkFMIHsgLTEgfQotCi0KLQogICAgIDo6PSB7IGluZXRDaWRyUm91dGVFbnRyeSAxMiB9CiAKIGluZXRDaWRyUm91dGVNZXRyaWMyIE9CSkVDVC1UWVBFCkBAIC00MTQsOCArMzkxLDYgQEAKICAgICAgICAgICAgIkFuIGFsdGVybmF0ZSByb3V0aW5nIG1ldHJpYyBmb3IgdGhpcyByb3V0ZS4gIFRoZQogICAgICAgICAgICAgc2VtYW50aWNzIG9mIHRoaXMgbWV0cmljIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSByb3V0aW5nLQogCi0KLQogICAgICAgICAgICAgcHJvdG9jb2wgc3BlY2lmaWVkIGluIHRoZSByb3V0ZSdzIGluZXRDaWRyUm91dGVQcm90bwogICAgICAgICAgICAgdmFsdWUuICBJZiB0aGlzIG1ldHJpYyBpcyBub3QgdXNlZCwgaXRzIHZhbHVlIHNob3VsZCBiZQogICAgICAgICAgICAgc2V0IHRvIC0xLiIKQEAgLTQ2NSw4ICs0NDAsNiBAQAogICAgICAgICAgICAgLS0gICAgIFRoaXMgTUlCIHJlcXVpcmVzIHN1cHBvcnQgZm9yIGdsb2JhbCBhbmQKICAgICAgICAgICAgIC0tICAgICBub24tZ2xvYmFsIGlwdjQgYW5kIGlwdjYgYWRkcmVzc2VzLgogCi0KLQogICAgICAgICAgICAgLS0KICAgICAgICAgICAgIC0tIE9CSkVDVCAgICAgIGluZXRDaWRyUm91dGVEZXN0CiAgICAgICAgICAgICAtLSBTWU5UQVggICAgICBJbmV0QWRkcmVzcyAoU0laRSAoNCB8IDggfCAxNiB8IDIwKSkKQEAgLTQ5Nyw3ICs0NzAsNiBAQAogICAgV1JJVEUtU1lOVEFYICBSb3dTdGF0dXMgeyBhY3RpdmUoMSksIG5vdEluU2VydmljZSAoMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZUFuZEdvKDQpLCBkZXN0cm95KDYpIH0KICAgIERFU0NSSVBUSU9OICAiU3VwcG9ydCBmb3IgY3JlYXRlQW5kV2FpdCBpcyBub3QgcmVxdWlyZWQuIgotCiAgICA6Oj0geyBpcEZvcndhcmRDb21wbGlhbmNlcyAzIH0KIAogaXBGb3J3YXJkUmVhZE9ubHlDb21wbGlhbmNlIE1PRFVMRS1DT01QTElBTkNFCkBAIC01MTUsOSArNDg3LDYgQEAKICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLiIKIAogICAgT0JKRUNUICAgICAgaW5ldENpZHJSb3V0ZVR5cGUKLQotCi0KICAgIE1JTi1BQ0NFU1MgIHJlYWQtb25seQogICAgREVTQ1JJUFRJT04KICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLiIKQEAgLTU1Nyw3ICs1MjYsNiBAQAogICAgTUlOLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICBERVNDUklQVElPTgogICAgICAgIldyaXRlIGFjY2VzcyBpcyBub3QgcmVxdWlyZWQuIgotCiAgICA6Oj0geyBpcEZvcndhcmRDb21wbGlhbmNlcyA0IH0KIAogLS0gdW5pdHMgb2YgY29uZm9ybWFuY2UKQEAgLTU2Niw5ICs1MzQsNiBAQAogICAgIE9CSkVDVFMgeyBpbmV0Q2lkclJvdXRlRGlzY2FyZHMsCiAgICAgICAgICAgICAgIGluZXRDaWRyUm91dGVJZkluZGV4LCBpbmV0Q2lkclJvdXRlVHlwZSwKICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZVByb3RvLCBpbmV0Q2lkclJvdXRlQWdlLAotCi0KLQogICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlTmV4dEhvcEFTLCBpbmV0Q2lkclJvdXRlTWV0cmljMSwKICAgICAgICAgICAgICAgaW5ldENpZHJSb3V0ZU1ldHJpYzIsIGluZXRDaWRyUm91dGVNZXRyaWMzLAogICAgICAgICAgICAgICBpbmV0Q2lkclJvdXRlTWV0cmljNCwgaW5ldENpZHJSb3V0ZU1ldHJpYzUsCkBAIC02MTgsOCArNTgzLDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiQSBwYXJ0aWN1bGFyIHJvdXRlIHRvIGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiwgdW5kZXIgYQogCi0KLQogICAgICAgICAgICAgcGFydGljdWxhciBwb2xpY3kuIgogICAgIElOREVYIHsKICAgICAgICAgaXBDaWRyUm91dGVEZXN0LApAQCAtNjY4LDkgKzYzMSw2IEBACiBpcENpZHJSb3V0ZU1hc2sgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIElwQWRkcmVzcwogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5Ci0KLQotCiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkluZGljYXRlIHRoZSBtYXNrIHRvIGJlIGxvZ2ljYWwtQU5EZWQgd2l0aCB0aGUKQEAgLTcyMCw4ICs2ODAsNiBAQAogICAgICAgICAgICAgICAgMSAwIDAgMCAgPT0+ICAxNiAgICAgIDEgMCAwIDEgID09PiAgMTgKICAgICAgICAgICAgICAgIDEgMCAxIDAgID09PiAgMjAgICAgICAxIDAgMSAxICA9PT4gIDIyCiAKLQotCiAgICAgICAgICAgICAgICAxIDEgMCAwICA9PT4gIDI0ICAgICAgMSAxIDAgMSAgPT0+ICAyNgogICAgICAgICAgICAgICAgMSAxIDEgMCAgPT0+ICAyOCAgICAgIDEgMSAxIDEgID09PiAgMzAiCiAgICAgOjo9IHsgaXBDaWRyUm91dGVFbnRyeSAzIH0KQEAgLTc3MSw5ICs3MjksNiBAQAogICAgICAgICAgICAgcm91dGVzLiIKICAgICA6Oj0geyBpcENpZHJSb3V0ZUVudHJ5IDYgfQogCi0KLQotCiBpcENpZHJSb3V0ZVByb3RvIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJTlRFR0VSIHsKICAgICAgICAgICAgICAgICBvdGhlciAgICAgKDEpLCAgLS0gbm90IHNwZWNpZmllZApAQCAtODIxLDkgKzc3Niw2IEBACiBpcENpZHJSb3V0ZUluZm8gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIE9CSkVDVCBJREVOVElGSUVSCiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQotCi0KLQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBIHJlZmVyZW5jZSB0byBNSUIgZGVmaW5pdGlvbnMgc3BlY2lmaWMgdG8gdGhlCkBAIC04NzMsOCArODI1LDYgQEAKICAgICAgICAgICAgIHByb3RvY29sIHNwZWNpZmllZCBpbiB0aGUgcm91dGUncyBpcENpZHJSb3V0ZVByb3RvCiAgICAgICAgICAgICB2YWx1ZS4gIElmIHRoaXMgbWV0cmljIGlzIG5vdCB1c2VkLCBpdHMgdmFsdWUgc2hvdWxkIGJlCiAKLQotCiAgICAgICAgICAgICBzZXQgdG8gLTEuIgogICAgIERFRlZBTCB7IC0xIH0KICAgICA6Oj0geyBpcENpZHJSb3V0ZUVudHJ5IDEyIH0KQEAgLTkyMyw5ICs4NzMsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1jcmVhdGUKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIHJvdyBzdGF0dXMgdmFyaWFibGUsIHVzZWQgYWNjb3JkaW5nIHRvIHJvdwogICAgICAgICAgICAgaW5zdGFsbGF0aW9uIGFuZCByZW1vdmFsIGNvbnZlbnRpb25zLiIKICAgICA6Oj0geyBpcENpZHJSb3V0ZUVudHJ5IDE2IH0KQEAgLTk0NCw3ICs4OTEsNiBAQAogCiAgICBNT0RVTEUgIC0tIHRoaXMgbW9kdWxlCiAgICBNQU5EQVRPUlktR1JPVVBTIHsgaXBGb3J3YXJkQ2lkclJvdXRlR3JvdXAgfQotCiAgICA6Oj0geyBpcEZvcndhcmRDb21wbGlhbmNlcyAxIH0KIAogLS0gdW5pdHMgb2YgY29uZm9ybWFuY2UKQEAgLTk3NCw5ICs5MjAsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBvYnNvbGV0ZQogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIGN1cnJlbnQgaXBGb3J3YXJkVGFibGUgZW50cmllcyB0aGF0IGFyZQogICAgICAgICAgICAgbm90IGludmFsaWQuIgogICAgIDo6PSB7IGlwRm9yd2FyZCAxIH0KQEAgLTEwMjUsOSArOTY4LDYgQEAKICAgICAgICAgaXBGb3J3YXJkSW5mbyAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICAgICAgaXBGb3J3YXJkTmV4dEhvcEFTICBJbnRlZ2VyMzIsCiAgICAgICAgIGlwRm9yd2FyZE1ldHJpYzEgICAgSW50ZWdlcjMyLAotCi0KLQogICAgICAgICBpcEZvcndhcmRNZXRyaWMyICAgIEludGVnZXIzMiwKICAgICAgICAgaXBGb3J3YXJkTWV0cmljMyAgICBJbnRlZ2VyMzIsCiAgICAgICAgIGlwRm9yd2FyZE1ldHJpYzQgICAgSW50ZWdlcjMyLApAQCAtMTA3Nyw4ICsxMDE3LDYgQEAKIC0tIGFuZCB0aGUgUm91dGVyIFJlcXVpcmVtZW50cyBkb2N1bWVudHMgZGlzYWdyZWUgb24gdGhlIHdpZHRoCiAtLSBvZiB0aGUgVE9TIGZpZWxkLiAgVGhpcyBtYXBwaW5nIGRlc2NyaWJlcyB0aGUgUm91dGVyCiAKLQotCiAtLSBSZXF1aXJlbWVudHMgbWFwcGluZywgYW5kIGxlYXZlcyByb29tIHRvIHdpZGVuIHRoZSBUT1MgZmllbGQKIC0tIHdpdGhvdXQgaW1wYWN0IHRvIGZpZWxkZWQgc3lzdGVtcy4KIApAQCAtMTEwNSw4ICsxMDQzLDYgQEAKICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgICAgIHwKICAgICAgICAgICAgICstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSsKIAotCi0KICAgICAgICAgICAgICAgICAgICAgICAgICBJUCBUT1MgICAgICAgICAgICAgICAgSVAgVE9TCiAgICAgICAgICAgICAgICBGaWVsZCAgICAgUG9saWN5ICAgICAgRmllbGQgICAgIFBvbGljeQogICAgICAgICAgICAgICAgQ29udGVudHMgICAgQ29kZSAgICAgIENvbnRlbnRzICAgIENvZGUKQEAgLTExMjcsOSArMTA2Myw2IEBACiAgICAgOjo9IHsgaXBGb3J3YXJkRW50cnkgMyB9CiAKIGlwRm9yd2FyZE5leHRIb3AgT0JKRUNULVRZUEUKLQotCi0KICAgICBTWU5UQVggICAgIElwQWRkcmVzcwogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBvYnNvbGV0ZQpAQCAtMTE3OSw5ICsxMTEyLDYgQEAKICAgICBERUZWQUwgeyBpbnZhbGlkIH0KICAgICA6Oj0geyBpcEZvcndhcmRFbnRyeSA2IH0KIAotCi0KLQogaXBGb3J3YXJkUHJvdG8gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIElOVEVHRVIgewogICAgICAgICAgICAgICAgIG90aGVyICAgICAoMSksICAtLSBub3Qgc3BlY2lmaWVkCkBAIC0xMjI5LDkgKzExNTksNiBAQAogICAgIFNZTlRBWCAgICAgT0JKRUNUIElERU5USUZJRVIKICAgICBNQVgtQUNDRVNTIHJlYWQtY3JlYXRlCiAgICAgU1RBVFVTICAgICBvYnNvbGV0ZQotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBIHJlZmVyZW5jZSB0byBNSUIgZGVmaW5pdGlvbnMgc3BlY2lmaWMgdG8gdGhlCiAgICAgICAgICAgICBwYXJ0aWN1bGFyIHJvdXRpbmcgcHJvdG9jb2wgdGhhdCBpcyByZXNwb25zaWJsZSBmb3IKQEAgLTEyODEsOSArMTIwOCw2IEBACiAgICAgREVGVkFMIHsgLTEgfQogICAgIDo6PSB7IGlwRm9yd2FyZEVudHJ5IDEyIH0KIAotCi0KLQogaXBGb3J3YXJkTWV0cmljMyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSW50ZWdlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQpAQCAtMTMzMiwxMiArMTI1Niw4IEBACiAgICAgICAgICAgICJUaGUgY29tcGxpYW5jZSBzdGF0ZW1lbnQgZm9yIFNOTVAgZW50aXRpZXMgdGhhdAogICAgICAgICAgICAgaW1wbGVtZW50IHRoZSBpcEZvcndhcmQgTUlCLiIKIAotCi0KLQogICAgTU9EVUxFICAtLSB0aGlzIG1vZHVsZQogICAgTUFOREFUT1JZLUdST1VQUyB7IGlwRm9yd2FyZE11bHRpUGF0aEdyb3VwIH0KLQogICAgOjo9IHsgaXBGb3J3YXJkQ29tcGxpYW5jZXMgMiB9CiAKIGlwRm9yd2FyZE11bHRpUGF0aEdyb3VwIE9CSkVDVC1HUk9VUApkaWZmIC0tZ2l0IGEvbWlicy9JUC1NSUIudHh0IGIvbWlicy9JUC1NSUIudHh0CmluZGV4IDBhOTM1MDEuLmZlMmRiNWYgMTAwNjQ0Ci0tLSBhL21pYnMvSVAtTUlCLnR4dAorKysgYi9taWJzL0lQLU1JQi50eHQKQEAgLTIxLDggKzIxLDYgQEAKICAgICBDT05UQUNULUlORk8KICAgICAgICAgICAgIkVkaXRvcjoKIAotCi0KICAgICAgICAgICAgIFNoYXduIEEuIFJvdXRoaWVyCiAgICAgICAgICAgICBJbnRlcndvcmtpbmcgTGFicwogICAgICAgICAgICAgMTA4IFdoaXNwZXJpbmcgUGluZXMgRHIuIFN1aXRlIDIzNQpAQCAtNzIsOCArNzAsNiBAQAogCiAgICAgICAgICAgICBsaW5rbGF5ZXIoNSkgaW5kaWNhdGVzIGFuIGFkZHJlc3MgY3JlYXRlZCBieSBJUHY2IHN0YXRlbGVzcwogCi0KLQogICAgICAgICAgICAgYXV0by1jb25maWd1cmF0aW9uLgogCiAgICAgICAgICAgICByYW5kb20oNikgaW5kaWNhdGVzIGFuIGFkZHJlc3MgY2hvc2VuIGJ5IHRoZSBzeXN0ZW0gYXQKQEAgLTEyMyw4ICsxMTksNiBAQAogICAgICAgICAgICAgVGhlIGR1cGxpY2F0ZSg3KSBzdGF0ZSBpbmRpY2F0ZXMgdGhlIGFkZHJlc3MgaGFzIGJlZW4KICAgICAgICAgICAgIGRldGVybWluZWQgdG8gYmUgbm9uLXVuaXF1ZSBvbiB0aGUgbGluayBhbmQgc28gbXVzdCBub3QgYmUKIAotCi0KICAgICAgICAgICAgIHVzZWQuCiAKICAgICAgICAgICAgIFRoZSBvcHRpbWlzdGljKDgpIHN0YXRlIGluZGljYXRlcyB0aGUgYWRkcmVzcyBpcyBhdmFpbGFibGUKQEAgLTE3Myw5ICsxNjcsNiBAQAogICAgICAgICBtYW51YWwoMiksCiAgICAgICAgIHdlbGxrbm93bigzKSwKICAgICAgICAgZGhjcCg0KSwKLQotCi0KICAgICAgICAgcm91dGVyYWR2KDUpCiAgICAgfQogCkBAIC0yMjUsOCArMjE2LDYgQEAKICAgICAgICAgICAgIHRoZSBJUHY0IGhlYWRlciBvZiBkYXRhZ3JhbXMgb3JpZ2luYXRlZCBhdCB0aGlzIGVudGl0eSwKICAgICAgICAgICAgIHdoZW5ldmVyIGEgVFRMIHZhbHVlIGlzIG5vdCBzdXBwbGllZCBieSB0aGUgdHJhbnNwb3J0IGxheWVyCiAKLQotCiAgICAgICAgICAgICBwcm90b2NvbC4KIAogICAgICAgICAgICAgV2hlbiB0aGlzIG9iamVjdCBpcyB3cml0dGVuLCB0aGUgZW50aXR5IHNob3VsZCBzYXZlIHRoZQpAQCAtMjc1LDkgKzI2NCw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLXdyaXRlCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBkZWZhdWx0IHZhbHVlIGluc2VydGVkIGludG8gdGhlIEhvcCBMaW1pdCBmaWVsZCBvZiB0aGUKICAgICAgICAgICAgIElQdjYgaGVhZGVyIG9mIGRhdGFncmFtcyBvcmlnaW5hdGVkIGF0IHRoaXMgZW50aXR5IHdoZW5ldmVyCiAgICAgICAgICAgICBhIEhvcCBMaW1pdCB2YWx1ZSBpcyBub3Qgc3VwcGxpZWQgYnkgdGhlIHRyYW5zcG9ydCBsYXllcgpAQCAtMzI2LDkgKzMxMiw2IEBACiAgICAgICAgICAgICJBbiBlbnRyeSBjb250YWluaW5nIElQdjQtc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIGEgc3BlY2lmaWMKICAgICAgICAgICAgIGludGVyZmFjZS4iCiAgICAgSU5ERVggeyBpcHY0SW50ZXJmYWNlSWZJbmRleCB9Ci0KLQotCiAgICAgOjo9IHsgaXB2NEludGVyZmFjZVRhYmxlIDEgfQogCiBJcHY0SW50ZXJmYWNlRW50cnkgOjo9IFNFUVVFTkNFIHsKQEAgLTM3Nyw5ICszNjAsNiBAQAogaXB2NEludGVyZmFjZVJldHJhbnNtaXRUaW1lIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBVbnNpZ25lZDMyCiAgICAgVU5JVFMgICAgICAibWlsbGlzZWNvbmRzIgotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTQyOCw5ICs0MDgsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJBbiBlbnRyeSBjb250YWluaW5nIElQdjYtc3BlY2lmaWMgaW5mb3JtYXRpb24gZm9yIGEgZ2l2ZW4KICAgICAgICAgICAgIGludGVyZmFjZS4iCi0KLQotCiAgICAgSU5ERVggeyBpcHY2SW50ZXJmYWNlSWZJbmRleCB9CiAgICAgOjo9IHsgaXB2NkludGVyZmFjZVRhYmxlIDEgfQogCkBAIC00NzksOSArNDU2LDYgQEAKICAgICAgICAgICAgIGFjY29yZGluZyB0byB0aGUgcnVsZXMgb2YgdGhlIGxpbmsgdHlwZSB0byB3aGljaCB0aGlzCiAgICAgICAgICAgICBpbnRlcmZhY2UgaXMgYXR0YWNoZWQuCiAKLQotCi0KICAgICAgICAgICAgIEEgemVybyBsZW5ndGggaWRlbnRpZmllciBtYXkgYmUgdXNlZCB3aGVyZSBhcHByb3ByaWF0ZS4gIE9uZQogICAgICAgICAgICAgcG9zc2libGUgZXhhbXBsZSBpcyBhIGxvb3BiYWNrIGludGVyZmFjZS4iCiAgICAgOjo9IHsgaXB2NkludGVyZmFjZUVudHJ5IDMgfQpAQCAtNTMwLDkgKzUwNCw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIHRpbWUgYmV0d2VlbiByZXRyYW5zbWlzc2lvbnMgb2YgTmVpZ2hib3IgU29saWNpdGF0aW9uCiAgICAgICAgICAgICBtZXNzYWdlcyB0byBhIG5laWdoYm9yIHdoZW4gcmVzb2x2aW5nIHRoZSBhZGRyZXNzIG9yIHdoZW4KICAgICAgICAgICAgIHByb2JpbmcgdGhlIHJlYWNoYWJpbGl0eSBvZiBhIG5laWdoYm9yLiIKQEAgLTU4Miw4ICs1NTMsNiBAQAogLS0KIC0tIE5vdGUgd2VsbDogQm90aCBvZiB0aGVzZSB0YWJsZXMgY29udGFpbiBzb21lIGl0ZW1zIHRoYXQgYXJlCiAKLQotCiAtLSByZXByZXNlbnRlZCBieSB0d28gb2JqZWN0cywgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZSBpbiBlaXRoZXIgMzIKIC0tIG9yIDY0IGJpdHMuICBGb3IgdGhvc2Ugb2JqZWN0cywgdGhlIDMyLWJpdCB2YWx1ZSBNVVNUIGJlIHRoZSBsb3cKIC0tIG9yZGVyIDMyIGJpdHMgb2YgdGhlIDY0LWJpdCB2YWx1ZS4gIEFsc28gbm90ZSB0aGF0IHRoZSAzMi1iaXQKQEAgLTYzMiw5ICs2MDEsNiBAQAogICAgICAgICBpcFN5c3RlbVN0YXRzUmVhc21GYWlscyAgICAgICAgICBDb3VudGVyMzIsCiAgICAgICAgIGlwU3lzdGVtU3RhdHNJbkRpc2NhcmRzICAgICAgICAgIENvdW50ZXIzMiwKICAgICAgICAgaXBTeXN0ZW1TdGF0c0luRGVsaXZlcnMgICAgICAgICAgQ291bnRlcjMyLAotCi0KLQogICAgICAgICBpcFN5c3RlbVN0YXRzSENJbkRlbGl2ZXJzICAgICAgICBDb3VudGVyNjQsCiAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXRSZXF1ZXN0cyAgICAgICAgIENvdW50ZXIzMiwKICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDT3V0UmVxdWVzdHMgICAgICAgQ291bnRlcjY0LApAQCAtNjgzLDkgKzY0OSw2IEBACiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAiVGhlIHRvdGFsIG51bWJlciBvZiBpbnB1dCBJUCBkYXRhZ3JhbXMgcmVjZWl2ZWQsIGluY2x1ZGluZwogICAgICAgICAgICAgdGhvc2UgcmVjZWl2ZWQgaW4gZXJyb3IuCiAKQEAgLTczNSw4ICs2OTgsNiBAQAogICAgICAgICAgICAgaW5jbHVkaW5nIHRob3NlIHJlY2VpdmVkIGluIGVycm9yLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZQogICAgICAgICAgICAgc2FtZSBvY3RldHMgYXMgaXBTeXN0ZW1TdGF0c0luT2N0ZXRzLCBidXQgYWxsb3dzIGZvciBsYXJnZXIKIAotCi0KICAgICAgICAgICAgIHZhbHVlcy4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC03ODYsOCArNzQ3LDYgQEAKICAgICAgICAgICAgIGluY2x1ZGVzIGludmFsaWQgYWRkcmVzc2VzIChlLmcuLCA6OjApLiAgRm9yIGVudGl0aWVzCiAgICAgICAgICAgICB0aGF0IGFyZSBub3QgSVAgcm91dGVycyBhbmQgdGhlcmVmb3JlIGRvIG5vdCBmb3J3YXJkCiAKLQotCiAgICAgICAgICAgICBkYXRhZ3JhbXMsIHRoaXMgY291bnRlciBpbmNsdWRlcyBkYXRhZ3JhbXMgZGlzY2FyZGVkCiAgICAgICAgICAgICBiZWNhdXNlIHRoZSBkZXN0aW5hdGlvbiBhZGRyZXNzIHdhcyBub3QgYSBsb2NhbCBhZGRyZXNzLgogCkBAIC04MzYsOSArNzk1LDYgQEAKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIGlucHV0IGRhdGFncmFtcyBmb3Igd2hpY2ggdGhpcyBlbnRpdHkgd2FzIG5vdAogICAgICAgICAgICAgdGhlaXIgZmluYWwgSVAgZGVzdGluYXRpb24gYW5kIGZvciB3aGljaCB0aGlzIGVudGl0eQogICAgICAgICAgICAgYXR0ZW1wdGVkIHRvIGZpbmQgYSByb3V0ZSB0byBmb3J3YXJkIHRoZW0gdG8gdGhhdCBmaW5hbApAQCAtODg4LDggKzg0NCw2IEBACiAKICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAogCi0KLQogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCkBAIC05MzgsOSArODkyLDYgQEAKIAogaXBTeXN0ZW1TdGF0c0luRGlzY2FyZHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTk4OSw5ICs5NDAsNiBAQAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCi0KLQotCiAgICAgOjo9IHsgaXBTeXN0ZW1TdGF0c0VudHJ5IDE5IH0KIAogaXBTeXN0ZW1TdGF0c091dFJlcXVlc3RzIE9CSkVDVC1UWVBFCkBAIC0xMDQxLDggKzk4OSw2IEBACiAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwU3lzdGVtU3RhdHNFbnRyeSAyMiB9CiAKLQotCiBpcFN5c3RlbVN0YXRzT3V0Rm9yd0RhdGFncmFtcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKQEAgLTEwOTIsOCArMTAzOCw2IEBACiAgICAgICAgICAgICBkZXN0aW5hdGlvbiwgYnV0IHdlcmUgZGlzY2FyZGVkIChlLmcuLCBmb3IgbGFjayBvZgogICAgICAgICAgICAgYnVmZmVyIHNwYWNlKS4gIE5vdGUgdGhhdCB0aGlzIGNvdW50ZXIgd291bGQgaW5jbHVkZQogCi0KLQogICAgICAgICAgICAgZGF0YWdyYW1zIGNvdW50ZWQgaW4gaXBTeXN0ZW1TdGF0c091dEZvcndEYXRhZ3JhbXMgaWYgYW55CiAgICAgICAgICAgICBzdWNoIGRhdGFncmFtcyBtZXQgdGhpcyAoZGlzY3JldGlvbmFyeSkgZGlzY2FyZCBjcml0ZXJpb24uCiAKQEAgLTExNDIsOSArMTA4Niw2IEBACiBpcFN5c3RlbVN0YXRzT3V0RnJhZ0ZhaWxzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgbnVtYmVyIG9mIElQIGRhdGFncmFtcyB0aGF0IGhhdmUgYmVlbiBkaXNjYXJkZWQgYmVjYXVzZQpAQCAtMTE5NCw4ICsxMTM1LDYgQEAKICAgICAgICAgICAgIERpc2NvbnRpbnVpdGllcyBpbiB0aGUgdmFsdWUgb2YgdGhpcyBjb3VudGVyIGNhbiBvY2N1ciBhdAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKIAotCi0KICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCiAgICAgOjo9IHsgaXBTeXN0ZW1TdGF0c0VudHJ5IDMwIH0KQEAgLTEyNDUsOCArMTE4NCw2IEBACiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogCi0KLQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcFN5c3RlbVN0YXRzRW50cnkgMzMgfQogCkBAIC0xMjk1LDkgKzEyMzIsNiBAQAogCiBpcFN5c3RlbVN0YXRzSENJbk1jYXN0T2N0ZXRzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyNjQKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCkBAIC0xMzQ3LDggKzEyODEsNiBAQAogICAgICAgICAgICAiVGhlIHRvdGFsIG51bWJlciBvZiBvY3RldHMgdHJhbnNtaXR0ZWQgaW4gSVAgbXVsdGljYXN0CiAgICAgICAgICAgICBkYXRhZ3JhbXMuICBPY3RldHMgZnJvbSBkYXRhZ3JhbXMgY291bnRlZCBpbgogCi0KLQogICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c091dE1jYXN0UGt0cyBNVVNUIGJlIGNvdW50ZWQgaGVyZS4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC0xMzk4LDggKzEzMzAsNiBAQAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKIAotCi0KICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNEaXNjb250aW51aXR5VGltZS4iCiAgICAgOjo9IHsgaXBTeXN0ZW1TdGF0c0VudHJ5IDQzIH0KIApAQCAtMTQ0OCw5ICsxMzc4LDYgQEAKIGlwU3lzdGVtU3RhdHNSZWZyZXNoUmF0ZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgVW5zaWduZWQzMgogICAgIFVOSVRTICAgICAgIm1pbGxpLXNlY29uZHMiCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMTQ5OSw5ICsxNDI2LDYgQEAKIElwSWZTdGF0c0VudHJ5IDo6PSBTRVFVRU5DRSB7CiAgICAgICAgIGlwSWZTdGF0c0lQVmVyc2lvbiAgICAgICAgICAgSW5ldFZlcnNpb24sCiAgICAgICAgIGlwSWZTdGF0c0lmSW5kZXggICAgICAgICAgICAgSW50ZXJmYWNlSW5kZXgsCi0KLQotCiAgICAgICAgIGlwSWZTdGF0c0luUmVjZWl2ZXMgICAgICAgICAgQ291bnRlcjMyLAogICAgICAgICBpcElmU3RhdHNIQ0luUmVjZWl2ZXMgICAgICAgIENvdW50ZXI2NCwKICAgICAgICAgaXBJZlN0YXRzSW5PY3RldHMgICAgICAgICAgICBDb3VudGVyMzIsCkBAIC0xNTUwLDkgKzE0NzQsNiBAQAogCiBpcElmU3RhdHNJUFZlcnNpb24gT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIEluZXRWZXJzaW9uCi0KLQotCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCkBAIC0xNjAxLDkgKzE1MjIsNiBAQAogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDQgfQogCiBpcElmU3RhdHNJbk9jdGV0cyBPQkpFQ1QtVFlQRQotCi0KLQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKQEAgLTE2NTIsOSArMTU3MCw2IEBACiAKIGlwSWZTdGF0c0luTm9Sb3V0ZXMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTE3MDQsOCArMTYxOSw2IEBACiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogCi0KLQogICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDEwIH0KIApAQCAtMTc1NSw4ICsxNjY4LDYgQEAKICAgICAgICAgICAgIGF0dGVtcHRlZCB0byBmaW5kIGEgcm91dGUgdG8gZm9yd2FyZCB0aGVtIHRvIHRoYXQgZmluYWwKICAgICAgICAgICAgIGRlc3RpbmF0aW9uLiAgVGhpcyBvYmplY3QgY291bnRzIHRoZSBzYW1lIHBhY2tldHMgYXMKIAotCi0KICAgICAgICAgICAgIGlwSWZTdGF0c0luRm9yd0RhdGFncmFtcywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC0xODA1LDkgKzE3MTYsNiBAQAogaXBJZlN0YXRzUmVhc21GYWlscyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKLQotCi0KICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBmYWlsdXJlcyBkZXRlY3RlZCBieSB0aGUgSVAgcmUtYXNzZW1ibHkKQEAgLTE4NTcsOCArMTc2NSw2IEBACiAgICAgICAgICAgICBpbnRlcmZhY2UgdG8gd2hpY2ggdGhlc2UgZGF0YWdyYW1zIHdlcmUgYWRkcmVzc2VkIGlzCiAgICAgICAgICAgICBpbmNyZW1lbnRlZC4gIFRoaXMgaW50ZXJmYWNlIG1pZ2h0IG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUKIAotCi0KICAgICAgICAgICAgIGlucHV0IGludGVyZmFjZSBmb3Igc29tZSBvZiB0aGUgZGF0YWdyYW1zLgogCiAgICAgICAgICAgICBEaXNjb250aW51aXRpZXMgaW4gdGhlIHZhbHVlIG9mIHRoaXMgY291bnRlciBjYW4gb2NjdXIgYXQKQEAgLTE5MDgsOCArMTgxNCw2IEBACiAgICAgICAgICAgICBwcm90b2NvbHMgKGluY2x1ZGluZyBJQ01QKSBzdXBwbGllZCB0byBJUCBpbiByZXF1ZXN0cyBmb3IKICAgICAgICAgICAgIHRyYW5zbWlzc2lvbi4gIFRoaXMgb2JqZWN0IGNvdW50cyB0aGUgc2FtZSBwYWNrZXRzIGFzCiAKLQotCiAgICAgICAgICAgICBpcElmU3RhdHNPdXRSZXF1ZXN0cywgYnV0IGFsbG93cyBmb3IgbGFyZ2VyIHZhbHVlcy4KIAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CkBAIC0xOTU5LDggKzE4NjMsNiBAQAogICAgICAgICAgICAgcmUtaW5pdGlhbGl6YXRpb24gb2YgdGhlIG1hbmFnZW1lbnQgc3lzdGVtLCBhbmQgYXQgb3RoZXIKICAgICAgICAgICAgIHRpbWVzIGFzIGluZGljYXRlZCBieSB0aGUgdmFsdWUgb2YKIAotCi0KICAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcElmU3RhdHNFbnRyeSAyNCB9CiAKQEAgLTIwMTAsOCArMTkxMiw2IEBACiAKICAgICAgICAgICAgIFdoZW4gdHJhY2tpbmcgaW50ZXJmYWNlIHN0YXRpc3RpY3MsIHRoZSBjb3VudGVyIG9mIHRoZQogCi0KLQogICAgICAgICAgICAgb3V0Z29pbmcgaW50ZXJmYWNlIGlzIGluY3JlbWVudGVkIGZvciBhIHN1Y2Nlc3NmdWxseQogICAgICAgICAgICAgZnJhZ21lbnRlZCBkYXRhZ3JhbS4KIApAQCAtMjA2MCw5ICsxOTYwLDYgQEAKICAgICAgICAgICAgIGlwSWZTdGF0c0Rpc2NvbnRpbnVpdHlUaW1lLiIKICAgICA6Oj0geyBpcElmU3RhdHNFbnRyeSAyOSB9CiAKLQotCi0KIGlwSWZTdGF0c091dFRyYW5zbWl0cyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKQEAgLTIxMTEsOSArMjAwOCw2IEBACiAgICAgOjo9IHsgaXBJZlN0YXRzRW50cnkgMzIgfQogCiBpcElmU3RhdHNIQ091dE9jdGV0cyBPQkpFQ1QtVFlQRQotCi0KLQogICAgIFNZTlRBWCAgICAgQ291bnRlcjY0CiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKQEAgLTIxNjMsOCArMjA1Nyw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSB0b3RhbCBudW1iZXIgb2Ygb2N0ZXRzIHJlY2VpdmVkIGluIElQIG11bHRpY2FzdAogCi0KLQogICAgICAgICAgICAgZGF0YWdyYW1zLiAgT2N0ZXRzIGZyb20gZGF0YWdyYW1zIGNvdW50ZWQgaW4KICAgICAgICAgICAgIGlwSWZTdGF0c0luTWNhc3RQa3RzIE1VU1QgYmUgY291bnRlZCBoZXJlLgogCkBAIC0yMjE0LDggKzIxMDYsNiBAQAogICAgICAgICAgICAgRGlzY29udGludWl0aWVzIGluIHRoZSB2YWx1ZSBvZiB0aGlzIGNvdW50ZXIgY2FuIG9jY3VyIGF0CiAgICAgICAgICAgICByZS1pbml0aWFsaXphdGlvbiBvZiB0aGUgbWFuYWdlbWVudCBzeXN0ZW0sIGFuZCBhdCBvdGhlcgogCi0KLQogICAgICAgICAgICAgdGltZXMgYXMgaW5kaWNhdGVkIGJ5IHRoZSB2YWx1ZSBvZgogICAgICAgICAgICAgaXBJZlN0YXRzRGlzY29udGludWl0eVRpbWUuIgogICAgIDo6PSB7IGlwSWZTdGF0c0VudHJ5IDM5IH0KQEAgLTIyNjQsOSArMjE1NCw2IEBACiAgICAgOjo9IHsgaXBJZlN0YXRzRW50cnkgNDIgfQogCiBpcElmU3RhdHNIQ0luQmNhc3RQa3RzIE9CSkVDVC1UWVBFCi0KLQotCiAgICAgU1lOVEFYICAgICBDb3VudGVyNjQKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtMjMxNiw4ICsyMjAzLDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIHZhbHVlIG9mIHN5c1VwVGltZSBvbiB0aGUgbW9zdCByZWNlbnQgb2NjYXNpb24gYXQgd2hpY2gKIAotCi0KICAgICAgICAgICAgIGFueSBvbmUgb3IgbW9yZSBvZiB0aGlzIGVudHJ5J3MgY291bnRlcnMgc3VmZmVyZWQgYQogICAgICAgICAgICAgZGlzY29udGludWl0eS4KIApAQCAtMjM2Nyw4ICsyMjUyLDYgQEAKICAgICAgICAgICAgIHRhYmxlIGluZGVwZW5kZW50IG9mIGhvdyB0aGUgZW50aXR5IGxlYXJuZWQgdGhlIHByZWZpeC4KICAgICAgICAgICAgIChUaGlzIHRhYmxlIGlzbid0IGxpbWl0ZWQgdG8gcHJlZml4ZXMgbGVhcm5lZCBmcm9tIHJvdXRlcgogCi0KLQogICAgICAgICAgICAgYWR2ZXJ0aXNlbWVudHMuKSIKICAgICA6Oj0geyBpcCAzMiB9CiAKQEAgLTI0MTcsOSArMjMwMCw2IEBACiAgICAgU1lOVEFYICAgICBJbmV0QWRkcmVzcwogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIGFkZHJlc3MgcHJlZml4LiAgVGhlIGFkZHJlc3MgdHlwZSBvZiB0aGlzIG9iamVjdCBpcwogICAgICAgICAgICAgc3BlY2lmaWVkIGluIGlwQWRkcmVzc1ByZWZpeFR5cGUuICBUaGUgbGVuZ3RoIG9mIHRoaXMgb2JqZWN0CkBAIC0yNDY4LDkgKzIzNDgsNiBAQAogCiBpcEFkZHJlc3NQcmVmaXhBdXRvbm9tb3VzRmxhZyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgVHJ1dGhWYWx1ZQotCi0KLQogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTI1MTksOSArMjM5Niw2IEBACiAgICAgICAgICAgICBUaGUgYWRkcmVzcyBnZW5lcmF0ZWQgZnJvbSBhbiBpbnZhbGlkYXRlZCBwcmVmaXggc2hvdWxkIG5vdAogICAgICAgICAgICAgYXBwZWFyIGFzIHRoZSBkZXN0aW5hdGlvbiBvciBzb3VyY2UgYWRkcmVzcyBvZiBhIHBhY2tldC4KIAotCi0KLQogICAgICAgICAgICAgVGhlIGRlZmF1bHQgZm9yIElQdjQgcHJlZml4ZXMgaXMgNCwyOTQsOTY3LDI5NSAoaW5maW5pdHkpLiIKICAgICBSRUZFUkVOQ0UgIkZvciBJUHY2IFJGQyAyNDYxLCBlc3BlY2lhbGx5IHNlY3Rpb25zIDIgYW5kIDQuNi4yIGFuZAogICAgICAgICAgICAgICAgUkZDIDI0NjIiCkBAIC0yNTcxLDggKzI0NDUsNiBAQAogICAgICAgICAgICAgaW50ZW50aW9uIGluIGFsbG93aW5nIGEgdXNlciB0byB3cml0ZSB0byB0aGlzIHRhYmxlIGlzIHRvCiAgICAgICAgICAgICBhbGxvdyB0aGVtIHRvIGFkZCBvciByZW1vdmUgYW55IGVudHJ5IHRoYXQgaXNuJ3QKIAotCi0KICAgICAgICAgICAgIHBlcm1hbmVudC4gIFRoZSB1c2VyIHNob3VsZCBiZSBhbGxvd2VkIHRvIG1vZGlmeSBvYmplY3RzCiAgICAgICAgICAgICBhbmQgZW50cmllcyB3aGVuIHRoYXQgd291bGQgbm90IGNhdXNlIGluY29uc2lzdGVuY2llcwogICAgICAgICAgICAgd2l0aGluIHRoZSB0YWJsZS4gIEFsbG93aW5nIHdyaXRlIGFjY2VzcyB0byBvYmplY3RzLCBzdWNoCkBAIC0yNjIyLDggKzI0OTQsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgSVAgYWRkcmVzcyB0byB3aGljaCB0aGlzIGVudHJ5J3MgYWRkcmVzc2luZyBpbmZvcm1hdGlvbgogCi0KLQogICAgICAgICAgICAgcGVydGFpbnMuICBUaGUgYWRkcmVzcyB0eXBlIG9mIHRoaXMgb2JqZWN0IGlzIHNwZWNpZmllZCBpbgogICAgICAgICAgICAgaXBBZGRyZXNzQWRkclR5cGUuCiAKQEAgLTI2NzIsOSArMjU0Miw2IEBACiAgICAgU1lOVEFYICAgICBJcEFkZHJlc3NPcmlnaW5UQwogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50Ci0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBvcmlnaW4gb2YgdGhlIGFkZHJlc3MuIgogICAgIDo6PSB7IGlwQWRkcmVzc0VudHJ5IDYgfQpAQCAtMjcyNCw4ICsyNTkxLDYgQEAKICAgICAgICAgICAgIFRoZSBSb3dTdGF0dXMgVEMgcmVxdWlyZXMgdGhhdCB0aGlzIERFU0NSSVBUSU9OIGNsYXVzZQogICAgICAgICAgICAgc3RhdGVzIHVuZGVyIHdoaWNoIGNpcmN1bXN0YW5jZXMgb3RoZXIgb2JqZWN0cyBpbiB0aGlzIHJvdwogCi0KLQogICAgICAgICAgICAgY2FuIGJlIG1vZGlmaWVkLiAgVGhlIHZhbHVlIG9mIHRoaXMgb2JqZWN0IGhhcyBubyBlZmZlY3Qgb24KICAgICAgICAgICAgIHdoZXRoZXIgb3RoZXIgb2JqZWN0cyBpbiB0aGlzIGNvbmNlcHR1YWwgcm93IGNhbiBiZQogICAgICAgICAgICAgbW9kaWZpZWQuCkBAIC0yNzc0LDkgKzI2MzksNiBAQAogICAgIFNZTlRBWCAgICAgSXBOZXRUb1BoeXNpY2FsRW50cnkKICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICBjdXJyZW50Ci0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkVhY2ggZW50cnkgY29udGFpbnMgb25lIElQIGFkZHJlc3MgdG8gYHBoeXNpY2FsJyBhZGRyZXNzCiAgICAgICAgICAgICBlcXVpdmFsZW5jZS4iCkBAIC0yODI2LDggKzI2ODgsNiBAQAogCiAgICAgICAgICAgICBJbXBsZW1lbnRvcnMgbmVlZCB0byBiZSBhd2FyZSB0aGF0IGlmIHRoZSBzaXplIG9mCiAKLQotCiAgICAgICAgICAgICBpcE5ldFRvUGh5c2ljYWxOZXRBZGRyZXNzIGV4Y2VlZHMgMTE1IG9jdGV0cywgdGhlbiBPSURTIG9mCiAgICAgICAgICAgICBpbnN0YW5jZXMgb2YgY29sdW1ucyBpbiB0aGlzIHJvdyB3aWxsIGhhdmUgbW9yZSB0aGFuIDEyOAogICAgICAgICAgICAgc3ViLWlkZW50aWZpZXJzIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgdXNpbmcgU05NUHYxLApAQCAtMjg3Nyw4ICsyNzM3LDYgQEAKICAgICAgICAgICAgIG1hcHBpbmcgaWRlbnRpZmllZCB3aXRoIHNhaWQgZW50cnkuICBJdCBpcyBhbgogICAgICAgICAgICAgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMgbWF0dGVyIGFzIHRvIHdoZXRoZXIgdGhlIGFnZW50CiAKLQotCiAgICAgICAgICAgICByZW1vdmVzIGFuIGludmFsaWRhdGVkIGVudHJ5IGZyb20gdGhlIHRhYmxlLiAgQWNjb3JkaW5nbHksCiAgICAgICAgICAgICBtYW5hZ2VtZW50IHN0YXRpb25zIG11c3QgYmUgcHJlcGFyZWQgdG8gcmVjZWl2ZSB0YWJ1bGFyCiAgICAgICAgICAgICBpbmZvcm1hdGlvbiBmcm9tIGFnZW50cyB0aGF0IGNvcnJlc3BvbmRzIHRvIGVudHJpZXMgbm90CkBAIC0yOTI3LDkgKzI3ODUsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBOZWlnaGJvciBVbnJlYWNoYWJpbGl0eSBEZXRlY3Rpb24gc3RhdGUgZm9yIHRoZQogICAgICAgICAgICAgaW50ZXJmYWNlIHdoZW4gdGhlIGFkZHJlc3MgbWFwcGluZyBpbiB0aGlzIGVudHJ5IGlzIHVzZWQuCiAgICAgICAgICAgICBJZiBOZWlnaGJvciBVbnJlYWNoYWJpbGl0eSBEZXRlY3Rpb24gaXMgbm90IGluIHVzZSAoZS5nLiBmb3IKQEAgLTI5NzgsOSArMjgzMyw2IEBACiAKIGlwdjZTY29wZVpvbmVJbmRleEVudHJ5IE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBJcHY2U2NvcGVab25lSW5kZXhFbnRyeQotCi0KLQogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgpAQCAtMzAyOSw5ICsyODgxLDYgQEAKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJUaGUgem9uZSBpbmRleCBmb3Igc2NvcGUgMyBvbiB0aGlzIGludGVyZmFjZS4iCiAgICAgOjo9IHsgaXB2NlNjb3BlWm9uZUluZGV4RW50cnkgMyB9CiAKQEAgLTMwODAsOSArMjkyOSw2IEBACiAgICAgU1lOVEFYICAgICBJbmV0Wm9uZUluZGV4CiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIHpvbmUgaW5kZXggZm9yIHNjb3BlIDkgb24gdGhpcyBpbnRlcmZhY2UuIgogICAgIDo6PSB7IGlwdjZTY29wZVpvbmVJbmRleEVudHJ5IDkgfQpAQCAtMzEzMiw4ICsyOTc4LDYgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIHRhYmxlIHVzZWQgdG8gZGVzY3JpYmUgdGhlIGRlZmF1bHQgcm91dGVycyBrbm93biB0byB0aGlzCiAKLQotCiAgICAgICAgICAgICBlbnRpdHkuIgogICAgIDo6PSB7IGlwIDM3IH0KIApAQCAtMzE4Miw5ICszMDI2LDYgQEAKIAogaXBEZWZhdWx0Um91dGVySWZJbmRleCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSW50ZXJmYWNlSW5kZXgKLQotCi0KICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KQEAgLTMyMzQsOCArMzA3NSw2IEBACiAgICAgUkVGRVJFTkNFICJSRkMgNDI5MSwgc2VjdGlvbiAyLjEiCiAgICAgOjo9IHsgaXBEZWZhdWx0Um91dGVyRW50cnkgNSB9CiAKLQotCiAtLQogLS0gQ29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBmb3IgY29uc3RydWN0aW5nIHJvdXRlciBhZHZlcnRpc2VtZW50cwogLS0KQEAgLTMyODQsOSArMzEyMyw2IEBACiAgICAgICAgICAgICBvYmplY3QgaXMgd3JpdHRlbiwgdGhlIGVudGl0eSBTSE9VTEQgc2F2ZSB0aGUgY2hhbmdlIHRvCiAgICAgICAgICAgICBub24tdm9sYXRpbGUgc3RvcmFnZS4iCiAgICAgSU5ERVggeyBpcHY2Um91dGVyQWR2ZXJ0SWZJbmRleCB9Ci0KLQotCiAgICAgOjo9IHsgaXB2NlJvdXRlckFkdmVydFRhYmxlIDEgfQogCiBJcHY2Um91dGVyQWR2ZXJ0RW50cnkgOjo9IFNFUVVFTkNFIHsKQEAgLTMzMzYsOCArMzE3Miw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBtYXhpbXVtIHRpbWUgYWxsb3dlZCBiZXR3ZWVuIHNlbmRpbmcgdW5zb2xpY2l0ZWQgcm91dGVyCiAKLQotCiAgICAgICAgICAgICBhZHZlcnRpc2VtZW50cyBmcm9tIHRoaXMgaW50ZXJmYWNlLiIKICAgICBSRUZFUkVOQ0UgIlJGQyAyNDYxIFNlY3Rpb24gNi4yLjEiCiAgICAgREVGVkFMIHsgNjAwIH0KQEAgLTMzODYsOSArMzIyMCw2IEBACiAgICAgU1lOVEFYICAgICBVbnNpZ25lZDMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLWNyZWF0ZQogICAgIFNUQVRVUyAgICAgY3VycmVudAotCi0KLQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgdmFsdWUgdG8gYmUgcGxhY2VkIGluIE1UVSBvcHRpb25zIHNlbnQgYnkgdGhlIHJvdXRlciBvbgogICAgICAgICAgICAgdGhpcyBpbnRlcmZhY2UuCkBAIC0zNDM4LDggKzMyNjksNiBAQAogICAgICAgICAgICAiVGhlIGRlZmF1bHQgdmFsdWUgdG8gYmUgcGxhY2VkIGluIHRoZSBjdXJyZW50IGhvcCBsaW1pdAogICAgICAgICAgICAgZmllbGQgaW4gcm91dGVyIGFkdmVydGlzZW1lbnRzIHNlbnQgZnJvbSB0aGlzIGludGVyZmFjZS4KIAotCi0KICAgICAgICAgICAgIFRoZSB2YWx1ZSBzaG91bGQgYmUgc2V0IHRvIHRoZSBjdXJyZW50IGRpYW1ldGVyIG9mIHRoZQogICAgICAgICAgICAgSW50ZXJuZXQuCiAKQEAgLTM0ODksOCArMzMxOCw2IEBACiAKIC0tCiAKLQotCiAtLSBJQ01QIHNlY3Rpb24KIC0tCiAKQEAgLTM1MzksOSArMzM2Niw2IEBACiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBJUCB2ZXJzaW9uIG9mIHRoZSBzdGF0aXN0aWNzLiIKLQotCi0KICAgICA6Oj0geyBpY21wU3RhdHNFbnRyeSAxIH0KIAogaWNtcFN0YXRzSW5Nc2dzIE9CSkVDVC1UWVBFCkBAIC0zNTkxLDggKzM0MTUsNiBAQAogLS0KIC0tIHBlci12ZXJzaW9uLCBwZXItbWVzc2FnZSB0eXBlIElDTVAgY291bnRlcnMKIAotCi0KIC0tCiAKIGljbXBNc2dTdGF0c1RhYmxlIE9CSkVDVC1UWVBFCkBAIC0zNjQxLDkgKzM0NjMsNiBAQAogaWNtcE1zZ1N0YXRzVHlwZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSW50ZWdlcjMyICgwLi4yNTUpCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgSUNNUCB0eXBlIGZpZWxkIG9mIHRoZSBtZXNzYWdlIHR5cGUgYmVpbmcgY291bnRlZCBieQpAQCAtMzY5Miw5ICszNTExLDYgQEAKICAgICAgICAgICAgIGV4cHJlc3NlZCBpbiBPQkpFQ1QgY2xhdXNlIGZvcm0gaW4gdGhpcyBkZXNjcmlwdGlvbgogICAgICAgICAgICAgY2xhdXNlOgogCi0KLQotCiAgICAgICAgICAgICAtLSBPQkpFQ1QgICAgICAgIGlwU3lzdGVtU3RhdHNJUFZlcnNpb24KICAgICAgICAgICAgIC0tIFNZTlRBWCAgICAgICAgSW5ldFZlcnNpb24ge2lwdjQoMSksIGlwdjYoMil9CiAgICAgICAgICAgICAtLSBERVNDUklQVElPTgpAQCAtMzc0NCw4ICszNTYwLDYgQEAKICAgICAgICAgICAgIC0tIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAtLSAgICAgVGhpcyBNSUIgcmVxdWlyZXMgc3VwcG9ydCBmb3Igb25seSBnbG9iYWwgYW5kCiAKLQotCiAgICAgICAgICAgICAtLSAgICAgbm9uLWdsb2JhbCBJUHY0IGFuZCBJUHY2IGFkZHJlc3NlcyBhbmQgc28gdGhlIHNpemUKICAgICAgICAgICAgIC0tICAgICBjYW4gYmUgNCwgOCwgMTYsIG9yIDIwIGJ5dGVzLgogICAgICAgICAgICAgLS0KQEAgLTM3OTUsOCArMzYwOSw2IEBACiAgICAgICAgICAgICJUaGlzIGdyb3VwIGlzIG1hbmRhdG9yeSBmb3Igc3lzdGVtcyB0aGF0IGhhdmUgYW4gYWdncmVnYXRlCiAgICAgICAgICAgICBiYW5kd2lkdGggb2YgZ3JlYXRlciB0aGFuIDY1ME1CLiAgSW5jbHVkaW5nIHRoaXMgZ3JvdXAKIAotCi0KICAgICAgICAgICAgIGRvZXMgbm90IGFsbG93IGFuIGVudGl0eSB0byBuZWdsZWN0IHRoZSAzMiBiaXQgdmVyc2lvbnMgb2YKICAgICAgICAgICAgIHRoZXNlIG9iamVjdHMuIgogCkBAIC0zODQ2LDggKzM2NTgsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGlzIGdyb3VwIGlzIG1hbmRhdG9yeSBmb3IgYWxsIHN5c3RlbXMgc3VwcG9ydGluZyBJUHY0IGFuZAogCi0KLQogICAgICAgICAgICAgaW5jbHVkaW5nIHRoZSBpcElmU3RhdHNIQ1BhY2tldEdyb3VwLiAgSW5jbHVkaW5nIHRoaXMgZ3JvdXAKICAgICAgICAgICAgIGRvZXMgbm90IGFsbG93IGFuIGVudGl0eSB0byBuZWdsZWN0IHRoZSAzMiBiaXQgdmVyc2lvbnMgb2YKICAgICAgICAgICAgIHRoZXNlIG9iamVjdHMuIgpAQCAtMzg5Niw5ICszNzA2LDYgQEAKIAogICAgIE9CSkVDVCAgICAgaXB2NkludGVyZmFjZUVuYWJsZVN0YXR1cwogICAgIE1JTi1BQ0NFU1MgcmVhZC1vbmx5Ci0KLQotCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIkFuIGFnZW50IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIHdyaXRlIGFjY2VzcyB0byB0aGlzCiAgICAgICAgICAgICBvYmplY3QuIgpAQCAtMzk0OCw4ICszNzU1LDYgQEAKICAgICAgICAgICAgIkFuIGFnZW50IGlzIG5vdCByZXF1aXJlZCB0byBwcm92aWRlIHdyaXRlIG9yIGNyZWF0ZSBhY2Nlc3MKICAgICAgICAgICAgIHRvIHRoaXMgb2JqZWN0LgogCi0KLQogICAgICAgICAgICAgSWYgYW4gYWdlbnQgYWxsb3dzIHRoaXMgb2JqZWN0IHRvIGJlIHdyaXR0ZW4gb3IgY3JlYXRlZCwgaXQKICAgICAgICAgICAgIGlzIG5vdCByZXF1aXJlZCB0byBhbGxvdyB0aGlzIG9iamVjdCB0byBiZSBzZXQgdG8gcmVhZE9ubHksCiAgICAgICAgICAgICBwZXJtYW5lbnQsIG9yIG5vblZvbGF0aWxlLiIKQEAgLTM5OTgsOSArMzgwMyw2IEBACiAgICAgICAgICAgICJBbiBhZ2VudCBpcyBub3QgcmVxdWlyZWQgdG8gcHJvdmlkZSB3cml0ZSBhY2Nlc3MgdG8gdGhpcwogICAgICAgICAgICAgb2JqZWN0LiIKIAotCi0KLQogICAgIE9CSkVDVCAgICAgaXB2NlJvdXRlckFkdmVydE90aGVyQ29uZmlnRmxhZwogICAgIE1JTi1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgREVTQ1JJUFRJT04KQEAgLTQwNDIsMTYgKzM4NDQsMTIgQEAKICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiQW4gYWdlbnQgaXMgbm90IHJlcXVpcmVkIHRvIHByb3ZpZGUgd3JpdGUgb3IgY3JlYXRlIGFjY2VzcwogICAgICAgICAgICAgdG8gdGhpcyBvYmplY3QuIgotCiAgICAgOjo9IHsgaXBNSUJDb21wbGlhbmNlcyAyIH0KIAogLS0gdW5pdHMgb2YgY29uZm9ybWFuY2UKIAogaXB2NEdlbmVyYWxHcm91cCBPQkpFQ1QtR1JPVVAKICAgICBPQkpFQ1RTICAgeyBpcEZvcndhcmRpbmcsIGlwRGVmYXVsdFRUTCwgaXBSZWFzbVRpbWVvdXQgfQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJUaGUgZ3JvdXAgb2YgSVB2NC1zcGVjaWZpYyBvYmplY3RzIGZvciBiYXNpYyBtYW5hZ2VtZW50IG9mCkBAIC00MTAxLDggKzM4OTksNiBAQAogICAgICAgICAgICAgdmFsdWUuIgogICAgIDo6PSB7IGlwTUlCR3JvdXBzIDcgfQogCi0KLQogaXBTeXN0ZW1TdGF0c0dyb3VwIE9CSkVDVC1HUk9VUAogICAgIE9CSkVDVFMgICB7IGlwU3lzdGVtU3RhdHNJblJlY2VpdmVzLAogICAgICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbk9jdGV0cywKQEAgLTQxNTEsOSArMzk0Nyw2IEBACiAgICAgICAgICAgICAgICAgaXBTeXN0ZW1TdGF0c0hDSW5NY2FzdE9jdGV0cywKICAgICAgICAgICAgICAgICBpcFN5c3RlbVN0YXRzSENPdXRNY2FzdE9jdGV0cwogfQotCi0KLQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICJJUCBzeXN0ZW0gd2lkZSBzdGF0aXN0aWNzIGZvciBzeXN0ZW1zIHRoYXQgbWF5IG92ZXJmbG93IHRoZQpAQCAtNDIwMiw5ICszOTk1LDYgQEAKICAgICAgICAgICAgICAgICBpcElmU3RhdHNEaXNjb250aW51aXR5VGltZSwgaXBJZlN0YXRzUmVmcmVzaFJhdGUgfQogICAgIFNUQVRVUyAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQotCiAgICAgICAgICAgICJJUCBwZXItaW50ZXJmYWNlIHN0YXRpc3RpY3MuIgogICAgIDo6PSB7IGlwTUlCR3JvdXBzIDEzIH0KIApAQCAtNDI1Myw5ICs0MDQzLDYgQEAKICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZQcmVmZXJyZWRMaWZldGltZSwKICAgICAgICAgICAgICAgICBpcEFkZHJlc3NQcmVmaXhBZHZWYWxpZExpZmV0aW1lIH0KICAgICBTVEFUVVMgICAgIGN1cnJlbnQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIGdyb3VwIG9mIG9iamVjdHMgZm9yIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBhZGRyZXNzCiAgICAgICAgICAgICBwcmVmaXhlcyB1c2VkIGJ5IHRoaXMgbm9kZS4iCkBAIC00MzA0LDkgKzQwOTEsNiBAQAogCiBpcERlZmF1bHRSb3V0ZXJHcm91cCBPQkpFQ1QtR1JPVVAKICAgICBPQkpFQ1RTICAgeyBpcERlZmF1bHRSb3V0ZXJMaWZldGltZSwgaXBEZWZhdWx0Um91dGVyUHJlZmVyZW5jZSB9Ci0KLQotCiAgICAgU1RBVFVTICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgIlRoZSBncm91cCBvZiBvYmplY3RzIGZvciBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgZGVmYXVsdApAQCAtNDM1Niw4ICs0MTQwLDYgQEAKIAogICAgICAgICAgICAgVGhpcyBvYmplY3QgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYXMgYSBuZXcgSVAgdmVyc2lvbi1uZXV0cmFsCiAKLQotCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJblJlY2lldmVzLiIKICAgICA6Oj0geyBpcCAzIH0KQEAgLTQ0MDcsOCArNDE4OSw2IEBACiAgICAgICAgICAgICBmaW5hbCBkZXN0aW5hdGlvbi4gIEluIGVudGl0aWVzIHdoaWNoIGRvIG5vdCBhY3QgYXMgSVB2NAogICAgICAgICAgICAgcm91dGVycywgdGhpcyBjb3VudGVyIHdpbGwgaW5jbHVkZSBvbmx5IHRob3NlIHBhY2tldHMgd2hpY2gKIAotCi0KICAgICAgICAgICAgIHdlcmUgU291cmNlLVJvdXRlZCB2aWEgdGhpcyBlbnRpdHksIGFuZCB0aGUgU291cmNlLVJvdXRlCiAgICAgICAgICAgICBvcHRpb24gcHJvY2Vzc2luZyB3YXMgc3VjY2Vzc2Z1bC4KIApAQCAtNDQ1OCw4ICs0MjM4LDYgQEAKICAgICAgICAgICAgIFRoaXMgb2JqZWN0IGhhcyBiZWVuIGRlcHJlY2F0ZWQgYXMgYSBuZXcgSVAgdmVyc2lvbiBuZXV0cmFsCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKIAotCi0KICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNJbmRlbGl2ZXJzLiIKICAgICA6Oj0geyBpcCA5IH0KIApAQCAtNDUwOSw4ICs0Mjg3LDYgQEAKIAogICAgICAgICAgICAgVGhpcyBvYmplY3QgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYXMgYSBuZXcgSVAgdmVyc2lvbi1uZXV0cmFsCiAKLQotCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKICAgICAgICAgICAgIGlwU3lzdGVtU3RhdHNPdXROb1JvdXRlcy4iCiAgICAgOjo9IHsgaXAgMTIgfQpAQCAtNDU1OSw5ICs0MzM1LDYgQEAKIAogaXBGcmFnT0tzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgZGVwcmVjYXRlZAogICAgIERFU0NSSVBUSU9OCkBAIC00NjExLDggKzQzODQsNiBAQAogICAgICAgICAgICAgZm9yIGRpc2NhcmRpbmcgc3VjaCBhbiBlbnRyeSBjb3VsZCBiZSB0byBmcmVlLXVwIGJ1ZmZlcgogICAgICAgICAgICAgc3BhY2UgZm9yIG90aGVyIHJvdXRpbmcgZW50cmllcy4KIAotCi0KICAgICAgICAgICAgIFRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIGluIHByZS1JUHY2IHZlcnNpb25zIG9mIHRoZSBJUCBNSUIuCiAgICAgICAgICAgICBJdCB3YXMgaW1wbGljaXRseSBJUHY0IG9ubHksIGJ1dCB0aGUgb3JpZ2luYWwgc3BlY2lmaWNhdGlvbnMKICAgICAgICAgICAgIGRpZCBub3QgaW5kaWNhdGUgdGhpcyBwcm90b2NvbCByZXN0cmljdGlvbi4gIEluIG9yZGVyIHRvCkBAIC00NjYxLDkgKzQ0MzIsNiBAQAogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KLQotCi0KICAgICAgICAgICAgIlRoZSBJUHY0IGFkZHJlc3MgdG8gd2hpY2ggdGhpcyBlbnRyeSdzIGFkZHJlc3NpbmcKICAgICAgICAgICAgIGluZm9ybWF0aW9uIHBlcnRhaW5zLiIKICAgICA6Oj0geyBpcEFkZHJFbnRyeSAxIH0KQEAgLTQ3MTMsOCArNDQ4MSw2IEBACiAgICAgICAgICAgICBvbiB0aGlzIGludGVyZmFjZS4iCiAgICAgOjo9IHsgaXBBZGRyRW50cnkgNSB9CiAKLQotCiAtLSB0aGUgZGVwcmVjYXRlZCBJUHY0IEFkZHJlc3MgVHJhbnNsYXRpb24gdGFibGUKIAogLS0gVGhlIEFkZHJlc3MgVHJhbnNsYXRpb24gdGFibGVzIGNvbnRhaW4gdGhlIElwQWRkcmVzcyB0bwpAQCAtNDc2NCw4ICs0NTMwLDYgQEAKICAgICAgICAgICAgIGVmZmVjdGl2ZS4gIFRoZSBpbnRlcmZhY2UgaWRlbnRpZmllZCBieSBhIHBhcnRpY3VsYXIgdmFsdWUKICAgICAgICAgICAgIG9mIHRoaXMgaW5kZXggaXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIGlkZW50aWZpZWQgYnkgdGhlCiAKLQotCiAgICAgICAgICAgICBzYW1lIHZhbHVlIG9mIHRoZSBJRi1NSUIncyBpZkluZGV4LgogCiAgICAgICAgICAgICBUaGlzIG9iamVjdCBwcmVkYXRlcyB0aGUgcnVsZSBsaW1pdGluZyBpbmRleCBvYmplY3RzIHRvIGEKQEAgLTQ4MTUsOCArNDU3OSw2IEBACiAKICAgICAgICAgICAgIFNldHRpbmcgdGhpcyBvYmplY3QgdG8gdGhlIHZhbHVlIGludmFsaWQoMikgaGFzIHRoZSBlZmZlY3QKIAotCi0KICAgICAgICAgICAgIG9mIGludmFsaWRhdGluZyB0aGUgY29ycmVzcG9uZGluZyBlbnRyeSBpbiB0aGUKICAgICAgICAgICAgIGlwTmV0VG9NZWRpYVRhYmxlLiAgVGhhdCBpcywgaXQgZWZmZWN0aXZlbHkgZGlzLWFzc29jaWF0ZXMKICAgICAgICAgICAgIHRoZSBpbnRlcmZhY2UgaWRlbnRpZmllZCB3aXRoIHNhaWQgZW50cnkgZnJvbSB0aGUgbWFwcGluZwpAQCAtNDg2NSw5ICs0NjI3LDYgQEAKICAgICAgICAgICAgIGljbXBTdGF0c0luRXJyb3JzLiIKICAgICA6Oj0geyBpY21wIDIgfQogCi0KLQotCiBpY21wSW5EZXN0VW5yZWFjaHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CkBAIC00OTE3LDggKzQ2NzYsNiBAQAogICAgICAgICAgICAgdGhlIGljbXBNc2dTdGF0c1RhYmxlLiIKICAgICA6Oj0geyBpY21wIDYgfQogCi0KLQogaWNtcEluUmVkaXJlY3RzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBDb3VudGVyMzIKICAgICBNQVgtQUNDRVNTIHJlYWQtb25seQpAQCAtNDk2Nyw5ICs0NzI0LDYgQEAKICAgICAgICAgICAgIHRoZSBpY21wTXNnU3RhdHNUYWJsZS4iCiAgICAgOjo9IHsgaWNtcCAxMCB9CiAKLQotCi0KIGljbXBJblRpbWVzdGFtcFJlcHMgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIENvdW50ZXIzMgogICAgIE1BWC1BQ0NFU1MgcmVhZC1vbmx5CkBAIC01MDE4LDkgKzQ3NzIsNiBAQAogICAgICAgICAgICAgVGhpcyBvYmplY3QgaGFzIGJlZW4gZGVwcmVjYXRlZCwgYXMgYSBuZXcgSVAgdmVyc2lvbi1uZXV0cmFsCiAgICAgICAgICAgICB0YWJsZSBoYXMgYmVlbiBhZGRlZC4gIEl0IGlzIGxvb3NlbHkgcmVwbGFjZWQgYnkKICAgICAgICAgICAgIGljbXBTdGF0c091dE1zZ3MuIgotCi0KLQogICAgIDo6PSB7IGljbXAgMTQgfQogCiBpY21wT3V0RXJyb3JzIE9CSkVDVC1UWVBFCkBAIC01MDY5LDkgKzQ4MjAsNiBAQAogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKLQotCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAgICAiVGhlIG51bWJlciBvZiBJQ01QIFBhcmFtZXRlciBQcm9ibGVtIG1lc3NhZ2VzIHNlbnQuCiAKQEAgLTUxMjAsOSArNDg2OCw2IEBACiAKIGljbXBPdXRFY2hvUmVwcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgpAQCAtNTE3MSw5ICs0OTE2LDYgQEAKIAogaWNtcE91dEFkZHJNYXNrUmVwcyBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgQ291bnRlcjMyCi0KLQotCiAgICAgTUFYLUFDQ0VTUyByZWFkLW9ubHkKICAgICBTVEFUVVMgICAgIGRlcHJlY2F0ZWQKICAgICBERVNDUklQVElPTgpAQCAtNTIyMiw5ICs0OTY0LDYgQEAKICAgICAgICAgICAgIlRoZSBpcCBncm91cCBvZiBvYmplY3RzIHByb3ZpZGluZyBmb3IgYmFzaWMgbWFuYWdlbWVudCBvZiBJUAogICAgICAgICAgICAgZW50aXRpZXMsIGV4Y2x1c2l2ZSBvZiB0aGUgbWFuYWdlbWVudCBvZiBJUCByb3V0ZXMuCiAKLQotCi0KICAgICAgICAgICAgIEFzIHBhcnQgb2YgdGhlIHZlcnNpb24gaW5kZXBlbmRlbmNlLCB0aGlzIGdyb3VwIGhhcyBiZWVuCiAgICAgICAgICAgICBkZXByZWNhdGVkLiAgIgogICAgIDo6PSB7IGlwTUlCR3JvdXBzIDEgfQpkaWZmIC0tZ2l0IGEvbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dCBiL21pYnMvSVBWNi1GTE9XLUxBQkVMLU1JQi50eHQKaW5kZXggZjMwZjRjYS4uNmZiMzY1OSAxMDA2NDQKLS0tIGEvbWlicy9JUFY2LUZMT1ctTEFCRUwtTUlCLnR4dAorKysgYi9taWJzL0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0CkBAIC0xNSwxMCArMTUsNiBAQAogICAgICAgICAgICAgICAgICAgIDM0NjEgR0wgTGluc2Nob3RlbgogICAgICAgICAgICAgICAgICAgIE5ldGhlcmxhbmRzCiAKLQotCi0KLQogICAgICAgICAgICAgICAgICAgIFBob25lOiArMzEgMzQ4LTQwNy03NzUKICAgICAgICAgICAgICAgICAgICBFTWFpbDogYndpam5lbkBsdWNlbnQuY29tCiAKQEAgLTM1LDcgKzMxLDYgQEAKIAogICAgIFJFVklTSU9OICAgICAgIjIwMDMwODI4MDAwMFoiICAtLSAyOCBBdWd1c3QgMjAwMwogICAgIERFU0NSSVBUSU9OICAgIkluaXRpYWwgdmVyc2lvbiwgcHVibGlzaGVkIGFzIFJGQyAzNTk1LiIKLQogICAgIDo6PSB7IG1pYi0yIDEwMyB9CiAKIElQdjZGbG93TGFiZWwgICAgICA6Oj0gVEVYVFVBTC1DT05WRU5USU9OCmRpZmYgLS1naXQgYS9taWJzL01ha2VmaWxlLm1pYiBiL21pYnMvTWFrZWZpbGUubWliCmluZGV4IDEzNjE5OWMuLmU1ODcxZjEgMTAwNjQ0Ci0tLSBhL21pYnMvTWFrZWZpbGUubWliCisrKyBiL21pYnMvTWFrZWZpbGUubWliCkBAIC0xNCwxOCArMTQsMjQgQEAKIAlTTk1QLUZSQU1FV09SSy1NSUIudHh0IFNOTVAtTVBELU1JQi50eHQgU05NUC1VU0VSLUJBU0VELVNNLU1JQi50eHQgXAogCVNOTVAtVklFVy1CQVNFRC1BQ00tTUlCLnR4dCBTTk1QLUNPTU1VTklUWS1NSUIudHh0IFwKIAlTTk1QLVRBUkdFVC1NSUIudHh0IFNOTVAtTk9USUZJQ0FUSU9OLU1JQi50eHQgU05NUC1QUk9YWS1NSUIudHh0IFwKKwlTTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQi50eHQgU05NUC1VU00tQUVTLU1JQi50eHQgXAogCUFHRU5UWC1NSUIudHh0IFNNVVgtTUlCLnR4dCBcCi0JRElTTUFOLVNDUklQVC1NSUIudHh0ICBESVNNQU4tU0NIRURVTEUtTUlCLnR4dCBcCisJRElTTUFOLVNDUklQVC1NSUIudHh0IERJU01BTi1TQ0hFRFVMRS1NSUIudHh0IFwKKwlESVNNQU4tUElORy1NSUIudHh0IERJU01BTi1UUkFDRVJPVVRFLU1JQi50eHQgXAorCURJU01BTi1OU0xPT0tVUC1NSUIudHh0IERJU01BTi1FVkVOVC1NSUIudHh0IFwKKwlESVNNQU4tRVhQUkVTU0lPTi1NSUIudHh0IE5PVElGSUNBVElPTi1MT0ctTUlCLnR4dCBcCiAJSUFOQS1MQU5HVUFHRS1NSUIudHh0IElBTkEtQUREUkVTUy1GQU1JTFktTlVNQkVSUy1NSUIudHh0IFwKIAlJRi1NSUIudHh0IElGLUlOVkVSVEVELVNUQUNLLU1JQi50eHQgXAogCUlQLU1JQi50eHQgSVAtRk9SV0FSRC1NSUIudHh0IFRDUC1NSUIudHh0IFVEUC1NSUIudHh0IFwKLQlJQU5BaWZUeXBlLU1JQi50eHQgRXRoZXJMaWtlLU1JQi50eHQgXAorCUlBTkFpZlR5cGUtTUlCLnR4dCBJQU5BLVJUUFJPVE8tTUlCLnR4dCBFdGhlckxpa2UtTUlCLnR4dCBcCiAJSVBWNi1UQy50eHQgSVBWNi1NSUIudHh0IElQVjYtSUNNUC1NSUIudHh0IFwKLQlJUFY2LVRDUC1NSUIudHh0IElQVjYtVURQLU1JQi50eHQgXAorCUlQVjYtVENQLU1JQi50eHQgSVBWNi1VRFAtTUlCLnR4dCBJUFY2LUZMT1ctTEFCRUwtTUlCLnR4dCBcCiAJSE9TVC1SRVNPVVJDRVMtTUlCLnR4dCBIT1NULVJFU09VUkNFUy1UWVBFUy50eHQgXAogCU5FVFdPUkstU0VSVklDRVMtTUlCLnR4dCBNVEEtTUlCLnR4dCBcCiAJUk1PTi1NSUIudHh0IFwKLQlSRkMxMTU1LVNNSS50eHQgUkZDMTIxMy1NSUIudHh0IFwKKwlUVU5ORUwtTUlCLnR4dCBcCisJVFJBTlNQT1JULUFERFJFU1MtTUlCLnR4dCBcCisJUkZDMTE1NS1TTUkudHh0IFJGQzEyMTMtTUlCLnR4dFwKIAlTQ1RQLU1JQi50eHQKIAogTUlCREVQUyA9IE1ha2VmaWxlLm1pYiBtaWJmZXRjaCBzbWlzdHJpcApAQCAtNjUsNiArNzEsMTIgQEAKIFNOTVAtQ09NTVVOSVRZLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI1NzYKIAorU05NUC1VU00tQUVTLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDM4MjYKKworU05NUC1VU00tREgtT0JKRUNUUy1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNzg2CisKIFNOTVB2Mi1TTUkudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNTc4IFNOTVB2Mi1TTUkKIApAQCAtOTIsNiArMTA0LDE4IEBACiBESVNNQU4tU0NSSVBULU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDMxNjUKIAorRElTTUFOLUVYUFJFU1NJT04tTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjk4MgorCitESVNNQU4tRVZFTlQtTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjk4MQorCitESVNNQU4tTlNMT09LVVAtTUlCLnR4dCBESVNNQU4tVFJBQ0VST1VURS1NSUIudHh0IERJU01BTi1QSU5HLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDQ1NjAKKworTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAzMDE0CisKIElGLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDI4NjMKIApAQCAtMTEwLDYgKzEzNCw5IEBACiBJQU5BaWZUeXBlLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoIC14ICQoSUFOQUhPU1QpICQoSUFOQURJUikgaWFuYWlmdHlwZS1taWIKIAorSUFOQS1SVFBST1RPLU1JQi50eHQ6CSQoTUlCREVQUykKKwkuL21pYmZldGNoIC14ICQoSUFOQUhPU1QpICQoSUFOQURJUikgaWFuYWlwcm91dGVwcm90b2NvbC1taWIKKwogSUFOQS1MQU5HVUFHRS1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAteCAkKElBTkFIT1NUKSAkKElBTkFESVIpIGlhbmFsYW5ndWFnZS1taWIKIApAQCAtMTE3LDE2ICsxNDQsMjIgQEAKIAkuL21pYmZldGNoIC14ICQoSUFOQUhPU1QpICQoSUFOQURJUikgaWFuYWFkZHJlc3NmYW1pbHludW1iZXJzLW1pYgogCiBJUC1NSUIudHh0OgkkKE1JQkRFUFMpCi0JLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyMDExCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSA0MjkzCiAKIElQLUZPUldBUkQtTUlCLnR4dDoJJChNSUJERVBTKQotCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjA5NgorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDI5MgogCiBUQ1AtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDAyMgogCiBVRFAtTUlCLnR4dDoJJChNSUJERVBTKQotCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjAxMworCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDExMworCitUVU5ORUwtTUlCLnR4dDoJJChNSUJERVBTKQorCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgNDA4NworCitUUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAzNDE5CiAKIElQVjYtVEMudHh0IElQVjYtTUlCLnR4dDoJJChNSUJERVBTKQogCS4vbWliZmV0Y2ggJChSRkNIT1NUKSAkKFJGQ0RJUikgMjQ2NQpAQCAtMTQwLDYgKzE3Myw5IEBACiBJUFY2LVVEUC1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNDU0CiAKK0lQVjYtRkxPVy1MQUJFTC1NSUIudHh0OgkkKE1JQkRFUFMpCisJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAzNTk1CisKIEhPU1QtUkVTT1VSQ0VTLU1JQi50eHQgSE9TVC1SRVNPVVJDRVMtVFlQRVMudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAyNzkwCiAKQEAgLTE1OCw3ICsxOTQsNyBAQAogUkZDMTIxMy1NSUIudHh0OgkkKE1JQkRFUFMpCiAJLi9taWJmZXRjaCAkKFJGQ0hPU1QpICQoUkZDRElSKSAxMjEzCiAKLVNDVFAudHh0OgkkKE1JQkRFUFMpCitTQ1RQLU1JQi50eHQ6CSQoTUlCREVQUykKIAkuL21pYmZldGNoICQoUkZDSE9TVCkgJChSRkNESVIpIDM4NzMKIAogaWFuYW1pYnM6CWlhbmFsaXN0CmRpZmYgLS1naXQgYS9taWJzL05FVC1TTk1QLVRDLnR4dCBiL21pYnMvTkVULVNOTVAtVEMudHh0CmluZGV4IGYzZmY1ZGYuLmIzZDc2YTkgMTAwNjQ0Ci0tLSBhL21pYnMvTkVULVNOTVAtVEMudHh0CisrKyBiL21pYnMvTkVULVNOTVAtVEMudHh0CkBAIC0xMjAsNSArMTIwLDggQEAKIG5ldFNubXBVRFBJUHY2RG9tYWluCU9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5ldFNubXBEb21haW5zIDQgfSAtLSBvYnNvbGV0ZQogbmV0U25tcFRDUElQdjZEb21haW4JT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbmV0U25tcERvbWFpbnMgNSB9IC0tIG9ic29sZXRlCiBuZXRTbm1wQ2FsbGJhY2tEb21haW4JT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbmV0U25tcERvbWFpbnMgNiB9CituZXRTbm1wQWxpYXNEb21haW4JT0JKRUNUIElERU5USUZJRVIgOjo9IHsgbmV0U25tcERvbWFpbnMgNyB9CituZXRTbm1wRFRMU1VEUERvbWFpbglPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBuZXRTbm1wRG9tYWlucyA4IH0KK25ldFNubXBEVExTU0NUUERvbWFpbglPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyBuZXRTbm1wRG9tYWlucyA5IH0KIAogRU5ECmRpZmYgLS1naXQgYS9taWJzL05PVElGSUNBVElPTi1MT0ctTUlCLnR4dCBiL21pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0CmluZGV4IGM2MGI3ZDIuLmM3ZGE5MzQgMTAwNjQ0Ci0tLSBhL21pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0CisrKyBiL21pYnMvTk9USUZJQ0FUSU9OLUxPRy1NSUIudHh0CkBAIC0yMyw3ICsyMyw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBNSUIgbW9kdWxlIGZvciBsb2dnaW5nIFNOTVAgTm90aWZpY2F0aW9ucywgdGhhdCBpcywgVHJhcHMKIAotCiAgICAgIGFuZCBJbmZvcm1zLiIKIC0tIFJldmlzaW9uIEhpc3RvcnkKIApAQCAtMzIsNyArMzEsNiBAQAogICAgICAgICAgICAgICAgUHVibGlzaGVkIGFzIFJGQyAzMDE0IgogICAgIDo6PSB7IG1pYi0yIDkyIH0KIAotCiBub3RpZmljYXRpb25Mb2dNSUJPYmplY3RzIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5vdGlmaWNhdGlvbkxvZ01JQiAxIH0KIAogbmxtQ29uZmlnIE9CSkVDVCBJREVOVElGSUVSIDo6PSB7IG5vdGlmaWNhdGlvbkxvZ01JQk9iamVjdHMgMSB9CkBAIC03Miw4ICs3MCw2IEBACiAKIG5sbUNvbmZpZ0dsb2JhbEFnZU91dCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFVuc2lnbmVkMzIKLQotCiAgICAgVU5JVFMgICAgICAgIm1pbnV0ZXMiCiAgICAgTUFYLUFDQ0VTUyAgcmVhZC13cml0ZQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKQEAgLTkzLDcgKzg5LDYgQEAKICAgICBERUZWQUwgeyAxNDQwIH0gIC0tIDI0IGhvdXJzCiAgICAgOjo9IHsgbmxtQ29uZmlnIDIgfQogCi0KIC0tCiAtLSBCYXNpYyBMb2cgQ29uZmlndXJhdGlvbiBUYWJsZQogLS0KQEAgLTEyMiw4ICsxMTcsNiBAQAogICAgIG5sbUNvbmZpZ0xvZ0ZpbHRlck5hbWUgICAgU25tcEFkbWluU3RyaW5nLAogICAgIG5sbUNvbmZpZ0xvZ0VudHJ5TGltaXQgICAgVW5zaWduZWQzMiwKICAgICBubG1Db25maWdMb2dBZG1pblN0YXR1cyAgIElOVEVHRVIsCi0KLQogICAgIG5sbUNvbmZpZ0xvZ09wZXJTdGF0dXMgICAgSU5URUdFUiwKICAgICBubG1Db25maWdMb2dTdG9yYWdlVHlwZSAgIFN0b3JhZ2VUeXBlLAogICAgIG5sbUNvbmZpZ0xvZ0VudHJ5U3RhdHVzICAgUm93U3RhdHVzCkBAIC0xNzIsOCArMTY1LDYgQEAKICAgICAgTm90aWZpY2F0aW9ucyBpbiB0aGUgbG9nLCB0aGUgb2xkZXN0IE5vdGlmaWNhdGlvbnMgYXJlIGRpc2NhcmRlZAogICAgICB0byBicmluZyB0aGUgbG9nIGRvd24gdG8gdGhlIG5ldyBsaW1pdC4KIAotCi0KICAgICAgQSB2YWx1ZSBvZiAwIGluZGljYXRlcyBubyBsaW1pdC4KIAogICAgICBQbGVhc2UgYmUgYXdhcmUgdGhhdCBjb250ZW50aW9uIGJldHdlZW4gbXVsdGlwbGUgbWFuYWdlcnMKQEAgLTIyMiw4ICsyMTMsNiBAQAogICAgIDo6PSB7IG5sbUNvbmZpZ0xvZ0VudHJ5IDYgfQogCiBubG1Db25maWdMb2dFbnRyeVN0YXR1cyBPQkpFQ1QtVFlQRQotCi0KICAgICBTWU5UQVggICAgIFJvd1N0YXR1cwogICAgIE1BWC1BQ0NFU1MgcmVhZC1jcmVhdGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKQEAgLTI3Miw4ICsyNjEsNiBAQAogbmxtU3RhdHNMb2dUYWJsZSBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgIFNFUVVFTkNFIE9GIE5sbVN0YXRzTG9nRW50cnkKICAgICBNQVgtQUNDRVNTICBub3QtYWNjZXNzaWJsZQotCi0KICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgIkEgdGFibGUgb2YgTm90aWZpY2F0aW9uIGxvZyBzdGF0aXN0aWNzIGVudHJpZXMuIgpAQCAtMzE1LDEzICszMDIsMTMgQEAKICAgICAgbmxtQ29uZmlnR2xvYmFsQWdlT3V0LiIKICAgICA6Oj0geyBubG1TdGF0c0xvZ0VudHJ5IDIgfQogCi0KIC0tCiAtLSBMb2cgU2VjdGlvbgogLS0KIAogLS0KIC0tIExvZyBUYWJsZQorCiAtLQogCiBubG1Mb2dUYWJsZSBPQkpFQ1QtVFlQRQpAQCAtMzcwLDggKzM1Nyw2IEBACiAgICAgSU5ERVggICAgICAgeyBubG1Mb2dOYW1lLCBubG1Mb2dJbmRleCB9CiAgICAgOjo9IHsgbmxtTG9nVGFibGUgMSB9CiAKLQotCiBObG1Mb2dFbnRyeSA6Oj0gU0VRVUVOQ0UgewogICAgIG5sbUxvZ0luZGV4ICAgICAgICAgICAgICAgIFVuc2lnbmVkMzIsCiAgICAgbmxtTG9nVGltZSAgICAgICAgICAgICAgICAgVGltZVN0YW1wLApAQCAtNDIxLDcgKzQwNiw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgIlRoZSBpZGVudGlmaWNhdGlvbiBvZiB0aGUgU05NUCBlbmdpbmUgYXQgd2hpY2ggdGhlIE5vdGlmaWNhdGlvbgogCi0KICAgICAgb3JpZ2luYXRlZC4KIAogICAgICBJZiB0aGUgbG9nIGNhbiBjb250YWluIE5vdGlmaWNhdGlvbnMgZnJvbSBvbmx5IG9uZSBlbmdpbmUKQEAgLTQ3MCw4ICs0NTQsNiBAQAogICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KICAgICAgIklmIHRoZSBOb3RpZmljYXRpb24gd2FzIHJlY2VpdmVkIGluIGEgcHJvdG9jb2wgd2hpY2ggaGFzIGEKICAgICAgIGNvbnRleHRFbmdpbmVJRCBlbGVtZW50IGxpa2UgU05NUHYzLCB0aGlzIG9iamVjdCBoYXMgdGhhdCB2YWx1ZS4KICAgICAgIE90aGVyd2lzZSBpdHMgdmFsdWUgaXMgYSB6ZXJvLWxlbmd0aCBzdHJpbmcuIgpAQCAtNTIxLDcgKzUwMyw2IEBACiAKIE5sbUxvZ1ZhcmlhYmxlRW50cnkgOjo9IFNFUVVFTkNFIHsKIAotCiAgICAgbmxtTG9nVmFyaWFibGVJbmRleCAgICAgICAgICAgICAgVW5zaWduZWQzMiwKICAgICBubG1Mb2dWYXJpYWJsZUlEICAgICAgICAgICAgICAgICBPQkpFQ1QgSURFTlRJRklFUiwKICAgICBubG1Mb2dWYXJpYWJsZVZhbHVlVHlwZSAgICAgICAgICBJTlRFR0VSLApAQCAtNTcwLDggKzU1MSw2IEBACiAgICAgTUFYLUFDQ0VTUyAgcmVhZC1vbmx5CiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KLQogICAgICAiVGhlIHZhbHVlIHdoZW4gbmxtTG9nVmFyaWFibGVUeXBlIGlzICdjb3VudGVyMzInLiIKICAgICA6Oj0geyBubG1Mb2dWYXJpYWJsZUVudHJ5IDQgfQogCkBAIC02MjEsNyArNjAwLDYgQEAKICAgICAgSVB2NiBhZGRyZXNzZXMgYXJlIHJlcHJlc2VudGVkIHVzaW5nIFRBZGRyZXNzIG9yCiAgICAgIEluZXRBZGRyZXNzLCBhbmQgc28gdGhlIHVuZGVybHlpbmcgZGF0YXR5cGUgaXMKIAotCiAgICAgIE9DVEVUIFNUUklORywgYW5kIHRoZWlyIHZhbHVlIHdvdWxkIGJlIHN0b3JlZCBpbgogICAgICB0aGUgbmxtTG9nVmFyaWFibGVPY3RldFN0cmluZ1ZhbCBjb2x1bW4uIgogICAgIDo6PSB7IG5sbUxvZ1ZhcmlhYmxlRW50cnkgOSB9CkBAIC02NTAsNyArNjI4LDYgQEAKICAgICAgIlRoZSB2YWx1ZSB3aGVuIG5sbUxvZ1ZhcmlhYmxlVHlwZSBpcyAnb3BhcXVlJy4iCiAgICAgOjo9IHsgbmxtTG9nVmFyaWFibGVFbnRyeSAxMiB9CiAKLQogLS0KIC0tIENvbmZvcm1hbmNlCiAtLQpAQCAtNjcxLDcgKzY0OCw2IEBACiAgICAgICAgICAgdGhlIE5vdGlmaWNhdGlvbiBMb2cgTUlCLiIKICAgICAgTU9EVUxFICAgIC0tIHRoaXMgbW9kdWxlCiAKLQogICAgICAgICAgIE1BTkRBVE9SWS1HUk9VUFMgewogICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uTG9nQ29uZmlnR3JvdXAsCiAgICAgICAgICAgICAgICBub3RpZmljYXRpb25Mb2dTdGF0c0dyb3VwLApAQCAtNzA0LDcgKzY4MCw2IEBACiAgICAgICAgICAgIlRoaXMgZ3JvdXAgaXMgbWFuZGF0b3J5IG9uIHN5c3RlbXMgdGhhdCBrZWVwIHdhbGwgY2xvY2sKICAgICAgICAgICBkYXRlIGFuZCB0aW1lIGFuZCBzaG91bGQgbm90IGJlIGltcGxlbWVudGVkIG9uIHN5c3RlbXMgdGhhdAogICAgICAgICAgIGRvIG5vdCBoYXZlIGEgd2FsbCBjbG9jayBkYXRlLiIKLQogICAgICA6Oj0geyBub3RpZmljYXRpb25Mb2dNSUJDb21wbGlhbmNlcyAxIH0KIAogLS0gVW5pdHMgb2YgQ29uZm9ybWFuY2UKQEAgLTcyMCw4ICs2OTUsNiBAQAogICAgICAgICAgIG5sbUNvbmZpZ0xvZ1N0b3JhZ2VUeXBlLAogICAgICAgICAgIG5sbUNvbmZpZ0xvZ0VudHJ5U3RhdHVzCiAgICAgIH0KLQotCiAgICAgIFNUQVRVUyBjdXJyZW50CiAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgIk5vdGlmaWNhdGlvbiBsb2cgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50LiIKQEAgLTc3MCw4ICs3NDMsNiBAQAogICAgICAgICAgIG5sbUxvZ0RhdGVBbmRUaW1lCiAgICAgIH0KICAgICAgU1RBVFVTIGN1cnJlbnQKLQotCiAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgIkNvbmRpdGlvbmFsbHkgbWFuZGF0b3J5IG5vdGlmaWNhdGlvbiBsb2cgZGF0YS4KICAgICAgICAgICBUaGlzIGdyb3VwIGlzIG1hbmRhdG9yeSBvbiBzeXN0ZW1zIHRoYXQga2VlcCB3YWxsCmRpZmYgLS1naXQgYS9taWJzL1NOTVAtVVNNLUFFUy1NSUIudHh0IGIvbWlicy9TTk1QLVVTTS1BRVMtTUlCLnR4dAppbmRleCBlOWU5ZmI4Li40YzE3MzAyIDEwMDY0NAotLS0gYS9taWJzL1NOTVAtVVNNLUFFUy1NSUIudHh0CisrKyBiL21pYnMvU05NUC1VU00tQUVTLU1JQi50eHQKQEAgLTM5LDkgKzM5LDkgQEAKICAgICAgICAgICAgIHNlZSB0aGUgUkZDIGl0c2VsZiBmb3IgZnVsbCBsZWdhbCBub3RpY2VzLgogICAgICAgICAgICAgU3VwcGxlbWVudGFyeSBpbmZvcm1hdGlvbiBtYXkgYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICAgICBodHRwOi8vd3d3LmlldGYub3JnL2NvcHlyaWdodHMvaWFuYW1pYi5odG1sLiIKKwogICAgIFJFVklTSU9OICAgICAiMjAwNDA2MTQwMDAwWiIKICAgICBERVNDUklQVElPTiAgIkluaXRpYWwgdmVyc2lvbiwgcHVibGlzaGVkIGFzIFJGQzM4MjYiCi0KICAgICA6Oj0geyBzbm1wTW9kdWxlcyAyMCB9CiAKIHVzbUFlc0NmYjEyOFByb3RvY29sIE9CSkVDVC1JREVOVElUWQpkaWZmIC0tZ2l0IGEvbWlicy9TTk1QLVVTTS1ESC1PQkpFQ1RTLU1JQi50eHQgYi9taWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dAppbmRleCBlZTIwNzZhLi43Mzc3NDI1IDEwMDY0NAotLS0gYS9taWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dAorKysgYi9taWJzL1NOTVAtVVNNLURILU9CSkVDVFMtTUlCLnR4dApAQCAtMjMsNyArMjMsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBSZWR3b29kIENpdHksIENBIDk0MDYzCiAgICAgICAgICAgICAgICAgICBFbWFpbDogIHN0am9obnNAY29ycC5ob21lLm5ldAogICAgICAgICAgICAgICAgICAgUGhvbmU6ICArMS02NTAtNTU2LTUzNjgiCi0KICAgICBERVNDUklQVElPTgogICAgICAgICAiVGhlIG1hbmFnZW1lbnQgaW5mb3JtYXRpb24gZGVmaW5pdGlvbnMgZm9yIHByb3ZpZGluZyBmb3J3YXJkCiAgICAgc2VjcmVjeSBmb3Iga2V5IGNoYW5nZXMgZm9yIHRoZSB1c21Vc2VyVGFibGUsIGFuZCBmb3IgcHJvdmlkaW5nIGEKQEAgLTMzLDggKzMyLDYgQEAKICAgICBSRVZJU0lPTiAgICAgIjIwMDAwMzA2MDAwMFoiCiAgICAgREVTQ1JJUFRJT04KICAgICAgICAiSW5pdGlhbCB2ZXJzaW9uIHB1Ymxpc2hlZCBhcyBSRkMgMjc4Ni4iCi0KLQogICAgIDo6PSB7IGV4cGVyaW1lbnRhbCAxMDEgfSAgLS0gSUFOQSBESEtFWS1DSEFOR0UgMTAxCiAKIC0tIEFkbWluaXN0cmF0aXZlIGFzc2lnbm1lbnRzCkBAIC0xMTEsNyArMTA4LDYgQEAKICAgICAgICAgICAgYmFzZSAgICBJTlRFR0VSLCAgIC0tIGcKICAgICAgICAgICAgcHJpdmF0ZVZhbHVlTGVuZ3RoICBJTlRFR0VSIE9QVElPTkFMIH0KIAotCiAgICAgSW1wbGVtZW50b3JzIGFyZSBlbmNvdXJhZ2VkIHRvIHVzZSBlaXRoZXIgdGhlIHZhbHVlcyBmcm9tCiAgICAgT2FrbGV5IEdyb3VwIDEgIG9yIHRoZSB2YWx1ZXMgb2YgZnJvbSBPYWtsZXkgR3JvdXAgMiBhcyBzcGVjaWZpZWQKICAgICBpbiBSRkMtMjQwOSwgVGhlIEludGVybmV0IEtleSBFeGNoYW5nZSwgU2VjdGlvbiA2LjEsIDYuMiBhcyB0aGUKQEAgLTIzNyw2ICsyMzMsNyBAQAogICAgIGFuIGltcGxlbWVudG9yIHdpbGwgc3BlY2lmeSBvbmUgb3IgbW9yZSBzdGFuZGFyZCBzZWN1cml0eSBuYW1lcwogICAgIGFuZCB3aWxsIHByb3ZpZGUgZW50cmllcyBpbiB0aGUgVkFDTSB0YWJsZXMgZ3JhbnRpbmcgdmFyaW91cwogICAgIGxldmVscyBvZiBhY2Nlc3MgdG8gdGhvc2UgbmFtZXMuICBUaGUgYWN0dWFsIGNvbnRlbnQgb2YgdGhlIFZBQ00KKwogICAgIHRhYmxlIGlzIGJleW9uZCB0aGUgc2NvcGUgb2YgdGhpcyBNSUIuCiAKICAgICBOb3RlOiBUaGlzIHRhYmxlIGlzIGV4cGVjdGVkIHRvIGJlIHJlYWRhYmxlIHdpdGhvdXQgYXV0aGVudGljYXRpb24KQEAgLTI0OSw3ICsyNDYsNiBAQAogICAgIE1BWC1BQ0NFU1MgIG5vdC1hY2Nlc3NpYmxlCiAgICAgU1RBVFVTICAgICAgY3VycmVudAogICAgIERFU0NSSVBUSU9OCi0KICAgICAgICAgIkFuIGVudHJ5IGluIHRoZSB1c21ESEtpY2tzdGFydFRhYmxlLiAgVGhlIGFnZW50IFNIT1VMRCBlaXRoZXIKICAgICBkZWxldGUgdGhpcyBlbnRyeSBvciBtYXJrIGl0IGFzIGluYWN0aXZlIHVwb24gYSBzdWNjZXNzZnVsIFNFVCBvZgogICAgIGFueSBvZiB0aGUgS2V5Q2hhbmdlLXR5cGVkIG9iamVjdHMgaW4gdGhlIHVzbVVzZXJFbnRyeSBvciB1cG9uIGEKQEAgLTI2MCw3ICsyNTYsNiBAQAogICAgIG9uZSBvciBtb3JlIG9mIHRoZSBrZXlzIGZvciBhIHJvdyBpbiB1c21Vc2VyVGFibGUgd2l0aCBhCiAgICAgcGFydGljdWxhciBzZWN1cml0eSBuYW1lLCB0aGUgcm93IGluIHRoaXMgdGFibGUgd2l0aCB0aGF0IHNhbWUKICAgICBzZWN1cml0eSBuYW1lIGlzIG5vIGxvbmdlciB1c2VmdWwgb3IgbWVhbmluZ2Z1bC4iCi0KICAgICBJTkRFWCAgIHsgdXNtREhLaWNrc3RhcnRJbmRleCB9CiAgICAgOjo9IHt1c21ESEtpY2tzdGFydFRhYmxlIDEgfQogCkBAIC0yODUsNiArMjgwLDcgQEAKICAgICBTVEFUVVMgICAgICBjdXJyZW50CiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgIlRoZSBhZ2VudCdzIERpZmZpZS1IZWxsbWFuIHB1YmxpYyB2YWx1ZSBmb3IgdGhpcyByb3cuICBBdAorCiAgICAgaW5pdGlhbGl6YXRpb24sIHRoZSBhZ2VudCBnZW5lcmF0ZXMgYSByYW5kb20gbnVtYmVyIGFuZCBkZXJpdmVzCiAgICAgaXRzIHB1YmxpYyB2YWx1ZSBmcm9tIHRoYXQgbnVtYmVyLiAgVGhpcyBwdWJsaWMgdmFsdWUgaXMgcHVibGlzaGVkCiAgICAgaGVyZS4gIFRoaXMgcHVibGljIHZhbHVlICd5JyBlcXVhbHMgZ15yIE1PRCBwIHdoZXJlIGcgaXMgdGhlIGZyb20KQEAgLTMwMyw3ICsyOTksNiBAQAogICAgICAgICB3aGVyZSBQVjEsLi4uLFBWayBhcmUgdGhlIG9jdGV0cyBvZiBQViBmcm9tIGZpcnN0IHRvIGxhc3QsIGFuZAogICAgICAgICB3aGVyZSBQVjEgIT0gMC4KIAotCiAgICAgVGhlIGZvbGxvd2luZyBESCBwYXJhbWV0ZXJzIChPYWtsZXkgZ3JvdXAgIzIsIFJGQyAyNDA5LCBzZWMgNi4xLAogICAgIDYuMikgYXJlIHVzZWQgZm9yIHRoaXMgb2JqZWN0OgogCkBAIC0zMjgsMTAgKzMyMywxMCBAQAogICAgIE1BWC1BQ0NFU1MgIHJlYWQtb25seQogICAgIFNUQVRVUyAgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCiAgICAgICAgICJUaGUgbWFuYWdlcidzIERpZmZpZS1IZWxsbWFuIHB1YmxpYyB2YWx1ZSBmb3IgdGhpcyByb3cuICBOb3RlCiAgICAgdGhhdCB0aGlzIHZhbHVlIGlzIG5vdCBzZXQgdmlhIHRoZSBTTk1QIGFnZW50LCBidXQgbWF5IGJlIHNldCB2aWEKICAgICBzb21lIG91dCBvZiBiYW5kIG1ldGhvZCwgc3VjaCBhcyB0aGUgZGV2aWNlJ3MgY29uZmlndXJhdGlvbiBmaWxlLgorCiAgICAgVGhlIG1hbmFnZXIgY2FsY3VsYXRlcyB0aGlzIHZhbHVlIGluIHRoZSBzYW1lIG1hbm5lciBhbmQgdXNpbmcgdGhlCiAgICAgc2FtZSBwYXJhbWV0ZXIgc2V0IGFzIHRoZSBhZ2VudCBkb2VzLiAgRS5nLiBpdCBzZWxlY3RzIGEgcmFuZG9tCiAgICAgbnVtYmVyICdyJywgY2FsY3VsYXRlcyB5ID0gZ15yIG1vZCBwIGFuZCBwcm92aWRlcyAneScgYXMgdGhlCkBAIC00MjgsNiArNDIzLDcgQEAKICAgICAgICAgaW1wbGVtZW50cyB0aGUgdXNtVXNlclRhYmxlIGFuZCB3aGljaCB3aXNoZXMgdGhlIGFiaWxpdHkgdG8KICAgICAgICAgcG9wdWxhdGUgdGhlIFVTTSB0YWJsZSBiYXNlZCBvbiBvdXQtb2YtYmFuZCBwcm92aWRlZCBESAogICAgICAgICBpZ25pdGlvbiB2YWx1ZXMuCisKICAgICAgICAgICAgICBBbnkgYWdlbnQgaW1wbGVtZW50aW5nIHRoaXMgZ3JvdXAgaXMgZXhwZWN0ZWQgdG8gcHJvdmlkZQogICAgICAgICBwcmVpbnN0YWxsZWQgZW50cmllcyBpbiB0aGUgdmFjbSB0YWJsZXMgYXMgZm9sbG93czoKIApAQCAtNDc2LDYgKzQ3Miw3IEBACiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVZpZXdOYW1lICAgICAgJ2RoS2lja1Jlc3RyaWN0ZWQnCiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVN1YnRyZWUgICAgICAgMS4zLjYuMS4yLjEuMSAgKHN5c3RlbSkKICAgICAgICAgdmFjbVZpZXdUcmVlRmFtaWx5TWFzayAgICAgICAgICAnJworCiAgICAgICAgIHZhY21WaWV3VHJlZUZhbWlseVR5cGUgICAgICAgICAgMQogICAgICAgICB2YWNtVmlld1RyZWVGYW1pbHlTdG9yYWdlVHlwZSAgIHBlcm1hbmVudAogICAgICAgICB2YWNtVmlld1RyZWVGYW1pbHlTdGF0dXMgICAgICAgIGFjdGl2ZQpAQCAtNDkzLDcgKzQ5MCw2IEBACiAgICAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiSXQgaXMgY29tcGxpYW50IHRvIGltcGxlbWVudCB0aGlzIG9iamVjdCBhcyByZWFkLW9ubHkgZm9yCiAgICAgICAgIGFueSBkZXZpY2UuIgotCiAgICAgOjo9IHsgdXNtREhLZXlNSUJDb21wbGlhbmNlcyAxIH0KIAogLS0gVW5pdHMgb2YgQ29tcGxpYW5jZQpAQCAtNTMzLDUgKzUyOSw0IEBACiAgICAgbm9uLWNvbmZpZGVudGlhbCBhY2Nlc3MuIgogICAgIDo6PSB7IHVzbURIS2V5TUlCR3JvdXBzIDMgfQogCi0KIEVORApkaWZmIC0tZ2l0IGEvbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0IGIvbWlicy9UUkFOU1BPUlQtQUREUkVTUy1NSUIudHh0CmluZGV4IDdkNDUwZmIuLjIyNzg4NmUgMTAwNjQ0Ci0tLSBhL21pYnMvVFJBTlNQT1JULUFERFJFU1MtTUlCLnR4dAorKysgYi9taWJzL1RSQU5TUE9SVC1BRERSRVNTLU1JQi50eHQKQEAgLTEzLDYgKzEzLDcgQEAKICAgICAgICAgIFRVIEJyYXVuc2Nod2VpZwogICAgICAgICAgQnVlbHRlbndlZyA3NC83NQogICAgICAgICAgMzgxMDYgQnJhdW5zY2h3ZWlnLCBHZXJtYW55CisKICAgICAgICAgIFBob25lOiArNDkgNTMxIDM5MS0zMjg5CiAgICAgICAgICBFTWFpbDogc2Nob2Vud0BpYnIuY3MudHUtYnMuZGUKIApAQCAtMzIsNyArMzMsNiBAQAogICAgICAgICAiSW5pdGlhbCB2ZXJzaW9uLCBwdWJsaXNoZWQgYXMgUkZDIDM0MTkuIgogICAgIDo6PSB7IG1pYi0yIDEwMCB9CiAKLQogdHJhbnNwb3J0RG9tYWlucyBPQkpFQ1QgSURFTlRJRklFUiA6Oj0geyB0cmFuc3BvcnRBZGRyZXNzTUlCIDEgfQogCiB0cmFuc3BvcnREb21haW5VZHBJcHY0IE9CSkVDVC1JREVOVElUWQpAQCAtMjA1LDYgKzIwNSw3IEBACiAgICAgICAgICB0Y3BJcHY0KDUpICAgICB0cmFuc3BvcnREb21haW5UY3BJcHY0CiAgICAgICAgICB0Y3BJcHY2KDYpICAgICB0cmFuc3BvcnREb21haW5UY3BJcHY2CiAgICAgICAgICB0Y3BJcHY0eig3KSAgICB0cmFuc3BvcnREb21haW5UY3BJcHY0egorCiAgICAgICAgICB0Y3BJcHY2eig4KSAgICB0cmFuc3BvcnREb21haW5UY3BJcHY2egogICAgICAgICAgc2N0cElwdjQoOSkgICAgdHJhbnNwb3J0RG9tYWluU2N0cElwdjQKICAgICAgICAgIHNjdHBJcHY2KDEwKSAgIHRyYW5zcG9ydERvbWFpblNjdHBJcHY2CkBAIC0yNTMsNiArMjU0LDcgQEAKICAgICAgICAgIEEgVHJhbnNwb3J0QWRkcmVzcyB2YWx1ZSBpcyBhbHdheXMgaW50ZXJwcmV0ZWQgd2l0aGluIHRoZQogICAgICAgICAgY29udGV4dCBvZiBhIFRyYW5zcG9ydEFkZHJlc3NUeXBlIG9yIFRyYW5zcG9ydERvbWFpbiB2YWx1ZS4KICAgICAgICAgIEV2ZXJ5IHVzYWdlIG9mIHRoZSBUcmFuc3BvcnRBZGRyZXNzIHRleHR1YWwgY29udmVudGlvbiBNVVNUCisKICAgICAgICAgIHNwZWNpZnkgdGhlIFRyYW5zcG9ydEFkZHJlc3NUeXBlIG9yIFRyYW5zcG9ydERvbWFpbiBvYmplY3QKICAgICAgICAgIHdoaWNoIHByb3ZpZGVzIHRoZSBjb250ZXh0LiBGdXJ0aGVybW9yZSwgTUlCIGF1dGhvcnMgU0hPVUxECiAgICAgICAgICBkZWZpbmUgYSBzZXBhcmF0ZSBUcmFuc3BvcnRBZGRyZXNzVHlwZSBvciBUcmFuc3BvcnREb21haW4KQEAgLTM0OSw2ICszNTEsNyBAQAogCiAgICAgICAgICBUaGlzIHRleHR1YWwgY29udmVudGlvbiBTSE9VTEQgTk9UIGJlIHVzZWQgZGlyZWN0bHkgaW4gb2JqZWN0CiAgICAgICAgICBkZWZpbml0aW9ucyBzaW5jZSBpdCByZXN0cmljdHMgYWRkcmVzc2VzIHRvIGEgc3BlY2lmaWMgZm9ybWF0LgorCiAgICAgICAgICBIb3dldmVyLCBpZiBpdCBpcyB1c2VkLCBpdCBNQVkgYmUgdXNlZCBlaXRoZXIgb24gaXRzIG93biBvcgogICAgICAgICAgaW4gY29uanVuY3Rpb24gd2l0aCBUcmFuc3BvcnRBZGRyZXNzVHlwZSBvciBUcmFuc3BvcnREb21haW4KICAgICAgICAgIGFzIGEgcGFpci4iCkBAIC0zOTcsNiArNDAwLDcgQEAKICAgICAgICAgIHRpbWUgb2YgdGhlIG1hbmFnZW1lbnQgb3BlcmF0aW9uKS4KIAogICAgICAgICAgVGhlIERFU0NSSVBUSU9OIGNsYXVzZSBvZiBUcmFuc3BvcnRBZGRyZXNzIG9iamVjdHMgdGhhdCBtYXkKKwogICAgICAgICAgaGF2ZSBUcmFuc3BvcnRBZGRyZXNzRG5zIHZhbHVlcyBtdXN0IGZ1bGx5IGRlc2NyaWJlIGhvdyAoYW5kCiAgICAgICAgICB3aGVuKSBzdWNoIG5hbWVzIGFyZSB0byBiZSByZXNvbHZlZCB0byBJUCBhZGRyZXNzZXMgYW5kIHZpY2UKICAgICAgICAgIHZlcnNhLgpkaWZmIC0tZ2l0IGEvbWlicy9UVU5ORUwtTUlCLnR4dCBiL21pYnMvVFVOTkVMLU1JQi50eHQKaW5kZXggNjE1ZmFhNi4uNWY5NTk2YiAxMDA2NDQKLS0tIGEvbWlicy9UVU5ORUwtTUlCLnR4dAorKysgYi9taWJzL1RVTk5FTC1NSUIudHh0CkBAIC0zNyw4ICszNyw2IEBACiAgICAgICAgICAgICB2ZXJzaW9uIG9mIHRoaXMgTUlCIG1vZHVsZSBpcyBwYXJ0IG9mIFJGQyA0MDg3OyAgc2VlCiAgICAgICAgICAgICB0aGUgUkZDIGl0c2VsZiBmb3IgZnVsbCBsZWdhbCBub3RpY2VzLiIKIAotCi0KICAgICBSRVZJU0lPTiAgICAgIjIwMDUwNTE2MDAwMFoiIC0tIE1heSAxNiwgMjAwNQogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiSVB2NC1zcGVjaWZpYyBvYmplY3RzIHdlcmUgZGVwcmVjYXRlZCwgaW5jbHVkaW5nCkBAIC04Nyw5ICs4NSw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJUaGUgKGNvbmNlcHR1YWwpIHRhYmxlIGNvbnRhaW5pbmcgaW5mb3JtYXRpb24gb24KICAgICAgICAgICAgIGNvbmZpZ3VyZWQgdHVubmVscy4iCi0KLQotCiAgICAgOjo9IHsgdHVubmVsIDEgfQogCiB0dW5uZWxJZkVudHJ5IE9CSkVDVC1UWVBFCkBAIC0xMzksOCArMTM0LDYgQEAKICAgICAgICAgICAgIChpLmUuLCB0aGUgZGVzdGluYXRpb24gYWRkcmVzcyB1c2VkIGluIHRoZSBvdXRlciBJUAogICAgICAgICAgICAgaGVhZGVyKSwgb3IgMC4wLjAuMCBpZiB1bmtub3duLCBvciBhbiBJUHY2IGFkZHJlc3MsIG9yCiAKLQotCiAgICAgICAgICAgICB0aGUgdHVubmVsIGlzIG5vdCBhIHBvaW50LXRvLXBvaW50IGxpbmsgKGUuZy4sIGlmIGl0CiAgICAgICAgICAgICBpcyBhIDZ0bzQgdHVubmVsKS4KIApAQCAtMTkwLDggKzE4Myw2IEBACiAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJUaGUgbWV0aG9kIHVzZWQgdG8gc2V0IHRoZSBoaWdoIDYgYml0cyAodGhlCiAKLQotCiAgICAgICAgICAgICBkaWZmZXJlbnRpYXRlZCBzZXJ2aWNlcyBjb2RlcG9pbnQpIG9mIHRoZSBJUHY0IFRPUyBvcgogICAgICAgICAgICAgSVB2NiBUcmFmZmljIENsYXNzIGluIHRoZSBvdXRlciBJUCBoZWFkZXIuICBBIHZhbHVlIG9mCiAgICAgICAgICAgICAtMSBpbmRpY2F0ZXMgdGhhdCB0aGUgYml0cyBhcmUgY29waWVkIGZyb20gdGhlCkBAIC0yNDEsOCArMjMyLDYgQEAKICAgICAgICAgICAgIChpLmUuLCB0aGUgc291cmNlIGFkZHJlc3MgdXNlZCBpbiB0aGUgb3V0ZXIgSVAKICAgICAgICAgICAgIGhlYWRlcikuICBJZiB0aGUgYWRkcmVzcyBpcyB1bmtub3duLCB0aGUgdmFsdWUgaXMKIAotCi0KICAgICAgICAgICAgIDAuMC4wLjAgZm9yIElQdjQgb3IgOjogZm9yIElQdjYuICBUaGUgdHlwZSBvZiB0aGlzCiAgICAgICAgICAgICBvYmplY3QgaXMgZ2l2ZW4gYnkgdHVubmVsSWZBZGRyZXNzVHlwZS4iCiAgICAgOjo9IHsgdHVubmVsSWZFbnRyeSA5IH0KQEAgLTI5MSw5ICsyODAsNiBAQAogICAgICAgICAgICAgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiB0dW5uZWxJbmV0Q29uZmlnVGFibGUuIgogICAgIDo6PSB7IHR1bm5lbCAyIH0KIAotCi0KLQogdHVubmVsQ29uZmlnRW50cnkgT0JKRUNULVRZUEUKICAgICBTWU5UQVggICAgIFR1bm5lbENvbmZpZ0VudHJ5CiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQpAQCAtMzQzLDggKzMyOSw2IEBACiAgICAgICAgICAgICBkZXByZWNhdGVkIGluIGZhdm9yIG9mIHR1bm5lbEluZXRDb25maWdSZW1vdGVBZGRyZXNzLiIKICAgICA6Oj0geyB0dW5uZWxDb25maWdFbnRyeSAyIH0KIAotCi0KIHR1bm5lbENvbmZpZ0VuY2Fwc01ldGhvZCBPQkpFQ1QtVFlQRQogICAgIFNZTlRBWCAgICAgSUFOQXR1bm5lbFR5cGUKICAgICBNQVgtQUNDRVNTIG5vdC1hY2Nlc3NpYmxlCkBAIC0zOTMsOSArMzc3LDYgQEAKIAogdHVubmVsQ29uZmlnU3RhdHVzIE9CSkVDVC1UWVBFCiAgICAgU1lOVEFYICAgICBSb3dTdGF0dXMKLQotCi0KICAgICBNQVgtQUNDRVNTIHJlYWQtY3JlYXRlCiAgICAgU1RBVFVTICAgICBkZXByZWNhdGVkCiAgICAgREVTQ1JJUFRJT04KQEAgLTQ0NCw5ICs0MjUsNiBAQAogICAgIE1BWC1BQ0NFU1Mgbm90LWFjY2Vzc2libGUKICAgICBTVEFUVVMgICAgIGN1cnJlbnQKICAgICBERVNDUklQVElPTgotCi0KLQogICAgICAgICAgICAgIlRoZSAoY29uY2VwdHVhbCkgdGFibGUgY29udGFpbmluZyBpbmZvcm1hdGlvbiBvbgogICAgICAgICAgICAgY29uZmlndXJlZCB0dW5uZWxzLiAgVGhpcyB0YWJsZSBjYW4gYmUgdXNlZCB0byBtYXAgYQogICAgICAgICAgICAgc2V0IG9mIHR1bm5lbCBlbmRwb2ludHMgdG8gdGhlIGFzc29jaWF0ZWQgaWZJbmRleApAQCAtNDk1LDkgKzQ3Myw2IEBACiB9CiAKIHR1bm5lbEluZXRDb25maWdBZGRyZXNzVHlwZSBPQkpFQ1QtVFlQRQotCi0KLQogICAgIFNZTlRBWCAgICAgSW5ldEFkZHJlc3NUeXBlCiAgICAgTUFYLUFDQ0VTUyBub3QtYWNjZXNzaWJsZQogICAgIFNUQVRVUyAgICAgY3VycmVudApAQCAtNTQ3LDggKzUyMiw2IEBACiAgICAgICAgICAgICBhbGxvdyBtdWx0aXBsZSBwYXJhbGxlbCB0dW5uZWxzLCB0aGUgbWFuYWdlciBpcwogICAgICAgICAgICAgcmVzcG9uc2libGUgZm9yIGNob29zaW5nIGFueSBJRCB3aGljaCBkb2VzIG5vdAogCi0KLQogICAgICAgICAgICAgY29uZmxpY3Qgd2l0aCBhbiBleGlzdGluZyByb3csIHN1Y2ggYXMgY2hvb3NpbmcgYQogICAgICAgICAgICAgcmFuZG9tIG51bWJlci4iCiAgICAgOjo9IHsgdHVubmVsSW5ldENvbmZpZ0VudHJ5IDUgfQpAQCAtNTk4LDggKzU3MSw2IEBACiAgICAgICAgICAgICBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgbWFubmVyLCBhbmQgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgcm93cyB3aWxsIGJlIGluc3RhbnRpYXRlZCBpbiB0aGUgaWZUYWJsZSBhbmQgdGhlCiAKLQotCiAgICAgICAgICAgICB0dW5uZWxJZlRhYmxlLiAgVGhlIHN0YXR1cyBvZiB0aGlzIHJvdyB3aWxsIGJlY29tZQogICAgICAgICAgICAgYWN0aXZlIGFzIHNvb24gYXMgdGhlIGFnZW50IGFzc2lnbnMgdGhlIGludGVyZmFjZQogICAgICAgICAgICAgaW5kZXgsIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGUgaW50ZXJmYWNlIGlzCkBAIC02NDgsOSArNjE5LDYgQEAKIAogICAgICAgICBPQkpFQ1QgICAgICB0dW5uZWxJZlRPUwogICAgICAgICBNSU4tQUNDRVNTICByZWFkLW9ubHkKLQotCi0KICAgICAgICAgREVTQ1JJUFRJT04KICAgICAgICAgICAgICJXcml0ZSBhY2Nlc3MgaXMgbm90IHJlcXVpcmVkLiIKIApAQCAtNzAwLDggKzY2OCw2IEBACiAgICAgICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiV3JpdGUgYWNjZXNzIGlzIG5vdCByZXF1aXJlZC4iCiAKLQotCiAgICAgICAgIE9CSkVDVCAgICAgIHR1bm5lbElmQWRkcmVzc1R5cGUKICAgICAgICAgU1lOVEFYICAgICAgSW5ldEFkZHJlc3NUeXBlIHsgaXB2NCgxKSwgaXB2NigyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXB2NHooMyksIGlwdjZ6KDQpIH0KQEAgLTc1MSw4ICs3MTcsNiBAQAogICAgIERFU0NSSVBUSU9OCiAgICAgICAgICAgICAiQSBjb2xsZWN0aW9uIG9mIG9iamVjdHMgdG8gc3VwcG9ydCBiYXNpYyBtYW5hZ2VtZW50CiAKLQotCiAgICAgICAgICAgICBvZiBJUHY0IFR1bm5lbHMuICBTaW5jZSB0aGlzIGdyb3VwIGNhbm5vdCBzdXBwb3J0CiAgICAgICAgICAgICBJUHY2LCBpdCBpcyBkZXByZWNhdGVkIGluIGZhdm9yIG9mCiAgICAgICAgICAgICB0dW5uZWxNSUJJbmV0R3JvdXAuIgpkaWZmIC0tZ2l0IGEvbWlicy9VQ0QtU05NUC1NSUIudHh0IGIvbWlicy9VQ0QtU05NUC1NSUIudHh0CmluZGV4IDFjNjU4ZTAuLjA2OTcxMjQgMTAwNjQ0Ci0tLSBhL21pYnMvVUNELVNOTVAtTUlCLnR4dAorKysgYi9taWJzL1VDRC1TTk1QLU1JQi50eHQKQEAgLTMwLDE0ICszMCwxNCBAQAogCiBJTVBPUlRTCiAgICAgT0JKRUNULVRZUEUsIE5PVElGSUNBVElPTi1UWVBFLCBNT0RVTEUtSURFTlRJVFksCi0gICAgSW50ZWdlcjMyLCBPcGFxdWUsIGVudGVycHJpc2VzLCBDb3VudGVyMzIKKyAgICBJbnRlZ2VyMzIsIE9wYXF1ZSwgZW50ZXJwcmlzZXMsIENvdW50ZXIzMiwgVW5zaWduZWQzMgogICAgICAgICBGUk9NIFNOTVB2Mi1TTUkKIAogICAgIFRFWFRVQUwtQ09OVkVOVElPTiwgRGlzcGxheVN0cmluZywgVHJ1dGhWYWx1ZQogCUZST00gU05NUHYyLVRDOwogCiB1Y2RhdmlzIE1PRFVMRS1JREVOVElUWQotICAgIExBU1QtVVBEQVRFRCAiMjAwNjExMjIwMDAwWiIKKyAgICBMQVNULVVQREFURUQgIjIwMDkwMTE5MDAwMFoiCiAgICAgT1JHQU5JWkFUSU9OICJVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEsIERhdmlzIgogICAgIENPTlRBQ1QtSU5GTyAgICAKIAkiVGhpcyBtaWIgaXMgbm8gbG9uZ2VyIGJlaW5nIG1haW50YWluZWQgYnkgdGhlIFVuaXZlcnNpdHkgb2YKQEAgLTU1LDYgKzU1LDEwIEBACiAgICAgREVTQ1JJUFRJT04KIAkiVGhpcyBmaWxlIGRlZmluZXMgdGhlIHByaXZhdGUgVUNEIFNOTVAgTUlCIGV4dGVuc2lvbnMuIgogCisgICAgUkVWSVNJT04JICIyMDA5MDExOTAwMDBaIgorICAgIERFU0NSSVBUSU9OCisJIk5ldyA2NC1iaXQgb2JqZWN0cyBmb3IgbW9uaXRvcmluZyBsYXJnZSBkaXNrIHVzYWdlIgorCiAgICAgUkVWSVNJT04JICIyMDA2MTEyMjAwMDBaIgogICAgIERFU0NSSVBUSU9OCiAJIkNsYXJpZnkgYmVoYXZpb3VyIG9mIG9iamVjdHMgaW4gdGhlIG1lbW9yeSAmIHN5c3RlbVN0YXRzIGdyb3VwcwpAQCAtNjcyLDcgKzY3NiwxMyBAQAogICAgIGRza1BlcmNlbnQJCUludGVnZXIzMiwKICAgICBkc2tQZXJjZW50Tm9kZQlJbnRlZ2VyMzIsCiAgICAgZHNrRXJyb3JGbGFnCVVDREVycm9yRmxhZywKLSAgICBkc2tFcnJvck1zZwkJRGlzcGxheVN0cmluZworICAgIGRza0Vycm9yTXNnCQlEaXNwbGF5U3RyaW5nLAorICAgIGRza1RvdGFsTG93CQlVbnNpZ25lZDMyLAorICAgIGRza1RvdGFsSGlnaAlVbnNpZ25lZDMyLAorICAgIGRza0F2YWlsTG93CQlVbnNpZ25lZDMyLAorICAgIGRza0F2YWlsSGlnaAlVbnNpZ25lZDMyLAorICAgIGRza1VzZWRMb3cJCVVuc2lnbmVkMzIsCisgICAgZHNrVXNlZEhpZ2gJCVVuc2lnbmVkMzIKIH0KIAogZHNrSW5kZXggT0JKRUNULVRZUEUKQEAgLTc2NSw2ICs3NzUsNjAgQEAKIAkiUGVyY2VudGFnZSBvZiBpbm9kZXMgdXNlZCBvbiBkaXNrIgogICAgIDo6PSB7IGRza0VudHJ5IDEwIH0gCiAKK2Rza1RvdGFsTG93IE9CSkVDVC1UWVBFCisgICAgU1lOVEFYCVVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTCXJlYWQtb25seQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04gIAorCSJUb3RhbCBzaXplIG9mIHRoZSBkaXNrL3BhcnRpb24gKGtCeXRlcykuCisJVG9nZXRoZXIgd2l0aCBkc2tUb3RhbEhpZ2ggY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTEgfQorCitkc2tUb3RhbEhpZ2ggT0JKRUNULVRZUEUKKyAgICBTWU5UQVgJVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MJcmVhZC1vbmx5CisgICAgU1RBVFVTCWN1cnJlbnQKKyAgICBERVNDUklQVElPTiAgCisJIlRvdGFsIHNpemUgb2YgdGhlIGRpc2svcGFydGlvbiAoa0J5dGVzKS4KKwlUb2dldGhlciB3aXRoIGRza1RvdGFsTG93IGNvbXBvc2VzIDY0LWJpdCBudW1iZXIuIgorICAgIDo6PSB7IGRza0VudHJ5IDEyIH0KKworZHNrQXZhaWxMb3cgT0JKRUNULVRZUEUKKyAgICBTWU5UQVgJVW5zaWduZWQzMgorICAgIE1BWC1BQ0NFU1MJcmVhZC1vbmx5CisgICAgU1RBVFVTCWN1cnJlbnQKKyAgICBERVNDUklQVElPTiAgCisJIkF2YWlsYWJsZSBzcGFjZSBvbiB0aGUgZGlzayAoa0J5dGVzKS4KKwlUb2dldGhlciB3aXRoIGRza0F2YWlsSGlnaCBjb21wb3NlcyA2NC1iaXQgbnVtYmVyLiIKKyAgICA6Oj0geyBkc2tFbnRyeSAxMyB9CisKK2Rza0F2YWlsSGlnaCBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWAlVbnNpZ25lZDMyCisgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKKyAgICBTVEFUVVMJY3VycmVudAorICAgIERFU0NSSVBUSU9OICAKKwkiQXZhaWxhYmxlIHNwYWNlIG9uIHRoZSBkaXNrIChrQnl0ZXMpLgorCVRvZ2V0aGVyIHdpdGggZHNrQXZhaWxMb3cgY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTQgfQorCitkc2tVc2VkTG93IE9CSkVDVC1UWVBFCisgICAgU1lOVEFYCVVuc2lnbmVkMzIKKyAgICBNQVgtQUNDRVNTCXJlYWQtb25seQorICAgIFNUQVRVUwljdXJyZW50CisgICAgREVTQ1JJUFRJT04gIAorCSJVc2VkIHNwYWNlIG9uIHRoZSBkaXNrIChrQnl0ZXMpLgorCVRvZ2V0aGVyIHdpdGggZHNrVXNlZEhpZ2ggY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTUgfQorCitkc2tVc2VkSGlnaCBPQkpFQ1QtVFlQRQorICAgIFNZTlRBWAlVbnNpZ25lZDMyCisgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKKyAgICBTVEFUVVMJY3VycmVudAorICAgIERFU0NSSVBUSU9OICAKKwkiVXNlZCBzcGFjZSBvbiB0aGUgZGlzayAoa0J5dGVzKS4KKwlUb2dldGhlciB3aXRoIGRza1VzZWRMb3cgY29tcG9zZXMgNjQtYml0IG51bWJlci4iCisgICAgOjo9IHsgZHNrRW50cnkgMTYgfQorCiBkc2tFcnJvckZsYWcgT0JKRUNULVRZUEUKICAgICBTWU5UQVgJVUNERXJyb3JGbGFnCiAgICAgTUFYLUFDQ0VTUwlyZWFkLW9ubHkKZGlmZiAtLWdpdCBhL21pYnMvaWFuYWxpc3QgYi9taWJzL2lhbmFsaXN0CmluZGV4IGMzZjA1NzUuLmYyMzQ1ZjEgMTAwNjQ0Ci0tLSBhL21pYnMvaWFuYWxpc3QKKysrIGIvbWlicy9pYW5hbGlzdApAQCAtMSw0ICsxLDQgQEAKLSMgdXBkYXRlZCAyMDA1LTAxLTA2CisjIHVwZGF0ZWQgMjAwNy0wNS0wMwogaWFuYWlmdHlwZS1taWIJCQlJQU5BaWZUeXBlLU1JQgogaWFuYWxhbmd1YWdlLW1pYgkJSUFOQS1MQU5HVUFHRS1NSUIKIGlhbmFhZGRyZXNzZmFtaWx5bnVtYmVycy1taWIJSUFOQS1BRERSRVNTLUZBTUlMWS1OVU1CRVJTLU1JQgpAQCAtOSwzICs5LDUgQEAKIGlhbmFwcmludGVyLW1pYgkJCUlBTkEtUFJJTlRFUi1NSUIKIGlhbmFmaW5pc2hlci1taWIJCUlBTkEtRklOSVNIRVItTUlCCiBpYW5haXR1YWxhcm10Yy1taWIJCUlBTkEtSVRVLUFMQVJNLVRDLU1JQgoraWFuYW1hdS1taWIJCQlJQU5BLU1BVS1NSUIKK2lhbmFnbXBsc3RjLW1pYgkJCUlBTkEtR01QTFMtVEMtTUlCCmRpZmYgLS1naXQgYS9taWJzL3JmY2xpc3QgYi9taWJzL3JmY2xpc3QKaW5kZXggNGQwMzQzNC4uYTQ2NTljMiAxMDA2NDQKLS0tIGEvbWlicy9yZmNsaXN0CisrKyBiL21pYnMvcmZjbGlzdApAQCAtMSw0ICsxLDQgQEAKLSMgdXBkYXRlZCAyMDA1LTAzLTE0CisjIHVwZGF0ZWQgMjAwOS0wNy0yNwogMTE1NQlSRkMxMTU1LVNNSQogMTIxMwlSRkMxMjEzLU1JQgogMTIyNwlTTVVYLU1JQgpAQCAtMTksNyArMTksNiBAQAogMTYxMQlETlMtU0VSVkVSLU1JQgogMTYxMglETlMtUkVTT0xWRVItTUlCCiAxNjI4CVVQUy1NSUIKLTE2NTcJQkdQNC1NSUIKIDE2NTgJQ0hBUkFDVEVSLU1JQgogMTY1OQlSUy0yMzItTUlCCiAxNjYwCVBBUkFMTEVMLU1JQgpAQCAtMzYsNyArMzUsNiBAQAogMTg1MAlPU1BGLU1JQjpPU1BGLVRSQVAtTUlCCiAyMDA2CU1JUC1NSUIKIDIwMjAJRE9UMTItSUYtTUlCCi0yMDIxCVJNT04yLU1JQgogMjAyNAlETFNXLU1JQgogMjA1MQlBUFBDLU1JQgogMjEwOAlTTk1QLVJFUEVBVEVSLU1JQgpAQCAtNzcsMTUgKzc1LDkgQEAKIDI1OTQJV1dXLU1JQgogMjYwNQlESVJFQ1RPUlktU0VSVkVSLU1JQgogMjYxMwlTTU9OLU1JQgotMjYxOAlSQURJVVMtQVVUSC1DTElFTlQtTUlCCi0yNjE5CVJBRElVUy1BVVRILVNFUlZFUi1NSUIKLTI2MjAJUkFESVVTLUFDQy1DTElFTlQtTUlCCi0yNjIxCVJBRElVUy1BQ0MtU0VSVkVSLU1JQgogMjY2MglBRFNMLVRDLU1JQjpBRFNMLUxJTkUtTUlCCiAyNjY2CUVUSEVSLUNISVBTRVQtTUlCCi0yNjY5CURPQ1MtQ0FCTEUtREVWSUNFLU1JQgogMjY3MAlET0NTLUlGLU1JQgotMjY3NAlQLUJSSURHRS1NSUI6US1CUklER0UtTUlCCiAyNjc3CU5IUlAtTUlCCiAyNzA3CUpvYi1Nb25pdG9yaW5nLU1JQgogMjcyMAlGTE9XLU1FVEVSLU1JQgpAQCAtMTAyLDcgKzk0LDYgQEAKIDI4NjMJSUYtTUlCCiAyODY0CUlGLUlOVkVSVEVELVNUQUNLLU1JQgogMjkyMglQVE9QTy1NSUIKLTI5MjUJRElTTUFOLVBJTkctTUlCOkRJU01BTi1UUkFDRVJPVVRFLU1JQjpESVNNQU4tTlNMT09LVVAtTUlCCiAyOTMyCUlQTVJPVVRFLVNURC1NSUIKIDI5MzMJSUdNUC1TVEQtTUlCCiAyOTM0CVBJTS1NSUIKQEAgLTE0Nyw3ICsxMzgsNiBAQAogMzYwNglBVE0yLU1JQgogMzYyMQlQT1dFUi1FVEhFUk5FVC1NSUIKIDM2MzUJRXRoZXJMaWtlLU1JQgotMzYzNglNQVUtTUlCCiAzNjM3CUVUSEVSLVdJUwogMzcwNQlIQy1QZXJmSGlzdC1UQy1NSUIKIDM3MjgJVkRTTC1MSU5FLU1JQgpAQCAtMTg0LDUgKzE3NCw3MiBAQAogNDIyMAlURS1MSU5LLVNURC1NSUIKIDQyNjUJVlBOLVRDLVNURC1NSUIKIDQyNjgJRU5USVRZLVNUQVRFLVRDLU1JQjpFTlRJVFktU1RBVEUtTUlCCis0MjczCUJHUDQtTUlCCiA0MjkyCUlQLUZPUldBUkQtTUlCCiA0MjkzCUlQLU1JQgorNDI5NQlNT0JJTEVJUFY2LU1JQgorNDMxOAlSU1RQLU1JQgorNDMxOQlIRFNMMi1TSERTTC1MSU5FLU1JQgorNDMyMwlET0NTLUlFVEYtUU9TLU1JQgorNDM2MwlQLUJSSURHRS1NSUI6US1CUklER0UtTUlCCis0MzY4CU1QTFMtTEMtQVRNLVNURC1NSUI6TVBMUy1MQy1GUi1TVEQtTUlCCis0MzY5CUlGQ1AtTUdNVC1NSUIKKzQzODIJTVBMUy1MM1ZQTi1TVEQtTUlCCis0NDA0CUZDSVAtTUdNVC1NSUIKKzQ0MzgJVDExLUZDLU5BTUUtU0VSVkVSLU1JQgorNDQzOQlUMTEtVEMtTUlCOlQxMS1GQy1GQUJSSUMtQUREUi1NR1ItTUlCCis0NDQ0CUlTSVMtTUlCCis0NDU1CVNDU0ktTUlCCis0NDk4CUFHR1JFR0FURS1NSUI6VElNRS1BR0dSRUdBVEUtTUlCCis0NTAyCVJNT04yLU1JQgorNDU0NAlJU0NTSS1NSUIKKzQ1NDUJSVBTLUFVVEgtTUlCCis0NTYwCURJU01BTi1QSU5HLU1JQjpESVNNQU4tVFJBQ0VST1VURS1NSUI6RElTTUFOLU5TTE9PS1VQLU1JQgorNDYyNAlNU0RQLU1JQgorNDYyNQlUMTEtRkMtUk9VVEUtTUlCCis0NjI2CVQxMS1GQy1GU1BGLU1JQgorNDYzMQlMTVAtTUlCCis0NjM5CURPQ1MtQ0FCTEUtREVWSUNFLU1JQgorNDY2OAlSQURJVVMtQVVUSC1DTElFTlQtTUlCCis0NjY5CVJBRElVUy1BVVRILVNFUlZFUi1NSUIKKzQ2NzAJUkFESVVTLUFDQy1DTElFTlQtTUlCCis0NjcxCVJBRElVUy1BQ0MtU0VSVkVSLU1JQgorNDY3MglSQURJVVMtRFlOQVVUSC1DTElFTlQtTUlCCis0NjczCVJBRElVUy1EWU5BVVRILVNFUlZFUi1NSUIKKzQ2ODIJUEtUQy1JRVRGLU1UQS1NSUIKKzQ3MDYJQURTTDItTElORS1UQy1NSUI6QURTTDItTElORS1NSUIKKzQ3MTEJUkFRTU9OLU1JQgorNDc0NwlUMTEtRkMtVklSVFVBTC1GQUJSSUMtTUlCCis0NzgwCVNJUC1UQy1NSUI6U0lQLUNPTU1PTi1NSUI6U0lQLVVBLU1JQjpTSVAtU0VSVkVSLU1JQgorNDc4OQlTTk1QLUlFRUU4MDItVE0tTUlCCis0ODAxCUdNUExTLVRDLVNURC1NSUIKKzQ4MDIJR01QTFMtVEUtU1RELU1JQgorNDgwMwlHTVBMUy1MU1ItU1RELU1JQjpHTVBMUy1MQUJFTC1TVEQtTUlCCis0ODM2CU1BVS1NSUIKKzQ4MzcJRE9UMy1FUE9OLU1JQgorNDg3OAlET1QzLU9BTS1NSUIKKzQ4OTgJVENQLUVTVEFUUy1NSUIKKzQ5MzUJVDExLUZDLUZBQlJJQy1DT05GSUctU0VSVkVSLU1JQgorNDkzNglUMTEtRkMtRkFCUklDLUxPQ0stTUlCOlQxMS1GQy1aT05FLVNFUlZFUi1NSUIKKzQ5MzkJSVNOUy1NSUIKKzQ5ODMJVDExLUZDLVJTQ04tTUlCCis1MDE3CVVSSS1UQy1NSUIKKzUwNjAJUElNLVNURC1NSUIKKzUwNjYJSUYtQ0FQLVNUQUNLLU1JQjpFRk0tQ1UtTUlCCis1MDk3CVVEUExJVEUtTUlCCis1MDk4CVBLVEMtSUVURi1TSUctTUlCCis1MTMxCUxBTkdUQUctVEMtTUlCCis1MTMyCUlQTUNBU1QtTUlCCis1MTkwCU1JRENPTS1NSUIKKzUyNDAJUElNLUJTUi1NSUIKKzUzMjQJVDExLUZDLVNQLVRDLU1JQjpUMTEtRkMtU1AtQVVUSEVOVElDQVRJT04tTUlCOlQxMS1GQy1TUC1aT05JTkctTUlCOlQxMS1GQy1TUC1QT0xJQ1ktTUlCOlQxMS1GQy1TUC1TQS1NSUIKKzU0MjcJU1lTTE9HLVRDLU1JQgorNTQyOAlQS1RDLUlFVEYtRVZFTlQtTUlCCis1NDg4CU5FTU8tTUlCCis1NTE5CU1HTUQtU1RELU1JQgorNTUyNQlSU0VSUE9PTC1NSUIKKzU1NDIJUFctVEMtU1RELU1JQgorNTYwMQlQVy1TVEQtTUlCOklBTkEtUFdFMy1NSUIKKzU2MDIJUFctTVBMUy1TVEQtTUlCCis1NjAzCVBXLUVORVQtU1RELU1JQgorNTYwNQlQVy1BVE0tTUlCCmRpZmYgLS1naXQgYS9taWJzL3NtaXN0cmlwIGIvbWlicy9zbWlzdHJpcAppbmRleCBmNTg5OTVjLi5iNWZjOGYyIDEwMDc1NQotLS0gYS9taWJzL3NtaXN0cmlwCisrKyBiL21pYnMvc21pc3RyaXAKQEAgLTY2LDcgKzY2LDcgQEAKICAgICB9CiAKICAgICAjIHN0YXJ0IG9mIG1vZHVsZQotICAgIC9eWyBcdF0qW0EtWmEtejAtOS1dKiAqREVGSU5JVElPTlMgKjo6PSAqQkVHSU4vIHsKKyAgICAvXlsgXHRdKltBLVphLXowLTktXSogKkRFRklOSVRJT05TKCArSU1QTElDSVQgK1RBR1MpPyAqOjo9ICpCRUdJTi8gewogCW1vZHVsZSA9ICQxCiAJY29sbGVjdCA9IDEKIAltYWNybyA9IDAKZGlmZiAtLWdpdCBhL25ldC1zbm1wLWNvbmZpZy5pbiBiL25ldC1zbm1wLWNvbmZpZy5pbgppbmRleCAzMzBmNjYwLi42NTI4MzJkIDEwMDY0NAotLS0gYS9uZXQtc25tcC1jb25maWcuaW4KKysrIGIvbmV0LXNubXAtY29uZmlnLmluCkBAIC0yNywxMCArMjcsMjUgQEAKICAgICAgIGZpCiB9CiAKKyMgdXNhZ2U6IGluZGV4IG4gYXJndW1lbnRzCisjIGVmZmVjdDogcmV0dXJucyB0aGUgKG4rMSl0aCBhcmd1bWVudAoraW5kZXgoKQoreworICAgIGV2YWwgZWNobyBcJGBleHByICQxICsgMWAKK30KKworIyB1c2FnZTogY291bnQgYXJndW1lbnRzCisjIGVmZmVjdDogcmV0dXJucyB0aGUgbnVtYmVyIG9mIGFyZ3VtZW50cworY291bnQoKQoreworICAgIGVjaG8gJCMKK30KKwogcHJlZml4PUBwcmVmaXhACiBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACiBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAogbGliZGlyPUBsaWJkaXJACitkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACiBOU0NfTERGTEFHUz0iQExERkxBR1NAIgogCiBOU0NfTElCUz0iQExJQlNAIgpAQCAtMTcwLDcgKzE4NSw3IEBACiAgICAgICBlY2hvICROU0NfTERGTEFHUyAkTlNDX0xJQkRJUiAkTlNDX1NOTVBMSUJTICROU0NfTElCUwogICAgICAgOzsKICAgICAtLW5ldHNubXAtbGlicykKLSAgICAgIGVjaG8gJE5TQ19MSUJESVIgLWxuZXRzbm1wCisgICAgICBlY2hvICROU0NfTElCRElSICROU0NfQkFTRV9TTk1QX0xJQlMKICAgICAgIDs7CiAgICAgLS1leHRlcm5hbC1saWJzKQogICAgICAgZWNobyAkTlNDX0xERkxBR1MgJE5TQ19MTkVUU05NUExJQlMgJE5TQ19MSUJTCkBAIC0yMDcsMTI2ICsyMjIsMTAgQEAKICAgICAgIDs7CiAgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogICAgIC0tY3JlYXRlLXNubXB2My11c2VyKQotICAgICAgaWYgQFBTQ01EQCB8IGVncmVwICcgc25tcGQgKiQnID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCi0gICAgICAgICBlY2hvICJBcHBhcmVudGx5IGF0IGxlYXN0IG9uZSBzbm1wZCBkZW1vbiBpcyBhbHJlYWR5IHJ1bm5pbmcuIgotICAgICAgICAgZWNobyAiWW91IG11c3Qgc3RvcCB0aGVtIGluIG9yZGVyIHRvIHVzZSB0aGlzIGNvbW1hbmQuIgotICAgICAgICAgZXhpdCAxCi0gICAgICBmaQotCi0gICAgICBBYWxnb3JpdGhtPSJNRDUiCi0gICAgICBYYWxnb3JpdGhtPSJERVMiCi0gICAgICB0b2tlbj1yd3VzZXIKKyAgICAgIGRvbmU9MQogICAgICAgc2hpZnQKLSAgICAgIHNoaWZ0ZWQ9MQotICAgICAgd2hpbGUgdGVzdCAieCRkb25lIiA9ICJ4IiAtYSAieCQxIiAhPSAieCIgOyBkbwotCWNhc2UgJDEgaW4KLQkgICAgLUF8LWEpCi0JCXNoaWZ0Ci0JCWlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCi0JCSAgICBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IGFuIGF1dGhlbnRpY2F0aW9uIGFsZ29yaXRobSBvciBwYXNzIHBocmFzZSIKLQkJICAgIGV4aXQgMQotCQlmaQotCSAgICAgICAgY2FzZSAkMSBpbgotICAgICAgICAgICAgICAgIE1ENXxTSEEpCi0JCSAgICBBYWxnb3JpdGhtPSQxCi0JCSAgICBzaGlmdAotCQkgICAgOzsKLSAgICAgICAgICAgICAgICBtZDV8c2hhKQotCQkgICAgQWFsZ29yaXRobT1gZWNobyAkMSB8IHRyIGEteiBBLVpgCi0JCSAgICBzaGlmdAotCQkgICAgOzsKLSAgICAgICAgICAgICAgICAqKQotCQkgICAgYXBhc3NwaHJhc2U9JDEKLQkJICAgIHNoaWZ0Ci0JCSAgICA7OwotCQllc2FjCi0JCTs7Ci0JICAgIC1YfC14KQotCQlzaGlmdAotCQlpZiB0ZXN0ICJ4JDEiID0gIngiIDsgdGhlbgotCQkgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhbiBlbmNyeXB0aW9uIGFsZ29yaXRobSBvciBwYXNzIHBocmFzZSIKLQkJICAgIGV4aXQgMQotCQlmaQotCSAgICAgICAgY2FzZSAkMSBpbgotICAgICAgICAgICAgICAgIERFU3xBRVN8QUVTMTI4KQotCQkgICAgWGFsZ29yaXRobT0kMQotCQkgICAgc2hpZnQKLQkJICAgIDs7Ci0gICAgICAgICAgICAgICAgZGVzfGFlc3xhZXMxMjgpCi0JCSAgICBYYWxnb3JpdGhtPWBlY2hvICQxIHwgdHIgYS16IEEtWmAKLQkJICAgIHNoaWZ0Ci0JCSAgICA7OwotICAgICAgICAgICAgICAgICopCi0JCSAgICB4cGFzc3BocmFzZT0kMQotCQkgICAgc2hpZnQKLQkJICAgIDs7Ci0JCWVzYWMKLQkJOzsKLQkgICAgLXJvKQotCSAgICAgICAgdG9rZW49InJvdXNlciIKLQkJc2hpZnQKLQkJOzsKLSAJICAgIC0qKQotCQllY2hvICJ1bmtub3duIHN1Ym9wdGlvbiB0byAtLWNyZWF0ZS1zbm1wdjMtdXNlcjogJDEiCi0JCWV4aXQgMQotCQk7OwotCSAgICAqKQotCSAgICAgICAgZG9uZT0xCi0JCTs7Ci0JZXNhYwotICAgICAgZG9uZQotICAgICAgCi0gICAgICBpZiB0ZXN0ICJ4JDEiID0gIngiIDsgdGhlbgotICAgICAgICAgIHByb21wdD15ZXMKLQkgIGVjaG8gIkVudGVyIGEgU05NUHYzIHVzZXIgbmFtZSB0byBjcmVhdGU6ICIKLQkgIHJlYWQgdXNlcgotICAgICAgZWxzZQotICAgICAgICAgIHVzZXI9JDEKLSAgICAgICAgICBzaGlmdAotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIngkdXNlciIgPSAieCIgOyB0aGVuCi0gICAgICAgICAgZWNobyAiWW91IG11c3Qgc3BlY2lmeSBhIHVzZXIgbmFtZSIKLQkgIGV4aXQgMQotICAgICAgZmkKLQotICAgICAgaWYgdGVzdCAieCRhcGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCi0gICAgICAgICAgcHJvbXB0PXllcwotCSAgZWNobyAiRW50ZXIgYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2U6ICIKLQkgIHJlYWQgYXBhc3NwaHJhc2UKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICJ4JGFwYXNzcGhyYXNlIiA9ICJ4IiA7IHRoZW4KLSAgICAgICAgICBlY2hvICJZb3UgbXVzdCBzcGVjaWZ5IGFuIGF1dGhlbnRpY2F0aW9uIHBhc3MtcGhyYXNlIgotCSAgZXhpdCAxCi0gICAgICBmaQotCi0gICAgICBpZiB0ZXN0ICJ4JHByb21wdCIgPSAieHllcyIgLWEgIngkeHBhc3NwaHJhc2UiID0gIngiIDsgdGhlbgotCSAgZWNobyAiRW50ZXIgZW5jcnlwdGlvbiBwYXNzLXBocmFzZTogIgotCSAgZWNobyAiICBbcHJlc3MgcmV0dXJuIHRvIHJldXNlIHRoZSBhdXRoZW50aWNhdGlvbiBwYXNzLXBocmFzZV0iCi0JICByZWFkIHhwYXNzcGhyYXNlCi0gICAgICBmaQotCi0gICAgICBvdXRkaXI9IkBQRVJTSVNURU5UX0RJUkVDVE9SWUAiCi0gICAgICBvdXRmaWxlPSIkb3V0ZGlyL3NubXBkLmNvbmYiCi0gICAgICBsaW5lPSJjcmVhdGVVc2VyICR1c2VyICRBYWxnb3JpdGhtIFwiJGFwYXNzcGhyYXNlXCIgJFhhbGdvcml0aG0gJHhwYXNzcGhyYXNlIgotICAgICAgZWNobyAiYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byAkb3V0ZmlsZToiCi0gICAgICBlY2hvICIgICIgJGxpbmUKLSAgICAgICMgaW4gY2FzZSBpdCBoYXNuJ3QgZXZlciBiZWVuIHN0YXJ0ZWQgeWV0LCBzdGFydCBpdC4KLSAgICAgIGlmIHRlc3QgISAtZCAkb3V0ZGlyIDsgdGhlbgotICAgICAgICAgIG1rZGlyICRvdXRkaXIKLSAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICEgLWQgJG91dGZpbGUgOyB0aGVuCi0gICAgICAgICAgdG91Y2ggJG91dGZpbGUKLSAgICAgIGZpCi0gICAgICBlY2hvICRsaW5lID4+ICRvdXRmaWxlCi0KLSAgICAgIG91dGZpbGU9IkBkYXRhZGlyQC9zbm1wL3NubXBkLmNvbmYiCi0gICAgICBsaW5lPSIkdG9rZW4gJHVzZXIiCi0gICAgICBlY2hvICJhZGRpbmcgdGhlIGZvbGxvd2luZyBsaW5lIHRvICRvdXRmaWxlOiIKLSAgICAgIGVjaG8gIiAgIiAkbGluZQotICAgICAgaWYgdGVzdCAhIC1kICRvdXRmaWxlIDsgdGhlbgotICAgICAgICAgIHRvdWNoICRvdXRmaWxlCi0gICAgICBmaQotICAgICAgZWNobyAkbGluZSA+PiAkb3V0ZmlsZQorICAgICAgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIgJCoKKyAgICAgIGV4aXQgJD8KICAgICAgIDs7CiAKICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0zNzgsNyArMjc3LDcgQEAKIAllY2hvICJBY2suICBDYW4ndCBjcmVhdGUgJHRtcGZpbGU6IGFscmVhZHkgZXhpc3RzIgogCWV4aXQgMQogICAgICAgZmkKLSAgICAgIGVjaG8gImdlbmVyYXRpbmcgdGhlIHRtcG9yYXJ5IGNvZGUgZmlsZTogJHRtcGZpbGUiCisgICAgICBlY2hvICJnZW5lcmF0aW5nIHRoZSB0ZW1wb3JhcnkgY29kZSBmaWxlOiAkdG1wZmlsZSIKICAgICAgIHJtIC1mICR0bXBmaWxlCiAgICAgICBjYXQgPiAkdG1wZmlsZSA8PEVPRgogLyogZ2VuZXJhdGVkIGZyb20gbmV0LXNubXAtY29uZmlnICovCkBAIC00MjUsNiArMzI0LDcgQEAKIAogICAgICAgY2F0ID4+ICR0bXBmaWxlIDw8RU9GCiBjb25zdCBjaGFyICphcHBfbmFtZSA9ICIkb3V0bmFtZSI7CitzdGF0aWMgaW50IHJlY29uZmlnID0gMDsKIAogZXh0ZXJuIGludCBuZXRzbm1wX3J1bm5pbmc7CiAKQEAgLTQzOSw2ICszMzksMTUgQEAKICAgICBuZXRzbm1wX3J1bm5pbmcgPSAwOwogfQogCisjaWZkZWYgU0lHSFVQCitSRVRTSUdUWVBFCitodXBfaGFuZGxlcihpbnQgc2lnKQoreworICAgIHJlY29uZmlnID0gMTsKKyAgICBzaWduYWwoU0lHSFVQLCBodXBfaGFuZGxlcik7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQKIHVzYWdlKGNvbnN0IGNoYXIgKnByb2cpCiB7CkBAIC02MTUsMTAgKzUyNCw5IEBACiAgICAgICBpZiBncmVwICJpbml0XyRuYW1lIiAkaSA7IHRoZW4KICAgICAgICAgZWNobyAiICBpbml0XyR7bmFtZX0oKTsiID4+ICR0bXBmaWxlCiAgICAgICBmaQotICAgICAgc2hpZnQKICAgICBkb25lCiAKLSAgICAjIGZpbmlzaCBmaWxlCisgICAgIyBoYW5kbGUgdGhlIG1haW4gbG9vcAogICAgIGNhdCA+PiAkdG1wZmlsZSA8PEVPRgogCiAgIC8qICRvdXRuYW1lIHdpbGwgYmUgdXNlZCB0byByZWFkICRvdXRuYW1lLmNvbmYgZmlsZXMuICovCkBAIC02MzgsMTggKzU0Niw0NyBAQAogI2lmZGVmIFNJR0lOVAogICBzaWduYWwoU0lHSU5ULCBzdG9wX3NlcnZlcik7CiAjZW5kaWYKKyNpZmRlZiBTSUdIVVAKKyAgc2lnbmFsKFNJR0hVUCwgaHVwX2hhbmRsZXIpOworI2VuZGlmCiAKICAgLyogbWFpbiBsb29wIGhlcmUuLi4gKi8KICAgd2hpbGUobmV0c25tcF9ydW5uaW5nKSB7CisgICAgaWYgKHJlY29uZmlnKSB7CisgICAgICBmcmVlX2NvbmZpZygpOworICAgICAgcmVhZF9jb25maWdzKCk7CisgICAgICByZWNvbmZpZyA9IDA7CisgICAgfQogICAgIGFnZW50X2NoZWNrX2FuZF9wcm9jZXNzKDEpOwogICB9CiAKICAgLyogYXQgc2h1dGRvd24gdGltZSAqLwogICBzbm1wX3NodXRkb3duKGFwcF9uYW1lKTsKKworICAvKiBkZWluaXRpYWxpemUgeW91ciBtaWIgY29kZSBoZXJlICovCitFT0YKKworICAgICMgYWRkIHNodXRkb3duIHJvdXRpbmVzCisKKyAgICBpPWBjb3VudCAkY2ZpbGVzYAorICAgIHdoaWxlIFsgJGkgLWd0IDAgXSA7IGRvCisgICAgICBmdWxsbmFtZT1gaW5kZXggJGkgJGNmaWxlc2AKKyAgICAgIG5hbWU9YGJhc2VuYW1lICRmdWxsbmFtZSB8IHNlZCAncy9cLltjb10kLy8nYAorICAgICAgZWNobyBjaGVja2luZyBmb3Igc2h1dGRvd25fJG5hbWUgaW4gJGZ1bGxuYW1lCisgICAgICBpZiBncmVwICJzaHV0ZG93bl8kbmFtZSIgJGZ1bGxuYW1lIDsgdGhlbgorICAgICAgICBlY2hvICIgIHNodXRkb3duXyR7bmFtZX0oKTsiID4+ICR0bXBmaWxlCisgICAgICBmaQorICAgICAgaT1gZXhwciAkaSAtIDFgCisgICAgZG9uZQorCisgICAgIyBmaW5pc2ggZmlsZQorICAgIGNhdCA+PiAkdG1wZmlsZSA8PEVPRgorCisgIC8qIHNodXRkb3duIHRoZSBhZ2VudCBsaWJyYXJ5ICovCisgIHNodXRkb3duX2FnZW50KCk7CiAgIFNPQ0tfQ0xFQU5VUDsKICAgZXhpdCgwKTsKIH0KLQogRU9GCiAgICAgICBpZiB0ZXN0ICIkPyIgIT0gMCAtbyAhIC1mICIkdG1wZmlsZSIgOyB0aGVuCiAgICAgICAgIGVjaG8gIkFjay4gIENhbid0IGNyZWF0ZSAkdG1wZmlsZS4iCkBAIC02NTksMTAgKzU5NiwxMCBAQAogICAgICAgZWNobyAicnVubmluZzogJGNtZCIKICAgICAgIGAkY21kYAogICAgICAgaWYgdGVzdCAieCRub3JtIiAhPSAieDEiIDsgdGhlbgotICAgICAgICBlY2hvICJyZW1vdmluZyB0aGUgdG1wb3JhcnkgY29kZSBmaWxlOiAkdG1wZmlsZSIKKyAgICAgICAgZWNobyAicmVtb3ZpbmcgdGhlIHRlbXBvcmFyeSBjb2RlIGZpbGU6ICR0bXBmaWxlIgogICAgICAgICBybSAtZiAkdG1wZmlsZQogICAgICAgZWxzZQotICAgICAgICBlY2hvICJsZWF2aW5nIHRoZSB0bXBvcmFyeSBjb2RlIGZpbGU6ICR0bXBmaWxlIgorICAgICAgICBlY2hvICJsZWF2aW5nIHRoZSB0ZW1wb3JhcnkgY29kZSBmaWxlOiAkdG1wZmlsZSIKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0IC1mICRvdXRuYW1lIDsgdGhlbgogICAgICAgICBlY2hvICJzdWJhZ2VudCBwcm9ncmFtICRvdXRuYW1lIGNyZWF0ZWQiCkBAIC02OTMsOCArNjMwLDkgQEAKICAgZWNobyAiIgogICBlY2hvICIgIFNOTVAgU2V0dXAgY29tbWFuZHM6IgogICBlY2hvICIiCi0gIGVjaG8gIiAgICAtLWNyZWF0ZS1zbm1wdjMtdXNlciBbLXJvXSBbLUEgYXV0aHBhc3NdIFstWCBwcml2cGFzc10iCi0gIGVjaG8gIiAgICAgICAgICAgICAgICAgICAgICAgICBbLWEgTUQ1fFNIQV0gWy14IERFU3xBRVNdIFt1c2VybmFtZV0iCisgIGVjaG8gIiAgICAtLWNyZWF0ZS1zbm1wdjMtdXNlciBjcmVhdGVzIGEgU05NUHYzIHVzZXIgaW4gTmV0LVNOTVAgY29uZmlnIGZpbGUuIgorICBlY2hvICIgICAgICAgICAgICAgICAgICAgICAgICAgU2VlIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyIC0taGVscCBmb3IgbGlzdCBvZiIKKyAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkIG9wdGlvbnMuIgogICBlY2hvICIiCiAgIGVjaG8gIiAgVGhlc2Ugb3B0aW9ucyBwcm9kdWNlIHRoZSB2YXJpb3VzIGNvbXBpbGF0aW9uIGZsYWdzIG5lZWRlZCB3aGVuIgogICBlY2hvICIgIGJ1aWxkaW5nIGV4dGVybmFsIFNOTVAgYXBwbGljYXRpb25zOiIKZGlmZiAtLWdpdCBhL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluIGIvbmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzNTAwOQotLS0gL2Rldi9udWxsCisrKyBiL25ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluCkBAIC0wLDAgKzEsMTY4IEBACisjIS9iaW4vc2gKKyMKKyMgJElkJAorIworIyB0aGlzIHNoZWxsIHNjcmlwdCBpcyBkZXNpZ25lZCB0byBhZGQgbmV3IFNOTVB2MyB1c2VycworIyB0byBOZXQtU05NUCBjb25maWcgZmlsZS4KKworcHJlZml4PUBwcmVmaXhACitleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACitpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAorbGliZGlyPUBsaWJkaXJACitkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACitOU0NfTERGTEFHUz0iQExERkxBR1NAIgorTlNDX0lOQ0xVREVESVI9JHtpbmNsdWRlZGlyfQorTlNDX0xJQkRJUj0tTCR7bGliZGlyfQorTlNDX0xJQlM9IkBMSUJTQCIKK05TQ19BR0VOVExJQlM9IkBBR0VOVExJQlNAIEBQRVJMTERPUFRTX0ZPUl9BUFBTQCIKK05TQ19QUkVGSVg9JHByZWZpeAorTlNDX0VYRUNfUFJFRklYPSRleGVjX3ByZWZpeAorTlNDX1NSQ0RJUj1Ac3JjZGlyQAorTlNDX0lOQ0RJUj0ke05TQ19QUkVGSVh9L2luY2x1ZGUKK05TQ19CQVNFX1NVQkFHRU5UX0xJQlM9Ii1sbmV0c25tcGFnZW50IC1sbmV0c25tcGhlbHBlcnMgLWxuZXRzbm1wIgorTlNDX0JBU0VfQUdFTlRfTElCUz0iLWxuZXRzbm1wYWdlbnQgLWxuZXRzbm1waGVscGVycyAtbG5ldHNubXBtaWJzIC1sbmV0c25tcCIKK05TQ19TUkNfTElCRElSUz0iYWdlbnQvLmxpYnMgc25tcGxpYi8ubGlicyBhZ2VudC9oZWxwZXJzLy5saWJzIgorTlNDX1NSQ19MSUJERVBTPSJhZ2VudC8ubGlicy9saWJuZXRzbm1wbWlicy5hIGFnZW50Ly5saWJzL2xpYm5ldHNubXBhZ2VudC5hIGFnZW50L2hlbHBlcnMvLmxpYnMvbGlibmV0c25tcGhlbHBlcnMuYSBzbm1wbGliLy5saWJzL2xpYm5ldHNubXAuYSIKKworaWYgdGVzdCAieCROU0NfU1JDRElSIiA9ICJ4LiIgOyB0aGVuCisgICBOU0NfU1JDRElSPSJORVQtU05NUC1TT1VSQ0UtRElSIgorZmkKKworaWYgQFBTQ01EQCB8IGVncmVwICcgc25tcGQgKiQnID4gL2Rldi9udWxsIDI+JjEgOyB0aGVuCisgICAgZWNobyAiQXBwYXJlbnRseSBhdCBsZWFzdCBvbmUgc25tcGQgZGVtb24gaXMgYWxyZWFkeSBydW5uaW5nLiIKKyAgICBlY2hvICJZb3UgbXVzdCBzdG9wIHRoZW0gaW4gb3JkZXIgdG8gdXNlIHRoaXMgY29tbWFuZC4iCisgICAgZXhpdCAxCitmaQorCitBYWxnb3JpdGhtPSJNRDUiCitYYWxnb3JpdGhtPSJERVMiCit0b2tlbj1yd3VzZXIKKword2hpbGUgdGVzdCAieCRkb25lIiA9ICJ4IiAtYSAieCQxIiAhPSAieCIgLWEgIngkdXNhZ2UiICE9ICJ4eWVzIjsgZG8KK2Nhc2UgIiQxIiBpbgorICAgIC0qPSopIG9wdGFyZz1gZWNobyAiJDEiIHwgc2VkICdzL1stX2EtekEtWjAtOV0qPS8vJ2AgOzsKKyAgICAqKSBvcHRhcmc9IDs7Citlc2FjCisKK3Vuc2V0IHNoaWZ0ZWQKK2Nhc2UgJDEgaW4KKyAgICAtLXZlcnNpb258LS12ZXIqKQorICAgICAgZWNobyBAVkVSU0lPTkAKKyAgICAgIDs7CisgICAgLS1oZWxwKQorICAgICAgdXNhZ2U9InllcyIKKyAgICAgIDs7CisKKyAgICAtQXwtYSkKKwlzaGlmdAorCWlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCisJICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gYXV0aGVudGljYXRpb24gYWxnb3JpdGhtIG9yIHBhc3MgcGhyYXNlIgorCSAgICBleGl0IDEKKwlmaQorICAgICAgICBjYXNlICQxIGluCisgICAgICAgICAgICBNRDV8U0hBKQorCSAgICBBYWxnb3JpdGhtPSQxCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgICAgICBtZDV8c2hhKQorCSAgICBBYWxnb3JpdGhtPWBlY2hvICQxIHwgdHIgYS16IEEtWmAKKwkgICAgc2hpZnQKKwkgICAgOzsKKyAgICAgICAgICAgICopCisJICAgIGFwYXNzcGhyYXNlPSQxCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKyAgICAtWHwteCkKKwlzaGlmdAorCWlmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCisJICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gZW5jcnlwdGlvbiBhbGdvcml0aG0gb3IgcGFzcyBwaHJhc2UiCisJICAgIGV4aXQgMQorCWZpCisgICAgICAgIGNhc2UgJDEgaW4KKyAgICAgICAgICAgIERFU3xBRVN8QUVTMTI4KQorCSAgICBYYWxnb3JpdGhtPSQxCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgICAgICBkZXN8YWVzfGFlczEyOCkKKwkgICAgWGFsZ29yaXRobT1gZWNobyAkMSB8IHRyIGEteiBBLVpgCisJICAgIHNoaWZ0CisJICAgIDs7CisgICAgICAgICAgICAqKQorCSAgICB4cGFzc3BocmFzZT0kMQorCSAgICBzaGlmdAorCSAgICA7OworCWVzYWMKKwk7OworICAgIC1ybykKKyAgICAgICAgdG9rZW49InJvdXNlciIKKwlzaGlmdAorCTs7CisgICAgLSopCisJZWNobyAidW5rbm93biBzdWJvcHRpb24gdG8gJDA6ICQxIgorCXVzYWdlPXllcworCWRvbmU9MQorCTs7CisgICAgKikKKyAgICAgICAgZG9uZT0xCisgICAgICAgIDs7CisgICAgZXNhYworZG9uZQorCitpZiB0ZXN0ICJ4JHVzYWdlIiA9ICJ4eWVzIjsgdGhlbgorICAgIGVjaG8gIiIKKyAgICBlY2hvICJVc2FnZToiCisgICAgZWNobyAiICBuZXQtc25tcC1jcmVhdGUtdjMtdXNlciBbLXJvXSBbLUEgYXV0aHBhc3NdIFstWCBwcml2cGFzc10iCisgICAgZWNobyAiICAgICAgICAgICAgICAgICAgICAgICAgICBbLWEgTUQ1fFNIQV0gWy14IERFU3xBRVNdIFt1c2VybmFtZV0iCisgICAgZWNobyAiIgorICAgIGV4aXQKK2ZpCisKK2lmIHRlc3QgIngkMSIgPSAieCIgOyB0aGVuCisgICAgcHJvbXB0PXllcworICAgIGVjaG8gIkVudGVyIGEgU05NUHYzIHVzZXIgbmFtZSB0byBjcmVhdGU6ICIKKyAgICByZWFkIHVzZXIKK2Vsc2UKKyAgICB1c2VyPSQxCisgICAgc2hpZnQKK2ZpCitpZiB0ZXN0ICJ4JHVzZXIiID0gIngiIDsgdGhlbgorICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYSB1c2VyIG5hbWUiCisgICAgZXhpdCAxCitmaQoraWYgdGVzdCAieCRhcGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCisgICAgcHJvbXB0PXllcworICAgIGVjaG8gIkVudGVyIGF1dGhlbnRpY2F0aW9uIHBhc3MtcGhyYXNlOiAiCisgICAgcmVhZCBhcGFzc3BocmFzZQorZmkKK2lmIHRlc3QgIngkYXBhc3NwaHJhc2UiID0gIngiIDsgdGhlbgorICAgIGVjaG8gIllvdSBtdXN0IHNwZWNpZnkgYW4gYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2UiCisgICAgZXhpdCAxCitmaQorICAgIGlmIHRlc3QgIngkcHJvbXB0IiA9ICJ4eWVzIiAtYSAieCR4cGFzc3BocmFzZSIgPSAieCIgOyB0aGVuCisgICAgZWNobyAiRW50ZXIgZW5jcnlwdGlvbiBwYXNzLXBocmFzZTogIgorICAgIGVjaG8gIiAgW3ByZXNzIHJldHVybiB0byByZXVzZSB0aGUgYXV0aGVudGljYXRpb24gcGFzcy1waHJhc2VdIgorICAgIHJlYWQgeHBhc3NwaHJhc2UKK2ZpCitvdXRkaXI9IkBQRVJTSVNURU5UX0RJUkVDVE9SWUAiCitvdXRmaWxlPSIkb3V0ZGlyL3NubXBkLmNvbmYiCitsaW5lPSJjcmVhdGVVc2VyICR1c2VyICRBYWxnb3JpdGhtIFwiJGFwYXNzcGhyYXNlXCIgJFhhbGdvcml0aG0gJHhwYXNzcGhyYXNlIgorZWNobyAiYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byAkb3V0ZmlsZToiCitlY2hvICIgICIgJGxpbmUKKyMgaW4gY2FzZSBpdCBoYXNuJ3QgZXZlciBiZWVuIHN0YXJ0ZWQgeWV0LCBzdGFydCBpdC4KK2lmIHRlc3QgISAtZCAkb3V0ZGlyIDsgdGhlbgorICAgIG1rZGlyICRvdXRkaXIKK2ZpCitpZiB0ZXN0ICEgLWQgJG91dGZpbGUgOyB0aGVuCisgICAgdG91Y2ggJG91dGZpbGUKK2ZpCitlY2hvICRsaW5lID4+ICRvdXRmaWxlCitvdXRmaWxlPSJAZGF0YWRpckAvc25tcC9zbm1wZC5jb25mIgorbGluZT0iJHRva2VuICR1c2VyIgorZWNobyAiYWRkaW5nIHRoZSBmb2xsb3dpbmcgbGluZSB0byAkb3V0ZmlsZToiCitlY2hvICIgICIgJGxpbmUKK2lmIHRlc3QgISAtZCAkb3V0ZmlsZSA7IHRoZW4KKyAgICB0b3VjaCAkb3V0ZmlsZQorZmkKK2VjaG8gJGxpbmUgPj4gJG91dGZpbGUKZGlmZiAtLWdpdCBhL3BlcmwvQVNOL0FTTi5wbSBiL3BlcmwvQVNOL0FTTi5wbQppbmRleCA2NDMwZjdlLi4wNzg1OGFlIDEwMDY0NAotLS0gYS9wZXJsL0FTTi9BU04ucG0KKysrIGIvcGVybC9BU04vQVNOLnBtCkBAIC02Niw3ICs2Niw3IEBACiAJQVNOX1VOU0lHTkVECiAJQVNOX1VOU0lHTkVENjQKICk7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCmRpZmYgLS1naXQgYS9wZXJsL0FTTi9NYWtlZmlsZS5QTCBiL3BlcmwvQVNOL01ha2VmaWxlLlBMCmluZGV4IGY4OTVhNDEuLjQ1NzY3ODEgMTAwNjQ0Ci0tLSBhL3BlcmwvQVNOL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvQVNOL01ha2VmaWxlLlBMCkBAIC0yOCw5ICsyOCw5IEBACiAgICAgICAgICAgICAgICAgICAKICAgICBteSAoJHNubXBfbGliLCAkc25tcF9sbGliLCAkc2VwKTsKIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKICAgICAgICRvcHRzID0gTmV0U05NUEdldE9wdHMoKTsJCi0gICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCI7CisgICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCAtRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC1EX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIjsKICAgICAgICRzZXAgPSAnXFwnOwogICAgICAgJHNubXBfbGliX2ZpbGUgPSAnbmV0c25tcC5saWInOwogICAgICAgJHNubXBfbGlua19saWIgPSAnbmV0c25tcCc7CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE4NCw3ICsxODQsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtIGIvcGVybC9BbnlEYXRhX1NOTVAvU3RvcmFnZS5wbQppbmRleCA2MjQ3OTYzLi5kZjNjNGFmIDEwMDY0NAotLS0gYS9wZXJsL0FueURhdGFfU05NUC9TdG9yYWdlLnBtCisrKyBiL3BlcmwvQW55RGF0YV9TTk1QL1N0b3JhZ2UucG0KQEAgLTYsNyArNiw3IEBACiAjIyAgIHNjYWxhciBzZXRzPwogIyMgICBtdWx0aS1ob3N0cwogCi0kQW55RGF0YTo6U3RvcmFnZTo6VkVSU0lPTiA9ICc1LjA0MDQnOworJEFueURhdGE6OlN0b3JhZ2U6OlZFUlNJT04gPSAnNS4wNTAyJzsKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CiAKZGlmZiAtLWdpdCBhL3BlcmwvTWFrZWZpbGUuUEwgYi9wZXJsL01ha2VmaWxlLlBMCmluZGV4IGY3MGY5OTEuLjkyZjVhZDIgMTAwNjQ0Ci0tLSBhL3BlcmwvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9NYWtlZmlsZS5QTApAQCAtMjgsNyArMjgsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTExLDcgKzExMSw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvTWFrZWZpbGUuc3Vicy5wbCBiL3BlcmwvTWFrZWZpbGUuc3Vicy5wbAppbmRleCA4MTdmYjU1Li5lM2MyNWVmIDEwMDY0NAotLS0gYS9wZXJsL01ha2VmaWxlLnN1YnMucGwKKysrIGIvcGVybC9NYWtlZmlsZS5zdWJzLnBsCkBAIC00LDcgKzQsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtODcsNyArODcsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL09JRC9NYWtlZmlsZS5QTCBiL3BlcmwvT0lEL01ha2VmaWxlLlBMCmluZGV4IDVkOTQzMzguLjZiYjE2MTYgMTAwNjQ0Ci0tLSBhL3BlcmwvT0lEL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvT0lEL01ha2VmaWxlLlBMCkBAIC0yOCw5ICsyOCw5IEBACiAgICAgfQogICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMTg1LDcgKzE4NSw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvT0lEL09JRC5wbSBiL3BlcmwvT0lEL09JRC5wbQppbmRleCAxNWIzNzc0Li5iOTQzODcyIDEwMDY0NAotLS0gYS9wZXJsL09JRC9PSUQucG0KKysrIGIvcGVybC9PSUQvT0lELnBtCkBAIC05Miw3ICs5Miw3IEBACiAJc25tcF9vaWRfY29tcGFyZQogICAgICAgICBjb21wYXJlCiApOwotJFZFUlNJT04gPSAnNS4wNDA0JzsKKyRWRVJTSU9OID0gJzUuMDUwMic7CiAKIHN1YiBuZXcgewogICAgIG15ICR0eXBlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9wZXJsL09JRC9PSUQueHMgYi9wZXJsL09JRC9PSUQueHMKaW5kZXggNWQ0MWMzYS4uZTljODM4ZiAxMDA2NDQKLS0tIGEvcGVybC9PSUQvT0lELnhzCisrKyBiL3BlcmwvT0lEL09JRC54cwpAQCAtMjgsNyArMjgsNyBAQAogbnNvX25ld2FycmF5cHRyKG9pZCAqbmFtZSwgc2l6ZV90IG5hbWVfbGVuKSAKIHsKICAgICBuZXRzbm1wX29pZCAqUkVUVkFMOwotICAgIFJFVFZBTCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9vaWQpOworICAgIFJFVFZBTCA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICBSRVRWQUwtPm5hbWUgPSBSRVRWQUwtPm5hbWVidWY7CiAgICAgUkVUVkFMLT5sZW4gPSBuYW1lX2xlbjsKICAgICBtZW1jcHkoUkVUVkFMLT5uYW1lLCBuYW1lLCBuYW1lX2xlbiAqIHNpemVvZihvaWQpKTsKQEAgLTE0Niw3ICsxNDYsNyBAQAogICAgaW50IGk7CiAgICBidWZbMF0gPSAnXDAnOwogICAgZm9yIChpPTA7IGkgPCBsZW47IGkrKykgewotCXNwcmludGYoYnVmLCIuJWx1Iiwqb2JqaWQrKyk7CisJc3ByaW50ZihidWYsICIuJWx1IiwgKm9iamlkKyspOwogCWJ1ZiArPSBzdHJsZW4oYnVmKTsKICAgIH0KICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CkBAIC0xNjAsMTIgKzE2MCwxMyBAQAogICAgIENPREU6CiAgICAgICAgIGlmIChnZXRfdHJlZV9oZWFkKCkgPT0gTlVMTCkKICAgICAgICAgICAgIG5ldHNubXBfaW5pdF9taWIoKTsKLSAgICAgICAgUkVUVkFMID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29pZCk7CisgICAgICAgIFJFVFZBTCA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgUkVUVkFMLT5uYW1lID0gUkVUVkFMLT5uYW1lYnVmOwogICAgICAgICBSRVRWQUwtPmxlbiA9IHNpemVvZihSRVRWQUwtPm5hbWVidWYpL3NpemVvZihSRVRWQUwtPm5hbWVidWZbMF0pOwogICAgICAgICBpZiAoIXNubXBfcGFyc2Vfb2lkKGluaXRzdHJpbmcsIChvaWQgKikgUkVUVkFMLT5uYW1lLCAmUkVUVkFMLT5sZW4pKSB7CiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiQ2FuJ3QgcGFyc2U6ICVzXG4iLCBpbml0c3RyaW5nKTsKICAgICAgICAgICAgIFJFVFZBTC0+bGVuID0gMDsKKyAgICAgICAgICAgIGZyZWUoUkVUVkFMKTsKICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgIH0KICAgICBPVVRQVVQ6CkBAIC0yNjYsNyArMjY3LDcgQEAKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoKGJ1ZiA9ICh1X2NoYXIgKikgY2FsbG9jKGJ1Zl9sZW4sIDEpKSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoKGJ1ZiA9IG5ldHNubXBfbWFsbG9jKGJ1Zl9sZW4pKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yODIsMTIgKzI4MywxNCBAQAogICAgICAgICAgICAgICAgICAgICAgc3RyY21wKHRwbm9kZS0+bGFiZWwgKyBzdHJsZW4odHBub2RlLT5sYWJlbCkgLSA1LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUYWJsZSIpKSkgewogICAgICAgICAgICAgICAgICAgICAvKiB3ZSdyZSBub3Qgd2l0aGluIGEgdGFibGUuICBiYWQgbG9naWMsIGxpdHRsZSBjaG9pY2UgKi8KKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghdHBlKSB7CisgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgUkVUVkFMID0gTlVMTDsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CkBAIC0yOTgsNiArMzAxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgKE5VTEwgPT0KICAgICAgICAgICAgICAgICAgICAgICh0cGUgPSBnZXRfdHJlZShuYW1lLCBuYW1lX2xlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfdHJlZV9oZWFkKCkpKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLyogWFhYOiBiZXR0ZXIgZXJyb3IgcmVjb3ZlcnkgbmVlZGVkPyAqLwogICAgICAgICAgICAgICAgIH0KQEAgLTMyMCwxMiArMzI0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIChOVUxMID09CiAgICAgICAgICAgICAgICAgICAgICAoaW5kZXhub2RlID0gZ2V0X3RyZWUobmFtZSwgbmFtZV9sZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3RyZWVfaGVhZCgpKSkpKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZShidWYpOwogICAgICAgICAgICAgICAgICAgICBSRVRWQUwgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47ICAgICAgICAgICAgIC8qIHh4eCBtZW0gbGVhayAqLwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB2YmRhdGEudHlwZSA9IG1pYl90b19hc25fdHlwZShpbmRleG5vZGUtPnR5cGUpOwogCiAgICAgICAgICAgICAgICAgaWYgKHZiZGF0YS50eXBlID09ICh1X2NoYXIpIC0xKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfZnJlZShidWYpOwogICAgICAgICAgICAgICAgICAgICBSRVRWQUwgPSBOVUxMOwogICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8qIFhYWDogbm90IGdvb2QuICBoYWxmIHBvcHVsYXRlZCBzdGFjaz8gKi8KICAgICAgICAgICAgICAgICB9CkBAIC0zNDcsOSArMzUzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIC8qIHBvc3NpYmxlIG1lbW9yeSBsZWFrOiB2YmRhdGEuZGF0YSBzaG91bGQgYmUgZnJlZWQgbGF0ZXIgKi8KICAgICAgICAgICAgICAgICBpZiAocGFyc2Vfb25lX29pZF9pbmRleCgmb2lkcCwgJm9pZHBfbGVuLCAmdmJkYXRhLCAwKQogICAgICAgICAgICAgICAgICAgICAhPSBTTk1QRVJSX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9mcmVlKGJ1Zik7CiAgICAgICAgICAgICAgICAgICAgIFJFVFZBTCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICB9CkBAIC0zNjMsOSArMzY5LDEwIEBACiAgICAgICAgICAgICAgICAgc3ByaW50X3JlYWxsb2NfdmFsdWUoJmJ1ZiwgJmJ1Zl9sZW4sICZvdXRfbGVuLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEsIG5hbWUsIG5hbWVfbGVuLCAmdmJkYXRhKTsKICovCi0KKyAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyX2ludGVybmFscygmdmJkYXRhKTsKICAgICAgICAgICAgICAgICBhdl9wdXNoKG15cmV0LCBuZXdTVnB2KChjaGFyICopYnVmLCBvdXRfbGVuKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuZXRzbm1wX2ZyZWUoYnVmKTsKICAgICAgICAgICAgIFJFVFZBTCA9IG5ld1JWKChTViAqKW15cmV0KTsKICAgICAgICAgfQogICAgIE9VVFBVVDoKZGlmZiAtLWdpdCBhL3BlcmwvU05NUC9NYWtlZmlsZS5QTCBiL3BlcmwvU05NUC9NYWtlZmlsZS5QTAppbmRleCA5MjhjYjY3Li5lNjE3Y2I3IDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvTWFrZWZpbGUuUEwKKysrIGIvcGVybC9TTk1QL01ha2VmaWxlLlBMCkBAIC0zMiw5ICszMiw5IEBACiAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEyOCw3ICsxMjgsNyBAQAogICAgIG15ICgkbWliZGlyLCAkc25tcGQsICRzbm1wdHJhcGQpOwogCiAgICAgICAgICMgV2luZG93cwotICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykgeworICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSB7CiAgICAgICAgICAgaWYgKGxjICgkb3B0cy0+eydpbnNvdXJjZSd9KSBlcSAidHJ1ZSIpIHsKICAgICAgICAgICAgICRtaWJkaXIgPSAiLi4vLi4vbWlicyI7CiAgICAgICAgICAgICBpZiAobGMoJG9wdHMtPnsnZGVidWcnfSkgZXEgInRydWUiKSB7CkBAIC0xNjksNyArMTY5LDcgQEAKIAkgICAgcHJvbXB0KCJVbmFibGUgdG8gbG9jYXRlIFwic25tcHRyYXBkXCIuIFBsZWFzZSBlbnRlciB0aGUgcGF0aDogIiwKIAkJICAgJHNubXBkX3BhdGgxKTsKIAotICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykgeworICAgICAgICBpZiAoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSB7CiAgICAgICAgICAgJHNubXBkID0gJHNubXBkIC4gJHNlcCAuICJzbm1wZC5leGUiOwogICAgICAgICAgICRzbm1wdHJhcGQgPSAkc25tcHRyYXBkIC4gJHNlcCAuICJzbm1wdHJhcGQuZXhlIjsKICAgICAgICAgfQpAQCAtMjMxLDcgKzIzMSw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC0zMTQsNyArMzE0LDcgQEAKIAogCiBzdWIgQ2hlY2tfVmVyc2lvbiB7Ci0gIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IGVxICdtc3lzJykpIHsKKyAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gbmUgJycpKSB7CiAgICAgbXkgJGZvdW5kdmVyc2lvbiA9IDA7CiAgICAgcmV0dXJuIGlmICgkRU5WeydORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTid9KTsKICAgICBvcGVuKEksIjxNYWtlZmlsZSIpOwpkaWZmIC0tZ2l0IGEvcGVybC9TTk1QL1NOTVAucG0gYi9wZXJsL1NOTVAvU05NUC5wbQppbmRleCBlOTE0ZGNjLi5hNzljYjkxIDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvU05NUC5wbQorKysgYi9wZXJsL1NOTVAvU05NUC5wbQpAQCAtNyw3ICs3LDcgQEAKICMgICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgc2FtZSB0ZXJtcyBhcyBQZXJsIGl0c2VsZi4KIAogcGFja2FnZSBTTk1QOwotJFZFUlNJT04gPSAnNS4wNDA0JzsgICAjIGN1cnJlbnQgcmVsZWFzZSB2ZXJzaW9uIG51bWJlcgorJFZFUlNJT04gPSAnNS4wNTAyJzsgICAjIGN1cnJlbnQgcmVsZWFzZSB2ZXJzaW9uIG51bWJlcgogCiB1c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzOwpAQCAtNDYsNiArNDYsOCBAQAogICAgICAgICBzbm1wX2dldG5leHQKICAgICAgICAgc25tcF9zZXQKICAgICAgICAgc25tcF90cmFwCisJU05NUF9BUElfVFJBRElUSU9OQUwKKwlTTk1QX0FQSV9TSU5HTEUKICk7CiAKIHN1YiBBVVRPTE9BRCB7CkBAIC0zNDgsMTIgKzM1MCwyNCBAQAogICAgICRzZXNzLT50cmFwKEBfKTsKIH0KIAorIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKyMgUHJlc2VydmVzIHRoZSBhYmlsaXR5IHRvIGNhbGwgTWFpbkxvb3AoKSB3aXRoIG5vIGFyZ3Mgc28gd2UgZG9uJ3QgCisjIGJyZWFrIG9sZCBjb2RlCisjCisjIEFsdGVybmF0ZWx5LCBNYWluTG9vcCgpIGNvdWxkIGJlIGNhbGxlZCBhcyBhbiBvYmplY3QgbWV0aG9kLCAKKyMgKCAkc2Vzcy0+TWFpbkxvb3AoKSApICwgc28gdGhhdCAkc2VsZiB3aW5kcyB1cCBpbiBAXy4gIFRoZW4gaXQgd291bGQgCisjIGJlIG1vcmUgbGlrZSA6CisjIG15ICRzZWxmID0gc2hpZnQ7CisjIC4uLi4gCisjIFNOTVA6Ol9tYWluX2xvb3AoLi4uLi4uLCAkc2VsZi0+e1Nlc3NQdHJ9KTsKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCiBzdWIgTWFpbkxvb3AgeworICAgIG15ICRzcyA9IHNoaWZ0IGlmKCZTTk1QOjpfYXBpX21vZGUoKSA9PSBTTk1QOjpTTk1QX0FQSV9TSU5HTEUoKSk7CiAgICAgbXkgJHRpbWUgPSBzaGlmdDsKICAgICBteSAkY2FsbGJhY2sgPSBzaGlmdDsKICAgICBteSAkdGltZV9zZWMgPSAoJHRpbWUgPyBpbnQgJHRpbWUgOiAwKTsKICAgICBteSAkdGltZV91c2VjID0gKCR0aW1lID8gaW50KCgkdGltZS0kdGltZV9zZWMpKjEwMDAwMDApIDogMCk7Ci0gICAgU05NUDo6X21haW5fbG9vcCgkdGltZV9zZWMsJHRpbWVfdXNlYywkY2FsbGJhY2spOworICAgIFNOTVA6Ol9tYWluX2xvb3AoJHRpbWVfc2VjLCR0aW1lX3VzZWMsJGNhbGxiYWNrLChkZWZpbmVkKCRzcykgPyAkc3MtPntTZXNzUHRyfSA6ICgpKSk7CiB9CiAKIHN1YiBmaW5pc2ggewpAQCAtNTE3LDcgKzUzMSw3IEBACiAgICAgICAgJHRoaXMtPntDb250ZXh0fSB8fD0gCiAJICAgTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6bmV0c25tcF9kc19nZXRfc3RyaW5nKE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Ok5FVFNOTVBfRFNfTElCUkFSWV9JRCgpLCAKIAkJICAgICAgICAgTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6TkVUU05NUF9EU19MSUJfQ09OVEVYVCgpKSB8fCAnJzsKLSAgICAgICAkdGhpcy0+e0F1dGhQcm90b30gfHw9ICdERUZBVUxUJzsgIyBkZWZhdWx0cyB0byB0aGUgbGlicmFyeSdzIGRlZmF1bHQKKyAgICAgICAkdGhpcy0+e0F1dGhQcm90b30gfHw9ICdERUZBVUxUJzsgIyB1c2UgdGhlIGxpYnJhcnkncyBkZWZhdWx0CiAgICAgICAgJHRoaXMtPntBdXRoUGFzc30gfHw9CiAgICAgICAgTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6bmV0c25tcF9kc19nZXRfc3RyaW5nKE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Ok5FVFNOTVBfRFNfTElCUkFSWV9JRCgpLCAKIAkJICAgICBOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpORVRTTk1QX0RTX0xJQl9BVVRIUEFTU1BIUkFTRSgpKSB8fApAQCAtNTI5LDcgKzU0Myw3IEBACiAgICAgICAgJHRoaXMtPntBdXRoTG9jYWxpemVkS2V5fSB8fD0gJyc7CiAgICAgICAgJHRoaXMtPntQcml2TG9jYWxpemVkS2V5fSB8fD0gJyc7CiAKLSAgICAgICAkdGhpcy0+e1ByaXZQcm90b30gfHw9ICdERUZBVUxUJzsgICMgZGVmYXVsdHMgdG8gaHRlIGxpYnJhcnkncyBkZWZhdWx0CisgICAgICAgJHRoaXMtPntQcml2UHJvdG99IHx8PSAnREVGQVVMVCc7ICAjIHVzZSB0aGUgbGlicmFyeSdzIGRlZmF1bHQKICAgICAgICAkdGhpcy0+e1ByaXZQYXNzfSB8fD0KICAgICAgICBOZXRTTk1QOjpkZWZhdWx0X3N0b3JlOjpuZXRzbm1wX2RzX2dldF9zdHJpbmcoTmV0U05NUDo6ZGVmYXVsdF9zdG9yZTo6TkVUU05NUF9EU19MSUJSQVJZX0lEKCksIAogCQkgICAgIE5ldFNOTVA6OmRlZmF1bHRfc3RvcmU6Ok5FVFNOTVBfRFNfTElCX1BSSVZQQVNTUEhSQVNFKCkpIHx8CkBAIC03MTQsNyArNzI4LDcgQEAKIAkgICAgaWYgKCRwYXJzZV9pbmRleGVzKSB7CiAJCSMgZ2V0IGluZGV4ZXMKIAkJbXkgQGluZGV4ZXMgPQotCQkgIEB7JFNOTVA6Ok1JQnskdGV4dG5vZGV9eydjaGlsZHJlbid9WzBdeydpbmRleGVzJ30gfHwgW10gfTsKKwkJICBAeyRTTk1QOjpNSUJ7JHRleHRub2RlfXsnY2hpbGRyZW4nfVswXXsnaW5kZXhlcyd9IHx8IFtdfTsKIAkJIyBxdWljayB0cmFuc2xhdGUgaW50byBhIGhhc2gKIAkJbWFwIHsgJGluZGV4ZXN7JF99ID0gMTsgfSBAaW5kZXhlczsKIAkgICAgfQpAQCAtMTM2Nyw2ICsxMzgxLDcgQEAKICAgICAgcGFyZW50ID0+IDAsICAgIyBwYXJlbnQgbm9kZQogICAgICBjaGlsZHJlbiA9PiAwLCAjIGFycmF5IHJlZmVyZW5jZSBvZiBjaGlsZHJlbiBub2RlcwogICAgICBpbmRleGVzID0+IDAsICAjIHJldHVybnMgYXJyYXkgb2YgY29sdW1uIGxhYmVscworICAgICBpbXBsaWVkID0+IDAsICAjIGJvb2xlYW46IGlzIHRoZSBsYXN0IGluZGV4IElNUExJRUQKICAgICAgdmFyYmluZHMgPT4gMCwgIyByZXR1cm5zIGFycmF5IG9mIHRyYXAvbm90aWZpY2F0aW9uIHZhcmJpbmRzCiAgICAgIG5leHROb2RlID0+IDAsICMgbmV4dCBsZXhpY28gbm9kZSAoQlVHISBkb2VzIG5vdCByZXR1cm4gaW4gbGV4aWNvIG9yZGVyKQogICAgICB0eXBlID0+IDAsICAgICAjIHJldHVybnMgc2ltcGxlIHR5cGUgKHNlZSBnZXRUeXBlIGZvciB2YWx1ZXMpCkBAIC0xODgyLDcgKzE4OTcsNyBAQAogCiBOb3RlIDI6IGNhbGxiYWNrIHN1cHBvcnQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIFNOTVAgbW9kdWxlIHZlcnNpb24KIDUuMDQgYW5kIGFib3ZlLiAgVG8gdGVzdCBmb3IgdGhpcyBpbiBjb2RlIGludGVuZGluZyB0byBzdXBwb3J0IGJvdGgKLXZlcnNpb25zIHByaW9yIHRvIDUuMDQgYW5kIGFuZCA1LjA0IGFuZCB1cCwgdGhlIGZvbGxvd2luZyBzaG91bGQgd29yazoKK3ZlcnNpb25zIHByaW9yIHRvIDUuMDQgYW5kIDUuMDQgYW5kIHVwLCB0aGUgZm9sbG93aW5nIHNob3VsZCB3b3JrOgogCiAgIGlmICgkcmVzcG9uc2UgPSAkc2Vzcy0+Z2V0dGFibGUoJ2lmVGFibGUnLCBjYWxsYmFjayA9PiBcJm15X3N1YikpIHsKICAgICAgICMgZ290IGEgcmVzcG9uc2UsIGdldHRhYmxlIGRvZXNuJ3Qgc3VwcG9ydCBjYWxsYmFjawpAQCAtMjMxNSw2ICsyMzMwLDE0IEBACiAKIHJldHVybnMgdGhlIFJFRkVSRU5DRSBjbGF1c2UKIAorPWl0ZW0gaW5kZXhlcworCityZXR1cm5zIHRoZSBvYmplY3RzIGluIHRoZSBJTkRFWCBjbGF1c2UKKworPWl0ZW0gaW1wbGllZAorCityZXR1cm5zIHRydWUgaWYgdGhlIGxhc3Qgb2JqZWN0IGluIHRoZSBJTkRFWCBpcyBJTVBMSUVECisKID1iYWNrCiAKID1oZWFkMSBNSUIgRnVuY3Rpb25zCmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvU05NUC54cyBiL3BlcmwvU05NUC9TTk1QLnhzCmluZGV4IDkwMjQwYTEuLjM2MWNhNTggMTAwNjQ0Ci0tLSBhL3BlcmwvU05NUC9TTk1QLnhzCisrKyBiL3BlcmwvU05NUC9TTk1QLnhzCkBAIC01OSwxNiArNTksNiBAQAogI2RlZmluZSBHX1ZPSUQgR19ESVNDQVJECiAjZW5kaWYKIAotI2lmZGVmIFdJTjMyCi0jZGVmaW5lIFNPQ0tfU1RBUlRVUCB3aW5zb2NrX3N0YXJ0dXAoKQotI2RlZmluZSBTT0NLX0NMRUFOVVAgd2luc29ja19jbGVhbnVwKCkKLSNkZWZpbmUgc3RyY2FzZWNtcCBfc3RyaWNtcAotI2RlZmluZSBzdHJuY2FzZWNtcCBfc3RybmljbXAKLSNlbHNlCi0jZGVmaW5lIFNPQ0tfU1RBUlRVUAotI2RlZmluZSBTT0NLX0NMRUFOVVAKLSNlbmRpZgotCiAjaW5jbHVkZSAicGVybHNubXAuaCIKIAogI2RlZmluZSBTVUNDRVNTIDEKQEAgLTc2LDYgKzY2LDkgQEAKIAogI2RlZmluZSBaRVJPX0JVVF9UUlVFICIwIGJ1dCB0cnVlIgogCisjZGVmaW5lIFNOTVBfQVBJX1RSQURJVElPTkFMIDAKKyNkZWZpbmUgU05NUF9BUElfU0lOR0xFIDEKKwogI2RlZmluZSBWQVJCSU5EX1RBR19GIDAKICNkZWZpbmUgVkFSQklORF9JSURfRiAxCiAjZGVmaW5lIFZBUkJJTkRfVkFMX0YgMgpAQCAtOTUsNiArODgsOSBAQAogLyogSW50ZXJuYWwgZmxhZyB0byBkZXRlcm1pbmUgc25tcF9tYWluX2xvb3AoKSBzaG91bGQgcmV0dXJuIGFmdGVyIGNhbGxiYWNrICovCiBzdGF0aWMgaW50IG1haW5sb29wX2ZpbmlzaCA9IDA7CiAKKy8qIEludGVybmFsIGZsYWcgdG8gZGV0ZXJtaW5lIHdoaWNoIEFQSSB3ZSdyZSB1c2luZyAqLworc3RhdGljIGludCBhcGlfbW9kZSA9IFNOTVBfQVBJX1RSQURJVElPTkFMOworCiAvKiB0aGVzZSBzaG91bGQgYmUgcGFydCBvZiB0cmFuc2Zvcm1fb2lkcy5oID8gKi8KICNkZWZpbmUgVVNNX0FVVEhfUFJPVE9fTUQ1X0xFTiAxMAogI2RlZmluZSBVU01fQVVUSF9QUk9UT19TSEFfTEVOIDEwCkBAIC0xMTIsNyArMTA4LDYgQEAKIAogc3RhdGljIHZvaWQgX19yZWNhbGNfdGltZW91dCBfKChzdHJ1Y3QgdGltZXZhbCosc3RydWN0IHRpbWV2YWwqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXZhbCosc3RydWN0IHRpbWV2YWwqLCBpbnQqICkpOwotc3RhdGljIGluX2FkZHJfdCBfX3BhcnNlX2FkZHJlc3MgXygoY2hhciopKTsKIHN0YXRpYyBpbnQgX19pc19udW1lcmljX29pZCBfKChjaGFyKikpOwogc3RhdGljIGludCBfX2lzX2xlYWYgXygoc3RydWN0IHRyZWUqKSk7CiBzdGF0aWMgaW50IF9fdHJhbnNsYXRlX2FwcGxfdHlwZSBfKChjaGFyKikpOwpAQCAtMTg2LDYgKzE4MSw5IEBACiBzdGF0aWMgaW50IF9idWxrd2Fsa19hc3luY19jYiBfKChpbnQgb3AsIFNubXBTZXNzaW9uICpzcywgaW50IHJlcWlkLAogCQkJCSAgICAgbmV0c25tcF9wZHUgKnBkdSwgdm9pZCAqY29udGV4dF9wdHIpKTsKIAorLyogUHJvdG90eXBlIGZvciBlcnJvciBoYW5kbGVyICovCit2b2lkIHNubXBfcmV0dXJuX2Vyciggc3RydWN0IHNubXBfc2Vzc2lvbiAqc3MsIFNWICplcnJfc3RyLCBTViAqZXJyX251bSwgU1YgKmVycl9pbmQgKTsKKwogLyogU3RydWN0dXJlIHRvIGhvbGQgdmFsaWQgY29udGV4dCBzZXNzaW9ucy4gKi8KIHN0cnVjdCB2YWxpZF9jb250ZXh0cyB7CiAgICB3YWxrX2NvbnRleHQJKip2YWxpZDsJLyogQXJyYXkgb2YgdmFsaWQgd2Fsa19jb250ZXh0IHBvaW50ZXJzLiAgICAqLwpAQCAtMjA5LDcgKzIwNyw2IEBACiAJfSB3aGlsZSAoLypDT05TVENPTkQqLzApCiAKIGNoYXIJX2RlYnVneFsxMDI0XTsJLyogU3BhY2UgdG8gc3ByaW50ZigpIGludG8gLSB1c2VkIGJ5IHNwcmludF9vYmppZCgpLiAqLwotI2RlZmluZSBEQkRDTCh4KSB4CiAKIC8qIHdyYXBwZXIgYXJvdW5kIHNucHJpbnRfb2JqaWQgdG8gc25wcmludF9vYmppZCB0byByZXR1cm4gdGhlIHBvaW50ZXIgCiAgICBpbnN0ZWFkIG9mIGxlbmd0aCAqLwpAQCAtMjIwLDYgKzIxNyw3IEBACiAgIHJldHVybiBfZGVidWd4OwogfQogIAorI2RlZmluZSBEQkRDTCh4KSB4CiAjZWxzZQkvKiBERUJVR0dJTkcgKi8KICNkZWZpbmUgREJEQ0woeCkgCiAjZGVmaW5lIERCT1VUCkBAIC0yOTUsMjYgKzI5Myw2IEBACiAgICB9CiB9CiAKLXN0YXRpYyBpbl9hZGRyX3QKLV9fcGFyc2VfYWRkcmVzcyhhZGRyZXNzKQotY2hhciAqYWRkcmVzczsKLXsKLSAgICBpbl9hZGRyX3QgYWRkcjsKLSAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc2FkZHI7Ci0gICAgc3RydWN0IGhvc3RlbnQgKmhwOwotCi0gICAgaWYgKChhZGRyID0gaW5ldF9hZGRyKGFkZHJlc3MpKSAhPSAtMSkKLQlyZXR1cm4gYWRkcjsKLSAgICBocCA9IGdldGhvc3RieW5hbWUoYWRkcmVzcyk7Ci0gICAgaWYgKGhwID09IE5VTEwpewotICAgICAgICByZXR1cm4gKC0xKTsgLyogZXJyb3IgdmFsdWUgKi8KLSAgICB9IGVsc2UgewotCW1lbWNweSgmc2FkZHIuc2luX2FkZHIsIGhwLT5oX2FkZHIsIGhwLT5oX2xlbmd0aCk7Ci0JcmV0dXJuIHNhZGRyLnNpbl9hZGRyLnNfYWRkcjsKLSAgICB9Ci0KLX0KLQogc3RhdGljIGludAogX19pc19udW1lcmljX29pZCAob2lkc3RyKQogY2hhciogb2lkc3RyOwpAQCAtNTg1LDcgKzU2Myw3IEBACiAgICBpbnQgaTsKICAgIGJ1ZlswXSA9ICdcMCc7CiAgICBmb3IgKGk9MDsgaSA8IGxlbjsgaSsrKSB7Ci0Jc3ByaW50ZihidWYsIi4lbHUiLCpvYmppZCsrKTsKKwlzcHJpbnRmKGJ1ZiwgIi4lbHUiLCAqb2JqaWQrKyk7CiAJYnVmICs9IHN0cmxlbihidWYpOwogICAgfQogICAgcmV0dXJuIFNVQ0NFU1M7CkBAIC03NzksMTEgKzc1NywxMyBAQAogICAgICAgICAgICBpY3AgPSBsY3A7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmICghZm91bmRfbGFiZWwgJiYgaXNhbHBoYSgoaW50KSpsY3ApKSBmb3VuZF9sYWJlbCA9IDE7CisgICAgICBpZiAoIWZvdW5kX2xhYmVsICYmIGlzYWxwaGEoKHVuc2lnbmVkIGNoYXIpKmxjcCkpIGZvdW5kX2xhYmVsID0gMTsKICAgICAgIGxjcC0tOwogICAgfQogCi0gICBpZiAoIWZvdW5kX2xhYmVsIHx8ICghaXNkaWdpdCgoaW50KSooaWNwKzEpKSAmJiAoZmxhZyAmIEZBSUxfT05fTlVMTF9JSUQpKSkKKyAgIGlmICghZm91bmRfbGFiZWwKKyAgICAgICB8fCAoKGljcCArIDEgPj0gbmFtZSArIGxlbiB8fCAhaXNkaWdpdCgodW5zaWduZWQgY2hhcikqKGljcCsxKSkpCisgICAgICAgICAgICYmIChmbGFnICYgRkFJTF9PTl9OVUxMX0lJRCkpKQogICAgICAgcmV0dXJuKEZBSUxVUkUpOwogCiAgICBpZiAoZmxhZyAmIE5PTl9MRUFGX05BTUUpIHsgLyogZG9udCBrbm93IHdoZXJlIHRvIHN0YXJ0IGluc3RhbmNlIGlkICovCkBAIC05NjEsNyArOTQxLDcgQEAKIAogICAgaWYgKCFzb2lkX3N0ciB8fCAhKnNvaWRfc3RyKSByZXR1cm4gU1VDQ0VTUzsvKiBzdWNjZXNzZnVsbHkgYWRkZWQgbm90aGluZyAqLwogICAgaWYgKCpzb2lkX3N0ciA9PSAnLicpIHNvaWRfc3RyKys7Ci0gICBzb2lkX2J1ZiA9IHN0cmR1cChzb2lkX3N0cik7CisgICBzb2lkX2J1ZiA9IG5ldHNubXBfc3RyZHVwKHNvaWRfc3RyKTsKICAgIGlmICghc29pZF9idWYpCiAgICAgICAgcmV0dXJuIEZBSUxVUkU7CiAgICBjcCA9IHN0cnRva19yKHNvaWRfYnVmLCIuIiwmc3QpOwpAQCAtOTcwLDcgKzk1MCw3IEBACiAgICAgIC8qIGRvaWRfYXJyWygqZG9pZF9hcnJfbGVuKSsrXSA9ICBhdG9pKGNwKTsgKi8KICAgICAgY3AgPSBzdHJ0b2tfcihOVUxMLCIuIiwmc3QpOwogICAgfQotICAgZnJlZShzb2lkX2J1Zik7CisgICBuZXRzbm1wX2ZyZWUoc29pZF9idWYpOwogICAgcmV0dXJuKFNVQ0NFU1MpOwogfQogCkBAIC05OTEsMjcgKzk3MSwyNiBAQAogICAgIGludCByZXQgPSBTVUNDRVNTOwogCiAgICAgaWYgKHBkdS0+dmFyaWFibGVzID09IE5VTEwpewotCXBkdS0+dmFyaWFibGVzID0gdmFycyA9Ci0gICAgICAgICAgIChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKiljYWxsb2MoMSxzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7CisJcGR1LT52YXJpYWJsZXMgPSB2YXJzCisgICAgICAgICAgICA9IG5ldHNubXBfY2FsbG9jKDEsIHNpemVvZihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QpKTsKICAgICB9IGVsc2UgewogCWZvcih2YXJzID0gcGR1LT52YXJpYWJsZXM7CiAgICAgICAgICAgICB2YXJzLT5uZXh0X3ZhcmlhYmxlOwogICAgICAgICAgICAgdmFycyA9IHZhcnMtPm5leHRfdmFyaWFibGUpCiAJICAgIC8qRVhJVCovOwotCXZhcnMtPm5leHRfdmFyaWFibGUgPQotICAgICAgICAgICAobmV0c25tcF92YXJpYWJsZV9saXN0ICopY2FsbG9jKDEsc2l6ZW9mKG5ldHNubXBfdmFyaWFibGVfbGlzdCkpOworCXZhcnMtPm5leHRfdmFyaWFibGUgPSBuZXRzbm1wX2NhbGxvYygxLCBzaXplb2YobmV0c25tcF92YXJpYWJsZV9saXN0KSk7CiAJdmFycyA9IHZhcnMtPm5leHRfdmFyaWFibGU7CiAgICAgfQogCiAgICAgdmFycy0+bmV4dF92YXJpYWJsZSA9IE5VTEw7Ci0gICAgdmFycy0+bmFtZSA9IChvaWQgKiltYWxsb2MobmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CisgICAgdmFycy0+bmFtZSA9IG5ldHNubXBfbWFsbG9jKG5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwogICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPm5hbWUsIChjaGFyICopbmFtZSwgbmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CiAgICAgdmFycy0+bmFtZV9sZW5ndGggPSBuYW1lX2xlbmd0aDsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICAgIGNhc2UgVFlQRV9JTlRFR0VSOgogICAgICAgY2FzZSBUWVBFX0lOVEVHRVIzMjoKICAgICAgICAgdmFycy0+dHlwZSA9IEFTTl9JTlRFR0VSOwotICAgICAgICB2YXJzLT52YWwuaW50ZWdlciA9IChsb25nICopbWFsbG9jKHNpemVvZihsb25nKSk7CisgICAgICAgIHZhcnMtPnZhbC5pbnRlZ2VyID0gbmV0c25tcF9tYWxsb2Moc2l6ZW9mKGxvbmcpKTsKICAgICAgICAgaWYgKHZhbCkKICAgICAgICAgICAgICoodmFycy0+dmFsLmludGVnZXIpID0gc3RydG9sKHZhbCxOVUxMLDApOwogICAgICAgICBlbHNlIHsKQEAgLTEwMzQsNyArMTAxMyw3IEBACiAgICAgICBjYXNlIFRZUEVfVUlOVEVHRVI6CiAgICAgICAgIHZhcnMtPnR5cGUgPSBBU05fVUlOVEVHRVI7CiBhc191aW50OgotICAgICAgICB2YXJzLT52YWwuaW50ZWdlciA9IChsb25nICopbWFsbG9jKHNpemVvZihsb25nKSk7CisgICAgICAgIHZhcnMtPnZhbC5pbnRlZ2VyID0gbmV0c25tcF9tYWxsb2Moc2l6ZW9mKGxvbmcpKTsKICAgICAgICAgaWYgKHZhbCkKICAgICAgICAgICAgIHNzY2FuZih2YWwsIiVsdSIsdmFycy0+dmFsLmludGVnZXIpOwogICAgICAgICBlbHNlIHsKQEAgLTEwNTUsMjAgKzEwMzQsMjAgQEAKICAgICAgIGNhc2UgVFlQRV9PUEFRVUU6CiAgICAgICAgIHZhcnMtPnR5cGUgPSBBU05fT0NURVRfU1RSOwogYXNfb2N0OgotICAgICAgICB2YXJzLT52YWwuc3RyaW5nID0gKHVfY2hhciAqKW1hbGxvYyhsZW4pOworICAgICAgICB2YXJzLT52YWwuc3RyaW5nID0gbmV0c25tcF9tYWxsb2MobGVuKTsKICAgICAgICAgdmFycy0+dmFsX2xlbiA9IGxlbjsKICAgICAgICAgaWYgKHZhbCAmJiBsZW4pCiAgICAgICAgICAgICBtZW1jcHkoKGNoYXIgKil2YXJzLT52YWwuc3RyaW5nLCB2YWwsIGxlbik7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcmV0ID0gRkFJTFVSRTsKLSAgICAgICAgICAgIHZhcnMtPnZhbC5zdHJpbmcgPSAodV9jaGFyKilzdHJkdXAoIiIpOworICAgICAgICAgICAgdmFycy0+dmFsLnN0cmluZyA9ICh1X2NoYXIgKikgbmV0c25tcF9zdHJkdXAoIiIpOwogICAgICAgICAgICAgdmFycy0+dmFsX2xlbiA9IDA7CiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICAgIGNhc2UgVFlQRV9JUEFERFI6CiAgICAgICAgIHZhcnMtPnR5cGUgPSBBU05fSVBBRERSRVNTOwotICAgICAgICB2YXJzLT52YWwuaW50ZWdlciA9IChsb25nICopbWFsbG9jKHNpemVvZihpbl9hZGRyX3QpKTsKKyAgICAgICAgdmFycy0+dmFsLmludGVnZXIgPSBuZXRzbm1wX21hbGxvYyhzaXplb2YoaW5fYWRkcl90KSk7CiAgICAgICAgIGlmICh2YWwpCiAgICAgICAgICAgICAqKChpbl9hZGRyX3QgKil2YXJzLT52YWwuaW50ZWdlcikgPSBpbmV0X2FkZHIodmFsKTsKICAgICAgICAgZWxzZSB7CkBAIC0xMDg4LDcgKzEwNjcsNyBAQAogCSAgICByZXQgPSBGQUlMVVJFOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdmFycy0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKLSAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IChvaWQgKiltYWxsb2ModmFycy0+dmFsX2xlbik7CisgICAgICAgICAgICB2YXJzLT52YWwub2JqaWQgPSBuZXRzbm1wX21hbGxvYyh2YXJzLT52YWxfbGVuKTsKICAgICAgICAgICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPnZhbC5vYmppZCwgKGNoYXIgKilvaWRidWYsIHZhcnMtPnZhbF9sZW4pOwogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwpAQCAtMTEyMCw4ICsxMDk5LDEyIEBACiAgICBsb25nIGNvbW1hbmQgPSBwZHUtPmNvbW1hbmQ7CiAgICAqcmVzcG9uc2UgPSBOVUxMOwogcmV0cnk6Ci0KLSAgIHN0YXR1cyA9IHNubXBfc3luY2hfcmVzcG9uc2Uoc3MsIHBkdSwgcmVzcG9uc2UpOworCWlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwl7CisJCXN0YXR1cyA9IHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZShzcywgcGR1LCByZXNwb25zZSk7CisJfSBlbHNlIHsKKwkJc3RhdHVzID0gc25tcF9zeW5jaF9yZXNwb25zZShzcywgcGR1LCByZXNwb25zZSk7CisJfTsKIAogICAgaWYgKCgqcmVzcG9uc2UgPT0gTlVMTCkgJiYgKHN0YXR1cyA9PSBTVEFUX1NVQ0NFU1MpKSBzdGF0dXMgPSBTVEFUX0VSUk9SOwogCkBAIC0xMTU4LDEwICsxMTQxLDEwIEBACiAgICAgICAgICAgICAvKiBpbiBTTk1QdjJjLCBTTk1QdjJ1LCBTTk1QdjIqLCBhbmQgU05NUHYzIFBEVXMgKi8KICAgICAgICAgICAgIGNhc2UgU05NUF9FUlJfSU5DT05TSVNURU5UTkFNRToKICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICBzdl9jYXRwdihlcnJfc3RyX3N2LAotICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfZXJyc3RyaW5nKCgqcmVzcG9uc2UpLT5lcnJzdGF0KSk7Ci0gICAgICAgICAgICAgICBzdl9zZXRpdihlcnJfbnVtX3N2LCAoKnJlc3BvbnNlKS0+ZXJyc3RhdCk7Ci0JICAgICAgIHN2X3NldGl2KGVycl9pbmRfc3YsICgqcmVzcG9uc2UpLT5lcnJpbmRleCk7CisJCQkJc3ZfY2F0cHYoZXJyX3N0cl9zdiwKKwkJCQkJKGNoYXIqKXNubXBfZXJyc3RyaW5nKCgqcmVzcG9uc2UpLT5lcnJzdGF0KSk7CisJCQkJc3Zfc2V0aXYoZXJyX251bV9zdiwgKCpyZXNwb25zZSktPmVycnN0YXQpOworCQkJCXN2X3NldGl2KGVycl9pbmRfc3YsICgqcmVzcG9uc2UpLT5lcnJpbmRleCk7CiAgICAgICAgICAgICAgICBzdGF0dXMgPSAoKnJlc3BvbnNlKS0+ZXJyc3RhdDsKICAgICAgICAgICAgICAgIGJyZWFrOwogCSB9CkBAIC0xMTY5LDEzICsxMTUyLDEyIEBACiAKICAgICAgIGNhc2UgU1RBVF9USU1FT1VUOgogICAgICAgY2FzZSBTVEFUX0VSUk9SOgotICAgICAgICAgIHN2X2NhdHB2KGVycl9zdHJfc3YsIChjaGFyKilzbm1wX2FwaV9lcnJzdHJpbmcoc3MtPnNfc25tcF9lcnJubykpOwotICAgICAgICAgIHN2X3NldGl2KGVycl9udW1fc3YsIHNzLT5zX3NubXBfZXJybm8pOworCSAgICAgc25tcF9yZXR1cm5fZXJyKHNzLCBlcnJfc3RyX3N2LCBlcnJfbnVtX3N2LCBlcnJfaW5kX3N2KTsKICAgICAgICAgIGJyZWFrOwogCiAgICAgICBkZWZhdWx0OgorCSAgICAgc25tcF9yZXR1cm5fZXJyKHNzLCBlcnJfc3RyX3N2LCBlcnJfbnVtX3N2LCBlcnJfaW5kX3N2KTsKICAgICAgICAgIHN2X2NhdHB2KGVycl9zdHJfc3YsICJzZW5kX3N5bmNfcGR1OiB1bmtub3duIHN0YXR1cyIpOwotICAgICAgICAgc3Zfc2V0aXYoZXJyX251bV9zdiwgc3MtPnNfc25tcF9lcnJubyk7CiAgICAgICAgICBicmVhazsKICAgIH0KIApAQCAtMTI0OCw3ICsxMjMwLDEyIEBACiAgICAgICAgIHJlcGx5X3BkdS0+Y29tbWFuZCA9IFNOTVBfTVNHX1JFU1BPTlNFOwogICAgICAgICByZXBseV9wZHUtPnJlcWlkID0gcGR1LT5yZXFpZDsKICAgICAgICAgcmVwbHlfcGR1LT5lcnJzdGF0ID0gcmVwbHlfcGR1LT5lcnJpbmRleCA9IDA7Ci0gICAgICAgIHNubXBfc2VuZChzcywgcmVwbHlfcGR1KTsKKwlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJeworICAgICAgICAJc25tcF9zZXNzX3NlbmQoc3MsIHJlcGx5X3BkdSk7CisJfSBlbHNlIHsKKwkgICAgICAgIHNubXBfc2VuZChzcywgcmVwbHlfcGR1KTsKKwl9CiAgICAgICB9IGVsc2UgewogICAgICAgICB3YXJuKCJDb3VsZG4ndCBjbG9uZSBQRFUgZm9yIGluZm9ybSByZXNwb25zZSIpOwogICAgICAgfQpAQCAtMTI2Niw3ICsxMjUzLDcgQEAKIAljcCA9IHRyYW5zcG9ydC0+Zl9mbXRhZGRyKHRyYW5zcG9ydCwgcGR1LT50cmFuc3BvcnRfZGF0YSwKIAkJCQkgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKTsKIAlhdl9wdXNoKHRyYXBsaXN0LCBuZXdTVnB2KGNwLCBzdHJsZW4oY3ApKSk7Ci0JZnJlZShjcCk7CisJbmV0c25tcF9mcmVlKGNwKTsKICAgICAgIH0gZWxzZSB7CiAJLyogIFRoaXMgc2hvdWxkbid0IGV2ZXIgaGFwcGVuOyBldmVyeSBzZXNzaW9uIGhhcyBhIHRyYW5zcG9ydC4gICovCiAJYXZfcHVzaCh0cmFwbGlzdCwgbmV3U1ZwdigiIiwgMCkpOwpAQCAtMTgzMywxMyArMTgyMCwxNyBAQAogICAgKiogc25tcF9hc3luY19zZW5kKCkgZnVuY3Rpb24gcmV0dXJucyB0aGUgcmVxaWQgb24gc3VjY2VzcywgMCBvbiBmYWlsdXJlLgogICAgKi8KICAgIGlmIChTdlRSVUUoY29udGV4dC0+cGVybF9jYikpIHsKLSAgICAgIHJlcWlkID0gc25tcF9hc3luY19zZW5kKHNzLCBwZHUsIF9idWxrd2Fsa19hc3luY19jYiwgKHZvaWQgKiljb250ZXh0KTsKKyAgICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisgICAgeworICAgICByZXFpZCA9IHNubXBfc2Vzc19hc3luY19zZW5kKHNzLCBwZHUsIF9idWxrd2Fsa19hc3luY19jYiwgKHZvaWQgKiljb250ZXh0KTsKKyAgICB9IGVsc2UgeworICAgICByZXFpZCA9IHNubXBfYXN5bmNfc2VuZChzcywgcGR1LCBfYnVsa3dhbGtfYXN5bmNfY2IsICh2b2lkICopY29udGV4dCk7CisgICAgfQogCiAgICAgICBEQlBSVCgyLChEQk9VVCAiYnVsa3dhbGtfc2VuZF9wZHUoKTogc25tcF9hc3luY19zZW5kID0+IDB4JTA4WFxuIiwgcmVxaWQpKTsKIAogICAgICAgaWYgKHJlcWlkID09IDApIHsKLQkgc3Zfc2V0cHYoKmVycl9zdHJfc3ZwLCAoY2hhciopc25tcF9hcGlfZXJyc3RyaW5nKHNzLT5zX3NubXBfZXJybm8pKTsKLQkgc3Zfc2V0aXYoKmVycl9udW1fc3ZwLCBzcy0+c19zbm1wX2Vycm5vKTsKKwkgc25tcF9yZXR1cm5fZXJyKHNzLCAqZXJyX251bV9zdnAsICplcnJfaW5kX3N2cCwgKmVycl9zdHJfc3ZwKTsKIAkgZ290byBlcnI7CiAgICAgICB9CiAKQEAgLTI0NTcsNiArMjQ0OCw4IEBACiAJVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgU05NUF9ERUZBVUxUX1RJTUVPVVQpOwogCVRFU1RfQ09OU1RBTlQyKHZhbHVlLCBuYW1lLCBTTk1QX0RFRkFVTFRfVkVSU0lPTiwKICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9ERUZBVUxUX1NOTVBfVkVSU0lPTik7CisJVEVTVF9DT05TVEFOVCh2YWx1ZSwgbmFtZSwgU05NUF9BUElfU0lOR0xFKTsKKwlURVNUX0NPTlNUQU5UKHZhbHVlLCBuYW1lLCBTTk1QX0FQSV9UUkFESVRJT05BTCk7CiAJYnJlYWs7CiAgICAgY2FzZSAnWCc6CiAgICAgICAgICAgICBnb3RvIG5vdF90aGVyZTsKQEAgLTI0NzEsNiArMjQ2NCw0OSBAQAogICAgIHJldHVybiBFTk9FTlQ7CiB9CiAKKy8qIAorICBTaW5jZSBzX3NubXBfZXJybm8gY2FuJ3QgYmUgdHJ1c3RlZCB3aXRoIFNpbmdsZSBTZXNzaW9uLCB0aGlzIGNhbGxzIGVpdGhlcgorICBzbm1wX2Vycm9yIG9yIHNubXBfc2Vzc19lcnJvciB0byBwb3B1bGF0ZSBFcnJvclN0cixFcnJvck51bSwgYW5kIEVycm9ySW5kCisgIGluIFNOTVA6OlNlc3Npb24gb2JqZWN0cworKi8KK3ZvaWQgc25tcF9yZXR1cm5fZXJyKCBzdHJ1Y3Qgc25tcF9zZXNzaW9uICpzcywgU1YgKmVycl9zdHIsIFNWICplcnJfbnVtLCBTViAqZXJyX2luZCApCit7CisJaW50IGVycjsKKwlpbnQgbGliZXJyOworCWNoYXIgKmVycnN0cjsKKwlpZihzcyA9PSBOVUxMKQorCQlyZXR1cm47CisJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCXsKKwkJc25tcF9zZXNzX2Vycm9yKHNzLCAmZXJyLCAmbGliZXJyLCAmZXJyc3RyKTsKKwl9IGVsc2UgeworCQlzbm1wX2Vycm9yKHNzLCAmZXJyLCAmbGliZXJyLCAmZXJyc3RyKTsKKwl9CisJc3ZfY2F0cHYoZXJyX3N0ciwgZXJyc3RyKTsKKwlzdl9zZXRpdihlcnJfbnVtLCBsaWJlcnIpOworCXN2X3NldGl2KGVycl9pbmQsIGVycik7CisJbmV0c25tcF9mcmVlKGVycnN0cik7Cit9CisKKworLyogCisgIGludCBzbm1wX2FwaV9tb2RlKCBpbnQgbW9kZSApIAorICBSZXR1cm5zIG9yIHNldHMgc3RhdGljIGludCBhcGlfbW9kZSBmb3IgcmVmZXJlbmNlIGJ5IGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUKKyAgd2hldGhlciB0byB1c2UgVHJhZGl0aW9uYWwgKG5vbi10aHJlYWRzYWZlKSBvciBTaW5nbGUtU2Vzc2lvbiAodGhyZWFkc2FmZSkKKyAgU05NUCBBUEkgY2FsbHMuCisgCisgIENhbGwgd2l0aCAoaW50KU5VTEwgdG8gcmV0dXJuIHRoZSBjdXJyZW50IG1vZGUsIG9yIHdpdGggU05NUF9BUElfVFJBRElUSU9OQUwKKyAgb3IgU05NUF9BUElfU0lOR0xFIHRvIHNldCB0aGUgY3VycmVudCBtb2RlLiAgKGRlZmluZWQgYWJvdmUpCisgCisgIHBtIHNpZGUgY2FsbCBkZWZhdWx0cyB0byAoaW50KU5VTEwKKyovCitpbnQgc25tcF9hcGlfbW9kZSggaW50IG1vZGUgKQoreworCWlmIChtb2RlID09IDApCisJCXJldHVybiBhcGlfbW9kZTsKKwlhcGlfbW9kZSA9IG1vZGU7CisJcmV0dXJuIGFwaV9tb2RlOworfQogCiBNT0RVTEUgPSBTTk1QCQlQQUNLQUdFID0gU05NUAkJUFJFRklYID0gc25tcAogCkBAIC0yNTAwLDYgKzI1MzYsMTMgQEAKICAgICBDT0RFOgogICAgICAgICBfX2xpYnJhcmllc19pbml0KGFwcG5hbWUpOwogCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAKKyMgUGVybCBjYWxsIGRlZmF1bHRzIHRvIChpbnQpTlVMTCB3aGVuIGdpdmVuIG5vIGFyZ3MsIHNvIGl0IHdpbGwgcmV0dXJuCisjIHRoZSBjdXJyZW50IGFwaV9tb2RlIHZhbHVlcworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2ludCAKK3NubXBfYXBpX21vZGUobW9kZT0wKQorCWludCBtb2RlCiAKIFNubXBTZXNzaW9uICoKIHNubXBfbmV3X3Nlc3Npb24odmVyc2lvbiwgY29tbXVuaXR5LCBwZWVyLCBscG9ydCwgcmV0cmllcywgdGltZW91dCkKQEAgLTI1NDUsNyArMjU4OCwxMiBAQAogICAgICAgICAgICBzZXNzaW9uLnRpbWVvdXQgPSB0aW1lb3V0OyAvKiAxMDAwMDAwTCAqLwogICAgICAgICAgICBzZXNzaW9uLmF1dGhlbnRpY2F0b3IgPSBOVUxMOwogCi0gICAgICAgICAgIHNzID0gc25tcF9vcGVuKCZzZXNzaW9uKTsKKwkgICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJICAgeworCSAgICAgICAgICAgc3MgPSBzbm1wX3Nlc3Nfb3Blbigmc2Vzc2lvbik7CisJICAgfSBlbHNlIHsKKwkJICAgc3MgPSBzbm1wX29wZW4oJnNlc3Npb24pOworCSAgIH0KIAogICAgICAgICAgICBpZiAoc3MgPT0gTlVMTCkgewogCSAgICAgIGlmICh2ZXJib3NlKSB3YXJuKCJlcnJvcjpzbm1wX25ld19zZXNzaW9uOiBDb3VsZG4ndCBvcGVuIFNOTVAgc2Vzc2lvbiIpOwpAQCAtMjU5Nyw3ICsyNjQ1LDcgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVuZDsKIAkgICB9CiAKLQkgICBzZXNzaW9uLnBlZXJuYW1lID0gc3RyZHVwKHBlZXIpOworCSAgIHNlc3Npb24ucGVlcm5hbWUgPSBwZWVyOwogICAgICAgICAgICBzZXNzaW9uLnJldHJpZXMgPSByZXRyaWVzOyAvKiA1ICovCiAgICAgICAgICAgIHNlc3Npb24udGltZW91dCA9IHRpbWVvdXQ7IC8qIDEwMDAwMDBMICovCiAgICAgICAgICAgIHNlc3Npb24uYXV0aGVudGljYXRvciA9IE5VTEw7CkBAIC0yNzE0LDE0ICsyNzYyLDI0IEBACiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgc3MgPSBzbm1wX29wZW4oJnNlc3Npb24pOworCSAgIGlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkgICB7CisJICAgICAgICAgICBzcyA9IHNubXBfc2Vzc19vcGVuKCZzZXNzaW9uKTsKKwkgICB9IGVsc2UgeworCQkgICBzcyA9IHNubXBfb3Blbigmc2Vzc2lvbik7CisJICAgfQogCiAgICAgICAgICAgIGlmIChzcyA9PSBOVUxMKSB7CiAJICAgICAgaWYgKHZlcmJvc2UpIHdhcm4oImVycm9yOnNubXBfbmV3X3YzX3Nlc3Npb246Q291bGRuJ3Qgb3BlbiBTTk1QIHNlc3Npb24iKTsKICAgICAgICAgICAgfQogICAgICAgICBlbmQ6CiAgICAgICAgICAgIFJFVFZBTCA9IHNzOwotCSAgIGZyZWUgKHNlc3Npb24uY29udGV4dEVuZ2luZUlEKTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5zZWN1cml0eVByaXZMb2NhbEtleSk7CisJICAgbmV0c25tcF9mcmVlKHNlc3Npb24uc2VjdXJpdHlQcml2UHJvdG8pOworCSAgIG5ldHNubXBfZnJlZShzZXNzaW9uLnNlY3VyaXR5QXV0aExvY2FsS2V5KTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5zZWN1cml0eUF1dGhQcm90byk7CisJICAgbmV0c25tcF9mcmVlKHNlc3Npb24uY29udGV4dEVuZ2luZUlEKTsKKwkgICBuZXRzbm1wX2ZyZWUoc2Vzc2lvbi5zZWN1cml0eUVuZ2luZUlEKTsKIAl9CiAgICAgICAgIE9VVFBVVDoKICAgICAgICAgUkVUVkFMCkBAIC0yNzY4LDggKzI4MjYsOCBAQAogCSAgIH0KICAgICAgICAgICAgLyogV0FSTklORyBMRUFLQUdFIGJ1dCBJIGNhbnQgZnJlZSBsaWIgbWVtb3J5IHVuZGVyIHdpbjMyICovCiAgICAgICAgICAgIHNzLT5jb21tdW5pdHlfbGVuID0gc3RybGVuKChjaGFyICopY29tbXVuaXR5KTsKLSAgICAgICAgICAgc3MtPmNvbW11bml0eSA9ICh1X2NoYXIgKilzdHJkdXAoY29tbXVuaXR5KTsKLQkgICBzcy0+cGVlcm5hbWUgPSBzdHJkdXAocGVlcik7CisgICAgICAgICAgIHNzLT5jb21tdW5pdHkgPSAodV9jaGFyICopbmV0c25tcF9zdHJkdXAoY29tbXVuaXR5KTsKKwkgICBzcy0+cGVlcm5hbWUgPSBuZXRzbm1wX3N0cmR1cChwZWVyKTsKIAkgICBzcy0+bG9jYWxfcG9ydCA9IGxwb3J0OwogICAgICAgICAgICBzcy0+cmV0cmllcyA9IHJldHJpZXM7IC8qIDUgKi8KICAgICAgICAgICAgc3MtPnRpbWVvdXQgPSB0aW1lb3V0OyAvKiAxMDAwMDAwTCAqLwpAQCAtMzAxMSwxNSArMzA2OSwxOSBAQAogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5wZXJsX2NiID0gbmV3U1ZzdihwZXJsX2NhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+c2Vzc19yZWYgPSBuZXdSVl9pbmMoU3ZSVihzZXNzX3JlZikpOwogCisJCWlmKGFwaV9tb2RlID09IFNOTVBfQVBJX1NJTkdMRSkKKwkJeworICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0gZWxzZSB7CiAgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCopeHNfY2JfZGF0YSk7CisJCX0KICAgICAgICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcyhzdl8ybW9ydGFsKG5ld1NWaXYoc3RhdHVzKSkpOyAvKiBwdXNoIHRoZSByZXFpZD8/ICovCiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgICAgICAgc3ZfY2F0cHYoKmVycl9zdHJfc3ZwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopc25tcF9hcGlfZXJyc3RyaW5nKHNzLT5zX3NubXBfZXJybm8pKTsKLSAgICAgICAgICAgICAgICAgICAgc3Zfc2V0aXYoKmVycl9udW1fc3ZwLCBzcy0+c19zbm1wX2Vycm5vKTsKKwkJCQkJc25tcF9yZXR1cm5fZXJyKHNzLCAqZXJyX3N0cl9zdnAsICplcnJfbnVtX3N2cCwgKmVycl9pbmRfc3ZwKTsKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7CiAgICAgICAgICAgICAgICAgIH0KIAkJIGdvdG8gZG9uZTsKQEAgLTMxOTQsMTUgKzMyNTYsMTkgQEAKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+cGVybF9jYiA9IG5ld1NWc3YocGVybF9jYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnNlc3NfcmVmID0gbmV3U1ZzdihzZXNzX3JlZik7CiAKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisJCSBzdGF0dXMgPSBzbm1wX3Nlc3NfYXN5bmNfc2VuZChzcywgcGR1LCBfX3NubXBfeHNfY2IsCisJCQkJCSAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9CiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KHN0YXR1cykpKTsgLyogcHVzaCB0aGUgcmVxaWQ/PyAqLwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X2NhdHB2KCplcnJfc3RyX3N2cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X3NldGl2KCplcnJfbnVtX3N2cCwgc3MtPnNfc25tcF9lcnJubyk7CisJICAJICAgIHNubXBfcmV0dXJuX2VycihzcywgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnAsICplcnJfc3RyX3N2cCk7ICAKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKCZzdl91bmRlZik7CiAgICAgICAgICAgICAgICAgIH0KIAkJIGdvdG8gZG9uZTsKQEAgLTM0MzEsMTUgKzM0OTcsMTkgQEAKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+cGVybF9jYiA9IG5ld1NWc3YocGVybF9jYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnNlc3NfcmVmID0gbmV3U1ZzdihzZXNzX3JlZik7CiAKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisgICAgICAgICAgICAgICAgIHN0YXR1cyA9IHNubXBfc2Vzc19hc3luY19zZW5kKHNzLCBwZHUsIF9fc25tcF94c19jYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKil4c19jYl9kYXRhKTsKKwkJfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9hc3luY19zZW5kKHNzLCBwZHUsIF9fc25tcF94c19jYiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkKil4c19jYl9kYXRhKTsKKwkJfQogICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZpdihzdGF0dXMpKSk7IC8qIHB1c2ggdGhlIHJlcWlkPz8gKi8KICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOwotICAgICAgICAgICAgICAgICAgICBzdl9jYXRwdigqZXJyX3N0cl9zdnAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjaGFyKilzbm1wX2FwaV9lcnJzdHJpbmcoc3MtPnNfc25tcF9lcnJubykpOwotICAgICAgICAgICAgICAgICAgICBzdl9zZXRpdigqZXJyX251bV9zdnAsIHNzLT5zX3NubXBfZXJybm8pOworCQkJCQlzbm1wX3JldHVybl9lcnIoc3MsICplcnJfbnVtX3N2cCwgKmVycl9pbmRfc3ZwLCAqZXJyX3N0cl9zdnApOwogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoJnN2X3VuZGVmKTsKICAgICAgICAgICAgICAgICAgfQogCQkgZ290byBkb25lOwpAQCAtMzY2OSwxNSArMzczOSwxOSBAQAogICAgICAgICAgICAgICAgICB4c19jYl9kYXRhLT5wZXJsX2NiID0gbmV3U1ZzdihwZXJsX2NhbGxiYWNrKTsKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+c2Vzc19yZWYgPSBuZXdTVnN2KHNlc3NfcmVmKTsKIAorCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKyAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9zZXNzX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9CiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KHN0YXR1cykpKTsgLyogcHVzaCB0aGUgcmVxaWQ/PyAqLwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X2NhdHB2KCplcnJfc3RyX3N2cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X3NldGl2KCplcnJfbnVtX3N2cCwgc3MtPnNfc25tcF9lcnJubyk7CisJCQkJCXNubXBfcmV0dXJuX2VycihzcywgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnAsICplcnJfc3RyX3N2cCk7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcygmc3ZfdW5kZWYpOwogICAgICAgICAgICAgICAgICB9CiAJCSBnb3RvIGRvbmU7CkBAIC00MDI4LDcgKzQxMDIsNyBAQAogCSAgICAgIH0KIAogCSAgICAgIC8qIFNlbnQgb2theS4uLiAgUmV0dXJuIHRoZSByZXF1ZXN0IElEIGluICdwZHUnIGFzIGFuIFN2SVYuICovCi0JICAgICAgREJQUlQoMSwoREJPVVQgIk9rYXksIHJlcXVlc3QgaWQgaXMgJXBcbiIsIHBkdSkpOworCSAgICAgIERCUFJUKDEsKERCT1VUICJPa2F5LCByZXF1ZXN0IGlkIGlzICVsZFxuIiwgKGxvbmcpKGludHB0cl90KXBkdSkpOwogLyoJICAgICAgWFNSRVRVUk5fSVYoKGludHB0cl90KXBkdSk7ICovCiAJICAgICAgWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZpdigoSVYpcGR1KSkpOwogCSAgICAgIFhTUkVUVVJOKDEpOwpAQCAtNDIwOCw3ICs0MjgyLDcgQEAKICAgICAgICAgICAgICAgfSAvKiBmb3IgYWxsIHRoZSB2YXJzICovCiAgICAgICAgICAgICAgIH0KIAotCSAgICAgIHBkdS0+ZW50ZXJwcmlzZSA9IChvaWQgKiltYWxsb2MoIE1BWF9PSURfTEVOICogc2l6ZW9mKG9pZCkpOworCSAgICAgIHBkdS0+ZW50ZXJwcmlzZSA9IChvaWQgKiluZXRzbm1wX21hbGxvYyhNQVhfT0lEX0xFTiAqIHNpemVvZihvaWQpKTsKICAgICAgICAgICAgICAgdHAgPSBfX3RhZzJvaWQoZW50ZXJwcmlzZSxOVUxMLCBwZHUtPmVudGVycHJpc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZwZHUtPmVudGVycHJpc2VfbGVuZ3RoLCBOVUxMLCBiZXN0X2d1ZXNzKTsKICAgCSAgICAgIGlmIChwZHUtPmVudGVycHJpc2VfbGVuZ3RoID09IDApIHsKQEAgLTQyMTksMTIgKzQyOTMsMTIgQEAKIAkJICBhZ2VudC1hZGRyZXNzIGZpZWxkIHRvIHRoYXQuICBPdGhlcndpc2Ugc2V0IGl0IHRvCiAJCSAgb3VyIGFkZHJlc3MuICAqLwogICAgICAgICAgICAgICBpZiAoYWdlbnQgJiYgc3RybGVuKGFnZW50KSkgewotICAgICAgICAgICAgICAgICBpZiAoX19wYXJzZV9hZGRyZXNzKGFnZW50KSA9PSAtMSAmJiB2ZXJib3NlKSB7Ci0JCSAgIHdhcm4oImVycm9yOnRyYXA6aW52YWxpZCBhZ2VudCBhZGRyZXNzOiAlcyIsIGFnZW50KTsKLQkJICAgZ290byBlcnI7Ci0gICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0JCSAgICooKGluX2FkZHJfdCAqKXBkdS0+YWdlbnRfYWRkcikgPSBfX3BhcnNlX2FkZHJlc3MoYWdlbnQpOwotCQkgfQorICAgICAgICAgICAgICAgICBpZiAoMCA+IG5ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NChhZ2VudCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluX2FkZHJfdCAqKXBkdS0+YWdlbnRfYWRkcikpeworICAgICAgICAgICAgICAgICAgICAgaWYgKHZlcmJvc2UpCisgICAgICAgICAgICAgICAgICAgICAgICAgd2FybigiZXJyb3I6dHJhcDppbnZhbGlkIGFnZW50IGFkZHJlc3M6ICVzIiwgYWdlbnQpOworICAgICAgICAgICAgICAgICAgICAgZ290byBlcnI7CisgICAgICAgICAgICAgICAgIH0gCiAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICooKGluX2FkZHJfdCAqKXBkdS0+YWdlbnRfYWRkcikgPSBnZXRfbXlhZGRyKCk7CiAgICAgICAgICAgICAgIH0KQEAgLTQyMzIsOSArNDMwNiwxNCBAQAogICAgICAgICAgICAgICBwZHUtPnNwZWNpZmljX3R5cGUgPSBzcGVjaWZpYzsKICAgICAgICAgICAgICAgcGR1LT50aW1lID0gdXB0aW1lOwogCi0gICAgICAgICAgICAgIGlmIChzbm1wX3NlbmQoc3MsIHBkdSkgPT0gMCkgeworCSAgICAgaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCSAgICAgeworCQlpZihzbm1wX3Nlc3Nfc2VuZChzcyxwZHUpID09IDApCisJCQlzbm1wX2ZyZWVfcGR1KHBkdSk7CisJICAgICB9IGVsc2UgeworICAgICAgICAgICAgICBpZiAoc25tcF9zZW5kKHNzLCBwZHUpID09IDApIAogCSAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKLSAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgWFBVU0hzKHN2XzJtb3J0YWwobmV3U1ZwdihaRVJPX0JVVF9UUlVFLDApKSk7CiAgICAgICAgICAgIH0gZWxzZSB7CiBlcnI6CkBAIC00MzY1LDkgKzQ0NDQsMTQgQEAKICAgICAgICAgICAgICAgICAgfSAvKiBpZiB2YXJfcmVmIGlzIG9rICovCiAgICAgICAgICAgICAgIH0gLyogZm9yIGFsbCB0aGUgdmFycyAqLwogCi0gICAgICAgICAgICAgIGlmIChzbm1wX3NlbmQoc3MsIHBkdSkgPT0gMCkgeworCSAgICAgaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCSAgICAgeworICAgICAgICAgICAgICBpZiAoc25tcF9zZXNzX3NlbmQoc3MsIHBkdSkgPT0gMCkKIAkgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgIH0KKwkgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIGlmIChzbm1wX3NlbmQoc3MsIHBkdSkgPT0gMCkgCisJICAgICAgICAgc25tcF9mcmVlX3BkdShwZHUpOworICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVnB2KFpFUk9fQlVUX1RSVUUsMCkpKTsKICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTQ1MTEsMTUgKzQ1OTUsMTkgQEAKICAgICAgICAgICAgICAgICAgeHNfY2JfZGF0YS0+cGVybF9jYiA9IG5ld1NWc3YocGVybF9jYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgIHhzX2NiX2RhdGEtPnNlc3NfcmVmID0gbmV3UlZfaW5jKFN2UlYoc2Vzc19yZWYpKTsKIAorCQlpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJCXsKKyAgICAgICAgICAgICAgICAgc3RhdHVzID0gc25tcF9zZXNzX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9IGVsc2UgewogICAgICAgICAgICAgICAgICBzdGF0dXMgPSBzbm1wX2FzeW5jX3NlbmQoc3MsIHBkdSwgX19zbm1wX3hzX2NiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQqKXhzX2NiX2RhdGEpOworCQl9CiAgICAgICAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkgewogICAgICAgICAgICAgICAgICAgICBYUFVTSHMoc3ZfMm1vcnRhbChuZXdTVml2KHN0YXR1cykpKTsgLyogcHVzaCB0aGUgcmVxaWQ/PyAqLwogICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X2NhdHB2KCplcnJfc3RyX3N2cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNoYXIqKXNubXBfYXBpX2VycnN0cmluZyhzcy0+c19zbm1wX2Vycm5vKSk7Ci0gICAgICAgICAgICAgICAgICAgIHN2X3NldGl2KCplcnJfbnVtX3N2cCwgc3MtPnNfc25tcF9lcnJubyk7CisJCQkJCXNubXBfcmV0dXJuX2VycihzcywgKmVycl9udW1fc3ZwLCAqZXJyX2luZF9zdnAsICplcnJfc3RyX3N2cCk7CiAgICAgICAgICAgICAgICAgICAgIFhQVVNIcygmc3ZfdW5kZWYpOwogICAgICAgICAgICAgICAgICB9CiAJCSBnb3RvIGRvbmU7CkBAIC00Nzc1LDExICs0ODYzLDE4IEBACiAJfQogCiAKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBOb3RlOiBzcz0oU25tcFNlc3Npb24qKU5VTEwgaXMgc28gJlNOTVA6Ok1haW5Mb29wKCkgY2FuIHN0aWxsIGJlIGNhbGxlZCAKKyMgd2l0aG91dCBhIHNlc3MgaGFuZGxlciBhcmd1bWVudCwgdGhpcyB3YXkgSSdtIG5vdCBicmVha2luZyBhbnlvbmUncyBvbGQgY29kZQorIworIyBzZWUgTWFpbkxvb3AoKSBpbiBTTk1QLnBtIGZvciBtb3JlIGRldGFpbHMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogdm9pZAotc25tcF9tYWluX2xvb3AodGltZW91dF9zZWMsdGltZW91dF91c2VjLHBlcmxfY2FsbGJhY2spCitzbm1wX21haW5fbG9vcCh0aW1lb3V0X3NlYyx0aW1lb3V0X3VzZWMscGVybF9jYWxsYmFjayxzcz0oU25tcFNlc3Npb24qKU5VTEwpCiAJaW50IAl0aW1lb3V0X3NlYwogCWludCAJdGltZW91dF91c2VjCiAJU1YgKglwZXJsX2NhbGxiYWNrCisJU25tcFNlc3Npb24gKnNzCiAJQ09ERToKIAl7CiAgICAgICAgIGludCBudW1mZHMsIGZkX2NvdW50OwpAQCAtNDc5MSw3ICs0ODg2LDYgQEAKICAgICAgICAgaW50IGJsb2NrOwogCVNWICpjYjsKIAotCiAgCW1haW5sb29wX2ZpbmlzaCA9IDA7CiAKIAlpdHZwID0gJmludGVydmFsOwpAQCAtNDgwOSw3ICs0OTAzLDEyIEBACiAgICAgICAgICAgIGJsb2NrID0gMTsKICAgICAgICAgICAgdHZwID0gJnRpbWVfdmFsOwogICAgICAgICAgICB0aW1lcmNsZWFyKHR2cCk7CisJICBpZihhcGlfbW9kZSA9PSBTTk1QX0FQSV9TSU5HTEUpCisJICB7CisgICAgICAgICAgIHNubXBfc2Vzc19zZWxlY3RfaW5mbyhzcywmbnVtZmRzLCAmZmRzZXQsIHR2cCwgJmJsb2NrKTsKKwkgIH0gZWxzZSB7CiAgICAgICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJmZkc2V0LCB0dnAsICZibG9jayk7CisJICB9CiAgICAgICAgICAgIF9fcmVjYWxjX3RpbWVvdXQodHZwLGN0dnAsbHR2cCxpdHZwLCZibG9jayk7CiAgICAgICAgICAgICMgcHJpbnRmKCJwcmUtc2VsZWN0OiBudW1mZHMgPSAlbGQsIGJsb2NrID0gJWxkXG4iLCBudW1mZHMsIGJsb2NrKTsKICAgICAgICAgICAgaWYgKGJsb2NrID09IDEpIHR2cCA9IE5VTEw7IC8qIGJsb2NrIHdpdGhvdXQgdGltZW91dCAqLwpAQCAtNDgxOCw3ICs0OTE3LDEyIEBACiAgICAgICAgICAgIGlmIChmZF9jb3VudCA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgRU5URVI7CiAgICAgICAgICAgICAgICAgICAgICAgIFNBVkVUTVBTOwotICAgICAgICAgICAgICBzbm1wX3JlYWQoJmZkc2V0KTsKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisJCSAgc25tcF9zZXNzX3JlYWQoc3MsICZmZHNldCk7CisJCX0gZWxzZSB7CisgICAgICAgICAgICAgIAkgIHNubXBfcmVhZCgmZmRzZXQpOworCQl9CiAgICAgICAgICAgICAgICAgICAgICAgIEZSRUVUTVBTOwogICAgICAgICAgICAgICAgICAgICAgICBMRUFWRTsKIApAQCAtNDgyNyw3ICs0OTMxLDEyIEBACiAJCSBTUEFHQUlOOwogCQkgRU5URVI7CiAJCSBTQVZFVE1QUzsKKwkJaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCQl7CisJCXNubXBfc2Vzc190aW1lb3V0KCBzcyApOworCQl9IGVsc2UgeyAKICAgICAgICAgICAgICAgICAgc25tcF90aW1lb3V0KCk7CisJCX0KICAgICAgICAgICAgICAgICAgaWYgKCF0aW1lcmlzc2V0KGN0dnApKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChTdlRSVUUocGVybF9jYWxsYmFjaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgLyogc3ZfMm1vcnRhbChwZXJsX2NhbGxiYWNrKTsgKi8KQEAgLTUwNDUsOSArNTE1NCw3IEBACiAJICAgICAgICAgIC8qIHdlIG11c3QgYmUgbG9va2luZyBhdCBkZXNjcmlwdGlvbiAqLwogICAgICAgICAgICAgICAgICBzdl9zZXRwdihyZXQsdHAtPmRlc2NyaXB0aW9uKTsKICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgIGNhc2UgJ2knOiAvKiBpbmRleGVzICovCi0gICAgICAgICAgICAgICAgIGlmIChzdHJuY21wKCJpbmRleGVzIiwga2V5LCBzdHJsZW4oa2V5KSkpIGJyZWFrOwotICAgICAgICAgICAgICAgICBpbmRleF9hdiA9IG5ld0FWKCk7CisgICAgICAgICAgICAgIGNhc2UgJ2knOiAvKiBpbmRleGVzLCBpbXBsaWVkICovCiAgICAgICAgICAgICAgICAgIGlmICh0cC0+YXVnbWVudHMpIHsKICAJICAgICAgICAgICAgIGNsZWFyX3RyZWVfZmxhZ3MoZ2V0X3RyZWVfaGVhZCgpKTsgCiAgICAgICAgICAgICAgICAgICAgICB0cHRtcCA9IGZpbmRfYmVzdF90cmVlX25vZGUodHAtPmF1Z21lbnRzLCBnZXRfdHJlZV9oZWFkKCksIE5VTEwpOwpAQCAtNTA1Nyw2ICs1MTY0LDE5IEBACiAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICB0cHRtcCA9IHRwOwogICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgIGlmIChzdHJjbXAoImltcGxpZWQiLCBrZXkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgIC8qIG9ubHkgdGhlIGxhc3QgaW5kZXggY2FuIGJlIGltcGxpZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgIGludCBpc2ltcGxpZWQgPSAwOworICAgICAgICAgICAgICAgICAgICAgaWYgKHRwdG1wICYmIHRwdG1wLT5pbmRleGVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yKGlwPXRwdG1wLT5pbmRleGVzOyBpcC0+bmV4dDsgaXAgPSBpcC0+bmV4dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICBpc2ltcGxpZWQgPSBpcC0+aXNpbXBsaWVkOworICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgc3Zfc2V0aXYocmV0LCBpc2ltcGxpZWQpOworICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgaWYgKHN0cm5jbXAoImluZGV4ZXMiLCBrZXksIHN0cmxlbihrZXkpKSkgYnJlYWs7CisgICAgICAgICAgICAgICAgIGluZGV4X2F2ID0gbmV3QVYoKTsKICAgICAgICAgICAgICAgICAgaWYgKHRwdG1wKQogICAgICAgICAgICAgICAgICAgICAgZm9yKGlwPXRwdG1wLT5pbmRleGVzOyBpcCAhPSBOVUxMOyBpcCA9IGlwLT5uZXh0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgYXZfcHVzaChpbmRleF9hdixuZXdTVnB2KChpcC0+aWxhYmVsKSxzdHJsZW4oaXAtPmlsYWJlbCkpKTsKQEAgLTUyMzgsNiArNTM1OCwxNCBAQAogCVNubXBTZXNzaW9uICpzZXNzX3B0cgogCUNPREU6CiAJeworCWlmKHNlc3NfcHRyICE9IE5VTEwpCisJeworIAkgaWYoYXBpX21vZGUgPT0gU05NUF9BUElfU0lOR0xFKQorCSB7CisgICAgICAgICAgIHNubXBfc2Vzc19jbG9zZSggc2Vzc19wdHIgKTsKKwkgfSBlbHNlIHsgCiAgICAgICAgICAgIHNubXBfY2xvc2UoIHNlc3NfcHRyICk7CisJIH0KKwl9CiAJfQogCmRpZmYgLS1naXQgYS9wZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsIGIvcGVybC9TTk1QL3Qvc3RhcnRhZ2VudC5wbAppbmRleCA5NWNkMzhlLi4zZTkyYzEyIDEwMDY0NAotLS0gYS9wZXJsL1NOTVAvdC9zdGFydGFnZW50LnBsCisrKyBiL3BlcmwvU05NUC90L3N0YXJ0YWdlbnQucGwKQEAgLTM5LDQzICszOSw1MCBAQAogICByZXF1aXJlIFdpbjMyOjpQcm9jZXNzOwogfQogCi1zdWIgc25tcHRlc3RfY2xlYW51cCB7Ci0gICAgc2xlZXAgMTsgIyBzdHJhbmdlbHkgd2UgbmVlZCB0byB3YWl0IGZvciBwaWQgZmlsZXMgdG8gYXBwZWFyID8/Ci0gICAgaWYgKCgtZSAidC9zbm1wZC5waWQiKSAmJiAoLXIgInQvc25tcGQucGlkIikpIHsKLSAgICAgICAgI3dhcm4gIlxuU3RvcHBpbmcgYWdlbnRzIGZvciB0ZXN0IHNjcmlwdCAkMFxuIjsKLSAgICAgICAgIyBNYWtpbmcgc3VyZSB0aGF0IGFueSBydW5uaW5nIGFnZW50cyBhcmUga2lsbGVkLgotCSMgd2FybiAia2lsbGluZyBzbm1wZDoiLCBgY2F0IHQvc25tcGQucGlkYCwgIlxuIjsKLSAgICAgICAgaWYgKCReTyAhfiAvd2luMzIvaSkgewotICAgICAgICAgIHN5c3RlbSAia2lsbCBgY2F0IHQvc25tcGQucGlkYCA+IC9kZXYvbnVsbCAyPiYxIjsKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBvcGVuKEgsICI8dC9zbm1wZC5waWQiKTsKLSAgICAgICAgICBteSAkcGlkID0gKDxIPik7Ci0gICAgICAgICAgY2xvc2UgKEgpOwotICAgICAgICAgIGlmICgkcGlkID4gMCkgewotICAgICAgICAgICAgV2luMzI6OlByb2Nlc3M6OktpbGxQcm9jZXNzKCRwaWQsIDApCi0gICAgICAgICAgfQotICAgICAgICB9Ci0JdW5saW5rICJ0L3NubXBkLnBpZCI7CitzdWIgcnVuX2FzeW5jIHsKKyAgbXkgKCRwaWRmaWxlLCAkY21kLCBAYXJncykgPSBAXzsKKyAgaWYgKC1yICIkY21kIiBhbmQgLXggIiRjbWQiKSB7CisgICAgaWYgKCReTyA9fiAvd2luMzIvaSkgeworICAgICAgJGNtZCA9fiBzL1wvL1xcL2c7CisgICAgICBzeXN0ZW0gInN0YXJ0IFwiJGNtZFwiIC9taW4gY21kIC9jIFwiJGNtZCBAYXJncyAyPiYxXCIiOworICAgIH0gZWxzZSB7CisgICAgICBzeXN0ZW0gIiRjbWQgQGFyZ3MgMj4mMSI7CiAgICAgfQotICAgIGlmICgoLWUgInQvc25tcHRyYXBkLnBpZCIpICYmICgtciAidC9zbm1wdHJhcGQucGlkIikpIHsKLSAgICAgICAgIyBNYWtpbmcgc3VyZSB0aGF0IGFueSBydW5uaW5nIGFnZW50cyBhcmUga2lsbGVkLgotCSMgd2FybiAia2lsbGluZyBzbm1wdHJhcDoiLCBgY2F0IHQvc25tcHRyYXBkLnBpZGAsICJcbiI7Ci0gICAgICAgIGlmICgkXk8gIX4gL3dpbjMyL2kpIHsKLSAgICAgICAgICBzeXN0ZW0gImtpbGwgYGNhdCB0L3NubXB0cmFwZC5waWRgID4gL2Rldi9udWxsIDI+JjEiOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIG9wZW4oSCwgIjx0L3NubXB0cmFwZC5waWQiKTsKLSAgICAgICAgICBteSAkcGlkID0gKDxIPik7Ci0gICAgICAgICAgY2xvc2UgKEgpOwotICAgICAgICAgIGlmICgkcGlkID4gMCkgewotICAgICAgICAgICAgV2luMzI6OlByb2Nlc3M6OktpbGxQcm9jZXNzKCRwaWQsIDApCi0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgICAgCi0JdW5saW5rICJ0L3NubXB0cmFwZC5waWQiOworICAgICMgV2FpdCBhdCBtb3N0IHRocmVlIHNlY29uZHMgZm9yIHRoZSBwaWQgZmlsZSB0byBhcHBlYXIuCisgICAgZm9yICgkaSA9IDA7ICgkaSA8IDMpICYmICEgKC1yICIkcGlkZmlsZSIpOyArKyRpKSB7CisgICAgICBzbGVlcCAxOwogICAgIH0KKyAgfSBlbHNlIHsKKyAgICB3YXJuICJDb3VsZG4ndCBydW4gJGNtZFxuIjsKKyAgfQogfQorCitzdWIgc25tcHRlc3RfY2xlYW51cCB7CisgIGtpbGxfYnlfcGlkX2ZpbGUoInQvc25tcGQucGlkIik7CisgIHVubGluaygidC9zbm1wZC5waWQiKTsKKyAga2lsbF9ieV9waWRfZmlsZSgidC9zbm1wdHJhcGQucGlkIik7CisgIHVubGluaygidC9zbm1wdHJhcGQucGlkIik7Cit9CisKK3N1YiBraWxsX2J5X3BpZF9maWxlIHsKKyAgaWYgKCgtZSAiJF9bMF0iKSAmJiAoLXIgIiRfWzBdIikpIHsKKyAgICBpZiAoJF5PICF+IC93aW4zMi9pKSB7CisgICAgICAjIFVuaXggb3IgV2luZG93cyArIEN5Z3dpbi4KKyAgICAgIHN5c3RlbSAia2lsbCBgY2F0ICRfWzBdYCA+IC9kZXYvbnVsbCAyPiYxIjsKKyAgICB9IGVsc2UgeworICAgICAgIyBXaW5kb3dzICsgTVNWQyBvciBXaW5kb3dzICsgTWluR1cuCisgICAgICBvcGVuKEgsICI8JF9bMF0iKTsKKyAgICAgIG15ICRwaWQgPSAoPEg+KTsKKyAgICAgIGNsb3NlIChIKTsKKyAgICAgIGlmICgkcGlkID4gMCkgeworICAgICAgICBXaW4zMjo6UHJvY2Vzczo6S2lsbFByb2Nlc3MoJHBpZCwgMCkKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworCisjIFN0b3AgYW55IHByb2Nlc3NlcyBzdGFydGVkIGR1cmluZyBhIHByZXZpb3VzIHRlc3QuCiBzbm1wdGVzdF9jbGVhbnVwKCk7CiAKICNPcGVuIHRoZSBzbm1wdGVzdC5jbWQgZmlsZSBhbmQgZ2V0IHRoZSBpbmZvCkBAIC05OCw0OCArMTA1LDIxIEBACiAgIGRpZSAoIkNvdWxkIG5vdCBzdGFydCBhZ2VudC4gQ291bGRuJ3QgZmluZCBzbm1wdGVzdC5jbWQgZmlsZVxuIik7CiB9CiAKKyMgU3RhcnQgc25tcGQgYW5kIHNubXB0cmFwZC4KKwogI3dhcm4gIlxuU3RhcnRpbmcgYWdlbnRzIGZvciB0ZXN0IHNjcmlwdCAkMFxuIjsKIAotaWYgKCReTyAhfiAvd2luMzIvaSkgewotICAjIFVuaXgKLSAgaWYgKCRzbm1wZF9jbWQpIHsKLSAgICBpZiAoLXIgJHNubXBkX2NtZCBhbmQgLXggJHNubXBkX2NtZCkgewotICAgICAgJGJhc2VkaXIgPSBgcHdkYDsKLSAgICAgIGNob21wICRiYXNlZGlyOwotICAgICAgc3lzdGVtICIkc25tcGRfY21kIC1yIC1MZiB0L3NubXB0ZXN0LmxvZyAtTSskbWliZGlyIC1DIC1jICRiYXNlZGlyL3Qvc25tcHRlc3QuY29uZiAtcCAkYmFzZWRpci90L3NubXBkLnBpZCAke2FnZW50X2hvc3R9OiR7YWdlbnRfcG9ydH0gPiAvZGV2L251bGwgMj4mMSI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHdhcm4oIkNvdWxkbid0IHJ1biBzbm1wZFxuIik7Ci0gICAgfQotICB9Ci0gIGlmICgkc25tcHRyYXBkX2NtZCkgewotICAgIGlmICgtciAkc25tcHRyYXBkX2NtZCBhbmQgLXggJHNubXB0cmFwZF9jbWQpIHsKLSAgICAgIHN5c3RlbSAiJHNubXB0cmFwZF9jbWQgLXAgdC9zbm1wdHJhcGQucGlkIC1NKyRtaWJkaXIgLUMgLWMgdC9zbm1wdGVzdC5jb25mIC1DICR7YWdlbnRfaG9zdH06JHt0cmFwX3BvcnR9ID4gL2Rldi9udWxsIDI+JjEiOwotICAgIH0gZWxzZSB7Ci0gICAgICB3YXJuKCJDb3VsZG4ndCBydW4gc25tcHRyYXBkXG4iKTsKLSAgICB9Ci0gIH0KK215ICRzY3JpcHRuYW1lID0gInNubXB0ZXN0IjsKK2lmICgkMCA9fiAvXnRbXC9cXF0oLiopXC50JC8pIHsKKyAgJHNjcmlwdG5hbWUgPSAkMTsKIH0KLWVsc2UgewotICAjIFdpbmRvd3MKLSAgaWYgKCRzbm1wZF9jbWQpIHsKLSAgICAgIGlmICgtciAkc25tcGRfY21kKSB7Ci0gICAgICAgICNwcmludCBTVERFUlIgInN0YXJ0IFwiU05NUERcIiAvbWluIFwiJHNubXBkX2NtZFwiIC1yIC1MZiB0L3NubXB0ZXN0LmxvZyAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgLXAgdC9zbm1wZC5waWQgJGFnZW50X3BvcnQgPiBudWxcbiI7Ci0gICAgICBzeXN0ZW0gInN0YXJ0IFwiU05NUERcIiAvbWluIFwiJHNubXBkX2NtZFwiIC1yIC1MZiB0L3NubXB0ZXN0LmxvZyAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgLXAgdC9zbm1wZC5waWQgJGFnZW50X3BvcnQgPiBudWwiOwotICAgIH0gZWxzZSB7Ci0gICAgICB3YXJuKCJDb3VsZG4ndCBydW4gc25tcGRcbiIpOwotICAgIH0KLSAgfQotICBpZiAoJHNubXB0cmFwZF9jbWQpIHsKLSAgICBpZiAoLXIgJHNubXB0cmFwZF9jbWQpIHsKLSAgICAgICNwcmludCBTVERFUlIgInN0YXJ0IC9taW4gXCJTTk1QVFJBUERcIiBcIiRzbm1wdHJhcGRfY21kXCIgLUxmIHQvc25tcHRyYXBkdGVzdC5sb2cgLXAgdC9zbm1wdHJhcGQucGlkIC1DIC1jIHQvc25tcHRlc3QuY29uZiAkdHJhcF9wb3J0ID4gbnVsXG4iOwotICAgICAgc3lzdGVtICJzdGFydCAvbWluIFwiU05NUFRSQVBEXCIgXCIkc25tcHRyYXBkX2NtZFwiIC1MZiB0L3NubXB0cmFwZHRlc3QubG9nIC1wIHQvc25tcHRyYXBkLnBpZCAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgJHRyYXBfcG9ydCA+IG51bCI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHdhcm4oIkNvdWxkbid0IHJ1biBzbm1wdHJhcGRcbiIpOwotICAgIH0KLSAgfQotICBzbGVlcCAyOyAjIEdpdmUgcHJvZ3JhbXMgdGltZSB0byBzdGFydAogCi19IAoraWYgKCRzbm1wZF9jbWQpIHsKKyAgcnVuX2FzeW5jKCJ0L3NubXBkLnBpZCIsICIkc25tcGRfY21kIiwgIi1yIC1kIC1MZiB0L3NubXBkLSRzY3JpcHRuYW1lLmxvZyAtTSskbWliZGlyIC1DIC1jIHQvc25tcHRlc3QuY29uZiAtcCB0L3NubXBkLnBpZCAke2FnZW50X2hvc3R9OiR7YWdlbnRfcG9ydH0gPnQvc25tcGQtJHNjcmlwdG5hbWUuc3RkZXJyIik7Cit9CitpZiAoJHNubXB0cmFwZF9jbWQpIHsKKyAgcnVuX2FzeW5jKCJ0L3NubXB0cmFwZC5waWQiLCAiJHNubXB0cmFwZF9jbWQiLCAiLWQgLUxmIHQvc25tcHRyYXBkLSRzY3JpcHRuYW1lLmxvZyAtcCB0L3NubXB0cmFwZC5waWQgLU0rJG1pYmRpciAtQyAtYyB0L3NubXB0ZXN0LmNvbmYgLUMgJHthZ2VudF9ob3N0fToke3RyYXBfcG9ydH0gPnQvc25tcHRyYXBkLSRzY3JpcHRuYW1lLnN0ZGVyciIpOworfQogCiAxOwogCmRpZmYgLS1naXQgYS9wZXJsL1RyYXBSZWNlaXZlci9NYWtlZmlsZS5QTCBiL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMCmluZGV4IDVjOTQ2M2EuLjRiY2YyYTQgMTAwNjQ0Ci0tLSBhL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvVHJhcFJlY2VpdmVyL01ha2VmaWxlLlBMCkBAIC01Nyw5ICs1Nyw5IEBACiAgICAgfQogCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgIGVsc2UgewogCSRvcHRzID0gTmV0U05NUEdldE9wdHMoKTsKIAkkUGFyYW1zeydMRERMRkxBR1MnfSA9ICIkQ29uZmlne2xkZGxmbGFnc30gIiAuIGAkb3B0cy0+eyduc2NvbmZpZyd9IC0tbGRmbGFnc2A7Ci0JJFBhcmFtc3snTElCUyd9ID0gJy1sbmV0c25tcHRyYXBkIC1sbmV0c25tcGFnZW50IC1sbmV0c25tcCc7CisJJFBhcmFtc3snTElCUyd9ID0gJy1sbmV0c25tcHRyYXBkICcgLiBgJG9wdHMtPnsnbnNjb25maWcnfSAtLWJhc2UtYWdlbnQtbGlic2A7CiAJY2hvbXAoJFBhcmFtc3snTElCUyd9KTsKIAlpZiAoISRFTlZ7J05FVFNOTVBfQ0NGTEFHUyd9KSB7CiAJICAgICRQYXJhbXN7J0NDRkxBR1MnfSA9IGAkb3B0cy0+eyduc2NvbmZpZyd9IC0tY2ZsYWdzYDsKQEAgLTE0Miw3ICsxNDIsNyBAQAogICAgICRyb290cGF0aCA9ICIuLi8iIGlmICghJHJvb3RwYXRoKTsKICAgICAkcm9vdHBhdGggLj0gJy8nIGlmICgkcm9vdHBhdGggIX4gL1wvJC8pOwogICAgIAotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKIAogICAgICAgIyBHcmFiIGNvbW1hbmQgbGluZSBvcHRpb25zIGZpcnN0LiAgT25seSB1c2VkIGlmIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcmUgbm90IHNldAogICAgICAgR2V0T3B0aW9ucygiTkVULVNOTVAtSU4tU09VUkNFPXMiID0+IFwkcmV0eydpbnNvdXJjZSd9LApAQCAtMjI1LDcgKzIyNSw3IEBACiAKIAogc3ViIENoZWNrX1ZlcnNpb24gewotICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBlcSAnbXN5cycpKSB7CisgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IG5lICcnKSkgewogICAgIG15ICRmb3VuZHZlcnNpb24gPSAwOwogICAgIHJldHVybiBpZiAoJEVOVnsnTkVUU05NUF9ET05UX0NIRUNLX1ZFUlNJT04nfSk7CiAgICAgb3BlbihJLCI8TWFrZWZpbGUiKTsKZGlmZiAtLWdpdCBhL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbSBiL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci5wbQppbmRleCAzYTU0MjVkLi5mMDEyZGE1IDEwMDY0NAotLS0gYS9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIucG0KKysrIGIvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnBtCkBAIC00Nyw3ICs0Nyw3IEBACiAJTkVUU05NUFRSQVBEX1BSRV9IQU5ETEVSCiApOwogCi0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogIyBzdWIgbmV3IHsKICMgICAgIG15ICR0eXBlID0gc2hpZnQ7CmRpZmYgLS1naXQgYS9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMgYi9wZXJsL1RyYXBSZWNlaXZlci9UcmFwUmVjZWl2ZXIueHMKaW5kZXggODcxM2VmZC4uYTRmYzEzNiAxMDA2NDQKLS0tIGEvcGVybC9UcmFwUmVjZWl2ZXIvVHJhcFJlY2VpdmVyLnhzCisrKyBiL3BlcmwvVHJhcFJlY2VpdmVyL1RyYXBSZWNlaXZlci54cwpAQCAtOTksNyArOTksNyBAQAogICAgICAgICBjaGFyICp0c3RyID0gdHJhbnNwb3J0LT5mX2ZtdGFkZHIodHJhbnNwb3J0LCBwZHUtPnRyYW5zcG9ydF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGR1LT50cmFuc3BvcnRfZGF0YV9sZW5ndGgpOwogICAgICAgICBTVE9SRVBEVXMoInJlY2VpdmVkZnJvbSIsIHRzdHIpOwotICAgICAgICBmcmVlKHRzdHIpOworICAgICAgICBuZXRzbm1wX2ZyZWUodHN0cik7CiAgICAgfQogCiAKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgIGZvcih2YiA9IHBkdS0+dmFyaWFibGVzOyB2YjsgdmIgPSB2Yi0+bmV4dF92YXJpYWJsZSkgewogCiAgICAgICAgIC8qIGdldCB0aGUgb2lkICovCi0gICAgICAgIG8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfb2lkKTsKKyAgICAgICAgbyA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgby0+bmFtZSA9IG8tPm5hbWVidWY7CiAgICAgICAgIG8tPmxlbiA9IHZiLT5uYW1lX2xlbmd0aDsKICAgICAgICAgbWVtY3B5KG8tPm5hbWUsIHZiLT5uYW1lLCB2Yi0+bmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CkBAIC0xNzgsNyArMTc4LDcgQEAKIAogICAgICAgICBhdl9wdXNoKHZiYSx0bXBhcnJheVtpXSk7CiAgICAgICAgIGF2X3B1c2godmJhLG5ld1NWcHZuKChjaGFyICopIG91dGJ1Ziwgb29fbGVuKSk7Ci0gICAgICAgIGZyZWUob3V0YnVmKTsKKyAgICAgICAgbmV0c25tcF9mcmVlKG91dGJ1Zik7CiAgICAgICAgIGF2X3B1c2godmJhLG5ld1NWaXYodmItPnR5cGUpKTsKICAgICAgICAgYXZfcHVzaCh2YXJiaW5kcywgKFNWICopIG5ld1JWX25vaW5jKChTViAqKSB2YmEpKTsKICAgICB9CkBAIC0yMTQsNyArMjE0LDcgQEAKIAlTViAqcnYgPSBQT1BzOwogCiAJaWYgKFN2VFlQRShydikgIT0gU1Z0X0lWKSB7Ci0JICBzbm1wX2xvZyhMT0dfV0FSTklORywgIiBwZXJsIGNhbGxiYWNrIGZ1bmN0aW9uICVwIHJldHVybmVkIGEgc2NhbGFyIG9mIHR5cGUgJWQgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLCBhc3N1bWluZyAlZCAoTkVUU05NUFRSQVBEX0hBTkRMRVJfT0spXG4iLCBwY2FsbGJhY2ssIFN2VFlQRShydiksIE5FVFNOTVBUUkFQRF9IQU5ETEVSX09LKTsKKwkgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiIHBlcmwgY2FsbGJhY2sgZnVuY3Rpb24gJXAgcmV0dXJuZWQgYSBzY2FsYXIgb2YgdHlwZSAlbHUgaW5zdGVhZCBvZiBhbiBpbnRlZ2VyLCBhc3N1bWluZyAlZCAoTkVUU05NUFRSQVBEX0hBTkRMRVJfT0spXG4iLCBwY2FsbGJhY2ssICh1bnNpZ25lZCBsb25nKVN2VFlQRShydiksIE5FVFNOTVBUUkFQRF9IQU5ETEVSX09LKTsKIAl9CiAJZWxzZSB7CiAJICBpbnQgcnZpID0gKElWKVN2SVZ4KHJ2KTsKQEAgLTMwMCw3ICszMDAsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgICAgIGlmIChoYW5kbGVyKSB7Ci0gICAgICAgICAgICAgICAgY2JfZGF0YSA9IFNOTVBfTUFMTE9DX1RZUEVERUYodHJhcGRfY2JfZGF0YSk7CisgICAgICAgICAgICAgICAgY2JfZGF0YSA9IG1hbGxvYyhzaXplb2YodHJhcGRfY2JfZGF0YSkpOwogICAgICAgICAgICAgICAgIGNiX2RhdGEtPnBlcmxfY2IgPSBuZXdTVnN2KHBlcmxjYWxsYmFjayk7CiAgICAgICAgICAgICAgICAgaGFuZGxlci0+aGFuZGxlcl9kYXRhID0gY2JfZGF0YTsKICAgICAgICAgICAgICAgICBoYW5kbGVyLT5hdXRodHlwZXMgPSAoMSA8PCBWQUNNX1ZJRVdfRVhFQ1VURSk7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L01ha2VmaWxlLlBMIGIvcGVybC9hZ2VudC9NYWtlZmlsZS5QTAppbmRleCBiNGIzNThhLi5iMmUzYmQ4IDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L01ha2VmaWxlLlBMCisrKyBiL3BlcmwvYWdlbnQvTWFrZWZpbGUuUEwKQEAgLTMwLDkgKzMwLDkgQEAKICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgIG15ICgkc25tcF9saWIsICRzbm1wX2xsaWIsICRzZXApOwotICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IG5lICdtc3lzJykpIHsKKyAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBlcSAnJykpIHsKICAgICAgICRvcHRzID0gTmV0U05NUEdldE9wdHMoKTsJCi0gICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCI7CisgICAgICAkUGFyYW1zeydERUZJTkUnfSA9ICItRE1TVkNfUEVSTCAtRF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIC1EX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIjsKICAgICAgICRzZXAgPSAnXFwnOwogICAgICAgJHNubXBfbGliX2ZpbGUgPSAnbmV0c25tcC5saWInOwogICAgICAgJHNubXBfbGlua19saWIgPSAnbmV0c25tcCc7CkBAIC0xMDksNyArMTA5LDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE5Miw3ICsxOTIsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwgYi9wZXJsL2FnZW50L1N1cHBvcnQvTWFrZWZpbGUuUEwKaW5kZXggM2E0ZjIwMC4uNDg4MTViNiAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9TdXBwb3J0L01ha2VmaWxlLlBMCisrKyBiL3BlcmwvYWdlbnQvU3VwcG9ydC9NYWtlZmlsZS5QTApAQCAtMjksOSArMjksOSBAQAogICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7CiAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAgICAgICAkb3B0cyA9IE5ldFNOTVBHZXRPcHRzKCk7CQotICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwiOworICAgICAgJFBhcmFtc3snREVGSU5FJ30gPSAiLURNU1ZDX1BFUkwgLURfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyAtRF9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyI7CiAgICAgICAkc2VwID0gJ1xcJzsKICAgICAgICRzbm1wX2xpYl9maWxlID0gJ25ldHNubXAubGliJzsKICAgICAgICRzbm1wX2xpbmtfbGliID0gJ25ldHNubXAnOwpAQCAtMTAxLDcgKzEwMSw3IEBACiAgICAgJHJvb3RwYXRoID0gIi4uLyIgaWYgKCEkcm9vdHBhdGgpOwogICAgICRyb290cGF0aCAuPSAnLycgaWYgKCRyb290cGF0aCAhfiAvXC8kLyk7CiAgICAgCi0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogCiAgICAgICAjIEdyYWIgY29tbWFuZCBsaW5lIG9wdGlvbnMgZmlyc3QuICBPbmx5IHVzZWQgaWYgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZSBub3Qgc2V0CiAgICAgICBHZXRPcHRpb25zKCJORVQtU05NUC1JTi1TT1VSQ0U9cyIgPT4gXCRyZXR7J2luc291cmNlJ30sCkBAIC0xODQsNyArMTg0LDcgQEAKIAogCiBzdWIgQ2hlY2tfVmVyc2lvbiB7Ci0gIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gbmUgJ01TV2luMzInIHx8ICRFTlZ7J09TVFlQRSd9IGVxICdtc3lzJykpIHsKKyAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gbmUgJycpKSB7CiAgICAgbXkgJGZvdW5kdmVyc2lvbiA9IDA7CiAgICAgcmV0dXJuIGlmICgkRU5WeydORVRTTk1QX0RPTlRfQ0hFQ0tfVkVSU0lPTid9KTsKICAgICBvcGVuKEksIjxNYWtlZmlsZSIpOwpkaWZmIC0tZ2l0IGEvcGVybC9hZ2VudC9TdXBwb3J0L1N1cHBvcnQucG0gYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQppbmRleCBkYThjNzdlLi44OGJlZWVkIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQorKysgYi9wZXJsL2FnZW50L1N1cHBvcnQvU3VwcG9ydC5wbQpAQCAtMjYsNyArMjYsNyBAQAogQElTQSAgICAgICA9IHF3KEV4cG9ydGVyIGdldExlYWYpOwogQEVYUE9SVCAgICA9IHF3KHJlZ2lzdGVyQWdlbnQgZ2V0T2lkRWxlbWVudCBzZXRPaWRFbGVtZW50KTsKIEBFWFBPUlRfT0sgPSBxdygpOwotJFZFUlNJT04gPSAnNS4wNDA0JzsKKyRWRVJTSU9OID0gJzUuMDUwMic7CiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3M7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2FnZW50LnBtIGIvcGVybC9hZ2VudC9hZ2VudC5wbQppbmRleCA2MThhMmM2Li41MzA3NzJlIDEwMDY0NAotLS0gYS9wZXJsL2FnZW50L2FnZW50LnBtCisrKyBiL3BlcmwvYWdlbnQvYWdlbnQucG0KQEAgLTg3LDcgKzg3LDcgQEAKIAlTTk1QX0VSUl9BVVRIT1JJWkFUSU9ORVJST1IKIAlTTk1QX0VSUl9OT1RXUklUQUJMRQogKTsKLSRWRVJTSU9OID0gJzUuMDQwNCc7CiskVkVSU0lPTiA9ICc1LjA1MDInOwogCiBzdWIgQVVUT0xPQUQgewogICAgICMgVGhpcyBBVVRPTE9BRCBpcyB1c2VkIHRvICdhdXRvbG9hZCcgY29uc3RhbnRzIGZyb20gdGhlIGNvbnN0YW50KCkKQEAgLTQ5MCw2ICs0OTAsMjAgQEAKIAogCSRyZXF1ZXN0LT5zZXRSZXBlYXQoNSk7CiAKKyAgICBnZXRTb3VyY2VJcCAoKQorCisJR2V0cyB0aGUgSVB2NCBhZGRyZXNzIG9mIHRoZSBkZXZpY2UgbWFraW5nIHRoZSByZXF1ZXN0IHRvIHRoZSBoYW5kbGVyLgorCisJdXNlIFNvY2tldDsKKwlwcmludCAiU291cmNlOiAiLCBpbmV0X250b2EoJHJlcXVlc3QtPmdldFNvdXJjZUlwKCkpLCAiXG4iOworCisgICAgZ2V0RGVzdElwICgpCisKKwlHZXRzIHRoZSBJUHY0IGFkZHJlc3Mgb2YgdGhlIGRlc3RpbmF0aW9uIHRoYXQgdGhlIHJlcXVlc3Qgd2FzIHNlbnQgdG8uCisKKwl1c2UgU29ja2V0OworCXByaW50ICJEZXN0aW5hdGlvbjogIiwgaW5ldF9udG9hKCRyZXF1ZXN0LT5nZXREZXN0SXAoKSksICJcbiI7CisKID1oZWFkMSBNT0RFUwogCiAJTU9ERV9HRVQKZGlmZiAtLWdpdCBhL3BlcmwvYWdlbnQvYWdlbnQueHMgYi9wZXJsL2FnZW50L2FnZW50LnhzCmluZGV4IDU2MDZjM2MuLmFiNzdjNzUgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvYWdlbnQueHMKKysrIGIvcGVybC9hZ2VudC9hZ2VudC54cwpAQCAtMTksNiArMTksMTIgQEAKIAogdHlwZWRlZiBuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpOZXRTTk1QX19hZ2VudF9fbmV0c25tcF9oYW5kbGVyX3JlZ2lzdHJhdGlvbjsKIAorLyogQ29waWVkIGZyb20gc25tcFVEUERvbWFpbi5jICovCit0eXBlZGVmIHN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyB7CisJc3RydWN0IHNvY2thZGRyX2luIHJlbW90ZV9hZGRyOworCXN0cnVjdCBpbl9hZGRyIGxvY2FsX2FkZHI7Cit9IG5ldHNubXBfdWRwX2FkZHJfcGFpcjsKKwogdHlwZWRlZiBzdHJ1Y3QgaGFuZGxlcl9jYl9kYXRhX3MgewogICAgU1YgKnBlcmxfY2I7CiB9IGhhbmRsZXJfY2JfZGF0YTsKQEAgLTIzOCw2ICsyNDQsMTEgQEAKIGludAogaW5pdF9hZ2VudChuYW1lKQogICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgIENPREU6CisgICAgICAgIFNPQ0tfU1RBUlRVUDsKKyAgICAgICAgUkVUVkFMID0gaW5pdF9hZ2VudChuYW1lKTsKKyAgICBPVVRQVVQ6CisgICAgICAgIFJFVFZBTAogCiB2b2lkCiBpbml0X3NubXAobmFtZSkKQEAgLTI3Myw3ICsyODQsNyBAQAogICAgICAgICBpZiAoMCkKICAgICAgICAgICAgIHByaW50ZigibWUgPSAlcFxuIiwgbWUpOwogICAgICAgICBzdHJpbmdwdHIgPSBTdlBWKHZhbHVlLCBzdHJpbmdsZW4pOwotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCBzdHJpbmdwdHIgKTsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIiVzIiwgc3RyaW5ncHRyICk7CiAgICAgfQogCiAKQEAgLTMxMyw3ICszMjQsMTQgQEAKIHZvaWQKIG5zYWhyX0RFU1RST1kocmVnaW5mbykKIAluZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICpyZWdpbmZvCisgICAgUFJFSU5JVDoKKyAgICAgICAgaGFuZGxlcl9jYl9kYXRhICpjYl9kYXRhOwogICAgIENPREU6CisgICAgICAgIGlmIChyZWdpbmZvICYmIHJlZ2luZm8tPmhhbmRsZXIgJiYgcmVnaW5mby0+aGFuZGxlci0+bXl2b2lkKSB7CisJICAgIGNiX2RhdGEgPSAoaGFuZGxlcl9jYl9kYXRhICopIChyZWdpbmZvLT5oYW5kbGVyLT5teXZvaWQpOworCSAgICBTdlJFRkNOVF9kZWMoY2JfZGF0YS0+cGVybF9jYik7CisJICAgIGZyZWUoY2JfZGF0YSk7CisgICAgICAgIH0KIAluZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uX2ZyZWUocmVnaW5mbyk7CiAKIGludApAQCAtMzY0LDcgKzM4Miw3IEBACiAgICAgICAgIFBVU0hNQVJLKFNQKTsKICAgICAgICAgcmVnaW5mbyA9IChuZXRzbm1wX2hhbmRsZXJfcmVnaXN0cmF0aW9uICopIFN2SVYoU3ZSVihtZSkpOwogCi0gICAgICAgIG8gPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfb2lkKTsKKyAgICAgICAgbyA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgby0+bmFtZSA9IG8tPm5hbWVidWY7CiAgICAgICAgIG8tPmxlbiA9IHJlZ2luZm8tPnJvb3RvaWRfbGVuOwogICAgICAgICBtZW1jcHkoby0+bmFtZSwgcmVnaW5mby0+cm9vdG9pZCwKQEAgLTQwMyw3ICs0MjEsNyBAQAogICAgICAgICBQVVNITUFSSyhTUCk7CiAgICAgICAgIHJlcXVlc3QgPSAobmV0c25tcF9yZXF1ZXN0X2luZm8gKikgU3ZJVihTdlJWKG1lKSk7CiAKLSAgICAgICAgbyA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9vaWQpOworICAgICAgICBvID0gbWFsbG9jKHNpemVvZihuZXRzbm1wX29pZCkpOwogICAgICAgICBvLT5uYW1lID0gby0+bmFtZWJ1ZjsKICAgICAgICAgby0+bGVuID0gcmVxdWVzdC0+cmVxdWVzdHZiLT5uYW1lX2xlbmd0aDsKICAgICAgICAgbWVtY3B5KG8tPm5hbWUsIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKQEAgLTQzMyw3ICs0NTEsNyBAQAogICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKICAgICAgICAgQ09ERToKICAgICAgICAgcmVxdWVzdCA9IChuZXRzbm1wX3JlcXVlc3RfaW5mbyAqKSBTdklWKFN2UlYobWUpKTsKLSAgICAgICAgUkVUVkFMID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX29pZCk7CisgICAgICAgIFJFVFZBTCA9IG1hbGxvYyhzaXplb2YobmV0c25tcF9vaWQpKTsKICAgICAgICAgUkVUVkFMLT5uYW1lID0gUkVUVkFMLT5uYW1lYnVmOwogICAgICAgICBSRVRWQUwtPmxlbiA9IHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZV9sZW5ndGg7CiAgICAgICAgIG1lbWNweShSRVRWQUwtPm5hbWUsIHJlcXVlc3QtPnJlcXVlc3R2Yi0+bmFtZSwKQEAgLTQ2MywxOSArNDgxLDE5IEBACiAgICAgICAgIHJlcXVlc3QgPSAobmV0c25tcF9yZXF1ZXN0X2luZm8gKikgU3ZJVihTdlJWKG1lKSk7CiAgICAgICAgIHJlcXVlc3QtPnJlcXVlc3R2Yi0+dHlwZT1uZXd2YWx1ZTsKIAotY2hhciAqCitTViAqCiBuYXJpX2dldFZhbHVlKG1lKQogICAgICAgICBTViAqbWU7CiAgICAgUFJFSU5JVDoKLSAgICAgICAgdV9jaGFyIGJ1ZlsxMDI0XSA7Ci0gICAgICAgIHVfY2hhciAqb2lkYnVmID0gYnVmIDsKLSAgICAgICAgc2l6ZV90IG9iX2xlbiA9IDEwMjQsIG9vX2xlbiA9IDA7CisgICAgICAgIGNoYXIgKm91dGJ1ZiA9IE5VTEw7CisgICAgICAgIHNpemVfdCBvYl9sZW4gPSAwLCBvb19sZW4gPSAwOwogICAgICAgICBuZXRzbm1wX3JlcXVlc3RfaW5mbyAqcmVxdWVzdDsKICAgICBDT0RFOgogICAgICAgICByZXF1ZXN0ID0gKG5ldHNubXBfcmVxdWVzdF9pbmZvICopIFN2SVYoU3ZSVihtZSkpOwotCXNwcmludF9yZWFsbG9jX2J5X3R5cGUoJm9pZGJ1ZiwgJm9iX2xlbiwgJm9vX2xlbiwgMCwKKwlzcHJpbnRfcmVhbGxvY19ieV90eXBlKCh1X2NoYXIgKiopICZvdXRidWYsICZvYl9sZW4sICZvb19sZW4sIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC0+cmVxdWVzdHZiLCAwLCAwLCAwKTsKLSAgICAgICAgUkVUVkFMID0gKGNoYXIgKikgb2lkYnVmOyAvKiBtZW0gbGVhayAqLworICAgICAgICBSRVRWQUwgPSBuZXdTVnB2KG91dGJ1ZiwgMCk7CisJbmV0c25tcF9mcmVlKG91dGJ1Zik7CiAgICAgT1VUUFVUOgogICAgICAgICBSRVRWQUwKIApAQCAtNjIwLDggKzYzOCw4IEBACiAJCSAgYnJlYWs7CiAJICAgICAgfQogCSAgICAgIGVsc2UgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLWludGVnZXIgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lOVEVHRVI6IHR5cGUgd2FzICVkXG4iLAotCQkJU3ZUWVBFKHZhbHVlKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJOb24taW50ZWdlciB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSU5URUdFUjogdHlwZSB3YXMgJWx1XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHZhbHVlKSk7CiAJCVJFVFZBTCA9IDA7CiAJCWJyZWFrOwogCSAgICAgIH0KQEAgLTY1Niw4ICs2NzQsOCBAQAogCQkgIGJyZWFrOwogCSAgICAgIH0KIAkgICAgICBlbHNlIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi11bnNpZ25lZC1pbnRlZ2VyIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9VTlNJR05FRC9BU05fQ09VTlRFUi9BU05fVElNRVRJQ0tTOiB0eXBlIHdhcyAlZFxuIiwKLQkJCVN2VFlQRSh2YWx1ZSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXVuc2lnbmVkLWludGVnZXIgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX1VOU0lHTkVEL0FTTl9DT1VOVEVSL0FTTl9USU1FVElDS1M6IHR5cGUgd2FzICVsdVxuIiwKKwkJCSh1bnNpZ25lZCBsb25nKVN2VFlQRSh2YWx1ZSkpOwogCQlSRVRWQUwgPSAwOwogCQlicmVhazsKIAkgICAgICB9CkBAIC02NjcsNDcgKzY4NSw0MCBAQAogCSAgICAgIGlmICgoU3ZUWVBFKHZhbHVlKSA9PSBTVnRfSVYpIHx8IChTdlRZUEUodmFsdWUpID09IFNWdF9QVk1HKSkgewogCQkgIC8qIEdvb2QgLSBnb3QgYSByZWFsIG9uZSAob3IgYSBibGVzc2VkIHNjYWxhciB3aGljaCB3ZSBoYXZlIHRvIGhvcGUgd2lsbCB0dXJuIG91dCBPSykgKi8KIAkJICB1bGx0bXAgPSBTdklWKHZhbHVlKTsKLQkJICBjNjQuaGlnaCA9ICh1aW50MzJfdCkodWxsdG1wID4+IDMyKTsKLQkJICBjNjQubG93ICA9ICh1aW50MzJfdCl1bGx0bXA7Ci0gICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdHlwZWRfdmFsdWUocmVxdWVzdC0+cmVxdWVzdHZiLCAodV9jaGFyKXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICZjNjQsIHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KSk7CiAJCSAgUkVUVkFMID0gMTsKLQkJICBicmVhazsKIAkgICAgICB9CiAJICAgICAgZWxzZSBpZiAoU3ZQT0twKHZhbHVlKSkgewogCSAgICAgICAgICAvKiBNaWdodCBiZSBPSyAtIGdvdCBhIHN0cmluZywgc28gdHJ5IHRvIGNvbnZlcnQgaXQsIGFsbG93aW5nIGJhc2UgMTAsIG9jdGFsLCBhbmQgaGV4IGZvcm1zICovCiAJICAgICAgICAgIHN0cmluZ3B0ciA9IFN2UFYodmFsdWUsIHN0cmluZ2xlbik7Ci0jaWYgZGVmaW5lZChXSU4zMikKLQkJICB1bGx0bXAgPSBzdHJ0b3VsKCAgc3RyaW5ncHRyLCBOVUxMLCAwICk7Ci0jZWxzZQorCSAgICAgICAgICBlcnJubyA9IDA7CiAJCSAgdWxsdG1wID0gc3RydG91bGwoIHN0cmluZ3B0ciwgTlVMTCwgMCApOwotI2VuZGlmCi0JCSAgaWYgKGVycm5vID09IEVJTlZBTCkgewotCQkgIAlzbm1wX2xvZyhMT0dfRVJSLCAiQ291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIG51bWJlciBpbiBzZXRWYWx1ZTogJyVzJyIsIHN0cmluZ3B0cik7Ci0JCQlSRVRWQUwgPSAwOwotCQkJYnJlYWs7Ci0JCSAgfQorCQkgIGlmIChlcnJubyAhPSAwKSB7CisJCSAgICAgIHNubXBfbG9nKExPR19FUlIsICJDb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gbnVtYmVyIGluIHNldFZhbHVlOiAnJXMnIiwgc3RyaW5ncHRyKTsKKwkJICAgICAgUkVUVkFMID0gMDsKKwkJICB9IGVsc2UKIAotCQkgIGM2NC5oaWdoID0gKHVpbnQzMl90KSh1bGx0bXAgPj4gMzIpOwotCQkgIGM2NC5sb3cgID0gKHVpbnQzMl90KXVsbHRtcDsKLSAgICAgICAgICAgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsICh1X2NoYXIpdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJmM2NCwgc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpKTsKLQkJICBSRVRWQUwgPSAxOwotCQkgIGJyZWFrOworCQkgICAgICBSRVRWQUwgPSAxOwogCSAgICAgIH0KIAkgICAgICBlbHNlIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi11bnNpZ25lZC1pbnRlZ2VyIHZhbHVlIHBhc3NlZCB0byBzZXRWYWx1ZSB3aXRoIEFTTl9DT1VOVEVSNjQ6IHR5cGUgd2FzICVkXG4iLAotCQkJU3ZUWVBFKHZhbHVlKSk7CisJCXNubXBfbG9nKExPR19FUlIsICJOb24tdW5zaWduZWQtaW50ZWdlciB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fQ09VTlRFUjY0OiB0eXBlIHdhcyAlbHVcbiIsCisJCQkodW5zaWduZWQgbG9uZylTdlRZUEUodmFsdWUpKTsKIAkJUkVUVkFMID0gMDsKLQkJYnJlYWs7CiAJICAgICAgfQorCSAgICAgIGlmIChSRVRWQUwpIHsKKwkJICBjNjQuaGlnaCA9ICh1aW50MzJfdCkodWxsdG1wID4+IDMyKTsKKwkJICBjNjQubG93ICA9ICh1aW50MzJfdCkodWxsdG1wID4+IDApOworCQkgIHNubXBfc2V0X3Zhcl90eXBlZF92YWx1ZShyZXF1ZXN0LT5yZXF1ZXN0dmIsICh1X2NoYXIpdHlwZSwKKwkJCQkgICAgICh1X2NoYXIgKikgJmM2NCwgc2l6ZW9mKHN0cnVjdCBjb3VudGVyNjQpKTsKKwkgICAgICB9CisJICAgICAgYnJlYWs7CiAKICAgICAgICAgICBjYXNlIEFTTl9PQ1RFVF9TVFI6CiAgICAgICAgICAgY2FzZSBBU05fQklUX1NUUjoKKyAgICAgICAgICBjYXNlIEFTTl9PUEFRVUU6CiAJICAgICAgLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIGJlZW4gcGFzc2VkIHNvbWV0aGluZyB3aXRoIGEgc3RyaW5nIHZhbHVlIChvciBhIGJsZXNzZWQgc2NhbGFyKSAqLwogCSAgICAgIGlmICghU3ZQT0twKHZhbHVlKSAmJiAoU3ZUWVBFKHZhbHVlKSAhPSBTVnRfUFZNRykpIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX09DVEVUX1NUUi9BU05fQklUX1NUUjogdHlwZSB3YXMgJWRcbiIsCi0JCQlTdlRZUEUodmFsdWUpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX09DVEVUX1NUUi9BU05fQklUX1NUUjogdHlwZSB3YXMgJWx1XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHZhbHVlKSk7CiAJCVJFVFZBTCA9IDA7CiAJCWJyZWFrOwogCSAgICAgIH0KQEAgLTczMyw4ICs3NDQsOCBAQAogCiAJICAgICAgLyogQ2hlY2sgdGhhdCB3ZSBoYXZlIGJlZW4gcGFzc2VkIHNvbWV0aGluZyB3aXRoIGEgc3RyaW5nIHZhbHVlIChvciBhIGJsZXNzZWQgc2NhbGFyKSAqLwogCSAgICAgIGlmICghU3ZQT0twKHZhbHVlKSAmJiAoU3ZUWVBFKHZhbHVlKSAhPSBTVnRfUFZNRykpIHsKLQkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lQQUREUkVTUzogdHlwZSB3YXMgJWRcbiIsCi0JCQlTdlRZUEUodmFsdWUpKTsKKwkJc25tcF9sb2coTE9HX0VSUiwgIk5vbi1zdHJpbmcgdmFsdWUgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lQQUREUkVTUzogdHlwZSB3YXMgJWx1XG4iLAorCQkJKHVuc2lnbmVkIGxvbmcpU3ZUWVBFKHZhbHVlKSk7CiAJCVJFVFZBTCA9IDA7CiAJCWJyZWFrOwogCSAgICAgIH0KQEAgLTc0Nyw3ICs3NTgsNyBAQAogCiAJICAgICAgIyBTYW5pdHkgY2hlY2sgb24gYWRkcmVzcyBsZW5ndGgKIAkgICAgICBpZiAoKHN0cmluZ2xlbiAhPSA0KSAmJiAoc3RyaW5nbGVuICE9IDE2KSkgewotCSAgICAgIAkJc25tcF9sb2coTE9HX0VSUiwgIklQIGFkZHJlc3Mgb2YgJWQgYnl0ZXMgcGFzc2VkIHRvIHNldFZhbHVlIHdpdGggQVNOX0lQQUREUkVTU1xuIiwgc3RyaW5nbGVuKTsKKwkgICAgICAJCXNubXBfbG9nKExPR19FUlIsICJJUCBhZGRyZXNzIG9mICUiIE5FVFNOTVBfUFJJeiAiZCBieXRlcyBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fSVBBRERSRVNTXG4iLCBzdHJpbmdsZW4pOwogCQkJUkVUVkFMID0gMDsKIAkJCWJyZWFrOwogCSAgICAgIH0KQEAgLTc2MCw4ICs3NzEsOCBAQAogICAgICAgICAgIGNhc2UgQVNOX09CSkVDVF9JRDoKIAkgICAgICAvKiBDaGVjayB0aGF0IHdlIGhhdmUgYmVlbiBwYXNzZWQgc29tZXRoaW5nIHdpdGggYSBzdHJpbmcgdmFsdWUgKG9yIGEgYmxlc3NlZCBzY2FsYXIpICovCiAJICAgICAgaWYgKCFTdlBPS3AodmFsdWUpICYmIChTdlRZUEUodmFsdWUpICE9IFNWdF9QVk1HKSkgewotCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fT0JKRUNUX0lEOiB0eXBlIHdhcyAlZFxuIiwKLQkJCVN2VFlQRSh2YWx1ZSkpOworCQlzbm1wX2xvZyhMT0dfRVJSLCAiTm9uLXN0cmluZyB2YWx1ZSBwYXNzZWQgdG8gc2V0VmFsdWUgd2l0aCBBU05fT0JKRUNUX0lEOiB0eXBlIHdhcyAlbHVcbiIsCisJCQkodW5zaWduZWQgbG9uZylTdlRZUEUodmFsdWUpKTsKIAkJUkVUVkFMID0gMDsKIAkJYnJlYWs7CiAJICAgICAgfQpAQCAtODUxLDYgKzg2Miw0OCBAQAogCiBNT0RVTEUgPSBOZXRTTk1QOjphZ2VudCAgUEFDS0FHRSA9IE5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbyBQUkVGSVggPSBuYXJxaV8KIAorCitTViAqCituYXJxaV9nZXRTb3VyY2VJcChtZSkKKyAgICAgICAgU1YgKm1lOworICAgIFBSRUlOSVQ6CisgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvOworCXN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyAqYWRkcl9wYWlyOworCXN0cnVjdCBzb2NrYWRkcl9pbiAqZnJvbTsKKyAgICAgICAgU1YgKnJhcmc7CisKKyAgICBDT0RFOgorICAgICAgICByZXFpbmZvID0gKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICopIFN2SVYoU3ZSVihtZSkpOworCisgICAgICAgIC8qIFhYWDogdHJhbnNwb3J0LXNwZWNpZmljOiBVRFAvSVB2NCBvbmx5ISAqLworCWFkZHJfcGFpciA9IChzdHJ1Y3QgbmV0c25tcF91ZHBfYWRkcl9wYWlyX3MgKikgKHJlcWluZm8tPmFzcC0+cGR1LT50cmFuc3BvcnRfZGF0YSk7CisJZnJvbSA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKTsKKyAgICAgICAgcmFyZyA9IG5ld1NWcHYoKGNvbnN0IGNoYXIgKikoJmZyb20tPnNpbl9hZGRyLnNfYWRkciksIHNpemVvZihmcm9tLT5zaW5fYWRkci5zX2FkZHIpKTsKKyAgICAgICAgUkVUVkFMID0gcmFyZzsKKyAgICBPVVRQVVQ6CisgICAgICAgIFJFVFZBTAorCisKK1NWICoKK25hcnFpX2dldERlc3RJcChtZSkKKyAgICAgICAgU1YgKm1lOworICAgIFBSRUlOSVQ6CisgICAgICAgIG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICpyZXFpbmZvOworCXN0cnVjdCBuZXRzbm1wX3VkcF9hZGRyX3BhaXJfcyAqYWRkcl9wYWlyOworCXN0cnVjdCBpbl9hZGRyICp0bzsKKyAgICAgICAgU1YgKnJhcmc7CisKKyAgICBDT0RFOgorICAgICAgICByZXFpbmZvID0gKG5ldHNubXBfYWdlbnRfcmVxdWVzdF9pbmZvICopIFN2SVYoU3ZSVihtZSkpOworCisgICAgICAgIC8qIFhYWDogdHJhbnNwb3J0LXNwZWNpZmljOiBVRFAvSVB2NCBvbmx5ISAqLworCWFkZHJfcGFpciA9IChzdHJ1Y3QgbmV0c25tcF91ZHBfYWRkcl9wYWlyX3MgKikgKHJlcWluZm8tPmFzcC0+cGR1LT50cmFuc3BvcnRfZGF0YSk7CisJdG8gPSAoc3RydWN0IGluX2FkZHIgKikgJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpOworICAgICAgICByYXJnID0gbmV3U1ZwdigoY29uc3QgY2hhciAqKSgmdG8tPnNfYWRkciksIHNpemVvZih0by0+c19hZGRyKSk7CisgICAgICAgIFJFVFZBTCA9IHJhcmc7CisgICAgT1VUUFVUOgorICAgICAgICBSRVRWQUwKKwogaW50CiBuYXJxaV9nZXRNb2RlKG1lKQogICAgICAgICBTViAqbWU7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwgYi9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKaW5kZXggNjdkNWZmMC4uZWQ2NDgzYSAxMDA2NDQKLS0tIGEvcGVybC9hZ2VudC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTApAQCAtMjQsOSArMjQsOSBAQAogICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTk2LDcgKzk2LDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE3OSw3ICsxNzksNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL2FnZW50L2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IGE3NmMzNmIuLjliNTY4ZWMgMTAwNjQ0Ci0tLSBhL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvYWdlbnQvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC05Niw3ICs5Niw3IEBACiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9NQVhfR0VUQlVMS1JFUEVBVFMKIAkJCQkgICBORVRTTk1QX0RTX0FHRU5UX01BWF9HRVRCVUxLUkVTUE9OU0VTCiApOwotJFZFUlNJT04gPSAnNS4wNDA0JzsKKyRWRVJTSU9OID0gJzUuMDUwMic7CiAKIHN1YiBBVVRPTE9BRCB7CiAgICAgIyBUaGlzIEFVVE9MT0FEIGlzIHVzZWQgdG8gJ2F1dG9sb2FkJyBjb25zdGFudHMgZnJvbSB0aGUgY29uc3RhbnQoKQpAQCAtMjE5LDQzICsyMTksNiBAQAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQ0FDSEVfVElNRU9VVAogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfVkVSU0lPTgogCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTEVWRUwKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX01BWF9HRVRCVUxLUkVQRUFUUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfTUFYX0dFVEJVTEtSRVNQT05TRVMKLQotCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9WRVJCT1NFCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9ST0xFCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9OT19ST09UX0FDQ0VTUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX01BU1RFUgotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUVVJVF9JTU1FRElBVEVMWQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfRElTQUJMRV9QRVJMCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9OT19DT05ORUNUSU9OX1dBUk5JTkdTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9MRUFWRV9QSURGSUxFCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9OT19DQUNISU5HCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9TVFJJQ1RfRElTTUFOCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9ET05UX1JFVEFJTl9OT1RJRklDQVRJT05TCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9ET05UX0xPR19UQ1BXUkFQUEVSU19DT05ORUNUUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfU0tJUE5GU0lOSE9TVFJFU09VUkNFUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUFJPR05BTUUKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS0VUCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9QT1JUUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTkFNRQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfUEVSTF9JTklUX0ZJTEUKLQkJCQkgICBORVRTTk1QX0RTX1NNVVhfU09DS0VUCi0JCQkJICAgTkVUU05NUF9EU19OT1RJRl9MT0dfQ1RYCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9GTEFHUwotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfVVNFUklECi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9HUk9VUElECi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9BR0VOVFhfUElOR19JTlRFUlZBTAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQUdFTlRYX1RJTUVPVVQKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX0FHRU5UWF9SRVRSSUVTCi0JCQkJICAgTkVUU05NUF9EU19BR0VOVF9YX1NPQ0tfUEVSTQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfWF9ESVJfUEVSTQotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfWF9TT0NLX1VTRVIKLQkJCQkgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS19HUk9VUAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfQ0FDSEVfVElNRU9VVAotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfVkVSU0lPTgotCQkJCSAgIE5FVFNOTVBfRFNfQUdFTlRfSU5URVJOQUxfU0VDTEVWRUwKIAogCiAJCQkJICAgTkVUU05NUF9EU19BR0VOVF9WRVJCT1NFCmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwgYi9wZXJsL2RlZmF1bHRfc3RvcmUvTWFrZWZpbGUuUEwKaW5kZXggNTQ5OTZhYi4uN2M2NzFiOCAxMDA2NDQKLS0tIGEvcGVybC9kZWZhdWx0X3N0b3JlL01ha2VmaWxlLlBMCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9NYWtlZmlsZS5QTApAQCAtMjMsOSArMjMsOSBAQAogICAgIH0gICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgCiAgICAgbXkgKCRzbm1wX2xpYiwgJHNubXBfbGxpYiwgJHNlcCk7Ci0gICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gbmUgJ21zeXMnKSkgeworICAgIGlmICgoJENvbmZpZ3snb3NuYW1lJ30gZXEgJ01TV2luMzInICYmICRFTlZ7J09TVFlQRSd9IGVxICcnKSkgewogICAgICAgJG9wdHMgPSBOZXRTTk1QR2V0T3B0cygpOwkKLSAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIjsKKyAgICAgICRQYXJhbXN7J0RFRklORSd9ID0gIi1ETVNWQ19QRVJMIC1EX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MgLURfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiOwogICAgICAgJHNlcCA9ICdcXCc7CiAgICAgICAkc25tcF9saWJfZmlsZSA9ICduZXRzbm1wLmxpYic7CiAgICAgICAkc25tcF9saW5rX2xpYiA9ICduZXRzbm1wJzsKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAkcm9vdHBhdGggPSAiLi4vIiBpZiAoISRyb290cGF0aCk7CiAgICAgJHJvb3RwYXRoIC49ICcvJyBpZiAoJHJvb3RwYXRoICF+IC9cLyQvKTsKICAgICAKLSAgICBpZiAoKCRDb25maWd7J29zbmFtZSd9IGVxICdNU1dpbjMyJyAmJiAkRU5WeydPU1RZUEUnfSBuZSAnbXN5cycpKSB7CisgICAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBlcSAnTVNXaW4zMicgJiYgJEVOVnsnT1NUWVBFJ30gZXEgJycpKSB7CiAKICAgICAgICMgR3JhYiBjb21tYW5kIGxpbmUgb3B0aW9ucyBmaXJzdC4gIE9ubHkgdXNlZCBpZiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIG5vdCBzZXQKICAgICAgIEdldE9wdGlvbnMoIk5FVC1TTk1QLUlOLVNPVVJDRT1zIiA9PiBcJHJldHsnaW5zb3VyY2UnfSwKQEAgLTE3OCw3ICsxNzgsNyBAQAogCiAKIHN1YiBDaGVja19WZXJzaW9uIHsKLSAgaWYgKCgkQ29uZmlneydvc25hbWUnfSBuZSAnTVNXaW4zMicgfHwgJEVOVnsnT1NUWVBFJ30gZXEgJ21zeXMnKSkgeworICBpZiAoKCRDb25maWd7J29zbmFtZSd9IG5lICdNU1dpbjMyJyB8fCAkRU5WeydPU1RZUEUnfSBuZSAnJykpIHsKICAgICBteSAkZm91bmR2ZXJzaW9uID0gMDsKICAgICByZXR1cm4gaWYgKCRFTlZ7J05FVFNOTVBfRE9OVF9DSEVDS19WRVJTSU9OJ30pOwogICAgIG9wZW4oSSwiPE1ha2VmaWxlIik7CmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvZGVmYXVsdF9zdG9yZS5wbSBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCmluZGV4IDgyOGJiZGIuLjFhZjdmMGMgMTAwNjQ0Ci0tLSBhL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS9kZWZhdWx0X3N0b3JlLnBtCkBAIC0yMDAsNyArMjAwLDcgQEAKIAkJCQkgICBORVRTTk1QX0RTX0xJQl9LU01fU0VSVklDRV9OQU1FCiAJCQkJICAgTkVUU05NUF9EU19MSUJfU0JTTV9MT0NBTF9QV0QKICk7Ci0kVkVSU0lPTiA9ICc1LjA0MDQnOworJFZFUlNJT04gPSAnNS4wNTAyJzsKIAogc3ViIEFVVE9MT0FEIHsKICAgICAjIFRoaXMgQVVUT0xPQUQgaXMgdXNlZCB0byAnYXV0b2xvYWQnIGNvbnN0YW50cyBmcm9tIHRoZSBjb25zdGFudCgpCmRpZmYgLS1naXQgYS9wZXJsL2RlZmF1bHRfc3RvcmUvdGVzdC5wbCBiL3BlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsCmluZGV4IDkzMGNhOGMuLmI0MjljNmIgMTAwNjQ0Ci0tLSBhL3BlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsCisrKyBiL3BlcmwvZGVmYXVsdF9zdG9yZS90ZXN0LnBsCkBAIC0xMCw3ICsxMCw3IEBACiAKIAkldGVzdHMgPSAoIAogICAgICAgICAgICAgICAgICAgIk5FVFNOTVBfRFNfTUFYX0lEUyIgICAgICAgICAgICAgICAgICAgICA9PiAzLAotICAgICAgICAgICAgICAgICAgIk5FVFNOTVBfRFNfTUFYX1NVQklEUyIgICAgICAgICAgICAgICAgICA9PiA0MCwKKyAgICAgICAgICAgICAgICAgICJORVRTTk1QX0RTX01BWF9TVUJJRFMiICAgICAgICAgICAgICAgICAgPT4gNDgsCiAgICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19MSUJSQVJZX0lEIiAgICAgICAgICAgICAgICAgID0+IDAsCiAgICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCIgICAgICAgICAgICAgID0+IDEsCiAgICAgICAgICAgICAgICAgICAiTkVUU05NUF9EU19UT0tFTl9JRCIgICAgICAgICAgICAgICAgICAgID0+IDIsCmRpZmYgLS1naXQgYS9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jIGIvcHl0aG9uL25ldHNubXAvY2xpZW50X2ludGYuYwppbmRleCAzYTkwNGE2Li43ZmM3NGRjIDEwMDY0NAotLS0gYS9weXRob24vbmV0c25tcC9jbGllbnRfaW50Zi5jCisrKyBiL3B5dGhvbi9uZXRzbm1wL2NsaWVudF9pbnRmLmMKQEAgLTY1OCw2ICs2NTgsOSBAQAogCW5ld25hbWVfbGVuID0gTUFYX09JRF9MRU47CiAJaWYgKHJlYWRfb2JqaWQodGFnLCBuZXduYW1lLCAmbmV3bmFtZV9sZW4pKSB7CS8qIGxvbmcgbmFtZSAqLwogCSAgcnRwID0gdHAgPSBnZXRfdHJlZShuZXduYW1lLCBuZXduYW1lX2xlbiwgZ2V0X3RyZWVfaGVhZCgpKTsKKwl9IGVsc2UgeworCSAgLyogZmFpbGVkIHRvIHBhcnNlIHRoZSBPSUQgKi8KKwkgIG5ld25hbWVfbGVuID0gMDsKIAl9CiAgICAgICB9CiAgICAgICBlbHNlIHsKQEAgLTc1OCw4ICs3NjEsNyBAQAogICAgIH0KIAogICAgIHZhcnMtPm5leHRfdmFyaWFibGUgPSBOVUxMOwotICAgIHZhcnMtPm5hbWUgPSAob2lkICopbWFsbG9jKG5hbWVfbGVuZ3RoICogc2l6ZW9mKG9pZCkpOwotICAgIG1lbWNweSgoY2hhciAqKXZhcnMtPm5hbWUsIChjaGFyICopbmFtZSwgbmFtZV9sZW5ndGggKiBzaXplb2Yob2lkKSk7CisgICAgdmFycy0+bmFtZSA9IHNubXBfZHVwbGljYXRlX29iamlkKG5hbWUsIG5hbWVfbGVuZ3RoKTsKICAgICB2YXJzLT5uYW1lX2xlbmd0aCA9IG5hbWVfbGVuZ3RoOwogICAgIHN3aXRjaCAodHlwZSkgewogICAgICAgY2FzZSBUWVBFX0lOVEVHRVI6CkBAIC04NDUsOSArODQ3LDggQEAKICAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IE5VTEw7CiAJICAgIHJldCA9IEZBSUxVUkU7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXJzLT52YWwub2JqaWQgPSBzbm1wX2R1cGxpY2F0ZV9vYmppZChvaWRidWYsIHZhcnMtPnZhbF9sZW4pOwogICAgICAgICAgICAgdmFycy0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKLSAgICAgICAgICAgIHZhcnMtPnZhbC5vYmppZCA9IChvaWQgKiltYWxsb2ModmFycy0+dmFsX2xlbik7Ci0gICAgICAgICAgICBtZW1jcHkoKGNoYXIgKil2YXJzLT52YWwub2JqaWQsIChjaGFyICopb2lkYnVmLCB2YXJzLT52YWxfbGVuKTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKIApAQCAtODg2LDcgKzg4Nyw5IEBACiAKIHJldHJ5OgogCi0gICBzdGF0dXMgPSBzbm1wX3N5bmNoX3Jlc3BvbnNlKHNzLCBwZHUsIHJlc3BvbnNlKTsKKyAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgIHN0YXR1cyA9IHNubXBfc2Vzc19zeW5jaF9yZXNwb25zZShzcywgcGR1LCByZXNwb25zZSk7CisgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogCiAgICBpZiAoKCpyZXNwb25zZSA9PSBOVUxMKSAmJiAoc3RhdHVzID09IFNUQVRfU1VDQ0VTUykpIHN0YXR1cyA9IFNUQVRfRVJST1I7CiAKQEAgLTExMDQsNiArMTEwNyw4IEBACiAKICAgX19saWJyYXJpZXNfaW5pdCgicHl0aG9uIik7CiAKKyAgc25tcF9zZXNzX2luaXQoJnNlc3Npb24pOworCiAgIHNlc3Npb24udmVyc2lvbiA9IC0xOwogI2lmbmRlZiBESVNBQkxFX1NOTVBWMQogICBpZiAodmVyc2lvbiA9PSAxKSB7CkBAIC0xMTMyLDcgKzExMzcsNyBAQAogICBzZXNzaW9uLnRpbWVvdXQgPSB0aW1lb3V0OyAvKiAxMDAwMDAwTCAqLwogICBzZXNzaW9uLmF1dGhlbnRpY2F0b3IgPSBOVUxMOwogCi0gIHNzID0gc25tcF9vcGVuKCZzZXNzaW9uKTsKKyAgc3MgPSBzbm1wX3Nlc3Nfb3Blbigmc2Vzc2lvbik7CiAKICAgaWYgKHNzID09IE5VTEwpIHsKICAgICBpZiAodmVyYm9zZSkgCkBAIC0xMzAyLDcgKzEzMDcsNyBAQAogCiAgIHNzID0gKFNubXBTZXNzaW9uICopcHlfbmV0c25tcF9hdHRyX3ZvaWRfcHRyKHNlc3Npb24sICJzZXNzX3B0ciIpOwogCi0gIHNubXBfY2xvc2Uoc3MpOworICBzbm1wX3Nlc3NfY2xvc2Uoc3MpOwogICByZXR1cm4gKFB5X0J1aWxkVmFsdWUoIiIpKTsKIH0KIApAQCAtMTQ5MiwxMCArMTQ5NywxNiBAQAogCXB5X25ldHNubXBfYXR0cl9zZXRfc3RyaW5nKHZhcmJpbmQsICJ2YWwiLCAoY2hhciAqKSBzdHJfYnVmLCBsZW4pOwogCiAJLyogc2F2ZSBpbiByZXR1cm4gdHVwbGUgYXMgd2VsbCAqLwotCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKLQkJCShsZW4gPyBQeV9CdWlsZFZhbHVlKCJzIyIsIHN0cl9idWYsIGxlbikgOgotCQkJIFB5X0J1aWxkVmFsdWUoIiIpKSk7Ci0KKwlpZiAoKHR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpIHx8CisJCQkodHlwZSA9PSBTTk1QX05PU1VDSE9CSkVDVCkgfHwKKwkJCSh0eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisJCS8qIFRyYW5zbGF0ZSBlcnJvciB0byBOb25lICovCisJCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKKwkJCVB5X0J1aWxkVmFsdWUoIiIpKTsKKwl9IGVsc2UgeworCQlQeVR1cGxlX1NldEl0ZW0odmFsX3R1cGxlLCB2YXJsaXN0X2luZCwKKwkJCVB5X0J1aWxkVmFsdWUoInMjIiwgc3RyX2J1ZiwgbGVuKSk7CisJfQogCVB5X0RFQ1JFRih2YXJiaW5kKTsKICAgICAgIH0gZWxzZSB7CiAJcHJpbnRmKCJuZXRzbm1wX2dldDogYmFkIHZhcmJpbmQgKCVkKVxuIiwgdmFybGlzdF9pbmQpOwpAQCAtMTcwNiwxMCArMTcxNywxNiBAQAogCXB5X25ldHNubXBfYXR0cl9zZXRfc3RyaW5nKHZhcmJpbmQsICJ2YWwiLCAoY2hhciAqKSBzdHJfYnVmLCBsZW4pOwogCiAJLyogc2F2ZSBpbiByZXR1cm4gdHVwbGUgYXMgd2VsbCAqLwotCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKLQkJCShsZW4gPyBQeV9CdWlsZFZhbHVlKCJzIyIsIHN0cl9idWYsIGxlbikgOgotCQkJIFB5X0J1aWxkVmFsdWUoIiIpKSk7Ci0KKwlpZiAoKHR5cGUgPT0gU05NUF9FTkRPRk1JQlZJRVcpIHx8CisJCQkodHlwZSA9PSBTTk1QX05PU1VDSE9CSkVDVCkgfHwKKwkJCSh0eXBlID09IFNOTVBfTk9TVUNISU5TVEFOQ0UpKSB7CisJCS8qIFRyYW5zbGF0ZSBlcnJvciB0byBOb25lICovCisJCVB5VHVwbGVfU2V0SXRlbSh2YWxfdHVwbGUsIHZhcmxpc3RfaW5kLCAKKwkJCVB5X0J1aWxkVmFsdWUoIiIpKTsKKwl9IGVsc2UgeworCQlQeVR1cGxlX1NldEl0ZW0odmFsX3R1cGxlLCB2YXJsaXN0X2luZCwKKwkJCVB5X0J1aWxkVmFsdWUoInMjIiwgc3RyX2J1ZiwgbGVuKSk7CisJfQogCVB5X0RFQ1JFRih2YXJiaW5kKTsKICAgICAgIH0gZWxzZSB7CiAJcHJpbnRmKCJuZXRzbm1wX2dldG5leHQ6IGJhZCB2YXJiaW5kICglZClcbiIsIHZhcmxpc3RfaW5kKTsKQEAgLTE5NjksMTEgKzE5ODYsOCBAQAogICAgIAkgIC8qIHNhdmUgaW4gcmV0dXJuIHR1cGxlIGFzIHdlbGwgKi8KIAkgIC8qIHNhdmUgaW4gcmV0dXJuIHR1cGxlIGFzIHdlbGwgLSBzdGVhbHMgcmVmICovCiAJICBfUHlUdXBsZV9SZXNpemUoJnZhbF90dXBsZSwgcmVzdWx0X2NvdW50KzEpOwotCSAgUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgcmVzdWx0X2NvdW50KyssIAotCQkJICAobGVuID8gUHlfQnVpbGRWYWx1ZSgicyMiLCBzdHJfYnVmLCBsZW4pIDoKLQkJCSAgIFB5X0J1aWxkVmFsdWUoIiIpKSk7Ci0gICAgICAgICAgICAKLQorCSAgUHlUdXBsZV9TZXRJdGVtKHZhbF90dXBsZSwgcmVzdWx0X2NvdW50KyssCisJCQlQeV9CdWlsZFZhbHVlKCJzIyIsIHN0cl9idWYsIGxlbikpOwogICAgICAgICAgIH0gZWxzZSB7CiAJICAgIC8qIFJldHVybiBOb25lIGZvciB0aGlzIHZhcmlhYmxlLiAqLwogICAgICAgICAgICAgX1B5VHVwbGVfUmVzaXplKCZ2YWxfdHVwbGUsIHJlc3VsdF9jb3VudCsxKTsKQEAgLTIzNDUsNiArMjM1OSwxMCBAQAogCSAgc25tcF9mcmVlX3BkdShwZHUpOwogCSAgZ290byBkb25lOwogCX0KKwltZW1zZXQodG1wX3ZhbF9zdHIsIDAsIHNpemVvZih0bXBfdmFsX3N0cikpOworICAgICAgICBpZiAoIHRtcGxlbiA+PSBzaXplb2YodG1wX3ZhbF9zdHIpKSB7CisgICAgICAgICAgICB0bXBsZW4gPSBzaXplb2YodG1wX3ZhbF9zdHIpLTE7CisgICAgICAgIH0KIAltZW1jcHkodG1wX3ZhbF9zdHIsIHZhbCwgdG1wbGVuKTsKIAlpZiAodHlwZT09VFlQRV9JTlRFR0VSICYmIHVzZV9lbnVtcyAmJiB0cCAmJiB0cC0+ZW51bXMpIHsKIAkgIGZvcihlcCA9IHRwLT5lbnVtczsgZXA7IGVwID0gZXAtPm5leHQpIHsKZGlmZiAtLWdpdCBhL3NlZHNjcmlwdC5pbiBiL3NlZHNjcmlwdC5pbgppbmRleCBhZWRmN2I4Li43ODE0Y2U5IDEwMDY0NAotLS0gYS9zZWRzY3JpcHQuaW4KKysrIGIvc2Vkc2NyaXB0LmluCkBAIC0xMDYsNCArMTA2LDQgQEAKIAogcyNQUkVNT1ZFTUVTQ01EI1BTQ01EI2cKIHMjQVJFTU9WRU1FR0VOVFhfU09DS0VUI0FHRU5UWF9TT0NLRVQjZwotcy9WRVJTSU9OSU5GTy81LjQuMy5wcmUxL2cKK3MjTlJFTU9WRU1FRVRTTk1QX1RFTVBfRklMRV9QQVRURVJOI05FVFNOTVBfVEVNUF9GSUxFX1BBVFRFUk4jZwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9NYWtlZmlsZS5kZXBlbmQgYi9zbm1wbGliL01ha2VmaWxlLmRlcGVuZAppbmRleCBjYWM2NTEwLi42YzA4OGYxIDEwMDY0NAotLS0gYS9zbm1wbGliL01ha2VmaWxlLmRlcGVuZAorKysgYi9zbm1wbGliL01ha2VmaWxlLmRlcGVuZApAQCAtNywxMyArNywzMCBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC0yMiw5ICszOSw3IEBACiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTMzLDIxICs0OCw0MCBAQAogLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKIC4vYXNuMS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2FzbjEubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9hc24xLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTU2LDkgKzkwLDcgQEAKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NhbGxiYWNrLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vY2FsbGJhY2subG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9jYWxsYmFjay5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtNzYsMzIgKzEwOCwxNCBAQAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTExMiwxMSArMTI2LDMxIEBACiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jaGVja192YXJiaW5kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vY2hlY2tfdmFyYmluZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NoZWNrX3ZhcmJpbmQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTEzOSw2ICsxNzMsNzQgQEAKIC4vY211X2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCiAuL2NtdV9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAogLi9jbXVfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMTQ2LDMyICsyNDgsMTQgQEAKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMTgyLDEwICsyNjYsMzEgQEAKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NvbnRhaW5lci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjA0LDcyICszMDksNiBAQAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9jb250YWluZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX251bGwuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAotLi9jb250YWluZXJfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3RyYW5zZm9ybV9vaWRzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vY29udGFpbmVyX2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCi0uL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaApAQCAtMjc4LDMyICszMTcsMTQgQEAKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTMxNCwxMSArMzM1LDMxIEBACiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vY29udGFpbmVyX2l0ZXJhdG9yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jb250YWluZXJfaXRlcmF0b3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2NvbnRhaW5lcl9pdGVyYXRvci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMzQ0LDMyICszODUsMTQgQEAKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0zODAsMTEgKzQwMywzMSBAQAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vY29udGFpbmVyX2xpc3Rfc3NsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL2NvbnRhaW5lcl9saXN0X3NzbGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9jb250YWluZXJfbGlzdF9zc2xsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC00MTAsMzIgKzQ1MywxNCBAQAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC00NDYsMTEgKzQ3MSwzMSBAQAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vY29udGFpbmVyX251bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2NvbnRhaW5lcl9udWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi9jb250YWluZXJfbnVsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNDc2LDMyICs1MjEsMTQgQEAKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtNTEyLDEwICs1MzksMzEgQEAKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vZGF0YV9saXN0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9kYXRhX2xpc3QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2RhdGFfbGlzdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtNTM5LDE0ICs1ODcsMzMgQEAKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtNTYxLDkgKzYyOCw3IEBACiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9kZWZhdWx0X3N0b3JlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTU3Myw2ICs2MzgsNzQgQEAKIC4vZGVmYXVsdF9zdG9yZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL2RlZmF1bHRfc3RvcmUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2dldG9wdC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKKy4vZGlyX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCisuL2Rpcl91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9kaXJfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kaXJfdXRpbHMuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCkBAIC01ODEsMzIgKzcxNCwxNCBAQAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTYxNywxMSArNzMyLDMxIEBACiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAotLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTY0MCw0MCArNzc1LDIwIEBACiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAogLi9mZF9ldmVudF9tYW5hZ2VyLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mZF9ldmVudF9tYW5hZ2VyLmgKKy4vZmRfZXZlbnRfbWFuYWdlci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCisuL2ZkX2V2ZW50X21hbmFnZXIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTY4NCwxMCArNzk5LDMxIEBACiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9maWxlX3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTcwNywzOCArODQzLDg0IEBACiAuL2ZpbGVfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vZmlsZV91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2luZXRfbnRvcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9pbmV0X250b3AubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vaW5ldF9udG9wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vaW5ldF9wdG9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2luZXRfcHRvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9pbmV0X3B0b24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vaW50NjQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCkBAIC03NDcsMTkgKzkyOSwzNCBAQAogLi9pbnQ2NC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL2ludDY0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaApAQCAtNzY4LDkgKzk2NSw3IEBACiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTc4MywyMCArOTc4LDY2IEBACiAuL2tleXRvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi9rZXl0b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKIC4va2V5dG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbGFyZ2VfZmRfc2V0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL2xhcmdlX2ZkX3NldC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9sYXJnZV9mZF9zZXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC04MDUsOSArMTA0Niw3IEBACiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTgxOCwzMyArMTA1Nyw0MyBAQAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vbGNkX3RpbWUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi9sY2RfdGltZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCiAuL2xjZF90aW1lLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vbWQ1LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTg1NiwxOSArMTEwNSwzMiBAQAogLi9tZDUubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL21kNS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21kNS5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC04ODIsOSArMTE0NCw3IEBACiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTg5Myw0NyArMTE1MywyMCBAQAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9taWIubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL21pYi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vbWliLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9tdF9zdXBwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vbXRfc3VwcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9tdF9zdXBwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL210X3N1cHBvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC05NDQsMTAgKzExNzcsMzEgQEAKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vb2lkX3N0YXNoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAogLi9vaWRfc3Rhc2gubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtOTY2LDE5ICsxMjIwLDMyIEBACiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL29pZF9zdGFzaC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtOTkzLDkgKzEyNjAsNyBAQAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xMDA0LDI3ICsxMjY5LDM3IEBACiAuL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKIC4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9wYXJzZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCi0uL3BhcnNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vcGFyc2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3BrY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vcGtjcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9wa2NzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vcGtjcy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3BrY3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApAQCAtMTAzOSw5ICsxMzE0LDcgQEAKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTA1MSwyMiArMTMyNCwzMyBAQAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3JlYWRfY29uZmlnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vcmVhZF9jb25maWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAotLi9yZWFkX2NvbmZpZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaApAQCAtMTA3NSw5ICsxMzU5LDcgQEAKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaApAQCAtMTA4OCw1NSArMTM3MCwzOSBAQAogLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc2NhcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAotLi9zY2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NjYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTExNDUsMjI5ICsxNDExLDM2IEBACiAuL3NubXBBQUw1UFZDRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAogLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wQUFMNVBWQ0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcEFBTDVQVkNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQUFMNVBWQ0RvbWFpbi5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAotLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFNURERvbWFpbi5oCi0uL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3NubXBUQ1BJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKLS4vc25tcFRDUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAotLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcFVEUElQdjZEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCi0uL3NubXBVRFBJUHY2RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAotLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xMzgyLDkgKzE0NTUsNyBAQAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9hbGFybS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xMzk0LDIwICsxNDY1LDg4IEBACiAuL3NubXBfYWxhcm0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAogLi9zbm1wX2FsYXJtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wQWxpYXNEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcEFsaWFzRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBBbGlhc0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xNDIyLDkgKzE1NjEsNyBAQAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNDM0LDMxICsxNTcxLDQyIEBACiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAotLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKKy4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaAogLi9zbm1wX2FwaS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKIC4vc25tcF9hcGkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCi0uL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9hcGkubG86IC4uL2FnZW50L21pYmdyb3VwL2FnZW50eC9wcm90b2NvbC5oCiAuL3NubXBfYXBpLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC0xNDY3LDkgKzE2MTUsNyBAQAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNDc5LDQzICsxNjI1LDE1NCBAQAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2F1dGgubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfYXV0aC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKLS4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWQ1LmgKIC4vc25tcF9hdXRoLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXAubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcENhbGxiYWNrRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wQ2FsbGJhY2tEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBDYWxsYmFja0RvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2FnZW50L2RzX2FnZW50LmgKKy4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAotLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcF9jbGllbnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXBfY2xpZW50LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi9zbm1wX2NsaWVudC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE1MzAsOSArMTc4Nyw3IEBACiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX2RlYnVnLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE1NDIsMTYgKzE3OTcsNzIgQEAKIC4vc25tcF9kZWJ1Zy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBfZGVidWcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcERUTFNVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBEVExTVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wRFRMU1VEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9lbnVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKQEAgLTE1NjIsMjAgKzE4NzMsMTI5IEBACiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCiAuL3NubXBfZW51bS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi9zbm1wX2VudW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3NubXBJUFhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wSVBYRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9lbnVtLmgKKy4vc25tcElQWERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oIC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbGNkX3RpbWUuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaAorLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcGtzbS5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xNTkwLDkgKzIwMTAsNyBAQAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9sb2dnaW5nLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNjAyLDIwICsyMDIwLDEwMCBAQAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wX2xvZ2dpbmcubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfbG9nZ2luZy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZ2V0b3B0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3NubXB2M19hcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi9zbm1wX29wZW5zc2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgKKy4vc25tcF9vcGVuc3NsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXBfb3BlbnNzbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xNjMwLDkgKzIxMjgsNyBAQAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xNjQyLDI2ICsyMTM4LDM5IEBACiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCiAuL3NubXBfcGFyc2VfYXJncy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2tleXRvb2xzLmgKLS4vc25tcF9wYXJzZV9hcmdzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMuaAogLi9zbm1wX3BhcnNlX2FyZ3MubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE2NzYsOSArMjE4NSw3IEBACiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE2ODksNDIgKzIxOTYsMTkgQEAKIC4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3NlY21vZC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcF9zZWNtb2QubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXBfc2VjbW9kLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oIHNubXBzbV9pbml0LmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKQEAgLTE3MzUsMTEgKzIyMTksMzEgQEAKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCi0uL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGF0YV9saXN0LmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2xpc3Rfc3NsbC5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKKy4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKIC4vc25tcF9zZXJ2aWNlLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCkBAIC0xNzU3LDIwICsyMjYxLDE2NyBAQAogLi9zbm1wX3NlcnZpY2UubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3NubXBfc2VydmljZS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB1c20uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wU1NIRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKKy4vc25tcFNTSERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBTU0hEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wU1RERG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBTVEREb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wU1RERG9tYWluLmgKKy4vc25tcFNURERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXAtdGMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcC10Yy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wLXRjLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vc25tcFRDUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wVENQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCisuL3NubXBUQ1BEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAorLi9zbm1wVENQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTE3NzksOSArMjQzMCw3IEBACiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE3OTEsODAgKzI0NDAsMTc0IEBACiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCiAuL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCi0uL3NubXBfdHJhbnNwb3J0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAotLi9zbm1wX3RyYW5zcG9ydC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKLS4vc25tcF90cmFuc3BvcnQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAotLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcF92ZXJzaW9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBfdmVyc2lvbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9wYXJzZV9hcmdzLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS92YWNtLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3Rvb2xzLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hbGFybS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZhY3RvcnkuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3NubXBrc20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkva2V5dG9vbHMuaAotLi9zbm1wa3NtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHYzLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2xjZF90aW1lLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKLS4vc25tcGtzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBrc20uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmggLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zbm1wdjNfYXBpLmgKKy4vc25tcHRzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90cmFuc2Zvcm1fb2lkcy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdjMtc2VjdXJpdHktaW5jbHVkZXMuaAorLi9zbm1wdHNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCisuL3NubXB0c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdHNtLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcFVEUERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBVRFBEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi9zbm1wVURQRG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi9zbm1wVURQSVB2NkRvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQSVB2NkRvbWFpbi5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZGVidWcuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3JlYWRfY29uZmlnLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKKy4vc25tcFVuaXhEb21haW4ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3BhcnNlX2FyZ3MuaAorLi9zbm1wVW5peERvbWFpbi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCisuL3NubXBVbml4RG9tYWluLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCkBAIC0xODc5LDkgKzI2MjIsNyBAQAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vc25tcHVzbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wdXNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0xODk2LDIyICsyNjM3LDM0IEBACiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9sY2RfdGltZS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zY2FwaS5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oCi0uL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3NubXB1c20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcENhbGxiYWNrRG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVURQRG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAorLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oIC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKKy4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvb3V0cHV0X2FwaS5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKQEAgLTE5MjYsOSArMjY3OSw3IEBACiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTE5NDMsNzQgKzI2OTQsNzEgQEAKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9rZXl0b29scy5oCiAuL3NubXB2My5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VjbW9kLmgKLS4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi9zbm1wdjMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wdXNtLmgKIC4vc25tcHYzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHJhbnNmb3JtX29pZHMuaAorLi9zbm1wX3ZlcnNpb24ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKy4vc25tcF92ZXJzaW9uLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zbnByaW50Zi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zbnByaW50Zi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi9zbnByaW50Zi5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3NucHJpbnRmLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc25wcmludGYubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zdHJsY2F0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3N0cmxjYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3RybGNhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RybGNweS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N0cmxjcHkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJsY3B5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cnRva19yLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3RydG9rX3IubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJ0b2tfci5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zdHJ0b2wubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3RydG9sLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cnRvbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N0cnRvbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N0cnRvbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zdHJ0b3VsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cnRvdWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vc3RydG91bC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N0cnRvdWwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJ0b3VsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAotLi9zdHJ0b3VsbC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCi0uL3N0cnRvdWxsLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKLS4vc3RydG91bGwubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVW5peERvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUElQdjZEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2RlYnVnLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCkBAIC0yMDE5LDkgKzI3NjcsNyBAQAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9pbnQ2NC5oCiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCkBAIC0yMDMyLDQwICsyNzc4LDIzIEBACiAuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXNzZXJ0LmgKIC4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAogLi9zeXN0ZW0ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9jb25maWdfYXBpLmgKKy4vc3lzdGVtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfZW51bS5oCisuL3N5c3RlbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3ZhY20uaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90eXBlcy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc3lzdGVtLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS90b29scy5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAotLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaApAQCAtMjA3NiwxMSArMjgwNSwzMSBAQAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCi0uL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmFyYmluZF9hcGkuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLXRjLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC91dGlsaXRpZXMuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ludDY0LmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9tdF9zdXBwb3J0LmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NoZWNrX3ZhcmJpbmQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKKy4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAorLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmgKIC4vdGVzdF9iaW5hcnlfYXJyYXkubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RlZmF1bHRfc3RvcmUuaApAQCAtMjA5OSwzOSArMjg0OCwxNyBAQAogLi90ZXN0X2JpbmFyeV9hcnJheS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXB2My1zZWN1cml0eS1pbmNsdWRlcy5oCiAuL3Rlc3RfYmluYXJ5X2FycmF5LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vbGludXguaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vZ2VuZXJpYy5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWFjaGluZS9nZW5lcmljLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvZGVmaW5pdGlvbnMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvZmFjdG9yeS5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfbGlzdF9zc2xsLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9pdGVyYXRvci5oCi0uL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXIuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZlcnNpb24uaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvYXNuMS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc2Vzc2lvbl9hcGkuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9zZXJ2aWNlLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCkBAIC0yMTQyLDEwICsyODY5LDMxIEBACiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3VjZF9jb21wYXQuaAotLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3BkdV9hcGkuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3BhcnNlLmgKLS4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9nZXRvcHQuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3V0aWxpdGllcy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbXRfc3VwcG9ydC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FsYXJtLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2RhdGFfbGlzdC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jaGVja192YXJiaW5kLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfbG9nZ2luZy5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfYmluYXJ5X2FycmF5LmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lcl9saXN0X3NzbGwuaAorLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2l0ZXJhdG9yLmgKKy4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oCisuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdmVyc2lvbi5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3RleHRfdXRpbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKQEAgLTIxNjYsMTkgKzI5MTQsMzIgQEAKIC4vdGV4dF91dGlscy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2ZpbGVfdXRpbHMuaAogLi90ZXh0X3V0aWxzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdGV4dF91dGlscy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9zeXN2LmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC90eXBlcy5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBDYWxsYmFja0RvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BEb21haW4uaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQSVB2NkRvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvbWliLmggLi4vaW5jbHVkZS9uZXQtc25tcC9taWJfYXBpLmgKKy4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2ltcGwuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9vdXRwdXRfYXBpLmgKLS4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdXRpbGl0aWVzLmgKQEAgLTIxODcsOSArMjk0OCw3IEBACiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvaW50NjQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L210X3N1cHBvcnQuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYWxhcm0uaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kYXRhX2xpc3QuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L29pZF9zdGFzaC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY2hlY2tfdmFyYmluZC5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmgKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9mYWN0b3J5LmgKQEAgLTIxOTgsMjIgKzI5NTcsMTcgQEAKIC4vdG9vbHMubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jb250YWluZXJfaXRlcmF0b3IuaAogLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oCiAuL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9hc3NlcnQuaAotLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCi0uL3Rvb2xzLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc2NhcGkuaAorLi90b29scy5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92ZXJzaW9uLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NjYXBpLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9saW51eC5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL3N5c3YuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3N5c3RlbS9nZW5lcmljLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9tYWNoaW5lL2dlbmVyaWMuaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3R5cGVzLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3R5cGVzLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9kZWZpbml0aW9ucy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKLS4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAotLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC92YXJiaW5kX2FwaS5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2NsaWVudC5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvcGR1X2FwaS5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9hc24xLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zZXNzaW9uX2FwaS5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9jYWxsYmFjay5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX3NlcnZpY2UuaApAQCAtMjIyNSwyNyArMjk3OSw0NiBAQAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFRDUElQdjZEb21haW4uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcElQWERvbWFpbi5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS91Y2RfY29tcGF0LmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L21pYi5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbWliX2FwaS5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9wYXJzZS5oCisuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9vaWRfc3Rhc2guaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9pbXBsLmgKKy4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAuaAorLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcC10Yy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvY29uZmlnX2FwaS5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9yZWFkX2NvbmZpZy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9kZWZhdWx0X3N0b3JlLmgKIC4vdWNkX2NvbXBhdC5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfcGFyc2VfYXJncy5oCiAuL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2VudW0uaAogLi91Y2RfY29tcGF0LmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdmFjbS5oCi0uL3VjZF9jb21wYXQubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2xpbnV4LmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9zeXN0ZW0vc3lzdi5oCi0uL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvc3lzdGVtL2dlbmVyaWMuaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL21hY2hpbmUvZ2VuZXJpYy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvdHlwZXMuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdHlwZXMuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2RlZmluaXRpb25zLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfYXBpLmgKLS4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3ZhcmJpbmRfYXBpLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50LmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9wZHVfYXBpLmggLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2FzbjEuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL3Nlc3Npb25fYXBpLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L2NhbGxiYWNrLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfdHJhbnNwb3J0LmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfc2VydmljZS5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wQ2FsbGJhY2tEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVuaXhEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBVRFBJUHY2RG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBUQ1BJUHY2RG9tYWluLmgKKy4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBJUFhEb21haW4uaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvdWNkX2NvbXBhdC5oCisuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9taWIuaCAuLi9pbmNsdWRlL25ldC1zbm1wL21pYl9hcGkuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvcGFyc2UuaAorLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvb2lkX3N0YXNoLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXBfaW1wbC5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wLmgKIC4vdmFjbS5sbzogLi4vaW5jbHVkZS9uZXQtc25tcC9saWJyYXJ5L3NubXAtdGMuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL291dHB1dF9hcGkuaAotLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9jbGllbnQuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oCiAuL3ZhY20ubG86IC4uL2luY2x1ZGUvbmV0LXNubXAvbGlicmFyeS9zbm1wX2xvZ2dpbmcuaAogLi92YWNtLmxvOiAuLi9pbmNsdWRlL25ldC1zbm1wL2NvbmZpZ19hcGkuaApkaWZmIC0tZ2l0IGEvc25tcGxpYi9NYWtlZmlsZS5pbiBiL3NubXBsaWIvTWFrZWZpbGUuaW4KaW5kZXggMzRlMzBlNi4uYWZkNTYyNCAxMDA2NDQKLS0tIGEvc25tcGxpYi9NYWtlZmlsZS5pbgorKysgYi9zbm1wbGliL01ha2VmaWxlLmluCkBAIC01NSw2ICs1NSw3IEBACiAJZmFjdG9yeS5oIFwKIAlkYXRhX2xpc3QuaCBcCiAJZGVmYXVsdF9zdG9yZS5oIFwKKwlkaXJfdXRpbHMuaCBcCiAJZmRfZXZlbnRfbWFuYWdlci5oIFwKIAlmaWxlX3V0aWxzLmggXAogCWludDY0LmggXApAQCAtNjcsNiArNjgsNyBAQAogCXNubXAuaCBcCiAJc25tcF9hbGFybS5oIFwKIAlzbm1wX2FwaS5oIFwKKwlsYXJnZV9mZF9zZXQuaCBcCiAJc25tcF9hc3NlcnQuaCBcCiAJc25tcF9jbGllbnQuaCBcCiAJc25tcF9kZWJ1Zy5oIFwKQEAgLTgwLDYgKzgyLDcgQEAKIAl0ZXh0X3V0aWxzLmggXAogCXRvb2xzLmggXAogCXRyYW5zZm9ybV9vaWRzLmggXAorCXR5cGVzLmggXAogICAgICAgICBjbXVfY29tcGF0LmggXAogICAgICAgICBnZXRvcHQuaCBcCiAgICAgICAgIGxjZF90aW1lLmggXApAQCAtMTExLDYgKzExNCw3IEBACiAJc2NhcGkuaAkJXAogCXNubXBfYWxhcm0uaAlcCiAJc25tcF9hcGkuaAlcCisJbGFyZ2VfZmRfc2V0LmgJXAogCXNubXBfY2xpZW50LmgJXAogCXNubXBfZGVidWcuaAlcCiAJc25tcC5oCQlcCkBAIC0xMzQsMTAgKzEzOCwxMSBAQAogIyBUaGluZ3MgdG8gYnVpbGQKICMKIENTUkNTPQlzbm1wX2NsaWVudC5jIG1pYi5jIHBhcnNlLmMgc25tcF9hcGkuYyBzbm1wLmMgCQlcCisJbGFyZ2VfZmRfc2V0LmMJCQkJCQlcCiAJc25tcF9hdXRoLmMgYXNuMS5jIG1kNS5jIHNubXBfcGFyc2VfYXJncy5jCQlcCiAJc3lzdGVtLmMgdmFjbS5jIGludDY0LmMgcmVhZF9jb25maWcuYyBwa2NzLmMJCVwKIAlzbm1wX2RlYnVnLmMgdG9vbHMuYyAgc25tcF9sb2dnaW5nLmMgdGV4dF91dGlscy5jCVwKLQlzbm1wdjMuYyBsY2RfdGltZS5jIGtleXRvb2xzLmMgZmlsZV91dGlscy5jCQlcCisJc25tcHYzLmMgbGNkX3RpbWUuYyBrZXl0b29scy5jIGZpbGVfdXRpbHMuYyBkaXJfdXRpbHMuYyBcCiAJc2NhcGkuYyBjYWxsYmFjay5jIGRlZmF1bHRfc3RvcmUuYyBzbm1wX2FsYXJtLmMJCVwKIAlkYXRhX2xpc3QuYyBvaWRfc3Rhc2guYyBmZF9ldmVudF9tYW5hZ2VyLmMgCQlcCiAJbXRfc3VwcG9ydC5jIHNubXBfZW51bS5jIHNubXAtdGMuYyBzbm1wX3NlcnZpY2UuYwlcCkBAIC0xNDYsMTMgKzE1MSwxNCBAQAogCXNubXBfc2VjbW9kLmMgQHNlY3VyaXR5X3NyY19saXN0QCBzbm1wX3ZlcnNpb24uYyAgICAgICAgXAogCWNoZWNrX3ZhcmJpbmQuYyBjb250YWluZXIuYyBjb250YWluZXJfYmluYXJ5X2FycmF5LmMJXAogCWNvbnRhaW5lcl9udWxsLmMgY29udGFpbmVyX2xpc3Rfc3NsbC5jIGNvbnRhaW5lcl9pdGVyYXRvci5jIFwKLQljbXVfY29tcGF0LmMgdWNkX2NvbXBhdC5jIEBvdGhlcl9zcmNfbGlzdEAKKwljbXVfY29tcGF0LmMgdWNkX2NvbXBhdC5jIHNubXBfb3BlbnNzbC5jIEBvdGhlcl9zcmNfbGlzdEAKIAogT0JKUz0Jc25tcF9jbGllbnQubyBtaWIubyBwYXJzZS5vIHNubXBfYXBpLm8gc25tcC5vIAkJXAorCWxhcmdlX2ZkX3NldC5vCQkJCQkJXAogCXNubXBfYXV0aC5vIGFzbjEubyBtZDUubyBzbm1wX3BhcnNlX2FyZ3MubwkJXAogCXN5c3RlbS5vIHZhY20ubyBpbnQ2NC5vIHJlYWRfY29uZmlnLm8gcGtjcy5vIAkJXAogCXNubXBfZGVidWcubyB0b29scy5vICBzbm1wX2xvZ2dpbmcubyB0ZXh0X3V0aWxzLm8JXAotCXNubXB2My5vIGxjZF90aW1lLm8ga2V5dG9vbHMubyBmaWxlX3V0aWxzLm8JCVwKKwlzbm1wdjMubyBsY2RfdGltZS5vIGtleXRvb2xzLm8gZmlsZV91dGlscy5vIGRpcl91dGlscy5vIFwKIAlzY2FwaS5vIGNhbGxiYWNrLm8gZGVmYXVsdF9zdG9yZS5vIHNubXBfYWxhcm0ubwkJXAogCWRhdGFfbGlzdC5vIG9pZF9zdGFzaC5vIGZkX2V2ZW50X21hbmFnZXIubwkJXAogCW10X3N1cHBvcnQubyBzbm1wX2VudW0ubyBzbm1wLXRjLm8gc25tcF9zZXJ2aWNlLm8JXApAQCAtMTYxLDEzICsxNjcsMTQgQEAKIAlzbm1wX3NlY21vZC5vIEBzZWN1cml0eV9vYmpfbGlzdEAgc25tcF92ZXJzaW9uLm8gICAgICAgIFwKIAljaGVja192YXJiaW5kLm8gY29udGFpbmVyLm8gY29udGFpbmVyX2JpbmFyeV9hcnJheS5vCVwKIAljb250YWluZXJfbnVsbC5vIGNvbnRhaW5lcl9saXN0X3NzbGwubyBjb250YWluZXJfaXRlcmF0b3IubyBcCi0JY211X2NvbXBhdC5vIHVjZF9jb21wYXQubyBAb3RoZXJfb2Jqc19saXN0QAorCWNtdV9jb21wYXQubyB1Y2RfY29tcGF0Lm8gc25tcF9vcGVuc3NsLm8gQG90aGVyX29ianNfbGlzdEAKIAogTE9CSlM9CXNubXBfY2xpZW50LmxvIG1pYi5sbyBwYXJzZS5sbyBzbm1wX2FwaS5sbyBzbm1wLmxvIAlcCisJbGFyZ2VfZmRfc2V0LmxvCQkJCQkJXAogCXNubXBfYXV0aC5sbyBhc24xLmxvIG1kNS5sbyBzbm1wX3BhcnNlX2FyZ3MubG8JCVwKIAlzeXN0ZW0ubG8gdmFjbS5sbyBpbnQ2NC5sbyByZWFkX2NvbmZpZy5sbyBwa2NzLmxvCVwKIAlzbm1wX2RlYnVnLmxvIHRvb2xzLmxvICBzbm1wX2xvZ2dpbmcubG8JIHRleHRfdXRpbHMubG8JXAotCXNubXB2My5sbyBsY2RfdGltZS5sbyBrZXl0b29scy5sbyBmaWxlX3V0aWxzLmxvCQlcCisJc25tcHYzLmxvIGxjZF90aW1lLmxvIGtleXRvb2xzLmxvIGZpbGVfdXRpbHMubG8gZGlyX3V0aWxzLmxvIFwKIAlzY2FwaS5sbyBjYWxsYmFjay5sbyBkZWZhdWx0X3N0b3JlLmxvIHNubXBfYWxhcm0ubG8JCVwKIAlkYXRhX2xpc3QubG8gb2lkX3N0YXNoLmxvIGZkX2V2ZW50X21hbmFnZXIubG8JCVwKIAltdF9zdXBwb3J0LmxvIHNubXBfZW51bS5sbyBzbm1wLXRjLmxvIHNubXBfc2VydmljZS5sbwlcCkBAIC0xNzYsNyArMTgzLDcgQEAKIAlzbm1wX3NlY21vZC5sbyBAc2VjdXJpdHlfbG9ial9saXN0QCBzbm1wX3ZlcnNpb24ubG8gICAgICAgXAogCWNoZWNrX3ZhcmJpbmQubG8gY29udGFpbmVyLmxvIGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkubG8JXAogCWNvbnRhaW5lcl9udWxsLmxvIGNvbnRhaW5lcl9saXN0X3NzbGwubG8gY29udGFpbmVyX2l0ZXJhdG9yLmxvIFwKLQljbXVfY29tcGF0LmxvIHVjZF9jb21wYXQubG8gQG90aGVyX2xvYmpzX2xpc3RACisJY211X2NvbXBhdC5sbyB1Y2RfY29tcGF0LmxvIHNubXBfb3BlbnNzbC5sbyBAb3RoZXJfbG9ianNfbGlzdEAKIAogIyBqdXN0IGluIGNhc2Ugc29tZW9uZSB3YW50cyB0byByZW1vdmUgbGlidG9vbCwgY2hhbmdlIHRoaXMgdG8gT0JKUy4KIFRPQkpTPSQoTE9CSlMpCkBAIC0xODgsMTEgKzE5NSwxMSBAQAogCiAjIGhvdyB0byBidWlsZCB0aGUgbGlicmFyaWVzLgogbGlibmV0c25tcC4kKExJQl9FWFRFTlNJT04pJChMSUJfVkVSU0lPTik6ICAgICQoVE9CSlMpCi0JJChMSUJfTERfQ01EKSAkQCAkKFRPQkpTKSAkKExERkxBR1MpIEBMTkVUU05NUExJQlNACisJJChMSUJfTERfQ01EKSAkQCBATERfTk9fVU5ERUZJTkVEQCAkKFRPQkpTKSAkKExERkxBR1MpIEBMTkVUU05NUExJQlNACiAJJChSQU5MSUIpICRACiAKIGxpYnNubXAuJChMSUJfRVhURU5TSU9OKSQoTElCX1ZFUlNJT04pOiAgICAkKFRPQkpTKQotCSQoTElCX0xEX0NNRCkgJEAgJChUT0JKUykgJChMREZMQUdTKSBATE5FVFNOTVBMSUJTQAorCSQoTElCX0xEX0NNRCkgJEAgQExEX05PX1VOREVGSU5FREAgJChUT0JKUykgJChMREZMQUdTKSBATE5FVFNOTVBMSUJTQAogCSQoUkFOTElCKSAkQAogCiAjCmRpZmYgLS1naXQgYS9zbm1wbGliL2FzbjEuYyBiL3NubXBsaWIvYXNuMS5jCmluZGV4IDIzNDZlNmMuLmY5NjMyZWYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvYXNuMS5jCisrKyBiL3NubXBsaWIvYXNuMS5jCkBAIC0yNTEsNiArMjUxLDI0IEBACiB9CiAKIC8qKgorICogQGludGVybmFsCisgKiBvdXRwdXQgYW4gZXJyb3IgZm9yIGEgd3JvbmcgdHlwZQorICogCisgKiBAcGFyYW0gc3RyICAgICAgICBlcnJvciBzdHJpbmcKKyAqIEBwYXJhbSB3cm9uZ3R5cGUgIHdyb25nIHR5cGUKKyAqLworc3RhdGljCisgICAgdm9pZAorX2Fzbl90eXBlX2Vycihjb25zdCBjaGFyICpzdHIsIGludCB3cm9uZ3R5cGUpCit7CisgICAgY2hhciAgICAgICAgICAgIGVidWZbMTI4XTsKKworICAgIHNucHJpbnRmKGVidWYsIHNpemVvZihlYnVmKSwgIiVzIHR5cGUgJWQiLCBzdHIsIHdyb25ndHlwZSk7CisgICAgZWJ1Zlsgc2l6ZW9mKGVidWYpLTEgXSA9IDA7CisgICAgRVJST1JfTVNHKGVidWYpOworfQorCisvKioKICAqIEBpbnRlcm5hbCAKICAqIG91dHB1dCBhbiBlcnJvciBmb3IgYSB3cm9uZyBsZW5ndGgKICAqIApAQCAtNDgyLDEyICs1MDAsMTcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgICp0eXBlID0gKmJ1ZnArKzsKKyAgICBpZiAoKnR5cGUgIT0gQVNOX0lOVEVHRVIpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgYnVmcCA9IGFzbl9wYXJzZV9sZW5ndGgoYnVmcCwgJmFzbl9sZW5ndGgpOwogICAgIGlmIChfYXNuX3BhcnNlX2xlbmd0aF9jaGVjawogICAgICAgICAoZXJycHJlLCBidWZwLCBkYXRhLCBhc25fbGVuZ3RoLCAqZGF0YWxlbmd0aCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKChzaXplX3QpIGFzbl9sZW5ndGggPiBpbnRzaXplKSB7CisgICAgaWYgKChzaXplX3QpIGFzbl9sZW5ndGggPiBpbnRzaXplIHx8IChpbnQpIGFzbl9sZW5ndGggPT0gMCkgewogICAgICAgICBfYXNuX2xlbmd0aF9lcnIoZXJycHJlLCAoc2l6ZV90KSBhc25fbGVuZ3RoLCBpbnRzaXplKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNTAzLDcgKzUyNiw3IEBACiAKICAgICBDSEVDS19PVkVSRkxPV19TKHZhbHVlLDEpOwogCi0gICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJsWClcbiIsIHZhbHVlLCB2YWx1ZSkpOwogCiAgICAgKmludHAgPSB2YWx1ZTsKICAgICByZXR1cm4gYnVmcDsKQEAgLTU0OSwxMiArNTcyLDE3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9DT1VOVEVSICYmICp0eXBlICE9IEFTTl9HQVVHRSAmJiAqdHlwZSAhPSBBU05fVElNRVRJQ0tTCisgICAgICAgICAgICAmJiAqdHlwZSAhPSBBU05fVUlOVEVHRVIpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGJ1ZnAgPSBhc25fcGFyc2VfbGVuZ3RoKGJ1ZnAsICZhc25fbGVuZ3RoKTsKICAgICBpZiAoX2Fzbl9wYXJzZV9sZW5ndGhfY2hlY2sKICAgICAgICAgKGVycnByZSwgYnVmcCwgZGF0YSwgYXNuX2xlbmd0aCwgKmRhdGFsZW5ndGgpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmICgoKGludCkgYXNuX2xlbmd0aCA+IChpbnRzaXplICsgMSkpIHx8CisgICAgaWYgKCgoaW50KSBhc25fbGVuZ3RoID4gKGludHNpemUgKyAxKSkgfHwgKChpbnQpIGFzbl9sZW5ndGggPT0gMCkgfHwKICAgICAgICAgKCgoaW50KSBhc25fbGVuZ3RoID09IGludHNpemUgKyAxKSAmJiAqYnVmcCAhPSAweDAwKSkgewogICAgICAgICBfYXNuX2xlbmd0aF9lcnIoZXJycHJlLCAoc2l6ZV90KSBhc25fbGVuZ3RoLCBpbnRzaXplKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC01NzAsNyArNTk4LDcgQEAKIAogICAgIENIRUNLX09WRVJGTE9XX1UodmFsdWUsMik7CiAKLSAgICBERUJVR01TRygoImR1bXB2X3JlY3YiLCAiICBVSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgdmFsdWUsIHZhbHVlKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9yZWN2IiwgIiAgVUludGVnZXI6XHQlbGQgKDB4JS4ybFgpXG4iLCB2YWx1ZSwgdmFsdWUpKTsKIAogICAgICppbnRwID0gdmFsdWU7CiAgICAgcmV0dXJuIGJ1ZnA7CkBAIC02NDksNyArNjc3LDcgQEAKICAgICAgICAgaW50ZWdlciA8PD0gODsKICAgICB9CiAgICAgREVCVUdEVU1QU0VUVVAoInNlbmQiLCBpbml0ZGF0YXAsIGRhdGEgLSBpbml0ZGF0YXApOwotICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIEludGVnZXI6XHQlbGQgKDB4JS4yWClcbiIsICppbnRwLCAqaW50cCkpOworICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsICIgIEludGVnZXI6XHQlbGQgKDB4JS4ybFgpXG4iLCAqaW50cCwgKmludHApKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtNzQ1LDcgKzc3Myw3IEBACiAgICAgICAgIGludGVnZXIgPDw9IDg7CiAgICAgfQogICAgIERFQlVHRFVNUFNFVFVQKCJzZW5kIiwgaW5pdGRhdGFwLCBkYXRhIC0gaW5pdGRhdGFwKTsKLSAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBVSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgKmludHAsICppbnRwKSk7CisgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgVUludGVnZXI6XHQlbGQgKDB4JS4ybFgpXG4iLCAqaW50cCwgKmludHApKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtNzg4LDYgKzgxNiwxMiBAQAogICAgIHVfbG9uZyAgICAgICAgICBhc25fbGVuZ3RoOwogCiAgICAgKnR5cGUgPSAqYnVmcCsrOworICAgIGlmICgqdHlwZSAhPSBBU05fT0NURVRfU1RSICYmICp0eXBlICE9IEFTTl9JUEFERFJFU1MgJiYgKnR5cGUgIT0gQVNOX09QQVFVRQorICAgICAgICAgICAgJiYgKnR5cGUgIT0gQVNOX05TQVApIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgYnVmcCA9IGFzbl9wYXJzZV9sZW5ndGgoYnVmcCwgJmFzbl9sZW5ndGgpOwogICAgIGlmIChfYXNuX3BhcnNlX2xlbmd0aF9jaGVjawogICAgICAgICAoZXJycHJlLCBidWZwLCBkYXRhLCBhc25fbGVuZ3RoLCAqZGF0YWxlbmd0aCkpIHsKQEAgLTEyODYsNiArMTMyMCw3IEBACiAgICAgICAgICAgICAgICAgc2l6ZV90ICogZGF0YWxlbmd0aCwKICAgICAgICAgICAgICAgICB1X2NoYXIgKiB0eXBlLCBvaWQgKiBvYmppZCwgc2l6ZV90ICogb2JqaWRsZW5ndGgpCiB7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmVycnByZSA9ICJwYXJzZSBvYmppZCI7CiAgICAgLyoKICAgICAgKiBBU04uMSBvYmppZCA6Oj0gMHgwNiBhc25sZW5ndGggc3ViaWRlbnRpZmllciB7c3ViaWRlbnRpZmllcn0qCiAgICAgICogc3ViaWRlbnRpZmllciA6Oj0ge2xlYWRpbmdieXRlfSogbGFzdGJ5dGUKQEAgLTEzMDAsNiArMTMzNSwxMCBAQAogICAgIHNpemVfdCAgICAgICAgICBvcmlnaW5hbF9sZW5ndGggPSAqb2JqaWRsZW5ndGg7CiAKICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9PQkpFQ1RfSUQpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIGJ1ZnAgPSBhc25fcGFyc2VfbGVuZ3RoKGJ1ZnAsICZhc25fbGVuZ3RoKTsKICAgICBpZiAoX2Fzbl9wYXJzZV9sZW5ndGhfY2hlY2soInBhcnNlIG9iamlkIiwgYnVmcCwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNuX2xlbmd0aCwgKmRhdGFsZW5ndGgpKQpAQCAtMTY2OSw2ICsxNzA4LDEwIEBACiAgICAgdV9sb25nICAgICAgICAgIGFzbl9sZW5ndGg7CiAKICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9CSVRfU1RSKSB7CisgICAgICAgIF9hc25fdHlwZV9lcnIoZXJycHJlLCAqdHlwZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBidWZwID0gYXNuX3BhcnNlX2xlbmd0aChidWZwLCAmYXNuX2xlbmd0aCk7CiAgICAgaWYgKF9hc25fcGFyc2VfbGVuZ3RoX2NoZWNrKGVycnByZSwgYnVmcCwgZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNuX2xlbmd0aCwgKmRhdGFsZW5ndGgpKQpAQCAtMTc4OSw2ICsxODMyLDE0IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICAqdHlwZSA9ICpidWZwKys7CisgICAgaWYgKCp0eXBlICE9IEFTTl9DT1VOVEVSNjQKKyNpZmRlZiBORVRTTk1QX1dJVEhfT1BBUVVFX1NQRUNJQUxfVFlQRVMKKyAgICAgICAgICAgICYmICp0eXBlICE9IEFTTl9PUEFRVUUKKyNlbmRpZgorICAgICAgICAgICAgKSB7CisgICAgICAgIF9hc25fdHlwZV9lcnIoZXJycHJlLCAqdHlwZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICBidWZwID0gYXNuX3BhcnNlX2xlbmd0aChidWZwLCAmYXNuX2xlbmd0aCk7CiAgICAgaWYgKF9hc25fcGFyc2VfbGVuZ3RoX2NoZWNrCiAgICAgICAgIChlcnJwcmUsIGJ1ZnAsIGRhdGEsIGFzbl9sZW5ndGgsICpkYXRhbGVuZ3RoKSkKQEAgLTE5ODgsNyArMjAzOSw3IEBACiAgICAgREVCVUdJRigiZHVtcHZfc2VuZCIpIHsKICAgICAgICAgY2hhciAgICAgICAgICAgIGk2NGJ1ZltJNjRDSEFSU1ogKyAxXTsKICAgICAgICAgcHJpbnRVNjQoaTY0YnVmLCBjcCk7Ci0gICAgICAgIERFQlVHTVNHKCgiZHVtcHZfc2VuZCIsIGk2NGJ1ZikpOworICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiJXMiLCBpNjRidWYpKTsKICAgICB9CiAgICAgcmV0dXJuIGRhdGE7CiB9CkBAIC0yMjI0LDYgKzIyNzUsNyBAQAogICAgICAgICAgICAgICAgIHNpemVfdCAqIGRhdGFsZW5ndGgsCiAgICAgICAgICAgICAgICAgdV9jaGFyICogdHlwZSwgZmxvYXQgKmZsb2F0cCwgc2l6ZV90IGZsb2F0c2l6ZSkKIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqZXJycHJlID0gInBhcnNlIGZsb2F0IjsKICAgICByZWdpc3RlciB1X2NoYXIgKmJ1ZnAgPSBkYXRhOwogICAgIHVfbG9uZyAgICAgICAgICBhc25fbGVuZ3RoOwogICAgIHVuaW9uIHsKQEAgLTIyNjQsNiArMjMxNiwxMSBAQAogICAgICAgICAqdHlwZSA9IEFTTl9PUEFRVUVfRkxPQVQ7CiAgICAgfQogCisgICAgaWYgKCp0eXBlICE9IEFTTl9PUEFRVUVfRkxPQVQpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGFzbl9sZW5ndGggIT0gc2l6ZW9mKGZsb2F0KSkgewogICAgICAgICBfYXNuX3NpemVfZXJyKCJwYXJzZSBzZXEgZmxvYXQiLCBhc25fbGVuZ3RoLCBzaXplb2YoZmxvYXQpKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yMzg5LDYgKzI0NDYsNyBAQAogICAgICAgICAgICAgICAgICBzaXplX3QgKiBkYXRhbGVuZ3RoLAogICAgICAgICAgICAgICAgICB1X2NoYXIgKiB0eXBlLCBkb3VibGUgKmRvdWJsZXAsIHNpemVfdCBkb3VibGVzaXplKQogeworICAgIHN0YXRpYyBjb25zdCBjaGFyICplcnJwcmUgPSAicGFyc2UgZG91YmxlIjsKICAgICByZWdpc3RlciB1X2NoYXIgKmJ1ZnAgPSBkYXRhOwogICAgIHVfbG9uZyAgICAgICAgICBhc25fbGVuZ3RoOwogICAgIGxvbmcgICAgICAgICAgICB0bXA7CkBAIC0yNDMxLDYgKzI0ODksMTEgQEAKICAgICAgICAgKnR5cGUgPSBBU05fT1BBUVVFX0RPVUJMRTsKICAgICB9CiAKKyAgICBpZiAoKnR5cGUgIT0gQVNOX09QQVFVRV9ET1VCTEUpIHsKKyAgICAgICAgX2Fzbl90eXBlX2VycihlcnJwcmUsICp0eXBlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCiAgICAgaWYgKGFzbl9sZW5ndGggIT0gc2l6ZW9mKGRvdWJsZSkpIHsKICAgICAgICAgX2Fzbl9zaXplX2VycigicGFyc2Ugc2VxIGRvdWJsZSIsIGFzbl9sZW5ndGgsIHNpemVvZihkb3VibGUpKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNTU3LDE1ICsyNjIwLDE2IEBACiAgICAgaWYgKHBrdCAhPSBOVUxMICYmIHBrdF9sZW4gIT0gTlVMTCkgewogICAgICAgICBzaXplX3QgICAgICAgICAgb2xkX3BrdF9sZW4gPSAqcGt0X2xlbjsKIAotICAgICAgICBERUJVR01TR1RMKCgiYXNuX3JlYWxsb2MiLCAiIG9sZF9wa3QgJTA4cCwgb2xkX3BrdF9sZW4gJTA4eFxuIiwKLSAgICAgICAgICAgICAgICAgICAgKnBrdCwgb2xkX3BrdF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImFzbl9yZWFsbG9jIiwgIiBvbGRfcGt0ICU4cCwgb2xkX3BrdF9sZW4gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICAqcGt0LCAodW5zaWduZWQgbG9uZylvbGRfcGt0X2xlbikpOwogCiAgICAgICAgIGlmIChzbm1wX3JlYWxsb2MocGt0LCBwa3RfbGVuKSkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImFzbl9yZWFsbG9jIiwgIiBuZXdfcGt0ICUwOHAsIG5ld19wa3RfbGVuICUwOHhcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAqcGt0LCAqcGt0X2xlbikpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImFzbl9yZWFsbG9jIiwgIiBuZXdfcGt0ICU4cCwgbmV3X3BrdF9sZW4gJWx1XG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgKnBrdCwgKHVuc2lnbmVkIGxvbmcpKnBrdF9sZW4pKTsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJhc25fcmVhbGxvYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiIG1lbW1vdmUoJTA4cCArICUwOHgsICUwOHAsICUwOHgpXG4iLCAqcGt0LAotICAgICAgICAgICAgICAgICAgICAgICAgKCpwa3RfbGVuIC0gb2xkX3BrdF9sZW4pLCAqcGt0LCBvbGRfcGt0X2xlbikpOworICAgICAgICAgICAgICAgICAgICAgICAgIiBtZW1tb3ZlKCU4cCArICUwOHgsICU4cCwgJTA4eClcbiIsCisJCQkqcGt0LCAodW5zaWduZWQpKCpwa3RfbGVuIC0gb2xkX3BrdF9sZW4pLAorCQkJKnBrdCwgKHVuc2lnbmVkKW9sZF9wa3RfbGVuKSk7CiAgICAgICAgICAgICBtZW1tb3ZlKCpwa3QgKyAoKnBrdF9sZW4gLSBvbGRfcGt0X2xlbiksICpwa3QsIG9sZF9wa3RfbGVuKTsKICAgICAgICAgICAgIG1lbXNldCgqcGt0LCAoaW50KSAnICcsICpwa3RfbGVuIC0gb2xkX3BrdF9sZW4pOwogICAgICAgICAgICAgcmV0dXJuIDE7CkBAIC0yNzU2LDcgKzI4MjAsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgREVCVUdEVU1QU0VUVVAoInNlbmQiLCAoKnBrdCArICpwa3RfbGVuIC0gKm9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm9mZnNldCAtIHN0YXJ0X29mZnNldCkpOwotICAgICAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgSW50ZWdlcjpcdCVsZCAoMHglLjJYKVxuIiwgKmludHAsCisgICAgICAgICAgICBERUJVR01TRygoImR1bXB2X3NlbmQiLCAiICBJbnRlZ2VyOlx0JWxkICgweCUuMmxYKVxuIiwgKmludHAsCiAgICAgICAgICAgICAgICAgICAgICAgKmludHApKTsKICAgICAgICAgICAgIHJldHVybiAxOwogICAgICAgICB9CkBAIC0yOTA5LDcgKzI5NzMsNyBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgREVCVUdEVU1QU0VUVVAoInNlbmQiLCAoKnBrdCArICpwa3RfbGVuIC0gKm9mZnNldCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKm9mZnNldCAtIHN0YXJ0X29mZnNldCkpOwotICAgICAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgVUludGVnZXI6XHQlbHUgKDB4JS4yWClcbiIsICppbnRwLAorICAgICAgICAgICAgREVCVUdNU0coKCJkdW1wdl9zZW5kIiwgIiAgVUludGVnZXI6XHQlbHUgKDB4JS4ybFgpXG4iLCAqaW50cCwKICAgICAgICAgICAgICAgICAgICAgICAqaW50cCkpOwogICAgICAgICAgICAgcmV0dXJuIDE7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvY29udGFpbmVyLmMgYi9zbm1wbGliL2NvbnRhaW5lci5jCmluZGV4IDA4YTRjNjMuLmI1NjQ0MWUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyLmMKKysrIGIvc25tcGxpYi9jb250YWluZXIuYwpAQCAtMSwzICsxLDEzIEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMgc3BlY2lmaWVkIGluIHRoZSBDT1BZSU5HIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCisgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyLmg+CkBAIC03MSwxMCArODEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgic29ydGVkX3NpbmdseV9saW5rZWRfbGlzdCIpKTsKIAogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyX3dpdGhfY29tcGFyZQorICAgICAgICAoImNzdHJpbmciLCBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IiksCisgICAgICAgICBuZXRzbm1wX2NvbXBhcmVfZGlyZWN0X2NzdHJpbmcpOworCisgICAgbmV0c25tcF9jb250YWluZXJfcmVnaXN0ZXJfd2l0aF9jb21wYXJlCiAgICAgICAgICgic3RyaW5nIiwgbmV0c25tcF9jb250YWluZXJfZ2V0X2ZhY3RvcnkoImJpbmFyeV9hcnJheSIpLAogICAgICAgICAgbmV0c25tcF9jb21wYXJlX2NzdHJpbmcpOwogICAgIG5ldHNubXBfY29udGFpbmVyX3JlZ2lzdGVyX3dpdGhfY29tcGFyZQotICAgICAgICAoInN0cmluZzpiaW5hcnlfYXJyYXkiLCBuZXRzbm1wX2NvbnRhaW5lcl9nZXRfZmFjdG9yeSgiYmluYXJ5X2FycmF5IiksCisgICAgICAgICgic3RyaW5nX2JpbmFyeV9hcnJheSIsIG5ldHNubXBfY29udGFpbmVyX2dldF9mYWN0b3J5KCJiaW5hcnlfYXJyYXkiKSwKICAgICAgICAgIG5ldHNubXBfY29tcGFyZV9jc3RyaW5nKTsKIAogfQpAQCAtMzIzLDcgKzMzNyw4IEBACiAgICAgICAgIHJjMiA9IHgtPnJlbW92ZSh4LGspOwogICAgICAgICAvKiogaWdub3JlIHJlbW92ZSBlcnJvcnMgaWYgdGhlcmUgaXMgYSBmaWx0ZXIgaW4gcGxhY2UgKi8KICAgICAgICAgaWYgKChyYzIpICYmIChOVUxMID09IHgtPmluc2VydF9maWx0ZXIpKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgcmVtb3ZlICglZClcbiIsIHJjMik7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJlcnJvciBvbiBzdWJjb250YWluZXIgJyVzJyByZW1vdmUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIHgtPmNvbnRhaW5lcl9uYW1lID8geC0+Y29udGFpbmVyX25hbWUgOiAiIiwgcmMyKTsKICAgICAgICAgICAgIHJjID0gcmMyOwogICAgICAgICB9CiAgICAgICAgIHggPSB4LT5wcmV2OwpAQCAtMzQ1LDEyICszNjAsMTUgQEAKICAgICAgICAgeCA9IHgtPm5leHQ7CiAgICAgd2hpbGUoeCkgewogICAgICAgICBuZXRzbm1wX2NvbnRhaW5lciAqdG1wOworICAgICAgICBjb25zdCBjaGFyICpuYW1lOwogICAgICAgICB0bXAgPSB4LT5wcmV2OworICAgICAgICBuYW1lID0geC0+Y29udGFpbmVyX25hbWU7CiAgICAgICAgIGlmIChOVUxMICE9IHgtPmNvbnRhaW5lcl9uYW1lKQogICAgICAgICAgICAgU05NUF9GUkVFKHgtPmNvbnRhaW5lcl9uYW1lKTsKICAgICAgICAgcmMyID0geC0+Y2ZyZWUoeCk7CiAgICAgICAgIGlmIChyYzIpIHsKLSAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsImVycm9yIG9uIHN1YmNvbnRhaW5lciBjZnJlZSAoJWQpXG4iLCByYzIpOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiZXJyb3Igb24gc3ViY29udGFpbmVyICclcycgY2ZyZWUgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIG5hbWUgPyBuYW1lIDogIiIsIHJjMik7CiAgICAgICAgICAgICByYyA9IHJjMjsKICAgICAgICAgfQogICAgICAgICB4ID0gdG1wOwpAQCAtNDk1LDYgKzUxMywxMiBAQAogICAgICAgICAgICAgICAgICAgIHN0cmxlbigoKGNvbnN0IGNvbnRhaW5lcl90eXBlKilyaHMpLT5uYW1lKSk7CiB9CiAKK2ludAorbmV0c25tcF9jb21wYXJlX2RpcmVjdF9jc3RyaW5nKGNvbnN0IHZvaWQgKiBsaHMsIGNvbnN0IHZvaWQgKiByaHMpCit7CisgICAgcmV0dXJuIHN0cmNtcCgoY29uc3QgY2hhciopbGhzLCAoY29uc3QgY2hhciopcmhzKTsKK30KKwogLyoKICAqIGNvbXBhcmUgdHdvIG1lbW9yeSBidWZmZXJzCiAgKgpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfYmluYXJ5X2FycmF5LmMgYi9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYwppbmRleCA0M2VmYzRiLi43ZDExYzM3IDEwMDY0NAotLS0gYS9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9iaW5hcnlfYXJyYXkuYwpAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgICogaWYgdGhlcmUgaXMgbm8gZGF0YSwgcmV0dXJuIE5VTEw7CiAgICAgICovCiAgICAgaWYgKCF0LT5jb3VudCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiBpZiB0aGUgdGFibGUgaXMgZGlydHksIHNvcnQgaXQuCkBAIC0yNDUsNyArMjQ1LDcgQEAKICAgICAgKi8KICAgICBpZiAoa2V5KSB7CiAgICAgICAgIGlmICgoaW5kZXggPSBiaW5hcnlfc2VhcmNoKGtleSwgYywgZXhhY3QpKSA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgcmV0dXJuIHQtPmRhdGFbaW5kZXhdOwpAQCAtMzM2LDggKzMzNiw4IEBACiBuZXRzbm1wX2JpbmFyeV9hcnJheV9pbnNlcnQobmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKmVudHJ5KQogewogICAgIGJpbmFyeV9hcnJheV90YWJsZSAqdCA9IChiaW5hcnlfYXJyYXlfdGFibGUqKWMtPmNvbnRhaW5lcl9kYXRhOwotICAgIGludCAgICAgICAgICAgICBuZXdfbWF4LCBuZXdfc2l6ZTsKLSAgICBjaGFyICAgICAgICAgICAqbmV3X2RhdGE7ICAgLyogVXNlZCBmb3IgKiBhKSBleHRlbmRpbmcgdGhlIGRhdGEgdGFibGUKKyAgICBpbnQgICAgICAgICAgICAgbmV3X21heDsKKyAgICB2b2lkICAgICAgICAgICAqbmV3X2RhdGE7ICAgLyogVXNlZCBmb3IgKiBhKSBleHRlbmRpbmcgdGhlIGRhdGEgdGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKiBiKSB0aGUgbmV4dCBlbnRyeSB0byB1c2UgKi8KICAgICAvKgogICAgICAqIGNoZWNrIGZvciBkdXBsaWNhdGVzCkBAIC0zNjEsMTQgKzM2MSwxMyBAQAogICAgICAgICBpZiAobmV3X21heCA9PSAwKQogICAgICAgICAgICAgbmV3X21heCA9IDEwOyAgICAgICAvKiBTdGFydCB3aXRoIDEwIGVudHJpZXMgKi8KIAotICAgICAgICBuZXdfc2l6ZSA9IG5ld19tYXggKiB0LT5kYXRhX3NpemU7Ci0gICAgICAgIG5ld19kYXRhID0gKGNoYXIgKikgcmVhbGxvYyh0LT5kYXRhLCBuZXdfc2l6ZSk7CisgICAgICAgIG5ld19kYXRhID0gKHZvaWQgKikgY2FsbG9jKG5ld19tYXgsIHQtPmRhdGFfc2l6ZSk7CiAgICAgICAgIGlmIChuZXdfZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIGludCBvbGRfc2l6ZSA9IHQtPm1heF9zaXplICogdC0+ZGF0YV9zaXplOwotICAgICAgICAgICAgaW50IGNvdW50ID0gbmV3X3NpemUgLSBvbGRfc2l6ZTsKLSAgICAgICAgICAgIG1lbXNldCgmbmV3X2RhdGFbb2xkX3NpemVdLCAweDAsIGNvdW50KTsKKworICAgICAgICBpZiAodC0+ZGF0YSkgeworICAgICAgICAgICAgbWVtY3B5KG5ld19kYXRhLCB0LT5kYXRhLCB0LT5tYXhfc2l6ZSAqIHQtPmRhdGFfc2l6ZSk7CisgICAgICAgICAgICBTTk1QX0ZSRUUodC0+ZGF0YSk7CiAgICAgICAgIH0KICAgICAgICAgdC0+ZGF0YSA9ICh2b2lkKiopbmV3X2RhdGE7CiAgICAgICAgIHQtPm1heF9zaXplID0gbmV3X21heDsKQEAgLTQzNCw3ICs0MzMsNyBAQAogICAgICAqIGlmIHRoZXJlIGlzIG5vIGRhdGEsIHJldHVybiBOVUxMOwogICAgICAqLwogICAgIGlmICghdC0+Y291bnQgfHwgIWtleSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyoKICAgICAgKiBpZiB0aGUgdGFibGUgaXMgZGlydHksIHNvcnQgaXQuCkBAIC00NDcsNyArNDQ2LDcgQEAKICAgICAgKi8KICAgICBzdGFydCA9IGVuZCA9IGJpbmFyeV9zZWFyY2hfZm9yX3N0YXJ0KChuZXRzbm1wX2luZGV4ICopa2V5LCBjKTsKICAgICBpZiAoc3RhcnQgPT0gLTEpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIGZvciAoaSA9IHN0YXJ0ICsgMTsgaSA8IHQtPmNvdW50OyArK2kpIHsKICAgICAgICAgaWYgKDAgIT0gYy0+bmNvbXBhcmUodC0+ZGF0YVtpXSwga2V5KSkKZGlmZiAtLWdpdCBhL3NubXBsaWIvY29udGFpbmVyX2xpc3Rfc3NsbC5jIGIvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKaW5kZXggODc4MmZkMC4uMTRhNmE3MiAxMDA2NDQKLS0tIGEvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKKysrIGIvc25tcGxpYi9jb250YWluZXJfbGlzdF9zc2xsLmMKQEAgLTQ0LDYgKzQ0LDE1IEBACiAKIH0gc2xfY29udGFpbmVyOwogCit0eXBlZGVmIHN0cnVjdCBzc2xsX2l0ZXJhdG9yX3MgeworICAgIG5ldHNubXBfaXRlcmF0b3IgYmFzZTsKKyAKKyAgICBzbF9ub2RlICAgICAgICAgKnBvczsKKyAgICBzbF9ub2RlICAgICAgICAgKmxhc3Q7Cit9IHNzbGxfaXRlcmF0b3I7CisKK3N0YXRpYyBuZXRzbm1wX2l0ZXJhdG9yICpfc3NsbF9pdGVyYXRvcl9nZXQobmV0c25tcF9jb250YWluZXIgKmMpOworCiAKIHN0YXRpYyB2b2lkICoKIF9nZXQobmV0c25tcF9jb250YWluZXIgKmMsIGNvbnN0IHZvaWQgKmtleSwgaW50IGV4YWN0KQpAQCAtODUsMTIgKzk0LDEzIEBACiAgKgogICoKICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIF9zc2xsX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmMpCiB7CiAgICAgaWYoYykgewogICAgICAgICBmcmVlKGMpOwogICAgIH0KKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIHZvaWQgKgpAQCAtMTI1LDYgKzEzNSw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICBuZXdfbm9kZS0+ZGF0YSA9IE5FVFNOTVBfUkVNT1ZFX0NPTlNUKHZvaWQgKiwgZGF0YSk7CiAgICAgKytzbC0+Y291bnQ7CisgICAgKytjLT5zeW5jOwogCiAgICAgLyoKICAgICAgKiBmaXJzdCBub2RlPwpAQCAtMjIzLDYgKzIzNCw3IEBACiAgICAgICovCiAgICAgZnJlZShjdXJyKTsKICAgICAtLXNsLT5jb3VudDsKKyAgICArK2MtPnN5bmM7CiAgICAgCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yNzgsNiArMjkwLDcgQEAKICAgICB9CiAgICAgc2wtPmhlYWQgPSBOVUxMOwogICAgIHNsLT5jb3VudCA9IDA7CisgICAgKytjLT5zeW5jOwogfQogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpAQCAtMjk3LDcgKzMxMCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHNsLT5jLmNmcmVlID0gKG5ldHNubXBfY29udGFpbmVyX3JjKilfc3NsbF9mcmVlOworICAgIHNsLT5jLmNmcmVlID0gX3NzbGxfZnJlZTsKICAgICAgICAgCiAgICAgc2wtPmMuZ2V0X3NpemUgPSBfc3NsbF9zaXplOwogICAgIHNsLT5jLmluaXQgPSBOVUxMOwpAQCAtMzA2LDcgKzMxOSw3IEBACiAgICAgc2wtPmMuZmluZCA9IF9zc2xsX2ZpbmQ7CiAgICAgc2wtPmMuZmluZF9uZXh0ID0gX3NzbGxfZmluZF9uZXh0OwogICAgIHNsLT5jLmdldF9zdWJzZXQgPSBOVUxMOwotICAgIHNsLT5jLmdldF9pdGVyYXRvciA9IE5VTEw7CisgICAgc2wtPmMuZ2V0X2l0ZXJhdG9yID1fc3NsbF9pdGVyYXRvcl9nZXQ7CiAgICAgc2wtPmMuZm9yX2VhY2ggPSBfc3NsbF9mb3JfZWFjaDsKICAgICBzbC0+Yy5jbGVhciA9IF9zc2xsX2NsZWFyOwogCkBAIC0zOTEsMyArNDA0LDE1NCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2dldF9maWZvX2ZhY3RvcnkoKSk7CiB9CiAKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBpdGVyYXRvcgorICoKKyAqLworTkVUU05NUF9TVEFUSUNfSU5MSU5FIHNsX2NvbnRhaW5lciAqCitfc3NsbF9pdDJjb250KHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIGlmKE5VTEwgPT0gaXQpIHsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpdCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmKE5VTEwgPT0gaXQtPmJhc2UuY29udGFpbmVyKSB7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gaXQtPmJhc2UuY29udGFpbmVyKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYoaXQtPmJhc2UuY29udGFpbmVyLT5zeW5jICE9IGl0LT5iYXNlLnN5bmMpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImNvbnRhaW5lcjppdGVyYXRvciIsICJvdXQgb2Ygc3luY1xuIikpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gKHNsX2NvbnRhaW5lciAqKWl0LT5iYXNlLmNvbnRhaW5lcjsKK30KKworc3RhdGljIHZvaWQgKgorX3NzbGxfaXRlcmF0b3JfY3Vycihzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9jb250YWluZXIgKnQgPSBfc3NsbF9pdDJjb250KGl0KTsKKyAgICBpZiAoKE5VTEwgPT0gdCkgfHwgKE5VTEwgPT0gaXQtPnBvcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIGl0LT5wb3MtPmRhdGE7Cit9CisKK3N0YXRpYyB2b2lkICoKK19zc2xsX2l0ZXJhdG9yX2ZpcnN0KHNzbGxfaXRlcmF0b3IgKml0KQoreworICAgIHNsX2NvbnRhaW5lciAqdCA9IF9zc2xsX2l0MmNvbnQoaXQpOworICAgIGlmICgoTlVMTCA9PSB0KSB8fCAoTlVMTCA9PSB0LT5oZWFkKSkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gdC0+aGVhZC0+ZGF0YTsKK30KKworc3RhdGljIHZvaWQgKgorX3NzbGxfaXRlcmF0b3JfbmV4dChzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9jb250YWluZXIgKnQgPSBfc3NsbF9pdDJjb250KGl0KTsKKyAgICBpZiAoKE5VTEwgPT0gdCkgfHwgKE5VTEwgPT0gaXQtPnBvcykpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXQtPnBvcyA9IGl0LT5wb3MtPm5leHQ7CisgICAgaWYgKE5VTEwgPT0gaXQtPnBvcykKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICByZXR1cm4gaXQtPnBvcy0+ZGF0YTsKK30KKworc3RhdGljIHZvaWQgKgorX3NzbGxfaXRlcmF0b3JfbGFzdChzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9ub2RlICAgICAgKm47CisgICAgc2xfY29udGFpbmVyICp0ID0gX3NzbGxfaXQyY29udChpdCk7CisgICAgaWYoTlVMTCA9PSB0KQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKKyAgICBpZiAoaXQtPmxhc3QpCisgICAgICAgIHJldHVybiBpdC0+bGFzdDsKKworICAgIG4gPSBpdC0+cG9zID8gaXQtPnBvcyA6IHQtPmhlYWQ7CisgICAgaWYgKE5VTEwgPT0gbikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB3aGlsZShuLT5uZXh0KQorICAgICAgICBuID0gbi0+bmV4dDsKKworICAgIGlmIChOVUxMID09IG4pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaXQtPmxhc3QgPSBuOworCisgICAgcmV0dXJuIGl0LT5sYXN0LT5kYXRhOworfQorCitzdGF0aWMgaW50Citfc3NsbF9pdGVyYXRvcl9yZXNldChzc2xsX2l0ZXJhdG9yICppdCkKK3sKKyAgICBzbF9jb250YWluZXIgKnQ7CisKKyAgICAvKiogY2FuJ3QgdXNlIGl0MmNvbmYgY3V6IHdlIG1pZ2h0IGJlIG91dCBvZiBzeW5jICovCisgICAgaWYoTlVMTCA9PSBpdCkgeworICAgICAgICBuZXRzbm1wX2Fzc2VydChOVUxMICE9IGl0KTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaWYoTlVMTCA9PSBpdC0+YmFzZS5jb250YWluZXIpIHsKKyAgICAgICAgbmV0c25tcF9hc3NlcnQoTlVMTCAhPSBpdC0+YmFzZS5jb250YWluZXIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgdCA9IChzbF9jb250YWluZXIgKilpdC0+YmFzZS5jb250YWluZXI7CisgICAgaWYoTlVMTCA9PSB0KQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpdC0+bGFzdCA9IE5VTEw7CisgICAgaXQtPnBvcyA9IHQtPmhlYWQ7CisKKyAgICAvKgorICAgICAqIHNhdmUgc3luYyBjb3VudCwgdG8gbWFrZSBzdXJlIGNvbnRhaW5lciBkb2Vzbid0IGNoYW5nZSB3aGlsZQorICAgICAqIGl0ZXJhdG9yIGlzIGluIHVzZS4KKyAgICAgKi8KKyAgICBpdC0+YmFzZS5zeW5jID0gaXQtPmJhc2UuY29udGFpbmVyLT5zeW5jOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK19zc2xsX2l0ZXJhdG9yX3JlbGVhc2UobmV0c25tcF9pdGVyYXRvciAqaXQpCit7CisgICAgZnJlZShpdCk7CisKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIG5ldHNubXBfaXRlcmF0b3IgKgorX3NzbGxfaXRlcmF0b3JfZ2V0KG5ldHNubXBfY29udGFpbmVyICpjKQoreworICAgIHNzbGxfaXRlcmF0b3IqIGl0OworCisgICAgaWYoTlVMTCA9PSBjKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGl0ID0gU05NUF9NQUxMT0NfVFlQRURFRihzc2xsX2l0ZXJhdG9yKTsKKyAgICBpZihOVUxMID09IGl0KQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIGl0LT5iYXNlLmNvbnRhaW5lciA9IGM7CisgICAgCisgICAgaXQtPmJhc2UuZmlyc3QgPSAobmV0c25tcF9pdGVyYXRvcl9ydG4qKV9zc2xsX2l0ZXJhdG9yX2ZpcnN0OworICAgIGl0LT5iYXNlLm5leHQgPSAobmV0c25tcF9pdGVyYXRvcl9ydG4qKV9zc2xsX2l0ZXJhdG9yX25leHQ7CisgICAgaXQtPmJhc2UuY3VyciA9IChuZXRzbm1wX2l0ZXJhdG9yX3J0biopX3NzbGxfaXRlcmF0b3JfY3VycjsKKyAgICBpdC0+YmFzZS5sYXN0ID0gKG5ldHNubXBfaXRlcmF0b3JfcnRuKilfc3NsbF9pdGVyYXRvcl9sYXN0OworICAgIGl0LT5iYXNlLnJlc2V0ID0gKG5ldHNubXBfaXRlcmF0b3JfcmMqKV9zc2xsX2l0ZXJhdG9yX3Jlc2V0OworICAgIGl0LT5iYXNlLnJlbGVhc2UgPSAobmV0c25tcF9pdGVyYXRvcl9yYyopX3NzbGxfaXRlcmF0b3JfcmVsZWFzZTsKKworICAgICh2b2lkKV9zc2xsX2l0ZXJhdG9yX3Jlc2V0KGl0KTsKKworICAgIHJldHVybiAobmV0c25tcF9pdGVyYXRvciAqKWl0OworfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9jb250YWluZXJfbnVsbC5jIGIvc25tcGxpYi9jb250YWluZXJfbnVsbC5jCmluZGV4IDEwMDgyYWYuLjA0Y2NhMjEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvY29udGFpbmVyX251bGwuYworKysgYi9zbm1wbGliL2NvbnRhaW5lcl9udWxsLmMKQEAgLTE1Niw3ICsxNTYsNyBAQAogICAgIGMtPmZpbmQgPSBfbnVsbF9maW5kOwogICAgIGMtPmZpbmRfbmV4dCA9IF9udWxsX2ZpbmRfbmV4dDsKICAgICBjLT5nZXRfc3Vic2V0ID0gX251bGxfZ2V0X3N1YnNldDsKLSAgICBjLT5nZXRfaXRlcmF0b3IgPSAwOyAvKiBfbnVsbF9pdGVyYXRvcjsgKi8KKyAgICBjLT5nZXRfaXRlcmF0b3IgPSBOVUxMOyAvKiBfbnVsbF9pdGVyYXRvcjsgKi8KICAgICBjLT5mb3JfZWFjaCA9IF9udWxsX2Zvcl9lYWNoOwogICAgIGMtPmNsZWFyID0gX251bGxfY2xlYXI7CiAgICAgICAgCmRpZmYgLS1naXQgYS9zbm1wbGliL2RhdGFfbGlzdC5jIGIvc25tcGxpYi9kYXRhX2xpc3QuYwppbmRleCAwMWE3ZDJjLi44MTg4NTk4IDEwMDY0NAotLS0gYS9zbm1wbGliL2RhdGFfbGlzdC5jCisrKyBiL3NubXBsaWIvZGF0YV9saXN0LmMKQEAgLTYsMTMgKzYsNiBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWluY2x1ZGVzLmg+CiAKLS8qCi0gKiBwcm90b3R5cGVzCi0gKi8KLU5FVFNOTVBfSU5MSU5FIHZvaWQKLW5ldHNubXBfZGF0YV9saXN0X2FkZF9ub2RlKG5ldHNubXBfZGF0YV9saXN0ICoqaGVhZCwgbmV0c25tcF9kYXRhX2xpc3QgKm5vZGUpOwotCi0KIC8qKiBAZGVmZ3JvdXAgZGF0YV9saXN0IGdlbmVyaWMgbGlua2VkLWxpc3QgZGF0YSBoYW5kbGluZyB3aXRoIGEgc3RyaW5nIGFzIGEga2V5LgogICogQGluZ3JvdXAgbGlicmFyeQogICogQHsKQEAgLTY5LDggKzYyLDggQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbm9kZS0+bmFtZSA9IHN0cmR1cChuYW1lKTsKICAgICBpZiAoIW5vZGUtPm5hbWUpIHsKLSAgICAgIGZyZWUobm9kZSk7Ci0gICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgZnJlZShub2RlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIG5vZGUtPmRhdGEgPSBkYXRhOwogICAgIG5vZGUtPmZyZWVfZnVuYyA9IGJlZXI7CkBAIC03OCwxOCArNzEsNiBAQAogfQogCiAvKiogYWRkcyBkYXRhIHRvIGEgZGF0YWxpc3QKLSAqIEBub3RlIG5ldHNubXBfZGF0YV9saXN0X2FkZF9ub2RlIGlzIHByZWZlcnJlZAotICogQHBhcmFtIGhlYWQgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKLSAqIEBwYXJhbSBub2RlIGEgbm9kZSB0byBzdGFzaCBpbiB0aGUgZGF0YV9saXN0Ci0gKi8KLS8qKiAgKi8KLU5FVFNOTVBfSU5MSU5FIHZvaWQKLW5ldHNubXBfYWRkX2xpc3RfZGF0YShuZXRzbm1wX2RhdGFfbGlzdCAqKmhlYWQsIG5ldHNubXBfZGF0YV9saXN0ICpub2RlKQotewotICAgIG5ldHNubXBfZGF0YV9saXN0X2FkZF9ub2RlKGhlYWQsIG5vZGUpOwotfQotCi0vKiogYWRkcyBkYXRhIHRvIGEgZGF0YWxpc3QKICAqIEBwYXJhbSBoZWFkIGEgcG9pbnRlciB0byB0aGUgaGVhZCBub2RlIG9mIGEgZGF0YV9saXN0CiAgKiBAcGFyYW0gbm9kZSBhIG5vZGUgdG8gc3Rhc2ggaW4gdGhlIGRhdGFfbGlzdAogICovCkBAIC0xMzEsNiArMTEyLDE4IEBACiB9CiAKIC8qKiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdAorICogQG5vdGUgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUgaXMgcHJlZmVycmVkCisgKiBAcGFyYW0gaGVhZCBhIHBvaW50ZXIgdG8gdGhlIGhlYWQgbm9kZSBvZiBhIGRhdGFfbGlzdAorICogQHBhcmFtIG5vZGUgYSBub2RlIHRvIHN0YXNoIGluIHRoZSBkYXRhX2xpc3QKKyAqLworLyoqICAqLworTkVUU05NUF9JTkxJTkUgdm9pZAorbmV0c25tcF9hZGRfbGlzdF9kYXRhKG5ldHNubXBfZGF0YV9saXN0ICoqaGVhZCwgbmV0c25tcF9kYXRhX2xpc3QgKm5vZGUpCit7CisgICAgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUoaGVhZCwgbm9kZSk7Cit9CisKKy8qKiBhZGRzIGRhdGEgdG8gYSBkYXRhbGlzdAogICogQHBhcmFtIGhlYWQgYSBwb2ludGVyIHRvIHRoZSBoZWFkIG5vZGUgb2YgYSBkYXRhX2xpc3QKICAqIEBwYXJhbSBuYW1lIHRoZSBuYW1lIG9mIHRoZSBub2RlIHRvIGNhY2hlIHRoZSBkYXRhLgogICogQHBhcmFtIGRhdGEgdGhlIGRhdGEgdG8gYmUgc3RvcmVkIHVuZGVyIHRoYXQgbmFtZQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9kZWZhdWx0X3N0b3JlLmMgYi9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYwppbmRleCA4ZTk0MDU3Li45YmZkMjI4IDEwMDY0NAotLS0gYS9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYworKysgYi9zbm1wbGliL2RlZmF1bHRfc3RvcmUuYwpAQCAtMzI0LDcgKzMyNCw3IEBACiAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICB9CiAKLSAgICBERUJVR01TR1RMKCgibmV0c25tcF9kc19zZXRfdm9pZCIsICJTZXR0aW5nICVzOiVkID0gJXhcbiIsCisgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfZHNfc2V0X3ZvaWQiLCAiU2V0dGluZyAlczolZCA9ICVwXG4iLAogICAgICAgICAgICAgICAgIHN0b3Jlc1tzdG9yZWlkXSwgd2hpY2gsIHZhbHVlKSk7CiAKICAgICBuZXRzbm1wX2RzX3ZvaWRzW3N0b3JlaWRdW3doaWNoXSA9IHZhbHVlOwpAQCAtNDQyLDEwICs0NDIsMTQgQEAKIAogICAgIGlmIChuZXRzbm1wX2RzX2NvbmZpZ3MgPT0gTlVMTCkgewogICAgICAgICBuZXRzbm1wX2RzX2NvbmZpZ3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfZHNfcmVhZF9jb25maWcpOworICAgICAgICBpZiAobmV0c25tcF9kc19jb25maWdzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBuZXRzbm1wX2RzX2NvbmZpZ3M7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChkcnNwID0gbmV0c25tcF9kc19jb25maWdzOyBkcnNwLT5uZXh0ICE9IE5VTEw7IGRyc3AgPSBkcnNwLT5uZXh0KTsKICAgICAgICAgZHJzcC0+bmV4dCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kc19yZWFkX2NvbmZpZyk7CisgICAgICAgIGlmIChkcnNwLT5uZXh0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBkcnNwLT5uZXh0OwogICAgIH0KIApAQCAtNDg4LDEwICs0OTIsMTQgQEAKIAogICAgIGlmIChuZXRzbm1wX2RzX2NvbmZpZ3MgPT0gTlVMTCkgewogICAgICAgICBuZXRzbm1wX2RzX2NvbmZpZ3MgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfZHNfcmVhZF9jb25maWcpOworICAgICAgICBpZiAobmV0c25tcF9kc19jb25maWdzID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBuZXRzbm1wX2RzX2NvbmZpZ3M7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZm9yIChkcnNwID0gbmV0c25tcF9kc19jb25maWdzOyBkcnNwLT5uZXh0ICE9IE5VTEw7IGRyc3AgPSBkcnNwLT5uZXh0KTsKICAgICAgICAgZHJzcC0+bmV4dCA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9kc19yZWFkX2NvbmZpZyk7CisgICAgICAgIGlmIChkcnNwLT5uZXh0ID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIGRyc3AgPSBkcnNwLT5uZXh0OwogICAgIH0KIApAQCAtNTIyLDcgKzUzMCw3IEBACiB9CiAKIHZvaWQKLW5ldHNubXBfZHNfc2h1dGRvd24oKQorbmV0c25tcF9kc19zaHV0ZG93bih2b2lkKQogewogICAgIG5ldHNubXBfZHNfcmVhZF9jb25maWcgKmRyc3A7CiAgICAgaW50ICAgICAgICAgICAgIGksIGo7CmRpZmYgLS1naXQgYS9zbm1wbGliL2Rpcl91dGlscy5jIGIvc25tcGxpYi9kaXJfdXRpbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjAzYzkyCi0tLSAvZGV2L251bGwKKysrIGIvc25tcGxpYi9kaXJfdXRpbHMuYwpAQCAtMCwwICsxLDE0NSBAQAorLyogUG9ydGlvbnMgb2YgdGhpcyBmaWxlIGFyZSBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29weXJpZ2h0KHMpLiAgU2VlCisgKiB0aGUgTmV0LVNOTVAncyBDT1BZSU5HIGZpbGUgZm9yIG1vcmUgZGV0YWlscyBhbmQgb3RoZXIgY29weXJpZ2h0cworICogdGhhdCBtYXkgYXBwbHk6CisgKi8KKy8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8Y3R5cGUuaD4KKyNpZiBIQVZFX1NURExJQl9ICisjICAgaW5jbHVkZSA8c3RkbGliLmg+CisjZW5kaWYKKyNpZiBIQVZFX1VOSVNURF9ICisjICAgaW5jbHVkZSA8dW5pc3RkLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NUUklOR19ICisjICAgaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorIyAgaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpZiBIQVZFX0xJTUlUU19ICisjaW5jbHVkZSA8bGltaXRzLmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19TVEFUX0gKKyNpbmNsdWRlIDxzeXMvc3RhdC5oPgorI2VuZGlmCisjaWZkZWYgSEFWRV9ESVJFTlRfSAorI2luY2x1ZGUgPGRpcmVudC5oPgorI2VuZGlmCisKKyNpbmNsdWRlIDxlcnJuby5oPgorCisjaWYgSEFWRV9ETUFMTE9DX0gKKyMgIGluY2x1ZGUgPGRtYWxsb2MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY29udGFpbmVyX2JpbmFyeV9hcnJheS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZGlyX3V0aWxzLmg+CisKK25ldHNubXBfY29udGFpbmVyICoKK25ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKG5ldHNubXBfY29udGFpbmVyICp1c2VyX2NvbnRhaW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRpcm5hbWUsIHVfaW50IGZsYWdzKQoreworICAgIERJUiAgICAgICAgICAgICAgICpkaXI7CisgICAgbmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lciA9IHVzZXJfY29udGFpbmVyOworICAgIHN0cnVjdCBkaXJlbnQgICAgICpmaWxlOworICAgIGNoYXIgICAgICAgICAgICAgICBwYXRoW1BBVEhfTUFYXTsKKyAgICB1X2NoYXIgICAgICAgICAgICAgZGlybmFtZV9sZW47CisgICAgaW50ICAgICAgICAgICAgICAgIHJjOworI2lmICEoZGVmaW5lZChIQVZFX1NUUlVDVF9ESVJFTlRfRF9UWVBFKSAmJiBkZWZpbmVkKERUX0RJUikpICYmIGRlZmluZWQoU19JU0RJUikKKyAgICBzdHJ1Y3Qgc3RhdCAgICAgICAgc3RhdGJ1ZjsKKyNlbmRpZgorCisgICAgREVCVUdNU0dUTCgoImRpcmVjdG9yeTpjb250YWluZXIiLCAicmVhZGluZyAlc1xuIiwgZGlybmFtZSkpOworCisgICAgLyoKKyAgICAgKiBjcmVhdGUgdGhlIGNvbnRhaW5lciwgaWYgbmVlZGVkCisgICAgICovCisgICAgaWYgKE5VTEwgPT0gY29udGFpbmVyKSB7CisgICAgICAgIGNvbnRhaW5lciA9IG5ldHNubXBfY29udGFpbmVyX2ZpbmQoImRpcmVjdG9yeV9jb250YWluZXI6Y3N0cmluZyIpOworICAgICAgICBpZiAoTlVMTCA9PSBjb250YWluZXIpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgY29udGFpbmVyLT5jb250YWluZXJfbmFtZSA9IHN0cmR1cCgiZGlyZWN0b3J5IGNvbnRhaW5lciIpOworICAgICAgICBuZXRzbm1wX2JpbmFyeV9hcnJheV9vcHRpb25zX3NldChjb250YWluZXIsIDEsIENPTlRBSU5FUl9LRVlfVU5TT1JURUQpOworICAgIH0KKworICAgIGRpciA9IG9wZW5kaXIoZGlybmFtZSk7CisgICAgaWYgKE5VTEwgPT0gZGlyKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJkaXJlY3Rvcnk6Y29udGFpbmVyIiwgIiAgbm90IGEgZGlyXG4iKSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIC8qKiBjb3B5IGRpcm5hbWUgaW50byBwYXRoICovCisgICAgZGlybmFtZV9sZW4gPSBzdHJsZW4oZGlybmFtZSk7CisgICAgc3RybGNweShwYXRoLCBkaXJuYW1lLCBzaXplb2YocGF0aCkpOworICAgIGlmICgoZGlybmFtZV9sZW4gKyAyKSA+IHNpemVvZihwYXRoKSkgeworICAgICAgICAvKiogbm90IGVub3VnaCByb29tIGZvciBmaWxlcyAqLworICAgICAgICBjbG9zZWRpcihkaXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcGF0aFtkaXJuYW1lX2xlbl0gPSAnLyc7CisgICAgcGF0aFsrK2Rpcm5hbWVfbGVuXSA9ICdcMCc7CisKKyAgICAvKiogaXRlcmF0ZSBvdmVyIGRpciAqLworICAgIHdoaWxlICgoZmlsZSA9IHJlYWRkaXIoZGlyKSkpIHsKKworICAgICAgICBpZiAoKGZpbGUtPmRfbmFtZSA9PSBOVUxMKSB8fCAoZmlsZS0+ZF9uYW1lWzBdID09IDApKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgLyoqIHNraXAgJy4nIGFuZCAnLi4nICovCisgICAgICAgIGlmICgoZmlsZS0+ZF9uYW1lWzBdID09ICcuJykgJiYKKyAgICAgICAgICAgICgoZmlsZS0+ZF9uYW1lWzFdID09IDApIHx8CisgICAgICAgICAgICAgKChmaWxlLT5kX25hbWVbMV0gPT0gJy4nKSAmJiAoKGZpbGUtPmRfbmFtZVsyXSA9PSAwKSkpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIHN0cmxjcHkoJnBhdGhbZGlybmFtZV9sZW5dLCBmaWxlLT5kX25hbWUsIHNpemVvZihwYXRoKSAtIGRpcm5hbWVfbGVuKTsKKyAgICAgICAgREVCVUdNU0dUTCgoIjk6ZGlyZWN0b3J5OmNvbnRhaW5lciIsICIgIGZvdW5kICVzXG4iLCBwYXRoKSk7CisjaWYgZGVmaW5lZChIQVZFX1NUUlVDVF9ESVJFTlRfRF9UWVBFKSAmJiBkZWZpbmVkKERUX0RJUikKKyAgICAgICAgaWYgKChmaWxlLT5kX3R5cGUgPT0gRFRfRElSKSAmJiAoZmxhZ3MgJiBORVRTTk1QX0RJUl9SRUNVUlNFKSkgeworI2VsaWYgZGVmaW5lZChTX0lTRElSKQorICAgICAgICBpZiAoKGZsYWdzICYgTkVUU05NUF9ESVJfUkVDVVJTRSkgJiYgKHN0YXQoZmlsZS0+ZF9uYW1lLCAmc3RhdGJ1ZikgIT0gMCkgJiYgKFNfSVNESVIoc3RhdGJ1Zi5zdF9tb2RlKSkpIHsKKyNlbHNlCisgICAgICAgIGlmIChmbGFncyAmIE5FVFNOTVBfRElSX1JFQ1VSU0UpIHsKKyNlbmRpZgorICAgICAgICAgICAgLyoqIHh4eCBhZGQgdGhlIGRpciBhcyB3ZWxsPyBub3QgZm9yIG5vdy4uIG1heWJlIGFub3RoZXIgZmxhZz8gKi8KKyAgICAgICAgICAgIG5ldHNubXBfZGlyZWN0b3J5X2NvbnRhaW5lcl9yZWFkKGNvbnRhaW5lciwgcGF0aCwgZmxhZ3MpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY2hhciAqZHVwID0gc3RyZHVwKHBhdGgpOworICAgICAgICAgICAgaWYgKE5VTEwgPT0gZHVwKSB7CisgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic3RyZHVwIGZhaWxlZFxuIik7CisgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJjID0gQ09OVEFJTkVSX0lOU0VSVChjb250YWluZXIsIGR1cCk7CisgICAgICAgICAgICBpZiAoLTEgPT0gcmMgKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImRpcmVjdG9yeTpjb250YWluZXIiLCAiICBlcnIgYWRkaW5nICVzXG4iLCBwYXRoKSk7CisgICAgICAgICAgICAgICAgZnJlZShkdXApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgY2xvc2VkaXIoZGlyKTsKKworICAgIERFQlVHTVNHVEwoKCJkaXJlY3Rvcnk6Y29udGFpbmVyIiwgIiAgY29udGFpbmVyIG5vdyBoYXMgJWQgaXRlbXNcbiIsCisgICAgICAgICAgICAgICAgKGludClDT05UQUlORVJfU0laRShjb250YWluZXIpKSk7CisgICAgCisgICAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKwordm9pZAorbmV0c25tcF9kaXJlY3RvcnlfY29udGFpbmVyX2ZyZWUobmV0c25tcF9jb250YWluZXIgKmNvbnRhaW5lcikKK3sKKyAgICBDT05UQUlORVJfQ0xFQVIoY29udGFpbmVyLCBuZXRzbm1wX2NvbnRhaW5lcl9zaW1wbGVfZnJlZSwgTlVMTCk7CisgICAgQ09OVEFJTkVSX0ZSRUUoY29udGFpbmVyKTsKK30KZGlmZiAtLWdpdCBhL3NubXBsaWIvZmRfZXZlbnRfbWFuYWdlci5jIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKaW5kZXggYzgxY2ZkZS4uYWU5OWMwNCAxMDA2NDQKLS0tIGEvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKKysrIGIvc25tcGxpYi9mZF9ldmVudF9tYW5hZ2VyLmMKQEAgLTcsNiArNyw5IEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZmRfZXZlbnRfbWFuYWdlci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9sb2dnaW5nLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9sYXJnZV9mZF9zZXQuaD4KKworCiBpbnQgICAgIGV4dGVybmFsX3JlYWRmZFtOVU1fRVhURVJOQUxfRkRTXSwgICBleHRlcm5hbF9yZWFkZmRsZW4gICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX3dyaXRlZmRbTlVNX0VYVEVSTkFMX0ZEU10sICBleHRlcm5hbF93cml0ZWZkbGVuICA9IDA7CiBpbnQgICAgIGV4dGVybmFsX2V4Y2VwdGZkW05VTV9FWFRFUk5BTF9GRFNdLCBleHRlcm5hbF9leGNlcHRmZGxlbiA9IDA7CkBAIC0xNTksMjIgKzE2Miw1NSBAQAogICovCiB2b2lkIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbyhpbnQgKm51bWZkcywgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcykKIHsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbHJlYWRmZHM7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IGx3cml0ZWZkczsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbGV4Y2VwdGZkczsKKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCZscmVhZGZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmx3cml0ZWZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxleGNlcHRmZHMsIEZEX1NFVFNJWkUpOworCisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZscmVhZGZkcywgcmVhZGZkcyk7CisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZsd3JpdGVmZHMsIHdyaXRlZmRzKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxleGNlcHRmZHMsIGV4Y2VwdGZkcyk7CisKKyAgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMihudW1mZHMsICZscmVhZGZkcywgJmx3cml0ZWZkcywgJmxleGNlcHRmZHMpOworCisgIGlmIChuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldChyZWFkZmRzLCAmbHJlYWRmZHMpIDwgMAorICAgICAgfHwgbmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQod3JpdGVmZHMsICZsd3JpdGVmZHMpIDwgMAorICAgICAgfHwgbmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQoZXhjZXB0ZmRzLCAmbGV4Y2VwdGZkcykgPCAwKQorICB7CisgICAgc25tcF9sb2coTE9HX0VSUiwKKwkgICAgICJVc2UgbmV0c25tcF9leHRlcm5hbF9ldmVudF9pbmZvMigpIGZvciBwcm9jZXNzaW5nIgorCSAgICAgIiBsYXJnZSBmaWxlIGRlc2NyaXB0b3JzIik7CisgIH0KKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZscmVhZGZkcyk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmx3cml0ZWZkcyk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmxleGNlcHRmZHMpOworfQorCit2b2lkIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbzIoaW50ICpudW1mZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpleGNlcHRmZHMpCit7CiAgIGludCBpOwogCiAgIGV4dGVybmFsX2ZkX3VucmVnaXN0ZXJlZCA9IDA7CiAKICAgZm9yIChpID0gMDsgaSA8IGV4dGVybmFsX3JlYWRmZGxlbjsgaSsrKSB7Ci0gICAgRkRfU0VUKGV4dGVybmFsX3JlYWRmZFtpXSwgcmVhZGZkcyk7CisgICAgTkVUU05NUF9MQVJHRV9GRF9TRVQoZXh0ZXJuYWxfcmVhZGZkW2ldLCByZWFkZmRzKTsKICAgICBpZiAoZXh0ZXJuYWxfcmVhZGZkW2ldID49ICpudW1mZHMpCiAgICAgICAqbnVtZmRzID0gZXh0ZXJuYWxfcmVhZGZkW2ldICsgMTsKICAgfQogICBmb3IgKGkgPSAwOyBpIDwgZXh0ZXJuYWxfd3JpdGVmZGxlbjsgaSsrKSB7Ci0gICAgRkRfU0VUKGV4dGVybmFsX3dyaXRlZmRbaV0sIHdyaXRlZmRzKTsKKyAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChleHRlcm5hbF93cml0ZWZkW2ldLCB3cml0ZWZkcyk7CiAgICAgaWYgKGV4dGVybmFsX3dyaXRlZmRbaV0gPj0gKm51bWZkcykKICAgICAgICpudW1mZHMgPSBleHRlcm5hbF93cml0ZWZkW2ldICsgMTsKICAgfQogICBmb3IgKGkgPSAwOyBpIDwgZXh0ZXJuYWxfZXhjZXB0ZmRsZW47IGkrKykgewotICAgIEZEX1NFVChleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKKyAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKICAgICBpZiAoZXh0ZXJuYWxfZXhjZXB0ZmRbaV0gPj0gKm51bWZkcykKICAgICAgICpudW1mZHMgPSBleHRlcm5hbF9leGNlcHRmZFtpXSArIDE7CiAgIH0KQEAgLTE4NSwzNyArMjIxLDcwIEBACiAgKi8KIHZvaWQgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMoaW50ICpjb3VudCwgZmRfc2V0ICpyZWFkZmRzLCBmZF9zZXQgKndyaXRlZmRzLCBmZF9zZXQgKmV4Y2VwdGZkcykKIHsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbHJlYWRmZHM7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IGx3cml0ZWZkczsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbGV4Y2VwdGZkczsKKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCZscmVhZGZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmx3cml0ZWZkcywgRkRfU0VUU0laRSk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2luaXQoJmxleGNlcHRmZHMsIEZEX1NFVFNJWkUpOworCisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZscmVhZGZkcywgcmVhZGZkcyk7CisgIG5ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KCZsd3JpdGVmZHMsIHdyaXRlZmRzKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxleGNlcHRmZHMsIGV4Y2VwdGZkcyk7CisKKyAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMyKGNvdW50LCAmbHJlYWRmZHMsICZsd3JpdGVmZHMsICZsZXhjZXB0ZmRzKTsKKworICBpZiAobmV0c25tcF9jb3B5X2xhcmdlX2ZkX3NldF90b19mZF9zZXQocmVhZGZkcywgJmxyZWFkZmRzKSA8IDAKKyAgICAgIHx8IG5ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KHdyaXRlZmRzLCAgJmx3cml0ZWZkcykgPCAwCisgICAgICB8fCBuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldChleGNlcHRmZHMsICZsZXhjZXB0ZmRzKSA8IDApCisgIHsKKyAgICBzbm1wX2xvZyhMT0dfRVJSLAorCSAgICAgIlVzZSBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoKSBmb3IgcHJvY2Vzc2luZyIKKwkgICAgICIgbGFyZ2UgZmlsZSBkZXNjcmlwdG9ycyIpOworICB9CisKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfY2xlYW51cCgmbHJlYWRmZHMpOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZsd3JpdGVmZHMpOworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZsZXhjZXB0ZmRzKTsKK30KKwordm9pZCBuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50czIoaW50ICpjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICpyZWFkZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKndyaXRlZmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKmV4Y2VwdGZkcykKK3sKICAgaW50IGk7CiAgIGZvciAoaSA9IDA7CiAgICAgICAgKmNvdW50ICYmIChpIDwgZXh0ZXJuYWxfcmVhZGZkbGVuKSAmJiAhZXh0ZXJuYWxfZmRfdW5yZWdpc3RlcmVkOyBpKyspIHsKLSAgICAgIGlmIChGRF9JU1NFVChleHRlcm5hbF9yZWFkZmRbaV0sIHJlYWRmZHMpKSB7CisgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChleHRlcm5hbF9yZWFkZmRbaV0sIHJlYWRmZHMpKSB7CiAgICAgICAgICAgREVCVUdNU0dUTCgoImZkX2V2ZW50X21hbmFnZXI6bmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMiLCAKICAgICAgICAgICAgICAgICAgICAgICJyZWFkZmRbJWRdID0gJWRcbiIsIGksIGV4dGVybmFsX3JlYWRmZFtpXSkpOwogICAgICAgICAgIGV4dGVybmFsX3JlYWRmZGZ1bmNbaV0gKGV4dGVybmFsX3JlYWRmZFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlcm5hbF9yZWFkZmRfZGF0YVtpXSk7Ci0gICAgICAgICAgRkRfQ0xSKGV4dGVybmFsX3JlYWRmZFtpXSwgcmVhZGZkcyk7CisgICAgICAgICAgTkVUU05NUF9MQVJHRV9GRF9DTFIoZXh0ZXJuYWxfcmVhZGZkW2ldLCByZWFkZmRzKTsKICAgICAgICAgICAoKmNvdW50KS0tOwogICAgICAgfQogICB9CiAgIGZvciAoaSA9IDA7CiAgICAgICAgKmNvdW50ICYmIChpIDwgZXh0ZXJuYWxfd3JpdGVmZGxlbikgJiYgIWV4dGVybmFsX2ZkX3VucmVnaXN0ZXJlZDsgaSsrKSB7Ci0gICAgICBpZiAoRkRfSVNTRVQoZXh0ZXJuYWxfd3JpdGVmZFtpXSwgd3JpdGVmZHMpKSB7CisgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChleHRlcm5hbF93cml0ZWZkW2ldLCB3cml0ZWZkcykpIHsKICAgICAgICAgICBERUJVR01TR1RMKCgiZmRfZXZlbnRfbWFuYWdlcjpuZXRzbm1wX2Rpc3BhdGNoX2V4dGVybmFsX2V2ZW50cyIsIAogICAgICAgICAgICAgICAgICAgICAgIndyaXRlZmRbJWRdID0gJWRcbiIsIGksIGV4dGVybmFsX3dyaXRlZmRbaV0pKTsKICAgICAgICAgICBleHRlcm5hbF93cml0ZWZkZnVuY1tpXSAoZXh0ZXJuYWxfd3JpdGVmZFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZXJuYWxfd3JpdGVmZF9kYXRhW2ldKTsKLSAgICAgICAgICBGRF9DTFIoZXh0ZXJuYWxfd3JpdGVmZFtpXSwgd3JpdGVmZHMpOworICAgICAgICAgIE5FVFNOTVBfTEFSR0VfRkRfQ0xSKGV4dGVybmFsX3dyaXRlZmRbaV0sIHdyaXRlZmRzKTsKICAgICAgICAgICAoKmNvdW50KS0tOwogICAgICAgfQogICB9CiAgIGZvciAoaSA9IDA7CiAgICAgICAgKmNvdW50ICYmIChpIDwgZXh0ZXJuYWxfZXhjZXB0ZmRsZW4pICYmICFleHRlcm5hbF9mZF91bnJlZ2lzdGVyZWQ7IGkrKykgewotICAgICAgaWYgKEZEX0lTU0VUKGV4dGVybmFsX2V4Y2VwdGZkW2ldLCBleGNlcHRmZHMpKSB7CisgICAgICBpZiAoTkVUU05NUF9MQVJHRV9GRF9JU1NFVChleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKSkgewogICAgICAgICAgIERFQlVHTVNHVEwoKCJmZF9ldmVudF9tYW5hZ2VyOm5ldHNubXBfZGlzcGF0Y2hfZXh0ZXJuYWxfZXZlbnRzIiwgCiAgICAgICAgICAgICAgICAgICAgICAiZXhjZXB0ZmRbJWRdID0gJWRcbiIsIGksIGV4dGVybmFsX2V4Y2VwdGZkW2ldKSk7CiAgICAgICAgICAgZXh0ZXJuYWxfZXhjZXB0ZmRmdW5jW2ldIChleHRlcm5hbF9leGNlcHRmZFtpXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVybmFsX2V4Y2VwdGZkX2RhdGFbaV0pOwotICAgICAgICAgIEZEX0NMUihleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKKyAgICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX0NMUihleHRlcm5hbF9leGNlcHRmZFtpXSwgZXhjZXB0ZmRzKTsKICAgICAgICAgICAoKmNvdW50KS0tOwogICAgICAgfQogICB9CmRpZmYgLS1naXQgYS9zbm1wbGliL2ZpbGVfdXRpbHMuYyBiL3NubXBsaWIvZmlsZV91dGlscy5jCmluZGV4IDhmN2ZiNmEuLjlmMTliMzYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvZmlsZV91dGlscy5jCisrKyBiL3NubXBsaWIvZmlsZV91dGlscy5jCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgICAgICAgZmlsZWktPmZkID0gb3BlbihmaWxlaS0+bmFtZSwgZmlsZWktPmZzX2ZsYWdzLCBmaWxlaS0+bW9kZSk7CiAKICAgICBpZiAoZmlsZWktPmZkIDwgMCkgewotICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZXJyb3Igb3BlbmluZyAlcyAoJWQpXG4iLCBmaWxlaS0+bmFtZSwgZXJybm8pOworICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9maWxlIiwgImVycm9yIG9wZW5pbmcgJXMgKCVkKVxuIiwgZmlsZWktPm5hbWUsIGVycm5vKSk7CiAgICAgfQogCiAgICAgLyoKQEAgLTIwMCw3ICsyMDAsNyBAQAogICAgICAqLwogICAgIHJjID0gY2xvc2UoZmlsZWktPmZkKTsKICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgIHNubXBfbG9nKExPR19FUlIsICJlcnJvciBjbG9zaW5nICVzICglZClcbiIsIGZpbGVpLT5uYW1lLCBlcnJubyk7CisgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX2ZpbGUiLCAiZXJyb3IgY2xvc2luZyAlcyAoJWQpXG4iLCBmaWxlaS0+bmFtZSwgZXJybm8pKTsKICAgICB9CiAgICAgZWxzZQogICAgICAgICBmaWxlaS0+ZmQgPSAtMTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvaW5ldF9wdG9uLmMgYi9zbm1wbGliL2luZXRfcHRvbi5jCmluZGV4IDBhMDNhOGYuLjhiNWM3MWUgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvaW5ldF9wdG9uLmMKKysrIGIvc25tcGxpYi9pbmV0X3B0b24uYwpAQCAtNTIsOSArNTIsNiBAQAogI2lmbmRlZiBJTlQxNlNaCiAjZGVmaW5lCUlOVDE2U1oJCTIKICNlbmRpZgotICAvKgotICAgKiBFbmQgb2YgTmV0LVNOTVAgV2luMzIgYWRkaXRpb25zCi0gICAqLwogCiAjaWZuZGVmIElOQUREUlNaCiAjZGVmaW5lCUlOQUREUlNaCTQKZGlmZiAtLWdpdCBhL3NubXBsaWIvaW50NjQuYyBiL3NubXBsaWIvaW50NjQuYwppbmRleCBlYTU2NjczLi5hODE3OGYxIDEwMDY0NAotLS0gYS9zbm1wbGliL2ludDY0LmMKKysrIGIvc25tcGxpYi9pbnQ2NC5jCkBAIC0yNjYsNyArMjY2LDcgQEAKICAgICBpZiggKE5VTEwgPT0gb2xkX3ZhbCkgfHwgKE5VTEwgPT0gbmV3X3ZhbCkgKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBERUJVR01TR1RMKCgiOTpjNjQ6Y2hlY2tfd3JhcCIsICJjaGVjayB3cmFwIDB4JTB4LjB4JTB4IDB4JTB4LjB4JTB4XG4iLAorICAgIERFQlVHTVNHVEwoKCI5OmM2NDpjaGVja193cmFwIiwgImNoZWNrIHdyYXAgMHglMGx4LjB4JTBseCAweCUwbHguMHglMGx4XG4iLAogICAgICAgICAgICAgICAgIG9sZF92YWwtPmhpZ2gsIG9sZF92YWwtPmxvdywgbmV3X3ZhbC0+aGlnaCwgbmV3X3ZhbC0+bG93KSk7CiAgICAgCiAgICAgLyoKQEAgLTM0NSw3ICszNDUsNyBAQAogICAgIGlmICgoTlVMTCA9PSBuZWVkX3dyYXBfY2hlY2spIHx8ICgwICE9ICpuZWVkX3dyYXBfY2hlY2spKSB7CiAgICAgICAgIHJjID0gbmV0c25tcF9jNjRfY2hlY2tfZm9yXzMyYml0X3dyYXAob2xkX3ByZXZfdmFsLG5ld192YWwsIDEpOwogICAgICAgICBpZiAocmMgPCAwKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCJjNjQgMzIgYml0IGNoZWNrIGZhaWxlZFxuIik7CisgICAgICAgICAgICBERUJVR01TR1RMKCgiYzY0IiwiMzIgYml0IGNoZWNrIGZhaWxlZFxuIikpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgfQpAQCAtMzc1LDcgKzM3NSw3IEBACiAgICAgICAgICAqLwogICAgICAgICBpZiAoKHByZXZfdmFsLT5sb3cgIT0gbmV3X3ZhbC0+bG93KSB8fAogICAgICAgICAgICAgKHByZXZfdmFsLT5oaWdoICE9IG5ld192YWwtPmhpZ2gpKSB7Ci0gICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibG9va3MgbGlrZSBhIDY0Yml0IHdyYXAsIGJ1dCBwcmV2IT1uZXdcbiIpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImM2NCIsICJsb29rcyBsaWtlIGEgNjRiaXQgd3JhcCwgYnV0IHByZXYhPW5ld1xuIikpOwogICAgICAgICAgICAgcmV0dXJuIC0yOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKE5VTEwgIT0gbmVlZF93cmFwX2NoZWNrKQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9rZXl0b29scy5jIGIvc25tcGxpYi9rZXl0b29scy5jCmluZGV4IGFhNmE3MTIuLjc3MDMwYmQgMTAwNjQ0Ci0tLSBhL3NubXBsaWIva2V5dG9vbHMuYworKysgYi9zbm1wbGliL2tleXRvb2xzLmMKQEAgLTEzNywxNiArMTM3LDE5IEBACiAgICAgY3R4ID0gRVZQX01EX0NUWF9jcmVhdGUoKTsKICNlbHNlCiAgICAgY3R4ID0gbWFsbG9jKHNpemVvZigqY3R4KSk7Ci0gICAgRVZQX01EX0NUWF9pbml0KGN0eCk7CisgICAgaWYgKCFFVlBfTURfQ1RYX2luaXQoY3R4KSkKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogI2VuZGlmCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9NRDUKLSAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNNRDVBdXRoKSkKLSAgICAgICAgRVZQX0RpZ2VzdEluaXQoY3R4LCBFVlBfbWQ1KCkpOwotICAgIGVsc2UKKyAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNNRDVBdXRoKSkgeworICAgICAgICBpZiAoIUVWUF9EaWdlc3RJbml0KGN0eCwgRVZQX21kNSgpKSkKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICB9IGVsc2UKICNlbmRpZgotICAgICAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNTSEExQXV0aCkpCi0gICAgICAgIEVWUF9EaWdlc3RJbml0KGN0eCwgRVZQX3NoYTEoKSk7Ci0gICAgZWxzZQorICAgICAgICBpZiAoSVNUUkFOU0ZPUk0oaGFzaHR5cGUsIEhNQUNTSEExQXV0aCkpIHsKKyAgICAgICAgICAgIGlmICghRVZQX0RpZ2VzdEluaXQoY3R4LCBFVlBfc2hhMSgpKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgICAgIH0gZWxzZQogICAgICAgICBRVUlURlVOKFNOTVBFUlJfR0VORVJSLCBnZW5lcmF0ZV9LdV9xdWl0KTsKICNlbHNlCiAgICAgTURiZWdpbigmTUQpOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9sYXJnZV9mZF9zZXQuYyBiL3NubXBsaWIvbGFyZ2VfZmRfc2V0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDkwZTM5NwotLS0gL2Rldi9udWxsCisrKyBiL3NubXBsaWIvbGFyZ2VfZmRfc2V0LmMKQEAgLTAsMCArMSwyNDYgQEAKKy8qKgorICogQGZpbGUgbGFyZ2VfZmRfc2V0LmMKKyAqCisgKiBAYnJpZWYgTWFjcm8ncyBhbmQgZnVuY3Rpb25zIGZvciBtYW5pcHVsYXRpb24gb2YgbGFyZ2UgZmlsZSBkZXNjcmlwdG9yIHNldHMuCisgKi8KKworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisjaWZkZWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1dJTlNPQ0tfSAorI2luY2x1ZGUgPHdpbnNvY2suaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2Fzc2VydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbGFyZ2VfZmRfc2V0Lmg+CisKKworI2lmICFkZWZpbmVkKGN5Z3dpbikgJiYgZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkKKwordm9pZAorbmV0c25tcF9sYXJnZV9mZF9zZXRmZChTT0NLRVQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgdW5zaWduZWQgICAgICAgIGk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChmZCAhPSBJTlZBTElEX1NPQ0tFVCk7CisKKyAgICBpZiAoZmRzZXQtPmxmc19zZXQuZmRfY291bnQgPT0gZmRzZXQtPmxmc19zZXRzaXplKQorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUoZmRzZXQsIDIgKiAoZmRzZXQtPmxmc19zZXRzaXplICsgMSkpOworCisgICAgZm9yIChpID0gMDsgaSA8IGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2ldID09IChTT0NLRVQpIChmZCkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBpZiAoaSA9PSBmZHNldC0+bGZzX3NldC5mZF9jb3VudAorICAgICAgICAmJiBmZHNldC0+bGZzX3NldC5mZF9jb3VudCA8IGZkc2V0LT5sZnNfc2V0c2l6ZSkgeworICAgICAgICBmZHNldC0+bGZzX3NldC5mZF9jb3VudCsrOworICAgICAgICBmZHNldC0+bGZzX3NldC5mZF9hcnJheVtpXSA9IGZkOworICAgIH0KK30KKwordm9pZAorbmV0c25tcF9sYXJnZV9mZF9jbHIoU09DS0VUIGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIHVuc2lnbmVkICAgICAgICBpOworCisgICAgbmV0c25tcF9hc3NlcnQoZmQgIT0gSU5WQUxJRF9TT0NLRVQpOworCisgICAgZm9yIChpID0gMDsgaSA8IGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2ldID09IGZkKSB7CisgICAgICAgICAgICB3aGlsZSAoaSA8IGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50IC0gMSkgeworICAgICAgICAgICAgICAgIGZkc2V0LT5sZnNfc2V0LmZkX2FycmF5W2ldID0KKyAgICAgICAgICAgICAgICAgICAgZmRzZXQtPmxmc19zZXQuZmRfYXJyYXlbaSArIDFdOworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50LS07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChTT0NLRVQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgdW5zaWduZWQgaW50ICAgIGk7CisKKyAgICBuZXRzbm1wX2Fzc2VydChmZCAhPSBJTlZBTElEX1NPQ0tFVCk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgZmRzZXQtPmxmc19zZXQuZmRfY291bnQ7IGkrKykgeworICAgICAgICBpZiAoZmRzZXQtPmxmc19zZXQuZmRfYXJyYXlbaV0gPT0gZmQpCisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbHNlCisKK3ZvaWQKK25ldHNubXBfbGFyZ2VfZmRfc2V0ZmQoaW50IGZkLCBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqIGZkc2V0KQoreworICAgIG5ldHNubXBfYXNzZXJ0KGZkID49IDApOworCisgICAgd2hpbGUgKGZkID49IGZkc2V0LT5sZnNfc2V0c2l6ZSkKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGZkc2V0LCAyICogKGZkc2V0LT5sZnNfc2V0c2l6ZSArIDEpKTsKKworICAgIEZEX1NFVChmZCwgZmRzZXQtPmxmc19zZXRwdHIpOworfQorCit2b2lkCituZXRzbm1wX2xhcmdlX2ZkX2NscihpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgbmV0c25tcF9hc3NlcnQoZmQgPj0gMCk7CisKKyAgICBpZiAoKHVuc2lnbmVkKWZkIDwgZmRzZXQtPmxmc19zZXRzaXplKQorICAgICAgICBGRF9DTFIoZmQsIGZkc2V0LT5sZnNfc2V0cHRyKTsKK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX2lzX3NldChpbnQgZmQsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgbmV0c25tcF9hc3NlcnQoZmQgPj0gMCk7CisKKyAgICByZXR1cm4gKHVuc2lnbmVkKWZkIDwgZmRzZXQtPmxmc19zZXRzaXplICYmIEZEX0lTU0VUKGZkLCBmZHNldC0+bGZzX3NldHB0cik7Cit9CisKKyNlbmRpZgorCit2b2lkCituZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQsIGludCBzZXRzaXplKQoreworICAgIGZkc2V0LT5sZnNfc2V0c2l6ZSA9IDA7CisgICAgZmRzZXQtPmxmc19zZXRwdHIgID0gTlVMTDsKKyNpZiAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisgICAgZmRzZXQtPmxmc19zZXQuZmRfY291bnQgPSAwOworI2VuZGlmCisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGZkc2V0LCBzZXRzaXplKTsKK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX3NldF9zZWxlY3QoaW50IG51bWZkcywgbmV0c25tcF9sYXJnZV9mZF9zZXQgKnJlYWRmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqd3JpdGVmZHMsCisgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldCAqZXhjZXB0ZmRzLAorICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCit7CisjaWYgZGVmaW5lZChjeWd3aW4pIHx8ICFkZWZpbmVkKEhBVkVfV0lOU09DS19IKQorICAgIC8qIEJpdC1zZXQgcmVwcmVzZW50YXRpb246IG1ha2Ugc3VyZSBhbGwgZmRzIGhhdmUgYXQgbGVhc3Qgc2l6ZSAnbnVtZmRzJy4gKi8KKyAgICBpZiAocmVhZGZkcyAmJiByZWFkZmRzLT5sZnNfc2V0c2l6ZSA8IG51bWZkcykKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKHJlYWRmZHMsIG51bWZkcyk7CisgICAgaWYgKHdyaXRlZmRzICYmIHdyaXRlZmRzLT5sZnNfc2V0c2l6ZSA8IG51bWZkcykKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKHdyaXRlZmRzLCBudW1mZHMpOworICAgIGlmIChleGNlcHRmZHMgJiYgZXhjZXB0ZmRzLT5sZnNfc2V0c2l6ZSA8IG51bWZkcykKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGV4Y2VwdGZkcywgbnVtZmRzKTsKKyNlbHNlCisgICAgLyogQXJyYXkgcmVwcmVzZW50YXRpb246IG5vIHJlc2l6aW5nIGlzIG5lY2Vzc2FyeS4gKi8KKyNlbmRpZgorCisgICAgcmV0dXJuIHNlbGVjdChudW1mZHMsCisgICAgICAgICAgICByZWFkZmRzID8gcmVhZGZkcy0+bGZzX3NldHB0ciA6IE5VTEwsCisgICAgICAgICAgICB3cml0ZWZkcyA/IHdyaXRlZmRzLT5sZnNfc2V0cHRyIDogTlVMTCwKKyAgICAgICAgICAgIGV4Y2VwdGZkcyA/IGV4Y2VwdGZkcy0+bGZzX3NldHB0ciA6IE5VTEwsCisgICAgICAgICAgICB0aW1lb3V0KTsKK30KKworaW50CituZXRzbm1wX2xhcmdlX2ZkX3NldF9yZXNpemUobmV0c25tcF9sYXJnZV9mZF9zZXQgKiBmZHNldCwgaW50IHNldHNpemUpCit7CisgICAgaW50ICAgICAgICAgICAgIGZkX3NldF9ieXRlczsKKworICAgIGlmIChmZHNldC0+bGZzX3NldHNpemUgPT0gc2V0c2l6ZSkKKyAgICAgICAgZ290byBzdWNjZXNzOworCisgICAgaWYgKHNldHNpemUgPiBGRF9TRVRTSVpFKSB7CisgICAgICAgIGZkX3NldF9ieXRlcyA9IE5FVFNOTVBfRkRfU0VUX0JZVEVTKHNldHNpemUpOworICAgICAgICBpZiAoZmRzZXQtPmxmc19zZXRzaXplID4gRkRfU0VUU0laRSkgeworICAgICAgICAgICAgZmRzZXQtPmxmc19zZXRwdHIgPSByZWFsbG9jKGZkc2V0LT5sZnNfc2V0cHRyLCBmZF9zZXRfYnl0ZXMpOworICAgICAgICAgICAgaWYgKCFmZHNldC0+bGZzX3NldHB0cikKKyAgICAgICAgICAgICAgICBnb3RvIG91dF9vZl9tZW07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmZHNldC0+bGZzX3NldHB0ciA9IG1hbGxvYyhmZF9zZXRfYnl0ZXMpOworICAgICAgICAgICAgaWYgKCFmZHNldC0+bGZzX3NldHB0cikKKyAgICAgICAgICAgICAgICBnb3RvIG91dF9vZl9tZW07CisgICAgICAgICAgICAqZmRzZXQtPmxmc19zZXRwdHIgPSBmZHNldC0+bGZzX3NldDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChmZHNldC0+bGZzX3NldHNpemUgPiBGRF9TRVRTSVpFKSB7CisgICAgICAgICAgICBmZHNldC0+bGZzX3NldCA9ICpmZHNldC0+bGZzX3NldHB0cjsKKyAgICAgICAgICAgIGZyZWUoZmRzZXQtPmxmc19zZXRwdHIpOworICAgICAgICB9CisgICAgICAgIGZkc2V0LT5sZnNfc2V0cHRyID0gJmZkc2V0LT5sZnNfc2V0OworICAgIH0KKworI2lmIGRlZmluZWQoY3lnd2luKSB8fCAhZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkKKyAgICB7CisgICAgICAgIGludCAgICAgICAgICAgICBpOworCisgICAgICAgIC8qCisgICAgICAgICAqIFVuaXg6IHdoZW4gZW5sYXJnaW5nLCBjbGVhciB0aGUgZmlsZSBkZXNjcmlwdG9ycyBkZWZpbmVkIGluIHRoZQorICAgICAgICAgKiByZXNpemVkICpmZHNldCBidXQgdGhhdCB3ZXJlIG5vdCBkZWZpbmVkIGluIHRoZSBvcmlnaW5hbCAqZmRzZXQuCisgICAgICAgICAqLworICAgICAgICBmb3IgKGkgPSBmZHNldC0+bGZzX3NldHNpemU7IGkgPCBzZXRzaXplOyBpKyspCisgICAgICAgICAgICBGRF9DTFIoaSwgZmRzZXQtPmxmc19zZXRwdHIpOworICAgIH0KKyNlbmRpZgorCisgICAgZmRzZXQtPmxmc19zZXRzaXplID0gc2V0c2l6ZTsKKyNpZiAhZGVmaW5lZChjeWd3aW4pICYmIGRlZmluZWQoSEFWRV9XSU5TT0NLX0gpCisgICAgaWYgKHNldHNpemUgPCBmZHNldC0+bGZzX3NldC5mZF9jb3VudCkKKyAgICAgICAgZmRzZXQtPmxmc19zZXQuZmRfY291bnQgPSBzZXRzaXplOworI2VuZGlmCitzdWNjZXNzOgorICAgIHJldHVybiAxOworCitvdXRfb2ZfbWVtOgorICAgIGZkc2V0LT5sZnNfc2V0c2l6ZSA9IDA7CisjaWYgIWRlZmluZWQoY3lnd2luKSAmJiBkZWZpbmVkKEhBVkVfV0lOU09DS19IKQorICAgIGZkc2V0LT5sZnNfc2V0LmZkX2NvdW50ID0gMDsKKyNlbmRpZgorICAgIHJldHVybiAwOworfQorCit2b2lkCituZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfcmVzaXplKGZkc2V0LCAwKTsKKyAgICBmZHNldC0+bGZzX3NldHNpemUgPSAwOworICAgIGZkc2V0LT5sZnNfc2V0cHRyICA9IDA7Cit9CisKK3ZvaWQKK25ldHNubXBfY29weV9mZF9zZXRfdG9fbGFyZ2VfZmRfc2V0KG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZHN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZmRfc2V0ICogc3JjKQoreworICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X3Jlc2l6ZShkc3QsIEZEX1NFVFNJWkUpOworICAgICpkc3QtPmxmc19zZXRwdHIgPSAqc3JjOworfQorCitpbnQKK25ldHNubXBfY29weV9sYXJnZV9mZF9zZXRfdG9fZmRfc2V0KGZkX3NldCAqIGRzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogc3JjKQoreworICAgIC8qIFJlcG9ydCBmYWlsdXJlIGlmICpzcmMgaXMgbGFyZ2VyIHRoYW4gRkRfU0VUU0laRS4gKi8KKyAgICBpZiAoc3JjLT5sZnNfc2V0c2l6ZSA+IEZEX1NFVFNJWkUpIHsKKyAgICAgICAgRkRfWkVSTyhkc3QpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgKmRzdCA9ICpzcmMtPmxmc19zZXRwdHI7CisKKyNpZiAhKCFkZWZpbmVkKGN5Z3dpbikgJiYgZGVmaW5lZChIQVZFX1dJTlNPQ0tfSCkpCisgICAgeworICAgICAgICBpbnQgICAgICAgICAgICAgaTsKKworICAgICAgICAvKiBVbml4OiBjbGVhciBhbnkgZmlsZSBkZXNjcmlwdG9ycyBkZWZpbmVkIGluICpkc3QgYnV0IG5vdCBpbiAqc3JjLiAqLworICAgICAgICBmb3IgKGkgPSBzcmMtPmxmc19zZXRzaXplOyBpIDwgRkRfU0VUU0laRTsgKytpKQorICAgICAgICAgICAgRkRfQ0xSKGksIGRzdCk7CisgICAgfQorI2VuZGlmCisKKyAgICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3NubXBsaWIvbGNkX3RpbWUuYyBiL3NubXBsaWIvbGNkX3RpbWUuYwppbmRleCBhMzA1N2RjLi4zZmQ4NTUxIDEwMDY0NAotLS0gYS9zbm1wbGliL2xjZF90aW1lLmMKKysrIGIvc25tcGxpYi9sY2RfdGltZS5jCkBAIC0yOTgsMTQgKzI5OCwxNCBAQAogdm9pZCBmcmVlX2V0aW1lbGlzdCh2b2lkKQogewogICAgICBpbnQgaW5kZXggPSAwOwotICAgICBFbmdpbmV0aW1lIGUgPSAwOwotICAgICBFbmdpbmV0aW1lIG5leHRFID0gMDsKKyAgICAgRW5naW5ldGltZSBlID0gTlVMTDsKKyAgICAgRW5naW5ldGltZSBuZXh0RSA9IE5VTEw7CiAKICAgICAgZm9yKCA7IGluZGV4IDwgRVRJTUVMSVNUX1NJWkU7ICsraW5kZXgpCiAgICAgIHsKICAgICAgICAgICAgZSA9IGV0aW1lbGlzdFtpbmRleF07CiAKLSAgICAgICAgICAgd2hpbGUoZSAhPSAwKQorICAgICAgICAgICB3aGlsZShlICE9IE5VTEwpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgbmV4dEUgPSBlLT5uZXh0OwogICAgICAgICAgICAgICAgICBTTk1QX0ZSRUUoZS0+ZW5naW5lSUQpOwpAQCAtMzEzLDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgIGUgPSBuZXh0RTsKICAgICAgICAgICAgfQogCi0gICAgICAgICAgIGV0aW1lbGlzdFtpbmRleF0gPSAwOworICAgICAgICAgICBldGltZWxpc3RbaW5kZXhdID0gTlVMTDsKICAgICAgfQogICAgICByZXR1cm47CiB9CkBAIC01MDYsNiArNTA2LDEyIEBACiAgICAgcnZhbCA9IHNjX2hhc2godXNtSE1BQ01ENUF1dGhQcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICBzaXplb2YodXNtSE1BQ01ENUF1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKSwKICAgICAgICAgICAgICAgICAgICBlbmdpbmVJRCwgZW5naW5lSURfbGVuLCBidWYsICZidWZfbGVuKTsKKyAgICBpZiAocnZhbCA9PSBTTk1QRVJSX1NDX05PVF9DT05GSUdVUkVEKSB7CisgICAgICAgIC8qIGZhbGwgYmFjayB0byBzaGExICovCisgICAgICAgIHJ2YWwgPSBzY19oYXNoKHVzbUhNQUNTSEExQXV0aFByb3RvY29sLAorICAgICAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDU0hBMUF1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKSwKKyAgICAgICAgICAgICAgICAgICBlbmdpbmVJRCwgZW5naW5lSURfbGVuLCBidWYsICZidWZfbGVuKTsKKyAgICB9CiAjZWxzZQogICAgIHJ2YWwgPSBzY19oYXNoKHVzbUhNQUNTSEExQXV0aFByb3RvY29sLAogICAgICAgICAgICAgICAgICAgIHNpemVvZih1c21ITUFDU0hBMUF1dGhQcm90b2NvbCkgLyBzaXplb2Yob2lkKSwKZGlmZiAtLWdpdCBhL3NubXBsaWIvbWQ1LmMgYi9zbm1wbGliL21kNS5jCmluZGV4IGIxMjhjY2EuLjEwNjI1NTAgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvbWQ1LmMKKysrIGIvc25tcGxpYi9tZDUuYwpAQCAtNDM0LDcgKzQzNCw3IEBACiAgICAgdV9jaGFyICAgICAgICAgIGV4dGVuZGVkQXV0aEtleVtIQVNIS0VZTEVOXTsKICAgICB1X2NoYXIgICAgICAgICAgYnVmW0hBU0hLRVlMRU5dOwogICAgIHNpemVfdCAgICAgICAgICBpOwotICAgIHVfY2hhciAgICAgICAgICpjcCwgKm5ld2RhdGEgPSAwOworICAgIHVfY2hhciAgICAgICAgICpjcCwgKm5ld2RhdGEgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CiAKICAgICAvKgpkaWZmIC0tZ2l0IGEvc25tcGxpYi9taWIuYyBiL3NubXBsaWIvbWliLmMKaW5kZXggOWQzY2E0MS4uOTNkMzFiMyAxMDA2NDQKLS0tIGEvc25tcGxpYi9taWIuYworKysgYi9zbm1wbGliL21pYi5jCkBAIC00Miw2ICs0MiwyNCBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8Y3R5cGUuaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmIEhBVkVfRElSRU5UX0gKKyMgaW5jbHVkZSA8ZGlyZW50Lmg+CisjIGRlZmluZSBOQU1MRU4oZGlyZW50KSBzdHJsZW4oKGRpcmVudCktPmRfbmFtZSkKKyNlbHNlCisjIGRlZmluZSBkaXJlbnQgZGlyZWN0CisjIGRlZmluZSBOQU1MRU4oZGlyZW50KSAoZGlyZW50KS0+ZF9uYW1sZW4KKyMgaWYgSEFWRV9TWVNfTkRJUl9ICisjICBpbmNsdWRlIDxzeXMvbmRpci5oPgorIyBlbmRpZgorIyBpZiBIQVZFX1NZU19ESVJfSAorIyAgaW5jbHVkZSA8c3lzL2Rpci5oPgorIyBlbmRpZgorIyBpZiBIQVZFX05ESVJfSAorIyAgaW5jbHVkZSA8bmRpci5oPgorIyBlbmRpZgorI2VuZGlmCisKICNpZiBIQVZFX05FVElORVRfSU5fSAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNlbmRpZgpAQCAtMjM0MCw3ICsyMzU4LDkgQEAKIAogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfcHJlbWliKEFTTl9CT09MRUFOLCAic25tcCIsICJzaG93TWliRXJyb3JzIiwKICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9NSUJfRVJST1JTKTsKLSAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYihBU05fQk9PTEVBTiwgInNubXAiLCAic3RyaWN0Q29tbWVudFRlcm0iLAorICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfcHJlbWliKEFTTl9CT09MRUFOLCAic25tcCIsICJjb21tZW50VG9FT0wiLCAgICAgLyogRGVzY3JpYmVzIGFjdHVhbCBiZWhhdmlvdXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9NSUJfQ09NTUVOVF9URVJNKTsKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX3ByZW1pYihBU05fQk9PTEVBTiwgInNubXAiLCAic3RyaWN0Q29tbWVudFRlcm0iLCAgICAvKiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5ICovCiAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfTUlCX0NPTU1FTlRfVEVSTSk7CiAgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9wcmVtaWIoQVNOX0JPT0xFQU4sICJzbm1wIiwgIm1pYkFsbG93VW5kZXJsaW5lIiwKICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9NSUJfUEFSU0VfTEFCRUwpOwpAQCAtMjU1NSw2ICsyNTc1LDcgQEAKICAgICAgKi8KICAgICBuZXRzbm1wX2ZpeHVwX21pYl9kaXJlY3RvcnkoKTsKICAgICBlbnZfdmFyID0gc3RyZHVwKG5ldHNubXBfZ2V0X21pYl9kaXJlY3RvcnkoKSk7CisgICAgbmV0c25tcF9taWJpbmRleF9sb2FkKCk7CiAKICAgICBERUJVR01TR1RMKCgiaW5pdF9taWIiLAogICAgICAgICAgICAgICAgICJTZWVuIE1JQkRJUlM6IExvb2tpbmcgaW4gJyVzJyBmb3IgbWliIGRpcnMgLi4uXG4iLApAQCAtMjYyMCw3ICsyNjQxLDcgQEAKICAgICB3aGlsZSAoZW50cnkpIHsKICAgICAgICAgaWYgKHN0cmNhc2VjbXAoZW50cnksIERFQlVHX0FMV0FZU19UT0tFTikgPT0gMCkgewogICAgICAgICAgICAgcmVhZF9hbGxfbWlicygpOwotICAgICAgICB9IGVsc2UgaWYgKHN0cnN0cihlbnRyeSwgIi8iKSAhPSAwKSB7CisgICAgICAgIH0gZWxzZSBpZiAoc3Ryc3RyKGVudHJ5LCAiLyIpICE9IE5VTEwpIHsKICAgICAgICAgICAgIHJlYWRfbWliKGVudHJ5KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIG5ldHNubXBfcmVhZF9tb2R1bGUoZW50cnkpOwpAQCAtMjY2MSw3ICsyNjgyLDcgQEAKICNlbmRpZgogICAgIH0KIAotICAgIGlmIChlbnZfdmFyICE9IDApIHsKKyAgICBpZiAoZW52X3ZhciAhPSBOVUxMKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJpbml0X21pYiIsCiAgICAgICAgICAgICAgICAgICAgICJTZWVuIE1JQkZJTEVTOiBMb29raW5nIGluICclcycgZm9yIG1pYiBmaWxlcyAuLi5cbiIsCiAgICAgICAgICAgICAgICAgICAgIGVudl92YXIpKTsKQEAgLTI3MTYsNyArMjczNyw3IEBACiAgICAgfQogfQogCi0jaWZuZGVmIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCiB2b2lkCiBpbml0X21pYih2b2lkKQogewpAQCAtMjcyNSw2ICsyNzQ2LDEzOSBAQAogI2VuZGlmCiAKIAorLyoKKyAqIEhhbmRsZSBNSUIgaW5kZXhlcyBjZW50cmFsbHkKKyAqLworc3RhdGljIGludCBfbWliaW5kZXggICAgID0gMDsgICAvKiBMYXN0IGluZGV4IGluIHVzZSAqLworc3RhdGljIGludCBfbWliaW5kZXhfbWF4ID0gMDsgICAvKiBTaXplIG9mIGluZGV4IGFycmF5ICovCitjaGFyICAgICAqKl9taWJpbmRleGVzICAgPSBOVUxMOworCitpbnQgX21pYmluZGV4X2FkZCggY29uc3QgY2hhciAqZGlybmFtZSwgaW50IGkgKTsKK3ZvaWQKK25ldHNubXBfbWliaW5kZXhfbG9hZCggdm9pZCApCit7CisgICAgRElSICpkaXI7CisgICAgc3RydWN0IGRpcmVudCAqZmlsZTsKKyAgICBGSUxFICpmcDsKKyAgICBjaGFyIHRtcGJ1ZlsgMzAwXTsKKyAgICBjaGFyIHRtcGJ1ZjJbMzAwXTsKKyAgICBpbnQgIGk7CisgICAgY2hhciAqY3A7CisKKyAgICAvKgorICAgICAqIE9wZW4gdGhlIE1JQiBpbmRleCBkaXJlY3RvcnksIG9yIGNyZWF0ZSBpdCAoZW1wdHkpCisgICAgICovCisgICAgc25wcmludGYoIHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICIlcy9taWJfaW5kZXhlcyIsCisgICAgICAgICAgICAgIGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpKTsKKyAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZiktMV0gPSAwOworICAgIGRpciA9IG9wZW5kaXIoIHRtcGJ1ZiApOworICAgIGlmICggZGlyID09IE5VTEwgKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJtaWJpbmRleCIsICJsb2FkOiAobmV3KVxuIikpOworICAgICAgICBta2RpcmhpZXIoIHRtcGJ1ZiwgTkVUU05NUF9BR0VOVF9ESVJFQ1RPUllfTU9ERSwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKgorICAgICAqIENyZWF0ZSBhIGxpc3Qgb2Ygd2hpY2ggZGlyZWN0b3J5IGVhY2ggZmlsZSByZWZlcnMgdG8KKyAgICAgKi8KKyAgICB3aGlsZSAoKGZpbGUgPSByZWFkZGlyKCBkaXIgKSkpIHsKKyAgICAgICAgaWYgKCAhaXNkaWdpdChmaWxlLT5kX25hbWVbMF0pKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGkgPSBhdG9pKCBmaWxlLT5kX25hbWUgKTsKKworICAgICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIiVzL21pYl9pbmRleGVzLyVkIiwKKyAgICAgICAgICAgICAgZ2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5KCksIGkgKTsKKyAgICAgICAgdG1wYnVmW3NpemVvZih0bXBidWYpLTFdID0gMDsKKyAgICAgICAgZnAgPSBmb3BlbiggdG1wYnVmLCAiciIgKTsKKyAgICAgICAgaWYgKCFmcCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBjcCA9IGZnZXRzKCB0bXBidWYyLCBzaXplb2YodG1wYnVmMiksIGZwICk7CisgICAgICAgIGlmICggIWNwICkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYmluZGV4IiwgIkVtcHR5IE1JQiBpbmRleCAoJWQpXG4iLCBpKSk7CisgICAgICAgICAgICBmY2xvc2UoZnApOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgdG1wYnVmMltzdHJsZW4odG1wYnVmMiktMV0gPSAwOworICAgICAgICBERUJVR01TR1RMKCgibWliaW5kZXgiLCAibG9hZDogKCVkKSAlc1xuIiwgaSwgdG1wYnVmMikpOworICAgICAgICAodm9pZClfbWliaW5kZXhfYWRkKCB0bXBidWYyKzQsIGkgKTsgIC8qIFNraXAgJ0RJUiAnICovCisgICAgICAgIGZjbG9zZSggZnAgKTsKKyAgICB9CisgICAgY2xvc2VkaXIoIGRpciApOworfQorCitjaGFyICoKK25ldHNubXBfbWliaW5kZXhfbG9va3VwKCBjb25zdCBjaGFyICpkaXJuYW1lICkKK3sKKyAgICBpbnQgaTsKKyAgICBzdGF0aWMgY2hhciB0bXBidWZbMzAwXTsKKworICAgIGZvciAoaT0wOyBpPF9taWJpbmRleDsgaSsrKSB7CisgICAgICAgIGlmICggX21pYmluZGV4ZXNbaV0gJiYKKyAgICAgICAgICAgICBzdHJjbXAoIF9taWJpbmRleGVzW2ldLCBkaXJuYW1lICkgPT0gMCkgeworICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICIlcy9taWJfaW5kZXhlcy8lZCIsCisgICAgICAgICAgICAgICAgICAgICAgZ2V0X3BlcnNpc3RlbnRfZGlyZWN0b3J5KCksIGkpOworICAgICAgICAgICAgIHRtcGJ1ZltzaXplb2YodG1wYnVmKS0xXSA9IDA7CisgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm1pYmluZGV4IiwgImxvb2t1cDogJXMgKCVkKSAlc1xuIiwgZGlybmFtZSwgaSwgdG1wYnVmICkpOworICAgICAgICAgICAgIHJldHVybiB0bXBidWY7CisgICAgICAgIH0KKyAgICB9CisgICAgREVCVUdNU0dUTCgoIm1pYmluZGV4IiwgImxvb2t1cDogKG5vbmUpXG4iKSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK2ludAorX21pYmluZGV4X2FkZCggY29uc3QgY2hhciAqZGlybmFtZSwgaW50IGkgKQoreworICAgIGNvbnN0IGludCBvbGRfbWliaW5kZXhfbWF4ID0gX21pYmluZGV4X21heDsKKworICAgIERFQlVHTVNHVEwoKCJtaWJpbmRleCIsICJhZGQ6ICVzICglZClcbiIsIGRpcm5hbWUsIGkgKSk7CisgICAgaWYgKCBpID09IC0xICkKKyAgICAgICAgaSA9IF9taWJpbmRleCsrOworICAgIGlmICggaSA+PSBfbWliaW5kZXhfbWF4ICkgeworICAgICAgICAvKgorICAgICAgICAgKiBJZiB0aGUgaW5kZXggYXJyYXkgaXMgZnVsbCAob3Igbm9uLWV4aXN0ZW50KQorICAgICAgICAgKiAgIHRoZW4gZXhwYW5kIChvciBjcmVhdGUpIGl0CisgICAgICAgICAqLworICAgICAgICBfbWliaW5kZXhfbWF4ID0gaSArIDEwOworICAgICAgICBfbWliaW5kZXhlcyA9IHJlYWxsb2MoX21pYmluZGV4ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfbWliaW5kZXhfbWF4ICogc2l6ZW9mKF9taWJpbmRleGVzWzBdKSk7CisgICAgICAgIG5ldHNubXBfYXNzZXJ0KF9taWJpbmRleGVzKTsKKyAgICAgICAgbWVtc2V0KF9taWJpbmRleGVzICsgb2xkX21pYmluZGV4X21heCwgMCwKKyAgICAgICAgICAgICAgIChfbWliaW5kZXhfbWF4IC0gb2xkX21pYmluZGV4X21heCkgKiBzaXplb2YoX21pYmluZGV4ZXNbMF0pKTsKKyAgICB9CisKKyAgICBfbWliaW5kZXhlc1sgaSBdID0gc3RyZHVwKCBkaXJuYW1lICk7CisgICAgaWYgKCBpID49IF9taWJpbmRleCApCisgICAgICAgIF9taWJpbmRleCA9IGkrMTsKKworICAgIERFQlVHTVNHVEwoKCJtaWJpbmRleCIsICJhZGQ6ICVkLyVkLyVkXG4iLCBpLCBfbWliaW5kZXgsIF9taWJpbmRleF9tYXggKSk7CisgICAgcmV0dXJuIGk7Cit9CisgICAgCitGSUxFICoKK25ldHNubXBfbWliaW5kZXhfbmV3KCBjb25zdCBjaGFyICpkaXJuYW1lICkKK3sKKyAgICBGSUxFICpmcDsKKyAgICBjaGFyICB0bXBidWZbMzAwXTsKKyAgICBjaGFyICpjcDsKKyAgICBpbnQgICBpOworCisgICAgY3AgPSBuZXRzbm1wX21pYmluZGV4X2xvb2t1cCggZGlybmFtZSApOworICAgIGlmICghY3ApIHsKKyAgICAgICAgaSAgPSBfbWliaW5kZXhfYWRkKCBkaXJuYW1lLCAtMSApOworICAgICAgICBzbnByaW50ZiggdG1wYnVmLCBzaXplb2YodG1wYnVmKSwgIiVzL21pYl9pbmRleGVzLyVkIiwKKyAgICAgICAgICAgICAgICAgIGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpLCBpICk7CisgICAgICAgIHRtcGJ1ZltzaXplb2YodG1wYnVmKS0xXSA9IDA7CisgICAgICAgIGNwID0gdG1wYnVmOworICAgIH0KKyAgICBERUJVR01TR1RMKCgibWliaW5kZXgiLCAibmV3OiAlcyAoJXMpXG4iLCBkaXJuYW1lLCBjcCApKTsKKyAgICBmcCA9IGZvcGVuKCBjcCwgInciICk7CisgICAgaWYgKGZwKQorICAgICAgICBmcHJpbnRmKCBmcCwgIkRJUiAlc1xuIiwgZGlybmFtZSApOworICAgIHJldHVybiBmcDsKK30KKworCiAvKioKICAqIFVubG9hZHMgYWxsIG1pYnMuCiAgKi8KQEAgLTI3NDAsNiArMjg5NCwxNSBAQAogICAgIH0KICAgICB0cmVlX2hlYWQgPSBOVUxMOwogICAgIE1pYiA9IE5VTEw7CisgICAgaWYgKF9taWJpbmRleGVzKSB7CisgICAgICAgIGludCBpOworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgX21pYmluZGV4OyArK2kpCisgICAgICAgICAgICBTTk1QX0ZSRUUoX21pYmluZGV4ZXNbaV0pOworICAgICAgICBmcmVlKF9taWJpbmRleGVzKTsKKyAgICAgICAgX21pYmluZGV4ID0gMDsKKyAgICAgICAgX21pYmluZGV4X21heCA9IDA7CisgICAgICAgIF9taWJpbmRleGVzID0gTlVMTDsKKyAgICB9CiAgICAgaWYgKFByZWZpeCAhPSBOVUxMICYmIFByZWZpeCAhPSAmU3RhbmRhcmRfUHJlZml4WzBdKQogICAgICAgICBTTk1QX0ZSRUUoUHJlZml4KTsKICAgICBpZiAoUHJlZml4KQpAQCAtMzI4NCw3ICszNDQ3LDcgQEAKICAgICAgICAgICogSGFuZGxlIHJhcmUgY2FzZSB3aGVyZSB0cmVlIGlzIGVtcHR5LiAgCiAgICAgICAgICAqLwogICAgICAgICByZXR1cm4gc3ByaW50X3JlYWxsb2NfYnlfdHlwZShidWYsIGJ1Zl9sZW4sIG91dF9sZW4sIGFsbG93X3JlYWxsb2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlLCAwLCAwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUsIE5VTEwsIE5VTEwsIE5VTEwpOwogICAgIH0KIH0KIApAQCAtMzU0MCw4ICszNzAzLDggQEAKIAogICAgIGlmICh2YXItPm5hbWVfbGVuZ3RoID4gTUFYX09JRF9MRU4pIHsKICAgICAgICAgREVCVUdNU0dUTCgoImJ1aWxkX29pZF9zZWdtZW50IiwKLSAgICAgICAgICAgICAgICAgICAgIlNvbWV0aGluZyB0ZXJyaWJseSB3cm9uZywgbmFtZWxlbiA9ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICB2YXItPm5hbWVfbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgICJTb21ldGhpbmcgdGVycmlibHkgd3JvbmcsIG5hbWVsZW4gPSAlbHVcbiIsCisgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXZhci0+bmFtZV9sZW5ndGgpKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIH0KIApAQCAtMzY2NSw3ICszODI4LDcgQEAKICAgICAgICAgICAgICAgICBzbm1wX3NldF92YXJfdmFsdWUodmFyLCAodV9jaGFyICopIG9pZExlbiwgc2l6ZW9mKGxvbmcpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJwYXJzZV9vaWRfaW5kZXhlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVkXG4iLCB2YXItPnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAiUGFyc2VkIGludCglZCk6ICVsZFxuIiwgdmFyLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgKnZhci0+dmFsLmludGVnZXIpKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC0zNjc2LDcgKzM4MzksNyBAQAogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IDQgJiYgaSA8ICpvaWRMZW47ICsraSkgewogICAgICAgICAgICAgICAgIGlmIChvaWRJbmRleFtpXSA+IDI1NSkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2Vfb2lkX2luZGV4ZXMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBvaWQgaW4gaW5kZXg6ICVkXG4iLCBvaWRJbmRleFswXSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaWxsZWdhbCBvaWQgaW4gaW5kZXg6ICVsZFxuIiwgb2lkSW5kZXhbMF0pKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsgIC8qIHN1Yi1pZGVudGlmaWVyIHRvbyBsYXJnZSAqLwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHVpdG1wID0gdWl0bXAgKyAob2lkSW5kZXhbaV0gPDwgKDgqKDMtaSkpKTsKQEAgLTU3ODUsNyArNTk0OCw3IEBACiAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgcmVnaXN0ZXIgc3RydWN0IHRyZWUgKm50cDsKIAotICAgICAgICB0cCA9IDA7CisgICAgICAgIHRwID0gTlVMTDsKICAgICAgICAgZm9yIChudHAgPSB0cmVlLT5jaGlsZF9saXN0OyBudHA7IG50cCA9IG50cC0+bmV4dF9wZWVyKSB7CiAgICAgICAgICAgICBpZiAobnRwLT5yZXBvcnRlZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvcGFyc2UuYyBiL3NubXBsaWIvcGFyc2UuYwppbmRleCA2NzgxOWJmLi5iYTRlODRjIDEwMDY0NAotLS0gYS9zbm1wbGliL3BhcnNlLmMKKysrIGIvc25tcGxpYi9wYXJzZS5jCkBAIC0xMTUsNiArMTE1LDMzIEBACiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX2FwaS5oPgogCiAvKgorICogQSBsaW5rZWQgbGlzdCBvZiBub2Rlcy4KKyAqLworc3RydWN0IG5vZGUgeworICAgIHN0cnVjdCBub2RlICAgICpuZXh0OworICAgIGNoYXIgICAgICAgICAgICpsYWJlbDsgIC8qIFRoaXMgbm9kZSdzICh1bmlxdWUpIHRleHR1YWwgbmFtZSAqLworICAgIHVfbG9uZyAgICAgICAgICBzdWJpZDsgIC8qIFRoaXMgbm9kZSdzIGludGVnZXIgc3ViaWRlbnRpZmllciAqLworICAgIGludCAgICAgICAgICAgICBtb2RpZDsgIC8qIFRoZSBtb2R1bGUgY29udGFpbmluZyB0aGlzIG5vZGUgKi8KKyAgICBjaGFyICAgICAgICAgICAqcGFyZW50OyAvKiBUaGUgcGFyZW50J3MgdGV4dHVhbCBuYW1lICovCisgICAgaW50ICAgICAgICAgICAgIHRjX2luZGV4OyAvKiBpbmRleCBpbnRvIHRjbGlzdCAoLTEgaWYgTkEpICovCisgICAgaW50ICAgICAgICAgICAgIHR5cGU7ICAgLyogVGhlIHR5cGUgb2Ygb2JqZWN0IHRoaXMgcmVwcmVzZW50cyAqLworICAgIGludCAgICAgICAgICAgICBhY2Nlc3M7CisgICAgaW50ICAgICAgICAgICAgIHN0YXR1czsKKyAgICBzdHJ1Y3QgZW51bV9saXN0ICplbnVtczsgLyogKG9wdGlvbmFsKSBsaXN0IG9mIGVudW1lcmF0ZWQgaW50ZWdlcnMgKi8KKyAgICBzdHJ1Y3QgcmFuZ2VfbGlzdCAqcmFuZ2VzOworICAgIHN0cnVjdCBpbmRleF9saXN0ICppbmRleGVzOworICAgIGNoYXIgICAgICAgICAgICphdWdtZW50czsKKyAgICBzdHJ1Y3QgdmFyYmluZF9saXN0ICp2YXJiaW5kczsKKyAgICBjaGFyICAgICAgICAgICAqaGludDsKKyAgICBjaGFyICAgICAgICAgICAqdW5pdHM7CisgICAgY2hhciAgICAgICAgICAgKmRlc2NyaXB0aW9uOyAvKiBkZXNjcmlwdGlvbiAoYSBxdW90ZWQgc3RyaW5nKSAqLworICAgIGNoYXIgICAgICAgICAgICpyZWZlcmVuY2U7IC8qIHJlZmVyZW5jZXMgKGEgcXVvdGVkIHN0cmluZykgKi8KKyAgICBjaGFyICAgICAgICAgICAqZGVmYXVsdFZhbHVlOworICAgIGNoYXIgICAgICAgICAgICpmaWxlbmFtZTsKKyAgICBpbnQgICAgICAgICAgICAgbGluZW5vOworfTsKKworLyoKICAqIFRoaXMgaXMgb25lIGVsZW1lbnQgb2YgYW4gb2JqZWN0IGlkZW50aWZpZXIgd2l0aCBlaXRoZXIgYW4gaW50ZWdlcgogICogc3ViaWRlbnRpZmllciwgb3IgYSB0ZXh0dWFsIHN0cmluZyBsYWJlbCwgb3IgYm90aC4KICAqIFRoZSBzdWJpZCBpcyAtMSBpZiBub3QgcHJlc2VudCwgYW5kIGxhYmVsIGlzIE5VTEwgaWYgbm90IHByZXNlbnQuCkBAIC01MjMsOCArNTUwLDggQEAKIHN0YXRpYyBzdHJ1Y3QgdHJlZSAqdGJ1Y2tldHNbTkhBU0hTSVpFXTsKIHN0YXRpYyBzdHJ1Y3QgbW9kdWxlICptb2R1bGVfaGVhZCA9IE5VTEw7CiAKLXN0cnVjdCBub2RlICAgICpvcnBoYW5fbm9kZXMgPSBOVUxMOwotc3RydWN0IHRyZWUgICAgKnRyZWVfaGVhZCA9IE5VTEw7CitzdGF0aWMgc3RydWN0IG5vZGUgKm9ycGhhbl9ub2RlcyA9IE5VTEw7CitzdHJ1Y3QgdHJlZSAgICAgICAgKnRyZWVfaGVhZCA9IE5VTEw7CiAKICNkZWZpbmUJTlVNQkVSX09GX1JPT1RfTk9ERVMJMwogc3RhdGljIHN0cnVjdCBtb2R1bGVfaW1wb3J0IHJvb3RfaW1wb3J0c1tOVU1CRVJfT0ZfUk9PVF9OT0RFU107CkBAIC01MzIsNyArNTU5LDcgQEAKIHN0YXRpYyBpbnQgICAgICBjdXJyZW50X21vZHVsZSA9IDA7CiBzdGF0aWMgaW50ICAgICAgbWF4X21vZHVsZSA9IDA7CiBzdGF0aWMgaW50ICAgICAgZmlyc3RfZXJyX21vZHVsZSA9IDE7Ci1zdGF0aWMgY2hhciAgICAqbGFzdF9lcnJfbW9kdWxlID0gMDsgICAgLyogbm8gcmVwZWF0cyBvbiAiQ2Fubm90IGZpbmQgbW9kdWxlLi4uIiAqLworc3RhdGljIGNoYXIgICAgKmxhc3RfZXJyX21vZHVsZSA9IE5VTEw7IC8qIG5vIHJlcGVhdHMgb24gIkNhbm5vdCBmaW5kIG1vZHVsZS4uLiIgKi8KIAogc3RhdGljIHZvaWQgICAgIHRyZWVfZnJvbV9ub2RlKHN0cnVjdCB0cmVlICp0cCwgc3RydWN0IG5vZGUgKm5wKTsKIHN0YXRpYyB2b2lkICAgICBkb19zdWJ0cmVlKHN0cnVjdCB0cmVlICosIHN0cnVjdCBub2RlICoqKTsKQEAgLTcyNyw3ICs3NTQsNyBAQAogICAgICAqLwogfQogCi0jaWZuZGVmIE5FVFNOTVBfQ0xFQU5fTkFNRVNQQUNFCisjaWZuZGVmIE5FVFNOTVBfTk9fTEVHQUNZX0RFRklOSVRJT05TCiB2b2lkCiBpbml0X21pYl9pbnRlcm5hbHModm9pZCkKIHsKQEAgLTk1MSw3ICs5NzgsNiBAQAogc3RhdGljIHZvaWQKIHByaW50X25vZGVzKEZJTEUgKiBmcCwgc3RydWN0IG5vZGUgKnJvb3QpCiB7Ci0gICAgZXh0ZXJuIHZvaWQgICAgIHhtYWxsb2Nfc3RhdHMoRklMRSAqKTsKICAgICBzdHJ1Y3QgZW51bV9saXN0ICplcDsKICAgICBzdHJ1Y3QgaW5kZXhfbGlzdCAqaXA7CiAgICAgc3RydWN0IHJhbmdlX2xpc3QgKnJwOwpAQCAtMTA1Niw3ICsxMDgyLDcgQEAKIHN0YXRpYyBpbnQgICAgICB0cmFuc2xhdGlvbl90YWJsZVsyNTZdOwogCiBzdGF0aWMgdm9pZAotYnVpbGRfdHJhbnNsYXRpb25fdGFibGUoKQorYnVpbGRfdHJhbnNsYXRpb25fdGFibGUodm9pZCkKIHsKICAgICBpbnQgICAgICAgICAgICAgY291bnQ7CiAKQEAgLTExNDIsNyArMTE2OCw3IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1pbml0X3RyZWVfcm9vdHMoKQoraW5pdF90cmVlX3Jvb3RzKHZvaWQpCiB7CiAgICAgc3RydWN0IHRyZWUgICAgKnRwLCAqbGFzdHRwOwogICAgIGludCAgICAgICAgICAgICBiYXNlX21vZGlkOwpAQCAtMjk2NSw3ICsyOTkxLDYgQEAKICAgICBzdHJjcHkobnAtPnBhcmVudCwgbnAtPm5leHQtPnBhcmVudCk7CiAgICAgc3RyY2F0KG5wLT5wYXJlbnQsICIjIik7CiAgICAgbnAtPm5leHQtPmxhYmVsID0gc3RyZHVwKG5wLT5wYXJlbnQpOwotICAgIG5wLT50eXBlID0gVFJBUFRZUEU7CiAgICAgcmV0dXJuIG5wOwogfQogCkBAIC0zOTM4LDcgKzM5NjMsNyBAQAogICAgICAgICB9CiB9CiAKLSNpZm5kZWYgTkVUU05NUF9DTEVBTl9OQU1FU1BBQ0UKKyNpZm5kZWYgTkVUU05NUF9OT19MRUdBQ1lfREVGSU5JVElPTlMKIHN0cnVjdCB0cmVlICAgICoKIHJlYWRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC00MDM5LDcgKzQwNjQsNyBAQAogICAgIH0KIH0KIAotI2lmbmRlZiBORVRTTk1QX0NMRUFOX05BTUVTUEFDRQorI2lmbmRlZiBORVRTTk1QX05PX0xFR0FDWV9ERUZJTklUSU9OUwogaW50CiB1bmxvYWRfbW9kdWxlKGNvbnN0IGNoYXIgKm5hbWUpCiB7CkBAIC00MDczLDcgKzQwOTgsNyBAQAogICogQ2xlYXIgbW9kdWxlIG1hcCwgdHJlZSBub2RlcywgdGV4dHVhbCBjb252ZW50aW9uIHRhYmxlLgogICovCiB2b2lkCi11bmxvYWRfYWxsX21pYnMoKQordW5sb2FkX2FsbF9taWJzKHZvaWQpCiB7CiAgICAgc3RydWN0IG1vZHVsZSAgKm1wOwogICAgIHN0cnVjdCBtb2R1bGVfY29tcGF0YWJpbGl0eSAqbWNwOwpAQCAtNDE5Miw3ICs0MjE3LDcgQEAKIAogCiBzdGF0aWMgdm9pZAotc2Nhbl9vYmpsaXN0KHN0cnVjdCBub2RlICpyb290LCBzdHJ1Y3Qgb2JqZ3JvdXAgKmxpc3QsIGNvbnN0IGNoYXIgKmVycm9yKQorc2Nhbl9vYmpsaXN0KHN0cnVjdCBub2RlICpyb290LCBzdHJ1Y3QgbW9kdWxlICptcCwgc3RydWN0IG9iamdyb3VwICpsaXN0LCBjb25zdCBjaGFyICplcnJvcikKIHsKICAgICBpbnQgICAgICAgICAgICAgb0xpbmUgPSBtaWJMaW5lOwogCkBAIC00MjA3LDggKzQyMzIsMTYgQEAKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgaWYgKCFucCkgewotICAgICAgICAgICAgbWliTGluZSA9IGdwLT5saW5lOwotICAgICAgICAgICAgcHJpbnRfZXJyb3IoZXJyb3IsIGdwLT5uYW1lLCBRVU9URVNUUklORyk7CisJICAgIGludCBpOworCSAgICBzdHJ1Y3QgbW9kdWxlX2ltcG9ydCAqbWlwOworCSAgICAvKiBpZiBub3QgbG9jYWwsIGNoZWNrIGlmIGl0IHdhcyBJTVBPUlRlZCAqLworCSAgICBmb3IgKGkgPSAwLCBtaXAgPSBtcC0+aW1wb3J0czsgaSA8IG1wLT5ub19pbXBvcnRzOyBpKyssIG1pcCsrKQorCQlpZiAoc3RyY21wKG1pcC0+bGFiZWwsIGdwLT5uYW1lKSA9PSAwKQorCQkgICAgYnJlYWs7CisJICAgIGlmIChpID09IG1wLT5ub19pbXBvcnRzKSB7CisJCW1pYkxpbmUgPSBncC0+bGluZTsKKwkJcHJpbnRfZXJyb3IoZXJyb3IsIGdwLT5uYW1lLCBRVU9URVNUUklORyk7CisJICAgIH0KICAgICAgICAgfQogICAgICAgICBmcmVlKGdwLT5uYW1lKTsKICAgICAgICAgZnJlZShncCk7CkBAIC00MjIzLDYgKzQyNTYsOSBAQAogc3RhdGljIHN0cnVjdCBub2RlICoKIHBhcnNlKEZJTEUgKiBmcCwgc3RydWN0IG5vZGUgKnJvb3QpCiB7CisjaWZkZWYgVEVTVAorICAgIGV4dGVybiB2b2lkICAgICB4bWFsbG9jX3N0YXRzKEZJTEUgKik7CisjZW5kaWYKICAgICBjaGFyICAgICAgICAgICAgdG9rZW5bTUFYVE9LRU5dOwogICAgIGNoYXIgICAgICAgICAgICBuYW1lW01BWFRPS0VOKzFdOwogICAgIGludCAgICAgICAgICAgICB0eXBlID0gTEFCRUw7CkBAIC00MjM5LDcgKzQyNzUsNyBAQAogCiAgICAgaWYgKGxhc3RfZXJyX21vZHVsZSkKICAgICAgICAgZnJlZShsYXN0X2Vycl9tb2R1bGUpOwotICAgIGxhc3RfZXJyX21vZHVsZSA9IDA7CisgICAgbGFzdF9lcnJfbW9kdWxlID0gTlVMTDsKIAogICAgIG5wID0gcm9vdDsKICAgICBpZiAobnAgIT0gTlVMTCkgewpAQCAtNDI2NywxNSArNDMwMywxNSBAQAogICAgICAgICAgICAgICAgIHByaW50ZigiXG5Ob2RlcyBmb3IgTW9kdWxlICVzOlxuIiwgbmFtZSk7CiAgICAgICAgICAgICAgICAgcHJpbnRfbm9kZXMoc3Rkb3V0LCByb290KTsKICNlbmRpZgotICAgICAgICAgICAgICAgIHNjYW5fb2JqbGlzdChyb290LCBvYmpncm91cHMsICJVbmRlZmluZWQgT0JKRUNULUdST1VQIik7Ci0gICAgICAgICAgICAgICAgc2Nhbl9vYmpsaXN0KHJvb3QsIG9iamVjdHMsICJVbmRlZmluZWQgT0JKRUNUIik7Ci0gICAgICAgICAgICAgICAgc2Nhbl9vYmpsaXN0KHJvb3QsIG5vdGlmcywgIlVuZGVmaW5lZCBOT1RJRklDQVRJT04iKTsKLSAgICAgICAgICAgICAgICBvYmpncm91cHMgPSBvbGRncm91cHM7Ci0gICAgICAgICAgICAgICAgb2JqZWN0cyA9IG9sZG9iamVjdHM7Ci0gICAgICAgICAgICAgICAgbm90aWZzID0gb2xkbm90aWZzOwogICAgICAgICAgICAgICAgIGZvciAobXAgPSBtb2R1bGVfaGVhZDsgbXA7IG1wID0gbXAtPm5leHQpCiAgICAgICAgICAgICAgICAgICAgIGlmIChtcC0+bW9kaWQgPT0gY3VycmVudF9tb2R1bGUpCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzY2FuX29iamxpc3Qocm9vdCwgbXAsIG9iamdyb3VwcywgIlVuZGVmaW5lZCBPQkpFQ1QtR1JPVVAiKTsKKyAgICAgICAgICAgICAgICBzY2FuX29iamxpc3Qocm9vdCwgbXAsIG9iamVjdHMsICJVbmRlZmluZWQgT0JKRUNUIik7CisgICAgICAgICAgICAgICAgc2Nhbl9vYmpsaXN0KHJvb3QsIG1wLCBub3RpZnMsICJVbmRlZmluZWQgTk9USUZJQ0FUSU9OIik7CisgICAgICAgICAgICAgICAgb2JqZ3JvdXBzID0gb2xkZ3JvdXBzOworICAgICAgICAgICAgICAgIG9iamVjdHMgPSBvbGRvYmplY3RzOworICAgICAgICAgICAgICAgIG5vdGlmcyA9IG9sZG5vdGlmczsKICAgICAgICAgICAgICAgICBkb19saW5rdXAobXAsIHJvb3QpOwogICAgICAgICAgICAgICAgIG5wID0gcm9vdCA9IE5VTEw7CiAgICAgICAgICAgICB9CkBAIC00MjgzLDcgKzQzMTksNyBAQAogI2lmZGVmIFRFU1QKICAgICAgICAgICAgIGlmIChuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKIAkJCQkgICBORVRTTk1QX0RTX0xJQl9NSUJfV0FSTklOR1MpKSB7Ci0gICAgICAgICAgICAgICAgeG1hbGxvY19zdGF0cyhzdGRlcnIpOworICAgICAgICAgICAgICAgIC8qIHhtYWxsb2Nfc3RhdHMoc3RkZXJyKTsgKi8KIAkgICAgfQogI2VuZGlmCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQ1MjAsNiArNDU1Niw3IEBACiAgICAgcmVnaXN0ZXIgaW50ICAgIGhhc2ggPSAwOwogICAgIHJlZ2lzdGVyIHN0cnVjdCB0b2sgKnRwOwogICAgIGludCAgICAgICAgICAgICB0b29fbG9uZyA9IDA7CisgICAgZW51bSB7IGJkaWdpdHMsIHhkaWdpdHMsIG90aGVyIH0gc2VlblN5bWJvbHM7CiAKICAgICAvKgogICAgICAqIHNraXAgYWxsIHdoaXRlIHNwYWNlIApAQCAtNDUzOCwzOSArNDU3NSw2MCBAQAogICAgIGNhc2UgJyInOgogICAgICAgICByZXR1cm4gcGFyc2VRdW90ZVN0cmluZyhmcCwgdG9rZW4sIG1heHRsZW4pOwogICAgIGNhc2UgJ1wnJzogICAgICAgICAgICAgICAgIC8qIGJpbmFyeSBvciBoZXggY29uc3RhbnQgKi8KLSAgICAgICAgd2hpbGUgKChjaCA9IGdldGMoZnApKSAhPSBFT0YgJiYgY2ggIT0gJ1wnJwotICAgICAgICAgICAgICAgJiYgY3AgLSB0b2tlbiA8IG1heHRsZW4gLSAyKQotICAgICAgICAgICAgKmNwKysgPSBjaDsKKyAgICAgICAgc2VlblN5bWJvbHMgPSBiZGlnaXRzOworICAgICAgICB3aGlsZSAoKGNoID0gZ2V0YyhmcCkpICE9IEVPRiAmJiBjaCAhPSAnXCcnKSB7CisgICAgICAgICAgICBzd2l0Y2ggKHNlZW5TeW1ib2xzKSB7CisgICAgICAgICAgICBjYXNlIGJkaWdpdHM6CisgICAgICAgICAgICAgICAgaWYgKGNoID09ICcwJyB8fCBjaCA9PSAnMScpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIHNlZW5TeW1ib2xzID0geGRpZ2l0czsKKyAgICAgICAgICAgIGNhc2UgeGRpZ2l0czoKKyAgICAgICAgICAgICAgICBpZiAoaXN4ZGlnaXQoY2gpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBzZWVuU3ltYm9scyA9IG90aGVyOworICAgICAgICAgICAgY2FzZSBvdGhlcjoKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjcCAtIHRva2VuIDwgbWF4dGxlbiAtIDIpCisgICAgICAgICAgICAgICAgKmNwKysgPSBjaDsKKyAgICAgICAgfQogICAgICAgICBpZiAoY2ggPT0gJ1wnJykgewogICAgICAgICAgICAgdW5zaWduZWQgbG9uZyAgIHZhbCA9IDA7Ci0gICAgICAgICAgICAqY3ArKyA9ICdcJyc7Ci0gICAgICAgICAgICAqY3ArKyA9IGNoID0gZ2V0YyhmcCk7Ci0gICAgICAgICAgICAqY3AgPSAwOwotICAgICAgICAgICAgY3AgPSB0b2tlbiArIDE7CisgICAgICAgICAgICBjaGFyICAgICAgICAgICAqcnVuID0gdG9rZW4gKyAxOworICAgICAgICAgICAgY2ggPSBnZXRjKGZwKTsKICAgICAgICAgICAgIHN3aXRjaCAoY2gpIHsKICAgICAgICAgICAgIGNhc2UgRU9GOgogICAgICAgICAgICAgICAgIHJldHVybiBFTkRPRkZJTEU7CiAgICAgICAgICAgICBjYXNlICdiJzoKICAgICAgICAgICAgIGNhc2UgJ0InOgotICAgICAgICAgICAgICAgIHdoaWxlICgoY2ggPSAqY3ArKykgIT0gJ1wnJykKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNoICE9ICcwJyAmJiBjaCAhPSAnMScpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTEFCRUw7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbCAqIDIgKyBjaCAtICcwJzsKKyAgICAgICAgICAgICAgICBpZiAoc2VlblN5bWJvbHMgPiBiZGlnaXRzKSB7CisgICAgICAgICAgICAgICAgICAgICpjcCsrID0gJ1wnJzsKKyAgICAgICAgICAgICAgICAgICAgKmNwID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIExBQkVMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB3aGlsZSAocnVuICE9IGNwKQorICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwgKiAyICsgKnJ1bisrIC0gJzAnOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSAnaCc6CiAgICAgICAgICAgICBjYXNlICdIJzoKLSAgICAgICAgICAgICAgICB3aGlsZSAoKGNoID0gKmNwKyspICE9ICdcJycpCisgICAgICAgICAgICAgICAgaWYgKHNlZW5TeW1ib2xzID4geGRpZ2l0cykgeworICAgICAgICAgICAgICAgICAgICAqY3ArKyA9ICdcJyc7CisgICAgICAgICAgICAgICAgICAgICpjcCA9IDA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBMQUJFTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgd2hpbGUgKHJ1biAhPSBjcCkgeworICAgICAgICAgICAgICAgICAgICBjaCA9ICpydW4rKzsKICAgICAgICAgICAgICAgICAgICAgaWYgKCcwJyA8PSBjaCAmJiBjaCA8PSAnOScpCiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwgKiAxNiArIGNoIC0gJzAnOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgnYScgPD0gY2ggJiYgY2ggPD0gJ2YnKQogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsICogMTYgKyBjaCAtICdhJyArIDEwOwogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICgnQScgPD0gY2ggJiYgY2ggPD0gJ0YnKQogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsICogMTYgKyBjaCAtICdBJyArIDEwOwotICAgICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gTEFCRUw7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAqY3ArKyA9ICdcJyc7CisgICAgICAgICAgICAgICAgKmNwID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gTEFCRUw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzcHJpbnRmKHRva2VuLCAiJWxkIiwgdmFsKTsKQEAgLTQ3NTUsMjYgKzQ4MTMsMjQgQEAKICAgICBpbnQgICAgICAgICAgICAgY291bnQgPSAwOwogICAgIGludCAgICAgICAgICAgICBmbmFtZV9sZW4gPSAwOwogI2lmICEoZGVmaW5lZChXSU4zMikgfHwgZGVmaW5lZChjeWd3aW4pKQotICAgIGNoYXIgICAgICAgICAgICB0b2tlbltNQVhUT0tFTl07CisgICAgY2hhciAgICAgICAgICAgKnRva2VuOwogICAgIGNoYXIgc3BhY2U7CiAgICAgY2hhciBuZXdsaW5lOwogICAgIHN0cnVjdCBzdGF0ICAgICBkaXJfc3RhdCwgaWR4X3N0YXQ7CiAgICAgY2hhciAgICAgICAgICAgIHRtcHN0cjFbMzAwXTsKLSAgICBpbnQgZW1wdHkgPSAxOwogI2VuZGlmCiAKICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJTY2FubmluZyBkaXJlY3RvcnkgJXNcbiIsIGRpcm5hbWUpKTsKICNpZiAhKGRlZmluZWQoV0lOMzIpIHx8IGRlZmluZWQoY3lnd2luKSkKLSAgICBzbnByaW50Zih0b2tlbiwgc2l6ZW9mKHRva2VuKSwgIiVzLyVzIiwgZGlybmFtZSwgIi5pbmRleCIpOwotICAgIHRva2VuWyBzaXplb2YodG9rZW4pLTEgXSA9IDA7Ci0gICAgaWYgKHN0YXQodG9rZW4sICZpZHhfc3RhdCkgPT0gMCAmJiBzdGF0KGRpcm5hbWUsICZkaXJfc3RhdCkgPT0gMCkgeworICAgIHRva2VuID0gbmV0c25tcF9taWJpbmRleF9sb29rdXAoIGRpcm5hbWUgKTsKKyAgICBpZiAodG9rZW4gJiYgc3RhdCh0b2tlbiwgJmlkeF9zdGF0KSA9PSAwICYmIHN0YXQoZGlybmFtZSwgJmRpcl9zdGF0KSA9PSAwKSB7CiAgICAgICAgIGlmIChkaXJfc3RhdC5zdF9tdGltZSA8IGlkeF9zdGF0LnN0X210aW1lKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJUaGUgaW5kZXggaXMgZ29vZFxuIikpOwogICAgICAgICAgICAgaWYgKChpcCA9IGZvcGVuKHRva2VuLCAiciIpKSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZmdldHModG1wc3RyLCBzaXplb2YodG1wc3RyKSwgaXApOyAvKiBTa2lwIGRpciBsaW5lICovCiAgICAgICAgICAgICAgICAgd2hpbGUgKGZzY2FuZihpcCwgIiUxMjdzJWMlMjk5cyVjIiwgdG9rZW4sICZzcGFjZSwgdG1wc3RyLAogCQkgICAgJm5ld2xpbmUpID09IDQpIHsKIAotICAgICAgICAgICAgICAgICAgICBlbXB0eSA9IDA7CiAJCSAgICAvKgogCQkgICAgICogSWYgYW4gb3ZlcmZsb3cgb2YgdGhlIHRva2VuIG9yIHRtcHN0ciBidWZmZXJzIGhhcyBiZWVuCiAJCSAgICAgKiBmb3VuZCBsb2cgYSBtZXNzYWdlIGFuZCBicmVhayBvdXQgb2YgdGhlIHdoaWxlIGxvb3AsCkBAIC00Nzk0LDEwICs0ODUwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgZmNsb3NlKGlwKTsKLSAgICAgICAgICAgICAgICBpZiAoICFlbXB0eSApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGNvdW50OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJFbXB0eSBNSUIgaW5kZXhcbiIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7CiAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicGFyc2UtbWlicyIsICJDYW4ndCByZWFkIGluZGV4XG4iKSk7CiAgICAgICAgIH0gZWxzZQpAQCAtNDgwNyw5ICs0ODYwLDcgQEAKICNlbmRpZgogCiAgICAgaWYgKChkaXIgPSBvcGVuZGlyKGRpcm5hbWUpKSkgewotICAgICAgICBzbnByaW50Zih0bXBzdHIsIHNpemVvZih0bXBzdHIpLCAiJXMvLmluZGV4IiwgZGlybmFtZSk7Ci0gICAgICAgIHRtcHN0clsgc2l6ZW9mKHRtcHN0ciktMSBdID0gMDsKLSAgICAgICAgaXAgPSBmb3Blbih0bXBzdHIsICJ3Iik7CisgICAgICAgIGlwID0gbmV0c25tcF9taWJpbmRleF9uZXcoIGRpcm5hbWUgKTsKICAgICAgICAgd2hpbGUgKChmaWxlID0gcmVhZGRpcihkaXIpKSkgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIE9ubHkgcGFyc2UgZmlsZSBuYW1lcyB0aGF0IGRvbid0IGJlZ2luIHdpdGggYSAnLicgCkBAIC00ODgxLDcgKzQ5MzIsNyBAQAogCiAKIHN0cnVjdCB0cmVlICAgICoKLXJlYWRfYWxsX21pYnMoKQorcmVhZF9hbGxfbWlicyh2b2lkKQogewogICAgIHN0cnVjdCBtb2R1bGUgICptcDsKIApAQCAtNDg5NSw3ICs0OTQ2LDcgQEAKIAogCiAjaWZkZWYgVEVTVAotbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQoraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIHsKICAgICBpbnQgICAgICAgICAgICAgaTsKICAgICBzdHJ1Y3QgdHJlZSAgICAqdHA7CkBAIC01MjEwLDkgKzUyNjEsNyBAQAogICAgICAgICBpZiAobXAtPm1vZGlkID09IG1pZCkKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KLSAgICBpZiAobXAgIT0gMCkKLSAgICAgICAgcmV0dXJuIG1wOwotICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiBtcDsKIH0KIAogCmRpZmYgLS1naXQgYS9zbm1wbGliL3JlYWRfY29uZmlnLmMgYi9zbm1wbGliL3JlYWRfY29uZmlnLmMKaW5kZXggNzk1MDMzYi4uNjA3YTZhNSAxMDA2NDQKLS0tIGEvc25tcGxpYi9yZWFkX2NvbmZpZy5jCisrKyBiL3NubXBsaWIvcmVhZF9jb25maWcuYwpAQCAtNDAwLDcgKzQwMCw3IEBACiB9CiAKIHZvaWQKLXVucmVnaXN0ZXJfYWxsX2NvbmZpZ19oYW5kbGVycygpCit1bnJlZ2lzdGVyX2FsbF9jb25maWdfaGFuZGxlcnModm9pZCkKIHsKICAgICBzdHJ1Y3QgY29uZmlnX2ZpbGVzICpjdG1wLCAqc2F2ZTsKICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmx0bXA7CkBAIC00OTIsMTEgKzQ5MiwxMSBAQAogcnVuX2NvbmZpZ19oYW5kbGVyKHN0cnVjdCBjb25maWdfbGluZSAqbHB0ciwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqY3B0ciwgaW50IHdoZW4pCiB7Ci0gICAgY2hhciAgICAgICAgICAgIHRtcGJ1ZltTVFJJTkdNQVhdOwogICAgIGNoYXIgICAgICAgICAgICpjcDsKICAgICBscHRyID0gcmVhZF9jb25maWdfZmluZF9oYW5kbGVyKGxwdHIsIHRva2VuKTsKICAgICBpZiAobHB0ciAhPSBOVUxMKSB7CiAgICAgICAgIGlmICh3aGVuID09IEVJVEhFUl9DT05GSUcgfHwgbHB0ci0+Y29uZmlnX3RpbWUgPT0gd2hlbikgeworICAgICAgICAgICAgY2hhciB0bXBidWZbMV07CiAgICAgICAgICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWciLAogICAgICAgICAgICAgICAgICAgICAgICAgIkZvdW5kIGEgcGFyc2VyLiAgQ2FsbGluZyBpdDogJXMgLyAlc1xuIiwgdG9rZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICBjcHRyKSk7CkBAIC01MjAsOSArNTIwLDcgQEAKICAgICB9IGVsc2UgaWYgKHdoZW4gIT0gUFJFTUlCX0NPTkZJRyAmJiAKIAkgICAgICAgIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCAKIAkJCQkgICAgICAgTkVUU05NUF9EU19MSUJfTk9fVE9LRU5fV0FSTklOR1MpKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJVbmtub3duIHRva2VuOiAlcy4iLCB0b2tlbik7Ci0gICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgY29uZmlnX3B3YXJuKHRtcGJ1Zik7CisJbmV0c25tcF9jb25maWdfd2FybigiVW5rbm93biB0b2tlbjogJXMuIiwgdG9rZW4pOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQogICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7CkBAIC01NDMsNyArNTQxLDcgQEAKIGludAogc25tcF9jb25maWdfd2hlbihjaGFyICpsaW5lLCBpbnQgd2hlbikKIHsKLSAgICBjaGFyICAgICAgICAgICAqY3B0ciwgYnVmW1NUUklOR01BWF0sIHRtcGJ1ZltTVFJJTkdNQVhdOworICAgIGNoYXIgICAgICAgICAgICpjcHRyLCBidWZbU1RSSU5HTUFYXTsKICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmxwdHIgPSBOVUxMOwogICAgIHN0cnVjdCBjb25maWdfZmlsZXMgKmN0bXAgPSBjb25maWdfZmlsZXM7CiAgICAgY2hhciAgICAgICAgICAgKnN0OwpAQCAtNTU2LDI4ICs1NTQsMTkgQEAKICAgICBzdHJsY3B5KGJ1ZiwgbGluZSwgU1RSSU5HTUFYKTsKICAgICBjcHRyID0gc3RydG9rX3IoYnVmLCBTTk1QX0NPTkZJR19ERUxJTUVURVJTLCAmc3QpOwogICAgIGlmICghY3B0cikgewotICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLCAiV3JvbmcgZm9ybWF0OiAlcyIsIGxpbmUpOwotICAgICAgICB0bXBidWZbIHNpemVvZih0bXBidWYpLTEgXSA9ICdcMCc7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKyAgICAgICAgbmV0c25tcF9jb25maWdfd2FybigiV3JvbmcgZm9ybWF0OiAlcyIsIGxpbmUpOwogICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgfQogICAgIGlmIChjcHRyWzBdID09ICdbJykgewogICAgICAgICBpZiAoY3B0cltzdHJsZW4oY3B0cikgLSAxXSAhPSAnXScpIHsKLSAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICJubyBtYXRjaGluZyAnXScgZm9yIHR5cGUgJXMuIiwKLSAgICAgICAgICAgICAgICAgICAgY3B0ciArIDEpOwotICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigibm8gbWF0Y2hpbmcgJ10nIGZvciB0eXBlICVzLiIsIGNwdHIgKyAxKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKICAgICAgICAgfQogICAgICAgICBjcHRyW3N0cmxlbihjcHRyKSAtIDFdID0gJ1wwJzsKICAgICAgICAgbHB0ciA9IHJlYWRfY29uZmlnX2dldF9oYW5kbGVycyhjcHRyICsgMSk7CiAgICAgICAgIGlmIChscHRyID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1ZiwgIHNpemVvZih0bXBidWYpLAotICAgICAgICAgICAgICAgICAgICAgIk5vIGhhbmRsZXJzIHJlZ2VzdGVyZWQgZm9yIHR5cGUgJXMuIiwKLSAgICAgICAgICAgICAgICAgICAgY3B0ciArIDEpOwotICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCSAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiTm8gaGFuZGxlcnMgcmVnZXN0ZXJlZCBmb3IgdHlwZSAlcy4iLAorCQkJCSBjcHRyICsgMSk7CiAgICAgICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CiAgICAgICAgIH0KICAgICAgICAgY3B0ciA9IHN0cnRva19yKE5VTEwsIFNOTVBfQ09ORklHX0RFTElNRVRFUlMsICZzdCk7CkBAIC01OTEsOSArNTgwLDcgQEAKICAgICB9CiAgICAgaWYgKGxwdHIgPT0gTlVMTCAmJiBuZXRzbm1wX2RzX2dldF9ib29sZWFuKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkJCSAgTkVUU05NUF9EU19MSUJfTk9fVE9LRU5fV0FSTklOR1MpKSB7Ci0gICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICJVbmtub3duIHRva2VuOiAlcy4iLCBjcHRyKTsKLSAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICBjb25maWdfcHdhcm4odG1wYnVmKTsKKwluZXRzbm1wX2NvbmZpZ193YXJuKCJVbmtub3duIHRva2VuOiAlcy4iLCBjcHRyKTsKICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOwogICAgIH0KIApAQCAtNjMyLDggKzYxOSwxMCBAQAogICAgICAgICBtZW0gPSAmKCgqbWVtKS0+bmV4dCk7CiAKICAgICAqbWVtID0gU05NUF9NQUxMT0NfU1RSVUNUKHJlYWRfY29uZmlnX21lbW9yeSk7Ci0gICAgaWYgKGxpbmUpCi0gICAgICAgICgqbWVtKS0+bGluZSA9IHN0cmR1cChsaW5lKTsKKyAgICBpZiAoKm1lbSAhPSBOVUxMKSB7CisgICAgICAgIGlmIChsaW5lKQorICAgICAgICAgICAgKCptZW0pLT5saW5lID0gc3RyZHVwKGxpbmUpOworICAgIH0KIH0KIAogdm9pZApAQCAtNzE4LDcgKzcwNyw3IEBACiB7CiAKICAgICBGSUxFICAgICAgICAgICAqaWZpbGU7Ci0gICAgY2hhciAgICAgICAgICAgIGxpbmVbU1RSSU5HTUFYXSwgdG9rZW5bU1RSSU5HTUFYXSwgdG1wYnVmW1NUUklOR01BWF07CisgICAgY2hhciAgICAgICAgICAgIGxpbmVbU1RSSU5HTUFYXSwgdG9rZW5bU1RSSU5HTUFYXTsKICAgICBjaGFyICAgICAgICAgICAqY3B0cjsKICAgICBpbnQgICAgICAgICAgICAgaTsKICAgICBzdHJ1Y3QgY29uZmlnX2xpbmUgKmxwdHI7CkBAIC03NjYsMjEgKzc1NSwxNSBAQAogICAgICAgICAgICAgY3B0ciA9IGNvcHlfbndvcmQoY3B0ciwgdG9rZW4sIHNpemVvZih0b2tlbikpOwogICAgICAgICAgICAgaWYgKHRva2VuWzBdID09ICdbJykgewogICAgICAgICAgICAgICAgIGlmICh0b2tlbltzdHJsZW4odG9rZW4pIC0gMV0gIT0gJ10nKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIG1hdGNoaW5nICddJyBmb3IgdHlwZSAlcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0b2tlblsxXSk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCQkgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIm5vIG1hdGNoaW5nICddJyBmb3IgdHlwZSAlcy4iLAorCQkJCQkgJnRva2VuWzFdKTsKICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRva2VuW3N0cmxlbih0b2tlbikgLSAxXSA9ICdcMCc7CiAgICAgICAgICAgICAgICAgbHB0ciA9IHJlYWRfY29uZmlnX2dldF9oYW5kbGVycygmdG9rZW5bMV0pOwogICAgICAgICAgICAgICAgIGlmIChscHRyID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTm8gaGFuZGxlcnMgcmVnZXN0ZXJlZCBmb3IgdHlwZSAlcy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ0b2tlblsxXSk7Ci0gICAgICAgICAgICAgICAgICAgIHRtcGJ1Zlsgc2l6ZW9mKHRtcGJ1ZiktMSBdID0gMDsKLSAgICAgICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworCQkgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIk5vIGhhbmRsZXJzIHJlZ2VzdGVyZWQgZm9yIHR5cGUgJXMuIiwKKwkJCQkJICZ0b2tlblsxXSk7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWciLApAQCAtODAzLDEwICs3ODYsNyBAQAogICAgICAgICAgICAgICAgIGxwdHIgPSBsaW5lX2hhbmRsZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoY3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJCbGFuayBsaW5lIGZvbGxvd2luZyAlcyB0b2tlbi4iLCB0b2tlbik7Ci0gICAgICAgICAgICAgICAgdG1wYnVmWyBzaXplb2YodG1wYnVmKS0xIF0gPSAwOwotICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IodG1wYnVmKTsKKwkJbmV0c25tcF9jb25maWdfZXJyb3IoIkJsYW5rIGxpbmUgZm9sbG93aW5nICVzIHRva2VuLiIsIHRva2VuKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnIiwgIiVzOiVkIGV4YW1pbmluZzogJXNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVjb3VudCwgbGluZSkpOwpAQCAtODcxLDYgKzg1MSw5IEBACiAgICAgY2hhciAqb3B0aW9uYWxfY29uZmlnID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkJCSAgICAgICBORVRTTk1QX0RTX0xJQl9PUFRJT05BTENPTkZJRyk7CiAKKyAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfUFJFX1JFQURfQ09ORklHLCBOVUxMKTsKKwogICAgIERFQlVHTVNHVEwoKCJyZWFkX2NvbmZpZyIsICJyZWFkaW5nIG5vcm1hbCBjb25maWd1cmF0aW9uIHRva2Vuc1xuIikpOwogCiAgICAgaWYgKChOVUxMICE9IG9wdGlvbmFsX2NvbmZpZykgJiYgKCpvcHRpb25hbF9jb25maWcgPT0gJy0nKSkgewpAQCAtOTAwLDYgKzg4Myw5IEBACiAgICAgY2hhciAqb3B0aW9uYWxfY29uZmlnID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkJCSAgICAgICBORVRTTk1QX0RTX0xJQl9PUFRJT05BTENPTkZJRyk7CiAKKyAgICBzbm1wX2NhbGxfY2FsbGJhY2tzKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNOTVBfQ0FMTEJBQ0tfUFJFX1BSRU1JQl9SRUFEX0NPTkZJRywgTlVMTCk7CisKICAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWciLCAicmVhZGluZyBwcmVtaWIgY29uZmlndXJhdGlvbiB0b2tlbnNcbiIpKTsKIAogICAgIGlmICgoTlVMTCAhPSBvcHRpb25hbF9jb25maWcpICYmICgqb3B0aW9uYWxfY29uZmlnID09ICctJykpIHsKQEAgLTk0OCw3ICs5MzQsNyBAQAogICogV2UgYWx3YXlzIHJldHJpZXZlIGl0IG5ldywgc2luY2Ugd2UgaGF2ZSB0byBkbyBpdCBhbnl3YXkgaWYgaXQgaXMganVzdCBzZXQuCiAgKi8KIGNvbnN0IGNoYXIgICAgICoKLWdldF9jb25maWd1cmF0aW9uX2RpcmVjdG9yeSgpCitnZXRfY29uZmlndXJhdGlvbl9kaXJlY3Rvcnkodm9pZCkKIHsKICAgICBjaGFyICAgICAgICAgICAgZGVmYXVsdFBhdGhbU1BSSU5UX01BWF9MRU5dOwogICAgIGNoYXIgICAgICAgICAgICpob21lcGF0aDsKQEAgLTk5Niw3ICs5ODIsNyBAQAogICogV2UgYWx3YXlzIHJldHJpZXZlIGl0IG5ldywgc2luY2Ugd2UgaGF2ZSB0byBkbyBpdCBhbnl3YXkgaWYgaXQgaXMganVzdCBzZXQuCiAgKi8KIGNvbnN0IGNoYXIgICAgICoKLWdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpCitnZXRfcGVyc2lzdGVudF9kaXJlY3Rvcnkodm9pZCkKIHsKICAgICBpZiAoTlVMTCA9PSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKIAkJCQkgICAgICBORVRTTk1QX0RTX0xJQl9QRVJTSVNURU5UX0RJUikpIHsKQEAgLTEwMzYsNyArMTAyMiw3IEBACiAgKiBXZSBhbHdheXMgcmV0cmlldmUgaXQgbmV3LCBzaW5jZSB3ZSBoYXZlIHRvIGRvIGl0IGFueXdheSBpZiBpdCBpcyBqdXN0IHNldC4KICAqLwogY29uc3QgY2hhciAgICAgKgotZ2V0X3RlbXBfZmlsZV9wYXR0ZXJuKCkKK2dldF90ZW1wX2ZpbGVfcGF0dGVybih2b2lkKQogewogICAgIGlmIChOVUxMID09IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsIAogCQkJCSAgICAgIE5FVFNOTVBfRFNfTElCX1RFTVBfRklMRV9QQVRURVJOKSkgewpAQCAtMTQ2NSwxOSArMTQ1MSw1MiBAQAogICogY29uZmlnX3BlcnJvcjogcHJpbnRzIGEgd2FybmluZyBzdHJpbmcgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZSBhbmQKICAqIGxpbmUgbnVtYmVyIG9mIGEgLmNvbmYgZmlsZSBhbmQgaW5jcmVtZW50cyB0aGUgZXJyb3IgY291bnQuIAogICovCitzdGF0aWMgdm9pZAorY29uZmlnX3Zsb2coaW50IGxldmVsLCBjb25zdCBjaGFyICpsZXZlbG1zZywgY29uc3QgY2hhciAqc3RyLCB2YV9saXN0IGFyZ3MpCit7CisgICAgY2hhciB0bXBidWZbMjU2XTsKKyAgICBjaGFyKiBidWYgPSB0bXBidWY7CisgICAgaW50IGxlbiA9IHNucHJpbnRmKHRtcGJ1Ziwgc2l6ZW9mKHRtcGJ1ZiksICIlczogbGluZSAlZDogJXM6ICVzXG4iLAorCQkgICAgICAgY3VyZmlsZW5hbWUsIGxpbmVjb3VudCwgbGV2ZWxtc2csIHN0cik7CisgICAgaWYgKGxlbiA+PSBzaXplb2YodG1wYnVmKSkgeworCWJ1ZiA9IChjaGFyKiltYWxsb2MobGVuICsgMSk7CisJc3ByaW50ZihidWYsICIlczogbGluZSAlZDogJXM6ICVzXG4iLAorCQljdXJmaWxlbmFtZSwgbGluZWNvdW50LCBsZXZlbG1zZywgc3RyKTsKKyAgICB9CisgICAgc25tcF92bG9nKGxldmVsLCBidWYsIGFyZ3MpOworICAgIGlmIChidWYgIT0gdG1wYnVmKQorCWZyZWUoYnVmKTsKK30KKwordm9pZAorbmV0c25tcF9jb25maWdfZXJyb3IoY29uc3QgY2hhciAqc3RyLCAuLi4pCit7CisgICAgdmFfbGlzdCBhcmdzOworICAgIHZhX3N0YXJ0KGFyZ3MsIHN0cik7CisgICAgY29uZmlnX3Zsb2coTE9HX0VSUiwgIkVycm9yIiwgc3RyLCBhcmdzKTsKKyAgICB2YV9lbmQoYXJncyk7CisgICAgY29uZmlnX2Vycm9ycysrOworfQorCit2b2lkCituZXRzbm1wX2NvbmZpZ193YXJuKGNvbnN0IGNoYXIgKnN0ciwgLi4uKQoreworICAgIHZhX2xpc3QgYXJnczsKKyAgICB2YV9zdGFydChhcmdzLCBzdHIpOworICAgIGNvbmZpZ192bG9nKExPR19XQVJOSU5HLCAiV2FybmluZyIsIHN0ciwgYXJncyk7CisgICAgdmFfZW5kKGFyZ3MpOworfQorCiB2b2lkCiBjb25maWdfcGVycm9yKGNvbnN0IGNoYXIgKnN0cikKIHsKLSAgICBzbm1wX2xvZyhMT0dfRVJSLCAiJXM6IGxpbmUgJWQ6IEVycm9yOiAlc1xuIiwgY3VyZmlsZW5hbWUsIGxpbmVjb3VudCwKLSAgICAgICAgICAgICBzdHIpOwotICAgIGNvbmZpZ19lcnJvcnMrKzsKKyAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiJXMiLCBzdHIpOwogfQogCiB2b2lkCiBjb25maWdfcHdhcm4oY29uc3QgY2hhciAqc3RyKQogewotICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiJXM6IGxpbmUgJWQ6IFdhcm5pbmc6ICVzXG4iLCBjdXJmaWxlbmFtZSwKLSAgICAgICAgICAgICBsaW5lY291bnQsIHN0cik7CisgICAgbmV0c25tcF9jb25maWdfd2FybigiJXMiLCBzdHIpOwogfQogCiAvKgpAQCAtMTcwNiw4ICsxNzI1LDggQEAKICAgICAgICAgICAgICAqIGJhaWwgaWYgbm90IGVub3VnaCBzcGFjZS4KICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgaWYgKGlsZW4gPiAqbGVuKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsImJ1ZmZlciB0b28gc21hbGwgdG8gcmVhZCBvY3RldCBzdHJpbmcgKCVkIDwgJWQpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICpsZW4sIGlsZW4pOworICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCJidWZmZXIgdG9vIHNtYWxsIHRvIHJlYWQgb2N0ZXQgc3RyaW5nICglbHUgPCAlbHUpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKSpsZW4sICh1bnNpZ25lZCBsb25nKWlsZW4pOwogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJyZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ1ZmZlciB0b28gc21hbGwgKCVsdSA8ICVsdSkiLCAodW5zaWduZWQgbG9uZykqbGVuLCAodW5zaWduZWQgbG9uZylpbGVuKSk7CiAgICAgICAgICAgICAgICAgY3B0cjEgPSBza2lwX25vdF93aGl0ZShyZWFkZnJvbSk7CkBAIC0xOTcyLDcgKzE5OTEsNiBAQAogICAgICAgICByZXR1cm4gcmVhZGZyb207CiAKICAgICBjYXNlIEFTTl9DT1VOVEVSNjQ6Ci0gICAgewogICAgICAgICBpZiAoKmxlbiA8IHNpemVvZihVNjQpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICpsZW4gPSBzaXplb2YoVTY0KTsKQEAgLTE5ODEsMTEgKzE5OTksNyBAQAogICAgICAgICByZXR1cm4gcmVhZGZyb207CiAgICAgfQogCi0gICAgZGVmYXVsdDoKLSAgICAgICAgREVCVUdNU0dUTCgoInJlYWRfY29uZmlnX3JlYWRfbWVtb3J5IiwgIkZhaWw6IFVua25vd24gdHlwZTogJWQiLAotICAgICAgICAgICAgICAgICAgICB0eXBlKSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KKyAgICBERUJVR01TR1RMKCgicmVhZF9jb25maWdfcmVhZF9tZW1vcnkiLCAiRmFpbDogVW5rbm93biB0eXBlOiAlZCIsIHR5cGUpKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zY2FwaS5jIGIvc25tcGxpYi9zY2FwaS5jCmluZGV4IGQ4MzdjNTEuLmNiMmQyZjMgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc2NhcGkuYworKysgYi9zbm1wbGliL3NjYXBpLmMKQEAgLTc5LDcgKzc5LDcgQEAKICNlbmRpZgogCiAjaWZuZGVmIE5FVFNOTVBfRElTQUJMRV9ERVMKLSNpZmRlZiBTVFJVQ1RfREVTX0tTX1NUUlVDVF9IQVNfV0VBS19LRVkKKyNpZmRlZiBIQVZFX1NUUlVDVF9ERVNfS1NfU1RSVUNUX1dFQUtfS0VZCiAvKiB0aGVzZSBhcmUgb2xkZXIgbmFtZXMgZm9yIG5ld2VyIHN0cnVjdHVyZXMgdGhhdCBleGlzdCBpbiBvcGVuc3NsIC45LjcgKi8KICNkZWZpbmUgREVTX2tleV9zY2hlZHVsZSAgICBkZXNfa2V5X3NjaGVkdWxlIAogI2RlZmluZSBERVNfY2Jsb2NrICAgICAgICAgIGRlc19jYmxvY2sgCkBAIC0yNzUsNyArMjc1LDcgQEAKIAogICAgIHVfY2hhciAgICAgICAgICBidWZbU05NUF9NQVhCVUZfU01BTExdOwogI2lmICBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpIHx8IGRlZmluZWQoTkVUU05NUF9VU0VfUEtDUzExKQotICAgIHNpemVfdCAgICAgICAgICAgICBidWZfbGVuID0gc2l6ZW9mKGJ1Zik7CisgICAgdW5zaWduZWQgaW50ICAgIGJ1Zl9sZW4gPSBzaXplb2YoYnVmKTsKICNlbmRpZgogCiAgICAgREVCVUdUUkFDRTsKQEAgLTMyMSw3ICszMjEsNyBAQAogICAgIGVsc2UgewogICAgICAgICBRVUlURlVOKFNOTVBFUlJfR0VORVJSLCBzY19nZW5lcmF0ZV9rZXllZF9oYXNoX3F1aXQpOwogICAgIH0KLSAgICBpZiAoKGludClidWZfbGVuICE9IHByb3Blcmxlbmd0aCkgeworICAgIGlmIChidWZfbGVuICE9IHByb3Blcmxlbmd0aCkgewogICAgICAgICBRVUlURlVOKHJ2YWwsIHNjX2dlbmVyYXRlX2tleWVkX2hhc2hfcXVpdCk7CiAgICAgfQogICAgIGlmICgoaW50KSptYWNsZW4gPiBidWZfbGVuKQpAQCAtMzk5LDYgKzM5OSw3IEBACiAgKiBSZXR1cm5zOgogICogU05NUEVSUl9TVUNDRVNTICAgICAgICAgICAgICBTdWNjZXNzLgogICogU05NUF9TQ19HRU5FUkFMX0ZBSUxVUkUgICAgICBBbnkgZXJyb3IuCisgKiBTTk1QRVJSX1NDX05PVF9DT05GSUdVUkVEICAgIEhhc2ggdHlwZSBub3Qgc3VwcG9ydGVkLgogICovCiBpbnQKIHNjX2hhc2goY29uc3Qgb2lkICogaGFzaHR5cGUsIHNpemVfdCBoYXNodHlwZWxlbiwgdV9jaGFyICogYnVmLApAQCAtNDUxLDcgKzQ1MiwxMCBAQAogICAgIEVWUF9NRF9DVFhfaW5pdChjcHRyKTsKICNlbmRpZgogI2VuZGlmCi0gICAgRVZQX0RpZ2VzdEluaXQoY3B0ciwgaGFzaGZuKTsKKyAgICBpZiAoIUVWUF9EaWdlc3RJbml0KGNwdHIsIGhhc2hmbikpIHsKKyAgICAgICAgLyogcmVxdWVzdGVkIGhhc2ggZnVuY3Rpb24gaXMgbm90IGF2YWlsYWJsZSAqLworICAgICAgICByZXR1cm4gU05NUEVSUl9TQ19OT1RfQ09ORklHVVJFRDsKKyAgICB9CiAKIC8qKiBwYXNzIHRoZSBkYXRhICovCiAgICAgRVZQX0RpZ2VzdFVwZGF0ZShjcHRyLCBidWYsIGJ1Zl9sZW4pOwpAQCAtNTU1LDEwICs1NTksMTEgQEAKICAgICAgICAgUVVJVEZVTihTTk1QRVJSX0dFTkVSUiwgc2NfY2hlY2tfa2V5ZWRfaGFzaF9xdWl0KTsKICAgICB9CiAKKwogICAgIGlmIChtYWNsZW4gIT0gVVNNX01ENV9BTkRfU0hBX0FVVEhfTEVOKSB7CiAgICAgICAgIFFVSVRGVU4oU05NUEVSUl9HRU5FUlIsIHNjX2NoZWNrX2tleWVkX2hhc2hfcXVpdCk7CiAgICAgfQotCisgICAgCiAgICAgLyoKICAgICAgKiBHZW5lcmF0ZSBhIGZ1bGwgaGFzaCBvZiB0aGUgbWVzc2FnZSwgdGhlbiBjb21wYXJlCiAgICAgICogdGhlIHJlc3VsdCB3aXRoIHRoZSBnaXZlbiBNQUMgd2hpY2ggbWF5IHNob3J0ZXIgdGhhbgpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wLXRjLmMgYi9zbm1wbGliL3NubXAtdGMuYwppbmRleCBlZmE1NDAyLi5kOGFlNzgzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXAtdGMuYworKysgYi9zbm1wbGliL3NubXAtdGMuYwpAQCAtNiw5ICs2LDYgQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2lmIEhBVkVfTkVUSU5FVF9JTl9ICi0jaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgotI2VuZGlmCiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2VuZGlmCkBAIC0xNiw4ICsxMyw4IEBACiAjaWYgSEFWRV9TVFJJTkdfSAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2VuZGlmCi0jaWYgSEFWRV9TVERMSUJfSAotI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2lmIEhBVkVfTkVUSU5FVF9JTl9ICisjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogI2VuZGlmCiAKICNpZiBUSU1FX1dJVEhfU1lTX1RJTUUKQEAgLTEyMSw3ICsxMTgsNyBAQAogfQogCiB1X2NoYXIgICAgICAgICAqCi1kYXRlX25fdGltZSh0aW1lX3QgKiB3aGVuLCBzaXplX3QgKiBsZW5ndGgpCitkYXRlX25fdGltZShjb25zdCB0aW1lX3QgKiB3aGVuLCBzaXplX3QgKiBsZW5ndGgpCiB7CiAgICAgc3RydWN0IHRtICAgICAgKnRtX3A7CiAgICAgc3RhdGljIHVfY2hhciAgIHN0cmluZ1sxMV07CkBAIC0xNjQsMTAgKzE2MSwxMCBAQAogICAgICAqIFRpbWV6b25lIG9mZnNldAogICAgICAqLwogICAgIHsKLSNpZmRlZiBTVFJVQ1RfVE1fSEFTX1RNX0dNVE9GRgotICAgIGNvbnN0IGludCB0em9mZnNldCA9IC10bV9wLT50bV9nbXRvZmY7ICAgICAvKiBTZWNvbmRzIGVhc3Qgb2YgVVRDICovCisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fR01UT0ZGCisgICAgY29uc3QgaW50IHR6b2Zmc2V0ID0gLXRtX3AtPnRtX2dtdG9mZjsgICAvKiBTZWNvbmRzIGVhc3Qgb2YgVVRDICovCiAjZWxzZQotICAgIGNvbnN0IGludCB0em9mZnNldCA9IHRpbWV6b25lOyAgICAgICAgICAgICAvKiBTZWNvbmRzIHdlc3Qgb2YgVVRDICovCisgICAgY29uc3QgaW50IHR6b2Zmc2V0ID0gdGltZXpvbmU7ICAgICAgICAgICAvKiBTZWNvbmRzIHdlc3Qgb2YgVVRDICovCiAjZW5kaWYKICAgICBpZiAodHpvZmZzZXQgPiAwKQogICAgICAgICBzdHJpbmdbOF0gPSAnLSc7CkBAIC0xNzksNyArMTc2LDcgQEAKICAgICB9CiAjZW5kaWYKIAotI2lmZGVmIFNZU1YKKyNpZiBkZWZpbmVkKFNZU1YpICYmICFIQVZFX1NUUlVDVF9UTV9UTV9HTVRPRkYKICAgICAvKgogICAgICAqIERheWxpZ2h0IHNhdmluZyB0aW1lCiAgICAgICovCkBAIC0yMDIsNyArMTk5LDcgQEAKIAogCiB0aW1lX3QKLWN0aW1lX3RvX3RpbWV0KGNoYXIgKnN0cikKK2N0aW1lX3RvX3RpbWV0KGNvbnN0IGNoYXIgKnN0cikKIHsKICAgICBzdHJ1Y3QgdG0gICAgICAgdG07CiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYyBiL3NubXBsaWIvc25tcEFBTDVQVkNEb21haW4uYwppbmRleCA0ZjJmMGIwLi5iNzlmYmJlIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBBQUw1UFZDRG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wQUFMNVBWQ0RvbWFpbi5jCkBAIC03OSw3ICs3OSw3IEBACiAKICAgICBpZiAodCAhPSBOVUxMICYmIHQtPnNvY2sgPj0gMCkgewogCXdoaWxlIChyYyA8IDApIHsKLQkgICAgcmMgPSByZWN2ZnJvbSh0LT5zb2NrLCBidWYsIHNpemUsIDAsIE5VTEwsIDApOworCSAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgTlVMTCwgTlVMTCk7CiAJICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKIAkJYnJlYWs7CiAJICAgIH0KZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcEFsaWFzRG9tYWluLmMgYi9zbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4YzE2MjAKLS0tIC9kZXYvbnVsbAorKysgYi9zbm1wbGliL3NubXBBbGlhc0RvbWFpbi5jCkBAIC0wLDAgKzEsMTA1IEBACisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorCisjaWYgSEFWRV9ETUFMTE9DX0gKKyNpbmNsdWRlIDxkbWFsbG9jLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL3V0aWxpdGllcy5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2NvbmZpZ19hcGkuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KKworb2lkIG5ldHNubXBfc25tcEFMSUFTRG9tYWluW10gPSB7IDEsMyw2LDEsNCwxLDgwNzIsMywzLDcgfTsKK3N0YXRpYyBuZXRzbm1wX3Rkb21haW4gYWxpYXNEb21haW47CisKKy8qIHNpbXBsZSBzdG9yYWdlIG1lY2hhbmlzbSAqLworc3RhdGljIG5ldHNubXBfZGF0YV9saXN0ICphbGlhc19tZW1vcnkgPSBOVUxMOworCisvKiBBbiBhbGlhcyBwYXJzZXIgKi8KK3ZvaWQKK3BhcnNlX2FsaWFzX2NvbmZpZyhjb25zdCBjaGFyICp0b2tlbiwgY2hhciAqbGluZSkgeworICAgIGNoYXIgYWxpYXNuYW1lW1NQUklOVF9NQVhfTEVOXTsKKyAgICBjaGFyIHRyYW5zcG9ydGRlZltTUFJJTlRfTUFYX0xFTl07CisgICAgLyogY29weSB0aGUgZmlyc3Qgd29yZCAodGhlIGFsaWFzKSBvdXQgYW5kIHRoZW4gYXNzdW1lIHRoZSByZXN0IGlzCisgICAgICAgdHJhbnNwb3J0ICovCisgICAgbGluZSA9IGNvcHlfbndvcmQobGluZSwgYWxpYXNuYW1lLCBzaXplb2YoYWxpYXNuYW1lKSk7CisgICAgbGluZSA9IGNvcHlfbndvcmQobGluZSwgdHJhbnNwb3J0ZGVmLCBzaXplb2YodHJhbnNwb3J0ZGVmKSk7CisgICAgaWYgKGxpbmUpCisgICAgICAgIGNvbmZpZ19wZXJyb3IoIm1vcmUgZGF0YSB0aGFuIGV4cGVjdGVkIik7CisgICAgbmV0c25tcF9kYXRhX2xpc3RfYWRkX25vZGUoJmFsaWFzX21lbW9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2NyZWF0ZV9kYXRhX2xpc3QoYWxpYXNuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJkdXAodHJhbnNwb3J0ZGVmKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmZyZWUpKTsKK30KKwordm9pZAorZnJlZV9hbGlhc19jb25maWcodm9pZCkgeworICAgIG5ldHNubXBfZnJlZV9hbGxfbGlzdF9kYXRhKGFsaWFzX21lbW9yeSk7CisgICAgYWxpYXNfbWVtb3J5ID0gTlVMTDsKK30KKworLyoKKyAqIE9wZW4gYSBBTElBUy1iYXNlZCB0cmFuc3BvcnQgZm9yIFNOTVAuICBMb2NhbCBpcyBUUlVFIGlmIGFkZHIgaXMgdGhlIGxvY2FsCisgKiBhZGRyZXNzIHRvIGJpbmQgdG8gKGkuZS4gdGhpcyBpcyBhIHNlcnZlci10eXBlIHNlc3Npb24pOyBvdGhlcndpc2UgYWRkciBpcyAKKyAqIHRoZSByZW1vdGUgYWRkcmVzcyB0byBzZW5kIHRoaW5ncyB0by4gIAorICovCisKK25ldHNubXBfdHJhbnNwb3J0ICoKK25ldHNubXBfYWxpYXNfY3JlYXRlX3RzdHJpbmcoY29uc3QgY2hhciAqc3RyLCBpbnQgbG9jYWwsCisJCQkgICBjb25zdCBjaGFyICpkZWZhdWx0X3RhcmdldCkKK3sKKyAgICBjb25zdCBjaGFyICphbGlhc2RhdGE7CisKKyAgICBhbGlhc2RhdGEgPSAoY29uc3QgY2hhciopbmV0c25tcF9nZXRfbGlzdF9kYXRhKGFsaWFzX21lbW9yeSwgc3RyKTsKKyAgICBpZiAoIWFsaWFzZGF0YSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gYWxpYXMgZm91bmQgZm9yICVzXG4iLCBzdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbmV0c25tcF90ZG9tYWluX3RyYW5zcG9ydChhbGlhc2RhdGEsbG9jYWwsZGVmYXVsdF90YXJnZXQpOworfQorCisKKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9hbGlhc19jcmVhdGVfb3N0cmluZyhjb25zdCB1X2NoYXIgKiBvLCBzaXplX3Qgb19sZW4sIGludCBsb2NhbCkKK3sKKyAgICBmcHJpbnRmKHN0ZGVyciwgIm1ha2Ugb3N0cmluZ1xuIik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3ZvaWQKK25ldHNubXBfYWxpYXNfY3Rvcih2b2lkKQoreworICAgIGFsaWFzRG9tYWluLm5hbWUgPSBuZXRzbm1wX3NubXBBTElBU0RvbWFpbjsKKyAgICBhbGlhc0RvbWFpbi5uYW1lX2xlbmd0aCA9IHNpemVvZihuZXRzbm1wX3NubXBBTElBU0RvbWFpbikgLyBzaXplb2Yob2lkKTsKKyAgICBhbGlhc0RvbWFpbi5wcmVmaXggPSAoY29uc3QgY2hhciAqKiljYWxsb2MoMiwgc2l6ZW9mKGNoYXIgKikpOworICAgIGFsaWFzRG9tYWluLnByZWZpeFswXSA9ICJhbGlhcyI7CisKKyAgICBhbGlhc0RvbWFpbi5mX2NyZWF0ZV9mcm9tX3RzdHJpbmcgICAgID0gTlVMTDsKKyAgICBhbGlhc0RvbWFpbi5mX2NyZWF0ZV9mcm9tX3RzdHJpbmdfbmV3ID0gbmV0c25tcF9hbGlhc19jcmVhdGVfdHN0cmluZzsKKyAgICBhbGlhc0RvbWFpbi5mX2NyZWF0ZV9mcm9tX29zdHJpbmcgICAgID0gbmV0c25tcF9hbGlhc19jcmVhdGVfb3N0cmluZzsKKworICAgIG5ldHNubXBfdGRvbWFpbl9yZWdpc3RlcigmYWxpYXNEb21haW4pOworCisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAiYWxpYXMiLCBwYXJzZV9hbGlhc19jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJlZV9hbGlhc19jb25maWcsICJOQU1FIFRSQU5TUE9SVF9ERUZJTklUSU9OIik7Cit9CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jIGIvc25tcGxpYi9zbm1wQ2FsbGJhY2tEb21haW4uYwppbmRleCAwODVhMjE0Li5lZmMyY2JjIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBDYWxsYmFja0RvbWFpbi5jCisrKyBiL3NubXBsaWIvc25tcENhbGxiYWNrRG9tYWluLmMKQEAgLTg3LDcgKzg3LDcgQEAKICAgICBuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKnZiOwogICAgIGludCAgICAgICAgICAgICBpID0gMTsKICAgICBERUJVR01TR1RMKChvdXJzdHJpbmcsCi0gICAgICAgICAgICAgICAgIlBEVTogY29tbWFuZCA9ICVkLCBlcnJzdGF0ID0gJWQsIGVycmluZGV4ID0gJWRcbiIsCisgICAgICAgICAgICAgICAgIlBEVTogY29tbWFuZCA9ICVkLCBlcnJzdGF0ID0gJWxkLCBlcnJpbmRleCA9ICVsZFxuIiwKICAgICAgICAgICAgICAgICBwZHUtPmNvbW1hbmQsIHBkdS0+ZXJyc3RhdCwgcGR1LT5lcnJpbmRleCkpOwogICAgIGZvciAodmIgPSBwZHUtPnZhcmlhYmxlczsgdmI7IHZiID0gdmItPm5leHRfdmFyaWFibGUpIHsKICAgICAgICAgREVCVUdNU0dUTCgob3Vyc3RyaW5nLCAiICB2YXIgJWQ6IiwgaSsrKSk7CkBAIC0xMDIsNiArMTAyLDggQEAKICAgICBjYWxsYmFja19xdWV1ZSAqbmV3aXRlbSA9IFNOTVBfTUFMTE9DX1RZUEVERUYoY2FsbGJhY2tfcXVldWUpOwogICAgIGNhbGxiYWNrX3F1ZXVlICpwdHI7CiAKKyAgICBpZiAobmV3aXRlbSA9PSBOVUxMKQorICAgICAgICByZXR1cm47CiAgICAgbmV3aXRlbS0+Y2FsbGJhY2tfbnVtID0gbnVtOwogICAgIG5ld2l0ZW0tPml0ZW0gPSBpdGVtOwogICAgIGlmICh0aGVxdWV1ZSkgewpAQCAtMzg5LDYgKzM5MSwxMCBAQAogICAgICAqIG91ciBzdHVmZiAKICAgICAgKi8KICAgICBteWRhdGEgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfY2FsbGJhY2tfaW5mbyk7CisgICAgaWYgKCFteWRhdGEpIHsKKyAgICAgICAgU05NUF9GUkVFKHQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgbXlkYXRhLT5saW5rZWR0byA9IHRvOwogICAgIG15ZGF0YS0+Y2FsbGJhY2tfbnVtID0gKytjYWxsYmFja19jb3VudDsKICAgICBteWRhdGEtPmRhdGEgPSBOVUxMOwpAQCAtNDQ4LDYgKzQ1NCw4IEBACiAgICAgICogZnVuY3Rpb24gCiAgICAgICovCiAgICAgY2FsbGJhY2tfaGFjayAgKmNoID0gU05NUF9NQUxMT0NfVFlQRURFRihjYWxsYmFja19oYWNrKTsKKyAgICBpZiAoY2ggPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIERFQlVHTVNHVEwoKCJ0cmFuc3BvcnRfY2FsbGJhY2siLCAiaG9va19idWlsZCBlbnRlclxuIikpOwogICAgIGNoLT5wZHUgPSBwZHU7CiAgICAgY2gtPm9yaWdfdHJhbnNwb3J0X2RhdGEgPSBwZHUtPnRyYW5zcG9ydF9kYXRhOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jIGIvc25tcGxpYi9zbm1wRFRMU1VEUERvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZTkxYTYKLS0tIC9kZXYvbnVsbAorKysgYi9zbm1wbGliL3NubXBEVExTVURQRG9tYWluLmMKQEAgLTAsMCArMSwxMTk4IEBACisvKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb3B5cmlnaHQocykuICBTZWUKKyAqIHRoZSBOZXQtU05NUCdzIENPUFlJTkcgZmlsZSBmb3IgbW9yZSBkZXRhaWxzIGFuZCBvdGhlciBjb3B5cmlnaHRzCisgKiB0aGF0IG1heSBhcHBseToKKyAqLworLyoKKyAqIFBvcnRpb25zIG9mIHRoaXMgZmlsZSBhcmUgY29weXJpZ2h0ZWQgYnk6CisgKiBDb3B5cmlnaHQgQ29weXJpZ2h0IDIwMDMgU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcyBzcGVjaWZpZWQgaW4gdGhlIENPUFlJTkcgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGUgTmV0LVNOTVAgcGFja2FnZS4KKyAqLworCisvKgorICogTk9URTogVEhJUyBJUyBBTiBFWFBFUklNRU5UQUwgSU1QTEVNRU5UQVRJT04gQU5EIE5PVCBZRVQgU1VJVEFCTEUKKyAqIEZPUiBQUk9EVUNUSU9OIFVTRQorICoKKyAqIFRIRVJFIGFyZSBLTk9XTiBzZWN1cml0eSBJU1NVRVMgd2l0aCBUSElTIGNvZGUhCisgKiAoaWYgbm90aGluZyBlbHNlLCB5b3UgY2FuJ3QgdGllIGNlcnRpZmljYXRlcyB0byBjZXJ0YWluIGhvc3RzL3VzZXJzKQorICovCisKKy8qCisgKiAtLS0tLS0tLS0tIENyZWF0aW5nIENlcnRpZmljYXRlcyAtLS0tLS0tLS0tCisgKgorICogRXhhbXBsZSBwdWIvcHJpdiBrZXkgY3JlYXRpb24gc3RlcHMgdXNpbmcgb3BlbnNzbCAocmVwbGFjZSBmb3ItdXNlcgorICogd2l0aCB0aGUgYXBwcm9wcmlhdGUgbmFtZSwgZXRjIChlLmcuIGZvciBhIHVzZXIgeW91IG1pZ2h0IHVzZSB0aGVpcgorICogZmlyc3QubGFzdCBuYW1lIGFuZCBmb3IgYSBzZXJ2ZXIsIHVzZSBpdCdzIGhvc3RuYW1lIG9yIHNvbWV0aGluZykKKyAqCisgKiAgIDEpIGNyZWF0ZSB0aGUgQ1NSIGZpbGUgZmlyc3Q6CisgKgorICogICAgICAgICBvcGVuc3NsIHJlcSAtZGF5cyAzNjUgLW5ldyAtb3V0IGZvci11c2VyLmNzciAta2V5b3V0IGZvci11c2VyLnByaXYKKyAqCisgKiAgIDIpIE9wdGlvbmFsbHkgcmVtb3ZlIHRoZSBwYXNzcGhyYXNlIGlmIHlvdSBoYXRlIHRoYXQgc29ydCBvZiB0aGluZworICogICAgICAob2J2aW91c2x5IG5vdCByZWNvbW1lbmRlZDsgdXNlZnVsIG9uIHNlcnZlcnMgd2l0aG91dCBwYXNzd29yZCBwcm9tcHRzKQorICoKKyAqICAgICAgICAgb3BlbnNzbCByc2EgLWluIGZvci11c2VyLnByaXYgLW91dCBmb3ItdXNlci5pbnNlY3VyZS5wcml2CisgKgorICogICAzKSBDcmVhdGUgYSBzZWxmLXNpZ25lZCBrZXkgZnJvbSB0aGUgQ1NSOgorICoKKyAqICAgICAgb3BlbnNzbCB4NTA5IC1zZXRfc2VyaWFsIGBkYXRlICslWSVtJWRgIC1pbiBmb3ItdXNlci5jc3IgLW91dCBmb3ItdXNlci5jZXJ0IC1yZXEgLXNpZ25rZXkgZm9yLXVzZXIuaW5zZWN1cmUucHJpdiAtZGF5cyAzNjUKKyAqCisgKgorICogVGhlc2UgY2FuIHRoZW4gYmUgdXNlZCBieSB0aGUgY29uZmlnIHRva2VucyBmb3IgYm90aCB0aGUgY2xpZW50IGFuZAorICogdGhlIHNlcnZlcjoKKyAqCisgKiAtLS0tLS0tLS0tIENyZWF0aW5nIGEgQ0EgZm9yIGlzc3VpbmcgY2VydHMgLS0tLS0tLS0tLQorICoKKyAqIFRCRAorICoKKyAqIC0tLS0tLS0tLS0gQ29uZmlndXJhdGlvbiAtLS0tLS0tLS0tCisgKgorICogSW4gdGhlIHNubXAuY29uZiBmaWxlLCB5b3Ugc2hvdWxkIHNwZWNpZnkgdGhlIGZvbGxvd2luZworICogdHlwZXMgb2YgY29uZmlndXJhdGlvbiBsaW5lczoKKyAqCisgKiBUbyB0ZWxsIHRoZSBjbGllbnQgd2hpY2gga2V5cyAqaXQqIHNob3VsZCB1c2UgdG8gYXV0aGVudGljYXRlIHdpdGg6CisgKgorICogICBkZWZYNTA5Q2xpZW50UHJpdiAvcGF0aC90by9mb3ItdXNlci5pbnNlY3VyZS5wcml2CisgKiAgIGRlZlg1MDlDbGllbnRQdWIgIC9wYXRoL3RvL2Zvci11c2VyLmluc2VjdXJlLmNlcnQKKyAqCisgKiBUbyB0ZWxsIHRoZSBjbGllbnQgdG8gb25seSBhIGxpc3Qgb2Ygc2VydmVyczoKKyAqCisgKiAgIGRlZlg1MDlTZXJ2ZXJDZXJ0cyAvcGF0aC90by9zZXJ2ZXItY2VydHMuY2VydHMKKyAqCisgKiAgIChzZXJ2ZXItY2VydHMuY2VydHMgY2FuIGJlIGNyZWF0ZWQgYnkgc2ltcGx5IGNhdCdpbmcgbXVsdGlwbGUKKyAqICAgIHNlcnZlciBjZXJ0IGZpbGVzIGludG8gb25lcyBiaWcgZmlsZSkKKyAqCisgKiBUbyB0ZWxsIHRoZSBzZXJ2ZXIgaXQncyBjZXJ0cyB0byBvZmZlcjoKKyAqCisgKiAgIGRlZlg1MDlTZXJ2ZXJQdWIgIC9wYXRoL3RvL3NlcnZlcjEuaW5zZWN1cmUuY2VydAorICogICBkZWZYNTA5U2VydmVyUHJpdiAvcGF0aC90by9zZXJ2ZXIxLmluc2VjdXJlLnByaXYKKyAqCisgKiBUbyB0ZWxsIHRoZSBzZXJ2ZXIgd2hpY2gga2V5cyBpdCBzaG91bGQgYWNjZXB0IGZyb20gY2xpZW50czoKKyAqCisgKiAgIGRlZlg1MDlDbGllbnRDZXJ0cyAvcGF0aC90by9jbGllbnQtY2VydHMuY2VydHMKKyAqCisgKiBUbyBhdXRob3JpemUgZm9yIFIvVyBhIHBhcnRpY3VsYXIgQ29tbW9uTmFtZSBmcm9tIHRob3NlIGNlcnRzOgorICoKKyAqICAgcnd1c2VyICJKb2huIERvZSIKKyAqCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisKKyNpZiBIQVZFX1NUUklOR19ICisjaW5jbHVkZSA8c3RyaW5nLmg+CisjZWxzZQorI2luY2x1ZGUgPHN0cmluZ3MuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RETElCX0gKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNlbmRpZgorI2lmIEhBVkVfVU5JU1REX0gKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNlbmRpZgorI2lmIEhBVkVfU1lTX1NPQ0tFVF9ICisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorI2VuZGlmCisjaWYgSEFWRV9ORVRJTkVUX0lOX0gKKyNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisjZW5kaWYKKyNpZiBIQVZFX0FSUEFfSU5FVF9ICisjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVERCX0gKKyNpbmNsdWRlIDxuZXRkYi5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfVUlPX0gKKyNpbmNsdWRlIDxzeXMvdWlvLmg+CisjZW5kaWYKKworI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisKKyNpZiBIQVZFX0RNQUxMT0NfSAorI2luY2x1ZGUgPGRtYWxsb2MuaD4KKyNlbmRpZgorCisjaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9vdXRwdXRfYXBpLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvY29uZmlnX2FwaS5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfb3BlbnNzbC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaD4KKworI2luY2x1ZGUgIm9wZW5zc2wvYmlvLmgiCisjaW5jbHVkZSAib3BlbnNzbC9zc2wuaCIKKyNpbmNsdWRlICJvcGVuc3NsL2Vyci5oIgorCisjaWZuZGVmIElOQUREUl9OT05FCisjZGVmaW5lIElOQUREUl9OT05FCS0xCisjZW5kaWYKKworI2lmZGVmICBNU0dfRE9OVFdBSVQKKyNkZWZpbmUgTkVUU05NUF9ET05UV0FJVCBNU0dfRE9OVFdBSVQKKyNlbHNlCisjZGVmaW5lIE5FVFNOTVBfRE9OVFdBSVQgMAorI2VuZGlmCisKKyNkZWZpbmUgV0VfQVJFX1NFUlZFUiAwCisjZGVmaW5lIFdFX0FSRV9DTElFTlQgMQorCitvaWQgICAgICAgICAgICAgbmV0c25tcERUTFNVRFBEb21haW5bXSA9IHsgVFJBTlNQT1JUX0RPTUFJTl9EVExTX1VEUF9JUCB9Oworc2l6ZV90ICAgICAgICAgIG5ldHNubXBEVExTVURQRG9tYWluX2xlbiA9IE9JRF9MRU5HVEgobmV0c25tcERUTFNVRFBEb21haW4pOworCitzdGF0aWMgbmV0c25tcF90ZG9tYWluIGR0bHN1ZHBEb21haW47CisKKy8qIHRoaXMgc3RvcmVzIG9wZW5zc2wgY3JlZGVudGlhbHMgZm9yIGVhY2ggY29ubmVjdGlvbiBzaW5jZSBvcGVuc3NsCisgICBjYW4ndCBkbyBpdCBmb3IgdXMgYXQgdGhlIG1vbWVudDsgaG9wZWZ1bGx5IGZ1dHVyZSB2ZXJzaW9ucyB3aWxsCisgICBjaGFuZ2UgKi8KK3R5cGVkZWYgc3RydWN0IGJpb19jYWNoZV9zIHsKKyAgIEJJTyAqYmlvOworICAgQklPICp3cml0ZV9iaW87CisgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gc29ja2FkZHI7CisgICB1aW50MzJfdCBpcHY0YWRkcjsKKyAgIHVfc2hvcnQgcG9ydG51bTsKKyAgIFNTTCAqY29uOworICAgU1NMX0NUWCAqY3R4OworICAgc3RydWN0IGJpb19jYWNoZV9zICpuZXh0OworICAgaW50IG1zZ251bTsKKyAgIGludCBzb2NrOworICAgY2hhciAqc2VjdXJpdHlOYW1lOworfSBiaW9fY2FjaGU7CisKK2Jpb19jYWNoZSAqYmlvY2FjaGUgPSBOVUxMOworCisvKgorICogY2FjaGVkIFNTTCBjb250ZXh0IGluZm9ybWF0aW9uCisgKiAoaW4gdGhlb3J5IHdlIG1heSB3YW50IG1vcmUgdGhhbiBvbmUgcGVyIGNsaWVudC9zZXJ2ZXIgYnV0IGl0J3MKKyAqIHVubGlrZWx5IGFuZCBhIENQVSBhbmQgbWVtb3J5IHdhc3RlIHVubGVzcyB3ZSBkbyBuZWVkIG1vcmUgdGhhbiBvbmUpCisgKi8KK1NTTF9DVFggKmNsaWVudF9jdHgsICpzZXJ2ZXJfY3R4OworCisvKiB0aGlzIHN0b3JlcyByZW1vdGUgY29ubmVjdGlvbnMgaW4gYSBsaXN0IHRvIHNlYXJjaCB0aHJvdWdoICovCisvKiBYWFg6IG9wdGltaXplIGZvciBzZWFyY2hpbmcgKi8KKy8qIFhYWDogaGFuZGxlIHN0YXRlIGlzc3VlcyBmb3IgbmV3IGNvbm5lY3Rpb25zIHRvIHJlZHVjZSBET1MgaXNzdWVzICovCisvKiAgICAgIChUTFMgc2hvdWxkIGRvIHRoaXMsIGJ1dCBvcGVuc3NsIGNhbid0IGRvIG1vcmUgdGhhbiBvbmUgY3R4IHBlciBzb2NrICovCisvKiBYWFg6IHB1dCBhIHRpbWVyIG9uIHRoZSBjYWNoZSBmb3IgZXhwaXJhcnkgcHVycG9zZXMgKi8KK3N0YXRpYyBiaW9fY2FjaGUgKmZpbmRfYmlvX2NhY2hlKHN0cnVjdCBzb2NrYWRkcl9pbiAqZnJvbV9hZGRyKSB7CisgICAgYmlvX2NhY2hlICpjYWNoZXAgPSBOVUxMOworICAgIGNhY2hlcCA9IGJpb2NhY2hlOworICAgIHdoaWxlKGNhY2hlcCkgeworCisgICAgICAgIGlmIChjYWNoZXAtPmlwdjRhZGRyID09IGZyb21fYWRkci0+c2luX2FkZHIuc19hZGRyICYmCisgICAgICAgICAgICBjYWNoZXAtPnBvcnRudW0gPT0gZnJvbV9hZGRyLT5zaW5fcG9ydCkgeworICAgICAgICAgICAgLyogZm91bmQgYW4gZXhpc3RpbmcgY29ubmVjdGlvbiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBjYWNoZXAgPSBjYWNoZXAtPm5leHQ7CisgICAgfQorICAgIHJldHVybiBjYWNoZXA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICogX3g1MDlfZ2V0X2Vycm9yKGludCB4NTA5ZmFpbHZhbHVlLCBjb25zdCBjaGFyICpsb2NhdGlvbikgeworICAgIHN0YXRpYyBjb25zdCBjaGFyICpyZWFzb24gPSBOVUxMOworICAgIAorICAgIC8qIFhYWDogdXNlIHRoaXMgaW5zdGVhZDogWDUwOV92ZXJpZnlfY2VydF9lcnJvcl9zdHJpbmcoZXJyKSAqLworCisgICAgc3dpdGNoICh4NTA5ZmFpbHZhbHVlKSB7CisgICAgY2FzZSBYNTA5X1ZfT0s6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfT0siOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0NSTDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9DUkwiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ1JZUFRfQ0VSVF9TSUdOQVRVUkU6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NFUlRfU0lHTkFUVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRVUkU6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1VOQUJMRV9UT19ERUNSWVBUX0NSTF9TSUdOQVRVUkUiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ09ERV9JU1NVRVJfUFVCTElDX0tFWToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX0RFQ09ERV9JU1NVRVJfUFVCTElDX0tFWSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9GQUlMVVJFOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX1NJR05BVFVSRV9GQUlMVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NSTF9TSUdOQVRVUkVfRkFJTFVSRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ1JMX1NJR05BVFVSRV9GQUlMVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfTk9UX1lFVF9WQUxJRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ0VSVF9OT1RfWUVUX1ZBTElEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfSEFTX0VYUElSRUQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0NFUlRfSEFTX0VYUElSRUQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfQ1JMX05PVF9ZRVRfVkFMSUQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0NSTF9OT1RfWUVUX1ZBTElEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NSTF9IQVNfRVhQSVJFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ1JMX0hBU19FWFBJUkVEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0JFRk9SRV9GSUVMRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfRVJST1JfSU5fQ0VSVF9OT1RfQkVGT1JFX0ZJRUxEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0VSUk9SX0lOX0NFUlRfTk9UX0FGVEVSX0ZJRUxEOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9FUlJPUl9JTl9DRVJUX05PVF9BRlRFUl9GSUVMRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTEFTVF9VUERBVEVfRklFTEQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0VSUk9SX0lOX0NSTF9MQVNUX1VQREFURV9GSUVMRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9FUlJPUl9JTl9DUkxfTkVYVF9VUERBVEVfRklFTEQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0VSUk9SX0lOX0NSTF9ORVhUX1VQREFURV9GSUVMRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9PVVRfT0ZfTUVNOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9PVVRfT0ZfTUVNIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0RFUFRIX1pFUk9fU0VMRl9TSUdORURfQ0VSVDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfREVQVEhfWkVST19TRUxGX1NJR05FRF9DRVJUIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU46CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9JU1NVRVJfQ0VSVF9MT0NBTExZOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0lTU1VFUl9DRVJUX0xPQ0FMTFkiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5BQkxFX1RPX1ZFUklGWV9MRUFGX1NJR05BVFVSRSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19MT05HOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX0NIQUlOX1RPT19MT05HIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfUkVWT0tFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfQ0VSVF9SRVZPS0VEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfQ0E6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0lOVkFMSURfQ0EiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfUEFUSF9MRU5HVEhfRVhDRUVERUQ6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1BBVEhfTEVOR1RIX0VYQ0VFREVEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfUFVSUE9TRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfSU5WQUxJRF9QVVJQT1NFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0NFUlRfVU5UUlVTVEVEOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX1VOVFJVU1RFRCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9DRVJUX1JFSkVDVEVEOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9DRVJUX1JFSkVDVEVEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1NVQkpFQ1RfSVNTVUVSX01JU01BVENIOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9TVUJKRUNUX0lTU1VFUl9NSVNNQVRDSCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX1NLSURfTUlTTUFUQ0g6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0FLSURfU0tJRF9NSVNNQVRDSCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9BS0lEX0lTU1VFUl9TRVJJQUxfTUlTTUFUQ0g6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0FLSURfSVNTVUVSX1NFUklBTF9NSVNNQVRDSCI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9LRVlVU0FHRV9OT19DRVJUU0lHTjoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ0VSVFNJR04iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5BQkxFX1RPX0dFVF9DUkxfSVNTVUVSOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9VTkFCTEVfVE9fR0VUX0NSTF9JU1NVRVIiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5IQU5ETEVEX0NSSVRJQ0FMX0VYVEVOU0lPTjoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5IQU5ETEVEX0NSSVRJQ0FMX0VYVEVOU0lPTiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9LRVlVU0FHRV9OT19DUkxfU0lHTjoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fQ1JMX1NJR04iOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfVU5IQU5ETEVEX0NSSVRJQ0FMX0NSTF9FWFRFTlNJT046CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX1VOSEFORExFRF9DUklUSUNBTF9DUkxfRVhURU5TSU9OIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfTk9OX0NBOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9JTlZBTElEX05PTl9DQSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9QUk9YWV9QQVRIX0xFTkdUSF9FWENFRURFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfUFJPWFlfUEFUSF9MRU5HVEhfRVhDRUVERUQiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfS0VZVVNBR0VfTk9fRElHSVRBTF9TSUdOQVRVUkU6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0tFWVVTQUdFX05PX0RJR0lUQUxfU0lHTkFUVVJFIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX1BST1hZX0NFUlRJRklDQVRFU19OT1RfQUxMT1dFRDoKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfUFJPWFlfQ0VSVElGSUNBVEVTX05PVF9BTExPV0VEIjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBYNTA5X1ZfRVJSX0lOVkFMSURfRVhURU5TSU9OOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9JTlZBTElEX0VYVEVOU0lPTiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9JTlZBTElEX1BPTElDWV9FWFRFTlNJT046CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX0lOVkFMSURfUE9MSUNZX0VYVEVOU0lPTiI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9OT19FWFBMSUNJVF9QT0xJQ1k6CisgICAgICAgIHJlYXNvbiA9ICJYNTA5X1ZfRVJSX05PX0VYUExJQ0lUX1BPTElDWSI7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgWDUwOV9WX0VSUl9VTk5FU1RFRF9SRVNPVVJDRToKKyAgICAgICAgcmVhc29uID0gIlg1MDlfVl9FUlJfVU5ORVNURURfUkVTT1VSQ0UiOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFg1MDlfVl9FUlJfQVBQTElDQVRJT05fVkVSSUZJQ0FUSU9OOgorICAgICAgICByZWFzb24gPSAiWDUwOV9WX0VSUl9BUFBMSUNBVElPTl9WRVJJRklDQVRJT04iOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJlYXNvbiA9ICJ1bmtub3duIGZhaWx1cmUgY29kZSI7CisgICAgfQorCisgICAgcmV0dXJuIHJlYXNvbjsKK30KKworaW50IHZlcmlmeV9jYWxsYmFjayhpbnQgb2ssIFg1MDlfU1RPUkVfQ1RYICpjdHgpIHsKKyAgICBpbnQgZXJyLCBkZXB0aDsKKyAgICBjaGFyIGJ1ZlsxMDI0XTsKKyAgICBYNTA5ICp0aGVjZXJ0OworCisgICAgdGhlY2VydCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9jdXJyZW50X2NlcnQoY3R4KTsKKyAgICBlcnIgPSBYNTA5X1NUT1JFX0NUWF9nZXRfZXJyb3IoY3R4KTsKKyAgICBkZXB0aCA9IFg1MDlfU1RPUkVfQ1RYX2dldF9lcnJvcl9kZXB0aChjdHgpOworICAgIAorICAgIC8qIHRoaW5ncyB0byBkbzogKi8KKworICAgIFg1MDlfTkFNRV9vbmVsaW5lKFg1MDlfZ2V0X3N1YmplY3RfbmFtZSh0aGVjZXJ0KSwgYnVmLCBzaXplb2YoYnVmKSk7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHBfeDUwOSIsCisgICAgICAgICAgICAgICAgIkNlcnQ6ICVzXG4iLCBidWYpKTsKKworCisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHBfeDUwOSIsCisgICAgICAgICAgICAgICAgIiB2ZXJpZnkgdmFsdWU6ICVkLCBkZXB0aD0lZCwgZXJyb3IgY29kZT0lZCwgZXJyb3Igc3RyaW5nPSVzXG4iLAorICAgICAgICAgICAgICAgIG9rLCBkZXB0aCwgZXJyLCBfeDUwOV9nZXRfZXJyb3IoZXJyLCAidmVyaWZ5IGNhbGxiYWNrIikpKTsKKworICAgIC8qIGNoZWNrIGlmIHdlIGFsbG93IHNlbGYtc2lnbmVkIGNlcnRzICovCisgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FMTE9XX1NFTEZfU0lHTkVEKSAmJgorICAgICAgICAoWDUwOV9WX0VSUl9ERVBUSF9aRVJPX1NFTEZfU0lHTkVEX0NFUlQgPT0gZXJyIHx8CisgICAgICAgICBYNTA5X1ZfRVJSX1NFTEZfU0lHTkVEX0NFUlRfSU5fQ0hBSU4gPT0gZXJyKSkgeworICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcF94NTA5IiwgIiAgYWNjZXB0aW5nIGEgc2VsZi1zaWduZWQgY2VydGlmaWNhdGVcbiIpKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIAorICAgIAorICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwX3g1MDkiLCAiICByZXR1cmluZyB0aGUgcGFzc2VkIGluIHZhbHVlIG9mICVkXG4iLCBvaykpOworICAgIHJldHVybihvayk7Cit9CisKK3N0YXRpYyB2b2lkIF9vcGVuc3NsX2xvZ19lcnJvcihpbnQgcmMsIFNTTCAqY29uLCBjb25zdCBjaGFyICpsb2NhdGlvbikgeworICAgIGNvbnN0IGNoYXIgKnJlYXNvbjsKKworICAgIGlmIChyYyA9PSAtMSkgeworICAgICAgICBpbnQgc3NsbnVtID0gU1NMX2dldF9lcnJvcihjb24sIHJjKTsKKworICAgICAgICBzd2l0Y2goc3NsbnVtKSB7CisgICAgICAgIGNhc2UgU1NMX0VSUk9SX05PTkU6CisgICAgICAgICAgICByZWFzb24gPSAiU1NMX0VSUk9SX05PTkUiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTU0xfRVJST1JfU1NMOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9TU0wiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9SRUFEOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9XQU5UX1JFQUQiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBTU0xfRVJST1JfV0FOVF9XUklURToKKyAgICAgICAgICAgIHJlYXNvbiA9ICJTU0xfRVJST1JfV0FOVF9XUklURSI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX1g1MDlfTE9PS1VQOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9XQU5UX1g1MDlfTE9PS1VQIjsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgU1NMX0VSUk9SX1NZU0NBTEw6CisgICAgICAgICAgICByZWFzb24gPSAiU1NMX0VSUk9SX1NZU0NBTEwiOworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIkRUTFMgZXJyb3I6ICVzOiByYz0lZCwgc3NsZXJyb3IgPSAlZCAoJXMpOiBzeXN0ZW1fZXJyb3I9JWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLCByYywgc3NsbnVtLCByZWFzb24sIGVycm5vLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGNhc2UgU1NMX0VSUk9SX1pFUk9fUkVUVVJOOgorICAgICAgICAgICAgcmVhc29uID0gIlNTTF9FUlJPUl9aRVJPX1JFVFVSTiI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX0NPTk5FQ1Q6CisgICAgICAgICAgICByZWFzb24gPSAiU1NMX0VSUk9SX1dBTlRfQ09OTkVDVCI7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFNTTF9FUlJPUl9XQU5UX0FDQ0VQVDoKKyAgICAgICAgICAgIHJlYXNvbiA9ICJTU0xfRVJST1JfV0FOVF9BQ0NFUFQiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJlYXNvbiA9ICJ1bmtub3duIjsKKyAgICAgICAgfQorCisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJEVExTIGVycm9yOiAlczogcmM9JWQsIHNzbGVycm9yID0gJWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgbG9jYXRpb24sIHJjLCBzc2xudW0sIHJlYXNvbik7CisgICAgfQorfQorCisvKiBYWFg6IGxvdHMgb2YgbWFsbG9jL3N0YXRlIGNsZWFudXAgbmVlZGVkICovCisjZGVmaW5lIERJRUhFUkUobXNnKSB7IHNubXBfbG9nKExPR19FUlIsICIlc1xuIiwgbXNnKTsgcmV0dXJuIE5VTEw7IH0KKworc3RhdGljIGJpb19jYWNoZSAqCitzdGFydF9uZXdfY2FjaGVkX2Nvbm5lY3Rpb24oaW50IHNvY2ssIHN0cnVjdCBzb2NrYWRkcl9pbiAqcmVtb3RlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlX2FyZV9jbGllbnQpIHsKKyAgICBiaW9fY2FjaGUgKmNhY2hlcCA9IE5VTEw7CisKKyAgICBpZiAoIXNvY2spCisgICAgICAgIERJRUhFUkUoIm5vIHNvY2tldCBwYXNzZWQgaW4gdG8gc3RhcnRfbmV3X2NhY2hlZF9jb25uZWN0aW9uXG4iKTsKKyAgICBpZiAoIXJlbW90ZV9hZGRyKQorICAgICAgICBESUVIRVJFKCJubyByZW1vdGVfYWRkciBwYXNzZWQgaW4gdG8gc3RhcnRfbmV3X2NhY2hlZF9jb25uZWN0aW9uXG4iKTsKKyAgICAgICAgCisgICAgY2FjaGVwID0gU05NUF9NQUxMT0NfVFlQRURFRihiaW9fY2FjaGUpOworICAgIGlmICghY2FjaGVwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAKKyAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJzdGFydGluZyBhIG5ldyBjb25uZWN0aW9uXG4iKSk7CisgICAgY2FjaGVwLT5uZXh0ID0gYmlvY2FjaGU7CisgICAgYmlvY2FjaGUgPSBjYWNoZXA7CisKKyAgICBjYWNoZXAtPmlwdjRhZGRyID0gcmVtb3RlX2FkZHItPnNpbl9hZGRyLnNfYWRkcjsKKyAgICBjYWNoZXAtPnBvcnRudW0gPSByZW1vdGVfYWRkci0+c2luX3BvcnQ7CisgICAgY2FjaGVwLT5zb2NrID0gc29jazsKKyAgICBtZW1jcHkoJmNhY2hlcC0+c29ja2FkZHIsIHJlbW90ZV9hZGRyLCBzaXplb2YoKnJlbW90ZV9hZGRyKSk7CisKKyAgICBpZiAod2VfYXJlX2NsaWVudCkgeworICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJzdGFydGluZyBhIG5ldyBjb25uZWN0aW9uIGFzIGEgY2xpZW50IHRvIHNvY2s6ICVkXG4iLCBzb2NrKSk7CisgICAgICAgIGNhY2hlcC0+Y29uID0gU1NMX25ldyhjbGllbnRfY3R4KTsKKworICAgICAgICAvKiBYWFg6IHNlc3Npb24gc2V0dGluZyA3MzUgKi8KKworICAgICAgICAvKiBjcmVhdGUgYSBiaW8gKi8KKworICAgICAgICBjYWNoZXAtPmJpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOyAvKiBUaGUgb25lIG9wZW5zc2wgcmVhZHMgZnJvbSAqLworICAgICAgICBjYWNoZXAtPndyaXRlX2JpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOyAvKiBvcGVuc3NsIHdyaXRlcyB0byAqLworCisgICAgICAgIEJJT19zZXRfbWVtX2VvZl9yZXR1cm4oY2FjaGVwLT5iaW8sIC0xKTsKKyAgICAgICAgQklPX3NldF9tZW1fZW9mX3JldHVybihjYWNoZXAtPndyaXRlX2JpbywgLTEpOworCisgICAgICAgIFNTTF9zZXRfYmlvKGNhY2hlcC0+Y29uLCBjYWNoZXAtPmJpbywgY2FjaGVwLT53cml0ZV9iaW8pOworICAgICAgICBTU0xfc2V0X2Nvbm5lY3Rfc3RhdGUoY2FjaGVwLT5jb24pOworICAgICAgICAKKyAgICB9IGVsc2UgeworICAgICAgICAvKiB3ZSdyZSB0aGUgc2VydmVyICovCisKKyAgICAgICAgY2FjaGVwLT5iaW8gPSBCSU9fbmV3KEJJT19zX21lbSgpKTsgLyogVGhlIG9uZSBvcGVuc3NsIHJlYWRzIGZyb20gKi8KKworICAgICAgICBpZiAoIWNhY2hlcC0+YmlvKQorICAgICAgICAgICAgRElFSEVSRSgiZmFpbGVkIHRvIGNyZWF0ZSB0aGUgcmVhZCBiaW8iKTsKKworICAgICAgICBjYWNoZXAtPndyaXRlX2JpbyA9IEJJT19uZXcoQklPX3NfbWVtKCkpOyAvKiBvcGVuc3NsIHdyaXRlcyB0byAqLworCisgICAgICAgIGlmICghY2FjaGVwLT53cml0ZV9iaW8pIHsKKyAgICAgICAgICAgIERJRUhFUkUoImZhaWxlZCB0byBjcmVhdGUgdGhlIHdyaXRlIGJpbyIpOworICAgICAgICAgICAgQklPX2ZyZWUoY2FjaGVwLT5iaW8pOworICAgICAgICB9CisKKyAgICAgICAgQklPX3NldF9tZW1fZW9mX3JldHVybihjYWNoZXAtPmJpbywgLTEpOworICAgICAgICBCSU9fc2V0X21lbV9lb2ZfcmV0dXJuKGNhY2hlcC0+d3JpdGVfYmlvLCAtMSk7CisKKyAgICAgICAgY2FjaGVwLT5jb24gPSBTU0xfbmV3KHNlcnZlcl9jdHgpOworCisgICAgICAgIGlmICghY2FjaGVwLT5jb24pIHsKKyAgICAgICAgICAgIEJJT19mcmVlKGNhY2hlcC0+YmlvKTsKKyAgICAgICAgICAgIEJJT19mcmVlKGNhY2hlcC0+d3JpdGVfYmlvKTsKKyAgICAgICAgICAgIERJRUhFUkUoImZhaWxlZCB0byBjcmVhdGUgdGhlIHdyaXRlIGJpbyIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiB0dXJuIG9uIGNvb2tpZSBleGNoYW5nZSAqLworICAgICAgICAvKiBYWFg6IHdlIG5lZWQgdG8gb25seSBjcmVhdGUgY2FjaGUgZW50cmllcyB3aGVuIGNvb2tpZXMgc3VjY2VlZCAqLworICAgICAgICBTU0xfc2V0X29wdGlvbnMoY2FjaGVwLT5jb24sIFNTTF9PUF9DT09LSUVfRVhDSEFOR0UpOworCisgICAgICAgIC8qIHNldCB0aGUgYmlvcyB0aGF0IG9wZW5zc2wgc2hvdWxkIHJlYWQgZnJvbSBhbmQgd3JpdGUgdG8gKi8KKyAgICAgICAgLyogKGFuZCB3ZSdsbCBkbyB0aGUgb3Bwb3NpdGUpICovCisgICAgICAgIFNTTF9zZXRfYmlvKGNhY2hlcC0+Y29uLCBjYWNoZXAtPmJpbywgY2FjaGVwLT53cml0ZV9iaW8pOworICAgICAgICBTU0xfc2V0X2FjY2VwdF9zdGF0ZShjYWNoZXAtPmNvbik7CisKKyAgICB9CisKKyAgICByZXR1cm4gY2FjaGVwOworfQorCitzdGF0aWMgYmlvX2NhY2hlICoKK2ZpbmRfb3JfY3JlYXRlX2Jpb19jYWNoZShpbnQgc29jaywgc3RydWN0IHNvY2thZGRyX2luICpmcm9tX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHdlX2FyZV9jbGllbnQpIHsKKyAgICBiaW9fY2FjaGUgKmNhY2hlcCA9IGZpbmRfYmlvX2NhY2hlKGZyb21fYWRkcik7CisgICAgaWYgKE5VTEwgPT0gY2FjaGVwKSB7CisgICAgICAgIC8qIG5vbmUgZm91bmQ7IG5lZWQgdG8gc3RhcnQgYSBuZXcgY29udGV4dCAqLworICAgICAgICBjYWNoZXAgPSBzdGFydF9uZXdfY2FjaGVkX2Nvbm5lY3Rpb24oc29jaywgZnJvbV9hZGRyLCB3ZV9hcmVfY2xpZW50KTsKKyAgICAgICAgaWYgKE5VTEwgPT0gY2FjaGVwKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIG9wZW4gYSBuZXcgZHRscyBjb25uZWN0aW9uXG4iKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gY2FjaGVwOworfSAgICAgICAKKworLyoKKyAqIFlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGludG8gb3BhcXVlIHRoYXQgd2lsbCBzdWJzZXF1ZW50bHkgZ2V0IHBhc3NlZCBiYWNrIAorICogdG8geW91ciBzZW5kIGZ1bmN0aW9uIGlmIHlvdSBsaWtlLiAgRm9yIGluc3RhbmNlLCB5b3UgbWlnaHQgd2FudCB0bworICogcmVtZW1iZXIgd2hlcmUgYSBQRFUgY2FtZSBmcm9tLCBzbyB0aGF0IHlvdSBjYW4gc2VuZCBhIHJlcGx5IHRoZXJlLi4uICAKKyAqLworCitzdGF0aWMgaW50CituZXRzbm1wX2R0bHN1ZHBfcmVjdihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqYnVmLCBpbnQgc2l6ZSwKKwkJIHZvaWQgKipvcGFxdWUsIGludCAqb2xlbmd0aCkKK3sKKyAgICBpbnQgICAgICAgICAgICAgcmMgPSAtMTsKKyAgICBzb2NrbGVuX3QgICAgICAgZnJvbWxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpOworICAgIG5ldHNubXBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrYWRkciAqZnJvbTsKKyAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWYgPSBOVUxMOworICAgIFg1MDkgICAgICAgICAgICAqcGVlcjsKKworICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CisgICAgICAgIC8qIGNyZWF0ZSBhIHRtU3RhdGVSZWYgY2FjaGUgZm9yIHNsb3cgZmlsbC1pbiAqLworICAgICAgICB0bVN0YXRlUmVmID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpOworCisgICAgICAgIGlmICh0bVN0YXRlUmVmID09IE5VTEwpIHsKKyAgICAgICAgICAgICpvcGFxdWUgPSBOVUxMOworICAgICAgICAgICAgKm9sZW5ndGggPSAwOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgYWRkcl9wYWlyID0gJnRtU3RhdGVSZWYtPmFkZHJlc3NlczsKKyAgICAgICAgdG1TdGF0ZVJlZi0+aGF2ZV9hZGRyZXNzZXMgPSAxOworICAgICAgICBmcm9tID0gKHN0cnVjdCBzb2NrYWRkciAqKSAmKGFkZHJfcGFpci0+cmVtb3RlX2FkZHIpOworCisJd2hpbGUgKHJjIDwgMCkgeworI2lmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKKyAgICAgICAgICAgIHJjID0gbmV0c25tcF91ZHBfcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCBmcm9tLCAmZnJvbWxlbiwgJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpKTsKKyNlbHNlCisgICAgICAgICAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgTkVUU05NUF9ET05UV0FJVCwgZnJvbSwgJmZyb21sZW4pOworI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKwkgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeworCQlicmVhazsKKwkgICAgfQorCX0KKworICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJyZWNlaXZlZCAlZCByYXcgYnl0ZXMgb24gd2F5IHRvIGR0bHNcbiIsIHJjKSk7CisgICAgICAgIGlmIChyYyA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInJlY3Zmcm9tIGZkICVkIGVyciAlZCAoXCIlc1wiKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyYyA+PSAwKSB7CisgICAgICAgICAgICAvKiBub3cgdGhhdCB3ZSBoYXZlIHRoZSBmcm9tIGFkZHJlc3MgZmlsbGVkIGluLCB3ZSBjYW4gbG9vayB1cAorICAgICAgICAgICAgICAgdGhlIG9wZW5zc2wgY29udGV4dCBhbmQgaGF2ZSBvcGVuc3NsIHJlYWQgYW5kIHByb2Nlc3MKKyAgICAgICAgICAgICAgIGFwcHJvcHJpYXRlbHkgKi8KKworICAgICAgICAgICAgLyogaWYgd2UgZG9uJ3QgaGF2ZSBhIGNhY2hlcCBmb3IgdGhpcyBjb25uZWN0aW9uIHRoZW4KKyAgICAgICAgICAgICAgIHdlJ3JlIHJlY2VpdmluZyBzb21ldGhpbmcgbmV3IGFuZCBhcmUgdGhlIHNlcnZlcgorICAgICAgICAgICAgICAgc2lkZSAqLworICAgICAgICAgICAgLyogWFhYOiBhbGxvdyBmb3IgYSBTTk1QIGNsaWVudCB0byBuZXZlciBhY2NlcHQgbmV3IGNvbm5zPyAqLworICAgICAgICAgICAgYmlvX2NhY2hlICpjYWNoZXAgPQorICAgICAgICAgICAgICAgIGZpbmRfb3JfY3JlYXRlX2Jpb19jYWNoZSh0LT5zb2NrLCAmYWRkcl9wYWlyLT5yZW1vdGVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VfQVJFX1NFUlZFUik7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSBjYWNoZXApIHsKKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodG1TdGF0ZVJlZik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiB3cml0ZSB0aGUgcmVjZWl2ZWQgYnVmZmVyIHRvIHRoZSBtZW1vcnktYmFzZWQgaW5wdXQgYmlvICovCisgICAgICAgICAgICBCSU9fd3JpdGUoY2FjaGVwLT5iaW8sIGJ1ZiwgcmMpOworCisgICAgICAgICAgICAvKiBYWFg6IGluIFdlcycgb3RoZXIgZXhhbXBsZSB3ZSBkbyBhIFNTTF9wZW5kaW5nKCkgY2FsbAorICAgICAgICAgICAgICAgdG9vIHRvIGVuc3VyZSB3ZSdyZSByZWFkeSB0byByZWFkLi4uICBpdCdzIHBvc3NpYmxlCisgICAgICAgICAgICAgICB0aGF0IGJ1ZmZlcmVkIHN0dWZmIGluIG9wZW5zc2wgd29uJ3QgYmUgY2F1Z2h0IGJ5IHRoZQorICAgICAgICAgICAgICAgbmV0LXNubXAgc2VsZWN0IGxvb3AgYmVjYXVzZSBpdCdzIGFscmVhZHkgYmVlbiBwdWxsZWQKKyAgICAgICAgICAgICAgIG91dDsgbmVlZCB0byBkZWFsIHdpdGggdGhpcykgKi8KKyAgICAgICAgICAgIHJjID0gU1NMX3JlYWQoY2FjaGVwLT5jb24sIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInJlY2VpdmVkICVkIGRlY29kZWQgYnl0ZXMgZnJvbSBkdGxzXG4iLCByYykpOworCisgICAgICAgICAgICBpZiAoQklPX2N0cmxfcGVuZGluZyhjYWNoZXAtPndyaXRlX2JpbykgPiAwKSB7CisgICAgICAgICAgICAgICAgLyogd2UgaGF2ZSBvdXRnb2luZyBkYXRhIHRvIHNlbmQ7IHByb2JhYmx5IERUTFMgbmVnb3RhdGlvbiAqLworCisgICAgICAgICAgICAgICAgdV9jaGFyIG91dGJ1Zls2NTUzNV07CisgICAgICAgICAgICAgICAgaW50IG91dHNpemU7CisgICAgICAgICAgICAgICAgaW50IHJjMjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvKiBmb3IgbWVtb3J5IGJpb3MsIHdlIG5vdyByZWFkIGZyb20gb3BlbnNzbCdzIHdyaXRlCisgICAgICAgICAgICAgICAgICAgYnVmZmVyIChpZSwgdGhlIHBhY2tldCB0byBnbyBvdXQpIGFuZCBzZW5kIGl0IG91dAorICAgICAgICAgICAgICAgICAgIHRoZSB1ZHAgcG9ydCBtYW51YWxseSAqLworICAgICAgICAgICAgICAgIG91dHNpemUgPSBCSU9fcmVhZChjYWNoZXAtPndyaXRlX2Jpbywgb3V0YnVmLCBzaXplb2Yob3V0YnVmKSk7CisgICAgICAgICAgICAgICAgaWYgKG91dHNpemUgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHNob3VsZCBhbHdheXMgYmUgdHJ1ZS4gKi8KKyNpZiBkZWZpbmVkKFhYWEZJWE1FKSAmJiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCisgICAgICAgICAgICAgICAgLyogWFhYOiBiZWZvcmUgdGhpcyBjYW4gd29yaywgd2UgbmVlZCB0byByZW1lbWJlciBhZGRyZXNzIHdlCisgICAgICAgICAgICAgICAgICAgcmVjZWl2ZWQgaXQgZnJvbSAoYWRkcl9wYWlyKSAqLworICAgICAgICAgICAgICAgICAgICByYzIgPSBuZXRzbm1wX3VkcF9zZW5kdG8oY2FjaGVwLT5zb2NrLCBhZGRyX3BhaXItPmxvY2FsX2FkZHIsIGFkZHJfcGFpci0+cmVtb3RlX2FkZHIsIG91dGJ1Ziwgb3V0c2l6ZSk7CisjZWxzZQorICAgICAgICAgICAgICAgICAgICByYzIgPSBzZW5kdG8odC0+c29jaywgb3V0YnVmLCBvdXRzaXplLCAwLCAmY2FjaGVwLT5zb2NrYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOworI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKworICAgICAgICAgICAgICAgICAgICBpZiAocmMyID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIHNlbmQgYSBEVExTIHNwZWNpZmljIHBhY2tldFxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChTU0xfcGVuZGluZyhjYWNoZXAtPmNvbikpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgImFjazogZ290IGhlcmUuLi4gIHBlbmRpbmdcbiIpOworICAgICAgICAgICAgICAgIGV4aXQoMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChyYyA9PSAtMSkgeworICAgICAgICAgICAgICAgIF9vcGVuc3NsX2xvZ19lcnJvcihyYywgY2FjaGVwLT5jb24sICJTU0xfcmVhZCIpOworICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKworICAgICAgICAgICAgICAgIGlmIChTU0xfZ2V0X2Vycm9yKGNhY2hlcC0+Y29uLCByYykgPT0gU1NMX0VSUk9SX1dBTlRfUkVBRCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOyAvKiBYWFg6IGl0J3Mgb2ssIGJ1dCB3aGF0J3MgdGhlIHJpZ2h0IHJldHVybj8gKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gcmM7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjaGFyICpzdHIgPSBuZXRzbm1wX3VkcF9mbXRhZGRyKE5VTEwsIGFkZHJfcGFpciwgc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSk7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWN2ZnJvbSBmZCAlZCBnb3QgJWQgYnl0ZXMgKGZyb20gJXMpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIHJjLCBzdHIpKTsKKyAgICAgICAgICAgICAgICBmcmVlKHN0cik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFhYWDogZGlzYWxsb3cgTlVMTCBhdXRoL2VuY3IgYWxncyBpbiBvdXIgaW1wbGVtZW50YXRpb25zICovCisgICAgICAgICAgICB0bVN0YXRlUmVmLT50cmFuc3BvcnRTZWN1cml0eUxldmVsID0gU05NUF9TRUNfTEVWRUxfQVVUSFBSSVY7CisKKyAgICAgICAgICAgIC8qIHVzZSB4NTA5IGNlcnQgdG8gZG8gbG9va3VwIHRvIHNlY25hbWUgaWYgRE5FIGluIGNhY2hlcCB5ZXQgKi8KKyAgICAgICAgICAgIGlmICghY2FjaGVwLT5zZWN1cml0eU5hbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAoTlVMTCAhPSAocGVlciA9IFNTTF9nZXRfcGVlcl9jZXJ0aWZpY2F0ZShjYWNoZXAtPmNvbikpKSB7CisgICAgICAgICAgICAgICAgICAgIFg1MDlfTkFNRSAqc3VibmFtZTsKKyAgICAgICAgICAgICAgICAgICAgY2hhciBuYW1lYnVmWzEwMjRdOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlIG9uZSAqLworICAgICAgICAgICAgICAgICAgICBzdWJuYW1lID0gWDUwOV9nZXRfc3ViamVjdF9uYW1lKHBlZXIpOworICAgICAgICAgICAgICAgICAgICBYNTA5X05BTUVfZ2V0X3RleHRfYnlfTklEKHN1Ym5hbWUsIE5JRF9jb21tb25OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWVidWYsIHNpemVvZihuYW1lYnVmKSk7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgImdvdCBjb21tb25uYW1lOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZWJ1ZikpOworICAgICAgICAgICAgICAgICAgICBjYWNoZXAtPnNlY3VyaXR5TmFtZSA9IHN0cmR1cChuYW1lYnVmKTsKKyAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAic2V0IFNlY05hbWUgdG86ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZXAtPnNlY3VyaXR5TmFtZSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogWFhYOiBkZXRlY3QgYW5kIHRocm93IG91dCBvdmVyZmxvdyBzZWNuYW1lIHNpemVzIHJhdGhlcgorICAgICAgICAgICAgICAgdGhhbiB0cnVuY2F0aW5nLiAqLworICAgICAgICAgICAgc3RybGNweSh0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUsIGNhY2hlcC0+c2VjdXJpdHlOYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lKSk7CisgICAgICAgICAgICB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVbc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSktMV0gPSAnXDAnOworICAgICAgICAgICAgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuID0gc3RybGVuKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSk7CisKKyAgICAgICAgICAgICpvcGFxdWUgPSB0bVN0YXRlUmVmOworICAgICAgICAgICAgKm9sZW5ndGggPSBzaXplb2YobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlKTsKKworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAicmVjdmZyb20gZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgdC0+c29jaywgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworCisKK3N0YXRpYyBpbnQKK25ldHNubXBfZHRsc3VkcF9zZW5kKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpidWYsIGludCBzaXplLAorCQkgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQoreworICAgIGludCByYyA9IC0xOworICAgIG5ldHNubXBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrYWRkciAqdG8gPSBOVUxMOworICAgIGJpb19jYWNoZSAqY2FjaGVwID0gTlVMTDsKKyAgICBuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKnRtU3RhdGVSZWYgPSBOVUxMOworICAgIHVfY2hhciBvdXRidWZbNjU1MzVdOworICAgIAorICAgIGlmIChvcGFxdWUgIT0gTlVMTCAmJiAqb3BhcXVlICE9IE5VTEwgJiYKKyAgICAgICAgKm9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkpIHsKKyAgICAgICAgdG1TdGF0ZVJlZiA9IChuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UgKikgKm9wYXF1ZTsKKworICAgICAgICBpZiAodG1TdGF0ZVJlZi0+aGF2ZV9hZGRyZXNzZXMpCisgICAgICAgICAgICBhZGRyX3BhaXIgPSAmKHRtU3RhdGVSZWYtPmFkZHJlc3Nlcyk7CisgICAgICAgIGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICAgdC0+ZGF0YV9sZW5ndGggPT0gc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSkKKyAgICAgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2FkZHJfcGFpciAqKSAodC0+ZGF0YSk7CisgICAgfSBlbHNlIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMICYmCisgICAgICAgICAgICAgICB0LT5kYXRhX2xlbmd0aCA9PSBzaXplb2YobmV0c25tcF9hZGRyX3BhaXIpKSB7CisgICAgICAgIGFkZHJfcGFpciA9IChuZXRzbm1wX2FkZHJfcGFpciAqKSAodC0+ZGF0YSk7CisgICAgfQorCisgICAgaWYgKE5VTEwgPT0gYWRkcl9wYWlyKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJkdGxzdWRwX3NlbmQ6IGNhbid0IGdldCBhZGRyZXNzIHRvIHNlbmQgdG9cbiIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopICYoYWRkcl9wYWlyLT5yZW1vdGVfYWRkcik7CisKKyAgICBpZiAoTlVMTCA9PSB0byB8fCBOVUxMID09IHQgfHwgdC0+c29jayA8PSAwKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJpbnZhbGlkIG5ldHNubXBfZHRsc3VkcF9zZW5kIHVzYWdlXG4iKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIHdlJ3JlIGFsd2F5cyBhIGNsaWVudCBpZiB3ZSdyZSBzZW5kaW5nIHRvIHNvbWV0aGluZyB1bmtub3duIHlldCAqLworICAgIGlmIChOVUxMID09CisgICAgICAgIChjYWNoZXAgPSBmaW5kX29yX2NyZWF0ZV9iaW9fY2FjaGUodC0+c29jaywgJmFkZHJfcGFpci0+cmVtb3RlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV0VfQVJFX0NMSUVOVCkpKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICBpZiAoIWNhY2hlcC0+c2VjdXJpdHlOYW1lICYmIHRtU3RhdGVSZWYgJiYgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuID4gMCkKKyAgICAgICAgY2FjaGVwLT5zZWN1cml0eU5hbWUgPSBzdHJkdXAodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lKTsKKyAgICAgICAgCisgICAgICAgIAorICAgIHsKKyAgICAgICAgY2hhciAqc3RyID0gbmV0c25tcF91ZHBfZm10YWRkcihOVUxMLCAodm9pZCAqKSBhZGRyX3BhaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSk7CisgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInNlbmQgJWQgYnl0ZXMgZnJvbSAlcCB0byAlcyBvbiBmZCAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZSwgYnVmLCBzdHIsIHQtPnNvY2spKTsKKyAgICAgICAgZnJlZShzdHIpOworICAgIH0KKyAgICByYyA9IFNTTF93cml0ZShjYWNoZXAtPmNvbiwgYnVmLCBzaXplKTsKKyAgICBpZiAocmMgPCAwKSB7CisgICAgICAgIF9vcGVuc3NsX2xvZ19lcnJvcihyYywgY2FjaGVwLT5jb24sICJTU0xfd3JpdGUiKTsKKyAgICB9CisKKyAgICAvKiBmb3IgbWVtb3J5IGJpb3MsIHdlIG5vdyByZWFkIGZyb20gb3BlbnNzbCdzIHdyaXRlIGJ1ZmZlciAoaWUsCisgICAgICAgdGhlIHBhY2tldCB0byBnbyBvdXQpIGFuZCBzZW5kIGl0IG91dCB0aGUgdWRwIHBvcnQgbWFudWFsbHkgKi8KKyAgICByYyA9IEJJT19yZWFkKGNhY2hlcC0+d3JpdGVfYmlvLCBvdXRidWYsIHNpemVvZihvdXRidWYpKTsKKyAgICBpZiAocmMgPD0gMCkgeworICAgICAgICAvKiBpbiB0aGVvcnkgYW4gb2sgdGhpbmcgKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorI2lmIGRlZmluZWQoRklYTUUpICYmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKKyAgICAvKiBYWFg6IGJlZm9yZSB0aGlzIGNhbiB3b3JrLCB3ZSBuZWVkIHRvIHJlbWVtYmVyIGFkZHJlc3Mgd2UKKyAgICAgICByZWNlaXZlZCBpdCBmcm9tIChhZGRyX3BhaXIpICovCisgICAgcmMgPSBuZXRzbm1wX3VkcF9zZW5kdG8oY2FjaGVwLT5zb2NrLCAmY2FjaGVwLT5zb2NrYWRkciAgcmVtb3RlICBhZGRyX3BhaXIgPyAmKGFkZHJfcGFpci0+bG9jYWxfYWRkcikgOiBOVUxMLCB0bywgb3V0YnVmLCByYyk7CisjZWxzZQorICAgIHJjID0gc2VuZHRvKHQtPnNvY2ssIG91dGJ1ZiwgcmMsIDAsICZjYWNoZXAtPnNvY2thZGRyLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSk7CisjZW5kaWYgLyogbGludXggJiYgSVBfUEtUSU5GTyAqLworCisgICAgcmV0dXJuIHJjOworfQorCisKKworc3RhdGljIGludAorbmV0c25tcF9kdGxzdWRwX2Nsb3NlKG5ldHNubXBfdHJhbnNwb3J0ICp0KQoreworICAgIGludCByYyA9IC0xOworICAgIC8qIFhYWDogaXNzdWUgYSBwcm9wZXIgZHRscyBjbG9zdXJlIG5vdGlmaWNhdGlvbihzKSAqLworICAgIGlmICh0LT5zb2NrID49IDApIHsKKyNpZm5kZWYgSEFWRV9DTE9TRVNPQ0tFVAorICAgICAgICByYyA9IGNsb3NlKHQtPnNvY2spOworI2Vsc2UKKyAgICAgICAgcmMgPSBjbG9zZXNvY2tldCh0LT5zb2NrKTsKKyNlbmRpZgorICAgICAgICB0LT5zb2NrID0gLTE7CisgICAgfQorICAgIHJldHVybiByYzsKK30KKworLyoKKyAqIE9wZW4gYSBEVExTLWJhc2VkIHRyYW5zcG9ydCBmb3IgU05NUC4gIExvY2FsIGlzIFRSVUUgaWYgYWRkciBpcyB0aGUgbG9jYWwKKyAqIGFkZHJlc3MgdG8gYmluZCB0byAoaS5lLiB0aGlzIGlzIGEgc2VydmVyLXR5cGUgc2Vzc2lvbik7IG90aGVyd2lzZSBhZGRyIGlzIAorICogdGhlIHJlbW90ZSBhZGRyZXNzIHRvIHNlbmQgdGhpbmdzIHRvLiAgCisgKi8KKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9kdGxzdWRwX3RyYW5zcG9ydChzdHJ1Y3Qgc29ja2FkZHJfaW4gKmFkZHIsIGludCBsb2NhbCkKK3sKKyAgICBuZXRzbm1wX3RyYW5zcG9ydCAqdCA9IE5VTEw7CisgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKKyAgICBjaGFyICAgICAgICAgICAqc3RyID0gTlVMTDsKKyAgICBjaGFyICAgICAgICAgICAqY2xpZW50X3NvY2tldCA9IE5VTEw7CisgICAgbmV0c25tcF9hZGRyX3BhaXIgYWRkcl9wYWlyOworCisgICAgaWYgKGFkZHIgPT0gTlVMTCB8fCBhZGRyLT5zaW5fZmFtaWx5ICE9IEFGX0lORVQpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgbWVtc2V0KCZhZGRyX3BhaXIsIDAsIHNpemVvZihuZXRzbm1wX2FkZHJfcGFpcikpOworICAgIG1lbWNweSgmKGFkZHJfcGFpci5yZW1vdGVfYWRkciksIGFkZHIsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHN0ciA9IG5ldHNubXBfdWRwX2ZtdGFkZHIoTlVMTCwgKHZvaWQgKikmYWRkcl9wYWlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG5ldHNubXBfYWRkcl9wYWlyKSk7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAib3BlbiAlcyAlc1xuIiwgbG9jYWwgPyAibG9jYWwiIDogInJlbW90ZSIsCisgICAgICAgICAgICAgICAgc3RyKSk7CisgICAgZnJlZShzdHIpOworCisgICAgdC0+ZG9tYWluID0gbmV0c25tcERUTFNVRFBEb21haW47CisgICAgdC0+ZG9tYWluX2xlbmd0aCA9IG5ldHNubXBEVExTVURQRG9tYWluX2xlbjsKKworICAgIHQtPnNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAib3Blbm5lZCBzb2NrZXQgJWQgYXMgbG9jYWw9JWRcbiIsIHQtPnNvY2ssCisgICAgICAgICAgICAgICAgbG9jYWwpKTsKKyAgICBpZiAodC0+c29jayA8IDApIHsKKyAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogWFhYOiBQb3RlbnRpYWxseSBzZXQgc29jayBvcHRzIGhlcmUgKFNPX1NOREJVRi9TT19SQ1ZfQlVGKSAqLworICAgIC8qIFhYWDogYW5kIGJ1ZiBzaXplICovCisgICAgX25ldHNubXBfdWRwX3NvY2tvcHRfc2V0KHQtPnNvY2ssIGxvY2FsKTsKKworICAgIGlmIChsb2NhbCkgeworICAgICAgICAvKgorICAgICAgICAgKiBUaGlzIHNlc3Npb24gaXMgaW50ZW5lZGVkIGFzIGEgc2VydmVyLCBzbyB3ZSBtdXN0IGJpbmQgb24gdG8gdGhlCisgICAgICAgICAqIGdpdmVuIElQIGFkZHJlc3MsIHdoaWNoIG1heSBpbmNsdWRlIGFuIGludGVyZmFjZSBhZGRyZXNzLCBvciBjb3VsZAorICAgICAgICAgKiBiZSBJTkFERFJfQU5ZLCBidXQgY2VydGFpbmx5IGluY2x1ZGVzIGEgcG9ydCBudW1iZXIuCisgICAgICAgICAqLworCisgICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKikgbWFsbG9jKDYpOworICAgICAgICBpZiAodC0+bG9jYWwgPT0gTlVMTCkgeworICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIG1lbWNweSh0LT5sb2NhbCwgKHVfY2hhciAqKSAmIChhZGRyLT5zaW5fYWRkci5zX2FkZHIpLCA0KTsKKyAgICAgICAgdC0+bG9jYWxbNF0gPSAoaHRvbnMoYWRkci0+c2luX3BvcnQpICYgMHhmZjAwKSA+PiA4OworICAgICAgICB0LT5sb2NhbFs1XSA9IChodG9ucyhhZGRyLT5zaW5fcG9ydCkgJiAweDAwZmYpID4+IDA7CisgICAgICAgIHQtPmxvY2FsX2xlbmd0aCA9IDY7CisKKyNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCisgICAgICAgIHsgCisgICAgICAgICAgICBpbnQgc29ja29wdCA9IDE7CisgICAgICAgICAgICBpZiAoc2V0c29ja29wdCh0LT5zb2NrLCBTT0xfSVAsIElQX1BLVElORk8sICZzb2Nrb3B0LCBzaXplb2Ygc29ja29wdCkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJjb3VsZG4ndCBzZXQgSVBfUEtUSU5GTzogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJzZXQgSVBfUEtUSU5GT1xuIikpOworICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwKKyAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKKyAgICAgICAgaWYgKHJjICE9IDApIHsKKyAgICAgICAgICAgIG5ldHNubXBfZHRsc3VkcF9jbG9zZSh0KTsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB0LT5kYXRhID0gTlVMTDsKKyAgICAgICAgdC0+ZGF0YV9sZW5ndGggPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qCisgICAgICAgICAqIFRoaXMgaXMgYSBjbGllbnQgc2Vzc2lvbi4gIElmIHdlJ3ZlIGJlZW4gZ2l2ZW4gYQorICAgICAgICAgKiBjbGllbnQgYWRkcmVzcyB0byBzZW5kIGZyb20sIHRoZW4gYmluZCB0byB0aGF0LgorICAgICAgICAgKiBPdGhlcndpc2UgdGhlIHNlbmQgd2lsbCB1c2UgInNvbWV0aGluZyBzZW5zaWJsZSIuCisgICAgICAgICAqLworICAgICAgICBjbGllbnRfc29ja2V0ID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUik7CisgICAgICAgIGlmIChjbGllbnRfc29ja2V0KSB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gY2xpZW50X2FkZHI7CisgICAgICAgICAgICBuZXRzbm1wX3NvY2thZGRyX2luMigmY2xpZW50X2FkZHIsIGNsaWVudF9zb2NrZXQsIE5VTEwpOworICAgICAgICAgICAgYWRkcl9wYWlyLmxvY2FsX2FkZHIgPSBjbGllbnRfYWRkci5zaW5fYWRkcjsKKyAgICAgICAgICAgIGNsaWVudF9hZGRyLnNpbl9wb3J0ID0gMDsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgImJpbmRpbmcgc29ja2V0OiAlZFxuIiwgdC0+c29jaykpOworICAgICAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xpZW50X2FkZHIsCisgICAgICAgICAgICAgICAgICBzaXplb2Yoc3RydWN0IHNvY2thZGRyKSk7CisgICAgICAgICAgICBpZiAoIHJjICE9IDAgKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiZmFpbGVkIHRvIGJpbmQgZm9yIGNsaWVudGFkZHI6ICVkICVzXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX2R0bHN1ZHBfY2xvc2UodCk7CisgICAgICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0ciA9IG5ldHNubXBfdWRwX2ZtdGFkZHIoTlVMTCwgKHZvaWQgKikmYWRkcl9wYWlyLAorICAgICAgICAgICAgICAgICBzaXplb2YobmV0c25tcF9hZGRyX3BhaXIpKTsKKyAgICAgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAiY2xpZW50IG9wZW4gJXNcbiIsIHN0cikpOworICAgICAgICBmcmVlKHN0cik7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogU2F2ZSB0aGUgKHJlbW90ZSkgYWRkcmVzcyBpbiB0aGUKKyAgICAgICAgICogdHJhbnNwb3J0LXNwZWNpZmljIGRhdGEgcG9pbnRlciBmb3IgbGF0ZXIgdXNlIGJ5IG5ldHNubXBfZHRsc3VkcF9zZW5kLgorICAgICAgICAgKi8KKworICAgICAgICB0LT5kYXRhID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX2FkZHJfcGFpcik7CisgICAgICAgIHQtPnJlbW90ZSA9ICh1X2NoYXIgKiltYWxsb2MoNik7CisgICAgICAgIGlmICh0LT5kYXRhID09IE5VTEwgfHwgdC0+cmVtb3RlID09IE5VTEwpIHsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkodC0+cmVtb3RlLCAodV9jaGFyICopICYgKGFkZHItPnNpbl9hZGRyLnNfYWRkciksIDQpOworICAgICAgICB0LT5yZW1vdGVbNF0gPSAoaHRvbnMoYWRkci0+c2luX3BvcnQpICYgMHhmZjAwKSA+PiA4OworICAgICAgICB0LT5yZW1vdGVbNV0gPSAoaHRvbnMoYWRkci0+c2luX3BvcnQpICYgMHgwMGZmKSA+PiAwOworICAgICAgICB0LT5yZW1vdGVfbGVuZ3RoID0gNjsKKyAgICAgICAgbWVtY3B5KHQtPmRhdGEsICZhZGRyX3BhaXIsIHNpemVvZihuZXRzbm1wX2FkZHJfcGFpcikpOworICAgICAgICB0LT5kYXRhX2xlbmd0aCA9IHNpemVvZihuZXRzbm1wX2FkZHJfcGFpcik7CisKKyAgICAgICAgLyogZHRscyBuZWVkcyB0byBiaW5kIHRoZSBzb2NrZXQgZm9yIFNTTF93cml0ZSB0byB3b3JrICovCisgICAgICAgIGlmIChjb25uZWN0KHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwgc2l6ZW9mKCphZGRyKSkgPT0gLTEpCisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZHRsczogZmFpbGVkIHRvIGNvbm5lY3RcbiIpOworCisgICAgfQorCisgICAgLyoKKyAgICAgKiAxNi1iaXQgbGVuZ3RoIGZpZWxkLCA4IGJ5dGUgRFRMUyBoZWFkZXIsIDIwIGJ5dGUgSVB2NCBoZWFkZXIgIAorICAgICAqLworCisgICAgdC0+bXNnTWF4U2l6ZSA9IDB4ZmZmZiAtIDggLSAyMDsKKyAgICB0LT5mX3JlY3YgICAgID0gbmV0c25tcF9kdGxzdWRwX3JlY3Y7CisgICAgdC0+Zl9zZW5kICAgICA9IG5ldHNubXBfZHRsc3VkcF9zZW5kOworICAgIHQtPmZfY2xvc2UgICAgPSBuZXRzbm1wX2R0bHN1ZHBfY2xvc2U7CisgICAgdC0+Zl9hY2NlcHQgICA9IE5VTEw7CisgICAgdC0+Zl9mbXRhZGRyICA9IG5ldHNubXBfdWRwX2ZtdGFkZHI7CisgICAgdC0+ZmxhZ3MgPSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX1RVTk5FTEVEOworCisgICAgcmV0dXJuIHQ7Cit9CisKKwordm9pZAorbmV0c25tcF9kdGxzdWRwX2FnZW50X2NvbmZpZ190b2tlbnNfcmVnaXN0ZXIodm9pZCkKK3sKK30KKworCisKKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9kdGxzdWRwX2NyZWF0ZV90c3RyaW5nKGNvbnN0IGNoYXIgKnN0ciwgaW50IGxvY2FsLAorCQkJICAgY29uc3QgY2hhciAqZGVmYXVsdF90YXJnZXQpCit7CisgICAgc3RydWN0IHNvY2thZGRyX2luIGFkZHI7CisKKyAgICBpZiAobmV0c25tcF9zb2NrYWRkcl9pbjIoJmFkZHIsIHN0ciwgZGVmYXVsdF90YXJnZXQpKSB7CisgICAgICAgIHJldHVybiBuZXRzbm1wX2R0bHN1ZHBfdHJhbnNwb3J0KCZhZGRyLCBsb2NhbCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCisKK25ldHNubXBfdHJhbnNwb3J0ICoKK25ldHNubXBfZHRsc3VkcF9jcmVhdGVfb3N0cmluZyhjb25zdCB1X2NoYXIgKiBvLCBzaXplX3Qgb19sZW4sIGludCBsb2NhbCkKK3sKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKworICAgIGlmIChvX2xlbiA9PSA2KSB7CisgICAgICAgIHVuc2lnbmVkIHNob3J0IHBvcnR0bXAgPSAob1s0XSA8PCA4KSArIG9bNV07CisgICAgICAgIGFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICAgIG1lbWNweSgodV9jaGFyICopICYgKGFkZHIuc2luX2FkZHIuc19hZGRyKSwgbywgNCk7CisgICAgICAgIGFkZHIuc2luX3BvcnQgPSBodG9ucyhwb3J0dG1wKTsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfZHRsc3VkcF90cmFuc3BvcnQoJmFkZHIsIGxvY2FsKTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNkZWZpbmUgTE9HQU5ERElFKG1zZykgeyBzbm1wX2xvZyhMT0dfRVJSLCAiJXNcbiIsIG1zZyk7IHJldHVybiAwOyB9CisKK3N0YXRpYyBpbnQgaGF2ZV9kb25lX2luaXQgPSAwOworCitzdGF0aWMgaW50CitkdGxzdWRwX2Jvb3RzdHJhcChpbnQgbWFqb3JpZCwgaW50IG1pbm9yaWQsIHZvaWQgKnNlcnZlcmFyZywgdm9pZCAqY2xpZW50YXJnKSB7CisgICAgY29uc3QgY2hhciAqY2VydGZpbGU7CisgICAgRVZQX1BLRVkgKmtleSA9IE5VTEw7CisgICAgWDUwOSAqY2VydCA9IE5VTEw7CisgICAgQklPICprZXliaW8gPSBOVUxMOworCisgICAgLyogZG9uJ3QgZG8gdGhpcyBtb3JlIHRoYW4gb25jZSAqLworICAgIGlmIChoYXZlX2RvbmVfaW5pdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaGF2ZV9kb25lX2luaXQgPSAxOworCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogU2V0IHVwIHRoZSBjbGllbnQgY29udGV4dAorICAgICAqLworICAgIGNsaWVudF9jdHggPSBTU0xfQ1RYX25ldyhEVExTdjFfY2xpZW50X21ldGhvZCgpKTsKKyAgICBpZiAoIWNsaWVudF9jdHgpIHsKKyAgICAgICAgTE9HQU5ERElFKCJjYW4ndCBjcmVhdGUgYSBuZXcgY29udGV4dCIpOworICAgIH0KKyAgICBTU0xfQ1RYX3NldF9yZWFkX2FoZWFkIChjbGllbnRfY3R4LCAxKTsgLyogUmVxdWlyZWQgZm9yIERUTFMgKi8KKyAgICAgICAgCisgICAgU1NMX0NUWF9zZXRfdmVyaWZ5KGNsaWVudF9jdHgsCisgICAgICAgICAgICAgICAgICAgICAgIFNTTF9WRVJJRllfUEVFUnwKKyAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9GQUlMX0lGX05PX1BFRVJfQ0VSVHwKKyAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9DTElFTlRfT05DRSwKKyAgICAgICAgICAgICAgICAgICAgICAgJnZlcmlmeV9jYWxsYmFjayk7CisKKyAgICBrZXliaW8gPSBCSU9fbmV3KEJJT19zX2ZpbGUoKSk7CisgICAgaWYgKCFrZXliaW8pCisgICAgICAgIExPR0FORERJRSAoImVycm9yIGNyZWF0aW5nIGJpbyBmb3IgcmVhZGluZyBwdWJsaWMga2V5Iik7CisKKyAgICBjZXJ0ZmlsZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9DTElFTlRfUFVCKTsKKworICAgIERFQlVHTVNHVEwoKCJkdGxzdWRwIiwgInVzaW5nIHB1YmxpYyBrZXk6ICVzXG4iLCBjZXJ0ZmlsZSkpOworICAgIGlmIChCSU9fcmVhZF9maWxlbmFtZShrZXliaW8sIGNlcnRmaWxlKSA8PTApCisgICAgICAgIExPR0FORERJRSAoImVycm9yIHJlYWRpbmcgcHVibGljIGtleSIpOworCisgICAgY2VydCA9IFBFTV9yZWFkX2Jpb19YNTA5X0FVWChrZXliaW8sIE5VTEwsIE5VTEwsIE5VTEwpOworICAgIGlmICghY2VydCkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gbG9hZCBwdWJsaWMga2V5Iik7CisKKyAgICAvKiBYWFg6IG1lbSBsZWFrIG9uIHByZXZpb3VzIGtleWJpbz8gKi8KKworICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QUklWKTsKKworICAgIGtleWJpbyA9IEJJT19uZXcoQklPX3NfZmlsZSgpKTsKKyAgICBpZiAoIWtleWJpbykKKyAgICAgICAgTE9HQU5ERElFICgiZXJyb3IgY3JlYXRpbmcgYmlvIGZvciByZWFkaW5nIHByaXZhdGUga2V5Iik7CisKKyAgICBERUJVR01TR1RMKCgiZHRsc3VkcCIsICJ1c2luZyBwcml2YXRlIGtleTogJXNcbiIsIGNlcnRmaWxlKSk7CisgICAgaWYgKCFrZXliaW8gfHwKKyAgICAgICAgQklPX3JlYWRfZmlsZW5hbWUoa2V5YmlvLCBjZXJ0ZmlsZSkgPD0gMCkKKyAgICAgICAgTE9HQU5ERElFICgiZXJyb3IgcmVhZGluZyBwcml2YXRlIGtleSIpOworCisgICAga2V5ID0gUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkoa2V5YmlvLCBOVUxMLCBOVUxMLCBOVUxMKTsKKyAgICAKKyAgICBpZiAoIWtleSkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gbG9hZCBwcml2YXRlIGtleSIpOworCisKKyAgICBpZiAoU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY2xpZW50X2N0eCwgY2VydCkgPD0gMCkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gc2V0IHRoZSBjZXJ0aWZpY2F0ZSB0byB1c2UiKTsKKworICAgIGlmIChTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5KGNsaWVudF9jdHgsIGtleSkgPD0gMCkKKyAgICAgICAgTE9HQU5ERElFKCJmYWlsZWQgdG8gc2V0IHRoZSBwcml2YXRlIGtleSB0byB1c2UiKTsKKworICAgIGlmICghU1NMX0NUWF9jaGVja19wcml2YXRlX2tleShjbGllbnRfY3R4KSkKKyAgICAgICAgTE9HQU5ERElFKCJwdWJsaWMgYW5kIHByaXZhdGUga2V5cyBpbmNvbXBhdGlibGUiKTsKKyAgICAKKworICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9DRVJUUyk7CisKKyAgICAvKiBYWFg6IGFsc28gbmVlZCB0byBtYXRjaCBpbmRpdmlkdWFsIGNlcnQgdG8gaW5kaXYuIGhvc3QgKi8KKworICAgIGlmKCEgU1NMX0NUWF9sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2xpZW50X2N0eCwgY2VydGZpbGUsIE5VTEwpKSB7CisgICAgICAgIExPR0FORERJRSgiZmFpbGVkIHRvIGxvYWQgdHJ1c3RzdG9yZSIpOworICAgICAgICAvKiBIYW5kbGUgZmFpbGVkIGxvYWQgaGVyZSAqLworICAgIH0KKworICAgIGlmICghU1NMX0NUWF9zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoY2xpZW50X2N0eCkpIHsKKyAgICAgICAgTE9HQU5ERElFICgiZmFpbGVkIHRvIHNldCBkZWZhdWx0IHZlcmlmeSBwYXRoIik7CisgICAgfQorCisgICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgICAgICogU2V0IHVwIHRoZSBzZXJ2ZXIgY29udGV4dAorICAgICAqLworICAgIC8qIHNldHRpbmcgdXAgZm9yIHNzbCAqLworICAgIHNlcnZlcl9jdHggPSBTU0xfQ1RYX25ldyhEVExTdjFfc2VydmVyX21ldGhvZCgpKTsKKyAgICBpZiAoIXNlcnZlcl9jdHgpIHsKKyAgICAgICAgTE9HQU5ERElFKCJjYW4ndCBjcmVhdGUgYSBuZXcgY29udGV4dCIpOworICAgIH0KKworICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOworCisgICAgaWYgKFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlX2ZpbGUoc2VydmVyX2N0eCwgY2VydGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU1NMX0ZJTEVUWVBFX1BFTSkgPCAxKSB7CisgICAgICAgIExPR0FORERJRSgiZmFpbGQgdG8gbG9hZCBjZXJ0Iik7CisgICAgfQorICAgIAorICAgIGNlcnRmaWxlID0gbmV0c25tcF9kc19nZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QUklWKTsKKworICAgIGlmIChTU0xfQ1RYX3VzZV9Qcml2YXRlS2V5X2ZpbGUoc2VydmVyX2N0eCwgY2VydGZpbGUsIFNTTF9GSUxFVFlQRV9QRU0pIDwgMSkgeworICAgICAgICBMT0dBTkRESUUoImZhaWxkIHRvIGxvYWQga2V5Iik7CisgICAgfQorCisgICAgU1NMX0NUWF9zZXRfcmVhZF9haGVhZChzZXJ2ZXJfY3R4LCAxKTsKKworCisgICAgY2VydGZpbGUgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX0NFUlRTKTsKKyAgICBpZighIFNTTF9DVFhfbG9hZF92ZXJpZnlfbG9jYXRpb25zKHNlcnZlcl9jdHgsIGNlcnRmaWxlLCBOVUxMKSkgeworICAgICAgICBMT0dBTkRESUUoImZhaWxlZCB0byBsb2FkIHRydXN0c3RvcmUiKTsKKyAgICAgICAgLyogSGFuZGxlIGZhaWxlZCBsb2FkIGhlcmUgKi8KKyAgICB9CisKKyAgICBTU0xfQ1RYX3NldF92ZXJpZnkoc2VydmVyX2N0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgU1NMX1ZFUklGWV9QRUVSfAorICAgICAgICAgICAgICAgICAgICAgICBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUfAorICAgICAgICAgICAgICAgICAgICAgICBTU0xfVkVSSUZZX0NMSUVOVF9PTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAmdmVyaWZ5X2NhbGxiYWNrKTsKKworICAgIHJldHVybiAwOworfQorCisKK3ZvaWQKK25ldHNubXBfZHRsc3VkcF9jdG9yKHZvaWQpCit7CisgICAgREVCVUdNU0dUTCgoImR0bHN1ZHAiLCAicmVnaXN0ZXJpbmcgRFRMUyBjb25zdHJ1Y3RvclxuIikpOworCisgICAgLyogY29uZmlnIHNldHRpbmdzICovCisKKyAgICAvKiBib290c3RyYXAgc3NsIHNpbmNlIHdlJ2xsIG5lZWQgaXQgKi8KKyAgICBuZXRzbm1wX2luaXRfb3BlbnNzbCgpOworCisgICAgLyoKKyAgICAgKiBmb3IgdGhlIGNsaWVudAorICAgICAqLworCisgICAgLyogcGVtIGZpbGUgb2YgdmFsaWQgc2VydmVyIENFUlQgQ0FzICovCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOVNlcnZlckNlcnRzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfWDUwOV9TRVJWRVJfQ0VSVFMpOworCisgICAgLyogdGhlIHB1YmxpYyBjbGllbnQgY2VydCB0byBhdXRoZW50aWNhdGUgd2l0aCAqLworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgImRlZlg1MDlDbGllbnRQdWIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9QVUIpOworCisgICAgLyogdGhlIHByaXZhdGUgY2xpZW50IGNlcnQgdG8gYXV0aGVudGljYXRlIHdpdGggKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJkZWZYNTA5Q2xpZW50UHJpdiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1g1MDlfQ0xJRU5UX1BSSVYpOworCisgICAgLyoKKyAgICAgKiBmb3IgdGhlIHNlcnZlcgorICAgICAqLworCisgICAgLyogVGhlIGxpc3Qgb2YgdmFsaWQgY2xpZW50IGtleXMgdG8gYWNjZXB0IChvciBDQXMgSSB0aGluaykgKi8KKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJkZWZYNTA5Q2xpZW50Q2VydHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X0NMSUVOVF9DRVJUUyk7CisKKyAgICAvKiBUaGUgWDUwOSBzZXJ2ZXIga2V5IHRvIHVzZSAqLworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9PQ1RFVF9TVFIsICJzbm1wIiwgImRlZlg1MDlTZXJ2ZXJQdWIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QVUIpOworCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX09DVEVUX1NUUiwgInNubXAiLCAiZGVmWDUwOVNlcnZlclByaXYiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9YNTA5X1NFUlZFUl9QUklWKTsKKworICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcCIsICJBbGxvd1NlbGZTaWduZWRYNTA5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQUxMT1dfU0VMRl9TSUdORUQpOworCisgICAgLyoKKyAgICAgKiByZWdpc3RlciBvdXIgYm9vdC1zdHJhcHBpbmcgbmVlZHMKKyAgICAgKi8KKyAgICBzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKKwkJCSAgIFNOTVBfQ0FMTEJBQ0tfUE9TVF9SRUFEX0NPTkZJRywKKwkJCSAgIGR0bHN1ZHBfYm9vdHN0cmFwLCBOVUxMKTsKKworICAgIGR0bHN1ZHBEb21haW4ubmFtZSA9IG5ldHNubXBEVExTVURQRG9tYWluOworICAgIGR0bHN1ZHBEb21haW4ubmFtZV9sZW5ndGggPSBuZXRzbm1wRFRMU1VEUERvbWFpbl9sZW47CisgICAgZHRsc3VkcERvbWFpbi5wcmVmaXggPSAoY29uc3QgY2hhcioqKWNhbGxvYygyLCBzaXplb2YoY2hhciAqKSk7CisgICAgZHRsc3VkcERvbWFpbi5wcmVmaXhbMF0gPSAiZHRsc3VkcCI7CisKKyAgICBkdGxzdWRwRG9tYWluLmZfY3JlYXRlX2Zyb21fdHN0cmluZyAgICAgPSBOVUxMOworICAgIGR0bHN1ZHBEb21haW4uZl9jcmVhdGVfZnJvbV90c3RyaW5nX25ldyA9IG5ldHNubXBfZHRsc3VkcF9jcmVhdGVfdHN0cmluZzsKKyAgICBkdGxzdWRwRG9tYWluLmZfY3JlYXRlX2Zyb21fb3N0cmluZyAgICAgPSBuZXRzbm1wX2R0bHN1ZHBfY3JlYXRlX29zdHJpbmc7CisKKyAgICBuZXRzbm1wX3Rkb21haW5fcmVnaXN0ZXIoJmR0bHN1ZHBEb21haW4pOworfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wU1NIRG9tYWluLmMgYi9zbm1wbGliL3NubXBTU0hEb21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNThjMmEzCi0tLSAvZGV2L251bGwKKysrIGIvc25tcGxpYi9zbm1wU1NIRG9tYWluLmMKQEAgLTAsMCArMSw5NjcgQEAKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8ZXJybm8uaD4KKworI2luY2x1ZGUgPGxpYnNzaDIuaD4KKyNpbmNsdWRlIDxsaWJzc2gyX3NmdHAuaD4KKworI2lmZGVmIEhBVkVfU1lTX1BBUkFNX0gKKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KKyNlbmRpZgorI2lmIEhBVkVfU1RSSU5HX0gKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNlbHNlCisjaW5jbHVkZSA8c3RyaW5ncy5oPgorI2VuZGlmCisjaWYgSEFWRV9TVERMSUJfSAorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2VuZGlmCisjaWYgSEFWRV9VTklTVERfSAorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9TWVNfU09DS0VUX0gKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjZW5kaWYKKyNpZiBIQVZFX1NZU19VTl9ICisjaW5jbHVkZSA8c3lzL3VuLmg+CisjZW5kaWYKKyNpZiBIQVZFX05FVElORVRfSU5fSAorI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KKyNlbmRpZgorI2lmIEhBVkVfQVJQQV9JTkVUX0gKKyNpbmNsdWRlIDxhcnBhL2luZXQuaD4KKyNlbmRpZgorI2lmIEhBVkVfRkNOVExfSAorI2luY2x1ZGUgPGZjbnRsLmg+CisjZW5kaWYKKworI2lmIEhBVkVfV0lOU09DS19ICisjaW5jbHVkZSA8d2luc29jazIuaD4KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPgorI2VuZGlmCisKKyNpZiBIQVZFX0RNQUxMT0NfSAorI2luY2x1ZGUgPGRtYWxsb2MuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHB3ZC5oPgorCisjaWZuZGVmIE1BWFBBVEhMRU4KKyN3YXJuIG5vIHN5c3RlbSBtYXggcGF0aCBsZW5ndGggZGV0ZWN0ZWQKKyNkZWZpbmUgTUFYUEFUSExFTiAyMDQ4CisjZW5kaWYKKworI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CisjaW5jbHVkZSA8bmV0LXNubXAvb3V0cHV0X2FwaS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvdG9vbHMuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3RyYW5zcG9ydC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFVEUERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFRDUERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcFNTSERvbWFpbi5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvcmVhZF9jb25maWcuaD4KKworI2RlZmluZSBNQVhfTkFNRV9MRU5HVEggMTI3CisKKyNkZWZpbmUgTkVUU05NUF9TU0hUT1NOTVBfVkVSU0lPTjEgICAgICAxCisjZGVmaW5lIE5FVFNOTVBfTUFYX1NTSFRPU05NUF9WRVJTSU9OICAgMQorCisjZGVmaW5lIERFRkFVTFRfU09DS19OQU1FICJzc2hkb21haW5zb2NrZXQiCisKK3R5cGVkZWYgc3RydWN0IG5ldHNubXBfc3NoX2FkZHJfcGFpcl9zIHsKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gcmVtb3RlX2FkZHI7CisgICAgc3RydWN0IGluX2FkZHIgbG9jYWxfYWRkcjsKKyAgICBMSUJTU0gyX1NFU1NJT04gKnNlc3Npb247CisgICAgTElCU1NIMl9DSEFOTkVMICpjaGFubmVsOworICAgIGNoYXIgdXNlcm5hbWVbTUFYX05BTUVfTEVOR1RIKzFdOworICAgIHN0cnVjdCBzb2NrYWRkcl91biB1bml4X3NvY2tldF9lbmQ7CisgICAgY2hhciBzb2NrZXRfcGF0aFtNQVhQQVRITEVOXTsKK30gbmV0c25tcF9zc2hfYWRkcl9wYWlyOworCitvaWQgbmV0c25tcF9zbm1wU1NIRG9tYWluW10gPSB7IFRSQU5TUE9SVF9ET01BSU5fU1NIX0lQIH07CitzdGF0aWMgbmV0c25tcF90ZG9tYWluIHNzaERvbWFpbjsKKworY29uc3QgY2hhciAqa2V5ZmlsZTE9Ii9ob21lL2hhcmRha2VyLy5zc2gvaWRfcnNhLnB1YiI7Citjb25zdCBjaGFyICprZXlmaWxlMj0iL2hvbWUvaGFyZGFrZXIvLnNzaC9pZF9yc2EiOworY29uc3QgY2hhciAqdXNlcm5hbWU9ImhhcmRha2VyIjsKKworI2RlZmluZSBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFIDEKKworLyoKKyAqIE5vdCBzdGF0aWMgc2luY2UgaXQgaXMgbmVlZGVkIGhlcmUgYXMgd2VsbCBhcyBpbiBzbm1wVURQRG9tYWluLCBidXQgbm90CisgKiBwdWJsaWMgZWl0aGVyCisgKi8KK2ludAorbmV0c25tcF9zb2NrYWRkcl9pbjIoc3RydWN0IHNvY2thZGRyX2luICphZGRyLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5wZWVybmFtZSwgY29uc3QgY2hhciAqZGVmYXVsdF90YXJnZXQpOworCisvKgorICogUmV0dXJuIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgYWRkcmVzcyBpbiBkYXRhLCBvciBlbHNlIHRoZSAiZmFyIGVuZCIKKyAqIGFkZHJlc3MgaWYgZGF0YSBpcyBOVUxMLiAgCisgKi8KKworc3RhdGljIGNoYXIgKgorbmV0c25tcF9zc2hfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKK3sKKyAgICBuZXRzbm1wX3NzaF9hZGRyX3BhaXIgKmFkZHJfcGFpciA9IE5VTEw7CisKKyAgICBpZiAoZGF0YSAhPSBOVUxMICYmIGxlbiA9PSBzaXplb2YobmV0c25tcF9zc2hfYWRkcl9wYWlyKSkgeworCWFkZHJfcGFpciA9IChuZXRzbm1wX3NzaF9hZGRyX3BhaXIgKikgZGF0YTsKKyAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwpIHsKKwlhZGRyX3BhaXIgPSAobmV0c25tcF9zc2hfYWRkcl9wYWlyICopIHQtPmRhdGE7CisgICAgfQorCisgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBzdHJkdXAoIlNTSDogdW5rbm93biIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiAqdG8gPSBOVUxMOworCWNoYXIgdG1wWzY0XTsKKyAgICAgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyX2luICopICYoYWRkcl9wYWlyLT5yZW1vdGVfYWRkcik7CisgICAgICAgIGlmICh0byA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gc3RyZHVwKCJTU0g6IHVua25vd24iKTsKKyAgICAgICAgfQorCisgICAgICAgIHNwcmludGYodG1wLCAiU1NIOiBbJXNdOiVoZCIsCisgICAgICAgICAgICAgICAgaW5ldF9udG9hKHRvLT5zaW5fYWRkciksIG50b2hzKHRvLT5zaW5fcG9ydCkpOworICAgICAgICByZXR1cm4gc3RyZHVwKHRtcCk7CisgICAgfQorfQorCisKKworLyoKKyAqIFlvdSBjYW4gd3JpdGUgc29tZXRoaW5nIGludG8gb3BhcXVlIHRoYXQgd2lsbCBzdWJzZXF1ZW50bHkgZ2V0IHBhc3NlZCBiYWNrIAorICogdG8geW91ciBzZW5kIGZ1bmN0aW9uIGlmIHlvdSBsaWtlLiAgRm9yIGluc3RhbmNlLCB5b3UgbWlnaHQgd2FudCB0bworICogcmVtZW1iZXIgd2hlcmUgYSBQRFUgY2FtZSBmcm9tLCBzbyB0aGF0IHlvdSBjYW4gc2VuZCBhIHJlcGx5IHRoZXJlLi4uICAKKyAqLworCitzdGF0aWMgaW50CituZXRzbm1wX3NzaF9yZWN2KG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpidWYsIGludCBzaXplLAorCQkgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQoreworICAgIGludCByYyA9IC0xOworICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZiA9IE5VTEw7CisgICAgbmV0c25tcF9zc2hfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIGludCBpYW1jbGllbnQgPSAwOworCisgICAgREVCVUdNU0dUTCgoInNzaCIsICJhdCB0aGUgdG9wIG9mIHNzaF9yZWN2XG4iKSk7CisgICAgREVCVUdNU0dUTCgoInNzaCIsICJ0PSVwXG4iLCB0KSk7CisgICAgaWYgKHQgIT0gTlVMTCAmJiB0LT5kYXRhICE9IE5VTEwpIHsKKwlhZGRyX3BhaXIgPSAobmV0c25tcF9zc2hfYWRkcl9wYWlyICopIHQtPmRhdGE7CisgICAgfQorCisgICAgREVCVUdNU0dUTCgoInNzaCIsICJhZGRyX3BhaXI9JXBcbiIsIGFkZHJfcGFpcikpOworICAgIGlmICh0ICE9IE5VTEwgJiYgYWRkcl9wYWlyICYmIGFkZHJfcGFpci0+Y2hhbm5lbCkgeworICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgInQ9JXAsIGFkZHJfcGFpcj0lcCwgY2hhbm5lbD0lcFxuIiwKKyAgICAgICAgICAgICAgICAgICAgdCwgYWRkcl9wYWlyLCBhZGRyX3BhaXItPmNoYW5uZWwpKTsKKyAgICAgICAgaWFtY2xpZW50ID0gMTsKKwl3aGlsZSAocmMgPCAwKSB7CisJICAgIHJjID0gbGlic3NoMl9jaGFubmVsX3JlYWQoYWRkcl9wYWlyLT5jaGFubmVsLCBidWYsIHNpemUpOworCSAgICBpZiAocmMgPCAwKSB7ICAvKiBYWFg6IGZyb20gdGNwOyBzc2ggZXF1aXY/OiAgJiYgZXJybm8gIT0gRUlOVFIgKi8KKwkJREVCVUdNU0dUTCgoInNzaCIsICJyZWN2IGZkICVkIGVyciAlZCAoXCIlc1wiKVxuIiwKKwkJCSAgICB0LT5zb2NrLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKSk7CisJCWJyZWFrOworCSAgICB9CisJICAgIERFQlVHTVNHVEwoKCJzc2giLCAicmVjdiBmZCAlZCBnb3QgJWQgYnl0ZXNcbiIsCisJCQl0LT5zb2NrLCByYykpOworCX0KKyAgICB9IGVsc2UgaWYgKHQgIT0gTlVMTCkgeworCisjaWZkZWYgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRQorCisgICAgICAgIHNvY2tsZW5fdCAgICAgICB0b2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pOworCisgICAgICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CisgICAgICAgICAgICBzdHJ1Y3Qgc29ja2FkZHIgKnRvOworICAgICAgICAgICAgdG8gPSAoc3RydWN0IHNvY2thZGRyICopIFNOTVBfTUFMTE9DX1NUUlVDVChzb2NrYWRkcl91bik7CisgICAgICAgICAgICBpZiAoTlVMTCA9PSB0bykgeworICAgICAgICAgICAgICAgICpvcGFxdWUgPSBOVUxMOworICAgICAgICAgICAgICAgICpvbGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmKGdldHNvY2tuYW1lKHQtPnNvY2ssIHRvLCAmdG9sZW4pICE9IDApeworICAgICAgICAgICAgICAgIGZyZWUodG8pOworICAgICAgICAgICAgICAgICpvcGFxdWUgPSBOVUxMOworICAgICAgICAgICAgICAgICpvbGVuZ3RoID0gMDsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAoYWRkcl9wYWlyLT51c2VybmFtZVswXSA9PSAnXDAnKSB7CisgICAgICAgICAgICAgICAgLyogd2UgZG9uJ3QgaGF2ZSBhIHVzZXJuYW1lIHlldCwgc28gdGhpcyBpcyB0aGUgZmlyc3QgbWVzc2FnZSAqLworICAgICAgICAgICAgICAgIHN0cnVjdCB1Y3JlZCAqcmVtb3RldXNlcjsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKKyAgICAgICAgICAgICAgICBzdHJ1Y3QgaW92ZWMgaW92WzFdOworICAgICAgICAgICAgICAgIGNoYXIgY21zZ1tDTVNHX1NQQUNFKHNpemVvZihyZW1vdGV1c2VyKSkrNDA5Nl07CisgICAgICAgICAgICAgICAgc3RydWN0IGNtc2doZHIgKmNtc2dwdHI7CisgICAgICAgICAgICAgICAgdV9jaGFyICpjaGFyYnVmICA9IGJ1ZjsKKworICAgICAgICAgICAgICAgIGlvdlswXS5pb3ZfYmFzZSA9IGJ1ZjsKKyAgICAgICAgICAgICAgICBpb3ZbMF0uaW92X2xlbiA9IHNpemU7CisKKyAgICAgICAgICAgICAgICBtZW1zZXQoJm1zZywgMCwgc2l6ZW9mIG1zZyk7CisgICAgICAgICAgICAgICAgbXNnLm1zZ19pb3YgPSBpb3Y7CisgICAgICAgICAgICAgICAgbXNnLm1zZ19pb3ZsZW4gPSAxOworICAgICAgICAgICAgICAgIG1zZy5tc2dfY29udHJvbCA9ICZjbXNnOworICAgICAgICAgICAgICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IHNpemVvZihjbXNnKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByYyA9IHJlY3Ztc2codC0+c29jaywgJm1zZywgTVNHX0RPTlRXQUlUKTsgLyogdXNlIERPTlRXQUlUPyAqLworICAgICAgICAgICAgICAgIGlmIChyYyA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByYzsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvKiB3ZSBoYXZlbid0IHJlY2VpdmVkIHRoZSBzdGFydGluZyBpbmZvICovCisgICAgICAgICAgICAgICAgaWYgKCh1X2NoYXIpIGNoYXJidWZbMF0gPiBORVRTTk1QX1NTSFRPU05NUF9WRVJTSU9OMSkgeworICAgICAgICAgICAgICAgICAgICAvKiB1bnN1cHBvcnRlZCBjb25uZWN0aW9uIHZlcnNpb24gKi8KKyAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgInJlY2VpdmVkIHVuc3VwcG9ydGVkIHNzaHRvc25tcCB2ZXJzaW9uOiAlZFxuIiwgY2hhcmJ1ZlswXSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgInJlY2VpdmVkIGZpcnN0IG1zZyBvdmVyIFNTSDsgaW50ZXJuYWwgU1NIIHByb3RvY29sIHZlcnNpb24gJWRcbiIsIGNoYXJidWZbMF0pKTsKKworICAgICAgICAgICAgICAgIGZvciAoY21zZ3B0ciA9IENNU0dfRklSU1RIRFIoJm1zZyk7IGNtc2dwdHIgIT0gTlVMTDsgY21zZ3B0ciA9IENNU0dfTlhUSERSKCZtc2csIGNtc2dwdHIpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChjbXNncHRyLT5jbXNnX2xldmVsID09IFNPTF9TT0NLRVQgJiYgY21zZ3B0ci0+Y21zZ190eXBlID09IFNDTV9DUkVERU5USUFMUykgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVjZWl2ZWQgY3JlZGVudGlhbCBpbmZvICovCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgcGFzc3dkICp1c2VyX3B3OworCisgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGV1c2VyID0gKHN0cnVjdCB1Y3JlZCAqKSBDTVNHX0RBVEEoY21zZ3B0cik7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodXNlcl9wdyA9IGdldHB3dWlkKHJlbW90ZXVzZXItPnVpZCkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gdXNlciBmb3VuZCBmb3IgdWlkICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGV1c2VyLT51aWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJsZW4odXNlcl9wdy0+cHdfbmFtZSkgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihhZGRyX3BhaXItPnVzZXJuYW1lKS0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVXNlciBuYW1lICclcycgdG9vIGxvbmcgZm9yIHNubXBcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9wdy0+cHdfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgc3RybGNweShhZGRyX3BhaXItPnVzZXJuYW1lLCB1c2VyX3B3LT5wd19uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoYWRkcl9wYWlyLT51c2VybmFtZSkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiU2V0dGluZyB1c2VyIG5hbWUgdG8gJXNcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHJfcGFpci0+dXNlcm5hbWUpKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoYWRkcl9wYWlyLT51c2VybmFtZVswXSA9PSAnXDAnKSB7CisgICAgICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmYWlsZWQgdG8gZXh0cmFjdCB1c2VybmFtZSBmcm9tIHNzaGQgY29ubmVjdGVkIHVuaXggc29ja2V0XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChyYyA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIHRoZSBvbmx5IHBhY2tldCB3ZSByZWNlaXZlZCB3YXMgdGhlIHN0YXJ0aW5nIG9uZSAqLworICAgICAgICAgICAgICAgICAgICB0LT5mbGFncyB8PSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0VNUFRZX1BLVDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcmMgLT0gMTsKKyAgICAgICAgICAgICAgICBtZW1tb3ZlKGNoYXJidWYsICZjaGFyYnVmWzFdLCByYyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHdoaWxlIChyYyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmMgPSByZWN2ZnJvbSh0LT5zb2NrLCBidWYsIHNpemUsIDAsIE5VTEwsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgInJlY3YgZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC0+c29jaywgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJjOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICpvcGFxdWUgPSAodm9pZCopdG87CisgICAgICAgICAgICAgICAgICAgICpvbGVuZ3RoID0gc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl91bik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJyZWN2IGZkICVkIGdvdCAlZCBieXRlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHQtPnNvY2ssIHJjKSk7CisgICAgICAgIH0KKyAgICAgICAgCisjZWxzZSAvKiB3ZSdyZSBjYWxsZWQgZGlyZWN0bHkgYnkgc3NoZCBhbmQgdXNlIHN0ZGluL291dCAqLworCisgICAgICAgIHN0cnVjdCBwYXNzd2QgKnVzZXJfcHc7CisKKyAgICAgICAgaWFtY2xpZW50ID0gMDsKKyAgICAgICAgLyogd2UncmUgb24gdGhlIHNlcnZlciBzaWRlIGFuZCBzaG91bGQgcmVhZCBmcm9tIHN0ZGluICovCisgICAgICAgIHdoaWxlIChyYyA8IDApIHsKKyAgICAgICAgICAgIHJjID0gcmVhZChTVERJTl9GSUxFTk8sIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiByZWFkIG9uIHN0ZGluIGZhaWxlZDogJWQgKFwiJXNcIilcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJybm8sIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiAwIGlucHV0IGlzIHByb2JhYmx5IGJhZCBzaW5jZSB3ZSBzZWxlY3RlZCBvbiBpdCAqLworICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiZ290IGEgMCByZWFkIG9uIHN0ZGluXG4iKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJyZWFkIG9uIHN0ZGluIGdvdCAlZCBieXRlc1xuIiwgcmMpKTsKKyAgICAgICAgfQorCisvKiBYWFg6IG5lZWQgdG8gY2hlY2sgdGhlIHVzZXJuYW1lLCBidXQgYWRkcl9wYWlyIGRvZXNuJ3QgZXhpc3QhICovCisgICAgICAgIC8qCisgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiY3VycmVudCB1c2VybmFtZT0lc1xuIiwgYykpOworICAgICAgICBpZiAoYWRkcl9wYWlyLT51c2VybmFtZVswXSA9PSAnXDAnKSB7CisgICAgICAgICAgICBpZiAoKHVzZXJfcHcgPSBnZXRwd3VpZChnZXR1aWQoKSkpID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiTm8gdXNlciBmb3VuZCBmb3IgdWlkICVkXG4iLCBnZXR1aWQoKSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHN0cmxlbih1c2VyX3B3LT5wd19uYW1lKSA+IHNpemVvZihhZGRyX3BhaXItPnVzZXJuYW1lKS0xKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgIlVzZXIgbmFtZSAnJXMnIHRvbyBsb25nIGZvciBzbm1wXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfcHctPnB3X25hbWUpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0cmxjcHkoYWRkcl9wYWlyLT51c2VybmFtZSwgdXNlcl9wdy0+cHdfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGFkZHJfcGFpci0+dXNlcm5hbWUpKTsKKyAgICAgICAgfQorICAgICAgICAqLworCisjZW5kaWYgLyogISBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFICovCisgICAgfQorCisgICAgLyogY3JlYXRlIGEgdG1TdGF0ZVJlZiBjYWNoZSAqLworICAgIHRtU3RhdGVSZWYgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSk7CisKKyAgICAvKiBzZWNzaGVsbCBkb2N1bWVudCBzYXlzIHdlcmUgYWx3YXlzIGF1dGhwcml2LCBldmVuIGlmIE5VTEwgYWxnb3JpdGhtcyAqLworICAgIC8qIHVnaCEgKi8KKyAgICAvKiBYWFg6IGRpc2FsbG93IE5VTEwgaW4gb3VyIGltcGxlbWVudGF0aW9ucyAqLworICAgIHRtU3RhdGVSZWYtPnRyYW5zcG9ydFNlY3VyaXR5TGV2ZWwgPSBTTk1QX1NFQ19MRVZFTF9BVVRIUFJJVjsKKworICAgIC8qIFhYWDogZmlndXJlIG91dCBob3cgdG8gZ2V0IHRoZSBzcGVjaWZpZWQgbG9jYWwgc2VjbmFtZSBmcm9tIHRoZSBzZXNzaW9uICovCisgICAgaWYgKGlhbWNsaWVudCAmJiAwKSB7CisgICAgICAgIC8qIFhYWDogd2UncmUgb24gdGhlIGNsaWVudDsgd2Ugc2hvdWxkIGhhdmUgbmFtZWQgdGhlCisgICAgICAgICAgIGNvbm5lY3Rpb24gb3Vyc2VsdmVzLi4uICBwdWxsIHRoaXMgZnJvbSBzZXNzaW9uIHNvbWVob3c/ICovCisgICAgICAgIHN0cmxjcHkodG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lLCBhZGRyX3BhaXItPnVzZXJuYW1lLAorICAgICAgICAgICAgICAgIHNpemVvZih0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUpKTsKKyAgICB9IGVsc2UgeworI2lmZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKyAgICAgICAgc3RybGNweSh0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUsIGFkZHJfcGFpci0+dXNlcm5hbWUsCisgICAgICAgICAgICAgICAgc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSkpOworI2Vsc2UgLyogd2UncmUgY2FsbGVkIGRpcmVjdGx5IGJ5IHNzaGQgYW5kIHVzZSBzdGRpbi9vdXQgKi8KKyAgICAgICAgLyogd2UncmUgb24gdGhlIHNlcnZlci4uLiAqLworICAgICAgICAvKiBYWFg6IHRoaXMgZG9lc24ndCBjb3B5IHByb3Blcmx5IGFuZCBjYW4gZ2V0IHBvaW50ZXIKKyAgICAgICAgICAgcmVmZXJlbmNlIGlzc3VlcyAqLworICAgICAgICBpZiAoc3RybGVuKGdldGVudigiVVNFUiIpKSA+IDEyNykgeworICAgICAgICAgICAgLyogcnVoIHJvaCAqLworICAgICAgICAgICAgLyogWFhYOiBjbGVhbiB1cCAqLworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFhYWDogZGV0ZWN0IGFuZCB0aHJvdyBvdXQgb3ZlcmZsb3cgc2VjbmFtZSBzaXplcyByYXRoZXIKKyAgICAgICAgICAgdGhhbiB0cnVuY2F0aW5nLiAqLworICAgICAgICBzdHJsY3B5KHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSwgZ2V0ZW52KCJVU0VSIiksCisgICAgICAgICAgICAgICAgc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSkpOworI2VuZGlmIC8qICEgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRSAqLworICAgIH0KKyAgICB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVbc2l6ZW9mKHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSktMV0gPSAnXDAnOworICAgIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZUxlbiA9IHN0cmxlbih0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUpOworICAgICpvcGFxdWUgPSB0bVN0YXRlUmVmOworICAgICpvbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSk7CisKKyAgICByZXR1cm4gcmM7Cit9CisKKworCitzdGF0aWMgaW50CituZXRzbm1wX3NzaF9zZW5kKG5ldHNubXBfdHJhbnNwb3J0ICp0LCB2b2lkICpidWYsIGludCBzaXplLAorCQkgdm9pZCAqKm9wYXF1ZSwgaW50ICpvbGVuZ3RoKQoreworICAgIGludCByYyA9IC0xOworCisgICAgbmV0c25tcF9zc2hfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSAqdG1TdGF0ZVJlZiA9IE5VTEw7CisKKyAgICBpZiAodCAhPSBOVUxMICYmIHQtPmRhdGEgIT0gTlVMTCkgeworCWFkZHJfcGFpciA9IChuZXRzbm1wX3NzaF9hZGRyX3BhaXIgKikgdC0+ZGF0YTsKKyAgICB9CisKKyAgICBpZiAob3BhcXVlICE9IE5VTEwgJiYgKm9wYXF1ZSAhPSBOVUxMICYmCisgICAgICAgICpvbGVuZ3RoID09IHNpemVvZihuZXRzbm1wX3RtU3RhdGVSZWZlcmVuY2UpKSB7CisgICAgICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopICpvcGFxdWU7CisgICAgfQorCisgICAgaWYgKCF0bVN0YXRlUmVmKSB7CisgICAgICAgIC8qIHRoaXMgaXMgbm93IGFuIGVycm9yIGFjY29yZGluZyB0byBteSBtZW1vcnkgaW4gdGhlIHJlY2VudCBkcmFmdCAqLworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAibmV0c25tcF9zc2hfc2VuZCB3YXNuJ3QgcGFzc2VkIGEgdmFsaWQgdG1TdGF0ZVJlZmVyZW5jZVxuIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoTlVMTCAhPSB0ICYmIE5VTEwgIT0gYWRkcl9wYWlyICYmIE5VTEwgIT0gYWRkcl9wYWlyLT5jaGFubmVsKSB7CisgICAgICAgIGlmIChhZGRyX3BhaXItPnVzZXJuYW1lWzBdID09ICdcMCcpIHsKKyAgICAgICAgICAgIHN0cmxjcHkoYWRkcl9wYWlyLT51c2VybmFtZSwgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lLAorICAgICAgICAgICAgICAgICAgICBzaXplb2YoYWRkcl9wYWlyLT51c2VybmFtZSkpOworICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChhZGRyX3BhaXItPnVzZXJuYW1lLCB0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUpICE9IDAgfHwKKyAgICAgICAgICAgICAgICAgICBzdHJsZW4oYWRkcl9wYWlyLT51c2VybmFtZSkgIT0gdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuKSB7CisgICAgICAgICAgICAvKiBlcnJvciEgIHRoZXkgbXVzdCBhbHdheXMgbWF0Y2ggKi8KKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJuZXRzbm1wX3NzaF9zZW5kIHdhcyBwYXNzZWQgYSB0bVN0YXRlUmVmZXJlbmNlIHdpdGggYSBzZWN1cml0eU5hbWUgbm90IGVxdWFsIHRvIHByZXZpb3VzIG1lc3NhZ2VzXG4iKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCXdoaWxlIChyYyA8IDApIHsKKwkgICAgcmMgPSBsaWJzc2gyX2NoYW5uZWxfd3JpdGUoYWRkcl9wYWlyLT5jaGFubmVsLCBidWYsIHNpemUpOworCSAgICBpZiAocmMgPCAwKSB7IC8qIFhYWDogICYmIGVycm5vICE9IEVJTlRSICovCisJCWJyZWFrOworCSAgICB9CisJfQorICAgIH0gZWxzZSBpZiAodCAhPSBOVUxMKSB7CisjaWZkZWYgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRQorCisJd2hpbGUgKHJjIDwgMCkgeworICAgICAgICAgICAgcmMgPSBzZW5kdG8odC0+c29jaywgYnVmLCBzaXplLCAwLCBOVUxMLCAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyNlbHNlIC8qIHdlJ3JlIGNhbGxlZCBkaXJlY3RseSBieSBzc2hkIGFuZCB1c2Ugc3RkaW4vb3V0ICovCisgICAgICAgIC8qIG9uIHRoZSBzZXJ2ZXI7IHNlbmQgdG8gc3Rkb3V0ICovCisJd2hpbGUgKHJjIDwgMCkgeworCSAgICByYyA9IHdyaXRlKFNURE9VVF9GSUxFTk8sIGJ1Ziwgc2l6ZSk7CisgICAgICAgICAgICBmZmx1c2goc3Rkb3V0KTsKKwkgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgeyAvKiBYWFg6ICAmJiBlcnJubyAhPSBFSU5UUiAqLworCQlicmVhazsKKwkgICAgfQorCX0KKyNlbmRpZgorICAgIH0KKworICAgIHJldHVybiByYzsKK30KKworCisKK3N0YXRpYyBpbnQKK25ldHNubXBfc3NoX2Nsb3NlKG5ldHNubXBfdHJhbnNwb3J0ICp0KQoreworICAgIGludCByYyA9IC0xOworICAgIG5ldHNubXBfc3NoX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKKworICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+ZGF0YSAhPSBOVUxMKSB7CisJYWRkcl9wYWlyID0gKG5ldHNubXBfc3NoX2FkZHJfcGFpciAqKSB0LT5kYXRhOworICAgIH0KKworICAgIGlmICh0ICE9IE5VTEwgJiYgYWRkcl9wYWlyICYmIHQtPnNvY2sgPj0gMCkgeworICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgImNsb3NlIGZkICVkXG4iLCB0LT5zb2NrKSk7CisKKyAgICAgICAgaWYgKGFkZHJfcGFpci0+Y2hhbm5lbCkgeworICAgICAgICAgICAgbGlic3NoMl9jaGFubmVsX2Nsb3NlKGFkZHJfcGFpci0+Y2hhbm5lbCk7CisgICAgICAgICAgICBsaWJzc2gyX2NoYW5uZWxfZnJlZShhZGRyX3BhaXItPmNoYW5uZWwpOworICAgICAgICAgICAgYWRkcl9wYWlyLT5jaGFubmVsID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhZGRyX3BhaXItPnNlc3Npb24pIHsKKyAgICAgICAgICAgIGxpYnNzaDJfc2Vzc2lvbl9kaXNjb25uZWN0KGFkZHJfcGFpci0+c2Vzc2lvbiwgIk5vcm1hbCBTaHV0ZG93biIpOworICAgICAgICAgICAgbGlic3NoMl9zZXNzaW9uX2ZyZWUoYWRkcl9wYWlyLT5zZXNzaW9uKTsKKyAgICAgICAgICAgIGFkZHJfcGFpci0+c2Vzc2lvbiA9IE5VTEw7CisgICAgICAgIH0KKworI2lmbmRlZiBIQVZFX0NMT1NFU09DS0VUCisgICAgICAgIHJjID0gY2xvc2UodC0+c29jayk7CisjZWxzZQorICAgICAgICByYyA9IGNsb3Nlc29ja2V0KHQtPnNvY2spOworI2VuZGlmCisgICAgICAgIHQtPnNvY2sgPSAtMTsKKworI2lmZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKworICAgICAgICBjbG9zZSh0LT5zb2NrKTsKKyAgICAgICAgCisgICAgICAgIGlmICghYWRkcl9wYWlyLT5zZXNzaW9uICYmICFhZGRyX3BhaXItPmNoYW5uZWwpIHsKKyAgICAgICAgICAgIC8qIHVuaXggc29ja2V0IGJhc2VkIGNvbm5lY3Rpb24gKi8KKyAgICAgICAgICAgIGNsb3NlKHQtPnNvY2spOworCisgICAgICAgICAgICAvKiBYWFg6IG1ha2UgY29uZmlndXJhYmxlICovCisgICAgICAgICAgICB1bmxpbmsoYWRkcl9wYWlyLT5zb2NrZXRfcGF0aCk7CisgICAgICAgIH0KKworI2Vsc2UgLyogd2UncmUgY2FsbGVkIGRpcmVjdGx5IGJ5IHNzaGQgYW5kIHVzZSBzdGRpbi9vdXQgKi8KKworICAgICAgICAvKiBvbiB0aGUgc2VydmVyOiBjbG9zZSBzdGRpbi9vdXQgKi8KKyAgICAgICAgY2xvc2UoU1RESU5fRklMRU5PKTsKKyAgICAgICAgY2xvc2UoU1RET1VUX0ZJTEVOTyk7CisjZW5kaWYgLyogISBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFICovCisKKyAgICB9IGVsc2UgeworCisjaWZuZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKyAgICAgICAgLyogb24gdGhlIHNlcnZlcjogY2xvc2Ugc3RkaW4vb3V0ICovCisgICAgICAgIGNsb3NlKFNURElOX0ZJTEVOTyk7CisgICAgICAgIGNsb3NlKFNURE9VVF9GSUxFTk8pOworI2VuZGlmIC8qICEgU05NUFNTSERPTUFJTl9VU0VfRVhURVJOQUxfUElQRSAqLworCisgICAgfQorICAgIHJldHVybiByYzsKK30KKworCisKK3N0YXRpYyBpbnQKK25ldHNubXBfc3NoX2FjY2VwdChuZXRzbm1wX3RyYW5zcG9ydCAqdCkKK3sKKyNpZmRlZiBTTk1QU1NIRE9NQUlOX1VTRV9FWFRFUk5BTF9QSVBFCisKKyAgICAvKiBtdWNoIG9mIHRoaXMgaXMgZHVwbGljYXRlZCBmcm9tIHNubXBVbml4RG9tYWluLmMgKi8KKworICAgIG5ldHNubXBfc3NoX2FkZHJfcGFpciAqYWRkcl9wYWlyOyAgICAKKyAgICBpbnQgICAgICAgICAgICAgICAgICAgIG5ld3NvY2sgICA9IC0xOworICAgIHN0cnVjdCBzb2NrYWRkciAgICAgICAqZmFyZW5kICAgID0gTlVMTDsKKyAgICBzb2NrbGVuX3QgICAgICAgICAgICAgIGZhcmVuZGxlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfdW4pOworCisKKyAgICBpZiAodCAhPSBOVUxMICYmIHQtPnNvY2sgPj0gMCkgeworICAgICAgICBhZGRyX3BhaXIgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfc3NoX2FkZHJfcGFpcik7CisKKyAgICAgICAgaWYgKGFkZHJfcGFpciA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSW5kaWNhdGUgdGhhdCB0aGUgYWNjZXB0YW5jZSBvZiB0aGlzIHNvY2tldCBmYWlsZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiYWNjZXB0OiBtYWxsb2MgZmFpbGVkXG4iKSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBmYXJlbmQgPSAoc3RydWN0IHNvY2thZGRyICopICZhZGRyX3BhaXItPnVuaXhfc29ja2V0X2VuZDsKKworICAgICAgICBuZXdzb2NrID0gYWNjZXB0KHQtPnNvY2ssIGZhcmVuZCwgJmZhcmVuZGxlbik7CisKKyAgICAgICAgLyogc2V0IHRoZSBTT19QQVNTQ1JFRCBvcHRpb24gc28gd2UgY2FuIHJlY2VpdmUgdGhlIHJlbW90ZSB1aWQgKi8KKyAgICAgICAgeworICAgICAgICAgICAgaW50IG9uZSA9IDE7CisgICAgICAgICAgICBzZXRzb2Nrb3B0KG5ld3NvY2ssIFNPTF9TT0NLRVQsIFNPX1BBU1NDUkVELCAodm9pZCAqKSAmb25lLAorICAgICAgICAgICAgICAgICAgICAgICBzaXplb2Yob25lKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV3c29jayA8IDApIHsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCJhY2NlcHQgZmFpbGVkIHJjICVkIGVycm5vICVkIFwiJXNcIlxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld3NvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgIGZyZWUoYWRkcl9wYWlyKTsKKyAgICAgICAgICAgIHJldHVybiBuZXdzb2NrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHQtPmRhdGEgIT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZSh0LT5kYXRhKTsKKyAgICAgICAgfQorCisgICAgICAgIERFQlVHTVNHVEwoKCJzc2giLCAiYWNjZXB0IHN1Y2NlZWRlZCAoZmFyZW5kICVwIGxlbiAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgIGZhcmVuZCwgZmFyZW5kbGVuKSk7CisgICAgICAgIHQtPmRhdGEgPSBhZGRyX3BhaXI7CisgICAgICAgIHQtPmRhdGFfbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfc3NoX2FkZHJfcGFpcik7CisgICAgICAgIG5ldHNubXBfc29ja19idWZmZXJfc2V0KG5ld3NvY2ssIFNPX1NOREJVRiwgMSwgMCk7CisgICAgICAgIG5ldHNubXBfc29ja19idWZmZXJfc2V0KG5ld3NvY2ssIFNPX1JDVkJVRiwgMSwgMCk7CisgICAgICAgIHJldHVybiBuZXdzb2NrOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyNlbHNlIC8qIHdlJ3JlIGNhbGxlZCBkaXJlY3RseSBieSBzc2hkIGFuZCB1c2Ugc3RkaW4vb3V0ICovCisgICAgLyogd2UgZG9uJ3QgbmVlZCB0byBkbyBhbnl0aGluZzsgc2VydmVyIHNpZGUgdXNlcyBzdGRpbi9vdXQgKi8KKyAgICAvKiBYWFg6IGNoZWNrIHRoYXQgd2UncmUgYW4gc3NoIGNvbm5lY3Rpb24gKi8KKyAgICAKKyAgICByZXR1cm4gU1RESU5fRklMRU5POyAvKiByZXR1cm4gc3RkaW4gKi8KKyNlbmRpZiAvKiAhIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUgKi8KKworfQorCisKKworLyoKKyAqIE9wZW4gYSBTU0gtYmFzZWQgdHJhbnNwb3J0IGZvciBTTk1QLiAgTG9jYWwgaXMgVFJVRSBpZiBhZGRyIGlzIHRoZSBsb2NhbAorICogYWRkcmVzcyB0byBiaW5kIHRvIChpLmUuIHRoaXMgaXMgYSBzZXJ2ZXItdHlwZSBzZXNzaW9uKTsgb3RoZXJ3aXNlIGFkZHIgaXMgCisgKiB0aGUgcmVtb3RlIGFkZHJlc3MgdG8gc2VuZCB0aGluZ3MgdG8uICAKKyAqLworCituZXRzbm1wX3RyYW5zcG9ydCAqCituZXRzbm1wX3NzaF90cmFuc3BvcnQoc3RydWN0IHNvY2thZGRyX2luICphZGRyLCBpbnQgbG9jYWwpCit7CisgICAgbmV0c25tcF90cmFuc3BvcnQgKnQgPSBOVUxMOworICAgIG5ldHNubXBfc3NoX2FkZHJfcGFpciAqYWRkcl9wYWlyID0gTlVMTDsKKyAgICBpbnQgcmMgPSAwOworICAgIGludCBpLCBhdXRoX3B3ID0gMDsKKyAgICBjb25zdCBjaGFyICpmaW5nZXJwcmludDsKKyAgICBjaGFyICp1c2VyYXV0aGxpc3Q7CisgICAgc3RydWN0IHNvY2thZGRyX3VuICp1bmFkZHI7CisgICAgY29uc3QgY2hhciAqc29ja3BhdGggPQorICAgICAgICBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfU1NIVE9TTk1QX1NPQ0tFVCk7CisgICAgY2hhciB0bXBzb2NrcGF0aFtNQVhQQVRITEVOXTsKKworICAgIGlmIChhZGRyID09IE5VTEwgfHwgYWRkci0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHQgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdHJhbnNwb3J0KTsKKyAgICBpZiAodCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBtZW1zZXQodCwgMCwgc2l6ZW9mKG5ldHNubXBfdHJhbnNwb3J0KSk7CisKKyAgICB0LT5kb21haW4gPSBuZXRzbm1wX3NubXBTU0hEb21haW47CisgICAgdC0+ZG9tYWluX2xlbmd0aCA9CisgICAgICAgIHNpemVvZihuZXRzbm1wX3NubXBTU0hEb21haW4pIC8gc2l6ZW9mKG5ldHNubXBfc25tcFNTSERvbWFpblswXSk7CisKKyAgICB0LT5mbGFncyA9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNIHwgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19UVU5ORUxFRDsKKworICAgIGFkZHJfcGFpciA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF9zc2hfYWRkcl9wYWlyKTsKKyAgICBpZiAoYWRkcl9wYWlyID09IE5VTEwpIHsKKyAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIHQtPmRhdGEgPSBhZGRyX3BhaXI7CisgICAgdC0+ZGF0YV9sZW5ndGggPSBzaXplb2YobmV0c25tcF9zc2hfYWRkcl9wYWlyKTsKKworICAgIGlmIChsb2NhbCkgeworI2lmZGVmIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUKKworICAgICAgICAvKiBYWFg6IHNldCB0LT5sb2NhbCBhbmQgdC0+bG9jYWxfbGVuZ3RoICovCisKKworICAgICAgICB0LT5mbGFncyB8PSBORVRTTk1QX1RSQU5TUE9SVF9GTEFHX0xJU1RFTjsKKworICAgICAgICB1bmFkZHIgPSAmYWRkcl9wYWlyLT51bml4X3NvY2tldF9lbmQ7CisKKyAgICAgICAgLyogb3BlbiBhIHVuaXggZG9tYWluIHNvY2tldCAqLworICAgICAgICAvKiBYWFg6IGdldCBkYXRhIGZyb20gdGhlIHRyYW5zcG9ydCBkZWYgZm9yIGl0J3MgbG9jYXRpb24gKi8KKyAgICAgICAgdW5hZGRyLT5zdW5fZmFtaWx5ID0gQUZfVU5JWDsKKyAgICAgICAgaWYgKE5VTEwgPT0gc29ja3BhdGgpIHsKKyAgICAgICAgICAgIHNwcmludGYodG1wc29ja3BhdGgsICIlcy8lcyIsIGdldF9wZXJzaXN0ZW50X2RpcmVjdG9yeSgpLAorICAgICAgICAgICAgICAgICAgICBERUZBVUxUX1NPQ0tfTkFNRSk7CisgICAgICAgICAgICBzb2NrcGF0aCA9IHRtcHNvY2twYXRoOworICAgICAgICB9CisKKyAgICAgICAgc3RyY3B5KHVuYWRkci0+c3VuX3BhdGgsIHNvY2twYXRoKTsKKyAgICAgICAgc3RyY3B5KGFkZHJfcGFpci0+c29ja2V0X3BhdGgsIHNvY2twYXRoKTsKKworICAgICAgICB0LT5zb2NrID0gc29ja2V0KFBGX1VOSVgsIFNPQ0tfU1RSRUFNLCAwKTsKKyAgICAgICAgaWYgKHQtPnNvY2sgPCAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICAvKiBzZXQgdGhlIFNPX1BBU1NDUkVEIG9wdGlvbiBzbyB3ZSBjYW4gcmVjZWl2ZSB0aGUgcmVtb3RlIHVpZCAqLworICAgICAgICB7CisgICAgICAgICAgICBpbnQgb25lID0gMTsKKyAgICAgICAgICAgIHNldHNvY2tvcHQodC0+c29jaywgU09MX1NPQ0tFVCwgU09fUEFTU0NSRUQsICh2b2lkICopICZvbmUsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihvbmUpKTsKKyAgICAgICAgfQorCisgICAgICAgIHVubGluayh1bmFkZHItPnN1bl9wYXRoKTsKKyAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgdW5hZGRyLCBTVU5fTEVOKHVuYWRkcikpOworICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc3NoX3RyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgYmluZCBcIiVzXCIsIGVycm5vICVkICglcylcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICB1bmFkZHItPnN1bl9wYXRoLCBlcnJubywgc3RyZXJyb3IoZXJybm8pKSk7CisgICAgICAgICAgICBuZXRzbm1wX3NzaF9jbG9zZSh0KTsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisKKyAgICAgICAgLyogc2V0IHRoZSBzb2NrZXQgcGVybWlzc2lvbnMgKi8KKyAgICAgICAgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEFwcGx5IGFueSBzZXR0aW5ncyB0byB0aGUgb3duZXJzaGlwL3Blcm1pc3Npb25zIG9mIHRoZQorICAgICAgICAgICAgICogU3NoZG9tYWluIHNvY2tldAorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpbnQgc3NoZG9tYWluX3NvY2tfcGVybSA9CisgICAgICAgICAgICAgICAgbmV0c25tcF9kc19nZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19QRVJNKTsKKyAgICAgICAgICAgIGludCBzc2hkb21haW5fc29ja191c2VyID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX1VTRVIpOworICAgICAgICAgICAgaW50IHNzaGRvbWFpbl9zb2NrX2dyb3VwID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX1NTSERPTUFJTl9TT0NLX0dST1VQKTsKKworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJoZXJlOiAlcywgJWQsICVkLCAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuYWRkci0+c3VuX3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICBzc2hkb21haW5fc29ja19wZXJtLCBzc2hkb21haW5fc29ja191c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgc3NoZG9tYWluX3NvY2tfZ3JvdXApKTsKKyAgICAgICAgICAgIGlmIChzc2hkb21haW5fc29ja19wZXJtICE9IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic3NoIiwgIlNldHRpbmcgc29ja2V0IHBlcm1zIHRvICVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX3Blcm0pKTsKKyAgICAgICAgICAgICAgICBjaG1vZCh1bmFkZHItPnN1bl9wYXRoLCBzc2hkb21haW5fc29ja19wZXJtKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHNzaGRvbWFpbl9zb2NrX3VzZXIgfHwgc3NoZG9tYWluX3NvY2tfZ3JvdXApIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIElmIGVpdGhlciBvZiB1c2VyIG9yIGdyb3VwIGhhdmVuJ3QgYmVlbiBzZXQsCisgICAgICAgICAgICAgICAgICogIHRoZW4gbGVhdmUgdGhlbSB1bmNoYW5nZWQuCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgaWYgKHNzaGRvbWFpbl9zb2NrX3VzZXIgPT0gMCApCisgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX3VzZXIgPSAtMTsKKyAgICAgICAgICAgICAgICBpZiAoc3NoZG9tYWluX3NvY2tfZ3JvdXAgPT0gMCApCisgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX2dyb3VwID0gLTE7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJTZXR0aW5nIHNvY2tldCB1c2VyL2dyb3VwIHRvICVkLyVkXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzaGRvbWFpbl9zb2NrX3VzZXIsIHNzaGRvbWFpbl9zb2NrX2dyb3VwKSk7CisgICAgICAgICAgICAgICAgY2hvd24odW5hZGRyLT5zdW5fcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICBzc2hkb21haW5fc29ja191c2VyLCBzc2hkb21haW5fc29ja19ncm91cCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByYyA9IGxpc3Rlbih0LT5zb2NrLCBORVRTTk1QX1NUUkVBTV9RVUVVRV9MRU4pOworICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc3NoX3RyYW5zcG9ydCIsCisgICAgICAgICAgICAgICAgICAgICAgICAiY291bGRuJ3QgbGlzdGVuIHRvIFwiJXNcIiwgZXJybm8gJWQgKCVzKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVuYWRkci0+c3VuX3BhdGgsIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKKyAgICAgICAgICAgIG5ldHNubXBfc3NoX2Nsb3NlKHQpOworICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIAorCisjZWxzZSAvKiB3ZSdyZSBjYWxsZWQgZGlyZWN0bHkgYnkgc3NoZCBhbmQgdXNlIHN0ZGluL291dCAqLworICAgICAgICAvKiBmb3Igc3NoIG9uIHRoZSBzZXJ2ZXIgc2lkZSB3ZSd2ZSBiZWVuIGxhdW5jaGVkIHNvIGJpbmQgdG8KKyAgICAgICAgICAgc3RkaW4vb3V0ICovCisKKyAgICAgICAgLyogbm90aGluZyB0byBkbyAqLworCisgICAgICAgIC8qIFhYWDogdmVyaWZ5IHdlJ3JlIGluc2lkZSBzc2ggKi8KKyAgICAgICAgdC0+c29jayA9IFNURElOX0ZJTEVOTzsKKyNlbmRpZiAvKiAhIFNOTVBTU0hET01BSU5fVVNFX0VYVEVSTkFMX1BJUEUgKi8KKworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIFhYWDogbmVlZCBhbiBpcHY2IGZyaWVuZGx5IG9uZSB0b28gKHNpZ2gpICovCisKKyAgICAgICAgLyogWFhYOiBub3QgaWRlYWwgd2hlbiBzdHJ1Y3RzIGRvbid0IGFjdHVhbGx5IG1hdGNoIHNpemUgd2lzZSAqLworICAgICAgICBtZW1jcHkoJihhZGRyX3BhaXItPnJlbW90ZV9hZGRyKSwgYWRkciwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCisgICAgICAgIHQtPnNvY2sgPSBzb2NrZXQoUEZfSU5FVCwgU09DS19TVFJFQU0sIDApOworICAgICAgICBpZiAodC0+c29jayA8IDApIHsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIHQtPnJlbW90ZSA9ICh1X2NoYXIgKiltYWxsb2MoNik7CisgICAgICAgIGlmICh0LT5yZW1vdGUgPT0gTlVMTCkgeworICAgICAgICAgICAgbmV0c25tcF9zc2hfY2xvc2UodCk7CisgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHQtPnJlbW90ZSwgKHVfY2hhciAqKSAmIChhZGRyLT5zaW5fYWRkci5zX2FkZHIpLCA0KTsKKyAgICAgICAgdC0+cmVtb3RlWzRdID0gKGh0b25zKGFkZHItPnNpbl9wb3J0KSAmIDB4ZmYwMCkgPj4gODsKKyAgICAgICAgdC0+cmVtb3RlWzVdID0gKGh0b25zKGFkZHItPnNpbl9wb3J0KSAmIDB4MDBmZikgPj4gMDsKKyAgICAgICAgdC0+cmVtb3RlX2xlbmd0aCA9IDY7CisKKyAgICAgICAgLyoKKyAgICAgICAgICogVGhpcyBpcyBhIGNsaWVudC10eXBlIHNlc3Npb24sIHNvIGF0dGVtcHQgdG8gY29ubmVjdCB0byB0aGUgZmFyCisgICAgICAgICAqIGVuZC4gIFdlIGRvbid0IGdvIG5vbi1ibG9ja2luZyBoZXJlIGJlY2F1c2UgaXQncyBub3Qgb2J2aW91cyB3aGF0CisgICAgICAgICAqIHlvdSdkIHRoZW4gZG8gaWYgeW91IHRyaWVkIHRvIGRvIHNubXBfc2VuZHMgYmVmb3JlIHRoZSBjb25uZWN0aW9uCisgICAgICAgICAqIGhhZCBjb21wbGV0ZWQuICBTbyB0aGlzIGNhbiBibG9jay4KKyAgICAgICAgICovCisKKyAgICAgICAgcmMgPSBjb25uZWN0KHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKilhZGRyLAorCQkgICAgIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHIpKTsKKworICAgICAgICBpZiAocmMgPCAwKSB7CisgICAgICAgICAgICBuZXRzbm1wX3NzaF9jbG9zZSh0KTsKKyAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIC8qCisgICAgICAgICAqIEFsbG93IHVzZXIgdG8gb3ZlcnJpZGUgdGhlIHNlbmQgYW5kIHJlY2VpdmUgYnVmZmVycy4gRGVmYXVsdCBpcworICAgICAgICAgKiB0byB1c2Ugb3MgZGVmYXVsdC4gIERvbid0IHdvcnJ5IHRvbyBtdWNoIGFib3V0IGVycm9ycyAtLQorICAgICAgICAgKiBqdXN0IHBsb3VnaCBvbiByZWdhcmRsZXNzLiAgCisgICAgICAgICAqLworICAgICAgICBuZXRzbm1wX3NvY2tfYnVmZmVyX3NldCh0LT5zb2NrLCBTT19TTkRCVUYsIGxvY2FsLCAwKTsKKyAgICAgICAgbmV0c25tcF9zb2NrX2J1ZmZlcl9zZXQodC0+c29jaywgU09fUkNWQlVGLCBsb2NhbCwgMCk7CisKKyAgICAgICAgLyogb3BlbiB0aGUgU1NIIHNlc3Npb24gYW5kIGNoYW5uZWwgKi8KKyAgICAgICAgYWRkcl9wYWlyLT5zZXNzaW9uID0gbGlic3NoMl9zZXNzaW9uX2luaXQoKTsKKyAgICAgICAgaWYgKGxpYnNzaDJfc2Vzc2lvbl9zdGFydHVwKGFkZHJfcGFpci0+c2Vzc2lvbiwgdC0+c29jaykpIHsKKyAgICAgICAgICBzaHV0ZG93bjoKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJGYWlsZWQgdG8gZXN0YWJsaXNoIGFuIFNTSCBzZXNzaW9uXG4iKTsKKyAgICAgICAgICAgIG5ldHNubXBfc3NoX2Nsb3NlKHQpOworICAgICAgICAgICAgbmV0c25tcF90cmFuc3BvcnRfZnJlZSh0KTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgLyogQXQgdGhpcyBwb2ludCB3ZSBoYXZuJ3QgYXV0aGVudGljYXRlZCwgVGhlIGZpcnN0IHRoaW5nIHRvCisgICAgICAgICAgIGRvIGlzIGNoZWNrIHRoZSBob3N0a2V5J3MgZmluZ2VycHJpbnQgYWdhaW5zdCBvdXIga25vd24KKyAgICAgICAgICAgaG9zdHMgWW91ciBhcHAgbWF5IGhhdmUgaXQgaGFyZCBjb2RlZCwgbWF5IGdvIHRvIGEgZmlsZSwKKyAgICAgICAgICAgbWF5IHByZXNlbnQgaXQgdG8gdGhlIHVzZXIsIHRoYXQncyB5b3VyIGNhbGwKKyAgICAgICAgICovCisgICAgICAgIGZpbmdlcnByaW50ID0KKyAgICAgICAgICAgIGxpYnNzaDJfaG9zdGtleV9oYXNoKGFkZHJfcGFpci0+c2Vzc2lvbiwgTElCU1NIMl9IT1NUS0VZX0hBU0hfTUQ1KTsKKyAgICAgICAgREVCVUdNU0dUTCgoInNzaCIsICJGaW5nZXJwcmludDogIikpOworICAgICAgICBmb3IoaSA9IDA7IGkgPCAxNjsgaSsrKSB7CisgICAgICAgICAgICBERUJVR01TRygoInNzaCIsICIlMDJ4IiwKKyAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilmaW5nZXJwcmludFtpXSkpOworICAgICAgICB9CisgICAgICAgIERFQlVHTVNHKCgic3NoIiwgIlxuIikpOworCisgICAgICAgIC8qIGNoZWNrIHdoYXQgYXV0aGVudGljYXRpb24gbWV0aG9kcyBhcmUgYXZhaWxhYmxlICovCisgICAgICAgIHVzZXJhdXRobGlzdCA9CisgICAgICAgICAgICBsaWJzc2gyX3VzZXJhdXRoX2xpc3QoYWRkcl9wYWlyLT5zZXNzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJuYW1lLCBzdHJsZW4odXNlcm5hbWUpKTsKKyAgICAgICAgREVCVUdNU0coKCJzc2giLCAiQXV0aGVudGljYXRpb24gbWV0aG9kczogJXNcbiIsIHVzZXJhdXRobGlzdCkpOworCisgICAgICAgIC8qIFhYWDogYWxsb3cgb3RoZXIgdHlwZXMgKi8KKyAgICAgICAgLyogWFhYOiA0IHNlZW1zIG1hZ2ljIHRvIG1lLi4uICovCisgICAgICAgIGlmIChzdHJzdHIodXNlcmF1dGhsaXN0LCAicHVibGlja2V5IikgIT0gTlVMTCkgeworICAgICAgICAgICAgYXV0aF9wdyB8PSA0OworICAgICAgICB9CisKKyAgICAgICAgLyogWFhYOiBoYXJkIGNvZGVkIHBhdGhzIGFuZCB1c2VycyAqLworICAgICAgICBpZiAoYXV0aF9wdyAmIDQpIHsKKyAgICAgICAgICAgIC8qIHB1YmxpYyBrZXkgKi8KKyAgICAgICAgICAgIGlmIChsaWJzc2gyX3VzZXJhdXRoX3B1YmxpY2tleV9mcm9tZmlsZShhZGRyX3BhaXItPnNlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZTEsIGtleWZpbGUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpKSB7CisgICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiQXV0aGVudGljYXRpb24gYnkgcHVibGljIGtleSBmYWlsZWQhXG4iKTsKKyAgICAgICAgICAgICAgICBnb3RvIHNodXRkb3duOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBERUJVR01TRygoInNzaCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJcdEF1dGhlbnRpY2F0aW9uIGJ5IHB1YmxpYyBrZXkgc3VjY2VlZGVkLlxuIikpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiQXV0aGVudGljYXRpb24gYnkgcHVibGljIGtleSBmYWlsZWQhXG4iKTsKKyAgICAgICAgICAgIGdvdG8gc2h1dGRvd247CisgICAgICAgIH0KKworICAgICAgICAvKiB3ZSd2ZSBub3cgYXV0aGVudGljYXRlZCBib3RoIHNpZGVzOyBjb250aW5pbmcgb253YXJkIC4uLiAqLworCisgICAgICAgIC8qIFJlcXVlc3QgYSBjaGFubmVsICovCisgICAgICAgIGlmICghKGFkZHJfcGFpci0+Y2hhbm5lbCA9CisgICAgICAgICAgICAgIGxpYnNzaDJfY2hhbm5lbF9vcGVuX3Nlc3Npb24oYWRkcl9wYWlyLT5zZXNzaW9uKSkpIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJVbmFibGUgdG8gb3BlbiBhIHNlc3Npb25cbiIpOworICAgICAgICAgICAgZ290byBzaHV0ZG93bjsKKyAgICAgICAgfQorCisgICAgICAgIC8qIFJlcXVlc3QgYSB0ZXJtaW5hbCB3aXRoICd2YW5pbGxhJyB0ZXJtaW5hbCBlbXVsYXRpb24KKyAgICAgICAgICogU2VlIC9ldGMvdGVybWNhcCBmb3IgbW9yZSBvcHRpb25zCisgICAgICAgICAqLworICAgICAgICAvKiBYWFg6IG5lZWRlZD8gIGRvdWJ0IGl0ICovCisvKiAgICAgICAgIGlmIChsaWJzc2gyX2NoYW5uZWxfcmVxdWVzdF9wdHkoYWRkcl9wYWlyLT5jaGFubmVsLCAidmFuaWxsYSIpKSB7ICovCisvKiAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRmFpbGVkIHJlcXVlc3RpbmcgcHR5XG4iKTsgKi8KKy8qICAgICAgICAgICAgIGdvdG8gc2h1dGRvd247ICovCisvKiAgICAgICAgIH0gKi8KKyAgICAgICAgaWYgKGxpYnNzaDJfY2hhbm5lbF9zdWJzeXN0ZW0oYWRkcl9wYWlyLT5jaGFubmVsLCAic25tcCIpKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiRmFpbGVkIHRvIHJlcXVlc3QgdGhlIHNzaCAnc25tcCcgc3Vic3lzdGVtXG4iKTsKKyAgICAgICAgICAgIGdvdG8gc2h1dGRvd247CisgICAgICAgIH0KKyAgICB9CisKKyAgICBERUJVR01TRygoInNzaCIsIk9wZW5lZCBjb25uZWN0aW9uLlxuIikpOworICAgIC8qCisgICAgICogTWVzc2FnZSBzaXplIGlzIG5vdCBsaW1pdGVkIGJ5IHRoaXMgdHJhbnNwb3J0IChoZW5jZSBtc2dNYXhTaXplCisgICAgICogaXMgZXF1YWwgdG8gdGhlIG1heGltdW0gbGVnYWwgc2l6ZSBvZiBhbiBTTk1QIG1lc3NhZ2UpLiAgCisgICAgICovCisKKyAgICB0LT5tc2dNYXhTaXplID0gMHg3ZmZmZmZmZjsKKyAgICB0LT5mX3JlY3YgICAgID0gbmV0c25tcF9zc2hfcmVjdjsKKyAgICB0LT5mX3NlbmQgICAgID0gbmV0c25tcF9zc2hfc2VuZDsKKyAgICB0LT5mX2Nsb3NlICAgID0gbmV0c25tcF9zc2hfY2xvc2U7CisgICAgdC0+Zl9hY2NlcHQgICA9IG5ldHNubXBfc3NoX2FjY2VwdDsKKyAgICB0LT5mX2ZtdGFkZHIgID0gbmV0c25tcF9zc2hfZm10YWRkcjsKKworICAgIHJldHVybiB0OworfQorCisKKworbmV0c25tcF90cmFuc3BvcnQgKgorbmV0c25tcF9zc2hfY3JlYXRlX3RzdHJpbmcoY29uc3QgY2hhciAqc3RyLCBpbnQgbG9jYWwsCisJCQkgICBjb25zdCBjaGFyICpkZWZhdWx0X3RhcmdldCkKK3sKKyAgICBzdHJ1Y3Qgc29ja2FkZHJfaW4gYWRkcjsKKworICAgIGlmIChuZXRzbm1wX3NvY2thZGRyX2luMigmYWRkciwgc3RyLCBkZWZhdWx0X3RhcmdldCkpIHsKKyAgICAgICAgcmV0dXJuIG5ldHNubXBfc3NoX3RyYW5zcG9ydCgmYWRkciwgbG9jYWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KK30KKworCisKK25ldHNubXBfdHJhbnNwb3J0ICoKK25ldHNubXBfc3NoX2NyZWF0ZV9vc3RyaW5nKGNvbnN0IHVfY2hhciAqIG8sIHNpemVfdCBvX2xlbiwgaW50IGxvY2FsKQoreworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworCisgICAgaWYgKG9fbGVuID09IDYpIHsKKyAgICAgICAgdW5zaWduZWQgc2hvcnQgcG9ydHRtcCA9IChvWzRdIDw8IDgpICsgb1s1XTsKKyAgICAgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgICAgbWVtY3B5KCh1X2NoYXIgKikgJiAoYWRkci5zaW5fYWRkci5zX2FkZHIpLCBvLCA0KTsKKyAgICAgICAgYWRkci5zaW5fcG9ydCA9IGh0b25zKHBvcnR0bXApOworICAgICAgICByZXR1cm4gbmV0c25tcF9zc2hfdHJhbnNwb3J0KCZhZGRyLCBsb2NhbCk7CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCit2b2lkCitzc2hkb21haW5fcGFyc2Vfc29ja2V0KGNvbnN0IGNoYXIgKnRva2VuLCBjaGFyICpjcHRyKQoreworICAgIGNoYXIgKnNvY2tldF9wZXJtLCAqc29ja2V0X3VzZXIsICpzb2NrZXRfZ3JvdXA7CisgICAgaW50IHVpZCA9IC0xOworICAgIGludCBnaWQgPSAtMTsKKyAgICBpbnQgc19wZXJtID0gLTE7CisgICAgY2hhciAqc3Q7CisKKyAgICBERUJVR01TR1RMKCgic3NoL2NvbmZpZyIsICJwYXJzaW5nIHNvY2tldCBpbmZvOiAlc1xuIiwgY3B0cikpOworICAgIHNvY2tldF9wZXJtID0gc3RydG9rX3IoY3B0ciwgIiBcdCIsICZzdCk7CisgICAgc29ja2V0X3VzZXIgPSBzdHJ0b2tfcihOVUxMLCAiIFx0IiwgJnN0KTsKKyAgICBzb2NrZXRfZ3JvdXAgPSBzdHJ0b2tfcihOVUxMLCAiIFx0IiwgJnN0KTsKKworICAgIGlmIChzb2NrZXRfcGVybSkgeworICAgICAgICBzX3Blcm0gPSBzdHJ0b2woc29ja2V0X3Blcm0sIE5VTEwsIDgpOworICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19QRVJNLCBzX3Blcm0pOworICAgICAgICBERUJVR01TR1RMKCgic3NoL2NvbmZpZyIsICJzb2NrZXQgcGVybWlzc2lvbnM6ICVvICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHNfcGVybSwgc19wZXJtKSk7CisgICAgfQorICAgIC8qCisgICAgICogVHJ5IHRvIGhhbmRsZSBudW1lcmljIFVJRHMgb3IgdXNlciBuYW1lcyBmb3IgdGhlIHNvY2tldCBvd25lcgorICAgICAqLworICAgIGlmIChzb2NrZXRfdXNlcikgeworICAgICAgICB1aWQgPSBuZXRzbm1wX3N0cl90b191aWQoc29ja2V0X3VzZXIpOworICAgICAgICBpZiAoIHVpZCAhPSAwICkKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X2ludChORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19TU0hET01BSU5fU09DS19VU0VSLCB1aWQpOworICAgICAgICBERUJVR01TR1RMKCgic3NoL2NvbmZpZyIsICJzb2NrZXQgb3duZXI6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgIHNvY2tldF91c2VyLCB1aWQpKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIGFuZCBzaW1pbGFybHkgZm9yIHRoZSBzb2NrZXQgZ3JvdXAgb3duZXJzaGlwCisgICAgICovCisgICAgaWYgKHNvY2tldF9ncm91cCkgeworICAgICAgICBnaWQgPSBuZXRzbm1wX3N0cl90b19naWQoc29ja2V0X2dyb3VwKTsKKyAgICAgICAgaWYgKCBnaWQgIT0gMCApCisgICAgICAgICAgICBuZXRzbm1wX2RzX3NldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfU1NIRE9NQUlOX1NPQ0tfR1JPVVAsIGdpZCk7CisgICAgICAgIERFQlVHTVNHVEwoKCJzc2gvY29uZmlnIiwgInNvY2tldCBncm91cDogJXMgKCVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgc29ja2V0X2dyb3VwLCBnaWQpKTsKKyAgICB9Cit9CisKK3ZvaWQKK25ldHNubXBfc3NoX2N0b3Iodm9pZCkgICAgCit7CisgICAgc3NoRG9tYWluLm5hbWUgPSBuZXRzbm1wX3NubXBTU0hEb21haW47CisgICAgc3NoRG9tYWluLm5hbWVfbGVuZ3RoID0gc2l6ZW9mKG5ldHNubXBfc25tcFNTSERvbWFpbikgLyBzaXplb2Yob2lkKTsKKyAgICBzc2hEb21haW4ucHJlZml4ID0gKGNvbnN0IGNoYXIgKiopY2FsbG9jKDIsIHNpemVvZihjaGFyICopKTsKKyAgICBzc2hEb21haW4ucHJlZml4WzBdID0gInNzaCI7CisKKyAgICBzc2hEb21haW4uZl9jcmVhdGVfZnJvbV90c3RyaW5nICAgICA9IE5VTEw7CisgICAgc3NoRG9tYWluLmZfY3JlYXRlX2Zyb21fdHN0cmluZ19uZXcgPSBuZXRzbm1wX3NzaF9jcmVhdGVfdHN0cmluZzsKKyAgICBzc2hEb21haW4uZl9jcmVhdGVfZnJvbV9vc3RyaW5nICAgICA9IG5ldHNubXBfc3NoX2NyZWF0ZV9vc3RyaW5nOworCisgICAgcmVnaXN0ZXJfY29uZmlnX2hhbmRsZXIoInNubXAiLCAic3NodG9zbm1wc29ja2V0cGVybXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzc2hkb21haW5fcGFyc2Vfc29ja2V0LCBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXRwZXJtcyBbdXNlcm5hbWUgW2dyb3VwbmFtZV1dIik7CisKKyAgICBuZXRzbm1wX2RzX3JlZ2lzdGVyX2NvbmZpZyhBU05fT0NURVRfU1RSLCAic25tcCIsICJzc2h0b3NubXBzb2NrZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9TU0hUT1NOTVBfU09DS0VUKTsKKworICAgIERFQlVHTVNHVEwoKCJzc2giLCAicmVnaXN0ZXJpbmcgdGhlIHNzaCBkb21haW5cbiIpKTsKKyAgICBuZXRzbm1wX3Rkb21haW5fcmVnaXN0ZXIoJnNzaERvbWFpbik7Cit9CisKKwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wU1RERG9tYWluLmMgYi9zbm1wbGliL3NubXBTVEREb21haW4uYwppbmRleCBmODNlYWE1Li42MDBhNjgzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBTVEREb21haW4uYworKysgYi9zbm1wbGliL3NubXBTVEREb21haW4uYwpAQCAtNDAsNyArNDAsNyBAQAogbmV0c25tcF9zdGRfZm10YWRkcihuZXRzbm1wX3RyYW5zcG9ydCAqdCwgdm9pZCAqZGF0YSwgaW50IGxlbikKIHsKICAgICBjaGFyICpidWY7Ci0gICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJmb3JtYXR0aW5nIGFkZHIuICBkYXRhPSV4XG4iLHQtPmRhdGEpKTsKKyAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsImZvcm1hdHRpbmcgYWRkci4gIGRhdGE9JXBcbiIsdC0+ZGF0YSkpOwogICAgIGlmICh0LT5kYXRhKSB7CiAgICAgICAgIG5ldHNubXBfc3RkX2RhdGEgKmRhdGEgPSAobmV0c25tcF9zdGRfZGF0YSopdC0+ZGF0YTsKICAgICAgICAgYnVmID0gKGNoYXIqKW1hbGxvYyhTTk1QX01BWEJVRl9NRURJVU0pOwpAQCAtNjcsNyArNjcsNyBAQAogewogICAgIGludCByYyA9IC0xOwogCi0gICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJyZWN2IG9uIHNvY2sgJWQuICBkYXRhPSV4XG4iLHQtPnNvY2ssIHQtPmRhdGEpKTsKKyAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsInJlY3Ygb24gc29jayAlZC4gIGRhdGE9JXBcbiIsdC0+c29jaywgdC0+ZGF0YSkpOwogICAgIHdoaWxlIChyYyA8IDApIHsKICAgICAgICAgcmMgPSByZWFkKHQtPnNvY2ssIGJ1Ziwgc2l6ZSk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwiICBieXRlczogJWQuXG4iLCByYykpOwpAQCAtOTQsNyArOTQsNyBAQAogewogICAgIGludCByYyA9IC0xOwogCi0gICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJzZW5kIG9uIHNvY2suICBkYXRhPSV4XG4iLCB0LT5kYXRhKSk7CisgICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJzZW5kIG9uIHNvY2suICBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgd2hpbGUgKHJjIDwgMCkgewogICAgICAgICBpZiAodC0+ZGF0YSkgewogICAgICAgICAgICAgbmV0c25tcF9zdGRfZGF0YSAqZGF0YSA9IChuZXRzbm1wX3N0ZF9kYXRhKil0LT5kYXRhOwpAQCAtMTEzLDcgKzExMyw3IEBACiBzdGF0aWMgaW50CiBuZXRzbm1wX3N0ZF9jbG9zZShuZXRzbm1wX3RyYW5zcG9ydCAqdCkKIHsKLSAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsImNsb3NlLiAgZGF0YT0leFxuIiwgdC0+ZGF0YSkpOworICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwiY2xvc2UuICBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgaWYgKHQtPmRhdGEpIHsKICAgICAgICAgbmV0c25tcF9zdGRfZGF0YSAqZGF0YSA9IChuZXRzbm1wX3N0ZF9kYXRhKil0LT5kYXRhOwogICAgICAgICBjbG9zZShkYXRhLT5vdXRmZCk7CkBAIC0xMzgsNyArMTM4LDcgQEAKIHN0YXRpYyBpbnQKIG5ldHNubXBfc3RkX2FjY2VwdChuZXRzbm1wX3RyYW5zcG9ydCAqdCkKIHsKLSAgICBERUJVR01TR1RMKCgiZG9tYWluOnN0ZCIsIiBhY2NlcHQgZGF0YT0leFxuIiwgdC0+ZGF0YSkpOworICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwiIGFjY2VwdCBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgLyogbm90aGluZyB0byBkbyBoZXJlICovCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0yMjIsNyArMjIyLDcgQEAKICAgICAgICAgICAgIGRhdGEtPnByb2cgPSBzdHJkdXAoaW5zdHJpbmcpOwogICAgICAgICAgICAgZGF0YS0+b3V0ZmQgPSBpbmZkWzFdOwogICAgICAgICAgICAgZGF0YS0+Y2hpbGRwaWQgPSBjaGlsZHBpZDsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJkb21haW46c3RkIiwicGFyZW50LiAgZGF0YT0leFxuIiwgdC0+ZGF0YSkpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoImRvbWFpbjpzdGQiLCJwYXJlbnQuICBkYXRhPSVwXG4iLCB0LT5kYXRhKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvKiB3ZSdyZSBpbiB0aGUgY2hpbGQgKi8KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wVENQRG9tYWluLmMgYi9zbm1wbGliL3NubXBUQ1BEb21haW4uYwppbmRleCA4Y2I2Zjk0Li5kMjIxZmQzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBUQ1BEb21haW4uYworKysgYi9zbm1wbGliL3NubXBUQ1BEb21haW4uYwpAQCAtMTA5LDcgKzEwOSw3IEBACiAKICAgICBpZiAodCAhPSBOVUxMICYmIHQtPnNvY2sgPj0gMCkgewogCXdoaWxlIChyYyA8IDApIHsKLQkgICAgcmMgPSByZWN2ZnJvbSh0LT5zb2NrLCBidWYsIHNpemUsIDAsIE5VTEwsIDApOworCSAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgTlVMTCwgTlVMTCk7CiAJICAgIGlmIChyYyA8IDAgJiYgZXJybm8gIT0gRUlOVFIpIHsKIAkJREVCVUdNU0dUTCgoIm5ldHNubXBfdGNwIiwgInJlY3YgZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAogCQkJICAgIHQtPnNvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcFRDUElQdjZEb21haW4uYyBiL3NubXBsaWIvc25tcFRDUElQdjZEb21haW4uYwppbmRleCBkZTdlODNmLi44MzI0M2M3IDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBUQ1BJUHY2RG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wVENQSVB2NkRvbWFpbi5jCkBAIC0yOCw3ICsyOCw5IEBACiAjaW5jbHVkZSA8d2luc29jazIuaD4KICNpbmNsdWRlIDx3czJ0Y3BpcC5oPgogCisjaWZuZGVmIEhBVkVfSU5FVF9OVE9QCiBleHRlcm4gY29uc3QgY2hhciAqaW5ldF9udG9wKGludCwgY29uc3Qgdm9pZCosIGNoYXIqLCBzaXplX3QpOworI2VuZGlmCiAKICNlbmRpZgogCkBAIC0xMDUsNyArMTA3LDcgQEAKIAogICAgIGlmICh0ICE9IE5VTEwgJiYgdC0+c29jayA+PSAwKSB7CiAJd2hpbGUgKHJjIDwgMCkgewotCSAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgMCwgTlVMTCwgMCk7CisJICAgIHJjID0gcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCAwLCBOVUxMLCBOVUxMKTsKIAkgICAgaWYgKHJjIDwgMCAmJiBlcnJubyAhPSBFSU5UUikgewogCQlERUJVR01TR1RMKCgibmV0c25tcF90Y3A2IiwgInJlY3YgZmQgJWQgZXJyICVkIChcIiVzXCIpXG4iLAogCQkJICAgIHQtPnNvY2ssIGVycm5vLCBzdHJlcnJvcihlcnJubykpKTsKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcFVEUERvbWFpbi5jIGIvc25tcGxpYi9zbm1wVURQRG9tYWluLmMKaW5kZXggNWUwNjJjYy4uMThjYWVlNSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wVURQRG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wVURQRG9tYWluLmMKQEAgLTkyLDEwICs5MiwxMSBAQAogICogYWRkcmVzcyBpZiBkYXRhIGlzIE5VTEwuICAKICAqLwogCi1zdGF0aWMgY2hhciAqCitjaGFyICoKIG5ldHNubXBfdWRwX2ZtdGFkZHIobmV0c25tcF90cmFuc3BvcnQgKnQsIHZvaWQgKmRhdGEsIGludCBsZW4pCiB7CiAgICAgbmV0c25tcF91ZHBfYWRkcl9wYWlyICphZGRyX3BhaXIgPSBOVUxMOworICAgIHN0cnVjdCBob3N0ZW50ICpob3N0OwogCiAgICAgaWYgKGRhdGEgIT0gTlVMTCAmJiBsZW4gPT0gc2l6ZW9mKG5ldHNubXBfdWRwX2FkZHJfcGFpcikpIHsKIAlhZGRyX3BhaXIgPSAobmV0c25tcF91ZHBfYWRkcl9wYWlyICopIGRhdGE7CkBAIC0xMTIsNiArMTEzLDkgQEAKICAgICAgICAgaWYgKHRvID09IE5VTEwpIHsKICAgICAgICAgICAgIHNwcmludGYodG1wLCAiVURQOiB1bmtub3duLT5bJXNdIiwKICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKGFkZHJfcGFpci0+bG9jYWxfYWRkcikpOworICAgICAgICB9IGVsc2UgaWYgKCB0ICYmIHQtPmZsYWdzICYgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19IT1NUTkFNRSApIHsKKyAgICAgICAgICAgIGhvc3QgPSBnZXRob3N0YnlhZGRyKChjaGFyICopJnRvLT5zaW5fYWRkciwgNCwgQUZfSU5FVCk7CisgICAgICAgICAgICByZXR1cm4gKGhvc3QgPyBzdHJkdXAoaG9zdC0+aF9uYW1lKSA6IE5VTEwpOyAKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHNwcmludGYodG1wLCAiVURQOiBbJXNdOiVodS0+IiwKICAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKHRvLT5zaW5fYWRkciksIG50b2hzKHRvLT5zaW5fcG9ydCkpOwpAQCAtMTIzLDE1ICsxMjcsMjQgQEAKIAogCiAKLSNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCi0KKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChJUF9QS1RJTkZPKSkgXAorICAgIHx8IGRlZmluZWQoSVBfUkVDVkRTVEFERFIpICYmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfQ09OVFJPTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19GTEFHUworI2lmICBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCiAjIGRlZmluZSBuZXRzbm1wX2RzdGFkZHIoeCkgKCYoKChzdHJ1Y3QgaW5fcGt0aW5mbyAqKShDTVNHX0RBVEEoeCkpKS0+aXBpX2FkZHIpKQorI2VsaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikKKyMgZGVmaW5lIG5ldHNubXBfZHN0YWRkcih4KSAoJihzdHJ1Y3QgY21zZ2hyICopKENNU0dfREFUQSh4KSkpCisjZW5kaWYKIAotc3RhdGljIGludCBuZXRzbm1wX3VkcF9yZWN2ZnJvbShpbnQgcywgdm9pZCAqYnVmLCBpbnQgbGVuLCBzdHJ1Y3Qgc29ja2FkZHIgKmZyb20sIHNvY2tsZW5fdCAqZnJvbWxlbiwgc3RydWN0IGluX2FkZHIgKmRzdGlwKQoraW50IG5ldHNubXBfdWRwX3JlY3Zmcm9tKGludCBzLCB2b2lkICpidWYsIGludCBsZW4sIHN0cnVjdCBzb2NrYWRkciAqZnJvbSwgc29ja2xlbl90ICpmcm9tbGVuLCBzdHJ1Y3QgaW5fYWRkciAqZHN0aXApCiB7CiAgICAgaW50IHI7CiAgICAgc3RydWN0IGlvdmVjIGlvdlsxXTsKKyNpZiAgIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKICAgICBjaGFyIGNtc2dbQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IGluX3BrdGluZm8pKV07CisjZWxpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKQorICAgIGNoYXIgY21zZ1tDTVNHX1NQQUNFKHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpXTsKKyNlbmRpZgogICAgIHN0cnVjdCBjbXNnaGRyICpjbXNncHRyOwogICAgIHN0cnVjdCBtc2doZHIgbXNnOwogCkBAIC0xNTMsNiArMTY2LDcgQEAKICAgICB9CiAgICAgCiAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwIiwgImdvdCBzb3VyY2UgYWRkcjogJXNcbiIsIGluZXRfbnRvYSgoKHN0cnVjdCBzb2NrYWRkcl9pbiAqKWZyb20pLT5zaW5fYWRkcikpKTsKKyNpZiAgIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKICAgICBmb3IgKGNtc2dwdHIgPSBDTVNHX0ZJUlNUSERSKCZtc2cpOyBjbXNncHRyICE9IE5VTEw7IGNtc2dwdHIgPSBDTVNHX05YVEhEUigmbXNnLCBjbXNncHRyKSkgewogICAgICAgICBpZiAoY21zZ3B0ci0+Y21zZ19sZXZlbCA9PSBTT0xfSVAgJiYgY21zZ3B0ci0+Y21zZ190eXBlID09IElQX1BLVElORk8pIHsKICAgICAgICAgICAgIG1lbWNweSgodm9pZCAqKSBkc3RpcCwgbmV0c25tcF9kc3RhZGRyKGNtc2dwdHIpLCBzaXplb2Yoc3RydWN0IGluX2FkZHIpKTsKQEAgLTE2MCwxMCArMTc0LDIwIEBACiAgICAgICAgICAgICAgICAgICAgIGluZXRfbnRvYSgqZHN0aXApKSk7CiAgICAgICAgIH0KICAgICB9CisjZWxpZiBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKQorICAgIGZvciAoY21zZ3B0ciA9IENNU0dfRklSU1RIRFIoJm1zZyk7IGNtc2dwdHIgIT0gTlVMTDsgY21zZ3B0ciA9IENNU0dfTlhUSERSKCZtc2csIGNtc2dwdHIpKSB7CisgICAgICAgIGlmIChjbXNncHRyLT5jbXNnX2xldmVsID09IElQUFJPVE9fSVAgJiYgY21zZ3B0ci0+Y21zZ190eXBlID09IElQX1JFQ1ZEU1RBRERSKSB7CisgICAgICAgICAgICBtZW1jcHkoKHZvaWQgKikgZHN0aXAsIENNU0dfREFUQShjbXNncHRyKSwgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSk7CisgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHAiLCAiZ290IGRlc3RpbmF0aW9uIChsb2NhbCkgYWRkciAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9hKCpkc3RpcCkpKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgogICAgIHJldHVybiByOwogfQogCi1zdGF0aWMgaW50IG5ldHNubXBfdWRwX3NlbmR0byhpbnQgZmQsIHN0cnVjdCBpbl9hZGRyICpzcmNpcCwgc3RydWN0IHNvY2thZGRyICpyZW1vdGUsCisjaWYgICBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCitpbnQgbmV0c25tcF91ZHBfc2VuZHRvKGludCBmZCwgc3RydWN0IGluX2FkZHIgKnNyY2lwLCBzdHJ1Y3Qgc29ja2FkZHIgKnJlbW90ZSwKIAkJCXZvaWQgKmRhdGEsIGludCBsZW4pCiB7CiAgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsgZGF0YSwgbGVuIH07CkBAIC0xOTAsNyArMjE0LDM2IEBACiAKICAgICByZXR1cm4gc2VuZG1zZyhmZCwgJm0sIE1TR19OT1NJR05BTHxNU0dfRE9OVFdBSVQpOwogfQotI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKyNlbGlmIGRlZmluZWQoSVBfUkVDVkRTVEFERFIpCitpbnQgbmV0c25tcF91ZHBfc2VuZHRvKGludCBmZCwgc3RydWN0IGluX2FkZHIgKnNyY2lwLCBzdHJ1Y3Qgc29ja2FkZHIgKnJlbW90ZSwKKwkJCXZvaWQgKmRhdGEsIGludCBsZW4pCit7CisgICAgc3RydWN0IGlvdmVjIGlvdiA9IHsgZGF0YSwgbGVuIH07CisgICAgc3RydWN0IGNtc2doZHIgKmNtOworICAgIHN0cnVjdCBpbl9hZGRyIGlwOworICAgIHN0cnVjdCBtc2doZHIgbTsKKyAgICBjaGFyICAgY21idWZbQ01TR19TUEFDRShzaXplb2Yoc3RydWN0IGluX2FkZHIpKV07CisKKyAgICBtZW1zZXQoJm0sIDAsIHNpemVvZihzdHJ1Y3QgbXNnaGRyKSk7CisgICAgbS5tc2dfbmFtZQkJPSByZW1vdGU7CisgICAgbS5tc2dfbmFtZWxlbgk9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pOworICAgIG0ubXNnX2lvdgkJPSAmaW92OworICAgIG0ubXNnX2lvdmxlbgk9IDE7CisgICAgbS5tc2dfY29udHJvbAk9IGNtYnVmOworICAgIG0ubXNnX2NvbnRyb2xsZW4JPSBzaXplb2YoY21idWYpOworICAgIG0ubXNnX2ZsYWdzCQk9IDA7CisKKyAgICBjbSA9IENNU0dfRklSU1RIRFIoJm0pOworICAgIGNtLT5jbXNnX2xlbiA9IENNU0dfTEVOKHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOworICAgIGNtLT5jbXNnX2xldmVsID0gSVBQUk9UT19JUDsKKyAgICBjbS0+Y21zZ190eXBlID0gSVBfU0VORFNSQ0FERFI7CisKKyAgICBtZW1jcHkoKHN0cnVjdCBpbl9hZGRyICopQ01TR19EQVRBKGNtKSwgc3JjaXAsIHNpemVvZihzdHJ1Y3QgaW5fYWRkcikpOworCisgICAgcmV0dXJuIHNlbmRtc2coZmQsICZtLCBNU0dfTk9TSUdOQUx8TVNHX0RPTlRXQUlUKTsKK30KKyNlbmRpZgorI2VuZGlmIC8qIChsaW51eCAmJiBJUF9QS1RJTkZPKSB8fCBJUF9SRUNWRFNUQUREUiAmJiBIQVZFX1NUUlVDVF9NU0dIRFJfLi4uICovCiAKIC8qCiAgKiBZb3UgY2FuIHdyaXRlIHNvbWV0aGluZyBpbnRvIG9wYXF1ZSB0aGF0IHdpbGwgc3Vic2VxdWVudGx5IGdldCBwYXNzZWQgYmFjayAKQEAgLTIxOSwxMSArMjcyLDEzIEBACiAgICAgICAgIH0KIAogCXdoaWxlIChyYyA8IDApIHsKLSNpZiBkZWZpbmVkKGxpbnV4KSAmJiBkZWZpbmVkKElQX1BLVElORk8pCisjaWYgKGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykpIFwKKyAgICB8fCBkZWZpbmVkKElQX1JFQ1ZEU1RBRERSKSAmJiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfRkxBR1MKICAgICAgICAgICAgIHJjID0gbmV0c25tcF91ZHBfcmVjdmZyb20odC0+c29jaywgYnVmLCBzaXplLCBmcm9tLCAmZnJvbWxlbiwgJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpKTsKICNlbHNlCiAgICAgICAgICAgICByYyA9IHJlY3Zmcm9tKHQtPnNvY2ssIGJ1Ziwgc2l6ZSwgTkVUU05NUF9ET05UV0FJVCwgZnJvbSwgJmZyb21sZW4pOwotI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKyNlbmRpZiAvKiAobGludXggJiYgSVBfUEtUSU5GTykgfHwgSVBfUkVDVkRTVEFERFIgJiYgSEFWRV9TVFJVQ1RfTVNHSERSXy4uLiAqLwogCSAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CiAJCWJyZWFrOwogCSAgICB9CkBAIC0yNzIsMTEgKzMyNywxMyBAQAogICAgICAgICAgICAgICAgICAgICBzaXplLCBidWYsIHN0ciwgdC0+c29jaykpOwogICAgICAgICBmcmVlKHN0cik7CiAJd2hpbGUgKHJjIDwgMCkgewotI2lmIGRlZmluZWQobGludXgpICYmIGRlZmluZWQoSVBfUEtUSU5GTykKKyNpZiAoZGVmaW5lZChsaW51eCkgJiYgZGVmaW5lZChJUF9QS1RJTkZPKSkgXAorICAgIHx8IGRlZmluZWQoSVBfUkVDVkRTVEFERFIpICYmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfQ09OVFJPTCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19GTEFHUwogICAgICAgICAgICAgcmMgPSBuZXRzbm1wX3VkcF9zZW5kdG8odC0+c29jaywgYWRkcl9wYWlyID8gJihhZGRyX3BhaXItPmxvY2FsX2FkZHIpIDogTlVMTCwgdG8sIGJ1Ziwgc2l6ZSk7CiAjZWxzZQogICAgICAgICAgICAgcmMgPSBzZW5kdG8odC0+c29jaywgYnVmLCBzaXplLCAwLCB0bywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOwotI2VuZGlmIC8qIGxpbnV4ICYmIElQX1BLVElORk8gKi8KKyNlbmRpZiAvKiAobGludXggJiYgSVBfUEtUSU5GTykgfHwgSVBfUkVDVkRTVEFERFIgJiYgSEFWRV9TVFJVQ1RfTVNHSERSXy4uLiAqLwogCSAgICBpZiAocmMgPCAwICYmIGVycm5vICE9IEVJTlRSKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwIiwgInNlbmR0byBlcnJvciwgcmMgJWQgKGVycm5vICVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYywgZXJybm8pKTsKQEAgLTMxNSw3ICszNzIsNyBAQAogX3NvY2tfYnVmZmVyX21heGltaXplKGludCBzLCBpbnQgb3B0bmFtZSwgY29uc3QgY2hhciAqYnVmdHlwZSwgaW50IHNpemUpCiB7CiAgICAgaW50ICAgICAgICAgICAgY3VyYnVmID0gMDsKLSAgICBzaXplX3QgICAgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKKyAgICBzb2NrbGVuX3QgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKICAgICBpbnQgICAgICAgICAgICBsbywgbWlkLCBoaTsKIAogICAgIC8qCkBAIC00NzUsNyArNTMyLDcgQEAKICNlbHNlCiAgICAgY29uc3QgY2hhciAgICAgKmJ1ZnR5cGU7CiAgICAgaW50ICAgICAgICAgICAgY3VyYnVmID0gMDsKLSAgICBzaXplX3QgICAgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKKyAgICBzb2NrbGVuX3QgICAgICBjdXJidWZsZW4gPSBzaXplb2YoaW50KTsKIAogIyAgIGlmbmRlZiAgU09fU05EQlVGCiAgICAgaWYgKFNPX1NOREJVRiA9PSBvcHRuYW1lKSB7CkBAIC02NTYsNiArNzEzLDE3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHAiLCAic2V0IElQX1BLVElORk9cbiIpKTsKICAgICAgICAgfQorI2VsaWYgZGVmaW5lZChJUF9SRUNWRFNUQUREUikKKyAgICAgICAgeyAKKyAgICAgICAgICAgIGludCBzb2Nrb3B0ID0gMTsKKyAgICAgICAgICAgIGlmIChzZXRzb2Nrb3B0KHQtPnNvY2ssIElQUFJPVE9fSVAsIElQX1JFQ1ZEU1RBRERSLCAmc29ja29wdCwgc2l6ZW9mIHNvY2tvcHQpID09IC0xKSB7CisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwIiwgImNvdWxkbid0IHNldCBJUF9SRUNWRFNUQUREUjogJXNcbiIsCisgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKGVycm5vKSkpOworICAgICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHAiLCAic2V0IElQX1JFQ1ZEU1RBRERSXG4iKSk7CisgICAgICAgIH0KICNlbmRpZgogICAgICAgICByYyA9IGJpbmQodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLAogICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcikpOwpAQCAtNzgwLDE2ICs4NDgsNyBAQAogbmV0c25tcF9zb2NrYWRkcl9pbjIoc3RydWN0IHNvY2thZGRyX2luICphZGRyLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW5wZWVybmFtZSwgY29uc3QgY2hhciAqZGVmYXVsdF90YXJnZXQpCiB7Ci0jaWYgSEFWRV9HRVRBRERSSU5GTwotICAgIHN0cnVjdCBhZGRyaW5mbyAqYWRkcnMgPSBOVUxMOwotICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50OwotICAgIGludCAgICAgICAgICAgICBlcnI7Ci0jZWxpZiBIQVZFX0dFVElQTk9ERUJZTkFNRQotICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7Ci0gICAgaW50ICAgICAgICAgICAgIGVycjsKLSNlbGlmIEhBVkVfR0VUSE9TVEJZTkFNRQotICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7Ci0jZW5kaWYKKyAgICBpbnQgcmV0OwogCiAgICAgaWYgKGFkZHIgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gMDsKQEAgLTg2MiwxMiArOTIxLDEyIEBACiAgICAgICAgICAgICAgICAgaWYgKGhvc3QgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXJ2bmFtZSBub3QgbnVtZXJpYywgIgotCQkJCSJjaGVjayBpZiBpdCByZWFsbHkgaXMgYSBkZXN0aW5hdGlvbikiKSk7CisJCQkJImNoZWNrIGlmIGl0IHJlYWxseSBpcyBhIGRlc3RpbmF0aW9uKVxuIikpOwogICAgICAgICAgICAgICAgICAgICBob3N0ID0gcG9ydDsKICAgICAgICAgICAgICAgICAgICAgcG9ydCA9IE5VTEw7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2Vydm5hbWUgbm90IG51bWVyaWMiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXJ2bmFtZSBub3QgbnVtZXJpY1xuIikpOwogICAgICAgICAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgfQpAQCAtODg0LDc0ICs5NDMsMjUgQEAKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJjaGVjayBkZXN0aW5hdGlvbiAlc1xuIiwgaG9zdCkpOwogCi0jaWYgSEFWRV9HRVRBRERSSU5GTwotICAgICAgICAgICAgbWVtc2V0KCZoaW50LCAwLCBzaXplb2YgaGludCk7Ci0gICAgICAgICAgICBoaW50LmFpX2ZsYWdzID0gMDsKLSAgICAgICAgICAgIGhpbnQuYWlfZmFtaWx5ID0gUEZfSU5FVDsKLSAgICAgICAgICAgIGhpbnQuYWlfc29ja3R5cGUgPSBTT0NLX0RHUkFNOwotICAgICAgICAgICAgaGludC5haV9wcm90b2NvbCA9IDA7CiAKLSAgICAgICAgICAgIGVyciA9IGdldGFkZHJpbmZvKHBlZXJuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKLSAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgewotI2lmIEhBVkVfR0FJX1NUUkVSUk9SCi0gICAgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImdldGFkZHJpbmZvOiAlcyAlc1xuIiwgcGVlcm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ2FpX3N0cmVycm9yKGVycikpOwotI2Vsc2UKLSAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzIChlcnJvciAlZClcbiIsIHBlZXJuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGVycik7Ci0jZW5kaWYKLSAgICAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChhZGRycyAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAocmVzb2x2ZWQgb2theSlcbiIpKTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoJmFkZHItPnNpbl9hZGRyLAotICAgICAgICAgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgYWRkcnMtPmFpX2FkZHIpLT5zaW5fYWRkciwKLSAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBpbl9hZGRyKSk7Ci0gICAgICAgICAgICAgICAgZnJlZWFkZHJpbmZvKGFkZHJzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHJlc29sdmUgSVB2NCBob3N0bmFtZVxuIikpOwotICAgICAgICAgICAgfQotI2VsaWYgSEFWRV9HRVRIT1NUQllOQU1FCi0gICAgICAgICAgICBocCA9IGdldGhvc3RieW5hbWUoaG9zdCk7Ci0gICAgICAgICAgICBpZiAoaHAgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKGNvdWxkbid0IHJlc29sdmUpXG4iKSk7Ci0gICAgICAgICAgICAgICAgZnJlZShwZWVybmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGhwLT5oX2FkZHJ0eXBlICE9IEFGX0lORVQpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChub3QgQUZfSU5FVCEpXG4iKSk7Ci0gICAgICAgICAgICAgICAgZnJlZShwZWVybmFtZSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICBpZiAoc3RyY21wKHBlZXJuYW1lLCAiMjU1LjI1NS4yNTUuMjU1IikgPT0gMCApIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSBleHBsaWNpdCBicm9hZGNhc3QgYWRkcmVzcyBoYWNrCisgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW4iLCAiRXhwbGljaXQgVURQIGJyb2FkY2FzdFxuIikpOworICAgICAgICAgICAgICAgIGFkZHItPnNpbl9hZGRyLnNfYWRkciA9IElOQUREUl9OT05FOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXQgPQorICAgICAgICAgICAgICAgICAgICBuZXRzbm1wX2dldGhvc3RieW5hbWVfdjQocGVlcm5hbWUsICZhZGRyLT5zaW5fYWRkci5zX2FkZHIpOworICAgICAgICAgICAgICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNvdWxkbid0IHJlc29sdmUgaG9zdG5hbWVcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgZnJlZShwZWVybmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChyZXNvbHZlZCBva2F5KVxuIikpOwotICAgICAgICAgICAgICAgIG1lbWNweSgmYWRkci0+c2luX2FkZHIsIGhwLT5oX2FkZHIsIGhwLT5oX2xlbmd0aCk7CiAgICAgICAgICAgICB9Ci0jZWxpZiBIQVZFX0dFVElQTk9ERUJZTkFNRQotICAgICAgICAgICAgaHAgPSBnZXRpcG5vZGVieW5hbWUocGVlcm5hbWUsIEFGX0lORVQsIDAsICZlcnIpOwotICAgICAgICAgICAgaWYgKGhwID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChjb3VsZG4ndCByZXNvbHZlID0gJWQpXG4iLCBlcnIpKTsKLSAgICAgICAgICAgICAgICBmcmVlKHBlZXJuYW1lKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAocmVzb2x2ZWQgb2theSlcbiIpKTsKLSAgICAgICAgICAgIG1lbWNweSgmKGFkZHItPnNpbl9hZGRyKSwgaHAtPmhfYWRkciwgaHAtPmhfbGVuZ3RoKTsKLSNlbHNlIC8qIEhBVkVfR0VUSVBOT0RFQllOQU1FICovCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVGhlcmUgaXMgbm8gbmFtZSByZXNvbHZpbmcgZnVuY3Rpb24gYXZhaWxhYmxlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAibm8gZ2V0YWRkcmluZm8oKS9nZXRpcG5vZGVieW5hbWUoKS9nZXRob3N0YnluYW1lKClcbiIpKTsKLSAgICAgICAgICAgIGZyZWUocGVlcm5hbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0jZW5kaWYgLyogSEFWRV9HRVRIT1NUQllOQU1FICovCiAgICAgICAgIH0KIAlmcmVlKHBlZXJuYW1lKTsKICAgICB9CkBAIC0xMDg0LDI1ICsxMDk0LDExIEBACiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogTm9wZSwgd2Fzbid0IGEgZG90dGVkIHF1YWQuICBNdXN0IGJlIGEgaG9zdG5hbWUuICAKICAgICAgICAgICAgICAqLwotI2lmZGVmICBIQVZFX0dFVEhPU1RCWU5BTUUKLSAgICAgICAgICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IGdldGhvc3RieW5hbWUoc291cmNlKTsKLSAgICAgICAgICAgIGlmIChocCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgY29uZmlnX3BlcnJvcigiYmFkIHNvdXJjZSBhZGRyZXNzIik7CisgICAgICAgICAgICBpbnQgcmV0ID0gbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0KHNvdXJjZSwgJm5ldHdvcmspOworICAgICAgICAgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgICAgICAgICBjb25maWdfcGVycm9yKCJjYW5ub3QgcmVzb2x2ZSBzb3VyY2UgaG9zdG5hbWUiKTsKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChocC0+aF9hZGRydHlwZSAhPSBBRl9JTkVUKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wZXJyb3IoIm5vIElQIGFkZHJlc3MgZm9yIHNvdXJjZSBob3N0bmFtZSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5ldHdvcmsgPSAqKChpbl9hZGRyX3QgKikgaHAtPmhfYWRkcik7CiAgICAgICAgICAgICB9Ci0jZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qSEFWRV9HRVRIT1NUQllOQU1FICovCi0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogT2ggZGVhci4gIAotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBjb25maWdfcGVycm9yKCJjYW5ub3QgcmVzb2x2ZSBzb3VyY2UgaG9zdG5hbWUiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSNlbmRpZiAgICAgICAgICAgICAgICAgICAgICAgICAgLypIQVZFX0dFVEhPU1RCWU5BTUUgKi8KICAgICAgICAgfQogICAgIH0KIApAQCAtMTI0Niw2ICsxMjQyLDggQEAKICAgICAgKiBuYW1lLiAgCiAgICAgICovCiAKKyAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3VkcF9nZXRTZWNOYW1lIiwgIm9wYXF1ZSA9ICVwIChsZW4gPSAlZCksIHNpemVvZiA9ICVkLCBmYW1pbHkgPSAlZCAoJWQpXG4iLAorICAgb3BhcXVlLCBvbGVuZ3RoLCAoaW50KXNpemVvZihuZXRzbm1wX3VkcF9hZGRyX3BhaXIpLCBmcm9tLT5zaW5fZmFtaWx5LCBBRl9JTkVUKSk7CiAgICAgaWYgKG9wYXF1ZSA9PSBOVUxMIHx8IG9sZW5ndGggIT0gc2l6ZW9mKG5ldHNubXBfdWRwX2FkZHJfcGFpcikgfHwKICAgICAgICAgZnJvbS0+c2luX2ZhbWlseSAhPSBBRl9JTkVUKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3VkcF9nZXRTZWNOYW1lIiwKQEAgLTEyNjYsNyArMTI2NCw3IEBACiAgICAgfQogCiAgICAgZm9yIChjID0gY29tMlNlY0xpc3Q7IGMgIT0gTlVMTDsgYyA9IGMtPm5leHQpIHsKLSAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwX2dldFNlY05hbWUiLCJjb21wYXJlIDxcIiVzXCIsIDB4JTA4eC8weCUwOHg+IiwKKyAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfdWRwX2dldFNlY05hbWUiLCJjb21wYXJlIDxcIiVzXCIsIDB4JTA4bHgvMHglMDhseD4iLAogCQkgICAgYy0+Y29tbXVuaXR5LCBjLT5uZXR3b3JrLCBjLT5tYXNrKSk7CiAgICAgICAgIGlmICgoY29tbXVuaXR5X2xlbiA9PSBzdHJsZW4oYy0+Y29tbXVuaXR5KSkgJiYKIAkgICAgKG1lbWNtcChjb21tdW5pdHksIGMtPmNvbW11bml0eSwgY29tbXVuaXR5X2xlbikgPT0gMCkgJiYKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25tcFVEUElQdjZEb21haW4uYyBiL3NubXBsaWIvc25tcFVEUElQdjZEb21haW4uYwppbmRleCBmMGQ3NjM1Li5hOTI3N2QxIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBVRFBJUHY2RG9tYWluLmMKKysrIGIvc25tcGxpYi9zbm1wVURQSVB2NkRvbWFpbi5jCkBAIC0yOCwxMSArMjgsMTQgQEAKICAgICAgKi8KICNpbmNsdWRlIDx3aW5zb2NrMi5oPgogI2luY2x1ZGUgPHdzMnRjcGlwLmg+Ci0jdW5kZWYgIEhBVkVfSUZfTkFNRVRPSU5ERVgKIAorI2lmbmRlZiBIQVZFX0lORVRfUFRPTgogZXh0ZXJuIGludCAgICAgICAgIGluZXRfcHRvbihpbnQsIGNvbnN0IGNoYXIqLCB2b2lkKik7CisjZW5kaWYKKyNpZm5kZWYgSEFWRV9JTkVUX05UT1AKIGV4dGVybiBjb25zdCBjaGFyICppbmV0X250b3AoaW50LCBjb25zdCB2b2lkKiwgY2hhciosIHNpemVfdCk7Ci1jb25zdCBzdHJ1Y3QgaW42X2FkZHIgaW42YWRkcl9hbnkgPSBJTjZBRERSX0FOWV9JTklUOworI2VuZGlmCitzdGF0aWMgY29uc3Qgc3RydWN0IGluNl9hZGRyIGluNmFkZHJfYW55ID0gSU42QUREUl9BTllfSU5JVDsKICNlbmRpZgogCiAjaWYgSEFWRV9ORVRJTkVUX0lOX0gKQEAgLTUyLDkgKzU1LDkgQEAKICNpbmNsdWRlIDxkbWFsbG9jLmg+CiAjZW5kaWYKIAotI2lmIFNUUlVDVF9TT0NLQUREUl9TVE9SQUdFX0hBU19TU19GQU1JTFkKKyNpZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TVE9SQUdFX1NTX0ZBTUlMWQogI2RlZmluZSBTU19GQU1JTFkgc3NfZmFtaWx5Ci0jZWxpZiBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfX19TU19GQU1JTFkKKyNlbGlmIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfX19TU19GQU1JTFkKICNkZWZpbmUgU1NfRkFNSUxZIF9fc3NfZmFtaWx5CiAjZW5kaWYKIApAQCAtMzg0LDEzICszODcsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIGZvciAoY3AgPSBwZWVybmFtZTsgKmNwICYmIGlzZGlnaXQoKHVuc2lnbmVkIGNoYXIpICpjcCk7IGNwKyspOwotICAgICAgICBpZiAoISpjcCAmJiBhdG9pKHBlZXJuYW1lKSAhPSAwKSB7CisgICAgICAgIHBvcnRubyA9IGF0b2kocGVlcm5hbWUpOworICAgICAgICBpZiAoISpjcCAmJiAgcG9ydG5vICE9IDApIHsKICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgKiBPa2F5LCBpdCBsb29rcyBsaWtlIEpVU1QgYSBwb3J0IG51bWJlci4gIAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAidG90YWxseSBudW1lcmljOiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGF0b2kocGVlcm5hbWUpKSk7Ci0gICAgICAgICAgICBhZGRyLT5zaW42X3BvcnQgPSBodG9ucyhhdG9pKHBlZXJuYW1lKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3J0bm8pKTsKKyAgICAgICAgICAgIGFkZHItPnNpbjZfcG9ydCA9IGh0b25zKHBvcnRubyk7CiAgICAgICAgICAgICBnb3RvIHJlc29sdmVkOwogICAgICAgICB9CiAKQEAgLTQyMSwxMyArNDI1LDIwIEBACiAjZW5kaWYKIAkJfQogICAgICAgICAgICAgICAgIGlmICgqKGNwICsgMSkgPT0gJzonKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChhdG9pKGNwICsgMikgIT0gMCAmJgorICAgICAgICAgICAgICAgICAgICBwb3J0bm8gPSBhdG9pKGNwKzIpOworICAgICAgICAgICAgICAgICAgICBpZiAocG9ydG5vICE9IDAgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIGluZXRfcHRvbihBRl9JTkVUNiwgcGVlcm5hbWUgKyAxLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopICYoYWRkci0+c2luNl9hZGRyKSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3NvY2thZGRyX2luNiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSVB2NiBhZGRyZXNzIHdpdGggcG9ydCBzdWZmaXggOiVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShjcCArIDIpKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhZGRyLT5zaW42X3BvcnQgPSBodG9ucyhhdG9pKGNwICsgMikpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydG5vKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocG9ydG5vID4gMCAmJiBwb3J0bm8gPCAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLT5zaW42X3BvcnQgPSBodG9ucyhwb3J0bm8pOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAiaW52YWxpZCBwb3J0IG51bWJlcjogJWQiLCBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKwogI2lmIGRlZmluZWQoSEFWRV9JRl9OQU1FVE9JTkRFWCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9TT0NLQUREUl9JTjZfU0lONl9TQ09QRV9JRCkKICAgICAgICAgICAgICAgICAgICAgICAgIGFkZHItPnNpbjZfc2NvcGVfaWQgPSBpZl9pbmRleDsKICNlbmRpZgpAQCAtNDcxLDEzICs0ODIsMjAgQEAKIAkgICAgICAgIGlmX2luZGV4ID0gaWZfbmFtZXRvaW5kZXgoc2NvcGVfaWQgKyAxKTsKICNlbmRpZgogCSAgICB9Ci0gICAgICAgICAgICBpZiAoYXRvaShjcCArIDEpICE9IDAgJiYKKyAgICAgICAgICAgIHBvcnRubyA9IGF0b2koY3AgKyAxKTsKKyAgICAgICAgICAgIGlmIChwb3J0bm8gIT0gMCAmJgogICAgICAgICAgICAgICAgIGluZXRfcHRvbihBRl9JTkVUNiwgcGVlcm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopICYoYWRkci0+c2luNl9hZGRyKSkpIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJUHY2IGFkZHJlc3Mgd2l0aCBwb3J0IHN1ZmZpeCA6JWRcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShjcCArIDEpKSk7Ci0gICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMoYXRvaShjcCArIDEpKTsKKyAgICAgICAgICAgICAgICBpZiAocG9ydG5vID4gMCAmJiBwb3J0bm8gPCAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMocG9ydG5vKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAiaW52YWxpZCBwb3J0IG51bWJlcjogJWQiLCBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCiAjaWYgZGVmaW5lZChIQVZFX0lGX05BTUVUT0lOREVYKSAmJiBkZWZpbmVkKEhBVkVfU1RSVUNUX1NPQ0tBRERSX0lONl9TSU42X1NDT1BFX0lEKQogICAgICAgICAgICAgICAgIGFkZHItPnNpbjZfc2NvcGVfaWQgPSBpZl9pbmRleDsKICNlbmRpZgpAQCAtNTA1LDExICs1MjMsMTggQEAKICAgICAgICAgY3AgPSBzdHJyY2hyKHBlZXJuYW1lLCAnOicpOwogICAgICAgICBpZiAoY3AgIT0gTlVMTCkgewogICAgICAgICAgICAgKmNwID0gJ1wwJzsKLSAgICAgICAgICAgIGlmIChhdG9pKGNwICsgMSkgIT0gMCkgeworICAgICAgICAgICAgcG9ydG5vID0gYXRvaShjcCArIDEpOworICAgICAgICAgICAgaWYgKHBvcnRubyAhPSAwKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoIm5ldHNubXBfc29ja2FkZHJfaW42IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUoPykgd2l0aCBwb3J0IHN1ZmZpeCA6JWRcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXRvaShjcCArIDEpKSk7Ci0gICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMoYXRvaShjcCArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICBpZiAocG9ydG5vID4gMCAmJiBwb3J0bm8gPCAweGZmZmYpIHsKKyAgICAgICAgICAgICAgICAgICAgYWRkci0+c2luNl9wb3J0ID0gaHRvbnMocG9ydG5vKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF9zb2NrYWRkcl9pbjYiLCAiaW52YWxpZCBwb3J0IG51bWJlcjogJWQiLCBwb3J0bm8pKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8qCiAgICAgICAgICAgICAgICAgICogTm8gaWRlYSwgbG9va3MgYm9ndXMgYnV0IHdlIG1pZ2h0IGFzIHdlbGwgcGFzcyB0aGUgZnVsbCB0aGluZyB0bwpAQCAtMTI5NSwxNyArMTMyMCwxOSBAQAogICAgICAgICAgICAgICAgIHp0Y29tbXVuaXR5ID8genRjb21tdW5pdHkgOiAiPG1hbGxvYyBlcnJvcj4iLCBzdHI2KSk7CiAKICAgICBmb3IgKGMgPSBjb20yU2VjNkxpc3Q7IGMgIT0gTlVMTDsgYyA9IGMtPm5leHQpIHsKKwljaGFyIHN0cl9uZXRbSU5FVDZfQUREUlNUUkxFTl0sIHN0cl9tYXNrW0lORVQ2X0FERFJTVFJMRU5dOwogICAgICAgICBERUJVR01TR1RMKCgibmV0c25tcF91ZHA2X2dldFNlY05hbWUiLAotICAgICAgICAgICAgICAgICAgICAiY29tcGFyZSA8XCIlc1wiLCAweCUwMzJ4LzB4JTAzMng+IiwgYy0+Y29tbXVuaXR5LAotICAgICAgICAgICAgICAgICAgICBjLT5uZXR3b3JrLCBjLT5tYXNrKSk7CisgICAgICAgICAgICAgICAgICAgICJjb21wYXJlIDxcIiVzXCIsICVzLyVzPiIsIGMtPmNvbW11bml0eSwKKyAgICAgICAgICAgICAgICAgICAgaW5ldF9udG9wKEFGX0lORVQ2LCAmYy0+bmV0d29yay5zaW42X2FkZHIsIHN0cl9uZXQsIHNpemVvZiBzdHJfbmV0KSwKKwkJICAgIGluZXRfbnRvcChBRl9JTkVUNiwgJmMtPm1hc2suc2luNl9hZGRyLCBzdHJfbWFzaywgc2l6ZW9mIHN0cl9tYXNrKSkpOwogCiAgICAgICAgIGlmICgoY29tbXVuaXR5X2xlbiA9PSAoaW50KXN0cmxlbihjLT5jb21tdW5pdHkpKSAmJgogICAgICAgICAgICAgKG1lbWNtcChjb21tdW5pdHksIGMtPmNvbW11bml0eSwgY29tbXVuaXR5X2xlbikgPT0gMCkgJiYKICAgICAgICAgICAgIChtYXNrZWRfYWRkcmVzc19hcmVfZXF1YWwoZnJvbS0+c2luNl9mYW1pbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSBmcm9tLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKikgJmMtPm1hc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSAmYy0+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmspID09IDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHJfc3RvcmFnZSAqKSAmYy0+bmV0d29yaykKKwkJCQkJPT0gMCkpIHsKICAgICAgICAgICAgIERFQlVHTVNHKCgibmV0c25tcF91ZHA2X2dldFNlY05hbWUiLCAiLi4uIFNVQ0NFU1NcbiIpKTsKICAgICAgICAgICAgIGlmIChzZWNOYW1lICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICAqc2VjTmFtZSA9IGMtPnNlY05hbWU7CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBVbml4RG9tYWluLmMgYi9zbm1wbGliL3NubXBVbml4RG9tYWluLmMKaW5kZXggMDM2ZTk1YS4uNDI4NjQ3YyAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wVW5peERvbWFpbi5jCisrKyBiL3NubXBsaWIvc25tcFVuaXhEb21haW4uYwpAQCAtMzQsNyArMzQsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF90cmFuc3BvcnQuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVRFBEb21haW4uaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBVbml4RG9tYWluLmg+Ci0jaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zeXN0ZW0uaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPiAvKiBta2RpcmhpZXIgKi8KIAogCiAjaWZuZGVmIE5FVFNOTVBfU1RSRUFNX1FVRVVFX0xFTgpAQCAtMjU3LDcgKzI1NywyNSBAQAogICAgIH0KIH0KIAorc3RhdGljIGludCBjcmVhdGVfcGF0aCA9IDA7CitzdGF0aWMgbW9kZV90IGNyZWF0ZV9tb2RlOwogCisvKiogSWYgdHJ5aW5nIHRvIGNyZWF0ZSB1bml4IHNvY2tldHMgaW4gbm9uZXhpc3RpbmcgZGlyZWN0b3JpZXMgdGhlbgorICogIHRyeSB0byBjcmVhdGUgdGhlIGRpcmVjdG9yeSB3aXRoIG1hc2sgbW9kZS4KKyAqLwordm9pZCBuZXRzbm1wX3VuaXhfY3JlYXRlX3BhdGhfd2l0aF9tb2RlKGludCBtb2RlKQoreworICAgIGNyZWF0ZV9wYXRoID0gMTsKKyAgICBjcmVhdGVfbW9kZSA9IG1vZGU7Cit9CisKKy8qKiBJZiB0cnlpbmcgdG8gY3JlYXRlIHVuaXggc29ja2V0cyBpbiBub25leGlzdGluZyBkaXJlY3RvcmllcyB0aGVuCisgKiAgZmFpbC4KKyAqLwordm9pZCBuZXRzbm1wX3VuaXhfZG9udF9jcmVhdGVfcGF0aCh2b2lkKQoreworICAgIGNyZWF0ZV9wYXRoID0gMDsKK30KIAogLyoKICAqIE9wZW4gYSBVbml4LWRvbWFpbiB0cmFuc3BvcnQgZm9yIFNOTVAuICBMb2NhbCBpcyBUUlVFIGlmIGFkZHIgaXMgdGhlIGxvY2FsCkBAIC0zMTMsNyArMzMxLDcgQEAKICAgICB0LT5mbGFncyA9IE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfU1RSRUFNOwogCiAgICAgaWYgKGxvY2FsKSB7Ci0gICAgICB0LT5sb2NhbCA9ICh1X2NoYXIgKiltYWxsb2Moc3RybGVuKGFkZHItPnN1bl9wYXRoKSk7CisgICAgICAgIHQtPmxvY2FsID0gKHVfY2hhciAqKW1hbGxvYyhzdHJsZW4oYWRkci0+c3VuX3BhdGgpKTsKICAgICAgICAgaWYgKHQtPmxvY2FsID09IE5VTEwpIHsKICAgICAgICAgICAgIG5ldHNubXBfdHJhbnNwb3J0X2ZyZWUodCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMzMCw2ICszNDgsMTYgQEAKIAogICAgICAgICB1bmxpbmsoYWRkci0+c3VuX3BhdGgpOwogICAgICAgICByYyA9IGJpbmQodC0+c29jaywgKHN0cnVjdCBzb2NrYWRkciAqKSBhZGRyLCBTVU5fTEVOKGFkZHIpKTsKKworICAgICAgICBpZiAocmMgIT0gMCAmJiBlcnJubyA9PSBFTk9FTlQgJiYgY3JlYXRlX3BhdGgpIHsKKyAgICAgICAgICAgIHJjID0gbWtkaXJoaWVyKGFkZHItPnN1bl9wYXRoLCBjcmVhdGVfbW9kZSwgMSk7CisgICAgICAgICAgICBpZiAocmMgIT0gMCkgeworICAgICAgICAgICAgICAgIG5ldHNubXBfdW5peF9jbG9zZSh0KTsKKyAgICAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmMgPSBiaW5kKHQtPnNvY2ssIChzdHJ1Y3Qgc29ja2FkZHIgKikgYWRkciwgU1VOX0xFTihhZGRyKSk7CisgICAgICAgIH0KICAgICAgICAgaWYgKHJjICE9IDApIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJuZXRzbm1wX3VuaXhfdHJhbnNwb3J0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZG4ndCBiaW5kIFwiJXNcIiwgZXJybm8gJWQgKCVzKVxuIiwKQEAgLTM2Myw3ICszOTEsNyBAQAogICAgICAgICB9CiAKICAgICB9IGVsc2UgewotICAgICAgdC0+cmVtb3RlID0gKHVfY2hhciAqKW1hbGxvYyhzdHJsZW4oYWRkci0+c3VuX3BhdGgpKTsKKyAgICAgICAgdC0+cmVtb3RlID0gKHVfY2hhciAqKW1hbGxvYyhzdHJsZW4oYWRkci0+c3VuX3BhdGgpKTsKICAgICAgICAgaWYgKHQtPnJlbW90ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBuZXRzbm1wX3RyYW5zcG9ydF9mcmVlKHQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zOTAsOCArNDE4LDggQEAKICAgICAgICAgc3VwLT5zZXJ2ZXIuc3VuX2ZhbWlseSA9IEFGX1VOSVg7CiAgICAgICAgIHN0cmNweShzdXAtPnNlcnZlci5zdW5fcGF0aCwgYWRkci0+c3VuX3BhdGgpOwogICAgICAgICBzdXAtPmxvY2FsID0gMDsKLSAgICAgICBuZXRzbm1wX3NvY2tfYnVmZmVyX3NldCh0LT5zb2NrLCBTT19TTkRCVUYsIGxvY2FsLCAwKTsKLSAgICAgICBuZXRzbm1wX3NvY2tfYnVmZmVyX3NldCh0LT5zb2NrLCBTT19SQ1ZCVUYsIGxvY2FsLCAwKTsKKyAgICAgICAgbmV0c25tcF9zb2NrX2J1ZmZlcl9zZXQodC0+c29jaywgU09fU05EQlVGLCBsb2NhbCwgMCk7CisgICAgICAgIG5ldHNubXBfc29ja19idWZmZXJfc2V0KHQtPnNvY2ssIFNPX1JDVkJVRiwgbG9jYWwsIDApOwogICAgIH0KIAogICAgIC8qCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfYWxhcm0uYyBiL3NubXBsaWIvc25tcF9hbGFybS5jCmluZGV4IGM4OGZhNzUuLjVkMzdkNmYgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9hbGFybS5jCisrKyBiL3NubXBsaWIvc25tcF9hbGFybS5jCkBAIC0xNTEsNyArMTUxLDcgQEAKICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYWxhcm0iLCAidW5yZWdpc3RlcmVkIGFsYXJtICVkXG4iLCAKIAkJICAgIHNhX3B0ci0+Y2xpZW50cmVnKSk7CiAgICAgICAgIC8qCi0gICAgICAgICAqIE5vdGU6ICBkbyBub3QgZnJlZSB0aGUgY2xpZW50YXJnLCBpdHMgdGhlIGNsaWVudHMgcmVzcG9uc2liaWxpdHkgCisgICAgICAgICAqIE5vdGU6IGRvIG5vdCBmcmVlIHRoZSBjbGllbnRhcmcsIGl0J3MgdGhlIGNsaWVudCdzIHJlc3BvbnNpYmlsaXR5IAogICAgICAgICAgKi8KICAgICAgICAgZnJlZShzYV9wdHIpOwogICAgIH0gZWxzZSB7CkBAIC0xOTMsNyArMTkzLDggQEAKICAgICAgICAgLyogY2hlY2sgZm9yIHRpbWUgZGVsdGEgc2tldyAqLwogICAgICAgICBpZiAoKGEtPnRfbmV4dC50dl9zZWMgLSB0X25vdy50dl9zZWMpID4gYS0+dC50dl9zZWMpCiAgICAgICAgIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0aW1lX3NrZXciLCAiVGltZSBkZWx0YSB0b28gYmlnICglZCBzZWNvbmRzKSwgc2hvdWxkIGJlICVkIHNlY29uZHMgLSBmaXhpbmdcbiIsIChhLT50X25leHQudHZfc2VjIC0gdF9ub3cudHZfc2VjKSwgYS0+dC50dl9zZWMpKTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ0aW1lX3NrZXciLCAiVGltZSBkZWx0YSB0b28gYmlnICglbGQgc2Vjb25kcyksIHNob3VsZCBiZSAlbGQgc2Vjb25kcyAtIGZpeGluZ1xuIiwKKwkJKGxvbmcpKGEtPnRfbmV4dC50dl9zZWMgLSB0X25vdy50dl9zZWMpLCAobG9uZylhLT50LnR2X3NlYykpOwogICAgICAgICAgICAgYS0+dF9uZXh0LnR2X3NlYyA9IHRfbm93LnR2X3NlYyArIGEtPnQudHZfc2VjOwogICAgICAgICAgICAgYS0+dF9uZXh0LnR2X3VzZWMgPSB0X25vdy50dl91c2VjICsgYS0+dC50dl91c2VjOwogICAgICAgICB9CkBAIC0yODQsNyArMjg1LDcgQEAKICAgICBzYV9wdHIgPSBzYV9maW5kX25leHQoKTsKIAogICAgIGlmIChzYV9wdHIpIHsKLSAgICAgICAgZ2V0dGltZW9mZGF5KCZ0X25vdywgMCk7CisgICAgICAgIGdldHRpbWVvZmRheSgmdF9ub3csIE5VTEwpOwogCiAgICAgICAgIGlmICh0aW1lcmNtcCgmdF9ub3csICZzYV9wdHItPnRfbmV4dCwgPikpIHsKICAgICAgICAgICAgIC8qCkBAIC0zMzYsMTQgKzMzNywxNCBAQAogCiAgICAgICAgIHNpZ25hbChTSUdBTFJNLCBhbGFybV9oYW5kbGVyKTsKICAgICAgICAgc2V0aXRpbWVyKElUSU1FUl9SRUFMLCAmaXQsIE5VTEwpOwotICAgICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsICJzY2hlZHVsZSBhbGFybSAlZCBpbiAlZC4lMDNkIHNlY29uZHNcbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwgInNjaGVkdWxlIGFsYXJtICVkIGluICVsZC4lMDNsZCBzZWNvbmRzXG4iLAogICAgICAgICAgICAgICAgICAgICBuZXh0YWxhcm0sIGRlbHRhLnR2X3NlYywgKGRlbHRhLnR2X3VzZWMgLyAxMDAwKSkpOwogIyBlbHNlICAvKiBIQVZFX1NFVElUSU1FUiAqLwogIyAgaWZkZWYgU0lHQUxSTQogICAgICAgICBzaWduYWwoU0lHQUxSTSwgYWxhcm1faGFuZGxlcik7CiAgICAgICAgIGFsYXJtKGRlbHRhLnR2X3NlYyk7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwKLSAgICAgICAgICAgICAgICAgICAgInNjaGVkdWxlIGFsYXJtICVkIGluIHJvdWdobHkgJWQgc2Vjb25kc1xuIiwgbmV4dGFsYXJtLAorICAgICAgICAgICAgICAgICAgICAic2NoZWR1bGUgYWxhcm0gJWQgaW4gcm91Z2hseSAlbGQgc2Vjb25kc1xuIiwgbmV4dGFsYXJtLAogICAgICAgICAgICAgICAgICAgICBkZWx0YS50dl9zZWMpKTsKICMgIGVuZGlmICAvKiBTSUdBTFJNICovCiAjIGVuZGlmICAvKiBIQVZFX1NFVElUSU1FUiAqLwpAQCAtNDE3LDcgKzQxOCw3IEBACiAgICAgc2FfdXBkYXRlX2VudHJ5KCpzYV9wcHRyKTsKIAogICAgIERFQlVHTVNHVEwoKCJzbm1wX2FsYXJtIiwKLQkJInJlZ2lzdGVyZWQgYWxhcm0gJWQsIHQgPSAlZC4lMDNkLCBmbGFncz0weCUwMnhcbiIsCisJCSJyZWdpc3RlcmVkIGFsYXJtICVkLCB0ID0gJWxkLiUwM2xkLCBmbGFncz0weCUwMnhcbiIsCiAgICAgICAgICAgICAgICAgKCpzYV9wcHRyKS0+Y2xpZW50cmVnLCAoKnNhX3BwdHIpLT50LnR2X3NlYywKICAgICAgICAgICAgICAgICAoKCpzYV9wcHRyKS0+dC50dl91c2VjIC8gMTAwMCksICgqc2FfcHB0ciktPmZsYWdzKSk7CiAKQEAgLTQ4Nyw3ICs0ODgsNyBAQAogICAgIHNhX3VwZGF0ZV9lbnRyeSgqcyk7CiAKICAgICBERUJVR01TR1RMKCgic25tcF9hbGFybSIsCi0gICAgICAgICAgICAgICAgInJlZ2lzdGVyZWQgYWxhcm0gJWQsIHQgPSAlZC4lMDNkLCBmbGFncz0weCUwMnhcbiIsCisgICAgICAgICAgICAgICAgInJlZ2lzdGVyZWQgYWxhcm0gJWQsIHQgPSAlbGQuJTAzbGQsIGZsYWdzPTB4JTAyeFxuIiwKICAgICAgICAgICAgICAgICAoKnMpLT5jbGllbnRyZWcsICgqcyktPnQudHZfc2VjLCAoKCpzKS0+dC50dl91c2VjIC8gMTAwMCksCiAgICAgICAgICAgICAgICAgKCpzKS0+ZmxhZ3MpKTsKIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2FwaS5jIGIvc25tcGxpYi9zbm1wX2FwaS5jCmluZGV4IGVlMzJlYmEuLjRjOTM0YmEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9hcGkuYworKysgYi9zbm1wbGliL3NubXBfYXBpLmMKQEAgLTEyNyw2ICsxMjcsNyBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvY2FsbGJhY2suaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2NvbnRhaW5lci5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9zZWNtb2QuaD4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L2xhcmdlX2ZkX3NldC5oPgogI2lmZGVmIE5FVFNOTVBfU0VDTU9EX1VTTQogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHVzbS5oPgogI2VuZGlmCkBAIC03NzIsNiArNzczLDExIEBACiAJCSAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgTkVUU05NUF9EU19MSUJfRElTQUJMRV9QRVJTSVNURU5UX0xPQUQpOwogICAgIG5ldHNubXBfZHNfcmVnaXN0ZXJfY29uZmlnKEFTTl9CT09MRUFOLCAic25tcCIsICJub1BlcnNpc3RlbnRTYXZlIiwKIAkJICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9ESVNBQkxFX1BFUlNJU1RFTlRfU0FWRSk7CisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9Db250ZXh0RW5naW5lSUREaXNjb3ZlcnkiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9OT19ESVNDT1ZFUlkpOworCiAgICAgbmV0c25tcF9yZWdpc3Rlcl9zZXJ2aWNlX2hhbmRsZXJzKCk7CiB9CiAKQEAgLTEyNjIsNiArMTI2OCw5OSBAQAogfQogCiAvKioKKyAqIHByb2JlIGZvciBlbmdpbmVJRCB1c2luZyBSRkMgNTM0MyBwcm9iaW5nIG1lY2hhbmlzbXMKKyAqCisgKiBEZXNpZ25lZCB0byBiZSBhIGNhbGxiYWNrIGZvciB3aXRoaW4gYSBzZWN1cml0eSBtb2RlbCdzIHByb2JlX2VuZ2luZWlkIGhvb2suCisgKiBTaW5jZSBpdCdzIGxpa2VseSBtdWx0aXBsZSBzZWN1cml0eSBtb2RlbHMgd29uJ3QgaGF2ZSBlbmdpbmVJRHMgdG8KKyAqIHByb2JlIGZvciB0aGVuIHRoaXMgZnVuY3Rpb24gaXMgYSBjYWxsYmFjayBsaWtlbHkgdG8gYmUgdXNlZCBieQorICogbXVsdGlwbGUgZnV0dXJlIHNlY3VyaXR5IG1vZGVscy4gIEUuRy4gYm90aCBTU0ggYW5kIERUTFMuCisgKi8KK2ludAorc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzKHZvaWQgKnNscCwgbmV0c25tcF9zZXNzaW9uICpzZXNzaW9uKSB7CisgICAgbmV0c25tcF9wZHUgICAgKnBkdSA9IE5VTEwsICpyZXNwb25zZSA9IE5VTEw7CisgICAgc3RhdGljIG9pZCAgICAgIHNubXBFbmdpbmVJRG9pZFtdICAgPSB7IDEsMyw2LDEsNiwzLDEwLDIsMSwxLDB9OworICAgIHN0YXRpYyBzaXplX3QgICBzbm1wRW5naW5lSURvaWRfbGVuID0gMTE7CisKKyAgICBzdGF0aWMgY2hhciAgICAgcHJvYmVFbmdpbmVJRFtdID0geyAoY2hhcikweDgwLCAwLCAwLCAwLCA2IH07CisgICAgc3RhdGljIHNpemVfdCAgIHByb2JlRW5naW5lSURfbGVuID0gc2l6ZW9mKHByb2JlRW5naW5lSUQpOworICAgIAorICAgIGludCBzdGF0dXM7CisKKyAgICBwZHUgPSBzbm1wX3BkdV9jcmVhdGUoU05NUF9NU0dfR0VUKTsKKyAgICBpZiAoIXBkdSkKKyAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICBwZHUtPnZlcnNpb24gPSBTTk1QX1ZFUlNJT05fMzsKKyAgICAvKiBkb24ndCByZXF1aXJlIGEgc2VjdXJpdHlOYW1lICovCisgICAgaWYgKHNlc3Npb24tPnNlY3VyaXR5TmFtZSkgeworICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZSA9IHN0cmR1cChzZXNzaW9uLT5zZWN1cml0eU5hbWUpOworICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbiA9IHN0cmxlbihwZHUtPnNlY3VyaXR5TmFtZSk7CisgICAgfQorICAgIHBkdS0+c2VjdXJpdHlMZXZlbCA9IFNOTVBfU0VDX0xFVkVMX05PQVVUSDsKKyAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBzZXNzaW9uLT5zZWN1cml0eU1vZGVsOworICAgIHBkdS0+Y29udGV4dEVuZ2luZUlEID0gbmV0c25tcF9tZW1kdXAocHJvYmVFbmdpbmVJRCwgcHJvYmVFbmdpbmVJRF9sZW4pOworICAgIGlmICghcGR1LT5jb250ZXh0RW5naW5lSUQpIHsKKyAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImZhaWxlZCB0byBjbG9uZSBtZW1vcnkgZm9yIHJmYzUzNDMgcHJvYmVcbiIpOworICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdSk7CisgICAgICAgIHJldHVybiBTTk1QX0VSUl9HRU5FUlI7CisgICAgfQorICAgIHBkdS0+Y29udGV4dEVuZ2luZUlETGVuID0gcHJvYmVFbmdpbmVJRF9sZW47CisgICAgCisgICAgc25tcF9hZGRfbnVsbF92YXIocGR1LCBzbm1wRW5naW5lSURvaWQsIHNubXBFbmdpbmVJRG9pZF9sZW4pOworCisgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInByb2JpbmcgZm9yIGVuZ2luZUlEIHVzaW5nIHJmYzUzNDMgbWV0aG9kcy4uLlxuIikpOworICAgIHNlc3Npb24tPmZsYWdzIHw9IFNOTVBfRkxBR1NfRE9OVF9QUk9CRTsgLyogcHJldmVudCByZWN1cnNpb24gKi8KKyAgICBzdGF0dXMgPSBzbm1wX3Nlc3Nfc3luY2hfcmVzcG9uc2Uoc2xwLCBwZHUsICZyZXNwb25zZSk7CisKKyAgICBpZiAoKHJlc3BvbnNlID09IE5VTEwpIHx8IChzdGF0dXMgIT0gU1RBVF9TVUNDRVNTKSkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHJmYzUzNDMgY29udGV4dEVuZ2luZUlEIHByb2JpbmdcbiIpOworICAgICAgICByZXR1cm4gU05NUF9FUlJfR0VORVJSOworICAgIH0KKworICAgIC8qIGNoZWNrIHRoYXQgdGhlIHJlc3BvbnNlIG1ha2VzIHNlbnNlICovCisgICAgaWYgKE5VTEwgIT0gcmVzcG9uc2UtPnZhcmlhYmxlcyAmJgorICAgICAgICBOVUxMICE9IHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWUgJiYKKyAgICAgICAgc25tcF9vaWRfY29tcGFyZShyZXNwb25zZS0+dmFyaWFibGVzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPm5hbWVfbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBFbmdpbmVJRG9pZCwgc25tcEVuZ2luZUlEb2lkX2xlbikgPT0gMCAmJgorICAgICAgICBBU05fT0NURVRfU1RSID09IHJlc3BvbnNlLT52YXJpYWJsZXMtPnR5cGUgICYmCisgICAgICAgIE5VTEwgIT0gcmVzcG9uc2UtPnZhcmlhYmxlcy0+dmFsLnN0cmluZyAmJgorICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT52YWxfbGVuID4gMCkgeworICAgICAgICBzZXNzaW9uLT5jb250ZXh0RW5naW5lSUQgPQorICAgICAgICAgICAgbmV0c25tcF9tZW1kdXAocmVzcG9uc2UtPnZhcmlhYmxlcy0+dmFsLnN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT52YXJpYWJsZXMtPnZhbF9sZW4pOworICAgICAgICBpZiAoIXNlc3Npb24tPmNvbnRleHRFbmdpbmVJRCkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImZhaWxlZCByZmM1MzQzIGNvbnRleHRFbmdpbmVJRCBwcm9iaW5nOiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogdGVjaG5pY2FsbHkgdGhlcmUgbGlrZWx5IGlzbid0IGEgc2VjdXJpdHlFbmdpbmVJRCBidXQganVzdAorICAgICAgICAgICBpbiBjYXNlIGFueW9uZSBnb2VzIGxvb2tpbmcgd2UgbWlnaHQgYXMgd2VsbCBoYXZlIG9uZSAqLworICAgICAgICBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlEID0KKyAgICAgICAgICAgIG5ldHNubXBfbWVtZHVwKHJlc3BvbnNlLT52YXJpYWJsZXMtPnZhbC5zdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT52YWxfbGVuKTsKKyAgICAgICAgaWYgKCFzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlEKSB7CisgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHJmYzUzNDMgc2VjdXJpdHlFbmdpbmVJRCBwcm9iaW5nOiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9IHNlc3Npb24tPmNvbnRleHRFbmdpbmVJRExlbiA9CisgICAgICAgICAgICByZXNwb25zZS0+dmFyaWFibGVzLT52YWxfbGVuOworICAgICAgICAKKyAgICAgICAgaWYgKHNubXBfZ2V0X2RvX2RlYnVnZ2luZygpKSB7CisgICAgICAgICAgICBpbnQgaTsKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAiICBwcm9iZSBmb3VuZCBlbmdpbmVJRDogICIpKTsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBzZXNzaW9uLT5zZWN1cml0eUVuZ2luZUlETGVuOyBpKyspCisgICAgICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX3Nlc3Nfb3BlbiIsICIlMDJ4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRFtpXSkpOworICAgICAgICAgICAgREVCVUdNU0coKCJzbm1wX3Nlc3Nfb3BlbiIsICJcbiIpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworfQorCisKKy8qKgogICogcHJvYmUgZm9yIHBlZXIgZW5naW5lSUQKICAqCiAgKiBAcGFyYW0gc2xwICAgICAgICAgc2Vzc2lvbiBsaXN0IHBvaW50ZXIuCkBAIC0xMzAxLDcgKzE0MDAsMTYgQEAKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBpZiAoc2Vzc2lvbi0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMykgewotICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7CisgICAgICAgIHN0cnVjdCBzbm1wX3NlY21vZF9kZWYgKnNwdHIgPSBmaW5kX3NlY19tb2Qoc2Vzc2lvbi0+c2VjdXJpdHlNb2RlbCk7CisKKyAgICAgICAgaWYgKE5VTEwgIT0gc3B0ciAmJiBOVUxMICE9IHNwdHItPnByb2JlX2VuZ2luZWlkKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAicHJvYmluZyBmb3IgZW5naW5lSUQgdXNpbmcgc2VjdXJpdHkgbW9kZWwgY2FsbGJhY2suLi5cbiIpKTsKKyAgICAgICAgICAgIC8qIHNlY3VyaXR5IG1vZGVsIHNwZWNpZmljIG1lY2hhbmlzbSBvZiBkZXRlcm1pbmluZyBlbmdpbmVJRCAqLworICAgICAgICAgICAgc3RhdHVzID0gKCpzcHRyLT5wcm9iZV9lbmdpbmVpZCkgKHNscCwgc2Vzc2lvbik7CisgICAgICAgICAgICBpZiAoc3RhdHVzKQorICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHN1Y2Nlc3MhICovCisgICAgICAgIH0gZWxzZSBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlFbmdpbmVJRExlbiA9PSAwKSB7CiAgICAgICAgICAgICBpZiAoc25tcHYzX2J1aWxkX3Byb2JlX3BkdSgmcGR1KSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwgInVuYWJsZSB0byBjcmVhdGUgcHJvYmUgUERVXG4iKSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CkBAIC0xMzE4LDcgKzE0MjYsNyBAQAogICAgICAgICAgICAgY2FzZSBTVEFUX1NVQ0NFU1M6CiAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9JTlZBTElEX01TRzsgLyogWFg/PyAqLwogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3Nlc3Nfb3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiBleHBlY3RlZCBSZXBvcnQgYXMgcmVzcG9uc2UgdG8gcHJvYmU6ICVzICglZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVycm9yOiBleHBlY3RlZCBSZXBvcnQgYXMgcmVzcG9uc2UgdG8gcHJvYmU6ICVzICglbGQpXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBfZXJyc3RyaW5nKHJlc3BvbnNlLT5lcnJzdGF0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS0+ZXJyc3RhdCkpOwogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTM5Miw3MiArMTUwMCw3MCBAQAogc3RhdGljIHZvaWQgICAgKgogX3Nlc3Nfb3BlbihuZXRzbm1wX3Nlc3Npb24gKiBpbl9zZXNzaW9uKQogewotICAgIHN0cnVjdCBzZXNzaW9uX2xpc3QgKnNscDsKLSAgICBuZXRzbm1wX3Nlc3Npb24gKnNlc3Npb247Ci0gICAgY2hhciAgICAgICAgICAgICpjbGllbnRhZGRyX3NhdmUgPSBOVUxMOworICAgIG5ldHNubXBfdHJhbnNwb3J0ICp0cmFuc3BvcnQgPSBOVUxMOwogCiAgICAgaW5fc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gMDsKICAgICBpbl9zZXNzaW9uLT5zX2Vycm5vID0gMDsKIAogICAgIF9pbml0X3NubXAoKTsKIAotICAgIGlmICgoc2xwID0gc25tcF9zZXNzX2NvcHkoaW5fc2Vzc2lvbikpID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIChOVUxMKTsKLSAgICB9Ci0gICAgc2Vzc2lvbiA9IHNscC0+c2Vzc2lvbjsKLSAgICBzbHAtPnRyYW5zcG9ydCA9IE5VTEw7CisgICAgeworICAgICAgICBjaGFyICpjbGllbnRhZGRyX3NhdmUgPSBOVUxMOwogCi0gICAgaWYgKE5VTEwgIT0gc2Vzc2lvbi0+bG9jYWxuYW1lKSB7Ci0gICAgICAgIGNsaWVudGFkZHJfc2F2ZSA9IG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUik7Ci0gICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUiwgc2Vzc2lvbi0+bG9jYWxuYW1lKTsKKyAgICAgICAgaWYgKE5VTEwgIT0gaW5fc2Vzc2lvbi0+bG9jYWxuYW1lKSB7CisgICAgICAgICAgICBjbGllbnRhZGRyX3NhdmUgPQorICAgICAgICAgICAgICAgIG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0NMSUVOVF9BRERSKTsKKyAgICAgICAgICAgIG5ldHNubXBfZHNfc2V0X3N0cmluZyhORVRTTk1QX0RTX0xJQlJBUllfSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfQ0xJRU5UX0FERFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbl9zZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfU1RSRUFNX1NPQ0tFVCkgeworICAgICAgICAgICAgdHJhbnNwb3J0ID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInRjcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdHJhbnNwb3J0ID0KKyAgICAgICAgICAgICAgICBuZXRzbm1wX3Rkb21haW5fdHJhbnNwb3J0X2Z1bGwoInNubXAiLCBpbl9zZXNzaW9uLT5wZWVybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5fc2Vzc2lvbi0+bG9jYWxfcG9ydCwgInVkcCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKE5VTEwgIT0gY2xpZW50YWRkcl9zYXZlKQorICAgICAgICAgICAgbmV0c25tcF9kc19zZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9DTElFTlRfQUREUiwgY2xpZW50YWRkcl9zYXZlKTsKICAgICB9CiAKLSAgICBpZiAoc2Vzc2lvbi0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1NUUkVBTV9TT0NLRVQpIHsKLSAgICAgICAgc2xwLT50cmFuc3BvcnQgPQotCSAgbmV0c25tcF90ZG9tYWluX3RyYW5zcG9ydF9mdWxsKCJzbm1wIiwgc2Vzc2lvbi0+cGVlcm5hbWUsCi0JCQkJCSBzZXNzaW9uLT5sb2NhbF9wb3J0LCAidGNwIiwgTlVMTCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgc2xwLT50cmFuc3BvcnQgPQotCSAgbmV0c25tcF90ZG9tYWluX3RyYW5zcG9ydF9mdWxsKCJzbm1wIiwgc2Vzc2lvbi0+cGVlcm5hbWUsCi0JCQkJCSBzZXNzaW9uLT5sb2NhbF9wb3J0LCAidWRwIiwgTlVMTCk7CisjaWYgZGVmaW5lZChTT19CUk9BRENBU1QpICYmIGRlZmluZWQoU09MX1NPQ0tFVCkKKyAgICBpZiAoIHRyYW5zcG9ydCAhPSAwICYmIChpbl9zZXNzaW9uLT5mbGFncyAmIFNOTVBfRkxBR1NfVURQX0JST0FEQ0FTVCkgKSB7CisgICAgICAgIGludCAgIGIgPSAxOworICAgICAgICBpbnQgICByYzsKKworICAgICAgICByYyA9IHNldHNvY2tvcHQodHJhbnNwb3J0LT5zb2NrLCBTT0xfU09DS0VULCBTT19CUk9BRENBU1QsCisgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciAqKSZiLCBzaXplb2YoYikpOworCisgICAgICAgIGlmICggcmMgIT0gMCApIHsKKyAgICAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfQkFEX0FERFJFU1M7IC8qIGdvb2QgYXMgYW55PyAqLworICAgICAgICAgICAgaW5fc2Vzc2lvbi0+c19lcnJubyA9IGVycm5vOworCisgICAgICAgICAgICBERUJVR01TR1RMKCgiX3Nlc3Nfb3BlbiIsICJjb3VsZG4ndCBlbmFibGUgVURQX0JST0FEQ0FTVFxuIikpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CisjZW5kaWYKIAotICAgIGlmIChOVUxMICE9IHNlc3Npb24tPmxvY2FsbmFtZSkKLSAgICAgICAgbmV0c25tcF9kc19zZXRfc3RyaW5nKE5FVFNOTVBfRFNfTElCUkFSWV9JRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0NMSUVOVF9BRERSLCBjbGllbnRhZGRyX3NhdmUpOwotCi0gICAgaWYgKHNscC0+dHJhbnNwb3J0ID09IE5VTEwpIHsKKyAgICBpZiAodHJhbnNwb3J0ID09IE5VTEwpIHsKICAgICAgICAgREVCVUdNU0dUTCgoIl9zZXNzX29wZW4iLCAiY291bGRuJ3QgaW50ZXJwcmV0IHBlZXJuYW1lXG4iKSk7CiAgICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfQkFEX0FERFJFU1M7CiAgICAgICAgIGluX3Nlc3Npb24tPnNfZXJybm8gPSBlcnJubzsKLSAgICAgICAgc25tcF9zZXRfZGV0YWlsKHNlc3Npb24tPnBlZXJuYW1lKTsKLSAgICAgICAgc25tcF9zZXNzX2Nsb3NlKHNscCk7CisgICAgICAgIHNubXBfc2V0X2RldGFpbChpbl9zZXNzaW9uLT5wZWVybmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHNlc3Npb24tPnJjdk1zZ01heFNpemUgPSBzbHAtPnRyYW5zcG9ydC0+bXNnTWF4U2l6ZTsKLQotICAgIGlmICghc25tcHYzX2VuZ2luZUlEX3Byb2JlKHNscCwgaW5fc2Vzc2lvbikpIHsKLSAgICAgICAgc25tcF9zZXNzX2Nsb3NlKHNscCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoY3JlYXRlX3VzZXJfZnJvbV9zZXNzaW9uKHNscC0+c2Vzc2lvbikgIT0gU05NUEVSUl9TVUNDRVNTKSB7Ci0gICAgICAgIGluX3Nlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVU5LTk9XTl9VU0VSX05BTUU7ICAgICAgIC8qIFhYPz8gKi8KLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfYXBpIiwKLSAgICAgICAgICAgICAgICAgICAgIl9zZXNzX29wZW4oKTogZmFpbGVkKDIpIHRvIGNyZWF0ZSBhIG5ldyB1c2VyIGZyb20gc2Vzc2lvblxuIikpOwotICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uoc2xwKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIAotICAgIHNlc3Npb24tPmZsYWdzICY9IH5TTk1QX0ZMQUdTX0RPTlRfUFJPQkU7Ci0KLQotICAgIHJldHVybiAodm9pZCAqKSBzbHA7Ci19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGVuZCBzbm1wX3Nlc3Nfb3BlbigpICovCi0KLQorICAgIHJldHVybiBzbm1wX3Nlc3NfYWRkKGluX3Nlc3Npb24sIHRyYW5zcG9ydCwgTlVMTCwgTlVMTCk7Cit9CiAKIC8qCiAgKiBFWFRFTkRFRCBTRVNTSU9OIEFQSSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gCkBAIC0xNTg0LDcgKzE2OTAsNyBAQAogCiAgICAgaWYgKHNscC0+c2Vzc2lvbi0+dmVyc2lvbiA9PSBTTk1QX1ZFUlNJT05fMykgewogICAgICAgICBERUJVR01TR1RMKCgic25tcF9zZXNzX2FkZCIsCi0gICAgICAgICAgICAgICAgICAgICJhZGRpbmcgdjMgc2Vzc2lvbiAtLSBlbmdpbmVJRCBwcm9iZSBub3dcbiIpKTsKKyAgICAgICAgICAgICAgICAgICAgImFkZGluZyB2MyBzZXNzaW9uIC0tIG1heWJlIGVuZ2luZUlEIHByb2JlIG5vd1xuIikpOwogICAgICAgICBpZiAoIXNubXB2M19lbmdpbmVJRF9wcm9iZShzbHAsIGluX3Nlc3Npb24pKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgic25tcF9zZXNzX2FkZCIsICJlbmdpbmUgSUQgcHJvYmUgZmFpbGVkXG4iKSk7CiAgICAgICAgICAgICBzbm1wX3Nlc3NfY2xvc2Uoc2xwKTsKQEAgLTE5MDYsNyArMjAxMiw3IEBACiAgICAgfQogCiAgICAgaXNwID0gc2xwLT5pbnRlcm5hbDsKLSAgICBzbHAtPmludGVybmFsID0gMDsKKyAgICBzbHAtPmludGVybmFsID0gTlVMTDsKIAogICAgIGlmIChpc3ApIHsKICAgICAgICAgbmV0c25tcF9yZXF1ZXN0X2xpc3QgKnJwLCAqb3JwOwpAQCAtMTkzMyw3ICsyMDM5LDcgQEAKICAgICB9CiAKICAgICB0cmFuc3BvcnQgPSBzbHAtPnRyYW5zcG9ydDsKLSAgICBzbHAtPnRyYW5zcG9ydCA9IDA7CisgICAgc2xwLT50cmFuc3BvcnQgPSBOVUxMOwogCiAgICAgaWYgKHRyYW5zcG9ydCkgewogICAgICAgICB0cmFuc3BvcnQtPmZfY2xvc2UodHJhbnNwb3J0KTsKQEAgLTE5NDEsNyArMjA0Nyw3IEBACiAgICAgfQogCiAgICAgc2VzcCA9IHNscC0+c2Vzc2lvbjsKLSAgICBzbHAtPnNlc3Npb24gPSAwOworICAgIHNscC0+c2Vzc2lvbiA9IE5VTEw7CiAKICAgICAvKgogICAgICAqIFRoZSBmb2xsb3dpbmcgaXMgbmVjZXNzYXJ5IHRvIGF2b2lkIG1lbW9yeSBsZWFrYWdlIHdoZW4gY2xvc2luZyBBZ2VudFggCkBAIC0yMDk3LDEwICsyMjAzLDE2IEBACiAgICAgaWYgKHJwZHUtPmNvbnRleHROYW1lTGVuICE9IHBkdS0+Y29udGV4dE5hbWVMZW4gfHwKICAgICAgICAgbWVtY21wKHJwZHUtPmNvbnRleHROYW1lLCBwZHUtPmNvbnRleHROYW1lLCBwZHUtPmNvbnRleHROYW1lTGVuKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKHJwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4gIT0gcGR1LT5zZWN1cml0eUVuZ2luZUlETGVuIHx8CisKKyAgICAvKiB0dW5uZWxlZCB0cmFuc3BvcnRzIGRvbid0IGhhdmUgYSBzZWN1cml0eUVuZ2luZUlELi4uICB0aGF0J3MKKyAgICAgICBVU00gc3BlY2lmaWMgKGFuZCBtYXliZSBvdGhlciBmdXR1cmUgb25lcykgKi8KKyAgICBpZiAocGR1LT5zZWN1cml0eU1vZGVsID09IFNOTVBfU0VDX01PREVMX1VTTSAmJgorICAgICAgICAocnBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbiAhPSBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4gfHwKICAgICAgICAgbWVtY21wKHJwZHUtPnNlY3VyaXR5RW5naW5lSUQsIHBkdS0+c2VjdXJpdHlFbmdpbmVJRCwKLSAgICAgICAgICAgICAgIHBkdS0+c2VjdXJpdHlFbmdpbmVJRExlbikpCisgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5RW5naW5lSURMZW4pKSkKICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiB0aGUgc2VjdXJpdHlOYW1lIG11c3QgbWF0Y2ggdGhvdWdoIHJlZ2FyZGxlc3Mgb2Ygc2VjbW9kZWwgKi8KICAgICBpZiAocnBkdS0+c2VjdXJpdHlOYW1lTGVuICE9IHBkdS0+c2VjdXJpdHlOYW1lTGVuIHx8CiAgICAgICAgIG1lbWNtcChycGR1LT5zZWN1cml0eU5hbWUsIHBkdS0+c2VjdXJpdHlOYW1lLAogICAgICAgICAgICAgICAgcGR1LT5zZWN1cml0eU5hbWVMZW4pKQpAQCAtMjIwNiwyMCArMjMxOCwyNyBAQAogICAgIGlmIChwZHUtPnNlY3VyaXR5TW9kZWwgPT0gU05NUF9ERUZBVUxUX1NFQ01PREVMKSB7CiAgICAgICAgIHBkdS0+c2VjdXJpdHlNb2RlbCA9IHNlc3Npb24tPnNlY3VyaXR5TW9kZWw7CiAgICAgICAgIGlmIChwZHUtPnNlY3VyaXR5TW9kZWwgPT0gU05NUF9ERUZBVUxUX1NFQ01PREVMKSB7Ci0gICAgICAgICAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBTTk1QX1NFQ19NT0RFTF9VU007CisgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBzZV9maW5kX3ZhbHVlX2luX3NsaXN0KCJzbm1wX3NlY21vZHMiLCBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9TRUNNT0RFTCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocGR1LT5zZWN1cml0eU1vZGVsIDw9IDApIHsKKyAgICAgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TW9kZWwgPSBTTk1QX1NFQ19NT0RFTF9VU007CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lTGVuID09IDAgJiYgcGR1LT5zZWN1cml0eU5hbWUgPT0gMCkgewotICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lTGVuID09IDApIHsKKyAgICBpZiAocGR1LT5zZWN1cml0eU5hbWVMZW4gPT0gMCAmJiBwZHUtPnNlY3VyaXR5TmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eU1vZGVsICE9IE5FVFNOTVBfVFNNX1NFQ1VSSVRZX01PREVMICYmCisgICAgICAgICAgICBzZXNzaW9uLT5zZWN1cml0eU5hbWVMZW4gPT0gMCkgewogICAgICAgICAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gU05NUEVSUl9CQURfU0VDX05BTUU7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgcGR1LT5zZWN1cml0eU5hbWUgPSBzdHJkdXAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKTsKLSAgICAgICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lID09IE5VTEwpIHsKLSAgICAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfR0VORVJSOwotICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoc2Vzc2lvbi0+c2VjdXJpdHlOYW1lKSB7CisgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZSA9IHN0cmR1cChzZXNzaW9uLT5zZWN1cml0eU5hbWUpOworICAgICAgICAgICAgaWYgKHBkdS0+c2VjdXJpdHlOYW1lID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5TmFtZUxlbjsKICAgICAgICAgfQotICAgICAgICBwZHUtPnNlY3VyaXR5TmFtZUxlbiA9IHNlc3Npb24tPnNlY3VyaXR5TmFtZUxlbjsKICAgICB9CiAgICAgaWYgKHBkdS0+c2VjdXJpdHlMZXZlbCA9PSAwKSB7CiAgICAgICAgIGlmIChzZXNzaW9uLT5zZWN1cml0eUxldmVsID09IDApIHsKQEAgLTI3OTAsNyArMjkwOSw3IEBACiAgICAgICAgICAgICBuZXRzbm1wX3Nlc3Npb24gKiBzZXNzaW9uLCBuZXRzbm1wX3BkdSAqcGR1KQogewogI2lmICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjEpIHx8ICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDKQotICAgIHVfY2hhciAgICAgICAgICpoMGUgPSAwOworICAgIHVfY2hhciAgICAgICAgICpoMGUgPSBOVUxMOwogICAgIHNpemVfdCAgICAgICAgICBzdGFydF9vZmZzZXQgPSAqb2Zmc2V0OwogICAgIGxvbmcgICAgICAgICAgICB2ZXJzaW9uOwogICAgIGludCAgICAgICAgICAgICByYyA9IDA7CkBAIC0yOTY5LDcgKzMwODgsNyBAQAogICAgICAgICB9CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICFORVRTTk1QX05PX1pFUk9MRU5HVEhfQ09NTVVOSVRZICovCiAKLSAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc2VuZCIsICJCdWlsZGluZyBTTk1QdiVkIG1lc3NhZ2UuLi5cbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX3NlbmQiLCAiQnVpbGRpbmcgU05NUHYlbGQgbWVzc2FnZS4uLlxuIiwKICAgICAgICAgICAgICAgICAgICAgKDEgKyBwZHUtPnZlcnNpb24pKSk7CiAjaWZkZWYgTkVUU05NUF9VU0VfUkVWRVJTRV9BU05FTkNPRElORwogICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsIE5FVFNOTVBfRFNfTElCX1JFVkVSU0VfRU5DT0RFKSkgewpAQCAtNDAyNiw3ICs0MTQ1LDcgQEAKICAgICAgKiByZXR1cm4gdGhlIGFwcHJvcHJpYXRlIGVycm9yIGNvdW50ZXIgIAogICAgICAqLwogICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIGVycl92YXIsIGVycl92YXJfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fQ09VTlRFUiwgKHVfY2hhciAqKSAmIGx0bXAsIHNpemVvZihsdG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9DT1VOVEVSLCAmIGx0bXAsIHNpemVvZihsdG1wKSk7CiAKICAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOwogfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBlbmQgc25tcHYzX21ha2VfcmVwb3J0KCkgKi8KQEAgLTQxMjEsNiArNDI0MCwxNCBAQAogI2VuZGlmCiAgICAgaW50ICAgICAgICAgICAgIHJlc3VsdCA9IC0xOwogCisgICAgc3RhdGljIG9pZCAgICAgIHNubXBFbmdpbmVJRG9pZFtdICAgPSB7IDEsMyw2LDEsNiwzLDEwLDIsMSwxLDB9OworICAgIHN0YXRpYyBzaXplX3QgICBzbm1wRW5naW5lSURvaWRfbGVuID0gMTE7CisKKyAgICBzdGF0aWMgY2hhciAgICAgb3VyRW5naW5lSURbU05NUF9TRUNfUEFSQU1fQlVGX1NJWkVdOworICAgIHN0YXRpYyBzaXplX3QgICBvdXJFbmdpbmVJRF9sZW4gPSBzaXplb2Yob3VyRW5naW5lSUQpOworCisgICAgbmV0c25tcF9wZHUgICAgKnBkdTIgPSBOVUxMOworCiAgICAgc2Vzc2lvbi0+c19zbm1wX2Vycm5vID0gMDsKICAgICBzZXNzaW9uLT5zX2Vycm5vID0gMDsKIApAQCAtNDE0NSw3ICs0MjcyLDcgQEAKICAgICBjYXNlIFNOTVBfVkVSU0lPTl8yYzoKICNlbmRpZgogI2lmICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjEpIHx8ICFkZWZpbmVkKE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDKQotICAgICAgICBERUJVR01TR1RMKCgic25tcF9hcGkiLCAiUGFyc2luZyBTTk1QdiVkIG1lc3NhZ2UuLi5cbiIsCisgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wX2FwaSIsICJQYXJzaW5nIFNOTVB2JWxkIG1lc3NhZ2UuLi5cbiIsCiAgICAgICAgICAgICAgICAgICAgICgxICsgcGR1LT52ZXJzaW9uKSkpOwogCiAgICAgICAgIC8qCkBAIC00MjQ0LDYgKzQzNzEsMTIwIEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgLyogSW1wbGVtZW50IFJGQzUzNDMgaGVyZSBmb3IgdHdvIHJlYXNvbnM6CisgICAgICAgICAgIDEpIEZyb20gYSBzZWN1cml0eSBwZXJzcGVjdGl2ZSBpdCBoYW5kbGVzIHRoaXMgb3RoZXJ3aXNlCisgICAgICAgICAgICAgIGFsd2F5cyBhcHByb3ZlZCByZXF1ZXN0IGVhcmxpZXIuICBJdCBieXBhc3NlcyB0aGUgbmVlZAorICAgICAgICAgICAgICBmb3IgYXV0aG9yaXphdGlvbiB0byB0aGUgc25tcEVuZ2luZUlEIHNjYWxhciwgd2hpY2ggaXMKKyAgICAgICAgICAgICAgd2hhdCBpcyB3aGF0IFJGQzM0MTUgYXBwZW5kaXggQSBzcGVjaWVzIGFzIG9rLiAgTm90ZQorICAgICAgICAgICAgICB0aGF0IHdlIGhhdmVuJ3QgYnlwYXNzZWQgYXV0aGVudGljYXRpb24gc2luY2UgaWYgdGhlcmUKKyAgICAgICAgICAgICAgd2FzIGFuIGF1dGhlbnRpY2F0aW9uIGVyb3IgaXQgd291bGQgaGF2ZSBiZWVuIGhhbmRsZWQKKyAgICAgICAgICAgICAgYWJvdmUgaW4gdGhlIGlmKHJlc3VsdCkgcGFydCBhdCB0aGUgbGFzdGV0LgorICAgICAgICAgICAyKSBGcm9tIGFuIGFwcGxpY2F0aW9uIHBvaW50IG9mIHZpZXcgaWYgd2UgbGV0IHRoaXMgcmVxdWVzdAorICAgICAgICAgICAgICBnZXQgYWxsIHRoZSB3YXkgdG8gdGhlIGFwcGxpY2F0aW9uLCBpdCdkIHJlcXVpcmUgdGhhdAorICAgICAgICAgICAgICBhbGwgYXBwbGljYXRpb24gdHlwZXMgc3VwcG9ydGluZyBkaXNjb3ZlcnkgYWxzbyBmaXJlIHVwCisgICAgICAgICAgICAgIGEgbWluaW1hbCBhZ2VudCBpbiBvcmRlciB0byBoYW5kbGUganVzdCB0aGlzIHJlcXVlc3QKKyAgICAgICAgICAgICAgd2hpY2ggc2VlbXMgbGlrZSBvdmVya2lsbC4gIFRob3VnaCB0aGVyZSBpcyBubyBvdGhlcgorICAgICAgICAgICAgICBhcHBsaWNhdGlvbiB0eXBlcyB0aGF0IGN1cnJlbnRseSBuZWVkIGRpc2NvdmVyeSAoTlJzCisgICAgICAgICAgICAgIGFjY2VwdCBub3RpZmljYXRpb25zIGZyb20gY29udGV4dEVuZ2luZUlEcyB0aGF0IGRlcml2ZQorICAgICAgICAgICAgICBmcm9tIHRoZSBOTyBub3QgdGhlIE5SKS4gIEFsc28gYSBsYW1lIGV4Y3VzZSBmb3IgZG9pbmcKKyAgICAgICAgICAgICAgaXQgaGVyZS4KKyAgICAgICAgICAgMykgTGVzcyBpbXBvcnRhbnQgdGVjaG5pY2FsbHksIGJ1dCB0aGUgbmV0LXNubXAgYWdlbnQKKyAgICAgICAgICAgICAgZG9lc24ndCBjdXJyZW50bHkgaGFuZGxlIHJlZ2lzdHJhdGlvbnMgb2YgZGlmZmVyZW50CisgICAgICAgICAgICAgIGVuZ2luZUlEcyBlaXRoZXIgYW5kIGl0IHdvdWxkIGhhdmUgYmVlbiBhIGxvdCBtb3JlIHdvcmsKKyAgICAgICAgICAgICAgdG8gaW1wbGVtZW50IHRoZXJlIHNpbmNlIHdlJ2QgbmVlZCB0byBzdXBwb3J0IHRoYXQKKyAgICAgICAgICAgICAgZmlyc3QuIDotLyBTdXBwb3J0aW5nIG11bHRpcGxlIGNvbnRleHQgZW5naW5lSURzIHNob3VsZAorICAgICAgICAgICAgICBiZSBkb25lIGFueXdheSwgc28gaXQncyBub3QgYSB2YWxpZCBleGN1c2UgaGVyZS4KKyAgICAgICAgICAgNCkgVGhlcmUgaXMgYSBsb3QgbGVzcyB0byBkbyBpZiB3ZSB0cnVtcCB0aGUgYWdlbnQgYXQgdGhpcworICAgICAgICAgICAgICBwb2ludDsgSUUsIHRoZSBhZ2VudCBkb2VzIGEgbG90IG1vcmUgdW5uZWNlc3NhcnkKKyAgICAgICAgICAgICAgcHJvY2Vzc2luZyB3aGVuIHRoZSBvbmx5IHRoaW5nIHRoYXQgc2hvdWxkIGV2ZXIgYmUgaW4KKyAgICAgICAgICAgICAgdGhpcyBjb250ZXh0IGJ5IGRlZmluaXRpb24gaXMgdGhlIHNpbmdsZSBzY2FsYXIuCisgICAgICAgICovCisKKyAgICAgICAgLyogc3BlY2lhbCBSRkM1MzQzIGVuZ2luZUlEIGRpc2NvdmVyeSBlbmdpbmVJRCBjaGVjayAqLworICAgICAgICBpZiAoIW5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19MSUJfTk9fRElTQ09WRVJZKSAmJgorICAgICAgICAgICAgU05NUF9NU0dfUkVTUE9OU0UgICAgICAgIT0gcGR1LT5jb21tYW5kICYmCisgICAgICAgICAgICBOVUxMICAgICAgICAgICAgICAgICAgICAhPSBwZHUtPmNvbnRleHRFbmdpbmVJRCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURMZW4gPT0gNSAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbMF0gPT0gMHg4MCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbMV0gPT0gMHgwMCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbMl0gPT0gMHgwMCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbM10gPT0gMHgwMCAmJgorICAgICAgICAgICAgcGR1LT5jb250ZXh0RW5naW5lSURbNF0gPT0gMHgwNikgeworCisgICAgICAgICAgICAvKiBkZWZpbmUgYSByZXN1bHQgc28gaXQgZG9lc24ndCBnZXQgcGFzdCB1cyBhdCB0aGlzIHBvaW50CisgICAgICAgICAgICAgICBhbmQgZ2V0cyBkcm9wcGVkIGJ5IGZ1dHVyZSBwYXJ0cyBvZiB0aGUgc3RhY2sgKi8KKyAgICAgICAgICAgIHJlc3VsdCA9IFNOTVBFUlJfSlVTVF9BX0NPTlRFWFRfUFJPQkU7CisKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdjNfY29udGV4dGlkIiwgInN0YXJ0aW5nIGNvbnRleHQgSUQgZGlzY292ZXJ5XG4iKSk7CisgICAgICAgICAgICAvKiBlbnN1cmUgZXhhY3RseSBvbmUgdmFyaWFibGUgKi8KKyAgICAgICAgICAgIGlmIChOVUxMICE9IHBkdS0+dmFyaWFibGVzICYmCisgICAgICAgICAgICAgICAgTlVMTCA9PSBwZHUtPnZhcmlhYmxlcy0+bmV4dF92YXJpYWJsZSAmJgorCisgICAgICAgICAgICAgICAgLyogaWYgaXQncyBhIEdFVCwgbWF0Y2ggaXQgZXhhY3RseSAqLworICAgICAgICAgICAgICAgICgoU05NUF9NU0dfR0VUID09IHBkdS0+Y29tbWFuZCAmJgorICAgICAgICAgICAgICAgICAgc25tcF9vaWRfY29tcGFyZShzbm1wRW5naW5lSURvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBFbmdpbmVJRG9pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dmFyaWFibGVzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGgpID09IDApCisgICAgICAgICAgICAgICAgIC8qIGlmIGl0J3MgYSBHRVRORVhUIGVuc3VyZSBpdCdzIGxlc3MgdGhhbiB0aGUgZW5naW5lSUQgb2lkICovCisgICAgICAgICAgICAgICAgIHx8CisgICAgICAgICAgICAgICAgIChTTk1QX01TR19HRVRORVhUID09IHBkdS0+Y29tbWFuZCAmJgorICAgICAgICAgICAgICAgICAgc25tcF9vaWRfY29tcGFyZShzbm1wRW5naW5lSURvaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNubXBFbmdpbmVJRG9pZF9sZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dmFyaWFibGVzLT5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZHUtPnZhcmlhYmxlcy0+bmFtZV9sZW5ndGgpID4gMCkKKyAgICAgICAgICAgICAgICAgICAgKSkgeworCisgICAgICAgICAgICAgICAgREVCVUdNU0dUTCgoInNubXB2M19jb250ZXh0aWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIE9uZSBjb3JyZWN0IHZhcmlhYmxlIGZvdW5kXG4iKSk7CisKKyAgICAgICAgICAgICAgICAvKiBOb3RlOiB3ZSdyZSBleHBsaWN0bHkgbm90IGhhbmRsaW5nIGEgR0VUQlVMSy4gIERlYWwuICovCisKKyAgICAgICAgICAgICAgICAvKiBzZXQgdXAgdGhlIHJlc3BvbnNlICovCisgICAgICAgICAgICAgICAgcGR1MiA9IHNubXBfY2xvbmVfcGR1KHBkdSk7CisKKyAgICAgICAgICAgICAgICAvKiBmcmVlIHRoZSBjdXJyZW50IHZhcmJpbmQgKi8KKyAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfdmFyYmluZChwZHUyLT52YXJpYWJsZXMpOworCisgICAgICAgICAgICAgICAgLyogc2V0IHRoZSB2YXJpYWJsZXMgKi8KKyAgICAgICAgICAgICAgICBwZHUyLT52YXJpYWJsZXMgPSBOVUxMOworICAgICAgICAgICAgICAgIHBkdTItPmNvbW1hbmQgPSBTTk1QX01TR19SRVNQT05TRTsKKyAgICAgICAgICAgICAgICBwZHUyLT5lcnJzdGF0ID0gMDsKKyAgICAgICAgICAgICAgICBwZHUyLT5lcnJpbmRleCA9IDA7CisKKyAgICAgICAgICAgICAgICBvdXJFbmdpbmVJRF9sZW4gPQorICAgICAgICAgICAgICAgICAgICBzbm1wdjNfZ2V0X2VuZ2luZUlEKCh1X2NoYXIqKW91ckVuZ2luZUlELCBvdXJFbmdpbmVJRF9sZW4pOworICAgICAgICAgICAgICAgIGlmICgwICE9IG91ckVuZ2luZUlEX2xlbikgeworCisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdjNfY29udGV4dGlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgcmVzcG9uZGluZyB3aXRoIG91ciBlbmdpbmVJRFxuIikpOworCisgICAgICAgICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25tcEVuZ2luZUlEb2lkLCBzbm1wRW5naW5lSURvaWRfbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91ckVuZ2luZUlELCBvdXJFbmdpbmVJRF9sZW4pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLyogc2VuZCB0aGUgcmVzcG9uc2UgKi8KKyAgICAgICAgICAgICAgICAgICAgaWYgKDAgPT0gc25tcF9zZXNzX3NlbmQoc2Vzc3AsIHBkdTIpKSB7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzbm1wdjNfY29udGV4dGlkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgIHNlbnQgaXQgb2ZmIVxuIikpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2ZyZWVfcGR1KHBkdTIpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAic2VuZGluZyBhIHJlc3BvbnNlIHRvIHRoZSBjb250ZXh0IGVuZ2luZUlEIHByb2JlIGZhaWxlZFxuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZmFpbGVkIHRvIGdldCBvdXIgb3duIGVuZ2luZUlEIVxuIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzbm1wX2xvZyhMT0dfV0FSTklORywKKyAgICAgICAgICAgICAgICAgICAgICAgICAicmVjZWl2ZWQgYW4gb2RkIGNvbnRleHQgZW5naW5lSUQgcHJvYmVcbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTTk1QRVJSX0JBRF9WRVJTSU9OOgogICAgICAgICBFUlJPUl9NU0coImVycm9yIHBhcnNpbmcgc25tcCBtZXNzYWdlIHZlcnNpb24iKTsKQEAgLTQzMDEsNiArNDU0Miw3IEBACiAgICAgc2l6ZV90ICAgICAgICAgIGZvdXI7CiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2cCA9IE5VTEw7CiAgICAgb2lkICAgICAgICAgICAgIG9iamlkW01BWF9PSURfTEVOXTsKKyAgICB1X2NoYXIgICAgICAgICAqcDsKIAogICAgIC8qCiAgICAgICogR2V0IHRoZSBQRFUgdHlwZSAKQEAgLTQ0NDIsMTAgKzQ2ODQsMTAgQEAKICAgICB3aGlsZSAoKGludCkgKmxlbmd0aCA+IDApIHsKICAgICAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2cHRlbXA7CiAgICAgICAgIHZwdGVtcCA9IChuZXRzbm1wX3ZhcmlhYmxlX2xpc3QgKikgbWFsbG9jKHNpemVvZigqdnB0ZW1wKSk7Ci0gICAgICAgIGlmICgwID09IHZwdGVtcCkgeworICAgICAgICBpZiAoTlVMTCA9PSB2cHRlbXApIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQotICAgICAgICBpZiAoMCA9PSB2cCkgeworICAgICAgICBpZiAoTlVMTCA9PSB2cCkgewogICAgICAgICAgICAgcGR1LT52YXJpYWJsZXMgPSB2cHRlbXA7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICB2cC0+bmV4dF92YXJpYWJsZSA9IHZwdGVtcDsKQEAgLTQ0NTUsMTAgKzQ2OTcsMTAgQEAKICAgICAgICAgdnAtPm5leHRfdmFyaWFibGUgPSBOVUxMOwogICAgICAgICB2cC0+dmFsLnN0cmluZyA9IE5VTEw7CiAgICAgICAgIHZwLT5uYW1lX2xlbmd0aCA9IE1BWF9PSURfTEVOOwotICAgICAgICB2cC0+bmFtZSA9IDA7CisgICAgICAgIHZwLT5uYW1lID0gTlVMTDsKICAgICAgICAgdnAtPmluZGV4ID0gMDsKLSAgICAgICAgdnAtPmRhdGEgPSAwOwotICAgICAgICB2cC0+ZGF0YUZyZWVIb29rID0gMDsKKyAgICAgICAgdnAtPmRhdGEgPSBOVUxMOworICAgICAgICB2cC0+ZGF0YUZyZWVIb29rID0gTlVMTDsKICAgICAgICAgREVCVUdEVU1QU0VDVElPTigicmVjdiIsICJWYXJCaW5kIik7CiAgICAgICAgIGRhdGEgPSBzbm1wX3BhcnNlX3Zhcl9vcChkYXRhLCBvYmppZCwgJnZwLT5uYW1lX2xlbmd0aCwgJnZwLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZwLT52YWxfbGVuLCAmdmFyX3ZhbCwgbGVuZ3RoKTsKQEAgLTQ0NzMsOSArNDcxNSwxMSBAQAogICAgICAgICBjYXNlIEFTTl9JTlRFR0VSOgogICAgICAgICAgICAgdnAtPnZhbC5pbnRlZ2VyID0gKGxvbmcgKikgdnAtPmJ1ZjsKICAgICAgICAgICAgIHZwLT52YWxfbGVuID0gc2l6ZW9mKGxvbmcpOwotICAgICAgICAgICAgYXNuX3BhcnNlX2ludCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX2ludCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb25nICopIHZwLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCp2cC0+dmFsLmludGVnZXIpKTsKKyAgICAgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBBU05fQ09VTlRFUjoKICAgICAgICAgY2FzZSBBU05fR0FVR0U6CkBAIC00NDgzLDkgKzQ3MjcsMTEgQEAKICAgICAgICAgY2FzZSBBU05fVUlOVEVHRVI6CiAgICAgICAgICAgICB2cC0+dmFsLmludGVnZXIgPSAobG9uZyAqKSB2cC0+YnVmOwogICAgICAgICAgICAgdnAtPnZhbF9sZW4gPSBzaXplb2YodV9sb25nKTsKLSAgICAgICAgICAgIGFzbl9wYXJzZV91bnNpZ25lZF9pbnQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAorICAgICAgICAgICAgcCA9IGFzbl9wYXJzZV91bnNpZ25lZF9pbnQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9sb25nICopIHZwLT52YWwuaW50ZWdlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwogICAgICAgICBjYXNlIEFTTl9PUEFRVUVfQ09VTlRFUjY0OgpAQCAtNDQ5NCwzNCArNDc0MCw0NSBAQAogICAgICAgICBjYXNlIEFTTl9DT1VOVEVSNjQ6CiAgICAgICAgICAgICB2cC0+dmFsLmNvdW50ZXI2NCA9IChzdHJ1Y3QgY291bnRlcjY0ICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgICAgIGFzbl9wYXJzZV91bnNpZ25lZF9pbnQ2NCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX3Vuc2lnbmVkX2ludDY0KHZhcl92YWwsICZsZW4sICZ2cC0+dHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2cC0+dmFsLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvdW50ZXI2NCwgdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogI2lmZGVmIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUwogICAgICAgICBjYXNlIEFTTl9PUEFRVUVfRkxPQVQ6CiAgICAgICAgICAgICB2cC0+dmFsLmZsb2F0VmFsID0gKGZsb2F0ICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihmbG9hdCk7Ci0gICAgICAgICAgICBhc25fcGFyc2VfZmxvYXQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAorICAgICAgICAgICAgcCA9IGFzbl9wYXJzZV9mbG9hdCh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnAtPnZhbC5mbG9hdFZhbCwgdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIEFTTl9PUEFRVUVfRE9VQkxFOgogICAgICAgICAgICAgdnAtPnZhbC5kb3VibGVWYWwgPSAoZG91YmxlICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihkb3VibGUpOwotICAgICAgICAgICAgYXNuX3BhcnNlX2RvdWJsZSh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX2RvdWJsZSh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwLT52YWwuZG91YmxlVmFsLCB2cC0+dmFsX2xlbik7CisgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVNOX09QQVFVRV9JNjQ6CiAgICAgICAgICAgICB2cC0+dmFsLmNvdW50ZXI2NCA9IChzdHJ1Y3QgY291bnRlcjY0ICopIHZwLT5idWY7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiA9IHNpemVvZihzdHJ1Y3QgY291bnRlcjY0KTsKLSAgICAgICAgICAgIGFzbl9wYXJzZV9zaWduZWRfaW50NjQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAorICAgICAgICAgICAgcCA9IGFzbl9wYXJzZV9zaWduZWRfaW50NjQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IGNvdW50ZXI2NCAqKSB2cC0+dmFsLmNvdW50ZXI2NCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKCp2cC0+dmFsLmNvdW50ZXI2NCkpOwogCisgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5FVFNOTVBfV0lUSF9PUEFRVUVfU1BFQ0lBTF9UWVBFUyAqLwotICAgICAgICBjYXNlIEFTTl9PQ1RFVF9TVFI6CiAgICAgICAgIGNhc2UgQVNOX0lQQUREUkVTUzoKKyAgICAgICAgICAgIGlmICh2cC0+dmFsX2xlbiAhPSA0KQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIC8qIGZhbGx0aHJvdWdoICovCisgICAgICAgIGNhc2UgQVNOX09DVEVUX1NUUjoKICAgICAgICAgY2FzZSBBU05fT1BBUVVFOgogICAgICAgICBjYXNlIEFTTl9OU0FQOgogICAgICAgICAgICAgaWYgKHZwLT52YWxfbGVuIDwgc2l6ZW9mKHZwLT5idWYpKSB7CkBAIC00NTMyLDEyICs0Nzg5LDE2IEBACiAgICAgICAgICAgICBpZiAodnAtPnZhbC5zdHJpbmcgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGFzbl9wYXJzZV9zdHJpbmcodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLCB2cC0+dmFsLnN0cmluZywKKyAgICAgICAgICAgIHAgPSBhc25fcGFyc2Vfc3RyaW5nKHZhcl92YWwsICZsZW4sICZ2cC0+dHlwZSwgdnAtPnZhbC5zdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ2cC0+dmFsX2xlbik7CisgICAgICAgICAgICBpZiAoIXApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQVNOX09CSkVDVF9JRDoKICAgICAgICAgICAgIHZwLT52YWxfbGVuID0gTUFYX09JRF9MRU47Ci0gICAgICAgICAgICBhc25fcGFyc2Vfb2JqaWQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLCBvYmppZCwgJnZwLT52YWxfbGVuKTsKKyAgICAgICAgICAgIHAgPSBhc25fcGFyc2Vfb2JqaWQodmFyX3ZhbCwgJmxlbiwgJnZwLT50eXBlLCBvYmppZCwgJnZwLT52YWxfbGVuKTsKKyAgICAgICAgICAgIGlmICghcCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB2cC0+dmFsX2xlbiAqPSBzaXplb2Yob2lkKTsKICAgICAgICAgICAgIHZwLT52YWwub2JqaWQgPSAob2lkICopIG1hbGxvYyh2cC0+dmFsX2xlbik7CiAgICAgICAgICAgICBpZiAodnAtPnZhbC5vYmppZCA9PSBOVUxMKSB7CkBAIC00NTU1LDggKzQ4MTYsMTAgQEAKICAgICAgICAgICAgIGlmICh2cC0+dmFsLmJpdHN0cmluZyA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgYXNuX3BhcnNlX2JpdHN0cmluZyh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCisgICAgICAgICAgICBwID0gYXNuX3BhcnNlX2JpdHN0cmluZyh2YXJfdmFsLCAmbGVuLCAmdnAtPnR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZwLT52YWwuYml0c3RyaW5nLCAmdnAtPnZhbF9sZW4pOworICAgICAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImJhZCB0eXBlIHJldHVybmVkICgleClcbiIsIHZwLT50eXBlKTsKQEAgLTQ4NzQsNyArNTEzNyw3IEBACiAgICAgaWYgKHNlc3Npb24tPnNuZE1zZ01heFNpemUgIT0gMCAmJiBsZW5ndGggPiBzZXNzaW9uLT5zbmRNc2dNYXhTaXplKSB7CiAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX2FzeW5jX3NlbmQiLAogICAgICAgICAgICAgICAgICAgICAibGVuZ3RoIG9mIHBhY2tldCAoJWx1KSBleGNlZWRzIHNlc3Npb24gbWF4aW11bSAoJWx1KVxuIiwKLSAgICAgICAgICAgICAgICAgICAgbGVuZ3RoLCBzZXNzaW9uLT5zbmRNc2dNYXhTaXplKSk7CisgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWxlbmd0aCwgKHVuc2lnbmVkIGxvbmcpc2Vzc2lvbi0+c25kTXNnTWF4U2l6ZSkpOwogICAgICAgICBzZXNzaW9uLT5zX3NubXBfZXJybm8gPSBTTk1QRVJSX1RPT19MT05HOwogICAgICAgICBTTk1QX0ZSRUUocGt0YnVmKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC00ODg4LDcgKzUxNTEsNyBAQAogICAgIGlmICh0cmFuc3BvcnQtPm1zZ01heFNpemUgIT0gMCAmJiBsZW5ndGggPiB0cmFuc3BvcnQtPm1zZ01heFNpemUpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfYXN5bmNfc2VuZCIsCiAgICAgICAgICAgICAgICAgICAgICJsZW5ndGggb2YgcGFja2V0ICglbHUpIGV4Y2VlZHMgdHJhbnNwb3J0IG1heGltdW0gKCVsdSlcbiIsCi0gICAgICAgICAgICAgICAgICAgIGxlbmd0aCwgdHJhbnNwb3J0LT5tc2dNYXhTaXplKSk7CisgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKWxlbmd0aCwgKHVuc2lnbmVkIGxvbmcpdHJhbnNwb3J0LT5tc2dNYXhTaXplKSk7CiAgICAgICAgIHNlc3Npb24tPnNfc25tcF9lcnJubyA9IFNOTVBFUlJfVE9PX0xPTkc7CiAgICAgICAgIFNOTVBfRlJFRShwa3RidWYpOwogICAgICAgICByZXR1cm4gMDsKQEAgLTQ5MTUsNiArNTE3OCw4IEBACiAgICAgICogU2VuZCB0aGUgbWVzc2FnZS4gIAogICAgICAqLwogCisgICAgREVCVUdNU0dUTCgoInNlc3NfcHJvY2Vzc19wYWNrZXQiLCAic2VuZGluZyBtZXNzYWdlIGlkIyVsZCByZXFpZCMlbGRcbiIsCisgICAgICAgICAgICAgICAgcGR1LT5tc2dpZCwgcGR1LT5yZXFpZCkpOwogICAgIHJlc3VsdCA9IHRyYW5zcG9ydC0+Zl9zZW5kKHRyYW5zcG9ydCwgcGFja2V0LCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihwZHUtPnRyYW5zcG9ydF9kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKSk7CkBAIC01MDIwLDcgKzUyODUsNyBAQAogICogRnJlZXMgdGhlIHZhcmlhYmxlIGFuZCBhbnkgbWFsbG9jJ2QgZGF0YSBhc3NvY2lhdGVkIHdpdGggaXQuCiAgKi8KIHZvaWQKLXNubXBfZnJlZV92YXIobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyKQorc25tcF9mcmVlX3Zhcl9pbnRlcm5hbHMobmV0c25tcF92YXJpYWJsZV9saXN0ICogdmFyKQogewogICAgIGlmICghdmFyKQogICAgICAgICByZXR1cm47CkBAIC01MDM3LDcgKzUzMDIsMTIgQEAKICAgICAgICAgICAgIFNOTVBfRlJFRSh2YXItPmRhdGEpOwogICAgICAgICB9CiAgICAgfQorfQogCit2b2lkCitzbm1wX2ZyZWVfdmFyKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIHZhcikKK3sKKyAgICBzbm1wX2ZyZWVfdmFyX2ludGVybmFscyh2YXIpOwogICAgIGZyZWUoKGNoYXIgKikgdmFyKTsKIH0KIApAQCAtNTE4MSw2ICs1NDUxLDcgQEAKICAgfSBlbHNlIHsKICAgICBwZHUgPSBzbm1wX2NyZWF0ZV9zZXNzX3BkdSh0cmFuc3BvcnQsIG9wYXF1ZSwgb2xlbmd0aCk7CiAgIH0KKwogICBpZiAocGR1ID09IE5VTEwpIHsKICAgICBzbm1wX2xvZyhMT0dfRVJSLCAicGR1IGZhaWxlZCB0byBiZSBjcmVhdGVkXG4iKTsKICAgICBpZiAob3BhcXVlICE9IE5VTEwpIHsKQEAgLTUxODksMTIgKzU0NjAsMjEgQEAKICAgICByZXR1cm4gLTE7CiAgIH0KIAorICAvKiBpZiB0aGUgdHJhbnNwb3J0IHdhcyBhIG1hZ2ljIHR1bm5lbCwgbWFyayB0aGUgUERVIGFzIGhhdmluZyBjb21lCisgICAgIHRocm91Z2ggb25lLiAqLworICBpZiAodHJhbnNwb3J0LT5mbGFncyAmIE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfVFVOTkVMRUQpIHsKKyAgICAgIHBkdS0+ZmxhZ3MgfD0gVUNEX01TR19GTEFHX1RVTk5FTEVEOworICB9CisKICAgaWYgKGlzcC0+aG9va19wYXJzZSkgewogICAgIHJldCA9IGlzcC0+aG9va19wYXJzZShzcCwgcGR1LCBwYWNrZXRwdHIsIGxlbmd0aCk7CiAgIH0gZWxzZSB7CiAgICAgcmV0ID0gc25tcF9wYXJzZShzZXNzcCwgc3AsIHBkdSwgcGFja2V0cHRyLCBsZW5ndGgpOwogICB9CiAKKyAgREVCVUdNU0dUTCgoInNlc3NfcHJvY2Vzc19wYWNrZXQiLCAicmVjZWl2ZWQgbWVzc2FnZSBpZCMlbGQgcmVxaWQjJWxkXG4iLAorICAgICAgICAgICAgICBwZHUtPm1zZ2lkLCBwZHUtPnJlcWlkKSk7CisKICAgaWYgKHJldCAhPSBTTk1QX0VSUl9OT0VSUk9SKSB7CiAgICAgREVCVUdNU0dUTCgoInNlc3NfcHJvY2Vzc19wYWNrZXQiLCAicGFyc2UgZmFpbFxuIikpOwogICB9CkBAIC01MjYyLDcgKzU1NDIsOSBAQAogCSAqIG1zZ0lkIG11c3QgbWF0Y2ggZm9yIHYzIG1lc3NhZ2VzLiAgCiAJICovCiAJaWYgKHJwLT5tZXNzYWdlX2lkICE9IHBkdS0+bXNnaWQpIHsKLQkgIGNvbnRpbnVlOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcHJvY2Vzc19wYWNrZXQiLCAidW5tYXRjaGVkIG1zZyBpZDogJWxkICE9ICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJwLT5tZXNzYWdlX2lkLCBwZHUtPm1zZ2lkKSk7CisJICAgIGNvbnRpbnVlOwogCX0KIAogCS8qCkBAIC01NDM3LDEwICs1NzE5LDIxIEBACiB2b2lkCiBzbm1wX3JlYWQoZmRfc2V0ICogZmRzZXQpCiB7CisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbGZkc2V0OworCisgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmbGZkc2V0LCBGRF9TRVRTSVpFKTsKKyAgICBuZXRzbm1wX2NvcHlfZmRfc2V0X3RvX2xhcmdlX2ZkX3NldCgmbGZkc2V0LCBmZHNldCk7CisgICAgc25tcF9yZWFkMigmbGZkc2V0KTsKKyAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZsZmRzZXQpOworfQorCit2b2lkCitzbm1wX3JlYWQyKG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CiAgICAgc3RydWN0IHNlc3Npb25fbGlzdCAqc2xwOwogICAgIHNubXBfcmVzX2xvY2soTVRfTElCUkFSWV9JRCwgTVRfTElCX1NFU1NJT04pOwogICAgIGZvciAoc2xwID0gU2Vzc2lvbnM7IHNscDsgc2xwID0gc2xwLT5uZXh0KSB7Ci0gICAgICAgIHNubXBfc2Vzc19yZWFkKCh2b2lkICopIHNscCwgZmRzZXQpOworICAgICAgICBzbm1wX3Nlc3NfcmVhZDIoKHZvaWQgKikgc2xwLCBmZHNldCk7CiAgICAgfQogICAgIHNubXBfcmVzX3VubG9jayhNVF9MSUJSQVJZX0lELCBNVF9MSUJfU0VTU0lPTik7CiB9CkBAIC01NDUyLDcgKzU3NDUsNyBAQAogICogQmV3YXJlIHJlY3Vyc2l2ZSBzZW5kIG1heWJlIGluc2lkZSBzbm1wX3JlYWQgY2FsbGJhY2sgZnVuY3Rpb24uIAogICovCiBpbnQKLV9zZXNzX3JlYWQodm9pZCAqc2Vzc3AsIGZkX3NldCAqIGZkc2V0KQorX3Nlc3NfcmVhZCh2b2lkICpzZXNzcCwgbmV0c25tcF9sYXJnZV9mZF9zZXQgKiBmZHNldCkKIHsKICAgICBzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICpzbHAgPSAoc3RydWN0IHNlc3Npb25fbGlzdCAqKSBzZXNzcDsKICAgICBuZXRzbm1wX3Nlc3Npb24gKnNwID0gc2xwID8gc2xwLT5zZXNzaW9uIDogTlVMTDsKQEAgLTU0NzQsMTAgKzU3NjcsMTEgQEAKICAgICAgICAgcmV0dXJuIDA7IAogICAgIH0KIAotICAgIGlmICghZmRzZXQgfHwgIShGRF9JU1NFVCh0cmFuc3BvcnQtPnNvY2ssIGZkc2V0KSkpIHsKKyAgICBpZiAoIWZkc2V0IHx8ICEoTkVUU05NUF9MQVJHRV9GRF9JU1NFVCh0cmFuc3BvcnQtPnNvY2ssIGZkc2V0KSkpIHsKICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsICJub3QgcmVhZGluZyAlZCAoZmRzZXQgJXAgc2V0ICVkKVxuIiwKICAgICAgICAgICAgICAgICAgICAgdHJhbnNwb3J0LT5zb2NrLCBmZHNldCwKLSAgICAgICAgICAgICAgICAgICAgZmRzZXQgPyBGRF9JU1NFVCh0cmFuc3BvcnQtPnNvY2ssIGZkc2V0KSA6IC05KSk7CisgICAgICAgICAgICAgICAgICAgIGZkc2V0ID8gTkVUU05NUF9MQVJHRV9GRF9JU1NFVCh0cmFuc3BvcnQtPnNvY2ssIGZkc2V0KQorCQkgICAgOiAtOSkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKQEAgLTU1NjQsOCArNTg1OCw4IEBACiAgICAgICAgICAgICAgKiBXZSBoYXZlIG5vIHNhdmVkIHBhY2tldC4gIEFsbG9jYXRlIG9uZS4gIAogICAgICAgICAgICAgICovCiAgICAgICAgICAgICBpZiAoKGlzcC0+cGFja2V0ID0gKHVfY2hhciAqKSBtYWxsb2MocnhidWZfbGVuKSkgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLCAiY2FuJ3QgbWFsbG9jICVkIGJ5dGVzIGZvciByeGJ1ZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByeGJ1Zl9sZW4pKTsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwgImNhbid0IG1hbGxvYyAlIiBORVRTTk1QX1BSSXoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidSBieXRlcyBmb3IgcnhidWZcbiIsIHJ4YnVmX2xlbikpOwogICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByeGJ1ZiA9IGlzcC0+cGFja2V0OwpAQCAtNTU4NSw3ICs1ODc5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzcC0+cGFja2V0X2xlbiArIHJ4YnVmX2xlbik7CiAgICAgICAgICAgICAgICAgaWYgKG5ld2J1ZiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgbWFsbG9jICVkIG1vcmUgZm9yIHJ4YnVmICglZCB0b3QpXG4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgbWFsbG9jICUiIE5FVFNOTVBfUFJJegorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidSBtb3JlIGZvciByeGJ1ZiAoJSIgTkVUU05NUF9QUkl6ICJ1IHRvdClcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ4YnVmX2xlbiwgaXNwLT5wYWNrZXRfbGVuICsgcnhidWZfbGVuKSk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC01NjAwLDggKzU4OTUsOCBAQAogICAgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKChyeGJ1ZiA9ICh1X2NoYXIgKikgbWFsbG9jKHJ4YnVmX2xlbikpID09IE5VTEwpIHsKLSAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLCAiY2FuJ3QgbWFsbG9jICVkIGJ5dGVzIGZvciByeGJ1ZlxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJ4YnVmX2xlbikpOworICAgICAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsICJjYW4ndCBtYWxsb2MgJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgICAgICAgICAidSBieXRlcyBmb3IgcnhidWZcbiIsIHJ4YnVmX2xlbikpOwogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KICAgICB9CkBAIC01NjE5LDYgKzU5MTQsMTcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAorICAgIGlmICgwID09IGxlbmd0aCAmJiB0cmFuc3BvcnQtPmZsYWdzICYgTkVUU05NUF9UUkFOU1BPUlRfRkxBR19FTVBUWV9QS1QpIHsKKyAgICAgICAgLyogdGhpcyBhbGxvd3MgZm9yIGEgdHJhbnNwb3J0IHRoYXQgbmVlZHMgdG8gcmV0dXJuIGZyb20KKyAgICAgICAgICogcGFja2V0IHByb2Nlc3NpbmcgdGhhdCBkb2Vzbid0IG5lY2Vzc2FyaWx5IGhhdmUgYW55CisgICAgICAgICAqIGNvbnN1bWFibGUgZGF0YSBpbiBpdC4gKi8KKworICAgICAgICAvKiByZXNldCB0aGUgZmxhZyBzaW5jZSBpdCdzIGEgcGVyLW1lc3NhZ2UgZmxhZyAqLworICAgICAgICB0cmFuc3BvcnQtPmZsYWdzICY9ICh+TkVUU05NUF9UUkFOU1BPUlRfRkxBR19FTVBUWV9QS1QpOworCisgICAgICAgIHJldHVybiAwOworICAgIH0KKwogICAgIC8qCiAgICAgICogUmVtb3RlIGVuZCBjbG9zZWQgY29ubmVjdGlvbi4gIAogICAgICAqLwpAQCAtNTY2Miw5ICs1OTY4LDEwIEBACiAgICAgICAgICAgICAgICAgcGR1bGVuID0gYXNuX2NoZWNrX3BhY2tldChwcHRyLCBpc3AtPnBhY2tldF9sZW4pOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBERUJVR01TR1RMKCgic2Vzc19yZWFkIiwgIiAgbG9vcCBwYWNrZXRfbGVuICVkLCBQRFUgbGVuZ3RoICVkXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgaXNwLT5wYWNrZXRfbGVuLCBwZHVsZW4pKTsKLSAgICAgICAgICAgICAKKyAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgIiAgbG9vcCBwYWNrZXRfbGVuICUiIE5FVFNOTVBfUFJJeiAidSwgUERVIGxlbmd0aCAlIgorICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9QUkl6ICJ1XG4iLCBpc3AtPnBhY2tldF9sZW4sIHBkdWxlbikpOworCiAgICAgICAgICAgICBpZiAoKHBkdWxlbiA+IE1BWF9QQUNLRVRfTEVOR1RIKSB8fCAocGR1bGVuIDwgMCkpIHsKICAgICAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICAgICAqIElsbGVnYWwgbGVuZ3RoLCBkcm9wIHRoZSBjb25uZWN0aW9uLiAgCkBAIC01Njk0LDggKzYwMDEsOSBAQAogICAgICAgICAgICAgICAgICAqIHN0YXJ0LCBzaW1wbHkgcmV0dXJuIGFuZCB3YWl0IGZvciBtb3JlIGRhdGEgdG8gYXJyaXZlLgogICAgICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwa3Qgbm90IGNvbXBsZXRlIChuZWVkICVkIGdvdCAlZCBzbyBmYXIpXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdWxlbiwgaXNwLT5wYWNrZXRfbGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBrdCBub3QgY29tcGxldGUgKG5lZWQgJSIgTkVUU05NUF9QUkl6ICJ1IGdvdCAlIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfUFJJeiAidSBzbyBmYXIpXG4iLCBwZHVsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNwLT5wYWNrZXRfbGVuKSk7CiAKICAgICAgICAgICAgICAgICBpZiAocHB0ciAhPSBpc3AtPnBhY2tldCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG9wYXF1ZSBmcmVlZCBmb3IgdXMgb3V0c2lkZSBvZiBsb29wLiAqLwpAQCAtNTc2MCw4ICs2MDY4LDkgQEAKICAgICAgICAgICAgICAqIE9idmlvdXNseSB0aGlzIHNob3VsZCBuZXZlciBoYXBwZW4hICAKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwKLSAgICAgICAgICAgICAgICAgICAgICJ0b28gbGFyZ2UgcGFja2V0X2xlbiA9ICVsdSwgZHJvcHBpbmcgY29ubmVjdGlvbiAlZFxuIiwKLSAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKShpc3AtPnBhY2tldF9sZW4pLCB0cmFuc3BvcnQtPnNvY2spOworICAgICAgICAgICAgICAgICAgICAgInRvbyBsYXJnZSBwYWNrZXRfbGVuID0gJSIgTkVUU05NUF9QUkl6CisgICAgICAgICAgICAgICAgICAgICAidSwgZHJvcHBpbmcgY29ubmVjdGlvbiAlZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGlzcC0+cGFja2V0X2xlbiwgdHJhbnNwb3J0LT5zb2NrKTsKICAgICAgICAgICAgIHRyYW5zcG9ydC0+Zl9jbG9zZSh0cmFuc3BvcnQpOwogICAgICAgICAgICAgLyoqIFhYWC1ya3M6IHdoeSBubyBTTk1QX0ZSRUUoaXNwLT5wYWNrZXQpOyA/PyAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtNTc4Nyw5ICs2MDk2LDExIEBACiAgICAgICAgICAqLwogCiAgICAgICAgIG1lbW1vdmUoaXNwLT5wYWNrZXQsIHBwdHIsIGlzcC0+cGFja2V0X2xlbik7Ci0gICAgICAgIERFQlVHTVNHVEwoKCJzZXNzX3JlYWQiLCAiZW5kOiBtZW1tb3ZlKCVwLCAlcCwgJWQpOyByZWFsbG9jKCVwLCAlZClcbiIsCi0gICAgICAgICAgICAgICAgICAgIGlzcC0+cGFja2V0LCBwcHRyLCBpc3AtPnBhY2tldF9sZW4sIGlzcC0+cGFja2V0LAotICAgICAgICAgICAgICAgICAgICBpc3AtPnBhY2tldF9sZW4pKTsKKyAgICAgICAgREVCVUdNU0dUTCgoInNlc3NfcmVhZCIsCisgICAgICAgICAgICAgICAgICAgICJlbmQ6IG1lbW1vdmUoJXAsICVwLCAlIiBORVRTTk1QX1BSSXogInUpOyByZWFsbG9jKCVwLCAlIgorICAgICAgICAgICAgICAgICAgICBORVRTTk1QX1BSSXogInUpXG4iLAorICAgICAgICAgICAgICAgICAgICBpc3AtPnBhY2tldCwgcHB0ciwgaXNwLT5wYWNrZXRfbGVuLAorCQkgICAgaXNwLT5wYWNrZXQsIGlzcC0+cGFja2V0X2xlbikpOwogCiAgICAgICAgIGlmICgocnhidWYgPSAodV9jaGFyICopcmVhbGxvYyhpc3AtPnBhY2tldCwgaXNwLT5wYWNrZXRfbGVuKSkgPT0gTlVMTCkgewogICAgICAgICAgICAgLyoKQEAgLTU4MTksNiArNjEzMCwxOSBAQAogaW50CiBzbm1wX3Nlc3NfcmVhZCh2b2lkICpzZXNzcCwgZmRfc2V0ICogZmRzZXQpCiB7CisgIGludCByYzsKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXQgbGZkc2V0OworICAKKyAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdCgmbGZkc2V0LCBGRF9TRVRTSVpFKTsKKyAgbmV0c25tcF9jb3B5X2ZkX3NldF90b19sYXJnZV9mZF9zZXQoJmxmZHNldCwgZmRzZXQpOworICByYyA9IHNubXBfc2Vzc19yZWFkMihzZXNzcCwgJmxmZHNldCk7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAoJmxmZHNldCk7CisgIHJldHVybiByYzsKK30KKworaW50Citzbm1wX3Nlc3NfcmVhZDIodm9pZCAqc2Vzc3AsIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQpCit7CiAgICAgc3RydWN0IHNlc3Npb25fbGlzdCAqcHNsOwogICAgIG5ldHNubXBfc2Vzc2lvbiAqcHNzOwogICAgIGludCAgICAgICAgICAgICByYzsKQEAgLTU4NzAsNiArNjE5NCwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2spOwogfQogCitpbnQKK3NubXBfc2VsZWN0X2luZm8yKGludCAqbnVtZmRzLAorICAgICAgICAgICAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXQgKiBmZHNldCwKKwkJICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykKKyAgICAvKgorICAgICAqIGlucHV0OiAgc2V0IHRvIDEgaWYgaW5wdXQgdGltZW91dCB2YWx1ZSBpcyB1bmRlZmluZWQgIAorICAgICAqIHNldCB0byAwIGlmIGlucHV0IHRpbWVvdXQgdmFsdWUgaXMgZGVmaW5lZCAgICAKKyAgICAgKiBvdXRwdXQ6IHNldCB0byAxIGlmIG91dHB1dCB0aW1lb3V0IHZhbHVlIGlzIHVuZGVmaW5lZCAKKyAgICAgKiBzZXQgdG8gMCBpZiBvdXRwdXQgcmltZW91dCB2bGF1ZSBpZCBkZWZpbmVkICAgCisgICAgICovCit7CisgICAgcmV0dXJuIHNubXBfc2Vzc19zZWxlY3RfaW5mbzIoKHZvaWQgKikgMCwgbnVtZmRzLCBmZHNldCwgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jayk7Cit9CisKIC8qCiAgKiBTYW1lIGFzIHNubXBfc2VsZWN0X2luZm8sIGJ1dCB3b3JrcyBqdXN0IG9uZSBzZXNzaW9uLiAKICAqLwpAQCAtNTg3OCw2ICs2MjE3LDI3IEBACiAgICAgICAgICAgICAgICAgICAgICAgaW50ICpudW1mZHMsCiAgICAgICAgICAgICAgICAgICAgICAgZmRfc2V0ICogZmRzZXQsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0LCBpbnQgKmJsb2NrKQogeworICBpbnQgcmM7CisgIG5ldHNubXBfbGFyZ2VfZmRfc2V0IGxmZHNldDsKKworICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9pbml0KCZsZmRzZXQsIEZEX1NFVFNJWkUpOworICBuZXRzbm1wX2NvcHlfZmRfc2V0X3RvX2xhcmdlX2ZkX3NldCgmbGZkc2V0LCBmZHNldCk7CisgIHJjID0gc25tcF9zZXNzX3NlbGVjdF9pbmZvMihzZXNzcCwgbnVtZmRzLCAmbGZkc2V0LCB0aW1lb3V0LCBibG9jayk7CisgIGlmIChuZXRzbm1wX2NvcHlfbGFyZ2VfZmRfc2V0X3RvX2ZkX3NldChmZHNldCwgJmxmZHNldCkgPCAwKSB7CisgICAgICBzbm1wX2xvZyhMT0dfRVJSLAorCSAgICAgIlVzZSBzbm1wX3Nlc3Nfc2VsZWN0X2luZm8yKCkgZm9yIHByb2Nlc3NpbmciCisJICAgICAiIGxhcmdlIGZpbGUgZGVzY3JpcHRvcnMiKTsKKyAgfQorICBuZXRzbm1wX2xhcmdlX2ZkX3NldF9jbGVhbnVwKCZsZmRzZXQpOworICByZXR1cm4gcmM7Cit9CisKK2ludAorc25tcF9zZXNzX3NlbGVjdF9pbmZvMih2b2lkICpzZXNzcCwKKyAgICAgICAgICAgICAgICAgICAgICAgaW50ICpudW1mZHMsCisgICAgICAgICAgICAgICAgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0ICogZmRzZXQsCisJCSAgICAgICBzdHJ1Y3QgdGltZXZhbCAqdGltZW91dCwgaW50ICpibG9jaykKK3sKICAgICBzdHJ1Y3Qgc2Vzc2lvbl9saXN0ICpzbHB0ZXN0ID0gKHN0cnVjdCBzZXNzaW9uX2xpc3QgKikgc2Vzc3A7CiAgICAgc3RydWN0IHNlc3Npb25fbGlzdCAqc2xwLCAqbmV4dCA9IE5VTEw7CiAgICAgbmV0c25tcF9yZXF1ZXN0X2xpc3QgKnJwOwpAQCAtNTkzMyw3ICs2MjkzLDcgQEAKICAgICAgICAgICAgICpudW1mZHMgPSAoc2xwLT50cmFuc3BvcnQtPnNvY2sgKyAxKTsKICAgICAgICAgfQogCi0gICAgICAgIEZEX1NFVChzbHAtPnRyYW5zcG9ydC0+c29jaywgZmRzZXQpOworICAgICAgICBORVRTTk1QX0xBUkdFX0ZEX1NFVChzbHAtPnRyYW5zcG9ydC0+c29jaywgZmRzZXQpOwogICAgICAgICBpZiAoc2xwLT5pbnRlcm5hbCAhPSBOVUxMICYmIHNscC0+aW50ZXJuYWwtPnJlcXVlc3RzKSB7CiAgICAgICAgICAgICAvKgogICAgICAgICAgICAgICogRm91bmQgYW5vdGhlciBzZXNzaW9uIHdpdGggb3V0c3RhbmRpbmcgcmVxdWVzdHMuICAKQEAgLTU5NDMsOCArNjMwMyw4IEBACiAgICAgICAgICAgICAgICAgaWYgKCghdGltZXJpc3NldCgmZWFybGllc3QpCiAgICAgICAgICAgICAgICAgICAgICB8fCAodGltZXJjbXAoJnJwLT5leHBpcmUsICZlYXJsaWVzdCwgPCkpKSkgewogICAgICAgICAgICAgICAgICAgICBlYXJsaWVzdCA9IHJwLT5leHBpcmU7Ci0gICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsIih0byBpbiAlZC4lZCBzZWMpICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWFybGllc3QudHZfc2VjLCBlYXJsaWVzdC50dl91c2VjKSk7CisgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsIih0byBpbiAlZC4lMDZkIHNlYykgIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWVhcmxpZXN0LnR2X3NlYywgKGludCllYXJsaWVzdC50dl91c2VjKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01OTYxLDggKzYzMjEsOCBAQAogCiAgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19MSUJSQVJZX0lELCBORVRTTk1QX0RTX0xJQl9BTEFSTV9ET05UX1VTRV9TSUcpKSB7CiAgICAgICAgIG5leHRfYWxhcm0gPSBnZXRfbmV4dF9hbGFybV9kZWxheV90aW1lKCZkZWx0YSk7Ci0gICAgICAgIERFQlVHTVNHVCgoInNlc3Nfc2VsZWN0IiwibmV4dCBhbGFybSAlZC4lZCBzZWNcbiIsCi0gICAgICAgICAgICAgICAgICAgZGVsdGEudHZfc2VjLCBkZWx0YS50dl91c2VjKSk7CisgICAgICAgIERFQlVHTVNHVCgoInNlc3Nfc2VsZWN0IiwibmV4dCBhbGFybSAlZC4lMDZkIHNlY1xuIiwKKyAgICAgICAgICAgICAgICAgICAoaW50KWRlbHRhLnR2X3NlYywgKGludClkZWx0YS50dl91c2VjKSk7CiAgICAgfQogICAgIGlmIChuZXh0X2FsYXJtID09IDAgJiYgcmVxdWVzdHMgPT0gMCkgewogICAgICAgICAvKgpAQCAtNjAxMCw3ICs2MzcwLDcgQEAKICAgICAgICAgICAgIGVhcmxpZXN0LnR2X3VzZWMgPSAxMDA7CiAgICAgICAgIH0KICAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsInRpbWVyIGR1ZSAqcmVhbCogc29vbi4gJWQgdXNlY1xuIiwKLSAgICAgICAgICAgICAgICAgICBlYXJsaWVzdC50dl91c2VjKSk7CisgICAgICAgICAgICAgICAgICAgKGludCllYXJsaWVzdC50dl91c2VjKSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgZWFybGllc3QudHZfc2VjID0gKGVhcmxpZXN0LnR2X3NlYyAtIG5vdy50dl9zZWMpOwogICAgICAgICBlYXJsaWVzdC50dl91c2VjID0gKGVhcmxpZXN0LnR2X3VzZWMgLSBub3cudHZfdXNlYyk7CkBAIC02MDE4LDggKzYzNzgsOCBAQAogICAgICAgICAgICAgZWFybGllc3QudHZfc2VjLS07CiAgICAgICAgICAgICBlYXJsaWVzdC50dl91c2VjID0gKDEwMDAwMDBMICsgZWFybGllc3QudHZfdXNlYyk7CiAgICAgICAgIH0KLSAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsInRpbWVyIGR1ZSBpbiAlZC4lZCBzZWNcbiIsCi0gICAgICAgICAgICAgICAgICAgZWFybGllc3QudHZfc2VjLCBlYXJsaWVzdC50dl91c2VjKSk7CisgICAgICAgIERFQlVHTVNHVCgoInZlcmJvc2U6c2Vzc19zZWxlY3QiLCJ0aW1lciBkdWUgaW4gJWQuJTA2ZCBzZWNcbiIsCisgICAgICAgICAgICAgICAgICAgKGludCllYXJsaWVzdC50dl9zZWMsIChpbnQpZWFybGllc3QudHZfdXNlYykpOwogICAgIH0KIAogICAgIC8qCkBAIC02MDI3LDggKzYzODcsOCBAQAogICAgICAqLwogICAgIGlmICgoKmJsb2NrIHx8ICh0aW1lcmNtcCgmZWFybGllc3QsIHRpbWVvdXQsIDwpKSkpIHsKICAgICAgICAgREVCVUdNU0dUKCgidmVyYm9zZTpzZXNzX3NlbGVjdCIsCi0gICAgICAgICAgICAgICAgICAgInNldHRpbmcgdGltZXIgdG8gJWQuJWQgc2VjLCBjbGVhciBibG9jayAod2FzICVkKVxuIiwKLSAgICAgICAgICAgICAgICAgICBlYXJsaWVzdC50dl9zZWMsIGVhcmxpZXN0LnR2X3VzZWMsICpibG9jaykpOworICAgICAgICAgICAgICAgICAgICJzZXR0aW5nIHRpbWVyIHRvICVkLiUwNmQgc2VjLCBjbGVhciBibG9jayAod2FzICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAoaW50KWVhcmxpZXN0LnR2X3NlYywgKGludCllYXJsaWVzdC50dl91c2VjLCAqYmxvY2spKTsKICAgICAgICAgKnRpbWVvdXQgPSBlYXJsaWVzdDsKICAgICAgICAgKmJsb2NrID0gMDsKICAgICB9CkBAIC02MTQ3LDYgKzY1MDcsOCBAQAogICAgICAgICB4ZHVtcChwYWNrZXQsIGxlbmd0aCwgIiIpOwogICAgIH0KIAorICAgIERFQlVHTVNHVEwoKCJzZXNzX3Byb2Nlc3NfcGFja2V0IiwgInJlc2VuZGluZyBtZXNzYWdlIGlkIyVsZCByZXFpZCMlbGQgcnBfcmVxaWQjJWxkIHJwX21zZ2lkIyVsZFxuIiwKKyAgICAgICAgICAgICAgICBycC0+cGR1LT5tc2dpZCwgcnAtPnBkdS0+cmVxaWQsIHJwLT5yZXF1ZXN0X2lkLCBycC0+bWVzc2FnZV9pZCkpOwogICAgIHJlc3VsdCA9IHRyYW5zcG9ydC0+Zl9zZW5kKHRyYW5zcG9ydCwgcGFja2V0LCBsZW5ndGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihycC0+cGR1LT50cmFuc3BvcnRfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihycC0+cGR1LT50cmFuc3BvcnRfZGF0YV9sZW5ndGgpKTsKQEAgLTY2MDksNyArNjk3MSw3IEBACiBzbm1wX3BkdV9hZGRfdmFyaWFibGUobmV0c25tcF9wZHUgKnBkdSwKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBvaWQgKiBuYW1lLAogICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYW1lX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwgY29uc3QgdV9jaGFyICogdmFsdWUsIHNpemVfdCBsZW4pCisgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHR5cGUsIGNvbnN0IHZvaWQgKiB2YWx1ZSwgc2l6ZV90IGxlbikKIHsKICAgICByZXR1cm4gc25tcF92YXJsaXN0X2FkZF92YXJpYWJsZSgmcGR1LT52YXJpYWJsZXMsIG5hbWUsIG5hbWVfbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIHZhbHVlLCBsZW4pOwpAQCAtNjYyMyw3ICs2OTg1LDcgQEAKIHNubXBfdmFybGlzdF9hZGRfdmFyaWFibGUobmV0c25tcF92YXJpYWJsZV9saXN0ICoqIHZhcmxpc3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG9pZCAqIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBuYW1lX2xlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdV9jaGFyIHR5cGUsIGNvbnN0IHVfY2hhciAqIHZhbHVlLCBzaXplX3QgbGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgICB1X2NoYXIgdHlwZSwgY29uc3Qgdm9pZCAqIHZhbHVlLCBzaXplX3QgbGVuKQogewogICAgIG5ldHNubXBfdmFyaWFibGVfbGlzdCAqdmFycywgKnZ0bXA7CiAgICAgaW50IHJjOwpAQCAtNjY0MSw3ICs3MDAzLDcgQEAKICAgICBpZiAoKCAwICE9IHJjICkgfHwKICAgICAgICAgKG5hbWUgIT0gTlVMTCAmJiBzbm1wX3NldF92YXJfb2JqaWQodmFycywgbmFtZSwgbmFtZV9sZW5ndGgpKSkgewogICAgICAgICBzbm1wX2ZyZWVfdmFyKHZhcnMpOwotICAgICAgICByZXR1cm4gKDApOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICAvKgpAQCAtNjc4OSw3ICs3MTUxLDcgQEAKICAgICAgICAgICAgIGJyZWFrOwogI2VuZGlmIC8qIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORyAqLwogICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX0lOVEVHRVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgbHRtcCwgc2l6ZW9mKGx0bXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsdG1wLCBzaXplb2YobHRtcCkpOwogICAgICAgICBicmVhazsKIAogICAgIGNhc2UgJ3UnOgpAQCAtNjgwMyw3ICs3MTY1LDcgQEAKICAgICAgICAgbHRtcCA9IHN0cnRvdWwodmFsdWUsICZlY3AsIDEwKTsKICAgICAgICAgaWYgKCp2YWx1ZSAmJiAhKmVjcCkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fVU5TSUdORUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGx0bXAsIHNpemVvZihsdG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0bXAsIHNpemVvZihsdG1wKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7CkBAIC02ODE5LDcgKzcxODEsNyBAQAogICAgICAgICBsdG1wID0gc3RydG91bCh2YWx1ZSwgJmVjcCwgMTApOwogICAgICAgICBpZiAoKnZhbHVlICYmICEqZWNwKQogICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9VSU5URUdFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgbHRtcCwgc2l6ZW9mKGx0bXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbHRtcCwgc2l6ZW9mKGx0bXApKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBicmVhazsKQEAgLTY4MzUsNyArNzE5Nyw3IEBACiAgICAgICAgIGx0bXAgPSBzdHJ0b3VsKHZhbHVlLCAmZWNwLCAxMCk7CiAgICAgICAgIGlmICgqdmFsdWUgJiYgISplY3ApCiAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX0NPVU5URVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGx0bXAsIHNpemVvZihsdG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0bXAsIHNpemVvZihsdG1wKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7CkBAIC02ODUwLDcgKzcyMTIsNyBAQAogI2VuZGlmIC8qIE5FVFNOTVBfRElTQUJMRV9NSUJfTE9BRElORyAqLwogICAgICAgICBpZiAocmVhZDY0KCZjNjR0bXAsIHZhbHVlKSkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fQ09VTlRFUjY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBjNjR0bXAsIHNpemVvZihjNjR0bXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYzY0dG1wLCBzaXplb2YoYzY0dG1wKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7CkBAIC02ODY2LDcgKzcyMjgsNyBAQAogICAgICAgICBsdG1wID0gc3RydG91bCh2YWx1ZSwgJmVjcCwgMTApOwogICAgICAgICBpZiAoKnZhbHVlICYmICEqZWNwKQogICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9USU1FVElDS1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGx0bXAsIHNpemVvZihsb25nKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmx0bXAsIHNpemVvZihsb25nKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7CkBAIC02ODgyLDcgKzcyNDQsNyBAQAogICAgICAgICBhdG1wID0gaW5ldF9hZGRyKHZhbHVlKTsKICAgICAgICAgaWYgKGF0bXAgIT0gKGluX2FkZHJfdCkgLTEgfHwgIXN0cmNtcCh2YWx1ZSwgIjI1NS4yNTUuMjU1LjI1NSIpKQogICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9JUEFERFJFU1MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVfY2hhciAqKSAmIGF0bXAsIHNpemVvZihhdG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmF0bXAsIHNpemVvZihhdG1wKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7CkBAIC02OTAwLDkgKzcyNjIsOCBAQAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgdGludCA9IE1BWF9PSURfTEVOOwogICAgICAgICAgICAgaWYgKHNubXBfcGFyc2Vfb2lkKHZhbHVlLCAob2lkICopIGJ1ZiwgJnRpbnQpKSB7Ci0gICAgICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9PQkpFQ1RfSUQsIGJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG9pZCkgKiB0aW50KTsKKyAgICAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX09CSkVDVF9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBzaXplb2Yob2lkKSAqIHRpbnQpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICByZXN1bHQgPSBzbm1wX2Vycm5vOyAgICAvKk1UQ1JJVElDQUxfUkVTT1VSQ0UgKi8KICAgICAgICAgICAgIH0KQEAgLTY5MjAsOCArNzI4MSw4IEBACiAgICAgICAgIH0KIAlpZiAoJ3MnID09IHR5cGUgJiYgZG9faGludCAmJiAhcGFyc2Vfb2N0ZXRfaGludCh0cC0+aGludCwgdmFsdWUsICZoaW50cHRyLCAmaXRtcCkpIHsKICAgICAgICAgICAgIGlmIChfY2hlY2tfcmFuZ2UodHAsIGl0bXAsICZyZXN1bHQsICJWYWx1ZSBkb2VzIG5vdCBtYXRjaCBESVNQTEFZLUhJTlQiKSkgewotICAgICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fT0NURVRfU1RSLCBoaW50cHRyLCBpdG1wKTsKKyAgICAgICAgICAgICAgICBzbm1wX3BkdV9hZGRfdmFyaWFibGUocGR1LCBuYW1lLCBuYW1lX2xlbmd0aCwgQVNOX09DVEVUX1NUUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGludHB0ciwgaXRtcCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBTTk1QX0ZSRUUoaGludHB0cik7CiAgICAgICAgICAgICBoaW50cHRyID0gYnVmOwpAQCAtNjk1OCw3ICs3MzE5LDcgQEAKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlICduJzoKLSAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9OVUxMLCAwLCAwKTsKKyAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9OVUxMLCBOVUxMLCAwKTsKICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlICdiJzoKQEAgLTcwMzMsNyArNzM5NCw3IEBACiAgICAgY2FzZSAnVSc6CiAgICAgICAgIGlmIChyZWFkNjQoJmM2NHRtcCwgdmFsdWUpKQogICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9PUEFRVUVfVTY0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBjNjR0bXAsIHNpemVvZihjNjR0bXApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYzY0dG1wLCBzaXplb2YoYzY0dG1wKSk7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgYnJlYWs7CkBAIC03MDQxLDcgKzc0MDIsNyBAQAogICAgIGNhc2UgJ0knOgogICAgICAgICBpZiAocmVhZDY0KCZjNjR0bXAsIHZhbHVlKSkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fT1BBUVVFX0k2NCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyICopICYgYzY0dG1wLCBzaXplb2YoYzY0dG1wKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmM2NHRtcCwgc2l6ZW9mKGM2NHRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNzA0OSwxNiArNzQxMCwxNSBAQAogICAgIGNhc2UgJ0YnOgogICAgICAgICBpZiAoc3NjYW5mKHZhbHVlLCAiJWYiLCAmZnRtcCkgPT0gMSkKICAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLCBBU05fT1BBUVVFX0ZMT0FULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIgKikgJiBmdG1wLCBzaXplb2YoZnRtcCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZmdG1wLCBzaXplb2YoZnRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSAnRCc6CiAgICAgICAgIGlmIChzc2NhbmYodmFsdWUsICIlbGYiLCAmZHRtcCkgPT0gMSkKLSAgICAgICAgICAgIHNubXBfcGR1X2FkZF92YXJpYWJsZShwZHUsIG5hbWUsIG5hbWVfbGVuZ3RoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTTl9PUEFRVUVfRE9VQkxFLCAodV9jaGFyICopICYgZHRtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplb2YoZHRtcCkpOworICAgICAgICAgICAgc25tcF9wZHVfYWRkX3ZhcmlhYmxlKHBkdSwgbmFtZSwgbmFtZV9sZW5ndGgsIEFTTl9PUEFRVUVfRE9VQkxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkdG1wLCBzaXplb2YoZHRtcCkpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIGJyZWFrOwpAQCAtNzI1OSwxMyArNzYxOSwxNCBAQAogb2lkICAgICAgICAgICAgKgogc25tcF9kdXBsaWNhdGVfb2JqaWQoY29uc3Qgb2lkICogb2JqVG9Db3B5LCBzaXplX3Qgb2JqVG9Db3B5TGVuKQogewotICAgIG9pZCAgICAgICAgICAgICpyZXR1cm5PaWQgPSBOVUxMOworICAgIG9pZCAgICAgICAgICAgICpyZXR1cm5PaWQ7CiAgICAgaWYgKG9ialRvQ29weSAhPSBOVUxMICYmIG9ialRvQ29weUxlbiAhPSAwKSB7CiAgICAgICAgIHJldHVybk9pZCA9IChvaWQgKikgbWFsbG9jKG9ialRvQ29weUxlbiAqIHNpemVvZihvaWQpKTsKICAgICAgICAgaWYgKHJldHVybk9pZCkgewotICAgICAgICAgICAgbWVtbW92ZShyZXR1cm5PaWQsIG9ialRvQ29weSwgb2JqVG9Db3B5TGVuICogc2l6ZW9mKG9pZCkpOworICAgICAgICAgICAgbWVtY3B5KHJldHVybk9pZCwgb2JqVG9Db3B5LCBvYmpUb0NvcHlMZW4gKiBzaXplb2Yob2lkKSk7CiAgICAgICAgIH0KLSAgICB9CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybk9pZCA9IE5VTEw7CiAgICAgcmV0dXJuIHJldHVybk9pZDsKIH0KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2NsaWVudC5jIGIvc25tcGxpYi9zbm1wX2NsaWVudC5jCmluZGV4IDdlZWUzYTEuLmIzNGM5MjAgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcF9jbGllbnQuYworKysgYi9zbm1wbGliL3NubXBfY2xpZW50LmMKQEAgLTk1LDYgKzk1LDggQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL3R5cGVzLmg+CiAKKyNpbmNsdWRlIDxuZXQtc25tcC9hZ2VudC9kc19hZ2VudC5oPgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvZGVmYXVsdF9zdG9yZS5oPgogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9hcGkuaD4KICNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBfY2xpZW50Lmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX3NlY21vZC5oPgpAQCAtMTYxLDYgKzE2Myw3IEBACiB9CiAKIAorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgogc3RhdGljIGludAogc25tcF9zeW5jaF9pbnB1dChpbnQgb3AsCiAgICAgICAgICAgICAgICAgIG5ldHNubXBfc2Vzc2lvbiAqIHNlc3Npb24sCkBAIC0xNzAsMTAgKzE3MywxNCBAQAogICAgIGludCAgICAgICAgICAgICBycHRfdHlwZTsKIAogICAgIGlmIChyZXFpZCAhPSBzdGF0ZS0+cmVxaWQgJiYgcGR1ICYmIHBkdS0+Y29tbWFuZCAhPSBTTk1QX01TR19SRVBPUlQpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInNubXBfc3luY2giLCAiVW5leHBlY3RlZCByZXNwb25zZSAoUmVxSUQ6ICVkLCVkIC0gQ21kICVkKVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaWQsIHN0YXRlLT5yZXFpZCwgcGR1LT5jb21tYW5kICkpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBzdGF0ZS0+d2FpdGluZyA9IDA7CisgICAgREVCVUdNU0dUTCgoInNubXBfc3luY2giLCAiUmVzcG9uc2UgKFJlcUlEOiAlZCAtIENtZCAlZClcbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxaWQsIChwZHUgPyBwZHUtPmNvbW1hbmQgOiAtMSkpKTsKIAogICAgIGlmIChvcCA9PSBORVRTTk1QX0NBTExCQUNLX09QX1JFQ0VJVkVEX01FU1NBR0UgJiYgcGR1KSB7CiAgICAgICAgIGlmIChwZHUtPmNvbW1hbmQgPT0gU05NUF9NU0dfUkVQT1JUKSB7CkBAIC0yMzYsMTEgKzI0MywxMSBAQAogICAgICAgICByZXR1cm4gMTsKIAogICAgIG1lbW1vdmUobmV3dmFyLCB2YXIsIHNpemVvZihuZXRzbm1wX3ZhcmlhYmxlX2xpc3QpKTsKLSAgICBuZXd2YXItPm5leHRfdmFyaWFibGUgPSAwOwotICAgIG5ld3Zhci0+bmFtZSA9IDA7Ci0gICAgbmV3dmFyLT52YWwuc3RyaW5nID0gMDsKLSAgICBuZXd2YXItPmRhdGEgPSAwOwotICAgIG5ld3Zhci0+ZGF0YUZyZWVIb29rID0gMDsKKyAgICBuZXd2YXItPm5leHRfdmFyaWFibGUgPSBOVUxMOworICAgIG5ld3Zhci0+bmFtZSA9IE5VTEw7CisgICAgbmV3dmFyLT52YWwuc3RyaW5nID0gTlVMTDsKKyAgICBuZXd2YXItPmRhdGEgPSBOVUxMOworICAgIG5ld3Zhci0+ZGF0YUZyZWVIb29rID0gTlVMTDsKICAgICBuZXd2YXItPmluZGV4ID0gMDsKIAogICAgIC8qCkBAIC0yNjUsOSArMjcyLDEzIEBACiAgICAgICAgICAgICBtZW1tb3ZlKG5ld3Zhci0+dmFsLnN0cmluZywgdmFyLT52YWwuc3RyaW5nLCB2YXItPnZhbF9sZW4pOwogICAgICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAvKiBmaXggdGhlIHBvaW50ZXIgdG8gbmV3IGxvY2FsIHN0b3JlICovCiAgICAgICAgICAgICBuZXd2YXItPnZhbC5zdHJpbmcgPSBuZXd2YXItPmJ1ZjsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBubyBuZWVkIGZvciBhIG1lbW1vdmUsIHNpbmNlIHdlIGNvcGllZCB0aGUgd2hvbGUgdmFyCisgICAgICAgICAgICAgKiBzdHJ1Y3QgKGFuZCB0aHVzIHZhci0+YnVmKSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoaXMgZnVuY3Rpb24uCisgICAgICAgICAgICAgKi8KICAgICAgICAgfQogICAgIH0gZWxzZSB7Ci0gICAgICAgIG5ld3Zhci0+dmFsLnN0cmluZyA9IDA7CisgICAgICAgIG5ld3Zhci0+dmFsLnN0cmluZyA9IE5VTEw7CiAgICAgICAgIG5ld3Zhci0+dmFsX2xlbiA9IDA7CiAgICAgfQogCkBAIC0yODEsOSArMjkyLDkgQEAKICAqIFJldHVybnMgMCBpZiBzdWNjZXNzZnVsLCAxIGlmIG1lbW9yeSBhbGxvY2F0aW9uIGZhaWxzLgogICovCiBpbnQKLXNubXBfY2xvbmVfbWVtKHZvaWQgKipkc3RQdHIsIHZvaWQgKnNyY1B0ciwgdW5zaWduZWQgbGVuKQorc25tcF9jbG9uZV9tZW0odm9pZCAqKmRzdFB0ciwgY29uc3Qgdm9pZCAqc3JjUHRyLCB1bnNpZ25lZCBsZW4pCiB7Ci0gICAgKmRzdFB0ciA9IDA7CisgICAgKmRzdFB0ciA9IE5VTEw7CiAgICAgaWYgKHNyY1B0cikgewogICAgICAgICAqZHN0UHRyID0gbWFsbG9jKGxlbiArIDEpOwogICAgICAgICBpZiAoISpkc3RQdHIpIHsKQEAgLTM0MywyMCArMzU0LDIwIEBACiAKICAgICBuZXdwZHUgPSAobmV0c25tcF9wZHUgKikgbWFsbG9jKHNpemVvZihuZXRzbm1wX3BkdSkpOwogICAgIGlmICghbmV3cGR1KQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgbWVtbW92ZShuZXdwZHUsIHBkdSwgc2l6ZW9mKG5ldHNubXBfcGR1KSk7CiAKICAgICAvKgogICAgICAqIHJlc2V0IGNvcGllZCBwb2ludGVycyBpZiBjb3B5IGZhaWxzIAogICAgICAqLwotICAgIG5ld3BkdS0+dmFyaWFibGVzID0gMDsKLSAgICBuZXdwZHUtPmVudGVycHJpc2UgPSAwOwotICAgIG5ld3BkdS0+Y29tbXVuaXR5ID0gMDsKLSAgICBuZXdwZHUtPnNlY3VyaXR5RW5naW5lSUQgPSAwOwotICAgIG5ld3BkdS0+c2VjdXJpdHlOYW1lID0gMDsKLSAgICBuZXdwZHUtPmNvbnRleHRFbmdpbmVJRCA9IDA7Ci0gICAgbmV3cGR1LT5jb250ZXh0TmFtZSA9IDA7Ci0gICAgbmV3cGR1LT50cmFuc3BvcnRfZGF0YSA9IDA7CisgICAgbmV3cGR1LT52YXJpYWJsZXMgPSBOVUxMOworICAgIG5ld3BkdS0+ZW50ZXJwcmlzZSA9IE5VTEw7CisgICAgbmV3cGR1LT5jb21tdW5pdHkgPSBOVUxMOworICAgIG5ld3BkdS0+c2VjdXJpdHlFbmdpbmVJRCA9IE5VTEw7CisgICAgbmV3cGR1LT5zZWN1cml0eU5hbWUgPSBOVUxMOworICAgIG5ld3BkdS0+Y29udGV4dEVuZ2luZUlEID0gTlVMTDsKKyAgICBuZXdwZHUtPmNvbnRleHROYW1lID0gTlVMTDsKKyAgICBuZXdwZHUtPnRyYW5zcG9ydF9kYXRhID0gTlVMTDsKIAogICAgIC8qCiAgICAgICogY29weSBidWZmZXJzIGluZGl2aWR1YWxseS4gSWYgYW55IGNvcHkgZmFpbHMsIGFsbCBhcmUgZnJlZWQuIApAQCAtMzc3LDcgKzM4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKSkgewogICAgICAgICBzbm1wX2ZyZWVfcGR1KG5ld3BkdSk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBpZiAocGR1ICE9IE5VTEwgJiYgcGR1LT5zZWN1cml0eVN0YXRlUmVmICYmCkBAIC0zOTIsNiArNDAzLDcgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQorCiAgICAgaWYgKChzcHRyID0gZmluZF9zZWNfbW9kKG5ld3BkdS0+c2VjdXJpdHlNb2RlbCkpICE9IE5VTEwgJiYKICAgICAgICAgc3B0ci0+cGR1X2Nsb25lICE9IE5VTEwpIHsKICAgICAgICAgLyoKQEAgLTQzMywxMyArNDQ1LDEzIEBACiAgICAgICAgICAgICBpZiAobmV3dmFyKQogICAgICAgICAgICAgICAgIGZyZWUoKGNoYXIgKikgbmV3dmFyKTsKICAgICAgICAgICAgIHNubXBfZnJlZV92YXJiaW5kKG5ld2hlYWQpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogCiAgICAgICAgIC8qCiAgICAgICAgICAqIGFkZCBjbG9uZWQgdmFyaWFibGUgdG8gbmV3IGxpc3QgIAogICAgICAgICAgKi8KLSAgICAgICAgaWYgKDAgPT0gbmV3aGVhZCkKKyAgICAgICAgaWYgKE5VTEwgPT0gbmV3aGVhZCkKICAgICAgICAgICAgIG5ld2hlYWQgPSBuZXd2YXI7CiAgICAgICAgIGlmIChvbGR2YXIpCiAgICAgICAgICAgICBvbGR2YXItPm5leHRfdmFyaWFibGUgPSBuZXd2YXI7CkBAIC00ODQsNyArNDk2LDcgQEAKICAgICBpbnQgICAgICAgICAgICAgZHJvcF9pZHg7CiAKICAgICBpZiAoIW5ld3BkdSkKLSAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgLyogd2hlcmUgaXMgUERVIHRvIGNvcHkgdG8gPyAqLworICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAvKiB3aGVyZSBpcyBQRFUgdG8gY29weSB0byA/ICovCiAKICAgICBpZiAoZHJvcF9lcnIpCiAgICAgICAgIGRyb3BfaWR4ID0gcGR1LT5lcnJpbmRleCAtIHNraXBfY291bnQ7CkBAIC02MTMsMTggKzYyNSwxOCBAQAogCiAgICAgaWYgKChwZHUtPmNvbW1hbmQgIT0gU05NUF9NU0dfUkVTUE9OU0UpCiAgICAgICAgIHx8IChwZHUtPmVycnN0YXQgPT0gU05NUF9FUlJfTk9FUlJPUikKLSAgICAgICAgfHwgKDAgPT0gcGR1LT52YXJpYWJsZXMpCisgICAgICAgIHx8IChOVUxMID09IHBkdS0+dmFyaWFibGVzKQogICAgICAgICB8fCAocGR1LT5lcnJpbmRleCA+IHNubXBfdmFyYmluZF9sZW4ocGR1KSkKICAgICAgICAgfHwgKHBkdS0+ZXJyaW5kZXggPD0gMCkpIHsKLSAgICAgICAgcmV0dXJuIDA7ICAgICAgICAgICAgICAgLyogcHJlLWNvbmRpdGlvbiB0ZXN0cyBmYWlsICovCisgICAgICAgIHJldHVybiBOVUxMOyAgICAgICAgICAgIC8qIHByZS1jb25kaXRpb24gdGVzdHMgZmFpbCAqLwogICAgIH0KIAogICAgIG5ld3BkdSA9IF9jbG9uZV9wZHUocGR1LCAxKTsgICAgICAgIC8qIGNvcGllcyBhbGwgZXhjZXB0IGVycm9yZWQgdmFyaWFibGUgKi8KICAgICBpZiAoIW5ld3BkdSkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICghbmV3cGR1LT52YXJpYWJsZXMpIHsKICAgICAgICAgc25tcF9mcmVlX3BkdShuZXdwZHUpOwotICAgICAgICByZXR1cm4gMDsgICAgICAgICAgICAgICAvKiBubyB2YXJpYWJsZXMuICJzaG91bGQgbm90IGhhcHBlbiIgKi8KKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgLyogbm8gdmFyaWFibGVzLiAic2hvdWxkIG5vdCBoYXBwZW4iICovCiAgICAgfQogICAgIG5ld3BkdS0+Y29tbWFuZCA9IGNvbW1hbmQ7CiAgICAgbmV3cGR1LT5yZXFpZCA9IHNubXBfZ2V0X25leHRfcmVxaWQoKTsKQEAgLTcxNSwxMCArNzI3LDggQEAKIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyKG5ldHNubXBfdmFyaWFibGVfbGlzdCAqIG5ld3ZhciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVfY2hhciB0eXBlLCBsb25nIHZhbCkKIHsKLSAgICBjb25zdCBsb25nIHYgPSB2YWw7CiAgICAgbmV3dmFyLT50eXBlID0gdHlwZTsKLSAgICByZXR1cm4gc25tcF9zZXRfdmFyX3ZhbHVlKG5ld3ZhciwgJnYsIHNpemVvZihsb25nKSk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHNubXBfc2V0X3Zhcl92YWx1ZShuZXd2YXIsICZ2YWwsIHNpemVvZihsb25nKSk7CiB9CiAKIGludApAQCAtNzgzLDcgKzc5Myw3IEBACiAgICAgaWYgKHZhcnMtPnZhbC5zdHJpbmcgJiYgdmFycy0+dmFsLnN0cmluZyAhPSB2YXJzLT5idWYpIHsKICAgICAgICAgZnJlZSh2YXJzLT52YWwuc3RyaW5nKTsKICAgICB9Ci0gICAgdmFycy0+dmFsLnN0cmluZyA9IDA7CisgICAgdmFycy0+dmFsLnN0cmluZyA9IE5VTEw7CiAgICAgdmFycy0+dmFsX2xlbiA9IDA7CiAKICAgICBpZiAodmFsdWUgPT0gTlVMTCAmJiBsZW4gPiAwKSB7CkBAIC03OTQsNyArODA0LDcgQEAKICAgICAvKgogICAgICAqIHVzZSBidWlsdC1pbiBzdG9yYWdlIGZvciBzbWFsbGVyIHZhbHVlcyAKICAgICAgKi8KLSAgICBpZiAobGVuIDw9IChzaXplb2YodmFycy0+YnVmKSAtIDEpKSB7CisgICAgaWYgKGxlbiA8PSBzaXplb2YodmFycy0+YnVmKSkgewogICAgICAgICB2YXJzLT52YWwuc3RyaW5nID0gKHVfY2hhciAqKSB2YXJzLT5idWY7CiAgICAgICAgIGxhcmdldmFsID0gMDsKICAgICB9CkBAIC04MzMsNyArODQzLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCi0jaWYgZGVmaW5lZChTSVpFT0ZfTE9OR19MT05HKSAmJiAoU0laRU9GX0xPTkcgIT0gU0laRU9GX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9MT05HX0xPTkcgIT0gU0laRU9GX0lOVE1BWF9UKQorI2lmIGRlZmluZWQoU0laRU9GX0xPTkdfTE9ORykgJiYgKFNJWkVPRl9MT05HICE9IFNJWkVPRl9MT05HX0xPTkcpCisjaWYgIWRlZmluZWQoU0laRU9GX0lOVE1BWF9UKSB8fCAoU0laRU9GX0xPTkdfTE9ORyAhPSBTSVpFT0ZfSU5UTUFYX1QpCiAgICAgICAgIGVsc2UgaWYgKHZhcnMtPnZhbF9sZW4gPT0gc2l6ZW9mKGxvbmcgbG9uZykpewogICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgbG9uZyBsb25nICAgKnZhbF91bGxvbmcKICAgICAgICAgICAgICAgICA9IChjb25zdCB1bnNpZ25lZCBsb25nIGxvbmcgKikgdmFsdWU7CkBAIC04NDQsNyArODU1LDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogI2VuZGlmCi0jaWYgU0laRU9GX0xPTkcgIT0gU0laRU9GX0lOVE1BWF9UCisjZW5kaWYKKyNpZiBkZWZpbmVkKFNJWkVPRl9JTlRNQVhfVCkgJiYgKFNJWkVPRl9MT05HICE9IFNJWkVPRl9JTlRNQVhfVCkKICAgICAgICAgZWxzZSBpZiAodmFycy0+dmFsX2xlbiA9PSBzaXplb2YoaW50bWF4X3QpKXsKICAgICAgICAgICAgIGNvbnN0IHVpbnRtYXhfdCAqdmFsX3VpbnRtYXhfdAogICAgICAgICAgICAgICAgID0gKGNvbnN0IHVpbnRtYXhfdCAqKSB2YWx1ZTsKQEAgLTg3NCw3ICs4ODYsNyBAQAogICAgICAgICAgICAgICAgICAgICA9IChjb25zdCBjaGFyICopIHZhbHVlOwogICAgICAgICAgICAgICAgICoodmFycy0+dmFsLmludGVnZXIpID0gKGxvbmcpICp2YWxfY2hhcjsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgdV9jaGFyICAgICp2YWxfdWNoYXIgCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVfY2hhciAgICAqdmFsX3VjaGFyCiAgICAgICAgICAgICAgICAgICAgID0gKGNvbnN0IHVfY2hhciAqKSB2YWx1ZTsKICAgICAgICAgICAgICAgICAqKHZhcnMtPnZhbC5pbnRlZ2VyKSA9ICh1bnNpZ25lZCBsb25nKSAqdmFsX3VjaGFyOwogICAgICAgICAgICAgfQpAQCAtOTExLDcgKzkyMyw3IEBACiAgICAgY2FzZSBBU05fQklUX1NUUjoKICAgICBjYXNlIEFTTl9PUEFRVUU6CiAgICAgY2FzZSBBU05fTlNBUDoKLSAgICAgICAgaWYgKGxhcmdldmFsKSB7CisgICAgICAgIGlmICh2YXJzLT52YWxfbGVuID49IHNpemVvZih2YXJzLT5idWYpKSB7CiAgICAgICAgICAgICB2YXJzLT52YWwuc3RyaW5nID0gKHVfY2hhciAqKSBtYWxsb2ModmFycy0+dmFsX2xlbiArIDEpOwogICAgICAgICB9CiAgICAgICAgIGlmICh2YXJzLT52YWwuc3RyaW5nID09IE5VTEwpIHsKQEAgLTEwMzcsNyArMTA0OSw3IEBACiAgICAgICAgIHNubXBfc2VsZWN0X2luZm8oJm51bWZkcywgJmZkc2V0LCB0dnAsICZibG9jayk7CiAgICAgICAgIGlmIChibG9jayA9PSAxKQogICAgICAgICAgICAgdHZwID0gTlVMTDsgICAgICAgICAvKiBibG9jayB3aXRob3V0IHRpbWVvdXQgKi8KLSAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmZmRzZXQsIDAsIDAsIHR2cCk7CisgICAgICAgIGNvdW50ID0gc2VsZWN0KG51bWZkcywgJmZkc2V0LCBOVUxMLCBOVUxMLCB0dnApOwogICAgICAgICBpZiAoY291bnQgPiAwKSB7CiAgICAgICAgICAgICBzbm1wX3JlYWQoJmZkc2V0KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTEwNzAsNyArMTA4Miw3IEBACiAKICAgICAgICAgaWYgKCBzcy0+ZmxhZ3MgJiBTTk1QX0ZMQUdTX1JFU1BfQ0FMTEJBQ0sgKSB7CiAgICAgICAgICAgICB2b2lkICgqY2IpKHZvaWQpOwotICAgICAgICAgICAgY2IgPSBzcy0+bXl2b2lkOworICAgICAgICAgICAgY2IgPSAodm9pZCAoKikodm9pZCkpKHNzLT5teXZvaWQpOwogICAgICAgICAgICAgY2IoKTsgICAgICAgIC8qIFVzZWQgdG8gaW52b2tlICduZXRzbm1wX2NoZWNrX291dHN0YW5kaW5nX2FnZW50X3JlcXVlc3RzKCk7JwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIGludGVybmFsIEFnZW50WCBxdWVyaWVzLiAgKi8KICAgICAgICAgfQpAQCAtMTEyOCw3ICsxMTQwLDcgQEAKICAgICAgICAgc25tcF9zZXNzX3NlbGVjdF9pbmZvKHNlc3NwLCAmbnVtZmRzLCAmZmRzZXQsIHR2cCwgJmJsb2NrKTsKICAgICAgICAgaWYgKGJsb2NrID09IDEpCiAgICAgICAgICAgICB0dnAgPSBOVUxMOyAgICAgICAgIC8qIGJsb2NrIHdpdGhvdXQgdGltZW91dCAqLwotICAgICAgICBjb3VudCA9IHNlbGVjdChudW1mZHMsICZmZHNldCwgMCwgMCwgdHZwKTsKKyAgICAgICAgY291bnQgPSBzZWxlY3QobnVtZmRzLCAmZmRzZXQsIE5VTEwsIE5VTEwsIHR2cCk7CiAgICAgICAgIGlmIChjb3VudCA+IDApIHsKICAgICAgICAgICAgIHNubXBfc2Vzc19yZWFkKHNlc3NwLCAmZmRzZXQpOwogICAgICAgICB9IGVsc2UKQEAgLTEyMDUsMTUgKzEyMTcsNDQgQEAKICAqICBvdmVyIHRoZSBzcGVjaWZpZWQgU05NUCBzZXNzaW9uLgogICoKICAqLworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcF9kZWJ1Zy5oPgogc3RhdGljIG5ldHNubXBfc2Vzc2lvbiAqX2RlZl9xdWVyeV9zZXNzaW9uID0gTlVMTDsKIHZvaWQKIG5ldHNubXBfcXVlcnlfc2V0X2RlZmF1bHRfc2Vzc2lvbiggbmV0c25tcF9zZXNzaW9uICpzZXNzKSB7CisgICAgREVCVUdNU0dUTCgoImlxdWVyeSIsICJzZXQgZGVmYXVsdCBzZXNzaW9uICVwXG4iLCBzZXNzKSk7CiAgICAgX2RlZl9xdWVyeV9zZXNzaW9uID0gc2VzczsKIH0KIAorLyoqCisgKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24uCisgKi8KK25ldHNubXBfc2Vzc2lvbiAqCituZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb25fdW5jaGVja2VkKCB2b2lkICkgeworICAgIERFQlVHTVNHVEwoKCJpcXVlcnkiLCAiZ2V0IGRlZmF1bHQgc2Vzc2lvbiAlcFxuIiwgX2RlZl9xdWVyeV9zZXNzaW9uKSk7CisgICAgcmV0dXJuIF9kZWZfcXVlcnlfc2Vzc2lvbjsKK30KKworLyoqCisgKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBkZWZhdWx0IGludGVybmFsIHF1ZXJ5IHNlc3Npb24gYW5kIGxvZyBhCisgKiB3YXJuaW5nIG1lc3NhZ2Ugb25jZSBpZiB0aGlzIHNlc3Npb24gZG9lcyBub3QgZXhpc3QuCisgKi8KIG5ldHNubXBfc2Vzc2lvbiAqCiBuZXRzbm1wX3F1ZXJ5X2dldF9kZWZhdWx0X3Nlc3Npb24oIHZvaWQgKSB7Ci0gICAgcmV0dXJuIF9kZWZfcXVlcnlfc2Vzc2lvbjsKKyAgICBzdGF0aWMgaW50IHdhcm5pbmdfbG9nZ2VkID0gMDsKKworICAgIGlmICghIF9kZWZfcXVlcnlfc2Vzc2lvbiAmJiAhIHdhcm5pbmdfbG9nZ2VkKSB7CisgICAgICAgIGlmICghIG5ldHNubXBfZHNfZ2V0X3N0cmluZyhORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkVUU05NUF9EU19BR0VOVF9JTlRFUk5BTF9TRUNOQU1FKSkgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAiaXF1ZXJ5U2VjTmFtZSBoYXMgbm90IGJlZW4gY29uZmlndXJlZCAtIGludGVybmFsIHF1ZXJpZXMgd2lsbCBmYWlsXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLAorICAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQgc2Vzc2lvbiBpcyBub3QgYXZhaWxhYmxlIC0gaW50ZXJuYWwgcXVlcmllcyB3aWxsIGZhaWxcbiIpOworICAgICAgICB9CisgICAgICAgIHdhcm5pbmdfbG9nZ2VkID0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uX3VuY2hlY2tlZCgpOwogfQogCiAKQEAgLTEyMjksNiArMTI3MCw3IEBACiAgICAgbmV0c25tcF92YXJpYWJsZV9saXN0ICp2YjEsICp2YjIsICp2dG1wOwogICAgIGludCByZXQ7CiAKKyAgICBERUJVR01TR1RMKCgiaXF1ZXJ5IiwgInF1ZXJ5IG9uIHNlc3Npb24gJXBcbiIsIHNlc3Npb24pKTsKICAgICAvKgogICAgICAqIENsb25lIHRoZSB2YXJiaW5kIGxpc3QgaW50byB0aGUgcmVxdWVzdCBQRFUuLi4KICAgICAgKi8KQEAgLTEyNDMsNiArMTI4NSw3IEBACiAgICAgICAgIHNubXBfZnJlZV9wZHUocGR1KTsKICAgICAgICAgcmV0dXJuIFNOTVBfRVJSX0dFTkVSUjsKICAgICB9CisgICAgREVCVUdNU0dUTCgoImlxdWVyeSIsICJxdWVyeSByZXR1cm5lZCAlZFxuIiwgcmV0KSk7CiAKICAgICAvKgogICAgICAqIC4uLi50aGVuIGNvcHkgdGhlIHJlc3VsdHMgYmFjayBpbnRvIHRoZQpAQCAtMTI2Myw2ICsxMzA2LDcgQEAKICAgICAgICAgICAgIHJldCA9IHJlc3BvbnNlLT5lcnJzdGF0OwogICAgICAgICAgICAgaWYgKHJlcXVlc3QgIT0gU05NUF9NU0dfU0VUICYmCiAgICAgICAgICAgICAgICAgcmVzcG9uc2UtPmVycmluZGV4ICE9IDApIHsKKyAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgiaXF1ZXJ5IiwgInJldHJ5aW5nIHF1ZXJ5ICglZCwgJWxkKVxuIiwgcmV0LCByZXNwb25zZS0+ZXJyaW5kZXgpKTsKICAgICAgICAgICAgICAgICBwZHUgPSBzbm1wX2ZpeF9wZHUoIHJlc3BvbnNlLCByZXF1ZXN0ICk7CiAgICAgICAgICAgICAgICAgc25tcF9mcmVlX3BkdSggcmVzcG9uc2UgKTsKICAgICAgICAgICAgICAgICByZXNwb25zZSA9IE5VTEw7CkBAIC0xMjc4LDEzICsxMzIyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHZ0bXAgPSB2YjItPm5leHRfdmFyaWFibGU7Ci0gICAgICAgICAgICAgICAgLyogZnJlZSBvbGQgZGF0YSBiZWZvcmUgb3ZlcndyaXRpbmcgKi8KLSAgICAgICAgICAgICAgICBpZiAodmIyLT52YWwuc3RyaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh2YjItPnZhbC5zdHJpbmcgIT0gJnZiMi0+YnVmWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmcmVlKHZiMi0+dmFsLnN0cmluZyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB2YjItPnZhbC5zdHJpbmcgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHNubXBfZnJlZV92YXJfaW50ZXJuYWxzKCB2YjIgKTsKICAgICAgICAgICAgICAgICBzbm1wX2Nsb25lX3ZhciggdmIxLCB2YjIgKTsKICAgICAgICAgICAgICAgICB2YjItPm5leHRfdmFyaWFibGUgPSB2dG1wOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2RlYnVnLmMgYi9zbm1wbGliL3NubXBfZGVidWcuYwppbmRleCBkMWI0NTM4Li5jYjNiYzhjIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfZGVidWcuYworKysgYi9zbm1wbGliL3NubXBfZGVidWcuYwpAQCAtMSw1ICsxLDYgQEAKICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KIAorI2luY2x1ZGUgPGxpbWl0cy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaWYgSEFWRV9TVERMSUJfSAogI2luY2x1ZGUgPHN0ZGxpYi5oPgpAQCAtMTMsMTEgKzE0LDcgQEAKICNpZiBIQVZFX05FVElORVRfSU5fSAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNlbmRpZgotI2lmIEhBVkVfU1REQVJHX0gKICNpbmNsdWRlIDxzdGRhcmcuaD4KLSNlbHNlCi0jaW5jbHVkZSA8dmFyYXJncy5oPgotI2VuZGlmCiAjaWYgSEFWRV9XSU5TT0NLX0gKICNpbmNsdWRlIDx3aW5zb2NrLmg+CiAjZW5kaWYKQEAgLTQ0LDQxICs0MSw0MCBAQAogCiBzdGF0aWMgaW50ICAgICAgZG9kZWJ1ZyA9IE5FVFNOTVBfQUxXQVlTX0RFQlVHOwogaW50ICAgICAgICAgICAgIGRlYnVnX251bV90b2tlbnMgPSAwOwotaW50ICAgICAgICAgICAgIGRlYnVnX251bV9leGNsdWRlZCA9IDA7CiBzdGF0aWMgaW50ICAgICAgZGVidWdfcHJpbnRfZXZlcnl0aGluZyA9IDA7CiAKIG5ldHNubXBfdG9rZW5fZGVzY3IgZGJnX3Rva2Vuc1tNQVhfREVCVUdfVE9LRU5TXTsKIAotI2lmZGVmIE5FVFNOTVBfREVCVUdfU1RBVFMKLW5ldHNubXBfY29udGFpbmVyICAqZGJnX3N0YXRzID0gTlVMTDsKLSBzdGF0aWMgaW50IF9kZWJ1Z19jbXAoIGNvbnN0IHZvaWQgKmxocywgY29uc3Qgdm9pZCAqcmhzICk7Ci0gc3RhdGljIGludCBfc2F2ZV9kZWJ1Z19zdGF0KG5ldHNubXBfdG9rZW5fZGVzY3IgKnRiLCB2b2lkICp0eXBlKTsKLSBzdGF0aWMgaW50IF9kZWJ1Z19zdGF0c19jYWxsYmFjayhpbnQgbWFqb3JJRCwgaW50IG1pbm9ySUQsCi0gICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLCB2b2lkICpjbGllbnRhcmcpOwotI2VuZGlmCi0KIC8qCi0gKiBpbmRlbnQgZGVidWdnaW5nOiAgcHJvdmlkZSBhIHNwYWNlIHBhZGRlZCBzZWN0aW9uIHRvIHJldHVybiBhbiBpbmRlbnQgZm9yIAorICogTnVtYmVyIG9mIHNwYWNlcyB0byBpbmRlbnQgZGVidWcgb3V0cHVyLiBWYWxpZCByYW5nZSBpcyBbMCxJTlRfTUFYXQogICovCi1zdGF0aWMgaW50ICAgICAgZGVidWdpbmRlbnQgPSAwOwotI2RlZmluZSBJTkRFTlRNQVggODAKLXN0YXRpYyBjaGFyICAgICBkZWJ1Z2luZGVudGNoYXJzW10gPQotICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI7CitzdGF0aWMgaW50IGRlYnVnaW5kZW50ID0gMDsKIAotY2hhciAgICAgICAgICAgKgoraW50CitkZWJ1Z19pbmRlbnRfZ2V0KHZvaWQpCit7CisgICAgcmV0dXJuIGRlYnVnaW5kZW50OworfQorCitjb25zdCBjaGFyKgogZGVidWdfaW5kZW50KHZvaWQpCiB7Ci0gICAgcmV0dXJuIGRlYnVnaW5kZW50Y2hhcnM7CisjZGVmaW5lIFNQQUNFUyAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgXAorICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisgICAgaWYgKChzaXplb2YoU1BBQ0VTKSAtIDEpIDwgKHVuc2lnbmVkIGludClkZWJ1Z2luZGVudCkgeworICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiVG9vIGRlZXAgaW5kZW50YXRpb24gZm9yIGRlYnVnX2luZGVudC4gIgorICAgICAgICAgICAgICAgICAiQ29uc2lkZXIgdXNpbmcgXCIlJSpzXCIsIGRlYnVnX2luZGVudF9nZXQoKSwgXCJcIiBpbnN0ZWFkLiIpOworICAgICAgICByZXR1cm4gU1BBQ0VTOworICAgIH0KKyAgICByZXR1cm4gU1BBQ0VTICsgc2l6ZW9mKFNQQUNFUykgLSAxIC0gZGVidWdpbmRlbnQ7CisjdW5kZWYgU1BBQ0VTCiB9CiAKIHZvaWQKIGRlYnVnX2luZGVudF9hZGQoaW50IGFtb3VudCkKIHsKLSAgICBpZiAoZGVidWdpbmRlbnQgKyBhbW91bnQgPj0gMCAmJiBkZWJ1Z2luZGVudCArIGFtb3VudCA8IDgwKSB7Ci0gICAgICAgIGRlYnVnaW5kZW50Y2hhcnNbZGVidWdpbmRlbnRdID0gJyAnOwotICAgICAgICBkZWJ1Z2luZGVudCArPSBhbW91bnQ7Ci0gICAgICAgIGRlYnVnaW5kZW50Y2hhcnNbZGVidWdpbmRlbnRdID0gJ1wwJzsKLSAgICB9CisgICAgaWYgKC1kZWJ1Z2luZGVudCA8PSBhbW91bnQgJiYgYW1vdW50IDw9IElOVF9NQVggLSBkZWJ1Z2luZGVudCkKKwlkZWJ1Z2luZGVudCArPSBhbW91bnQ7CiB9CiAKIHZvaWQKQEAgLTk2LDM1ICs5MiwxMiBAQAogdm9pZAogc25tcF9kZWJ1Z19pbml0KHZvaWQpCiB7Ci0gICAgZGVidWdpbmRlbnRjaGFyc1swXSA9ICdcMCc7IC8qIHplcm8gb3V0IHRoZSBkZWJ1Z2dpbmcgaW5kZW50IGFycmF5LiAqLwotICAgIC8qCi0gICAgICogSG1tbS4uLi4KLSAgICAgKiAgIHRoaXMgImluaXQiIHJvdXRpbmUgc2VlbXMgdG8gYmUgY2FsbGVkICphZnRlciogcHJvY2Vzc2luZwotICAgICAqICAgdGhlIGNvbW1hbmQgbGluZSBvcHRpb25zLiAgIFNvIHdlIGNhbid0IGNsZWFyIHRoZSBkZWJ1ZwotICAgICAqICAgdG9rZW4gYXJyYXkgaGVyZSwgYW5kIHdpbGwganVzdCBoYXZlIHRvIHJlbHkgb24gaXQgYmVpbmcKLSAgICAgKiAgIGluaXRpYWxpc2VkIHRvIDAgYXV0b21hdGljYWxseS4KLSAgICAgKiBTbyBtdWNoIGZvciB0cnlpbmcgdG8gcHJvZ3JhbSByZXNwb25zaWJseSA6LSkKLSAgICAgKi8KLS8qICBtZW1zZXQoZGJnX3Rva2VucywgMCwgTUFYX0RFQlVHX1RPS0VOUypzaXplb2Yoc3RydWN0IHRva2VuX2RzY3IpKTsgICovCiAgICAgcmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcigic25tcCIsICJkb0RlYnVnZ2luZyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z19jb25maWdfdHVybl9vbl9kZWJ1Z2dpbmcsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKDF8MCkiKTsKICAgICByZWdpc3Rlcl9wcmVuZXRzbm1wX21pYl9oYW5kbGVyKCJzbm1wIiwgImRlYnVnVG9rZW5zIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2NvbmZpZ19yZWdpc3Rlcl90b2tlbnMsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidG9rZW5bLHRva2VuLi4uXSIpOwotCi0jaWZkZWYgTkVUU05NUF9ERUJVR19TVEFUUwotICAgIC8qCi0gICAgICogZGVidWcgc3RhdHMKLSAgICAgKi8KLSAgICBkYmdfc3RhdHMgPSBuZXRzbm1wX2NvbnRhaW5lcl9maW5kKCJkZWJ1Z19leGNsdWRlOnRhYmxlX2NvbnRhaW5lciIpOwotICAgIGlmIChOVUxMICE9IGRiZ19zdGF0cykgewotICAgICAgICBkYmdfc3RhdHMtPmNvbXBhcmUgPSBfZGVidWdfY21wOwotICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX2NhbGxiYWNrKFNOTVBfQ0FMTEJBQ0tfTElCUkFSWSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTTk1QX0NBTExCQUNLX1NUT1JFX0RBVEEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2RlYnVnX3N0YXRzX2NhbGxiYWNrLCBkYmdfc3RhdHMsIDEwMjQpOwotICAgIH0KLSNlbmRpZgogfQogCiB2b2lkCkBAIC0xMzQsNyArMTA3LDcgQEAKICAgICBjaGFyICAgICAgICAgICAqc3QgPSBOVUxMOwogICAgIGludCAgICAgICAgICAgICBzdGF0dXM7CiAKLSAgICBpZiAodG9rZW5zID09IDAgfHwgKnRva2VucyA9PSAwKQorICAgIGlmICh0b2tlbnMgPT0gTlVMTCB8fCAqdG9rZW5zID09IDApCiAgICAgICAgIHJldHVybjsKIAogICAgIG5ld3AgPSBzdHJkdXAodG9rZW5zKTsgICAgICAvKiBzdHJ0b2tfciBtZXNzZXMgaXQgdXAgKi8KQEAgLTI1NiwxMyArMjI5LDggQEAKICAgICBpZiAoZGVidWdfbnVtX3Rva2VucyA9PSAwIHx8IGRlYnVnX3ByaW50X2V2ZXJ5dGhpbmcpIHsKICAgICAgICAgLyoKICAgICAgICAgICogbm8gdG9rZW5zIHNwZWNpZmllZCwgcHJpbnQgZXZlcnl0aGluZyAKLSAgICAgICAgICogKHVubGVzcyBzb21ldGhpbmcgbWlnaHQgYmUgZXhjbHVkZWQpCiAgICAgICAgICAqLwotICAgICAgICBpZiAoZGVidWdfbnVtX2V4Y2x1ZGVkKSB7Ci0gICAgICAgICAgICByYyA9IFNOTVBFUlJfU1VDQ0VTUzsgLyogISBmb3VuZCA9IHN1Y2Nlc3MgKi8KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKICAgICB9CiAgICAgZWxzZQogICAgICAgICByYyA9IFNOTVBFUlJfR0VORVJSOyAvKiAhIGZvdW5kID0gZXJyICovCkBAIC0yNzksNTMgKzI0NywxOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsgLyogZXhjbHVkZWQgKi8KICAgICAgICAgfQogICAgIH0KLQotI2lmZGVmIE5FVFNOTVBfREVCVUdfU1RBVFMKLSAgICBpZiAoKFNOTVBFUlJfU1VDQ0VTUyA9PSByYykgJiYgKE5VTEwgIT0gZGJnX3N0YXRzKSkgewotICAgICAgICBuZXRzbm1wX3Rva2VuX2Rlc2NyIHRkLCAqZm91bmQ7Ci0KLSAgICAgICAgdGQudG9rZW5fbmFtZSA9IHRva2VuOwotICAgICAgICBmb3VuZCA9IENPTlRBSU5FUl9GSU5EKGRiZ19zdGF0cywgJnRkKTsKLSAgICAgICAgaWYgKE5VTEwgPT0gZm91bmQpIHsKLSAgICAgICAgICAgIGZvdW5kID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3Rva2VuX2Rlc2NyKTsKLSAgICAgICAgICAgIG5ldHNubXBfYXNzZXJ0KE5VTEwgIT0gZm91bmQpOwotICAgICAgICAgICAgZm91bmQtPnRva2VuX25hbWUgPSBzdHJkdXAodG9rZW4pOwotICAgICAgICAgICAgbmV0c25tcF9hc3NlcnQoMCA9PSBmb3VuZC0+ZW5hYmxlZCk7Ci0gICAgICAgICAgICBDT05UQUlORVJfSU5TRVJUKGRiZ19zdGF0cywgZm91bmQpOwotICAgICAgICB9Ci0gICAgICAgICsrZm91bmQtPmVuYWJsZWQ7Ci0gICAgLyogIHNubXBfbG9nKExPR19FUlIsInRvayAlcywgJWQgaGl0c1xuIiwgdG9rZW4sIGZvdW5kLT5lbmFibGVkKTsgICovCi0gICAgfQotI2VuZGlmCi0KICAgICByZXR1cm4gcmM7CiB9CiAKIHZvaWQKLSNpZiBIQVZFX1NUREFSR19ICiBkZWJ1Z21zZyhjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0jZWxzZQotZGVidWdtc2codmFfYWxpc3QpCi0gICAgIHZhX2RjbAotI2VuZGlmCiB7Ci0gICAgdmFfbGlzdCAgICAgICAgIGRlYnVnYXJnczsKLQotI2lmIEhBVkVfU1REQVJHX0gKLSAgICB2YV9zdGFydChkZWJ1Z2FyZ3MsIGZvcm1hdCk7Ci0jZWxzZQotICAgIGNvbnN0IGNoYXIgICAgICpmb3JtYXQ7Ci0gICAgY29uc3QgY2hhciAgICAgKnRva2VuOwotCi0gICAgdmFfc3RhcnQoZGVidWdhcmdzKTsKLSAgICB0b2tlbiA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIGNvbnN0IGNoYXIgKik7Ci0gICAgZm9ybWF0ID0gdmFfYXJnKGRlYnVnYXJncywgY29uc3QgY2hhciAqKTsgICAvKiA/Pz8gKi8KLSNlbmRpZgotCiAgICAgaWYgKGRlYnVnX2lzX3Rva2VuX3JlZ2lzdGVyZWQodG9rZW4pID09IFNOTVBFUlJfU1VDQ0VTUykgewotICAgICAgICBzbm1wX3Zsb2coTE9HX0RFQlVHLCBmb3JtYXQsIGRlYnVnYXJncyk7CisJdmFfbGlzdCAgICAgICAgIGRlYnVnYXJnczsKKworCXZhX3N0YXJ0KGRlYnVnYXJncywgZm9ybWF0KTsKKwlzbm1wX3Zsb2coTE9HX0RFQlVHLCBmb3JtYXQsIGRlYnVnYXJncyk7CisJdmFfZW5kKGRlYnVnYXJncyk7CiAgICAgfQotICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQogCiB2b2lkCkBAIC00ODAsNyArNDE0LDcgQEAKICAgICAgICAgICAgICAqIFhYbmV4dCB0d28gbGluZXMgd2VyZSBERUJVR1BSSU5USU5ERU5UKHRva2VuKTsKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgc3ByaW50ZihidWYsICJkdW1weCVzIiwgdG9rZW4pOwotICAgICAgICAgICAgZGVidWdtc2coYnVmLCAiJXM6ICVzIiwgdG9rZW4yLCBkZWJ1Z19pbmRlbnQoKSk7CisgICAgICAgICAgICBkZWJ1Z21zZyhidWYsICIlczogJSpzIiwgdG9rZW4yLCBkZWJ1Z19pbmRlbnRfZ2V0KCksICIiKTsKICAgICAgICAgICAgIGlmIChzcHJpbnRfcmVhbGxvY19oZXhzdHJpbmcKICAgICAgICAgICAgICAgICAoJmIzLCAmYjNfbGVuLCAmbzNfbGVuLCAxLCB0aGVkYXRhLCBpbmNyKSkgewogICAgICAgICAgICAgICAgIGlmIChiMyAhPSBOVUxMKSB7CkBAIC01MDAsNTMgKzQzNCwyMyBAQAogfQogCiB2b2lkCi0jaWYgSEFWRV9TVERBUkdfSAogZGVidWdtc2d0b2tlbihjb25zdCBjaGFyICp0b2tlbiwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0jZWxzZQotZGVidWdtc2d0b2tlbih2YV9hbGlzdCkKLSAgICAgdmFfZGNsCi0jZW5kaWYKIHsKICAgICB2YV9saXN0ICAgICAgICAgZGVidWdhcmdzOwogCi0jaWYgSEFWRV9TVERBUkdfSAogICAgIHZhX3N0YXJ0KGRlYnVnYXJncywgZm9ybWF0KTsKLSNlbHNlCi0gICAgY29uc3QgY2hhciAgICAgKnRva2VuOwotCi0gICAgdmFfc3RhcnQoZGVidWdhcmdzKTsKLSAgICB0b2tlbiA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIGNvbnN0IGNoYXIgKik7Ci0jZW5kaWYKLQogICAgIGRlYnVnbXNnKHRva2VuLCAiJXM6ICIsIHRva2VuKTsKLQogICAgIHZhX2VuZChkZWJ1Z2FyZ3MpOwogfQogCiB2b2lkCi0jaWYgSEFWRV9TVERBUkdfSAogZGVidWdfY29tYm9fbmMoY29uc3QgY2hhciAqdG9rZW4sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotI2Vsc2UKLWRlYnVnX2NvbWJvX25jKHZhX2FsaXN0KQotICAgICB2YV9kY2wKLSNlbmRpZgogewogICAgIHZhX2xpc3QgICAgICAgICBkZWJ1Z2FyZ3M7CiAKLSNpZiBIQVZFX1NUREFSR19ICiAgICAgdmFfc3RhcnQoZGVidWdhcmdzLCBmb3JtYXQpOwotI2Vsc2UKLSAgICBjb25zdCBjaGFyICAgICAqZm9ybWF0OwotICAgIGNvbnN0IGNoYXIgICAgICp0b2tlbjsKLQotICAgIHZhX3N0YXJ0KGRlYnVnYXJncyk7Ci0gICAgdG9rZW4gPSB2YV9hcmcoZGVidWdhcmdzLCBjb25zdCBjaGFyICopOwotICAgIGZvcm1hdCA9IHZhX2FyZyhkZWJ1Z2FyZ3MsIGNvbnN0IGNoYXIgKik7ICAgLyogPz8/ICovCi0jZW5kaWYKLQogICAgIHNubXBfbG9nKExPR19ERUJVRywgIiVzOiAiLCB0b2tlbik7CiAgICAgc25tcF92bG9nKExPR19ERUJVRywgZm9ybWF0LCBkZWJ1Z2FyZ3MpOwotCiAgICAgdmFfZW5kKGRlYnVnYXJncyk7CiB9CiAKQEAgLTU2NCw2MyArNDY4LDMgQEAKIHsKICAgICByZXR1cm4gZG9kZWJ1ZzsKIH0KLQotI2lmZGVmIE5FVFNOTVBfREVCVUdfU1RBVFMKLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSAqIGNvbXBhcmUgdHdvIGNvbnRleHQgcG9pbnRlcnMgaGVyZS4gUmV0dXJuIC0xIGlmIGxocyA8IHJocywKLSAqIDAgaWYgbGhzID09IHJocywgYW5kIDEgaWYgbGhzID4gcmhzLgotICovCi1zdGF0aWMgaW50Ci1fZGVidWdfY21wKCBjb25zdCB2b2lkICpsaHMsIGNvbnN0IHZvaWQgKnJocyApCi17Ci0gICAgbmV0c25tcF90b2tlbl9kZXNjciAqZGJnX2wgPSAobmV0c25tcF90b2tlbl9kZXNjciAqKWxoczsKLSAgICBuZXRzbm1wX3Rva2VuX2Rlc2NyICpkYmdfciA9IChuZXRzbm1wX3Rva2VuX2Rlc2NyICopcmhzOwotCi0gLyogc25tcF9sb2coTE9HX0VSUiwiJXMvJXNcbiIsZGJnX2wtPnRva2VuX25hbWUsIGRiZ19yLT50b2tlbl9uYW1lKTsgKi8KLSAgICByZXR1cm4gc3RyY21wKGRiZ19sLT50b2tlbl9uYW1lLCBkYmdfci0+dG9rZW5fbmFtZSk7Ci19Ci0KLQotc3RhdGljIGludAotX3NhdmVfZGVidWdfc3RhdChuZXRzbm1wX3Rva2VuX2Rlc2NyICp0Yiwgdm9pZCAqdHlwZSkKLXsKLSAgICBjaGFyIGJ1ZlsyNTZdOwotCi0gICAgc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgImRlYnVnX2hpdHMgJXMgJWQiLAotICAgICAgICAgICAgIHRiLT50b2tlbl9uYW1lLCB0Yi0+ZW5hYmxlZCk7Ci0gICAgcmVhZF9jb25maWdfc3RvcmUoKGNoYXIgKikgdHlwZSwgYnVmKTsKLQotICAgIHJldHVybiBTTk1QX0VSUl9OT0VSUk9SOwotfQotCi1zdGF0aWMgaW50Ci1fZGVidWdfc3RhdHNfY2FsbGJhY2soaW50IG1ham9ySUQsIGludCBtaW5vcklELAotICAgICAgICAgICAgICAgICAgdm9pZCAqc2VydmVyYXJnLCB2b2lkICpjbGllbnRhcmcpCi17Ci0gICAgY2hhciAgICAgICAgICAgIHNlcFtdID0KLSAgICAgICAgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIjsKLSAgICBjaGFyICAgICAgICAgICAgYnVmW10gPQotICAgICAgICAiI1xuIiAiIyBkZWJ1ZyBzdGF0c1xuIiAiIyI7Ci0gICAgY2hhciAgICAgICAgICAgKnR5cGUgPSBuZXRzbm1wX2RzX2dldF9zdHJpbmcoTkVUU05NUF9EU19MSUJSQVJZX0lELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX0FQUFRZUEUpOwotCi0gICAgcmVhZF9jb25maWdfc3RvcmUoKGNoYXIgKikgdHlwZSwgc2VwKTsKLSAgICByZWFkX2NvbmZpZ19zdG9yZSgoY2hhciAqKSB0eXBlLCBidWYpOwotCi0gICAgLyoKLSAgICAgKiBzYXZlIGFsbCByb3dzCi0gICAgICovCi0gICAgQ09OVEFJTkVSX0ZPUl9FQUNIKChuZXRzbm1wX2NvbnRhaW5lciAqKSBjbGllbnRhcmcsCi0gICAgICAgICAgICAgICAgICAgICAgIChuZXRzbm1wX2NvbnRhaW5lcl9vYmpfZnVuYyAqKQotICAgICAgICAgICAgICAgICAgICAgICBfc2F2ZV9kZWJ1Z19zdGF0LCB0eXBlKTsKLQotICAgIHJlYWRfY29uZmlnX3N0b3JlKChjaGFyICopIHR5cGUsIHNlcCk7Ci0gICAgcmVhZF9jb25maWdfc3RvcmUoKGNoYXIgKikgdHlwZSwgIlxuIik7Ci0KLSAgICAvKgotICAgICAqIG5ldmVyIGZhaWxzIAotICAgICAqLwotICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Ci19Ci0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX2xvZ2dpbmcuYyBiL3NubXBsaWIvc25tcF9sb2dnaW5nLmMKaW5kZXggN2EwZGRiMi4uN2YxOWViNSAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX2xvZ2dpbmcuYworKysgYi9zbm1wbGliL3NubXBfbG9nZ2luZy5jCkBAIC01OSwxMSArNTksNyBAQAogI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KICNlbmRpZgogCi0jaWYgSEFWRV9TVERBUkdfSAogI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDx2YXJhcmdzLmg+Ci0jZW5kaWYKIAogI2lmIEhBVkVfVU5JU1REX0gKICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTE3Nyw2ICsxNzMsMjYgQEAKICNkZWZpbmUgTE9HX1VTRVIJMAogI2VuZGlmCiAKKy8qIFNldCBsaW5lIGJ1ZmZlcmluZyBtb2RlIGZvciBhIHN0cmVhbS4gKi8KK3ZvaWQKK25ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKEZJTEUgKnN0cmVhbSkKK3sKKyNpZiBkZWZpbmVkKFdJTjMyKQorICAgIC8qCisgICAgICogQWNjb3JkaW5nIHRvIE1TRE4sIHRoZSBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBDIHJ1bnRpbWUgbGlicmFyeSBkb2VzCisgICAgICogbm90IHN1cHBvcnQgbGluZSBidWZmZXJpbmcsIHNvIHR1cm4gb2ZmIGJ1ZmZlcmluZyBjb21wbGV0ZWx5LgorICAgICAqIFNlZSBhbHNvIGh0dHA6Ly9tc2RuLm1pY3Jvc29mdC5jb20vZW4tdXMvbGlicmFyeS84NmNlYmhmcyhWUy43MSkuYXNweC4KKyAgICAgKi8KKyAgICBzZXR2YnVmKHN0cmVhbSwgTlVMTCwgX0lPTkJGLCBCVUZTSVopOworI2VsaWYgZGVmaW5lZChIQVZFX1NFVExJTkVCVUYpCisgICAgLyogc2V0bGluZWZ1bmN0aW9uKCkgaXMgYSBmdW5jdGlvbiBmcm9tIHRoZSBCU0QgVW5peCBBUEkuICovCisgICAgc2V0bGluZWJ1ZihzdHJlYW0pOworI2Vsc2UKKyAgICAvKiBTZWUgYWxzbyB0aGUgQzg5IG9yIEM5OSBzdGFuZGFyZCBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBzZXR2YnVmKCkuICovCisgICAgc2V0dmJ1ZihzdHJlYW0sIE5VTEwsIF9JT0xCRiwgQlVGU0laKTsKKyNlbmRpZgorfQorCiAvKgogICogRGVjb2RlcyBsb2cgcHJpb3JpdHkuCiAgKiBAcGFyYW0gb3B0YXJnIC0gSU4gLSBwcmlvcml0eSB0byBkZWNvZGUsICIwIiBvciAiMC03IgpAQCAtMzUwLDYgKzM2Niw3IEBACiAgICAgY2FzZSAnZSc6CiAgICAgICAgIGxvZ2ggPSBuZXRzbm1wX3JlZ2lzdGVyX2xvZ2hhbmRsZXIoTkVUU05NUF9MT0dIQU5ETEVSX1NUREVSUiwgcHJpb3JpdHkpOwogICAgICAgICBpZiAobG9naCkgeworICAgICAgICAgICAgbmV0c25tcF9zZXRfbGluZV9idWZmZXJpbmcoc3RkZXJyKTsKICAgICAgICAgICAgIGxvZ2gtPnByaV9tYXggPSBwcmlfbWF4OwogICAgICAgICAgICAgbG9naC0+dG9rZW4gICA9IHN0cmR1cCgic3RkZXJyIik7CiAJfQpAQCAtMzY3LDYgKzM4NCw3IEBACiAgICAgY2FzZSAnbyc6CiAgICAgICAgIGxvZ2ggPSBuZXRzbm1wX3JlZ2lzdGVyX2xvZ2hhbmRsZXIoTkVUU05NUF9MT0dIQU5ETEVSX1NUREVSUiwgcHJpb3JpdHkpOwogICAgICAgICBpZiAobG9naCkgeworICAgICAgICAgICAgbmV0c25tcF9zZXRfbGluZV9idWZmZXJpbmcoc3Rkb3V0KTsKICAgICAgICAgICAgIGxvZ2gtPnByaV9tYXggPSBwcmlfbWF4OwogICAgICAgICAgICAgbG9naC0+dG9rZW4gICA9IHN0cmR1cCgic3Rkb3V0Iik7CiAgICAgICAgICAgICBsb2doLT5pbWFnaWMgID0gMTsJICAgIC8qIHN0ZG91dCwgbm90IHN0ZGVyciAqLwpAQCAtNDI0LDkgKzQ0Miw5IEBACiAgICAgICAgICAgICBpbnQgZmFjaWxpdHkgPSBkZWNvZGVfZmFjaWxpdHkob3B0YXJnKTsKICAgICAgICAgICAgIGlmIChmYWNpbGl0eSA9PSAtMSkgIHJldHVybiAtMTsKICAgICAgICAgICAgIGxvZ2gtPnByaV9tYXggPSBwcmlfbWF4OwotICAgICAgICAgICAgbG9naC0+dG9rZW4gICA9IHN0cmR1cChzbm1wX2xvZ19zeXNsb2duYW1lKDApKTsKKyAgICAgICAgICAgIGxvZ2gtPnRva2VuICAgPSBzdHJkdXAoc25tcF9sb2dfc3lzbG9nbmFtZShOVUxMKSk7CiAgICAgICAgICAgICBsb2doLT5tYWdpYyAgID0gKHZvaWQgKikoaW50cHRyX3QpZmFjaWxpdHk7Ci0JICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChzbm1wX2xvZ19zeXNsb2duYW1lKDApLCBmYWNpbGl0eSk7CisJICAgIHNubXBfZW5hYmxlX3N5c2xvZ19pZGVudChzbm1wX2xvZ19zeXNsb2duYW1lKE5VTEwpLCBmYWNpbGl0eSk7CiAJfQogICAgICAgICBicmVhazsKIApAQCAtNjYzLDcgKzY4MSw3IEBACiB2b2lkCiBzbm1wX2VuYWJsZV9zeXNsb2codm9pZCkKIHsKLSAgICBzbm1wX2VuYWJsZV9zeXNsb2dfaWRlbnQoc25tcF9sb2dfc3lzbG9nbmFtZSgwKSwgTE9HX0RBRU1PTik7CisgICAgc25tcF9lbmFibGVfc3lzbG9nX2lkZW50KHNubXBfbG9nX3N5c2xvZ25hbWUoTlVMTCksIExPR19EQUVNT04pOwogfQogCiB2b2lkCkBAIC03MjcsMTYgKzc0NSw3IEBACiAgICAgICAgIGlmICghbG9nZmlsZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbG9naC0+bWFnaWMgPSAodm9pZCopbG9nZmlsZTsKLSNpZmRlZiBXSU4zMgotICAgICAgICAvKgotICAgICAgICAgKiBBcHBhcmVudGx5LCAibGluZSBidWZmZXJpbmciIHVuZGVyIFdpbmRvd3MgaXMKLSAgICAgICAgICogIGFjdHVhbGx5IGltcGxlbWVudGVkIGFzICJmdWxsIGJ1ZmZlcmluZyIuCi0gICAgICAgICAqICBMZXQncyB0cnkgdHVybmluZyBvZmYgYnVmZmVyaW5nIGNvbXBsZXRlbHkuCi0gICAgICAgICAqLwotICAgICAgICBzZXR2YnVmKGxvZ2ZpbGUsIE5VTEwsIF9JT05CRiwgQlVGU0laKTsKLSNlbHNlCi0gICAgICAgIHNldHZidWYobG9nZmlsZSwgTlVMTCwgX0lPTEJGLCBCVUZTSVopOwotI2VuZGlmCisgICAgICAgIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nKGxvZ2ZpbGUpOwogICAgIH0KICAgICBsb2doLT5lbmFibGVkID0gMTsKIH0KQEAgLTEyNzQsMjUgKzEyODMsMTEgQEAKICAqIEBzZWUgc25tcF92bG9nCiAgKi8KIGludAotI2lmIEhBVkVfU1REQVJHX0gKIHNubXBfbG9nKGludCBwcmlvcml0eSwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0jZWxzZQotc25tcF9sb2codmFfYWxpc3QpCi0gICAgIHZhX2RjbAotI2VuZGlmCiB7CiAgICAgdmFfbGlzdCAgICAgICAgIGFwOwogICAgIGludCAgICAgICAgICAgICByZXQ7Ci0jaWYgSEFWRV9TVERBUkdfSAogICAgIHZhX3N0YXJ0KGFwLCBmb3JtYXQpOwotI2Vsc2UKLSAgICBpbnQgICAgICAgICAgICAgcHJpb3JpdHk7Ci0gICAgY29uc3QgY2hhciAgICAgKmZvcm1hdDsKLSAgICB2YV9zdGFydChhcCk7Ci0KLSAgICBwcmlvcml0eSA9IHZhX2FyZyhhcCwgaW50KTsKLSAgICBmb3JtYXQgPSB2YV9hcmcoYXAsIGNvbnN0IGNoYXIgKik7Ci0jZW5kaWYKICAgICByZXQgPSBzbm1wX3Zsb2cocHJpb3JpdHksIGZvcm1hdCwgYXApOwogICAgIHZhX2VuZChhcCk7CiAgICAgcmV0dXJuIChyZXQpOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX29wZW5zc2wuYyBiL3NubXBsaWIvc25tcF9vcGVuc3NsLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk4MzFkZAotLS0gL2Rldi9udWxsCisrKyBiL3NubXBsaWIvc25tcF9vcGVuc3NsLmMKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIHNubXB0c21zbS5jCisgKgorICogVGhpcyBjb2RlIG1lcmVseSBkb2VzIG9wZW5zc2wgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBtdWx0aWxwZQorICogbW9kdWxlcyBhcmUgc2FmZSB0byBjYWxsIG5ldHNubXBfaW5pdF9vcGVuc3NsKCkgZm9yIGJvb3RzdHJhcHBpbmcKKyAqIHdpdGhvdXQgd29ycnlpbmcgYWJvdXQgb3RoZXIgY2FsbGVycyB0aGF0IG1heSBoYXZlIGFscmVhZHkgZG9uZSBzby4KKyAqLworCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKKyNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1pbmNsdWRlcy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wX29wZW5zc2wuaD4KKworI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkgJiYgZGVmaW5lZChIQVZFX0xJQlNTTCkKKworI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CisjaW5jbHVkZSA8b3BlbnNzbC9zc2wuaD4KKworc3RhdGljIHVfY2hhciBoYXZlX3N0YXJ0ZWRfYWxyZWFkeSA9IDA7CisKK3ZvaWQgbmV0c25tcF9pbml0X29wZW5zc2wodm9pZCkgeworCisgICAgLyogYXZvaWQgZHVwbGljYXRlIGNhbGxzICovCisgICAgaWYgKGhhdmVfc3RhcnRlZF9hbHJlYWR5KQorICAgICAgICByZXR1cm47CisgICAgaGF2ZV9zdGFydGVkX2FscmVhZHkgPSAxOworCisgICAgREVCVUdNU0dUTCgoInNubXBfb3BlbnNzbCIsICJpbml0aWFsaXppbmdcbiIpKTsKKworICAgIC8qIEluaXRpYWxpemluZyBPcGVuU1NMICovCisgICAgU1NMX2xpYnJhcnlfaW5pdCgpOworICAgIFNTTF9sb2FkX2Vycm9yX3N0cmluZ3MoKTsKKyAgICBFUlJfbG9hZF9CSU9fc3RyaW5ncygpOworICAgIE9wZW5TU0xfYWRkX2FsbF9hbGdvcml0aG1zKCk7Cit9CisKKyNlbmRpZiAvKiBORVRTTk1QX1VTRV9PUEVOU1NMICYmIEhBVkVfTElCU1NMICovCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jIGIvc25tcGxpYi9zbm1wX3BhcnNlX2FyZ3MuYwppbmRleCBhMDAzOTk1Li5jMWUzMTZiIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfcGFyc2VfYXJncy5jCisrKyBiL3NubXBsaWIvc25tcF9wYXJzZV9hcmdzLmMKQEAgLTM2MSw4ICszNjEsOCBAQAogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSAndCc6Ci0gICAgICAgICAgICBzZXNzaW9uLT50aW1lb3V0ID0gYXRvaShvcHRhcmcpICogMTAwMDAwMEw7Ci0gICAgICAgICAgICBpZiAoc2Vzc2lvbi0+dGltZW91dCA8IDAgfHwgIWlzZGlnaXQob3B0YXJnWzBdKSkgeworICAgICAgICAgICAgc2Vzc2lvbi0+dGltZW91dCA9IChsb25nKShhdG9mKG9wdGFyZykgKiAxMDAwMDAwTCk7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbi0+dGltZW91dCA8PSAwKSB7CiAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJJbnZhbGlkIHRpbWVvdXQgaW4gc2Vjb25kcyBhZnRlciAtdCBmbGFnLlxuIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuICgtMSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfc2VydmljZS5jIGIvc25tcGxpYi9zbm1wX3NlcnZpY2UuYwppbmRleCAyZjUzYjc2Li44ODY1Y2RhIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBfc2VydmljZS5jCisrKyBiL3NubXBsaWIvc25tcF9zZXJ2aWNlLmMKQEAgLTY4LDcgKzY4LDcgQEAKICAgICBpZiAocnVuICYmIHN0cmNtcChydW4tPmFwcGxpY2F0aW9uLCBhcHBsaWNhdGlvbikgPT0gMCkgewogICAgICAgaWYgKHJ1bi0+ZG9tYWluICE9IE5VTEwpIHsKICAgICAgICAgICBkZXN0cm95X3dvcmRfYXJyYXkocnVuLT5kb21haW4pOwotCSAgcnVuLT5kb21haW49TlVMTDsKKwkgIHJ1bi0+ZG9tYWluID0gTlVMTDsKIAkgIHJlcyA9IDE7CiAgICAgICB9CiAgICAgfSBlbHNlIHsKQEAgLTEyMCwxMiArMTIwLDggQEAKICAgICB7CiAgICAgICAgIGNoYXIqIGNwID0gY29weV9ud29yZChjcHRyLCBhcHBsaWNhdGlvbiwgbGVuKTsKICAgICAgICAgaWYgKGNwID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNoYXIgdG1wYnVmW1NUUklOR01BWF07Ci0gICAgICAgICAgICBzbnByaW50Zih0bXBidWYsIHNpemVvZih0bXBidWYpLAotICAgICAgICAgICAgICAgICAgICAgIk5vIGRvbWFpbihzKSBpbiByZWdpc3RyYXRpb24gb2YgZGVmRG9tYWluIFwiJXNcIiIsCi0gICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbik7Ci0gICAgICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZikgLSAxXSA9ICdcMCc7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiTm8gZG9tYWluKHMpIGluIHJlZ2lzdHJhdGlvbiBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVmRG9tYWluIFwiJXNcIiIsIGFwcGxpY2F0aW9uKTsKICAgICAgICAgICAgIGZyZWUoYXBwbGljYXRpb24pOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC0zMjAsMjIgKzMxNiwxNSBAQAogICAgIHsKIAljaGFyKiBjcCA9IGNvcHlfbndvcmQoY3B0ciwgYXBwbGljYXRpb24sIGxlbik7CiAgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjaGFyIHRtcGJ1ZltTVFJJTkdNQVhdOwotICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICJObyBkb21haW4gYW5kIHRhcmdldCBpbiByZWdpc3RyYXRpb24gb2YgIgotICAgICAgICAgICAgICAgICAgICAgImRlZlRhcmdldCBcIiVzXCIiLCBhcHBsaWNhdGlvbik7Ci0gICAgICAgICAgICB0bXBidWZbc2l6ZW9mKHRtcGJ1ZikgLSAxXSA9ICdcMCc7Ci0gICAgICAgICAgICBjb25maWdfcGVycm9yKHRtcGJ1Zik7CisgICAgICAgICAgICBuZXRzbm1wX2NvbmZpZ19lcnJvcigiTm8gZG9tYWluIGFuZCB0YXJnZXQgaW4gcmVnaXN0cmF0aW9uIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWZUYXJnZXQgXCIlc1wiIiwgYXBwbGljYXRpb24pOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAJY3AgPSBjb3B5X253b3JkKGNwLCBkb21haW4sIGxlbik7CiAgICAgICAgIGlmIChjcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBjaGFyIHRtcGJ1ZltTVFJJTkdNQVhdOwotICAgICAgICAgICAgc25wcmludGYodG1wYnVmLCBzaXplb2YodG1wYnVmKSwKLSAgICAgICAgICAgICAgICAgICAgICJObyB0YXJnZXQgaW4gcmVnaXN0cmF0aW9uIG9mIGRlZlRhcmdldCBcIiVzXCIgXCIlc1wiIiwKLSAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uLCBkb21haW4pOwotICAgICAgICAgICAgdG1wYnVmW3NpemVvZih0bXBidWYpIC0gMV0gPSAnXDAnOwotICAgICAgICAgICAgY29uZmlnX3BlcnJvcih0bXBidWYpOworICAgICAgICAgICAgbmV0c25tcF9jb25maWdfZXJyb3IoIk5vIHRhcmdldCBpbiByZWdpc3RyYXRpb24gb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlZlRhcmdldCBcIiVzXCIgXCIlc1wiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uLCBkb21haW4pOwogICAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAJY3AgPSBjb3B5X253b3JkKGNwLCB0YXJnZXQsIGxlbik7CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXBfdHJhbnNwb3J0LmMgYi9zbm1wbGliL3NubXBfdHJhbnNwb3J0LmMKaW5kZXggZmUwYWZmZS4uZGZlYTNjNiAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3RyYW5zcG9ydC5jCisrKyBiL3NubXBsaWIvc25tcF90cmFuc3BvcnQuYwpAQCAtMzMsNiArMzMsMTUgQEAKICNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BfRE9NQUlOCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wVENQRG9tYWluLmg+CiAjZW5kaWYKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9EVExTVURQX0RPTUFJTgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcERUTFNVRFBEb21haW4uaD4KKyNlbmRpZgorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1NTSF9ET01BSU4KKyNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3NubXBTU0hEb21haW4uaD4KKyNlbmRpZgorI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0FMSUFTX0RPTUFJTgorI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcEFsaWFzRG9tYWluLmg+CisjZW5kaWYKICNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9JUFhfRE9NQUlOCiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zbm1wSVBYRG9tYWluLmg+CiAjZW5kaWYKQEAgLTIwOCw2ICsyMTcsOSBAQAogI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX1RDUF9ET01BSU4KICAgICBuZXRzbm1wX3RjcF9jdG9yKCk7CiAjZW5kaWYKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9BTElBU19ET01BSU4KKyAgICBuZXRzbm1wX2FsaWFzX2N0b3IoKTsKKyNlbmRpZgogI2lmZGVmIE5FVFNOTVBfVFJBTlNQT1JUX0lQWF9ET01BSU4KICAgICBuZXRzbm1wX2lweF9jdG9yKCk7CiAjZW5kaWYKQEAgLTIyMyw2ICsyMzUsMTIgQEAKICNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9UQ1BJUFY2X0RPTUFJTgogICAgIG5ldHNubXBfdGNwNl9jdG9yKCk7CiAjZW5kaWYKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9EVExTVURQX0RPTUFJTgorICAgIG5ldHNubXBfZHRsc3VkcF9jdG9yKCk7CisjZW5kaWYKKyNpZmRlZiBORVRTTk1QX1RSQU5TUE9SVF9TU0hfRE9NQUlOCisgICAgbmV0c25tcF9zc2hfY3RvcigpOworI2VuZGlmCiAgICAgbmV0c25tcF90ZG9tYWluX2R1bXAoKTsKIH0KIApkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wX3ZlcnNpb24uYyBiL3NubXBsaWIvc25tcF92ZXJzaW9uLmMKaW5kZXggNDg2NmRkYS4uN2QzNGMwZCAxMDA2NDQKLS0tIGEvc25tcGxpYi9zbm1wX3ZlcnNpb24uYworKysgYi9zbm1wbGliL3NubXBfdmVyc2lvbi5jCkBAIC01LDEwICs1LDEwIEBACiAjaWZuZGVmIFVDRF9DT01QQVRJQkxFCiBzdGF0aWMKICNlbmRpZgotY29uc3QgY2hhciAgICAgKk5ldFNubXBWZXJzaW9uSW5mbyA9ICI1LjQuNCI7Citjb25zdCBjaGFyICAgICAqTmV0U25tcFZlcnNpb25JbmZvID0gUEFDS0FHRV9WRVJTSU9OOwogCiBjb25zdCBjaGFyICAgICAqCi1uZXRzbm1wX2dldF92ZXJzaW9uKCkKK25ldHNubXBfZ2V0X3ZlcnNpb24odm9pZCkKIHsKICAgICByZXR1cm4gTmV0U25tcFZlcnNpb25JbmZvOwogfQpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zbm1wa3NtLmMgYi9zbm1wbGliL3NubXBrc20uYwppbmRleCAzY2UyODAyLi5iMzc2ZTgzIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXBrc20uYworKysgYi9zbm1wbGliL3NubXBrc20uYwpAQCAtMTA3LDYgKzEwNywyNCBAQAogc3RhdGljIHZvaWQgICAgIGtzbV9pbmNyZW1lbnRfcmVmX2NvdW50KGxvbmcpOwogc3RhdGljIHN0cnVjdCBrc21fY2FjaGVfZW50cnkgKmtzbV9nZXRfY2FjaGUobG9uZyk7CiAKKyNpZiAhZGVmaW5lZChIQVZFX0tSQjVfQVVUSF9DT05fR0VUU0VORFNVQktFWSkgLyogSGVpbWRhbCAqLworCitrcmI1X2Vycm9yX2NvZGUga3JiNV9hdXRoX2Nvbl9nZXRzZW5kc3Via2V5KGtyYjVfY29udGV4dCBjb250ZXh0LAorCQkJCWtyYjVfYXV0aF9jb250ZXh0IGF1dGhfY29udGV4dCwgCisJCQkJa3JiNV9rZXlibG9jayAqKmtleWJsb2NrKQoreworICAgIHJldHVybiBrcmI1X2F1dGhfY29uX2dldGxvY2Fsc3Via2V5KGNvbnRleHQsIGF1dGhfY29udGV4dCwga2V5YmxvY2spOworfQorCitrcmI1X2Vycm9yX2NvZGUga3JiNV9hdXRoX2Nvbl9nZXRyZWN2c3Via2V5KGtyYjVfY29udGV4dCBjb250ZXh0LAorCQkJCWtyYjVfYXV0aF9jb250ZXh0IGF1dGhfY29udGV4dCwgCisJCQkJa3JiNV9rZXlibG9jayAqKmtleWJsb2NrKQoreworICAgIHJldHVybiBrcmI1X2F1dGhfY29uX2dldHJlbW90ZXN1YmtleShjb250ZXh0LCBhdXRoX2NvbnRleHQsIGtleWJsb2NrKTsKK30KKworI2VuZGlmCisKICNkZWZpbmUgSEFTSFNJWkUJNjQKIAogLyoKQEAgLTU4OCwxNSArNjA2LDE1IEBACiAgICAgICAgICAqLwogCiAgICAgICAgIGlmIChrc21fc3RhdGUpCi0gICAgICAgICAgICByZXRjb2RlID0ga3JiNV9hdXRoX2Nvbl9nZXRyZW1vdGVzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKKyAgICAgICAgICAgIHJldGNvZGUgPSBrcmI1X2F1dGhfY29uX2dldHJlY3ZzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Via2V5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0Y29kZSA9IGtyYjVfYXV0aF9jb25fZ2V0bG9jYWxzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKKyAgICAgICAgICAgIHJldGNvZGUgPSBrcmI1X2F1dGhfY29uX2dldHNlbmRzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJrZXkpOwogCiAgICAgICAgIGlmIChyZXRjb2RlKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgia3NtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJLU006IGtyYjVfYXV0aF9jb25fZ2V0bG9jYWxzdWJrZXkgZmFpbGVkOiAlc1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJLU006IGtyYjVfYXV0aF9jb25fZ2V0c2VuZHN1YmtleSBmYWlsZWQ6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZShyZXRjb2RlKSkpOwogICAgICAgICAgICAgc25tcF9zZXRfZGV0YWlsKGVycm9yX21lc3NhZ2UocmV0Y29kZSkpOwogICAgICAgICAgICAgcmV0dmFsID0gU05NUEVSUl9LUkI1OwpAQCAtODI1LDEzICs4NDMsMTMgQEAKIAogICAgIGlmICghc3Via2V5KSB7CiAgICAgICAgIGlmIChrc21fc3RhdGUpCi0gICAgICAgICAgICByZXRjb2RlID0ga3JiNV9hdXRoX2Nvbl9nZXRyZW1vdGVzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKKyAgICAgICAgICAgIHJldGNvZGUgPSBrcmI1X2F1dGhfY29uX2dldHJlY3ZzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3Via2V5KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0Y29kZSA9IGtyYjVfYXV0aF9jb25fZ2V0bG9jYWxzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKKyAgICAgICAgICAgIHJldGNvZGUgPSBrcmI1X2F1dGhfY29uX2dldHNlbmRzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdWJrZXkpOwogICAgICAgICBpZiAocmV0Y29kZSkgewotICAgICAgICAgICAgREVCVUdNU0dUTCgoImtzbSIsICJrcmI1X2F1dGhfY29uX2dldGxvY2Fsc3Via2V5IGZhaWxlZDogJXNcbiIsCisgICAgICAgICAgICBERUJVR01TR1RMKCgia3NtIiwgImtyYjVfYXV0aF9jb25fZ2V0c2VuZHN1YmtleSBmYWlsZWQ6ICVzXG4iLAogICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbWVzc2FnZShyZXRjb2RlKSkpOwogICAgICAgICAgICAgc25tcF9zZXRfZGV0YWlsKGVycm9yX21lc3NhZ2UocmV0Y29kZSkpOwogICAgICAgICAgICAgcmV0dmFsID0gU05NUEVSUl9LUkI1OwpAQCAtMTUwNCw3ICsxNTIyLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHJldGNvZGUgPQotICAgICAgICAgICAga3JiNV9hdXRoX2Nvbl9nZXRyZW1vdGVzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwgJnN1YmtleSk7CisgICAgICAgICAgICBrcmI1X2F1dGhfY29uX2dldHJlY3ZzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwgJnN1YmtleSk7CiAKICAgICAgICAgaWYgKHJldGNvZGUpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJrc20iLCAiS1NNIHJlbW90ZSBzdWJrZXkgcmV0cmlldmFsIGZhaWxlZDogJXNcbiIsCkBAIC0xNTYxLDcgKzE1NzksNyBAQAogICAgICAgICBERUJVR01TR1RMKCgia3NtIiwgIktTTToga3JiNV9yZF9yZXAoKSBkZWNvZGVkIHN1Y2Nlc3NmdWxseS5cbiIpKTsKIAogICAgICAgICByZXRjb2RlID0KLSAgICAgICAgICAgIGtyYjVfYXV0aF9jb25fZ2V0bG9jYWxzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwgJnN1YmtleSk7CisgICAgICAgICAgICBrcmI1X2F1dGhfY29uX2dldHNlbmRzdWJrZXkoa2NvbnRleHQsIGF1dGhfY29udGV4dCwgJnN1YmtleSk7CiAKICAgICAgICAgaWYgKHJldGNvZGUpIHsKICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJrc20iLCAiVW5hYmxlIHRvIHJldHJpZXZlIGxvY2FsIHN1YmtleTogJXNcbiIsCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXB0c20uYyBiL3NubXBsaWIvc25tcHRzbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZDMzOGYKLS0tIC9kZXYvbnVsbAorKysgYi9zbm1wbGliL3NubXB0c20uYwpAQCAtMCwwICsxLDQ2OCBAQAorLyoKKyAqIHNubXB0c21zbS5jCisgKgorICogVGhpcyBjb2RlIGltcGxlbWVudHMgYSBzZWN1cml0eSBtb2RlbCB0aGF0IGFzc3VtZXMgdGhlIGxvY2FsIHVzZXIKKyAqIHRoYXQgZXhlY3V0ZWQgdGhlIGFnZW50IGlzIHRoZSB1c2VyIHdobydzIGF0dHJpYnV0ZXMgY2FsbGVkCisgKi8KKworI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgorCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtaW5jbHVkZXMuaD4KKworI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvc25tcHRzbS5oPgorCisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK3N0YXRpYyBpbnQgICAgICB0c21fc2Vzc2lvbl9pbml0KG5ldHNubXBfc2Vzc2lvbiAqKTsKK3N0YXRpYyB2b2lkICAgICB0c21fZnJlZV9zdGF0ZV9yZWYodm9pZCAqKTsKK3N0YXRpYyBpbnQgICAgICB0c21fY2xvbmVfcGR1KG5ldHNubXBfcGR1ICosIG5ldHNubXBfcGR1ICopOworc3RhdGljIHZvaWQgICAgIHRzbV9mcmVlX3BkdShuZXRzbm1wX3BkdSAqcGR1KTsKKwordV9pbnQgbmV4dF9zZXNzX2lkID0gMTsKKworLyoqIEluaXRpYWxpemUgdGhlIFRTTSBzZWN1cml0eSBtb2R1bGUgKi8KK3ZvaWQKK2luaXRfdHNtKHZvaWQpCit7CisgICAgc3RydWN0IHNubXBfc2VjbW9kX2RlZiAqZGVmOworICAgIGludCByZXQ7CisKKyAgICBkZWYgPSBTTk1QX01BTExPQ19TVFJVQ1Qoc25tcF9zZWNtb2RfZGVmKTsKKworICAgIGlmICghZGVmKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsCisgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gbWFsbG9jIHNubXBfc2VjbW9kIHN0cnVjdCwgbm90IHJlZ2lzdGVyaW5nIFRTTVxuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBkZWYtPmVuY29kZV9yZXZlcnNlID0gdHNtX3JnZW5lcmF0ZV9vdXRfbXNnOworICAgIGRlZi0+ZGVjb2RlID0gdHNtX3Byb2Nlc3NfaW5fbXNnOworICAgIGRlZi0+c2Vzc2lvbl9vcGVuID0gdHNtX3Nlc3Npb25faW5pdDsKKyAgICBkZWYtPnBkdV9mcmVlX3N0YXRlX3JlZiA9IHRzbV9mcmVlX3N0YXRlX3JlZjsKKyAgICBkZWYtPnBkdV9jbG9uZSA9IHRzbV9jbG9uZV9wZHU7CisgICAgZGVmLT5wZHVfZnJlZSA9IHRzbV9mcmVlX3BkdTsKKyAgICBkZWYtPnByb2JlX2VuZ2luZWlkID0gc25tcHYzX3Byb2JlX2NvbnRleHRFbmdpbmVJRF9yZmM1MzQzOworCisgICAgREVCVUdNU0dUTCgoInRzbSIsInJlZ2lzdGVyaW5nIG91cnNlbHZlc1xuIikpOworICAgIHJldCA9IHJlZ2lzdGVyX3NlY19tb2QoTkVUU05NUF9UU01fU0VDVVJJVFlfTU9ERUwsICJ0c20iLCBkZWYpOworICAgIERFQlVHTVNHVEwoKCJ0c20iLCIgcmV0dXJuZWQgJWRcbiIsIHJldCkpOworCisgICAgbmV0c25tcF9kc19yZWdpc3Rlcl9jb25maWcoQVNOX0JPT0xFQU4sICJzbm1wIiwgInRzbVVzZVRyYW5zcG9ydFByZWZpeCIsCisJCQkgICAgICAgTkVUU05NUF9EU19MSUJSQVJZX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5FVFNOTVBfRFNfTElCX1RTTV9VU0VfUFJFRklYKTsKK30KKworLyoKKyAqIEluaXRpYWxpemUgc3BlY2lmaWMgc2Vzc2lvbiBpbmZvcm1hdGlvbiAocmlnaHQgbm93LCBqdXN0IHNldCB1cCB0aGluZ3MgdG8KKyAqIG5vdCBkbyBhbiBlbmdpbmVJRCBwcm9iZSkKKyAqLworCitzdGF0aWMgaW50Cit0c21fc2Vzc2lvbl9pbml0KG5ldHNubXBfc2Vzc2lvbiAqIHNlc3MpCit7CisgICAgREVCVUdNU0dUTCgoInRzbSIsCisgICAgICAgICAgICAgICAgIlRTTTogUmVhY2hlZCBvdXIgc2Vzc2lvbiBpbml0aWFsaXphdGlvbiBjYWxsYmFja1xuIikpOworCisgICAgc2Vzcy0+ZmxhZ3MgfD0gU05NUF9GTEFHU19ET05UX1BST0JFOworCisgICAgLyogWFhYOiBsaWtlbHkgbmVlZGVkIGZvciBzb21ldGhpbmc6ICovCisgICAgLyoKKyAgICB0c21zZXNzaW9uID0gc2Vzcy0+c2VjdXJpdHlJbmZvID0KKyAgICBpZiAoIXRzbXNlc3Npb24pCisgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAqLworCisgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKK30KKworLyoqIEZyZWUgb3VyIHN0YXRlIGluZm9ybWF0aW9uICh0aGlzIGlzIG9ubHkgZG9uZSBvbiB0aGUgYWdlbnQgc2lkZSkgKi8KK3N0YXRpYyB2b2lkCit0c21fZnJlZV9zdGF0ZV9yZWYodm9pZCAqcHRyKQoreworICAgIG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2UgKnRzbVJlZjsKKworICAgIGlmIChOVUxMID09IHB0cikKKyAgICAgICAgcmV0dXJuOworCisgICAgdHNtUmVmID0gKG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2UgKikgcHRyOworICAgIC8qIHRoZSB0bVN0YXRlUmVmIGlzIGFsd2F5cyB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBub3JtYWwgUERVLCBzaW5jZSB0aGlzCisgICAgICAgaXMganVzdCBhIHJlZmVyZW5jZSB0byB0aGF0IG9uZSAqLworICAgIC8qIERPTidUIERPOiBTTk1QX0ZSRUUodHNtUmVmLT50bVN0YXRlUmVmKTsgKi8KKyAgICAvKiBTTk1QX0ZSRUUodHNtUmVmKTsgID8gKi8KK30KKworc3RhdGljIHZvaWQKK3RzbV9mcmVlX3BkdShuZXRzbm1wX3BkdSAqcGR1KQoreworICAgIC8qIGZyZWUgdGhlIHNlY3VyaXR5IHJlZmVyZW5jZSAqLworICAgIGlmIChwZHUtPnNlY3VyaXR5U3RhdGVSZWYpIHsKKyAgICAgICAgdHNtX2ZyZWVfc3RhdGVfcmVmKHBkdS0+c2VjdXJpdHlTdGF0ZVJlZik7CisgICAgICAgIHBkdS0+c2VjdXJpdHlTdGF0ZVJlZiA9IE5VTEw7CisgICAgfQorfQorCisvKiogVGhpcyBpcyBjYWxsZWQgd2hlbiBhIFBEVSBpcyBjbG9uZWQgKHRvIGluY3JlYXNlIHJlZmVyZW5jZSBjb3VudHMpICovCitzdGF0aWMgaW50Cit0c21fY2xvbmVfcGR1KG5ldHNubXBfcGR1ICpwZHUsIG5ldHNubXBfcGR1ICpwZHUyKQoreworICAgIG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2UgKm9sZHJlZiwgKm5ld3JlZjsKKworICAgIG9sZHJlZiA9IHBkdS0+c2VjdXJpdHlTdGF0ZVJlZjsKKyAgICBpZiAoIW9sZHJlZikKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKKworICAgIG5ld3JlZiA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90c21TZWN1cml0eVJlZmVyZW5jZSk7CisgICAgZnByaW50ZihzdGRlcnIsICJjbG9uZWQgYXMgcGR1PSVwLCByZWY9JXAgKG9sZHJlZj0lcClcbiIsCisgICAgICAgICAgICBwZHUyLCBuZXdyZWYsIHBkdTItPnNlY3VyaXR5U3RhdGVSZWYpOworICAgIGlmICghbmV3cmVmKQorICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgCisgICAgbWVtY3B5KG5ld3JlZiwgb2xkcmVmLCBzaXplb2YoKm9sZHJlZikpOworCisgICAgcGR1Mi0+c2VjdXJpdHlTdGF0ZVJlZiA9IG5ld3JlZjsKKworICAgIC8qIHRoZSB0bSBzdGF0ZSByZWZlcmVuY2UgaXMganVzdCBhIGxpbmsgdG8gdGhlIG9uZSBpbiB0aGUgcGR1LAorICAgICAgIHdoaWNoIHdhcyBhbHJlYWR5IGNvcGllZCBieSBzbm1wX2Nsb25lX3BkdSBiZWZvcmUgaGFuZGluZyBpdCB0bworICAgICAgIHVzLiAqLworCisgICAgbmV3cmVmLT50bVN0YXRlUmVmID0gbmV0c25tcF9tZW1kdXAob2xkcmVmLT50bVN0YXRlUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZigqb2xkcmVmLT50bVN0YXRlUmVmKSk7CisgICAgcmV0dXJuIFNOTVBFUlJfU1VDQ0VTUzsKK30KKworLyogYXNuLjEgZWFzaW5nIGRlZmluaXRpb25zICovCisjZGVmaW5lIFRTTUJVSUxEX09SX0VSUihmdW4sIGFyZ3MsIG1zZywgZGVzYykgICAgICAgXAorICAgIERFQlVHRFVNUEhFQURFUigic2VuZCIsIGRlc2MpOyBcCisgICAgcmMgPSBmdW4gYXJnczsgICAgICAgICAgICBcCisgICAgREVCVUdJTkRFTlRMRVNTKCk7ICAgICAgICBcCisgICAgaWYgKHJjID09IDApIHsgXAorICAgICAgICBERUJVR01TR1RMKCgidHNtIixtc2cpKTsgXAorICAgICAgICByZXR2YWwgPSBTTk1QRVJSX1RPT19MT05HOyBcCisgICAgICAgIGdvdG8gb3V0ZXJyOyBcCisgICAgfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIHRzbV9nZW5lcmF0ZV9vdXRfbXNnCisgKgorICogUGFyYW1ldGVyczoKKyAqCShTZWUgbGlzdCBiZWxvdy4uLikKKyAqCisgKiBSZXR1cm5zOgorICoJU05NUEVSUl9TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgICAgT24gc3VjY2Vzcy4KKyAqCS4uLiBhbmQgb3RoZXJzCisgKgorICoKKyAqIEdlbmVyYXRlIGFuIG91dGdvaW5nIG1lc3NhZ2UuCisgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK2ludAordHNtX3JnZW5lcmF0ZV9vdXRfbXNnKHN0cnVjdCBzbm1wX3NlY21vZF9vdXRnb2luZ19wYXJhbXMgKnBhcm1zKQoreworICAgIHVfY2hhciAgICAgICAgICoqd2hvbGVNc2cgPSBwYXJtcy0+d2hvbGVNc2c7CisgICAgc2l6ZV90CSAgICpvZmZzZXQgPSBwYXJtcy0+d2hvbGVNc2dPZmZzZXQ7CisgICAgaW50IHJjOworICAgIAorICAgIHNpemVfdCAgICAgICAgICp3aG9sZU1zZ0xlbiA9IHBhcm1zLT53aG9sZU1zZ0xlbjsKKyAgICBuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlICp0c21TZWNSZWY7CisgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmOworICAgIGludCAgICAgICAgICAgICB0bVN0YXRlUmVmTG9jYWwgPSAwOworICAgIAorICAgIERFQlVHTVNHVEwoKCJ0c20iLCAiU3RhcnRpbmcgVFNNIHByb2Nlc3NpbmdcbiIpKTsKKworICAgIC8qIGlmIHdlIGhhdmUgdGhpcywgdGhpcyBtZXNzYWdlIGlzIGluIHJlc3BvbnNlIHRvIHNvbWV0aGluZyB0aGF0CisgICAgICAgY2FtZSBpbiBlYXJsaWVyICovCisgICAgdHNtU2VjUmVmID0gcGFybXMtPnNlY1N0YXRlUmVmOworICAgIAorICAgIGlmICh0c21TZWNSZWYpIHsKKyAgICAgICAgLyogc2VjdGlvbiA0LjIsIHN0ZXAgMSAqLworICAgICAgICBpZiAodHNtU2VjUmVmLT50bVN0YXRlUmVmKQorICAgICAgICAgICAgdG1TdGF0ZVJlZiA9IHRzbVNlY1JlZi0+dG1TdGF0ZVJlZjsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgdG1TdGF0ZVJlZiA9IFNOTVBfTUFMTE9DX1RZUEVERUYobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlKTsKKyAgICAgICAgaWYgKE5VTEwgPT0gdG1TdGF0ZVJlZikgeworICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwgImZhaWxlZCB0byBhbGxvY2F0ZSBhIHRtU3RhdGVSZWZlcmVuY2VcbiIpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIHRtU3RhdGVSZWYtPnNhbWVTZWN1cml0eSA9IE5FVFNOTVBfVE1fVVNFX1NBTUVfU0VDVVJJVFk7CisgICAgICAgIHRtU3RhdGVSZWYtPnJlcXVlc3RlZFNlY3VyaXR5TGV2ZWwgPSB0c21TZWNSZWYtPnNlY3VyaXR5TGV2ZWw7CisKKyAgICAgICAgLyogWFhYOiB0aGlzIG1heSBiZSBmcmVlZCBhdXRvbWF0aWNhbGx5IGxhdGVyIGJ5IHRoZSBsaWJyYXJ5PyAqLworICAgICAgICBTTk1QX0ZSRUUocGFybXMtPnNlY1N0YXRlUmVmKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBzZWN0aW9uIDQuMiwgc3RlcCAyICovCisgICAgICAgIHRtU3RhdGVSZWYgPSBTTk1QX01BTExPQ19UWVBFREVGKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSk7CisgICAgICAgIGlmICh0bVN0YXRlUmVmID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfQorICAgICAgICB0bVN0YXRlUmVmTG9jYWwgPSAxOworICAgICAgICAKKyAgICAgICAgdG1TdGF0ZVJlZi0+cmVxdWVzdGVkU2VjdXJpdHlMZXZlbCA9IHBhcm1zLT5zZWNMZXZlbDsKKyAgICAgICAgdG1TdGF0ZVJlZi0+c2FtZVNlY3VyaXR5ID0gTkVUU05NUF9UTV9TQU1FX1NFQ1VSSVRZX05PVF9SRVFVSVJFRDsKKworICAgICAgICBpZiAobmV0c25tcF9kc19nZXRfYm9vbGVhbihORVRTTk1QX0RTX0FQUExJQ0FUSU9OX0lELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UU01fVVNFX1BSRUZJWCkpIHsKKyAgICAgICAgICAgIC8qIFhYWDogcHJvYmFibHkgc2hvdWxkbid0IGJlIGEgaGFyZC1jb2RlZCBsaXN0IG9mCisgICAgICAgICAgICAgICBzdXBwb3J0ZWQgdHJhbnNwb3J0cyAqLworICAgICAgICAgICAgY29uc3QgY2hhciAqcHJlZml4OworICAgICAgICAgICAgaWYgKHN0cm5jbXAoInNzaDoiLHBhcm1zLT5zZXNzaW9uLT5wZWVybmFtZSw0KSA9PSAwKQorICAgICAgICAgICAgICAgIHByZWZpeCA9ICJzc2g6IjsKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cm5jbXAoImR0bHM6IixwYXJtcy0+c2Vzc2lvbi0+cGVlcm5hbWUsNCkgPT0gMCkKKyAgICAgICAgICAgICAgICBwcmVmaXggPSAiZHRsczoiOworICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRtU3RhdGVSZWYpOworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogYTogLSBsb29rdXAgdGhlIHByZWZpeCAqLworICAgICAgICAgICAgLyogICAgLSBpZiBETkUsIHNubXBUc21Vbmtub3duUHJlZml4ZXMrKyBhbmQgYmFpbCAqLworICAgICAgICAgICAgaWYgKCFwcmVmaXgpIHsKKyAgICAgICAgICAgICAgICAvKiBzbm1wVHNtVW5rbm93blByZWZpeGVzKysgKi8KKyAgICAgICAgICAgICAgICBTTk1QX0ZSRUUodG1TdGF0ZVJlZik7CisgICAgICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiAgICAtIElmIHNlY05hbWUgZG9lc24ndCBoYXZlIHRoZSBwcmVmaXggKG9yIGFueSk6CisgICAgICAgICAgICAgICAgICBzbm1wVHNtSW52YWxpZFByZWZpeGVzKysgYW5kIGJhaWwgKi8KKyAgICAgICAgICAgIGlmIChzdHJjaHIocGFybXMtPnNlY05hbWUsICc6JykgPT0gMCB8fAorICAgICAgICAgICAgICAgIHN0cmxlbihwcmVmaXgpKzEgPj0gcGFybXMtPnNlY05hbWVMZW4gfHwKKyAgICAgICAgICAgICAgICBzdHJuY21wKHBhcm1zLT5zZWNOYW1lLCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpKSAhPSAwIHx8CisgICAgICAgICAgICAgICAgcGFybXMtPnNlY05hbWVbc3RybGVuKHByZWZpeCldICE9ICc6JykgeworCisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRtU3RhdGVSZWYpOworICAgICAgICAgICAgICAgIC8qIHNubXBUc21JbnZhbGlkUHJlZml4ZXMrKyAqLworICAgICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogICAgLSBTdHJpcCB0aGUgcHJlZml4IGFuZCB0cmFpbGluZyA6ICovCisgICAgICAgICAgICAvKiBzZXQgdG1TZWN1cml0eU5hbWUgdG8gc2VjdXJpdHlOYW1lIG1pbnVzIHN0cmlwcGVkIHBhcnQgKi8KKyAgICAgICAgICAgIG1lbWNweSh0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUsCisgICAgICAgICAgICAgICAgICAgcGFybXMtPnNlY05hbWUgKyBzdHJsZW4ocHJlZml4KSArIDEsCisgICAgICAgICAgICAgICAgICAgcGFybXMtPnNlY05hbWVMZW4gLSBzdHJsZW4ocHJlZml4KSAtIDEpOworICAgICAgICAgICAgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lTGVuID0gcGFybXMtPnNlY05hbWVMZW4gLSBzdHJsZW4ocHJlZml4KSAtMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIHNldCB0bVNlY3VyaXR5TmFtZSB0byBzZWN1cml0eU5hbWUgKi8KKyAgICAgICAgICAgIG1lbWNweSh0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWUsIHBhcm1zLT5zZWNOYW1lLAorICAgICAgICAgICAgICAgICAgIHBhcm1zLT5zZWNOYW1lTGVuKTsKKyAgICAgICAgICAgIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZUxlbiA9IHBhcm1zLT5zZWNOYW1lTGVuOworICAgICAgICB9CisgICAgfQorICAgIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZVt0bVN0YXRlUmVmLT5zZWN1cml0eU5hbWVMZW5dID0gJ1wwJzsKKworICAgIC8qIFNlY3Rpb24gNC4yLCBTdGVwIDM6CisgICAgICogLSBTZXQgc2VjdXJpdHlQYXJhbWV0ZXJzIHRvIGEgemVyby1sZW5ndGggT0NURVQgU1RSSU5HICgnMDQwMCcpCisgICAgICogCisgICAgICogV2UgZGVmaW5lIGhlcmUgd2hhdCB0aGUgc2VjdXJpdHkgbWVzc2FnZSBzZWN0aW9uIHdpbGwgbG9vayBsaWtlOgorICAgICAqIDA0IDAwIC0tIG51bGwgc3RyaW5nCisgICAgICovCisgICAgREVCVUdEVU1QSEVBREVSKCJzZW5kIiwgInRzbSBzZWN1cml0eSBwYXJhbWV0ZXJzIik7CisgICAgcmMgPSBhc25fcmVhbGxvY19yYnVpbGRfaGVhZGVyKHdob2xlTXNnLCB3aG9sZU1zZ0xlbiwgb2Zmc2V0LCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh1X2NoYXIpIChBU05fVU5JVkVSU0FMIHwgQVNOX1BSSU1JVElWRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBU05fT0NURVRfU1RSKSwgMCk7CisgICAgREVCVUdJTkRFTlRMRVNTKCk7CisgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInRzbSIsICJidWlsZGluZyBtc2dTZWN1cml0eVBhcmFtZXRlcnMgZmFpbGVkLlxuIikpOworICAgICAgICBpZiAodG1TdGF0ZVJlZkxvY2FsKQorICAgICAgICAgICAgU05NUF9GUkVFKHRtU3RhdGVSZWYpOworICAgICAgICByZXR1cm4gU05NUEVSUl9UT09fTE9ORzsKKyAgICB9CisgICAgCisgICAgLyogU2VjdGlvbiA0LjIsIFN0ZXAgNDoKKyAgICAgKiBDb21iaW5lIHRoZSBtZXNzYWdlIHBhcnRzIGludG8gYSB3aG9sZU1zZyBhbmQgY2FsY3VsYXRlIHdob2xlTXNnTGVuCisgICAgICovCisKKyAgICAvKgorICAgICAqIENvcHkgaW4gdGhlIG1zZ0dsb2JhbERhdGEgYW5kIG1zZ1ZlcnNpb24uICAKKyAgICAgKi8KKyAgICB3aGlsZSAoKCp3aG9sZU1zZ0xlbiAtICpvZmZzZXQpIDwgcGFybXMtPmdsb2JhbERhdGFMZW4pIHsKKyAgICAgICAgaWYgKCFhc25fcmVhbGxvYyh3aG9sZU1zZywgd2hvbGVNc2dMZW4pKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgidHNtIiwgImJ1aWxkaW5nIGdsb2JhbCBkYXRhIGZhaWxlZC5cbiIpKTsKKyAgICAgICAgICAgIGlmICh0bVN0YXRlUmVmTG9jYWwpCisgICAgICAgICAgICAgICAgU05NUF9GUkVFKHRtU3RhdGVSZWYpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVE9PX0xPTkc7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAqb2Zmc2V0ICs9IHBhcm1zLT5nbG9iYWxEYXRhTGVuOworICAgIG1lbWNweSgqd2hvbGVNc2cgKyAqd2hvbGVNc2dMZW4gLSAqb2Zmc2V0LAorICAgICAgICAgICBwYXJtcy0+Z2xvYmFsRGF0YSwgcGFybXMtPmdsb2JhbERhdGFMZW4pOworCisgICAgLyoKKyAgICAgKiBUb3RhbCBwYWNrZXQgc2VxdWVuY2UuICAKKyAgICAgKi8KKyAgICByYyA9IGFzbl9yZWFsbG9jX3JidWlsZF9zZXF1ZW5jZSh3aG9sZU1zZywgd2hvbGVNc2dMZW4sIG9mZnNldCwgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodV9jaGFyKSAoQVNOX1NFUVVFTkNFIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVNOX0NPTlNUUlVDVE9SKSwgKm9mZnNldCk7CisgICAgaWYgKHJjID09IDApIHsKKyAgICAgICAgREVCVUdNU0dUTCgoInRzbSIsICJidWlsZGluZyBtYXN0ZXIgcGFja2V0IHNlcXVlbmNlIGZhaWxlZC5cbiIpKTsKKyAgICAgICAgaWYgKHRtU3RhdGVSZWZMb2NhbCkKKyAgICAgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfVE9PX0xPTkc7CisgICAgfQorCisgICAgLyogU2VjdGlvbiA0LjIgU3RlcCA1OiAgcmV0dXJuIGV2ZXJ5dGhpbmcgKi8KKworICAgIGlmIChwYXJtcy0+cGR1LT50cmFuc3BvcnRfZGF0YSAmJgorICAgICAgICBwYXJtcy0+cGR1LT50cmFuc3BvcnRfZGF0YSAhPSB0bVN0YXRlUmVmKSB7CisgICAgICAgIHNubXBfbG9nKExPR19FUlIsICJ0c206IG5lZWRlZCB0byBmcmVlIHRyYW5zcG9ydCBkYXRhXG4iKTsKKyAgICAgICAgU05NUF9GUkVFKHBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhKTsKKyAgICB9CisKKyAgICAvKiBwdXQgdGhlIHRyYW5zcG9ydCBzdGF0ZSByZWZlcmVuY2UgaW50byB0aGUgUERVIGZvciB0aGUgdHJhbnNwb3J0ICovCisgICAgcGFybXMtPnBkdS0+dHJhbnNwb3J0X2RhdGEgPSBuZXRzbm1wX21lbWR1cCh0bVN0YXRlUmVmLCBzaXplb2YoKnRtU3RhdGVSZWYpKTsKKyAgICBpZiAoIXBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhKQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAidHNtOiBtYWxsb2MgZmFpbHVyZVxuIik7CisgICAgcGFybXMtPnBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoID0gc2l6ZW9mKCp0bVN0YXRlUmVmKTsKKworICAgIGlmICh0bVN0YXRlUmVmTG9jYWwpCisgICAgICAgIFNOTVBfRlJFRSh0bVN0YXRlUmVmKTsKKyAgICBERUJVR01TR1RMKCgidHNtIiwgIlRTTSBwcm9jZXNzaW5nIGNvbXBsZXRlZC5cbiIpKTsKKyAgICByZXR1cm4gU05NUEVSUl9TVUNDRVNTOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIHRzbV9wcm9jZXNzX2luX21zZworICoKKyAqIFBhcmFtZXRlcnM6CisgKgkoU2VlIGxpc3QgYmVsb3cuLi4pCisgKgorICogUmV0dXJuczoKKyAqCVRTTV9FUlJfTk9fRVJST1IgICAgICAgICAgICAgICAgICAgICAgICBPbiBzdWNjZXNzLgorICoJVFNNX0VSUl9HRU5FUklDX0VSUk9SCisgKglUU01fRVJSX1VOU1VQUE9SVEVEX1NFQ1VSSVRZX0xFVkVMCisgKgorICoKKyAqIFByb2Nlc3NlcyBhbiBpbmNvbWluZyBtZXNzYWdlLgorICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitpbnQKK3RzbV9wcm9jZXNzX2luX21zZyhzdHJ1Y3Qgc25tcF9zZWNtb2RfaW5jb21pbmdfcGFyYW1zICpwYXJtcykKK3sKKyAgICB1X2NoYXIgdHlwZV92YWx1ZTsKKyAgICBzaXplX3QgcmVtYWluaW5nOworICAgIHVfY2hhciAqZGF0YV9wdHI7CisgICAgbmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICp0bVN0YXRlUmVmOworICAgIG5ldHNubXBfdHNtU2VjdXJpdHlSZWZlcmVuY2UgKnRzbVNlY1JlZjsKKyAgICB1X2NoYXIgICAgICAgICAgb3VyRW5naW5lSURbU05NUF9NQVhfRU5HX1NJWkVdOworICAgIHN0YXRpYyBzaXplX3QgICBvdXJFbmdpbmVJRF9sZW4gPSBzaXplb2Yob3VyRW5naW5lSUQpOworICAgIAorICAgIC8qIFNlY3Rpb24gNS4yLCBzdGVwIDEgKi8KKyAgICBvdXJFbmdpbmVJRF9sZW4gPQorICAgICAgICBzbm1wdjNfZ2V0X2VuZ2luZUlEKCh1X2NoYXIqKW91ckVuZ2luZUlELCBvdXJFbmdpbmVJRF9sZW4pOworICAgIGlmIChvdXJFbmdpbmVJRF9sZW4gPT0gMCB8fCBvdXJFbmdpbmVJRF9sZW4gPiAqcGFybXMtPnNlY0VuZ2luZUlETGVuKQorICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisgICAgbWVtY3B5KHBhcm1zLT5zZWNFbmdpbmVJRCwgb3VyRW5naW5lSUQsICpwYXJtcy0+c2VjRW5naW5lSURMZW4pOworCisgICAgLyogU2VjdGlvbiA1LjIsIHN0ZXAgMiAqLworICAgIGlmICghcGFybXMtPnBkdS0+dHJhbnNwb3J0X2RhdGEgfHwKKyAgICAgICAgc2l6ZW9mKG5ldHNubXBfdG1TdGF0ZVJlZmVyZW5jZSkgIT0KKyAgICAgICAgcGFybXMtPnBkdS0+dHJhbnNwb3J0X2RhdGFfbGVuZ3RoKSB7CisgICAgICAgIC8qIGlmIHdlJ3JlIG5vdCBjb21pbmcgaW4gb3ZlciBhIHByb3BlciB0cmFuc3BvcnQ7IGJhaWwhICovCisgICAgICAgIERFQlVHTVNHVEwoKCJ0c20iLCJpbXByb3BlciB0cmFuc3BvcnQgZGF0YVxuIikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHRtU3RhdGVSZWYgPSAobmV0c25tcF90bVN0YXRlUmVmZXJlbmNlICopIHBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhOworICAgIHBhcm1zLT5wZHUtPnRyYW5zcG9ydF9kYXRhID0gTlVMTDsKKworICAgIGlmICh0bVN0YXRlUmVmID09IE5VTEwgfHwKKyAgICAgICAgLyogbm90IG5lZWRlZDogdG1TdGF0ZVJlZi0+dHJhbnNwb3J0RG9tYWluID09IE5VTEwgfHwgKi8KKyAgICAgICAgLyogbm90IG5lZWRlZDogdG1TdGF0ZVJlZi0+dHJhbnNwb3J0QWRkcmVzcyA9PSBOVUxMIHx8ICovCisgICAgICAgIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZVswXSA9PSAnXDAnCisgICAgICAgIC8qIHx8IHNlY2xldmVsIGlzIG5vdCB2YWxpZCAqLworICAgICAgICApIHsKKyAgICAgICAgLyogWFhYOiBzbm1wVHNtSW52YWxpZENhY2hlcysrICovCisgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICB9CisKKyAgICAvKiBTZWN0aW9uIDUuMiwgc3RlcCAzICovCisgICAgaWYgKG5ldHNubXBfZHNfZ2V0X2Jvb2xlYW4oTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0xJQl9UU01fVVNFX1BSRUZJWCkpIHsKKyAgICAgICAgLyogU2VjdGlvbiA1LjIsIHN0ZXAgM2EgKi8KKyAgICAgICAgY29uc3QgY2hhciAqcHJlZml4OworICAgICAgICBwcmVmaXggPSAic3NoOiI7IC8qIFhYWCAqLworCisgICAgICAgIGlmIChwcmVmaXggPT0gTlVMTCkgeworICAgICAgICAgICAgLyogWFhYOiBzbm1wVHNtVW5rbm93blByZWZpeGVzKysgKi8KKyAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX0dFTkVSUjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHJsZW4ocHJlZml4KSA8IDEgfHwgc3RybGVuKHByZWZpeCkgPiA0KSB7CisgICAgICAgICAgICAvKiBYWFg6IHNubXBUc21JbnZhbGlkUHJlZml4ZXMrKyAqLworICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzbnByaW50ZihwYXJtcy0+c2VjTmFtZSwgKnBhcm1zLT5zZWNOYW1lTGVuLAorICAgICAgICAgICAgICAgICAiJXM6JXMiLCBwcmVmaXgsIHRtU3RhdGVSZWYtPnNlY3VyaXR5TmFtZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3RybmNweShwYXJtcy0+c2VjTmFtZSwgdG1TdGF0ZVJlZi0+c2VjdXJpdHlOYW1lLCAqcGFybXMtPnNlY05hbWVMZW4pOworICAgIH0KKyAgICAqcGFybXMtPnNlY05hbWVMZW4gPSBzdHJsZW4ocGFybXMtPnNlY05hbWUpOworICAgIERFQlVHTVNHVEwoKCJ0c20iLCAidXNlcjogJXMvJWRcbiIsIHBhcm1zLT5zZWNOYW1lLCAqcGFybXMtPnNlY05hbWVMZW4pKTsKKworICAgIC8qIFNlY3Rpb24gNS4yIFN0ZXAgNCAqLworICAgIGlmIChwYXJtcy0+c2VjTGV2ZWwgPiB0bVN0YXRlUmVmLT50cmFuc3BvcnRTZWN1cml0eUxldmVsKSB7CisgICAgICAgIC8qIFhYWDogc25tcFRzbUluYWRlcXVhdGVTZWN1cml0eUxldmVscysrICovCisgICAgICAgIHJldHVybiBTTk1QRVJSX1VOU1VQUE9SVEVEX1NFQ19MRVZFTDsKKyAgICB9CisKKyAgICAvKiBTZWN0aW9uIDUuMiBTdGVwIDUgKi8KKworICAgIGlmIChOVUxMID09ICpwYXJtcy0+c2VjU3RhdGVSZWYpIHsKKyAgICAgICAgdHNtU2VjUmVmID0gU05NUF9NQUxMT0NfVFlQRURFRihuZXRzbm1wX3RzbVNlY3VyaXR5UmVmZXJlbmNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICB0c21TZWNSZWYgPSAqcGFybXMtPnNlY1N0YXRlUmVmOworICAgIH0KKworICAgIGlmICghdHNtU2VjUmVmKQorICAgICAgICByZXR1cm4gU05NUEVSUl9HRU5FUlI7CisKKyAgICAqcGFybXMtPnNlY1N0YXRlUmVmID0gdHNtU2VjUmVmOworICAgIHRzbVNlY1JlZi0+dG1TdGF0ZVJlZiA9IHRtU3RhdGVSZWY7CisKKyAgICAvKiBJZiB0aGlzIGRpZCBub3QgY29tZSB0aHJvdWdoIGEgdHVubmVsZWQgY29ubmVjdGlvbiwgdGhpcworICAgICAgIHNlY3VyaXR5IG1vZGVsIGlzIGluYXBwcm9wcmlhdGUgKGFuZCB3b3VsZCBiZSBhIEhVR0Ugc2VjdXJpdHkKKyAgICAgICBob2xlIHRvIGFzc3VtZSBvdGhlcndpc2UpLiAgVGhpcyBpcyBmdW5jdGlvbmFsbHkgYSBkb3VibGUgY2hlY2sKKyAgICAgICBzaW5jZSB0aGUgcGR1IHdvdWxkbid0IGhhdmUgdHJhbnNwb3J0IGRhdGEgb3RoZXJ3aXNlLiAgQnV0IHRoaXMKKyAgICAgICBpcyBzYWZlciB0aG91Z2ggaXMgZnVuY3Rpb25hbGx5IGFuIGV4dHJhIHN0ZXAgYmV5b25kIHRoZSBUU00KKyAgICAgICBSRkMuICovCisgICAgREVCVUdNU0dUTCgoInRzbSIsImNoZWNraW5nIGhvdyB3ZSBnb3QgaGVyZVxuIikpOworICAgIGlmICghKHBhcm1zLT5wZHUtPmZsYWdzICYgVUNEX01TR19GTEFHX1RVTk5FTEVEKSkgeworICAgICAgICBERUJVR01TR1RMKCgidHNtIiwiICBwZHUgbm90IHR1bm5lbGVkXG4iKSk7CisgICAgICAgIGlmICghKHBhcm1zLT5zZXNzLT5mbGFncyAmIE5FVFNOTVBfVFJBTlNQT1JUX0ZMQUdfVFVOTkVMRUQpKSB7CisgICAgICAgICAgICBERUJVR01TR1RMKCgidHNtIiwiICBzZXNzaW9uIG5vdCB0dW5uZWxlZFxuIikpOworICAgICAgICAgICAgcmV0dXJuIFNOTVBFUlJfVVNNX0FVVEhFTlRJQ0FUSU9ORkFJTFVSRTsKKyAgICAgICAgfQorICAgICAgICBERUJVR01TR1RMKCgidHNtIiwiICBidXQgc2Vzc2lvbiBpcyB0dW5uZWxlZFxuIikpOworICAgIH0gZWxzZSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJ0c20iLCIgIHR1bm5lbGVkXG4iKSk7CisgICAgfQorCisgICAgLyogU2VjdGlvbiA1LjIsIFN0ZXAgNiAqLworICAgIC8qCisgICAgICogRWF0IHRoZSBmaXJzdCBvY3RldCBoZWFkZXIuCisgICAgICovCisgICAgcmVtYWluaW5nID0gcGFybXMtPndob2xlTXNnTGVuIC0gKHBhcm1zLT5zZWNQYXJhbXMgLSBwYXJtcy0+d2hvbGVNc2cpOworICAgIGlmICgoZGF0YV9wdHIgPSBhc25fcGFyc2Vfc2VxdWVuY2UocGFybXMtPnNlY1BhcmFtcywgJnJlbWFpbmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZV92YWx1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoQVNOX1VOSVZFUlNBTCB8IEFTTl9QUklNSVRJVkUgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU05fT0NURVRfU1RSKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNtIGZpcnN0IG9jdGV0IikpID09IE5VTEwpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogUkVUVVJOIHBhcnNlIGVycm9yIAorICAgICAgICAgKi8KKyAgICAgICAgcmV0dXJuIFNOTVBFUlJfR0VORVJSOworICAgIH0KKyAgICAKKyAgICAqcGFybXMtPnNjb3BlZFBkdSA9IGRhdGFfcHRyOworICAgICpwYXJtcy0+c2NvcGVkUGR1TGVuID0gcGFybXMtPndob2xlTXNnTGVuIC0gKGRhdGFfcHRyIC0gcGFybXMtPndob2xlTXNnKTsKKworICAgIC8qIFNlY3Rpb24gNS4yLCBTdGVwIDcgKi8KKyAgICAqcGFybXMtPm1heFNpemVSZXNwb25zZSA9IHBhcm1zLT5tYXhNc2dTaXplOyAvKiBYWFggKi8KKworICAgIHRzbVNlY1JlZi0+c2VjdXJpdHlMZXZlbCA9IHBhcm1zLT5zZWNMZXZlbDsKKworICAgIHJldHVybiBTTk1QRVJSX1NVQ0NFU1M7Cit9CmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXB1c20uYyBiL3NubXBsaWIvc25tcHVzbS5jCmluZGV4IDM4OWI2NzcuLjAwNjk5ZmIgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc25tcHVzbS5jCisrKyBiL3NubXBsaWIvc25tcHVzbS5jCkBAIC01MTgsNyArNTE4LDcgQEAKICAgICAgKiBDYWxjdWxhdGUgbGVuZ3Rocy4KICAgICAgKi8KICAgICBpZiAoKGVuZ0lEbGVuID0gYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBzZWNFbmdpbmVJRExlbikpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBzZWNFbmdpbmVJRExlbikpID09IC0xKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKQEAgLTUzNCwyOSArNTM0LDMxIEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBpZiAoKG5hbWVsZW4gPSBhc25fcHJlZGljdF9sZW5ndGgoQVNOX09DVEVUX1NUUiwgMCwgc2VjTmFtZUxlbikpID09IC0xKSB7CisgICAgaWYgKChuYW1lbGVuID0gYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIHNlY05hbWVMZW4pKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCiAgICAgaWYgKChhdXRobGVuID0gYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICptc2dBdXRoUGFybUxlbikpID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICptc2dBdXRoUGFybUxlbikpID09IC0xKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICBpZiAoKHByaXZsZW4gPSBhc25fcHJlZGljdF9sZW5ndGgoQVNOX09DVEVUX1NUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgKm1zZ1ByaXZQYXJtTGVuKSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgKm1zZ1ByaXZQYXJtTGVuKSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgICpzZXFfbGVuID0KICAgICAgICAgZW5nSURsZW4gKyBlbmdCdGxlbiArIGVuZ1RtbGVuICsgbmFtZWxlbiArIGF1dGhsZW4gKyBwcml2bGVuOwogCi0gICAgaWYgKCgqb3RzdGxlbiA9IGFzbl9wcmVkaWN0X2xlbmd0aChBU05fU0VRVUVOQ0UsIDAsICpzZXFfbGVuKSkgPT0gLTEpIHsKKyAgICBpZiAoKCpvdHN0bGVuID0gYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9TRVFVRU5DRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICpzZXFfbGVuKSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIGlmICgoKm1zZ1NlY1Bhcm1MZW4gPSBhc25fcHJlZGljdF9sZW5ndGgoQVNOX09DVEVUX1NUUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICpvdHN0bGVuKSkgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsICpvdHN0bGVuKSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIApAQCAtNTg0LDcgKzU4Niw3IEBACiAgICAgICAgIHNjb3BlZFBkdUxlbiA9IFJPVU5EVVA4KHNjb3BlZFBkdUxlbik7CiAKICAgICAgICAgaWYgKCgqZGF0YWxlbiA9Ci0gICAgICAgICAgICAgYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsIDAsIHNjb3BlZFBkdUxlbikpID09IC0xKSB7CisgICAgICAgICAgICAgYXNuX3ByZWRpY3RfbGVuZ3RoKEFTTl9PQ1RFVF9TVFIsIE5VTEwsIHNjb3BlZFBkdUxlbikpID09IC0xKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewpAQCAtMTM4Nyw3ICsxMzg5LDcgQEAKICAgICBzaXplX3QgICAgICAgICAgc3Bfb2Zmc2V0ID0gMCwgbWFjX29mZnNldCA9IDA7CiAgICAgaW50ICAgICAgICAgICAgIHJjID0gMDsKIAotICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiVVNNIHByb2Nlc3NpbmcgaGFzIGJlZ3VuIChvZmZzZXQgJWQpXG4iLCAqb2Zmc2V0KSk7CisgICAgREVCVUdNU0dUTCgoInVzbSIsICJVU00gcHJvY2Vzc2luZyBoYXMgYmVndW4gKG9mZnNldCAlZClcbiIsIChpbnQpKm9mZnNldCkpOwogCiAgICAgaWYgKHNlY1N0YXRlUmVmICE9IE5VTEwpIHsKICAgICAgICAgLyoKQEAgLTE1MTUsNyArMTUxNyw3IEBACiAgICAgICAgIGlmICgoY2lwaGVydGV4dCA9ICh1X2NoYXIgKikgbWFsbG9jKGNpcGhlcnRleHRsZW4pKSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwKICAgICAgICAgICAgICAgICAgICAgICAgICJjb3VsZG4ndCBtYWxsb2MgJWQgYnl0ZXMgZm9yIGVuY3J5cHRlZCBQRFVcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBjaXBoZXJ0ZXh0bGVuKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAoaW50KWNpcGhlcnRleHRsZW4pKTsKICAgICAgICAgICAgIHVzbV9mcmVlX3VzbVN0YXRlUmVmZXJlbmNlKHNlY1N0YXRlUmVmKTsKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX01BTExPQzsKICAgICAgICAgfQpAQCAtMTU5MCw2ICsxNTkyLDcgQEAKICAgICAgICAgICAgIFNOTVBfRlJFRShjaXBoZXJ0ZXh0KTsKICAgICAgICAgICAgIHJldHVybiBTTk1QRVJSX1VTTV9FTkNSWVBUSU9ORVJST1I7CiAgICAgICAgIH0KKwogI2lmZGVmIE5FVFNOTVBfRU5BQkxFX1RFU1RJTkdfQ09ERQogICAgICAgICBpZiAoZGVidWdfaXNfdG9rZW5fcmVnaXN0ZXJlZCgidXNtL2R1bXAiKSA9PSBTTk1QRVJSX1NVQ0NFU1MpIHsKICAgICAgICAgICAgIGR1bXBfY2h1bmsoInVzbS9kdW1wIiwgInNhbHQgKyBFbmNyeXB0ZWQgZm9ybTogIiwgc2FsdCwKQEAgLTI2MTcsOCArMjYyMCw4IEBACiAKICAgICAgICAgICAgIGlmIChyZW1haW5pbmcgJSA4ICE9IDApIHsKICAgICAgICAgICAgICAgICBERUJVR01TR1RMKCgidXNtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2lwaGVydGV4dCBpcyAlbHUgYnl0ZXMsIG5vdCBhbiBpbnRlZ2VyIG11bHRpcGxlIG9mIDggKHJlbSAlZClcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtYWluaW5nLCByZW1haW5pbmcgJSA4KSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNpcGhlcnRleHQgaXMgJWx1IGJ5dGVzLCBub3QgYW4gaW50ZWdlciBtdWx0aXBsZSBvZiA4IChyZW0gJWx1KVxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZylyZW1haW5pbmcsICh1bnNpZ25lZCBsb25nKXJlbWFpbmluZyAlIDgpKTsKICAgICAgICAgICAgICAgICBpZiAoc25tcF9pbmNyZW1lbnRfc3RhdGlzdGljKFNUQVRfVVNNU1RBVFNERUNSWVBUSU9ORVJST1JTKSA9PQogICAgICAgICAgICAgICAgICAgICAwKSB7CiAgICAgICAgICAgICAgICAgICAgIERFQlVHTVNHVEwoKCJ1c20iLCAiJXNcbiIsICJGYWlsZWQgaW5jcmVtZW50IHN0YXRpc3RpYy4iKSk7CkBAIC0yNzY4LDcgKzI3NzEsNyBAQAogewogICAgIHN0cnVjdCBzbm1wX3NlY21vZF9kZWYgKmRlZjsKIAotICAgIERFQlVHTVNHVEwoKCJpbml0X3VzbSIsICJ1bml0X3VzbTogJWQgJWRcbiIsIHVzbU5vUHJpdlByb3RvY29sWzBdLAorICAgIERFQlVHTVNHVEwoKCJpbml0X3VzbSIsICJ1bml0X3VzbTogJWx1ICVsdVxuIiwgdXNtTm9Qcml2UHJvdG9jb2xbMF0sCiAgICAgICAgICAgICAgICAgdXNtTm9Qcml2UHJvdG9jb2xbMV0pKTsKIAogICAgIHNjX2luaXQoKTsgICAgICAgICAgICAgICAgICAvKiBpbml0YWxpemUgc2NhcGkgY29kZSAqLwpAQCAtMjc3Nyw2ICsyNzgwLDggQEAKICAgICAgKiByZWdpc3RlciBvdXJzZWx2ZXMgYXMgYSBzZWN1cml0eSBzZXJ2aWNlIAogICAgICAqLwogICAgIGRlZiA9IFNOTVBfTUFMTE9DX1NUUlVDVChzbm1wX3NlY21vZF9kZWYpOworICAgIGlmIChkZWYgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuOwogICAgIC8qCiAgICAgICogWFhYOiBkZWYtPmluaXRfc2Vzc19zZWNtb2QgbW92ZSBzdHVmZiBmcm9tIHNubXBfYXBpLmMgCiAgICAgICovCkBAIC0yOTI3LDcgKzI5MzIsNyBAQAogICAgIGlmICh1c2VyLT51c2VyU3RhdHVzICE9IFJTX0FDVElWRSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgREVCVUdNU0dUTCgoImNvbXBhcmV4IiwgIkNvbXBhcmluZzogJWQgJWQgIiwgdXNtTm9Qcml2UHJvdG9jb2xbMF0sCisgICAgREVCVUdNU0dUTCgoImNvbXBhcmV4IiwgIkNvbXBhcmluZzogJWx1ICVsdSAiLCB1c21Ob1ByaXZQcm90b2NvbFswXSwKICAgICAgICAgICAgICAgICB1c21Ob1ByaXZQcm90b2NvbFsxXSkpOwogICAgIERFQlVHTVNHT0lEKCgiY29tcGFyZXgiLCB1c21Ob1ByaXZQcm90b2NvbCwKICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVzbU5vUHJpdlByb3RvY29sKSAvIHNpemVvZihvaWQpKSk7CkBAIC0zNTY2LDExICszNTcxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlci0+cHJpdktleUxlbik7CiAgICAgKmNwdHIrKyA9ICcgJzsKICAgICBjcHRyID0gcmVhZF9jb25maWdfc2F2ZV9vY3RldF9zdHJpbmcoY3B0ciwgdXNlci0+dXNlclB1YmxpY1N0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVzZXItPnVzZXJQdWJsaWNTdHJpbmcgPT0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpID8gMCA6IHN0cmxlbigoY2hhciAqKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJQdWJsaWNTdHJpbmcpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXItPnVzZXJQdWJsaWNTdHJpbmdMZW4pOworCiAgICAgcmVhZF9jb25maWdfc3RvcmUodHlwZSwgbGluZSk7CiB9CiAKQEAgLTM2NDYsNyArMzY0OCw3IEBACiAgICAgfQogCiAgICAgbGluZSA9IHJlYWRfY29uZmlnX3JlYWRfb2N0ZXRfc3RyaW5nKGxpbmUsICZ1c2VyLT51c2VyUHVibGljU3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmbGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnVzZXItPnVzZXJQdWJsaWNTdHJpbmdMZW4pOwogICAgIHJldHVybiB1c2VyOwogfQogCmRpZmYgLS1naXQgYS9zbm1wbGliL3NubXB2My5jIGIvc25tcGxpYi9zbm1wdjMuYwppbmRleCBlM2JkYzUwLi5lNDUxZjMxIDEwMDY0NAotLS0gYS9zbm1wbGliL3NubXB2My5jCisrKyBiL3NubXBsaWIvc25tcHYzLmMKQEAgLTIxNiwxNiArMjE2LDEzIEBACiB2b2lkCiBzbm1wdjNfc2VjTGV2ZWxfY29uZihjb25zdCBjaGFyICp3b3JkLCBjaGFyICpjcHRyKQogewotICAgIGNoYXIgICAgICAgICAgICBidWZbMTAyNF07CiAgICAgaW50ICAgICAgICAgICAgIHNlY0xldmVsOwogCiAgICAgaWYgKChzZWNMZXZlbCA9IHBhcnNlX3NlY0xldmVsX2NvbmYoIHdvcmQsIGNwdHIgKSkgPj0gMCApIHsKICAgICAgICAgbmV0c25tcF9kc19zZXRfaW50KE5FVFNOTVBfRFNfTElCUkFSWV9JRCwgCiAJCQkgICBORVRTTk1QX0RTX0xJQl9TRUNMRVZFTCwgc2VjTGV2ZWwpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHNucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICJVbmtub3duIHNlY3VyaXR5IGxldmVsOiAlcyIsIGNwdHIpOwotICAgICAgICBidWZbIHNpemVvZihidWYpLTEgXSA9IDA7Ci0gICAgICAgIGNvbmZpZ19wZXJyb3IoYnVmKTsKKwluZXRzbm1wX2NvbmZpZ19lcnJvcigiVW5rbm93biBzZWN1cml0eSBsZXZlbDogJXMiLCBjcHRyKTsKICAgICB9CiAgICAgREVCVUdNU0dUTCgoInNubXB2MyIsICJkZWZhdWx0IHNlY0xldmVsIHNldCB0bzogJXMgPSAlZFxuIiwgY3B0ciwKICAgICAgICAgICAgICAgICBuZXRzbm1wX2RzX2dldF9pbnQoTkVUU05NUF9EU19MSUJSQVJZX0lELCAKQEAgLTEwNTYsNyArMTA1Myw3IEBACiBlbmdpbmVCb290c19jb25mKGNvbnN0IGNoYXIgKndvcmQsIGNoYXIgKmNwdHIpCiB7CiAgICAgZW5naW5lQm9vdHMgPSBhdG9pKGNwdHIpICsgMTsKLSAgICBERUJVR01TR1RMKCgic25tcHYzIiwgImVuZ2luZUJvb3RzOiAlZFxuIiwgZW5naW5lQm9vdHMpKTsKKyAgICBERUJVR01TR1RMKCgic25tcHYzIiwgImVuZ2luZUJvb3RzOiAlbHVcbiIsIGVuZ2luZUJvb3RzKSk7CiB9CiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLW8tKioqKioqCkBAIC0xMTk4LDcgKzExOTUsNyBAQAogfQogCiAvKgotICogZW5naW5lSURfb2xkX2NvbmYoY29uc3QgY2hhciAqLCBjaGFyICopOgorICogb2xkZW5naW5lSURfY29uZihjb25zdCBjaGFyICosIGNoYXIgKik6CiAgKiAKICAqIFJlYWRzIGEgb2N0ZXQgc3RyaW5nIGVuY29kZWQgZW5naW5lSUQgaW50byB0aGUgb2xkRW5naW5lSUQgYW5kCiAgKiBvbGRFbmdpbmVJRExlbiBwb2ludGVycy4KQEAgLTEyMTAsNiArMTIwNywyOCBAQAogfQogCiAvKgorICogZXhhY3RFbmdpbmVJRF9jb25mKGNvbnN0IGNoYXIgKiwgY2hhciAqKToKKyAqIAorICogUmVhZHMgYSBvY3RldCBzdHJpbmcgZW5jb2RlZCBlbmdpbmVJRCBpbnRvIHRoZSBlbmdpbmVJRCBhbmQKKyAqIGVuZ2luZUlETGVuIHBvaW50ZXJzLgorICovCit2b2lkCitleGFjdEVuZ2luZUlEX2NvbmYoY29uc3QgY2hhciAqd29yZCwgY2hhciAqY3B0cikKK3sKKyAgICByZWFkX2NvbmZpZ19yZWFkX29jdGV0X3N0cmluZyhjcHRyLCAmZW5naW5lSUQsICZlbmdpbmVJRExlbmd0aCk7CisgICAgaWYgKGVuZ2luZUlETGVuZ3RoID4gTUFYX0VOR0lORUlEX0xFTkdUSCkgeworCW5ldHNubXBfY29uZmlnX2Vycm9yKAorCSAgICAiZXhhY3RFbmdpbmVJRCAnJXMnIHRvbyBsb25nOyB0cnVuY2F0aW5nIHRvICVkIGJ5dGVzIiwKKwkgICAgY3B0ciwgTUFYX0VOR0lORUlEX0xFTkdUSCk7CisgICAgICAgIGVuZ2luZUlEW01BWF9FTkdJTkVJRF9MRU5HVEggLSAxXSA9ICdcMCc7CisgICAgICAgIGVuZ2luZUlETGVuZ3RoID0gTUFYX0VOR0lORUlEX0xFTkdUSDsKKyAgICB9CisgICAgZW5naW5lSURJc1NldCA9IDE7CisgICAgZW5naW5lSURUeXBlID0gRU5HSU5FSURfVFlQRV9FWEFDVDsKK30KKworCisvKgogICogbWVyZWx5IGNhbGwgCiAgKi8KIHZvaWQKQEAgLTEyOTMsNiArMTMxMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIik7CiAgICAgcmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcih0eXBlLCAib2xkRW5naW5lSUQiLCBvbGRlbmdpbmVJRF9jb25mLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CisgICAgcmVnaXN0ZXJfcHJlbmV0c25tcF9taWJfaGFuZGxlcih0eXBlLCAiZXhhY3RFbmdpbmVJRCIsIGV4YWN0RW5naW5lSURfY29uZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpOwogICAgIHJlZ2lzdGVyX3ByZW5ldHNubXBfbWliX2hhbmRsZXIodHlwZSwgImVuZ2luZUlEVHlwZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmdpbmVJRFR5cGVfY29uZiwgTlVMTCwgIm51bSIpOwogICAgIHJlZ2lzdGVyX3ByZW5ldHNubXBfbWliX2hhbmRsZXIodHlwZSwgImVuZ2luZUlETmljIiwgZW5naW5lSUROaWNfY29uZiwKZGlmZiAtLWdpdCBhL3NubXBsaWIvc25wcmludGYuYyBiL3NubXBsaWIvc25wcmludGYuYwppbmRleCBhYWFmN2QxLi5lMjM1ZTE5IDEwMDY0NAotLS0gYS9zbm1wbGliL3NucHJpbnRmLmMKKysrIGIvc25tcGxpYi9zbnByaW50Zi5jCkBAIC02MywyNSArNjMsMTEgQEAKICNpbmNsdWRlIDxjdHlwZS5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCi0jaWYgSEFWRV9TVERBUkdfSAogIyBpbmNsdWRlIDxzdGRhcmcuaD4KLSMgZGVmaW5lIEhBVkVfU1REQVJHUyAgICAgICAgICAgLyogbGV0J3MgaG9wZSB0aGF0IHdvcmtzIGV2ZXJ5d2hlcmUgKG1qKSAqLwogIyBkZWZpbmUgVkFfTE9DQUxfREVDTCAgIHZhX2xpc3QgYXAKICMgZGVmaW5lIFZBX1NUQVJUKGYpICAgICB2YV9zdGFydChhcCwgZikKICMgZGVmaW5lIFZBX1NISUZUKHYsdCkgIDsgICAgICAgLyogbm8tb3AgZm9yIEFOU0kgKi8KICMgZGVmaW5lIFZBX0VORCAgICAgICAgICB2YV9lbmQoYXApCi0jZWxpZiBIQVZFX1ZBUkFSR1NfSAotIyAgaW5jbHVkZSA8dmFyYXJncy5oPgotIyAgdW5kZWYgSEFWRV9TVERBUkdTCi0jICBkZWZpbmUgVkFfTE9DQUxfREVDTCAgIHZhX2xpc3QgYXAKLSMgIGRlZmluZSBWQV9TVEFSVChmKSAgICAgdmFfc3RhcnQoYXApICAvKiBmIGlzIGlnbm9yZWQhICovCi0jICBkZWZpbmUgVkFfU0hJRlQodix0KSB2ID0gdmFfYXJnKGFwLHQpCi0jICBkZWZpbmUgVkFfRU5EICAgICAgICB2YV9lbmQoYXApCi0jZWxzZQotLyoKLSAqIFhYICoqIE5PIFZBUkFSR1MgKiogWFgKLSAqLwotI2VuZGlmCiAKICNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCiAjZGVmaW5lIExET1VCTEUgbG9uZyBkb3VibGUKQEAgLTcyNSwyMCArNzExLDkgQEAKIC8qCiAgKiBWQVJBUkdTMyAKICAqLwotI2lmZGVmIEhBVkVfU1REQVJHUwogaW50CiBzbnByaW50ZihjaGFyICpzdHIsIHNpemVfdCBjb3VudCwgY29uc3QgY2hhciAqZm10LCAuLi4pCi0jZWxzZQotaW50Ci1zbnByaW50Zih2YV9hbGlzdCkKLSAgICAgdmFfZGNsCi0jZW5kaWYKIHsKLSNpZm5kZWYgSEFWRV9TVERBUkdTCi0gICAgY2hhciAgICAgICAgICAgKnN0cjsKLSAgICBzaXplX3QgICAgICAgICAgY291bnQ7Ci0gICAgY2hhciAgICAgICAgICAgKmZtdDsKLSNlbmRpZgogICAgIFZBX0xPQ0FMX0RFQ0w7CiAKICAgICBWQV9TVEFSVChmbXQpOwpkaWZmIC0tZ2l0IGEvc25tcGxpYi9zdHJ0b3VsbC5jIGIvc25tcGxpYi9zdHJ0b3VsbC5jCmluZGV4IGJlOTRmMjkuLmVhNTM4YmEgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc3RydG91bGwuYworKysgYi9zbm1wbGliL3N0cnRvdWxsLmMKQEAgLTIwLDYgKzIwLDggQEAKIAogI2luY2x1ZGUgPG5ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oPgogCisjaWYgIUhBVkVfU1RSVE9VTEwgfHwgZGVmaW5lZChTVFJUT1VMTF9VTklUX1RFU1QpCisKICNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPGN0eXBlLmg+CiAjaW5jbHVkZSA8bGltaXRzLmg+CkBAIC0yNyw5ICsyOSw2IEBACiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8bmV0LXNubXAvdHlwZXMuaD4KLSNpbmNsdWRlIDxuZXQtc25tcC9saWJyYXJ5L3N5c3RlbS5oPgotCiAvKgogICogVUlOVDY0X0M6IEM5OSBtYWNybyBmb3IgdGhlIHN1ZmZpeCBmb3IgdWludDY0X3QgY29uc3RhbnRzLiAKICAqLwpAQCAtMjc0LDYgKzI3Myw4IEBACiAKICNlbmRpZiAvKiBkZWZpbmVkKFNUUlRPVUxMX1VOSVRfVEVTVCkgKi8KIAorI2VuZGlmIC8qICFIQVZFX1NUUlRPVUxMIHx8IGRlZmluZWQoU1RSVE9VTExfVU5JVF9URVNUKSAqLworCiAvKgogICogTG9jYWwgdmFyaWFibGVzOgogICogYy1iYXNpYy1vZmZzZXQ6IDQKZGlmZiAtLWdpdCBhL3NubXBsaWIvc3lzdGVtLmMgYi9zbm1wbGliL3N5c3RlbS5jCmluZGV4IDM4ZWNmZWIuLmJiNDdiN2MgMTAwNjQ0Ci0tLSBhL3NubXBsaWIvc3lzdGVtLmMKKysrIGIvc25tcGxpYi9zeXN0ZW0uYwpAQCAtMzMsNiArMzMsMTIgQEAKICAqIGRpc3RyaWJ1dGVkIHdpdGggdGhlIE5ldC1TTk1QIHBhY2thZ2UuCiAgKi8KIC8qCisgKiBQb3J0aW9ucyBvZiB0aGlzIGZpbGUgYXJlIGNvcHlyaWdodGVkIGJ5OgorICogQ29weXJpZ2h0IChDKSAyMDA3IEFwcGxlLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zIHNwZWNpZmllZCBpbiB0aGUgQ09QWUlORyBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoZSBOZXQtU05NUCBwYWNrYWdlLgorICovCisvKgogICogU3lzdGVtIGRlcGVuZGVudCByb3V0aW5lcyBnbyBoZXJlCiAgKi8KICNpbmNsdWRlIDxuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaD4KQEAgLTgzLDYgKzg5LDEwIEBACiAjaWYgSEFWRV9ORVRfSUZfSAogI2luY2x1ZGUgPG5ldC9pZi5oPgogI2VuZGlmCisjaWYgSEFWRV9ORVREQl9ICisjaW5jbHVkZSA8bmV0ZGIuaD4KKyNlbmRpZgorCiAKICNpZiBIQVZFX1NZU19TT0NLSU9fSAogI2luY2x1ZGUgPHN5cy9zb2NraW8uaD4KQEAgLTE0NCw2ICsxNTQsMTcgQEAKICNpbmNsdWRlIDxzeXMvc3lzdGVtaW5mby5oPgogI2VuZGlmCiAKKyNpZiBkZWZpbmVkKGRhcndpbjkpCisjaW5jbHVkZSA8Y3J0X2V4dGVybnMuaD4gICAgICAgIC8qIGZvciBfTlNHZXRBcmd2KCkgKi8KKyNlbmRpZgorCisjaWYgSEFWRV9QV0RfSAorI2luY2x1ZGUgPHB3ZC5oPgorI2VuZGlmCisjaWYgSEFWRV9HUlBfSAorI2luY2x1ZGUgPGdycC5oPgorI2VuZGlmCisKICNpZiBIQVZFX0xJTUlUU19ICiAjaW5jbHVkZSA8bGltaXRzLmg+CiAjZW5kaWYKQEAgLTE2Niw2ICsxODcsMzMgQEAKICMgZGVmaW5lIExPT1BCQUNLICAgIDB4N2YwMDAwMDEKICNlbmRpZgogCisjaWYgZGVmaW5lZChIQVZFX0ZPUkspCitzdGF0aWMgdm9pZAorX2RhZW1vbl9wcmVwKGludCBzdGRlcnJfbG9nKQoreworICAgIC8qIEF2b2lkIGtlZXBpbmcgYW55IGRpcmVjdG9yeSBpbiB1c2UuICovCisgICAgY2hkaXIoIi8iKTsKKworICAgIGlmIChzdGRlcnJfbG9nKQorICAgICAgICByZXR1cm47CisKKyAgICAvKgorICAgICAqIENsb3NlIGluaGVyaXRlZCBmaWxlIGRlc2NyaXB0b3JzIHRvIGF2b2lkCisgICAgICoga2VlcGluZyB1bm5lY2Vzc2FyeSByZWZlcmVuY2VzLgorICAgICAqLworICAgIGNsb3NlKDApOworICAgIGNsb3NlKDEpOworICAgIGNsb3NlKDIpOworCisgICAgLyoKKyAgICAgKiBSZWRpcmVjdCBzdGR7aW4sb3V0LGVycn0gdG8gL2Rldi9udWxsLCBqdXN0IGluIGNhc2UuCisgICAgICovCisgICAgb3BlbigiL2Rldi9udWxsIiwgT19SRFdSKTsKKyAgICBkdXAoMCk7CisgICAgZHVwKDApOworfQorI2VuZGlmCisKIC8qKgogICogZm9yayBjdXJyZW50IHByb2Nlc3MgaW50byB0aGUgYmFja2dyb3VuZC4KICAqCkBAIC0xOTQsNiArMjQyLDIyIEBACiAgICAgaW50IGkgPSAwOwogICAgIERFQlVHTVNHVCgoImRhZW1vbml6ZSIsImRlYW1vbml6aW5nLi4uXG4iKSk7CiAjaWYgSEFWRV9GT1JLCisjaWYgZGVmaW5lZChkYXJ3aW45KQorICAgICBjaGFyICAgICAgICAgICAgcGF0aCBbUEFUSF9NQVhdID0gIiI7CisgICAgIHVpbnQzMl90ICAgICAgICBzaXplID0gc2l6ZW9mIChwYXRoKTsKKworICAgICAvKgorICAgICAgKiBpZiB3ZSBhcmUgYWxyZWFkeSBsYXVuY2hlZCBpbiBhICJkYWVtb25pemVkIHN0YXRlIiwganVzdAorICAgICAgKiBjbG9zZSAmIHJlZGlyZWN0IHRoZSBmaWxlIGRlc2NyaXB0b3JzCisgICAgICAqLworICAgICBpZihnZXRwcGlkKCkgPD0gMikgeworICAgICAgICAgX2RhZW1vbl9wcmVwKHN0ZGVycl9sb2cpOworICAgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKworICAgICBpZiAoX05TR2V0RXhlY3V0YWJsZVBhdGggKHBhdGgsICZzaXplKSkKKyAgICAgICAgIHJldHVybiAtMTsKKyNlbmRpZgogICAgIC8qCiAgICAgICogRm9yayB0byByZXR1cm4gY29udHJvbCB0byB0aGUgaW52b2tpbmcgcHJvY2VzcyBhbmQgdG8KICAgICAgKiBndWFyYW50ZWUgdGhhdCB3ZSBhcmVuJ3QgYSBwcm9jZXNzIGdyb3VwIGxlYWRlci4KQEAgLTIzNSwyNiArMjk5LDIyIEBACiAgICAgICAgICAgICAKICAgICAgICAgICAgIERFQlVHTVNHVCgoImRhZW1vbml6ZSIsImNoaWxkIGNvbnRpbnVpbmdcbiIpKTsKIAotICAgICAgICAgICAgLyogQXZvaWQga2VlcGluZyBhbnkgZGlyZWN0b3J5IGluIHVzZS4gKi8KLSAgICAgICAgICAgIGNoZGlyKCIvIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmICghc3RkZXJyX2xvZykgewotICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICogQ2xvc2UgaW5oZXJpdGVkIGZpbGUgZGVzY3JpcHRvcnMgdG8gYXZvaWQKLSAgICAgICAgICAgICAgICAgKiBrZWVwaW5nIHVubmVjZXNzYXJ5IHJlZmVyZW5jZXMuCi0gICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgY2xvc2UoMCk7Ci0gICAgICAgICAgICAgICAgY2xvc2UoMSk7Ci0gICAgICAgICAgICAgICAgY2xvc2UoMik7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgKiBSZWRpcmVjdCBzdGR7aW4sb3V0LGVycn0gdG8gL2Rldi9udWxsLCBqdXN0IGluCi0gICAgICAgICAgICAgICAgICogY2FzZS4KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBvcGVuKCIvZGV2L251bGwiLCBPX1JEV1IpOwotICAgICAgICAgICAgICAgIGR1cCgwKTsKLSAgICAgICAgICAgICAgICBkdXAoMCk7Ci0gICAgICAgICAgICB9CisjaWYgISBkZWZpbmVkKGRhcndpbjkpCisgICAgICAgICAgICBfZGFlbW9uX3ByZXAoc3RkZXJyX2xvZyk7CisjZWxzZQorICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICogU29tZSBkYXJ3aW4gY2FsbHMgKHVzaW5nIG1hY2ggcG9ydHMpIGRvbid0IHdvcmsgYWZ0ZXIKKyAgICAgICAgICAgICAgKiBhIGZvcmsuIFNvLCBub3cgdGhhdCB3ZSd2ZSBmb3JrZWQsIHdlIHJlLWV4ZWMgb3Vyc2VsZgorICAgICAgICAgICAgICAqIHRvIGVuc3VyZSB0aGF0IHRoZSBjaGlsZCdzIG1hY2ggcG9ydHMgYXJlIGFsbCBzZXQgdXAgY29ycmVjdGx5LAorICAgICAgICAgICAgICAqIHRoZSBnZXRwcGlkIGNhbGwgYWJvdmUgd2lsbCBwcmV2ZW50IHRoZSBleGVjIGNoaWxkIGZyb20KKyAgICAgICAgICAgICAgKiBmb3JraW5nLi4uCisgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgY2hhciAqIGNvbnN0ICphcmd2ID0gKl9OU0dldEFyZ3YgKCk7CisgICAgICAgICAgICAgREVCVUdNU0dUKCgiZGFlbW9uaXplIiwicmUtZXhlY2luZyBmb3JrZWQgY2hpbGRcbiIpKTsKKyAgICAgICAgICAgICBleGVjdiAocGF0aCwgYXJndik7CisgICAgICAgICAgICAgc25tcF9sb2coTE9HX0VSUiwiRm9ya2VkIGNoaWxkIHVuYWJsZSB0byByZS1leGVjIC0gJXMuXG4iLCBzdHJlcnJvciAoZXJybm8pKTsKKyAgICAgICAgICAgICBleGl0ICgwKTsKKyNlbmRpZgogICAgICAgICB9CiAjZW5kaWYgLyogIVdJTjMyICovCiAgICAgfQpAQCAtNjQ2LDcgKzcwNiw3IEBACiAKICAgICBmb3IgKGlmcnAgPSBpZmMuaWZjX3JlcTsKICAgICAgICAgKGNoYXIgKilpZnJwIDwgKGNoYXIgKilpZmMuaWZjX3JlcSArIGlmYy5pZmNfbGVuOwotI2lmZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfTEVOCisjaWZkZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfTEVOCiAgICAgICAgIGlmcnAgPSAoc3RydWN0IGlmcmVxICopKCgoY2hhciAqKSBpZnJwKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpZnJwLT5pZnJfbmFtZSkgKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZnJwLT5pZnJfYWRkci5zYV9sZW4pCkBAIC04MzUsNiArODk1LDg0IEBACiAjZW5kaWYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICEgV0lOMzIgKi8KIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCitpbnQKK25ldHNubXBfZ2V0aG9zdGJ5bmFtZV92NChjb25zdCBjaGFyKiBuYW1lLCBpbl9hZGRyX3QgKmFkZHJfb3V0KQoreworCisjaWYgSEFWRV9HRVRBRERSSU5GTworICAgIHN0cnVjdCBhZGRyaW5mbyAqYWRkcnMgPSBOVUxMOworICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50OworICAgIGludCAgICAgICAgICAgICBlcnI7CisKKyAgICBtZW1zZXQoJmhpbnQsIDAsIHNpemVvZiBoaW50KTsKKyAgICBoaW50LmFpX2ZsYWdzID0gMDsKKyAgICBoaW50LmFpX2ZhbWlseSA9IFBGX0lORVQ7CisgICAgaGludC5haV9zb2NrdHlwZSA9IFNPQ0tfREdSQU07CisgICAgaGludC5haV9wcm90b2NvbCA9IDA7CisKKyAgICBlcnIgPSBnZXRhZGRyaW5mbyhuYW1lLCBOVUxMLCAmaGludCwgJmFkZHJzKTsKKyAgICBpZiAoZXJyICE9IDApIHsKKyNpZiBIQVZFX0dBSV9TVFJFUlJPUgorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzICVzXG4iLCBuYW1lLAorICAgICAgICAgICAgICAgICBnYWlfc3RyZXJyb3IoZXJyKSk7CisjZWxzZQorICAgICAgICBzbm1wX2xvZyhMT0dfRVJSLCAiZ2V0YWRkcmluZm86ICVzIChlcnJvciAlZClcbiIsIG5hbWUsCisgICAgICAgICAgICAgICAgIGVycik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBpZiAoYWRkcnMgIT0gTlVMTCkgeworICAgICAgICBtZW1jcHkoYWRkcl9vdXQsCisgICAgICAgICAgICAgICAmKChzdHJ1Y3Qgc29ja2FkZHJfaW4gKikgYWRkcnMtPmFpX2FkZHIpLT5zaW5fYWRkciwKKyAgICAgICAgICAgICAgIHNpemVvZihpbl9hZGRyX3QpKTsKKyAgICAgICAgZnJlZWFkZHJpbmZvKGFkZHJzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiZ2V0X3RoaXNhZGRyIiwKKyAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZXNvbHZlIElQdjQgaG9zdG5hbWVcbiIpKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisKKyNlbGlmIEhBVkVfR0VUSE9TVEJZTkFNRQorICAgIHN0cnVjdCBob3N0ZW50ICpocCA9IE5VTEw7CisKKyAgICBocCA9IGdldGhvc3RieW5hbWUobmFtZSk7CisgICAgaWYgKGhwID09IE5VTEwpIHsKKyAgICAgICAgREVCVUdNU0dUTCgoImdldF90aGlzYWRkciIsCisgICAgICAgICAgICAgICAgICAgICJob3N0bmFtZSAoY291bGRuJ3QgcmVzb2x2ZSlcbiIpKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSBpZiAoaHAtPmhfYWRkcnR5cGUgIT0gQUZfSU5FVCkgeworICAgICAgICBERUJVR01TR1RMKCgiZ2V0X3RoaXNhZGRyIiwKKyAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChub3QgQUZfSU5FVCEpXG4iKSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBERUJVR01TR1RMKCgiZ2V0X3RoaXNhZGRyIiwKKyAgICAgICAgICAgICAgICAgICAgImhvc3RuYW1lIChyZXNvbHZlZCBva2F5KVxuIikpOworICAgICAgICBtZW1jcHkoYWRkcl9vdXQsIGhwLT5oX2FkZHIsIHNpemVvZihpbl9hZGRyX3QpKTsKKyAgICB9CisgICAgcmV0dXJuIDA7CisKKyNlbGlmIEhBVkVfR0VUSVBOT0RFQllOQU1FCisgICAgc3RydWN0IGhvc3RlbnQgKmhwID0gTlVMTDsKKyAgICBpbnQgICAgICAgICAgICAgZXJyOworCisgICAgaHAgPSBnZXRpcG5vZGVieW5hbWUocGVlcm5hbWUsIEFGX0lORVQsIDAsICZlcnIpOworICAgIGlmIChocCA9PSBOVUxMKSB7CisgICAgICAgIERFQlVHTVNHVEwoKCJnZXRfdGhpc2FkZHIiLAorICAgICAgICAgICAgICAgICAgICAiaG9zdG5hbWUgKGNvdWxkbid0IHJlc29sdmUgPSAlZClcbiIsIGVycikpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIERFQlVHTVNHVEwoKCJnZXRfdGhpc2FkZHIiLAorICAgICAgICAgICAgICAgICJob3N0bmFtZSAocmVzb2x2ZWQgb2theSlcbiIpKTsKKyAgICBtZW1jcHkoYWRkcl9vdXQsIGhwLT5oX2FkZHIsIHNpemVvZihpbl9hZGRyX3QpKTsKKyAgICByZXR1cm4gMDsKKworI2Vsc2UgLyogSEFWRV9HRVRJUE5PREVCWU5BTUUgKi8KKyAgICByZXR1cm4gLTE7CisjZW5kaWYKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKICNpZm5kZWYgSEFWRV9TVFJOQ0FTRUNNUAogCiAvKgpAQCAtMTA3MCwxMyArMTIwOCwxNCBAQAogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIERORSwgbWFrZSBpdCAKICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc25tcF9sb2coTE9HX0lORk8sICJDcmVhdGluZyBkaXJlY3Rvcnk6ICVzXG4iLCBidWYpOwogI2lmZGVmIFdJTjMyCiAgICAgICAgICAgICBpZiAoQ3JlYXRlRGlyZWN0b3J5KGJ1ZiwgTlVMTCkgPT0gMCkKICNlbHNlCiAgICAgICAgICAgICBpZiAobWtkaXIoYnVmLCBtb2RlKSA9PSAtMSkKICNlbmRpZgogICAgICAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNubXBfbG9nKExPR19JTkZPLCAiQ3JlYXRlZCBkaXJlY3Rvcnk6ICVzXG4iLCBidWYpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLyoKICAgICAgICAgICAgICAqIGV4aXN0cywgaXMgaXQgYSBmaWxlPyAKQEAgLTEyMTQsMyArMTM1Myw0NSBAQAogI2VuZGlmCiB9CiAKK2ludCBuZXRzbm1wX3N0cl90b191aWQoY29uc3QgY2hhciAqdXNlcm9ydWlkKSB7CisgICAgaW50IHVpZDsKKyNpZiBIQVZFX0dFVFBXTkFNICYmIEhBVkVfUFdEX0gKKyAgICBzdHJ1Y3QgcGFzc3dkICpwd2Q7CisjZW5kaWYKKworICAgIHVpZCA9IGF0b2kodXNlcm9ydWlkKTsKKworICAgIGlmICggdWlkID09IDAgKSB7CisjaWYgSEFWRV9HRVRQV05BTSAmJiBIQVZFX1BXRF9ICisgICAgICAgIHB3ZCA9IGdldHB3bmFtKCB1c2Vyb3J1aWQgKTsKKyAgICAgICAgaWYgKHB3ZCkKKyAgICAgICAgICAgIHVpZCA9IHB3ZC0+cHdfdWlkOworICAgICAgICBlbHNlCisjZW5kaWYKKyAgICAgICAgICAgIHNubXBfbG9nKExPR19XQVJOSU5HLCAiQ2FuJ3QgaWRlbnRpZnkgdXNlciAoJXMpLlxuIiwgdXNlcm9ydWlkKTsKKyAgICB9CisgICAgcmV0dXJuIHVpZDsKKyAgICAKK30KKworaW50IG5ldHNubXBfc3RyX3RvX2dpZChjb25zdCBjaGFyICpncm91cG9yZ2lkKSB7CisgICAgaW50IGdpZDsKKyNpZiBIQVZFX0dFVEdSTkFNICYmIEhBVkVfR1JQX0gKKyAgICBzdHJ1Y3QgZ3JvdXAgICpncnA7CisjZW5kaWYKKworICAgIGdpZCA9IGF0b2koZ3JvdXBvcmdpZCk7CisKKyAgICBpZiAoIGdpZCA9PSAwICkgeworI2lmIEhBVkVfR0VUR1JOQU0gJiYgSEFWRV9HUlBfSAorICAgICAgICBncnAgPSBnZXRncm5hbSggZ3JvdXBvcmdpZCApOworICAgICAgICBpZiAoZ3JwKQorICAgICAgICAgICAgZ2lkID0gZ3JwLT5ncl9naWQ7CisgICAgICAgIGVsc2UKKyNlbmRpZgorICAgICAgICAgICAgc25tcF9sb2coTE9HX1dBUk5JTkcsICJDYW4ndCBpZGVudGlmeSBncm91cCAoJXMpLlxuIiwKKyAgICAgICAgICAgICAgICAgICAgIGdyb3Vwb3JnaWQpOworICAgIH0KKworICAgIHJldHVybiBnaWQ7Cit9CmRpZmYgLS1naXQgYS9zbm1wbGliL3Rvb2xzLmMgYi9zbm1wbGliL3Rvb2xzLmMKaW5kZXggMjIwNmZmMy4uNjFhMzY0NCAxMDA2NDQKLS0tIGEvc25tcGxpYi90b29scy5jCisrKyBiL3NubXBsaWIvdG9vbHMuYwpAQCAtNDMsNiArNDMsMTQgQEAKICNpZmRlZiBIQVZFX0FSUEFfSU5FVF9ICiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAjZW5kaWYKKyNpZmRlZiBIQVZFX0NSVERCR19ICisvKgorICogRGVmaW5lIF9DUlREQkdfTUFQX0FMTE9DIHN1Y2ggdGhhdCBpbiBkZWJ1ZyBidWlsZHMgKHdoZW4gX0RFQlVHIGhhcyBiZWVuCisgKiBkZWZpbmVkKSBlLmcuIG1hbGxvYygpIGlzIHJlcm91dGVkIHRvIF9tYWxsb2NfZGJnKCkuCisgKi8KKyNkZWZpbmUgX0NSVERCR19NQVBfQUxMT0MgMQorI2luY2x1ZGUgPGNydGRiZy5oPgorI2VuZGlmCiAjaWZkZWYgY3lnd2luCiAjaW5jbHVkZSA8d2luZG93cy5oPgogI2VuZGlmCkBAIC02Myw5ICs3MSwxMSBAQAogI2luY2x1ZGUgPG5ldC1zbm1wL2xpYnJhcnkvbWliLmg+CiAjaW5jbHVkZSA8bmV0LXNubXAvbGlicmFyeS9zY2FwaS5oPgogCi0jaWZkZWYgV0lOMzIKIC8qKgogICogVGhpcyBmdW5jdGlvbiBpcyBhIHdyYXBwZXIgZm9yIHRoZSBzdHJkdXAgZnVuY3Rpb24uCisgKgorICogQG5vdGUgVGhlIHN0cmR1cCgpIGltcGxlbWVudGF0aW9uIGNhbGxzIF9tYWxsb2NfZGJnKCkgd2hlbiBsaW5raW5nIHdpdGgKKyAqIE1TVkNSVD8/RC5kbGwgYW5kIG1hbGxvYygpIHdoZW4gbGlua2luZyB3aXRoIE1TVkNSVD8/LmRsbAogICovCiBjaGFyICogbmV0c25tcF9zdHJkdXAoIGNvbnN0IGNoYXIgKiBwdHIpCiB7CkBAIC0xMDQsNyArMTE0LDYgQEAKICAgICBpZiAocHRyKQogICAgICAgICBmcmVlKHB0cik7CiB9Ci0jZW5kaWYgLyogV0lOMzIgKi8KIAogLyoqCiAgKiBUaGlzIGZ1bmN0aW9uIGluY3JlYXNlIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgcG9pbnRlZCBhdCBieSAqYnVmLCB3aGljaCBpcwpAQCAtNzY1LDcgKzc3NCw3IEBACiBhdGltZV9uZXdNYXJrZXIodm9pZCkKIHsKICAgICBtYXJrZXJfdCAgICAgICAgcG0gPSAobWFya2VyX3QpIGNhbGxvYygxLCBzaXplb2Yoc3RydWN0IHRpbWV2YWwpKTsKLSAgICBnZXR0aW1lb2ZkYXkoKHN0cnVjdCB0aW1ldmFsICopIHBtLCAwKTsKKyAgICBnZXR0aW1lb2ZkYXkoKHN0cnVjdCB0aW1ldmFsICopIHBtLCBOVUxMKTsKICAgICByZXR1cm4gcG07CiB9CiAKQEAgLTc3OCw3ICs3ODcsNyBAQAogICAgIGlmICghcG0pCiAgICAgICAgIHJldHVybjsKIAotICAgIGdldHRpbWVvZmRheSgoc3RydWN0IHRpbWV2YWwgKikgcG0sIDApOworICAgIGdldHRpbWVvZmRheSgoc3RydWN0IHRpbWV2YWwgKikgcG0sIE5VTEwpOwogfQogCiAKZGlmZiAtLWdpdCBhL3NubXBsaWIvd2luc2VydmljZS5jIGIvc25tcGxpYi93aW5zZXJ2aWNlLmMKaW5kZXggYzMyM2NmMC4uMDUwZjRlNSAxMDA2NDQKLS0tIGEvc25tcGxpYi93aW5zZXJ2aWNlLmMKKysrIGIvc25tcGxpYi93aW5zZXJ2aWNlLmMKQEAgLTYsNiArNiw4IEBACiAKICNpZmRlZiBXSU4zMgogCisjaW5jbHVkZSA8bmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmg+CisKICNpbmNsdWRlIDx3aW5kb3dzLmg+CiAjaW5jbHVkZSA8dGNoYXIuaD4KIApAQCAtMzUsNiArMzcsMTUgQEAKICNkZWZpbmUgQ291bnRPZihhcnIpICggc2l6ZW9mKGFycikgLyBzaXplb2YoYXJyWzBdKSApCiAKIAorI2lmIGRlZmluZWQoV0lOMzIpICYmIGRlZmluZWQoSEFWRV9XSU4zMl9QTEFURk9STV9TREspICYmICFkZWZpbmVkKG1pbmd3MzIpCisjcHJhZ21hIGNvbW1lbnQobGliLCAiaXBobHBhcGkubGliIikKKyNpZmRlZiBVU0lOR19XSU5FWFRETExfTU9EVUxFCisjcHJhZ21hIGNvbW1lbnQobGliLCAic25tcGFwaS5saWIiKQorI3ByYWdtYSBjb21tZW50KGxpYiwgIm1nbXRhcGkubGliIikKKyNlbmRpZgorI2VuZGlmCisKKyAKICAgICAvKgogICAgICAqIEV4dGVybmFsIGdsb2JhbCB2YXJpYWJsZXMgdXNlZCBoZXJlCiAgICAgICovCmRpZmYgLS1naXQgYS90ZXN0aW5nL1RFU1RDT05GLnNoIGIvdGVzdGluZy9URVNUQ09ORi5zaAppbmRleCBkNThlZmZkLi5jOGU4Yzk5IDEwMDY0NAotLS0gYS90ZXN0aW5nL1RFU1RDT05GLnNoCisrKyBiL3Rlc3RpbmcvVEVTVENPTkYuc2gKQEAgLTk0LDYgKzk0LDcgQEAKIFNOTVBfVEVTVERJUj0iJFNOTVBfQkFTRURJUi90ZXN0cyIKIFNOTVBfQ09ORklHX0ZJTEU9IiRTTk1QX1RNUERJUi9zbm1wZC5jb25mIgogU05NUFRSQVBEX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvc25tcHRyYXBkLmNvbmYiCitTTk1QQVBQX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvc25tcC5jb25mIgogQUdFTlRYX0NPTkZJR19GSUxFPSIkU05NUF9UTVBESVIvYWdlbnR4LmNvbmYiCiBTTk1QX1NOTVBUUkFQRF9MT0dfRklMRT0iJFNOTVBfVE1QRElSL3NubXB0cmFwZC5sb2ciCiBTTk1QX1NOTVBUUkFQRF9QSURfRklMRT0iJFNOTVBfVE1QRElSL3NubXB0cmFwZC5waWQiCmRpZmYgLS1naXQgYS90ZXN0aW5nL2V2YWxfdG9vbHMuc2ggYi90ZXN0aW5nL2V2YWxfdG9vbHMuc2gKaW5kZXggYTlkM2FkMS4uOWMwOWNjNyAxMDA2NDQKLS0tIGEvdGVzdGluZy9ldmFsX3Rvb2xzLnNoCisrKyBiL3Rlc3RpbmcvZXZhbF90b29scy5zaApAQCAtMzcyLDYgKzM3MiwxNCBAQAogICAgIGVjaG8gJCogPj4gJFNOTVBUUkFQRF9DT05GSUdfRklMRQogfQogCitDT05GSUdBUFAoKSB7CisgICAgaWYgWyAieCRTTk1QQVBQX0NPTkZJR19GSUxFIiA9ICJ4IiBdOyB0aGVuCisJZWNobyAiJDA6IGZhaWxlZCBiZWNhdXNlIHZhcjogU05NUEFQUF9DT05GSUdfRklMRSB3YXNuJ3Qgc2V0IgorCWV4aXQgMTsKKyAgICBmaQorICAgIGVjaG8gJCogPj4gJFNOTVBBUFBfQ09ORklHX0ZJTEUKK30KKwogIwogIyBjb21tb24gdG8gU1RBUlRBR0VOVCBhbmQgU1RBUlRUUkFQRAogIyBsb2cgY29tbWFuZCB0byAiaW52b2tlZCIgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9TdHJhbnNwb3J0IGIvdGVzdGluZy90ZXN0cy9TdHJhbnNwb3J0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmFmZGIxMzEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL1N0cmFuc3BvcnQKQEAgLTAsMCArMSwxNiBAQAorZXhwb3J0IFNOTVBfVFJBTlNQT1JUX1NQRUMKK2V4cG9ydCBTTk1QX1NOTVBEX1BPUlQKK2V4cG9ydCBTTk1QX1RFU1RfREVTVAorCisjIGNvbmZpZ3VyZSB0aGUgYWdlbnQgdG8gYWNjZXB0IHVzZXIgaW5pdGlhbCB3aXRoIG5vQXV0aE5vUHJpdgorLiAuL1N2M2NvbmZpZworCitTVEFSVEFHRU5UCisKK0NBUFRVUkUgInNubXBnZXQgLU9uICRTTk1QX0ZMQUdTICROT0FVVEhURVNUQVJHUyAkU05NUF9UUkFOU1BPUlRfU1BFQzokU05NUF9URVNUX0RFU1QkU05NUF9TTk1QRF9QT1JUIC4xLjMuNi4xLjIuMS4xLjMuMCIKKworU1RPUEFHRU5UCisKK0NIRUNLICIuMS4zLjYuMS4yLjEuMS4zLjAgPSBUaW1ldGlja3M6IgorCitGSU5JU0hFRApkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9TdmFjbWNvbmZpZyBiL3Rlc3RpbmcvdGVzdHMvU3ZhY21jb25maWcKaW5kZXggY2RjYzM1Yi4uZDlkODYyZCAxMDA2NDQKLS0tIGEvdGVzdGluZy90ZXN0cy9TdmFjbWNvbmZpZworKysgYi90ZXN0aW5nL3Rlc3RzL1N2YWNtY29uZmlnCkBAIC0xOCw2ICsxOCw4IEBACiBDT05GSUdBR0VOVCBjb20yc2VjIHRlc3Rjb21tdW5pdHlzZWMyICBkZWZhdWx0IHRlc3Rjb21tdW5pdHkyCiAKIGlmIFsgIiRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ1ZHA2IiAtbyAiJFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInRjcDYiIF07dGhlbiAKK0NPTkZJR0FHRU5UIHJvY29tbXVuaXR5NiB0ZXN0cm9jb21tdW5pdHkgOjoxIC4xLjMuNi4xLjIuMS4xLjUuMAorQ09ORklHQUdFTlQgcndjb21tdW5pdHk2IHRlc3Ryd2NvbW11bml0eSA6OjEgLjEuMy42LjEuMi4xLjEuNS4wCiBDT05GSUdBR0VOVCBjb20yc2VjNiB0ZXN0Y29tbXVuaXR5c2VjMSAgZGVmYXVsdCB0ZXN0Y29tbXVuaXR5MQogQ09ORklHQUdFTlQgY29tMnNlYzYgdGVzdGNvbW11bml0eXNlYzIgIGRlZmF1bHQgdGVzdGNvbW11bml0eTIKIGZpCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QxMjBwcm94eWdldCBiL3Rlc3RpbmcvdGVzdHMvVDEyMHByb3h5Z2V0CmluZGV4IGQxMDE3N2IuLjNjODZlMTcgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvdGVzdHMvVDEyMHByb3h5Z2V0CisrKyBiL3Rlc3RpbmcvdGVzdHMvVDEyMHByb3h5Z2V0CkBAIC05LDcgKzksNyBAQAogU0tJUElGIE5FVFNOTVBfRElTQUJMRV9TTk1QVjJDCiAKICMgWFhYOiB1Y2Qtc25tcC9wcm94eSBkb2Vzbid0IHByb3Blcmx5IHN1cHBvcnQgVENQIC0tIHJlbW92ZSB0aGlzIG9uY2UgaXQgZG9lcwotWyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwIiBdICYmIFNLSVAKK1sgIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHRjcCIgLW8gIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHRjcDYiIF0gJiYgU0tJUAogCiAjCiAjIEJlZ2luIHRlc3QKQEAgLTM5LDYgKzM5LDkgQEAKICAgU05NUF9TTk1QRF9MT0dfRklMRT0kU05NUF9TTk1QRF9MT0dfRklMRS5udW0yCiAgIFNOTVBfQ09ORklHX0ZJTEU9IiRTTk1QX1RNUERJUi9wcm94eS5jb25mIgogICBlY2hvICJyd2NvbW11bml0eSB0ZXN0Y29tbXVuaXR5IiA+PiAkU05NUF9DT05GSUdfRklMRQorICBpZiBbICIkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAidWRwNiIgLW8gIiRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ0Y3A2IiBdO3RoZW4KKyAgICBlY2hvICJyd2NvbW11bml0eTYgdGVzdGNvbW11bml0eSIgPj4gJFNOTVBfQ09ORklHX0ZJTEUKKyAgZmkKICAgQUdFTlRfRkxBR1M9JE9SSUdfQUdFTlRfRkxBR1MKICAgT1JJR19TTk1QX1NOTVBEX1BPUlQ9JFNOTVBfU05NUERfUE9SVAogICBTTk1QX1NOTVBEX1BPUlQ9IiR7U05NUF9BR0VOVFhfUE9SVH0iCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QxMjFwcm94eXNldCBiL3Rlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0CmluZGV4IDhjMWM3YTYuLjNhZjBiNGUgMTAwNjQ0Ci0tLSBhL3Rlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0CisrKyBiL3Rlc3RpbmcvdGVzdHMvVDEyMXByb3h5c2V0CkBAIC0xMCw3ICsxMCw3IEBACiBTS0lQSUYgICAgTkVUU05NUF9ESVNBQkxFX1NFVF9TVVBQT1JUCiAKICMgWFhYOiB1Y2Qtc25tcC9wcm94eSBkb2Vzbid0IHByb3Blcmx5IHN1cHBvcnQgVENQIC0tIHJlbW92ZSB0aGlzIG9uY2UgaXQgZG9lcwotWyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dGNwIiBdICYmIFNLSVAKK1sgIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHRjcCIgLW8gIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHRjcDYiIF0gJiYgU0tJUAogCiAjCiAjIEJlZ2luIHRlc3QKQEAgLTQwLDYgKzQwLDkgQEAKICAgU05NUF9TTk1QRF9MT0dfRklMRT0kU05NUF9TTk1QRF9MT0dfRklMRS5udW0yCiAgIFNOTVBfQ09ORklHX0ZJTEU9IiRTTk1QX1RNUERJUi9wcm94eS5jb25mIgogICBlY2hvICJyd2NvbW11bml0eSB0ZXN0Y29tbXVuaXR5IiA+PiAkU05NUF9DT05GSUdfRklMRQorICBpZiBbICIkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAidWRwNiIgLW8gIiRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ0Y3A2IiBdO3RoZW4KKyAgICBlY2hvICJyd2NvbW11bml0eTYgdGVzdGNvbW11bml0eSIgPj4gJFNOTVBfQ09ORklHX0ZJTEUKKyAgZmkKICAgZWNobyAicHN5c2NvbnRhY3QgdGVzdGNvbnRhY3QiID4+ICRTTk1QX0NPTkZJR19GSUxFCiAgIEFHRU5UX0ZMQUdTPSIkT1JJR19BR0VOVF9GTEFHUyAtRG1pYl9pbml0IgogICBPUklHX1NOTVBfU05NUERfUE9SVD0kU05NUF9TTk1QRF9QT1JUCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QxMjJwcm94eXNldGZhaWwgYi90ZXN0aW5nL3Rlc3RzL1QxMjJwcm94eXNldGZhaWwKaW5kZXggOGVjZjliZi4uMTllMjBlNCAxMDA2NDQKLS0tIGEvdGVzdGluZy90ZXN0cy9UMTIycHJveHlzZXRmYWlsCisrKyBiL3Rlc3RpbmcvdGVzdHMvVDEyMnByb3h5c2V0ZmFpbApAQCAtNDAsNiArNDAsOSBAQAogICBTTk1QX1NOTVBEX0xPR19GSUxFPSRTTk1QX1NOTVBEX0xPR19GSUxFLm51bTIKICAgU05NUF9DT05GSUdfRklMRT0iJFNOTVBfVE1QRElSL3Byb3h5LmNvbmYiCiAgIGVjaG8gInJ3Y29tbXVuaXR5IHRlc3Rjb21tdW5pdHkiID4+ICRTTk1QX0NPTkZJR19GSUxFCisgIGlmIFsgIiRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ1ZHA2IiAtbyAiJFNOTVBfVFJBTlNQT1JUX1NQRUMiID0gInRjcDYiIF07dGhlbgorICAgIGVjaG8gInJ3Y29tbXVuaXR5NiB0ZXN0Y29tbXVuaXR5IiA+PiAkU05NUF9DT05GSUdfRklMRQorICBmaQogIyAgZWNobyAic3lzY29udGFjdCB0ZXN0Y29udGFjdCIgPj4gJFNOTVBfQ09ORklHX0ZJTEUKICAgQUdFTlRfRkxBR1M9IiRPUklHX0FHRU5UX0ZMQUdTIC1EbWliX2luaXQiCiAgIE9SSUdfU05NUF9TTk1QRF9QT1JUPSRTTk1QX1NOTVBEX1BPUlQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvVDE2MHNubXBuZXRzdGF0IGIvdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQKaW5kZXggMTVkZTU0Yy4uMDRiNzQ0MyAxMDA2NDQKLS0tIGEvdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQKKysrIGIvdGVzdGluZy90ZXN0cy9UMTYwc25tcG5ldHN0YXQKQEAgLTUsMTcgKzUsMTcgQEAKICMgc25tcG5ldHN0YXQgdGVzdCBvbmx5IHdvcmtzIHdpdGggVURQIG9yIFRDUAogaWYgWyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4IiAtbyAieCRTTk1QX1RSQU5TUE9SVF9TUEVDIiA9ICJ4dWRwIiBdOyB0aGVuCiAgIHByb3RvPXVkcAorICBIRUFERVIgImlmIHNubXBuZXRzdGF0IGZpbmRzIHRoZSBydW5uaW5nIGFnZW50IGluIHVkcFRhYmxlIgogICBTS0lQSUZOT1QgVVNJTkdfTUlCSUlfVURQVEFCTEVfTU9EVUxFCiBlbGlmIFsgIngkU05NUF9UUkFOU1BPUlRfU1BFQyIgPSAieHRjcCIgXTsgdGhlbgogICBwcm90bz10Y3AKKyAgSEVBREVSICJpZiBzbm1wbmV0c3RhdCBmaW5kcyB0aGUgcnVubmluZyBhZ2VudCBpbiB0Y3BUYWJsZSIKICAgU0tJUElGTk9UIFVTSU5HX01JQklJX1RDUFRBQkxFX01PRFVMRQogZWxzZQogICBIRUFERVIgImlmIHNubXBuZXRzdGF0IGZpbmRzIHRoZSBydW5uaW5nIGFnZW50IGluIHVkcFRhYmxlL3RjcFRhYmxlIgogICBTS0lQCiBmaQogCi1IRUFERVIgImlmIHNubXBuZXRzdGF0IGZpbmRzIHRoZSBydW5uaW5nIGFnZW50IGluICR7cHJvdG99VGFibGUiCi0KICMgb24gc29tZSBzeXN0ZW1zIHRoZSBhZ2VudCBuZWVkcyB0byBiZSBydW4gYXMgcm9vdCB0byBhY2Nlc3MgdWRwVGFibGUvdGNwVGFibGUKICMgLSBlbHNlIGZvcmNlIHNraXAKIGNhc2UgInhgdW5hbWUgLXNgIiBpbgpkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMzAwdWRwIGIvdGVzdGluZy90ZXN0cy9UMzAwdWRwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNzU3NDcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL1QzMDB1ZHAKQEAgLTAsMCArMSwxNSBAQAorIyEvYmluL3NoCisKKy4gLi4vZXZhbF90b29scy5zaAorCitIRUFERVIgVURQIFRyYW5zcG9ydAorCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKKworIworIyBCZWdpbiB0ZXN0CisjCisKK1NOTVBfVFJBTlNQT1JUX1NQRUM9dWRwCisKKy4gLi9TdHJhbnNwb3J0CmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QzMTB0Y3AgYi90ZXN0aW5nL3Rlc3RzL1QzMTB0Y3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM0OWJmMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvdGVzdHMvVDMxMHRjcApAQCAtMCwwICsxLDE2IEBACisjIS9iaW4vc2gKKworLiAuLi9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBUQ1AgVHJhbnNwb3J0CisKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorU0tJUElGTk9UIE5FVFNOTVBfVFJBTlNQT1JUX1RDUF9ET01BSU4KKworIworIyBCZWdpbiB0ZXN0CisjCisKK1NOTVBfVFJBTlNQT1JUX1NQRUM9dGNwCisKKy4gLi9TdHJhbnNwb3J0CmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QzMjB1ZHB2NiBiL3Rlc3RpbmcvdGVzdHMvVDMyMHVkcHY2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MjYwYjIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL1QzMjB1ZHB2NgpAQCAtMCwwICsxLDE3IEBACisjIS9iaW4vc2gKKworLiAuLi9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBVRFA2IFRyYW5zcG9ydAorCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKK1NLSVBJRk5PVCBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTgorCisjCisjIEJlZ2luIHRlc3QKKyMKKworU05NUF9UUkFOU1BPUlRfU1BFQz11ZHA2CitTTk1QX1RFU1RfREVTVD0iWzo6MV06IgorCisuIC4vU3RyYW5zcG9ydApkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy9UMzMwdGNwdjYgYi90ZXN0aW5nL3Rlc3RzL1QzMzB0Y3B2NgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjM5OTUxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy9UMzMwdGNwdjYKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisKKy4gLi4vZXZhbF90b29scy5zaAorCitIRUFERVIgVENQNiBUcmFuc3BvcnQKKworU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCitTS0lQSUZOT1QgTkVUU05NUF9UUkFOU1BPUlRfVENQSVBWNl9ET01BSU4KKworIworIyBCZWdpbiB0ZXN0CisjCisKK1NOTVBfVFJBTlNQT1JUX1NQRUM9dGNwNgorU05NUF9URVNUX0RFU1Q9Ils6OjFdOiIKKworLiAuL1N0cmFuc3BvcnQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvVDM1MHVuaXggYi90ZXN0aW5nL3Rlc3RzL1QzNTB1bml4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZDk2YTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL1QzNTB1bml4CkBAIC0wLDAgKzEsMjAgQEAKKyMhL2Jpbi9zaAorCisuIC4uL2V2YWxfdG9vbHMuc2gKKworSEVBREVSIFVuaXggVHJhbnNwb3J0CisKK1NLSVBJRk5PVCBVU0lOR19NSUJJSV9TWVNURU1fTUlCX01PRFVMRQorU0tJUElGTk9UIE5FVFNOTVBfVFJBTlNQT1JUX1VOSVhfRE9NQUlOCisKKyMKKyMgQmVnaW4gdGVzdAorIworCitTTk1QX1RSQU5TUE9SVF9TUEVDPXVuaXgKK1NOTVBfVEVTVF9ERVNUPSR7U05NUF9UTVBESVJ9L3Rlc3R1bml4c29ja2V0CisKKy4gLi9TdHJhbnNwb3J0CisKKyMgY2xlYW51cAorcm0gLWYgJFNOTVBfVEVTVF9ERVNUCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL1QzNjBkdGxzdWRwIGIvdGVzdGluZy90ZXN0cy9UMzYwZHRsc3VkcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGE3YWYxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy9UMzYwZHRsc3VkcApAQCAtMCwwICsxLDUyIEBACisjIS9iaW4vc2gKKworLiAuLi9ldmFsX3Rvb2xzLnNoCisKK0hFQURFUiBEVExTLVVEUCBUcmFuc3BvcnQKKworU0tJUElGTk9UIFVTSU5HX01JQklJX1NZU1RFTV9NSUJfTU9EVUxFCitTS0lQSUZOT1QgTkVUU05NUF9UUkFOU1BPUlRfRFRMU1VEUF9ET01BSU4KKworIworIyBCZWdpbiB0ZXN0CisjCisKK1NOTVBfVFJBTlNQT1JUX1NQRUM9ZHRsc3VkcAorZXhwb3J0IFNOTVBfVFJBTlNQT1JUX1NQRUMKKworQ09ORklHQUdFTlQgJ1tzbm1wXScgZGVmWDUwOVNlcnZlclB1YiAgCWBwd2RgL3Rlc3QtbG9jYWxob3N0LmNlcnQKK0NPTkZJR0FHRU5UICdbc25tcF0nIGRlZlg1MDlTZXJ2ZXJQcml2IAlgcHdkYC90ZXN0LWxvY2FsaG9zdC5wcml2CitDT05GSUdBR0VOVCAnW3NubXBdJyBkZWZYNTA5Q2xpZW50Q2VydHMgYHB3ZGAvdGVzdC11c2VyLmNlcnQKKworQ09ORklHQUdFTlQgJ1tzbm1wXScgZGVmWDUwOUNsaWVudFB1YiAgCWBwd2RgL3Rlc3QtdXNlci5jZXJ0CitDT05GSUdBR0VOVCAnW3NubXBdJyBkZWZYNTA5Q2xpZW50UHJpdiAJYHB3ZGAvdGVzdC11c2VyLnByaXYKK0NPTkZJR0FHRU5UICdbc25tcF0nIGRlZlg1MDlTZXJ2ZXJDZXJ0cyBgcHdkYC90ZXN0LWxvY2FsaG9zdC5jZXJ0CisKK0NPTkZJR0FHRU5UICdbc25tcF0nIEFsbG93U2VsZlNpZ25lZFg1MDkgMQorCitDT05GSUdBUFAgICBkZWZYNTA5Q2xpZW50UHViICAJYHB3ZGAvdGVzdC11c2VyLmNlcnQKK0NPTkZJR0FQUCAgIGRlZlg1MDlDbGllbnRQcml2IAlgcHdkYC90ZXN0LXVzZXIucHJpdgorQ09ORklHQVBQICAgZGVmWDUwOVNlcnZlckNlcnRzICBgcHdkYC90ZXN0LWxvY2FsaG9zdC5jZXJ0CisKK0NPTkZJR0FQUCAgICdbc25tcF0nIGRlZlg1MDlTZXJ2ZXJQdWIgIAlgcHdkYC90ZXN0LWxvY2FsaG9zdC5jZXJ0CitDT05GSUdBUFAgICAnW3NubXBdJyBkZWZYNTA5U2VydmVyUHJpdiAJYHB3ZGAvdGVzdC1sb2NhbGhvc3QucHJpdgorQ09ORklHQVBQICAgJ1tzbm1wXScgZGVmWDUwOUNsaWVudENlcnRzIGBwd2RgL3Rlc3QtdXNlci5jZXJ0CisKK0NPTkZJR0FQUCAgIEFsbG93U2VsZlNpZ25lZFg1MDkgMQorCitleHBvcnQgU05NUF9UUkFOU1BPUlRfU1BFQworZXhwb3J0IFNOTVBfU05NUERfUE9SVAorZXhwb3J0IFNOTVBfVEVTVF9ERVNUCisKK0NPTkZJR0FHRU5UICByd3VzZXIgLXMgdHNtIGR0bHN0ZXN0dXNlciBhdXRocHJpdgorCitTVEFSVEFHRU5UCisKK0NBUFRVUkUgInNubXBnZXQgLWwgYXAgLXUgYm9ndXMgLS1kZWZTZWN1cml0eU1vZGVsPXRzbSAtT24gJFNOTVBfRkxBR1MgJE5PQVVUSFRFU1RBUkdTICRTTk1QX1RSQU5TUE9SVF9TUEVDOiRTTk1QX1RFU1RfREVTVCRTTk1QX1NOTVBEX1BPUlQgLjEuMy42LjEuMi4xLjEuMy4wIgorCitTVE9QQUdFTlQKKworQ0hFQ0sgIi4xLjMuNi4xLjIuMS4xLjMuMCA9IFRpbWV0aWNrczoiCisKK0ZJTklTSEVECisKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvVDM5OWFsaWFzIGIvdGVzdGluZy90ZXN0cy9UMzk5YWxpYXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg3NGUzNQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RpbmcvdGVzdHMvVDM5OWFsaWFzCkBAIC0wLDAgKzEsMjQgQEAKKyMhL2Jpbi9zaAorCisuIC4uL2V2YWxfdG9vbHMuc2gKKworSEVBREVSIEFMSUFTIFRyYW5zcG9ydAorCitTS0lQSUZOT1QgVVNJTkdfTUlCSUlfU1lTVEVNX01JQl9NT0RVTEUKK1NLSVBJRk5PVCBORVRTTk1QX1RSQU5TUE9SVF9BTElBU19ET01BSU4KKworIworIyBCZWdpbiB0ZXN0CisjCisKKyMgY29uZmlndXJlIHRoZSBhZ2VudCB0byBhY2NlcHQgdXNlciBpbml0aWFsIHdpdGggbm9BdXRoTm9Qcml2CisuIC4vU3YzY29uZmlnCisKK0NPTkZJR0FQUCBhbGlhcyBhbGlhc3Rlc3QgdWRwOmxvY2FsaG9zdDokU05NUF9TTk1QRF9QT1JUCitDT05GSUdBR0VOVCAnW3NubXBdJyBhbGlhcyBhbGlhc3Rlc3QgdWRwOmxvY2FsaG9zdDokU05NUF9TTk1QRF9QT1JUCisKK1NOTVBfVFJBTlNQT1JUX1NQRUM9YWxpYXMKK1NOTVBfVEVTVF9ERVNUPSJhbGlhc3Rlc3QiCitTTk1QX1NOTVBEX1BPUlQ9IiIKKworLiAuL1N0cmFuc3BvcnQKZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QuY2VydCBiL3Rlc3RpbmcvdGVzdHMvdGVzdC1sb2NhbGhvc3QuY2VydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjQ5YjI2Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5jZXJ0CkBAIC0wLDAgKzEsMjMgQEAKKy0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLQorTUlJRDJqQ0NBc0tnQXdJQkFnSUpBSVNFUVJnWkpYSDRNQTBHQ1NxR1NJYjNEUUVCQlFVQU1GRXhDekFKQmdOVgorQkFZVEFsVlRNUXN3Q1FZRFZRUUlFd0pEUVRFT01Bd0dBMVVFQnhNRlJHRjJhWE14RVRBUEJnTlZCQW9UQ0U1bAorZEMxVFRrMVFNUkl3RUFZRFZRUURFd2xzYjJOaGJHaHZjM1F3SGhjTk1Ea3dOekE1TWpNek5qTXdXaGNOTURrdworT0RBNE1qTXpOak13V2pCUk1Rc3dDUVlEVlFRR0V3SlZVekVMTUFrR0ExVUVDQk1DUTBFeERqQU1CZ05WQkFjVAorQlVSaGRtbHpNUkV3RHdZRFZRUUtFd2hPWlhRdFUwNU5VREVTTUJBR0ExVUVBeE1KYkc5allXeG9iM04wTUlJQgorSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTR5amNRN25qY3dueTZOc0ZnTTVXd0VjVgorR3RWZStoMms0MUpVOWxKOUkxRWc3a1JzU2ZKN3o5alg1SlhwSFhVWHE1NE10L3NMT0RlaGV5RTh6NVp3anBsYworTUd4TGlQZFJScC8zQm1saDNxclBMUkxSMTdCKzFNa2NJejlVQlV1dDJQdXN4RWVDZUEvZzhSVkV3SzhvUGdlcgorNEkrS2FYb25YV21obTg1RUVIbFdtWkhURFREYTZNWFVSTnMrRXFjUXJXUmdIeWY4YlFod3BTakJ6bWJVdFZxNQoraXBWTldtcXhQbFNUa2o1Q3FrcmJOZGtwT0lCdlo2VGhGZmkycndQRE8rWXpydWNGY00rQmZLUkNEQmNDNFRzTgorMnowUzFJc2VKR1ROTzFpaWRNcmpDVnpvSWJNQitHb3VYakxKWEF1TElGMFgzZFAreU9aemVTdDVKMnZDZ1FJRAorQVFBQm80RzBNSUd4TUIwR0ExVWREZ1FXQkJSK1pkdU5BR3ZiQXRqbzgrN0RQVU9JNUNwUVJqQ0JnUVlEVlIwagorQkhvd2VJQVVmbVhialFCcjJ3TFk2UFB1d3oxRGlPUXFVRWFoVmFSVE1GRXhDekFKQmdOVkJBWVRBbFZUTVFzdworQ1FZRFZRUUlFd0pEUVRFT01Bd0dBMVVFQnhNRlJHRjJhWE14RVRBUEJnTlZCQW9UQ0U1bGRDMVRUazFRTVJJdworRUFZRFZRUURFd2xzYjJOaGJHaHZjM1NDQ1FDRWhFRVlHU1Z4K0RBTUJnTlZIUk1FQlRBREFRSC9NQTBHQ1NxRworU0liM0RRRUJCUVVBQTRJQkFRQ2EyKzV0eitmbWd3OWg4QUY5bCsrOE0xTG56cXJtc3Z5NDVwaHh4NWYvclplOAorQnJzcE1sclQ2YktjTTlDVHFlemprRFpPckdFdVl2Y2JNZWEybnRsWEcwQ0lNeGhXcGdjend4Wml6R1lJTjZmMQorQ0s1c2lQbE96S09icGtBd1VqV2JMbTdOMkJKR0twM0ZNcTExSnQzMXRVd0pUQmM1dmlZeldCQ1FWNEN4Vm9MNQorTXFNZlZ5S2pPSzBlcWdNdnRyUmdaNnQvMDk4T2lFNFVTaGVXKysrYjB6em84VW0vWUlBOUpRbUNiWjRiaDZqZAorL0FnWmhLUlI1YlhpT0dtQ0xWd2VEVjRNVGkxMlkyODVHQmJ5bGJkRHVqOFlWN211N056T241a0o2eEkwMFZ1YworYkdXdGRjcEVHa1c3Wm40WUN1eHN6cHF0TTNqTEdaSENVcUN1S1NlUAorLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQpkaWZmIC0tZ2l0IGEvdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5wcml2IGIvdGVzdGluZy90ZXN0cy90ZXN0LWxvY2FsaG9zdC5wcml2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMmE4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL3Rlc3QtbG9jYWxob3N0LnByaXYKQEAgLTAsMCArMSwyNyBAQAorLS0tLS1CRUdJTiBSU0EgUFJJVkFURSBLRVktLS0tLQorTUlJRXBRSUJBQUtDQVFFQTR5amNRN25qY3dueTZOc0ZnTTVXd0VjVkd0VmUraDJrNDFKVTlsSjlJMUVnN2tScworU2ZKN3o5alg1SlhwSFhVWHE1NE10L3NMT0RlaGV5RTh6NVp3anBsY01HeExpUGRSUnAvM0JtbGgzcXJQTFJMUgorMTdCKzFNa2NJejlVQlV1dDJQdXN4RWVDZUEvZzhSVkV3SzhvUGdlcjRJK0thWG9uWFdtaG04NUVFSGxXbVpIVAorRFREYTZNWFVSTnMrRXFjUXJXUmdIeWY4YlFod3BTakJ6bWJVdFZxNWlwVk5XbXF4UGxTVGtqNUNxa3JiTmRrcAorT0lCdlo2VGhGZmkycndQRE8rWXpydWNGY00rQmZLUkNEQmNDNFRzTjJ6MFMxSXNlSkdUTk8xaWlkTXJqQ1Z6bworSWJNQitHb3VYakxKWEF1TElGMFgzZFAreU9aemVTdDVKMnZDZ1FJREFRQUJBb0lCQURING5pUGo4NjR0NVJybQorZTVwdlNkUTRqdUw5UjB4OFV2YVMrUS9LNjY1bVBYbE00Z21PWjBBODhwbGRoUSt1MzRzb1ZLSHdmdkphQXBNRQorcDh6K3lqb0VjS3hTVm5lRitJSXgxSFM3b0FVTXpGQ2RFRDZEbkJNUlByaGVTUXgxTG9SS01TSm9uTUh1dEV3MAorb3BCRXQvU1ZXWEVvQW9uYmptZFZRbkQwK2pJcEpSSFl2UGo4VFdHdHY3Vmw3bkhWVFFCVVl5K2pkMUNCUTRqQQorZW1ISzVJR3grK3l0cmZOWEExdURhMzh0OGNTSGcyS3ByOHZod2t6WldWeHNrUzQ2d1NQL3NQQnFLL3dnK0Z4ZAorOFdvdmFHWHBpeUxiMktqMTVySEJxZDV3RmVLSEdKSS9RL1g0cVZ2eExqS0dlRkoxR0ROdnZnOG1ldlJaOVJlaQoreUlCdThvVUNnWUVBODk1V3hlYUMwUzhkS1pWQVI3ZVhMYXVIVVEvbEFJanFsOE90ZHNIQmZwVFJMV3ZzOUlwUQorOHkwbjRzZ2NCLzRpYUJWVnA4VzQxNHpqdXRDeFhKcnE1WkhLT2k1elZxcFBzYW1rS1FZbkdLZmJVMnEwV3B0RAorVDF6MnBMU2sxTC9NSGpoYnV3WmJlMEh4Zjd2UGcxMGxvdWtGbFVHa0VhamFIS09uaHkxL0J0Y0NnWUVBN25XNworNFZtVmNETTh5WWJsTk5RUHYyVEhvb3daSmxTVDl2NytROXBqb1lNWXZydVFXS2NaeUlqRlN0OWhldHJmQnR4TworK1F4VXF2ZkI4ZC9SU3pnN3dGN0FtV0hhM0VmZ1Q3aDNYOGdsaDdpc2I5WUlSbjZxQnR4eXNXVFhScU5HTStXZgoraHh5bEZRWGV6SlBaMGhTYmRYWlRoaHd2dnpENDFaYmpxM1hKem1jQ2dZRUFvQTRNTzRUbjFPMHNJYStnYWJGNAorR25SYXNueFJHNEhCSG14Q1BCQThzNXh1a1hZbEpmWmwzTVNGU2hWMk9GUzJOa1BTWFBPck5tVjB6WmJNNFcrWAordmFacTZMYTE0bXFUTlpLV2VJcGVQSk5tb3FBRTBQYllQWTFSSDVha0hESHBnT2dTWkhSdXREMzZoNUEzU1F0bworZVR5ZyttNERoY2VocDJ4TnRxM0lraThDZ1lFQTN2UFBUVnh2LzI2NGlBZ0s1OERhVkczS3hlek5XdXc3Ui9XVQorRUNieGZrSlBjWTEyNFp5aTI3OGREK3NaZmorRHhTdFkzendyTVlyaWw5NVhGa2dtZmE5WnprOFN6V0NhbG83MworZGVOeFM1dGNCbGlNZGpUWmpmNnhjYkRDSXJabjNmLzBqdVEyYVJpSy9xWENROHltcVVXUHhGVTRRejlyZUhCUwordjY0cW1FTUNnWUVBc3VtcStqVW9hM3FZbmE0NXZ5Qk1RZjZOSkxXQ0ZZWGxvQXRLVlRFQ0NiODhUNk1WeXJPRQorY3lqMFliZWsraWV6Tjh0YkpIcWlTV1Z0blJBOWtqckMwQXJ3T0tEaXBORlJrRm9ncFVSYWp6Yi9MblVRZFcrUAorck90TnVMYU5uTFZvMmtpSzRRTmJkKzNCSlFDRFBCY1pRcTZkR2NjdnlOWFlWdGZFeFk0V0kyYz0KKy0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0tCmRpZmYgLS1naXQgYS90ZXN0aW5nL3Rlc3RzL3Rlc3QtdXNlci5jZXJ0IGIvdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIuY2VydApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDU2YjM1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdGluZy90ZXN0cy90ZXN0LXVzZXIuY2VydApAQCAtMCwwICsxLDIzIEBACistLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KK01JSUQ0ekNDQXN1Z0F3SUJBZ0lKQUlwQlFIenErbmhiTUEwR0NTcUdTSWIzRFFFQkJRVUFNRlF4Q3pBSkJnTlYKK0JBWVRBbFZUTVFzd0NRWURWUVFJRXdKRFFURU9NQXdHQTFVRUJ4TUZSR0YyYVhNeEVUQVBCZ05WQkFvVENFNWwKK2RDMVRUazFRTVJVd0V3WURWUVFERXd4a2RHeHpkR1Z6ZEhWelpYSXdIaGNOTURrd056QTVNak0wTURBMldoY04KK01Ea3dPREE0TWpNME1EQTJXakJVTVFzd0NRWURWUVFHRXdKVlV6RUxNQWtHQTFVRUNCTUNRMEV4RGpBTUJnTlYKK0JBY1RCVVJoZG1sek1SRXdEd1lEVlFRS0V3aE9aWFF0VTA1TlVERVZNQk1HQTFVRUF4TU1aSFJzYzNSbGMzUjEKK2MyVnlNSUlCSWpBTkJna3Foa2lHOXcwQkFRRUZBQU9DQVE4QU1JSUJDZ0tDQVFFQTBydzlCY1ZZYnpKOGNqYzQKK00wRlg3aDR5d1Q1M3h0Q1d5cFFYTGd3Tng3R2R1WlUxRFR6aFZyY3lXcGVUOGF3K3p0Vzl3bUg0TkVlT1JTVEsKK3ZHWkpKUGUzcUppRmlQS05TSjE3UXpLU1ZHMFFTdEpNUFVGU0NxN25OWUl6WjNibGxpTUhTREplZjNxNmJ4K2wKKzROVWFEWDAzVXNhY2drZThDQ1psQTUxQlJmK09PdHFXTldvSjRRWHVjdUovckVScWdZUlIxZjdQb2pzMzVaQUUKKzdjNzEvV1ZjenRsNjh0TEg2eVZaaHBWRFFLZCtFZS9NcGlyNWoyWDdGb1JwM2RVbjVBVGpwQnc2V0VUdzl0YlUKK2dqYmNzckc0d0U2Y3pLMFlTVHhOVEdKekM5cnZFcTNTK3ZialB6TEJWeHJBV3hYZDd0QU1rVVNVV1ZKakNNTXYKK2U3aG9PUUlEQVFBQm80RzNNSUcwTUIwR0ExVWREZ1FXQkJURldWTWs3ZnNHQ1UyR3NLWTluazBiQzJQTitqQ0IKK2hBWURWUjBqQkgwd2U0QVV4VmxUSk8zN0JnbE5ockNtUFo1Tkd3dGp6ZnFoV0tSV01GUXhDekFKQmdOVkJBWVQKK0FsVlRNUXN3Q1FZRFZRUUlFd0pEUVRFT01Bd0dBMVVFQnhNRlJHRjJhWE14RVRBUEJnTlZCQW9UQ0U1bGRDMVQKK1RrMVFNUlV3RXdZRFZRUURFd3hrZEd4emRHVnpkSFZ6WlhLQ0NRQ0tRVUI4NnZwNFd6QU1CZ05WSFJNRUJUQUQKK0FRSC9NQTBHQ1NxR1NJYjNEUUVCQlFVQUE0SUJBUUNXeEtGRW9oQStWbCtnajR4MG5nNUZVTXVIdFRidExiU0cKKzErcjZTOTRMdk1CZWRsb1lUN21QSVBnY1ZiTVQ1ZnFBZVFwZlZJYUMwaTVQa2lVSTlIMk1YdE8yQWRCYTVKeDUKK3ExOE9kVWovTGpHQTNCN2pvc3E1SG5JVC8wT1RoWWtBZUtMSVZETEh4aXFPWXJtRndxWk9zSzVCWjFSTS82WWwKKysvVVp1d3VqdUh0bndSVzNWV3NrVlZGVEY0TkdLWjVmN2xBK05TWXFiSG4vN09CcXFnUzJHeG5TemNDRDlCT3EKKzl6Tk1ab2lXM2pXK0VvSUw2MnBSdEUrUy9pTDFCUkJjdDR4d05QL1JReU40aWFEVmcwU0MxMFlTU1hrNCtvZisKK2UyZ0NMZ0N4czBWeUJ6RzhmSW9YOFJpcTdjVjk5RzExOU0xS1Q0NWpYY29zMWhPMmdZdUIKKy0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL3Rlc3RpbmcvdGVzdHMvdGVzdC11c2VyLnByaXYgYi90ZXN0aW5nL3Rlc3RzL3Rlc3QtdXNlci5wcml2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyNTA3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0aW5nL3Rlc3RzL3Rlc3QtdXNlci5wcml2CkBAIC0wLDAgKzEsMjcgQEAKKy0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0KK01JSUVwQUlCQUFLQ0FRRUEwcnc5QmNWWWJ6SjhjamM0TTBGWDdoNHl3VDUzeHRDV3lwUVhMZ3dOeDdHZHVaVTEKK0RUemhWcmN5V3BlVDhhdyt6dFc5d21INE5FZU9SU1RLdkdaSkpQZTNxSmlGaVBLTlNKMTdRektTVkcwUVN0Sk0KK1BVRlNDcTduTllJelozYmxsaU1IU0RKZWYzcTZieCtsNE5VYURYMDNVc2FjZ2tlOENDWmxBNTFCUmYrT090cVcKK05Xb0o0UVh1Y3VKL3JFUnFnWVJSMWY3UG9qczM1WkFFN2M3MS9XVmN6dGw2OHRMSDZ5VlpocFZEUUtkK0VlL00KK3BpcjVqMlg3Rm9ScDNkVW41QVRqcEJ3NldFVHc5dGJVZ2piY3NyRzR3RTZjekswWVNUeE5UR0p6QzlydkVxM1MKKyt2YmpQekxCVnhyQVd4WGQ3dEFNa1VTVVdWSmpDTU12ZTdob09RSURBUUFCQW9JQkFEY1hhT2lTVCswNkNKaWYKK1lQemRUMHg3N283Z2N0V3lBRW5UYnovbGZOREEyVmdEN3N1WUo5elFwY1JUTGlVVy81QjVCbFBENHV4ZjdJeWMKKzhyZFFFajBzMllHazVmd0lWUEV2NG1LTjNQMWZTY3dWc0VLdlNmQnJDeHpNL2YxRmN2M09DSUJTVXF3Ry9LaEMKK1lNNG5SOWxRNjk2aTk1V0RoVitvRWU1ZzlRaUVMZEFERGxjMWJ2K25iOXRWQnpVVG1IUWdwR2p3eWFKTUl6SVYKK3FrZnBDNFJWOE9qdDVFTGI2WGpKUkZ4ZzlRaSs0a3c2bUxiQmMvaW55c3ZWUUJtc1dMTGxDS3BiSHQwMllmVUIKK2F0Vk9EelRSNWFVYmNRS25Obkhtb2pVMDVpcmJDZVVYcGhnUUtWOWl1enNpV01WNGVkSjZ0VzhCMTBCdVNsSDUKK2IwR051d0VDZ1lFQS9md0ttUTBqZ3JMalJjMTZjRTJHV01aUm1xQnVmVHRHU3c5dGRvaG1VTUlQcU50NCsvWFEKK2dLVjBzZkZaZ3NMTFVHNTB4cVJSNm1ta3pTN1RWd2w0dVJxY3JGN0RSS0tBa3lGSlAzUWtMU1FtKzRFWkZ4T3YKK2RwSFZMVnBPMVFKKzcxWUU0ektPZElmV1Jhb2g1WmxFcEd3M3V6ZitVMG9OVEQ3OVg1Zk9BNkVDZ1lFQTFHaFcKK2lTRWJVKzJZUG55NHFlWGRmOGhjU245K1VyNmNCenhMaFlNVUhOSTl5c3lBUW4zLy9NTG9SQ29ub2tpVUVXRzUKK0JMTzJ6U21OcXZIV0tSQnphR3I2WmpvL3RHVFdnT1ducExRTXErWFltRHhXeERHQ1RMSDJlZHFDK1ZJSXFCbkIKK1FtTFlCdmRlOUVuMVVJL2MzQ3NwYjE4Tmg5MkkrVkdaTlB6UEhaa0NnWUFQVTgyRDdRSU9taU1UREZKdVFvOXYKKy9nL2dwL3ZpL05mQ0lkMDJRUWNEcXFKdFMwbGkwelBRLzZzcUxlbDc5YXQxWUNVVjg4YXB3ZFJiT1k4eGVuWFoKK25keUVubmRrUmZaQ2FzalQxbnQwYWZFY1RtOG9NRnp2WjkrWWpCR2owekc3MmRJVHIvSmUzKyt6WnBBREhodkIKK1hIS0VqdDEvUTBISUx5ajFRdUVBNFFLQmdRQ1ViZmtTeUp6Vk1ISTBNR25HNkFlNTlPUnhkdGhxc0NKT2VCYjYKK1RKZndjQWFZUWdIYTlUdStnT0ZZU1BEN1dhYUc0dmdzemYwUEwxdDlPcFFDakNscHJXQWZzZEswbDhiQnVqcEYKK1FVQ2RtdmVab29pcmYwRmpvUFR4UC81SWhjZmcyR2FSb29yOWl6M0NqakFzUk92OHV2aXdpQWJuaTZyZE51Vk4KKy91QW8rUUtCZ1FDZlFmMVJCai9pTW1PWmRpNFNpZkJPRG1zZUpFWWVBTWxmRVFCSFBGbVRoTkxpZmx6K1ZOMTcKK3VxSFM1SWdoUEswc1hiN3BPUW1DMmhDeFQyc1d5Ykp4K3FLc29PWUhMUXlyRzVrZzdDZ1ZqbHRtNkh6d3lpenQKK0t1dzZUNGNVajFxUlFHOGFBVEwrc0d1VDY5RkhUU0UzdmE1dGxmOW9ZR3NNNnJJb0E0M2czdz09CistLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQpkaWZmIC0tZ2l0IGEvd2luMzIvQ29uZmlndXJlIGIvd2luMzIvQ29uZmlndXJlCmluZGV4IDk4ZmEzZmQuLmJlM2VlODQgMTAwNjQ0Ci0tLSBhL3dpbjMyL0NvbmZpZ3VyZQorKysgYi93aW4zMi9Db25maWd1cmUKQEAgLTcsNiArNyw3IEBACiB1c2UgR2V0b3B0OjpMb25nOwogdXNlIHN0cmljdDsKIAorbXkgJHZlcnNpb24gPSAidW5rbm93biI7CiBteSAkY29uZmlnOwogbXkgJHNkayA9IDA7CiBteSAkbGlua3R5cGU7CkBAIC04NSw2ICs4NiwyNiBAQAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIworIyBEZXRlcm1pbmUgdmVyc2lvbiBmcm9tIHVuaXggY29uZmlndXJlIHNjcmlwdAorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbXkgJHVuaXhfY29uZmlndXJlX2luID0gIi4uL2NvbmZpZ3VyZSI7CisKK29wZW4gKFVOSVhfQ09ORklHVVJFX0lOLCAiPCR1bml4X2NvbmZpZ3VyZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkdW5peF9jb25maWd1cmVfaW5cbiI7CisKK3doaWxlICg8VU5JWF9DT05GSUdVUkVfSU4+KQoreworICBjaG9tcDsKKyAgL1BBQ0tBR0VfVkVSU0lPTj0nKC4qKScvOworICBpZiAoJDEgbmUgIiIpIHsKKyAgICAkdmVyc2lvbiA9ICQxOworICAgIGxhc3Q7CisgIH0KK30KKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMKICMgQ3JlYXRlIG1haW4gTWFrZWZpbGUKICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCkBAIC0yMjAsMTUgKzI0MSw5IEBACiAvbGliYWdlbnQKIGxpYmhlbHBlcnMKIGxpYm5ldHNubXB0cmFwZAorbmV0c25tcG1pYnMKIC87CiAKLWlmICgkc2RrID09IDEpIHsKLSAgcHVzaCAoQHByb2dyYW1zLCAibmV0c25tcG1pYnNzZGsiKTsKLX0KLWVsc2UgewotICBwdXNoIChAcHJvZ3JhbXMsICJuZXRzbm1wbWlicyIpOwotfQotCiBpZiAoJGxpbmt0eXBlIGVxICJkeW5hbWljIikgewogICBwdXNoIChAcHJvZ3JhbXMsICJsaWJzbm1wX2RsbCIpOwogfQpAQCAtMjUzLDYgKzI2OCwxMyBAQAogICB7CiAgICAgY2hvbXA7CiAKKyAgICBpZiAoJHNkayA9PSAxKSB7CisgICAgICBzL15TREs9L1NESz10cnVlLzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzL15TREs9L1NESz1mYWxzZS87CisgICAgfQorCiAgICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87CiAgICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87CiAgICAgcy9eT1VURElSPS9PVVRESVI9LlxcJG91dGRpci87CkBAIC0yNzMsMTYgKzI5NSwxMCBAQAogIwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIG15IEBwcm9ncmFtcyA9IHF3Ci0vc25tcHRyYXBkCisvc25tcGQKK3NubXB0cmFwZAogLzsKIAotaWYgKCRzZGsgPT0gMSkgewotICBwdXNoIChAcHJvZ3JhbXMsICJzbm1wZHNkayIpOwotfQotZWxzZSB7Ci0gIHB1c2ggKEBwcm9ncmFtcywgInNubXBkIik7Ci19Ci0KIGZvcmVhY2ggbXkgJHByb2dOYW1lIChAcHJvZ3JhbXMpIHsKIAogICBteSAkbWFrZWZpbGVfb3V0ID0gIiRwcm9nTmFtZVxcTWFrZWZpbGUiOwpAQCAtMzAwLDYgKzMxNiwxMyBAQAogICB7CiAgICAgY2hvbXA7CiAKKyAgICBpZiAoJHNkayA9PSAxKSB7CisgICAgICBzL15TREs9L1NESz10cnVlLzsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBzL15TREs9L1NESz1mYWxzZS87CisgICAgfQorCiAgICAgcy9eTElOS1RZUEU9L0xJTktUWVBFPSRsaW5rdHlwZS87CiAgICAgcy9eUFJPR05BTUU9L1BST0dOQU1FPSRwcm9nTmFtZS87CiAgICAgcy9eQ0ZHPS9DRkc9JGNvbmZpZy87CkBAIC0zNTcsNyArMzgwLDcgQEAKICAgd2hpbGUgKDxGSUxFX0lOPikKICAgewogICAgIGNob21wOwotCisgICAgcy9eI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04uKi8jZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiBcIiR2ZXJzaW9uXCIvOwogICAgIGlmICgkcHJlZml4IG5lICIiKSB7CiAgICAgICBzL14jZGVmaW5lIElOU1RBTExfQkFTRS4qLyNkZWZpbmUgSU5TVEFMTF9CQVNFIFwiJHByZWZpeFwiLzsKICAgICB9CkBAIC0zODEsMzMgKzQwNCw2IEBACiAgIH0KIH0KIAotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMKLSMgQ3JlYXRlIGxpYnNubXAuZGVmIGZpbGUgZm9yIGxpYnNubXBfZGxsCi0jCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotaWYgKCRsaW5rdHlwZSBlcSAiZHluYW1pYyIpCi17Ci0gIG15ICRmaWxlX291dCA9ICJsaWJzbm1wX2RsbFxcbGlic25tcC5kZWYiOwotICBteSAkZmlsZV9pbiA9ICJsaWJzbm1wX2RsbFxcbGlic25tcC5kZWYuaW4iOwotCi0gIG9wZW4gKEZJTEVfT1VULCAiPiRmaWxlX291dCIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkZmlsZV9vdXRcbiI7Ci0gIG9wZW4gKEZJTEVfSU4sICI8JGZpbGVfaW4iKSB8fCBkaWUgIkNhbid0IE9wZW4gJGZpbGVfaW5cbiI7Ci0KLSAgcHJpbnQgImNyZWF0aW5nICRmaWxlX291dFxuIjsKLQotICB3aGlsZSAoPEZJTEVfSU4+KQotICB7Ci0gICAgY2hvbXA7Ci0KLSAgICBpZiAoJGJfaXB2NiA9PSAiMSIpIHsKLSAgICAgIHMvXjtpcHY2Ly9pOwotICAgIH0KLQotICAgIHByaW50IEZJTEVfT1VUICRfIC4gIlxuIjsKLSAgfQotfQotCiAKIHByaW50IHFxLwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC00MTYsNiArNDEyLDExIEBACiAKIC87CiAKK2lmICgkdmVyc2lvbiBlcSAidW5rbm93biIpIHsKKyAgJHZlcnNpb24gPSAidW5rbm93biAtIENvdWxkIG5vdCBkZXRlcm1pbmUgdmVyc2lvbiBmcm9tIC4uL2NvbmZpZ3VyZSEiOworfQorCitwcmludCAiICBWZXJzaW9uOiAgICAgICAgICAgICAgICAgICAgJHZlcnNpb25cbiI7CiBwcmludCAiICBDb25maWcgdHlwZTogICAgICAgICAgICAgICAgJGNvbmZpZ1xuIjsKIHByaW50ICIgIFNESzogICAgICAgICAgICAgICAgICAgICAgICAiIC4gKCRzZGsgPT0gMSA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpIC4gIlxuIjsKIHByaW50ICIgIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAkbGlua3R5cGVcbiI7CmRpZmYgLS1naXQgYS93aW4zMi9NYWtlZmlsZS1hcHBzLmluIGIvd2luMzIvTWFrZWZpbGUtYXBwcy5pbgppbmRleCBiNWZlZDYxLi4yMTEzYWRlIDEwMDY0NAotLS0gYS93aW4zMi9NYWtlZmlsZS1hcHBzLmluCisrKyBiL3dpbjMyL01ha2VmaWxlLWFwcHMuaW4KQEAgLTI0LDYgKzI0LDcgQEAKIAktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKIAktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSIKKwktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIKIAogIi4uXGJpblwkKE9VVERJUikiIDoKICAgICBpZiBub3QgZXhpc3QgIi4uXGJpblwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGJpblwkKE9VVERJUikiCkBAIC0zMiw3ICszMyw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKICFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgogQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKQEAgLTc0LDcgKzc1LDcgQEAKIEJTQzMyX1NCUlM9IFwKIAogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAorTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL291dDoiLi5cYmluXCQoT1VURElSKS8kKFBST0dOQU1FKS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSIgCiBMSU5LMzJfT0JKUz0gXAogCSIkKElOVERJUilcJChQUk9HTkFNRSkub2JqIgogCkBAIC04Myw2ICs4NCw4IEBACiAgICAgJChMSU5LMzIpIEA8PAogICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKIDw8CisgaWYgZXhpc3QgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IiBcCisJICAgIG10LmV4ZSAtbWFuaWZlc3QgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6Ii4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIjsxCiAhRUxTRQkjIExpbmt0eXBlIGNoZWNrCiAJLUBlY2hvIC4KIAktQGVjaG8gQWJvcnRpbmcgYnVpbGQuICBBcHBsaWNhdGlvbnMgY2FuIG5vdCBiZSBidWlsdCB1c2luZyAtLWxpbmt0eXBlPWR5bmFtaWMKQEAgLTEwMyw2ICsxMDYsNyBAQAogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wZGIiCiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKIAktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSIKKwktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIKIAogIi4uXGJpblwkKE9VVERJUikiIDoKICAgICBpZiBub3QgZXhpc3QgIi4uXGJpblwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGJpblwkKE9VVERJUikiCkBAIC0xMTEsNyArMTE1LDcgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiIkKElOVERJUilcXCIgL0ZwIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0VIc2MgL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiIkKElOVERJUilcXCIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKIAogIUlGICIkKExJTktUWVBFKSIgPT0gImR5bmFtaWMiCiBDUFBfUFJPSj0kKENQUF9QUk9KKSAvRCAiTk1BS0VfTkVUU05NUF9VU0VfRExMIgpAQCAtMTU5LDcgKzE2Myw3IEBACiA8PAogCiBMSU5LMzI9bGluay5leGUKLUxJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciIAorTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLnBkYiIgL2RlYnVnIC9vdXQ6Ii4uXGJpblwkKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciIAogTElOSzMyX09CSlM9IFwKIAkiJChJTlRESVIpXCQoUFJPR05BTUUpLm9iaiIKIApAQCAtMTY4LDYgKzE3Miw4IEBACiAgICAgJChMSU5LMzIpIEA8PAogICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKIDw8CisgaWYgZXhpc3QgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IiBcCisJICAgIG10LmV4ZSAtbWFuaWZlc3QgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6Ii4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIjsxCiAhRUxTRQkjIExpbmt0eXBlIGNoZWNrCiAJLUBlY2hvIC4KIAktQGVjaG8gQWJvcnRpbmcgYnVpbGQuICBBcHBsaWNhdGlvbnMgY2FuIG5vdCBiZSBidWlsdCB1c2luZyAtLWxpbmt0eXBlPWR5bmFtaWMKZGlmZiAtLWdpdCBhL3dpbjMyL01ha2VmaWxlLmluIGIvd2luMzIvTWFrZWZpbGUuaW4KaW5kZXggYjkwODU4Mi4uODY0YTg1ZiAxMDA2NDQKLS0tIGEvd2luMzIvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvTWFrZWZpbGUuaW4KQEAgLTEwLDE3ICsxMCwxMCBAQAogCiBjbGVhbiA6IGFwcHNfY2xlYW4gbGlic19jbGVhbiBzbm1wdHJhcGRfY2xlYW4gc25tcGRfY2xlYW4gbG9jYWxfY2xlYW4KIAotIUlGICIkKFNESykiID09ICJ0cnVlIgotc25tcGQgOiBzbm1wZHNka18KLXNubXBkX2NsZWFuIDogc25tcGRzZGtfY2xlYW5fCi1uZXRzbm1wbWlicyA6IG5ldHNubXBtaWJzc2RrXwotbmV0c25tcG1pYnNfY2xlYW4gOiBuZXRzbm1wbWlic3Nka19jbGVhbl8KLSFFTFNFCiBzbm1wZCA6IHNubXBkXwogc25tcGRfY2xlYW4gOiBzbm1wZF9jbGVhbl8KIG5ldHNubXBtaWJzIDogbmV0c25tcG1pYnNfCQogbmV0c25tcG1pYnNfY2xlYW4gOiBuZXRzbm1wbWlic19jbGVhbl8KLSFFTkRJRgogCiAhSUYgIiQoTElOS1RZUEUpIiA9PSAic3RhdGljIgogbGlic25tcCA6IGxpYnNubXBfCkBAIC0xMzgsMTEgKzEzMSw2IEBACiAJJChOTUFLRSkgYWxsCiAJY2QgLi4KIAotbmV0c25tcG1pYnNzZGtfIDo6Ci0JY2QgbmV0c25tcG1pYnNzZGsKLQkkKE5NQUtFKSBhbGwKLQljZCAuLgotCiBzbm1wZGYgOjoKIAljZCBzbm1wZGYKIAkkKE5NQUtFKSBhbGwKQEAgLTIzOCwxMSArMjI2LDYgQEAKIAkkKE5NQUtFKSBhbGwKIAljZCAuLgogCi1zbm1wZHNka18gOjoKLQljZCBzbm1wZHNkawotCSQoTk1BS0UpIGFsbAotCWNkIC4uCi0KIHNubXBjb25mIDo6CiAJY2QgbG9jYWwKIAkkKE5NQUtFKSBzbm1wY29uZgpAQCAtMjkyLDExICsyNzUsNiBAQAogCSQoTk1BS0UpIGNsZWFuCiAJY2QgLi4KIAotbmV0c25tcG1pYnNzZGtfY2xlYW5fIDo6Ci0JY2QgbmV0c25tcG1pYnNzZGsKLQkkKE5NQUtFKSBjbGVhbgotCWNkIC4uCi0KIHNubXBkZl9jbGVhbiA6OgogCWNkIHNubXBkZgogCSQoTk1BS0UpIGNsZWFuCkBAIC0zOTIsMTEgKzM3MCw2IEBACiAJJChOTUFLRSkgY2xlYW4KIAljZCAuLgogCi1zbm1wZHNka19jbGVhbl8gOjoKLQljZCBzbm1wZHNkawotCSQoTk1BS0UpIGNsZWFuCi0JY2QgLi4KLQogc25tcGNvbmZfY2xlYW4gOjoKIAljZCBsb2NhbAogCSQoTk1BS0UpIHNubXBjb25mX2NsZWFuCmRpZmYgLS1naXQgYS93aW4zMi9jb25maWcuaC5ib3JsYW5kIGIvd2luMzIvY29uZmlnLmguYm9ybGFuZAppbmRleCAzYWVmNmJiLi42MjkwODVjIDEwMDY0NAotLS0gYS93aW4zMi9jb25maWcuaC5ib3JsYW5kCisrKyBiL3dpbjMyL2NvbmZpZy5oLmJvcmxhbmQKQEAgLTQ5MSw5ICs0OTEsNiBAQAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSBrc3RhdCBsaWJyYXJ5ICgtbGtzdGF0KS4gICovCiAjdW5kZWYgSEFWRV9MSUJLU1RBVAogCi0vKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGt2bSBsaWJyYXJ5ICgtbGt2bSkuICAqLwotI3VuZGVmIEhBVkVfTElCS1ZNCi0KIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbSBsaWJyYXJ5ICgtbG0pLiAgKi8KICN1bmRlZiBIQVZFX0xJQk0KIApAQCAtNTQzLDkgKzU0MCw2IEBACiAvKiB0eXBlIGNoZWNrIGZvciBpbl9hZGRyX3QgKi8KICNkZWZpbmUgaW5fYWRkcl90IHVfbG9uZwogCi0vKiBkZWZpbmUgaWYgeW91ciBjb21waWxlciAocHJvY2Vzc29yKSBkZWZpbmVzIF9fRlVOQ1RJT05fXyBmb3IgeW91ICovCi0jdW5kZWYgSEFWRV9DUFBfVU5ERVJCQVJfRlVOQ1RJT05fREVGSU5FRAotCiAvKiBtaWIgcG9pbnRlciB0byB0aGUgdG9wIG9mIHRoZSBleHRlbnNpYmxlIHRyZWUuICBUaGlzIGhhcyBiZWVuCiAgYXNzaWduZWQgdG8gVUNEYXZpcyBieSB0aGUgaWFuYSBncm91cC4gIE9wdGlvbmFsbHksIHBvaW50IHRoaXMgdG8gdGhlCiAgbG9jYXRpb24gaW4gdGhlIHRyZWUgeW91ciBjb21wYW55L29yZ2FuaXphdGlvbiBoYXMgYmVlbiBhbGxvY2F0ZWQuICovCmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQgYi93aW4zMi9kaXN0L1JFQURNRS5idWlsZC53aW4zMi50eHQKaW5kZXggMGJkMGVlNS4uYWI1NDM5YyAxMDA2NDQKLS0tIGEvd2luMzIvZGlzdC9SRUFETUUuYnVpbGQud2luMzIudHh0CisrKyBiL3dpbjMyL2Rpc3QvUkVBRE1FLmJ1aWxkLndpbjMyLnR4dApAQCAtMSw1MjAgKzEsNTIzIEBACi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKLSoKLSogUkVBRE1FLmJ1aWxkLndpbjMyCi0qCi0qIEF1dGhvcnM6IEFsZXggQnVyZ2VyIDxhbGV4X2JAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotKiAgICAgICAgICAKLSoKLSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCi1JbnRyb2R1Y3Rpb24KLT09PT09PT09PT09PQotCi1UaGlzIFJFQURNRSBvdXRsaW5lcyB0aGUgc3RlcHMgcmVxdWlyZWQgdG8gY3JlYXRlIGEgYmluYXJ5IHJlbGVhc2UgZm9yCi1XaW5kb3dzIHVzaW5nIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvIGFuZCB0aGUgTnVsbFNvZnQgaW5zdGFsbGVyLgotCi1UaGVyZSBhcmUgZm91ciBzZWN0aW9uczoKLQotICBDb21waWxpbmcgYmluYXJpZXMKLQotICBDb21waWxpbmcgSFRNTEhlbHAgZmlsZQotCi0gIENvbWJpbmluZyB0aGUgYmluYXJpZXMgYW5kIEhUTUxIZWxwIGZpbGVzCi0KLSAgQnVsZGluZyBhIE51bGxTb2Z0IGluc3RhbGxlciBwYWNrYWdlCi0KLSAgQnVsZGluZyBhbiBPcGVuU1NMIHZlcnNpb24KLQotCi1Db21waWxpbmcgYmluYXJpZXMKLT09PT09PT09PT09PT09PT09PQotCi1SZXF1aXJlbWVudHMKLS0tLS0tLS0tLS0tLQotCi0gLVdpbmRvd3MgTlQvMjAwMC9YUAotIC1NU1ZDKysgNi4wIFNQNQotIC1BY3RpdmVQZXJsIDUuOC4yIGJ1aWxkIDgwOAotIC1nbnVfcmVnZXguZXhlICgwLjEyKSAtIGh0dHA6Ly9wZW9wbGUuZGVscGhpZm9ydW1zLmNvbS9namMvZ251X3JlZ2V4Lmh0bWwKLSAtUGxhdGZvcm0gU0RLCi0gLU1TWVMgLyBNaW5HVyAtb3ItIHRhci5leGUgYW5kIGd6aXAuZXhlCi0gLXdpbjMyL2Rpc3QgZm9sZGVyIGZyb20gTUFJTiBpbiBDVlMKLQotCi1CdWlsZGluZyB0aGUgbWFpbiBiaW5hcmllcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTm90ZTogIEFsbCBzaGVsbCBzdGVwcyBhcmUgdXNpbmcgdGhlIFdpbmRvdyBDTUQgcHJvbXB0IHVubGVzcyBvdGhlcndpc2Ugc3RhdGVkLgotCi1QYXJ0IDEKLS0tLS0tLQotCi0xLiAgRXh0cmFjdCBzb3VyY2UuICBUaGUgbG9jYXRpb24gd2lsbCBiZSByZWZlcmVuY2VzIGFzIChzb3VyY2UgZGlyKQotCi0yLiAgRGVsZXRlIGM6XHVzciBpZiBpdCBleGlzdHMgYW5kIHJlbmFtZSBOZXQtU05NUC5kbGwgaW4geW91ciAld2luZGlyJSBpZiB5b3UgCi0gICAgaGF2ZSBpdCBhbHJlYWR5ICh0byBlbnN1cmUgUGVybCB0ZXN0cyBhcmUgdXNpbmcgdGhlIGNvbXBpbGVkIERMTCkKLQotMy4gIEFwcGx5IGFueSByZXF1aXJlZCBwYXRjaGVzCi0KLTQuICBSZW1vdmUgdGhlIGV4YW1wbGUgTUlCIGZpbGVzOiAgCi0KLSAgICBFZGl0IHdpbjMyXG5ldC1zbm1wXGFnZW50XG1pYl9tb2R1bGVfY29uZmlnLmggYW5kIGNoYW5nZSB0aGUgZm9sbG93aW5nIGxpbmVzOgotCi0gICAgICAjZGVmaW5lIFVTSU5HX0VYQU1QTEVTX1VDRERFTU9QVUJMSUNfTU9EVUxFIDEKLSAgICAgICNkZWZpbmUgVVNJTkdfRVhBTVBMRVNfRVhBTVBMRV9NT0RVTEUgMQotCi0gICAgdG86Ci0KLSAgICAgICN1bmRlZiBVU0lOR19FWEFNUExFU19VQ0RERU1PUFVCTElDX01PRFVMRQotICAgICAgI3VuZGVmIFVTSU5HX0VYQU1QTEVTX0VYQU1QTEVfTU9EVUxFCi0KLTUuICBjZCAoc291cmNlIGRpcilcd2luMzIKLQotNi4gIFJ1biBidWlsZC5iYXQKLQotNy4gIFNldCB0byB0aGUgZm9sbG93aW5nOgotCi0gICAgTmV0LVNOTVAgYnVpbGQgYW5kIGluc3RhbGwgb3B0aW9ucwotICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICAKLSAgICAxLiBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgCQlkaXNhYmxlZAotICAgIDIuIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAJCWVuYWJsZWQgICAgICAgICAqKioKLSAgICAKLSAgICAzLiBJbnN0YWxsIHBhdGg6ICAgICAgICAgCQljOi91c3IKLSAgICA0LiBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgCQllbmFibGVkCi0gICAgCi0gICAgNS4gUGVybCBtb2R1bGVzOiAgICAgICAgIAkJZW5hYmxlZCAgICAgICAgICoqKgotICAgIDYuIEluc3RhbGwgcGVybCBtb2R1bGVzOiAJCWRpc2FibGVkCi0gICAgCi0gICAgNy4gUXVpZXQgYnVpbGQgKGxvZ2dlZCk6IAkJZW5hYmxlZAotICAgIDguIERlYnVnIG1vZGU6ICAgICAgICAgICAJCWRpc2FibGVkCi0gICAgOS4gSVB2NiB0cmFuc3BvcnRzOiAgICAgIAkJZGlzYWJsZWQKLQotICAgIDEwLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYwotCi0gICAgMTEuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAJZW5hYmxlZCAgICAgICAgICoqKgotICAgIAotICAgIEYuICBGaW5pc2hlZCAtIHN0YXJ0IGJ1aWxkCi0gICAgUS4gIFF1aXQgLSBhYm9ydCBidWlsZAotICAgIAotICAgIFNlbGVjdCBvcHRpb24gdG8gc2V0IC8gdG9nZ2xlOgotCi04LiAgRiB0byBzdGFydCB0aGUgYnVpbGQgYW5kIHZlcmlmeSBldmVyeXRoaW5nIHdhcyBidWlsdCBvawotCi05LiAgRGVsZXRlIGFueSBnZW5lcmF0ZWQgY29uZmlnIGZpbGVzIGZyb20gYzpcdXNyXHNubXBccGVyc2lzdAotCi1QYXJ0IDIgLSBDb21waWxpbmcgd2luRXh0RExMCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLTEwLiBNb2RpZnkgZmlsZXMgYXMgZXhwbGFpbmVkIGluIFJFQURNRS53aW4zMiBzZWN0aW9uICdSdW5uaW5nIE5ldC1TTk1QIGFzCi0gICAgYSByZXBsYWNlbWVudCBmb3IgdGhlIE1pY3Jvc29mdCBTTk1QIHNlcnZpY2UnIC0gJ0NvbXBpbGluZyBOZXQtU05NUCB3aXRoIAotICAgIHRoZSB3aW5FeHRETEwgZXh0ZW5zaW9uIChNU1ZDKScuCi0KLTExLiAgU2V0IHRvIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICBOZXQtU05NUCBidWlsZCBhbmQgaW5zdGFsbCBvcHRpb25zCi0gICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIAotICAgIDEuIE9wZW5TU0wgc3VwcG9ydDogICAgICAJCWRpc2FibGVkCi0gICAgMi4gUGxhdGZvcm0gU0RLIHN1cHBvcnQ6IAkJZW5hYmxlZCAgICAgICAgICoqKgotICAgIAotICAgIDMuIEluc3RhbGwgcGF0aDogICAgICAgICAJCWM6L3VzcgotICAgIDQuIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAJCWRpc2FibGVkICAgICAgICAqKioKLSAgICAKLSAgICA1LiBQZXJsIG1vZHVsZXM6ICAgICAgICAgCQlkaXNhYmxlZAotICAgIDYuIEluc3RhbGwgcGVybCBtb2R1bGVzOiAJCWRpc2FibGVkCi0gICAgCi0gICAgNy4gUXVpZXQgYnVpbGQgKGxvZ2dlZCk6IAkJZW5hYmxlZAotICAgIDguIERlYnVnIG1vZGU6ICAgICAgICAgICAJCWRpc2FibGVkCi0gICAgOS4gSVB2NiB0cmFuc3BvcnRzOiAgICAgIAkJZGlzYWJsZWQKLQotICAgIDEwLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgIHN0YXRpYwotCi0gICAgMTEuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAJZGlzYWJsZWQKLSAgICAKLSAgICBGLiAgRmluaXNoZWQgLSBzdGFydCBidWlsZAotICAgIFEuICBRdWl0IC0gYWJvcnQgYnVpbGQKLSAgICAKLSAgICBTZWxlY3Qgb3B0aW9uIHRvIHNldCAvIHRvZ2dsZToKLQotMTIuIEYgdG8gc3RhcnQgdGhlIGJ1aWxkIGFuZCB2ZXJpZnkgZXZlcnl0aGluZyB3YXMgYnVpbHQgb2sKLQotMTMuIENvcHkgdGhlIG5ldyBiaW5hcnk6Ci0KLSAgICBjb3B5IGJpblxyZWxlYXNlXHNubXBkLmV4ZSBjOlx1c3JcYmluXHNubXBkLXdpbkV4dERMTC5leGUKLQotMTQuIFRlc3QgZWFjaCBiaW5hcnkgYnkgcnVubmluZyBlYWNoIG9uZSB3aXRoIC1Ed2luRXh0RExMLiAgTWFrZSBzdXJlIG9ubHkgdGhlCi0gICAgd2luRXh0RExMIHZlcnNpb24gaGFzIGRlYnVnIG91dHB1dC4KLQotCi1QYXJ0IDMgLSBDcmVhdGluZyB0aGUgUGVybCBwYWNrYWdlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLTEuICBjZCAoc291cmNlIGRpcikKLSAgICBjZCBwZXJsCi0KLTIuICBubWFrZSBwcGQKLQotMy4gIE9wZW4gYW4gTVNZUyBzaGVsbCAodW5sZXNzIHlvdSBoYXZlIHRhci5leGUgYW5kIGd6aXAuZXhlKQotCi00LiAgY2QgKHNvdXJjZSBkaXIpCi0gICAgY2QgcGVybAotCi01LiAgdGFyIGN2ZiBOZXRTTk1QLnRhciBibGliOyBnemlwIC0tYmVzdCBOZXRTTk1QLnRhcgotCi02LiAgT3BlbiBhIFdpbmRvd3MgY29tbWFuZCBwcm9tcHQgKENNRCkgYW5kIGNkIChzb3VyY2UgZGlyKVxwZXJsCi0KLTcuICByZW4gQnVuZGxlLU5ldFNOTVAucHBkIE5ldFNOTVAucHBkCi0KLTguICBNb2RpZnkgTmV0U05NUC5wcGQgdG8gbG9vayBsaWtlIHRoZSBmb2xsb3dpbmcuICBDaGFuZ2UgdGhlIAotICAgIFZFUlNJT049IngseCx4LHgiIGxpbmUgdG8gdGhlIGNvcnJlY3QgdmFsdWVzLiAgRG8gTk9UIGNoYW5nZSAKLSAgICAqIGxpbmVzIGluIHRoZSBvcmlnaW5hbCBmaWxlLgotCi08U09GVFBLRyBOQU1FPSJOZXRTTk1QIiBWRVJTSU9OPSI1LDIsMCwwIj4KLSAgICA8VElUTEU+TmV0LVNOTVA8L1RJVExFPgotICAgIDxBQlNUUkFDVD5PYmplY3QgT3JpZW50ZWQgSW50ZXJmYWNlIHRvIE5ldC1TTk1QPC9BQlNUUkFDVD4KLSAgICA8QVVUSE9SPjwvQVVUSE9SPgotICAgIDxJTVBMRU1FTlRBVElPTj4KLSogICAgICAgIDxPUyBOQU1FPSJNU1dpbjMyIiAvPgotKiAgICAgICAgPEFSQ0hJVEVDVFVSRSBOQU1FPSJNU1dpbjMyLXg4Ni1tdWx0aS10aHJlYWQtNS44IiAvPgotICAgICAgICA8Q09ERUJBU0UgSFJFRj0ieDg2L05ldFNOTVAudGFyLmd6IiAvPgotICAgIDwvSU1QTEVNRU5UQVRJT04+Ci08L1NPRlRQS0c+Ci0KLTkuICBDcmVhdGUgYmFzZSBkaXJlY3RvcmllczoKLQotICAgIG1kICJjOlx1c3JcZG9jcyIKLSAgICBtZCAiYzpcdXNyXHBlcmwiCi0gICAgbWQgImM6XHVzclxwZXJsXHg4NiIKLSAgICBtZCAiYzpcdXNyXHRlbXAiCi0KLTEwLiBDb3B5IGZpbGVzOgotCi0gICAgY2QgKHNvdXJjZSBkaXIpCi0gICAgY29weSBDT1BZSU5HICJjOlx1c3JcZG9jcyIKLSAgICBjb3B5IHdpbjMyXGRpc3RcUkVBRE1FLnR4dCAiYzpcdXNyIgotICAgIGNvcHkgd2luMzJcZGlzdFxzY3JpcHRzXG5ldC1zbm1wLXBlcmwtdGVzdC5wbCAiYzpcdXNyXGJpbiIKLQotICAgIGNvcHkgcGVybFxOZXRTTk1QLnBwZCAiYzpcdXNyXFBlcmwiCi0gICAgY29weSBwZXJsXE5ldFNOTVAudGFyLmd6ICJjOlx1c3JcUGVybFx4ODYiCi0KLTExLiBVcGRhdGUgdGhlIEJVSUxEIElORk9STUFUSU9OIHNlY3Rpb24gb2YgYzpcdXNyXFJFQURNRS50eHQKLQotCi1Db21waWxpbmcgSFRNTEhlbHAgZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhpcyBzZWN0aW9uIG91dGxpbmVzIHRoZSBzdGVwcyByZXF1aXJlZCB0byBidWlsZCBhIFdpbmRvd3MgSFRNTCBIZWxwIGZpbGUKLWJhc2VkIG9uIHRoZSBOZXQtU05NUCBtYW4gcGFnZXMsIFJFQURNRSBmaWxlcywgUGVybGRvYyBkb2N1bWVudGF0aW9uIGV0Yy4KLQotUmVxdWlyZW1lbnRzCi0tLS0tLS0tLS0tLS0KLQotIC1MaW51eCAob3Igc2ltaWxhcikgd2l0aDoKLSAgIC1tYW4gKG1hbiBwYWdlIHZpZXdlcikKLSAgIC10aWR5IChIVE1MIHRpZHkgLSBodHRwOi8vdGlkeS5zb3VyY2Vmb3JnZS5uZXQpCi0gICAtUGVybAotICAgLXBlcmxkb2MKLSAgIC1tYW4yaHRtbDMuMC4xLnRhci5neiAoaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZWhvb2QvbWFuMmh0bWwzLjAuMS8pCi0gICAgTm90ZTogIE1vc3QgTGludXggZGlzdHJpYnV0aW9ucyBjb21lIHdpdGggbWFuMmh0bWwgYXMgcGFydCBvZiB0aGUgbWFuIHJwbQotICAgICAgICAgICBwYWNrYWdlIHdoaWNoIGlzIG5vdCB0aGUgc2FtZSBhcyBtYW4yaHRtbCBmcm9tIG1hbjJodG1sMy4wLjEudGFyLmd6LgotICAgICAgICAgICBBbGwgdGhhdCBpcyBuZWVkZWQgZnJvbSBtYW4yaHRtbDMuMC4xLnRhci5neiBpcyB0aGUgbWFuMmh0bWwgc2NyaXB0LiAgCi0gICAgICAgICAgIFlvdSBkbyBub3QgbmVlZCB0byBkbyBhIGNvbXBsZXRlIGluc3RhbGwgKG1ha2UvbWFrZSBpbnN0YWxsKSBidXQgeW91Ci0gICAgICAgICAgIGRvIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBzY3JpcHQgaXMgY29uZmlndXJlZCBjb3JyZWN0bHkgYnkgc2V0dGluZyB0aGUKLSAgICAgICAgICAgbWFuIGNvbW1hbmQgbGluZSBzd2l0Y2hlcyBldGMgZm9yIHRoZSBPUyBmcm9tIGluc2lkZSBvZiB0aGUgc2NyaXB0LgotCi0gLVdpbmRvd3Mgd2l0aDoKLSAgIC1IVE1MIEhlbHAgV29ya3Nob3AgKFNlYXJjaCBtc2RuLm1pY3Jvc29mdC5jb20gZm9yICdodG1sIGhlbHAgd29ya3Nob3AgZG93bmxvYWQnKQotCi0KLUNvbnZlcnQgZG9jdW1lbnRzIHRvIGh0bWwKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTm90ZTogIFRoZSBmb2xsb3dpbmcgc3RlcHMgYXJlIGNvbXBsZXRlZCB1c2luZyBMaW51eC4KLQotTm90ZTogIEEgdGVtcG9yYXJ5IGxvY2F0aW9uIG9mIC90bXAvbmV0LXNubXAgaXMgdXNlZC4KLQotMS4gIEV4dHJhY3QgTmV0LVNOTVAgc291cmNlIGFuZCBjZCAoc291cmNlIGRpcikKLQotMi4gIGNkIChzb3VyY2UgZGlyKQotCi0zLiAgY3AgcGVybC9TTk1QL1JFQURNRSBSRUFETUUucGVybAotCi00LiAgUmVtb3ZlIG9sZGVyIGNvcGllcyBvZiBjb252ZXJ0ZWQgZmlsZXM6Ci0KLSAgICBybSAtUiAtZiAvdG1wL25ldC1zbm1wCi0KLTUuICBCdWlsZCBOZXQtU05NUCBtYW4gcGFnZXM6IAotCi0gICAgLi9jb25maWd1cmUgLS1wcmVmaXg9YzovdXNyOyBtYWtlIHNlZHNjcmlwdDsgY2QgbWFuO21ha2U7IGNkIC4uCi0KLTYuICBJbnN0YWxsIG9ubHkgdGhlIG1hbiBmaWxlcyB0byAvdGVtcC9uZXQtc25tcDoKLQotICAgIGNkIG1hbjsgbWFrZSBpbnN0YWxsIHByZWZpeD0vdG1wL25ldC1zbm1wOyBjZCAuLgotCi03LiAgR28gdG8gdGhlIHNjcmlwdHMgZm9sZGVyIGFuZCBtYWtlIHN1cmUgYWxsIHRoZSBzY3JpcHRzIGFyZSBleGVjdXRhYmxlOgotCi0gICAgY2QgKHNvdXJjZSBkaXIpCi0gICAgY2Qgd2luMzIvZGlzdC9zY3JpcHRzOyBjaG1vZCAreCAqCi0KLTguICBFZGl0IHRoZXNlIGZpbGVzIGFuZCBtYWtlIHN1cmUgdGhlIHBhdGhzIGFyZSBjb3JyZWN0IGluIHRoZSBPUFRJT05TIAotICAgIHNlY3Rpb24uICBBbHNvIGVuc3VyZSB0aGUgbGlzdCBvZiBSRUFETUUgZmlsZXMgYW5kIFBlcmwgbW9kdWxlcyAKLSAgICBhcmUgY29ycmVjdCBpbiByZWFkbWUyaHRtbCBhbmQgcG9kZGlyMmh0bWwuCi0KLSAgICBtYW5kaXIyaHRtbAotICAgIHJlYWRtZTJodG1sCi0gICAgcG9kZGlyMmh0bWwKLQotICAgIE5vdGU6ICBtYW5kaXIyaHRtbCB3aWxsIHByb2Nlc3MgQUxMIG1hbiBwYWdlcyBpbiBjOlx0ZW1wXG5ldC1zbm1wIHdoaWxlCi0gICAgICAgICAgIHJlYWRtZTJodG1sIGFuZCBwb2RkaXIyaHRtbCB3aWxsIG9ubHkgcHJvY2VzcyBmaWxlcyBsaXN0ZWQgaW4gdGhlCi0gICAgICAgICAgIHNjcmlwdC4gIElmIG5ldyBtYW4gcGFnZXMgYXJlIGFkZGVkIG9yIHJlbW92ZWQsIHRoZSBUYWJsZSBvZiAKLSAgICAgICAgICAgQ29udGVudHMgKHRvYy5oaGMpIGFuZCBwcm9qZWN0IGZpbGUgKE5ldC1TTk1QLmhocCkgbmVlZCB0byBiZSAKLSAgICAgICAgICAgdXBkYXRlZCBieSBoYW5kLgotCi05LiAgUnVuIGVhY2ggc2NyaXB0IHRvIGdlbmVyYXRlIHRoZSAuaHRtbCBmaWxlczoKLQotICAgIC4vbWFuZGlyMmh0bWw7IC4vcmVhZG1lMmh0bWw7IC4vcG9kZGlyMmh0bWwKLQotICAgIE5vdGU6ICBUaGVyZSB3aWxsIGJlIG1hbnkgd2FybmluZ3MgZnJvbSB0aWR5IHdoaWNoIGNhbiBiZSBpZ25vcmVkLgotCi0xMC4gVmVyaWZ5IGVhY2ggY29udmVydGVkIGZpbGUgdG8gZW5zdXJlIGFsbCB0aGUgbGlua3MgYXJlIGNvcnJlY3QuICBUaGUgZmlsZXMKLSAgICBhcmUgbG9jYXRlZCBpbiAvdG1wL25ldC1zbm1wL2h0bWwgYnkgZGVmYXVsdC4gIEluIHNvbWUgaW5zdGFuY2VzLCBVUkxzIG1heSBiZSAKLSAgICBzcGxpdCBhY3Jvc3MgdHdvIGxpbmVzIHN1Y2ggYXMgdGhlIFZhcmlhYmxlcyBsaW5rIGF0IHRoZSBib3R0b20gb2YgCi0gICAgL3RtcC9uZXQtc25tcC9odG1sL21hbjgtc25tcHRyYXBkLjguaHRtbC4KLQotMTEuIElmIG5ldyBtYW4gcGFnZXMgYXJlIGFkZGVkIG9yIHJlbW92ZWQsIHRoZSBUYWJsZSBvZiBDb250ZW50cyAoTmV0LVNOTVAuaGhjKSBhbmQKLSAgICBwcm9qZWN0IGZpbGUgKE5ldC1TTk1QLmhocCkgbmVlZCB0byBiZSB1cGRhdGVkIGJ5IGhhbmQuCi0KLTEyLiBDb252ZXJ0IEVYQU1QTEUuY29uZi53aW4zMiB0byBodG1sOgotCi0gICAgLi90eHQyaHRtbCAuLi8uLi9FWEFNUExFLmNvbmYud2luMzIgfCB0aWR5ID4gL3RtcC9uZXQtc25tcC9odG1sL0VYQU1QTEUuY29uZi53aW4zMi5odG1sCi0gICAgCi0KLUJ1aWxkIE5ldC1TTk1QLmNobQotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLU5vdGU6ICBUaGUgZm9sbG93aW5nIHN0ZXBzIGFyZSBjb21wbGV0ZWQgdXNpbmcgV2luZG93cy4KLQotTm90ZTogIEEgdGVtcG9yYXJ5IGxvY2F0aW9uIG9mIGM6XHRlbXBcbmV0LXNubXAgaXMgdXNlZC4KLQotMS4gIFRyYW5zZmVyIC90bXAvbmV0LXNubXAvaHRtbCBmcm9tIExpbnV4IHRvIGM6XHRlbXBcbmV0LXNubXBcaHRtbAotCi0yLiAgR3JhYiB0aGUgRkFRIGZyb20gdGhlIHdlYiBzaXRlLCBzdHJpcCBvdXQgdGhlIGluY2x1ZGVzIGFuZCBzYXZlIGFzCi0gICAgYzpcdGVtcFxuZXQtc25tcFxodG1sXEZBUS5odG1sIGFuZCBydW46Ci0KLSAgICB0aWR5IC1hc3hodG1sIC1tIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxGQVEuaHRtbAotCi0zLiAgR3JhYiB0aGUgRGV2bG9wZXIgRkFRIGZyb20gdGhlIHdlYiBzaXRlLCBzdHJpcCBvdXQgdGhlIGluY2x1ZGVzIGFuZCBzYXZlIGFzCi0gICAgYzpcdGVtcFxuZXQtc25tcFxodG1sXERldmVsb3Blcl9GQVEuaHRtbCBhbmQgcnVuOgotCi0gICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcRGV2ZWxvcGVyX0ZBUS5odG1sCi0KLTQuICBDb3B5IHRoZSBmb2xsb3dpbmcgZmlsZXMgdG8gYzpcdGVtcFxuZXQtc25tcFxodG1sOgotCi0gICAgY2QgKHNvdXJjZSBkaXIpCi0gICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxDb25maWd1cmF0aW9uX092ZXJ2aWV3Lmh0bWwiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwKLSAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXEhlbHBfQ2F2ZWF0cy5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcCi0gICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxJbnRyb2R1Y3Rpb24uaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXAotICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcTmV0LVNOTVAuaGhjIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcCi0gICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxOZXQtU05NUC5oaHAiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwKLSAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXG5ldC1zbm1wLTQuMi04MDAuanBnIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcCi0gICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxzbm1wLmNvbmYud2luMzIuaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXAotICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcc25tcGQuY29uZi53aW4zMi5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcCi0gICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxzbm1wdHJhcGQuY29uZi53aW4zMi5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcCi0KLTUuICBOZXcgY29uZmlndXJhdGlvbiBvcHRpb25zIG1heSBiZSBhdmFpbGFibGUgaW4gdGhlIG5ldyByZWxlYXNlIG9mCi0gICAgTmV0LVNOTVAsIHNvIHRoZSAqLmNvbmYud2luMzIuaHRtbCBmaWxlcyBzaG91bGQgYmUgdXBkYXRlZC4KLQotICAgIENyZWF0ZSBhIHRleHQgZmlsZSB3aXRoIGFsbCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBzbm1wZCBhbmQgCi0gICAgc25tcHRyYXBkIHVzaW5nOgotCi0gICAgY2Qgd2luMzJcYmluXHJlbGVhc2UgKGZvbGRlciBvZiAqV2luZG93cyogY29tcGlsZWQgTmV0LVNOTVApCi0gICAgc25tcHRyYXBkIC1IIDI+IGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wdHJhcGQub3B0aW9ucwotICAgIHNubXBkIC1IIDI+IGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wZC5vcHRpb25zCi0KLSAgICBVcGRhdGUgdGhlc2UgZmlsZXMgdXNpbmcgYW4gSFRNTCBlZGl0b3IgKE1vemlsbGEgZXRjKToKLQotICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wLmNvbmYud2luMzIuaHRtbAotICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wZC5jb25mLndpbjMyLmh0bWwKLSAgICBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcHRyYXBkLmNvbmYud2luMzIuaHRtbAotIAotICAgIE9ubHkgYWRkIHRoZSByZWxldmVudCBzZWN0aW9uIHRvIGVhY2ggZmlsZSBmcm9tIHRoZSAub3B0aW9ucyBmaWxlcwotICAgIGNyZWF0ZWQgYWJvdmUsIGVuc3VyZSB0aGUgZm9udCBpcyBzZXQgdG8gZml4ZWQgd2lkdGguCi0KLSAgICBUaWR5IGVhY2ggZmlsZSB1c2luZyB0aWR5IHVuZGVyIFdpbmRvd3MgKG9yIHRyYW5zZmVyIHRvIExpbnV4IGFuZCB0aWR5Ci0gICAgdXNpbmcgTGludXgpOgotCi0gICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcHRyYXBkLmNvbmYud2luMzIuaHRtbAotICAgIHRpZHkgLWFzeGh0bWwgLW0gYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXBkLmNvbmYud2luMzIuaHRtbAotICAgIHRpZHkgLWFzeGh0bWwgLW0gYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXAuY29uZi53aW4zMi5odG1sCi0KLTYuICBFZGl0IGM6XHRlbXBcbmV0LXNubXBcaHRtbFxOZXQtU05NUC5oaHAgYW5kIHVwZGF0ZSB0aGUgdmVyc2lvbiBmb3IgdGhlIAotICAgICdUaXRsZScgdmFyaWFibGUuCi0KLTcuICBSdW4gSFRNTCBXb3Jrc2hvcAotCi04LiAgT3BlbiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcTmV0LVNOTVAuaGhwCi0KLTkuICBDbGljayBGaWxlIC0gQ29tcGlsZQotCi0xMC4gU2VsZWN0ICdDOlx0ZW1wXG5ldC1zbm1wXGh0bWxcTmV0LVNOTVAuaGhwJyBhcyB0aGUgZmlsZW5hbWUKLQotMTEuIENsaWNrIENvbXBpbGUKLQotMTIuIFlvdSBzaG91bGQgbm93IGhhdmUgYSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcTmV0LVNOTVAuY2htIGZpbGUuCi0KLTEzLiBMYXVuY2ggdGhlIGZpbGUgYW5kIGVuc3VyZSBldmVyeSBjb250ZW50IGl0ZW0gZGlzcGxheXMgdGhlIGNvcnJlY3QgcGFnZS4KLQotCi1Db21iaW5pbmcgdGhlIGJpbmFyaWVzIGFuZCBIVE1MSGVscCBmaWxlcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotMS4gIENvcHkgdGhlIEhUTUwgSGVscCBmaWxlIHRvIGM6XHVzclxkb2NzOgotCi0gICAgY29weSBjOlx0ZW1wXE5ldC1TTk1QXGh0bWxcTmV0LVNOTVAuY2htIGM6XHVzclxkb2NzXAotCi0KLUJ1bGRpbmcgYSBOdWxsU29mdCBpbnN0YWxsZXIgcGFja2FnZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlcXVpcmVtZW50cwotLS0tLS0tLS0tLS0tCi0KLSAtV2luZG93cwotIC1OdWxsc29mdCBTY3JpcHRhYmxlIEluc3RhbGwgU3lzdGVtIDIuMCAtIGh0dHA6Ly9uc2lzLnNvdXJjZWZvcmdlLm5ldC9ob21lLwotCi0xLiAgQ29tcGxldGUgdGhlIHRocmVlIHNlY3Rpb25zIGFib3ZlOiAgJ0NvbXBpbGluZyBiaW5hcmllcycsICdDb21waWxpbmcgCi0gICAgSFRNTEhlbHAgZmlsZScgYW5kICdDb21iaW5pbmcgdGhlIGJpbmFyaWVzIGFuZCBIVE1MSGVscCBmaWxlcycuICBOZXQtU05NUAotICAgIHNob3VsZCBiZSBsb2NhdGVkIGluIGM6XHVzci4KLQotMi4gIENvcHkgdGhlIGZvbGxvd2luZyBmaWxlcyB0byBjOlx1c3I6Ci0KLSAgICBjZCAoc291cmNlIGRpcikKLSAgICBjb3B5IHdpbjMyXGRpc3RcaW5zdGFsbGVyXFNldEVuVmFyLm5zaSBjOlx1c3JcCi0gICAgY29weSB3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC5uc2kgYzpcdXNyXAotICAgIGNvcHkgd2luMzJcZGlzdFxpbnN0YWxsZXJcQWRkMlBhdGgubnNpIGM6XHVzclwKLSAgICBjb3B5IHdpbjMyXGRpc3RcaW5zdGFsbGVyXG5ldC1zbm1wLWhlYWRlcjEuYm1wIGM6XHVzclwKLQotMy4gIENyZWF0ZSB0aGUgZm9sbG93aW5nIGVtcHR5IGZpbGVzOgotCi0gICAgZWNobyAuID4gYzpcdXNyXHJlZ2lzdGVyYWdlbnQuYmF0Ci0gICAgZWNobyAuID4gYzpcdXNyXHVucmVnaXN0ZXJhZ2VudC5iYXQKLSAgICBlY2hvIC4gPiBjOlx1c3JccmVnaXN0ZXJ0cmFwZC5iYXQKLSAgICBlY2hvIC4gPiBjOlx1c3JcdW5yZWdpc3RlcnRyYXBkLmJhdAotICAgIGVjaG8gLiA+IGM6XHVzclxldGNcc25tcFxzbm1wLmNvbmYKLQotNC4gIEVkaXQgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgaW4gYzpcdXNyXG5ldC1zbm1wLm5zaToKLQotICAgIFBST0RVQ1RfTUFKX1ZFUlNJT04KLSAgICBQUk9EVUNUX01JTl9WRVJTSU9OCi0gICAgUFJPRFVDVF9SRVZJU0lPTgotICAgIFBST0RVQ1RfRVhFX1ZFUlNJT04KLQotICAgIEZvciBleGFtcGxlLCBmb3IgNS4xLjI6Ci0KLSAgICBQUk9EVUNUX01BSl9WRVJTSU9OICI1IgotICAgIFBST0RVQ1RfTUlOX1ZFUlNJT04gIjEiCi0gICAgUFJPRFVDVF9SRVZJU0lPTiAiMiIKLSAgICBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIgotCi0gICAgVGhlIGdlbmVyYXRlZCBmaWxlbmFtZSB3b3VsZCBiZTogbmV0LXNubXAtNS4xLjItMS53aW4zMi5leGUKLQotICAgIFBST0RVQ1RfRVhFX1ZFUlNJT04gaXMgdXN1YWxseSAxIHVubGVzcyB0aGUgYmluYXJ5IHBhY2thZ2UgaXMgcmUtcmVsZWFzZWQKLSAgICBkdWUgdG8gcGFja2FnaW5nIGlzc3Vlcy4gIEZvciBwcmUgcmVsZWFzZXMsIGluY2x1ZGUgdGhlIHByZS1yZWxlYXNlIHZlcnNpb24gCi0gICAgaW4gUFJPRFVDVF9SRVZJU0lPTi4gICBGb3IgZXhhbXBsZSwgZm9yIDUuMS4yIHByZTIgdXNlOgotCi0gICAgUFJPRFVDVF9NQUpfVkVSU0lPTiAiNSIKLSAgICBQUk9EVUNUX01JTl9WRVJTSU9OICIxIgotICAgIFBST0RVQ1RfUkVWSVNJT04gIjIucHJlMiIKLSAgICBQUk9EVUNUX0VYRV9WRVJTSU9OICIxIgotCi0gICAgVGhpcyB3aWxsIGVuc3VyZSB0aGUgdmVyc2lvbiBudW1iZXIgaXMgdmlzaWJsZSBkdXJpbmcgaW5zdGFsbGF0aW9uLgotCi0gICAgVGhlIGdlbmVyYXRlZCBmaWxlbmFtZSB3b3VsZCBiZTogbmV0LXNubXAtNS4xLjIucHJlMi0xLndpbjMyLmV4ZQotCi01LiAgTGF1bmNoIHRoZSAnTnVsbHNvZnQgSW5zdGFsbCBTeXN0ZW0gKE5TSVMgMi4wKScKLQotNi4gIFNlbGVjdCAnTWFrZU5TSVNXIChjb21waWxlciBpbnRlcmZhY2UpJwotCi03LiAgQ2xpY2sgRmlsZSAtIExvYWQgU2NyaXB0Ci0KLTguICBTZWxlY3QgYzpcdXNyXG5ldC1zbm1wLm5zaQotCi05LiAgWW91IHNob3VsZCBub3cgaGF2ZSBhIGM6XHVzclxOZXQtU05NUC14LngueC14LmV4ZSBiaW5hcnkgaW5zdGFsbGVyIAotICAgIHBhY2thZ2UKLQotMTAuIFRlc3QgdGhlIHBhY2thZ2UKLQotMTEuIENvbXBhcmUgdGhlIGRpcmVjdG9yeSBjb250ZW50cyBvZiB0aGUgY29tcGlsZWQgZm9sZGVyIHdpdGggdGhlIGluc3RhbGxlZAotICAgIGZvbGRlciB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1pc3NpbmcgTUlCIGZpbGVzIGV0Yy4gIE1vZGlmeSBuZXQtc25tcC5uc2kKLSAgICBhbmQgcmVidWlsZCBpZiByZXF1aXJlZC4KLQotMTIuIENyZWF0ZSBhIC56aXAgZmlsZSBvZiBjOlx1c3IgZm9yIGFyY2hpdmUgcHVycG9zZXMuCi0KLQotQnVsZGluZyBhbiBPcGVuU1NMIHZlcnNpb24KLT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVJlcXVpcmVtZW50cwotLS0tLS0tLS0tLS0tCi0KLSAtT3BlblNTTCBiaW5hcnkgZnJvbSBodHRwOi8vd3d3LnNscHJvd2ViLmNvbS9wcm9kdWN0cy9XaW4zMk9wZW5TU0wuaHRtbAotCi0xLiAgSW5zdGFsbCB0aGUgT3BlblNTTCBiaW5hcnksIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcyBhcyBleHBsYWluZWQgaW4gCi0gICAgJ1VzaW5nIGEgcHJlLWNvbXBpbGVkIHZlcnNpb24nIG9mIHRoZSAnTWljcm9zb2Z0IFZpc3VhbCBDKysgLSBCdWlsZGluZyB3aXRoIAotICAgIE9wZW5TU0wnIHNlY3Rpb24gb2YgUkVBRE1FLndpbjMyLgotCi0yLiAgTW92ZSBjOlx1c3IgYzpcdXNyLnRlbXAKLQotMy4gIFJlLWJ1aWxkIHRoZSBiaW5hcnkgYnkgZm9sbG93aW5nIHRoZSBzdGVwcyBpbiB0aGUgc2VjdGlvbiAnQnVpbGRpbmcgdGhlIAotICAgIG1haW4gYmluYXJpZXMnIGV4Y2VwdCBlbmFibGUgT3BlblNTTC4gIEJlIHN1cmUgdG8gdW5kbyB0aGUgd2luRXh0RExMIAotICAgIGNoYW5nZXMgYmVmb3JlIHN0YXJ0aW5nIGJ5IGNvcHlpbmcgYSBmcmVzaCBuZXQtc25tcC1jb25maWcuaC5pbiBhbmQgCi0gICAgbmV0c25tcG1pYnNzZGsuZHNwLgotCi00LiAgQ29weSBjb250ZW50cyBvZiBjOlx1c3IgdG8gYzpcdXNyLnRlbXAKLQotNS4gIERlbGV0ZSBjOlx1c3IKLQotNi4gIE1vdmUgYzpcdXNyLnRlbXAgYzpcdXNyCi0KLTcuICBVcGRhdGUgdGhlIEJVSUxEIElORk9STUFUSU9OIHNlY3Rpb24gb2YgYzpcdXNyXFJFQURNRS50eHQgdG8gaW5jbHVkZSB0aGUgU1NMIAotICAgIGluZm8gYW5kIHRoZSBmaWxlbmFtZS4KLQotOC4gIFVwZGF0ZSB0aGUgdmVyc2lvbiBzdGFtcCBpbiBjOlx1c3JcbmV0LXNubXAubnNpIHRvIGluY2x1ZGUgLXNzbC4gIEV4YW1wbGU6Ci0KLSAgICBGb3IgZXhhbXBsZSwgZm9yIDUuMy4wOgotCi0gICAgUFJPRFVDVF9NQUpfVkVSU0lPTiAiNSIKLSAgICBQUk9EVUNUX01JTl9WRVJTSU9OICIzIgotICAgIFBST0RVQ1RfUkVWSVNJT04gIjAtc3NsIgotICAgIFBST0RVQ1RfRVhFX1ZFUlNJT04gIjEiCi0KLSAgICBUaGUgZ2VuZXJhdGVkIGZpbGVuYW1lIHdvdWxkIGJlOiBuZXQtc25tcC01LjMuMC1zc2wtMS53aW4zMi5leGUKLQotOS4gIEluIGM6XHVzclxuZXQtc25tcC5uc2ksIGNoYW5nZToKLQotICAgICFkZWZpbmUgT1BFTlNTTF9SRVFVSVJFRCAiMCIKLQotICAgIHRvCi0KLSAgICAhZGVmaW5lIE9QRU5TU0xfUkVRVUlSRUQgIjEiCi0KLTEwLiBMYXVuY2ggdGhlICdOdWxsc29mdCBJbnN0YWxsIFN5c3RlbSAoTlNJUyAyLjApJwotCi0xMS4gU2VsZWN0ICdNYWtlTlNJU1cgKGNvbXBpbGVyIGludGVyZmFjZSknCi0KLTEyLiBDbGljayBGaWxlIC0gTG9hZCBTY3JpcHQKLQotMTMuIFNlbGVjdCBjOlx1c3JcbmV0LXNubXAubnNpCi0KLTE0LiBZb3Ugc2hvdWxkIG5vdyBoYXZlIGEgYzpcdXNyXE5ldC1TTk1QLXgueC54LXguZXhlIGJpbmFyeSBpbnN0YWxsZXIgCi0gICAgcGFja2FnZQotCi0xNS4gVGVzdCB0aGUgcGFja2FnZQotCi0xNi4gQ29tcGFyZSB0aGUgZGlyZWN0b3J5IGNvbnRlbnRzIG9mIHRoZSBjb21waWxlZCBmb2xkZXIgd2l0aCB0aGUgaW5zdGFsbGVkCi0gICAgZm9sZGVyIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWlzc2luZyBNSUIgZmlsZXMgZXRjLiAgTW9kaWZ5IG5ldC1zbm1wLm5zaQotICAgIGFuZCByZWJ1aWxkIGlmIHJlcXVpcmVkLgotCi0xNy4gQ3JlYXRlIGEgLnppcCBmaWxlIG9mIGM6XHVzciBmb3IgYXJjaGl2ZSBwdXJwb3Nlcy4KLQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogUkVBRE1FLmJ1aWxkLndpbjMyDQorKg0KKyogQXV0aG9yczogQWxleCBCdXJnZXIgPGFsZXhfYkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+DQorKiAgICAgICAgICANCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorDQorSW50cm9kdWN0aW9uDQorPT09PT09PT09PT09DQorDQorVGhpcyBSRUFETUUgb3V0bGluZXMgdGhlIHN0ZXBzIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIGJpbmFyeSByZWxlYXNlIGZvcg0KK1dpbmRvd3MgdXNpbmcgTWljcm9zb2Z0IFZpc3VhbCBTdHVkaW8gYW5kIHRoZSBOdWxsU29mdCBpbnN0YWxsZXIuDQorDQorVGhlcmUgYXJlIGZvdXIgc2VjdGlvbnM6DQorDQorICBDb21waWxpbmcgYmluYXJpZXMNCisNCisgIENvbXBpbGluZyBIVE1MSGVscCBmaWxlDQorDQorICBDb21iaW5pbmcgdGhlIGJpbmFyaWVzIGFuZCBIVE1MSGVscCBmaWxlcw0KKw0KKyAgQnVsZGluZyBhIE51bGxTb2Z0IGluc3RhbGxlciBwYWNrYWdlDQorDQorICBCdWxkaW5nIGFuIE9wZW5TU0wgdmVyc2lvbg0KKw0KKw0KK0NvbXBpbGluZyBiaW5hcmllcw0KKz09PT09PT09PT09PT09PT09PQ0KKw0KK1JlcXVpcmVtZW50cw0KKy0tLS0tLS0tLS0tLQ0KKw0KKyAtV2luZG93cyBOVC8yMDAwL1hQDQorIC1NU1ZDKysgNi4wIFNQNQ0KKyAtQWN0aXZlUGVybCA1LjguMiBidWlsZCA4MDgNCisgLWdudV9yZWdleC5leGUgKDAuMTIpIC0gaHR0cDovL3Blb3BsZS5kZWxwaGlmb3J1bXMuY29tL2dqYy9nbnVfcmVnZXguaHRtbA0KKyAtUGxhdGZvcm0gU0RLDQorIC1NU1lTIC8gTWluR1cgLW9yLSB0YXIuZXhlIGFuZCBnemlwLmV4ZQ0KKyAtd2luMzIvZGlzdCBmb2xkZXIgZnJvbSBNQUlOIGluIENWUw0KKw0KKw0KK0J1aWxkaW5nIHRoZSBtYWluIGJpbmFyaWVzDQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCitOb3RlOiAgQWxsIHNoZWxsIHN0ZXBzIGFyZSB1c2luZyB0aGUgV2luZG93IENNRCBwcm9tcHQgdW5sZXNzIG90aGVyd2lzZSBzdGF0ZWQuDQorDQorUGFydCAxDQorLS0tLS0tDQorDQorMS4gIEV4dHJhY3Qgc291cmNlLiAgVGhlIGxvY2F0aW9uIHdpbGwgYmUgcmVmZXJlbmNlZCBhcyAoc291cmNlIGRpcikNCisNCisyLiAgRGVsZXRlIGM6XHVzciBpZiBpdCBleGlzdHMgYW5kIHJlbmFtZSBOZXQtU05NUC5kbGwgaW4geW91ciAld2luZGlyJSBpZiB5b3UgDQorICAgIGhhdmUgaXQgYWxyZWFkeSAodG8gZW5zdXJlIFBlcmwgdGVzdHMgYXJlIHVzaW5nIHRoZSBjb21waWxlZCBETEwpDQorDQorMy4gIEFwcGx5IGFueSByZXF1aXJlZCBwYXRjaGVzDQorDQorNC4gIFJlbW92ZSB0aGUgZXhhbXBsZSBNSUIgZmlsZXM6ICANCisNCisgICAgRWRpdCB3aW4zMlxuZXQtc25tcFxhZ2VudFxtaWJfbW9kdWxlX2NvbmZpZy5oIGFuZCBjaGFuZ2UgdGhlIGZvbGxvd2luZyBsaW5lczoNCisNCisgICAgICAjZGVmaW5lIFVTSU5HX0VYQU1QTEVTX1VDRERFTU9QVUJMSUNfTU9EVUxFIDENCisgICAgICAjZGVmaW5lIFVTSU5HX0VYQU1QTEVTX0VYQU1QTEVfTU9EVUxFIDENCisNCisgICAgdG86DQorDQorICAgICAgI3VuZGVmIFVTSU5HX0VYQU1QTEVTX1VDRERFTU9QVUJMSUNfTU9EVUxFDQorICAgICAgI3VuZGVmIFVTSU5HX0VYQU1QTEVTX0VYQU1QTEVfTU9EVUxFDQorDQorNS4gIGNkIChzb3VyY2UgZGlyKVx3aW4zMg0KKw0KKzYuICBSdW4gYnVpbGQuYmF0DQorDQorNy4gIFNldCB0byB0aGUgZm9sbG93aW5nOg0KKw0KKyAgICBOZXQtU05NUCBidWlsZCBhbmQgaW5zdGFsbCBvcHRpb25zDQorICAgID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCisgICAgDQorICAgIDEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgCQlkaXNhYmxlZA0KKyAgICAyLiAgUGxhdGZvcm0gU0RLIHN1cHBvcnQ6IAkJZW5hYmxlZCAgICAgICAgICoqKg0KKyAgICANCisgICAgMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAJCWM6L3Vzcg0KKyAgICA0LiAgSW5zdGFsbCBhZnRlciBidWlsZDogIAkJZW5hYmxlZA0KKyAgICANCisgICAgNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAJCWVuYWJsZWQgICAgICAgICAqKioNCisgICAgNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAJCWRpc2FibGVkDQorICAgIA0KKyAgICA3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6IAkJZW5hYmxlZA0KKyAgICA4LiAgRGVidWcgbW9kZTogICAgICAgICAgIAkJZGlzYWJsZWQNCisNCisgICAgOS4gIElQdjYgdHJhbnNwb3J0czogICAgICAJCWRpc2FibGVkDQorICAgIDEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6IGRpc2FibGVkDQorDQorICAgIDExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgIGR5bmFtaWMJCSoqKg0KKw0KKyAgICAxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgIAllbmFibGVkICAgICAgICAgKioqDQorICAgIA0KKyAgICBGLiAgRmluaXNoZWQgLSBzdGFydCBidWlsZA0KKyAgICBRLiAgUXVpdCAtIGFib3J0IGJ1aWxkDQorICAgIA0KKyAgICBTZWxlY3Qgb3B0aW9uIHRvIHNldCAvIHRvZ2dsZToNCisNCis4LiAgRiB0byBzdGFydCB0aGUgYnVpbGQgYW5kIHZlcmlmeSBldmVyeXRoaW5nIHdhcyBidWlsdCBvaw0KKw0KKzkuICBEZWxldGUgYW55IGdlbmVyYXRlZCBjb25maWcgZmlsZXMgZnJvbSBjOlx1c3Jcc25tcFxwZXJzaXN0DQorDQorUGFydCAyIC0gQ29tcGlsaW5nIHdpbkV4dERMTA0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisNCisxMC4gUnVuIGJ1aWxkLmJhdCBhbmQgc2V0IHRvIHRoZSBmb2xsb3dpbmc6DQorDQorICAgIE5ldC1TTk1QIGJ1aWxkIGFuZCBpbnN0YWxsIG9wdGlvbnMNCisgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKyAgICANCisgICAgMS4gT3BlblNTTCBzdXBwb3J0OiAgICAgIAkJZGlzYWJsZWQNCisgICAgMi4gUGxhdGZvcm0gU0RLIHN1cHBvcnQ6IAkJZW5hYmxlZCAgICAgICAgICoqKg0KKyAgICANCisgICAgMy4gSW5zdGFsbCBwYXRoOiAgICAgICAgIAkJYzovdXNyDQorICAgIDQuIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAJCWRpc2FibGVkICAgICAgICAqKioNCisgICAgDQorICAgIDUuIFBlcmwgbW9kdWxlczogICAgICAgICAJCWRpc2FibGVkDQorICAgIDYuIEluc3RhbGwgcGVybCBtb2R1bGVzOiAJCWRpc2FibGVkDQorICAgIA0KKyAgICA3LiBRdWlldCBidWlsZCAobG9nZ2VkKTogCQllbmFibGVkDQorICAgIDguIERlYnVnIG1vZGU6ICAgICAgICAgICAJCWRpc2FibGVkDQorDQorICAgIDkuIElQdjYgdHJhbnNwb3J0czogICAgICAJCWRpc2FibGVkDQorICAgIDEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6IGVuYWJsZWQgICAgICAgICAqKioNCisNCisgICAgMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgZHluYW1pYwkJKioqDQorDQorICAgIDEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgCWRpc2FibGVkDQorICAgIA0KKyAgICBGLiAgRmluaXNoZWQgLSBzdGFydCBidWlsZA0KKyAgICBRLiAgUXVpdCAtIGFib3J0IGJ1aWxkDQorICAgIA0KKyAgICBTZWxlY3Qgb3B0aW9uIHRvIHNldCAvIHRvZ2dsZToNCisNCisxMS4gRiB0byBzdGFydCB0aGUgYnVpbGQgYW5kIHZlcmlmeSBldmVyeXRoaW5nIHdhcyBidWlsdCBvaw0KKw0KKzEyLiBDb3B5IHRoZSBuZXcgYmluYXJ5Og0KKw0KKyAgICBjb3B5IGJpblxyZWxlYXNlXHNubXBkLmV4ZSBjOlx1c3JcYmluXHNubXBkLXdpbkV4dERMTC5leGUNCisNCisxMy4gVGVzdCBlYWNoIGJpbmFyeSBieSBydW5uaW5nIGVhY2ggb25lIHdpdGggLUR3aW5FeHRETEwuICBNYWtlIHN1cmUgb25seSB0aGUNCisgICAgd2luRXh0RExMIHZlcnNpb24gaGFzIGRlYnVnIG91dHB1dC4NCisNCisxNC4gRGVsZXRlIGFueSBnZW5lcmF0ZWQgY29uZmlnIGZpbGVzIGZyb20gYzpcdXNyXHNubXBccGVyc2lzdA0KKw0KKw0KK1BhcnQgMyAtIENyZWF0aW5nIHRoZSBQZXJsIHBhY2thZ2UNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorMS4gIGNkIChzb3VyY2UgZGlyKQ0KKyAgICBjZCBwZXJsDQorDQorMi4gIG5tYWtlIHBwZA0KKw0KKzMuICBPcGVuIGFuIE1TWVMgc2hlbGwgKHVubGVzcyB5b3UgaGF2ZSB0YXIuZXhlIGFuZCBnemlwLmV4ZSkNCisNCis0LiAgY2QgKHNvdXJjZSBkaXIpDQorICAgIGNkIHBlcmwNCisNCis1LiAgdGFyIGN2ZiBOZXRTTk1QLnRhciBibGliOyBnemlwIC0tYmVzdCBOZXRTTk1QLnRhcg0KKw0KKzYuICBPcGVuIGEgV2luZG93cyBjb21tYW5kIHByb21wdCAoQ01EKSBhbmQgY2QgKHNvdXJjZSBkaXIpXHBlcmwNCisNCis3LiAgcmVuIEJ1bmRsZS1OZXRTTk1QLnBwZCBOZXRTTk1QLnBwZA0KKw0KKzguICBNb2RpZnkgTmV0U05NUC5wcGQgdG8gbG9vayBsaWtlIHRoZSBmb2xsb3dpbmcuICBDaGFuZ2UgdGhlIA0KKyAgICBWRVJTSU9OPSJ4LHgseCx4IiBsaW5lIHRvIHRoZSBjb3JyZWN0IHZhbHVlcy4gIERvIE5PVCBjaGFuZ2UgDQorICAgICogbGluZXMgaW4gdGhlIG9yaWdpbmFsIGZpbGUuDQorDQorPFNPRlRQS0cgTkFNRT0iTmV0U05NUCIgVkVSU0lPTj0iNSw0LDEsMCI+DQorICAgIDxUSVRMRT5OZXQtU05NUDwvVElUTEU+DQorICAgIDxBQlNUUkFDVD5PYmplY3QgT3JpZW50ZWQgSW50ZXJmYWNlIHRvIE5ldC1TTk1QPC9BQlNUUkFDVD4NCisgICAgPEFVVEhPUj48L0FVVEhPUj4NCisgICAgPElNUExFTUVOVEFUSU9OPg0KKyogICAgICAgIDxPUyBOQU1FPSJNU1dpbjMyIiAvPg0KKyogICAgICAgIDxBUkNISVRFQ1RVUkUgTkFNRT0iTVNXaW4zMi14ODYtbXVsdGktdGhyZWFkLTUuOCIgLz4NCisgICAgICAgIDxDT0RFQkFTRSBIUkVGPSJ4ODYvTmV0U05NUC50YXIuZ3oiIC8+DQorICAgIDwvSU1QTEVNRU5UQVRJT04+DQorPC9TT0ZUUEtHPg0KKw0KKzkuICBDb3B5IHRoZSB3aW4zMlxkaXN0IGZvbGRlciBmcm9tIHRydW5rIHRvIHRoZSB3aW4zMiBmb2xkZXIgb2YgdGhlIGV4dHJhY3RlZCBzb3VyY2UuDQorDQorMTAuIENyZWF0ZSBiYXNlIGRpcmVjdG9yaWVzOg0KKw0KKyAgICBtZCAiYzpcdXNyXGRvY3MiDQorICAgIG1kICJjOlx1c3JccGVybCINCisgICAgbWQgImM6XHVzclxwZXJsXHg4NiINCisgICAgbWQgImM6XHVzclx0ZW1wIg0KKw0KKzEyLiBDb3B5IGZpbGVzOg0KKw0KKyAgICBjZCAoc291cmNlIGRpcikNCisgICAgY29weSBDT1BZSU5HICJjOlx1c3JcZG9jcyINCisgICAgY29weSB3aW4zMlxkaXN0XFJFQURNRS50eHQgImM6XHVzciINCisgICAgY29weSB3aW4zMlxkaXN0XHNjcmlwdHNcbmV0LXNubXAtcGVybC10ZXN0LnBsICJjOlx1c3JcYmluIg0KKw0KKyAgICBjb3B5IHBlcmxcTmV0U05NUC5wcGQgImM6XHVzclxQZXJsIg0KKyAgICBjb3B5IHBlcmxcTmV0U05NUC50YXIuZ3ogImM6XHVzclxQZXJsXHg4NiINCisNCisxMi4gVXBkYXRlIHRoZSBCVUlMRCBJTkZPUk1BVElPTiBzZWN0aW9uIG9mIGM6XHVzclxSRUFETUUudHh0DQorDQorDQorQ29tcGlsaW5nIEhUTUxIZWxwIGZpbGUNCis9PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KK1RoaXMgc2VjdGlvbiBvdXRsaW5lcyB0aGUgc3RlcHMgcmVxdWlyZWQgdG8gYnVpbGQgYSBXaW5kb3dzIEhUTUwgSGVscCBmaWxlDQorYmFzZWQgb24gdGhlIE5ldC1TTk1QIG1hbiBwYWdlcywgUkVBRE1FIGZpbGVzLCBQZXJsZG9jIGRvY3VtZW50YXRpb24gZXRjLg0KKw0KK1JlcXVpcmVtZW50cw0KKy0tLS0tLS0tLS0tLQ0KKw0KKyAtTGludXggKG9yIHNpbWlsYXIpIHdpdGg6DQorICAgLW1hbiAobWFuIHBhZ2Ugdmlld2VyKQ0KKyAgIC10aWR5IChIVE1MIHRpZHkgLSBodHRwOi8vdGlkeS5zb3VyY2Vmb3JnZS5uZXQpDQorICAgLVBlcmwNCisgICAtcGVybGRvYw0KKyAgIC1tYW4yaHRtbDMuMC4xLnRhci5neiAoaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+ZWhvb2QvbWFuMmh0bWwzLjAuMS8pDQorICAgIE5vdGU6ICBNb3N0IExpbnV4IGRpc3RyaWJ1dGlvbnMgY29tZSB3aXRoIG1hbjJodG1sIGFzIHBhcnQgb2YgdGhlIG1hbiBycG0NCisgICAgICAgICAgIHBhY2thZ2Ugd2hpY2ggaXMgbm90IHRoZSBzYW1lIGFzIG1hbjJodG1sIGZyb20gbWFuMmh0bWwzLjAuMS50YXIuZ3ouDQorICAgICAgICAgICBBbGwgdGhhdCBpcyBuZWVkZWQgZnJvbSBtYW4yaHRtbDMuMC4xLnRhci5neiBpcyB0aGUgbWFuMmh0bWwgc2NyaXB0LiAgDQorICAgICAgICAgICBZb3UgZG8gbm90IG5lZWQgdG8gZG8gYSBjb21wbGV0ZSBpbnN0YWxsIChtYWtlL21ha2UgaW5zdGFsbCkgYnV0IHlvdQ0KKyAgICAgICAgICAgZG8gbmVlZCB0byBtYWtlIHN1cmUgdGhlIHNjcmlwdCBpcyBjb25maWd1cmVkIGNvcnJlY3RseSBieSBzZXR0aW5nIHRoZQ0KKyAgICAgICAgICAgbWFuIGNvbW1hbmQgbGluZSBzd2l0Y2hlcyBldGMgZm9yIHRoZSBPUyBmcm9tIGluc2lkZSBvZiB0aGUgc2NyaXB0Lg0KKw0KKyAtV2luZG93cyB3aXRoOg0KKyAgIC1IVE1MIEhlbHAgV29ya3Nob3AgKFNlYXJjaCBtc2RuLm1pY3Jvc29mdC5jb20gZm9yICdodG1sIGhlbHAgd29ya3Nob3AgZG93bmxvYWQnKQ0KKw0KKw0KK0NvbnZlcnQgZG9jdW1lbnRzIHRvIGh0bWwNCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorDQorTm90ZTogIFRoZSBmb2xsb3dpbmcgc3RlcHMgYXJlIGNvbXBsZXRlZCB1c2luZyBMaW51eC4NCisNCitOb3RlOiAgQSB0ZW1wb3JhcnkgbG9jYXRpb24gb2YgL3RtcC9uZXQtc25tcCBpcyB1c2VkLg0KKw0KKzEuICBFeHRyYWN0IE5ldC1TTk1QIHNvdXJjZSBhbmQgY2QgKHNvdXJjZSBkaXIpDQorDQorMi4gIGNkIChzb3VyY2UgZGlyKQ0KKw0KKzMuICBjcCBwZXJsL1NOTVAvUkVBRE1FIFJFQURNRS5wZXJsDQorDQorNC4gIFJlbW92ZSBvbGRlciBjb3BpZXMgb2YgY29udmVydGVkIGZpbGVzOg0KKw0KKyAgICBybSAtUiAtZiAvdG1wL25ldC1zbm1wDQorDQorNS4gIEJ1aWxkIE5ldC1TTk1QIG1hbiBwYWdlczogDQorDQorICAgIC4vY29uZmlndXJlIC0tcHJlZml4PWM6L3VzcjsgbWFrZSBzZWRzY3JpcHQ7IGNkIG1hbjttYWtlOyBjZCAuLg0KKw0KKzYuICBJbnN0YWxsIG9ubHkgdGhlIG1hbiBmaWxlcyB0byAvdGVtcC9uZXQtc25tcDoNCisNCisgICAgY2QgbWFuOyBtYWtlIGluc3RhbGwgcHJlZml4PS90bXAvbmV0LXNubXA7IGNkIC4uDQorDQorNy4gIEdvIHRvIHRoZSBzY3JpcHRzIGZvbGRlciBhbmQgbWFrZSBzdXJlIGFsbCB0aGUgc2NyaXB0cyBhcmUgZXhlY3V0YWJsZToNCisNCisgICAgY2QgKHNvdXJjZSBkaXIpDQorICAgIGNkIHdpbjMyL2Rpc3Qvc2NyaXB0czsgY2htb2QgK3ggKg0KKw0KKzguICBFZGl0IHRoZXNlIGZpbGVzIGFuZCBtYWtlIHN1cmUgdGhlIHBhdGhzIGFyZSBjb3JyZWN0IGluIHRoZSBPUFRJT05TIA0KKyAgICBzZWN0aW9uLiAgQWxzbyBlbnN1cmUgdGhlIGxpc3Qgb2YgUkVBRE1FIGZpbGVzIGFuZCBQZXJsIG1vZHVsZXMgDQorICAgIGFyZSBjb3JyZWN0IGluIHJlYWRtZTJodG1sIGFuZCBwb2RkaXIyaHRtbC4NCisNCisgICAgbWFuZGlyMmh0bWwNCisgICAgcmVhZG1lMmh0bWwNCisgICAgcG9kZGlyMmh0bWwNCisNCisgICAgTm90ZTogIG1hbmRpcjJodG1sIHdpbGwgcHJvY2VzcyBBTEwgbWFuIHBhZ2VzIGluIGM6XHRlbXBcbmV0LXNubXAgd2hpbGUNCisgICAgICAgICAgIHJlYWRtZTJodG1sIGFuZCBwb2RkaXIyaHRtbCB3aWxsIG9ubHkgcHJvY2VzcyBmaWxlcyBsaXN0ZWQgaW4gdGhlDQorICAgICAgICAgICBzY3JpcHQuICBJZiBuZXcgbWFuIHBhZ2VzIGFyZSBhZGRlZCBvciByZW1vdmVkLCB0aGUgVGFibGUgb2YgDQorICAgICAgICAgICBDb250ZW50cyAodG9jLmhoYykgYW5kIHByb2plY3QgZmlsZSAoTmV0LVNOTVAuaGhwKSBuZWVkIHRvIGJlIA0KKyAgICAgICAgICAgdXBkYXRlZCBieSBoYW5kLg0KKw0KKzkuICBSdW4gZWFjaCBzY3JpcHQgdG8gZ2VuZXJhdGUgdGhlIC5odG1sIGZpbGVzOg0KKw0KKyAgICAuL21hbmRpcjJodG1sOyAuL3JlYWRtZTJodG1sOyAuL3BvZGRpcjJodG1sDQorDQorICAgIE5vdGU6ICBUaGVyZSB3aWxsIGJlIG1hbnkgd2FybmluZ3MgZnJvbSB0aWR5IHdoaWNoIGNhbiBiZSBpZ25vcmVkLg0KKw0KKzEwLiBWZXJpZnkgZWFjaCBjb252ZXJ0ZWQgZmlsZSB0byBlbnN1cmUgYWxsIHRoZSBsaW5rcyBhcmUgY29ycmVjdC4gIFRoZSBmaWxlcw0KKyAgICBhcmUgbG9jYXRlZCBpbiAvdG1wL25ldC1zbm1wL2h0bWwgYnkgZGVmYXVsdC4gIEluIHNvbWUgaW5zdGFuY2VzLCBVUkxzIG1heSBiZSANCisgICAgc3BsaXQgYWNyb3NzIHR3byBsaW5lcyBzdWNoIGFzIHRoZSBWYXJpYWJsZXMgbGluayBhdCB0aGUgYm90dG9tIG9mIA0KKyAgICAvdG1wL25ldC1zbm1wL2h0bWwvbWFuOC1zbm1wdHJhcGQuOC5odG1sLg0KKw0KKzExLiBJZiBuZXcgbWFuIHBhZ2VzIGFyZSBhZGRlZCBvciByZW1vdmVkLCB0aGUgVGFibGUgb2YgQ29udGVudHMgKE5ldC1TTk1QLmhoYykgYW5kDQorICAgIHByb2plY3QgZmlsZSAoTmV0LVNOTVAuaGhwKSBuZWVkIHRvIGJlIHVwZGF0ZWQgYnkgaGFuZC4NCisNCisxMi4gQ29udmVydCBFWEFNUExFLmNvbmYud2luMzIgdG8gaHRtbDoNCisNCisgICAgLi90eHQyaHRtbCAuLi8uLi9FWEFNUExFLmNvbmYud2luMzIgfCB0aWR5ID4gL3RtcC9uZXQtc25tcC9odG1sL0VYQU1QTEUuY29uZi53aW4zMi5odG1sDQorICAgIA0KKw0KK0J1aWxkIE5ldC1TTk1QLmNobQ0KKy0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK05vdGU6ICBUaGUgZm9sbG93aW5nIHN0ZXBzIGFyZSBjb21wbGV0ZWQgdXNpbmcgV2luZG93cy4NCisNCitOb3RlOiAgQSB0ZW1wb3JhcnkgbG9jYXRpb24gb2YgYzpcdGVtcFxuZXQtc25tcCBpcyB1c2VkLg0KKw0KKzEuICBUcmFuc2ZlciAvdG1wL25ldC1zbm1wL2h0bWwgZnJvbSBMaW51eCB0byBjOlx0ZW1wXG5ldC1zbm1wXGh0bWwNCisNCisyLiAgR3JhYiB0aGUgRkFRIGZyb20gdGhlIHdlYiBzaXRlLCBzdHJpcCBvdXQgdGhlIGluY2x1ZGVzIGFuZCBzYXZlIGFzDQorICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxGQVEuaHRtbCBhbmQgcnVuOg0KKw0KKyAgICB0aWR5IC1hc3hodG1sIC1tIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxGQVEuaHRtbA0KKw0KKzMuICBHcmFiIHRoZSBEZXZsb3BlciBGQVEgZnJvbSB0aGUgd2ViIHNpdGUsIHN0cmlwIG91dCB0aGUgaW5jbHVkZXMgYW5kIHNhdmUgYXMNCisgICAgYzpcdGVtcFxuZXQtc25tcFxodG1sXERldmVsb3Blcl9GQVEuaHRtbCBhbmQgcnVuOg0KKw0KKyAgICB0aWR5IC1hc3hodG1sIC1tIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxEZXZlbG9wZXJfRkFRLmh0bWwNCisNCis0LiAgQ29weSB0aGUgZm9sbG93aW5nIGZpbGVzIHRvIGM6XHRlbXBcbmV0LXNubXBcaHRtbDoNCisNCisgICAgY2QgKHNvdXJjZSBkaXIpDQorICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcQ29uZmlndXJhdGlvbl9PdmVydmlldy5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcDQorICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcSGVscF9DYXZlYXRzLmh0bWwiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwNCisgICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxJbnRyb2R1Y3Rpb24uaHRtbCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXA0KKyAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXE5ldC1TTk1QLmhoYyIgYzpcdGVtcFxuZXQtc25tcFxodG1sXA0KKyAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXE5ldC1TTk1QLmhocCIgYzpcdGVtcFxuZXQtc25tcFxodG1sXA0KKyAgICBjb3B5ICJ3aW4zMlxkaXN0XGh0bWxoZWxwXG5ldC1zbm1wLTQuMi04MDAuanBnIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcDQorICAgIGNvcHkgIndpbjMyXGRpc3RcaHRtbGhlbHBcc25tcC5jb25mLndpbjMyLmh0bWwiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwNCisgICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxzbm1wZC5jb25mLndpbjMyLmh0bWwiIGM6XHRlbXBcbmV0LXNubXBcaHRtbFwNCisgICAgY29weSAid2luMzJcZGlzdFxodG1saGVscFxzbm1wdHJhcGQuY29uZi53aW4zMi5odG1sIiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcDQorDQorNS4gIE5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMgbWF5IGJlIGF2YWlsYWJsZSBpbiB0aGUgbmV3IHJlbGVhc2Ugb2YNCisgICAgTmV0LVNOTVAsIHNvIHRoZSAqLmNvbmYud2luMzIuaHRtbCBmaWxlcyBzaG91bGQgYmUgdXBkYXRlZC4NCisNCisgICAgQ3JlYXRlIGEgdGV4dCBmaWxlIHdpdGggYWxsIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIHNubXBkIGFuZCANCisgICAgc25tcHRyYXBkIHVzaW5nOg0KKw0KKyAgICBjZCB3aW4zMlxiaW5ccmVsZWFzZSAoZm9sZGVyIG9mICpXaW5kb3dzKiBjb21waWxlZCBOZXQtU05NUCkNCisgICAgc25tcHRyYXBkIC1IIDI+IGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wdHJhcGQub3B0aW9ucw0KKyAgICBzbm1wZCAtSCAyPiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcGQub3B0aW9ucw0KKw0KKyAgICBVcGRhdGUgdGhlc2UgZmlsZXMgdXNpbmcgYW4gSFRNTCBlZGl0b3IgKE1vemlsbGEgZXRjKToNCisNCisgICAgYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXAuY29uZi53aW4zMi5odG1sDQorICAgIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wZC5jb25mLndpbjMyLmh0bWwNCisgICAgYzpcdGVtcFxuZXQtc25tcFxodG1sXHNubXB0cmFwZC5jb25mLndpbjMyLmh0bWwNCisgDQorICAgIE9ubHkgYWRkIHRoZSByZWxldmVudCBzZWN0aW9uIHRvIGVhY2ggZmlsZSBmcm9tIHRoZSAub3B0aW9ucyBmaWxlcw0KKyAgICBjcmVhdGVkIGFib3ZlLCBlbnN1cmUgdGhlIGZvbnQgaXMgc2V0IHRvIGZpeGVkIHdpZHRoLg0KKw0KKyAgICBUaWR5IGVhY2ggZmlsZSB1c2luZyB0aWR5IHVuZGVyIFdpbmRvd3MgKG9yIHRyYW5zZmVyIHRvIExpbnV4IGFuZCB0aWR5DQorICAgIHVzaW5nIExpbnV4KToNCisNCisgICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcHRyYXBkLmNvbmYud2luMzIuaHRtbA0KKyAgICB0aWR5IC1hc3hodG1sIC1tIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxzbm1wZC5jb25mLndpbjMyLmh0bWwNCisgICAgdGlkeSAtYXN4aHRtbCAtbSBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcc25tcC5jb25mLndpbjMyLmh0bWwNCisNCis2LiAgRWRpdCBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcTmV0LVNOTVAuaGhwIGFuZCB1cGRhdGUgdGhlIHZlcnNpb24gZm9yIHRoZSANCisgICAgJ1RpdGxlJyB2YXJpYWJsZS4NCisNCis3LiAgUnVuIEhUTUwgV29ya3Nob3ANCisNCis4LiAgT3BlbiBjOlx0ZW1wXG5ldC1zbm1wXGh0bWxcTmV0LVNOTVAuaGhwDQorDQorOS4gIENsaWNrIEZpbGUgLSBDb21waWxlDQorDQorMTAuIFNlbGVjdCAnQzpcdGVtcFxuZXQtc25tcFxodG1sXE5ldC1TTk1QLmhocCcgYXMgdGhlIGZpbGVuYW1lDQorDQorMTEuIENsaWNrIENvbXBpbGUNCisNCisxMi4gWW91IHNob3VsZCBub3cgaGF2ZSBhIGM6XHRlbXBcbmV0LXNubXBcaHRtbFxOZXQtU05NUC5jaG0gZmlsZS4NCisNCisxMy4gTGF1bmNoIHRoZSBmaWxlIGFuZCBlbnN1cmUgZXZlcnkgY29udGVudCBpdGVtIGRpc3BsYXlzIHRoZSBjb3JyZWN0IHBhZ2UuDQorDQorDQorQ29tYmluaW5nIHRoZSBiaW5hcmllcyBhbmQgSFRNTEhlbHAgZmlsZXMNCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KKzEuICBDb3B5IHRoZSBIVE1MIEhlbHAgZmlsZSB0byBjOlx1c3JcZG9jczoNCisNCisgICAgY29weSBjOlx0ZW1wXE5ldC1TTk1QXGh0bWxcTmV0LVNOTVAuY2htIGM6XHVzclxkb2NzXA0KKw0KKw0KK0J1bGRpbmcgYSBOdWxsU29mdCBpbnN0YWxsZXIgcGFja2FnZQ0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KK1JlcXVpcmVtZW50cw0KKy0tLS0tLS0tLS0tLQ0KKw0KKyAtV2luZG93cw0KKyAtTnVsbHNvZnQgU2NyaXB0YWJsZSBJbnN0YWxsIFN5c3RlbSAyLjAgLSBodHRwOi8vbnNpcy5zb3VyY2Vmb3JnZS5uZXQvaG9tZS8NCisNCisxLiAgQ29tcGxldGUgdGhlIHRocmVlIHNlY3Rpb25zIGFib3ZlOiAgJ0NvbXBpbGluZyBiaW5hcmllcycsICdDb21waWxpbmcgDQorICAgIEhUTUxIZWxwIGZpbGUnIGFuZCAnQ29tYmluaW5nIHRoZSBiaW5hcmllcyBhbmQgSFRNTEhlbHAgZmlsZXMnLiAgTmV0LVNOTVANCisgICAgc2hvdWxkIGJlIGxvY2F0ZWQgaW4gYzpcdXNyLg0KKw0KKzIuICBDb3B5IHRoZSBmb2xsb3dpbmcgZmlsZXMgdG8gYzpcdXNyOg0KKw0KKyAgICBjZCAoc291cmNlIGRpcikNCisgICAgY29weSB3aW4zMlxkaXN0XGluc3RhbGxlclxTZXRFblZhci5uc2kgYzpcdXNyXA0KKyAgICBjb3B5IHdpbjMyXGRpc3RcaW5zdGFsbGVyXG5ldC1zbm1wLm5zaSBjOlx1c3JcDQorICAgIGNvcHkgd2luMzJcZGlzdFxpbnN0YWxsZXJcQWRkMlBhdGgubnNpIGM6XHVzclwNCisgICAgY29weSB3aW4zMlxkaXN0XGluc3RhbGxlclxuZXQtc25tcC1oZWFkZXIxLmJtcCBjOlx1c3JcDQorDQorMy4gIENyZWF0ZSB0aGUgZm9sbG93aW5nIGVtcHR5IGZpbGVzOg0KKw0KKyAgICBlY2hvIC4gPiBjOlx1c3JccmVnaXN0ZXJhZ2VudC5iYXQNCisgICAgZWNobyAuID4gYzpcdXNyXHVucmVnaXN0ZXJhZ2VudC5iYXQNCisgICAgZWNobyAuID4gYzpcdXNyXHJlZ2lzdGVydHJhcGQuYmF0DQorICAgIGVjaG8gLiA+IGM6XHVzclx1bnJlZ2lzdGVydHJhcGQuYmF0DQorICAgIGVjaG8gLiA+IGM6XHVzclxldGNcc25tcFxzbm1wLmNvbmYNCisNCis0LiAgRWRpdCB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcyBpbiBjOlx1c3JcbmV0LXNubXAubnNpOg0KKw0KKyAgICBQUk9EVUNUX01BSl9WRVJTSU9ODQorICAgIFBST0RVQ1RfTUlOX1ZFUlNJT04NCisgICAgUFJPRFVDVF9SRVZJU0lPTg0KKyAgICBQUk9EVUNUX0VYRV9WRVJTSU9ODQorDQorICAgIEZvciBleGFtcGxlLCBmb3IgNS4xLjI6DQorDQorICAgIFBST0RVQ1RfTUFKX1ZFUlNJT04gIjUiDQorICAgIFBST0RVQ1RfTUlOX1ZFUlNJT04gIjEiDQorICAgIFBST0RVQ1RfUkVWSVNJT04gIjIiDQorICAgIFBST0RVQ1RfRVhFX1ZFUlNJT04gIjEiDQorDQorICAgIFRoZSBnZW5lcmF0ZWQgZmlsZW5hbWUgd291bGQgYmU6IG5ldC1zbm1wLTUuMS4yLTEud2luMzIuZXhlDQorDQorICAgIFBST0RVQ1RfRVhFX1ZFUlNJT04gaXMgdXN1YWxseSAxIHVubGVzcyB0aGUgYmluYXJ5IHBhY2thZ2UgaXMgcmUtcmVsZWFzZWQNCisgICAgZHVlIHRvIHBhY2thZ2luZyBpc3N1ZXMuICBGb3IgcHJlIHJlbGVhc2VzLCBpbmNsdWRlIHRoZSBwcmUtcmVsZWFzZSB2ZXJzaW9uIA0KKyAgICBpbiBQUk9EVUNUX1JFVklTSU9OLiAgIEZvciBleGFtcGxlLCBmb3IgNS4xLjIgcHJlMiB1c2U6DQorDQorICAgIFBST0RVQ1RfTUFKX1ZFUlNJT04gIjUiDQorICAgIFBST0RVQ1RfTUlOX1ZFUlNJT04gIjEiDQorICAgIFBST0RVQ1RfUkVWSVNJT04gIjIucHJlMiINCisgICAgUFJPRFVDVF9FWEVfVkVSU0lPTiAiMSINCisNCisgICAgVGhpcyB3aWxsIGVuc3VyZSB0aGUgdmVyc2lvbiBudW1iZXIgaXMgdmlzaWJsZSBkdXJpbmcgaW5zdGFsbGF0aW9uLg0KKw0KKyAgICBUaGUgZ2VuZXJhdGVkIGZpbGVuYW1lIHdvdWxkIGJlOiBuZXQtc25tcC01LjEuMi5wcmUyLTEud2luMzIuZXhlDQorDQorNS4gIExhdW5jaCB0aGUgJ051bGxzb2Z0IEluc3RhbGwgU3lzdGVtIChOU0lTIDIuMCknDQorDQorNi4gIFNlbGVjdCAnTWFrZU5TSVNXIChjb21waWxlciBpbnRlcmZhY2UpJw0KKw0KKzcuICBDbGljayBGaWxlIC0gTG9hZCBTY3JpcHQNCisNCis4LiAgU2VsZWN0IGM6XHVzclxuZXQtc25tcC5uc2kNCisNCis5LiAgWW91IHNob3VsZCBub3cgaGF2ZSBhIGM6XHVzclxOZXQtU05NUC14LngueC14LmV4ZSBiaW5hcnkgaW5zdGFsbGVyIA0KKyAgICBwYWNrYWdlDQorDQorMTAuIFRlc3QgdGhlIHBhY2thZ2UNCisNCisxMS4gQ29tcGFyZSB0aGUgZGlyZWN0b3J5IGNvbnRlbnRzIG9mIHRoZSBjb21waWxlZCBmb2xkZXIgd2l0aCB0aGUgaW5zdGFsbGVkDQorICAgIGZvbGRlciB0byBlbnN1cmUgdGhlcmUgYXJlIG5vIG1pc3NpbmcgTUlCIGZpbGVzIGV0Yy4gIE1vZGlmeSBuZXQtc25tcC5uc2kNCisgICAgYW5kIHJlYnVpbGQgaWYgcmVxdWlyZWQuDQorDQorMTIuIENyZWF0ZSBhIC56aXAgZmlsZSBvZiBjOlx1c3IgZm9yIGFyY2hpdmUgcHVycG9zZXMuDQorDQorDQorQnVsZGluZyBhbiBPcGVuU1NMIHZlcnNpb24NCis9PT09PT09PT09PT09PT09PT09PT09PT09PQ0KKw0KK1JlcXVpcmVtZW50cw0KKy0tLS0tLS0tLS0tLQ0KKw0KKyAtT3BlblNTTCBiaW5hcnkgZnJvbSBodHRwOi8vd3d3LnNscHJvd2ViLmNvbS9wcm9kdWN0cy9XaW4zMk9wZW5TU0wuaHRtbA0KKw0KKzEuICBJbnN0YWxsIHRoZSBPcGVuU1NMIGJpbmFyeSwgaGVhZGVyIGFuZCBsaWJyYXJ5IGZpbGVzIGFzIGV4cGxhaW5lZCBpbiANCisgICAgJ1VzaW5nIGEgcHJlLWNvbXBpbGVkIHZlcnNpb24nIG9mIHRoZSAnTWljcm9zb2Z0IFZpc3VhbCBDKysgLSBCdWlsZGluZyB3aXRoIA0KKyAgICBPcGVuU1NMJyBzZWN0aW9uIG9mIFJFQURNRS53aW4zMi4NCisNCisyLiAgTW92ZSBjOlx1c3IgYzpcdXNyLnRlbXANCisNCiszLiAgUmUtYnVpbGQgdGhlIGJpbmFyeSBieSBmb2xsb3dpbmcgdGhlIHN0ZXBzIGluIHRoZSBzZWN0aW9uICdCdWlsZGluZyB0aGUgDQorICAgIG1haW4gYmluYXJpZXMnIGV4Y2VwdCBlbmFibGUgT3BlblNTTCAoYm90aCByZWd1bGFyIGFuZCBXaW5FeHRETEwpLiAgQWxzbyANCisgICAgZm9sbG93IHRoZSBQZXJsIHN0ZXBzIHRvIGNyZWF0ZSBhIG5ldyB0YXIgZmlsZSBldGMuDQorDQorNC4gIENvcHkgY29udGVudHMgb2YgYzpcdXNyIHRvIGM6XHVzci50ZW1wDQorDQorNS4gIERlbGV0ZSBjOlx1c3INCisNCis2LiAgTW92ZSBjOlx1c3IudGVtcCBjOlx1c3INCisNCis3LiAgVXBkYXRlIHRoZSBCVUlMRCBJTkZPUk1BVElPTiBzZWN0aW9uIG9mIGM6XHVzclxSRUFETUUudHh0IHRvIGluY2x1ZGUgdGhlIFNTTCANCisgICAgaW5mbyBhbmQgdGhlIGZpbGVuYW1lLg0KKw0KKzguICBVcGRhdGUgdGhlIHZlcnNpb24gc3RhbXAgaW4gYzpcdXNyXG5ldC1zbm1wLm5zaSB0byBpbmNsdWRlIC1zc2wuICBFeGFtcGxlOg0KKw0KKyAgICBGb3IgZXhhbXBsZSwgZm9yIDUuMy4wOg0KKw0KKyAgICBQUk9EVUNUX01BSl9WRVJTSU9OICI1Ig0KKyAgICBQUk9EVUNUX01JTl9WRVJTSU9OICIzIg0KKyAgICBQUk9EVUNUX1JFVklTSU9OICIwLXNzbCINCisgICAgUFJPRFVDVF9FWEVfVkVSU0lPTiAiMSINCisNCisgICAgVGhlIGdlbmVyYXRlZCBmaWxlbmFtZSB3b3VsZCBiZTogbmV0LXNubXAtNS4zLjAtc3NsLTEud2luMzIuZXhlDQorDQorOS4gIEFsc28gaW4gYzpcdXNyXG5ldC1zbm1wLm5zaSwgY2hhbmdlOg0KKw0KKyAgICAhZGVmaW5lIE9QRU5TU0xfUkVRVUlSRUQgIjAiDQorDQorICAgIHRvDQorDQorICAgICFkZWZpbmUgT1BFTlNTTF9SRVFVSVJFRCAiMSINCisNCisxMC4gTGF1bmNoIHRoZSAnTnVsbHNvZnQgSW5zdGFsbCBTeXN0ZW0gKE5TSVMgMi4wKScNCisNCisxMS4gU2VsZWN0ICdNYWtlTlNJU1cgKGNvbXBpbGVyIGludGVyZmFjZSknDQorDQorMTIuIENsaWNrIEZpbGUgLSBMb2FkIFNjcmlwdA0KKw0KKzEzLiBTZWxlY3QgYzpcdXNyXG5ldC1zbm1wLm5zaQ0KKw0KKzE0LiBZb3Ugc2hvdWxkIG5vdyBoYXZlIGEgYzpcdXNyXE5ldC1TTk1QLXgueC54LXguZXhlIGJpbmFyeSBpbnN0YWxsZXIgDQorICAgIHBhY2thZ2UNCisNCisxNS4gVGVzdCB0aGUgcGFja2FnZQ0KKw0KKzE2LiBDb21wYXJlIHRoZSBkaXJlY3RvcnkgY29udGVudHMgb2YgdGhlIGNvbXBpbGVkIGZvbGRlciB3aXRoIHRoZSBpbnN0YWxsZWQNCisgICAgZm9sZGVyIHRvIGVuc3VyZSB0aGVyZSBhcmUgbm8gbWlzc2luZyBNSUIgZmlsZXMgZXRjLiAgTW9kaWZ5IG5ldC1zbm1wLm5zaQ0KKyAgICBhbmQgcmVidWlsZCBpZiByZXF1aXJlZC4NCisNCisxNy4gQ3JlYXRlIGEgLnppcCBmaWxlIG9mIGM6XHVzciBmb3IgYXJjaGl2ZSBwdXJwb3Nlcy4NCisNCmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L1JFQURNRS50eHQgYi93aW4zMi9kaXN0L1JFQURNRS50eHQKaW5kZXggOWRhNDhlYy4uMzA3Yzg2MCAxMDA2NDQKLS0tIGEvd2luMzIvZGlzdC9SRUFETUUudHh0CisrKyBiL3dpbjMyL2Rpc3QvUkVBRE1FLnR4dApAQCAtMSwxODQgKzEsMTg4IEBACi0gICAgICAgUkVBRE1FIGZpbGUgZm9yIHdpbjMyIGJpbmFyeSByZWxlYXNlIG9mIE5ldC1TTk1QCi0KLURJU0NMQUlNRVIKLQotICBUaGUgQXV0aG9ycyBhc3N1bWUgbm8gcmVzcG9uc2liaWxpdHkgZm9yIGRhbWFnZSBvciBsb3NzIG9mIHN5c3RlbQotICBwZXJmb3JtYW5jZSBhcyBhIGRpcmVjdCBvciBpbmRpcmVjdCByZXN1bHQgb2YgdGhlIHVzZSBvZiB0aGlzCi0gIHNvZnR3YXJlLiAgVGhpcyBzb2Z0d2FyZSBpcyBwcm92aWRlZCAiYXMgaXMiIHdpdGhvdXQgZXhwcmVzcyBvcgotICBpbXBsaWVkIHdhcnJhbnR5LgotCi0KLVRBQkxFIE9GIENPTlRFTlRTCi0KLSAgRGlzY2xhaW1lcgotICBUYWJsZSBPZiBDb250ZW50cwotICBJbnRyb2R1Y3Rpb24KLSogSW5zdGFsbGF0aW9uCi0qIENvLWV4aXN0ZW5jZSB3aXRoIE1pY3Jvc29mdCBTTk1QIHNlcnZpY2VzCi0gIEluc3RhbGxhdGlvbiAtIFBlcmwgbW9kdWxlCi0qIENvbmZpZ3VyYXRpb24KLSAgQnVpbGQgSW5mb3JtYXRpb24KLQotICAqID0gUmVxdWlyZWQgUmVhZGluZy4KLQotCi1JTlRST0RVQ1RJT04KLQotICBUaGlzIHBhY2thZ2UgY29udGFpbnMgYSBjb21waWxlZCBiaW5hcnkgcmVsZWFzZSBvZiBOZXQtU05NUCBmb3IgV2luZG93cyBOVC8yMDAwL1hQLgotICBUaGUgYmluYXJpZXMgcnVuIHVubW9kaWZpZWQgb24gV2luZG93cyA5OC4gIFRoZSAic25tcGQiIGFuZCAic25tcHRyYXBkIiBwcm9ncmFtIGNhbiAKLSAgbm90IHJ1biBhcyBzZXJ2aWNlcyBvbiBXaW5kb3dzIDk4LCBhcyBXaW5kb3dzIDk4IGRvZXMgbm90IHByb3ZpZGUgYSBTZXJ2aWNlIENvbnRyb2wgCi0gIE1hbmFnZXIgKFNDTSkuCi0KLSAgRG9jdW1lbnRhdGlvbiBmb3IgdXNpbmcgdGhlIGFwcGxpY2F0aW9ucyBpcyBhdmFpbGFibGUgaW4gdGhlIFdpbmRvd3MgaGVscCBmaWxlCi0gIChOZXQtU05NUC5jaG0pIGxvY2F0ZWQgaW4gdGhlIGRvY3MgZGlyZWN0b3J5IG9mIHRoZSBpbnN0YWxsZWQgcGFja2FnZS4gIEhlbHAgaXMgYWxzbwotICBhdmFpbGFibGUgZnJvbSB0aGUgd2ViIHNpdGUgYXQgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvZG9jcy8uCi0KLQotSU5TVEFMTEFUSU9OCi0KLSAgVGhlIE5ldC1TTk1QIFdpbmRvd3MgaW5zdGFsbGVyIHBhY2thZ2UgcGVyZm9ybXMgdGhlIGZvbGxvd2luZyB0YXNrczoKLQotICAtIEluc3RhbGxzIHRoZSBOZXQtU05NUCBiaW5hcmllcywgTUlCIGZpbGVzIGFuZCBBY3RpdmVTdGF0ZSA1LjgueCBQZXJsIFBQTSAKLSAgICBwYWNrYWdlIGludG8gdGhlIGluc3RhbGxhdGlvbiBmb2xkZXIgKGRlZmF1bHRzIHRvIGM6XHVzcikuIAotICAtIEFkZHMgKGluc3RhbGwgZm9sZGVyKVxiaW4gdG8gdGhlIHN5c3RlbSBQQVRILiAKLSAgLSBBZGRzIHRoZSBmb2xsb3dpbmcgcmVnaXN0cnkga2V5czoKLSAgICAtIEhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxOZXQtU05NUFxTTk1QQ09ORlBBVEg9KGluc3RhbGwgZm9sZGVyKS9ldGMvc25tcDsKLSAgICAgIChpbnN0YWxsIGZvbGRlcikvc25tcC9wZXJzaXN0Ci0gICAgLSBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTmV0LVNOTVBcU05NUFNIQVJFUEFUSD0oaW5zdGFsbCBmb2xkZXIpL3NoYXJlL3NubXAKLSAgLSBDcmVhdGVzIGFuIHNubXAuY29uZiBmaWxlIGluIFNOTVBDT05GUEFUSCB3aGljaCBkZWZpbmVzOiAKLSAgICAtIG1pYmRpcnMgKGluc3RhbGwgZm9sZGVyKS9zaGFyZS9zbm1wL21pYnMgCi0gICAgLSBwZXJzaXN0ZW50RGlyIChpbnN0YWxsIGZvbGRlcikvc25tcC9wZXJzaXN0IAotICAgIC0gdGVtcEZpbGVQYXR0ZXJuIChpbnN0YWxsIGZvbGRlcikvdGVtcC9zbm1wZFhYWFhYWCAKLQotICBBZnRlciBpbnN0YWxsaW5nIHVzaW5nIHRoZSBzZXR1cCB3aXphcmQsIHBlcmZvcm0gYSBxdWljayB0ZXN0IHRvIHZlcmlmeSB0aGF0IAotICBOZXQtU05NUCB3YXMgaW5zdGFsbGVkIGNvcnJlY3RseS4gIFJ1biB0aGUgZm9sbG93aW5nIGZyb20gYSBjb21tYW5kIHByb21wdDoKLQotICAgIHNubXB0cmFuc2xhdGUgLUlSIC1UZCBJRi1NSUI6OmxpbmtEb3duCi0KLSAgVGhlIGFib3ZlIGNvbW1hbmQgc2hvdWxkIGdlbmVyYXRlOgotCi0gICAgSUYtTUlCOjpsaW5rRG93bgotICAgIGxpbmtEb3duIE5PVElGSUNBVElPTi1UWVBFCi0gICAgICAtLSBGUk9NICAgICAgIElGLU1JQgotICAgICAgT0JKRUNUUyAgICAgICB7IGlmSW5kZXgsIGlmQWRtaW5TdGF0dXMsIGlmT3BlclN0YXR1cyB9Ci0gICAgICBERVNDUklQVElPTiAgICJBIGxpbmtEb3duIHRyYXAgc2lnbmlmaWVzIHRoYXQgdGhlIFNOTVAgZW50aXR5LCBhY3RpbmcgaW4KLSAgICAgICAgICAgICAgICBhbiBhZ2VudCByb2xlLCBoYXMgZGV0ZWN0ZWQgdGhhdCB0aGUgaWZPcGVyU3RhdHVzIG9iamVjdCBmb3IKLSAgICAgICAgICAgICAgICBvbmUgb2YgaXRzIGNvbW11bmljYXRpb24gbGlua3MgaXMgYWJvdXQgdG8gZW50ZXIgdGhlIGRvd24KLSAgICAgICAgICAgICAgICBzdGF0ZSBmcm9tIHNvbWUgb3RoZXIgc3RhdGUgKGJ1dCBub3QgZnJvbSB0aGUgbm90UHJlc2VudAotICAgICAgICAgICAgICAgIHN0YXRlKS4gIFRoaXMgb3RoZXIgc3RhdGUgaXMgaW5kaWNhdGVkIGJ5IHRoZSBpbmNsdWRlZCB2YWx1ZQotICAgICAgICAgICAgICAgIG9mIGlmT3BlclN0YXR1cy4iCi0gICAgOjo9IHsgaXNvKDEpIG9yZygzKSBkb2QoNikgaW50ZXJuZXQoMSkgc25tcFYyKDYpIHNubXBNb2R1bGVzKDMpIHNubXBNSUIoMSkgCi0gICAgICAgICAgc25tcE1JQk9iamVjdHMoMSkgc25tcFRyYXBzKDUpIDMgfQotCi0gIElmIHNubXB0cmFuc2xhdGUgY2FuIG5vdCBiZSBmb3VuZCwgdGhlbiB2ZXJpZnkgdGhhdCB0aGUgTmV0LVNOTVAgYmluIGZvbGRlciBpcyBpbiAKLSAgeW91ciBzeXN0ZW0gcGF0aC4KLQotICBJZiB5b3UgZ2V0IE1vZHVsZSBub3QgZm91bmQgZXJyb3JzIHN1Y2ggYXMgJ0lQLU1JQjogTW9kdWxlIG5vdCBmb3VuZCcsIHRoZSBhcHBsaWNhdGlvbgotICB3YXMgbm90IGFibGUgdG8gbG9jYXRlIHRoZSBtaWJzIGZvbGRlci4gIFZlcmlmeSB0aGF0IFNOTVBDT05GUEFUSCBpcyBzZXQgdG8gdGhlIGxvY2F0aW9uCi0gIG9mIHRoZSBjb25maWd1cmF0aW9uIGZvbGRlciBhbmQgdGhlIHBlcnNpc3RlbnQgc3RvcmFnZSBmb2xkZXIgCi0gIChjOi91c3IvZXRjL3NubXA7YzovdXNyL3NubXAvcGVyc2lzdCBmb3IgZXhhbXBsZSkuICBBbHNvIHZlcmlmeSB0aGF0IHRoZXJlIGlzIGFuIAotICBzbm1wLmNvbmYgZmlsZSB0aGF0IGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciBtaWJkaXJzLCBwZXJzaXN0ZW50RGlyIGFuZCAKLSAgdGVtcEZpbGVQYXR0ZXJuLiAgRm9yIGV4YW1wbGU6Ci0KLSAgICBtaWJkaXJzIGM6L3Vzci9zaGFyZS9zbm1wL21pYnMKLSAgICBwZXJzaXN0ZW50RGlyIGM6L3Vzci9zbm1wL3BlcnNpc3QKLSAgICB0ZW1wRmlsZVBhdHRlcm4gQzovdXNyL3RlbXAvc25tcGRYWFhYWFgKLQotICBGb3IgZGV0YWlsZWQgaW5mb3JtYXRpb24gb24gdXNpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZCB0aGUgcmVnaXN0cnkgdG8gY29uZmlndXJlCi0gIE5ldC1TTk1QLCBzZWUgJ092ZXJ2aWV3JyBkb2N1bWVudCBpbiB0aGUgQ29uZmlndXJhdGlvbiBzZWN0aW9uIG9mIHRoZSBOZXQtU05NUCBoZWxwIGZpbGUuCi0KLSAgRm9yIGluZm9ybWF0aW9uIG9uIHJ1bm5pbmcgc25tcGQuZXhlIGFuZCBzbm1wdHJhcGQuZXhlIGFzIGEgV2luZG93cyBzZXJ2aWNlLCBzZWUgCi0gICdIb3cgdG8gUmVnaXN0ZXIgdGhlIE5ldC1TTk1QIEFnZW50IGFuZCBUcmFwIERhZW1vbiBhcyBXaW5kb3dzIHNlcnZpY2VzJyBpbiBSRUFETUUud2luMzIuCi0KLQotQ08tRVhJU1RFTkNFIFdJVEggTUlDUk9TT0ZUIFNOTVAgU0VSVklDRVMKLQotUGxlYXNlIHNlZSB0aGUgc2VjdGlvbiAnQ28tZXhpc3RlbmNlIHdpdGggTWljcm9zb2Z0IFNOTVAgc2VydmljZXMnIGluIFJFQURNRS53aW4zMgotCi0KLUlOU1RBTExBVElPTiAtIFBFUkwgTU9EVUxFCi0KLSAgSW5jbHVkZWQgaW4gdGhlIChpbnN0YWxsIGZvbGRlcilcUGVybCBmb2xkZXIgaXMgYW4gQWN0aXZlU3RhdGUgUGVybCAKLSAgNS44LnguIFBQTSBwYWNrYWdlLiAgTm90ZTogIEluIHByZXZpb3VzIHZlcnNpb24gb2YgTmV0LVNOTVAsIHRoZSBQUE0KLSAgcGFja2FnZSB3YXMgY2FsbGVkIE5ldC1TTk1QLnBwZC4gIFRoZSBwYWNrYWdlIGhhcyBiZWVuIHJlbmFtZWQgdG8KLSAgTmV0U05NUC5wcGQgdG8gcHJldmVudCBjb25mbGljdHMgd2l0aCB0aGUgTmV0OjpTTk1QIHBhY2thZ2UgYXZhaWxhYmxlCi0gIGZyb20gQWN0aXZlU3RhdGUuCi0KLSAgVGhlIFBlcmwgbW9kdWxlcyByZXF1aXJlIHRoZSBXaW4zMiBSRUdFWCAoUmVndWxhciBFeHByZXNzaW9uKSBwYWNrYWdlIHdoaWNoIAotICBpcyBhdmFpbGFibGUgZnJvbToKLQotICAgIGh0dHA6Ly9wZW9wbGUuZGVscGhpZm9ydW1zLmNvbS9namMvZ251X3JlZ2V4Lmh0bWwKLQotICBEb3dubG9hZCBnbnVfcmVnZXguZXhlLCBjb3B5IGl0IHRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5kIGV4ZWN1dGUgaXQgdG8gCi0gIGV4dHJhY3QgdGhlIGZpbGVzLgotCi0gIENvcHkgdGhlIGV4dHJhY3RlZCBnbnVfcmVnZXguZGxsIHRvIHlvdXIgJXdpbmRpciVcc3lzdGVtMzIgZm9sZGVyLgotCi0gIFJlbW92ZSBhbnkgZXhpc3RpbmcgTmV0LVNOTVAgUGVybCBtb2R1bGVzOgotCi0gICAgcHBtIHJlbW92ZSBOZXRTTk1QCi0KLSAgSW5zdGFsbCB0aGUgUGVybCBtb2R1bGVzOgotCi0gICAgY2QgKGluc3RhbGwgZm9sZGVyKVxQZXJsCi0gICAgcHBtIGluc3RhbGwgTmV0U05NUC5wcGQKLQotICBQZXJmb3JtIGEgYmFzaWMgdGVzdCB1c2luZzoKLQotICAgIG5ldC1zbm1wLXBlcmwtdGVzdC5wbAotCi0KLUNPTkZJR1VSQVRJT04KLQotICBBbGwgY29uZmlndXJhdGlvbiBmaWxlcyBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSAlU05NUENPTkZQQVRIJSBmb2xkZXIuCi0KLSAgTm90ZTogQWxsIHBhdGhzIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMgc2hvdWxkIHVzZSBmb3J3YXJkIHNsYXNoZXMgKFVuaXggc3R5bGUpLCAKLSAgTk9UIGJhY2sgc2xhc2hlcy4gIEV4YW1wbGU6IGM6L3VzcgotCi0gIEluY2x1ZGVkIGlzIGEgUGVybCBzY3JpcHQgY2FsbGVkIHNubXBjb25mIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSAKLSAgY29uZmlndXJhdGlvbiBmaWxlcy4gIAotCi0gIERvY3VtZW50YXRpb24gZm9yIHVzaW5nIHRoZSBzbm1wY29uZiBpcyBhdmFpbGFibGUgaW4gdGhlIFdpbmRvd3MgaGVscCBmaWxlCi0gIChOZXQtU05NUC5jaG0pIGxvY2F0ZWQgaW4gdGhlIGRvY3MgZGlyZWN0b3J5IG9mIHRoZSBpbnN0YWxsZWQgcGFja2FnZS4gIEhlbHAgaXMgYWxzbwotICBhdmFpbGFibGUgZnJvbSB0aGUgd2ViIHNpdGUgYXQgaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvZG9jcy8uCi0KLSAgVG8gcnVuIHNubXBjb25mLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kIGxpbmU6Ci0KLSAgICAgc25tcGNvbmYgLWkKLQotCi1CVUlMRCBJTkZPUk1BVElPTgotCi0gIE5hbWU6CQkJbmV0LXNubXAteC54LngtMS53aW4zMi5leGUKLSAgVVJMOgkJCWh0dHA6Ly93d3cubmV0LXNubXAub3JnCi0gIEJ1aWxkIGRhdGU6CQkKLSAgQnVpbHQgYnk6CQkKLSAgSW5zdGFsbGVyIFBhY2thZ2UgYnk6IAotICAKLSAgT1M6CQkJV2luZG93cyAyMDAwIFNQNAotICBDb21waWxlcjoJCU1TVkMrKyA2LjAgU1A1Ci0gIFBsYXRmb3JtIFNESzoJCUZlYnJ1YXJ5IDIwMDMKLSAgUGVybDoJCQlBY3RpdmVQZXJsIDUuOC4yIGJ1aWxkIDgwOAotICBSRUdFWDoJCWdudV9yZWdleC5leGUgKDAuMTIpIC0gaHR0cDovL3Blb3BsZS5kZWxwaGlmb3J1bXMuY29tL2dqYy9nbnVfcmVnZXguaHRtbAotCi0gIFNvdXJjZTogCQluZXQtc25tcC14LngueC50YXIuZ3oKLSAgRGVzdGluYXRpb246ICAJYzpcdXNyCi0gIFByb2plY3Q6CQl3aW4zMnNkay5kc3cgLyBsaWJkbGwuZHN3Ci0gIExpYnJhcnk6CQluZXRzbm1wIGZvciBhcHBsaWNhdGlvbnMsIG5ldHNubXAuZGxsIGZvciBQZXJsIG1vZHVsZXMKLSAgT3BlblNTTDoJCW4vYQotCi0KLSAgVGhlIGZvbGxvd2luZyBhcmUgdGhlIGRlZmF1bHQgcGF0aHMgYXJlIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uczoKLQotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIG5ldC1zbm1wLWNvbmZpZy5oIGRlZmluZSAgIHwgdmFsdWUgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgZW52aXJvbm1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgfCB2YXJpYWJsZQotICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gIERFRkFVTFRfTUlCRElSUyAgICAgICAgICAgIHwgYzovdXNyL3NoYXJlL3NubXAvbWlicyAgIHwgTUlCRElSUwotICBTTk1QRExNT0RQQVRIICAgICAgICAgICAgICB8IGM6L3Vzci9saWIvZGxtb2QgICAgICAgICB8IFNOTVBETE1PRFBBVEgKLSAgU05NUExJQlBBVEggICAgICAgICAgICAgICAgfCBjOi91c3IvbGliICAgICAgICAgICAgICAgfCBTTk1QTElCUEFUSAotICBTTk1QU0hBUkVQQVRIICAgICAgICAgICAgICB8IGM6L3Vzci9zaGFyZS9zbm1wICAgICAgICB8IFNOTVBTSEFSRVBBVEgKLSAgU05NUENPTkZQQVRIICAgICAgICAgICAgICAgfCBjOi91c3IvZXRjL3NubXAgICAgICAgICAgfCBTTk1QQ09ORlBBVEgKLSAgUEVSU0lTVEVOVF9ESVJFQ1RPUlkgICAgICAgfCBjOi91c3Ivc25tcC9wZXJzaXN0ICAgICAgfCBTTk1QX1BFUlNJU1RFTlRfRElSCi0gIE5FVFNOTVBfVEVNUF9GSUxFX1BBVFRFUk4gIHwgYzovdXNyL3RlbXAvc25tcGRYWFhYWFggIHwgCi0KKyAgICAgICBSRUFETUUgZmlsZSBmb3Igd2luMzIgYmluYXJ5IHJlbGVhc2Ugb2YgTmV0LVNOTVANCisNCitESVNDTEFJTUVSDQorDQorICBUaGUgQXV0aG9ycyBhc3N1bWUgbm8gcmVzcG9uc2liaWxpdHkgZm9yIGRhbWFnZSBvciBsb3NzIG9mIHN5c3RlbQ0KKyAgcGVyZm9ybWFuY2UgYXMgYSBkaXJlY3Qgb3IgaW5kaXJlY3QgcmVzdWx0IG9mIHRoZSB1c2Ugb2YgdGhpcw0KKyAgc29mdHdhcmUuICBUaGlzIHNvZnR3YXJlIGlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yDQorICBpbXBsaWVkIHdhcnJhbnR5Lg0KKw0KKw0KK1RBQkxFIE9GIENPTlRFTlRTDQorDQorICBEaXNjbGFpbWVyDQorICBUYWJsZSBPZiBDb250ZW50cw0KKyAgSW50cm9kdWN0aW9uDQorKiBJbnN0YWxsYXRpb24NCisqIENvLWV4aXN0ZW5jZSB3aXRoIE1pY3Jvc29mdCBTTk1QIHNlcnZpY2VzDQorICBJbnN0YWxsYXRpb24gLSBQZXJsIG1vZHVsZQ0KKyogQ29uZmlndXJhdGlvbg0KKyAgQnVpbGQgSW5mb3JtYXRpb24NCisNCisgICogPSBSZXF1aXJlZCBSZWFkaW5nLg0KKw0KKw0KK0lOVFJPRFVDVElPTg0KKw0KKyAgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgY29tcGlsZWQgYmluYXJ5IHJlbGVhc2Ugb2YgTmV0LVNOTVAgZm9yIFdpbmRvd3MgTlQvMjAwMC9YUC4NCisgIFRoZSBiaW5hcmllcyBydW4gdW5tb2RpZmllZCBvbiBXaW5kb3dzIDk4LiAgVGhlICJzbm1wZCIgYW5kICJzbm1wdHJhcGQiIHByb2dyYW0gY2FuIA0KKyAgbm90IHJ1biBhcyBzZXJ2aWNlcyBvbiBXaW5kb3dzIDk4LCBhcyBXaW5kb3dzIDk4IGRvZXMgbm90IHByb3ZpZGUgYSBTZXJ2aWNlIENvbnRyb2wgDQorICBNYW5hZ2VyIChTQ00pLg0KKw0KKyAgRG9jdW1lbnRhdGlvbiBmb3IgdXNpbmcgdGhlIGFwcGxpY2F0aW9ucyBpcyBhdmFpbGFibGUgaW4gdGhlIFdpbmRvd3MgaGVscCBmaWxlDQorICAoTmV0LVNOTVAuY2htKSBsb2NhdGVkIGluIHRoZSBkb2NzIGRpcmVjdG9yeSBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2UuICBIZWxwIGlzIGFsc28NCisgIGF2YWlsYWJsZSBmcm9tIHRoZSB3ZWIgc2l0ZSBhdCBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9kb2NzLy4NCisNCisNCitJTlNUQUxMQVRJT04NCisNCisgIFRoZSBOZXQtU05NUCBXaW5kb3dzIGluc3RhbGxlciBwYWNrYWdlIHBlcmZvcm1zIHRoZSBmb2xsb3dpbmcgdGFza3M6DQorDQorICAtIEluc3RhbGxzIHRoZSBOZXQtU05NUCBiaW5hcmllcywgTUlCIGZpbGVzIGFuZCBBY3RpdmVTdGF0ZSA1LjgueCBQZXJsIFBQTSANCisgICAgcGFja2FnZSBpbnRvIHRoZSBpbnN0YWxsYXRpb24gZm9sZGVyIChkZWZhdWx0cyB0byBjOlx1c3IpLiANCisgIC0gQWRkcyAoaW5zdGFsbCBmb2xkZXIpXGJpbiB0byB0aGUgc3lzdGVtIFBBVEguIA0KKyAgLSBBZGRzIHRoZSBmb2xsb3dpbmcgcmVnaXN0cnkga2V5czoNCisgICAgLSBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTmV0LVNOTVBcU05NUENPTkZQQVRIPShpbnN0YWxsIGZvbGRlcikvZXRjL3NubXA7DQorICAgICAgKGluc3RhbGwgZm9sZGVyKS9zbm1wL3BlcnNpc3QNCisgICAgLSBIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTmV0LVNOTVBcU05NUFNIQVJFUEFUSD0oaW5zdGFsbCBmb2xkZXIpL3NoYXJlL3NubXANCisgIC0gQ3JlYXRlcyBhbiBzbm1wLmNvbmYgZmlsZSBpbiBTTk1QQ09ORlBBVEggd2hpY2ggZGVmaW5lczogDQorICAgIC0gbWliZGlycyAoaW5zdGFsbCBmb2xkZXIpL3NoYXJlL3NubXAvbWlicyANCisgICAgLSBwZXJzaXN0ZW50RGlyIChpbnN0YWxsIGZvbGRlcikvc25tcC9wZXJzaXN0IA0KKyAgICAtIHRlbXBGaWxlUGF0dGVybiAoaW5zdGFsbCBmb2xkZXIpL3RlbXAvc25tcGRYWFhYWFggDQorDQorICBBZnRlciBpbnN0YWxsaW5nIHVzaW5nIHRoZSBzZXR1cCB3aXphcmQsIHBlcmZvcm0gYSBxdWljayB0ZXN0IHRvIHZlcmlmeSB0aGF0IA0KKyAgTmV0LVNOTVAgd2FzIGluc3RhbGxlZCBjb3JyZWN0bHkuICBSdW4gdGhlIGZvbGxvd2luZyBmcm9tIGEgY29tbWFuZCBwcm9tcHQ6DQorDQorICAgIHNubXB0cmFuc2xhdGUgLUlSIC1UZCBJRi1NSUI6OmxpbmtEb3duDQorDQorICBUaGUgYWJvdmUgY29tbWFuZCBzaG91bGQgZ2VuZXJhdGU6DQorDQorICAgIElGLU1JQjo6bGlua0Rvd24NCisgICAgbGlua0Rvd24gTk9USUZJQ0FUSU9OLVRZUEUNCisgICAgICAtLSBGUk9NICAgICAgIElGLU1JQg0KKyAgICAgIE9CSkVDVFMgICAgICAgeyBpZkluZGV4LCBpZkFkbWluU3RhdHVzLCBpZk9wZXJTdGF0dXMgfQ0KKyAgICAgIERFU0NSSVBUSU9OICAgIkEgbGlua0Rvd24gdHJhcCBzaWduaWZpZXMgdGhhdCB0aGUgU05NUCBlbnRpdHksIGFjdGluZyBpbg0KKyAgICAgICAgICAgICAgICBhbiBhZ2VudCByb2xlLCBoYXMgZGV0ZWN0ZWQgdGhhdCB0aGUgaWZPcGVyU3RhdHVzIG9iamVjdCBmb3INCisgICAgICAgICAgICAgICAgb25lIG9mIGl0cyBjb21tdW5pY2F0aW9uIGxpbmtzIGlzIGFib3V0IHRvIGVudGVyIHRoZSBkb3duDQorICAgICAgICAgICAgICAgIHN0YXRlIGZyb20gc29tZSBvdGhlciBzdGF0ZSAoYnV0IG5vdCBmcm9tIHRoZSBub3RQcmVzZW50DQorICAgICAgICAgICAgICAgIHN0YXRlKS4gIFRoaXMgb3RoZXIgc3RhdGUgaXMgaW5kaWNhdGVkIGJ5IHRoZSBpbmNsdWRlZCB2YWx1ZQ0KKyAgICAgICAgICAgICAgICBvZiBpZk9wZXJTdGF0dXMuIg0KKyAgICA6Oj0geyBpc28oMSkgb3JnKDMpIGRvZCg2KSBpbnRlcm5ldCgxKSBzbm1wVjIoNikgc25tcE1vZHVsZXMoMykgc25tcE1JQigxKSANCisgICAgICAgICAgc25tcE1JQk9iamVjdHMoMSkgc25tcFRyYXBzKDUpIDMgfQ0KKw0KKyAgSWYgc25tcHRyYW5zbGF0ZSBjYW4gbm90IGJlIGZvdW5kLCB0aGVuIHZlcmlmeSB0aGF0IHRoZSBOZXQtU05NUCBiaW4gZm9sZGVyIGlzIGluIA0KKyAgeW91ciBzeXN0ZW0gcGF0aC4NCisNCisgIElmIHlvdSBnZXQgTW9kdWxlIG5vdCBmb3VuZCBlcnJvcnMgc3VjaCBhcyAnSVAtTUlCOiBNb2R1bGUgbm90IGZvdW5kJywgdGhlIGFwcGxpY2F0aW9uDQorICB3YXMgbm90IGFibGUgdG8gbG9jYXRlIHRoZSBtaWJzIGZvbGRlci4gIFZlcmlmeSB0aGF0IFNOTVBDT05GUEFUSCBpcyBzZXQgdG8gdGhlIGxvY2F0aW9uDQorICBvZiB0aGUgY29uZmlndXJhdGlvbiBmb2xkZXIgYW5kIHRoZSBwZXJzaXN0ZW50IHN0b3JhZ2UgZm9sZGVyIA0KKyAgKGM6L3Vzci9ldGMvc25tcDtjOi91c3Ivc25tcC9wZXJzaXN0IGZvciBleGFtcGxlKS4gIEFsc28gdmVyaWZ5IHRoYXQgdGhlcmUgaXMgYW4gDQorICBzbm1wLmNvbmYgZmlsZSB0aGF0IGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciBtaWJkaXJzLCBwZXJzaXN0ZW50RGlyIGFuZCANCisgIHRlbXBGaWxlUGF0dGVybi4gIEZvciBleGFtcGxlOg0KKw0KKyAgICBtaWJkaXJzIGM6L3Vzci9zaGFyZS9zbm1wL21pYnMNCisgICAgcGVyc2lzdGVudERpciBjOi91c3Ivc25tcC9wZXJzaXN0DQorICAgIHRlbXBGaWxlUGF0dGVybiBDOi91c3IvdGVtcC9zbm1wZFhYWFhYWA0KKw0KKyAgRm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHVzaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcyBhbmQgdGhlIHJlZ2lzdHJ5IHRvIGNvbmZpZ3VyZQ0KKyAgTmV0LVNOTVAsIHNlZSAnT3ZlcnZpZXcnIGRvY3VtZW50IGluIHRoZSBDb25maWd1cmF0aW9uIHNlY3Rpb24gb2YgdGhlIE5ldC1TTk1QIGhlbHAgZmlsZS4NCisNCisgIEZvciBpbmZvcm1hdGlvbiBvbiBydW5uaW5nIHNubXBkLmV4ZSBhbmQgc25tcHRyYXBkLmV4ZSBhcyBhIFdpbmRvd3Mgc2VydmljZSwgc2VlIA0KKyAgJ0hvdyB0byBSZWdpc3RlciB0aGUgTmV0LVNOTVAgQWdlbnQgYW5kIFRyYXAgRGFlbW9uIGFzIFdpbmRvd3Mgc2VydmljZXMnIGluIFJFQURNRS53aW4zMg0KKyAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBOZXQtU05NUCBIZWxwIGZpbGUgaW4gdGhlIFN0YXJ0IG1lbnUuDQorDQorDQorQ08tRVhJU1RFTkNFIFdJVEggTUlDUk9TT0ZUIFNOTVAgU0VSVklDRVMNCisNCitQbGVhc2Ugc2VlIHRoZSBzZWN0aW9uICdDby1leGlzdGVuY2Ugd2l0aCBNaWNyb3NvZnQgU05NUCBzZXJ2aWNlcycgaW4gUkVBRE1FLndpbjMyIHdoaWNoIA0KK2NhbiBiZSBmb3VuZCBpbiB0aGUgTmV0LVNOTVAgSGVscCBmaWxlIGluIHRoZSBTdGFydCBtZW51Lg0KKw0KKw0KK0lOU1RBTExBVElPTiAtIFBFUkwgTU9EVUxFDQorDQorICBJbmNsdWRlZCBpbiB0aGUgKGluc3RhbGwgZm9sZGVyKVxQZXJsIGZvbGRlciBpcyBhbiBBY3RpdmVTdGF0ZSBQZXJsIA0KKyAgNS44LnguIFBQTSBwYWNrYWdlLiAgTm90ZTogIEluIHByZXZpb3VzIHZlcnNpb24gb2YgTmV0LVNOTVAsIHRoZSBQUE0NCisgIHBhY2thZ2Ugd2FzIGNhbGxlZCBOZXQtU05NUC5wcGQuICBUaGUgcGFja2FnZSBoYXMgYmVlbiByZW5hbWVkIHRvDQorICBOZXRTTk1QLnBwZCB0byBwcmV2ZW50IGNvbmZsaWN0cyB3aXRoIHRoZSBOZXQ6OlNOTVAgcGFja2FnZSBhdmFpbGFibGUNCisgIGZyb20gQWN0aXZlU3RhdGUuDQorDQorICBUaGUgUGVybCBtb2R1bGVzIHJlcXVpcmUgdGhlIFdpbjMyIFJFR0VYIChSZWd1bGFyIEV4cHJlc3Npb24pIHBhY2thZ2Ugd2hpY2ggDQorICBpcyBhdmFpbGFibGUgZnJvbToNCisNCisgICAgaHR0cDovL3Blb3BsZS5kZWxwaGlmb3J1bXMuY29tL2dqYy9nbnVfcmVnZXguaHRtbA0KKw0KKyAgRG93bmxvYWQgZ251X3JlZ2V4LmV4ZSwgY29weSBpdCB0byBhIHRlbXBvcmFyeSBmaWxlIGFuZCBleGVjdXRlIGl0IHRvIA0KKyAgZXh0cmFjdCB0aGUgZmlsZXMuDQorDQorICBDb3B5IHRoZSBleHRyYWN0ZWQgZ251X3JlZ2V4LmRsbCB0byB5b3VyICV3aW5kaXIlXHN5c3RlbTMyIGZvbGRlci4NCisNCisgIFJlbW92ZSBhbnkgZXhpc3RpbmcgTmV0LVNOTVAgUGVybCBtb2R1bGVzOg0KKw0KKyAgICBwcG0gcmVtb3ZlIE5ldFNOTVANCisNCisgIEluc3RhbGwgdGhlIFBlcmwgbW9kdWxlczoNCisNCisgICAgY2QgKGluc3RhbGwgZm9sZGVyKVxQZXJsDQorICAgIHBwbSBpbnN0YWxsIE5ldFNOTVAucHBkDQorDQorICBQZXJmb3JtIGEgYmFzaWMgdGVzdCB1c2luZzoNCisNCisgICAgbmV0LXNubXAtcGVybC10ZXN0LnBsDQorDQorDQorQ09ORklHVVJBVElPTg0KKw0KKyAgQWxsIGNvbmZpZ3VyYXRpb24gZmlsZXMgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgJVNOTVBDT05GUEFUSCUgZm9sZGVyLg0KKw0KKyAgTm90ZTogQWxsIHBhdGhzIGluIGNvbmZpZ3VyYXRpb24gZmlsZXMgc2hvdWxkIHVzZSBmb3J3YXJkIHNsYXNoZXMgKFVuaXggc3R5bGUpLCANCisgIE5PVCBiYWNrIHNsYXNoZXMuICBFeGFtcGxlOiBjOi91c3INCisNCisgIEluY2x1ZGVkIGlzIGEgUGVybCBzY3JpcHQgY2FsbGVkIHNubXBjb25mIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSANCisgIGNvbmZpZ3VyYXRpb24gZmlsZXMuICANCisNCisgIERvY3VtZW50YXRpb24gZm9yIHVzaW5nIHRoZSBzbm1wY29uZiBpcyBhdmFpbGFibGUgaW4gdGhlIFdpbmRvd3MgaGVscCBmaWxlDQorICAoTmV0LVNOTVAuY2htKSBsb2NhdGVkIGluIHRoZSBkb2NzIGRpcmVjdG9yeSBvZiB0aGUgaW5zdGFsbGVkIHBhY2thZ2UuICBIZWxwIGlzIGFsc28NCisgIGF2YWlsYWJsZSBmcm9tIHRoZSB3ZWIgc2l0ZSBhdCBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9kb2NzLy4NCisNCisgIFRvIHJ1biBzbm1wY29uZiwgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBsaW5lOg0KKw0KKyAgICAgc25tcGNvbmYgLWkNCisNCisNCitCVUlMRCBJTkZPUk1BVElPTg0KKw0KKyAgTmFtZToJCQluZXQtc25tcC14LngueC0xLndpbjMyLmV4ZQ0KKyAgVVJMOgkJCWh0dHA6Ly93d3cubmV0LXNubXAub3JnDQorICBCdWlsZCBkYXRlOgkJDQorICBCdWlsdCBieToJCQ0KKyAgSW5zdGFsbGVyIFBhY2thZ2UgYnk6IA0KKyAgTlNJUyBDb21waWxlcjoJVmVyc2lvbiAyLjMNCisgIA0KKyAgT1M6CQkJV2luZG93cyAyMDAwIFNQNA0KKyAgQ29tcGlsZXI6CQlNU1ZDKysgNi4wIFNQNQ0KKyAgUGxhdGZvcm0gU0RLOgkJRmVicnVhcnkgMjAwMw0KKyAgUGVybDoJCQlBY3RpdmVQZXJsIDUuOC4yIGJ1aWxkIDgwOA0KKyAgUkVHRVg6CQlnbnVfcmVnZXguZXhlICgwLjEyKSAtIGh0dHA6Ly9wZW9wbGUuZGVscGhpZm9ydW1zLmNvbS9namMvZ251X3JlZ2V4Lmh0bWwNCisNCisgIFNvdXJjZTogCQluZXQtc25tcC14LngueC50YXIuZ3oNCisgIFBhdGNoZXMJCQ0KKyAgRGVzdGluYXRpb246ICAJYzpcdXNyDQorICBQcm9qZWN0OgkJd2luMzJzZGsuZHN3IC8gbGliZGxsLmRzdw0KKyAgTGlicmFyeToJCW5ldHNubXAgZm9yIGFwcGxpY2F0aW9ucywgbmV0c25tcC5kbGwgZm9yIFBlcmwgbW9kdWxlcw0KKyAgT3BlblNTTDoJCW4vYQ0KKw0KKw0KKyAgVGhlIGZvbGxvd2luZyBhcmUgdGhlIGRlZmF1bHQgcGF0aHMgYXJlIHVzZWQgYnkgdGhlIGFwcGxpY2F0aW9uczoNCisNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIG5ldC1zbm1wLWNvbmZpZy5oIGRlZmluZSAgIHwgdmFsdWUgICAgICAgICAgICAgICAgICAgIHwgb3B0aW9uYWwgZW52aXJvbm1lbnQNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdmFyaWFibGUNCisgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCisgIERFRkFVTFRfTUlCRElSUyAgICAgICAgICAgIHwgYzovdXNyL3NoYXJlL3NubXAvbWlicyAgIHwgTUlCRElSUw0KKyAgU05NUERMTU9EUEFUSCAgICAgICAgICAgICAgfCBjOi91c3IvbGliL2RsbW9kICAgICAgICAgfCBTTk1QRExNT0RQQVRIDQorICBTTk1QTElCUEFUSCAgICAgICAgICAgICAgICB8IGM6L3Vzci9saWIgICAgICAgICAgICAgICB8IFNOTVBMSUJQQVRIDQorICBTTk1QU0hBUkVQQVRIICAgICAgICAgICAgICB8IGM6L3Vzci9zaGFyZS9zbm1wICAgICAgICB8IFNOTVBTSEFSRVBBVEgNCisgIFNOTVBDT05GUEFUSCAgICAgICAgICAgICAgIHwgYzovdXNyL2V0Yy9zbm1wICAgICAgICAgIHwgU05NUENPTkZQQVRIDQorICBQRVJTSVNURU5UX0RJUkVDVE9SWSAgICAgICB8IGM6L3Vzci9zbm1wL3BlcnNpc3QgICAgICB8IFNOTVBfUEVSU0lTVEVOVF9ESVINCisgIE5FVFNOTVBfVEVNUF9GSUxFX1BBVFRFUk4gIHwgYzovdXNyL3RlbXAvc25tcGRYWFhYWFggIHwgDQorDQpkaWZmIC0tZ2l0IGEvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0IGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkuYmF0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJhMjM0YmEKLS0tIC9kZXYvbnVsbAorKysgYi93aW4zMi9kaXN0L2J1aWxkLWJpbmFyeS5iYXQKQEAgLTAsMCArMSw1IEBACitAZWNobyBvZmYKKworY2Qgd2luMzIgPiBOVUw6IDI+JjEKK3BlcmwgYnVpbGQtYmluYXJ5LnBsCisKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsIGIvd2luMzIvZGlzdC9idWlsZC1iaW5hcnkucGwKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uOTYzMmE5MgotLS0gL2Rldi9udWxsCisrKyBiL3dpbjMyL2Rpc3QvYnVpbGQtYmluYXJ5LnBsCkBAIC0wLDAgKzEsNjIyIEBACisjIS91c3IvYmluL3BlcmwKKyMgCisjIEJ1aWxkIHNjcmlwdCBmb3IgTmV0LVNOTVAgYW5kIE1TVkMKKyMgV3JpdHRlbiBieSBBbGV4IEJ1cmdlciAtIGFsZXhfYkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQKKyMgTWF5IDEwdGgsIDIwMDkKKyMKK3VzZSBzdHJpY3Q7Cit1c2UgRmlsZTo6Q29weTsKK3VzZSBDd2QgJ2Fic19wYXRoJzsKKworcHJpbnQgIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuIjsKKworbXkgJHRhcl9jb21tYW5kID0gJ0M6XG1zeXNcMS4wXGJpblx0YXIuZXhlJzsKK215ICRnemlwX2NvbW1hbmQgPSAnQzpcbXN5c1wxLjBcYmluXGd6aXAuZXhlJzsKKworaWYgKCEgKC1mICR0YXJfY29tbWFuZCkpIHsKKyAgZGllICgiQ291bGQgbm90IGZpbmQgdGFyIGNvbW1hbmQgKCR0YXJfY29tbWFuZCkiKTsKK30KK2Vsc2UgeworICBwcmludCAidGFyIGNvbW1hbmQ6ICAkdGFyX2NvbW1hbmRcbiI7Cit9CitpZiAoISAoLWYgJGd6aXBfY29tbWFuZCkpIHsKKyAgZGllICgiQ291bGQgbm90IGZpbmQgZ3ppcCBjb21tYW5kICgkZ3ppcF9jb21tYW5kKSIpOworfQorZWxzZSB7CisgIHByaW50ICJnemlwIGNvbW1hbmQ6ICRnemlwX2NvbW1hbmRcbiI7Cit9CisKK215ICR2ZXJzaW9uID0gInVua25vd24iOworbXkgJHZlcnNpb25fZm9yX3BlcmwgPSAidW5rbm93biI7CitteSAkdmVyc2lvbl9tYWo7CitteSAkdmVyc2lvbl9taW47CitteSAkdmVyc2lvbl9yZXY7CitteSAkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uID0gMTsKK215ICRvcGVuc3NsID0gImRpc2FibGVkIjsKK215ICRiX2lwdjYgPSAiZGlzYWJsZWQiOworbXkgJGJfd2luZXh0ZGxsID0gImRpc2FibGVkIjsKK215ICRzZGsgPSAiZGlzYWJsZWQiOworbXkgJGRlZmF1bHRfaW5zdGFsbF9iYXNlID0gImM6L3VzciI7CitteSAkaW5zdGFsbF9iYXNlID0gJGRlZmF1bHRfaW5zdGFsbF9iYXNlOworbXkgJGluc3RhbGwgPSAiZW5hYmxlZCI7CitteSAkaW5zdGFsbF9kZXZlbCA9ICJkaXNhYmxlZCI7CitteSAkcGVybCA9ICJkaXNhYmxlZCI7CitteSAkcGVybF9pbnN0YWxsID0gImRpc2FibGVkIjsKK215ICRsb2dnaW5nID0gImVuYWJsZWQiOworbXkgJGRlYnVnID0gImRpc2FibGVkIjsKK215ICRjb25maWdPcHRzID0gIiI7CitteSAkY1RtcCA9ICIiOworbXkgJGxpbmt0eXBlID0gInN0YXRpYyI7CitteSAkb3B0aW9uOworCisjIFByZXBlbmQgd2luMzJcIGlmIHJ1bm5pbmcgZnJvbSBtYWluIGRpcmVjdG9yeQorbXkgJGN1cnJlbnRfcHdkID0gYCVDT01TUEVDJSAvYyBjZGA7CitjaG9tcCAkY3VycmVudF9wd2Q7CitteSAkdG9wX2RpcjsKK215ICR3aW4zMl9kaXI7CitteSAkcGVybF9kaXI7CisKK2lmICgkY3VycmVudF9wd2QgPX4gL1xcd2luMzJcXGRpc3QkLykgeworICAkd2luMzJfZGlyID0gIiRjdXJyZW50X3B3ZC8uLi8iOworICAkdG9wX2RpciA9ICIkY3VycmVudF9wd2QvLi4vLi4vIjsKKyAgJHBlcmxfZGlyID0gIiRjdXJyZW50X3B3ZC8uLi8uLi9wZXJsLyI7Cit9CitlbHNpZiAoJGN1cnJlbnRfcHdkID1+IC9cXHdpbjMyJC8pIHsKKyAgJHdpbjMyX2RpciA9ICRjdXJyZW50X3B3ZDsKKyAgJHRvcF9kaXIgPSAiJGN1cnJlbnRfcHdkLy4uLyI7CisgICRwZXJsX2RpciA9ICIkY3VycmVudF9wd2QvLi4vcGVybC8iOworfQorZWxzZSB7ICAjIEFzc3VtZSB0b3AgbGV2ZWwgZm9sZGVyCisgICR3aW4zMl9kaXIgPSAiJGN1cnJlbnRfcHdkL3dpbjMyLyI7CisgICR0b3BfZGlyID0gJGN1cnJlbnRfcHdkOworICAkcGVybF9kaXIgPSAiJGN1cnJlbnRfcHdkL3BlcmwvIjsKK30KKworJHRvcF9kaXIgPSBhYnNfcGF0aCgkdG9wX2Rpcik7Ciskd2luMzJfZGlyID0gYWJzX3BhdGgoJHdpbjMyX2Rpcik7CiskcGVybF9kaXIgPSBhYnNfcGF0aCgkcGVybF9kaXIpOworCisKK3ByaW50ICJcbnRvcF9kaXI6ICAgICAgJHRvcF9kaXJcbiI7CitwcmludCAid2luMzJfZGlyOiAgICAkd2luMzJfZGlyXG4iOworcHJpbnQgInBlcmxfZGlyOiAgICAgJHBlcmxfZGlyXG4iOworcHJpbnQgImluc3RhbGwgYmFzZTogJGluc3RhbGxfYmFzZVxuXG4iOworCitjaGRpciAkd2luMzJfZGlyOworCitpZiAoIC1kICJkaXN0IiApIHsgfQorZWxzZSB7CisgIHByaW50ICJcblBsZWFzZSBjb3B5IHRoZSB3aW4zMi9kaXN0IGZvbGRlciBmcm9tIHRydW5rIHRvICR3aW4zMl9kaXIvXG5cbiI7CisgIGV4aXQ7Cit9CisKK2lmICggLWQgJEVOVntNU1ZDRGlyfSB8fCAtZCAkRU5We1ZDSU5TVEFMTERJUn0pIHsKK30KK2Vsc2UgeworICBwcmludCAiXG5QbGVhc2UgcnVuIFZDVkFSUzMyLkJBVCBmaXJzdCB0byBzZXQgdXAgdGhlIFZpc3VhbCBTdHVkaW8gYnVpbGRcbiIgLgorICAgICAgICAiZW52aXJvbm1lbnQuXG5cbiI7CisgIGV4aXQ7Cit9CisKK2lmICggLWQgJGluc3RhbGxfYmFzZSkgeworICBwcmludCAiXG5QbGVhc2UgZGVsZXRlIG9yIHJlbmFtZSB0aGUgJGluc3RhbGxfYmFzZSBmb2xkZXIuXG5cbiI7CisgIGV4aXQ7Cit9CisKK215ICRzeXN0ZW1fbmV0c25tcGRsbCA9ICIkRU5We1dJTkRJUn1cXHN5c3RlbTMyXFxuZXRzbm1wLmRsbCI7CitpZiAoIC1mICRzeXN0ZW1fbmV0c25tcGRsbCkgeworICBwcmludCAiXG4kc3lzdGVtX25ldHNubXBkbGwgc2hvdWxkIGJlIHJlbmFtZWQgb3IgZGVsZXRlZC5cblxuIjsKKyAgCisgIHByaW50ICJXb3VsZCB5b3UgbGlrZSBtZSB0byBkZWxldGUgaXQ/ICh5L24/KSI7CisgICR8ID0gMTsKKyAgbXkgJHRlbXAgPSA8U1RESU4+OworICBjaG9tcCAkdGVtcDsKKyAgaWYgKGxjKCR0ZW1wKSBlcSAieSIgfHwgbGMoJHRlbXApIGVxICJ5ZXMiKSB7CisgICAgdW5saW5rICRzeXN0ZW1fbmV0c25tcGRsbCB8fCBkaWUgIkNvdWxkIG5vdCBkZWxldGUgZmlsZSAkc3lzdGVtX25ldHNubXBkbGxcbiI7CisgIH0KKyAgZWxzZSB7CisgICAgZXhpdDsKKyAgfQorfQorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIworIyBEZXRlcm1pbmUgdmVyc2lvbiBmcm9tIHVuaXggY29uZmlndXJlIHNjcmlwdAorIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworbXkgJHVuaXhfY29uZmlndXJlX2luID0gIi4uL2NvbmZpZ3VyZSI7CisKK29wZW4gKFVOSVhfQ09ORklHVVJFX0lOLCAiPCR1bml4X2NvbmZpZ3VyZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkdW5peF9jb25maWd1cmVfaW5cbiI7CisKK3doaWxlICg8VU5JWF9DT05GSUdVUkVfSU4+KQoreworICBjaG9tcDsKKyAgL1BBQ0tBR0VfVkVSU0lPTj0nKC4qKScvOworICBpZiAoJDEgbmUgIiIpIHsKKyAgICAkdmVyc2lvbiA9ICQxOworICAgIGxhc3Q7CisgIH0KK30KK2Nsb3NlIFVOSVhfQ09ORklHVVJFX0lOOworCisjIERldGVybWluZSB2ZXJzaW9uIGZvciBQZXJsICg0IGNoYXJhY3RlcnMgd2l0aCBjb21tYXMpCiskdmVyc2lvbl9mb3JfcGVybCA9ICR2ZXJzaW9uOworbXkgJGRvdENvdW50ID0gKCR2ZXJzaW9uID1+IHRyLy4vLyk7Cit3aGlsZSAoJGRvdENvdW50IDwgMykgeworICAkdmVyc2lvbl9mb3JfcGVybCAuPSAiLjAiOworICAkZG90Q291bnQrKzsKK30KKyR2ZXJzaW9uX2Zvcl9wZXJsID1+IHMvXC4vLC9nOworCisjIERldGVybWluZSB2ZXJzaW9uIGZvciBOU0lTIGluc3RhbGxlcgorbXkgQHZlcnNpb25fYXJyYXkgPSBzcGxpdCgvXC4vLCAkdmVyc2lvbik7CiskdmVyc2lvbiA9fiAvLio/XC4uKj9cLiguKikvOworJHZlcnNpb25fcmV2ID0gJDEgfHwgMDsKKyR2ZXJzaW9uX21haiA9ICR2ZXJzaW9uX2FycmF5WzBdIHx8IDA7CiskdmVyc2lvbl9taW4gPSAkdmVyc2lvbl9hcnJheVsxXSB8fCAwOworCitwcmludCAiTmV0LVNOTVAgdmVyc2lvbjogICAgICAkdmVyc2lvblxuIjsKK3ByaW50ICJOZXQtU05NUCBQZXJsIHZlcnNpb246ICR2ZXJzaW9uX2Zvcl9wZXJsXG4iOworcHJpbnQgIk5ldC1TTk1QIHZlcnNpb24gTUFKOiAgJHZlcnNpb25fbWFqXG4iOworcHJpbnQgIk5ldC1TTk1QIHZlcnNpb24gTUlOMTogJHZlcnNpb25fbWluXG4iOworcHJpbnQgIk5ldC1TTk1QIHZlcnNpb24gTUlOMjogJHZlcnNpb25fcmV2XG5cbiI7CisKKyNnb3RvIHNraXAxOworI2V4aXQ7CisKKworCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjIENvbW1vbiBidWlsZCBvcHRpb25zOgorJGJfaXB2NiA9ICJlbmFibGVkIjsKKyRzZGsgPSAiZW5hYmxlZCI7CiskZGVmYXVsdF9pbnN0YWxsX2Jhc2UgPSAiYzovdXNyIjsKKyRpbnN0YWxsX2Jhc2UgPSAkZGVmYXVsdF9pbnN0YWxsX2Jhc2U7CiskcGVybF9pbnN0YWxsID0gImRpc2FibGVkIjsKKyRkZWJ1ZyA9ICJkaXNhYmxlZCI7CiskY29uZmlnT3B0cyA9ICIiOworJGNUbXAgPSAiIjsKKyRsaW5rdHlwZSA9ICJkeW5hbWljIjsKKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIyBCdWlsZCBiaW5hcnk6CisjIHdpbkV4dERMTCA9IGRpc2FibGVkCisjIFNTTCA9IGVuYWJsZWQKKyRvcGVuc3NsID0gImVuYWJsZWQiOworJGJfd2luZXh0ZGxsID0gImRpc2FibGVkIjsKKyRwZXJsID0gImVuYWJsZWQiOworJGluc3RhbGwgPSAiZW5hYmxlZCI7CiskaW5zdGFsbF9kZXZlbCA9ICJlbmFibGVkIjsKKworcHJpbnQgIlxuXG5CdWlsZGluZyB3aXRoIG9wdGlvbnM6XG4iOworcHJpbnQgIj09PT09PT09PT09PT09PT09PT09PT1cblxuIjsKK3ByaW50ICIxLiAgT3BlblNTTCBzdXBwb3J0OiAgICAgICAgICAgICAgICAiIC4gJG9wZW5zc2wuICJcbiI7CitwcmludCAiMi4gIFBsYXRmb3JtIFNESyBzdXBwb3J0OiAgICAgICAgICAgIiAuICRzZGsgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIzLiAgSW5zdGFsbCBwYXRoOiAgICAgICAgICAgICAgICAgICAiIC4gJGluc3RhbGxfYmFzZSAuICJcbiI7CitwcmludCAiNC4gIEluc3RhbGwgYWZ0ZXIgYnVpbGQ6ICAgICAgICAgICAgIiAuICRpbnN0YWxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiNS4gIFBlcmwgbW9kdWxlczogICAgICAgICAgICAgICAgICAgIiAuICRwZXJsIC4gIlxuIjsKK3ByaW50ICI2LiAgSW5zdGFsbCBwZXJsIG1vZHVsZXM6ICAgICAgICAgICAiIC4gJHBlcmxfaW5zdGFsbCAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjcuICBRdWlldCBidWlsZCAobG9nZ2VkKTogICAgICAgICAgICIgLiAkbG9nZ2luZyAuICJcbiI7CitwcmludCAiOC4gIERlYnVnIG1vZGU6ICAgICAgICAgICAgICAgICAgICAgIiAuICRkZWJ1ZyAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjkuICBJUHY2IHRyYW5zcG9ydHMgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl9pcHY2IC4gIlxuIjsKK3ByaW50ICIxMC4gd2luRXh0RExMIGFnZW50IChyZXF1aXJlcyBTREspOiAiIC4gJGJfd2luZXh0ZGxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMTEuIExpbmsgdHlwZTogICAgICAgICAgICAgICAgICAgICAgIiAuICRsaW5rdHlwZSAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjEyLiBJbnN0YWxsIGRldmVsb3BtZW50IGZpbGVzICAgICAgICIgLiAkaW5zdGFsbF9kZXZlbCAuICJcbiI7CisKK2NoZGlyICR3aW4zMl9kaXI7CismYnVpbGQoKTsKKyZjcmVhdGVfcGVybF9wYWNrYWdlKCk7CisKK3ByaW50ICJcbkNsZWFuaW5nIHVwICRpbnN0YWxsX2Jhc2Uvc25tcC9wZXJzaXN0L1xuIjsKK3VubGluayAoIiRpbnN0YWxsX2Jhc2Uvc25tcC9wZXJzaXN0L3NubXBkLmNvbmYiKTsKK3VubGluayAoIiRpbnN0YWxsX2Jhc2Uvc25tcC9wZXJzaXN0L3NubXB0cmFwZC5jb25mIik7CisKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyMgQnVpbGQgYmluYXJ5OgorIyB3aW5FeHRETEwgPSBlbmFibGVkCisjIFNTTCA9IGVuYWJsZWQKKyRvcGVuc3NsID0gImVuYWJsZWQiOworJGJfd2luZXh0ZGxsID0gImVuYWJsZWQiOworJHBlcmwgPSAiZGlzYWJsZWQiOworJGluc3RhbGwgPSAiZGlzYWJsZWQiOworJGluc3RhbGxfZGV2ZWwgPSAiZGlzYWJsZWQiOworCitwcmludCAiXG5cbkJ1aWxkaW5nIHdpdGggb3B0aW9uczpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PT09PVxuXG4iOworcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKK3ByaW50ICIyLiAgUGxhdGZvcm0gU0RLIHN1cHBvcnQ6ICAgICAgICAgICAiIC4gJHNkayAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKK3ByaW50ICI0LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gJGluc3RhbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOworcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKK3ByaW50ICI4LiAgRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gJGRlYnVnIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOworcHJpbnQgIjEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl93aW5leHRkbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKKworY2hkaXIgJHdpbjMyX2RpcjsKKyZidWlsZCgpOworCitwcmludCAiXG5Db3B5aW5nIHNubXBkLmV4ZSB0byBzbm1wZC13aW5FeHRETEwuZXhlXG4iOworY29weSgiYmluL3JlbGVhc2Uvc25tcGQuZXhlIiwiJGluc3RhbGxfYmFzZS9iaW4vc25tcGQtd2luRXh0RExMLmV4ZSIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IHNubXBkLmV4ZSB0byBzbm1wZC13aW5FeHRETEwuZXhlOiAkPyIpOworCitwcmludCAiXG5DbGVhbmluZyB1cCAkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9cbiI7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wZC5jb25mIik7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wdHJhcGQuY29uZiIpOworCisKK3ByaW50ICJSZW5hbWluZyAkaW5zdGFsbF9iYXNlL2JpbiB0byAkaW5zdGFsbF9iYXNlL2Jpbi5zc2xcbiI7CityZW5hbWUgKCIkaW5zdGFsbF9iYXNlL2JpbiIsIiRpbnN0YWxsX2Jhc2UvYmluLnNzbCIpIHx8IGRpZSAoIkNvdWxkIG5vdCByZW5hbWUgZm9sZGVyOiAkPyIpOworcHJpbnQgIlJlbmFtaW5nICRpbnN0YWxsX2Jhc2UvbGliIHRvICRpbnN0YWxsX2Jhc2UvbGliLnNzbFxuIjsKK3JlbmFtZSAoIiRpbnN0YWxsX2Jhc2UvbGliIiwiJGluc3RhbGxfYmFzZS9saWIuc3NsIikgfHwgZGllICgiQ291bGQgbm90IHJlbmFtZSBmb2xkZXI6ICQ/Iik7CitwcmludCAiUmVuYW1pbmcgJGluc3RhbGxfYmFzZS9wZXJsIHRvICRpbnN0YWxsX2Jhc2UvcGVybC5zc2xcbiI7CityZW5hbWUgKCIkaW5zdGFsbF9iYXNlL3BlcmwiLCIkaW5zdGFsbF9iYXNlL3Blcmwuc3NsIikgfHwgZGllICgiQ291bGQgbm90IHJlbmFtZSBmb2xkZXI6ICQ/Iik7CisKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjIEJ1aWxkIGJpbmFyeToKKyMgd2luRXh0RExMID0gZGlzYWJsZWQKKyMgU1NMID0gZGlzYWJsZWQKKyRvcGVuc3NsID0gImRpc2FibGVkIjsKKyRiX3dpbmV4dGRsbCA9ICJkaXNhYmxlZCI7CiskcGVybCA9ICJlbmFibGVkIjsKKyRpbnN0YWxsID0gImVuYWJsZWQiOworJGluc3RhbGxfZGV2ZWwgPSAiZW5hYmxlZCI7CisKK3ByaW50ICJcblxuQnVpbGRpbmcgd2l0aCBvcHRpb25zOlxuIjsKK3ByaW50ICI9PT09PT09PT09PT09PT09PT09PT09XG5cbiI7CitwcmludCAiMS4gIE9wZW5TU0wgc3VwcG9ydDogICAgICAgICAgICAgICAgIiAuICRvcGVuc3NsLiAiXG4iOworcHJpbnQgIjIuICBQbGF0Zm9ybSBTREsgc3VwcG9ydDogICAgICAgICAgICIgLiAkc2RrIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMy4gIEluc3RhbGwgcGF0aDogICAgICAgICAgICAgICAgICAgIiAuICRpbnN0YWxsX2Jhc2UgLiAiXG4iOworcHJpbnQgIjQuICBJbnN0YWxsIGFmdGVyIGJ1aWxkOiAgICAgICAgICAgICIgLiAkaW5zdGFsbCAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjUuICBQZXJsIG1vZHVsZXM6ICAgICAgICAgICAgICAgICAgICIgLiAkcGVybCAuICJcbiI7CitwcmludCAiNi4gIEluc3RhbGwgcGVybCBtb2R1bGVzOiAgICAgICAgICAgIiAuICRwZXJsX2luc3RhbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICI3LiAgUXVpZXQgYnVpbGQgKGxvZ2dlZCk6ICAgICAgICAgICAiIC4gJGxvZ2dpbmcgLiAiXG4iOworcHJpbnQgIjguICBEZWJ1ZyBtb2RlOiAgICAgICAgICAgICAgICAgICAgICIgLiAkZGVidWcgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICI5LiAgSVB2NiB0cmFuc3BvcnRzIChyZXF1aXJlcyBTREspOiAiIC4gJGJfaXB2NiAuICJcbiI7CitwcmludCAiMTAuIHdpbkV4dERMTCBhZ2VudCAocmVxdWlyZXMgU0RLKTogIiAuICRiX3dpbmV4dGRsbCAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjExLiBMaW5rIHR5cGU6ICAgICAgICAgICAgICAgICAgICAgICIgLiAkbGlua3R5cGUgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIxMi4gSW5zdGFsbCBkZXZlbG9wbWVudCBmaWxlcyAgICAgICAiIC4gJGluc3RhbGxfZGV2ZWwgLiAiXG4iOworCitjaGRpciAkd2luMzJfZGlyOworJmJ1aWxkKCk7CismY3JlYXRlX3BlcmxfcGFja2FnZSgpOworCitwcmludCAiXG5DbGVhbmluZyB1cCAkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9cbiI7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wZC5jb25mIik7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wdHJhcGQuY29uZiIpOworCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisjIEJ1aWxkIGJpbmFyeToKKyMgd2luRXh0RExMID0gZW5hYmxlZAorIyBTU0wgPSBkaXNhYmxlZAorJG9wZW5zc2wgPSAiZGlzYWJsZWQiOworJGJfd2luZXh0ZGxsID0gImVuYWJsZWQiOworJHBlcmwgPSAiZGlzYWJsZWQiOworJGluc3RhbGwgPSAiZGlzYWJsZWQiOworJGluc3RhbGxfZGV2ZWwgPSAiZGlzYWJsZWQiOworCitwcmludCAiXG5cbkJ1aWxkaW5nIHdpdGggb3B0aW9uczpcbiI7CitwcmludCAiPT09PT09PT09PT09PT09PT09PT09PVxuXG4iOworcHJpbnQgIjEuICBPcGVuU1NMIHN1cHBvcnQ6ICAgICAgICAgICAgICAgICIgLiAkb3BlbnNzbC4gIlxuIjsKK3ByaW50ICIyLiAgUGxhdGZvcm0gU0RLIHN1cHBvcnQ6ICAgICAgICAgICAiIC4gJHNkayAuICJcbiI7CitwcmludCAiXG4iOworcHJpbnQgIjMuICBJbnN0YWxsIHBhdGg6ICAgICAgICAgICAgICAgICAgICIgLiAkaW5zdGFsbF9iYXNlIC4gIlxuIjsKK3ByaW50ICI0LiAgSW5zdGFsbCBhZnRlciBidWlsZDogICAgICAgICAgICAiIC4gJGluc3RhbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICI1LiAgUGVybCBtb2R1bGVzOiAgICAgICAgICAgICAgICAgICAiIC4gJHBlcmwgLiAiXG4iOworcHJpbnQgIjYuICBJbnN0YWxsIHBlcmwgbW9kdWxlczogICAgICAgICAgICIgLiAkcGVybF9pbnN0YWxsIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiNy4gIFF1aWV0IGJ1aWxkIChsb2dnZWQpOiAgICAgICAgICAgIiAuICRsb2dnaW5nIC4gIlxuIjsKK3ByaW50ICI4LiAgRGVidWcgbW9kZTogICAgICAgICAgICAgICAgICAgICAiIC4gJGRlYnVnIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiOS4gIElQdjYgdHJhbnNwb3J0cyAocmVxdWlyZXMgU0RLKTogIiAuICRiX2lwdjYgLiAiXG4iOworcHJpbnQgIjEwLiB3aW5FeHRETEwgYWdlbnQgKHJlcXVpcmVzIFNESyk6ICIgLiAkYl93aW5leHRkbGwgLiAiXG4iOworcHJpbnQgIlxuIjsKK3ByaW50ICIxMS4gTGluayB0eXBlOiAgICAgICAgICAgICAgICAgICAgICAiIC4gJGxpbmt0eXBlIC4gIlxuIjsKK3ByaW50ICJcbiI7CitwcmludCAiMTIuIEluc3RhbGwgZGV2ZWxvcG1lbnQgZmlsZXMgICAgICAgIiAuICRpbnN0YWxsX2RldmVsIC4gIlxuIjsKKworY2hkaXIgJHdpbjMyX2RpcjsKKyZidWlsZCgpOworCitwcmludCAiXG5Db3B5aW5nIHNubXBkLmV4ZSB0byBzbm1wZC13aW5FeHRETEwuZXhlXG4iOworY29weSgiYmluL3JlbGVhc2Uvc25tcGQuZXhlIiwiJGluc3RhbGxfYmFzZS9iaW4vc25tcGQtd2luRXh0RExMLmV4ZSIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IHNubXBkLmV4ZSB0byBzbm1wZC13aW5FeHRETEwuZXhlOiAkPyIpOworCitwcmludCAiXG5DbGVhbmluZyB1cCAkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9cbiI7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wZC5jb25mIik7Cit1bmxpbmsgKCIkaW5zdGFsbF9iYXNlL3NubXAvcGVyc2lzdC9zbm1wdHJhcGQuY29uZiIpOworCisjKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisKK3ByaW50ICJcblxuQ29weWluZyBkaXN0IGZpbGVzOlxuIjsKK3ByaW50ICI9PT09PT09PT09PT09PT09PT09XG5cbiI7CisKK21rZGlyICgiJGluc3RhbGxfYmFzZS9kb2NzIik7Citta2RpciAoIiRpbnN0YWxsX2Jhc2UvdGVtcCIpOworCismY2hlY2tfZGlyX2V4aXN0cygiJGluc3RhbGxfYmFzZS9kb2NzIik7CismY2hlY2tfZGlyX2V4aXN0cygiJGluc3RhbGxfYmFzZS90ZW1wIik7CisKK2NoZGlyICR0b3BfZGlyOworY29weSgiQ09QWUlORyIsIiRpbnN0YWxsX2Jhc2UvZG9jcy8iKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBmaWxlOiAkPyIpOworY29weSgnd2luMzJcZGlzdFxSRUFETUUudHh0JywiJGluc3RhbGxfYmFzZS8iKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBmaWxlOiAkPyIpOworY29weSgnd2luMzJcZGlzdFxzY3JpcHRzXG5ldC1zbm1wLXBlcmwtdGVzdC5wbCcsIiRpbnN0YWxsX2Jhc2UvYmluLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CisKKworc2tpcDE6CisKKyMqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworcHJpbnQgIlxuXG5Db3B5aW5nIE5TSVMgaW5zdGFsbGVyIGZpbGVzOlxuIjsKK3ByaW50ICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4iOworCitjaGRpciAkdG9wX2RpcjsKK2NvcHkoJ3dpbjMyXGRpc3RcaW5zdGFsbGVyXFNldEVuVmFyLm5zaScsIiRpbnN0YWxsX2Jhc2UvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKK2NvcHkoJ3dpbjMyXGRpc3RcaW5zdGFsbGVyXG5ldC1zbm1wLm5zaScsIiRpbnN0YWxsX2Jhc2UvbmV0LXNubXAubnNpLmluIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKK2NvcHkoJ3dpbjMyXGRpc3RcaW5zdGFsbGVyXEFkZDJQYXRoLm5zaScsIiRpbnN0YWxsX2Jhc2UvIikgfHwgZGllICgiQ291bGQgbm90IGNvcHkgZmlsZTogJD8iKTsKK2NvcHkoJ3dpbjMyXGRpc3RcaW5zdGFsbGVyXG5ldC1zbm1wLWhlYWRlcjEuYm1wJywiJGluc3RhbGxfYmFzZS8iKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBmaWxlOiAkPyIpOworCitvcGVuIChURU1QLCAiPiRpbnN0YWxsX2Jhc2UvcmVnaXN0ZXJhZ2VudC5iYXQiKSB8fCBkaWUgKCJDb3VsZCBub3QgY3JlYXRlIGZpbGU6ICQ/Iik7CitjbG9zZSBURU1QOworb3BlbiAoVEVNUCwgIj4kaW5zdGFsbF9iYXNlL3VucmVnaXN0ZXJhZ2VudC5iYXQiKSB8fCBkaWUgKCJDb3VsZCBub3QgY3JlYXRlIGZpbGU6ICQ/Iik7CitjbG9zZSBURU1QOworb3BlbiAoVEVNUCwgIj4kaW5zdGFsbF9iYXNlL3JlZ2lzdGVydHJhcGQuYmF0IikgfHwgZGllICgiQ291bGQgbm90IGNyZWF0ZSBmaWxlOiAkPyIpOworY2xvc2UgVEVNUDsKK29wZW4gKFRFTVAsICI+JGluc3RhbGxfYmFzZS91bnJlZ2lzdGVydHJhcGQuYmF0IikgfHwgZGllICgiQ291bGQgbm90IGNyZWF0ZSBmaWxlOiAkPyIpOworY2xvc2UgVEVNUDsKK29wZW4gKFRFTVAsICI+JGluc3RhbGxfYmFzZS9ldGMvc25tcC9zbm1wLmNvbmYiKSB8fCBkaWUgKCJDb3VsZCBub3QgY3JlYXRlIGZpbGU6ICQ/Iik7CitjbG9zZSBURU1QOworCisjCisjIEJ1aWxkIG5ldC1zbm1wLm5zaSBmaWxlCisjCisgIHsKKyAgICBteSAkZmlsZV9vdXQgPSAiJGluc3RhbGxfYmFzZS9uZXQtc25tcC5uc2kiOworICAgIG15ICRmaWxlX2luID0gIiRpbnN0YWxsX2Jhc2UvbmV0LXNubXAubnNpLmluIjsKKyAgCisgICAgb3BlbiAoRklMRV9PVVQsICI+JGZpbGVfb3V0IikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX291dFxuIjsKKyAgICBvcGVuIChGSUxFX0lOLCAiPCRmaWxlX2luIikgfHwgZGllICJDYW4ndCBPcGVuICRmaWxlX2luXG4iOworICAgIAorICAgIHByaW50ICJjcmVhdGluZyAkZmlsZV9vdXRcbiI7CisJICAKKyAgICB3aGlsZSAoPEZJTEVfSU4+KQorICAgIHsKKyAgICAgIGNob21wOworICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfTUFKX1ZFUlNJT04gXCIkdmVyc2lvbl9tYWpcIi87CisgICAgICBzLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTi4qLyFkZWZpbmUgUFJPRFVDVF9NSU5fVkVSU0lPTiBcIiR2ZXJzaW9uX21pblwiLzsKKyAgICAgIHMvIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OLiovIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OIFwiJHZlcnNpb25fcmV2XCIvOworICAgICAgcy8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04uKi8hZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04gXCIkaW5zdGFsbGVyX2V4ZV92ZXJzaW9uXCIvOworCSAgaWYgKCRFTlZ7TElCfSA9fiAvXFx4NjQvKSB7CisJICAgIHMvIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVguKi8hZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWCBcIi54NjQuZXhlXCIvOworCSAgICBzLyFkZWZpbmUgV0lOMzJfUExBVEZPUk0uKi8hZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWCBcIng2NFwiLzsKKwkgIH0KKwkgIGVsc2UgeworCSAgICBzLyFkZWZpbmUgUFJPRFVDVF9FWEVfU1VGRklYLiovIWRlZmluZSBQUk9EVUNUX0VYRV9TVUZGSVggXCIueDg2LmV4ZSIvOworCSAgICBzLyFkZWZpbmUgV0lOMzJfUExBVEZPUk0uKi8hZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWCBcIng4NlwiLzsKKwkgIH0KKyAgCisgICAgICBwcmludCBGSUxFX09VVCAkXyAuICJcbiI7CisgICAgfQorICAgIGNsb3NlIEZJTEVfSU47CisgICAgY2xvc2UgRklMRV9PVVQ7CisgIH0KKworcHJpbnQgIlxuPT09PT09PVxuIjsKK3ByaW50ICJEb25lISEhXG4iOworcHJpbnQgIj09PT09PT1cblxuIjsKKworZXhpdDsKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorc3ViIGJ1aWxkIHsKKworICAkY1RtcCA9ICgkb3BlbnNzbCBlcSAiZW5hYmxlZCIgPyAiLS13aXRoLXNzbCIgOiAiIiApOworICAkY29uZmlnT3B0cyA9ICIkY1RtcCI7CisgICRjVG1wID0gKCRzZGsgZXEgImVuYWJsZWQiID8gIi0td2l0aC1zZGsiIDogIiIgKTsKKyAgJGNvbmZpZ09wdHMgPSAiJGNvbmZpZ09wdHMgJGNUbXAiOworICAkY1RtcCA9ICgkYl9pcHY2IGVxICJlbmFibGVkIiA/ICItLXdpdGgtaXB2NiIgOiAiIiApOworICAkY29uZmlnT3B0cyA9ICIkY29uZmlnT3B0cyAkY1RtcCI7CisgICRjVG1wID0gKCRiX3dpbmV4dGRsbCBlcSAiZW5hYmxlZCIgPyAiLS13aXRoLXdpbmV4dGRsbCIgOiAiIiApOworICAkY29uZmlnT3B0cyA9ICIkY29uZmlnT3B0cyAkY1RtcCI7CisgICRjVG1wID0gKCRkZWJ1ZyBlcSAiZW5hYmxlZCIgPyAiLS1jb25maWc9ZGVidWciIDogIi0tY29uZmlnPXJlbGVhc2UiICk7CisgICRjb25maWdPcHRzID0gIiRjb25maWdPcHRzICRjVG1wIjsKKyAgCisgICMgU2V0IGVudmlyb25tZW50IHZhcmlhYmxlcworICAKKyAgIyBTZXQgdG8gbm90IHNlYXJjaCBmb3Igbm9uLWV4aXN0ZW50ICIuZGVwIiBmaWxlcworICAkRU5We05PX0VYVEVSTkFMX0RFUFN9PSIxIjsKKyAgCisgICMgU2V0IFBBVEggZW52aXJvbm1lbnQgdmFyaWFibGUgc28gUGVybCBtYWtlIHRlc3RzIGNhbiBsb2NhdGUgdGhlIERMTAorICAkRU5We1BBVEh9ID0gIiRjdXJyZW50X3B3ZFxcYmluXFwiIC4gKCRkZWJ1ZyBlcSAiZW5hYmxlZCIgPyAiZGVidWciIDogInJlbGVhc2UiICkgLiAiOyRFTlZ7UEFUSH0iOworICAKKyAgIyBTZXQgTUlCRElSUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIG1ha2UgdGVzdHMgY2FuIGxvY2F0ZSB0aGUgbWlicworICBteSAkdGVtcF9taWJkaXIgPSAiJGN1cnJlbnRfcHdkLy4uL21pYnMiOworICAkdGVtcF9taWJkaXIgPX4gcy9cXC9cLy9nOworICAkRU5We01JQkRJUlN9PSR0ZW1wX21pYmRpcjsKKyAgCisgICMgU2V0IFNOTVBDT05GUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBzbyBQZXJsIGNvbmYudCB0ZXN0IGNhbiBsb2NhdGUKKyAgIyB0aGUgY29uZmlndXJhdGlvbiBmaWxlcy4KKyAgIyBTZWUgdGhlIG5vdGUgYWJvdXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIHRoZSBXaW4zMiBzZWN0aW9uIG9mIAorICAjIHBlcmwvU05NUC9SRUFETUUgZm9yIGRldGFpbHMgb24gd2h5IHRoaXMgaXMgbmVlZGVkLiAKKyAgJEVOVntTTk1QQ09ORlBBVEh9PSJ0IjskRU5We1NOTVBDT05GUEFUSH07CisgIAorICBwcmludCAiXG5CdWlsZGluZy4uLlxuIjsKKyAgCisgIHByaW50ICJcbkNyZWF0aW5nICoub3V0IGxvZyBmaWxlcy5cblxuIjsKKworICAjcHJpbnQgIkRlbGV0aW5nIG9sZCBsb2cgZmlsZXMuLi5cbiI7CisgICNzeXN0ZW0oImRlbCAqLm91dCA+IE5VTDogMj4mMSIpOworCisgICMgRGVsZXRlIG5ldC1zbm1wLWNvbmZpZy5oIGZyb20gbWFpbiBpbmNsdWRlIGZvbGRlciBqdXN0IGluIGNhc2UgaXQgd2FzIGNyZWF0ZWQgYnkgYSBDeWd3aW4gb3IgTWluR1cgYnVpbGQKKyAgc3lzdGVtKCJkZWwgLi5cXGluY2x1ZGVcXG5ldC1zbm1wXFxuZXQtc25tcC1jb25maWcuaCA+IE5VTDogMj4mMSIpOworICAKKyAgcHJpbnQgIlJ1bm5pbmcgQ29uZmlndXJlLi4uXG4iOworICBzeXN0ZW0oInBlcmwgQ29uZmlndXJlICRjb25maWdPcHRzIC0tbGlua3R5cGU9JGxpbmt0eXBlIC0tcHJlZml4PVwiJGluc3RhbGxfYmFzZVwiID4gY29uZmlndXJlLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgY29uZmlndXJlLm91dCkiOworCisgIHByaW50ICJDbGVhbmluZy4uLlxuIjsKKyAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGNsZWFuID4gY2xlYW4ub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBjbGVhbi5vdXQpIjsKKworICBwcmludCAiQnVpbGRpbmcgbWFpbiBwYWNrYWdlLi4uXG4iOworICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gPiBtYWtlLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgbWFrZS5vdXQpIjsKKworICBpZiAoJHBlcmwgZXEgImVuYWJsZWQiKSB7CisgICAgaWYgKCRsaW5rdHlwZSBlcSAic3RhdGljIikgeworICAgICAgcHJpbnQgIlJ1bm5pbmcgQ29uZmlndXJlIGZvciBETEwuLi5cbiI7CisgICAgICBzeXN0ZW0oInBlcmwgQ29uZmlndXJlICRjb25maWdPcHRzIC0tbGlua3R5cGU9ZHluYW1pYyAtLXByZWZpeD1cIiRpbnN0YWxsX2Jhc2VcIiA+IHBlcmxjb25maWd1cmUub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBwZXJsY29uZmlndXJlLm91dCkiOworICAgICAgCisgICAgICBwcmludCAiQ2xlYW5pbmcgbGlicmFyaWVzLi4uXG4iOworICAgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIGxpYnNfY2xlYW4gPj4gY2xlYW4ub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBjbGVhbi5vdXQpIjsKKyAgICAgIAorICAgICAgcHJpbnQgIkJ1aWxkaW5nIERMTCBsaWJyYXJpZXMuLi5cbiI7CisgICAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gbGlicyA+IGRsbC5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGRsbC5vdXQpIjsKKyAgICB9CisKKyAgICBwcmludCAiQ2xlYW5pbmcgUGVybC4uLi5cbiI7CisgICAgc3lzdGVtKCJubWFrZSAvbm9sb2dvIHBlcmxfY2xlYW4gPj4gY2xlYW4ub3V0IDI+JjEiKTsgIyBJZiBhbHJlYWR5IGNsZWFuZWQsIE1ha2VmaWxlIGlzIGdvbmUgc28gZG9uJ3Qgd29ycnkgYWJvdXQgZXJyb3JzIQorCisgICAgcHJpbnQgIkJ1aWxkaW5nIFBlcmwgbW9kdWxlcy4uLlxuIjsKKyAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybCA+IHBlcmxtYWtlLm91dCAyPiYxIikgPT0gMCB8fCBkaWUgIkJ1aWxkIGVycm9yIChzZWUgcGVybG1ha2Uub3V0KSI7CisKKyMgICAgcHJpbnQgIlRlc3RpbmcgUGVybCBtb2R1bGVzLi4uXG4iOworIyAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gcGVybF90ZXN0ID4gcGVybHRlc3Qub3V0IDI+JjEiKTsgIyBEb24ndCBkaWUgaWYgYWxsIHRoZSB0ZXN0cyBkb24ndCBwYXNzLi4KKyAgICAKKyAgICBpZiAoJHBlcmxfaW5zdGFsbCBlcSAiZW5hYmxlZCIpIHsKKyAgICAgIHByaW50ICJJbnN0YWxsaW5nIFBlcmwgbW9kdWxlcy4uLlxuIjsKKyAgICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBwZXJsX2luc3RhbGwgPiBwZXJsaW5zdGFsbC5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIHBlcmxpbnN0YWxsLm91dCkiOworICAgIH0KKyAgICAgIAorICAgIHByaW50ICJcblNlZSBwZXJsdGVzdC5vdXQgZm9yIFBlcmwgdGVzdCByZXN1bHRzXG4iOworICB9CisKKyAgcHJpbnQgIlxuIjsKKyAgaWYgKCRpbnN0YWxsIGVxICJlbmFibGVkIikgeworICAgIHByaW50ICJJbnN0YWxsaW5nIG1haW4gcGFja2FnZS4uLlxuIjsKKyAgICBzeXN0ZW0oIm5tYWtlIC9ub2xvZ28gaW5zdGFsbCA+IGluc3RhbGwub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBpbnN0YWxsLm91dCkiOworICB9CisgIGVsc2UgeworICAgIHByaW50ICJUeXBlIG5tYWtlIGluc3RhbGwgdG8gaW5zdGFsbCB0aGUgcGFja2FnZSB0byAkaW5zdGFsbF9iYXNlXG4iOworICB9CisKKyAgaWYgKCRpbnN0YWxsX2RldmVsIGVxICJlbmFibGVkIikgeworICAgIHByaW50ICJJbnN0YWxsaW5nIGRldmVsb3BtZW50IGZpbGVzLi4uXG4iOworICAgIHN5c3RlbSgibm1ha2UgL25vbG9nbyBpbnN0YWxsX2RldmVsID4gaW5zdGFsbF9kZXZlbC5vdXQgMj4mMSIpID09IDAgfHwgZGllICJCdWlsZCBlcnJvciAoc2VlIGluc3RhbGxfZGV2ZWwub3V0KSI7CisgIH0KKyAgZWxzZSB7CisgICAgcHJpbnQgIlR5cGUgbm1ha2UgaW5zdGFsbF9kZXZlbCB0byBpbnN0YWxsIHRoZSBkZXZlbG9wbWVudCBmaWxlcyB0byAkaW5zdGFsbF9iYXNlXG4iOworICB9CisgIAorICBpZiAoJHBlcmxfaW5zdGFsbCBlcSAiZGlzYWJsZWQiICYmICRwZXJsIGVxICJlbmFibGVkIikgeworICAgIHByaW50ICJUeXBlIG5tYWtlIHBlcmxfaW5zdGFsbCB0byBpbnN0YWxsIHRoZSBQZXJsIG1vZHVsZXNcbiI7CisgIH0KKworICBwcmludCAiXG5Eb25lIVxuIjsgIAorfSAjIHN1YiBidWlsZAorCisKKworCitzdWIgY3JlYXRlX3BlcmxfcGFja2FnZSB7CisKKyAgcHJpbnQgIlxuXG5DcmVhdGluZyBQZXJsIHBhY2thZ2U6XG4iOworICBwcmludCAiPT09PT09PT09PT09PT09PT09PT09PT09XG5cbiI7CisgIAorICBjaGRpciAkcGVybF9kaXIgfHwgZGllICgiQ291bGQgbm90IGVudGVyIFBlcmwgZGlyZWN0b3J5OiAkcGVybF9kaXIiKTsKKyAgCisgIHN5c3RlbSgibm1ha2UgcHBkID4gcGVybHBhY2thZ2Uub3V0IDI+JjEiKSA9PSAwIHx8IGRpZSAiQnVpbGQgZXJyb3IgKHNlZSBwZXJscGFja2FnZS5vdXQpIjsKKyAgI3JlbmFtZSgiQnVuZGxlLU5ldFNOTVAucHBkIiwiTmV0U05NUC5wcGQiKSB8fCBkaWUgIkNvdWxkIG5vdCByZW5hbWUgQnVuZGxlLU5ldFNOTVAucHBkIHRvIE5ldFNOTVAucHBkIjsKKyAgCisgIHsKKyAgICBteSAkZmlsZV9vdXQgPSAiTmV0U05NUC5wcGQiOworICAgIG15ICRmaWxlX2luID0gIkJ1bmRsZS1OZXRTTk1QLnBwZCI7CisgIAorICAgIG9wZW4gKEZJTEVfT1VULCAiPiRmaWxlX291dCIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkZmlsZV9vdXRcbiI7CisgICAgb3BlbiAoRklMRV9JTiwgIjwkZmlsZV9pbiIpIHx8IGRpZSAiQ2FuJ3QgT3BlbiAkZmlsZV9pblxuIjsKKyAgICAKKyAgICBwcmludCAiY3JlYXRpbmcgJGZpbGVfb3V0XG4iOworICAKKyAgICB3aGlsZSAoPEZJTEVfSU4+KQorICAgIHsKKyAgICAgIGNob21wOworICAgICAgcy9ePFNPRlRQS0cgTkFNRS4qLzxTT0ZUUEtHIE5BTUU9Ik5ldFNOTVAiIFZFUlNJT049IiR2ZXJzaW9uX2Zvcl9wZXJsIj4vOworICAgICAgcy8uKj88VElUTEU+LiovICAgIDxUSVRMRT5OZXQtU05NUDxcL1RJVExFPi87CisgICAgICBzLy4qPzxBQlNUUkFDVD4uKi8gICAgPEFCU1RSQUNUPk9iamVjdCBPcmllbnRlZCBJbnRlcmZhY2UgdG8gTmV0LVNOTVA8XC9BQlNUUkFDVD4vOworICAgICAgcy8uKj88Q09ERUJBU0UuKi8gICAgICAgIDxDT0RFQkFTRSBIUkVGPSJ4ODZcL05ldFNOTVAudGFyLmd6IiBcLz4vOworICAKKyAgICAgIHByaW50IEZJTEVfT1VUICRfIC4gIlxuIjsKKyAgICB9CisgICAgY2xvc2UgRklMRV9JTjsKKyAgICBjbG9zZSBGSUxFX09VVDsKKyAgfQorICAKKyAgcHJpbnQgIkNvbXByZXNzaW5nIFBlcmwgbW9kdWxlc1xuIjsKKyAgdW5saW5rICJOZXRTTk1QLnRhciI7CisgIHVubGluayAiTmV0U05NUC50YXIuZ3oiOworICB1bmxpbmsgInBlcmwtdGFyLm91dCI7CisgIHVubGluayAicGVybC1nemlwLm91dCI7CisgIHByaW50ICIgIENyZWF0aW5nIFBlcmwgdGFyIGZpbGVcbiI7CisgIGlmIChzeXN0ZW0oIlwiJHRhcl9jb21tYW5kXCIgY3ZmIE5ldFNOTVAudGFyIGJsaWIgPiBwZXJsLXRhci5vdXQgMj4mMSIpKSB7IGRpZSAoIkNvdWxkIG5vdCBjcmVhdGUgdGFyIGZpbGUuICBTZWUgcGVybC10YXIub3V0Iik7IH0KKyAgcHJpbnQgIiAgQ29tcHJlc3NpbmcgUGVybCB0YXIgZmlsZVxuIjsKKyAgaWYgKHN5c3RlbSgiXCIkZ3ppcF9jb21tYW5kXCIgLS1iZXN0IE5ldFNOTVAudGFyID4gcGVybC1nemlwLm91dCAyPiYxIikpIHsgZGllICgiQ291bGQgbm90IGNvbXByZXNzIHRhciBmaWxlIHdpdGggZ3ppcC4gU2VlIHBlcmwtZ3ppcC5vdXQiKTsgfQorICAgCisgICMgUmVtb3ZlIGNoZGlyLi4KKyAgY2hkaXIgJHBlcmxfZGlyIHx8IGRpZSAoIkNvdWxkIG5vdCBlbnRlciBQZXJsIGRpcmVjdG9yeTogJHBlcmxfZGlyIik7CisgIG1rZGlyICgiJGluc3RhbGxfYmFzZS9wZXJsIik7CisgIG1rZGlyICgiJGluc3RhbGxfYmFzZS9wZXJsL3g4NiIpOworICAmY2hlY2tfZGlyX2V4aXN0cygiJGluc3RhbGxfYmFzZS9wZXJsIik7CisgICZjaGVja19kaXJfZXhpc3RzKCIkaW5zdGFsbF9iYXNlL3BlcmwveDg2Iik7CisgIGNvcHkoIk5ldFNOTVAucHBkIiwiJGluc3RhbGxfYmFzZS9wZXJsLyIpIHx8IGRpZSAoIkNvdWxkIG5vdCBjb3B5IGZpbGU6ICQ/Iik7CisgIGNvcHkoIk5ldFNOTVAudGFyLmd6IiwiJGluc3RhbGxfYmFzZS9wZXJsL3g4Ni8iKSB8fCBkaWUgKCJDb3VsZCBub3QgY29weSBmaWxlOiAkPyIpOworfSAgIyBzdWIgY3JlYXRlX3BlcmxfcGFja2FnZQorCitzdWIgY2hlY2tfZGlyX2V4aXN0cyB7CisgIG15ICRkaXIgPSBzaGlmdDsKKyAgaWYgKCEgLWQgJGRpcikgeworICAgIGRpZSAiRGlyZWN0b3J5ICRkaXIgaXMgbWlzc2luZ1xuIjsKKyAgfQorfQorCmRpZmYgLS1naXQgYS93aW4zMi9kaXN0L2h0bWxoZWxwL0RldmVsb3Blcl9GQVEuaHRtbCBiL3dpbjMyL2Rpc3QvaHRtbGhlbHAvRGV2ZWxvcGVyX0ZBUS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MGFjYmMKLS0tIC9kZXYvbnVsbAorKysgYi93aW4zMi9kaXN0L2h0bWxoZWxwL0RldmVsb3Blcl9GQVEuaHRtbApAQCAtMCwwICsxLDc4NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5yc3RvcnkncyBORVQtU05NUCBEZXZlbG9wZXJzIEZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIFBhZ2U8L3RpdGxlPgorICA8L2hlYWQ+CisKKyAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgYmFja2dyb3VuZD0idWNkLXNubXAtYmczLmdpZiI+CisgICAgPGRpdiBhbGlnbj1jZW50ZXI+CisgICAgPGgxPnJzdG9yeSdzIE5FVC1TTk1QIERldmVsb3BlcnMgRnJlcXVlbnRseSBBc2tlZCBRdWVzdGlvbnMgUGFnZTwvaDE+CisgICAgPC9kaXY+Cis8aHI+CisgICAgPGRpdiBhbGlnbj1jZW50ZXI+CisgICAgPGZvbnQgc2l6ZT0tMT4KKyAgICAgIDxhIGhyZWY9IkZBUS5odG1sIj5bT2ZmaWNpYWwgRkFRXTwvYT4gfCAKKwk8YSBocmVmPSIjdG9rZW5zIj5bRGVidWcgdG9rZW5zXTwvYT4gfCAKKwk8YSBocmVmPSIjYWdlbnR4Ij5bQWdlbnRYXTwvYT4gfCAKKwk8YSBocmVmPSIjaW5zdGFsbCI+W0luc3RhbGxdPC9hPiB8IAorCTxhIGhyZWY9IiNkaXNhYmxlIj5bRGlzYWJsZV08L2E+IHwgCisJPGEgaHJlZj0iI2Vycm9ycyI+W0Vycm9yc108L2E+IHwgCisJPGEgaHJlZj0iI2JpdHMiPltCaXRzXTwvYT4gfCAKKwk8YSBocmVmPSIjZW1iZWRkZWQiPltlbWJlZGRlZCBwZXJsXTwvYT4gfCAKKwk8YSBocmVmPSIjc211eCI+W1NNVVhdPC9hPiB8IAorCTxhIGhyZWY9IiNlbnRpZCI+W0VudGVycHJpc2UgT0lEXTwvYT4gfCAKKwk8YSBocmVmPSIjYXV0b2RlcHMiPltBdXRvbWF0aWMgZGVwZW5kZW5jaWVzXTwvYT4gfCAKKwk8YSBocmVmPSIjY3Jvc3MiPltDcm9zcyBjb21waWxpbmddPC9hPiB8IAorCTxhIGhyZWY9IiNzdGF0aWMiPltTdGF0aWMgbGlua2luZ108L2E+IHwgCisJPGEgaHJlZj0iI3JlYWRmZHMiPltyZWFkZmRzXTwvYT4gfCAKKwk8YSBocmVmPSIjc2hhcmluZyI+W1NoYXJpbmcgZGF0YV08L2E+IHwgCisJPGEgaHJlZj0ibWFuMS1taWIyYy4xLmh0bWwiPlttaWIyYy5hcnJheS11c2VyLmNvbmZdPC9hPiB8IAorCTxhIGhyZWY9IiNzdGVwcyI+W0JhYnkgU3RlcHMgZmxvd108L2E+IHwgCisgICAgICA8L2ZvbnQ+CisgICAgPC9kaXY+Cis8aHI+CitUaGlzIGlzIGp1c3QgYSBxdWljayBwYWdlIHRvIGFuc3dlciBzb21lIGNvbW1vbiBxdWVzdGlvbnMgdGhhdCBhcmVuJ3QgY292ZXJlZAoraW4gdGhlIDxhIGhyZWY9Ii9GQVEuaHRtbCI+b2ZmaWNpYWwgRkFRPC9hPi4KKworPGEgbmFtZT0iYWdlbnR4Ij48L2E+IDxoMj5BZ2VudFg8L2gyPgorPHByZT4gVG8gaGF2ZSB0aGUgc3ViLWFnZW50IGNvbW11bmljYXRlIG9uIGEgZGlmZmVyZW50IHNvY2tldCwgb3Igd2l0aAorZGlmZmVyZW50IHBlcm1pc3Npb25zLCBhZGQgdGhlc2UgbGluZSB0byB5b3VyIHNubXBkLmNvbmYKKworCSMgc29ja2V0IHBhdGgKKwlhZ2VudHhzb2NrZXQgL3RtcC9hZ2VudHgKKworCSMgcGVybXMgc29ja2V0IGRpcmVjdG9yeSB1c2VyaWQgZ3JvdXBpZAorCWFnZW50eHBlcm1zIDc3NyA3NzcgcnN0b3J5IHJzdG9yeQorCisKK2FuZCBhZGQgdGhpcyBsaW5lIHRvIHlvdXIgc3ViYWdlbnQ6CisKKwluZXRzbm1wX2RzX3NldF9zdHJpbmcoTkVUU05NUF9EU19BUFBMSUNBVElPTl9JRCwgTkVUU05NUF9EU19BR0VOVF9YX1NPQ0tFVCwgIi90bXAvYWdlbnR4Iik7CisKKypiZWZvcmUqIHlvdSBjYWxsIGluaXRfYWdlbnQoKS4KKworIDwvcHJlPgorCis8YSBuYW1lPSJpbnN0YWxsIj48L2E+PGgyPmluc3RhbGw8L2gyPgorPHByZT4gSU5TVEFMTF9QUkVGSVggZ29lcyBiZWZvcmUgZXZlcnl0aGluZy4uIHNvLCB3aXRoIHRoZSBkZWZhdWx0cywganVzdAorc2V0dGluZyBJTlNUQUxMX1BSRUZJWD0vdG1wIHdvdWxkIHJlc3VsdCBpbiAvdG1wL3Vzci9sb2NhbC4uIAorc28gSU5TVEFMTF9QUkVGSVg9L3RtcCBwcmVmaXg9L3VzciBleGVjX3ByZWZpeD0vdXNyIHdvdWxkIGdvIGludG8gL3RtcC91c3IKKyA8L3ByZT4KKworPGEgbmFtZT0iZGlzYWJsZSI+PC9hPjxoMj5kaXNhYmxlPC9oMj4KKzxwcmU+IElmIHlvdSBhcmUgdXNpbmcgbmV0LXNubXAgVmVyc2lvbiA+PSA1LjEsIHRoZW4gdGhlIGZvbGxvd2luZyBjb25maWd1cmUKK29wdGlvbnMgbWF5IGJlIHVzZWZ1bCB0byB5b3U6CisKKyAgLS1kaXNhYmxlLWFnZW50ICAgICAgICAgICAgICAgICBEbyBub3QgYnVpbGQgdGhlIGFnZW50IChzbm1wZCkuCisgIC0tZGlzYWJsZS1hcHBsaWNhdGlvbnMgICAgICAgICAgRG8gbm90IGJ1aWxkIHRoZSBhcHBzIChzbm1wZ2V0LCAuLi4pLgorICAtLWRpc2FibGUtbWFudWFscyAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIHRoZSBtYW51YWxzLgorICAtLWRpc2FibGUtc2NyaXB0cyAgICAgICAgICAgICAgIERvIG5vdCBpbnN0YWxsIHRoZSBzY3JpcHRzIChtaWIyYywgLi4uKS4KKyAgLS1kaXNhYmxlLW1pYnMgICAgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCB0aGUgbWliIGZpbGVzLgorICAtLWRpc2FibGUtbWliLWxvYWRpbmcgICAgICAgICAgICBEbyBub3QgaW5jbHVkZSBjb2RlIHRoYXQgcGFyc2VzIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pcHVsYXRlcyB0aGUgbWliIGZpbGVzLgorIDwvcHJlPgorCis8YSBuYW1lPSJlcnJvcnMiPjwvYT48aDI+ZXJyb3JzPC9oMj4KKzxwcmU+IGZyb20gUkZDIDM0MTY6CisKKyAgICAgICAgICAgICAgICAgICBub0Vycm9yKDApLAorICAgICAgICAgICAgICAgICAgIHRvb0JpZygxKSwKKyAgICAgICAgICAgICAgICAgICBub1N1Y2hOYW1lKDIpLCAgICAgIC0tIGZvciBwcm94eSBjb21wYXRpYmlsaXR5CisgICAgICAgICAgICAgICAgICAgYmFkVmFsdWUoMyksICAgICAgICAtLSBmb3IgcHJveHkgY29tcGF0aWJpbGl0eQorICAgICAgICAgICAgICAgICAgIHJlYWRPbmx5KDQpLCAgICAgICAgLS0gZm9yIHByb3h5IGNvbXBhdGliaWxpdHkKKyAgICAgICAgICAgICAgICAgICBnZW5FcnIoNSksCisgICAgICAgICAgICAgICAgICAgbm9BY2Nlc3MoNiksCisgICAgICAgICAgICAgICAgICAgd3JvbmdUeXBlKDcpLAorICAgICAgICAgICAgICAgICAgIHdyb25nTGVuZ3RoKDgpLAorICAgICAgICAgICAgICAgICAgIHdyb25nRW5jb2RpbmcoOSksCisgICAgICAgICAgICAgICAgICAgd3JvbmdWYWx1ZSgxMCksCisgICAgICAgICAgICAgICAgICAgbm9DcmVhdGlvbigxMSksCisgICAgICAgICAgICAgICAgICAgaW5jb25zaXN0ZW50VmFsdWUoMTIpLAorICAgICAgICAgICAgICAgICAgIHJlc291cmNlVW5hdmFpbGFibGUoMTMpLAorICAgICAgICAgICAgICAgICAgIGNvbW1pdEZhaWxlZCgxNCksCisgICAgICAgICAgICAgICAgICAgdW5kb0ZhaWxlZCgxNSksCisgICAgICAgICAgICAgICAgICAgYXV0aG9yaXphdGlvbkVycm9yKDE2KSwKKyAgICAgICAgICAgICAgICAgICBub3RXcml0YWJsZSgxNyksCisgICAgICAgICAgICAgICAgICAgaW5jb25zaXN0ZW50TmFtZSgxOCkKKyA8L3ByZT4KKworPGEgbmFtZT0iYml0cyI+PC9hPjxoMj5iaXRzPC9oMj4KKzxwcmU+IFNOTVB2MSB1c2UgQklUIFNUUklOR3MgKFJGQyAxMjEyLCA1LjEuMSk6CisKKyAgICAgICAgICAoMykgIEFuIG9iamVjdCB3aXRoIEJJVCBTVFJJTkcgc3ludGF4IGNvbnRhaW5pbmcgbm8gbW9yZSB0aGFuCisgICAgICAgICAgICAgICAzMiBiaXRzIGJlY29tZXMgYW4gSU5URUdFUiBkZWZpbmVkIGFzIGEgc3VtOyBvdGhlcndpc2UgaWYKKyAgICAgICAgICAgICAgIG1vcmUgdGhhbiAzMiBiaXRzIGFyZSBwcmVzZW50LCB0aGUgb2JqZWN0IGJlY29tZXMgYW4KKyAgICAgICAgICAgICAgIE9DVEVUIFNUUklORywgd2l0aCB0aGUgYml0cyBudW1iZXJlZCBmcm9tIGxlZnQtdG8tcmlnaHQsCisgICAgICAgICAgICAgICBpbiB3aGljaCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYml0cyBvZiB0aGUgbGFzdCBvY3RldCBtYXkKKyAgICAgICAgICAgICAgIGJlICJyZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSIuCisKK1NOTVB2MiBhbmQgYmV5b25kIHVzZXMgQklUUyAoUkZDIDM0MTcsIDguMSk6CisKKyAgICgzKSAgIFdoZW4gZW5jb2RpbmcgYW4gb2JqZWN0IHdob3NlIHN5bnRheCBpcyBkZXNjcmliZWQgdXNpbmcgdGhlCisgICAgICAgICBCSVRTIGNvbnN0cnVjdCwgdGhlIHZhbHVlIGlzIGVuY29kZWQgYXMgYW4gT0NURVQgU1RSSU5HLCBpbgorICAgICAgICAgd2hpY2ggYWxsIHRoZSBuYW1lZCBiaXRzIGluICh0aGUgZGVmaW5pdGlvbiBvZikgdGhlIGJpdHN0cmluZywKKyAgICAgICAgIGNvbW1lbmNpbmcgd2l0aCB0aGUgZmlyc3QgYml0IGFuZCBwcm9jZWVkaW5nIHRvIHRoZSBsYXN0IGJpdCwKKyAgICAgICAgIGFyZSBwbGFjZWQgaW4gYml0cyA4IChoaWdoIG9yZGVyIGJpdCkgdG8gMSAobG93IG9yZGVyIGJpdCkgb2YKKyAgICAgICAgIHRoZSBmaXJzdCBvY3RldCwgZm9sbG93ZWQgYnkgYml0cyA4IHRvIDEgb2YgZWFjaCBzdWJzZXF1ZW50CisgICAgICAgICBvY3RldCBpbiB0dXJuLCBmb2xsb3dlZCBieSBhcyBtYW55IGJpdHMgYXMgYXJlIG5lZWRlZCBvZiB0aGUKKyAgICAgICAgIGZpbmFsIHN1YnNlcXVlbnQgb2N0ZXQsIGNvbW1lbmNpbmcgd2l0aCBiaXQgOC4gIFJlbWFpbmluZyBiaXRzLAorICAgICAgICAgaWYgYW55LCBvZiB0aGUgZmluYWwgb2N0ZXQgYXJlIHNldCB0byB6ZXJvIG9uIGdlbmVyYXRpb24gYW5kCisgICAgICAgICBpZ25vcmVkIG9uIHJlY2VpcHQuCisgPC9wcmU+CisKKzxhIG5hbWU9ImVtYmVkZGVkIj48L2E+IDxoMj5lbWJlZGRlZCBwZXJsPC9oMj4KKzxwcmU+IEFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gc25tcGQuY29uZjoKKyAKKyAgIHBlcmwgZG8gIi9wYXRoL3RvL3BlcmxfbW9kdWxlLnBsIgorCisKK1RvIHRlc3Q6CisKKzEpIFRyeSBzdGFyaW5nIHVwIHNubXBkLCBsaWtlIHNvOiAnc25tcGQgLURwZXJsJy4gQ2hlY2sgeW91ciBsb2cgZmlsZXMgZm9yOgorCisgIHBlcmw6IGluaXRpYWxpemluZyBwZXJsICgvdG1wL3NubXBfcGVybC5wbCkKKyAgc3RhcnRpbmcgcGVybF9tb2R1bGUucGwKKyAgcGVybF9tb2R1bGUucGwgbG9hZGVkIG9rCisgIHJlZ2lzdGVyaW5nIGF0IG5ldFNubXAuOTk5CisKK0lmIHlvdSBnZXQ6CisKKyAgcGVybDogaW5pdGlhbGl6aW5nIHBlcmwgKC91c3IvbG9jYWwvc2hhcmUvc25tcC9zbm1wX3BlcmwucGwpCisgIENhbid0IG9wZW4gcGVybCBzY3JpcHQgIi91c3IvbG9jYWwvc2hhcmUvc25tcC9zbm1wX3BlcmwucGwiOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CisgIGVtYmVkZGVkIHBlcmwgc3VwcG9ydCBmYWlsZWQgdG8gaW5pdGFsaXplCisKK1RoZW4geW91IG5lZWQgdG8gbG9jYXRlIHNubXBfcGVybC5wbCwgYW5kIHB1dCBpdCBpbiB0aGUgY29ycmVjdCBwYXRoLCBPUiBwdXQKK3RoZSBwYXRoIGluIHlvdXIgc25tcGQuY29uZjoKKworCXBlcmxJbml0RmlsZSAvdG1wL3NubXBfcGVybC5wbAorCisKKzIpIE9uY2UgaXQncyBsb2FkZWQgb2ssIHRyeSBhIHdhbGs6CisKKwlzbm1wd2FsayAtdjJjIC1jIHB1YmxpYyBsb2NhbGhvc3QgbmV0U25tcC45OTkKKworWW91IHNob3VsZCBzZWUgc29tZXRoaW5nIGxpa2UgdGhpcyBpbiB5b3VyIGxvZ3M6CisKKyByZWZzOiBOZXRTTk1QOjphZ2VudDo6bmV0c25tcF9taWJfaGFuZGxlciwgTmV0U05NUDo6YWdlbnQ6OnJlZ2luZm8sIE5ldFNOTVA6OmFnZW50OjpuZXRzbm1wX2FnZW50X3JlcXVlc3RfaW5mbywgTmV0U05NUDo6YWdlbnQ6Om5ldHNubXBfcmVxdWVzdF9pbmZvUHRyCitwcm9jZXNzaW5nIGEgcmVxdWVzdCBvZiB0eXBlIDE2MQorICAgcHJvY2Vzc2luZyByZXF1ZXN0IG9mIG5zVHJhbnNhY3Rpb25FbnRyeS4zCisgICAgLjEuMy42LjEuNC4xLjgwNzIuOTk5LjEuMi4xIC0+IGhlbGxvIHdvcmxkCisgICBmaW5pc2hlZCBwcm9jZXNzaW5nCisKKzMpIElmIG5vdCwgbWF5YmUgY2hlY2sgL3BhdGgvdG8vcGVybF9tb2R1bGUucGwgYW5kIG1ha2Ugc3VyZSBpdCBpcyBleGVjdXRhYmxlLgorCitIb3BlIHRoYXQgaGVscHMuCisKKyA8L3ByZT4KKworPGEgbmFtZT0ic211eCI+PC9hPiA8aDI+U01VWDwvaDI+Cis8cHJlPiBUbyB0dXJuIG9mZiBTTVVYIHdoZW4geW91IGRvbid0IGhhdmUgdGhlIG9wdGlvbnMgb2YgcmVjb21waWxpbmcgZnJvbSBzb3VyY2UKK3RvIGRpc2FibGUgU01VWCBzdXBwb3J0LCB5b3UgaGF2ZSB0byBnaXZlIGl0IGFuIGludmFsaWQgSVAgYWRkcmVzcyB0byBiaW5kCit0by4gVGhpcyBtYXkgYmUgT1Mgc3BlY2lmaWMuIE9uIExpbnV4LCBpZiBJIHB1dCB0aGlzIGluIG15IHNubXBkLmNvbmY6CisKKwlzbXV4c29ja2V0IDEuMC4wLjAKKworSSBnZXQgYW4gZXJyb3IgYXQgc3RhcnR1cCwgYW5kIGxzb2Ygb3IgbmV0c3RhdCBzaG93IHRoYXQgc25tcGQgaXMgbm8gbG9uZ2VyCitsaXN0ZW50aW5nIG9uIHBvcnQgMTk5LiBJZiB5b3UgZ2V0IGFuZCBlcnJvciBtZXNzYWdlIGFib3V0IHRoZSBzbXV4c29ja2V0Cit0b2tlbiBub3QgYmVpbmcgcmVjb25nbml6ZWQsIHRoZW4geW91J3JlIG91dCBvZiBsdWNrLiBZb3UnbGwgaGF2ZSB0byByZWNvbXBpbGUKK2Zyb20gc291cmNlIChvciBqdXN0IHVzZSBsb2NhbCBmaXJld2FsbCBydWxlcyB0byBibG9jayBjb25uZWN0aW9ucyB0byBwb3J0CisxOTkpLgorIDwvcHJlPgorCis8YSBuYW1lPSJlbnRpZCI+PC9hPiA8aDI+RW50ZXJwcmlzZSBPSUQ8L2gyPgorPHByZT4gRnJvbTogRGF2ZSBTaGllbGQsIFJPYmVydCBTdG9yeQorCitSZWNlbnQgVmVyc2lvbnMgKDUueCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQorSWYgeW91IHdhbnQgdG8gKmp1c3QqIGNoYW5nZSB0aGUgc3lzT2JqZWN0SUQgbnVtYmVyaW5nLAorKGFuZCBsZWF2ZSB0aGUgbm90aWZpY2F0aW9ucyB1c2luZyB0aGUgTmV0LVNOTVAgZW50ZXJwcmlzZSBPSUQpCit0aGVuIHVzZSAgLS13aXRoLWVudGVycHJpc2Utc3lzb2lkCitPciB5b3UgY291bGQganVzdCB1c2UgdGhlIHNubXBkLmNvbmYgZGlyZWN0aXZlICdzeXNvYmplY3RpZCcKK3RvIHNldCB0aGlzIGF0IHJ1biB0aW1lLgorCisKK0lmIHlvdSB3YW50IHRvICpqdXN0KiBjaGFuZ2UgZW50ZXJwcmlzZS1zcGVjaWZpYyBub3RpZmljYXRpb24gT0lECisoYW5kIGxlYXZlIHRoZSBzeXNPYmplY3RJRCB1c2luZyB0aGUgTmV0LVNOTVAgdmFsdWVzKQordGhlbiB1c2UgIC0td2l0aC1lbnRlcnByaXNlLW5vdGlmaWNhdGlvbi1vaWQKKworCitJZiB5b3Ugd2FudCB0byBjaGFuZ2UgKmJvdGgqIG9mIHRoZXNlLAordGhlbiB1c2UgLS13aXRoLWVudGVycHJpc2Utb2lkCisKK09sZGVyIFZlcnNpb25zICg0LjIueCkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0luIG9sZGVyIHZlcnNpb24sIHlvdSBoYXZlIHRvIG1hbnVhbGwgdXBkYXRlIHRoZSB2ZXJzaW9uX2lkIGluCithZ2VudC9hZ2VudF90cmFwLmM6ODAKKworICAgb2lkIHZlcnNpb25faWRbXSAgICA9IHsgRVhURU5TSUJMRU1JQiwgQUdFTlRJRCwgT1NUWVBFIH07CisKKyA8L3ByZT4KKworPGEgbmFtZT0iYXV0b2RlcHMiPjwvYT4gPGgyPkF1dG9tYXRpYyBkZXBlbmRlbmNpZXM8L2gyPgorPHByZT4gRm9yIGF1dG8tZGVwZW5kZW5jaWVzLCBhZGQgdGhlIGZvbGxvd2luZyB0byB5b3VyIE1ha2VmaWxlOgorCisjCisjIEJ1aWxkIHJ1bGVzCisjCislLmQgOiAlLmMKKwlAZWNobyAiR2VuZXJhdGluZyBtYWtlZmlsZSAkQCAuLi4iCisJQHNldCAtZTsgJChDQykgLU0gJChDT1BUUykgJChDRkxBR1MpICQoQ1BQRkxBR1MpICQ8IFwKKwl8IHNlZCAncy9cKCQqXClcLm9bIDpdKi9cMS5vICRAIDogL2cnID4gJEA7IFwKKwlbIC1zICRAIF0gfHwgJChSTSkgJChSTUZMQUdTKSAkQAorCitpbmNsdWRlICQoU09VUkNFUzouYz0uZCkKKworIDwvcHJlPgorCis8YSBuYW1lPSJjcm9zcyI+PC9hPiA8aDI+Q3Jvc3MgY29tcGlsaW5nPC9oMj4KKzxwcmU+IEZyb20gdGhlIG5ldC1zbm1wIElOU1RBTEwgZmlsZToKKworIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQorCitTcGVjaWZ5aW5nIHRoZSBTeXN0ZW0gVHlwZQorPT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgVGhlcmUgbWF5IGJlIHNvbWUgZmVhdHVyZXMgYGNvbmZpZ3VyZScgY2FuIG5vdCBmaWd1cmUgb3V0CithdXRvbWF0aWNhbGx5LCBidXQgbmVlZHMgdG8gZGV0ZXJtaW5lIGJ5IHRoZSB0eXBlIG9mIGhvc3QgdGhlIHBhY2thZ2UKK3dpbGwgcnVuIG9uLiAgVXN1YWxseSBgY29uZmlndXJlJyBjYW4gZmlndXJlIHRoYXQgb3V0LCBidXQgaWYgaXQgcHJpbnRzCithIG1lc3NhZ2Ugc2F5aW5nIGl0IGNhbiBub3QgZ3Vlc3MgdGhlIGhvc3QgdHlwZSwgZ2l2ZSBpdCB0aGUKK2AtLWhvc3Q9VFlQRScgb3B0aW9uLiAgVFlQRSBjYW4gZWl0aGVyIGJlIGEgc2hvcnQgbmFtZSBmb3IgdGhlIHN5c3RlbQordHlwZSwgc3VjaCBhcyBgc3VuNCcsIG9yIGEgY2Fub25pY2FsIG5hbWUgd2l0aCB0aHJlZSBmaWVsZHM6CisgICAgIENQVS1DT01QQU5ZLVNZU1RFTQorCitTZWUgdGhlIGZpbGUgYGNvbmZpZy5zdWInIGZvciB0aGUgcG9zc2libGUgdmFsdWVzIG9mIGVhY2ggZmllbGQuICBJZgorYGNvbmZpZy5zdWInIGlzbid0IGluY2x1ZGVkIGluIHRoaXMgcGFja2FnZSwgdGhlbiB0aGlzIHBhY2thZ2UgZG9lc24ndAorbmVlZCB0byBrbm93IHRoZSBob3N0IHR5cGUuCisKKyAgIElmIHlvdSBhcmUgYnVpbGRpbmcgY29tcGlsZXIgdG9vbHMgZm9yIGNyb3NzLWNvbXBpbGluZywgeW91IGNhbiBhbHNvCit1c2UgdGhlIGAtLXRhcmdldD1UWVBFJyBvcHRpb24gdG8gc2VsZWN0IHRoZSB0eXBlIG9mIHN5c3RlbSB0aGV5IHdpbGwKK3Byb2R1Y2UgY29kZSBmb3IgYW5kIHRoZSBgLS1idWlsZD1UWVBFJyBvcHRpb24gdG8gc2VsZWN0IHRoZSB0eXBlIG9mCitzeXN0ZW0gb24gd2hpY2ggeW91IGFyZSBjb21waWxpbmcgdGhlIHBhY2thZ2UuCisKKyAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0KKworVGhlIG1vc3QgaW1wb3J0YW50IGNvbmZpZ3VyZSBvcHRpb25zIGFyZToKKworCS0td2l0aC1jYz1bY3Jvc3MtY29tcGlsZXJdCisJLS13aXRoLWxkPVtjcm9zcy1saW5rZXJdCisJLS10YXJnZXQ9W3RhcmdldC1lbnZpcm9ubWVudF0KKwktLXdpdGgtZW5kaWFubmVzcz1bYmlnfGxpdHRsZV0KKworT3RoZXIgcG90ZW50aWFsbHkgdXNlZnVsIG9wdGlvbnM6CisKKwktLXdpdGgtY2ZsYWdzPSIuLi4iCisJLS13aXRoLWxkbGFncz0iLi4uIgorCS0td2l0aC1hcj0vcGF0aC9hcgorCisJLS1lbmFibGUtbWluaS1hZ2VudAorCS0tZW5hYmxlLXNoYXJlZD0ibm8iCisJLS13aXRob3V0LXBpYworCitUd28gc2ltcGxlIGV4YW1wbGVzIG9mIGNyb3NzLWNvbXBpbGluZzoKKworLi9jb25maWd1cmUgLS10YXJnZXQ9cHBjLWxpbnV4IC0td2l0aC1jYz1wcGNfNDA1LWdjYyAtLXdpdGgtZW5kaWFubmVzcz1iaWcKKworLi9jb25maWd1cmUgLS10YXJnZXQ9cG93ZXJwYy1zbm1jLWxpbnV4LWdudSAtLWJ1aWxkPWkzODYtcmVkaGF0LWxpbnV4IFwKKyAgICAgICAgLS13aXRoLWVuZGlhbm5lc3M9YmlnCisKK0EgbW9yZSBjb21wbGV4IGV4YW1wbGUgaW52b2x2ZXMgc2V0dGluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIGFsbAordGhlIGZsYWdzIGZvciB0aGUgdG9vbHMgbmVlZGVkIGZvciB0aGUgY3Jvc3MgY29tcGlsZToKKworICAgZXhwb3J0IFRPT0xQQVRIPS9vcHQvaGFyZGhhdC9kZXZraXQvcHBjLzQwNQorICAgZXhwb3J0IFBBVEg9JFRPT0xQQVRIL2JpbjokUEFUSAorICAgZXhwb3J0IENGTEFHUz0nIC1nIC1mUElDIC1tc29mdC1mbG9hdCAtRF9TT0ZUX0ZMT0FUIC1EbGludXggLW1jcHU9NDAzJworICAgZXhwb3J0IENQUEZMQUdTPSctSSRUT09MUEFUSC9pbmNsdWRlIC1JJFRPT0xQQVRIL3RhcmdldC91c3IvaW5jbHVkZScKKyAgIGV4cG9ydCBBU0ZMQUdTPSctZyAtZ3N0YWJzJworICAgZXhwb3J0IExERkxBR1M9Jy1XbCwtc29uYW1lLC1CZHluYW1pYyAtbGMnIAorICAgZXhwb3J0IExJQj0nYXIgcmN1JyAKKworICAgLi9jb25maWd1cmUgLS1idWlsZD1pNjg2LXBjLWxpbnV4LWdudSAgLS1ob3N0PXBvd2VycGMgXAorICAgICAgICAgICAtLXRhcmdldD1wb3dlcnBjLWhhcmRoYXQtbGludXgtZ251IC0td2l0aC1lbmRpYW5uZXNzPWJpZworCisKKworIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLSAtIC0gLQorCitUaGUgbWliZ3JvdXAgc2VjdGlvbiBpcyB0aGUgbW9zdCBPUyBzcGVjaWZpYyBwYXJ0IG9mIHRoZSBhZ2VudC4gSXQncyBsaWtlbHkKK3RoYXQgeW91IHdpbGwgaGF2ZSB0byByZW1vdmUgc29tZSBvZiB0aGVtLiBZb3UganVzdCBuZWVkIHRvIGZpZ3VyZSBvdXQgd2hpY2gKK29uZXMgdG8gcmVtb3ZlLiAKKworRm9yIGV4YW1wbGUsIGFnZW50L21pYmdyb3VwL21pYklJL3RjcFRhYmxlLmMgaXMgYSBjb21tb24gbW9kdWxlIHRoYXQgZG9lc24ndAord29yayBvbiBuZXcgcGxhdGZvcm1zLiBTbyBpZiBpdCBpc24ndCB3b3JraW5nLCBvbWl0IGl0IGR1cmluZyBjb25maWd1cmUsIGxpa2UKK3NvOgorCisJLi9jb25maWd1cmUgLS13aXRoLW91dC1taWItbW9kdWxlcz1taWJJSS90Y3BUYWJsZQorCisKK0FsdGVybmF0aXZlbHksIHlvdSBjb3VsZCB3b3JrIHRoZSBvdGhlciB3YXkuIFN0YXJ0IHdpdGggYSBtaW5pbWFsCitjb25maWd1cmF0aW9uOgorCisJLi9jb25maWd1cmUgLS1lbmFibGUtbWluaS1hZ2VudAorCithbmQgdGhlbiBzdGFydCBhZGRpbmcgTUlCIG1vZHVsZXMgb25lLWJ5LW9uZToKKworCS4vY29uZmlndXJlIC0tZW5hYmxlLW1pbmktYWdlbnQKKyAgICAgICAgICAgICAgICAgICAgLS13aXRoLW1pYi1tb2R1bGVzPW1pYklJL3N5c3RlbV9taWIsbWliSUkvc3lzT1JUYWJsZQorCisKKyA8L3ByZT4KKworPGEgbmFtZT0ic3RhdGljIj48L2E+IDxoMj5TdGF0aWMgbGlua2luZzwvaDI+Cis8cHJlPiBtWGF1cmVsaXU6IEkgd2FudCB0byBjb21waWxlIHRoZSA1LjEgc25tcHRyYXBkIGJpbmFyeSB3aXRoIHN0YXRpY2FsbHkgbGlua2VkIGxpYnJhcmllcy4uIENhbiBhbnlvbmUgaGVscCBtZSB3aXRoIHRoaXM/IElzIGl0IGp1c3QgYSBzaW1wbGUgY29uZmlndXJlIHN3aXRjaAorcnN0b3J5OiBtWGF1cmVsaXU6IHlvdSB3YW50IHN0YXRpYyBzbm1wIGxpYnJhcmllcywgb3IgdG90YWxseSBzdGF0aWMgKHN5c3RlbSBsaWJyYXJpZXMgdG9vKT8KK21YYXVyZWxpdTogdG90YWxseSBzdGF0aWMuLiBldmVyeXRoaW5nIGluIG9uZSBleGVjdXRhYmxlCittWGF1cmVsaXU6IGFjdHVhbGx5LCBob3cgZG8gaSBkbyBib3RoIHdheXM/Cityc3Rvcnk6IGZvciBzbm1wIGxpYnMsIHRyeSAnY29uZmlndXJlIC0tZW5hYmxlLXNoYXJlZD1ubycuLiB0aGF0IHdvbid0IGJ1aWxkIHRoZSBzaGFyZWQgbGlicmFyaWVzCityc3Rvcnk6ICh0aG91Z2ggaWYgeW91IGhhdmUgcHJldmlvdXMgdmVyc2lvbnMgb2YgbmV0LXNubXAgbGlicmFyaWVzIGluc3RhbGxlZCwgdGhlIGxpbmtlciBtaWdodCBwaWNrIHRob3NlIHVwIGFuZCB0cnkgYW5kIHVzZSB0aGVtKQorcnN0b3J5OiBmb3IgdG90YWxseSBzdGF0aWMsIHlvdSdsbCBoYXZlIHRvIHR3ZWFrIHRoZSBNYWtlZmlsZQorcnN0b3J5OiBhZGQgLUJzdGF0aWMgdG8gTERGTEFHUworCitbbm90ZTogYWN0dWFsbHksIGZvciB0b3RhbGx5IHN0YXRpYywgJ2NvbmZpZ3VyZSAtLXdpdGgtbGRmbGFncz0tQnN0YXRpYyddCisgPC9wcmU+CisKKzxhIG5hbWU9InJlYWRmZHMiPjwvYT4gPGgyPnJlYWRmZHM8L2gyPgorPHByZT4gPiBjYW4geW91IHBsZWFzZSB0ZWxsIG1lIHRoZSBtZWFuaW5nIG9mIHRoZSB0aGlyZCBhcmd1bWVudC4gb2J2aW91c2x5IHRoZSAKKz4gZmlyc3QgcGFyYW1ldGVyIHRvIHJlZ2lzdGVyX3JlYWRmZCBpcyBhIGZpbGUgZGVzY3JpcHRvciBhbmQgc2Vjb25kIGlzIHRoZSAKKz4gY2FsbGJhY2sgZnVuY3Rpb24uCisKK0NvcnJlY3QuCitUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGFyYml0cmFyeSBkYXRhIHRoYXQgeW91IGNhbiBzcGVjaWZ5IHdoZW4geW91CityZWdpc3RlciB0aGUgZmlsZSBkZXNjcmlwdG9yLCBhbmQgd2lsbCB0aGVuIGJlIHBhc3NlZCB0byB0aGUgY2FsbGJhY2sKK2Z1bmN0aW9uIHdoZW4gaXQncyBpbnZva2VkLgorCisKK1NvIGlmIHlvdSB3ZXJlIGxpc3RlbmluZyBvbiB0d28gc2VwYXJhdGUgc29ja2V0cywgZm9yIHZlcnkgc2ltaWxhcgordHlwZXMgb2YgZGF0YSwgdGhlbiB5b3UgY291bGQgdXNlIHRoZSBzYW1lIGNhbGxiYWNrIGZvciBib3RoIGFuZAordXNlIHRoaXMgdGhpcmQgcGFyYW1ldGVyIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlbToKKworCisJZmQxID0gb3BlbiggIi9wcm9jL3R3ZWVkbGVkdW0iICk7CisJZmQyID0gb3BlbiggIi9wcm9jL3R3ZWVkbGVkZWUiICk7CisKKwlyZWdpc3Rlcl9yZWFkZmQoIGZkMSwgd2hvX2Jyb2tlX3RoZV9yYXR0bGUoKSwgInR3ZWVkbGVkZWUiICk7CisJcmVnaXN0ZXJfcmVhZGZkKCBmZDIsIHdob19icm9rZV90aGVfcmF0dGxlKCksICJ0d2VlZGxlZHVtIiApOworCisKK3ZvaWQKK3dob19icm9rZV90aGVfcmF0dGxlKCBpbnQgZmQsIHZvaWQgKmRhdGEgKQoreworICAgIGNoYXIgKmhlX2RpZCA9IChjaGFyICopZGF0YTsKKworICAgIHByaW50ZigiJXMgYnJva2UgdGhlIHJhdHRsZSFcbiIsIGhlX2RpZCApOworfQorCisgPC9wcmU+CisKKzxhIG5hbWU9InNoYXJpbmciPjwvYT4gPGgyPnNoYXJpbmcgZGF0YTwvaDI+Cis8cHJlPiBJZiB0d28gbW9kdWxlcyBhcmUgY29tcGlsZWQgaW50byB0aGUgc2FtZSBhZ2VudC9zdWJhZ2VudCwgdGhlbiBqdXN0IHVzZSBhCitub3JtYWwgQyBnbG9iYWwgdmFyLiBObyBuZWVkIHRvIGludm9sdmUgbmV0LXNubXAgaW4gdGhlIHByb2Nlc3MuCisKK2lmIHRoZXkgYXJlIGRpZmZlcmVudCBzdWItYWdlbnRzLCB5b3UgYXJlIGJldHRlciBvZmYgdXNpbmcgdHJhZGl0aW9uIElQQworbWVjaGFuaXNtcy4gdGhlcmUgaXMgbm8gbmV0LXNubXAgYXBpIGZvciBzaGFyaW5nIGRhdGEgYmV0d2VlbiBzdWJhZ2VudHMuCisKK1RoYXQgc2FpZCwgKklGKiB5b3Ugb25seSBuZWVkIHRoZSBkYXRhIGR1cmluZyBwcm9jZXNzaW5nIG9mIEdFVCByZXF1ZXN0cywgb3IKK3doZW4geW91IGFyZW4ndCBwcm9jZXNzaW5nIGEgcmVxdWVzdCBhdCBhbGwsIHlvdSBzZW5kIGEgc25tcCByZXF1ZXN0IHRvIHRoZQorbWFzdGVyLCB3aGljaCB3aWxsIHF1ZXJ5IHRoZSBvdGhlciBzdWJhZ2VudC4gSWYgeW91IGFyZSBwcm9jZXNzaW5nIGEgR0VUCityZXF1ZXN0IGFuZCBhcmUgY29tcGlsZWQgaW50byB0aGUgbWFzdGVyLCB5b3Ugd2lsbCBoYXZlIHRvIGRlbGVnYXRlIHRoZQorY3VycmVudCByZXF1ZXN0KS4KKworSXQncyBhIGxpdHRsZSBpbmVmZmljaWVudCwgY29tcGFyZWQgdG8gZGlyZWN0IGNvbW11bmljYXRpb24gdy90aGUgb3RoZXIKK3N1YmFnZW50IGFuZCBpdCAqd2lsbCBub3QqIHdvcmsgZHVyaW5nIHNldCBwcm9jZXNzaW5nLgorIDwvcHJlPgorCis8YSBuYW1lPSJ0b2tlbnMiPjwvYT4gPGgyPkRlYnVnIFRva2VuczwvaDI+Cis8cHJlPiBTb21lIG9mIHRoZSBtb3JlIGNvbW1vbiBvbmVzIGFyZToKKworICAgQWdlbnQ6IGFnZW50LCBhZ2VudHgsIGRsbW9kLCBoYW5kbGVyLCBoZWxwZXIsIHNubXBkLCB0cmFwLCB0YWJsZQorICAgTUlCczogaW5pdF9taWIsIG1pYl9pbml0LCBwYXJzZS1maWxlLCBwYXJzZS1taWJzCisgICBBcHBzOiByZWFkX2NvbmZpZworCitBZGQgdGhlbSB0byB5b3VyIHNubXAuY29uZiBsaWtlIHNvOgorCisgICAjIG9wdGlvbmFsbHkgdHVybiBvbiB0aW1lIHN0YW1wcworICAgbG9nVGltZXN0YW1wIHRydWUKKyAgIGRvRGVidWdnaW5nIDEKKyAgIGRlYnVnVG9rZW5zIGFnZW50eC9jb25maWcKKworSWYgeW91IHB1dCB0aGVtIGluIGEgZGlmZmVyZW50IGNvbmYgZmlsZSwgbGlrZSBzbm1wZC5jb25mIG9yIG15YXBwLmNvbmYsCitwcmVmaXggZWFjaCB3aXRoICdbc25tcF0nLCBsaWtlIHNvOgorCisgICBbc25tcF0gZG9EZWJ1Z2dpbmcgMQorCisKK1RoaXMgbGlzdCB3YXMgZ2VuZXJhdGVkIGJ5IHJ1bm5pbmcgdGhlIGZvbGxvd2luZyBjb21tYW5kIGluIHRoZSBtYWluIENWUyBicmFuY2g6CisKK2ZpbmQgLiAtbmFtZSBcIiouY1wiIC1wcmludCB8IHhhcmdzIGdyZXAgREVCVUdNU0dUIHwgZ3JlcCBcIiB8IGN1dCAtZiAyIC1kXCIgfCBzb3J0IC11CisKK2FkZAorYWdlbnRfaGFuZGxlcgorYWdlbnRfcmVnaXN0cnkKK2FnZW50X3NldAorYWdlbnR4CithZ2VudHhfYnVpbGQKK2FnZW50eF9idWlsZF92YXJiaW5kCithZ2VudHgvY29uZmlnCithZ2VudHgvY29uZmlnL3JldHJpZXMKK2FnZW50eC9jb25maWcvdGltZW91dAorYWdlbnR4L21hc3RlcgorYWdlbnR4L3N1YmFnZW50CithZ2VudHgvc3ViZ2FlbnQKK2Fzbl9yZWFsbG9jCithdXRvX25saXN0CitidWlsZF9vaWRfbm9hbGxvYworYnVpbGRfb2lkX3NlZ21lbnQKK2NhbGxiYWNrCitjYWxsYmFja19jbGVhcgorY2hlY2tfZ2V0bmV4dF9yZXN1bHRzCitjbGVhcl9uc2FwX2xpc3QKK2NvbXBhcmU6aW5kZXgKK2NvbXBhcmV4Citjb250YWluZXIKK2NvbnRhaW5lcl9pdGVyYXRvcgorY29udGFpbmVyX2l0ZXJhdG9yOnJlc3VsdHMKK2NvbnRhaW5lcjpudWxsOgorY29udGFpbmVyOm51bGw6ZmluZAorY29udGFpbmVyOm51bGw6ZmluZF9uZXh0Citjb250YWluZXI6bnVsbDpmb3JfZWFjaAorY29udGFpbmVyOm51bGw6ZnJlZQorY29udGFpbmVyOm51bGw6Z2V0X251bGwKK2NvbnRhaW5lcjpudWxsOmdldF9udWxsX2ZhY3RvcnkKK2NvbnRhaW5lcjpudWxsOmdldF9udWxsX25vYWxsb2MKK2NvbnRhaW5lcjpudWxsOmluc2VydAorY29udGFpbmVyOm51bGw6cmVtb3ZlCitjb250YWluZXI6bnVsbDpzaXplCitjb250YWluZXJfcmVnaXN0cnkKK2RhZW1vbml6ZQorZGVpbml0X3VzbV9wb3N0X2NvbmZpZworZGVsYXllZF9pbnN0YW5jZQorZGxtb2QKK2R1bXBfZXRpbWVsaXN0CitlbmNvZGVfa2V5Y2hhbmdlCitleGFtcGxlCitleGFtcGxlX2RhdGFfc2V0CitleGFtcGxlX25vdGlmaWNhdGlvbgorZXhhbXBsZV9zY2FsYXJfaW50CitmaXh1cF9taWJfZGlyZWN0b3J5CitnZW5lcmF0ZV9LdQorZ2VuZXJhdGVfa3VsCitnZXRfbWliX2RpcmVjdG9yeQoraGFuZGxlcjpjYWxsaW5nCitoYW5kbGVyOmluamVjdAoraGFuZGxlcjo6cmVnaXN0ZXIKK2hhbmRsZXJfcmVnaXN0cnkKK2hhbmRsZXI6cmV0dXJuZWQKK2hlYWRlcl9jb21wbGV4CitoZWFkZXJfY29tcGxleF9hZGRfZGF0YQoraGVhZGVyX2NvbXBsZXhfZHVtcAoraGVhZGVyX2NvbXBsZXhfZXh0cmFjdF9lbnRyeQoraGVhZGVyX2NvbXBsZXhfZ2VuZXJhdGVfb2lkCitoZWFkZXJfY29tcGxleF9nZW5lcmF0ZV92YXJvaWQKK2hlYWRlcl9jb21wbGV4X3BhcnNlX29pZAoraGVhZGVyX2NvbXBsZXhfdGVzdAoraGVscGVyOmJhYnlfc3RlcHMKK2hlbHBlcjpjYWNoZV9oYW5kbGVyCitoZWxwZXI6ZGVidWcKK2hlbHBlcjppbnN0YW5jZQoraGVscGVyOm1mZAoraGVscGVyOm51bGwKK2hlbHBlcjpyZWFkX29ubHkKK2hlbHBlcjpyb3dfbWVyZ2UKK2hlbHBlcjpzY2FsYXIKK2hlbHBlcjpzY2FsYXJfZ3JvdXAKK2hlbHBlcjpzZXJpYWxpemUKK2hlbHBlcjpzdGFzaF9jYWNoZQoraGVscGVyOnRhYmxlCitoZWxwZXI6d2F0Y2hlcgoraGVscGVyOndhdGNoZXI6c3BpbmxvY2sKK2hlbHBlcjp3YXRjaGVyOnRpbWVzdGFtcAoraG9zdC9ocl9kZXZpY2UKK2hvc3QvaHJfZGlzaworaG9zdC9ocl9maWxlc3lzCitob3N0L2hyX2luc3QKK2hvc3QvaHJfbmV0d29yaworaG9zdC9ocl9wYXJ0aXRpb24KK2hvc3QvaHJfcHJpbnQKK2hvc3QvaHJfcHJvYworaG9zdC9ocl9zdG9yYWdlCitob3N0L2hyX3N3aW5zdAoraG9zdC9ocl9zd3J1bgoraG9zdC9ocl9zd3J1bjo6R2V0TmV4dEhSX1NXUnVuCitob3N0L2hyX3N5c3RlbQoraHJfcHJvYworaW5pdGlhbGl6ZV90YWJsZV9pcENpZHJSb3V0ZVRhYmxlCitpbml0aWFsaXplX3RhYmxlX210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUKK2luaXRpYWxpemVfdGFibGVfbXRlRXZlbnRUYWJsZQoraW5pdGlhbGl6ZV90YWJsZV9uZXRTbm1wSG9zdHNUYWJsZQoraW5pdGlhbGl6ZV90YWJsZV9ubG1Mb2dUYWJsZQoraW5pdGlhbGl6ZV90YWJsZV9ubG1Mb2dWYXJpYWJsZVRhYmxlCitpbml0aWFsaXplX3RhYmxlX25zTW9kdWxlVGFibGUKK2luaXRpYWxpemVfdGFibGVfbnNUcmFuc2FjdGlvblRhYmxlCitpbml0X21pYgoraW5pdF91c20KK2luamVjdEhhbmRsZXIKK2tlcm5lbF9zdW5vczUKK2tzbQorbGNkX2dldF9lbmdpbmV0aW1lCitsY2RfZ2V0X2VuZ2luZXRpbWVfZXgKK2xjZF9zZXRfZW5naW5ldGltZQorbG9nX25vdGlmaWNhdGlvbgorbWQ1CittZmQKK21pYklJL2F0CittaWJJSS9pY21wCittaWJJSS9pbnRlcmZhY2VzCittaWJJSS9pcAorbWliSUkvaXB2NgorbWliSUkvbXRhX3NlbmRtYWlsLmM6bXRhX3NlbmRtYWlsX3BhcnNlX2NvbmZpZworbWliSUkvbXRhX3NlbmRtYWlsLmM6b3Blbl9zZW5kbWFpbHN0CittaWJJSS9tdGFfc2VuZG1haWwuYzpyZWFkX3NlbmRtYWlsY2YKK21pYklJL3NubXBfbWliCittaWJJSS9zeXNPUlRhYmxlCittaWJJSS90Y3BTY2FsYXIKK21pYklJL3RjcFRhYmxlCittaWJJSS91ZHBTY2FsYXIKK21pYklJL3VkcFRhYmxlCittaWJJSS92YWNtX3ZhcnMKK21pYklJL3Zhcl9yb3V0ZQorbWliX2luaXQKK210ZV9kaXNjbworbXRlRXZlbnRUYWJsZTpzZW5kX2V2ZW50cworbXRlT2JqZWN0c1RhYmxlCittdGVUcmlnZ2VyQm9vbGVhblRhYmxlCittdGVUcmlnZ2VyRGVsdGFUYWJsZQorbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlCittdGVUcmlnZ2VydGFibGUKK210ZVRyaWdnZXJUYWJsZQorbXRlVHJpZ2dlclRlc3QKK210ZVRyaWdnZXJUZXN0OnNlbmRfbXRlX3RyYXAKK210ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZQorbmV0c25tcF9hYWw1cHZjCituZXRzbm1wX2FnZW50X2NoZWNrX3BhY2tldAorbmV0c25tcF9kZXJlZ2lzdGVyX2FnZW50X25zYXAKK25ldHNubXBfZHNfaGFuZGxlX2NvbmZpZworbmV0c25tcF9kc19zZXRfYm9vbGVhbgorbmV0c25tcF9kc19zZXRfaW50CituZXRzbm1wX2RzX3NldF9zdHJpbmcKK25ldHNubXBfZHNfc2V0X3ZvaWQKK25ldHNubXBfZHNfdG9nZ2xlX2Jvb2xlYW4KK25ldHNubXBfaW5zdGFuY2VfY291bnRlcjMyX2hhbmRsZXIKK25ldHNubXBfaW5zdGFuY2VfaW50X2hhbmRsZXIKK25ldHNubXBfaW5zdGFuY2VfbG9uZ19oYW5kbGVyCituZXRzbm1wX2luc3RhbmNlX3Vsb25nX2hhbmRsZXIKK25ldHNubXBfaXB4CituZXRzbm1wX3JlZ2lzdGVyX2FnZW50X25zYXAKK25ldHNubXBfcmVnaXN0ZXJfbWliX3RhYmxlX3JvdworbmV0c25tcF9zb2NrYWRkcl9pbgorbmV0c25tcF9zb2NrYWRkcl9pbjYKK25ldHNubXBfc29ja2FkZHJfaXB4CituZXRzbm1wX3RhYmxlX2RhdGFfc2V0CituZXRzbm1wX3RjcAorbmV0c25tcF90Y3A2CituZXRzbm1wX3VkcAorbmV0c25tcF91ZHA2CituZXRzbm1wX3VkcDZfZ2V0U2VjTmFtZQorbmV0c25tcF91ZHA2X3BhcnNlX3NlY3VyaXR5CituZXRzbm1wX3VkcF9nZXRTZWNOYW1lCituZXRzbm1wX3VkcF9wYXJzZV9zZWN1cml0eQorbmV0c25tcF91bml4CituZXRzbm1wX3VuaXhfZ2V0U2VjTmFtZQorbmV0c25tcF91bml4X3BhcnNlX3NlY3VyaXR5CituZXRzbm1wX3VuaXhfdHJhbnNwb3J0CituZXRzdGF0OmlmCitub3RpZmljYXRpb25fbG9nCituc0NhY2hlU2NhbGFycworbnNEZWJ1Z1NjYWxhcnMKK29iamVjdF9tb25pdG9yCitvbGRfYXBpCitvdXRwdXQKK292ZXJyaWRlCitwYXJzZS1maWxlCitwYXJzZS1taWJzCitwYXJzZV9vaWQKK3BhcnNlX29pZF9pbmRleGVzCitwZXJsCitwcm9jCitwcm94eQorcHJveHlfYXJncworcHJveHlfY29uZmlnCitwcm94eV9pbml0CityZWFkX2NvbmZpZworcmVhZF9jb25maWdfY29weV93b3JkCityZWFkX2NvbmZpZ19maWxlcworcmVhZF9jb25maWc6Zm9yd2FyZAorcmVhZF9jb25maWc6aW5pdG1pYgorcmVhZF9jb25maWdfcmVhZF9kYXRhCityZWFkX2NvbmZpZ19yZWFkX21lbW9yeQorcmVhZF9jb25maWdfcmVhZF9vYmppZAorcmVhZF9jb25maWdfcmVhZF9vY3RldF9zdHJpbmcKK3JlYWRfY29uZmlnX3N0b3JlX2RhdGFfcHJlZml4CityZWFkX2NvbmZpZzp0cmFwaGFuZGxlCityZWdpc3Rlcl9leGNlcHRmZAorcmVnaXN0ZXJfaW5kZXgKK3JlZ2lzdGVyX21pYgorcmVnaXN0ZXJfcmVhZGZkCityZWdpc3Rlcl9zaWduYWwKK3JlZ2lzdGVyX3dyaXRlZmQKK3JlcG9ydAorcmVzdWx0cworc2NhbGFyX2ludAorc2NhcGkKK3Njb3BlZFBEVV9wYXJzZQorc2VuZF9ub3RpZmljYXRpb25zCitzZXNzX2FzeW5jX3NlbmQKK19zZXNzX29wZW4KK3Nlc3NfcHJvY2Vzc19wYWNrZXQKK3Nlc3NfcmVhZAorc2Vzc19yZXNlbmQKK3Nlc3Nfc2VsZWN0CitzZXR0aW5nIGF1dGggdHlwZTogXAorc2lnbmFsCitzbXV4CitzbXV4X2NvbmYKK3NtdXhfaW5pdAorc211eC9zbm1wX2JncAorc211eC9zbm1wX29zcGYKK3NtdXgvc25tcF9yaXAyCitzbm1wX2FnZW50Citzbm1wX2FsYXJtCitzbm1wX2FwaQorc25tcF9idWlsZAorc25tcF9jbGVhbl9wZXJzaXN0ZW50Citzbm1wX2NvbmZpZworc25tcGQKK3NubXBkL21haW4KK3NubXBkX3BvcnRzCitzbm1wZF9yZWdpc3Rlcl9hcHBfY29uZmlnX2hhbmRsZXIKK3NubXBkL3NlbGVjdAorc25tcEVuZ2luZQorc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZQorc25tcE5vdGlmeUZpbHRlclRhYmxlCitzbm1wTm90aWZ5VGFibGUKK3NubXBfcGFyc2UKK3NubXBfcGFyc2VfYXJncworc25tcF9wYXJzZV9vaWQKK3NubXBfcGR1X3JlYWxsb2NfcmJ1aWxkCitzbm1wX3NhdmVfcGVyc2lzdGVudAorc25tcF9zZW5kCitzbm1wX3Nlc3NfYWRkCitzbm1wX3Nlc3NfY2xvc2UKK3NubXBfc2Vzc19vcGVuCitzbm1wU2V0U2VyaWFsTm8KK3NubXBfc3RvcmUKK3NubXBUYXJnZXRBZGRyRW50cnkKK3NubXBUYXJnZXRQYXJhbXNFbnRyeQorc25tcHRyYXBkCitzbm1wdjMKK3NubXB2M19wYXJzZQorc3ByaW50X2J5X3R5cGUKK3N0YXNoX2NhY2hlCitzdWJ0cmVlCit0YWJsZV9hcnJheQordGFibGVfYXJyYXk6Z2V0Cit0YWJsZV9hcnJheTpncm91cAordGFibGVfZGF0YV9hZGRfZGF0YQordGFibGVfaXRlcmF0b3IKK3RhYmxlX3NldF9hZGRfcm93Cit0YWtlX3NuYXBzaG90Cit0YXJnZXRfY291bnRlcnMKK3RhcmdldF9zZXNzaW9ucwordGRvbWFpbgordGVzdGhhbmRsZXIKK3Rlc3RoYW5kbGVyX3RhYmxlCit0cmFuc3BvcnRfY2FsbGJhY2sKK3RyYXAKK3RyYXBzZXNzCit0dW5uZWwKK3VjZERlbW9QdWJsaWMKK3VjZC1zbm1wL2Rpc2sKK3VjZC1zbm1wL2Rpc2s6Cit1Y2Qtc25tcC9tZW1vcnkKK3VjZC1zbm1wL3Bhc3MKK3VjZC1zbm1wL3Bhc3NfcGVyc2lzdAordWNkLXNubXAvcHJvYwordWNkLXNubXAvdmVyc2lvbmluZm8KK3VjZC1zbm1wL3Ztc3RhdF9haXg0LmM6dXBkYXRlX3N0YXRzCit1Y2Qtc25tcC92bXN0YXRfZHluaXguYzp1cGRhdGVfc3RhdHMKK3VjZC1zbm1wL3Ztc3RhdF9ocHV4LmM6dXBkYXRlX3N0YXRzCit1Y2Qtc25tcC92bXN0YXRfc29sYXJpczIuYzp1cGRhdGVfc3RhdHMKK3VubGlua190cmVlCit1bmxvYWQtbWliCit1bnJlZ2lzdGVyX2V4Y2VwdGZkCit1bnJlZ2lzdGVyX3JlYWRmZAordW5yZWdpc3Rlcl9zaWduYWwKK3VucmVnaXN0ZXJfd3JpdGVmZAordXNtCit1c21Vc2VyCit1dGlsX2Z1bmNzCit2YWNtOmNoZWNrU3VidHJlZQordmFjbTpnZXRWaWV3Cit2ZXJzaW9uaW5mbwordm1zdGF0Cit5eXlpbmplY3RIYW5kbGVyCisgPC9wcmU+CisKKzxhIG5hbWU9InN0ZXBzIj48L2E+IDxoMj5CYWJ5IFN0ZXBzIEZsb3c8L2gyPgorPHByZT4gICAgIC8qKgorICAgICAqIEJhYnkgU3RlcHMgRmxvdyBkaWFncmFtIChyZXYgMjAwMy4wOS4yOS4xMzMwKQorICAgICAqCisgICAgICogTGVnZW5kOiAodGVzdCkgW29wdGlvbmFsXSAmbHQ7cmVxdWlyZWQ+CisgICAgICoKKyAgICAgKiBPTEQgICAgICAgICAgICAgIE5FVworICAgICAqID09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgICAqICsrKyAgICAgICAgICAgW3ByZV9yZXF1ZXN0XQorICAgICAqICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAocm93IGV4aXN0cz8pIE4gLT4ocm93X2NyZWF0aW9uKSBOID4tLT4rCisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCBZICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwmbHQ7LS0tLS0tLS0tLS0tLS0tLS0tKyAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgXHwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFx8LworICAgICAqIFJFU0VSVkUxICAmbHQ7b2JqZWN0X3N5bnRheF9jaGVja3M+ICAgICAgICAgICAgICAgICAgICAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAKKyAgICAgKiAgICAgICAgICAgICAgICAgIChlcnI/KSAgWSA+LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPisKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICBcfC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHwvCisgICAgICogKysrICAgICAgICAgIChyb3cgZXhpc3RlZD8pIE4gLS0tPltyb3dfY3JlYXRpb25dICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwmbHQ7LS0tLS0tLS0tLS0tLS1OIChlcnI/KSAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCBZICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgW3Jvd19jcmVhdGlvbl9jbGVhbnVwXS0tLT4rCisgICAgICogICAgICAgICAgICAgICAgICAgXHwvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogUkVTRVJWRVIyICAgICBbdW5kb19zZXR1cF0gICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICAgICogICAgICAgICAgICAgICAgICAoZXJyPykgIFkgLS0tPi0tLS0tLS0tPi0tLS0tLS0tLT4rICB8CisgICAgICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFx8LworICAgICAqIEFDVElPTiAgICAgICAgJmx0O3NldF92YWx1ZXM+ICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAqICAgICAgICAgICAgICAgICAgKGVycj8pICBZID4tLS0tLS0tLS0rICAgICAgICAgICBcfC8gfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfCAgfAorICAgICAqICsrKyAgICAgICAgW2NvbnNpc3RlbmN5X2NoZWNrc10gICAgICB8ICAgICAgICAgICAgfCAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIFx8LyAgICAgICAgICAgfCAgfAorICAgICAqIFVORE8gICAgICAgICAgICAgKGVycj8pICBZID4tLS0tLS0tW3VuZG9dLS0tLS0tLS0+KyAgfAorICAgICAqICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAqICAgICAgICAgICAgW3JldmVyc2libGVfY29tbWl0XSAgICAgICAgICAgICAgICAgICAgfCAgfAorICAgICAqICsrKyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBcfC8KKyAgICAgKiAgICAgICAgICAgICAgICAgIChlcnI/KSAgWSA+LS1bcmV2ZXJzZV9jb21taXRdICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiBDT01NSVQgICAgICAgICZsdDtmaW5hbF9jb21taXQ+ICAgICAgfCAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgIChlcnI/KSAgWSA+LS1bbG9nIG1zZ10gICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgIHwgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBcfC8gICAgICAgICAgICAgXHwvIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAmbHQ7LS0tLS0tLS0tLS0mbHQ7Ky0tLSZsdDstLS0tLS0tLS0tLSsgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICBcfC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiBGUkVFICAgICAgICAgIFt1bmRvX2NsZWFudXBdICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXHwvCisgICAgICogICAgICAgICAgICAgICAgICAgIHwmbHQ7LS0tLS0tLS0tLS0tLS0mbHQ7LS0tLS0tLS0tLS0tLS0tLS0rCisgICAgICogICAgICAgICAgICAgICAgICAgXHwvCisgICAgICogICAgICAgICAgICAgICBbcG9zdF9yZXF1ZXN0XQorICAgICAqLworIDwvcHJlPgorCis8aHI+Cis8dGFibGUgd2lkdGg9IjEwMCUiPgorPHRyPjx0ZCBhbGlnbj1sZWZ0PgorPGJyPlBhZ2UKKzwhLS0gQ3JlYXRlZDogVGh1IEp1bCAyNCAxMDowODoyNiBNRVQgRFNUIDE5OTcgLS0+Cis8IS0tIGhobXRzIHN0YXJ0IC0tPgorTGFzdCBtb2RpZmllZDogV2VkIE1hciAxMiAxMzo0OTozMiBQU1QgMjAwMworPCEtLSBoaG10cyBlbmQgLS0+Cis8L3RkPjx0ZCBhbGlnbj1yaWdodD4KKzxicj5Qb3dlcmVkIGJ5OgorPEEgaHJlZj0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldCI+CisgICAgICA8SU1HIHNyYz0iaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9zZmxvZ28ucGhwP2dyb3VwX2lkPTEyNjk0JmFtcDt0eXBlPTEiIHdpZHRoPSI4OCIgaGVpZ2h0PSIzMSIgYm9yZGVyPSIwIiBhbHQ9IlNvdXJjZUZvcmdlIExvZ28iPjwvQT4KKworPC90ZD48L3RyPjwvdGFibGU+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvaHRtbGhlbHAvRkFRLmh0bWwgYi93aW4zMi9kaXN0L2h0bWxoZWxwL0ZBUS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MzVhY2UKLS0tIC9kZXYvbnVsbAorKysgYi93aW4zMi9kaXN0L2h0bWxoZWxwL0ZBUS5odG1sCkBAIC0wLDAgKzEsMzM3NSBAQAorPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgYmFja2dyb3VuZD0idWNkLXNubXAtYmczLmdpZiI+Cis8dGl0bGU+TkVULVNOTVAgRkFRPC90aXRsZT4KKzxkaXYgYWxpZ249Y2VudGVyPgorPGgxPkZyZXF1ZW50bHkgQXNrZWQgUXVlc3Rpb25zIChGQVEpIGZvciB0aGUgTmV0LVNOTVAgcGFja2FnZTwvaDE+CitGQVEgTWFpbnRhaW5lcjogRGF2ZSBTaGllbGQ8YnI+CitFbWFpbDogPGEgaHJlZj0ibWFpbHRvOm5ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQiPm5ldC1zbm1wLWNvZGVyc0BsaXN0LnNvdXJjZWZvcmdlLm5ldDwvYT48YnI+Cis8L2Rpdj4KKzxocj4KKzxoMj5UYWJsZSBvZiBDb250ZW50czwvaDI+Cis8L3VsPjxsaT48Yj5HRU5FUkFMPC9iPjx1bD4KKzxsaT4gPGEgaHJlZj0iI1doYXRfaXNfaXRfIj5XaGF0IGlzIGl0PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doZXJlX2Nhbl9JX2dldF9pdF8iPldoZXJlIGNhbiBJIGdldCBpdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2RvY3VtZW50YXRpb25faXNfYXZhaWxhYmxlXyI+V2hhdCBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNBcmVfdGhlcmVfYmluYXJpZXNfYXZhaWxhYmxlXyI+QXJlIHRoZXJlIGJpbmFyaWVzIGF2YWlsYWJsZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3NfdGhlX2RpZmZlcmVuY2VfYmV0d2Vlbl9VQ0RfU05NUF9hbmRfTmV0X1NOTVBfIj5XaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBVQ0QtU05NUCBhbmQgTmV0LVNOTVA/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9vcGVyYXRpbmdfc3lzdGVtc19kb2VzX2l0X3J1bl9vbl8iPldoYXQgb3BlcmF0aW5nIHN5c3RlbXMgZG9lcyBpdCBydW4gb24/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9oYXBwZW5zX2lmX21pbmVfaXNuX3RfbGlzdGVkXyI+V2hhdCBoYXBwZW5zIGlmIG1pbmUgaXNuJ3QgbGlzdGVkPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0RvZXNfaXRfcnVuX29uX1dpbmRvd3NfIj5Eb2VzIGl0IHJ1biBvbiBXaW5kb3dzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19kb19JX2ZpbmRfb3V0X2Fib3V0X25ld19yZWxlYXNlc18iPkhvdyBkbyBJIGZpbmQgb3V0IGFib3V0IG5ldyByZWxlYXNlcz88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfY2FuX0lfZmluZF9vdXRfd2hhdF9vdGhlcl9wZW9wbGVfYXJlX2RvaW5nXyI+SG93IGNhbiBJIGZpbmQgb3V0IHdoYXQgb3RoZXIgcGVvcGxlIGFyZSBkb2luZz88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9zdWJtaXRfYV9wYXRjaF9vcl9idWdfcmVwb3J0XyI+SG93IGRvIEkgc3VibWl0IGEgcGF0Y2ggb3IgYnVnIHJlcG9ydD88L2E+Cis8bGk+IDxhIGhyZWY9IiNDYW5fSV9yZXVzZV90aGVfY29kZV9pbl9teV9jb21tZXJjaWFsX2FwcGxpY2F0aW9uXyI+Q2FuIEkgcmV1c2UgdGhlIGNvZGUgaW4gbXkgY29tbWVyY2lhbCBhcHBsaWNhdGlvbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3NfdGhlX2RpZmZlcmVuY2VfYmV0d2Vlbl9TTk1Qdl9fX1NOTVB2X19hbmRfU05NUHZfXyI+V2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU05NUHYxLCBTTk1QdjIgYW5kIFNOTVB2Mz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2FyZV9hbGxfdGhlc2VfZGlmZmVyZW50X1NOTVB2X19zX2FueXdheV8iPldoYXQgYXJlIGFsbCB0aGVzZSBkaWZmZXJlbnQgU05NUHYyJ3MgYW55d2F5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doaWNoX3ZlcnNpb25zX29mX1NOTVBfYXJlX3N1cHBvcnRlZF9pbl90aGlzX3BhY2thZ2VfIj5XaGljaCB2ZXJzaW9ucyBvZiBTTk1QIGFyZSBzdXBwb3J0ZWQgaW4gdGhpcyBwYWNrYWdlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0Nhbl9JX3VzZV9TTk1Qdl9fcmVxdWVzdHNfd2l0aF9hbl9TTk1Qdl9fTUlCX19vcl92aWNlX3ZlcnNhX18iPkNhbiBJIHVzZSBTTk1QdjEgcmVxdWVzdHMgd2l0aCBhbiBTTk1QdjIgTUlCIChvciB2aWNlIHZlcnNhKT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGVyZV9jYW5fSV9maW5kX21vcmVfaW5mb3JtYXRpb25fYWJvdXRfbmV0d29ya19tYW5hZ2VtZW50XyI+V2hlcmUgY2FuIEkgZmluZCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG5ldHdvcmsgbWFuYWdlbWVudD88L2E+Cis8bGk+IDxhIGhyZWY9IiNJc191Y2Rfc25tcF90aHJlYWRfc2FmZV8iPklzIHVjZC1zbm1wIHRocmVhZCBzYWZlPzwvYT4KKzwvdWw+PGxpPjxiPkFQUExJQ0FUSU9OUzwvYj48dWw+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9hZGRfYV9NSUJfIj5Ib3cgZG8gSSBhZGQgYSBNSUI/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2RvX0lfYWRkX2FfTUlCX3RvX3RoZV90b29sc18iPkhvdyBkbyBJIGFkZCBhIE1JQiB0byB0aGUgdG9vbHM/PC9hPgorPGxpPiA8YSBocmVmPSIjV2h5X2Nhbl90X0lfc2VlX2FueXRoaW5nX2Zyb21fdGhlX2FnZW50XyI+V2h5IGNhbid0IEkgc2VlIGFueXRoaW5nIGZyb20gdGhlIGFnZW50PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9jYW5fdF9JX3NlZV92YWx1ZXNfaW5fdGhlX19JTlNFUlRfRU5URVJQUklTRV9IRVJFX190cmVlXyI+V2h5IGNhbid0IEkgc2VlIHZhbHVlcyBpbiB0aGUgPElOU0VSVCBFTlRFUlBSSVNFIEhFUkU+IHRyZWU/PC9hPgorPGxpPiA8YSBocmVmPSIjUmVxdWVzdHNfYWx3YXlzX3NlZW1fdG9fdGltZW91dF9fYW5kX2Rvbl90X2dpdmVfbWVfYW55dGhpbmdfYmFja19fX1doeV8iPlJlcXVlc3RzIGFsd2F5cyBzZWVtIHRvIHRpbWVvdXQsIGFuZCBkb24ndCBnaXZlIG1lIGFueXRoaW5nIGJhY2suICBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9jYW5fc2VlX3RoZV9zeXN0ZW1fZ3JvdXBfX2J1dF9ub3RoaW5nX2Vsc2VfX19XaHlfIj5JIGNhbiBzZWUgdGhlIHN5c3RlbSBncm91cCwgYnV0IG5vdGhpbmcgZWxzZS4gIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfYWdlbnRfd29ya2VkX2Zvcl9hX3doaWxlX190aGVuX3N0b3BwZWRfcmVzcG9uZGluZ19fX1doeV8iPlRoZSBhZ2VudCB3b3JrZWQgZm9yIGEgd2hpbGUsIHRoZW4gc3RvcHBlZCByZXNwb25kaW5nLiAgV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1JlcXVlc3RpbmdfYW5fb2JqZWN0X2ZhaWxzX3dpdGhfX1Vua25vd25fT2JqZWN0X0lkZW50aWZpZXJfX19XaHlfIj5SZXF1ZXN0aW5nIGFuIG9iamVjdCBmYWlscyB3aXRoICJVbmtub3duIE9iamVjdCBJZGVudGlmaWVyIiAgV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9kb19JX2dldF9fbm9TdWNoTmFtZV9fd2hlbl9hc2tpbmdfZm9yX19zeXNVcFRpbWVfX19vcl9zaW1pbGFyX18iPldoeSBkbyBJIGdldCAibm9TdWNoTmFtZSIgd2hlbiBhc2tpbmcgZm9yICJzeXNVcFRpbWUiIChvciBzaW1pbGFyKT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfZG9fSV9zb21ldGltZXNfZ2V0X19FbmRfb2ZfTUlCX193aGVuX3dhbGtpbmdfYV90cmVlX19hbmRfc29tZXRpbWVzX25vdF8iPldoeSBkbyBJIHNvbWV0aW1lcyBnZXQgIkVuZCBvZiBNSUIiIHdoZW4gd2Fsa2luZyBhIHRyZWUsIGFuZCBzb21ldGltZXMgbm90PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfY2Fubm90X3NldF9hbnlfdmFyaWFibGVzX2luX3RoZV9NSUJfIj5JIGNhbm5vdCBzZXQgYW55IHZhcmlhYmxlcyBpbiB0aGUgTUlCLjwvYT4KKzxsaT4gPGEgaHJlZj0iI1ZhcmlhYmxlc19zZWVtX3RvX2Rpc2FwcGVhcl93aGVuX0lfdHJ5X3RvX3NldF90aGVtX19fV2h5XyI+VmFyaWFibGVzIHNlZW0gdG8gZGlzYXBwZWFyIHdoZW4gSSB0cnkgdG8gc2V0IHRoZW0uICBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9zdGlsbF9jYW5fdF9jaGFuZ2Vfc3lzTG9jYXRpb25fX3Rob3VnaF90aGVfYWNjZXNzX3NldHRpbmdzX2FsbG93Ij5JIHN0aWxsIGNhbid0IGNoYW5nZSBzeXNMb2NhdGlvbiwgdGhvdWdoIHRoZSBhY2Nlc3Mgc2V0dGluZ3MgYWxsb3c8L2E+Cis8YSBocmVmPSIjSV9zdGlsbF9jYW5fdF9jaGFuZ2Vfc3lzTG9jYXRpb25fX3Rob3VnaF90aGVfYWNjZXNzX3NldHRpbmdzX2FsbG93Ij4gICAgICAgaXQuICBXaHkgbm90PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfZ2V0X2FuX2Vycm9yX3doZW5fdHJ5aW5nX3RvX3NldF9hX25lZ2F0aXZlX3ZhbHVlX19fd2h5XyI+SSBnZXQgYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gc2V0IGEgbmVnYXRpdmUgdmFsdWUgLSB3aHk/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9nZXRfYW5fZXJyb3Jfd2hlbl90cnlpbmdfdG9fZ2V0X2Ffc3RyaW5nX2luZGV4ZWRfdGFibGVfdmFsdWVfX193aHlfIj5JIGdldCBhbiBlcnJvciB3aGVuIHRyeWluZyB0byBnZXQgYSBzdHJpbmctaW5kZXhlZCB0YWJsZSB2YWx1ZSAtIHdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9zZW5kX3RyYXBzX2FuZF9ub3RpZmljYXRpb25zXyI+SG93IGRvIEkgc2VuZCB0cmFwcyBhbmQgbm90aWZpY2F0aW9ucz88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9oYW5kbGVfdHJhcHNfYW5kX25vdGlmaWNhdGlvbnNfIj5Ib3cgZG8gSSBoYW5kbGUgdHJhcHMgYW5kIG5vdGlmaWNhdGlvbnM/PC9hPgorPGxpPiA8YSBocmVmPSIjTXlfdHJhcGhhbmRsZXJfc2NyaXB0X2RvZXNuX3Rfd29ya193aGVuX3J1bl9saWtlX3RoaXNfX193aHlfbm90XyI+TXkgdHJhcGhhbmRsZXIgc2NyaXB0IGRvZXNuJ3Qgd29yayB3aGVuIHJ1biBsaWtlIHRoaXMgLSB3aHkgbm90PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1RoZV91Y2RTaHV0ZG93bl90cmFwX09JRF9yZWNlaXZlZF9ieV9teV9tYW5hZ2VyX2lzX3dyb25nX19XaHlfIj5UaGUgdWNkU2h1dGRvd24gdHJhcCBPSUQgcmVjZWl2ZWQgYnkgbXkgbWFuYWdlciBpcyB3cm9uZy4gV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9kb2VzX3NubXB0cmFwZF9jb21wbGFpbl9hYm91dF9BZ2VudFhfIj5XaHkgZG9lcyBzbm1wdHJhcGQgY29tcGxhaW4gYWJvdXQgQWdlbnRYPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19kb19JX3VzZV9TTk1Qdl9fIj5Ib3cgZG8gSSB1c2UgU05NUHYzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19iaWdfY2FuX2FuX1NOTVBfcmVxdWVzdF9fb3JfcmVwbHlfX2JlXyI+SG93IGJpZyBjYW4gYW4gU05NUCByZXF1ZXN0IChvciByZXBseSkgYmU/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX21vbml0b3JfbXlfc3lzdGVtc19fZGlza19fbWVtb3J5X19ldGNfXyI+SG93IGNhbiBJIG1vbml0b3IgbXkgc3lzdGVtcyAoZGlzaywgbWVtb3J5LCBldGMpPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0FwcGxpY2F0aW9uc19jb21wbGFpbl9hYm91dF9lbnRyaWVzX2luX3lvdXJfZXhhbXBsZV9fc25tcF9jb25mX19maWxlX19fV2h5XyI+QXBwbGljYXRpb25zIGNvbXBsYWluIGFib3V0IGVudHJpZXMgaW4geW91ciBleGFtcGxlICdzbm1wLmNvbmYnIGZpbGUuICBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjT0tfX3doYXRfc2hvdWxkX0lfcHV0X2luX3NubXBfY29uZl8iPk9LLCB3aGF0IHNob3VsZCBJIHB1dCBpbiBzbm1wLmNvbmY/PC9hPgorPC91bD48bGk+PGI+UEVSTDwvYj48dWw+Cis8bGk+IDxhIGhyZWY9IiNXaGVyZV9jYW5fSV9nZXRfdGhlX3BlcmxfU05NUF9wYWNrYWdlXyI+V2hlcmUgY2FuIEkgZ2V0IHRoZSBwZXJsIFNOTVAgcGFja2FnZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9pbnN0YWxsX3RoZV9QZXJsX1NOTVBfbW9kdWxlc18iPkhvdyBkbyBJIGluc3RhbGwgdGhlIFBlcmwgU05NUCBtb2R1bGVzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0J1dF9jb21waWxpbmdfdGhpc19mYWlsc19fV2h5XyI+QnV0IGNvbXBpbGluZyB0aGlzIGZhaWxzISBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjQ29tcGlsaW5nX3RoZV9wZXJsX21vZHVsZV93b3Jrc19PS19fYnV0X19tYWtlX3Rlc3RfX2ZhaWxzX19XaHlfIj5Db21waWxpbmcgdGhlIHBlcmwgbW9kdWxlIHdvcmtzIE9LLCBidXQgJ21ha2UgdGVzdCcgZmFpbHMuIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfcGVybF9fbWFrZV90ZXN0X19mYWlsc19vbl90aGVfT0lEX3Rlc3RzX19Jc19pdF9zYWZlX3RvX2NvbnRpbnVlXyI+VGhlIHBlcmwgJ21ha2UgdGVzdCcgZmFpbHMgb24gdGhlIE9JRCB0ZXN0cy4gSXMgaXQgc2FmZSB0byBjb250aW51ZT88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX21fdHJ5aW5nX3RvX3VzZV9taWJfY19fb3JfdGttaWJfX2FuZF9pdF9jYW5fdF9sb2NhdGVfU05NUF9wbV8iPkknbSB0cnlpbmcgdG8gdXNlIG1pYjJjIChvciB0a21pYikgYW5kIGl0IGNhbid0IGxvY2F0ZSBTTk1QLnBtPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfbV90cnlpbmdfdG9fdXNlX21pYl9jX19vcl90a21pYl9fYW5kX2l0X2Nhbl90X2xvYWRfU05NUF9zb18iPkknbSB0cnlpbmcgdG8gdXNlIG1pYjJjIChvciB0a21pYikgYW5kIGl0IGNhbid0IGxvYWQgU05NUC5zbz88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX21fdHJ5aW5nX3RvX3VzZV90a21pYl9hbmRfaXRfY2FuX3RfbG9jYXRlX1RrX3BtXyI+SSdtIHRyeWluZyB0byB1c2UgdGttaWIgYW5kIGl0IGNhbid0IGxvY2F0ZSBUay5wbT88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX3ZlX2dvdF9hX3Byb2JsZW1fd2l0aF90aGVfTmV0X1NOTVBfbW9kdWxlX19fQ2FuX3lvdV9oZWxwXyI+SSd2ZSBnb3QgYSBwcm9ibGVtIHdpdGggdGhlIE5ldC1TTk1QIG1vZHVsZS4gIENhbiB5b3UgaGVscD88L2E+Cis8L3VsPjxsaT48Yj5NSUJTPC9iPjx1bD4KKzxsaT4gPGEgaHJlZj0iI1doZXJlX2Nhbl9JX2ZpbmRfYV9NSUJfY29tcGlsZXJfIj5XaGVyZSBjYW4gSSBmaW5kIGEgTUlCIGNvbXBpbGVyPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfY2FuX3RfbG9hZF9hbnlfb2ZfdGhlX21pYl9maWxlc19fYW5kX3RoZXlfc2VlbV90b19iZV9taXNzaW5nIj5JIGNhbid0IGxvYWQgYW55IG9mIHRoZSBtaWIgZmlsZXMsIGFuZCB0aGV5IHNlZW0gdG8gYmUgbWlzc2luZzwvYT4KKzxhIGhyZWY9IiNJX2Nhbl90X2xvYWRfYW55X29mX3RoZV9taWJfZmlsZXNfX2FuZF90aGV5X3NlZW1fdG9fYmVfbWlzc2luZyI+ICAgICAgIHRoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgZmlsZW5hbWUuICBXaGF0J3MgaGFwcGVuaW5nPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9hcmVuX3RfbXlfbWliX2ZpbGVzX2JlaW5nX3JlYWRfaW5fIj5XaHkgYXJlbid0IG15IG1pYiBmaWxlcyBiZWluZyByZWFkIGluPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0lfbV9nZXR0aW5nX2Fuc3dlcnNfX2J1dF90aGV5X3JlX2FsbF9udW1iZXJzX19XaHlfIj5JJ20gZ2V0dGluZyBhbnN3ZXJzLCBidXQgdGhleSdyZSBhbGwgbnVtYmVycy4gV2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfZG9lc19fQ2Fubm90X2ZpbmRfbW9kdWxlX19YWFhfTUlCX19fbWVhbl8iPldoYXQgZG9lcyAiQ2Fubm90IGZpbmQgbW9kdWxlIChYWFgtTUlCKSIgbWVhbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2Fib3V0X191bmxpbmtlZF9PSURfXyI+V2hhdCBhYm91dCAidW5saW5rZWQgT0lEIj88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfcGFyc2VyX2RvZXNuX3RfaGFuZGxlX2NvbW1lbnRzX3Byb3Blcmx5X19XaHlfbm90XyI+VGhlIHBhcnNlciBkb2Vzbid0IGhhbmRsZSBjb21tZW50cyBwcm9wZXJseS4gV2h5IG5vdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9yZXBsYWNlX01JQl92YWx1ZXNfd2l0aF9uZXdfb25lc18iPkhvdyBkbyBJIHJlcGxhY2UgTUlCIHZhbHVlcyB3aXRoIG5ldyBvbmVzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9nZXRfbW9yZV9pbmZvcm1hdGlvbl9hYm91dF90aGVzZV9NSUJfZmlsZV9wcm9ibGVtc18iPkhvdyBjYW4gSSBnZXQgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGVzZSBNSUIgZmlsZSBwcm9ibGVtcz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3NfdGhpc19hYm91dF9fdG9vX21hbnlfaW1wb3J0ZWRfc3ltYm9sc19fIj5XaGF0J3MgdGhpcyBhYm91dCAidG9vIG1hbnkgaW1wb3J0ZWQgc3ltYm9scyI/PC9hPgorPC91bD48bGk+PGI+QUdFTlQ8L2I+PHVsPgorPGxpPiA8YSBocmVmPSIjV2hhdF9NSUJzX2FyZV9zdXBwb3J0ZWRfIj5XaGF0IE1JQnMgYXJlIHN1cHBvcnRlZD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3Byb3RvY29sc19hcmVfc3VwcG9ydGVkXyI+V2hhdCBwcm90b2NvbHMgYXJlIHN1cHBvcnRlZD88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9jb25maWd1cmVfdGhlX2FnZW50XyI+SG93IGRvIEkgY29uZmlndXJlIHRoZSBhZ2VudD88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9hZGRfYV9NSUJfdG9fdGhlX2FnZW50XyI+SG93IGRvIEkgYWRkIGEgTUlCIHRvIHRoZSBhZ2VudD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3NfdGhlX2RpZmZlcmVuY2VfYmV0d2Vlbl9fZXhlY19fX19zaF9fYW5kX19wYXNzX18iPldoYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICdleGVjJywgJ3NoJyBhbmQgJ3Bhc3MnPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfc190aGVfZGlmZmVyZW5jZV9iZXR3ZWVuX0FnZW50WF9fU01VWF9hbmRfcHJveGllZF9TTk1QXyI+V2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gQWdlbnRYLCBTTVVYIGFuZCBwcm94aWVkIFNOTVA/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hhdF9hYm91dF9fZGxtb2RfX19fd2hhdF9zX3RoYXRfYWJvdXRfIj5XaGF0IGFib3V0ICdkbG1vZCcgLSB3aGF0J3MgdGhhdCBhYm91dD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGljaF9zaG91bGRfSV91c2VfIj5XaGljaCBzaG91bGQgSSB1c2U/PC9hPgorPGxpPiA8YSBocmVmPSIjQ2FuX0lfdXNlX0FnZW50WF93aGVuX3J1bm5pbmdfdW5kZXJfV2luZG93c18iPkNhbiBJIHVzZSBBZ2VudFggd2hlbiBydW5uaW5nIHVuZGVyIFdpbmRvd3M/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX3J1bl9BZ2VudFhfd2l0aF9hX2RpZmZlcmVudF9zb2NrZXRfYWRkcmVzc18iPkhvdyBjYW4gSSBydW4gQWdlbnRYIHdpdGggYSBkaWZmZXJlbnQgc29ja2V0IGFkZHJlc3M/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX2NvbWJpbmVfdHdvX2NvcGllc19vZl90aGVfX21pYl9fX3RyZWVfZnJvbV9zZXBhcmF0ZV9zdWJhZ2VudHNfIj5Ib3cgY2FuIEkgY29tYmluZSB0d28gY29waWVzIG9mIHRoZSAnbWliMicgdHJlZSBmcm9tIHNlcGFyYXRlIHN1YmFnZW50cz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3RyYXBzX2FyZV9zZW50X2J5X3RoZV9hZ2VudF8iPldoYXQgdHJhcHMgYXJlIHNlbnQgYnkgdGhlIGFnZW50PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doZXJlX2FyZV90aGVzZV90cmFwc19zZW50X3RvXyI+V2hlcmUgYXJlIHRoZXNlIHRyYXBzIHNlbnQgdG8/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX3NlbmRfYV9wYXJ0aWN1bGFyX3RyYXBfdG9fc2VsZWN0ZWRfZGVzdGluYXRpb25zXyI+SG93IGNhbiBJIHNlbmQgYSBwYXJ0aWN1bGFyIHRyYXAgdG8gc2VsZWN0ZWQgZGVzdGluYXRpb25zPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9kb2VzX2NhbGxpbmdfX3NlbmRfdl90cmFwX19nZW5lcmF0ZV9hbl9TTk1Qdl9fdHJhcF9fb3JfdmljZV92ZXJzYV9fIj5XaHkgZG9lcyBjYWxsaW5nICdzZW5kX3YydHJhcCcgZ2VuZXJhdGUgYW4gU05NUHYxIHRyYXAgKG9yIHZpY2UgdmVyc2EpPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doZW5fSV9ydW5fdGhlX2FnZW50X2l0X3J1bnNfYW5kX3RoZW5fcXVpdHNfd2l0aG91dF9zdGF5aW5nX2Fyb3VuZF9fV2h5XyI+V2hlbiBJIHJ1biB0aGUgYWdlbnQgaXQgcnVucyBhbmQgdGhlbiBxdWl0cyB3aXRob3V0IHN0YXlpbmcgYXJvdW5kLiBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjQWZ0ZXJfYV93aGlsZV90aGVfYWdlbnRfc3RvcHNfcmVzcG9uZGluZ19fYW5kX3N0YXJ0c19lYXRpbmdfQ1BVX3RpbWVfX19XaHlfIj5BZnRlciBhIHdoaWxlIHRoZSBhZ2VudCBzdG9wcyByZXNwb25kaW5nLCBhbmQgc3RhcnRzIGVhdGluZyBDUFUgdGltZS4gIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfY2FuX0lfc3RvcF9vdGhlcl9wZW9wbGVfZ2V0dGluZ19hdF9teV9hZ2VudF8iPkhvdyBjYW4gSSBzdG9wIG90aGVyIHBlb3BsZSBnZXR0aW5nIGF0IG15IGFnZW50PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9saXN0ZW5fb25fanVzdF9vbmVfcGFydGljdWxhcl9pbnRlcmZhY2VfIj5Ib3cgY2FuIEkgbGlzdGVuIG9uIGp1c3Qgb25lIHBhcnRpY3VsYXIgaW50ZXJmYWNlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19kb19JX2NvbmZpZ3VyZV9hY2Nlc3NfY29udHJvbF8iPkhvdyBkbyBJIGNvbmZpZ3VyZSBhY2Nlc3MgY29udHJvbD88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX2Rvbl90X3VuZGVyc3RhbmRfdGhlX25ld19hY2Nlc3NfY29udHJvbF9zdHVmZl9fX3doYXRfZG9lc19pdF9tZWFuXyI+SSBkb24ndCB1bmRlcnN0YW5kIHRoZSBuZXcgYWNjZXNzIGNvbnRyb2wgc3R1ZmYgLSB3aGF0IGRvZXMgaXQgbWVhbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9jb25maWd1cmVfU05NUHZfX3VzZXJzXyI+SG93IGRvIEkgY29uZmlndXJlIFNOTVB2MyB1c2Vycz88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfX2NyZWF0ZVVzZXJfX2xpbmVfZGlzYXBwZWFyc193aGVuX0lfc3RhcnRfdGhlX2FnZW50X19fV2h5XyI+VGhlICdjcmVhdGVVc2VyJyBsaW5lIGRpc2FwcGVhcnMgd2hlbiBJIHN0YXJ0IHRoZSBhZ2VudC4gIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X3NfdGhlX2RpZmZlcmVuY2VfYmV0d2Vlbl9fdmFyX3VjZF9zbm1wX2FuZF9fdXNyX2xvY2FsX3NoYXJlX3NubXBfIj5XaGF0J3MgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAvdmFyL3VjZC1zbm1wIGFuZCAvdXNyL2xvY2FsL3NoYXJlL3NubXA/PC9hPgorPGxpPiA8YSBocmVmPSIjTXlfbmV3X2FnZW50X2lzX2lnbm9yaW5nX3RoZV9vbGRfc25tcGRfY29uZl9maWxlX19XaHlfIj5NeSBuZXcgYWdlbnQgaXMgaWdub3JpbmcgdGhlIG9sZCBzbm1wZC5jb25mIGZpbGUuIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfYW1fSV9nZXR0aW5nX19Db25uZWN0aW9uX3JlZnVzZWRfXyI+V2h5IGFtIEkgZ2V0dGluZyAiQ29ubmVjdGlvbiByZWZ1c2VkIj88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX21fZ2V0dGluZ19lcnJvcnNfYWJvdXRfX2JhZF9zZWN1cml0eV9tb2RlbF9fX193aHlfIj5JJ20gZ2V0dGluZyBlcnJvcnMgYWJvdXQgImJhZCBzZWN1cml0eSBtb2RlbCIgLSB3aHk/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9tX2dldHRpbmdfZXJyb3JzX2Fib3V0X19iYWRfcHJlZml4X21hdGNoX3BhcmFtZXRlcl9fX193aHlfIj5JJ20gZ2V0dGluZyBlcnJvcnMgYWJvdXQgImJhZCBwcmVmaXggbWF0Y2ggcGFyYW1ldGVyIiAtIHdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfY2FuX3RfSV9zZWVfdmFsdWVzX2luX3RoZV9VQ0RhdmlzX19leHRlbnNpYmxlX19vcl9fZGlza19fdHJlZXNfIj5XaHkgY2FuJ3QgSSBzZWUgdmFsdWVzIGluIHRoZSBVQ0RhdmlzICdleHRlbnNpYmxlJyBvciAnZGlzaycgdHJlZXM/PC9hPgorPGxpPiA8YSBocmVmPSIjV2h5X2Nhbl90X0lfc2VlX3ZhbHVlc19pbl90aGVfVUNEYXZpc19fbWVtb3J5X19vcl9fdm1zdGF0X190cmVlXyI+V2h5IGNhbid0IEkgc2VlIHZhbHVlcyBpbiB0aGUgVUNEYXZpcyAnbWVtb3J5JyBvciAndm1zdGF0JyB0cmVlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfZG9fdGhlX0NQVV9zdGF0aXN0aWNzX21lYW5fX19pc190aGlzX3RoZV9sb2FkX2F2ZXJhZ2VfIj5XaGF0IGRvIHRoZSBDUFUgc3RhdGlzdGljcyBtZWFuIC0gaXMgdGhpcyB0aGUgbG9hZCBhdmVyYWdlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19kb19JX2dldF9wZXJjZW50YWdlX0NQVV91dGlsaXphdGlvbl91c2luZ19zc0NwdVJhd0lkbGVfIj5Ib3cgZG8gSSBnZXQgcGVyY2VudGFnZSBDUFUgdXRpbGl6YXRpb24gdXNpbmcgc3NDcHVSYXdJZGxlPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfYWJvdXRfbXVsdGlfcHJvY2Vzc29yX3N5c3RlbXNfIj5XaGF0IGFib3V0IG11bHRpLXByb2Nlc3NvciBzeXN0ZW1zPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1RoZV9zcGVlZF90eXBlX29mX215X25ldHdvcmtfaW50ZXJmYWNlc19pc193cm9uZ19fX2hvd19jYW5fSV9maXhfaXRfIj5UaGUgc3BlZWQvdHlwZSBvZiBteSBuZXR3b3JrIGludGVyZmFjZXMgaXMgd3JvbmcgLSBob3cgY2FuIEkgZml4IGl0PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1RoZV9pbnRlcmZhY2Vfc3RhdGlzdGljc19mb3JfbXlfc3ViaW50ZXJmYWNlc19hcmVfYWxsX3plcm9fX193aHlfIj5UaGUgaW50ZXJmYWNlIHN0YXRpc3RpY3MgZm9yIG15IHN1YmludGVyZmFjZXMgYXJlIGFsbCB6ZXJvIC0gd2h5PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfZG9lc19fa2xyZWFkX19fYmFkX2FkZHJlc3NfX21lYW5fIj5XaGF0IGRvZXMgImtscmVhZDogIGJhZCBhZGRyZXNzIiBtZWFuPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doYXRfZG9lc19fbmxpc3RfZXJyX19fd29tYmF0X25vdF9mb3VuZF9fX29yX3NpbWlsYXJfX21lYW5fIj5XaGF0IGRvZXMgIm5saXN0IGVycjogIHdvbWJhdCBub3QgZm91bmQiIChvciBzaW1pbGFyKSBtZWFuPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19hYm91dF9fQ2FuX3Rfb3Blbl9fZGV2X2ttZW1fXyI+SG93IGFib3V0ICJDYW4ndCBvcGVuIC9kZXYva21lbSI/PC9hPgorPGxpPiA8YSBocmVmPSIjVGhlX2FnZW50X2lzX2NvbXBsYWluaW5nX2Fib3V0X19zbm1wZF9jb25mX19fX1doZXJlX2lzX3RoaXNfIj5UaGUgYWdlbnQgaXMgY29tcGxhaW5pbmcgYWJvdXQgJ3NubXBkLmNvbmYnLiAgV2hlcmUgaXMgdGhpcz88L2E+Cis8bGk+IDxhIGhyZWY9IiNUaGVfc3lzdGVtX3VwdGltZV9fc3lzVXBUaW1lX19yZXR1cm5lZF9pc193cm9uZ18iPlRoZSBzeXN0ZW0gdXB0aW1lIChzeXNVcFRpbWUpIHJldHVybmVkIGlzIHdyb25nITwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9yZWR1Y2VfdGhlX21lbW9yeV9mb290cHJpbnRfIj5Ib3cgY2FuIEkgcmVkdWNlIHRoZSBtZW1vcnkgZm9vdHByaW50PzwvYT4KKzwvdWw+PGxpPjxiPkNPTVBJTElORzwvYj48dWw+Cis8bGk+IDxhIGhyZWY9IiNIb3dfZG9fSV9jb21waWxlX3dpdGhfX2NjX19pbnN0ZWFkX29mX19nY2NfXyI+SG93IGRvIEkgY29tcGlsZSB3aXRoICdjYycgaW5zdGVhZCBvZiAnZ2NjJz88L2E+Cis8bGk+IDxhIGhyZWY9IiNCdXRfZ2NjX2RvZXNuX3RfY29tcGlsZV9pdF9zdWNjZXNzZnVsbHlfb25fbXlfbmV3X1NvbGFyaXNfc3lzdGVtX19XaHlfbm90XyI+QnV0IGdjYyBkb2Vzbid0IGNvbXBpbGUgaXQgc3VjY2Vzc2Z1bGx5IG9uIG15IG5ldyBTb2xhcmlzIHN5c3RlbS4gV2h5IG5vdD88L2E+Cis8bGk+IDxhIGhyZWY9IiNPbl9SZWRIYXRfX19fX29yX3VwX0lfZ2V0X19fdXNyX2Jpbl9sZF9fY2Fubm90X2ZpbmRfX2xlbGZfX19XaHlfIj5PbiBSZWRIYXQgOC4wIG9yIHVwIEkgZ2V0ICIvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxlbGYiLiBXaHk/PC9hPgorPGxpPiA8YSBocmVmPSIjSV9tX2dldHRpbmdfYW5fZXJyb3JfX2F1dG9oZWFkZXJfX25vdF9mb3VuZF9fX193aGF0X3Nfd3JvbmdfIj5JJ20gZ2V0dGluZyBhbiBlcnJvciAiYXV0b2hlYWRlcjogbm90IGZvdW5kIiAtIHdoYXQncyB3cm9uZz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2Fib3V0X2FfZmFpbGVkX2RlcGVuZGVuY3lfb25fX2xpYmNyeXB0b19fX19XaGVyZV9jYW5fSV9nZXRfdGhhdF8iPldoYXQgYWJvdXQgYSBmYWlsZWQgZGVwZW5kZW5jeSBvbiAnbGliY3J5cHRvJz8gIFdoZXJlIGNhbiBJIGdldCB0aGF0PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9pc190aGVfcHJvamVjdF93b3Jrc3BhY2VfZW1wdHlfdW5kZXJfVmlzdWFsX0NfX18iPldoeSBpcyB0aGUgcHJvamVjdCB3b3Jrc3BhY2UgZW1wdHkgdW5kZXIgVmlzdWFsIEMrKz88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaHlfZG9lc19fbWFrZV90ZXN0X19za2lwX2ZpdmVfdGVzdHNfIj5XaHkgZG9lcyAnbWFrZSB0ZXN0JyBza2lwIGZpdmUgdGVzdHM/PC9hPgorPGxpPiA8YSBocmVmPSIjV2h5X2RvZXNfX21ha2VfdGVzdF9fY29tcGxhaW5fYWJvdXRfYV9waWRfZmlsZV8iPldoeSBkb2VzICdtYWtlIHRlc3QnIGNvbXBsYWluIGFib3V0IGEgcGlkIGZpbGU/PC9hPgorPC91bD48bGk+PGI+Q09ESU5HPC9iPjx1bD4KKzxsaT4gPGEgaHJlZj0iI0hvd19kb19JX3dyaXRlX0NfY29kZV90b19pbnRlZ3JhdGVfd2l0aF90aGVfYWdlbnRfIj5Ib3cgZG8gSSB3cml0ZSBDIGNvZGUgdG8gaW50ZWdyYXRlIHdpdGggdGhlIGFnZW50PzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19kb2VzX3RoZV9hZ2VudF9mZXRjaF90aGVfdmFsdWVfb2ZfYV92YXJpYWJsZV9mcm9tX3RoZV9zeXN0ZW1fIj5Ib3cgZG9lcyB0aGUgYWdlbnQgZmV0Y2ggdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUgZnJvbSB0aGUgc3lzdGVtPzwvYT4KKzxsaT4gPGEgaHJlZj0iI01pYl9jX2NvbXBsYWluc19hYm91dF9hX21pc3NpbmdfX21pYl9yZWZlcmVuY2VfX19fd2hhdF9kb2VzX3RoaXNfbWVhbl8iPk1pYjJjIGNvbXBsYWlucyBhYm91dCBhIG1pc3NpbmcgIm1pYiByZWZlcmVuY2UiIC0gd2hhdCBkb2VzIHRoaXMgbWVhbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNNaWJfY19jb21wbGFpbnNfYWJvdXRfbm90X2hhdmluZ19hX192YWxpZF9PSURfX19fd2hhdF9kb2VzX3RoaXNfbWVhbl8iPk1pYjJjIGNvbXBsYWlucyBhYm91dCBub3QgaGF2aW5nIGEgInZhbGlkIE9JRCIgLSB3aGF0IGRvZXMgdGhpcyBtZWFuPzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doeV9kb2Vzbl90X01pYl9jX2xpa2VfdGhlX01JQl9maWxlX0lfbV9naXZpbmdfaXRfIj5XaHkgZG9lc24ndCBNaWIyYyBsaWtlIHRoZSBNSUIgZmlsZSBJJ20gZ2l2aW5nIGl0PzwvYT4KKzxsaT4gPGEgaHJlZj0iI01pYl9jX2lnbm9yZXNfbXlfTUlCX2FuZF9nZW5lcmF0ZXNfYV9wYWlyX29mX19taWJfX19fY29kZV9maWxlc19fX1doeV8iPk1pYjJjIGlnbm9yZXMgbXkgTUlCIGFuZCBnZW5lcmF0ZXMgYSBwYWlyIG9mICdtaWItMicgY29kZSBmaWxlcy4gIFdoeT88L2E+Cis8bGk+IDxhIGhyZWY9IiNNaWJfY19jb21wbGFpbnNfYWJvdXRfX2NvbmZpZ3VyYXRpb25fZmlsZXNfX19XaGF0X3NfdGhpc19mb3JfIj5NaWIyYyBjb21wbGFpbnMgYWJvdXQgImNvbmZpZ3VyYXRpb24gZmlsZXMiLiBXaGF0J3MgdGhpcyBmb3I/PC9hPgorPGxpPiA8YSBocmVmPSIjV2hpY2hfbWliX2NfY29uZmlndXJhdGlvbl9maWxlX3Nob3VsZF9JX3VzZV8iPldoaWNoIG1pYjJjIGNvbmZpZ3VyYXRpb24gZmlsZSBzaG91bGQgSSB1c2U/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX2hhdmVfTWliX2NfZ2VuZXJhdGVfY29kZV9mb3JfYm90aF9zY2FsYXJzX2FuZF90YWJsZXNfIj5Ib3cgY2FuIEkgaGF2ZSBNaWIyYyBnZW5lcmF0ZSBjb2RlIGZvciBib3RoIHNjYWxhcnMgYW5kIHRhYmxlcz88L2E+Cis8bGk+IDxhIGhyZWY9IiNBcmVfdGhlcmVfYW55X2V4YW1wbGVzX19vcl9kb2N1bWVudGF0aW9uXyI+QXJlIHRoZXJlIGFueSBleGFtcGxlcywgb3IgZG9jdW1lbnRhdGlvbj88L2E+Cis8bGk+IDxhIGhyZWY9IiNJX3ZlX2NyZWF0ZWRfYV9uZXdfbW9kdWxlX3dpdGhfX21pYl9jX19idXRfaXRfZG9lc25fdF93b3JrX19fV2h5X25vdF8iPkkndmUgY3JlYXRlZCBhIG5ldyBtb2R1bGUgd2l0aCAnbWliMmMnIGJ1dCBpdCBkb2Vzbid0IHdvcmsuICBXaHkgbm90PzwvYT4KKzxsaT4gPGEgaHJlZj0iI1doZXJlX3Nob3VsZF9JX3B1dF90aGVfZmlsZXNfcHJvZHVjZWRfYnlfX21pYl9jX18iPldoZXJlIHNob3VsZCBJIHB1dCB0aGUgZmlsZXMgcHJvZHVjZWQgYnkgJ21pYjJjJz88L2E+Cis8bGk+IDxhIGhyZWY9IiNNaWJfY19vbmx5X2hhbmRsZXNfYV9zaW5nbGVfdGFibGVfaW5fbXlfTUlCX19Ib3dfY2FuX0lfZml4X3RoaXNfIj5NaWIyYyBvbmx5IGhhbmRsZXMgYSBzaW5nbGUgdGFibGUgaW4gbXkgTUlCLiBIb3cgY2FuIEkgZml4IHRoaXM/PC9hPgorPGxpPiA8YSBocmVmPSIjSG93X2Nhbl9JX3N1cHBvcnRfYV9sYXJnZV90YWJsZV9fd2l0aF9tb3JlX3RoYW5fX19fX2NvbHVtbl9vYmplY3RzXyI+SG93IGNhbiBJIHN1cHBvcnQgYSBsYXJnZSB0YWJsZSwgd2l0aCBtb3JlIHRoYW4gMjU2IGNvbHVtbiBvYmplY3RzPzwvYT4KKzxsaT4gPGEgaHJlZj0iI0hvd19jYW5fSV9nZXRfdGhlX2FnZW50X3RvX2dlbmVyYXRlX2FfdHJhcF9fb3JfaW5mb3JtX18iPkhvdyBjYW4gSSBnZXQgdGhlIGFnZW50IHRvIGdlbmVyYXRlIGEgdHJhcCAob3IgaW5mb3JtKT88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2lmX0lfbV91c2luZ19hbl9BZ2VudFhfc3ViX2FnZW50X2luc3RlYWRfIj5XaGF0IGlmIEknbSB1c2luZyBhbiBBZ2VudFggc3ViLWFnZW50IGluc3RlYWQ/PC9hPgorPC91bD48bGk+PGI+TUlTQzwvYj48dWw+Cis8bGk+IDxhIGhyZWY9IiNXaHlfYXJlX3BhY2tldHNfcmVxdWVzdGluZ190aGVfc2FtZV9pbmZvcm1hdGlvbl9sYXJnZXJfd2l0aF9VQ19EYXZpc19TTk1QXyI+V2h5IGFyZSBwYWNrZXRzIHJlcXVlc3RpbmcgdGhlIHNhbWUgaW5mb3JtYXRpb24gbGFyZ2VyIHdpdGggVUMtRGF2aXMgU05NUD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X0FTTl9fX3BhcnNlcl9pc191c2VkXyI+V2hhdCBBU04uMSBwYXJzZXIgaXMgdXNlZD88L2E+Cis8bGk+IDxhIGhyZWY9IiNXaGF0X2lzX3RoZV9PZmZpY2lhbF9TbG9nYW5fb2ZfdGhlX25ldF9zbm1wX2NvZGVyc19saXN0XyI+V2hhdCBpcyB0aGUgT2ZmaWNpYWwgU2xvZ2FuIG9mIHRoZSBuZXQtc25tcC1jb2RlcnMgbGlzdD88L2E+Cis8L3VsPjxocj48cHJlPgorCis8YSBuYW1lPSJHRU5FUkFMIj4KK0dFTkVSQUwKKz09PT09PT0KKworPGEgbmFtZT0iV2hhdF9pc19pdF8iPgorV2hhdCBpcyBpdD8KKy0tLS0tLS0tLS0KKworICAtIFZhcmlvdXMgdG9vbHMgcmVsYXRpbmcgdG8gdGhlIFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wKKyAgICBpbmNsdWRpbmc6CisKKwkqIEFuIGV4dGVuc2libGUgYWdlbnQKKwkqIEFuIFNOTVAgbGlicmFyeQorCSogdG9vbHMgdG8gcmVxdWVzdCBvciBzZXQgaW5mb3JtYXRpb24gZnJvbSBTTk1QIGFnZW50cworCSogdG9vbHMgdG8gZ2VuZXJhdGUgYW5kIGhhbmRsZSBTTk1QIHRyYXBzCisJKiBhIHZlcnNpb24gb2YgdGhlIHVuaXggJ25ldHN0YXQnIGNvbW1hbmQgdXNpbmcgU05NUAorCSogYSBncmFwaGljYWwgUGVybC9Uay9TTk1QIGJhc2VkIG1pYiBicm93c2VyCisKKyAgICBUaGlzIHBhY2thZ2UgaXMgb3JpZ2luYWxseSBiYXNlZCBvbiB0aGUgQ2FybmVnaWUgTWVsbG9uIFVuaXZlcnNpdHkKKyAgICBTTk1QIGltcGxlbWVudGF0aW9uICh2ZXJzaW9uIDIuMS4yLjEpLCBidXQgaGFzIGRldmVsb3BlZCBzaWduaWZpY2FudGx5CisgICAgc2luY2UgdGhlbi4KKworCisKKzxhIG5hbWU9IldoZXJlX2Nhbl9JX2dldF9pdF8iPgorV2hlcmUgY2FuIEkgZ2V0IGl0PworLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgRG93bmxvYWQ6CisgICAgLSBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9kb3dubG9hZC8KKyAgICAtIGZ0cDovL2Z0cC5uZXQtc25tcC5vcmcvcHViL3NvdXJjZWZvcmdlL25ldC1zbm1wLworICBNRDUgU3VtczoKKyAgICAtIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL21kNS8KKyAgV2ViIHBhZ2U6CisgICAgLSBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy8KKyAgU291cmNlZm9yZ2UgUHJvamVjdCBwYWdlOgorICAgIC0gaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvcHJvamVjdC8KKyAgTWlycm9ycyAobm90ZSB0aGF0IHNvdXJjZWZvcmdlIGRvd25sb2FkIHNlcnZlcnMgYXJlIG1pcnJvcmVkIHRoZW1zZWx2ZXMpOgorICAgIC0gVVM6ICAgICAgICAgIGZ0cDovL2Z0cC5mcmVlc25tcC5jb20vbWlycm9ycy9uZXQtc25tcC8KKyAgICAtIEJ1bGdhcmlhOiAgICBodHRwOi8vcnRmbS51bmktc3Zpc2h0b3YuYmcvbmV0LXNubXAvICAgIChhcHBlYXJzIHRvIGJlIG91dCBvZiBkYXRlKQorICAgIC0gSmFwYW46ICAgICAgIGZ0cDovL2Z0cC5heWFtdXJhLm9yZy9wdWIvbmV0LXNubXAvICAgICAgKG1heSBvbmx5IHdvcmsgaW5zaWRlIEphcGFuKQorICAgIC0gR2VybWFueTogICAgIGZ0cDovL2Z0cC5tcGcuZ29lLm5pLnNjaHVsZS5kZS9wdWIvaW50ZXJuZXQvbmV0LXNubXAvICAodW5rbm93biBob3N0KQorICAgIC0gR3JlZWNlOiAgICAgIGZ0cDovL2Z0cC5udHVhLmdyL3B1Yi9uZXQvc25tcC9uZXQtc25tcC8KKworICBUaGUgb2xkIHVjZC1zbm1wLnVjZGF2aXMuZWR1IHdlYiBzaXRlIGFuZCBmdHAgc2VydmVyIGlzIG5vdworICBvZmZsaW5lIGFuZCBzaG91bGQgbm90IGJlIGFjY2Vzc2VkIGFueSBsb25nZXIuCisKKworCis8YSBuYW1lPSJXaGF0X2RvY3VtZW50YXRpb25faXNfYXZhaWxhYmxlXyI+CitXaGF0IGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJVGhpcyBGQVEgKCEpCisJUkVBRE1FIGFuZCBpbmRpdmlkdWFsIFJFQURNRXMgZm9yIHZhcmlvdXMgcGxhdGZvcm1zCisJUkVBRE1FLnRocmVhZCAoZGlzY3Vzc2VzIHRocmVhZGluZyBpc3N1ZXMpCisJSU5TVEFMTAorCVBPUlRJTkcKKwlFWEFNUExFLmNvbmYKKwltYW4gcGFnZXMgZm9yIHRoZSBpbmRpdmlkdWFsIHRvb2xzLCBmaWxlcyBhbmQgdGhlIEFQSQorCUEgZ3VpZGUgZm9yIGV4dGVuZGluZyB0aGUgYWdlbnQKKwlUdXRvcmlhbHMgZm9yIGJvdGggdWNkLXNubXAgdjQgYW5kIG5ldC1zbm1wIHY1CisgICAgICAgICAgIGF0ICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC8KKyAgICAgICAgICAgYW5kIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvIHJlc3BlY3RpdmVseQorCisgICAgICBNb3N0IG9mIHRoaXMgZG9jdW1lbnRhdGlvbiAocGx1cyBhcmNoaXZlcyBvZiB0aGUgbWFpbGluZyBsaXN0cykKKwkgaXMgYWxzbyBhdmFpbGFibGUgb24gb3VyIHdlYiBwYWdlOgorCisgICAgICAgIAlodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy8KKworCisKKzxhIG5hbWU9IkFyZV90aGVyZV9iaW5hcmllc19hdmFpbGFibGVfIj4KK0FyZSB0aGVyZSBiaW5hcmllcyBhdmFpbGFibGU/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgLSBUaGVyZSBhcmUgYmluYXJpZXMgZm9yIHNvbWUgc3lzdGVtcyBhdmFpbGFibGUgaW4gdGhlIGJpbmFyaWVzCisgICAgZGlyZWN0b3J5IG9uIHRoZSBmdHAgc2l0ZS4KKworCisKKzxhIG5hbWU9IldoYXRfc190aGVfZGlmZmVyZW5jZV9iZXR3ZWVuX1VDRF9TTk1QX2FuZF9OZXRfU05NUF8iPgorV2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gVUNELVNOTVAgYW5kIE5ldC1TTk1QPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgTm90IGEgZ3JlYXQgZGVhbCwgcmVhbGx5LgorICBBbHRob3VnaCB0aGUgcHJvamVjdCBvcmlnaW5hbGx5IHN0YXJ0ZWQgYXQgVUMgRGF2aXMgKGhlbmNlIHRoZSBuYW1lKSwKKyAgYW5kIGl0IGhhcyBhbHdheXMgYmVlbiBiYXNlZCB0aGVyZSwgbW9zdCBvZiB0aGUgY29udHJpYnV0b3JzIGhhdmUgaGFkCisgIGxpdHRsZSBvciBubyBjb25uZWN0aW9uIHdpdGggdGhpcyBpbnN0aXR1dGlvbi4KKworICAgIFRoZSBtb3ZlIHRvIFNvdXJjZUZvcmdlIHdhcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgbW9yZSBmbGV4aWJsZQorICBlbnZpcm9ubWVudCBmb3IgdGhlIHByb2plY3QsIGFuZCB0byBkaXN0cmlidXRlIHRoZSBhZG1pbmlzdHJhdGl2ZQorICB3b3JrbG9hZCBtb3JlIGV2ZW5seS4gIFRoZSBjaGFuZ2Ugb2YgbmFtZSBzaW1wbHkgcmVmbGVjdHMgdGhpcyBtb3ZlLAorICB3aGljaCB3YXMgdGhlIGxhc3QgcmVtYWluaW5nIGxpbmsgd2l0aCBVQyBEYXZpcy4KKworICAgIFRoZSA0LjIueCBsaW5lIGlzIHRoZSBsYXN0IHJlbGVhc2UgbGluZSB0aGF0IHVzZXMgdGhlIHVjZC1zbm1wIG5hbWUsCisgIGFuZCBhbGwgcmVsZWFzZXMgdW5kZXIgdGhpcyBiYW5uZXIgd2lsbCBiZSBidWctZml4ZXMgb25seS4gIFJlbGVhc2UKKyAgNS4wIGlzIHRoZSBmaXJzdCB2ZXJzaW9uIHVzaW5nIHRoZSBuZXQtc25tcCBuYW1lLCBhbmQgYWxsIG5ldyBmZWF0dXJlcworICBhbmQgc2lnbmlmaWNhbnQgZGV2ZWxvcG1lbnQgd2lsbCBiZSByZWxlYXNlZCB1bmRlciB0aGlzIG5hbWUuCisgICAgKFRob3VnaCB0aGUgZGl2aWRpbmcgbGluZSBiZXR3ZWVuIGEgYnVnLWZpeCBhbmQgYSBuZXcgZmVhdHVyZSBpcworICBzb21ldGhpbmcgb2YgYSB2YWd1ZSBvbmUsIHNvIHNvbWUgY2hhbmdlcyBpbiB0aGUgNC4yLnggbGluZSBtYXkgYmUKKyAgcmVsYXRpdmVseSBub24tdHJpdmlhbCEpCisgCisgICAgU3RhcnRpbmcgd2l0aCB0aGUgNS4wIHJlbGVhc2UsIHdlIGFyZSBhbHNvIHRyeWluZyB0byByZXZpZXcgYW5kCisgIHJld29yayB0aGUgdW5kZXJseWluZyBjb2RlIGJhc2UgdG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkgYW5kCisgIG1haW50YWluYWJpbGl0eSBvZiB0aGUgcGFja2FnZS4gIFRoZSA1LjAgY2hhbmdlcyBoYXZlIG1vc3RseQorICBjb25jZW50cmF0ZWQgb24gdGhlIGFnZW50IGFyY2hpdGVjdHVyZSwgdGhvdWdoIHRoZXJlIGhhdmUgYmVlbiBzb21lCisgIHNpZ25pZmljYW50IGNoYW5nZXMgdG8gdGhlIGxpYnJhcnkgYXMgd2VsbC4gIEZ1dHVyZSByZWxlYXNlcyBtYXkKKyAgaW5jbHVkZSBmdXJ0aGVyIHJlc3RydWN0dXJpbmcgb2YgdGhlIGxpYnJhcnkuCisgICAgVGhpcyBwcm9jZXNzIHdpbGwgcHJvYmFibHkgcmVzdWx0IGluIHNvbWUgY2hhbmdlcyB0byB0aGUgQVBJLAorICB0aG91Z2ggd2Ugd2lsbCBhdHRlbXB0IHRvIHJldGFpbiBzb21lIGZvcm0gb2YgYmFja3dhcmRzCisgIGNvbXBhdGliaWxpdHkgYXMgZmFyIGFzIHBvc3NpYmxlLCBhbmQgY2xlYXJseSBtYXJrIGFueXRoaW5nIHRoYXQgaGFzCisgIGNoYW5nZWQuICBUaGUgbW9zdCBzaWduaWZpY2FudCBjaGFuZ2Ugd2l0aCB0aGUgNS4wIHJlbGVhc2UgaXMgYQorICByZXN0cnVjdHVyaW5nIG9mIHRoZSBoZWFkZXIgZmlsZSBvcmdhbmlzYXRpb24gLSBub3QgbGVhc3QgYSBjaGFuZ2UKKyAgZnJvbSAmbHQ7dWNkLXNubXAveHh4LmgmZ3Q7IHRvICZsdDtuZXQtc25tcC95eXkuaCZndDsuCisKKworCis8YSBuYW1lPSJXaGF0X29wZXJhdGluZ19zeXN0ZW1zX2RvZXNfaXRfcnVuX29uXyI+CitXaGF0IG9wZXJhdGluZyBzeXN0ZW1zIGRvZXMgaXQgcnVuIG9uPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEJvdGggdGhlIGFwcGxpY2F0aW9ucyBhbmQgdGhlIGFnZW50IGhhdmUgYmVlbiByZXBvcnRlZCBhcyBydW5uaW5nCisgIChhdCBsZWFzdCBpbiBwYXJ0KSBvbiB0aGUgZm9sbG93aW5nIG9wZXJhdGluZyBzeXN0ZW1zOgorCisJKiBIUC1VWCAoMTAuMjAgdG8gOS4wMSBhbmQgMTEuMCAtLSBzZWUgUkVBRE1FLmhwdXgxMSkKKwkqIFVsdHJpeCAoNC41IHRvIDQuMikKKwkqIFNvbGFyaXMgU1BBUkMvVUxUUkEgKDIuOCB0byAyLjMpLCBJbnRlbCAoMi45KSBhbmQgU3VuT1MgKDQuMS40IHRvIDQuMS4yKQorCSogT1NGICg0LjAsIDMuMikKKwkqIE5ldEJTRCAoMS41YWxwaGEgdG8gMS4wKQorCSogRnJlZUJTRCAoNC4xIHRvIDIuMikKKwkqIEJTRGkgKDQuMC4xIHRvIDIuMSkKKwkqIExpbnV4IChrZXJuZWxzIDIuNCB0byAxLjMpCisJKiBBSVggKDQuMS41LCAzLjIuNSkKKwkqIE9wZW5CU0QgKDIuOCwgMi42KQorCSogSXJpeCAoNi41IHRvIDUuMSkKKwkqIE9TIFggKDEwLjEuMSBhbmQgMTAuMS4yKQorCSogRHluaXgvUFRYIDQuNAorCSogUU5YIDYuMi4xQQorCisgIFdlIGhhdmUgYWxzbyBiZWVuIGluZm9ybWVkIGFib3V0IGEgcG9ydCB0byB0aGUgU3RyYXR1cyBWT1MuCisgIFNlZSBodHRwOi8vZnRwLnN0cmF0dXMuY29tL3Zvcy9uZXR3b3JrL25ldHdvcmsuaHRtbCBmb3IgZGV0YWlscy4KKworICBTZWUgdGhlIG5leHQgcXVlc3Rpb24gYnV0IG9uZSBmb3IgdGhlIHN0YXR1cyBvZiBXaW5kb3dzIHN1cHBvcnQuCisKKyAgQ2VydGFpbiBzeXN0ZW1zIChlLmcuIEhQLVVYIDExLCBJcml4PykgZmFpbCB0byBjb21waWxlIHBhcnRpY3VsYXIKKyAgcG9ydGlvbnMgb2YgdGhlIGFnZW50LiAgVGhlc2UgY2FuIHVzdWFsbHkgYmUgcGVyc3VhZGVkIHRvIGNvbXBpbGUKKyAgKGF0IHRoZSBsb3NzIG9mIHNvbWUgZnVuY3Rpb25hbGl0eSkgYnkgb21pdHRpbmcgdGhlIG1vZHVsZXMgYWZmZWN0ZWQuCisgIFNlZSB0aGUgbmV4dCBxdWVzdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorCisgIEFsc28gbm90ZSB0aGF0IHRoZSBwcmVzZW5jZSBvZiBhIHBhcnRpY3VsYXIgY29uZmlndXJhdGlvbiBpbiB0aGlzCisgIGxpc3QgZG9lcyBub3QgaW1wbHkgYSBwZXJmZWN0IG9yIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uLiAgVGhpcyBpcworICBzaW1wbHkgd2hhdCB2YXJpb3VzIHBlb3BsZSBoYXZlIHJlcG9ydGVkIGFzIHNlZW1pbmcgdG8gd29yay4gKE9yIG1vcmUKKyAgZnJlcXVlbnRseSwgdGhlIGNvbmZpZ3VyYXRpb25zIHBlb3BsZSBoYXZlIHJlcG9ydGVkIHByb2JsZW1zIHdpdGgKKyAgdGhhdCB3ZSB0aGluayB3ZSd2ZSBmaXhlZCEpCisKKworCis8YSBuYW1lPSJXaGF0X2hhcHBlbnNfaWZfbWluZV9pc25fdF9saXN0ZWRfIj4KK1doYXQgaGFwcGVucyBpZiBtaW5lIGlzbid0IGxpc3RlZD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgSXQncyBwcm9iYWJseSB3b3J0aCB0cnlpbmcgdG8gY29tcGlsZSBpdCBhbnl3YXkuICBJZiB5b3VyIHN5c3RlbQorICBpcyByZWFzb25hYmx5IHNpbWlsYXIgdG8gYW5vdGhlciBzdXBwb3J0ZWQgY29uZmlndXJhdGlvbiwgaXQgbWF5CisgIHdlbGwgY29tcGlsZSB3aXRoIGxpdHRsZSBvciBubyBkaWZmaWN1bHR5LiAgVGhlIG1vc3QgbGlrZWx5IHNvdXJjZQorICBvZiBwcm9ibGVtcyB3aWxsIGJlIE1JQiBtb2R1bGVzIHdpdGhpbiB0aGUgYWdlbnQsIGFzIHRoaXMgdGVuZHMgdG8KKyAgYmUgd2hlcmUgdGhlIG1vc3Qgc3lzdGVtLXNwZWNpZmljIGNvZGUgaXMgZm91bmQuCisKKyAgICBJZiBvbmx5IGEgZmV3IG1vZHVsZXMgZmFpbCB0byBjb21waWxlLCB0cnkgcmVtb3ZpbmcgdGhlbSBmcm9tCisgIHRoZSBhZ2VudCBieSBydW5uaW5nICJjb25maWd1cmUgLS13aXRoLW91dC1taWItbW9kdWxlPXh4eCx5eXkiLAorICBhbmQgcmUtY29tcGlsaW5nLiAgSWYgYSBsYXJnZSBudW1iZXIgb2YgbW9kdWxlcyBmYWlsLCB0aGVuIGl0CisgIG1pZ2h0IGJlIGVhc2llciB0byBzdGFydCBmcm9tIGEgcmVsYXRpdmVseSBiYXJlIHN5c3RlbSwgdXNpbmcKKyAgImNvbmZpZ3VyZSAtLWVuYWJsZS1taW5pLWFnZW50IC0td2l0aC1kZWZhdWx0cyIuICBUaGVuIGlmIHRoaXMKKyAgbWluaW1hbCBhZ2VudCBjb21waWxlcyBhbmQgcnVucyBzdWNjZXNzZnVsbHksIHRyeSBhZGRpbmcgdGhlCisgIG1pc3NpbmcgbWliZ3JvdXBzIHVzaW5nIHRoZSBjb25maWd1cmUgb3B0aW9uICctLXdpdGgtbWliLW1vZHVsZScuCisgIAorICAgIElmIGNvbmZpZ3VyZSBmYWlscyB3aXRoICJpbnZhbGlkIGNvbmZpZ3VyYXRpb24iIG1lc3NhZ2VzLCBvcgorICB5b3UgZ2V0IGNvbXBsZXRlbHkgc3R1Y2ssIGNvbnRhY3QgdGhlIGNvZGVycyBsaXN0IGZvciBhZHZpY2UuCisgIFNpbWlsYXJseSwgaWYgeW91IG1hbmFnZSB0byBnZXQgdGhpcyB3b3JraW5nIG9uIGEgbmV3IHN5c3RlbSwKKyAgcGxlYXNlIGxldCB1cyBrbm93IGJvdGggZGV0YWlscyBvZiB0aGUgaGFyZHdhcmUgeW91J3JlIHVzaW5nLAorICBhbmQgd2hhdCB2ZXJzaW9ucyBvZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSB5b3UndmUgdHJpZWQgaXQgb24uCisgIFRoZSBlbnRyeSAnaG9zdCcgaW4gdGhlIGZpbGUgJ2NvbmZpZy5zdGF0dXMnIHdpbGwgc2hvdyB0aGlzCisgIGluZm9ybWF0aW9uLiAgT2gsIGFuZCBjb25ncmF0dWxhdGlvbnMhCisKKworCis8YSBuYW1lPSJEb2VzX2l0X3J1bl9vbl9XaW5kb3dzXyI+CitEb2VzIGl0IHJ1biBvbiBXaW5kb3dzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIHN1aXRlIHNob3VsZCBjb21waWxlIGFuZCBydW4gb24gV2luMzIgcGxhdGZvcm1zLCBpbmNsdWRpbmcKKyAgdGhlIGxpYnJhcnksIGNvbW1hbmQtbGluZSB0b29scyBhbmQgdGhlIGJhc2ljIGFnZW50IGZyYW1ld29yay4KKyAgTm90ZSB0aGF0IHRoZSBhZ2VudCBub3cgaW5jbHVkZXMgc3VwcG9ydCBmb3IgdGhlIE1JQi1JSSBtb2R1bGUsCisgIGJ1dCB0aGlzIHJlcXVpcmVzIE1pY3Jvc29mdCdzIENvcmUgUGxhdGZvcm0gU0RLLiAgSW5zdHJ1Y3Rpb25zCisgIGZvciBob3cgdG8gaW5zdGFsbCB0aGlzIGFyZSBnaXZlbiBpbiBSRUFETUUud2luMzIuCisKKyAgICBTb21lIG90aGVyIE1JQiBtb2R1bGVzLCBpbmNsdWRpbmcgdGhlIFVDRCBwYXNzLXRocm91Z2ggZXh0ZW5zaW9ucywKKyAgZG8gbm90IGN1cnJlbnRseSB3b3JrIHVuZGVyIFdpbmRvd3MuICBWb2x1bnRlZXJzIHRvIGFzc2lzdCBpbgorICB0aGVzZSBtaXNzaW5nIG1vZHVsZXMgYXJlIGxpa2VseSB0byB3ZWxjb21lZCB3aXRoIG9wZW4gYXJtcyA6LSkKKworICAgIEZ1cnRoZXIgZGV0YWlscyBvZiBXaW5kb3dzIHN1cHBvcnQgKGN1cnJlbnRseSBWaXN1YWwgQysrIGFuZAorICBDeWdudXMgY3lnd2luMzIpIGlzIGF2YWlsYWJsZSBpbiB0aGUgZmlsZSBSRUFETUUud2luMzIKKworCisKKzxhIG5hbWU9Ikhvd19kb19JX2ZpbmRfb3V0X2Fib3V0X25ld19yZWxlYXNlc18iPgorSG93IGRvIEkgZmluZCBvdXQgYWJvdXQgbmV3IHJlbGVhc2VzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlcmUgaXMgYSBtYWlsaW5nIGxpc3QgZm9yIHRoZXNlIGFubm91bmNlbWVudHMKKworICAJbmV0LXNubXAtYW5ub3VuY2VAbGlzdHMuc291cmNlZm9yZ2UubmV0CisKKyAgVG8gYmUgYWRkZWQgdG8gKG9yIHJlbW92ZWQgZnJvbSkgdGhpcyBsaXN0LCB2aXNpdAorICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9saXN0cy9uZXQtc25tcC1hbm5vdW5jZS8uICBPciB5b3UgY2FuIHNlbmQgYQorICBtZXNzYWdlIHRvIHRoZSBhZGRyZXNzCisgICduZXQtc25tcC1hbm5vdW5jZS1yZXF1ZXN0QGxpc3RzLnNvdXJjZWZvcmdlLm5ldCcgd2l0aCBhIHN1YmplY3QKKyAgbGluZSBvZiAnc3Vic2NyaWJlJyAob3IgJ3Vuc3Vic2NyaWJlJyBhcyBhcHByb3ByaWF0ZSkuCisKKyAgTWFqb3IgY29kZSByZXZpc2lvbnMgbWF5IGJlIGFubm91bmNlZCBtb3JlIHdpZGVseSAoZS5nLiBvbiB0aGUKKyAgU05NUCBtYWlsaW5nIGxpc3RzLCBvciBjb21wLnByb3RvY29scy5zbm1wKSBidXQgdGhpcyBsaXN0IGlzIHRoZSBtb3N0CisgIHJlbGlhYmxlIHdheSB0byBrZWVwIGluIHRvdWNoIHdpdGggdGhlIHN0YXR1cyBvZiB0aGlzIHBhY2thZ2UuCisKKyAgUGF0Y2hlcyB0byBmaXgga25vd24gcHJvYmxlbXMgYXJlIGFsc28gbWFkZSBhdmFpbGFibGUgdmlhIHRoZSB3ZWIgc2l0ZToKKworICAgICAgICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9wYXRjaGVzLworCisKKworPGEgbmFtZT0iSG93X2Nhbl9JX2ZpbmRfb3V0X3doYXRfb3RoZXJfcGVvcGxlX2FyZV9kb2luZ18iPgorSG93IGNhbiBJIGZpbmQgb3V0IHdoYXQgb3RoZXIgcGVvcGxlIGFyZSBkb2luZz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGVyZSBpcyBhIGdlbmVyYWwgcHVycG9zZSBkaXNjdXNzaW9uIGxpc3QKKworICAJbmV0LXNubXAtdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0CisKKyAgVG8gYmUgYWRkZWQgdG8gKG9yIHJlbW92ZWQgZnJvbSkgdGhpcyBsaXN0LCB2aXNpdAorICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy9saXN0cy9uZXQtc25tcC11c2Vycy4gIE9yIHlvdSBjYW4gc2VuZCBhCisgIG1lc3NhZ2UgdG8gdGhlIGFkZHJlc3MgJ25ldC1zbm1wLXVzZXJzLXJlcXVlc3RAbGlzdHMuc291cmNlZm9yZ2UubmV0JworICB3aXRoIGEgc3ViamVjdCBsaW5lIG9mICdzdWJzY3JpYmUnIChvciAndW5zdWJzY3JpYmUnIGFzIGFwcHJvcHJpYXRlKS4KKworICBUbyBmaW5kIG91dCB3aGF0IHRoZSBkZXZlbG9wZXJzIGFyZSBkb2luZywgYW5kIHRvIGhlbHAgdGhlbSBvdXQsIHBsZWFzZQorICByZWFkIHRoZSBQT1JUSU5HIGZpbGUgZW5jbG9zZWQgd2l0aCB0aGUgcGFja2FnZS4KKworICBUaGVyZSBpcyBhbHNvIGFuIG5ldC1zbm1wIElSQyBjaGFubmVsIHNldCB1cCBvbiB0aGUgZnJlZW5vZGUubmV0IElSQworICBjaGF0IHNlcnZlcnMgKHlvdSBjYW4gdXNlIGlyYy5mcmVlbm9kZS5uZXQgdG8gY29ubmVjdCBhbmQvb3Igc2VlCisgIGh0dHA6Ly93d3cuZnJlZW5vZGUubmV0LyBmb3IgZ2V0dGluZyBzdGFydGVkIHdpdGggaXJjKS4gIE11bHRpcGxlCisgIGNvcmUgZGV2ZWxvcGVycyBoYW5nIG91dCB0aGVyZSBvbiBhIHJlZ3VsYXIgYmFzaXMuCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV9zdWJtaXRfYV9wYXRjaF9vcl9idWdfcmVwb3J0XyI+CitIb3cgZG8gSSBzdWJtaXQgYSBwYXRjaCBvciBidWcgcmVwb3J0PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFsbCBidWcgcmVwb3J0cyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIHRoZSBidWcgZGF0YWJhc2UgdGhyb3VnaCB0aGUKKyAgaW50ZXJmYWNlIGZvdW5kIGF0IGh0dHA6Ly93d3cubmV0LXNubXAub3JnL2J1Z3MvLiAgQmUKKyAgc3VyZSB0byBpbmNsdWRlIHRoZSB2ZXJzaW9uIG9mIHRoZSBwYWNrYWdlIHRoYXQgeW91J3ZlIGJlZW4gd29ya2luZworICB3aXRoLCB0aGUgb3V0cHV0IG9mIHRoZSBjb21tYW5kICd1bmFtZSAtYScsIHRoZSBwcmVjaXNlIGNvbW1hbmQgdGhhdAorICB0cmlnZ2VycyB0aGUgcHJvYmxlbSBhbmQgYSBjb3B5IG9mIHRoZSBvdXRwdXQgaXQgcHJvZHVjZXMuCisKKyAgICBBbGwgcGF0Y2hlcyBzaG91bGQgYmUgc3VibWl0dGVkIHRvIHRoZSBwYXRjaCBtYW5hZ2VyIGF0CisgIGh0dHA6Ly93d3cubmV0LXNubXAub3JnL3BhdGNoZXMvLiAgSWYgcG9zc2libGUsIHN1Ym1pdCBhCisgIGJ1ZyByZXBvcnQgZGVzY3JpYmluZyB0aGUgcGF0Y2ggYXMgd2VsbCAocmVmZXJlbmNpbmcgaXQgYnkgaXRzIHBhdGNoCisgIG51bWJlcikgc2luY2UgdGhlIHBhdGNoIG1hbmFnZXIgZG9lc24ndCBjb250YWluIGEgZGVjZW50IGRlc2NyaXB0aW9uCisgIGZpZWxkLgorCisgICAgUXVlc3Rpb25zIGFib3V0IHVzaW5nIHRoZSBwYWNrYWdlIHNob3VsZCBiZSBkaXJlY3RlZCBhdCB0aGUKKyAgbmV0LXNubXAtdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0IG1haWxpbmcgbGlzdC4gIE5vdGUgdGhhdCB0aGlzCisgIG1haWxpbmcgbGlzdCBpcyByZWxhdGl2ZWx5IGJ1c3ksIGFuZCB0aGUgcGVvcGxlIGFuc3dlcmluZyB0aGVzZQorICBxdWVzdGlvbnMgYXJlIGRvaW5nIHNvIG91dCBvZiB0aGUgZ29vZG5lc3Mgb2YgdGhlaXIgaGVhcnRzLCBhbmQgaW4KKyAgYWRkaXRpb24gdG8gdGhlaXIgbWFpbiBlbXBsb3ltZW50LiAgUGxlYXNlIG5vdGUgdGhlIGZvbGxvd2luZzoKKworICAgICAtIHVzZSBwbGFpbiB0ZXh0IG1haWwsIHJhdGhlciB0aGFuIEhUTUwKKyAgICAgLSBkb24ndCByZXNlbmQgcXVlc3Rpb25zIG1vcmUgdGhhbiBvbmNlCisgICAgICAgICAgKGV2ZW4gaWYgbm8tb25lIGFuc3dlcmVkIGltbWVkaWF0ZWx5KQorICAgICAtIGluY2x1ZGUgZnVsbCBkZXRhaWxzIG9mIGV4YWN0IGNvbW1hbmRzIGFuZCBlcnJvciBtZXNzYWdlcworICAgICAgICAgICgiSSd2ZSB0cmllZCBldmVyeXRoaW5nLCBhbmQgaXQgZG9lc24ndCB3b3JrIiBpc24ndCBtdWNoIHVzZSEpCisgICAgIC0gZG8gKk5PVCogc2VuZCBtZXNzYWdlcyB0byAtdXNlcnMgYW5kIC1jb2RlcnMgbWFpbGluZyBsaXN0cworICAgICAgICAgIChtb3N0IGRldmVsb3BlcnMgcmVhZCBib3RoIGFueXdheSkKKyAgICAgLSBkb24ndCBtYWlsIHRoZSBkZXZlbG9wZXJzIHByaXZhdGVseSAtIGtlZXAgZXZlcnl0aGluZyBvbiB0aGUgbGlzdAorCisgIFJlbWVtYmVyIHRoYXQgdGhpcyBpcyBiYXNpY2FsbHkgYW4gdW5zdXBwb3J0ZWQgcGFja2FnZS4gIEZ1bmRhbWVudGFsbHkKKyAgaXQncyBPcGVuIFNvdXJjZSwgc28geW91IGhhdmUgdGhlIHNvdXJjZSBjb2RlLiAgSWYgeW91IG5lZWQgc29tZXRoaW5nCisgIGZpeGluZyBiYWRseSBlbm91Z2gsIGl0J3MgdXAgdG8geW91IHRvIGRvIHRoZSB3b3JrLgorCisgICAgV2UgY2FuJ3QgcHJvbWlzZSB0byBiZSBhYmxlIHRvIHNvbHZlIGFsbCBwcm9ibGVtcywgYnV0IHdlJ2xsCisgIGNlcnRhaW5seSB0cnkgYW5kIGhlbHAuICBCdXQgcmVtZW1iZXIgdGhhdCB0aGlzIGlzIGJhc2ljYWxseSBhbgorICB1bnN1cHBvcnRlZCBwYWNrYWdlLiAgSXQncyBPcGVuIFNvdXJjZSwgc28gaWYgeW91IG5lZWQgc29tZXRoaW5nCisgIGZpeGluZyBiYWRseSBlbm91Z2gsICBmdW5kYW1lbnRhbGx5IGl0J3MgdXAgdG8geW91IHRvIGRvIHRoZSB3b3JrLgorCis8YSBuYW1lPSJDYW5fSV9yZXVzZV90aGVfY29kZV9pbl9teV9jb21tZXJjaWFsX2FwcGxpY2F0aW9uXyI+CitDYW4gSSByZXVzZSB0aGUgY29kZSBpbiBteSBjb21tZXJjaWFsIGFwcGxpY2F0aW9uPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZGV0YWlscyBvZiB0aGUgQ09QWVJJR0hUcyBvbiB0aGUgcGFja2FnZSBjYW4gYmUgZm91bmQgaW4gdGhlCitDT1BZSU5HIGZpbGUuICBZb3Ugc2hvdWxkIGhhdmUgeW91ciBsYXd5ZXIgcmVhZCB0aGlzIGZpbGUgaWYgeW91IHdpc2gKK3RvIHVzZSB0aGUgY29kZSBpbiB5b3VyIGNvbW1lcmNpYWwgYXBwbGljYXRpb24uICBXZSB3aWxsIG5vdCBzdW1tYXJpemUKK2hlcmUgd2hhdCBpcyBpbiB0aGUgZmlsZSwgYXMgd2UncmUgbm90IGxhd3llcnMgYW5kIGFyZSB1bnF1YWxpZmllZCB0bworZG8gc28uCisKKworPGEgbmFtZT0iV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fU05NUHZfX19TTk1Qdl9fYW5kX1NOTVB2X18iPgorV2hhdCdzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gU05NUHYxLCBTTk1QdjIgYW5kIFNOTVB2Mz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzxhIG5hbWU9IldoYXRfYXJlX2FsbF90aGVzZV9kaWZmZXJlbnRfU05NUHZfX3NfYW55d2F5XyI+CitXaGF0IGFyZSBhbGwgdGhlc2UgZGlmZmVyZW50IFNOTVB2MidzIGFueXdheT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworICBBIGZ1bGwgZGVzY3JpcHRpb24gaXMgcHJvYmFibHkgYmV5b25kIHRoZSBzY29wZSBvZiB0aGlzIEZBUS4KKyAgVmVyeSBicmllZmx5LCB0aGUgb3JpZ2luYWwgcHJvdG9jb2wgYW5kIGZyYW1ld29yayB3YXMgZGVzY3JpYmVkCisgIGluIFJGQ3MgMTE1NS0xMTU3LCBhbmQgaXMgbm93IGtub3duIGFzIFNOTVB2MS4KKworICAgIFByYWN0aWNhbCBleHBlcmllbmNlIHNob3dlZCB1cCB2YXJpb3VzIHByb2JsZW1zIGFuZAorICBkZWZpY2llbmNpZXMgd2l0aCB0aGlzLCBhbmQgYSByZXZpc2VkIGZyYW1ld29yayB3YXMgZGV2ZWxvcGVkIHRvCisgIHRyeSBhbmQgYWRkcmVzcyB0aGVzZS4gIFRoaXMgd2FzIGRlc2NyaWJlZCBpbiBSRkNzIDE0NDEtMTQ1MiwgYW5kCisgIGtub3duIGFzICJTTk1QdjIgY2xhc3NpYyIuCisgIFRoZSBjaGFuZ2VzIHByb3Bvc2VkIGluY2x1ZGU6CisKKwkqIG5ldyB3YXlzIG9mIGRlZmluaW5nIGluZm9ybWF0aW9uIChNSUIgc3RydWN0dXJlKQorCQkoU01JLCBUZXh0dWFsIGNvbnZlbnRpb25zLCBjb25mb3JtYW5jZSBzdGF0ZW1lbnRzKQorCSogbmV3IHByb3RvY29sIHBhY2tldCB0eXBlcyBhbmQgdHJhbnNwb3J0IG1hcHBpbmdzCisJKiBuZXcgbWVjaGFuaXNtcyBmb3IgYWRtaW5pc3RyYXRpb24gYW5kIHNlY3VyaXR5CisJKiBtZWNoYW5pc21zIGZvciByZW1vdGUgY29uZmlndXJhdGlvbgorCisgIFVuZm9ydHVuYXRlbHksIHdoaWxlIG1hbnkgb2YgdGhlc2Ugd2VyZSBnZW5lcmFsbHkgYWNjZXB0ZWQsIHRoZXJlCisgIHdhcyBzb21lIGRpc2FncmVlbWVudCBpbiB0aGVzZSBsYXN0IHR3byBhcmVhcywgc2VjdXJpdHkvYWRtaW4KKyAgYW5kIHJlbW90ZSBjb25maWd1cmF0aW9uLiAgVGhpcyByZXN1bHRlZCBpbiBhIG51bWJlciBvZiB2YXJpYW50cyBhbmQKKyAgYWx0ZXJuYXRpdmUgcHJvcG9zYWxzOgorCisJU05NUHYyYwkJQ29udGFpbnMgdGhlIG5ldyBwcm90b2NvbCBhbmQgTUlCIHN0cnVjdHVyZSBlbGVtZW50cywKKwkJCXVzaW5nIHRoZSBleGlzdGluZyBTTk1QdjEgYWRtaW5pc3RyYXRpb24gc3RydWN0dXJlLgorCQkJVGhpcyBpcyB0aGUgZGUtZmFjdG8gU05NUHYyIHN0YW5kYXJkIChkZXNjcmliZWQgaW4KKwkJCVJGQ3MgMTkwMS0xOTA4KSwgc3VwZXJzZWRpbmcgU05NUHYyIGNsYXNzaWMsIGFuZCBpcworCQkJa25vd24gYXMgIkNvbW11bml0eS1iYXNlZCBTTk1QdjIiIG9yIHNpbXBseSAiU05NUHYyIi4KKworCisJU05NUHYyIHVzZWMJfSBBbHRlcm5hdGl2ZSBwcm9wb3NhbHMgdG8gYWRkcmVzcyB0aGUKKwlTTk1QdjIqCQl9IGxpbWl0YXRpb25zIG9mIFNOTVB2MSBhZG1pbmlzdHJhdGlvbgorCQkJfSBUaGVzZSBhcmUgYm90aCBzdXBlci1zZXRzIG9mIFNOTVB2MmMKKworCQkJCisJU05NUC1ORwkJQW4gYXR0ZW1wdCB0byByZWFjaCBhZ3JlZW1lbnQgYmV0d2VlbgorCQkJdGhlIHByb3BvbmVudHMgb2YgdXNlYyBhbmQgdjJzdGFyLgorCisgIFRoZSBmb3JtYWwgc3VjY2Vzc29yIHRvIHRoZSBTTk1QLU5HIHdvcmsgaGFzIGJlZW4gdGVybWVkIFNOTVB2My4KKyAgVGhpcyBoYXMgbm93IGJlZW4gZWZmZWN0aXZlbHkgZmluYWxpc2VkLCBhbmQgaXMgZGVzY3JpYmVkIGluIFJGQ3MKKyAgMjU3MS0yNTc1LiAgVGhpcyBpcyBjdXJyZW50bHkgYSBQcm9wb3NlZCBTdGFuZGFyZCwgYnV0IGlzIGxpa2VseQorICB0byBwcm9ncmVzcyB0byBmdWxsIFN0YW5kYXJkIGluIHRoZSByZWxhdGl2ZWx5IG5lYXIgZnV0dXJlLgorCisKKworPGEgbmFtZT0iV2hpY2hfdmVyc2lvbnNfb2ZfU05NUF9hcmVfc3VwcG9ydGVkX2luX3RoaXNfcGFja2FnZV8iPgorV2hpY2ggdmVyc2lvbnMgb2YgU05NUCBhcmUgc3VwcG9ydGVkIGluIHRoaXMgcGFja2FnZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIHBhY2thZ2UgY3VycmVudGx5IHN1cHBvcnRzIHRoZSBvcmlnaW5hbCBTTk1QdjEsIENvbW11bml0eS1iYXNlZAorICBTTk1QdjIgKGkuZS4gUkZDcyAxOTAxLTE5MDgpLCBhbmQgU05NUHYzIChpLmUuIFJGQ3MgMjU3MS0yNTc1KS4KKyAgICBUaGUgYWdlbnQgd2lsbCByZXNwb25kIHRvIHJlcXVlc3RzIHVzaW5nIGFueSBvZiB0aGVzZSBwcm90b2NvbHMsCisgIGFuZCBhbGwgdGhlIHRvb2xzIHRha2UgYSBjb21tYW5kLWxpbmUgb3B0aW9uIHRvIGRldGVybWluZSB3aGljaAorICB2ZXJzaW9uIHRvIHVzZS4KKworICBTdXBwb3J0IGZvciBTTk1QdjIgY2xhc3NpYyAoYS5rLmEuICJTTk1QdjIgaGlzdG9yaWMiIC0gUkZDcyAxNDQxLTE0NTIpCisgIHdhcyBkcm9wcGVkIHdpdGggdGhlIDQuMCByZWxlYXNlIG9mIHRoZSBVQ0Qtc25tcCBwYWNrYWdlLgorCisKKworPGEgbmFtZT0iQ2FuX0lfdXNlX1NOTVB2X19yZXF1ZXN0c193aXRoX2FuX1NOTVB2X19NSUJfX29yX3ZpY2VfdmVyc2FfXyI+CitDYW4gSSB1c2UgU05NUHYxIHJlcXVlc3RzIHdpdGggYW4gU05NUHYyIE1JQiAob3IgdmljZSB2ZXJzYSk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFllcy4KKworICAgIFRoZSB2ZXJzaW9uIG9mIHRoZSBzeW50YXggdXNlZCB0byBkZWZpbmUgYSBNSUIgZmlsZQorICBpcyBiZXR0ZXIgcmVmZXJyZWQgdG8gYXMgU01JdjEgb3IgU01JdjIsIGFuZCBpcyBwdXJlbHkKKyAgY29uY2VybmVkIHdpdGggZGVmaW5pbmcgdGhlIGNoYXJhY3RlcmlzdGljcyBvZiB0aGUKKyAgdmFyaW91cyBtYW5hZ2VtZW50IG9iamVjdHMuICBUaGlzIGlzIChhbG1vc3QpIGNvbXBsZXRlbHkKKyAgdW5yZWxhdGVkIHRvIHRoZSB2ZXJzaW9ucyBvZiB0aGUgcHJvdG9jb2wgb3BlcmF0aW9ucy4KKyAgU28gaXQgaXMgcXVpdGUgcmVhc29uYWJsZSB0byB1c2UgU05NUHYxIHJlcXVlc3RzIG9uCisgIG9iamVjdHMgZGVmaW5lZCB1c2luZyBTTUl2Miwgb3IgU05NUHYyIChvciBTTk1QdjMpCisgIHJlcXVlc3RzIG9uIG9iamVjdHMgZGVmaW5lZCB1c2luZyBTTUl2MS4KKworICAgIFRoZSBvbmUgZXhjZXB0aW9uIGlzIG9iamVjdHMgb2Ygc3ludGF4IENvdW50ZXI2NCwKKyAgd2hpY2ggYXJlIG9ubHkgYWNjZXNzaWJsZSB1c2luZyBTTk1QdjIgb3IgaGlnaGVyLgorICBTTk1QdjEgcmVxdWVzdHMgd2lsbCBlaXRoZXIgdHJlYXQgc3VjaCBvYmplY3RzIGFzIGFuCisgIGVycm9yLCBvciBza2lwIG92ZXIgdGhlbSBjb21wbGV0ZWx5LgorCisgIAorCis8YSBuYW1lPSJXaGVyZV9jYW5fSV9maW5kX21vcmVfaW5mb3JtYXRpb25fYWJvdXRfbmV0d29ya19tYW5hZ2VtZW50XyI+CitXaGVyZSBjYW4gSSBmaW5kIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgbmV0d29yayBtYW5hZ2VtZW50PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZXJlIGFyZSBhIG51bWJlciBvZiBzaXRlcyB3aXRoIG5ldHdvcmsgbWFuYWdlbWVudCBpbmZvcm1hdGlvbiBvbgorICB0aGUgV29ybGQgV2lkZSBXZWIuIFRocmVlIG9mIHRoZSBtb3N0IHVzZWZ1bCBhcmUKKworICAgICAgaHR0cDovL3d3dy5zbm1wd2ViLm9yZy8KKyAgICAgIGh0dHA6Ly93d3cuc25tcGxpbmsub3JnLworICAgICAgaHR0cDovL3d3dy5taWJkZXBvdC5jb20vCisKKyAgVGhlcmUgYXJlIHR3byBVc2VuZXQgbmV3c2dyb3VwcyB3aGljaCBhcmUgcmVsZXZhbnQuCisJJ2NvbXAuZGNvbS5uZXQtbWFuYWdlbWVudCcKKwkJd2hpY2ggZGlzY3Vzc2VzIGdlbmVyYWwgaXNzdWVzIHJlbGF0aW5nIHRvIG5ldHdvcmsgbWFuYWdlbWVudAorCSdjb21wLnByb3RvY29scy5zbm1wJworCQl3aGljaCBpcyBzcGVjaWZpY2FsbHkgY29uY2VybmVkIHdpdGggdXNlIG9mIFNOTVAgaW4gcGFydGljdWxhcgorCisgICh0aG91Z2ggdGhlcmUgaXMgYSBsYXJnZSBvdmVybGFwIGJldHdlZW4gdGhlc2UgdHdvIGdyb3VwcykuCisgIFRoZSBTTk1QIGdyb3VwIGFsc28gaGFzIGFuIEZBUSAoc3BsaXQgaW50byB0d28gcGFydHMpIHdoaWNoIGRpc2N1c3NlcyBtb3JlCisgIGdlbmVyYWwgaXNzdWVzIHJlbGF0ZWQgdG8gU05NUCwgaW5jbHVkaW5nIGJvb2tzLCBzb2Z0d2FyZSwgb3RoZXIgc2l0ZXMsCisgIGhvdyB0byBnZXQgYW4gZW50ZXJwcmlzZSBudW1iZXIsIGV0YywgZXRjLgorICBUaGlzIGlzIGF2YWlsYWJsZSBmcm9tCisKKyAgICAgIGZ0cDovL3J0Zm0ubWl0LmVkdS9wdWIvdXNlbmV0L2NvbXAucHJvdG9jb2xzLnNubXAvCisKKyAgb3IgdmlhIGFueSBvZiB0aGUgV2ViIHNpdGVzIGFib3ZlLgorCisKKworPGEgbmFtZT0iSXNfdWNkX3NubXBfdGhyZWFkX3NhZmVfIj4KK0lzIHVjZC1zbm1wIHRocmVhZCBzYWZlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBTdHJpY3RseSBzcGVha2luZywgbm8uICBIb3dldmVyLCBpdCBzaG91bGQgYmUgcG9zc2libGUgdG8gdXNlIHRoZQorICBsaWJyYXJ5IGluIGEgdGhyZWFkLXNhZmUgbWFubmVyLiAgVGhpcyBpcyBjb3ZlcmVkIGluIGRldGFpbCBpbiB0aGUgZmlsZQorICBSRUFETUUudGhyZWFkIChzaGlwcGVkIHdpdGggdGhlIHN0YW5kYXJkIGRpc3RyaWJ1dGlvbiksIGJ1dCBjYW4gYmUKKyAgc3VtbWFyaXNlZCBhcyBmb2xsb3dzOgorCisgICAgLQlDYWxsICdzbm1wX3Nlc3NfaW5pdCgpJyBwcmlvciB0byBhY3RpdmF0aW5nIGFueSB0aHJlYWRzLgorCVRoaXMgcmVhZHMgaW4gYW5kIHBhcnNlcyBNSUIgaW5mb3JtYXRpb24gKHdoaWNoIGlzbid0IHRocmVhZC1zYWZlKQorCWFzIHdlbGwgYXMgcHJlcGFyaW5nIGEgc2Vzc2lvbiBzdHJ1Y3R1cmUgZm9yIHN1YnNlcXVlbnQgdXNlLgorCisgICAgLQlPcGVuIGFuIFNOTVAgc2Vzc2lvbiB1c2luZyAnc25tcF9zZXNzX29wZW4oKScgd2hpY2ggcmV0dXJucyBhbgorCW9wYXF1ZSBzZXNzaW9uIGhhbmRsZSwgd2hpY2ggaXMgZXNzZW50aWFsbHkgaW5kZXBlbmRlbnQgb2YgYW55CisJb3RoZXIgc2Vzc2lvbnMgKHJlZ2FyZGxlc3Mgb2YgdGhyZWFkKS4KKworICAgIC0JUmVzb3VyY2UgbG9ja2luZyBpcyBub3QgaGFuZGxlZCB3aXRoaW4gdGhlIGxpYnJhcnksIGFuZCBpcyB0aGUKKwlyZXNwb25zaWJpbGl0eSBvZiB0aGUgbWFpbiBhcHBsaWNhdGlvbi4KKworICBUaGUgYXBwbGljYXRpb25zIGFuZCB0aGUgYWdlbnQgaGF2ZSBub3QgYmVlbiBkZXNpZ25lZCBmb3IgdGhyZWFkZWQgdXNlLgorCisKKworPGEgbmFtZT0iQVBQTElDQVRJT05TIj4KK0FQUExJQ0FUSU9OUworPT09PT09PT09PT09CisKKzxhIG5hbWU9Ikhvd19kb19JX2FkZF9hX01JQl8iPgorSG93IGRvIEkgYWRkIGEgTUlCPworLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBhY3R1YWxseSB0d28gc2VwYXJhdGUgcXVlc3Rpb25zLCBkZXBlbmRpbmcgb24gd2hldGhlciB5b3UKKyAgYXJlIHJlZmVycmluZyB0byB0aGUgdG9vbHMsIG9yIHRoZSBhZ2VudCAob3IgYm90aCkuCisgICAgU2VlIHRoZSBuZXh0IHF1ZXN0aW9uIG9yIHRoZSBuZXh0IHNlY3Rpb24gcmVzcGVjdGl2ZWx5LgorCisKKworPGEgbmFtZT0iSG93X2RvX0lfYWRkX2FfTUlCX3RvX3RoZV90b29sc18iPgorSG93IGRvIEkgYWRkIGEgTUlCIHRvIHRoZSB0b29scz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBGaXJzdGx5LAorCisJY3AgTVktTUlCLnR4dCAvdXNyL2xvY2FsL3NoYXJlL3NubXAvbWlicworCisgICAgICAgICAgb3IKKworICAgICAgICBta2RpciAkSE9NRS8uc25tcAorICAgICAgICBta2RpciAkSE9NRS8uc25tcC9taWJzCisJY3AgTVktTUlCLnR4dCAkSE9NRS8uc25tcC9taWJzCisKKyAgQW5kIHRoZW4sCisKKwlleHBvcnQgTUlCUz0rTVktTUlCCisKKyAgICAgICAgICBvciBhbHRlcm5hdGl2ZWx5OgorCisgICAgICAgIGVjaG8gIm1pYnMgK01ZLU1JQiIgJmd0OyZndDsgJEhPTUUvLnNubXAvc25tcC5jb25mCisKKyAgTm90ZSB0aGF0IHlvdSBuZWVkICpib3RoKiBzdGVwcy4KKyAgVGhlIGZpcnN0IGNvbW1hbmQgY29waWVzIHRoZSBmaWxlIGRlZmluaW5nIHRoZSBuZXcgTUlCIHRvIGEKKyAgZXhwZWN0ZWQgbG9jYXRpb24gZm9yIE1JQiBmaWxlcy4gIFRoaXMgZGVmYXVsdHMgdG8KKyAgL3Vzci9sb2NhbC9zaGFyZS9zbm1wL21pYnMgKG9yIFBSRUZJWC9zaGFyZS9zbm1wL21pYnMgaWYgdGhlIHRoZQorICBzdWl0ZSB3YXMgaW5zdGFsbGVkIGludG8gYSBkaWZmZXJlbnQgYmFzZSBsb2NhdGlvbikuICBTb21lCisgIHJlYWR5LXBhY2thZ2VkIGRpc3RyaWJ1dGlvbnMgKHN1Y2ggYXMgTGludXggUlBNIHBhY2thZ2VzKSBtYXkgbG9vaworICBmb3IgTUlCIGZpbGVzIGluIGEgZGlmZmVyZW50IGxvY2F0aW9uLCBzdWNoIGFzIC9ldGMvc25tcC9taWJzIC0gcHV0CisgIHRoZSBuZXcgZmlsZSBpbiB0aGlzIGRpcmVjdG9yeSBpbnN0ZWFkLiAgVGhpcyBtYWtlcyBpdCBhdmFpbGFibGUgZm9yCisgIGV2ZXJ5b25lIG9uIHRoZSBzeXN0ZW0uCisgIFRoZSB0b29scyB3aWxsIGFsc28gbG9vayBmb3IgbWlicyBpbiB5b3VyIHBlcnNvbmFsICRIT01FLy5zbm1wL21pYnMKKyAgZGlyZWN0b3J5LCBidXQgdGhpcyB3aWxsIG9ubHkgd29yayBmb3IgeW91LgorCisgIFRoZSBzZWNvbmQgY29tbWFuZCB0ZWxscyB0aGUgdG9vbHMgdG8gbG9hZCBpbiB0aGlzIG5ldyBNSUIgZmlsZSBhcyB3ZWxsCisgIGFzIHRoZSBkZWZhdWx0IHNldC4gICBOb3RlIHRoYXQgdGhlIHRvb2xzIGRvICpub3QqIGxvYWQgZXZlcnkgTUlCIGZvdW5kCisgIGluIHRoZSBkaXJlY3RvcnkgLSB0aGlzIGlzIHRvIGF2b2lkIHNsb3dpbmcgdGhlbSBkb3duIGV4Y2Vzc2l2ZWx5IHdoZW4KKyAgdGhlcmUgaXMgYSBsYXJnZSBjb2xsZWN0aW9uIG9mIE1JQiBmaWxlcy4gIElmIHlvdSBkbyB3YW50IHRoZSB0b29scyB0bworICBsb2FkIGFsbCB0aGUgTUlCIGZpbGVzLCBzZXQgdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgTUlCUyB0byB0aGUgc3BlY2lhbAorICB2YWx1ZSAiQUxMIi4KKworICAgICBOb3RlIHRoYXQgdGhlIHZhbHVlIGZvciB0aGlzIHZhcmlhYmxlIGlzIHRoZSBuYW1lIG9mIHRoZSBNSUIgbW9kdWxlLAorICAqbm90KiB0aGUgbmFtZSBvZiB0aGUgTUlCIGZpbGUuICAgVGhlc2UgYXJlIHR5cGljYWxseSB0aGUgc2FtZSAoYXBhcnQKKyAgZnJvbSB0aGUgLnR4dCBzdWZmaXgpLCBidXQgaWYgaW4gZG91YnQsIGNoZWNrIHRoZSBjb250ZW50cyBvZiB0aGUgZmlsZS4KKyAgVGhlIHZhbHVlIHRvIHVzZSBpcyB0aGUgdG9rZW4gaW1tZWRpYXRlbHkgYmVmb3JlIHRoZSB3b3JkIERFRklOSVRJT05TCisgIGF0IHRoZSBzdGFydCBvZiB0aGUgZmlsZS4gIE9mIGNvdXJzZSwgaWYgeW91IGxvYWQgJ0FMTCcgbWlicywgdGhlbiB0aGlzCisgIGRpc3RpbmN0aW9uIGlzIGlycmVsZXZhbnQuCisKKyAgICBNb3N0IG9mIHRoZSB0b29scyAoYXBhcnQgZnJvbSAnc25tcHRhYmxlJykgd2lsbCB3b3JrIHF1aXRlIGhhcHBpbHkKKyAgd2l0aG91dCBhbnkgTUlCIGZpbGVzIGF0IGFsbCwgYXMgbG9uZyBhcyB5b3UgYXJlIHByZXBhcmVkIHRvIHdvcmsgd2l0aAorICBudW1lcmljIE9JRHMgdGhyb3VnaG91dC4gIFRoZSBNSUIgZmlsZXMgYXJlIG9ubHkgdXNlZCBmb3IgdHJhbnNsYXRpbmcKKyAgYmV0d2VlbiBudW1lcmljIGFuZCB0ZXh0dWFsIGZvcm1zIGZvciBxdWVyaWVzIGFuZCByZXNwb25zZXMuCisgICAgVGhlIHNhbWUgaG9sZHMgdHJ1ZSBmb3IgdGhlIGFnZW50IC0gc2VlIHRoZSBBR0VOVCBzZWN0aW9uIGZvciBkZXRhaWxzLgorCisKKworPGEgbmFtZT0iV2h5X2Nhbl90X0lfc2VlX2FueXRoaW5nX2Zyb21fdGhlX2FnZW50XyI+CitXaHkgY2FuJ3QgSSBzZWUgYW55dGhpbmcgZnJvbSB0aGUgYWdlbnQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGVyZSBhcmUgdHdvIG1haW4gZ2VuZXJhbCBjYXVzZXMgb2YgcHJvYmxlbXMgcmV0cmlldmluZyBpbmZvcm1hdGlvbgorICBmcm9tIHRoZSBhZ2VudC4gICBGaXJzdGx5LCB0aGUgdmFyaWFibGUgKG9yIHZhcmlhYmxlcykgc3BlY2lmaWVkIG1heQorICBub3QgYmUgcmVjb2duaXNlZCBieSB0aGUgdG9vbHMgYXMgdmFsaWQgbmFtZXMuICBJbiB0aGlzIGNhc2UsIHRoZQorICB0b29scyB3aWxsIHR5cGljYWxseSByZWplY3QgdGhlIHJlcXVlc3Qgd2l0aG91dCBldmVyIGNvbnRhY3RpbmcgdGhlCisgIHJlbW90ZSBhZ2VudC4KKworICAgIEFsdGVybmF0aXZlbHksIHRoZSB0b29sIG1heSBiZSBoYXBweSB3aXRoIHRoZSByZXF1ZXN0LCBidXQgdGhlIGFnZW50CisgIGRvZXMgbm90IHJldHVybiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZShzKS4gIEl0IG1heSByZXR1cm4gYW4gZXhwbGljaXQKKyAgZXJyb3IgbWVzc2FnZSBpbnN0ZWFkLCBvciB0aGUgcmVxdWVzdCBtYXkgdGltZSBvdXQgd2l0aG91dCBhbnkgcmVzcG9uc2UKKyAgYmVpbmcgc2VudCBiYWNrIGF0IGFsbC4gIFRoZSBuZXh0IGZldyBlbnRyaWVzIGxvb2sgYXQgdGhlc2UgaW4gbW9yZSBkZXRhaWwuCisKKworCis8YSBuYW1lPSJXaHlfY2FuX3RfSV9zZWVfdmFsdWVzX2luX3RoZV9fSU5TRVJUX0VOVEVSUFJJU0VfSEVSRV9fdHJlZV8iPgorV2h5IGNhbid0IEkgc2VlIHZhbHVlcyBpbiB0aGUgJmx0O0lOU0VSVCBFTlRFUlBSSVNFIEhFUkUmZ3Q7IHRyZWU/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEhhdmluZyBzYWlkIHRoYXQgdGhlcmUgYXJlIHR3byBtYWluIHJlYXNvbnMgZm9yIG5vdCBnZXR0aW5nIGEgcmVzcG9uc2UsCisgIHRoZSBtb3N0IGxpa2VseSBjYXVzZSBvZiB0aGlzIHByb2JsZW0gaXMgYWN0dWFsbHkgc29tZXRoaW5nIGVsc2UgYWdhaW4uCisKKyAgVGhlICdzbm1wd2FsaycgY29tbWFuZCB0YWtlcyBhIHBvaW50IGluIHRoZSBvdmVyYWxsIE1JQiB0cmVlLCBhbmQgdHJpZXMKKyAgdG8gZGlzcGxheSBhbGwgdGhlIHZhbHVlcyB0aGF0IGxpZSB3aXRoaW4gdGhpcyBzdWJ0cmVlLiAgSG93ZXZlciwgaXQKKyAgYWN0dWFsbHkgZG9lcyB0aGlzIGJ5IGlzc3VpbmcgYSBzZXJpZXMgb2YgImdldG5leHQiIHJlcXVlc3RzLCB1bnRpbAorICB0aGUgdmFyaWFibGUgcmV0dXJuZWQgbGllcyBvdXRzaWRlIHRoZSBzdWJ0cmVlIG9mIGludGVyZXN0LiAgSWYgdGhlCisgIHZlcnkgZmlyc3QgcmVxdWVzdCByZXR1cm5zIHN1Y2ggYW4gdW5kZXNpcmVkIHZhbHVlLCB0aGVuIHRoZSBjb21tYW5kCisgIHdpbGwgdGVybWluYXRlLCB3aXRob3V0IGhhdmluZyBkaXNwbGF5ZWQgYW55dGhpbmcgYXQgYWxsLgorCisgICAgSWYgYW4gZXhwaWNpdCBzdGFydGluZyBwb2ludCBpcyBnaXZlbiB0byAnc25tcHdhbGsnLCB0aGVuIGl0IGlzIHJlYXNvbmFibHkKKyAgY2xlYXIgd2hhdCBpcyBoYXBwZW5pbmcsIGFuZCB0aGF0IHRoZXJlIGlzIHNpbXBseSBub3RoaW5nIGluIHRoZSBzdWJ0cmVlCisgIHNwZWNpZmllZC4gIEhvd2V2ZXIsIGlmICdzbm1wd2FsaycgaXMgY2FsbGVkIHdpdGhvdXQgZ2l2aW5nIGFuIGV4cGxpY2l0CisgIHN0YXJ0aW5nIHBvaW50LCB0aGVuIGl0IHdpbGwgZGlzcGxheSB0aGUgY29udGVudHMgb2YgdGhlICdtaWItMicgc3VidHJlZS4KKyAgSXQgd2lsbCBub3QgYXR0ZW1wdCB0byB0cmF2ZXJzZSBhbnkgJ3ByaXZhdGUuZW50ZXJwcmlzZScgc3VidHJlZSwgc3VjaCBhcworICB0aGUgVUNELXNwZWNpZmljIG9iamVjdHMgKGluY2x1ZGluZyBhbnkgbG9jYWwgZXh0ZW5zaW9ucykuCisKKyAgICBUbyB3YWxrIHRoZSB3aG9sZSB0cmVlLCBzcGVjaWZ5IGEgc3RhcnRpbmcgcG9pbnQgb2YgJy5pc28nCisgIFRvIHdhbGsgYSBzcGVjaWZpYyBlbnRlcnByaXNlIHN1YnRyZWUsIHNwZWNpZnkgdGhlIHJvb3Qgb2YgdGhpcyBhcworICB0aGUgc3RhcnRpbmcgcG9pbnQgLSBlLmc6CisKKwlzbm1wd2FsayAtdjEgLWMgcHVibGljIGxvY2FsaG9zdCB1Y2RhdmlzCisgCisgIE9yLCBvZiBjb3Vyc2UsIHlvdSBjYW4gd2FsayBhIHNlbGVjdGVkIHBvcnRpb24gb2YgYW4gZW50ZXJwcmlzZSBzdWJ0cmVlCisgIGJ5IHNwZWNpZnlpbmcgdGhlIGFwcHJvcHJpYXRlIHN0YXJ0aW5nIHBvaW50IC0gZS5nOgorCisJc25tcHdhbGsgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3QgdWNkYXZpcy52ZXJzaW9uCisgIAorICBJZiB5b3Ugc3RpbGwgY2FuJ3Qgc2VlIGFueSBpbmZvcm1hdGlvbiwga2VlcCByZWFkaW5nLiAgVGhlIG5leHQgZmV3CisgIHF1ZXN0aW9ucyB3aWxsIHByb2JhYmx5IGhlbHAgeW91LgorCisKKworPGEgbmFtZT0iUmVxdWVzdHNfYWx3YXlzX3NlZW1fdG9fdGltZW91dF9fYW5kX2Rvbl90X2dpdmVfbWVfYW55dGhpbmdfYmFja19fX1doeV8iPgorUmVxdWVzdHMgYWx3YXlzIHNlZW0gdG8gdGltZW91dCwgYW5kIGRvbid0IGdpdmUgbWUgYW55dGhpbmcgYmFjay4gIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcG9zc2libGUgY2F1c2VzIG9mIHRoaXMuCisKKyAgVGhlIG1vc3QgbGlrZWx5IGFyZSB0aGUgYWdlbnQgYWNjZXNzIGNvbnRyb2wgc2V0dGluZ3MgKHdobyBpcyBhbGxvd2VkCisgIGFjY2VzcyBieSB0aGUgYWdlbnQgaXRzZWxmKSwgb3IgZmlyZXdhbGwvcGFja2V0IGZpbHRlcmluZyBzZXR0aW5ncworICAod2hvIGlzIGFsbG93ZWQgYWNjZXNzIGJ5IHRoZSB1bmRlcmx5aW5nIG9wZXJhdGluZyBzeXN0ZW0pLgorCisgIEEgZnVsbGVyIGxpc3Qgb2YgcG9zc2libGUgY2F1c2VzICh3aXRoIGluZGljYXRpb25zIG9mIGhvdyB0byBjaGVjaworICBmb3IgZWFjaCkgaXMgYXMgZm9sbG93czoKKyAgCisJLSBpcyB0aGUgbWFjaGluZSB5b3UgYXJlIHF1ZXJ5aW5nIHVwIGFuZCBydW5uaW5nPworCQkoRG9lcyBpdCByZXNwb25kIHRvICdwaW5nJyBvciBzaW1pbGFyIHJlcXVlc3RzPykKKwktIGlzIHRoZXJlIGFuIFNOTVAgYWdlbnQgcnVubmluZyBvbiBpdD8KKwkJKFJ1biAncHMgLWVmIHwgZ3JlcCBzbm1wJyBvciAnbmV0c3RhdCAtYW4gfCBncmVwIDE2MScpCisJLSBhcmUgdGhlIHJlcXVlc3RzIGFycml2aW5nLCBvciBiZWluZyBibG9ja2VkIChlLmcuIGJ5IGEgZmlyZXdhbGwpPworCQkoUmVzdGFydCB0aGUgYWdlbnQgdXNpbmcgJ3NubXBkIC1mIC1MIC1kJworCQkgYW5kIHNlZSBpZiBpdCBzaG93cyB0aGUgaW5jb21pbmcgcGFja2V0IGR1bXBzKQorCS0gaXMgdGhlIGFnZW50IHNpbXBseSB0YWtpbmcgYSBsb25nIHRpbWUgdG8gcmVzcG9uZD8KKwkJKFRoZSAnc25tcGQgLWYgLUwgLWQnIGNvbW1hbmQgc2hvdWxkIHNob3cgYSBzZXJpZXMgb2YKKyAJCSBpbmNvbWluZyBQRFVzLCBmb2xsb3dlZCBldmVudHVhbGx5IGJ5IHRoZSBvdXRnb2luZyBQRFVzLgorCQkgVHJ5IHRoZSByZXF1ZXN0IGFnYWluIHdpdGggYSBsb25nIHRpbWVvdXQgdmFsdWUsCisJCSBlLmcuICdzbm1wY21kIC10IDEyMCAuLi4uJykKKwktIGRvZXMgdGhlIGFnZW50J3MgY29udHJvbCBzZXR0aW5ncyBhbGxvdyB0aGlzIHJlcXVlc3Q/CisJCShUaGUgJ3NubXBkIC1mIC1MIC1kJyBjb21tYW5kIHdpbGwgc2hvdyBhIHNlcmllcyBvZgorIAkJIGluY29taW5nIFBEVXMgd2l0aCAqbm8qIGNvcnJlc3BvbmRpbmcgb3V0Z29pbmcgUERVcykKKworICBOb3RlIHRoYXQgaWYgdGhlIGFnZW50IGlzIG5vdCBjb25maWd1cmVkIHRvIGFsbG93IGFjY2VzcyBmb3IgYQorICBwYXJ0aWN1bGFyIGNvbW11bml0eSwgdGhlbiB0aGUgU05NUCBzcGVjaWZpY2F0aW9uIGRlY2xhcmVzIHRoYXQgbm8KKyAgZXJyb3IgcmVzcG9uc2Ugc2hvdWxkIGJlIHNlbnQgYXQgYWxsLiAgVGhlIE5ldC1TTk1QIHRvb2xzIHdpbGwgcmV0cnkKKyAgdGhlIHJlcXVlc3QgYSBudW1iZXIgb2YgdGltZXMsIGJlZm9yZSByZXBvcnRpbmcgYSB0aW1lb3V0IGVycm9yLgorCisgICAgSWYgdGhlIGFnZW50IGlzIGNvbmZpZ3VyZWQgdG8gYWxsb3cgcGFydGlhbCBhY2Nlc3MgZm9yIGEgZ2l2ZW4KKyAgY29tbXVuaXR5LCB0aGVuIHJlcXVlc3RzIHRoYXQgZmFsbCBvdXRzaWRlIHRoaXMgYXV0aG9yaXNlZCBhY2Nlc3MKKyAgKndpbGwqIHJlc3VsdCBpbiBhbiBlcnJvciByZXNwb25zZS4KKyAgICAoU05NUCBhZ2VudHMgY2FuIGJlIHZlcnkgZnVzc3kgb3ZlciB3aG8gdGhleSB0YWxrIHRvISkKKworICAgIFNlZSB0aGUgZW50cmllcyBvbiBhY2Nlc3MgY29udHJvbCBpbiB0aGUgQUdFTlQgc2VjdGlvbiBmb3IgaG93IHRvCisgIGNvbmZpZ3VyZSB0aGUgTmV0LVNOTVAgYWdlbnQgdG8gYWxsb3cgc3VpdGFibGUgYWNjZXNzLiAgRm9yIG90aGVyCisgIHZlbmRvcnMnIGFnZW50cywgeW91IHdpbGwgbmVlZCB0byBjb25zdWx0IHRoZSByZWxldmFudCBkb2N1bWVudGF0aW9uLgorCisKKworPGEgbmFtZT0iSV9jYW5fc2VlX3RoZV9zeXN0ZW1fZ3JvdXBfX2J1dF9ub3RoaW5nX2Vsc2VfX19XaHlfIj4KK0kgY2FuIHNlZSB0aGUgc3lzdGVtIGdyb3VwLCBidXQgbm90aGluZyBlbHNlLiAgV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGlzIHByb2JhYmx5IHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBxdWVzdGlvbiAtIGEgcHJvYmxlbSB3aXRoCisgIHRoZSBhY2Nlc3MgY29uZmlndXJhdGlvbiBvZiB0aGUgYWdlbnQuICBNYW55IHByZS1jb25maWd1cmVkIHN5c3RlbXMKKyAgKHN1Y2ggYXMgbW9zdCBMaW51eCBkaXN0cmlidXRpb25zKSB3aWxsIG9ubHkgYWxsb3cgYWNjZXNzIHRvIHRoZSBzeXN0ZW0KKyAgZ3JvdXAgYnkgZGVmYXVsdCwgYW5kIG5lZWQgdG8gYmUgY29uZmlndXJlZCB0byBlbmFibGUgbW9yZSBnZW5lcmFsIGFjY2Vzcy4KKworICAgIFRoZSBlYXNpZXN0IHdheSB0byB0ZXN0IHRoaXMgaXMgdG8gdHJ5IGEgR0VUTkVYVCByZXF1ZXN0LCB0aGF0IG91Z2h0CisgIHRvIHJldHVybiB0aGUgZW50cnkgb2YgaW50ZXJlc3QuCisgIGUuZy4KKwlzbm1wZ2V0bmV4dCAtdjEgLWMgcHVibGljIGxvY2FsaG9zdCB1Y2RhdmlzLnZlcnNpb24udmVyc2lvblRhZworICBpbnN0ZWFkIG9mCisJc25tcGdldCAgICAgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3QgdWNkYXZpcy52ZXJzaW9uLnZlcnNpb25UYWcuMAorCisgIElmIHRoZSBhZ2VudCByZXNwb25kcyB3aXRoICJlbmQgb2YgTUlCIiBvciBhIGRpZmZlcmVudCBvYmplY3QsIHRoZW4KKyAgZWl0aGVyIHRoZSBhZ2VudCBkb2Vzbid0IGltcGxlbWVudCB0aGF0IHBhcnRpY3VsYXIgb2JqZWN0IGF0IGFsbCwgb3IKKyAgdGhlIGFjY2VzcyBjb250cm9sIHdvbid0IGFsbG93IHlvdSBhY2Nlc3MgdG8gaXQuCisKKyAgU2VlIHRoZSBlbnRyaWVzIG9uIGFjY2VzcyBjb250cm9sIGluIHRoZSBBR0VOVCBzZWN0aW9uIGZvciBob3cgdG8KKyAgY29uZmlndXJlIHRoZSBOZXQtU05NUCBhZ2VudCwgb3IgY29uc3VsdCB0aGUgYWdlbnQncyBvd24gZG9jdW1lbnRhdGlvbi4KKworCisKKzxhIG5hbWU9IlRoZV9hZ2VudF93b3JrZWRfZm9yX2Ffd2hpbGVfX3RoZW5fc3RvcHBlZF9yZXNwb25kaW5nX19fV2h5XyI+CitUaGUgYWdlbnQgd29ya2VkIGZvciBhIHdoaWxlLCB0aGVuIHN0b3BwZWQgcmVzcG9uZGluZy4gIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQXNzdW1pbmcgdGhhdCB0aGUgYWdlbnQgaGFzbid0IGNyYXNoZWQgY29tcGxldGVseSwgdGhlIG1vc3QgbGlrZWx5CisgIGV4cGxhbmF0aW9uIGlzIHRoYXQgaXQncyBzaW1wbHkgb3ZlcmxvYWRlZCwgYW5kIGlzIHRha2luZyBsb25nZXIgdG8KKyAgcmVzcG9uZCB0aGFuIHRoZSBxdWVyeWluZyB0b29sIGlzIHdhaXRpbmcuICBTaW5jZSB0aGUgYWdlbnQgaGFuZGxlcworICBlYWNoIHJlcXVlc3QgaW4gdHVybiwgd2l0aG91dCByZWdhcmQgdG8gZWFybGllciBhY3Rpdml0eSwgYW5kIG1vc3QKKyAgdG9vbHMgd2lsbCByZXRyeSBhIHJlcXVlc3Qgd2hlbiBpdCB0aW1lcyBvdXQsIHRoZSBsaXN0IG9mIG91dHN0YW5kaW5nCisgIHJlcXVlc3RzIGNhbiBncm93IGxvbmdlciBhbmQgbG9uZ2VyLgorCisgICAgVG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhpcyBpcyB0aGUgY2F1c2Ugb3Igbm90LCB0cnkgbGVhdmluZyB0aGUKKyAgYWdlbnQgdW5kaXN0dXJiZWQgZm9yIGEgd2hpbGUsIGFuZCB0aGVuIHByb2JlIGl0IHVzaW5nIGEgbG9uZ2VyCisgIHRpbWVvdXQgKGUuZy4gJy10IDEyMCcpLiAgVGhpcyBzaG91bGQgZ2l2ZSB0aGUgYWdlbnQgdGltZSB0byBoYW5kbGUKKyAgZWFjaCByZXF1ZXN0IGZpcnN0IHRpbWUgcm91bmQsIGFuZCBhdm9pZHMgb3ZlcmxvYWRpbmcgaXQgd2l0aAorICBkdXBsaWNhdGUgcmVxdWVzdHMuCisKKyAgVGhpcyBpcyBub3QgYSBmdWxsIHNvbHV0aW9uLCBvZiBjb3Vyc2UsIGJ1dCBhdCBsZWFzdCBpdCBzaG91bGQKKyAgYWxsb3cgeW91IHRvIGlzb2xhdGUgdGhlIG9mZmVuZGluZyBwb3J0aW9uIG9mIHRoZSB0cmVlLiBUaGUKKyAgZGV2ZWxvcGVycyBtYXkgdGhlbiBiZSBhYmxlIHRvIG9mZmVyIGEgbW9yZSBsb25nLXRlcm0gc29sdXRpb24uCisKKworCis8YSBuYW1lPSJSZXF1ZXN0aW5nX2FuX29iamVjdF9mYWlsc193aXRoX19Vbmtub3duX09iamVjdF9JZGVudGlmaWVyX19fV2h5XyI+CitSZXF1ZXN0aW5nIGFuIG9iamVjdCBmYWlscyB3aXRoICJVbmtub3duIE9iamVjdCBJZGVudGlmaWVyIiAgV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIElmIGEgZ2VuZXJhbCBzbm1wd2FsayBzaG93cyB0aGUgZW50cnksIGJ1dCBhc2tpbmcgZm9yIGl0IG1vcmUKKyAgc3BlY2lmaWNhbGx5IGdpdmVzIGEgInN1Yi1pZGVudGlmaWVyIG5vdCBmb3VuZDoiIG9yICJVbmtub3duIE9iamVjdAorICBJZGVudGlmaWVyIiBlcnJvciwgdGhlbiB0aGF0J3MgYSBwcm9ibGVtIHdpdGggdGhlIHRvb2wsIHJhdGhlciB0aGFuCisgIHRoZSBhZ2VudC4KKworICAgIEZpcnN0bHksIG1ha2Ugc3VyZSB0aGF0IHlvdSdyZSBhc2tpbmcgZm9yIHRoZSBvYmplY3QgYnkgdGhlIHJpZ2h0IG5hbWUuCisgIE9iamVjdCBkZXNjcmlwdG9ycyBhcmUgY2FzZS1zZW5zaXRpdmUsIHNvIGFza2luZyBmb3IgJ3N5c3VwdGltZScgd2lsbAorICBub3QgYmUgcmVjb2duaXNlZCwgYnV0ICdzeXNVcFRpbWUnIHdpbGwuCisKKyAgICBTZWNvbmRseSwgdGhlIG9iamVjdCBtYXkgYmUgZGVmaW5lZCBpbiBhIE1JQiB0aGF0IGhhc24ndCBiZWVuIGxvYWRlZC4KKyAgVHJ5IGxvYWRpbmcgaW4gYWxsIHRoZSBNSUIgZmlsZXM6CisKKwlzbm1wZ2V0IC1tIEFMTCAtdjEgLWMgcHVibGljIGxvY2FsaG9zdCBzeXNVcFRpbWUuMAorCisgICh0aG91Z2ggaWYgc25tcHdhbGsgdHJhbnNsYXRlcyBpdCBPSywgdGhhdCdzIGxlc3MgbGlrZWx5IHRvIGJlIHRoZSBjYXVzZSkuCisKKyAgICBUaGlyZGx5LCBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSBVQ0Qgc29mdHdhcmUgZXhwZWN0ZWQgImZ1bGwiIHBhdGhzCisgIGZvciBvYmplY3QgbmFtZXMsIGVpdGhlciBiYXNlZCBhdCB0aGUgcm9vdCBvZiB0aGUgd2hvbGUgTUlCIHRyZWUKKyAgKCIuaXNvLm9yZy5kb2QuaW50ZXJuZXQubWdtdC5taWItMi5zeXN0ZW0uc3lzVXBUaW1lIikgb3IgdGhlICdtaWItMicKKyAgc3VidHJlZSAoInN5c3RlbS5zeXNVcFRpbWUiKS4gIFRyeToKKyAgCisJc25tcGdldCAtdjEgLWMgcHVibGljIG15aG9zdCBzeXN0ZW0uc3lzVXBUaW1lLjAKKworICBUaGVzZSBlYXJsaWVyIHZlcnNpb25zIG9mIHRoZSB0b29scyBtYXkgdGFrZSBhIGNvbW1hbmQtbGluZSBvcHRpb24gJy1SJworICBvciAnLUlSJyAoZGVwZW5kaW5nIG9uIHZpbnRhZ2UpIHRvIGludm9rZSB0aGlzICJyYW5kb20tYWNjZXNzIiBtb2RlLgorICBOb3RlIHRoYXQgc25tcHRyYW5zbGF0ZSBzdGlsbCByZXF1aXJlcyAicmFuZG9tLWFjY2VzcyIgdG8gYmUgc3BlY2lmaWVkCisgIGV4cGxpY2l0bHkgLSBhbGwgb3RoZXIgY29tbWFuZCB0b29scyBub3cgdXNlIHRoaXMgbW9kZSBieSBkZWZhdWx0cy4KKworICBBbGwgdmVyc2lvbnMgb2YgdGhlIFVDRCBhbmQgTmV0LVNOTVAgdG9vbHMgYWNjZXB0IHRoZSBzeW50YXgKKworCXNubXBnZXQgLXYxIC1jIHB1YmxpYyBteWhvc3QgUkZDMTIxMy1NSUI6c3lzVXBUaW1lLjAKKworICB0byBkZW5vdGUgYSBwYXJ0aWN1bGFyIG9iamVjdCBpbiBhIHNwZWNpZmljIE1JQiBtb2R1bGUuICBOb3RlIHRoYXQgdGhpcworICB1c2VzIHRoZSBuYW1lIG9mIHRoZSAqbW9kdWxlKiwgbm90IHRoZSBuYW1lIG9mIHRoZSBmaWxlLiAgU2VlIHRoZSBzZWNvbmQKKyAgcXVlc3Rpb24gaW4gdGhpcyBzZWN0aW9uIGZvciB0aGUgZGlzdGluY3Rpb24uCisKKworCis8YSBuYW1lPSJXaHlfZG9fSV9nZXRfX25vU3VjaE5hbWVfX3doZW5fYXNraW5nX2Zvcl9fc3lzVXBUaW1lX19fb3Jfc2ltaWxhcl9fIj4KK1doeSBkbyBJIGdldCAibm9TdWNoTmFtZSIgd2hlbiBhc2tpbmcgZm9yICJzeXNVcFRpbWUiIChvciBzaW1pbGFyKT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZXJlIGFyZSBhIG51bWJlciBvZiBwb3NzaWJsZSBjYXVzZXMgb2YgdGhpcyAoc2NhdHRlcmVkIHRocm91Z2hvdXQKKyAgdGhpcyBGQVEsIHNvIGtlZXAgcmVhZGluZyEpLiAgIEJ1dCBvbmUgb2YgdGhlIG1vc3QgbGlrZWx5IHNuYXJlcyBmb3IKKyAgdGhlIHVud2FyeSBpcyBmb3JnZXR0aW5nIHRoZSBpbnN0YW5jZSBzdWJpZGVudGlmaWVyIGZvciAnbm9uLXRhYmxlJworICBvYmplY3RzLiAgSWYgeW91IHdhbGsgdGhlICdzeXN0ZW0nIHRyZWUsIHlvdSdsbCBub3RpY2UgdGhhdCBhbGwgdGhlCisgIHJlc3VsdHMgKGFwYXJ0IGZyb20gdGhlIHN5c09SVGFibGUpLCBoYXZlIGEgJy4wJyBhdCB0aGUgZW5kIG9mIHRoZSBPSUQuCisgIFRoaXMgaXMgdGhlICJpbnN0YW5jZSBzdWItaWRlbnRpZmllciIgLSB3aGljaCAqbXVzdCogYmUgaW5jbHVkZWQgZm9yCisgIGEgR0VUIHJlcXVlc3QuCisgICAgIENvbXBhcmUgdGhlIGZvbGxvd2luZzoKKworCSQgc25tcGdldCAtdjEgLWMgcHVibGljIGxvY2FsaG9zdCBzeXNVcFRpbWUKKwlFcnJvciBpbiBwYWNrZXQKKwlSZWFzb246IChub1N1Y2hOYW1lKSBUaGVyZSBpcyBubyBzdWNoIHZhcmlhYmxlIG5hbWUgaW4gdGhpcyBNSUIuCisJVGhpcyBuYW1lIGRvZXNuJ3QgZXhpc3Q6IHN5c3RlbS5zeXNVcFRpbWUKKwkkIHNubXBnZXQgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKKwlzeXN0ZW0uc3lzVXBUaW1lLjAgPSBUaW1ldGlja3M6ICg2OTE4OTI3MSkgOCBkYXlzLCAwOjExOjMyLjcxCisKKyAgVGhpcyBpcyBhIGxpdHRsZSBsZXNzIG9ic2N1cmUgd2hlbiB1c2luZyBTTk1QdjJjIG9yIHYzIHJlcXVlc3RzOgorCisJJCBzbm1wZ2V0IC12IDJjIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzVXBUaW1lCisJc3lzdGVtLnN5c1VwVGltZSA9IE5vIFN1Y2ggSW5zdGFuY2UgY3VycmVudGx5IGV4aXN0cworCisKKworPGEgbmFtZT0iV2h5X2RvX0lfc29tZXRpbWVzX2dldF9fRW5kX29mX01JQl9fd2hlbl93YWxraW5nX2FfdHJlZV9fYW5kX3NvbWV0aW1lc19ub3RfIj4KK1doeSBkbyBJIHNvbWV0aW1lcyBnZXQgIkVuZCBvZiBNSUIiIHdoZW4gd2Fsa2luZyBhIHRyZWUsIGFuZCBzb21ldGltZXMgbm90PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGRlcGVuZHMgb24gd2hpY2ggTUlCIG1vZHVsZXMgYXJlIHN1cHBvcnRlZCBieSB0aGUgYWdlbnQgeW91IGFyZQorICBxdWVyeWluZyBhbmQgd2hhdCB5b3UncmUgYXNraW5nIGZvci4KKworICBSZWNhbGwgdGhhdCBhIHRyZWUgaXMgd2Fsa2VkIGJ5IHJlcGVhdGVkbHkgYXNraW5nIGZvciAidGhlIG5leHQgZW50cnkiIHVudGlsCisgIGFsbCB0aGUgdmFsdWVzIHVuZGVyIHRoYXQgdHJlZSBoYXZlIGJlZW4gcmV0cmlldmVkLiAgSG93ZXZlciwgdGhlIGFnZW50IGhhcworICBubyBpZGVhIHRoYXQgdGhpcyBpcyB3aGF0J3MgaGFwcGVuaW5nIC0gYWxsIGl0IHNlZXMgaXMgYSByZXF1ZXN0IGZvciAidGhlCisgIG5leHQgZW50cnkgYWZ0ZXIgWCIuCisKKyAgSWYgdGhlIG9iamVjdCBYIGhhcHBlbnMgdG8gYmUgdGhlIGxhc3QgZW50cnkgaW4gYSBzdWItdHJlZSwgdGhlIGFnZW50IHdpbGwKKyAgcHJvdmlkZSB0aGUgbmV4dCBvYmplY3Qgc3VwcG9ydGVkIChhcyByZXF1ZXN0ZWQpIGV2ZW4gdGhvdWdoIHRoaXMgd2lsbCBiZQorICBpbiBhIGRpZmZlcmVudCBzdWJ0cmVlLiAgSXQncyB1cCB0byB0aGUgcXVlcnlpbmcgdG9vbCB0byByZWNvZ25pc2UgdGhhdAorICB0aGlzIGxhc3QgcmVzdWx0IGxpZXMgb3V0c2lkZSB0aGUgYXJlYSBvZiBpbnRlcmVzdCwgYW5kIHNpbXBseSBkaXNjYXJkIGl0LgorCisgIElmIHRoZSBvYmplY3QgWCBoYXBwZW5zIHRvIGJlIHRoZSBsYXN0IGVudHJ5IHN1cHBvcnRlZCBieSB0aGUgYWdlbnQsIGl0CisgIGRvZXNuJ3QgaGF2ZSBhbm90aGVyIG9iamVjdCB0byBwcm92aWRlLCBzbyByZXR1cm5zIGFuICJlbmQgb2YgTUlCIgorICBpbmRpY2F0aW9uLiAgVGhlIE5ldC1TTk1QIHRvb2xzIHJlcG9ydCB0aGlzIHdpdGggdGhlIG1lc3NhZ2UgYWJvdmUuCisKKyAgQnV0IGluIGVpdGhlciBjYXNlLCB0aGUgYWN0dWFsIGluZm9ybWF0aW9uIHByb3ZpZGVkIHdpbGwgYmUgdGhlIHNhbWUuCisKKworCis8YSBuYW1lPSJJX2Nhbm5vdF9zZXRfYW55X3ZhcmlhYmxlc19pbl90aGVfTUlCXyI+CitJIGNhbm5vdCBzZXQgYW55IHZhcmlhYmxlcyBpbiB0aGUgTUlCLgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoZXJlIGFyZSB0aHJlZSBwb3NzaWJsZSByZWFzb25zIGZvciB0aGlzOgorCisgIFRoZSBtYWpvcml0eSBvZiBNSUIgb2JqZWN0cyBhcmUgZGVmaW5lZCBhcyAicmVhZC1vbmx5IiBhbmQgaW5oZXJlbnRseQorICBjYW5ub3QgYmUgY2hhbmdlZCB2aWEgU0VUIHJlcXVlc3RzLgorCisgIE9mIHRob3NlIHRoYXQgY2FuIGluIHByaW5jaXBsZSBiZSBjaGFuZ2VkLCBub3QgYWxsIGhhdmUgYmVlbiBpbXBsZW1lbnRlZAorICBhcyBzdWNoIGluIHRoaXMgYWdlbnQuCisKKyAgRXZlbiBpZiBTRVQgc3VwcG9ydCBoYXMgYmVlbiBpbXBsZW1lbnRlZCwgdGhlIGFnZW50IG1heSBub3QgYmUgY29uZmlndXJlZAorICB0byBhbGxvdyB3cml0ZSBhY2Nlc3MgdG8gdGhpcyBvYmplY3QuCisKKyAgVGhlIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIHNoaXBwZWQgd2l0aCB0aGUgYmFzaWMgZGlzdHJpYnV0aW9uIG9ubHkKKyAgYWxsb3dzIHdyaXRlIGFjY2VzcyBmb3IgdGhlIGxvY2FsIGhvc3QgaXRzZWxmIChhbmQgYSBzdWl0YWJsZSBjb21tdW5pdHkKKyAgbmFtZSBtdXN0IGJlIGNvbmZpZ3VyZWQgZmlyc3QpLgorICAgIFJlYWR5LWluc3RhbGxlZCBkaXN0cmlidXRpb25zIChzdWNoIGFzIHRob3NlIHNoaXBwZWQgd2l0aCBMaW51eCkgdGVuZAorICB0byBiZSBjb25maWd1cmVkIHdpdGggcmVhZC1vbmx5IGFjY2VzcyB0byBwYXJ0IG9mIHRoZSBtaWIgdHJlZSAodHlwaWNhbGx5CisgIGp1c3QgdGhlIHN5c3RlbSBncm91cCkgYW5kIG5vIHdyaXRlIGFjY2VzcyBhdCBhbGwuCisKKyAgVG8gY2hhbmdlIHRoaXMsIHlvdSB3aWxsIG5lZWQgdG8gc2V0IHVwIHRoZSBhZ2VudCdzIGFjY2VzcyBjb250cm9sCisgIGNvbmZpZ3VyYXRpb24uICBTZWUgdGhlIEFHRU5UIHNlY3Rpb24gZm9yIG1vcmUgZGV0YWlscy4KKworICAgIE5vdGUgdGhhdCBuZWl0aGVyIHRoZSBjb21tdW5pdHkgc3RyaW5nICJwdWJsaWMiIG5vciAicHJpdmF0ZSIgY2FuIGJlCisgIHVzZWQgdG8gc2V0IHZhcmlhYmxlcyBpbiBhIHR5cGljYWwgZGVmYXVsdCBjb25maWd1cmF0aW9uLgorCisKKworPGEgbmFtZT0iVmFyaWFibGVzX3NlZW1fdG9fZGlzYXBwZWFyX3doZW5fSV90cnlfdG9fc2V0X3RoZW1fX19XaHlfIj4KK1ZhcmlhYmxlcyBzZWVtIHRvIGRpc2FwcGVhciB3aGVuIEkgdHJ5IHRvIHNldCB0aGVtLiAgV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGlzIGFjdHVhbGx5IHRoZSBzYW1lIGFzIHRoZSBwcmV2aW91cyBxdWVzdGlvbiAtIGl0IGp1c3QgaXNuJ3QKKyAgcGFydGljdWxhcmx5IG9idmlvdXMsIHBhcnRpY3VsYXJseSB3aGVuIHVzaW5nIFNOTVB2MS4gIEEgdHlwaWNhbAorICBleGFtcGxlIG9mIHRoaXMgZWZmZWN0IHdvdWxkIGJlCisKKwkkIHNubXBnZXQgLXYxIC1jIHB1YmxpYyBsb2NhbGhvc3Qgc3lzdGVtLnN5c0xvY2F0aW9uLjAKKwlzeXN0ZW0uc3lzTG9jYXRpb24uMCA9IHNvbWV3aGVyZSBuZWFyYnkKKworCSQgc25tcHNldCAtdjEgLWMgcHVibGljIGxvY2FsaG9zdCBzeXN0ZW0uc3lzTG9jYXRpb24uMCBzICJyaWdodCBoZXJlIgorCUVycm9yIGluIHBhY2tldC4KKwlSZWFzb246IChub1N1Y2hOYW1lKSBUaGVyZSBpcyBubyBzdWNoIHZhcmlhYmxlIG5hbWUgaW4gdGhpcyBNSUIuCisJVGhpcyBuYW1lIGRvZXNuJ3QgZXhpc3Q6IHN5c3RlbS5zeXNMb2NhdGlvbi4wCisKKyAgVHJ5aW5nIHRoZSBzYW1lIHJlcXVlc3QgdXNpbmcgU05NUHYyIG9yIGFib3ZlIGlzIHNvbWV3aGF0IG1vcmUgaW5mb3JtYXRpdmU6CisKKwkkIHNubXBzZXQgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdCBzeXN0ZW0uc3lzTG9jYXRpb24uMCBzICJyaWdodCBoZXJlIgorICAgICAgICBFcnJvciBpbiBwYWNrZXQuCisgICAgICAgIFJlYXNvbjogbm90V3JpdGFibGUKKworICBUaGUgU05NUHYxIGVycm9yICdub1N1Y2hOYW1lJyBhY3R1YWxseSBtZWFuczoKKworCSJZb3UgY2FuJ3QgZG8gdGhhdCB0byB0aGlzIHZhcmlhYmxlIgorCisgIFRoaXMgbWlnaHQgYmUgYmVjYXVzZSB0aGUgdmFyaWFibGUgZG9lc24ndCBleGlzdCwgaXQgZG9lcyBleGlzdCBidXQKKyAgeW91IGRvbid0IGhhdmUgYWNjZXNzIHRvIGl0IChidXQgc29tZW9uZSBlbHNlIG1heSBkbyksIG9yIGl0IGV4aXN0cworICBidXQgeW91IGNhbid0IHBlcmZvcm0gdGhhdCBwYXJ0aWN1bGFyIG9wZXJhdGlvbiAoaS5lLiBjaGFuZ2luZyBpdCkuCisgICAgU2ltaWxhcmx5LCB0aGUgU05NUHYyIGVycm9yICdub3RXcml0YWJsZScgbWVhbnMgIm5vdCB3cml0YWJsZSBpbgorICB0aGlzIHBhcnRpY3VsYXIgY2FzZSIgcmF0aGVyIHRoYW4gIm5vdCB3cml0YWJsZSB1bmRlciBhbnkgY2lyY3Vtc3RhbmNlcyIuCisKKyAgSWYgeW91IGFyZSBzdXJlIHRoYXQgdGhlIG9iamVjdCBpcyB3cml0YWJsZSAoYW5kIGhhcyBiZWVuIGltcGxlbWVudGVkCisgIGFzIHN1Y2gpLCB0aGVuIHlvdSBwcm9iYWJseSBuZWVkIHRvIGxvb2sgYXQgdGhlIGFnZW50IGFjY2VzcyBjb250cm9sLgorICBTZWUgdGhlIEFHRU5UIHNlY3Rpb24gZm9yIG1vcmUgZGV0YWlscy4KKworCisKK0kgc3RpbGwgY2FuJ3QgY2hhbmdlIHN5c0xvY2F0aW9uLCB0aG91Z2ggdGhlIGFjY2VzcyBzZXR0aW5ncyBhbGxvdyBpdC4gIFdoeSBub3Q/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBPbmUgb3RoZXIgcG9zc2liaWxpdHkgZm9yIHRoZSAnc3lzTG9jYXRpb24nIGFuZCAnc3lzQ29udGFjdCcgb2JqZWN0cywKKyAgaXMgdGhhdCB5b3UndmUgZ290IGEgY29uZmlndXJhdGlvbiBvcHRpb24gaW4gdGhlICdzbm1wZC5jb25mJyBmaWxlIHdoaWNoCisgIGFscmVhZHkgc2V0cyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSB0aGVyZS4KKworICAgIEVhcmxpZXIgdmVyc2lvbnMgb2YgdGhlIGFnZW50IHdvdWxkIGFsbG93IHlvdSB0byB3cml0ZSB0byB0aGVzZSBvYmplY3RzLAorICBidXQgdGhlIG5ldyB2YWx1ZSB3b3VsZCBiZSBmb3Jnb3R0ZW4gdGhlIG5leHQgdGltZSB0aGUgYWdlbnQgd2FzIHJlLXN0YXJ0ZWQuCisgIE1vcmUgcmVjZW50IHZlcnNpb25zIG9mIHRoZSBhZ2VudCByZWplY3Qgc3VjaCB3cml0ZSByZXF1ZXN0cyBpZiB0aGVyZSdzIGEKKyAgdmFsdWUgc2V0IHZpYSB0aGUgY29uZmlnIGZpbGUuICAgSWYgdGhlcmUgaXNuJ3Qgc3VjaCBhIGNvbmZpZyBzZXR0aW5nLCB0aGVuCisgIHRoZSB3cml0ZSByZXF1ZXN0IHdpbGwgc3VjY2VlZCAoYXNzdW1pbmcgdGhlIGFjY2VzcyBzZXR0aW5ncyBhbGxvdyBpdCksIGFuZAorICB0aGUgbmV3IHZhbHVlIHdpbGwgYmUgcmV0YWluZWQgdGhlIG5leHQgdGltZSB0aGUgYWdlbnQgcmVzdGFydHMuCisKKworCis8YSBuYW1lPSJJX2dldF9hbl9lcnJvcl93aGVuX3RyeWluZ190b19zZXRfYV9uZWdhdGl2ZV92YWx1ZV9fX3doeV8iPgorSSBnZXQgYW4gZXJyb3Igd2hlbiB0cnlpbmcgdG8gc2V0IGEgbmVnYXRpdmUgdmFsdWUgLSB3aHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBpcyBhIGRpZmZlcmVudCBwcm9ibGVtLiAgV2hhdCdzIGhhcHBlbmluZyBoZXJlIGlzIHRoYXQgdGhlCisgIHJvdXRpbmUgdGhhdCBwYXJzZXMgdGhlIGFyZ3VtZW50cyB0byB0aGUgJ3NubXBzZXQnIGNvbW1hbmQgaXMgc2VlaW5nCisgIHRoZSAnLScgb2YgdGhlIG5ldyB2YWx1ZSwgYW5kIHRyZWF0aW5nIGl0IGFzIGEgY29tbWFuZC1saW5lIG9wdGlvbi4KKyAgVGhpcyBub3JtYWxseSBnZW5lcmF0ZXMgYW4gZXJyb3IgKHNpbmNlIGRpZ2l0cyBwcm9iYWJseSBhcmVuJ3QgdmFsaWQKKyAgY29tbWFuZCBsaW5lIG9wdGlvbikuCisKKyAgICBUaGUgZWFzaWVzdCB3YXkgdG8gc29sdmUgdGhpcyBpcyBpbmNsdWRlIHRoZSAiZW5kLW9mLW9wdGlvbiIKKyAgaW5kaWNhdG9yICctLScgaW4gdGhlIGNvbW1hbmQgbGluZSwgc29tZXdoZXJlIGJlZm9yZSB0aGUgbmV3IHZhbHVlCisgIChidXQgYWZ0ZXIgYWxsIG9mIHRoZSBvcHRpb25zLCBvYnZpb3VzbHkpLiAgRm9yIGV4YW1wbGU6CisKKwlzbm1wc2V0IC12IDJjIC1jIHB1YmxpYyBsb2NhbGhvc3QgLS0gdmVyc2lvblJlc3RhcnRBZ2VudC4wIGkgLTEKKworICAoVGhpcyB3aWxsIGFsc28gZmFpbCwgc2luY2UgLTEgaXNuJ3QgYW4gYWNjZXB0YWJsZSB2YWx1ZSBmb3IgdGhpcworICBvYmplY3QsIGJ1dCBpdCB3aWxsIGJlIHJlamVjdGVkIGJ5IHRoZSBhZ2VudCwgcmF0aGVyIHRoYW4gY29uZnVzaW5nCisgIHRoZSBzbm1wc2V0IGNvbW1hbmQhKQorCisKKworPGEgbmFtZT0iSV9nZXRfYW5fZXJyb3Jfd2hlbl90cnlpbmdfdG9fZ2V0X2Ffc3RyaW5nX2luZGV4ZWRfdGFibGVfdmFsdWVfX193aHlfIj4KK0kgZ2V0IGFuIGVycm9yIHdoZW4gdHJ5aW5nIHRvIGdldCBhIHN0cmluZy1pbmRleGVkIHRhYmxlIHZhbHVlIC0gd2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIHRoZSBzaGVsbCBzd2FsbG93aW5nIHRoZSBxdW90ZXMsIGJlZm9yZQorICB0aGV5IGV2ZXIgZ2V0IHRvIHRoZSBTTk1QIGNvbW1hbmQncyBPSUQgcGFyc2VyLiAgVHJ5IGVzY2FwaW5nIHRoZW06CisKKwlzbm1wZ2V0IC4uLi4uICAgdmFjbVNlY3VyaXR5TW9kZWwuMC5cIndlc1wiCisgIG9yCXNubXBnZXQgLi4uLi4gICd2YWNtU2VjdXJpdHlNb2RlbC4wLiJ3ZXMiJworCisKKyAgCis8YSBuYW1lPSJIb3dfZG9fSV9zZW5kX3RyYXBzX2FuZF9ub3RpZmljYXRpb25zXyI+CitIb3cgZG8gSSBzZW5kIHRyYXBzIGFuZCBub3RpZmljYXRpb25zPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUcmFwcyBhbmQgbm90aWZpY2F0aW9ucyBjYW4gYmUgc2VudCB1c2luZyB0aGUgY29tbWFuZCAnc25tcHRyYXAnLgorICBUaGUgZm9sbG93aW5nIGV4YW1wbGVzIGdlbmVyYXRlIHRoZSBnZW5lcmljIHRyYXAgJ2NvbGRTdGFydCcgYW5kIGEKKyAgKGR1bW15KSBlbnRlcnByaXNlIHNwZWNpZmljIHRyYXAgJzk5JyByZXNwZWN0aXZlbHk6CisKKwlzbm1wdHJhcCAtdiAxIC1jIHB1YmxpYyBsb2NhbGhvc3QgIiIgIiIgMCAwICAiIgorCXNubXB0cmFwIC12IDEgLWMgcHVibGljIGxvY2FsaG9zdCAiIiAiIiA2IDk5ICIiCisgIAorICBUaGUgZW1wdHkgcGFyYW1ldGVycyAiIiB3aWxsIHVzZSBzdWl0YWJsZSBkZWZhdWx0cyBmb3IgdGhlIHJlbGV2YW50IAorICB2YWx1ZXMgKGVudGVycHJpc2UgT0lELCBhZGRyZXNzIG9mIHNlbmRlciBhbmQgY3VycmVudCBzeXN1cHRpbWUpLgorCisgICAgQW4gU05NUHYyIG9yIFNOTVB2MyBub3RpZmljYXRpb24gKGVpdGhlciB0cmFwIG9yIGluZm9ybSkgdGFrZXMKKyAgdGhlIE9JRCBvZiB0aGUgdHJhcCB0byBzZW5kOgorCisJc25tcHRyYXAgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdCAiIiBVQ0QtU05NUC1NSUI6OnVjZFN0YXJ0CisJc25tcHRyYXAgLXYgMmMgLWMgcHVibGljIGxvY2FsaG9zdCAiIiAuMS4zLjYuMS40LjEuMjAyMS4yNTEuMQorCisgIChUaGVzZSB0d28gYXJlIGVxdWl2YWxlbnQgd2F5cyBvZiBzcGVjaWZ5aW5nIHRoZSBzYW1lIHRyYXApLgorCisgIEFueSBvZiB0aGVzZSBjb21tYW5kcyBjYW4gYmUgZm9sbG93ZWQgYnkgb25lIG9yIG1vcmUgdmFyYmluZHMsCisgIHVzaW5nIHRoZSBzYW1lIChPSUQvdHlwZS92YWx1ZSkgc3ludGF4IGFzIGZvciAnc25tcHNldCc6CisKKwlzbm1wdHJhcCAtdiAyYyAtYyBwdWJsaWMgbG9jYWxob3N0ICIiIHVjZFN0YXJ0IHN5c0NvbnRhY3QuMCBzICJEYXZlIgorCisgIEdlbmVyYXRpbmcgdHJhcHMgZnJvbSB3aXRoaW4gdGhlIGFnZW50IGlzIGNvdmVyZWQgaW4gdGhlIEFHRU5UIGFuZAorICBDT0RJTkcgc2VjdGlvbnMuCisKKyAgWW91IHNob3VsZCBhbHNvIHJlYWQgdGhlIHNubXB0cmFwIHR1dG9yaWFsIGF0CisJaHR0cDovL3d3dy5uZXQtc25tcC5vcmcvdHV0b3JpYWwtNS9jb21tYW5kcy9zbm1wdHJhcC5odG1sCisgIHdoaWNoIHdpbGwgaGVscCB5b3UgdW5kZXJzdGFuZCBldmVyeXRoaW5nIHlvdSBuZWVkIHRvIGtub3cgYWJvdXQgdHJhcHMuCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV9oYW5kbGVfdHJhcHNfYW5kX25vdGlmaWNhdGlvbnNfIj4KK0hvdyBkbyBJIGhhbmRsZSB0cmFwcyBhbmQgbm90aWZpY2F0aW9ucz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgSGFuZGxpbmcgcmVjZWl2ZWQgdHJhcHMgaXMgZG9uZSB1c2luZyB0aGUgdG9vbCAnc25tcHRyYXBkJy4KKyAgVGhpcyBjYW4gbG9nIHRoZXNlIHRyYXBzIHZpYSB0aGUgc3lzbG9nIG1lY2hhbmlzbToKKworCXNubXB0cmFwZCAtcyAtbDcJKGxvZyB0byAnTE9DQUw3JykKKworICBwcmludGVkIHRvIHN0YW5kYXJkIG91dHB1dAorCisJc25tcHRyYXBkIC1mIC1QCisKKyAgb3IgcGFzcyB0aGVtIHRvIGFuIGV4dGVybmFsIGNvbW1hbmQuICBUaGlzIGxhc3QgYXBwcm9hY2ggdXNlcworICBhICd0cmFwaGFuZGxlJyBkaXJlY3RpdmUgaW4gdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSAnc25tcHRyYXBkLmNvbmYnLgorICBBIHR5cGljYWwgZmlsZSBtaWdodCBsb29rIHNvbWV0aGluZyBsaWtlOgorCisJdHJhcGhhbmRsZSAuMS4zLjYuMS42LjMuMS41LjEgICAgICAgcGFnZV9tZSB1cAorCXRyYXBoYW5kbGUgLjEuMy42LjEuNC4xLjIwMjEuMjUxLjEgIHBhZ2VfbWUgdXAKKwl0cmFwaGFuZGxlIC4xLjMuNi4xLjQuMS4yMDIxLjI1MS4yICBwYWdlX21lIGRvd24KKwl0cmFwaGFuZGxlIGRlZmF1bHQgICAgICAgICAgICAgICAgICBsb2dfaXQKKworICB3aGVyZSAncGFnZV9tZScgYW5kICdsb2dfaXQnIGFyZSB0aGUgY29tbWFuZCB0byBiZSBydW4uICAoWW91IHByb2JhYmx5CisgIG5lZWQgdG8gc3BlY2lmeSBmdWxsIHBhdGhuYW1lcywgdG8gZW5zdXJlIHRoYXQgdGhlIGNvbW1hbmRzIHdpbGwgYmUKKyAgZm91bmQuICBUaGV5J3JlIGp1c3Qgc2hvcnQgaGVyZSBmb3IgcmVhZGFiaWxpdHkpLgorCisgIE5vdGUgdGhhdCB0aGUgZmlyc3QgZW50cnkgdXNlcyB0aGUgT0lEIGNvcnJlc3BvbmRpbmcgdG8gdGhlIFNOTVB2MQorICAnY29sZFN0YXJ0JyB0cmFwLiAgU2VlIHRoZSBjby1leGlzdGVuY2UgUkZDIChSRkMgMjU3NikgZm9yIGRldGFpbHMKKyAgb2YgbWFwcGluZyBTTk1QdjEgdHJhcHMgdG8gU05NUHYyIE9JRHMuCisKKyAgVGhlcmUncyBhIHR1dG9yaWFsIHdpdGggbW9yZSBkZXRhaWxzIG9uIHRoZSB3ZWIgc2l0ZSBhdAorCWh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvY29tbWFuZHMvc25tcHRyYXAuaHRtbAorICAKKworCis8YSBuYW1lPSJNeV90cmFwaGFuZGxlcl9zY3JpcHRfZG9lc25fdF93b3JrX3doZW5fcnVuX2xpa2VfdGhpc19fX3doeV9ub3RfIj4KK015IHRyYXBoYW5kbGVyIHNjcmlwdCBkb2Vzbid0IHdvcmsgd2hlbiBydW4gbGlrZSB0aGlzIC0gd2h5IG5vdD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgSWYgYSB0cmFwaGFuZGxlciBzY3JpcHQgd29ya3MgZmluZSB3aGVuIHJ1biBtYW51YWxseSBmcm9tIHRoZQorICBjb21tYW5kIGxpbmUsIGJ1dCBnZW5lcmF0ZXMgYW4gZXJyb3Igd2hlbiB0cmlnZ2VyZWQgYnkgYW4gaW5jb21pbmcKKyAgbm90aWZpY2F0aW9uLCB0aGVuIHRoaXMgaXMgcHJvYmFibHkgZG93biB0byBvbmUgb2YgdHdvIGxpa2VseSBjYXVzZXMuCisKKyAgICBGaXJzdGx5LCB0aGUgaW50ZXJhY3RpdmUgc2hlbGwgZW52aXJvbm1lbnQgbWF5IG5vdCBiZSBwcmVjaXNlbHkKKyAgdGhlIHNhbWUgYXMgdGhhdCBmb3IgcHJvZ3JhbXMgZXhlY3V0ZWQgYnkgdGhlIHNubXB0cmFwZCBkYWVtb24uCisgIEluIHBhcnRpY3VsYXIsIGl0J3MgcXVpdGUgcG9zc2libGUgdGhhdCB0aGUgUEFUSCBlbnZpcm9ubWVudGFsCisgIHZhcmlhYmxlIG1heSBub3QgaW5jbHVkZSBhbGwgdGhlIGFkZGl0aW9uYWwgZGlyZWN0b3JpZXMgdGhhdCBhcmUKKyAgY29tbW9ubHkgc2V0IHVwIGZvciBhIHBlcnNvbmFsIGxvZ2luIGNvbmZpZ3VyYXRpb24uICBUbyBhdm9pZCB0aGlzCisgIHByb2JsZW0gKHBhcnRpY3VsYXJseSBmb3IgdHJhcGhhbmRsZXIgc2hlbGwgc2NyaXB0cyksIGl0J3Mgd29ydGgKKyAgZ2l2aW5nIHRoZSBmdWxsIHBhdGggdG8gYWxsIHByb2dyYW1zIHVzZWQgd2l0aGluIHRoZSBzY3JpcHQuCisKKyAgICBTZWNvbmRseSwgdGhlIHNubXB0cmFwZCBkYWVtb24gbWF5IG5vdCBhbHdheXMgcmVjb2duaXNlIHRoZQorICBhcHByb3ByaWF0ZSBpbnRlcnByZXRlciB0byB1c2UgZm9yIGEgcGFydGljdWxhciB0cmFwIGhhbmRsZXIuCisgIElmIHRoaXMgaXMgdGhlIGNhc2UsIHRoZW4geW91IGNhbiBzcGVjaWZ5IHRoaXMgaW50ZXJwcmV0ZXIKKyAgZXhwbGljaXRseSBhcyBwYXJ0IG9mIHRoZSB0cmFwIGhhbmRsZSBkaXJlY3RpdmU6CisKKwl0cmFwaGFuZGxlIGRlZmF1bHQgL3Vzci9iaW4vcGVybCAvdXNyL2xvY2FsL2Jpbi9sb2dfaXQKKworICBOb3RlIHRoYXQgaW4gdGhpcyBjYXNlLCBpdCdzIGFsbW9zdCBjZXJ0YWluIHRoYXQgeW91J2xsIGFsc28KKyAgbmVlZCB0byBnaXZlIHRoZSBmdWxsIHBhdGggdG8gdGhlIHRyYXBoYW5kbGUgc2NyaXB0IChhcyBzaG93bikKKworCisKKzxhIG5hbWU9IlRoZV91Y2RTaHV0ZG93bl90cmFwX09JRF9yZWNlaXZlZF9ieV9teV9tYW5hZ2VyX2lzX3dyb25nX19XaHlfIj4KK1RoZSB1Y2RTaHV0ZG93biB0cmFwIE9JRCByZWNlaXZlZCBieSBteSBtYW5hZ2VyIGlzIHdyb25nLiBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIGR1ZSB0byB0aGUgd2F5IHRoYXQgdHJhcHMgYXJlIGNvbnZlcnRlZCBiZXR3ZWVuCisgIFNOTVB2MSBhbmQgU05NUHYyIGZvcm1hdHMuICBUaGUgYWxnb3JpdGhtIHVzZWQgZm9yIGNvbnZlcnRpbmcKKyAgZnJvbSBhbiBTTk1QdjEgZW50ZXJwcmlzZS1zcGVjaWZpYyB0cmFwIG51bWJlciwgdG8gYW4gU05NUHYyCisgIHRyYXAgT0lEIHJlc3VsdHMgaW4gYSBwZW51bHRpbWF0ZSAnMCcgc3ViaWRlbnRpZmllciwgYmVmb3JlCisgIHRoZSB0cmFwIG51bWJlciBpdHNlbGYuICBUaGUgZGVmaW5pdGlvbiBvZiB0aGUgdHJhcCBvYmplY3RzCisgIGluIHRoZSBVQ0QtU05NUC1NSUIgZmlsZSBkb2VzIG5vdCBpbmNsdWRlIHRoaXMgc3ViaWRlbnRpZmllci4KKworICAgIEluIGR1ZSBjb3Vyc2UsIHRoZSBpbnRlbnRpb24gaXMgdG8gZGVmaW5lIGEgbmV3IHNldCBvZiBNSUIKKyAgb2JqZWN0cywgdW5kZXIgdGhlICduZXQtc25tcCcgZW50ZXJwcmlzZSB0cmVlLiAgVGhpcyB3aWxsCisgIGluY2x1ZGUgbmV3IHRyYXAgT0lEcywgd2hpY2ggd2lsbCBiZSBkZXNpZ25lZCBzdWNoIHRoYXQKKyAgdGhpcyBwcm9ibGVtIGRvZXMgbm90IGFyaXNlIGluIHRoZSBmdXR1cmUuCisKKworCis8YSBuYW1lPSJXaHlfZG9lc19zbm1wdHJhcGRfY29tcGxhaW5fYWJvdXRfQWdlbnRYXyI+CitXaHkgZG9lcyBzbm1wdHJhcGQgY29tcGxhaW4gYWJvdXQgQWdlbnRYPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgU3RhcnRpbmcgZnJvbSB0aGUgdjUgcmVsZWFzZSwgdGhlIHRyYXAgaGFuZGxpbmcgZGFlbW9uIGhhcworICBpbXBsZW1lbnRlZCB0aGUgbm90aWZpY2F0aW9uIGxvZ2dpbmcgYXNwZWN0cyBvZiB0aGUgTk9USUZJQ0FUSU9OLU1JQgorICAoUkZDIDMwMTQpLiAgVGhpcyBpcyBoYW5kbGVkIGJ5IHRoZSB0cmFwIGhhbmRsZXIgZGFlbW9uIHJlZ2lzdGVyaW5nCisgIGFzIGFuIEFnZW50WCBzdWJhZ2VudCwgdG8gc3VwcGx5IHRoaXMgc3RhdGlzdGljYWwgaW5mb3JtYXRpb24uCisKKyAgICBJZiB0aGVyZSBpcyBubyBBZ2VudFggbWFzdGVyIGFnZW50IGF2YWlsYWJsZSwgdGhpcyByZWdpc3RyYXRpb24KKyAgZmFpbHMsIGdlbmVyYXRpbmcgdGhlIHdhcm5pbmcgYWJvdXQgImZhaWxlZCB0byBjb25uZWN0IHRvIHRoZSBhZ2VudHgKKyAgbWFzdGVyIi4gIFRoaXMgd2FybmluZyBvbmx5IGFwcGVhcnMgYmV0d2VlbiB2ZXJzaW9uIDUuMCBhbmQgNS4wLjQKKyAgKGluIDUuMC40IGFuZCBhZnRlciB0aGUgd2FybmluZyB3YXMgc2lsZW5jZWQpLiAgVGhpcyBmYWlsdXJlIGRvZXMKKyAgbm90IGFmZmVjdCB0aGUgbWFpbiBvcGVyYXRpb24gb2YgdGhlIHRyYXAgaGFuZGxlci4gIEl0IHNpbXBseSBtZWFucworICB0aGF0IHRoZSBuc21Mb2cgaW5mb3JtYXRpb24gd29uJ3QgYmUgYXZhaWxhYmxlIGZvciBxdWVyeSB2aWEgU05NUC4KKworICAgIEJhc2ljYWxseSwgdGhpcyBpcyBhIHdhcm5pbmcgdGhhdCBjYW4gc2FmZWx5IGJlIGlnbm9yZWQuCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV91c2VfU05NUHZfXyI+CitIb3cgZG8gSSB1c2UgU05NUHYzPworLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIHNpbXBsZXN0IGZvcm0gb2YgU05NUHYzIHJlcXVlc3QgKHVuYXV0aGVudGljYXRlZCwgdW5lbmNyeXB0ZWQpCisgIHdvdWxkIGJlIHNvbWV0aGluZyBsaWtlOgorCisJc25tcGdldCAtdiAzIC1sIG5vQXV0aE5vUHJpdiBsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKKworICAgIEFuIGF1dGhlbnRpY2F0ZWQgcmVxdWVzdCB3b3VsZCBzcGVjaWZ5IGEgdXNlcm5hbWUgYW5kIHBhc3MgcGhyYXNlOgorCisJc25tcGdldCAtdiAzIC1sIGF1dGhOb1ByaXYgLXUgZGF2ZSAtQSAiT3BlbiB0aGUgRG9vciIKKwkJCQlsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKKworICAgIEEgZnVsbHkgc2VjdXJlIHJlcXVlc3Qgd291bGQgYWxzbyBzcGVjaWZ5IHRoZSBwcml2YWN5IHBhc3MgcGhyYXNlOgorCisJc25tcGdldCAtdiAzIC1sIGF1dGhQcml2IC11IGRhdmUgLUEgIk9wZW4gdGhlIERvb3IiCisJCQktWCAiQmV0IHlvdSBjYW4ndCBzZWUgbWUiICBsb2NhbGhvc3Qgc3lzVXBUaW1lLjAKKworICBJbiBwcmFjdGlzZSwgbW9zdCBvZiB0aGVzZSB3b3VsZCBwcm9iYWJseSBiZSBzZXQgdmlhIGNvbmZpZ3VyYXRpb24KKyAgZGlyZWN0aXZlcyBpbiBhIHBlcnNvbmFsICRIT01FLy5zbm1wL3NubXAuY29uZiBmaWxlIChub3RlLCAqbm90KiB0aGUKKyAgYWdlbnQncyBzbm1wZC5jb25mIGZpbGUpLiAgVGhlIGVxdWl2YWxlbnQgc2V0dGluZ3MgZm9yIHRoZSB0aGlyZAorICBleGFtcGxlIHdvdWxkIGJlOgorCisJZGVmU2VjdXJpdHlOYW1lCQlkYXZlCisJZGVmU2VjdXJpdHlMZXZlbAlhdXRoUHJpdgorCWRlZkF1dGhQYXNzcGhyYXNlCSJPcGVuIHRoZSBEb29yIgorCWRlZlByaXZQYXNzcGhyYXNlCSJCZXQgeW91IGNhbid0IHNlZSBtZSIKKworICBJZiB0aGUgQXV0aFBhc3NwaHJhc2UgYW5kIHRoZSBQcml2UGFzc3BocmFzZSBhcmUgdGhlIHNhbWUsIHRoZW4geW91CisgIGNhbiB1c2UgdGhlIHNldHRpbmcKKwkJZGVmUGFzc3BocmFzZQkiT3BlbiB0aGUgRG9vciBhbmQgc2VlIG1lIgorCQkJCQkJCWluc3RlYWQKKworICBGb3IgaG93IHRvIGNvbmZpZ3VyZSB0aGUgYWdlbnQgdG8gcmVzcG9uZCB0byBTTk1QdjMgcmVxdWVzdHMsIHNlZQorICB0aGUgQUdFTlQgc2VjdGlvbi4KKyAKKworCis8YSBuYW1lPSJIb3dfYmlnX2Nhbl9hbl9TTk1QX3JlcXVlc3RfX29yX3JlcGx5X19iZV8iPgorSG93IGJpZyBjYW4gYW4gU05NUCByZXF1ZXN0IChvciByZXBseSkgYmU/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIHByb3RvY29sIGRlZmluaXRpb24gc3BlY2lmaWVzIGEgIm1pbmltdW0gbWF4aW11bSIgcGFja2V0IHNpemUKKyAgKDQ4NCBieXRlcyBmb3IgVURQKSwgd2hpY2ggYWxsIHN5c3RlbXMgbXVzdCBzdXBwb3J0LCBidXQgZG9lcyBub3QKKyAgYXR0ZW1wdCB0byBkZWZpbmUgYW4gdXBwZXIgYm91bmQgZm9yIHRoaXMgbWF4aW11bSBzaXplLiAgVGhpcyBpcyBsZWZ0CisgIHRvIGVhY2ggaW5kaXZpZHVhbCBpbXBsZW1lbnRhdGlvbi4KKworICAgIFRoZSBVQ0Qgc29mdHdhcmUgdXNlcyBhIGZpeGVkIHNpemUgYnVmZmVyIG9mIDE0NzIgYnl0ZXMgdG8gaG9sZCB0aGUKKyAgZW5jb2RlZCBwYWNrZXQsIHNvIGFsbCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzIG11c3QgZml0IHdpdGhpbiB0aGlzLgorICBVbmZvcnR1bmF0ZWx5LCBpdCdzIG5vdCBwb3NzaWJsZSB0byBwcmVkaWN0IGhvdyBtYW55IHZhcmJpbmRzIHRoaXMKKyAgY29ycmVzcG9uZHMgdG8sIHNpbmNlIGl0IGRlcGVuZHMgb24gdGhlIHR5cGUgYW5kIGFjdHVhbCB2YWx1ZXMgYmVpbmcKKyAgc2VudCwgYXMgd2VsbCBhcyB0aGUgY29ycmVzcG9uZGluZyBPSURzLgorCisgICAgQXMgYSBydWxlIG9mIHRodW1iLCBzZW5kaW5nIDQwMCBpbnRlZ2VyLXZhbHVlZCB2YXJiaW5kcyBzZWVtcyB0bworICB3b3JrIE9LLCB3aGlsZSAzMDAgc3RyaW5nLXZhbHVlZCB2YXJiaW5kcyB0cmlnZ2VycyBhbiBvdmVycnVuLgorCisgICAgVGhlIE5ldC1TTk1QIHJlbGVhc2VzIGhhbmRsZSBwYWNrZXQgYnVmZmVycyByYXRoZXIgZGlmZmVyZW50bHksCisgIGFuZCBhcmUgbm90IHN1YmplY3QgdG8gdGhlIHNhbWUgZml4ZWQgcmVzdHJpY3Rpb25zLgorCisKKworPGEgbmFtZT0iSG93X2Nhbl9JX21vbml0b3JfbXlfc3lzdGVtc19fZGlza19fbWVtb3J5X19ldGNfXyI+CitIb3cgY2FuIEkgbW9uaXRvciBteSBzeXN0ZW1zIChkaXNrLCBtZW1vcnksIGV0Yyk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIEluIGdlbmVyYWwsIHRoZSBOZXQtU05NUCBzdWl0ZSBjb25zaXN0cyBvZiByZWxhdGl2ZWx5IGxvdy1sZXZlbAorICB0b29scywgYW5kIHRoZXJlIGlzIG5vdGhpbmcgaW5jbHVkZWQgdGhhdCBpcyBkZXNpZ25lZCBmb3IgaGlnaC1sZXZlbCwKKyAgbG9uZy10ZXJtIG1vbml0b3Jpbmcgb2YgdHJlbmRzIGluIG5ldHdvcmsgdHJhZmZpYywgZGlzayBvciBtZW1vcnkKKyAgdXNhZ2UsIGV0Yy4KKworICAgIFRoZXJlIGFyZSBhIG51bWJlciBvZiBwYWNrYWdlcyBhdmFpbGFibGUgdGhhdCBhcmUgZGVzaWduZWQgZm9yIHRoaXMKKyAgcHVycG9zZS4gIFR3byBvZiB0aGUgbW9zdCB3aWRlbHkgdXNlZCBhcmUgTVJURyAoaHR0cDovL3d3dy5tcnRnLm9yZy8pCisgIGFuZCBDcmlja2V0IChodHRwOi8vY3JpY2tldC5zb3VyY2Vmb3JnZS5uZXQvKS4gIFRoZXJlIGFyZSBkZXRhaWxzIG9mCisgIGhvdyB0byBzZXQgdXAgQ3JpY2tldCB0byBtb25pdG9yIHNvbWUgb2YgdGhlIFVDRCBleHRlbnNpb25zIGF0CisgIGh0dHA6Ly93d3cuYWZuLm9yZy9+amFtL3NvZnR3YXJlL2NyaWNrZXQvCisKKyAgICAgV2UgaGF2ZSBhbHNvIHNldCB1cCBhIHBhZ2UgdGhhdCBkZXNjcmliZXMgaW4gZGV0YWlsIGhvdyBNUlRHCisgIGNhbiBiZSBzZXQgdXAgdG8gbW9uaXRvciBkaXNrLCBtZW1vcnkgYW5kIGNwdSBhY3Rpdml0eSBhdAorICBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L21ydGcvaW5kZXguaHRtbAorCisgICAgVGhlcmUgaXMgYWxzbyBhIHdlYi1iYXNlZCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gc3lzdGVtICJOZXQtUG9saWN5IiwKKyAgYmFzZWQgdXBvbiBTTk1QLiAgVGhpcyBpcyBub3Qgc3RyaWN0bHkgY29ubmVjdGVkIHRvIHRoZSBOZXQtU05NUCBwcm9qZWN0LAorICBidXQgYSBudW1iZXIgb2YgdGhlIGNvcmUgZGV2ZWxvcGVycyBhcmUgYWxzbyBpbnZvbHZlZCB3aXRoIHRoYXQgc3lzdGVtLgorICBTZWUgaHR0cDovL25ldC1wb2xpY3kuc291cmNlZm9yZ2UubmV0IGZvciBtb3JlIGRldGFpbHMuCisKKworCis8YSBuYW1lPSJBcHBsaWNhdGlvbnNfY29tcGxhaW5fYWJvdXRfZW50cmllc19pbl95b3VyX2V4YW1wbGVfX3NubXBfY29uZl9fZmlsZV9fX1doeV8iPgorQXBwbGljYXRpb25zIGNvbXBsYWluIGFib3V0IGVudHJpZXMgaW4geW91ciBleGFtcGxlICdzbm1wLmNvbmYnIGZpbGUuICBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIGV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlICdFWEFNUExFLmNvbmYnIGlzIGRlc2lnbmVkIGFzIGEgY29uZmlnCisgIGZvciB0aGUgYWdlbnQsIGFuZCBzaG91bGQgYmUgaW5zdGFsbGVkIGFzICdzbm1wZC5jb25mJyAobm90ZSB0aGUgJ2QnKS4KKyAgVGhlIGZpbGUgJ3NubXAuY29uZicgaXMgaW50ZW5kZWQgZm9yIGdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zLAorICBhcHBsaWNhYmxlIHRvIGFsbCBhcHBsaWNhdGlvbnMgKHZpYSB0aGUgU05NUCBsaWJyYXJ5KS4KKyAgICBSZW5hbWUgKG9yIG1lcmdlKSB0aGUgJ3NubXAuY29uZicgZmlsZSB0byAnc25tcGQuY29uZicsIGFuZCB0aGlzIHNob3VsZAorICBmaXggdGhlIHByb2JsZW0uCisgICAgTm90ZSB0aGF0IHRoZXJlIGlzIG5vIGV4YW1wbGUgc25tcC5jb25mIHNoaXBwZWQgd2l0aCB0aGUgc3RhbmRhcmQKKyAgZGlzdHJpYnV0aW9uLgorCisKKworPGEgbmFtZT0iT0tfX3doYXRfc2hvdWxkX0lfcHV0X2luX3NubXBfY29uZl8iPgorT0ssIHdoYXQgc2hvdWxkIEkgcHV0IGluIHNubXAuY29uZj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgdXNlZCB0byBzZXQgY29tbW9uIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciBtb3N0IG9mIHRoZQorICBhcHBsaWNhdGlvbnMsIHRvIGF2b2lkIGhhdmluZyB0byBzcGVjaWZ5IHRoZW0gZXZlcnkgdGltZS4gIEV4YW1wbGVzCisgIGluY2x1ZGUgdGhlIFNOTVB2MyBzZXR0aW5ncyBtZW50aW9uZWQgYWJvdmUsIGRlZmF1bHRzIGZvciB3aGljaCBNSUJzCisgIHRvIGxvYWQgYW5kIHdoZXJlIGZyb20sIGFuZCB0aGUgZGVmYXVsdCBTTk1QIHZlcnNpb24sIHBvcnQgYW5kCisgIChpZiBhcHByb3ByaWF0ZSkgdGhlIGNvbW11bml0eSBzdHJpbmcgdG8gdXNlLgorCisgICAgU29tZSBvZiB0aGVzZSAoc3VjaCBhcyB0aGUgTUlCIGZpbGUgbG9jYXRpb24pLCBtaWdodCBiZWxvbmcgaW4gYQorICBzaGFyZWQgc25tcC5jb25mIGZpbGUgKHR5cGljYWxseSAvdXNyL2xvY2FsL3NoYXJlL3NubXAvc25tcC5jb25mIG9yCisgIC9ldGMvc25tcC9zbm1wLmNvbmYpIHRvIGFwcGx5IHRvIGFsbCB1c2VycyBvZiB0aGUgc3lzdGVtLiAgT3RoZXJzCisgIChwYXJ0aWN1bGFybHkgdGhlIFNOTVB2MyBzZWN1cml0eSBzZXR0aW5ncyksIGFyZSBtb3JlIGxpa2VseSB0byByZWZlcgorICB0byBhIHBhcnRpY3VsYXIgdXNlciwgYW5kIHNob3VsZCBnbyBpbiBhIHBlcnNvbmFsIHNubXAuY29uZiBmaWxlCisgICh0eXBpY2FsbHkgJEhPTUUvLnNubXAvc25tcC5jb25mKS4KKworICAgIE5vdGUgdGhhdCB0aGUgTmV0LVNOTVAgcGFja2FnZSBkb2VzIG5vdCBjb21lIHdpdGggYW4gZXhhbXBsZSBzbm1wLmNvbmYKKyAgZmlsZS4gIFNlZSAnc25tcGdldCAtSCcgYW5kL29yIHRoZSBzbm1wLmNvbmYoNSkgbWFuIHBhZ2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBjYW4gYWxzbyB1c2UgdGhlICJzbm1wY29uZiIgY29tbWFuZCB0byBoZWxwIHlvdSBnZW5lcmF0ZSB5b3VyCisgIHNubXAuY29uZiBjb25maWd1cmF0aW9uIGZpbGUgKGp1c3QgcnVuIGl0IGFuZCBhbnN3ZXIgaXRzIHF1ZXN0aW9ucykuCisKKworCis8YSBuYW1lPSJQRVJMIj4KK1BFUkwKKz09PT0KKworPGEgbmFtZT0iV2hlcmVfY2FuX0lfZ2V0X3RoZV9wZXJsX1NOTVBfcGFja2FnZV8iPgorV2hlcmUgY2FuIEkgZ2V0IHRoZSBwZXJsIFNOTVAgcGFja2FnZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBKb2UgTWFyem90J3MgZXhjZWxsZW50IHBlcmwgU05NUCBtb2R1bGUsIHdoaWNoIHJlcXVpcmVzIHRoZSB1Y2Qtc25tcAorICBsaWJyYXJ5LCBpcyBub3cgaW5jbHVkZWQgaW4gdGhlIHVjZC1zbm1wIHNvdXJjZSByZWxlYXNlLiAgSXQncworICBsb2NhdGVkIGluIHRoZSBwZXJsL1NOTVAgc3ViZGlyZWN0b3J5IG9mIHRoZSB1Y2Qtc25tcCBzb3VyY2UgdHJlZS4KKworICBJdCBjYW4gYWxzbyBiZSBmb3VuZCBhdCBhbnkgQ29tcHJlaGVuc2l2ZSBQZXJsIEFyY2hpdmUgTmV0d29yaworICAoQ1BBTikgc2l0ZSBtaXJyb3IgaW4gbW9kdWxlcy9ieS1tb2R1bGUvU05NUC4gIFRvIGZpbmQgdGhlIENQQU4gc2l0ZQorICBuZWFyZXN0IHlvdSwgcGxlYXNlIHNlZSBodHRwOi8vd3d3LmNwYW4ub3JnL1NJVEVTLmh0bWwuCisKKyAgV2l0aCB0aGUgdjUgcmVsZWFzZSBvZiB0aGUgTmV0LVNOTVAgc3VpdGUsIHRoaXMgaXMgbm93IGFjY29tcGFuaWVkIGJ5CisgIGEgbnVtYmVyIG9mIHBlcmwgbW9kdWxlcyBncm91cGVkIHRvZ2V0aGVyIHVuZGVyIHRoZSBOZXRTTk1QIG5hbWVzcGFjZS4KKworICBDb25zdWx0IHRoZSBSRUFETUUgZmlsZSBpbiB0aGUgU05NUCBwZXJsIG1vZHVsZSBkaXN0cmlidXRpb24gdG8gZmluZCAKKyAgb3V0IHdoYXQgdmVyc2lvbiBvZiB0aGUgdWNkLXNubXAgbGlicmFyeSBpdCBuZWVkcyB0byBiZSBsaW5rZWQgYWdhaW5zdC4KKworCisKKzxhIG5hbWU9Ikhvd19kb19JX2luc3RhbGxfdGhlX1BlcmxfU05NUF9tb2R1bGVzXyI+CitIb3cgZG8gSSBpbnN0YWxsIHRoZSBQZXJsIFNOTVAgbW9kdWxlcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQXNzdW1pbmcgeW91IGhhdmUgYSByZWFzb25hYmx5IG5ldyAoYW5kIHByb3Blcmx5IGNvbmZpZ3VyZWQpIHBlcmwgc3lzdGVtLAorICB0aGlzIHNob3VsZCBiZSBzaW1wbHk6CisKKyAgICAgICAgY2QgcGVybAkJKGZvciA1LjAueCkKKyAgb3IgICAgY2QgcGVybC9TTk1QCShmb3IgNC4yLngpCisJcGVybCBNYWtlZmlsZS5QTAorCSAgICAocHJlc3MgUkVUVVJOIHdoZW4gcHJvbXB0ZWQgZm9yIGhvc3QgYW5kIGNvbW11bml0eSkKKwltYWtlCisJbWFrZSB0ZXN0CisJbWFrZSBpbnN0YWxsICAocHJvYmFibHkgYXMgcm9vdCkKKworICBOb3RlIHRoYXQgd2l0aCB0aGUgNS4wIHJlbGVhc2UgbGluZSwgdGhlcmUgYXJlIGFkZGl0aW9uYWwgU05NUC1yZWxhdGVkCisgIHBlcmwgbW9kdWxlcyB0aGF0IHNob3VsZCBwcm9iYWJseSBiZSBpbnN0YWxsZWQgYXMgd2VsbC4gIFRoZXNlIGNhbiBhbHNvCisgIGJlIGZvdW5kIHVuZGVyIHRoZSAncGVybCcgc3ViZGlyZWN0b3J5LiAgQXQgdGhlIHZlcnkgbGVhc3QsIGluc3RhbGwgdGhlCisgICdkZWZhdWx0X3N0b3JlJyBtb2R1bGUuCisgICAgVGhpcyBpcyBub3QgbmVjZXNzYXJ5IHdpdGggdGhlIDQuMi54IHJlbGVhc2VzLgorCisKKworPGEgbmFtZT0iQnV0X2NvbXBpbGluZ190aGlzX2ZhaWxzX19XaHlfIj4KK0J1dCBjb21waWxpbmcgdGhpcyBmYWlscyEgV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgcGVybCBtb2R1bGUgdGVuZHMgdG8gZGVsdmUgcXVpdGUgZGVlcGx5IGludG8gdGhlIGludGVybmFscyBvZiB0aGUKKyAgbWFpbiBOZXQtU05NUCBsaWJyYXJ5LCBhbmQgc28gaXMgcXVpdGUgc2Vuc2l0aXZlIHRvIGNoYW5nZXMgd2l0aGluIHRoZQorICBsaWJyYXJ5LiAgSXQncyBpbXBvcnRhbnQgdG8gdXNlIHRoZSBjb3JyZWN0IHZlcnNpb24gb2YgdGhlIG1vZHVsZSwgdGhhdAorICBjb3JyZXNwb25kcyB0byB0aGUgdmVyc2lvbiBvZiB0aGUgbGlicmFyeSB5b3UgaGF2ZSBpbnN0YWxsZWQuICBJZiB5b3UncmUKKyAgd29ya2luZyB3aXRoIHRoZSBtYWluIE5ldC1TTk1QIGRpc3RyaWJ1dGlvbiwgdGhlIGFwcHJvcHJpYXRlIHZlcnNpb24gb2YKKyAgdGhlIHBlcmwgbW9kdWxlIGlzIHNoaXBwZWQgYXMgcGFydCBvZiB0aGlzLCBidXQgeW91ICptdXN0KiBoYXZlCisgIHJ1biAibWFrZSBpbnN0YWxsIiBvbiB0aGUgbWFpbiBOZXQtU05NUCBkaXN0cmlidXRpb24gKmZpcnN0Ki4KKworICBJZiB5b3UncmUgd29ya2luZyB3aXRoIGEgcmVhZHktaW5zdGFsbGVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIG1ha2UKKyAgc3VyZSB5b3Ugb2J0YWluIGEgY29tcGF0aWJsZSB2ZXJzaW9uIG9mIHRoZSBwZXJsIG1vZHVsZS4KKworICAgIE5vdGUgdGhhdCB0aGUgcGVybCBtb2R1bGVzIHdpbGwgYmUgY29tcGlsZWQgdXNpbmcgdGhlIGNvbXBpbGVyCisgIChhbmQgY29tcGlsZXIgc2V0dGluZ3MpIHVzZWQgZm9yIGNvbXBpbGluZyB0aGUgb3JpZ2luYWwgcGVybCBiaW5hcnksCisgICpub3QqIHRob3NlIHVzZWQgZm9yIGNvbXBpbGluZyB0aGUgTmV0LVNOTVAgKG9yIFVDRCkgbGlicmFyeS4KKyAgSWYgdGhlc2UgYXJlIGRpZmZlcmVudCAoZS5nLiAnZ2NjJyB1c2VkIGZvciBvbmUgYW5kICdjYycgZm9yIHRoZSBvdGhlcikKKyAgdGhlbiB0aGlzIG1heSB3ZWxsIGNhdXNlIHByb2JsZW1zLiAgSXQncyBtdWNoIHNhZmVyIHRvIHVzZSBhIGNvbnNpc3RlbnQKKyAgZW52aXJvbm1lbnQgZm9yIGJvdGguICBUaGlzIGlzc3VlIGlzIGRpc2N1c3NlZCBpbiBncmVhdGVyIGRldGFpbCBpbgorICB0aGUgUkVBRE1FLnNvbGFyaXMgZmlsZS4KKworICAgIEFsc28gbm90ZSB0aGF0IHRoZSB2NSBOZXQtU05NUCBzdWl0ZSAqbXVzdCogYmUgY29uZmlndXJlZCB0byBwcm92aWRlCisgIHNoYXJlZCBsaWJyYXJpZXMgaW4gb3JkZXIgZm9yIHRoZSBwZXJsIG1vZHVsZXMgdG8gd29yayBjb3JyZWN0bHkuICBUaGlzCisgIGlzIG5vdCBuZWNlc3Nhcnkgd2l0aCB0aGUgdjQgVUNELVNOTVAgbGlicmFyaWVzLgorCisKKworPGEgbmFtZT0iQ29tcGlsaW5nX3RoZV9wZXJsX21vZHVsZV93b3Jrc19PS19fYnV0X19tYWtlX3Rlc3RfX2ZhaWxzX19XaHlfIj4KK0NvbXBpbGluZyB0aGUgcGVybCBtb2R1bGUgd29ya3MgT0ssIGJ1dCAnbWFrZSB0ZXN0JyBmYWlscy4gV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGF0J3MgZGlmZmljdWx0IHRvIGFuc3dlciBpbiBnZW5lcmFsLgorICBTb21lIG9mIHRoZSBwZXJsIHRlc3RzIGFyZSByYXRoZXIgcGlja3ksIHNvIHRoaXMgbWF5IHNpbXBseSBiZQorICBzb21lIG1pbm9yIGluY29uc2lzdGVuY3kgYmV0d2VlbiB5b3VyIHByZWNpc2Ugc2V0dXAsIGFuZCB0aGUKKyAgZXhwZWN0YXRpb25zIG9mIHRoZSB0ZXN0IGVudmlyb25tZW50LgorCisgICAgQ2hlY2sgdGhhdCB5b3UgYXJlIHdvcmtpbmcgd2l0aCB0aGUgcGVybCBkaXN0cmlidXRpb24gdGhhdCBtYXRjaGVzCisgIHRoZSBTTk1QIGxpYnJhcmllcyAodXNlIHRoZSAncGVybC9TTk1QJyBpbiBwcmVmZXJlbmNlIHRvIENQQU4pLCBhbmQKKyAgdGhhdCB5b3UgaGF2ZSBpbnN0YWxsZWQgdGhlIG1haW4gbGlicmFyaWVzIHN1Y2Nlc3NmdWxseSAodW5pbnN0YWxsCisgIGFueSBvbGQgdmVyc2lvbnMgaWYgeW91J3JlIGhhdmluZyB0cm91YmxlKS4KKworICAgIElmIGFsbCB0aGlzIGxvb2tzIE9LLCBhbmQgaWYgbW9zdCBvZiB0aGUgdGVzdHMgcGFzcywgdGhlbiBpdCdzCisgIHByb2JhYmx5IHNhZmUgdG8gcnVuICdtYWtlIGluc3RhbGwnIGFueXdheS4gICBQcm9iYWJseS4KKworCisKKzxhIG5hbWU9IlRoZV9wZXJsX19tYWtlX3Rlc3RfX2ZhaWxzX29uX3RoZV9PSURfdGVzdHNfX0lzX2l0X3NhZmVfdG9fY29udGludWVfIj4KK1RoZSBwZXJsICdtYWtlIHRlc3QnIGZhaWxzIG9uIHRoZSBPSUQgdGVzdHMuIElzIGl0IHNhZmUgdG8gY29udGludWU/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgTm8uICBBbG1vc3QgY2VydGFpbmx5IG5vdC4gIElmIHRoZSAicGVybC9PSUQiIHRlc3RzIGZhaWwgdGhlIGZpcnN0CisgIGZvdXIgdGVzdHMsIGFuZCB0aGVuIGNyYXNoZXMgb3V0IGNvbXBsYWluaW5nIGFib3V0IGEgIm5ldHNubXBfb2lkUHRyIiwKKyAgdGhlbiB0aGlzIGlzIGEgc2lnbiBvZiBhIG1vcmUgZnVuZGFtZW50YWwgcHJvYmxlbS4KKworICBUaGUgNC4yLnggbGluZSBwZXJsIHN1cHBvcnQgd2FzIGEgc2luZ2xlIG1vZHVsZSwgc28gd2FzIGluZGVwZW5kZW50CisgIG9mIHRoZSB3YXkgdGhhdCB0aGUgQyBsaWJyYXJ5IHdhcyBjb25maWd1cmVkLiAgSW4gY29udHJhc3QgdG8gdGhpcywgCisgIHRoZSA1LjAueCBwZXJsIHN1cHBvcnQgY29uc2lzdCBvZiBhIG51bWJlciBvZiBpbnRlci1jb29wZXJhdGluZyBtb2R1bGVzLAorICB3aGljaCByZWx5IG9uIHNoYXJpbmcgYSBjb25zaXN0ZW50IEMgbGlicmFyeSBlbnZpcm9ubWVudC4gIEluIHByYWN0aXNlLAorICB0aGlzIG1lYW5zIHRoYXQgdGhlIHBlcmwgbW9kdWxlcyAqTVVTVCogYmUgY29uZmlndXJlZCBhbmQgY29tcGlsZWQgdXNpbmcKKyAgYSBzaGFyZWQgdmVyc2lvbiBvZiB0aGUgQyBsaWJyYXJ5LiAgIFVuZm9ydHVuYXRlbHksIHRoZSBkZWZhdWx0IGZvcgorICBtb3N0IGVhcmx5IHZlcnNpb25zIG9mIHRoZSBOZXQtU05NUCBzdWl0ZSB3YXMgdG8gY29tcGlsZSB1c2luZyBzdGF0aWMKKyAgbGlicmFyaWVzIHVubGVzcyBleHBsaWNpdGx5IGNvbmZpZ3VyZWQgdG8gdXNlIHNoYXJlZCBsaWJyYXJpZXMuICBUaGUKKyAgZGVmYXVsdCBzaG91bGQgYmUgdG8gdXNlIHNoYXJlZCBsaWJyYXJpZXMgZnJvbSA1LjAuNyBvbndhcmRzLgorCisgIFRoZSBlcnJvciAib2lkMSBpcyBub3Qgb2YgdHlwZSBuZXRzbm1wX29pZFB0ciIgaXMgYSBmYWlybHkgc3VyZSBpbmRpY2F0aW9uCisgIHRoYXQgdGhlIEMgbGlicmFyeSB3YXMgY29tcGlsZWQgc3RhdGljYWxseS4gICBZb3UnbGwgbmVlZCB0byByZS1jb25maWd1cmUKKyAgdGhlIG1haW4gTmV0LVNOTVAgcGFja2FnZSB1c2luZyB0aGUgIi0tZW5hYmxlLXNoYXJlZCIgY29uZmlndXJlIGZsYWcuCisgIFRoZW4gcmUtaW5zdGFsbCB0aGUgQyBsaWJyYXJ5IGJlZm9yZSByZS1jb25maWd1cmluZyBhbmQgcmUtY29tcGlsaW5nCisgIHRoZSBwZXJsIG1vZHVsZSBzdXBwb3J0LgorCisgIE5vdGUgdGhhdCB0aGlzIHByb2JsZW0gZG9lcyBub3QgYXJpc2Ugd2hlbiB1c2luZyB0aGUgNC4yLnggdmVyc2lvbgorICBvZiBwZXJsIHN1cHBvcnQuCisKKworCis8YSBuYW1lPSJJX21fdHJ5aW5nX3RvX3VzZV9taWJfY19fb3JfdGttaWJfX2FuZF9pdF9jYW5fdF9sb2NhdGVfU05NUF9wbV8iPgorSSdtIHRyeWluZyB0byB1c2UgbWliMmMgKG9yIHRrbWliKSBhbmQgaXQgY2FuJ3QgbG9jYXRlIFNOTVAucG0/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGF0J3MgcHJvYmFibHkgYmVjYXVzZSB0aGUgU05NUCBwZXJsIG1vZHVsZSBoYXNuJ3QgYmVlbiBpbnN0YWxsZWQuCisgIEl0J3Mgbm90IHBhcnQgb2YgdGhlIHN0YW5kYXJkIHBlcmwgZGlzdHJpYnV0aW9uLCBub3IgaXMgaXQgaW5zdGFsbGVkCisgIGJ5IGRlZmF1bHQgaW4gUmVkSGF0IExpbnV4IChmb3IgZXhhbXBsZSkuCisgICAgWW91J2xsIG5lZWQgdG8gaW5zdGFsbCBpdC4gIFNlZSB0aGUgcHJldmlvdXMgdHdvIHF1ZXN0aW9ucy4KKworCisKKzxhIG5hbWU9IklfbV90cnlpbmdfdG9fdXNlX21pYl9jX19vcl90a21pYl9fYW5kX2l0X2Nhbl90X2xvYWRfU05NUF9zb18iPgorSSdtIHRyeWluZyB0byB1c2UgbWliMmMgKG9yIHRrbWliKSBhbmQgaXQgY2FuJ3QgbG9hZCBTTk1QLnNvPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIHByb2JhYmx5IHRoZSBzYW1lIHByb2JsZW0uICBFaXRoZXIgdGhlIFNOTVAgbW9kdWxlCisgIGhhc24ndCBiZWVuIGluc3RhbGxlZCwgb3IgaXQncyB0aGUgd3JvbmcgdmVyc2lvbi4gIFNlZSB0aGUKKyAgcHJldmlvdXMgdHdvIHF1ZXN0aW9ucy4KKworCisKKzxhIG5hbWU9IklfbV90cnlpbmdfdG9fdXNlX3RrbWliX2FuZF9pdF9jYW5fdF9sb2NhdGVfVGtfcG1fIj4KK0knbSB0cnlpbmcgdG8gdXNlIHRrbWliIGFuZCBpdCBjYW4ndCBsb2NhdGUgVGsucG0/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGsucG0gaXMgYW5vdGhlciBQZXJsIHBhY2thZ2UgdGhhdCBuZWVkcyB0byBiZSBpbnN0YWxsZWQgYmVmb3JlIHRrbWliCisgIHdpbGwgcnVuLiAgSXQncyBhbHNvIGF2YWlsYWJsZSBvbiBQZXJsIENQQU4uICBXZSBzdWdnZXN0IHVzaW5nIHZlcnNpb24KKyAgIlRrODAwLjAxMSIgb3IgbGF0ZXIuICBJdCBjYW4gYmUgaW5zdGFsbGVkIGJ5IGlzc3VpbmcgdGhlIGNvbW1hbmQ6CisKKwkJcGVybCAtTUNQQU4gLWUgc2hlbGwgOyAiaW5zdGFsbCBUayIKKworCisKKzxhIG5hbWU9IklfdmVfZ290X2FfcHJvYmxlbV93aXRoX3RoZV9OZXRfU05NUF9tb2R1bGVfX19DYW5feW91X2hlbHBfIj4KK0kndmUgZ290IGEgcHJvYmxlbSB3aXRoIHRoZSBOZXQtU05NUCBtb2R1bGUuICBDYW4geW91IGhlbHA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgU29ycnksIGRlc3BpdGUgdGhlIHNpbWlsYXItc291bmRpbmcgbmFtZSwgdGhlIE5ldC1TTk1QIChvciBOZXQ6OlNOTVApCisgIG1vZHVsZSBpcyBub3RoaW5nIHRvIGRvIHdpdGggdGhpcyBwYWNrYWdlLCBvciB0aGUgTmV0U05NUCBtb2R1bGVzLgorICBOZXQ6OlNOTVAgaXMgYSAicHVyZS1wZXJsIiBpbXBsZW1lbnRhdGlvbiBvZiBTTk1QIHN1cHBvcnQsIGRldmVsb3BlZAorICBieSBEYXZpZCBUb3duLiAgVGhlIGRldmVsb3BlcnMgb2YgdGhlIChDLWJhc2VkKSBOZXQtU05NUCBzdWl0ZSBkbworICBub3QgaGF2ZSBhbnkgc2lnbmlmaWNhbnQgZXhwZXJpZW5jZSBpbiB1c2luZyB0aGlzIHBhcnRpY3VsYXIgbW9kdWxlLAorICBhbmQgeW91J2xsIHByb2JhYmx5IGJlIGJldHRlciBvZmYgYXNraW5nIGZvciBoZWxwIHZpYSBDUEFOIG9yIHNvbWUKKyAgb3RoZXIgcGVybC1yZWxhdGVkIGZvcnVtLgorCisKKworPGEgbmFtZT0iTUlCUyI+CitNSUJTCis9PT09CisKKzxhIG5hbWU9IldoZXJlX2Nhbl9JX2ZpbmRfYV9NSUJfY29tcGlsZXJfIj4KK1doZXJlIGNhbiBJIGZpbmQgYSBNSUIgY29tcGlsZXI/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhhdCBkZXBlbmRzIHdoYXQgeW91IG1lYW4gYnkgYSAiTUlCIGNvbXBpbGVyIi4gIFRoZXJlIGFyZSBhdCBsZWFzdCB0d28KKyAgdHlwZXMgb2YgdG9vbCB0aGF0IGFyZSBjb21tb25seSByZWZlcnJlZCB0byBieSB0aGlzIG5hbWUuCisKKyAgVGhlIGZpcnN0IGlzIGEgdG9vbCB0byBjaGVjayBNSUIgZmlsZXMgZm9yIHZhbGlkaXR5LiAgVGhpcyBmdW5jdGlvbmFsaXR5CisgIGlzIG1vc3RseSBpbnRlZ3JhdGVkIHdpdGhpbiB0aGUgTUlCIHBhcnNlciAocGFydCBvZiB0aGUgTmV0LVNOTVAgbGlicmFyeSkKKyAgYW5kIGhlbmNlIGluY2x1ZGVkIGluIGFsbCB0aGUgYXBwbGljYXRpb25zLiAgVGhlIHRvb2wgJ3NubXB0cmFuc2xhdGUnIGlzCisgIHByb2JhYmx5IHRoZSBtb3N0IGFwcHJvcHJpYXRlIGZvciB0aGlzIHB1cnBvc2UuCisgICAgTm90ZSB0aGF0IHRoZSBwYXJzZXIgaXMgZmFpcmx5IGZvcmdpdmluZyAoc2VlICdXaGF0IEFTTi4xIHBhcnNlciBpcyB1c2VkJworICBiZWxvdyksIHNvIHRoaXMgc2hvdWxkIG5vdCBiZSByZWdhcmRlZCBhcyBhIHN0YW1wIG9mIGFwcHJvdmFsLgorCisgICAgVGhlIHNlY29uZCB0eXBlIG9mIHRvb2wgaXMgb25lIHRvIHR1cm4gYSBNSUIgc3BlY2lmaWNhdGlvbiBpbnRvIEMgY29kZSwKKyAgc3BlY2lmaWNhbGx5IG9uZSBkZXNpZ25lZCB0byBhaWQgYWdlbnQgaW1wbGVtZW50YXRpb24uICBUaGUgY29tbWFuZCAnbWliMmMnCisgIGlzIGFuIGV4YW1wbGUgb2Ygc3VjaCBhIHRvb2wgZm9yIHRoZSBOZXQtU05NUCBhZ2VudC4gIAorICBTZWUgdGhlIENPRElORyBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKKworPGEgbmFtZT0iSV9jYW5fdF9sb2FkX2FueV9vZl90aGVfbWliX2ZpbGVzX19hbmRfdGhleV9zZWVtX3RvX2JlX21pc3NpbmciPgorSSBjYW4ndCBsb2FkIGFueSBvZiB0aGUgbWliIGZpbGVzLCBhbmQgdGhleSBzZWVtIHRvIGJlIG1pc3NpbmcKK3RoZSBmaXJzdCB0d28gY2hhcmFjdGVycyBvZiB0aGUgZmlsZW5hbWUuICBXaGF0J3MgaGFwcGVuaW5nPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGlzIGEgcHJvYmxlbSBleHBlcmllbmNlZCB3aXRoIFN1biBzeXN0ZW1zIHdoZW4gdGhlIHRvb2xzIGhhdmUKKyAgYmVlbiBjb21waWxlZCB3aXRoIGEgbWl4dHVyZSBvZiBCU0QgYW5kIFNvbGFyaXMgZW52aXJvbm1lbnRzLgorICBZb3UnbGwgbmVlZCB0byByZS1jb25maWd1cmUgYW5kIGNvbXBpbGUgdGhlIHRvb2xzLCBtYWtpbmcgc3VyZSB0aGF0CisgICcvdXNyL3VjYicgaXMgbm90IGluIHlvdXIgUEFUSCAob3IgYXQgbGVhc3QgY29tZXMgYXQgdGhlIGVuZCkuCisKKworCis8YSBuYW1lPSJXaHlfYXJlbl90X215X21pYl9maWxlc19iZWluZ19yZWFkX2luXyI+CitXaHkgYXJlbid0IG15IG1pYiBmaWxlcyBiZWluZyByZWFkIGluPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhlIE5ldC1TTk1QIGxpYnJhcnkgb25seSBsb2FkcyBhIHN1YnNldCBvZiBNSUIgZmlsZXMgYnkgZGVmYXVsdC4KKyAgVGhpcyBsaXN0IGlzIHNldCBhdCB3aGVuIHRoZSBzdWl0ZSBpcyBmaXJzdCBjb25maWd1cmVkIGFuZCBjb21waWxlZCwKKyAgYW5kIGJhc2ljYWxseSBjb3JyZXNwb25kcyB0byB0aGUgbGlzdCBvZiBtb2R1bGVzIHRoYXQgdGhlIGFnZW50IHN1cHBvcnRzLgorICAoVGhpcyBpcyBhIHNpbXBsaWZpY2F0aW9uLCBidXQgaXMgYSByZWFzb25hYmxlIGZpcnN0IGFwcHJveGltYXRpb24pLgorCisgICAgWW91IGNhbiBvdmVycmlkZSB0aGlzIGJ5IHVzaW5nIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uICctbScsIHRoZQorICBlbnZpcm9ubWVudGFsIHZhcmlhYmxlICdNSUJTJyBvciB0aGUgc25tcC5jb25mIGRpcmVjdGl2ZSAnbWlicycuCisgIEVhY2ggb2YgdGhlc2UgdGFrZSBhIChjb2xvbi1zZXBhcmF0ZWQpIGxpc3Qgb2YgTUlCIG1vZHVsZSBuYW1lcworICB0byBsb2FkLiAgIFN0YXJ0aW5nIHRoZSBsaXN0IHdpdGggYSAnKycgY2hhcmFjdGVyIHdpbGwgYWRkIHRoZW0gdG8KKyAgdGhlIGRlZmF1bHQgbGlzdCAtIG90aGVyd2lzZSBpdCByZXBsYWNlcyB0aGUgZGVmYXVsdHMuCisKKyAgICBVc2luZyB0aGUgc3BlY2lhbCB2YWx1ZSAnQUxMJyB3aWxsIGxvYWQgYWxsIHRoZSBNSUIgZmlsZXMgdGhhdAorICB0aGUgbGlicmFyeSBjYW4gZmluZC4KKworCisgICAgQWx0ZXJuYXRpdmVseSwgdGhlIHRvb2xzIG1heSBiZSBsb29raW5nIGluIHRoZSB3cm9uZyBwbGFjZS4KKyAgVGhlIGRlZmF1bHQgbG9jYXRpb24gZm9yIHRoZSBtaWIgZmlsZXMgaXMgL3Vzci9sb2NhbC9zaGFyZS9zbm1wL21pYnMuCisgIEFnYWluLCB0aGlzIGlzIHNldCB3aGVuIHRoZSBzdWl0ZSBpcyBmaXJzdCBjb25maWd1cmVkIGFuZCBjb21waWxlZC4KKyAgVGhpcyBjYW4gYmUgY2hhbmdlZCB1c2luZyB0aGUgZW52aXJvbm1lbnRhbCB2YXJpYWJsZSAnTUlCRElSUycKKyAgb3IgdGhlIHNubXAuY29uZiBkaXJlY3RpdmUgJ21pYmRpcnMnLgorCisgICAgTm90ZSB0aGF0IHRoaXMgbWF5IHZlcnkgd2VsbCBhZmZlY3QgeW91IGlmIHlvdSd2ZSBpbnN0YWxsZWQgYQorICBuZXcgdmVyc2lvbiBvZiB0aGUgc3VpdGUgbWFudWFsbHksIHJlcGxhY2luZyBvbmUgcHJvdmlkZWQgYnkgdGhlCisgIHN1cHBsaWVyICh3aGljaCB0eXBpY2FsbHkgd291bGQgdXNlIGEgbW9yZSAnY2VudHJhbCcgbG9jYXRpb24pLgorCisKKyAgICBGaW5hbGx5LCBhcmUgeW91IHN1cmUgdGhhdCB5b3UndmUgaW5zdGFsbGVkIHRoZSBNSUIgZmlsZXM/CisgIElmIHlvdSd2ZSBjb21waWxlZCB0aGUgc3VpdGUgZnJvbSBzY3JhdGNoLCB5b3UgbmVlZCB0byBydW4KKyAgIm1ha2UgaW5zdGFsbCIgYXQgbGVhc3Qgb25jZSwgYmVmb3JlIHRoZSB0b29scyB3aWxsIGJlIGFibGUgdG8KKyAgZmluZCB0aGUgTUlCIGZpbGVzLiAgVGhpcyBpcyB1bmxpa2VseSB0byBiZSBhIHByb2JsZW0gaWYgeW91J3ZlCisgIGJlZW4gd29ya2luZyB3aXRoIHRoZSB0b29scyBmb3IgYSB3aGlsZSwgYnV0IGNhbiBiaXRlIHRob3NlIGNvbWluZworICBmcmVzaCB0byB0aGUgU05NUCB3b3JsZC4KKworCisKKzxhIG5hbWU9IklfbV9nZXR0aW5nX2Fuc3dlcnNfX2J1dF90aGV5X3JlX2FsbF9udW1iZXJzX19XaHlfIj4KK0knbSBnZXR0aW5nIGFuc3dlcnMsIGJ1dCB0aGV5J3JlIGFsbCBudW1iZXJzLiBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBpcyBhY3R1YWxseSB0aGUgc2FtZSBhcyB0aGUgcHJldmlvdXMgcXVlc3Rpb24uICBCZWNhdXNlIHRoZSB0b29scworICBkb24ndCByZWFkIGluIGV2ZXJ5IE1JQiBtb2R1bGUgdGhleSBjYW4gZmluZCwgaXQgaXMgcXVpdGUgcG9zc2libGUKKyAgZm9yIHJlc3VsdHMgZnJvbSBhbiBhZ2VudCB0byByZWZlciB0byBtb2R1bGVzIHRoYXQgaGF2ZSBub3QgYmVlbiBsb2FkZWQKKyAgKHBhcnRpY3VsYXJseSB3aXRoIEdFVE5FWFQgcmVxdWVzdHMsIG9yIHdoZW4gd2Fsa2luZyBhIHRyZWUpLgorICAgICBUaGUgdG9vbHMgd2lsbCByZXBvcnQgdGhlIGFuc3dlciBxdWl0ZSBjb3JyZWN0bHksIGJ1dCB3b24ndCB0cmFuc2xhdGUKKyAgaWRlbnRpZmllcnMgYW5kIGVudW1lcmF0aW9ucyBpbnRvIHJlYWRhYmxlIHN0cmluZ3MuICBUbyBmaXggdGhpcywgdXNlCisgIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlcyBNSUJTIG9yIE1JQkZJTEVTIChvciB0aGUgJy1tJyBhbmQgJy1NJyBmbGFncykKKyAgdG8gcmVhZCBpbiB0aGUgcmVsZXZhbnQgbW9kdWxlIGZpbGVzLgorCisKKworPGEgbmFtZT0iV2hhdF9kb2VzX19DYW5ub3RfZmluZF9tb2R1bGVfX1hYWF9NSUJfX19tZWFuXyI+CitXaGF0IGRvZXMgIkNhbm5vdCBmaW5kIG1vZHVsZSAoWFhYLU1JQikiIG1lYW4/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgc2ltaWxhciB0byB0aGUgcHJldmlvdXMgcXVlc3Rpb25zLiAgIEluIHRoaXMgY2FzZSwgaXQncworICBzdGF0aW5nIHRoYXQgaXQgY2FuJ3QgZmluZCB0aGUgc3BlY2lmaWVkIG1vZHVsZSAtIGVpdGhlciBiZWNhdXNlCisgIGl0J3Mgbm90IGluc3RhbGxlZCBwcm9wZXJseSwgb3IgdGhlIG5hbWUgdXNlZCBpcyBzdWJ0bHkgd3JvbmcuCisKKyAgICBJZiBpdCdzIGp1c3Qgb25lIG9yIHR3byBtb2R1bGVzIHRoYXQgYXJlIG5vdCBiZWluZyBmb3VuZCwgY2hlY2sKKyAgdGhhdCB0aGUgZmlsZXMgYXJlIGluIHRoZSBleHBlY3RlZCBsb2NhdGlvbiwgYXJlIHJlYWRhYmxlLCBhbmQgdGhlCisgIG5hbWUgYmVpbmcgdXNlZCBpcyBjb3JyZWN0LiAgTm90ZSB0aGF0IHRoZSBuYW1lIHJlcG9ydGVkIGlzIHRoZQorICBuYW1lIG9mIHRoZSBNSUIgbW9kdWxlLCB3aGljaCBpcyBub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgdGhlCisgIG5hbWUgb2YgdGhlIGZpbGUuIFNlZSB0aGUgcXVlc3Rpb24gJ0hvdyBkbyBJIGFkZCBhIE1JQiB0byB0aGUgdG9vbHM/JworICBmb3IgbW9yZSBkZXRhaWxzIG9uIHRoaXMuCisKKyAgICBJZiB0aGUgdG9vbCBpcyBnZW5lcmF0aW5nIGEgd2hvbGUgc2xldyBvZiBlcnJvcnMsIHRoZW4gaXQncworICBsaWtlbHkgdGhhdCBlaXRoZXIgdGhlIE1JQiBmaWxlcyBoYXZlbid0IGJlZW4gaW5zdGFsbGVkIGF0IGFsbCwKKyAgb3IgdGhlIGxpYnJhcnkgaXMgbG9va2luZyBpbiB0aGUgd3JvbmcgcGxhY2UuICAgU2VlIHRoZSBwcmV2aW91cworICB0d28gcXVlc3Rpb25zLgorCisKKworPGEgbmFtZT0iV2hhdF9hYm91dF9fdW5saW5rZWRfT0lEX18iPgorV2hhdCBhYm91dCAidW5saW5rZWQgT0lEIj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgbWVhbnMgdGhhdCB0aGUgbGlicmFyeSBoYXMgYmVlbiBhYmxlIHRvIGZpbmQgdGhlIE1JQiBtb2R1bGUsCisgIGFuZCBwYXJzZSB0aGUgaW5kaXZpZHVhbCBvYmplY3RzIGRlZmluZWQgaW4gaXQsIGJ1dCBpcyBoYXZpbmcgcHJvYmxlbXMKKyAgbGlua2luZyB0aGVtIHRvZ2V0aGVyIGludG8gYSBjb25zaXN0ZW50IHRyZWUuICBJbiBwYXJ0aWN1bGFyLCBpdAorICBjYW4ndCBmaW5kIGFuIG9iamVjdCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIHdpdGhpbiB0aGUgYnJhY2VzCisgIChpLmUuIHRoZSAneHh4JyBpbiAne3h4eCA5OX0nKS4KKworICAgIFRoaXMgaXMgcHJvYmFibHkgZHVlIGVpdGhlciB0byBhIHR5cG8gaW4gdGhpcyBuYW1lIChyZW1lbWJlciB0aGF0CisgIG5hbWVzIGFyZSBjYXNlIHNlbnNpdGl2ZSwgc28gYSByZWZlcmVuY2UgdG8gJ3h4eCcgd2lsbCAqbm90KiBtYXRjaAorICBhIGRlZmluaXRpb24gb2YgJ1h4eCcpLCBvciBlbHNlIHRoZSBuYW1lIGlzIGRlZmluZWQgaW4gYW5vdGhlciBNSUIKKyAgZmlsZSwgYW5kIHRoaXMgZGVwZW5kZW5jeSBpcyBtaXNzaW5nIGZyb20gdGhlIElNUE9SVCBjbGF1c2Ugb2YgdGhpcworICBNSUIgZmlsZS4KKworCisKKzxhIG5hbWU9IlRoZV9wYXJzZXJfZG9lc25fdF9oYW5kbGVfY29tbWVudHNfcHJvcGVybHlfX1doeV9ub3RfIj4KK1RoZSBwYXJzZXIgZG9lc24ndCBoYW5kbGUgY29tbWVudHMgcHJvcGVybHkuIFdoeSBub3Q/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgbW9zdCBsaWtlbHkgcmVhc29uIGlzIHRoYXQgdGhlIGxpbmUgaW4gcXVlc3Rpb24gY29udGFpbnMgdHdvCisgIChvciBtb3JlKSBzZXF1ZW5jZXMgb2YgcGFpcnMgb2YgZGFzaGVzLiAgVGhpcyBpcyBvZnRlbiB1c2VkIHRvIHRyeQorICBhbmQgImNvbW1lbnQgb3V0IiBhbiB1bndhbnRlZCBsaW5lIHRoYXQgYWxyZWFkeSBjb250YWlucyBhIGNvbW1lbnQ6CisKKwktLSAgIGJyb2tlbiA6Oj0geyBteU1JQiAxIH0gICAtLSBUaGlzIGlzbid0IHdvcmtpbmcgeWV0CisKKyAgVGhlIGFzc3VtcHRpb24gaGVyZSBpcyB0aGF0IGEgY29tbWVudCBjb250aW51ZXMgdG8gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgVW5mb3J0dW5hdGVseSwgdGhpcyBhc3N1bXB0aW9uIGlzIG5vdCBjb3JyZWN0LgorICAgIEEgY29tbWVudCB3aWxsIGNvbnRpbnVlIGVpdGhlciB0byB0aGUgZW5kIG9mIHRoZSBsaW5lLCBvciB0aGUgbmV4dAorICBvY2N1cmFuY2Ugb2YgYSBwYWlyIG9mIGRhc2hlcy4gIFRodXMgaW4gdGhpcyBjYXNlLCB0aGUgZGVmaW5pdGlvbiBvZgorICAiYnJva2VuIiBpcyBjb21tZW50ZWQgb3V0IChhcyBpbnRlbmRlZCkgYnV0IHRoZSBmb2xsb3dpbmcgdGV4dCBpcworICB0cmVhdGVkIGFzIHBhcnQgb2YgdGhlIE1JQiwgYW5kIHdpbGwgZ2VuZXJhdGUgYW4gZXJyb3IuCisKKyAgICBBIHNpbWlsYXIgZWZmZWN0IGNhbiBiZSBvYnRhaW5lZCB3aGVuIGEgbGluZSBvZiBkYXNoZXMgaGFzIGJlZW4gdXNlZAorICB0byB0cnkgYW5kIG1hcmsgc2VwYXJhdGUgcGFydHMgb2YgYSBNSUIgZmlsZS4KKworICAgIE1vc3Qgb2YgdGhlIGFwcGxpY2F0aW9ucyBoYXZlIGEgY29tbWFuZC1saW5lIG9wdGlvbiAoLVBjKSB3aGljaCB3aWxsCisgIHdvcmsgYXJvdW5kIHRoaXMgcHJvYmxlbSBieSB0cmVhdGluZyB0aGUgd2hvbGUgbGluZSBhcyBhIGNvbW1lbnQuICBCdXQKKyAgdGhpcyBpcyBub3Qgc3RyaWN0bHkgbGVnYWwsIGFuZCB0aGUgb2ZmZW5kaW5nIE1JQiBmaWxlIHNob3VsZCByZWFsbHkgYmUKKyAgY29ycmVjdGVkLgorCisKKworPGEgbmFtZT0iSG93X2RvX0lfcmVwbGFjZV9NSUJfdmFsdWVzX3dpdGhfbmV3X29uZXNfIj4KK0hvdyBkbyBJIHJlcGxhY2UgTUlCIHZhbHVlcyB3aXRoIG5ldyBvbmVzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgTmV0LVNOTVAgcGFyc2VyIGdlbmVyYWxseSB0YWtlcyB0aGUgZmlyc3QgZGVmaW5pdGlvbiBpdCBzZWVzIGZvciBlYWNoCisgIG9iamVjdCBpbiB0aGUgTUlCIGhpZXJhcmNoeS4gICBFdmVuIGlmIHlvdSBzcGVjaWZ5IHlvdXIgZmlsZSB0byBiZSByZWFkCisgIGZpcnN0LCBpZiB0aGUgSU1QT1JUUyBjbGF1c2VzIHJlZmVyZW5jZSBhIE1JQiB3aXRoIGNvbXBldGluZyBvYmplY3RzLAorICB0aG9zZSBvYmplY3RzIHdpbGwgYmUgcGFyc2VkIGZpcnN0LgorCisgIFdoZW4gc3BlY2lmeWluZyB0aGUgUmVwbGFjZSBNSUIgY29tbWFuZC1saW5lIG9wdGlvbiAoLVBSKSwgdGhlIHBhcnNlcgorICB3aWxsIHVzZSBkZWZpbml0aW9ucyBzb3VyY2VkIGZyb20gdGhlIG1vc3QgcmVjZW50IE1JQiBmaWxlLgorICBUaGUgcGFyc2VyIHdpbGwgcmVwbGFjZSBNSUIgb2JqZWN0cyB3aGVuIHRoZSBzdWItaWRlbnRpZmllciBhbmQgbmFtZSBtYXRjaC4KKworICBDYXV0aW9uOiBVc2luZyBSZXBsYWNlIE1JQiwgdGhlcmUgaXMgTk8gZ3VhcmFudGVlIHRoYXQgdGhlIHJlc3VsdGluZworICBNSUIgdHJlZSB3aWxsIGJlIGNvcnJlY3QuICBPdGhlciBNSUIgb2JqZWN0cyBtYXRjaGluZyB0aGUgbmFtZSBidXQKKyAgbm90IHRoZSBzdWItaWRlbnRpZmllciB3aWxsIHBlcnNpc3QuICBTdWItaGllcmFyY2hpZXMgbWF5IGJlIHJlcGFyZW50ZWQuCisgIEluIHBhcnRpY3VsYXIsIHJhbmRvbSBhY2Nlc3Mgc2VhcmNoaW5nIFtzZWUgbWFuIDEgc25tcGNtZF0KKyAgbWF5IGdpdmUgdW5leHBlY3RlZCByZXN1bHQuCisgIFRoZSBSZXBsYWNlIE1JQiBvcHRpb24gaXMgZXhwZXJpbWVudGFsLCBidXllciBiZXdhcmUsIGNhcnBlIGRpZW0sIGV0Yy4KKworICBIZXJlIGFyZSBhIGZldyBjb25zaWRlcmF0aW9ucyB0byBoZWxwIHlvdSBvYnRhaW4gZ29vZCByZXN1bHRzLgorICBUaGVzZSBob2xkIHRydWUgZXZlbiBpZiB5b3UgbmV2ZXIgdXNlIHRoZSBSZXBsYWNlIE1JQiBmZWF0dXJlLgorICBZb3VyIHN1Z2dlc3Rpb25zIGZvciBpbXByb3ZlbWVudCBhcmUgd2VsY29tZWQuCisKKyAgICAxLiBUaGUgcGFyc2VyIHNlYXJjaGVzIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3JpZXMgYW5kIGF0dGVtcHQKKyAgICAgICB0byBwYXJzZSBldmVyeSBmaWxlIHdob3NlIHBhdGggZG9lcyBub3QgYmVnaW4gd2l0aCAiLiIgKHBlcmlvZCkuCisgICAgICAgUmVtb3ZlIChvciByZW5hbWUpIG9sZGVyIE1JQiBmaWxlcyBmcm9tIHRoZXNlIGRpcmVjdG9yaWVzLgorICAgICAgIFJlbmFtZSAiUkVBRE1FIiB0byAiLlJFQURNRSIgLCBldGMuCisKKyAgICAyLiBIaW50OiB0aGUgcGFyc2VyJ3MgbW9kdWxlIGxpc3QgaXMgaW4gTElGTyBvcmRlci4gWW91IG1heSBzZWUgYmV0dGVyCisgICAgICAgcmVzdWx0cyBpZiB0aGUgZGlyZWN0b3J5IHdpdGggdGhlIG1vc3QgY29ycmVjdCBNSUIgZmlsZXMgaXMKKyAgICAgICBzcGVjaWZpZWQgbGFzdCBpbiB0aGUgTUlCRElSUyBlbnZpcm9ubWVudC4KKworICAgIDMuIENvbnN0cmFpbiB0aGUgcGFyc2VyIHRvIG5vdCByZWFkIGluIGRlZmF1bHQgTUlCIGZpbGVzIGJ5IHNldHRpbmcKKyAgICAgICB0aGUgTUlCUyBlbnZpcm9ubWVudGFsIHZhcmlhYmxlIHRvIHRoZSBhcHByb3ByaWF0ZSBzZXBhcmF0b3IgY2hhcmFjdGVyCisgICAgICAgKHNlbWktY29sb24gb24gd2luMzIsIGNvbG9uIGV2ZXJ5d2hlcmUgZWxzZSkuCisgICAgICAgU2V0dGluZyB0aGlzIHRvICIiIG1heSBhbHNvIGhhdmUgdGhlIHNhbWUgZWZmZWN0LgorCisgICAgNC4gVGhlIE1JQkZJTEVTIGVudmlyb25tZW50IGNhbiBzcGVjaWZ5IHRoZSBwYXRoIG9mIHRoZSBuZXcgTUlCIGZpbGUuCisKKyAgV2l0aGluIGEgcHJvZ3JhbSwgdGhlIGNhbGw6CisJIC8qICA0LjIueCAgKi8KKwkgZHNfc2V0X2Jvb2xlYW4oRFNfTElCUkFSWV9JRCwgRFNfTElCX01JQl9SRVBMQUNFLCAxIHwgMCk7CisKKyAgb3IsIGlmIHVzaW5nIHRoZSA1LjAueCBzZXJpZXMgY29kZToKKwkvKiAgNS4wLnggICovCisJbmV0c25tcF9kc19zZXRfYm9vbGVhbihORVRTTk1QX0RTX0xJQlJBUllfSUQsCisJCQkgICAgICAgTkVUU05NUF9EU19MSUJfTUlCX1JFUExBQ0UsIDEgfCAwKTsKKworICB3aWxsIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBSZXBsYWNlIE1JQiBmZWF0dXJlIHJlc3BlY3RpdmVseS4KKyAgSWYgeW91J3JlIGhhdmluZyBwcm9ibGVtcyBsb2FkaW5nIGEgcGFydGljdWxhciBNSUIgZmlsZSwgdGhpcworICBjYWxsIGNhbiBiZSB1c2VkIHRvIGRpc2FibGUgdGhpcyBmZWF0dXJlLCBiZWZvcmUgdXNpbmcgcmVhZF9taWIoKSB0bworICBsb2FkIHRoZSByZXF1aXJlZCBmaWxlLCBhbmQgdGhlbiByZS1lbmFibGluZyB0aGUgUmVwbGFjZSBNSUIgZmVhdHVyZS4KKyAgKG9yIHZpY2UgdmVyc2EsIGFzIGFwcHJvcHJpYXRlKS4KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9nZXRfbW9yZV9pbmZvcm1hdGlvbl9hYm91dF90aGVzZV9NSUJfZmlsZV9wcm9ibGVtc18iPgorSG93IGNhbiBJIGdldCBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZXNlIE1JQiBmaWxlIHByb2JsZW1zPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGNvbW1hbmQgJ3NubXB0cmFuc2xhdGUnIGlzIHVzZWQgdG8gdHJhbnNsYXRlIGJldHdlZW4gbnVtZXJpYworICBhbmQgc3ltYm9saWMgZm9ybXMgb2YgT0lEcy4gIEl0IHVzZXMgdGhlIHNhbWUgcm91dGluZXMgYXMgdGhlCisgICdhY3RpdmUnIGNvbW1hbmRzLCBidXQgZG9lcyBub3QgcmVseSBvbiBjb21tdW5pY2F0aW5nIHN1Y2Nlc3NmdWxseQorICB3aXRoIGEgbmV0d29yayBtYW5hZ2VtZW50IGFnZW50LiAgQXMgc3VjaCwgaXQgaXMgYSB1c2VmdWwgdG9vbAorICBmb3IgaWRlbnRpZnlpbmcgcHJvYmxlbXMgd2l0aCByZWFkaW5nIGluIE1JQiBmaWxlcy4KKworICAgIEluIHBhcnRpY3VsYXIsIHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBtYXkgYmUgdXNlZnVsIGluCisgIGlkZW50aWZ5aW5nIHByb2JsZW1zOgorCS1QdyAgd2FybnMgYWJvdXQgY29uZmxpY3Rpbmcgc3ltYm9scworCS1QVyAgcHJpbnRzIG1vcmUgdmVyYm9zZSB3YXJuaW5ncyBhYm91dCBvdGhlciBwcm9ibGVtcyBhcyB3ZWxsCisJCShpbiBib3RoIGNhc2VzLCBpZ25vcmUgdGhlICd4bWFsbG9jJyByZXBvcnRzKQorCS1UICAgcHJvdmlkZXMgc3ViLW9wdGlvbnMgZm9yIHZhcmlvdXMgdmlld3Mgb2YgdGhlc2UgZW50cmllcworCisgIFRoZXJlIGFyZSBvdGhlciAnLVAnIG9wdGlvbnMgdG8gY29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2YgTUlCIHBhcnNpbmcuCisgIFNlZSB0aGUgJ3NubXB0cmFuc2xhdGUoMSknIGFuZCAnc25tcGNtZCgxKScgbWFuIHBhZ2VzIGZvciBtb3JlIGRldGFpbHMsCisgIG9yIHRoZSB0dXRvcmlhbCBhdAorCWh0dHA6Ly93d3cubmV0LXNubXAub3JnL3R1dG9yaWFsLTUvY29tbWFuZHMvc25tcHRyYW5zbGF0ZS5odG1sCisKKworCis8YSBuYW1lPSJXaGF0X3NfdGhpc19hYm91dF9fdG9vX21hbnlfaW1wb3J0ZWRfc3ltYm9sc19fIj4KK1doYXQncyB0aGlzIGFib3V0ICJ0b28gbWFueSBpbXBvcnRlZCBzeW1ib2xzIj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEFueSBNSUIgZmlsZSBzdGFydHMgd2l0aCBhbiAob3B0aW9uYWwpIGxpc3Qgb2YgaWRlbnRpZmllcnMgdGhhdAorICBpdCAiaW1wb3J0cyIgZnJvbSBvdGhlciBmaWxlcy4gIFRoZSBwYXJzZXIgaW1wbGVtZW50cyB0aGlzIHVzaW5nCisgIGEgZml4ZWQgc2l6ZSBidWZmZXIgdG8gaG9sZCB0aGUgaW1wb3J0IGluZm9ybWF0aW9uLgorICAgIFRoZXJlIGFyZSB0d28gY2lyY3Vtc3RhbmNlcyBpbiB3aGljaCB0aGlzIGNhbiByZXN1bHQgaW4gdGhlCisgIGVycm9yIG1lc3NhZ2Ugc2hvd24gYWJvdmUuCisKKyAgICBGaXJzdGx5LCBpZiB0aGUgTUlCIGZpbGUgcmVmZXJzIHRvIGFuIHVudXN1YWxseSBsYXJnZSBudW1iZXIKKyAgb2YgZXh0ZXJuYWwgaWRlbnRpZmllcnMuICBIYW5kbGluZyB0aGlzIGNhc2UgcmVxdWlyZXMgYSAodHJpdmlhbCkKKyAgcGF0Y2ggdG8gdGhlIHBhcnNpbmcgY29kZS4gIENvbnRhY3QgdGhlIGNvZGVycyBsaXN0IGZvciBhZHZpY2UuCisgICAgIChUaGlzIGlzIGV4dHJlbWVseSByYXJlIC0gdGhlIG9ubHkgZXhhbXBsZSB0aGF0CisgICAgICB3ZSd2ZSBjb21lIGFjcm9zcyBpcyB0aGUgQ2FibGV0cm9uIFRyYXAgTUlCKS4KKworICAgIE11Y2ggbW9yZSBjb21tb24gaXMgYSBzeW50YXggZXJyb3IgaW4gdGhlIElNUE9SVFMgY2xhdXNlIG9mIHRoZQorICBNSUIgZmlsZSBpbiBxdWVzdGlvbi4gIEluIHBhcnRpY3VsYXIsIGNoZWNrIHRoYXQgdGhpcyBlbmRzIGluIGEKKyAgc2VtaWNvbG9uLCBiZWZvcmUgZ29pbmcgb24gdG8gdGhlIG1haW4gZGVmaW5pdGlvbiBzZWN0aW9uLgorICAKKworCis8YSBuYW1lPSJBR0VOVCI+CitBR0VOVAorPT09PT0KKworPGEgbmFtZT0iV2hhdF9NSUJzX2FyZV9zdXBwb3J0ZWRfIj4KK1doYXQgTUlCcyBhcmUgc3VwcG9ydGVkPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgZm9sbG93aW5nIE1JQnMgYXJlIHN1cHBvcnRlZCAoYXQgbGVhc3QgaW4gcGFydCBhbmQgb24gc29tZSBzeXN0ZW1zKToKKworCS0gTUlCLTIgIEdlbmVyYWwgbmV0d29yayBzdGF0aXN0aWNzIChSRkMgMTIxMykKKwktIFVDRCBhZ2VudCBleHRlbnNpb25zCisJCShwcm9jZXNzZXMsIGRpc2tzLCBtZW1vcnksIGxvYWQgYXZlcmFnZSwKKwkJIHNoZWxsIGNvbW1hbmRzLCBlcnJvciBoYW5kbGluZykKKwktIEhvc3QgUmVzb3VyY2VzIChSRkMgMTUxNCBhbmQgMjc5MCkKKwktIFNOTVB2MyBNSUJTIChSRkNzIDI1NzEtNikKKworICBUaGUgU05NUHYyIFBhcnR5IGFuZCBNYW5hZ2VyLXRvLU1hbmFnZXIgTUlCcyAoUkZDcyAxNDQ3ICYgMTQ1MSkgaGF2ZSBiZWVuCisgIHdpdGhkcmF3bi4KKworCisKKzxhIG5hbWU9IldoYXRfcHJvdG9jb2xzX2FyZV9zdXBwb3J0ZWRfIj4KK1doYXQgcHJvdG9jb2xzIGFyZSBzdXBwb3J0ZWQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGFnZW50IHN1cHBvcnRzIGFsbCB0aHJlZSBjdXJyZW50IHZlcnNpb25zIG9mIFNOTVAgKHYxLCB2MmMgYW5kIHYzKSwKKyAgb3ZlciBib3RoIFVEUCBhbmQgVENQIHRyYW5zcG9ydHMsIGFzIHdlbGwgYXMgYSBTTVVYIChSRkMgMTIyNykgbWFzdGVyCisgIGFnZW50LCBBZ2VudFggKFJGQyAyMjU3ICkgaW4gYm90aCBtYXN0ZXIgYW5kIHN1YmFnZW50IHJvbGVzLCBhbmQgU05NUAorICBwcm94eWluZy4KKworCisKKzxhIG5hbWU9Ikhvd19kb19JX2NvbmZpZ3VyZV90aGVfYWdlbnRfIj4KK0hvdyBkbyBJIGNvbmZpZ3VyZSB0aGUgYWdlbnQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhhdCBkZXBlbmRzIG9uIHdoYXQgeW91IHdhbnQgaXQgdG8gZG8uICBTZWUgdGhlIHNubXBkLmNvbmYoNSkgbWFudWFsCisgIHBhZ2UgZm9yIHRoZSBwb3NzaWJpbGl0aWVzLgorCisgIFlvdSBjYW4gYWxzbyBydW4gdGhlICJzbm1wY29uZiIgcGVybCBzY3JpcHQgdG8gaGVscCB5b3UgY3JlYXRlIHRoaXMKKyAgZmlsZS4gIFN0YXJ0IG9mZiB3aXRoICdzbm1wY29uZiAtZyBiYXNpY19zZXR1cCcgdG8gZ2V0IHlvdSBnb2luZy4KKworCisKKzxhIG5hbWU9Ikhvd19kb19JX2FkZF9hX01JQl90b190aGVfYWdlbnRfIj4KK0hvdyBkbyBJIGFkZCBhIE1JQiB0byB0aGUgYWdlbnQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitIb3cgZG8gSSBhZGQgZnVuY3Rpb25hbGl0eT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgV2hpbGUgc2ltcGx5IGFkZGluZyBhIGZpbGUgdG8gdGhlIE1JQiBkaXJlY3RvcnkgKGFuZCBwb3NzaWJseSB0d2Vha2luZworICB0aGUgbGlzdCBvZiBNSUJzIHRvIGxvYWQpIGlzIHN1ZmZpY2llbnQgZm9yIHRoZSB0b29scywgdW5mb3J0dW5hdGVseQorICBleHRlbmRpbmcgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGFnZW50IHRvIGluY2x1ZGUgdGhpcyBpcyBub3Qgc28gc2ltcGxlLgorICBJbiBmYWN0LCB0aGUgYWdlbnQgbWFrZXMgbGl0dGxlIG9yIG5vIHVzZSBvZiB0aGVzZSBmaWxlcywgYW5kIHdpbGwgd29yaworICBxdWl0ZSBoYXBwaWx5IHdpdGhvdXQgdGhlbS4gIEFsbCB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHN5bnRheCBhbmQKKyAgc2NvcGUgb2YgdGhlIHZhcmlhYmxlcyBzdXBwb3J0ZWQgaXMgaGFyZHdpcmVkIGludG8gdGhlIGltcGxlbWVudGF0aW9uCisgIG9mIHRoZSBhZ2VudC4KKworICBUaGVyZSBhcmUgYSBudW1iZXIgb2YgYWx0ZXJuYXRpdmUgd2F5cyB0byBhZGQgZnVuY3Rpb25hbGl0eSBmb3IgYSBuZXcKKyAgTUlCIHRvIHRoZSBhZ2VudC4KKworICBGaXJzdGx5LCBpdCBpcyBwb3NzaWJsZSB0aGF0IHRoZSBhZ2VudCBkaXN0cmlidXRpb24gYWxyZWFkeSBpbmNsdWRlcworICB0aGUgZGVzaXJlZCBmdW5jdGlvbmFsaXR5LCBidXQgdGhpcyBoYXMgc2ltcGx5IG5vdCBiZWVuIGNvbmZpZ3VyZWQgaW4KKyAgdG8gdGhlIHJ1bm5pbmcgdmVyc2lvbi4gIFRoaXMgaXMgZG9uZSB1c2luZyB0aGUgY29uZmlndXJlIG9wdGlvbgorCQktLXdpdGgtbWliLW1vZHVsZXM9Imxpc3QiCisgICh3aGVyZSAibGlzdCIgaXMgYSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBtb2R1bGVzIHRvIGluY2x1ZGUpIHRoZW4KKyAgcmVjb21waWxpbmcgdGhlIGFnZW50LgorICBOb3RlIHRoYXQgc29tZSBmdW5jdGlvbmFsaXR5IGNvbmNlcm5lZCB3aXRoIG1vbml0b3JpbmcgYW5kIG1hbmFnaW5nCisgIHVuaXggaG9zdHMgaXMgaW5jbHVkZWQgaW4gdGhlIFVDRCBleHRlbnNpb24gbW9kdWxlcywgd2hpY2ggYXJlIGxvY2F0ZWQKKyAgd2l0aGluIHRoZSAncHJpdmF0ZScgYnJhbmNoIG9mIHRoZSBNSUIgdHJlZS4gIFRoaXMgaXMgY292ZXJlZCBpbiBhIGxhdGVyCisgIHF1ZXN0aW9uIGluIHRoaXMgRkFRLgorCisgIFNlY29uZGx5LCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGFnZW50IHRvIHJ1biBjb21tYW5kcyBvciBzaGVsbCBzY3JpcHRzCisgIGluIHJlc3BvbnNlIHRvIHF1ZXJpZXMuICBUaGVzZSBjYW4gb2J0YWluIGFuZCByZXBvcnQgdGhlIG5lY2Vzc2FyeQorICBpbmZvcm1hdGlvbiwgb3IgcGVyZm9ybSBhY3Rpb25zIGFzIHJlcXVpcmVkLgorICBEZXRhaWxlZCBpbmZvcm1hdGlvbiBhbmQgZXhhbXBsZXMgYXJlIHByb3ZpZGVkIGluIHRoZSBzbm1wZCg4KSBhbmQKKyAgc25tcGQuY29uZig1KSBtYW51YWwgcGFnZXMsIGFuZCB0aGUgRVhBTVBMRS5jb25mIGZpbGUuCisgIFRoaXMgaXMga25vd24gYXMgInBhc3MtdGhyb3VnaCIgc3VwcG9ydC4KKworICBUaGlyZGx5LCBpdCBtYXkgYmUgcG9zc2libGUgdG8gbGluayBhbm90aGVyIGFnZW50ICh3aGljaCBhbHJlYWR5CisgIHN1cHBvcnRzIHRoZSBkZXNpcmVkIE1JQiksIGFzIGEgInN1YmFnZW50IiBvZiB0aGUgTmV0LVNOTVAgbWFzdGVyCisgIChvciB2aWNlIHZlcnNhKS4gIFRoZSBwb3NzaWJpbGl0aWVzIGhlcmUgYXJlIFNNVVgsIEFnZW50WCBvciBwcm94aWVkCisgIFNOTVAgKHNlZSB0aGUgbmV4dCBxdWVzdGlvbiBidXQgb25lKS4KKworICBGaW5hbGx5LCB0aGUgYWdlbnQgaXRzZWxmIGNhbiBiZSBleHRlbmRlZCB0byBzdXBwb3J0IGFkZGl0aW9uYWwgTUlCCisgIGdyb3VwcywgYnkgd3JpdGluZyB0aGUgbmVjZXNzYXJ5IEMgY29kZSwgYW5kIGluY2x1ZGluZyB0aGlzIHdpdGhpbgorICB0aGUgbWFpbiBhZ2VudCAtIGVpdGhlciBzdGF0aWNhbGx5IGNvbXBpbGVkIGluLCBvciBkeW5hbWljYWxseSBsb2FkZWQuCisgIFRoaXMgaXMgY292ZXJlZCBmdXJ0aGVyIGluIHRoZSBuZXh0IHNlY3Rpb24uCisKKyAgICBOb3RlIHRoYXQgdGhlcmUgaXMgbm8gdmlzaWJsZSBkaWZmZXJlbmNlIGJldHdlZW4gJ3Bhc3MtdGhyb3VnaCcKKyAgTUlCIHN1cHBvcnQsIHN1YmFnZW50cywgYW5kIG1vZHVsZXMgaW1wbGVtZW50ZWQgd2l0aGluIHRoZSBtYWluIGFnZW50CisgIGl0c2VsZi4gVG9vbHMgcXVlcnlpbmcgdGhlIGFnZW50IHdpbGwgc2VlIGEgc2luZ2xlIE1JQiBzdHJ1Y3R1cmUuCisgCisKKworPGEgbmFtZT0iV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fX2V4ZWNfX19fc2hfX2FuZF9fcGFzc19fIj4KK1doYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuICdleGVjJywgJ3NoJyBhbmQgJ3Bhc3MnPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgICdleGVjJyB3aWxsIGZvcmsgb2ZmIHRoZSBzcGVjaWZpZWQgY29tbWFuZCBhbmQgcmV0dXJuIHRoZSBleGl0IHN0YXR1cworICBhbmQvb3IgdGhlIG91dHB1dC4gIEFyZ3VtZW50cyBhcmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZSBjb21tYW5kLgorCisgICAgJ3NoJyBpcyBzaW1pbGFyLCBidXQgaW52b2tlcyBhIHNoZWxsIHRvIHJ1biB0aGUgY29tbWFuZCBsaW5lIGdpdmVuLgorICBUaGlzIG1lYW5zIHRoYXQgcXVvdGVkIGFyZ3VtZW50cyB3aWxsIGJlIHJlY29nbmlzZWQgYXMgc3VjaCwgYW5kIGFsc28KKyAgYWxsb3dzIHJlZGlyZWN0aW9uLCBhbmQgb3RoZXIgc2ltaWxhciBzaGVsbCBpbnRlcnByZXRhdGlvbi4KKworICBOZWl0aGVyIG9mIHRoZXNlIG1lY2hhbmlzbXMgcmVxdWlyZSB0aGUgY29tbWFuZCB0byBoYXZlIGFueSBrbm93bGVkZ2UKKyAgb2YgdGhlIGZhY3QgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGluIHRoaXMgbWFubmVyLiAgTm90ZSB0aGF0IHJldHVybgorICB2YWx1ZXMgYXJlIGNhY2hlZCB3aXRoaW4gdGhlIGFnZW50IGZvciAzMCBzZWNvbmRzLCByYXRoZXIgdGhhbiBpbnZva2luZworICB0aGUgY29tbWFuZCBmb3IgZXZlcnkgcmVxdWVzdC4KKworCisgICAgJ3Bhc3MnIGlzIGEgbW9yZSBnZW5lcmFsIG1lY2hhbmlzbSBmb3IgZXh0ZW5kaW5nIHRoZSBhZ2VudCwgYW5kIHRoZQorICBjb21tYW5kIGdpdmVuIHdpbGwgYmUgaW52b2tlZCBmb3IgYW55IHJlcXVlc3Qgd2l0aGluIHRoZSBzcGVjaWZpYyBNSUIKKyAgc3VidHJlZS4gIERldGFpbHMgb2YgcHJlY2lzZWx5IGhvdyB0aGlzIGNvbW1hbmQgd2lsbCBiZSBjYWxsZWQgaW4KKyAgdmFyaW91cyBjaXJjdW1zdGFuY2VzIGlzIGdpdmVuIGluIHRoZSAnc25tcGQuY29uZig1KScgbWFuIHBhZ2UuCisKKyAgICAncGFzcy1wZXJzaXN0JyBpcyBzaW1pbGFyLCBidXQgdGhlIGNvbW1hbmQgd2lsbCBjb250aW51ZSBydW5uaW5nCisgIGV2ZW4gb25jZSB0aGUgaW5pdGlhbCByZXF1ZXN0IGhhcyBiZWVuIGFuc3dlcmVkLgorCisgIFNlZSAnc25tcGQuY29uZig1KScgZm9yIG1vcmUgZGV0YWlscy4KKworICAKKworPGEgbmFtZT0iV2hhdF9zX3RoZV9kaWZmZXJlbmNlX2JldHdlZW5fQWdlbnRYX19TTVVYX2FuZF9wcm94aWVkX1NOTVBfIj4KK1doYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIEFnZW50WCwgU01VWCBhbmQgcHJveGllZCBTTk1QPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIEFsbCB0aHJlZSBhcmUgcHJvdG9jb2xzIHRoYXQgY2FuIGJlIHVzZWQgdG8gbWFrZSB0d28gb3IgbW9yZSBhZ2VudHMKKyAgYXBwZWFyIGFzIG9uZSB0byB0aGUgcXVlcnlpbmcgYXBwbGljYXRpb24uICBJbiBlYWNoIGNhc2UsIG9uZSBhZ2VudAorICB0YWtlcyB0aGUgcm9sZSBvZiAibWFzdGVyIiwgYW5kIGRlbGVnYXRlcyByZXF1ZXN0cyB0byBvbmUgb2YgdGhlIG90aGVycworICBhcyBhbmQgd2hlcmUgdGhpcyBpcyBhcHByb3ByaWF0ZS4gIFRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZW0gbWFpbmx5CisgIHJlbGF0ZSB0byBob3cgZGF0YSBpcyByZXByZXNlbnRlZCwgYW5kIHRoZSBtZWNoYW5pc21zIGZvciBjb21tdW5pY2F0aW9uCisgIGJldHdlZW4gbWFzdGVyIGFuZCBzdWJhZ2VudHMuCisKKyAgICBTTVVYIGFuZCBwcm94eSBTTk1QIGJvdGggZXNzZW50aWFsbHkgdXNlIHRoZSBzdGFuZGFyZCBTTk1QIHBhY2tldCBmb3JtYXQuCisgIFRoZSBtYWluIGRpZmZlcmVuY2UgaXMgdGhhdCBhIHByb3h5IFNOTVAgc3ViYWdlbnQgbmVlZCBub3QgYmUgYXdhcmUgdGhhdAorICBpdCBpcyBhY3RpbmcgaW4gc3VjaCBhIHJvbGUuICBJdCB0eXBpY2FsbHkgbGlzdGVucyBvbiBhIG5vbi1zdGFuZGFyZCBwb3J0LAorICBhbmQgc2ltcGx5IHJlY2VpdmVzIHJlcXVlc3RzIGFzIHVzdWFsLCBmb3J3YXJkZWQgZnJvbSB0aGUgbWFzdGVyIGFnZW50LiAKKyAgVGhlIG1haW4gaXNzdWUgdG8gYmUgYXdhcmUgb2YgaXMgdGhhdCBzdWNoIHJlcXVlc3RzIHdpbGwgdXN1YWxseSBhcHBlYXIKKyAgdG8gY29tZSBmcm9tIHRoZSBsb2NhbCBob3N0LCBhbmQgdGhpcyBtYXkgYWZmZWN0IGhvdyB0aGUgYWNjZXNzIGNvbnRyb2wKKyAgbWVjaGFuaXNtcyBuZWVkIHRvIGJlIHNldCB1cC4KKworICAgIFNNVVggdXNlcyBhIHNpbWlsYXIgcGFja2V0IGZvcm1hdCwgYnV0IHRoZSBzdWJhZ2VudCAicmVnaXN0ZXJzIiB3aXRoCisgIHRoZSBtYXN0ZXIgYWdlbnQsIHByb3ZpZGluZyBhIHN1aXRhYmxlIHBhc3N3b3JkLiAgVGhlIE5ldC1TTk1QIChhbmQgVUNEKQorICBhZ2VudCBpbmNsdWRlcyB0aGUgcG9zc2liaWxpdHkgb2YgYWN0aW5nIGFzIGEgU01VWCBtYXN0ZXIgYWdlbnQsIGJ1dCB0aGUKKyAgc3VpdGUgZG9lcyBub3QgaW5jbHVkZSBhIHN1YmFnZW50IEFQSS4gICBOb3RlIHRoYXQgdGhlIFNNVVggcHJvdG9jb2wgaGFzCisgIGVzc2VudGlhbGx5IGJlZW4gc3VwZXJjZWRlZCBieSBBZ2VudFgsIGJ1dCBpcyBzdGlsbCBwcm92aWRlZCBpbiBvcmRlciB0bworICBzdXBwb3J0IGV4aXN0aW5nIFNNVVggc3ViYWdlbnRzLgorICAgIFNlZSB0aGUgZmlsZSAnYWdlbnQvbWliZ3JvdXAvUkVBRE1FLnNtdXgnIGZvciBkZXRhaWxzLgorCisgICAgQWdlbnRYIHVzZXMgYSBtb3JlIGNvbXBhY3QgKGFuZCBzaW1wbGVyKSBwYWNrZXQgZm9ybWF0LCB3aXRoIGEgcmljaGVyCisgIHJhbmdlIG9mIGFkbWluaXN0cmF0aXZlIGNvbW1hbmRzLCBhbmQgcHJvdmlkZXMgYSBtb3JlIGZsZXhpYmxlIGFuZCByZWxpYWJsZQorICBleHRlbnNpb24gbWVjaGFuaXNtLiAgVGhlIE5ldC1TTk1QIGFnZW50IGNhbiBiZSB1c2VkIGluIGJvdGggbWFzdGVyIGFuZAorICBzdWJhZ2VudCByb2xlcywgYW5kIHRoZSBhZ2VudCBsaWJyYXJ5IGNhbiBhbHNvIGJlIHVzZWQgdG8gZW1iZWQgYW4gQWdlbnRYCisgIHN1YmFnZW50IHdpdGhpbiBhbm90aGVyIGFwcGxpY2F0aW9uLgorICAgIFNlZSB0aGUgZmlsZSAnUkVBRE1FLmFnZW50eCcgZm9yIGRldGFpbHMuCisKKyAgTm90ZSB0aGF0IHN1cHBvcnQgZm9yIFNNVVggaXMgbm90IGNvbmZpZ3VyZWQgaW4gYnkgZGVmYXVsdC4gIFlvdSB3aWxsCisgIG5lZWQgdG8gcnVuIGNvbmZpZ3VyZSB3aXRoIHRoZSBvcHRpb24KKworCQktLXdpdGgtbWliLW1vZHVsZXM9c211eAorCisgIFN0YXJ0aW5nIGZyb20gcmVsZWFzZSA0LjIuMSwgQWdlbnRYIHN1cHBvcnQgaXMgbm93IGluY2x1ZGVkIGJ5IGRlZmF1bHQsCisgIGJ1dCBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGFjdGl2YXRlZCBpbiB0aGUgbWFzdGVyIGFnZW50LiAgRG8gdGhpcyBieQorICBhZGRpbmcgdGhlIGxpbmUKKworCQltYXN0ZXIgYWdlbnR4CisKKyAgdG8gdGhlIHNubXBkLmNvbmYgZmlsZSBiZWZvcmUgc3RhcnRpbmcgdGhlIGFnZW50LiAgTm90ZSB0aGF0IHRoZXJlIGFyZQorICBhIG51bWJlciBvZiBrbm93biBwcm9ibGVtcyB3aXRoIHRoZSBBZ2VudFggc3VwcG9ydCBpbiB0aGUgNC54IGxpbmUsIGFuZAorICB0aGlzIHNob3VsZCBub3QgYmUgdXNlZCBvbiBwcm9kdWN0aW9uIHN5c3RlbXMuICBUaGUgNS4wIEFnZW50WCBzdXBwb3J0CisgIGhhcyBiZWVuIHNpZ25pZmljYW50bHkgaW1wcm92ZWQsIGFuZCBwcm9kdWN0aW9uIHVzZSBpcyBsZXNzIGZvb2xoYXJkeS4KKyAgICBTZWUgUkVBRE1FLmFnZW50eCBmb3IgZGV0YWlscy4KKworCisKKzxhIG5hbWU9IldoYXRfYWJvdXRfX2RsbW9kX19fX3doYXRfc190aGF0X2Fib3V0XyI+CitXaGF0IGFib3V0ICdkbG1vZCcgLSB3aGF0J3MgdGhhdCBhYm91dD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgRHluYW1pY2FsbHkgbG9hZGVkIG1vZHVsZXMgYXJlIGEgbWVhbnMgb2YgaW5jbHVkaW5nIGEgTUlCIGltcGxlbWVudGF0aW9uCisgIG1vZHVsZSB3aXRoaW4gdGhlIG1haW4gU05NUCBhZ2VudCAob3IgYW4gQWdlbnRYIHN1YmFnZW50KSB3aXRob3V0IG5lZWRpbmcKKyAgdG8gcmUtY29tcGlsZSBhbmQgcmUtbGluayB0aGUgYWdlbnQgYmluYXJ5LiAgSW5zdGVhZCwgZGV0YWlscyBvZiB0aGUKKyAgbW9kdWxlKHMpIHRvIGxvYWQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBhbmQgdGhlIGFnZW50CisgIGxvY2F0ZXMgdGhlIGZpbGVzIGxpc3RlZCwgYW5kIG1lcmdlcyB0aGVtIGluIGF0IHJ1biB0aW1lLgorCisgIFNlZSBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZy90dXRvcmlhbC01L3Rvb2xraXQvZGxtb2QvIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisKKworPGEgbmFtZT0iV2hpY2hfc2hvdWxkX0lfdXNlXyI+CitXaGljaCBzaG91bGQgSSB1c2U/CistLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGF0J3MgYSBkaWZmaWN1bHQgcXVlc3Rpb24uCisKKyAgQ29tcGFyaW5nIHRoZSB0aHJlZSBwcm90b2NvbHMsIFNOTVAgd2FzIG5vdCBvcmlnaW5hbGx5IGRlc2lnbmVkCisgIGFzIGFuIGludGVybmFsIHN1YmFnZW50LWNvbW11bmljYXRpb24gcHJvdG9jb2wsIGFuZCB0aGVyZSBhcmUKKyAgY2VydGFpbiBhcmNoaXRlY3R1cmFsIGxpbWl0YXRpb25zIHRvIFNNVVgsIHdoaWNoIHdlcmUgYWRkcmVzc2VkCisgIGFzIHBhcnQgb2YgdGhlIGRlc2lnbiBvZiBBZ2VudFguICBUaGVzZSBpbmNsdWRlIHN1Y2ggYXNwZWN0cyBhcworICByZWxpYWJsZSBoYW5kbGluZyBvZiBTRVQgcmVxdWVzdHMgKHBhcnRpY3VsYXJseSBpbiB0aGUgZmFjZSBvZgorICBmYWlsdXJlcyksIGEgY29tbW9uIHZhbHVlIGZvciBzeXNVcFRpbWUsIGFuZCBhIG1lY2hhbmlzbSBmb3IKKyAgc2hhcmluZyB0YWJsZXMgYWNyb3NzIG11bHRpcGxlIHN1YmFnZW50cy4KKyAgICBTbyBmcm9tIGEgcHVyZWx5IGZ1bmN0aW9uYWwgcG9pbnQgb2YgdmlldywgQWdlbnRYIGlzIHRoZSBtb3N0CisgIGFwcHJvcHJpYXRlIGNob2ljZSBmb3Igc3ViYWdlbnQgY29tbXVuaWNhdGlvbi4KKworICBJbiB0ZXJtcyBvZiBpbXBsZW1lbnRhdGlvbiwgU01VWCBpcyB0aGUgbW9zdCBtYXR1cmUgb2YgdGhlIHRocmVlLAorICBidXQgaXMgbm8gbG9uZ2VyIGJlaW5nIGFjdGl2ZWx5IG1haW50YWluZWQuICBUaGUgb3JpZ2luYWwgYXV0aG9yCisgIGhhcyBtb3ZlZCBvbiwgYW5kIHRoZSBjdXJyZW50IGRldmVsb3BlcnMgZG9uJ3QgdXNlIHRoaXMgZmFjaWxpdHkuCisgIEl0IGFsc28gb25seSBpbmNsdWRlcyBtYXN0ZXIgYWdlbnQgc3VwcG9ydCAtIHRoZSBwYWNrYWdlIGRvZXMgbm90CisgIHByb3ZpZGUgYSBTTVVYIHN1Yi1hZ2VudCBBUEkuCisgICAgVGhlIEFnZW50WCBzdXBwb3J0IGluIHRoZSA0LnggbGluZSBoYXMgYSBudW1iZXIgb2Yga25vd24gcHJvYmxlbXMsCisgIGFuZCBpcyBub3Qgc3VpdGFibGUgZm9yIHVzZSBpbiBmcm9udC1saW5lIHNpdHVhdGlvbnMgKHRob3VnaCBpdCdzCisgIHByb2JhYmx5IHN1ZmZpY2llbnRseSBzdGFibGUgYW5kIGZ1bmN0aW9uYWwgZm9yIHNpbXBsZSBkYXktdG8tZGF5CisgIHVzZSkuICBUaGUgNS4wIGFnZW50IGhhcyBzZWVuIGEgc2lnbmlmaWNhbnQgYW1vdW50IG9mIGRldmVsb3BtZW50LAorICBhbmQgaXMgYSBtdWNoIG1vcmUgcmVsaWFibGUgYmVhc3QuCisgICAgQmVhciBpbiBtaW5kIHRoYXQgdGhlIEFnZW50WCBhbmQgcHJveHkgU05NUCBpbXBsZW1lbnRhdGlvbnMgYXJlCisgIHJlbGF0aXZlbHkgbmV3IGNvZGUsIHNvIGhhdmUgbm90IHJlY2VpdmVkIHRoZSBzYW1lIGxldmVsIG9mIGFjdGl2ZQorICBzZXJ2aWNlIHRoYXQgdGhlIGNvcmUgYWdlbnQgaGFzLiAgQnV0IHdpdGggdGhhdCBjYXZlYXQsIGVpdGhlciBvZgorICB0aGVzZSBvcHRpb25zIHNob3VsZCBiZSBzdWl0YWJsZSBmb3IgbW9zdCB1c2UuCisKKyAgICBUaGlzIGRlY2lzaW9uIHdpbGwgcHJvYmFibHkgYmUgZGljdGF0ZWQgYnkgZXh0ZXJuYWwgY29uc2lkZXJhdGlvbnMKKyAgKGkuZS4gdGhlIG90aGVyIGFnZW50cyB5b3UgbmVlZCB0byBjb21iaW5lIHdpdGgpLiAgSWRlYWxseSwgeW91CisgIHNob3VsZCBiZSBsb29raW5nIHRvd2FyZHMgQWdlbnRYLCBidXQgdGhpcyBpcyBub3QgYWx3YXlzIHBvc3NpYmxlLgorCisgIER5bmFtaWNhbGx5IGxvYWRlZCBtb2R1bGVzIHNlcnZlIGEgc29tZXdoYXQgZGlmZmVyZW50IHB1cnBvc2UsCisgIGFuZCBhcmUgcHVyZWx5IGNvbmNlcm5lZCB3aXRoIGhvdyB0aGUgaW5kaXZpZHVhbCBNSUIgaW1wbGVtZW50YXRpb24KKyAgbW9kdWxlcyBhcmUgbG9jYXRlZC4gIFRoZXNlIGNhbiBiZSBjb21iaW5lZCB3aXRoIGVpdGhlciBhICJwdXJlIFNOTVAiCisgIG1vZGVsLCBhbiBBZ2VudFggc3ViYWdlbnQgb3IgYSBwcm94aWVkIFNOTVAgYWdlbnQuICBUaGV5IHdpbGwgaW52b2x2ZQorICBhIHNsaWdodGx5IGdyZWF0ZXIgbG9hZCBvbiBhZ2VudCBzdGFydC11cCAocGx1cyBhbiBleHRyYSBsZXZlbCBvZgorICBjb21wbGV4aXR5IGlmIHRoaW5ncyBnbyB3cm9uZykgLSBiYWxhbmNlZCBhZ2FpbnN0IHRoZSBhYmlsaXR5IHRvCisgIGF2b2lkIHJlLWNvbXBpbGluZyBhbmQgcmUtbGlua2luZyBhIHdvcmtpbmcgYmluYXJ5LgorCisgICAgTm90ZSB0aGF0IGFzIGZhciBhcyBpbmRpdmlkdWFsIE1JQiBtb2R1bGVzIGFyZSBjb25jZXJuZWQsIHRoZQorICBwcm90b2NvbCB1c2VkIHRvIHRyYW5zcG9ydCB0aGUgcmVxdWVzdCBpcyBtb3JlIG9yIGxlc3MgaXJyZWxldmFudC4KKyAgVGhlIHNhbWUgaW5mb3JtYXRpb24gaXMgYmVpbmcgcmVxdWVzdGVkIChvciBzZXQpIGVhY2ggdGltZSwgc28KKyAgYSBNSUIgbW9kdWxlIG91Z2h0IHRvIGJlIHByb3RvY29sLWluZGVwZW5kZW50LiAgVGhpcyB3YXMgb25lIG9mCisgIHRoZSBkZXNpZ24gYWltcyBvZiB0aGUgQWdlbnRYIHN1cHBvcnQsIGFuZCB0aGUgZXhhY3Qgc2FtZSBtb2R1bGUKKyAgY29kZSBjYW4gYmUgaW5jbHVkZWQgYXMgcGFydCBvZiBhIHB1cmUtU05NUCBtYXN0ZXIgYWdlbnQsIG9yIGFuCisgIEFnZW50WCBzdWJhZ2VudCwgZWl0aGVyIGNvbXBpbGVkIGluIG9yIGR5bmFtaWNhbGx5IGxvYWRlZCB3aXRoIG5vCisgIG1vZGlmaWNhdGlvbnMgbmVlZGVkIHRvIHRoZSBNSUIgbW9kdWxlIGNvZGUgaXRzZWxmLgorCisKKworPGEgbmFtZT0iQ2FuX0lfdXNlX0FnZW50WF93aGVuX3J1bm5pbmdfdW5kZXJfV2luZG93c18iPgorQ2FuIEkgdXNlIEFnZW50WCB3aGVuIHJ1bm5pbmcgdW5kZXIgV2luZG93cz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBZZXMsIGJ1dCB0aGVyZSBhcmUgYSBjb3VwbGUgb2YgdGhpbmdzIHRvIGJlIGF3YXJlIG9mLgorCisgIEZpcnN0bHksIGJ5IGRlZmF1bHQgdGhlIEFnZW50WCBtYXN0ZXIgbGlzdGVucyBvbiB0aGUgVW5peCBkb21haW4KKyAgc29ja2V0ICcvdmFyL2FnZW50eC9tYXN0ZXInLCB3aGljaCBkb2Vzbid0IHdvcmsgdW5kZXIgV2luZG93cy4KKyAgWW91J2xsIG5lZWQgdG8gdGVsbCBpdCB0byBsaXN0ZW4gb24gYSBUQ1AgcG9ydCwgZWl0aGVyIGJ5IHVzaW5nCisgIHRoZSBjb21tYW5kLWxpbmUgb3B0aW9uICIteCBsb2NhbGhvc3Q6NzA1IiwgIG9yIGJ5IGFkZGluZyB0aGUKKyAgZGlyZWN0aXZlICJhZ2VudHhBZGRyZXNzIGxvY2FsaG9zdDo3MDUiIHRvIHRoZSBzbm1wZC5jb25mIGZpbGUuCisKKyAgU2Vjb25kbHksIGJlIGF3YXJlIHRoYXQgdGhlIHNlY3VyaXR5IG9mIEFnZW50WCBjb25uZWN0aXZpdHkgaXMgbm90CisgIHBhcnRpY3VsYXJseSBzdHJvbmcuICBUaGUgZXhhbXBsZXMgZ2l2ZW4gaGVyZSB3b3VsZCBhbGxvdyBhbnkgcHJvY2VzcworICBydW5uaW5nIG9uIHRoZSBsb2NhbCBtYWNoaW5lIHRvIHJlZ2lzdGVyIGFzIGFuIEFnZW50WCBzdWJhZ2VudC4gIFRoZQorICBtb3JlIG9idmlvdXMgc2V0dGluZ3MgIi14IDcwNSIgb3IgImFnZW50eEFkZHJlc3MgNzA1IiB3b3VsZCBhbGxvdworICBhIHN5c3RlbSAqYW55d2hlcmUqIG9uIHRoZSBuZXR3b3JrIChvciBldmVuIGZyb20gcmVtb3RlIG5ldHdvcmtzKSB0bworICByZWdpc3RlciBhcyBhbiBBZ2VudFggc3ViYWdlbnQuICBUaGlzIGNvdWxkIHBvdGVudGlhbGx5IGJlIHVzZWQgdG8KKyAgaGlqYWNrIHRoZSBhZ2VudCwgb3IgcHJvdmlkZSBmYWxzZSBpbmZvcm1hdGlvbi4KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9ydW5fQWdlbnRYX3dpdGhfYV9kaWZmZXJlbnRfc29ja2V0X2FkZHJlc3NfIj4KK0hvdyBjYW4gSSBydW4gQWdlbnRYIHdpdGggYSBkaWZmZXJlbnQgc29ja2V0IGFkZHJlc3M/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlcmUgYXJlIHR3byBzaWRlcyB0byBhbiBBZ2VudFggY29ubmVjdGlvbiwgYW5kIHRoZXkgbmVlZCB0bworICBhZ3JlZSBhYm91dCB3aGljaCBzb2NrZXQgYWRkcmVzcyB0byB1c2UuICBTbyBpZiB5b3Ugd2FudCB0byB1c2UKKyAgYSBkaWZmZXJlbnQgc29ja2V0LCB5b3UgbmVlZCB0byBjb25maWd1cmUgYm90aCBzaWRlcyBhY2NvcmRpbmdseS4KKworICBGb3IgdGhlIE5ldC1TTk1QIG1hc3RlciBhZ2VudCwgdGhpcyBpcyBkb25lIHVzaW5nIHRoZSBjb21tYW5kLWxpbmUKKyAgb3B0aW9uICcteCcuICBUaGUgY29tbWFuZAorCQkic25tcGQgLXggbG9jYWxob3N0OjcwNSAuLi4uIgorICB3b3VsZCBzdGFydCB0aGUgYWdlbnQgbGlzdGVuaW5nIG9uIHRoZSBUQ1AgcG9ydCA3MDUgZm9yIGNvbm5lY3Rpb25zCisgIGZyb20gdGhlIGxvY2FsIHN5c3RlbS4KKworICBUaGUgbWFpbiBOZXQtU05NUCBhZ2VudCBjYW4gYWxzbyBiZSBydW4gaW4gYSAic3ViYWdlbnQiIG1vZGUsIGFuZAorICB0aGlzIHVzZXMgdGhlIHNhbWUgY29tbWFuZC1saW5lIG9wdGlvbiB0byBzcGVjaWZ5IGEgZGlmZmVyZW50CisgIEFnZW50WCBzb2NrZXQuICBTbworCQkic25tcGQgLVggLXggbG9jYWxob3N0OjcwNSAuLi4uIgorICB3b3VsZCBzdGFydCBpdCBhcyBhIHN1YmFnZW50LCBhbmQgY29ubmVjdCB0byB0aGUgbWFzdGVyIGFnZW50CisgIGxpc3RlbmluZyBvbiBUQ1AgcG9ydCA3MDUgb24gdGhlIHNhbWUgc3lzdGVtLgorCisgIEEgc3ViYWdlbnQgcnVubmluZyBlbWJlZGRlZCB3aXRoaW4gc29tZSBvdGhlciBhcHBsaWNhdGlvbiB3aWxsCisgIHR5cGljYWxseSBub3QgdW5kZXJzdGFuZCB0aGUgc2FtZSBjb21tYW5kLWxpbmUgb3B0aW9ucy4gIFRoaXMKKyAgd2lsbCBuZWVkIHRvIHNldCB0aGUgc2FtZSBjb25maWd1cmF0aW9uIHByb2dyYW1tYXRpY2FsbHkuCisgIEZvciBleGFtcGxlLCB0aGUgZXhhbXBsZSBzdWJhZ2VudCBkcml2aW5nIGNvZGUgZnJvbSB0aGUgTmV0LVNOTVAKKyAgInN1YmFnZW50IHByb2dyYW0iIHR1dG9yaWFsIChvbiB0aGUgcHJvamVjdCB3ZWIgcGFnZXMpIGNvdWxkCisgIGJlIG1hZGUgdG8gY29ubmVjdCB0byB0aGUgc2FtZSBUQ1AgcG9ydCBieSBhZGRpbmcgdGhlIGxpbmUKKyAgICAgbmV0c25tcF9kc19zZXRfc3RyaW5nKE5FVFNOTVBfRFNfQVBQTElDQVRJT05fSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBORVRTTk1QX0RTX0FHRU5UX1hfU09DS0VULCAibG9jYWxob3N0OjcwNSIpOworICBiZWZvcmUgdGhlICdpbml0X2FnZW50JyBjYWxsLgorCisgIEhvd2V2ZXIsIHNlZSB0aGUgbWVudGlvbiBvZiBBZ2VudFggc2VjdXJpdHkgKG9yIHRoZSBsYWNrIG9mIGl0ISkKKyAgaW4gdGhlIHByZXZpb3VzIGVudHJ5LgorCisKKworPGEgbmFtZT0iSG93X2Nhbl9JX2NvbWJpbmVfdHdvX2NvcGllc19vZl90aGVfX21pYl9fX3RyZWVfZnJvbV9zZXBhcmF0ZV9zdWJhZ2VudHNfIj4KK0hvdyBjYW4gSSBjb21iaW5lIHR3byBjb3BpZXMgb2YgdGhlICdtaWIyJyB0cmVlIGZyb20gc2VwYXJhdGUgc3ViYWdlbnRzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBXaXRoIHRoZSA0LnggbGluZSBhZ2VudCwgeW91IGNhbid0LiAgU29ycnkgYWJvdXQgdGhhdC4KKworICBXaXRoIHRoZSA1LjAgYWdlbnQsIHRoaXMgaXMgcG9zc2libGUgYnkgdXNpbmcgdGhlIFNOTVB2MyBjb250ZXh0IHN0cmluZworICB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHBhcmFsbGVsIE1JQiB0cmVlcy4gIFRoaXMgY2FuIGJlIHNldCB1cCBmb3IgYW4KKyAgaW5kaXZpZHVhbCBNSUIgaW1wbGVtZW50YXRpb24gbW9kdWxlIHdoZW4gaXQgcmVnaXN0ZXJzIGl0c2VsZiB3aXRoIHRoZQorICBtYWluIGFnZW50IGZyYW1ld29yayAoZWl0aGVyIGRpcmVjdGx5LCBvciB2aWEgQWdlbnRYKS4gIEl0IGNhbiBhbHNvCisgIGJlIHNldCB1cCBmb3IgYSBwcm94aWVkIHN1YmFnZW50IGFzIHBhcnQgb2YgdGhlIHByb3h5IGNvbmZpZ3VyYXRpb24KKyAgZW50cnkgKHNlZSAnc25tcGQuY29uZig1KScpLgorICAgIFRoaXMgZmFjaWxpdHkgaXMgbm90IGN1cnJlbnRseSBhdmFpbGFibGUgZm9yIFNOTVB2MSBvciBTTk1QdjJjCisgIHJlcXVlc3RzIChhbHRob3VnaCBpdCBvdWdodCB0byBiZSBwb3NzaWJsZSB0byB1c2UgdGhlIGNvbW11bml0eQorICBzdHJpbmcgaW4gYSBzaW1pbGFyIHdheSkuCisKKyAgICBBbm90aGVyIHdheSB0byBoYW5kbGUgdGhpcyB3b3VsZCBiZSB0byB0d2VhayBvbmUgb2YgdGhlIHN1YmFnZW50cyB0bworICB1c2UgYSBkaWZmZXJlbnQgc2V0IG9mIChub24tc3RhbmRhcmQpIE9JRCBhc3NpZ25tZW50cyAtIHBlcmhhcHMgYnkKKyAgcmVsb2NhdGluZyB0aGUgd2hvbGUgb2YgdGhlIHN1YnRyZWUgdG8gYW5vdGhlciAocHJpdmF0ZSkgT0lELiAgVGhpcworICBpcyBub3QgaWRlYWwsIGJ1dCBzaG91bGQgd29yayB3aXRoIGFsbCBjb25maWd1cmF0aW9ucy4KKworCisKKzxhIG5hbWU9IldoYXRfdHJhcHNfYXJlX3NlbnRfYnlfdGhlX2FnZW50XyI+CitXaGF0IHRyYXBzIGFyZSBzZW50IGJ5IHRoZSBhZ2VudD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhlIGFnZW50IHNlbmRzIGEgJ2NvbGRTdGFydCgwKScgdHJhcCB3aGVuIGl0IGZpcnN0IHN0YXJ0cyB1cCwgYW5kIGFuCisgIGVudGVycHJpc2Utc3BlY2lmaWMgdHJhcCAnbnNOb3RpZnlTaHV0ZG93bicgKG9yICd1Y2RTaHV0ZG93bicpIHdoZW4gaXQKKyAgc3RvcHMuICBJdCBjYW4gYWxzbyBiZSBjb25maWd1cmVkIHRvIHNlbmQgYW4gJ2F1dGhlbnRpY2F0aW9uRmFpbHVyZSg0KScKKyAgdHJhcCB3aGVuIGl0IHJlY2VpdmVzIGFuIFNOTVB2MSByZXF1ZXN0IHVzaW5nIGFuIHVua25vd24gY29tbXVuaXR5IG5hbWUuCisgIFRoZSBOZXQtU05NUCBhZ2VudCBnZW5lcmF0ZXMgYW4gZW50ZXJwcmlzZS1zcGVjaWZpYyB0cmFwICduc05vdGlmeVJlc3RhcnQnCisgIChyYXRoZXIgdGhhbiB0aGUgc3RhbmRhcmQgJ2NvbGRTdGFydCgwKScgb3IgJ3dhcm1TdGFydCgxKScgdHJhcHMpIG9uCisgIHJlY2VpdmluZyBhIEhVUCBzaWduYWwgLSB0eXBpY2FsbHkgYWZ0ZXIgYmVpbmcgcmUtY29uZmlndXJlZC4KKworICAgIFRoZSBhZ2VudCBkb2VzIG5vdCBzZW5kICdsaW5rVXAnIG9yICdsaW5rRG93bicgdHJhcHMgYnkgZGVmYXVsdC4gIFRoZQorICBOZXQtU05NUCBhZ2VudCBjYW4gYmUgY29uZmlndXJlZCB0byBkbyB0aGlzIHVzaW5nIHRoZSAnbW9uaXRvcicgY29uZmlnCisgIGRpcmVjdGl2ZS4gIFNlZSB0aGUgJ3NubXBkLmNvbmYoNSknIG1hbiBwYWdlICh1bmRlciBESVNNQU4tRVZFTlQtTUlCKQorICBmb3IgZGV0YWlscyAoaW5jbHVkaW5nIHRoZSBuZWVkIGZvciBhbiAnYWdlbnRTZWNOYW1lJyBzZXR0aW5nKS4KKworICAgIFNpbWlsYXJseSwgaXQgZG9lcyBub3QgZ2VuZXJhdGUgdHJhcHMgYnkgZGVmYXVsdCB3aGVuIG9uZSBvZiB0aGUKKyAgbW9uaXRvcmVkIGNoYXJhY3RlcmlzdGljcyAoZGlzayB1c2FnZSwgcnVubmluZyBwcm9jZXNzZXMsIGV0YykgZW50ZXJzIG9yCisgIGxlYXZlcyBhbiBlcnJvciBzdGF0ZS4gIFRoaXMgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcgdGhlICdkZWZhdWx0TW9uaXRvcnMnCisgIGNvbmZpZyBkaXJlY3RpdmUgKGFsc28gZG9jdW1lbnRlZCB1bmRlciBESVNNQU4tRVZFTlQtTUlCKS4gIE5vdGUgdGhhdAorICB0aGVzZSBmYWNpbGl0aWVzIGFyZSBvbmx5IGF2YWlsYWJsZSB3aXRoIHRoZSB2NSBOZXQtU05NUCBhZ2VudCwgYW5kIGFyZQorICBub3Qgc3VwcG9ydGVkIGJ5IHRoZSB2NCBVQ0QgYWdlbnQuCisKKworCis8YSBuYW1lPSJXaGVyZV9hcmVfdGhlc2VfdHJhcHNfc2VudF90b18iPgorV2hlcmUgYXJlIHRoZXNlIHRyYXBzIHNlbnQgdG8/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgV2l0aCBhbGwgdGhlc2UgYWxlcnRzLCB0aGUgYWdlbnQgYWxzbyBuZWVkcyB0byBiZSBjb25maWd1cmVkIHdpdGgKKyAgKG9uZSBvciBtb3JlKSBkZXN0aW5hdGlvbnMgdG8gc2VuZCB0aGVtIHRvLCBzcGVjaWZ5aW5nIHRoZSB0eXBlIG9mCisgIG5vdGlmaWNhdGlvbiAodjEgb3IgdjIgdHJhcCwgb3IgdjIgaW5mb3JtKSBhbmQgdGhlIGNvbW11bml0eSBuYW1lIHRvCisgIHVzZS4gIFRoaXMgdXNlcyB0aGUgc25tcGQuY29uZiBkaXJlY3RpdmVzICd0cmFwc2luaycsICd0cmFwMnNpbmsnIGFuZAorICAnaW5mb3Jtc2luaycgZm9yIHRoZSBkZXN0aW5hdGlvbiB0eXBlLCBhbmQgJ3RyYXBjb21tdW5pdHknIGZvciB0aGUKKyAgY29tbXVuaXR5IG5hbWUuICBTTk1QdjMgZGVzdGluYXRpb25zIGNhbiBiZSBjb25maWd1cmVkIHVzaW5nIHRoZSBkaXJlY3RpdmUKKyAgJ3RyYXBzZXNzJy4gICBTZWUgdGhlICdzbm1wZC5jb25mKDUpJyBtYW4gcGFnZSBmb3IgZGV0YWlscy4KKworICAgIE5vdGUgdGhhdCB0aGVzZSBkaXJlY3RpdmVzIGNvbnRyb2wgdGhlIHR5cGUgb2Ygbm90aWZpY2F0aW9uIHRoYXQgaXMKKyAgZ2VuZXJhdGVkLiAgVGhpcyBpcyBjb21wbGV0ZWx5IHNlcGFyYXRlIGZyb20gdGhlIHN0eWxlIG9mIEFQSSB1c2VkIHRvCisgIHJlcXVlc3QgdGhhdCB0aGUgbm90aWZpY2F0aW9uIHNob3VsZCBiZSBzZW50LiAgSWYgYSBtb2R1bGUgaW52b2tlcyB0aGUKKyAgdjEtc3R5bGUgQVBJICdzZW5kX2Vhc3lfdHJhcCcsIHRoaXMgd2lsbCBzdGlsbCBzZW5kIFNOTVB2MiBub3RpZmljYXRpb25zCisgIHRvIGRlc3RpbmF0aW9ucyBjb25maWd1cmVkIHVzaW5nICd0cmFwMnNpbmsnIG9yICdpbmZvcm1zaW5rJyAoYW5kIHZpY2UKKyAgdmVyc2EpLgorCisgICAgQSBjb25maWd1cmF0aW9uIGJsb2NrIHN1Y2ggYXMKKworICAgICAgICB0cmFwc2luayAgIGxvY2FsaG9zdAorICAgICAgICB0cmFwMnNpbmsgIGxvY2FsaG9zdAorICAgICAgICBpbmZvcm1zaW5rIGxvY2FsaG9zdAorCisgIHdpbGwgcmVzdWx0IGluICp0aHJlZSogbm90aWZpY2F0aW9ucyBiZWluZyBzZW50IGZvciBlYWNoIGNhbGwgdG8KKyAgJ3NlbmRfZWFzeV90cmFwJyAob3IgJ3NlbmRfdjJ0cmFwJykuICBTZWUgJ3NubXBfdHJhcF9hcGkoMyknIGZvciBkZXRhaWxzLgorCisgICAgTm90ZSB0aGF0IGFsbCBub3RpZmljYXRpb25zIHdpbGwgYmUgc2VudCB0byBhbGwgZGVzdGluYXRpb25zLiAgVGhlCisgIGFnZW50IGRvZXMgbm90IChjdXJyZW50bHkpIHN1cHBvcnQgbm90aWZpY2F0aW9uIGZpbHRlcmluZy4KKyAKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfc2VuZF9hX3BhcnRpY3VsYXJfdHJhcF90b19zZWxlY3RlZF9kZXN0aW5hdGlvbnNfIj4KK0hvdyBjYW4gSSBzZW5kIGEgcGFydGljdWxhciB0cmFwIHRvIHNlbGVjdGVkIGRlc3RpbmF0aW9ucz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFdpdGggdGhlIHY0IFVDRCBhZ2VudCwgdGhpcyBpc24ndCBwb3NzaWJsZSAob3IgYXQgbGVhc3Qgbm90CisgIGVhc2lseSkuICBXaGVuIHlvdSByZXF1ZXN0IHRoZSBhZ2VudCB0byBnZW5lcmF0ZSBhIHRyYXAgKHVzaW5nCisgIGVpdGhlciAnc2VuZF92MnRyYXAnIG9yICdzZW5kX2Vhc3lfdHJhcCcpLCB0aGlzIHdpbGwgYmUgc2VudAorICB0byAqYWxsKiB0aGUga25vd24gZGVzdGluYXRpb25zLgorCisgICAgVGhlIHY1IE5ldC1TTk1QIGFnZW50IGludHJvZHVjZWQgcHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgdGhlCisgIHNubXBOb3RpZnlGaWx0ZXJUYWJsZSB3aGljaCBpcyBkZXNpZ25lZCB0byBhbGxvdyB0aGlzIHNvcnQgb2YKKyAgc2VsZWN0aXZlIHRyYXAgZGlyZWN0aW9uLCB0aG91Z2ggdGhpcyBpcyBub3QgY3VycmVudGx5IGFjdGl2ZS4KKyAgKFRoZSB0YWJsZXMgYXJlIHByZXNlbnQsIGJ1dCB0aGUgaW5mb3JtYXRpb24gaXMgbm90IGNvbnN1bHRlZCkKKyAgRG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIHRoaXMgZmFjaWxpdHkgd2lsbCBhcHBlYXIgb25jZSB0aGUKKyAgZnVuY3Rpb25hbGl0eSBpcyB3b3JraW5nIHByb3Blcmx5LgorCisKKworPGEgbmFtZT0iV2h5X2RvZXNfY2FsbGluZ19fc2VuZF92X3RyYXBfX2dlbmVyYXRlX2FuX1NOTVB2X190cmFwX19vcl92aWNlX3ZlcnNhX18iPgorV2h5IGRvZXMgY2FsbGluZyAnc2VuZF92MnRyYXAnIGdlbmVyYXRlIGFuIFNOTVB2MSB0cmFwIChvciB2aWNlIHZlcnNhKT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSB0d28gdmVyc2lvbnMgb2YgdGhlIHRyYXAgQVBJIGNhbGxzIGFyZSBjb25jZXJuZWQgd2l0aCBob3cKKyAgdGhlIHRyYXAgaXMgcmVwcmVzZW50ZWQgd2hlbiBpdCBpcyBwYXNzZWQgKmluKiB0byB0aGUgQVBJLCBub3QKKyAgdGhlIHZlcnNpb24gb2YgdGhlIHRyYXAgUERVIHRoYXQgd2lsbCBhY3R1YWxseSBiZSBnZW5lcmF0ZWQgYnkKKyAgdGhlIGFnZW50LiAgVGhhdCBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBjb25maWd1cmF0aW9uIHRva2VuIHVzZWQKKyAgdG8gc2V0IHVwIHRoZSB0cmFwIGRlc3RpbmF0aW9uLgorCisgICAgUmVtZW1iZXIgdGhhdCBpbiBnZW5lcmFsLCBhbGwgdHJhcHMgYXJlIHNlbnQgdG8gYWxsIGRlc3RpbmF0aW9ucy4KKyAgVGhpcyBtZWFucyB0aGF0IGEgdHJhcCBzcGVjaWZpZWQgdXNpbmcgdGhlIFNOTVB2MSB0cmFwIHN5bnRheAorICBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gdGhlIFNOTVB2MiBmb3JtYXQgYmVmb3JlIGl0IGNhbiBiZSBzZW50CisgIHRvIGFuIFNOTVB2MiAob3IgU05NUHYzKSBkZXN0aW5hdGlvbi4gIFNpbWlsYXJseSwgYSB0cmFwIHNwZWNpZmllZAorICB1c2luZyB0aGUgU05NUHYyIHN5bnRheCBuZWVkcyB0byBiZSBjb252ZXJ0ZWQgdG8gdGhlIFNOTVB2MSBmb3JtYXQKKyAgYmVmb3JlIGl0IGNhbiBiZSBzZW50IHRvIGFuIFNOTVB2MSBzaW5rLgorCisgICAgRXNzZW50aWFsbHksIHRoZSBBUEkgY2FsbCB0byB1c2UgZGVwZW5kcyBvbiB3aGF0IHlvdSBhc2tpbmcgZm9yLAorICB3aGljaCBpcyBub3QgbmVjZXNzYXJpbHkgd2hhdCB0aGUgcmVjaXBpZW50cyB3aWxsIGFjdHVhbGx5IGdldCEKKyAgU2VlICdzbm1wX3RyYXBfYXBpKDMpJyBmb3IgYSBmdWxsZXIgZXhwbGFuYXRpb24uCisKKworCis8YSBuYW1lPSJXaGVuX0lfcnVuX3RoZV9hZ2VudF9pdF9ydW5zX2FuZF90aGVuX3F1aXRzX3dpdGhvdXRfc3RheWluZ19hcm91bmRfX1doeV8iPgorV2hlbiBJIHJ1biB0aGUgYWdlbnQgaXQgcnVucyBhbmQgdGhlbiBxdWl0cyB3aXRob3V0IHN0YXlpbmcgYXJvdW5kLiBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEZpcnN0bHksIGFyZSB5b3UgY2VydGFpbiB0aGF0IHRoaXMgaXMgd2hhdCBpcyBoYXBwZW5pbmc/CisKKyAgVGhlIG5vcm1hbCBvcGVyYXRpb24gb2YgdGhlIGFnZW50IGlzIHRvICdmb3JrJyBpdHNlbGYgaW50byB0aGUKKyAgYmFja2dyb3VuZCwgZGV0YWNoaW5nIGl0c2VsZiBzbyB0aGF0IGl0IHdpbGwgY29udGludWUgcnVubmluZyBldmVuCisgIHdoZW4geW91IGxvZyBvdXQsIGFuZCBmcmVlaW5nIHRoZSBjb21tYW5kIGxpbmUgZm9yIHN1YnNlcXVlbnQgdXNlLgorICBUaGlzIGxvb2tzIGF0IGZpcnN0IHNpZ2h0IGFzIGlmIHRoZSBhZ2VudCBoYXMgZGllZCwgYnV0IHVzaW5nICdwcycKKyAgdG8gc2hvdyBhbGwgcHJvY2Vzc2VzIHNob3VsZCByZXZlYWwgdGhhdCB0aGUgYWdlbnQgaXMgc3RpbGwgcnVubmluZy4KKworICBUbyBwcmV2ZW50IHRoaXMgYmVoYXZpb3VyIChzdWNoIGFzIHdoZW4gYXR0ZW1wdGluZyB0byBkZWJ1ZyB0aGUKKyAgYWdlbnQpLCB5b3UgY2FuIHN0YXJ0IGl0IHdpdGggdGhlICctZicgZmxhZy4gIFRoaXMgc3VwcHJlc3NlcyB0aGUKKyAgZm9yaywgYW5kIHRoZSBhZ2VudCB3aWxsIHJ1biBhcyBhICdub3JtYWwnIGNvbW1hbmQuICBJdCdzIGFsc28gb2Z0ZW4KKyAgdXNlZnVsIHRvIHVzZSB0aGUgJy1MJyAob3IgJy1MZScpIGZsYWcsIHRvIGxvZyBtZXNzYWdlcyB0byBzdGRvdXQuCisKKyAgT24gdGhlIG90aGVyIGhhbmQsIGlmICdwcycgc2hvd3MgdGhhdCB0aGUgYWdlbnQgaXMgbm90IHJ1bm5pbmcsIHRoZW4KKyAgdGhpcyBpcyBhbiBlcnJvciwgYW5kIHByb2JhYmx5IHNob3cgdGhhdCBzb21ldGhpbmcgd2VudCB3cm9uZyBpbgorICBzdGFydGluZyB0aGUgYWdlbnQgdXAuICBDaGVjayB0aGUgYWdlbnQgbG9nIGZpbGUgZm9yIGFueSBlcnJvciBtZXNzYWdlcywKKyAgb3IgcnVuIGl0IHdpdGggJy1mIC1MJyBhbmQgc2VlIHdoYXQgaXQgcmVwb3J0cy4KKworICBPbmUga25vd24gZXhhbXBsZSBvZiB0aGlzIGlzIHRoZSAndWNkLXNubXAnIFJQTSBkaXN0cmlidXRlZCBieSBSZWRIYXQuCisgIFRoaXMgYWdlbnQgY3Jhc2hlcyBpZiB0aGVyZSBpcyBhICdkaXNrJyBjb25maWd1cmF0aW9uIGVudHJ5IGluIHRoZQorICBzbm1wZC5jb25mIGZpbGUuICBJdCBpcyBub3QgY3VycmVudGx5IGtub3duIHdoYXQgY2F1c2VzIHRoaXMsIGFzIHRoaXMKKyAgc2V0dGluZyB3b3JrcyBjb3JyZWN0bHkgaWYgdGhlIGFnZW50IGlzIGNvbXBpbGVkIGZyb20gc291cmNlLgorCisKKworPGEgbmFtZT0iQWZ0ZXJfYV93aGlsZV90aGVfYWdlbnRfc3RvcHNfcmVzcG9uZGluZ19fYW5kX3N0YXJ0c19lYXRpbmdfQ1BVX3RpbWVfX19XaHlfIj4KK0FmdGVyIGEgd2hpbGUgdGhlIGFnZW50IHN0b3BzIHJlc3BvbmRpbmcsIGFuZCBzdGFydHMgZWF0aW5nIENQVSB0aW1lLiAgV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGlzIG1vc3QgY29tbW9ubHkgc2VlbiB3aGVuIHBlcmZvcm1pbmcgYW4gInNubXB3YWxrIiBvbiBhbiBhZ2VudAorICB0aGF0J3MgZWl0aGVyIHVzaW5nIGEgZGVmYXVsdCAidmVuZG9yIHByb3ZpZGVkIiBjb25maWd1cmF0aW9uCisgICh0eXBpY2FsbHkgYWNjZXNzIHRvIHRoZSAnc3lzdGVtJyBncm91cCBvbmx5KSwgb3Igd2hpY2ggaXMgdHJ5aW5nCisgIHRvIHJlc3RyaWN0IGFjY2VzcyBmb3IgaW5kaXZpZHVhbCB1c2VycyBvciBjb21tdW5pdGllcyB0byBhIHN1YnNldAorICBvZiB0aGUgd2hvbGUgT0lEIHRyZWUuCisKKyAgVGhlIGFnZW50IGltcGxlbWVudGF0aW9uIG9mICJHZXROZXh0IiBwcm9jZXNzaW5nIGlzIHJlbGF0aXZlbHkKKyAgaW5lZmZpY2llbnQgd2hlbiBkZWFsaW5nIHdpdGggaW5hY2Nlc3NpYmxlIG9iamVjdHMsIGFuZCBpdCBpcyBxdWl0ZQorICBlYXN5IGZvciB0aGUgY2xpZW50cyB0byB0aW1lLW91dCBhbmQgcmV0cnkgYSByZXF1ZXN0LCB3aGlsZSB0aGUgYWdlbnQKKyAgaXMgc3RpbGwgdHJ5aW5nIHRvIHByb2Nlc3MgdGhlIG9yaWdpbmFsLiAgSWYgdGhpcyBoYXBwZW5zIGNvbnRpbnVhbGx5CisgIChhcyBpcyB0eXBpY2FsbHkgdGhlIGNhc2Ugd2l0aCBhbiBzbm1wd2FsayksIHRoZSBhZ2VudCBjYW4gZ2V0IHN3YW1wZWQKKyAgYnkgdGhpcyBiYWNrbG9nLgorCisgIFRoZSA1LjAueCBsaW5lIGhhcyBub3cgYWRkcmVzc2VkIHRoaXMsIHN0YXJ0aW5nIHdpdGggdGhlIDUuMC43IHJlbGVhc2UuCisgIFRoZSA0LjIueCBsaW5lIHN0aWxsIHN1ZmZlcnMgZnJvbSB0aGlzIHByb2JsZW0sIGFuZCBpdCBpcyB1bmxpa2VseSB0aGF0CisgIHRoaXMgd2lsbCBiZSBmaXhlZC4gIChUaGUgNS4wLjcgYXBwcm9hY2ggcmVsaWVzIG9uIHNvbWUgb2YgdGhlIG5ldworICBmZWF0dXJlcyBpbiB0aGUgNS4wLnggbGluZSwgYW5kIGl0IGhhcyBub3QgcHJvdmVkIHBvc3NpYmxlIHRvIGFwcGx5CisgIHRoaXMgdG8gdGhlIDQuMi54IGNvZGUgYmFzZSkuCisKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfc3RvcF9vdGhlcl9wZW9wbGVfZ2V0dGluZ19hdF9teV9hZ2VudF8iPgorSG93IGNhbiBJIHN0b3Agb3RoZXIgcGVvcGxlIGdldHRpbmcgYXQgbXkgYWdlbnQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEZpcnN0bHksIGFyZSB5b3UgY29uY2VybmVkIHdpdGggcmVhZCBhY2Nlc3Mgb3Igd3JpdGUgYWNjZXNzPworCisgIEFzIGZhciBhcyBjaGFuZ2luZyB0aGluZ3Mgb24gdGhlIGFnZW50IGlzIGNvbmNlcm5lZCwgdGhlcmUgaXMgcmVsYXRpdmVseQorICBsaXR0bGUgdGhhdCBjYW4gYWN0dWFsbHkgYmUgYWx0ZXJlZCAoc2VlIHRoZSBhbnN3ZXIgdG8gIiBJIGNhbm5vdCBzZXQKKyAgYW55IHZhcmlhYmxlcyBpbiB0aGUgTUlCIiBhYm92ZSkuCisKKyAgICBJZiB5b3UgYXJlIHVzaW5nIHRoZSBleGFtcGxlIGNvbmZpZyBmaWxlLCB0aGlzIGlzIHNldCB1cCB0byBhbGxvdworICByZWFkIGFjY2VzcyBmcm9tIHlvdXIgbG9jYWwgbmV0d29yaywgYW5kIHdyaXRlIGFjY2VzcyBvbmx5IGZyb20gdGhlCisgIHN5c3RlbSBpdHNlbGYgKGFjY2Vzc2VkIGFzICdsb2NhbGhvc3QnKSwgYm90aCB1c2luZyB0aGUgY29tbXVuaXR5IG5hbWUKKyAgc3BlY2lmaWVkLiAgWW91IHdpbGwgbmVlZCB0byBzZXQgYXBwcm9wcmlhdGUgdmFsdWVzIGZvciBib3RoIE5FVFdPUksKKyAgYW5kIENPTU1VTklUWSBpbiB0aGlzIGZpbGUgYmVmb3JlIHVzaW5nIGl0LgorICAgIFRoaXMgbWVjaGFuaXNtIGNhbiBhbHNvIGJlIHVzZWQgdG8gY29udHJvbCBhY2Nlc3MgbXVjaCBtb3JlIHByZWNpc2VseS4KKyAgKHNlZSB0aGUgbmV4dCBxdWVzdGlvbnMgZm9yIGRldGFpbHMpCisKKyAgT3RoZXIgb3B0aW9ucyBpbmNsdWRlOgorCS0gQmxvY2tpbmcgYWNjZXNzIHRvIHBvcnQgMTYxIGZyb20gb3V0c2lkZSB5b3VyIG9yZ2FuaXNhdGlvbgorCQkodXNpbmcgZmlsdGVycyBvbiBuZXR3b3JrIHJvdXRlcnMpCisJLSBDb25maWd1cmluZyBUQ1Agd3JhcHBlciBzdXBwb3J0ICgiLS13aXRoLWxpYndyYXAiKQorCQlUaGlzIHVzZXMgdGhlIFRDUCAnbGlid3JhcCcgbGlicmFyeSAoYXZhaWxhYmxlIHNlcGFyYXRlbHkpCisJCXRvIGFsbG93L2RlbnkgYWNjZXNzIHZpYSAvZXRjL2hvc3RzLnthbGxvdyxkZW55fQorCisgIEZvciBzdHJpY3Qgc2VjdXJpdHkgeW91IHNob3VsZCB1c2Ugb25seSBTTk1QdjMsIHdoaWNoIGlzIHRoZSBzZWN1cmUKKyAgZm9ybSBvZiB0aGUgcHJvdG9jb2wuCisKKworCis8YSBuYW1lPSJIb3dfY2FuX0lfbGlzdGVuX29uX2p1c3Rfb25lX3BhcnRpY3VsYXJfaW50ZXJmYWNlXyI+CitIb3cgY2FuIEkgbGlzdGVuIG9uIGp1c3Qgb25lIHBhcnRpY3VsYXIgaW50ZXJmYWNlPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTm9ybWFsbHksIHRoZSBhZ2VudCB3aWxsIGJpbmQgdG8gdGhlIHNwZWNpZmllZCBwb3J0IG9uIGFsbCBpbnRlcmZhY2VzCisgIG9uIHRoZSBzeXN0ZW0sIGFuZCBhY2NlcHQgcmVxdWVzdCByZWNlaXZlZCBmcm9tIGFueSBvZiB0aGVtLiAgV2l0aAorICB2ZXJzaW9uIDQuMiwgdGhlICctcCcgb3B0aW9uIGNhbiBiZSB1c2VkIHRvIGxpc3RlbiBvbiBpbmRpdmlkdWFsCisgIGludGVyZmFjZXMuICBGb3IgZXhhbXBsZSwKKwkKKwkJCXNubXBkIC1wIDE2MUAxMjcuMC4wLjEKKworICB3aWxsIGxpc3RlbiAob24gdGhlIHN0YW5kYXJkIHBvcnQpIG9uIHRoZSBsb29wYmFjayBpbnRlcmZhY2Ugb25seSwgYW5kCisKKwkJCXNubXBkIC1wIDYxNjFAMTAuMC4wLjEKKworICB3aWxsIGxpc3RlbiBvbiBwb3J0IDYxNjEsIG9uIHRoZSAoaW50ZXJuYWwgbmV0d29yaykgaW50ZXJmYWNlIHdpdGggYWRkcmVzcworICAxMC4wLjAuMS4gICBJZiB5b3Ugd2FudCB0byBsaXN0ZW4gb24gbXVsdGlwbGUgaW50ZXJmYWNlcyAoYnV0IG5vdCBhbGwpLAorICB0aGVuIHNpbXBseSByZXBlYXQgdGhpcyBvcHRpb24gZm9yIGVhY2ggb25lOgorCisJCXNubXBkIC1wIDE2MUAxMjcuMC4wLjEgLXAgNjE2MUAxMC4wLjAuMQorCisgIFRoZSB2NSBOZXQtU05NUCBhZ2VudCBoYXMgYSBzaW1pbGFyIGZhY2lsaXR5LCBidXQgZG9lcyBub3QgdXNlIHRoZSAnLXAnCisgIGNvbW1hbmQgbGluZSBvcHRpb24gZmxhZy4gIEluc3RlYWQsIHRoZSBwb3J0cyBhbmQvb3IgaW50ZXJmYWNlcyB0byBsaXN0ZW4KKyAgb24gYXJlIHNpbXBseSBsaXN0ZWQgb24gdGhlIGNvbW1hbmQgbGluZSwgZm9sbG93aW5nIGFueSBvdGhlciBvcHRpb25zLiAgQWxzbywKKyAgdGhlIHN5bnRheCBvZiBwb3J0IGFuZCBpbnRlcmZhY2UgaXMgc2xpZ2h0bHkgZGlmZmVyZW50IChpbnRlcmZhY2U6cG9ydCkuCisgICAgU28gdGhlIHRocmVlIGV4YW1wbGVzIGFib3ZlIHdvdWxkIGJlCisKKwkJCXNubXBkIDEyNy4wLjAuMToxNjEKKwkJCXNubXBkIDEyNy4wLjAuMTo2MTYxCisJCQlzbm1wZCAxMjcuMC4wLjE6MTYxIDEyNy4wLjAuMTo2MTYxCisKKyAgVGhlIEFnZW50WCBwb3J0IG9wdGlvbiAoJy14Jykgd29ya3MgaW4gbXVjaCB0aGUgc2FtZSB3YXksIHVzaW5nIHRoZQorICAiaG9zdDpwb3J0IiBzeW50YXggKGluIGJvdGggNC4yIGFuZCA1LjAgbGluZXMgLSBhbmQgeWVzLCB0aGlzICppcyogYW4KKyAgaW5jb25zaXN0ZW5jeSBpbiA0LjIhKQorCisKKworPGEgbmFtZT0iSG93X2RvX0lfY29uZmlndXJlX2FjY2Vzc19jb250cm9sXyI+CitIb3cgZG8gSSBjb25maWd1cmUgYWNjZXNzIGNvbnRyb2w/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBzaW1wbGVzdCB3YXkgaXMgdG8gdXNlIHRoZSBjb25maWd1cmUgZGlyZWN0aXZlczoKKworCQlyb2NvbW11bml0eSBwdWJsaWMJKGZvciBTTk1QdjEvMmMpCisJCXJ3Y29tbXVuaXR5IHByaXZhdGUKKyAgb3IKKwkJcm91c2VyIHVzZXIxCQkoZm9yIFNOTVB2MykKKwkJcnd1c2VyIHVzZXIyCisKKyAgVGhlc2Ugc3BlY2lmeSB0aGUgY29tbXVuaXR5IG5hbWVzIG9yIHNlY3VyaXR5IG5hbWVzIHRvIGFjY2VwdCBmb3IKKyAgcmVhZC1vbmx5IGFuZCByZWFkLXdyaXRlIGFjY2VzcyB0byB0aGUgd2hvbGUgb2YgdGhlIHN1cHBvcnRlZCBNSUIgdHJlZS4KKyAgKE9idmlvdXNseSB5b3Ugc2hvdWxkIGNoYW5nZSB0aGVzZSBuYW1lcyB0byBtYXRjaCB5b3VyIHJlcXVpcmVtZW50cyAtCisgIHdoaWNoIGlzIGEgcGFydGljdWxhcmx5IGdvb2QgaWRlYSBpbiB0aGUgY2FzZSBvZiAncndjb21tdW5pdHknISkKKworICBOb3RlIHRoYXQgaXQgaXMgKm5vdCogbmVjZXNzYXJ5IChhbmQgbm90IGFkdmlzaWJsZSkgdG8gc3BlY2lmeSB0aGUKKyAgc2FtZSBjb21tdW5pdHkgbmFtZSBmb3IgYm90aCByb2NvbW11bml0eSBhbmQgcndjb21tdW5pdHkgZGlyZWN0aXZlcy4KKyAgVGhlIHJ3Y29tbXVuaXR5IHNldHRpbmcgYXV0b21hdGljYWxseSBpbmNsdWRlcyByb2NvbW11bml0eSBhY2Nlc3MsCisgIGFuZCBoYXZpbmcgYm90aCBsaW5lcyAod2l0aCB0aGUgc2FtZSBjb21tdW5pdHkgbmFtZSkgbWF5IHJlc3VsdCBpbgorICBhcHBhcmVudGx5IGluY29uc2lzdGVudCBiZWhhdmlvdXIuICBPbmx5IHVzZSBib3RoIHNldHRpbmdzIHdoZW4KKyAgc3BlY2lmeWluZyAqZGlmZmVyZW50KiBjb21tdW5pdHkgbmFtZXMuCisgICAgVGhlIHNhbWUgaG9sZHMgdHJ1ZSBmb3Igcm91c2VyIGFuZCByd3VzZXIuCisKKyAgQWxsIGZvdXIgb2YgdGhlc2Ugc2V0dGluZ3MgY2FuIGNhbiBhbHNvIGJlIHJlc3RyaWN0ZWQgdG8gcGFydGljdWxhcgorICBzdWJ0cmVlcywgYW5kL29yIHJlcXVlc3Qgc291cmNlcy4gIFNlZSAnc25tcGQuY29uZig1KScgZm9yIGRldGFpbHMuCisKKyAgVGhlc2UgZGlyZWN0aXZlcyBhcmUgZWZmZWN0aXZlbHkgd3JhcHBlcnMgcm91bmQgdGhlIGNvcmUgYWNjZXNzIGNvbnRyb2wKKyAgbWVjaGFuaXNtLCB3aGljaCB1c2VzIHRoZSBmb3VyIGRpcmVjdGl2ZXMgJ2NvbTJzZWMnLCAnZ3JvdXAnLCAndmlldycKKyAgYW5kICdhY2Nlc3MnIHRvIHByb3ZpZGUgYSBtb3JlIGVmZmljaWVudCBhbmQgZmxleGlibGUgY29udHJvbAorICBvdmVyIHdobyBjYW4gYWNjZXNzIHdoaWNoIHBvcnRpb25zIG9mIHRoZSB0cmVlLgorCisgICAgU2VlIHRoZSBuZXh0IHF1ZXN0aW9uIGZvciB0aGUgZ29yeSBkZXRhaWxzLCBhbmQgdGhlIGVudHJ5IGFmdGVyCisgIHRoYXQgZm9yIHNldHRpbmcgdXAgU05NUHYzIHVzZXJzLgorCisKKworPGEgbmFtZT0iSV9kb25fdF91bmRlcnN0YW5kX3RoZV9uZXdfYWNjZXNzX2NvbnRyb2xfc3R1ZmZfX193aGF0X2RvZXNfaXRfbWVhbl8iPgorSSBkb24ndCB1bmRlcnN0YW5kIHRoZSBuZXcgYWNjZXNzIGNvbnRyb2wgc3R1ZmYgLSB3aGF0IGRvZXMgaXQgbWVhbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgaWRlYSBiZWhpbmQgdGhlIG5ldyBhY2Nlc3MgY29udHJvbCBtb2RlbCBpcyB0byBnaXZlIGEgbW9yZSBmbGV4aWJsZQorICB3YXkgb2Ygc3BlY2lmeWluZyB3aG8gY2FuIHNlZSBhbmQgZG8gd2hhdCB3aXRoaW4gdGhlIE1JQiB0cmVlLgorICBJdCdzIG1vcmUgY29tcGxpY2F0ZWQgdG8gdW5kZXJzdGFuZCB0aGFuIHRoZSBzaW1wbGUgZXhhbXBsZSBhYm92ZSwgYnV0CisgIHRoYXQncyBiZWNhdXNlIGl0IGNhbiBkbyBhIHdob2xlIGxvdCBtb3JlLgorCisgICAgVGhlcmUgYXJlIGZvdXIgY29uZmlndXJhdGlvbiBrZXl3b3JkcyBpbiB0aGUgbmV3IHNjaGVtZToKKwknY29tMnNlYycsICdncm91cCcsICd2aWV3JywgYW5kICdhY2Nlc3MnCisKKyAgV2UnbGwgY29uc2lkZXIgdGhlc2Ugb25lIGF0IGEgdGltZSwgc3RhcnRpbmcgd2l0aCAnYWNjZXNzJy4KKyAgKEJlY2F1c2UgSSBmZWVsIGxpa2Ugc3RhcnRpbmcgd2l0aCB0aGUgbGFzdCBvbmUsIHRoYXQncyB3aHkgLSBPSz8pCisKKworICBUaGUgImFjY2VzcyIga2V5d29yZCBoYXMgdGhlIGpvYiBvZiBzcGVjaWZ5aW5nIHdobyBoYXMgYWNjZXNzIHRvCisgIHdoaWNoIGJpdHMgb2YgdGhlIE1JQiB0cmVlLiAgVGhpcyBoYXMgZWlnaHQgcGFyYW1ldGVycywgc28gY2FuIGxvb2sKKyAgcmF0aGVyIG9mZnB1dHRpbmcuIE1vc3Qgb2YgdGhlc2UgY2FuIGJlIHNhZmVseSBsZWZ0IHdpdGggZGVmYXVsdCB2YWx1ZXMKKyAgaW4gbW9zdCBjYXNlcyAoc28gZG9uJ3QgeW91IHdvcnJ5IHlvdXIgcHJldHR5IGxpdHRsZSBoZWFkIGFib3V0IHRoZW0pLgorICBUaGUgc3ludGF4IGlzCisKKwlhY2Nlc3Mge2dyb3VwfSAiIiBhbnkgbm9hdXRoIGV4YWN0IHtyZWFkLXRyZWV9IHt3cml0ZS10cmVlfSB7bm90aWZ5LXRyZWV9CisKKyAgd2hlcmUgdGhlIGVudHJpZXMgaW4gYnJhY2VzIG5lZWQgdG8gYmUgZGVmaW5lZCBlbHNld2hlcmUgKEknbSBjb21pbmcKKyAgdG8gdGhhdCAtIGJlIHBhdGllbnQhKSwgYW5kIHRoZSByZXN0IGNhbiBiZSBsZWZ0IGFzIHNob3duIGhlcmUuCisKKwlbIElmIHlvdSByZWFsbHkgd2FudCB0byBrbm93LCB0aGUgJ3NlYy5tb2RlbCcgZmllbGQgY2FuIAorCSAgYmUgdXNlZCB0byBoYXZlIGFuIGFjY2VzcyBsaW5lIHRoYXQncyBvbmx5IHJlbGV2YW50IHRvCisJICBwYXJ0aWN1bGFyIHZlcnNpb25zIG9mIFNOTVAgKHN1Y2ggdjEgb3IgdjJjKSByYXRoZXIgdGhhbgorCSAgImFueSIgdmVyc2lvbiwgYW5kIHRoZSAnc2VjLmxldmVsJyBmaWVsZCB0byBlbnN1cmUgdGhhdAorCSAgdGhlIHJlcXVlc3QgbXVzdCBiZSBhdXRoZW50aWNhdGVkIG9yIGVuY3J5cHRlZC4KKwkgICAgVGhlIGNvbnRleHQgYW5kIHByZWZpeCBmaWVsZHMgY2FuIGJlIHVzZWQgdG8gZGlzdGluZ3Vpc2gKKwkgIGJldHdlZW4gcGFyYWxsZWwgdmVyc2lvbnMgb2YgdGhlIHNhbWUgb3ZlcmFsbCBPSUQgdHJlZQorCV0KKworCisgIFRoZSAidmlldyIga2V5d29yZCBpcyB1c2VkIHRvIGRlZmluZSBwYXJ0aWN1bGFyIGJpdHMgb2YgdGhlIE1JQiB0cmVlLAorICBmb3IgdXNlIGluIHRoZSBsYXN0IHRocmVlIGZpZWxkIG9mIHRoZSBhY2Nlc3MgZW50cnkuCisgIFRoaXMgaGFzIHRoZSBzeW50YXgKKworCXZpZXcgIHtuYW1lfSAgaW5jbHVkZWQvZXhjbHVkZWQgIHtzdWJ0cmVlfSAgIHttYXNrfQorCisgIHdoZXJlIHtuYW1lfSBpcyB0aGUgaWRlbnRpZmllciB0byBiZSB1c2VkIGZvciB0aGlzIHZpZXcgKGkuZS4gd2hhdCBzaG91bGQKKyAgYXBwZWFyIGluIHRoZSBhY2Nlc3MgZW50cnkpLCBhbmQge3N1YnRyZWV9IGlzIHRoZSBwb3J0aW9uIG9mIHRoZSBNSUIgdHJlZQorICB0aGF0IHRoaXMgbmFtZSByZWZlcnMgdG8gKGluIGVpdGhlciBudW1lcmljIG9yIG5hbWVkIGZvcm0pLgorICAgIE5vdGUgdGhhdCB0aGUgbmFtZSBvZiB0aGUgdmlldyBkb2VzIG5vdCBoYXZlIHRvIGhhdmUgYW55dGhpbmcgdG8gZG8KKyAgd2l0aCB0aGUgTUlCIHN1Yi1pZGVudGlmaWVyIG5hbWVzIC0gaXQncyBwdXJlbHkgYW4gaWRlbnRpZnlpbmcgdGFnIGZvcgorICB1c2Ugd2l0aGluIHRoZSBjb25maWcgZmlsZSAodGhvdWdoIGNob29zaW5nIGEgbWVhbmluZ2Z1bCBuYW1lIGlzLCBhcworICBhbHdheXMsIGEgdmVyeSBnb29kIGlkZWEpLgorICAKKyAgICBUaGUge21hc2t9IGZpZWxkIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2ggZWxlbWVudHMgb2YgdGhlIE9JRCBzdWJ0cmVlCisgIHNob3VsZCBiZSByZWdhcmRlZCBhcyByZWxldmFudCB3aGVuIGRldGVybWluaW5nIHdoaWNoIHZpZXcgYW4gT0lEIGlzIGluLgorICBOb3JtYWxseSwgdGhlIHdob2xlIG9mIHRoZSBPSUQgc2hvdWxkIGJlIGluY2x1ZGVkLCBhbmQgaW4gdGhpcyBjYXNlIHRoZQorICBtYXNrIGZpZWxkIGNhbiBiZSBvbWl0dGVkLiAgU2VlIHNubXBkLmNvbmYgZm9yIGEgZGVzY3JpcHRpb24gb2YgaG93IHRoaXMKKyAgbWlnaHQgYmUgdXNlZC4KKyAgVGhlIHRoaXJkIGZpZWxkIGNhbiBiZSB1c2VkIHRvIGluY2x1ZGUgb3IgZXhjbHVkZSBwYXJ0aWN1bGFyIHBvcnRpb25zCisgIG9mIHRoZSBNSUIgZnJvbSB0aGUgdmlldywgYW5kIGRpZmZlcmVudCBsaW5lcyBjYW4gdXNlIHRoZSBzYW1lIHZpZXcgbmFtZQorICB0byBidWlsZCB1cCBhIG1vcmUgY29tcGxpY2F0ZWQgdmlldywgaWYgdGhhdCdzIHdoYXQncyBuZWVkZWQuCisKKyAgICBUaGUgdGhyZWUgdmlldyBmaWVsZHMgaW4gdGhlIGFjY2VzcyBsaW5lIGFyZSB1c2VkIHRvIGNvbnRyb2wgd2hpY2gKKyAgcG9ydGlvbnMgb2YgdGhlIE1JQiB0cmVlIGEgcGFydGljdWxhciB7Z3JvdXB9IGNhbiBzZWUgKEdFVCBldCBhbCksCisgIGFsdGVyIChTRVQpLCBvciByZXF1ZXN0IE5PVElGWXMgb24uCisKKworCisgICAgVGhhdCdzIGRlYWx0IHdpdGggdGhlICJ3aGF0IiAtIG5vdyBmb3IgdGhlICJ3aG8iLgorICBUaGlzIGlzIHRoZSByb2xlIG9mIHRoZSAiZ3JvdXAiIGFuZCAiY29tMnNlYyIgZW50cmllcy4KKworICBUaGUgImdyb3VwIiBrZXl3b3JkIGdpdmVzIGdlbmVyYWwgY29udHJvbCwgYnkgbWFwcGluZyBiZXR3ZWVuIGEgInNlY3VyaXR5CisgIG5hbWUiIChmb3IgYSBwYXJ0aWN1bGFyIHByb3RvY29sIHZlcnNpb24pLCBhbmQgdGhlIGludGVybmFsIG5hbWUgdXNlZCBpbiB0aGUKKyAgYWNjZXNzIGxpbmUuICBOb3RlIHRoYXQgdGhlIHRva2VuICJhbnkiIGlzIG5vIGxvbmdlciBhY2NlcHRhYmxlIGZvciB0aGUKKyAgc2VjdXJpdHkgbW9kZWwgLSB0aGUgb3JpZ2luYWwgc3VwcG9ydCBmb3IgdGhpcyB3YXMgZHVlIGR1ZSB0byBhIG1pc3JlYWRpbmcKKyAgb2YgdGhlIFJGQy4gIFlvdSBzaG91bGQgcmVwbGFjZSBhbnkgc3VjaCBsaW5lIHdpdGggc2VwYXJhdGUgdmVyc2lvbnMgZm9yCisgIGVhY2ggb2YgdGhlIGRlc2lyZWQgc2VjdXJpdHkgbW9kZWxzICgndjEnLCAndjJjJyAmICd1c20nKS4KKworICAgIEZvciBTTk1QdjEgYW5kIFNOTVB2MmMsIHRoZSBncm91cCBsaW5lIGlzIGp1c3QgYW4gaW50ZXJtZWRpYXRlIHN0ZXAKKyAgYmV0d2VlbiB0aGUgImFjY2VzcyIgbGluZSBhbmQgdGhlICJjb20yc2VjIiBsaW5lLCB3aGljaCBpcyB0aGUgbGFzdCBiaXQKKyAgb2YgdGhlIGppZ3Nhdy4gIFRoZSAiY29tMnNlYyIgZW50cnkgaXMgdXNlZCB0byBkZXRlcm1pbmUgYSAic2VjdXJpdHkgbmFtZSIKKyAgZnJvbSB0aGUgdHJhZGl0aW9uYWwgY29tbXVuaXR5IHN0cmluZywgdGFraW5nIGludG8gYWNjb3VudCB3aGVyZSB0aGUgcmVxdWVzdAorICBoYXMgY29tZSBmcm9tLiAgVGh1cyB0aGUgc2FtZSBjb21tdW5pdHkgc3RyaW5nIGNhbiBnaXZlIGFjY2VzcyB0byAgZGlmZmVyZW50CisgIHBvcnRpb25zIG9mIHRoZSB0cmVlLCBkZXBlbmRpbmcgb24gd2hlcmUgdGhlIHJlcXVlc3QgaXMgc2VudCBmcm9tLgorCisgICAgIEZvciBleGFtcGxlLCBpbiBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhlIGV4YW1wbGUgY29uZmlnIGZpbGUsIHRoZXJlCisgIHdlcmUgdHdvIGNvbTJzZWMgbGluZXMgd2l0aCB0aGUgY29tbXVuaXR5IHN0cmluZyAicHVibGljIiAtIG9uZSB3YXMgdmFsaWQKKyAgZnJvbSBhbnl3aGVyZSAod2l0aCB0aGUgc2VjdXJpdHkgbmFtZSAicHVibGljIikgYW5kIG9uZSB3YXMgb25seSB2YWxpZAorICBmcm9tIHRoZSBsb2NhbCBuZXR3b3JrICh1c2luZyB0aGUgc2VjdXJpdHkgbmFtZSAibXluZXQiKS4KKyAgICAgVGhlIGdyb3VwIGxpbmVzIGNvbnZlcnRlZCB0aGVzZSBzZWN1cml0eSBuYW1lcyBpbnRvIHRoZSBncm91cHMgInB1YmxpYyIKKyAgYW5kICJteWdyb3VwIiByZXNwZWN0aXZlbHksIGFuZCB0aGUgYWNjZXNzIGxpbmVzIGdhdmUgdGhlc2UgdHdvIGdyb3VwcworICB0aGUgYWJpbGl0eSB0byBHRVQgdmFsdWVzIGluIHRoZSAnc3lzdGVtJyBzdWItdHJlZSAoZnJvbSBhbnl3aGVyZSkgb3IKKyAgdGhlICdtaWItMicgc3ViLXRyZWUgKGZyb20gdGhlIGxvY2FsIG5ldHdvcmspLiAgTmVpdGhlciBvZiB0aGVzZSBjb3VsZAorICBTRVQgYW55IHZhbHVlcyB0aG91Z2gsIChzaW5jZSB0aGUgd3JpdGUtdHJlZSB3YXMgIm5vbmUiIGluIGJvdGggY2FzZXMpLgorICAgIFNvbWVvbmUgb24gdGhlIGxvY2FsIG1hY2hpbmUsIHVzaW5nIHRoZSBjb21tdW5pdHkgc3RyaW5nICJwcml2YXRlIiwKKyAgaGFkIHRoZSBzZWN1cml0eSBuYW1lICJsb2NhbCIgYW5kIHRoZSBncm91cCBuYW1lICJsb2NhbCIsIGFuZCBoZW5jZSBoYWQKKyAgZnVsbCBhY2Nlc3MgKGJvdGggR0VUIGFuZCBTRVQsIGFzIHdlbGwgYXMgTk9USUZZKSB0byB0aGUgd2hvbGUgb2YgdGhlCisgIE1JQiB0cmVlIChvciBhdCBsZWFzdCBldmVyeXRoaW5nIHVuZGVyIC4xLCB3aGljaCBjb3ZlcnMgbW9zdCB0aGluZ3MhKQorCisgICAgIE5vdGUgdGhhdCB0aGUgdGhyZWUgb2NjdXJyZW5jZXMgb2YgInB1YmxpYyIsIGFzIGNvbW11bml0eSBzdHJpbmcsCisgIHNlY3VyaXR5IG5hbWUgYW5kIGdyb3VwIG5hbWUsIHdlcmUgdGhyZWUgdG90YWxseSBzZXBhcmF0ZSB0aGluZ3MuCisgIFlvdSBjYW4ndCB1c2UgYSBjb21tdW5pdHkgc3RyaW5nIGluIGEgc2VjdXJpdHkgbmFtZSBmaWVsZCwgb3IgZWl0aGVyCisgIG9mIHRoZXNlIGFzIGEgZ3JvdXAgbmFtZSAob3IgdmljZSB2ZXJzYSksIHVubGVzcyB5b3Ugc2V0IHVwIHN1aXRhYmxlCisgIGVudHJpZXMgdG8gbWFwIG9uZSBuYW1lIG9udG8gdGhlIG90aGVyLgorCisgICAgV2l0aCBTTk1QdjMsIHRoZSBzZWN1cml0eSBuYW1lIGlzIHBhcnQgb2YgdGhlIGJhc2ljIHByb3RvY29sLCBhbmQgY2FuCisgIGJlIHVzZWQgZGlyZWN0bHkgaW4gYSBncm91cCBkZWZpbml0aW9uLgorCisgIEFuZCBoZXJlIGNvbmNsdWRlcyBvdXIgdG91ciBvZiB0aGUgdmlldy1iYXNlZCBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc20uCisgIFBoZXchCisKKworCis8YSBuYW1lPSJIb3dfZG9fSV9jb25maWd1cmVfU05NUHZfX3VzZXJzXyI+CitIb3cgZG8gSSBjb25maWd1cmUgU05NUHYzIHVzZXJzPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgQ3JlYXRlIGEgZmlsZSAvdmFyL3VjZC1zbm1wL3NubXBkLmNvbmYgZmlsZSwgY29udGFpbmluZyB0aGUgbGluZQorCisJY3JlYXRlVXNlciB7bXlVc2VyfSBNRDUge215UGFzc3dvcmR9IERFUworCisgICh3aGVyZSB7bXlVc2VyfSBhbmQge215UGFzc3dvcmR9IGFyZSB0aGUgYXBwcm9wcmlhdGUgdmFsdWVzLCBfd2l0aG91dF8KKyAgdGhlIGJyYWNlcyEpLiAgVGhlbiBzdGFydCAob3IgcmUtc3RhcnQpIHRoZSBzbm1wZCBhZ2VudC4KKyAgVGhpcyB3aWxsIGNyZWF0ZSB0aGUgbmV3IHVzZXIuICBTZWUgdGhlIGFjY2VzcyBjb250cm9sIGVudHJpZXMgYWJvdmUKKyAgZm9yIGhvdyB0byB1c2UgdGhpcywgYW5kIHRoZSBmaWxlICdSRUFETUUuc25tcHYzJyBmb3IgbW9yZSBkZXRhaWxzLgorCisKKworPGEgbmFtZT0iVGhlX19jcmVhdGVVc2VyX19saW5lX2Rpc2FwcGVhcnNfd2hlbl9JX3N0YXJ0X3RoZV9hZ2VudF9fX1doeV8iPgorVGhlICdjcmVhdGVVc2VyJyBsaW5lIGRpc2FwcGVhcnMgd2hlbiBJIHN0YXJ0IHRoZSBhZ2VudC4gIFdoeT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoYXQncyBkZWxpYmVyYXRlLiAgIFRoZSBhZ2VudCByZW1vdmVzIHRoZSAoaHVtYW4tcmVhZGFibGUpICdjcmVhdGVVc2VyJworICBkaXJlY3RpdmUsIGFuZCByZXBsYWNlcyBpdCB3aXRoIGFuIGVxdWl2YWxlbnQgJ3VzbVVzZXInLiAgVGhpcworICBjb250YWlucyB0aGUgc2FtZSBpbmZvcm1hdGlvbiwgYnV0IGluIGEgZm9ybSB0aGF0J3Mgb25seSBtZWFuaW5nZnVsCisgIGludGVybmFsbHkuICBUaGlzIG1lYW5zIHRoYXQgdGhlIHBhc3N3b3JkIGlzIG5vdCBsb25nZXIgc3RvcmVkIGluCisgIGEgaHVtYW4tcmVhZGFibGUgZm9ybS4gIEFkZGl0aW9uYWxseSwgdGhlIHBhc3N3b3JkIGhhcyBiZWVuIGNvbnZlcnRlZAorICB0byBhIGtleSB0aGF0IGNhbiBvbmx5IGJlIHVzZWQgdG8gYWNjZXNzIHRoZSBsb2NhbCBtYWNoaW5lLiAgSWYgc29tZW9uZQorICBzdG9sZSB0aGUgbmV3IHVzbVVzZXIgbGluZSBvbiB0aGlzIG1hY2hpbmUsIHRoZXkgY291bGQgbm90IHVzZSB0aGF0CisgIGluZm9ybWF0aW9uIHRvIGFjY2VzcyBhbnkgb2YgeW91ciBvdGhlciBhZ2VudHMuCisKKworCis8YSBuYW1lPSJXaGF0X3NfdGhlX2RpZmZlcmVuY2VfYmV0d2Vlbl9fdmFyX3VjZF9zbm1wX2FuZF9fdXNyX2xvY2FsX3NoYXJlX3NubXBfIj4KK1doYXQncyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIC92YXIvdWNkLXNubXAgYW5kIC91c3IvbG9jYWwvc2hhcmUvc25tcD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgTW9zdCAic3RhdGljIiBhZ2VudCBjb25maWd1cmF0aW9uIHNob3VsZCBnbyBpbiB0aGUgdHJhZGl0aW9uYWwgbG9jYXRpb24KKyAgKHR5cGljYWxseSAvdXNyL2xvY2FsL3NoYXJlL3NubXAvc25tcGQuY29uZiBvciAvZXRjL3NubXApLiAgIFRoZQorICAvdmFyL3VjZC1zbm1wIChvciAvdmFyL25ldC1zbm1wKSBsb2NhdGlvbiBpcyB1c2VkIGZvciBpbmZvcm1hdGlvbiBzZXQgZHVyaW5nCisgIHRoZSBydW5uaW5nIG9mIHRoZSBhZ2VudCwgd2hpY2ggbmVlZHMgdG8gYmUgcGVyc2lzdGVudCBiZXR3ZWVuIG9uZSBydW4gb2YKKyAgdGhlIGFnZW50IGFuZCB0aGUgbmV4dC4KKworICAgIFB1dHRpbmcgdGhlICdjcmVhdGVVc2VyJyBsaW5lIGluIHRoaXMgcGVyc2lzdGVudCBmaWxlIGlzIGFuIGV4Y2VwdGlvbiwKKyAgZm9yIHNlY3VyaXR5IHJlYXNvbnMgKHNlZSBhYm92ZSkuICBJbiBnZW5lcmFsIHlvdSBzaG91bGRuJ3QgbmVlZCB0byBwdXQKKyAgYW55dGhpbmcgZWxzZSBoZXJlLgorCisKKworPGEgbmFtZT0iTXlfbmV3X2FnZW50X2lzX2lnbm9yaW5nX3RoZV9vbGRfc25tcGRfY29uZl9maWxlX19XaHlfIj4KK015IG5ldyBhZ2VudCBpcyBpZ25vcmluZyB0aGUgb2xkIHNubXBkLmNvbmYgZmlsZS4gV2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoZSBtb3N0IGxpa2VseSBleHBsYW5hdGlvbiBpcyB0aGF0IHRoZSBuZXcgdmVyc2lvbiBvZiB0aGUgYWdlbnQgaXMKKyAgbG9va2luZyBpbiBhIGRpZmZlcmVudCBsb2NhdGlvbiB0aGFuIHRoZSBwcmV2aW91cyBvbmUuICBUaGlzIGlzIGNvbW1vbmx5CisgIGV4cGVyaWVuY2VkIHdoZW4gcmVwbGFjaW5nIGEgcmVhZHktaW5zdGFsbGVkIHZlcnNpb24gKGUuZy4gZnJvbSBhIHZlbmRvcgorICBkaXN0cmlidXRpb24pLCB3aXRoIHRoZSBjdXJyZW50IHJlbGVhc2UgaW5zdGFsbGVkIGZyb20gdGhlIHNvdXJjZS4KKworICAgIFRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciB0aGlzIGZpbGUgd2l0aCB0aGUgYmFzaWMgZGlzdHJpYnV0aW9uIGlzCisgIC91c3IvbG9jYWwvc2hhcmUvc25tcC9zbm1wZC5jb25mIChvciBQUkVGSVgvc2hhcmUvc25tcC9zbm1wZC5jb25mKS4KKyAgUmVhZHktaW5zdGFsbGVkIHZlcnNpb25zIG9mdGVuIGxvb2sgZm9yIHRoZSBmaWxlIGFzIC9ldGMvc25tcGQuY29uZiwKKyAgb3IgL2V0Yy9zbm1wL3NubXBkLmNvbmYuICBUcnkgbW92aW5nIHRoZSBvbGQgY29uZmlnIGZpbGUgdG8gdGhlIG5ldworICBsb2NhdGlvbiwgYW5kIHJlc3RhcnQgdGhlIGFnZW50LgorCisgICAgV2l0aCByZWxlYXNlIDUuMCwgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgY2hhbmdlZCBmcm9tICJ1Y2Qtc25tcCIKKyAgdG8gIm5ldC1zbm1wIiwgYW5kIHRoaXMgY2hhbmdlIHdhcyByZWZsZWN0ZWQgaW4gdGhlIG5hbWUgb2YgdGhlIHBlcnNpc3RlbnQKKyAgL3ZhciBkaXJlY3RvcnkuICBTbyBhIHY1IE5ldC1TTk1QIGFnZW50IHdpbGwgbm90IGxvb2sgaW4KKyAgL3Zhci91Y2Qtc25tcC9zbm1wZC5jb25mIGZvciBzZXR0aW5ncyBmcm9tIGEgdjQgVUNEIGFnZW50LgorCisKKworPGEgbmFtZT0iV2h5X2FtX0lfZ2V0dGluZ19fQ29ubmVjdGlvbl9yZWZ1c2VkX18iPgorV2h5IGFtIEkgZ2V0dGluZyAiQ29ubmVjdGlvbiByZWZ1c2VkIj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgYWN0dWFsbHkgbm90aGluZyB0byBkbyB3aXRoIHRoZSBhY2Nlc3MgY29udHJvbCBtZWNoYW5pc20KKyAgKHRob3VnaCB0aGF0J3MgYW4gdW5kZXJzdGFuZGFibGUgbWlzdGFrZSkuICBUaGlzIGlzIHRoZSByZXN1bHQgb2YKKyAgdGhlIFRDUCB3cmFwcGVyIG1lY2hhbmlzbSB1c2luZyB0aGUgZmlsZXMgJ2hvc3RzLmFsbG93JyBhbmQgJ2hvc3RzLmRlbnknCisgIHRvIGNvbnRyb2wgYWNjZXNzIHRvIHRoZSBzZXJ2aWNlLiAgU29tZSBkaXN0cmlidXRpb25zIG1heSBjb21lIHdpdGgKKyAgdGhpcyBlbmFibGVkIGF1dG9tYXRpY2FsbHkgLSBvdGhlcndpc2UgeW91IG5lZWQgdG8gc2VsZWN0IGl0IGV4cGxpY2l0bHkKKyAgYnkgY29uZmlndXJpbmcgdXNpbmcgJy0td2l0aC1saWJ3cmFwJy4KKworICAgIFRoZSBzaW1wbGVzdCB3YXkgdG8gYXZvaWQgdGhpcyBwcm9ibGVtIGlzIHRvIGFkZCB0aGUgbGluZQorCisJCXNubXBkOiBBTEwKKworICBpbiB0aGUgZmlsZSAvZXRjL2hvc3RzLmFsbG93IChvciB3aGVyZXZlciB0aGlzIGZpbGUgaXMgb24geW91ciBzeXN0ZW0pLgorICBUaG91Z2ggYmUgYXdhcmUgdGhhdCBkb2luZyB0aGlzIHJlbW92ZXMgb25lIGxldmVsIG9mIHByb3RlY3Rpb24gYW5kIGFsbG93cworICBhbnlvbmUgdG8gdHJ5IGFuZCBxdWVyeSB5b3VyIGFnZW50ICh0aG91Z2ggdGhlIGFnZW50J3Mgb3duIGFjY2VzcyBjb250cm9sCisgIG1lY2hhbmlzbXMgY2FuIHN0aWxsIGJlIHVzZWQgdG8gcmVzdHJpY3Qgd2hhdCAtIGlmIGFueXRoaW5nIC0gdGhleSBjYW4gc2VlKS4KKworICBOb3RlIHRoYXQgcGVyc29uYWwgZmlyZXdhbGxzIChzdWNoIGFzIExpbnV4JyBpcGNoYWlucyBvciBpcHRhYmxlcyBtZWNoYW5pc20pCisgIG1heSBoYXZlIGEgc2ltaWxhciBlZmZlY3QgKHRob3VnaCB0eXBpY2FsbHkgdGhpcyB3b24ndCBiZSBsb2dnZWQpLgorICBTZWUgdGhlIGVhcmxpZXIgZW50cnkKKyAgICBSZXF1ZXN0cyBhbHdheXMgc2VlbSB0byB0aW1lb3V0LCBhbmQgZG9uJ3QgZ2l2ZSBtZSBhbnl0aGluZyBiYWNrLiAgV2h5PworCisKKyAKKzxhIG5hbWU9IklfbV9nZXR0aW5nX2Vycm9yc19hYm91dF9fYmFkX3NlY3VyaXR5X21vZGVsX19fX3doeV8iPgorSSdtIGdldHRpbmcgZXJyb3JzIGFib3V0ICJiYWQgc2VjdXJpdHkgbW9kZWwiIC0gd2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFVudGlsIHJlbGVhc2UgNC4yLCB0aGUgYWNjZXNzIGNvbnRyb2wgaGFuZGxpbmcgYWNjZXB0ZWQgdGhlIHRva2VuICJhbnkiIAorICB0byBjb3ZlciBhbGwgb2YgdGhlIHJlY29nbmlzZWQgc2VjdXJpdHkgbW9kZWxzLiAgVGhpcyBpcyBleHBsaWNpdGx5CisgIGZvcmJpZGRlbiBpbiB0aGUgcmVsZXZhbnQgUkZDLCBzbyBzdXBwb3J0IGZvciB0aGlzIGlzIGJlaW5nIHdpdGhkcmF3bi4KKyAgICBBcyBhbiBpbnRlcmltIG1lYXN1cmUsIGl0IGlzIGN1cnJlbnRseSBhY2NlcHRlZCAod2l0aCB0aGUgd2FybmluZyB5b3UKKyAgc2VlKSwgYnV0IHRoaXMgd2lsbCBub3QgYmUgdGhlIGNhc2UgaW4gZnV0dXJlIHJlbGVhc2VzIG9mIHRoZSBhZ2VudC4KKyAKKyAgICBZb3Ugc2hvdWxkIHJlcGxhY2UgdGhlIHRva2VuICdhbnknIHdpdGggJ3YxJywgJ3YyYycgb3IgJ3VzbScgYXMKKyAgYXBwcm9wcmlhdGUuICBJZiB5b3Ugd2FudCB0byBzdXBwb3J0IGFsbCB0aHJlZSBvZiB0aGVzZSBzZWN1cml0eSBtb2RlbHMsCisgIHlvdSdsbCBuZWVkIHRvIHVzZSB0aHJlZSBkaXN0aW5jdCBncm91cCBsaW5lcywgb25lIGZvciBlYWNoLiBTZWUgdGhlCisgIGV4YW1wbGUgc25tcGQuY29uZiBmaWxlIGZvciBkZXRhaWxzLgorCisgIAorCis8YSBuYW1lPSJJX21fZ2V0dGluZ19lcnJvcnNfYWJvdXRfX2JhZF9wcmVmaXhfbWF0Y2hfcGFyYW1ldGVyX19fX3doeV8iPgorSSdtIGdldHRpbmcgZXJyb3JzIGFib3V0ICJiYWQgcHJlZml4IG1hdGNoIHBhcmFtZXRlciIgLSB3aHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGlzIHNpbWlsYXIgdG8gdGhlIHByZXZpb3VzIHF1ZXN0aW9uLiAgV2l0aCA0LjIsIHRoZSBzeW50YXggb2YgdGhlCisgICdhY2Nlc3MnIGNvbmZpZ3VyZSBsaW5lIGhhcyBjaGFuZ2VkLCBhbmQgYSB2YWx1ZSBvZiAnMCcgaXMgbm8gbG9uZ2VyCisgIGFjY2VwdGFibGUgZm9yIHRoZSBzaXh0aCBmaWVsZC4gIFNpbXBseSByZXBsYWNlIHRoaXMgd2l0aCB0aGUgd29yZCAnZXhhY3QnLgorCisKKyAgCis8YSBuYW1lPSJXaHlfY2FuX3RfSV9zZWVfdmFsdWVzX2luX3RoZV9VQ0RhdmlzX19leHRlbnNpYmxlX19vcl9fZGlza19fdHJlZXNfIj4KK1doeSBjYW4ndCBJIHNlZSB2YWx1ZXMgaW4gdGhlIFVDRGF2aXMgJ2V4dGVuc2libGUnIG9yICdkaXNrJyB0cmVlcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEJvdGggdGhlc2UgdHJlZXMgYXJlIGRlc2lnbmVkIHRvIHJlcG9ydCB0aGluZ3MgeW91IGFzayBpdCB0byByZXBvcnQKKyAgb24uICBJZiB5b3UgZG9uJ3QgZGVjbGFyZSBhbnl0aGluZyBpbiB0aGUgc25tcGQuY29uZiBmaWxlIGZvciBpdCB0bworICBtb25pdG9yLCBpdCB3aWxsIG5vdCByZXBvcnQgYW55dGhpbmcuICBTZWUgdGhlIHNubXBkLmNvbmYgbWFudWFsIHBhZ2UKKyAgYW5kIHRoZSBFWEFNUExFLmNvbmYgZmlsZSBmb3IgZGV0YWlscyBvbiBjb25maWd1cmluZyB0aGUgYWdlbnQuCisKKyAgT3B0aW9uYWxseSwgcnVuIHNubXBjb25mIC1nIG1vbml0b3JpbmcgdG8gaGVscCB5b3Ugc2V0IHVwIHRoaXMKKyAgc2VjdGlvbiBvZiB0aGUgc25tcGQuY29uZiBmaWxlLgorCisKKworV2h5IGNhbid0IEkgc2VlIHZhbHVlcyBpbiB0aGUgVUNEYXZpcyAnbWVtb3J5JyBvciAndm1zdGF0JyB0cmVlcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGVzZSBtaWIgbW9kdWxlcyBhcmUgbm90IHN1cHBvcnRlZCBvbiBhbGwgb3BlcmF0aW5nIHN5c3RlbXMsIGFuZAorICB3aWxsIG5vdCBiZSBpbmNsdWRlZCBvbiBhbnkgb3RoZXIgc3lzdGVtLiAgQ3VycmVudGx5LCB0aGV5IGFyZSBvbmx5CisgIHN1cHBvcnRlZCBvbiBMaW51eCwgSFAtVVggKG1lbW9yeSBvbmx5KSwgU29sYXJpcywgQlNEaSAodm1zdGF0IG9uCisgIEJTRGk0IG9ubHkpLCBEeW5peCwgRnJlZUJTRCwgTmV0QlNEIGFuZCBPcGVuQlNELgorICAgIElmIHlvdSB3YW50IHRvIGhlbHAgcG9ydCBpdCB0byBvdGhlciBzeXN0ZW1zLCBsZXQgdXMga25vdy4KKworICBOb3RlIHRoYXQgdGhlc2Ugc3VidHJlZXMgb25seSByZXBvcnQgdGhlIGN1cnJlbnQgdXNhZ2Ugd2hlbgorICBleHBsaWNpdGx5IHF1ZXJpZWQuICBUaGV5IGRvICpub3QqIGdlbmVyYXRlIHRyYXBzIHdoZW4gdGhlCisgIHVzYWdlIHN0cmF5cyBvdXRzaWRlIHRoZSBjb25maWd1cmVkIGJvdW5kcy4KKyAgU2VlIHRoZSBlYXJsaWVyIEZBUSBlbnRyeQorICAgIFdoYXQgdHJhcHMgYXJlIHNlbnQgYnkgdGhlIGFnZW50PworCisKKworPGEgbmFtZT0iV2hhdF9kb190aGVfQ1BVX3N0YXRpc3RpY3NfbWVhbl9fX2lzX3RoaXNfdGhlX2xvYWRfYXZlcmFnZV8iPgorV2hhdCBkbyB0aGUgQ1BVIHN0YXRpc3RpY3MgbWVhbiAtIGlzIHRoaXMgdGhlIGxvYWQgYXZlcmFnZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBOby4gIFVuZm9ydHVuYXRlbHksIHRoZSBvcmlnaW5hbCBkZWZpbml0aW9uIG9mIHRoZSB2YXJpb3VzIENQVSBzdGF0aXN0aWNzCisgIHdhcyBhIGxpdHRsZSB2YWd1ZS4gIEl0IHJlZmVycmVkIHRvIGEgInBlcmNlbnRhZ2UiLCB3aXRob3V0IHNwZWNpZnlpbmcKKyAgd2hhdCBwZXJpb2QgdGhpcyBzaG91bGQgYmUgY2FsY3VsYXRlZCBvdmVyLiAgSXQgd2FzIHRoZXJlZm9yZQorICBpbXBsZW1lbnRlZCBzbGlnaHRseSBkaWZmZXJlbnRseSBvbiBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcy4KKworICAgIFJlY2VudCByZWxlYXNlcyBpbmNsdWRlcyAicmF3IGNvdW50ZXJzIiwgd2hpY2ggY2FuIGJlIHVzZWQgdG8KKyAgY2FsY3VsYXRlIHRoZSBwZXJjZW50YWdlIHVzYWdlIG92ZXIgYW55IGRlc2lyZWQgcGVyaW9kLiAgVGhpcyBpcworICB0aGUgInJpZ2h0IiB3YXkgdG8gaGFuZGxlIHRoaW5ncyBpbiB0aGUgU05NUCBtb2RlbC4gIFRoZSBvcmlnaW5hbAorICBmbGF3ZWQgcGVyY2VudGFnZSBvYmplY3RzIHNob3VsZCBub3QgYmUgdXNlZCwgYW5kIHdpbGwgYmUgcmVtb3ZlZAorICBpbiBhIGZ1dHVyZSByZWxlYXNlIG9mIHRoZSBhZ2VudC4KKworICAgIE5vdGUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBVbml4IGxvYWQgYXZlcmFnZSwgd2hpY2ggaXMKKyAgYXZhaWxhYmxlIHZpYSB0aGUgbG9hZFRhYmxlLCBhbmQgaXMgc3VwcG9ydGVkIG9uIGFsbCBhcmNoaXRlY3R1cmVzLgorCisKKworPGEgbmFtZT0iSG93X2RvX0lfZ2V0X3BlcmNlbnRhZ2VfQ1BVX3V0aWxpemF0aW9uX3VzaW5nX3NzQ3B1UmF3SWRsZV8iPgorSG93IGRvIEkgZ2V0IHBlcmNlbnRhZ2UgQ1BVIHV0aWxpemF0aW9uIHVzaW5nIHNzQ3B1UmF3SWRsZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgVGhpcyBvbmUgb2YgdGhlICJyYXcgY291bnRlcnMiIG1lbnRpb25lZCBpbiB0aGUgcHJldmlvdXMgZW50cnkuCisgIFlvdSBuZWVkIHRvIHRha2UgdHdvIHJlYWRpbmdzIG9mIHRoaXMgb2JqZWN0IGFuZCBsb29rIGF0IHRoZQorICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlbS4gIFRoYXQgZGlmZmVyZW5jZSBkaXZpZGVkIGJ5IHRoZSB0b3RhbAorICBudW1iZXIgb2YgJ3RpY2tzJyBiZXR3ZWVuIHRoZSB0d28gcmVhZGluZ3MgKHdoZXJlIG9uZSB0aWNrIGlzCisgIHByb2JhYmx5IDAuMDEgc2Vjb25kcykgd2lsbCBnaXZlIHlvdSB0aGUgcGVyY2VudGFnZSB1dGlsaXphdGlvbgorICBvdmVyIHRoYXQgcGVyaW9kLgorCisKKworPGEgbmFtZT0iV2hhdF9hYm91dF9tdWx0aV9wcm9jZXNzb3Jfc3lzdGVtc18iPgorV2hhdCBhYm91dCBtdWx0aS1wcm9jZXNzb3Igc3lzdGVtcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFNvcnJ5IC0gdGhlIENQVSBzdGF0aXN0aWNzIChib3RoIG9yaWdpbmFsIHBlcmNlbnRhZ2VzLCBhbmQgdGhlCisgIG5ld2VyIHJhdyBzdGF0aXN0aWNzKSBib3RoIHJlZmVyIHRvIHRoZSBzeXN0ZW0gYXMgYSB3aG9sZS4gIFRoZXJlCisgIGlzIGN1cnJlbnRseSBubyB3YXkgdG8gYWNjZXNzIGluZGl2aWR1YWwgc3RhdGlzdGljcyBmb3IgYSBwYXJ0aWN1bGFyCisgIHByb2Nlc3NvciAoZXhjZXB0IG9uIFNvbGFyaXMgc3lzdGVtcyAtIHNlZSBiZWxvdykuCisKKyAgICBOb3RlIHRoYXQgYWx0aG91Z2ggdGhlIEhvc3QgUmVzb3VyY2VzIHRhYmxlIGluY2x1ZGVzIGEgaHJQcm9jZXNzb3JUYWJsZSwKKyAgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gc3VmZmVycyBmcm9tIHR3byBtYWpvciBmbGF3cy4gIEZpcnN0bHksIGl0CisgIGRvZXNuJ3QgY3VycmVudGx5IHJlY29nbmlzZSB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlwbGUgcHJvY2Vzc29ycywgYW5kCisgIHNpbXBseSBhc3N1bWVzIHRoYXQgYWxsIHN5c3RlbXMgaGF2ZSBwcmVjaXNlbHkgb25lIENQVS4gIFNlY29uZGx5LCBpdAorICBkb2Vzbid0IGNhbGN1bGF0ZSB0aGUgaHJQcm9jZXNzb3JMb2FkIHZhbHVlIGNvcnJlY3RseSwgYW5kIGVpdGhlciByZXR1cm5zCisgIGEgZHVtbXkgdmFsdWUgKGJhc2VkIG9uIHRoZSBsb2FkIGF2ZXJhZ2UpIG9yIG5vdGhpbmcgYXQgYWxsLgorCisgICAgQXMgb2YgbmV0LXNubXAgdmVyc2lvbiA1LjEsIHRoZSBTb2xhcmlzIG9wZXJhdGluZyBzeXN0ZW0gZGVsaXZlcnMgc29tZQorICBpbmZvcm1hdGlvbiBhYm91dCBtdWx0aXBsZSBDUFUncyBzdWNoIGFzIHNwZWVkIGFuZCB0eXBlLgorCisgICAgT3RoZXIgdGhhbiB0aGF0LCB0byBtb25pdG9yIGEgbXVsdGktcHJvY2Vzc29yIHN5c3RlbSwgeW91J3JlIGN1cnJlbnRseQorICBvdXQgb2YgbHVjay4gIFdlIGhvcGUgdG8gYWRkcmVzcyB0aGlzIGluIGEgZnV0dXJlIHJlbGVhc2Ugb2YgdGhlIGFnZW50LgorICBCdXQgeW91J3ZlIGdvdCB0aGUgc291cmNlLCBzbyB5b3UgY2FuIGFsd2F5cyBoYXZlIGEgZ28geW91cnNlbGYgOi0pCisKKworCis8YSBuYW1lPSJUaGVfc3BlZWRfdHlwZV9vZl9teV9uZXR3b3JrX2ludGVyZmFjZXNfaXNfd3JvbmdfX19ob3dfY2FuX0lfZml4X2l0XyI+CitUaGUgc3BlZWQvdHlwZSBvZiBteSBuZXR3b3JrIGludGVyZmFjZXMgaXMgd3JvbmcgLSBob3cgY2FuIEkgZml4IGl0PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyB3aWxsIHByb3ZpZGUgYSBtZWNoYW5pc20gZm9yIGRldGVybWluaW5nCisgIHRoZSBzcGVlZCBhbmQgdHlwZSBvZiBuZXR3b3JrIGludGVyZmFjZXMsIGJ1dCBtYW55IGRvIG5vdC4gIEluIHRoaXMKKyAgY2FzZSwgdGhlIGFnZW50IGF0dGVtcHRzIHRvIGd1ZXNzIHRoZSBtb3N0IGFwcHJvcHJpYXRlIHZhbHVlcywgYmFzZWQKKyAgb24gdGhlIG5hbWUgb2YgdGhlIGludGVyZmFjZS4KKyAgICBWZXJzaW9uIDQuMiBhbGxvd3MgeW91IHRvIG92ZXJyaWRlIHRoZXNlIGd1ZXNzZWQgdmFsdWVzLCB1c2luZyB0aGUKKyAgY29uZmlndXJhdGlvbiBkaXJlY3RpdmUgJ2ludGVyZmFjZScsIHNwZWNpZnlpbmcgdGhlIG5hbWUsIHR5cGUgYW5kCisgIHNwZWVkIG9mIGEgcGFydGljdWxhciBpbnRlcmZhY2UuICBUaGlzIGlzIHBhcnRpY3VsYXJseSB1c2VmdWwgZm9yCisgIGZhc3QtZXRoZXJuZXQsIG9yIGRpYWwtdXAgaW50ZXJmYWNlcywgd2hlcmUgdGhlIHNwZWVkIGNhbm5vdCBiZQorICBndWVzc2VkIGZyb20gdGhlIG5hbWUuCisgICAgU2VlIHRoZSBzbm1wZC5jb25mKDUpIG1hbiBwYWdlIGZvciBkZXRhaWxzLgorICAKKworCis8YSBuYW1lPSJUaGVfaW50ZXJmYWNlX3N0YXRpc3RpY3NfZm9yX215X3N1YmludGVyZmFjZXNfYXJlX2FsbF96ZXJvX19fd2h5XyI+CitUaGUgaW50ZXJmYWNlIHN0YXRpc3RpY3MgZm9yIG15IHN1YmludGVyZmFjZXMgYXJlIGFsbCB6ZXJvIC0gd2h5PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVW5mb3J0dW5hdGVseSwgbW9zdCBrZXJuZWxzIHRoYXQgc3VwcG9ydCBtdWx0aXBsZSBsb2dpY2FsCisgIGludGVyZmFjZXMgb24gYSBzaW5nbGUgcGh5c2ljYWwgaW50ZXJmYWNlLCBkb24ndCBrZWVwIHNlcGFyYXRlCisgIHN0YXRpc3RpY3MgZm9yIGVhY2ggb2YgdGhlc2UuICBUaGV5IHNpbXBseSByZXBvcnQgdGhlIG92ZXJhbGwKKyAgc3RhdGlzdGljcyBmb3IgdGhlIHBoeXNpY2FsIGludGVyZmFjZSBpdHNlbGYuCisgICAgVGhlcmUncyBubyBlYXN5IHdheSBhcm91bmQgdGhpcyBwcm9ibGVtIC0gdGhlIGFnZW50IGNhbiBvbmx5CisgIHJlcG9ydCBzdWNoIHZhbHVlcyBhcyBpdCBjYW4gZmluZCBvdXQuICBJZiB0aGUga2VybmVsIGRvZXNuJ3QKKyAga2VlcCB0cmFjayBvZiB0aGVzZSBmaWd1cmVzLCB0aGUgYWdlbnQgY2FuJ3QgcmVwb3J0IHRoZW0uCisgICAgU29ycnkhCisKKworPGEgbmFtZT0iV2hhdF9kb2VzX19rbHJlYWRfX19iYWRfYWRkcmVzc19fbWVhbl8iPgorV2hhdCBkb2VzICJrbHJlYWQ6ICBiYWQgYWRkcmVzcyIgbWVhbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIG1lYW5zIHRoYXQgdGhlIGFnZW50IHdhcyB1bmFibGUgdG8gZXh0cmFjdCBzb21lIG9mIHRoZQorICBuZWNlc3NhcnkgaW5mb3JtYXRpb24gZnJvbSB0aGUga2VybmVsIHN0cnVjdHVyZXMuICBUaGlzIGlzCisgIHBvc3NpYmx5IGR1ZSB0bzoKKwktIGVpdGhlciBsb29raW5nIGluIHRoZSB3cm9uZyBwbGFjZSBmb3Iga2VybmVsIGluZm9ybWF0aW9uCisJCShjaGVjayB0aGUgdmFsdWUgb2YgS0VSTkVMX0xPQykKKwktIGFuIGVycm9yIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBwYXJ0IG9mIHRoZSBNSUIgdHJlZQorCQlmb3IgdGhhdCBhcmNoaXRlY3R1cmUuICBUcnkgYW5kIGlkZW50aWZ5IHdoaWNoCisJCU9JRCBpcyBnZW5lcmF0aW5nIHRoZSBlcnJvciwgYW5kIGNvbnRhY3QgdGhlCisJCWxpc3QgJ25ldC1zbm1wLWNvZGVyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQnCisJCVJlbWVtYmVyIHRvIHRlbGwgdXMgd2hhdCBhcmNoaXRlY3R1cmUgeW91IGhhdmUhCisKKworCis8YSBuYW1lPSJXaGF0X2RvZXNfX25saXN0X2Vycl9fX3dvbWJhdF9ub3RfZm91bmRfX19vcl9zaW1pbGFyX19tZWFuXyI+CitXaGF0IGRvZXMgIm5saXN0IGVycjogIHdvbWJhdCBub3QgZm91bmQiIChvciBzaW1pbGFyKSBtZWFuPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFRoaXMgbWVhbnMgdGhhdCB0aGUgYWdlbnQgd2Fzbid0IGFibGUgdG8gbG9jYXRlIG9uZSBvZiB0aGUKKyAga2VybmVsIHN0cnVjdHVyZXMgaXQgd2FzIGxvb2tpbmcgZm9yLiAgVGhpcyBtYXkgb3IgbWF5IG5vdAorICBiZSBpbXBvcnRhbnQgLSBzb21lIHN5c3RlbXMgcHJvdmlkZSBhbHRlcm5hdGl2ZSBtZWNoYW5pc21zCisgIGZvciBvYnRhaW5pbmcgdGhlIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiAtIFNvbGFyaXMsIGZvciBleGFtcGxlLAorICBjYW4gcHJvZHVjZSBhIHdob2xlIHNsZXcgb2Ygc3VjaCBtZXNzYWdlcywgYnV0IHN0aWxsIHByb3ZpZGUKKyAgdGhlIGNvcnJlY3QgaW5mb3JtYXRpb24uCisgICAgVGhpcyBlcnJvciBvbmx5IG9jY3VycyBpZiB5b3UgaGF2ZSB1c2VkIHRoZSBmbGFnCisgICctLWVuYWJsZS1kZWJ1Z2dpbmcnIGFzIHBhcnQgb2YgdGhlIGluaXRpYWwgY29uZmlndXJhdGlvbi4KKyAgUmVjb25maWd1cmUgdGhlIGFnZW50IHdpdGggJy0tZGlzYWJsZS1kZWJ1Z2dpbmcnIGFuZCB0aGVzZQorICBtZXNzYWdlcyB3aWxsIGRpc2FwcGVhci4gIChJdCB3b24ndCBmaXggdGhlIHVuZGVybHlpbmcgcHJvYmxlbSwKKyAgYnV0IGF0IGxlYXN0IHlvdSB3b24ndCBiZSBuYWdnZWQgYWJvdXQgaXQpLgorCisKKworPGEgbmFtZT0iSG93X2Fib3V0X19DYW5fdF9vcGVuX19kZXZfa21lbV9fIj4KK0hvdyBhYm91dCAiQ2FuJ3Qgb3BlbiAvZGV2L2ttZW0iPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGlzIGRldmljZSBpcyBub3JtYWxseSByZXN0cmljdGVkIHRvIGp1c3QgYmVpbmcgYWNjZXNzaWJsZSBieSByb290CisgIChvciBwb3NzaWJseSBieSBhIHNwZWNpYWwgZ3JvdXAgc3VjaCBhcyAna21lbScgb3IgJ3N5cycpLiAgVGhlIGFnZW50CisgIG11c3QgYmUgYWJsZSB0byByZWFkIHRoaXMgZGV2aWNlIHRvIG9idGFpbiB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9uCisgIGFib3V0IHRoZSBydW5uaW5nIHN5c3RlbS4KKyAgICBDaGVjayB0aGF0IHRoZSBhZ2VudCB3YXMgc3RhcnRlZCBieSByb290LCBhbmQgaXMgcnVubmluZyB3aXRoIFVJRCAwCisgIChvciBzdWl0YWJsZSBHSUQgaWYgYXBwcm9wcmlhdGUpLiAgVGhlIGFnZW50IHdpbGwgbm9ybWFsbHkgY29udGludWUKKyAgdG8gcnVuIHdpdGhvdXQgdGhpcyBsZXZlbCBvZiBhY2Nlc3MgcGVybWlzc2lvbiwgYnV0IHdvbid0IGJlIGFibGUgdG8KKyAgcmVwb3J0IHZhbHVlcyBmb3IgbWFueSBvZiB0aGUgdmFyaWFibGVzIChwYXJ0aWN1bGFybHkgdGhvc2UgcmVsYXRpbmcKKyAgdG8gbmV0d29yayBzdGF0aXN0aWNzKS4KKworIAorCis8YSBuYW1lPSJUaGVfYWdlbnRfaXNfY29tcGxhaW5pbmdfYWJvdXRfX3NubXBkX2NvbmZfX19fV2hlcmVfaXNfdGhpc18iPgorVGhlIGFnZW50IGlzIGNvbXBsYWluaW5nIGFib3V0ICdzbm1wZC5jb25mJy4gIFdoZXJlIGlzIHRoaXM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEl0IGRvZXNuJ3QgZXhpc3QgaW4gdGhlIGRpc3RyaWJ1dGlvbiBhcyBzaGlwcGVkLiAgWW91IG5lZWQgdG8KKyAgY3JlYXRlIGl0IHRvIHJlZmxlY3QgeW91ciBsb2NhbCByZXF1aXJlbWVudC4KKyAgICBUbyBnZXQgc3RhcnRlZCwgeW91IGNhbiBlaXRoZXIganVzdCBjcmVhdGUgdGhpcyBhcyBhbiBlbXB0eSBmaWxlLAorICBvciBydW4gc25tcGNvbmYgdG8gaGVscCB5b3UgY3JlYXRlIG9uZS4KKyAgICBTZWUgdGhlIHNubXBkLmNvbmYoNSkgbWFudWFsIHBhZ2UgZm9yIGZ1cnRoZXIgZGV0YWlscy4KKworCisKKzxhIG5hbWU9IlRoZV9zeXN0ZW1fdXB0aW1lX19zeXNVcFRpbWVfX3JldHVybmVkX2lzX3dyb25nXyI+CitUaGUgc3lzdGVtIHVwdGltZSAoc3lzVXBUaW1lKSByZXR1cm5lZCBpcyB3cm9uZyEKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgT2ggbm8gaXQncyBub3QuCisgIFRoZSBkZWZpbmVkIG1lYW5pbmcgb2YgJ3N5c1VwVGltZScgaXMKKwkidGhlIHRpbWUgLi4uIHNpbmNlIHRoZSAqbmV0d29yayBtYW5hZ2VtZW50KgorCSBwb3J0aW9uIG9mIHRoZSBzeXN0ZW0gd2FzIHJlLWluaXRpYWxpemVkLiIKKworICBJbiBvdGhlciB3b3Jkcywgd2hlbiB0aGUgc25tcCBhZ2VudCB3YXMgc3RhcnRlZCwgbm90IHdoZW4gdGhlCisgIHN5c3RlbSBpdHNlbGYgbGFzdCBib290ZWQuICBUaGlzIGxhdHRlciBpbmZvcm1hdGlvbiBpcyBhdmFpbGFibGUKKyAgaW4gdGhlIEhvc3QgUmVzb3VyY2VzIE1JQiBhcyAiaG9zdC5oclN5c3RlbS5oclN5c3RlbVVwVGltZSIKKyAgTm90ZSB0aGF0IGV2ZW4gaWYgdGhlIGZ1bGwgSG9zdCBSZXNvdXJjZXMgaXMgbm90IHN1cHBvcnRlZCBvbgorICB5b3VyIHN5c3RlbSwgaXQncyB3b3J0aCBjb25maWd1cmluZyBpbiB0aGUgc3lzdGVtIHBvcnRpb24gdXNpbmcKKworCQknLS13aXRoLW1pYi1tb2R1bGVzPWhvc3QvaHJfc3lzdGVtJworCisgIGFuZCByZWNvbXBpbGluZy4gIFRoaXMgcGFydGljdWxhciBncm91cCBpcyByZWFzb25hYmx5IGxpa2VseSB0bworICB3b3JrLCBldmVuIGlmIHNvbWUgb2YgdGhlIG90aGVyIG1vcmUgc3lzdGVtLXNwZWNpZmljIGdyb3VwcyBkb24ndC4KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9yZWR1Y2VfdGhlX21lbW9yeV9mb290cHJpbnRfIj4KK0hvdyBjYW4gSSByZWR1Y2UgdGhlIG1lbW9yeSBmb290cHJpbnQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIEluIG9yZGVyIHRvIHJlZHVjZSB0aGUgbWVtb3J5IGZvb3RwcmludCAoZm9yIGluc3RhbmNlLCB0bworICBlbWJlZCB0aGUgc25tcGQgaW50byBhIGRldmljZSksIHRoZSBmb2xsb3dpbmcgY29uZmlndXJlIG9wdGlvbnMKKyAgY291bGQgYmUgdXNlZC4KKworICAnLS1kaXNhYmxlLWRlYnVnZ2luZycKKyAgICAgVGhpcyB0dXJucyBvZmYgYWxsIGNvbXBpbGF0aW9uIG9mIGRlYnVnZ2luZyBpbmZvLgorCisgICctLWVuYWJsZS1taW5pLWFnZW50JyAnLS13aXRoLW91dC1taWItbW9kdWxlcz1leGFtcGxlcy91Y2REZW1vUHVibGljJworICAgICBUaGlzIGNyZWF0ZXMgYW4gYWdlbnQgdGhlIG1pbmltdW0gYW1vdW50IG9mIE1JQiBtb2R1bGVzCisgICAgIGNvbXBpbGVkIGluLgorICAgICBOT1RFOiBJZiB5b3UgbmVlZCBtb3JlIE1JQiBtb2R1bGVzIGFkZCB0aGVuIHdpdGggdGhlIG9wdGlvbgorICAgICAnLS13aXRoLW1pYi1tb2R1bGVzPS4uLicgeW91IGFkZCBvZiBjb3Vyc2UgZXh0cmEgbWVtb3J5IGZvb3RwcmludC4KKworICAnLS13aXRoLXRyYW5zcG9ydHM9VURQJworICAgICBUaGlzIG9wdGlvbiBzcGVjaWZpZXMgdGhlIHRyYW5zcG9ydHMgZG9tYWluIHlvdSBuZWVkLgorICAgICBGb3IgYSBzaW1wbGUgYWdlbnQgVURQIHNob3VsZCBiZSBzdWZmaWNpZW50LgorCisgICAnLS13aXRob3V0LWttZW0tdXNhZ2UnCisgICAgIFRoaXMgY2FuIGJlIHVzZWQgaW4gb3JkZXIgbm90IHRvIGluY2x1ZGUgdGhlIGNvZGUgdGhhdAorICAgICBvcGVyYXRlcyBvbiB0aGUgL2Rldi9rbWVtLiBUaGlzIG9wdGlvbiBjYW5ub3QgYmUgdXNlZCB3aGVuCisgICAgIHlvdSBkbyB3YW50IGEgTUlCIG1vZHVsZSBjb21waWxlZCBpbiB0aGF0IGRlcGVuZHMgb24gaXQuCisKKyAgICctLXdpdGgtbWliZGlycz0nIGFuZCAnLS13aXRoLW1pYnM9JworICAgICBUaGVzZSBvcHRpb25zIHNwZWNpZnkgbm90IGxvYWRpbmcgdGhlIE1JQiBtb2R1bGVzIGZvciB0aGUKKyAgICAgYWdlbnQuIEl0IHJlZHVjZXMgdGhlIG1lbW9yeSBmb290cHJpbnQgb25seSBkdXJpbmcKKyAgICAgcnVudGltZS4KKworICBPbiB0b3Agb2YgdGhpcyBvbmUgY291bGQgZXZlbiBhdHRlbXB0IHRvIGV4Y2x1ZGUgdGhlIGNvbXBsZXRlCisgIE1JQiBsb2FkaW5nIGZ1bmN0aW9uYWxpdHksIGJ1dCB0aGVyZSBpcyBjdXJyZW50bHkgbm8KKyAgY29uZmlndXJlIG9wdGlvbiBmb3IgdGhpcy4KKworICBPbmNlIHRoZSBhZ2VudCAoc25tcGQpIGhhcyBiZWVuIGxpbmtlZCwgeW91IG1pZ2h0IGFsc28gdHJ5IHJ1bm5pbmcKKyAgJ3N0cmlwIHNubXBkJyB0byByZW1vdmUgdW4tbmVjZXNzYXJ5IGRlYnVnL3N5bWJvbCBpbmZvcm1hdGlvbi4KKworCisKKzxhIG5hbWU9IkNPTVBJTElORyI+CitDT01QSUxJTkcKKz09PT09PT09PQorCis8YSBuYW1lPSJIb3dfZG9fSV9jb21waWxlX3dpdGhfX2NjX19pbnN0ZWFkX29mX19nY2NfXyI+CitIb3cgZG8gSSBjb21waWxlIHdpdGggJ2NjJyBpbnN0ZWFkIG9mICdnY2MnPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIFJ1biBjb25maWd1cmUgd2l0aCAtLXdpdGgtY2M9Y2MKKworICBOb3RlIHRoYXQgaWYgeW91J3ZlIGFscmVhZHkgcnVuIGNvbmZpZ3VyZSBvbmNlLCBpdCB3aWxsIHByb2JhYmx5IGhhdmUKKyAgZGV0ZWN0ZWQgdGhlIHByZXNlbmNlIG9mICdnY2MnLCBjYWNoZWQgdGhpcyBpbmZvcm1hdGlvbiwgYW5kIG1heSBzdGlsbAorICB0cnkgdG8gdXNlIHRoaXMgYW55d2F5LiAgIEluIHdoaWNoIGNhc2UsIHNpbXBseSByZW1vdmUgdGhlICdjb25maWcuY2FjaGUnCisgIGZpbGUgYmVmb3JlIHJlLXJ1bm5pbmcgY29uZmlndXJlLgorIAorCisKKzxhIG5hbWU9IkJ1dF9nY2NfZG9lc25fdF9jb21waWxlX2l0X3N1Y2Nlc3NmdWxseV9vbl9teV9uZXdfU29sYXJpc19zeXN0ZW1fX1doeV9ub3RfIj4KK0J1dCBnY2MgZG9lc24ndCBjb21waWxlIGl0IHN1Y2Nlc3NmdWxseSBvbiBteSBuZXcgU29sYXJpcyBzeXN0ZW0uIFdoeSBub3Q/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgV2hlbmV2ZXIgeW91IHVwZ3JhZGUgdGhlIG9wZXJhdGluZyBzeXN0ZW0gdW5kZXIgU29sYXJpcywgeW91IG5lZWQgdG8KKyAgcmVpbnN0YWxsIGdjYywgYW5kIHJ1biB0aGUgJ2ZpeGluY2x1ZGVzJyBzY3JpcHQuICAoVGhpcyBpcyBwcm9iYWJseQorICBhIHNlbnNpYmxlIHN0ZXAgdG8gdGFrZSB3aGVuIHlvdSB1cGdyYWRlIGFueSBvcGVyYXRpbmcgc3lzdGVtKS4KKyAgICBVbmRlciBTb2xhcmlzIDIuNiwgdGhlcmUgaXMgYWxzbyBhIGJ1ZyBpbiB0aGUgZ2NjICdmaXhpbmMuc3Y0JyBzY3JpcHQuCisgIFRoaXMgbmVlZHMgYW4gYWRkaXRpb25hbCBsaW5lIGFzIGZvbGxvd3M6CisKKyoqKiBmaXhpbmMuc3ZyNC5jbG4gICAgIFRodSBKdW4gMTUgMjI6MDM6MjkgMTk5NQorLS0tIGZpeGluYy5zdnI0IFR1ZSBOb3YgMjUgMDk6NDc6NTcgMTk5NworKioqKioqKioqKioqKioqCisqKiogMTkxLDE5MSAqKioqCistLS0gMTkxLDE5MiAtLS0tCisgICAgICAgICAgcy9fX1NURENfXyAtIDAgPT0gMC8hZGVmaW5lZCAoX19TVFJJQ1RfQU5TSV9fKS9nCisrICAgICAgICAgcy9fX1NURENfXyAtIDAgPT0gMS9kZWZpbmVkIChfX1NUUklDVF9BTlNJX18pL2cKKworICBOT1RFOiBUaGlzIGFwcGVhcnMgdG8gaGF2ZSBiZWVuIHJlc29sdmVkLgorCisKKworT24gUmVkSGF0IDguMCBvciB1cCBJIGdldCAiL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sZWxmIj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBSZWRIYXQgOC4wIGFuZCB1cCBkb2Vzbid0IGNvbWUgd2l0aCBsaWJlbGYgaW5zdGFsbGVkIChwcm9wZXJseSkgYnkKKyAgZGVmYXVsdC4gIEluIG9yZGVyIHRvIGJ1aWxkIE5ldC1TTk1QIHlvdSdsbCBuZWVkIHRoZSBlbGZ1dGlscy1kZXZlbAorICBycG0gaW5zdGFsbGVkLCB3aGljaCB5b3UgY3VycmVudGx5IGRvbid0IGhhdmUuCisKKyAgQWx0ZXJuYXRpdmVseSwgdGhpcyBjb3VsZCBxdWlja2x5IGZpeCB0aGUgcHJvYmxlbSB3aXRob3V0IHJlcXVpcmluZworICB0aGUgLWRldmVsIHJwbSBpbnN0YWxsZWQgKGFzIHRoaXMgaXMgb25lIG9mIHRoZSB0aGluZ3MgdGhlIC1kZXZlbCBycG0KKyAgZG9lcyB3aGVuIHlvdSBpbnN0YWxsIGl0KToKKworICAgIGNkIC91c3IvbGliIDsgbG4gLXMgbGliZWxmLnNvLjEgbGliZWxmLnNvCisKKyAgTm90ZSB0aGF0IHRoaXMgd2lsbCBvbmx5IGFmZmVjdCB5b3UgaWYgeW91IGFyZSB0cnlpbmcgdG8gY29tcGlsZSBpbgorICB0aGUgaG9zdCByZXNvdXJjZXMgbWliIHN1cHBvcnQsIGFzIGl0J2xsIHRyeSB0byB1c2UgdGhlIHJwbSBsaWJyYXJpZXMKKyAgd2hpY2ggd2lsbCBpbiB0dXJuIHJlcXVpcmUgdGhhdCBsaWJlbGYuYSBvciBsaWJlbGYuc28gYmUgcHJlc2VudC4KKworCisKKzxhIG5hbWU9IklfbV9nZXR0aW5nX2FuX2Vycm9yX19hdXRvaGVhZGVyX19ub3RfZm91bmRfX19fd2hhdF9zX3dyb25nXyI+CitJJ20gZ2V0dGluZyBhbiBlcnJvciAiYXV0b2hlYWRlcjogbm90IGZvdW5kIiAtIHdoYXQncyB3cm9uZz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIHVzdWFsbHkgYXBwZWFycyB3aGVuIGNvbXBpbGluZyB0aGUgY3VycmVudCBkZXZlbG9wbWVudCBzb3VyY2UKKyAgdmVyc2lvbiwgb2J0YWluZWQgdmlhIENWUy4gIFVuZm9ydHVuYXRlbHksIHRoZSB0aW1lc3RhbXBzIG9uIHNvbWUgb2YKKyAgdGhlIGNvbmZpZ3VyZSBmaWxlcyBhcmUgc3VjaCB0aGF0IG1ha2UgYXNzdW1lcyAobWlzdGFrZW5seSkgdGhhdCB0aGUKKyAgY29uZmlndXJlIHNjcmlwdCBuZWVkcyB0byBiZSByZS1nZW5lcmF0ZWQuCisgICAgQSBzaW1pbGFyIHByb2JsZW0gbWF5IGFyaXNlIHJlbGF0aW5nIHRvICdhdXRvY29uZicuCisKKyAgICBJbiBib3RoIGNhc2VzLCB0aGlzIGNhbiBiZSBjb3JyZWN0ZWQgYnkgcnVubmluZyB0aGUgY29tbWFuZAorICAibWFrZSAtayB0b3VjaGl0IiBiZWZvcmUgYXR0ZW1wdGluZyB0byBtYWtlIHRoZSBtYWluIHBhY2thZ2UuCisKKworCis8YSBuYW1lPSJXaGF0X2Fib3V0X2FfZmFpbGVkX2RlcGVuZGVuY3lfb25fX2xpYmNyeXB0b19fX19XaGVyZV9jYW5fSV9nZXRfdGhhdF8iPgorV2hhdCBhYm91dCBhIGZhaWxlZCBkZXBlbmRlbmN5IG9uICdsaWJjcnlwdG8nPyAgV2hlcmUgY2FuIEkgZ2V0IHRoYXQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyBpcyB0eXBpY2FsbHkgZW5jb3VudGVyZWQgd2hlbiBpbnN0YWxsaW5nIGEgTGludXggUlBNIG9mCisgIHRoZSB1Y2Qtc25tcCBwYWNrYWdlLiAgVGhpcyBsaWJyYXJ5IGlzIHBhcnQgb2YgdGhlICdvcGVuc3NsJworICBzdWl0ZSwgc28gc2ltcGx5IGluc3RhbGwgdGhhdCBSUE0gZmlyc3QsIG9yIGRvd25sb2FkIHRoZSBzb3VyY2UKKyAgZnJvbSBmdHA6Ly9mdHAub3BlbnNzbC5vcmcgYW5kIGNvbXBpbGUgYW5kIGluc3RhbGwgdGhhdC4KKworICAgIFdoZW4gY29tcGlsaW5nIHtVQ0QsTmV0fS1TTk1QIGZyb20gc291cmNlLCB0aGUgY29uZmlndXJlIHNjcmlwdAorICBzaG91bGQgZGV0ZWN0IHRoYXQgdGhpcyBsaWJyYXJ5IGlzIG5vdCBwcmVzZW50LCBhbmQgdXNlIGFsdGVybmF0aXZlCisgIGFycmFuZ2VtZW50cyBmb3IgTUQ1LWJhc2VkIGF1dGhlbnRpY2F0aW9uLgorCisgICAgSWYgZW5jcnlwdGlvbiAob3IgU0hBMS1iYXNlZCBhdXRoZW50aWNhdGlvbikgaXMgcmVxdWlyZWQsIHRoZW4KKyAgdGhpcyB0eXBpY2FsbHkgcmVxdWlyZXMgY29tcGlsaW5nIGZyb20gc291cmNlLiAgVW5kZXIgTGludXgsIGJvdGgKKyAgdGhlICdvcGVuc3NsJyBhbmQgJ29wZW5zc2wtZGV2ZWwnIFJQTXMgc2hvdWxkIGJlIGluc3RhbGxlZCwgYW5kIHRoZQorICAnY29uZmlnLmNhY2hlJyBmaWxlIHJlbW92ZWQgYmVmb3JlIHJ1bm5pbmcgImNvbmZpZ3VyZSAtLXdpdGgtb3BlbnNzbCIKKyAgYW5kIHJlLWNvbXBpbGluZy4KKworCisKKzxhIG5hbWU9IldoeV9pc190aGVfcHJvamVjdF93b3Jrc3BhY2VfZW1wdHlfdW5kZXJfVmlzdWFsX0NfX18iPgorV2h5IGlzIHRoZSBwcm9qZWN0IHdvcmtzcGFjZSBlbXB0eSB1bmRlciBWaXN1YWwgQysrPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIHByb2JhYmx5IGR1ZSB0byB0aGUgZGlmZmVyZW50IHdheXMgdGhhdCBVbml4IGFuZCBXaW5kb3dzCisgIGhhbmRsZSB0ZXh0IGZpbGUgbGluZSB0ZXJtaW5hdGlvbi4gIE9sZGVyIHZlcnNpb25zIG9mIFdpblppcCBkb24ndAorICBoYW5kbGUgdGhpcyBwcm9wZXJseSwgYW5kIFZpc3VhbCBDKysgZ2V0cyBjb25mdXNlZCAocG9vciBkZWFyISkuCisgIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBXaW5aaXAgaXMgcmVwb3J0ZWQgdG8gdW5wYWNrIHRoaXMgY29ycmVjdGx5LgorCisKKworPGEgbmFtZT0iV2h5X2RvZXNfX21ha2VfdGVzdF9fc2tpcF9maXZlX3Rlc3RzXyI+CitXaHkgZG9lcyAnbWFrZSB0ZXN0JyBza2lwIGZpdmUgdGVzdHM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgWW91IG1lYW4gVDA1M2FnZW50djF0cmFwLCBUMDU0YWdlbnR2MmN0cmFwLCBUMDU1YWdlbnR2MW1pbnRyYXAsCisgIFQwNTZhZ2VudHYyY21pbnRyYXAgYW5kIFQxMTNhZ2VudHh0cmFwPworCisgICAgVGhlc2UgdGVzdHMgcmVseSB1cG9uIGZ1bmN0aW9uYWxpdHkgaW4gdGhlIE5FVC1TTk1QLUVYQU1QTEVTLU1JQgorICB3aGljaCBpcyBub3QgaW1wbGVtZW50ZWQgaW4gdGhlIGRlZmF1bHQgYWdlbnQgY29uZmlndXJhdGlvbi4gIFRvCisgIGluY2x1ZGUgdGhlc2UgdGVzdHMsIGludm9rZSB0aGUgYGNvbmZpZ3VyZWAgc2NyaXB0IHRvIGluY2x1ZGUKKyAgICAgICctLXdpdGgtbWliLW1vZHVsZXM9ImV4YW1wbGVzL2V4YW1wbGUiLgorCisKKworPGEgbmFtZT0iV2h5X2RvZXNfX21ha2VfdGVzdF9fY29tcGxhaW5fYWJvdXRfYV9waWRfZmlsZV8iPgorV2h5IGRvZXMgJ21ha2UgdGVzdCcgY29tcGxhaW4gYWJvdXQgYSBwaWQgZmlsZT8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUeXBpY2FsbHkgaXQgc2F5cyBzb21ldGhpbmcgbGlrZToKKworICAgIGNhdDogIGNhbm5vdCBvcGVuIC90bXAvc25tcC10ZXN0LTEtODY5NC8qcGlkKgorCisgICAgSXQncyB0cnlpbmcgdG8gdGVsbCB5b3UgdGhlIHBvcnQgaXMgYmxvY2tlZCAtIHR5cGljYWxseSBiZWNhdXNlCisgIGFub3RoZXIgY29weSBvZiB0aGUgYWdlbnQgaXMgc3RpbGwgcnVubmluZywgbGVmdCBvdmVyIGZyb20gZnJvbSBhCisgIHByZXZpb3VzIHRlc3RpbmcgcnVuLgorCisgIElmIHlvdSB0eXBlICdwcyAtZWYnIHlvdSBzaG91bGQgbm90aWNlIGFuIG9ycGhhbmVkIHByb2Nlc3MgbGlrZToKKworICBzbm1wZCAtZCAtciAtVSAtUCAvdG1wL3NubXAtdGVzdC01LTI3Mjk1L3NubXBkLnBpZC4uLgorCisgIEtpbGwgdGhpcyBwcm9jZXNzLgorCisgIFRoaXMgY291bGQgYmUgaGFwcGVuaW5nIGZvciBzZXZlcmFsIHJlYXNvbnMgaW5jbHVkaW5nOgorCisgICAgMS4gIFlvdSBhcmUgdHJ5aW5nIHRvIGRvIGNvbmN1cnJlbnQgcnVucyBvZiAnbWFrZSB0ZXN0Jy4KKworICAgIDIuICBPbiBhIHNsb3cgbWFjaGluZSwgdGhlIGFnZW50IG1pZ2h0IGJlIHRha2luZyB0b28gbG9uZyB0bworICAgICAgc3RhcnQgdXAuIFRyeSBjaGFuZ2luZyB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIFNOTVBfU0xFRVAKKyAgICAgIGluIHRlc3RpbmcvUlVOVEVTVFMgZnJvbSAxIHRvIHNvbWV0aGluZyBoaWdoZXIgLSBzYXkgMyBvciA1LgorCisKKworPGEgbmFtZT0iQ09ESU5HIj4KK0NPRElORworPT09PT09CisKKzxhIG5hbWU9Ikhvd19kb19JX3dyaXRlX0NfY29kZV90b19pbnRlZ3JhdGVfd2l0aF90aGVfYWdlbnRfIj4KK0hvdyBkbyBJIHdyaXRlIEMgY29kZSB0byBpbnRlZ3JhdGUgd2l0aCB0aGUgYWdlbnQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgQXQgdGhlIG1vbWVudCwgdGhlcmUgYXJlIHRocmVlIG1ldGhvZHMgZm9yIGludGVncmF0aW5nIGV4dGVybmFsIEMgY29kZQorICB3aXRoaW4gdGhlIGFnZW50LgorCisgICAgVGhlIGNvZGUgY2FuIGJlIGluY2x1ZGVkIHdpdGhpbiB0aGUgYWdlbnQgaXRzZWxmLCBzdGF0aWNhbGx5IGNvbmZpZ3VyZWQKKyAgYW5kIGxpbmtlZCBpbiB3aGVuIHRoZSBhZ2VudCBpcyBjb21waWxlZC4gIEFsdGVybmF0aXZlbHksIHdpdGggdGhlIDQuMgorICByZWxlYXNlIG9mIHRoZSBhZ2VudCwgaXQncyBwb3NzaWJsZSB0byBkeW5hbWljYWxseSBsb2FkIE1JQiBtb2R1bGVzIG9uY2UKKyAgdGhlIGFnZW50IGlzIHJ1bm5pbmcuICBGaW5hbGx5LCB0aGUgYWdlbnQgY2FuIGJlIGNvbmZpZ3VyZWQgdG8gcGFzcyBjZXJ0YWluCisgIHBvcnRpb25zIG9mIHRoZSBNSUIgdHJlZSBvZmYgdG8gb25lIG9yIG1vcmUgc3ViYWdlbnRzLiAgU2VlIHRoZSBlYXJsaWVyCisgIHF1ZXN0aW9uIG9uIEFnZW50WCwgU01VWCBhbmQgcHJveGllZCBTTk1QIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBBbGwgdGhyZWUgbWVjaGFuaXNtcyB1c2UgdGhlIHNhbWUgbW9kdWxlIEFQSS4gIFRoaXMgaXMgZGVzY3JpYmVkIChpbgorICBleGNydWNpYXRpbmcgZGV0YWlsKSBpbiB0aGUgZmlsZSBBR0VOVC50eHQsIHNoaXBwZWQgd2l0aCB0aGUgc3RhbmRhcmQKKyAgZGlzdHJpYnV0aW9uLiAgVGhlcmUgaXMgYWxzbyBhbiBIVE1MIHZlcnNpb24gYWNjZXNzaWJsZSB2aWEgdGhlIHByb2plY3QKKyAgd2ViIHBhZ2UuICBUaGlzIHRhc2sgY2FuIGJlIGFpZGVkIHVzaW5nIHRoZSB0b29sICdtaWIyYycgd2hpY2ggZ2VuZXJhdGVzCisgIG1vc3Qgb2YgdGhlIG5lY2Vzc2FyeSBza2VsZXRvbiBjb2RlIGZyb20gdGhlIGRlc2NyaXB0aW9uIGluIHRoZSBNSUIgZmlsZS4KKworICAgIE5vdGUgdGhhdCB0aGUgVUNEIHN1aXRlIGRvZXMgbm90IGluY2x1ZGUgc3VwcG9ydCBmb3IgU01VWCBzdWJhZ2VudHMuCisKKworCis8YSBuYW1lPSJIb3dfZG9lc190aGVfYWdlbnRfZmV0Y2hfdGhlX3ZhbHVlX29mX2FfdmFyaWFibGVfZnJvbV90aGVfc3lzdGVtXyI+CitIb3cgZG9lcyB0aGUgYWdlbnQgZmV0Y2ggdGhlIHZhbHVlIG9mIGEgdmFyaWFibGUgZnJvbSB0aGUgc3lzdGVtPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIE11Y2ggb2YgdGhlIGluZm9ybWF0aW9uIGlzIGV4dHJhY3RlZCBmcm9tIGtlcm5lbCBtZW1vcnkgLSB1c3VhbGx5CisgIGJ5IHNlZWtpbmcgdG8gdGhlIGFwcHJvcHJpYXRlIGxvY2F0aW9uIGFuZCByZWFkaW5nIHRoZSBzdHJ1Y3R1cmVzCisgIGRpcmVjdGx5LgorICAgIFNvbWUgc3lzdGVtcyBwcm92aWRlIGNsZWFuZXIgaW50ZXJmYWNlcyB0byBzdWNoIGtlcm5lbCBpbmZvcm1hdGlvbgorICAoaXQgd291bGQgYmUgaGFyZCB0byB0aGluayBvZiBhIGxlc3MgY2xlYW4gaW50ZXJmYWNlISksIHZpYSBpb2N0bCgpCisgIGNhbGxzIG9yIHNpbWlsYXIgc3lzdGVtIHJvdXRpbmVzIGFuZCB0aGVzZSBtZWNoYW5pc21zIGFyZSB1c3VhbGx5IHVzZWQKKyAgaW4gcHJlZmVyZW5jZS4KKworCisKKzxhIG5hbWU9Ik1pYl9jX2NvbXBsYWluc19hYm91dF9hX21pc3NpbmdfX21pYl9yZWZlcmVuY2VfX19fd2hhdF9kb2VzX3RoaXNfbWVhbl8iPgorTWliMmMgY29tcGxhaW5zIGFib3V0IGEgbWlzc2luZyAibWliIHJlZmVyZW5jZSIgLSB3aGF0IGRvZXMgdGhpcyBtZWFuPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGJhc2ljYWxseSBtZWFucyB0aGF0IGl0IGhhc24ndCBsb2FkZWQgdGhlIE1JQiBmaWxlIGNvbnRhaW5pbmcKKyAgdGhlIGRlZmluaXRpb24gb2YgdGhlIE1JQiBzdWJ0cmVlIHlvdSdyZSB0cnlpbmcgdG8gaW1wbGVtZW50LiAgVGhpcworICBtaWdodCBiZSBiZWNhdXNlIGl0IGhhc24ndCBiZWVuIGluc3RhbGxlZCwgdGhlIG5hbWUgaXMgd3JvbmcsIG9yCisgIChtb3N0IGxpa2VseSksIGJlY2F1c2UgaXQgaXNuJ3QgaW4gdGhlIGRlZmF1bHQgbGlzdC4gIFNlZSB0aGUgTUlCUworICBzZWN0aW9uIGZvciBtb3JlIGRldGFpbHMuCisKKworCis8YSBuYW1lPSJNaWJfY19jb21wbGFpbnNfYWJvdXRfbm90X2hhdmluZ19hX192YWxpZF9PSURfX19fd2hhdF9kb2VzX3RoaXNfbWVhbl8iPgorTWliMmMgY29tcGxhaW5zIGFib3V0IG5vdCBoYXZpbmcgYSAidmFsaWQgT0lEIiAtIHdoYXQgZG9lcyB0aGlzIG1lYW4/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB5b3UgZ2F2ZSBpdCB0aGUgbmFtZSBvZiBhIE1JQiBmaWxlIChvcgorICBtb2R1bGUpLCByYXRoZXIgdGhhbiB0aGUgbmFtZSBvZiBhbiBvYmplY3QgZGVmaW5lZCBpbiB0aGF0IGZpbGUuCisgIE1pYjJjIGV4cGVjdHMgdGhlIG5hbWUgb2YgYSAncm9vdCcgb2JqZWN0LCBhbmQgd2lsbCBnZW5lcmF0ZSBhCisgIHRlbXBsYXRlIGZvciB0aGUgc3ViLXRyZWUgc3RhcnRpbmcgZnJvbSB0aGVyZS4KKworICAgIElmIHlvdSd2ZSBnb3QgYSBmaWxlICdNWS1NSUIudHh0JywgZGVmaW5pbmcgdGhlIE1JQiBtb2R1bGUKKyAgJ01ZLU1JQicgd2hpY2ggY29udGFpbnMgYSBzdWJ0cmVlIGJhc2VkIG9uIHRoZSBvYmplY3QgJ215TWliJywKKyAgdGhlbiB5b3Ugc2hvdWxkIGludm9rZSBtaWIyYyBhcworICAgICAgICAgICAgIm1pYjJjIC4uLi4gbXlNaWIiCisgIHJhdGhlciB0aGFuCisgICAgICAgICAgICAibWliMmMgLi4uLiBNWS1NSUIudHh0IgorICBvciAgICAgICAgIm1pYjJjIC4uLi4gTVktTUlCIgorCisgICAgTm90ZSB0aGF0IHlvdSdsbCBwcm9iYWJseSBhbHNvIGhhdmUgdG8gYWRkIHlvdXIgTUlCIHRvIHRoZSBsaXN0IG9mCisgIE1JQnMgdGhhdCBhcmUgbG9hZGVkIGF1dG9tYXRpY2FsbHksIGluIG9yZGVyIGZvciBtaWIyYyB0byByZWNvZ25pc2UKKyAgdGhlIG5hbWUgb2YgdGhpcyBvYmplY3QuICBTbyB0aGUgY29tbWFuZCB3b3VsZCB0eXBpY2FsbHkgYmUKKyAgICAgICAgICAgICJNSUJTPStNWS1NSUIgbWliMmMgLi4uLiBteU1pYiIKKyAgb3IgICAgICAgICJNSUJTPUFMTCAgICAgbWliMmMgLi4uLiBteU1pYiIKKworCisKKzxhIG5hbWU9IldoeV9kb2Vzbl90X01pYl9jX2xpa2VfdGhlX01JQl9maWxlX0lfbV9naXZpbmdfaXRfIj4KK1doeSBkb2Vzbid0IE1pYjJjIGxpa2UgdGhlIE1JQiBmaWxlIEknbSBnaXZpbmcgaXQ/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIGlzIHRoZSBzYW1lIHByb2JsZW0gYXMgYWJvdmUuICBNaWIyYyB0YWtlcyB0aGUgbmFtZSBvZiBhIE1JQgorICBvYmplY3QsIG5vdCB0aGUgbmFtZSBvZiBhIGZpbGUgKG9yIGEgTUlCIG1vZHVsZSkuICBUcnkgdXNpbmcgdGhlCisgIG5hbWUgb2YgdGhlIE1PRFVMRS1JREVOVElUWSBkZWZpbml0aW9uLgorCisKKworPGEgbmFtZT0iTWliX2NfaWdub3Jlc19teV9NSUJfYW5kX2dlbmVyYXRlc19hX3BhaXJfb2ZfX21pYl9fX19jb2RlX2ZpbGVzX19fV2h5XyI+CitNaWIyYyBpZ25vcmVzIG15IE1JQiBhbmQgZ2VuZXJhdGVzIGEgcGFpciBvZiAnbWliLTInIGNvZGUgZmlsZXMuICBXaHk/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgdGhlIHNhbWUgcHJvYmxlbSBhcyBhYm92ZSAtICBnaXZpbmcgbWliMmMgdGhlIG5hbWUgb2YKKyAgdGhlIGZpbGUgY29udGFpbmluZyB0aGUgTUlCLCByYXRoZXIgdGhhbiBhbiBvYmplY3Qgd2l0aGluIGl0LgorICBFYXJsaWVyIHZlcnNpb25zIG9mIG1pYjJjIGRpZG4ndCBkZXRlY3QgdGhpcyBzaXR1YXRpb24sIGFuZAorICByYXRoZXIgdGhhbiByZXBvcnQgYW4gZXJyb3IsIGl0IG1lcnJpbHkgY29uc3RydWN0ZWQgYSB0ZW1wbGF0ZQorICBmb3IgYSBkZWZhdWx0IHN0YXJ0aW5nIHBvaW50IG9mIHRoZSBtaWItMiBub2RlLgorCisgIE1vcmUgcmVjZW50IHZlcnNpb25zIGlzc3VlIHRoZSBlcnJvciBtZW50aW9uZWQgYWJvdmUsIGluc3RlYWQuCisKKworCis8YSBuYW1lPSJNaWJfY19jb21wbGFpbnNfYWJvdXRfX2NvbmZpZ3VyYXRpb25fZmlsZXNfX19XaGF0X3NfdGhpc19mb3JfIj4KK01pYjJjIGNvbXBsYWlucyBhYm91dCAiY29uZmlndXJhdGlvbiBmaWxlcyIuIFdoYXQncyB0aGlzIGZvcj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgWW91J3ZlIHByb2JhYmx5IHVwZ3JhZGVkIHRvIHRoZSB2NSBuZXQtc25tcCByZWxlYXNlIChmcm9tIHRoZQorICB2NCB1Y2Qtc25tcCByZWxlYXNlKS4gIFRoaXMgaW50cm9kdWNlZCBhIG5ldyBhcHByb2FjaCB0byBhZ2VudAorICBtb2R1bGUgZGV2ZWxvcG1lbnQsIGluY2x1ZGluZyBhIG51bWJlciBvZiBkaWZmZXJlbnQgImhlbHBlcnMiLgorICBUaGUgbWliMmMgdG9vbCBjb21lcyB3aXRoIGNvbmZpZ3VyYXRpb25zIHRvIGdlbmVyYXRlIGNvZGUgZm9yCisgIG1hbnkgb2YgdGhlc2UsIGJ1dCB5b3UnbGwgbmVlZCB0byBzZWxlY3Qgd2hpY2ggaXMgbW9zdCBjb252ZW5pZW50CisgIGZvciB5b3VyIHBhcnRpY3VsYXIgY2FzZS4KKworCisKKzxhIG5hbWU9IldoaWNoX21pYl9jX2NvbmZpZ3VyYXRpb25fZmlsZV9zaG91bGRfSV91c2VfIj4KK1doaWNoIG1pYjJjIGNvbmZpZ3VyYXRpb24gZmlsZSBzaG91bGQgSSB1c2U/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBJZiB0aGUgTUlCIGNvbnRhaW5zIHNjYWxhciBvYmplY3RzLCB0aGVuIHVzZSB0aGUgY29uZmlnIGZpbGUKKyAgJ21pYjJjLnNjYWxhci5jb25mJy4gICBUaGlzIHdpbGwgZ2VuZXJhdGUgdGVtcGxhdGUgaGFuZGxlcnMgZm9yCisgIHRoZXNlIHNjYWxhciBvYmplY3RzIChpZ25vcmluZyBpbnRlcm5hbCBzdHJ1Y3R1cmFsIGRlZmluaXRpb25zLAorICB0YWJsZSBvYmplY3RzIGFuZCBub3RpZmljYXRpb25zKS4KKworICAgIElmIHRoZSBNSUIgY29udGFpbnMgdGFibGVzLCB0aGVuIHRoZXJlIGFyZSBudW1iZXIgb2YgcG9zc2libGUKKyAgY2hvaWNlcy4gIFRoZXJlIGFyZSBhdCBsZWFzdCBmb3VyIGNvbmZpZ3VyYXRpb24gZmlsZXMgdGhhdCB3aWxsCisgIGdlbmVyYXRlIHRlbXBsYXRlIGhhbmRsZXJzIGZvciB0YWJsZSBvYmplY3RzIChpZ25vcmluZyBpbnRlcm5hbAorICBpbnRlcm5hbCBzdHJ1Y3R1cmFsIGRlZmluaXRpb25zLCBzY2FsYXIgb2JqZWN0cyBhbmQgbm90aWZpY2F0aW9ucykuCisgIFdoaWNoIHRvIHVzZSBkZXBlbmRzIG9uIHRoZSBjaGFyYWN0ZXJpc3RpY3Mgb2YgdGhlIHRhYmxlIGJlaW5nCisgIG1vZGVsbGVkIChpbiBwYXJ0aWN1bGFyIHdoZXJlIHRoZSBkYXRhIGlzIGhlbGQpLCBhbmQgcHJlZmVyZW5jZXMKKyAgYXMgdG8gdGhlIHN0eWxlIG9mIGNvZGUgc3RydWN0dXJlLgorCisgICAgVGhlIGNvbmZpZyBmaWxlICdtaWIyYy5jcmVhdGUtZGF0YXNldC5jb25mJyBhc3N1bWVzIHRoYXQgdGhlCisgIGRhdGEgaXMgaGVsZCBpbnRlcm5hbGx5IHdpdGhpbiB0aGUgYWdlbnQsIGFuZCBnZW5lcmF0ZXMgYSBzaW5nbGUKKyAgaGFuZGxlciByb3V0aW5lIGZvciBlYWNoIHRhYmxlLiAgTW9zdCBvZiB0aGUgcHJvY2Vzc2luZyBpcyBoYW5kbGVkCisgIGludGVybmFsbHkgd2l0aGluIHRoZSBhZ2VudCwgc28gdGhpcyBoYW5kbGVyIHJvdXRpbmUgaXMgcmVhbGx5CisgIG9ubHkgbmVlZGVkIGlmIHBhcnRpY3VsYXIgY29sdW1uIG9iamVjdHMgcmVxdWlyZSBzcGVjaWFsIHByb2Nlc3NpbmcuCisgIAorICAgIFRoZSBjb25maWcgZmlsZSAnbWliMmMuaXRlcmF0ZS5jb25mJyBpcyBhaW1lZCBhdCB0YWJsZXMgd2hpY2gKKyAgbW9kZWwgZGF0YSBoZWxkIGV4dGVybmFsIHRvIHRoZSBhZ2VudCAobm90IG5lY2Vzc2FyaWx5IG9yZGVyZWQKKyAgYWNjb3JkaW5nIHRvIHRoZSBNSUIgaW5kZXhpbmcgcmVxdWlyZW1lbnRzKS4gIEl0IGdlbmVyYXRlcyBhIHBhaXIKKyAgb2YgIml0ZXJhdGlvbiIgcm91dGluZXMsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHN0ZXAgdGhyb3VnaCB0aGUKKyAgdGFibGUsIHRvIHNlbGVjdCB0aGUgYXBwcm9wcmlhdGUgcm93IGZvciBhbnkgZ2l2ZW4gcmVxdWVzdC4KKyAgVGhpcyByb3cgaXMgdGhlbiBwYXNzZWQgdG8gdGhlIChzaW5nbGUpIHRhYmxlIGhhbmRsZXIgcm91dGluZSwKKyAgd2hpY2ggaGFuZGxlcyB0aGUgcmVzdCBvZiB0aGUgcHJvY2Vzc2luZyBmb3IgYWxsIG9mIHRoZSBjb2x1bW4KKyAgb2JqZWN0cyAoZm9yIGJvdGggR0VUIGFuZCBTRVQgcmVxdWVzdHMpLgorCisgICAgVGhlcmUgaXMgYWxzbyBhIHNpbWlsYXIgJ21pYjJjLml0ZXJhdGVfYWNjZXNzLmNvbmYnIHdoaWNoCisgIGJ1aWxkcyBvbiB0aGlzLCBidXQgZ2VuZXJhdGVzIGEgc2VyaWVzIG9mIGluZGl2aWR1YWwgcm91dGluZXMKKyAgZm9yIGhhbmRsaW5nIEdFVCBvciBTRVQgcmVxdWVzdHMgZm9yIGVhY2ggY29sdW1uIG9iamVjdC4KKworICAgIFRoZSBjb25maWcgZmlsZSAnbWliMmMuYXJyYXktdXNlci5jb25mJyBpcyBhZ2FpbiBwcmltYXJpbHkKKyAgYWltZWQgYXQgZGF0YSBoZWxkIHdpdGhpbiB0aGUgYWdlbnQgKGFsdGhvdWdoIGl0IGNhbiBhbHNvIGJlIHVzZWQKKyAgd2l0aCBleHRlcm5hbCBkYXRhKS4gIEluIGNvbnRyYXN0IHRvIHRoZSBzaW5nbGUgaGFuZGxlciByb3V0aW5lIG9mCisgIHRoZSBmaXJzdCB0d28gYXBwcm9hY2hlcywgdGhpcyBnZW5lcmF0ZXMgYSBzZXJpZXMgb2Ygc2VwYXJhdGUKKyAgdGVtcGxhdGUgcm91dGluZXMgdG8gaGFuZGxlIGRpZmZlcmVudCBhc3BlY3RzIG9mIHByb2Nlc3NpbmcgdGhlCisgIHJlcXVlc3QuICBBcyB3aXRoIHRoZSAnbWliMmMuY3JlYXRlLWRhdGFzZXQuY29uZicgYXBwcm9hY2gsIG11Y2gKKyAgb2YgdGhlIHByb2Nlc3NpbmcgaXMgaGFuZGxlZCBpbnRlcm5hbGx5LiAgTWFueSBvZiB0aGUgZ2VuZXJhdGVkCisgIHJvdXRpbmVzIGNhbiBiZSBkZWxldGVkIGlmIHRoZSByZWxldmFudCBvYmplY3RzIG5lZWQgbm8gc3BlY2lhbAorICBwcm9jZXNzaW5nLgorIAorICAgIFRoZSBtb3N0IHJlY2VudCAnbWZkJyAob3IgJ01JQnMgRm9yIER1bW1pZXMnKSBjb25maWd1cmF0aW9uIHRha2VzCisgIHRoaXMgaWRlYSBvZiBzbWFsbCAob2Z0ZW4gb3B0aW9uYWwpICdzdHViJyByb3V0aW5lcyBldmVuIGZ1cnRoZXIuCisgIFRoaXMgZ2VuZXJhdGVzIGEgY29sbGVjdGlvbiBvZiBzZXBhcmF0ZSAqZmlsZXMqLCBlYWNoIG9mIHdoaWNoCisgIGltcGxlbWVudHMgYSBwYXJ0aWN1bGFyIGFzcGVjdCBvZiB0aGUgdGFibGUgcHJvY2Vzc2luZy4gIFRoZSBpZGVhCisgIGhlcmUgaXMgdG8gaGF2ZSBsb3RzIG9mICJiYWJ5IHN0ZXBzIiwgcmF0aGVyIHRoYW4gaGF2ZSBhbGwgdGhlCisgIHByb2Nlc3NpbmcgZGVhbHQgd2l0aCBpbiBvbmUgcGxhY2UuCisKKyAgICBUaGVyZSBhcmUgYWxzbyBzb21lIG90aGVyICdtaWIyYycgY29uZmlndXJhdGlvbiBmaWxlcywgZm9yIG1vcmUKKyAgc3BlY2lhbGlzZWQgcmVxdWlyZW1lbnRzIChlLmcuIGdlbmVyYXRpbmcgbm90aWZpY2F0aW9ucywgIndhdGNoZWQiCisgIHNjYWxhciBvYmplY3RzLCBvciBjb2RlIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSB2NCBVQ0QgYWdlbnQKKyAgQVBJKSwgYnV0IHRoZXNlIGFyZSB0aGUgbWFpbiBjaG9pY2VzIGZvciBtb3N0IHJlcXVpcmVtZW50cy4KKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9oYXZlX01pYl9jX2dlbmVyYXRlX2NvZGVfZm9yX2JvdGhfc2NhbGFyc19hbmRfdGFibGVzXyI+CitIb3cgY2FuIEkgaGF2ZSBNaWIyYyBnZW5lcmF0ZSBjb2RlIGZvciBib3RoIHNjYWxhcnMgYW5kIHRhYmxlcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGUgdjUgTmV0LVNOTVAgbWliMmMgdG9vbCB1c2VzIHNlcGFyYXRlIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8KKyAgZ2VuZXJhdGUgY29kZSBmb3Igc2NhbGFyIG9iamVjdHMsIGFuZCBmb3IgdGFibGVzLiAgVGhpcyBtZWFucyB0aGF0CisgIGl0J3Mgbm90IHBvc3NpYmxlIHRvIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGUgYSBzaW5nbGUgY29kZSBmaWxlCisgIHRoYXQgc3VwcG9ydHMgYm90aCBzY2FsYXJzIGFuZCB0YWJsZXMuCisKKyAgICBJbnN0ZWFkLCBpdCdzIG5lY2Vzc2FyeSB0byBnZW5lcmF0ZSB0aGUgdHdvIGNvZGUgZmlsZXMgc2VwYXJhdGVseSwKKyAgYW5kIHRoZW4gY29tYmluZSB0aGUgdHdvIGZpbGVzIG1hbnVhbGx5LiAgVGhlIGhhbmRsZXIgcm91dGluZXMgZnJvbQorICBvbmUgZmlsZSBjYW4gc2ltcGx5IGJlIGluY2x1ZGVkIGluIHRoZSBvdGhlciB3aXRoIG5vIGNoYW5nZXMgbmVlZGVkLgorICBUaGUgY29ycmVzcG9uZGluZyByZWdpc3RyYXRpb24gb2YgdGhlc2UgaGFuZGxlcnMgY2FuIHRoZW4gYmUgY29waWVkCisgIGZyb20gdGhlIGZpcnN0IGluaXRpYWxpc2F0aW9uIHJvdXRpbmUgaW50byB0aGUgc2Vjb25kLgorCisKKworPGEgbmFtZT0iQXJlX3RoZXJlX2FueV9leGFtcGxlc19fb3JfZG9jdW1lbnRhdGlvbl8iPgorQXJlIHRoZXJlIGFueSBleGFtcGxlcywgb3IgZG9jdW1lbnRhdGlvbj8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIE1vc3Qgb2YgdGhlIE1JQiBtb2R1bGVzIHNoaXBwZWQgd2l0aCB0aGUgTmV0LVNOTVAgYWdlbnQgc3RpbGwKKyAgdXNlIHRoZSB2NCAidHJhZGl0aW9uYWwiIE1JQiBtb2R1bGUgQVBJLCBidXQgYSBmZXcgdXNlIG9uZSBvZiB0aGUKKyAgbmV3ZXIgdjUgaGVscGVyLWJhc2VkIGhhbmRsZXJzLgorCisgICAgVGhlIGRhdGFzZXQgaGFuZGxlciBpcyB1c2VkIGluIHRoZSB0d28gRElTTUFOLUVWRU5ULU1JQiBtb2R1bGVzCisgIChkaXNtYW4vbXRlRXZlbnRUYWJsZSBhbmQgZGlzbWFuL210ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUpLCBhcworICB3ZWxsIGFzIHRoZSAnc25tcHRyYXBkJyBpbXBsZW1lbnRhdGlvbiBvZiBsb2dnaW5nIGluY29taW5nIHRyYXBzCisgIChhcHBzL25vdGlmaWNhdGlvbl9sb2cpCisKKyAgICBUaGUgYmFzaWMgaXRlcmF0b3IgaGFuZGxlciBpcyB1c2VkIGluIGEgbnVtYmVyIG9mIG1vZHVsZXMsIHN1Y2gKKyAgYXMgdGhlIGxhdGVzdCBUQ1AgYW5kIFVEUCB0YWJsZSBpbXBsZW1lbnRhdGlvbnMgKG1pYklJL3RjcFRhYmxlICYKKyAgbWliSUkvdWRwVGFibGUpLCBWQUNNIGNvbnRleHQgaGFuZGxpbmcgKG1pYklJL3ZhY21fY29udGV4dCkgYW5kCisgIHZhcmlvdXMgdGFibGVzIHJlbGF0aW5nIHRvIGFnZW50IGludGVybmFscyAoYWdlbnQvKikuICBUaGVzZSBzaG93CisgIGEgbnVtYmVyIG9mIGRpZmZlcmVudCBhcHByb2FjaGVzIHRvIHVzaW5nIHRoZSBpdGVyYXRvciBoZWxwZXIsIHNvCisgIGl0J3Mgd29ydGggY29tcGFyaW5nIHRoZW0uCisKKyAgICBUaGUgdHdvIGV4YW1wbGVzL25ldFNubXBIb3N0c1RhYmxlKiBtb2R1bGVzIHByb3ZpZGUgYSBjb250cmFzdAorICBiZXR3ZWVuIHRoZSBpdGVyYXRvciBhbmQgaXRlcmF0b3JfYWNjZXNzIGhlbHBlcnMuCisKKyAgICBUaGUgTmV0LVNOTVAgYWdlbnQgZG9lcyBub3QgY3VycmVudGx5IGluY2x1ZGUgYW55IE1JQiBtb2R1bGVzCisgIHVzaW5nIHRoZSBhcnJheS11c2VyIGNvbnRhaW5lci1iYXNlZCBoZWxwZXIuICBUaGUgYmVzdCBleGFtcGxlcworICBvZiB0aGlzIGFyZSB0byBiZSBmb3VuZCBpbiB0aGUgbmV0LXBvbGljeSBwcm9qZWN0LgorICBTZWUgaHR0cDovL25ldC1wb2xpY3kuc291cmNlZm9yZ2UubmV0LworCisKKworPGEgbmFtZT0iSV92ZV9jcmVhdGVkX2FfbmV3X21vZHVsZV93aXRoX19taWJfY19fYnV0X2l0X2RvZXNuX3Rfd29ya19fX1doeV9ub3RfIj4KK0kndmUgY3JlYXRlZCBhIG5ldyBtb2R1bGUgd2l0aCAnbWliMmMnIGJ1dCBpdCBkb2Vzbid0IHdvcmsuICBXaHkgbm90PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFJlbWVtYmVyIHRoYXQgJ21pYjJjJyBnZW5lcmF0ZXMgYSB0ZW1wbGF0ZSBmb3IgdGhlIE1JQiBpbXBsZW1lbnRhdGlvbi4KKyAgSXQgZG9lc24ndCBmaWxsIGluIGFsbCB0aGUgZGV0YWlscyBmb3IgeW91LiAgSW4gcGFydGljdWxhciwgaXQgY2Fubm90CisgIGtub3cgaG93IHRvIG9idGFpbiB0aGUgaW5mb3JtYXRpb24gbmVlZGVkIHRvIGFuc3dlciBwYXJ0aWN1bGFyIHF1ZXJpZXMuCisgIFRoYXQncyB0aGUgam9iIG9mIHRoZSBNSUIgbW9kdWxlIHByb2dyYW1tZXIgKHlvdSEpIC0gIFNlZSB0aGUgcHJldmlvdXMKKyAgcXVlc3Rpb24gZm9yIGhvdyB0byBwcm9jZWVkLgorCisgICAgRXNzZW50aWFsbHkgbWliMmMgaGFuZGxlcyB0aGUgc3ludGF4IG9mIHRoZSBNSUIgaW1wbGVtZW50YXRpb24sCisgIGxlYXZpbmcgeW91IHRvIGNvbmNlbnRyYXRlIG9uIHRoZSBzZW1hbnRpY3MuCisKKworCis8YSBuYW1lPSJXaGVyZV9zaG91bGRfSV9wdXRfdGhlX2ZpbGVzX3Byb2R1Y2VkX2J5X19taWJfY19fIj4KK1doZXJlIHNob3VsZCBJIHB1dCB0aGUgZmlsZXMgcHJvZHVjZWQgYnkgJ21pYjJjJz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgIElmIHlvdSdyZSB1c2luZyB0aGUgbWFpbiBzb3VyY2UgdHJlZSB0byBjb21waWxlIHlvdXIgbmV3IG1vZHVsZSwgdGhlbgorICBwdXQgdGhlc2UgdHdvIGZpbGVzIChteW1pYi5bY2hdKSBpbiB0aGUgZGlyZWN0b3J5ICdhZ2VudC9taWJncm91cCcuCisgIFlvdSBzaG91bGQgdGhlbiByZS1ydW4gY29uZmlndXJlIHRvIGFkZCBpbiB5b3VyIG5ldyBtb2R1bGUKKyAgKCJjb25maWd1cmUgLS13aXRoLW1pYi1tb2R1bGVzPW15bWliIikgYW5kIHJlY29tcGlsZS4KKworICAgIElmIHlvdSd2ZSBnb3QgYSBudW1iZXIgb2YgbmV3IG1vZHVsZXMgdG8gYWRkLCBpdCBtaWdodCBiZQorICBzZW5zaWJsZSB0byBwdXQgdGhlbSBhbGwgaW50byBhIHNpbmdsZSBzdWJkaXJlY3Rvcnkgb2YgJ21pYmdyb3VwJy4KKyAgVGhlbiBjcmVhdGUgYSBoZWFkZXIgZmlsZSwgbGlzdGluZyB0aGUgaW5kaXZpZHVhbCBjb21wb25lbnRzLgorICBUaGlzIG1pZ2h0IGxvb2sgc29tZXRoaW5nIGxpa2U6CisKKwkJY29uZmlnX3JlcXVpcmUobXltaWIvbXlPYmplY3RzKQorCQljb25maWdfcmVxdWlyZShteW1pYi9teVRhYmxlKQorCQljb25maWdfcmVxdWlyZShteW1pYi9teU90aGVyVGFibGUpCisKKyAgSWYgdGhpcyB3YXMgc2F2ZWQgYXMgdGhlIGZpbGUgJ215bWliLmgnLCB0aGVuIHRoZSBzYW1lIGNvbmZpZ3VyZQorICBsaW5lIGdpdmVuIGFib3ZlLCB3b3VsZCBwdWxsIGluIGFsbCB0aHJlZSBtb2R1bGVzLiAgU2VlIHRoZQorICBjdXJyZW50IGNvbnRlbnRzIG9mICdhZ2VudC9taWJncm91cCcgZm9yIGV4YW1wbGVzIG9mIHRoaXMuCisKKworCis8YSBuYW1lPSJNaWJfY19vbmx5X2hhbmRsZXNfYV9zaW5nbGVfdGFibGVfaW5fbXlfTUlCX19Ib3dfY2FuX0lfZml4X3RoaXNfIj4KK01pYjJjIG9ubHkgaGFuZGxlcyBhIHNpbmdsZSB0YWJsZSBpbiBteSBNSUIuIEhvdyBjYW4gSSBmaXggdGhpcz8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgVGhpcyB3YXMgYSBidWcgaW4gdGhlIG1pYjJjIHNjcmlwdCwgd2hpY2ggd2FzIGNvcnJlY3RlZCB3aXRoCisgIHRoZSA0LjIgcmVsZWFzZS4gIEVhcmxpZXIgdmVyc2lvbnMgY2FuIGJlIGZpeGVkIGJ5IGFwcGx5aW5nIHRoZQorICBmb2xsb3dpbmcgcGF0Y2g6CisKKwkkIGRpZmYgLXUgbWliMmMuY2xuIG1pYjJjCisJLS0tIG1pYjJjLmNsbiAgIFdlZCBOb3YgMjkgMTU6MTI6NDcgMjAwMAorCSsrKyBtaWIyYyAgICAgICBXZWQgTm92IDI5IDE1OjEzOjE4IDIwMDAKKwlAQCAtMTMyLDYgKzEzMiw2IEBACisJICM9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCSBmb3JlYWNoICR2dGFibGUgKEB0YWJsZV9saXN0KSB7CisJICAgICBmb3JlYWNoICRwdGFibGUgKEBwcm9jZXNzdGFibGUpIHsKKwktICAgICAgICR2YXJpYWJsZXN7JHB0YWJsZX17J3Byb2Nlc3NlZCd9ID0gCisJKyAgICAgICAkdmFyaWFibGVzeyRwdGFibGV9eydwcm9jZXNzZWQnfSAuPSAKKwkgICAgICAgICAgICAoZXZhbCAiXCIkdmFyaWFibGVzeyRwdGFibGV9eydjb2RlJ31cIiIpIC4gIlxuXG4iOworCSAgICAgfQorCisKKworPGEgbmFtZT0iSG93X2Nhbl9JX3N1cHBvcnRfYV9sYXJnZV90YWJsZV9fd2l0aF9tb3JlX3RoYW5fX19fX2NvbHVtbl9vYmplY3RzXyI+CitIb3cgY2FuIEkgc3VwcG9ydCBhIGxhcmdlIHRhYmxlLCB3aXRoIG1vcmUgdGhhbiAyNTYgY29sdW1uIG9iamVjdHM/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIFRoaXMgaXMgYSBwcm9ibGVtIChhdCBsZWFzdCBhcHBhcmVudGx5KSB3aXRoIHRoZSB2NCBVQ0QgbW9kdWxlCisgIEFQSSwgd2hpY2ggdXNlcyBhICJtYWdpYyBudW1iZXIiIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4gdGhlIHZhcmlvdXMKKyAgY29sdW1uIG9iamVjdHMgaW1wbGVtZW50ZWQgYnkgYSBjb21tb24gdmFyaWFibGUgaGFuZGxpbmcgcm91dGluZS4KKyAgU2luY2UgdGhpcyBmaWVsZCBpcyBkZWZpbmVkIGFzIGFuIHVuc2lnbmVkIGNoYXJhY3RlciwgaXQgY2FuIG9ubHkKKyAgdGFrZSB2YWx1ZXMgMC0yNTUuICAgU28gaXQgd291bGQgYXBwZWFyIHRoYXQgdGhlIGFnZW50IGNhbm5vdAorICBzdXBwb3J0IHRhYmxlcyAob3Igc2NhbGFyIGdyb3Vwcykgd2l0aCBtb3JlIHRoYW4gMjU2IG9iamVjdHMsCisgIHNpbmNlIHRoaXMgd291bGQgc3RhcnQgdG8gZHVwbGljYXRlIHRoZXNlIG1hZ2ljIG51bWJlcnMuCisKKyAgICBIb3dldmVyLCB0aGUgYWdlbnQgZG9lc24ndCBhY3R1YWxseSBjYXJlIHdoaWNoIHJvdXRpbmUgaW1wbGVtZW50cworICBhIGdpdmVuIG9iamVjdCwgYW5kIG1hZ2ljIG51bWJlcnMgb25seSBuZWVkIHRvIGJlIHVuaXF1ZSB3aXRoaW4gYQorICBzaW5nbGUgdmFyaWFibGUgaGFuZGxpbmcgcm91dGluZS4gIFNvIGl0IGlzIGFjdHVhbGx5IHBlcmZlY3RseQorICBwb3NzaWJsZSB0byBpbXBsZW1lbnQgYSBsYXJnZXIgdGFibGUgYnkgc3BsaXR0aW5nIGl0IGJldHdlZW4gdHdvCisgIChvciBtb3JlKSB2YXJpYWJsZSBoYW5kbGluZyByb3V0aW5lcy4gIFRoZXNlIGNhbiB0aGVuIHJlLXVzZSB0aGUKKyAgbWFnaWMgbnVtYmVycyBxdWl0ZSBzYWZlbHk6CisKKyAgICBzdHJ1Y3QgdmFyaWFibGUxIFtdID0geworICAgICAgIHtNQUdJQzEsICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwgdmFyX215Zmlyc3QsICAxLCB7ICAxfX0sCisgICAgICAge01BR0lDMiwgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLCB2YXJfbXlmaXJzdCwgIDEsIHsgIDJ9fSwKKyAgICAJCToKKyAgICAgICB7TUFHSUMyNTUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsIHZhcl9teWZpcnN0LCAgMSwgezI1NX19LAorICAgICAgIHtNQUdJQzEsICAgQVNOX0lOVEVHRVIsIE5FVFNOTVBfT0xEQVBJX1JXUklURSwgdmFyX215c2Vjb25kLCAxLCB7MjU2fX0sCisgICAgICAge01BR0lDMiwgICBBU05fSU5URUdFUiwgTkVUU05NUF9PTERBUElfUldSSVRFLCB2YXJfbXlzZWNvbmQsIDEsIHsyNTd9fSwKKyAgICAJCToKKyAgICAgICB7TUFHSUMyNTUsIEFTTl9JTlRFR0VSLCBORVRTTk1QX09MREFQSV9SV1JJVEUsIHZhcl9teXNlY29uZCwgMSwgezUxMH19CisgICAgfTsKKworICBBbGwgdGhhdCBtYXR0ZXJzIGlzIHRoYXQgYSBnaXZlbiBtYWdpYyBudW1iZXIgaXNuJ3QgcmUtdXNlZCB3aXRoaW4KKyAgdGhlIHNhbWUgdmFyaWFibGUgaGFuZGxpbmcgcm91dGluZS4gIFRoZSB2NSB0YWJsZSBoYW5kbGVycyB0eXBpY2FsbHkKKyAgdXNlIGFuIGludGVnZXIgdmFyaWFibGUgZm9yIGhvbGRpbmcgY29sdW1uIGluZm9ybWF0aW9uLCBzbyBhcmVuJ3QKKyAgc3ViamVjdCB0byB0aGUgc2FtZSBsaW1pdGF0aW9ucy4KKworICAgIFRob3VnaCBJJ2QgaGF2ZSB0byBxdWVzdGlvbiB3aGV0aGVyIGhhdmluZyBzdWNoIGEgd2lkZSB0YWJsZSBpcworICBuZWNlc3NhcmlseSBhIHBhcnRpY3VsYXJseSBnb29kIGRlc2lnbiBzdHJhdGVneSEKKworCisKKzxhIG5hbWU9Ikhvd19jYW5fSV9nZXRfdGhlX2FnZW50X3RvX2dlbmVyYXRlX2FfdHJhcF9fb3JfaW5mb3JtX18iPgorSG93IGNhbiBJIGdldCB0aGUgYWdlbnQgdG8gZ2VuZXJhdGUgYSB0cmFwIChvciBpbmZvcm0pPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBHZW5lcmF0aW5nIGEgdHJhcCBpcyByZWFzb25hYmx5IHNpbXBsZSAtIGp1c3QgY2FsbCBvbmUgb2YgdGhlCisgIHRyYXAgQVBJIHJvdXRpbmVzICdzZW5kX2Vhc3lfdHJhcCgpJyBvciAnc2VuZF92MnRyYXAnIHdpdGggdGhlCisgIHJlbGV2YW50IGluZm9ybWF0aW9uIChnZW5lcmljIGFuZCBzcGVjaWZpYyB0cmFwIHZhbHVlcywgb3IgYQorICB2YXJiaW5kIGxpc3QgcmVzcGVjdGl2ZWx5KS4gIFNlZSB0aGUgJ3NubXBfdHJhcF9hcGkoMyknIG1hbiBwYWdlCisgIGZvciBkZXRhaWxzLgorCisgICAgVGhlICdtaWIyYy5ub3RpZnkuY29uZicgY29uZmlndXJhdGlvbiBmaWxlIGNhbiBiZSB1c2VkIHRvCisgIGNvbnN0cnVjdCBhIHN1aXRhYmxlIHRlbXBsYXRlIHJvdXRpbmUgZm9yIGdlbmVyYXRpbmcgYSB0cmFwLAorICBpbmNsdWRpbmcgYnVpbGRpbmcgdGhlIHZhcmlhYmxlIGxpc3QgZnJvbSB0aGUgTUlCIHRyYXAKKyAgZGVmaW5pdGlvbi4gIFRoZXNlIHZhcmlhYmxlcyBjYW4gdGhlbiBiZSBnaXZlbiBzdWl0YWJsZSB2YWx1ZXMsCisgIGJlZm9yZSBpbnZva2luZyB0aGUgJ3NlbmRfdjJ0cmFwJyBjYWxsIHRvIGFjdHVhbGx5IHNlbmQgdGhlIHRyYXAuCisKKyAgICBOb3RlIHRoYXQgdGhlc2UgQVBJcyBhcmUgb25seSBhdmFpbGFibGUgd2l0aGluIHRoZSBhZ2VudCAob3IKKyAgc3ViYWdlbnRzKSwgYW5kIGFyZSBub3QgYXZhaWxhYmxlIHRvIHN0YW5kLWFsb25lIGFwcGxpY2F0aW9ucy4KKyAgVGhlIGNvZGUgZm9yICdzbm1wdHJhcCcgc2hvd3MgYW4gYXBwcm9hY2ggdG8gdXNlIGluIHN1Y2ggYSBjYXNlLgorCisgICAgRGV0ZXJtaW5pbmcgX3doZW5fIHRvIGdlbmVyYXRlIHRoZSB0cmFwIChlaXRoZXIgZGlyZWN0bHkgb3IKKyAgdmlhIHRoZSBtaWIyYy1nZW5lcmF0ZWQgcm91dGluZSkgaXMgb2Z0ZW4gaGFyZGVyLiAgSWYgdGhlIHRyYXAKKyAgaXMgZ2VuZXJhdGVkIGluIHJlc3BvbnNlIHRvIHNvbWUgYWN0aW9uIHdpdGhpbiB0aGUgYWdlbnQsIChlLmcuCisgIGFzIHRoZSByZXN1bHQgb2YgYSBTRVQpLCB0aGVuIHRoaXMgaXNuJ3QgdG9vIG11Y2ggb2YgYSBwcm9ibGVtLgorCisgICAgQnV0IGlmIHRoZSB0cmFwIGlzIGludGVuZGVkIHRvIHJlcG9ydCBvbiBhIGNoYW5nZSBvZiBzdGF0dXMKKyAgKGUuZy4gYSBuZXR3b3JrIGludGVyZmFjZSBnb2luZyB1cCBvciBkb3duLCBvciBhIGRpc2sgZmlsbGluZyB1cCksCisgIHRoZW4gYWN0dWFsbHkgZGV0ZWN0aW5nIHRoaXMgaXMgbm9uLXRyaXZpYWwuICAgSXQncyBuZWNlc3NhcnkgdG8KKyAgcG9sbCB0aGUgdmFsdWUocykgb24gYSByZWd1bGFyIGJhc2lzLCBzYXZlIHRoZSByZXN1bHRzIGFuZCBjb21wYXJlCisgIHRoZW0gd2l0aCB0aGUgbmV3IHZhbHVlcyB0aGUgbmV4dCB0aW1lIHJvdW5kLgorCisgICAgV2l0aCB0aGUgdjQgVUNEIGFnZW50LCB0aGlzIHdvdWxkIGhhdmUgdG8gYmUgZG9uZSBtYW51YWxseSwKKyAgdXNpbmcgdGhlIHJvdXRpbmVzIGRvY3VtZW50ZWQgaW4gJ3NubXBfYWxhcm0oMyknLiAgVGhlIHY1IE5ldC1TTk1QCisgIGFnZW50IGhhcyBpbXBsZW1lbnRlZCB0aGUgRGlzdHJpYnV0ZWQgTWFuYWdlbWVudCBFdmVudCBNSUIsIHdoaWNoCisgIHByb3ZpZGVzIHRoaXMgZnVuY3Rpb25hbGl0eSBpbiBhIGZsZXhpYmxlLCBzdGFuZGFyZGlzZWQgbWFubmVyLgorICBTZWUgdGhlICdzbm1wZC5jb25mKDUpJyBtYW4gcGFnZSAodW5kZXIgRElTTUFOLUVWRU5ULU1JQikgZm9yCisgIGRldGFpbHMgKGluY2x1ZGluZyB0aGUgbmVlZCBmb3IgYW4gJ2FnZW50U2VjTmFtZScgc2V0dGluZykuCisgIAorCisKKzxhIG5hbWU9IldoYXRfaWZfSV9tX3VzaW5nX2FuX0FnZW50WF9zdWJfYWdlbnRfaW5zdGVhZF8iPgorV2hhdCBpZiBJJ20gdXNpbmcgYW4gQWdlbnRYIHN1Yi1hZ2VudCBpbnN0ZWFkPworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGF0IGRvZXNuJ3QgbWF0dGVyIC0gdGhlIHJvdXRpbmVzIGRlc2NyaWJlZCBpbiAnc25tcF90cmFwX2FwaSgzKScKKyAgY2FuIHN0aWxsIGJlIHVzZWQsIGFuZCB0aGUgc3ViYWdlbnQgd2lsbCBkbyB0aGUgUmlnaHQgVGhpbmcuCisgIAorICBPbmUgb2YgdGhlIG9yaWdpbmFsIGRlc2lnbiBhaW1zIG9mIHRoZSBBZ2VudFggc3VwcG9ydCB3YXMgdGhhdCB0aGlzCisgIHNob3VsZCBiZSB0cmFuc3BhcmVudCB0byBhIE1JQiBtb2R1bGUgaW1wbGVtZW50ZXIuICBUaGUgYWdlbnQtbW9kdWxlCisgIGludGVyZmFjZSBzaG91bGQgYmUgaW5kZXBlbmRlbnQgb2YgdGhlIHByb3RvY29sIHVzZWQgdG8gcmVjZWl2ZSB0aGUKKyAgb3JpZ2luYWwgcmVxdWVzdC4gIFNvIHRoZSBleGFjdCBzYW1lIE1JQiBtb2R1bGUgY29kZSBjb3VsZCBiZSB1c2VkCisgIHdpdGhpbiBhIHRyYWRpdGlvbmFsIFNOTVAtb25seSBhZ2VudCwgb3IgYW4gQWdlbnRYIHN1YmFnZW50LCB3aXRoIG5vCisgIGNoYW5nZXMgbmVlZGVkLgorICAgIEluIGZhY3QsIHRoZSBtYWluIGFnZW50IHN1cHBsaWVkIGFzIHBhcnQgb2YgdGhlIHBhY2thZ2UgY2FuIGluZGVlZAorICBiZSBydW4gYXMgYW4gU05NUCBhZ2VudCBvciBhbiBBZ2VudFggc3ViYWdlbnQsIHNpbXBseSBiYXNlZCBvbiBjb21tYW5kCisgIGxpbmUgZmxhZ3MgKG9yIHNpbWlsYXIgY29uZmlndXJhdGlvbiBvcHRpb25zKS4KKworCisKKzxhIG5hbWU9Ik1JU0MiPgorTUlTQworPT09PT09CisKKzxhIG5hbWU9IldoeV9hcmVfcGFja2V0c19yZXF1ZXN0aW5nX3RoZV9zYW1lX2luZm9ybWF0aW9uX2xhcmdlcl93aXRoX1VDX0RhdmlzX1NOTVBfIj4KK1doeSBhcmUgcGFja2V0cyByZXF1ZXN0aW5nIHRoZSBzYW1lIGluZm9ybWF0aW9uIGxhcmdlciB3aXRoIFVDLURhdmlzIFNOTVA/CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICBUaGlzIHNob3VsZG4ndCBoYXBwZW4gd2l0aCB2ZXJzaW9uIDQuMiBvciBsYXRlciwgYnV0IGZvciBvbGRlcgorICB2ZXJzaW9uIHRoZSBmb2xsb3dpbmcgc3RpbGwgYXBwbGllczoKKworICAgIFNvbWUgdXNlcnMgbm90ZSB0aGF0IFVDRC1TTk1QIGFwcGxpY2F0aW9ucyBhbHdheXMgZ2VuZXJhdGUgbGFyZ2VyIFBEVXMKKyAgdGhhbiBvdGhlciBTTk1QIHBhY2thZ2VzLCBldmVuIGlmIHRoZSBpbmZvcm1hdGlvbiByZXF1ZXN0ZWQgaXMgdGhlIHNhbWUuCisgIEZ1cnRoZXIsIHRoZXJlIGFyZSBzb21lIGFnZW50cyB0aGF0IHJlZnVzZSBQRFVzIGZyb20gVUNELVNOTVAgYXBwbGljYXRpb25zCisgIGJ1dCBhY2NlcHQgUERVcyBmcm9tIG90aGVyIGFwcGxpY2F0aW9ucy4KKworICBVQ0QtU05NUCBpcyBiYXNlZCBvbiB0aGUgQ01VIGNvZGUgZnJvbSBhIGxvbmcgdGltZSBhZ28gd2hpY2ggZW5jb2RlZCB0aGluZ3MKKyAgdXNpbmcgdGhlIGxvbmcgZm9ybSBvZiBsZW5ndGggZW5jb2RpbmcuICBTb21lIGFnZW50cyB1c2UgdGhlIHNob3J0IGZvcm0KKyAgb2YgbGVuZ3RoIGVuY29kaW5nIG9ubHksIGFuZCBkbyBub3QgdW5kZXJzdGFuZCB0aGUgbG9uZyBmb3JtLgorCisgICAgVGhpcyBzaG91bGQgbm90IGJlIGEgcHJvYmxlbSB3aXRoIFVDRCB2NC4yIG9yIGhpZ2hlciwgb3IgdGhlIE5ldC1TTk1QCisgIHJlbGVhc2VzLgorCisKKworPGEgbmFtZT0iV2hhdF9BU05fX19wYXJzZXJfaXNfdXNlZF8iPgorV2hhdCBBU04uMSBwYXJzZXIgaXMgdXNlZD8KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICBUaGUgcGFyc2VyIHVzZWQgYnkgYm90aCB0aGUgYWdlbnQgYW5kIGNsaWVudCBwcm9ncmFtcyBpcyBjb2RlZCBieSBoYW5kLgorICBUaGlzIHBhcnNlciBoYXMgcmVjZW50bHkgYmVlbiByZS12YW1wZWQgdG8gYWxsb3cgY29udHJvbCBvZiB3aGljaCBvZiAKKyAgdGhlIGF2YWlsYWJsZSBNSUJzIHNob3VsZCBiZSBpbmNsdWRlZCwgYW5kIHRvIGhhbmRsZSBkdXBsaWNhdGUgb2JqZWN0CisgIHN1YmlkZW50aWZpZXJzLgorICAgIFRoZSBzb3VyY2UgY29kZSBjYW4gYmUgZm91bmQgaW4gdGhlIHNubXBsaWIgZGlyZWN0b3J5IChpbiAncGFyc2UuYycpLAorICBhbmQgdGhlIHBhcnNlciBpcyB1c3VhbGx5IGJ1bmRsZWQgaW50byB0aGUgbGlicmFyeSAnbGlic25tcC5hJworCisgICAgTm90ZSB0aGF0IHRoZSBwYXJzZXIgYXR0ZW1wdHMgdG8gYmUgZmFpcmx5IGZvcmdpdmluZyBvZiBzb21lIGNvbW1vbgorICBlcnJvcnMgYW5kIGluY29tcGF0aWJpbGl0aWVzIGluIE1JQiBmaWxlcy4gIFRoZSBOZXQtU05NUCB0b29scyBhY2NlcHRpbmcKKyAgYSBNSUIgZmlsZSB3aXRob3V0IGNvbXBsYWludCBkb2VzICpub3QqIGltcGx5IHRoYXQgdGhlIE1JQiBpcyBzdHJpY3RseQorICBjb3JyZWN0LgorICAgIENlcnRhaW4gTUlCcyBtYXkgbmVlZCBzb21lIGFtZW5kbWVudHMgdG8gYWxsb3cgdGhlbSB0byBiZSByZWFkCisgIGNvcnJlY3RseSBieSB0aGUgcGFyc2VyLiAgQ29udGFjdCB0aGUgY29kZXJzJyBsaXN0IGZvciBhZHZpY2UuCisKKworCis8YSBuYW1lPSJXaGF0X2lzX3RoZV9PZmZpY2lhbF9TbG9nYW5fb2ZfdGhlX25ldF9zbm1wX2NvZGVyc19saXN0XyI+CitXaGF0IGlzIHRoZSBPZmZpY2lhbCBTbG9nYW4gb2YgdGhlIG5ldC1zbm1wLWNvZGVycyBsaXN0PworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICJUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBpcyBub24tb2J2aW91cyBhbmQgbWF5IG5lZWQgdG8gYmUgaW1wcm92ZWQuIgorCSh3aXRoIHRoYW5rcyB0byBSb2hpdCBEdWJlKQorCisgIEFuZCBhbiBhbHRlcm5hdGUsIGFkZGVkIDI2LUFwci0yMDAwOgorICAKKyAgIkluIHRoZW9yeSwgaXQgc2hvdWxkbid0IGJlIHRoYXQgaGFyZCwgYnV0IGl0IGp1c3QgbmVlZHMgdG8gYmUgZG9uZS4iCisKKworCis8L3ByZT48aHI+CitMYXN0IG1vZGlmaWVkOiBTYXQgTWFyIDIwIDIxOjUzOjM5IDIwMDQKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL0FkZDJQYXRoLm5zaSBiL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL0FkZDJQYXRoLm5zaQppbmRleCAzZjhkNjQwLi4xMDRkYzE2IDEwMDY0NAotLS0gYS93aW4zMi9kaXN0L2luc3RhbGxlci9BZGQyUGF0aC5uc2kKKysrIGIvd2luMzIvZGlzdC9pbnN0YWxsZXIvQWRkMlBhdGgubnNpCkBAIC0xMSwxMSArMTEsMzIgQEAKICAgUHVzaCAkMQogICBQdXNoICQyCiAgIFB1c2ggJDMKKyAgUHVzaCAkNAorICBQdXNoICQ1CiAKICAgIyBkb24ndCBhZGQgaWYgdGhlIHBhdGggZG9lc24ndCBleGlzdAogICBJZkZpbGVFeGlzdHMgJDAgIiIgQWRkVG9QYXRoX2RvbmUKLQorICAKICAgUmVhZEVudlN0ciAkMSBQQVRICisgIAorICAjIElmIGxlbmd0aCBvZiBQQVRIIHJldHVybmVkIGlzIDAsIHdlIGNvdWxkbid0IHJlYWQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlICh1bmxpa2VseSkgb3IKKyAgIyBpdCdzIGVtcHR5IGJlY2F1c2UgaXQncyA+IDEwMjQgY2hhcmFjdGVycyBsb25nLiAgTlNJUyBvbmx5IHN1cHBvcnRzIHZhcmlhYmxlcyB1cCB0byAxMDI0IAorICAjIGNoYXJhY3RlcnMgdW5sZXNzIHdlJ3JlIHVzaW5nIHRoZSA4MTkyIGxlbmd0aCB2ZXJzaW9uLCB3aGljaCB3ZSBhcmUgbm90LiAgCisgICMgTm90ZTogIE9uIFhQIChhdCBsZWFzdCksIHRoZSBzdHJpbmcgcmVhZCB1c2luZyBSZWFkRW52U3RyIGlzIHNob3J0ZXIgdGhhbiB3ZSB3b3VsZCBleHBlY3QuCisgICMgRHVyaW5nIHRlc3RpbmcsIHdoZW4gdGhlIFBBVEggd2FzIDEwMjAgY2hhcmFjdGVycyBsb25nLCBTdHJMZW4gb2YgdGhlIHBhdGggcmV0dXJuZWQgOTg0LgorICAjIFdoZW4gbWFuaXB1bGF0aW5nIHRoZSBwYXRoIG9uIFhQLCB1c2UgdGhlIHJlZ2lzdHJ5IGluc3RlYWQuCisgIFN0ckxlbiAkNCAiJDEiCisgICMgTWVzc2FnZUJveCBNQl9JQ09OSU5GT1JNQVRJT058TUJfT0sgIlBBVEggbGVuZ3RoOiAkNC4uLiIKKyAgSW50Q21wICQ0IDAgUGF0aF9Ub29fU2hvcnQxCisgIEdvdG8gQWRkVG9QYXRoX0NvbnQxCisgIAorICBQYXRoX1Rvb19TaG9ydDE6CisgICMgUEFUSCBpcyBlbXB0eS4gIERpc3BsYXkgd2FybmluZy4KKyAgTWVzc2FnZUJveCBNQl9JQ09OSU5GT1JNQVRJT058TUJfT0sgIllvdXIgUEFUSCB2YXJpYWJsZSBjb3VsZCBub3QgYmUgcmVhZCwgcHJvYmFibHkgYmVjYXVzZSBpdCBpcyBsb25nZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgKGluc3RhbGxlciBsaW1pdGF0aW9uKS4gIFBsZWFzZSBhZGQgdGhlIGZvbGRlciAkMCB0byB5b3VyIFBBVEggdXNpbmcgdGhlIFN5c3RlbSBDb250cm9sIFBhbmVsLiIKKyAgZ290byBBZGRUb1BhdGhfZG9uZQorCisgIEFkZFRvUGF0aF9Db250MToKKyAgCiAgIFB1c2ggIiQxOyIKICAgUHVzaCAiJDA7IgogICBDYWxsIFN0clN0cgpAQCAtNTYsMTcgKzc3LDQxIEBACiAgIEFkZFRvUGF0aF9OVDoKICAgICA7UmVhZFJlZ1N0ciAkMSBIS0NVICJFbnZpcm9ubWVudCIgIlBBVEgiCiAgICAgUmVhZFJlZ1N0ciAkMSBIS0xNICdTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxTZXNzaW9uIE1hbmFnZXJcRW52aXJvbm1lbnQnICJQQVRIIgorCiAgICAgU3RyQ3B5ICQyICQxIDEgLTEgIyBjb3B5IGxhc3QgY2hhcgogICAgIFN0ckNtcCAkMiAiOyIgMCArMiAjIGlmIGxhc3QgY2hhciA9PSA7CiAgICAgICBTdHJDcHkgJDEgJDEgLTEgIyByZW1vdmUgbGFzdCBjaGFyCi0gICAgU3RyQ21wICQxICIiIEFkZFRvUGF0aF9OVGRvSXQKLSAgICAgIFN0ckNweSAkMCAiJDE7JDAiCi0gICAgQWRkVG9QYXRoX05UZG9JdDoKLSAgICAgIDtXcml0ZVJlZ0V4cGFuZFN0ciBIS0NVICJFbnZpcm9ubWVudCIgIlBBVEgiICQwCi0gICAgICBXcml0ZVJlZ0V4cGFuZFN0ciBIS0xNICdTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxTZXNzaW9uIE1hbmFnZXJcRW52aXJvbm1lbnQnICJQQVRIIiAkMAotICAgICAgU2VuZE1lc3NhZ2UgJHtIV05EX0JST0FEQ0FTVH0gJHtXTV9XSU5JTklDSEFOR0V9IDAgIlNUUjpFbnZpcm9ubWVudCIgL1RJTUVPVVQ9NTAwMAorCisgICAgIyBNYWtlIHN1cmUgb2xkIFBBVEggaXMgbm90IGVtcHR5Li4KKyAgICBTdHJMZW4gJDQgIiQxIgorICAgICNNZXNzYWdlQm94IE1CX0lDT05JTkZPUk1BVElPTnxNQl9PSyAiUmVnIFBBVEggbGVuZ3RoOiAkNC4uLiIKKyAgICBJbnRDbXAgJDQgMCBQYXRoX1Rvb19TaG9ydDIKKyAgICBHb3RvIEFkZFRvUGF0aF9Db250MgorICAgIFBhdGhfVG9vX1Nob3J0MjoKKyAgICAjIFBBVEggaXMgZW1wdHkuICBEaXNwbGF5IHdhcm5pbmcuCisgICAgTWVzc2FnZUJveCBNQl9JQ09OSU5GT1JNQVRJT058TUJfT0sgIllvdXIgUEFUSCB2YXJpYWJsZSBjb3VsZCBub3QgYmUgcmVhZCwgcHJvYmFibHkgYmVjYXVzZSBpdCBpcyBsb25nZXIgdGhhbiAxMDI0IGNoYXJhY3RlcnMgKGluc3RhbGxlciBsaW1pdGF0aW9uKS4gIFBsZWFzZSBhZGQgdGhlIGZvbGRlciAkMCB0byB5b3VyIFBBVEggdXNpbmcgdGhlIFN5c3RlbSBDb250cm9sIFBhbmVsLiIKKyAgICBnb3RvIEFkZFRvUGF0aF9kb25lCisgICAgQWRkVG9QYXRoX0NvbnQyOgorCisgICAgIyBNYWtlIHN1cmUgbmV3IFBBVEggd29uJ3QgYmUgdG9vIGxvbmcuCisgICAgU3RyTGVuICQ1ICIkMCIKKyAgICBJbnRPcCAkNCAkNCArICQ1CisgICAgSW50Q21wICQ0IDEwMjIgIiIgIiIgUGF0aF9Ub29fTG9uZzMKKyAgICBHb3RvIEFkZFRvUGF0aF9Db250MworICAgIFBhdGhfVG9vX0xvbmczOgorICAgIE1lc3NhZ2VCb3ggTUJfSUNPTklORk9STUFUSU9OfE1CX09LICJZb3VyIG5ldyBQQVRIIHZhcmlhYmxlIGNvdWxkIG5vdCBiZSBzZXQgYXMgaXQgd291bGQgYmUgZ3JlYXRlciB0aGFuIDEwMjQgY2hhcmFjdGVycyAoaW5zdGFsbGVyIGxpbWl0YXRpb24pLiAgUGxlYXNlIGFkZCB0aGUgZm9sZGVyICQwIHRvIHlvdXIgUEFUSCB1c2luZyB0aGUgU3lzdGVtIENvbnRyb2wgUGFuZWwuIgorICAgIGdvdG8gQWRkVG9QYXRoX2RvbmUKKyAgICBBZGRUb1BhdGhfQ29udDM6CisKKyAgICBTdHJDcHkgJDAgIiQxOyQwIgorCisgICAgO1dyaXRlUmVnRXhwYW5kU3RyIEhLQ1UgIkVudmlyb25tZW50IiAiUEFUSCIgJDAKKyAgICBXcml0ZVJlZ0V4cGFuZFN0ciBIS0xNICdTWVNURU1cQ3VycmVudENvbnRyb2xTZXRcQ29udHJvbFxTZXNzaW9uIE1hbmFnZXJcRW52aXJvbm1lbnQnICJQQVRIIiAkMAorICAgIFNlbmRNZXNzYWdlICR7SFdORF9CUk9BRENBU1R9ICR7V01fV0lOSU5JQ0hBTkdFfSAwICJTVFI6RW52aXJvbm1lbnQiIC9USU1FT1VUPTUwMDAKIAogICBBZGRUb1BhdGhfZG9uZToKKyAgICBQb3AgJDUKKyAgICBQb3AgJDQKICAgICBQb3AgJDMKICAgICBQb3AgJDIKICAgICBQb3AgJDEKZGlmZiAtLWdpdCBhL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaSBiL3dpbjMyL2Rpc3QvaW5zdGFsbGVyL25ldC1zbm1wLm5zaQppbmRleCA5NWQ3YjU1Li41ZTZmYzc1IDEwMDY0NAotLS0gYS93aW4zMi9kaXN0L2luc3RhbGxlci9uZXQtc25tcC5uc2kKKysrIGIvd2luMzIvZGlzdC9pbnN0YWxsZXIvbmV0LXNubXAubnNpCkBAIC0xLDEzICsxLDE5IEBACiA7IFNjcmlwdCBnZW5lcmF0ZWQgYnkgdGhlIEhNIE5JUyBFZGl0IFNjcmlwdCBXaXphcmQuCitTZXRDb21wcmVzc29yIC9TT0xJRCBsem1hCiAKKyFpbmNsdWRlIHg2NC5uc2gKICFpbmNsdWRlICJTZWN0aW9ucy5uc2giCiAKKzsgQnVpbGRpbmcgYSB4ODYgb3IgeDY0IGJpbmFyeQorIWRlZmluZSBJTlNUQUxMRVJfUExBVEZPUk0gIng2NCIJCQorCiA7IEhNIE5JUyBFZGl0IFdpemFyZCBoZWxwZXIgZGVmaW5lcwogIWRlZmluZSBQUk9EVUNUX05BTUUgIk5ldC1TTk1QIgogIWRlZmluZSBQUk9EVUNUX01BSl9WRVJTSU9OICI1IgotIWRlZmluZSBQUk9EVUNUX01JTl9WRVJTSU9OICI0IgotIWRlZmluZSBQUk9EVUNUX1JFVklTSU9OICIwLnByZTQiCishZGVmaW5lIFBST0RVQ1RfTUlOX1ZFUlNJT04gIjUiCishZGVmaW5lIFBST0RVQ1RfUkVWSVNJT04gInByZTIiCiAhZGVmaW5lIFBST0RVQ1RfRVhFX1ZFUlNJT04gIjEiCishZGVmaW5lIFBST0RVQ1RfRVhFX1NVRkZJWCAiLng2NC5leGUiCiAhZGVmaW5lIFBST0RVQ1RfV0VCX1NJVEUgImh0dHA6Ly93d3cubmV0LXNubXAub3JnIgogIWRlZmluZSBQUk9EVUNUX0RJUl9SRUdLRVkgIlNvZnR3YXJlXE5ldC1TTk1QIgogIWRlZmluZSBQUk9EVUNUX1VOSU5TVF9LRVkgIlNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzXEN1cnJlbnRWZXJzaW9uXFVuaW5zdGFsbFwke1BST0RVQ1RfTkFNRX0iCkBAIC0zOCw3ICs0NCw3IEBACiAhaW5zZXJ0bWFjcm8gTVVJX1BBR0VfTElDRU5TRSAiZG9jc1xDT1BZSU5HIgogCiA7IE1ha2Ugc3VyZSBTU0wgaXMgaW5zdGFsbGVkLgotUGFnZSBjdXN0b20gSXNTU0xJbnN0YWxsZWQgIiIgIjogY3VzdG9tIHBhZ2UiCis7IFBhZ2UgY3VzdG9tIElzU1NMSW5zdGFsbGVkICIiICI6IGN1c3RvbSBwYWdlIgogCiA7IENvbXBvbmVudHMgcGFnZQogIWluc2VydG1hY3JvIE1VSV9QQUdFX0NPTVBPTkVOVFMKQEAgLTczLDcgKzc5LDcgQEAKICAgICAgICAgICAgICAgICAgICR7UFJPRFVDVF9NSU5fVkVSU0lPTn0uXAogICAgICAgICAgICAgICAgICAgJHtQUk9EVUNUX1JFVklTSU9OfVwKICAgICAgICAgICAgICAgICAgIC0ke1BST0RVQ1RfRVhFX1ZFUlNJT059XAotICAgICAgICAgICAgICAgICAgLndpbjMyLmV4ZSIKKyAgICAgICAgICAgICAgICAgICR7UFJPRFVDVF9FWEVfU1VGRklYfSIKIEluc3RhbGxEaXIgIkM6XHVzciIKIEluc3RhbGxEaXJSZWdLZXkgSEtMTSAiJHtQUk9EVUNUX0RJUl9SRUdLRVl9IiAiSW5zdGFsbERpciIKIFNob3dJbnN0RGV0YWlscyBzaG93CkBAIC04MSwxMyArODcsMjUgQEAKIAogOyBWYXJpYWJsZXMgZm9yIHdyaXRpbmcgY29uZmlnIGZpbGVzCiBWYXIgY29uZl9maWxlCisKIFZhciB3aW5FeHRETEwKK1ZhciBvcGVuU1NMCiAKIFNlY3Rpb24gIkJhc2UgQ29tcG9uZW50cyIgU0VDMDEKKyAgU2VjdGlvbkluIFJPCisgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAxX25vT3BlblNTTCBTRUMwMV9PcGVuU1NMCisgIAorICBTRUMwMV9ub09wZW5TU0w6CiAgIFNldE91dFBhdGggIiRJTlNURElSIgogICBTZXRPdmVyd3JpdGUgaWZuZXdlcgogICBGaWxlICJSRUFETUUudHh0IgogICBTZXRPdXRQYXRoICIkSU5TVERJUlxiaW4iCisKKyAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgorICBGaWxlICJiaW5cbXN2Y3A5MC5kbGwiCisgIEZpbGUgImJpblxtc3ZjcjkwLmRsbCIKKyAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKKwogICBGaWxlICJiaW5cbmV0c25tcC5kbGwiCiAgIEZpbGUgImJpblxlbmNvZGVfa2V5Y2hhbmdlLmV4ZSIKICAgRmlsZSAiYmluXHNubXB2YWNtLmV4ZSIKQEAgLTEwNiw2ICsxMjQsNDAgQEAKICAgRmlsZSAiYmluXHNubXBidWxrd2Fsay5leGUiCiAgIEZpbGUgImJpblxzbm1wYnVsa2dldC5leGUiCiAgIEZpbGUgImJpblxzbm1wd2Fsay5leGUiCisgIGdvdG8gU0VDMDFfY29udGludWUKKworICBTRUMwMV9PcGVuU1NMOgorICBTZXRPdXRQYXRoICIkSU5TVERJUiIKKyAgU2V0T3ZlcndyaXRlIGlmbmV3ZXIKKyAgRmlsZSAiUkVBRE1FLnR4dCIKKyAgU2V0T3V0UGF0aCAiJElOU1RESVJcYmluIgorCisgIEZpbGUgImJpblxtc3ZjbTkwLmRsbCIKKyAgRmlsZSAiYmluXG1zdmNwOTAuZGxsIgorICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCisgIEZpbGUgImJpblxNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiCisKKyAgRmlsZSAiYmluLnNzbFxuZXRzbm1wLmRsbCIKKyAgRmlsZSAiYmluLnNzbFxlbmNvZGVfa2V5Y2hhbmdlLmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wdmFjbS5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcHVzbS5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcHRyYXAuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXB0cmFuc2xhdGUuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXB0ZXN0LmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wdGFibGUuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXBzdGF0dXMuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXBzZXQuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXBuZXRzdGF0LmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wZ2V0bmV4dC5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcGdldC5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcGRmLmV4ZSIKKyAgRmlsZSAiYmluLnNzbFxzbm1wZGVsdGEuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXBidWxrd2Fsay5leGUiCisgIEZpbGUgImJpbi5zc2xcc25tcGJ1bGtnZXQuZXhlIgorICBGaWxlICJiaW4uc3NsXHNubXB3YWxrLmV4ZSIKKworICBTRUMwMV9jb250aW51ZToKKwogICBGaWxlICJiaW5cbWliMmMiCiAgIEZpbGUgImJpblxtaWIyYy5iYXQiCiAgIENhbGwgQ3JlYXRlTWliMmNCYXQKQEAgLTE1MSwxOCArMjAzLDEwNSBAQAogU2VjdGlvbkdyb3VwIC9lICJOZXQtU05NUCBBZ2VudCBTZXJ2aWNlIgogICBTZWN0aW9uICJTdGFuZGFyZCBhZ2VudCIgU0VDMDIKICAgICBTdHJDcHkgJHdpbkV4dERMTCAiMCIKLSAgICBDYWxsIEluc3RhbGxBZ2VudAorICAgIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKKworICAgIDsgRGVsZXRlIGFnZW50IG90aGVyd2lzZSByZS1pbnN0YWxsaW5nIGEgZGlmZmVyZW50IGFnZW50IG1heSBub3Qgd29yayBiZWNhdXNlIG9mIGRhdGUgc3RhbXBzCisgICAgRGVsZXRlICIkSU5TVERJUlxiaW5cc25tcGQuZXhlIiAgCisKKyAgICBGaWxlICJiaW5cbXN2Y205MC5kbGwiCisgICAgRmlsZSAiYmluXG1zdmNwOTAuZGxsIgorICAgIEZpbGUgImJpblxtc3ZjcjkwLmRsbCIKKyAgICBGaWxlICJiaW5cTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IgorCisgICAgU3RyQ21wICRvcGVuU1NMICJmYWxzZSIgU0VDMDJfbm9PcGVuU1NMIFNFQzAyX09wZW5TU0wKKyAgICBTRUMwMl9ub09wZW5TU0w6CisgICAgICBGaWxlICJiaW5cc25tcGQuZXhlIgorCisgICAgU0VDMDJfT3BlblNTTDoKKyAgICAgIEZpbGUgImJpbi5zc2xcc25tcGQuZXhlIgorCisgICAgU2V0T3V0UGF0aCAiJElOU1RESVJcc2hhcmVcc25tcFxzbm1wY29uZi1kYXRhXHNubXBkLWRhdGEiCisgICAgRmlsZSAic2hhcmVcc25tcFxzbm1wY29uZi1kYXRhXHNubXBkLWRhdGFcKi4qIgorICAKKyAgICA7IElmIHdlIGFyZSBvbiBhbiBOVCBzeXN0ZW0gdGhlbiBpbnN0YWxsIHRoZSBzZXJ2aWNlIGJhdGNoIGZpbGVzLgorICAgIENhbGwgSXNOVAorICAgIFBvcCAkMQorICAgIFN0ckNtcCAkMSAwIFNFQzAyX05vU2VydmljZQorICAKKyAgICBTZXRPdXRQYXRoICIkSU5TVERJUlwiCisgICAgRmlsZSAicmVnaXN0ZXJhZ2VudC5iYXQiCisgICAgRmlsZSAidW5yZWdpc3RlcmFnZW50LmJhdCIKKyAgICBDYWxsIENyZWF0ZUFnZW50QmF0cworCisgICAgQ3JlYXRlRGlyZWN0b3J5ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZSIKKyAgICBDcmVhdGVTaG9ydEN1dCAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcUmVnaXN0ZXIgQWdlbnQgU2VydmljZS5sbmsiICIkSU5TVERJUlxyZWdpc3RlcmFnZW50LmJhdCIKKyAgICBDcmVhdGVTaG9ydEN1dCAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHVucmVnaXN0ZXJhZ2VudC5iYXQiCisgICAgCisgICAgU0VDMDJfTm9TZXJ2aWNlOgorCQogICBTZWN0aW9uRW5kCiAKLSAgU2VjdGlvbiAvbyAiV2l0aCBXaW5kb3dzIEV4dGVuc2lvbiBETEwgc3VwcG9ydCIgU0VDMDMKLSAgICBTdHJDcHkgJHdpbkV4dERMTCAiMSIKLSAgICBDYWxsIEluc3RhbGxBZ2VudAorICBTZWN0aW9uICJXaXRoIFdpbmRvd3MgRXh0ZW5zaW9uIERMTCBzdXBwb3J0IiBTRUMwMwkKKwlTdHJDcHkgJHdpbkV4dERMTCAiMSIKKwlTZXRPdXRQYXRoICIkSU5TVERJUlxiaW4iCisKKyAgICA7IERlbGV0ZSBhZ2VudCBvdGhlcndpc2UgcmUtaW5zdGFsbGluZyBhIGRpZmZlcmVudCBhZ2VudCBtYXkgbm90IHdvcmsgYmVjYXVzZSBvZiBkYXRlIHN0YW1wcworICAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAorCisgICAgRmlsZSAiYmluXG1zdmNtOTAuZGxsIgorICAgIEZpbGUgImJpblxtc3ZjcDkwLmRsbCIKKyAgICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCisgICAgRmlsZSAiYmluXE1pY3Jvc29mdC5WQzkwLkNSVC5tYW5pZmVzdCIKKworICAgIFN0ckNtcCAkb3BlblNTTCAiZmFsc2UiIFNFQzAzX25vT3BlblNTTCBTRUMwM19PcGVuU1NMCisgICAgU0VDMDNfbm9PcGVuU1NMOgorICAgICAgRmlsZSAvb25hbWU9c25tcGQuZXhlICJiaW5cc25tcGQtd2luRXh0RExMLmV4ZSIKKworICAgIFNFQzAzX09wZW5TU0w6CisgICAgICBGaWxlIC9vbmFtZT1zbm1wZC5leGUgImJpbi5zc2xcc25tcGQtd2luRXh0RExMLmV4ZSIKKworICAgIFNldE91dFBhdGggIiRJTlNURElSXHNoYXJlXHNubXBcc25tcGNvbmYtZGF0YVxzbm1wZC1kYXRhIgorICAgIEZpbGUgInNoYXJlXHNubXBcc25tcGNvbmYtZGF0YVxzbm1wZC1kYXRhXCouKiIKKyAgCisgICAgOyBJZiB3ZSBhcmUgb24gYW4gTlQgc3lzdGVtIHRoZW4gaW5zdGFsbCB0aGUgc2VydmljZSBiYXRjaCBmaWxlcy4KKyAgICBDYWxsIElzTlQKKyAgICBQb3AgJDEKKyAgICBTdHJDbXAgJDEgMCBTRUMwM19Ob1NlcnZpY2UKKyAgCisgICAgU2V0T3V0UGF0aCAiJElOU1RESVJcIgorICAgIEZpbGUgInJlZ2lzdGVyYWdlbnQuYmF0IgorICAgIEZpbGUgInVucmVnaXN0ZXJhZ2VudC5iYXQiCisgICAgQ2FsbCBDcmVhdGVBZ2VudEJhdHMKKworICAgIENyZWF0ZURpcmVjdG9yeSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCisgICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFJlZ2lzdGVyIEFnZW50IFNlcnZpY2UubG5rIiAiJElOU1RESVJccmVnaXN0ZXJhZ2VudC5iYXQiCisgICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxTZXJ2aWNlXFVucmVnaXN0ZXIgQWdlbnQgU2VydmljZS5sbmsiICIkSU5TVERJUlx1bnJlZ2lzdGVyYWdlbnQuYmF0IgorICAgIAorICAgIFNFQzAzX05vU2VydmljZToKICAgU2VjdGlvbkVuZAorICAKKzsgIFNlY3Rpb24gIkhpZGRlbiIgU0VDQWdlbnRIaWRkZW4KKyAgO1NlY3Rpb25FbmQKIFNlY3Rpb25Hcm91cEVuZAogCiBTZWN0aW9uICJOZXQtU05NUCBUcmFwIFNlcnZpY2UiIFNFQzA0CiAgIFNldE91dFBhdGggIiRJTlNURElSXGJpbiIKKworICBTdHJDbXAgJG9wZW5TU0wgImZhbHNlIiBTRUMwNF9ub09wZW5TU0wgU0VDMDRfT3BlblNTTAorCisgIEZpbGUgImJpblxtc3ZjbTkwLmRsbCIKKyAgRmlsZSAiYmluXG1zdmNwOTAuZGxsIgorICBGaWxlICJiaW5cbXN2Y3I5MC5kbGwiCisgIEZpbGUgImJpblxNaWNyb3NvZnQuVkM5MC5DUlQubWFuaWZlc3QiCisKKyAgU0VDMDRfbm9PcGVuU1NMOgogICBGaWxlICJiaW5cc25tcHRyYXBkLmV4ZSIKKyAgZ290byBTRUMwNF9jb250aW51ZQorCisgIFNFQzA0X09wZW5TU0w6CisgIEZpbGUgImJpbi5zc2xcc25tcHRyYXBkLmV4ZSIKKworICBTRUMwNF9jb250aW51ZToKICAgU2V0T3V0UGF0aCAiJElOU1RESVJcc2hhcmVcc25tcFxzbm1wY29uZi1kYXRhXHNubXB0cmFwZC1kYXRhIgogICBGaWxlICJzaGFyZVxzbm1wXHNubXBjb25mLWRhdGFcc25tcHRyYXBkLWRhdGFcKi4qIgogICA7U2V0T3V0UGF0aCAiJElOU1RESVJcZXRjXHNubXAiCkBAIC0xODYsNyArMzI1LDE4IEBACiAKIFNlY3Rpb24gIlBlcmwgU05NUCBNb2R1bGVzIiBTRUMwNQogICBTZXRPdXRQYXRoICIkSU5TVERJUlxwZXJsXHg4NiIKKworICBTdHJDbXAgJG9wZW5TU0wgImZhbHNlIiBTRUMwNV9ub09wZW5TU0wgU0VDMDVfT3BlblNTTAorCisgIFNFQzA1X25vT3BlblNTTDoKICAgRmlsZSAicGVybFx4ODZcTmV0U05NUC50YXIuZ3oiCisgIGdvdG8gU0VDMDVfY29udGludWUKKworICBTRUMwNV9PcGVuU1NMOgorICBGaWxlICJwZXJsLnNzbFx4ODZcTmV0U05NUC50YXIuZ3oiCisKKyAgU0VDMDVfY29udGludWU6CisKICAgU2V0T3V0UGF0aCAiJElOU1RESVJccGVybCIKICAgRmlsZSAicGVybFxOZXRTTk1QLnBwZCIKICAgU2V0T3V0UGF0aCAiJElOU1RESVJcYmluIgpAQCAtMjI0LDYgKzM3NCw5IEBACiAgIEZpbGUgImxpYlwqLioiCiBTZWN0aW9uRW5kCiAKK1NlY3Rpb24gIkVuY3J5cHRpb24gc3VwcG9ydCAoT3BlblNTTCkiIFNFQzA3CitTZWN0aW9uRW5kCisKIFNlY3Rpb24gLUFkZGl0aW9uYWxJY29ucwogICBDcmVhdGVEaXJlY3RvcnkgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUCIKICAgQ3JlYXRlU2hvcnRDdXQgIiRTTVBST0dSQU1TXCRJQ09OU19HUk9VUFxVbmluc3RhbGwubG5rIiAiJElOU1RESVJcdW5pbnN0LmV4ZSIKQEAgLTI2Miw2ICs0MTUsOCBAQAogICAhaW5zZXJ0bWFjcm8gTVVJX0RFU0NSSVBUSU9OX1RFWFQgJHtTRUMwNn0gXAogICAgICAgICAgICAgICAgIlRoZSBEZXZlbG9wbWVudCBmaWxlcyBwcm92aWRlIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcyB1c2VkIGZvciBkZXZlbG9waW5nIFwKICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSB0aGUgTmV0LVNOTVAgbGlicmFyeS4iCisgICFpbnNlcnRtYWNybyBNVUlfREVTQ1JJUFRJT05fVEVYVCAke1NFQzA3fSBcCisgICAgICAgICAgICAgICAiRW5jcnlwdGlvbiBzdXBwb3J0IGlzIHJlcXVpcmVkIGZvciBTTk1QdjMgU0hBIGF1dGhlbnRpY2F0aW9uIGFuZCBERVMgLyBBRVMgcHJpdmFjeS4gIEEgV2luZG93cyBwYWNrYWdlIGlzIGF2YWlsYWJsZSBmcm9tIHd3dy5zbHByb3dlYi5jb20uIgogIWluc2VydG1hY3JvIE1VSV9GVU5DVElPTl9ERVNDUklQVElPTl9FTkQKIAogRnVuY3Rpb24gQ3JlYXRlU25tcENvbmYKQEAgLTUyNSwzMCArNjgwLDEzNSBAQAogRnVuY3Rpb25FbmQKIAogRnVuY3Rpb24gdW4ub25Jbml0CisgIFNldFJlZ1ZpZXcgNjQJCTsgUHJldmVudCB0aGUgaW5zdGFsbGVyIGZyb20gdXNpbmcgdGhlIFdvdzY0MzJOb2RlIEhLTE0gc3Via2V5IG9uIDY0LWJpdCBzeXN0ZW1zCiAgIE1lc3NhZ2VCb3ggTUJfSUNPTlFVRVNUSU9OfE1CX1lFU05PfE1CX0RFRkJVVFRPTjIgIkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjb21wbGV0ZWx5IHJlbW92ZSAkKF5OYW1lKSBhbmQgYWxsIG9mIGl0cyBjb21wb25lbnRzPyIgSURZRVMgKzIKICAgQWJvcnQKIEZ1bmN0aW9uRW5kCiAKIEZ1bmN0aW9uIC5vbkluaXQKLQotU3RyQ3B5ICQzICR7U0VDMDJ9Ci0KK1NldFJlZ1ZpZXcgNjQJCTsgUHJldmVudCB0aGUgaW5zdGFsbGVyIGZyb20gdXNpbmcgdGhlIFdvdzY0MzJOb2RlIEhLTE0gc3Via2V5IG9uIDY0LWJpdCBzeXN0ZW1zCiBQdXNoICQwCitQdXNoICRSMAorCis7IE1ha2Ugc3VyZSB3ZSdyZSBydW5uaW5nIFdpbmRvd3MgMjAwMCAoNS4wKSBvciBoaWdoZXIKK0NsZWFyRXJyb3JzCitSZWFkUmVnU3RyICRSMCBIS0xNIFwKKyAgIlNPRlRXQVJFXE1pY3Jvc29mdFxXaW5kb3dzIE5UXEN1cnJlbnRWZXJzaW9uIiBDdXJyZW50VmVyc2lvbgorSWZFcnJvcnMgd2luZG93c1ZlcnNpb25FcnJvcgorCitJbnRDbXAgJFIwICc1LjAnIHdpbmRvd3NWZXJzaW9uT0sgd2luZG93c1ZlcnNpb25FcnJvciB3aW5kb3dzVmVyc2lvbk9LCit3aW5kb3dzVmVyc2lvbkVycm9yOgorTWVzc2FnZUJveCBNQl9JQ09OSU5GT1JNQVRJT058TUJfT0sgIlRoaXMgdmVyc2lvbiBvZiAkKF5OYW1lKSByZXF1aXJlcyBXaW5kb3dzIDIwMDAgb3IgaGlnaGVyLiAgRm9yIFdpbmRvd3MgTlQgYW5kIGxvd2VyLCBwbGVhc2UgdXNlIE5ldC1TTk1QIDUuNC4iCitRdWl0CisKK3dpbmRvd3NWZXJzaW9uT0s6Cis7TWVzc2FnZUJveCBNQl9JQ09OSU5GT1JNQVRJT058TUJfT0sgIldpbmRvd3MgdmVyc2lvbiBvazogJFIwIgorCis7IE1ha2Ugc3VyZSB3ZSdyZSBydW5uaW5nIHRoZSByaWdodCBwbGF0Zm9ybQorO0lOU1RBTExFUl9QTEFURk9STQorJHtJZn0gJHtJTlNUQUxMRVJfUExBVEZPUk19ID09ICJ4NjQiCisgIDtNZXNzYWdlQm94IE1CX09LICI2NC1iaXQgYmluYXJ5IgorICAke0lmTm90fSAke1J1bm5pbmdYNjR9CisgICAgO01lc3NhZ2VCb3ggTUJfT0sgIjMyLWJpdCBPUyIKKwlNZXNzYWdlQm94IE1CX09LICJUaGlzIE5ldC1TTk1QIHBhY2thZ2UgcmVxdWlyZXMgNjQtYml0IFdpbmRvd3MgKHg2NCkuICBQbGVhc2UgZG93bmxvYWQgdGhlIHg4NiBpbnN0YWxsZXIgcGFja2FnZS4iCisJUXVpdAorICAke0Vsc2V9CisgICAgO01lc3NhZ2VCb3ggTUJfT0sgIjY0LWJpdCBPUyIKKyAgJHtFbmRJZn0KKyR7RWxzZX0KKyAgO01lc3NhZ2VCb3ggTUJfT0sgIng4NiAoMzItYml0KSBiaW5hcnkiCisgICR7SWZ9ICR7UnVubmluZ1g2NH0KKyAgICA7TWVzc2FnZUJveCBNQl9PSyAiNjQtYml0IE9TIgorCU1lc3NhZ2VCb3ggTUJfT0sgIllvdSBhcmUgaW5zdGFsbGluZyBhIDMyLWJpdCBwYWNrYWdlIG9uIGEgNjQtYml0IG9wZXJhdGluZyBzeXN0ZW0uICBBbGwgYXBwbGljYXRpb25zIHNob3VsZCB3b3JrIGV4Y2VwdCBmb3IgdGhlICdOZXQtU05NUCBBZ2VudCBTZXJ2aWNlIHdpdGggV2luZG93cyBFeHRlbnNpb24gRExMIHN1cHBvcnQnLiAgUGxlYXNlIGRvd25sb2FkIHRoZSB4NjQgaW5zdGFsbGVyIHBhY2thZ2UuIgorICAke0VuZElmfQkKKyR7RW5kSWZ9CiAKIDsgRGlzYWJsZSBEZXZlbG9wbWVudCBmaWxlcyBzZWN0aW9uIGJ5IGRlZmF1bHQKIFNlY3Rpb25HZXRGbGFncyAke1NFQzA2fSAkMAogSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQogU2VjdGlvblNldEZsYWdzICR7U0VDMDZ9ICQwCiAKKzsgRGlzYWJsZSBPcGVuU1NMIHNlY3Rpb24gYnkgZGVmYXVsdAorU2VjdGlvbkdldEZsYWdzICR7U0VDMDd9ICQwCitJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CitTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwN30gJDAKK1N0ckNweSAkb3BlblNTTCAiZmFsc2UiCisKKzsgRGlzYWJsZSBBZ2VudCB3aXRoIHdpbkV4dERMTCBzdXBwb3J0IC0gdXNlciBjYW4gc2VsZWN0IGVpdGhlciBidXQgbm90IGJvdGguCitTdHJDcHkgJFI4ICR7U0VDMDJ9CitTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwMn0gJDAKK0ludE9wICQwICQwIHwgJHtTRl9TRUxFQ1RFRH0KK1NlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorU2VjdGlvbkdldEZsYWdzICR7U0VDMDN9ICQwCitJbnRPcCAkMCAkMCAmICR7U0VDVElPTl9PRkZ9CitTZWN0aW9uU2V0RmxhZ3MgJHtTRUMwM30gJDAKKworOyBTdG9yZSBjdXJyZW50IHN0YXR1cyBvZiBTRUMwNyAoU1NMKS4gIFVzZWQgZm9yIGNoZWNraW5nIGlmIE9wZW5TU0wgaXMgaW5zdGFsbGVkLgorU2VjdGlvbkdldEZsYWdzICR7U0VDMDd9ICRSOQorCitQb3AgJFIwCiBQb3AgJDAKIEZ1bmN0aW9uRW5kCiAKIEZ1bmN0aW9uIC5vblNlbENoYW5nZQogCi0gICFpbnNlcnRtYWNybyBTdGFydFJhZGlvQnV0dG9ucyAkMwotICAgICFpbnNlcnRtYWNybyBSYWRpb0J1dHRvbiAke1NFQzAyfQotICAgICFpbnNlcnRtYWNybyBSYWRpb0J1dHRvbiAke1NFQzAzfQotICAhaW5zZXJ0bWFjcm8gRW5kUmFkaW9CdXR0b25zCis7ICAhaW5zZXJ0bWFjcm8gU3RhcnRSYWRpb0J1dHRvbnMgJDIKKyAgICA7IWluc2VydG1hY3JvIFJhZGlvQnV0dG9uICR7U0VDMDJ9CisgICAgOyFpbnNlcnRtYWNybyBSYWRpb0J1dHRvbiAke1NFQzAzfQorICA7IWluc2VydG1hY3JvIEVuZFJhZGlvQnV0dG9ucworCisgICMgQ3JlYXRlIGEgYmFja3VwIGNvcHkgb2YgJDAKKyAgUHVzaCAkMAorCisgIDsgQWdlbnQgLSBPbmx5IGFsbG93IHVzZXIgdG8gc2VsZWN0IHN0YW5kYXJkIG9yIHdpbkV4dERMTCBhZ2VudAorICBTdHJDbXAgJFI4ICR7U0VDMDJ9IG9uU2VsQ2hhbmdlX2NoZWNrX1NFQzMKKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDJ9ICQwCisgIEludE9wICQwICQwICYgJHtTRl9TRUxFQ1RFRH0KKyAgSW50Q21wICQwICR7U0ZfU0VMRUNURUR9IDAgb25TZWxDaGFuZ2VfYWdlbnRfZG9uZSBvblNlbENoYW5nZV9hZ2VudF9kb25lCisgIFN0ckNweSAkUjggJHtTRUMwMn0KKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDN9ICQwCisgIEludE9wICQwICQwICYgJHtTRUNUSU9OX09GRn0KKyAgU2VjdGlvblNldEZsYWdzICR7U0VDMDN9ICQwCisgIEdvdG8gb25TZWxDaGFuZ2VfYWdlbnRfZG9uZQorIAorICBvblNlbENoYW5nZV9jaGVja19TRUMzOgorICAgIFNlY3Rpb25HZXRGbGFncyAke1NFQzAzfSAkMAorICAgIEludE9wICQwICQwICYgJHtTRl9TRUxFQ1RFRH0KKyAgICBJbnRDbXAgJDAgJHtTRl9TRUxFQ1RFRH0gMCBvblNlbENoYW5nZV9hZ2VudF9kb25lIG9uU2VsQ2hhbmdlX2FnZW50X2RvbmUKKyAgICBTdHJDcHkgJFI4ICR7U0VDMDN9CisgICAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDJ9ICQwCisgICAgSW50T3AgJDAgJDAgJiAke1NFQ1RJT05fT0ZGfQorICAgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAyfSAkMAorIAorICBvblNlbENoYW5nZV9hZ2VudF9kb25lOgorCisgIDsgSWYgdGhlIHVzZXIgaXMgaW5zdGFsbGluZyBhIDMyLWJpdCBiaW5hcnkgb24gYSA2NC1iaXQgT1MsIGRpc2FibGUgd2luRXh0RExMIGFnZW50LgorICAke0lmfSAke1J1bm5pbmdYNjR9CisgICAgJHtJZk5vdH0gJHtJTlNUQUxMRVJfUExBVEZPUk19ID09ICJ4NjQiCisJICBTZWN0aW9uR2V0RmxhZ3MgJHtTRUMwM30gJDAKKyAgICAgIEludE9wICQwICQwICYgJHtTRUNUSU9OX09GRn0KKyAgICAgIFNlY3Rpb25TZXRGbGFncyAke1NFQzAzfSAkMAorICAgICR7RW5kSWZ9CisgICR7RW5kSWZ9CisgICAgCisgIDsgSWYgdXNlciBzZWxlY3RlZCBFbmNyeXB0aW9uIHN1cHBvcnQsIG1ha2Ugc3VyZSBPcGVuU1NMIGlzIGluc3RhbGxlZC4KKyAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDd9ICQwCisgIEludE9wICQwICQwICYgJHtTRl9TRUxFQ1RFRH0KKyAgSW50Q21wICQwICR7U0ZfU0VMRUNURUR9IGVuYWJsZVNTTG9uU2VsQ2hhbmdlIGRpc2FibGVTU0xvblNlbENoYW5nZQorICBlbmFibGVTU0xvblNlbENoYW5nZToKKyAgICBTdHJDcHkgJG9wZW5TU0wgInRydWUiCisgICAgSW50Q21wICRSOSAkMCBTU0xhbHJlYWR5RW5hYmxlZCBTU0xqdXN0RW5hYmxlZAorICAgIFNTTGp1c3RFbmFibGVkOgorICAgICAgQ2FsbCBJc1NTTEluc3RhbGxlZAorICAgICAgU2VjdGlvbkdldEZsYWdzICR7U0VDMDd9ICRSOQorICAgIFNTTGFscmVhZHlFbmFibGVkOgorICAgICAgZ290byBjb250aW51ZVNTTG9uU2VsQ2hhbmdlCisgIGRpc2FibGVTU0xvblNlbENoYW5nZToKKyAgICBTdHJDcHkgJG9wZW5TU0wgImZhbHNlIgorCVNlY3Rpb25HZXRGbGFncyAke1NFQzA3fSAkUjkKKyAgY29udGludWVTU0xvblNlbENoYW5nZToKKyAgCisgIFBvcCAkMAogCiBGdW5jdGlvbkVuZAogCkBAIC01NzksNiArODM5LDEyIEBACiAgIERlbGV0ZSAiJElOU1RESVJcZG9jc1xDT1BZSU5HIgogICBEZWxldGUgIiRJTlNURElSXGRvY3NcTmV0LVNOTVAuY2htIgogICBEZWxldGUgIiRJTlNURElSXGJpblxuZXQtc25tcC1wZXJsLXRlc3QucGwiCisKKyAgRGVsZXRlICIkSU5TVERJUlxiaW5cbXN2Y205MC5kbGwiCisgIERlbGV0ZSAiJElOU1RESVJcYmluXG1zdmNwOTAuZGxsIgorICBEZWxldGUgIiRJTlNURElSXGJpblxtc3ZjcjkwLmRsbCIKKyAgRGVsZXRlICIkSU5TVERJUlxiaW5cTWljcm9zb2Z0LlZDOTAuQ1JULm1hbmlmZXN0IgorCiAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXB0cmFwZC5leGUiCiAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIKICAgRGVsZXRlICIkSU5TVERJUlxiaW5cc25tcHdhbGsuZXhlIgpAQCAtNjAwLDYgKzg2Niw3IEBACiAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXB2YWNtLmV4ZSIKICAgRGVsZXRlICIkSU5TVERJUlxiaW5cZW5jb2RlX2tleWNoYW5nZS5leGUiCiAgIERlbGV0ZSAiJElOU1RESVJcYmluXG5ldHNubXAuZGxsIgorCiAgIERlbGV0ZSAiJElOU1RESVJcYmluXG1pYjJjIgogICBEZWxldGUgIiRJTlNURElSXGJpblxtaWIyYy5iYXQiCiAgIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBjb25mIgpAQCAtNzE5LDYgKzk4Niw3IEBACiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5ub3RpZnkuY29uZiIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLm9sZC1hcGkuY29uZiIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLnBlcmwuY29uZiIKKyAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLnJhdy10YWJsZS5jb25mIgogICBEZWxldGUgIiRJTlNURElSXHNoYXJlXHNubXBcbWliMmMucm93LmNvbmYiCiAgIERlbGV0ZSAiJElOU1RESVJcc2hhcmVcc25tcFxtaWIyYy5zY2FsYXIuY29uZiIKICAgRGVsZXRlICIkSU5TVERJUlxzaGFyZVxzbm1wXG1pYjJjLnRhYmxlX2RhdGEuY29uZiIKQEAgLTgzMSw2ICsxMDk5LDcgQEAKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXHN5c3RlbVxmcmVlYnNkNi5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcc3lzdGVtXGZyZWVic2Q3LmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxzeXN0ZW1cZnJlZWJzZDguaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXHN5c3RlbVxrZnJlZWJzZC5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcc3lzdGVtXGRyYWdvbmZseS5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcc3lzdGVtXG1pbmd3MzIuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXHN5c3RlbVxzb2xhcmlzMi45LmgiCkBAIC05MTAsNiArMTE3OSw5IEBACiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXBfbG9ja2luZy5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wdjMuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcb2lkX3N0YXNoLmgiCisgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXBBbGlhc0RvbWFpbi5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wRFRMU1VEUERvbWFpbi5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wU1NIRG9tYWluLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXBTVEREb21haW4uaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcFRDUERvbWFpbi5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wVURQRG9tYWluLmgiCkBAIC05MTgsMTAgKzExOTAsMTUgQEAKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcF9lbnVtLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGNtdV9jb21wYXQuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcHYzLXNlY3VyaXR5LWluY2x1ZGVzLmgiCisgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XGRpcl91dGlscy5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxmaWxlX3V0aWxzLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHRleHRfdXRpbHMuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcdHlwZXMuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcZmRfZXZlbnRfbWFuYWdlci5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxsYXJnZV9mZF9zZXQuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcc25tcF9vcGVuc3NsLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHNubXBfc2VydmljZS5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxzbm1wdHNtLmgiCiAKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGFnZW50XHN0YXNoX2NhY2hlLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxhZ2VudFxpbnN0YW5jZS5oIgpAQCAtOTY0LDYgKzEyNDEsOCBAQAogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcc2VyaWFsaXplLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxhZ2VudFxzdGFzaF90b19uZXh0LmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxhZ2VudFx0YWJsZV90ZGF0YS5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcc3lzT1JUYWJsZS5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcYWdlbnRfc3lzT1JUYWJsZS5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcYWdlbnRcbWliX21vZHVsZV9jb25maWcuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGFnZW50XGFnZW50X21vZHVsZV9jb25maWcuaCIKIApAQCAtOTc3LDcgKzEyNTYsMTEgQEAKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGRhdGFfYWNjZXNzXGlwc3RhdHMuaCIKICAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGRhdGFfYWNjZXNzXGlwYWRkcmVzcy5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcZGF0YV9hY2Nlc3NcdGNwQ29ubi5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcZGF0YV9hY2Nlc3NcZGVmYXVsdF9yb3V0ZS5oIgogICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcZGF0YV9hY2Nlc3NcaXBfc2NhbGFycy5oIgorICBEZWxldGUgIiRJTlNURElSXGluY2x1ZGVcbmV0LXNubXBcZGF0YV9hY2Nlc3Ncc2NvcGV6b25lLmgiCisgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxkYXRhX2FjY2Vzc1xzd2luc3QuaCIKKyAgRGVsZXRlICIkSU5TVERJUlxpbmNsdWRlXG5ldC1zbm1wXGRhdGFfYWNjZXNzXHN3cnVuLmgiCiAgIERlbGV0ZSAiJElOU1RESVJcaW5jbHVkZVxuZXQtc25tcFxkYXRhX2FjY2Vzc1x1ZHBfZW5kcG9pbnQuaCIKIAogICBEZWxldGUgIiRJTlNURElSXGxpYlxuZXRzbm1wYWdlbnQubGliIgpAQCAtMTAzOCw1MSArMTMyMSwxNCBAQAogCiBGdW5jdGlvbiBJc1NTTEluc3RhbGxlZAogICBQdXNoICRSMAotICBTdHJDbXAgJHtPUEVOU1NMX1JFUVVJUkVEfSAiMCIgY29udGludWVJbnN0YWxsCi0gIFJlYWRFbnZTdHIgJFIwICJ3aW5kaXIiCi0gIElmRmlsZUV4aXN0cyAiJFIwXHN5c3RlbTMyXGxpYmVheTMyLmRsbCIgMCBub1NTTAorICBSZWFkRW52U3RyICRSMCAiT1BFTlNTTF9DT05GIgorICBJZkZpbGVFeGlzdHMgIiRSMCIgMCBub1NTTAogICAgIEdvdG8gY29udGludWVJbnN0YWxsCiAgIG5vU1NMOgotICAgIE1lc3NhZ2VCb3ggTUJfWUVTTk98TUJfSUNPTlFVRVNUSU9OICJPcGVuU1NMICgkUjBcc3lzdGVtMzJcbGliZWF5MzIuZGxsKSBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgaW5zdGFsbGVkLiAgT3BlblNTTCBpcyByZXF1aXJlZCBmb3IgdGhpcyBpbnN0YWxsYXRpb24gb2YgTmV0LVNOTVAuICBQbGVhc2UgaW5zdGFsbCBPcGVuU1NMIGZyb20gaHR0cDovL3d3dy5zbHByb3dlYi5jb20vcHJvZHVjdHMvV2luMzJPcGVuU1NMLmh0bWwgYW5kIHRyeSBhZ2Fpbi4gIFdvdWxkIHlvdSBsaWtlIHRvIGNvbnRpbnVlIGluc3RhbGxpbmcgYW55d2F5cz8iIElEWUVTIGNvbnRpbnVlSW5zdGFsbAorICAgIE1lc3NhZ2VCb3ggTUJfWUVTTk98TUJfSUNPTlFVRVNUSU9OICJPcGVuU1NMIGRvZXMgbm90IGFwcGVhciB0byBiZSBpbnN0YWxsZWQuICBPcGVuU1NMIGlzIHJlcXVpcmVkIGZvciB0aGlzIGluc3RhbGxhdGlvbiBvZiBOZXQtU05NUC4gIFBsZWFzZSBpbnN0YWxsIE9wZW5TU0wgZnJvbSBodHRwOi8vd3d3LnNscHJvd2ViLmNvbS9wcm9kdWN0cy9XaW4zMk9wZW5TU0wuaHRtbCBhbmQgdHJ5IGFnYWluLiAgV291bGQgeW91IGxpa2UgdG8gY29udGludWUgaW5zdGFsbGluZyBhbnl3YXlzPyIgSURZRVMgY29udGludWVJbnN0YWxsCiAgIFF1aXQKICAgY29udGludWVJbnN0YWxsOgogICBQb3AgJFIwCiBGdW5jdGlvbkVuZAogCi1GdW5jdGlvbiBJbnN0YWxsQWdlbnQKLSAgU2V0T3V0UGF0aCAiJElOU1RESVJcYmluIgogCi0gIDsgRGVsZXRlIGFnZW50IG90aGVyd2lzZSByZS1pbnN0YWxsaW5nIGEgZGlmZmVyZW50IGFnZW50IG1heSBub3Qgd29yayBiZWNhdXNlIG9mIGRhdGUgc3RhbXBzCi0gIERlbGV0ZSAiJElOU1RESVJcYmluXHNubXBkLmV4ZSIgIAotCi0gIFN0ckNtcCAkd2luRXh0RExMICIxIiBzZWMwMl93aW5FeHRETEwgc2VjMDJfbm9ybWFsCi0KLSAgc2VjMDJfd2luRXh0RExMOgotICA7RmlsZSAiYmluXHNubXBkLXdpbkV4dERMTC5leGUiCi0gIEZpbGUgL29uYW1lPXNubXBkLmV4ZSAiYmluXHNubXBkLXdpbkV4dERMTC5leGUiCi0gIGdvdG8gc2VjMDJfY29udGludWUKLQotICBzZWMwMl9ub3JtYWw6Ci0gIEZpbGUgImJpblxzbm1wZC5leGUiCi0KLSAgc2VjMDJfY29udGludWU6Ci0KLSAgU2V0T3V0UGF0aCAiJElOU1RESVJcc2hhcmVcc25tcFxzbm1wY29uZi1kYXRhXHNubXBkLWRhdGEiCi0gIEZpbGUgInNoYXJlXHNubXBcc25tcGNvbmYtZGF0YVxzbm1wZC1kYXRhXCouKiIKLSAgCi0gIDsgSWYgd2UgYXJlIG9uIGFuIE5UIHN5c3RlbSB0aGVuIGluc3RhbGwgdGhlIHNlcnZpY2UgYmF0Y2ggZmlsZXMuCi0gIENhbGwgSXNOVAotICBQb3AgJDEKLSAgU3RyQ21wICQxIDAgTm9TZXJ2aWNlCi0gIAotICBTZXRPdXRQYXRoICIkSU5TVERJUlwiCi0gIEZpbGUgInJlZ2lzdGVyYWdlbnQuYmF0IgotICBGaWxlICJ1bnJlZ2lzdGVyYWdlbnQuYmF0IgotICBDYWxsIENyZWF0ZUFnZW50QmF0cwotCi0gIENyZWF0ZURpcmVjdG9yeSAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2UiCi0gIENyZWF0ZVNob3J0Q3V0ICIkU01QUk9HUkFNU1wkSUNPTlNfR1JPVVBcU2VydmljZVxSZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHJlZ2lzdGVyYWdlbnQuYmF0IgotICBDcmVhdGVTaG9ydEN1dCAiJFNNUFJPR1JBTVNcJElDT05TX0dST1VQXFNlcnZpY2VcVW5yZWdpc3RlciBBZ2VudCBTZXJ2aWNlLmxuayIgIiRJTlNURElSXHVucmVnaXN0ZXJhZ2VudC5iYXQiCi0gIAotICBOb1NlcnZpY2U6Ci1GdW5jdGlvbkVuZApkaWZmIC0tZ2l0IGEvd2luMzIvbGliYWdlbnQvTWFrZWZpbGUuaW4gYi93aW4zMi9saWJhZ2VudC9NYWtlZmlsZS5pbgppbmRleCAwYjRkYmM0Li42OWIyNzcxIDEwMDY0NAotLS0gYS93aW4zMi9saWJhZ2VudC9NYWtlZmlsZS5pbgorKysgYi93aW4zMi9saWJhZ2VudC9NYWtlZmlsZS5pbgpAQCAtOSwzMSArOSwzNiBAQAogTlVMTD1udWwKICFFTkRJRiAKIAorQUxMIDogIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcGFnZW50LmxpYiIKKworCitMSUIzMl9PQkpTPSBcCisJIiQoSU5URElSKVxhZ2VudF9oYW5kbGVyLm9iaiIgXAorCSIkKElOVERJUilcYWdlbnRfaW5kZXgub2JqIiBcCisJIiQoSU5URElSKVxhZ2VudF9yZWFkX2NvbmZpZy5vYmoiIFwKKwkiJChJTlRESVIpXGFnZW50X3JlZ2lzdHJ5Lm9iaiIgXAorCSIkKElOVERJUilcYWdlbnRfc3lzT1JUYWJsZS5vYmoiIFwKKwkiJChJTlRESVIpXGFnZW50X3RyYXAub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2FnZW50Lm9iaiIgXAorCSIkKElOVERJUilcc25tcF92YXJzLm9iaiIKKworQ0xFQU4gOgorCS1AZm9yICVmIGluICgkKExJQjMyX09CSlMpKSBkbyBlcmFzZSAlJWYKKwktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCisJLUBlcmFzZSAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wYWdlbnQubGliIgorCisiLi5cbGliXCQoT1VURElSKSIgOgorICAgIGlmIG5vdCBleGlzdCAiLi5cbGliXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cbGliXCQoT1VURElSKSIKKworIiQoSU5URElSKSIgOgorICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCisKK0NQUD1jbC5leGUKICFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLUFMTCA6ICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBhZ2VudC5saWIiCi0KLQotQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudF9oYW5kbGVyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfaW5kZXgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudF9yZWFkX2NvbmZpZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50X3JlZ2lzdHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfdHJhcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfYWdlbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3ZhcnMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgotCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcGFnZW50LmxpYiIKLQotIi4uXGxpYlwkKE9VVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIi4uXGxpYlwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGxpYlwkKE9VVERJUikiCi0KLSIkKElOVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgotCi1DUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVxsaWJhZ2VudC5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorIUVMU0UKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorIUVORElGCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKICAgICQoQ1BQKSBAPDwKQEAgLTUwLDEyMiArNTUsMTYgQEAKICAgICQoQ1BQX1BST0opICQ8IAogPDwKIAotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8CiAKIFJTQz1yYy5leGUKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVxsaWJhZ2VudC5ic2MiIAotQlNDMzJfU0JSUz0gXAotCiBMSUIzMj1saW5rLmV4ZSAtbGliCiBMSUIzMl9GTEFHUz0vbm9sb2dvIC9vdXQ6Ii4uXGxpYlwkKE9VVERJUilcbmV0c25tcGFnZW50LmxpYiIgCi1MSUIzMl9PQkpTPSBcCi0JIiQoSU5URElSKVxhZ2VudF9oYW5kbGVyLm9iaiIgXAotCSIkKElOVERJUilcYWdlbnRfaW5kZXgub2JqIiBcCi0JIiQoSU5URElSKVxhZ2VudF9yZWFkX2NvbmZpZy5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50X3JlZ2lzdHJ5Lm9iaiIgXAotCSIkKElOVERJUilcYWdlbnRfdHJhcC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfYWdlbnQub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3ZhcnMub2JqIgogCiAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wYWdlbnQubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCiAgICAgJChMSUIzMikgQDw8CiAgICQoTElCMzJfRkxBR1MpICQoREVGX0ZMQUdTKSAkKExJQjMyX09CSlMpCiA8PAogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLUFMTCA6ICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBhZ2VudC5saWIiCi0KLQotQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudF9oYW5kbGVyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfaW5kZXgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudF9yZWFkX2NvbmZpZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50X3JlZ2lzdHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnRfdHJhcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfYWdlbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3ZhcnMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5wZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKLQktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBhZ2VudC5saWIiCi0KLSIuLlxsaWJcJChPVVRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIuLlxsaWJcJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxsaWJcJChPVVRESVIpIgotCi0iJChJTlRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKLQotQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVxsaWJhZ2VudC5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAotCi0uY3skKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLVJTQz1yYy5leGUKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVxsaWJhZ2VudC5ic2MiIAotQlNDMzJfU0JSUz0gXAotCi1MSUIzMj1saW5rLmV4ZSAtbGliCi1MSUIzMl9GTEFHUz0vbm9sb2dvIC9vdXQ6Ii4uXGxpYlwkKE9VVERJUilcbmV0c25tcGFnZW50LmxpYiIgCi1MSUIzMl9PQkpTPSBcCi0JIiQoSU5URElSKVxhZ2VudF9oYW5kbGVyLm9iaiIgXAotCSIkKElOVERJUilcYWdlbnRfaW5kZXgub2JqIiBcCi0JIiQoSU5URElSKVxhZ2VudF9yZWFkX2NvbmZpZy5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50X3JlZ2lzdHJ5Lm9iaiIgXAotCSIkKElOVERJUilcYWdlbnRfdHJhcC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfYWdlbnQub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3ZhcnMub2JqIgotCi0iLi5cbGliXCQoT1VURElSKVxuZXRzbm1wYWdlbnQubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCi0gICAgJChMSUIzMikgQDw8Ci0gICQoTElCMzJfRkxBR1MpICQoREVGX0ZMQUdTKSAkKExJQjMyX09CSlMpCi08PAotCi0hRU5ESUYgCi0KIAogIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKICFJRiBFWElTVFMoImxpYmFnZW50LmRlcCIpCkBAIC0xNzYsNyArNzUsNiBAQAogIUVORElGIAogCiAKLSFJRiAiJChDRkcpIiA9PSAicmVsZWFzZSIgfHwgIiQoQ0ZHKSIgPT0gImRlYnVnIgogU09VUkNFPS4uXC4uXGFnZW50XGFnZW50X2hhbmRsZXIuYwogCiAiJChJTlRESVIpXGFnZW50X2hhbmRsZXIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpAQCAtMjAwLDYgKzk4LDEwIEBACiAiJChJTlRESVIpXGFnZW50X3JlZ2lzdHJ5Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKK1NPVVJDRT0uLlwuLlxhZ2VudFxhZ2VudF9zeXNPUlRhYmxlLmMKKworIiQoSU5URElSKVxhZ2VudF9zeXNPUlRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIFNPVVJDRT0uLlwuLlxhZ2VudFxhZ2VudF90cmFwLmMKIApAQCAtMjE5LDcgKzEyMSwzIEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKLQotIUVORElGIAotCi0KZGlmZiAtLWdpdCBhL3dpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcCBiL3dpbjMyL2xpYmFnZW50L2xpYmFnZW50LmRzcAppbmRleCBmNzBkNDk0Li5kZTkyZjBlIDEwMDY0NAotLS0gYS93aW4zMi9saWJhZ2VudC9saWJhZ2VudC5kc3AKKysrIGIvd2luMzIvbGliYWdlbnQvbGliYWdlbnQuZHNwCkBAIC0xMDEsNiArMTAxLDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cYWdlbnRcYWdlbnRfc3lzT1JUYWJsZS5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPS4uXC4uXGFnZW50XGFnZW50X3RyYXAuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KQEAgLTEzMyw2ICsxMzcsMTAgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KK1NPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxhZ2VudFxhZ2VudF9zeXNPUlRhYmxlLmgiDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGFnZW50XGFnZW50X3RyYXAuaCINCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCmRpZmYgLS1naXQgYS93aW4zMi9saWJoZWxwZXJzL01ha2VmaWxlLmluIGIvd2luMzIvbGliaGVscGVycy9NYWtlZmlsZS5pbgppbmRleCAyNjNiY2QyLi5iYmM4MGU4IDEwMDY0NAotLS0gYS93aW4zMi9saWJoZWxwZXJzL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL2xpYmhlbHBlcnMvTWFrZWZpbGUuaW4KQEAgLTUxLDcgKzUxLDcgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXGxpYmhlbHBlcnMucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKIAogLmN7JChJTlRESVIpfS5vYmo6OgogICAgJChDUFApIEA8PApAQCAtMTY1LDcgKzE2NSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXGxpYmhlbHBlcnMucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAogCiAuY3skKElOVERJUil9Lm9iajo6CiAgICAkKENQUCkgQDw8CmRpZmYgLS1naXQgYS93aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4gYi93aW4zMi9saWJuZXRzbm1wdHJhcGQvTWFrZWZpbGUuaW4KaW5kZXggYjVjOGIyNS4uMzgyNDkxOSAxMDA2NDQKLS0tIGEvd2luMzIvbGlibmV0c25tcHRyYXBkL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL2xpYm5ldHNubXB0cmFwZC9NYWtlZmlsZS5pbgpAQCAtMTksNyArMTksNiBAQAogCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wdHJhcGRfaGFuZGxlcnMub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wdHJhcGRfbG9nLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcc25tcHRyYXBkX2F1dGgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCkBAIC0zMiw3ICszMSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcbGlibmV0c25tcHRyYXBkLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKICAgICQoQ1BQKSBAPDwKQEAgLTc2LDcgKzc1LDYgQEAKIAkiJChJTlRESVIpXHNubXB0cmFwZF9oYW5kbGVycy5vYmoiIFwKIAkiJChJTlRESVIpXHNubXB0cmFwZF9sb2cub2JqIiBcCiAJIiQoSU5URElSKVxzbm1wdHJhcGRfYXV0aC5vYmoiIFwKLQkiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiBcCiAJIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIKIAogIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcHRyYXBkLmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQpAQCAtOTQsNyArOTIsNiBAQAogCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wdHJhcGRfaGFuZGxlcnMub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wdHJhcGRfbG9nLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcc25tcHRyYXBkX2F1dGgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgogCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LnBkYiIKQEAgLTEwOCw3ICsxMDUsNyBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcbGlibmV0c25tcHRyYXBkLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvRUhzYyAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKIAogLmN7JChJTlRESVIpfS5vYmo6OgogICAgJChDUFApIEA8PApAQCAtMTUyLDcgKzE0OSw2IEBACiAJIiQoSU5URElSKVxzbm1wdHJhcGRfaGFuZGxlcnMub2JqIiBcCiAJIiQoSU5URElSKVxzbm1wdHJhcGRfbG9nLm9iaiIgXAogCSIkKElOVERJUilcc25tcHRyYXBkX2F1dGgub2JqIiBcCi0JIiQoSU5URElSKVxub3RpZmljYXRpb25fbG9nLm9iaiIgXAogCSIkKElOVERJUilcd2luc2VydmljZS5vYmoiCiAKICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXB0cmFwZC5saWIiIDogIi4uXGxpYlwkKE9VVERJUikiICQoREVGX0ZJTEUpICQoTElCMzJfT0JKUykKQEAgLTE5NywxMSArMTkzLDYgQEAKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG5vdGlmaWNhdGlvbi1sb2ctbWliXG5vdGlmaWNhdGlvbl9sb2cuYwotCi0iJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQogU09VUkNFPS4uXC4uXHNubXBsaWJcd2luc2VydmljZS5jCiAKICIkKElOVERJUilcd2luc2VydmljZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCmRpZmYgLS1naXQgYS93aW4zMi9saWJzZGxsLmRzdyBiL3dpbjMyL2xpYnNkbGwuZHN3CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTVjOTk5Li4wMDAwMDAwCi0tLSBhL3dpbjMyL2xpYnNkbGwuZHN3CisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gV29ya3NwYWNlIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jIFdBUk5JTkc6IERPIE5PVCBFRElUIE9SIERFTEVURSBUSElTIFdPUktTUEFDRSBGSUxFIQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAibGliYWdlbnQiPSIuXGxpYmFnZW50XGxpYmFnZW50LmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogImxpYmhlbHBlcnMiPSIuXGxpYmhlbHBlcnNcbGliaGVscGVycy5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJzbm1wX2RsbCI9Ii5cbGlic25tcF9kbGxcbGlic25tcF9kbGwuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAibmV0c25tcG1pYnMiPSIuXG5ldHNubXBtaWJzXG5ldHNubXBtaWJzLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLQ0KLVBhY2thZ2U9PDU+DQote3t7DQotfX19DQotDQotUGFja2FnZT08ND4NCi17e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogImxpYm5ldHNubXB0cmFwZCI9Ii5cbGlibmV0c25tcHRyYXBkXGxpYm5ldHNubXB0cmFwZC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLUdsb2JhbDoNCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDM+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KZGlmZiAtLWdpdCBhL3dpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4gYi93aW4zMi9saWJzbm1wL01ha2VmaWxlLmluCmluZGV4IDliMzZiYjguLmE1NWY1MTAgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXAvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvbGlic25tcC9NYWtlZmlsZS5pbgpAQCAtNjUsMTEgKzY1LDEzIEBACiAJLUBlcmFzZSAiJChJTlRESVIpXHN5c3RlbS5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHRvb2xzLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcc3RydG9rX3Iub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxzdHJ0b3VsbC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCiAJLUBlcmFzZSAiJChJTlRESVIpXHdpbnBpcGUub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVxmZF9ldmVudF9tYW5hZ2VyLm9iaiIKKwktQGVyYXNlICIkKElOVERJUilcbGFyZ2VfZmRfc2V0Lm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgogCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcC5saWIiCiAKQEAgLTgwLDcgKzgyLDcgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitDUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKIAogLmN7JChJTlRESVIpfS5vYmo6OgogICAgJChDUFApIEA8PApAQCAtMTcwLDEwICsxNzIsMTIgQEAKIAkiJChJTlRESVIpXHN5c3RlbS5vYmoiIFwKIAkiJChJTlRESVIpXHRvb2xzLm9iaiIgXAogCSIkKElOVERJUilcc3RydG9rX3Iub2JqIiBcCisJIiQoSU5URElSKVxzdHJ0b3VsbC5vYmoiIFwKIAkiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIiBcCiAJIiQoSU5URElSKVx2YWNtLm9iaiIgXAogCSIkKElOVERJUilcd2lucGlwZS5vYmoiIFwKLQkiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIgorCSIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiIFwKKwkiJChJTlRESVIpXGxhcmdlX2ZkX3NldC5vYmoiCiAKICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXAubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCiAgICAgJChMSUIzMikgQDw8CkBAIC0yMzYsMTIgKzI0MCwxNSBAQAogCS1AZXJhc2UgIiQoSU5URElSKVxzeXN0ZW0ub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx0b29scy5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHN0cnRva19yLm9iaiIKKwktQGVyYXNlICIkKElOVERJUilcc3RydG91bGwub2JqIgorCS1AZXJhc2UgIiQoSU5URElSKVxzdHJ0b3VsbC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIgogCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCiAJLUBlcmFzZSAiJChJTlRESVIpXHZjPz8ucGRiIgogCS1AZXJhc2UgIiQoSU5URElSKVx3aW5waXBlLm9iaiIKIAktQGVyYXNlICIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiCisJLUBlcmFzZSAiJChJTlRESVIpXGxhcmdlX2ZkX3NldC5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKIAktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXAubGliIgogCkBAIC0yNTIsNyArMjU5LDcgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKICAgICQoQ1BQKSBAPDwKQEAgLTM0MiwxMCArMzQ5LDEzIEBACiAJIiQoSU5URElSKVxzeXN0ZW0ub2JqIiBcCiAJIiQoSU5URElSKVx0b29scy5vYmoiIFwKIAkiJChJTlRESVIpXHN0cnRva19yLm9iaiIgXAorCSIkKElOVERJUilcc3RydG91bGwub2JqIiBcCisJIiQoSU5URElSKVxzdHJ0b3VsbC5vYmoiIFwKIAkiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIiBcCiAJIiQoSU5URElSKVx2YWNtLm9iaiIgXAogCSIkKElOVERJUilcd2lucGlwZS5vYmoiIFwKLQkiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIgorCSIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiIFwKKwkiJChJTlRESVIpXGxhcmdlX2ZkX3NldC5vYmoiCiAKICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXAubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCiAgICAgJChMSUIzMikgQDw8CkBAIC02NjUsNiArNjc1LDEyIEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKK1NPVVJDRT0uLlwuLlxzbm1wbGliXHN0cnRvdWxsLmMKKworIiQoSU5URElSKVxzdHJ0b3VsbC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKIFNPVVJDRT0uLlwuLlxzbm1wbGliXHVjZF9jb21wYXQuYwogCiAiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpAQCAtNjg5LDUgKzcwNSwxMSBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCitTT1VSQ0U9Li5cLi5cc25tcGxpYlxsYXJnZV9mZF9zZXQuYworCisiJChJTlRESVIpXGxhcmdlX2ZkX3NldC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKICFFTkRJRiAKIApkaWZmIC0tZ2l0IGEvd2luMzIvbGlic25tcC9saWJzbm1wLmRzcCBiL3dpbjMyL2xpYnNubXAvbGlic25tcC5kc3AKaW5kZXggMTZlZWEyZC4uY2JjZGExMiAxMDA2NDQKLS0tIGEvd2luMzIvbGlic25tcC9saWJzbm1wLmRzcAorKysgYi93aW4zMi9saWJzbm1wL2xpYnNubXAuZHNwCkBAIC0yODUsNiArMjg1LDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cc25tcGxpYlxzdHJ0b3VsbC5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPS4uXC4uXHNubXBsaWJcdWNkX2NvbXBhdC5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMjk5LDYgKzMwMywxMCBAQAogDQogU09VUkNFPS4uXC4uXHNubXBsaWJcZmRfZXZlbnRfbWFuYWdlci5jDQogIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNubXBsaWJcbGFyZ2VfZmRfc2V0LmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KICMgRW5kIEdyb3VwDQogIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KIA0KQEAgLTQ1NSw2ICs0NjMsMTQgQEAKIA0KIFNPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHZhY20uaCINCiAjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxmZF9ldmVudF9tYW5hZ2VyLmgiDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcbGFyZ2VfZmRfc2V0LmgiDQorIyBFbmQgU291cmNlIEZpbGUNCiAjIEVuZCBHcm91cA0KICMgRW5kIFRhcmdldA0KICMgRW5kIFByb2plY3QNCmRpZmYgLS1naXQgYS93aW4zMi9saWJzbm1wX2RsbC9NYWtlZmlsZS5pbiBiL3dpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluCmluZGV4IGJlZjcwYWUuLmU4MWUxZWIgMTAwNjQ0Ci0tLSBhL3dpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL2xpYnNubXBfZGxsL01ha2VmaWxlLmluCkBAIC0xMCw3MSArMTAsNzIgQEAKIE5VTEw9bnVsCiAhRU5ESUYgCiAKLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KIEFMTCA6ICIuLlxiaW5cJChPVVRESVIpXG5ldHNubXAuZGxsIgogCitMSU5LMzJfT0JKUz0gXAorCSIkKElOVERJUilcYXNuMS5vYmoiIFwKKwkiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIgXAorCSIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiIFwKKwkiJChJTlRESVIpXGNtdV9jb21wYXQub2JqIiBcCisJIiQoSU5URElSKVxjb250YWluZXIub2JqIiBcCisJIiQoSU5URElSKVxjb250YWluZXJfYmluYXJ5X2FycmF5Lm9iaiIgXAorCSIkKElOVERJUilcY29udGFpbmVyX2l0ZXJhdG9yLm9iaiIgXAorCSIkKElOVERJUilcY29udGFpbmVyX2xpc3Rfc3NsbC5vYmoiIFwKKwkiJChJTlRESVIpXGNvbnRhaW5lcl9udWxsLm9iaiIgXAorCSIkKElOVERJUilcZGF0YV9saXN0Lm9iaiIgXAorCSIkKElOVERJUilcZGVmYXVsdF9zdG9yZS5vYmoiIFwKKwkiJChJTlRESVIpXGdldG9wdC5vYmoiIFwKKwkiJChJTlRESVIpXGludDY0Lm9iaiIgXAorCSIkKElOVERJUilcaW5ldF9udG9wLm9iaiIgXAorCSIkKElOVERJUilcaW5ldF9wdG9uLm9iaiIgXAorCSIkKElOVERJUilca2V5dG9vbHMub2JqIiBcCisJIiQoSU5URElSKVxsY2RfdGltZS5vYmoiIFwKKwkiJChJTlRESVIpXG1kNS5vYmoiIFwKKwkiJChJTlRESVIpXG1pYi5vYmoiIFwKKwkiJChJTlRESVIpXG10X3N1cHBvcnQub2JqIiBcCisJIiQoSU5URElSKVxvaWRfc3Rhc2gub2JqIiBcCisJIiQoSU5URElSKVxwYXJzZS5vYmoiIFwKKwkiJChJTlRESVIpXHJlYWRfY29uZmlnLm9iaiIgXAorCSIkKElOVERJUilcc2NhcGkub2JqIiBcCisJIiQoSU5URElSKVxzbm1wLXRjLm9iaiIgXAorCSIkKElOVERJUilcc25tcC5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfYWxhcm0ub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX2FwaS5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfYXV0aC5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfY2xpZW50Lm9iaiIgXAorCSIkKElOVERJUilcc25tcF9kZWJ1Zy5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfZW51bS5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfbG9nZ2luZy5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfcGFyc2VfYXJncy5vYmoiIFwKKwkiJChJTlRESVIpXHNubXBfc2VjbW9kLm9iaiIgXAorCSIkKElOVERJUilcc25tcF90cmFuc3BvcnQub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX3ZlcnNpb24ub2JqIiBcCisJIiQoSU5URElSKVxzbm1wX3NlcnZpY2Uub2JqIiBcCisJIiQoSU5URElSKVxzbm1wQ2FsbGJhY2tEb21haW4ub2JqIiBcCisJIiQoSU5URElSKVxzbm1wVENQRG9tYWluLm9iaiIgXAorCSIkKElOVERJUilcc25tcFRDUElQdjZEb21haW4ub2JqIiBcCisJIiQoSU5URElSKVxzbm1wVURQRG9tYWluLm9iaiIgXAorCSIkKElOVERJUilcc25tcFVEUElQdjZEb21haW4ub2JqIiBcCisJIiQoSU5URElSKVxzbm1wdXNtLm9iaiIgXAorCSIkKElOVERJUilcc25tcHYzLm9iaiIgXAorCSIkKElOVERJUilcc3RybGNhdC5vYmoiIFwKKwkiJChJTlRESVIpXHN0cmxjcHkub2JqIiBcCisJIiQoSU5URElSKVxzeXN0ZW0ub2JqIiBcCisJIiQoSU5URElSKVx0b29scy5vYmoiIFwKKwkiJChJTlRESVIpXHN0cnRva19yLm9iaiIgXAorCSIkKElOVERJUilcc3RydG91bGwub2JqIiBcCisJIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIgXAorCSIkKElOVERJUilcdmFjbS5vYmoiIFwKKwkiJChJTlRESVIpXHdpbnBpcGUub2JqIiBcCisJIiQoSU5URElSKVxmZF9ldmVudF9tYW5hZ2VyLm9iaiIgXAorCSIkKElOVERJUilcbGFyZ2VfZmRfc2V0Lm9iaiIKIAogQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhc24xLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY2FsbGJhY2sub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjaGVja192YXJiaW5kLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY211X2NvbXBhdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNvbnRhaW5lci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjb250YWluZXJfaXRlcmF0b3Iub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjb250YWluZXJfbGlzdF9zc2xsLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY29udGFpbmVyX251bGwub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxkYXRhX2xpc3Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxkZWZhdWx0X3N0b3JlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZ2V0b3B0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaW50NjQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0X250b3Aub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpbmV0X3B0b24ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxrZXl0b29scy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGxjZF90aW1lLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWQ1Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWliLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRfc3VwcG9ydC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG9pZF9zdGFzaC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHBhcnNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccmVhZF9jb25maWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzY2FwaS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXAtdGMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9hbGFybS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfYXBpLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9hdXRoLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9jbGllbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2RlYnVnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9lbnVtLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9sb2dnaW5nLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9wYXJzZV9hcmdzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9zZWNtb2Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3RyYW5zcG9ydC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfdmVyc2lvbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfc2VydmljZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBDYWxsYmFja0RvbWFpbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBUQ1BEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVENQSVB2NkRvbWFpbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBVRFBEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVURQSVB2NkRvbWFpbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXB1c20ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wdjMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzdHJsY2F0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3RybGNweS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN5c3RlbS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRvb2xzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3RydG9rX3Iub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5waXBlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKKwktQGZvciAlZiBpbiAoJChMSU5LMzJfT0JKUykpIGRvIGVyYXNlICUlZgogCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcC5leHAiCiAJLUBlcmFzZSAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wLmxpYiIKIAktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXG5ldHNubXAuZGxsIgorCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcbmV0c25tcC5kbGwubWFuaWZlc3QiCiAKICIuLlxsaWJcJChPVVRESVIpIiA6CiAgICAgaWYgbm90IGV4aXN0ICIuLlxsaWJcJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxsaWJcJChPVVRESVIpIgpAQCAtODYsNyArODcsMTEgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiTkVUU05NUF9ETEwiIC9GcCIkKElOVERJUilcbGlic25tcF9kbGwucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCitDUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0QgIk5FVFNOTVBfRExMIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorIUVMU0UKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9EICJORVRTTk1QX0RMTCIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFFTkRJRgogCiAuY3skKElOVERJUil9Lm9iajo6CiAgICAkKENQUCkgQDw8CkBAIC0xMDMsMjcyICsxMDgsMjMgQEAKICAgICQoQ1BQX1BST0opICQ8IAogPDwKIAotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KIE1UTD1taWRsLmV4ZQogTVRMX1BST0o9L25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL28gIk5VTCIgL3dpbjMyIAogUlNDPXJjLmV4ZQotQlNDMzI9YnNjbWFrZS5leGUKLUJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChJTlRESVIpXGxpYnNubXBfZGxsLmJzYyIgCi1CU0MzMl9TQlJTPSBcCi0KIExJTkszMj1saW5rLmV4ZQotTElOSzMyX0ZMQUdTPWFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kbGwgL3BkYjoiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLnBkYiIgL2RlYnVnIC9tYWNoaW5lOkkzODYgL2RlZjoiLlxsaWJzbm1wLmRlZiIgL291dDoiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLmRsbCIgL2ltcGxpYjoiLi4vbGliLyQoT1VURElSKVxuZXRzbm1wLmxpYiIgCi1MSU5LMzJfT0JKUz0gXAotCSIkKElOVERJUilcYXNuMS5vYmoiIFwKLQkiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIgXAotCSIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiIFwKLQkiJChJTlRESVIpXGNtdV9jb21wYXQub2JqIiBcCi0JIiQoSU5URElSKVxjb250YWluZXIub2JqIiBcCi0JIiQoSU5URElSKVxjb250YWluZXJfYmluYXJ5X2FycmF5Lm9iaiIgXAotCSIkKElOVERJUilcY29udGFpbmVyX2l0ZXJhdG9yLm9iaiIgXAotCSIkKElOVERJUilcY29udGFpbmVyX2xpc3Rfc3NsbC5vYmoiIFwKLQkiJChJTlRESVIpXGNvbnRhaW5lcl9udWxsLm9iaiIgXAotCSIkKElOVERJUilcZGF0YV9saXN0Lm9iaiIgXAotCSIkKElOVERJUilcZGVmYXVsdF9zdG9yZS5vYmoiIFwKLQkiJChJTlRESVIpXGdldG9wdC5vYmoiIFwKLQkiJChJTlRESVIpXGludDY0Lm9iaiIgXAotCSIkKElOVERJUilcaW5ldF9udG9wLm9iaiIgXAotCSIkKElOVERJUilcaW5ldF9wdG9uLm9iaiIgXAotCSIkKElOVERJUilca2V5dG9vbHMub2JqIiBcCi0JIiQoSU5URElSKVxsY2RfdGltZS5vYmoiIFwKLQkiJChJTlRESVIpXG1kNS5vYmoiIFwKLQkiJChJTlRESVIpXG1pYi5vYmoiIFwKLQkiJChJTlRESVIpXG10X3N1cHBvcnQub2JqIiBcCi0JIiQoSU5URElSKVxvaWRfc3Rhc2gub2JqIiBcCi0JIiQoSU5URElSKVxwYXJzZS5vYmoiIFwKLQkiJChJTlRESVIpXHJlYWRfY29uZmlnLm9iaiIgXAotCSIkKElOVERJUilcc2NhcGkub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wLXRjLm9iaiIgXAotCSIkKElOVERJUilcc25tcC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfYWxhcm0ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2FwaS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfYXV0aC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfY2xpZW50Lm9iaiIgXAotCSIkKElOVERJUilcc25tcF9kZWJ1Zy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfZW51bS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfbG9nZ2luZy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfcGFyc2VfYXJncy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfc2VjbW9kLm9iaiIgXAotCSIkKElOVERJUilcc25tcF90cmFuc3BvcnQub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3ZlcnNpb24ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3NlcnZpY2Uub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wQ2FsbGJhY2tEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVENQRG9tYWluLm9iaiIgXAotCSIkKElOVERJUilcc25tcFRDUElQdjZEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVURQRG9tYWluLm9iaiIgXAotCSIkKElOVERJUilcc25tcFVEUElQdjZEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wdXNtLm9iaiIgXAotCSIkKElOVERJUilcc25tcHYzLm9iaiIgXAotCSIkKElOVERJUilcc3RybGNhdC5vYmoiIFwKLQkiJChJTlRESVIpXHN0cmxjcHkub2JqIiBcCi0JIiQoSU5URElSKVxzeXN0ZW0ub2JqIiBcCi0JIiQoSU5URElSKVx0b29scy5vYmoiIFwKLQkiJChJTlRESVIpXHN0cnRva19yLm9iaiIgXAotCSIkKElOVERJUilcdWNkX2NvbXBhdC5vYmoiIFwKLQkiJChJTlRESVIpXHZhY20ub2JqIiBcCi0JIiQoSU5URElSKVx3aW5waXBlLm9iaiIgXAotCSIkKElOVERJUilcZmRfZXZlbnRfbWFuYWdlci5vYmoiCishSUYgICIkKENGRykiID09ICJyZWxlYXNlIgorTElOSzMyX0ZMQUdTPWFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kbGwgL3BkYjoiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLnBkYiIgL2RlYnVnIC9kZWY6Ii5cbGlic25tcC5kZWYiIC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvbmV0c25tcC5kbGwiIC9pbXBsaWI6Ii4uL2xpYi8kKE9VVERJUikvbmV0c25tcC5saWIiIAorIUVMU0UKK0xJTkszMl9GTEFHUz1hZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGxsIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIuLi9iaW4vJChPVVRESVIpL25ldHNubXAucGRiIiAvZGVidWcgL2RlZjoiLlxsaWJzbm1wLmRlZiIgL291dDoiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLmRsbCIgL2ltcGxpYjoiLi4vbGliLyQoT1VURElSKS9uZXRzbm1wLmxpYiIgCishRU5ESUYKIAogIi4uXGJpblwkKE9VVERJUilcbmV0c25tcC5kbGwiIDogIi4uXGJpblwkKE9VVERJUikiICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJTkszMl9PQkpTKQogICAgICQoTElOSzMyKSBAPDwKICAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCiA8PAotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLUFMTCA6ICIuLlxiaW5cJChPVVRESVIpXG5ldHNubXAuZGxsIgotCi0KLUNMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYXNuMS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNhbGxiYWNrLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY2hlY2tfdmFyYmluZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNtdV9jb21wYXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjb250YWluZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjb250YWluZXJfYmluYXJ5X2FycmF5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY29udGFpbmVyX2l0ZXJhdG9yLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY29udGFpbmVyX2xpc3Rfc3NsbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNvbnRhaW5lcl9udWxsLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZGF0YV9saXN0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZGVmYXVsdF9zdG9yZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGdldG9wdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGludDY0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaW5ldF9udG9wLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaW5ldF9wdG9uLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilca2V5dG9vbHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxsY2RfdGltZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1kNS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10X3N1cHBvcnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxvaWRfc3Rhc2gub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwYXJzZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHJlYWRfY29uZmlnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc2NhcGkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wLXRjLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfYWxhcm0ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX2FwaS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfYXV0aC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfY2xpZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9kZWJ1Zy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfZW51bS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfbG9nZ2luZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfcGFyc2VfYXJncy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBfc2VjbW9kLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF90cmFuc3BvcnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3ZlcnNpb24ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX3NlcnZpY2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wQ2FsbGJhY2tEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVENQRG9tYWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRDUElQdjZEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVURQRG9tYWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFVEUElQdjZEb21haW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wdXNtLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcHYzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3RybGNhdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN0cmxjcHkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzeXN0ZW0ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0b29scy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN0cnRva19yLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdWNkX2NvbXBhdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY20ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5wZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHdpbnBpcGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxmZF9ldmVudF9tYW5hZ2VyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgotCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcC5leHAiCi0JLUBlcmFzZSAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wLmxpYiIKLQktQGVyYXNlICIkKElOVERJUilcbmV0c25tcC5wZGIiCi0JLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVxuZXRzbm1wLmRsbCIKLQotIi4uXGxpYlwkKE9VVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIi4uXGxpYlwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGxpYlwkKE9VVERJUikiCi0KLSIuLlxiaW5cJChPVVRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgotCi0iJChJTlRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKLQotQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiTkVUU05NUF9ETEwiIC9GcCIkKElOVERJUilcbGlic25tcF9kbGwucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKLQotLmN7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi1NVEw9bWlkbC5leGUKLU1UTF9QUk9KPS9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC9vICJOVUwiIC93aW4zMiAKLVJTQz1yYy5leGUKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVxsaWJzbm1wX2RsbC5ic2MiIAotQlNDMzJfU0JSUz0gXAotCisgaWYgZXhpc3QgIi4uL2Jpbi8kKE9VVERJUikvbmV0c25tcC5kbGwubWFuaWZlc3QiIFwKKwkgICAgbXQuZXhlIC1tYW5pZmVzdCAiLi4vYmluLyQoT1VURElSKS9uZXRzbm1wLmRsbC5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIuLi9iaW4vJChPVVRESVIpL25ldHNubXAuZGxsIjsyCiBMSU5LMzI9bGluay5leGUKLUxJTkszMl9GTEFHUz1hZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvZGxsIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIuLi9iaW4vJChPVVRESVIpXG5ldHNubXAucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvZGVmOiIuXGxpYnNubXAuZGVmIiAvb3V0OiIuLi9iaW4vJChPVVRESVIpL25ldHNubXAuZGxsIiAvaW1wbGliOiIuLi9saWIvJChPVVRESVIpXG5ldHNubXAubGliIiAKLUxJTkszMl9PQkpTPSBcCi0JIiQoSU5URElSKVxhc24xLm9iaiIgXAotCSIkKElOVERJUilcY2FsbGJhY2sub2JqIiBcCi0JIiQoSU5URElSKVxjaGVja192YXJiaW5kLm9iaiIgXAotCSIkKElOVERJUilcY211X2NvbXBhdC5vYmoiIFwKLQkiJChJTlRESVIpXGNvbnRhaW5lci5vYmoiIFwKLQkiJChJTlRESVIpXGNvbnRhaW5lcl9iaW5hcnlfYXJyYXkub2JqIiBcCi0JIiQoSU5URElSKVxjb250YWluZXJfaXRlcmF0b3Iub2JqIiBcCi0JIiQoSU5URElSKVxjb250YWluZXJfbGlzdF9zc2xsLm9iaiIgXAotCSIkKElOVERJUilcY29udGFpbmVyX251bGwub2JqIiBcCi0JIiQoSU5URElSKVxkYXRhX2xpc3Qub2JqIiBcCi0JIiQoSU5URElSKVxkZWZhdWx0X3N0b3JlLm9iaiIgXAotCSIkKElOVERJUilcZ2V0b3B0Lm9iaiIgXAotCSIkKElOVERJUilcaW50NjQub2JqIiBcCi0JIiQoSU5URElSKVxpbmV0X250b3Aub2JqIiBcCi0JIiQoSU5URElSKVxpbmV0X3B0b24ub2JqIiBcCi0JIiQoSU5URElSKVxrZXl0b29scy5vYmoiIFwKLQkiJChJTlRESVIpXGxjZF90aW1lLm9iaiIgXAotCSIkKElOVERJUilcbWQ1Lm9iaiIgXAotCSIkKElOVERJUilcbWliLm9iaiIgXAotCSIkKElOVERJUilcbXRfc3VwcG9ydC5vYmoiIFwKLQkiJChJTlRESVIpXG9pZF9zdGFzaC5vYmoiIFwKLQkiJChJTlRESVIpXHBhcnNlLm9iaiIgXAotCSIkKElOVERJUilccmVhZF9jb25maWcub2JqIiBcCi0JIiQoSU5URElSKVxzY2FwaS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXAtdGMub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9hbGFybS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfYXBpLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9hdXRoLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9jbGllbnQub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX2RlYnVnLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9lbnVtLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9sb2dnaW5nLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9wYXJzZV9hcmdzLm9iaiIgXAotCSIkKElOVERJUilcc25tcF9zZWNtb2Qub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX3RyYW5zcG9ydC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfdmVyc2lvbi5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfc2VydmljZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBDYWxsYmFja0RvbWFpbi5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBUQ1BEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVENQSVB2NkRvbWFpbi5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBVRFBEb21haW4ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVURQSVB2NkRvbWFpbi5vYmoiIFwKLQkiJChJTlRESVIpXHNubXB1c20ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wdjMub2JqIiBcCi0JIiQoSU5URElSKVxzdHJsY2F0Lm9iaiIgXAotCSIkKElOVERJUilcc3RybGNweS5vYmoiIFwKLQkiJChJTlRESVIpXHN5c3RlbS5vYmoiIFwKLQkiJChJTlRESVIpXHRvb2xzLm9iaiIgXAotCSIkKElOVERJUilcc3RydG9rX3Iub2JqIiBcCi0JIiQoSU5URElSKVx1Y2RfY29tcGF0Lm9iaiIgXAotCSIkKElOVERJUilcdmFjbS5vYmoiIFwKLQkiJChJTlRESVIpXHdpbnBpcGUub2JqIiBcCi0JIiQoSU5URElSKVxmZF9ldmVudF9tYW5hZ2VyLm9iaiIKLQotIi4uXGJpblwkKE9VVERJUilcbmV0c25tcC5kbGwiIDogIi4uXGJpblwkKE9VVERJUikiICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJTkszMl9PQkpTKQotICAgICQoTElOSzMyKSBAPDwKLSAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCi08PAotCi0hRU5ESUYgCiAKIAogIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKQEAgLTM4MCw3ICsxMzYsNiBAQAogIUVORElGIAogCiAKLSFJRiAiJChDRkcpIiA9PSAicmVsZWFzZSIgfHwgIiQoQ0ZHKSIgPT0gImRlYnVnIgogU09VUkNFPS4uXC4uXHNubXBsaWJcYXNuMS5jCiAKICIkKElOVERJUilcYXNuMS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCkBAIC02ODEsNiArNDM2LDEyIEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKK1NPVVJDRT0uLlwuLlxzbm1wbGliXHN0cnRvdWxsLmMKKworIiQoSU5URElSKVxzdHJ0b3VsbC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKIFNPVVJDRT0uLlwuLlxzbm1wbGliXHVjZF9jb21wYXQuYwogCiAiJChJTlRESVIpXHVjZF9jb21wYXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgpAQCAtNjk4LDEyICs0NTksMTYgQEAKICIkKElOVERJUilcd2lucGlwZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCisKIFNPVVJDRT0uLlwuLlxzbm1wbGliXGZkX2V2ZW50X21hbmFnZXIuYwogCiAiJChJTlRESVIpXGZkX2V2ZW50X21hbmFnZXIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCi0hRU5ESUYgCitTT1VSQ0U9Li5cLi5cc25tcGxpYlxsYXJnZV9mZF9zZXQuYworCisiJChJTlRESVIpXGxhcmdlX2ZkX3NldC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKZGlmZiAtLWdpdCBhL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXAuZGVmIGIvd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYKaW5kZXggNDY3MGZiNi4uYzYxOTkwNCAxMDA2NDQKLS0tIGEvd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYKKysrIGIvd2luMzIvbGlic25tcF9kbGwvbGlic25tcC5kZWYKQEAgLTE2OCw2ICsxNjgsOSBAQAogCXNubXBfZ2V0X2RvX2RlYnVnZ2luZwogCWRlYnVnX2luZGVudAogCWRlYnVnX2luZGVudF9hZGQKKyAgICAgICAgZGVidWdfaW5kZW50X2dldAorICAgICAgICBkZWJ1Z19jb25maWdfcmVnaXN0ZXJfdG9rZW5zCisgICAgICAgIGRlYnVnX2NvbmZpZ190dXJuX29uX2RlYnVnZ2luZwogCWRlYnVnX2lzX3Rva2VuX3JlZ2lzdGVyZWQKIAlkZWJ1Z21zZwogCWRlYnVnbXNnX2hleApAQCAtMzA1LDYgKzMwOCw3IEBACiAJc25tcF9yZWFsbG9jCiAgICAgICBuZXRzbm1wX2NvbmZpZwogICAgICAgbmV0c25tcF9jb25maWdfcmVtZW1iZXIKKyAgICAgIG5ldHNubXBfY29uZmlnX2Vycm9yCiAgICAgICBzbm1wX2hleF90b19iaW5hcnkKICAgICAgIHNubXB2M19vcHRpb25zCiAgICAgICBuZXRzbm1wX2dldF92ZXJzaW9uCkBAIC0zOTMsNiArMzk3LDcgQEAKIAluZXRzbm1wX2RhZW1vbml6ZQogCXNubXBfbG9nX29wdGlvbnNfdXNhZ2UKIAluZXRzbm1wX2NvbnRhaW5lcl9mcmVlX2xpc3QKKwluZXRzbm1wX2NvbnRhaW5lcl9zaW1wbGVfZnJlZQogCW5ldHNubXBfb2lkX3N0YXNoX2dldG5leHRfbm9kZQogCW5ldHNubXBfb2lkX3N0YXNoX2ZyZWUKIAluZXRzbm1wX2dldF9saXN0X25vZGUKQEAgLTQxMiw2ICs0MTcsNyBAQAogCW5ldHNubXBfdWRwNl9hZ2VudF9jb25maWdfdG9rZW5zX3JlZ2lzdGVyCiAJaW5pdF91c21fY29uZgogCXN0cnRva19yCisgICAgICAgIHN0cnRvdWxsCiAgICAgICAgIHNubXBfcmVzZXRfdmFyX2J1ZmZlcnMKICAgICAgICAgbmV0c25tcF9jb250YWluZXJfYWRkX2luZGV4CiAgICAgICAgIG5ldHNubXBfY29udGFpbmVyX2ZpbmQKQEAgLTQyNiw2ICs0MzIsNyBAQAogICAgICAgICBza2lwX3Rva2VuCiAgICAgICAgIHBhcnNlX3NlY0xldmVsX2NvbmYKICAgICAgICAgbmV0c25tcF9xdWVyeV9nZXRfZGVmYXVsdF9zZXNzaW9uCisgICAgICAgIG5ldHNubXBfcXVlcnlfZ2V0X2RlZmF1bHRfc2Vzc2lvbl91bmNoZWNrZWQKICAgICAgICAgbmV0c25tcF9xdWVyeV9zZXRfZGVmYXVsdF9zZXNzaW9uCiAgICAgICAgIG5ldHNubXBfZHNfcGFyc2VfYm9vbGVhbgogICAgICAgICBuZXRzbm1wX3JlZ2lzdGVyX2RlZmF1bHRfdGFyZ2V0CkBAIC00NTAsMTAgKzQ1NywyMSBAQAogICAgICAgICBuZXRzbm1wX3F1ZXJ5X3dhbGsKICAgICAgICAgbmV0c25tcF9xdWVyeV9nZXRuZXh0CiAgICAgICAgIG5ldHNubXBfcXVlcnlfZ2V0Ci0JbmV0c25tcF9ta3RlbXAKKyAgICAgICAgbmV0c25tcF9nZXRob3N0YnluYW1lX3Y0CisgICAgICAgIG5ldHNubXBfc3RyX3RvX2dpZAorICAgICAgICBuZXRzbm1wX21rdGVtcAorICAgICAgICBuZXRzbm1wX3N0cl90b191aWQKKyAgICAgICAgbmV0c25tcF9jaGVja192Yl90cnV0aHZhbHVlCisgICAgICAgIHNubXBfc2V0X3Zhcl90eXBlZF9pbnRlZ2VyCisgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfc2V0X2NsZWFudXAKKyAgICAgICAgbmV0c25tcF9sYXJnZV9mZF9zZXRfaW5pdAorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX2lzX3NldAorICAgICAgICBuZXRzbm1wX2xhcmdlX2ZkX3NldGZkCisgICAgICAgIG5ldHNubXBfbGFyZ2VfZmRfY2xyCisgICAgICAgIHNubXBfcmVhZDIKKyAgICAgICAgbmV0c25tcF9kaXNwYXRjaF9leHRlcm5hbF9ldmVudHMyCisgICAgICAgIG5ldHNubXBfZXh0ZXJuYWxfZXZlbnRfaW5mbzIKKyAgICAgICAgc25tcF9zZWxlY3RfaW5mbzIKKyAgICAgICAgc3ByaW50X3JlYWxsb2NfaGV4c3RyaW5nCisgICAgICAgIG5ldHNubXBfc2V0X2xpbmVfYnVmZmVyaW5nCiAgICAgICAgIGRlYnVnbXNnX3N1Ym9pZAotO0lQdjYgICAgICAgIG5ldHNubXBfdWRwNl9wYXJzZV9zZWN1cml0eQotO0lQdjYgICAgICAgIG5ldHNubXBfdWRwNl9nZXRTZWNOYW1lCi07SVB2NiAgICAgICAgbmV0c25tcF9UQ1BJUHY2RG9tYWluCi07SVB2NiAgICAgICAgbmV0c25tcF9VRFBJUHY2RG9tYWluCi0KZGlmZiAtLWdpdCBhL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcCBiL3dpbjMyL2xpYnNubXBfZGxsL2xpYnNubXBfZGxsLmRzcAppbmRleCBlY2I5ZDVlLi5jYjA0MDNhIDEwMDY0NAotLS0gYS93aW4zMi9saWJzbm1wX2RsbC9saWJzbm1wX2RsbC5kc3AKKysrIGIvd2luMzIvbGlic25tcF9kbGwvbGlic25tcF9kbGwuZHNwCkBAIC0yOTIsNiArMjkyLDEwIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCitTT1VSQ0U9Li5cLi5cc25tcGxpYlxzdHJ0b3VsbC5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPS4uXC4uXHNubXBsaWJcdWNkX2NvbXBhdC5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMzA2LDYgKzMxMCwxMCBAQAogDQogU09VUkNFPS4uXC4uXHNubXBsaWJcZmRfZXZlbnRfbWFuYWdlci5jDQogIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXHNubXBsaWJcbGFyZ2VfZmRfc2V0LmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KICMgRW5kIEdyb3VwDQogIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KIA0KQEAgLTQ2Miw2ICs0NzAsMTggQEAKIA0KIFNPVVJDRT0iLi5cLi5caW5jbHVkZVxuZXQtc25tcFxsaWJyYXJ5XHZhY20uaCINCiAjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Ii4uXC4uXGluY2x1ZGVcbmV0LXNubXBcbGlicmFyeVxmZF9ldmVudF9tYW5hZ2VyLmgiDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPSIuLlwuLlxpbmNsdWRlXG5ldC1zbm1wXGxpYnJhcnlcbGFyZ2VfZmRfc2V0LmgiDQorIyBFbmQgU291cmNlIEZpbGUNCiAjIEVuZCBHcm91cA0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9LlxsaWJzbm1wLmRlZg0KKyMgRW5kIFNvdXJjZSBGaWxlDQogIyBFbmQgVGFyZ2V0DQogIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmggYi93aW4zMi9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCmluZGV4IDk1NjYyYWQuLmQ5ODFjODAgMTAwNjQ0Ci0tLSBhL3dpbjMyL25ldC1zbm1wL2FnZW50L21pYl9tb2R1bGVfY29uZmlnLmgKKysrIGIvd2luMzIvbmV0LXNubXAvYWdlbnQvbWliX21vZHVsZV9jb25maWcuaApAQCAtMTgsOCArMTgsNiBAQAogLyogRGVmaW5lIGlmIGNvbXBpbGluZyB3aXRoIHRoZSBub3RpZmljYXRpb24tbG9nLW1pYiBtb2R1bGUgZmlsZXMuICovCiAjaWZkZWYgSEFWRV9XSU4zMl9QTEFURk9STV9TREsKICNkZWZpbmUgVVNJTkdfTk9USUZJQ0FUSU9OX0xPR19NSUJfTk9USUZJQ0FUSU9OX0xPR19NT0RVTEUgMQotI2Vsc2UKLS8qICN1bmRlZiBVU0lOR19OT1RJRklDQVRJT05fTE9HX01JQl9OT1RJRklDQVRJT05fTE9HX01PRFVMRSAqLwogI2VuZGlmCiAKIC8qIERlZmluZSBpZiBjb21waWxpbmcgd2l0aCB0aGUgdGFyZ2V0IG1vZHVsZSBmaWxlcy4gICovCmRpZmYgLS1naXQgYS93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaCBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCmluZGV4IGE2ODI2YjMuLjc1MjM0MDIgMTAwNjQ0Ci0tLSBhL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCisrKyBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oCkBAIC0xMyw2ICsxMywxOSBAQAogICAgMTIwMCA9ICA2LjAKICovCiAKKyNpZmRlZiBfTVNDX1ZFUgorLyogRGlzYWJsZSB3YXJuaW5nIDQwMTg6IHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaC4gKi8KKyNwcmFnbWEgd2FybmluZyAoZGlzYWJsZTogNDAxOCkKKyNlbmRpZgorCisvKiBBdXRvbWF0aWNhbGx5IHNldCBieSBXaW5kb3dzIHBlcmwgQ29uZmlndXJlIHNjcmlwdC4KKyAqIFdoZW4gY29tcGlsaW5nIHdpdGggdGhlIE1TVkMgd29ya3NwYWNlLCB0aGlzIG11c3QgYmUgc2V0IG1hbnVhbGx5LgorICogU2VlIHRoZSBQQUNLQUdFX1ZFUlNJT04gdmFyaWFibGUgaW4gVW5peCAvY29uZmlndXJlIHNjcmlwdAorKi8KKyNpZm5kZWYgUEFDS0FHRV9WRVJTSU9OCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidW5rbm93biIKKyNlbmRpZgorCiAvKiBEZWZpbmUgSEFWRV9XSU4zMl9QTEFURk9STV9TREsgaWYgeW91IGhhdmU6CiAgKiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBNU1ZDIDYuMCBhbmQgdGhlIFBsYXRmb3JtIFNESyAoUFNESykKICAqIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvLk5ldCAyMDAyCkBAIC0yMCw5ICszMywxMyBAQAogICogQ3lnd2luCiAgKiBNaW5HVyAKICAqLwotLyogI3VuZGVmIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLICovCisjZGVmaW5lIEhBVkVfV0lOMzJfUExBVEZPUk1fU0RLCiAKLS8qIE9ubHkgdXNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9ucyBhdmFpbGFibGUgb24gV2luZG93cyAyMDAwIFNQNCBvciBsYXRlci4KKy8qIERlZmluZSBORVRTTk1QX0VOQUJMRV9JUFY2IHRvIGVuYWJsZSBJUHY2LiAgSVB2NiBpcyBvbmx5IGF2YWlsYWJsZSBvbgorICogV2luZG93cyBYUCBhbmQgaGlnaGVyLiAgKi8KKy8qICN1bmRlZiBORVRTTk1QX0VOQUJMRV9JUFY2ICovCisKKy8qIE9ubHkgdXNlIFdpbmRvd3MgQVBJIGZ1bmN0aW9ucyBhdmFpbGFibGUgb24gV2luZG93cyAyMDAwIFNQNCBvciBsYXRlci4gIAogICogV2UgbmVlZCBhdCBsZWFzdCBTUDEgZm9yIHNvbWUgSVB2NiBkZWZpbmVzIGluIHdzMmlwZGVmLmguCiAgKiBPbmx5IGRlZmluZSBfV0lOMzJfV0lOTlQgd2hlbiBub3QgYmVpbmcgY29tcGlsZWQgd2l0aCBNU1ZDIDYgd2l0aG91dCBQU0RLCiAgKiBiZWNhdXNlIHRoZXJlIGlzIGEgYnVnIGluIHRoZSBNU1ZDIDYgaGVhZGVyIDx3aW5zb2NrLmg+IHRoYXQgY2F1c2VzCkBAIC0yMzMsMTMgKzI1MCwxNCBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjZ2V0bmV4dCcgZnVuY3Rpb24uICovCiAvKiAjdW5kZWYgSEFWRV9DR0VUTkVYVCAqLwogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGNydGRiZy5oPiBoZWFkZXIgZmlsZS4gKi8KKyNkZWZpbmUgSEFWRV9DUlREQkdfSCAxCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZWN0Lmg+IGhlYWRlciBmaWxlLiAqLwotLyogI3VuZGVmIEhBVkVfRElSRUNUX0ggKi8KKyNkZWZpbmUgSEFWRV9ESVJFQ1RfSCAxCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY2hvd24nIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfQ0hPV04gKi8KLQotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlbnQuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLiAgKi8KKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGlyZW50Lmg+IGhlYWRlciBmaWxlLCBhbmQgaXQgZGVmaW5lcyBgRElSJy4KKyAgICovCiAvKiAjdW5kZWYgSEFWRV9ESVJFTlRfSCAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRsZmNuLmg+IGhlYWRlciBmaWxlLiAqLwpAQCAtMzY1LDkgKzM4Myw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNyeXB0bycgbGlicmFyeSAoLWxjcnlwdG8pLiAqLwogLyogI3VuZGVmIEhBVkVfTElCQ1JZUFRPICovCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZGwnIGxpYnJhcnkgKC1sZGwpLiAqLwotLyogI3VuZGVmIEhBVkVfTElCREwgKi8KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBlZmVuY2UnIGxpYnJhcnkgKC1sZWZlbmNlKS4gKi8KIC8qICN1bmRlZiBIQVZFX0xJQkVGRU5DRSAqLwogCkBAIC0zNzcsOSArMzkyLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBga3N0YXQnIGxpYnJhcnkgKC1sa3N0YXQpLiAqLwogLyogI3VuZGVmIEhBVkVfTElCS1NUQVQgKi8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrdm0nIGxpYnJhcnkgKC1sa3ZtKS4gKi8KLS8qICN1bmRlZiBIQVZFX0xJQktWTSAqLwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYG0nIGxpYnJhcnkgKC1sbSkuICovCiAvKiAjdW5kZWYgSEFWRV9MSUJNICovCiAKQEAgLTQwNCw5ICs0MTYsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzZW5zb3JzJyBsaWJyYXJ5ICgtbHNlbnNvcnMpLiAqLwogLyogI3VuZGVmIEhBVkVfTElCU0VOU09SUyAqLwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHonIGxpYnJhcnkgKC1seikuICovCi0vKiAjdW5kZWYgSEFWRV9MSUJaICovCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bGltaXRzLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX0xJTUlUU19IIDEKIApAQCAtNDE5LDkgKzQyOCw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGxvY2FsZS5oPiBoZWFkZXIgZmlsZS4gKi8KICNkZWZpbmUgSEFWRV9MT0NBTEVfSCAxCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbG9jYWx0aW1lX3InIGZ1bmN0aW9uLiAqLwotLyogI3VuZGVmIEhBVkVfTE9DQUxUSU1FX1IgKi8KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBscmFuZDQ4JyBmdW5jdGlvbi4gKi8KIC8qICN1bmRlZiBIQVZFX0xSQU5ENDggKi8KIApAQCAtNTEyLDYgKzUxOCw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaXBfaWNtcC5oPiBoZWFkZXIgZmlsZS4gKi8KIC8qICN1bmRlZiBIQVZFX05FVElORVRfSVBfSUNNUF9IICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pY21wNi5oPiBoZWFkZXIgZmlsZS4gKi8KKy8qICN1bmRlZiBIQVZFX05FVElORVRfSUNNUDZfSCAqLworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG5ldGluZXQvaXBfdmFyLmg+IGhlYWRlciBmaWxlLiAqLwogLyogI3VuZGVmIEhBVkVfTkVUSU5FVF9JUF9WQVJfSCAqLwogCkBAIC02ODMsOSArNjkyLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RhdHZmcycgZnVuY3Rpb24uICovCiAvKiAjdW5kZWYgSEFWRV9TVEFUVkZTICovCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkYXJnLmg+IGhlYWRlciBmaWxlLiAqLwotI2RlZmluZSBIQVZFX1NUREFSR19IIDEKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRpbnQuaD4gaGVhZGVyIGZpbGUuICovCiAjaWZkZWYgX19NSU5HVzMyX18KICNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCkBAIC05NDYsMTMgKzk1MiwxNyBAQAogLyogI3VuZGVmIFBBQ0tBR0VfQlVHUkVQT1JUICovCiAKIC8qIERlZmluZSB0byB0aGUgZnVsbCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNpZm5kZWYgUEFDS0FHRV9OQU1FCiAjZGVmaW5lIFBBQ0tBR0VfTkFNRSAiTmV0LVNOTVAiCisjZW5kaWYKIAogLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgYW5kIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwogLyogI3VuZGVmIFBBQ0tBR0VfU1RSSU5HICovCiAKIC8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KKyNpZm5kZWYgUEFDS0FHRV9UQVJOQU1FCiAjZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRSAibmV0LXNubXAiCisjZW5kaWYKIAogLyogRGVmaW5lIHRvIHRoZSB2ZXJzaW9uIG9mIHRoaXMgcGFja2FnZS4gKi8KIC8qICN1bmRlZiBQQUNLQUdFX1ZFUlNJT04gKi8KQEAgLTk2Niw2ICs5NzYsOSBAQAogLyogVGhlIHNpemUgb2YgYSBgbG9uZycsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX0xPTkcgNAogCisvKiBUaGUgc2l6ZSBvZiBhIGBpbnRtYXhfdCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX0lOVE1BWF9UIDgKKwogLyogVGhlIHNpemUgb2YgYSBgc2hvcnQnLCBhcyBjb21wdXRlZCBieSBzaXplb2YuICovCiAjZGVmaW5lIFNJWkVPRl9TSE9SVCAyCiAKQEAgLTEwMzAsOTYgKzEwNDMsMTAyIEBACiAvKiAjdW5kZWYgUlRFTlRSWV80XzQgKi8KIAogLyogRG9lcyBzdHJ1Y3Qgc2lnYWN0aW9uIGhhdmUgYSBzYV9zaWdhY3Rpb24gZmllbGQ/ICovCi0vKiAjdW5kZWYgU1RSVUNUX1NJR0FDVElPTl9IQVNfU0FfU0lHQUNUSU9OICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU0lHQUNUSU9OX1NBX1NJR0FDVElPTiAqLwogCiAvKiBEb2VzIHN0cnVjdCBzb2NrYWRkciBoYXZlIGEgc2FfbGVuIGZpZWxkPyAqLwotLyogI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfTEVOICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfTEVOICovCiAKIC8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9mYW1pbHkyIGZpZWxkPyAqLwotLyogI3VuZGVmIFNUUlVDVF9TT0NLQUREUl9IQVNfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU09DS0FERFJfU0FfVU5JT05fU0FfR0VORVJJQ19TQV9GQU1JTFkyICovCiAKIC8qIERvZXMgc3RydWN0IGluNl9hZGRyIGhhdmUgYSBzNl91bi5zYTZfbGFkZCBmaWVsZD8gKi8KLS8qICN1bmRlZiBTVFJVQ1RfSU42X0FERFJfSEFTX1M2X1VOX1NBNl9MQUREUiAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lONl9BRERSX1M2X1VOX1NBNl9MQUREUiAqLworCisvKiBtc2hoZHIubXNnX2NvbnRyb2wgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9NU0dIRFJfTVNHX0NPTlRST0wgKi8KKworLyogbXNoaGRyLm1zZ19mbGFncyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfRkxBR1MgKi8KIAogLyogcnRlbnRyeSBzdHJ1Y3R1cmUgdGVzdHMgKi8KIC8qICN1bmRlZiBSVEVOVFJZX1JUX05FWFQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfRFNUICovCi0vKiAjdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1VOSVQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVVNFICovCi0vKiAjdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX1JFRkNOVCAqLwotLyogI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9IQVNIICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9EU1QgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VOSVQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX1VTRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfUkVGQ05UICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9IQVNIICovCiAKIC8qIGlmbmV0IHN0cnVjdHVyZSB0ZXN0cyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0JBVURSQVRFX0lGU19WQUxVRSAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfU1BFRUQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1RZUEUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lNQ0FTVFMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lRRFJPUFMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0xBU1RDSEFOR0VfVFZfU0VDICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9OT1BST1RPICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PTUNBU1RTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9YTkFNRSAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfT0JZVEVTICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9JQllURVMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0FERFJMSVNUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQkFVRFJBVEUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURV9JRlNfVkFMVUUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9TUEVFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1RZUEUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JTUNBU1RTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSVFEUk9QUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0xBU1RDSEFOR0VfVFZfU0VDICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTk9QUk9UTyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09NQ0FTVFMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9YTkFNRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX09CWVRFUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lCWVRFUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0FERFJMSVNUICovCiAKIC8qIHRjcHN0YXQudGNwc19yY3ZtZW1kcm9wICovCi0vKiAjdW5kZWYgU1RSVUNUX1RDUFNUQVRfSEFTX1RDUFNfUkNWTUVNRFJPUCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1RDUFNUQVRfVENQU19SQ1ZNRU1EUk9QICovCiAKIC8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0vKiAjdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRElTQ0FSRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19ESVNDQVJEICovCiAKIC8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0vKiAjdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVCAqLwogCiAvKiB1ZHBzdGF0LnVkcHNfZGlzY2FyZCAqLwotLyogI3VuZGVmIFNUUlVDVF9VRFBTVEFUX0hBU19VRFBTX05PUE9SVEJDQVNUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX05PUE9SVEJDQVNUICovCiAKIC8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0vKiAjdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfRlVMTFNPQ0sgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfRlVMTFNPQ0sgKi8KIAogLyogYXJwaGQuYXRfbmV4dCAqLwotLyogI3VuZGVmIFNUUlVDVF9BUlBIRF9IQVNfQVRfTkVYVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0FSUEhEX0FUX05FWFQgKi8KIAogLyogaWZhZGRyLmlmYV9uZXh0ICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGQUREUl9IQVNfSUZBX05FWFQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRkFERFJfSUZBX05FWFQgKi8KIAogLyogaWZuZXQuaWZfbXR1ICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9NVFUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9NVFUgKi8KIAogLyogc3dkZXZ0LnN3X25ibGtzZW5hYmxlZCAqLwotLyogI3VuZGVmIFNUUlVDVF9TV0RFVlRfSEFTX1NXX05CTEtTRU5BQkxFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NXREVWVF9TV19OQkxLU0VOQUJMRUQgKi8KIAogLyogbmxpc3Qubl92YWx1ZSAqLwotLyogI3VuZGVmIFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX05MSVNUX05fVkFMVUUgKi8KIAogLyogaXBzdGF0IHN0cnVjdHVyZSB0ZXN0cyAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URk9SV0FSRCAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19DQU5URlJBRyAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19ERUxJVkVSRUQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR0RST1BQRUQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfRlJBR1RJTUVPVVQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTE9DQUxPVVQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfTk9QUk9UTyAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1JPVVRFICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09EUk9QUEVEICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX09GUkFHTUVOVFMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfUkVBU1NFTUJMRUQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0NBTlRGT1JXQVJEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19DQU5URlJBRyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfREVMSVZFUkVEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHRFJPUFBFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfRlJBR1RJTUVPVVQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0xPQ0FMT1VUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1BST1RPICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19OT1JPVVRFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRFJPUFBFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfT0ZSQUdNRU5UUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfUkVBU1NFTUJMRUQgKi8KIAogLyogdmZzc3RhdC5mX2Zyc2l6ZSAqLwotLyogI3VuZGVmIFNUUlVDVF9TVEFUVkZTX0hBU19GX0ZSU0laRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GUlNJWkUgKi8KIAogLyogdmZzc3RhdC5mX2ZpbGVzICovCi0vKiAjdW5kZWYgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRklMRVMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFUVkZTX0ZfRklMRVMgKi8KIAogLyogc3RhdGZzIGlub2RlIHN0cnVjdHVyZSB0ZXN0cyovCi0vKiAjdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GSUxFUyAqLwotLyogI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRkZSRUUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZBVkFJTCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZJTEVTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRkZSRUUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GQVZBSUwgKi8KIAogLyogZGVzX2tzX3N0cnVjdC53ZWFrX2tleSAqLwotLyogI3VuZGVmIFNUUlVDVF9ERVNfS1NfU1RSVUNUX0hBU19XRUFLX0tFWSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0RFU19LU19TVFJVQ1RfV0VBS19LRVkgKi8KIAogLyogaWZuZXQgbmVlZHMgdG8gaGF2ZSBfS0VSTkVMIGRlZmluZWQgKi8KIC8qICN1bmRlZiBJRk5FVF9ORUVEU19LRVJORUwgKi8KQEAgLTExMzMsOSArMTE1Miw2IEBACiAvKiBkZWZpbmUgaWYgU0lPQ0dJRkFERFIgZXhpc3RzIGluIHN5cy9pb2N0bC5oICovCiAvKiAjdW5kZWYgU1lTX0lPQ1RMX0hfSEFTX1NJT0NHSUZBRERSICovCiAKLS8qIGRlZmluZSBpZiB5b3VyIGNvbXBpbGVyIChwcm9jZXNzb3IpIGRlZmluZXMgX19GVU5DVElPTl9fIGZvciB5b3UgKi8KLS8qICN1bmRlZiBIQVZFX0NQUF9VTkRFUkJBUl9GVU5DVElPTl9ERUZJTkVEICovCi0KIC8qIE1pYi0yIHRyZWUgSW5mbyAqLwogLyogVGhlc2UgYXJlIHRoZSBzeXN0ZW0gaW5mb3JtYXRpb24gdmFyaWFibGVzLiAqLwogCkBAIC0xNTAzLDYgKzE1MTksNyBAQAogCiAvKiBOb3QtdG8tYmUtY29tcGlsZWQgbWFjcm9zIGZvciB1c2UgYnkgY29uZmlndXJlIG9ubHkgKi8KICNkZWZpbmUgY29uZmlnX3JlcXVpcmUoeCkKKyNkZWZpbmUgY29uZmlnX3ZlcnNpb25fcmVxdWlyZSh4KQogI2RlZmluZSBjb25maWdfd2FybmluZyh4KQogI2RlZmluZSBjb25maWdfZXhjbHVkZSh4KQogI2RlZmluZSBjb25maWdfYXJjaF9yZXF1aXJlKHgseSkKQEAgLTE1NzcsMTUgKzE1OTQsNDIgQEAKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgbW9kZV90OwogI2VuZGlmCiAjaWZuZGVmIEhBVkVfU1RESU5UX0gKK3R5cGVkZWYgdW5zaWduZWQgY2hhciB1aW50OF90OwordHlwZWRlZiBjaGFyIGludDhfdDsKK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgdWludDE2X3Q7Cit0eXBlZGVmIHNob3J0IGludDE2X3Q7CiB0eXBlZGVmIHVuc2lnbmVkIF9faW50MzIgdWludDMyX3Q7CiB0eXBlZGVmIGxvbmcgaW50MzJfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50NjRfdDsKIHR5cGVkZWYgX19pbnQ2NCBpbnQ2NF90OwordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnRtYXhfdDsKK3R5cGVkZWYgX19pbnQ2NCBpbnRtYXhfdDsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgICB1aW50MTZfdDsKICNlbHNlIC8qIEhBVkVfU1RESU5UX0ggKi8KICNpbmNsdWRlIDxzdGRpbnQuaD4KICNlbmRpZiAvKiBIQVZFX1NURElOVF9IICovCiAKKworLyogKHUpaW50cHRyX3Qgc2hvdWxkIG9ubHkgYmUgbmVlZGVkIGZvciBNU1ZDIDYgMzItYml0LiAqLworLyogU0RLIGhhcyBpdCBmb3IgNjQtYml0IGFuZCBuZXdlciBNU1ZDIHNob3VsZCBhbHNvIGhhdmUgaXQgaW4gc3RkZGVmLmguICovCisjaWZuZGVmIF9JTlRQVFJfVF9ERUZJTkVECisjaWZkZWYgX01fWDY0Cit0eXBlZGVmIF9faW50NjQgICAgICAgICAgaW50cHRyX3Q7CisjZWxzZQordHlwZWRlZiBpbnQgICAgICAgICAgICAgIGludHB0cl90OworI2VuZGlmCisjZGVmaW5lIF9JTlRQVFJfVF9ERUZJTkVECisjZW5kaWYKKworI2lmbmRlZiBfVUlOVFBUUl9UX0RFRklORUQKKyNpZmRlZiBfTV9YNjQKK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCB1aW50cHRyX3Q7CisjZWxzZQordHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIHVpbnRwdHJfdDsKKyNlbmRpZgorI2RlZmluZSBfVUlOVFBUUl9UX0RFRklORUQKKyNlbmRpZgorCiAjaWZuZGVmIF9fY3BsdXNwbHVzCiBlbnVtIHsKICAgICBuZXRzbm1wX2NvbXBpbGVfdGltZV91aW50cHRyX3Rfc2l6ZV9jaGVjawpAQCAtMTYxNywxNyArMTY2MSw5IEBACiAvKiBEZWZpbmUgTkVUU05NUF9VU0VfRExMIHdoZW4gYnVpbGRpbmcgb3IgdXNpbmcgbmV0c25tcC5ETEwgKi8KIC8qICN1bmRlZiBORVRTTk1QX1VTRV9ETEwgKi8KIAotI2lmZGVmIE5FVFNOTVBfVVNFX0RMTAotICAjaWZkZWYgTkVUU05NUF9ETEwKLSAgICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgICNkZWZpbmUgTkVUU05NUF9JTVBPUlQgX19kZWNsc3BlYyhkbGxleHBvcnQpCi0gICAgI2VuZGlmCi0gICNlbHNlCi0gICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCi0gICAgICAjZGVmaW5lIE5FVFNOTVBfSU1QT1JUIF9fZGVjbHNwZWMoZGxsaW1wb3J0KQotICAgICNlbmRpZgotICAjZW5kaWYgICAvKiBORVRTTk1QX0RMTCAqLwotI2VuZGlmICAgICAvKiBORVRTTk1QX1VTRV9ETEwgKi8KKyNpZiBkZWZpbmVkKE5FVFNOTVBfRExMKSAmJiAhZGVmaW5lZChORVRTTk1QX1VTRV9ETEwpCisjZXJyb3IgTkVUU05NUF9VU0VfRExMIG11c3QgYmUgZGVmaW5lZCB3aGVuIGJ1aWxkaW5nIGxpYnNubXAgYXMgYSBETEwuCisjZW5kaWYKIAogLyoKICAqIERMTCBkZWNvcmF0aW9uLCBpZiB1c2VkIGF0IGFsbCwgbXVzdCBiZSBjb25zaXN0ZW50LgpAQCAtMTY0MCwyMCArMTY3Niw1NSBAQAogICogIHRoZSBORVRTTk1QX0lNUE9SVCBkZWZpbml0aW9ucyBoYXJtbGVzcy4KICAqLwogCi0KLSAgI2lmZGVmIE5FVFNOTVBfVVNFX0RMTAotICAgICNpZm5kZWYgTkVUU05NUF9UT09MU19DCi0KLSAgLyogd3JhcCBhbGxvYyBmdW5jdGlvbnMgdG8gdXNlIERMTCdzIG1lbW9yeSBoZWFwICovCi0gIC8qIFRoaXMgaXMgbm90IGRvbmUgaW4gdG9vbHMuYywgd2hlcmUgdGhlc2Ugd3JhcHBlcnMgYXJlIGRlZmluZWQgKi8KLQotICAgICAgI2RlZmluZSBzdHJkdXAgICAgbmV0c25tcF9zdHJkdXAKLSAgICAgICNkZWZpbmUgY2FsbG9jICAgIG5ldHNubXBfY2FsbG9jCi0gICAgICAjZGVmaW5lIG1hbGxvYyAgICBuZXRzbm1wX21hbGxvYwotICAgICAgI2RlZmluZSByZWFsbG9jICAgbmV0c25tcF9yZWFsbG9jCi0gICAgICAjZGVmaW5lIGZyZWUgICAgICBuZXRzbm1wX2ZyZWUKKyNpZmRlZiBORVRTTk1QX1VTRV9ETEwKKyAgI2lmZGVmIE5FVFNOTVBfRExMCisgICAgI2lmIGRlZmluZWQoX01TQ19WRVIpCisgICAgICAjZGVmaW5lIE5FVFNOTVBfSU1QT1JUIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQogICAgICNlbmRpZgotICAjZW5kaWYKKyAgI2Vsc2UKKyAgICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICAgICNkZWZpbmUgTkVUU05NUF9JTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCisgICAgI2VuZGlmCisgICNlbmRpZiAgIC8qIE5FVFNOTVBfRExMICovCisjZW5kaWYgICAgIC8qIE5FVFNOTVBfVVNFX0RMTCAqLworCisvKiBNU1ZDIE9wZW5TU0wgbGlua2VyIHNldHRpbmdzLiAqLworI2lmIGRlZmluZWQoX01TQ19WRVIpCisjICBpZiBkZWZpbmVkKE5FVFNOTVBfVVNFX09QRU5TU0wpCisjICAgIGlmZGVmIE5FVFNOTVBfVVNFX0RMTAorIyAgICAgIGlmZGVmIF9ERUJVRworIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNRGQubGliIikKKyMgICAgICBlbHNlCisjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1ELmxpYiIpCisjICAgICAgZW5kaWYKKyMgICAgZWxzZQorIyAgICAgIGlmZGVmIF9ERUJVRworIyAgICAgICAgcHJhZ21hIGNvbW1lbnQobGliLCAibGliZWF5MzJNVGQubGliIikKKyMgICAgICBlbHNlCisjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1ULmxpYiIpCisjICAgICAgZW5kaWYKKyMgICAgZW5kaWYKKyMgICAgcHJhZ21hIGNvbW1lbnQobGliLCAiZ2RpMzIubGliIikKKyMgIGVuZGlmCisjZW5kaWYKKworI2lmIGRlZmluZWQoTkVUU05NUF9VU0VfRExMKSAmJiAhZGVmaW5lZChORVRTTk1QX1RPT0xTX0MpICYmICFkZWZpbmVkKE1TVkNfUEVSTCkKKworI2luY2x1ZGUgPG1hbGxvYy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPiAvKiBtYWxsb2MoKSwgY2FsbG9jKCksIHJlYWxsb2MoKSBhbmQgZnJlZSgpICovCisjaW5jbHVkZSA8c3RyaW5nLmg+IC8qIHN0cmR1cCgpICovCisjaW5jbHVkZSA8d3MydGNwaXAuaD4gLyogc29ja2xlbl90ICovCisjaW5jbHVkZSA8d3NwaWFwaS5oPiAvKiBoYXMgaW5saW5lIGZ1bmN0aW9uIGRlZmluaXRpb25zIHJlZmVyZW5jaW5nIGNhbGxvYygpLiAqLworCisvKiB3cmFwIGFsbG9jIGZ1bmN0aW9ucyB0byB1c2UgRExMJ3MgbWVtb3J5IGhlYXAgKi8KKworI2RlZmluZSBzdHJkdXAgICAgbmV0c25tcF9zdHJkdXAKKyNkZWZpbmUgY2FsbG9jICAgIG5ldHNubXBfY2FsbG9jCisjZGVmaW5lIG1hbGxvYyAgICBuZXRzbm1wX21hbGxvYworI2RlZmluZSByZWFsbG9jICAgbmV0c25tcF9yZWFsbG9jCisjZGVmaW5lIGZyZWUgICAgICBuZXRzbm1wX2ZyZWUKKworI2VuZGlmIC8qIGRlZmluZWQoTkVUU05NUF9VU0VfRExMKSAmJiAhZGVmaW5lZChORVRTTk1QX1RPT0xTX0MpICYmICFkZWZpbmVkKE1TVkNfUEVSTCkgKi8KIAogLyogTVNWQyBPcGVuU1NMIGxpbmtlciBzZXR0aW5ncy4gKi8KICNpZiBkZWZpbmVkKFdJTjMyKSAmJiAhZGVmaW5lZChtaW5ndzMyKQpAQCAtMTY4MSw3ICsxNzUyLDcgQEAKICMgIGRlZmluZSBORVRTTk1QX0lNUE9SVCBleHRlcm4KICNlbmRpZgogCi0jaWYgZGVmaW5lZChIQVZFX05MSVNUKSAmJiBkZWZpbmVkKFNUUlVDVF9OTElTVF9IQVNfTl9WQUxVRSkgJiYgIWRlZmluZWQoRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKKyNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSkgJiYgIWRlZmluZWQoRE9OVF9VU0VfTkxJU1QpICYmICFkZWZpbmVkKE5FVFNOTVBfTk9fS01FTV9VU0FHRSkKICNkZWZpbmUgTkVUU05NUF9DQU5fVVNFX05MSVNUCiAjZW5kaWYKIApAQCAtMTY4OSw3ICsxNzYwLDYgQEAKICNkZWZpbmUgRE1BTExPQ19GVU5DX0NIRUNLCiAjZW5kaWYKIAotLyogI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KIC8qICN1bmRlZiBORVRTTk1QX0VOQUJMRV9MT0NBTF9TTVVYICovCiAKIC8qIGRlZmluZSBpZiBhZ2VudHggdHJhbnNwb3J0IGlzIHRvIHVzZSBkb21haW4gc29ja2V0cyBvbmx5ICovCkBAIC0xNzEwLDcgKzE3ODAsOCBAQAogI3VuZGVmIEhBVkVfSU5FVF9OVE9QCiAjdW5kZWYgSEFWRV9JTkVUX1BUT04KIAotI2lmIE5FVFNOTVBfRU5BQkxFX0lQVjYKKy8qIElQdjYgdHJhbnNwb3J0cyAqLworI2lmZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYKICAgI2RlZmluZSBORVRTTk1QX1RSQU5TUE9SVF9UQ1BJUFY2X0RPTUFJTiAxCiAgICNkZWZpbmUgTkVUU05NUF9UUkFOU1BPUlRfVURQSVBWNl9ET01BSU4gMQogI2Vsc2UKQEAgLTE3MTksMTAgKzE3OTAsMjAgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qCisgKiBBbHRob3VnaCBpZl9uYW1ldG9pbmRleCgpIGlzIGF2YWlsYWJsZSBvbiBXaW5kb3dzIFZpc3RhLCBXaW5kb3dzIFNlcnZlcgorICogMjAwOCBhbmQgbGF0ZXIgaW4gaXBobHBhcGkuZGxsLCBkbyBub3QgbGluayB3aXRoIGlmX25hbWV0b2luZGV4KCkgc3VjaAorICogdGhhdCB0aGUgTmV0LVNOTVAgZXhlY3V0YWJsZSBjYW4gYmUgc3RhcnRlZCBvbiBlYXJsaWVyIFdpbmRvd3MgdmVyc2lvbnMuCisgKi8KKyN1bmRlZiBIQVZFX0lGX05BTUVUT0lOREVYCisKICNpZm5kZWYgTklfTUFYSE9TVAogI2RlZmluZSBOSV9NQVhIT1NUCTEwMjUKICNlbmRpZgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnRvdWxsJyBmdW5jdGlvbi4gKi8KKy8qICN1bmRlZiBIQVZFX1NUUlRPVUxMICovCisKIC8qCiAgKiBNb2R1bGUgY29uZmlndXJhdGlvbiBhbmQgY29udHJvbCBzdGFydHMgaGVyZS4KICAqCkBAIC0xNzY2LDkgKzE4NDcsMTYgQEAKICNkZWZpbmUgTkVUU05NUF9USU1FT1VUX1dBSVRGT1JTSU5HTEVPQkpFQ1QgNTAwMAogCiAjaWZkZWYgSEFWRV9XSU4zMl9QTEFURk9STV9TREsKLSNkZWZpbmUgU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfSEFTX1NTX0ZBTUlMWSAxCisjZGVmaW5lIEhBVkVfU1RSVUNUX1NPQ0tBRERSX1NUT1JBR0VfU1NfRkFNSUxZIDEKICNlbmRpZgogCisjaWZkZWYgX01TQ19WRVIKKyNpZmRlZiBfV0lONjQKKyNkZWZpbmUgTkVUU05NUF9QUkl6ICJJNjQiCisjZWxzZQorI2RlZmluZSBORVRTTk1QX1BSSXogIiIKKyNlbmRpZgorI2VuZGlmCiAKICNlbmRpZiAvKiBORVRfU05NUF9DT05GSUdfSCAqLwogCmRpZmYgLS1naXQgYS93aW4zMi9uZXQtc25tcC9uZXQtc25tcC1jb25maWcuaC5pbiBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCmluZGV4IGE2ODI2YjMuLjJlOTNkY2QgMTAwNjQ0Ci0tLSBhL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCisrKyBiL3dpbjMyL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oLmluCkBAIC0xMyw2ICsxMywxOSBAQAogICAgMTIwMCA9ICA2LjAKICovCiAKKyNpZmRlZiBfTVNDX1ZFUgorLyogRGlzYWJsZSB3YXJuaW5nIDQwMTg6IHNpZ25lZC91bnNpZ25lZCBtaXNtYXRjaC4gKi8KKyNwcmFnbWEgd2FybmluZyAoZGlzYWJsZTogNDAxOCkKKyNlbmRpZgorCisvKiBBdXRvbWF0aWNhbGx5IHNldCBieSBXaW5kb3dzIHBlcmwgQ29uZmlndXJlIHNjcmlwdC4KKyAqIFdoZW4gY29tcGlsaW5nIHdpdGggdGhlIE1TVkMgd29ya3NwYWNlLCB0aGlzIG11c3QgYmUgc2V0IG1hbnVhbGx5LgorICogU2VlIHRoZSBQQUNLQUdFX1ZFUlNJT04gdmFyaWFibGUgaW4gVW5peCAvY29uZmlndXJlIHNjcmlwdAorKi8KKyNpZm5kZWYgUEFDS0FHRV9WRVJTSU9OCisjZGVmaW5lIFBBQ0tBR0VfVkVSU0lPTiAidW5rbm93biIKKyNlbmRpZgorCiAvKiBEZWZpbmUgSEFWRV9XSU4zMl9QTEFURk9STV9TREsgaWYgeW91IGhhdmU6CiAgKiBNaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBNU1ZDIDYuMCBhbmQgdGhlIFBsYXRmb3JtIFNESyAoUFNESykKICAqIE1pY3Jvc29mdCBWaXN1YWwgU3R1ZGlvLk5ldCAyMDAyCkBAIC0yMiw3ICszNSwxMSBAQAogICovCiAvKiAjdW5kZWYgSEFWRV9XSU4zMl9QTEFURk9STV9TREsgKi8KIAotLyogT25seSB1c2UgV2luZG93cyBBUEkgZnVuY3Rpb25zIGF2YWlsYWJsZSBvbiBXaW5kb3dzIDIwMDAgU1A0IG9yIGxhdGVyLgorLyogRGVmaW5lIE5FVFNOTVBfRU5BQkxFX0lQVjYgdG8gZW5hYmxlIElQdjYuICBJUHY2IGlzIG9ubHkgYXZhaWxhYmxlIG9uCisgKiBXaW5kb3dzIFhQIGFuZCBoaWdoZXIuICAqLworLyogI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0lQVjYgKi8KKworLyogT25seSB1c2UgV2luZG93cyBBUEkgZnVuY3Rpb25zIGF2YWlsYWJsZSBvbiBXaW5kb3dzIDIwMDAgU1A0IG9yIGxhdGVyLiAgCiAgKiBXZSBuZWVkIGF0IGxlYXN0IFNQMSBmb3Igc29tZSBJUHY2IGRlZmluZXMgaW4gd3MyaXBkZWYuaC4KICAqIE9ubHkgZGVmaW5lIF9XSU4zMl9XSU5OVCB3aGVuIG5vdCBiZWluZyBjb21waWxlZCB3aXRoIE1TVkMgNiB3aXRob3V0IFBTREsKICAqIGJlY2F1c2UgdGhlcmUgaXMgYSBidWcgaW4gdGhlIE1TVkMgNiBoZWFkZXIgPHdpbnNvY2suaD4gdGhhdCBjYXVzZXMKQEAgLTIzMywxMyArMjUwLDE0IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNnZXRuZXh0JyBmdW5jdGlvbi4gKi8KIC8qICN1bmRlZiBIQVZFX0NHRVRORVhUICovCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y3J0ZGJnLmg+IGhlYWRlciBmaWxlLiAqLworI2RlZmluZSBIQVZFX0NSVERCR19IIDEKKwogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlY3QuaD4gaGVhZGVyIGZpbGUuICovCi0vKiAjdW5kZWYgSEFWRV9ESVJFQ1RfSCAqLworI2RlZmluZSBIQVZFX0RJUkVDVF9IIDEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBjaG93bicgZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9DSE9XTiAqLwotCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGRpcmVudC5oPiBoZWFkZXIgZmlsZSwgYW5kIGl0IGRlZmluZXMgYERJUicuICAqLworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlbnQuaD4gaGVhZGVyIGZpbGUsIGFuZCBpdCBkZWZpbmVzIGBESVInLgorICAgKi8KIC8qICN1bmRlZiBIQVZFX0RJUkVOVF9IICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZGxmY24uaD4gaGVhZGVyIGZpbGUuICovCkBAIC0zNjUsOSArMzgzLDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgY3J5cHRvJyBsaWJyYXJ5ICgtbGNyeXB0bykuICovCiAvKiAjdW5kZWYgSEFWRV9MSUJDUllQVE8gKi8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBkbCcgbGlicmFyeSAoLWxkbCkuICovCi0vKiAjdW5kZWYgSEFWRV9MSUJETCAqLwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGVmZW5jZScgbGlicmFyeSAoLWxlZmVuY2UpLiAqLwogLyogI3VuZGVmIEhBVkVfTElCRUZFTkNFICovCiAKQEAgLTM3Nyw5ICszOTIsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBrc3RhdCcgbGlicmFyeSAoLWxrc3RhdCkuICovCiAvKiAjdW5kZWYgSEFWRV9MSUJLU1RBVCAqLwogCi0vKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGt2bScgbGlicmFyeSAoLWxrdm0pLiAqLwotLyogI3VuZGVmIEhBVkVfTElCS1ZNICovCi0KIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbScgbGlicmFyeSAoLWxtKS4gKi8KIC8qICN1bmRlZiBIQVZFX0xJQk0gKi8KIApAQCAtNDA0LDkgKzQxNiw2IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHNlbnNvcnMnIGxpYnJhcnkgKC1sc2Vuc29ycykuICovCiAvKiAjdW5kZWYgSEFWRV9MSUJTRU5TT1JTICovCiAKLS8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgeicgbGlicmFyeSAoLWx6KS4gKi8KLS8qICN1bmRlZiBIQVZFX0xJQlogKi8KLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuICovCiAjZGVmaW5lIEhBVkVfTElNSVRTX0ggMQogCkBAIC00MTksOSArNDI4LDYgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bG9jYWxlLmg+IGhlYWRlciBmaWxlLiAqLwogI2RlZmluZSBIQVZFX0xPQ0FMRV9IIDEKIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBsb2NhbHRpbWVfcicgZnVuY3Rpb24uICovCi0vKiAjdW5kZWYgSEFWRV9MT0NBTFRJTUVfUiAqLwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxyYW5kNDgnIGZ1bmN0aW9uLiAqLwogLyogI3VuZGVmIEhBVkVfTFJBTkQ0OCAqLwogCkBAIC01MTIsNiArNTE4LDkgQEAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pcF9pY21wLmg+IGhlYWRlciBmaWxlLiAqLwogLyogI3VuZGVmIEhBVkVfTkVUSU5FVF9JUF9JQ01QX0ggKi8KIAorLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxuZXRpbmV0L2ljbXA2Lmg+IGhlYWRlciBmaWxlLiAqLworLyogI3VuZGVmIEhBVkVfTkVUSU5FVF9JQ01QNl9IICovCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bmV0aW5ldC9pcF92YXIuaD4gaGVhZGVyIGZpbGUuICovCiAvKiAjdW5kZWYgSEFWRV9ORVRJTkVUX0lQX1ZBUl9IICovCiAKQEAgLTY4Myw5ICs2OTIsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdGF0dmZzJyBmdW5jdGlvbi4gKi8KIC8qICN1bmRlZiBIQVZFX1NUQVRWRlMgKi8KIAotLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRhcmcuaD4gaGVhZGVyIGZpbGUuICovCi0jZGVmaW5lIEhBVkVfU1REQVJHX0ggMQotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4gKi8KICNpZmRlZiBfX01JTkdXMzJfXwogI2RlZmluZSBIQVZFX1NURElOVF9IIDEKQEAgLTk0NiwxMyArOTUyLDE3IEBACiAvKiAjdW5kZWYgUEFDS0FHRV9CVUdSRVBPUlQgKi8KIAogLyogRGVmaW5lIHRvIHRoZSBmdWxsIG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2lmbmRlZiBQQUNLQUdFX05BTUUKICNkZWZpbmUgUEFDS0FHRV9OQU1FICJOZXQtU05NUCIKKyNlbmRpZgogCiAvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCiAvKiAjdW5kZWYgUEFDS0FHRV9TVFJJTkcgKi8KIAogLyogRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLiAqLworI2lmbmRlZiBQQUNLQUdFX1RBUk5BTUUKICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJuZXQtc25tcCIKKyNlbmRpZgogCiAvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwogLyogI3VuZGVmIFBBQ0tBR0VfVkVSU0lPTiAqLwpAQCAtOTY2LDYgKzk3Niw5IEBACiAvKiBUaGUgc2l6ZSBvZiBhIGBsb25nJywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI2RlZmluZSBTSVpFT0ZfTE9ORyA0CiAKKy8qIFRoZSBzaXplIG9mIGEgYGludG1heF90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLworI2RlZmluZSBTSVpFT0ZfSU5UTUFYX1QgOAorCiAvKiBUaGUgc2l6ZSBvZiBhIGBzaG9ydCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KICNkZWZpbmUgU0laRU9GX1NIT1JUIDIKIApAQCAtMTAzMCw5NiArMTA0MywxMDIgQEAKIC8qICN1bmRlZiBSVEVOVFJZXzRfNCAqLwogCiAvKiBEb2VzIHN0cnVjdCBzaWdhY3Rpb24gaGF2ZSBhIHNhX3NpZ2FjdGlvbiBmaWVsZD8gKi8KLS8qICN1bmRlZiBTVFJVQ1RfU0lHQUNUSU9OX0hBU19TQV9TSUdBQ1RJT04gKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TSUdBQ1RJT05fU0FfU0lHQUNUSU9OICovCiAKIC8qIERvZXMgc3RydWN0IHNvY2thZGRyIGhhdmUgYSBzYV9sZW4gZmllbGQ/ICovCi0vKiAjdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9MRU4gKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9MRU4gKi8KIAogLyogRG9lcyBzdHJ1Y3Qgc29ja2FkZHIgaGF2ZSBhIHNhX2ZhbWlseTIgZmllbGQ/ICovCi0vKiAjdW5kZWYgU1RSVUNUX1NPQ0tBRERSX0hBU19TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TT0NLQUREUl9TQV9VTklPTl9TQV9HRU5FUklDX1NBX0ZBTUlMWTIgKi8KIAogLyogRG9lcyBzdHJ1Y3QgaW42X2FkZHIgaGF2ZSBhIHM2X3VuLnNhNl9sYWRkIGZpZWxkPyAqLwotLyogI3VuZGVmIFNUUlVDVF9JTjZfQUREUl9IQVNfUzZfVU5fU0E2X0xBRERSICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSU42X0FERFJfUzZfVU5fU0E2X0xBRERSICovCisKKy8qIG1zaGhkci5tc2dfY29udHJvbCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX01TR0hEUl9NU0dfQ09OVFJPTCAqLworCisvKiBtc2hoZHIubXNnX2ZsYWdzICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfTVNHSERSX01TR19GTEFHUyAqLwogCiAvKiBydGVudHJ5IHN0cnVjdHVyZSB0ZXN0cyAqLwogLyogI3VuZGVmIFJURU5UUllfUlRfTkVYVCAqLwotLyogI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9EU1QgKi8KLS8qICN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfVU5JVCAqLwotLyogI3VuZGVmIFNUUlVDVF9SVEVOVFJZX0hBU19SVF9VU0UgKi8KLS8qICN1bmRlZiBTVFJVQ1RfUlRFTlRSWV9IQVNfUlRfUkVGQ05UICovCi0vKiAjdW5kZWYgU1RSVUNUX1JURU5UUllfSEFTX1JUX0hBU0ggKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0RTVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVU5JVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1JURU5UUllfUlRfVVNFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfUlRFTlRSWV9SVF9SRUZDTlQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9SVEVOVFJZX1JUX0hBU0ggKi8KIAogLyogaWZuZXQgc3RydWN0dXJlIHRlc3RzICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9CQVVEUkFURSAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQkFVRFJBVEVfSUZTX1ZBTFVFICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9TUEVFRCAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfVFlQRSAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSU1DQVNUUyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfSVFEUk9QUyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfTEFTVENIQU5HRV9UVl9TRUMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX05PUFJPVE8gKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX09NQ0FTVFMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX1hOQU1FICovCi0vKiAjdW5kZWYgU1RSVUNUX0lGTkVUX0hBU19JRl9PQllURVMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX0lCWVRFUyAqLwotLyogI3VuZGVmIFNUUlVDVF9JRk5FVF9IQVNfSUZfQUREUkxJU1QgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9CQVVEUkFURSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0JBVURSQVRFX0lGU19WQUxVRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1NQRUVEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfVFlQRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX0lNQ0FTVFMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9JUURST1BTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfTEFTVENIQU5HRV9UVl9TRUMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JRk5FVF9JRl9OT1BST1RPICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT01DQVNUUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX1hOQU1FICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfT0JZVEVTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfSUJZVEVTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSUZORVRfSUZfQUREUkxJU1QgKi8KIAogLyogdGNwc3RhdC50Y3BzX3Jjdm1lbWRyb3AgKi8KLS8qICN1bmRlZiBTVFJVQ1RfVENQU1RBVF9IQVNfVENQU19SQ1ZNRU1EUk9QICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfVENQU1RBVF9UQ1BTX1JDVk1FTURST1AgKi8KIAogLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19ESVNDQVJEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfVURQU1RBVF9VRFBTX0RJU0NBUkQgKi8KIAogLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19OT1BPUlQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfTk9QT1JUICovCiAKIC8qIHVkcHN0YXQudWRwc19kaXNjYXJkICovCi0vKiAjdW5kZWYgU1RSVUNUX1VEUFNUQVRfSEFTX1VEUFNfTk9QT1JUQkNBU1QgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9VRFBTVEFUX1VEUFNfTk9QT1JUQkNBU1QgKi8KIAogLyogdWRwc3RhdC51ZHBzX2Rpc2NhcmQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfVURQU1RBVF9IQVNfVURQU19GVUxMU09DSyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1VEUFNUQVRfVURQU19GVUxMU09DSyAqLwogCiAvKiBhcnBoZC5hdF9uZXh0ICovCi0vKiAjdW5kZWYgU1RSVUNUX0FSUEhEX0hBU19BVF9ORVhUICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfQVJQSERfQVRfTkVYVCAqLwogCiAvKiBpZmFkZHIuaWZhX25leHQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZBRERSX0hBU19JRkFfTkVYVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGQUREUl9JRkFfTkVYVCAqLwogCiAvKiBpZm5ldC5pZl9tdHUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSUZORVRfSEFTX0lGX01UVSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lGTkVUX0lGX01UVSAqLwogCiAvKiBzd2RldnQuc3dfbmJsa3NlbmFibGVkICovCi0vKiAjdW5kZWYgU1RSVUNUX1NXREVWVF9IQVNfU1dfTkJMS1NFTkFCTEVEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1dERVZUX1NXX05CTEtTRU5BQkxFRCAqLwogCiAvKiBubGlzdC5uX3ZhbHVlICovCi0vKiAjdW5kZWYgU1RSVUNUX05MSVNUX0hBU19OX1ZBTFVFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfTkxJU1RfTl9WQUxVRSAqLwogCiAvKiBpcHN0YXQgc3RydWN0dXJlIHRlc3RzICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGT1JXQVJEICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0NBTlRGUkFHICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX0RFTElWRVJFRCAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHRFJPUFBFRCAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19GUkFHVElNRU9VVCAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19MT0NBTE9VVCAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19OT1BST1RPICovCi0vKiAjdW5kZWYgU1RSVUNUX0lQU1RBVF9IQVNfSVBTX05PUk9VVEUgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0RST1BQRUQgKi8KLS8qICN1bmRlZiBTVFJVQ1RfSVBTVEFUX0hBU19JUFNfT0ZSQUdNRU5UUyAqLwotLyogI3VuZGVmIFNUUlVDVF9JUFNUQVRfSEFTX0lQU19SRUFTU0VNQkxFRCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfQ0FOVEZPUldBUkQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0NBTlRGUkFHICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19ERUxJVkVSRUQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX0ZSQUdEUk9QUEVEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19GUkFHVElNRU9VVCAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX0lQU1RBVF9JUFNfTE9DQUxPVVQgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUFJPVE8gKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX05PUk9VVEUgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9JUFNUQVRfSVBTX09EUk9QUEVEICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19PRlJBR01FTlRTICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfSVBTVEFUX0lQU19SRUFTU0VNQkxFRCAqLwogCiAvKiB2ZnNzdGF0LmZfZnJzaXplICovCi0vKiAjdW5kZWYgU1RSVUNUX1NUQVRWRlNfSEFTX0ZfRlJTSVpFICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVFZGU19GX0ZSU0laRSAqLwogCiAvKiB2ZnNzdGF0LmZfZmlsZXMgKi8KLS8qICN1bmRlZiBTVFJVQ1RfU1RBVFZGU19IQVNfRl9GSUxFUyAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRWRlNfRl9GSUxFUyAqLwogCiAvKiBzdGF0ZnMgaW5vZGUgc3RydWN0dXJlIHRlc3RzKi8KLS8qICN1bmRlZiBTVFJVQ1RfU1RBVEZTX0hBU19GX0ZJTEVTICovCi0vKiAjdW5kZWYgU1RSVUNUX1NUQVRGU19IQVNfRl9GRlJFRSAqLwotLyogI3VuZGVmIFNUUlVDVF9TVEFURlNfSEFTX0ZfRkFWQUlMICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVEZTX0ZfRklMRVMgKi8KKy8qICN1bmRlZiBIQVZFX1NUUlVDVF9TVEFURlNfRl9GRlJFRSAqLworLyogI3VuZGVmIEhBVkVfU1RSVUNUX1NUQVRGU19GX0ZBVkFJTCAqLwogCiAvKiBkZXNfa3Nfc3RydWN0LndlYWtfa2V5ICovCi0vKiAjdW5kZWYgU1RSVUNUX0RFU19LU19TVFJVQ1RfSEFTX1dFQUtfS0VZICovCisvKiAjdW5kZWYgSEFWRV9TVFJVQ1RfREVTX0tTX1NUUlVDVF9XRUFLX0tFWSAqLwogCiAvKiBpZm5ldCBuZWVkcyB0byBoYXZlIF9LRVJORUwgZGVmaW5lZCAqLwogLyogI3VuZGVmIElGTkVUX05FRURTX0tFUk5FTCAqLwpAQCAtMTEzMyw5ICsxMTUyLDYgQEAKIC8qIGRlZmluZSBpZiBTSU9DR0lGQUREUiBleGlzdHMgaW4gc3lzL2lvY3RsLmggKi8KIC8qICN1bmRlZiBTWVNfSU9DVExfSF9IQVNfU0lPQ0dJRkFERFIgKi8KIAotLyogZGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgKHByb2Nlc3NvcikgZGVmaW5lcyBfX0ZVTkNUSU9OX18gZm9yIHlvdSAqLwotLyogI3VuZGVmIEhBVkVfQ1BQX1VOREVSQkFSX0ZVTkNUSU9OX0RFRklORUQgKi8KLQogLyogTWliLTIgdHJlZSBJbmZvICovCiAvKiBUaGVzZSBhcmUgdGhlIHN5c3RlbSBpbmZvcm1hdGlvbiB2YXJpYWJsZXMuICovCiAKQEAgLTE1MDMsNiArMTUxOSw3IEBACiAKIC8qIE5vdC10by1iZS1jb21waWxlZCBtYWNyb3MgZm9yIHVzZSBieSBjb25maWd1cmUgb25seSAqLwogI2RlZmluZSBjb25maWdfcmVxdWlyZSh4KQorI2RlZmluZSBjb25maWdfdmVyc2lvbl9yZXF1aXJlKHgpCiAjZGVmaW5lIGNvbmZpZ193YXJuaW5nKHgpCiAjZGVmaW5lIGNvbmZpZ19leGNsdWRlKHgpCiAjZGVmaW5lIGNvbmZpZ19hcmNoX3JlcXVpcmUoeCx5KQpAQCAtMTU3NywxNSArMTU5NCw0MiBAQAogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBtb2RlX3Q7CiAjZW5kaWYKICNpZm5kZWYgSEFWRV9TVERJTlRfSAordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHVpbnQ4X3Q7Cit0eXBlZGVmIGNoYXIgaW50OF90OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1aW50MTZfdDsKK3R5cGVkZWYgc2hvcnQgaW50MTZfdDsKIHR5cGVkZWYgdW5zaWduZWQgX19pbnQzMiB1aW50MzJfdDsKIHR5cGVkZWYgbG9uZyBpbnQzMl90OwogdHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnQ2NF90OwogdHlwZWRlZiBfX2ludDY0IGludDY0X3Q7Cit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgdWludG1heF90OwordHlwZWRlZiBfX2ludDY0IGludG1heF90OwogdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCAgIHVpbnQxNl90OwogI2Vsc2UgLyogSEFWRV9TVERJTlRfSCAqLwogI2luY2x1ZGUgPHN0ZGludC5oPgogI2VuZGlmIC8qIEhBVkVfU1RESU5UX0ggKi8KIAorCisvKiAodSlpbnRwdHJfdCBzaG91bGQgb25seSBiZSBuZWVkZWQgZm9yIE1TVkMgNiAzMi1iaXQuICovCisvKiBTREsgaGFzIGl0IGZvciA2NC1iaXQgYW5kIG5ld2VyIE1TVkMgc2hvdWxkIGFsc28gaGF2ZSBpdCBpbiBzdGRkZWYuaC4gKi8KKyNpZm5kZWYgX0lOVFBUUl9UX0RFRklORUQKKyNpZmRlZiBfTV9YNjQKK3R5cGVkZWYgX19pbnQ2NCAgICAgICAgICBpbnRwdHJfdDsKKyNlbHNlCit0eXBlZGVmIGludCAgICAgICAgICAgICAgaW50cHRyX3Q7CisjZW5kaWYKKyNkZWZpbmUgX0lOVFBUUl9UX0RFRklORUQKKyNlbmRpZgorCisjaWZuZGVmIF9VSU5UUFRSX1RfREVGSU5FRAorI2lmZGVmIF9NX1g2NAordHlwZWRlZiB1bnNpZ25lZCBfX2ludDY0IHVpbnRwdHJfdDsKKyNlbHNlCit0eXBlZGVmIHVuc2lnbmVkIGludCAgICAgdWludHB0cl90OworI2VuZGlmCisjZGVmaW5lIF9VSU5UUFRSX1RfREVGSU5FRAorI2VuZGlmCisKICNpZm5kZWYgX19jcGx1c3BsdXMKIGVudW0gewogICAgIG5ldHNubXBfY29tcGlsZV90aW1lX3VpbnRwdHJfdF9zaXplX2NoZWNrCkBAIC0xNjE3LDE3ICsxNjYxLDkgQEAKIC8qIERlZmluZSBORVRTTk1QX1VTRV9ETEwgd2hlbiBidWlsZGluZyBvciB1c2luZyBuZXRzbm1wLkRMTCAqLwogLyogI3VuZGVmIE5FVFNOTVBfVVNFX0RMTCAqLwogCi0jaWZkZWYgTkVUU05NUF9VU0VfRExMCi0gICNpZmRlZiBORVRTTk1QX0RMTAotICAgICNpZiBkZWZpbmVkKF9NU0NfVkVSKQotICAgICAgI2RlZmluZSBORVRTTk1QX0lNUE9SVCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSAgICAjZW5kaWYKLSAgI2Vsc2UKLSAgICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKLSAgICAgICNkZWZpbmUgTkVUU05NUF9JTVBPUlQgX19kZWNsc3BlYyhkbGxpbXBvcnQpCi0gICAgI2VuZGlmCi0gICNlbmRpZiAgIC8qIE5FVFNOTVBfRExMICovCi0jZW5kaWYgICAgIC8qIE5FVFNOTVBfVVNFX0RMTCAqLworI2lmIGRlZmluZWQoTkVUU05NUF9ETEwpICYmICFkZWZpbmVkKE5FVFNOTVBfVVNFX0RMTCkKKyNlcnJvciBORVRTTk1QX1VTRV9ETEwgbXVzdCBiZSBkZWZpbmVkIHdoZW4gYnVpbGRpbmcgbGlic25tcCBhcyBhIERMTC4KKyNlbmRpZgogCiAvKgogICogRExMIGRlY29yYXRpb24sIGlmIHVzZWQgYXQgYWxsLCBtdXN0IGJlIGNvbnNpc3RlbnQuCkBAIC0xNjQwLDIwICsxNjc2LDU1IEBACiAgKiAgdGhlIE5FVFNOTVBfSU1QT1JUIGRlZmluaXRpb25zIGhhcm1sZXNzLgogICovCiAKLQotICAjaWZkZWYgTkVUU05NUF9VU0VfRExMCi0gICAgI2lmbmRlZiBORVRTTk1QX1RPT0xTX0MKLQotICAvKiB3cmFwIGFsbG9jIGZ1bmN0aW9ucyB0byB1c2UgRExMJ3MgbWVtb3J5IGhlYXAgKi8KLSAgLyogVGhpcyBpcyBub3QgZG9uZSBpbiB0b29scy5jLCB3aGVyZSB0aGVzZSB3cmFwcGVycyBhcmUgZGVmaW5lZCAqLwotCi0gICAgICAjZGVmaW5lIHN0cmR1cCAgICBuZXRzbm1wX3N0cmR1cAotICAgICAgI2RlZmluZSBjYWxsb2MgICAgbmV0c25tcF9jYWxsb2MKLSAgICAgICNkZWZpbmUgbWFsbG9jICAgIG5ldHNubXBfbWFsbG9jCi0gICAgICAjZGVmaW5lIHJlYWxsb2MgICBuZXRzbm1wX3JlYWxsb2MKLSAgICAgICNkZWZpbmUgZnJlZSAgICAgIG5ldHNubXBfZnJlZQorI2lmZGVmIE5FVFNOTVBfVVNFX0RMTAorICAjaWZkZWYgTkVUU05NUF9ETEwKKyAgICAjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyAgICAgICNkZWZpbmUgTkVUU05NUF9JTVBPUlQgX19kZWNsc3BlYyhkbGxleHBvcnQpCiAgICAgI2VuZGlmCi0gICNlbmRpZgorICAjZWxzZQorICAgICNpZiBkZWZpbmVkKF9NU0NfVkVSKQorICAgICAgI2RlZmluZSBORVRTTk1QX0lNUE9SVCBfX2RlY2xzcGVjKGRsbGltcG9ydCkKKyAgICAjZW5kaWYKKyAgI2VuZGlmICAgLyogTkVUU05NUF9ETEwgKi8KKyNlbmRpZiAgICAgLyogTkVUU05NUF9VU0VfRExMICovCisKKy8qIE1TVkMgT3BlblNTTCBsaW5rZXIgc2V0dGluZ3MuICovCisjaWYgZGVmaW5lZChfTVNDX1ZFUikKKyMgIGlmIGRlZmluZWQoTkVUU05NUF9VU0VfT1BFTlNTTCkKKyMgICAgaWZkZWYgTkVUU05NUF9VU0VfRExMCisjICAgICAgaWZkZWYgX0RFQlVHCisjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1EZC5saWIiKQorIyAgICAgIGVsc2UKKyMgICAgICAgIHByYWdtYSBjb21tZW50KGxpYiwgImxpYmVheTMyTUQubGliIikKKyMgICAgICBlbmRpZgorIyAgICBlbHNlCisjICAgICAgaWZkZWYgX0RFQlVHCisjICAgICAgICBwcmFnbWEgY29tbWVudChsaWIsICJsaWJlYXkzMk1UZC5saWIiKQorIyAgICAgIGVsc2UKKyMgICAgICAgIHByYWdtYSBjb21tZW50KGxpYiwgImxpYmVheTMyTVQubGliIikKKyMgICAgICBlbmRpZgorIyAgICBlbmRpZgorIyAgICBwcmFnbWEgY29tbWVudChsaWIsICJnZGkzMi5saWIiKQorIyAgZW5kaWYKKyNlbmRpZgorCisjaWYgZGVmaW5lZChORVRTTk1QX1VTRV9ETEwpICYmICFkZWZpbmVkKE5FVFNOTVBfVE9PTFNfQykgJiYgIWRlZmluZWQoTVNWQ19QRVJMKQorCisjaW5jbHVkZSA8bWFsbG9jLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+IC8qIG1hbGxvYygpLCBjYWxsb2MoKSwgcmVhbGxvYygpIGFuZCBmcmVlKCkgKi8KKyNpbmNsdWRlIDxzdHJpbmcuaD4gLyogc3RyZHVwKCkgKi8KKyNpbmNsdWRlIDx3czJ0Y3BpcC5oPiAvKiBzb2NrbGVuX3QgKi8KKyNpbmNsdWRlIDx3c3BpYXBpLmg+IC8qIGhhcyBpbmxpbmUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgcmVmZXJlbmNpbmcgY2FsbG9jKCkuICovCisKKy8qIHdyYXAgYWxsb2MgZnVuY3Rpb25zIHRvIHVzZSBETEwncyBtZW1vcnkgaGVhcCAqLworCisjZGVmaW5lIHN0cmR1cCAgICBuZXRzbm1wX3N0cmR1cAorI2RlZmluZSBjYWxsb2MgICAgbmV0c25tcF9jYWxsb2MKKyNkZWZpbmUgbWFsbG9jICAgIG5ldHNubXBfbWFsbG9jCisjZGVmaW5lIHJlYWxsb2MgICBuZXRzbm1wX3JlYWxsb2MKKyNkZWZpbmUgZnJlZSAgICAgIG5ldHNubXBfZnJlZQorCisjZW5kaWYgLyogZGVmaW5lZChORVRTTk1QX1VTRV9ETEwpICYmICFkZWZpbmVkKE5FVFNOTVBfVE9PTFNfQykgJiYgIWRlZmluZWQoTVNWQ19QRVJMKSAqLwogCiAvKiBNU1ZDIE9wZW5TU0wgbGlua2VyIHNldHRpbmdzLiAqLwogI2lmIGRlZmluZWQoV0lOMzIpICYmICFkZWZpbmVkKG1pbmd3MzIpCkBAIC0xNjgxLDcgKzE3NTIsNyBAQAogIyAgZGVmaW5lIE5FVFNOTVBfSU1QT1JUIGV4dGVybgogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKEhBVkVfTkxJU1QpICYmIGRlZmluZWQoU1RSVUNUX05MSVNUX0hBU19OX1ZBTFVFKSAmJiAhZGVmaW5lZChET05UX1VTRV9OTElTVCkgJiYgIWRlZmluZWQoTkVUU05NUF9OT19LTUVNX1VTQUdFKQorI2lmIGRlZmluZWQoSEFWRV9OTElTVCkgJiYgZGVmaW5lZChIQVZFX1NUUlVDVF9OTElTVF9OX1ZBTFVFKSAmJiAhZGVmaW5lZChET05UX1VTRV9OTElTVCkgJiYgIWRlZmluZWQoTkVUU05NUF9OT19LTUVNX1VTQUdFKQogI2RlZmluZSBORVRTTk1QX0NBTl9VU0VfTkxJU1QKICNlbmRpZgogCkBAIC0xNjg5LDcgKzE3NjAsNiBAQAogI2RlZmluZSBETUFMTE9DX0ZVTkNfQ0hFQ0sKICNlbmRpZgogCi0vKiAjdW5kZWYgTkVUU05NUF9FTkFCTEVfSVBWNiAqLwogLyogI3VuZGVmIE5FVFNOTVBfRU5BQkxFX0xPQ0FMX1NNVVggKi8KIAogLyogZGVmaW5lIGlmIGFnZW50eCB0cmFuc3BvcnQgaXMgdG8gdXNlIGRvbWFpbiBzb2NrZXRzIG9ubHkgKi8KQEAgLTE3MTAsNyArMTc4MCw4IEBACiAjdW5kZWYgSEFWRV9JTkVUX05UT1AKICN1bmRlZiBIQVZFX0lORVRfUFRPTgogCi0jaWYgTkVUU05NUF9FTkFCTEVfSVBWNgorLyogSVB2NiB0cmFuc3BvcnRzICovCisjaWZkZWYgTkVUU05NUF9FTkFCTEVfSVBWNgogICAjZGVmaW5lIE5FVFNOTVBfVFJBTlNQT1JUX1RDUElQVjZfRE9NQUlOIDEKICAgI2RlZmluZSBORVRTTk1QX1RSQU5TUE9SVF9VRFBJUFY2X0RPTUFJTiAxCiAjZWxzZQpAQCAtMTcxOSwxMCArMTc5MCwyMCBAQAogI2VuZGlmCiAjZW5kaWYKIAorLyoKKyAqIEFsdGhvdWdoIGlmX25hbWV0b2luZGV4KCkgaXMgYXZhaWxhYmxlIG9uIFdpbmRvd3MgVmlzdGEsIFdpbmRvd3MgU2VydmVyCisgKiAyMDA4IGFuZCBsYXRlciBpbiBpcGhscGFwaS5kbGwsIGRvIG5vdCBsaW5rIHdpdGggaWZfbmFtZXRvaW5kZXgoKSBzdWNoCisgKiB0aGF0IHRoZSBOZXQtU05NUCBleGVjdXRhYmxlIGNhbiBiZSBzdGFydGVkIG9uIGVhcmxpZXIgV2luZG93cyB2ZXJzaW9ucy4KKyAqLworI3VuZGVmIEhBVkVfSUZfTkFNRVRPSU5ERVgKKwogI2lmbmRlZiBOSV9NQVhIT1NUCiAjZGVmaW5lIE5JX01BWEhPU1QJMTAyNQogI2VuZGlmCiAKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgc3RydG91bGwnIGZ1bmN0aW9uLiAqLworLyogI3VuZGVmIEhBVkVfU1RSVE9VTEwgKi8KKwogLyoKICAqIE1vZHVsZSBjb25maWd1cmF0aW9uIGFuZCBjb250cm9sIHN0YXJ0cyBoZXJlLgogICoKQEAgLTE3NjYsOSArMTg0NywxNiBAQAogI2RlZmluZSBORVRTTk1QX1RJTUVPVVRfV0FJVEZPUlNJTkdMRU9CSkVDVCA1MDAwCiAKICNpZmRlZiBIQVZFX1dJTjMyX1BMQVRGT1JNX1NESwotI2RlZmluZSBTVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9IQVNfU1NfRkFNSUxZIDEKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfU09DS0FERFJfU1RPUkFHRV9TU19GQU1JTFkgMQogI2VuZGlmCiAKKyNpZmRlZiBfTVNDX1ZFUgorI2lmZGVmIF9XSU42NAorI2RlZmluZSBORVRTTk1QX1BSSXogIkk2NCIKKyNlbHNlCisjZGVmaW5lIE5FVFNOTVBfUFJJeiAiIgorI2VuZGlmCisjZW5kaWYKIAogI2VuZGlmIC8qIE5FVF9TTk1QX0NPTkZJR19IICovCiAKZGlmZiAtLWdpdCBhL3dpbjMyL25ldHNubXBtaWJzL01ha2VmaWxlLmluIGIvd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4KaW5kZXggNGUyNGQ3NS4uZjI4NzAwYiAxMDA2NDQKLS0tIGEvd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvbmV0c25tcG1pYnMvTWFrZWZpbGUuaW4KQEAgLTIsNiArMiw3IEBACiBDRkc9CiBPVVRESVI9CiBJTlRESVI9CitTREs9CiAKICFJRiAiJChPUykiID09ICJXaW5kb3dzX05UIgogTlVMTD0KQEAgLTksNzUgKzEwLDggQEAKIE5VTEw9bnVsCiAhRU5ESUYgCiAKLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KIEFMTCA6ICIuLlxsaWJcJChPVVRESVIpXCQoUFJPR05BTUUpLmxpYiIKIAotCi1DTEVBTiA6Ci0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50eF9jb25maWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxjbGllbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxlcnJvcm1pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4YW1wbGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleGVjdXRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaXF1ZXJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXh0ZW5zaWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGZpbGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxoZWFkZXJfY29tcGxleC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGxvYWRhdmUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtYXN0ZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtYXN0ZXJfYWRtaW4ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtaWJfbW9kdWxlcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVFdmVudFRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlT2JqZWN0c1RhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlckJvb2xlYW5UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJEZWx0YVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlclRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXh0ZW5kLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNDYWNoZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zRGVidWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0xvZ2dpbmcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc01vZHVsZVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNUcmFuc2FjdGlvblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcb3ZlcnJpZGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwYXNzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccGFzc19wZXJzaXN0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccHJvYy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb3RvY29sLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccHJveHkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzZXRTZXJpYWxOby5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNtdXgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX21pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBFbmdpbmUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTVBEU3RhdHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBUYXJnZXRBZGRyRW50cnkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVGFyZ2V0UGFyYW1zRW50cnkub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzdWJhZ2VudC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN5c09SVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzeXN0ZW1fbWliLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdGFyZ2V0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdGFyZ2V0X2NvdW50ZXJzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdWNkRGVtb1B1YmxpYy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbUNvbmYub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21TdGF0cy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbVVzZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV9jb25mLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV92YXJzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZlcnNpb25pbmZvLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgotCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcJChQUk9HTkFNRSkubGliIgotCiAiLi5cbGliXCQoT1VURElSKSIgOgogICAgIGlmIG5vdCBleGlzdCAiLi5cbGliXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cbGliXCQoT1VURElSKSIKIApAQCAtODUsNyArMTksMTEgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKKyFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorIUVORElGCiAKIC5jeyQoSU5URElSKX0ub2JqOjoKICAgICQoQ1BQKSBAPDwKQEAgLTExOCwxMCArNTYsNiBAQAogPDwKIAogUlNDPXJjLmV4ZQotQlNDMzI9YnNjbWFrZS5leGUKLUJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChJTlRESVIpXCQoUFJPR05BTUUpLmJzYyIgCi1CU0MzMl9TQlJTPSBcCi0KIExJQjMyPWxpbmsuZXhlIC1saWIKIExJQjMyX0ZMQUdTPS9ub2xvZ28gL291dDoiLi5cbGliXCQoT1VURElSKVwkKFBST0dOQU1FKS5saWIiIAogTElCMzJfT0JKUz0gXApAQCAtMTI5LDYgKzYzLDcgQEAKIAkiJChJTlRESVIpXHNubXBfbWliLm9iaiIgXAogCSIkKElOVERJUilcc3lzT1JUYWJsZS5vYmoiIFwKIAkiJChJTlRESVIpXHN5c3RlbV9taWIub2JqIiBcCisJIiQoSU5URElSKVx1cGRhdGVzLm9iaiIgXAogCSIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIgXAogCSIkKElOVERJUilcdmFjbV9jb25mLm9iaiIgXAogCSIkKElOVERJUilcdmFjbV92YXJzLm9iaiIgXApAQCAtMTgwLDIwMSArMTE1LDM5IEBACiAJIiQoSU5URElSKVxuc1RyYW5zYWN0aW9uVGFibGUub2JqIiBcCiAJIiQoSU5URElSKVxleGVjdXRlLm9iaiIgXAogCSIkKElOVERJUilcaXF1ZXJ5Lm9iaiIgXAorCSIkKElOVERJUilcb3ZlcnJpZGUub2JqIiBcCisJIiQoSU5URElSKVxoZWFkZXJfZ2VuZXJpYy5vYmoiIFwKKwkiJChJTlRESVIpXGhlYWRlcl9zaW1wbGVfdGFibGUub2JqIiBcCiAJIiQoSU5URElSKVxoZWFkZXJfY29tcGxleC5vYmoiIFwKIAkiJChJTlRESVIpXG1pYl9tb2R1bGVzLm9iaiIgXAotCSIkKElOVERJUilcb3ZlcnJpZGUub2JqIiBcCiAJIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIgXAogCSIkKElOVERJUilcc211eC5vYmoiCi0KLSIuLlxsaWJcJChPVVRESVIpXCQoUFJPR05BTUUpLmxpYiIgOiAiLi5cbGliXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSUIzMl9PQkpTKQotICAgICQoTElCMzIpIEA8PAotICAkKExJQjMyX0ZMQUdTKSAkKERFRl9GTEFHUykgJChMSUIzMl9PQkpTKQotPDwKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi1BTEwgOiAiLi5cbGliXCQoT1VURElSKVwkKFBST0dOQU1FKS5saWIiCi0KKyFJRiAiJChTREspIiA9PSAidHJ1ZSIKK0xJQjMyX09CSlM9ICQoTElCMzJfT0JKUykgXAorCSIkKElOVERJUilcYXQub2JqIiBcCisJIiQoSU5URElSKVxpY21wLm9iaiIgXAorCSIkKElOVERJUilcaW50ZXJmYWNlcy5vYmoiIFwKKwkiJChJTlRESVIpXGlwLm9iaiIgXAorCSIkKElOVERJUilcaXBBZGRyLm9iaiIgXAorCSIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiIFwKKwkiJChJTlRESVIpXHJvdXRlX3dyaXRlLm9iaiIgXAorCSIkKElOVERJUilcdGNwLm9iaiIgXAorCSIkKElOVERJUilcdGNwVGFibGUub2JqIiBcCisJIiQoSU5URElSKVx1ZHAub2JqIiBcCisJIiQoSU5URElSKVx1ZHBUYWJsZS5vYmoiIFwKKwkiJChJTlRESVIpXHZhcl9yb3V0ZS5vYmoiIFwKKwkiJChJTlRESVIpXHdpbkV4dERMTC5vYmoiCishRU5ESUYKIAogQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhZ2VudHhfY29uZmlnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY2xpZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXJyb3JtaWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleGFtcGxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXhlY3V0ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGlxdWVyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4dGVuc2libGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxmaWxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxsb2FkYXZlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWFzdGVyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWFzdGVyX2FkbWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWliX21vZHVsZXMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlRXZlbnRUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZU9iamVjdHNUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJCb29sZWFuVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyRGVsdGFUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4dGVuZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zQ2FjaGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0RlYnVnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNMb2dnaW5nLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNNb2R1bGVUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zVHJhbnNhY3Rpb25UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccGFzcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHBhc3NfcGVyc2lzdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb2Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm90b2NvbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb3h5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc2V0U2VyaWFsTm8ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbXV4Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9taWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wRW5naW5lLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE1QRFN0YXRzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5VGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVGFyZ2V0QWRkckVudHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRhcmdldFBhcmFtc0VudHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3ViYWdlbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzeXNPUlRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3lzdGVtX21pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRhcmdldC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRhcmdldF9jb3VudGVycy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVjZERlbW9QdWJsaWMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21Db25mLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXNtU3RhdHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21Vc2VyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXRpbF9mdW5jcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fY29udGV4dC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fY29uZi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZhY21fdmFycy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LnBkYiIKLQktQGVyYXNlICIkKElOVERJUilcdmVyc2lvbmluZm8ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCisJLUBmb3IgJWYgaW4gKCQoTElCMzJfT0JKUykpIGRvIGVyYXNlICUlZgogCS1AZXJhc2UgIi4uXGxpYlwkKE9VVERJUilcJChQUk9HTkFNRSkubGliIgogCi0iLi5cbGliXCQoT1VURElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiLi5cbGliXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cbGliXCQoT1VURElSKSIKLQotIiQoSU5URElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCi0KLUNQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKLQotLmN7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi1SU0M9cmMuZXhlCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcJChQUk9HTkFNRSkuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQotTElCMzI9bGluay5leGUgLWxpYgotTElCMzJfRkxBR1M9L25vbG9nbyAvb3V0OiIuLlxsaWJcJChPVVRESVIpXCQoUFJPR05BTUUpLmxpYiIgCi1MSUIzMl9PQkpTPSBcCi0JIiQoSU5URElSKVxzZXRTZXJpYWxOby5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfbWliLm9iaiIgXAotCSIkKElOVERJUilcc3lzT1JUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHN5c3RlbV9taWIub2JqIiBcCi0JIiQoSU5URElSKVx2YWNtX2NvbnRleHQub2JqIiBcCi0JIiQoSU5URElSKVx2YWNtX2NvbmYub2JqIiBcCi0JIiQoSU5URElSKVx2YWNtX3ZhcnMub2JqIiBcCi0JIiQoSU5URElSKVxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlRXZlbnRUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZU9iamVjdHNUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJCb29sZWFuVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyRGVsdGFUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXGV4YW1wbGUub2JqIiBcCi0JIiQoSU5URElSKVx1Y2REZW1vUHVibGljLm9iaiIgXAotCSIkKElOVERJUilcZXJyb3JtaWIub2JqIiBcCi0JIiQoSU5URElSKVxleHRlbnNpYmxlLm9iaiIgXAotCSIkKElOVERJUilcZmlsZS5vYmoiIFwKLQkiJChJTlRESVIpXGxvYWRhdmUub2JqIiBcCi0JIiQoSU5URElSKVxwYXNzLm9iaiIgXAotCSIkKElOVERJUilccGFzc19wZXJzaXN0Lm9iaiIgXAotCSIkKElOVERJUilccHJvYy5vYmoiIFwKLQkiJChJTlRESVIpXHByb3h5Lm9iaiIgXAotCSIkKElOVERJUilcdmVyc2lvbmluZm8ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wRW5naW5lLm9iaiIgXAotCSIkKElOVERJUilcc25tcE1QRFN0YXRzLm9iaiIgXAotCSIkKElOVERJUilcdXNtQ29uZi5vYmoiIFwKLQkiJChJTlRESVIpXHVzbVN0YXRzLm9iaiIgXAotCSIkKElOVERJUilcdXNtVXNlci5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJQcm9maWxlVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3Mub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcc25tcFRhcmdldEFkZHJFbnRyeS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBUYXJnZXRQYXJhbXNFbnRyeS5vYmoiIFwKLQkiJChJTlRESVIpXHRhcmdldC5vYmoiIFwKLQkiJChJTlRESVIpXHRhcmdldF9jb3VudGVycy5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50eF9jb25maWcub2JqIiBcCi0JIiQoSU5URElSKVxjbGllbnQub2JqIiBcCi0JIiQoSU5URElSKVxtYXN0ZXIub2JqIiBcCi0JIiQoSU5URElSKVxtYXN0ZXJfYWRtaW4ub2JqIiBcCi0JIiQoSU5URElSKVxwcm90b2NvbC5vYmoiIFwKLQkiJChJTlRESVIpXHN1YmFnZW50Lm9iaiIgXAotCSIkKElOVERJUilcZXh0ZW5kLm9iaiIgXAotCSIkKElOVERJUilcbnNDYWNoZS5vYmoiIFwKLQkiJChJTlRESVIpXG5zRGVidWcub2JqIiBcCi0JIiQoSU5URElSKVxuc0xvZ2dpbmcub2JqIiBcCi0JIiQoSU5URElSKVxuc01vZHVsZVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbnNUcmFuc2FjdGlvblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcZXhlY3V0ZS5vYmoiIFwKLQkiJChJTlRESVIpXGlxdWVyeS5vYmoiIFwKLQkiJChJTlRESVIpXGhlYWRlcl9jb21wbGV4Lm9iaiIgXAotCSIkKElOVERJUilcbWliX21vZHVsZXMub2JqIiBcCi0JIiQoSU5URElSKVxvdmVycmlkZS5vYmoiIFwKLQkiJChJTlRESVIpXHV0aWxfZnVuY3Mub2JqIiBcCi0JIiQoSU5URElSKVxzbXV4Lm9iaiIKLQogIi4uXGxpYlwkKE9VVERJUilcJChQUk9HTkFNRSkubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCiAgICAgJChMSUIzMikgQDw8CiAgICQoTElCMzJfRkxBR1MpICQoREVGX0ZMQUdTKSAkKExJQjMyX09CSlMpCiA8PAogCi0hRU5ESUYgCi0KIAogIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKICFJRiBFWElTVFMoIiQoUFJPR05BTUUpLmRlcCIpCkBAIC00MTAsNiArMTgzLDEyIEBACiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx1cGRhdGVzLmMKKworIiQoSU5URElSKVx1cGRhdGVzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKwogU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fY29udGV4dC5jCiAKICIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKQEAgLTU4NCw2ICszNjMsMTIgQEAKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAorU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb24tbG9nLW1pYlxub3RpZmljYXRpb25fbG9nLmMiCisKKyIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wLW5vdGlmaWNhdGlvbi1taWJcc25tcE5vdGlmeUZpbHRlclRhYmxlXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5jCiAKICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKQEAgLTcxNSw2ICs1MDAsMjUgQEAKICIkKElOVERJUilcaXF1ZXJ5Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxpdGllc1xvdmVycmlkZS5jCisKKyIkKElOVERJUilcb3ZlcnJpZGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbF9mdW5jc1xoZWFkZXJfZ2VuZXJpYy5jCisKKyIkKElOVERJUilcaGVhZGVyX2dlbmVyaWMub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbF9mdW5jc1xoZWFkZXJfc2ltcGxlX3RhYmxlLmMKKworIiQoSU5URElSKVxoZWFkZXJfc2ltcGxlX3RhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKwogU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGhlYWRlcl9jb21wbGV4LmMKIAogIiQoSU5URElSKVxoZWFkZXJfY29tcGxleC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCkBAIC03NDUsNiArNTQ5LDExNSBAQAogCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKIAogCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZGxtb2QuYworIiQoSU5URElSKVxkbG1vZC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxlcnJvcm1pYi5jCisiJChJTlRESVIpXGVycm9ybWliLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGV4dGVuc2libGUuYworIiQoSU5URElSKVxleHRlbnNpYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGZpbGUuYworIiQoSU5URElSKVxmaWxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGxvYWRhdmUuYworIiQoSU5URElSKVxsb2FkYXZlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHBhc3MuYworIiQoSU5URElSKVxwYXNzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHBhc3NfcGVyc2lzdC5jCisiJChJTlRESVIpXHBhc3NfcGVyc2lzdC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwcm9jLmMKKyIkKElOVERJUilccHJvYy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwcm94eS5jCisiJChJTlRESVIpXHByb3h5Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHZlcnNpb25pbmZvLmMKKyIkKElOVERJUilcdmVyc2lvbmluZm8ub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcd2luRXh0RExMLmMKKyIkKElOVERJUilcd2luRXh0RExMLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKKwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCisKKworU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGF0LmMKKyIkKElOVERJUilcYXQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaWNtcC5jCisiJChJTlRESVIpXGljbXAub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaW50ZXJmYWNlcy5jCisiJChJTlRESVIpXGludGVyZmFjZXMub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaXAuYworIiQoSU5URElSKVxpcC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpcEFkZHIuYworIiQoSU5URElSKVxpcEFkZHIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlccm91dGVfd3JpdGUuYworIiQoSU5URElSKVxyb3V0ZV93cml0ZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx0Y3AuYworIiQoSU5URElSKVx0Y3Aub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdGNwVGFibGUuYworIiQoSU5URElSKVx0Y3BUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx1ZHAuYworIiQoSU5URElSKVx1ZHAub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKworCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwVGFibGUuYworIiQoSU5URElSKVx1ZHBUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCisJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQorCisKK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YXJfcm91dGUuYworIiQoSU5URElSKVx2YXJfcm91dGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgorCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKKwogCiAhRU5ESUYgCiAKZGlmZiAtLWdpdCBhL3dpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcCBiL3dpbjMyL25ldHNubXBtaWJzL25ldHNubXBtaWJzLmRzcAppbmRleCAzYWQ4NzlkLi40NWQ1NzQ0IDEwMDY0NAotLS0gYS93aW4zMi9uZXRzbm1wbWlicy9uZXRzbm1wbWlicy5kc3AKKysrIGIvd2luMzIvbmV0c25tcG1pYnMvbmV0c25tcG1pYnMuZHNwCkBAIC04NSw2ICs4NSwzMCBAQAogIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxhdC5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGljbXAuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpbnRlcmZhY2VzLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaXAuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpcEFkZHIuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxyb3V0ZV93cml0ZS5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQogU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHNldFNlcmlhbE5vLmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCkBAIC0xMDEsNyArMTI1LDIzIEBACiAjIEVuZCBTb3VyY2UgRmlsZQ0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFjbV9jb250ZXh0LmMNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdGNwLmMNCisjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgQmVnaW4gU291cmNlIEZpbGUNCisNCitTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdGNwVGFibGUuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx1ZHAuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx1ZHBUYWJsZS5jDQorIyBFbmQgU291cmNlIEZpbGUNCisjIEJlZ2luIFNvdXJjZSBGaWxlDQorDQorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHVwZGF0ZXMuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KQEAgLTEwOSw4ICsxNDksMTYgQEAKICMgRW5kIFNvdXJjZSBGaWxlDQogIyBCZWdpbiBTb3VyY2UgRmlsZQ0KIA0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YWNtX2NvbnRleHQuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YWNtX3ZhcnMuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YXJfcm91dGUuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQogIyBFbmQgR3JvdXANCiAjIEJlZ2luIEdyb3VwICJkaXNtYW4iDQogDQpAQCAtMjQxLDYgKzI4OSwxMCBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG5vdGlmaWNhdGlvbi1sb2ctbWliXG5vdGlmaWNhdGlvbl9sb2cuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wLW5vdGlmaWNhdGlvbi1taWJcc25tcE5vdGlmeUZpbHRlclRhYmxlXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMzQ1LDYgKzM5NywxNCBAQAogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQogDQorU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxfZnVuY3NcaGVhZGVyX2dlbmVyaWMuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsX2Z1bmNzXGhlYWRlcl9zaW1wbGVfdGFibGUuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KIFNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxoZWFkZXJfY29tcGxleC5jDQogIyBFbmQgU291cmNlIEZpbGUNCiAjIEJlZ2luIFNvdXJjZSBGaWxlDQpAQCAtMzYwLDkgKzQyMCwyNSBAQAogU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxfZnVuY3MuYw0KICMgRW5kIFNvdXJjZSBGaWxlDQogIyBFbmQgR3JvdXANCisjIEJlZ2luIEdyb3VwICJ3aW5FeHRETEwiDQorDQorIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx3aW5FeHRETEwuYw0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBCZWdpbiBTb3VyY2UgRmlsZQ0KKw0KK1NPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx3aW5FeHRETEwuaA0KKyMgRW5kIFNvdXJjZSBGaWxlDQorIyBFbmQgR3JvdXANCisjIEJlZ2luIEdyb3VwICJzbXV4Ig0KKw0KKyMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KICMgQmVnaW4gU291cmNlIEZpbGUNCiANCiBTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc211eFxzbXV4LmMNCiAjIEVuZCBTb3VyY2UgRmlsZQ0KKyMgRW5kIEdyb3VwDQogIyBFbmQgVGFyZ2V0DQogIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL25ldHNubXBtaWJzc2RrL01ha2VmaWxlLmluIGIvd2luMzIvbmV0c25tcG1pYnNzZGsvTWFrZWZpbGUuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3ZDE5MDQuLjAwMDAwMDAKLS0tIGEvd2luMzIvbmV0c25tcG1pYnNzZGsvTWFrZWZpbGUuaW4KKysrIC9kZXYvbnVsbApAQCAtMSw4ODUgKzAsMCBAQAotUFJPR05BTUU9Ci1DRkc9Ci1PVVRESVI9Ci1JTlRESVI9Ci0KLSFJRiAiJChPUykiID09ICJXaW5kb3dzX05UIgotTlVMTD0KLSFFTFNFIAotTlVMTD1udWwKLSFFTkRJRiAKLQotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotQUxMIDogIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcG1pYnMubGliIgotCi0KLUNMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYWdlbnR4X2NvbmZpZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGF0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcY2xpZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZGxtb2Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxlcnJvcm1pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4YW1wbGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleGVjdXRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaXF1ZXJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXh0ZW5zaWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGZpbGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxoZWFkZXJfY29tcGxleC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGljbXAub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpbnRlcmZhY2VzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaXAub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpcEFkZHIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxsb2FkYXZlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWFzdGVyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWFzdGVyX2FkbWluLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbWliX21vZHVsZXMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlRXZlbnRUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZU9iamVjdHNUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJCb29sZWFuVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyRGVsdGFUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4dGVuZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zQ2FjaGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0RlYnVnLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNMb2dnaW5nLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNNb2R1bGVUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zVHJhbnNhY3Rpb25UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccGFzcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHBhc3NfcGVyc2lzdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb2Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm90b2NvbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHByb3h5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccm91dGVfd3JpdGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzZXRTZXJpYWxOby5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNtdXgub2JqIgotIwktQGVyYXNlICIkKElOVERJUilcd2luRXh0RExMLm9iaiIJIyB1bmNvbW1lbnQgZm9yIHdpbkV4dERMTAotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wX21pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBFbmdpbmUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTVBEU3RhdHMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5VGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wVGFyZ2V0QWRkckVudHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRhcmdldFBhcmFtc0VudHJ5Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3ViYWdlbnQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzeXNPUlRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3lzdGVtX21pYi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRhcmdldC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRhcmdldF9jb3VudGVycy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRjcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHRjcFRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdWNkRGVtb1B1YmxpYy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVkcC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVkcFRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXNtQ29uZi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbVN0YXRzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdXNtVXNlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHV0aWxfZnVuY3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtX2NvbnRleHQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtX2NvbmYub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YWNtX3ZhcnMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2YXJfcm91dGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcdmVyc2lvbmluZm8ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCi0JLUBlcmFzZSAiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wbWlicy5saWIiCi0KLSIuLlxsaWJcJChPVVRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIuLlxsaWJcJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxsaWJcJChPVVRESVIpIgotCi0iJChJTlRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKLQotQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyIgL0ZwIiQoSU5URElSKVxuZXRzbm1wbWlic3Nkay5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAotCi0uY3skKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLVJTQz1yYy5leGUKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVxuZXRzbm1wbWlic3Nkay5ic2MiIAotQlNDMzJfU0JSUz0gXAotCi1MSUIzMj1saW5rLmV4ZSAtbGliCi1MSUIzMl9GTEFHUz1pcGhscGFwaS5saWIgL25vbG9nbyAvb3V0OiIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBtaWJzLmxpYiIgCi1MSUIzMl9PQkpTPSBcCi0JIiQoSU5URElSKVxzZXRTZXJpYWxOby5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBfbWliLm9iaiIgXAotCSIkKElOVERJUilcc3lzT1JUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHN5c3RlbV9taWIub2JqIiBcCi0JIiQoSU5URElSKVx2YWNtX2NvbnRleHQub2JqIiBcCi0JIiQoSU5URElSKVx2YWNtX2NvbmYub2JqIiBcCi0JIiQoSU5URElSKVx2YWNtX3ZhcnMub2JqIiBcCi0JIiQoSU5URElSKVxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlRXZlbnRUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZU9iamVjdHNUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJCb29sZWFuVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyRGVsdGFUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZVRyaWdnZXJUaHJlc2hvbGRUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXGV4YW1wbGUub2JqIiBcCi0JIiQoSU5URElSKVx1Y2REZW1vUHVibGljLm9iaiIgXAotCSIkKElOVERJUilcc25tcEVuZ2luZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBNUERTdGF0cy5vYmoiIFwKLQkiJChJTlRESVIpXHVzbUNvbmYub2JqIiBcCi0JIiQoSU5URElSKVx1c21TdGF0cy5vYmoiIFwKLQkiJChJTlRESVIpXHVzbVVzZXIub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2Uub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5VGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wVGFyZ2V0QWRkckVudHJ5Lm9iaiIgXAotCSIkKElOVERJUilcc25tcFRhcmdldFBhcmFtc0VudHJ5Lm9iaiIgXAotCSIkKElOVERJUilcdGFyZ2V0Lm9iaiIgXAotCSIkKElOVERJUilcdGFyZ2V0X2NvdW50ZXJzLm9iaiIgXAotCSIkKElOVERJUilcYWdlbnR4X2NvbmZpZy5vYmoiIFwKLQkiJChJTlRESVIpXGNsaWVudC5vYmoiIFwKLQkiJChJTlRESVIpXG1hc3Rlci5vYmoiIFwKLQkiJChJTlRESVIpXG1hc3Rlcl9hZG1pbi5vYmoiIFwKLQkiJChJTlRESVIpXHByb3RvY29sLm9iaiIgXAotCSIkKElOVERJUilcc3ViYWdlbnQub2JqIiBcCi0JIiQoSU5URElSKVxleHRlbmQub2JqIiBcCi0JIiQoSU5URElSKVxuc0NhY2hlLm9iaiIgXAotCSIkKElOVERJUilcbnNEZWJ1Zy5vYmoiIFwKLQkiJChJTlRESVIpXG5zTG9nZ2luZy5vYmoiIFwKLQkiJChJTlRESVIpXG5zTW9kdWxlVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxuc1RyYW5zYWN0aW9uVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxleGVjdXRlLm9iaiIgXAotCSIkKElOVERJUilcaXF1ZXJ5Lm9iaiIgXAotCSIkKElOVERJUilcb3ZlcnJpZGUub2JqIiBcCi0JIiQoSU5URElSKVxhdC5vYmoiIFwKLQkiJChJTlRESVIpXGljbXAub2JqIiBcCi0JIiQoSU5URElSKVxpbnRlcmZhY2VzLm9iaiIgXAotCSIkKElOVERJUilcaXAub2JqIiBcCi0JIiQoSU5URElSKVxpcEFkZHIub2JqIiBcCi0JIiQoSU5URElSKVxyb3V0ZV93cml0ZS5vYmoiIFwKLQkiJChJTlRESVIpXHRjcC5vYmoiIFwKLQkiJChJTlRESVIpXHRjcFRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcdWRwLm9iaiIgXAotCSIkKElOVERJUilcdWRwVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVx2YXJfcm91dGUub2JqIiBcCi0JIiQoSU5URElSKVxkbG1vZC5vYmoiIFwKLQkiJChJTlRESVIpXGVycm9ybWliLm9iaiIgXAotCSIkKElOVERJUilcZXh0ZW5zaWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXGZpbGUub2JqIiBcCi0JIiQoSU5URElSKVxsb2FkYXZlLm9iaiIgXAotCSIkKElOVERJUilccGFzcy5vYmoiIFwKLQkiJChJTlRESVIpXHBhc3NfcGVyc2lzdC5vYmoiIFwKLQkiJChJTlRESVIpXHByb2Mub2JqIiBcCi0JIiQoSU5URElSKVxwcm94eS5vYmoiIFwKLQkiJChJTlRESVIpXHZlcnNpb25pbmZvLm9iaiIgXAotCSIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIiBcCi0JIiQoSU5URElSKVxtaWJfbW9kdWxlcy5vYmoiIFwKLQkiJChJTlRESVIpXHV0aWxfZnVuY3Mub2JqIiBcCi0jCSIkKElOVERJUilcd2luRXh0RExMLm9iaiIgXAkjIHVuY29tbWVudCBmb3Igd2luRXh0RExMCi0JIiQoSU5URElSKVxzbXV4Lm9iaiIKLQotIi4uXGxpYlwkKE9VVERJUilcbmV0c25tcG1pYnMubGliIiA6ICIuLlxsaWJcJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJQjMyX09CSlMpCi0gICAgJChMSUIzMikgQDw8Ci0gICQoTElCMzJfRkxBR1MpICQoREVGX0ZMQUdTKSAkKExJQjMyX09CSlMpCi08PAotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLUFMTCA6ICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBtaWJzLmxpYiIKLQotCi1DTEVBTiA6Ci0JLUBlcmFzZSAiJChJTlRESVIpXGFnZW50eF9jb25maWcub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxhdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGNsaWVudC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGRsbW9kLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXJyb3JtaWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleGFtcGxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcZXhlY3V0ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGlxdWVyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGV4dGVuc2libGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxmaWxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxpY21wLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaW50ZXJmYWNlcy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGlwLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcaXBBZGRyLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbG9hZGF2ZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1hc3Rlci5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1hc3Rlcl9hZG1pbi5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG1pYl9tb2R1bGVzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG10ZUV2ZW50VGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVPYmplY3RzVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbXRlVHJpZ2dlckRlbHRhVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxleHRlbmQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc0NhY2hlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcbnNEZWJ1Zy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zTG9nZ2luZy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5zTW9kdWxlVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxuc1RyYW5zYWN0aW9uVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxvdmVycmlkZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHBhc3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwYXNzX3BlcnNpc3Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm9jLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilccHJvdG9jb2wub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxwcm94eS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHJvdXRlX3dyaXRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc2V0U2VyaWFsTm8ub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbXV4Lm9iaiIKLSMJLUBlcmFzZSAiJChJTlRESVIpXHdpbkV4dERMTC5vYmoiCSMgdW5jb21tZW50IGZvciB3aW5FeHRETEwKLQktQGVyYXNlICIkKElOVERJUilcc25tcF9taWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wRW5naW5lLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE1QRFN0YXRzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGUub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3Mub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcE5vdGlmeVRhYmxlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcFRhcmdldEFkZHJFbnRyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBUYXJnZXRQYXJhbXNFbnRyeS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN1YmFnZW50Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc3lzT1JUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHN5c3RlbV9taWIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0YXJnZXQub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0YXJnZXRfY291bnRlcnMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0Y3Aub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx0Y3BUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVjZERlbW9QdWJsaWMub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1ZHAub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1ZHBUYWJsZS5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbUNvbmYub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1c21TdGF0cy5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHVzbVVzZXIub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV9jb25mLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFjbV92YXJzLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmFyX3JvdXRlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8ucGRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx2ZXJzaW9uaW5mby5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKLQktQGVyYXNlICIuLlxsaWJcJChPVVRESVIpXG5ldHNubXBtaWJzLmxpYiIKLQotIi4uXGxpYlwkKE9VVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIi4uXGxpYlwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGxpYlwkKE9VVERJUikiCi0KLSIkKElOVERJUikiIDoKLSAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgotCi1DUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiSEFWRV9XSU4zMl9QTEFURk9STV9TREsiIC9GcCIkKElOVERJUilcbmV0c25tcG1pYnNzZGsucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKLQotLmN7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi1SU0M9cmMuZXhlCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcbmV0c25tcG1pYnNzZGsuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQotTElCMzI9bGluay5leGUgLWxpYgotTElCMzJfRkxBR1M9aXBobHBhcGkubGliIC9ub2xvZ28gL291dDoiLi5cbGliXCQoT1VURElSKVxuZXRzbm1wbWlicy5saWIiIAotTElCMzJfT0JKUz0gXAotCSIkKElOVERJUilcc2V0U2VyaWFsTm8ub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wX21pYi5vYmoiIFwKLQkiJChJTlRESVIpXHN5c09SVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzeXN0ZW1fbWliLm9iaiIgXAotCSIkKElOVERJUilcdmFjbV9jb250ZXh0Lm9iaiIgXAotCSIkKElOVERJUilcdmFjbV9jb25mLm9iaiIgXAotCSIkKElOVERJUilcdmFjbV92YXJzLm9iaiIgXAotCSIkKElOVERJUilcbXRlRXZlbnROb3RpZmljYXRpb25UYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG10ZUV2ZW50VGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVPYmplY3RzVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbXRlVHJpZ2dlckRlbHRhVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyRXhpc3RlbmNlVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxleGFtcGxlLm9iaiIgXAotCSIkKElOVERJUilcdWNkRGVtb1B1YmxpYy5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBFbmdpbmUub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTVBEU3RhdHMub2JqIiBcCi0JIiQoSU5URElSKVx1c21Db25mLm9iaiIgXAotCSIkKElOVERJUilcdXNtU3RhdHMub2JqIiBcCi0JIiQoSU5URElSKVx1c21Vc2VyLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclByb2ZpbGVUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGUub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3Mub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfaW50ZXJmYWNlLm9iaiIgXAotCSIkKElOVERJUilcc25tcE5vdGlmeVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcc25tcFRhcmdldEFkZHJFbnRyeS5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBUYXJnZXRQYXJhbXNFbnRyeS5vYmoiIFwKLQkiJChJTlRESVIpXHRhcmdldC5vYmoiIFwKLQkiJChJTlRESVIpXHRhcmdldF9jb3VudGVycy5vYmoiIFwKLQkiJChJTlRESVIpXGFnZW50eF9jb25maWcub2JqIiBcCi0JIiQoSU5URElSKVxjbGllbnQub2JqIiBcCi0JIiQoSU5URElSKVxtYXN0ZXIub2JqIiBcCi0JIiQoSU5URElSKVxtYXN0ZXJfYWRtaW4ub2JqIiBcCi0JIiQoSU5URElSKVxwcm90b2NvbC5vYmoiIFwKLQkiJChJTlRESVIpXHN1YmFnZW50Lm9iaiIgXAotCSIkKElOVERJUilcZXh0ZW5kLm9iaiIgXAotCSIkKElOVERJUilcbnNDYWNoZS5vYmoiIFwKLQkiJChJTlRESVIpXG5zRGVidWcub2JqIiBcCi0JIiQoSU5URElSKVxuc0xvZ2dpbmcub2JqIiBcCi0JIiQoSU5URElSKVxuc01vZHVsZVRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcbnNUcmFuc2FjdGlvblRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcZXhlY3V0ZS5vYmoiIFwKLQkiJChJTlRESVIpXGlxdWVyeS5vYmoiIFwKLQkiJChJTlRESVIpXG92ZXJyaWRlLm9iaiIgXAotCSIkKElOVERJUilcYXQub2JqIiBcCi0JIiQoSU5URElSKVxpY21wLm9iaiIgXAotCSIkKElOVERJUilcaW50ZXJmYWNlcy5vYmoiIFwKLQkiJChJTlRESVIpXGlwLm9iaiIgXAotCSIkKElOVERJUilcaXBBZGRyLm9iaiIgXAotCSIkKElOVERJUilccm91dGVfd3JpdGUub2JqIiBcCi0JIiQoSU5URElSKVx0Y3Aub2JqIiBcCi0JIiQoSU5URElSKVx0Y3BUYWJsZS5vYmoiIFwKLQkiJChJTlRESVIpXHVkcC5vYmoiIFwKLQkiJChJTlRESVIpXHVkcFRhYmxlLm9iaiIgXAotCSIkKElOVERJUilcdmFyX3JvdXRlLm9iaiIgXAotCSIkKElOVERJUilcZGxtb2Qub2JqIiBcCi0JIiQoSU5URElSKVxlcnJvcm1pYi5vYmoiIFwKLQkiJChJTlRESVIpXGV4dGVuc2libGUub2JqIiBcCi0JIiQoSU5URElSKVxmaWxlLm9iaiIgXAotCSIkKElOVERJUilcbG9hZGF2ZS5vYmoiIFwKLQkiJChJTlRESVIpXHBhc3Mub2JqIiBcCi0JIiQoSU5URElSKVxwYXNzX3BlcnNpc3Qub2JqIiBcCi0JIiQoSU5URElSKVxwcm9jLm9iaiIgXAotCSIkKElOVERJUilccHJveHkub2JqIiBcCi0JIiQoSU5URElSKVx2ZXJzaW9uaW5mby5vYmoiIFwKLQkiJChJTlRESVIpXGhlYWRlcl9jb21wbGV4Lm9iaiIgXAotCSIkKElOVERJUilcbWliX21vZHVsZXMub2JqIiBcCi0JIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIgXAotCSIkKElOVERJUilcc211eC5vYmoiIFwKLSMJIiQoSU5URElSKVx3aW5FeHRETEwub2JqIiBcCSMgdW5jb21tZW50IGZvciB3aW5FeHRETEwKLQkiJChJTlRESVIpXHNtdXgub2JqIgotCi0iLi5cbGliXCQoT1VURElSKVxuZXRzbm1wbWlicy5saWIiIDogIi4uXGxpYlwkKE9VVERJUikiICQoREVGX0ZJTEUpICQoTElCMzJfT0JKUykKLSAgICAkKExJQjMyKSBAPDwKLSAgJChMSUIzMl9GTEFHUykgJChERUZfRkxBR1MpICQoTElCMzJfT0JKUykKLTw8Ci0KLSFFTkRJRiAKLQotCi0hSUYgIiQoTk9fRVhURVJOQUxfREVQUykiICE9ICIxIgotIUlGIEVYSVNUUygibmV0c25tcG1pYnNzZGsuZGVwIikKLSFJTkNMVURFICJuZXRzbm1wbWlic3Nkay5kZXAiCi0hRUxTRSAKLSFNRVNTQUdFIFdhcm5pbmc6IGNhbm5vdCBmaW5kICJuZXRzbm1wbWlic3Nkay5kZXAiCi0hRU5ESUYgCi0hRU5ESUYgCi0KLQotIUlGICIkKENGRykiID09ICJyZWxlYXNlIiB8fCAiJChDRkcpIiA9PSAiZGVidWciCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcc2V0U2VyaWFsTm8uYwotCi0iJChJTlRESVIpXHNldFNlcmlhbE5vLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHNubXBfbWliLmMKLQotIiQoSU5URElSKVxzbm1wX21pYi5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxzeXNPUlRhYmxlLmMKLQotIiQoSU5URElSKVxzeXNPUlRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHN5c3RlbV9taWIuYwotCi0iJChJTlRESVIpXHN5c3RlbV9taWIub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFjbV9jb250ZXh0LmMKLQotIiQoSU5URElSKVx2YWNtX2NvbnRleHQub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFjbV9jb25mLmMKLQotIiQoSU5URElSKVx2YWNtX2NvbmYub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdmFjbV92YXJzLmMKLQotIiQoSU5URElSKVx2YWNtX3ZhcnMub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUuYwotCi0iJChJTlRESVIpXG10ZUV2ZW50Tm90aWZpY2F0aW9uVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZUV2ZW50VGFibGUuYwotCi0iJChJTlRESVIpXG10ZUV2ZW50VGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZU9iamVjdHNUYWJsZS5jCi0KLSIkKElOVERJUilcbXRlT2JqZWN0c1RhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLmMKLQotIiQoSU5URElSKVxtdGVUcmlnZ2VyQm9vbGVhblRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVUcmlnZ2VyRGVsdGFUYWJsZS5jCi0KLSIkKElOVERJUilcbXRlVHJpZ2dlckRlbHRhVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZVRyaWdnZXJFeGlzdGVuY2VUYWJsZS5jCi0KLSIkKElOVERJUilcbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVUcmlnZ2VyVGFibGUuYwotCi0iJChJTlRESVIpXG10ZVRyaWdnZXJUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlVHJpZ2dlclRocmVzaG9sZFRhYmxlLmMKLQotIiQoSU5URElSKVxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZXhhbXBsZXNcZXhhbXBsZS5jCi0KLSIkKElOVERJUilcZXhhbXBsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxleGFtcGxlc1x1Y2REZW1vUHVibGljLmMKLQotIiQoSU5URElSKVx1Y2REZW1vUHVibGljLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXB2M1xzbm1wRW5naW5lLmMKLQotIiQoSU5URElSKVxzbm1wRW5naW5lLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXB2M1xzbm1wTVBEU3RhdHMuYwotCi0iJChJTlRESVIpXHNubXBNUERTdGF0cy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcdXNtQ29uZi5jCi0KLSIkKElOVERJUilcdXNtQ29uZi5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcdXNtU3RhdHMuYwotCi0iJChJTlRESVIpXHVzbVN0YXRzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXB2M1x1c21Vc2VyLmMKLQotIiQoSU5URElSKVx1c21Vc2VyLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG5vdGlmaWNhdGlvblxzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMKLQotIiQoSU5URElSKVxzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG5vdGlmaWNhdGlvbi1sb2ctbWliXG5vdGlmaWNhdGlvbl9sb2cuYwotCi0iJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcC1ub3RpZmljYXRpb24tbWliXHNubXBOb3RpZnlGaWx0ZXJUYWJsZVxzbm1wTm90aWZ5RmlsdGVyVGFibGUuYwotCi0iJChJTlRESVIpXHNubXBOb3RpZnlGaWx0ZXJUYWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wLW5vdGlmaWNhdGlvbi1taWJcc25tcE5vdGlmeUZpbHRlclRhYmxlXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9kYXRhX2FjY2Vzcy5jCi0KLSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2RhdGFfYWNjZXNzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXAtbm90aWZpY2F0aW9uLW1pYlxzbm1wTm90aWZ5RmlsdGVyVGFibGVcc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5jCi0KLSIkKElOVERJUilcc25tcE5vdGlmeUZpbHRlclRhYmxlX2ludGVyZmFjZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb25cc25tcE5vdGlmeVRhYmxlLmMKLQotIiQoSU5URElSKVxzbm1wTm90aWZ5VGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdGFyZ2V0XHNubXBUYXJnZXRBZGRyRW50cnkuYwotCi0iJChJTlRESVIpXHNubXBUYXJnZXRBZGRyRW50cnkub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdGFyZ2V0XHNubXBUYXJnZXRQYXJhbXNFbnRyeS5jCi0KLSIkKElOVERJUilcc25tcFRhcmdldFBhcmFtc0VudHJ5Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHRhcmdldFx0YXJnZXQuYwotCi0iJChJTlRESVIpXHRhcmdldC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx0YXJnZXRcdGFyZ2V0X2NvdW50ZXJzLmMKLQotIiQoSU5URElSKVx0YXJnZXRfY291bnRlcnMub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XGFnZW50eF9jb25maWcuYwotCi0iJChJTlRESVIpXGFnZW50eF9jb25maWcub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XGNsaWVudC5jCi0KLSIkKElOVERJUilcY2xpZW50Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxtYXN0ZXIuYwotCi0iJChJTlRESVIpXG1hc3Rlci5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhcbWFzdGVyX2FkbWluLmMKLQotIiQoSU5URElSKVxtYXN0ZXJfYWRtaW4ub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XHByb3RvY29sLmMKLQotIiQoSU5URElSKVxwcm90b2NvbC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhcc3ViYWdlbnQuYwotCi0iJChJTlRESVIpXHN1YmFnZW50Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XGV4dGVuZC5jCi0KLSIkKElOVERJUilcZXh0ZW5kLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XG5zQ2FjaGUuYwotCi0iJChJTlRESVIpXG5zQ2FjaGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcbnNEZWJ1Zy5jCi0KLSIkKElOVERJUilcbnNEZWJ1Zy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxuc0xvZ2dpbmcuYwotCi0iJChJTlRESVIpXG5zTG9nZ2luZy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxuc01vZHVsZVRhYmxlLmMKLQotIiQoSU5URElSKVxuc01vZHVsZVRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XG5zVHJhbnNhY3Rpb25UYWJsZS5jCi0KLSIkKElOVERJUilcbnNUcmFuc2FjdGlvblRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxpdGllc1xleGVjdXRlLmMKLQotIiQoSU5URElSKVxleGVjdXRlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxpdGllc1xpcXVlcnkuYwotCi0iJChJTlRESVIpXGlxdWVyeS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsaXRpZXNcb3ZlcnJpZGUuYwotCi0iJChJTlRESVIpXG92ZXJyaWRlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGF0LmMKLQotIiQoSU5URElSKVxhdC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpY21wLmMKLQotIiQoSU5URElSKVxpY21wLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGludGVyZmFjZXMuYwotCi0iJChJTlRESVIpXGludGVyZmFjZXMub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaXAuYwotCi0iJChJTlRESVIpXGlwLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGlwQWRkci5jCi0KLSIkKElOVERJUilcaXBBZGRyLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHJvdXRlX3dyaXRlLmMKLQotIiQoSU5URElSKVxyb3V0ZV93cml0ZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx0Y3AuYwotCi0iJChJTlRESVIpXHRjcC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx0Y3BUYWJsZS5jCi0KLSIkKElOVERJUilcdGNwVGFibGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwLmMKLQotIiQoSU5URElSKVx1ZHAub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwVGFibGUuYwotCi0iJChJTlRESVIpXHVkcFRhYmxlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhcl9yb3V0ZS5jCi0KLSIkKElOVERJUilcdmFyX3JvdXRlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxkbG1vZC5jIgotCi0iJChJTlRESVIpXGRsbW9kLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxlcnJvcm1pYi5jIgotCi0iJChJTlRESVIpXGVycm9ybWliLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxleHRlbnNpYmxlLmMiCi0KLSIkKElOVERJUilcZXh0ZW5zaWJsZS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZmlsZS5jIgotCi0iJChJTlRESVIpXGZpbGUub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGxvYWRhdmUuYyIKLQotIiQoSU5URElSKVxsb2FkYXZlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwYXNzLmMiCi0KLSIkKElOVERJUilccGFzcy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccGFzc19wZXJzaXN0LmMiCi0KLSIkKElOVERJUilccGFzc19wZXJzaXN0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxwcm9jLmMiCi0KLSIkKElOVERJUilccHJvYy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccHJveHkuYyIKLQotIiQoSU5URElSKVxwcm94eS5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcdmVyc2lvbmluZm8uYyIKLQotIiQoSU5URElSKVx2ZXJzaW9uaW5mby5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxoZWFkZXJfY29tcGxleC5jCi0KLSIkKElOVERJUilcaGVhZGVyX2NvbXBsZXgub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliX21vZHVsZXMuYwotCi0iJChJTlRESVIpXG1pYl9tb2R1bGVzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNtdXhcc211eC5jCi0KLSIkKElOVERJUilcc211eC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSNTT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcd2luRXh0RExMLmMJCSMgdW5jb21tZW50IGZvciB3aW5FeHRETEwKLQotIyIkKElOVERJUilcd2luRXh0RExMLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIJIyB1bmNvbW1lbnQgZm9yIHdpbkV4dERMTAotIwkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCQkJIyB1bmNvbW1lbnQgZm9yIHdpbkV4dERMTAotCi0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsX2Z1bmNzLmMKLQotIiQoSU5URElSKVx1dGlsX2Z1bmNzLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVORElGIAotCi0KZGlmZiAtLWdpdCBhL3dpbjMyL25ldHNubXBtaWJzc2RrL25ldHNubXBtaWJzc2RrLmRzcCBiL3dpbjMyL25ldHNubXBtaWJzc2RrL25ldHNubXBtaWJzc2RrLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFkNWNjYy4uMDAwMDAwMAotLS0gYS93aW4zMi9uZXRzbm1wbWlic3Nkay9uZXRzbm1wbWlic3Nkay5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSw0MjAgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJuZXRzbm1wbWlic3NkayIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiIDB4MDEwNA0KLQ0KLUNGRz1uZXRzbm1wbWlic3NkayAtIFdpbjMyIERlYnVnDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJuZXRzbm1wbWlic3Nkay5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibmV0c25tcG1pYnNzZGsubWFrIiBDRkc9Im5ldHNubXBtaWJzc2RrIC0gV2luMzIgRGVidWciDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgIm5ldHNubXBtaWJzc2RrIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBTdGF0aWMgTGlicmFyeSIpDQotIU1FU1NBR0UgIm5ldHNubXBtaWJzc2RrIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgU3RhdGljIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJuZXRzbm1wbWlic3NkayAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICIuLi9saWIvcmVsZWFzZSINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRCAiSEFWRV9XSU4zMl9QTEFURk9STV9TREsiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOQ0KLSMgQUREIFJTQyAvbCAweDQwOQ0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJQjMyPWxpbmsuZXhlIC1saWINCi0jIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCi0jIEFERCBMSUIzMiBpcGhscGFwaS5saWIgbWdtdGFwaS5saWIgc25tcGFwaS5saWIgL25vbG9nbyAvb3V0OiIuLi9saWIvcmVsZWFzZS9uZXRzbm1wbWlicy5saWIiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gIm5ldHNubXBtaWJzc2RrIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIi4uL2xpYi9kZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9XMyAvR20gL0dYIC9aaSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRCAiSEFWRV9XSU4zMl9QTEFURk9STV9TREsiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOQ0KLSMgQUREIFJTQyAvbCAweDQwOQ0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJQjMyPWxpbmsuZXhlIC1saWINCi0jIEFERCBCQVNFIExJQjMyIC9ub2xvZ28NCi0jIEFERCBMSUIzMiBpcGhscGFwaS5saWIgbWdtdGFwaS5saWIgc25tcGFwaS5saWIgL25vbG9nbyAvb3V0OiIuLi9saWIvZGVidWcvbmV0c25tcG1pYnMubGliIg0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAibmV0c25tcG1pYnNzZGsgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAibmV0c25tcG1pYnNzZGsgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIEdyb3VwICJtaWJJSSINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHNldFNlcmlhbE5vLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcc25tcF9taWIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxzeXNPUlRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcc3lzdGVtX21pYi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fY29udGV4dC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fY29uZi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHZhY21fdmFycy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgImRpc21hbiINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVFdmVudE5vdGlmaWNhdGlvblRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZUV2ZW50VGFibGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlT2JqZWN0c1RhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZVRyaWdnZXJCb29sZWFuVGFibGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlVHJpZ2dlckRlbHRhVGFibGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxkaXNtYW5cbXRlVHJpZ2dlckV4aXN0ZW5jZVRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcZGlzbWFuXG10ZVRyaWdnZXJUYWJsZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGRpc21hblxtdGVUcmlnZ2VyVGhyZXNob2xkVGFibGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJleGFtcGxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGV4YW1wbGVzXGV4YW1wbGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxleGFtcGxlc1x1Y2REZW1vUHVibGljLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAic25tcHYzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcHYzXHNubXBFbmdpbmUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcc25tcE1QRFN0YXRzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcHYzXHVzbUNvbmYuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcdXNtU3RhdHMuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wdjNcdXNtVXNlci5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIm5vdGlmaWNhdGlvbiINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG5vdGlmaWNhdGlvblxzbm1wTm90aWZ5RmlsdGVyUHJvZmlsZVRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbm90aWZpY2F0aW9uLWxvZy1taWJcbm90aWZpY2F0aW9uX2xvZy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHNubXAtbm90aWZpY2F0aW9uLW1pYlxzbm1wTm90aWZ5RmlsdGVyVGFibGVcc25tcE5vdGlmeUZpbHRlclRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcc25tcC1ub3RpZmljYXRpb24tbWliXHNubXBOb3RpZnlGaWx0ZXJUYWJsZVxzbm1wTm90aWZ5RmlsdGVyVGFibGVfZGF0YV9hY2Nlc3MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbm1wLW5vdGlmaWNhdGlvbi1taWJcc25tcE5vdGlmeUZpbHRlclRhYmxlXHNubXBOb3RpZnlGaWx0ZXJUYWJsZV9pbnRlcmZhY2UuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxub3RpZmljYXRpb25cc25tcE5vdGlmeVRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAidGFyZ2V0Ig0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdGFyZ2V0XHNubXBUYXJnZXRBZGRyRW50cnkuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx0YXJnZXRcc25tcFRhcmdldFBhcmFtc0VudHJ5LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdGFyZ2V0XHRhcmdldC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHRhcmdldFx0YXJnZXRfY291bnRlcnMuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJhZ2VudHgiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhcYWdlbnR4X2NvbmZpZy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxjbGllbnQuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudHhcbWFzdGVyLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnR4XG1hc3Rlcl9hZG1pbi5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxwcm90b2NvbC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50eFxzdWJhZ2VudC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgImFnZW50Ig0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcZXh0ZW5kLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcbnNDYWNoZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXGFnZW50XG5zRGVidWcuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxuc0xvZ2dpbmcuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxhZ2VudFxuc01vZHVsZVRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcYWdlbnRcbnNUcmFuc2FjdGlvblRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAidXRpbGl0aWVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiIg0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbGl0aWVzXGV4ZWN1dGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx1dGlsaXRpZXNcaXF1ZXJ5LmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcdXRpbGl0aWVzXG92ZXJyaWRlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAibWliSUlzZGsiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICIiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxhdC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXGljbXAuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpbnRlcmZhY2VzLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcaXAuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxpcEFkZHIuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVxyb3V0ZV93cml0ZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHRjcC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG1pYklJXHRjcFRhYmxlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcbWliSUlcdWRwVGFibGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxtaWJJSVx2YXJfcm91dGUuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgR3JvdXANCi0jIEJlZ2luIEdyb3VwICJ1Y2Qtc25tcCINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgIiINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxhZ2VudFxtaWJncm91cFx1Y2Qtc25tcFxkbG1vZC5jIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBcZXJyb3JtaWIuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGV4dGVuc2libGUuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGZpbGUuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXGxvYWRhdmUuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHBhc3MuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHBhc3NfcGVyc2lzdC5jIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccHJvYy5jIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cYWdlbnRcbWliZ3JvdXBcdWNkLXNubXBccHJveHkuYyINCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Ii4uXC4uXGFnZW50XG1pYmdyb3VwXHVjZC1zbm1wXHZlcnNpb25pbmZvLmMiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cYWdlbnRcbWliZ3JvdXBcaGVhZGVyX2NvbXBsZXguYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJfbW9kdWxlcy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXHV0aWxfZnVuY3MuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFxzbXV4XHNtdXguYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxtaWJncm91cFx3aW5FeHRETEwuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBkL01ha2VmaWxlLmluIGIvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KaW5kZXggNDFhYzU1ZS4uOWUzNDY3NCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvc25tcGQvTWFrZWZpbGUuaW4KQEAgLTIsNiArMiw3IEBACiBDRkc9CiBPVVRESVI9CiBJTlRESVI9CitTREs9CiBTU0w9CiBMSU5LVFlQRT0KIApAQCAtMTQsMjEgKzE1LDkgQEAKIE5VTEw9bnVsCiAhRU5ESUYgCiAKLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KIEFMTCA6ICIuLlxiaW5cJChPVVRESVIpXHNubXBkLmV4ZSIgIiQoSU5URElSKSIKIAogCi1DTEVBTiA6Ci0JLUBlcmFzZSAiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxrZXJuZWwub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8uaWRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5yZXMiCi0JLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKLQktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXHNubXBkLmV4ZSIKLQogIi4uXGJpblwkKE9VVERJUikiIDoKICAgICBpZiBub3QgZXhpc3QgIi4uXGJpblwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGJpblwkKE9VVERJUikiCiAKQEAgLTM2LDk5ICsyNSwxNCBAQAogICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCiAKIENQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRnAiJChJTlRESVIpXHNubXBkLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCi0KLSFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgotQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKLSFFTkRJRgotCi0uY3skKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLVJTQz1yYy5leGUKKyFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCitDUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0VIc2MgL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiBSU0NfUFJPSj0vbCAweDQwOSAvZm8iJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIiAvZCAiTkRFQlVHIiAKLUJTQzMyPWJzY21ha2UuZXhlCi1CU0MzMl9GTEFHUz0vbm9sb2dvIC9vIiQoSU5URElSKVxzbm1wZC5ic2MiIAotQlNDMzJfU0JSUz0gXAotCi1MSU5LMzI9bGluay5leGUKLUxJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBuZXRzbm1waGVscGVycy5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjoiLi4vYmluLyQoT1VURElSKS9zbm1wZC5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvc25tcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAotTElOSzMyX09CSlM9IFwKLQkiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIiBcCi0JIiQoSU5URElSKVxrZXJuZWwub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wZC5vYmoiIFwKLQkiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIiBcCi0JIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIKLQotIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIiA6ICIuLlxiaW5cJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJTkszMl9PQkpTKQotIUlGICIkKExJTktUWVBFKSIgPT0gInN0YXRpYyIgfHwgIiQoQUxMT1dfRExMKSIgPT0gIjEiCi0gICAgJChMSU5LMzIpIEA8PAotICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKLTw8Ci0hRUxTRQkjIExpbmt0eXBlIGNoZWNrCi0JLUBlY2hvIC4KLQktQGVjaG8gQWJvcnRpbmcgYnVpbGQuICBBcHBsaWNhdGlvbnMgY2FuIG5vdCBiZSBidWlsdCB1c2luZyAtLWxpbmt0eXBlPWR5bmFtaWMKLQktQGVjaG8gLgorIUVMU0UKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRlIiJChJTlRESVIpXFwiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCitSU0NfUFJPSj0vbCAweDQwOSAvZm8iJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIiAvZCAiX0RFQlVHIiAKICFFTkRJRgogCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLUFMTCA6ICIuLlxiaW5cJChPVVRESVIpXHNubXBkLmV4ZSIgIiQoSU5URElSKVxzbm1wZC5ic2MiICIkKElOVERJUikiCi0KLQotQ0xFQU4gOgotCS1AZXJhc2UgIiQoSU5URElSKVxhdXRvX25saXN0Lm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcYXV0b19ubGlzdC5zYnIiCi0JLUBlcmFzZSAiJChJTlRESVIpXGtlcm5lbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGtlcm5lbC5zYnIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcGQuc2JyIgotCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5wZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIKLQktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5zYnIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLmJzYyIKLQktQGVyYXNlICIkKElOVERJUilcc25tcGQucGRiIgotCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giCi0JLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVxzbm1wZC5leGUiCi0KLSIuLlxiaW5cJChPVVRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgotCi0iJChJTlRESVIpIiA6Ci0gICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKLQotQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudCIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZSIiQoSU5URElSKVxcIiAvRnAiJChJTlRESVIpXHNubXBkLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCi0KICFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgogQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKICFFTkRJRgpAQCAtMTQ4LDM4ICs1MiwxNCBAQAogICAgJChDUFBfUFJPSikgJDwgCiA8PAogCi0uY3skKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQogUlNDPXJjLmV4ZQotUlNDX1BST0o9L2wgMHg0MDkgL2ZvIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgL2QgIl9ERUJVRyIgCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcc25tcGQuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQkiJChJTlRESVIpXGF1dG9fbmxpc3Quc2JyIiBcCi0JIiQoSU5URElSKVxrZXJuZWwuc2JyIiBcCi0JIiQoSU5URElSKVxzbm1wZC5zYnIiIFwKLQkiJChJTlRESVIpXHdpbnNlcnZpY2Uuc2JyIgotCi0iJChJTlRESVIpXHNubXBkLmJzYyIgOiAiLi5cYmluXCQoT1VURElSKSIgJChCU0MzMl9TQlJTKQotICAgICQoQlNDMzIpIEA8PAotICAkKEJTQzMyX0ZMQUdTKSAkKEJTQzMyX1NCUlMpCi08PAotCiBMSU5LMzI9bGluay5leGUKLUxJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBuZXRzbm1waGVscGVycy5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvc25tcGQucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpL3NubXBkLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKK0xJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBuZXRzbm1waGVscGVycy5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL291dDoiLi5cYmluXCQoT1VURElSKS9zbm1wZC5leGUiIC9saWJwYXRoOiIuLi9saWIvJChPVVRESVIpIgorIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKK0xJTkszMl9GTEFHUz0kKExJTkszMl9GTEFHUykgL2RlYnVnIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvc25tcGQucGRiIgorIUVMU0UKK0xJTkszMl9GTEFHUz0kKExJTkszMl9GTEFHUykgL2RlYnVnIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIuLi9iaW4vJChPVVRESVIpL3NubXBkLnBkYiIgL3BkYnR5cGU6c2VwdAorIUVORElGCiBMSU5LMzJfT0JKUz0gXAogCSIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiIFwKIAkiJChJTlRESVIpXGtlcm5lbC5vYmoiIFwKQEAgLTE4NywyMSArNjcsMjQgQEAKIAkiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIiBcCiAJIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIKIAorQ0xFQU4gOgorCS1AZm9yICVmIGluICgkKExJTkszMl9PQkpTKSkgZG8gZXJhc2UgJSVmCisJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiCisJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiCiAKICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSIgOiAiLi5cYmluXCQoT1VURElSKSIgJChERUZfRklMRSkgJChMSU5LMzJfT0JKUykKICFJRiAiJChMSU5LVFlQRSkiID09ICJzdGF0aWMiIHx8ICIkKEFMTE9XX0RMTCkiID09ICIxIgogICAgICQoTElOSzMyKSBAPDwKICAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCiA8PAorIGlmIGV4aXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgXAorCSAgICBtdC5leGUgLW1hbmlmZXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSI7MQogIUVMU0UJIyBMaW5rdHlwZSBjaGVjawogCS1AZWNobyAuCiAJLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCiAJLUBlY2hvIC4KICFFTkRJRgogCi0hRU5ESUYgCi0KLQogIUlGICIkKE5PX0VYVEVSTkFMX0RFUFMpIiAhPSAiMSIKICFJRiBFWElTVFMoInNubXBkLmRlcCIpCiAhSU5DTFVERSAic25tcGQuZGVwIgpAQCAtMjExLDk3ICs5NCwzMSBAQAogIUVORElGIAogCiAKLSFJRiAiJChDRkcpIiA9PSAicmVsZWFzZSIgfHwgIiQoQ0ZHKSIgPT0gImRlYnVnIgogU09VUkNFPS4uXC4uXGFnZW50XGF1dG9fbmxpc3QuYwogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KICIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIgkiJChJTlRESVIpXGF1dG9fbmxpc3Quc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KIFNPVVJDRT0uLlwuLlxhZ2VudFxrZXJuZWwuYwogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KICIkKElOVERJUilca2VybmVsLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi0KLSIkKElOVERJUilca2VybmVsLm9iaiIJIiQoSU5URElSKVxrZXJuZWwuc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KIFNPVVJDRT0uLlwuLlxhZ2VudFxzbm1wZC5jCiAKLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLQogIiQoSU5URElSKVxzbm1wZC5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCiAJJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQogCiAKLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXHNubXBkLm9iaiIJIiQoSU5URElSKVxzbm1wZC5zYnIiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQogU09VUkNFPS4uXC4uXHNubXBsaWJcd2luc2VydmljZS5jCiAKLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLQogIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKIAkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCiAKIAotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi0KLSIkKElOVERJUilcd2luc2VydmljZS5vYmoiCSIkKElOVERJUilcd2luc2VydmljZS5zYnIiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQogU09VUkNFPS4uXC4uXHNubXBsaWJcd2luc2VydmljZS5yYwogCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KICIkKElOVERJUilcd2luc2VydmljZS5yZXMiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChSU0MpIC9sIDB4NDA5IC9mbyIkKElOVERJUilcd2luc2VydmljZS5yZXMiIC9pICIuLlwuLlxzbm1wbGliIiAvZCAiTkRFQlVHIiAkKFNPVVJDRSkKLQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLQotIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKFJTQykgL2wgMHg0MDkgL2ZvIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgL2kgIi4uXC4uXHNubXBsaWIiIC9kICJfREVCVUciICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQotCi0hRU5ESUYgCi0KKwkkKFJTQykgJChSU0NfUFJPSikgL2kgIi4uXC4uXHNubXBsaWIiICQoU09VUkNFKQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcGRzZGsvTWFrZWZpbGUuaW4gYi93aW4zMi9zbm1wZHNkay9NYWtlZmlsZS5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI4ZGU0My4uMDAwMDAwMAotLS0gYS93aW4zMi9zbm1wZHNkay9NYWtlZmlsZS5pbgorKysgL2Rldi9udWxsCkBAIC0xLDMwNiArMCwwIEBACi1QUk9HTkFNRT0KLUNGRz0KLU9VVERJUj0KLUlOVERJUj0KLVNTTD0KLUxJTktUWVBFPQotCi0jIFNldCB0byAxIHRvIGFsbG93IHRoZSBidWlsZGluZyB1c2luZyB0aGUgRExMIHZlcnNpb24gb2YgU05NUExJQi4KLUFMTE9XX0RMTD0xCi0KLSFJRiAiJChPUykiID09ICJXaW5kb3dzX05UIgotTlVMTD0KLSFFTFNFIAotTlVMTD1udWwKLSFFTkRJRiAKLQotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotQUxMIDogIi4uXGJpblwkKE9VVERJUilcc25tcGQuZXhlIiAiJChJTlRESVIpIgotCi0KLUNMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGtlcm5lbC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIKLQktQGVyYXNlICIkKElOVERJUilcc25tcGQucGNoIgotCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcc25tcGQuZXhlIgotCi0iLi5cYmluXCQoT1VURElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiLi5cYmluXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cYmluXCQoT1VURElSKSIKLQotIiQoSU5URElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCi0KLUNQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvR1ggL1ppIC9PMiAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRCAiSEFWRV9XSU4zMl9QTEFURk9STV9TREsiIC9GcCIkKElOVERJUilcc25tcGQucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKLQotIUlGICIkKExJTktUWVBFKSIgPT0gImR5bmFtaWMiCi1DUFBfUFJPSj0kKENQUF9QUk9KKSAvRCAiTk1BS0VfTkVUU05NUF9VU0VfRExMIgotIUVORElGCi0KLS5jeyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmNwcHskKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jeHh7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3skKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotUlNDPXJjLmV4ZQotUlNDX1BST0o9L2wgMHg0MDkgL2ZvIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgL2QgIk5ERUJVRyIgCi1CU0MzMj1ic2NtYWtlLmV4ZQotQlNDMzJfRkxBR1M9L25vbG9nbyAvbyIkKElOVERJUilcc25tcGQuYnNjIiAKLUJTQzMyX1NCUlM9IFwKLQotTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGlwaGxwYXBpLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvcGRiOiIuLi9iaW4vJChPVVRESVIpL3NubXBkLnBkYiIgL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluLyQoT1VURElSKS9zbm1wZC5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSIgCi1MSU5LMzJfT0JKUz0gXAotCSIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiIFwKLQkiJChJTlRESVIpXGtlcm5lbC5vYmoiIFwKLQkiJChJTlRESVIpXHNubXBkLm9iaiIgXAotCSIkKElOVERJUilcd2luc2VydmljZS5vYmoiIFwKLQkiJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIgotCi0iLi5cYmluXCQoT1VURElSKVxzbm1wZC5leGUiIDogIi4uXGJpblwkKE9VVERJUikiICQoREVGX0ZJTEUpICQoTElOSzMyX09CSlMpCi0hSUYgIiQoTElOS1RZUEUpIiA9PSAic3RhdGljIiB8fCAiJChBTExPV19ETEwpIiA9PSAiMSIKLSAgICAkKExJTkszMikgQDw8Ci0gICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQotPDwKLSFFTFNFCSMgTGlua3R5cGUgY2hlY2sKLQktQGVjaG8gLgotCS1AZWNobyBBYm9ydGluZyBidWlsZC4gIEFwcGxpY2F0aW9ucyBjYW4gbm90IGJlIGJ1aWx0IHVzaW5nIC0tbGlua3R5cGU9ZHluYW1pYwotCS1AZWNobyAuCi0hRU5ESUYKLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi1BTEwgOiAiLi5cYmluXCQoT1VURElSKVxzbm1wZC5leGUiICIkKElOVERJUilcc25tcGQuYnNjIiAiJChJTlRESVIpIgotCi0KLUNMRUFOIDoKLQktQGVyYXNlICIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXGF1dG9fbmxpc3Quc2JyIgotCS1AZXJhc2UgIiQoSU5URElSKVxrZXJuZWwub2JqIgotCS1AZXJhc2UgIiQoSU5URElSKVxrZXJuZWwuc2JyIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5vYmoiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLnNiciIKLQktQGVyYXNlICIkKElOVERJUilcdmM/Py5pZGIiCi0JLUBlcmFzZSAiJChJTlRESVIpXHZjPz8ucGRiIgotCS1AZXJhc2UgIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIKLQktQGVyYXNlICIkKElOVERJUilcd2luc2VydmljZS5yZXMiCi0JLUBlcmFzZSAiJChJTlRESVIpXHdpbnNlcnZpY2Uuc2JyIgotCS1AZXJhc2UgIiQoSU5URElSKVxzbm1wZC5ic2MiCi0JLUBlcmFzZSAiJChJTlRESVIpXHNubXBkLnBkYiIKLQktQGVyYXNlICIkKElOVERJUilcc25tcGQucGNoIgotCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcc25tcGQuZXhlIgotCi0iLi5cYmluXCQoT1VURElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiLi5cYmluXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cYmluXCQoT1VURElSKSIKLQotIiQoSU5URElSKSIgOgotICAgIGlmIG5vdCBleGlzdCAiJChJTlRESVIpLyQoTlVMTCkiIG1rZGlyICIkKElOVERJUikiCi0KLUNQUD1jbC5leGUKLUNQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWmkgL09kIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9EICJIQVZFX1dJTjMyX1BMQVRGT1JNX1NESyIgL0ZSIiQoSU5URElSKVxcIiAvRnAiJChJTlRESVIpXHNubXBkLnBjaCIgL1lYIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCi0KLSFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgotQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKLSFFTkRJRgotCi0uY3skKElOVERJUil9Lm9iajo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLS5jcHB7JChJTlRESVIpfS5vYmo6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3h4eyQoSU5URElSKX0ub2JqOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN7JChJTlRESVIpfS5zYnI6OgotICAgJChDUFApIEA8PAotICAgJChDUFBfUFJPSikgJDwgCi08PAotCi0uY3BweyQoSU5URElSKX0uc2JyOjoKLSAgICQoQ1BQKSBAPDwKLSAgICQoQ1BQX1BST0opICQ8IAotPDwKLQotLmN4eHskKElOVERJUil9LnNicjo6Ci0gICAkKENQUCkgQDw8Ci0gICAkKENQUF9QUk9KKSAkPCAKLTw8Ci0KLVJTQz1yYy5leGUKLVJTQ19QUk9KPS9sIDB4NDA5IC9mbyIkKElOVERJUilcd2luc2VydmljZS5yZXMiIC9kICJfREVCVUciIAotQlNDMzI9YnNjbWFrZS5leGUKLUJTQzMyX0ZMQUdTPS9ub2xvZ28gL28iJChJTlRESVIpXHNubXBkLmJzYyIgCi1CU0MzMl9TQlJTPSBcCi0JIiQoSU5URElSKVxhdXRvX25saXN0LnNiciIgXAotCSIkKElOVERJUilca2VybmVsLnNiciIgXAotCSIkKElOVERJUilcc25tcGQuc2JyIiBcCi0JIiQoSU5URElSKVx3aW5zZXJ2aWNlLnNiciIKLQotIiQoSU5URElSKVxzbm1wZC5ic2MiIDogIi4uXGJpblwkKE9VVERJUikiICQoQlNDMzJfU0JSUykKLSAgICAkKEJTQzMyKSBAPDwKLSAgJChCU0MzMl9GTEFHUykgJChCU0MzMl9TQlJTKQotPDwKLQotTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGlwaGxwYXBpLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS9zbm1wZC5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2JpblwkKE9VVERJUikvc25tcGQuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciIAotTElOSzMyX09CSlM9IFwKLQkiJChJTlRESVIpXGF1dG9fbmxpc3Qub2JqIiBcCi0JIiQoSU5URElSKVxrZXJuZWwub2JqIiBcCi0JIiQoSU5URElSKVxzbm1wZC5vYmoiIFwKLQkiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIiBcCi0JIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIKLQotIi4uXGJpblwkKE9VVERJUilcc25tcGQuZXhlIiA6ICIuLlxiaW5cJChPVVRESVIpIiAkKERFRl9GSUxFKSAkKExJTkszMl9PQkpTKQotIUlGICIkKExJTktUWVBFKSIgPT0gInN0YXRpYyIgfHwgIiQoQUxMT1dfRExMKSIgPT0gIjEiCi0gICAgJChMSU5LMzIpIEA8PAotICAkKExJTkszMl9GTEFHUykgJChMSU5LMzJfT0JKUykKLTw8Ci0hRUxTRQkjIExpbmt0eXBlIGNoZWNrCi0JLUBlY2hvIC4KLQktQGVjaG8gQWJvcnRpbmcgYnVpbGQuICBBcHBsaWNhdGlvbnMgY2FuIG5vdCBiZSBidWlsdCB1c2luZyAtLWxpbmt0eXBlPWR5bmFtaWMKLQktQGVjaG8gLgotIUVORElGCi0KLSFFTkRJRiAKLQotCi0hSUYgIiQoTk9fRVhURVJOQUxfREVQUykiICE9ICIxIgotIUlGIEVYSVNUUygic25tcGQuZGVwIikKLSFJTkNMVURFICJzbm1wZC5kZXAiCi0hRUxTRSAKLSFNRVNTQUdFIFdhcm5pbmc6IGNhbm5vdCBmaW5kICJzbm1wZC5kZXAiCi0hRU5ESUYgCi0hRU5ESUYgCi0KLQotIUlGICIkKENGRykiID09ICJyZWxlYXNlIiB8fCAiJChDRkcpIiA9PSAiZGVidWciCi1TT1VSQ0U9Li5cLi5cYWdlbnRcYXV0b19ubGlzdC5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLQotIiQoSU5URElSKVxhdXRvX25saXN0Lm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi0KLSIkKElOVERJUilcYXV0b19ubGlzdC5vYmoiCSIkKElOVERJUilcYXV0b19ubGlzdC5zYnIiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQotU09VUkNFPS4uXC4uXGFnZW50XGtlcm5lbC5jCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLQotIiQoSU5URElSKVxrZXJuZWwub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLQotIiQoSU5URElSKVxrZXJuZWwub2JqIgkiJChJTlRESVIpXGtlcm5lbC5zYnIiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTkRJRiAKLQotU09VUkNFPS4uXC4uXGFnZW50XHNubXBkLmMKLQotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotCi0iJChJTlRESVIpXHNubXBkLm9iaiIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImRlYnVnIgotCi0KLSIkKElOVERJUilcc25tcGQub2JqIgkiJChJTlRESVIpXHNubXBkLnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVORElGIAotCi1TT1VSQ0U9Li5cLi5cc25tcGxpYlx3aW5zZXJ2aWNlLmMKLQotIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKLQotCi0iJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRUxTRUlGICAiJChDRkcpIiA9PSAiZGVidWciCi0KLQotIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIJIiQoSU5URElSKVx3aW5zZXJ2aWNlLnNiciIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKENQUCkgJChDUFBfUFJPSikgJChTT1VSQ0UpCi0KLQotIUVORElGIAotCi1TT1VSQ0U9Li5cLi5cc25tcGxpYlx3aW5zZXJ2aWNlLnJjCi0KLSFJRiAgIiQoQ0ZHKSIgPT0gInJlbGVhc2UiCi0KLQotIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgOiAkKFNPVVJDRSkgIiQoSU5URElSKSIKLQkkKFJTQykgL2wgMHg0MDkgL2ZvIiQoSU5URElSKVx3aW5zZXJ2aWNlLnJlcyIgL2kgIi4uXC4uXHNubXBsaWIiIC9kICJOREVCVUciICQoU09VUkNFKQotCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoUlNDKSAvbCAweDQwOSAvZm8iJChJTlRESVIpXHdpbnNlcnZpY2UucmVzIiAvaSAiLi5cLi5cc25tcGxpYiIgL2QgIl9ERUJVRyIgJChTT1VSQ0UpCi0KLQotIUVORElGIAotCi0KLSFFTkRJRiAKLQpkaWZmIC0tZ2l0IGEvd2luMzIvc25tcGRzZGsvc25tcGQuZHNwIGIvd2luMzIvc25tcGRzZGsvc25tcGQuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODJhZDIyLi4wMDAwMDAwCi0tLSBhL3dpbjMyL3NubXBkc2RrL3NubXBkLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9InNubXBkc2RrIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBDb25zb2xlIEFwcGxpY2F0aW9uIiAweDAxMDMNCi0NCi1DRkc9c25tcGRzZGsgLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAic25tcGQubWFrIi4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBZb3UgY2FuIHNwZWNpZnkgYSBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBOTUFLRQ0KLSFNRVNTQUdFIGJ5IGRlZmluaW5nIHRoZSBtYWNybyBDRkcgb24gdGhlIGNvbW1hbmQgbGluZS4gRm9yIGV4YW1wbGU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgInNubXBkLm1hayIgQ0ZHPSJzbm1wZHNkayAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJzbm1wZHNkayAtIFdpbjMyIFJlbGVhc2UiIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgInNubXBkc2RrIC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgQ29uc29sZSBBcHBsaWNhdGlvbiIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gInNubXBkc2RrIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvWVggL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EIC9XMyAvR1ggL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnQiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRCAiSEFWRV9XSU4zMl9QTEFURk9STV9TREsiIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwOSAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGFkdmFwaTMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIG5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXBoZWxwZXJzLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBpcGhscGFwaS5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjpub25lIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL3JlbGVhc2Uvc25tcGQuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gInNubXBkc2RrIC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvVzMgL0dtIC9HWCAvWmkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRGQgL1czIC9HbSAvR1ggL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50IiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX0NSVF9TRUNVUkVfTk9fV0FSTklOR1MiIC9EICJfQ1JUX05PTlNURENfTk9fV0FSTklOR1MiIC9EICJfTUJDUyIgL0QgIkhBVkVfV0lOMzJfUExBVEZPUk1fU0RLIiAvRlIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDA5IC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgYWR2YXBpMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgbmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGlwaGxwYXBpLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL2RlYnVnIC9tYWNoaW5lOkkzODYgL291dDoiLi4vYmluL2RlYnVnL3NubXBkLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIg0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAic25tcGRzZGsgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAic25tcGRzZGsgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGFnZW50XGF1dG9fbmxpc3QuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxrZXJuZWwuYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxhZ2VudFxzbm1wZC5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXHNubXBsaWJcd2luc2VydmljZS5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXHNubXBsaWJcd2luc2VydmljZS5yYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL3NubXBuZXRzdGF0L01ha2VmaWxlLmluIGIvd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4KaW5kZXggYmE0ZDVlMi4uZTI3ZDk3ZCAxMDA2NDQKLS0tIGEvd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4KKysrIGIvd2luMzIvc25tcG5ldHN0YXQvTWFrZWZpbGUuaW4KQEAgLTMwLDYgKzMwLDcgQEAKIAktQGVyYXNlICIkKElOVERJUilcd2luc3R1Yi5vYmoiCiAJLUBlcmFzZSAiJChJTlRESVIpXCQoUFJPR05BTUUpLnBjaCIKIAktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSIKKwktQGVyYXNlICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIKIAogIi4uXGJpblwkKE9VVERJUikiIDoKICAgICBpZiBub3QgZXhpc3QgIi4uXGJpblwkKE9VVERJUikvJChOVUxMKSIgbWtkaXIgIi4uXGJpblwkKE9VVERJUikiCkBAIC0zOCw3ICszOSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9HWCAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiTkRFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfTUJDUyIgL0ZwIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTUQgL1czIC9FSHNjIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKICFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgogQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKQEAgLTgwLDcgKzgxLDcgQEAKIEJTQzMyX1NCUlM9IFwKIAogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAorTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL291dDoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSIgCiBMSU5LMzJfT0JKUz0gXAogCSIkKElOVERJUilcaWYub2JqIiBcCiAJIiQoSU5URElSKVxpbmV0Lm9iaiIgXApAQCAtOTUsNiArOTYsOCBAQAogICAgICQoTElOSzMyKSBAPDwKICAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCiA8PAorIGlmIGV4aXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgXAorCSAgICBtdC5leGUgLW1hbmlmZXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSI7MQogIUVMU0UJIyBMaW5rdHlwZSBjaGVjawogCS1AZWNobyAuCiAJLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCkBAIC0xMjcsNiArMTMwLDcgQEAKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkuYnNjIgogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wZGIiCiAJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiCisJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiCiAKICIuLlxiaW5cJChPVVRESVIpIiA6CiAgICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgpAQCAtMTM1LDcgKzEzOSw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9NQkNTIiAvRlIiJChJTlRESVIpXFwiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EZCAvVzMgL0dtIC9FSHNjIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJfREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GUiIkKElOVERJUilcXCIgL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKIAogIUlGICIkKExJTktUWVBFKSIgPT0gImR5bmFtaWMiCiBDUFBfUFJPSj0kKENQUF9QUk9KKSAvRCAiTk1BS0VfTkVUU05NUF9VU0VfRExMIgpAQCAtMTg5LDcgKzE5Myw3IEBACiA8PAogCiBMSU5LMzI9bGluay5leGUKLUxJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciIAorTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9pbmNyZW1lbnRhbDpubyAvcGRiOiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLnBkYiIgL2RlYnVnIC9vdXQ6Ii4uXGJpblwkKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi9saWIvZGVidWciIAogTElOSzMyX09CSlM9IFwKIAkiJChJTlRESVIpXGlmLm9iaiIgXAogCSIkKElOVERJUilcaW5ldC5vYmoiIFwKQEAgLTIwNCw2ICsyMDgsOCBAQAogICAgICQoTElOSzMyKSBAPDwKICAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCiA8PAorIGlmIGV4aXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgXAorCSAgICBtdC5leGUgLW1hbmlmZXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSI7MQogIUVMU0UJIyBMaW5rdHlwZSBjaGVjawogCS1AZWNobyAuCiAJLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCmRpZmYgLS1naXQgYS93aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW4gYi93aW4zMi9zbm1wdHJhcGQvTWFrZWZpbGUuaW4KaW5kZXggZWI3MmZhNy4uOGVkNjY4ZiAxMDA2NDQKLS0tIGEvd2luMzIvc25tcHRyYXBkL01ha2VmaWxlLmluCisrKyBiL3dpbjMyL3NubXB0cmFwZC9NYWtlZmlsZS5pbgpAQCAtMjYsNiArMjYsNyBAQAogCS1AZXJhc2UgIiQoSU5URElSKVx2Yz8/LmlkYiIKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIgogCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlIgorCS1AZXJhc2UgIi4uXGJpblwkKE9VVERJUilcJChQUk9HTkFNRSkuZXhlLm1hbmlmZXN0IgogCiAiLi5cYmluXCQoT1VURElSKSIgOgogICAgIGlmIG5vdCBleGlzdCAiLi5cYmluXCQoT1VURElSKS8kKE5VTEwpIiBta2RpciAiLi5cYmluXCQoT1VURElSKSIKQEAgLTM0LDcgKzM1LDcgQEAKICAgICBpZiBub3QgZXhpc3QgIiQoSU5URElSKS8kKE5VTEwpIiBta2RpciAiJChJTlRESVIpIgogCiBDUFA9Y2wuZXhlCi1DUFBfUFJPSj0vbm9sb2dvIC9NRCAvVzMgL0dYIC9aaSAvTzIgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIk5ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GcCIkKElOVERJUilcJChQUk9HTkFNRSkucGNoIiAvWVggL0ZvIiQoSU5URElSKVxcIiAvRmQiJChJTlRESVIpXFwkKFBST0dOQU1FKS5wZGIiIC9GRCAvYyAKK0NQUF9QUk9KPS9ub2xvZ28gL01EIC9XMyAvRUhzYyAvWmkgL08yIC9JICIuIiAvSSAiLi4iIC9JICIuLlwuLlxzbm1wbGliIiAvSSAiLi5cLi4iIC9JICIuLlwuLlxpbmNsdWRlIiAvSSAiLi5cLi5cYWdlbnRcbWliZ3JvdXAiIC9EICJXSU4zMiIgL0QgIl9CSU5EX1RPX0NVUlJFTlRfVkNMSUJTX1ZFUlNJT04iIC9EICJOREVCVUciIC9EICJfQ09OU09MRSIgL0QgIl9DUlRfU0VDVVJFX05PX1dBUk5JTkdTIiAvRCAiX0NSVF9OT05TVERDX05PX1dBUk5JTkdTIiAvRCAiX01CQ1MiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKICFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgogQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKQEAgLTc3LDcgKzc4LDcgQEAKIEJTQzMyX1NCUlM9IFwKIAogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIG5ldHNubXB0cmFwZC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9vdXQ6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkuZXhlIiAvbGlicGF0aDoiLi4vbGliL3JlbGVhc2UiIAorTElOSzMyX0ZMQUdTPW5ldHNubXAubGliIG5ldHNubXBhZ2VudC5saWIgbmV0c25tcG1pYnMubGliIG5ldHNubXBoZWxwZXJzLmxpYiBuZXRzbm1wdHJhcGQubGliIGFkdmFwaTMyLmxpYiB3czJfMzIubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL3N1YnN5c3RlbTpjb25zb2xlIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL291dDoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5leGUiIC9saWJwYXRoOiIuLi9saWIvcmVsZWFzZSIgCiBMSU5LMzJfT0JKUz0gXAogCSIkKElOVERJUilcJChQUk9HTkFNRSkub2JqIiBcCiAJIiQoSU5URElSKVx3aW5zZXJ2aWNlLm9iaiIgXApAQCAtODgsNiArODksOCBAQAogICAgICQoTElOSzMyKSBAPDwKICAgJChMSU5LMzJfRkxBR1MpICQoTElOSzMyX09CSlMpCiA8PAorIGlmIGV4aXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgXAorCSAgICBtdC5leGUgLW1hbmlmZXN0ICIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIuLlxiaW5cJChPVVRESVIpXCQoUFJPR05BTUUpLmV4ZSI7MQogIUVMU0UJIyBMaW5rdHlwZSBjaGVjawogCS1AZWNobyAuCiAJLUBlY2hvIEFib3J0aW5nIGJ1aWxkLiAgQXBwbGljYXRpb25zIGNhbiBub3QgYmUgYnVpbHQgdXNpbmcgLS1saW5rdHlwZT1keW5hbWljCkBAIC0xMTEsNiArMTE0LDcgQEAKIAktQGVyYXNlICIkKElOVERJUilcJChQUk9HTkFNRSkuYnNjIgogCS1AZXJhc2UgIiQoSU5URElSKVwkKFBST0dOQU1FKS5wZGIiCiAJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiCisJLUBlcmFzZSAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiCiAKICIuLlxiaW5cJChPVVRESVIpIiA6CiAgICAgaWYgbm90IGV4aXN0ICIuLlxiaW5cJChPVVRESVIpLyQoTlVMTCkiIG1rZGlyICIuLlxiaW5cJChPVVRESVIpIgpAQCAtMTE5LDcgKzEyMyw3IEBACiAgICAgaWYgbm90IGV4aXN0ICIkKElOVERJUikvJChOVUxMKSIgbWtkaXIgIiQoSU5URElSKSIKIAogQ1BQPWNsLmV4ZQotQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aaSAvT2QgL0kgIi4iIC9JICIuLiIgL0kgIi4uXC4uXHNubXBsaWIiIC9JICIuLlwuLiIgL0kgIi4uXC4uXGluY2x1ZGUiIC9JICIuLlwuLlxhZ2VudFxtaWJncm91cCIgL0QgIldJTjMyIiAvRCAiX0JJTkRfVE9fQ1VSUkVOVF9WQ0xJQlNfVkVSU0lPTiIgL0QgIl9ERUJVRyIgL0QgIl9DT05TT0xFIiAvRCAiX01CQ1MiIC9GUiIkKElOVERJUilcXCIgL0ZwIiQoSU5URElSKVwkKFBST0dOQU1FKS5wY2giIC9ZWCAvRm8iJChJTlRESVIpXFwiIC9GZCIkKElOVERJUilcXCQoUFJPR05BTUUpLnBkYiIgL0ZEIC9jIAorQ1BQX1BST0o9L25vbG9nbyAvTURkIC9XMyAvR20gL0VIc2MgL1ppIC9PZCAvSSAiLiIgL0kgIi4uIiAvSSAiLi5cLi5cc25tcGxpYiIgL0kgIi4uXC4uIiAvSSAiLi5cLi5caW5jbHVkZSIgL0kgIi4uXC4uXGFnZW50XG1pYmdyb3VwIiAvRCAiV0lOMzIiIC9EICJfQklORF9UT19DVVJSRU5UX1ZDTElCU19WRVJTSU9OIiAvRCAiX0RFQlVHIiAvRCAiX0NPTlNPTEUiIC9EICJfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUyIgL0QgIl9DUlRfTk9OU1REQ19OT19XQVJOSU5HUyIgL0QgIl9NQkNTIiAvRlIiJChJTlRESVIpXFwiIC9GbyIkKElOVERJUilcXCIgL0ZkIiQoSU5URElSKVxcJChQUk9HTkFNRSkucGRiIiAvRkQgL2MgCiAKICFJRiAiJChMSU5LVFlQRSkiID09ICJkeW5hbWljIgogQ1BQX1BST0o9JChDUFBfUFJPSikgL0QgIk5NQUtFX05FVFNOTVBfVVNFX0RMTCIKQEAgLTE2OSw3ICsxNzMsNyBAQAogPDwKIAogTElOSzMyPWxpbmsuZXhlCi1MSU5LMzJfRkxBR1M9bmV0c25tcC5saWIgbmV0c25tcGFnZW50LmxpYiBuZXRzbm1wbWlicy5saWIgbmV0c25tcGhlbHBlcnMubGliIG5ldHNubXB0cmFwZC5saWIgYWR2YXBpMzIubGliIHdzMl8zMi5saWIga2VybmVsMzIubGliIHVzZXIzMi5saWIgL25vbG9nbyAvc3Vic3lzdGVtOmNvbnNvbGUgL2luY3JlbWVudGFsOm5vIC9wZGI6Ii4uL2Jpbi8kKE9VVERJUikvJChQUk9HTkFNRSkucGRiIiAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKK0xJTkszMl9GTEFHUz1uZXRzbm1wLmxpYiBuZXRzbm1wYWdlbnQubGliIG5ldHNubXBtaWJzLmxpYiBuZXRzbm1waGVscGVycy5saWIgbmV0c25tcHRyYXBkLmxpYiBhZHZhcGkzMi5saWIgd3MyXzMyLmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiAvbm9sb2dvIC9zdWJzeXN0ZW06Y29uc29sZSAvaW5jcmVtZW50YWw6bm8gL3BkYjoiLi4vYmluLyQoT1VURElSKS8kKFBST0dOQU1FKS5wZGIiIC9kZWJ1ZyAvb3V0OiIuLi9iaW4vJChPVVRESVIpLyQoUFJPR05BTUUpLmV4ZSIgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vbGliL2RlYnVnIiAKIExJTkszMl9PQkpTPSBcCiAJIiQoSU5URElSKVwkKFBST0dOQU1FKS5vYmoiIFwKIAkiJChJTlRESVIpXHdpbnNlcnZpY2Uub2JqIiBcCkBAIC0xODAsNiArMTg0LDggQEAKICAgICAkKExJTkszMikgQDw8CiAgICQoTElOSzMyX0ZMQUdTKSAkKExJTkszMl9PQkpTKQogPDwKKyBpZiBleGlzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIFwKKwkgICAgbXQuZXhlIC1tYW5pZmVzdCAiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiLi5cYmluXCQoT1VURElSKVwkKFBST0dOQU1FKS5leGUiOzEKICFFTFNFCSMgTGlua3R5cGUgY2hlY2sKIAktQGVjaG8gLgogCS1AZWNobyBBYm9ydGluZyBidWlsZC4gIEFwcGxpY2F0aW9ucyBjYW4gbm90IGJlIGJ1aWx0IHVzaW5nIC0tbGlua3R5cGU9ZHluYW1pYwpAQCAtMTk4LDI1ICsyMDQsNiBAQAogIUVORElGIAogCiAKLSFJRiAiJChDRkcpIiA9PSAicmVsZWFzZSIgfHwgIiQoQ0ZHKSIgPT0gImRlYnVnIgotU09VUkNFPS4uXC4uXGFnZW50XG1pYmdyb3VwXG5vdGlmaWNhdGlvbi1sb2ctbWliXG5vdGlmaWNhdGlvbl9sb2cuYwotCi0hSUYgICIkKENGRykiID09ICJyZWxlYXNlIgotCi0KLSIkKElOVERJUilcbm90aWZpY2F0aW9uX2xvZy5vYmoiIDogJChTT1VSQ0UpICIkKElOVERJUikiCi0JJChDUFApICQoQ1BQX1BST0opICQoU09VUkNFKQotCi0KLSFFTFNFSUYgICIkKENGRykiID09ICJkZWJ1ZyIKLQotCi0iJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cub2JqIgkiJChJTlRESVIpXG5vdGlmaWNhdGlvbl9sb2cuc2JyIiA6ICQoU09VUkNFKSAiJChJTlRESVIpIgotCSQoQ1BQKSAkKENQUF9QUk9KKSAkKFNPVVJDRSkKLQotCi0hRU5ESUYgCi0KIFNPVVJDRT0uLlwuLlxhcHBzXCQoUFJPR05BTUUpLmMKIAogIUlGICAiJChDRkcpIiA9PSAicmVsZWFzZSIKQEAgLTMwNiw3ICsyOTMsMyBAQAogCiAKICFFTkRJRiAKLQotCi0hRU5ESUYgCi0KZGlmZiAtLWdpdCBhL3dpbjMyL3dpbjMyLmRzdyBiL3dpbjMyL3dpbjMyLmRzdwppbmRleCA0NzYzYzM3Li5iMThiOWE2IDEwMDY0NAotLS0gYS93aW4zMi93aW4zMi5kc3cKKysrIGIvd2luMzIvd2luMzIuZHN3CkBAIC0zNSw2ICszNSwxOCBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCisgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTcxLDkgKzgzLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtODYsOSArOTgsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xMDEsOSArMTEzLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMTE2LDE4ICsxMjgsMTggQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYmFnZW50DQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGliaGVscGVycw0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIG5ldHNubXBtaWJzDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJhZ2VudA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYmhlbHBlcnMNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBuZXRzbm1wbWlicw0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTE0MCw5ICsxNTIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xNTUsOSArMTY3LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMTcwLDkgKzE4Miw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTE4NSw5ICsxOTcsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yMDAsOSArMjEyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjE1LDkgKzIyNyw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTIzMCw5ICsyNDIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yNDUsOSArMjU3LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjYwLDkgKzI3Miw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTI3NSw5ICsyODcsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yOTAsOSArMzAyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMzA1LDIxICszMTcsMjEgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYmFnZW50DQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGliaGVscGVycw0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIG5ldHNubXBtaWJzDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlibmV0c25tcHRyYXBkDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJhZ2VudA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYmhlbHBlcnMNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBuZXRzbm1wbWlicw0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYm5ldHNubXB0cmFwZA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTMzMiw5ICszNDQsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0zNDcsOSArMzU5LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMzYyLDkgKzM3NCw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KZGlmZiAtLWdpdCBhL3dpbjMyL3dpbjMyc2RrLmRzdyBiL3dpbjMyL3dpbjMyZGxsLmRzdwpzaW1pbGFyaXR5IGluZGV4IDYyJQpyZW5hbWUgZnJvbSB3aW4zMi93aW4zMnNkay5kc3cKcmVuYW1lIHRvIHdpbjMyL3dpbjMyZGxsLmRzdwppbmRleCBiM2M2Y2JhLi4xMDEwOTE0IDEwMDY0NAotLS0gYS93aW4zMi93aW4zMnNkay5kc3cKKysrIGIvd2luMzIvd2luMzJkbGwuZHN3CkBAIC0zLDYgKzMsMjEgQEAKIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiANCitQcm9qZWN0OiAiZW5jb2RlX2tleWNoYW5nZSI9Ii5cZW5jb2RlX2tleWNoYW5nZVxlbmNvZGVfa2V5Y2hhbmdlLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KKw0KK1BhY2thZ2U9PDU+DQore3t7DQorfX19DQorDQorUGFja2FnZT08ND4NCit7e3sNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KK319fQ0KKw0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisNCiBQcm9qZWN0OiAibGliYWdlbnQiPSIuXGxpYmFnZW50XGxpYmFnZW50LmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KIA0KIFBhY2thZ2U9PDU+DQpAQCAtMTEsNiArMjYsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yMywzMCArNDEsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi19fX0NCi0NCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQotDQotUHJvamVjdDogImxpYnNubXAiPSIuXGxpYnNubXBcbGlic25tcC5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJuZXRzbm1wbWlic3NkayI9Ii5cbmV0c25tcG1pYnNzZGtcbmV0c25tcG1pYnNzZGsuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTU5LDExICs1NiwxNCBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiANCi1Qcm9qZWN0OiAiZW5jb2RlX2tleWNoYW5nZSI9Ii5cZW5jb2RlX2tleWNoYW5nZVxlbmNvZGVfa2V5Y2hhbmdlLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KK1Byb2plY3Q6ICJsaWJzbm1wX2RsbCI9Ii5cbGlic25tcF9kbGxcbGlic25tcF9kbGwuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQogDQogUGFja2FnZT08NT4NCiB7e3sNCkBAIC03MSw5ICs3MSwyMSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorfX19DQorDQorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKw0KK1Byb2plY3Q6ICJuZXRzbm1wbWlicyI9Ii5cbmV0c25tcG1pYnNcbmV0c25tcG1pYnMuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQorDQorUGFja2FnZT08NT4NCit7e3sNCit9fX0NCisNCitQYWNrYWdlPTw0Pg0KK3t7ew0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTg2LDkgKzk4LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTEwMSwxNCArMTEzLDE0IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCiANCi1Qcm9qZWN0OiAic25tcGRzZGsiPSIuXHNubXBkc2RrXHNubXBkLmRzcCIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KK1Byb2plY3Q6ICJzbm1wZCI9Ii5cc25tcGRcc25tcGQuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQogDQogUGFja2FnZT08NT4NCiB7e3sNCkBAIC0xMTYsMTggKzEyOCwxOCBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGliYWdlbnQNCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJoZWxwZXJzDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbmV0c25tcG1pYnNzZGsNCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGliYWdlbnQNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJoZWxwZXJzDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbmV0c25tcG1pYnMNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTE0MCw5ICsxNTIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMTU1LDkgKzE2Nyw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0xNzAsOSArMTgyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTE4NSw5ICsxOTcsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjAwLDkgKzIxMiw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yMTUsOSArMjI3LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTIzMCw5ICsyNDIsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjQ1LDkgKzI1Nyw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0yNjAsOSArMjcyLDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTI3NSw5ICsyODcsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMjkwLDkgKzMwMiw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0zMDUsMjEgKzMxNywyMSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGliYWdlbnQNCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJoZWxwZXJzDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbmV0c25tcG1pYnNzZGsNCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJuZXRzbm1wdHJhcGQNCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGliYWdlbnQNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJoZWxwZXJzDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlibmV0c25tcHRyYXBkDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbmV0c25tcG1pYnMNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KQEAgLTMzMiw5ICszNDQsOSBAQAogDQogUGFja2FnZT08ND4NCiB7e3sNCi0gIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KLSAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wDQotICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIEJlZ2luIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXBfZGxsDQorICAgIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCiB9fX0NCiANCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQpAQCAtMzQ3LDkgKzM1OSw5IEBACiANCiBQYWNrYWdlPTw0Pg0KIHt7ew0KLSAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQotICBQcm9qZWN0X0RlcF9OYW1lIGxpYnNubXANCi0gIEVuZCBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgQmVnaW4gUHJvamVjdCBEZXBlbmRlbmN5DQorICAgIFByb2plY3RfRGVwX05hbWUgbGlic25tcF9kbGwNCisgICAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KIH19fQ0KIA0KICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCkBAIC0zNjIsOSArMzc0LDkgQEAKIA0KIFBhY2thZ2U9PDQ+DQoge3t7DQotICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCi0gIFByb2plY3RfRGVwX05hbWUgbGlic25tcA0KLSAgRW5kIFByb2plY3QgRGVwZW5kZW5jeQ0KKyAgICBCZWdpbiBQcm9qZWN0IERlcGVuZGVuY3kNCisgICAgUHJvamVjdF9EZXBfTmFtZSBsaWJzbm1wX2RsbA0KKyAgICBFbmQgUHJvamVjdCBEZXBlbmRlbmN5DQogfX19DQogDQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0K